GH Basics GH Tutorial Grasshopper

【Grasshopper Tutorial】 Waffle Structure (Part2: 2D Drawing and Numbering )

今回は、以前作成したWaffle Structureを部材ごとに平面に描写し、各部材にナンバリングしていきます。色々なやり方があるかと思います、今回紹介するのはたくさんあるやり方のうちの1パタンです。たくさんの人が色々なパターンでチュートリアルを出しているかと思います。自分に合ったやり方で実装してみていただければと思います。前回の記事をまだ見ていないって方は、以下のリンクからご覧いただければと思います。また、こちらのチュートリアル動画化してますので、動画の方がよい方は以下のリンクからどうぞ!

概要

上画像がコードの全体像となっております。waffleの部材2方向に対して同じ処理をしているので、半分実装してコピーしています。

一番最初にある「Cluster」には、前回実装したwaffle structureが入っております。今回はそのコードに対して実装していこうと思います。念のため「Cluster」の中身も以下にのせておきます。

大まかな流れな以下の様になります。

  1. 2D描写するサーフェイスを取得
  2. 取得したサーフェイスを平面に移動
  3. Numberingリストの作成
  4. Numberingリストのアタッチ
  5. コードをコピーして別方向にも同じ処理施す

2D描写する面を取得

2方向ある部材のうち片側のみ取得し処理を書いていきます。

  1. 「Brepコンポーネント」で前回のコードから片方向の部材を取得しておきます。
  2. 「Deconstruct Brepコンポーネント」で取得した要素を(サーフェイス・エッジ・ポイント)に分解します。
  3. 「Areaコンポーネント」で分解したサーフェイスの面積を取得します。
  4. 「Sort Listコンポーネント」で取得したサーフェイスを面積小さい順にリスト内を並べ替えます。入力端子Kに「Areaコンポーネント」で取得した面積のリストを接続し、入力端子Aに「Deconstruct Brepコンポーネント」で取得した部材のサーフェイスを接続します。
  5. 「Reverse Listコンポーネント」「Sort Listコンポーネント」の出力端子Aから取得できる小さい順に並べ替えたリストを反転させ、大きい順に並べ替えます。
  6. 「List Itemコンポーネント」で0番目を取得することで、分解したサーフェイスの最も大きなサーフェイスを取得することができました。(※今回平面に描写したいサーフェイスは明らかに最も大きな面積なのでこのような方法で実装しています。)

上画像の様な面が取得できていればOKです。

取得したサーフェイスを平面に移動

  1. 取得したサーフェイスをXY平面に移動させます。「Areaコンポーネント」で取得したサーフェイスの中心点を取得します。
  2. 「Plane Originコンポーネント」でサーフェイス面の平面を取得します。入力端子Bに取得したサーフェイスを接続し、入力端子Oに取得した中心点を接続します。
  3. 「Orient コンポーネント」で取得したサーフェイスをXY平面に移動させます。入力端子Gに各サーフェイスを、入力端子Aに「Plane Originコンポーネント」で取得したサーフェイスの平面を接続し、入力端子Bには「XY Planeコンポーネント」を接続します。
  4. 現状、原点(0,0,0)地点ですべてのサーフェイスが重なってしまっているかと思うので、重ならないように移動させます。「Moveコンポーネント」を使用し、入力端子Gに「Orient コンポーネント」の出力端子を接続します。
  5. 「Seriseコンポーネント」で移動距離のリストを作成します。今回は、入力端子Sに10,000、入力端子Nに2000を接続します。
  6. 「Seriseコンポーネント」の入力端子C(カウント)は、サーフェイスの数を入力します。「List Itemコンポーネント」でサーフェイスの数を取得し、接続します。このとき「List Itemコンポーネント」の入力端子は「Flatten」します。
  7. 「Unit Xコンポーネント」で取得した距離のリストをX方向のベクトルにします。
  8. 「Moveコンポーネント」の入力端子Tに接続します。
  9. 上画像の様に各部材のサーフェイスがXY平面に描写されていればOKです。

Numberingリストの作成

  1. 「Repeatコンポーネント」を使用し、ナンバリングの頭番号をサーフェイスの枚数分リピートします。入力端子Dに「Panelコンポーネント」を使用して「A-」という文字列を接続します。入力端子Lには、先ほど「List Lengthコンポーネント」で取得したサーフェイスの数量を接続します。「A-」という値がサーフェイスの枚数分入ったリストが作成されました。出力端子を「Graft」しておきます。
  2. 「Seriseコンポーネント」を使用して「1~サーフェイスの枚数」までのリストを取得します。出力端子は「Graft」しておきます。
  3. 「Mergeコンポーネント」で作成した2つのリストを結合します。
  4. 「Text joinコンポーネント」で2つのリストを結合します。入力端子Tに「Mergeコンポーネント」の出力端子を接続します。
  5. 「Panelコンポーネント」で出力結果を確認してみます。上画像ように、「A-1、A-2、A-3・・・」というリストが取得できていればOKです。

Numberingリストのアタッチ

  1. 作成したNumberringリストを部材にアタッチしていきます。「Text Tag 3Dコンポーネント」を用意します。入力端子Tに作成したナンバリングリストを接続します。
  2. 入力端子L(Location)にテキストをアタッチする位置を入力します。「Evaluate Surfaceコンポーネント」を使用し、XY平面に描写したサーフェイス内の点を取得します。入力端子SにXY平面に描写したサーフェイスを接続し、「Reparametrized」します。
  3. 入力端子uvに「MD Sliderコンポーネント」を接続します。「MD Slider」を動かすことで、サーフェイス内の特定の点を取得でき、文字の位置を調整できます。
  4. 「XY Planeコンポーネント」を接続し、取得した点を原点としたXY平面を作成します。
  5. 「Rotate Planeコンポーネント」で作成した平面を回転させます。今回はπ/2回転させてます。
  6. 「Text Tag 3Dコンポーネント」の入力端子Lに接続します。
  7. 「Text Tag 3Dコンポーネント」の入力端子Sに、文字サイズを入力します。
  8. 「MD Sliderコンポーネント」の値を変更して、文字の位置を調整します。

コードをコピーして別方向にも同じ処理施す

  1. 別方向にも同じ処理を施します。「Brepコンポーネント」で別方向の部材を取得します。
  2. 上画像の様にそこから後は先ほど作成したプログラムをコピーして接続します。
  3. ナンバリングリストを作成した際の頭番号「A-」を「B-」にします。
  1. コピーしたままでは、XY平面に描写したサーフェイスが、先ほど作成したものと重なってしまうので、移動させます。上画像の様に「Moveコンポーネント」で重ならない位置までY方向に移動させます。これで完成です。

以上になります!色々やり方はあるかと思いますので、適宜ふさわしいやり方で実装していただければと思います!

  • AppliCraft : https://www.applicraft.com/

-GH Basics, GH Tutorial, Grasshopper
-,