有什么方法可以复制一个过滤器元素收集器对象吗?例如,原始对象指向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上使用。
任何帮助将是非常感激的,谢谢!
我通常使用 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'