CString GetBlkName(AcDbEntity* pEnt);
CString CZzzBlock::GetBlkName(AcDbEntity* pEnt)
{
CString strBlkName;
AcDbBlockReference* pBlock = AcDbBlockReference::cast(pEnt);
AcDbObjectId idBlkDef = pBlock->blockTableRecord();
AcDbBlockTableRecordPointer pBlkTblRcd(idBlkDef, AcDb::kForRead);
if (Acad::eOk != pBlkTblRcd.openStatus())
return strBlkName;
TCHAR* szName = NULL;
pBlkTblRcd->getName(szName);
strBlkName = szName;
return strBlkName;
}
AcDbObjectId InsertBlock(LPCTSTR blockName, AcGePoint3d ptInsert, bool bExpolor = false);
AcDbObjectId CZzzBlock::InsertBlock(LPCTSTR blockName, AcGePoint3d ptInsert, bool bExpolor )
{
AcDbDatabase* pDb = acdbCurDwg();
AcDbBlockTable* pBlkTable;
AcDbObjectId blockId;
pDb->getBlockTable(pBlkTable, AcDb::kForRead);
if (pBlkTable->has(blockName))
{
pBlkTable->getAt(blockName, blockId);
AcDbBlockReference* pBlkRef = new AcDbBlockReference(ptInsert, blockId);
AcDbBlockTable* pBlockTable;
acdbHostApplicationServices()->workingDatabase()->getBlockTable(pBlockTable, AcDb::kForRead);
AcDbBlockTableRecord* pBlockTableRecord;
pBlockTable->getAt(ACDB_MODEL_SPACE, pBlockTableRecord, AcDb::kForWrite);
pBlockTable->close();
pBlockTableRecord->appendAcDbEntity(blockId, pBlkRef);
pBlockTableRecord->close();
if (bExpolor)
{
pBlkRef->explodeToOwnerSpace();
}
pBlkRef->close();
}
pBlkTable->close();
return blockId;
}