ANSYS二次开发的研究
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
·46·机械2008年增刊 总第35卷
———————————————收稿日期:2007-12-03 ANSYS二次开发的研究
王炎欢
(宁波韵升高新技术研究院,浙江宁波 315040)
摘要:对ANSYS的二次开发方式进行了研究,提出新的一种API开发方式。在采用VC、VB、Delphi语言开发友好交互界面的同时,能实时控制ANSYS。
关键词:ANSYS;二次开发;API;Delphi
Research on the secondary development technology of ANSYS
WANG Yan-huan
(Ningbo Yunsheng High-tech Academy, Ningbo 315040,China)
Abstract:Researching on the secondary development of ANSYS, proposes a new API development way. We can not only program the friendly interface by VC, VB, Delphi, but also can real-time control ANSYS.
Key words:ANSYS;secondary development;API;Delphi
ANSYS程序是一个功能强大、通用性好的有限元分析程序,同时它还具有很好的二次开发功能,用户可以根据自身的需要在标准ANSYS版本上进行功能扩充和系统集成,生成具有行业分析特点和符合用户需要的专用ANSYS程序[1]。
1 ANSYS常规开发方式
ANSYS提供了四种常规的二次开发工具,分别是APDL(ANSYS Parametric Design Language)、UIDL(User Interface Design Language)、UPFs(User Programmable Features)和数据接口。
1.1 APDL开发
APDL参数化程序设计语言实质上是由类似于FORTRAN 77的程序设计语言部分和1000多条ANSYS 命令组成。其中,程序设计语言部分与其它编程语言一样,具有参数、数组表达式、函数、流程控制(循环与分支)、重复执行命令、缩写、宏及用户程序等。用户可以利用程序设计语言将ANSYS命令组织起来,编写出参数化的用户程序,从而实现有限元分析的全过程。实际开发时主要以宏命令的形式进行组织。宏是具有某种特殊功能的命令组合,实质上是参数化的用户小程序,可以当作ANSYS 的命令处理。1.2 UIDL开发
UIDL用户界面设计语言主要是使用APDL语言编写或改造ANSYS图形界面的专用设计语言,主要完成以下三种图形界面的设计:主菜单系统及菜单项,对话框和拾取对话框,帮助系统。通过UIDL,用户可以在扩充ANSYS 功能的同时建立起对应的图形驱动界面,如在主菜单的某位置增加菜单项,设计对应的对话框、拾取对话框,实现参数的输入和其它程序运行的控制,同时提供相应的联机帮助,使操作者能方便地获取系统帮助。
由UIDL语言编写的程序文件称为控制文件,以.GRN 作为后缀名,保存在“…\ANSYS\gui\en-us\UIDL”目录下。在ANSYS中,所有的菜单和标准对话框都是由控制文件建立起来的。在开发时通过修改UIMENU.GRN文件建立自己的各级菜单,修改UIFUNC 1.GRN、UIFUNC 2.GRN文件建立各级菜单的操作功能。
1.3 UPFs开发
ANSYS软件主要采用FORTRAN语言开发,ANSYS 提供了与FORTRAN的接口。UPFs(用户程序特性)向用户提供丰富的FORTRAN77用户程序开发子程序和函数,用户利用它们从开发程序源代码的级别上扩充ANSYS的功能。使用这些子程序和函数,编写用户功能
机械2008年增刊 总第35卷 ·47·
的源代码程序,在与ANSYS版本要求匹配的FORTRAN 或C编译器上重新编译和连接,生成用户版本的ANSYS 程序。用户需要相关的专业知识和对ANSYS系统的深入理解,可以开发自定义的单元、材料特性、算法等。
1.4 ANSYS数据接口开发
ANSYS程序在分析过程中存在大量的设计分析数据,一部分在运行时置于计算机的内存之中,一部分以文件的形式存放在工作目录中。除LOG文件和出错文件等文本文件之外,其它文件都是二进制文件,分别以不同的格式进行写入,如:数据库文件、结果文件、模态结果文件、单元矩阵文件、子结构矩阵文件、对角化刚度矩阵文件、缩减位移矩阵文件、缩减频率矩阵文件和完整的刚度-质量矩阵文件等等。ANSYS数据接口详细地阐述每种二进制文件的格式,以及从这些数据文件提取各种数据的子程序或函数,从而实现对二进制数据的读写和修改。
2 其他编程语言的开发
2.1 VC、VB、Delphi语言开发
用户使用VC、VB、Delphi等高级开发语言结合相关的专业开发出友好的人机交互界面,生成APDL文件或创建成宏文件,然后在ANSYS中运行APDL文件或者宏文件的方式运行。下面是Delphi打开ANSYS软件的语句。
path := 'D:\Program Files\Ansys Inc\v100\ANSYS\bin\
intel\ansys100';
ShellExecute(0,'Open',pchar(path), nil, nil, SW_SHO-
WNORMAL);
在程序运行时,需要在程序目录下建立“file.log”文件,同时确保程序目录命名的相关合法性,如不要出现下划线等字符。
2.2 COM组件开发
COM英文为Component Object Model(组件对象模型),是微软生产软件组件的标准。它是构造二进制兼容软件组件的规范,不管组件应用何种语言编写只要遵循COM规范就可以相互直接通信。DLL是Dynamic Link Library的缩写,意为动态链接库。DLL是包含函数和数据的模块的集合,它可以导出数据也可以导出函数以供其它的DLL调用,按照COM规范实现的DLL可以被视为COM组件。目前使用VC、VB、DELPHI等语言不能采用COM组件的形式调用ANSYS软件,但ANSYS软件中存在大量的DLL文件,如果能获得DLL文件详细的接口信息,或则ANSYS部分DLL为COM对象,则用户可以对ANSYS软件进行深层次的二次开发。
2.3 TCL/TK
TCL/TK是工具命令语言(Tool Command Language)的缩写,是常用的操作界面设计语言,是ANSYS界面开发的理想工具,该语言提供了与ANSYS的数据传递接口,同时他还能与其他应用软件接口,支持COM技术[2]。
根据ANSYS的发展趋势,TCL/TK结合C将是主流方向。TCL/TK的强大扩展功能以及易于上手是这一趋势的前提。ANSYS的流体建模工具以及美国Altair公司的Hyper Mesh也是基于TCL/TK的二次开发。ANSYS对TCL/TK进行了比较大的扩展,提供了Euidl以及基于TK 的组件扩展。
3 API开发新途径
对WINDOWS API深入学习后,研究出了ANSYS一个新的开发途径。API(Application Programming Interface,应用程序编程接口)是一套用来控制WINDOWS的各个部件的外观和行为的一套预先定义的WINDOWS函数。在WINDOWS API中,包括了大量的函数、结构、消息、宏和接口,它不仅为应用程序所调用,也是WINDOWS 的一部分。WINDOWS是由事件驱动的抢先式的多任务系统,WINDOWS中事件的触发与管理使用了消息机制。我们很难获得ANSYS特定窗口的类名。但是我们打开ANSYS软件,输入焦点始终在命令输入框中,这为我们提供了一个很好的开发窗口。在开发时可以通过模拟键盘向ANSYS的命令窗口发送键码。
开发流程如下:
(1)用VC、VB、Delphi等开发软件建立交互界面;
(2)在交互界面上,设置选项,输入参数,确认设置后生成一系列的ANSYS命令(流);
(3)确认设置的同时显示ANSYS软件,向ANSYS 的命令窗口中发送键盘消息,即能实时控制ANSYS。以Delphi开发语言为例,关键代码如下:
AnsysHandle := FindWindow(nil, pchar('ANSYS Multiphysics Utility Menu'));
if AnsysHandle <>0 then//找到ANSYS窗口句柄
begin
(下转第50页)