|
objectarx之打印选定块的名称(动态或静态)
static void PrintBlockName(void)
{
ads_name en; ads_point p;
if (acedEntSel(_T("\nВыберите вставку блока: "),en,p) == RTNORM) {
AcDbObjectId eId; acdbGetObjectId(eId,en);
AcDbObjectPointer pBlkRef(eId,AcDb::kForRead);
if (pBlkRef.openStatus() == Acad::eOk) {
AcDbObjectId idBlkTblRec = pBlkRef->blockTableRecord();
AcDbDynBlockReference dynBlk(eId);
if (dynBlk.isDynamicBlock()) {
AcDbBlockTableRecordPointer pBTR(dynBlk.dynamicBlockTableRecord(),AcDb::kForRead);
if (pBTR.openStatus() == Acad::eOk){
const ACHAR *blkName = NULL; pBTR->getName(blkName);
acutPrintf(_T("\nИмя динамического блока: \"%s\""), blkName);
}
} else {
AcDbBlockTableRecordPointer pBTR(pBlkRef->blockTableRecord(),AcDb::kForRead);
const ACHAR *blkName = NULL; pBTR->getName(blkName);
acutPrintf(_T("\nИмя статического блока: \"%s\""), blkName);
}
}
}
} |
|