LoginSignup
4
4

More than 5 years have passed since last update.

Autodesk Forgeことはじめ

Last updated at Posted at 2018-06-03

はじめに

AutodeskのForgeはいってみればBIMのリポジトリとビューワ、APIが一体化したサービスである。オープンソースのBIMサーバもあるが、変換機能などAPIの拡充具合を考慮するとこのサービスを使うのが一番良いように思う。RevitやIFC、OBJなど多様なファイルへのインポート、エクスポートも可能だ。現在無料だし。

認証について

Autodeskアカウントを作って、Forgeのサービスにログインし、まずはApplicationを作る。ここで作ったClient IDとClient Secretがポイントで、OAuthの認証に利用される。URLは何でもよいのでとりあえず入れておく必要がある。
まずは面倒だけれど、サンプルに沿ってcurlで認証をしてみよう。認証のAPIの仕様は以下となっている。
https://developer.autodesk.com/en/docs/oauth/v2/reference/http/authenticate-POST/

アクセストークンの取得

まずは取得したID、Secretを使ってアクセストークンを取得しないといけない。-d以下のパラメータにそれらを記述する。一番最後のscopeは、アクセスしているアプリ、ユーザの権限を示すもので、空欄で区切っていくつか入力できる。今回はすべてのデータにへアクセス、アップロードなどが可能なdata:readとdata:writeを二つ指定している。

curl -v 'https://developer.api.autodesk.com/authentication/v1/authenticate' 
  -X 'POST'
  -H 'Content-Type: application/x-www-form-urlencoded'
  -d 'client_id=xxxxxxxxxxxxxxxxx&client_secret=xxxxxxxxxxxxx&grant_type=client_credentials&scope=bucket:create data:read data:write'

これがうまくいくと、以下のようにアクセストークンが得られる。これをメモしておく。

{"access_token":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","token_type":"Bearer","expires_in":3599}`

ファイルのアップロード

取得したアクセストークンを使って、IFCなどのBIMデータをアップロードする。ちなみにアップロードしたファイルにはリテンションポリシーが設定できる。transientとすると24時間でデータが消えるようになる。APIの仕様は以下。
https://developer.autodesk.com/en/docs/data/v2/reference/http/buckets-POST/

Bucketの作成

アップロードに先立って、ファイルの入れ物(Bucket)を作成する。先ほどのアクセストークンを使って、リクエストする。bucketKeyは何でもよいのだが、他と被っていると怒られる。GUIDやクライアントIDなどを生成して、後ろに適当につけるとよい。

curl -v 'https://developer.api.autodesk.com/oss/v2/buckets' 
  -X 'POST' -H 'Content-Type: application/json'
  -H 'Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' 
  -d '{"bucketKey":"mybucket_xxxxxx","policyKey":"transient"}'

成功すると以下の感じのレスポンスがある。

{"bucketKey":"mybucket_xxxxxx","bucketOwner":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","createdDate":1528027336176,"permissions":[{"authId":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","access":"full"}],"policyKey":"transient"}

ファイルのアップロード

Bucketができて、ようやくBIMデータのアップロードができる。Contents-Lengthは必須だそうだが、普通のクライアントは自動的に追加すると思われる。ここではHelloWall.ifcというファイルをアップした。

curl -v 'https://developer.api.autodesk.com/oss/v2/buckets/mybucket_xxxxxx/objects/HelloWall.ifc'
  -X 'PUT'
  -H 'Authorization: Bearer xxxxxxxxxxxxxxxxxxxxx'
  -H 'Content-Type: application/octet-stream'
  -H 'Content-Length: 100000000 ファイルのサイズ(byte)'
  -T 'HelloWall.ifc'

これもうまくいくと以下のようなレスポンスがある。

{
  "bucketKey" : "mybucket_xxxxxx",
  "objectId" : "urn:adsk.objects:os.object:mybucket_xxxxxx/HelloWall.ifc",
  "objectKey" : "HelloWall.ifc",
  "sha1" : "6b6acf973e033af4aea85158b106adedef30cd1f",
  "size" : 6033,
  "contentType" : "application/octet-stream",
  "location" : "https://developer.api.autodesk.com/oss/v2/buckets/mybucket_xxxxxx/objects/HelloWall.ifc"
* Connection #0 to host developer.api.autodesk.com left intact
}]

ここまでの作業は一応手でやってみたが、サンプルプログラムでは自動的にその辺をやっている。NodeJSのサンプルビューワを起動すると、先ほどのファイルがアップされているのがわかる。
無題.png

まずはここまで。

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4