hdjfeng2009 发表于 2009-8-25 09:54:00

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

我是这样实现的
首先遍历所有的实体,判断实体是否在某个图层中,如果在,就取其ID,然后把它删除
   AcDbObjectId objID = pEnt->objectId();
   pEnt->close();
   AcDbObject* pObj = NULL;
   acdbOpenObject(pObj, objID, AcDb::kForWrite);
   if(Acad::eOk != pObj->erase())
   {
    acutPrintf(L"删除失败!");
   }
   
   pObj->close();
问题是我发现我就没有删除实体。不知道是什么原因,请过往的大侠不吝赐教!

sinceret 发表于 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();

hdjfeng2009 发表于 2009-8-26 20:12:00

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

hdjfeng2009 发表于 2009-8-29 10:48:00

奇怪了,这个论坛咋就没什么人呢...难道都不愿意回答这么小的问题么??

fpiw 发表于 2009-8-29 11:21:00

单看这一段代码是没问题的,可以删除,至于你说的没有删除,可能跟你调用这段函数的其它环境有关

梦幻神话 发表于 2009-9-15 10:35:00

actrTransactionManager->flushGraphics();
刷新看看!

luowy 发表于 2009-9-17 02:13:00

复制代码这代码本身就不对,既然有了实体的指针,为什么要转换成Id,再来删除?画蛇添足,多此一举!
页: [1]
查看完整版本: 请教大虾们在ARX中删除实体的问题