我正在尝试过滤墙壁。为此,我使用
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一起使用,但是我看不出有任何理由不应该再使用它了。我想念什么?
非常感谢!
答案 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();