ANSYS-APDL编程学习资料

ANSYS-APDL编程学习资料
ANSYS-APDL编程学习资料

第三部分ANSYS编程指导

第一章APDL介绍

何谓APDL

APDL是ANSYS程序设计语言(ANSYS Parametric Design Language)。

第二章工具栏

加命令到工具栏

你可以经常通过定义缩写将ANSYS函数或宏加到工具条。缩写(小于8个字符)是ANSYS命令、图形函数命令或宏名的别名。

ANSYS程序提供两种使用缩写的方法。你可以使用命令行的开始几个字符作为缩写,输入缩写;也可以使用ANSYS图形用户界面(见图2-1)来执行。

图2-1 工具栏

单一工具条可有高达100个缩写嵌套(你可以使用嵌套来扩展这些数字)。你可以重定义或删除缩写,但是缩写不能自动保存,因此必须明确保存文件并重新装入。

修改工具栏

你要么*ABBR命令,要么通过Utility Menu > Macro > Edit Abbreviations或Utility Menu >MenuCtrls > Edit Toolbar菜单项建立缩写。使用菜单项的原因有两个:

按OK自动更新工具栏(使用*ABBR命令要求使用Utility Menu >MenuCtrls > Update Toolbar来更新)。

如必要,你可以非常容易的编辑缩写。

1.示例:加工具栏按钮

如果要加名为mymacro.mac的工具条按钮,你必须启动Utility Menu >MenuCtrls > Edit Toolbar对话框,输入值(如图2-2)。

图2-2 加一条新的缩写

新按钮将附加到下图。

图2-3 工具栏

2 保存工具栏按钮

Utility Menu >MenuCtrls > Save Toolbar(ABBSAV命令)——保存;

Utility Menu >MenuCtrls > Restore Toolbar(ABBRES)——恢复。

缩写文件的格式为APDL命令,它可用来建立缩写。这样,如果你想编辑大量按钮或者改变它们次序,使用文本编辑器是最方便的方法。如:

/NOPR

*ABB,SAVE_DB ,SAVE

*ABB,RESUM_DB,RESUME

*ABB,QUIT ,Fnc_/EXIT

*ABB,POWRGRPH,Fnc_/GRAPHICS

/GO

命令*ABB (*ABBR的缩写)定义按钮。命令/NOPR关闭log文件的重复,而/GO重新打开。

一、组合工具栏缩略

上述保存-恢复特征允许你组合缩写。通过单按钮的组合缩写,你可以定义特殊的工具条。你只需简单的定义缩写文件。如:

*ABBR,PREP_ABR,ABBRES,,PREP,ABBR

PREP_ABR将出现在工具栏中。单击它,将用文件prep.abbr替换存在的按钮。

第三章使用变量

变量

你不必申明变量类型,所有数值型变量均为双精度型。变量的缺省值为微量近似约为2-100。APDL提供了多种数组变量类型:数值型,字符型,表格型(一种特殊的数值型,能够自动插值)。

变量名规则

变量名必须为:

参量必须以字母开头

只能包含字母、数字、下划线

不能大于八个字符

如:有效——ABC,PI,X_OR_Y等;无效——NEW_VAULE,2CF3,M&E等。

命名变量时:

避免使用ANSYS标签相同的参量,如:

DOF标签(TEMP,UX,PRES,等等)

方便标签(ALL,PICK,STAT,等等)

用户定义标签(如用ETABLE命令定义的标签)

数组类型域标签(如CHAR,ARRAY,TABLE,等等)

以从ARG1到ARG9以及从AR10到AR29等参量是局部参量(或称虚参),用于宏命令中。不推荐用这些参量。

参量名不应与*ABBR命令定义的相同。以下划线(_)开头的参量名用于GUI和ANSYS支持的宏,强烈推荐

不用这些参量。

定义变量

1. 执行时指定变量值

你可以用*SET命令定义参量,如

*SET,ABC,-24

*SET,QR,2.07E11

*SET,XORY,ABC

*SET,CRAR,’CASE1’

定义参量的最简单的方法是用“=”命令,命令格式:Name=Value,如

ABC=-24

QR=2.07E11

XORY=ABC

CRAR=’CASE1’

图形用户界面Utility Menu>Parameters>Scalar Parameters中可以直接使用“=”。

2. 启动时指定值

如:ansys55 -parm1 89.3 -parm2 -0.1

如果你在启动时定义了大量的变量,在start5x.ans文件中定义(或其他独立的文件,通过/INPUT命令输入)是非常方便的。

3. 指定ANSYS提供值到变量

ANSYS提供两种强有力的方法来获得值:

*GET command

内联Get函数

(1)使用*GET命令

赋ANSYS支持值给参量,用*GET命令,如

*GET,BCD,ELEM,97,ATTR,MAT ! BCD=单元97的材料号

*GET,V37,ELEM,37,VOLU ! V37=单元37的体积

*GET,NMAX,NODE,,NUM,MAX ! NMAX=最大激活节点号

(2)使用内联Get函数

对于很多项目,你可以用内联get函数来替换*GET命令。Get函数返回一个项目的值并直接使用在当前的操作中。如:你想计算两个节点的x方向的平均值,如用*GET函数则要求

*GET,L1,NODE,1,LOC,X

*GET,L2,NODE,2,LOC,X

MID=(L1+L2)/2.

使用内联get函数:MID=(NX(1)+NX(2))/2

下表列出了可以得到的内联函数:

4. 变量列表

*STATUS命令列表(GUI:Utility Menu>List>Other>Parameters or Utility Menu>List> Status> Parameters >All Parameters)。

注意:任何以下划线“_”开头或结尾的变量均不会显示。

删除变量

删除参量方式有:

QR=

同样,也可以用*SET命令定义参量,如

*SET,QR,

注意:设置参量等于零(对字符即为空)与删除命令是不同的。

使用字符变量

典型地,字符变量主要用于提供文件名和扩展名。注意:字符变量限定8个字符。举例如下:

NAME='MACRO' ! MACRO is the name of a macro file

*USE,NAME ! Calls MACRO

ABC='SX'

*USE,NAME,ABC

数值型变量值的替换

1 防止替换

你可以通过带单引用(4)的变量名来防止变量替换,如4XYZ4。该字符串然后被用,因此该特征仅对非数值场有效。

相反,你能将标题、子标题以及文件名通过装%和变量名来进行变量替换。如:

/TITLE, TEMPERATURE CONTOURS AT TIME=%TM%

2 字符变量值的替换

字符变量的使用通常导致值的自动替换。下面介绍强迫替换:

(1)强迫替换

对于数值变量,你可以对于替换不能自动进行的地方进行强迫替换。它通过装入变量名和%来进行。强迫替换对以下命令有效:/TITLE,/STITLE,/TLABEL,/SYP,*ABBR。

强迫替换还对以下类型的领域有效:任何文件名或扩展名命令参量(如/FILNAME,RESUME,/INPUT,/OUTPUT和FILE);任何32位字符型场;在命令名场里最为命令名,如:R='RESUME',%R%,MODEL,DB。The following example of the command input method shows forced substitution for a subtitle definition and for a directory name.

(2)字符变量有效的其它地方

*ASK,Par,Query,DVAL:询问语句(Par:变量名,Query:字符串,Dval:缺省值);

*CFWRITE, Command:—写一ANSYS命令(或类似字符串)到“命令”文件(使用*CFOPEN打开)。

*IF, VAL1, Oper, VAL2, Base和*ELSEIF, VAL1, Oper, VAL2

*MSG, Lab, VAL1, VAL2, VAL3, VAL4, VAL5, VAL6, VAL7, VAL8:写一输出信息。

PARSAV, Lab, Fname, Ext, Dir和PARRES, Lab, Fname, Ext, Dir:写、读变量到一文件。

*VREAD, ParR, Fname, Ext, Dir, NCOL:读数据并生成数组变量矢量和矩阵。

*VWRITE, Par1, Par2, Par3, Par4, Par5, Par6, Par7, Par8, Par9, Par10:以一格式顺序写数据到文件。

(3)字符变量限制

虽然字符变量与数值变量具有同样多的功能,但有一些例子字符变量是无效的。

对于*SET, *GET, *DIM和*STATUS的par参量是不允许字符型变量替换。

*VEDIT不允许字符型变量替换。

矢量操作命令(如*VOPER,*VSCFUN,*VFUN,*VFILL,*VGET和*VITRP)不允许字符型变量替换。

当对字符变量进行操作时,指定命令*VMASK和*VLEN仅可应用于*VWRITE 和*VREAD命令。

字符变量载使用参数表达式(加,减,乘等)是无效的。

数值型、字符型变量的动态替换

数值型、字符型变量对下列命令进行动态替换:/TITLE,/STITLE,*ABBR,和/TLABEL。例如:

XYZ='CASE 1'

/TITLE,This is %XYZ%

APLOT

标题“This is CASE 1”将出现在图形区。这时如果你改变XYZ,即使你不重新执行/TITLE,标题也将改变。变量表达式

参数表达式涉及加、减、乘等操作,如:X=A+B;P=(R2+R1)/2;D=-B+(E**2)-(4*A*C);D =-B + E2 - 4AC;XYZ=(A

下表为完整的

优先级:

圆括号(最里面优先)

乘方(依次从右到左)

乘、除(依次从左到右)

一元操作符(如+A或-A)

加、减(依次从左到右)

逻辑符(依次从左到右)

变量函数

表13-1 标准FORTRAN函数

例子:

PI=ACOS(-1) ! PI = arc cosine of -1, PI calculated to machine accuracy Z3=COS(2*THETA)-Z1**2

R2=SQRT(ABS(R1-3))

X=RAND(-24,R2) ! X = random number between -24 and R2

*AFUN,DEG ! Units for angular functions are degrees

THETA=ATAN(SQRT(3)) ! THETA evaluates to 60 degrees

PHI=ATAN2(-SQRT(3),-1) ! PHI evaluates to -120 degrees

*AFUN,RAD ! Units for angular functions reset to radians

X249=NX(249) ! X-coordinate of node 249

SLOPE=(KY(2)-KY(1))/(KX(2)-KX(1))

! Slope of line joining keypoints 1 and 2

CHNUM=CHRVAL(X) ! CHNUM = character value of X

UPPER=UPCASE(LABEL) ! UPPER = uppercase character value of parameter LABEL 变量的保存、恢复、写操作

如果你需要当前定义参量用到以后不同的ANSYS运行,你可以把它们写到一个文件中。以后可以从文件中读

出。命令:

写:PARSAV,示例:

/NOPR

*SET,A , 10.00000000000

*SET,B , 254.3948750000

*SET,C ,'string '

*SET,_RETURN , 0.0000000000000E+00

*SET,_STATUS , 1.000000000000

*SET,_ZX ,' '

/GO

读:PARRES

如果希望你能用FORTRAN实型格式写十个参量或数组参量到一个文件中。你可以用这些特征来写你自己的输出文件以备以后之用。可用命令:*VWRITE

数组变量

除了变量(单值),你可以定义数组(多值),数组可以为:一维(单列),二维(行和列),三维(行、列和面)。数组类型有三种:ARRAY,CHAR,TABLE。其中TABLE数组参量有数字组成,不同之处在于它允许数组参量值之间进行线性插值,而且j=0列(通常由行号i=1~n组成)可以以单调递增的方式增加。所有这三种类型均可有231-1列(行、面)。

1 Array变量基础

考虑如下二维数组(ARRAY或CHAR)。

2 Array变量例子

3 TABLE型数组变量

一种TABLE数组变量类似于ARRAY型,但是有三点不同:

可以计算任何值(通过插值);

包含0行和0列,可以为实值,但必须单调递增;

每个平面的面索引值寄存在0,0位置。

示例:

Figure 3-3. A Graphical Representation of a Table Array

4 定义及列表数组变量

定义:*DIM命令(Utility Menu>Parameters>Array Parameters>Define/Edit)。示例:

*DIM,AA,,4 ! Type ARRAY is default, dimension 4[x1x1]

*DIM,XYZ,ARRAY,12 ! Type ARRAY array, dimension 12[x1x1]

*DIM,FORCE,TABLE,5 ! Type TABLE array, dimension 5[x1x1]

*DIM,T2,,4,3 ! Dimensions are 4x3[x1]

*DIM,CPARR1,CHAR,5 ! Type CHAR array, dimension 5[x1x1]

注意:任何ARRAY和TABLE数组均初始化为0(TABLE数组的0行和0列初始化为微小值),字符型ARRAY 数组初始化为缺省值。

5 指定数组元素值

可通过*SET命令或“=”。也可通过*VFILL等指定独立矢量的填充。*VEDIT对话框可交互指定值。*VREAD或*TREAD命令可读ASCII文件数据值。

(1)指定独立矢量数组

通过*SET命令或“=”,用法类似于标量变量的用法。示例:

XYZ(1)=59.5,42.494,-9.01,-8.98,-8.98,9.01,-30.6,51

XYZ(9)=-51.9,14.88,10.8,-10.8

T2(1,1)=.6,2,-1.8,4 ! defines (1,1),(2,1),(3,1),(4,1)

T2(1,2)=7,5,9.1,62.5 ! defines (1,2),(2,2),(3,2),(4,2)

T2(1,3)=2E-4,-3.5,22,.01 ! defines (1,3),(2,3),(3,3),(4,3)

以下为TABLE型数组变量:

FORCE(1)=0,560,560,238.5,0

FORCE(1,0)=1E-6,.8,7.2,8.5,9.3

*DIM,RESULT,CHAR,3 !Character array parameter with

RESULT(1)='SX','SY','SZ' !Assigns values to parameter RESULT

(2)填充矢量数组

*DIM,DTAB,ARRAY,4,3 ! dimension 4 x 3 numeric array

*VFILL,DTAB(1,1),DATA,-3,8,-12,57 ! four data values loaded into vector 1

*VFILL,DTAB(1,2),RAMP,2.54,2.54 ! fill vector 2 with values starting at 2.54 and incrementing by 2.54 *VFILL,DTAB(1,3),RAND,1.5,10 ! fill vector 3 with random numbers between 1.5 and 10.

!Results will vary due to random number generation.

(3)交互编辑数组

使用*VEDIT命令(Utility Menu>Parameters>Array Parameters>Define/Edit)。

图3-4. *VEDIT对话框示例图3-5. *VEDIT(TABLE型)对话框示例

(4)使用*VREAD从数据文件填充数组

Utility Menu>Parameters>Array Parameters>Read from File)。示例:给定下列数组文件

1.5 7.8 1

2.3

15.6 -45.6 42.5

*VREAD,EXAMPLE(1,1),,,2(3F6.1)

(5)使用*TREAD从数据文件填充TABLE数组

(Utility Menu>Parameters>Array Parameters>Read from File)。

*TREAD,Tt,tdata,txt,,2

*TREAD,Ttx,t2data,txt,,2

*TREAD,Ttxy,t3data,txt,,2

(6)插值

示例1:考虑TABLE型下表

A(1.5)=20.0;A(1.75)=24.0;A(1.9)=26.4。

PQ(1.5,1)=-3.4;PQ(1,1.5)=3.5;PQ(3.5,1.3)=14.88。

示例2:考虑时间-力函数

(7)获得值或恢复数组值

*VGET命令(Utility Menu>Parameters>Get Array Data)类似于*GET可获得ANSYS提供的值并填入数组。*VPUT命令(Utility Menu>Parameters>Array Operations>Put Array Data)用于恢复数组值。

(8)列表数组变量

*STATUS。

6.写数据文件

你可以通过*VWRITE命令从数组数据中写到格式化数据文件,该命令用(<=10个)数组矢量作为变量并写到当前打开文件(*CFOPEN命令)。

(1)格式化数组描述

如果你不熟悉FORTRAN数据描述,本节将是你了解格式化数据文件。你必须给* VWRITE的每一变量提供数据描述,一般而言,F描述符(浮点型)可对任何数值有效,其格式为:F w.d

其中,w为数据场的总宽度,d为小数点位数。如F10.8

字符型描述符A的格式:A w,其中:w为数据场的总宽度。

示例1:给定MYDATA数组

x=25

*cfopen,vector

*vwrite,SEQU,mydata(1,1,1),mydata(1,2,1),mydata(1,3,1),10.2,x,mydata(1,1,1)+3 (F3.0,' ',F8.4,' ',F8.1,' 'F8.6,' ',F4.1,' 'F4.0,' 'F8.1)

*cfclos

结果:

1. 2.1522 3.9 5.286370 10.2 25. 5.2

2. 2.3049 4.0 5.409196 10.2 25. 5.2

3. 2.0105 3.4 5.936638 10.2 25. 5.2

4. 2.3683 3.3

5.632203 10.2 25. 5.2

5. 2.8491 4.8 5.978024 10.2 25. 5.2

6. 2.2280 3.5 5.546851 10.2 25. 5.2

示例2:给定MYDATA数组

*vwrite,SEQU,mydata(1,1),mydata(1,2),(mydata1(1,1)+mydata1(1,2)) (' Row',F3.0,' contains ',2F7.3,'. Is their sum ',F7.3,' ?')

结果:

Row 1. contains 10.000 50.000. Is their sum 60.000 ?

Row 2. contains 20.000 60.000. Is their sum 60.000 ?

Row 3. contains 30.000 70.000. Is their sum 60.000 ?

7 数组变量的操作

(1)矢量操作

矢量操作是一组简单的操作——加,减,sin,cos,点积,叉积等。DO循环可以做这些操作,但是最方便的就是是用矢量操作命令*VOPER,*VFUN,*VSCFUN,*VITRP,*VFILL,*VREAD和*VGET。这些命令只有*VREAD和*VWRITE对字符数组有效。

*VOPER(Utility Menu>Parameters>Array Operations>Vector Operations):输入两个矢量,输出一个矢量。*VFUN(Utility Menu>Parameters>Array Operations>Vector Functions):输入一个矢量,输出一个矢量。

*VSCFUN(Utility Menu>Parameters>Array Operations>Vector-Scalar Func):决定单一矢量的属性并放结果给指定的标量

*VITRP(Utility Menu>Parameters>Array Operations>Vector Interpolate):通过TABLE型数组载指定位置的插值形成ARRAY型数组

示例:对于下面例子,ARRAY型变量X,Y和THETA已经定义为:

*DIM,Z1,ARRAY,4

*VOPER,Z1(1),X(1,2),ADD,Y(1,1)

*DIM,Z2,ARRAY,3

*VOPER,Z2(1),X(2,1),MULT,Y(1,4)

*DIM,Z4,ARRAY,4,3

*VOPER,Z4(1,1),X(1,1),CROSS,Y(1,2)

Z4(I行)=X(I行)*Y(I行),一行维一组矢量(三个分量)

*DIM,A3,ARRAY,4

*VFUN,A3(1),PWR,X(1,2),2

(注释:A3=X**2)

*DIM,A4,ARRAY,7,3

*AFUN,DEG

*VFUN,A4(1,1),COS,THETA(1)

*VFUN,A4(1,2),SIN,THETA(1)

A4(1,3)=2,2,2,2,2,2,2

*DIM,A5,ARRAY,7,3

*VFUN,A5(1,1),TANG,A4(1,1)

*DIM,B1,,4

*DIM,B2,,3

*DIM,B3,,4

B1(1)=10,20,30,40

B2(1)=2,4,1

*VOPER,B3(1),B1(1),GATH,B2(1)

(2)矩阵操作

*MOPER(Utility Menu>Parameters>Array Operations> Matrix Operations):输入两个矩阵,输出一个矢量。*MFUN(Utility Menu>Parameters>Array Operations> Matrix Functions):复制或调换,输入一个,输出一个。*MFOURI(Utility Menu>Parameters>Array Operations>Matrix Fourier):傅立叶变换。

示例:假设数组SORTDATA定义为:

*dim,oldorder,,5

*moper,oldorder(1),sortdata(1,1),sort,sortdata(1,1)

为了将数组按原来位置摆回,*moper,oldorder(1),sortdata(1,1),sort,oldorder(1,1)。

假设已知:

解方程组:

2X1 + 4X2 + 3X3 +2X4 = 2

3X1 + 6X2 + 5X3 + 2X4 = 2

2X1 + 5X2 + 2X3 - 3X4 =3

4X1 + 5X2 +14X3 + 14X4 = 11

*DIM,C,,4

*MOPER,C(1),A(1,1),SOLV,B(1)

假设:

*DIM,DATATRAN,,2,3

*MFUN,DATATRAN(1,1),TRAN,DATA(1,1)

(3)矢量和矩阵操作设置

*VCUM:指定结果是否累加或不累加。

*VABS:加绝对值到所有涉及的矢量操作。

*VFACT:设置放大因子。

*VCOL:设置列号。

*VSTAT:列出设值。

*VLEN:设置行号。

*VMASK:指定数组为逻辑数组。

下表列出了设置对操作的影响:

示例:

*DIM,CMPR,ARRAY,4,4

*VLEN,4,2! Do next *V---- operation on four rows,

! skipping every second row

*VFUN,CMPR(1,2),COMP,Y(1,1)

*VMASK,X(1,3)!Use column 3 of X as a mask for next *V---- ! operation

*VFUN,CMPR(1,3),COMP,Y(1,2)

假设已知:

numdp=2

*vfact,10**numdp

*vfun,numdata(1),copy,numdata(1)

*vfun,numdata(1),nint,numdata(1)

*vfact,10**(-numdp)

*vfun,numdata(1),copy,numdata(1)

or, you can use a slightly shorter version

numdp=2

*vfact,10**numdp

*vfun,numdata(1),copy,numdata(1)

*vfact,10**(-numdp)

*vfun,numdata(1),nint,numdata(1)

结果:

*dim,maskvect,,100

*vfill,maskvect(2),ramp,1

*do,factor,2,10,1

*vlen,,factor

*vfill,maskvect(factor*2),ramp,0

*enddo

*vmask,maskvect(1)

*dim,numbers,,100

*vfill,numbers(1),ramp,1,1

*status,numbers(1),1,10

结果(*STATUS):

PARAMETER STATUS- NUMBERS ( 5 PARAMETERS DEFINED)

(INCLUDING 2 INTERNAL PARAMETERS) LOCATION VALUE

1 1 1 0.000000000E+00

2 1 1 2.00000000

3 1 1 3.00000000

4 1 1 0.000000000E+00

5 1 1 5.00000000

6 1 1 0.000000000E+00

7 1 1 7.00000000

8 1 1 0.000000000E+00

9 1 1 0.000000000E+00

10 1 1 0.000000000E+00

(8)画矢量数组

*VPLOT,示例:

*vplot,,arrayval(1,1),2

Figure 3-10. Sample Plot

*vplot,,tableval(1,1),2 *vplot,table2(1),tableval(1,1),2

*vplot,tableval(1,0),tableval(1,1),2

(9)修改曲线标签

/GCOLUMN

示例:

/gcol,1,string01

/gcol,2,string02

*dim,xxx,array,10

*dim,yyy,array,10,2

xxx( 1,1) =1e6

xxx( 2,1) = 1e6 + 1e5

xxx( 3,1) = 1e6 + 2e5

xxx( 4,1) = 1e6 + 3e5

xxx( 5,1) = 1e6 + 4e5

xxx( 6,1) = 1e6 + 5e5

xxx( 7,1) = 1e6 + 6e5

xxx( 8,1) = 1e6 + 7e5

xxx( 9,1) = 1e6 + 8e5

xxx(10,1) = 1e6 + 9e5

yyy( 1,1) = 1

yyy( 2,1) = 4

yyy( 3,1) = 9

yyy( 4,1) = 16

yyy( 5,1) = 25

yyy( 6,1) = 36

yyy( 7,1) = 49

yyy( 8,1) = 64

yyy( 9,1) = 81

yyy(10,1) = 100

yyy( 1,2) = 1

yyy( 2,2) = 2

yyy( 3,2) = 3

yyy( 4,2) = 4

yyy( 5,2) = 5

yyy( 6,2) = 6

yyy( 7,2) = 7

yyy( 8,2) = 8

yyy( 9,2) = 9

yyy(10,2) = 10

*vplo,xxx(1,1), yyy(1,1) ,2

Figure 3-14. Sample Plot With User-specified Labels

第四章宏语言

何谓宏

你可以录制一系列命令成宏文件(有时称为命令文件),建立宏是你有限的建立指定一ANSYS命令。你还可以建立嵌套宏(嵌套深度可达20层)。.

建立宏

1 宏名命名规则

宏不应该与现存的ANSYS命令同名;命名规则:

文件名不能超过32个字符;

文件名不能一数字开头;

文件扩展名不能超过8个字符(执行的宏扩展名为.mac);

文件名和扩展名不包含空格;

文件名和扩展名不能包含文件系统或本省计算机系统禁止的字符;

命名错误的警告如下:

图4-1. ANSYS 未知命令的信息对话框

使用.mac扩展名允许象内部命令一样执行宏。你应该避免使用扩展名.MAC,因为ANSYS用其为内部宏。

2 宏搜索通道

缺省,ANSYS在下列通道搜索用户宏(.mac):ANSYS nn/docu目录,(可以使用/PSEARCH命令设置目录指定的)目录(在环境变量指定目录后,逻辑目录之前),当前目录。

3 建立宏

有四种方法:

(1)使用*CREATE

以*END结束。示例:

*CREATE,matprop,mac,macros

MP,EX,1,2.07E11

MP,NUXY,1,.27

MP,DENS,1,7835

MP,KXX,1,42

*END

(2)使用*CFWRITE

不象*CREATE,*CFWRITE 不能指定宏名,你必须首先用*CFOPEN指定宏名。只有ANSYS命令可以被建立,所有其它命令输入命令窗口时将被执行。关闭宏文件,*CFCLOS。

(3)使用/TEE

/TEE,NEW或/TEE,APPEND重定向ANSYS命令,输入是同时执行命令。结束/TEE,END。

(4)使用Utility Menu>Macro>Create Macro菜单

图4-2 宏建立对话框

注意:你不必再最后一行写*END命令。

4 用文本编辑器建立宏

不包括*CREATE和*END命令。

图4-3文本编辑器建立宏

5 使用宏库文件

为了方便,ANSYS允许你一组宏到单一文件中,称为宏库文件。宏库文件有下列结构:MACRONAME1

.

/EOF

MACRONAME2

.

..

/EOF

MACRONAME3

.

..

./EOF

示例:

mybloc

/prep7

/view,,-1,-2,-3

block,,4,,3,,2

finish

/EOF

mysphere

/prep7

/view,,-1,-2,-3

sphere,1

finish

/EOF

注意:每一宏意宏名开始,/EOF结束。宏库文件可以有任何不超过8个字符的扩展名。执行宏和宏库

*USE命令。示例:*use,mymacro。

*use,/myaccount/macros/mymacro.macro

如果宏名有.mac扩展名且寄存在搜索通道,可以:mymacro。

还可以由Utility Menu>Macro>Execute Macro菜单栏执行

相关主题
相关文档
最新文档