CadQuery:如何按形状选择边缘

问题描述 投票:0回答:1

我有以下代码:

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

top = (
    base
    .faces(">Z")
    .workplane()
    .box(5,5,5)
) 

如何仅获取

top
框的所有边缘?

edges = top.edges()
包含两个盒子的所有边缘。有没有办法只选择
top
框?

cadquery
1个回答
0
投票

我不完全确定你想要实现什么,因为顶盒与底座相交。以下是解决这两种可能情况的方法:

1。如果你想要整个顶盒的边缘:

默认情况下,CadQuery 会合并实体,除非您设置

combine=False
。然后,您可以使用
.vals()
:

单独检索顶部框

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

top = (
    base.faces(">Z")
    .workplane()   
    .box(5, 5, 5, combine=False)  # Disable combining
)

combined = base.add(top)

parts = combined.vals()

top_only = parts[1]

top_box_edges = top_only.edges()

show_object(top_box_edges)

2。如果您只想要顶部框的非相交部分:

在这种情况下,您可以使用布尔剪切从顶部框中减去底数 (

top.cut(base)
):

import cadquery as cq

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

top = (
    base.faces(">Z")
    .workplane()
    .box(5, 5, 5, combine=False)  # Disable combining
)

# Get the non-intersecting portion of the top box
non_intersecting = top.cut(base)

non_intersecting_edges = non_intersecting.edges()
show_object(non_intersecting_edges)

希望这对您有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.