是否有方法可以复制筛选器元素收集器对象? 例如,原始对象指向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
方法,将其包装在Pythonlist
中。然后,您可以组合、细化、拆分、复制、排序—基本上可以使用Python提供的所有便利来完成任何您想做的事情对于上面的问题,您可以创建
FilteredElementCollector
,并根据需要将其拆分为列表:正如您已经发现的,不可能创建
FilteredElementCollector
的副本。但是,您可以创建一个功能相同的方法,方法是记录对原始方法调用的方法,并在需要复制时复制这些方法调用。下面的类就是这样做的:我们需要重写每个方法,这些方法限制
FilteredElementCollector
返回的元素在日志中记录其调用。最直接的方法是在类主体中定义覆盖方法,如下所示:为每个方法定义一个覆盖会重复,所以让我们使用一些元编程伏都教:
我不会说我的方法是一个好主意,但如果您的用例需要制作
FilteredElementCollector
的副本而不是从头开始创建新副本,那么这是一个选项相关问题 更多 >
编程相关推荐