如何学习ANSYS命令流及APDL简解.ppt_第1页
如何学习ANSYS命令流及APDL简解.ppt_第2页
如何学习ANSYS命令流及APDL简解.ppt_第3页
如何学习ANSYS命令流及APDL简解.ppt_第4页
如何学习ANSYS命令流及APDL简解.ppt_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

如何学习ANSYS命令流 筷子学苑交流活动之十 APDL内容简解 Dean 迪安2014 5 4 主要内容 简介及准备 什么是ANSYS命令流 APDL是什么 ANSYS命令流与GUI方式联系及其优点二次开发涉及到的工具如何学习ANSYS命令和APDL工欲善其事必先利其器 编辑器选择 LOG文件的秘密 上篇 ANYS提供两种工作方式 GUI图形用户界面 GraphicalUserInterface又称图形用户接口 操作和命令流 在ANSYS中 命令流是由一条条ANSYS的命令组成的一个命令组合 这些命令按照一定顺序排布 能够完成同GUI方式一样甚至GUI不能完成的的操作 命令流方式融GUI方式 APDL UPFs UIDL MAC 甚至TCL TK于一个文本文件中 可通过 input命令 或UtilityMenu File ReadInputFrom 读入并执行 也可通过拷贝该文件的内容粘贴到命令行中执行 什么是ANSYS命令流 APDL是什么 命令流通常由ANSYS命令和APDL功能语句组成 APDL ANSYSParametricDesignLanguage 为ANSYS参数化设计语言 APDL是用来自动完成某些功能或建模的类似于FORTRAN的解释性语言 提供一般程序语言的功能 它包含三个方面的内容 工具条 参量和宏命令 灵活运用这三种工具 可以实现快速操作 数据快速传递 更新等功能 APDL是什么 上篇简介及准备 解释性语言解释性语言的程序不需要编译 在运行程序的时候才翻译 每个语句都是执行的时候才翻译 这样解释性语言每执行一次就需要逐行翻译一次 效率比较低 现代解释性语言通常把源程序编译成中间代码 然后用解释器把中间代码一条条翻译成目标机器代码 一条条执行 ANSYS命令流与GUI方式联系及其优点 ANSYS命令流可以和GUI方式配合使用 各自分别都能独立完成分析 部分操作只能通过命令方式实现 对于复杂的有限元模型 使用GUI方式的缺点就会暴露 因为一个分析的完成需要进行多次反复 这样 在GUI方式中 就会出现大量重复的操作 会严重影响设计人员的心情 命令流有以下几个优点 可减少大量的重复工作 少许修改的话 只需变动几行代码或者参数就行 可为设计人员节省大量的时间 便于保存和携带 一个复杂的有限元分析的APDL代码也就几百行 也就几十KB 便于交流 设计人员进行交流时 查看APDL代码明显方便得多 高级需求时 可以二次开发 熟练后分析速度要快于使用GUI 减少重复劳动 方便和别人交流 但这并不是说只需学习命令流就可以了 对于初学者来说 GUI方式是最易懂和入门的方式 熟练的操作GUI可以便于命令的理解 因此 我们在学习ANSYS过程中 菜单操作是对ANSYS使用环境熟悉的一个重要过程 命令流方式的优点 上篇简介及准备 二次开发涉及到的工具 可以通过ANSYS为用户提供了良好的二次开发环境 开发适用于用户自己的模块 提高分析效率和质量 ANSYS提供了四种二次开发工具 APDL UPFs UserProgrammableFeatures 用户可编程特性 操作途径是对ANSYS核心FORTRAN代码进行修改 对开发者有限元知识水平要求较高 UIDL UserInterfaceDesignLanguage 用户界面设计语言 Tcl Toolcommandlanguage 工具命令语言 Tk是基于Tcl的图形开发工具箱 二者用于ANSYS界面开发 比UIDL更加接近底层 如何学习ANSYS命令和APDL 命令流通常由ANSYS命令和APDL功能语句组成 大致可以通过命令有无前缀区分 带 的命令 一般是系统命令 总体命令 或各模块标示符 比如功能菜单 UtilityMenu 中的多数操作 主菜单 MainMenu 进入各模块 如删除所有的参数以及模型和结果 clear 前处理命令对应的处理器 PREP7 求解模块 SOLUTION 后处理命令 post1 post26等 带 的命令 一般是APDL的标识符 也就是ANSYS的参数化语言 如 do enddo等无 和 命令 是各个模块下的ANSYS命令 使用时需要进入相应的处理器 如 PREP7下才可以使用ET 定义单元 命令 ANSYS命令按照功能可分为三个大类 前处理命令 后处理命令 和结果查看命令 每个大类有自己对应的处理器 PREP7处理器 后处理 POST1 POST26等 ANSYS有超过1000条命令 很难有人把这些完完全全记住 我建议先学习APDL语法及规则 记住常用的关键词 配合这些关键词套用需要的命令 然后了解常用的ANSYS命令 对于ANSYS常用命令的学习 网上资料很多 更详细的用法可以在ANSYS主菜单 help helptopic中查找 如何学习ANSYS命令和APDL 上篇简介及准备 如何学习ANSYS命令和APDL 上篇简介及准备 图1APDL在ANSYS14 5帮助中的位置 工欲善其事必先利其器 编辑器选择 多数命令流可以直接拷贝到ANSYS命令提示符栏中运行 但部分命令不支持这种方式 而且执行速度比较慢 更常用的方法是将命令流在文本文档中整理好 然后通过 input命令或UtilityMenu File ReadInputFrom运行 最常见的文本编辑器就是WINDOWS自带的记事本了 具有系统自带 功能简单 使用方便的特点 能够满足基本的需求 常用的文本编辑器 UltraEdit和PSPad 编辑器选择 上篇简介及准备 选择编辑器的原因 强大的数据处理能力 文件对比 替换 列选等语法高亮PSPad还具有自动完成功能 UE9 0c版体积小 绿色版 大文件打开速度快 很EASY的列选及列操作 PSPad在大文件打开时速度慢 Unicode支持不太好 另外换行 wordwrap 问题始终没解决 编辑器选择 上篇简介及准备 LOG文件的秘密 通过ANSYSGUI操作时 几乎所有的操作都会记录到工作目录jobname log文件中 并且以ANSYS命令的方式记录 所以 查看log文件就能弄明白操作所对应的命令 这也是初学者学习和编写命令流的一种途径 但log里也记录了很多无用的东西 比如转动视角 放大缩小等 选择实体也会产生啰嗦大量代码 这就需要进行整理和简化 下面7点是网友总结的log文件整理心得 1 要注意时间 因为每次做的东西都会跟在log文件后面 所以要根据时间取舍 不是所有的log文件中的内容就有用的 一开始我建议从新建一个文件开始 2 最好每做一步看一下log文件 可以知道自己的操作对应哪些命令3 有些关于存盘 显示视角等命令可以删除 4 选取实体时往往会产生很多命令 可以简化 5 整理命令流时要新建立一个文本文件 以便从log文件中拷贝所需要的 6 File菜单中的Readinputfrom可以读入自己所建立的命令流来执行 7 可以增加注释语句以增强可读性 LOG文件整理 上篇简介及准备 其实有一个小工具可以帮助你快速整理logAnsysCommandParserANSYS命令解析器 同时 如果你的db文件是在ANSYS中操作的 可以通过下面方式写出记录文件UtilityMenu File WriteDBLogFileLGWRITE Fname Ext Kedit ANSYS命令解析器 上篇简介及准备 用于清理和转换Ansys日志文件 log文件 以生成等价的Ansys命令流的小工具 主要功能 1 删除 auto dist replot 之类因图形界面操作所产生的 无用指令 对建模和计算本身无影响的指令 2 将图形界面选择操作所产生的选择操作指令转换为等价 但更加简洁 可读性更好 更适合手工输入的选择操作指令 转换Ansys日志文件命令流的小工具AnsysCommandParser APDL内容简解 自定义工具栏使用参数数组初步ANSYS get命令和查询函数宏控制语句GUI交互编写命令流的良好习惯有用的东东参考资料 下篇 APDL也像其他编程语言一样 有自己的语法特点和语法规则 其功能语句和FORTRAN语言较为接近 使用工具栏 Workingwiththetoolbar使用参数 Usingparameters使用APDL数学函数和矩阵运算 UsingAPDLMathformatrixmanipulationsAPDL作为宏语言 APDLasamacrolanguage用户界面接口 InterfacingwiththeGUI加密宏 Encryptingmacros APDL主要内容 用参数而不是用数值输入模型尺寸 材料类型等从ANSYS数据库中获取信息 比如节点位置或最大应力在参数中进行数学运算 包括矢量和矩阵运算把常用的命令或宏定义成缩写形式建立一个宏使用if then else分支和do循环等来执行一系列任务 ANSYS没有像其他软件一样的工具图标 但是可以把一些经常用的功能通过自定义按钮的方式添加到Toolbar里面 主要用到了 ABBR Abbreviation的缩写 命令 其格式为 ABBR 按钮上的标签名称 按钮调用的命令或宏的名称 自定义工具栏 命令 ABBR的使用格式如下 ABBR Abbr stringabbr 显示在工具条上的缩写名 最多可包含8个字符 string Abbr所代表的ANSYS命令 系统UIDL函数名或宏名的缩写字符串 如果 ABBR命令的值域string是一个宏名 那么该宏必须放在指定的宏搜索路径下 ANSYSTOOLBAR工具快捷按钮byTAOLEI 说明 通过在界面上增加常用按钮 快速完成相应功能 输入这些命令后 更新工具栏就可以了 也可以修改 ansys v100 v100 ANSYS apdl start110 ans文件 ANSYS11 0 ansys11 其它版本也有相应的文件 ANSYS14 5版本路径ANSYSInc v145 ansys apdl start145 ans 加入 ABBR 达到初始化时就添加的目的 NOPR 以下语句不写入log文件 ABBR ALLS ALLS ABBR RPLOT RPLOT ABBR E PLOT EPLOT ABBR N PLOT NPLOT ABBR V PLOT VPLOT ABBR A PLOT APLOT ABBR MOVE WK KWPAVE P ABBR ALIGN WK KWPLAN 1 P ABBR CALC SYS CALC EXE ABBR UNDO UNDO GO 恢复语句写入log文件 自定义工具栏 下篇APDL内容简解 使用参数 APDL内容简解 参数指的是变量 即能够代表数据 字符或者数组的自定义名称 例如 一个长方体的几何属性 可以用长宽高这几个参数来描述 为形象 简便的表述这几个参数 常用length width和hight变量指代其具体数值 ANSYS变量类型分为 数值 字符和表三种类型 所有数值变量 整形或实形 都以双精度数储存 被使用但未声明的参数都被赋一个接近0的值 或 极小值 大约为2100 例如 若参数A被定义为A B 但B没被定义 则赋给A一个极小值 ANSYS包含两种类型的参数 标量和数组 length width hight ANSYS的变量由不超过8个字符的字母 数字和下划线组成 且变量只能以字母开头 例如ABC PI A 1等为合法变量 而M E VALUE ABC 3M 为非法变量 同时 定义ANSYS变量时要注意以下几点 不能与ANSYS表示字相同 例如自由度 DOF 标识字 TEMP UX PRES等 常用标识字 ALL PICK STAT等 用户定义标识字 如用ETABLE命令定义的标识字 数组类型标识字 如CHAR ARRAY TABLE等 名称为从ARG1到ARG9和从AR10到AR99的参数被保留为局部参数 使用参数 变量命名 通常由下面几种方法给变量赋值 1 使用 set命令 如 set AA 1 SET AA ABC ABC已知或已赋值 SET CPARM CASE1 字符型变量的值需要用单引号括起来2 当然最简单的方法是使用 号赋值AA 1AA ABCCPARM CASE1 使用 get获得变量的值使用ANSYS函数获得变量值通过参数间的运算或合成X A BP R2 R1 2D B E 2 4 A C 求值D B E2 4ACM X2 X1 2 Y2 Y1 2 2 使用参数 变量赋值 定义好的变量可以整体显示或者查看 也可以重新赋值和删除用 STATUS命令把定义的变量排列显示出来字符和数值型变量可以通过parameters scalarparameters查看 修改和删除 数值型数组变量的值通过Parameters ARRAYParameters DefineArray查看 修改和删除清除变量值 set AA或AA 删除某个变量可以用 del del AA del all删除所有变量 使用参数 变量查看和删除 如果要在其他ANSYS任务中使用当前定义的参数 可以先把它们写入一个文件中 然后读取 恢复 该文件 读取文件时 可以全部代替当前定义的参数 也可以只把它们加到当前定义的参数中 会覆盖已存在的参数 可用PARSAV命令把参数写入一个文件中 UtilityMenu Parameters SaveParameters 参数文件是ASCII文件 主要由APDL SET命令组成 该命令用来定义各种参数 可用PARRES命令从一个文件中读取参数 UtilityMenu Parameters RestoreParameters 使用参数 变量保存和恢复 数组初步 数组是ANSYS非常实用有效的数据存储和运算工具 其定义方法与普通变量略有差别 ANSYS中数组包括数值型 字符型和表三种类型的数组 下面分别是三种数组的定义方法 一般格式 DIM 变量名 数组类型 行数 列 面 DIM AA 4 类型ARRAY为缺省类型 维数为4 x1x1 DIM XYZ ARRAY 12 ARRAY类型数组 维数为12 x1x1 DIM FORCE TABLE 5 TTABLE类型数组 维数为5 x1x1 DIM T2 4 3 维数为4x3 x1 DIM CPARR1 CHAR 5 CHAR类型数组 维数为5 x1x1 其中数值型和字符型数组 下标为整数 行列面的起始下标均为1 而TABLE的下标为大于等于0的实数或整数 1 利用 set命令或 给单个或多个数组元素赋值与scalar变量赋值是格式相同 2 利用 set或 赋值时 赋值对象为第一个元素名 赋值数据是一个列矢量 赋值结果是按列下标递增顺序从第一个赋值数组依次赋值 注意 一次最多只能给10个连续数组元素赋值 当只给一个元素赋值时与变量赋值完全一致 举例 1 DIM A ARRAY 12 1 1定义数组A为一个array类型 12行1列A 1 1 2 12给每个元素赋值为其行标 2 DIM B array 4 3 1定义数组B为一个array类型4行3列B 1 1 11 21 31 41B 1 2 12 22 32 42B 1 3 31 32 33 43B 注意此赋值的下标 对于二维数组 赋值顺序按照列进行赋值 注意此规律 三维也是一样的 3 DIM C char 4 1 1C 1 a b c d 数组初步 数组赋值 ANSYS get命令和查询函数 ANSYS get UtilityMenu Parameters GetScalarData 命令可以返回一些值并存储在一个变量或者数组中 例如通过 GET node1x NODE 1 LOC X可以获得节点1的X坐标 并存储在变量node1x中 其GUI操作如下 get命令 GET Par Entity ENTNUM Item1 IT1NUM Item2 IT2NUM这里Par是将被赋值的参数名 Entity是被提取项目的关键词 有效的关键词是NODE ELEM KP LINE AREA VOLU等 ENTNUM是实体的编号 若为0指全部实体 Item1是指某个指定实体的项目名 例如 如果Entity是ELEM 那么Item1要么是NUM 选择集中的最大或最小的单元编号 要么是COUNT 选择集中的单元数目 在ANSYS命令参考手册中的 GET部分对每种实体的Item1值有完整的说明 帮助路径为 CommandReference VIII GCommands GET ANSYS get命令和查询函数 get命令调用格式 可以把 GET命令看成是对一种树型结构从上至下的路径搜索 即从一般到特殊的确定 可用下面的例子来说明 GET命令的用法 下面的第一条命令用于获得单元97的材料属性 MAT参考号 并赋给单元BCD GET BCD ELEM 97 ATTR MAT BCD 单元97的材料号 GET V37 ELEM 37 VOLU V37 单元37的体积 GET NMAX NODE NUM MAX NMAX 最大激活节点数 GET COORD ACTIVE CSYS COORD 激活的坐标系值 GET NCOUNT node 0 count NCOUNT 得到这些节点的个数 GET ND NUM MN node 0 num min ND NUM 得到这些节点中编号最小的节点号正如 GET从数据库获取标量数据 可以用 VGET获取数组信息或UtilityMenu Parameters GetArrayData先定义数组 然后获取数据例如 dim dispval array 20 3 20 3array vget dispval 1 1 node 1 u x UXofnodes1 20incolumn1 vget dispval 1 2 node 1 u y UYincolumn2 vget dispval 1 3 node 1 u z UZincolumn3 ANSYS get命令和查询函数 get命令使用实例 在ANSYS操作过程或条件语句中 常常需要知道有关模型的许多参数值 如选择集中的单元数 节点数 最大节点号等 此时 一般可通过 GET命令来获得这些参数 现在 对于此类问题 我们有了一个更为方便的选择 那就是查询函数 InquiryFunction InquiryFunction类似于ANSYS的 GET命令 它访问ANSYS数据库并返回要查询的数值 方便后续使用 ANSYS每执行一次查询函数 便查询一次数据库 并用查询值替代该查询函数 ANSYS get命令和查询函数 查询函数 InquiryFunction get ELMAX elem count do I 1 ELMAX enddo ANSYS get命令和查询函数 查询函数 InquiryFunction do I ELMIQR 0 13 enddo这里的ELMIQR并不是一个数组 而是一个查询函数 它返回的是现在所选择的单元数 括弧内的数是用来确定查询函数的返回值的 第一个数是用来标识你所想查询的特定实体 如单元 节点 线 面号等等 括弧内的第二个数是用来确定查询函数返回值的类型的 如选择状态 实体数量等 ANSYS提供了许多类似的查询函数 下面举一个例子 其它常用查询函数可以在帮助中查询 NODE ndinqr node key node 节点号 对于key 12 13 14为0key 标识关于node的返回信息 1 选择状态 12 定义的数目 13 选择的数目 14 定义的最大数 2 超单元标记 3 主自由度 4 激活的自由度 5 附着的实体模型ndinqr node key 的返回值对于key 1 1 未选择 0 未定义 1 选择 ndinqr node key AREA arinqr areaid key KEYPOINTS kpinqr kpid key LINE lsinqr lsid key VOLUMES vlinqr vnmi key 系统信息查询函数 INQUIRE 要获得当前系统时间 ANSYS工作目录 文件信息 系统时间等参数使用 INQUIRE命令 格式为 INQUIRE StrArray FUNCStrArray 将接受返回值的字符数组参数名FUNC 指定系统信息返回的类型参考目录 CommandReference X ICommands INQUIRE 查询函数 内嵌获取函数的用法 对于某些信息 除了使用 get命令获取外 可以通过ANSYS内嵌的获取函数来获得信息 主要分成两类 一般函数和数学函数 例如Node1x NX 1 节点1在当前激活坐标系中的x坐标值与上面的 GET node1x NODE 1 LOC X 等价可以看出 此类函数比 get的用法更加简洁和明确 ABS x SIGN x y CXABS x y EXP x LOG x LOG10 x SQRT x NINT x MOD x y RAND x y GDIS x y SIN x COS x TAN x AFUN ASIN x ACOS x ATAN x ATAN2 y x VALCHR CPARM CHRVAL PARM UPCASECPARMLWCASE CPARM ANSYSParametricDesignLanguageGuide B GETFunctionSummary 查询这些函数在ANSYS14 5中的路径为 APDL内容简解 自定义工具栏使用参数数组初步ANSYS get命令和查询函数宏控制语句GUI交互编写命令流的良好习惯有用的东东参考资料 下篇 宏 什么是宏 APDL最强有力的特征之一是创建宏的能力 使用宏能减少工作量并提高分析效率 宏带给开发者高效和惊喜 使你的成就感升华到最大限度 那么什么是惊喜 什么是宏 简单来说宏是把多条命令组合后自定义成一个新命令 以后只要键入这条命令就实现多条命令的效果 类似其它语言中的函数 例如 多次用到如下操作 生成一个尺寸为4 3 2的长方形块和一个半径为1的球体 然后 从块的一个角处减去球体 其基本命令流为 prep7 view 1 2 3block 4 3 2sphere 1vsbv 1 2finish 把这段命令流保存在文本文档中 并命名为mymacro mac 就可以通过 use mymacro或mymacro来执行 在输入窗口执行 CREATE命令 参数的值不确定 参数名被写入文件中 使用 CFOPEN CFWRITE 和 CFCLOS命令 参数名被其当前值取代 值被写入文件中 选择UtilityMenu Macro CreateMacro菜单项 该方法打开一个可作为简单的多行编辑器的对话框来生成宏 参数的值不确定 参数名被写入文件中 生成宏的途径 宏的搜索路径 保存宏的位置可能影响到宏能否正确执行 一般地 ANSYS按如下缺省路径搜索用户生成的宏 mac扩展名 ANSYS的 ansys inc v145 ansys apdl目录 在ANSYS MACROLIB环境变量中定义的路径 在WINDOWS系统中的注册路径 当前工作目录 如果在上级路径和下级路径同时寻找到同样的文件名 则采用上级路径 带参数的宏 通过特殊的字符名 你可以创建多达19个参数的宏 这个特殊的字符名指通过ARG1 ARG2 ARG19来接收传递的具体参数 例如 通过ARG1 ARG2 ARG3 ARG44个变量传递长方体和球的具体尺寸 宏编写如下 prep7 view 1 2 3block arg1 arg2 arg3sphere arg4vsbv 1 2finish按如下方式运行该宏 mymacro 4 3 2 2 1 宏 宏库 宏的家园 宏库顾名思义就是存放宏的库 可以把多个宏集中放在一个文件中 减少宏文件数量 方便管理 其类似其它语言的函数库文件 宏库文件没有明确的文件扩展名 若有 不能超过8个字符 我以前采用了 AML这样一个后缀名 其文件名的命名规则和宏文件一样 宏库文件的结构为 MACRONAME1 宏名1ANSYS语句 具体命令行 EOF 宏1结束退出宏MACRONAME2 宏名2ANSYS语句 具体命令行 EOF 宏2结束退出宏MACRONAME3 宏名3ANSYS语句 具体命令行 EOF 宏3结束退出宏 注意 宏库中有效代码中不能存在空行 不能有整行的注释语句 每个宏以 EOF结束 可以在每行语句后或宏库最末写注释 使用宏库及其中的宏 当宏命令包含在宏库文件时 在执行宏命令前必须先打开宏库文件 使用 ulib mymacros mlib myaccount macros 来打开宏库文件 mymacros为宏库文件名 mlib为扩展名 myaccount macros 为宏库文件所在的路径 在打开宏库文件后 只能用 use命令来执行宏库文件包含的宏命令 不能再用 use命令来执行单独位于宏文件中的宏命令 可以用不带任何参数的 ulib命令来关闭宏库文件后 再用 use命令来执行单独位于宏文件中的宏命令 控制语句 APDL的流程控制是一个难点 也是精髓所在 APDL提供了大量的控制程序的命令 通过这些命令对于判断 重复等很有用处 包括 1 调用子程序 宏 2 宏内的无条件转移3 宏内的条件转移 4 重复命令 增加命令或者若干命令参量 5 命令的循环 最主要的是分支语句和循环语句 条件转移 IF THEN ELSE结构无条件转移 GO重复命令 REPEAT循环语句 DO LOOP需要注意的是以上命令都是带有 号的 条件转移命令IF语句是实现条件判断 根据结果运行一个命令 命令块或另外的命令 GET FREQ1 MODE 1 FREQ IF ABS FREQ1 1 LT 0 01 THEN 如果频率误差小于1 则退出 EXIT ENDIF IF命令的语法为 IF VAL1 Oper VAL2 Base其中 VAL1是比较的第一个数值 或数字参数 Oper是比较运算符 VAL2是比较的第二个数值 或数字参数 if如果 若比较的值为真 则执行Base指定的操作 Oper项 比较运算可能是以下八种 val1 val2为需要比较的参数 VAL1 EQ VAL2 等于 VAL1 VAL2 VAL1 NE VAL2 不等于 VAL1 VAL2 VAL1 LT VAL2 小于 VAL1VAL2 VAL1 LE VAL2LE 小于或等于 VAL1vVAL2 VAL1 GE VAL2 大于或等于 forVAL1 VAL2 VAL1 ABLT VAL2 绝对值小于VAL1 ABGT VAL2 绝对值大于 if 然后呢 BASE的命令为THEN STOP EXIT CYCLE通过给Base变量赋值THEN IF命令就变成了if then else结构 和FORTRAN中的该结构类似 的开始 该结构包括 一个 IF命令 接下来是 一个或多个 ELSEIF命令选项 一个 ELSE命令选项 一个必需的 ENDIF命令 标识字该结构的结束 在最简单的形式中 IF命令判断比较的值 若为真 则转向Base变量所指定的标识字处 结合一些 IF命令 将能得到和其它编程语言中CASE语句相同的功能 无条件转移 无条件 go GO BRANCH1 这个程序体被跳过 不执行 BRANCH1 循环语句 REPEAT命令是最简单的循环命令 通过它可以直接按指定的次数执行上一条命令 并按常数增加命令所带参数 例如 E 1 2 REPEAT 5 0 1E命令在节点1和2之间生成一个单元 REPEAT命令指示执行E命令5次 包括最初的一次 每执行一次第二个节点号加1 结果共生成5个单元 1 2 1 3 1 4 1 5 和1 6 注意 大多数以斜线 或星号 开头的命令 以及扩展名不是 mac的宏 都不可以重复调用 但是 以斜线 开头的图形命令可以重复调用 do循环允许按指定的次数循环执行一系列的命令 DO和 ENDDO命令分别是循环开始和结束点的标识字 下面的do循环例子读取5个载荷步文件 从1到5 并对5个文件做了同样的更改 DO I 1 5 I 1ot5 LSREAD I 读取载荷步文件IOUTPR ALL NONE 改变输出控制ERESX NOLSWRITE I 重写载荷步文件I ENDDO DO开始循环 ENDDO结束循环 你可以用 EXIT 退出循环 和 CYCLE 跳到DO循环末 控制循环 EXIT和CYCLE也可以根据if test的结果来执行 控制语句 循环 do GUI交互 在一个ANSYS宏中 可以通过许多方法去访问ANSYS图形用户界面 GUI 的组件 可以生成对话框提示用户输入多个参数的值 可以通过 MSG命令让宏写一条输出信息 可以让宏更新或移走状态条 可以允许用户在宏中通过图形拾取选择实体 可以调用任何对话框 通过在宏中包含 ASK命令 该宏就可以提示用户输入某个参数的值 ASK命令的格式为 ASK Par Query DVAL 多个参数输入时 可采用multipro命令 MULTIPRO命令可以构造一个简单的多行提示对话框 该对话框最多可以包含10个参数提示 该命令允许使用UIDL中的 CSET命令来产生提示 并为每个提示指定缺省值 MULTIPRO命令必须和以下命令一同使用 1 10个 CSET命令 最多两个允许用户输入两行内容的 CSET命令 该命令语法为 MULTIPRO start Prompt Num CSET Strt Loc End Loc Param Name Prompt String Def ValueMULTIPRO end GUI交互 多参数输入窗口 start 文字串 作为第一个参数 标识字MULTIPRO结构的开始 必须括在单引号中 Prompt Num至少有一个 CSET命令省略了Def Value参数或Def Value设为0 才必须用到该参数 该参数为整形数 等于接下来的 CSET提示的数目 Strt Loc End Loc对第一个 CSET命令 Strt Loc参数的初始值为1 End Loc的值为Strt Loc 2 对第一个 CSET命令 值为3 以后Strt Loc的值为End Loc 1 Param Name参数名 用来存储用户输入的值 若用户没有输入 其值为Def Value的值 Prompt String 字符串 最多可包含32个字符 用来描述参数 必须括在单引号中 end 文字串 用来结束MULTIPRO命令 GUI交互 多参数输入窗口详解 GUI交互 多参数输入窗口实例 编写命令流的良好习惯 1 设计规划就像ANSYS的各个模块一样 规划好自己的代码流程 分成模块 比如参数定义和输入模块 建模 加载 求解 后处理等 重复用到的模块 考虑写成宏文件 规划得越详细 模块分工越明确 越容易明白下一步该做什么 这好比搭积木的游戏 你可以把你的积木块组合成各种各样的形状 但首先要熟悉每个积木块的功能 2 有备无患复杂的分析编写命令流之前 先找出难点所在 逐一克服难点 整体编写时就无压力了 如无法确定遇到的困难 可由最简单功能开始实现 慢慢加深 实现自己的目的 常用的代码就留存 随时拷贝修改成为自己的代码 3 见名知意程序再小 用的变量也不会少 变量起名应当见名知意是个老话题了 好处是显而易见的 4 对称之美中国人讲究对称之美 用在编程里也很合适 如果程序里用到A循环嵌套B判断 B判断又包含C循环之类的结构 记着使用缩进法 让A ENDDO对齐A DO B ENDIF对齐B IF 诸如此类 依次缩进 总之对称就等于美观加易读 良好习惯 5 多加注解对代码中定义的变量 宏 以及功能的添加注释说明 别嫌麻烦 如果过了三月五月 连自己写的东西都看不明白了 那才大麻烦 6 注重通用编写的东西尽量可以在以后使用到 这就需要能用参数表达的值尽量改用参数 可以带入或需要修改的部分尽量集中 良好习惯 有用的东东 常用符号 文件读写 常用宏解析 连接符号 常用符号 一般每行只写一条命令 是把两行或者是多行命令流连接为一行的符号 k 4 02 5 5 k 4 9 3 85 k 4 9 0 强制转化符号 把字符参数名括在两个百分号 中可以实现强制替换 主要目的是实现在字符串中插入变化的子字符串 StrTitle Model1 TITLE Thisis StrTitle REPLOTStrTitle Model2 TITLE Thisis StrTitle REPLOT在任何命令名域作为命令名 也可在域1中作为一个 未知命令 的宏名 例如 R RESUME R MODEL DB字符 数字混合替换例子某变量由文件名 序号 扩展名组成 如FN TEST1 DAT FILENAME TEST NO 1FN FILENAME NO DAT 得到的参数为FN TEST1 DAT 参数与数据文件的写出与读入 基本用法 ANSYS的参数或数组通常使用 VWRITE命令输出到文件中以便查看和处理其命令格式为 VWRITE Par1 Par2 Par3 Par19共可以输出19个参数 10个数组 或者常量使用该需要注意 使用 VWrite命令把数据输出到文件时 必须要使用 CFOpen命令事先打开一个文件 CFOpen命令必须和 CFClos命令配对使用 VWRITE这个命令只能通过file readinputfrom 实现 不能在窗口输入执行 Vwrite命令后面必须紧跟输出格式说明 例如 Vwrite a b c 格式说明 格式说明中Fw d w的数值不能太小 以至于输出的数据丢失了整数部分的精度 例如 a 123 4 Fw d中的w至少要为5 否则在ANSYS中运行时报错 这样的非语法类错误 很难发现 为了避免此类错误发生 w应该至少设置为输出数据的所有数字个数 1 小数点 常用格式说明 1 一对单引号 用于在输出数据的时候 输出注释字符串 常常用来增加一些说明文字 增加可读性 比如 Vwrite Width Length Height width F6 3 length F6 3 height F6 3 2 nX 输出n个空格 比如 在输出的a b c3个数据之间加入2个空格 vwrite a b c F6 3 2X F6 3 2X F6 3 3 结束当前行的输出 转到下一行输出 如果两个 连续出现 则添加一个空行 4 没有直接像FORTRAN语言一样的整数输出格式I 数组写出与读入 编写命令流过程中 经常需要把文件中数据 地震波数据 读入数组或写出数组到文件中 可以使用 VREAD命令用数据文件填充数组 基本用法 数组读写 UtilityMenu Parameters ArrayParameters ReadfromFile 该命令从一个ASCII数据文件读取信息 并由指定下标处开始写入数组中 可以通过数据描述符来控制从文件中读取的信息的格式 数据描述符必须括在圆括号中 并放在 VREAD命令后 VREAD ParR Fname Ext Label n1 n2 n3 NSKIP其中 ParR 是要将外部数据写入的参数或数组变量名 如是数组 必须已经定义 用 DIM 且指出写入的开始位置 即包含下标 I J K 默认首行首列首区 然后写入从 I J K 开始到结尾的所有数组元素 如是参数 只输入一个值 Fname 是存放数据的外部文件名 Ext是扩展名 Label 可为IJK IKJ JIK JKI KIJ KJI 或blank 默认为IJK 表示对数组ParR写入的顺序 如IJK表示先写列再写行 先K 再J 再I 对于二维数组 先写列 下标J改变最快 JIK表示先写行再写列 先K 再I 再J 对于二维数组 先写行 下标I改变最快 n1 n2 n3 表示按上面的顺序 各下标分别要写入的数据个数 如JIK 5 6表示对ParR按行写入 共写5列 对应J 6行 对应I 即三个数按顺序分别对应Label中的三个标识符 例如 KIJ n1对应K n2对应I n3对应J n2 n3默认为1 NSKIP 从文件中读取数据时 首先跳过文件开头的NSKIP行 如 说明部分等 非数据内容 默认为0 注意 VREAD命令只能用于3维 含 及以下的数组 数据文件data txt内容如下 1 1 2 2 3 34 4 5 5 6 6执行命令流 DIM AA 2 3 数组AA有2行3列 VREAD AA 1 1 DATA TXT JIK 3 2 3对应J 2对应I 3F6 1 STATUS AA不同控制符合IJK顺序导致读入的数组不同 或者出错 下面文章做了详细的比较 对ANSYS中 VREAD命令用法的总结 数组读写 fin

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论