Abaqus Python getByBoundingBox 命令

Abaqus Python getByBoundingBox command

我在 Abaqus 中有一个包含许多分区的 2D 零件,因此我想 select 使用 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; found tuple, expecting float"。

非常感谢任何建议。

边界框的角点应提供为 6 个单独的数字,而不是单个元组。解决方法很简单,把前导的“((”和尾随的“))”改为单个的“(”和“)”即可。所以调用看起来像这样 s.getByBoundingBox(0,0.02,0,0.003,0.04,0).

我用下面的代码在二维板上尝试了修改后的代码

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

而且它不会崩溃。但目前还不清楚如何使用它创建表面。您需要使用不同的策略来实现您想要的。您可以找到使用 'pointOn' 方法创建表面。

这来得太晚了,但万一有人进入并有同样的疑问:

当告诉 Abaqus 你实际上 edge/face/element 是哪个 selecting 时,有时你需要指定那个对象的 "ID",这就是为什么它要求一个浮点数而不是一个错误消息中的元组。这可以解决为:

你select你想要的edge/face/node/element:

   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 select 从您的部件 "p" 具有的所有边中选择 ID 为 "edge_id" 的边。

这种情况发生了很多次,您必须了解 Abaqus 对代码的期望。有时可以是对象本身、元素元组或简单地表示为元组的浮点数,例如:edge = (number, )

此致