12.选择器参考 - CadQuery 中文文档

CadQuery 选择器字符串允许过滤各种类型的对象列表。最常用的是边、面和顶点,但也可以过滤所有对象类型。

使用以下方法创建对象列表,每个方法收集一种形状:

每个方法都接受一个选择器对象或一个字符串。字符串选择器用来使用对象非常简单快捷。如果传入字符串模式,CadQuery 将自动使用关联的选择器对象。

::: primary Note
字符串选择器只是具体选择器类的快捷方式,您可以使用或扩展它们。有关每个选择器类如何工作的完整说明,请参阅CadQuery 类摘要

如果您发现内置选择器不够用,您可以轻松插入自己的选择器。请参阅扩展 CadQuery 以了解具体操作方法。
:::

组合选择器

选择器可以进行逻辑组合,目前定义的运算符包括andornotexc[ept](设置差值)。例如:

m_d09c2b15f6f3da5144e3db8d4984f578_r.png

result = cq.Workplane("XY").box(2, 2, 2).edges("|Z and >Y").chamfer(0.2)

还可以使用更复杂的表达式:
m_fd1687f354d7d704ca8bb0dc518c9d34_r.png

result = (
    cq.Workplane("XY")
    .box(2, 2, 2)
    .faces(">Z")
    .shell(-0.2)
    .faces(">Z")
    .edges("not(<X or >X or <Y or >Y)")
    .chamfer(0.1)
)

过滤面 Faces

所有类型的字符串选择器都适用于面。在大多数情况下,选择器指的是面的 法向量 方向。

::: warning
如果一个面不是平面,选择器在面的质心处进行评估。这可能会导致意想不到的结果。
:::

下面列表中使用的轴用于说明:任何轴在每种情况下都可以类似地工作。

选择器选择
+Z法线朝向+z方向的面(即Z方向最顶端的面)
cadquery.DirectionSelector
|Z法线平行于 z 方向的面
(即法线和Z方向平行,图中上下两个面)
cadquery.ParallelDirSelector
-Xx 负方向法线面cadquery.DirectionSelector
#Z法线正交(垂直)于 z 方向的面
(即法线与Z方向垂直,如图中前后左右4个面)
cadquery.PerpendicularDirSelector
%Plane平面类型的面,如图中前后左右上下6个面
cadquery.TypeSelector
>Y正 y 方向最远的面cadquery.DirectionMinMaxSelector
<Y负 y 方向最远的面cadquery.DirectionMinMaxSelector
>Y[0]
>Y[-1]
按法线方向从负到正,正数编号从0开始,负数编号从 -1 开始
>Y[0] 等于 >Y[-4]
cadquery.DirectionNthSelector
<Y[0]
<Y[-1]
法线方向从正到负,正数编号从0开始,负数编号从 -1 开始
<Y[0] 等于 <Y[-4]
cadquery.DirectionNthSelector
>>Y[-1]y 方向第一远的面
相比,>> 强调面的朝向,> 强调法线的朝向
cadquery.CenterNthSelector
<<Y[0]y 方向第一近的面
与 < 相比,<< 强调面的朝向,< 强调法线的朝向
cadquery.CenterNthSelector

过滤边 Edges

选择器通常指的是边缘的方向。
::: warning Note
除了类型 (%) 和中心 (>>) 之外,任何字符串选择器都不会选择非线性边缘。应用这些过滤器时,永远不会返回非线性边缘。
:::
下面列表中使用的轴用于说明:任何轴在每种情况下都可以类似地工作。

选择器选择
+Z边的方向与 Z 正方向一致
左图:+Z选中红色边线
右图:沿Y轴旋转180度后,因为改变了边的方向,因此+Z无法选中红色的边线
cadquery.DirectionSelector
|Z边平行于 z 方向,不管边的方向如何,只要和Z平行即可
对于上边两张图都可以使用 |Z 选中红色部分的边线
cadquery.ParallelDirSelector
-X边的方向与 x 负方向一致cadquery.DirectionSelector
#Z垂直于 z 方向的边cadquery.PerpendicularDirSelector
%Line类型为线的边cadquery.TypeSelector
>Y正 y 方向最远的边cadquery.DirectionMinMaxSelector
<Y负 y 方向最远的边cadquery.DirectionMinMaxSelector
>Y[0]正 y 方向,第一近的平行边cadquery.DirectionNthSelector
>Y[-1]正 y 方向,第一远的平行边cadquery.DirectionNthSelector
>>Y[0]正 y 方向第一近的边缘
与 > 相比,>> 强调线与正Y方向的位置,> 强调必须是平行边
cadquery.CenterNthSelector
<<Y[-1]负 y 方向第一远的边缘cadquery.CenterNthSelector

过滤顶点 Vertices

只有少数过滤器类型适用于顶点。顶点的位置是过滤器的主题。

|选择器 |选择 |选择器类 |
|:–|
|>Y |正 y 方向最远的顶点 |cadquery.DirectionMinMaxSelector |
|<Y |负 y 方向最远的顶点 |cadquery.DirectionMinMaxSelector |
|>>Y[-2] |y 方向第二远的顶点
!!#ff0000 >> 与 > 对于顶点来说暂未发现区别 !! |cadquery.CenterNthSelector |
|<<Y[0] |y 方向中第一近的顶点 |cadquery.CenterNthSelector |

用户定义的方向

可以使用用户定义的向量作为选择器的基础。例如:

result = cq.Workplane("XY").box(10, 10, 10)

# chamfer only one edge
result = result.edges(">(-1, 1, 0)").chamfer(1)

拓扑选择器

也可以利用拓扑关系来选择对象。目前支持以下方法:

祖先允许选择包含当前所选对象的所有对象。
m_d2c50d5a7dccc825d4e719eaef27017b_r.png

result = cq.Workplane("XY").box(10, 10, 10).faces(">Z").edges("<Y")

result = result.ancestors("Face")

同类对象允许选择所有通过指定类型元素连接的同类对象。

m_d649d99561f74b9b2d7374a5cc8f66b7_r.png

result = cq.Workplane("XY").box(10, 10, 10).faces(">Z")

result = result.siblings("Edge")

将选择器与形状和草图对象一起使用

可以将选择器与cadquery.Shapecadquery.Sketch 对象一起使用。这包括链接和组合。

m_c24541d649dc135c3d776378cb35a056_r.png

box = cq.Solid.makeBox(1,2,3)

# select top and bottom wires
result = cq.Workplane(obj=box).faces(">Z or <Z").wires()

文章来源:CadQuery 中文文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值