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

27/07/2013

Как получить заштрихованный примитив из примитива штриховки (HATCH)?

Когда примитив заштрихован ассоциативной штриховкой (AcDbHatch) – штриховка ассоциирована с заштрихованным примитивом. Как можно найти эту штриховку?

Штриховка реагирует на изменение примитива путём уведомления. В действительности штриховка имеет постоянный реактор на заштрихованный примитив. Этим можно воспользоваться для получения штриховки. Следующий код демонстрирует это:

Код - C++: [Выделить]
  1.  
  2. void getHatchEntity()
  3. {
  4.   ads_name eName;
  5.   ads_point pt;
  6.   if( RTNORM != acedEntSel(_T("\nВыберите примитив: "), eName, pt ) )
  7.     return;
  8.   AcDbObjectId id;
  9.   acdbGetObjectId( id, eName );
  10.   AcDbEntity* pEnt;
  11.   acdbOpenObject(pEnt, id, AcDb::kForRead );
  12.   if( pEnt == NULL )
  13.     return;
  14.   AcDbHatch* pHatch = NULL;
  15.   AcDbVoidPtrArray* pReactors = pEnt->reactors();
  16.   for( int i=0; pHatch == NULL &&  i<pReactors->length(); i++ ) {
  17.       if( acdbIsPersistentReactor( pReactors->at(i) )) {
  18.         AcDbObjectId id = 
  19.            acdbPersistentReactorObjectId(pReactors->at(i));
  20.         acdbOpenObject(pHatch, id, AcDb::kForRead );
  21.       }
  22.   }
  23.   if( pHatch != NULL ) {
  24.     pHatch->highlight();
  25.     pHatch->close();
  26.   }
  27.   pEnt->close();
  28. }

 

Источник: http://adndevblog.typepad.com/autocad/2012/12/how-to-obtain-the-hatch-entity-from-the-hatched-entity.html

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

 

Опубликовано 27.07.2013
Отредактировано 04.08.2013 в 17:21:39