用 Python 脚本做参数化三维建模:CadQuery 从方块到装配体的完整指南
【免费下载链接】cadqueryA python parametric CAD scripting framework based on OCCT项目地址: https://gitcode.com/gh_mirrors/ca/cadquery
CadQuery 是一个基于 OpenCASCADE 内核的 Python 参数化 CAD 框架:你写的不是点击步骤,而是一段脚本,它直接生成实体模型,还能导出 STEP、STL、AMF、3MF 等格式。对想用"改一个变量就重生成整个零件"来替代手工建模的工程师、学生和创客来说,它是目前最顺滑的入门路径之一。
为什么参数化脚本比手点 CAD 更省心
传统 CAD 里改个尺寸,往往要回到特征树里逐项调整;而 CadQuery 把模型写成一段可读的 Python——模型本身就是文档,版本进 git,改参数重跑一遍就得到新零件。适合的场景:结构件系列化、批量生成相似零件、把几何算进仿真流水线。
把尺寸变成变量,改一行数字就重生成模型
下面这段脚本先搭一块底座,长宽高都是变量:
import cadquery as cq from cadquery.vis import show l, w, t = 60.0, 80.0, 10.0 result = cq.Workplane("XY").box(l, w, t) show(result)改l = 60.0为任意值,重跑脚本,模型立即更新。这就是参数化建模:模型由数据驱动,而不是由你的手速驱动。
工作平面:给模型指定一张"临时草稿纸"
真正难的往往不是画形状,而是"画在哪儿"。CadQuery 的答案是工作平面(Workplane):选一个面,在它上面画线打孔,完全不用手算三维坐标。
top = result.faces(">Z").workplane() result = top.hole(22.0)faces(">Z")选中最朝上的面,workplane()把这张面变成新的草稿纸,接着就能像平面作图一样定位特征。
从草图到实体:建模主线怎么走
Sketch 组合轮廓,再拉伸成三维
cq.Sketch负责二维轮廓,拉伸(extrude)负责变三维——绝大多数零件都是这条路径:
sk = cq.Sketch().rect(50, 30).vertices().fillet(5) sk = sk.push([(15, 15), (-15, -15)]).circle(3) result = cq.Workplane("XY").placeSketch(sk).extrude(8)先画 50×30 的圆角矩形,再在两个点各加一个圆,最后整体拉伸 8mm。草图加拉伸,覆盖了日常零件的 80% 需求。
布尔运算:加减模型只要一行
组合多个实体时,cut、union、intersect就是最直接的思路:
base = cq.Workplane("XY").box(100, 100, 20) hole = cq.Workplane("XY").circle(10).extrude(30) result = base.cut(hole)从长方体里减掉一个圆柱,一个通孔就出来了。倒角、抽壳、开孔这类常用操作,API 也做了封装(fillet、shell、hole、cboreHole),你很少需要手写底层布尔。
用阵列和选择器把重复劳动变一行代码
选择器让你精确挑出面、边、顶点(">Z"最上面的面、"|Z"竖直的边、"XY"平行于 XY 平面的面),阵列则让"重复特征"只写一次。以四角沉头孔为例:
result = ( cq.Workplane("XY") .box(80, 60, 10) .faces(">Z") .workplane() .rect(80 - 12, 60 - 12, forConstruction=True).vertices() .cboreHole(2.4, 4.4, 2.1) )构造矩形只用来取四个顶点(forConstruction=True不会参与轮廓),cboreHole一次性生成四个沉头孔。孔位跟着rect走,你把板子改大改小,孔永远留在四角——这正是参数化的威力。
从单个零件到装配体,再到渲染展示
Assembly 组装多零件,位置关系清晰可控
零件建好了,Assembly把它们按位置和名字组装起来:
from cadquery import Assembly, Location, Vector assy = Assembly() assy.add(cq.Workplane("XY").box(100, 50, 20), name="base") assy.add(cq.Workplane("XY").cylinder(15, 30), name="post", loc=Location(Vector(50, 25, 20)))两个零件、各自命名、各自定位,装配关系一目了然,后续还能导出成 STEP 交付给其他 CAD 工具。
自带可视化:转视角、调透明度、出截图
模型建完总要"看一眼"。CadQuery 从 2.4 版起内置了基于 VTK 的可视化,不需要外部工具:
show(result, alpha=0.6, roll=-30, elevation=-30)透明渲染配合视角调整,方便检查内部结构;加一个screenshot="img.png"参数还能直接存图,写报告、贴文档都很方便。
文档、示例与上手第一步
| 资源 | 位置 |
|---|---|
| 快速上手教程 | doc/quickstart.rst |
| 安装说明 | doc/installation.rst |
| 工作平面与特征 API | cadquery/cq.py |
| 选择器语法 | cadquery/selectors.py |
| Sketch 草图模块 | cadquery/sketch.py |
| 装配体实现 | cadquery/assembly.py |
| 渲染与截图 | cadquery/vis.py |
| 建模示例脚本 | examples/ |
建议的学习路径:先读快速上手,再跑examples/里的脚本——每个文件都是可运行的完整零件,比如Ex100_Lego_Brick.py用rarray生成乐高凸点阵列、Ex003_Pillow_Block_With_Counterbored_Holes.py就是本文垫块的完整版。
第一步就三件事:
git clone https://gitcode.com/gh_mirrors/ca/cadquery克隆后按doc/installation.rst装好环境(推荐 conda/conda-forge),然后打开doc/quickstart.rst跟着敲一遍。你会发现从"一个方块"到"一个能交付的零件",比你想象的要短。
【免费下载链接】cadqueryA python parametric CAD scripting framework based on OCCT项目地址: https://gitcode.com/gh_mirrors/ca/cadquery
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考