1、大概有 7 种1.单参数输入对话框2.多参数输入对话框3.调用 ANSYS 程序已有的对话框4.宏中实现拾取操作5.程序运行进度对话框6.宏运行的消息机制7.定义工具条按钮与缩写1.单参数输入对话框*ask,par,query,dvalpar:参数名称query:向用户提示输入信息的字符串, 最多可以包含 54 个字符dval:用户用空响应时程序自动赋给该参数的值, 该值可以包括在单引号中的包含 1-8 个字符串,数值, 或者字符变量或者数值的表达式等.如果不赋值直接单击按钮则赋缺省值,用户用空格响应时则表示删除该参数.实例:建立一个中心位于坐标原点,半径等于 radius_sphere 的球
2、, 每次执行该宏文件都会提示输入球半径尺寸的对话框.不输入时候,默认为 1.finsih/clear/prep7*ask,radius_sphere,input the radius of sphere,1!*ask 命令提示输入变量sphere,radius_sphere!参数化创建球体2.多参数输入的对话框需要用 MULTIPRO 命令构造一个简单的多行提示对话框,一次最多可以包含 10 个参数的输入提示和赋值.允许使用 UIDL 中的*CSET命令来产生提示,并为每个提示指定缺省值.MULTIPRO 命令必须与以下命令联合使用:1.110 个*CSET 命令 2.最多两个*CSET 命令
3、,用来供用户填写提示信息内容.MULTIPRO 命令使用格式:multipro,strat,prompt_num*cset,strt_loc,end_loc,param_name,prompt_string,def_valuemultipro,endstart:第一个参数, 该标识符用于标识 multipro 结构开始,固定不变且必须包括在单引号中.prompt_num:一个整型数,等于 multipro 命令后*cset 参数输入提示行的数目,至少有一个*cset 命令省略了 def_value 参数或def_value 为 0 时候,才必须用到该参数.str_loc,end_loc:初始化
4、参数提示信息的起始与终止位置参数,对于第一个*cset 命令的设置是strt_loc 参数的初始值为1,end_loc 的值为 strt_loc+2(对第一个*cset 命令, 值为 3),接下来的 *cset 命令的 strt_loc 是前一个*cset 命令的 end_loc 加上 1,其他类推.param_name:参数名,用来存储用户输入的参数值 ,若用户不输入任何值,则采用缺省def_value 值prompt_string:字符串,最多可包含 32 字符,用来描述参数意义, 必须括在单引号内,做提示信息.end:最后一个参数 ,用来标识 multipro 结构结束, 固定不变,并必
5、须包含在单引号中.多参数输入语句块在运行时,弹出一个多参数输入对话框,同时窗口包含 3 个按钮,即ok,cancel 和 help.运行过程中,选择那个按钮时通过检查对话框按钮 _button 参数的值来确定按钮的状态.下面时_button 参数的取值及其对应的按钮状态.0-表示按下了 ok,1-表示按下了 cancel利用按钮_button 参数的值可以编写选择不同按钮时程序应当做出的不同的操作,就可以实现不同的流程,保证宏文件具有完整的分析处理流程.另外, 该参数输入对话框最多可以向该结构中添加 2 行字符 (共 64 个字符), 用力提示*cset 命令.这种特殊的*cset 命令使用格
6、式如下:*cset,61,62,help_string,help_string*cset,63,64,help_string,help_string其中help_string最多可以包含 32 个字符的字符串, 如果提示超过 32 个字符, 可以使用第二个help_string 参数实例:利用多参数输入对话框分别输入材料的弹性模量,泊松比,密度大小,然后自动定义 1 号材料属性.finish/clear/prep7multipro,start,3!多参数输入对话框*cset,1,3,ex_mat,youngs modulus(pa),2.1e11*cset,4,6,nuxy_mat,poiss
7、ons ration,0.3*cset,7,9,dens_mat,density(kg/m3)7800*cset,61,62,enter the attributes of,material 1*cset,63,64,note:unit of each parameter!,multipro,endmp,ex,1,ex_matmp,nuxy,1,nuxy_matmp,dens,1,dens_matmplist,all,evlt!列表显示材料属性3.调用 ansys 中已有的对话框在宏文件中,ansys 如果碰到一个对话框 UIDL 函数名( 如 fnc_uimp_iso)时, 就会显示对应的对
8、话框. 所以,可以通过在宏中把该函数名写为单独的一行来调用 ansys 程序已有的对话框, 关闭弹出对话框后程序举行执行宏的下一行命令.在调用 ansys 已有的对话框时候要记住,许多对话框都有一个独立的关联号,包括激活有效的处理器和该对话框有效时候应当具备的条件等.注意:如果宏中包含有 GUI 函数 ,该宏中的第一条命令应为/pmacro 命令.该命令将使宏的内容被写入日志文件中,这一点很重要.如果省略了/pmacro 命令,ansys 并不将任务日志文件读到 ansys 任务重执行环境中去.范例:下面使 test_fnc.mac 的内容,在该宏的内部调用了 ansys 中已有的 GUI 函
9、数 fnc_block,从而实现调用长方体定义对话框定义长方体的目的.test_fnc.mac 的内容如下:finish/clear/pmacro!这命令将宏的内容写入日志文件中,没有改行则出错./prep7fnc_block!create block by dimensions在命令输入窗口运行宏 teat_fnc.mac4,宏中实现拾取操作如果在宏中包含一条拾取命令,就可以调用 ansys 的 GUI 拾取菜单,许多 ansys 命令( 例如 K,P)接受输入“p“参数,一鞭进行图形拾取操作, 当 ansys 碰到这样一条命令时,就将显示正确的拾取对话框,在用户单击 ok 或 cancel
10、 后,ansys 将继续运行该宏,不过,有些拾取命令在有些 ansys处理器中不可用,因此在调用这些命令之前需要先转换到合适的处理器中.实例:宏 test_pick.mac 中调用拾取关键点建立 3 条直线, 然后通过 3 条直线创建一个面.宏文件内容如下:finish/clear/pmacro!该命令将宏内容写入日志内容中,没有该行将出错./prep7k,1k,2,2k,3,0,2l,p!弹出拾取关键点 1 对话框,选择关键点 1 和 2,单击 apply 按键!接着选择关键点 2 和 3 对话框, 单击 apply 按键!al,p!弹出拾取线对话框,选择 1,2,3,单击 ok5,程序运行
11、进度对话框在宏中可以通过插入命令来定义一个 ansys 对话框, 该对话框包含一个显示运行进程的状态条,一个可用来终止运行的 stop 按钮, 或者两者都包含,通过*abset 命令来定义状态对话框, 其使用格式如下:*abset,title40,itemtitle40:文本串,显示在状态条的对话框中,最多可包含 40 个字符 .item:显示项控制参数,可以取以下的值:1-bar 表示显示状态条,不显示 stop 按键2-kill 表示显示 stop 按钮, 不显示状态条3-both 表示状态条和 stop 按钮都显示通过*ABCHECK 命令来更新状态条,其使用格式如下:*ABCHECK,
12、Percent,NewTitlepercent:一个在 0100 间的整数, 用来确定状态条的位置newtitle:一个含 40 个字符的字符串,表示进程信息, 其内容将取代 title40 中的字符串.如果*abset 命令中的参数 item 指定为 kill 或 both,那么该宏将在每次执行完*ABCHECK 命令后检查_ERROR 参数, 此时如果用户按了stop 按键 ,就会执行相应的动作.可以通过*ABFINI 命令从 ANSYS GUI 中移走状态条.范例:宏 test_process.mac 演示如何使用状态条( 包括 stop 按钮), 在运行过程中将显示状态对话框, 随程序
13、的执行状态条显示进程不断发展.(注意, 宏将检查_error 参数,如果用户按了 stop按钮, 就会显示“we are stopped.“消息,另外,在一个循环内 ,调用*ABCHECK 的次数不能超过20 次 )宏 test_process.mac 内容如下:finish/clear,nost/prep7n,1,1n,1000,1000fill*abset,this is a status bar,bothmyparam=0*do,i,1,20j=5*i*abcheck,j*if,_return,gt,0,thenmyparam=1*endif*if,myparam,gt,0,exit/a
14、ng,jnplot,1*if,_return,gt,0,thenmyparam=1*endif*if,myparam,gt,0,exitnlist,all*if,_return,gt,0,thenmyparam=1*endif*if,myparam,gt,0,exit*enddo*if,myparam,gt,0,then*msg,uiwe are stopping*endif*abfinishfinish6,宏运行的消息机制在宏中运行*MSG 命令调用 ANSYS 的消息子程序来显示定制的输出消息.*MSG 命令的使用格式如下:*msg,lab,val1,val2,val3,val4,val5
15、,val6,val7,val8lab:输入和终止控制的标识字.INFO-所写的消息不带标题.NOTE-所写的消息带标题“note“.WARN-所写的消息带标题“warning“,并把该消息写入出错文件 jobname.err 中.ERROR-所写的消息带标题“error“,并把该消息写入出错文件 jobname.err 中.如果处于 ansys批处理运行模式,该标识字在最初的“clean exit“处终止运行.FATAL-所写的消息带标题“fatal error“,并把该消息写入出错文件 jobname.err 中.该标识字出现后会立即终止 ansys 运行.UI-所写的消息带标题“note“
16、,并在消息对话框中显示该消息.VAL1-VAL8 是该消息中包含的数字或字符值 ,是消息显示参数的结果, 所有数值结果都为双浮点数.另外, 必须在 *MSG 命令之后马上指定消息输出的格式.消息格式最多可包含 80 个字符,包括文本串和在文本串之间预定义的“数据描述符“,在文本串和文本串之间将插入数字或字符数据.数据描述符有以下几种 :%i-整型数据,%g-双浮点数据,%c- 字符数据,%/- 一行结束对于前三个描述符,FORTRAN 中对应的数据描绘符分别为 19,1PG16.9 和 A8.在每个描述符前要有一个空格.必须为每个指定数据值(最多为 8 个)按顺序提供一个数据描述符. 在*MS
17、G 格式行中不要以*IF,*ENDIF,*ELSE 和*ELESIF 开头.如果消息中最后一个非空格字符是一个也可以在命令输入窗口或者宏中当作命令使用.关于缩写的操作有 3 中: 创建,编辑和删除缩写,存储缩写到缩写文件中以及从缩写文件中恢复缩写.首先, 介绍创建, 编辑和删除缩写的方法 .利用*ABBR 命令或者等价菜单路径 utility menumacroedit abbreviations 或者 utility menumenuctrlsedit toolbar 进行创建.建议最好通过菜单项生成缩写,原因有 2 点:1 单击 ok 按钮就自动更新工具条.如果用*ABBR 命令进行创建,
18、那么需要选择菜单 utility menumenuctrlsupdate toolbar 将新创建得缩写显示到工具条上.2 可以方便地编辑已经创建地缩写.另外, 命令 *ABBR 的使用格式如下 :*ABBR,Abbr,stringabbr:显示在工具条上的缩写名,最多可包含 8 个字符.string:Abbr 所代表的 ANSYS 命令,系统 UIDL 函数名或宏名的缩写字符串.如果*ABBR 命令的值域 string 是一个宏名,那么该宏必须放在指定的宏搜索路径下.如果 String 是 ANSYS 的 UIDL创建的系统拾取菜单或对话框的函数名,那么就指定为“Fnc_string“形式.
19、string 最多可包含 60个字符,当不能包含字符 “$“,命令 C*,/COM,/GOPR,/NOPR,/QUIT,/UI 或*END工具条最多只能包含 100 个缩写, 但可以通过嵌套工具条来使这个数目得到极大贯彻 .范例 1:在缺省条件下启动 ANSYS 时,工具条已经包含 5 个按钮 ,其中前 4 个分别利用*ABBR命令预定义的缩写如下:*ABBR,SAVE_DB,SAVE*ABBR,RESUM_DB,RESUME*ABBR,QUIT,Fnc_/EXIT*ABBR,POWRGRPH,Fnc_/GRAPHICS范例 2:创建一个缩写 Notepad 代表运行操作系统的记事本即执行 n
20、otepad.exe 文件打开一个记事本,并将它增加到工具条中.选择菜单路径 utility menumacroedit abbreviations 或者utitlity menumenuctrledit toolbar,在 selelction 输入文本框中键入*ABBR,NOTEPAD,/SYS,notepad.exe然后, 单击 accept 按钮, 该语句马上显示在对话框的 currently defined abbreviations 列表框中,此时工具条按钮上自动增加一个新按钮 NOTEPAD,该按钮就是刚刚定义的缩写按钮 .存储与恢复工具条按钮缩写在 ANSYS 环境中并不会自动
21、被保存起来,每次退出后上次创建的缩写及其对应的工具条按钮自动消失,必须重新定义.为了能在以后可以反复利用预定义的缩写,可以把这些缩写保存到一个文件中,下次只需要重新进行加载, 即可.利用 ABBSAV 或者 utility menumarcosave abbr 或者 utility menumenuctrlssave toolbar 保存ABBSAV,lab,Fname,ext LabLab:存储缩写或工具条的标识字,缺省时将所有缩写写入指定的文件中,即设置为 ALLFname 是存储缩写的文件名及其路径,最大长度不超过 250 个字符.如果不指定文件路径,默认存储到当前工作目录下,如果不输入
22、文件名, 则缺省为当前工作名.Ext:文件扩展名,最大长度不超过 8 个字符, 缺省扩展名为 ABBR.利用 ABBRES 或者 utility menumacrorestore Abbr 或者 utility menumenuctrlsrestore toolbarABBRES,Lab,Fname,ExtLab:从缩写存储文件中恢复缩写或工具条的标识字,NEW-缺省,表示读入的缩写完全代替系统已有的缩写,原有的被完全清除.CHANGE-如果恢复时系统中存在同名缩写则代替已有的缩写 ,不同名的仍然保留,Fname 是存储缩写的文件名及其路径,最大长度不超过 250 个字符.如果不指定文件路径,
23、默认存储到当前工作目录下.Ext:文件扩展名,最大长度不超过 8 个字符, 缺省扩展名为 ABBR.范例:ABBSAB,My_abbr,ABBR,c:tempABBRES,new,My_abbr,ABBR,c:temp嵌套工具条缩写一个工具条最多可以包含 100 个缩写, 但是可以通过嵌套工具条扩展这一个数目 .前面介绍过可以保存所写和恢复的缩写,这一特征可以实现嵌套缩写.在一个工具条按钮下定义一个恢复缩写文件的缩写.通过定义缩写来恢复缩写文件,并在这些缩写存储文件中包含缩写,就可以在某个特定的 ANSYS 中定义不受数目限制的缩写定义.甚至可通过嵌套一些缩写文件把这一方法扩展到产生自己的菜单层次.在实现菜单层次过程中,最好在每一个文件中添加一个“return“按钮的缩写以通过菜单返回.范例:下面的命令定义 PREP_ABR 作为一个缩写, 该缩写从文件 prep.abbr 中恢复缩写,prep_abr 作为一个按钮显示在工具条上,单击它时,工具条中的按钮将被文件 prep.abbr 中所定义的另一套按钮所代替.命令如下:*ABBR,PREP_ABR,ABBRES,PREP,ABBR