Grasshopper :: RhinoのGeometryを読み込む
RhinoにあるGeometryを読み込むには、[Params > Geometry]内にあるコンポーネントを右クリックして[Set 〇〇]で直接Rhinoで選ぶ必要があります。
選択したいGeometryを直接選べる反面、数が多いと選択するのは面倒。。
そこで今回は、Geometryを自動で読み込む方法を紹介します。
レシピ
Geometryを読み込むには、通常[Geometry Pipeline]コンポーネントを使用しますが、レイヤー名やGeometryを細かく設定できません。
そこで、アドオンやPythonを使った他の方法についても紹介したいと思います。
[Geometry Pipeline]の場合
まずは通常の[Geometry Pipeline]です。
コンポーネントの[Layer]や[Name]をダブルクリックすると、テキストを直接入力できます。
また、[Type]のGeometryのアイコンをダブルクリックと、読み込むGeometryを指定できます。
シンプルに使える反面、複数のレイヤ名入力ができなかったり、4種類のタイプからしか選べなかったり、ちょっと不便です。
そこで、より便利なアドオンを使ってみました。
Human(アドオン)の場合
使用するアドオンは、「Human」です。
このHumanの[Dynamic Geometry Pipeline]を使うと、より設定が詳細にできます。
前回紹介した方法でレイヤを読み込み、[Layer Filter]に繋ぐと、複数のレイヤが選択できます。(ちなみにHumanにも、レイヤを読み込む[Layer Table]コンポーネントがあります。)
また、[Type Filter]には、Geometry名のテキストを入力します。”Hatch”や”Extrude”、”Block”など計9種類指定でき、”All”は全てを、”Default”では[Geometry Pipeline]コンポーネントと同じに設定できます。
注意点
[Geometry Pipeline]と[Dynamic Geometry Pipeline]コンポーネントは、常にRhinoを読み込んでいるため、Rhinoでの変更もリアルタイムで読み込みます。これはこれで良いのですが、RhinoのGeometryの数が増えると、Rhinoで変更がある度に処理が行われ時間がかかってしまいます。[Lock Solver]で処理を止めておく手もありますが、やや面倒です。
そこでPythonでの方法を紹介します。
Pythonの場合
コードは以下の通りです。
入力側の[Layer]にはレイヤ名を、[x]には[Boolean Toggle]コンポーネントを繋ぎます。
Pythonを使った場合は
- 何のGeometryを読むか細かく設定可能
- 出力先をGeometryごとなど自由に設定可能
- coerce○○で読み込むため、出力されるのは”Referenced”ではなくGrasshopper上に定義されたGeometryとなる。
- 一度読み込むと、Recomputeするか[x]のTrue/Falseを切り替えるまで更新されない。
といった特徴があります。
シチュエーションによって、どの方法でGeometryを読むかは様々かと思うので、ケースに合わせて使い分けていただけたらと思います。
使用した主なコンポーネント
- [Geometry Pipeline] (Params > Geometry > Geometry Pipeline)
- [Dynamic Geometry Pipeline] (Human > Reference > Dynamic Geometry Pipeline)
- [Python Script] (Maths > Script > Python Script)