ObjectARX, AutoCAD. Среда программирования библиотеки C++




Перегрузка wblockClone () Функция - часть 7


void

AsdkWblockReactor::otherWblock(

AcDbDatabase* pDestDb,

AcDbIdMapping& idMap,

AcDbDatabase* pSrcDb)

{

AcDbBlockTable *pDestBlockTable;

AcDbBlockTableRecord *pDestBTR;

pDestDb->getSymbolTable(pDestBlockTable, AcDb::kForRead);

pDestBlockTable->getAt(ACDB_MODEL_SPACE, pDestBTR, AcDb::kForRead);

pDestBlockTable->close();

// Now pDestBTR is pointing to pSrcDb database’s model

// space, not to the destination database’s model space!

// The code above is not correct!

}

Чтобы находить пространство модели адресата, Вы должны смотреть это в карте ID:

void

AsdkWblockReactor::otherWblock(

AcDbDatabase* pDestDb,

AcDbIdMapping& idMap,

AcDbDatabase* pSrcDb)

{

// To find the destination model space, you must look

// it up in the ID map:

AcDbBlockTable *pSrcBlockTable;

pSrcDb->getSymbolTable(pSrcBlockTable, AcDb::kForRead);

AcDbObjectId srcModelSpaceId;

pSrcBlockTable->getAt(ACDB_MODEL_SPACE, srcModelSpaceId);

pSrcBlockTable->close();

AcDbIdPair idPair;

idPair.setKey(srcModelSpaceId);

idMap.compute(idPair);

AcDbBlockTableRecord *pDestBTR;

acdbOpenAcDbObject((AcDbObject*&)pDestBTR,

idPair.value(), AcDb::kForRead, Adesk::kTrue);

}




Содержание  Назад  Вперед