明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2496|回复: 7

请教大虾们在ARX中删除实体的问题

[复制链接]
发表于 2009-8-25 09:54:00 | 显示全部楼层 |阅读模式
我是这样实现的
首先遍历所有的实体,判断实体是否在某个图层中,如果在,就取其ID,然后把它删除
   AcDbObjectId objID = pEnt->objectId();
   pEnt->close();
   AcDbObject* pObj = NULL;
   acdbOpenObject(pObj, objID, AcDb::kForWrite);
   if(Acad::eOk != pObj->erase())
   {
    acutPrintf(L"删除失败!");
   }
   
   pObj->close();

问题是我发现我就没有删除实体。不知道是什么原因,请过往的大侠不吝赐教!
发表于 2009-8-25 12:23:00 | 显示全部楼层

你看看精华贴,王咣生的日志

你看看精华贴,王咣生的日志
发表于 2009-8-25 16:51:00 | 显示全部楼层

es = acdbOpenObject(pObj, objID, AcDb::kForWrite);

看看是否打开成功!

 

  AcDbEntity* pObj = NULL;
   if(acdbOpenObject(pObj, objID, AcDb::kForWrite) != Acad::eOk)

{

   acutPrintf("\n删除失败!\n");

   return;

}
   if(Acad::eOk != pObj->erase())
   {
    acutPrintf(L"删除失败!");
   }
   
   pObj->close();

 楼主| 发表于 2009-8-26 20:12:00 | 显示全部楼层

谢谢楼上的回帖,提示删除成功了,但是还没有删去,不知道是怎么回事...

 楼主| 发表于 2009-8-29 10:48:00 | 显示全部楼层
奇怪了,这个论坛咋就没什么人呢...难道都不愿意回答这么小的问题么??
发表于 2009-8-29 11:21:00 | 显示全部楼层
单看这一段代码是没问题的,可以删除,至于你说的没有删除,可能跟你调用这段函数的其它环境有关
发表于 2009-9-15 10:35:00 | 显示全部楼层

  actrTransactionManager->flushGraphics();

刷新看看!

发表于 2009-9-17 02:13:00 | 显示全部楼层
  1.    AcDbObjectId objID = pEnt->objectId();
  2.    pEnt->close();
  3.    AcDbObject* pObj = NULL;
  4.    acdbOpenObject(pObj, objID, AcDb::kForWrite);
  5.    if(Acad::eOk != pObj->erase())
  6.    {
  7.     acutPrintf(L"删除失败!");
  8.    }
  9.    
  10.    pObj->close();
复制代码
这代码本身就不对,既然有了实体的指针,为什么要转换成Id,再来删除?画蛇添足,多此一举!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 13:28 , Processed in 0.176637 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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