完成状態は以下の図のような感じになります。
すべてNurbsサーフェスによるモデリングです。
・手作業によるモデリングでもOKですが、ノードで組む場合は上の図のように、高さ90mm、下の円の直径52φ、上の円の直径80φとします。
・底から3mmの位置に、底面も作成しておきます。
・同時に、上端のカーブ同士を使って上面をLoftコンポーネントを使って作成します。
・この工程も手作業でもOKです。
・カーブを作成する際のパラメータをノードで組みます。まずは上の図のように組んでみます。
・左端のpt_numは点の数です。ここでは100としています。RangeコンポーネントのN入力でExpressionにx-1を入力しています。
・0から1までの実数を100分割し、グラフで均等な分割割合に変化をつけ、それらの値を0から120°(ラジアンに換算します)の範囲にリマップしています。
・さらに、同じく0から1の範囲を100分割した数値に100を掛け算した数値も作成します。
・原点を中心に、A入力がStep4で作成した数列、E入力が同じくStep4で作成した二つ目の数列を入力します。(下の点群のA入力はExpressionにx*-1を入力して反転させます)
・Rは、ここでは40としています。(直径を半分に)
・点をInterpolateコンポーネントでつないで曲線化します。
・回転の角度は、カーブ本数(ここでは24に設定)を360で割った数値をstepとしてSeriesコンポーネントで数列を作り、RotateコンポーネントのA入力につないでいます。
※Degreesのチェックを忘れずにONしておきます。
Step7.基準カーブのマッピング
・Step.6で作成したカーブを、Step.1で作成したコップ側面にMap to Surfaceコンポーネントを使ってマッピングします(Curv_A,Curv_Bとします)。
・コップ側面と同じ高さ、半径の円筒を作成し、Map to SurfaceコンポーネントのS入力につなぎます。
Step8.コップ側面の分割と三角形サーフェスの取り出し
・Step.3で分割したサーフェス(Surf_AとSurf_B)を、Step.7でマッピングした基準カーブでSurf Splitコンポーネントで分割していきます。・分割したサーフェスをBrep Edgeコンポーネントでエッジを取り出し、List Lengthコンポーネントでそのエッジの本数を数え、3の場合のみ、EqualityコンポーネントとDispatchコンポーネントを使って分別します。(つまり、三角形サーフェスのみ取り出します)
Step9.三角形サーフェスの上端と下端を分類
・Step.8で取り出した三角形サーフェスのうち、上端と下端部分をさらに取り出します。※ここでは、三角形サーフェスの中心点が特定の四角形に入るor入らないの判定を使って分類しています。
・Step.11で分類した4つのサーフェス群のうち、Tri_Srf_A_2とTri_Srf_B_2のエッジをBrep Edgeコンポーネントで抽出し、Join Curveコンポーネントで結合したあと、Offset on Surfaceコンポーネントで若干量、内側に移動させてからSurf Splitコンポーネントで分割します。
・上記分割した面のうち、内側をサーフェス法線方向に若干量移動させ、側面をLoftコンポーネントでつなぐと台形の3D形状が完成します。
・この時の高さは0.3mmとします。(最小高さという名前にします)
・Step.11で分類した4つのサーフェス群のうち、Tri_Srf_A_1とTri_Srf_B_1の中心点をAreaコンポーネントで取得し、サーフェスの法線方向に向かって若干量移動させてからExtrude Pointコンポーネントを使い、三角錐の形状を作成します。
・この時の高さは2mmとします。(最大高さという名前にします)
Step13.側面サーフェスを分割する
つぎは、側面の中間部分の立体化を行います。・Step.8のノードの中から、上の図のようにSurf_Aを、Curv_Aで分割した状態のサーフェスを取り出します。
Step14.分割した側面サーフェスを取り出す
・Step.13で分割したサーフェスのうち、上から下まできれいにつながっている部分をList Itemコンポーネントで取り出し、Step.7で求めたCurv_Bで分割します。・この時点で、分割したサーフェスが端から順番に並んでいないことを想定し、中心点のZ座標値を使ってソートしておきます。
・台形形状と三角錐形状を途中で切り替えるため、Split Listコンポーネントを使って二つのリストに分割します。
・次に、高さの徐変量を求めるため、MAX高さとMIN高さ(ここでは2.0と0.3)の範囲で、Rangeコンポーネント及びList Lengthコンポーネントを使って数列を作り、同じくSplit Listコンポーネントで二つに分割します(Num_A,Num_Bとします)。
・まず、サーフェスのエッジを取得し、Network Surfaceコンポーネントで面を張りなおします(後で登場する、isoTrimコンポーネントを使うため、UntrimmedSurface化しておきます)
・台形の上面の大きさを徐変させる量を計算します。U方向とV方向で縮めていくので、若干量(ここでは0.04)から0.5までの範囲をRangeコンポーネントと使いサーフェスの数の分だけ数列を作り、Construct Domain2コンポーネントを使いDomainデータを作成します。
※0.5にすると面が残らないので、Cull Indexコンポーネントを使い0番目を削除しておきます。
・上記数値を使い、itoTrimコンポーネントで徐変縮小させます。
・次に、各サーフェスの法線方向を求め、中心点をその方向に、Step.15で求めたNum_UPRの分だけ移動させます。
・後は、側面をLoftでつなぐと完成です。
次は、底面を作って行きます。
・引いた直線をCull PatternのTrue FalseおよびFalse Trueの各パターンで2通りに分離します。
・True Falseパターンで分離した曲線を、Shift List コンポーネントでずらしたカーブも同時に作成しておきます。
・ここでは、高さの異なる2種類のサーフェスを作ります。
0 件のコメント:
コメントを投稿