[Grasshopper]指定した点に向きを変えるボックスのデザイン方法[データも配布]

[Grasshopper]指定した点に向きを変えるボックスのデザイン方法[データも配布] grasshopper
本サイトはプロモーションが含まれています

今回は、グラスホッパーで指定した点に向きを変えるボックスのデザイン方法について解説します。

本記事では、コンポーネントはアイコン表示になっています。


↑YouTube始めました。

本サイトIArchwayでは、GrasshopperやRhinocerousのサポートや相談をココナラで受け付けています。


動画で見る

全体の様子

全体の様子1
全体の様子2

上2枚の画像は、グラスホッパーの様子です。

全体の様子3
全体の様子4

上2枚の画像は、ライノセラス上に書き出した様子です。

全体の様子5
全体の様子6
全体の様子7
全体の様子8

上4枚の画像は、指定する点の位置を変えた際の様子です。

レンダリング

上の画像は、最終的にレンダリングした様子です。

それでは、順番に解説していきます。

今回使用したグラスホッパーとライノセラスのデータダウンロードはこちら

ダウンロードできるデータのご利用に関しては、利用規約をご覧ください。

全体コンポーネント

全体コンポーネント:①RectangleUnit ZExtrudeDeconstruct BrepAreaScaleExplode TreeMD SliderEvaluate SurfaceMoveLineCurve MiddleDivide SurfaceDivide CurveVector 2Pt ⑯Plane Normal ⑰Center BoxMergeFlip MatrixPolyLinePipeCap Holes

全体コンポーネント1
画像をクリックして拡大して見る
全体コンポーネント2
画像をクリックして拡大して見る

4つの正方形のサーフェスのスケールを変える

最初に、4つの正方形のサーフェスを作成し、スケールを変えていきます。

スケールを変える理由は、スケールを変えないと、最終的に作成するボックスが、両端で重複してしますからです。

正方形の線データ

RectangleのXとY端子に、辺の長さの数値を入力します。

今回は、どちらにも10000の数値を入力しています。

すると、上の画像のように、正方形の線データが作成されました。

押し出す

その後、先程の10000の数値を、Unit Zにつなげます。

さらに、Unit Zを、ExtrudeのD端子につなげます。

さらに、RectangleのR端子を、ExtrudeのB端子につなげます。

すると、上の画像のように、正方形の線データが押し出されました。

分解

その後、Extrudeを、Deconstruct Brepにつなげます。

すると、押し出されたモデルが分解され、Deconstruct BrepのF端子から4つのサーフェスが出力されます。

中心点

その後、Deconstruct BrepのF端子を、Areaにつなげます。

すると、上の画像のように、各サーフェスの中心点を取得できます。

スケールが変わった

その後、AreaのC端子を、ScaleのC端子につなげます。

さらに、Deconstruct BrepのF端子を、ScaleのG端子につなげます。

さらに、倍率の数値を、ScaleのF端子につなげます。

今回は、0.9の数値を入力しています。

すると、上の画像のように、各サーフェスのスケールが小さくなりました。

Graft

この際に、Scaleの右側のG端子を右クリックし、Graftに設定してください。

Match outputs

その後、ScaleのG端子を、Explode Treeにつなげます。

この際に、Explode Treeを右クリックし、Match outputsに設定してください。

すると、4つの階層があるため、Explode Treeの右側に4つの端子が表れます。

4つのサーフェス

Explode Treeの右側の端子からは、1つの端子から各サーフェスデータが出力されます。

これで、4つの正方形のサーフェスのスケールを変えることができました。

向きの基準となる線を作成する

次に、向きの基準となる線を作成していきます。

Reparameterize

最初のRectangleのR端子を、Evaluate SurfaceのS端子につなげます。

この際に、Evaluate SurfaceのS端子を右クリックし、Reparameterizeに設定してください。

さらに、MD Sliderを、Evaluate Surfaceのuv端子につなげます。

正方形内の点

すると、上の画像のように、正方形内の点を取得できます。

今回は、MD Sliderの値が0.5 ; 0.5になっているため中心点が取得されていますが、値を変えることで正方形内の様々な場所の点を取得できます。

点を真上方向に移動

その後、先程のUnit Zを、MoveのT端子につなげます。

さらに、Evaluate SurfaceのP端子を、MoveのG端子につなげます。

すると、上の画像のように、点が真上方向に移動しました。

2つの点をつなぐ線

その後、Evaluate SurfaceのP端子とMoveのG端子を、Lineにつなげます。

すると、上の画像のように、2つの点をつなぐ線が作成されました。

線の中点

その後、Lineを、Curve Middleにつなげます。

すると、上の画像のように、線の中点を取得できます。

線のスケールが変わった

その後、Lineを、ScaleのG端子につなげます。

さらに、Curve Middleを、ScaleのC端子につなげます。

さらに、先程使用した倍率の0.9の数値を、ScaleのF端子につなげます。

すると、上の画像のように、線のスケールが変わりました。

これで、向きの基準となる線を作成することができました。

サーフェスと線を分割する点を作成する

次に、サーフェスと線を分割する点を作成していきます。

サーフェスの分割点

4つのDivide Surfaceを用意します。

そして、Explode Treeの右側の4つの端子を、それぞれ各Divide SurfaceのS端子につなげます。

さらに、分割数の数値を、各Divide SurfaceのUとV端子につなげます。

今回は、どちらにも15の数値を入力しています。

すると、上の画像のように、各サーフェスを15×15に分割する位置に、点が作成されます。

線の分割点

その後、線の方のScaleのG端子を、Divide CurveのC端子につなげます。

さらに、先程の15の分割数の数値を、Divide CurveのN端子につなげます。

すると、上の画像のように、線を15に分割する位置に、点が作成されました。

Graft

この際に、Divide CurveのP端子を右クリックし、Graftに選択してください。

これで、サーフェスと線を分割する点を作成することができました。

サーフェス上の点にボックスを作成する

最後に、サーフェス上の点にボックスを作成していきます。

ボックス作成

4つのVector 2Ptを用意します。

Divide CurveのP端子を、各Vector 2PtのA端子につなげます。

さらに、各Divide SurfaceのP端子を、各Vector 2PtのB端子につなげます。

すると、サーフェス上の点から、中心にある同じ高さの点までのベクトルが作成されます。

その後、4つのPlane Normalを用意します。

そして、各Vector 2PtのV端子を、各Plane NormalのZ端子につなげます。

さらに、各Divide SurfaceのP端子を、各Plane NormalのO端子につなげます。

すると、サーフェス上の点の位置に、作成したベクトルをZ軸とする作業平面が作成されます。

その後、4つのCenter Boxを用意します。

そして、各Plane Normalを、各Center BoxのB端子につなげます。

さらに、各Center BoxのXYZ端子に、各辺の長さの半分の長さの数値を入力します。

今回は、XとY端子に50、Z端子に1000の数値を入力しています。

すると、上の画像のように、100×100×2000のボックスが作成されました。

その後、4つのCenter Boxを、Mergeにつなげてデータを結合します。

縦方向の線

その後、4つのFlip Matrixを用意します。

そして、各Divide SurfaceのP端子を、各Flip Matrixにつなげます。

すると、サーフェス上の点データの行と列が入れ替わります。

その後、4つのPolyLineを用意します。

そして、各Flip Matrixを、各PolyLineのV端子につなげます。

すると、上の画像のように、縦方向の線が作成されます。

この際に、Flip Matrixを使わないと、横方向の線になってしまいます。

パイプ

その後、4つのPipeを用意します。

そして、各PolyLineを、PipeのC端子につなげます。

さらに、半径の数値を、PipeのR端子につなげます。

今回は、10の数値を入力しています。

すると、上の画像のように、各ボックスを通るパイプが作成されました。

完成

その後、4つのPipeを、Mergeにつなげてデータを結合します。

その後、Mergeを、Cap Holesにつなげて、パイプの穴を塞ぎます。

これで完成です。

今回は以上になります。

Comment

Translate »