首页/文章/ 详情

学好ANSYS ACT,轻松上手Mechanical脚本自动化

6月前浏览14806

本文摘要(由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控制台

01.png

Mechanical中的ACT控制台提供ACT Python脚本命令的输入,以便我们开发和调试脚本代码。

02.png

ACT控制台支持多行脚本命令编辑、代码自动缩进、代码自动补全、代码高亮、历史记录和代码片段管理,常用的快捷键如下。

03.png

2.2 代码自动补全

ACT控制台提供智能的自动补全功能,这意味着它考虑了括号或引号等语法元素。当在编辑器中输入句点时,命令行上方将显示一个可滚动的建议列表,方便我们快速完成脚本命令键入。

actConsole.gif

每个代码补全建议都有一个带有字母颜色编码的图标:
  • 方形图标中的字母描述了成员的类型,如P代表属性(Property)M代表方法(Method)
  • 圆形图标中的字母描述所选成员的返回值类型,如C表示类(Class)E表示枚举(Enumeration)

04.png

2.3 Mechanical对象结构
ACT自动化API提供对Mechanical结构树中所有对象的访问权限,允许我们创建对象、删除对象或修改对象属性
  • 通过ACT访问Mechanical结构树时,ExtAPI.DataModel.Project是所有对象的根节点
  • 脚本对象访问遵循和Mechanical结构树相同的结构,从这里我们可以访问所有子节点上的对象。
  • 例如访问Mesh对象,我们输入ExtAPI.DataModel.Project.Model.Mesh或者可简写为Model.Mesh;可以采用相同方式访问模型所有第一级对象(如Geometry、CoordinateSystems等)。

05.png

  • 除了Environment对象(如边界载荷、后处理等)之外结构树中的所有对象都遵循单例模式,即第一级对象的实例对象不可能同时存在两个
  • Environment对象作为第一级对象的子对象,存在一个或多个实例对象,不存在直接的访问点。例如,我们可以添加多个Pressure载荷,如果要想访问这些对象,就必须通过Children属性或GetChildren方法访问。

2.4 访问子对象
如上所述,对于能在Mechanical结构树中存在多个实例的对象,不存在直接的访问点。
对于这些子对象,我们可以按照以下方法访问:
①引用父对象实例,使用Children属性或者GetChildren方法,获得所有子对象列表。
②通过列表索引或对象名称(Name)引用的方式去获得子对象。下面我们通过一个实例演练一下。

06.png

  • 上面模型中,可以直接通过结构树访问Named Selections对象,并将实例对象赋值给变量nsObject;
  • 然后获取nsObject对象的Children属性得到子对象列表;也可以基于父对象中子对象的枚举类型,使用GetChildren方法获得子对象列表,方法需要传入两个参数:①枚举类型(DataModelObjectCategory),指定要查找的对象的类别。②布尔类型,指定是否递归地检索子类
  • 获得子对象列表之后,将其赋值给nsList变量。
  • 最后通过nsList的列表索引访问子对象;获得子对象之后,我们可以访问它们的Name属性,然后在控制台打印出来,代码和结果如下。

code1.png

07.png

  • 上面代码中,我们通过列表索引获取子对象,同样也能通过其名称引用子对象实例,封装的代码方法如下:

code2.png

2.5 添加子对象

Mechanical结构树中的第一级对象都可作为父对象添加子对象;在界面上我们可以选中父对象,然后单击右键会出现菜单,选择Insert项下的子菜单项就可添加子对象。

08.png

ACT自动化API中,要想添加子对象到结构树中,首先要获得其父对象实例,然后调用父对象的AddObjectName()方法其中ObjectName是所需对象的名称;最后需要设置子对象的属性参数。
例如,我们在静结构 (Static Structure) 分析下添加一个Force载荷,可输入以下代码:

code3.png

2.6 修改对象属性
一旦我们获得Mechanical对象的实例后,就可以在ACT控制台中,通过脚本命令读取和修改界面上详细视图(Details View)中对应的属性参数。
在Mechanical中属性值常见的有6种输入类型:Number、Enumeration、Bool、Quantity、Scoping和Magnitude,下面我们详细介绍一下使用方法。
(1) Number值类型
对象详细视图下需要输入无单位数值的项,属性值应该赋予对应Number值类型,如int整形。例如更改分析设置中的计算步数,输入如下。

09.png

(2) Enumeration值类型
对象详细视图中提供下拉框选择的选项,属性值应赋予对应的Enumeration值类型,如下设置属性SolverType值为SolverType.Direct枚举类型。

10.png

(3) Bool值类型

对象详细视图中需要只选择On和Off的选项,属性值应赋予对应的Bool类型。比如激活分析设置中的大变形选项,输入如下。

11.png

(4) Quantity值类型

对象详细视图中需要输入带单位数值的项,属性值应赋予对应的Quality类型:类型为Quantity(‘value[unit]’)。例如,更改网格单元格尺寸为2mm,输入如下。

12.png



(5) Scoping值类型
对象详细视图中Scope组中需要指定Geometry的项,对象的Location属性应赋予对应的Scoping值类型。Mechanical提供两种指定方式:Geometry Selection和Named Selection。例如,添加一个Pressure载荷,并指定加载的边界位置,我们采用两种方式实现,输入如下。
  • Geometry Selection选择:需要先创建一个SelectionInfo对象,然后将几何实体赋予SelectionInfo对象的Entities属性,最后指定给压力载荷对象的Location属性。

13.png

  • Named Selection选择:需要得到Named Selections下子对象的实例,然后指定给压力载荷对象的Location属性。

14.png

(6) Magnitude值类型
对象详细视图中需要输入Magnitude值的项,属性值应赋予Magnitude值类型;Mechanical中提供三种输入模式:①公式输入②表格数据③常数类型。例如,我们继续以(5)中的压力载荷对象,给定载荷数值大小。
  • 公式输入

15.png

  • 表格数据

16.png

  • 常数类型

17.png

2.7 输出云图

云图输出首先需要创建后处理对象,然后激活对象让其高亮显示,最后使用Graphics.ExportImage方法,指定输出的图片路径即可。例如,我们创建一个总变形云图,然后输出照片,代码示例如下。

code4.png

3、Workbench集成

在Workbench脚本中可以通过SendCommand命令将ACT Python命令发送Mechanical去执行,以实现仿真流程的集成,代码示例如下所示。

18.png

4、案例练习

在上一期文章《案例:结构仿真分析参数化Step by Step》中,我们演示了如何使用SCDM脚本和Mechanical进行参数化分析。本期中我们可以基于SCDM脚本建模生成的模型,在Mechanical中使用ACT Python脚本实现自动化仿真分析。

01.png

使用SCDM创建模型和Mechanical仿真设置过程大家可以参照上一篇文章,大家可以参照本期内容,自己上手编写自动化脚本吧。

actRun.gif

5、后记

在实际仿真模板项目开发过程中,通常会使用SCDM + Mechanical的组合开发模式。SCDM拥有强大的直接建模能力,具备丰富的CAD接口、模型修复功能和脚本建模能力,能为Mechanical分析提供所需的几何模型输入,轻松完成从几何建模或导入、Mechanical前处理、仿真求解和后处理报告的自动化仿真过程,固化整个仿真分析流程,提升仿真研发的效率。


SpaceClaimACTMechanical二次开发python
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2019-12-04
最近编辑:6月前
小田老师
硕士 | 仿真工程师 欢迎关注ANSYS仿真与开发!
获赞 645粉丝 3746文章 62课程 4
点赞
收藏
作者推荐
未登录
14条评论
仿真秀0105124220
签名征集中
6月前
2023r1的脚本可以录制了
回复
仿真秀0105124220
签名征集中
6月前
老师请问怎么激活控制台呀
回复
ongoing
签名征集中
9月前
收获很大
回复
仿真秀7394392064
签名征集中
2年前
小田老师,请问如何才能通过python命令,将Mechanical中的Mesh导出成STL文件的格式?
回复
柒染
签名征集中
2年前
ACT开发文档
回复
归去来兮
签名征集中
4年前
老师您好,这个好多API在18.0里没有,有什么方法替代呢,比如Model.Materials和Graphics
回复
仿真秀0803141507
签名征集中
4年前
ACT开发文档
回复 1条回复
达芬奇        仿真秀秀
又到了吃冷面的季节还爱吃酸菜
4年前
很实用!有意义的内容
回复
尊
签名征集中
4年前
请问哪个**后台回复可以获取开发文档?
回复 1条回复
NOILA
签名征集中
4年前
田老师你好,请问你那样有moving-heat-flux的ACT插件安装包吗?
回复 1条回复
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈