找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1261|回复: 2

[ARX函数]:奇怪的插入块函数

[复制链接]
发表于 2006-11-1 16:19:16 | 显示全部楼层 |阅读模式

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

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

×
求教各位大哥,问什么,我只要调用了这个函数。可以插入块。但是每次在退出AUTOCAD的时候,总是出现致命错误啊。只要我不调用这个函数就能安全退出。

//插入块,块名,插入点
void CCommonFunc::insertBlock(char strFileName[20],AcGePoint3d insertPt)
{
AcDbDatabase *pNewDb =new AcDbDatabase(Adesk::kFalse);
AcApDocManager *acDocManager;
acDocManager->lockDocument(acDocManager->curDocument()) ;
char head_name[20];
char tbuf[78];
strcpy(head_name,strFileName);
strcat(head_name,".dwg");
if(acedFindFile(head_name,tbuf)!=RTNORM){
        acutPrintf("file <%s> not existed.",strFileName);
        return;
}
Acad::ErrorStatus es;
es=pNewDb->readDwgFile(tbuf,_SH_DENYNO,false);
if (es!=Acad::eOk)
{
        acutPrintf("\nThe file %s cannot be opend",head_name);
                     return;
}
AcDbDatabase *pDb;
pDb =acdbHostApplicationServices()->workingDatabase();

AcDbObjectId blockId;
if((es=pDb->insert(blockId, strFileName,pNewDb, true))!=Acad::eOk)
{
        AfxMessageBox("Insert failed");
        delete pNewDb;
        return;
}
AcDbBlockReference *pBlkRef = new AcDbBlockReference();
pBlkRef->setBlockTableRecord(blockId);//指向blockId;
pBlkRef->setPosition(insertPt);//设定位置
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();
return;
}[CODE]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2006-11-1 18:15:20 | 显示全部楼层
delete pNewDb;
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-11-2 15:21:03 | 显示全部楼层
pNewDb->closeInput();
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-13 14:27 , Processed in 0.364624 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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