大家在接触ANSA二次开发时最常做的就是对ANSA中的“实体”—Entity进行操作。
这里说的实体大家可以理解为在ANSA中看到的基本所有可以通过鼠标选择以及操作的元素。
举个“栗子”
我们在ANSA中看到的点、线、面、各种类型的网格、甚至连接触对都可以被称为实体。其实最常见的实体就是在我们左侧模型树中看到的,如下图所示。
在ANSA二次开发中通过下属命令打印实体的类型,可以看到ANSA二次开发中的实体是Python中类的概念。
这也很好理解,实体中不管是点、线、面这些几何元素,还是壳网格、实体网格这些单元,亦或是属性、材料等都是由自己的名字、ID、comment一些通用的属性。创建一个Class-类作为所有实体的父类,然后再继承这个父类,通过增添不同的属性形成新的子类,这样做既能够提高代码使用效率,还能够使得更好地封装代码。
后面几期的文章中我也会用实例来带大家练习类这个概念如何在ANSA二次开发中应用,它是如何提高我们代码开发的效率的。本文章主要聚焦点则是在“实体”概念的讲解。
回归正题,既然作为Python语言中的类,那么必然有两个最基本的“属性”:
l 类属性
l 类方法
下面我们注意详细讲解实体的这两种“属性”。
Entity属性
那我们把ANSA中的元素即Entity比作不同工种的人。那么人就会有一些最基本的属性,比如说姓名、身高、体重等等,同样ANSA中即使不同种类的Entity也都会的属性。
ANSA中有些Entity的属性存在,但是为空。这是因为你没有将属性赋予给他,比如说Entity的名字,不进行设置默认是空字符串。
下面是一些常用的Entity属性,当然有些属性是某些Entity特有的。
· _id (int) —— 在相同种类Entity中的id号
· _name (string)—— 该Entity的名字,当然如果没有返回的是空字符串
· _edge_index (int)—— 不是所有的Entity都有,我也不知道代表啥
· _comment (string)—— 该Entity的描述,类似于个人简介
· _bname (string)—— 以二进制命名的名字
· _bcomment (string)—— 以二进制表示的Entity的描述
· position (object)—— Entity的位置信息,但是只有以下种类的Entity有这个属性:
GRIDs, MORPH POINTs, CONNECTION:SpotWeld_Points,CONNECTION:GumDropsCONNECTION:Bolts, CONNECTION:Robscans, CONNECTION:Points,TARGET POINTs, POINTs, CENTERs, HOT POINTs, CONNECTOR ENTITY, GENERIC_ENTITIES_BUILDER, GEB_BC, GEB_OR, GEB_MT,GEB_SB, GEB_GN, A_POINT, LC_POINT.
Entity方法
上面我们知道Entity有着不同的属性,那我们如何获得这些属性,如何修改这些属性?
下面就介绍一下Entity的不同方法
· __init__ 这个方法负责初始化Entity类
· ansa_type 返回该Entity在不同deck中的类型,比如说点在ABAQUS中叫NODE,在NASTRAN中叫GRID
· card_fields 返回该Entity的各种参数组成的列表,这里的参数时在ANSA中点击不同deck中INFO弹出界面所显示的内容,下面是GUI中在ABAQUS中现实的壳单元参数与使用card_fields方法打印出来的参数对比,可以发现两者完全一样。
· get_entity_values 获取该Entity指定参数的值,例如可以查询上面图片中Shell单元的ID,PID等等
· is_visable 返回布尔值,该Entity在屏幕中可见返回True,否则返回False
· set_entity_values 设置该Entity指定参数的值
以上就是有关于ANSA二次开发中实体的一些基础概念以及理解。下篇文章中我会用例子详细讲解实体的属性以及方法的应用。
我是ANSA攻城狮,下次见,同学们!