获取标注的关联对象

//功能:获取标注的关联对象
 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没有提供设置关联对象的方法

此条目发表在ObjectArx分类目录,贴了, , , 标签。将固定链接加入收藏夹。

发表评论