ANSA有自带的用于过滤筛选或修改的语法命令,掌握这些命令可以大大的提高选择、重命名等等工作的效率。
第一章、语法范围
过滤-修改( Filter-Modify )语法是一种特殊的脚本语言,它由表达式和语句组成,这些表达式和语句结合了一系列逻辑和关系操作,以便形成用户指定的查询修改条件。Filter-Modify语法可用于通过选择列表快速、高级地过滤和修改项的各种属性。
1.1 数学函数
1.2 字符串函数
1.3 模型信息提取函数
1.4 常数函数
第二章、过滤语法表达式
表达式允许直接引用一个或多个卡片域字段(card fields)以及过滤器修改命令。要引用域字段内容,用户必须将其声明为表达式变量,并将其名称包含在"@"符号中。此外,可以通过指针将其他交叉引用的卡片域字段的引用包含在表达式中。指针用"->"符号声明。注意,表达式最多只能包含300个字符。
接下来看一组例子。
例1:筛选SECTION_SHELL属性中满足如下条件的项:
表达式:@MID@ == 240 && (@T1@ >= 3.5 && @T1@ <= 6.5)
例2:从*PART_SHELL属性中筛选满足如下条件的项:
2.材料类型为*MAT_PIECEWISE_LINEAR_PLASTICITY;
3.材料属性中LCSS项是通过*DEFINE_TABLE定义的
表达式:@ELFORM@ == 16 && match (@MID@->@__type__@, "MAT24") && match (@MID@->@LCSS@->@__type__@, "TABLE")
例3:筛选属性中PID为奇数的项:
表达式:fmod(@Id@,2) == 1
同时,有些情况下可以不必使用@加变量名的方式来筛选变量。
但是,在以下情况下必须使用@:
1.卡片字段名中包含特殊字符(如“-”、“/”、…)时,需要在“@”符号中包含卡片字段名。或者从非字母开始。例如NASTRAN PSHELL '12I/T^^3'字段;
2.在expression选择的过滤器中,当在会有歧义的情况(如PSHELL卡片中的"TS/T")和成员访问操作符(MID1->Name)的情况下需要使用@符号。为了避免在这种情况下表达式取值,字符串必须用引号括起来。例如,想要搜索PSHELL名称中的字符串 '@T@', 必须写成"Name:'@T@'"
同时筛选器中支持正则表达式:
例4:筛选属性名称中包含数值的项:
表达式:Name:[0-9]
例5:从属性中筛选ID是从数字1开头,且至少包含另外2个数字的项:
表达式:Id:^1..
例6:从属性中筛选ID是从数字1开头,且只包含另外2个数字的项:
表达式:Id:^1..$
第三章、修改语法表达式
“修改”表达式可以通过显式定义项的新值或根据用户指定的模式修改项的当前值来大规模修改项的属性。可以在选择列表中进行修改,或者在快速修改字段中进行修改,或者在修改窗口中进行修改。在修改窗口中,用户可以通过为一个或多个字段添加修改规则来定义修改表达式。
例1:将材料杨氏模量从MPa改为GPa方法:在材料列表的”E”列快速修改中输入:$/1000或,如果在列表中没有显示”E”,打开Modify窗口,在Modify Rules中添加规则E $/1000$ 符合为当前值
例2:
将属性名称后面增加一个部件厚度值,修改为<原始名>"T=<thick_val>mm"
方法:在属性列表的"Name"列的快速修改位置输入:$."T=".@T@."mm"
例3:使用COUNTER修改项、属性和材料的IDs。具体的内部计算方法为COUNTER进行计数,然后从最小的ID开始读取,接下来读取第二小的ID,然后依次类推。因此,每一步中的COUNTER等于已经读取的项的个数,而不是ID本身的值。COUNTER的语法为:[a + COUNTER * b],其中,b为步长,a+b为新序列的初始值。
一些修改语法示例:
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删