外部命令中Excute函数的返回值
Excute函数的返回值用于表示外部命令的执行状态,
分别为Succeeded、Failed、Canceled三种。
using Autodesk.Revit.ApplicationServices;
using Autodesk.Revit.Attributes;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace practise
{
[Transaction(TransactionMode.Manual)]
public class Class1 : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
try
{
UIApplication uIApp = commandData.Application;
Application application = uIApp.Application;
UIDocument uIDocument = uIApp.ActiveUIDocument;
Document document = uIDocument.Document;
List<ElementId> elementids = new List<ElementId>();
IList<Reference> references = uIDocument.Selection.PickObjects(Autodesk.Revit.UI.Selection.ObjectType.Element);
foreach (Reference reference in references)
{
Element element = document.GetElement(reference);
elementids.Add(element.Id);
}
using (Transaction trans = new Transaction(document, "删除选择"))
{
trans.Start();
document.Delete(elementids);
trans.Commit();
TaskDialogResult result = TaskDialog.Show("提示", "Y返回成功,并删除所有选择!" + "N取消所有命令。", TaskDialogCommonButtons.Yes | TaskDialogCommonButtons.No);
if (TaskDialogResult.Yes == result)
{
return Result.Succeeded;
}
else if (TaskDialogResult.No == result)
{
//IList<Reference> references1 = uIDocument.Selection.PickObjects(Autodesk.Revit.UI.Selection.ObjectType.Element);
//foreach (Reference reference in references1)
//{
// //Element element = document.GetElement(reference);
// //elements.Insert(element);
//}
message = "删除失败!";
return Result.Failed;
}
else
{
return Result.Cancelled;
}
}
}
catch(Exception ex)
{
TaskDialog.Show("异常",ex.Message);
return Result.Failed;
}
}
}
}
如果不为Succeeded,Revit把外部命令所做的所有操作和修改撤销