python revit Part.Utils 如何将结果附加出来

python revit Part.Utils how to get append the results out

我设法使用此脚本拆分了元素,但后来我还想在我的 OUT 中收集拆分的元素 "parts",但不知何故我无法正确处理:

我跳过了标准导入,因为我认为我的混淆是在参数和语法与 API 方法之间。

我尝试使用

之前存在的代码
#proposed by Julien Benoit @jbenoit44 
#http://aecuandme.wordpress.com/

我想要实现的是从输入列表中获取元素并确定这些元素是否符合创建部件的条件,然后根据 return 为真的所有元素创建部件。

之后我只想收集部分(结果)作为 IDS 列表。

此外,我期待对此进行扩展,以便我还可以提供可用于划分零件列表的曲线或直线列表。

# Make Parts

#feed IN[0] with elements
elts = []
Ids = []
Parts=[]

for i in IN[0]:
    elts.append(UnwrapElement(i))

for e in elts:
    Ids.append(e.Id)

IDS = List[ElementId](Ids)

# Start transaction of Making Parts

TransactionManager.Instance.EnsureInTransaction(doc)

if PartUtils.AreElementsValidForCreateParts(doc, IDS):
    a=PartUtils.CreateParts(doc, IDS)
    b=PartUtils.GetAssociatedParts(doc,IDS,True,True)
    Parts=[]
    for i in b:
        Parts.append(doc.GetElement(i).ToDSType(True))
    List.append(Parts)
doc.Regenerate()

# End Transaction
TransactionManager.Instance.TransactionTaskDone()

OUT = Parts

我确定这与这部分有关:

b=PartUtils.GetAssociatedParts(doc,IDS,True,True)
        Parts=[]
        for i in b:
            Parts.append(doc.GetElement(i).ToDSType(True))
        List.append(Parts)
    doc.Regenerate()

我想我刚刚在 how to get a merged part after merging with some parts 上的 Revit API 论坛帖子中回答了一个非常相似的问题:

您可以在调用 CreateParts 之前订阅 the DocumentChanged event,然后取消订阅。

这将告诉您在调用期间添加到数据库中的所有元素 ID。

这在 retrieving newly placed family instances 的讨论中得到了证明。