Rhinoだってオブジェクトに情報を持たせられる ― UserTextが“ただの図形”を“意味あるモデル”に変える
Rhinoceros(Rhino)は、柔軟なモデリングができる自由度の高いツールとして、多くのユーザーに支持されています。
私自身は、3Dスキャンで取得した建物の点群データをもとにトレースを行う業務も多く、
その中でRhinoの高いモデリング能力が非常に役立つため、日常的に活用しています。
Rhinoでは、線や面、ソリッドといった“形”を扱うだけでなく、
「材料名」「部材番号」「用途」など、任意の属性情報をKey-Value形式でオブジェクトに追加することができます。
この機能を活用すれば、Rhinoのモデルは“形状の情報”にとどまらず、
意味や属性を持った、より多くの情報を持ったデータへと進化します。
建築業界の方であれば、BIMに取り組んでいる方もいるかと思います。
BIMは、超ざっくり言うと建物にまつわる情報をデータベース化し、設計・施工・維持管理の各段階で情報を連携・活用しようというアプローチです。
RhinoはBIMソフトではありませんが、オブジェクトに属性情報を付与できるという点で、3DCAD以上の活用を期待できます。
特にその情報をGrasshopperと連動させたり、外部ツールとつなげたりすることで、より力を発揮することができます。
✅UserTextの基本機能と使い方
● 属性を付与する手順
属性情報を付けたいオブジェクトを選択
プロパティパネルの「属性ユーザーテキスト」を開く
「キー(Key)」と「値(Value)」のペアで情報を追加
例えば、以下の画像では立方体に対して
Key: name, Value: 立方体 といった情報を設定しています。

● 関数(fx)の活用
UserTextでは、「関数」ボタン(fx)を押すことで、Rhinoオブジェクトのプロパティを自動取得することも可能です。
たとえば、体積(Volume)を自動で取得してValueに設定することもできます。

● より実用的な活用例
例えば、ブロック化した引違いサッシに、以下のような情報を付与してみました:
建具符号(例:AW01)
タイプ(例:引違い)
ガラス(例:網入 透明ガラス t=6.8)
色(例:シルバー)
付属金物(例:網戸、クレセント、水切、丁番)

● インポート・エクスポートも可能
付与したUserTextは、CSV形式でエクスポートする機能や、
逆にCSVから一括インポートして設定する機能もRhinoに標準搭載されています。
✅GrasshopperでUserTextを読み取る
今回は例として3種類のサッシモデルを作成し、それぞれにUserTextで属性情報を付与してみました。
AW01:引違い × 5枚
AW02:3連引違い × 2枚
AW03:4連引違い × 4枚

それぞれのモデルには以下のような情報を付けています:
---------------------------------------------
【AW01】
建具符号:AW01
タイプ:引違い
色:シルバー
ガラス:網入 透明ガラス t=6.8
付属金物:網戸、クレセント、水切、丁番
---------------------------------------------
【AW02】
建具符号:AW02
タイプ:3連引違い
色:ブラック
ガラス:型板ガラス t=6
付属金物:網戸、クレセント、戸車
---------------------------------------------
【AW03】
建具符号:AW03
タイプ:4連引違い
色:ダークブロンズ
ガラス:Low-E ペアガラス t=12
付属金物:クレセント、水切、網戸、ブレーキ
---------------------------------------------本来であれば、こういった建具が建物中に多数配置され、それぞれに属性が埋め込まれているのが理想です。
ただし今回はサンプルということで、建物モデルの再現は省略しています。あくまで「こういう情報が付けられるよ」という参考例としてご覧ください。
では実際に、Rhinoで付与したUserTextをGrasshopper上で読み込んでみましょう。
今回使用するツールは Elefront プラグインです。
プログラム全体はこんな感じです:


UserTextの読み込みには、Elefrontの Get User Value コンポーネントを使用しています。
ここに取得したいKey(たとえば「建具符号」や「タイプ」など)を入力すると、対応するValue(AW01や引違いなど)が取得されます。
Rhinoで付与した情報が、Grasshopper上でもしっかり取り出せることがわかります。
ちなみに、Elefrontは逆方向の操作にも対応しています。
つまりGrasshopper上で作成したジオメトリに対して、UserTextを付加してRhinoへ書き戻すことも可能です。
✅実際の活用例
では、UserTextの具体的な活用例をいくつかご紹介します。
① 建具表の自動生成
建物モデル内の各建具オブジェクトに対してUserTextを付与しておけば、
Grasshopperでそれらの情報を読み取り、自動で建具表を生成することができるかと思います。

② RhinoとWebをリアルタイムに連携
これは以前個人ブログで書いた内容ですが、Rhinoで作成したモデルをWeb上に表示し、
Rhino上での変更をリアルタイムにWebに反映、逆にWeb上の操作をRhinoに反映させるという連携を試しました。
このとき、各オブジェクトに一意のidをUserTextで付与し、
HTTP通信を通じて変更情報をやり取りすることで、双方向の同期を実現しています。
③ Grasshopperで作成したジオメトリに属性情報を付与
こちらも個人ブログにて紹介していますが、Grasshopper上で生成した複数のパネルに対して、それぞれ情報をUserTextで持たせてみるといった試みです。
私は実務でこういったことをやっているわけではないので、実務に即した内容というわけではないのですが、こういったGrasshopperで作成したものに対してUserTextを付与して、管理に活用していくことも可能かと思います。
✅ まとめ
RhinoのUserText機能を活用すれば、オブジェクトに形状だけでなく「意味」を持たせることができます。
それにより、モデルは単なる3D形状から「情報を持つデータ」へと進化します。
今回はごく基本的な使い方をご紹介しましたが、工夫次第でさまざまな活用が可能です。
業務の中で「これ、もっと自動化できないかな?」と感じたとき、UserTextがそのきっかけになるかもしれません。
ぜひ一度、活用してみてください。
以上
