簡體   English   中英

如何在Python中創建集列表中的集合?

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

暫無
暫無

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

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