0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

06. FreeCAD: GUI操作ゼロでここまで作れる ― 関数定義だけで生成する幾何学ソリッド

Posted at

はじめに

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 で公開しています。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?