1. 讲解
在编写二次开发的脚本时,通常需要指定边界条件,就不可避免地需要选择某些节点,ABAQUS默认宏的选择代码非常不友好,可以通过以下代码进行修改
session.journalOptions.setValues(replayGeometry=COORDINATE,recoverGeometry= COORDINATE) # 更改索引方式为findAt()+坐标点
下面介绍如何利用矩形框坐标表达式选择网格节点:
- 利用以下代码获得模型所有节点
allNodes = mdb.models['Fig4'].rootAssembly.instances['PART-A-1'].nodes
注意,将Fig4
对应于要选择节点所在的模型名,'PART-A-1'
对应于要选择节点所在的实例名,如图 1 所示。
![]() |
- 创建框选范围(确定次对角线端点坐标)
确定矩形选择框的次对角线端点坐标(x1,y1,z1)和(x2,y2,z2),对于2维,z1和z2取0即可,然后根据以下代码确定范围(加入了误差容许delta)
delta = 1.0e-4 # 误差范围
xmin, ymin, zmin = x1-delta, y1-delta, z1-delta
xmax, ymax, zmax = x2+delta, y2+delta, z2+delta
![]() |
- 获得矩形选择框内所有节点
myNodes = allNodes.getByBoundingBox(xmin, ymin, zmin, xmax, ymax, zmax)
PS:可以使用dir()
查看对象的属性方法,用.
调用方法;其余的节点选择方式(如最近邻、球形等)与之类似
![]() |
2. 代码
综上,用户需要明确自己的模型名YourModel
、实例名YourInstance
、选择范围(x1,y1,z1),(x2,y2,z2),就可以用以下代码选中目标节点保存至myNodes
变量中了。
allNodes = mdb.models[YourModel].rootAssembly.instances[YourInstance].nodes
delta = 1.0e-4 # 误差范围
xmin, ymin, zmin = x1-delta, y1-delta, z1-delta
xmax, ymax, zmax = x2+delta, y2+delta, z2+delta
myNodes = allNodes.getByBoundingBox(xmin, ymin, zmin, xmax, ymax, zmax)