using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
using Autodesk.Windows;
using DotNet.RevitUI;
using Autodesk.Revit.Attributes;
namespace Test.DotNet.RevitUI.Command
{
///
/// 删除元素
///
/// 测试基于ribbon自动化绑定命令下的事务开启测试
/// 如果基于addinmanager工具测试此命令,则需要声明特性,否则不需要声明此特性
[Transaction(TransactionMode.Manual)]
public class DeleteElementCommand : RevitCommand
{
protected override bool CanExecute(Autodesk.Windows.RibbonItem parameter)
{
if (parameter == null)
{
return true;
}
if (parameter.Tag is UIApplication uiApp)
{
return uiApp.ActiveUIDocument != null;
}
return true;
}
protected override Result Invoke(ExternalCommandData commandData, ref string message, ElementSet elements)
{
var uidoc = commandData.Application.ActiveUIDocument;
var doc = uidoc.Document;
while (true)
{
try
{
var reference = uidoc.Selection.PickObject(Autodesk.Revit.UI.Selection.ObjectType.Element, "请选择要删除的元素 :");
doc.Invoke(m =>
{
try
{
doc.Delete(reference.ElementId);
}
catch (Exception ex)
{
Autodesk.Revit.UI.TaskDialog.Show("错误", ex.Message);
}
});
}
catch (Exception ex)
{
return Result.Cancelled;
}
}
}
}
}