找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1065|回复: 5

[求助]:插入图形,为什么慢

[复制链接]

已领礼包: 1个

财富等级: 恭喜发财

发表于 2003-7-31 12:48:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我用下面的代码插入图形到当前稳当,当DWG在3M后,慢的我无法忍受,而使用ACAD的INSERT耗时跃15秒,而我的INSERT需要5分钟,甚至最后CPU耗尽而死机???
AcDbDatabase* pCurDb;
AcDbDatabase* pDb = new AcDbDatabase(Adesk::kFalse);
pDb->readDwgFile("C:\\aaa.dwg");
pCurDb = acdbHostApplicationServices()->workingDatabase();
//慢在INSERT
if(pCurDb->insert(AcGeMatrix3d::kIdentity,pDb) != Acad::eOk)
{
delete pDb;
return FALSE;
}

delete pDb;
return TRUE;
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-3-31 11:00:01 | 显示全部楼层
我也遇到这样的情况!请问stoneball最后是怎么解决的?急!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-3-31 11:39:57 | 显示全部楼层
你的"C:\\aaa.dwg"文件是否太大?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-3-31 11:52:45 | 显示全部楼层
先把你的图PURGE 一下吧!或者做一个块出来试试,看能不能提高您的插入速度
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-3-31 13:29:54 | 显示全部楼层
文件比较小。PURGE也没有用:(

晓东,求救!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-3-31 20:36:01 | 显示全部楼层

Re: [求助]:插入图形,为什么慢

最初由 stoneball 发布
[B]我用下面的代码插入图形到当前稳当,当DWG在3M后,慢的我无法忍受,而使用ACAD的INSERT耗时跃15秒,而我的INSERT需要5分钟,甚至最后CPU耗尽而死机???
AcDbDatabase* pCurDb;
AcDbDatabase* pDb = new AcDbData... [/B]


  是方法不对!
[PHP]
int XRecordApplication::InsertBlock(CString fileName,CString XReName)////////插图(Insert)
{
        CString pBlockName=XReName;
        //在这里一定要用Adesk::kFalse
        AcDbDatabase *pNewDb =new AcDbDatabase(Adesk::kFalse);
        if (Acad::eOk!=pNewDb->readDwgFile(fileName , _SH_DENYNO,false))
        {
                acutPrintf("\nThe file %s cannot be opend",fileName);
                return 0;
        }
//这样,source.dwg以经用pNewDb来表示了. 我们用pDb来表示当前数据库
        AcDbDatabase *pDb;
        pDb =acdbHostApplicationServices()->workingDatabase();
        AcDbObjectId blockId;
        if(Acad::eOk!=pDb->insert(blockId, pBlockName,pNewDb, true))
        {
                AfxMessageBox(fileName+" Insert failed");
                delete pNewDb;pNewDb=NULL;
                return 0;
        }
        AcDbBlockReference *pBlkRef = new AcDbBlockReference;
        pBlkRef->setBlockTableRecord(blockId);//指向blockId;
        AcDbBlockTable *pBlockTable;
        pDb->getSymbolTable(pBlockTable, AcDb::kForRead);
        AcDbBlockTableRecord *pBlockTableRecord;
        pBlockTable->getAt(ACDB_MODEL_SPACE, pBlockTableRecord, AcDb::kForWrite);
        pBlockTable->close();
        AcDbObjectId newEntId;
        pBlockTableRecord->appendAcDbEntity(newEntId, pBlkRef);
        pBlockTableRecord->close();
        pBlkRef->close();
        delete pNewDb;pNewDb=NULL;//删除插入图的指针,不然关闭CAD后会出错
}
[/PHP]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-9-21 13:42 , Processed in 0.438805 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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