STUDIO TAMA

thumbnail

投稿日:2021-12-04

【Grasshopper Tutorial】 Waffle Structure (Part1)

  • #Grasshopper

  • #GH Modeling

  • #Basic

今回は、Grasshopper のチュートリアルでは定番の Waffle Structure を記事にしてみました。今回の記事内では、交差する部材の切り欠き部までモデル化してます。難易度はそこまで高くないですが、データ構造の理解が必要です。また、別の記事にはなるかと思いますが、1 つ 1 つの部材をばらし、単品図にし部材番号を振るところまで記事にしていこうと思っております。 今回の記事は動画化しておりますので、動画の方がわかりやすいって方は以下のリンクから是非ご覧ください!

概要

thumbnail

上画像がコードの全体像です。大まかな流れは以下の様になっております。

  1. ベースサーフェイス作成 ①(球の垂直方向切断)
  2. ベースサーフェイス作成 ②(球の水平方向切断)
  3. ベースサーフェイスを分割するための平面取得
  4. ベースサーフェイスの切断し waffle 部材のサーフェイスを作成
  5. waffle 部材作成
  6. 直行方向の waffle 部材作成
  7. waffle 部材の切り欠き ①
  8. waffle 部材の切り欠き ②

ベースサーフェイス作成 ①(球の垂直方向切断)

thumbnail
  1. 「Sphere コンポーネント」を使用し、原点(0,0,0)を中心とした半径 10m の球を作成します。
  2. 「Rectangle コンポーネント」を使用し、原点(0,0,0)を中心とした 14m×14m の正方形を作成します。X 方向・Y 方向のサイズは「Construct Domain コンポーネント」を使用して「-7 m~ 7 m」のドメインを入力することで 14m のサイズとしてます。
  3. 「Extrude コンポーネント」を使用して、作成した正方形を Z 方向に押し出します。球の頂点を超えるぐらいまで押し出します。
  4. 「Split Brep コンポーネント」で、押し出したサーフェイスで球をカットしていきます。
  5. 「List Item コンポーネント」でリストの 0 番目を取得し、上画像の緑色の様なサーフェイスが取得できていれば OK です。

ベースサーフェイス作成 ②(球の水平方向切断)

thumbnail
  1. 先ほど作成したサーフェイスを水平方向に切断します。「Scale コンポーネント」を使用し、「Rectangle コンポーネント」で作成した正方形を球の断面より大きくなる位置まで拡大します。
  2. 「Move コンポーネント」で拡大した正方形を Z 方向に移動させます。今回は+ 4mZ 方向に移動させました。
  3. 「Split Brep コンポーネント」で「List Item コンポーネント」で取得している球のサイドを切断したサーフェイスを、移動させた正方形で切断します。
  4. 「List Item コンポーネント」でリストの 0 番目を取得します。上画像の緑部の様に切断できていれば OK です。これでベースとなるサーフェイスを取得できました。

ベースサーフェイスを分割するための平面取得

thumbnail
  1. 「Brep Edges コンポーネント」で先ほど作成したサーフェイスのエッジを取得します。
  2. 「List Item コンポーネント」で、取得したエッジの中から対角上に位置する短いラインを 2 本取得します。
  3. 「Curve Middle コンポーネント」で取得したラインの中点を作成します。
  4. 「Line コンポーネント」で取得した中点同士を結ぶ直線を作成します。
  5. 「Perp Frames コンポーネント」で直線に沿った等間隔に位置する平面を作成します。今回は 20 分割し 21 平面作成しました。

ベースサーフェイスの切断し waffle 部材のサーフェイスを作成

thumbnail
  1. 「Brep | Plane コンポーネント」で先ほど作成した平面とベースサーフェイスの交線を取得します。
  2. 端部の平面 2 つは、ベースサーフェイスと点で接しているので、端部は交線が取得できず空のブランチのみが生成されてしまっております。「Flatten Tree コンポーネント」を接続し、一度「Flatten」することで空のブランチを消去し、「Graft Tree コンポーネント」で「Graft」しなおします。
  3. 「Move コンポーネント」で取得した交線を Z 方向に押し出します。今回は 1m(1000mm)移動させています。
  4. 「Loft コンポーネント」で移動前の交線と移動後のものとの間にサーフェイスを張ります。

waffle 部材作成

thumbnail
  1. Loft して取得したサーフェイスを中心にくるように、waffle の部材に厚みを持たせていきます。「Move コンポーネント」で先ほど作成したサーフェイスを移動させていきます。入力端子 G に「Loft コンポーネント」の出力端子を接続しておきます。
  2. 移動させるベクトルを作成します。序盤に作成したベースサーフェイスを対角上に結ぶラインの出力端子を「Vector コンポーネント」に接続してベクトル化します。
  3. 「Amplitude コンポーネント」でベクトルの長さを再設定します。今回は移動距離を 50mm としました。
  4. 「Move コンポーネント」に作成したベクトルを接続します。
  5. 「Extrude コンポーネント」を使用し、移動させたサーフェイスを押し出していきます。「Move コンポーネント」の出力端子を接続します。
  6. 「Extrude コンポーネント」の押し出し距離は、先ほど移動させた距離の 2 倍となり、移動方向は先ほどのベクトルと反対方向になります。「Multiplication コンポーネント」・「Amplitude コンポーネント」・「Reverse コンポーネント」でベクトルを作成し、接続します。
  7. 上画像の様に厚みのある waffle 部材ができていれば OK です。

直行方向の waffle 部材作成

thumbnail
  1. 「Rotate コンポーネント」で先ほど作成した waffle 部材を 90 度回転させて、直行方向の部材も作成していきます。
  2. 上画像の様に先ほど作成した部材に、直行する部材ができていれば OK です。

waffle 部材交差部の切り欠き ①

thumbnail
  1. 作成した waffle 部材を部材高さの半分 Z 方向に移動させます。片方は上方向、もう片方は下方向に移動させます。
  2. 「Move コンポーネント」を用意し、先ほど 90 度回転させて作成した直行方向の waffle 部材を移動させます。「Rotate コンポーネント」の出力端子を「Move コンポーネント」の入力端子 G に接続します。
  3. 「UnitZ コンポーネント」で Z 方向のベクトルを作成します。移動距離は、交線を Z 方向に押し出した距離 1m の半分 500mm となります。
  4. 「Move コンポーネント」にベクトルを接続します。部材高さの半分、上方向に移動できました。
  5. 「Move コンポーネント」をもう1つ用意します。今度は「Extrude コンポーネント」の出力端子から取得される回転前の waffle 部材を接続します。
  6. 移動距離は Z 方向で下に 500mm となります。「Negative コンポーネント」で先ほど取得したベクトルを負の値にし接続します。部材を 500mm 下方向に移動させました。

waffle 部材交差部の切り欠き ②

thumbnail
thumbnail
  1. 「Solid Difference コンポーネント」を2つ使用して切り欠き部を作成していきます。1つめは、入力端子 BrepsA に「Extrude コンポーネント」から得られる、回転前の waffle 部材を入力し「Graft」します。入力端子 BrepsB に部材を回転させて 500mm 上に移動させた waffle 部材を入力し「Flatten」します。これで 2 枚目の画像の様に回転前の waffle 部材に切り欠き部ができました。
thumbnail
  1. 続いてもう一方の部材を切り欠いていきます。「Solid Difference コンポーネント」の入力端子 BrepsA に「Rotate コンポーネント」から得られる、90 度回転させた waffle 部材を入力し、「Graft」します。入力端子 BrepsB に回転前の部材を 500mm 下に移動させた waffle 部材を入力し「Flatten」します。
  2. 上画像の様に今度は下側が切り欠かれました。これで両部材がしっかりかみ合うようになり完成となります。
thumbnail
thumbnail

以上になります。waffle structure はたくさんの方がいろんな形状でチュートリアルを出してます。あらゆる形状にチャレンジしてみてください!

【参考文献】

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