An interface that should be implemented to provide the implementation for a Revit add-in External Command.
Namespace:
Autodesk.Revit.UI
Assembly:
RevitAPIUI
(in RevitAPIUI.dll) Version: 2015.0.0.0 (2015.0.0.0)
Syntax
C# |
---|
|
Visual Basic |
---|
|
Visual C++ |
---|
|
Remarks
To add an external command to Autodesk Revit the developer should implement an object
that supports the IExternalCommand interface.
Examples
Copy
C#
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;
}
}
Copy
VB.NET
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