1、 宏能够套嵌使用,即一个宏可以调用第二个宏,第二个宏可以调用第三个宏,最多可以套嵌 20 层 本文介绍了 ANSYS 宏命令的相关内容。一. ANSYS 宏的概念在 ANSYS 中,宏是包含一系列 ansys 命令并且后缀为.MAC 或.mac 的命令文件。宏文件往往记录一系列频繁使用的 ansys 命令流,实现某种有限元分析或其他算法功能(个人感觉宏如同 PROE 的零件库,在 ansys 中可以把经常用的模型或分析用宏保存后,根据现实情况调用,调用时只需改变参数就可以!)。宏文件在 ansys 中可以当作定义的 ansys 命令进行使用,可以带有宏输入参数,也可以有内部变量,同时在宏内部可
2、以直接引用总体变量。除了执行一系列的 ansys 命令之外,宏还可以调用 GUI 函数或把值传递给参数。宏能够套嵌使用,即一个宏可以调用第二个宏,第二个宏可以调用第三个宏,最多可以套嵌 20 层,在每个套嵌的宏执行完成后,ansys 软件将会返回到其上一层的位置!二.ANSYS 宏的搜索路径当宏文件储存成后缀为.mac 扩展名的文件时,ansys 将按下列顺序在缺省的路径中搜索用户创建的宏文件:1.目录:/ansys_inc/v70/ansys/apdl2.由 ANSYS_MACROLIB 环境变量指定的路径或注册路径( 主目录)3./PSEARCH 命令及其等价菜单路径 Utility me
3、numacromacro seach path指定的宏文件存储路径4.由/$HOME 环境变量指定的路径5.当前工作路径(在 ansys lauch 中设置的路径)三.ANSYS 宏的创建可以使用 ANSYS 本身或文本编辑软件( 非 GUI 法创建宏),如记事本,pspad 来创建一个宏。如果宏很短,用 ANSYS 软件很方便,如果宏较长,或很复杂,那么可以采用文本编辑软件(这里推荐 PSpad),同时使用文本编辑软件可以使用类似的宏或 ANSYS 的 LOG 文件作为生成自己宏文件的参考。对于一个复杂的宏来说,应该考虑是采用类似的宏作为参考的蓝本,还是先用 ANSYS 的 GUI 模式交互
4、式执行任务,然后在将其 LOG 文件作为生成宏的基础。这样可以减少生成宏的时间和精力!1.宏文件的命名规则宏的名称不应该与 ansys 系统已存在的命令相同。否则 ansys 执行的是内部命令而不是宏( 如,VPLOT,VGLUE),下面是具体的规则:宏名不能超过 32 个字符宏名不能用数字开头文件名不能包含空格文件名不能包含系统禁止的字符宏文件的后缀应为.mac为了保证宏名不与 ansys 的命令冲突,可以现在 ansys 的 help 中搜索一下要使用的宏名!2.宏的生成宏的创建方法很多,通常包含以下四种:2.1 使用*CREAT 创建宏文件格式:*CREATE,FNAME,EXT*END
5、FNAME文件名和路径,若不指定路径,将缺省为当前的工作目录EXT 文件的扩展名,用 .macEND宏结束语注意:如果 FNAME 以存在,则本次的宏将覆盖原有的同名同路径文件实例:创建一个 1*2*3 的长方体的宏(可以在 ansys 命令行中编写,本文是通过在 PSpad 中编写,在复制到 ansys 中)2.2 使用*CFWRITE 创建宏文件格式:*CFOPEN,FNAME,EXT,_,LOC*CFWRITE,*CFCLOSFNAME文件名和路径,不指定路径将缺省为当前的工作目录EXT 文件扩展名 (mac)LOC0 ,表示覆盖已存在的同名文件? 1,表示向同名文件中追加注意:只有在*
6、CFOPEN 和*CFCLOLSE 之间并以*CFWRITE 开头的命令才有效!与命令*CFCRETE 不同,*CFWRITE 并不能指定一个文件名,必须要用*CFOPEN 指定一个宏文件,再用*CFWRITE 进行 编辑 (修改或创建)用*CFCLOSE 结束编辑!实例:创建一个材料属性表2.3 使用/TEE 创建宏文件利用/TEE 命令可以将输入窗口中输入的 ANSYS 命令重定向输入到指定的文件中,同时执行这些命令,直到执行/TEE,END 命令时为止。格式:/TEE,LABEL,FNAME,EXTLABLE 1,new:表示新创建一个命令记录文件,如果这个文件存在则覆盖它2,appen
7、d:表示打开一个命令记录文件,向其中追加命令行3,end:表示结束 new 或 append 操作,关闭命令记录文件FNAME,EXT 同上实例:先使用 new 创建一个参数,再用 append 追加这个宏创建一个 block2.4 使用 utility menumacrocreat macro 创建宏文件点击后,可出现如下的一个对话框。实例:创建一个长方体和一个求体,并进行布尔运算2.5 使用文本编辑器进行编辑(内容如同一般的创建命令) ,把文件保存为.mac 格式并放入 ansys 的搜索目录中,这里建议用 PSpad 编辑,很方便.四.宏的运行其实在前面宏的创建中 以多次运行了宏,具体方
8、法如下:1.对于后缀为.mac 的宏文件并且储存在搜索路径中,可以直接输入到 ansys 的命令窗口,如同内部命令一样2.使用*USE 来执行任何宏文件如果一个名为 abc.mac 的宏文件在搜索路径中可以这样执行:*USE,abc如果不在搜索路径中,可这样执行*USE,路径/abc3. 使用 utility menuexcecute macro 来运行扩展名为 mac 的宏文件五.宏的变量这个问题应该是本教程的一个难点,但是只要思路清晰,也就很简单了!这里我以一个问题开头:如此宏:/TEE,NEW,MATP,MACA=10B=5C=5/TEE,END/TEE,APPEND,MATP,MAC/
9、prep7block,A,B,C/TEE,ENDA B C 是参数,在宏内定义了分别为 10 5 5 ,如果在执行宏前,在 ansys 中也定义相同的变量名称 A B C 并且赋值为 1 0.5 0.5 ,那么执行的宏是采用的哪组 A B C 呢?在宏文件内部,APDL 在一般情况下定义变量和数组都是全局变量,定义之后直至执行删除操作或退出 ANSYS 程序为止一直存在与 ANSYS 内存中,任何菜单操作,命令流文件或者宏文件中都可以使用他们。( 问题答案揭晓, A B C 依然为 10 5 5),但是 APDL还提供了两套特殊命名的变量参数用作宏的局部变量,他们只能用在宏文件中,其生命周期与
10、宏运行周期完全相同,只有在调用宏时才会用宏局部变量,当宏运行结束时这些局部变量会从内存中消失。这两种宏局部变量分别是:1 宏命令行的输入变量2 宏文件的内部变量5.1 宏命令行的输入变量宏可以当作 ansys 的命令,此时宏命令可以具有 19 个变量,他们分别表示宏的 19 个输入参数,在宏中可以直接引用这 19 个变量,从而实现将宏命令输入行的变量参数传入宏文件中。这 19 个宏输入变量参数只能在每个宏文件内部使用,随着宏的调用而存在于宏的进程中,随着宏的退出二从内存中消失。正是于此,所有宏都可以使用这 19 个宏输入变量。这 19 个宏输入变量分别是 ARG1ARG9 以及 AR10AR1
11、9 他们可以输入以下值:数值 文字或字符串 傻子或字符参数 参数表达式注意:如果使用*USE 命令调用宏,则只能将从 ARG1 到 AR18 的参数值传递到宏中,将宏当作 ANSYS 命令进行等价运行时,则可以将从 ARG1 到 AR19 的参数的值传递到宏中 !实例:创建宏*create ,blo,mac/prep7Block,ARG1,ARG2,ARG3FINISH*END运行宏Blo,1,2,3或采用 GUI 方式5.2 宏内部使用的局部变量宏内部使用的局部变量,只有在宏文件内部才有效,调用宏时这些变量就存在,退出宏时会自动从内存中清除。内部使用的局部变量最多有 79 个变量参数,他们分
12、别是从 AR20 到 AR99 的变量。注意,在套嵌中,这 79 个参数也不会互相传递,不能共享和传递.实例:用*CREATE 命令创建一个计算阶乘的通用宏 factorial.mac,其中利用 ARG1 最为宏的输入变量将阶乘数值传进宏文件,利用 AR20作为宏的内部变量,用作控制 DO 循环数目的循环变量。然后,在主程序中调用宏 factorial.mac 分别计算 10!和!50.宏如下:*CREATE,factorial,macoutput_fact=1*DO,AR20,1,ARG1output_fact=output_fact*AR20*ENDDO*END求解!10 和!50 调用宏
13、FINISH/CLEAR/FILNAME,MAC_INfactorial,10FACT10=output_factfactorial,50FACT50=output_fact六.宏的保存默认 情况下,宏都保存到了 默认的起始目录, 用户可以保存到任意路径,方法如上设置 FNAME 即可,GUI 模式选择浏览目录,但是最好保存到 ansys 的搜索路径中,方便调用!七.宏的应用通过以上的教程,创建宏以及运行宏 都可轻松实现,但是,我们编制宏的目的是方便我们的分析和建模,所以我们可以把常用的零件或者标准零件或材料属性表做成库,用的时候可以直接调用宏!这样不是大大加快了我们的效率了吗?实例:进行瞬态
14、热应力分析时,给材料一般都要 分配 导热系数,比热容,密度,弹性模型,泊松比我们可以把这个步骤制作成一个宏,每次分析的时候都可以调用这个宏,直接赋参数就可以了!八.宏的套嵌和宏库1.宏的套嵌宏的套嵌就是在宏文件中调用其他的宏,APDL 允许最多套嵌的宏为 20 层,套嵌调用宏时最多可以向宏中传递 19 个输入变量(ARG1ARG9,AR10AR19)每个套嵌的宏运行完毕后程序的进程自动返回给调用该宏的上一层。实例:结合以上内容,创建一个名为 msphere.mac 的宏(创建一球体) ,在 2.4 的宏 boo.mac 中套嵌此宏,实现布尔运算:2.宏库可以把一些宏放到一个文件中,这个文件就是
15、宏库文件,宏库文件没有明确的文件扩展名,但文件的命名规则和宏文件一样。其中,每个宏的开始处都有一个宏名,并以一个/EOF 命令结束,建议把宏库文件放在宏的搜索路径中,这样方便调用.与宏文件不同,宏库文件可以有任何扩展名,做多包括 8 个字符。宏库文件结构图:MACRO_NAME1/EOFMACRO_NAME2/EOFMACRO_NAME3/EOF创建后,就可以调用宏库文件中的宏了,运行宏库中宏的格式如下:/ULIB,FNAME,EXT,-*USE,FNAME宏库文件名及其路径(默认为工作目录)EXT 宏库文件后缀注意,一旦用*ULIB 调用了宏库后,就不能用*USE 运行非此库中的宏。实例:创建一个宏库 bs.mac,包括两个宏,一个创建长方体的宏 bl.mac 和一个创建球体的宏 sp.mac。