STUDIO TAMA

thumbnail

投稿日:2022-01-02

【Grasshopper Tutorial】 Twisted Tunnel

  • #Grasshopper

  • #GH Modeling

  • #Basic

今回は上画像の様な、ねじれたトンネルを作成していこうと思います。難易度はそこまで高くはないですが、データ構造の理解が必須です。データ構造を理解したうえでやっていただいた方がより理解ができるかと思います。こちらのチュートリアルは動画化しておりますので、動画の方がよい方は以下のリンクからどうぞ!

概要

thumbnail

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

各ブロックごとに説明していこうと思います。

基準となる多角形の作成

thumbnail
  1. Arc コンポーネントで原点を(0,0,0)とした円弧を作成します。今回は半径 10m、角度を 80 度の円弧としました。
  2. Perp Frames コンポーネントで円弧に沿って等間隔の平面を作成します。今回は 67 等分しております。ここで接続している Number Slider コンポーネントは Odd Number にして奇数のみが入力できるようにしておきます。
  3. Polygon コンポーネントで、作成した平面を中心とした多角形を作成します。今回は半径 3m の 10 角形を作成しました。

多角形を回転させる

thumbnail
  1. Rotate コンポーネントで、作成した多角形を先ほど作成した平面を中心に回転します。
  2. Range コンポーネントで回転角のリストを作成します。ドメインに 0 度90 度を入力し、Step 数は平面を作成した際の分割数を入力します。これで、0 度90 度までを 67 分割した 68 個の値を含む角度のリストが作成されました。
  3. Radians コンポーネントで弧度法に変換します。
  4. Boundary Surfaces コンポーネントで回転させた多角形にサーフェイスを張ります。
thumbnail
  1. Scale コンポーネントを使用し、作成した多角形サーフェイスを中央部に行くにつれて縮小させていきます。
  2. Area コンポーネントで多角形の中心を取得し Scale コンポーネントに接続します。
  3. 縮小倍率のリストを作成します。List Length コンポーネントでサーフェイスの数を取得します。
  4. Division コンポーネントで取得したサーフェイスの数を 2 で割ります。
  5. Subtraction コンポーネントで1を引きます。
  6. Range コンポーネントで角度のリストを半分作成します。ドメインには 1.0 倍~0.6 倍までを入力し、Step 数は先ほど 1 を引いた数値を入力します。
  7. Reverse List コンポーネントで角度リストを反転させます。
  8. Merge コンポーネントで作成した角度のリストと反転させたリストを結合します。
  9. Scale コンポーネントに結合した角度のリストを接続します。

多角形を切断するための切断線を取得

thumbnail
  1. XY Plane コンポーネントで(0,0,-1500)を原点とした XY 平面を作成します。
  2. Brep | Plane コンポーネントで Scale コンポーネントで縮小したサーフェイスと作成した平面との交線を取得します。

サーフェイスを切断

thumbnail
  1. Scale コンポーネントで先ほど縮小した多角形を更に縮小します。Area コンポーネントで求めた各多角形の中心点を基点に 0.95 倍します。
  2. Surface Split コンポーネントで多角形サーフェイスを切断していきます。0.95 倍する前と後の多角形サーフェイスを先ほど取得した交線でそれぞれ切断していきます。データ構造を合わせるためにサーフェイスの入力端子を Graft します。
  3. Entwine コンポーネントで切断した各サーフェイスをまとめます。コンポーネントの下部に Flatten のタブがあるかと思いますが、右クリックでメニューを出し、Flatten Inputs のチェックを外します。

切断したサーフェイスのエッジを取得

thumbnail
  1. List Item コンポーネントで 0 番目を取得することで切断したサーフェイスの片方を取得します。
  2. Brep Edge コンポーネントで切断したサーフェイスのエッジを取得します。
  3. Length コンポーネントでエッジの長さを取得します。
  4. Sort List コンポーネントで取得したエッジの長さを Key としてエッジを短い順にリストを並べ替えます。
  5. Cull Index コンポーネントで‐1 番目を消去することで、並べ替えたリストの最後の値を消去します。エッジのリストの中から最も長い直線、多角形の一番底の直線を消去しました。
  6. Join Curves コンポーネントでエッジを結合します。出力端子は Flatten しておきます。

エッジのリストの整理

thumbnail
  1. 取得したエッジのリストを Partation List コンポーネントで外側と内側のエッジを分けます。
  2. List Length コンポーネントでエッジの数量を取得します。
  3. Division コンポーネントで取得したエッジの数を 2 で割ります。Partation List コンポーネントの Size に接続します。

エッジの複製

thumbnail
  1. Rotate 3D コンポーネントで取得したエッジを複製します。角度は 0.7 度、中心点は最初に円弧を作成した際の中心点(0,0,0)、回転軸は Z 軸を指定します。先ほどのエッジとエッジの間に更にエッジが複製されたかと思います。

作成したエッジの整理

thumbnail
  1. Explode Tree コンポーネントで Partation List コンポーネントから取得できるエッジと Rotate 3D コンポーネントから取得できる複製したエッジをそれぞれ、外側と内側のエッジをそれぞれ取得します。

各エッジ間にサーフェイスを張る

thumbnail
  1. Ruled Surface コンポーネントで各エッジの間にサーフェイスを張ります。
  2. Merge コンポーネントで作成したサーフェイスをまとめて完成です。

完成

thumbnail
thumbnail
thumbnail

完成です!変数を変えていろんな形状を試してみてください。よく見かける形状だと思いますので、いろんな方のチュートリアルと比べてながら、より効率よく実装してみてください。

目 次