Ansys Workbench中调用Mechanical python脚本的方法及注意事项

1       Ansys Workbench脚本编程概述

Ansys Workbench 支持记录用户通过图形界面(GUI)执行的操作,即日志记录(Journaling),日志以基于 Python 的脚本形式保存。用户可以修改这些脚本或创建全新的脚本,能够便捷地重现已完成的分析流程,还能扩展软件功能、实现重复性分析任务的自动化,并通过脚本编程以批处理模式运行分析。图形界面中执行的大多数操作都会被记录到日志中,以下是一些不会被记录的操作示例:

仅图形界面操作

Ÿ  中断求解过程

Ÿ  启动帮助功能(包括快速帮助和侧边栏帮助)

Ÿ  在 VistaTF 的求解单元中运行“查看求解器输出”选项

数据集成应用中的操作:详情请参考《脚本编程与数据集成应用》

 部分图形场景操作:例如隐藏实体和旋转视图

根据用户偏好设置,完整会话的日志可以自动保存到指定位置。在 Ansys Workbench 中,选择“工具 > 选项 > 日志和日志文件”。

Ansys Workbench中调用Mechanical python脚本的方法及注意事项的图1

脚本日志相关的操作位于 Ansys Workbench界面选择“文件 > 脚本,包括脚本录制、运行、打开命令窗口等。命令窗口使用 IronPython编程语言解释和执行命令或其他操作。注意:IronPython 通常与现有标准 Python 脚本兼容,但并非所有基于 C 语言的 Python 库模块都能在 IronPython 中使用。若要运行为旧版本 Ansys Workbench 创建的脚本,必须在脚本文件开头插入 SetScriptVersion 命令,指定脚本最初创建时的软件版本。此外,若从旧脚本中复制命令并粘贴到命令窗口,需先输入 SetScriptVersion 命令,再粘贴脚本命令。

 

2       脚本编程与数据集成应用

从项目示意图中,用户可与 Ansys Workbench 原生应用程序(称为工作区)进行交互,也可启动数据集成应用程序。原生工作区完全基于 Ansys Workbench 框架构建,可使用其所有服务。原生工作区的示例包括项目示意图、工程数据和设计探索。

数据集成应用程序独立于 Ansys Workbench 框架开发,但经过扩展后可由项目示意图驱动,并与 Ansys Workbench 及支持 Ansys Workbench 的应用程序共享关键数据和参数。数据集成应用程序包括 Mechanical APDL 应用程序、Ansys Fluent、Ansys CFX、DesignModeler 和 Mechanical 应用程序。

原生工作区和数据集成应用程序的区别对于 Ansys Workbench 日志记录和脚本编程至关重要。所有修改原生工作区相关数据的操作都会被记录到日志中,并可通过 Ansys Workbench 脚本编程实现完全自动化对于数据集成应用程序,只有从项目示意图发起的操作会被记录到日志中,例如系统更新和数据传输在数据集成应用程序内部执行的操作不一定会被记录到日志中,也不受 Ansys Workbench 脚本编程控制。例如,在 Mechanical APDL 中构建几何模型的步骤或在 Ansys Fluent 中设置求解方法的步骤不会被记录到日志中。

尽管数据集成应用程序不完全支持 Ansys Workbench 脚本编程,但许多应用程序都有自己的原生脚本语言,可通过 Ansys Workbench 脚本编程接口访问。例如,Mechanical APDL 基于功能强大的 Ansys 参数化设计语言(APDL),APDL 命令可直接嵌入到 Ansys Workbench 脚本中。

用户可使用 SendCommand 函数将原生脚本命令发送给数据集成应用程序。通过在 Ansys Workbench 脚本中插入 SendCommand 调用,可驱动数据集成应用程序。但数据集成应用程序不一定会将操作记录到 Ansys Workbench 日志中。大多数支持脚本编程的数据集成应用程序都有独立的日志,用于记录原生命令。

Ansys Workbench中调用Mechanical python脚本的方法及注意事项的图2

3       Ansys Workbench与Mechanical通信

ANSYS Mechanical也支持Python脚本进行二次开发,部分脚本也可以通过录制的方式进行记录(Automation->Scripting)。但该脚本只能在Mechanical界面环境下执行,也没有对应的批处理运行命令(如有欢迎留言),无法在Ansys Workbench项目层面实现联合自动化。

Ansys Workbench中调用Mechanical python脚本的方法及注意事项的图3

在Ansys Workbench中可以通过SendCommand方法运行ANSYS Mechanical中的python脚本。该方法主要包括Language及Command两个参数。

场景一:更改实体的材料名称

Ansys Mechanical中脚本示例为(录制得到)

body = DataModel.GetObjectsByName('SYS')[0]
body.Material= 'Structural Steel'

Ansys Workbench中脚本示例为

mechaCmd = """
body = DataModel.GetObjectsByName('SYS')[0]
body.Material=" Structural Steel "
"""
system1 = GetSystem(Name="SYS")
setup1 = system1.GetContainer(ComponentName="Setup")
setup1.SendCommand(Language="Python", Command=mechaCmd)

场景二:增加约束

Ansys Mechanical中脚本示例为(录制得到)

analysis_31 = DataModel.AnalysisById(31)
fixed_support_88 = analysis_31.AddFixedSupport()
selection = ExtAPI.SelectionManager.CreateSelectionInfo(SelectionTypeEnum.GeometryEntities)
selection.Ids = [12]
fixed_support_88.Location = selection

Ansys Workbench中脚本示例为

mechaCmd = """
analysis_31 = DataModel.AnalysisById(31)
fixed_support_88 = analysis_31.AddFixedSupport()
selection = ExtAPI.SelectionManager.CreateSelectionInfo(SelectionTypeEnum.GeometryEntities)
selection.Ids = [12]
fixed_support_88.Location = selection
"""
system1 = GetSystem(Name="SYS")
setup1 = system1.GetContainer(ComponentName="Setup")
setup1.SendCommand(Language="Python", Command=mechaCmd)

场景三:导出应力线性化数据(手动编写得到)

Ansys Workbench中脚本示例为

mechaCmd = """
result = DataModel.GetObjectsByName('Linearized Stress Intensity')[0]
result.ExportToTextFile('D:\ linearizedStressIntensity.xls')
"""
system1 = GetSystem(Name="SYS")
setup1 = system1.GetContainer(ComponentName="Setup")
setup1.SendCommand(Language="Python", Command=mechaCmd)

上述的Ansys Workbench脚本可以在File->Scripting->Open Command Window中运行,也可以保存为py文件,并通过类似的批处理命令运行。

"D:\Program Files\ANSYS Inc\v231\Framework\bin\Win64\RunWB2.exe" -R exportData.py

4       避坑指南(重点!!!)

Ÿ  即便在windows系统上,路径也需要使用“/”;

Ÿ  在Ansys Mechanical中的代码,如果存在中文(比如使用中文版Ansys界面),则必须在mechaCmd中第一行加上“# encoding: utf-8”,否则会运行会失败。

Ÿ  如果将Ansys Mechanical的代码实现定义为函数,并在Workbench代码中进行调用时,则mechaCmd中的字符串代码需要以顶格为基准格式,进行代码编写,即认为字符串中的Mechanical代码与Workbench代码“独立”存在。

以下内容为付费内容,请购买后观看

包含1个文件

案例的workbench工程文件及完整的脚本示例。

附件.zip
46.41MB
App下载
技术邻APP
工程师必备
  • 项目客服
  • 培训客服
  • 平台客服

TOP

1