Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        /// <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); // 按键弹起
        }