【Grasshopper】複数のコンポーネントを1度に入力してみる

皆様こんにちは。
AMDlabの齋藤です。
今回はGrasshopperで以下のように複数のコンポーネントを入力できるようにしたいと思います。
これでGrasshopperでよく構成するコンポーネント群をすぐに作ることができます。

それでは始めましょう。

今回のデータはこちらに挙げております。
https://github.com/AMDlab/TechBlog-Multiple-Components-At-Once

登録したい複数のコンポーネントの情報を得る


今回はこちらのコンポーネントを複数登録したいと思います。

まず、登録したい複数のコンポーネントの情報を読み取ります。
読み取る情報はコンポーネントの名前、GUID、位置です。

読み取る方法はいくつかありますが、今回は
MetaHopperのGet Selected Objectsでコンポーネント情報を、
そこからGhPython(Rhino8のScriptでも可)で読み取りたい情報を読み取ります。

まず、登録したい複数のコンポーネントをキャンバスの原点(左上の隅)に移動させます。
それらを選択し、Get Selected ObjectsのSelectを押します。
次にGhPythonを追加し、Inputをx、OutputをName、ComponentGuid、BPivotとします。
Get Selected ObjectsのComponentとParamを繋ぎます。(順不同)
そしてGhPythonに以下を入力します。

これで読み取ることができました。

複数のコンポーネントの情報からデータを構成する


次に複数のコンポーネントの情報からGhPython Pythonでデータを構成します。
このデータから一気に複数のコンポーネントを配置することができるようになります。

まず、GhPython(Rhino8のScriptでも可)を追加します。
次に、GhPythonが動作しないようDisableにします。
その後以下のプログラムを入力します。

 

そして put_data# ここに入力していく に中身を入力していきます。

これで入力できました。
入力した内容はコンポーネント、パラメーターごとに多次元配列で入力していきます。
例えば今回は以下の順番で配列を構成しています。

そしてその中身は以下のようにしています。

0.  "Param""Component"
1. ComponentGuid(読み取った情報)
2. コンポーネントの場所(読み取った情報) 例) [0., 10.]
3.  "Param" の場合:パラメーター内のデータ
"Component" の場合:コンポーネントのPropertiesを入力 例) [["ComponentFlag", True], ["ComponentNum", 1.1], ...]
4.  "Param" の場合:パラメーターのPropertiesを入力 例) [["ParamFlag", True], ["ParamNum", 1.1], ...]
"Component" の場合:コンポーネントのInput側のパラメーターをInputの数分入力
例)  [[3のパラメーター内のデータ, 4のパラメーターのPropertiesを入力], [3のパラメーター内のデータ, 4のパラメーターのPropertiesを入力], ...]
5.   "Param" の場合:次につながるコンポーネントを指す 例) [[コンポーネントの番号, コンポーネントのInputの番号], [パラメーターの番号, 0], ...]
"Component" の場合:コンポーネントのOutput側のパラメーターをOutputの数分入力
例)  [[4のパラメーターのPropertiesを入力, 5の次につながるコンポーネントを指す], [4のパラメーターのPropertiesを入力, 5の次につながるコンポーネントを指す], ...]
6. None

これで入力できました。実際に動くか試してみましょう。
できたGhPythonを複製してEnableにします。

Enableにした瞬間にコンポーネントが出てきたらOKです。
※ここでUndoをするとエラーを吐くので注意してください。

構成したGhPythonをUserObjectへ登録する


最後に構成したGhPythonをUserObjectへ登録して、Grasshopper上へ一気に入力できるようにします。
まず先に、コンポーネントの情報を入れます。
コンポーネントのNameを入力します。

次にUserObjectへ登録します。
まず、動作してしまってデータが消えると困るので、GhPythonをコピーしておきます。
次に動作しないようにDisable Solverをします。マウスホイールクリックからできます。

そしてGhPythonをEnableにします。
GhPythonを選択してFile>Create User Object…をクリックします。

フォームに入力していきます。

できたらOKを押しましょう。
その後はGhPythonをDisableにして、Enable Solverにします。

これで登録は完了です。
最後にちゃんと入力できるかテストしてみます。

うまくできました!

おわりに


いかがでしたでしょうか、
今回は複数のコンポーネントを1度に入力する方法紹介しました。
これである程度の効率化を図れます。
さらにもう数歩先を考えると生成AIがこの多次元配列を作成できれば、Grasshopperの自動生成ができるかもしれませんね。
皆さんもいろいろな複数のコンポーネントを一度に入れられるようにしてみましょう!

BIM
Grasshopper
Tech
python
ARTICLES