3D CADを使いたいが、Fusion 360のサブスクリプションもSolidWorksのライセンス費も現実的でない——そんな場面で最初に候補に挙がるのが FreeCAD だ。パラメトリックモデリング・FEM解析・BIM・CAMまでを1本に収めた無料のオープンソース3D CADで、Python APIが全面公開されているため、設計作業そのものをスクリプトで自動化できる。

FreeCADのPart Designワークベンチ画面。3Dビューポートに部品モデルが表示され、左にモデルツリーとパラメータ、上部にスケッチ・押し出し等のツールバーが並ぶ
Part Designワークベンチ。モデルツリーに操作履歴が積み上がり、パラメータを後から編集すると形状が再計算される(出典: FreeCAD/FreeCAD README)

30秒でわかる FreeCAD

  • ・何ができる:パラメトリック3Dモデリング、FEM構造解析、BIM(建築)、CAM(切削パス生成)を1本のアプリで
  • ・何を解決する:CADのライセンス費用と、GUI操作の手作業。Python APIで形状生成からエクスポートまで自動化できる
  • ・何を代替する:Fusion 360/SolidWorksの一部用途、単発の3Dモデリング外注、手作業でのSTEP/STL変換
  • ・規模:★32,499・フォーク5,827・LGPL-2.1(商用利用可)・最新 1.1.3(2026-07-25)

設計や図面まわりの手作業をどこまで機械に渡せるかという観点は、AI自動化ツール|ノーコードからコードまで2026年版の比較と選び方 の整理が土台になる。本記事はその中で「CADという専門ドメインを、無料かつスクリプタブルに置き換える」選択肢を扱う。

FreeCADとは:★32,499のオープンソース3D CAD

THE NUMBERS数字で見る

2012年の公開から続く、LGPL-2.1 の無料3D CAD

32,499★

GitHub スター

フォーク 5,827

46,000+

コミット

2012年の公開以来

1.1.3

最新版

2026-07-25 リリース

出典: github.com/FreeCAD/FreeCAD(2026-07-31時点)

FreeCADは2012年の公開以来46,000超のコミットを重ね、2026年3月に1.1をリリースした。その後もパッチが続き、最新は 1.1.3(2026-07-25)、リポジトリの最終更新は2026年7月30日と開発は活発だ。LGPL v2.1で、個人・商用を問わず無料で使える。

技術基盤は4つ。産業標準のジオメトリカーネルで STEP・IGES を直接扱う OpenCASCADE、3Dレンダリングの Coin3D、GUIの Qt、スクリプトとマクロの Python だ。ソースはC++が51.3%、Pythonが46.1%で、コアをC++で速く動かし、ユーザー向けのAPIとマクロをPythonで公開している。Pythonの拡張性と学習コストのバランスは、Claude CLIとObsidian連携で税務申告を自動化──レガシー業務にAIを持ち込む実例 でも触れたとおりだ。

FreeCADのインストール方法:3プラットフォーム対応

WindowsとmacOSは公式リリースページのインストーラーが最も確実だ。Linuxはディストリビューションのパッケージやソフトウェアセンターからも入る。

# Ubuntu/Debian — PPA経由で最新版をインストール
sudo add-apt-repository ppa:freecad-maintainers/freecad-stable
sudo apt update
sudo apt install freecad

# Fedora
sudo dnf install freecad

# macOS(Homebrew)
brew install --cask freecad

# Windows — 公式サイトからインストーラーをダウンロード
# https://github.com/FreeCAD/FreeCAD/releases

ソースからビルドする開発者向けには、Pixiが推奨されている。RAMが限られた環境では pixi run build -j 4 のように並列ジョブ数を絞ると安定する。

curl -fsSL https://pixi.sh/install.sh | bash
git clone --recurse-submodules https://github.com/FreeCAD/FreeCAD FreeCAD-src
cd FreeCAD-src
pixi run configure
pixi run build
pixi run freecad

ワークベンチ構造と、商用CADとの比較

FreeCADの最大の特徴は「ワークベンチ」と呼ばれるモジュール式の作業環境だ。用途に応じてツールセットを切り替え、1つのアプリで機械設計から建築・解析までこなす。

WORKBENCHES用途ごとの作業環境

ワークベンチを切り替えると、出せる形式も変わる

ワークベンチ

主な出力

ワークベンチ: Part Design(パラメトリック設計)

主な出力: STEP / IGES

ワークベンチ: FEM(有限要素法の構造解析)

主な出力: 解析結果の可視化

ワークベンチ: BIM(建築情報モデリング)

主な出力: IFC

ワークベンチ: CAM(CNC 加工)

主な出力: G-code

ワークベンチ: Mesh(メッシュ編集)

主な出力: STL / OBJ(3Dプリント)

このほか、拘束ベースの2Dスケッチを描く Sketcher、3Dモデルから2D技術図面を作る TechDraw があり、アドオンマネージャーからロボットシミュレーション、CFD(数値流体力学)、測地データ処理などのサードパーティ製ワークベンチも足せる。

項目 FreeCAD 1.1 Fusion 360 SolidWorks Blender
価格 無料(LGPL) 年額約10万円〜 年額約80万円〜 無料(GPL)
パラメトリック設計 対応 対応 対応 非対応
FEM解析 標準搭載 有料拡張 有料拡張 非対応
BIM/建築 標準搭載 非対応 非対応 アドオン
CAM/CNC 標準搭載 標準搭載 有料拡張 非対応
Python API 全機能公開 限定的 マクロ(VBA) 全機能公開
ファイル形式 STEP/IGES/STL/OBJ/IFC/DXF/SVG/DAE STEP/STL/DXF等 STEP/IGES/STL等 OBJ/FBX/STL等
プラットフォーム Win/Mac/Linux Win/Mac Winのみ Win/Mac/Linux
オフライン動作 完全対応 クラウド依存 完全対応 完全対応
ソースコード 公開(GitHub) 非公開 非公開 公開(Git)

強みは「パラメトリック設計+FEM+BIM+CAM」を1つの無料ツールで出している点にある。Blenderはモデリングとレンダリングに強いがパラメトリック設計とFEMを持たず、Fusion 360はクラウド依存、SolidWorksはWindows専用で高額だ。弱点もはっきりしていて、複雑なNURBS曲面の精度は商用CADに及ばず、数千部品級の大規模アセンブリの性能やUIの洗練度にも課題が残る。

FreeCADのPython API:3つの入口と設計自動化

GUIで行える操作のほぼすべてをPythonで自動化できるのが、FreeCADの最大の技術的優位だ。入口は3つある。

THREE ENTRANCESPython API の入口

コンソールで試し、マクロに固め、headless で回す

  1. 試す

    Python コンソール

    表示 → パネルから開く。1行ずつ挙動を確かめる

    履歴が残らない

  2. 固める

    マクロ(.FCMacro)

    定型作業の自動化。AI に書かせたコードもここで実行

    GUI の起動が前提

  3. 回す

    外部 Python(freecadcmd)

    CI・バッチ変換・サーバーでの大量処理

    FreeCADGui を触ると落ちる

いきなりheadlessから始めると、GUI依存APIの罠でつまずきやすい。コンソールで試し、マクロに固め、繰り返すようになったら外部Pythonへ移してCIに載せる順が安全だ。コンソールは「表示 → パネル → Pythonコンソール」で開ける。次は直方体と円柱を作ってブーリアン結合し、STEPで書き出す例だ。

import FreeCAD as App
import Part

doc = App.newDocument("MyProject")

# 直方体(幅100mm x 奥行50mm x 高さ30mm)
box = doc.addObject("Part::Box", "MyBox")
box.Length = 100.0
box.Width = 50.0
box.Height = 30.0

# 円柱(半径15mm x 高さ40mm)を直方体の上に配置
cylinder = doc.addObject("Part::Cylinder", "MyCylinder")
cylinder.Radius = 15.0
cylinder.Height = 40.0
cylinder.Placement.Base = App.Vector(50, 25, 30)

# ブーリアン結合して再計算し、STEPで書き出す
fusion = doc.addObject("Part::Fuse", "FusedShape")
fusion.Shape1 = box
fusion.Shape2 = cylinder
doc.recompute()
Part.export([fusion], "/tmp/my_part.step")
print("エクスポート完了: /tmp/my_part.step")

同じ操作をGUIで行うと5〜10分かかるが、スクリプトなら1秒以下で終わる。設計パラメータを変数にすれば、寸法違いのバリエーションを一括で作れる。

import FreeCAD as App
import Part
import os

def generate_bracket(width, height, thickness, hole_diameter, output_dir):
    """L字ブラケットを生成してSTEPに出力する"""
    doc = App.newDocument("Bracket")
    base = Part.makeBox(width, thickness, height)
    vertical = Part.makeBox(thickness, thickness, height)
    bracket = base.fuse(vertical)
    hole = Part.makeCylinder(
        hole_diameter / 2,
        thickness + 2,
        App.Vector(width / 2, -1, height / 2),
        App.Vector(0, 1, 0)
    )
    bracket = bracket.cut(hole)
    filename = f"bracket_{width}x{height}x{thickness}_hole{hole_diameter}.step"
    filepath = os.path.join(output_dir, filename)
    Part.export([bracket], filepath)
    App.closeDocument("Bracket")
    return filepath

output_dir = "/tmp/brackets"
os.makedirs(output_dir, exist_ok=True)
variants = [
    {"width": 50, "height": 40, "thickness": 5, "hole_diameter": 8},
    {"width": 80, "height": 60, "thickness": 8, "hole_diameter": 10},
    {"width": 120, "height": 80, "thickness": 10, "hole_diameter": 12},
]
for v in variants:
    print(f"生成完了: {generate_bracket(**v, output_dir=output_dir)}")

GUIを起動せずにスクリプトを流せば、CI/CDやサーバー側の自動処理に組み込める。

# GUIなしでスクリプトを実行(ヘッドレスモード)
freecadcmd my_script.py

# マクロを指定して実行
freecad --run-macro /path/to/macro.py

# STEPファイルを読み込んでSTLにバッチ変換
freecadcmd -c "
import Part
shape = Part.read('/input/model.step')
mesh = shape.tessellate(0.1)
import Mesh
Mesh.export([shape], '/output/model.stl')
"

Python APIが特に効くのは「同じ操作を条件だけ変えて繰り返す」作業だ。寸法違いのバリエーション生成、フォルダ内のFCStdをまとめてSTEP/STL/DXFへ書き出す一括変換、最小肉厚や穴間距離などの設計ルールチェック、モデルツリーを走査した部品表(BOM)のCSV出力、カメラ位置を固定した画像の量産などがそれに当たる。手作業が10回を超えたらスクリプト化を検討する目安を持っておくと迷わない。

ファイルフォーマットと実践活用

形式 用途
STEP (.step, .stp) 3D CADデータ交換の国際標準。他CADとの互換性が最も高い
IGES (.iges, .igs) 旧来のCADデータ交換。レガシーシステムとの連携
STL (.stl) 3Dプリンター向けメッシュ。ほぼ全てのスライサーで読める
OBJ (.obj) 3Dモデルの汎用形式。テクスチャ情報を含む
IFC (.ifc) 建築情報モデリングの国際標準。BIMワークベンチで生成
DXF (.dxf) 2D CADのデファクト。TechDrawから出力
SVG (.svg) 2D図面のWeb表示
DAE (.dae) COLLADA。ゲームエンジンやVR環境との連携
FCStd ネイティブ形式。ZIP圧縮されたXMLとバイナリの集合

・3Dプリント:Part DesignかSketcherで形状を作り、Meshワークベンチでメッシュ化してSTLに書き出す。穴埋めや法線修正などの修復もFreeCAD上で済む
・FEM解析:外部ソルバー(CalculiX、Elmer)と連携し、静的解析・熱伝導解析・固有値解析に対応する。有料CADでは別ライセンスが要る機能が標準で使える
・gitでのバージョン管理:FCStdを展開すると Document.xml(モデル構造)や GuiDocument.xml(表示設定)が出てくる。ZIP内のXMLを展開して管理すれば git diff で設計変更を追え、ブランチとPull Requestのワークフローを設計データにも使える

FreeCAD AI連携の現実解:専用エージェントより、Python APIを書かせる

freecad ai や github freecad ai agent で探すと、FreeCADを操作するAIエージェントの決定版OSSがあるように見える。結論から書くと、2026年7月31日時点でそれはまだ存在しない。該当しそうなリポジトリを星数順に並べると次のとおりだ(いずれも実測)。

リポジトリ ★ 最終更新 中身
yoshikouki/freecad-cli 6 2026-04-29 XML-RPC経由でAIエージェントからFreeCADを操作するCLI
andresparraarze/ForgeLab 4 2026-07-23 JSON IR+MCPサーバー。KiCad/FreeCAD等をAIから生成
reyk/freecad-ai-skill 3 2026-03-26 FreeCAD向けのAIエージェントSkill
GadatheGod/FreeCAD-AI-Agent-Windows-Linux 1 2026-03-10 Ollamaでローカル動作するCADアシスタント
drgonw1021-lgtm/freecad-skill 1 2026-06-02 TCP JSON-RPC経由でFreeCADを制御するSkill

最大でも★6で、いずれも個人の実験段階だ。FreeCAD公式のClaude / GPT統合プラグインも無く、AI連携はPython APIを叩くスクリプトを介する形になる。確実なのは、専用エージェントを探すのをやめて、Claude CodeやCodex CLIにFreeCADのマクロを書かせることだ。

・APIが枯れている:20年以上の歴史とドキュメント・作例の厚みがあり、LLMが学習している情報量が新興のラッパーと桁違い
・中間層が増えない:失敗したとき読むのは自分のPythonコードだけで、「エージェントのバグ」との切り分けが要らない
・成果物が残る:.FCMacro としてファイルに残り、再実行・バージョン管理・レビューができる

# Codex CLI が生成する FreeCAD マクロの例
import FreeCAD as App
import Part

doc = App.newDocument("AutoBracket")
# ベースプレート 100x60x5mm
plate = doc.addObject("Part::Box", "Plate")
plate.Length = 100
plate.Width = 60
plate.Height = 5

# ボルト穴 4個(コーナーに配置)
for i, (x, y) in enumerate([(10,10), (90,10), (10,50), (90,50)]):
    hole = doc.addObject("Part::Cylinder", f"Hole_{i}")
    hole.Radius = 3
    hole.Height = 5
    hole.Placement.Base = App.Vector(x, y, 0)

doc.recompute()

AIにマクロを書かせるときの注意

  • ・どの入口で実行するかを最初に伝える。GUIのマクロなら FreeCADGui を使う前提、headlessならGUI依存を避けたコードが返る。指定しないと実行時に落ちるコードが出ることがある
  • ・生成されたマクロは新規ドキュメントで試す。作業中のファイルで実行すると、意図しない削除や上書きを取り消しづらい
  • ・上の表の★数は変わりうる。github.com/search?q=freecad+ai+agent&s=stars で確かめ、★が2桁に届かず数ヶ月更新が無いものは業務に載せない

GUIで繰り返している操作にAPIがあるなら、そこを機械に渡す——という判断は、図の書き出しを自動化した ブログ作成者がExcalidrawのフレーム自動エクスポート機能を構築、45秒の手作業を完全自動化 と同じだ。CADツールの選定でコストが障壁になっているなら、Python APIとFEM・BIM・CAMの標準搭載を持つFreeCADは最初に検討すべき選択肢になる。

参照ソース