|
//设置好文件名称 插入点 插入角度 后调用此函数完成
void InsertTo_Demo(CString dwgFileName,AcGePoint3d ptInsert ,float fAngle)
{
AcDbObjectId id;
AcDbDatabase *pDatabase;
AcDbDatabase *pdb;
pDatabase=new AcDbDatabase(FALSE);
HRESULT hr = S_OK;
hr=pDatabase->readDwgFile(baseFunc->CStringToPChar(dwgFileName));
if (hr!=S_OK)
{
CString strError;
strError.Format("读取%s文件时出错!可能版本不匹配!",dwgFileName);
AfxMessageBox(strError);
return;
}
pdb=acdbHostApplicationServices()->workingDatabase();
pdb->insert(id,
baseFunc->CStringToPChar(dwgFileName),pDatabase);
//delete pDatabase;
pDatabase=NULL;
AcDbBlockTable *pTable=NULL;
acdbHostApplicationServices()->workingDatabase()->getSymbolTable(pTable,
AcDb::kForRead);
ASSERT(pTable!=NULL);
AcDbBlockTableRecord *pModelSpace;
pTable->getAt(ACDB_MODEL_SPACE,pModelSpace,AcDb::kForWrite);
pTable->close();
AcDbBlockReference *pBlockRef;
pBlockRef=new AcDbBlockReference(ptInsert,id);
pBlockRef->setRotation(fAngle);
AcGeScale3d scale;
scale.sx=1;
scale.sy=1;
scale.sz=1;
pBlockRef->setScaleFactors (scale);
pModelSpace->appendAcDbEntity(pBlockRef);
pModelSpace->close();
pBlockRef->close();
}
编译没有问题,运行时,只要到了要关闭当前的图纸时,就有问题,致命错误。
能保存能另存为。不能打开别的图纸,不能关闭当前图纸。
如果手动将插入的块删掉再关闭,还是有问题。
请高手帮忙 |
|