🦏

Rhino8(BETA): Grasshopperの新コンポーネント(Rhino)まとめ

2023/09/23に公開

Rhino8


先日、Rhino8のBETA版が利用可能になりました。(Rhino7のライセンスが必要)
Rhino8ではGrasshopperに新しくRhinoカテゴリのコンポーネントが多数追加されています。これらのコンポーネントは主にジオメトリのベイク、レイヤー、マテリアル、ブロックインスタンスなどのRhinoドキュメント上で扱うオブジェクト(Rhino.DocObjects)を手軽にgh上でコントロールする機能を持っています。
ここでは新しく追加されたRhinoカテゴリに属する各コンポーネント(以下"Rhinoコンポーネント"という)がどういったことができるのかというのを簡単にまとめています。なお、これらの情報はRhino8 BETA(2023/09/18)時点のものになるのでご注意ください。

はじめに

Rhinoコンポーネントの理解に役立つ情報を少し紹介します。

GH_ModelContent

Rhinoコンポーネントの重要な要素としてGH_ModelContentという型があります。
GH_ModelContentは主にContentグループに属するBakeコンポーネント等で「Content」という表記のParamとして扱われています。これを介することで、GHからRhinoにベイクしたり、逆にRhinoからGHに属性情報を持ってきたりすることが可能になっています。

Contentグループのコンポーネント

Bakeコンポーネントの入出力のParam
また、Rhinoコンポーネントでやり取りするデータを見てみると、頻繁に「Model ●●」というのを目にしますが、これらのデータはGH_ModelContentを継承した型となっています。つまり、これらのデータはBakeコンポーネントでベイクすることが可能です。

「Model ●●」はContentに入力できる
IGH_GeometricGooを継承している型はGH_ModelObject(GH_ModelContentを継承している)に自動的に変換してくれる(PreferredCastを実装している)ので、これらもContentに直接入力することが出来ます。因みに、今回新しくGHで扱えるようになったHatch、Dimension、BlockInstance(reference)などもIGH_GometricGooを継承しています。

IGH_GeometricGooもContentに直接入力できる

ZuiComponent

RhinoコンポーネントのほぼすべてがZuiComponentという抽象クラスを継承しており、これによってInputとOutputのParamの表示/非表示ができるようになっています。

右クリック → Hide unuse parametersで使用していないParamを自動で非表示にしてくれたりもする
一部のParamでは右クリックでセットできる値を選択することで出来るので、何が入力できるのか分からないときに役立ちそうです。

Rhino側にあるブロックインスタンス定義をリストしてくれている


Content

Bake Content

ContentをRhinoドキュメント上にベイクできる

Detail
  • デフォルトでは"Grasshopper"レイヤーにベイクされる
  • モードが二つある
    Update: 既にベイクされたモデルがある場合はそれを更新する
    Insert: 既にベイクされたモデルがあるかに関わらず新しいモデルをベイクする

  • 出力はベイクしたモデルのContent
  • 特定のレイヤーにベイクしたいときは事前にModelObjectコンポーネントで指定する

Content Details

ContentのDetail(Guid、レイヤー、表示色など)をGetする

Detail
  • RhinoオブジェクトをセットしたParamからでも直接取れる

Content Information

ContentのInformation(名前、description)をGet/Setする

Detail
  • parentというのは名前(path)を特定のセパレータで区切ったときの上位の部分、nameは下位の部分
  • デフォルトではコロン2つ(::)がセパレータとなっている

Convert Units

モデルの単位(スケール)を変更する

Detail
  • Sourceに元の単位、Targetに変更先の単位を指定するとObjectのスケールが変更される

  • 数値でもok

Text Field Expression

テキストフィールド関数を生成する

Detail
  • テキストフィールド関数とは属性ユーザーテキストで設定できる関数のこと
  • 右クリックで何の関数を生成するか選択できる
  • 関数を評価するにはEvaluateTextFieldsコンポーネントが必要
  • 例:AttributeUserText関数を使用してユーザーテキストをGetする

Evaluate Text Fields

テキストフィールド関数を評価(実行)する

Detail
  • TextFieldExpressionコンポーネントと一緒に使うことが多そう

Unit System

独自の単位を作成できる

Detail
  • 例:1hoge=10mmと定義する

User Text

ユーザーテキストをGet/Setできる

Detail
  • 例:Rhinoのオブジェクトに割り当てられているユーザーテキストをGetする

  • 例:ghのジオメトリをユーザーテキストがついた状態でベイクする
  • いくつかモードがある
  • Mergeでは重複があれば更新し、なければ新しく追加する

Filter Content

Contentを特定の条件でフィルターする

Detail
  • 例:"Nameが30以上"という条件でフィルターする

    FullName(またはPath)は名前全文、Nameはセパレータで区切られた下位の部分(ややこしい、、)

Group Content

指定したKeyでContentをグルーピングする(ブランチで分けられる)

Detail
  • 例:Nameでグルーピングする

  • 指定できるKeyはマテリアルやレイヤーなどと沢山ある

Order Content

指定したKeyでContentをソートする

Detail
  • 例:Nameでソートする

Equality Filter

keyの値がvalueと一致するか否かのFilterを生成する

Detail
  • 例:所属するレイヤがHiddenになっているかでフィルターする

Greater/Less Than Filter

keyの値がvalueより大きい・以上かのFilterを作成する

Detail
  • 例:"Nameが30以上"という条件でフィルターする

Logical And/Or Filter

2つのFilterの論理積/論理和を作成する

Detail

Intersection/Union Filter

Filterのリストの論理積/論理和を作成する

Detail

Logical Not Filter

Filterの論理否定を作成する

Detail

Contains Text Filter

keyの値にTextが含まれているかのFilterを作成する

Detail
  • Contains, StartWith, EndsWithの3つのモードがある
  • Caseは大文字小文字を区別するかどうか
  • Cultureは使う文字の言語

Match Text Filter

keyの値でパターンマッチングするFilterを作成する

Detail
  • ワイルドカードと正規表現の2つのモードがある

    ワイルドカード

    正規表現

Import Content

別ファイルからContentをインポートできる

Detail
  • 別3dmファイルからジオメトリ、レイヤー、ブロック定義などをContentとしてインポートする
  • 各インプットはパターンマッチング用のワイルドカードを指定
  • 3dm以外(obj等)もインポートできる

Model

Model Layer

Layerの各要素をGet/Setする

Detail
  • 例:Rhinoのオブジェクトが所属するレイヤーの名前を取得する

  • Layer(Content)を新規に作成することもできる

Query Model Layers

Rhinoのドキュメント上にあるレイヤーのリストをContentとして取得する

Detail
  • インプットはパターンマッチング用のワイルドカードを指定できる

  • BakeContentコンポーネントでベイクする時にexpiredされるようになっている

Model Block Instance

ブロックインスタンスのTransformとブロック定義をGet/Setする

Detail
  • 例:Rhinoドキュメント上のブロックインスタンスからブロック定義とTransformを取得する

  • 例:ブロック定義からブロックインスタンスをベイクする

Export Model Block Definition

ブロック定義をエクスポートする

Detail
  • ブロック定義の中にあるジオメトリを3dmとして保存する
  • エクスポートした3dmをリンクとして設定するわけではない
  • リンクにするには後述のInportModelBlockDefinitionを使用する

Import Model Block Definition

  • 3dmをブロック定義としてインポートする
Detail

Model Block Definition

ブロック定義の要素をGet/Setする

Detail

例:ブロックインスタンスからブロック定義を確認する

  • 隠れているパラメータがいくつかあるが、定義のタイプ(リンク、埋め込み)は現時点では無さそう

Query Model Block Definitions

Rhinoのドキュメント上にあるブロック定義を検索する

Detail
  • インプットはパターンマッチング用のワイルドカードを指定

Objects

Explode Object

モデルオブジェクトを分解する

Detail
  • ジオメトリの分解と似たような感じ
  • Nameなどは継承される

Model Object

モデルオブジェクトの各要素をGet/Setする

Detail

Query Model Objects

Rhinoドキュメント上にあるジオメトリをモデルオブジェクトとして取得する

Detail
  • NameとLayerはパターンマッチング用のワイルドカードを指定する
  • Locked/Hiddenをtrueにするとロックされている/非表示になっているジオメトリも取得する

Display Attributes

オブジェクトの表示に関する設定のGet/Setをする

Detail
  • 例:オブジェクトに表示色を設定してベイクする

Display Colour

オブジェクトの表示色に関する設定のGet/Setをする

Detail
  • 例:オブジェクトの表示色を”親の設定”にしてベイクする


Display Mode

オブジェクトの表示モードに関する設定のGet/Setをする

Detail
  • 例:オブジェクトの表示モードを”ゴースト”にしてベイクする


Drafting Attributes

製図に関する設定のGet/Setをする

Detail
  • 例:Curveの印刷色を赤、印刷幅を50に設定する


  • 印刷表示がオンになっていないと確認できないので注意

Object Linetype

線種に関する設定のGet/Setをする

Detail
  • 例:Curveの線種を”破線”に設定する


印刷色に関する設定のGet/Setをする

Detail
  • 例:印刷色の設定を”表示の設定”にする


印刷幅に関する設定のGet/Setをする

Detail
  • 例:印刷幅を”レイヤの設定”にする


Render Attributes

レンダリングに関する設定のGet/Setをする

Detail
  • 例:キャストシャドウとレシーブシャドウをTrueにする


Render Material

レンダーマテリアルに関する設定のGet/Setをする

Detail
  • 例:マテリアルを割り当てた状態でベイクする



Visibility Attributes

オブジェクトのHidden、LockedのGet/Setをする

Detail
  • 例:ロックにした状態でベイクする

Render

Model Material

マテリアルの各要素をGet/Setする

Detail

Query Model Materials

Rhinoドキュメント上にあるマテリアルを検索する

Detail
  • インプットはパターンマッチング用のワイルドカードを指定

Viewports

Model View

ビューの各要素をGet/Setする

Detail

Model Viewport

ビューポートの各要素をGet/Setする

Detail
  • 変更はベイクすることで反映される

Query Pages

Rhinoドキュメント上にあるページを取得する

Detail
  • インプットはパターンマッチング用のワイルドカードを指定

Query Viewports

Rhinoドキュメント上にあるビューポートを取得する

Detail
  • インプットはパターンマッチング用のワイルドカードを指定
  • ビューポートが更新されるたびにexpiredされるようになっている

Zoom Extents

Extentsで指定したオブジェクトが全て表示されるようにズームする

Detail
  • 例:ベイクするとPerspectiveビューの視点が指定したオブジェクト全体が映るように切り替わる

Annotations

Aligned Dimention

平行寸法を作成する

Detail


  • いろいろパラメータが隠れている

Angle Dimension(Arc)

円弧の角度寸法を作成する

Detail


Angle Dimension(Lines)

2つのLine間の角度寸法を作成する

Detail
  • DimensionLocationは寸法を表記する位置

Angle Dimension(Points)

3つのPoint間(Pa-C-Pb)の角度寸法を作成する

Detail


Annotation Attributes

Annotationの各要素のGet/Setをする

Detail


Centermark

センターマークを作成する

Detail
  • t(Parameter)で向きを調整できる

Leader

引出線を作成する

Detail



Linear Dimension

直線寸法を作成する

Detail


Ordinate Dimension

縦座標寸法を作成する

Detail



Radial Dimension

半径寸法を作成する

Detail


Text Dot

TextDotを作成する

Detail


Text Entity

TextEntityを作成する

Detail


Annotation Style

Annotationのスタイルの各要素をGet/Setする

Detail
  • 例:スケールを1.25に設定したスタイルを平行寸法に割り当てる

Model Font

フォントの各要素をGet/Setする

Detail




  • アンダーラインとかの設定が隠れている

Query Annotation Styles

Rhinoドキュメント上にある注釈スタイルを検索する

Detail
  • 入力はパターンマッチング用のワイルドカード

Query Installed Fonts

インストールされているフォントを検索する

Detail

Annotation Arrow Settings

矢印の設定

Detail


Annotation Dimension Settings

寸法の設定

Detail
  • 例:TextOrientationをtrue, TextLocationをcenterに設定

Annotation Leader Settings

引出線の設定

Detail
  • 例:LeaderCurveTypeをSpline, HasLandingをtrue, LandingLengthを5に設定

Annotation Text Settings

テキストの設定

Detail
  • 例:MaskFlameをRectangular, MaskColourをwhite, MaskMarginを0.5に設定

Annotation Tolerance Settings

許容範囲表記の設定

Detail
  • 例:ToleranceFormatをDeviation, 有効桁数を3, Upper/Lowerを0.1, 文字スケールを50%に設定

Annotation Units Settings

単位表記の設定

Detail
  • 例:LinearResulutionを1, prefixをsuffixを設定

Drafting

Model Linetype

線種の各要素をGet/Setする

Detail
  • 例:カスタムした線種をオブジェクトに割り当てる

    Segments=[4,-1,2,-1,2,-1]は1ユニットのセグメントの長さ。正の値は実線の長さ、負の値は空白の長さを示している。

Query Model Linetypes

Rhinoドキュメント上にある線種を検索する

Detail
  • インプットはパターンマッチング用のワイルドカードを指定

Model Hatch

ハッチを作成する

Detail


Colour Gradient

ハッチのグラデーションカラーを作成する

Detail


Gradient Colour Stop

グラデーションの色・位置を定義する

Detail


Hatch Line

ハッチパターンの線の設定をGet/Setする

Detail




Import Hatch Pattern

外部ファイルからハッチパターンをインポートする

Detail
  • 現状、Rhinoからハッチパターンをエクスポートできない?
  • .patというファイルをインポートするらしい

Model Hatch Pattern

ハッチパターンの各要素をGet/Setする

Detail
  • 例:HatchLineからハッチパターンを定義→それを使用してハッチを作成

Query Model Hatch Patterns

Rhinoドキュメント上のハッチパターンを検索する

Detail
  • インプットはパターンマッチング用のワイルドカードを指定

Discussion