ADN Open CIS
Сообщество программистов Autodesk в СНГ

06/09/2013

Использование Window.Focus в AutoCAD 2014

Среди новых API в AutoCAD 2014 включен метод Window.Focus. Этот метод очень полезен в том случае если вы используете палитры для вызова команд, которые заставляют AutoCAD запрашивать у пользователя информацию. В предыдущих версиях AutoCAD его редактор не получал фокус пока на нём не был активизирован. Это требовало дополнительного нажатия кнопки мыши. Чтобы избежать этого требовалось или вызвать функцию SetFocus из Win32 API посредством P/Invoke или использовать недокументированный метод Internal.Utils.SetFocusToDwgView.

Начиная с AutoCAD 2014 вместо этого можно использовать метод Window.Focus В качестве примера, если вы используете в палитре кнопку для вставки блока с именем «Autodesk», тогда вы можете использовать метод Window.Focus в функции обратного вызова таким образом:

Код - C#: [Выделить]
  1. using Autodesk.AutoCAD.ApplicationServices;
  2. using AcAp = Autodesk.AutoCAD.ApplicationServices;
  3.  
  4. private void InsertBlockBtn_Click(object sender, EventArgs e)
  5. {
  6.     AcAp.Document activeDoc
  7.             = AcAp.Application.DocumentManager.MdiActiveDocument;
  8.  
  9.     dynamic acadDocObj = activeDoc.GetAcadDocument();
  10.     activeDoc.Window.Focus();
  11.     acadDocObj.SendCommand(String.Format("_-Insert\nAutodesk\n"));
  12.  
  13.     //            Или:
  14.  
  15.     //object acadDocObj = activeDoc.GetAcadDocument();
  16.     //activeDoc.Window.Focus();
  17.     //object[] OnedataArry = new object[1];
  18.     //OnedataArry[0] = String.Format("_-Insert\nAutodesk\n");
  19.     //acadDocObj.GetType().InvokeMember(
  20.     //  "SendCommand",
  21.     //  System.Reflection.BindingFlags.InvokeMethod,
  22.     //  null, acadDocObj, OnedataArry
  23.     //);
  24. }

 

Источник: http://adndevblog.typepad.com/autocad/2013/03/use-of-windowfocus-in-autocad-2014.html

Обсуждение: http://adn-cis.org/forum/index.php?topic=203

Опубликовано 06.09.2013