ANSYS宏命令Word文档格式.docx
《ANSYS宏命令Word文档格式.docx》由会员分享,可在线阅读,更多相关《ANSYS宏命令Word文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
![ANSYS宏命令Word文档格式.docx](https://file1.bdocx.com/fileroot1/2023-1/6/338d92be-a070-4b0c-92b3-827ecd5037f2/338d92be-a070-4b0c-92b3-827ecd5037f21.gif)
下面将介绍使用各种不同的方法来生成、储存、执行宏,同时也会讨论在使用APDL作为一种语言生成宏时的基本知识。
4.2创建宏
可以使用ANSYS本身或文本编辑软件,如记事本等,来创建一个宏。
如果宏相对简单而且很短,则用ANSYS软件是非常方便的。
如果生成的宏较长,且很复杂,或者是要编辑已经存在的宏,那么最好采用文本编辑软件。
同时使用文本编辑软件可以使用类似的宏或ANSYS的LOG文件作为生成自己宏文件的参考。
对于一个复杂且长的宏来说,应该考虑是采用类似的宏作为参考的蓝本还是先用ANSYS的GUI模式交互执行任务,然后再将其LOG文件作为生成宏文件的基础。
上述两种方法都可以减少生成一个合适宏文件的时间和精力。
4.2.1宏文件的命名规则
宏文件就是将一系列的ANSYS命令贮存在一个文件里。
因此宏的名称不应该与ANSYS系统内已经存在的命令名相同。
否则ANSYS会执行其内部命令而不是宏。
下面是对宏命名的限制规则:
•宏名不能超过32个字符。
•宏名不能用数字作为开头。
•文件的扩展名不能超过8个字符,如果在执行宏,那么按照ANSYS命令,其扩展名应该是“.mac”。
•文件名和扩展名不能包括空格。
文件名和扩展名不能包含系统所禁止的任何字符。
为了保证没有使用与ANSYS命令相同的文件名,在生成宏之前,事先在ANSYS软件里运行一下这个文件名。
类似的,应该用这个名称在所有的处理器中都试一下,直到没有相同的ANSYS命令时,才可以使用这个名称作为宏名。
还有一种简便的方法是将该名称放在在线帮助文档中,进行搜索,可以查出是否与存在的ANSYS命令名相同。
但这种方法不能检查出没有帮助文档的ANSYS命令。
使用扩展名“.mac”,可以使ANSYS在执行该宏时,当作一个内部命令一样使用。
但最好避免使用这个扩展名,因为它被ANSYS内部宏所使用。
4.2.2宏的搜索路径
在缺省方式下,ANSYS通过下列路径搜索用户自定义的宏文件(其扩展名为.mac)。
⑴目录:
/AnsysInc/v70/ANSYS/apdl。
⑵在ANSYS_MACROLIB环境下指定的路径或者注册目录。
⑶由$HOME环境变量所指定的目录。
⑷工作目录。
可以将自己个人使用的宏放在用户主目录下。
对于经常要使用的宏应该放在/AnsysInc/v70/ANSYS/apdl或者某些经常进入的目录下,这样任何人通过ANSYS_MACROLIB环境变量都可以找到。
对于Windows用户,当前目录常常就是一个由管理员设置的缺省目录,对于这个位置,用户应该请教管理员,也可以使用环境变量生成一个局部的“主目录”。
4.2.3用ANSYS生成宏
在ANSYS系统内,可以用四种方法来定制一个宏:
•在命令输入中执行“*CREAT”命令,这时参数值将不重新求解,参数名被写入文件里。
•使用命令“*CFOPEN”、“CFWRITE”和“CFCLOS”,参数将重新求解,并得到他们的当前值,这些值将被写入到宏文件中。
•在命令输入行中执行“/TEE”命令,这个命令在执行输入命令的同时,也把这些命令列出一个清单,并写入到一个文件里。
命令在当前ANSYS的对话框中执行时,参数名会重新求解并得到它们的当前值。
然而在生成的文件中,参数值没有求解,仅仅写入了参数名。
•选择GUI模式:
UtilityMenu>
Marco>
CreatMacro,这种方法将打开一个对话框,对生成宏来说,可作为一个简单多行编辑器,参数值将不会被求解,参数名将被写入到文件中。
4.2.3.1使用命令“*CREAT”
执行命令“*CREAT”后,将会使在命令输入行中执行的ANSYS命令改向进入到由该命令指定的文件中,在执行命令“*END”之前,所有输入的命令都将会改向。
如果已经存在的文件名与用户指定的文件名相同,ANSYS会覆盖掉这个已经存在的文件。
假设要生成一个名叫“matprop.mac”的文件,这个文件能够自动定义材料的性能参数,为生成这个宏,在命令输入行中输入下列命令流即可。
*CREAT,matrop,mac,macros
MP,EX,1,2.07E11
MP,NUXY,1.27
MP,DENS,1.7835
MP,KXX,1.42
*END
命令“*CREAT”包含有文件名、扩展名和目录路径(大多数情况指定为“macros”)等变量。
当使用命令“*CREAT”时,在命令中使用的所有参数都将会写入到文件中,但并不会将值赋给参数。
但要注意,命令“*CEREAT”不能在DO-LOOP循环中使用。
4.2.3.2使用命令“*CFWRITE”
如果希望在生成一个宏的同时,参数能够被当前的值所取代,这时可以使用命令“*CFWRITE”。
与命令“*CREAT”不相同的是,命令“*CFWRITE”并不能指定一个文件名,必须先由“CFOPEN”指定一个宏文件,然后只有那些在命令输入行中输入的且用“*CFWRITE”作为前缀的命令才能够写入到指定的文件名、扩展名和工作目录。
下列的一个例子就是将一个“BLOCK”命令写入到当时打开的宏文件里。
*CFWRITE,BLOCK,,a,,b,,c
对于“BLOCK”命令来说,由于这些参数被作为变量使用,这些参数的当前值也要被写入到文件中,因此,对于这个例子来说,将要写入到宏文件里的这一行也可写成:
*CFWRITE,BLOCK,,4,,2.5,,2
要关闭这个打开的宏文件,可使用命令“*CFCLOS”。
4.2.3.3使用“/TEE”
执行“/TEE,NEW”或者“/TEE,APPEND”命令后,命令输入行中的命令会改向并进入到由命令指定的文件中,同时这些命令也会被执行。
除非执行了“/TEE,END”命令,否则输入的命令都将会被改向,并执行。
如果在执行命令“/TEE,NEW”后,已存在的文件名与指定的宏文件相同,ANSYS系统将会覆盖它,因此建议使用命令“/TEE,APPEND”。
另外,在命“/TEE”中除了label变量外,还可以指定文件名、扩展名和目录的路径。
命令在ANSYS对话框中执行时,所有的参数名都将会重新求解,并得到它们的当前值。
然而在生成的文件中,参数名被写入,当前对参数指定的值并不会取代。
如果感到当前的参数值非常重要,用户可用命令“PARSAV”将这些参数保留在一个文件里。
4.2.3.4使用操作路径
GUI:
Macro>
CreatMacro
当执行这一操作后,系统会弹出一个对话框,在这个对话框中,用户可以输入命令并生成一个宏文件。
但不能利用这个特征去打开或编辑已经存在的宏文件,如果用户在“*CREAT”域内输入一个与已经存在的文件同名的宏名,则已经存在的文件将会被覆盖掉。
与命令“*CREAT”类似,参数并不去求解,而是全部写入到宏文件当中。
但最后一行要写上“*END”命令。
4.2.3.5使用文本编辑器
可以使用你最喜爱文本编辑器来生成或编辑一个宏文件。
任何ASCII文本编辑器均可。
同时ANSYS宏要求每行都有一个终止符(即回车符),以表示输入命令结束。
因此在某个平台上生成的宏文件可以在任何平台上工作。
使用这种方法生成的宏文件,其内容不要包含“*CREAT”和“*END”命令。
4.2.3.6使用宏库文件
为了方便起见,ANSYS系统也允许将一系列的宏放在一个文件里。
这个文件就称之为宏库文件。
可以采用文本编辑器或命令“*CREAT”来生成这个宏库文件,由于宏库文件的命令行数肯定要比单个宏命令要多,也许使用文本编辑器是一种最好的方式。
宏库文件没有确定的文件扩展名,其文件名的命名规则与宏文件类似,宏库文件有如下的结构:
MACRONAME1
……
/EOF
MACRONAME2
MACRONAME3
如下的宏库文件里包含着两个简单的宏:
mybloc
mysphere
从上述例子可以看出,在宏库文件里,每个宏都以宏名作为起始位置,再用“/EOF”命令作为结束的标志。
宏库文件能够放在系统的任何位置,尽管这样,最好还是将其放在宏搜索的路径里。
与宏文件不同之处是,宏库文件的扩展名可以使用8个字符。
4.3执行宏文件和宏库文件
用户可以通过使用“/*USE”命令来执行任何宏文件,如果要执行一个放在宏搜索路径中叫“mymacro”的宏时,可以使用:
*use,mymacro
在这种情况下,宏没有变量。
如果要执行一个保存在“/myaccount/macro”中且名称为“mymacro.macro”的宏时,执行语句为:
*use,/myaccount/macros/mymacro.macro
由于“*USE”命令能够自动进入路径并搜索到文件名,因此没有必要指定分离的变量。
如果一个宏有一个“.mac”的扩展名,并且保存在搜索路径里。
这时就可以象执行ANSYS内部命令一样在命令输入行中执行这个宏。
如果要调用mymacro.mac这个宏时,只要在命令输入行中简单的输入:
“mymacro”,并回车即可。
当然,也可以利用下拉菜单执行这个以“.mac”作为扩展名的宏。
其中执行路径为:
UTILITYMenu>
ExecuteMacro
如果一个宏有许多变量,那么可以直接在命令行中输入。
如:
mymacro,4,3,2,1.5
或者*use,mymacro.mac,4,3,2,1.5
而用下拉菜单即操作路径“UTILITYMenu>
ExecuteMacro”时,会弹出一个对话框,其变量则在对话框中输入即可。
执行一个包含在宏库文件里的宏,其过程与执行宏文件是相似的。
首先必须用命令“*ULIB”来指定一个文件,如指定宏是在“mymacros.mlib”库文件里,且保存在“/myaccount/macros”目录里,这时要执行下列操作:
*ulib,mymacros,mlib,/myaccount/macros/
在选择了一个宏文件后,就可以使用命令“*USE”来执行包含在这个宏库文件中的任何宏。
就像包含在单个文件里一样,在使用“/*USE”时可以指定变量作为参数。
但要注意,在执行“*ULIB”命令后不能使用“*USE”命令去执行没有包含在指定宏库文件中的宏名。
4.4局部变量
APDL提供了两组特定命名的标量参数,他们被利用来作为局部变量使用。
即:
•一组标量参数,为命令行中的变量传递给宏提供了一条通道。
•一组能够在宏里面使用的标量参数,它提供了能够定义值的一组局部变量,并且只在定义的那个宏里有效。
.4.1将变量传递给宏
可以使用19个标量参数将执行命令行中宏的变量传递给宏,这些标量参数能够在多个宏中重复使用,也就是说,它们的值对于宏来说是局部的。
这些参数名是:
ARG1-AR19,并且它们能够在下列范围内使用:
•数值。
•字符型字符串(用单引号括起来且不超过8个字符)。
•数值或字符参数。
•参数表达式。
但要注意,当使用命令“*USE”时只能将ARG1-AR19的参数值作为变量传递给宏。
但如果生成的宏可以作为一个ANSYS命令使用,即它有一个扩展名“.mac”时,这时可以将ARG1-AR19的参数值传递给宏。
如下所示的宏需要4个变量:
ARG1、ARG2、ARG3和ARG4。
BLOCK,,ARG1,,ARG2,,ARG3
SPHERE,ARG4
VSBV,1,2
为了执行这个宏,用户应该输入:
mymacro,4,3,2.2,1
4.4.2宏里面的局部变量
每个宏最多可以使用79个标量作为局部变量(AR20-AR99),这些参数对宏来说是完全局部的,多重宏也都有他们自己唯一的赋值给这些参数。
这些参数并不传递给由宏调用的嵌套宏。
它们被传递给由“/INPUT”命令输入的任何文件,或者是在宏里面进行的“DO-LOOP”。
4.4.3宏外面的局部变量
ANSYS也有一组类似的ARG1-AR99的标量参数,它们对于输入文件来说是局部的,它们并不传递给由输入文件所调用的任何宏。
因此一旦宏执行完成,系统又返回到输入文件时,ARG1-ARG99的值又恢复到当前输入文件里所定义的值。
4.4.4在元件和部件中使用宏
为了使大的实体模型便于管理,可以根据不同类型的实体,如节点、单元关键点、线、面和体等,将一个模型分成离散的元件,每个元件可以容纳一种类型的实体,这样做的目的是可以根据分离的实体;
来完成施加载荷或者生成图象等任务。
也可以生成部件,它们是成组的,是由两个或者多个元件甚至是多个部件组成的。
一个部件最多可以嵌套5层,如可以建立一个由stator、permmag、rotor和windings等元件生成的名叫“motor”的部件。
Chapter4.APDLasaMacroLanguage
4.1.WhatisanAPDLMacro?
YoucanrecordafrequentlyusedsequenceofANSYScommandsinamacrofile(thesearesometimescalledcommandfiles).Creatingamacroenablesyouto,ineffect,createyourowncustomANSYScommand.Forexample,calculatingpowerlossduetoeddycurrentsinamagneticanalysiswouldrequireaseriesofANSYScommandsinthepostprocessor.Byrecordingthissetofcommandsinamacro,youhaveanew,singlecommandthatexecutesallofthecommandsrequiredforthatcalculation.InadditiontoexecutingaseriesofANSYScommands,amacrocancallGUIfunctionsorpassvaluesintoarguments.
Youcanalsonestmacros.Thatis,onemacrocancallasecondmacro,thesecondmacrocancallathirdmacro,andsoon.Youcanuseupto20nestinglevels,includinganyfileswitchescausedbytheANSYS/INPUTcommand.Aftereachnestedmacroexecutes,theANSYSprogramreturnscontroltothepreviousmacrolevel.
Thefollowingisaverysimpleexamplemacrofile.Inthisexample,themacrocreatesablockwithdimensions4,3,and,2andaspherewitharadiusof1.Itthensubtractsthespherefromonecorneroftheblock.
/prep7
/view,,-1,-2,-3
block,,4,,3,,2
sphere,1
vsbv,1,2
finish
Ifthismacrowerecalledmymacro.mac,youcouldexecutethissequenceofcommandswiththefollowingsingleANSYScommand
or(becausetheextensionis.mac)
mymacro
Althoughthisisnotarealisticmacro,itdoesillustratetheprinciple.
Thischapterprovidesinformationonthevariouswaysyoucancreate,store,andexecutemacros.ItalsodiscussesthebasicinformationyouneedtouseAPDLasascriptinglanguageincreatingmacros.
4.2.CreatingaMacro
YoucancreatemacroseitherwithinANSYSitselforusingyourtexteditorofchoice(suchasemacs,vi,orwordpad).Ifyourmacroisfairlysimpleandshort,creatingitinANSYScanbeveryconvenient.Ifyouarecreatingalonger,morecomplexmacrooreditinganexistingmacrothenyouwillneedatexteditor.Also,usingatexteditorallowsyoutouseasimilarmacroorANSYSlogfileasthesourceforyourmacro.
Foranylong,complexmacroyoushouldalwaysconsidereitherusingasimilarmacroasastartingpointorrunningthetaskinteractivelyinANSYSandusingtheresultinglogfileasthebasisofyourmacro.Eithermethodcangreatlyreducethetimeandeffortrequiredtocreateasuitablemacro.
4.2.1.MacroFileNamingConventions
MacrosareasequenceofANSYScommandsstoredinafile.MacrosshouldnothavethesamenameasanexistingANSYScommand;
ANSYSwillexecutetheinternalcommandinsteadofthemacro.Thefollowingnamingrestrictionsapplytomacrofiles:
·
Thefilenamecannotexceed32characters.
Thefilenamecannotbeginwithanumeral.
Thefileextensioncannotcontainmorethaneightcharacters(ifyouareexecutingthemacroasifitwereanANSYScommanditshouldhavetheextension.mac.)
Thefilenameorextensioncannotcontainspaces.
ThefilenameorextensioncannotcontainanycharactersprohibitedbyyourfilesystemandforportabilityshouldnotcontainanycharactersprohibitedbyeitherUNIXorWindowsfilesystems.
ToensurethatyouarenotusingthenameofanANSYScommand,beforecreatingamacrotryrunningthefilenamethatyouwishtouseasanANSYScommand.IfANSYSreturnsthemessageshownbelow,youwillknowthatthecommandisnotusedinthecurrentprocessor.Youshouldcheckthemacrofilenameineachprocessorinwhichyouplantousethemacro.(Youcouldalsocheckifthemacrofilenamematchesanycommandlistedintheonlinedocumentation;
however,thismethodcannotlocatethenamesofundocumentedcommands.)
Usingthe.macextensionallowsANSYStoexecutethemacroasitwouldanyinternalcommand.Youshouldavoidusingtheexte