首页/文章/ 详情

Mechanical中如何快速开发自动化脚本

4月前浏览8834

本文摘要(由AI生成):

本文演示了如何对《结构仿真分析参数化Step by Step》中的模型进行脚本录制和二次开发。录制的脚本虽能记录部分操作但存在冗余、可读性差、复用性低等问题。因此,需要在其基础上进行二次开发,包括删除冗余代码、改变对象访问方式、补充加载位置属性等。通过遍历结构树,利用枚举类型和数据模型对象,封装方法访问不同节点对象,实现载荷位置选择等操作。最终修改后的代码为开发自动化仿真分析提供了参考。


各位好,最近很多工程师朋友留言说,想实现Mechanical自动化,但编写脚本却无从下手,而且官方提供API文档和案例又惨不忍睹,咨询有没有快速上手开发的方法。


上面是一个非常共性的问题,解决方法当然也是有的,今天小田老师就给大伙分享一个骚操作:在录制的脚本基础上进行二次开发
肯定有很多朋友在疑问:Mechanical现在支持Python脚本录制功能了吗?
是的,在2019R3版本之前是没这个功能的,在2021R1之前是Beta功能,之后已经正式发布了,功能也逐渐在完善中。
2019R3~2020R2版本,需要在Workbench设置中Mechanical选项下,勾选Beta功能Journaling,重启软件后,再次打开Mechanical中脚本编辑器,点中录制按钮后即可激活录制功能,再也不用担心脚本代码编写啦图片
图片
接下来,以往期文章《案例:结构仿真分析参数化Step by Step》中的模型为例,演示脚本录制的过程,如下:
图片
可以看到,点击录制按钮后,界面操作设置时,编辑器会自动录制对应Python代码;记录的脚本虽然可以记录结构树中操作过程,例如不同节点插入、删除不同分析设置,更改节点对象对应的部分设置属性等,但是却不能直接拿来复用,存在以下几个问题:


  • 录制脚本比较冗余可读性较差;而且只录制了部分操作,如载荷加载位置选取操作目前是无法录制的;
  • 节点对象都是通过内部的ID去获取的,复用性较差;因为对于不同的几何模型,内部的ID肯定是不相同的


图片
所以,就需要我们把录制脚本作为骨架,在此基础上进行二次开发:首先删除冗余代码,然后将内部ID获取的对象的代码,更改为通过结构树遍历访问的方式,并补充加载位置属性
在前期文章《轻松上手Mechanical脚本自动化》中,我们详细介绍过Mechanical的结构树,各节点对应着不同的类对象,父子结构关系和数据对象(DataModelObject)的层次是一致的。
图片
上面图中的结构树为我们提供了对象访问方式:从顶往下去遍历各节点对象,通过节点对象的索引或者属性(如Name)去引用对象的实例
例如,结构树Model父节点下的各子节点对象,可以通过父子关系访问,对于Static StructuralSolution节点的访问,可以使用如下方式:
图片
Mechanical的结构树中,所有对象都是继承自DataModelObject基类,并且都有对应的属性:DataModelObjectCategory,对应着节点对象的类型枚举,例如节点:Named Selections对应着枚举类型是NamedSelections,其子对象枚举类型是NamedSelection
节点对应的枚举类型,可以在开发文档《ANSYS_ACT_API_Reference_Guide》中找到命名空间:Ansys.Mechanical.DataModel.Enums,查看DataModelObjectCategory枚举类成员的介绍表。
图片
通过上面枚举类型,可以封装如下方法去遍历结构树,传入节点类型枚举名和显示名称,返回对象实例引用。
载荷对象加载位置属性通常为Location,为可读可写的属性,需要赋予Scoping值类型,有GeometrySelectionNamedSelection两种方式,实际中更推荐大家在SCDM前处理中识别和创建边界命名,参见《SCDM二次开发系列:创建命名组》。
那么,可以调用GetDataModelObjByName方法,传入枚举类型:“NamedSelection”和提前创建的边界命名,可以获得加载位置的实例对象,传入到相应载荷对象的Location属性,就完成了相应的位置选择操作,如下:
图片
最后,基于录制的基础脚本,我们删除冗余代码修改变量命名封装常用方法赋予加载位置更改对象访问代码等,修改后完整代码如下,朋友们可以做一个参考。
图片

ACTMechanical二次开发代码&命令
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2021-04-01
最近编辑:4月前
小田老师
硕士 | 仿真工程师 欢迎关注ANSYS仿真与开发!
获赞 650粉丝 3786文章 62课程 4
点赞
收藏
作者推荐
未登录
4条评论
密斯特張
签名征集中
18天前
小田老师您好,想问一下,用什么方法可以获得named selections中命名的节点号,并且遍历这些节点在不同载荷步的结果,谢谢
回复
快落找四季
签名征集中
11月前
小田老师您好,想请问一下我也是开启了录制脚本,想录制一下添加命名的功能,录制完想验证一下脚本,但是在运行后却一直显示"Traceback (most recent call last):AttributeError: 'NoneType' object has no attribute 'Location'",想询问一下发生这种情况的原因
回复
天天
签名征集中
1年前
小田老师,想请问一下最后一步插入云图,并且evaluateresults之后,想通过脚本输出txt类型的文件应该用什么命令呢
回复
于欢
签名征集中
3年前
小田老师您好,在ansysworkbench中装配体网格划分完毕后,如果在SCDM中只改变其中1个零件的结构,后面的mesh模块可以实现其他固定零件的网格不更新吗?只更新这一个变化的零件的网格。可以实现吗?
回复
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈