CadQuery:代码驱动3D建模的开源解决方案
在传统CAD设计流程中,工程师常常面临三大痛点:反复修改的繁琐操作、设计版本管理的混乱、以及跨团队协作时的格式兼容问题。这些挑战不仅降低工作效率,还可能导致设计错误和项目延期。CadQuery作为基于Python的参数化CAD脚本框架,通过代码驱动设计的创新理念,为解决这些行业痛点提供了全新思路。
CadQuery的核心价值在于将3D建模转化为可编写、可测试、可版本控制的代码工程。想象一下,当你需要修改一个复杂零件的尺寸时,只需调整几行参数代码而非手动重新建模;当团队协作时,通过Git即可追踪设计变更而非交换各种格式的文件;当需要生成系列化产品时,通过循环和条件语句即可批量创建不同规格的模型。这种"代码即设计"的模式,重新定义了数字建模的工作方式。
发现CadQuery的独特价值主张
CadQuery基于强大的OCCT几何内核构建,将Python的简洁易用与专业CAD软件的精确性完美结合。与传统CAD工具相比,它带来了三大革命性改变:
1. 真正的参数化设计
不同于传统CAD中有限的参数驱动功能,CadQuery允许开发者使用完整的Python语法定义设计逻辑。从简单的立方体到复杂的曲面结构,所有几何特征都可以通过参数精确控制,实现"一处修改,处处更新"的设计效率。
2. 版本化的设计过程
由于设计以代码形式存在,开发者可以利用Git等版本控制工具追踪每一次修改,轻松比较不同设计版本的差异,甚至在需要时回滚到之前的设计状态。这种可追溯性是传统CAD文件无法比拟的优势。
3. 自动化与批量处理能力
通过Python的编程能力,CadQuery可以实现设计过程的自动化。无论是生成系列化零件、进行设计优化迭代,还是与其他工程软件集成,都能通过脚本轻松完成,大幅减少重复劳动。

CadQuery装配体功能展示:多组件参数化设计与精确装配,XYZ坐标轴显示了空间定位精度
掌握提升效率的工具链
效率工具:让设计流程更流畅
CadQuery提供了一系列提升建模效率的核心工具,帮助开发者快速将创意转化为精确模型:
1. 工作平面系统
cadquery.Workplane是CadQuery的核心设计界面,它提供了直观的坐标系统和几何构建方法。通过Workplane,开发者可以轻松定义2D草图并将其拉伸为3D模型,或在现有模型表面创建新的特征。
2. 选择器工具
精确选择几何元素是复杂建模的关键。CadQuery提供了强大的选择器API,如edges()、faces()和vertices()方法,结合selectors模块中的高级选择策略,可以精确定位到模型的任何部分进行操作。
3. 草图求解器
位于cadquery.occ_impl.sketch_solver.py的草图求解器,能够自动处理几何约束,确保草图的准确性和一致性。无论是直线与圆弧的相切关系,还是对称结构的尺寸控制,求解器都能高效处理。

参数化设计示例:通过调整右侧参数面板中的数值,可实时更新左侧3D模型,实现设计的快速迭代
扩展插件:扩展设计能力边界
CadQuery的插件生态系统极大地扩展了其核心功能,满足不同领域的专业需求:
1. 导出器插件
位于cadquery/occ_impl/exporters/目录的导出器插件,支持将设计导出为多种工业标准格式:
- STEP格式:用于与其他CAD软件交换数据
- DXF格式:生成2D工程图纸
- AMF/3MF格式:支持3D打印
- SVG格式:创建矢量图形
- JSON格式:便于Web应用集成
2. 导入器插件
cadquery/occ_impl/importers/目录下的导入器,允许CadQuery读取外部CAD文件,实现设计的复用和协作:
- STEP导入:读取工业标准3D模型
- DXF导入:导入2D工程图纸
- BREP格式:高效读取边界表示文件
3. 可视化插件
cadquery/vis.py提供了多种可视化选项,从简单的线框显示到带有材质和光照的高级渲染,帮助开发者直观地预览设计效果。
集成环境:打造无缝工作流
CadQuery可以与多种开发和设计工具集成,形成完整的工作流程:
1. Jupyter Notebook集成
通过cadquery.jupyter_tools,开发者可以在Jupyter Notebook中编写和执行CadQuery代码,并实时查看3D模型。这种交互式开发环境特别适合教学、演示和设计探索。
2. CQ-Editor
CQ-Editor是CadQuery的专用图形界面,提供代码编辑、模型预览和参数调整的一体化环境,兼顾了代码驱动设计的灵活性和传统CAD的直观性。
3. CI/CD集成
由于设计以代码形式存在,CadQuery模型可以轻松集成到持续集成/持续部署流程中,实现自动化测试和设计验证。

CadQuery开发环境示例:左侧为Python代码编辑器,右侧实时显示3D模型预览,实现"代码即所见"的开发体验
实践指南:从新手到专家的成长阶梯
新手入门:快速掌握核心概念
1. 环境搭建
开始使用CadQuery的第一步是搭建开发环境。通过以下命令克隆仓库并安装依赖:
git clone https://gitcode.com/gh_mirrors/ca/cadquery
cd cadquery
conda env create -f environment.yml
conda activate cadquery
2. 第一个模型
创建一个简单的立方体是学习CadQuery的最佳起点:
import cadquery as cq
# 创建一个60x80x10的立方体
result = cq.Workplane("XY").box(60, 80, 10)
# 显示模型
show_object(result)
这段代码展示了CadQuery的核心工作流程:创建工作平面、添加几何特征、预览结果。通过修改数值参数,你可以立即看到模型的变化。
3. 基础操作
掌握以下基本操作,你就能创建大多数简单零件:
box():创建立方体cylinder():创建圆柱体extrude():将2D草图拉伸为3D模型cut():从模型中减去材料fillet():为边添加圆角
进阶技巧:提升建模效率
1. 参数化设计模式
将设计参数集中管理,是实现灵活设计的关键:
def create_bracket(length=100, width=50, height=30, hole_diameter=10):
return (
cq.Workplane("XY")
.box(length, width, height)
.faces(">Z")
.workplane()
.hole(hole_diameter)
)
# 创建不同尺寸的支架
small_bracket = create_bracket(80, 40, 25, 8)
large_bracket = create_bracket(120, 60, 35, 12)
2. 复杂特征创建
利用CadQuery的高级功能创建复杂几何特征:
loft():创建放样特征,实现不同截面间的平滑过渡sweep():沿路径扫描截面,创建复杂形状revolve():旋转截面创建回转体shell():创建薄壁结构
3. 装配体设计
使用cadquery.Assembly创建多零件装配体:
from cadquery import Assembly, Part
# 创建两个零件
part1 = cq.Workplane("XY").box(50, 50, 10)
part2 = cq.Workplane("XY").cylinder(15, 20)
# 创建装配体并添加零件
assy = Assembly()
assy.add(Part(part1, name="base"))
assy.add(Part(part2, name="post"), loc=cq.Location((25, 25, 10)))
# 显示装配体
show_object(assy)

CadQuery高级渲染效果:展示了线框与实体混合显示模式,绿色立方体与蓝色圆环形成对比,突出了渲染样式的灵活性
性能优化:处理复杂模型
1. 几何缓存
对于重复使用的复杂几何,使用缓存提高性能:
from functools import lru_cache
@lru_cache(maxsize=None)
def create_complex_feature(size):
# 创建复杂特征的代码
return result
2. 选择性更新
在开发复杂模型时,只更新修改的部分而非整个模型:
# 只重建修改过的特征
def update_design(part, new_parameter):
part.features["hole"].parameter = new_parameter
part.rebuild(["hole"]) # 只重建"hole"特征
3. 高效选择器使用
精确的选择器可以减少不必要的计算:
# 精确选择而非全局搜索
edges_to_fillet = part.faces(">Z").edges("<Y")
edges_to_fillet.fillet(5)
成长路径:学习资源与社区贡献
学习资源:系统掌握CadQuery
1. 官方文档
CadQuery提供了全面的官方文档,位于项目的doc/目录:
doc/quickstart.rst:快速入门指南,适合新手doc/apireference.rst:完整API参考,详细说明所有类和方法doc/assy.rst:装配体设计教程doc/sketch.rst:草图功能详解
2. 示例代码
examples/目录包含丰富的示例项目,从简单零件到复杂装配体,展示了各种建模技术:
Ex001_Simple_Block.py:基础立方体创建Ex018_Making_Lofts.py:放样特征示例Ex100_Lego_Brick.py:复杂零件设计
3. 视频教程
CadQuery社区制作了大量视频教程,涵盖从基础操作到高级技巧的各个方面,适合视觉学习者。
社区贡献:参与项目发展
1. 提交Issue
发现bug或有功能建议时,可以在项目仓库提交Issue,帮助改进CadQuery。
2. 贡献代码
如果你开发了有用的功能或修复了bug,可以通过Pull Request贡献代码:
- Fork项目仓库
- 创建特性分支
- 提交修改
- 创建Pull Request
3. 分享案例
将你的设计案例分享到社区,不仅可以帮助他人,还能获得反馈和改进建议。

CadQuery复杂曲面建模:通过控制点精确调整曲面形状,展示了高级建模能力
加入CadQuery社区
CadQuery正在快速发展,其强大的代码驱动设计理念正在改变工程师和设计师的工作方式。无论你是机械工程师、产品设计师还是编程爱好者,都能在CadQuery社区中找到自己的位置。
你准备好用代码来释放你的设计创造力了吗?访问项目仓库,开始你的参数化设计之旅,或者分享你用CadQuery创建的精彩项目。在这个代码与设计交汇的世界里,每一行代码都能成为现实中的创新产品!
GLM-5智谱 AI 正式发布 GLM-5,旨在应对复杂系统工程和长时域智能体任务。Jinja00
GLM-5.1GLM-5.1是智谱迄今最智能的旗舰模型,也是目前全球最强的开源模型。GLM-5.1大大提高了代码能力,在完成长程任务方面提升尤为显著。和此前分钟级交互的模型不同,它能够在一次任务中独立、持续工作超过8小时,期间自主规划、执行、自我进化,最终交付完整的工程级成果。Jinja00
LongCat-AudioDiT-1BLongCat-AudioDiT 是一款基于扩散模型的文本转语音(TTS)模型,代表了当前该领域的最高水平(SOTA),它直接在波形潜空间中进行操作。00- QQwen3.5-397B-A17BQwen3.5 实现了重大飞跃,整合了多模态学习、架构效率、强化学习规模以及全球可访问性等方面的突破性进展,旨在为开发者和企业赋予前所未有的能力与效率。Jinja00
HY-Embodied-0.5这是一套专为现实世界具身智能打造的基础模型。该系列模型采用创新的混合Transformer(Mixture-of-Transformers, MoT) 架构,通过潜在令牌实现模态特异性计算,显著提升了细粒度感知能力。Jinja00
FreeSql功能强大的对象关系映射(O/RM)组件,支持 .NET Core 2.1+、.NET Framework 4.0+、Xamarin 以及 AOT。C#00