4.forge design automation api for revit での自動化§の... · [x] rest api で直接revit...

57
小笠原 龍司 Autodesk Developer Network, Forge Partner Development Forge Design Automation API for Revit での自動化

Upload: others

Post on 13-Sep-2019

2 views

Category:

Documents


0 download

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 に結果をアップロード

設計者のためのタスク自動化サービス

建築設計

MEP(機械、電気、配管)

構造エンジニアリング

幅広いユーザーが利用できる Revit サービス

▪ オーナー、クライアント

▪ 営業担当者

▪ ドキュメント管理者

▪ コスト管理者

▪ 品質管理者

▪ 設備管理者

▪ エネルギー管理者

▪ 施設管理

▪ 保守・メンテナンス

Revit のワークフローを拡張して、特定の業務課題を解決

品質管理者

Revit モデルのエラーや警告を集計・解析し、ビ

ジュアライズして設計品質チェック

営業担当者

現場でクライアントとコミュニケーションをとりながら

パラメータの値を設定してファミリを自動作成

製造担当者

Revit からファミリのデータを CSV でエクスポートし

て、必要な情報を入力後、再度インポート

➢ Design Automation API は、開発者向けプラットフォームです。➢ 個々にソリューションを提供するわけではございません。

3つのワークフロー

Design Automation

パートナー| 顧客アプリケーション

作成

抽出

編集

ワークフロー:作成

• ファミリ(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

API の仕組みと開発要件

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

バンドルパッケージの作成

IExternalDBApplication の実装

カスタム処理を呼び出し

イベントハンドラの登録

用語の解説

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 認証の取得

パブリック ベータ版公開のご案内

2019年 1月 28日(米国時間)に公開予定

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.