ANSA二次开发——初识Entity

本文介绍了ANSA二次开发中基础元素Entity的属性和方法,包括Entity的_id、_name、edge_index等属性,以及ansa_type、card_fields、get_entity_values等方法的使用。通过实例展示了如何获取和修改Entity的属性,强调了在修改ID时需要注意的冲突问题。
摘要由CSDN通过智能技术生成

在之前的四篇文章中

ANSA二次开发——BCGUI简介(1)
ANSA二次开发——BCGUI简介(2)
ANSA二次开发——BCGUI简介(3)
ANSA二次开发——BCGUI简介(4)

我们已经对ANSA二次开发中的界面搭建有了初步的了解
但是如何让界面中的各种数值、按键等和ANSA中的模型中各种数据实现数据的交互?
在回答这个问题前我们首先要了解ANSA中的一个最基本的元素base.Entity。

Entity简介

我们在ANSA中看到的点、线、面、各种类型的网格、单元等等都被称为Entity。

大家可以这么理解,在地球上我们有不同的工种:医生、工人、工程师、老师…但是担任这么多不同的职业的都是人。而ANSA就是地球,点、线、面等就是统称为人(Entity)的不同工种,他们一起组成的整个人类社会,也就是有限元模型。

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:GumDrops
     CONNECTION: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指定参数的值

下面用实例展示一下Entity属性与方法的使用

Entity属性与方法使用实例

Entity属性使用实例

上面只是了解Entity属性与方法的大致含义,接下来通过一个小例子来融会贯通一下

首先打开ANSA,随便导入一个有限元模型,打开ScriptEdit,新建一个文件。
接下来导入我们所需要用到的库

import ansa
from ansa import base
from ansa import constants

这里我的模型是Abaqus的,所以将deck设置为Abaqus

import ansa
from ansa import base
from ansa import constants

deck = constants.ABAQUS

需要解释一下,具体的deck名称其实就是下图中红色方框的名字,不知道的直接点开deck查看就可以了
在这里插入图片描述

下面我们先使用 base.CollectEntities()函数搜索模型中所有点、壳网格类型的Entity,这个函数我在以后的文章中会具体讲解使用方法及注意事项,这里大家只需要知道它能够搜集模型中Entity并返回这种类型Entity组成的列表。

可以看到共有161552个节点、146895个壳单元

import ansa
from ansa import base
from ansa import constants

deck = constants.ABAQUS
Nodes = base.CollectEntities(deck,None,"NODE",recursive=True
  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值