请教大虾们在ARX中删除实体的问题
我是这样实现的<br/>首先遍历所有的实体,判断实体是否在某个图层中,如果在,就取其ID,然后把它删除<br/> AcDbObjectId objID = pEnt->objectId();<br/> pEnt->close();<br/> AcDbObject* pObj = NULL;<br/> acdbOpenObject(pObj, objID, AcDb::kForWrite);<br/> if(Acad::eOk != pObj->erase())<br/> {<br/> acutPrintf(L"删除失败!");<br/> }<br/> <br/> pObj->close();<br/><br/>问题是我发现我就没有删除实体。不知道是什么原因,请过往的大侠不吝赐教!你看看精华贴,王咣生的日志
你看看精华贴,王咣生的日志 <p>es = acdbOpenObject(pObj, objID, AcDb::kForWrite);</p><p>看看是否打开成功!</p><p> </p><p> AcDbEntity* pObj = NULL;<br/> if(acdbOpenObject(pObj, objID, AcDb::kForWrite) != Acad::eOk)</p><p>{</p><p> acutPrintf("\n删除失败!\n");</p><p> return;</p><p>}<br/> if(Acad::eOk != pObj->erase())<br/> {<br/> acutPrintf(L"删除失败!");<br/> }<br/> <br/> pObj->close();<br/></p><p></p> <p>谢谢楼上的回帖,提示删除成功了,但是还没有删去,不知道是怎么回事...</p> 奇怪了,这个论坛咋就没什么人呢...难道都不愿意回答这么小的问题么?? 单看这一段代码是没问题的,可以删除,至于你说的没有删除,可能跟你调用这段函数的其它环境有关 <p> actrTransactionManager->flushGraphics(); </p><p>刷新看看!</p>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]