需求描述:结果极值导出
大家好,我是小郭老师,中科院硕士,长期从事 ANSYS 二次开发与仿真流程自动化,曾帮助多个研究所、研究院、国企和大型企业完成 ANSYS 二次开发项目。
后处理云图适合判断结果分布,但评审、报告和工况对比最终还是要落到数字:最大变形是多少,最大等效应力是多少,哪些结果对象需要继续复核。
很多时候,真正耗时的不是看不懂云图,而是每个结果对象都要点开,再到结果详情里复制 Maximum、Minimum。结果对象少的时候还能接受,一旦遇到多工况复核、报告整理或项目归档,这一步就会变成典型的重复劳动。
从云图到表格,中间差的其实就是这一步。
本文脚本要解决的就是这件事:从 Mechanical 第一个 Analysis 的 Solution 结果对象中批量读取名称、类型、最大值和最小值,并导出为 CSV。它不替代工程判断,而是把「先把关键指标提出来」这一步标准化。
脚本实现思路

这段流程的关键,是先稳定找到当前分析的 Solution,再统一刷新并遍历其中的结果对象。脚本从 DataModel.Project.Model 进入 Mechanical 模型,取 model.Analyses[0] 作为当前分析对象,然后定位到 analysis.Solution。
进入 Solution 之后,脚本先调用 solution.EvaluateAllResults() 评估已有结果对象,再遍历 solution.Children。每遇到一个直接子对象,就读取对象名称、对象类型,并分别尝试读取 Minimum 和 Maximum。最后统一写入 D:\Temp\Mechanical_Result_Export\solution_result_summary.csv,并在 Shell 里输出导出路径和对象数量,方便和对象树中的结果数量进行对照。
源码及其讲解

这段脚本可以按三个部分理解。
第一部分是定位结果容器。脚本默认读取第一个 Analysis,并进入它下面的 Solution,因此它适合当前模型只有一个主要分析,或你明确知道第一个分析就是目标分析的情况。如果模型里有多个 Analysis,后续可以把这里扩展成按名称选择分析对象。
第二部分是读取结果属性。不同类型的结果对象不一定都暴露相同属性,所以脚本没有直接假设每个对象都能读到 Minimum 和 Maximum,而是分别尝试读取。Total Deformation、Equivalent Stress、Directional Deformation、Reaction 等对象都可以进入同一遍历流程;如果对象不暴露对应属性,表格中会写入 N/A,不会因为单个结果对象异常而中断整个导出过程。
第三部分是写入 CSV。当前写法适合常规结果名称和快速统计,优点是简单直接;如果后续要处理包含逗号、引号或换行的对象名称,或者要给 Excel 做更严格的数据交换,可以再升级为带转义的 CSV 写法。
脚本运行结果
运行后,Mechanical 的 Shell 里会给出导出位置和导出数量。不同模型下数量不一样,示例输出类似这样:
Result summary exported: D:\Temp\Mechanical_Result_Export\solution_result_summary.csvResult objects exported: 5
这里的第一行不是结果表本身,而是 CSV 文件的保存路径。真正需要查看的是这个 CSV 文件里的内容,打开后会看到类似下面这样的表格:
| | | |
|---|
| | | |
| | | |
| R_Directional_Deformation_X | | | |
| Reaction_Fixed_Hole_Face_Radius_7p5 | | | |
表格字段与脚本写出的 CSV 保持一致,包含结果对象名称、类型、Minimum 和 Maximum。其中 ObjectType 这一列来自脚本读取的 DataModelObjectCategory,具体显示形式以当前 Mechanical 版本实际导出为准,上面的表格只作为字段含义示意。若某个结果对象不支持某个属性,对应位置会写成 N/A,不会中断整个导出流程。


读这张表时,建议先看三列:ResultName 用来确认对应的是哪个结果对象,ObjectType 用来判断结果类型,Maximum 和 Minimum 才是后续报告整理和工况对比要使用的数值。对于显示为 N/A 的对象,不要直接理解为结果为零,而应理解为该对象没有被脚本读取到对应属性。
运行时建议结合对象树、结果详情面板、Shell 输出和 CSV 文件一起检查:对象树用于确认处理了哪些结果对象,Shell 用于确认导出路径和数量,CSV 文件才是后续报告整理或结果复核真正要使用的数据结果。
脚本扩展方向
- • 按分析名称、工况名称生成不同 CSV 文件,方便多工况对比
- • 增加 Average、Probe 或指定结果对象的读取逻辑
- • 对 CSV 字段做转义处理,避免对象名称里包含逗号时影响表格结构
- • 导出后自动生成 Markdown 或 Excel 汇总报告
总结
这篇就讲一件事:别再一个个手抄结果极值了。用 Python 从 Solution 里批量取出结果名称、类型、Minimum 和 Maximum,再导出 CSV,后续做报告、复核和归档都会清楚很多。
需要注意的是,当前脚本默认读取第一个 Analysis,只处理 Solution 下的直接子对象。如果你想把它继续扩展成多工况批量计算、自动报告或流程化工具,就需要系统掌握 Workbench 与 Mechanical 的脚本对象、常用 API 和工程封装方法。