タイトル: Revit ⇄ Speckle の往復ワークフロー
SEOタイトル: Revit⇄Speckleの往復ワークフロー|send/receive・要素マッピング・座標と単位
| この記事の要点 |
|
この記事は Speckle を Revit と組み合わせる実務寄りの往復ワークフローを扱います。一般的な手順は send/receive の基本ワークフロー を、Revit 自体は Revit の各記事を前提とします。プログラムから扱う場合は specklepy へ続きます。
Revit から send する
Revit に Revit コネクタを導入すると、リボンなどから Speckle の操作が行えます。基本の流れは次のとおりです。
- 送信先の Project / Model を選ぶ(または作成する)。
- 送る範囲を選択フィルタで決める(選択要素・カテゴリなど)。
- send を実行すると、対象要素が Speckle オブジェクトへ変換され、新しい Version が作られる。
このとき、Revit 要素が持つパラメータ(寸法・材質・分類・型番など)は、Base オブジェクトの動的プロパティとして一緒に運ばれます。形状だけでなく属性も連携できるのが BIM 連携としての価値です。
Web や他ツールで確認する
send 後は、ブラウザの Viewer でその Version を開き、3D で内容を確認できます。Revit を持っていない関係者でも、URL を共有すればモデルを閲覧でき、コメントや座標の確認が行えます。
また、Rhino・Grasshopper・Blender などの コネクタで receive すれば、それぞれのツールでモデルを活用できます。たとえば Grasshopper で受け取って解析・最適化に回す、Blender で受け取って可視化する、といった連携です。
receive で Revit に戻す
他ツールや別の Revit に対して、Speckle 上の Version を receive で読み込めます。Revit へ戻すときは、Speckle オブジェクトを Revit のネイティブ要素へ変換しようと試みます。
ただし、ここには限界があります。元が Revit 由来でない(たとえば Rhino で作った自由曲面の)データは、Revit に同じ概念がないため、ネイティブな壁や柱として完全に再現されるとは限らず、ダイレクトシェイプなどの汎用形状として取り込まれることがあります。「Revit→他ツール→Revit」と往復したときに、すべてが元どおりのネイティブ要素に戻るとは限らない点を前提に運用設計するのが安全です。
要素のマッピングと注意点
往復で何が保たれ、何が落ちるかはケースによります。実務では次を意識します。
| 観点 | 注意点 |
|---|---|
| ネイティブ性 | 受け取り側に同じ概念がないと、形状+属性として近似される |
| パラメータ | 必要な属性が往復後も保持されるか確認する |
| 要素の対応 | 対応外の要素は欠落しうる。重要要素は事前に検証する |
| 更新運用 | 戻したデータを正本にするか、参照に留めるかを決めておく |
要素の対応関係そのものの考え方は オブジェクトモデル と コネクタ の記事を参照してください。
座標と単位
連携で最もトラブルになりやすいのが座標系と単位です。最初に必ず確認しておきます。
- 座標系:Revit にはプロジェクト基点・測量点・内部原点といった基準があり、ツール間で原点や向きがずれると、モデルが離れた位置に配置される・回転するなどの問題が起きます。関係者間で基準点の扱いを取り決めておきます。
- 単位:Revit 側がミリメートル、受け取り側がメートルやインチといった違いがあると、スケールが狂います。プロジェクトの単位を統一し、変換が正しく行われるか小さなモデルで検証します。
大規模建築では、原点から遠く離れた測量座標で作業することがあり、これが原因で精度や表示の問題が出ることもあります。最初に小さなテスト要素で「位置・向き・スケールが正しいか」を往復確認してから本番のモデルを扱うのが、手戻りを防ぐコツです。
自動化への発展
ここまでは GUI のコネクタによる手動の往復でした。同じ send/receive はプログラムからも実行でき、定期的なデータ取り出しや、属性の一括チェック、他システムへの連携などを自動化できます。その入口が次の specklepy(Python SDK) です。.NET 環境であれば .NET SDK も選べます。