本期,我们具体来讲讲怎么用【Script Editor】这个工具进行二次开发。
我们的目标是:
识别所有包含“PART”字节的Property,并判断是否为PSHELL类型,如果是,将该Property的厚度更改为2mm。完成更改后,打印更改信息以告诉操作者。
第一步,打开测试模型,模型如下所示,其实,模型长啥样没关系,这里我也只是需要这个模型的Property信息而已。
这个模型的Property信息如下所示。
分析下Property信息就可以发现,满足我们条件的Property只有两个,PID分别为101和104。最终的结果应该是将厚度更改为2mm。
当然,我们可以直接手动更改厚度,毕竟只有两个要改的嘛,改起来也是分分钟的事。不过如果满足这个条件的有成千上万个呢?有点难办了。
所以,此处强行将简单问题复杂化,我们用代码的方式来更改。
首先,我们打开Script Editor,打开方式如下所示。
打开的界面如下所示。
选择File --> New --> Python script --> OK,新建一个脚本编辑文件,如下所示。
在如下的新生成界面中,就可以写点程序了。
在写代码前,我们先来理一理思路。
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
本文完
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删