1、ANSYS 二次开发手册UIDL 解析APDL 解析目录第二章 解析 UIDL 篇 .12.1 结识 UIDL12.2 看看 UIDL 的模样 .12.3 Ansys 调用 UIDL 的过程 4第三章 UIDL 实例解析一 .63.1 问题描述: .63.2 环境准备: .63.3 添加菜单: .73.4 结束语 .9第四章 UIDL 实例解析二 .104.1 问题描述: .104.2 环境准备及构建对话框: .104.3 参数提取杂谈 .124.4 结束语 .13附录 .13第五章 UIDL 实例解析三 .155.1 问题描述 .155.2 环境准备及构建联机帮助: .155.3 几点说明
2、.185.4 结束语 19第六章 解析 APDL.206.1 熟悉新朋友 APDL .206.2 二次开发工具之间的比较 206.3 结束语 20第七章 APDL 综合实例 .217.1 问题说明 217.2 解题思想 227.3 构建步骤 227.4 几点说明 267.5 结束语 261第二章 解析 UIDL 篇2.1 结识 UIDLUIDL 是什么?Ansys 二次开放语言的一种。OK,那么它能带给我们什么?很多很多,如果你想让你在 Ansys 中制作的用户界面具有专业水准的话,请来结识一下我们的 UIDL 把。 全称:UIDL 的全名是 User Interface Design Lan
3、guage,是 Ansys 中二次开发工具方面的三大金刚之一。GUI 方面几乎全部的二次开发功能都将由它运筹帷幄。 功用: 组织我们自己强大的菜单系统。想象一下我们在 Ansys 中也能轻松做出可以和 VC,VB 之类主流 GUI 开发工具媲美的菜单响应效果,Ansys 的世界将是多么的亲切、友好。 构建功能繁复的对话框。Ansys 中美观易用的 ContactWizard 对话框级联界面一定让你印象很深把,有了它,即使是最菜鸟的门外汉也能构建一流的工程算例,Ansys5.7 中的 DesignSpace 应该就是无可争辩的例证之一。虽然从 UNIX 内核上讲( Windows 下的东西是 A
4、nsys 的后期移植,很多技术还不成熟,这里就不加讨论了) ,它们多构建在繁复的 TCL 编程基础上,但我们利用强大的 UIDL 工具,也能轻松架构起我们自己的实用对话框向导。 建立自己的联机帮助Ansys 中的联机帮助(尤其是 UNIX 下的搜索引擎)非常实用,可以说是我所接触过许多有限元平台中最为好用的几种帮助平台之一。UNIX 下的关键字查询简直是帅呆了,想构建自己完善的帮助系统吗?UIDL 同样是这方面不可或缺的理想开发工具。2.2 看看 UIDL 的模样认识了这位 Ansys 二次开发中的大侠了巴,现在我们就来进一步和它交流交流,把我们的感性认识上升到理性层次中。2.2.1 UIDL
5、 控制文件总结构一个完整的 UIDL 控制文件大致如一下结构:2控制文件头结构块结构说明:任何一个 UIDL 控制文件开头都是一个控制文件头,其后接一个或多个结构块结构。2.2.2 控制文件头结构为避免鄙人在这里滔滔不绝,而读者在台下不知所云的尴尬,我们在以后的讲解中都将从一些典型结构例子入手,剖析清楚其各个部分的详细结构,当然这里从例子入手的剖析手段只能做到抛砖引玉,要想熟悉的了解各个命令的详细信息,请参阅 UIDL 手册:一个典型的控制文件头如下所示:-:F UIMENU.GRN:D Modified on %E%, Revision (SID) = 5.181.1.67 - For us
6、e 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 行。用户只需要在
7、这些位置填入 0,ANSYS在调用该文件后会自动在这些位置填入 GUI 界面的位置信息。4. :!这一行通常是用来在 UIDL 控制文件中做分隔标记的,可有可无,这里用来分隔控制文件头和结构块结构,建议在控制文件头和结构文件块之间,以及各个控制文件块之间都加一行 :!加以间隔。2.2.3 结构块结构结构块结构是一个 UIDL 控制文件的核心,它涵盖了菜单信息,命令信息,以及帮助文件信息,按照其不同的类型可划分为菜单结构块,命3令结构块和帮助结构块。一般来说函数结构块还都伴随着构建一个对话框结构。1. 结构块结构基本框架麻雀虽小,五脏俱全,让我们先看一看结构块的基本结构:头部分数据控制部分尾部分
8、2. 例子说明这里基于一个菜单结构块描述一下这些基本结构的细节,让大家有一个感性认识:-头部分:N Men_Add:S 0, 0, 0:T Menu:A Add:C :D Add数据控制部分Fnc_VADDFnc_AADDFnc_LCOMB尾部分:E END分隔:!-几点说明: 头部分 :N 行定义一唯一的结构控制块名。 :S 行定义结构控制块位置信息。用户只需在第9、16、23 行输入 0 即可,ANSYS 在调用该文件中将自动为这些域填入合适的值。 :T 行定义该结构控制块的类型,可选类型有 Menu、Cmd或者 Help。 :A 行对不同类型的结构控制块有不同的功用,在 Menu4块中通
9、常用来定义出现在 GUI 菜单上的名字。 :D 行通常用来描述该结构块的信息。 头部分中还可以带许多其他命令,例如 ANSYS 内部命令等,这里就不详述了,我们将在例子中看到其具体用法。 数据控制部分数据控制部分根据不同的结构控制块有不同的写法,但必须至少有一个数据控制行。例如在菜单结构块中我们可以在其中使用 Men_String 来调用其他菜单项,还可以使用Fnc_String 命令调用一些命令。String 对应于特定的菜单名部分或者命令名部分。其他具体细节这里就不详述了。我们将在具体实例中看到他们是如何构建实现的。 尾部分:E END 标志着一个结构块的结束。 分隔(可选)一般说来,我们
10、将在结构块和结构块之间加入 :!来间隔(可选) 。2.3 Ansys 调用 UIDL 的过程上面我们已经熟悉了整个 UIDL 控制文件的结构,可惜我们还是空有武器,鲜有用武之地,Ansys 到底是怎么使用 UIDL 的呢?搞清楚这一点,我们才能够游刃有余的控制整个 GUI 界面的定制,在这部分里我们将描述一下 Ansys 控制 UIDL 文件的过程。下面的一些设置情况都是基于工作站版本的 ANSYS5.5,其他版本的ANSYS 的设置处理也类似,这里就不加赘述了。ANSYS 在调用 GUI 界面时会自动调用 menulist55.ans 文件,该文件中描述了 UIDL 前处理器到哪里去寻找 U
11、IDL 控制文件。 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.HLP5/ansys55/docu/UIELE
12、M.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 控制文件。但其实我们有更加好的方法,一般来说我们不建议改变系统
13、 ansys55 目录里任何文件内容,以避免不必要的失误。ANSYS 本身在调用menulist55.ans 文件的方式上就提供了便于进行 UIDL 开发的机制:通常 ANSYS 按照以下顺序寻找 menulist55.ans 文件: 用户工作目录(可以在 Interactive 启动方式中设定) -用户根目录 -/ansys/docu 目录,可见只要我们在用户工作目录中编辑自己的 menulist55.ans 文件,ANSYS 将优先使用我们自己的 menulist55.ans 文件。如果生成了自己的 UIDL 控制文件,并在我们自己的 menulist55.ans 文件中指向它们,我们就能
14、实现对UIDL 的全控制。以后的实例中我们将看到通用的 UIDL 开发过程。最后要指出的是,UIDL 前处理器在处理 UIDL 控制文件后,将自动在 :I 行( 控制文件头部分 )和 :S 行(结构块的头部分)中填入相应的位置信息,并在整个文件最后写入一系列 :X 行(索引行) 。6第三章 UIDL 实例解析一3.1 问题描述:任何一个级联菜单的最底级总是调用命令,在这个实例里我们试着添加一个菜单联结,指向一个我们自己构建的命令。这个命令的构建方式我们将在实例二中给出。为方便起见,我们将在主菜单下添加一个 MyProject 菜单项,调用 MyProject 子菜单。MyProject 子菜单
15、中含有一个 DoProject 命令,该命令对一个实际问题进行优化设计,我们将在以后的实例中实现它。3.2 环境准备:1. 配置好 ANSYS 环境,这里略过。2. 在当前用户目录下建立一个子目录 UIDL-%mkdir /UIDL-3. 拷贝相应文件进入该子目录-%cp /ansys55/docu/menulist55.ans .%cp /ansys55/docu/UIMENU.GRN .%cp /ansys55/docu/UIFUNC1.GRN .%cp /ansys55/docu/UIFUNC2.GRN .-4. 编辑该子目录下文件 menulist55.ans前面我们已经看到了这个基本
16、 menulist55.ans 的内容,这里我们想使用自己的 UIDL 控制文件,而不用默认目录 /ansys55/docu 下的UIDL 控制文件,因此我们把该文件修改成如下内容:-./UIMENU.GRN./UIFUNC1.GRN./UIFUNC2.GRN/ansys55/docu/UICMDS.HLP/ansys55/docu/UICMDS.HPS/ansys55/docu/UIELEM.HLP7/ansys55/docu/UIELEM.HPS/ansys55/docu/UIGUID.HLP/ansys55/docu/UIGUID.HPS/ansys55/docu/UITHRY.HLP/
17、ansys55/docu/UITHRY.HPS/ansys55/docu/UIOTHR.HLP/ansys55/docu/UIOTHR.HPS-5. 运行测试是不是能够正常启动 ANSYS以 Interactive 方式启动,设置工作目录为刚刚创建的 UIDL 目录,并设置初始工作名为 uidl,启动 ANSYS,这是 ANSYS 的 GUI 界面应该和默认情况下启动,只不过不同的是调用的 UIDL 控制文件是当前UIDL 目录下的了(只不过两者内容相同而已) 。3.3 添加菜单:ANSYS 的浮动根菜单名字叫 MenuRoot,我们将在根菜单下添加一个菜单项 MyProject,点击这个菜单
18、项自动调用 MyProject 子菜单。MyProject 子菜单中我们将放入一个命令 DoProject,点击这个命令,将进入我们的问题处理。1. 定制 DoProject 命令这里我们把 DoProject 命令的定义写入 UIFUNC2.GRN 中,编辑UIFUNC2.GRN 文件,在其中两个结构块之间加入一个 DoProject 命令结构块:-:N Fnc_DoProject:S 86, 73, 6:T Cmd:A DoProject:D Lets goInp_P:E END:!-当然这样一个结构块什么也不干,只是一个虚块,在以后的实例中我们将完成这个命令的功能。2. 定制 MyPro
19、ject 子菜单这一步中我们把 MyProject 子菜单的定制写入 UIMENU.GRN 中,8编辑 UIMENU。GRN 文件,在其中两个结构块之间加入一个MyProject 菜单结构块:-:N Men_MyProject:S 120, 88, 25:T Menu:A MyProject:D Optimize the structure-Optimize-Fnc_DoProject:E END:!-这里-Optimize- 是出现在菜单上的静态文本,Ansys 对任何寻找不到定义的调用均当做静态文本处理。如果某子菜单中只有静态文本的话,Ansys 一般情况下将不显示这个子菜单。3. 将 M
20、yProject 子菜单加到根菜单下这里我们再次编辑 UIMENU.GRN 文件,在 MenuRoot 菜单结构块中添加到 MyProject 的链接。最后 UIMENU.GRN 的 MenuRoot 菜单结构块定义类似如下写法:-:N MenuRoot:S 433, 76, 350:T Menu:A Main Menu:D ANSYS ROOT MENUMen_UVBA_Main_T1Men_UVBA_Main_T2Men_UVBA_Main_T3Fnc_PreferencesSep_Men_PreprocMen_SolutionMen_GenlPostMen_TimePostSep_Men
21、_MyProjectSep_K_LN(alpha)9Men_DesOpt-可见我们把 Men_MyProject 子菜单链接加入到基于时间历程后处理的菜单项后。当我们重新启动 ANSYS 时看到的主菜单应该如下图(a)所示,点击 MyProject 菜单项将出现图(b)的情形。3.4 结束语上面我们看到了怎么在浮动菜单中简单添加自己定制子菜单的方法,但这个时候我们点击 DoProject 命令什么也不发生,因为我们在命令定制中就是这么设定的。以后我们将完善这个命令,让它逐渐强大起来。大家也许会问,既然定义的这个命令是空命令,那能不能索性不定义呢。答案应该是不可以,大家可以试一试删去 UIFUN
22、C2.GRN 中DoProject 函数的定义,当你点击根菜单中的 MyProject 菜单链接,MyProject 应该都不会弹出。(a) (b)10第四章 UIDL 实例解析二4.1 问题描述:如图 1(a)一所示,一带孔薄板,长 4000mm,宽 2000mm,顶部中心部分 1800mm 处承受 42MP 的压力,左右两个长圆孔中心分别踞四周 1000mm,长圆孔的具体形式如图 1(b)所示,上下分别为半圆,中部用直线衔接。这里假设长圆长轴与水平方向夹角为 。为了使得孔边缘应力集中最小,这里拟调整 的大小(-/2, /2),以便在固定的 H 情况下达到长圆孔周围应力集中最小。本章中,我们
23、将仅仅限于 UIDL 部分完成这个问题,即实现如下功能:通过菜单和对话框,用户输入参数 H 的大小,我们让 Ansys自动生产整个分析模型。4.2 环境准备及构建对话框:1. 基于上一个实验的环境,在/UIDL 目录下构建一个输入脚本,这里我们权且称其为 create.inp,该脚本能针对固定的 r、H 、 来构建出分析模型。Create.inp 脚本文件可以参看附录。2. 在文件 UIFUNC2.GRN 中任意两个结构块之间添加函数 DoProject 的定义:-:N Fnc_DoProject:S 0, 0, 0:T Command(a)图1(b)Hr图 211:A Optimize My
24、 Project:D Please Input the Custom Information:C )*SET,My_H,150Inp_NoApplyCmd_)*Cset,1,1Fld_0Typ_LabPrm_Custom the Geographic InformationFld_2Prm_ Please Input the H for Analysis(100200)Typ_INTDef_*PAR(MY_H)Cmd_)/GoCmd_)finiCmd_)/clearCmd_)*GET,My_H,CPAR,1Cmd_)/Input,create,inp:E END:!-这里我们可以清晰的看到,在
25、命令结构块中, :A 命令后的说明将出现在调用该函数的菜单项中,如图 2 所示, :D 命令后的说明将出现在我们定制的对话框标题上。几点说明: 这里我们定制了一个对话框(无拾取点线等的功能) ,在任何一个自定义的对话框中,至少应该有一个 Typ_命令,但不能有 Inp_P 命令。 本对话框由于比较简单,不需要 Apply 按钮(该按钮多用来处理复杂输入,动态刷新功能) ,因此我们设定为 Inp_NoApply 命令。 下面的 Fld_0,Fld_2 什么的都是一个个对话框域。不同的数据输入域,比方说:输入框、多选框、列表框的都必须有独立的域号,象本例中一个数值输入框域代号为 2。但所有静态文本
26、都可以写在 Fld_0 域内,因为不会出现我们调用时的冲突。这里,我们的 Fld_0 域内是 Typ_Lab 的静态文本,内容书写在 Prm_后。Fld_2 域是一个整数输入对话框域(Typ_INT) ,前面 Prm_后有一段文字说明,并设定默认值(Def_) 。图 312 下面的几行 Cmd_)后跟的都是针对这一数值输入域处理的Ansys 命令,主要功能是先清数据库,再取到域 2 内用户输入的 H 参数值,然后进行基于该参数的模型构建。3. 输出结果:这是=/4,H150 情况下自动生成的几何模型。虽然例子比较简单,但我们从中可以掌握一种 GUI 定制参数并运用到脚本建模中的技巧,掌握了这种
27、技巧,我们就不难轻松的构建各种更加复杂的模型。4.3 参数提取杂谈上面我们看到了一种比较简单有效的对话框参数提取、传递的技巧,其实在 Ansys 中参数的提取有好些方法。通常的用户命令中(比方说设定实常数等),Ansys 中由于有固定的命令与其对应,在 GUI 函数命令中 Ansys 是这样定制的,在对话框起始处给出一个 Cmd_R 命令( 这里以提取实常数命令 R 为例 ),其后对应的Fld_2、Fld_3 等域 Ansys 将自动拾取之并对应 R 命令的第二个参数、第三个参数等。但我们初学二次开发时不可能拥有自己的命令,因此这里我们弃而不用。等以后我们学习了 UPF 二次开发工具,能够定制
28、自己的命令后,我们再来回顾一下这种参数话方法。这里我们使用的是 CSET 命令和 CPAR 命令,也是一种比较简洁有效的方式。命令结构块头部分我们用 :C )*SET,My_H,150 命令在环境中设定一变量 My_H,初值为 150,并用 Def_*PAR(MY_H ) 命令指定为数值域的初值。然后用 Cmd_)*CSET,1,1 命令把第一个数值域的内容指定存储到*CSET 命令对应的一矢量数值中,其次在数值域中指定用 Cmd_)13*GET,My_H,CPAR,1 命令让参数 My_H 再把用户输入的数值域内容从该矢量数组中读回来,这样我们就有了一个用户输入的参数值 My_H,最后就可以
29、直接调用脚本文件,生成需要得到的参数化建模结果。在 UIFUNC2.GRN 中我们还可以看到其他一些参数化提取方式,比如说利用系统参数_z1_z9,用命令*GET,PAR,CMD,0,FIELD,2 来拾取命令中域 2 中的内容到自己设定的参数中。以后我们可以对各种方法都练练手,这里就不再赘述了。4.4 结束语上面我们用 UIDL 对话框的技术轻松实现了有用户化界面的参数化建模,在以后的例子中我们将对这个实例进行完善,并融入 APDL 和 UPF的内容。附录create.inp 清单:-!This is a script which can create the modal with a pa
30、rameter sita.!Clear the workspace!fini!/clear,nostart!Setup the ParametersPI=4*atan(1)sita=PI/4r=200!H=150H=My_H!Customize the Material Propertykeyw,pr_struc,1/prep7et,1,shell63r,1,120,120,120,120uimp,1,ex,dens,nuxy,2400,1.2,0.37514!Modeling!Create plate k,1,0,0k,2,2000,0k,3,2000,2000k,4,0,2000k,5,1
31、800,0k,6,1000,1000l,1,5l,5,2l,2,3l,3,4l,4,1al,1,2,3,4,5!Create hole!Create my coordinatek,7,1000+H*cos(sita),1000+H*sin(sita)k,10,1000+H*cos(sita),1000+H*sin(sita),100k,8,1000+r*cos(sita+PI/2),1000+r*sin(sita+PI/2)cskp,11,0,6,7,8csys,11!Create Holek,9,H,rl,7,9l,7,6adrag,6,7arotat,6,7,10,-90arsys,y,2
32、,3,1arsym,x,2,5,1aadd,2,3,4,5,6,7,8,9asba,1,10-15第五章 UIDL 实例解析三5.1 问题描述本章我们我们将描述 UIDL 的最后一个功能 构建我们自己的联机帮助文档。诚然联机帮助在一般的开发过程中有点无足轻重,但如果你想让你的工作更加完善、更加专业的话,建立起自己强大的帮助系统是必不可少的,这一个实例中我们将对 UIDL 实例二构建我们自己的联机帮助文档。构建完联机帮助文档后,在菜单中点击 DoProject 菜单项将显示如下对话框:看到了把,现在这个对话框中增加了一个 Help 按钮,点击这个 Help 按钮看看效果把,显示结果如下:这里的文
33、字可以任意,轻松写入任何泥想写入的帮助信息巴。下面我们就详细的说明如何建立这样的一个联机帮助。5.2 环境准备及构建联机帮助:Ansys 中的联机帮助一般有三种形式:ASCII 形式,ZBitmap 形式,16PostScript 形式。 PostScript 形式的联机帮助多是在 Unix 下和打印功能有关的,我们这里就不加详述了。ZBitmap 形式的联机文档应该是功能最强大的,应该类似于 Windows 下的 PDF 格式帮助文档把,可以在帮助文档中有图形或者文字的超级链接,构建这样的帮助文件我们得需要构建744pixels925pixels 的 XWD 格式图像,xwd 格式是 UNI
34、X 中用 xwd 工具抓图所得的一种图像格式,可惜的是这里我们崭时缺少这样能够生成固定尺寸格式的 XWD 图像文件的工具,所以这里我们也不准备仔细对它的构建方法进行描述(你可以试验用任意尺寸的 XWD 格式构建 ZBitmap 格式的帮助文档,正常情况下 Ansys 系统应该不加显示任何图片) 。这里我们在上一个实例的基础上描述一下如何建立 ASCII 形式的帮助文档。1. 在 Unix 下,构建你的帮助文档文字信息,把它存成文件 hlp_other2:ZengP Work GroupThis Project is designed by Heling.Enjoy it!2. 检查 hlp_o
35、ther2 文件字节数:Unix 下可以用命令 ls hlp_other2 或者 wc c hlp_other2 命令查看该文件的字节数,这里得出的字节数为 633. 构建帮助文件的数据控制部分,把它存成 hlp_other1Customized HelpHlp_Hlp_ASCII 63END_OF_HYPERLINKS这里的数据控制部分是有固定格式的,第一行表示帮助对话框的标题。第二行和第三行是描述该帮助文件的前端链接和后端链接。这里由于是我们自己定义的帮助文档,没有前端链接和后端链接,因此我们都把它写成 Hlp_就可以了,第四行是描述帮助文件格式、字节信息的,这里我们是 ASCII 格式,
36、字节数是上一步中得到的字节数 63(对ZBitmap 格式后面需要提供压缩后字节数和压缩前字节数两个信息,具体做法请自己参看 UIDL 帮助手册) 。以下到最后一行的END_OF_HYPERLINKS 之间是定义帮助文档之间超级链接的,由于我们这里是做 ASCII 的帮助信息,不是 ZBitmap 格式的,因此没有17任何超级链接需要定义。4. 把 hlp_other1 和 hlp_other2 合成一个文件 hlp_other%cat hlp_other1 hlp_other2 hlp_other5. 检查一下文件 hlp_other 的字节数%wc c hlp_other这个例子中得到的字
37、节数是 1166. 构建帮助文件的头信息,把它存储为 head_other:N Hlp_0_Contents:S 0, 0, 0 :T HELP 1167. 构建帮助文件尾信息,把它存储为 end:E End8. 构建帮助文件的控制文件头,把它存储为 control_other:F OTHER.HLP:D Modified on 1/17:I 0, 0, 0:!9. 构建总的帮助文件 OTHER.HLPcat control_other head_other hlp_other end OTHER.HLP10. 把我们构建好的帮助文件 OTHER.HLP 加入 menulist55.ans 中
38、去。最后 menulist55.ans 显示内容如下:./UIMENU.GRN./UIFUNC1.GRN./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.HPS18/ansys55/docu/UIOTHR.HLP/ansys55/docu/UIO
39、THR.HPS./OTHER.HLP11. 在我们的函数定义 DoProject 中加入联机帮助信息.编辑 UIFUNC2.GRN 中的 DoProject 函数定义,由于我们定制的帮助文件名为 Hlp_0_Contents,我们把它加入到函数定义中去,编辑完后该函数定义内容结果如下::N Fnc_DoProject:S 396, 147, 242:T Command:A Optimize my Project :D Please Input Custom Information:C )*Set,My_H,150:H Hlp_0_ContentsInp_NoApplyCmd_)*Cset,1,
40、1Fld_0Typ_LabPrm_Custom the Geographic InformationFld_2Prm_ Please Input the H for Analysis(100200)Typ_INTDef_*PAR(My_H)Cmd_)/GoCmd_)finiCmd_)/clearCmd_)*GET,My_H,CPAR,1Cmd_)/Input,create,inp:E END:!12. 万事具备,测试一下你自己构建的帮助文档把。5.3 几点说明从前面可以看到,一个帮助文件一般有文件控制头和若干帮助文件结19构块组成,对帮助文件结构块来说,其包含四个部分:头部分,数据控制部分,帮
41、助内容部分和尾部分。与函数说明不同的是它增加了帮助内容部分,这里存放各种格式的帮助文档,其次它需要提供许多帮助内容部分的字节信息。所以构建帮助文件的时候一般都是分块构建,不断用wc 或者 ls 命令观看字节信息,最后生成完善的帮助文件。感兴趣的同学可以自己生成强大的帮助文档信息,由于这一部分不是二次开发的重点,我们在这里也不详细讨论其细节了,利用上面的知识我们已经足以构建任何复杂的 ASCII 文档信息。5.4 结束语到这里为止,我们已经对 UIDL 的所有功能都基于例子进行了详细描述,讲到这里大家已经有足够的 UIDL 知识构建比较专业化的基于 GUI 界面的参数化建模本领了。在后续章节,我
42、们将基于 APDL 和 UPF 知识对这一例子进行优化处理实现,希望大家保持充足的兴趣继续向下学习。20第六章 解析 APDL6.1 熟悉新朋友 APDLAPDL 是我们即将结识的第二个强大二次开发工具。它的全称是 ANSYS Parametric Design Language。APDL 可以帮助你更加有效的进行分析计算,可以让你轻松自动化你的工作(循环、分支、宏等结构) ,并是一种高效的参数化建模手段。很多情况下,APDL 主要用在优化设计或者自适应网格划分中。但在日常分析中如果你知道善用,APDL 也将发挥其强大的优势,让你的工作变的生动起来。6.2 二次开发工具之间的比较APDL 所能
43、实现的功能通俗的说来应该是次于 UPF 而强与 UIDL,但实际上是由于三者具体侧重点不同造成的:UIDL 主要控制 GUI 界面的各类二次开发方法,涉及的分析部分就要少一些,APDL 可以称其为和分析部分频繁打交道的一组小型工具,功能强大,但不和 UIDL 一样能够非常具体的针对某一两方面的二次开发处理,通常情况下的他融合在分析的角角落落中。UPF 是三者之间的最强者,他能完成最复杂的二次开发工作,比如说构建新单元,复杂数据库交互,外围命令定制等,但 UPF 在很多情况下也借助了APDL 命令来完全实现其功能。同样我们也能在 UIDL 中欠入 APDL 命令,来构建比较复杂的 GUI 二次开
44、发工作。一句话,UIDL 、APDL 和 UPF 三者各有所长,密不可分。结合使用三者,我们将能够实现任何强大的分析功能。6.3 结束语我们这里对 APDL 的介绍将着重于它的一些基本功能,而不会象 UIDL那样用一组实例来完整的描述他的所有功能,当然其间也会夹杂讲述一些例子,来加强大家对 APDL 工具应用技巧。21第七章 APDL 综合实例7.1 问题说明本章在阐明 APDL 技术时本想也采取实例的方式,把 APDL 的各个细节都用一个个详细的实例说清楚,无奈 APDL 细节内容比较繁复,而且不和 UIDL 那样各成体系, APDL 的应用很多情况下都是和UIDL、UPF 结合在一起应用的,它甚至渗透到基础分析中的各个环节中,可以说也是 ANSYS 的脚本基础。考虑到大家都不会有兴趣来聆听枯燥的数组构建法,宏函数的参元特性等罗嗦的 APDL 语法,这里我们打算用一个比较大的综合实例来想大家描述一部分 APDL 的功能,从