Ex023_Sweep.py

发布时间 2023-11-10 16:23:43作者: Arxu
import cadquery as cq

# 用于创建样条曲线和折线路径的点集
pts = [(0, 1), (1, 2), (2, 4)]

# 从点集生成样条曲线路径
path = cq.Workplane("XZ").spline(pts)

# 沿着刚刚创建的样条曲线路径扫描一个直径为 1.0 单位的圆
defaultSweep = cq.Workplane("XY").circle(1.0).sweep(path)

# 默认情况下,扫描会生成实体,而不是生成 Frenet 实体。设置 isFrenet 为 True 有助于防止剖面在扫描过程中产生变形
frenetShell = cq.Workplane("XY").circle(1.0).sweep(path, makeSolid=True, isFrenet=True)

# 我们可以扫描除了圆形以外的其他形状
defaultRect = cq.Workplane("XY").rect(1.0, 1.0).sweep(path)

# 切换到折线路径,但使其使用与样条曲线相同的点集
path = cq.Workplane("XZ").polyline(pts, includeCurrent=True)

# 使用折线路径导致生成的实体具有分段,而不是单一的外部表面
plineSweep = cq.Workplane("XY").circle(1.0).sweep(path)

# 切换到弧路径
path = cq.Workplane("XZ").threePointArc((1.0, 1.5), (0.0, 1.0))

# 使用较小的圆形截面,以使生成的实体看起来更美观
arcSweep = cq.Workplane("XY").circle(0.5).sweep(path)

# 将生成的实体进行平移,以防止它们重叠,并从左到右显示它们
show_object(defaultSweep)
show_object(frenetShell.translate((5, 0, 0)))
show_object(defaultRect.translate((10, 0, 0)))
show_object(plineSweep)
show_object(arcSweep.translate((20, 0, 0)))