首页/文章/ 详情

🔧 ANSYS二次开发实战:柱坐标系数据导出,旋转机械分析不再卡壳!

3月前浏览936

 

导读:  大家好,我是小郭老师,硕士毕业于中科院,专注于运用 Python 深度集成 ANSYS 进行工程数值计算与仿真自动化开发,精通基于 Python实现ANSYS Workbench众多模块的全流程脚本驱动(建模、求解、后处理),并具备将复杂仿真流程封装为高效、可复用软件工具的专业能力,今天给大家分享一些ANSYS二次开发方面的干货。


一、开篇:你是否遇过这个"隐形天坑"?

我有个学员,准备分析一个风叶片的变形情况。他建好了模型、设置了边界条件、跑完了仿真。现在需要提取叶片边缘在径向方向上的变形数据,用于后续的强度校核。

他右键点击"Deformation"结果,选择"Export to Text File",数据导出成功——但打开一看,傻眼了:

导出的数据只有 X、Y、Z 三个方向的笛卡尔坐标系下的位移

而他需要的是径向(r)、切向(θ)、轴向(h)圆柱坐标系下的变形数据。

于是他只能手动拿EXCEL,一个一个数据去转换坐标。

这,正是无数旋转机械工程师都在经历的"隐形天坑":

ANSYS Mechanical 手动导出的节点数据,永远只能是笛卡尔坐标系(X、Y、Z)。没有办法直接导出圆柱坐标系(r、θ、h)下的变形、应力、应变数据。

image.png

但其实,这个问题根本不需要手动转换。用Python脚本+ANSYS API,你可以让电脑自动完成"读取数据→坐标转换→写入文件"的全流程——不仅省时省力,还能100%准确,彻底避免手动出错的情况。


二、为什么ANSYS的"手动导出"这么不给力?

在深入脚本前,我们得先搞懂一个关键问题:为什么ANSYS不直接提供圆柱坐标系的导出选项?

2.1 ANSYS的设计逻辑

ANSYS Mechanical 的导出功能,本质上是直接将求解器计算的节点数据(基于笛卡尔坐标系)输出到文本文件。这是最"原始"的导出方式——快、稳定、通用。

但对于旋转机械、圆形结构、壳体分析这类工程问题,工程师需要的往往不是笛卡尔坐标下的数据,而是以旋转轴为基准的圆柱坐标系下的数据:

  • • 🔴 径向变形(r 方向) :叶片是否向外/向内弯曲
  • • 🟡 切向变形(θ 方向) :叶片是否扭转
  • • 🟢 轴向变形(h 方向) :叶片沿转轴的位移
image.png

2.2 "手动导出"为什么够不上?

因为 ANSYS 的设计哲学是:UI界面提供通用的、适配所有工程问题的功能。圆柱坐标转换是"个性化需求",而不是"通用需求",所以官方没有把这个功能做进导出界面。

二次开发恰好解决了这个问题:通过脚本,我们可以:

1. 在 ANSYS 模型中创建局部圆柱坐标系
2. 基于这个坐标系,自动提取节点数据
3. 实时进行坐标转换(笛卡尔 → 圆柱)
4. 批量写入文件,一步到位

三、核心技术揭秘:从"偏好设置黑科技"到"圆柱坐标转换"

3.1 圆柱坐标系的数学原理

现在来讲坐标转换的数学部分。别担心,不复杂。

给定一个节点的笛卡尔坐标 (X, Y, Z),如何转换为圆柱坐标 (r, θ, h)?

只需3个公式:

image.png

直观理解:

想象一个圆筒形结构,中心轴是 Z 轴。任何一个节点到轴的垂直距离就是 r,相对于某个参考方向的角度就是 θ,沿轴向的高度就是 h。

在代码中,这3个公式就对应:

image.png

3.2 在ANSYS中创建局部圆柱坐标系

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

代码如下:

image.png

代码讲解:

1. 先检查是否已存在:通过 GetObjectsByName() 查找名为 "coord_cylinder" 的坐标系
2. 不存在则创建AddCoordinateSystem() 新建一个坐标系
3. 设置为圆柱类型CoordinateSystemType = CoordinateSystemTypeEnum.Cylindrical
4. 固定原点:原点在 (0, 0, 0),也就是 XYZ 坐标系的原点(这通常就是旋转轴的位置)
5. 保存名称:方便后续通过名称查找

注意:  如果你的旋转轴不在原点(比如在 Z=100mm 处),需要修改 OriginZ = Quantity(100, "mm")

image.png

3.3 添加"方向变形"分析,基于圆柱坐标系

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

image.png

关键讲解:

  • • AddDirectionalDeformation():添加一个"沿指定方向的变形"结果对象
  • • CoordinateSystem = local_coord这是核心!  告诉 ANSYS 基于我们刚创建的圆柱坐标系来计算变形
  • • NormalOrientation = NormalOrientationType.XAxis:在圆柱坐标系中,沿 X 轴方向(对应圆柱坐标系的 r 方向,即径向)
  • • Location = ns_edge:指定分析位置(这里是我们提前在 ANSYS 中定义的命名选择"ns_edge")
  • • EvaluateAllResults():计算所有结果

为什么这样做?  通过"方向变形"对象,ANSYS 会自动在圆柱坐标系下计算径向变形,我们只需读取这些预计算的结果,再加上坐标转换,就能得到完整的圆柱坐标数据。

3.4 读取节点数据并批量坐标转换

现在来到最后一步——从方向变形结果中读取节点数据,进行坐标转换,写入文件

image.png

逐行讲解:

1. 读取结果数据
    • • directional_deformation.PlotData 获取方向变形的计算结果
    • • result["Node"] 提取节点ID列表
    • • result["Values"] 提取对应的变形值列表
2. 获取网格节点信息
    • • DataModel.MeshDataByName("Global") 获取全局网格数据
    • • 后续通过 mesh.Nodes[node_id] 查询每个节点的 XYZ 坐标
3. 自动时间戳
    • • datetime.datetime.now().strftime("%Y%m%d_%H%M%S") 自动生成时间戳(如"20250308_143527")
    • • 避免文件名重复,便于追溯
4. 坐标转换并写入
    • • 循环遍历每个节点
    • • 调用前面讲过的3个公式进行坐标转换
    • • 将 Node ID、r、θ、h、变形值 按逗号分隔写入文件

小技巧:"%.10f" 表示保留10位小数,精度足够工程计算。


四、完整代码 + 运行步骤

4.1 完整代码

image.png

4.2 运行步骤

前置条件检查清单:

  • • ✅ ANSYS Mechanical 已打开,并完成仿真计算
  • • ✅ 模型中已创建命名选择"ns_edge"(对应要提取数据的边缘或面)
  • • ✅ 分析已求解完毕,结果可用

运行步骤:

1. copy上面的完整代码
2. 打开 Mechanical 界面,切换到"Scripting"面板
3. 粘贴代码,点击"Run Script"(或按 Ctrl+Enter)
4. 等待脚本执行完毕,控制台会打印每个节点的数据,最后输出文件保存路径

输出文件格式:

脚本会生成一个名如 node_data_20250308_143527.txt 的文件,内容如下:

image.png

  • • Node ID:节点编号
  • • Radius:径向(r,单位m)
  • • Theta:切向角度(θ,单位弧度)
  • • Height:轴向(h,单位m)
  • • Value:对应的变形值
image.png
image.png

4.3 脚本扩展

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

image.png

这样一次运行就能生成 3 个不同的输出文件,比逐个手动导出快得多。


五、结语:从"手动转换"到"自动化分析"

基于这个脚本,现在我们只需要:

  1. 1. 在 ANSYS 中创建一个命名选择(5 秒钟)
  2. 2. 运行这个脚本(5秒)
  3. 3. 得到完整的圆柱坐标数据,直接用于后续分析

省下来的不仅仅是时间,还有——

✅ 准确性保证:不再有手动计算的错误

✅ 可重复性:下次遇到类似分析,脚本直接复用

✅ 可扩展性:轻松改造成批量处理多个结果

✅ 工程自信:数据来自系统化流程,而不是手动计算


其实ANSYS二次开发不用追求'高大上',从实际工程需求出发,用几行代码解决一个具体痛点,就是最实用的开发。  这个脚本看似简单,却能让旋转机械工程师从"手动坐标转换"的繁琐中解放出来,把时间花在更核心的结构优化、强度校核上——这正是二次开发的核心意义。

如果你也在为"ANSYS只能导出笛卡尔坐标数据"而头疼,欢迎在评论区留言,或者直接套用这个脚本改改参数就能用。后续还会分享更多ANSYS二次开发的实战技巧,敬请关注!


🔗 进阶学习:

点击阅读原文,立即学习《ANSYS Workbench & Mechanical企业级二次开发程序与Python应用入门进阶》,掌握ANSYS Workbench & Mechanical的脚本自动化开发能力。*

本课程从基础脚本开发到多工况批量计算的自动化实现,手把手教你用 Python 打通 "仿真流程自动化 - 多工况批量计算" 全链路,让 "重复仿真工作自动化、复杂工况高效计算" 从想法变成日常。

我还为付费用户提供VIP群进行交流、答疑服务持续加餐内容、提供定制化培训和咨询服务仿真人才库高薪内推就业、仿真秀还提供奖学金、学完此课程,推荐学习者报名参加工程仿真技术(CAE分析职业能力等级评价证书)。

image.png

 

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