python revit第二部分效用如何获得附加结果

2024-04-25 09:02:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用这个脚本成功地分割了元素,但是我还想在我的OUT中收集分割的元素“parts”,不知为什么我不能正确地得到它:

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

我试图使用一个预先存在的代码

#proposed by Julien Benoit @jbenoit44 
#http://aecuandme.wordpress.com/

我试图实现的是从输入列表中获取元素,并确定这些元素是否符合创建部件的条件,然后从所有返回true的元素中创建部件。你知道吗

之后我只想收集部分(结果)作为ID列表。你知道吗

此外,我期待着扩展这个,这样我也可以给出一个曲线或直线的列表,它可以用来划分零件列表。你知道吗

# 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()

Tags: intrueids元素列表fordoc部件
1条回答
网友
1楼 · 发布于 2024-04-25 09:02:52

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

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

它将告诉您在调用期间添加到数据库中的所有元素ID。你知道吗

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

相关问题 更多 >