*use,mymacro
本例中,宏不带参数。假如要运行在/myaccount/macros处的宏MYMACRO.MACRO,那么执行的命令为:
*use,/myaccount/macros/mymacro.macro
注意,在*USE命令中,路径、文件名和扩展名是作为一个参数输入的。
如果宏的文件扩展名为.mac,并且在宏的搜索路径中,那么就可以把它当作ANSYS命令来运行,在命令输入窗口输入即可。例如,要运行一个名为mymacro.mac的宏:
mymacro
也可以通过Utility Menu>Macro>Execute Macro菜单项来运行扩展名为.mac的宏。 如果上一个宏带有参数(关于宏的参数传递内容见4.4.1部分),那么在命令行输入的内容为:
mymacro,4,3,2,1.5 或
*use,mymacro.mac,4,3,2,1.5
Utility Menu>Macro>Execute Macro菜单项提供输入参数的域。
运行存在于宏库中的宏的方法也是相似的。首先,用*ULIB命令指定库文件。例如,要运行存在于/myaccount/macros路径处的mymacros.mlib文件中的宏,先指定库文件:
*ulib,mymacros,mlib,/myaccount/macros/
选择完宏库之后,就可以通过*USE命令来运行任何包含在该库中的宏。同样也可以在*USE命令中指定该宏所带参数。
注意-在执行*ULIB命令后,不能用*USE命令去访问没有包含在指定宏库文件中的宏。
4.4 局部变量
APDL提供两套特殊命名的标量参数用作局部变量: ? 一套传递命令行变量到宏;
? 一套在宏内部使用。该局部变量仅仅在该宏中有效。 下面部分将详细讨论这两种类型的变量。
4.4.1 传递变量到宏
共有19个标量参数可以被用来从宏运行的命令行中传递变量到宏中。这些标量参数可以被许多宏重新使用,也就是说,它们的值只在每个宏的范围内有效。该参数名为从ARG1 到 AR19,可用于以下项目:
? 数值;
? 文字数字字符串(括在单引号中,最多8个字符); ? 数字或字符参数; ? 参数表达式
注意-只有从ARG1 到 AR18的参数的值可以用*USE命令传递到宏中。对于可以象ANSYS命令一样运行的宏(该宏文件扩展名为.mac),可以传递从ARG1 到AR19的参数的值到宏中。
例如,下面的宏需要4个变量ARG1, ARG2, ARG3, and ARG4:
第 46 页
/prep7
/view,,-1,-2,-3
block,,arg1,,arg2,,arg3 sphere,arg4 vsbv,1,2 finish
按如下方式运行该宏:
mymacro,4,3,2.2,1
4.4.2 宏内的局部变量
每个宏最多可有79个标量参数用作局部变量(从AR20 到 AR99)。这些参数只在宏内部有效。在宏嵌套中,这些参数也不会互相传递。可以将它们传进任何通过执行一个/INPUT命令调用的文件或宏的\循环中\。
4.4.3 宏外部的局部变量
ANSYS还有一套类似的从ARG1 到AR99的标量参数,它们在某个输入文件中有效,但不会传递到该输入文件调用的宏中。因此,一旦宏运行完毕,控制权返回给输入文件,ARG1 到 ARG99参数的值恢复为在该输入文件中定义的值。
4.5 在APDL中控制程序流
运行一个输入文件时,ANSYS通常线性执行程序,也就是说,按顺序一条一条语句地执行程序。但是,APDL提供了一套丰富的命令来控制程序流:
? 子程序调用(宏嵌套); ? 宏内部的无条件分支; ? 宏内部的条件分支;
? 重复执行某一条命令,增加一个或多个命令参数值; ? 按指定次数循环执行宏的某部分; 下面部分详细讨论了这些程序控制命令。关于这些命令的确切语法,请参阅ANSYS 命令参考手册(ANSYS Commands Reference)。
4.5.1 宏嵌套:在宏内调用子程序
APDL允许最多嵌套宏20层,其宏嵌套功能与FORTRAN 77 中的CALL语句或函数调用功能相似。最多可以传递19个变量给宏,每个嵌套的宏运行完毕后,程序控制权返回给调用该宏的那一层。例如,在下面的宏库文件中,宏MYSTART调用宏MYSPHERE来生成一个球体:
mystart /prep7
/view,,-1,-2,-3
第 47 页