yingbuzhe 发表于 2014-3-25 16:26:00

struct resbuf类型的加入函数acutBuildList 添加实体的扩展数据

程序如下
思路是想对实体entId里面加入扩展数据 数据就是字符串数组里面的内容pipepointArray
现在的问题是 用acutBuildList加入的时候能不能用一个for语句把字符串数组里面的内容一个一个添加进去
可是acutBuildList好像是针对确定个数的 下面的是从网上找的 但是无法实现
bool CCreateEnt::CreatePipePointXData(AcDbObjectId entId,CStringArray &pipepointArray)//给每个点添加扩展数据
{
   int i,len;
   AcDbXrecord *pXrec=new AcDbXrecord;
   AcDbObject *pObj;
   AcDbObjectId dictObjId,xRecObjId;
   AcDbDictionary *pDict;
   struct resbuf *pRb;
   acdbOpenObject(pObj,entId,AcDb::kForWrite);
   pObj->createExtensionDictionary();
   dictObjId=pObj->extensionDictionary();
   pObj->close();
   acdbOpenObject(pDict,dictObjId,AcDb::kForWrite);
   pDict->setAt("XRecord",pXrec,xRecObjId);
   pDict->close();
   len=pipepointArray.GetSize();
   char *temp;
   for(i=0;isetFromRbChain(*pRb);
   pXrec->close();
   acutPrintf("\nThe first data is:%s",pRb->resval.rstring);
   acutRelRb(pRb);
   return true;
}

yingbuzhe 发表于 2014-3-25 18:50:00

高手在哪里?

xgready 发表于 2014-3-26 10:02:00

用acutNewRb()函数创建链表即可,使用循环依次加入。

yingbuzhe 发表于 2014-3-26 11:21:00


能说具体点吗?这样会不会消耗很多的内存 我扩展的数据大概有30条左右

xgready 发表于 2014-3-27 11:26:00

rb->rbnext=acutNewRb这种方式,注意释放即可。

yingbuzhe 发表于 2014-3-27 15:13:00


是用acutRelRb来释放吗?

xgready 发表于 2014-3-28 14:22:00

是的。
http://www.pudn.com/downloads613 ... /detail2496604.html
这里是一个详细的例子,你可以看看,和你的情况类似。

yingbuzhe 发表于 2014-4-3 16:37:00


多谢 这个问题已经解决了 方便留个QQ吗?
页: [1]
查看完整版本: struct resbuf类型的加入函数acutBuildList 添加实体的扩展数据