cadquery
Sketch
Workplane
Assembly

Sketch()

Sketch 是 CadQuery 中一个重要的模块,允许用户创建一个平面草图(2D绘图),并在此基础上进行3D建模。Sketch 对象可以与固定的平面(XY,XZ,YZ)关联,也可以与任意平面关联。

创建草图

用户可以通过在全局坐标系(默认为 XY 平面)上创建一个空的 Sketch 对象来创建自己的草图。可以使用属性 cq.Workplane() 来获取到一个空的 Sketch 对象。

import cadquery as cq

# 创建一个空的草图
s = cq.Workplane()

可以在 Workplane 对象上设置一些布尔属性,如距离单位、角度单位、网格大小等等。具体实现方法可以参考 Workplane()

平面草图

创建平面草图可以使用 Workplane.plane 方法。在这个过程中,用户必须指定草图所在平面的方向,如 XY、XZ 或 YZ。

# 将草图对象与XZ平面相关联
s = cq.Workplane("XZ")

# 在 XZ 平面上绘制一个圆形
c = s.circle(10)

同时,也可以使用布尔参数来设置草图平面的方向。以下代码与上面的代码等价。

# 将草图对象与XZ平面相关联
s = cq.Workplane(plane="XZ")

# 在 XZ 平面上绘制一个圆形
c = s.circle(10)

非平面草图

如果希望草图不与固定的平面关联,可以使用 Workplane.plane 方法,并传一个 cq.Plane 对象作为参数。

# 将草图对象与自定义平面相关联
s = cq.Workplane(cq.Plane((0,0,0),(1,1,1)))

# 在新平面上绘制一个圆形
c = s.circle(5)

草图操作

画线

在草图上画线使用 lineTo 方法,可以跟随画线的起始点以及要画的点作为坐标参数。草图上的零点是画图时的起始点。例如以下代码绘制了一个等腰三角形:

# 创建一个空的草图
s = cq.Workplane()
# 绘制一个等腰三角形
s = s.moveTo(0,0).lineTo(10,0).lineTo(5,10).close()

绘制点

在草图上绘制点可以使用 point 方法。与绘制线不同,绘制点不能直接描绘出图形,只是标记了草图上的一个点。

# 在草图上绘制点
s = s.point(10,10)

绘制圆、椭圆和弧

在草图上绘制圆、椭圆和弧的方法很相似。圆使用 circle() 方法,椭圆使用 ellipse() 方法,而弧可以使用 threePointArc()centerPointArc() 方法。以下代码展示了如何在草图上绘制一个圆、一个椭圆和一个弧:

# 在草图上绘制圆
s = s.circle(10)
# 在草图上绘制椭圆
s = s.ellipse(20, 10)
# 在草图上绘制弧
s = s.moveTo(30,0).threePointArc((20,10),(0,0))

绘制矩形和多边形

在草图上绘制矩形可以直接使用 rect() 方法,而绘制多边形则使用 polygon() 方法。以下代码为草图绘制一个简单矩形和一个五边形:

# 在草图上绘制矩形
s = s.rect(10, 5)
# 在草图上绘制五边形
s = s.polygon(5,10)

设置草图属性

草图的属性可以在 Workplane 对象上通过一些链式方法进行设置,用来定义草图的水平和垂直对齐、偏移等等。以下代码为草图设置属性:

# 在草图上设置水平对齐
s = s.hLine(3)
# 在草图上设置垂直对齐
s = s.vLine(3)
# 在草图上偏移
s = s.offset2D(5)

平移、旋转、缩放

用户可以使用 translate(), rotate(), scale() 方法来进行草图的平移、旋转、缩放等操作。以下代码为草图进行平移、旋转、缩放:

# 草图平移
s = s.translate((2,2))
# 草图旋转
s = s.rotate((0,0,0),(0,0,1),45)
# 草图缩放
s = s.scale(0.5)

切换草图

在完成草图的创建和绘制后,用户可以使用 Workplane.newObject() 方法切换到新的草图。在新的草图上进行操作时,不会影响原来的草图。

# 创建一个新的草图
t = s.newObject()

完成草图的创建和绘制后,用户可以将其转化为 3D 模型(Solid),然后进行建模。以下代码为草图转换成 3D 模型:

# 将草图转换为3D模型
model = s.extrude(2)

结论

以上是 CadQuery 中关于 Sketch 的介绍。Sketch 可以作为建立 3D 模型的基础,是 CadQuery 中一个非常重要的模块。除了上面介绍的方法以外,Sketch 还有许多其他的方法可以快速绘制所需的几何形状,具体可参考 Sketch