Model Derivative API:ZIP ファイルのアップロードと変換

以前、Forge Viewer:2D シート/レイアウト のブログ記事でも触れたことがありますが、外部参照を含む AutoCAD の DWG ファイルや Revit リンクを含む Revit プロジェクト(RVT)ファイル、パーツやサブアセンブリを内包する Inventor などの製造系 CAD ファイルなど、複数ファイルで構成されているデザイン ファイルを Model Derivative API で変換して Forge Viewer で表示することが出来ます。

この時、POST job endpoint 呼び出しで必要なリクエスト ボディには、親ファイルの指定と  ZIP 圧縮されていることを示すパラメータを明示的に記述する必要があります。次の例は、複数の外部参照図面を参照する 8th floor.dwg を親図面が ZIP 圧縮したファイルを変換するための リクエスト ボディ(JSON)です。

        {
input: {
urn: encodedURN,
rootFilename: "8th floor.dwg",
compressedUrn: true
},
output: {
formats: [
{
type: "svf",
views: ["2d", "3d"]
}
]
}
}

なお、ZIP ファイルを手動操作で 作成する場合には、ファイル名エンコードに UTF-8 を使用するようにしてください。日本語版 Windows で Windows エクスプローラーの ZIP 圧縮機能を使用すると、Shift-JIS コードでファイル名がエンコードされてしまい、(デザイン ファイル名に日本語が使われていると)ファイル名が文字化けした状態で解凍されてしまい、ファイル名の解決が出来ずに変換処理が失敗してしまいます。手動操作で ZIP 圧縮する際には、エンコード指定が可能な 7-Zip などのツールの使用をお勧めします。

ZIP ファイルの利用は、複数で構成されたデザイン ファイルだけが対象ではありません。ファイルサイズが大きくなりがちな テキスト形式の DXF ファイルや IFC ファイルなど、単一ファイルのアップロードと変換でも使用することが出来ます。テキスト形式では、データサイズが大きければ大きいほど、改行コードなどが増加して全体のファイルサイズが大きくなってしまう傾向があるため、ZIP 圧縮は Data Management API によるアップロード時間の短縮にも一役買うことが出来ます。

例えば、Revit のサンプル プロジェクトして提供している Technical_school-current_m.rvt(15.5 MB)を Revit 2021 で IFC ファイルに書き出すと、出力された Technical_school-current_m.ifc は 44.1MB になってしまいますが、ZIP 圧縮すると Technical_school-current_m.zip は 8.68 MB までファイル サイズが減少します。

単一ファイルを ZIP ファイルで変換する際にも、親ファイルの指定と  ZIP 圧縮されていることを示すパラメータをリクエスト ボディで記述する必要があります。ご注意ください。

        {
input: {
urn: encodedURN,
rootFilename: "Technical_school-current_m.ifc",
compressedUrn: true
},
output: {
formats: [
{
type: "svf",
views: ["2d", "3d"]
}
]
}
}

ZIP ファイルから変換された SVF ファイルの Forge Viewer 表示には、特に固有の指定は必要ありません。アップロードした ZIP ファイルの URN を指定するのみです。

By Toshiaki Isezaki

Discover more from Autodesk Developer Blog

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

Continue reading