Autodesk.Revit.DB.FilteredElementCollector
是一个 Revit API 类,用于查找并操作 Revit 模型中的元素。通过使用过滤器和条件,可以让 FilteredElementCollector
查找指定类型、类别和属性值的元素。
要使用 FilteredElementCollector
,需要创建一个实例并指定要查找的元素类型和过滤条件。下面是一个示例:
FilteredElementCollector collector = new FilteredElementCollector(doc)
.OfClass(typeof(Wall))
.WhereElementIsNotElementType()
.Where(w => w.Name.Contains("Exterior"));
上述代码段创建了一个 FilteredElementCollector
实例,用于查找 Revit 模型中的所有外墙元素。代码使用 OfClass
方法指定要查找的元素类型,使用 WhereElementIsNotElementType
方法排除元素类型为元素类型的元素。最后使用 Where
方法可以根据需要添加自定义的条件。在上述示例中,我们使用了 Name.Contains
方法来查找名称包含 "Exterior" 的元素。
以下是可用的过滤器列表:
OfClass
OfCategory
Where
WherePasses
WhereElementIsNotElementType
WhereElementIsElementType
以下示例演示了如何获取 Revit 模型中所有的门和窗户元素:
FilteredElementCollector collector = new FilteredElementCollector(doc)
.OfClass(typeof(FamilyInstance))
.WhereElementIsNotElementType()
.OfCategory(BuiltInCategory.OST_Doors)
.Union(new FilteredElementCollector(doc)
.OfClass(typeof(FamilyInstance))
.WhereElementIsNotElementType()
.OfCategory(BuiltInCategory.OST_Windows));
上述代码段首先使用 OfClass
方法创建一个实例,查找 Revit 模型中所有的族实例元素。然后,使用 WhereElementIsNotElementType
方法排除所有族类型元素。接下来,使用 OfCategory
方法分别查找门和窗户元素中的元素,最后使用 Union
方法合并两个过滤的结果。