上一篇初步介绍了如何结合 Python 和 Word COM 自动生成自定义报告。这一篇文章进一步讲解如何读取 ANSYS Mechanical 的各个关键参数,然后一起写到报告里。
具体包含内容:
你是不是也经历过这样的场景?
仿真分析完成了,领导/客户要报告。你得打开 ANSYS,逐个查看几何体的质量、体积、材料…然后打开网格模块,统计节点数和单元数…再点开结果对象,一个一个记录最大值/最小值…最后还要逐个截图,粘贴到 Word,调整图片大小和位置…
整个过程下来,一份报告要花 30-60 分钟,还容易因为手动操作出错。要是有 5 个工况、10 个零件,那就得翻倍耗时。
脚本化的优势是什么?
一行命令,系统自动:
几分钟自动完成,数据准确、格式统一,再也不用重复手动操作。
在动手写代码前,咱们先理清整体逻辑,这样后面看代码就不会懵。
整个流程其实就 4 步:

ReportGenerator 类已经帮我们封装好了:
add_heading(text) :添加标题add_table(headers, rows) :插入表格add_text(text) :插入文本add_image(pic_path, caption) :插入截图generate() :自动生成报告的各个部分save() :保存为 Word 文档我们的任务就是:从 ANSYS 读取数据,然后调用这些方法往报告里填内容。

现在进入核心环节——一步步讲解如何从 ANSYS 提取各类数据,并自动生成报告。
首先,创建一个 ReportGenerator 实例,指定报告的保存路径和标题:

关键说明:
GetUserFilesDirectory() 获取 ANSYS 的用户文件目录(通常是项目的 user_files 文件夹)痛点: 手动查看每个几何体的属性太麻烦——点开零件树,逐个查看 Mass、Volume、Material…
解决方案: 用 get_active_geometries_info() 方法一键提取所有数据。
来看关键代码片段:

核心逻辑拆解:
Model.Geometry.Children:获取所有零件part.Children:遍历每个零件下的所有几何体body.Suppressed:被压制的几何体会自动跳过(这是个巧妙的细节,避免了手动管理)body.Mass/body.Volume/body.Material:直接访问质量、体积、材料属性fmt_sci() :格式化函数,将 2.56e+03 这样的科学计数法转换为易读的格式然后调用add_table()生成表格:

执行效果: 报告中自动生成一个专业的表格,包含所有几何体的信息。

痛点: 网格划分完成后,要手动查看并记录"节点数、单元数"两个数据。
解决方案: 直接访问 Model.Mesh 对象,一行代码搞定。
看核心代码:

核心逻辑很简单:
Model.Mesh 获取网格对象.Nodes 和 .Elements 属性add_text() 插入报告(因为数据只有两个,不必用表格)
痛点: 仿真完成后有多个结果对象(温度、应力、位移等),要逐个点开查看 Max/Min/Average,然后手动记录…
解决方案: 用 DataModel.GetObjectsByType() 一次性获取所有结果对象,自动生成统计表格。
看关键代码:

核心逻辑拆解:
DataModel.GetObjectsByType(DataModelObjectCategory.Result) :一次性获取所有结果对象(温度、应力、位移等都包括)result.Maximum / result.Minimum / result.Average:直接访问统计值hasattr() 和 if ... else 防止某些属性不存在导致报错fmt_sci() 转换为科学计数法,避免数字过长执行效果: 报告中生成一个结果统计表,包含所有分析结果的 Max/Min/Average,一目了然。
⚠️ 关键注意事项:
hasattr() 判断
痛点: 仿真完成后要逐个截图(几何体的 3D 模型、网格、应力云图等),然后手动插入 Word,调整大小…
解决方案: 用 export_image() 一键导出所有截图,用 add_image() 自动插入报告。
来看关键代码:

核心逻辑拆解:
obj.Activate() :激活对象,让 ANSYS 显示该对象的内容SetSpecificViewOrientation(ViewOrientationType.Iso) :设置 Iso(等距)视角Camera.SetFit() :自动拟合视图,使对象恰好充满屏幕Graphics.ExportImage(file_img) :导出为图片文件然后调用add_image()插入报告:

执行效果: 报告中自动插入几何体、网格、结果的 3D 截图,每张图片都有标题和适当的缩放。
⚠️ 关键细节:
ViewOrientationTypeimage_scale 参数(默认 70%),可以根据需要调整
前面讲了各个部分的核心逻辑,现在看看怎么把它们串联在一起。
完整的调用代码其实非常简洁:

执行流程:
generate() 方法(自动生成报告的 3 大部分:几何、网格、结果)save() 方法(保存为 .docx 文件并关闭 Word)耗时: 通常 20-40 秒(取决于模型复杂度和截图数量)
来看最终生成的报告长什么样。


核心要点:
时间对比:
综上所述,借助 Python 对 ANSYS Mechanical 进行二次开发,能够彻底告别仿真报告手动整理、逐条抄录、反复截图排版的低效模式。通过封装完善的 ReportGenerator 工具,可自动读取几何、网格、求解结果等核心参数,批量导出模型云图并完成 Word 标准化排版,真正实现仿真分析一键出报告。
对于日常仿真工作而言,这套方案不仅大幅节省数十分钟的重复劳动,规避人工录入带来的数据误差,还能统一团队报告格式、提升交付专业性。后续我们还可以在此基础上,拓展载荷工况、约束条件、求解设置、结论批注等更多模块,不断完善报告模板,打造全链路仿真自动化工具链,让 ANSYS 仿真工作更高效、更标准化。
点击阅读原文,立即学习《ANSYS Workbench & Mechanical 企业级二次开发程序与 Python 应用入门进阶》,掌握 ANSYS Workbench & Mechanical 的脚本自动化开发能力。
本课程从基础脚本开发到多工况批量计算的自动化实现,手把手教你用 Python 打通"仿真流程自动化 - 多工况批量计算"全链路,让"重复仿真工作自动化、复杂工况高效计算"从想法变成日常。
我还为付费用户提供 VIP 群进行交流、答疑服务、持续加餐内容、提供定制化培训和咨询服务、仿真人才库高薪内推就业,仿真秀还提供奖学金、学完此课程,推荐学习者报名参加工程仿真技术(CAE 分析职业能力等级评价证书)。
