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

04/05/2015

Экспорт динамического блока из текущего чертежа как вариативного элемента

Динамические блоки из чертежа можно сохранять в новых чертежах как вариативные элементы. Это помогает создать архив динамических блоков для их повторного использования по мере необходимости. Новый чертеж может быть вставлен в другой чертеж, чтобы получить в нём динамический блок. Средствами интерфейса AutoCAD создать такой вариативный элемент можно при помощи команды ПБЛОК (_WBLOCK), выбрав один из динамических блоков, доступных из списка блоков. Тоже самое можно сделать и при помощи кода, указанного ниже:

Код - C++: [Выделить]
  1. // Записываем динамический блок как вариативный элемент
  2. Acad::ErrorStatus es;
  3.  
  4. AcApDocument *pActiveDoc = acDocManager->mdiActiveDocument();
  5. AcDbDatabase *pCurDb = pActiveDoc->database();
  6.  
  7. AcDbBlockTable* pCurentDwgBlockTable;
  8. es = pCurDb->getBlockTable(pCurentDwgBlockTable, kForRead);
  9. if  ( es == eOk)
  10. {
  11.   AcDbBlockTableRecord* pRecord;
  12.  
  13.   // Подразумевается что динамический блок "Test"
  14.   // есть в текущем чертеже
  15.   es = pCurentDwgBlockTable->getAt(
  16.     ACRX_T("Test" ),
  17.     pRecord,
  18.     kForRead, false );
  19.   if  (es != eOk)
  20.   {
  21.     pCurentDwgBlockTable->close();
  22.     return ;
  23.   }
  24.  
  25.   AcDbObjectId btrId = pRecord->objectId();
  26.   pRecord->close();
  27.   pCurentDwgBlockTable->close();
  28.  
  29.   // Создаём целевую базу
  30.   AcDbDatabase *pNewDb = NULL;
  31.   es = pCurDb->wblock(pNewDb, btrId);
  32.   if (es == Acad::eOk)
  33.   {
  34.     es = pNewDb->saveAs(
  35.       _T("D://Temp//TestBlock.dwg" ));
  36.     delete  pNewDb;
  37.   }
  38. }

Источник: http://adndevblog.typepad.com/autocad/2015/04/exporting-dynamic-block-from-current-drawing-as-an-authoring-element.html

Автор перевода: Александр Ривилис

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

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