ANSYS二次开发实战:把ANSYS Viewer嵌进自定义UI,效率直接拉满!
导读: 大家好,我是小郭老师,硕士毕业于中科院,专注于运用 Python 深度集成 ANSYS 进行工程数值计算与仿真自动化开发,精通基于 Python实现ANSYS Workbench众多模块的全流程脚本驱动(建模、求解、后处理),并具备将复杂仿真流程封装为高效、可复用软件工具的专业能力,今天给大家分享一些ANSYS二次开发方面的干货。
在ANSYS仿真工程师的日常工作里,最头疼的场景之一莫过于仿真结果分享了。
明明只是想让同事看一眼应力分布,对方却得安装几十个G的ANSYS主程序。想和客户同步模型装配情况、各部位的云图情况,反复导图片、传文件的操作又繁琐又容易出错。
其实,ANSYS早就给我们准备了轻量化工具——ANSYS Viewer。它能直接打开AVZ格式的模型和结果文件,不用启动主程序。
但是,原生Viewer没法集成到我们二次开发的业务流程里。今天就教大家一个硬核二次开发技巧:把ANSYS Viewer嵌入自定义UI界面,打造专属的仿真结果查看平台!
一、先搞懂基础:AVZ文件与ANSYS Viewer
在动手开发之前,我们得先把两个核心工具的用法摸透。
1. 什么是AVZ文件?怎么导出?
AVZ是ANSYS专属的轻量化模型文件格式。它能同时打包三维几何模型和仿真结果数据。
导出路径特别简单:打开ANSYS Mechanical,在模型树选中需要导出的内容,直接用Export功能就能生成AVZ文件。
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
2. ANSYS Viewer核心功能,够用又好用
ANSYS Viewer是基于Web GL的三维查看器,它的优点就是轻量化、零门槛。
- 无需安装ANSYS主程序,双击就能打开AVZ文件
- 支持模型平移、旋转、缩放,还能生成爆炸图查看装配结构,比如铰链四杆机构的零件配合关系一目了然
- 鼠标悬停在模型任意点位,就能直接显示该位置的仿真结果数值


3. ANSYS Viewer安装指南(超简单)
(1) 去ANSYS官方网站下载2024 R1版本安装包(Windows 64-bit)

(2) 解压压缩包到指定位置,解压、运行ANSYSViewer.exe

(3)选择以ANSYSViewer.exe打开 AVZ文件

二、为什么要做二次开发?嵌入UI的刚需场景
原生的ANSYS Viewer虽然好用,但在工程实战中还是不够灵活,无法根据企业需求定制功能按钮,更无法和我们的项目管理、数据归档流程结合。
我们的二次开发目标很明确:打造一个集文件选择、模型查看、结果分析于一体的定制化工具。
实现思路也不复杂:用Python+PySide6搭建UI界面,通过调用外部进程启动ANSYS Viewer,再把Viewer窗口嵌入到我们的自定义界面中。
三、核心实战:代码逐行拆解,小白也能看懂
接下来就是最关键的代码环节,我们会把核心逻辑拆解开,确保大家能跟着复现。
1. 环境准备:先装这两个库
开发前需要安装两个Python库,直接用pip命令:
pip install PySide6 pywin32
- PySide6:用来搭建我们的自定义UI界面
- pywin32:用来操作Windows窗口句柄,实现Viewer嵌入功能
2. 关键函数解析:find_window_by_pid
这个函数是实现窗口嵌入的核心,作用是根据进程PID找到对应的Viewer窗口句柄。具体思路为,枚举所有可见窗口,再反查窗口对应的PID,才能精准定位到Viewer窗口。

3. 主窗口类开发:界面布局+核心逻辑
主窗口类MainWindow是我们整个工具的载体,主要分为界面布局和核心方法两部分。
(1)界面布局:简单又实用
在__init__初始化函数中,我们完成了整个自定义 UI 界面的搭建,界面结构清晰地分为三个核心区域:
-
路径输入区,通过两个输入框分别填写 ANSYS Viewer 的程序安装路径和 AVZ 文件的本地存储路径,为启动 Viewer 和加载模型提供基础参数。
-
功能按钮区,仅设置了一个 “Open And Embed” 按钮,点击该按钮即可触发后续的 Viewer 启动与嵌入逻辑。
-
窗口容器区,作为专门承载嵌入后的 Viewer 窗口的区域,是实现界面整合的关键载体。
除了界面布局的定义,初始化函数中还创建了进程(QProcess)与定时器(QTimer)两个核心组件。
其中,进程对象用于启动外部的 ANSYS Viewer 程序,实现独立进程的调用与管理;定时器则负责周期性触发try_embed方法,轮询检测 Viewer 窗口是否创建就绪。
通过进程与定时器的配合,能够解决 “进程启动≠窗口就绪” 的问题,精准捕捉 Viewer 窗口的创建时机,确保窗口嵌入操作在合适的时机执行,避免因窗口未初始化完成导致的嵌入失败,让整个嵌入流程更稳定、更可靠。

(2)核心方法:三步实现嵌入
第一步:clear_container ——清理旧窗口,避免残留
这个方法用来处理多次点击按钮的情况,防止旧的Viewer窗口和进程占用资源。

第二步:open_and_embed ——启动进程,开始轮询
点击按钮后,先清理旧窗口,再启动Viewer进程,最后开启定时器轮询窗口状态。

这里要注意:process.start()只是启动了进程,不代表Viewer窗口已经创建,所以需要定时器周期性检测。
第三步:try_embed ——核心嵌入逻辑,一步到位
这是整个程序的灵魂方法,实现了“找窗口→隐藏原生窗口→嵌入→显示”的完整流程。

4. 运行代码,看效果!

把完整代码保存为.py文件,直接运行:
1、确认viewer_edit和file_edit里的路径是你本地的正确路径,如下图所示

2、点击“Open And Embed”按钮
3、等待2秒左右,你会看到ANSYS Viewer窗口嵌在自定义UI里!模型的平移、旋转、结果查看功能,和原生Viewer完全一致。

四、总结与拓展:二次开发的价值不止于此
通过这个小案例,我们实现了一个看似复杂的功能,但核心代码其实只有几十行。这就是ANSYS二次开发的魅力:用低成本的Python代码,解决高价值的工程问题。
在完成 ANSYS Viewer 嵌入自定义 UI 的基础功能后,还能基于这个框架进一步拓展实用功能,让工具更贴合工程实战需求。比如,增加多文件批量加载功能,支持同时打开多个 AVZ 模型并实现对比查看,方便工程师快速比对不同工况下的仿真结果;还能基于ANSYS Viewer的功能,在模型上直接添加工程注释、关键尺寸或问题标注,提升结果沟通的效率。
写在最后
其实ANSYS二次开发不用追求“高大上”,从实际工程需求出发,用几行代码解决一个具体痛点,就是最实用的开发。比如这个工具,看似简单,却能让工程师从重复的手动操作中解放出来,把时间花在更核心的仿真分析上——这正是二次开发的核心意义。
如果大家还有其他ANSYS使用中的痛点,欢迎在评论区留言,后续会持续分享针对性的二次开发实战案例!此外,欢迎扫描以下二维码问卷,填写你的二次开发需求。

为了更好的分享各种二次开发学习知识,我还创建了二次开发交流群,并于群里分享各种二次开发文章及相关源程序,欢迎大家私信我、加入!

点击阅读原文,立即学习《ANSYS Workbench & Mechanical企业级二次开发程序与Python应用入门进阶》,掌握ANSYS Workbench & Mechanical的脚本自动化开发能力。
本课程从基础脚本开发到多工况批量计算的自动化实现,手把手教你用 Python 打通 “仿真流程自动化 - 多工况批量计算” 全链路,让 “重复仿真工作自动化、复杂工况高效计算” 从想法变成日常。
我还为付费用户提供VIP群进行交流、答疑服务、持续加餐内容、提供定制化培训和咨询服务、仿真人才库高薪内推就业、仿真秀还提供奖学金、学完此课程,推荐学习者报名参加工程仿真技术(CAE分析职业能力等级评价证书)。









