/// <summary> /// 绘图结束后的操作。注意,此操作必须要放在Messagebox.Show(或者是其他通过ESC键就可以对窗口进行某些操作的情况, /// 比如关闭窗口等)之后。如果放在Messagebox.Show之前,则会模拟通过按下ESC键而将模态窗口关闭的操作,则模态窗口就只 /// 会闪现一下,或者根本就看不见。 /// </summary> private void DeactiveDraw() { UIntPtr ptr0 = new UIntPtr(0); // 在Revit UI界面中退出绘制,即按下ESCAPE键 WindowsUtil.keybd_event((byte)27, (byte)0, 0, ptr0); // 按下 ESCAPE键 WindowsUtil.keybd_event((byte)27, (byte)0, 0x2, ptr0); // 按键弹起 // 再按一次 WindowsUtil.keybd_event((byte)27, (byte)0, 0, ptr0); WindowsUtil.keybd_event((byte)27, (byte)0, 0x2, ptr0); }
/// <summary> 撤消 Revit 的操作 </summary> public static void Undo() { UIntPtr ptr0 = new UIntPtr(0); // 第一步,先取消当前的所有操作 // 在Revit UI界面中退出绘制,即按下ESCAPE键 WindowsUtil.keybd_event((byte)27, (byte)0, 0, ptr0); // 按下 ESCAPE键 WindowsUtil.keybd_event((byte)27, (byte)0, 0x2, ptr0); // 按键弹起 // 第二步,按下 Ctrl + Z // 在Revit UI界面中退出绘制 WindowsUtil.keybd_event((byte)17, (byte)0, 0, ptr0); // 按下 Control 键 WindowsUtil.keybd_event((byte)90, (byte)0, 0, ptr0); // 按下 Z 键 WindowsUtil.keybd_event((byte)90, (byte)0, 2, ptr0); WindowsUtil.keybd_event((byte)17, (byte)0, 2, ptr0); // 按键弹起 }