kcl-samples → french-press →
french-press
KCL
// French Press
// A french press immersion coffee maker
carafeDiameter = 4.41
carafeHeight = 7.32
handleThickness = 0.65
// Upper ring of the metal structure
sketch001 = startSketchOn('XZ')
|> startProfileAt([carafeDiameter / 2, 5.7], %)
|> angledLine([0, 0.1], %, $rectangleSegmentA001)
|> angledLine([
segAng(rectangleSegmentA001) - 90,
-0.75
], %, $rectangleSegmentB001)
|> angledLine([
segAng(rectangleSegmentA001),
-segLen(rectangleSegmentA001)
], %, $rectangleSegmentC001)
|> lineTo([profileStartX(%), profileStartY(%)], %)
|> close(%)
|> revolve({ angle = 360, axis = 'Y' }, %)
// Create an angled plane to sketch the supports
plane001 = {
plane = {
origin = [-0.26, 0.26, 0.0],
xAxis = [1, 1, 0.0],
yAxis = [0.0, 0.0, 1.0],
zAxis = [1.0, 0.0, 0.0]
}
}
// Cross section of the metal supports
sketch002 = startSketchOn(plane001)
|> startProfileAt([carafeDiameter / 2, 5.7], %)
|> xLine(0.1, %)
|> yLine(-5.2, %, $edge1)
|> arc({
angleStart = 180,
angleEnd = 205,
radius = 0.3
}, %)
|> angledLine({ angle = -60, length = 0.6 }, %, $edge2)
|> arc({
angleStart = 30,
angleEnd = -120,
radius = 0.6
}, %)
|> angledLineToY({ angle = 150, to = -0.2 }, %, $edge3)
|> arc({
angleStart = 60,
angleEnd = 90,
radius = 0.5
}, %)
|> xLineTo(0.1, %, $edgeLen)
|> yLine(0.1, %)
|> xLine(segLen(edgeLen) + 0.035, %, $edge4)
|> arc({
angleStart = 90,
angleEnd = 60,
radius = 0.6
}, %)
|> angledLine({
angle = 150,
length = -segLen(edge3) + 0.035
}, %, $edge5)
|> arc({
angleStart = -120,
angleEnd = 30,
radius = 0.5
}, %)
|> angledLine({
angle = -60,
length = -segLen(edge2) + 0.035
}, %, $edge6)
|> arc({
angleStart = 205,
angleEnd = 180,
radius = 0.6
}, %)
|> lineTo([profileStartX(%), profileStartY(%)], %)
|> close(%)
|> extrude(0.75, %)
|> patternCircular3d({
axis = [0, 0, 1],
center = [0, 0, 0],
instances = 4,
arcDegrees = 360,
rotateDuplicates = true
}, %)
// Cross plate
sketch003 = startSketchOn(offsetPlane('XY', 1))
|> circle({
center = [0, 0],
radius = carafeDiameter / 2 - 0.15
}, %)
extrude001 = extrude(0.050, sketch003)
sketch004 = startSketchOn(extrude001, 'END')
|> startProfileAt([0.3, 0.17], %)
|> yLine(1.2, %)
|> arc({
angleStart = 90,
angleEnd = -30,
radius = 1.2
}, %)
|> lineTo([profileStartX(%), profileStartY(%)], %)
|> close(%)
|> patternCircular2d({
center = [0, 0],
instances = 3,
arcDegrees = 360,
rotateDuplicates = true
}, %)
extrude002 = extrude(-0.050, sketch004)
// Filter screen
sketch005 = startSketchOn('XZ')
|> startProfileAt([0.15, 1.11], %)
|> xLineTo(carafeDiameter / 2 - 0.2, %)
|> angledLineToX({
angle = 30,
to = carafeDiameter / 2 - 0.07
}, %, $seg1)
|> angledLine({ angle = -60, length = 0.050 }, %)
|> angledLine({ angle = 30, length = -segLen(seg1) }, %)
|> xLineTo(0.15, %)
|> lineTo([profileStartX(%), profileStartY(%)], %)
|> close(%)
|> revolve({ axis = 'y' }, %)
// Plunger and stem
sketch006 = startSketchOn('XZ')
|> startProfileAt([0.1, 1], %)
|> line([0.1, 0], %)
|> angledLineToX({ angle = 10, to = 0.05 }, %)
|> yLine(10, %)
|> line([0.6, 0], %)
|> yLine(-.05, %)
|> tangentialArc({ radius = 0.6, offset = -90 }, %)
|> lineTo([profileStartX(%), profileStartY(%)], %)
|> close(%)
|> revolve({ axis = 'y' }, %)
// Spiral plate
sketch007 = startSketchOn(offsetPlane('XY', 1.12))
|> circle({
center = [0, 0],
radius = carafeDiameter / 2 - 0.24
}, %)
|> hole(circle({ center = [0, 0], radius = .15 }, %), %)
extrude003 = extrude(0.050, sketch007)
// Pattern holes in the spiral plate
sketch008 = startSketchOn(extrude003, 'END')
|> circle({ center = [1.4, 0], radius = .3 }, %)
|> patternCircular2d({
center = [0, 0],
instances = 8,
arcDegrees = 360,
rotateDuplicates = true
}, %)
extrude004 = extrude(-0.050, sketch008)
// Pattern holes in the spiral plate
sketch009 = startSketchOn(extrude003, 'END')
|> circle({ center = [0.6, 0], radius = .2 }, %)
|> patternCircular2d({
center = [0, 0],
instances = 4,
arcDegrees = 360,
rotateDuplicates = true
}, %)
extrude005 = extrude(-0.050, sketch009)
// Extrude a glass carafe body
sketch010 = startSketchOn("XY")
|> circle({
center = [0, 0],
radius = carafeDiameter / 2
}, %)
// Perform a shell operation to hollow the carafe body with the top face removed
extrude006 = extrude(carafeHeight, sketch010)
|> shell({ faces = ["end"], thickness = .07 }, %)
// Draw and revolve the lid
sketch011 = startSketchOn('XZ')
|> startProfileAt([0.2, carafeHeight - 0.7], %)
|> xLine(carafeDiameter / 2 - 0.3, %)
|> yLine(0.7, %)
|> xLine(0.3, %)
|> yLine(0.4, %)
|> line([-0.02, 0.02], %)
|> bezierCurve({
to = [-carafeDiameter / 2 - 0.1, 1],
control1 = [-0.3, 0],
control2 = [carafeDiameter / 10, 1]
}, %)
|> lineTo([profileStartX(%), profileStartY(%)], %)
|> close(%)
|> revolve({ axis = 'y' }, %)
// Draw and extrude handle
sketch012 = startSketchOn(offsetPlane('XZ', handleThickness / 2))
|> startProfileAt([2.3, 6.4], %)
|> line([0.56, 0], %)
|> tangentialArcTo([4.1, 5.26], %)
|> tangentialArcTo([4.17, 1.6], %)
|> tangentialArcTo([3.13, 0.61], %)
|> line([-1.09, 0], %)
|> line([0, 0.43], %)
|> line([0.99, -0.02], %)
|> tangentialArcTo([3.63, 1.6], %)
|> tangentialArcTo([3.56, 5.15], %)
|> tangentialArcTo([2.72, 5.88], %)
|> line([-0.4, 0], %)
|> lineTo([profileStartX(%), profileStartY(%)], %)
|> close(%)
extrude007 = extrude(-handleThickness, sketch012)