在我们的Python脚本中,选择几何图形是最常见的操作之一,有时也是最难自动化的。这个任务对于分配材料属性、定义边界条件、控制网格设置、创建相互作用等都是必不可少的。我想介绍使用Python命令在Abaqus中选择几何图形的方法:使用“getBounding…”函数。之前我们介绍过“findAt”函数和" getByBoundigBox”函数。
这组命令有三种类型:getByBoundigBox(通过边界框获取)、getByBoundingCylinder(通过边界圆柱体获取)和 getByBoundingSphere(通过边界球体获取)。它们返回由参数定义的盒子、圆柱体或球体中包含的几何对象。
下面有用一个例子介绍“getByBoundingCylinder”的使用方法。
例如:我们要在一个RVE模型中,单独选取纤维几何(图a的墨色区域)进行材料的赋予或者网格属性的设定,我们可以使用“getByBoundingCylinder”函数,绘制一个包含住纤维的圆柱体(图b的粉色区域)。

图1. 单个纤维RVE示意图
所需的信息是圆柱体的两个底面圆心的坐标(Point 1和Point 2)以及圆柱体的半径r。
选取的代码如下:
```
cells = c.getByBoundingCylinder((X1, Y1, Z1), (X2, Y2, Z2), R)
```
这是有人疑惑,直接使用“findAt”函数定位到所需几何的坐标也可以实现该操作,为什么还要使用更加复杂的“getByBoundingCylinder”函数呢?
这是为了应对以下问题,当我们只知道纤维的圆心坐标时,如果这个纤维的几何全部在“Part”中(如下图a),我们可以使用“findAt”函数定位到该纤维,但是如果有纤维超出几何的边界时(如下图b),圆心不在“Part”中,我们就无法使用“findAt”函数定位到我们需要的几何信息了,使用“getByBoundingCylinder”函数可以完美解决我们的问题!

图2. 多个纤维RVE示意图(a.纤维不超出边界,b纤维超出几何边界)

