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

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;i<len;i++)
   {
         temp=(LPSTR)(LPCTSTR)pipepointArray.GetAt(i);
         pRb=acutBuildList(RTRESBUF,pRb,AcDb::kDxfText,temp,RTNONE);
   }

   pXrec->setFromRbChain(*pRb);
   pXrec->close();
   acutPrintf("\nThe first data is:%s",pRb->resval.rstring);
   acutRelRb(pRb);
   return true;

}

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

高手在哪里?

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

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

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

xgready 发表于 2014-3-26 10:02 static/image/common/back.gif
用acutNewRb()函数创建链表即可,使用循环依次加入。

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

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

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

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

xgready 发表于 2014-3-27 11:26 static/image/common/back.gif
rb->rbnext=acutNewRb这种方式,注意释放即可。

是用acutRelRb来释放吗?

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

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

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

xgready 发表于 2014-3-28 14:22 static/image/common/back.gif
是的。
http://www.pudn.com/downloads613/sourcecode/graph/detail2496604.html
这里是一个详细的例子, ...

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