vicc blog

株式会社ヴィックの技術ブログです。

Grasshopperの情報をテキストで残すテクニック

こんにちは、篠原です。

Rhinoモデルを作るとき、「この設定、前回どうしてたっけ?」「あのファイル、どこを参照してた?」と悩んだことはありませんか? そんな手戻りや再計算の手間を減らす方法が UserText です!Grasshopperを使えば、参照ファイルや作成時の設定情報を簡単に記録し、作業効率を大幅に向上させることができます。

「なぜUserTextを活用すると便利なのか?」その理由はこちらの記事で詳しく解説しています。

なぜRhinoではUserTextで情報を保持するべきなのか? - vicc blog

これから説明するように、情報を残しておくと、例えば、ファイルが更新されるときに情報を追跡しやすくなります。 下図のフローにおいて、例えば鉄骨.3dmが更新されると、そのファイルだけを参照して計算するようにMakeDrawing.ghを調整すると、通り芯.3dmを参照しない分、新しい図面.3dmをすばやく作れるようになります。

実際に、GrasshopperからRhinoモデルのUserTextを操作するにあたっては、Rhino7以下のユーザーはeleFrontプラグインを使いましょう。Rhino8以上のユーザーは標準コンポーネントのみでOKです。

eleFront | Food4Rhino

Rhino7以下

Rhino8以上

それでは、どんなテキストを記録すればいいかを、その作り方と一緒にご紹介します。

どのファイルが参照されたか

Rhinoファイルを参照する

例えば MakeDrawing.gh では、どのRhinoファイルが参照されたかを記録できるようにしましょう。

eleFront を使用する場合、GetCurrentFile コンポーネントを活用します。

Pythonスクリプトを使用することで、標準機能だけで対応可能です。

import Rhino
path = Rhino.RhinoDoc.ActiveDoc.Path
Grasshopperファイルを参照する

Grasshopperファイル自体に更新がかかる可能性がある場合、その情報も記録しておきましょう。

Metahopperプラグインをインストールしている方はDocumentInfoコンポーネントを使いましょう。

MetaHopper | Food4Rhino

Pythonスクリプトではこのように。

import Grasshopper as gh
path = gh.Instances.ActiveCanvas.Document.FilePath

いつ作成されたか

どのファイルが参照されたかだけでなく、いつ作成・更新されたか を記録すると、過去のバージョン管理が容易になります。

実は、Timeパラメータ(時計のアイコン)に、nowtodayなどの時を表すテキストを入れると、その時間情報を取得できます。
このままPanelにつないでもいいのですが、今回は少し工夫してみましょう。

さらに下図のようにFormatコンポーネントを使って、読みやすい形式に整えてあげましょう。
{0:(テキストの体裁)}」という形式をFormatコンポーネントに読み込ませることで、お好みでテキスト処理をすることが簡単にできます。

その他のテキスト体裁はこちらから確認してみてください。
カスタム日時形式文字列 - .NET

また、Cultureパラメータ(吹き出しのアイコン)を使うと、時間表現を地域に合わせて変更できます。

逆に、テキストからTimeに変換もできます。

モデリングの基準点はどこか

基準点を記録することで、モデルの再配置やネスティング、BouindingBoxの作成が容易になります。
Timeと同様に、Formatコンポーネントを使います。復元しやすさも考慮に入れつつ記録しましょう。

Planeの情報が分けられているので、復元が簡単そう

Planeの情報が一緒くたになっており、複雑なテキスト処理が必要になるので、復元が大変そう

過去に関連記事があり、Transformの情報をいかに記録するかについて詳しく書かれています。Blockインスタンスが好きな方は是非読んでみてください。
変換行列をテキスト化してローカル平面の情報をオブジェクトに保持させる - vicc blog

作成時のパラメータ

Grasshopperでアルゴリズムを構築する際、入力値と出力値を記録しておくこと で、後々のトラブルを防げます。

入力値の記録で迷いをなくす

「このときの NumberSlider は何の値にしたっけ…?」 こんな経験はありませんか? スライダーやパラメータの値を記録しておくことで、再現性を高め、試行錯誤を効率化 できます。

出力値を記録して計算負荷を軽減

特に 面積やボリュームなど、計算に時間がかかる処理 は、あらかじめ記録しておくと便利です。 毎回Grasshopperを開くたびに再計算するのは非効率。重要な結果はUserTextに保存し、作業スピードを向上させましょう!

このように、UserTextを活用することで、Grasshopperのワークフローがよりスムーズになります。


おわりに

今回はGrasshopperを使ってRhinoオブジェクトを作る際に、UserTextを活用して記録しておきたい情報と、その具体的な記録方法について紹介しました。

UserTextを活用するメリット - プロジェクトの再現性が向上 - NumberSliderの値を記録することで、過去の設定を正確に再現できる。 - 設定値を保存することで、Grasshopperスクリプトを複数人で共有する際の理解がスムーズになる。

  • 作業の効率化

    • 参照ファイルの情報を記録することで、必要なデータをすぐに取得可能。
    • 出力結果をUserTextに保存することで、Grasshopperを開くたびに計算し直す必要がなくなる。
  • 長期的なプロジェクト管理が容易に

    • ファイルの作成日時や参照履歴を残すことで、プロジェクトの管理がしやすくなる。
    • 「どの時点で、どのデータを使って計算したのか?」を明確にし、変更の影響範囲を把握しやすくする。

このように、UserTextを活用することで、プロジェクトの透明性と作業効率を大幅に向上 させることができます。情報管理の重要性を意識しながら、ぜひ活用してみてください。

Grasshopperのデータ管理についてもっと詳しく知りたい方は、viccまでご相談ください。