Drawings SDK: 選択したエンティティをPDFにエクスポート

大規模で複雑な図面全体ではなく、その一部をPDFにエクスポートできます。たとえば、以下で青色にハイライト表示されている選択されたブロックのみをエクスポートしたい場合があります。

図面のPlotSettings内のkWindow領域を使用してPDFにエクスポートできます(「ウィンドウプロット領域をPDFにエクスポートする」で説明されているように)が、この領域に他のエンティティまたはその一部が存在する場合、結果のPDFファイルに表示される可能性があります。

特定のエンティティのみをPDFにエクスポートするより信頼性の高い方法は、OdDbSelectionSetオブジェクトを使用することです。

たとえば、次のコードフラグメントを使用します。

  1. データベース内の図面コンテンツを読み込みます。
              
    OdDbDatabasePtr pDb = pHostApp->readFile("SelectionSet.dwg");
                 
  2. PDFエクスポートパラメータを設定します。
              
    OdPdfExportModulePtr pPdfModule = ::odrxDynamicLinker()->loadApp(OdPdfExportModuleName);
    OdPdfExportPtr exporter = pPdfModule->create();
    
    PDFExportParams params;
    params.setDatabase(pDb);
    params.setExportFlags(PDFExportParams::kZoomToExtentsMode);
                    
  3. 空のOdSelectionSet配列を作成します。次に、OdSelectionSetオブジェクトを作成し、必要なエンティティの識別子をそれに付加します。その後、OdSelectionSetオブジェクトを配列に付加し、その配列をPDFExportParamsオブジェクトに関連付けます。
              
    OdArray  pSSets;
    OdDbSelectionSetPtr pSs = OdDbSelectionSet::createObject(pDb);
    pSs->append(pDb->getOdDbObjectId(OdDbHandle(0xBE)));
    pSs->append(pDb->getOdDbObjectId(OdDbHandle(0xAB)));
    pSSets.append(pSs);
    
    params.setSelectionSetsArray(pSSets);
                  

    注: 上記のコードフラグメントで使用されているデータベースハンドル (0xBE および 0xAB) はハードコードされています。代わりに、ご自身の図面データベースのハンドルを使用してください。

  4. 図面をエクスポートします。
              
    OdUInt32 errCode = exporter->exportPdf(params);
              
            

出力PDFドキュメント:

上記の例は、1つのレイアウトのみを持つ図面の一部をエクスポートする方法を示しています。複数のレイアウトを含む可能性のある、より複雑な図面から特定のエンティティをエクスポートするための一般的なアプローチを検討してみましょう。

複数のレイアウトをエクスポートするには、エクスポートするレイアウトの名前を含む配列を作成します。各レイアウトは、出力PDFファイル内で個別のページに変換されます。

PDFExportParamsクラスインターフェースは、PDFファイルにエクスポートされる元の図面レイアウトのリストを管理するメソッドを提供します。

  • addLayout() — エクスポートされるレイアウトの配列に新しいレイアウト名を追加します。
  • setLayouts() — エクスポートされるレイアウトの名前を含む文字列配列を設定します。
  • layouts() — PDFExportParamsオブジェクトに関連付けられた、エクスポートされるレイアウトの名前を含む現在の文字列配列を返します。

レイアウトのエクスポートに関する追加情報については、「PDFのレイアウトをエクスポートし、ページパラメータを設定する」を参照してください。


エクスポートするレイアウトの配列を設定した後、エクスポートしたいレイアウト上のエンティティを指定できます。一部のレイアウトでは、すべてのエンティティをエクスポートしたい場合があります。どちらの場合も、OdDbSelectionSetオブジェクトの配列を作成する必要があります。この配列の各要素は、図面データベースからエクスポートされたレイアウトに対応し、PDFファイルにエクスポートされるレイアウトエンティティの識別子を含みます。


OdDbSelectionSet配列は、エクスポートする図面レイアウトの配列と同じサイズである必要があります。レイアウト全体(レイアウトに属するすべてのエンティティ)をエクスポートするには、対応するOdDbSelectionSet要素が空である必要があります(選択セットにはエンティティ識別子が含まれていません)。


PDFExportParamsオブジェクト内のエクスポートされたレイアウトの配列には、エクスポートされるすべてのレイアウトの名前を持つ要素が含まれている必要があります。

たとえば、図面に2つのレイアウトがあり、最初のレイアウトに属する特定のエンティティと、2番目のレイアウトのすべてのエンティティをエクスポートしたいとします。エクスポートされたレイアウトの配列に、すでにレイアウト名を持つ2つの要素が含まれていると仮定します。この場合、エクスポートされるエンティティが最初のレイアウトにのみ存在する場合でも、2つのOdDbSelectionSetオブジェクトを作成する必要があります。次に、最初のOdDbSelectionSetオブジェクトに最初のレイアウトからエクスポートするエンティティの識別子を追加し、2番目のOdDbSelectionSetオブジェクトを空のままにします。

OdDbSelectionSet配列を、エクスポートパラメータを処理するPDFExportParamsクラスインスタンスに関連付けるには、setSelectionSetsArray()メソッドを呼び出します。

このアプローチには制限があります。選択されたエンティティ(またはブロック)は、モデル空間やペーパー空間などのトップレベルブロックに属している必要があります。エンティティがトップレベルではないブロックに属している場合、そのトップレベルの親ブロックがOdDbSelectionSetオブジェクトに追加されない限り、PDFにはエクスポートされません。逆に、トップレベルブロックがOdDbSelectionSetオブジェクトに追加されると、そのすべての子エンティティがエクスポートされます。

PRCの部分PDFエクスポートのサポート

OdDbSelectionSet配列を使用した部分的なPDFエクスポートは、PRCデータにも適用されます。例えば、下の図は2つのソリッドを持つ図面を示しています。

上記のように、選択したソリッドの識別子をOdDbSelectionSet配列に追加し、ソリッドエンティティのみを3D PDF (PRC) 形式にエクスポートできます。

PRCのPDFエクスポートに関する詳細については、「PRCを使用したPDFへのエクスポート」を参照してください。

今すぐ始める

ODAソフトウェアを60日間無料でお試しください。
リスクなし、クレジットカード不要。

無料で試す