Selection Class

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
Public Class Selection
	Implements IDisposable
public ref class Selection : IDisposable
type Selection = 
    class
        interface IDisposable
    end

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>
}
<Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.[ReadOnly])> _
Public Class Document_Selection
    Implements IExternalCommand
    Public Function Execute(commandData As ExternalCommandData, ByRef message As String, elements As ElementSet) As Autodesk.Revit.UI.Result Implements IExternalCommand.Execute
        Try
            ' Select some elements in Revit before invoking this command

            ' Get the handle of current document.
            Dim uidoc As UIDocument = commandData.Application.ActiveUIDocument

            ' Get the element selection of current document.
            Dim selection As Selection = uidoc.Selection
            Dim selectedIds As ICollection(Of ElementId) = uidoc.Selection.GetElementIds()

            If 0 = selectedIds.Count Then
                ' If no elements selected.
                TaskDialog.Show("Revit", "You haven't selected any elements.")
            Else
                Dim info As [String] = "Ids of selected elements in the document are: "
                For Each id As ElementId In selectedIds
                    info += vbLf & vbTab + id.ToString()
                Next

                TaskDialog.Show("Revit", info)
            End If
        Catch e As Exception
            message = e.Message
            Return Autodesk.Revit.UI.Result.Failed
        End Try

        Return Autodesk.Revit.UI.Result.Succeeded
    End Function
    ' </ExampleMethod>
End Class

No code example is currently available or this language may not be supported.

No code example is currently available or this language may not be supported.

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!");
    }
}
Private Sub ChangeSelection(uidoc As UIDocument)
    ' Get selected elements from current document.
    Dim selectedIds As ICollection(Of ElementId) = 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.
    Dim selectedWallIds As ICollection(Of ElementId) = New List(Of ElementId)()

    For Each id As ElementId In selectedIds
        Dim elements As Element = uidoc.Document.GetElement(id)
        If TypeOf elements Is Wall Then
            selectedWallIds.Add(id)
        End If
    Next

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

    ' Give the user some information.
    If 0 <> selectedWallIds.Count Then
        TaskDialog.Show("Revit", selectedWallIds.Count.ToString() + " Walls are selected!")
    Else
        TaskDialog.Show("Revit", "No Walls have been selected!")
    End If
End Sub

No code example is currently available or this language may not be supported.

No code example is currently available or this language may not be supported.

See Also