我在试着过滤墙壁。为此,我使用
categories = List[ElementId]()
myId = ElementId(BuiltInCategory.OST_Walls)
categories.Add(myId)..but这显然没有返回有效的ElementId,因为当我打印它时,它有一些负值(如果我打印"doc.GetElement(myId)",我会得到"None")。
然后,确实在创建过滤器时...
filter = ParameterFilterElement.Create(doc, "Walls filter", categories)...I获取ArgumentException。我使用的是Revit 2019 (带pyRevit)。据我所知,它曾经与Revit 2018一起工作,但我看不出有任何理由它不应该再工作了。我遗漏了什么?
非常感谢!
发布于 2019-03-03 23:31:14
您可以简单地使用filtered element collector OfCategory Method。
例如,查看filtered element collector optimisation上的Building Coder提示。
发布于 2019-04-23 18:16:20
将ElementCategoryFilter应用于收集器,以获取项目的所有墙壁。通过使用以下代码,您可以过滤任何类型的类别。我已经在Revit 2019上尝试过了。
FilteredElementCollector collector = new FilteredElementCollector(document);
ICollection<Element> walls = collector.OfCategory(BuiltInCategory.OST_Walls).ToElements();发布于 2021-09-07 14:30:36
我同意Mah Noor的回答。
如果您需要一个具有多个类别的筛选器,您可以使用:
ElementCategoryFilter wallFilter = new ElementCategoryFilter(BuiltInCategory.OST_Walls);
ElementCategoryFilter windowFilter = new ElementCategoryFilter(BuiltInCategory.OST_Windows);
LogicalOrFilter wallAndWindowFilter = new LogicalOrFilter(wallFilter, windowFilter);
ICollection<Element> collection = new FilteredElementCollector(doc).WherePasses(wallAndWindowFilter);额外提示,您可能希望将.WhereElementIsNotElementType()或.WhereElementIsElementType()添加到查询中。
诚挚的问候
弗朗索瓦
https://stackoverflow.com/questions/54943111
复制相似问题