本次推文主要分享有关abaqus——Python二次开发的常用内核指令,方便我们高效地进行Python二次开发,代码主要源自《Abaqus GUI程序开发指南Python语言》。
# 高亮单个对象
p = mdb.models['Model-1'].parts['Part-1']
# 指定零件上某边
f1 = p.edges[0]
# 高亮显示该边
highlight(f1)
#指定零件上某单元面
f3 = p.elementFaces[1]
#高亮显示该单元面
highlight(f3)
#取消高亮显示
unhighlight(f3)
# 高亮显示多个对象
e = p.elements
p.Set(elements=e,name='ele_set')
highlight(p.sets['ele_set'])
图1 高亮显示指定边和指定面
# ---------------创建单元集 合---------------
# 指定part对象
p = mdb.models['Model-1'].parts['Part-1']
# 指定部件所有单元
e = p.elements
# 创建包含所有单元的集 合,set名为 ele_all
p.Set(elements=e,name='ele_all')
# 创建索引号为 0~9 的单元集 合,set名为 ele_set1
p.Set(elements=e[0:10],name='ele_set1')
# ---------------创建节点集 合-----------------
# 指定部件所有节点
n = p.nodes
# 创建包含所有节点的集 合,set名为 node_all
p.Set(nodes=n,name='node_all')
# 指定部件的实体块
c = p.cells
# 将部件的第一个实体块创建一个集 合,名为 set_cell
p.Set(cells=c[0:1],name='set_cell')
# 指定部件的几何面
f = p.faces
# 将部件第一个几何面创建为集 合,名为 set_face
p.Set(faces=f[0:1],name='set_face')
用同样的方法也可以对点和线创建集 合。
startLabel
为起始编号,increment
为顺序编号增量,该方法只针对孤立网格(.inp或.odb导入的网格)。
# 对部件单元重新编号
p.renumberElement(startLabel=100,increment=1)
# 对部件节点重新编号
p.renumberNode(startLabel=100,increment=1)
对于六面体单元,每个单元有6个面,用户可以选择需要生成的多个方向的内面。 face1Elements、face2Elements、face3Elements、face4Elements、face5Elements、face6Elements
分别表示每个单元6个方向的面。
e = p.elements
# 将所有单元的2,3方向面创建为面集
surf = p.Surface(face2Elements=e,face3Elements=e,name='plate_surf')
# 不同的高亮显示
highlight(surf)
highlight(p.surfaces['plate_surf'])
# 获取所有单元数 ne
ne = len(p.elements)
# 获取所有节点数 nn
nn = len(p.nodes)
print ne,nn
# 获取所有实体块数 nc
nc = len(p.cells)
# 获取所有几何面数 nf
nf = len(p.faces)
# 获取所有几何边数 ned
ned = len(p.edges)
# 获取所有几何顶点数 nv
nv = len(p.vertices)
# 获取所有集 合数 nsets
nsets = len(p.sets)
# 获取所有复合材料layup数 nlayup
nlayup = len(p.compositeLayups)
# 获取所有基准数 nd
nd = len(p.datums)
# 获取所有单元面数 nface
nface = len(p.elementFaces)
# 获取所有特征数 nfeature
nfeature = len(p.features)
适用于孤立网格,谨慎使用!
p = mdb.models['Model-1'].parts['Part-1-mesh']
n = p.nodes
# 合并节点1和节点9
p.mergeNodes(node1=n[0],node2=n[8])
图2 合并节点前
图3 合并节点后
f1 = p.elementFaces
f2 = p.elemFaces
len(f1)
len(f2)
elementFaces
不重复存储两个相邻单元的共用面,elemFaces
存储的是每个单元的所有面。
p = mdb.models['Model-1'].parts['Part-1']
f = p.faces
c = p.cells
# 定义过某点的面
f1 = f.findAt((1,0,0))
# 定义过两点的几何体
c1 = c.findAt((1,0,0),(1,0,1))
from datetime import date
import time
# 输出当前的系统时间
time.asctime()
图4 输出系统时间