ElementLevelFilter Class


A filter used to match elements by their associated level.

Namespace: Autodesk.Revit.DB
Assembly: RevitAPI (in RevitAPI.dll) Version: 2015.0.0.0 (2015.0.0.0)
Since: 2011

Syntax

C#
public class ElementLevelFilter : ElementSlowFilter
Visual Basic
Public Class ElementLevelFilter _
	Inherits ElementSlowFilter
Visual C++
public ref class ElementLevelFilter : public ElementSlowFilter

Remarks

This filter is a slow filter. Slow filters require that the Element be obtained and expanded in memory first. Thus it is preferable to couple this filter with at least one ElementQuickFilter, which should minimize the number of Elements that are expanded.

Examples

Copy C#
// Use ElementLevel filter to find elements by their associated level in the document

// Find the level whose Name is "Level 1"
FilteredElementCollector collector = new FilteredElementCollector(document);
ICollection<Element> levels = collector.OfClass(typeof(Level)).ToElements();
var query = from element in collector where element.Name == "Level 1" select element;// Linq query

// Get the level id which will be used to match elements
List<Element> level1 = query.ToList<Element>();
ElementId levelId = level1[0].Id;

// Find all walls on level one
ElementLevelFilter level1Filter = new ElementLevelFilter(levelId);
collector = new FilteredElementCollector(document);
ICollection<Element> allWallsOnLevel1 = collector.OfClass(typeof(Wall)).WherePasses(level1Filter).ToElements();


// Find all rooms not on level one: use an inverted ElementLevelFilter to match all elements not on the target level
ElementLevelFilter notOnLevel1Filter = new ElementLevelFilter(levelId, true); // Inverted filter
collector = new FilteredElementCollector(document);
IList<Element> allRoomsNotOnLevel1 = collector.WherePasses(new RoomFilter()).WherePasses(notOnLevel1Filter).ToElements();
Copy VB.NET
' Use ElementLevel filter to find elements by their associated level in the document


' Find the level whose Name is "Level 1"
Dim collector As New FilteredElementCollector(document)
Dim levels As ICollection(Of Element) = collector.OfClass(GetType(Level)).ToElements()
Dim query As System.Collections.Generic.IEnumerable(Of Autodesk.Revit.DB.Element)
query = From element In collector _
 Where element.Name = "Level 1" _
 Select element

' Linq query
' Get the level id which will be used to match elements
Dim level1 As List(Of Element) = query.ToList()
Dim levelId As ElementId = level1(0).Id

' Find all walls on level one
Dim level1Filter As New ElementLevelFilter(levelId)
collector = New FilteredElementCollector(document)
Dim allWallsOnLevel1 As ICollection(Of Element) = collector.OfClass(GetType(Wall)).WherePasses(level1Filter).ToElements()


' Find all rooms not on level one: use an inverted ElementLevelFilter to match all elements not on the target level
Dim notOnLevel1Filter As New ElementLevelFilter(levelId, True)
' Inverted filter
collector = New FilteredElementCollector(document)
Dim allRoomsNotOnLevel1 As IList(Of Element) = collector.WherePasses(New RoomFilter()).WherePasses(notOnLevel1Filter).ToElements()

Inheritance Hierarchy

See Also