在abaqus Python脚本中,几个层具有大量副本,每个副本具有许多纤维。在每个光纤中,已选择一组边缘: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))
但是我不确定,也不知道语法正确
答案 0 :(得分:1)
我简单地测试了以下内容,它对我有用。我认为您可以对此进行调整,以实现针对特定模型的目标。密钥是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
。