首页/文章/ 详情

上接Word自动化|从ANSYS直接提取几何/网格/结果数据写入报告

4月前浏览1287
大家好,我是小郭老师,硕士毕业于中科院,专注于运用 Python 深度集成 ANSYS 进行工程数值计算与仿真自动化开发,精通基于 Python 实现 ANSYS Workbench 众多模块的全流程脚本驱动,并具备将复杂仿真流程封装为高效、可复用软件工具的专业能力。

上一篇初步介绍了如何结合 Python 和 Word COM 自动生成自定义报告。这一篇文章进一步讲解如何读取 ANSYS Mechanical 的各个关键参数,然后一起写到报告里

具体包含内容:

1. 几何信息:重量、体积、材料属性
2. 网格信息:网格数量、网格单元数量
3. 分析结果:应力/温度的最大值、最小值、平均值
4. 3D截图:自动导出各部分的云图

一、真实痛点:报告生成为什么这么低效?

你是不是也经历过这样的场景?

仿真分析完成了,领导/客户要报告。你得打开 ANSYS,逐个查看几何体的质量、体积、材料…然后打开网格模块,统计节点数和单元数…再点开结果对象,一个一个记录最大值/最小值…最后还要逐个截图,粘贴到 Word,调整图片大小和位置…

整个过程下来,一份报告要花 30-60 分钟,还容易因为手动操作出错。要是有 5 个工况、10 个零件,那就得翻倍耗时。

脚本化的优势是什么?

一行命令,系统自动:

  • • 遍历所有几何体,提取质量/体积/材料
  • • 统计网格数据
  • • 汇总结果的统计值
  • • 生成 3D 截图
  • • 排版到 Word 报告中

几分钟自动完成,数据准确、格式统一,再也不用重复手动操作。


二、核心思路:数据 → 对象 → 报告

在动手写代码前,咱们先理清整体逻辑,这样后面看代码就不会懵。

整个流程其实就 4 步:

image.png

ReportGenerator 类已经帮我们封装好了:

  • • add_heading(text) :添加标题
  • • add_table(headers, rows) :插入表格
  • • add_text(text) :插入文本
  • • add_image(pic_path, caption) :插入截图
  • • generate() :自动生成报告的各个部分
  • • save() :保存为 Word 文档

我们的任务就是:从 ANSYS 读取数据,然后调用这些方法往报告里填内容。

image.png

三、实战代码讲解

现在进入核心环节——一步步讲解如何从 ANSYS 提取各类数据,并自动生成报告。

3.1 初始化报告对象(最简单的一步)

首先,创建一个 ReportGenerator 实例,指定报告的保存路径和标题:

1.png

关键说明:

  • • GetUserFilesDirectory() 获取 ANSYS 的用户文件目录(通常是项目的 user_files 文件夹)
  • • 报告会自动保存到该目录下,路径自动管理,无需手动指定复杂路径

3.2 自动提取几何信息(核心方法 1)

痛点:  手动查看每个几何体的属性太麻烦——点开零件树,逐个查看 Mass、Volume、Material…

解决方案:  用 get_active_geometries_info() 方法一键提取所有数据。

来看关键代码片段:

2.png

核心逻辑拆解:

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

然后调用add_table()生成表格:

3.png

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

image.png

3.3 自动统计网格信息(核心方法 2)

痛点:  网格划分完成后,要手动查看并记录"节点数、单元数"两个数据。

解决方案:  直接访问 Model.Mesh 对象,一行代码搞定。

看核心代码:

4.png

核心逻辑很简单:

1. 访问 Model.Mesh 获取网格对象
2. 直接读取 .Nodes 和 .Elements 属性
3. 用 add_text() 插入报告(因为数据只有两个,不必用表格)
image.png

3.4 自动汇总分析结果(核心方法 3)

痛点:  仿真完成后有多个结果对象(温度、应力、位移等),要逐个点开查看 Max/Min/Average,然后手动记录…

解决方案:  用 DataModel.GetObjectsByType() 一次性获取所有结果对象,自动生成统计表格。

看关键代码:

5.png

核心逻辑拆解:

1. DataModel.GetObjectsByType(DataModelObjectCategory.Result) :一次性获取所有结果对象(温度、应力、位移等都包括)
2. result.Maximum / result.Minimum / result.Average:直接访问统计值
3. 容错处理:用 hasattr() 和 if ... else 防止某些属性不存在导致报错
4. 数据格式化:调用 fmt_sci() 转换为科学计数法,避免数字过长

执行效果:  报告中生成一个结果统计表,包含所有分析结果的 Max/Min/Average,一目了然。

⚠️ 关键注意事项:

  • • 不同的结果类型可能有不同的属性,某些结果可能没有 Average 属性,所以要用 hasattr() 判断
  • • 科学计数法显示是为了避免"999999999"这样的长数字影响表格美观
image.png

3.5 自动导出截图并插入报告(核心方法 4)

痛点:  仿真完成后要逐个截图(几何体的 3D 模型、网格、应力云图等),然后手动插入 Word,调整大小…

解决方案:  用 export_image() 一键导出所有截图,用 add_image() 自动插入报告。

来看关键代码:

6.png

核心逻辑拆解:

1. obj.Activate() :激活对象,让 ANSYS 显示该对象的内容
2. SetSpecificViewOrientation(ViewOrientationType.Iso) :设置 Iso(等距)视角
其中,为什么用 Iso 视角呢?因为它是立体视图中最通用、最美观的选择,不管什么模型都能清晰展示
3. Camera.SetFit() :自动拟合视图,使对象恰好充满屏幕
4. Graphics.ExportImage(file_img) :导出为图片文件
5. 文件路径自动管理:图片自动保存到 resource_dir(通常是 user_files/resources)

然后调用add_image()插入报告:

7.png

执行效果:  报告中自动插入几何体、网格、结果的 3D 截图,每张图片都有标题和适当的缩放。

⚠️ 关键细节:

  • • 视角选择:Iso 视角(立体视角)通常是最佳选择,如果需要其他视角可以修改 ViewOrientationType
  • • 图片缩放:代码中有 image_scale 参数(默认 70%),可以根据需要调整
  • • 自动命名:图片文件名自动以对象名称命名,便于管理
image.png

四、完整调用示例

前面讲了各个部分的核心逻辑,现在看看怎么把它们串联在一起

完整的调用代码其实非常简洁:

11.png

执行流程:

1. 创建 ReportGenerator 对象(初始化 Word 文档)
2. 调用 generate() 方法(自动生成报告的 3 大部分:几何、网格、结果)
3. 调用 save() 方法(保存为 .docx 文件并关闭 Word)

耗时:  通常 20-40 秒(取决于模型复杂度和截图数量)


五、运行效果演示

来看最终生成的报告长什么样。

image.pngimage.png

核心要点:

  • • 表格自动生成,格式统一(表头加粗、居中、灰色背景)
  • • 图片自动插入,大小适配、居中显示、带标题说明
  • • 文本排版清晰,层级分明(标题 + 内容 + 空行)
  • • 最关键的:所有数据都是从 ANSYS 自动提取,无需手动粘贴

时间对比:

操作方式
耗时
数据准确性
可重复性
手动生成
30-60 分钟
易出错
每次都要重做
脚本自动化
30-40 秒
100% 准确
一键重复生成

六、结语

综上所述,借助 Python 对 ANSYS Mechanical 进行二次开发,能够彻底告别仿真报告手动整理、逐条抄录、反复截图排版的低效模式。通过封装完善的 ReportGenerator 工具,可自动读取几何、网格、求解结果等核心参数,批量导出模型云图并完成 Word 标准化排版,真正实现仿真分析一键出报告

对于日常仿真工作而言,这套方案不仅大幅节省数十分钟的重复劳动,规避人工录入带来的数据误差,还能统一团队报告格式、提升交付专业性。后续我们还可以在此基础上,拓展载荷工况、约束条件、求解设置、结论批注等更多模块,不断完善报告模板,打造全链路仿真自动化工具链,让 ANSYS 仿真工作更高效、更标准化。


点击阅读原文,立即学习《ANSYS Workbench & Mechanical 企业级二次开发程序与 Python 应用入门进阶》,掌握 ANSYS Workbench & Mechanical 的脚本自动化开发能力。

本课程从基础脚本开发到多工况批量计算的自动化实现,手把手教你用 Python 打通"仿真流程自动化 - 多工况批量计算"全链路,让"重复仿真工作自动化、复杂工况高效计算"从想法变成日常。

我还为付费用户提供 VIP 群进行交流、答疑服务持续加餐内容、提供定制化培训和咨询服务仿真人才库高薪内推就业,仿真秀还提供奖学金、学完此课程,推荐学习者报名参加工程仿真技术(CAE 分析职业能力等级评价证书)。

附件

免费Simulation_Report.docx
MechanicalWorkbench几何处理网格处理后处理分析二次开发代码&命令智慧+数字孪生
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2026-04-27
最近编辑:4月前
小郭老师
硕士 小郭老师,精通ANSYS开发
获赞 145粉丝 43文章 32课程 2
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈