首页/文章/ 详情

ANSA中的Script Editor怎么用?

5月前浏览12263

本文摘要(由AI生成):

本文介绍了如何在ANSA的Script Editor中,使用Python脚本查找并修改特定属性(Properties)的厚度。首先,通过`CollectEntities`函数检索出所有属性,然后遍历这些属性,检查其名称是否包含"PART",如果包含且类型为"PSHELL",则使用`SetEntityCardValues`函数修改其厚度值。文章还展示了如何在Script Editor中编写、保存和运行代码,以及如何通过打印语句检查每一步的执行结果。


大家好,我是团长。

本期,我们具体来讲讲怎么用【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


本文完。


结构基础通用ANSA材料
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2020-09-05
最近编辑:5月前
团长
硕士 | 白车身结构设... 专注ANSA使用技巧-微信公众号『C...
获赞 115粉丝 970文章 141课程 6
点赞
收藏
作者推荐
未登录
2条评论
团长
专注ANSA使用技巧-微信公众号『C...
3年前
关注*****【CAEer】,了解更多ANSA的使用技巧。
回复
宋军
不断学习,不断前行。
4年前
很不错的东西 支持一下
回复
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈