如何统计Special Equipment的FilteredElementCollector Symbol家族中所有类似的Element?

How to count all Element in that are similar to the FilteredElementCollector Symbol family of Special Equipment?

当我使用 DesignAutomation (Autodesk Forge) 通过获取 FilteredElementCollector lstEleCollector = new FilteredElementCollector (doc, doc.ActiveView.Id); 来计算 Revit 文件中可见的 BuiltInCategory.OST_SpecialityEquiosystem 元素的数量时 .但我意识到在设计自动化中没有活动视图的概念。那么有没有办法统计rvt文件中出现的所有元素呢?

要计算文档中给定类别的所有元素,您应该使用 FilteredElementCollector.OfCategory():

FilteredElementCollector collector = new FilteredElementCollector(doc);
ICollection<Element> collection = collector.OfCategory(BuiltInCategory.OST_SpecialityEquiosystem)
    .ToElements();
int count = collection.Count;

然而,这将为您提供文档中的所有元素。要在给定视图中查找元素,您需要知道视图 ID。如果您不知道视图 ID,可以遍历文档中的所有视图并找到您要查找的视图。

FilteredElementCollector collector = new FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Views);
foreach (Autodesk.Revit.DB.View v in collector.ToElements())
{
    if (v && v.Name == "My Special View")
        viewId = v.Id;
}

然后你可以用这个viewId而不是doc.ActiveView.Id来调用你已经知道的API。

FilteredElementCollector lstEleCollector = new FilteredElementCollector (doc, viewId);
ICollection<Element> collection = lstEleCollector.OfCategory(BuiltInCategory.OST_SpecialityEquiosystem)
    .ToElements();
int count = collection.Count;

另请参阅我们非常基本的 forge-countdeletewalls-revit 代码示例,它执行的操作与您正在尝试的类似。它计算给定文档中的墙、门、地板和 windows。