Autodesk Forge API(Autodesk Platform Services)のチュートリアルを触ってみる

こんにちは!AMDlabの柴田です。

今回は基本シリーズの第2弾、Autodesk Forgeの基本について触れていきます。

Autodesk Forge は 2022年9月開催の Autodesk University で Autodesk Platform Services へ改名されましたが、既存の API 群やビジネス モデルに変更はありません。

この記事では、既存のサービスであるAutodesk Forge APIの基本の基本を触っていくので、Autodesk Forgeのgithubにある下記のチュートリアルを使って、Forge Viewerでrevitのサンプルモデルを表示するところまでやっていこうと思います。

https://github.com/Autodesk-Forge/viewer-nodejs-tutorial

全体の流れは下記になります。

Forge APIを利用するためには、アクセストークンを取得する必要があります。

アクセストークンを取得する為には、client keyとclient secretが必要になります。

下記URLからAutodesk Platform Servicesのポータルサイトにアクセスし、取得していきます。

https://aps.autodesk.com

画面の右上に [SIGN IN] ボタンがあるので、サインインします。

※Autodesk ID をお持ちでなければ、事前にアカウントを作成してください。

サインインすると右上のアカウントメニューにApplicationsが出てくるため、クリック。

Applications画面に遷移後、Create Applicationをクリック。

Create Applicationが表示されたら、名前は何でも良いので、アプリケーション名を入力して、Createをクリック。

API Acessセクションで使用するAPIを選択します。一旦ここでは全てにチェックで良いかと思います。

上部にClient IDとClient Secretが表示されています。こちらを使用していきます。

ここまでForgeのサイトでアカウントを登録し、Forge APIが使用できるようになったので、Access Tokenの取得から変換リクエストまで行っていきます。

 

この記事では、POSTMANを利用して、変換リクエストまで行っていきます。

Postmanとは主にAPI開発のために使用されるツール

APIの任意のエンドポイントにHTTPリクエストを送り、レスポンスを受信することができます。

POSTMANを使用すれば、Forge APIに簡易的にリクエスト送り、レスポンスの中身を確認する事ができます。

以下のjsonファイルをすべてダウンロードし、これらをpostmanにimportしていきます。

アクセス トークンの取得.postman_collectionをダウンロード

バケットの作成.postman_collectionをダウンロード

デザイン ファイルのアップロード-(ダウンロード).postman_collectionをダウンロード

変換リクエスト.postman_collectionをダウンロード

アクセストークンの取得

アクセストークンで使用するendpointは下記になります。

https://developer.api.autodesk.com/authentication/v1/authenticate

アクセストークンの取得のjsonをimportし、ForgeのポータルサイトからClient IDとClient Secretをペーストし、「Send」ボタンをクリック。

成功すると下記のようにアクセストークンが返ってきます。

バケットの作成

次にOSS 上に一意な名前で Bucket を作成して、ファイルをアップロードできる準備をします。

Bucket の作成に使用する endpoint は下記になります。

https://developer.api.autodesk.com/oss/v2/buckets

Headerに先ほどのアクセストークンをセット。

バケットの作成のjsonをimportし、リクエストボディに「バケットキー・ポリシーキー」を入力します。

バケットキーは一意である必要があり、文字は3以上128以下の文字数で、小文字の英数jで、「-」と「_」と「.」が使えます。

ポリシーキーは「transient」とします。

すべて設定できたら「Send」をクリックしレスポンスが返ってくることを確認。

デザイン ファイルのアップロード

アップロードに使用する endpoint は下記になります。

https://developer.api.autodesk.com/oss/v2/buckets/:bucketKey/objects/:fileName

メソッドは PUT です。

上記 URI 中の :bucketKey と :fileName 部分は、それぞれアップロード先となる Bucket 名とアップロードするファイル名に置き換えてください。

また今回使用するファイルはautodeskのサイトからダウンロードします。

https://knowledge.autodesk.com/ja/support/revit/learn-explore/caas/CloudHelp/cloudhelp/2023/JPN/Revit-GetStarted/files/GUID-61EF2F22-3A1F-4317-B925-1E85F138BE88-htm.html

 

ダウンロードした「racbasicsampleproject.rvt」がファイル名になるので、こちらを:fileNameに置き換え、:bucketKeyはバケットの作成で返ってきたbucketKeyに置き換えて、racbasicsampleproject.rvtはbinaryとして添付し、「Send」します。

変換リクエスト

バケットにファイルアップロードが完了したらファイルを変換します。

Viewerでファイルを表示するためにファイルの変換を行う必要があり、このエンドポイントを利用するために、URNと呼ばれるドキュメントIDをBASE64でエンコードをする必要があります。

エンコードはこちらを利用させて頂きます。

https://www.en-pc.jp/tech/base64.php

こちらのサイトで先ほどデザインファイルのアップロードで取得したobjectIdをエンコードします。

Bucket 内のデザイン ファイルの変換指示に使用するendpointは下記になります。

https://developer.api.autodesk.com/modelderivative/v2/designdata/job

メソッド POST です。

“input”: { “urn”: <Your Encoded URL>  }

Bodyの中のurnに先ほどエンコードしたオブジェクトIDをペーストし、「Send」をクリック。

レスポンスのresultが「sucess」であれば成功です。

なお、変換処理はすぐに完了するものではないので、下記のendpointで変換処理の進捗を確認することができます。

https://developer.api.autodesk.com/modelderivative/v2/designdata/:urn/manifest

メソッドはGETになります。

progressがcompleteになっていれば変換処理が完了したことになります。

クライアントアクセス

変換処理まで終了したので、いよいよクライアントからForge Viewerを表示させます。

今回はこちらのチュートリアルを利用して表示させます。

https://github.com/Autodesk-Forge/viewer-nodejs-tutorial

適当な所にgit cloneをします

clone後、viewer-nodejs-tutorialディレクトに移動後、パッケージをインストールします。

server フォルダ内の config.js のclient_id,client_secretを取得済みのものに置き換えます。

www/js/index.jsのdocumentIdに先ほど取得したURNに書き換えます。

最後に上記のコマンドを実行し、下記のようにビューアーが表示されれば成功です。

別のファイルを表示させたい場合、再度デザインファイルのアップロード、変換リクエストを行う必要があります。

また、ファイルアップロードは新しいendpoint を使った AWS S3 への直接アップロードが2022年3月にアナウンスされ、そちらの使用が推奨されています。

今後、サービスにForge Viewerを導入する場合は、新しいendpointを利用する必要があると思いますので、こちらもご確認ください。

Data Management OSS (Object Storage Service) の Direct-to-S3 アプローチへの移行について

ARTICLES