1. 製品
  2.   CAD
  3.   Python
  4.   FreeCAD

FreeCAD

 
 

オープンソース 3D パラメトリック CAD モデラー

機械工学、建築、製品設計向けの Python API で 3D デザインを作成、変更、そして自動化します。

FreeCADとは何ですか?

FreeCAD は、あらゆるサイズの実世界オブジェクトの作成を目的とした、強力なオープンソースの 3D パラメトリック CAD モデラーです。パラメトリックモデリングをサポートしており、モデル履歴のパラメータを調整するだけで設計を簡単に変更できます。OpenCASCADE、Coin3D、Qt、Python を使用した堅牢なアーキテクチャ上に構築されており、機械工学、建築、プロダクトデザインなどに対応しています。柔軟な Python API により、開発者や上級ユーザーはタスクの自動化、機能拡張、外部ツールとの統合が可能です。趣味での利用者、学生、エンジニア、教育者のいずれであっても、FreeCAD はライセンス費用なしでプロフェッショナルレベルの 3D 設計プラットフォームを提供します。

FreeCADの最大の強みは、2Dスケッチと3Dモデリングを橋渡しできる点にあり、ユーザーはジオメトリ制約された2Dプロファイルをスケッチし、それを3Dフィーチャーに押し出すことができます。パートデザイン、アセンブリ、ドラフティング、建築などの専門的なワークベンチが含まれています。アプリケーションはWindows、macOS、Linux上でネイティブに動作し、広範なアクセシビリティを確保します。活発なコミュニティサポート、包括的なドキュメント、モジュラーなプラグインアーキテクチャにより、FreeCADは初心者から経験豊富なCADプロフェッショナルまで、透明性が高くカスタマイズ可能で無料のプロプライエタリツールの代替として理想的です。シミュレーションや製造ワークフローとの統合により、製品開発ライフサイクル全体に適しています。

Previous Next

FreeCADのはじめ方

FreeCAD は Windows、macOS、Linux 用の事前コンパイル済みインストーラとして、最新リリースページで入手できます。Linux では、ディストリビューションのパッケージマネージャやソフトウェアセンターから入手できることが多いです。開発者や上級ユーザー向けに、CMake を使用したソースからのビルドがサポートされています。公式の開発者ハンドブックには詳細なビルド手順が記載されています。インストール後、FreeCAD を起動し、ツールバーからワークベンチを探索してください。Python コンソールとマクロシステムにより、自動化やカスタマイズが可能です。学習リソースについては、FreeCAD Wiki の入門ガイドをご覧ください。

パッケージマネージャー(Linux)でFreeCADをインストールまたはダウンロード

# Ubuntu/Debian
sudo apt install freecad

# macOS (Homebrew)
brew install --cask freecad

# Windows: Download from https://github.com/FreeCAD/FreeCAD/releases/latest

Python APIによるパラメトリック3Dモデリング

FreeCAD のパラメトリックモデリングエンジンは、編集可能なパラメータでオブジェクトを定義でき、値を調整するだけで設計の反復が可能です。Python API はモデリング全体のスタックを公開し、開発者がプログラム的に複雑なジオメトリを作成できます。Part と PartDesign ワークベンチを使用すると、プリミティブの生成、ブール演算、フィレット/面取りの追加、パッド、ポケット、回転などの機能をすべて Python で行えます。この機能は、生成的設計、トポロジー最適化、CAD とシミュレーションや製造ワークフローの統合に不可欠です。API はオブジェクト指向と関数型の両アプローチをサポートし、スクリプト、マクロ、フル機能プラグインに適しています。基盤となる OpenCASCADE カーネルへのアクセスにより、FreeCAD はプロフェッショナルレベルの幾何演算を提供しつつ、初心者にも使いやすさを保ちます。

パラメトリックキューブを作成し、Pythonで寸法を変更する

import FreeCAD as App
import Part

# Create document and object
doc = App.newDocument()
cube = doc.addObject("Part::Box", "Cube")
cube.Length = 10
cube.Width = 20
cube.Height = 30
App.ActiveDocument.recompute()

# Modify dimensions later
cube.Length = 15
App.ActiveDocument.recompute()

2Dスケッチ&ドラフト作業台

FreeCADには、3Dモデリングパイプラインと統合された強力な2Dスケッチ環境が含まれています。Sketcherワークベンチを使用すると、直線、円弧、円、スプラインを用いてジオメトリ制約された2Dプロファイルを描くことができます。水平、垂直、平行、直交、および寸法制約などの制約により、スケッチジオメトリを正確に制御できます。完了すると、これらのスケッチは押し出し、回転、ロフトなどの3D機能の基礎となります。さらに、Draftワークベンチは制約なしの2Dベクタードローイング作成ツールを提供し、建築平面図や技術イラストに最適です。Drawingワークベンチは、3Dモデルから正投影図、断面図、注釈付き図面を生成でき、寸法付与、許容差、部品表機能を備えたISO準拠の技術文書をサポートします。

スケッチを作成し、拘束を追加して、押し出しで3Dフィーチャーを形成する

import FreeCAD as App
import Sketcher
import PartDesign

doc = App.newDocument()
Part = doc.addObject("PartDesign::Body")
Sketch = doc.addObject("Sketcher::SketchObject", "Sketch")
Sketch.Placement = App.Placement(App.Vector(0,0,0), App.Rotation(App.Vector(0,0,1),0))

# Add geometry
Sketch.addGeometry(Part.LineSegment(App.Vector(-10,0,0),App.Vector(10,0,0)),False)
Sketch.addGeometry(Part.LineSegment(App.Vector(10,0,0),App.Vector(10,10,0)),False)
Sketch.addGeometry(Part.LineSegment(App.Vector(10,10,0),App.Vector(-10,10,0)),False)
Sketch.addGeometry(Part.LineSegment(App.Vector(-10,10,0),App.Vector(-10,0,0)),False)

# Add constraints
Sketch.addConstraint(Sketcher.Constraint('Coincident',0,2,1,1))
Sketch.addConstraint(Sketcher.Constraint('Coincident',1,2,2,1))
Sketch.addConstraint(Sketcher.Constraint('Coincident',2,2,3,1))
Sketch.addConstraint(Sketcher.Constraint('Coincident',3,2,0,1))
Sketch.addConstraint(Sketcher.Constraint('Horizontal',0))
Sketch.addConstraint(Sketcher.Constraint('Vertical',1))

# Extrude
Pad = doc.addObject("PartDesign::Pad", "Pad")
Pad.Profile = Sketch
Pad.Length = 5
doc.recompute()

アセンブリ設計と拘束解決

FreeCADはAssembly4およびAssembly3ワークベンチを通じて複雑なアセンブリモデリングをサポートし、ユーザーが複数の部品を機能的な機構に組み合わせることを可能にします。アセンブリは、同位置、平行、垂直、接線、距離などの拘束条件を使用して、部品間の相対位置と動きを定義して構築されます。ソルバーは部品や拘束条件が変更されると自動的にアセンブリを更新し、設計の整合性を確保します。この機能は、歯車列、リンク機構、ハウジング設計などの機械工学のタスクにとって重要です。アセンブリはSTEPファイルとしてエクスポートでき、他のCADシステムとの協業に利用できます。また、Yadeなどの外部ツールやカスタムPythonスクリプトとの統合により、モーションシミュレーションも可能です。FreeCADのパラメトリックな特性により、個々の部品の変更が自動的にアセンブリに伝播し、手動での更新を減らしエラーを最小限に抑えます。

2つのパーツでシンプルなアセンブリを作成し、一致拘束を適用する

import FreeCAD as App
import Assembly4

doc = App.newDocument("Assembly")
# Add parts
Part1 = doc.addObject("Part::Box", "Block1")
Part1.Length, Part1.Width, Part1.Height = 10, 10, 10
Part2 = doc.addObject("Part::Cylinder", "Cylinder1")
Part2.Radius, Part2.Height = 3, 15

# Create assembly
asm = doc.addObject("App::Part", "Assembly")
asm.Type = "Assembly"
asm.addObject(Part1)
asm.addObject(Part2)

# Apply constraint (simplified)
# In practice, use Assembly4's Constraint class for full functionality
App.ActiveDocument.recompute()

BIMと建築モデリングツール

FreeCAD には Arch ワークベンチを通じて、建築情報モデリング(BIM)および建築設計向けの専門ツールが含まれています。ユーザーは直感的なパラメトリックオブジェクトを使用して、壁、床、屋根、窓、ドア、構造要素を作成できます。これらのオブジェクトはパラメータが変更されると自動的に更新され、反復的な設計や建築基準への適合をサポートします。ワークベンチは IFC(Industry Foundation Classes)のインポート/エクスポートをサポートし、Revit や Archicad などの業界標準 BIM ソフトウェアとの相互運用性を実現します。サイト計画、エネルギー解析設定、材料数量算出などの機能により、FreeCAD は初期段階の建築設計および文書化に適しています。さらに、Draft および Sketcher ワークベンチは正確な平面図や立面図の作成とシームレスに統合され、Drawing ワークベンチは注釈、寸法、スケジュールを含む施工図書を生成します。

Python API を使用して壁を作成し、窓を追加する

import FreeCAD as App
import Arch

doc = App.newDocument("Building")
# Create wall
Wall = Arch.makeWall(length=5000, width=200, height=3000)
Wall.Base = Arch.makeSketch([0,0,0], [5000,0,0], [5000,200,0], [0,200,0])

# Create window
Window = Arch.makeWindow(1200, 1500)
Window.Base = Arch.makeSketch([1000,100,0], [2200,100,0], [2200,1600,0], [1000,1600,0])
Window.Host = Wall

App.ActiveDocument.recompute()
 日本