クラッシュボール: Navisworksでの干渉チェックを Rhino で確認する方法
主に Rhino で作業しているプロジェクトにて、ファスナーの金物と鉄骨、二次部材の干渉をチェックしたいシーンがありました。片手で数えられるオブジェクトであれば、Rhino や Grasshopper の機能でやってしまいますが、大きなデータでは計算に時間がかかってしまう場合があります。
このような時に、Navisworks を用いた干渉チェックが有用だそうです(僕はこのソフトの名前を最近知りました)。
Revit と Navisworks に関して Youngcheol さんの記事があったので、こちらを参考にして進めてみます。
以下動作環境です
- Rhinoceros 6 + Grasshopper 1.0007
- Autodesk Navisworks Manage 2022
- VSCode (これは任意のテキストエディタで良いです)
テストデータやGHファイルはここからダウンロードできます(メールアドレスがいります)
220218_files
Send download link to:
Navis で干渉チェック
今回はこんな感じのテストデータを作りました。


Navis に入れてみます


結果を確認してみます。

Rhino でクラッシュボールの作成
この xml ファイルに記載された座標を Rhino 上の球のオブジェクトに変換してみようと思います。
今回の作戦は、Python で xml ファイルから値を取得するというものです。Grasshopper のプラグインの中に xml ファイルにアクセス出来るものもありますが、プラグイン無しで出来ることにはプラグインを利用しない主義(僕個人が)なので Python を利用します。
まずは xml ファイルを VSCode で確認してみます。

53-55 行目に注目すると、clashpoint という要素名で座標がくくられていますね。
(個人的な予想では clashpoint の下で x, y, z という要素名で値が指定されていると思っていましたが、pos3f という型の指定?とその属性情報として書かれていました)
<clashpoint>
<pos3f x="12.320" y="7.263" z="7.615"/>
</clashpoint>
日常的にコーディングしている人ならば、ここまでで、どんなコードを書くと良いかお分かりかと思います。
RhinoPython で書いても良いですが、今回は GhPython で書いてみました(特に理由はないです)。
注意すべきポイントは以下の2点かと思います。
- 要素ではなく属性として値が入っている点
- メートル単位をミリ単位に変換が必要という点

ここで作成した球を他の会社へ展開することで簡単に干渉箇所を共有することが出来ます。Youngcheol さんの記事にもあるように、球のオブジェクトにチェックした日付や、解決済み/未解決ステータスなどを UserText として入れても良いかもしれません。
まとめ
今回は、Navisworks を用いた干渉チェックをやってみながら、Rhino 上に干渉箇所を表示してみるということをしてみました。やり方を追っかけてみるという部分で終わってしまったので他の使い方も知りたいなと思いました。
余談ですが、現在シンテグレートではチームごとにオフィスデーが設定されています(最近含め感染者が多い時期は完全リモートです)。そのため、他のチームがどのようなことをやっているか間近で見ることは少ないです。主に Revit を使っているチームやレンダリングを行っているチームが会社にはいるので、他のチームの仕事などを聞いてみたいので早く完全に収束して欲しいなと思いました。