4.forge design automation api for revit での自動化§の... · [x] rest api で直接revit...
TRANSCRIPT
小笠原 龍司
Autodesk Developer Network, Forge Partner Development
Forge Design Automation API for Revit での自動化
Forge Design Automation API
▪ Design Automation API は、クラウド上で
CAD エンジンのコア API を利用する環境を提供
します。
▪ Forge プラットフォームを活用して、自動化された
ジョブを、大規模かつ効率的に実行することがで
きます。
▪ 繰り返し行う処理
▪ 頻度の高い処理
▪ 大規模な演算処理能力を必要とする処理
Design Automation API Version 3
▪ Design Automation API で実行可能なコアエンジンに、従来の AutoCAD に加えて、Inventor、
3ds Max、そして Revit が加わります。
Design Automation APIVersion 1&2
Design Automation APIVersion 3
オンデマンドで Revit データをクラウド処理
• Revit がローカル環境になくても、クラウドサービスを通じて Revit アドインにフルアクセス(ライセンス不要)
• Revit API を利用して開発した Revit アドインを実行
• どこからでもデータを読み取り、どこにでもデータを保存
Design Automation
Revit アドイン
クラウド ストレージ
Partner | CustomerApplication
クラウドにデータをアップロード
結果を保存するフォルダを作成
URL からデータをダウンロード
データの URL を Forge に送信
結果の保存先 URL を Forge に送信
保存先 URL に結果をアップロード
幅広いユーザーが利用できる Revit サービス
▪ オーナー、クライアント
▪ 営業担当者
▪ ドキュメント管理者
▪ コスト管理者
▪ 品質管理者
▪ 設備管理者
▪ エネルギー管理者
▪ 施設管理
▪ 保守・メンテナンス
Revit のワークフローを拡張して、特定の業務課題を解決
品質管理者
Revit モデルのエラーや警告を集計・解析し、ビ
ジュアライズして設計品質チェック
営業担当者
現場でクライアントとコミュニケーションをとりながら
パラメータの値を設定してファミリを自動作成
製造担当者
Revit からファミリのデータを CSV でエクスポートし
て、必要な情報を入力後、再度インポート
➢ Design Automation API は、開発者向けプラットフォームです。➢ 個々にソリューションを提供するわけではございません。
ワークフロー:作成
• ファミリ(RFA)を作成
• レイアウトアプリケーションから RVT プロジェクトを作成
• サードパーティのフォーマットから RVT/RFA に変換
• 仕様書から設計図書を自動生成
想定イメージ
ワークフロー:抽出
• カスタムの抽出処理(CSV、外部データベース、未サポートフォーマットなど)
• 抽出の自動実行
• モデルの品質保証/品質管理(QA/QC)チェック
• Revit を所有していないコンサルタントとモデルの情報を共有
想定イメージ
ワークフロー:編集
• モデリングや設計図書の誤りを修正
• Upgrade/Update のバッチ実行
• 古いデータを自動的に最新版に更新
• それ以外の編集処理
• 将来サポート予定
• 定期的に Dynamo スクリプトを実行
• BIM360 Design (C4R)モデル上でタスクを実行
• デザインオプションの作成想定イメージ
作成 抽出 編集
Design Automation API for Revitクラウドサービスで Revit データを活用
• カスタムコンテンツの生成
• モデル作成の自動化
• モデルデータの検索・分析
• レポートの自動生成
• 企業の基準を維持
• 設計図書の自動生成
Revit ファイル アップグレーダー
Design Automation
20182019
おlでrふぃぇs
ファイル/フォルダーを選択
ターゲット バージョン
アップグレード
2018
2019
パートナー | 顧客アプリケーション
2018
2019
ファイル アップグレード
ファミリ(RFA)ジェネレーター
Design Automation
RFA RFA RFA
Select Template… 2D Plan
作成
A-B 寸法:
A-C 寸法:
B-C 寸法:
パートナー | 顧客アプリケーション
テンプレート
ファミリ
ファミリのパラメータテンプレートの指定等
エクセルシート エクスポーター
Design Automation
RVT Excel
RVTファイルを選択…
エキスポート
エキスポートするカテゴリー
窓
扉
壁
天井
床
パートナー | 顧客アプリケーション
RVT
Excel
抽出条件の指定
共有パラメータの一括更新
Design Automation
RVT TXT
RVT ファイルを選択 共有パラメータ定義ファイル
パラメターの適用
共有パラメータデータファイル
パートナー | 顧客アプリケーション
RVT 定義
RVT
データ
適用するカテゴリの指定
適用するカテゴリ
窓
扉
壁
独自のクラウドサービスを作ることができます
社内データベース
Web サービス API
独自技術
Authentication Data Management
Design Automation ViewerWebhooks
Model Derivative
BIM 360 Reality Capture
1. Revit アドインを作成
2. Revit アドインを Design Automation にアップ
ロードして登録する Forge アプリケーションを作成
3. Revit モデルとその他リソースをクラウドストレージに
アップロードして、Forge アプリケーションから
Design Automation にジョブを依頼
3つのステップ
1. Revit アドインを作成
▪ Revit API
▪ C#、VB.NET、マネージ C++、その他
▪ .NET Framework
▪ Revit 2019 -> .NET Framework 4.7
▪ Revit 2018 -> .NET Framework 4.6
▪ Microsoft Visual Studio
▪ 各バージョンに一致するアセンブリ出力が可能なもの
▪ 参照ライブラリ
▪ RevitAPI.dll
▪ Revit 2018: DesignAutomationBridge.dll
▪ Revit 2019: DesignAutomationBridge.dll
Revit アドイン
ローカルの Revit アドイン開発
▪ Forge Platform の “Web API”。 HTTP REST API、いわゆる RESTful API
▪ “Authentication API”, “Data Management API”, “Design Automation API” など
▪ 開発言語
▪ JavaScript, PHP, C#, Python, JAVA など
▪ Web サーバー
▪ NodeJS, ASP.NET など、それぞれの開発言語に応じて選定
▪ 開発エディタ
▪ 原則自由
▪ Web ブラウザ
▪ WebGL 対応ブラウザ
▪ Google Chrome を推奨
2. Revit アドインをアップロードして登録する Forge アプリケーションを作成
Forge アプリ Design AutomationRevit アドインアップロード&登録
3. Forge アプリケーションから Design Automation にジョブを依頼
▪ Forge アプリは、Forge Platform の RESTful API を利用して、クライアントと Design Automation を
仲介。
ユーザー
クラウド ストレージ
Forge アプリ
Design Automation
Revit モデルをアップロード
ジョブを依頼
登録した Revit アドインの実行を依頼
Revit モデルをダウンロード処理結果をアップロード
RevitAPIUI.dll
Revit アドイン開発時の制約事項
▪ [x] Revit UI 名前空間へのアクセス、アセンブリ参照はできません。
▪ [x] REST API で直接 Revit のデータにアクセスできません。
▪ [x] 複雑なセッション管理は想定されていません。(バッチ処理を想定)
▪ [x] アドインからネットワークにアクセスすることはできません。
▪ [x] ユーザーとのインタラクションが発生する処理はサポートされておりません。
Revit アドインのリソースを再利用
▪ 既存の Revit アドインの開発コード資産を再利用できます。
➢ ただし、RevitAPIUI.dll は参照に含めることはできません。
➢ Autodesk.Revit.UI 名前空間のクラスやメソッド、プロパティにアクセスしない
ようにコードを修正してください。
➢ 最低限必要な名前空間は以下の通りです。
using Autodesk.Revit.ApplicationServices;using Autodesk.Revit.DB;using DesignAutomationFramework;
Design Automation 実行時のデータのセキュリティ
▪ Design Automation は、クライアント/Forge アプリが指定した任意のクラウドストレージのデータにアクセ
スして、Forge の一時的なデータ領域(ワーキングディレクトリ)にダウンロードします。
▪ ユーザー/Forge アプリは、クラウドストレージ上のデータの URL を発行する際に、署名付き URL を作成す
ることで、URL の有効期間を指定したり、アクセストークンによる制御を行うことができます。
➢ 署名付き URL の作成方法は、使用するクラウドストレージによって異なります。
▪ Forge の一時的なデータ領域のデータは、Design Automation の実行後に破棄されます。
StringToSign = HTTP_Verb + "¥n" + Content_MD5 + "¥n" +
Content_Type + "¥n" + Expiration + "¥n" + Canonicalized_Extension_Headers + Canonicalized_Resource
Google Cloud Storage の場合
BIM 360 Docs の利用
▪ クラウドストレージとして BIM 360 Docs を利用。
Forge アプリ
Design Automation
• フォルダ・ファイルのデータにアクセス
• Revit モデルのアップロード・ダウンロード
• Cloud Workshared Revit モデルをパブリッシュ
• Revit アドインをアップロード
• ジョブを依頼
• 処理結果を取得
BIM 360 Docs
ファイルのアップロード・
ダウンロード
Authentication API
Forge API との連携例
Authentication
Data Management
Design AutomationViewer
Webhooks
Design Automation
BIM 360 Docs
Forge アプリModel Derivative
2. Revit モデルをアップロード
3. Revit アドインのジョブを依頼
4. 処理結果をアップロード
5. バージョン追加の通知
6. マニフェストの確認
7. Revit モデルを表示
1. 認証・認可
開発の流れ 1: アドインの変換とバンドルパッケージの作成
Revit アドインの変換
① .NET C# or VB で実装したアドインプロジェクトを用意
② DesignAutomationBridge.dll を参照に追加※ RevitAPIUI.dll は参照を削除
③ IExternalApplication または、IExternalCommand をIExternalDBApplication に変更
④ エラーハンドリングを実装
⑤ ローカルの Revit で動作確認
.bundle フォルダ構成のパッケージをZIP ファイルに圧縮
ZIP
DeleteWallsApp.zip|-- DeleteWalls.bundle| |-- PackageContents.xml| |-- Contents| | |-- DeleteWalls.dll| | |-- DeleteWalls.addin
バンドルパッケージの作成
用語の解説
Id : CustomApp
Engine : 2019
Description: Test custom app
Package: Storage URL
Id: UpdateParamActivity
Input Parameter : RVT, TXT
Output Parameter: RVT
AppBundle: CustomApp
Id: 返却される文字列
Activity : UpdateParamActivity
Input Parameter : File URL
Output Parameter: Storage URL
AppBundle Activity WorkItem
Revit の .NET API で作成したアセンブリや関連ファイルを ZIP 圧縮してアップロードし、AppBundle として登録する。
カスタム処理の雛型を定義する。.NET アセンブリ内でどんなデータを入力して、どんなデータを出力するか定義する。
REST API でリクエストするジョブ。対象のモデルやテキストデータ、出力先のURL と、実行する Activity を指定する。
Revit アドインのバイナリパッケージ 実行されるアクションの定義 指定のアクションを呼び出すジョブ
開発の流れ 2: AppBundle と Activity の登録
AppBundle を登録
1. 新しい AppBundle を作成
2. バンドルパッケージをアップロード
3. エイリアスとバージョンを設定
Design Automation
ZIP
Activity を登録
1. 新しい Activity を作成
2. エイリアスとバージョンを設定
3. 必要があればロケールを設定
Revit エンジンのバージョンAppBundle の名前
.NET アセンブリ内で参照するモデルやファイル(入出力)や、パラメータなどの雛型を定義
用語の解説
▪ AppBundle と Activity は、それぞれバージョンを追加していくことができます。
▪ 特定のバージョンに任意のラベルで名前をつけてエイリアスを作成できます。
AppBundle
Version Alias
1
2 Production
3
4 Test
5 Development
Activity
Version Alias
1
2
3
4
5 Production
6
7 Test
8 Development
例えば、Activity のテストを行う際に、Test エイリアスを作成し
てテストを実行する。ただし、AppBundle は、
稼働中の Production のエイリアスを呼びだす、といった開発・
テスト用の使い方ができます。
開発の流れ 3: WorkItem をポストする
3D モデルや図面、その他のデータファイル
WorkItem をポスト
1. 実行する Activity を指定
2. モデル・ファイルの URL を設定
3. パラメータを設定アップロード ファイルを取得
指定された Activity を実行AppBundle に処理を依頼
ZIP
パートナー | 顧客アプリケーション
開発の流れ 4: WorkItem の進捗チェック
3D モデルや図面、その他のデータファイル
WorkItem の進捗確認
1. WorkItem Id を指定
2. 戻り値のステータスで処理の実行結果を確認
3. クライアントに通知ダウンロード
ZIP
パートナー | 顧客アプリケーション
ファイルを上書き・新規にアップロード
AppBundle の実行結果
Forge DevCon 2018 セッション
▪ Manage Revit Digital Content using Forge Design Automation API for Revit.▪ Marc Durand, Digital Disruption Director, WS Atkins & Partners Overseas
▪ Mustafa Salaheldin, Data Science Manager, WS Atkins & Partners Overseas
https://www.youtube.com/watch?v=WpCm4o2Ynj
o&list=PLyobA0wOWp-qhdSSbIroQaf8ZFSXEVF2K
ロード可能なファミリをプロジェクト上に配置してレイアウト調整
▪ 企業で利用しているファミリを Revit プロジェクトに配置してダウンロードするサンプル。
▪ Forge Viewer で新規プロジェクトのビューを開いて、ドラッグ&ドロップでファミリを配置できます。
▪ ファミリの位置や方向を操作して、レイアウトを作成します。
システムファミリの新規ファミリタイプを作成
▪ 新規にシステムファミリのタイプを作成して、Revit プロジェクトに配置してダウンロードするサンプル。
▪ 壁、床、天井、屋根をサポート。
▪ デモでは壁の複層構造の機能、マテリアル、厚さ、順序などをそれぞれ指定して壁タイプを作成。
Revit モデルの警告・エラーを取得してヘルスダッシュボードに表示
▪ Revit モデルで発生している警告・エラーをチェックして、その集計結果を様々なタイプのグラフで表示。
▪ 機械学習プログラムが、その問題の原因を解析し、解決方法のサジェスチョンを一覧表示。
Revit モデルのデータを抽出してインサイトダッシュボートに表示
▪ マスタープランのプロジェクトで、GIS データの解析結果をビジュアライズして意思決定に活用。
▪ Design Automation API で Revit モデルからデータを抽出して、インサイトダッシュボードを構築。
デリバリ後の Revit モデルのメンテナンス
▪ プロジェクトのデリバリ後、プロジェクトの整合性や堅牢性を維持するために、企業の基準を満たしている
かチェックするアプリケーション。
▪ 評価基準のチェックリストに応じて、未使用のビューやシート、未配置の部屋やグループを削除して保存。
Revit アドインのエラーハンドリング
▪ Revit アドインで発生するエラーは、トランザクションのコミット時、あるいはロールバック時に呼び出されます。
▪ DesignAutomationBridge は、デフォルトのエラーハンドラを搭載しており、すべての警告を抑止し、エラーの場合は、それを
解決しようと試みます。解決したらコミットします。
▪ デフォルトの解決方法が「要素の削除」となる場合は、エラーハンドラは要素を削除せずに、ロールバックします。
▪ 開発者は、カスタムのエラーハンドラを実装して、デフォルトのエラーハンドラを上書きすることができます。
サポートされている入力の引数: JSON データの埋め込み
"parameters": {
"rvtFile": {
"zip": false,
"ondemand": false,
"verb": "get",
"description": "Input Revit model",
"required": true,
"localName": "$(rvtFile)"
},
"countItParams": {
"zip": false,
"ondemand": false,
"verb": "get",
"description": "CountIt parameters",
"required": false,
"localName": "CountItParams.json"
},
"result": {
"arguments": {
"rvtFile": {
"url": "https://myWebsite/CountIt.rvt"
},
"countItParams": {
“url”: “data:application/json, {
'walls': false,
'floors': true,
'doors': true,
'windows': true}"
},
"result": {
"verb": "put",
"url": "https://myWebsite/signed/url/to/result.txt"
}
}
Activity
WorkItem
JSONデータをリクエストのパラメータに埋め込むと、
Revit アドインから JSON ファイルとして取得可能。
サポートされている入力の引数: eTransmit ファイル
▪ eTransmit for Revit で出力した ZIP ファイルをサポート。
"arguments": {
"rvtFile": {
"url": "https://s3-us-west-2.amazonaws.com/revitio-dev/test-data/TopHost.zip"
},
"countItParams": {
"url": "data:application/json,{'walls': true, 'floors': true, 'doors': true, 'windows': true}"
},
"result": {
"verb": "put",
"url": "https://myWebsite/signed/url/to/result"
}
}
サポートされている入力の引数: Revit リンクモデル
▪ Revit ホストモデルと Revit リンクモデル、サブフォルダ配下の Revit リンクモデル"rvtFile": {
"url": "https://s3-us-west-2.amazonaws.com/revitio-dev/test-data/TopHost.rvt",
"references": [
{
"url": "https://s3-us-west-2.amazonaws.com/revitio-dev/test-data/LinkA.rvt",
"references": [
{
"url": "https://s3-us-west-2.amazonaws.com/revitio-dev/test-data/LinkA1.rvt"
},
{
"url": "https://s3-us-west-2.amazonaws.com/revitio-dev/test-data/LinkA2.rvt"
}
]
},
{
"url": "https://s3-us-west-2.amazonaws.com/revitio-dev/test-data/LinkB.rvt"
}
]
},
TopHost.rvt
|-- LinkA.rvt
| |-- LinkA1.rvt
| |-- LinkA2.rvt
|
|-- LinkB.rvt ※ サブフォルダのリンクモデルもサポート
サポートされている入力の引数: ZIP ファイル
▪ アップロード速度を向上させるために、Revit モデルを ZIP 圧縮して送信することができます。
▪ “pathInZip” オプションで、メインの Revit モデルのパスを指定します。
"arguments": {
"rvtFile": {
"url": "https://path/to/zip/file.zip",
"pathInZip": "RevitFile.rvt"
},
}
ログ出力
▪ WorkItem の進捗リクエストのレスポンスには、
report.txt の URL が含まれます。
▪ Revit アドインのプログラム内で、
Console.WriteLine() メソッドを呼び出せば、
任意のタイミングで、report.txt にカスタムのロ
グを出力することができます。
Starting work item 8829b13e8a704450a8e5fee5b085bcd8
Start download phase.
Start preparing AppPackage SharedParameter_ApplyParameter.
Start downloading file
// 省略
End download phase.
// 省略
====== Revit is running: revitcoreconsole ======
Current Exe path:
T:¥Aces¥AcesRoot¥19.0¥coreEngine¥Exe¥revitcoreconsole.exe
// 省略
Initializing RevitCoreEngine...
Selected Revit¥RCE install Path: (from app.config) C:¥Revit2019
Resolving location of Revit/RevitCoreEngine installation...
Running user application....
Found an addIn for registration: SharedParameter_ApplyParameter.addin
Initializing RCE....
Initializing RevitCoreEngine (and possibly running stub installer)...
Language not specified, using English as default
// 省略
Finished running. Process will return: Success
====== Revit finished running: revitcoreconsole ======
Process exit code: 0
End Revit Core Engine standard output dump.
End script phase.
Start upload phase.
// 省略
End upload phase.
Job finished with result Succeeded
Revit ローカライズ版のエンジンを指定可能
▪ 起動する Revit のエンジンを、英語以外の言語も指定することができます。
▪ /l JPN を指定。
▪ 日本語版で起動すれば、すべての Revit の出力も日本語版で実行されます。
▪ 日本語の名称を含んだビルトインの要素やタイプをサポートする場合に利用します。
その他の制約事項
▪ [x] プリント出力・PDF 出力
▪ [x] IFC のインポート・エクスポート
▪ [x] Navisworks ファイルのエクスポート
▪ [x] Desktop Connector 未サポート
▪ RFA ファイルは、 Model Derivatives API で
未サポートのため、Viewer でも表示できません。
作成 抽出 編集
Design Automation API for Revitクラウドサービスで Revit データを活用
• カスタムコンテンツの生成
• モデル作成の自動化
• モデルデータの検索・分析
• レポートの自動生成
• 企業の基準を維持
• 設計図書の自動生成
Forge DevCon 2018 セッション動画とマテリアル
▪ Revit Data on Forge – How Can the Design Automation for Revit API Help Me?▪ https://www.autodesk.com/autodesk-university/class/Revit-Data-Forge-How-Can-Design-Automation-Revit-API-Help-Me-
2018
▪ Sasha Crotty, Revit Product Manager, Autodesk
▪ Manage Revit Digital Content using Forge Design Automation API for Revit.▪ https://www.autodesk.com/autodesk-university/class/Manage-Revit-Digital-Content-using-Forge-Design-Automation-API-
Revit-2018
▪ Marc Durand, Digital Disruption Director, WS Atkins & Partners
▪ Mustafa Salaheldin, Data Science Manager, WS Atkins & Partners
▪ Design Automation: Revit and Inventor – Better Together
▪ https://www.autodesk.com/autodesk-university/class/Design-Automation-Revit-and-Inventor-Better-Together-2018
▪ Cyrille Fauvel, Forge Developer Advocate, Autodesk
▪ Adam Nagy, Forge Developer Advocate, Autodesk
ロードマップ
ドキュメント修正
フィードバック収集
作成と抽出のワークフローをサポート
招待者向けベータ版 パブリックベータ版 パブリックリリース版 リリース後
すべての Forge パートナーにベータ版を公開
フィードバック収集
スケーラビリティの検証
TBD
パブリック版の公開
プロダクションレベルのサポート
Revit Cloud Worksharingの サポート
Dynamo スクリプトサポート
SOC2 認証の取得
Autodesk and the Autodesk logo are registered trademarks or trademarks of Autodesk, Inc., and/or its subsidiaries and/or affiliates in the USA and/or other countries. All other brand names, product names, or trademarks belong to their respective holders.
Autodesk reserves the right to alter product and services offerings, and specifications and pricing at any time without notice, and is not responsible for typographical or graphical errors that may appear in this document.
© 2017 Autodesk. All rights reserved.