news 2026/8/24 11:06:19

用 Python 脚本做参数化三维建模:CadQuery 从方块到装配体的完整指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
用 Python 脚本做参数化三维建模:CadQuery 从方块到装配体的完整指南

用 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% 需求。

布尔运算:加减模型只要一行

组合多个实体时,cutunionintersect就是最直接的思路:

base = cq.Workplane("XY").box(100, 100, 20) hole = cq.Workplane("XY").circle(10).extrude(30) result = base.cut(hole)

从长方体里减掉一个圆柱,一个通孔就出来了。倒角、抽壳、开孔这类常用操作,API 也做了封装(filletshellholecboreHole),你很少需要手写底层布尔。

用阵列和选择器把重复劳动变一行代码

选择器让你精确挑出面、边、顶点(">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
工作平面与特征 APIcadquery/cq.py
选择器语法cadquery/selectors.py
Sketch 草图模块cadquery/sketch.py
装配体实现cadquery/assembly.py
渲染与截图cadquery/vis.py
建模示例脚本examples/

建议的学习路径:先读快速上手,再跑examples/里的脚本——每个文件都是可运行的完整零件,比如Ex100_Lego_Brick.pyrarray生成乐高凸点阵列、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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/24 11:05:22

GLM 5.3 Flash前瞻:大模型轻量化、加速推理与本地部署实战

最近在AI大模型圈子里,关于“GLM 5.3 Flash”的讨论热度很高。虽然智谱官方尚未正式发布,但种种迹象表明,一个更轻量、更快速的新版本可能正在路上。这无疑给已经白热化的大模型竞赛又添了一把火,特别是面对DeepSeek V4 Flash等强…

作者头像 李华
网站建设 2026/8/24 11:04:37

NocoDB 完全上手指南:5 分钟把数据库变成可视化数据库表格

NocoDB 完全上手指南:5 分钟把数据库变成可视化数据库表格 【免费下载链接】nocodb 🔥 🔥 🔥 A Free & Self-hostable Airtable Alternative 项目地址: https://gitcode.com/GitHub_Trending/no/nocodb 团队还在用电子…

作者头像 李华
网站建设 2026/8/24 11:04:30

让AI生成的页面不再“模板味“:Taste-Skill前端设计指南

让AI生成的页面不再"模板味":Taste-Skill前端设计指南 【免费下载链接】taste-skill Taste-Skill - gives your AI good taste. stops the AI from generating boring, generic slop 项目地址: https://gitcode.com/GitHub_Trending/ta/taste-skill …

作者头像 李华
网站建设 2026/8/24 11:04:10

AI代理本地部署实战:从环境搭建到批量任务处理

这次我们来看一个近期在AI代理领域引发关注的项目——Grok Bot。根据公开信息,这是一个由单人团队开发并运营的AI代理系统,其核心亮点在于能够模拟人类执行复杂的网络任务,例如信息检索、内容生成、自动化交互等。马斯克在社交媒体上的公开赞…

作者头像 李华
网站建设 2026/8/24 11:03:51

从复数乘法到工程实现:浮点数精度、模块化与工业级代码设计

1. 项目概述:从一道编程题看复数运算的工程实现 “Basic 1051 复数乘法 (15分)”这个标题,对于参加过编程类考试或刷过在线评测(OJ)平台的朋友来说,一眼就能看出它的背景。这通常是一道来自“PAT (Basic Level)”或类似…

作者头像 李华
网站建设 2026/8/24 11:03:04

基于SpringBoot的简历智能推荐系统(源码+lw+部署文档+讲解等)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

作者头像 李华