グラスホッパーを使用していると、エクセルにデータを書き出したり、逆にエクセルからグラスホッパーに出力したい場面があると思います。
そこで今回はグラスホッパー、エクセルのどちらにも相互に書き出す方法を解説します。
今回使用したグラスホッパー・ライノセラス・エクセルのデータダウンロードはこちら
ダウンロードできるデータのご利用に関しては、利用規約をご覧ください。
Lunch boxプラグインをダウンロード
これを実行するためには下準備としてグラスホッパーのプラグインである「Lunch box」のインストールが必要になります。
詳しいダウンロード方法は下のサイトで解説されているので是非参考にしてください。

ダウンロードが完了すると、Grasshopper内にLunchBoxというタブが追加されています。

今回主に使用するコンポーネントはExcel ReaderとExcel Writeです。
ここまでできたら下準備は完了です。
それでは順番に解説していきます。
グラスホッパーからエクセルに書き出し

今回はライノセラス上にある複数の柱のデータを例としてエクセルに書き出したいと思います。

このように、エクセル上では1つずつ、柱の体積と高さをグラスホッパーを使い抽出します。

使用コンポーネント:①Brep ②Volume ③Deconstruct Brep ④List Item ⑤Deconstruct ⑥Entwine ⑦Boolean Toggle ⑧Excel Write

まずはライノセラス上の柱を全てBrepに格納してください。

この際に、柱を選択する順番に気を付けてください。
選択した順番に最終的にはエクセルに書き出されます。
今回の場合には矢印の順番で選択しました。

その後、Volumeを使用することでV端子からそれぞれの柱の体積が抽出できます。

そしてDeconstruct Brepを使用することで、柱を点・線・面に分割することができます。
今回の場合、点を後ほど使用するのでV端子を使います。

List Itemで最も高い位置にある点を抽出します。
この点の位置を利用することで、柱の高さが分かるようになります。

現段階では点はxyzの3方向の情報を持っています。
そのため、Deconstructを使用することで高さの軸であるz軸の情報だけを抽出します。
その際に、z端子の右クリックしてFlattenにすることを忘れないでください。

Entwineを使用し、VolumeとDeconstructの結果を結合します。
上の画像のようにデータが結合されていれば大丈夫です。

Excel Writeを使用することでエクセルに体積と高さを書き出します。
Entwineの結果をData端子に接続します。
そして黄色のPanelを3つ用意します。
1つ目は出力したいエクセルの”パス”を入力してください。

パスはファイルの上の部分をクリックすると青くなり、エクセルのファイル名まではコピーできます。
貼り付けた後に、エクセルの名前・拡張子を足してください。
そしてこのPanelをPath端子に繋げてください。
2つ目のPanelには”テスト”と入力します。
これにより、エクセル内でテストという名前のシートが作成され、そこに書き込まれます。
Worksheet端子に繋げてください。

3つ目のPanelには体積と高さを入力します。
しかし、通常法方法では上の画像のように2段に分けて入力することができません。
そこでPanelを右クリックし、Multiline Dataを選択してください。
そうすると段落を作ることができるようになり、左の番号の0.1.・・・とすることができます。
これにより、Entwineで合体させたデータの中から、0番の体積、1番の高さにデータを連動することができ、エクセル上で数値の前に名前を出力することができます。

最後に、Boolean ToggleをClear端子に接続します。
これで完成です。
Boolean ToggleをダブルクリックすることでFalseがTrueに変わり、プログラムが実行されます。

プログラム実行後はこのように新しくできた”テスト”という名前のシートに体積と高さのデータを出力することができました。
エクセルからグラスホッパーに書き出し

使用コンポーネント:⑨Excel Reader
2つ目にエクセルからグラスホッパーにデータを書き出す方法を紹介します。
使用するエクセルは、1つ目で作成したエクセルを使用します。
今回の場合は非常にシンプルです。
まずRead端子にスイッチの役割であるBoolean Toggleを繋げます。
その後、Path端子にエクセルファイルのパスを入力します。
そして、Worksheet端子に使用したいエクセルのシート名を入力します。

Boolean ToggleをTrueにするとスイッチが入り、データがグラスホッパー上に出力されます。
出力される順番として、1行目のデータ、2行目のデータ・・・という感じになります。
まとめ

今回はLunch boxプラグインを使用し、その中のExcel WriteとExcel Readerの2つのコンポーネントを使用しました。
そして、エクセルとグラスホッパー間のデータのやり取りの方法を解説しました。
是非ともこの方法を活用してみてください。
今回は以上になります。
Comment