为什么“ElementId(BuiltInCategory.OST_Walls)”在Revit API 2019中失败?

问题描述 投票:0回答:2

我想过滤墙壁。为此,我使用

categories = List[ElementId]()
myId = ElementId(BuiltInCategory.OST_Walls)
categories.Add(myId)

..但是这显然没有返回有效的ElementId,因为当我打印它时,它有一些负值(如果我打印“doc.GetElement(myId)”,我得到“无”)。

然后,确实在创建过滤器时......

filter = ParameterFilterElement.Create(doc, "Walls filter", categories)

...我得到了一个ArgumentException。我正在使用Revit 2019(使用pyRevit)。据我所知,它曾经与Revit 2018一起使用,但我认为它不应再有任何理由了。我错过了什么?

非常感谢!

revit-api pyrevit
2个回答
1
投票

你可以简单地使用filtered element collector OfCategory Method

例如,查看建筑编码器提示filtered element collector optimisation


0
投票

将ElementCategoryFilter应用于收集器以获取项目的所有墙。通过使用以下代码,您可以筛选任何类别的类别。我在Revit 2019上尝试了这个。

FilteredElementCollector collector = new FilteredElementCollector(document);
ICollection<Element> walls = collector.OfCategory(BuiltInCategory.OST_Walls).ToElements();
© www.soinside.com 2019 - 2024. All rights reserved.