我在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,期望浮动”。
任何建议都非常感谢。
答案 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'创建表面。方法。