现在的位置: 首页 > 综合 > 正文

建立新的DWG

2012年12月08日 ⁄ 综合 ⁄ 共 2257字 ⁄ 字号 评论关闭

BOOL CMainDlg::newDwg()
{
 Acad::ErrorStatus st;
 AcApDocument *pDoc=acDocManager->curDocument();
 st=acDocManager->lockDocument(pDoc);
 if(st!=Acad::eOk)
 {
  acutPrintf("锁定文档失败");
  return FALSE;
 }
    static char pData[] = "acad.dwt";
    st = acDocManager->appContextNewDocument((const char *)pData);//新建一个DWG
 if(st!=Acad::eOk)
 {
  acutPrintf("新建文档失败");
  return FALSE;
 }
 
 acDocManager->unlockDocument(pDoc);

 return TRUE;
}

 

 

或后台建立

void
createDwg()
{
    AcDbDatabase *pDb = new AcDbDatabase();
 
    AcDbBlockTable *pBtbl;
    pDb->getSymbolTable(pBtbl, AcDb::kForRead);

    AcDbBlockTableRecord *pBtblRcd;
    pBtbl->getAt(ACDB_MODEL_SPACE, pBtblRcd,
        AcDb::kForWrite);
    pBtbl->close();

    AcDbCircle *pCir1 = new AcDbCircle(AcGePoint3d(1,1,1),
                                       AcGeVector3d(0,0,1),
                                       1.0),
               *pCir2 = new AcDbCircle(AcGePoint3d(4,4,4),
                                       AcGeVector3d(0,0,1),
                                       2.0);

    pBtblRcd->appendAcDbEntity(pCir1);
    pCir1->close();
   
    pBtblRcd->appendAcDbEntity(pCir2);
    pCir2->close();
    pBtblRcd->close();

    // AcDbDatabase::saveAs() does NOT automatically
    // append a DWG file extension, so it
    // must be specified.
    //
 pDb->saveAs("c://test1.dwg");
    delete pDb;
}

void
readDwg()
{
    // Set constructor parameter to kFalse so that the
    // database will be constructed empty.  This way only
    // what is read in will be in the database.
    //
    AcDbDatabase *pDb = new AcDbDatabase(Adesk::kFalse);

    // The AcDbDatabase::readDwgFile() function
    // automatically appends a DWG extension if it is not
    // specified in the filename parameter.
    //
    pDb->readDwgFile("test1.dwg");

    // Open the model space block table record.
    //
    AcDbBlockTable *pBlkTbl;
    pDb->getSymbolTable(pBlkTbl, AcDb::kForRead);

    AcDbBlockTableRecord *pBlkTblRcd;
    pBlkTbl->getAt(ACDB_MODEL_SPACE, pBlkTblRcd,
        AcDb::kForRead);
    pBlkTbl->close();

    AcDbBlockTableRecordIterator *pBlkTblRcdItr;
    pBlkTblRcd->newIterator(pBlkTblRcdItr);

    AcDbEntity *pEnt;
    for (pBlkTblRcdItr->start(); !pBlkTblRcdItr->done();
        pBlkTblRcdItr->step())
    {
        pBlkTblRcdItr->getEntity(pEnt,
            AcDb::kForRead);
        acutPrintf("classname: %s/n",
            (pEnt->isA())->name());
        pEnt->close();
    }
    pBlkTblRcd->close();
    delete pBlkTblRcdItr;
    delete pDb;
}
 

抱歉!评论已关闭.