📐

【機械設計】06. FreeCADでGUI操作ゼロ ― 関数定義だけで生成する幾何学ソリッド

に公開

はじめに

FreeCAD は「パラメトリック CAD」として知られていますが、
GUI のスケッチや拘束を一切使わず、

Python コードだけで
ここまで幾何学的な形状を生成できる

ことは、あまり知られていません。

この記事では、

  • スケッチなし
  • Part Design なし
  • GUI 操作ほぼゼロ

で生成した 純コード駆動のソリッド形状 を紹介します。


まずは完成形を見てほしい

関数定義ロフト+ねじりソリッド

function_loft

この形状は、

  • 半径を 関数 r(z) として定義
  • 断面形状を 周期関数で変調
  • z 方向に積層して Loft
  • さらに ねじり(Twist) を付与

という手順で、
すべて Python コードのみ で生成しています。

スケッチも拘束も使っていません。


もう一つ:分岐するスパイラル形状

次は、さらに「GUIで作る気がしない」系です。

branched_spiral

こちらは、

  • 空間曲線(スパイラル)をコードで生成
  • 断面形状を関数定義
  • 途中で 位相をジャンプ させて分岐
  • Sweep / Loft 的にソリッド化

という構成になっています。

途中で形状の性質が変わるため、
GUI ベースの履歴設計ではかなり厄介なタイプです。


何がポイントなのか

重要なのは「形が奇抜なこと」ではありません。

形状が ルールの結果 になっている

これらの形状は、

  • 寸法
  • 波打ち具合
  • ねじれ量
  • 分岐位置

といった 設計条件
Python の変数・関数として定義しています。

つまり、

形状 = 操作の結果
ではなく
形状 = ルールの実行結果

になっています。


GUI CAD との決定的な違い

GUI CAD で同じことをやろうとすると:

  • スケッチが増える
  • 拘束が破綻しやすい
  • なぜそうなったか分からなくなる

一方、コード設計では:

def r(z):
    return base + amp * math.sin(freq * z)

のように、
設計意図そのものがコードとして残ります。

数値を変えれば再実行するだけです。


実務で何が嬉しいか

この手法はアート用途だけではありません。

  • 特殊シャフト
  • 混合・攪拌形状
  • 冷却フィン
  • 実験治具
  • 形状パラメータ探索

など、
形状をルールで振りたい場面 では非常に強力です。

また、コードなので:

  • Git で差分管理できる
  • 条件変更の理由が残る
  • 派生設計が簡単

といった利点もあります。


まとめ

FreeCAD は、

  • スケッチを描く CAD
    ではなく
  • 形状を生成する幾何エンジン

として使うこともできます。

GUI を否定する必要はありませんが、
「設計ルールをコードで書く」という選択肢を持つだけで、
CAD の使い方は大きく広がります。


使用したコード

本記事で生成した形状のコードは、以下のリポジトリで公開しています。


ライセンス

本記事で使用しているコードは MIT License で公開しています。

GitHubで編集を提案

Discussion