超级好用的参数化3D CAD 建模图形库 (CadQuery库介绍)

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 打印的模型!

相关推荐
Shirley~~9 小时前
three.js的调试面板工具
前端·3d
云飞云共享云桌面11 小时前
智能装备数字化转型:云飞云云桌面助力苏州工厂共享 SolidWorks 算力
运维·服务器·3d·自动化·制造
Zldaisy3d12 小时前
哈工大黄永江课题组 l 多元素原位合金化调控增材制造TC4多尺度组织
3d·制造
杀生丸学AI12 小时前
【三维重建】GaussianGPT:迈向自回归三维高斯场景生成
深度学习·3d·transformer·三维重建·自回归·高斯泼贱
Jmyd012313 小时前
智慧文博3D扫描系统架构:从采集到平台的全链路方案
3d·系统架构·3d扫描·智慧文博
总要学点什么1 天前
第51篇:数据分析-热力图——笔刷画的是圆,落到地上却成了椭圆
3d·数据挖掘·数据分析·前端框架·gis·webgl·cesium
Martina_03211 天前
AI生成的海岸城市一移动镜头,水面反射就跳?用6步统一反射探针、SSR与平面反射
图像处理·人工智能·平面·3d·ai·自然语言处理·游戏策划
Alphapeople1 天前
2D转3D方案
3d
风花一世月1 天前
[特殊字符] 我把一套分布式消防方案做成了能跑的 3D 沙盘(三架无人机共用一根水带,在线直接玩)
分布式·3d·ai·无人机
大雷神1 天前
用鸿蒙开发助手推进《3D种植》鸿蒙版与 Flame 库适配
3d·华为·harmonyos