From boitboy on 2013-10-17 20:36:23
获取标注的关联对象
//功能:获取标注的关联对象
Acad::ErrorStatus findDimensionAssocObject(AcDbObjectId& assocId,struct resbuf* rb)
{
Acad::ErrorStatus es=Acad::eInvalidInput;
struct resbuf* pTmp=rb;
while(pTmp!=NULL)
{
if(pTmp->restype==331)
{
es=acdbGetObjectId(assocId,pTmp->resval.rlname);
break;
}
pTmp=pTmp->rbnext;
}
return es;
}
//功能:获取标注的关联对象
Acad::ErrorStatus getDimensionAssocObject(AcDbObjectId& assocId,AcDbDimension* pDim)
{
if(pDim==NULL)
{
return Acad::eNullHandle;
}
AcDbObjectId id=pDim->extensionDictionary();
if(!id.isValid())
{
return Acad::eNullObjectId;
}
AcDbObjectPointer<AcDbDictionary> spDcit(id,AcDb::kForRead);
if(spDcit.openStatus()!=Acad::eOk)
{
return spDcit.openStatus();
}
AcDbObjectId assocDictId;
Acad::ErrorStatus es=spDcit->getAt(_T("ACAD_DIMASSOC"),assocDictId);
if(es!=Acad::eOk)
{
return es;
}
ads_name ent;
es=acdbGetAdsName(ent,assocDictId);
if(es!=eOk)
{
return es;
}
struct resbuf* rb1=acdbEntGet(ent);
if(rb1==NULL)
{
return Acad::eNullHandle;
}
es=findDimensionAssocObject(assocId,rb1);
acutRelRb(rb1);
return es;
}
不过貌似CAD没有提供设置关联对象的方法