GH Basics GH Tutorial Grasshopper

【Grasshopper Tutorial】 Waffle Structure (Part1)

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

概要

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

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

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

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

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

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

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

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

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

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

waffle部材作成

  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部材作成

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

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

  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部材交差部の切り欠き②

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

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

【参考文献】

-GH Basics, GH Tutorial, Grasshopper
-, ,