桥头堡 门户 查看主题

ansys定制用户化的图形交互界面

发布者: 西风独自凉 | 发布时间: 2011-4-8 16:42| 查看数: 5182| 评论数: 1|帖子模式


大概有7种
1.单参数输入对话框
2.多参数输入对话框
3.调用ANSYS程序已有的对话框
4.宏中实现拾取操作
5.程序运行进度对话框
6.宏运行的消息机制
7.定义工具条按钮与缩写

1.单参数输入对话框
*ask,par,query,dval
par:参数名称
query:向用户提示输入信息的字符串,最多可以包含54个字符
dval:用户用空响应时程序自动赋给该参数的值,该值可以包括在单引号中的包含1-8个字符串,数值,或者字符变量或者数值的

表达式等.如果不赋值直接单击按钮则赋缺省值,用户用空格响应时则表示删除该参数.
实例:
建立一个中心位于坐标原点,半径等于radius_sphere的球,每次执行该宏文件都会提示输入球半径尺寸的对话框.不输入时候,

默认为1.
finsih
/clear
/prep7
*ask,radius_sphere,input the radius of sphere,1
!*ask命令提示输入变量
sphere,radius_sphere
!参数化创建球体

2.多参数输入的对话框
需要用MULTIPRO命令构造一个简单的多行提示对话框,一次最多可以包含10个参数的输入提示和赋值.允许使用UIDL中的*CSET
命令来产生提示,并为每个提示指定缺省值.
MULTIPRO命令必须与以下命令联合使用:1.1~10个*CSET命令  2.最多两个*CSET命令,用来供用户填写提示信息内容.
MULTIPRO命令使用格式:
multipro,'strat',prompt_num
*cset,strt_loc,end_loc,param_name,'prompt_string',def_value
multipro,'end'


'start':第一个参数,该标识符用于标识multipro结构开始,固定不变且必须包括在单引号中.
prompt_num:一个整型数,等于multipro命令后*cset参数输入提示行的数目,至少有一个*cset命令省略了def_value参数或
def_value为0时候,才必须用到该参数.
str_loc,end_loc:初始化参数提示信息的起始与终止位置参数,对于第一个*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结构结束,固定不变,并必须包含在单引号中.
多参数输入语句块在运行时,弹出一个多参数输入对话框,同时窗口包含3个按钮,即ok,cancel和help.运行过程中,选择那个按钮时通过检查对话框按钮_button参数的值来确定按钮的状态.
下面时_button参数的取值及其对应的按钮状态.0-表示按下了ok,1-表示按下了cancel
利用按钮_button参数的值可以编写选择不同按钮时程序应当做出的不同的操作,就可以实现不同的流程,保证宏文件具有完整的分析处理流程.
另外,该参数输入对话框最多可以向该结构中添加2行字符(共64个字符),用力提示*cset命令.这种特殊的*cset命令使用格式如下:
*cset,61,62,'help_string','help_string'
*cset,63,64,'help_string','help_string'

其中'help_string'最多可以包含32个字符的字符串,如果提示超过32个字符,可以使用第二个help_string参数
实例:
利用多参数输入对话框分别输入材料的弹性模量,泊松比,密度大小,然后自动定义1号材料属性.
finish
/clear

/prep7
multipro,'start',3
!多参数输入对话框
*cset,1,3,ex_mat,'youngs modulus(pa)',2.1e11
*cset,4,6,nuxy_mat,'poissons ration',0.3
*cset,7,9,dens_mat,'density(kg/m^3)'7800
*cset,61,62,'enter the attributes of','material 1'
*cset,63,64,'note:unit of each parameter!',''
multipro,'end'

mp,ex,1,ex_mat
mp,nuxy,1,nuxy_mat
mp,dens,1,dens_mat

mplist,all,,,evlt
!列表显示材料属性

3.调用ansys中已有的对话框
在宏文件中,ansys如果碰到一个对话框UIDL函数名(如fnc_uimp_iso)时,就会显示对应的对话框.所以,可以通过在宏中把该函数名写为单独的一行来调用ansys程序已有的对话框,关闭弹出对话框后程序举行执行宏的下一行命令.在调用ansys已有的对话框时候要记住,许多对话框都有一个独立的关联号,包括激活有效的处理器和该对话框有效时候应当具备的条件等.
注意:如果宏中包含有GUI函数,该宏中的第一条命令应为/pmacro命令.该命令将使宏的内容被写入日志文件中,这一点很重要.
如果省略了/pmacro命令,ansys并不将任务日志文件读到ansys任务重执行环境中去.
范例:
下面使test_fnc.mac的内容,在该宏的内部调用了ansys中已有的GUI函数fnc_block,从而实现调用长方体定义对话框定义长方体的目的.test_fnc.mac的内容如下:
finish
/clear

/pmacro
!这命令将宏的内容写入日志文件中,没有改行则出错.
/prep7
fnc_block
!create block by dimensions

在命令输入窗口运行宏teat_fnc.mac

4,宏中实现拾取操作
如果在宏中包含一条拾取命令,就可以调用ansys的GUI拾取菜单,许多ansys命令(例如K,,P)接受输入"p"参数,一鞭进行图形拾取操作,当ansys碰到这样一条命令时,就将显示正确的拾取对话框,在用户单击ok或cancel后,ansys将继续运行该宏,不过,有些拾取命令在有些ansys处理器中不可用,因此在调用这些命令之前需要先转换到合适的处理器中.
实例:宏test_pick.mac中调用拾取关键点建立3条直线,然后通过3条直线创建一个面.宏文件内容如下:
finish
/clear

/pmacro
!该命令将宏内容写入日志内容中,没有该行将出错.
/prep7
k,1
k,2,2
k,3,0,2
l,p
!弹出拾取关键点1对话框,选择关键点1和2,单击apply按键
!接着选择关键点2和3对话框,单击apply按键
!al,p
!弹出拾取线对话框,选择1,2,3,单击ok


5,程序运行进度对话框
在宏中可以通过插入命令来定义一个ansys对话框,该对话框包含一个显示运行进程的状态条,一个可用来终止运行的stop按钮,或者两者都包含,

通过*abset命令来定义状态对话框,其使用格式如下:
*abset,title40,item
title40:文本串,显示在状态条的对话框中,最多可包含40个字符.
item:显示项控制参数,可以取以下的值:
1-bar表示显示状态条,不显示stop按键
2-kill表示显示stop按钮,不显示状态条
3-both表示状态条和stop按钮都显示

通过*ABCHECK命令来更新状态条,其使用格式如下:
*ABCHECK,Percent,NewTitle
percent:一个在0~100间的整数,用来确定状态条的位置
newtitle:一个含40个字符的字符串,表示进程信息,其内容将取代title40中的字符串.
如果*abset命令中的参数item指定为kill或both,那么该宏将在每次执行完*ABCHECK命令后检查_ERROR参数,此时如果用户按了
stop按键,就会执行相应的动作.
可以通过*ABFINI命令从ANSYS GUI中移走状态条.
范例:宏test_process.mac演示如何使用状态条(包括stop按钮),在运行过程中将显示状态对话框,随程序的执行状态条显示进程不断发展.(注意,宏将检查_error参数,如果用户按了stop按钮,就会显示"we are stopped..."消息,另外,在一个循环内,调用*ABCHECK的次数不能超过20次)
宏test_process.mac内容如下:
finish
/clear,nost
/prep7
n,1,1
n,1000,1000
fill
*abset,'this is a status bar',both
myparam=0

*do,i,1,20
j=5*i
*abcheck,j

*if,_return,gt,0,then
myparam=1
*endif

*if,myparam,gt,0,exit
/ang,,j
nplot,1

*if,_return,gt,0,then
myparam=1
*endif

*if,myparam,gt,0,exit
nlist,all

*if,_return,gt,0,then
myparam=1
*endif

*if,myparam,gt,0,exit
*enddo
*if,myparam,gt,0,then
*msg,ui
we are stopping......
*endif
*abfinish
finish


6,宏运行的消息机制
在宏中运行*MSG命令调用ANSYS的消息子程序来显示定制的输出消息.*MSG命令的使用格式如下:
*msg,lab,val1,val2,val3,val4,val5,val6,val7,val8
lab:输入和终止控制的标识字.
INFO-所写的消息不带标题.
NOTE-所写的消息带标题"note".
WARN-所写的消息带标题"warning",并把该消息写入出错文件jobname.err中.
ERROR-所写的消息带标题"error",并把该消息写入出错文件jobname.err中.如果处于ansys批处理运行模式,该标识字在最初的

"clean exit"处终止运行.
FATAL-所写的消息带标题"fatal error",并把该消息写入出错文件jobname.err中.该标识字出现后会立即终止ansys运行.
UI-所写的消息带标题"note",并在消息对话框中显示该消息.

VAL1-VAL8是该消息中包含的数字或字符值,是消息显示参数的结果,所有数值结果都为双浮点数.
另外,必须在*MSG命令之后马上指定消息输出的格式.消息格式最多可包含80个字符,包括文本串和在文本串之间预定义的"数据
描述符",在文本串和文本串之间将插入数字或字符数据.数据描述符有以下几种:
%i-整型数据,%g-双浮点数据,%c-字符数据,%/-一行结束

对于前三个描述符,FORTRAN中对应的数据描绘符分别为19,1PG16.9和A8.在每个描述符前要有一个空格.必须为每个指定数据值(最多为8个)按顺序提供一个数据描述符.
在*MSG格式行中不要以*IF,*ENDIF,*ELSE和*ELESIF开头.如果消息中最后一个非空格字符是一个&,那么ANSYS把下一行当作*MSG格式的延续.最多可以用10行(包括第一行)来确定格式信息.连续的空格输出将被压缩成一个空格,并追加一个句点.产生的输出最多可以达到10行,每行最多包含72个字符.
范例1:利用*MSG命令显示一条包含一个字符数据,两个整型数和一个实数的消息.命令如下:
*MSG,ui,'inner',25,1.2,148
radius(%c)=%i,thick=%g,length=%i

在ansys的输出窗口中显示
radius(inner)=25,thick=1.2,length=148
范例2:在消息窗口同时显示多个消息.命令流如下:
*msg,ui,vcoilrms,thtav,icoilrms,thtai,papprnt,pelec,pf,indctnc
coil rms voltage,rms current,apparent pwr,actual pwr,pwr factor:%/&
vcoil= %g v(electrical angle= %g deg)%/&
icoil=%g a(electrical angle=%g deg)%/&
apparent power=%g w%&
actual power=%g w%&
power factor:%g%/&
inductance=%g%/

values are for entire coil(not just the modeled sector)

7,定制工具条与缩写
ansys工具条区域,缺省条件下包含5个按钮,分别SAVE_DB,RESUM_DB,QUIT,POWRGRPH和E-CAE,依次用于按工作文件名存储数据库文件,按工作文件名恢复数据库文件,退出ANSYS,设置图形显示模式和进入ANSYS e-CAE.com服务系统.
工具条的按钮都是ANSYS的命令,宏和系统UIDL函数名的缩写.
定制用户化工具条按钮
缩写是ANSYS命令,系统UIDL函数名或宏名的别名,最多可包含8个字符.定义好的缩写可以以按钮的形式显示在ansys的工具条toolbar中,通过单击该按钮执行缩写预定义的操作;也可以在命令输入窗口或者宏中当作命令使用.
关于缩写的操作有3中:创建,编辑和删除缩写,存储缩写到缩写文件中以及从缩写文件中恢复缩写.
首先,介绍创建,编辑和删除缩写的方法.利用*ABBR命令或者等价菜单路径utility menu>macro>edit abbreviations或者utility menu>menuctrls>edit toolbar进行创建.建议最好通过菜单项生成缩写,原因有2点:
1单击ok按钮就自动更新工具条.如果用*ABBR命令进行创建,那么需要选择菜单utility menu>menuctrls>update toolbar将新创建得缩写显示到工具条上.
2可以方便地编辑已经创建地缩写.
另外,命令*ABBR的使用格式如下:
*ABBR,Abbr,string
abbr:显示在工具条上的缩写名,最多可包含8个字符.
string:Abbr所代表的ANSYS命令,系统UIDL函数名或宏名的缩写字符串.如果*ABBR命令的值域string是一个宏名,那么该宏必须放在指定的宏搜索路径下.如果String是ANSYS的UIDL创建的系统拾取菜单或对话框的函数名,那么就指定为"Fnc_string"形式.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代表运行操作系统的记事本即执行notepad.exe文件打开一个记事本,并将它增加到工具条中.选择菜单路径utility menu>macro>edit abbreviations或者utitlity menu>menuctrl>edit toolbar,在selelction输入文本框中键入*ABBR,NOTEPAD,/SYS,notepad.exe
然后,单击accept按钮,该语句马上显示在对话框的currently defined abbreviations列表框中,此时工具条按钮上自动增加一个新按钮NOTEPAD,该按钮就是刚刚定义的缩写按钮.
存储与恢复工具条按钮
缩写在ANSYS环境中并不会自动被保存起来,每次退出后上次创建的缩写及其对应的工具条按钮自动消失,必须重新定义.为了能在以后可以反复利用预定义的缩写,可以把这些缩写保存到一个文件中,下次只需要重新进行加载,即可.
利用ABBSAV或者utility menu>marco>save abbr或者utility menu>menuctrls>save toolbar保存
ABBSAV,lab,Fname,ext Lab
Lab:存储缩写或工具条的标识字,缺省时将所有缩写写入指定的文件中,即设置为ALL
Fname是存储缩写的文件名及其路径,最大长度不超过250个字符.如果不指定文件路径,默认存储到当前工作目录下,如果不输入文件名,则缺省为当前工作名.
Ext:文件扩展名,最大长度不超过8个字符,缺省扩展名为ABBR.
利用ABBRES或者utility menu>macro>restore Abbr或者utility menu>menuctrls>restore toolbar
ABBRES,Lab,Fname,Ext
Lab:从缩写存储文件中恢复缩写或工具条的标识字,NEW-缺省,表示读入的缩写完全代替系统已有的缩写,原有的被完全清除.CHANGE-如果恢复时系统中存在同名缩写则代替已有的缩写,不同名的仍然保留,
Fname是存储缩写的文件名及其路径,最大长度不超过250个字符.如果不指定文件路径,默认存储到当前工作目录下.
Ext:文件扩展名,最大长度不超过8个字符,缺省扩展名为ABBR.
范例:
ABBSAB,,'My_abbr','ABBR','c:\temp\'
ABBRES,new,'My_abbr','ABBR','c:\temp\'

嵌套工具条缩写
一个工具条最多可以包含100个缩写,但是可以通过嵌套工具条扩展这一个数目.前面介绍过可以保存所写和恢复的缩写,这一特征可以实现嵌套缩写.在一个工具条按钮下定义一个恢复缩写文件的缩写.通过定义缩写来恢复缩写文件,并在这些缩写存储文件中包含缩写,就可以在某个特定的ANSYS中定义不受数目限制的缩写定义.甚至可通过嵌套一些缩写文件把这一方法扩展到产生自己的菜单层次.在实现菜单层次过程中,最好在每一个文件中添加一个"return"按钮的缩写以通过菜单返回.
范例:下面的命令定义PREP_ABR作为一个缩写,该缩写从文件prep.abbr中恢复缩写,prep_abr作为一个按钮显示在工具条上,单击它时,工具条中的按钮将被文件prep.abbr中所定义的另一套按钮所代替.命令如下:
*ABBR,PREP_ABR,ABBRES,,PREP,ABBR


最新评论

dod1232004 发表于 2013-3-25 21:05:03
谢谢指教,学习了
 
 
  • QQ:56984982
  • 点击这里给我发消息
    电话:13527553862
    站务咨询群桥头堡站务咨询桥梁专业交流群:
    中国桥梁专业领袖群
    工作时间
    8:00-18:00