2021-10-24

上文我们介绍了Entity的属性以及方法,作为ANSA二次开发的基本元素,不仅要掌握Entity的属性及方法,还要熟练掌握操作Entity的各种函数。

我们再ScriptEdit中搜索Entity关键词,会出现下图这么多针对Entity操作的函数。而且这还不是针对Entity操作的全部函数。相信新手对于这么多函数一定很头大。
在这里插入图片描述

不要害怕,绝大部分的函数使用频率都很低,下面我挑选出使用频率最高的集合函数进行详细的讲解。

搜集Entity

base.CollectEntities(deck, containers, search_types, recursive, filter_visible, prop_from_entities,mat_from_entities,model_browser_filter,no_expand_types,hidden_entities)

  • deck (integer) -在哪个求解器下搜寻Entity ,例如ansa.constants.ABAQUS
  • containers (object) –在哪里搜寻,可以是container或者container组成的列表, Containers可以是type group, part, set, property,material, face, volume, elements。如果container 是 None, CollectEntities会搜寻搜友 ANSA 的数据库.
  • search_types (object) –搜寻的Entity种类。 可以是SHELL,SOLID, GRID 等 除此之外,还可以是
    PROPERTIES” 、“MATERIALS” 、“ELEMENTS”、 “ALL_ENTITIES“ 、“CONNECTIONS
  • recursive (boolean) –(optional)是否搜寻更高级别的container
  • filter_visible (boolean)–(optional)是否直搜寻界面可见的Entity,默认是False
  • prop_from_entities (boolean) –(optional)
    在search_type是一个属性的情况下,该参数控制是否必须从容器中的实体引用的实体中获取该属性。例如,search_type为"
    PSHELL “, container为” PART ",
    prop_from_entities为True,如果该部分包含shell,则返回相应的PSHELL。否则,如果prop_from_entities为False,则返回None。默认是False。
  • mat_from_entities (boolean) –(optional)
    在search_type是一个材料的情况下,该参数控制是否必须从容器中的实体引用的实体获取材料。例如,search_type为" MAT1", container为" PART “, mat_from_entities为” yes ",如果该部分包含MAT1 material的元素,则返回相应的material。否则,如果mat_from_entities为False,则返回None。默认是False。
  • 后面几个参数不太常用这里就不介绍了,有兴趣的自行查看帮助文档
  • Return-返回搜集到的Entity组成的列表

当我们只需要对Entity的对象对象进行迭代时,使用ansa.CollectEntitiesI()效率会更高,使用方法和base.CollectEntities完全一样。

比如说我现在想将所有的SHELL的id与之对应的PID储存到一个字典中,这时候对比使用CollectEntities()与CollectEntitiesL()的时间。

但是这里注意一点根据我试验的结果,当你搜集的Entity数量较少时,使用ansa.CollectEntities()的效率反而会更快,这一点我也很迷糊,有大神知道怎么怎么回事的话,评论区指教一下。

总之,当搜集的Entity数量较少时使用ansa.CollectEntities()效率高;当搜集的Entity数量较多时使用ansa.CollectEntitiesI()效率高。分界线的话这里只能靠试。我这个模型壳单元一共3204678,下面是测试用代码:

import time 
import ansa 
from ansa import constants
from ansa import base

deck = constants.ABAQUS

#collect all the shells in abaqus
Shells = base.CollectEntities(deck,None,"SHELL")
dict = {}
time_start = time.time()
for i in base.CollectEntities(deck,None,"SHELL"):
	temp= i.get_entity_values(deck,("ID","PID"))
	id = temp["ID"]
	pid = str(temp["PID"]._id)
	dict[pid] = id
time_end = time.time()
print("THe time of CollectEntities is{}".format(time_end-time_start))

dict1 = {}
time_start1 = time.time()
for i in base.CollectEntitiesI(deck,None,"SHELL"):
	temp= i.get_entity_values(deck,("ID","PID"))
	id = temp["ID"]
	pid = str(temp["PID"]._id)
	dict1[pid] = id
time_end1 = time.time()
print("THe time of CollectEntitiesI is{}".format(time_end1-time_start1))

输出

THe time of CollectEntities is30.46959900856018
THe time of CollectEntitiesI is24.85980200767517

base.GetEntity(deck, type, element_id, location)

  • deck (integer) –在哪个求解器下搜寻Entity ,例如ansa.constants.ABAQUS
  • type (string) –所搜寻Entity的种类。还可以是“PROPERTIES”和“MATERIALS
  • element_id (integer) –Entity的id
  • location (string) –(optional) 没搞懂
  • Return - 成功返回Entity,否则返回None

创建Entity

base.CreateEntity(deck, element_type, fields, mbcontainer, include, debug)

  • deck [required] 在哪个求解器下创建Entity ,例如ansa.constants.ABAQUS
  • element_type [required] 创建什么类型的Entity,例如ABAQUS中的点为“NODE”
  • fields [optional] 创建的Entity中属性与属性值的键值对组成的字典
  • mbcontainer [optional] 尚未搞清楚用途,不过并不常用,可以忽略
  • include [optional] 也不太常用
  • debug [optional]这个参数是设置CreateEntity()创建后的返回值,设置为base.constants.REPORT_ALL时,在创建Entity后返回两个item,一个是创建是否成功,另外一个是创建失败的信息组成的字典,有兴趣自行研究。
  • Return 在debug参数被赋予的时候,返回上述所说的两个值;否则创建成功返回Entity,不成功返回None

这里面deck、element_type参数值是必须给的,其他的参数值可给可不给。也就是说你可以不给fields的值来创建一个空的Entity。

删除Entity

base.DeleteEntity(entities, force, compress)

  • entities [required] 需要删除的Entity,可以是单个Entity,也可以是由Entity组成的列表
  • force [optional] 设置为True删除Entity时会删除和该Entity相关联的其他Entity
  • compress [optional] 设置为False时不会删除该Entity的点及属性
  • Return 删除成功返回0,否则返回0

获取Entity属性信息

base.GetEntityCardValues(deck, entity, fields

这个函数的使用方法和Entity方法中Entity.get_entity_values()不能说相似,只能说完全一样。

  • deck [required] 在哪个求解器下创建Entity ,例如ansa.constants.ABAQUS
  • entity [required] 要得到哪个Entity的属性
  • fields [optional] 需要得到的属性值的属性组成的列表,例如[“ID”,“PID”,“X”]

编辑Entity属性信息

base.EditEntity(deck, entity, location, read_only)

  • deck [required] 在哪个求解器下创建Entity ,例如ansa.constants.ABAQUS
  • entity [required] 要编辑(查看)哪个Entity的属性
  • location [optional] Material Database的位置(暂时没用过)
  • read_only [optional] 显示的Entity属性窗口中内容是否可编辑,True不可编辑,默认False可编辑

该函数会将Entity的属性框显示出来,如下所示,这里我设置了read_only=True,属性不可编辑,这能查看。
在这里插入图片描述

base.SetEntityCardValues(deck, entity, fields, items, debug)

这个函数的使用方法和Entity方法中的Entity.set_entity_values()不能说相似,只能说完全一样。

  • deck [required] 在哪个求解器下创建Entity ,例如ansa.constants.ABAQUS
  • entity [required] 要编辑哪个Entity的属性
  • fields [optional] 创建的Entity中属性与属性值的键值对组成的字典
  • item [optional] 只用于创建TABLE类型的Entity,是由列表组成的列表,例如 [ [curve1, curve2,
    …], [x1, x2, …] ]
  • debug [optional] 这个参数是设置CreateEntity()创建后的返回值,设置为base.constants.REPORT_ALL时,在创建Entity后返回两个item,一个是创建是否成功,另外一个是创建失败的信息组成的字典,有兴趣自行研究。
  • Return 在debug参数被赋予的时候,返回上述所说的两个值;否则创建成功返回0,不成功返回非零值

base.SetEntityId(entity, id, force, respect_frozen)

这个函数能直接设置Entity的ID,当需要修改Entity的ID时更加方便

  • entity [required] 要修改哪个Entity的ID
  • id (integer) –要赋予的ID
  • force (boolean) –(optional) False: 如果赋予的ID已经被同类的Entity占有,则不执行操作 True: 如果赋予的ID已经被同类的Entity占有,则函数会赋予Entity一个新的ID
  • respect_frozen (boolean) –(optional) False:
    忽略FROZEN_ID属性,即使Entity的ID被锁定也会赋予新的ID True: 当Entity的ID被锁定,不赋予新的ID
  • Return-成功赋予ID返回1,否则返回0。

设置Entity显示

base.SetEntityVisibilityValues(deck,fields)

  • deck (integer) –在哪个求解器下设置Entity是否可见 ,例如ansa.constants.ABAQUS
  • fields (object) –(optional) 由Entity种类:on/off组成的字典 Return-成功返回1,失败返回0
    举个例子,显示GASKET,隐藏FASTENER: m =
    base.SetEntityVisibilityValues(constants.ABAQUS, {“GASKET”: “on”,
    “FASTENER”: “disable”})

常用的Entity操作基本就是这些,后面想到了其他的再补充。
之后的文章会用例子的形式来进一步展示这些函数的使用方法。

码字不易,求一键三连,谢谢大家了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值