Close

Relief for ODA Team in Ukraine

Learn more
ODA PRC SDK
Export a Drawing to a .prc File
This topic contains information about exporting a .dwg/dgn drawing to a .pdf file with PRC support.

Export from .dgn to .prc

To export a .dgn file to a .pdf file with PRC format support:
  1. Load the PDF export module:
    
              OdPdfExportModulePtr pModule = ::odrxDynamicLinker()->loadApp(OdPdfExportModuleName, false);
            
  2. Load modules related to exporting .dgn to .prc files:
    
              ::odrxDynamicLinker()->loadApp(OdPrcModuleName, false);
              ::odrxDynamicLinker()->loadApp(OdDgn2PrcExportModuleName, false);
              ::odrxDynamicLinker()->loadModule(L"TG_Db", false);
            
  3. Create or load a .dgn database that contains the content to be exported.
  4. Create an instance of the PDF export module:
    
              OdPdfExportPtr exporter = pModule->create();
            
  5. Set export parameters:
    
              PDFExportParams params:
              params.setDatabase(pDb);
              params.setVersion(PDFExportParams::kPDFv1_6);
              OdString pdfName = pdfPath;
              params.setOutput(odSystemServices()->createFile(pdfName, Oda::kFileWrite, Oda::kShareDenyNo, Oda::kCreateAlways));
    
              params.setExportFlags(PDFExportParams::kDefault);
    
              params.setTitle("Batch PDF File");
              params.setAuthor("Dgn2PrcExportTest");
              params.setCreator("ODA Platform");
              params.setPRCMode(flags);
            
    It is assumed that pDb is a pointer to the exported .dgn database and pdfPath is a string containing the full path to the output .pdf file.
  6. Create an instance of the export context (OdPrcContextForPdfExport object) and set it as an export parameter:
    
              OdPrcContextForPdfExportPtr pContext = odCreatePrcAllInSingleViewContextForDGN();
              params.setPRCContext(pContext);
            

    See Export to .pdf File Parameters and Flags to get additional information about PRC export context.
  7. Specify layout export parameters (if needed):
    
              OdArray layouts = params.layouts();
              OdDgModelTablePtr pModelTable = pDb->getModelTable();
              if (!pModelTable.isNull())
              {
                OdDgElementIteratorPtr pIter = pModelTable->createIterator();
                for ( ; !pIter->done(); pIter->step() )
                {
                  OdDgModelPtr pModel = OdDgModel::cast( pIter->item().openObject() );
                  if ( pModel.get() )
                  {
                    layouts.push_back(pModel->getName());
                  }
                }
              }
              
              params.layouts() = layouts;
              params.pageParams().resize(1, OdGsPageParams());
            

    See Export to .pdf File Parameters and Flags to get additional information about parameters for .dgn to .pdf export with PRC support.
  8. Call the exportPdf() method of the exporter object and check the result of the export operation:
    
              OdUInt32 errCode = exporter->exportPdf(params);
              if (errCode != 0)
              {
                OdString errMes = exporter->exportPdfErrorCode(errCode);
                  printf("\nexportPdf error returned : 0x%x. \n%s", (unsigned)errCode, (const char*)errMes);
              }
            

See the OdDgn2PdfExportWithPrc sample application for an example of using .dgn to .prc export functionality.

Export from .dwg to .prc

To export a .dwg file (for example, a drawing that contains a 3D solid object):
  1. Load the PDF export module to access the functionality for exporting to .prc files:
    
              OdPdfExportModulePtr pModule = ::odrxDynamicLinker()->loadApp(OdPdfExportModuleName, false);
            
  2. Load modules related to exporting .dwg to .prc files:
    
              ::odrxDynamicLinker()->loadApp(OdPrcModuleName, false);
              ::odrxDynamicLinker()->loadApp(OdDwg2PrcExportModuleName, false);
            
  3. Create or load a .dwg database that contains the content to be exported.
  4. Create an instance of the PDF export module:
    
              OdPdfExportPtr exporter = pModule->create();
            
  5. Set export parameters:
    
              PDFExportParams params;
    
              params.setDatabase(pDb);
              params.setVersion(PDFExportParams::kPDFv1_6);
              params.setOutput(odSystemServices()->createFile(pdfPath, Oda::kFileWrite, Oda::kShareDenyNo, Oda::kCreateAlways));
    
              params.setExportFlags(PDFExportParams::PDFExportFlags(PDFExportParams::kDefault));
    
              params.setTitle("Batch PDF File");
              params.setAuthor("OdPdfExportWithPrc");
              params.setCreator("ODA Platform");
              params.setPRCMode(flags);
              OdPrcContextForPdfExportPtr pContext = (shouldUseSingleViewMode) ? odCreatePrcAllInSingleViewContextForTD() : odCreatePrcDefaultContextForTD();
              params.setPRCContext(pContext);          
            

    See Export to .pdf File Parameters and Flags to get additional information about PRC export context.
    It is assumed that pDb is a pointer to the exported .dwg database and pdfPath is a string containing the full path to the output .pdf file.
  6. Specify layout export parameters (if needed):
    
              OdDbBlockTableRecordPtr pLayoutBlock = pDb->getActiveLayoutBTRId().safeOpenObject();
              OdDbLayoutPtr pLayout = pLayoutBlock->getLayoutId().safeOpenObject();
              params.layouts().push_back(pLayout->getLayoutName());
    
              params.pageParams().resize(1, OdGsPageParams());
            

    See Export to .pdf File Parameters and Flags to get additional information about parameters for .dwg to .pdf export with PRC support.

  7. Call the exportPdf() method of the exporter object and check the result of the export operation:
    
              OdUInt32 errCode = exporter->exportPdf(params);
              if (errCode != 0)
              {
                OdString errMes = exporter->exportPdfErrorCode(errCode);
                printf("\nexportPdf error returned : 0x%x. \n%s", (unsigned)errCode, (const char*)errMes);     
              }
            

See the OdPdfExportWithPrc sample application for an example of using .dwg to .prc export functionality.

See Also:

Export a .prc File to an .xml File
Creation of a .prc File
Copyright © 2002 – 2022. Open Design Alliance. All rights reserved.