Revit 2025 API
Selection Class |
Contains the current user selection of elements within the project.

Namespace: Autodesk.Revit.UI.Selection
Assembly: RevitAPIUI (in RevitAPIUI.dll) Version: 25.0.0.0 (25.0.0.0)
Syntax
The Selection type exposes the following members.

Name | Description | |
---|---|---|
![]() | IsValidObject | Specifies whether the .NET object represents a valid Revit entity. |

Name | Description | |
---|---|---|
![]() | Dispose | Releases all resources used by the Selection |
![]() | Equals | Determines whether the specified object is equal to the current object. (Inherited from Object) |
![]() | GetElementIds | Returns the ids of the elements that are currently selected within the project. The selection may not be complete. See GetReferences for more options. |
![]() | GetHashCode | Serves as the default hash function. (Inherited from Object) |
![]() | GetReferences | Returns the references that are currently selected. |
![]() | GetType | Gets the Type of the current instance. (Inherited from Object) |
![]() | PickBox(PickBoxStyle) | Invokes a general purpose two-click editor that lets the user to specify a rectangular area on the screen. |
![]() | PickBox(PickBoxStyle, String) | Invokes a general purpose two-click editor that lets the user to specify a rectangular area on the screen. |
![]() | PickElementsByRectangle | Prompts the user to select multiple elements by drawing a rectangle. |
![]() | PickElementsByRectangle(ISelectionFilter) | Prompts the user to select multiple elements by drawing a rectangle which pass a customer filter. |
![]() ![]() | PickElementsByRectangle(String) | Prompts the user to select multiple elements by drawing a rectangle while showing a custom status prompt string. |
![]() | PickElementsByRectangle(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. |
![]() ![]() | PickObject(ObjectType) | Prompts the user to select one object. |
![]() | PickObject(ObjectType, ISelectionFilter) | Prompts the user to select one object which passes a custom filter. |
![]() | PickObject(ObjectType, String) | Prompts the user to select one object while showing a custom status prompt string. |
![]() | PickObject(ObjectType, ISelectionFilter, String) | Prompts the user to select one object which passes a custom filter while showing a custom status prompt string. |
![]() | PickObjects(ObjectType) | Prompts the user to select multiple objects. |
![]() | PickObjects(ObjectType, ISelectionFilter) | Prompts the user to select multiple objects which pass a customer filter. |
![]() | PickObjects(ObjectType, String) | Prompts the user to select multiple objects while showing a custom status prompt string. |
![]() ![]() | PickObjects(ObjectType, ISelectionFilter, String) | Prompts the user to select multiple objects which pass a custom filter while showing a custom status prompt string. |
![]() | PickObjects(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. |
![]() | PickPoint | Prompts the user to pick a point on the active work plane. |
![]() | PickPoint(ObjectSnapTypes) | Prompts the user to pick a point on the active work plane using specified snap settings. |
![]() | PickPoint(String) | Prompts the user to pick a point on the active work plane while showing a custom status prompt string. |
![]() ![]() | PickPoint(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. |
![]() | SetElementIds | Selects the elements. |
![]() | SetReferences | Selects the references. The references can be an element or a subelement in the host or a linked document. |
![]() | ToString | Returns a string that represents the current object. (Inherited from Object) |

The Selection object is used to retrieve the current user selected elements when an external API command is executed.

[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