首页/文章/ 详情

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

16天前浏览250

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

cover.png

需求描述:热分析结果导出的列结构要稳定

大家好,我是小郭老师,中科院硕士,长期从事 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 中完成。

整体流程可以理解为下面几步:

image.png

第一步,脚本通过 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 = 0PID_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。导出完成后,需要对比两份文本的表头、坐标列、温度列、数据行数和文件路径。

image.png

源码及其讲解

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

image.png

决定导出列结构的,是每次导出前写入的偏好状态。Python 负责 Mechanical 对象查找、路径组织和文件输出;JScript 负责进入 Workbench 偏好管理器写入 Include Node Location。运行完成后,对比两份文本的表头、坐标列和温度列即可复核配置是否生效。

脚本运行结果

在 Mechanical 中运行后,Workbench 用户文件目录下会生成两份文本:

  • result_Temperature_0.txt:关闭 Include Node Location 后导出的温度结果文本。
  • result_Temperature_1.txt:开启 Include Node Location 后导出的温度结果文本。
image.png
image.png
image.png
image.png

从导出结果可以看到:关闭 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 后处理导出脚本。

MechanicalMeshingWorkbench
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2026-08-10
最近编辑:16天前
小郭老师
硕士 小郭老师,精通ANSYS开发
获赞 145粉丝 43文章 32课程 2
点赞
收藏
作者推荐
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈