- UID
- 475465
- 积分
- 0
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2006-8-4
- 最后登录
- 1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
求教各位大哥,问什么,我只要调用了这个函数。可以插入块。但是每次在退出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] |
|