06/01/2014
Запуск инструмента из инструментальной палитры
Это пример кода, который запускает инструмент "Шестигранная гайка - метрические" доступный в инструментальной палитре "Оборудование" в AutoCAD. Он проходит по каталогу инструментов, находит соответствующий и запускает инструмент. Это подобно нажатию левой кнопки мыши на инструменте в пользовательском интерфейсе AutoCAD.
Код - C++: [Выделить]
- AcString toolName2Run = "Шестигранная гайка - метрические";
- INT_PTR catalogCount = AcTcGetManager()->GetCatalogCount();
- for( int catIndex = 0 ;
- (catIndex < catalogCount) && ! toolExecuted ;
- catIndex ++)
- {
- AcTcCatalogItem *pCatItem
- = AcTcGetManager()->GetCatalog(catIndex);
- INT_PTR nChildren1 = pCatItem->GetChildCount();
- for( int childIndex1 = 0 ;
- (childIndex1 < nChildren1) && ! toolExecuted;
- childIndex1++ )
- {
- AcTcCatalogItem *pCatItem1
- = pCatItem->GetChild(childIndex1);
- INT_PTR nChildren2 = pCatItem1->GetChildCount();
- for( int childIndex2 = 0;
- (childIndex2 < nChildren2) && ! toolExecuted ;
- childIndex2++ )
- {
- AcTcCatalogItem *pCatItem2
- = pCatItem1->GetChild(childIndex2);
- CatalogItemType ItemType = pCatItem2->GetType();
- if(ItemType == kItemTool )
- {
- AcTcTool *pTool
- = static_cast<AcTcTool *>(pCatItem2);
- if (pTool != NULL)
- {
- ACHAR szToolName[MAX_PATH];
- pTool->GetName(szToolName, MAX_PATH);
- if(toolName2Run.compareNoCase(
- AcString(szToolName)) == 0)
- {
- int nFlag = 0; // LButton clicked
- HWND hWnd = NULL;
- POINT point;
- point.x = 0; point.y = 0;
- DWORD dwKeyState = 0;
- toolExecuted
- = pTool->Execute( nFlag,
- hWnd,
- point,
- dwKeyState
- );
- }
- }
- }
- }
- }
- }
Источник: 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