超级好用的参数化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 打印的模型!

相关推荐
清风笑烟语18 小时前
rustfs 集群部署
3d
还是大剑师兰特21 小时前
Unity 从零搭建简易3D场景(新手分步教程)
3d·unity·游戏引擎
EQ-雪梨蛋花汤1 天前
Android 3D 开发教程(三):Sceneform-EQR 配置 PBR 材质、光照、相机与实时阴影
android·3d·材质
弈语道破AI1 天前
3D渲染不再熬时间!即梦 Seedance 2.5 具备3D白模渲染功能的AI视频生成工具
人工智能·3d·音视频
答案—answer1 天前
VibeCoding 能做到什么程度?我用它做了一座 3D 数字博物馆
3d·ai编程·threejs·vibecoding
玖玥拾2 天前
Unity3D RPG 入门项目(四)背包拖拽、物品悬浮提示、项目开发思维
3d·unity·游戏引擎
cyadyx3 天前
【Three.js】Three.js 中加载 3D 模型
前端·javascript·3d
chaoyuanl3 天前
悬空玻璃剧场源头厂家选型全解析|270°裸眼3D悬空玻璃剧场投资避坑指南
大数据·人工智能·3d·xr·娱乐·mr
在下胡三汉3 天前
GLTF vs OBJ vs FBX vs GLB:选择合适的 3D 文件格式,怎么获取下载
3d
fanfan_hongyun3 天前
Cesium for unity (可加载3dTileset)
3d