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

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

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

sinceret 发表于 2009-8-25 12:23:00

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

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

梦幻神话 发表于 2009-8-25 16:51:00

<p>es = acdbOpenObject(pObj, objID, AcDb::kForWrite);</p><p>看看是否打开成功!</p><p>&nbsp;</p><p>&nbsp;&nbsp;AcDbEntity* pObj = NULL;<br/>&nbsp;&nbsp;&nbsp;if(acdbOpenObject(pObj, objID, AcDb::kForWrite) != Acad::eOk)</p><p>{</p><p>&nbsp;&nbsp; acutPrintf("\n删除失败!\n");</p><p>&nbsp;&nbsp; return;</p><p>}<br/>&nbsp;&nbsp;&nbsp;if(Acad::eOk != pObj-&gt;erase())<br/>&nbsp; &nbsp;{<br/>&nbsp; &nbsp; acutPrintf(L"删除失败!");<br/>&nbsp; &nbsp;}<br/>&nbsp; &nbsp;<br/>&nbsp; &nbsp;pObj-&gt;close();<br/></p><p></p>

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

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

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

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

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

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

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

<p>&nbsp; actrTransactionManager-&gt;flushGraphics(); </p><p>刷新看看!</p>

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


   AcDbObjectId objID = pEnt->objectId();
   pEnt->close();
   AcDbObject* pObj = NULL;
   acdbOpenObject(pObj, objID, AcDb::kForWrite);
   if(Acad::eOk != pObj->erase())
   {
    acutPrintf(L"删除失败!");
   }
   
   pObj->close();
这代码本身就不对,既然有了实体的指针,为什么要转换成Id,再来删除?画蛇添足,多此一举!
页: [1]
查看完整版本: 请教大虾们在ARX中删除实体的问题