如何在revit API中使用python复制一个对象?

问题描述 投票:1回答:1

有什么方法可以复制一个过滤器元素收集器对象吗?例如,原始对象指向0x000000000000156B,我希望复制的对象指向不同的位置,这样我就可以在不改变原始对象的情况下继续进行修改。

下面是一些代码来说明我的想法。

Col1 = FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Walls)
#Some code to copy the object and assign it to Col2
Col2 = Col2.WhereElementIsNotElementType().ToElements() #Changing Col2 shouldn't change Col1.

我知道在FilteredElementCollector类中没有这样的方法 但应该有办法做到这一点,对吧? 我也读过关于deepcopy的文章,但无法在Revit上使用。

任何帮助将是非常感激的,谢谢!

python revit-api revit revitpythonshell pyrevit
1个回答
0
投票

我通常使用 FilteredElementCollector 方法,将其封装在Python list. 然后你可以用Python提供的所有功能轻松地对它进行组合、精炼、分割、复制、排序 - 基本上可以做任何你想做的事情。

对于上面的问题,你可以创建 FilteredElementCollector,并根据需要将其分拆成列表。

rawWalls = FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Walls)

Col1 = list(rawWalls)
print 'There are',len(Col1),'wall types+instances in Col1'

Col2 = list(rawWalls.WhereElementIsNotElementType().ToElements())
print 'There are',len(Col2),'wall instances in Col2'
© www.soinside.com 2019 - 2024. All rights reserved.