STUDIO TAMA

thumbnail

投稿日:2021-12-19

【Grasshopper Tutorial】 Waffle Tree

  • #Grasshopper

  • #GH Modeling

  • #Basic

今回は、上画像の様な Waffle Structure を使用した Tree を作成していきます。難易度は高くはないですが、データ構造の理解は必須となっております。このチュートリアルは動画化しているので、動画の様がよい方は以下のリンクからご覧いただければと思います。

概要

thumbnail

上画像がプログラムの全体像となっております。

それでは各グループごとに解説していこうと思います。

基準となる円の作成

thumbnail
  1. 「Circle コンポーネント」・「Construct Point コンポーネント」・「XY Plane コンポーネント」を用い(0,0,0)を中心とした XY 平面に半径 500mm の円を作成します。
  2. 「Move コンポーネント」で作成した円を Z 方向に 5000mm 移動させます。
  3. 「Scale コンポーネント」で Z 方向に移動させた円を拡大させます。上画像では 5 倍にしています。中心点は「Area コンポーネント」で円の中心を取得し、入力します。
  4. 3 つの円ができたかと思いますので、「Divide Curve コンポーネント」を 3 つ用意し、それぞれの円を分割し分割点を取得します。今回は 15 等分しています。

縦方向部材の基準線作成

thumbnail
  1. 取得した分割点をそれぞれ「Flip Matrix コンポーネント」でリストのデータ構造を変換します。
  2. データ構造を変換したリストを「Nurbs Curve コンポーネント」に接続し、縦方向部材の基準線を作成します。上画像の様な曲線ができていれば OK です。

縦方向部材の基準サーフェイス作成 ①

thumbnail
  1. 「Scale コンポーネント」を用いて、小さい円の分割点2つを縮小します。中心点はそれぞれの円の中心を指定し、0.5 倍に縮小します。
  2. 「Move コンポーネント」で、大きな円の分割点・先ほど作成した小さな円の分割点のうち上側にある方を、Z 方向に 500mm 移動させます。上画像のような緑の点が取得できるかと思います。

縦方向部材の基準サーフェイス作成 ②

thumbnail
  1. 「Rectangle 3 Pt コンポーネント」で先ほど作成した点を通る長方形を作成します。
  2. 「Boundary Surfaces コンポーネント」で作成した長方形にサーフェイスを張ります。
  3. 「Surface Split コンポーネント」で作成した長方形サーフェイスを、以前作成した Nurbs Curve でスプリットします。
  4. 「List Item コンポーネント」でリストの 1 番目を取得して、上画像の緑部分のサーフェイスが取得できていれば OK です。

縦方向部材に厚みを持たせる

thumbnail
  1. 「Extrude コンポーネント」で作成したサーフェイスに厚みを持たせていきますが、押し出し方向のベクトルを取得していきます。
  2. 「Evaluate Surface コンポーネント」で各サーフェイスの中心点を取得します。入力端子 S を「Reparametrized」し、入力端子 uv には「MD Slider コンポーネント」で(0.5,0.5)を入力します。
  3. 「Evaluate Surface コンポーネント」の出力端子 F に「Unit Vector コンポーネント」接続し、サーフェイスに対して垂直なベクトルが取得されます。
  4. 「Amplitude コンポーネント」でベクトル長さを再設定します。今回は 25mm としています。
  5. 「Extrude コンポーネント」を2つ用意し、先ほど取得したベクトルで押し出していきます。片方は、「Reverse コンポーネント」でベクトル方向を逆転させ、正方向に 25mm、負の方向に 25mm 押し出していきます。合計で厚み 50mm となります。
  6. 「Brep Join コンポーネント」で2つの押し出しを結合します。上画像の様に厚みを持っていれば OK です。これで縦方向の部材は完成です。

水平方向の部材作成 ①

thumbnail
  1. 続いて水平方向の部材を作成していきます。「Divide Curve コンポーネント」で序盤に作成した Nurbs Curve を分割します。今回は N=10 を入力し 10 分割しました。(※上画像では何も入力されてませんが、デフォルトが 10 となってます。)
  2. 「Cull Index コンポーネント」で分割点のうち、最初と最後の点を除いたリストを取得します。入力端子 i に 0 と-1 を入力します。
  3. 「Flip Matrix コンポーネント」で、取得したリストのデータ構造を変換します。
  4. 「Inerpolate コンポーネント」で分割点をつなぐ曲線を作成します。入力端子 P を「Invert」することで閉じた曲線になります。上画像の緑色の曲線が取得できていれば OK です。

水平方向の部材作成 ②

thumbnail
  1. 先ほど作成した曲線を「Scale コンポーネント」で縮小します。各中心点を「Area コンポーネント」で取得し、倍率は 0.5 倍とします。
  2. 「Boundary Surfaces コンポーネント」で縮小前の曲線と縮小後の曲線の間にサーフェイスを張ります。
  3. 作成したサーフェイスを「Extrude コンポーネント」で押し出します。- Z 方向に押し出します。今回は - 50mm 押し出しています。上画像緑色箇所の様になっていれば OK です。これで水平部材は完成です。

最上部の枠作成

thumbnail
  1. 「Curve コンポーネント」で最初に作成した大きな円を取得します。(※上画像の黄色枠で囲ったコンポーネントです。)
  2. 「Offset Curve コンポーネント」で取得した円を 50mm 外側にオフセットします。
  3. 「Boundary Surfaces コンポーネント」で 2 つの円の間にサーフェイスを張ります。入力端子を「Flatten」します。
  4. 「Extrude コンポーネント」で Z 方向に押し出します。押し出し距離は、500mm とします。(※上画像の緑枠のコンポーネントから取得してきます。)
  5. 上画像の様に円形の枠ができていれば OK です。

最上部の部材作成 ①

thumbnail
  1. 最後に最上部の部材を作成していきます。「Line コンポーネント」で縦部材天端の直線を取得します。
  2. 「Divide Curve コンポーネント」で取得した直線を分割します。N に 10 が入力されており、10 分割されています。
  3. 「Cull Index コンポーネント」で分割点の最初と最後を消去したリストを取得します。Index に 0,-1 を入力します。

最上部の部材作成 ②

thumbnail
  1. 部材の基準線を作成します。「List Length コンポーネント」で点の数を取得します。「Serise コンポーネント」で長さのリストを作成します。入力端子 S に 50、入力端子 N に 50、入力端子 C には「List Length コンポーネント」で取得した点の数を入力します。
  2. 「Line SDL コンポーネント」を 2 つ用意し分割点を中心とした直線を作成します。入力端子 S には分割のリストを接続し、入力端子 L に「Serise コンポーネント」で作成した長さのリストを入力します。入力端子 D には直線の方向を接続しますが、縦方向の部材に厚みを持たせた際に使用したベクトルを使います。(※上画像の緑枠・黄色枠を参照)
  3. 「Join Curves コンポーネント」で直線をそれぞれ結合します。
  4. 上画像の様に緑色の様な直線ができていれば OK です。

最上部の部材作成 ③

thumbnail
  1. 作成した直線をランダムに回転させていきます。「Curve Middle コンポーネント」で中点を取得しておきます。
  2. 「Random コンポーネント」を用いてランダムな角度のリストを作成します。入力端子 R に「-30~30」を入力、入力端子 N には前項で取得した分割点の数を入力します。-30度~30度の間でランダムな数値のリストができました。
  3. 「Radians コンポーネント」で角度のリストをラジアンに変換します。
  4. 「Rotate コンポーネント」で先ほど取得した直線の中点を中心に、ランダムな角度のリストで回転させます。上画像の緑箇所の様に直線に角度がついていれば OK です。

最上部の部材作成 ④

thumbnail
  1. 先ほど回転させた直線をもとに部材を作成していきます。「Offset Curve コンポーネント」で 20mm オフセットします。
  2. 「Loft コンポーネント」でオフセット前の直線とオフセット後の直線との間にサーフェイスを張ります。この時、オフセット前の直線が取得できる「Rotate コンポーネント」の出力端子は「Graft」「Simplify」し、「Offset Curve コンポーネント」の出力端子は「Simplify」して接続します。
  3. 「Extrude コンポーネント」で押し出していきます。押し出し距離は、上画像の緑枠箇所のベクトルから取得し、「Reverse コンポーネント」でベクトルを反転させます。-500mm 押し出せます。
  4. 上画像の緑色部分の様に部材ができていれば OK です。

完成

thumbnail
  1. 最後に出力結果を「Brep コンポーネント」にそれぞれ格納し、「Merge コンポーネント」でまとめておきましょう。
thumbnail
thumbnail
thumbnail
thumbnail

以上になります。記事のボリュームが多くなってしまうので、今回は部材同士の結合部の切り欠きや2 D 描写・ナンバリングまではできませんでしたが、是非チャレンジしてみてください。

thumbnail

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

Grasshopperを用いてwaffle structureを図面化

目 次