有限元温度结果缺 X/Y/Z 坐标?用 Python + JScript 配置 ANSYS Mechanical 导出

需求描述:热分析结果导出的列结构要稳定
大家好,我是小郭老师,中科院硕士,长期从事 ANSYS 二次开发与仿真流程自动化,曾帮助多个研究所、研究院、国企和大型企业完成 ANSYS 二次开发项目。
在 ANSYS Mechanical 的热分析后处理中,温度结果经常需要导出为文本,再交给 Python、MATLAB、数据看板或报告脚本继续处理。一旦导出文件缺少 X/Y/Z 坐标,后续的空间定位、测点比对和区域筛选就要重新回到 Mechanical 补查节点位置。
手动操作时,工程师通常会在 Mechanical 的 Options 或偏好设置里调整 Include Node Location,再执行结果导出。问题在于,这个设置属于软件偏好,而不是某个温度结果对象本身。不同电脑、不同操作者、不同项目批次之间,只要偏好状态不一致,导出的 txt 文件列结构就可能不一致。
本文示例把 Workbench/Mechanical 的偏好写入和温度结果导出放到一条脚本链路中:Python 负责定位结果对象、组织导出文件路径;JScript 负责写入 PreferenceMgr 中的 Include Node Location 选项。最终复核重点落在两份导出文本上:关闭节点坐标时的文件,以及开启节点坐标时的文件。
脚本实现思路
这段脚本处理 Mechanical 热分析结果导出前的偏好配置。运行前,模型中需要已经存在名为 result_Temperature 的温度结果对象,并且该结果具备可导出的数据;模型创建和求解在 Mechanical 中完成。
整体流程可以理解为下面几步:

第一步,脚本通过 wbjn.ExecuteCommand(ExtAPI, "returnValue(GetUserFilesDirectory())") 取得 Workbench 用户文件目录,后续两份导出文本都会写到这个目录下。
第二步,脚本把目标结果名称固定为 result_Temperature,并通过 DataModel.GetObjectsByName(temp_objName)[0] 查找对象。这里的名称必须和 Mechanical 对象树中的温度结果完全一致;如果模型中没有这个对象,脚本会在取第一个对象时失败。
第三步,脚本激活温度结果对象,再用 ExtAPI.Application.ScriptByName("jscript") 获取 JScript 引擎。偏好项本身由 Workbench 的 PreferenceMgr 管理,所以这里用 Python 调用 JScript,是为了进入对应的偏好写入接口。
第四步,脚本分别写入 PID_Show_Node_Location = 0 和 PID_Show_Node_Location = 1,并调用 WB.PreferenceMgr.Save() 保存设置。示例 XML 中,PID_Show_Node_Location 对应 Include Node Location;0/1 的实际效果要以当前 Mechanical 版本的偏好读回或导出文件列结构为准。
第五步,同一条脚本链路先关闭节点坐标并导出 result_Temperature_0.txt,再开启节点坐标并导出 result_Temperature_1.txt。导出完成后,需要对比两份文本的表头、坐标列、温度列、数据行数和文件路径。

源码及其讲解
源码图展示了同一条连续导出链路:先取得 Workbench 用户文件目录,再按名称定位温度结果对象,随后通过 JScript 依次写入关闭和开启节点坐标的偏好,并导出两份温度结果文本。

决定导出列结构的,是每次导出前写入的偏好状态。Python 负责 Mechanical 对象查找、路径组织和文件输出;JScript 负责进入 Workbench 偏好管理器写入 Include Node Location。运行完成后,对比两份文本的表头、坐标列和温度列即可复核配置是否生效。
脚本运行结果
在 Mechanical 中运行后,Workbench 用户文件目录下会生成两份文本:
- •
result_Temperature_0.txt:关闭 Include Node Location 后导出的温度结果文本。 - •
result_Temperature_1.txt:开启 Include Node Location 后导出的温度结果文本。




从导出结果可以看到:关闭 Include Node Location 时,result_Temperature_0.txt 不包含节点 X/Y/Z 坐标;开启后,result_Temperature_1.txt 增加了这些坐标列。
脚本扩展方向
- • 把
result_Temperature 改成配置项,按结果名称列表导出多个温度结果。 - • 在导出后读取文本表头,自动判断节点编号、坐标列和温度列是否存在。
- • 把 0/1 两种偏好状态、导出文件路径、列数和行数写入日志,方便批量工况复核。
- • 在运行前增加对象存在性检查,找不到同名温度结果时输出明确提示,而不是直接取
[0]。 - • 将导出文件的表头格式与后续 Python/MATLAB 解析脚本约定起来,避免后处理阶段再临时判断列位置。
总结
Mechanical 热分析结果要稳定进入后处理流程,需要把结果对象、偏好状态和导出文件列结构连成一条可复核链路。
本文示例用 Python 组织 Mechanical 对象和导出路径,用 JScript 写入 Workbench 偏好,再用两份 txt 文件对比 Include Node Location 对导出列结构的影响。接入项目时,建议同时复核 result_Temperature 对象、用户文件目录、表头列数、坐标列和温度列。
如果你在 ANSYS Mechanical 温度、应力或位移结果批量导出时遇到过表头不一致、坐标缺失、外部脚本读不进去的问题,欢迎在评论区留言。你也可以说说希望我下一篇拆哪类 Mechanical 后处理导出脚本。