CadQuery核心概念:Workplane工作平面详解

CadQuery核心概念:Workplane工作平面详解

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

什么是Workplane工作平面

在CadQuery这个参数化CAD建模库中,Workplane(工作平面)是最核心的概念之一。它代表三维空间中的一个二维平面,所有建模操作都是相对于当前工作平面进行的。

工作平面包含三个关键要素:

  1. 原点位置 - 平面的中心点坐标
  2. 坐标系 - 定义X、Y、Z方向的局部坐标系
  3. 参考对象 - 可选的父级工作平面或几何体

工作平面基础操作

创建初始工作平面

默认情况下,CadQuery从XY平面开始:

import cadquery as cq

# 创建XY平面上的工作平面
wp = cq.Workplane("XY")

基于几何体创建新工作平面

在已有几何体上选择面来创建工作平面非常常见:

# 创建一个立方体
box = wp.box(10, 20, 30)

# 选择顶面创建新工作平面
top_plane = box.faces(">Z").workplane()

自定义工作平面

你可以通过多种方式定义自定义工作平面:

# 通过三点定义平面
custom_plane = wp.workplaneFromPoints((0,0,0), (1,0,0), (0,1,0))

# 偏移现有平面
offset_plane = wp.workplane(offset=10)

# 旋转平面
rotated_plane = wp.workplane(rotate=(45, 0, 0))

二维到三维建模流程

工作平面的强大之处在于它允许你在2D平面上设计,然后转换为3D特征。

典型工作流程

  1. 创建工作平面
  2. 绘制2D草图(圆、矩形、多边形等)
  3. 使用拉伸、旋转、扫掠等方式创建3D特征
result = (cq.Workplane("XY")
          .circle(5)          # 在XY平面画圆
          .extrude(10)        # 拉伸成圆柱
          .faces(">Z")        # 选择顶面
          .workplane()        # 在顶面创建新工作平面
          .rect(2, 2)        # 画矩形
          .extrude(5))        # 拉伸成立方体

选择器与上下文

选择器(Selectors)

选择器允许你选择几何体的特定部分:

# 选择所有垂直边
vertical_edges = result.edges("|Z")

# 选择距离原点最远的面
furthest_face = result.faces(">>[0,0,0]")

上下文实体(Context Solid)

CadQuery会自动跟踪"上下文实体" - 即当前正在修改的主要实体:

# 立方体是上下文实体
box = cq.Workplane("XY").box(1,1,1)

# 添加的圆柱会自动与立方体合并
box = box.faces(">Z").circle(0.5).extrude(1)

如果需要创建独立实体,可以设置combine=False:

separate_cylinder = box.faces(">Z").circle(0.5).extrude(1, combine=False)

高级特性

链式操作

CadQuery支持流畅的链式操作,每个方法返回新的工作平面:

result = (cq.Workplane("XY")
          .box(10, 10, 2)
          .faces(">Z").workplane()
          .circle(3).extrude(5)
          .faces(">Z").workplane()
          .circle(1).cutThruAll())

标签系统

使用标签可以标记重要的工作平面以便后续引用:

result = (cq.Workplane("XY")
          .box(10, 10, 2).tag("base")
          .faces(">Z").workplane()
          .circle(3).extrude(5).tag("cylinder")
          
# 后续可以通过标签引用
base_plane = result.workplaneFromTagged("base")

批量操作

许多方法会自动对工作平面上的所有对象进行操作:

# 在立方体每个顶点创建圆
result = (cq.Workplane("XY")
          .box(10, 10, 2)
          .faces(">Z").vertices().circle(1))

调试技巧

理解工作平面状态对调试很有帮助。可以打印工作平面对象查看其属性:

wp = cq.Workplane("XY").box(1,1,1)
print(wp)

输出示例:

Workplane object:
  parent: None
  plane: Plane:
    origin: (0.0, 0.0, 0.0)
    z direction: (0.0, 0.0, 1.0)
  objects: [Solid]
  modelling context: 
    pendingWires: []
    pendingEdges: []
    tags: {}

最佳实践

  1. 合理使用标签:为关键工作平面添加标签,方便后续引用
  2. 注意上下文实体:理解哪些操作会自动合并到上下文实体
  3. 利用链式操作:保持代码整洁和可读性
  4. 适时使用选择器:熟练使用各种选择语法精确定位几何特征
  5. 考虑性能:复杂的链式操作可能会影响性能,必要时可以拆分

通过掌握工作平面这一核心概念,你可以充分利用CadQuery的强大功能,创建复杂而精确的参数化3D模型。

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
发出的红包

打赏作者

汤力赛Frederica

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

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

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

打赏作者

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

抵扣说明:

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

余额充值