今回は上画像のようなお皿をモデリングします。解説はしてませんが、3Dプリントした画像も最後にのせています。モデリング自体はさほど難しくありません、ぜひご参考ください。こちらのチュートリアルは動画化もしてますので、動画のほうが良い方は以下のリンクからどうぞ。
概要

上画像がプログラムの全体像となっております。各ブロックごとに説明していきます。
ベースとなる円を生成

- Circleコンポーネントで半径20の円を生成します。
- 生成した円をMoveコンポーネントでZ方向へ複製していきます。ボウルの高さを75にしたいので、Rangeコンポーネントで0~75の範囲で20Stepのlistを出力し、その値を用いてZ方向に円を複製していきます。
- 複製した円を、下から上に向かって徐々に拡大していきます。Scaleコンポーネントを使用し、拡大していく倍率は、一番下の円を1倍とし、最上部の円を半径75になるように拡大しています。
生成した円を回転させる

- 生成した円を回転させますが、完成形の画像のようにボウルの高さ方向の真ん中あたりで、波の振幅が大きくなるようにします。List Lengthコンポーネントで生成した円の数を取得します。
- Rangeコンポーネントで0~1の範囲で円の数StepのListを取得します。
- Graph Mapperコンポーネントで取得した0~1のListをListの最初と最後が0で、Listの中央ほど1に近づくように操作します。
- GraphMapperコンポーネントで変更したListに0.5πをかけます。これを回転角のListとします。
- Rotateコンポーネントで生成した円を上で取得した角度のリストを用いて回転させます。これで、高さ方向の真ん中あたりの円は0.5π回転しており、再上下に近い円ほど回転角が小さくなってます。
縮小した円を生成する

- お皿の溝を作成していきます。ListLengthコンポーネントで円の数を取得します。
- これらの円を縮小していきますが、上下は1.0倍、高さ方向の中央ほど0.9倍に近づくようにしていきます。Rangeコンポーネントで0.9~1.0範囲でListを生成し、GraphMapperコンポーネントでListの最初と最後が1.0で中央に行くにしたがって0.9に近づくListに変更していきます。
- ScaleコンポーネントでGraphMapperコンポーネントで生成したListを倍率として、円を縮小していきます。
- s縮小した円をRotateコンポーネントを使用して、先ほど生成した回転角のリストを使って回転させます。
表面の波の基準となる曲線を生成

- 先ほど生成した回転させた円、縮小してから回転させた円を分割し、高さ方向に曲線で結びます。Divide Curveコンポーネントで円を40分割します。
- FlipMatrixコンポーネントでListの行と列を反転させます。
- Interpolateコンポーネントで高さ方向に分割店を結びます。
曲線を結びサーフェイスを生成する

- 生成した曲線間にサーフェイスを張っていきます。RuledSurfaceコンポーネントを使用していきます。
- 縮小前の円から生成した曲線と縮小した円から生成した曲線を結んだサーフェイス、縮小前の円から生成した曲線と縮小した円のリストを1つずらした曲線との間にサーフェイスを生成していきます。
- Mergeコンポーネントでサーフェイスのリストをまとめて、BrepJoinで結合します。
生成したサーフェイスを縮小

- 生成したサーフェイスを少し縮小します。この面がボウルの内側になります。
- 最上部の円の中心点を取得し、その点を中心として0.93倍してます。
完成

- 生成した縮小前と縮小後のサーフェイスにCapコンポーネントで蓋をし、閉じたBrepを生成します。
- SolidDifferenceコンポーネントで、2つの閉じたBrepの差分を取得し、最後に色付けして完成です。



3Dプリントはあまりうまくいかなかったので、もう少し勉強が必要かなと思います。プリンターはEnder3 S3, スライサーはultiMakerCuraを使用してます。以上になります。
リンク