您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > ansys培训第二天
TrainingManualNovember1,2002Inventory#00175514-1宏TrainingManualNovember1,2002Inventory#00175514-2内容1.宏概述6.运行宏2.命名规则7.总体/局部变量3.宏搜索路径8.流程控制4.创建宏9.加密宏5.创建宏库TrainingManualNovember1,2002Inventory#00175514-3概述•APDL最强有力的特征之一是创建宏的能力。•宏就是一系列贮存在一个文件中的ANSYS命令•利用宏可以创建自定义的ANSYS命令–例如:求断裂参数•常用宏特性:–假如命令流文件取扩展名MAC,则可以直接象ANSYS命令一样运行–可以接受参数–分支和循环用来控制一系列命令–交互式特征如图形拾取,提示,以及对话框–宏可以嵌套――一个宏引用第二个宏,第二个宏引用第三个宏,等等―一直可嵌套20级。TrainingManualNovember1,2002Inventory#00175514-4宏可以调用的对象•ANSYS命令•GUI函数•将参数传给其它的宏TrainingManualNovember1,2002Inventory#00175514-5宏文件命名规则•文件名不能超过32个字符•文件名不能以数字开头•扩展名不能超过8个字符–如果想和ANSYS命令一样执行宏,则扩展名应为mac•不能与ANSYS内部命令同名–可以在命名之前,在命令窗口敲入测试•文件名或文件扩展名中不能包含空格•不能包含当前文件系统禁止使用的字符TrainingManualNovember1,2002Inventory#00175514-6宏搜索路径1.ANSYSnn\docu目录ProgramFiles\AnsysInc\Vnn\ANSYS\apdl目录2.ANSYS_MACROLIB环境变量指定路径3./PSEARCH指定路径–UtilityMenuMacroMacroSearchPath4.用户注册目录(homedirectory)5.当前目录TrainingManualNovember1,2002Inventory#00175514-7创建宏•既然宏是一系列保存在文本文件中的ANSYS命令,那么可以用任何一种文本编辑器来创建和编辑一个宏.–比如UltraEdit–这是一个最通用的方法,比较适合于很长且复杂的宏–一个平台上生成的宏可以在任何平台上使用–用这种方法创建宏时,不要包含有*CREATE和*END命令•除此之外,用户可以在ANSYS程序内部创建宏,有四种方法:–*CREATE命令–*CFOPEN、*CFWRITE和*CFCLOS命令–/TEE命令–GUI中UtilityMenuMacroCreateMacroTrainingManualNovember1,2002Inventory#00175514-8在ANSYS中创建宏-*CREATE•执行*CREATE命令后,ANSYS将接收的所有命令输出到由*CREATE命令指定的文件中,直到接收到*END命令时为止–如果已存在同名文件,将被覆盖*CREATE,matprop,mace=2.07e11density=7835MP,EX,1,eMP,NUXY,1,.27MP,DENS,1,densityMP,KXX,1,42*END•命令中用到的所有参数都会被写入文件(参数的当前值不被替代)•不能在DO循环中使用*CREATE命令TrainingManualNovember1,2002Inventory#00175514-9在ANSYS中创建宏-*CFWRITE•首先用*CFOPEN命令来指定宏文件名•只有以*CFWRITE命令开头的命令行才会被写入指定文件中–其他输入的命令则即时运行•参数被当时的值所代替*cfopen,testcf,txta=1$b=2$c=3*cfwrite,block,,a,,b,,c*cfclos实际写入的命令为block,,4,,2.5,,2•关闭宏文件,执行*CFCLOS命令TrainingManualNovember1,2002Inventory#00175514-10在ANSYS中创建宏-/TEE•执行/TEE,NEW或/TEE,APPEND可以让ANSYS把接收的命令重定向输出到该命令指定的文件中–同时执行这些命令•直到执行/TEE,END命令此动作终止/TEE,Label,Fname,Ext•若存在与/TEE,NEW指定文件的同名文件,将覆盖该文件–可以使用/TEE,APPEND来避免TrainingManualNovember1,2002Inventory#00175514-11在ANSYS中创建宏-GUI•UtilityMenuMacroCreateMacro–不能打开并编辑已存在的宏–若在*CREATE域输入一个已经存在的宏名,将覆盖TrainingManualNovember1,2002Inventory#00175514-12创建宏库•宏库文件包含一批宏•用*CREATE命令或文本编辑器创建•宏库文件没有明确的文件扩展名•每个宏的开始处都有一个宏名,并以一个/EOF命令结束宏库文件的结构为:MACRONAME1…/EOFMACRONAME2…/EOFMACRONAME3…./EOFmybloc/prep7/view,,-1,-2,-3block,,4,,3,,2finish/EOFmysphere/prep7/view,,-1,-2,-3sphere,1finish/EOFTrainingManualNovember1,2002Inventory#00175514-13运行宏和宏库文件UtilityMenuFileReadInputfrom/INPUT,Fname,Ext,Dir,LINE,LOGUtilityMenuMacroExecuteMacro(无论扩展名,可带路径)*USE,Name32Char,ARG1,…,ARG9,AR10,…,AR18在命令输入窗口运行宏搜索路径中扩展名为.mac(命令)*ULIB,Fname,Ext,Dir用*USE命令去访问包含在指定宏库文件中的宏执行*ULIB命令后,不能用*USE命令去访问没有包含在指定宏库文件中的宏TrainingManualNovember1,2002Inventory#00175514-14总体/局部变量总体变量:在所有流程中均可引用的变量ANSYS预定义两套特殊命名的局部变量:传递命令行变量到宏内•共19个标量ARG1~AR19•*USE只传递前18个标量•*.mac可传19个标量仅在宏内使用•最多由AR20~AR99共79个•不会传入调用的宏中•调用宏完毕恢复该文件中定义的值TrainingManualNovember1,2002Inventory#00175514-15将变量传递到宏•ARG1到AR19用于将参数值从调用宏传递到被调用宏中–局部有效–数值;–文字数字字符串(括在单引号中,最多8个字符);–数字或字符参数;–参数表达式/prep7/view,,-1,-2,-3block,,arg1,,arg2,,arg3sphere,arg4vsbv,1,2finish运行:mymacro,4,3,2.2,1TrainingManualNovember1,2002Inventory#00175514-16流程控制除了顺序执行命令之外,ANSYS提供了丰富的执行流程控制,这些控制与有限元分析结合起来,能为用户的分析提供极大的灵活性,适应性,并发挥创造力1.Do-loop循环控制2.条件分支3.无条件分支4.宏嵌套(子程序)5.重复执行命令TrainingManualNovember1,2002Inventory#00175514-17*do循环•按指定的次数循环执行一系列的命令–*DO和*ENDDO•也可以通过与*IF联用增强循环控制:–*CYCLE:跳到do-loop的结尾并开始下一循环–*EXIT:跳到do-loop的结尾并终止do-loop•其他循环:*DOWHILE–*DOWHILE,Parm–只要Parm为真,循环将不停进行下去。*DO,I,1,5!I=1to5;LSREAD,I!读取载荷步文件IOUTPR,ALL,NONE!改变输出控制ERESX,NOLSWRITE,I!重写载荷步文件I*ENDDO*DO,Par,IVAL,FVAL,INC…*IF,VAL1,Oper,VAL2,Base*EXIT*ELSE*CYCLE*ENDIF…*ENDDOTrainingManualNovember1,2002Inventory#00175514-18…*do循环•在构造DO循环时,要遵循以下原则:–不要利用带有:Label分支语句*IF或*GO命令跳出DO循环结构;–在DO循环结构中,第一次循环后,自动禁止命令结果输出。如果想得到所有循环的结果输出,在DO循环结构中使用/GOPR或/GO(无响应行)语句。–在DO循环结构中使用/CLEAR命令要特别小心。/CLEAR命令不会清除DO循环堆栈,但是它会删除所有的参数,包括在本身的*DO语句中的循环参数。为避免由此引发的循环值未定义的问题,可以在/CLEAR命令前运行/PARSAV命令,然后执行/CLEAR命令和/PARRES命令。*do,count,1,10/parsav,scalar,parameters,txt/cle/parres,newparameters,txt…*enddoTrainingManualNovember1,2002Inventory#00175514-19条件分支*IF*IF,A,EQ,1,THEN…!Block1*ELSEIF,A,EQ,0…!Block2*ELSEIF,A,EQ,-1…!Block3*ELSE…!Block4*ENDIF结构一个*IF一个或多个*ELSEIF一个*ELSE一个*ENDIFEQ:等于NE:不等于LT:小于GT:大于LE:小于或等于GE:大于或等于ABLT:绝对值小于ABGT:绝对值大于*IF,VAL1,Oper,VAL2,Base*ELSEIF,VAL1,Oper,VAL2TrainingManualNovember1,2002Inventory#00175514-20条件分支*IF•关于BASE–:label跳转至某一个标号的命令处–STOP批处理时,终止ANSYS程序–EXIT退出循环体–CYCLE跳至循环尾,开始下一次循环–THEN标准选择块TrainingManualNovember1,2002Inventory#00175514-21无条件分支结构*GO,:BRANCH1…!被跳过(不执行):BRANCH1…*GO,Base其中BASE取值::label–标识字STOP-从该行退出ANSYS程序TrainingManualNovember1,2002Inventory#00175514-22宏嵌套•最多嵌套宏20层•最多可以传递19个变量给宏•嵌套宏运行完毕后程序控制权返回调用该宏的那一层例:宏MYSTART调用宏MYSPHERE来生成一个球体mystart/prep7/view,,-1,-2,-3mysphere,1.2finish/eofmyspheresphere,arg1/eofTrainingManualNovember1,2002Inventory#00175514-23重复执行命令*REPEAT,NTOT,VINC1,…,VINC11–NTOT–重复执行的次数(包括初次执行),必须大于或等于2–VINC1~VINC11–定义给第1到第11命令值域的增量注意:–大多数以斜线(/)或星号(*)开头的命令不可以重复调用–扩展名不是.mac的宏不可以重复调用–以斜线(/)开头的图形命令可以重复调用–要避免对交互式命令使用*REPEAT命令,诸如那些需要拾取或需要用户响应的命令E,1,2*REPEAT,5,0,1TrainingManual
本文标题:ansys培训第二天
链接地址:https://www.777doc.com/doc-4011393 .html