您的位置:网站首页 > Ansys教程

ANSYS UIDL二次开发的使用特点

时间:2011-01-26 09:18:27 来源:未知

 本文介绍了ANSYS UIDL二次开发的使用特点相关内容。

  UIDL是什么?Ansys二次开放语言的一种。UIDL的全名是User Interface Design Language,是Ansys中二次开发工具方面的三大金刚之一。GUI方面几乎全部的二次开发功能都将由它运筹帷幄。

  功用:

  组织我们自己强大的菜单系统。想象一下我们在Ansys中也能轻松做出可以和VC,VB之类主流GUI开发工具媲美的菜单响应效果,Ansys的世界将是多么的亲切、友好。

  构建功能繁复的对话框。Ansys中美观易用的ContactWizard对话框级联界面一定让你印象很深把,有了它,即使是最菜鸟的门外汉也能构建一流的工程算例,Ansys5.7中的DesignSpace应该就是无可争辩的例证之一。虽然从UNIX内核上讲(Windows下的东西是Ansys的后期移植,很多技术还不成熟,这里就不加讨论了),它们多构建在繁复的TCL编程基础上,但我们利用强大的UIDL工具,也能轻松架构起我们自己的实用对话框向导。

  建立自己的联机帮助

  Ansys中的联机帮助(尤其是UNIX下的搜索引擎)非常实用,可以说是我所接触过许多有限元平台中最为好用的几种帮助平台之一。UNIX下的关键字查询简直是帅呆了,想构建自己完善的帮助系统吗?UIDL同样是这方面不可或缺的理想开发工具。

  UIDL控制文件总结构

  一个完整的UIDL控制文件大致如一下结构:

  控制文件头

  结构块结构

  ……………

  说明:

  任何一个UIDL控制文件开头都是一个控制文件头,其后接一个或多个结构块结构。

  控制文件头结构

  一个典型的控制文件头如下所示:

  ---------------------------------------------------------------------------------------------

  :F UIMENU.GRN

  :D Modified on %E%, Revision (SID) = 5.181.1.67 - For use with ANSYS 5.5

  :I 0, 0, 0

  :!

  ---------------------------------------------------------------------------------------------

  几点说明:

  1.控制文件头第一行必须有:F filename,filename是UIDL控制文件名。

  2.控制文件头第二行必须有:D description,description是对本文件的一些说明。注意到description中有时能带%E%扩展,但只有当你拥有类似SCCS的系统(含一源码控制系统),ANSYS才能有效的进行%E%扩展,否则请手动把这些说明替代%E%写入description中。

  3.控制文件第三行必须有:I 0, 0, 0,各个0必须出现在第9、18、27行。用户只需要在这些位置填入0,ANSYS在调用该文件后会自动在这些位置填入GUI界面的位置信息。

  4.:!这一行通常是用来在UIDL控制文件中做分隔标记的,可有可无,这里用来分隔控制文件头和结构块结构,建议在控制文件头和结构文件块之间,以及各个控制文件块之间都加一行:!加以间隔。

  结构块结构

  结构块结构是一个UIDL控制文件的核心,它涵盖了菜单信息,命令信息,以及帮助文件信息,按照其不同的类型可划分为菜单结构块,命令结构块和帮助结构块。一般来说函数结构块还都伴随着构建一个对话框结构。

  1.结构块结构基本框架

  麻雀虽小,五脏俱全,让我们先看一看结构块的基本结构:

  头部分

  数据控制部分

  尾部分

  2.例子说明

  这里基于一个菜单结构块描述一下这些基本结构的细节,让大家有一个感性认识:

  --------------------------------------------------------------------------------------

  头部分

  :N Men_Add

  :S 0, 0, 0

  :T Menu

  :A Add

  :C

  :D Add

  数据控制部分

  Fnc_VADD

  Fnc_AADD

  Fnc_LCOMB

  尾部分

  :E END

  分隔

  :!

  ----------------------------------------------------------------------------------------

  几点说明:

  ?

  头部分

  :N行定义一唯一的结构控制块名。

  :行定义结构控制块位置信息。用户只需在第9、16、23行输入0即可,ANSYS在调用该文件中将自动为这些域填入合适的值。

  :T行定义该结构控制块的类型,可选类型有Menu、Cmd或者Help。

  :A行对不同类型的结构控制块有不同的功用,在Menu块中通常用来定义出现在GUI菜单上的名字。

  :D行通常用来描述该结构块的信息。

  头部分中还可以带许多其他命令,例如ANSYS内部命令等,这里就不详述了,我们将在例子中看到其具体用法。

  数据控制部分

  数据控制部分根据不同的结构控制块有不同的写法,但必须至少有一个数据控制行。例如在菜单结构块中我们可以在其中使用Men_String来调用其他菜单项,还可以使用Fnc_String命令调用一些命令。String对应于特定的菜单名部分或者命令名部分。其他具体细节这里就不详述了。我们将在具体实例中看到他们是如何构建实现的。

  尾部分

  :E END标志着一个结构块的结束。

  分隔(可选)

  一般说来,我们将在结构块和结构块之间加入:!来间隔(可选)。

  Ansys调用UIDL的过程

  ANSYS在调用GUI界面时会自动调用menulist55.ans文件,该文件中描述了UIDL前处理器到哪里去寻找UIDL控制文件。ANSYS在其docu/目录中有一个基本的menulist55.ans文件和对应的基本UIDL控制文件。默认情况下,ANSYS就调用这一menulist55.ans文件。

  下面是这一基本menulist55.ans文件的内容:

  ----------------------------------------------------------

  /ansys55/docu/UIMENU.GRN

  /ansys55/docu/UIFUNC1.GRN

  /ansys55/docu/UIFUNC2.GRN

  /ansys55/docu/UICMDS.HLP

  /ansys55/docu/UICMDS.HPS

  /ansys55/docu/UIELEM.HLP

  /ansys55/docu/UIELEM.HPS

  /ansys55/docu/UIGUID.HLP

  /ansys55/docu/UIGUID.HPS

  /ansys55/docu/UITHRY.HLP

  /ansys55/docu/UITHRY.HPS

  /ansys55/docu/UIOTHR.HLP

  /ansys55/docu/UIOTHR.HPS

  ----------------------------------------------------------

  可见,正是因为这一menulist55.ans文件的指定,ANSYS系统将默认调用对应的基本UIDL控制文件。

  由此,我们可以产生一个想法:只要我们改变这一基本menulist55.ans中的指定,就能使用我们自己的UIDL控制文件。

  但其实我们有更加好的方法,一般来说我们不建议改变系统ansys55目录里任何文件内容,以避免不必要的失误。ANSYS本身在调用menulist55.ans文件的方式上就提供了便于进行UIDL开发的机制:

  通常ANSYS按照以下顺序寻找menulist55.ans文件: 用户工作目录(可以在Interactive启动方式中设定)->用户根目录->/ansys/docu目录,可见只要我们在用户工作目录中编辑自己的menulist55.ans文件,ANSYS将优先使用我们自己的menulist55.ans文件。如果生成了自己的UIDL控制文件,并在我们自己的menulist55.ans文件中指向它们,我们就能实现对UIDL的全控制。

  最后要指出的是,UIDL前处理器在处理UIDL控制文件后,将自动在:I行(控制文件头部分)和:S行(结构块的头部分)中填入相应的位置信息,并在整个文件最后写入一系列:X行(索引行)。