
大家好,我是小郭老师,中科院硕士,长期从事 ANSYS 二次开发与仿真流程自动化。
前面有一篇文章,我们专门介绍过自己写的 Markdown 报告生成类:通过一组 add_heading()、add_paragraph()、add_table()、add_figure() 这类方法,把标题、段落、表格和图片引用封装起来,让 Mechanical 脚本可以生成结构清晰的 Markdown 文档。
那一篇重点解决的是“报告怎么写成 Markdown”。今天这篇继续往前走一步:报告内容不再主要依赖手工填写,而是从 ANSYS Mechanical 当前模型中读取几何、网格、结果等信息,再把这些真实对象信息和导出的图片一起写进 Markdown 报告。
在热力耦合、热分析和结构分析项目里,报告整理通常不只是一张温度云图或一张应力云图。交付前往往还要把几何体、材料、体积质量、网格数量、结果极值、云图图片和对象名称整理到同一份说明里。
如果这些内容都靠手工完成,过程很容易被拆成很多重复动作:先在 Mechanical 里点开几何体,copy材料和体积;再看网格节点数和单元数;然后逐个激活结果对象,截图、保存、改名;最后把图片和结果值放进报告。模型一多、结果对象一多,问题就不是“会不会截图”,而是截图、数值和对象名称能不能稳定对应。
本文演示的脚本把这条链路放回 ANSYS Mechanical 内部处理:从当前模型读取几何、网格和结果对象,统一导出图片,再生成一份 Markdown 报告。它适合用于有限元结果归档、热力耦合报告初稿、项目评审素材整理和后续 Word/PDF 报告转换前的数据准备。
脚本的主线可以概括为两层:底层继续使用前文介绍过的 Markdown 报告生成类负责文档结构;上层从 ANSYS Mechanical 对象树读取几何、网格和结果信息,并把读取到的表格数据与导出的图片交给 Markdown 层写入报告。
具体执行时,脚本会先清理旧 Figure,再设置统一图像显示参数,然后按几何、网格、结果三类对象生成表格和图片,最后把这些内容保存成 Markdown 文件。

第一步,脚本会删除当前 Mechanical 模型里已有的 Figure 对象。这样做是为了减少旧图片对象对本次导出的干扰,保证新导出的图片来自当前脚本流程。
第二步,统一图像显示规则。脚本关闭标尺和 Logo,保留坐标三向标,设置光滑云图、水平图例、最小最大值标记,并关闭额外线框显示。后续导出的几何、网格和结果图片,会尽量保持相近的视角和显示风格。
第三步,通过 Workbench 的用户文件目录确定输出位置。脚本在该目录下创建 resources 图片目录,Markdown 报告和所有导出图片放在同一套归档结构里,报告中的图片引用使用相对路径。这里延续上一篇文章中的文档生成类,只是这次传入文档类的内容来自 Mechanical 当前模型,而不是预先写好的固定表格。
第四步,遍历 Geometry 下未抑制的体对象,提取名称、几何体 ID、材料、体积和质量。体积与质量统一转换成科学计数法,写入“几何体信息”表格,便于后续检查材料分配和模型质量。
第五步,读取网格统计信息。脚本从 Mechanical 网格对象中取节点数和单元数,并写入“网格信息”章节。对于需要比较不同网格方案的算例,这一节可以作为报告中的第一层网格记录。
第六步,遍历结果对象。脚本读取每个结果的最小值、最大值和平均值,生成“结果统计”表格;随后逐个激活结果对象,创建 Figure,并把当前视图导出为图片。
这一套流程的重点不是把报告做得很花,而是先把 Mechanical 对象、结果数值和图片文件对应起来。后续要做 Word、PDF、评审 PPT 或知识库归档,都可以从这份结构化 Markdown 继续展开。

第一个重点是 DataModel.GetObjectsByType()。脚本用它分别取得 Figure、Geometry、Mesh 和 Result 四类对象。Figure 用于清理旧图片对象,避免上一次导出的 Figure 继续留在模型里;Geometry、Mesh 和 Result 则对应报告里的三类素材:几何视图、网格视图和结果云图。
第二个重点是从 Model.Geometry.Children 进入几何对象树。脚本先遍历 Part,再遍历 Body,并用 body.Suppressed 排除被抑制的体。对于未抑制的体对象,脚本读取 body.Name、body.GetGeoBody().Id、body.Material、body.Volume 和 body.Mass,把零件名称、几何体 ID、材料、体积和质量写入报告表格。这一段对应 Mechanical 对象树中的几何层级,不是手工整理的固定文本。
第三个重点是 Model.Mesh。脚本从当前模型的网格对象中读取 Nodes 和 Elements,生成节点数和单元数统计。对于有限元报告来说,这两个字段通常是最基础的网格记录;后续如果要扩展网格尺寸、局部网格或网格质量,也应该继续沿着 Mechanical 的 Mesh 对象展开。
第四个重点是 DataModelObjectCategory.Result。脚本遍历当前模型中的结果对象,并尝试读取 Minimum、Maximum 和 Average。这些属性来自 Mechanical 结果对象本身,适合放进报告摘要表。需要注意的是,不同结果对象可读取的统计属性可能不同,所以脚本会把读取不到的值写成 N/A,提醒后续回到 Details 面板复核。
第五个重点是 Graphics 图形接口。导图前,脚本统一设置 Graphics.ViewOptions 和 Graphics.GlobalLegendSettings:关闭标尺和 Logo,保留坐标三向标,使用光滑云图,显示最小最大值标记,并把图例设置为水平布局。这样后面从几何、网格到结果云图,截图风格会更接近报告交付需要。
最后看 export_image()。它先调用目标对象的 Activate(),让 Mechanical 当前视图切换到这个对象;再用 Graphics.Camera.SetSpecificViewOrientation(ViewOrientationType.Iso) 设置等轴测视角,并通过 Graphics.Camera.SetFit() 让模型填充窗口;随后调用 obj.AddFigure() 创建 Figure,最后用 Graphics.ExportImage() 把当前视图保存为图片。也就是说,图片不是从外部拼出来的,而是从 Mechanical 当前对象激活后的图形窗口导出的。
报告正文由前文介绍过的轻量 Markdown 构建器完成。主脚本只需要把从 Mechanical API 读取到的几何体、材料、网格数量、结果极值和图片路径交给文档生成类,不需要在业务逻辑里反复拼接 Markdown 的 #、表格分隔线和图片语法。
这里的“自动导出”有明确范围:脚本会遍历当前模型中可获取的几何、网格和结果对象,生成图片与 Markdown 报告;它不会自动创建新的结果对象,也不会替代求解流程。运行前应先确认模型已经完成求解,Solution 下已有需要进入报告的结果对象。



脚本运行后,会在 Workbench 用户文件目录下生成一份 Markdown 报告,并创建一个 resources 图片目录。Shell 输出中会提示报告保存路径和图片目录路径。
报告内容包含三组核心信息:
生成后的 Markdown 报告可以直接打开阅读,也可以继续作为中间文件进入 Word、PDF 或网页报告转换流程。对于热力耦合项目,建议重点检查三件事:温度场和结构场结果对象是否都在 Solution 下,结果值是否已经刷新,导出的云图是否对应当前报告需要展示的工况。
图片目录中的文件名使用对象类型和对象名称组合,例如几何视图、网格视图和结果云图会分别进入对应章节。这样审阅报告时,可以从 Markdown 里的图注反查 Mechanical 对象树中的对象名称,减少“图片看起来对,但不知道来自哪个结果”的问题。
这些扩展都应围绕同一个原则展开:先保证 Mechanical 对象、数值表格和图片文件一一对应,再考虑更复杂的报告格式。
热力耦合和有限元数值计算报告的自动化,不一定要从复杂的 Word 模板开始。上一篇文章先搭好了 Markdown 文档生成类,解决“报告格式怎么生成”;今天这篇则把它接到 ANSYS Mechanical 当前模型上,解决“报告内容怎么从模型里自动读取”。
本文脚本已经把报告素材采集、图片导出和 Markdown 写入串成一条流程。运行后建议回到 Mechanical 对象树、结果详情和输出目录一起复核:对象树确认导出范围,Details 面板确认结果值,Markdown 报告确认章节和图片引用,图片目录确认每张图都能打开。
如果你希望系统学习 ANSYS Workbench 与 Mechanical 二次开发,可以点击阅读原文,学习《ANSYS Workbench & Mechanical企业级二次开发程序与Python应用入门进阶》,掌握 ANSYS Workbench 与 Mechanical 的脚本自动化开发能力。
本课程从基础脚本开发到多工况批量计算的自动化实现,手把手讲解如何用 Python 打通“仿真流程自动化 - 多工况批量计算”链路,让重复仿真操作、批量对象处理和结果整理真正进入日常工程流程。
我还为付费用户提供 VIP群 交流、答疑服务、持续加餐内容,并提供定制化培训和咨询服务。

你在整理 ANSYS Mechanical 报告时,最想自动化的是哪一步:几何和材料统计、网格信息、结果极值、云图导出,还是最终 Word/PDF 排版?可以在评论区写下具体场景,我后面继续按真实项目任务拆解。