How to add your knowledge

Levels

    Table of contents
    1. 1. Elevation
    2. 2. Creating a Level

    A level is a finite horizontal plane that acts as a reference for level-hosted elements, such as walls, roofs, floors, and ceilings. In the Revit Platform API, the Level class is derived from the Element class. The inherited Name property is used to retrieve the user-visible level name beside the level bubble in the Revit UI. To retrieve all levels in a project, use the ElementIterator iterator to search for Level objects.

    Elevation

    The Level class has the following properties:

    • The Elevation property (LEVEL_ELEV) is used to retrieve or change the elevation above or below ground level.
    • The ProjectElevation property is used to retrieve the elevation relative to the project origin regardless of the Elevation Base parameter value.
    • Elevation Base is a Level type parameter.
      • Its BuiltInParameter is LEVEL_RELATIVE_BASE_TYPE.
      • Its StorageType is Integer
      • 0 corresponds to Project and 1 corresponds to Shared.

    Figure 64: Level Type Elevation Base property

    The following code sample illustrates how to retrieve all levels in a project using ElementIterator.

    Code Region 15-1: Retrieving all Levels

    private void Getinfo_Level(Document document)
    {
    	StringBuilder levelInformation = new StringBuilder();
    	int levelNumber = 0;
    	FilteredElementCollector collector = new FilteredElementCollector(document);
    	ICollection<Element> collection = collector.OfClass(typeof(Level)).ToElements();
    	foreach (Element e in collection)
    	{
    		Level level = e as Level;
    	
    		if (null != level)
    		{
    			// keep track of number of levels
    			levelNumber++;
    		
    			//get the name of the level
    			levelInformation.Append("\nLevel Name: " + level.Name);
    
    			//get the elevation of the level
    			levelInformation.Append("\n\tElevation: " + level.Elevation);
    		
    			// get the project elevation of the level
    			levelInformation.Append("\n\tProject Elevation: " + level.ProjectElevation);
    		}
    	}
    
    	//number of total levels in current document
    	levelInformation.Append("\n\n There are " + levelNumber + " levels in the document!");
    	
    	//show the level information in the messagebox
    	TaskDialog.Show("Revit",levelInformation.ToString());
    }
    

    Creating a Level

    Using the Level command, you can define a vertical height or story within a building and you can create a level for each existing story or other building references. Levels must be added in a section or elevation view. Additionally, you can create a new level using the Revit Platform API.

    The following code sample illustrates how to create a new level.

    Code Region 15-2: Creating a new Level

    Level CreateLevel(Autodesk.Revit.Document document)
    {
    	// The elevation to apply to the new level
    	double elevation = 20.0; 
    	
    	// Begin to create a level
    	Level level = document.Create.NewLevel(elevation);
    	if (null == level)
    	{
    		throw new Exception("Create a new level failed.");
    	}
    	
    	// Change the level name
    	level.Name = "New level";
    	
    	return level;
    }
    
    Note After creating a new level, Revit does not create the associated plan view for this level. If necessary, you can create it yourself. For more information about how to create a plan view, refer to Views.