许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  Adams-Python接口类继承关系图,开发参考必备

Adams-Python接口类继承关系图,开发参考必备

阅读数 3
点赞 0
article_banner

`enable` 方法在 PartManager 里调不出来,报 `AttributeError: 'PartManager' object has no attribute 'enable'`,翻了一下文档才发现 PartManager 和 Part 是两层不同的东西,Part 继承自 Entity,enable 是 Entity 上的方法,但 PartManager 管的是集合,集合本身没有 enable,得先从 Manager 里把 Part 取出来再调 enable。


写一个自定义基类的时候用 `class MyPartBase(Adams.Part)` 这样继承,但 Adams 暴露出来的 Part 类有时候构造参数不好凑,直接继承容易在实例化的时候报参数数量不对。换个思路,用普通的 Python 类包一层,把 Adams 对象作为属性存进去,`class MyPartWrapper:` 里面 `self._part = adams_part_obj`,需要改属性的时候调 `self._part.enable` 或者 `self._part.name = xxx`,这样继承的层级在自己的代码里控制,Adams 那边的对象只管拿引用就行。


`super()` 调用父类的 `__init__` 的时候小心,Adams 的 Part 类初始化需要传模型对象和名字,子类里写 `super().__init__(model, name)` 参数顺序和数量得跟父类对上,对不上就报 `TypeError`。更稳的做法是不要在子类的 `__init__` 里调父类的构造,父类只当一个方法容器,`__init__` 里自己建 Adams 对象,把引用存起来,方法覆盖的时候用 `super().method_name()` 显式调父类的实现,这样继承链清楚。


Command Window 里跑 Python 有个坑,for 循环中间空了一行就被当成循环结束了,后面带缩进的行全报 `IndentationError`,这个问题在 Hexagon 论坛上有人专门问过,解决方案是用脚本文件跑,别在 Command Window 里直接贴多行代码,VSCode 有 MSC Adams 扩展可以在活动会话里跑 Python,比在 Adams 自带的窗口里折腾方便。


实战里继承主要用在批量创建子系统的场景,写一个 `SubsystemBuilder` 基类,`__init__` 里建空子系统,`add_part()` 和 `add_joint()` 是抽象方法,子类比如 `FrontSuspensionBuilder` 覆盖这两个方法,往子系统里塞具体的部件和约束,基类里再写一个 `build()` 方法统一调 add_part 和 add_joint,写完以后批量建前悬后悬的时候每个子类只管硬点和约束类型,通用的装配逻辑全在基类里,改一次全改。


Adams 的 Python 接口文档在 `Adams Basic Package > Adams View > Adams Python Interface` 下面,类参考手册里每个类的继承层级都列出来了,Entity 是最顶层的基类,Part、Joint、Marker、Force 都继承自 Entity,Manager 是另一套体系,PartManager、JointManager 这些管集合的类不继承 Entity,所以 Entity 上的方法在 Manager 上没有。查方法的时候先确认是在 Entity 层级还是 Manager 层级。


`dir()` 和 `help()` 两个内置函数在 Adams Python 里都能用,`dir(Adams.getCurrentModel().Parts)` 看 Manager 上有什么方法,`help(Adams.Part)` 看 Part 类的方法列表和签名,比翻文档快。但是 `help()` 有时候显示出来的方法实际上不能用,论坛上有人吐槽过 iteritems 在帮助里能看到但调用就崩,先 `dir()` 看看实际有什么,再一个个试。


Path 配置跟继承本身关系不大但得提一句,自定义类文件放在插件目录下,`sys.path.append('<plugin_path>')` 加进去,用完了 `sys.path.remove()` 清理掉,不然下次启动路径里还挂着旧版本,import 的是缓存的旧类,改了代码不生效,这个坑比继承本身的坑还隐蔽。

需要购买ADAMS-PYTHON二次开发教程的先站内联系。


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空