CenterNthSelector() 是一个 CADquery 工具,用于选择一个几何对象中心位置的第 n 个实例作为选择目标。
CenterNthSelector(n: int, center_func: Callable[[Workplane], Tuple[float, float, float]], tolerance: float = 0.0001)
n: 必需参数,表示要选择实例的索引号,从 0 开始计数。center_func: 必需参数,表示一个函数,用于计算几何对象的中心位置。该函数需要接受一个参数 workplane,表示当前 CADquery 的工作平面,返回一个长度为 3 的元组,表示中心点坐标 (x,y,z)。tolerance: 可选参数,表示精度误差限制,在默认情况下为 0.0001。CenterNthSelector() 返回一个函数,该函数接受一个参数 info,表示选择结果的相关信息,返回一个 CADquery 对象。
以下示例演示了如何使用 CenterNthSelector() 方法选择一个圆柱体中心的第一个实例:
import cadquery as cq
# 定义函数以计算几何对象的中心
def find_center(workplane):
    center = workplane.val().Center()
    x, y, z = center.x, center.y, center.z
    return x, y, z
# 创建圆柱体
cyl = cq.Workplane("XY").circle(10).extrude(20)
# 选择中心的第一个实例
result = cyl.eachpoint(CenterNthSelector(0, find_center))
在上面的例子中,我们定义了一个函数 find_center 来计算圆柱体的中心位置。我们选择了 CenterNthSelector(0, find_center),表示选择圆柱体中心的第一个实例。最后,我们将结果存储在 result 变量中。