簡體   English   中英

Abaqus Python getByBoundingBox 命令

[英]Abaqus Python getByBoundingBox command

我在 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”。

任何建議非常感謝。

邊界框的角應作為 6 個單獨的數字而不是單個元組提供。 解決方法很簡單,只需將前導的“((”和尾隨的“))”改為單個的“(”和“)”即可。 所以調用看起來像這樣 s.getByBoundingBox(0,0.02,0,0.003,0.04,0)。

這來得很晚,但萬一有人進入並有同樣的疑問:

當告訴 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, )

問候

我使用以下代碼在二維板上嘗試了修改后的代碼

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

它不會崩潰。 但它並不清楚如何使用它創建表面。 你需要使用不同的策略來實現你想要的。 您可以找到使用“pointOn”方法創建曲面。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM