目前市面上有许多热门仿真软件,其中HyperWorks是各大企业最常用的。目前HyperWorks发布了 2024 新版本,已经全面支持Python作为二次开发接口,对Python的支持已经在架构中引入了相应的模块,基本是百分百覆盖。借助Python本身的优势,可以在HyperWorks里面做很多基于有限元模型的算法工作。
今天重点介绍一下怎么从TCL过渡到Python的以及Python现代知识的情况。主要分为5个部分:
1、 对Python API的概述
2、 前处理开发介绍
3、 后处理开发介绍
4、 Extensions(官方新发布的代码管理流程插件)
Python API架构
我们知道,HyperWorks一直采用TCL语言作为二次开发编程接口,因其语法简介,内嵌在很多工业仿真软件中不失为一种优秀的编程语言。但相对于Python而言,偏为小众,网络上的学习资源非常少,不利于初学者学习。虽然TCL也有官方发布的标准库,但很多人都不知道。再者,作为纯解释性语言,TCL的执行效率偏低。
从HyperWorks 2024版本开始,全面支持Python作为二次开发接口。新版本中,对Python的支持已经在架构中都引入了相应的模块,基本上是百分百覆盖。借助Python本身的优势,如很多优秀的库,我们可以在HyperWorks里面做很多基于有限元模型的算法工作。比如模型的特征识别、匹配、定位等,零件全视角的图像识别匹配等,模型和结果之间的算法预测等。
如图所示,是软件的整体架构:
在HyperWorks 2024.1版本中,API的覆盖率基本上达到了100%。写过代码的人都比较清楚,二次开发主要关注两类API:一类是Modify Functions,就是在HyperWorks中操作记录的命令,覆盖度达到了99%;另外一类是Query Functions,用于获取模型信息,这类API覆盖度达到了98%。
Python开发环境
在HyperWorks中内嵌的是Python 3.8.10版本,这也是目前Python3里面最稳定而且应用最广泛的一个版本。HyperWorks会预装常用的包,比如Pandas、NumPy、SciPy、TensorFlow、openpyxl、Matplotlib等 ,也支持手动安装包,但是不建议安装在软件安装目录里面,除非你知道自己在干什么。
启用Python是从菜单栏view里面,菜单项Python Window,在打开的解释器窗口中,就可以调用API编写、测试代码了。
另外我们可以看到TCL command window是TCL的解释器环境,和Python解释器以后会并存,所以大家不需要担心以后写的TCL脚本在新版本里面不能用。
在Python中开发的时候,如果有些API存在问题,那么可以调用TCL的API来保证程序运行的稳定性。如下图所示,在Python中可以直接调用TCL的API语句,也可以直接调用HWC的语句,或者直接调用TCL 脚本文件。由此,就保证了在Python中做二次开发的稳健性。
前处理开发
在HyperWorks TCL二次开发中,必须要熟知的概念有Entity,Entity Type,Data Names,Mark等。在支持的Python API架构中,我们也遵循类型的逻辑,如下图所示的映射关系。
需要注意的是TCL中的Entity Mark和对应Python中的Entity Collections。在TCL开发中,我们只能最多创建两个Mark,如mark 1和mark 2,用于批量操作同一类的Entity;但是在Python中,我们用Collection代替了Mark,创建的Collection数量没有限制,这从一定程度上增加了代码中操作Entity的灵活度。
另外,Python API的接口函数名字和TCL API命令的名字是一样的,而且传入的参数用法也是一样的,不同的只是TCL和Python的语法差别。所以对于有Python编程基础的来说,从TCL开发转到Python开发,学习曲线没有大家想的那么陡。
此外,关于界面开发,在TCL中大家熟知HWTK组件库,其界面风格和HyperWorks界面一致。那么在Python中,我们提供了hwx.gui模块用于编写界面,同样是和HyperWorks的新界面风格保持一致。而且该模块,同样适用于Altair Compose,Altair Inspire和Altair SimLab的二次开发。
最后,基于Python开发的帮助文档目前在逐步的完善,让大家能更好地学习参考;语法提示插件HyperWorksPyAPI目前已经可以在VSCode中下载使用,相信能让我们写代码的效率提升一筹。
后处理开发
传统TCL中基于Handle的后处理开发,向来是初学者的一道门槛。如今,后处理包括HyperView和HyperGraph都已经支持Python开发,后续版本会逐步覆盖所有功能,如下图所示:
HyperView中对于常见的截取图片视频的功能,我们提供了CaptureVideoTool( )类来方便的截取图片、视频;HyperGraph中对于常见的绘制曲线功能,我们提供了CreateCurvesByFile( )类来方便的绘制曲线。
插件管理器 Extension Manager
在新版本中,我们提供插件管理器来规范化管理代码。强烈建议采用插件管理器管理平时开发的功能脚本。通过XML文件配置工作流和功能执行脚本,支持混合调用TCL脚本和Python脚本,比如功能一调用TCL脚本,功能二调用Python脚本。
以上就是关于HyperWorks二次开发新内容的全部分享。