はじめに
FreeCAD は「パラメトリック CAD」として知られていますが、
GUI のスケッチや拘束を一切使わず、
Python コードだけで
ここまで幾何学的な形状を生成できる
ことは、あまり知られていません。
この記事では、
- スケッチなし
- Part Design なし
- GUI 操作ほぼゼロ
で生成した 純コード駆動のソリッド形状 を紹介します。
まずは完成形を見てほしい
関数定義ロフト+ねじりソリッド
この形状は、
- 半径を 関数 $r(z)$ として定義
- 断面形状を 周期関数で変調
- z 方向に積層して Loft
- さらに ねじり(Twist) を付与
という手順で、
すべて Python コードのみ で生成しています。
スケッチも拘束も使っていません。
もう一つ:分岐するスパイラル形状
次は、さらに「GUIで作る気がしない」系です。
こちらは、
- 空間曲線(スパイラル)をコードで生成
- 断面形状を関数定義
- 途中で 位相をジャンプ させて分岐
- Sweep / Loft 的にソリッド化
という構成になっています。
途中で形状の性質が変わるため、
GUI ベースの履歴設計ではかなり厄介なタイプです。
何がポイントなのか
重要なのは「形が奇抜なこと」ではありません。
形状が ルールの結果 になっている
これらの形状は、
- 寸法
- 波打ち具合
- ねじれ量
- 分岐位置
といった 設計条件 を
Python の変数・関数として定義しています。
つまり、
形状 = 操作の結果
ではなく
形状 = ルールの実行結果
になっています。
GUI CAD との決定的な違い
GUI CAD で同じことをやろうとすると:
- スケッチが増える
- 拘束が破綻しやすい
- なぜそうなったか分からなくなる
一方、コード設計では:
def r(z):
return base + amp * math.sin(freq * z)
のように、
設計意図そのものがコードとして残ります。
数値を変えれば再実行するだけです。
実務で何が嬉しいか
この手法はアート用途だけではありません。
- 特殊シャフト
- 混合・攪拌形状
- 冷却フィン
- 実験治具
- 形状パラメータ探索
など、
形状をルールで振りたい場面 では非常に強力です。
また、コードなので:
- Git で差分管理できる
- 条件変更の理由が残る
- 派生設計が簡単
といった利点もあります。
まとめ
FreeCAD は、
- スケッチを描く CAD
ではなく - 形状を生成する幾何エンジン
として使うこともできます。
GUI を否定する必要はありませんが、
「設計ルールをコードで書く」という選択肢を持つだけで、
CAD の使い方は大きく広がります。
使用したコード
本記事で生成した形状のコードは、以下のリポジトリで公開しています。
-
関数定義ロフト+ねじりソリッド
https://github.com/Samizo-AITL/qiita-articles/tree/main/codes/06_geometric_showcase_freecad/loft_twist_solid.py
ライセンス
本記事で使用しているコードは MIT License で公開しています。

