using Autodesk.Revit.UI;
using Autodesk.Revit.UI.Events;
namespace ShrlAlgoToolkit.RevitCore.Assists
{
///
/// UiApplication.PostCommand 结束事件监视器
///
///
/// RevitCommandEndedMonitor revitCommandEndedMonitor = new RevitCommandEndedMonitor(UiApplication);
/// revitCommandEndedMonitor.CommandEnded += OnCommandEnded;
/// var command = RevitCommandId.LookupPostableCommandId(PostableCommand.TypeProperties);
/// UiApplication.PostCommand(command);
///
public class RevitCommandEndedMonitor
{
private readonly UIApplication revitUiApplication;
private bool initializingCommandMonitor;
public event EventHandler CommandEnded;
public RevitCommandEndedMonitor(UIApplication uIApplication)
{
revitUiApplication = uIApplication;
initializingCommandMonitor = true;
revitUiApplication.Idling += OnRevitUiApplicationIdling;
}
private void OnRevitUiApplicationIdling(object sender, IdlingEventArgs idlingEventArgs)
{
if (initializingCommandMonitor)
{
initializingCommandMonitor = false;
return;
}
revitUiApplication.Idling -= OnRevitUiApplicationIdling;
OnCommandEnded();
}
protected virtual void OnCommandEnded()
{
CommandEnded?.Invoke(this, EventArgs.Empty);
}
}
}