我使用这个脚本成功地分割了元素,但是我还想在我的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()
我想我刚才在how to get a merged part after merging with some parts上的Revit API讨论论坛线程中回答了一个非常类似的问题:
您可以在调用CreateParts之前订阅the DocumentChanged event,然后取消订阅。你知道吗
它将告诉您在调用期间添加到数据库中的所有元素ID。你知道吗
这在retrieving newly placed family instances的讨论中得到了证明。你知道吗
相关问题 更多 >
编程相关推荐