大家好,我是小郭老师,毕业于中科院,在仿真软件二次开发方面有着一定的经验,今天给大家分享 ANSYS 二次开发方面的干货。

你好,我是 HB Guo,长期专注 ANSYS 二次开发、Python 工程自动化、AI + CAE 和仿真流程自动化。
做 Mechanical 后处理时,很多工程师都会遇到一个非常熟悉的场景:
模型算完了,结果也出来了,真正消耗时间的却是最后一步:导出云图。
你需要选中一个结果对象,调整视角,Fit 一下窗口,隐藏标尺和 Logo,保存图片;然后再选下一个结果对象,再调视角,再保存图片。
如果只有两三张图,还能忍。
但如果一个项目里有几十个结果对象,或者多个工况都要重新导图,这件事就会变成非常低效的重复劳动。
更麻烦的是,手动导出很容易出现问题:
• 有些结果忘记导出;
• 有些图片视角不一致;
• 有些文件名不规范;
• 有些旧图被新图覆盖;
• 报告更新一次,整个导图流程又要重来。
这类事情本质上不应该长期靠手动完成。它非常适合用 ACT 做成一个插件。
本文就结合一个 ResultExporter 案例,介绍如何用 ANSYS ACT 在 Mechanical 中开发一个“云图批量导出向导”。用户只需要选择导出文件夹、图片格式和视角方向,插件就可以自动遍历所有结果对象并批量导出云图。
ACT 全称是 ANSYS Customization Toolkit,可以理解为 ANSYS 官方提供的一套二次开发框架。
通过 ACT,我们可以在 Workbench、Mechanical、Fluent、SpaceClaim 等产品里增加自定义按钮、自定义属性、自定义向导,甚至封装完整的仿真流程。
ACT 插件常见有两种形式:
• 脚本格式:由 XML、Python 和资源文件夹组成;
• 二进制格式:通常是 .wbex 文件,适合对外发布。
学习和开发时,一般先用脚本格式。等插件稳定后,再打包成 .wbex。
脚本格式 ACT 插件最重要的是两类文件:
XML:定义插件界面、控件、按钮、向导和回调函数。
Python:实现真正的功能逻辑。你可以把它理解得更简单一点:
XML 负责“长什么样”和“点哪里调用谁”。
Python 负责“被调用后具体做什么”。一个最小 ACT 插件大概长这样:

这里有几个核心标签:
• extension:插件根标签;
• guid:插件唯一 ID;
• script:指定 Python 文件;
• interface:指定插件作用在哪个产品界面;
• toolbar:顶部工具条;
• entry:按钮或菜单入口;
• callbacks:回调函数;
• onclick:按钮点击时执行的函数。
如果 XML 里写了:

那么 Python 里就必须有:

这就是 ACT 开发最关键的对应关系:XML 绑定函数名,Python 实现函数内容。
ACT 插件不只是能做按钮,还可以做 Wizard,也就是向导。
向导适合处理这类流程:
• 用户需要先输入参数;
• 插件需要按步骤执行;
• 最后生成结果或完成某个批处理任务。
普通按钮更像是“点一下马上执行”,而向导更像是“先配置参数,再执行流程”。
ResultExporter 为什么适合做成向导?
因为批量导出云图之前,插件至少需要知道三件事:
1. 图片导出到哪个文件夹;
2. 图片导出成 JPG、PNG 还是 BMP;
3. 采用等轴测、前视、俯视还是其他视角。
如果只是做一个按钮,用户就没有地方配置这些参数。所以这里采用 ACT Wizard 是非常自然的选择。
在 XML 中,向导一般由 wizard、step、property 和 callbacks 组成:

这段结构表达的是:
• 创建一个 Mechanical 中的向导;
• 向导里有一个“导出设置”步骤;
• 用户可以选择文件夹和导出格式;
• 进入向导时调用 OnInitStep;
• 点击完成时调用 ExecuteExport。
这就是 ACT 向导的价值:它把一个工程流程变成了可交互、可复用、可交付的工具。
ResultExporter 插件的文件结构很简单:
ResultExporter.xml
ResultExporter/
main.pyXML 负责定义向导界面,Python 负责执行批量导出。
它的用户操作流程如下:

它解决的问题并不复杂,但非常实际:把“人工一张张导图”变成“插件批量导图”。
插件提供三个参数:
• TargetFolder:导出目录;
• ExportFormat:导出格式,支持 JPG、PNG、BMP;
• ViewOrientation:导出视角,支持 Iso、Front、Top、Left、Right 等方向。
这三个参数正好对应工程师手动导图时最容易反复设置的内容。
XML 中,ResultExporter 通过 wizard 定义一个 Mechanical 向导:

Python 中,OnInitStep 用于初始化默认路径:

这一步的作用是:用户打开向导时,默认把导出路径设置到 Workbench 用户文件目录附近,减少用户手动选择路径的麻烦。
真正的导出逻辑在 ExecuteExport 中:

这段代码有几个非常值得学习的点。
第一,读取向导参数。

这体现了 ACT Wizard 的典型开发方式:XML 定义属性,Python 读取属性。
第二,做格式映射。
用户在界面上选择的是字符串 JPG、PNG、BMP,但 Mechanical 图像导出接口需要的是枚举类型,所以这里用字典完成映射。
第三,读取所有结果对象。

这一步把 Mechanical 结果树中的结果对象全部取出来,为后续批量导出做准备。
第四,逐个激活结果并统一视角。

这几行代码对应的就是手动操作里的“点结果、调视角、适配窗口”。
第五,清洗文件名。

很多工程师写自动化脚本时容易忽略这个细节。结果对象名称里一旦出现 Windows 文件名非法字符,导出就可能失败。这里做一次文件名清洗,可以明显提高插件的稳定性。
第六,统一导出图片风格。

报告图片不是“导出来就行”,还要干净、统一、适合交付。隐藏标尺、隐藏 Logo、使用白色背景,都是非常实用的工程细节。



这个插件适合用在很多 Mechanical 项目中,例如:
• 结构强度分析;
• 接触分析;
• 热分析;
• 多工况结果对比;
• 标准件系列校核;
• 批量参数化仿真;
• 项目报告图片整理。
手动导图最大的问题,不是慢,而是不稳定。
今天一个工程师导出来的是等轴测图,明天另一个工程师可能导出来的是前视图。一个项目第一次交付时命名是 Stress_1.jpg,第二次更新时可能变成 等效应力最终版.png。
当项目变大、结果变多、交付周期变紧,这种不一致就会变成管理成本。
ACT 插件能带来的改变是:
• 统一导出格式;
• 统一导出视角;
• 统一命名规则;
• 避免人工漏导;
• 减少重复点击;
• 为自动报告生成打基础。
后续还可以继续扩展,比如:
• 只导出指定分析下的结果;
• 按分析名称创建子文件夹;
• 导出后自动生成 Word 报告;
• 结合表格数据一起输出;
• 记录导出日志,方便追踪。
这就是二次开发的真正价值:不是写一个脚本炫技,而是把工程师的经验固化为工具,把重复流程变成团队资产。
如果你刚开始学习 ACT,我非常建议从这类案例入手。
因为它足够真实,也足够完整:
• 有 XML;
• 有 Python;
• 有 Wizard;
• 有属性控件;
• 有 Mechanical API;
• 有真实工程痛点;
• 有可扩展空间。
相比一上来就做复杂平台或大型插件,这类“小而完整”的工具更容易让你理解 ACT 的开发闭环。
工程自动化不是为了替代工程师,而是为了让工程师少做重复、低价值、容易出错的工作,把精力放在模型判断、边界条件、结果解释和工程决策上。
在 AI + CAE 的时代,AI 会让代码生成更快,但真正能把工具落地的人,仍然需要懂仿真、懂流程、懂软件接口、懂工程交付。
如果你在 ANSYS 使用过程中也遇到过类似的重复流程,比如批量建模、批量加载、批量求解、批量后处理、自动报告生成,欢迎在评论区留言交流。
点击阅读原文,立即学习《ANSYS Workbench & Mechanical企业级二次开发程序与Python应用入门进阶》,掌握 ANSYS Workbench & Mechanical 的脚本自动化开发能力。
ANSYS Workbench & Mechanical企业级二次开发程序与Python应用入门进阶
本课程从基础脚本开发到多工况批量计算的自动化实现,手把手教你用 Python 打通「仿真流程自动化 - 多工况批量计算」全链路,让「重复仿真工作自动化、复杂工况高效计算」从想法变成日常。
我还为付费用户提供VIP 群进行交流、答疑服务、持续加餐内容、提供定制化培训和咨询服务、仿真人才库高薪内推就业、仿真秀还提供奖学金、学完此课程,推荐学习者报名参加工程仿真技术(CAE分析职业能力等级评价证书)。
