【集中講座】Grasshopper: コンポーネントが赤く表示される – エラーについて

  • Grasshopper初級~中級レベルの方向け
  • Grasshopperコンポーネントのエラー原因を判別できます
  • Grasshopper基礎
  • 起こりやすいエラーを整理してご紹介します
  • Grasshopperではプログラミングに比べ視覚的にエラーを確認でき、解決が容易です
  • エラー時の表示色やコンポーネントの機能を知ることで、原因を絞り込むポイントがわかります

Grasshopperでアルゴリズムを組む際、コンポーネントの色が通常のグレー色とは変わって異なる色で表示されることがあります。表示される色により意味が変わり、コンポーネントが正常に働いている状態(グレー色)、入力条件が足りない時などの注意にあたる状態(オレンジ色)、エラーにあたる状態(赤色)の3つに分かれます。

コンポーネントが赤く表示されたときは、本来意図したコンポーネントの使い方ができていないエラーの状態となります。その際、コンポーネントの右上に表示される[Messages Widget]をクリックすることでエラーの内容が確認できます。ここからエラーを確認し、問題を確認するように心がけてください。

※通常、問題がある場合は[Messeages Widget]が表示されますが、環境設定から表示をオフにしている場合は、コンポーネント上に表示されません。その場合は、File > Preferences  Widgets から[Show Messages widget]にチェックをつけて表示してください。


起こりがちなエラーは、下記の様なものがあるかと思われます。

  • コンポーネントの線の繋ぎ方に問題がある
  • 入力する型(データタイプ)を間違えている
  • 入力した値が適切なものではない
  • 値が大きすぎる・小さすぎる
  • コンポーネントの使用条件を満たしていない
  • 参照しているファイルが見つからない
  • スクリプト時のエラー

などです。簡単にですが、順に内容を確認してみたいと思います。


〇コンポーネントの線の繋ぎ方を間違えている

Grasshopperでは、入力条件の最適値をもとめる[Galapagos]や、アルゴリズムをループする特殊なプラグインを使う時以外は、下流のデータを上流に繋ぐことはできません。アルゴリズムをループするように入力をつなぐと、[Recursive data stream found,~]というエラーが表示されます(再帰データがあるというエラー)。
このエラーが出た場合は、上流から下流に一方向に流れるようにコンポーネント同士を接続し直してください。


〇入力する型(データタイプ)を間違えている

Grasshopperではデータを繋ぐ際に、端子の上にしばらくカーソルをおくと、端子ごとに入力する型(データタイプ)をアイコンで確認することができます。一部の端子には自動的に型を変換する機能が付いていますが、変換できない時は[Data conversion failed from A to B]のようなエラーメッセージが出ます。
                                                          端子に繋ぐ型(データタイプ)を確認している図

下の例では、[Move]の[Motion(T)]端子にVectorデータを繋がないといけないところに、数字を繋いだため[Data conversion failed from Number to Vector]というエラーが表示されています(数値からベクトルに変換できないというエラー)。[Unit X]を通してベクトルデータタイプに変更後に繋いだ場合は、エラーが解消されます。

また[Surface closest Point]のSurface端子にCurveを繋ぐ場合なども同様に[Data conversion failed from Curve to Surface]とエラーが表示されています(CurveデータはSurfaceデータに変換できないというエラー)。

この種類のエラーが出た場合は、入力する端子の型(データタイプ)を適切なものに変更してください。
Paramsタブから、型(データタイプ)に相当するコンポーネントを確認できます。下記の様なデータタイプを良く使うかと思われますので、参考にしていただけたらと思います。


〇入力する値が適切なものではない

入力したデータの型は正しいが、値が適切ではないのでエラーとなっている状態です。

下記の[Scale]のFactor(拡大縮小の比率)に0が入っている場合(0倍にスケールすると、データがなくなるため)エラーとなります。また[Division]で割り算する時も、0では除算できないためエラーとなります。

 [Surface Morph]などのコンポーネントはUやVの範囲を入力して、面積を指定します。この例では、Uに入力した値が[最小 to 最大] のような範囲ではなく、最小・最大に同じ値が入力されているので、面積として指定できずエラーとなります。
 
この種類のエラーが出た時は、スライダなどの入力する値を別の値に変更してください。

また[Panel]に記述する際、MultiLine Dataオプションをつけて複数行にデータを記述することができますが、改行後に何も書かないと<empty>というデータになります。<empty>状態で他のコンポーネントに接続するとエラーが起こることがあります。この場合はPanel内の記述から改行をなくして、<empty>を取り除いてください。


〇値が大きすぎる・小さすぎる

Grasshopperの[integer]で扱う整数は、[符号付き 32 ビット整数]と呼ばれるものになります。この場合、整数として使用できる値は -2,147,483,648 ~ 2,147,483,647 の間となります(小数[number]の扱うことができる値はもっと大きい値になります)。
下図は、整数の2,147,483,647に1を足してみた例ですが、整数としては値が大きすぎて扱うことができないためエラーとなります。

また少数で極端に大きい値を扱うとき1e+10のような表記がされることがあります。これは1*10の10乗(10,000,000,000)という意味になります。小数としては扱えるのですが、整数として扱える値は上記の値となりますので、コンポーネントの入力の型が整数(int)の端子に、大きすぎる少数(1e+10など)を入力すると変換時にエラーとなります。

その場合は下記のリンクを参考に、単位系などを変えて値を小さくする、原点から離れているデータを原点の近くに移動する、アルゴリズム自体を修正するなどで対応いただけたらと思います。
https://www.applicraft.com/tips/rhinoceros/hyouki/


〇コンポーネントの使用条件を満たしていない

コンポーネントごとに決められた使用条件を満たしていない時もエラーとなります。

例として、[Loft]はRhino・Grasshopperを問わず、閉じている曲線と開いている曲線が混在している場合、面を作成することができません。
また[Key Value Search]は、KeyとValueに入力するデータを同数にすることで、辞書のようにSearchに入力したデータを異なる値に置き換える働きをします。ですので、KeyとValueの入力数が異なる場合はエラーとなります。

また[Sweep1]や[Sweep2]などを使って、1つのコンポーネントで複数回スィープを実行する際は、作成するスィープごとにレール曲線と断面曲線をそれぞれ階層に分けて繋ぐようにしてください。

 
                  修正前                           修正後

この種類のエラーの場合は、下記のリンクからそれぞれのコンポーネントの使い方を確認し、コンポーネントの意図した入力データに変更してくださいhttps://www.applicraft.com/ghcp_index/


〇参照しているファイルが見つからない

[File Path]などを使い、CSVなどの外部のデータを読み込んでいる場合、該当のデータが見つからなくなった場合はデータが見つからないためエラーとなります。この場合は、PC内に同じフォルダ・ファイルを用意していただくか、再度ファイルを指定し直してください。

他の人が作成したghファイルを開く際、プラグインが見つからないという表示が出ることがあります。該当のプラグイン(gha形式など)がお使いのPCにインストールされていない場合、コンポーネントが足りず、歯抜けのような形でアルゴリズムが空いてしまいエラーが出ることがあります。

その場合は、該当のプラグインをインストール後にghファイルを開き直してください。

プラグインのインストールに関しては、下記リンクを参照ください。
https://www.applicraft.com/qanda/rhinoceros/gh_plugin_install/


〇スクリプト時のエラー

[C# Script]や[GH Python Script]、[VB Script]を使用する際、ダブルクリックからコンポーネントの内部にプログラムを記述することができます。

スクリプトのコンポーネントでエラーが起こった場合は、それぞれのプログラムごとの記述方法が間違っていないか、変数名やメソッド名・プロパティ名などの入力が間違っていないか、型入力などが適切なものか、などを見直すことなどで対応頂けたらと思います。


以上、比較的起こりやすいエラーを確認してまいりました。起こるエラーはこれで全てという訳ではありません。

基本的には、コンポーネントの使い方を確認したうえで、データの型と値を適切なものを入力すれば、問題なくコンポーネントは動作するかと思います。エラーが出た時は、落ち着いて右上の[Messeages Widget]からエラー内容を確認してください。