改一个数,全图重算:用 CadQuery 轻松上手 Python 参数化建模

【免费下载链接】cadquery A python parametric CAD scripting framework based on OCCT 【免费下载链接】cadquery 项目地址: https://gitcode.com/gh_mirrors/ca/cadquery

机械零件改个孔位就得重画一遍,模型文件存了十几个版本,却没几个人说得清哪个才是最新的——如果你也在经历这种痛苦,CadQuery 这个基于 Python 的参数化建模框架,很可能是你的解药。

先正视一个日常:图纸改了七版,没人说得清哪版是最新的

"孔位往左挪两毫米。"

"板厚再加一毫米。"

"四个螺丝孔改成腰型槽。"

在传统 CAD 里,这每一句话都意味着一次"重画"。你拖鼠标、选草图、改约束,然后祈祷刚才的改动没有破坏别的关联特征。更要命的是,这样的模型基本没法放进 Git——图纸的版本管理,靠的是文件名后缀 _final_final2_final_real

而 CadQuery 换了一条路:模型不是"画"出来的,是"算"出来的。 你的设计图纸是一段可运行的 Python 脚本,参数变了,重新运行一次,整张图就自动更新。版本管理回归它本来的样子——提交代码,而不是复制文件。

上手第一课:四行代码,做出一块带孔的板

安装只要一条命令:

pip install cadquery

然后打开编辑器,敲下这几行:

import cadquery as cq

plate = (
    cq.Workplane("XY")          # 在 XY 平面开始
    .box(40, 30, 5)             # 拉出一块 40×30×5 的板
    .faces(">Z").workplane()    # 选中顶面
    .hole(10)                   # 打一个直径 10 的孔
)

CadQuery参数化建模的起点:一个由代码生成的立方体

把它翻译成人话:放一块板,找到顶面,钻一个孔。剩下的布尔运算、曲面求交这些脏活,全部交给底层的 OCCT 几何内核。整套 API 是"链式"的——每一步都从上一个结果继续,读起来跟说话一样自然。

把尺寸变成旋钮:这才是"参数化建模"的精髓

上面那块板还是"死"的。现在把数字换成变量:

length, height, diam = 30.0, 40.0, 22.0   # 三个参数,一处定义

result = (
    cq.Workplane("XY")
    .box(length, height, 10)
    .faces(">Z").workplane()
    .hole(diam)
)

从这一刻起,模型就"活"了。改 diam,孔跟着变;改 length,整块板自动重算。官方文档里那个 608 轴承座的例子,整套参数不过五六行,却能派生出几十种规格。

CadQuery参数化建模界面:调整参数,模型实时更新

这相当于给设计装了一个"旋钮面板"——客户说要大一号?改个变量,重新运行,3D 模型、导出文件全部同步更新。脚本本身就是参数表,这比任何 GUI 里的"参数对话框"都透明。

复杂零件等于多写几句"人话",而不是多拖几小时鼠标

有人会问:这些基础操作,别的工具也能做啊。关键差别在于,它把"在正确的位置做正确的特征"这件事简化到了可怕的程度:

  • 打孔、阵列.hole() 指定直径,.rectArray() 给数量和间距
  • 圆角、倒角.fillet() 选中一条边,一句话搞定
  • 抽壳.shell() 给个厚度,实心体变薄壁件
  • 放样、扫掠:跨截面过渡、沿路径拉伸,都是链式调用

CadQuery参数化建模的布尔运算效果:带孔阵列的零件

更难得的是定位方式。你不需要背一堆绝对坐标,而是直接说"在顶面""在这四个顶点上""在刚才那条边的中点"——像跟同事描述零件一样描述给代码听。控制点、样条曲线这些自由曲面能力也一应俱全,工业设计里那种流线型外壳同样驾驭得住。

CadQuery参数化建模的自由曲面:用控制点塑造复杂外形

有人问:脚本建模不是还有 OpenSCAD 吗? 它确实更老牌,但 CadQuery 用的是标准 Python——意味着你能享受整个 Python 生态:用 numpy 算参数、用 pytest 给模型写测试、把建模脚本塞进 CI 流水线。再加上 OCCT 几何内核带来的 NURBS、样条和 STEP 导入导出,很多别家做不到的事,在这里是默认能力。

从单件到装配体,再到交付 STEP,一步不缺

零件画完,故事才到一半。真实项目里,零件是要装起来、要交给下游的。

CadQuery 的装配支持嵌套:零件可以装成组件,组件再装成总成,层级关系清清楚楚。导出方面,除了常见的 STL,它还支持无损失的 STEP、DXF,以及 AMF、3MF 等格式,直接对接 CNC、3D 打印和下游 CAM 流程。

CadQuery参数化建模装配体:多个零件组合成一台机构

顺带一提,"无损导入 STEP 模型、再在它上面继续加参数化特征"这件事,真没几个脚本框架做得到——这意味着你可以从同事的图纸出发,接着用代码改造它。

玩够了基础?还有三条进阶路线值得走

  1. Jupyter 里交互:在 Notebook 里跑模型,用 display() 直接看结果,边写边验,比反复启动 GUI 舒服得多。
  2. 批量生成与优化:模型既然是一段代码,循环遍历参数就能批量出图纸,接进自动化流水线、做参数寻优都是顺手的事。
  3. 无头部署:它本身就是不带界面的库,可以扔在服务器上当"建模后端",配合 Web 前端生成可交互的参数页面。

想直接跑官方示例的话,clone 一份源码最省事:

git clone https://gitcode.com/gh_mirrors/ca/cadquery

好了,说这么多,不如你亲手敲一遍。找个编辑器,写下 cq.Workplane("XY").box(40, 30, 5),看着那个黄色方块在窗口里浮现——"我写的是代码,出来的却是实体",这种感觉,试过一次就很难回去了。 🚀

【免费下载链接】cadquery A python parametric CAD scripting framework based on OCCT 【免费下载链接】cadquery 项目地址: https://gitcode.com/gh_mirrors/ca/cadquery

更多推荐