topics: [“機械設計”, “cad”, “freecad”, “python”, “数学”]
FreeCAD は「パラメトリック CAD」として知られていますが、
GUI のスケッチや拘束を一切使わず、
Python コードだけで
ここまで幾何学的な形状を生成できる
ことは、あまり知られていません。
この記事では、
で生成した 純コード駆動のソリッド形状 を紹介します。

この形状は、
という手順で、
すべて Python コードのみ で生成しています。
スケッチも拘束も使っていません。
次は、さらに「GUIで作る気がしない」系です。

こちらは、
という構成になっています。
途中で形状の性質が変わるため、
GUI ベースの履歴設計ではかなり厄介なタイプです。
重要なのは「形が奇抜なこと」ではありません。
これらの形状は、
といった 設計条件 を
Python の変数・関数として定義しています。
つまり、
形状 = 操作の結果
ではなく
形状 = ルールの実行結果
になっています。
GUI CAD で同じことをやろうとすると:
一方、コード設計では:
def r(z):
return base + amp * math.sin(freq * z)
のように、
設計意図そのものがコードとして残ります。
数値を変えれば再実行するだけです。
この手法はアート用途だけではありません。
など、
形状をルールで振りたい場面 では非常に強力です。
また、コードなので:
といった利点もあります。
FreeCAD は、
として使うこともできます。
GUI を否定する必要はありませんが、
「設計ルールをコードで書く」という選択肢を持つだけで、
CAD の使い方は大きく広がります。
本記事で生成した形状のコードは、以下のリポジトリで公開しています。
関数定義ロフト+ねじりソリッド
loft_twist_solid.py
分岐スパイラル形状
branched_spiral_sweep.py
本記事で使用しているコードは MIT License で公開しています。