Python 3.x 在Python中创建项目ID Revit API的集合
因此,我尝试使用输入字符串列表在使用Revit API的视图中隔离它们。我已经完成了这一步,但我在尝试创建一个集合时陷入了困境,该集合将获取视图中的所有元素,并删除从输入ID创建的元素。我这样做是为了得到一组所有元素,除了我想要隔离的元素Python 3.x 在Python中创建项目ID Revit API的集合,python-3.x,collections,set,ironpython,revit-api,Python 3.x,Collections,Set,Ironpython,Revit Api,因此,我尝试使用输入字符串列表在使用Revit API的视图中隔离它们。我已经完成了这一步,但我在尝试创建一个集合时陷入了困境,该集合将获取视图中的所有元素,并删除从输入ID创建的元素。我这样做是为了得到一组所有元素,除了我想要隔离的元素 dataEnteringNode = IN0 view = IN0 str_ids = IN1 doc = __doc__ collector = FilteredElementCollector(doc, view.Id) for i in str_ids
dataEnteringNode = IN0
view = IN0
str_ids = IN1
doc = __doc__
collector = FilteredElementCollector(doc, view.Id)
for i in str_ids:
int_id = int(i)
id = ElementId(int_id)
element = doc.GetElement(id)
element_set = ElementSet()
element_set.Insert(element)
elements_to_hide = collector.WhereElementIsNotElementType().Excluding(element_set).ToElements()
#Assign your output to the OUT variable
OUT = elements_to_hide
如果您能帮助我解决这个错误,我将不胜感激。我得到了“预期的ICollection[ElementId],已设置”。我猜问题在于排除过滤器,我需要创建一个要排除的ID集合,但我不知道如何创建。先谢谢你。提前感谢您的帮助 代码不起作用的原因是Revit API中的
ElementSet
未实现ICollection
界面-仅实现IEnumerable
。因此,要使代码正常工作,需要从集合中创建一个ICollection
对象
试着这样做:
# ...
from System.Collections.Generic import List
element_collection = List[ElementId](element_set)
elements_to_hide = collector.WhereElementIsNotElementType().Excluding(element_collection).ToElements()
哪一行导致了错误?我认为
element\u set
应该在循环外声明,而不是在循环内声明。