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

时间:2019-03-01 10:51:53

标签: revit-api pyrevit

我正在尝试过滤墙壁。为此,我使用

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一起使用,但是我看不出有任何理由不应该再使用它了。我想念什么?

非常感谢!

2 个答案:

答案 0 :(得分:1)

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

例如,查看filtered element collector optimisation上的Building Coder提示。

答案 1 :(得分:0)

将ElementCategoryFilter应用于收集器以获取项目的所有墙。通过使用以下代码,您可以过滤任何种类的类别。我已经在Revit 2019上尝试过此操作。

FilteredElementCollector collector = new FilteredElementCollector(document);
ICollection<Element> walls = collector.OfCategory(BuiltInCategory.OST_Walls).ToElements();