Contains the current user selection of elements within the project.
Inheritance Hierarchy
System.ObjectAutodesk.Revit.UI.Selection.Selection
Namespace: Autodesk.Revit.UI.Selection
Assembly: RevitAPIUI (in RevitAPIUI.dll) Version: 26.1.0.0 (26.1.0.34)
Syntax
C#
public class Selection : IDisposable
The Selection type exposes the following members.
Properties
Name | Description | |
---|---|---|
![]() | IsValidObject | Specifies whether the .NET object represents a valid Revit entity. |
Methods
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, IList<Reference>) | 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) |
Remarks
The Selection object is used to retrieve the current user selected elements when an external API command is executed.Example
C#
[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> }
VB
<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
C#
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!"); } }
VB
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