Grasshopperコンポーネント:Sets

  • グループ名ボタンをクリックで各グループ一覧にジャンプします。
  • 左にあるA~Cは重要度で、Aが一番重要度の高いコンポーネントになります。
  • 「詳しい機能を見る」をクリックで詳細説明が開きます。
  • *は書籍『Rhino×Grasshopper All in 1 パーフェクトリファレンス』に記載しているコンポーネントです。

List

Insert Items

B

Sets>List

リスト(List)の指定した値(i)の箇所に、アイテム(I)を挿入する。後のアイテムは挿入した数だけ、インデックスがずれる。

詳しい機能を見る

詳細1:リスト(List)の指定した値(i)の箇所に、アイテム(I)を挿入する。Indexを1つだけ指定すると、そのIndex以降にItemリストが挿入され、元のIndexを含む以降のデータは後ろにずれる。

詳細2:Indexに複数のリストを指定すると、指定したリスト(C,E,I)の前に対応するindexのアイテムをそれぞれ挿入する。
アイテムリストは、1つまたはindexと同じ数でないとエラーとなる。

詳細3:階層が分かれている場合は、それぞれの階層ごとにアイテムが挿入される。

Item Index

C

Sets>List

入力したデータ(List)の中から特定のアイテム(Item)を検索し、データの中のインデックスを出力する。

List Item

A

Sets>List

リスト(List)から指定したインデックス(i)のアイテムを出力する。 

詳しい機能を見る

詳細1:入力したリストから、入力iで指定したインデックスを使用して出力iからアイテムを取り出すことができる。(複数可)⇔[Cull Index]コンポーネントはその逆。 入力Wの初期値はTrueで、インデックスが範囲を超えた場合は、最初から繰り返す。(Falseにすれば、範囲外のデータはnullとなり出力されない)

詳細2:出力iは、キャンバスをズームインする事によって表示される+/-マークで増減できる。

詳細3:[ListItem]コンポーネントを利用して、divideした頂点リストの中から指定した頂点同士を接続するラインを作成した例。

詳細4:wrapオプションがTrueの時(デフォルトではTrue)は、indexに-1を指定すると最後のアイテム、-2だと最後から2番目のアイテム・・・といった形でも指定できる。

List Length

A

Sets>List

リスト(List)の長さ(含まれるアイテムの数)を整数で出力する。

詳しい機能を見る

詳細1:リストの長さを取得する。(複数可)リストデータは、数値でなくても可。

詳細2:[ListLength]コンポーネントでリストの長さ(オブジェクト数)を取得し、[Series]コンポーネントで等差数列を作成後、[TextTag]コンポーネントでラベリングした例。

Partition List

B

Sets>List

リスト(List)を指定した数(Size)ずつ、別の階層にデータを分ける。複数の数を入力した場合は、その数ずつ繰り返した階層に分割される。

詳しい機能を見る

詳細1:リスト(List)を指定した数(Size)ずつ、別の階層にデータを分ける。サイズに複数の数(リスト)を入力した場合は、その数ずつ階層分割する作業をリストが終わるまで繰り返す。

詳細2:[Populate2D]で発生させたポイントを任意の割合で分け、その割合ごとに[Partition List]でリストを分け、色分けした例。

Replace Items

B

Sets>List

リスト(List)の指定した値(i)のアイテムを、異なるアイテム(I)で置き換える。

詳しい機能を見る

詳細1:リスト(List)内の指定したIndex値(i)のアイテムを、異なるアイテム(I)で置き換える。ItemとIndexのリスト数は同じにする必要がある。

詳細2:アイテムの一部を他のオブジェクトに置き換えた例。 ①2本のカーブをそれぞれ[Divide Curve]で分割 ②分割した頂点同士を[ArcSED]で結び円弧を作成 ③円弧に通常の[Pipe]適用 ④Replace用の[Pipe Variable]を作成 ⑤Replace用のIndex値を指定し、同じものを[List Item]で抽出 ⑥[Replace Items]に抽出したItemとIndexを接続

Reverse List

C

Sets>List

リスト(List)のインデックスの順番を逆にする。

Shift List

B

Sets>List

リスト(List)のインデックスを指定した数(Shift)だけ、ずらす。WrapがTrueの時はアイテムの総数は変わらず、Falseの時はずらした数だけ(巻き戻らず)アイテム数が減る。

詳しい機能を見る

詳細1:リスト(List)のインデックスを指定した数だけ、ずらす(Shift)。
Wrapが”True“の時はアイテムの総数は変わらず、リストの最初に戻って繰り返す。Falseの時はずらした数だけ(巻き戻らず)アイテム数が減る。

詳細2:[Divide Curve]で分割した頂点を[Shift List]でずらして[Line]を作成した例。

詳細3:上下の円の分割点を[Shift List]でずらして[Line]を作成した例。

Sort List

A

Sets>List

入力したリスト(Keys)を昇順に並べ替える。Aに値が入っていた場合、Keysで並び替えたのと同じ順に並び替える。

詳しい機能を見る

詳細1:数値リストKを小さい順に並べ替える。オプションの入力A(数値でなくても可)を使用すると、Aに入れたリストも同時に並べ替えてくれる。 また、出力を右クリックして[Reverse]を選択すると、昇順を逆にできる。

詳細2:[Sort List]コンポーネントのオプション入出力Aを利用し、カーブ上のtパラメータに応じて、そこから一番距離が短いポイントにSphereを作成する例。

Split List

B

Sets>List

リスト(List)を指定した値の前後で分割し、出力する。Aが指定値より前、Bが後。

詳しい機能を見る

詳細1:リスト(List)を指定したindex値の前後で分割し、出力する。Aが指定値より前のリスト、Bが指定値を含む後のリストになる。

詳細2:指定したindex値より前と後で、円柱の高さを変えた例。

Sub List

C

Sets>List

リスト(List)の中の指定した範囲(Domain)のアイテムだけ、出力する。

Dispatch

A

Sets>List

True/Falseパターン(Pattern)を指定して、リスト(List)を分割する。

詳しい機能を見る

詳細1:入力Pのブーリアン値(True/False)によって、条件に合うもの(True)は出力Aへ、合わないもの(False)は出力Bに選別される。
※True/Falseの代わりに1/0を入力しても可。

詳細2:[Dispatch]コンポーネントの入力Pに、ブーリアン値を返す[Larger Than]コンポーネントを接続し、A≧Bの結果がTrueならCircleを、FalseならRectangleを作成した例。

Null Item

B

Sets>List

アイテム(Item)が、NullかInvalidか判断し該当する場合は、Trueを出力する。

詳しい機能を見る

詳細1:アイテム(Item)が”Null”か”Invalid”か判断し、該当する場合はTrueを出力する。”Null”はデータが存在しない事を、”Invalid”はRhino上での無効なデータを意味する。

詳細2:[Null Item]から出力されるブーリアン値を利用して、[Dispatch]で数字とテキストを振り分けた例。
尚、Nullを除去するには[Clean Tree]を使用する。

Pick’n’Choose

B

Sets>List

パターン(Pattern)で指定した入力端子のデータを、順番に取り出し出力する。その際、取り出すデータはパターンのインデックスと同じものを取り出す。

詳しい機能を見る

詳細1:パターン(Pattern)で指定した入力端子のデータを、順番に取り出し出力する。その際、取り出すデータはパターンのインデックスと同じものを取り出す。

Replace Nulls

B

Sets>List

アイテム(Item)内のNullの箇所を、指定したアイテム(Replacements)で置き換える。

詳しい機能を見る

詳細1:アイテム(Item)内のNullの箇所を、入力Rで指定したアイテム(Replacements)で置き換える。出力Nからは置き換えた総数が出力される。図は[Sift Pattern]から出力された<null>を、”-”で置き換えた例。

Weave

B

Sets>List

パターン(Pattern)で入力端子の読み込む順を指定し、入力データが無くなるまで繰り返し出力していく。その際、出力されるデータは入力データのインデックスの初めから順に最後まで出力される。

詳しい機能を見る

詳細1:パターン(Pattern)で入力端子の読み込む順を指定し、入力データが無くなるまで繰り返し出力していく。 入力端子はビューをズームして+マークで追加することができる。

詳細2:[LinearArray]で作成した2列のポイントの並び順を[Weave]で組み替え、階段状のラインを作成した例。

Combine Data

A

Sets>List

インデックスを保持したまま入力したNullを削除し、データリストを再構成する。Sift Patternと組み合わせて使用することが多い。

詳しい機能を見る

詳細1:複数のデータを入力することで、一つにまとめる機能を持つコンポーネント。
〇階層内の同じ個所への入力データは最初に入力されたデータが保持される([Merge]コンポーネントの様に足し算されていくわけではない)
〇Nullデータは無視される
と言う理屈でデータをまとめる。
主な使用法としては、[Sift Pattern]コンポーネントと合わせて使うことで、スクリプトで言うif文の様に条件に当てはまるものだけを抽出し、変更を加えた上で元のリストに戻すことができる。

Sift Pattern

A

Sets>List

リスト(List)をパターン(Pattern)で指定した値の、端子から出力する。該当しなかったアイテムはNullで、インデックスを変更しないように出力する。

詳しい機能を見る

詳細1:入力データをパターンのfalseとtrueに該当するものに分けて出力してくれるコンポーネント。 Siftはふるいという意味。Dispatchと似た機能を持つが、Sift Patternは省かれたデータは <null>データとして出力され、階層が変わらないように出力される(0からはFalseの、1からはTrueの条件に合うものが出力される)。

詳細2:[Combine Data]コンポーネントと合わせて使用することで、スクリプトで言うif文の様な働きをさせることができる(下図は[Sift Pattern]コンポーネントの1から出力したものだけを、10倍にして[Combine Data]コンポーネントでリストを結合した例)。

詳細3:<null>が出力される特徴を生かして、Replace Nullsコンポーネントとの併用なども可能。(Repalace Nullsは、<null>を指定した値で置き換えるコンポーネント)

Cross Reference

B

Sets>List

入力した相互のデータリストのすべての組み合わせを出力する。

詳しい機能を見る

詳細1:入力した相互のデータリストのすべての組み合わせ(デフォルト:Holistic)を出力する。

詳細2:右クリックで様々なオプションに切り替え可能。

詳細3:[CrossReference]を[Coustruct Point]による座標の生成に利用し、Boxの立体配置を行った例。

Longest List

B

Sets>List

入力した複数のリストを、一番長いリストに合わせて出力する。

詳しい機能を見る

詳細1:入力した複数のリストの長さが異なる場合、一番長いリストの長さに合わせて出力する。(=短いリストの不足分は繰り返される)リストの合わせ方には”Repeat First”、”Repeat Last(デフォルト)”、”Interpolate”、”Wrap”、”Flip”の5種類がある。

詳細2:[Series]で作成したZ位置の数(長いリスト)に合わせて、3種類の形状(短いリスト)を[Longest List]の様々なオプションで配置してロフトを作成した例。

Shortest List

B

Sets>List

入力した複数のリストを、一番短いリストに合わせて出力する。

詳しい機能を見る

詳細1:入力した複数のリストの長さが異なる場合、一番短いリストの長さに合わせて出力する。(=長い方のリストは余る)リストの減らし方には”Trim Start”、”Trim End(デフォルト)”、”Interpolate”の3種類がある。

詳細2:3本の異なるポイント数のカーブを[Shortest List]のInterpolateオプションで同じポイント数に揃え、[Entwine]で階層を分けたまま1つのツリーにまとめた後[Flip Matrix]で各カーブの同じ頂点インデックス同士に組み直してカーブを作成した例。

Sequence

Cull Index

A

Sets>Sequence

リスト(List)から指定した値(Indecies)のアイテムを取り除く。

詳しい機能を見る

詳細1:入力したリストから、入力iで指定したインデックスを削除して出力iからリストを取り出す(複数可)。⇔[List Item]コンポーネントはその逆。

詳細2:入力Wの初期値はTrueで、インデックスがリストの範囲を超えた場合は、最初から繰り返す(Falseにすれば、インデックスは範囲外となり、何も削除されない)。

詳細3:wrapオプションがTrueの時(デフォルトではTrue)は、indexに-1を指定すると最後のアイテム、-2だと最後から2番目のアイテム・・・といった形でも削除できる。

Cull Nth

C

Sets>Sequence

リスト(List)のN番目に当たる要素を、繰り返し取り除く。 

Cull Pattern

A

Sets>Sequence

リスト(List)からTrue.Falseなどのパターンを使用して、要素を取り除く。

詳しい機能を見る

詳細1:入力P(Cull Pattern)に対して、Boolean値(True/False)でパターンを指定すると、True値のみが抽出される。作成したパターンは自動的に繰り返される。


詳細2:カーブ上に[Divide length]コンポーネントで等間隔にポイントを作成し、その上に円柱を配置後、[Cull Pattern]コンポーネントで作成したパターンにより円柱を間引いた例。

Random Reduce

B

Sets>Sequence

リスト(List)から指定数(Reduction)アイテムを、無作為に削除し順番を入れ替える。

詳しい機能を見る

詳細1:リスト(List)から指定数(Reduction)アイテムを、ランダムに削除する。入力S(Seed)で乱数を与える。図は、100個のポイントからランダムに20%削減した例。

詳細2:[Random Reduce]と[Random]、[Graph Mapper]を組み合わせ、下にいくにつれてRectangleの数が削減していく例。

Char Sequence

C

Sets>Sequence

指定した数(Count)だけ文字(Char Pool)を順に読み込み、テキストを作成する。Formatに指定するテキストを入力し、追加で記述もできる。

Duplicate Data

B

Sets>Sequence

データ(Data)を指定した数(Number)を複製する。

詳しい機能を見る

詳細1:データ(Data)を指定した数(Number)を複製する。複製の順序(Order)を、True=入力リスト全体を指定数繰り返して複製(順序保持)、False=入力リスト内のアイテムを、Indexごとに指定数繰り返して複製(順序保持なし)の2通りから選択できる。

詳細2:[Duplicate Data]で繰り返したリストを[Mass Multiplication]で掛け合わせて円のスケールに利用した例。

Fibonacci

C

Sets>Sequence

初期値A,Bを決め、フィボナッチ数列を作成する。フィボナッチ数列は、そのインデックスの値と、一つ先のインデックスの値を繰り返し足し算していく数列。Numberは繰り返す回数。

Range

B

Sets>Sequence

範囲(Domain)を分割数(Steps)する数を指定し、等差の数列を作る。

詳しい機能を見る

詳細1:範囲(Domain)を分割(Steps)する数を指定し、等差の数列を作る。範囲が決まっているので、Step数が多くなれば間隔は狭まる。Stepは分割数なので、実際の出力数は+1になる。
同じ等差数列を作成するものに[Series]があるが、こちらは乗算となり、Step数が多くなれば間隔は広がる。始点からの距離(Steps)が倍数で出力され、Count=出力数となる。

詳細2:[Range]で分割した等差数列を[Graph Mapper]で調整し、[Bound]と[Remap]で範囲を広げて円の半径を作成し、その円を[Series]で作成したZ位置に配置して[Loft]でサーフェスを生成した例。

Repeat Data

B

Sets>Sequence

データ(Data)を指定したアイテムの数(Length)に到達するまで、繰り返す。

詳しい機能を見る

詳細1:入力データ(Data)を指定したアイテムの数(Length)に到達するまで、繰り返す。リストがブランチに分かれている場合は、ブランチ内でそれぞれのデータを繰り返す。

 詳細2:[Repeat Data]に複数リストを入力し、それを円の半径に適用してパターンを作成した例。

Sequence

C

Sets>Sequence

初期値(Initial)と連続する数式(Notation)を指定した数(Lengh)だけ繰り返す数列を作成する。 

Series

A

Sets>Sequence

初期値(Start)と一回に増える値(Step)、繰り返す数(Count)を決め、等差の数列を作る。

詳しい機能を見る

詳細1:一連の数値のリストを作成する。入力Sで開始値を、入力Nではステップ値(いくつずつ増加するか)、入力Cでカウント数(リスト総数)を指定する。

詳細2:[Series]コンポーネントで生成された等差数列を[Cross Reference]コンポーネントにて相互参照を行い、[Construct Point]コンポーネントで立方体状にポイントを生成し、球を配置した例。

Stack Data

C

Sets>Sequence

データ(Data)を指定した個数のパターン(Stack)に従い、繰り返し複製する。

Jitter

A

Sets>Sequence

リスト(List)内のアイテムの順番をランダムに変更する。変更する強さ(Jitter)を、0から1の値で指定できる。

詳しい機能を見る

詳細1:入力Lの既存リストをランダムに並べ替える。入力JのJitter値では、シャッフルの強さを変更可能。0=シャッフルなし、1=シャッフル最大。入力Sのシード値では、乱数の分布を変更できる。

詳細2:2次元の長方形を作成した後、[Extrude]コンポーネントの押し出しを指定する入力Dに、[Jitter]コンポーネントを接続した例。

Random

A

Sets>Sequence

範囲(Domain)と個数(Number)を決めて、複数のランダムな値を作成する。

詳しい機能を見る

詳細1:入力Rにて範囲(ドメイン)を決め、入力Nで指定した数のRandomな数値を生成。 入力Sのシード値では、乱数の分布を変更できる。

詳細2:出力値を整数で出すには、コンポーネントを右クリックして[Integer Numbers]にチェックを入れる。

詳細3:2次元の長方形を作成した後、[Extrude]コンポーネントの押し出しを指定する入力Dに、[Random]コンポーネントを接続した例

Sets

Create Set

C

Sets>Sets

重複するデータがある場合、そのアイテムを1つだけにしてデータをまとめ直す。Setからはまとめ直した個別のデータが、Mapからは元のデータがSetの何番目のデータを使用しているかを出力する。

詳しい機能を見る

詳細1:重複するデータがある場合、そのアイテムを1つだけにしてデータをまとめ直す。Setからはまとめ直した個別のデータが、Mapからは元のデータがSetの何番目のデータを使用しているかを出力する。
例ではAとCは重複するため、1つしかSetからは出力されない。入力データのAに注目してみると、Mapの0と5のインデックスからは、Setで使用しているインデックス(0)が出力される。

Set Difference

C

Sets>Sets

Aのデータリストから、Bのデータリストに含まれるものを全て削除する。データ同士を比べて引き算するということ。

詳しい機能を見る

詳細1:Aのデータリストから、Bのデータリストに含まれるものを全て削除する。データ同士を比べて引き算するということ。
例では、Bに含まれるデータがすべて削除され、結果はC,D,A-1が出力されている。同じデータだと認識後削除されるため、A-1は同じとみなされないので削除されていない。

Set Difference(S)

C

Sets>Sets

AのデータからBのデータに含まれるものを削除、BのデータからAのデータに含まれるものを削除し、その両方の結果を足したものを出力する。Set Differenceとは違い、お互いを引き算する形になる。

詳しい機能を見る

詳細1:AのデータからBのデータに含まれるものを削除、BのデータからAのデータに含まれるものを削除し、その両方の結果を足したものを出力する。Set Differenceとは違い、お互いを引き算する形になる。
Set Differenceとは異なり、B-Aも行われていることに注意。

Set Intersection

C

Sets>Sets

入力されたデータリストの中のすべてに含まれるもののみ出力する。またこのコンポーネントは、任意に入力端子の数を増やすことができる。

詳しい機能を見る

詳細1:入力されたデータリストの中のすべてに含まれるものだけを出力する。またこのコンポーネントは、任意に入力端子の数を増やすことができる。

詳細2:このコンポーネントは、任意に入力端子の数を増やすことができる。例では、入力端子を3つにしている。3つ全てに含まれるAだけが出力されている。

Set Majorty

C

Sets>Sets

A,B,Cにそれぞれデータを入力し、2つ以上のリストに存在するデータだけを出力する。

詳しい機能を見る

詳細1:A,B,Cにそれぞれデータを入力し、2つ以上のリストに存在するデータだけを出力する。
3つの入力端子なので、2つ以上の多数側(Majority)だけを出力するという意味になる。

Set Union

C

Sets>Sets

入力したデータに重複するデータがある場合、1つだけにしてデータをまとめ直す。このコンポーネントは、任意に入力端子の数を増やすことができる。

詳しい機能を見る

詳細1:入力したデータに重複するデータがある場合、1つだけにしてデータをまとめ直す。
例では、データにAとCが重複しているが、結果では1つずつにして出力されている。

画像に alt 属性が指定されていません。ファイル名: Set-Union_01.png

詳細2:またこのコンポーネントは、ズームインして拡大することで、任意に入力端子の数を増やすことができる。
入力されるデータの数が増えても、コンポーネント内の処理方法は同じく、複数あるデータの1つだけを出力する。

Carthesian Product

C

Sets>Sets

AとBに入力したデータを、同じインデックス同士でまとめて出力する。AとBに入力するデータの数は同じ必要がある。

詳しい機能を見る

詳細1:AとBに入力したデータを、同じインデックス同士でまとめて出力する。AとBに入力するデータの数は同じ必要がある。
例では、インデックスの0番同士(Aと1)、1番同士(Bと2)、2番同士(Cと3)と組み合わせられ出力されている。

Disjoint

C

Sets>Sets

AとBに入力したデータの中に、重複する要素があるかどうかをTrue・Falseで出力する。重複するものがない場合はTrue,ある場合はFalse。

詳しい機能を見る

詳細1:AとBに入力したデータの中に、重複する要素があるかどうかをTrue・Falseで出力する。重複するものがない場合はTrue,ある場合はFalse。DisJointはバラバラに分けることができるかどうかという意味。例では、重なるデータが1つも無いため、Trueが出力。

詳細2:この例ではAがどちらのデータにも含まれているため、Falseが出力される。

Member Index

C

Sets>Sets

元のデータ(Set)と探すデータ(Member)を入力し、データ内を検索する。見つかった箇所のインデックスと個数(Count)を出力する。

詳しい機能を見る

詳細1:元のデータ(Set)と探すデータ(Member)を入力し、データ内を検索する。見つかった箇所のインデックスと個数(Count)を出力する。
例ではMemberに入力されているAは、0番と4番に該当するので、インデックスからは0と4が、個数(Count)は2が出力される。

詳細2:MemberIndexは、型と値の両者を見て同じかどうかの判断している。 例のように、Seriesから出力される数列はIntegerであるが、Panelで記述した3は文字列としての扱いとなり、型が違うので同じとはみなされない。 Seriesの出力をPanelを通すと、文字列同士なので同じとみなされる。

Replace Members

C

Sets>Sets

元のデータ(Set)内の検索するデータ(Find)に該当するものを、指定したデータ(Replace)に置き換える。

詳しい機能を見る

詳細1:元のデータ(Set)内の検索するデータ(Find)に該当するものを、指定したデータ(Replace)に置き換える。
例ではFindがAなので、Set内のAをReplaceに置き換えている。すべて合致したものを対象とするため、A-1はAとはみなさない。

SubSet

C

Sets>Sets

AとBにデータを入力し、Bに入力したデータがAに全てある場合はTrueを、1つでもない場合はFalseを出力する。

詳しい機能を見る

詳細1:AとBにデータを入力し、Bに入力したデータがAに全てある場合はTrueを、1つでもない場合はFalseを出力する。
例では、A,B,Cの中にB,Cは全て含まれるのでTrueが出力される。

詳細2:A,B,Cの中にB,C,Dは、全て含まれないので、Falseが出力される。1つでも含まれていないデータがあるとFalseが出力される。

Delete Consecutive

C

Sets>Sets

元のデータ(Set)の中のインデックスが隣り合っていて、かつ同じデータを削除する。削除した数(Count)も出力する。Create Setコンポーネントなどと異なり、インデックスが離れている場合は対象としない。

詳しい機能を見る

詳細1:元のデータ(Set)の中のインデックスが隣り合っていて、かつ同じデータを削除する。削除した数(Count)も出力する。Create Setコンポーネントなどと異なり、インデックスが離れている場合は対象としない。

詳細2:例ではCは2番と5番のインデックスに存在するが、隣り合っていないため削除されない。Create Setなら削除される。

詳細3:WrapがTrueの時は、最初と最後のインデックスが隣り合っている認識になる。

Find similar member

B

Sets>Sets

入力したデータ(Data)が、元となるデータ(Set)の中のどれに一番近いかを調べる。Hitからは一番近い値を、インデックスからはその値がSetの中の何番目のインデックスかを出力する。点同士の最も近い点を調べるといったことも可能。

詳しい機能を見る

詳細1:入力したデータ(Data)が、元となるデータ(Set)の中のどれに一番近いかを調べる。Hitからは一番近い値を、インデックスからはその値がSetの中の何番目のインデックスかを出力する。入力タイプとしては、数値の他にポイントやドメイン、テキストなども使用可能。数値の場合は[Number]や[Integer]などといった数値コンポーネントを通過させる必要がある。

詳細2:図は、[Find similar member]を使用して、[Random]で作成した乱数を登録した5パターンのいずれかに分類した例。

詳細3:上に入力データ、下に元となるデータをセットし、[Find similar member]を使用して最も近い元となるポイントへデータを集約し、ラインを作成した例。

Key/Value Search

C

Sets>Sets

登録した値(Keys)と同数のその答えとなる値(Value)を入力し、検索する値(Search)がどのValueに当たるかを出力する。辞書を作って、その中を調べるような働き。

詳しい機能を見る

詳細1:登録した値(Keys)と同数のその答えとなる値(Value)を入力し、検索する値(Search)がどのValueに当たるかを出力する。辞書を作って、その中を調べるような働き。
例では、A,B,C,Dをそれぞれ1,2,3,4に対応させたうえで、Searchで検索している。

詳細2:辞書のようにアイテムを対応させて使用するため、KeysとValueの数が異なる場合は、エラーとなる。

text

Characters

C

Sets>Text

テキスト(Text)を一文字ごとに分割し、文字ごとに出力する。

Concatenate

B

Sets>Text

複数の任意の文字列を入れ、順番に文字を結合する。

詳しい機能を見る

詳細1:複数の文字列を入れ、インデックス順に文字を結合する。

詳細2:複数の文字列同士が入力した際は、0と0、1と1、、と文字列を組み合わせる。GHの働き方として基本的なもの。下記参照。
https://www.applicraft.com/tips/rhinoceros/data1/

詳細3:コンポーネントにズームし近づくことで、+マークから任意に入力端子を増やすことができる。その際もインデックス順に結合され、アイテムが足りない場合は最後のアイテムが代わりに結合される。

詳細4:点座標を、X 数値 Y 数値 Z 数値 という表記にするために、一度 座標値を分解し求めた後に、再度結合した例。

Text Join

C

Sets>Text

複数のテキスト(Text)を一つにまとめる。間に挟む文字を、Joinで指定できる。

Text Length

C

Sets>Text

テキスト(Text)の文字数を取得する。

Text Split

B

Sets>Text

テキスト(Text)を、分割する文字(Separators)を指定し、その文字の前後で分ける。

詳しい機能を見る

詳細1:入力したテキスト(Text)を、分割する文字(Separators)を指定し、その文字の前後で分けて出力する。例では点座標相当の文字列を, の前後で分割している。

詳細2:文字列なので、スペース(” “)などの文字でも、分割可能

詳細3:[Text Split]コンポーネントは複数のテキスト(Text)を間に挟む文字を指定する[Text Join]コンポーネントの反対の働きをする。

詳細4:[File Path]コンポーネントでcsvデータを取得し、[Cull Index]で不必要な行を削除後に、[Text Split]で , の前後で分割し点として作成した例。詳細は、リンクを参照。https://www.applicraft.com/tips/rhinoceros/gh_csv/

Format

B

Sets>Text

指定した形(Format)でテキストを作成する。Formatに入力する際、{0},{1}のような形で端子を指定することができる。例、Formatに{0}+{1} を、{0}にテスト、{1}にRhinoを入力した場合、テスト+Rhino が出力される。

詳しい機能を見る

詳細1:Formatで指定した個所に埋め込む形でテキストを作成する。その際、Formatに{0}や{1},{2}などと記述すると、{}内の数字が端子の数字と対応した形でテキストを成形する。例では、{0}+{1}と記述し、0にTest、1にAを入力した為、Test+Aと出力される。

詳細2:・No{0},{1},{2},{3}と記述し、順に点のインデックス、X、Y、Z座標を入力した図。元の記述を,で分けることでPanelからCSVに出力できるようにしている。

詳細3:また端子名の横に:をつけることで、特定の記述も可能。この例では現在の時刻をnowと記述した[Time]で求めて、記述を変更し出力している。

詳細4:またCultureから国を変更することで、記述内容を変更することも可能。アルゴリズムは詳細3と同じだが、CultureをGermanに変更した為、西暦の記述順や、曜日の記述がドイツ向けに変更されている。

Text Case

C

Sets>Text

テキスト(Text)の文字を、すべて大文字に変換する。 

Text Fragment

C

Sets>Text

テキスト(Text)を、入力した値(Start)から指定した数(Count)、文字を抽出する。

Text Trim

C

Sets>Text

テキスト(Text)の中の、初め(Start)と終わり(End)の空白を削除する。削除するかしないかを、True,Falseで指定。

Match Text

C

Sets>Text

入力したテキスト(Text)、指定したテキスト(Pattern)かどうかを、True,Falseで判定する。

Replace Text

B

Sets>Text

入力したテキスト(Text)を、文字を検索(Find)して別の文字(Replace)で置き換える。

詳しい機能を見る

詳細1:入力したテキスト(Text)の文字を検索(Find)し、別の文字(Replace)に置き換える。例ではCurveに該当する文字をTestに置き換えている。

詳細2:Surfaceに該当する文字をTestに変更した例。Surface → Test、PolySurface → PolyTest に変換。

詳細3:文字列が該当しているかのみを判断するため、他のコンポーネントで使用するように*(何でも良いという意味)を使った場合は該当しない。

詳細4:置き換える文字に、何も存在しない<empty>を使うことで該当箇所を削除する使い方も可能。

詳細5:[Recursive]オプション(再帰)を使用することで、処理を繰り返すことも可能。例では、011の最初の01を0に置き換える。その後に再度01を0に置き換えることで、結果が0となる。

Sort Text

C

Sets>Text

入力したテキスト(Keys)の順で、データを並び替える。別のデータ(Values)を入力した場合、リストをKeysと同じ順で並び替える。

Text Distance

C

Sets>Text

A、Bに入力したテキスト(Text)の文字列の異なる数を出力する。

Text On Surface

B

Sets>Text

Rhino8作成したい文字列(Text)、フォント(Font)、大きさ(Height)、深さ(Depth)、文字を配置する曲線(Base Line)を入力し文字をBrepで作成する。文字を配置するサーフェス(Base Surface)の指定も可能(Rhino7 SR13から追加)。

詳しい機能を見る

詳細1:文字を配置する曲線(Base Line)上にテキストオブジェクトを作成・配置できる。高さ(Height)と厚み(Depth/0でも可)の指定、及び[Model Font]コンポーネントを接続してフォントの種類をプルダウンで選択可。スタイルやウェイトも選択可能だが、基本的には選択したフォントに依存する。
曲線のみでは向きの調整ができないため、方向を指定するためにS入力(サーフェス)を指定する。サーフェスを回転させる事で文字の向きや配置平面を変更できる。

詳細2:[Text On Surface]を使用して作成したテキストオブジェクトを、[SurfaceMorph]にてサーフェスに貼り付けた例。

Tree

Clean Tree

B

Sets>Tree

入力データ(Tree)からNullや、または無効なアイテム(Invalid)、空(Empty)のデータを取り除く。

Flatten Tree

B

Sets>Tree

すべての階層を取り除き、フラットなデータ構造{0}にする。詳細は、リンク参照。
https://www.applicraft.com/tips/rhinoceros/graft_flatten_simplify/

Graft Tree

B

Sets>Tree

アイテムごとに一つ階層を作り、その中にデータを格納する。詳細は、 リンク参照。
https://www.applicraft.com/tips/rhinoceros/graft_flatten_simplify/

Prune Tree

C

Sets>Tree

入力したデータ(Tree)から、枝分かれする数の最小値(N0)と最大値(N1)を決め、該当したデータを取り除く。

Simplify Tree

B

Sets>Tree

データ管理上無くても問題ない階層を削除し、構造を単純化する。詳細は、リンク参照。
https://www.applicraft.com/tips/rhinoceros/graft_flatten_simplify/

Tree Statistics

B

Sets>Tree

入力したデータ(Tree)の階層名(Path)、階層内のアイテム数(Lengh)、階層の数(Count)を出力する。

詳しい機能を見る

詳細1:入力したデータ(Tree)の階層の値(Path)、階層ごとにアイテムの数(Lengh)、階層の数(Count)を出力する。例では、{0;0}{0;1}{0;2}の階層にそれぞれ2,5,4個ずつデータがあり、階層数が3と出力されている。

詳細2:階層の値を[List Item]で指定し、[Tree Branch]と併せて使うことで、指定した階層のデータだけ取得した例。

詳細3:四角形を市松模様に削除するために、[Tree Statics]を使用した例。階層の数を求めて、その数だけtrue・falseを繰り返す。[Dispatch]で階層ごとに処理を切り替え、一つ置きに削除と、最初の一つを削除した後に一つ置きに削除を、まとめることで市松模様を再現している。

Trim Tree

A

Sets>Tree

入力したデータ(Tree)の一番深い階層から、指定した数(Depth)だけ階層を削除する。

詳しい機能を見る

詳細1:入力された階層を指定した数だけ、右側から削除する。 Depth(深さ、削除する数)には、正の値のみ入力可能。同様の働きを持つShift Pathコンポーネントは正と負の両方が入力可能(こちらは階層を左側からでも右側でも削除可能)。

詳細2:階層を削除した後のデータは、同じ階層ごとにまとめて管理される。その際、パネルに並んだ上から順にアイテムに追加される(例では、{0;0;0;0}と{0;0;0;1}が一つ右側から削除されたので、同じ{0;0;0}の階層にまとめられている)。

詳細3:Graftした後のデータを、Trim Treeで一つ削ると同じ階層になる。

Unflatten Tree

C

Sets>Tree

Flattenされた入力データ(Tree)を、ガイド(Guide)と同じ階層構造に変更する。データとガイドのアイテム数が同じ必要がある。
Tips集の詳細ページ
https://www.applicraft.com/tips/rhinoceros/unflattentree/

詳しい機能を見る

詳細1:入力データ(Tree)からNullや、または無効なアイテム(Invalid)、空(Empty)のデータを取り除く。T入力に接続すると自動で各項目を削除するが、それぞれのオプションを有効にする必要がある。初期値は、Null/Invalid=True(削除する)、Empty=False(削除しない)である。(emptyは、主に空の文字列を意味する)
図は、サーフェスをDivideした際に出るNullを[Clean Tree]で削除した例。

詳細2:Clean Treeで文字列の<empty>が削除できない場合、[Text Length]と[Cull Pattern]を組み合わせて削除する例。

詳細3:<empty>や<null>を区切りとして、データを別々のブランチに分けた例。

Entwine

B

Sets>Tree

データの階層をそれぞれ入力した端子の階層になるように、変更する。

詳しい機能を見る

詳細1:独立したリストを入力すると、入力した端子ごとの階層を持つ1つのツリーにまとめる。 データをまとめるコンポーネントに[Merge]があるが、リストごとの階層にはならないため、 [Entwine]と同じ結果を出すには他のコンポーネントと組み合わせる必要があるため手間になる。

詳細2:コンポーネントを右クリックして表示される、[Flatten Inputs]オプションのチェックを外すと、 入力したリストにブランチがある場合、そのブランチは保持される。

詳細3:Ⅲ列のポイントリストを[Graph Mapper]で上中下に修正し、[Entwine]で1つにまとめた後[Flip Matrix]でマトリックスを反転してポリラインを作成、押出した例。

Explode Tree

B

Sets>Tree

入力したデータ(Data)を、階層ごとに出力する。存在する階層だけ出力端子を用意する必要がある(右クリック>Match Outputで増やすことができる)。

詳しい機能を見る

詳細1:入力したデータ(Data)を、階層ごとに分解して出力する。入力の階層と出力端子の数が合っていないとオレンジ色の警告が出るが、右クリック>Match Outputで自動で出力端子の数を合わせることができる。

詳細2:[Explode Tree]は全てのブランチを分けて出力する事が可能だが、必要なブランチだけ抽出したい場合は[Tree Branch]でパスを指定して取り出す事ができる。更に、ブランチ内のアイテムまでindexを指定して抽出したい場合は、[Tree Item]を使用する。

Flip Matrix

B

Sets>Tree

列と行を取り替えるように、階層構造を変換する。それぞれの階層のインデックスが同じものを、階層にまとめる形となる。

詳しい機能を見る

詳細1:行と列を反転するように、ブランチとアイテムを反転して、階層構造を変換する。例えば、5つのブランチに3つのアイテムがあるリストは、3つのブランチで5つのアイテムのリストに変換される。それぞれのブランチのインデックスが同じものを、1つのブランチにまとめる形となる。

詳細2:円弧上を分割した点のリストとカーブ上を分割した点のリストを[Flip Matrix]で反転し、格子状のアーチを作成した例。

Merge

A

Sets>Tree

入力した複数のデータを、階層名ごとにまとめて並べ直す。データ管理上、非常に重要なコンポーネント。

詳しい機能を見る

詳細1:データが同じツリー構造にある複数のデータを結合する。

詳細2:長方形とそれをオフセットした2つのカーブを[Merge]コンポーネントで結合したものに、[Boundary]コンポーネントでサーフェスを張り、[Extrude]コンポーネントで押し出しを行った例。

Match Tree

C

Sets>Tree

入力データ(Tree)とデータ(Guide)が同じTree構造の時、データを出力する。

Path Mapper

A

Sets>Tree

階層の変更方法を直接記述することによって、データ構造で編集するコンポーネント。

詳しい機能を見る

詳細1:データ構造を変更した例。

Shift Paths

B

Sets>Tree

データ(Data)の階層を、指定した数(Offset)だけ減らす。Offset値が負の数の場合は深い階層から(TrimTreeと同じ挙動)、正の数の場合は浅い階層から削除する。

詳しい機能を見る

詳細1:[Graft]の逆で、パスを1つ除く事ができる。[Flatten]は全ての階層をなくしてフラットにするが、[Shift Paths]は指定した数だけ階層を減らすことができる。
Offset値が負の数の場合は深い階層から(TrimTreeと同じ挙動)、正の数の場合は浅い階層から削除する。

Split Tree

B

Sets>Tree

入力データ(Data)を階層名を指定し(Masks)、指定した階層のデータをPositiveから、それ以外をNegativeから出力する。Masksに入力するのは、{ }で指定する値。

詳しい機能を見る

詳細1:入力データ(Data)と階層名を指定し(Masks)、該当データをPositiveから、それ以外をNegativeから出力する。例では{0;2}に該当するBのみ出力。

詳細2:Masksに複数入力したときは、どちらかに該当するものが出力される。例では、{0;2}{0;3}に該当するものが出力。

詳細3:*で指定した場合は、そこに入る値は何でも指定可能。例では{*;2}と指定しているので、1つ目は問わず2つ目が2の階層が該当する形となる。また*個所は階層の数は無視するため、{*;2}だと{0;0;0;2}なども反応するため注意が必要。

Stream Filter

A

Sets>Tree

複数のデータを入力しておき、Gateの値で指定した端子のデータを出力する。

詳しい機能を見る

詳細1:複数のデータを入力しておき、Gateの値で指定した端子のデータを出力する。入力は単数のみで、スライダーやValue List、ブールスイッチなどが使用可能。図は、[Stream Filter]の入力に3種類のカーブを登録し、スライダーで変更しながらテーブルデザインの切替えを行った例。

詳細2:[Stream Filter]の入力に[Larger Than]を使用して、指定した高さまでは”False=0”、それを超えたら”True=1”として、高さによって部材の形状が切り替わるように設定した例。

詳細3:[Stream Filter]の入力に[Boolean Switch]を使用してフィレットのオン/オフを切り替えた例。途中に[Stream Gate]を使用する事で、オブジェクトの入れ替えが必要になった際も入れ替えがスムーズに行える。

詳細4:[Hexagonal]のGridパネルに[ImageSampler]で読み込んだ画像のアルファチャンネルを利用して、文字のある部分のパネルのみ回転させるように設定し、[Stream Filter]の入力に[Value List]を使用して画像を切り替えた例。

Stream Gate

A

Sets>Tree

入力データ(Stream)を、Gateの値で指定した端子から出力する。

詳しい機能を見る

詳細1:出力先を0に指定し、データを吐き出した例。

詳細2:サーフェスモーフやブール演算などの計算に時間が掛かるコンポーネントの前にStream Gateを用いてスイッチを作成することも可能。ここでは、Boolean Toggleコンポーネントを用いFalseが0、Trueを1のゲートを指定する値としている。

Relative Item

C

Sets>Tree

入力データ(Tree)と階層とアイテムの数(Offset)を指定し、ABからそれぞれOffset数だけずらしたデータを出力する。Offsetに入力する値は、{階層をずらす数}(インデックスをずらす数)を入力する。Shift Listの階層版のような動き。

Relative Items

C

Sets>Tree

入力データAB(Tree)と階層とアイテムの数(Offset)を指定し、ABからそれぞれOffset数だけずらしたデータを出力する。Offsetに入力する値は、{階層を削除する数}(インデックスを削除する数)を入力する。

Tree Branch

B

Sets>Tree

入力したデータ(Tree)の階層名(Path)で、指定したデータを出力する。

詳しい機能を見る

詳細1:データツリーから、パスを指定して特定のブランチのアイテムを抽出する。デフォルトの”Maintain”では元のパスを保持、チェックを外すと”Renumber”となり、抽出したデータに新たにパス番号を振り直す。

詳細2:パス番号を直接指定するだけでなく、”Tree Statics”と”Cull Pattern”と組み合わせてパターンでパスをコントロールし、抽出した例。また、[Split Tree]を使用すると、パス(マスク)の指定に任意検索の”*”を使用でき、複数のパス列を一度に指定可能。

Tree Item

B

Sets>Tree

入力したデータ(Tree)から階層名(Path)とインデックス(Index)を指定して該当データを出力する。

詳しい機能を見る

詳細1:入力したデータ(Tree)から階層名(Path)とインデックス(Index)を指定して該当データを出力する。 パスの指定は、0;0;2のようにセミコロン(;)で階層を区切って記述する。

Construct Path

B

Sets>Tree

入力値(Indices)を、階層名{ }の形式に変更する。 複数の値を入れた場合は、階層ごとの値となる。例)0と2を入力すると、{0;2}が出力。

詳しい機能を見る

詳細1:入力値(Indices)を、階層名{ }の形式に変更する。 複数の値を入れた場合は、階層ごとの値となる。例)0と2と3を入力すると、{0;2;3}が出力。”Graft”や”Flatten”を組み合わせると、様々は形式の階層を出力できる。[Data Path]も階層を出力できるが、入力リストと同じリストの形で階層に変換される。

詳細2:図は、[Tree Statics]で出力した階層を[Deconstruct Path]で一旦整数に変換し、Expressionオプションで2倍にした後、[Construct Path]でパスを生成、[Replace Path]で入れ替えた例。

詳細3:図は[Construct Path]に[Merge]と数値スライダーを接続し、任意のパスを指定しながら、ブランチごと、ブランチ内のインデックスごと、ブランチ以外のオブジェクトなど、様々な方法でオブジェクトを選択できるように設定した例。

Deconstruct Path

C

Sets>Tree

階層名を入力すると、それぞれ整数に分解し出力する。 Construct Pathの逆の働き。例){0;0;1}を入力すると、0と0と1が出力。

Path Compare

B

Sets>Tree

階層名(Path)と比較する階層名(Mask)を入力し、同じかどうかをTrue,Falseで出力する。例){0;1}と{0;1}を入力すると、同じなのでTrueが出力。

詳しい機能を見る

詳細1:階層値(Path)と比較する階層値(Mask)を入力し、同じかどうかをTrue,Falseで出力する。複数の階層の場合は{0;0}のような記述となる。例では{1}と{1}、{0;1}と{0;1}のみ等しいので、Trueと出力。それ以外はFalseとなる。

詳細2:また階層値の指定には、* も使用可能。*は何でも良いという意味。例では{*;1}なので、{1;1}が該当しTrueとなる。

詳細3:[Tree Statics]で階層値を求め、{*;1;1}に該当する階層だけ出力した例。[Cull Pattern]で該当しない階層値を削除後に、[Tree Branch]で該当する階層のデータだけを指定している。

Replace Paths

B

Sets>Tree

データ(Data)を入力し、検索する階層名の条件(Search)に合うものを、別の階層名(Path)に変換する。

詳しい機能を見る

詳細1:データ(Data)を入力し、検索する階層名の条件(Search)に合うものを、別の階層名(Path)に変換する。例では、{0;2}という階層を{1;2}に変更している。

詳細2:*を使うことで、その値がどういったものでも対象とすることが可能。例では{*;1}なので、{0;1}と{1;1}が該当し、{3}に変更されている。

詳細3:また*個所は桁数も無視して、検索される。{*;2}の場合は、{1;2}だけでなく{0;0;2}も該当し、{3}に変更されてるので注意。