1

我在 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; found tuple, expecting float"。

非常感谢任何建议。

4

3 回答 3

1

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

于 2015-03-16T12:17:59.120 回答
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 对代码的期望。有时可以是对象本身、元素的元组或简单地表示为元组的浮点数,例如:edge = (number, )

问候

于 2020-02-17T10:50:31.233 回答
0

我使用以下代码在 2D 板上尝试了修改后的代码

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

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

于 2016-10-13T22:35:46.570 回答