首页/文章/ 详情

Python二次开发——常用内核指令

1年前浏览901

Python二次开发——常用内核指令

本次推文主要分享有关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 合并节点后

elementFaces和elemFaces的区别

f1 = p.elementFaces
f2 = p.elemFaces
len(f1)
len(f2)

elementFaces不重复存储两个相邻单元的共用面,elemFaces存储的是每个单元的所有面。

findAt 的使用

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 输出系统时间


来源:易木木响叮当
Abaqus复合材料二次开发材料
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2023-06-01
最近编辑:1年前
易木木响叮当
硕士 有限元爱好者
获赞 218粉丝 253文章 348课程 2
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈