Model Derivative API:RVT >> DWG 変換

デザイン ファイルを Autodesk Platform Services(旧 Forge)の Viewer にする際、Model Derivative API の POST job エンドポイントを使って、シード ファイルとも呼ばれるでデザイン ファイルを SVF または SVF2 に変換します。シード ファイルの種類にもよりますが、Model Derivative API  には SVF/SVF2 以外のファイルにも変換可能なファイル形式が存在します。

POST job エンドポイントで変換可能なファイル形式は、シード ファイルの種類毎に Supported Translations で確認することが出来ます。この中には、Revit プロジェクト ファイ(RVT ファイル)ルの DWG への変換も含まれます。


RVT >> DWG 変換で設定と準備

POST job エンドポイントで RVT-DWG 変換する際には、RVT ファイルに埋め込まれた DWG 書き出し設定が利用されます。この設定は「どのシートを変換対象とするか」と「どのように変換するか」の 2 つに分けて考えることが出来ます。このた、変換前には Revit 側で設定を適切に調整して 、RVT ファイルに保存しておく必要があります。

どのシートを変換対象とするか:

この内容は、パブリッシュ設定 ダイアログと同様の内容で、パブリッシュ セットを作成して、セット毎に対象となるシートを指定します。「セットを選択」で変換で使用するパブリッシュ セットにチェックします。

  • 「平面系」 パブリッシュ セットで「シート:0901 – 配置図」を指定した例

どのように変換するか:

「DWG/DXF 書き出しの一般オプション」中には、変換後のる DWG の構造を指定する「シートとリンクのビューを外部参照として書き出し」オプションと、DWG ファイル形式を指定する「ファイル形式に書き出し」オプションがあります。

 [DWG 書き出し設定] ダイアログの […] ボタンから [DWG/DXF 書き出し設定を修正] ダイアログを呼び出し、新しい書き出し設定を作成します。

① の[新しい書き出し設定] ボタンをクリックして任意の設定名を入力したら(ここでは「設定 1」)、② でアクティブな書き出し設定になっていることを確認、③ の[一般]タブで ④ の「シートとリンクのビューを外部参照として書き出し」オプションと「ファイル形式に書き出し」オプションを指定、[OK] ボタンをクリックします。

[DWG 書き出し設定] ダイアログに戻ったら、まず、① でアクティブな設定が適切な書き出し設定になっていることを確認して(ここでは「設定 1」)、② の [セットを保存して閉じる] ボタンで作成した設定情報を RVT ファイルに埋め込みます。

この状態の RVT ファイルを保存して OSS Bucket にアップロード、Model Derivative API の POST job エンドポイントで DWG に変換することになります。

POST job エンドポイント実行時には、advanced オプションを使って RVT ファイルに埋め込まれた書き出し設定名を指定します。(POST Start Translation Job の「Attributes that Apply to DWG Outputs」項参照)

「設定 1」書き出し設定を指定した JSON ペイロード例

{
    "input": {
        "urn": "<<RVTのURN>>"
    },
    "output": {
        "formats": [
            {
                "type": "dwg",
                "views": [
                    "2d"
                ],
                "advanced": {
                    "exportSettingName": "設定 1"
                }
            }
        ]
    }
}
  • RVT ファイルに指定した書き出し設定名が見つからないと、RVT ファイルでアクティブになっている書き出し設定が使用されます。アクティブな書き出し設定とは、[DWG 書き出し設定] ダイアログの「書き出し設定を選択」に表示されている書き出し設定を指します。

「シートとリンクのビューを外部参照として書き出し」オプション有効時の変換動作(既定の変換動作):

「シートとリンクのビューを外部参照として書き出し」オプションにチェックを入れた書き出し設定の場合、Model Derivative API は、Revit シート上のビュー毎に DWG を作成し、AutoCAD の外部参照として親図面から参照するよう変換します。変換が完了すると、GET {urn}/manifest エンドポイントから次のようなマニフェストを取得出来るはずです。

{
    "urn": "<<RVTのURN>>",
    "derivatives": [
        {
            "children": [
                {
                    "urn": "<<変換後の子DWGのURN>>(...0901 - 配置図-平面図 - 配置図.dwg)",
                    "role": "dwg",
                    "mime": "application/vnd.autodesk.autocad.dwg",
                    "guid": "97d0b9b3-6b92-7d90-94ed-07c570454a93",
                    "type": "resource",
                    "status": "success"
                },
                {
                    "urn": "<<変換後の親DWGのURN>>(...0901 - 配置図.dwg)",
                    "role": "dwg",
                    "mime": "application/vnd.autodesk.autocad.dwg",
                    "guid": "312d29b3-61b9-673d-995b-0c4ccc8e44ca",
                    "type": "resource",
                    "status": "success"
                }
            ],
            "progress": "complete",
            "outputType": "dwg",
            "status": "success"
        }
    ],
    "hasThumbnail": "true",
    "messages": [
        {
            "type": "warning",
            "code": "Revit-MissingLink",
            "message": [
                "<message>Missing link files: <ul>{0}</ul></message>",
                "サンプル構造.rvt"
            ]
        }
    ],
    "progress": "complete",
    "type": "manifest",
    "region": "US",
    "version": "1.0",
    "status": "success"
}

ここでは、「平面系」セットで指定されている 0901 – 配置図.dwg と、0901 – 配置図.dwg 内に配置されてる「配置図-平面図」ビューが 0901 – 配置図-平面図 – 配置図.dwg として作成されて、0901 – 配置図.dwg が 0901 – 配置図-平面図 – 配置図.dwg を外部参照するかたちで変換が実施されます。

  • マニフェストには、変換された DWG がリストされるので、記載されるパス(Model Derivative API の Step by Step Tutorials にある Translate a Source File の Task 4 – Download OBJ File では <URL_SAFE_URN_OF_SOURCE_FILE> と <URN_OF_OBJ_FILE> と表記)を使ってダウンロードをすることになります。<URL_SAFE_URN_OF_SOURCE_FILE> は <<RVT のURN>> 、<URN_OF_OBJ_FILE> は URL エンコードされた変換済の URN です。
  • 変換後の DWG の URL は URL エンコードしていない状態で、urn:adsk.viewing:fs.file:<<RVT のURN>>/output/Resource/シート/0901 – 配置図 42370965/dwg/0901 – 配置図.dwg ですが、実際には urn%3Aadsk.viewing%3Afs.file%3A<<RVT のURN>>%2Foutput%2FResource%2F%E3%82%B7%E3%83%BC%E3%83%88%2F0901%20-%20%E9%85%8D%E7%BD%AE%E5%9B%B3%2042370965%2Fdwg%2F0901%20-%20%E9%85%8D%E7%BD%AE%E5%9B%B3.dwg のようになります。URN の Bucket Key にあたる部分が <<RVTのURN>> の値になっていることに注意してください。

「シートとリンクのビューを外部参照として書き出し」オプション無効時の変換動作:

「シートとリンクのビューを外部参照として書き出し」オプションにチェックを外した書き出し設定の場合、Model Derivative API は、Revit シート上のビューの内容をすべて DWG にバインドします。ビュー毎に外部参照 DWG を作成しなくなるので、、GET {urn}/manifest エンドポイントから得られるマニフェストはシンプルなものになります。先の例と同じパブリッシュ セットを変換した場合、次のようなマニフェストになるはずです。

{
    "urn": "<<RVTのURN>>": [
        {
            "children": [
                {
                    "urn": "<<変換後のDWGのURN>>(...0901 - 配置図.dwg)",
                    "role": "dwg",
                    "mime": "application/vnd.autodesk.autocad.dwg",
                    "guid": "312d29b3-61b9-673d-995b-0c4ccc8e44ca",
                    "type": "resource",
                    "status": "success"
                }
            ],
            "progress": "complete",
            "outputType": "dwg",
            "status": "success"
        }
    ],
    "hasThumbnail": "true",
    "messages": [
        {
            "type": "warning",
            "code": "Revit-MissingLink",
            "<message>Missing link files: <ul>{0}</ul></message>",
            "サンプル構造.rvt"
        ]
    }
],
"progress": "complete",
"type": "manifest",
"region": "US",
"version": "1.0",
"status": "success"
}

ダウンロード

変換された DWG ファイルのダウンロード方法は、Model Derivative API の Step by Step Tutorials にある Translate a Source File の Task 4 – Download OBJ File に準拠します。この箇所の POSTMAN コレクションの説明は、forge-tutorial-postman/task-4.md at master · Autodesk-Forge/forge-tutorial-postman · GitHub から参照することが出来ます。

変換された DWG の実際のダウンロードは少し煩雑です。ダウンロードには、GET {urn}/manifest/{derivativeurn}/signedcookies エンドポイントと使って、署名付き URL と同 URL 実行に必要な署名付きクッキーを取得する必要があります。

署名付き URL は GET {urn}/manifest/{derivativeurn}/signedcookies エンドポイントのレスポンス Body に、署名付きクッキーはレスポンス Header に返されます。

署名付き URL の行使時には、Header に Cookie のキー名を作成し、値には GET {urn}/manifest/{derivativeurn}/signedcookies エンドポイントのレスポンス Header に返された 3 つの Set-Cookie の値を順位にセミコロン ; で区切ったものを指定します。(CloudFront-Policy= … HTTPOnly;CloudFront-Key-Pair-Id=… HTTPOnly;CloudFront-Signature=… HTTPOnly)

「シートとリンクのビューを外部参照として書き出し」オプションが有効な変換の場合、ビュー毎に作成されたすべての DWG をダウンロードしたら、同じパス上に配置して親図面となる DWG を AutoCAD で開くと、その内容を確認することが出来ます。(ここまでの例では親図面は 0901 – 配置図.dwg


制限

  • Model Derivative API の RVT-DWG 変換では、リンク情報に制限があります。もし、2D シート内のラスター画像がアタッチされていると、既定では、ビューと同じく外部参照 DWG を作成して親図面から参照するように変換します。具体的には、アタッチされたラスター画像毎に DWG が作成されて、親図面は作成された DWG を参照することになります。

    変換対象に RVT ファイルが「シートとリンクのビューを外部参照として書き出し」オプションが無効な RVT ファイルの場合は、ラスター画像毎の外部参照 DWG は作成されません。


    ただし、いずれの場合も、マニフェストには実際のラスター画像ファイルがリストされないため、画像ファイルをダウンロード出来ません。このため、AutoCAD でダウンロードした親図面を開くと外部参照エラーになってしまいます。


  • AutoCADでは図面に貼り付けたラスターイメージを DWG 内に埋め込むバインドの機能がありません。
    参考:AutoCADでは外部参照でアタッチしたイメージデータをバインド出来ないのか | AutoCAD | Autodesk Knowledge Network
  • 表題欄などに埋め込んだロゴなどのラスター画像には「シートとリンクのビューを外部参照として書き出し」オプション内容にかかわらず外部参照 DWG は作成されませんが、マニフェストには同ラスター画像はリストされません。
  • Model Derivative API の RVT-DWG 変換は、2D シートのみサポートされます。3D は変換出来ません。

By Toshiaki Isezaki

Discover more from Autodesk Developer Blog

Subscribe now to keep reading and get access to the full archive.

Continue reading