命令:模型名称输入框,右击鼠标可以弹出修改弹窗

导入Parasolid之后零件名字全是PART_1、PART_2,装配体几十个零件,手动右键一个个改太慢了。命令行里用的是`entity modify`,配合`new=`参数直接改名。单个零件:`entity modify entity=.model_name.PART_2 new=.model_name.pivot`,把PART_2改成pivot,注意实体名要写全称,从模型名开始,`.model_name.PART_2`这种格式,不是只写PART_2,写错了报`Object not found`。
`entity modify`不光改part名,joint、marker、force、measure这些实体都能改,改marker的时候full name是`.model_name.part_name.marker_name`,比如`.Latch.PART_2.cm`,只改cm这最后一节的话写成`entity modify entity=.Latch.PART_2.cm new=.Latch.PART_2.center_marker`,改完marker的父级还是PART_2,层级关系自动维护。ADAMS的命名机制是`.`分层,从根模型名开始往下拆,改名字的时候如果只给短名,ADAMS会把它当字符串处理不认实体,必须给全路径名。
改模型名本身在Build→Model→Rename里,弹Database Navigator,选要改的模型,在Rename Object对话框里填新名字。命令行的话用`model rename model_name=.old_name new=.new_name`,注意模型名改了之后所有引用这个模型的marker、joint、measure的full name都会跟着变,ADAMS自动更新拓扑关系里的名字,不用手动一个个改。
右键菜单是最快的单个改法,模型浏览器里展开Bodies/Geometry,对着零件右键选Rename,弹Rename Object对话框,把PART_2替换成有意义的名字,比如连杆叫link、曲柄叫crank、活塞叫piston。改完之后模型树里同步更新,后面加joint选零件的时候好找。注意右键改的只是实体名,不改它所在的父级模型名,层级关系不变。
批量改名的脚本用`entity modify`循环,导入Parasolid之后先把所有零件名列出来,`for var variable_name list=.model_name.PART_*`遍历,每个按位置或者按特征给新名字。之前那个数据监控的文章里提到导入Parasolid的脚本第一步就是entity modify批量重命名,把driving_gear、ball_1、track_left这种有工程意义的名字赋进去,后面加约束和接触的时候用名字直接找,不用对着PART_3猜哪个是哪个。
重命名有个坑,改名之后之前建好的measure或者request如果引用了旧名字,会报`Cannot find object`,因为measure的表达式里存的是旧的全路径名,改完名表达式里的引用没跟着更新。对策是先改名字再建measure,或者改完名之后逐个检查measure的表达式手动更新路径。joint和motion一般不受影响,它们引用的是marker,marker的父级关系跟着零件走,零件改名marker的full name自动变。
Adams/Car里子系统改名是另一套,在Standard界面模型树里对子系统右键Rename,或者在命令导航器里用子模型功能,本质上是利用命名机制在模型名后面加一层子模型名。`.Model_Name.Sub_Model_Name.Part_Name.Marker_Name`这种多层结构,Car里建子模型的时候模型名称可以分多层,但前提是上一级模型已经存在,不然会把总模型名当字符串处理。Car的子系统文件.sub改名之后通讯器名字不会自动更新,通讯器图谱里会报unresolved,改完名要手动去通讯器图谱里重新匹配一次。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删