[英]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.