CadQuery 完整入门指南:用 30 行 Python 写出你的第一个三维模型

发布时间:2026/8/24 13:36:48
CadQuery 完整入门指南:用 30 行 Python 写出你的第一个三维模型 CadQuery 完整入门指南用 30 行 Python 写出你的第一个三维模型【免费下载链接】cadqueryA python parametric CAD scripting framework based on OCCT项目地址: https://gitcode.com/gh_mirrors/ca/cadqueryCadQuery 是一个 Python 参数化建模工具你写 Python它产出真正的三维实体改一个数字整个零件重新生成。适合机械工程师、产品设计师和 3D 打印爱好者目标是读完就能独立做出第一个完整零件。 先看效果30 行代码出一块轴承座第一个成品是 608 轴承座80×60×10mm 底板中心 22mm 通孔四角带沉头孔竖直棱边倒圆。import cadquery as cq from cadquery.vis import show # 轴承座底板 中心孔 4 个沉头孔 倒圆角 r (cq.Workplane(XY).box(80, 60, 10) .faces(Z).workplane().hole(22) .faces(Z).workplane().rect(68, 48, forConstructionTrue) .vertices().cboreHole(2.4, 4.4, 2.1) .edges(|Z).fillet(2)) show(r)跑一遍就得到上图。注意所有尺寸都是数字变量想改成 100×80 的板只改 2 个数字。 拆给你看4 个动作拼出这个零件上一段的代码拆成 4 个动作每个动作只做一件事按顺序做就不会乱。第 1 步选工作平面铺出底板做什么在 XY 工作平面上放一个长方体。为什么工作平面是你的作图板所有二维草图和拉伸都从它开始。类比桌上先铺一张草稿纸才能放直尺画图。import cadquery as cq # XY 工作平面 一个长方体底板完成 base cq.Workplane(XY).box(80, 60, 10)术语Workplane定义当前作图平面box()直接生成实体不需要先画线再拉伸。第 2 步把平面放到顶面打中心孔做什么faces(Z)选中顶面workplane()在面上铺开新平面hole(22)钻通孔。为什么孔要打在顶面中心所以顺序是先选中在哪画再画。选择器Z的含义是法线朝 Z 正向的面。result ( cq.Workplane(XY).box(80, 60, 10) .faces(Z) # 选中顶面 .workplane() # 在面上铺新工作平面 .hole(22) # 直径 22 的通孔 )第 3 步画参考矩形定位 4 个角孔做什么画一个比底板小 12mm 的参考矩形选它的 4 个角点一次cboreHole打出 4 个 M2 沉头孔。为什么角孔尺寸是固定的只需定位用角点定位就不用手算 4 组坐标。# 参考矩形不进入实体只用来取 4 个角点 result (result.faces(Z).workplane() .rect(68, 48, forConstructionTrue) .vertices().cboreHole(2.4, 4.4, 2.1))第 4 步倒圆角收尾做什么选中竖直棱边倒 2mm 圆角。为什么|Z选择器挑出所有平行 Z 轴的边一次全选中。# 选中竖直棱边倒 2mm 圆角 result result.edges(|Z).fillet(2) 换个场景玩同一条链做 3 种零件学会选面 → 铺平面 → 加特征这条链之后下面 3 类零件都是换参数。如果你的目标是薄壁壳体挑战板是实心的盒子和外壳结构需要掏空。解法shell()一行掏空被选中的面会被移除、变成开口。# 掏空长方体顶面开口壁厚 0.5 shell cq.Workplane(XY).box(40, 30, 20).faces(Z).shell(0.5)如果你的目标是把多个零件装到一起挑战真实产品不是单个零件。解法Assembly把零件叠起来每个零件用Location定位置官方文档里还有一个铝型材柜门装配的完整案例。from cadquery import Assembly, Location, Vector part cq.Workplane().box(20, 10, 5) assy (Assembly(part, locLocation(Vector(-10, 0, 2.5))) .add(part, locLocation(Vector(10, 0, 2.5))))如果你的目标是带弧线的自由形状挑战box 和 rect 全是直线。解法spline按给定点串出一条光滑曲线闭合后拉伸就是带弧边的零件。result (cq.Workplane(XY) .spline([(0, 0), (10, 8), (20, 2), (30, 10)]) .lineTo(30, -5).lineTo(0, -5).close() .extrude(5))⚡ 让流程更顺3 个习惯下面 3 个习惯能把建模 → 可用的时间明显压短。一、参数化不写死。尺寸放开头改一处全零件跟随# 改前尺寸写死在链条中间改动要全文找 cq.Workplane(XY).box(80, 60, 10) # 改后变量提到开头改 1 个数字整个零件跟着变 H, W, T 80, 60, 10 cq.Workplane(XY).box(W, H, T)二、封装成函数复用。同一结构不同尺寸传参就行def make_plate(length, width, thickness, d): return (cq.Workplane(XY).box(length, width, thickness) .faces(Z).workplane().hole(d)) make_plate(30, 20, 10, 5) # 换一组参数就是另一块板三、随时 show别憋着做完再查。每加一步渲染一次错在当步就能发现from cadquery.vis import show show(result) # 打开 3D 窗口查看 show(result, alpha0.5) # 半透明方便看内部特征想深入可以翻翻 官方文档的 QuickStart仓库的 examples/ 目录还有 26 个按编号排好的示例从立方体到样条曲线。⚠️ 新手常踩的坑新手报错九成来自这 3 处对着查能省大量时间。坑 1现象模型表面多出几何体或下一步拉伸报错。原因参考矩形忘了forConstructionTrue它被当成了实体的一部分。处理画任何参考线、参考框时都带上这个参数。坑 2现象fillet一跑就报错或形状崩掉。原因圆角半径超过局部特征尺寸棱只有 2mm 厚却设了 5。处理先用最小尺寸的三分之一试再逐步加大。坑 3现象导出的 STL 没有孔就是一块光板。原因链条是不可变的每一步都返回新对象导出的是加孔之前的旧变量。处理永远导出最后的result中间变量只用于检查。 收尾从点鼠标到写配方转变只有一处从在软件里一步步点特征变成把整个零件写成一份配方。配方写完可复现、可分享、改参数就能批量出不同尺寸。行动号召先把开头那 30 行原样跑一遍改 2 个数字再跑一遍确认手感没问题后去 examples/ 从 Ex001 开始按编号过一遍下一站就是装配体。【免费下载链接】cadqueryA python parametric CAD scripting framework based on OCCT项目地址: https://gitcode.com/gh_mirrors/ca/cadquery创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考