示例#1
0
        public static IntPtr GetTopDrawingHandle()
        {
            while (true)
            {
                var    autocadWindowHandle = WindowController2.GetAutoCadHandle();
                IntPtr mdiHandle           = WindowController2.FindWindowEx(autocadWindowHandle, IntPtr.Zero, "MDIClient", null);
                //AutoCadのハンドルをうまくとれない時がある。その時mdiHandleがZeroになる。
                if (mdiHandle == IntPtr.Zero)
                {
                    continue;
                }

                var activeChildHandle = WindowController2.GetWindow(mdiHandle, GW_CHILD);
                if (activeChildHandle == IntPtr.Zero)
                {
                    throw new AutoCadException("MDIの子ウィンドウが見つかりませんでした。");
                }

                return(activeChildHandle);
            }
        }
示例#2
0
            public static void Create(string templateName)
            {
                var autocadHandle = WindowController2.GetAutoCadHandle();

                //SendCommandだとテンプレートファイル名を入力するまで処理が帰ってこない
                WindowController2.PostCommand(autocadHandle, 57600); //Ctrl+NキーをAutoCADに送信し、ファイル>新規作成メニューを呼び出す

                //2013だと、新規図面を開くと別のプロンプトが立ち上がるが、
                //開いた瞬間は以前のプロンプトからコマンドを読み取るため、
                //うまく動かない。とりあえずループしてごまかす

                while (true)
                {
                    var result = AutoCad.Status.WaitPrompt("テンプレート ファイル名を入力", "Enter template file name");
                    if (result == Status.EventResult.Prompted)
                    {
                        break;
                    }
                }

                AutoCad.Command.SendLine(templateName);
                AutoCad.Status.WaitFinish();
            }
示例#3
0
        public static List <IntPtr> GetDrawingHandles()
        {
            while (true)
            {
                var autocadWindowHandle = WindowController2.GetAutoCadHandle();

                IntPtr mdi = FindWindowEx(autocadWindowHandle, IntPtr.Zero, "MDIClient", null);
                if (mdi == IntPtr.Zero)
                {
                    continue;
                }

                List <IntPtr> childList = new List <IntPtr>();
                IntPtr        child     = WindowController2.GetWindow(mdi, GW_CHILD);
                while (child != IntPtr.Zero)
                {
                    childList.Add(child);

                    child = WindowController2.GetWindow(child, GW_HWNDNEXT);
                }

                return(childList);
            }
        }
示例#4
0
        public static void BringAutoCadToTop()
        {
            var handle = WindowController2.GetAutoCadHandle();

            WindowController2.BringWindowToTop(handle);
        }
示例#5
0
            //コマンド送信系の処理は、ユーザーが割り込むと処理が止まる可能性がある。
            //その為、Command.Sendの直前に[Esc][Esc]を送信し、コマンド欄をクリアすることを推奨する。

            /// <summary>AutoCADにコマンドを送信する</summary>
            private static void Send(string command)
            {
                IntPtr autoCADWindow = WindowController2.GetAutoCadHandle();

                WindowController2.SendCommand(autoCADWindow, command);
            }