CadQuery 库详细介绍
CadQuery  是一个基于 Python  的 参数化 3D CAD 建模  库,允许用户通过编写代码(而不是传统 GUI)来创建精确的 3D 模型 。它特别适用于 自动化设计、机械工程、3D 打印  等场景,提供强大的 程序化建模 能力。
1. CadQuery 的核心特点
✅ 基于 OpenCASCADE(OCCT) :底层使用工业级几何引擎,确保高精度建模。
✅ 链式 API :类似 jQuery 的语法,代码简洁直观。
✅ 参数化设计 :支持变量、循环、条件判断,便于快速迭代设计。
✅ 支持多种导出格式 :STL、STEP、OBJ、SVG 等,兼容主流 CAD 软件(如 FreeCAD、SolidWorks)。
✅ 与 Python 生态集成:可结合 NumPy、Matplotlib 等库进行高级计算和可视化。
2. 基本概念
(1) Workplane(工作平面)
CadQuery 的所有建模操作都从 Workplane 开始,它定义了初始坐标系(如 "XY"、"XZ"、"YZ")。
python
import cadquery as cq
# 在 XY 平面上创建一个矩形
result = cq.Workplane("XY").rect(10, 20)(2) 基本几何体
- box():立方体
- cylinder():圆柱
- sphere():球体
- lineTo()/- polyline():绘制 2D 轮廓并拉伸
python
# 创建一个 10x20x5 的长方体
box = cq.Workplane("XY").box(10, 20, 5)(3) 布尔运算
- cut():差集(挖孔)
- union():并集(合并)
- intersect():交集
python
# 在立方体上挖一个圆柱孔
result = box.faces(">Z").circle(3).cutThruAll()(4) 倒角 & 圆角
- fillet():圆角(对边进行平滑处理)
- chamfer():倒角(斜切边)
python
# 对立方体的所有垂直边进行圆角处理
result = box.edges("|Z").fillet(1.0)(5) 拉伸 & 旋转
- extrude():拉伸 2D 轮廓
- revolve():旋转 2D 轮廓
python
# 绘制一个圆并拉伸成圆柱
result = cq.Workplane("XY").circle(5).extrude(10)3. 进阶功能
(1) 参数化建模
python
length = 30
width = 20
height = 10
# 使用变量定义模型
box = cq.Workplane("XY").box(length, width, height)(2) 复杂轮廓(2D 草图)
python
# 绘制一个 L 形轮廓并拉伸
result = (
    cq.Workplane("XY")
    .moveTo(0, 0)
    .lineTo(10, 0)
    .lineTo(10, 5)
    .lineTo(5, 5)
    .lineTo(5, 10)
    .lineTo(0, 10)
    .close()
    .extrude(2)
)(3) 阵列(Pattern)
python
# 在立方体上打 4 个孔
result = (
    cq.Workplane("XY")
    .box(20, 20, 5)
    .faces(">Z")
    .rarray(8, 8, 2, 2)  # (x间距, y间距, x数量, y数量)
    .circle(2)
    .cutThruAll()
)(4) 导出模型
python
# 导出为 STL(3D 打印)
cq.exporters.export(result, "model.stl")
# 导出为 STEP(CAD 软件兼容)
cq.exporters.export(result, "model.step")4. CadQuery vs. OpenSCAD
| 特性 | CadQuery | OpenSCAD | 
|---|---|---|
| 语法 | Python(更灵活) | 专用语言(较局限) | 
| 建模方式 | 链式 API | 函数式编程 | 
| 几何引擎 | OpenCASCADE(OCCT) | CGAL | 
| 学习曲线 | 中等(需 Python 基础) | 较陡(新语法) | 
| 社区支持 | 活跃(GitHub、论坛) | 较成熟 | 
| 适用场景 | 机械设计、参数化建模 | 简单 3D 打印模型 | 
5. 适用场景
- 机械零件设计(齿轮、支架、外壳)
- 3D 打印模型优化(参数化调整尺寸)
- 自动化建模(批量生成变体模型)
- 教育(学习 CAD 与编程结合)
6. 学习资源
- 官方文档:CadQuery GitHub
- 示例库:CadQuery Examples
- FreeCAD 插件:可在 FreeCAD 中使用 CadQuery 脚本
总结
CadQuery 是 程序化 CAD 建模  的强大工具,适合 工程师、设计师、开发者 使用 Python 创建精确的 3D 模型。如果你熟悉 Python 并希望摆脱传统 CAD 软件的 GUI 限制,CadQuery 是一个绝佳选择! 🚀
试试这个简单示例:
python
import cadquery as cq
# 创建一个带孔的 L 形支架
model = (
    cq.Workplane("XY")
    .box(20, 20, 5)  # 底座
    .faces(">Z")
    .rect(15, 15)
    .extrude(10)     # 凸台
    .edges("|Z")
    .fillet(2)       # 倒角
    .faces(">Z")
    .hole(5)         # 钻孔
)
# 导出 STL 文件
cq.exporters.export(model, "bracket.stl")运行后,你会得到一个可用于 3D 打印的模型!