导读: 大家好,我是小郭老师,硕士毕业于中科院,专注于运用 Python 深度集成 ANSYS 进行工程数值计算与仿真自动化开发,精通基于 Python实现ANSYS Workbench众多模块的全流程脚本驱动(建模、求解、后处理),并具备将复杂仿真流程封装为高效、可复用软件工具的专业能力,今天给大家分享一些ANSYS二次开发方面的干货。
我有个学员,准备分析一个风叶片的变形情况。他建好了模型、设置了边界条件、跑完了仿真。现在需要提取叶片边缘在径向方向上的变形数据,用于后续的强度校核。
他右键点击"Deformation"结果,选择"Export to Text File",数据导出成功——但打开一看,傻眼了:
导出的数据只有 X、Y、Z 三个方向的笛卡尔坐标系下的位移
而他需要的是径向(r)、切向(θ)、轴向(h)圆柱坐标系下的变形数据。
于是他只能手动拿EXCEL,一个一个数据去转换坐标。
这,正是无数旋转机械工程师都在经历的"隐形天坑":
ANSYS Mechanical 手动导出的节点数据,永远只能是笛卡尔坐标系(X、Y、Z)。没有办法直接导出圆柱坐标系(r、θ、h)下的变形、应力、应变数据。

但其实,这个问题根本不需要手动转换。用Python脚本+ANSYS API,你可以让电脑自动完成"读取数据→坐标转换→写入文件"的全流程——不仅省时省力,还能100%准确,彻底避免手动出错的情况。
在深入脚本前,我们得先搞懂一个关键问题:为什么ANSYS不直接提供圆柱坐标系的导出选项?
ANSYS Mechanical 的导出功能,本质上是直接将求解器计算的节点数据(基于笛卡尔坐标系)输出到文本文件。这是最"原始"的导出方式——快、稳定、通用。
但对于旋转机械、圆形结构、壳体分析这类工程问题,工程师需要的往往不是笛卡尔坐标下的数据,而是以旋转轴为基准的圆柱坐标系下的数据:

因为 ANSYS 的设计哲学是:UI界面提供通用的、适配所有工程问题的功能。圆柱坐标转换是"个性化需求",而不是"通用需求",所以官方没有把这个功能做进导出界面。
而二次开发恰好解决了这个问题:通过脚本,我们可以:
现在来讲坐标转换的数学部分。别担心,不复杂。
给定一个节点的笛卡尔坐标 (X, Y, Z),如何转换为圆柱坐标 (r, θ, h)?
只需3个公式:

直观理解:
想象一个圆筒形结构,中心轴是 Z 轴。任何一个节点到轴的垂直距离就是 r,相对于某个参考方向的角度就是 θ,沿轴向的高度就是 h。
在代码中,这3个公式就对应:

为什么要在 ANSYS 模型中创建圆柱坐标系?因为我们要让方向变形分析基于这个坐标系进行计算。
代码如下:

代码讲解:
GetObjectsByName() 查找名为 "coord_cylinder" 的坐标系AddCoordinateSystem() 新建一个坐标系CoordinateSystemType = CoordinateSystemTypeEnum.Cylindrical注意: 如果你的旋转轴不在原点(比如在 Z=100mm 处),需要修改 OriginZ = Quantity(100, "mm")。

接下来,我们要在分析中添加一个特殊的结果对象:"方向变形"(Directional Deformation)。这个对象有个重要特性:它可以基于指定的坐标系进行计算。

关键讲解:
AddDirectionalDeformation():添加一个"沿指定方向的变形"结果对象CoordinateSystem = local_coord:这是核心! 告诉 ANSYS 基于我们刚创建的圆柱坐标系来计算变形NormalOrientation = NormalOrientationType.XAxis:在圆柱坐标系中,沿 X 轴方向(对应圆柱坐标系的 r 方向,即径向)Location = ns_edge:指定分析位置(这里是我们提前在 ANSYS 中定义的命名选择"ns_edge")EvaluateAllResults():计算所有结果为什么这样做? 通过"方向变形"对象,ANSYS 会自动在圆柱坐标系下计算径向变形,我们只需读取这些预计算的结果,再加上坐标转换,就能得到完整的圆柱坐标数据。
现在来到最后一步——从方向变形结果中读取节点数据,进行坐标转换,写入文件:

逐行讲解:
directional_deformation.PlotData 获取方向变形的计算结果result["Node"] 提取节点ID列表result["Values"] 提取对应的变形值列表DataModel.MeshDataByName("Global") 获取全局网格数据mesh.Nodes[node_id] 查询每个节点的 XYZ 坐标datetime.datetime.now().strftime("%Y%m%d_%H%M%S") 自动生成时间戳(如"20250308_143527")小技巧:"%.10f" 表示保留10位小数,精度足够工程计算。

前置条件检查清单:
运行步骤:
输出文件格式:
脚本会生成一个名如 node_data_20250308_143527.txt 的文件,内容如下:



此外,如果你需要同时导出"径向变形""径向应力""径向应变"等多个圆柱坐标系下的结果,可以轻松扩展脚本:

这样一次运行就能生成 3 个不同的输出文件,比逐个手动导出快得多。
基于这个脚本,现在我们只需要:
省下来的不仅仅是时间,还有——
✅ 准确性保证:不再有手动计算的错误
✅ 可重复性:下次遇到类似分析,脚本直接复用
✅ 可扩展性:轻松改造成批量处理多个结果
✅ 工程自信:数据来自系统化流程,而不是手动计算
其实ANSYS二次开发不用追求'高大上',从实际工程需求出发,用几行代码解决一个具体痛点,就是最实用的开发。 这个脚本看似简单,却能让旋转机械工程师从"手动坐标转换"的繁琐中解放出来,把时间花在更核心的结构优化、强度校核上——这正是二次开发的核心意义。
如果你也在为"ANSYS只能导出笛卡尔坐标数据"而头疼,欢迎在评论区留言,或者直接套用这个脚本改改参数就能用。后续还会分享更多ANSYS二次开发的实战技巧,敬请关注!
🔗 进阶学习:
点击阅读原文,立即学习《ANSYS Workbench & Mechanical企业级二次开发程序与Python应用入门进阶》,掌握ANSYS Workbench & Mechanical的脚本自动化开发能力。*
本课程从基础脚本开发到多工况批量计算的自动化实现,手把手教你用 Python 打通 "仿真流程自动化 - 多工况批量计算" 全链路,让 "重复仿真工作自动化、复杂工况高效计算" 从想法变成日常。
我还为付费用户提供VIP群进行交流、答疑服务、持续加餐内容、提供定制化培训和咨询服务、仿真人才库高薪内推就业、仿真秀还提供奖学金、学完此课程,推荐学习者报名参加工程仿真技术(CAE分析职业能力等级评价证书)。
