这是Revit API中的类,它允许用户过滤文档中的元素以及更改它们的属性。
ElementLevelFilter
类有两个构造函数:
ElementLevelFilter(ElementId levelId, bool inverted)
:基于要过滤的楼层的ElementId
创建一个新的ElementLevelFilter
。参数inverted
用于确定是否反转过滤器中的元素。
ElementLevelFilter(Document document, ElementId levelId, bool inverted)
:基于文档中的楼层的ElementId
创建一个新的ElementLevelFilter
。参数inverted
用于确定是否反转过滤器中的元素。
LevelId
:返回过滤器将匹配的楼层的ElementId
。
Inverted
:返回是否应将过滤器中的元素反转。
ExcludeCategory(Category category)
:在此过滤器的模型中排除特定的元素类别。
IncludeCategory(Category category)
:在此过滤器的模型中包含特定的元素类别。
以下是创建ElementLevelFilter
并将其应用于选择集的示例:
// Get the active document
Document doc = ActiveUIDocument.Document;
// Get the level to filter on
Level level = doc.GetElement(new ElementId(2)) as Level;
// Create a new ElementLevelFilter based on the level
ElementLevelFilter levelFilter = new ElementLevelFilter(level.Id, false);
// Get the selection
Selection sel = ActiveUIDocument.Selection;
// Apply the filter to the selection
IEnumerable<ElementId> selectedElements = sel.GetElementIds().Where(id => doc.GetElement(id).get_Geometry(new Options()).Where(geo => geo is Solid).Any(solid => levelFilter.PassesFilter(doc.GetElement(id))));
此示例获取文档中id
为2的楼层,创建一个新的ElementLevelFilter
,并将其应用于用户当前选择的元素。在此示例中,选择集中的元素将根据其是否位于指定楼层上进行过滤。