算法艺术创作
algorithmic-art
通过代码和可调参数创作生成艺术与交互式视觉效果。
freecad【设计与创意】Use when doing parametric 3D CAD modeling, BIM/architectural design, FEM simulation, CAM toolpath generation, or robot simulation with Python scripting. FreeCAD: the leading open-source parametric 3D CAD with Sketcher, Part, PartDesign, Arch, CAM, and FEM workbenches.
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
name: freecad description: "Use when doing parametric 3D CAD modeling, BIM/architectural design, FEM simulation, CAM toolpath generation, or robot simulation with Python scripting. FreeCAD: the leading open-source parametric 3D CAD with Sketcher, Part, PartDesign, Arch, CAM, and FEM workbenches." tags:
项目地址: https://github.com/FreeCAD/FreeCAD
官方文档: https://wiki.freecad.org/Main_Page
Python API: https://wiki.freecad.org/FreeCAD_Scripting_Basics
许可证: LGPL-2.0+
FreeCAD 核心模块:
| 模块 | 用途 |
|---|---|
| Sketcher | 二维参数化草图(约束求解) |
| Part | 显式 BREP 建模(基于 OCCT) |
| PartDesign | 参数化特征建模 |
| Assembly(A2plus / Assembly3 / 自带) | 装配 |
| Draft | 二维绘图 |
| Arch / BIM | 建筑 / IFC |
| TechDraw | 工程图 |
| CAM (Path) | 数控编程 |
| FEM | 有限元仿真 |
| Spreadsheet | 电子表格驱动参数 |
| Mesh / Points | 网格与点云 |
| Surface | 曲面建模 |
| Robot | 机器人路径 |
支持文件:FCStd、STEP、IGES、BREP、STL、OBJ、PLY、DXF、DWG、SVG、IFC、PDF(导入)、AMF、3MF…
# Linux
sudo apt install freecad
# 或 AppImage:<https://github.com/FreeCAD/FreeCAD/releases>
# macOS
brew install --cask freecad
# Windows:安装包 / Conda
conda install -c conda-forge freecad
FreeCAD 1.x 起合并了大量长期分支(如 PartDesign Toponaming 修复)。当前稳定版 1.1.3(2026-07 发布,参见 FreeCAD Releases)。
import FreeCAD as App
import Part
doc = App.newDocument("demo")
# 创建立方体
box = doc.addObject("Part::Box", "MyBox")
box.Length = 100; box.Width = 60; box.Height = 30
# 创建圆柱
cyl = doc.addObject("Part::Cylinder", "MyCyl")
cyl.Radius = 10; cyl.Height = 50
cyl.Placement = App.Placement(App.Vector(50, 30, 0), App.Rotation(0,0,0,1))
# 布尔差集
cut = doc.addObject("Part::Cut", "Cut")
cut.Base = box; cut.Tool = cyl
doc.recompute()
Part.export([cut], "/tmp/out.step")
import Part
from FreeCAD import Vector
# 多边形 → 拉伸
poly = Part.makePolygon([Vector(0,0,0), Vector(50,0,0),
Vector(50,30,0), Vector(0,30,0), Vector(0,0,0)])
face = Part.Face(Part.Wire(poly.Edges))
solid = face.extrude(Vector(0, 0, 20))
# 圆角
solid = solid.makeFillet(2, solid.Edges)
Part.show(solid)
import Sketcher
sk = doc.addObject('Sketcher::SketchObject', 'Sketch')
sk.Support = (doc.XY_Plane, [''])
sk.addGeometry(Part.LineSegment(Vector(0,0,0), Vector(50,0,0)))
sk.addConstraint(Sketcher.Constraint('Distance', 0, 50))
doc.recompute()
page = doc.addObject('TechDraw::DrawPage', 'Page')
template = doc.addObject('TechDraw::DrawSVGTemplate', 'Template')
template.Template = '/usr/share/freecad/Mod/TechDraw/Templates/A4_LandscapeTD.svg'
page.Template = template
view = doc.addObject('TechDraw::DrawViewPart', 'View')
view.Source = [solid]
page.addView(view)
doc.recompute()
freecadcmd /tmp/script.py # 后台运行 Python
freecad --console <<<'doc=App.newDocument(); ...'
doc.recompute(returnStringList=True) 检查错误| 问题 | 解决 |
|---|---|
| Toponaming 在编辑后特征丢失 | 升级到 FreeCAD ≥ 1.1.1(2026-04 引入拓扑命名修复;当前稳定版 1.1.3) |
| 中文文件名编码 | 使用 UTF-8;Windows 下避免 GBK 路径 |
| 导出 STEP 缺少颜色 | 用 STEP AP242 或在 ImportSettings 启用颜色 |
| Sketcher 求解失败 | 删除冗余约束、检查 DoF |
| Mesh 转 Solid 不闭合 | 用 Part → Convert to solid 前先 Mesh Repair |
FreeCAD Python Console 或 freecadcmd 无头模式。doc.recompute() 才能更新显示与关联;③ 导出 STEP 前确认模型无错误(Part → Check Geometry);④ Toponaming 问题在 FreeCAD 1.1.1(2026-04)版基本解决,旧版注意避免引用面/边编号。doc.addObject("Part::Box", ...) 创建参数化体 → 设置属性 → doc.recompute() → Part.export([shape], "out.step")。对于脚本化建模,也可直接用 Part.make* 系列函数构造几何。