学好ANSYS ACT,轻松上手Mechanical脚本自动化
本文摘要(由AI生成):
本文介绍了如何使用Python脚本自动化Mechanical仿真,并详细介绍了ACT控制台、对象结构、如何访问对象及其子对象、如何设置和修改对象的属性值等。通过使用Python脚本,可以极大地提高工作效率,固化仿真分析流程。
还在用APDL?你Out了!快试试ACT自动化你的Mechanical仿真,轻松快速上手,速度绝对超乎你的想象!
通过使用ANSYS ACT及其强大的API编写脚本,我们可以轻松地自动化Mechanical的日常任务,固化仿真分析流程,极大提升工作效率。
1、Mechanical脚本概述
脚本是指使用编程语言与软件产品进行交互和修改。Workbench Mechanical支持两种脚本语言:JavaScript和ACT Python,两者都暂不支持脚本录制,只能基于API编写。ACT 自动化API是基于Python语言,允许我们自动化Mechanical仿真过程(网格划分、模型设置、后处理等)和获取或设置与本地Mechanical对象的相关数据,这在此之前需要使用JavaScript,现在可以使用IronPython编写实现自动化脚本。Python是一种面向对象、解释型的高级编程语言,语法简洁、优雅、编写的程序易读,易于学习和掌握,适用于非高级开发人员。对于Mechanical脚本开发来说,JavaScript脚本开发目前没有公开的API文档可供参考。ANSYS提供了非常详细和全面的基于Python的ACT开发文档,而且正在逐步扩展和完善ACT开发功能,所以说基于Python的ACT开发代表了以后ANSYS二次开发的发展方向。2、ACT Python脚本编写
在尝试编写Mechanical自动化脚本之前,我们首先应该熟悉IronPython2.7的使用方法,然后需要了解Mechanical中ACT控制台、对象结构、如何访问对象及其子对象、如何设置和修改对象的属性值等。
2.1 ACT控制台
Mechanical中的ACT控制台提供ACT Python脚本命令的输入,以便我们开发和调试脚本代码。
ACT控制台支持多行脚本命令编辑、代码自动缩进、代码自动补全、代码高亮、历史记录和代码片段管理,常用的快捷键如下。
2.2 代码自动补全
ACT控制台提供智能的自动补全功能,这意味着它考虑了括号或引号等语法元素。当在编辑器中输入句点时,命令行上方将显示一个可滚动的建议列表,方便我们快速完成脚本命令键入。
每个代码补全建议都有一个带有字母和颜色编码的图标:- 方形图标中的字母描述了成员的类型,如P代表属性(Property),M代表方法(Method)。
- 圆形图标中的字母描述所选成员的返回值类型,如C表示类(Class),E表示枚举(Enumeration)。
ACT自动化API提供对Mechanical结构树中所有对象的访问权限,允许我们创建对象、删除对象或修改对象属性。
- 通过ACT访问Mechanical结构树时,ExtAPI.DataModel.Project是所有对象的根节点。
- 脚本对象访问遵循和Mechanical结构树相同的结构,从这里我们可以访问所有子节点上的对象。
- 例如访问Mesh对象,我们输入ExtAPI.DataModel.Project.Model.Mesh,或者可简写为Model.Mesh;可以采用相同方式访问模型所有第一级对象(如Geometry、CoordinateSystems等)。
如上所述,对于能在Mechanical结构树中存在多个实例的对象,不存在直接的访问点。①引用父对象实例,使用Children属性或者GetChildren方法,获得所有子对象列表。②通过列表索引或对象名称(Name)引用的方式去获得子对象。下面我们通过一个实例演练一下。
- 上面模型中,可以直接通过结构树访问Named Selections对象,并将实例对象赋值给变量nsObject;
- 然后获取nsObject对象的Children属性得到子对象列表;也可以基于父对象中子对象的枚举类型,使用GetChildren方法获得子对象列表,方法需要传入两个参数:①枚举类型(DataModelObjectCategory),指定要查找的对象的类别。②布尔类型,指定是否递归地检索子类。
- 最后通过nsList的列表索引访问子对象;获得子对象之后,我们可以访问它们的Name属性,然后在控制台打印出来,代码和结果如下。
2.5 添加子对象
Mechanical结构树中的第一级对象都可作为父对象添加子对象;在界面上我们可以选中父对象,然后单击右键会出现菜单,选择Insert项下的子菜单项就可添加子对象。
ACT自动化API中,要想添加子对象到结构树中,首先要获得其父对象实例,然后调用父对象的AddObjectName()方法,其中ObjectName是所需对象的名称;最后需要设置子对象的属性参数。
例如,我们在静结构 (Static Structure) 分析下添加一个Force载荷,可输入以下代码:
一旦我们获得Mechanical对象的实例后,就可以在ACT控制台中,通过脚本命令读取和修改界面上详细视图(Details View)中对应的属性参数。在Mechanical中属性值常见的有6种输入类型:Number、Enumeration、Bool、Quantity、Scoping和Magnitude,下面我们详细介绍一下使用方法。对象详细视图下需要输入无单位数值的项,属性值应该赋予对应Number值类型,如int整形。例如更改分析设置中的计算步数,输入如下。
对象详细视图中提供下拉框选择的选项,属性值应赋予对应的Enumeration值类型,如下设置属性SolverType值为SolverType.Direct枚举类型。
对象详细视图中需要只选择On和Off的选项,属性值应赋予对应的Bool类型。比如激活分析设置中的大变形选项,输入如下。
(4) Quantity值类型
对象详细视图中需要输入带单位数值的项,属性值应赋予对应的Quality类型:类型为Quantity(‘value[unit]’)。例如,更改网格单元格尺寸为2mm,输入如下。
对象详细视图中Scope组中需要指定Geometry的项,对象的Location属性应赋予对应的Scoping值类型。Mechanical提供两种指定方式:Geometry Selection和Named Selection。例如,添加一个Pressure载荷,并指定加载的边界位置,我们采用两种方式实现,输入如下。
- Geometry Selection选择:需要先创建一个SelectionInfo对象,然后将几何实体赋予SelectionInfo对象的Entities属性,最后指定给压力载荷对象的Location属性。
Named Selection选择:需要得到Named Selections下子对象的实例,然后指定给压力载荷对象的Location属性。
对象详细视图中需要输入Magnitude值的项,属性值应赋予Magnitude值类型;Mechanical中提供三种输入模式:①公式输入②表格数据③常数类型。例如,我们继续以(5)中的压力载荷对象,给定载荷数值大小。
云图输出首先需要创建后处理对象,然后激活对象让其高亮显示,最后使用Graphics.ExportImage方法,指定输出的图片路径即可。例如,我们创建一个总变形云图,然后输出照片,代码示例如下。
3、Workbench集成
在Workbench脚本中可以通过SendCommand命令将ACT Python命令发送Mechanical去执行,以实现仿真流程的集成,代码示例如下所示。
4、案例练习
在上一期文章《案例:结构仿真分析参数化Step by Step》中,我们演示了如何使用SCDM脚本和Mechanical进行参数化分析。本期中我们可以基于SCDM脚本建模生成的模型,在Mechanical中使用ACT Python脚本实现自动化仿真分析。
使用SCDM创建模型和Mechanical仿真设置过程大家可以参照上一篇文章,大家可以参照本期内容,自己上手编写自动化脚本吧。
在实际仿真模板项目开发过程中,通常会使用SCDM + Mechanical的组合开发模式。SCDM拥有强大的直接建模能力,具备丰富的CAD接口、模型修复功能和脚本建模能力,能为Mechanical分析提供所需的几何模型输入,轻松完成从几何建模或导入、Mechanical前处理、仿真求解和后处理报告的自动化仿真过程,固化整个仿真分析流程,提升仿真研发的效率。