기본 콘텐츠로 건너뛰기

라벨이 Explode인 게시물 표시

explode block reference

샘플 코드 /* objIds : 블럭이 explode되고나서 생성되는 entity의 object id들 pBlkRef : block reference bErase : 블럭을 지울것인가 말것인가? */ bool explodeBlockReference(AcDbObjectIdArray& objIds,AcDbBlockReference *pBlkRef,const bool bErase) { assert(pBlkRef && "pBlkRef is NULL"); bool bRet=false; if(pBlkRef) { CString rLayer=pBlkRef->layer(); AcDbVoidPtrArray entitySet; // explode the block, this will return a load of pre-transfromed entities for our perusal USES_OKEYS; try { ARXOK(pBlkRef->explode(entitySet)); } catch(const char* ex) { ARXERROR(ex); return bRet; } if(true == bErase) pBlkRef->erase(); pBlkRef->close(); AcDbDatabase *pDb=acdbHostApplicationServices()->workingDatabase(); AcDbBlockTable *pBT; pDb->getSymbolTable(pBT, AcDb::kForRead); AcDbBlockTableRecord *pBTR; pBT->getAt(ACDB_MODEL_SPACE, pBTR, AcDb::kForWrite); pBT->close(); // loop round getting each entity for (long i=0l; i<entitySet.len...