1.新建dwg文件
因此,实现dwg新建的关键是建立和保存数据库,至于对数据库的操作,则与在CAD环境中操作数据库是一样的。获取当前CAD数据库方式:
AcDbDatabase* pDb = acdbHostApplicationServices()-> workingDatabase();
2.读取外部dwg数据
因此,读取外部dwg数据,首先是获取该文件的数据库,然后进行数据库操作,最终保存数据库。
3.示例代码
static void vcppMyGroupMYWRITE () {// Put your command code hereAcDbDatabase *pDb = new AcDbDatabase();AcDbBlockTable *pBlkTab;pDb->getBlockTable(pBlkTab, AcDb::kForRead);AcDbBlockTableRecord *pBlkTabRcd;pBlkTab->getAt(ACDB_MODEL_SPACE,pBlkTabRcd, AcDb::kForWrite);pBlkTab->close();AcGePoint3d pt1(10,0,0);AcGePoint3d pt2(30,0,0);AcDbLine *line = new AcDbLine(pt1, pt2);pBlkTabRcd->appendAcDbEntity(line);line->close();pBlkTabRcd->close();pDb->saveAs(_T("E:/test.dwg"));delete pDb;}static void vcppMyGroupMYREAD(){AcDbDatabase *pDb = new AcDbDatabase();pDb->readDwgFile(_T("E:/test.dwg"));AcDbBlockTable *pBlkTab;pDb->getBlockTable(pBlkTab, AcDb::kForRead);AcDbBlockTableRecord *pBlkTabRcd;pBlkTab->getAt(ACDB_MODEL_SPACE, pBlkTabRcd, AcDb::kForWrite);pBlkTab->close();AcDbBlockTableRecordIterator *pBlkTabRcdItr;pBlkTabRcd->newIterator(pBlkTabRcdItr);AcDbEntity *pEn;for(pBlkTabRcdItr->start(); !pBlkTabRcdItr->done(); pBlkTabRcdItr->step()){pBlkTabRcdItr->getEntity(pEn, AcDb::kForRead);acutPrintf(_T("\n实体类型是:%s"), pEn->isA()->name());pEn->close();}AcGePoint3d p1(20,0,0);AcGePoint3d p2(40,0,0);AcDbLine *line = new AcDbLine(p1,p2);pBlkTabRcd->appendAcDbEntity(line);pBlkTabRcd->close();line->close();if(pDb->saveAs(_T("E:/test.dwg")) == Acad::eOk){acutPrintf(_T("The file has been saved..."));};delete pDb;}