An interface that should be implemented to provide the implementation for a Revit add-in External Command.
Namespace: Autodesk.Revit.UIAssembly: RevitAPIUI (in RevitAPIUI.dll) Version: 21.0.0.0 (21.1.1.109)
Syntax
C# |
---|
public interface IExternalCommand |
Visual Basic |
---|
Public Interface IExternalCommand |
Visual C++ |
---|
public interface class IExternalCommand |
Remarks
To add an external command to Autodesk Revit the developer should implement an object
that supports the IExternalCommand interface.
Examples

public Autodesk.Revit.UI.Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { try { Document doc = commandData.Application.ActiveUIDocument.Document; UIDocument uidoc = commandData.Application.ActiveUIDocument; // Delete selected elements ICollection<Autodesk.Revit.DB.ElementId> ids = doc.Delete(uidoc.Selection.GetElementIds()); TaskDialog taskDialog = new TaskDialog("Revit"); taskDialog.MainContent = ("Click Yes to return Succeeded. Selected members will be deleted.\n" + "Click No to return Failed. Selected members will not be deleted.\n" + "Click Cancel to return Cancelled. Selected members will not be deleted."); TaskDialogCommonButtons buttons = TaskDialogCommonButtons.Yes | TaskDialogCommonButtons.No | TaskDialogCommonButtons.Cancel; taskDialog.CommonButtons = buttons; TaskDialogResult taskDialogResult = taskDialog.Show(); if (taskDialogResult == TaskDialogResult.Yes) { return Autodesk.Revit.UI.Result.Succeeded; } else if (taskDialogResult == TaskDialogResult.No) { ICollection<ElementId> selectedElementIds = uidoc.Selection.GetElementIds(); foreach (ElementId id in selectedElementIds) { elements.Insert( doc.GetElement(id) ); } message = "Failed to delete selection."; return Autodesk.Revit.UI.Result.Failed; } else { return Autodesk.Revit.UI.Result.Cancelled; } } catch { message = "Unexpected Exception thrown."; return Autodesk.Revit.UI.Result.Failed; } }

Public Function Execute(commandData As ExternalCommandData, ByRef message As String, elements As ElementSet) As Autodesk.Revit.UI.Result Implements IExternalCommand.Execute Try Dim doc As Document = commandData.Application.ActiveUIDocument.Document Dim uidoc As UIDocument = commandData.Application.ActiveUIDocument ' Delete selected elements Dim ids As ICollection(Of Autodesk.Revit.DB.ElementId) = doc.Delete(uidoc.Selection.GetElementIds()) Dim taskDialog As New TaskDialog("Revit") taskDialog.MainContent = ("Click Yes to return Succeeded. Selected members will be deleted." & vbLf & "Click No to return Failed. Selected members will not be deleted." & vbLf & "Click Cancel to return Cancelled. Selected members will not be deleted.") Dim buttons As TaskDialogCommonButtons = TaskDialogCommonButtons.Yes Or TaskDialogCommonButtons.No Or TaskDialogCommonButtons.Cancel taskDialog.CommonButtons = buttons Dim taskDialogResult__1 As TaskDialogResult = taskDialog.Show() If taskDialogResult__1 = TaskDialogResult.Yes Then Return Autodesk.Revit.UI.Result.Succeeded ElseIf taskDialogResult__1 = TaskDialogResult.No Then Dim selectedElementIds As ICollection(Of ElementId) = uidoc.Selection.GetElementIds() For Each id As ElementId In selectedElementIds elements.Insert(doc.GetElement(id)) Next message = "Failed to delete selection." Return Autodesk.Revit.UI.Result.Failed Else Return Autodesk.Revit.UI.Result.Cancelled End If Catch message = "Unexpected Exception thrown." Return Autodesk.Revit.UI.Result.Failed End Try End Function