|
void AsdkGetBlockName()
{
// Позволим пользователю выбрать вставку блока.
ads_name ename;
ads_point pt;
if (RTNORM != acedEntSel(L"\nВыберите вставку блока: ",
ename,
pt))
return;
AcDbObjectId objId;
AcDbEntity *pEnt;
AcDbBlockReference *pInsert;
Acad::ErrorStatus es;
// Проверяем тип примитива.
acdbGetObjectId(objId, ename);
if (Acad::eOk != (es = acdbOpenAcDbEntity(pEnt,
objId,
AcDb::kForRead)))
{
acutPrintf(L"\nНельзя получить доступ к примитиву.\n");
return;
}
pInsert = AcDbBlockReference::cast(pEnt);
if (!pInsert)
{
acutPrintf(L"\nВыбрали не вставку блока.\n");
pEnt->close();
return;
}
// Получаем objectID определения блока.
AcDbObjectId blockDefId = pInsert->blockTableRecord();
// Закрываем вставку блока.
pInsert->close();
// Открываем определение блока.
AcDbBlockTableRecord *pBlkRecord;
if (Acad::eOk != (es = acdbOpenObject(pBlkRecord,
blockDefId,
AcDb::kForRead)))
{
acutPrintf(L"\nНельзя получить доступ к определению блока.\n");
return;
}
// Получаем имя определения блока.
const TCHAR* pBlkName;
es = pBlkRecord->getName(pBlkName);
pBlkRecord->close();
if ((Acad::eOk != es) || !pBlkName)
{
acutPrintf(L"\nНе можем получить имя блока.\n");
return;
}
acutPrintf(L"\nИмя блока: '%s'\n", pBlkName);
} |
|