建立新的DWG

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;
}
 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
您好!对于复制 DWG 文件,您可以使用 Teigha 提供的 API 来实现。Teigha 是一个用于处理 DWG 和 DXF 文件的开发工具包,它提供了许多功能和方法来读取、编辑和创建 DWG 文件。 要复制 DWG 文件,您可以使用 Teigha 的读取和写入功能。首先,使用 Teigha API 的读取功能打开原始 DWG 文件。然后,创建一个DWG 文件并将原始 DWG 文件中的内容复制到文件中。最后,保存DWG 文件即可完成复制操作。 以下是一个使用 Teigha API 复制 DWG 文件的示例代码: ```cpp #include <iostream> #include "OdPlatform.h" #include "RxObjectImpl.h" #include "RxVariantValue.h" #include "RxObject.h" #include "RxModule.h" #include "RxModuleImpl.h" #include "DbBaseDatabase.h" #include "DbDatabase.h" #include "DbHostAppServices.h" #include "DbBlockTable.h" #include "DbBlockTableRecord.h" #include "DbObjectId.h" int main() { OdRxModulePtr pModule = ::odrxDynamicLinker()->loadModule(OdDbBaseHostAppServices::kODDbBaseHostAppServicesModuleName); OdDbBaseHostAppServicesPtr pServices = ::odrxDynamicLinker()->createObject(OdDbBaseHostAppServices::kODDbBaseHostAppServicesModuleName).safeCast<OdDbBaseHostAppServices>(); OdDbDatabasePtr pDatabase = ::odrxDynamicLinker()->createObject(OdDbDatabase::desc()).safeCast<OdDbDatabase>(); if (!pDatabase->readFile("path_to_original_file.dwg")) { std::cout << "Failed to open the original DWG file." << std::endl; return -1; } OdDbDatabasePtr pNewDatabase = ::odrxDynamicLinker()->createObject(OdDbDatabase::desc()).safeCast<OdDbDatabase>(); if (!pNewDatabase->newFiler()) { std::cout << "Failed to create a new DWG file." << std::endl; return -1; } // Copy the content from the original database to the new database pNewDatabase->deepCloneObjects(pDatabase->getBlockTableId(), pNewDatabase->getBlockTableId()); if (!pNewDatabase->saveAs("path_to_new_file.dwg")) { std::cout << "Failed to save the new DWG file." << std::endl; return -1; } std::cout << "DWG file copied successfully." << std::endl; return 0; } ``` 请注意,这只是一个示例代码,并且假设您已经安装了 Teigha 开发工具包并正确配置了编译环境。您需要根据实际的开发环境和需求进行适当的调整和修改。 希望这可以帮助到您!如果您有任何其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值