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

06/01/2014

Запуск инструмента из инструментальной палитры

Это пример кода, который запускает инструмент "Шестигранная гайка - метрические" доступный в инструментальной палитре "Оборудование" в AutoCAD. Он проходит по каталогу инструментов, находит соответствующий и запускает инструмент. Это подобно нажатию левой кнопки мыши на инструменте в пользовательском интерфейсе AutoCAD.

Код - C++: [Выделить]
  1. AcString toolName2Run = "Шестигранная гайка - метрические";
  2. INT_PTR catalogCount = AcTcGetManager()->GetCatalogCount();
  3. for( int catIndex = 0 ;
  4.     (catIndex < catalogCount) && ! toolExecuted ;
  5.      catIndex ++)
  6. {
  7.     AcTcCatalogItem *pCatItem
  8.                     = AcTcGetManager()->GetCatalog(catIndex);
  9.     INT_PTR nChildren1 = pCatItem->GetChildCount();
  10.     for( int childIndex1 = 0 ;
  11.          (childIndex1 < nChildren1) && ! toolExecuted;
  12.          childIndex1++ )
  13.     {
  14.         AcTcCatalogItem *pCatItem1
  15.                             = pCatItem->GetChild(childIndex1);
  16.         INT_PTR nChildren2 = pCatItem1->GetChildCount();
  17.         for( int childIndex2 = 0;
  18.             (childIndex2 < nChildren2) && ! toolExecuted ;
  19.             childIndex2++ )
  20.         {
  21.             AcTcCatalogItem *pCatItem2
  22.                         = pCatItem1->GetChild(childIndex2);
  23.             CatalogItemType ItemType = pCatItem2->GetType();
  24.             if(ItemType == kItemTool )
  25.             {
  26.                 AcTcTool *pTool
  27.                         = static_cast<AcTcTool *>(pCatItem2);
  28.                 if (pTool != NULL)
  29.                 {
  30.                     ACHAR szToolName[MAX_PATH];
  31.                     pTool->GetName(szToolName, MAX_PATH);
  32.                     if(toolName2Run.compareNoCase(
  33.                                    AcString(szToolName)) == 0)
  34.                     {
  35.                         int nFlag = 0; // LButton clicked
  36.                         HWND hWnd = NULL;
  37.                         POINT point;
  38.                         point.x = 0; point.y = 0;
  39.                         DWORD dwKeyState = 0;
  40.                         toolExecuted
  41.                             = pTool->Execute( nFlag,
  42.                                               hWnd,
  43.                                               point,
  44.                                               dwKeyState
  45.                                             );
  46.                     }
  47.                 }
  48.             }
  49.         }
  50.     }
  51. }

Источник: http://adndevblog.typepad.com/autocad/2013/12/running-a-tool-from-toolpalette.html

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

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