明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2202|回复: 4

[求助]

[复制链接]
发表于 2002-12-14 22:09 | 显示全部楼层 |阅读模式
-------------------------------------------
本人想批量处理Dwg,如清除图内垃圾信息但不知如何使用purge()请高手指点!!谢了!
AcDbDataBase *pDb=new AcDbDataBase(…);
然后用 pDb->readDwgFile()
清除图内垃圾
pDb->purge()
最后将运行pDb->save(),
再运行delete pDb
发表于 2002-12-16 11:36 | 显示全部楼层

AcDbDataBase::purge()的使用

(我认为,除purge()以外的工作你应该能够完成,否则,你不应该开始使用ARX编程,应该学习ARX数据库操作基本知识。)
AcDbDataBase::purge()的完整语法:
Acad::ErrorStatus AcDbDataBase::purge(AcDbObjectIdArray& ids) const;
ids为函数所需的要操作的对象ID数组,根据你的需要,应该把数据库中所有的对象添加到该数组中。可以添加一个块表记录浏览器,遍历数据库块表,并将实体添加到数组中。具体这样做:
void DoPurge(void)
{
  AcDbDataBase *pDb=new AcDbDataBase(…);
  然后用 pDb->readDwgFile()
  AcDbBlockTable *pBlockTable;
  pDb->getSymbolTable(pBlockTable, AcDb::kForRead);
  AcDbBlockTableRecord *pBlockTableRecord;
  pBlockTable->getAt(ACDB_MODEL_SPACE, pBlockTableRecord,
        AcDb::kForWrite);
  pBlockTable->close();
  AcDbBlockRecordIterator *pBlkRcdItr;  //块表记录浏览器
  pBlockTable->newIterator(pBlkRcdItr);
  AcDbEntity * pEnt;
  AcDbObjectIdArray idArr;
  for(pBlkRcdItr->start();!pBlkRcdItr->done();pBlkRcdItr->step())
  {
     pBlkRcdItr->getEntity(pEnt,AcDb::kForWrite);
     idArr.append(pEnt);  //向数组添加实体
     pEnt->close();
   }
   pDb->purge(idArr);    //清理垃圾
   pBlkRcdItr->close();
     
  最后将运行pDb->save(),
  再运行delete pDb
}
发表于 2002-12-17 16:28 | 显示全部楼层

THANKS!但还有两个问题......

本帖最后由 作者 于 2002-12-17 16:28:06 编辑

非常感谢版主席的回复。我一定会继续努力学习ARX.谢谢!!
    但我有两个问题:
      1.你定义idArr是一个实体ID数组而pEnt定义的是一个实体类型不可能加到ID数组里的?
      2.当遍历数据库块表的时候只是遍历实体怎么可能清除掉图内没用到的线形、块、层等信息?
      请版主回复谢谢!


[此贴子已经被作者于2002-12-17 15:31:14编辑过]
发表于 2002-12-18 07:58 | 显示全部楼层

Re:

第一个问题,是我粗心,SRY。应该这样:
AcDbObjectId *id;
for(......)
{
  pBlkRcdItr->getEntity(pEnt,AcDb::kForWrite);
  pEnt->getEntityId(id);
  idArr.append(id);
  pEnt->close();
}
......
第二个问题,可用遍历九个符号表的方法,类似块表操作来实现purge。我不知道是否有更好的方法,希望有。
发表于 2002-12-18 16:31 | 显示全部楼层

非常感谢!!

非常感谢!![glow=255,red,2]文字[/glow]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-23 21:19 , Processed in 0.430270 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表