Files
DotNet.Revit/Test.DotNet.RevitUI (2016)/ViewModel/DeleteElementViewModel.cs
2026-02-23 16:57:09 +08:00

85 lines
2.2 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Autodesk.Revit.UI;
using DotNet.RevitUI;
using DotNet.RevitUI.MVVM;
using Test.DotNet.RevitUI.View;
namespace Test.DotNet.RevitUI.ViewModel
{
public class DeleteElementViewModel : ObservableObject
{
private int _elementId;
public int ElementId
{
get
{
return _elementId;
}
set
{
_elementId = value;
this.RaisePropertyChanged(nameof(ElementId));
}
}
/// <summary>
/// Revit动态委托命令
/// </summary>
/// <remarks>也可以直接绑定RevitCommand</remarks>
public RevitRelayCommand OK { get; private set; }
public RelayCommand Cancel { get; private set; }
public DeleteElementViewModel()
{
this.ElementId = 0;
this.OK = new RevitRelayCommand(OnOK, () => ElementId > 0);
this.Cancel = new RelayCommand(OnCancel);
}
private void OnCancel()
{
Messenger.Default.Send(this, MainDeleteMatchElement.ClosedToken);
}
private Result OnOK(ExternalCommandData arg)
{
var uidoc = arg.Application.ActiveUIDocument;
var doc = uidoc.Document;
if (doc.GetElement(new Autodesk.Revit.DB.ElementId(ElementId)) is Autodesk.Revit.DB.Element elem)
{
doc.Invoke(m =>
{
try
{
doc.Delete(elem.Id);
}
catch (Exception ex)
{
Autodesk.Revit.UI.TaskDialog.Show("错误", ex.Message);
}
});
Autodesk.Revit.UI.TaskDialog.Show("提示", "删除元素完成");
return Result.Succeeded;
}
Autodesk.Revit.UI.TaskDialog.Show("警告", "输入元素ID不合法或者未在当前文档找到此元素ID");
return Result.Succeeded;
}
}
}