![]() |
【转帖】关于acdbdatabase::purge求教
关于acdbdatabase::purge求教
关于acdbdatabase::purge求教 请问acdbdatabase::purge() void purgeblock(acdbdatabase *pdb) { acdbblocktable *pblocktable; pdb->getsymboltable(pblocktable, acdb::kforread); acdbblocktablerecord *pblocktablerecord; pblocktable->getat(acdb_model_space, pblocktablerecord, acdb::kforwrite); pblocktable->close(); acdbblocktablerecorditerator *pblkrcditr; //块表记录浏览器 pblocktablerecord->newiterator(pblkrcditr); acdbobjectid id; acdbobjectidarray idarr; for(pblkrcditr->start();!pblkrcditr->done();pblkrcditr->step()) { pblkrcditr->getentityid(id); idarr.append(id); //向数组添加实体 } pdb->purge(idarr); //清理垃圾 pblocktablerecord->close(); delete pblkrcditr; } 比如我使用cad的purge命令,看到block下面有可以purge的一些对象,使用这个函数却无法purge掉他们,请问这是怎么回事? purge函数只能用在acdbdatabase::purge(acdbobjectidarray &idarray);中。 你可以用类似上述方法得到block的acdbobjectidarray,再用 acdbdatabase extdatabase( adesk::kfalse ); extdatabase.purge(idarray); 即可清除块 purge函数只能用在acdbdatabase::purge(acdbobjectidarray &idarray);中。 你可以用类似上述方法得到block的acdbobjectidarray,再用 acdbdatabase extdatabase( adesk::kfalse ); extdatabase.purge(idarray); 即可清除块 不行,这样cad就会出现异常,而且调试是 extdatabase.purge(idarray)执行是异常. 你为什么不先close? 我的qq 172522850 purge不进行删除,只是把不可以删掉的东西从array里面除掉罢了,删除要自己处理 我的qq 172522850 |
所有的时间均为北京时间。 现在的时间是 07:03 PM. |