FreeCAD

 
 

开源 3D 参数化 CAD 建模器

使用 Python API 为机械工程、建筑和产品设计创建、修改并自动化 3D 设计。

FreeCAD 是什么?

FreeCAD 是一个功能强大的开源 3D 参数化 CAD 建模器,旨在创建任意尺寸的真实世界对象。它支持参数化建模,使用户能够通过调整模型历史中的参数轻松修改设计。FreeCAD 基于使用 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()

二维草图与制图工作台

FreeCAD 包含一个强大的 2D 草图环境,集成在 3D 建模流水线中。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 的参数化特性确保对单个部件的更改会自动传播到装配中,减少手动更新并最小化错误。

创建一个包含两个部件的简易装配,并应用重合约束

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)导入/导出,实现与行业标准 BIM 软件如 Revit 和 Archicad 的互操作性。场地规划、能耗分析设置和材料清单等功能使 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()
 中国人