【问题标题】:How to create set from list of sets in Python?如何从 Python 中的集合列表创建集合?
【发布时间】:2018-09-30 00:03:39
【问题描述】:

在 abaqus Python 脚本中,几个 Plies 有大量的副本,每个 Plies 有很多纤维。在每个 Fiber 中,已经选择了一组边: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吗?我相信您必须明确地import part,并且您可以从边列表(在您的情况下为allApps)创建一个新的EdgeArray:...edges=part.EdgeArray(allApps))
  • 你想要一个简单的联合吗? Python 集已经支持这一点。或“更新”。 docs.python.org/2/library/sets.html 我希望这一套也是一样的,虽然我不完全确定它是什么库。
  • 感谢布雷迪和肯尼·奥斯特罗姆。在实例中创建的边不是部分的。 appSet 示例:Model.rootAssembly.sets['App4-88'] 和数组 allApps 示例:[Model.rootAssembly.sets['App1-1'], Model.rootAssembly.sets['App1-2'], . .., Model.rootAssembly.sets['App4-88']]
  • part 模块只允许您访问EdgeArray 类型。我认为你的边缘来自一个实例而不是一个部分并不重要。我会用一个我认为对你有用的例子来写一个答案。

标签: python arrays set abaqus


【解决方案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.VertexArraypart.FaceArraypart.CellArray

【讨论】:

  • 布雷迪,感谢您的回答。抱歉,我之前没有感谢你。
猜你喜欢
  • 2014-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-03
  • 1970-01-01
  • 2018-01-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多