明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1817|回复: 4

请教一个删除扩展数据函数的问题

[复制链接]
发表于 2007-10-17 10:40:00 | 显示全部楼层 |阅读模式

下面是找到的一个删除扩展数据的函数,但是我觉得是不是如注释那样:

void delXdata()
{
    ads_name eNam;
   
    ads_point pt;
   
    int ret = acedEntSel ("\nselect an object:", eNam, pt);  
   
    if ( ret!= RTNORM)   
    {
         return;   
    }
 
    AcDbObjectId ObjId;
 
    acdbGetObjectId(ObjId, eNam);
 
    AcDbEntity *pEnt;

    acdbOpenAcDbEntity(pEnt, ObjId, AcDb::kForWrite);

    resbuf *xdata = pEnt->xData(NULL);

    if (xdata)
    {
         xdata->rbnext = NULL;  //是不是要先delete,再= NULL?不然原来的内容没有释放啊!如果有多个rbnext 的话,是否要循环全部删除?而不只删除  一个?
  
         pEnt->setXData(xdata);
  
         acutRelRb(xdata);
    }
   
    pEnt->close();
}

发表于 2007-10-17 21:44:00 | 显示全部楼层
确实有问题
发表于 2008-1-10 10:11:00 | 显示全部楼层
我运行后也出现错误呢,是哪里有问题?
发表于 2008-1-10 10:32:00 | 显示全部楼层
你已经调用acutRelRb了。resbuf应该类似于一个链表结构的。所以acutRelRb调用一次就行了,传入要删除的指针头。从中间删除应该也可以,可能要把最后一个指针置为NULL. a->b->c。传入b,然后置a->next = Null。应该先删,后置null,否则你delete一个null,什么都没做。
发表于 2008-1-16 20:25:00 | 显示全部楼层

扩充数据的删除不能用上述方法,上述方法不能删除扩充数据,

删除扩充数据的方法是将扩充数据中的1001扩充数据改为空.

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 17:35 , Processed in 0.173168 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表