CadQuery 三维建模实例教程:从基础到进阶

CadQuery 三维建模实例教程:从基础到进阶

cadquery A python parametric CAD scripting framework based on OCCT cadquery 项目地址: https://gitcode.com/gh_mirrors/ca/cadquery

前言

CadQuery 是一个强大的参数化三维建模库,它采用 Python 编程语言,提供了直观的 API 来创建复杂的三维模型。本文将通过一系列精心设计的实例,由浅入深地介绍 CadQuery 的核心功能和建模技巧。

基础建模实例

1. 简单矩形板

这是最基础的建模示例,创建一个简单的矩形盒子:

result = cadquery.Workplane("front").box(2.0, 2.0, 0.5)
  • Workplane("front") 定义了初始工作平面
  • box() 方法创建长方体,参数分别为长、宽、高

2. 带孔的板

在基础矩形板上添加中心孔:

length = 80.0
height = 60.0
thickness = 10.0
center_hole_dia = 22.0

result = (
    cq.Workplane("XY")
    .box(length, height, thickness)
    .faces(">Z")  # 选择顶面
    .workplane()  # 在工作平面上操作
    .hole(center_hole_dia)  # 创建通孔
)
  • faces(">Z") 选择Z轴正方向的顶面
  • hole() 方法创建圆形通孔

进阶建模技巧

3. 使用挤出创建棱柱体

通过挤出2D形状创建3D对象:

result = cq.Workplane("front").circle(2.0).rect(0.5, 0.75).extrude(0.5)
  • circle()rect() 创建2D形状
  • extrude() 将2D形状挤出为3D实体

4. 使用线段和弧线构建复杂轮廓

构建自定义轮廓并挤出:

result = (
    cq.Workplane("front")
    .lineTo(2.0, 0)
    .lineTo(2.0, 1.0)
    .threePointArc((1.0, 1.5), (0.0, 1.0))  # 三点定义圆弧
    .close()  # 闭合轮廓
    .extrude(0.25)
)

5. 移动工作点

灵活调整工作平面中心点:

result = cq.Workplane("front").circle(3.0)  # 中心在(0,0)
result = result.center(1.5, 0.0).rect(0.5, 0.5)  # 移动中心到(1.5,0)
result = result.center(-1.5, 1.5).circle(0.25)  # 相对移动中心
result = result.extrude(0.25)

高级建模技术

6. 使用点列表批量创建特征

r = cq.Workplane("front").circle(2.0)  # 创建基础圆
r = r.pushPoints([(1.5, 0), (0, 1.5), (-1.5, 0), (0, -1.5)])  # 添加四个点
r = r.circle(0.25)  # 在每个点上创建小圆
result = r.extrude(0.125)  # 挤出为3D

7. 多边形特征

创建六边形孔:

result = (
    cq.Workplane("front")
    .box(3.0, 4.0, 0.25)
    .pushPoints([(0, 0.75), (0, -0.75)])  # 两个位置
    .polygon(6, 1.0)  # 六边形
    .cutThruAll()  # 完全切割
)

8. 多段线创建工字梁

(L, H, W, t) = (100.0, 20.0, 20.0, 1.0)
pts = [
    (0, H/2.0), (W/2.0, H/2.0), (W/2.0, (H/2.0-t)),
    (t/2.0, (H/2.0-t)), (t/2.0, (t-H/2.0)), (W/2.0, (t-H/2.0)),
    (W/2.0, H/-2.0), (0, H/-2.0)
]
result = cq.Workplane("front").polyline(pts).mirrorY().extrude(L)

专业建模技巧

9. 使用样条曲线定义边缘

sPnts = [
    (2.75, 1.5), (2.5, 1.75), (2.0, 1.5), (1.5, 1.0),
    (1.0, 1.25), (0.5, 1.0), (0, 1.0)
]
r = s.lineTo(3.0, 0).lineTo(3.0, 1.0).spline(sPnts, includeCurrent=True).close()
result = r.extrude(0.5)

10. 镜像对称几何体

r = cq.Workplane("front").hLine(1.0)  # 水平线
r = r.vLine(0.5).hLine(-0.25).vLine(-0.25).hLineTo(0.0)  # 复杂轮廓
result = r.mirrorY().extrude(0.25)  # Y轴镜像

11. 3D对象镜像

result = result.mirror(mirrorPlane="XY", basePointVector=(0, 0, -30))
result = result.union(mirXY_neg)  # 布尔并集

工作平面高级应用

12. 在面上创建工作平面

result = cq.Workplane("front").box(2, 3, 0.5)  # 创建基础棱柱
result = result.faces(">Z").workplane().hole(0.5)  # 在顶面创建孔

13. 在顶点上定位工作平面

result = cq.Workplane("front").box(3, 2, 0.5)
result = result.faces(">Z").vertices("<XY").workplane(centerOption="CenterOfMass")
result = result.circle(1.0).cutThruAll()  # 切割角落

14. 偏移工作平面

result = cq.Workplane("front").box(3, 2, 0.5)
result = result.faces("<X").workplane(offset=0.75)  # 偏移工作平面
result = result.circle(1.0).extrude(0.5)  # 创建圆盘

15. 旋转工作平面

result = (
    cq.Workplane("front")
    .box(4.0, 4.0, 0.25)
    .faces(">Z")
    .workplane()
    .transformed(offset=cq.Vector(0, -1.5, 1.0), rotate=cq.Vector(60, 0, 0))
    .rect(1.5, 1.5, forConstruction=True)
    .vertices()
    .hole(0.25)
)

特殊建模技术

16. 使用构造几何体

result = (
    cq.Workplane("front")
    .box(2, 2, 0.5)
    .faces(">Z")
    .workplane()
    .rect(1.5, 1.5, forConstruction=True)  # 构造矩形
    .vertices()
    .hole(0.125)  # 在顶点处打孔
)

17. 抽壳创建薄壁特征

# 负厚度创建空心壳体
result = cq.Workplane("front").box(2, 2, 2).shell(-0.1)

# 正厚度创建包裹壳体
result = cq.Workplane("front").box(2, 2, 2).shell(0.1)

# 移除特定面
result = cq.Workplane("front").box(2, 2, 2).faces("+Z").shell(0.1)

# 移除多个面
result = cq.Workplane("front").box(2, 2, 2).faces("+Z or -X or +X").shell(0.1)

结语

通过这些实例,我们系统地学习了 CadQuery 的各种建模技术。从基础形状创建到复杂特征建模,从简单操作到高级技巧,CadQuery 提供了强大而灵活的工具集,能够满足从简单原型到复杂工业设计等各种建模需求。

掌握这些技术后,你可以将这些方法组合使用,创造出更加复杂和精细的三维模型。CadQuery 的参数化特性也使得模型修改变得简单高效,大大提高了设计迭代的速度。

cadquery A python parametric CAD scripting framework based on OCCT cadquery 项目地址: https://gitcode.com/gh_mirrors/ca/cadquery

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郎沙圣Sebastian

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值