Selection Class

Contains the current user selection of elements within the project.
Inheritance Hierarchy
SystemObject
  Autodesk.Revit.UI.SelectionSelection

Namespace: Autodesk.Revit.UI.Selection
Assembly: RevitAPIUI (in RevitAPIUI.dll) Version: 25.0.0.0 (25.0.0.0)
Syntax
public class Selection : IDisposable

The Selection type exposes the following members.

Properties
 NameDescription
Public propertyIsValidObject Specifies whether the .NET object represents a valid Revit entity.
Top
Methods
 NameDescription
Public methodDisposeReleases all resources used by the Selection
Public methodEqualsDetermines whether the specified object is equal to the current object.
(Inherited from Object)
Public methodGetElementIds Returns the ids of the elements that are currently selected within the project. The selection may not be complete. See GetReferences for more options.
Public methodGetHashCodeServes as the default hash function.
(Inherited from Object)
Public methodGetReferences Returns the references that are currently selected.
Public methodGetTypeGets the Type of the current instance.
(Inherited from Object)
Public methodPickBox(PickBoxStyle) Invokes a general purpose two-click editor that lets the user to specify a rectangular area on the screen.
Public methodPickBox(PickBoxStyle, String) Invokes a general purpose two-click editor that lets the user to specify a rectangular area on the screen.
Public methodPickElementsByRectanglePrompts the user to select multiple elements by drawing a rectangle.
Public methodPickElementsByRectangle(ISelectionFilter)Prompts the user to select multiple elements by drawing a rectangle which pass a customer filter.
Public methodCode examplePickElementsByRectangle(String)Prompts the user to select multiple elements by drawing a rectangle while showing a custom status prompt string.
Public methodPickElementsByRectangle(ISelectionFilter, String)Prompts the user to select multiple elements by drawing a rectangle which pass a customer filter while showing a custom status prompt string.
Public methodCode examplePickObject(ObjectType)Prompts the user to select one object.
Public methodPickObject(ObjectType, ISelectionFilter)Prompts the user to select one object which passes a custom filter.
Public methodPickObject(ObjectType, String)Prompts the user to select one object while showing a custom status prompt string.
Public methodPickObject(ObjectType, ISelectionFilter, String)Prompts the user to select one object which passes a custom filter while showing a custom status prompt string.
Public methodPickObjects(ObjectType)Prompts the user to select multiple objects.
Public methodPickObjects(ObjectType, ISelectionFilter)Prompts the user to select multiple objects which pass a customer filter.
Public methodPickObjects(ObjectType, String)Prompts the user to select multiple objects while showing a custom status prompt string.
Public methodCode examplePickObjects(ObjectType, ISelectionFilter, String)Prompts the user to select multiple objects which pass a custom filter while showing a custom status prompt string.
Public methodPickObjects(ObjectType, ISelectionFilter, String, IListReference)Prompts the user to select multiple objects which pass a custom filter while showing a custom status prompt string. A preselected set of objects may be supplied and will be selected at the start of the selection.
Public methodPickPointPrompts the user to pick a point on the active work plane.
Public methodPickPoint(ObjectSnapTypes)Prompts the user to pick a point on the active work plane using specified snap settings.
Public methodPickPoint(String)Prompts the user to pick a point on the active work plane while showing a custom status prompt string.
Public methodCode examplePickPoint(ObjectSnapTypes, String)Prompts the user to pick a point on the active work plane using specified snap settings while showing a custom status prompt string.
Public methodSetElementIds Selects the elements.
Public methodSetReferences Selects the references. The references can be an element or a subelement in the host or a linked document.
Public methodToStringReturns a string that represents the current object.
(Inherited from Object)
Top
Remarks
The Selection object is used to retrieve the current user selected elements when an external API command is executed.
Example
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.ReadOnly)]
public class Document_Selection : IExternalCommand
{
    public Autodesk.Revit.UI.Result Execute(ExternalCommandData commandData,
        ref string message, ElementSet elements)
    {
        try
        {
            // Select some elements in Revit before invoking this command

            // Get the handle of current document.
            UIDocument uidoc = commandData.Application.ActiveUIDocument;

            // Get the element selection of current document.
            Selection selection = uidoc.Selection;
            ICollection<ElementId> selectedIds = uidoc.Selection.GetElementIds();

            if (0 == selectedIds.Count)
            {
                // If no elements selected.
                TaskDialog.Show("Revit","You haven't selected any elements.");
            }
            else
            {
                String info = "Ids of selected elements in the document are: ";
                foreach (ElementId id in selectedIds)
                {
                   info += "\n\t" + id.ToString();
                }

                TaskDialog.Show("Revit",info);
            }
        }
        catch (Exception e)
        {
            message = e.Message;
            return Autodesk.Revit.UI.Result.Failed;
        }

        return Autodesk.Revit.UI.Result.Succeeded;
    }
    /// </ExampleMethod>
}
private void ChangeSelection(UIDocument uidoc)
{
    // Get selected elements from current document.
    ICollection<ElementId> selectedIds = uidoc.Selection.GetElementIds();

    // Display current number of selected elements
    TaskDialog.Show("Revit", "Number of selected elements: " + selectedIds.Count.ToString());

    // Go through the selected items and filter out walls only.
    ICollection<ElementId> selectedWallIds = new List<ElementId>();

    foreach (ElementId id in selectedIds)
    {
        Element elements = uidoc.Document.GetElement(id);
        if (elements is Wall)
        {
            selectedWallIds.Add(id);
        }
    }

    // Set the created element set as current select element set.
    uidoc.Selection.SetElementIds(selectedWallIds);

    // Give the user some information.
    if (0 != selectedWallIds.Count)
    {
        TaskDialog.Show("Revit", selectedWallIds.Count.ToString() + " Walls are selected!");
    }
    else
    {
        TaskDialog.Show("Revit","No Walls have been selected!");
    }
}
See Also