许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  ANSYS二次开发实战:把Viewer嵌入自定义UI提升效率的代码分享

ANSYS二次开发实战:把Viewer嵌入自定义UI提升效率的代码分享

阅读数 1
点赞 0
article_banner


导读:大家好,我是小郭老师,硕士毕业于中科院,专注于运用 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) 去https://www.ansys.com/products/connect/ansys-viewer下载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使用中的痛点,欢迎在评论区留言,后续会持续分享针对性的二次开发实战案例!此外,欢迎扫描以下二维码问卷,填写你的二次开发需求。


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


点击阅读原文,立即学习《https://www.fangzhenxiu.com/course/13411984/》,掌握ANSYS Workbench & Mechanical的脚本自动化开发能力。

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

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

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



免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空