🦔

Forge Design Automation for Civil 3D のサンプルを動かすために

2021/02/13に公開

はじめに

Forge Design Automation API が Civil 3D もサポートするようになりました。
既に GitHub でサンプルが提供されています。
https://github.com/Autodesk-Forge/forge-civil3d-properties

作業手順が README にあるので、自分のローカルでも動かしてみよう! と思ったのですが…。
Forge と ASP.NET に対する基礎知識がなく、実行にかなり手間取ってしまいました。
README の行間を補足する情報を、メモ書き程度に残しておきます。

Forge Design Automation の基本的な流れに関して知りたい方は、
下記リンクが参考になりました。
https://adndevblog.typepad.com/technology_perspective/2020/07/forge-online-design-automation-api-for-autocad.html

7-zip をインストール

Forge Design Automation API では、クラウドで実行するアドインのプログラムと
マニフェストを zip にまとめてアップロードします。
このサンプルでは、ビルド後イベントとして、既存の zip の削除と
7-zip を使った zip の作成を同時に行います。
入っていないと、ビルドをすると肝心の zip が消えてしまい、エラーを吐きます。
これでウン時間も損してしまった。。
下記に実行ファイルが来るように、7-zip をインストールしましょう。
C:\Program Files\7-Zip\7z.exe

Clone するコマンド

X) git clone https://git.autodesk.com/goncala/bim360civil
O) git clone https://github.com/Autodesk-Forge/forge-civil3d-properties

FORGE_WEBHOOK_URL

ngrok を立ち上げ直すたびに URL が変わるので、そのたびに Visual Studio と VS Code の環境変数を書き直す必要があります。

FORGE_CALLBACK_URL

これを Visual Studio 側にも書いてあげましょう。

"FORGE_CALLBACK_URL": "http://localhost:3000/api/forge/callback/oauth"

README を見ると、VS Code 側だけ書けばいいように見えてしまいますが…。
これでウン時間も損してしまった。。

Newtonsoft.Json の参照を「ローカルにコピー」にする

例えば NuGet で落としたパッケージなど、ローカル環境に入っていない dll を
参照しながらアドインを実行する場合があります。
その場合は、ローカル環境に入っていない dll をローカルにコピーする必要があります。
これはクラウド上で走らせるアドインでも同じです。

Activity のコマンドライン引数を "" で囲む

2020/10 から仕様が変更になりました。
https://forge.autodesk.com/blog/design-automation-command-line

選択を変更した際の addEventListener を足す

Viewer 上で選択した要素のプロパティが上手く足されなかったので、
無理やり addEventListener を足しました。。

で、コードをどう変えればいいの?

差分はここです。
https://github.com/Tatsuya-Kusakabe/forge-civil3d-properties/commit/30fe1fdbce3f80ca4b6d747cc6aa8a102373932b

localhost:3000 はどうすれば立ち上がるか

README には "Start the app." としか書いてなかったので、読み解くのに苦労しました。

まず、Windows 側で IIS (Internet Information Services) を有効にする必要があります。
下記 URL が参考になります。
https://itsakura.com/aspnet-iis-hello

次に、Visual Studio をこの状態にしてから、デバッグを開始しましょう。

下記 URL が参考になります。
https://docs.microsoft.com/ja-jp/aspnet/core/host-and-deploy/iis/development-time-iis-support?view=aspnetcore-5.0

Discussion