Python 3.x 在Python中创建项目ID Revit API的集合

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

因此,我尝试使用输入字符串列表在使用Revit API的视图中隔离它们。我已经完成了这一步,但我在尝试创建一个集合时陷入了困境,该集合将获取视图中的所有元素,并删除从输入ID创建的元素。我这样做是为了得到一组所有元素,除了我想要隔离的元素

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
应该在循环外声明,而不是在循环内声明。