首页/文章/ 详情

用Python定制你的仿真查看工具!将ANSYS Viewer 嵌入自定义UI界面

6月前浏览499

导读: 大家好,我是小郭老师,硕士毕业于中科院,专注于运用 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文件。

image.png

2. ANSYS Viewer核心功能,够用又好用

ANSYS Viewer是基于Web GL的三维查看器,它的优点就是轻量化、零门槛

  • 无需安装ANSYS主程序,双击就能打开AVZ文件

  • 支持模型平移、旋转、缩放,还能生成爆炸图查看装配结构,比如铰链四杆机构的零件配合关系一目了然

  • 鼠标悬停在模型任意点位,就能直接显示该位置的仿真结果数值

image.png


image.png

3. ANSYS Viewer安装指南(超简单)

(1) 去ANSYS官方网站下载2024 R1版本安装包(Windows 64-bit)

image.png

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

image.png

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

image.png

二、为什么要做二次开发?嵌入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窗口。

image.png

3. 主窗口类开发:界面布局+核心逻辑

主窗口类MainWindow是我们整个工具的载体,主要分为界面布局核心方法两部分。

(1)界面布局:简单又实用

__init__初始化函数中,我们完成了整个自定义 UI 界面的搭建,界面结构清晰地分为三个核心区域:

  • 路径输入区,通过两个输入框分别填写 ANSYS Viewer 的程序安装路径和 AVZ 文件的本地存储路径,为启动 Viewer 和加载模型提供基础参数。

  • 功能按钮区,仅设置了一个 “Open And Embed” 按钮,点击该按钮即可触发后续的 Viewer 启动与嵌入逻辑。

  • 窗口容器区,作为专门承载嵌入后的 Viewer 窗口的区域,是实现界面整合的关键载体。

除了界面布局的定义,初始化函数中还创建了进程(QProcess)与定时器(QTimer)两个核心组件。

其中,进程对象用于启动外部的 ANSYS Viewer 程序,实现独立进程的调用与管理;定时器则负责周期性触发try_embed方法,轮询检测 Viewer 窗口是否创建就绪。

通过进程与定时器的配合,能够解决 “进程启动≠窗口就绪” 的问题,精准捕捉 Viewer 窗口的创建时机,确保窗口嵌入操作在合适的时机执行,避免因窗口未初始化完成导致的嵌入失败,让整个嵌入流程更稳定、更可靠。

image.png

(2)核心方法:三步实现嵌入

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

image.png

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

image.png

这里要注意:process.start()只是启动了进程,不代表Viewer窗口已经创建,所以需要定时器周期性检测。

第三步:try_embed ——核心嵌入逻辑,一步到位这是整个程序的灵魂方法,实现了“找窗口→隐藏原生窗口→嵌入→显示”的完整流程。

image.png

4. 运行代码,看效果!

image.png

把完整代码保存为.py文件,直接运行:

1、确认viewer_editfile_edit里的路径是你本地的正确路径,如下图所示

image.png

2、点击“Open And Embed”按钮

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

image.png

四、总结与拓展:二次开发的价值不止于此

通过这个小案例,我们实现了一个看似复杂的功能,但核心代码其实只有几十行。这就是ANSYS二次开发的魅力:用低成本的Python代码,解决高价值的工程问题

在完成 ANSYS Viewer 嵌入自定义 UI 的基础功能后,还能基于这个框架进一步拓展实用功能,让工具更贴合工程实战需求。比如,增加多文件批量加载功能,支持同时打开多个 AVZ 模型并实现对比查看,方便工程师快速比对不同工况下的仿真结果;还能基于ANSYS Viewer的功能,在模型上直接添加工程注释、关键尺寸或问题标注,提升结果沟通的效率。

写在最后

其实ANSYS二次开发不用追求“高大上”,从实际工程需求出发,用几行代码解决一个具体痛点,就是最实用的开发。比如这个工具,看似简单,却能让工程师从重复的手动操作中解放出来,把时间花在更核心的仿真分析上——这正是二次开发的核心意义。

如果大家还有其他ANSYS使用中的痛点,欢迎在评论区留言,后续会持续分享针对性的二次开发实战案例!此外,欢迎扫描以下二维码问卷,填写你的二次开发需求。

image.png

为了更好的分享各种二次开发学习知识,我还创建了二次开发交流群,并于群里分享各种二次开发的源程序。大家只需分享文章到朋友圈,即可凭借截图联系官方客服,以加入交流群。

image.png


更多ANSYS Mechanical二次开发技术案例和代码 ,请关注我的视频课程《ANSYS Workbench & Mechanical企业级二次开发程序与Python应用入门进阶》,掌握ANSYS Workbench & Mechanical的脚本自动化开发能力。

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

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

以下是课程大纲及主要内容

image.png


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