[英]How to create set from list of sets in Python?
在abaqus Python腳本中,有幾個Plies具有大量副本,每個副本都有許多光纖。 在每個光纖中,選擇了一組邊:App1-1,App1-2,...,App99-1,App99-2,...,App99-88。 如何創建一個包含所有或部分邊緣的新集合? 謝謝。
碼:
allApps=[]
...
for i in range(Plies):
...
for j in range (Fiber):
appSet = Model.rootAssembly.Set(edges=
Model.rootAssembly.instances['Part'+str(i+1)+'-'+str(1+j)].edges[0:0+1],
name='App'+str(i+1)+'-'+str(1+j))
allApps.append(appSet)
我猜它應該是這樣的:
Model.rootAssembly.Set(name='allAppEdges', edges=.?.Array(allApps))
但我不確定這一點,我不知道正確的語法
我在一個簡單的部分測試了以下內容,它對我有用。 我認為你可以調整它來實現你想要為你的特定模型做的事情。 關鍵是part.EdgeArray
類型。 無論出於何種原因,Abaqus要求在該類型中提供邊緣,而不是簡單的列表或元組。 Abaqus文檔對此不清楚,當您傳遞邊緣列表時,它將失敗並出現模糊錯誤: Feature creation failed
。
from abaqus import *
import part
mdl = mdb.models['Model-1']
inst = mdl.rootAssembly.instances['Part-1-1']
# Loop through all edges in the instance and add them to a list
my_edges = []
for e in inst.edges:
my_edges.append(e)
# Create a new set with these edges
#mdl.rootAssembly.Set(name='my_edges', edges=my_edges) # This will fail because my_edges needs to be an EdgeArray
mdl.rootAssembly.Set(name='my_edges', edges=part.EdgeArray(my_edges))
對於可能在這里發現的其他人 - 類似的類型可用於頂點,面和單元: part.VertexArray
, part.FaceArray
和part.CellArray
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.