本文摘要(由AI生成):
本文介绍了如何在ANSA的Script Editor中,使用Python脚本查找并修改特定属性(Properties)的厚度。首先,通过`CollectEntities`函数检索出所有属性,然后遍历这些属性,检查其名称是否包含"PART",如果包含且类型为"PSHELL",则使用`SetEntityCardValues`函数修改其厚度值。文章还展示了如何在Script Editor中编写、保存和运行代码,以及如何通过打印语句检查每一步的执行结果。
大家好,我是团长。
在写代码前,我们先来理一理思路。
1、检索所有的Property实体。
2、判断检索到的每一个Property实体的名称。
3、判断名称是否包含“PART”字节。
4、进一步判断实体类型是否为“PSHELL”。
5、更改满足3和4的Property的厚度为2mm。
6、更改后打印出更改信息。
接下来,我们按照以上思路按部就班地的实现功能。
我们来偷偷懒。
我们首先需要用CollectEntities来检索到所有的Property,在检索栏输入collect即可发现base.CollectEntities函数被筛选出来,选中这个函数,右键点击鼠标该函数立即直接出现在编辑窗口,双击该项目,也会发现关于这个函数的使用说明和使用示例出现在下端的Help栏中。
参考Help栏里的函数示例,我们可以写出以下程序实现步骤1的功能。
import ansafrom ansa import basefrom ansa import constantsdef main(): props = base.CollectEntities(constants.NASTRAN, None, "__PROPERTIES__") print("props:",props) for prop in props: print("PID: ", prop._id)main()
在如下的界面中,1展示了以上的代码,2展示了如何保存该段代码,3展示了如何运行代码(也可以按键盘上的F5快捷键运行代码),4展示了输出的运行结果。
继续根据以上步骤继续对该段代码进行扩充,(建议新手对每一步的执行结果进行检测,用print函数打印出每一步的执行结果),不断调试,获得实现以上要求的所有代码内容:
import ansafrom ansa import basefrom ansa import constantsdef main(): props = base.CollectEntities(constants.NASTRAN, None, "__PROPERTIES__") #print("props:",props) for prop in props: print("PID: ", prop._id) propName = prop._name print("propName: ", propName) propName.find("PART") if propName.find("PART") == 0: print("[PART] Found!!!") propType = prop.ansa_type(constants.NASTRAN) if propType == "PSHELL": print("[PSHELL] Found!!!") vals = {'T': 2} changeStatus=base.SetEntityCardValues(constants.NASTRAN, prop, vals) if changeStatus == 0: print("the thickness is changed.")main()
以上代码的执行结果如下所示:
Generating code...PID: 101propName: PART_extra_reinf[PART] Found!!![PSHELL] Found!!!the thickness is changed.PID: 102propName: SideMemberPID: 103propName: CrossUpperPID: 104propName: PART_CrossLower[PART] Found!!![PSHELL] Found!!!the thickness is changed.PID: 105propName: ReinfPID: 106propName: SideMemberPID: 110propName: PART_suport[PART] Found!!!Code generation completed.running...finished.
回到ANSA打开的模型界面,打开Property属性,我们发现满足要求的Property的厚度已经被修改,如下:
本文不仅展示了如何使用Script Editor,还展示了更改参数的常用函数搭配,这在二次开发中是非常常见的搭配。
a、检索得到实体:CollectEntities
b、更改实体参数:SetEntityCardValues
本文完。