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