Abaqus Python getByBoundingBox命令

时间:2015-03-16 09:51:25

标签: python abaqus

我在Abaqus中有一个包含许多分区的2D部件,因此我想使用getByBoundingBox命令选择许多边来创建表面集。这是我的一点代码:

p = mdb.models['Model-1'].parts['Plate']
s = p.edges
edges = s.getByBoundingBox((0,0.02,0,0.003,0.04,0))
p.Surface(side1Edges=edges, name='r1')

但是它给了我以下错误:“edges = s.getByBoundingBox((0,0.02,0,0.003,0.04,0))TypeError:arg1;找到tuple,期望浮动”。

任何建议都非常感谢。

3 个答案:

答案 0 :(得分:1)

边界框的角应该提供为6个单独的数字而不是单个元组。解决方案非常简单,只需将前导“((”和尾随“))”更改为单个“(”和“)”。所以调用看起来像这个s.getByBoundingBox(0,0.02,0,0.003,0.04,0)。

答案 1 :(得分:1)

这来得很晚,但是万一有人进来并有同样的疑问:

当告诉Abaqus您实际选择的边/面/元素时,有时需要指定该对象的“ ID”,这就是为什么它在错误消息中要求使用浮点数而不是元组。这可以解决:

您选择所需的边/面/节点/元素:

   edge = s.getByBoundingBox((0,0.02,0,0.003,0.04,0))

创建一个中间变量以了解元素的“ ID”:

   edge_id = edge.id

您现在可以在创建曲面的对话框中对其进行修正:

   p.Surface(side1Edges=p.edges[edge_id], name='r1')

在这种情况下,您要告诉Abaqus从零件“ p”具有的所有边中选择ID为“ edge_id”的边。

这种情况经常发生,您必须知道Abaqus对代码的期望。有时可能是对象本身,元素的元组或者只是表示为tupple的浮点数,例如:edge =(number,)

致谢

答案 2 :(得分:0)

我尝试使用以下代码在2D版上修改代码

p = mdb.models['Model-1'].parts['Plate']
s = p.edges
edges=s.getByBoundingBox(0,0,0,25,25,1)

它不会崩溃。但是如何使用它来创建表面并不是很清楚。您需要使用不同的策略来实现您想要的目标。您可以使用' pointOn'创建表面。方法。