如何实现在new AcDbDatabase里插入一个外部图块?
AcDbDatabase *pDb = new AcDbDatabase();AcDbBlockTable *pBtbl;
pDb->getSymbolTable(pBtbl, AcDb::kForRead);
AcDbBlockTableRecord *pBtblRcd;
pBtbl->getAt(ACDB_MODEL_SPACE, pBtblRcd,AcDb::kForWrite);
pBtbl->close();
AcDbDatabase *pNewDb =new AcDbDatabase(Adesk::kFalse);
//acDocManager->lockDocument(acDocManager->curDocument()) ;
int es=pNewDb->readDwgFile(sFileName , _SH_DENYNO,false);
if (es!=Acad::eOk)
{
acutPrintf("\nThe file %s cannot be opend",sFileName);
return;
}
pDb->insert(AcGeMatrix3d::kIdentity, pNewDb);
pBtblRcd->close();
pDb->saveAs(DwgName);
delete pDb;
上面代码无法实现在new AcDbDatabase里插入一个外部图块,请高手指教如何实现? 参考: AcDbDatabase *pNewDb =new AcDbDatabase(Adesk::kFalse);
int es=pNewDb->readDwgFile(sFileName);
if (es!=Acad::eOk)
{
acutPrintf("\nThe file %s cannot be opend",sFileName);
return;
}
AcDbObjectId id ;
pDb->insert (id,"myfile", pNewDb , Adesk::kFalse) ;
delete pNewDb ; 好象不行啊?
AcDbDatabase *pDb = new AcDbDatabase();
AcDbBlockTable *pBtbl;
pDb->getSymbolTable(pBtbl, AcDb::kForRead);
AcDbBlockTableRecord *pBtblRcd;
pBtbl->getAt(ACDB_MODEL_SPACE, pBtblRcd,
AcDb::kForWrite);
pBtbl->close();
AcDbDatabase *pNewDb =new AcDbDatabase(Adesk::kFalse);
int es=pNewDb->readDwgFile(sFileName);
if (es!=Acad::eOk)
{
acutPrintf("\nThe file %s cannot be opend",sFileName);
return;
}
AcDbObjectId id ;
pDb->insert (id,"myfile", pNewDb , Adesk::kFalse) ;
delete pNewDb ;
pBtblRcd->close();
pDb->saveAs(DwgName);
delete pDb; 图块应理解为"对定义的引用",外部的图块必须在当前图中生成块定义后才能在当前中使用, 没有啊,下面的代码可以将外部的DWG文件插入当前数据库:
AcDbDatabase *pNewDb =new AcDbDatabase(Adesk::kFalse);
acDocManager->lockDocument(acDocManager->curDocument()) ;
int es=pNewDb->readDwgFile(sFileName , _SH_DENYNO,false);
if (es!=Acad::eOk)
{
acutPrintf("\nThe file %s cannot be opend",sFileName);
return;
}
AcDbDatabase *pDb;
pDb =acdbHostApplicationServices ()->workingDatabase () ;
pDb->insert(AcGeMatrix3d::kIdentity, pNewDb);
return;
页:
[1]