ObjectARX 通过AcDbEntity找到其模型或布局空间名称

作者: admin 分类: C++,CAD,ObjectARX 发布时间: 2021-04-26 22:48
ads_name ent;ads_point pt;
if(RTNORM!=acedEntSel(_T("\n请选择一个对象"),ent,pt))return;
AcDbObjectId entId;
acdbGetObjectId(entId,ent);
if(entId==AcDbObjectId::kNull)return;
AcDbEntity* pEnt = NULL;
Acad::ErrorStatus es =acdbOpenObject(pEnt,entId,AcDb::kForRead);
if(Acad::eOk!=es)return;
AcDbObjectId blkId = pEnt->blockId();//取其块表记录
pEnt->close();pEnt=NULL;
AcDbBlockTableRecord* pBlkRec = NULL;
es = acdbOpenObject(pBlkRec,blkId,AcDb::kForRead);
if(Acad::eOk!=es)return;
//取块表
AcDbObjectId blkTblId = pBlkRec->getLayoutId();
pBlkRec->close();pBlkRec=NULL;
AcDbLayout* pLayOut = NULL;
es = acdbOpenObject(pLayOut,blkTblId,AcDb::kForRead);
if(Acad::eOk!=es)return;
ACHAR* layoutName =NULL;
es= pLayOut->getLayoutName(layoutName);//==> "布局2"
pLayOut->close();pLayOut=NULL;

也就是一层一层往上找,就可以找到了

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!

发表评论

标签云