#007ExcelにGHのデータを出力しよう!
はじめに
今回はGHで作成したデータをExcelに出力するコードを作成していこうと思います。
出力するのは、コンクリートの柱梁の体積です。
3Dモデルから必要コンクリート量の積算をイメージしています。
今回は「LunchBox」というプラグインツールを使いますので、food4Rhinoからダウンロードしてください。
公式サイトで各コンポーネントの種類と解説がされているので参考にしてください。
Grasshopper コンポーネントIndex | AppliCraft

Rhino側の前準備
Rhino側であらかじめ柱と梁を作図しておきます。
それぞれを「Column」「Beam」レイヤに入れておきます。
また、オブジェクトに柱符号・梁符号を振っておきます。


CSVの準備
エクセル等を用いてCSVファイルに下のように入力しておきます。
各符号に対して、断面寸法とコンクリートの基準強度を入力しています。

CSVの読み込み
「File Path」「Read File」「Button」「Panel」「Stream Gate」「Text Split」「List Item」を用意します。
「Params>Primitive>File Path」
「Params>Input>Read File」
「Params>Input>Button」
「Params>Input>Panel」
「Sets>Tree>Stream Gate」
「Sets>Text>Text Split」
「Sets>List>List Item」
「File Path」を右クリックします。
Select one existing fileをクリックして、CSVの参照ファイルを指定します。
「Stream Gate」に「File Path」と「Button」をつなぎます。
CSVファイルが更新されたとき、「Button」をクリックすれば更新できるようになります。
つぎに「File Path」をつなぐことでCSVファイルの中身を読み込むことができます。
SCVファイルが開かれた状態だとエラーが発生するので気を付けましょう。
「Text Split」に「File Path」と「,」が入力された「Panel」をつなぎます。
これで1行にまとめられた各項目が分割されます。
「List Item」につないで、符号・部材せい・部材幅・基準強度に分けます。
また、現状ではツリー構造になっているので、出力端子を右クリックしてFlattenを選択してください。
これらの操作を行うと以下のようになります。

柱オブジェクトの読み込み、断面・材料情報の取得
「Geometry Pipeline」「Object Details」「Find similar member」「List Item」を用意します。
「Params>Geometry>Geometry Pipeline」
「Params>Input>Object Details」
「Sets>Sets>Find similar member」
「Sets>List>List Item」
「Geometry Pipeline」のレイヤにCalumnと入力しカーブアイコンを有効にします。
「Object Details」につなぐことで、オブジェクトの名前を取得できます。これで柱符号を取得します。
「Find similar member」のD端子し「Object Details」のN端子を接続します。
S端子にはCSVの「List Item」の部材符号が出力されている端子を接続します。
これはオブジェクトの符号がCSVファイルの何番目の符号に対応しているかを出力しています。
「List Item」を3つ用意し、i端子に「Find similar member」のi端子を接続、
L端子にはCSVの「List Item」の部材せい・部材幅・材料強度が出力されている端子をそえれぞれ接続します。
これで、CSVデータからオブジェクトの情報を取得することができます。
これらの操作を行うと以下のようになります。

柱の立体化
「Division」「Negative」「Construct Domain」「Rectangle」「Boundary Surfaces」「Extrude Linear」を用意します。
「Maths>Domain>Construct Domain」
「Maths>Operators>Division」
「Maths>Operators>Negative」
「Curve>Primitive>Rectangle」
「Surface>Freeform>Boundary Surfaces」
「Surface>Freeform>Extrude Linear」
以下のように繋ぎます。
「Extrude Linear」のA端子には柱の「Object Details」をつなぎます。

Rhino画面を確認しましょう。

梁の読み込み
柱のコンポーネントをコピーしましょう。
梁符号と断面が一致しているか確認しましょう。

続きもコピーして作成しましょう。
「Rectangle」のY方向のコンポーネントの組み方を少し変えました。

Rhino画面を確認しましょう。

材料強度別にオブジェクト分け
「Merge」「Create Set」「Sort List」「Set Union」「Member Index」「List Item」「Graft Tree」を用意します。
「Sets>Tree>Merge」
「Sets>Sets>Create Set」
「Sets>List>Sort List」
「Sets>Sets>Set Union」
「Sets>Sets>Member Index」
「Sets>Tree>Graft Tree」
「Merge」を2つ用意します。
片方には柱と梁の「Extrude Linear」をつなぎます。
もう片方は各部材の基準強度が格納されている「List Item」をつなぎます。
順番に気を付けましょう。
今回はD1に柱、D2に梁を接続しました。

この組み合わせは、各オブジェクトを設計基準強度で仕分けできるようにしてあります。
「List Item」「Graft Tree」の出力端子に「Panel」をつないで中身を確認してみましょう。
「Graft Tree」の中に格納されているツリー構造が「List Item」内と一致していれば問題ありません。
次に「Division」「Power」「Volume」「Solid Union」を用意します。
「Maths>Operators>Division」
「Maths>Operators>Power」
「Surface>Analysis>Volume」
「Intersect>Shape>Solid Union」
「Solid Union」でソリッドを結合した後「Volume」で体積を求めます。
単位が「mm^3」を「m^3」にするために「Division」「Power」で計算しています。

Excelに出力する
「Entwine」「Boolean Toggle」「Button」「File Path」「Panel」「Excel Write」を用意します。
「Sets>Tree>Entwine」
「Params>Input>Boolean Toggle」
「Params>Input>Button」
「Params>Primitive>File Path」
「Params>Input>Panel」
「LunchBox>Workflow>Excel Write」
LunchBoxをインストールしていない場合は、food4Rhinoからダウンロードしてください。
「Write」端子は「Button」を接続してクリックすればExcelデータが更新されます。
「Path」端子は、「File Path」と接続し、Excelファイルを参照してください。
「Worksheet」は出力先のシート名です。Excelデータ内の名前と一致しているか確認してください。
「Headings」は1行目のタイトルを入力します。
「Data」にはタイトルの中身となるデータを接続します。
「Clear」は更新するときにシート内を全削除してから更新するか設定できます。

「Worksheet」に接続する「Panel」は右クリックで「MultilineData」を無効におきましょう。
「Button」ボタンをおしてExcelにデータが送信されている確認しましょう。

おわりに
今回はGHで作成したデータをExcelに書き出せるようにしました。
ここまでできるようになれば建築積算なども現実味が帯びてくるのではないでしょうか。
「Excel Write」を活用して様々なデータを出力してみましょう。
今回作成したGHデータはこちらからダウンロードできます。