关于acdbDatabase::purge求教
<P>请问acdbDatabase::purge()</P><P>void PurgeBlock(AcDbDatabase *pDb)<BR>{<BR> AcDbBlockTable *pBlockTable;<BR> pDb->getSymbolTable(pBlockTable, AcDb::kForRead);<BR> AcDbBlockTableRecord *pBlockTableRecord;<BR><BR> pBlockTable->getAt(ACDB_MODEL_SPACE, pBlockTableRecord,<BR> AcDb::kForWrite);<BR> pBlockTable->close();<BR></P>
<P> AcDbBlockTableRecordIterator *pBlkRcdItr; //块表记录浏览器<BR> pBlockTableRecord->newIterator(pBlkRcdItr);<BR></P>
<P> AcDbObjectId id;<BR> AcDbObjectIdArray idArr;<BR>for(pBlkRcdItr->start();!pBlkRcdItr->done();pBlkRcdItr->step())<BR> {<BR> pBlkRcdItr->getEntityId(id);<BR> idArr.append(id); //向数组添加实体<BR> }<BR> pDb->purge(idArr); //清理垃圾<BR> pBlockTableRecord->close();<BR> delete pBlkRcdItr;<BR>} </P>
<P>比如我使用cad的purge命令,看到block下面有可以purge的一些对象,使用这个函数却无法purge掉他们,请问这是怎么回事?</P> <P>purge函数只能用在AcDbDatabase::purge(AcDbObjectIdArray &idArray);中。</P>
<P>你可以用类似上述方法得到BLOCK的AcDbObjectIdArray,再用</P>
<P>AcDbDatabase extDatabase( Adesk::kFalse ); extDatabase.purge(idArray);</P>
<P>即可清除块</P>
<P> </P>
<P> </P> <P>purge函数只能用在AcDbDatabase::purge(AcDbObjectIdArray &idArray);中。</P>
<P>你可以用类似上述方法得到BLOCK的AcDbObjectIdArray,再用</P>
<P>AcDbDatabase extDatabase( Adesk::kFalse );</P>
<P> extDatabase.purge(idArray);</P>
<P>即可清除块</P> <P>不行,这样cad就会出现异常,而且调试是 extDatabase.purge(idArray)执行是异常.</P> 你为什么不先close? purge不进行删除,只是把不可以删掉的东西从array里面除掉罢了,删除要自己处理
页:
[1]