| @ -46,7 +46,7 @@ angledLine( | ||||
| exampleSketch = startSketchOn(XZ) | ||||
|   |> startProfile(at = [0, 0]) | ||||
|   |> yLine(endAbsolute = 15) | ||||
|   |> angledLine(angle = 30, length = 15) | ||||
|   |> angledLine(angle = 30deg, length = 15) | ||||
|   |> line(end = [8, -10]) | ||||
|   |> yLine(endAbsolute = 0) | ||||
|   |> close() | ||||
|  | ||||
| @ -42,7 +42,7 @@ exampleSketch = startSketchOn(XZ) | ||||
|   |> line(endAbsolute = [5, 10]) | ||||
|   |> line(endAbsolute = [-10, 10], tag = $lineToIntersect) | ||||
|   |> line(endAbsolute = [0, 20]) | ||||
|   |> angledLineThatIntersects(angle = 80, intersectTag = lineToIntersect, offset = 10) | ||||
|   |> angledLineThatIntersects(angle = 80deg, intersectTag = lineToIntersect, offset = 10) | ||||
|   |> close() | ||||
|  | ||||
| example = extrude(exampleSketch, length = 10) | ||||
|  | ||||
| @ -54,7 +54,7 @@ example = extrude(exampleSketch, length = 5) | ||||
| // Add color to a revolved solid. | ||||
| sketch001 = startSketchOn(XY) | ||||
|   |> circle(center = [15, 0], radius = 5) | ||||
|   |> revolve(angle = 360, axis = Y) | ||||
|   |> revolve(angle = 360deg, axis = Y) | ||||
|   |> appearance(color = '#ff0000', metalness = 90, roughness = 90) | ||||
| ``` | ||||
|  | ||||
| @ -171,7 +171,7 @@ exampleSketch = startSketchOn(XZ) | ||||
|   |> patternCircular2d( | ||||
|        center = [0, 0], | ||||
|        instances = 13, | ||||
|        arcDegrees = 360, | ||||
|        arcDegrees = 360deg, | ||||
|        rotateDuplicates = true, | ||||
|      ) | ||||
|  | ||||
| @ -188,9 +188,9 @@ example = extrude(exampleSketch, length = 1) | ||||
| sweepPath = startSketchOn(XZ) | ||||
|   |> startProfile(at = [0.05, 0.05]) | ||||
|   |> line(end = [0, 7]) | ||||
|   |> tangentialArc(angle = 90, radius = 5) | ||||
|   |> tangentialArc(angle = 90deg, radius = 5) | ||||
|   |> line(end = [-3, 0]) | ||||
|   |> tangentialArc(angle = -90, radius = 5) | ||||
|   |> tangentialArc(angle = -90deg, radius = 5) | ||||
|   |> line(end = [0, 7]) | ||||
|  | ||||
| pipeHole = startSketchOn(XY) | ||||
|  | ||||
| @ -46,7 +46,7 @@ Unless this makes a lot of sense and feels like what you're looking for to const | ||||
| exampleSketch = startSketchOn(XZ) | ||||
|   |> startProfile(at = [0, 0]) | ||||
|   |> line(end = [10, 0]) | ||||
|   |> arc(angleStart = 0, angleEnd = 280, radius = 16) | ||||
|   |> arc(angleStart = 0deg, angleEnd = 280deg, radius = 16) | ||||
|   |> close() | ||||
| example = extrude(exampleSketch, length = 10) | ||||
| ``` | ||||
|  | ||||
| @ -19,7 +19,7 @@ E: number = 2.71828182845904523536028747135266250_ | ||||
| exampleSketch = startSketchOn(XZ) | ||||
|   |> startProfile(at = [0, 0]) | ||||
|   |> angledLine( | ||||
|     angle = 30, | ||||
|     angle = 30deg, | ||||
|     length = 2 * E ^ 2, | ||||
|   ) | ||||
|   |> yLine(endAbsolute = 0) | ||||
|  | ||||
| @ -19,7 +19,7 @@ TAU: number = 6.28318530717958647692528676655900577_ | ||||
| exampleSketch = startSketchOn(XZ) | ||||
|   |> startProfile(at = [0, 0]) | ||||
|   |> angledLine( | ||||
|     angle = 50, | ||||
|     angle = 50deg, | ||||
|     length = 10 * TAU, | ||||
|   ) | ||||
|   |> yLine(endAbsolute = 0) | ||||
|  | ||||
| @ -42,7 +42,7 @@ You can provide more than one sketch to extrude, and they will all be extruded i | ||||
| example = startSketchOn(XZ) | ||||
|   |> startProfile(at = [0, 0]) | ||||
|   |> line(end = [10, 0]) | ||||
|   |> arc(angleStart = 120, angleEnd = 0, radius = 5) | ||||
|   |> arc(angleStart = 120deg, angleEnd = 0deg, radius = 5) | ||||
|   |> line(end = [5, 0]) | ||||
|   |> line(end = [0, 10]) | ||||
|   |> bezierCurve(control1 = [-10, 0], control2 = [2, 10], end = [-5, 10]) | ||||
| @ -56,7 +56,7 @@ example = startSketchOn(XZ) | ||||
| ```kcl | ||||
| exampleSketch = startSketchOn(XZ) | ||||
|   |> startProfile(at = [-10, 0]) | ||||
|   |> arc(angleStart = 120, angleEnd = -60, radius = 5) | ||||
|   |> arc(angleStart = 120deg, angleEnd = -60deg, radius = 5) | ||||
|   |> line(end = [10, 0]) | ||||
|   |> line(end = [5, 0]) | ||||
|   |> bezierCurve(control1 = [-3, 0], control2 = [2, 10], end = [-5, 10]) | ||||
| @ -72,7 +72,7 @@ example = extrude(exampleSketch, length = 10) | ||||
| ```kcl | ||||
| exampleSketch = startSketchOn(XZ) | ||||
|   |> startProfile(at = [-10, 0]) | ||||
|   |> arc(angleStart = 120, angleEnd = -60, radius = 5) | ||||
|   |> arc(angleStart = 120deg, angleEnd = -60deg, radius = 5) | ||||
|   |> line(end = [10, 0]) | ||||
|   |> line(end = [5, 0]) | ||||
|   |> bezierCurve(control1 = [-3, 0], control2 = [2, 10], end = [-5, 10]) | ||||
| @ -88,7 +88,7 @@ example = extrude(exampleSketch, length = 20, symmetric = true) | ||||
| ```kcl | ||||
| exampleSketch = startSketchOn(XZ) | ||||
|   |> startProfile(at = [-10, 0]) | ||||
|   |> arc(angleStart = 120, angleEnd = -60, radius = 5) | ||||
|   |> arc(angleStart = 120deg, angleEnd = -60deg, radius = 5) | ||||
|   |> line(end = [10, 0]) | ||||
|   |> line(end = [5, 0]) | ||||
|   |> bezierCurve(control1 = [-3, 0], control2 = [2, 10], end = [-5, 10]) | ||||
|  | ||||
| @ -80,7 +80,7 @@ fn decagon(@radius) { | ||||
|  | ||||
|   // Start the decagon sketch at this point. | ||||
|   startOfDecagonSketch = startSketchOn(XY) | ||||
|     |> startProfile(at = [(cos(0)*radius), (sin(0) * radius)]) | ||||
|     |> startProfile(at = [(cos(0deg)*radius), (sin(0deg) * radius)]) | ||||
|  | ||||
|   // Use a `reduce` to draw the remaining decagon sides. | ||||
|   // For each number in the array 1..10, run the given function, | ||||
|  | ||||
| @ -89,7 +89,7 @@ sketch001 = startSketchOn(XY) | ||||
| 
 | ||||
| sketch002 = clone(sketch001) | ||||
|     |> translate(x = 0, y = 0, z = 20) | ||||
|     |> rotate(axis = [0, 0, 1.0], angle = 45) | ||||
|     |> rotate(axis = [0, 0, 1.0], angle = 45deg) | ||||
| 
 | ||||
| loft([sketch001, sketch002]) | ||||
| ``` | ||||
| @ -180,7 +180,7 @@ clonedMountingPlate = clone(mountingPlate) | ||||
| 
 | ||||
| // Create a helix around the Z axis. | ||||
| helixPath = helix( | ||||
|     angleStart = 0, | ||||
|     angleStart = 0deg, | ||||
|     ccw = true, | ||||
|     revolutions = 4, | ||||
|     length = 10, | ||||
| @ -208,7 +208,7 @@ sketch001 = startSketchOn(XY) | ||||
| sketch002 = clone(sketch001) | ||||
|    |> translate( z = 30) | ||||
|     |> revolve( | ||||
|         angle = 360, | ||||
|         angle = 360deg, | ||||
|         axis = Y, | ||||
|     ) | ||||
| ``` | ||||
| @ -230,7 +230,7 @@ exampleSketch = startSketchOn(XY) | ||||
|   |> line(end = [-2, 0]) | ||||
|   |> close() | ||||
| 
 | ||||
| example001 = revolve(exampleSketch, axis = Y, angle = 180, tagEnd = $end01) | ||||
| example001 = revolve(exampleSketch, axis = Y, angle = 180deg, tagEnd = $end01) | ||||
| 
 | ||||
| // example002 = clone(example001) | ||||
| // |> translate(x = 0, y = 20, z = 0) | ||||
|  | ||||
| @ -43,7 +43,7 @@ helix( | ||||
| ```kcl | ||||
| // Create a helix around the Z axis. | ||||
| helixPath = helix( | ||||
|     angleStart = 0, | ||||
|     angleStart = 0deg, | ||||
|     ccw = true, | ||||
|     revolutions = 5, | ||||
|     length = 10, | ||||
| @ -66,7 +66,7 @@ helper001 = startSketchOn(XZ) | ||||
|  |> line(end = [0, 10], tag = $edge001) | ||||
|  | ||||
| helixPath = helix( | ||||
|     angleStart = 0, | ||||
|     angleStart = 0deg, | ||||
|     ccw = true, | ||||
|     revolutions = 5, | ||||
|     length = 10, | ||||
| @ -85,7 +85,7 @@ springSketch = startSketchOn(XY) | ||||
| ```kcl | ||||
| // Create a helix around a custom axis. | ||||
| helixPath = helix( | ||||
|     angleStart = 0, | ||||
|     angleStart = 0deg, | ||||
|     ccw = true, | ||||
|     revolutions = 5, | ||||
|     length = 10, | ||||
| @ -112,7 +112,7 @@ part001 = startSketchOn(XY) | ||||
|   |> extrude(length = 10) | ||||
|  | ||||
| helix( | ||||
|     angleStart = 0, | ||||
|     angleStart = 0deg, | ||||
|     ccw = true, | ||||
|     revolutions = 16, | ||||
|     cylinder = part001, | ||||
|  | ||||
| @ -27,7 +27,7 @@ abs(@input: number): number | ||||
| ### Examples | ||||
|  | ||||
| ```kcl | ||||
| myAngle = -120 | ||||
| myAngle = -120deg | ||||
|  | ||||
| sketch001 = startSketchOn(XZ) | ||||
|   |> startProfile(at = [0, 0]) | ||||
|  | ||||
| @ -30,7 +30,7 @@ cos(@num: number(Angle)): number(_) | ||||
| exampleSketch = startSketchOn(XZ) | ||||
|   |> startProfile(at = [0, 0]) | ||||
|   |> angledLine( | ||||
|     angle = 30, | ||||
|     angle = 30deg, | ||||
|     length = 3 / cos(30deg), | ||||
|   ) | ||||
|   |> yLine(endAbsolute = 0) | ||||
|  | ||||
| @ -30,7 +30,7 @@ max(@input: [number; 1+]): number | ||||
| exampleSketch = startSketchOn(XZ) | ||||
|   |> startProfile(at = [0, 0]) | ||||
|   |> angledLine( | ||||
|     angle = 70, | ||||
|     angle = 70deg, | ||||
|     length = max([15, 31, 4, 13, 22]) | ||||
|   ) | ||||
|   |> line(end = [20, 0]) | ||||
|  | ||||
| @ -30,7 +30,7 @@ min(@input: [number; 1+]): number | ||||
| exampleSketch = startSketchOn(XZ) | ||||
|   |> startProfile(at = [0, 0]) | ||||
|   |> angledLine( | ||||
|     angle = 70, | ||||
|     angle = 70deg, | ||||
|     length = min([15, 31, 4, 13, 22]) | ||||
|   ) | ||||
|   |> line(end = [20, 0]) | ||||
|  | ||||
| @ -34,7 +34,7 @@ cartesian (x/y/z grid) coordinates. | ||||
| ```kcl | ||||
| exampleSketch = startSketchOn(XZ) | ||||
|   |> startProfile(at = [0, 0]) | ||||
|   |> line(end = polar(angle = 30, length = 5), tag = $thing) | ||||
|   |> line(end = polar(angle = 30deg, length = 5), tag = $thing) | ||||
|   |> line(end = [0, 5]) | ||||
|   |> line(end = [segEndX(thing), 0]) | ||||
|   |> line(end = [-20, 10]) | ||||
|  | ||||
| @ -34,7 +34,7 @@ pow( | ||||
| exampleSketch = startSketchOn(XZ) | ||||
|   |> startProfile(at = [0, 0]) | ||||
|   |> angledLine( | ||||
|     angle = 50, | ||||
|     angle = 50deg, | ||||
|     length = pow(5, exp = 2), | ||||
|   ) | ||||
|   |> yLine(endAbsolute = 0) | ||||
|  | ||||
| @ -30,7 +30,7 @@ sin(@num: number(Angle)): number(_) | ||||
| exampleSketch = startSketchOn(XZ) | ||||
|   |> startProfile(at = [0, 0]) | ||||
|   |> angledLine( | ||||
|     angle = 50, | ||||
|     angle = 50deg, | ||||
|     length = 15 / sin(135deg), | ||||
|   ) | ||||
|   |> yLine(endAbsolute = 0) | ||||
|  | ||||
| @ -30,7 +30,7 @@ sqrt(@input: number): number | ||||
| exampleSketch = startSketchOn(XZ) | ||||
|   |> startProfile(at = [0, 0]) | ||||
|   |> angledLine( | ||||
|     angle = 50, | ||||
|     angle = 50deg, | ||||
|     length = sqrt(2500), | ||||
|   ) | ||||
|   |> yLine(endAbsolute = 0) | ||||
|  | ||||
| @ -30,7 +30,7 @@ tan(@num: number(Angle)): number(_) | ||||
| exampleSketch = startSketchOn(XZ) | ||||
|   |> startProfile(at = [0, 0]) | ||||
|   |> angledLine( | ||||
|     angle = 50, | ||||
|     angle = 50deg, | ||||
|     length = 50 * tan((1/2): number(rad)), | ||||
|   ) | ||||
|   |> yLine(endAbsolute = 0) | ||||
|  | ||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| @ -30,7 +30,7 @@ units::toDegrees(@num: number(Angle)): number(deg) | ||||
| exampleSketch = startSketchOn(XZ) | ||||
|   |> startProfile(at = [0, 0]) | ||||
|   |> angledLine( | ||||
|     angle = 50, | ||||
|     angle = 50deg, | ||||
|     length = 70 * cos(units::toDegrees((PI/4): number(rad))), | ||||
|   ) | ||||
|   |> yLine(endAbsolute = 0) | ||||
|  | ||||
| @ -30,8 +30,8 @@ units::toRadians(@num: number(Angle)): number(rad) | ||||
| exampleSketch = startSketchOn(XZ) | ||||
|   |> startProfile(at = [0, 0]) | ||||
|   |> angledLine( | ||||
|     angle = 50, | ||||
|     length = 70 * cos(units::toRadians(45)), | ||||
|     angle = 50deg, | ||||
|     length = 70 * cos(units::toRadians(45deg)), | ||||
|   ) | ||||
|   |> yLine(endAbsolute = 0) | ||||
|   |> close() | ||||
|  | ||||
| @ -30,10 +30,10 @@ getNextAdjacentEdge(@edge: TagIdentifier): Uuid | ||||
| exampleSketch = startSketchOn(XZ) | ||||
|   |> startProfile(at = [0, 0]) | ||||
|   |> line(end = [10, 0]) | ||||
|   |> angledLine(angle = 60, length = 10) | ||||
|   |> angledLine(angle = 120, length = 10) | ||||
|   |> angledLine(angle = 60deg, length = 10) | ||||
|   |> angledLine(angle = 120deg, length = 10) | ||||
|   |> line(end = [-10, 0]) | ||||
|   |> angledLine(angle = 240, length = 10, tag = $referenceEdge) | ||||
|   |> angledLine(angle = 240deg, length = 10, tag = $referenceEdge) | ||||
|   |> close() | ||||
|  | ||||
| example = extrude(exampleSketch, length = 5) | ||||
|  | ||||
| @ -30,10 +30,10 @@ getOppositeEdge(@edge: TagIdentifier): Uuid | ||||
| exampleSketch = startSketchOn(XZ) | ||||
|   |> startProfile(at = [0, 0]) | ||||
|   |> line(end = [10, 0]) | ||||
|   |> angledLine(angle = 60, length = 10) | ||||
|   |> angledLine(angle = 120, length = 10) | ||||
|   |> angledLine(angle = 60deg, length = 10) | ||||
|   |> angledLine(angle = 120deg, length = 10) | ||||
|   |> line(end = [-10, 0]) | ||||
|   |> angledLine(angle = 240, length = 10, tag = $referenceEdge) | ||||
|   |> angledLine(angle = 240deg, length = 10, tag = $referenceEdge) | ||||
|   |> close() | ||||
|  | ||||
| example = extrude(exampleSketch, length = 5) | ||||
|  | ||||
| @ -30,10 +30,10 @@ getPreviousAdjacentEdge(@edge: TagIdentifier): Uuid | ||||
| exampleSketch = startSketchOn(XZ) | ||||
|   |> startProfile(at = [0, 0]) | ||||
|   |> line(end = [10, 0]) | ||||
|   |> angledLine(angle = 60, length = 10) | ||||
|   |> angledLine(angle = 120, length = 10) | ||||
|   |> angledLine(angle = 60deg, length = 10) | ||||
|   |> angledLine(angle = 120deg, length = 10) | ||||
|   |> line(end = [-10, 0]) | ||||
|   |> angledLine(angle = 240, length = 10, tag = $referenceEdge) | ||||
|   |> angledLine(angle = 240deg, length = 10, tag = $referenceEdge) | ||||
|   |> close() | ||||
|  | ||||
| example = extrude(exampleSketch, length = 5) | ||||
|  | ||||
| @ -43,11 +43,11 @@ a = 10 | ||||
| b = 14 | ||||
| startSketchOn(XZ) | ||||
|   |> startProfile(at = [0, 0]) | ||||
|   |> involuteCircular(startRadius = a, endRadius = b, angle = 60) | ||||
|   |> involuteCircular(startRadius = a, endRadius = b, angle = 60deg) | ||||
|   |> involuteCircular( | ||||
|        startRadius = a, | ||||
|        endRadius = b, | ||||
|        angle = 60, | ||||
|        angle = 60deg, | ||||
|        reverse = true, | ||||
|      ) | ||||
| ``` | ||||
|  | ||||
| @ -48,7 +48,7 @@ exampleSketch = startSketchOn(XZ) | ||||
|   |> patternCircular2d( | ||||
|        center = [0, 0], | ||||
|        instances = 13, | ||||
|        arcDegrees = 360, | ||||
|        arcDegrees = 360deg, | ||||
|        rotateDuplicates = true, | ||||
|      ) | ||||
|  | ||||
|  | ||||
| @ -49,7 +49,7 @@ example = extrude(exampleSketch, length = -5) | ||||
|        axis = [1, -1, 0], | ||||
|        center = [10, -20, 0], | ||||
|        instances = 11, | ||||
|        arcDegrees = 360, | ||||
|        arcDegrees = 360deg, | ||||
|        rotateDuplicates = true, | ||||
|      ) | ||||
| ``` | ||||
|  | ||||
| @ -123,7 +123,7 @@ fn transform(@i) { | ||||
|       pow(0.9, exp = i) | ||||
|     ], | ||||
|     // Turn by 15 degrees each time. | ||||
|     rotation = { angle = 15 * i, origin = "local" } | ||||
|     rotation = { angle = 15deg * i, origin = "local" } | ||||
|   } | ||||
| } | ||||
|  | ||||
| @ -158,7 +158,7 @@ fn transform(@i) { | ||||
|   return { | ||||
|     translate = [0, 0, -i * width], | ||||
|     rotation = { | ||||
|       angle = 90 * i, | ||||
|       angle = 90deg * i, | ||||
|       // Rotate around the overall scene's origin. | ||||
|       origin = "global" | ||||
|     } | ||||
| @ -204,7 +204,7 @@ fn transform(@i) { | ||||
|   // Transform functions can return multiple transforms. They'll be applied in order. | ||||
|   return [ | ||||
|     { translate = [30 * i, 0, 0] }, | ||||
|     { rotation = { angle = 45 * i } } | ||||
|     { rotation = { angle = 45deg * i } } | ||||
|   ] | ||||
| } | ||||
| startSketchOn(XY) | ||||
|  | ||||
| @ -29,8 +29,8 @@ profileStart(@profile: Sketch): [number] | ||||
| ```kcl | ||||
| sketch001 = startSketchOn(XY) | ||||
|   |> startProfile(at = [5, 2]) | ||||
|   |> angledLine(angle = 120, length = 50, tag = $seg01) | ||||
|   |> angledLine(angle = segAng(seg01) + 120, length = 50) | ||||
|   |> angledLine(angle = 120deg, length = 50, tag = $seg01) | ||||
|   |> angledLine(angle = segAng(seg01) + 120deg, length = 50) | ||||
|   |> line(end = profileStart(%)) | ||||
|   |> close() | ||||
|   |> extrude(length = 20) | ||||
|  | ||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| @ -49,9 +49,9 @@ If you want to apply the transform in global space, set `global` to `true`. The | ||||
| sweepPath = startSketchOn(XZ) | ||||
|   |> startProfile(at = [0.05, 0.05]) | ||||
|   |> line(end = [0, 7]) | ||||
|   |> tangentialArc(angle = 90, radius = 5) | ||||
|   |> tangentialArc(angle = 90deg, radius = 5) | ||||
|   |> line(end = [-3, 0]) | ||||
|   |> tangentialArc(angle = -90, radius = 5) | ||||
|   |> tangentialArc(angle = -90deg, radius = 5) | ||||
|   |> line(end = [0, 7]) | ||||
|  | ||||
| // Create a hole for the pipe. | ||||
| @ -85,8 +85,8 @@ cube | ||||
|  | ||||
| sketch001 = startSketchOn(XY) | ||||
| rectangleSketch = startProfile(sketch001, at = [-200, 23.86]) | ||||
|   |> angledLine(angle = 0, length = 73.47, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 50.61) | ||||
|   |> angledLine(angle = 0deg, length = 73.47, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001) - 90deg, length = 50.61) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001)) | ||||
|   |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) | ||||
|   |> close() | ||||
| @ -96,7 +96,7 @@ circleSketch = circle(sketch001, center = [200, -30.29], radius = 32.63) | ||||
| sketch002 = startSketchOn(YZ) | ||||
| sweepPath = startProfile(sketch002, at = [0, 0]) | ||||
|   |> yLine(length = 231.81) | ||||
|   |> tangentialArc(radius = 80, angle = -90) | ||||
|   |> tangentialArc(radius = 80, angle = -90deg) | ||||
|   |> xLine(length = 384.93) | ||||
|  | ||||
| parts = sweep([rectangleSketch, circleSketch], path = sweepPath) | ||||
|  | ||||
| @ -29,9 +29,9 @@ segLen(@tag: TagIdentifier): number | ||||
| ```kcl | ||||
| exampleSketch = startSketchOn(XZ) | ||||
|   |> startProfile(at = [0, 0]) | ||||
|   |> angledLine(angle = 60, length = 10, tag = $thing) | ||||
|   |> tangentialArc(angle = -120, radius = 5) | ||||
|   |> angledLine(angle = -60, length = segLen(thing)) | ||||
|   |> angledLine(angle = 60deg, length = 10, tag = $thing) | ||||
|   |> tangentialArc(angle = -120deg, radius = 5) | ||||
|   |> angledLine(angle = -60deg, length = segLen(thing)) | ||||
|   |> close() | ||||
|  | ||||
| example = extrude(exampleSketch, length = 5) | ||||
|  | ||||
| @ -146,7 +146,7 @@ exampleSketch = startSketchOn(XY) | ||||
|   |> line(end = [-2, 0]) | ||||
|   |> close() | ||||
|  | ||||
| example = revolve(exampleSketch, axis = Y, angle = 180) | ||||
| example = revolve(exampleSketch, axis = Y, angle = 180deg) | ||||
|  | ||||
| exampleSketch002 = startSketchOn(example, face = END) | ||||
|   |> startProfile(at = [4.5, -5]) | ||||
| @ -178,7 +178,7 @@ exampleSketch = startSketchOn(XY) | ||||
| example = revolve( | ||||
|   exampleSketch, | ||||
|   axis = Y, | ||||
|   angle = 180, | ||||
|   angle = 180deg, | ||||
|   tagEnd = $end01, | ||||
| ) | ||||
|  | ||||
|  | ||||
| @ -14595,7 +14595,7 @@ | ||||
|     "deprecated": false, | ||||
|     "examples": [ | ||||
|       [ | ||||
|         "exampleSketch = startSketchOn(XZ)\n  |> startProfile(at = [0, 0])\n  |> yLine(endAbsolute = 15)\n  |> angledLine(angle = 30, length = 15)\n  |> line(end = [8, -10])\n  |> yLine(endAbsolute = 0)\n  |> close()\n\nexample = extrude(exampleSketch, length = 10)", | ||||
|         "exampleSketch = startSketchOn(XZ)\n  |> startProfile(at = [0, 0])\n  |> yLine(endAbsolute = 15)\n  |> angledLine(angle = 30deg, length = 15)\n  |> line(end = [8, -10])\n  |> yLine(endAbsolute = 0)\n  |> close()\n\nexample = extrude(exampleSketch, length = 10)", | ||||
|         false | ||||
|       ] | ||||
|     ] | ||||
| @ -24376,7 +24376,7 @@ | ||||
|     "deprecated": false, | ||||
|     "examples": [ | ||||
|       [ | ||||
|         "exampleSketch = startSketchOn(XZ)\n  |> startProfile(at = [0, 0])\n  |> line(endAbsolute = [5, 10])\n  |> line(endAbsolute = [-10, 10], tag = $lineToIntersect)\n  |> line(endAbsolute = [0, 20])\n  |> angledLineThatIntersects(angle = 80, intersectTag = lineToIntersect, offset = 10)\n  |> close()\n\nexample = extrude(exampleSketch, length = 10)", | ||||
|         "exampleSketch = startSketchOn(XZ)\n  |> startProfile(at = [0, 0])\n  |> line(endAbsolute = [5, 10])\n  |> line(endAbsolute = [-10, 10], tag = $lineToIntersect)\n  |> line(endAbsolute = [0, 20])\n  |> angledLineThatIntersects(angle = 80deg, intersectTag = lineToIntersect, offset = 10)\n  |> close()\n\nexample = extrude(exampleSketch, length = 10)", | ||||
|         false | ||||
|       ] | ||||
|     ] | ||||
| @ -32520,7 +32520,7 @@ | ||||
|         false | ||||
|       ], | ||||
|       [ | ||||
|         "// Add color to a revolved solid.\nsketch001 = startSketchOn(XY)\n  |> circle(center = [15, 0], radius = 5)\n  |> revolve(angle = 360, axis = Y)\n  |> appearance(color = '#ff0000', metalness = 90, roughness = 90)", | ||||
|         "// Add color to a revolved solid.\nsketch001 = startSketchOn(XY)\n  |> circle(center = [15, 0], radius = 5)\n  |> revolve(angle = 360deg, axis = Y)\n  |> appearance(color = '#ff0000', metalness = 90, roughness = 90)", | ||||
|         false | ||||
|       ], | ||||
|       [ | ||||
| @ -32544,11 +32544,11 @@ | ||||
|         false | ||||
|       ], | ||||
|       [ | ||||
|         "// Color the result of a 2D pattern that was extruded.\nexampleSketch = startSketchOn(XZ)\n  |> startProfile(at = [.5, 25])\n  |> line(end = [0, 5])\n  |> line(end = [-1, 0])\n  |> line(end = [0, -5])\n  |> close()\n  |> patternCircular2d(\n       center = [0, 0],\n       instances = 13,\n       arcDegrees = 360,\n       rotateDuplicates = true,\n     )\n\nexample = extrude(exampleSketch, length = 1)\n  |> appearance(color = '#ff0000', metalness = 90, roughness = 90)", | ||||
|         "// Color the result of a 2D pattern that was extruded.\nexampleSketch = startSketchOn(XZ)\n  |> startProfile(at = [.5, 25])\n  |> line(end = [0, 5])\n  |> line(end = [-1, 0])\n  |> line(end = [0, -5])\n  |> close()\n  |> patternCircular2d(\n       center = [0, 0],\n       instances = 13,\n       arcDegrees = 360deg,\n       rotateDuplicates = true,\n     )\n\nexample = extrude(exampleSketch, length = 1)\n  |> appearance(color = '#ff0000', metalness = 90, roughness = 90)", | ||||
|         false | ||||
|       ], | ||||
|       [ | ||||
|         "// Color the result of a sweep.\n\n// Create a path for the sweep.\nsweepPath = startSketchOn(XZ)\n  |> startProfile(at = [0.05, 0.05])\n  |> line(end = [0, 7])\n  |> tangentialArc(angle = 90, radius = 5)\n  |> line(end = [-3, 0])\n  |> tangentialArc(angle = -90, radius = 5)\n  |> line(end = [0, 7])\n\npipeHole = startSketchOn(XY)\n  |> circle(center = [0, 0], radius = 1.5)\n\nsweepSketch = startSketchOn(XY)\n  |> circle(center = [0, 0], radius = 2)\n  |> subtract2d(tool = pipeHole)\n  |> sweep(path = sweepPath)\n  |> appearance(color = \"#ff0000\", metalness = 50, roughness = 50)", | ||||
|         "// Color the result of a sweep.\n\n// Create a path for the sweep.\nsweepPath = startSketchOn(XZ)\n  |> startProfile(at = [0.05, 0.05])\n  |> line(end = [0, 7])\n  |> tangentialArc(angle = 90deg, radius = 5)\n  |> line(end = [-3, 0])\n  |> tangentialArc(angle = -90deg, radius = 5)\n  |> line(end = [0, 7])\n\npipeHole = startSketchOn(XY)\n  |> circle(center = [0, 0], radius = 1.5)\n\nsweepSketch = startSketchOn(XY)\n  |> circle(center = [0, 0], radius = 2)\n  |> subtract2d(tool = pipeHole)\n  |> sweep(path = sweepPath)\n  |> appearance(color = \"#ff0000\", metalness = 50, roughness = 50)", | ||||
|         false | ||||
|       ], | ||||
|       [ | ||||
| @ -45553,7 +45553,7 @@ | ||||
|     "deprecated": false, | ||||
|     "examples": [ | ||||
|       [ | ||||
|         "exampleSketch = startSketchOn(XZ)\n  |> startProfile(at = [0, 0])\n  |> line(end = [10, 0])\n  |> arc(angleStart = 0, angleEnd = 280, radius = 16)\n  |> close()\nexample = extrude(exampleSketch, length = 10)", | ||||
|         "exampleSketch = startSketchOn(XZ)\n  |> startProfile(at = [0, 0])\n  |> line(end = [10, 0])\n  |> arc(angleStart = 0deg, angleEnd = 280deg, radius = 16)\n  |> close()\nexample = extrude(exampleSketch, length = 10)", | ||||
|         false | ||||
|       ], | ||||
|       [ | ||||
| @ -81551,19 +81551,19 @@ | ||||
|     "deprecated": false, | ||||
|     "examples": [ | ||||
|       [ | ||||
|         "example = startSketchOn(XZ)\n  |> startProfile(at = [0, 0])\n  |> line(end = [10, 0])\n  |> arc(angleStart = 120, angleEnd = 0, radius = 5)\n  |> line(end = [5, 0])\n  |> line(end = [0, 10])\n  |> bezierCurve(control1 = [-10, 0], control2 = [2, 10], end = [-5, 10])\n  |> line(end = [-5, -2])\n  |> close()\n  |> extrude(length = 10)", | ||||
|         "example = startSketchOn(XZ)\n  |> startProfile(at = [0, 0])\n  |> line(end = [10, 0])\n  |> arc(angleStart = 120deg, angleEnd = 0deg, radius = 5)\n  |> line(end = [5, 0])\n  |> line(end = [0, 10])\n  |> bezierCurve(control1 = [-10, 0], control2 = [2, 10], end = [-5, 10])\n  |> line(end = [-5, -2])\n  |> close()\n  |> extrude(length = 10)", | ||||
|         false | ||||
|       ], | ||||
|       [ | ||||
|         "exampleSketch = startSketchOn(XZ)\n  |> startProfile(at = [-10, 0])\n  |> arc(angleStart = 120, angleEnd = -60, radius = 5)\n  |> line(end = [10, 0])\n  |> line(end = [5, 0])\n  |> bezierCurve(control1 = [-3, 0], control2 = [2, 10], end = [-5, 10])\n  |> line(end = [-4, 10])\n  |> line(end = [-5, -2])\n  |> close()\n\nexample = extrude(exampleSketch, length = 10)", | ||||
|         "exampleSketch = startSketchOn(XZ)\n  |> startProfile(at = [-10, 0])\n  |> arc(angleStart = 120deg, angleEnd = -60deg, radius = 5)\n  |> line(end = [10, 0])\n  |> line(end = [5, 0])\n  |> bezierCurve(control1 = [-3, 0], control2 = [2, 10], end = [-5, 10])\n  |> line(end = [-4, 10])\n  |> line(end = [-5, -2])\n  |> close()\n\nexample = extrude(exampleSketch, length = 10)", | ||||
|         false | ||||
|       ], | ||||
|       [ | ||||
|         "exampleSketch = startSketchOn(XZ)\n  |> startProfile(at = [-10, 0])\n  |> arc(angleStart = 120, angleEnd = -60, radius = 5)\n  |> line(end = [10, 0])\n  |> line(end = [5, 0])\n  |> bezierCurve(control1 = [-3, 0], control2 = [2, 10], end = [-5, 10])\n  |> line(end = [-4, 10])\n  |> line(end = [-5, -2])\n  |> close()\n\nexample = extrude(exampleSketch, length = 20, symmetric = true)", | ||||
|         "exampleSketch = startSketchOn(XZ)\n  |> startProfile(at = [-10, 0])\n  |> arc(angleStart = 120deg, angleEnd = -60deg, radius = 5)\n  |> line(end = [10, 0])\n  |> line(end = [5, 0])\n  |> bezierCurve(control1 = [-3, 0], control2 = [2, 10], end = [-5, 10])\n  |> line(end = [-4, 10])\n  |> line(end = [-5, -2])\n  |> close()\n\nexample = extrude(exampleSketch, length = 20, symmetric = true)", | ||||
|         false | ||||
|       ], | ||||
|       [ | ||||
|         "exampleSketch = startSketchOn(XZ)\n  |> startProfile(at = [-10, 0])\n  |> arc(angleStart = 120, angleEnd = -60, radius = 5)\n  |> line(end = [10, 0])\n  |> line(end = [5, 0])\n  |> bezierCurve(control1 = [-3, 0], control2 = [2, 10], end = [-5, 10])\n  |> line(end = [-4, 10])\n  |> line(end = [-5, -2])\n  |> close()\n\nexample = extrude(exampleSketch, length = 10, bidirectionalLength = 50)", | ||||
|         "exampleSketch = startSketchOn(XZ)\n  |> startProfile(at = [-10, 0])\n  |> arc(angleStart = 120deg, angleEnd = -60deg, radius = 5)\n  |> line(end = [10, 0])\n  |> line(end = [5, 0])\n  |> bezierCurve(control1 = [-3, 0], control2 = [2, 10], end = [-5, 10])\n  |> line(end = [-4, 10])\n  |> line(end = [-5, -2])\n  |> close()\n\nexample = extrude(exampleSketch, length = 10, bidirectionalLength = 50)", | ||||
|         false | ||||
|       ] | ||||
|     ] | ||||
| @ -81677,7 +81677,7 @@ | ||||
|     "deprecated": false, | ||||
|     "examples": [ | ||||
|       [ | ||||
|         "exampleSketch = startSketchOn(XZ)\n  |> startProfile(at = [0, 0])\n  |> line(end = [10, 0])\n  |> angledLine(angle = 60, length = 10)\n  |> angledLine(angle = 120, length = 10)\n  |> line(end = [-10, 0])\n  |> angledLine(angle = 240, length = 10, tag = $referenceEdge)\n  |> close()\n\nexample = extrude(exampleSketch, length = 5)\n  |> fillet(radius = 3, tags = [getNextAdjacentEdge(referenceEdge)])", | ||||
|         "exampleSketch = startSketchOn(XZ)\n  |> startProfile(at = [0, 0])\n  |> line(end = [10, 0])\n  |> angledLine(angle = 60deg, length = 10)\n  |> angledLine(angle = 120deg, length = 10)\n  |> line(end = [-10, 0])\n  |> angledLine(angle = 240deg, length = 10, tag = $referenceEdge)\n  |> close()\n\nexample = extrude(exampleSketch, length = 5)\n  |> fillet(radius = 3, tags = [getNextAdjacentEdge(referenceEdge)])", | ||||
|         false | ||||
|       ] | ||||
|     ] | ||||
| @ -81730,7 +81730,7 @@ | ||||
|     "deprecated": false, | ||||
|     "examples": [ | ||||
|       [ | ||||
|         "exampleSketch = startSketchOn(XZ)\n  |> startProfile(at = [0, 0])\n  |> line(end = [10, 0])\n  |> angledLine(angle = 60, length = 10)\n  |> angledLine(angle = 120, length = 10)\n  |> line(end = [-10, 0])\n  |> angledLine(angle = 240, length = 10, tag = $referenceEdge)\n  |> close()\n\nexample = extrude(exampleSketch, length = 5)\n  |> fillet(radius = 3, tags = [getOppositeEdge(referenceEdge)])", | ||||
|         "exampleSketch = startSketchOn(XZ)\n  |> startProfile(at = [0, 0])\n  |> line(end = [10, 0])\n  |> angledLine(angle = 60deg, length = 10)\n  |> angledLine(angle = 120deg, length = 10)\n  |> line(end = [-10, 0])\n  |> angledLine(angle = 240deg, length = 10, tag = $referenceEdge)\n  |> close()\n\nexample = extrude(exampleSketch, length = 5)\n  |> fillet(radius = 3, tags = [getOppositeEdge(referenceEdge)])", | ||||
|         false | ||||
|       ] | ||||
|     ] | ||||
| @ -81783,7 +81783,7 @@ | ||||
|     "deprecated": false, | ||||
|     "examples": [ | ||||
|       [ | ||||
|         "exampleSketch = startSketchOn(XZ)\n  |> startProfile(at = [0, 0])\n  |> line(end = [10, 0])\n  |> angledLine(angle = 60, length = 10)\n  |> angledLine(angle = 120, length = 10)\n  |> line(end = [-10, 0])\n  |> angledLine(angle = 240, length = 10, tag = $referenceEdge)\n  |> close()\n\nexample = extrude(exampleSketch, length = 5)\n  |> fillet(radius = 3, tags = [getPreviousAdjacentEdge(referenceEdge)])", | ||||
|         "exampleSketch = startSketchOn(XZ)\n  |> startProfile(at = [0, 0])\n  |> line(end = [10, 0])\n  |> angledLine(angle = 60deg, length = 10)\n  |> angledLine(angle = 120deg, length = 10)\n  |> line(end = [-10, 0])\n  |> angledLine(angle = 240deg, length = 10, tag = $referenceEdge)\n  |> close()\n\nexample = extrude(exampleSketch, length = 5)\n  |> fillet(radius = 3, tags = [getPreviousAdjacentEdge(referenceEdge)])", | ||||
|         false | ||||
|       ] | ||||
|     ] | ||||
| @ -98002,7 +98002,7 @@ | ||||
|     "deprecated": false, | ||||
|     "examples": [ | ||||
|       [ | ||||
|         "a = 10\nb = 14\nstartSketchOn(XZ)\n  |> startProfile(at = [0, 0])\n  |> involuteCircular(startRadius = a, endRadius = b, angle = 60)\n  |> involuteCircular(\n       startRadius = a,\n       endRadius = b,\n       angle = 60,\n       reverse = true,\n     )", | ||||
|         "a = 10\nb = 14\nstartSketchOn(XZ)\n  |> startProfile(at = [0, 0])\n  |> involuteCircular(startRadius = a, endRadius = b, angle = 60deg)\n  |> involuteCircular(\n       startRadius = a,\n       endRadius = b,\n       angle = 60deg,\n       reverse = true,\n     )", | ||||
|         false | ||||
|       ] | ||||
|     ] | ||||
| @ -133783,7 +133783,7 @@ | ||||
|     "deprecated": false, | ||||
|     "examples": [ | ||||
|       [ | ||||
|         "exampleSketch = startSketchOn(XZ)\n  |> startProfile(at = [.5, 25])\n  |> line(end = [0, 5])\n  |> line(end = [-1, 0])\n  |> line(end = [0, -5])\n  |> close()\n  |> patternCircular2d(\n       center = [0, 0],\n       instances = 13,\n       arcDegrees = 360,\n       rotateDuplicates = true,\n     )\n\nexample = extrude(exampleSketch, length = 1)", | ||||
|         "exampleSketch = startSketchOn(XZ)\n  |> startProfile(at = [.5, 25])\n  |> line(end = [0, 5])\n  |> line(end = [-1, 0])\n  |> line(end = [0, -5])\n  |> close()\n  |> patternCircular2d(\n       center = [0, 0],\n       instances = 13,\n       arcDegrees = 360deg,\n       rotateDuplicates = true,\n     )\n\nexample = extrude(exampleSketch, length = 1)", | ||||
|         false | ||||
|       ] | ||||
|     ] | ||||
| @ -146653,7 +146653,7 @@ | ||||
|     "deprecated": false, | ||||
|     "examples": [ | ||||
|       [ | ||||
|         "exampleSketch = startSketchOn(XZ)\n  |> circle(center = [0, 0], radius = 1)\n\nexample = extrude(exampleSketch, length = -5)\n  |> patternCircular3d(\n       axis = [1, -1, 0],\n       center = [10, -20, 0],\n       instances = 11,\n       arcDegrees = 360,\n       rotateDuplicates = true,\n     )", | ||||
|         "exampleSketch = startSketchOn(XZ)\n  |> circle(center = [0, 0], radius = 1)\n\nexample = extrude(exampleSketch, length = -5)\n  |> patternCircular3d(\n       axis = [1, -1, 0],\n       center = [10, -20, 0],\n       instances = 11,\n       arcDegrees = 360deg,\n       rotateDuplicates = true,\n     )", | ||||
|         false | ||||
|       ] | ||||
|     ] | ||||
| @ -174025,11 +174025,11 @@ | ||||
|         false | ||||
|       ], | ||||
|       [ | ||||
|         "fn cube(length, center) {\n  l = length / 2\n  x = center[0]\n  y = center[1]\n  p0 = [-l + x, -l + y]\n  p1 = [-l + x, l + y]\n  p2 = [l + x, l + y]\n  p3 = [l + x, -l + y]\n\n  return startSketchOn(XY)\n    |> startProfile(at = p0)\n    |> line(endAbsolute = p1)\n    |> line(endAbsolute = p2)\n    |> line(endAbsolute = p3)\n    |> line(endAbsolute = p0)\n    |> close()\n    |> extrude(length = length)\n}\n\nwidth = 20\nfn transform(@i) {\n  return {\n    // Move down each time.\n    translate = [0, 0, -i * width],\n    // Make the cube longer, wider and flatter each time.\n    scale = [\n      pow(1.1, exp = i),\n      pow(1.1, exp = i),\n      pow(0.9, exp = i)\n    ],\n    // Turn by 15 degrees each time.\n    rotation = { angle = 15 * i, origin = \"local\" }\n  }\n}\n\nmyCubes = cube(length = width, center = [100, 0])\n  |> patternTransform(instances = 25, transform = transform)", | ||||
|         "fn cube(length, center) {\n  l = length / 2\n  x = center[0]\n  y = center[1]\n  p0 = [-l + x, -l + y]\n  p1 = [-l + x, l + y]\n  p2 = [l + x, l + y]\n  p3 = [l + x, -l + y]\n\n  return startSketchOn(XY)\n    |> startProfile(at = p0)\n    |> line(endAbsolute = p1)\n    |> line(endAbsolute = p2)\n    |> line(endAbsolute = p3)\n    |> line(endAbsolute = p0)\n    |> close()\n    |> extrude(length = length)\n}\n\nwidth = 20\nfn transform(@i) {\n  return {\n    // Move down each time.\n    translate = [0, 0, -i * width],\n    // Make the cube longer, wider and flatter each time.\n    scale = [\n      pow(1.1, exp = i),\n      pow(1.1, exp = i),\n      pow(0.9, exp = i)\n    ],\n    // Turn by 15 degrees each time.\n    rotation = { angle = 15deg * i, origin = \"local\" }\n  }\n}\n\nmyCubes = cube(length = width, center = [100, 0])\n  |> patternTransform(instances = 25, transform = transform)", | ||||
|         false | ||||
|       ], | ||||
|       [ | ||||
|         "fn cube(length, center) {\n  l = length / 2\n  x = center[0]\n  y = center[1]\n  p0 = [-l + x, -l + y]\n  p1 = [-l + x, l + y]\n  p2 = [l + x, l + y]\n  p3 = [l + x, -l + y]\n\n  return startSketchOn(XY)\n    |> startProfile(at = p0)\n    |> line(endAbsolute = p1)\n    |> line(endAbsolute = p2)\n    |> line(endAbsolute = p3)\n    |> line(endAbsolute = p0)\n    |> close()\n    |> extrude(length = length)\n}\n\nwidth = 20\nfn transform(@i) {\n  return {\n    translate = [0, 0, -i * width],\n    rotation = {\n      angle = 90 * i,\n      // Rotate around the overall scene's origin.\n      origin = \"global\"\n    }\n  }\n}\nmyCubes = cube(length = width, center = [100, 100])\n  |> patternTransform(instances = 4, transform = transform)", | ||||
|         "fn cube(length, center) {\n  l = length / 2\n  x = center[0]\n  y = center[1]\n  p0 = [-l + x, -l + y]\n  p1 = [-l + x, l + y]\n  p2 = [l + x, l + y]\n  p3 = [l + x, -l + y]\n\n  return startSketchOn(XY)\n    |> startProfile(at = p0)\n    |> line(endAbsolute = p1)\n    |> line(endAbsolute = p2)\n    |> line(endAbsolute = p3)\n    |> line(endAbsolute = p0)\n    |> close()\n    |> extrude(length = length)\n}\n\nwidth = 20\nfn transform(@i) {\n  return {\n    translate = [0, 0, -i * width],\n    rotation = {\n      angle = 90deg * i,\n      // Rotate around the overall scene's origin.\n      origin = \"global\"\n    }\n  }\n}\nmyCubes = cube(length = width, center = [100, 100])\n  |> patternTransform(instances = 4, transform = transform)", | ||||
|         false | ||||
|       ], | ||||
|       [ | ||||
| @ -174037,7 +174037,7 @@ | ||||
|         false | ||||
|       ], | ||||
|       [ | ||||
|         "fn transform(@i) {\n  // Transform functions can return multiple transforms. They'll be applied in order.\n  return [\n    { translate = [30 * i, 0, 0] },\n    { rotation = { angle = 45 * i } }\n  ]\n}\nstartSketchOn(XY)\n  |> startProfile(at = [0, 0])\n  |> polygon(\n       radius = 10,\n       numSides = 4,\n       center = [0, 0],\n       inscribed = false,\n     )\n  |> extrude(length = 4)\n  |> patternTransform(instances = 3, transform = transform)", | ||||
|         "fn transform(@i) {\n  // Transform functions can return multiple transforms. They'll be applied in order.\n  return [\n    { translate = [30 * i, 0, 0] },\n    { rotation = { angle = 45deg * i } }\n  ]\n}\nstartSketchOn(XY)\n  |> startProfile(at = [0, 0])\n  |> polygon(\n       radius = 10,\n       numSides = 4,\n       center = [0, 0],\n       inscribed = false,\n     )\n  |> extrude(length = 4)\n  |> patternTransform(instances = 3, transform = transform)", | ||||
|         false | ||||
|       ] | ||||
|     ] | ||||
| @ -193508,7 +193508,7 @@ | ||||
|     "deprecated": false, | ||||
|     "examples": [ | ||||
|       [ | ||||
|         "sketch001 = startSketchOn(XY)\n  |> startProfile(at = [5, 2])\n  |> angledLine(angle = 120, length = 50, tag = $seg01)\n  |> angledLine(angle = segAng(seg01) + 120, length = 50)\n  |> line(end = profileStart(%))\n  |> close()\n  |> extrude(length = 20)", | ||||
|         "sketch001 = startSketchOn(XY)\n  |> startProfile(at = [5, 2])\n  |> angledLine(angle = 120deg, length = 50, tag = $seg01)\n  |> angledLine(angle = segAng(seg01) + 120deg, length = 50)\n  |> line(end = profileStart(%))\n  |> close()\n  |> extrude(length = 20)", | ||||
|         false | ||||
|       ] | ||||
|     ] | ||||
| @ -195205,7 +195205,7 @@ | ||||
|     "deprecated": false, | ||||
|     "examples": [ | ||||
|       [ | ||||
|         "sketch001 = startSketchOn(XY)\n  |> startProfile(at = [5, 2])\n  |> angledLine(angle = -26.6, length = 50)\n  |> angledLine(angle = 90, length = 50)\n  |> angledLine(angle = 30, endAbsoluteX = profileStartX(%))", | ||||
|         "sketch001 = startSketchOn(XY)\n  |> startProfile(at = [5, 2])\n  |> angledLine(angle = -26.6deg, length = 50)\n  |> angledLine(angle = 90deg, length = 50)\n  |> angledLine(angle = 30deg, endAbsoluteX = profileStartX(%))", | ||||
|         false | ||||
|       ] | ||||
|     ] | ||||
| @ -196902,7 +196902,7 @@ | ||||
|     "deprecated": false, | ||||
|     "examples": [ | ||||
|       [ | ||||
|         "sketch001 = startSketchOn(XY)\n  |> startProfile(at = [5, 2])\n  |> angledLine(angle = -60, length = 14)\n  |> angledLine(angle = 30, endAbsoluteY = profileStartY(%))", | ||||
|         "sketch001 = startSketchOn(XY)\n  |> startProfile(at = [5, 2])\n  |> angledLine(angle = -60deg, length = 14)\n  |> angledLine(angle = 30deg, endAbsoluteY = profileStartY(%))", | ||||
|         false | ||||
|       ] | ||||
|     ] | ||||
| @ -209907,27 +209907,27 @@ | ||||
|     "deprecated": false, | ||||
|     "examples": [ | ||||
|       [ | ||||
|         "// Rotate a pipe with roll, pitch, and yaw.\n\n// Create a path for the sweep.\nsweepPath = startSketchOn(XZ)\n  |> startProfile(at = [0.05, 0.05])\n  |> line(end = [0, 7])\n  |> tangentialArc(angle = 90, radius = 5)\n  |> line(end = [-3, 0])\n  |> tangentialArc(angle = -90, radius = 5)\n  |> line(end = [0, 7])\n\n// Create a hole for the pipe.\npipeHole = startSketchOn(XY)\n  |> circle(center = [0, 0], radius = 1.5)\n\nsweepSketch = startSketchOn(XY)\n  |> circle(center = [0, 0], radius = 2)\n  |> subtract2d(tool = pipeHole)\n  |> sweep(path = sweepPath)\n  |> rotate(roll = 10, pitch = 10, yaw = 90)", | ||||
|         "// Rotate a pipe with roll, pitch, and yaw.\n\n// Create a path for the sweep.\nsweepPath = startSketchOn(XZ)\n  |> startProfile(at = [0.05, 0.05])\n  |> line(end = [0, 7])\n  |> tangentialArc(angle = 90deg, radius = 5)\n  |> line(end = [-3, 0])\n  |> tangentialArc(angle = -90deg, radius = 5)\n  |> line(end = [0, 7])\n\n// Create a hole for the pipe.\npipeHole = startSketchOn(XY)\n  |> circle(center = [0, 0], radius = 1.5)\n\nsweepSketch = startSketchOn(XY)\n  |> circle(center = [0, 0], radius = 2)\n  |> subtract2d(tool = pipeHole)\n  |> sweep(path = sweepPath)\n  |> rotate(roll = 10deg, pitch = 10deg, yaw = 90deg)", | ||||
|         false | ||||
|       ], | ||||
|       [ | ||||
|         "// Rotate a pipe with just roll.\n\n// Create a path for the sweep.\nsweepPath = startSketchOn(XZ)\n  |> startProfile(at = [0.05, 0.05])\n  |> line(end = [0, 7])\n  |> tangentialArc(angle = 90, radius = 5)\n  |> line(end = [-3, 0])\n  |> tangentialArc(angle = -90, radius = 5)\n  |> line(end = [0, 7])\n\n// Create a hole for the pipe.\npipeHole = startSketchOn(XY)\n  |> circle(center = [0, 0], radius = 1.5)\n\nsweepSketch = startSketchOn(XY)\n  |> circle(center = [0, 0], radius = 2)\n  |> subtract2d(tool = pipeHole)\n  |> sweep(path = sweepPath)\n  |> rotate(roll = 10)", | ||||
|         "// Rotate a pipe with just roll.\n\n// Create a path for the sweep.\nsweepPath = startSketchOn(XZ)\n  |> startProfile(at = [0.05, 0.05])\n  |> line(end = [0, 7])\n  |> tangentialArc(angle = 90deg, radius = 5)\n  |> line(end = [-3, 0])\n  |> tangentialArc(angle = -90deg, radius = 5)\n  |> line(end = [0, 7])\n\n// Create a hole for the pipe.\npipeHole = startSketchOn(XY)\n  |> circle(center = [0, 0], radius = 1.5)\n\nsweepSketch = startSketchOn(XY)\n  |> circle(center = [0, 0], radius = 2)\n  |> subtract2d(tool = pipeHole)\n  |> sweep(path = sweepPath)\n  |> rotate(roll = 10deg)", | ||||
|         false | ||||
|       ], | ||||
|       [ | ||||
|         "// Rotate a pipe about an axis with an angle.\n\n// Create a path for the sweep.\nsweepPath = startSketchOn(XZ)\n  |> startProfile(at = [0.05, 0.05])\n  |> line(end = [0, 7])\n  |> tangentialArc(angle = 90, radius = 5)\n  |> line(end = [-3, 0])\n  |> tangentialArc(angle = -90, radius = 5)\n  |> line(end = [0, 7])\n\n// Create a hole for the pipe.\npipeHole = startSketchOn(XY)\n  |> circle(center = [0, 0], radius = 1.5)\n\nsweepSketch = startSketchOn(XY)\n  |> circle(center = [0, 0], radius = 2)\n  |> subtract2d(tool = pipeHole)\n  |> sweep(path = sweepPath)\n  |> rotate(axis = [0, 0, 1.0], angle = 90)", | ||||
|         "// Rotate a pipe about an axis with an angle.\n\n// Create a path for the sweep.\nsweepPath = startSketchOn(XZ)\n  |> startProfile(at = [0.05, 0.05])\n  |> line(end = [0, 7])\n  |> tangentialArc(angle = 90deg, radius = 5)\n  |> line(end = [-3, 0])\n  |> tangentialArc(angle = -90deg, radius = 5)\n  |> line(end = [0, 7])\n\n// Create a hole for the pipe.\npipeHole = startSketchOn(XY)\n  |> circle(center = [0, 0], radius = 1.5)\n\nsweepSketch = startSketchOn(XY)\n  |> circle(center = [0, 0], radius = 2)\n  |> subtract2d(tool = pipeHole)\n  |> sweep(path = sweepPath)\n  |> rotate(axis = [0, 0, 1.0], angle = 90deg)", | ||||
|         false | ||||
|       ], | ||||
|       [ | ||||
|         "// Rotate an imported model.\n\n\nimport \"tests/inputs/cube.sldprt\" as cube\n\ncube\n  |> rotate(axis = [0, 0, 1.0], angle = 9)", | ||||
|         "// Rotate an imported model.\n\n\nimport \"tests/inputs/cube.sldprt\" as cube\n\ncube\n  |> rotate(axis = [0, 0, 1.0], angle = 9deg)", | ||||
|         false | ||||
|       ], | ||||
|       [ | ||||
|         "// Sweep two sketches along the same path.\n\n\nsketch001 = startSketchOn(XY)\nrectangleSketch = startProfile(sketch001, at = [-200, 23.86])\n  |> angledLine(angle = 0, length = 73.47, tag = $rectangleSegmentA001)\n  |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 50.61)\n  |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001))\n  |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n  |> close()\n\ncircleSketch = circle(sketch001, center = [200, -30.29], radius = 32.63)\n\nsketch002 = startSketchOn(YZ)\nsweepPath = startProfile(sketch002, at = [0, 0])\n  |> yLine(length = 231.81)\n  |> tangentialArc(radius = 80, angle = -90)\n  |> xLine(length = 384.93)\n\nparts = sweep([rectangleSketch, circleSketch], path = sweepPath)\n\n// Rotate the sweeps.\nrotate(parts, axis = [0, 0, 1.0], angle = 90)", | ||||
|         "// Sweep two sketches along the same path.\n\n\nsketch001 = startSketchOn(XY)\nrectangleSketch = startProfile(sketch001, at = [-200, 23.86])\n  |> angledLine(angle = 0deg, length = 73.47, tag = $rectangleSegmentA001)\n  |> angledLine(angle = segAng(rectangleSegmentA001) - 90deg, length = 50.61)\n  |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001))\n  |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n  |> close()\n\ncircleSketch = circle(sketch001, center = [200, -30.29], radius = 32.63)\n\nsketch002 = startSketchOn(YZ)\nsweepPath = startProfile(sketch002, at = [0, 0])\n  |> yLine(length = 231.81)\n  |> tangentialArc(radius = 80, angle = -90deg)\n  |> xLine(length = 384.93)\n\nparts = sweep([rectangleSketch, circleSketch], path = sweepPath)\n\n// Rotate the sweeps.\nrotate(parts, axis = [0, 0, 1.0], angle = 90deg)", | ||||
|         false | ||||
|       ], | ||||
|       [ | ||||
|         "// Translate and rotate a sketch to create a loft.\nsketch001 = startSketchOn(XY)\n\nfn square() {\n  return startProfile(sketch001, at = [-10, 10])\n    |> xLine(length = 20)\n    |> yLine(length = -20)\n    |> xLine(length = -20)\n    |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n    |> close()\n}\n\nprofile001 = square()\n\nprofile002 = square()\n  |> translate(x = 0, y = 0, z = 20)\n  |> rotate(axis = [0, 0, 1.0], angle = 45)\n\nloft([profile001, profile002])", | ||||
|         "// Translate and rotate a sketch to create a loft.\nsketch001 = startSketchOn(XY)\n\nfn square() {\n  return startProfile(sketch001, at = [-10, 10])\n    |> xLine(length = 20)\n    |> yLine(length = -20)\n    |> xLine(length = -20)\n    |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n    |> close()\n}\n\nprofile001 = square()\n\nprofile002 = square()\n  |> translate(x = 0, y = 0, z = 20)\n  |> rotate(axis = [0, 0, 1.0], angle = 45deg)\n\nloft([profile001, profile002])", | ||||
|         false | ||||
|       ] | ||||
|     ] | ||||
| @ -219717,7 +219717,7 @@ | ||||
|     "deprecated": false, | ||||
|     "examples": [ | ||||
|       [ | ||||
|         "// Scale a pipe.\n\n// Create a path for the sweep.\nsweepPath = startSketchOn(XZ)\n  |> startProfile(at = [0.05, 0.05])\n  |> line(end = [0, 7])\n  |> tangentialArc(angle = 90, radius = 5)\n  |> line(end = [-3, 0])\n  |> tangentialArc(angle = -90, radius = 5)\n  |> line(end = [0, 7])\n\n// Create a hole for the pipe.\npipeHole = startSketchOn(XY)\n  |> circle(center = [0, 0], radius = 1.5)\n\nsweepSketch = startSketchOn(XY)\n  |> circle(center = [0, 0], radius = 2)\n  |> subtract2d(tool = pipeHole)\n  |> sweep(path = sweepPath)\n  |> scale(z = 2.5)", | ||||
|         "// Scale a pipe.\n\n// Create a path for the sweep.\nsweepPath = startSketchOn(XZ)\n  |> startProfile(at = [0.05, 0.05])\n  |> line(end = [0, 7])\n  |> tangentialArc(angle = 90deg, radius = 5)\n  |> line(end = [-3, 0])\n  |> tangentialArc(angle = -90deg, radius = 5)\n  |> line(end = [0, 7])\n\n// Create a hole for the pipe.\npipeHole = startSketchOn(XY)\n  |> circle(center = [0, 0], radius = 1.5)\n\nsweepSketch = startSketchOn(XY)\n  |> circle(center = [0, 0], radius = 2)\n  |> subtract2d(tool = pipeHole)\n  |> sweep(path = sweepPath)\n  |> scale(z = 2.5)", | ||||
|         false | ||||
|       ], | ||||
|       [ | ||||
| @ -219725,7 +219725,7 @@ | ||||
|         false | ||||
|       ], | ||||
|       [ | ||||
|         "// Sweep two sketches along the same path.\n\n\nsketch001 = startSketchOn(XY)\nrectangleSketch = startProfile(sketch001, at = [-200, 23.86])\n  |> angledLine(angle = 0, length = 73.47, tag = $rectangleSegmentA001)\n  |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 50.61)\n  |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001))\n  |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n  |> close()\n\ncircleSketch = circle(sketch001, center = [200, -30.29], radius = 32.63)\n\nsketch002 = startSketchOn(YZ)\nsweepPath = startProfile(sketch002, at = [0, 0])\n  |> yLine(length = 231.81)\n  |> tangentialArc(radius = 80, angle = -90)\n  |> xLine(length = 384.93)\n\nparts = sweep([rectangleSketch, circleSketch], path = sweepPath)\n\n// Scale the sweep.\nscale(parts, z = 0.5)", | ||||
|         "// Sweep two sketches along the same path.\n\n\nsketch001 = startSketchOn(XY)\nrectangleSketch = startProfile(sketch001, at = [-200, 23.86])\n  |> angledLine(angle = 0deg, length = 73.47, tag = $rectangleSegmentA001)\n  |> angledLine(angle = segAng(rectangleSegmentA001) - 90deg, length = 50.61)\n  |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001))\n  |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n  |> close()\n\ncircleSketch = circle(sketch001, center = [200, -30.29], radius = 32.63)\n\nsketch002 = startSketchOn(YZ)\nsweepPath = startProfile(sketch002, at = [0, 0])\n  |> yLine(length = 231.81)\n  |> tangentialArc(radius = 80, angle = -90deg)\n  |> xLine(length = 384.93)\n\nparts = sweep([rectangleSketch, circleSketch], path = sweepPath)\n\n// Scale the sweep.\nscale(parts, z = 0.5)", | ||||
|         false | ||||
|       ] | ||||
|     ] | ||||
| @ -220000,7 +220000,7 @@ | ||||
|     "deprecated": false, | ||||
|     "examples": [ | ||||
|       [ | ||||
|         "exampleSketch = startSketchOn(XZ)\n  |> startProfile(at = [0, 0])\n  |> angledLine(angle = 60, length = 10, tag = $thing)\n  |> tangentialArc(angle = -120, radius = 5)\n  |> angledLine(angle = -60, length = segLen(thing))\n  |> close()\n\nexample = extrude(exampleSketch, length = 5)", | ||||
|         "exampleSketch = startSketchOn(XZ)\n  |> startProfile(at = [0, 0])\n  |> angledLine(angle = 60deg, length = 10, tag = $thing)\n  |> tangentialArc(angle = -120deg, radius = 5)\n  |> angledLine(angle = -60deg, length = segLen(thing))\n  |> close()\n\nexample = extrude(exampleSketch, length = 5)", | ||||
|         false | ||||
|       ] | ||||
|     ] | ||||
| @ -232122,11 +232122,11 @@ | ||||
|         false | ||||
|       ], | ||||
|       [ | ||||
|         "exampleSketch = startSketchOn(XY)\n  |> startProfile(at = [4, 12])\n  |> line(end = [2, 0])\n  |> line(end = [0, -6])\n  |> line(end = [4, -6])\n  |> line(end = [0, -6])\n  |> line(end = [-3.75, -4.5])\n  |> line(end = [0, -5.5])\n  |> line(end = [-2, 0])\n  |> close()\n\nexample = revolve(exampleSketch, axis = Y, angle = 180)\n\nexampleSketch002 = startSketchOn(example, face = END)\n  |> startProfile(at = [4.5, -5])\n  |> line(end = [0, 5])\n  |> line(end = [5, 0])\n  |> line(end = [0, -5])\n  |> close()\n\nexample002 = extrude(exampleSketch002, length = 5)", | ||||
|         "exampleSketch = startSketchOn(XY)\n  |> startProfile(at = [4, 12])\n  |> line(end = [2, 0])\n  |> line(end = [0, -6])\n  |> line(end = [4, -6])\n  |> line(end = [0, -6])\n  |> line(end = [-3.75, -4.5])\n  |> line(end = [0, -5.5])\n  |> line(end = [-2, 0])\n  |> close()\n\nexample = revolve(exampleSketch, axis = Y, angle = 180deg)\n\nexampleSketch002 = startSketchOn(example, face = END)\n  |> startProfile(at = [4.5, -5])\n  |> line(end = [0, 5])\n  |> line(end = [5, 0])\n  |> line(end = [0, -5])\n  |> close()\n\nexample002 = extrude(exampleSketch002, length = 5)", | ||||
|         false | ||||
|       ], | ||||
|       [ | ||||
|         "// Sketch on the end of a revolved face by tagging the end face.\n\n\nexampleSketch = startSketchOn(XY)\n  |> startProfile(at = [4, 12])\n  |> line(end = [2, 0])\n  |> line(end = [0, -6])\n  |> line(end = [4, -6])\n  |> line(end = [0, -6])\n  |> line(end = [-3.75, -4.5])\n  |> line(end = [0, -5.5])\n  |> line(end = [-2, 0])\n  |> close()\n\nexample = revolve(\n  exampleSketch,\n  axis = Y,\n  angle = 180,\n  tagEnd = $end01,\n)\n\nexampleSketch002 = startSketchOn(example, face = end01)\n  |> startProfile(at = [4.5, -5])\n  |> line(end = [0, 5])\n  |> line(end = [5, 0])\n  |> line(end = [0, -5])\n  |> close()\n\nexample002 = extrude(exampleSketch002, length = 5)", | ||||
|         "// Sketch on the end of a revolved face by tagging the end face.\n\n\nexampleSketch = startSketchOn(XY)\n  |> startProfile(at = [4, 12])\n  |> line(end = [2, 0])\n  |> line(end = [0, -6])\n  |> line(end = [4, -6])\n  |> line(end = [0, -6])\n  |> line(end = [-3.75, -4.5])\n  |> line(end = [0, -5.5])\n  |> line(end = [-2, 0])\n  |> close()\n\nexample = revolve(\n  exampleSketch,\n  axis = Y,\n  angle = 180deg,\n  tagEnd = $end01,\n)\n\nexampleSketch002 = startSketchOn(example, face = end01)\n  |> startProfile(at = [4.5, -5])\n  |> line(end = [0, 5])\n  |> line(end = [5, 0])\n  |> line(end = [0, -5])\n  |> close()\n\nexample002 = extrude(exampleSketch002, length = 5)", | ||||
|         false | ||||
|       ], | ||||
|       [ | ||||
| @ -256716,19 +256716,19 @@ | ||||
|     "deprecated": false, | ||||
|     "examples": [ | ||||
|       [ | ||||
|         "// Create a pipe using a sweep.\n\n// Create a path for the sweep.\nsweepPath = startSketchOn(XZ)\n  |> startProfile(at = [0.05, 0.05])\n  |> line(end = [0, 7])\n  |> tangentialArc(angle = 90, radius = 5)\n  |> line(end = [-3, 0])\n  |> tangentialArc(angle = -90, radius = 5)\n  |> line(end = [0, 7])\n\n// Create a hole for the pipe.\npipeHole = startSketchOn(XY)\n  |> circle(center = [0, 0], radius = 1.5)\n\nsweepSketch = startSketchOn(XY)\n  |> circle(center = [0, 0], radius = 2)\n  |> subtract2d(tool = pipeHole)\n  |> sweep(path = sweepPath)", | ||||
|         "// Create a pipe using a sweep.\n\n// Create a path for the sweep.\nsweepPath = startSketchOn(XZ)\n  |> startProfile(at = [0.05, 0.05])\n  |> line(end = [0, 7])\n  |> tangentialArc(angle = 90deg, radius = 5)\n  |> line(end = [-3, 0])\n  |> tangentialArc(angle = -90deg, radius = 5)\n  |> line(end = [0, 7])\n\n// Create a hole for the pipe.\npipeHole = startSketchOn(XY)\n  |> circle(center = [0, 0], radius = 1.5)\n\nsweepSketch = startSketchOn(XY)\n  |> circle(center = [0, 0], radius = 2)\n  |> subtract2d(tool = pipeHole)\n  |> sweep(path = sweepPath)", | ||||
|         false | ||||
|       ], | ||||
|       [ | ||||
|         "// Create a spring by sweeping around a helix path.\n\n// Create a helix around the Z axis.\nhelixPath = helix(\n  angleStart = 0,\n  ccw = true,\n  revolutions = 4,\n  length = 10,\n  radius = 5,\n  axis = Z,\n)\n\n// Create a spring by sweeping around the helix path.\nspringSketch = startSketchOn(YZ)\n  |> circle(center = [0, 0], radius = 1)\n  |> sweep(path = helixPath, relativeTo = \"sketchPlane\")", | ||||
|         "// Create a spring by sweeping around a helix path.\n\n// Create a helix around the Z axis.\nhelixPath = helix(\n  angleStart = 0deg,\n  ccw = true,\n  revolutions = 4,\n  length = 10,\n  radius = 5,\n  axis = Z,\n)\n\n// Create a spring by sweeping around the helix path.\nspringSketch = startSketchOn(YZ)\n  |> circle(center = [0, 0], radius = 1)\n  |> sweep(path = helixPath, relativeTo = \"sketchPlane\")", | ||||
|         false | ||||
|       ], | ||||
|       [ | ||||
|         "// Sweep two sketches along the same path.\n\n\nsketch001 = startSketchOn(XY)\nrectangleSketch = startProfile(sketch001, at = [-200, 23.86])\n  |> angledLine(angle = 0, length = 73.47, tag = $rectangleSegmentA001)\n  |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 50.61)\n  |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001))\n  |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n  |> close()\n\ncircleSketch = circle(sketch001, center = [200, -30.29], radius = 32.63)\n\nsketch002 = startSketchOn(YZ)\nsweepPath = startProfile(sketch002, at = [0, 0])\n  |> yLine(length = 231.81)\n  |> tangentialArc(radius = 80, angle = -90)\n  |> xLine(length = 384.93)\n\nsweep([rectangleSketch, circleSketch], path = sweepPath)", | ||||
|         "// Sweep two sketches along the same path.\n\n\nsketch001 = startSketchOn(XY)\nrectangleSketch = startProfile(sketch001, at = [-200, 23.86])\n  |> angledLine(angle = 0deg, length = 73.47, tag = $rectangleSegmentA001)\n  |> angledLine(angle = segAng(rectangleSegmentA001) - 90deg, length = 50.61)\n  |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001))\n  |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n  |> close()\n\ncircleSketch = circle(sketch001, center = [200, -30.29], radius = 32.63)\n\nsketch002 = startSketchOn(YZ)\nsweepPath = startProfile(sketch002, at = [0, 0])\n  |> yLine(length = 231.81)\n  |> tangentialArc(radius = 80, angle = -90deg)\n  |> xLine(length = 384.93)\n\nsweep([rectangleSketch, circleSketch], path = sweepPath)", | ||||
|         false | ||||
|       ], | ||||
|       [ | ||||
|         "// Sectionally sweep one sketch along the path\n\n\nsketch001 = startSketchOn(XY)\ncircleSketch = circle(sketch001, center = [200, -30.29], radius = 32.63)\n\nsketch002 = startSketchOn(YZ)\nsweepPath = startProfile(sketch002, at = [0, 0])\n  |> yLine(length = 231.81)\n  |> tangentialArc(radius = 80, angle = -90)\n  |> xLine(length = 384.93)\n\nsweep(circleSketch, path = sweepPath, sectional = true)", | ||||
|         "// Sectionally sweep one sketch along the path\n\n\nsketch001 = startSketchOn(XY)\ncircleSketch = circle(sketch001, center = [200, -30.29], radius = 32.63)\n\nsketch002 = startSketchOn(YZ)\nsweepPath = startProfile(sketch002, at = [0, 0])\n  |> yLine(length = 231.81)\n  |> tangentialArc(radius = 80, angle = -90deg)\n  |> xLine(length = 384.93)\n\nsweep(circleSketch, path = sweepPath, sectional = true)", | ||||
|         false | ||||
|       ] | ||||
|     ] | ||||
| @ -268188,15 +268188,15 @@ | ||||
|     "deprecated": false, | ||||
|     "examples": [ | ||||
|       [ | ||||
|         "exampleSketch = startSketchOn(XZ)\n  |> startProfile(at = [0, 0])\n  |> angledLine(angle = 45, length = 10)\n  |> tangentialArc(end = [0, -10])\n  |> line(end = [-10, 0])\n  |> close()\n\nexample = extrude(exampleSketch, length = 10)", | ||||
|         "exampleSketch = startSketchOn(XZ)\n  |> startProfile(at = [0, 0])\n  |> angledLine(angle = 45deg, length = 10)\n  |> tangentialArc(end = [0, -10])\n  |> line(end = [-10, 0])\n  |> close()\n\nexample = extrude(exampleSketch, length = 10)", | ||||
|         false | ||||
|       ], | ||||
|       [ | ||||
|         "exampleSketch = startSketchOn(XZ)\n  |> startProfile(at = [0, 0])\n  |> angledLine(angle = 60, length = 10)\n  |> tangentialArc(endAbsolute = [15, 15])\n  |> line(end = [10, -15])\n  |> close()\n\nexample = extrude(exampleSketch, length = 10)", | ||||
|         "exampleSketch = startSketchOn(XZ)\n  |> startProfile(at = [0, 0])\n  |> angledLine(angle = 60deg, length = 10)\n  |> tangentialArc(endAbsolute = [15, 15])\n  |> line(end = [10, -15])\n  |> close()\n\nexample = extrude(exampleSketch, length = 10)", | ||||
|         false | ||||
|       ], | ||||
|       [ | ||||
|         "exampleSketch = startSketchOn(XZ)\n  |> startProfile(at = [0, 0])\n  |> angledLine(angle = 60, length = 10)\n  |> tangentialArc(radius = 10, angle = -120)\n  |> angledLine(angle = -60, length = 10)\n  |> close()\n\nexample = extrude(exampleSketch, length = 10)", | ||||
|         "exampleSketch = startSketchOn(XZ)\n  |> startProfile(at = [0, 0])\n  |> angledLine(angle = 60deg, length = 10)\n  |> tangentialArc(radius = 10, angle = -120deg)\n  |> angledLine(angle = -60deg, length = 10)\n  |> close()\n\nexample = extrude(exampleSketch, length = 10)", | ||||
|         false | ||||
|       ] | ||||
|     ] | ||||
| @ -277995,7 +277995,7 @@ | ||||
|     "deprecated": false, | ||||
|     "examples": [ | ||||
|       [ | ||||
|         "// Move a pipe.\n\n// Create a path for the sweep.\nsweepPath = startSketchOn(XZ)\n  |> startProfile(at = [0.05, 0.05])\n  |> line(end = [0, 7])\n  |> tangentialArc(angle = 90, radius = 5)\n  |> line(end = [-3, 0])\n  |> tangentialArc(angle = -90, radius = 5)\n  |> line(end = [0, 7])\n\n// Create a hole for the pipe.\npipeHole = startSketchOn(XY)\n  |> circle(center = [0, 0], radius = 1.5)\n\nsweepSketch = startSketchOn(XY)\n  |> circle(center = [0, 0], radius = 2)\n  |> subtract2d(tool = pipeHole)\n  |> sweep(path = sweepPath)\n  |> translate(x = 1.0, y = 1.0, z = 2.5)", | ||||
|         "// Move a pipe.\n\n// Create a path for the sweep.\nsweepPath = startSketchOn(XZ)\n  |> startProfile(at = [0.05, 0.05])\n  |> line(end = [0, 7])\n  |> tangentialArc(angle = 90deg, radius = 5)\n  |> line(end = [-3, 0])\n  |> tangentialArc(angle = -90deg, radius = 5)\n  |> line(end = [0, 7])\n\n// Create a hole for the pipe.\npipeHole = startSketchOn(XY)\n  |> circle(center = [0, 0], radius = 1.5)\n\nsweepSketch = startSketchOn(XY)\n  |> circle(center = [0, 0], radius = 2)\n  |> subtract2d(tool = pipeHole)\n  |> sweep(path = sweepPath)\n  |> translate(x = 1.0, y = 1.0, z = 2.5)", | ||||
|         false | ||||
|       ], | ||||
|       [ | ||||
| @ -278003,7 +278003,7 @@ | ||||
|         false | ||||
|       ], | ||||
|       [ | ||||
|         "// Sweep two sketches along the same path.\n\n\nsketch001 = startSketchOn(XY)\nrectangleSketch = startProfile(sketch001, at = [-200, 23.86])\n  |> angledLine(angle = 0, length = 73.47, tag = $rectangleSegmentA001)\n  |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 50.61)\n  |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001))\n  |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n  |> close()\n\ncircleSketch = circle(sketch001, center = [200, -30.29], radius = 32.63)\n\nsketch002 = startSketchOn(YZ)\nsweepPath = startProfile(sketch002, at = [0, 0])\n  |> yLine(length = 231.81)\n  |> tangentialArc(radius = 80, angle = -90)\n  |> xLine(length = 384.93)\n\nparts = sweep([rectangleSketch, circleSketch], path = sweepPath)\n\n// Move the sweeps.\ntranslate(\n  parts,\n  x = 1.0,\n  y = 1.0,\n  z = 2.5,\n)", | ||||
|         "// Sweep two sketches along the same path.\n\n\nsketch001 = startSketchOn(XY)\nrectangleSketch = startProfile(sketch001, at = [-200, 23.86])\n  |> angledLine(angle = 0deg, length = 73.47, tag = $rectangleSegmentA001)\n  |> angledLine(angle = segAng(rectangleSegmentA001) - 90deg, length = 50.61)\n  |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001))\n  |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n  |> close()\n\ncircleSketch = circle(sketch001, center = [200, -30.29], radius = 32.63)\n\nsketch002 = startSketchOn(YZ)\nsweepPath = startProfile(sketch002, at = [0, 0])\n  |> yLine(length = 231.81)\n  |> tangentialArc(radius = 80, angle = -90deg)\n  |> xLine(length = 384.93)\n\nparts = sweep([rectangleSketch, circleSketch], path = sweepPath)\n\n// Move the sweeps.\ntranslate(\n  parts,\n  x = 1.0,\n  y = 1.0,\n  z = 2.5,\n)", | ||||
|         false | ||||
|       ], | ||||
|       [ | ||||
| @ -278011,7 +278011,7 @@ | ||||
|         false | ||||
|       ], | ||||
|       [ | ||||
|         "// Translate and rotate a sketch to create a loft.\nsketch001 = startSketchOn(XY)\n\nfn square() {\n  return startProfile(sketch001, at = [-10, 10])\n    |> xLine(length = 20)\n    |> yLine(length = -20)\n    |> xLine(length = -20)\n    |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n    |> close()\n}\n\nprofile001 = square()\n\nprofile002 = square()\n  |> translate(z = 20)\n  |> rotate(axis = [0, 0, 1.0], angle = 45)\n\nloft([profile001, profile002])", | ||||
|         "// Translate and rotate a sketch to create a loft.\nsketch001 = startSketchOn(XY)\n\nfn square() {\n  return startProfile(sketch001, at = [-10, 10])\n    |> xLine(length = 20)\n    |> yLine(length = -20)\n    |> xLine(length = -20)\n    |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n    |> close()\n}\n\nprofile001 = square()\n\nprofile002 = square()\n  |> translate(z = 20)\n  |> rotate(axis = [0, 0, 1.0], angle = 45deg)\n\nloft([profile001, profile002])", | ||||
|         false | ||||
|       ] | ||||
|     ] | ||||
| @ -291032,7 +291032,7 @@ | ||||
|     "deprecated": false, | ||||
|     "examples": [ | ||||
|       [ | ||||
|         "exampleSketch = startSketchOn(XZ)\n  |> startProfile(at = [0, 0])\n  |> xLine(length = 15)\n  |> angledLine(angle = 80, length = 15)\n  |> line(end = [8, -10])\n  |> xLine(length = 10)\n  |> angledLine(angle = 120, length = 30)\n  |> xLine(length = -15)\n  |> close()\n\nexample = extrude(exampleSketch, length = 10)", | ||||
|         "exampleSketch = startSketchOn(XZ)\n  |> startProfile(at = [0, 0])\n  |> xLine(length = 15)\n  |> angledLine(angle = 80deg, length = 15)\n  |> line(end = [8, -10])\n  |> xLine(length = 10)\n  |> angledLine(angle = 120deg, length = 30)\n  |> xLine(length = -15)\n  |> close()\n\nexample = extrude(exampleSketch, length = 10)", | ||||
|         false | ||||
|       ] | ||||
|     ] | ||||
| @ -299205,7 +299205,7 @@ | ||||
|     "deprecated": false, | ||||
|     "examples": [ | ||||
|       [ | ||||
|         "exampleSketch = startSketchOn(XZ)\n  |> startProfile(at = [0, 0])\n  |> yLine(length = 15)\n  |> angledLine(angle = 30, length = 15)\n  |> line(end = [8, -10])\n  |> yLine(length = -5)\n  |> close()\n\nexample = extrude(exampleSketch, length = 10)", | ||||
|         "exampleSketch = startSketchOn(XZ)\n  |> startProfile(at = [0, 0])\n  |> yLine(length = 15)\n  |> angledLine(angle = 30deg, length = 15)\n  |> line(end = [8, -10])\n  |> yLine(length = -5)\n  |> close()\n\nexample = extrude(exampleSketch, length = 10)", | ||||
|         false | ||||
|       ] | ||||
|     ] | ||||
|  | ||||
| @ -49,9 +49,9 @@ You can provide more than one sketch to sweep, and they will all be swept along | ||||
| sweepPath = startSketchOn(XZ) | ||||
|   |> startProfile(at = [0.05, 0.05]) | ||||
|   |> line(end = [0, 7]) | ||||
|   |> tangentialArc(angle = 90, radius = 5) | ||||
|   |> tangentialArc(angle = 90deg, radius = 5) | ||||
|   |> line(end = [-3, 0]) | ||||
|   |> tangentialArc(angle = -90, radius = 5) | ||||
|   |> tangentialArc(angle = -90deg, radius = 5) | ||||
|   |> line(end = [0, 7]) | ||||
|  | ||||
| // Create a hole for the pipe. | ||||
| @ -71,7 +71,7 @@ sweepSketch = startSketchOn(XY) | ||||
|  | ||||
| // Create a helix around the Z axis. | ||||
| helixPath = helix( | ||||
|   angleStart = 0, | ||||
|   angleStart = 0deg, | ||||
|   ccw = true, | ||||
|   revolutions = 4, | ||||
|   length = 10, | ||||
| @ -93,8 +93,8 @@ springSketch = startSketchOn(YZ) | ||||
|  | ||||
| sketch001 = startSketchOn(XY) | ||||
| rectangleSketch = startProfile(sketch001, at = [-200, 23.86]) | ||||
|   |> angledLine(angle = 0, length = 73.47, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 50.61) | ||||
|   |> angledLine(angle = 0deg, length = 73.47, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001) - 90deg, length = 50.61) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001)) | ||||
|   |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) | ||||
|   |> close() | ||||
| @ -104,7 +104,7 @@ circleSketch = circle(sketch001, center = [200, -30.29], radius = 32.63) | ||||
| sketch002 = startSketchOn(YZ) | ||||
| sweepPath = startProfile(sketch002, at = [0, 0]) | ||||
|   |> yLine(length = 231.81) | ||||
|   |> tangentialArc(radius = 80, angle = -90) | ||||
|   |> tangentialArc(radius = 80, angle = -90deg) | ||||
|   |> xLine(length = 384.93) | ||||
|  | ||||
| sweep([rectangleSketch, circleSketch], path = sweepPath) | ||||
| @ -122,7 +122,7 @@ circleSketch = circle(sketch001, center = [200, -30.29], radius = 32.63) | ||||
| sketch002 = startSketchOn(YZ) | ||||
| sweepPath = startProfile(sketch002, at = [0, 0]) | ||||
|   |> yLine(length = 231.81) | ||||
|   |> tangentialArc(radius = 80, angle = -90) | ||||
|   |> tangentialArc(radius = 80, angle = -90deg) | ||||
|   |> xLine(length = 384.93) | ||||
|  | ||||
| sweep(circleSketch, path = sweepPath, sectional = true) | ||||
|  | ||||
| @ -41,7 +41,7 @@ When using radius and angle, draw a curved line segment along part of an imagina | ||||
| ```kcl | ||||
| exampleSketch = startSketchOn(XZ) | ||||
|   |> startProfile(at = [0, 0]) | ||||
|   |> angledLine(angle = 45, length = 10) | ||||
|   |> angledLine(angle = 45deg, length = 10) | ||||
|   |> tangentialArc(end = [0, -10]) | ||||
|   |> line(end = [-10, 0]) | ||||
|   |> close() | ||||
| @ -54,7 +54,7 @@ example = extrude(exampleSketch, length = 10) | ||||
| ```kcl | ||||
| exampleSketch = startSketchOn(XZ) | ||||
|   |> startProfile(at = [0, 0]) | ||||
|   |> angledLine(angle = 60, length = 10) | ||||
|   |> angledLine(angle = 60deg, length = 10) | ||||
|   |> tangentialArc(endAbsolute = [15, 15]) | ||||
|   |> line(end = [10, -15]) | ||||
|   |> close() | ||||
| @ -67,9 +67,9 @@ example = extrude(exampleSketch, length = 10) | ||||
| ```kcl | ||||
| exampleSketch = startSketchOn(XZ) | ||||
|   |> startProfile(at = [0, 0]) | ||||
|   |> angledLine(angle = 60, length = 10) | ||||
|   |> tangentialArc(radius = 10, angle = -120) | ||||
|   |> angledLine(angle = -60, length = 10) | ||||
|   |> angledLine(angle = 60deg, length = 10) | ||||
|   |> tangentialArc(radius = 10, angle = -120deg) | ||||
|   |> angledLine(angle = -60deg, length = 10) | ||||
|   |> close() | ||||
|  | ||||
| example = extrude(exampleSketch, length = 10) | ||||
|  | ||||
| @ -45,9 +45,9 @@ Translate is really useful for sketches if you want to move a sketch and then ro | ||||
| sweepPath = startSketchOn(XZ) | ||||
|   |> startProfile(at = [0.05, 0.05]) | ||||
|   |> line(end = [0, 7]) | ||||
|   |> tangentialArc(angle = 90, radius = 5) | ||||
|   |> tangentialArc(angle = 90deg, radius = 5) | ||||
|   |> line(end = [-3, 0]) | ||||
|   |> tangentialArc(angle = -90, radius = 5) | ||||
|   |> tangentialArc(angle = -90deg, radius = 5) | ||||
|   |> line(end = [0, 7]) | ||||
|  | ||||
| // Create a hole for the pipe. | ||||
| @ -86,8 +86,8 @@ cube | ||||
|  | ||||
| sketch001 = startSketchOn(XY) | ||||
| rectangleSketch = startProfile(sketch001, at = [-200, 23.86]) | ||||
|   |> angledLine(angle = 0, length = 73.47, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 50.61) | ||||
|   |> angledLine(angle = 0deg, length = 73.47, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001) - 90deg, length = 50.61) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001)) | ||||
|   |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) | ||||
|   |> close() | ||||
| @ -97,7 +97,7 @@ circleSketch = circle(sketch001, center = [200, -30.29], radius = 32.63) | ||||
| sketch002 = startSketchOn(YZ) | ||||
| sweepPath = startProfile(sketch002, at = [0, 0]) | ||||
|   |> yLine(length = 231.81) | ||||
|   |> tangentialArc(radius = 80, angle = -90) | ||||
|   |> tangentialArc(radius = 80, angle = -90deg) | ||||
|   |> xLine(length = 384.93) | ||||
|  | ||||
| parts = sweep([rectangleSketch, circleSketch], path = sweepPath) | ||||
| @ -156,7 +156,7 @@ profile001 = square() | ||||
|  | ||||
| profile002 = square() | ||||
|   |> translate(z = 20) | ||||
|   |> rotate(axis = [0, 0, 1.0], angle = 45) | ||||
|   |> rotate(axis = [0, 0, 1.0], angle = 45deg) | ||||
|  | ||||
| loft([profile001, profile002]) | ||||
| ``` | ||||
|  | ||||
| @ -15,9 +15,9 @@ way: | ||||
| ```js | ||||
| startSketchOn(XZ) | ||||
|   |> startProfile(at = origin) | ||||
|   |> angledLine(angle = 0, length = 191.26, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = 0deg, length = 191.26, tag = $rectangleSegmentA001) | ||||
|   |> angledLine( | ||||
|        angle = segAng(rectangleSegmentA001) - 90, | ||||
|        angle = segAng(rectangleSegmentA001) - 90deg, | ||||
|        length = 196.99, | ||||
|        tag = $rectangleSegmentB001, | ||||
|      ) | ||||
| @ -49,9 +49,9 @@ However if the code was written like this: | ||||
| fn rect(origin) { | ||||
|   return startSketchOn(XZ) | ||||
|     |> startProfile(at = origin) | ||||
|     |> angledLine(angle = 0, length = 191.26, tag = $rectangleSegmentA001) | ||||
|     |> angledLine(angle = 0deg, length = 191.26, tag = $rectangleSegmentA001) | ||||
|     |> angledLine( | ||||
|          angle = segAng(rectangleSegmentA001) - 90, | ||||
|          angle = segAng(rectangleSegmentA001) - 90deg, | ||||
|          length = 196.99, | ||||
|          tag = $rectangleSegmentB001) | ||||
|     |> angledLine( | ||||
| @ -78,9 +78,9 @@ For example the following code works. | ||||
| fn rect(origin) { | ||||
|   return startSketchOn(XZ) | ||||
|     |> startProfile(at = origin) | ||||
|     |> angledLine(angle = 0, length = 191.26, tag = $rectangleSegmentA001) | ||||
|     |> angledLine(angle = 0deg, length = 191.26, tag = $rectangleSegmentA001) | ||||
|     |> angledLine( | ||||
|          angle = segAng(rectangleSegmentA001) - 90, | ||||
|          angle = segAng(rectangleSegmentA001) - 90deg, | ||||
|          length = 196.99 | ||||
|          tag = $rectangleSegmentB001, | ||||
|        ) | ||||
|  | ||||
| @ -38,10 +38,10 @@ xLine( | ||||
| exampleSketch = startSketchOn(XZ) | ||||
|   |> startProfile(at = [0, 0]) | ||||
|   |> xLine(length = 15) | ||||
|   |> angledLine(angle = 80, length = 15) | ||||
|   |> angledLine(angle = 80deg, length = 15) | ||||
|   |> line(end = [8, -10]) | ||||
|   |> xLine(length = 10) | ||||
|   |> angledLine(angle = 120, length = 30) | ||||
|   |> angledLine(angle = 120deg, length = 30) | ||||
|   |> xLine(length = -15) | ||||
|   |> close() | ||||
|  | ||||
|  | ||||
| @ -38,7 +38,7 @@ yLine( | ||||
| exampleSketch = startSketchOn(XZ) | ||||
|   |> startProfile(at = [0, 0]) | ||||
|   |> yLine(length = 15) | ||||
|   |> angledLine(angle = 30, length = 15) | ||||
|   |> angledLine(angle = 30deg, length = 15) | ||||
|   |> line(end = [8, -10]) | ||||
|   |> yLine(length = -5) | ||||
|   |> close() | ||||
|  | ||||
| @ -912,7 +912,7 @@ a1 = startSketchOn(offsetPlane(XY, offset = 10)) | ||||
|     |> close() | ||||
|     |> revolve( | ||||
|     axis = revolveAxis, | ||||
|     angle = 90 | ||||
|     angle = 90deg | ||||
|     ) | ||||
|     ` | ||||
|       ) | ||||
|  | ||||
| @ -38,7 +38,7 @@ extrude001 = extrude(sketch002, length = 10) | ||||
|  | ||||
| const FEATURE_TREE_SKETCH_CODE = `sketch001 = startSketchOn(XZ) | ||||
|   |> startProfile(at = [0, 0]) | ||||
|   |> angledLine(angle = 0, length = 4, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = 0deg, length = 4, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 2, tag = $rectangleSegmentB001) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $rectangleSegmentC001) | ||||
|   |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) | ||||
|  | ||||
| @ -16,7 +16,7 @@ test.describe('Import UI tests', () => { | ||||
|           path.join(projectDir, 'toBeImported.kcl'), | ||||
|           `sketch001 = startSketchOn(XZ) | ||||
| profile001 = startProfile(sketch001, at = [281.54, 305.81]) | ||||
|   |> angledLine(angle = 0, length = 123.43, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = 0deg, length = 123.43, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 85.99) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001)) | ||||
|   |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) | ||||
| @ -33,7 +33,7 @@ importedCube | ||||
|  | ||||
| sketch001 = startSketchOn(XZ) | ||||
| profile001 = startProfile(sketch001, at = [-134.53, -56.17]) | ||||
|   |> angledLine(angle = 0, length = 79.05, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = 0deg, length = 79.05, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 76.28) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $seg01) | ||||
|   |> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $seg02) | ||||
|  | ||||
| @ -365,7 +365,7 @@ test.describe('Point-and-click tests', () => { | ||||
|         clickCoords: { x: 677, y: 87 }, | ||||
|         cameraPos: { x: -6200, y: 1500, z: 6200 }, | ||||
|         cameraTarget: { x: 8300, y: 1100, z: 4800 }, | ||||
|         beforeChamferSnippet: `angledLine(angle = 0, length = 268.43, tag = $rectangleSegmentA001)chamfer( | ||||
|         beforeChamferSnippet: `angledLine(angle = 0deg, length = 268.43, tag = $rectangleSegmentA001)chamfer( | ||||
|          length = 30, | ||||
|          tags = [ | ||||
|            getNextAdjacentEdge(yo), | ||||
| @ -407,7 +407,7 @@ test.describe('Point-and-click tests', () => { | ||||
|  | ||||
| sketch001 = startSketchOn(XZ) | ||||
|   |> startProfile(at = [75.8, 317.2]) // [$startCapTag, $EndCapTag] | ||||
|   |> angledLine(angle = 0, length = 268.43, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = 0deg, length = 268.43, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 217.26, tag = $seg01) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $yo) | ||||
|   |> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $seg02) | ||||
| @ -419,28 +419,28 @@ extrude001 = extrude(sketch001, length = 100) | ||||
|   |> chamfer(length = 30, tags = [getNextAdjacentEdge(yo)], tag = $seg06) | ||||
| sketch002 = startSketchOn(extrude001, face = seg03) | ||||
| profile001 = startProfile(sketch002, at = [205.96, 254.59]) | ||||
|   |> angledLine(angle = 0, length = 11.39, tag = $rectangleSegmentA002) | ||||
|   |> angledLine(angle = 0deg, length = 11.39, tag = $rectangleSegmentA002) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA002) - 90, length = 105.26) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA002), length = -segLen(rectangleSegmentA002)) | ||||
|   |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) | ||||
|   |> close() | ||||
| sketch003 = startSketchOn(extrude001, face = seg04) | ||||
| profile002 = startProfile(sketch003, at = [-209.64, 255.28]) | ||||
|   |> angledLine(angle = 0, length = 11.56, tag = $rectangleSegmentA003) | ||||
|   |> angledLine(angle = 0deg, length = 11.56, tag = $rectangleSegmentA003) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA003) - 90, length = 106.84) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA003), length = -segLen(rectangleSegmentA003)) | ||||
|   |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) | ||||
|   |> close() | ||||
| sketch004 = startSketchOn(extrude001, face = seg05) | ||||
| profile003 = startProfile(sketch004, at = [82.57, 322.96]) | ||||
|   |> angledLine(angle = 0, length = 11.16, tag = $rectangleSegmentA004) | ||||
|   |> angledLine(angle = 0deg, length = 11.16, tag = $rectangleSegmentA004) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA004) - 90, length = 103.07) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA004), length = -segLen(rectangleSegmentA004)) | ||||
|   |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) | ||||
|   |> close() | ||||
| sketch005 = startSketchOn(extrude001, face = seg06) | ||||
| profile004 = startProfile(sketch005, at = [-23.43, 19.69]) | ||||
|   |> angledLine(angle = 0, length = 9.1, tag = $rectangleSegmentA005) | ||||
|   |> angledLine(angle = 0deg, length = 9.1, tag = $rectangleSegmentA005) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA005) - 90, length = 84.07) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA005), length = -segLen(rectangleSegmentA005)) | ||||
|   |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) | ||||
| @ -504,7 +504,7 @@ profile004 = startProfile(sketch005, at = [-23.43, 19.69]) | ||||
|         `@settings(defaultLengthUnit = in) | ||||
| sketch001 = startSketchOn(XZ) | ||||
|   |> startProfile(at = [75.8, 317.2]) | ||||
|   |> angledLine(angle = 0, length = 268.43, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = 0deg, length = 268.43, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 217.26, tag = $seg01) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $yo) | ||||
|   |> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $seg02) | ||||
| @ -526,7 +526,7 @@ chamf = chamfer( | ||||
|      ) | ||||
| sketch002 = startSketchOn(extrude001, face = seg03) | ||||
| profile001 = startProfile(sketch002, at = [205.96, 254.59]) | ||||
|   |> angledLine(angle = 0, length = 11.39, tag = $rectangleSegmentA002) | ||||
|   |> angledLine(angle = 0deg, length = 11.39, tag = $rectangleSegmentA002) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA002) - 90, length = 105.26) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA002), length = -segLen(rectangleSegmentA002)) | ||||
|   |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) | ||||
| @ -1776,7 +1776,7 @@ sketch002 = startSketchOn(XZ) | ||||
|       initialCode: `@settings(defaultLengthUnit = in) | ||||
| sketch001 = startSketchOn(YZ) | ||||
| profile001 = startProfile(sketch001, at = [-400, -400]) | ||||
|   |> angledLine(angle = 0, length = 800, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = 0deg, length = 800, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001) + 90, length = 800) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001)) | ||||
|   |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) | ||||
| @ -3656,7 +3656,7 @@ profile001 = startProfile(sketch001, at = [-20, 20]) | ||||
|       const initialCode = ` | ||||
| sketch001 = startSketchOn(XZ) | ||||
| |> startProfile(at = [-100.0, 100.0]) | ||||
| |> angledLine(angle = 0, length = 200.0, tag = $rectangleSegmentA001) | ||||
| |> angledLine(angle = 0deg, length = 200.0, tag = $rectangleSegmentA001) | ||||
| |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 200, tag = $rectangleSegmentB001) | ||||
| |> angledLine( | ||||
| angle=segAng(rectangleSegmentA001), | ||||
| @ -3668,7 +3668,7 @@ tag=$rectangleSegmentC001, | ||||
| extrude001 = extrude(sketch001, length = 200) | ||||
| sketch002 = startSketchOn(extrude001, face = rectangleSegmentA001) | ||||
| |> startProfile(at = [-66.77, 84.81]) | ||||
| |> angledLine(angle = 180, length = 27.08, tag = $rectangleSegmentA002) | ||||
| |> angledLine(angle = 180deg, length = 27.08, tag = $rectangleSegmentA002) | ||||
| |> angledLine( | ||||
| angle=segAng(rectangleSegmentA002) - 90, | ||||
| length=27.8, | ||||
| @ -3702,7 +3702,7 @@ tag=$rectangleSegmentC002, | ||||
|       await cmdBar.progressCmdBar() | ||||
|       await cmdBar.progressCmdBar() | ||||
|  | ||||
|       const newCodeToFind = `revolve001 = revolve(sketch002, angle = 360, axis = X)` | ||||
|       const newCodeToFind = `revolve001 = revolve(sketch002, angle = 360deg, axis = X)` | ||||
|       expect(editor.expectEditor.toContain(newCodeToFind)).toBeTruthy() | ||||
|  | ||||
|       // Edit flow | ||||
| @ -3735,7 +3735,7 @@ tag=$rectangleSegmentC002, | ||||
|       await cmdBar.progressCmdBar() | ||||
|       await toolbar.closePane('feature-tree') | ||||
|       await editor.expectEditor.toContain( | ||||
|         newCodeToFind.replace('angle = 360', 'angle = ' + newAngle) | ||||
|         newCodeToFind.replace('angle = 360deg', 'angle = ' + newAngle) | ||||
|       ) | ||||
|     }) | ||||
|     test('revolve surface around edge from an extruded solid2d', async ({ | ||||
| @ -3749,7 +3749,7 @@ tag=$rectangleSegmentC002, | ||||
|     }) => { | ||||
|       const initialCode = `sketch001 = startSketchOn(XZ) | ||||
|   |> startProfile(at = [-102.57, 101.72]) | ||||
|   |> angledLine(angle = 0, length = 202.6, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = 0deg, length = 202.6, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 202.6, tag = $rectangleSegmentB001) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $rectangleSegmentC001) | ||||
|   |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) | ||||
| @ -3775,13 +3775,13 @@ sketch002 = startSketchOn(extrude001, face = rectangleSegmentA001) | ||||
|       await toolbar.revolveButton.click() | ||||
|       await cmdBar.progressCmdBar() | ||||
|       await page.getByText('Edge', { exact: true }).click() | ||||
|       const lineCodeToSelection = `angledLine(angle = 0, length = 202.6, tag = $rectangleSegmentA001)` | ||||
|       const lineCodeToSelection = `angledLine(angle = 0deg, length = 202.6, tag = $rectangleSegmentA001)` | ||||
|       await page.getByText(lineCodeToSelection).click() | ||||
|       await cmdBar.progressCmdBar() | ||||
|       await cmdBar.progressCmdBar() | ||||
|       await cmdBar.progressCmdBar() | ||||
|  | ||||
|       const newCodeToFind = `revolve001 = revolve(sketch002, angle = 360, axis = rectangleSegmentA001)` | ||||
|       const newCodeToFind = `revolve001 = revolve(sketch002, angle = 360deg, axis = rectangleSegmentA001)` | ||||
|       await editor.expectEditor.toContain(newCodeToFind) | ||||
|  | ||||
|       // Edit flow | ||||
| @ -3819,7 +3819,7 @@ sketch002 = startSketchOn(extrude001, face = rectangleSegmentA001) | ||||
|       await toolbar.closePane('feature-tree') | ||||
|       await editor.expectEditor.toContain('angle001 = ' + newAngle) | ||||
|       await editor.expectEditor.toContain( | ||||
|         newCodeToFind.replace('angle = 360', 'angle = angle001') | ||||
|         newCodeToFind.replace('angle = 360deg', 'angle = angle001') | ||||
|       ) | ||||
|       expect(editor.expectEditor.toContain(newCodeToFind)).toBeTruthy() | ||||
|     }) | ||||
| @ -3838,7 +3838,7 @@ sketch002 = startSketchOn(extrude001, face = rectangleSegmentA001) | ||||
|       |> xLine(length = 2.6) | ||||
|     sketch001 = startSketchOn(-XY) | ||||
|       |> startProfile(at = [-0.48, 1.25]) | ||||
|       |> angledLine(angle = 0, length = 2.38, tag = $rectangleSegmentA001) | ||||
|       |> angledLine(angle = 0deg, length = 2.38, tag = $rectangleSegmentA001) | ||||
|       |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 2.4, tag = $rectangleSegmentB001) | ||||
|       |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $rectangleSegmentC001) | ||||
|       |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) | ||||
| @ -3876,7 +3876,7 @@ sketch002 = startSketchOn(extrude001, face = rectangleSegmentA001) | ||||
|       await cmdBar.progressCmdBar() | ||||
|       await cmdBar.progressCmdBar() | ||||
|  | ||||
|       const newCodeToFind = `revolve001 = revolve(sketch003, angle = 360, axis = seg01)` | ||||
|       const newCodeToFind = `revolve001 = revolve(sketch003, angle = 360deg, axis = seg01)` | ||||
|       expect(editor.expectEditor.toContain(newCodeToFind)).toBeTruthy() | ||||
|  | ||||
|       // Edit flow | ||||
| @ -3909,7 +3909,7 @@ sketch002 = startSketchOn(extrude001, face = rectangleSegmentA001) | ||||
|       await cmdBar.progressCmdBar() | ||||
|       await toolbar.closePane('feature-tree') | ||||
|       await editor.expectEditor.toContain( | ||||
|         newCodeToFind.replace('angle = 360', 'angle = ' + newAngle) | ||||
|         newCodeToFind.replace('angle = 360deg', 'angle = ' + newAngle) | ||||
|       ) | ||||
|     }) | ||||
|   }) | ||||
| @ -4893,7 +4893,7 @@ path001 = startProfile(sketch001, at = [0, 0]) | ||||
|       await page.getByTestId('context-menu-delete').click() | ||||
|       await scene.settled(cmdBar) | ||||
|       await editor.expectEditor.not.toContain( | ||||
|         `revolve001 = revolve([profile001, profile002], axis = XY, angle = 180)`, | ||||
|         `revolve001 = revolve([profile001, profile002], axis = XY, angle = 180deg)`, | ||||
|         { shouldNormalise: true } | ||||
|       ) | ||||
|     }) | ||||
|  | ||||
| @ -47,7 +47,7 @@ b | ||||
|  | ||||
| const importedFile = `sketch003 = startSketchOn(XY) | ||||
|   |> startProfile(at = [52.92, 157.81]) | ||||
|   |> angledLine(angle = 0, length = 176.4, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = 0deg, length = 176.4, tag = $rectangleSegmentA001) | ||||
|   |> angledLine( | ||||
|        angle = segAng(rectangleSegmentA001) - 90, | ||||
|        length = 53.4, | ||||
|  | ||||
| @ -23,7 +23,7 @@ sketch002 = startSketchOn(XZ) | ||||
| extrude002 = extrude(sketch002, length = 50) | ||||
| sketch003 = startSketchOn(XY) | ||||
|   |> startProfile(at = [52.92, 157.81]) | ||||
|   |> angledLine(angle = 0, length = 176.4, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = 0deg, length = 176.4, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 53.4, tag = $rectangleSegmentB001) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $rectangleSegmentC001) | ||||
|   |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) | ||||
|  | ||||
| @ -72,7 +72,7 @@ Internal engine error on request` | ||||
|         'persistCode', | ||||
|         `sketch001 = startSketchOn(XY) | ||||
|   |> startProfile(at = [82.33, 238.21]) | ||||
|   |> angledLine(angle = 0, length = 288.63, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = 0deg, length = 288.63, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 197.97, tag = $rectangleSegmentB001) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $rectangleSegmentC001) | ||||
|   |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) | ||||
| @ -245,7 +245,7 @@ extrude001 = extrude(sketch001, length = 50) | ||||
|         'persistCode', | ||||
|         `exampleSketch = startSketchOn(XZ) | ||||
|       |> startProfile(at = [0, 0]) | ||||
|       |> angledLine(angle = 50, length = 45 ) | ||||
|       |> angledLine(angle = 50deg, length = 45 ) | ||||
|       |> yLine(endAbsolute = 0) | ||||
|       |> close() | ||||
|       |> | ||||
| @ -301,7 +301,7 @@ extrude001 = extrude(sketch001, length = 50) | ||||
|       page.locator('.cm-content') | ||||
|     ).toContainText(`exampleSketch = startSketchOn(XZ) | ||||
|       |> startProfile(at = [0, 0]) | ||||
|       |> angledLine(angle = 50, length = 45 ) | ||||
|       |> angledLine(angle = 50deg, length = 45 ) | ||||
|       |> yLine(endAbsolute = 0) | ||||
|       |> close() | ||||
|  | ||||
| @ -321,7 +321,7 @@ extrude001 = extrude(sketch001, length = 50) | ||||
|             `@settings(defaultLengthUnit = mm) | ||||
| sketch002 = startSketchOn(XY) | ||||
| profile002 = startProfile(sketch002, at = [72.24, -52.05]) | ||||
|   |> angledLine(angle = 0, length = 181.26, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = 0deg, length = 181.26, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 21.54) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001)) | ||||
|   |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) | ||||
|  | ||||
| @ -1222,7 +1222,7 @@ profile001 = startProfile(sketch001, at = [299.72, 230.82]) | ||||
|       fn lug(origin, length, diameter, plane) { | ||||
|         lugSketch = startSketchOn(plane) | ||||
|           |> startProfile(at = [origin[0] + lugDiameter / 2, origin[1]]) | ||||
|           |> angledLine(angle = 60, lengthY = lugHeadLength) | ||||
|           |> angledLine(angle = 60deg, lengthY = lugHeadLength) | ||||
|           |> xLine(endAbsolute = 0 + .001) | ||||
|           |> yLine(endAbsolute = 0) | ||||
|           |> close() | ||||
| @ -1287,7 +1287,7 @@ extrude001 = extrude(profile001, length = 200) | ||||
|   |> translate(x = 3.14, y = 3.14, z = -50.154) | ||||
| sketch002 = startSketchOn(XY) | ||||
| profile002 = startProfile(sketch002, at = [72.2, -52.05]) | ||||
|   |> angledLine(angle = 0, length = 181.26, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = 0deg, length = 181.26, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 21.54) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $mySeg) | ||||
|   |> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $seg01) | ||||
| @ -2058,7 +2058,7 @@ profile003 = startProfile(sketch001, at = [206.63, -56.73]) | ||||
|       ) | ||||
|       await crnRect1point2() | ||||
|       await editor.expectEditor.toContain( | ||||
|         `|> angledLine(angle = 0, length = 2.37, tag = $rectangleSegmentA001) | ||||
|         `|> angledLine(angle = 0deg, length = 2.37, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 7.8) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001)) | ||||
|   |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) | ||||
| @ -2073,7 +2073,7 @@ profile003 = startProfile(sketch001, at = [206.63, -56.73]) | ||||
|       await crnRect2point2() | ||||
|       await page.waitForTimeout(300) | ||||
|       await editor.expectEditor.toContain( | ||||
|         `|> angledLine(angle = 0, length = 5.49, tag = $rectangleSegmentA002) | ||||
|         `|> angledLine(angle = 0deg, length = 5.49, tag = $rectangleSegmentA002) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA002) - 90, length = 4.14) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA002), length = -segLen(rectangleSegmentA002)) | ||||
|   |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) | ||||
| @ -2092,7 +2092,7 @@ profile003 = startProfile(sketch001, at = [206.63, -56.73]) | ||||
|       await cntrRect1point2() | ||||
|       await page.waitForTimeout(300) | ||||
|       await editor.expectEditor.toContain( | ||||
|         `|> angledLine(angle = 0, length = 7.06, tag = $rectangleSegmentA003) | ||||
|         `|> angledLine(angle = 0deg, length = 7.06, tag = $rectangleSegmentA003) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA003) + 90, length = 4.34) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA003), length = -segLen(rectangleSegmentA003)) | ||||
|   |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) | ||||
| @ -2108,7 +2108,7 @@ profile003 = startProfile(sketch001, at = [206.63, -56.73]) | ||||
|       await cntrRect2point2() | ||||
|       await page.waitForTimeout(300) | ||||
|       await editor.expectEditor.toContain( | ||||
|         `|> angledLine(angle = 0, length = 3.12, tag = $rectangleSegmentA004) | ||||
|         `|> angledLine(angle = 0deg, length = 3.12, tag = $rectangleSegmentA004) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA004) + 90, length = 6.24) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA004), length = -segLen(rectangleSegmentA004)) | ||||
|   |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) | ||||
| @ -2258,7 +2258,7 @@ profile001 = startProfile(sketch001, at = [6.24, 4.54]) | ||||
|   |> line(end = [8.61, 0.74]) | ||||
|   |> line(end = [10.99, -5.22]) | ||||
| profile002 = startProfile(sketch001, at = [11.19, 5.02]) | ||||
|   |> angledLine(angle = 0, length = 10.78, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = 0deg, length = 10.78, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 4.14) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001)) | ||||
|   |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) | ||||
| @ -2370,7 +2370,7 @@ profile004 = circleThreePoint(sketch001, p1 = [13.44, -6.8], p2 = [13.39, -2.07] | ||||
|       await page.waitForTimeout(100) | ||||
|       await rectEnd() | ||||
|       await editor.expectEditor.toContain( | ||||
|         `|> angledLine(angle = 180, length = 1.97, tag = $rectangleSegmentA002) | ||||
|         `|> angledLine(angle = 180deg, length = 1.97, tag = $rectangleSegmentA002) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA002) + 90, length = 3.89) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA002), length = -segLen(rectangleSegmentA002)) | ||||
|   |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) | ||||
| @ -2396,7 +2396,7 @@ profile001 = startProfile(sketch001, at = [6.24, 4.54]) | ||||
|   |> line(end = [8.61, 0.74]) | ||||
|   |> line(end = [10.99, -5.22]) | ||||
| profile002 = startProfile(sketch001, at = [11.19, 5.02]) | ||||
|   |> angledLine(angle = 0, length = 10.78, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = 0deg, length = 10.78, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 4.14) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001)) | ||||
|   |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) | ||||
| @ -2501,7 +2501,7 @@ profile001 = startProfile(sketch001, at = [-63.43, 193.08]) | ||||
|   |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) | ||||
|   |> close() | ||||
| profile003 = startProfile(sketch001, at = [16.79, 38.24]) | ||||
|   |> angledLine(angle = 0, length = 182.82, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = 0deg, length = 182.82, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 105.71) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001)) | ||||
|   |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) | ||||
| @ -2726,7 +2726,7 @@ profile002 = startProfile(sketch002, at = [0.75, 13.46]) | ||||
|   |> line(end = [4.52, 3.79]) | ||||
|   |> line(end = [5.98, -2.81]) | ||||
| profile003 = startProfile(sketch002, at = [3.19, 13.3]) | ||||
|   |> angledLine(angle = 0, length = 6.64, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = 0deg, length = 6.64, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 2.81) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001)) | ||||
|   |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) | ||||
| @ -2744,7 +2744,7 @@ profile006 = startProfile(sketch002, at = [9.65, 3.82]) | ||||
|   |> close() | ||||
| revolve001 = revolve( | ||||
|   profile004, | ||||
|   angle = 45, | ||||
|   angle = 45deg, | ||||
|   axis = getNextAdjacentEdge(seg01) | ||||
| ) | ||||
| extrude002 = extrude(profile006, length = 4) | ||||
| @ -2768,14 +2768,14 @@ profile010 = circle( | ||||
|   radius = 2.67 | ||||
| ) | ||||
| profile011 = startProfile(sketch003, at = [5.07, -6.39]) | ||||
|   |> angledLine(angle = 0, length = 4.54, tag = $rectangleSegmentA002) | ||||
|   |> angledLine(angle = 0deg, length = 4.54, tag = $rectangleSegmentA002) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA002) - 90, length = 4.17) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA002), length = -segLen(rectangleSegmentA002)) | ||||
|   |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) | ||||
|   |> close() | ||||
| extrude003 = extrude(profile011, length = 2.5) | ||||
| // TODO this breaks the test, | ||||
| // revolve002 = revolve(profile008, angle = 45, axis = seg02) | ||||
| // revolve002 = revolve(profile008, angle = 45deg, axis = seg02) | ||||
| ` | ||||
|       ) | ||||
|     }) | ||||
| @ -2921,7 +2921,7 @@ loft([profile001, profile002]) | ||||
|     ) | ||||
|     await rect1Crn2() | ||||
|     await editor.expectEditor.toContain( | ||||
|       `angledLine(angle = 0, length = 113.01, tag = $rectangleSegmentA001)` | ||||
|       `angledLine(angle = 0deg, length = 113.01, tag = $rectangleSegmentA001)` | ||||
|     ) | ||||
|   }) | ||||
|   test('Can enter sketch loft edges offsetPlane and continue sketch', async ({ | ||||
| @ -2990,7 +2990,7 @@ loft([profile001, profile002]) | ||||
|     ) | ||||
|     await rect1Crn2() | ||||
|     await editor.expectEditor.toContain( | ||||
|       `angledLine(angle = 0, length = 106.42], tag = $rectangleSegmentA001)` | ||||
|       `angledLine(angle = 0deg, length = 106.42], tag = $rectangleSegmentA001)` | ||||
|     ) | ||||
|     await page.waitForTimeout(100) | ||||
|   }) | ||||
| @ -3212,7 +3212,7 @@ test.describe('manual edits during sketch mode', () => { | ||||
|     extrude001 = extrude(profile001, length = 500) | ||||
|     sketch002 = startSketchOn(extrude001, face = seg01) | ||||
|     profile002 = startProfile(sketch002, at = [83.39, 329.15]) | ||||
|       |> angledLine(angle = 0, length = 119.61, tag = $rectangleSegmentA001) | ||||
|       |> angledLine(angle = 0deg, length = 119.61, tag = $rectangleSegmentA001) | ||||
|       |> angledLine(length = 156.54, angle = -28) | ||||
|       |> angledLine( | ||||
|           angle = -151, | ||||
| @ -3348,7 +3348,7 @@ profile001 = startProfile(sketch001, at = [106.68, 89.77]) | ||||
| extrude001 = extrude(profile001, length = 500) | ||||
| sketch002 = startSketchOn(extrude001, face = seg01) | ||||
| profile002 = startProfile(sketch002, at = [83.39, 329.15]) | ||||
|   |> angledLine(angle = 0, length = 119.61, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = 0deg, length = 119.61, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(length = 219.2, angle = -56) | ||||
|   |> angledLine(angle = -151, length = 116.27) | ||||
|   |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) | ||||
| @ -3387,7 +3387,7 @@ profile003 = startProfile(sketch002, at = [-201.08, 254.17]) | ||||
|     extrude001 = extrude(profile001, length = 500) | ||||
|     sketch002 = startSketchOn(extrude001, face = seg01) | ||||
|     profile002 = startProfile(sketch002, at = [83.39, 329.15]) | ||||
|       |> angledLine(angle = 0, length = 119.61, tag = $rectangleSegmentA001) | ||||
|       |> angledLine(angle = 0deg, length = 119.61, tag = $rectangleSegmentA001) | ||||
|       |> angledLine(length = 156.54, angle = -28) | ||||
|       |> angledLine( | ||||
|            angle = -151, | ||||
|  | ||||
| @ -845,7 +845,7 @@ test.describe('code color goober', { tag: '@snapshot' }, () => { | ||||
| sweepPath = startSketchOn(XZ) | ||||
|   |> startProfile(at = [0.05, 0.05]) | ||||
|   |> line(end = [0, 7]) | ||||
|   |> tangentialArc(angle = 90, radius = 5) | ||||
|   |> tangentialArc(angle = 90deg, radius = 5) | ||||
|   |> line(end = [-3, 0]) | ||||
|   |> tangentialArc(angle = -90, radius = 5) | ||||
|   |> line(end = [0, 7]) | ||||
| @ -889,7 +889,7 @@ sweepSketch = startSketchOn(XY) | ||||
| sweepPath = startSketchOn(XZ) | ||||
|   |> startProfile(at = [0.05, 0.05]) | ||||
|   |> line(end = [0, 7]) | ||||
|   |> tangentialArc(angle = 90, radius = 5) | ||||
|   |> tangentialArc(angle = 90deg, radius = 5) | ||||
|   |> line(end = [-3, 0]) | ||||
|   |> tangentialArc(angle = -90, radius = 5) | ||||
|   |> line(end = [0, 7]) | ||||
| @ -934,7 +934,7 @@ sweepSketch = startSketchOn(XY) | ||||
| sweepPath = startSketchOn(XZ) | ||||
|   |> startProfile(at = [0.05, 0.05]) | ||||
|   |> line(end = [0, 7]) | ||||
|   |> tangentialArc(angle = 90, radius = 5) | ||||
|   |> tangentialArc(angle = 90deg, radius = 5) | ||||
|   |> line(end = [-3, 0]) | ||||
|   |> tangentialArc(angle = -90, radius = 5) | ||||
|   |> line(end = [0, 7]) | ||||
|  | ||||
| @ -62,16 +62,16 @@ export const TEST_CODE_GIZMO = `@settings(defaultLengthUnit = in) | ||||
| part001 = startSketchOn(XZ) | ||||
| |> startProfile(at = [20, 0]) | ||||
| |> line(end = [7.13, 4 + 0]) | ||||
| |> angledLine(angle = 3 + 0, length = 3.14 + 0 ) | ||||
| |> angledLine(angle = 3deg + 0, length = 3.14 + 0 ) | ||||
| |> line(endAbsolute = [20.14 + 0, -0.14 + 0]) | ||||
| |> xLine(endAbsolute = 29 + 0) | ||||
| |> yLine(length = -3.14 + 0, tag = $a) | ||||
| |> xLine(length = 1.63) | ||||
| |> angledLine(angle = 3 + 0, lengthX = 3.14 ) | ||||
| |> angledLine(angle = 30, lengthY = 3 + 0 ) | ||||
| |> angledLine(angle = 22.14 + 0, endAbsoluteX = 12) | ||||
| |> angledLine(angle = 30, endAbsoluteY = 11.14) | ||||
| |> angledLineThatIntersects(angle = 3.14, intersectTag = a, offset = 0) | ||||
| |> angledLine(angle = 3deg + 0, lengthX = 3.14 ) | ||||
| |> angledLine(angle = 30deg, lengthY = 3 + 0 ) | ||||
| |> angledLine(angle = 22.14deg + 0, endAbsoluteX = 12) | ||||
| |> angledLine(angle = 30deg, endAbsoluteY = 11.14) | ||||
| |> angledLineThatIntersects(angle = 3.14deg, intersectTag = a, offset = 0) | ||||
| |> tangentialArc(endAbsolute = [13.14 + 0, 13.14]) | ||||
| |> close() | ||||
| |> extrude(length = 5 + 7) | ||||
| @ -122,7 +122,7 @@ sketch001 = startSketchOn(box, face = revolveAxis) | ||||
|   |> close() | ||||
|   |> revolve( | ||||
|   axis = revolveAxis, | ||||
|   angle = 90 | ||||
|   angle = 90deg | ||||
|   ) | ||||
|  | ||||
| sketch001 = startSketchOn(XZ) | ||||
|  | ||||
| @ -57,7 +57,7 @@ test.describe('Testing constraints', () => { | ||||
|       .click() | ||||
|  | ||||
|     await expect(page.locator('.cm-content')).toHaveText( | ||||
|       `length001 = 20sketch001 = startSketchOn(XY)  |> startProfile(at = [-10, -10])  |> line(end = [20, 0])  |> angledLine(angle = 90, length = length001)  |> xLine(length = -20)` | ||||
|       `length001 = 20sketch001 = startSketchOn(XY)  |> startProfile(at = [-10, -10])  |> line(end = [20, 0])  |> angledLine(angle = 90deg, length = length001)  |> xLine(length = -20)` | ||||
|     ) | ||||
|  | ||||
|     // Make sure we didn't pop out of sketch mode. | ||||
| @ -852,7 +852,7 @@ part002 = startSketchOn(XZ) | ||||
|   test.describe('Two segment - no modal constraints', () => { | ||||
|     const cases = [ | ||||
|       { | ||||
|         codeAfter: `|> angledLine(angle = 83, length = segLen(seg01))`, | ||||
|         codeAfter: `|> angledLine(angle = 83deg, length = segLen(seg01))`, | ||||
|         constraintName: 'Equal Length', | ||||
|       }, | ||||
|       { | ||||
| @ -1174,7 +1174,7 @@ test.describe('Electron constraint tests', () => { | ||||
|         await cmdBar.progressCmdBar() | ||||
|         await editor.expectEditor.toContain('length001 = 15.3') | ||||
|         await editor.expectEditor.toContain( | ||||
|           '|> angledLine(angle = 9, length = length001)' | ||||
|           '|> angledLine(angle = 9deg, length = length001)' | ||||
|         ) | ||||
|       }) | ||||
|  | ||||
|  | ||||
| @ -259,7 +259,7 @@ test.describe(`Testing gizmo, fixture-based`, () => { | ||||
|         `@settings(defaultLengthUnit = in) | ||||
|         sketch002 = startSketchOn(XZ) | ||||
|           |> startProfile(at = [-108.83, -57.48]) | ||||
|           |> angledLine(angle = 0, length = 105.13, tag = $rectangleSegmentA001) | ||||
|           |> angledLine(angle = 0deg, length = 105.13, tag = $rectangleSegmentA001) | ||||
|           |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 77.9) | ||||
|           |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001)) | ||||
|           |> close() | ||||
|  | ||||
| @ -207,17 +207,17 @@ test.describe('Testing segment overlays', () => { | ||||
|       part001 = startSketchOn(XZ) | ||||
|         |> startProfile(at = [5 + 0, 20 + 0]) | ||||
|         |> line(end = [0.5, -14 + 0]) | ||||
|         |> angledLine(angle = 3 + 0, length = 32 + 0) | ||||
|         |> angledLine(angle = 3deg + 0, length = 32 + 0) | ||||
|         |> line(endAbsolute = [5 + 33, 20 + 11.5 + 0]) | ||||
|         |> xLine(endAbsolute = 5 + 9 - 5) | ||||
|         |> yLine(endAbsolute = 20 + -10.77, tag = $a) | ||||
|         |> xLine(length = 26.04) | ||||
|         |> yLine(length = 21.14 + 0) | ||||
|         |> angledLine(angle = 181 + 0, lengthX = 23.14) | ||||
|         |> angledLine(angle = 181deg + 0, lengthX = 23.14) | ||||
|         |> angledLine(angle = -91, lengthY = 19 + 0) | ||||
|         |> angledLine(angle = 3 + 0, endAbsoluteX = 5 + 26) | ||||
|         |> angledLine(angle = 89, endAbsoluteY = 20 + 9.14 + 0) | ||||
|         |> angledLineThatIntersects(angle = 4.14, intersectTag = a, offset = 9) | ||||
|         |> angledLine(angle = 3deg + 0, endAbsoluteX = 5 + 26) | ||||
|         |> angledLine(angle = 89deg, endAbsoluteY = 20 + 9.14 + 0) | ||||
|         |> angledLineThatIntersects(angle = 4.14deg, intersectTag = a, offset = 9) | ||||
|         |> tangentialArc(endAbsolute = [5 + 3.14 + 13, 20 + 3.14]) | ||||
|       ` | ||||
|         ) | ||||
| @ -295,8 +295,9 @@ test.describe('Testing segment overlays', () => { | ||||
|       await clickConstrained({ | ||||
|         hoverPos: { x: angledLine.x, y: angledLine.y }, | ||||
|         constraintType: 'angle', | ||||
|         expectBeforeUnconstrained: 'angledLine(angle = 3 + 0, length = 32 + 0)', | ||||
|         expectAfterUnconstrained: 'angledLine(angle = 3, length = 32 + 0)', | ||||
|         expectBeforeUnconstrained: | ||||
|           'angledLine(angle = 3deg + 0, length = 32 + 0)', | ||||
|         expectAfterUnconstrained: 'angledLine(angle = 3deg, length = 32 + 0)', | ||||
|         expectFinal: 'angledLine(angle = angle001, length = 32 + 0)', | ||||
|         ang: ang + 180, | ||||
|         locator: '[data-overlay-toolbar-index="1"]', | ||||
| @ -383,7 +384,7 @@ test.describe('Testing segment overlays', () => { | ||||
|       |> yLine(endAbsolute = -10.77, tag = $a) | ||||
|       |> xLine(length = 26.04) | ||||
|       |> yLine(length = 21.14 + 0) | ||||
|       |> angledLine(angle = 181 + 0, lengthX = 23.14) | ||||
|       |> angledLine(angle = 181deg + 0, lengthX = 23.14) | ||||
|       ` | ||||
|         ) | ||||
|       }) | ||||
| @ -450,17 +451,17 @@ test.describe('Testing segment overlays', () => { | ||||
|       part001 = startSketchOn(XZ) | ||||
|         |> startProfile(at = [0, 0]) | ||||
|         |> line(end = [0.5, -14 + 0]) | ||||
|         |> angledLine(angle = 3 + 0, length = 32 + 0) | ||||
|         |> angledLine(angle = 3deg + 0, length = 32 + 0) | ||||
|         |> line(endAbsolute = [33, 11.5 + 0]) | ||||
|         |> xLine(endAbsolute = 9 - 5) | ||||
|         |> yLine(endAbsolute = -10.77, tag = $a) | ||||
|         |> xLine(length = 26.04) | ||||
|         |> yLine(length = 21.14 + 0) | ||||
|         |> angledLine(angle = 181 + 0, lengthX = 23.14) | ||||
|         |> angledLine(angle = 181deg + 0, lengthX = 23.14) | ||||
|         |> angledLine(angle = -91, lengthY = 19 + 0) | ||||
|         |> angledLine(angle = 3 + 0, endAbsoluteX = 26) | ||||
|         |> angledLine(angle = 89, endAbsoluteY = 9.14 + 0) | ||||
|         |> angledLineThatIntersects(angle = 4.14, intersectTag = a, offset = 9) | ||||
|         |> angledLine(angle = 3deg + 0, endAbsoluteX = 26) | ||||
|         |> angledLine(angle = 89deg, endAbsoluteY = 9.14 + 0) | ||||
|         |> angledLineThatIntersects(angle = 4.14deg, intersectTag = a, offset = 9) | ||||
|         |> tangentialArc(endAbsolute = [3.14 + 13, 3.14]) | ||||
|       ` | ||||
|         ) | ||||
| @ -511,7 +512,7 @@ test.describe('Testing segment overlays', () => { | ||||
|         hoverPos: { x: angledLineOfXLength.x, y: angledLineOfXLength.y }, | ||||
|         constraintType: 'angle', | ||||
|         expectBeforeUnconstrained: | ||||
|           'angledLine(angle = 181 + 0, lengthX = 23.14)', | ||||
|           'angledLine(angle = 181deg + 0, lengthX = 23.14)', | ||||
|         expectAfterUnconstrained: 'angledLine(angle = -179, lengthX = 23.14)', | ||||
|         expectFinal: 'angledLine(angle = angle001, lengthX = 23.14)', | ||||
|         ang: ang + 180, | ||||
| @ -571,17 +572,17 @@ test.describe('Testing segment overlays', () => { | ||||
|       part001 = startSketchOn(XZ) | ||||
|         |> startProfile(at = [0, 0]) | ||||
|         |> line(end = [0.5, -14 + 0]) | ||||
|         |> angledLine(angle = 3 + 0, length = 32 + 0) | ||||
|         |> angledLine(angle = 3deg + 0, length = 32 + 0) | ||||
|         |> line(endAbsolute = [33, 11.5 + 0]) | ||||
|         |> xLine(endAbsolute = 9 - 5) | ||||
|         |> yLine(endAbsolute = -10.77, tag = $a) | ||||
|         |> xLine(length = 26.04) | ||||
|         |> yLine(length = 21.14 + 0) | ||||
|         |> angledLine(angle = 181 + 0, lengthX = 23.14) | ||||
|         |> angledLine(angle = 181deg + 0, lengthX = 23.14) | ||||
|         |> angledLine(angle = -91, lengthY = 19 + 0) | ||||
|         |> angledLine(angle = 3 + 0, endAbsoluteX = 26) | ||||
|         |> angledLine(angle = 89, endAbsoluteY = 9.14 + 0) | ||||
|         |> angledLineThatIntersects(angle = 4.14, intersectTag = a, offset = 9) | ||||
|         |> angledLine(angle = 3deg + 0, endAbsoluteX = 26) | ||||
|         |> angledLine(angle = 89deg, endAbsoluteY = 9.14 + 0) | ||||
|         |> angledLineThatIntersects(angle = 4.14deg, intersectTag = a, offset = 9) | ||||
|         |> tangentialArc(endAbsolute = [3.14 + 13, 1.14]) | ||||
|       ` | ||||
|         ) | ||||
| @ -616,8 +617,8 @@ test.describe('Testing segment overlays', () => { | ||||
|         hoverPos: { x: angledLineToX.x, y: angledLineToX.y }, | ||||
|         constraintType: 'angle', | ||||
|         expectBeforeUnconstrained: | ||||
|           'angledLine(angle = 3 + 0, endAbsoluteX = 26)', | ||||
|         expectAfterUnconstrained: 'angledLine(angle = 3, endAbsoluteX = 26)', | ||||
|           'angledLine(angle = 3deg + 0, endAbsoluteX = 26)', | ||||
|         expectAfterUnconstrained: 'angledLine(angle = 3deg, endAbsoluteX = 26)', | ||||
|         expectFinal: 'angledLine(angle = angle001, endAbsoluteX = 26)', | ||||
|         ang: ang + 180, | ||||
|         locator: '[data-overlay-toolbar-index="9"]', | ||||
| @ -641,9 +642,9 @@ test.describe('Testing segment overlays', () => { | ||||
|       await clickUnconstrained({ | ||||
|         hoverPos: { x: angledLineToY.x, y: angledLineToY.y }, | ||||
|         constraintType: 'angle', | ||||
|         expectBeforeUnconstrained: 'angledLine(angle = 89, to = 9.14 + 0)', | ||||
|         expectBeforeUnconstrained: 'angledLine(angle = 89deg, to = 9.14 + 0)', | ||||
|         expectAfterUnconstrained: 'angledLine(angle = angle002, to = 9.14 + 0)', | ||||
|         expectFinal: 'angledLine(angle = 89, to = 9.14 + 0)', | ||||
|         expectFinal: 'angledLine(angle = 89deg, to = 9.14 + 0)', | ||||
|         steps: process.platform === 'darwin' ? 8 : 9, | ||||
|         ang: ang + 180, | ||||
|         locator: '[data-overlay-toolbar-index="10"]', | ||||
| @ -653,9 +654,10 @@ test.describe('Testing segment overlays', () => { | ||||
|         hoverPos: { x: angledLineToY.x, y: angledLineToY.y }, | ||||
|         constraintType: 'yAbsolute', | ||||
|         expectBeforeUnconstrained: | ||||
|           'angledLine(angle = 89, endAbsoluteY = 9.14 + 0)', | ||||
|         expectAfterUnconstrained: 'angledLine(angle = 89, endAbsoluteY = 9.14)', | ||||
|         expectFinal: 'angledLine(angle = 89, endAbsoluteY = yAbs001)', | ||||
|           'angledLine(angle = 89deg, endAbsoluteY = 9.14 + 0)', | ||||
|         expectAfterUnconstrained: | ||||
|           'angledLine(angle = 89deg, endAbsoluteY = 9.14)', | ||||
|         expectFinal: 'angledLine(angle = 89deg, endAbsoluteY = yAbs001)', | ||||
|         ang: ang + 180, | ||||
|         locator: '[data-overlay-toolbar-index="10"]', | ||||
|       }) | ||||
| @ -671,7 +673,7 @@ test.describe('Testing segment overlays', () => { | ||||
|           y: angledLineThatIntersects.y, | ||||
|         }, | ||||
|         constraintType: 'angle', | ||||
|         expectBeforeUnconstrained: `angledLineThatIntersects(angle = 4.14, intersectTag = a, offset = 9)`, | ||||
|         expectBeforeUnconstrained: `angledLineThatIntersects(angle = 4.14deg, intersectTag = a, offset = 9)`, | ||||
|         expectAfterUnconstrained: `angledLineThatIntersects(angle = angle003, intersectTag = a,offset = 9)`, | ||||
|         expectFinal: `angledLineThatIntersects(angle = -176, offset = 9, intersectTag = a)`, | ||||
|         ang: ang + 180, | ||||
| @ -705,17 +707,17 @@ test.describe('Testing segment overlays', () => { | ||||
|       part001 = startSketchOn(XZ) | ||||
|         |> startProfile(at = [0, 0]) | ||||
|         |> line(end = [0.5, -14 + 0]) | ||||
|         |> angledLine(angle = 3 + 0, length = 32 + 0) | ||||
|         |> angledLine(angle = 3deg + 0, length = 32 + 0) | ||||
|         |> line(endAbsolute = [33, 11.5 + 0]) | ||||
|         |> xLine(endAbsolute = 9 - 5) | ||||
|         |> yLine(endAbsolute = -10.77, tag = $a) | ||||
|         |> xLine(length = 26.04) | ||||
|         |> yLine(length = 21.14 + 0) | ||||
|         |> angledLine(angle = 181 + 0, lengthX = 23.14) | ||||
|         |> angledLine(angle = 181deg + 0, lengthX = 23.14) | ||||
|         |> angledLine(angle = -91, lengthY = 19 + 0) | ||||
|         |> angledLine(angle = 3 + 0, endAbsoluteX = 26) | ||||
|         |> angledLine(angle = 89, endAbsoluteY = 9.14 + 0) | ||||
|         |> angledLineThatIntersects(angle = 4.14, intersectTag = a, offset = 9) | ||||
|         |> angledLine(angle = 3deg + 0, endAbsoluteX = 26) | ||||
|         |> angledLine(angle = 89deg, endAbsoluteY = 9.14 + 0) | ||||
|         |> angledLineThatIntersects(angle = 4.14deg, intersectTag = a, offset = 9) | ||||
|         |> tangentialArc(endAbsolute = [3.14 + 13, -3.14]) | ||||
|       ` | ||||
|         ) | ||||
| @ -992,17 +994,17 @@ part001 = startSketchOn(XZ) | ||||
| part001 = startSketchOn(XZ) | ||||
|   |> startProfile(at = [0, 0]) | ||||
|   |> line(end = [0.5, -14 + 0]) | ||||
|   |> angledLine(angle = 3 + 0, length = 32 + 0) | ||||
|   |> angledLine(angle = 3deg + 0, length = 32 + 0) | ||||
|   |> line(endAbsolute = [33, 11.5 + 0]) | ||||
|   |> xLine(endAbsolute = 9 - 5) | ||||
|   |> yLine(endAbsolute = -10.77, tag = $a) | ||||
|   |> xLine(length = 26.04) | ||||
|   |> yLine(length = 21.14 + 0) | ||||
|   |> angledLine(angle = 181 + 0, lengthX = 23.14) | ||||
|   |> angledLine(angle = 181deg + 0, lengthX = 23.14) | ||||
|   |> angledLine(angle = -91, lengthY = 19 + 0) | ||||
|   |> angledLine(angle = 3 + 0, endAbsoluteX = 26) | ||||
|   |> angledLine(angle = 89, endAbsoluteY = 9.14 + 0) | ||||
|   |> angledLineThatIntersects(angle = 4.14, intersectTag = a, offset = 9) | ||||
|   |> angledLine(angle = 3deg + 0, endAbsoluteX = 26) | ||||
|   |> angledLine(angle = 89deg, endAbsoluteY = 9.14 + 0) | ||||
|   |> angledLineThatIntersects(angle = 4.14deg, intersectTag = a, offset = 9) | ||||
|   |> tangentialArc(endAbsolute = [3.14 + 13, 1.14]) | ||||
|   |> arc(interiorAbsolute = [16.25, 5.12], endAbsolute = [21.61, 4.15]) | ||||
|   |> arc(angleStart = 40.27, angleEnd = -38.05, radius = 9.03) | ||||
| @ -1078,7 +1080,7 @@ part001 = startSketchOn(XZ) | ||||
|       ang = await u.getAngle(`[data-overlay-index="${overlayIndex}"]`) | ||||
|       await deleteSegmentSequence({ | ||||
|         hoverPos: { x: segmentToDelete.x, y: segmentToDelete.y }, | ||||
|         codeToBeDeleted: `angledLineThatIntersects(angle = 4.14, intersectTag = a, offset = 9)`, | ||||
|         codeToBeDeleted: `angledLineThatIntersects(angle = 4.14deg, intersectTag = a, offset = 9)`, | ||||
|         stdLibFnName: 'angledLineThatIntersects', | ||||
|         ang: ang + 180, | ||||
|         steps: 7, | ||||
| @ -1091,7 +1093,7 @@ part001 = startSketchOn(XZ) | ||||
|       ang = await u.getAngle(`[data-overlay-index="${overlayIndex}"]`) | ||||
|       await deleteSegmentSequence({ | ||||
|         hoverPos: { x: segmentToDelete.x, y: segmentToDelete.y }, | ||||
|         codeToBeDeleted: 'angledLine(angle = 89, endAbsoluteY = 9.14 + 0)', | ||||
|         codeToBeDeleted: 'angledLine(angle = 89deg, endAbsoluteY = 9.14 + 0)', | ||||
|         stdLibFnName: 'angledLineToY', | ||||
|         ang: ang + 180, | ||||
|         locator: `[data-overlay-toolbar-index="${overlayIndex}"]`, | ||||
| @ -1103,7 +1105,7 @@ part001 = startSketchOn(XZ) | ||||
|       ang = await u.getAngle(`[data-overlay-index="${overlayIndex}"]`) | ||||
|       await deleteSegmentSequence({ | ||||
|         hoverPos: { x: segmentToDelete.x, y: segmentToDelete.y }, | ||||
|         codeToBeDeleted: 'angledLine(angle = 3 + 0, endAbsoluteX = 26)', | ||||
|         codeToBeDeleted: 'angledLine(angle = 3deg + 0, endAbsoluteX = 26)', | ||||
|         stdLibFnName: 'angledLineToX', | ||||
|         ang: ang + 180, | ||||
|         locator: `[data-overlay-toolbar-index="${overlayIndex}"]`, | ||||
| @ -1127,7 +1129,7 @@ part001 = startSketchOn(XZ) | ||||
|       ang = await u.getAngle(`[data-overlay-index="${overlayIndex}"]`) | ||||
|       await deleteSegmentSequence({ | ||||
|         hoverPos: { x: segmentToDelete.x, y: segmentToDelete.y }, | ||||
|         codeToBeDeleted: 'angledLine(angle = 181 + 0, lengthX = 23.14)', | ||||
|         codeToBeDeleted: 'angledLine(angle = 181deg + 0, lengthX = 23.14)', | ||||
|         stdLibFnName: 'angledLineOfXLength', | ||||
|         ang: ang + 180, | ||||
|         locator: `[data-overlay-toolbar-index="${overlayIndex}"]`, | ||||
| @ -1222,7 +1224,7 @@ part001 = startSketchOn(XZ) | ||||
|       ang = await u.getAngle(`[data-overlay-index="${overlayIndex}"]`) | ||||
|       await deleteSegmentSequence({ | ||||
|         hoverPos: { x: segmentToDelete.x, y: segmentToDelete.y }, | ||||
|         codeToBeDeleted: 'angledLine(angle = 3 + 0, length = 32 + 0)', | ||||
|         codeToBeDeleted: 'angledLine(angle = 3deg + 0, length = 32 + 0)', | ||||
|         stdLibFnName: 'angledLine', | ||||
|         ang: ang + 180, | ||||
|         locator: `[data-overlay-toolbar-index="${overlayIndex}"]`, | ||||
| @ -1245,19 +1247,19 @@ part001 = startSketchOn(XZ) | ||||
|   test.describe('Testing delete with dependent segments', () => { | ||||
|     const cases = [ | ||||
|       'line(end = [22, 2], tag = $seg01)', | ||||
|       'angledLine(angle = 5, length = 23.03, tag = $seg01)', | ||||
|       'angledLine(angle = 5deg, length = 23.03, tag = $seg01)', | ||||
|       'xLine(length = 23, tag = $seg01)', | ||||
|       'yLine(length = -8, tag = $seg01)', | ||||
|       'xLine(endAbsolute = 30, tag = $seg01)', | ||||
|       'yLine(endAbsolute = -4, tag = $seg01)', | ||||
|       'angledLine(angle = 3, lengthX = 30, tag = $seg01)', | ||||
|       'angledLine(angle = 3, lengthY = 1.5, tag = $seg01)', | ||||
|       'angledLine(angle = 3, endAbsoluteX = 30, tag = $seg01)', | ||||
|       'angledLine(angle = 3, endAbsoluteY = 7, tag = $seg01)', | ||||
|       'angledLine(angle = 3deg, lengthX = 30, tag = $seg01)', | ||||
|       'angledLine(angle = 3deg, lengthY = 1.5, tag = $seg01)', | ||||
|       'angledLine(angle = 3deg, endAbsoluteX = 30, tag = $seg01)', | ||||
|       'angledLine(angle = 3deg, endAbsoluteY = 7, tag = $seg01)', | ||||
|     ] | ||||
|     for (const doesHaveTagOutsideSketch of [true, false]) { | ||||
|       for (const lineOfInterest of cases) { | ||||
|         const isObj = lineOfInterest.includes('{ angle = 3,') | ||||
|         const isObj = lineOfInterest.includes('{ angle = 3deg,') | ||||
|         test(`${lineOfInterest}${isObj ? '-[obj-input]' : ''}${ | ||||
|           doesHaveTagOutsideSketch ? '-[tagOutsideSketch]' : '' | ||||
|         }`, async ({ page, editor, homePage }) => { | ||||
| @ -1383,7 +1385,7 @@ part001 = startSketchOn(XZ) | ||||
|       }, | ||||
|  | ||||
|       { | ||||
|         before: `angledLine(angle = 5 + 0, length = 23.03 + 0, tag = $seg01)`, | ||||
|         before: `angledLine(angle = 5deg + 0, length = 23.03 + 0, tag = $seg01)`, | ||||
|         after: `line(end = [22.94, 2.01], tag = $seg01)`, | ||||
|       }, | ||||
|       { | ||||
| @ -1403,19 +1405,19 @@ part001 = startSketchOn(XZ) | ||||
|         after: `line(end = [0, -10], tag = $seg01)`, | ||||
|       }, | ||||
|       { | ||||
|         before: `angledLine(angle = 3 + 0, lengthX = 30 + 0, tag = $seg01)`, | ||||
|         before: `angledLine(angle = 3deg + 0, lengthX = 30 + 0, tag = $seg01)`, | ||||
|         after: `line(end = [30, 1.57], tag = $seg01)`, | ||||
|       }, | ||||
|       { | ||||
|         before: `angledLine(angle = 3 + 0, lengthY = 1.5 + 0, tag = $seg01)`, | ||||
|         before: `angledLine(angle = 3deg + 0, lengthY = 1.5 + 0, tag = $seg01)`, | ||||
|         after: `line(end = [28.62, 1.5], tag = $seg01)`, | ||||
|       }, | ||||
|       { | ||||
|         before: `angledLine(angle = 3 + 0, endAbsoluteX = 30 + 0, tag = $seg01)`, | ||||
|         before: `angledLine(angle = 3deg + 0, endAbsoluteX = 30 + 0, tag = $seg01)`, | ||||
|         after: `line(end = [25, 1.31], tag = $seg01)`, | ||||
|       }, | ||||
|       { | ||||
|         before: `angledLine(angle = 3 + 0, endAbsoluteY = 7 + 0, tag = $seg01)`, | ||||
|         before: `angledLine(angle = 3deg + 0, endAbsoluteY = 7 + 0, tag = $seg01)`, | ||||
|         after: `line(end = [19.08, 1], tag = $seg01)`, | ||||
|       }, | ||||
|     ] | ||||
|  | ||||
| @ -307,15 +307,15 @@ part009 = startSketchOn(XY) | ||||
|   |> startProfile(at = [pipeLargeDia - (thickness / 2), 38]) | ||||
|   |> line(end = [thickness, 0]) | ||||
|   |> line(end = [0, -1]) | ||||
|   |> angledLine(angle = 60, endAbsoluteX = pipeSmallDia + thickness) | ||||
|   |> angledLine(angle = 60deg, endAbsoluteX = pipeSmallDia + thickness) | ||||
|   |> line(end = [0, -pipeLength]) | ||||
|   |> angledLine(angle = -60, endAbsoluteX = pipeLargeDia + thickness) | ||||
|   |> line(end = [0, -1]) | ||||
|   |> line(end = [-thickness, 0]) | ||||
|   |> line(end = [0, 1]) | ||||
|   |> angledLine(angle = 120, endAbsoluteX =  pipeSmallDia) | ||||
|   |> angledLine(angle = 120deg, endAbsoluteX =  pipeSmallDia) | ||||
|   |> line(end = [0, pipeLength]) | ||||
|   |> angledLine(angle = 60, endAbsoluteX =  pipeLargeDia) | ||||
|   |> angledLine(angle = 60deg, endAbsoluteX =  pipeLargeDia) | ||||
|   |> close() | ||||
| rev = revolve(part009, axis = Y) | ||||
| sketch006 = startSketchOn(XY) | ||||
| @ -325,7 +325,7 @@ profile001 = circle( | ||||
|   radius = 17.96 | ||||
| ) | ||||
| profile002 = startProfile(sketch006, at = [86.92, -63.81]) | ||||
|   |> angledLine(angle = 0, length = 63.81, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = 0deg, length = 63.81, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 17.05) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001)) | ||||
|   |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) | ||||
| @ -464,7 +464,7 @@ profile002 = startProfile(sketch002, at = [-11.08, 2.39]) | ||||
|   |> close() | ||||
| extrude001 = extrude(profile002, length = 15) | ||||
| profile001 = startProfile(sketch001, at = [7.49, 9.96]) | ||||
|   |> angledLine(angle = 0, length = 5.05, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = 0deg, length = 5.05, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 4.81) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001)) | ||||
|   |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) | ||||
| @ -513,16 +513,16 @@ profile001 = startProfile(sketch001, at = [7.49, 9.96]) | ||||
| part001 = startSketchOn(XZ) | ||||
|   |> startProfile(at = [20, 0]) | ||||
|   |> line(end = [7.13, 4 + 0]) | ||||
|   |> angledLine(angle = 3 + 0, length = 3.14 + 0 ) | ||||
|   |> angledLine(angle = 3deg + 0, length = 3.14 + 0 ) | ||||
|   |> line(endAbsolute = [20.14 + 0, -0.14 + 0]) | ||||
|   |> xLine(endAbsolute = 29 + 0) | ||||
|   |> yLine(length = -3.14 + 0, tag = $a) | ||||
|   |> xLine(length = 1.63) | ||||
|   |> angledLine(angle = 3 + 0, lengthX = 3.14) | ||||
|   |> angledLine(angle = 30, lengthY = 3 + 0) | ||||
|   |> angledLine(angle = 22.14 + 0, endAbsoluteX =  12) | ||||
|   |> angledLine(angle = 30, endAbsoluteY =  11.14) | ||||
|   |> angledLineThatIntersects(angle = 3.14, intersectTag = a, offset = 0) | ||||
|   |> angledLine(angle = 3deg + 0, lengthX = 3.14) | ||||
|   |> angledLine(angle = 30deg, lengthY = 3 + 0) | ||||
|   |> angledLine(angle = 22.14deg + 0, endAbsoluteX =  12) | ||||
|   |> angledLine(angle = 30deg, endAbsoluteY =  11.14) | ||||
|   |> angledLineThatIntersects(angle = 3.14deg, intersectTag = a, offset = 0) | ||||
|   |> tangentialArc(endAbsolute = [13.14 + 0, 13.14]) | ||||
|   |> close() | ||||
|   |> extrude(length = 5 + 7) | ||||
| @ -655,7 +655,7 @@ part001 = startSketchOn(XZ) | ||||
|       'flatExtrusionFace', | ||||
|       flatExtrusionFace, | ||||
|       `angledLineThatIntersects(angle=3.14,intersectTag=a,offset=0)extrude(length=5+7)`, | ||||
|       'angledLineThatIntersects(angle = 3.14, intersectTag = a, offset = 0)' | ||||
|       'angledLineThatIntersects(angle = 3.14deg, intersectTag = a, offset = 0)' | ||||
|     ) | ||||
|  | ||||
|     await checkCodeAtHoverPosition( | ||||
| @ -707,19 +707,19 @@ part001 = startSketchOn(XZ) | ||||
|       'straightSegmentEdge', | ||||
|       straightSegmentEdge, | ||||
|       `angledLine(angle=30,endAbsoluteY=11.14)`, | ||||
|       'angledLine(angle = 30, endAbsoluteY =  11.14)' | ||||
|       'angledLine(angle = 30deg, endAbsoluteY =  11.14)' | ||||
|     ) | ||||
|     await checkCodeAtHoverPosition( | ||||
|       'straightSegmentOppositeEdge', | ||||
|       straightSegmentOppositeEdge, | ||||
|       `angledLine(angle=30,endAbsoluteY=11.14)`, | ||||
|       'angledLine(angle = 30, endAbsoluteY =  11.14)' | ||||
|       'angledLine(angle = 30deg, endAbsoluteY =  11.14)' | ||||
|     ) | ||||
|     await checkCodeAtHoverPosition( | ||||
|       'straightSegmentAdjacentEdge', | ||||
|       straightSegmentAdjacentEdge, | ||||
|       `angledLineThatIntersects(angle=3.14,intersectTag=a,offset=0)`, | ||||
|       'angledLineThatIntersects(angle = 3.14, intersectTag = a, offset = 0)' | ||||
|       'angledLineThatIntersects(angle = 3.14deg, intersectTag = a, offset = 0)' | ||||
|     ) | ||||
|  | ||||
|     await page.waitForTimeout(200) | ||||
| @ -728,7 +728,7 @@ part001 = startSketchOn(XZ) | ||||
|     await u.codeLocator.fill(`@settings(defaultLengthUnit = in) | ||||
|     sketch001 = startSketchOn(XZ) | ||||
|     |> startProfile(at = [75.8, 317.2]) // [$startCapTag, $EndCapTag] | ||||
|     |> angledLine(angle = 0, length = 268.43, tag = $rectangleSegmentA001) | ||||
|     |> angledLine(angle = 0deg, length = 268.43, tag = $rectangleSegmentA001) | ||||
|     |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 217.26, tag = $seg01) | ||||
|     |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $yo) | ||||
|     |> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $seg02) | ||||
|  | ||||
| @ -19,7 +19,7 @@ fn rail8020(originStart, railHeight, railLength) { | ||||
|     |> xLine(length = 0.06 * railHeight, tag = $edge1) | ||||
|     |> yLine(length = 0.087 * railHeight, tag = $edge2) | ||||
|     |> xLine(length = -0.183 * railHeight, tag = $edge3) | ||||
|     |> angledLine(angle = 45, endAbsoluteY = (1 - 0.356) / 2 * railHeight + originStart[1], tag = $edge4) | ||||
|     |> angledLine(angle = 45deg, endAbsoluteY = (1 - 0.356) / 2 * railHeight + originStart[1], tag = $edge4) | ||||
|     |> xLine(length = 0.232 * railHeight, tag = $edge5) | ||||
|     |> angledLine(angle = -45, endAbsoluteY = 0.087 * railHeight + originStart[1], tag = $edge6) | ||||
|     |> xLine(length = -0.183 * railHeight, tag = $edge7) | ||||
| @ -37,9 +37,9 @@ fn rail8020(originStart, railHeight, railLength) { | ||||
|     |> yLine(length = 0.06 * railHeight, tag = $edge9) | ||||
|     |> xLine(length = -0.087 * railHeight, tag = $edge10) | ||||
|     |> yLine(length = -0.183 * railHeight, tag = $edge11) // edge11 | ||||
|     |> angledLine(angle = 135, endAbsoluteX = ((1 - 0.356) / 2 + 0.356) * railHeight + originStart[0], tag = $edge12) // edge12 | ||||
|     |> angledLine(angle = 135deg, endAbsoluteX = ((1 - 0.356) / 2 + 0.356) * railHeight + originStart[0], tag = $edge12) // edge12 | ||||
|     |> yLine(length = 0.232 * railHeight, tag = $edge13) // 13 | ||||
|     |> angledLine(angle = 45, endAbsoluteX = (1 - 0.087) * railHeight + originStart[0], tag = $edge14) // 14 | ||||
|     |> angledLine(angle = 45deg, endAbsoluteX = (1 - 0.087) * railHeight + originStart[0], tag = $edge14) // 14 | ||||
|     |> yLine(length = -0.183 * railHeight, tag = $edge15) // 15 | ||||
|     |> xLine(length = 0.087 * railHeight, tag = $edge16) | ||||
|     |> yLine(length = 0.06 * railHeight) | ||||
| @ -55,9 +55,9 @@ fn rail8020(originStart, railHeight, railLength) { | ||||
|     |> xLine(length = -0.06 * railHeight, tag = $edge17) | ||||
|     |> yLine(length = -0.087 * railHeight, tag = $edge18) | ||||
|     |> xLine(length = 0.183 * railHeight, tag = $edge19) | ||||
|     |> angledLine(angle = 45, endAbsoluteY = ((1 - 0.356) / 2 + 0.356) * railHeight + originStart[1], tag = $edge20) | ||||
|     |> angledLine(angle = 45deg, endAbsoluteY = ((1 - 0.356) / 2 + 0.356) * railHeight + originStart[1], tag = $edge20) | ||||
|     |> xLine(length = -0.232 * railHeight, tag = $edge21) | ||||
|     |> angledLine(angle = 135, endAbsoluteY = (1 - 0.087) * railHeight + originStart[1], tag = $edge22) | ||||
|     |> angledLine(angle = 135deg, endAbsoluteY = (1 - 0.087) * railHeight + originStart[1], tag = $edge22) | ||||
|     |> xLine(length = 0.183 * railHeight, tag = $edge23) | ||||
|     |> yLine(length = 0.087 * railHeight, tag = $edge24) | ||||
|     |> xLine(length = -0.06 * railHeight) | ||||
| @ -73,9 +73,9 @@ fn rail8020(originStart, railHeight, railLength) { | ||||
|     |> yLine(length = -0.06 * railHeight, tag = $edge25) | ||||
|     |> xLine(length = 0.087 * railHeight, tag = $edge26) | ||||
|     |> yLine(length = 0.183 * railHeight, tag = $edge27) | ||||
|     |> angledLine(angle = 135, endAbsoluteX = (1 - 0.356) / 2 * railHeight + originStart[0], tag = $edge28) | ||||
|     |> angledLine(angle = 135deg, endAbsoluteX = (1 - 0.356) / 2 * railHeight + originStart[0], tag = $edge28) | ||||
|     |> yLine(length = -0.232 * railHeight, tag = $edge29) | ||||
|     |> angledLine(angle = 45, endAbsoluteX = 0.087 * railHeight + originStart[0], tag = $edge30) | ||||
|     |> angledLine(angle = 45deg, endAbsoluteX = 0.087 * railHeight + originStart[0], tag = $edge30) | ||||
|     |> yLine(length = 0.183 * railHeight, tag = $edge31) | ||||
|     |> xLine(length = -0.087 * railHeight, tag = $edge32) | ||||
|     |> yLine(length = -0.06 * railHeight) | ||||
|  | ||||
| @ -11,8 +11,8 @@ import * from "parameters.kcl" | ||||
| // Bottom mounting face | ||||
| bottomFaceSketch = startSketchOn(XY) | ||||
|   |> startProfile(at = [-fanSize / 2, -fanSize / 2]) | ||||
|   |> angledLine(angle = 0, length = fanSize, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001) + 90, length = fanSize, tag = $rectangleSegmentB001) | ||||
|   |> angledLine(angle = 0deg, length = fanSize, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001) + 90deg, length = fanSize, tag = $rectangleSegmentB001) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $rectangleSegmentC001) | ||||
|   |> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $rectangleSegmentD001) | ||||
|   |> close() | ||||
| @ -50,12 +50,12 @@ bottomFaceSketch = startSketchOn(XY) | ||||
| // Add large openings to the bottom face to allow airflow through the fan | ||||
| airflowPattern = startSketchOn(bottomFaceSketch, face = END) | ||||
|   |> startProfile(at = [fanSize * 7 / 25, -fanSize * 9 / 25]) | ||||
|   |> angledLine(angle = 140, length = fanSize * 12 / 25, tag = $seg01) | ||||
|   |> tangentialArc(radius = fanSize * 1 / 50, angle = 90) | ||||
|   |> angledLine(angle = -130, length = fanSize * 8 / 25) | ||||
|   |> tangentialArc(radius = fanSize * 1 / 50, angle = 90) | ||||
|   |> angledLine(angle = segAng(seg01) + 180, length = fanSize * 2 / 25) | ||||
|   |> tangentialArc(radius = fanSize * 8 / 25, angle = 40) | ||||
|   |> angledLine(angle = 140deg, length = fanSize * 12 / 25, tag = $seg01) | ||||
|   |> tangentialArc(radius = fanSize * 1 / 50, angle = 90deg) | ||||
|   |> angledLine(angle = -130deg, length = fanSize * 8 / 25) | ||||
|   |> tangentialArc(radius = fanSize * 1 / 50, angle = 90deg) | ||||
|   |> angledLine(angle = segAng(seg01) + 180deg, length = fanSize * 2 / 25) | ||||
|   |> tangentialArc(radius = fanSize * 8 / 25, angle = 40deg) | ||||
|   |> xLine(length = fanSize * 3 / 25) | ||||
|   |> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)]) | ||||
|   |> close() | ||||
| @ -75,13 +75,13 @@ bodyMiddle = startSketchOn(bottomFaceSketch, face = END) | ||||
|        housingMiddleLength / 2, | ||||
|        -housingMiddleLength / 2 - housingMiddleRadius | ||||
|      ]) | ||||
|   |> tangentialArc(radius = housingMiddleRadius, angle = 90) | ||||
|   |> tangentialArc(radius = housingMiddleRadius, angle = 90deg) | ||||
|   |> yLine(length = housingMiddleLength) | ||||
|   |> tangentialArc(radius = housingMiddleRadius, angle = 90) | ||||
|   |> tangentialArc(radius = housingMiddleRadius, angle = 90deg) | ||||
|   |> xLine(length = -housingMiddleLength) | ||||
|   |> tangentialArc(radius = housingMiddleRadius, angle = 90) | ||||
|   |> tangentialArc(radius = housingMiddleRadius, angle = 90deg) | ||||
|   |> yLine(length = -housingMiddleLength) | ||||
|   |> tangentialArc(radius = housingMiddleRadius, angle = 90) | ||||
|   |> tangentialArc(radius = housingMiddleRadius, angle = 90deg) | ||||
|   |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) | ||||
|   |> extrude(length = fanHeight - 4 - 4) | ||||
|  | ||||
| @ -93,8 +93,8 @@ bodyFanHole = startSketchOn(bodyMiddle, face = END) | ||||
| // Top mounting face. Cut a hole in the face to accommodate the fan | ||||
| topFaceSketch = startSketchOn(bodyMiddle, face = END) | ||||
| topHoles = startProfile(topFaceSketch, at = [-fanSize / 2, -fanSize / 2]) | ||||
|   |> angledLine(angle = 0, length = fanSize, tag = $rectangleSegmentA002) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA002) + 90, length = fanSize, tag = $rectangleSegmentB002) | ||||
|   |> angledLine(angle = 0deg, length = fanSize, tag = $rectangleSegmentA002) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA002) + 90deg, length = fanSize, tag = $rectangleSegmentB002) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA002), length = -segLen(rectangleSegmentA002), tag = $rectangleSegmentC002) | ||||
|   |> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $rectangleSegmentD002) | ||||
|   |> close() | ||||
|  | ||||
| @ -11,11 +11,11 @@ import * from "parameters.kcl" | ||||
| fanCenter = startSketchOn(XZ) | ||||
|   |> startProfile(at = [-0.0001, fanHeight]) | ||||
|   |> xLine(endAbsolute = -15 + 1.5) | ||||
|   |> tangentialArc(radius = 1.5, angle = 90) | ||||
|   |> tangentialArc(radius = 1.5, angle = 90deg) | ||||
|   |> yLine(endAbsolute = 4.5) | ||||
|   |> xLine(endAbsolute = -13) | ||||
|   |> yLine(endAbsolute = profileStartY(%) - 5) | ||||
|   |> tangentialArc(radius = 1, angle = -90) | ||||
|   |> tangentialArc(radius = 1, angle = -90deg) | ||||
|   |> xLine(endAbsolute = -1) | ||||
|   |> yLine(length = 2) | ||||
|   |> xLine(length = -0.15) | ||||
| @ -39,32 +39,32 @@ fn fanBlade(offsetHeight, startAngle: number(deg)) { | ||||
|          15 * cos(startAngle), | ||||
|          15 * sin(startAngle) | ||||
|        ]) | ||||
|     |> arc(angleStart = startAngle, angleEnd = startAngle + 14, radius = 15) | ||||
|     |> arc(angleStart = startAngle, angleEnd = startAngle + 1deg, radius = 15) | ||||
|     |> arc( | ||||
|          endAbsolute = [ | ||||
|            fanSize * 22 / 50 * cos(startAngle - 20), | ||||
|            fanSize * 22 / 50 * sin(startAngle - 20) | ||||
|            fanSize * 22 / 50 * cos(startAngle - 20deg), | ||||
|            fanSize * 22 / 50 * sin(startAngle - 20deg) | ||||
|          ], | ||||
|          interiorAbsolute = [ | ||||
|            fanSize * 11 / 50 * cos(startAngle + 3), | ||||
|            fanSize * 11 / 50 * sin(startAngle + 3) | ||||
|            fanSize * 11 / 50 * cos(startAngle + 3deg), | ||||
|            fanSize * 11 / 50 * sin(startAngle + 3deg) | ||||
|          ], | ||||
|        ) | ||||
|     |> arc( | ||||
|          endAbsolute = [ | ||||
|            fanSize * 22 / 50 * cos(startAngle - 24), | ||||
|            fanSize * 22 / 50 * sin(startAngle - 24) | ||||
|            fanSize * 22 / 50 * cos(startAngle - 24deg), | ||||
|            fanSize * 22 / 50 * sin(startAngle - 24deg) | ||||
|          ], | ||||
|          interiorAbsolute = [ | ||||
|            fanSize * 22 / 50 * cos(startAngle - 22), | ||||
|            fanSize * 22 / 50 * sin(startAngle - 22) | ||||
|            fanSize * 22 / 50 * cos(startAngle - 22deg), | ||||
|            fanSize * 22 / 50 * sin(startAngle - 22deg) | ||||
|          ], | ||||
|        ) | ||||
|     |> arc( | ||||
|          endAbsolute = [profileStartX(%), profileStartY(%)], | ||||
|          interiorAbsolute = [ | ||||
|            fanSize * 11 / 50 * cos(startAngle - 5), | ||||
|            fanSize * 11 / 50 * sin(startAngle - 5) | ||||
|            fanSize * 11 / 50 * cos(startAngle - 5deg), | ||||
|            fanSize * 11 / 50 * sin(startAngle - 5deg) | ||||
|          ], | ||||
|        ) | ||||
|     |> close() | ||||
| @ -73,9 +73,9 @@ fn fanBlade(offsetHeight, startAngle: number(deg)) { | ||||
|  | ||||
| // Loft the fan blade cross sections into a single blade, then pattern them about the fan center | ||||
| crossSections = [ | ||||
|   fanBlade(offsetHeight = 4.5, startAngle = 50), | ||||
|   fanBlade(offsetHeight = (fanHeight - 2 - 4) / 2, startAngle = 30), | ||||
|   fanBlade(offsetHeight = fanHeight - 2, startAngle = 0) | ||||
|   fanBlade(offsetHeight = 4.5, startAngle = 50deg), | ||||
|   fanBlade(offsetHeight = (fanHeight - 2 - 4) / 2, startAngle = 30deg), | ||||
|   fanBlade(offsetHeight = fanHeight - 2, startAngle = 0deg) | ||||
| ] | ||||
| loft(crossSections) | ||||
|   |> appearance(color = "#f3e2d8") | ||||
| @ -83,6 +83,6 @@ loft(crossSections) | ||||
|        instances = 9, | ||||
|        axis = [0, 0, 1], | ||||
|        center = [0, 0, 0], | ||||
|        arcDegrees = 360, | ||||
|        arcDegrees = 360deg, | ||||
|        rotateDuplicates = true, | ||||
|      ) | ||||
|  | ||||
| @ -27,13 +27,13 @@ insideWall = extrude(insideWallSketch, length = overallThickness) | ||||
| // Create the sketch of one of the balls | ||||
| ballsSketch = startSketchOn(XY) | ||||
|   |> startProfile(at = [shaftDia / 2 + wallThickness, 0.001]) | ||||
|   |> arc(angleStart = 180, angleEnd = 0, radius = sphereDia / 2) | ||||
|   |> arc(angleStart = 180deg, angleEnd = 0deg, radius = sphereDia / 2) | ||||
|   |> close() | ||||
|  | ||||
| // Revolve the ball to make a sphere and pattern around the inside wall | ||||
| balls = revolve(ballsSketch, axis = X) | ||||
|   |> patternCircular3d( | ||||
|        arcDegrees = 360, | ||||
|        arcDegrees = 360deg, | ||||
|        axis = [0, 0, 1], | ||||
|        center = [0, 0, 0], | ||||
|        instances = nBalls, | ||||
| @ -44,9 +44,9 @@ balls = revolve(ballsSketch, axis = X) | ||||
| chainSketch = startSketchOn(XY) | ||||
|   |> startProfile(at = [ | ||||
|        shaftDia / 2 + wallThickness + sphereDia / 2 - (chainWidth / 2), | ||||
|        0.125 * sin(60) | ||||
|        0.125 * sin(60deg) | ||||
|      ]) | ||||
|   |> arc(angleStart = 120, angleEnd = 60, radius = sphereDia / 2) | ||||
|   |> arc(angleStart = 120deg, angleEnd = 60deg, radius = sphereDia / 2) | ||||
|   |> line(end = [0, chainThickness]) | ||||
|   |> line(end = [-chainWidth, 0]) | ||||
|   |> close() | ||||
| @ -54,7 +54,7 @@ chainSketch = startSketchOn(XY) | ||||
| // Revolve the chain sketch | ||||
| chainHead = revolve(chainSketch, axis = X) | ||||
|   |> patternCircular3d( | ||||
|        arcDegrees = 360, | ||||
|        arcDegrees = 360deg, | ||||
|        axis = [0, 0, 1], | ||||
|        center = [0, 0, 0], | ||||
|        instances = nBalls, | ||||
| @ -72,9 +72,9 @@ linkSketch = startSketchOn(XZ) | ||||
|      ) | ||||
|  | ||||
| // Revolve the link sketch | ||||
| linkRevolve = revolve(linkSketch, axis = Y, angle = 360 / nBalls) | ||||
| linkRevolve = revolve(linkSketch, axis = Y, angle = 360deg / nBalls) | ||||
|   |> patternCircular3d( | ||||
|        arcDegrees = 360, | ||||
|        arcDegrees = 360deg, | ||||
|        axis = [0, 0, 1], | ||||
|        center = [0, 0, 0], | ||||
|        instances = nBalls, | ||||
|  | ||||
| @ -86,11 +86,11 @@ export fn seatSlats(@plane, length) { | ||||
| fn backSlatsSketch(@plane) { | ||||
|   sketch004 = startSketchOn(plane) | ||||
|     |> startProfile(at = [22, 38.5]) | ||||
|     |> angledLine(angle = 173, length = 2) | ||||
|     |> angledLine(angle = 173deg, length = 2) | ||||
|     |> line(end = [-1.74, 2.03]) | ||||
|     |> angledLine(angle = 82, length = 6.6) | ||||
|     |> angledLine(angle = 82deg, length = 6.6) | ||||
|     |> line(end = [2.23, 1.42]) | ||||
|     |> angledLine(angle = -7, length = 2) | ||||
|     |> angledLine(angle = -7deg, length = 2) | ||||
|     |> line(endAbsolute = profileStart(%)) | ||||
|     |> close() | ||||
|     |> patternLinear2d(instances = 2, distance = 11, axis = [-0.137, -1]) | ||||
| @ -107,7 +107,7 @@ fn armRestPath(@plane) { | ||||
|   sketch005 = startSketchOn(plane) | ||||
|     |> startProfile(at = [20, 33]) | ||||
|     |> xLine(length = -20) | ||||
|     |> arc(angleStart = 90, angleEnd = 180, radius = 10) | ||||
|     |> arc(angleStart = 90deg, angleEnd = 180deg, radius = 10) | ||||
|   return sketch005 | ||||
| } | ||||
|  | ||||
|  | ||||
| @ -10,13 +10,13 @@ boltSize = 4.5 | ||||
| // Revolve the profile of a compression plate designed to fit a bone | ||||
| plateRevolve = startSketchOn(YZ) | ||||
|   |> startProfile(at = [22.9, 0]) | ||||
|   |> arc(angleStart = 180, angleEnd = 176, radius = 120) | ||||
|   |> arc(angleStart = -60, angleEnd = 54, radius = 5) | ||||
|   |> arc(angleStart = 180, angleEnd = 176, radius = 120) | ||||
|   |> arc(angleStart = -60, angleEnd = 54, radius = 5) | ||||
|   |> arc(angleStart = 180, angleEnd = 176, radius = 120) | ||||
|   |> arc(angleStart = -60, angleEnd = 54, radius = 5) | ||||
|   |> arc(angleStart = 180, angleEnd = 174, radius = 170) | ||||
|   |> arc(angleStart = 180deg, angleEnd = 176deg, radius = 120) | ||||
|   |> arc(angleStart = -60deg, angleEnd = 54deg, radius = 5) | ||||
|   |> arc(angleStart = 180deg, angleEnd = 176deg, radius = 120) | ||||
|   |> arc(angleStart = -60deg, angleEnd = 54deg, radius = 5) | ||||
|   |> arc(angleStart = 180deg, angleEnd = 176deg, radius = 120) | ||||
|   |> arc(angleStart = -60deg, angleEnd = 54deg, radius = 5) | ||||
|   |> arc(angleStart = 180deg, angleEnd = 174deg, radius = 170) | ||||
|   |> tangentialArc(endAbsolute = [41.8, 91.88]) | ||||
|   |> tangentialArc(endAbsolute = [56.92, 117.08], tag = $seg01) | ||||
|   |> angledLine(angle = tangentToEnd(seg01), length = 23.16) | ||||
| @ -27,7 +27,7 @@ plateRevolve = startSketchOn(YZ) | ||||
|   |> angledLine(angle = tangentToEnd(seg03), length = 49.06) | ||||
|   |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) | ||||
|   |> close() | ||||
|   |> revolve(axis = Y, angle = 65, symmetric = true) | ||||
|   |> revolve(axis = Y, angle = 65deg, symmetric = true) | ||||
|  | ||||
| // Create a hole sketch with the size and location of each bolt hole | ||||
| holeSketch = startSketchOn(XZ) | ||||
|  | ||||
| @ -17,44 +17,44 @@ brakeCaliperSketch = startSketchOn(XY) | ||||
|        0, | ||||
|        rotorTotalThickness + caliperTolerance - caliperInnerEdgeRadius | ||||
|      ]) | ||||
|   |> tangentialArc(angle = 90, radius = caliperInnerEdgeRadius) | ||||
|   |> tangentialArc(angle = 90deg, radius = caliperInnerEdgeRadius) | ||||
|   |> line(end = [ | ||||
|        -caliperPadLength + 2 * caliperInnerEdgeRadius, | ||||
|        0 | ||||
|      ]) | ||||
|   |> tangentialArc(angle = -90, radius = caliperInnerEdgeRadius) | ||||
|   |> tangentialArc(angle = -90deg, radius = caliperInnerEdgeRadius) | ||||
|   |> line(end = [ | ||||
|        0, | ||||
|        caliperThickness - (caliperInnerEdgeRadius * 2) | ||||
|      ]) | ||||
|   |> tangentialArc(angle = -90, radius = caliperInnerEdgeRadius) | ||||
|   |> tangentialArc(angle = -90deg, radius = caliperInnerEdgeRadius) | ||||
|   |> line(end = [ | ||||
|        caliperPadLength + caliperThickness - caliperOuterEdgeRadius - caliperInnerEdgeRadius, | ||||
|        0 | ||||
|      ]) | ||||
|   |> tangentialArc(angle = -90, radius = caliperOuterEdgeRadius) | ||||
|   |> tangentialArc(angle = -90deg, radius = caliperOuterEdgeRadius) | ||||
|   |> line(end = [ | ||||
|        0, | ||||
|        -2 * caliperTolerance - (2 * caliperThickness) - rotorTotalThickness + 2 * caliperOuterEdgeRadius | ||||
|      ]) | ||||
|   |> tangentialArc(angle = -90, radius = caliperOuterEdgeRadius) | ||||
|   |> tangentialArc(angle = -90deg, radius = caliperOuterEdgeRadius) | ||||
|   |> line(end = [ | ||||
|        -caliperPadLength - caliperThickness + caliperOuterEdgeRadius + caliperInnerEdgeRadius, | ||||
|        0 | ||||
|      ]) | ||||
|   |> tangentialArc(angle = -90, radius = caliperInnerEdgeRadius) | ||||
|   |> tangentialArc(angle = -90deg, radius = caliperInnerEdgeRadius) | ||||
|   |> line(end = [ | ||||
|        0, | ||||
|        caliperThickness - (2 * caliperInnerEdgeRadius) | ||||
|      ]) | ||||
|   |> tangentialArc(angle = -90, radius = caliperInnerEdgeRadius) | ||||
|   |> tangentialArc(angle = -90deg, radius = caliperInnerEdgeRadius) | ||||
|   |> line(end = [ | ||||
|        caliperPadLength - (2 * caliperInnerEdgeRadius), | ||||
|        0 | ||||
|      ]) | ||||
|   |> tangentialArc(angle = 90, radius = caliperInnerEdgeRadius) | ||||
|   |> tangentialArc(angle = 90deg, radius = caliperInnerEdgeRadius) | ||||
|   |> close() | ||||
|  | ||||
| // Revolve the brake caliper sketch | ||||
| revolve(brakeCaliperSketch, axis = Y, angle = -70) | ||||
| revolve(brakeCaliperSketch, axis = Y, angle = -70deg) | ||||
|   |> appearance(color = "#c82d2d", metalness = 90, roughness = 90) | ||||
|  | ||||
| @ -17,7 +17,7 @@ tireSketch = startSketchOn(XY) | ||||
|        ], | ||||
|        tag = $edge1, | ||||
|      ) | ||||
|   |> tangentialArc(angle = -90, radius = bendRadius) | ||||
|   |> tangentialArc(angle = -90deg, radius = bendRadius) | ||||
|   |> line(endAbsolute = [ | ||||
|        tireOuterDiameter / 2, | ||||
|        tireDepth / 2 - tireTreadOffset | ||||
| @ -36,7 +36,7 @@ tireSketch = startSketchOn(XY) | ||||
|        tireOuterDiameter / 2, | ||||
|        -tireDepth / 2 + bendRadius | ||||
|      ]) | ||||
|   |> tangentialArc(angle = -90, radius = bendRadius) | ||||
|   |> tangentialArc(angle = -90deg, radius = bendRadius) | ||||
|   |> line(endAbsolute = [tireInnerDiameter / 2, -tireDepth / 2], tag = $edge2) | ||||
|   |> close() | ||||
|  | ||||
|  | ||||
| @ -17,10 +17,10 @@ customPlane = { | ||||
| fn lug(plane, length, diameter) { | ||||
|   lugSketch = startSketchOn(customPlane) | ||||
|     |> startProfile(at = [0 + diameter / 2, 0]) | ||||
|     |> angledLine(angle = 70, lengthY = lugHeadLength) | ||||
|     |> angledLine(angle = 70deg, lengthY = lugHeadLength) | ||||
|     |> xLine(endAbsolute = lugDiameter / 2) | ||||
|     |> yLine(endAbsolute = lugLength) | ||||
|     |> tangentialArc(angle = 90, radius = 3mm) | ||||
|     |> tangentialArc(angle = 90deg, radius = 3mm) | ||||
|     |> xLine(endAbsolute = 0 + .001, tag = $c1) | ||||
|     |> yLine(endAbsolute = lugThreadDepth) | ||||
|     |> xLine(endAbsolute = lugThreadDiameter) | ||||
|  | ||||
| @ -24,7 +24,7 @@ carWheel | ||||
| // Place the lug nuts | ||||
| lugNut | ||||
|   |> patternCircular3d( | ||||
|        arcDegrees = 360, | ||||
|        arcDegrees = 360deg, | ||||
|        axis = [0, 1, 0], | ||||
|        center = [0, 0, 0], | ||||
|        instances = lugCount, | ||||
|  | ||||
| @ -12,7 +12,7 @@ export wheelWidth = 9.5 | ||||
| export wheelDiameter = 19 | ||||
| export spokeCount = 6 | ||||
| export spokeGap = 0.2 | ||||
| export spokeAngle = 0.02 | ||||
| export spokeAngle = 0.02deg | ||||
| export spokeThickness = 0.95 | ||||
|  | ||||
| // Lug Nut | ||||
|  | ||||
| @ -14,15 +14,15 @@ coldPlate = startSketchOn(YZ) | ||||
|   |> startProfile(at = [0, tubeDiameter * 2]) | ||||
|   |> xLine(length = bendRadius - (tubeDiameter / 2)) | ||||
|   |> yLine(length = -tubeDiameter) | ||||
|   |> tangentialArc(angle = 180, radius = tubeDiameter / 2) | ||||
|   |> tangentialArc(angle = 180deg, radius = tubeDiameter / 2) | ||||
|   |> yLine(length = tubeDiameter) | ||||
|   |> xLine(length = bendRadius * 2 - tubeDiameter, tag = $seg07) | ||||
|   |> yLine(length = -tubeDiameter, tag = $seg09) | ||||
|   |> tangentialArc(angle = 180, radius = tubeDiameter / 2) | ||||
|   |> tangentialArc(angle = 180deg, radius = tubeDiameter / 2) | ||||
|   |> yLine(length = tubeDiameter, tag = $seg08) | ||||
|   |> xLine(length = bendRadius - (tubeDiameter / 2)) | ||||
|   |> angledLine(angle = -77, length = tubeDiameter / 3) | ||||
|   |> tangentialArc(angle = 77, radius = tubeDiameter, tag = $seg01) | ||||
|   |> angledLine(angle = -77deg, length = tubeDiameter / 3) | ||||
|   |> tangentialArc(angle = 77deg, radius = tubeDiameter, tag = $seg01) | ||||
|   |> angledLine(angle = tangentToEnd(seg01), length = 1) | ||||
|   |> yLine(endAbsolute = 0) | ||||
|   |> xLine(endAbsolute = 0) | ||||
| @ -34,11 +34,11 @@ coldPlate = startSketchOn(YZ) | ||||
| copperTubePath = startSketchOn(offsetPlane(XY, offset = tubeDiameter)) | ||||
|   |> startProfile(at = [-7.35, -bendRadius * 3]) | ||||
|   |> xLine(length = 14.13, tag = $seg05) | ||||
|   |> tangentialArc(angle = 180, radius = bendRadius, tag = $seg02) | ||||
|   |> tangentialArc(angle = 180deg, radius = bendRadius, tag = $seg02) | ||||
|   |> angledLine(angle = tangentToEnd(seg02), length = 13.02, tag = $seg06) | ||||
|   |> tangentialArc(angle = -180, radius = bendRadius, tag = $seg03) | ||||
|   |> tangentialArc(angle = -180deg, radius = bendRadius, tag = $seg03) | ||||
|   |> angledLine(angle = tangentToEnd(seg03), length = segLen(seg06)) | ||||
|   |> tangentialArc(angle = 180, radius = bendRadius, tag = $seg04) | ||||
|   |> tangentialArc(angle = 180deg, radius = bendRadius, tag = $seg04) | ||||
|   |> angledLine(angle = tangentToEnd(seg04), length = segLen(seg05)) | ||||
|  | ||||
| // Create the profile for the inner and outer diameter of the hollow copper tube | ||||
|  | ||||
| @ -23,8 +23,8 @@ tealPlane = offsetPlane(YZ, offset = -halfSize) | ||||
| fn sketchRectangle(profile, color) { | ||||
|   return profile | ||||
|     |> startProfile(at = [-halfSize, halfSize]) | ||||
|     |> angledLine(angle = 0, length = size, tag = $rectangleSegmentA001) | ||||
|     |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = size, tag = $rectangleSegmentB001) | ||||
|     |> angledLine(angle = 0deg, length = size, tag = $rectangleSegmentA001) | ||||
|     |> angledLine(angle = segAng(rectangleSegmentA001) - 90deg, length = size, tag = $rectangleSegmentB001) | ||||
|     |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $rectangleSegmentC001) | ||||
|     |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) | ||||
|     |> close() | ||||
|  | ||||
| @ -22,8 +22,8 @@ blockWidth = boltSpacingY + boltDiameter * 6 | ||||
| // Draw the base plate | ||||
| plateSketch = startSketchOn(XY) | ||||
|   |> startProfile(at = [-blockLength / 2, -blockWidth / 2]) | ||||
|   |> angledLine(angle = 0, length = blockLength, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001) + 90, length = blockWidth, tag = $rectangleSegmentB001) | ||||
|   |> angledLine(angle = 0deg, length = blockLength, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001) + 90deg, length = blockWidth, tag = $rectangleSegmentB001) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $rectangleSegmentC001) | ||||
|   |> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $rectangleSegmentD001) | ||||
|   |> close() | ||||
|  | ||||
| @ -22,13 +22,13 @@ tangentLength = (r1 - r2) / tan(tangentAngle) | ||||
|  | ||||
| plateBody = startSketchOn(XY) | ||||
|   // Use polar coordinates to start the sketch at the tangent point of the larger radius | ||||
|   |> startProfile(at = polar(angle = 90 - tangentAngle, length = r1)) | ||||
|   |> startProfile(at = polar(angle = 90deg - tangentAngle, length = r1)) | ||||
|   |> angledLine(angle = -tangentAngle, length = tangentLength) | ||||
|   |> tangentialArc(radius = r2, angle = (tangentAngle - 90) * 2) | ||||
|   |> tangentialArc(radius = r2, angle = (tangentAngle - 90deg) * 2) | ||||
|   |> angledLine(angle = tangentAngle, length = -tangentLength) | ||||
|   |> tangentialArc(radius = r1, angle = -tangentAngle * 2) | ||||
|   |> angledLine(angle = -tangentAngle, length = -tangentLength) | ||||
|   |> tangentialArc(radius = r2, angle = (tangentAngle - 90) * 2) | ||||
|   |> tangentialArc(radius = r2, angle = (tangentAngle - 90deg) * 2) | ||||
|   |> angledLine(angle = tangentAngle, length = tangentLength) | ||||
|   |> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)]) | ||||
|   |> close() | ||||
|  | ||||
| @ -11,8 +11,8 @@ import * from "parameters.kcl" | ||||
| // Bottom mounting face | ||||
| bottomFaceSketch = startSketchOn(YZ) | ||||
|   |> startProfile(at = [-fanSize / 2, -fanSize / 2]) | ||||
|   |> angledLine(angle = 0, length = fanSize, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001) + 90, length = fanSize, tag = $rectangleSegmentB001) | ||||
|   |> angledLine(angle = 0deg, length = fanSize, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001) + 90deg, length = fanSize, tag = $rectangleSegmentB001) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $rectangleSegmentC001) | ||||
|   |> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $rectangleSegmentD001) | ||||
|   |> close() | ||||
| @ -50,12 +50,12 @@ bottomFaceSketch = startSketchOn(YZ) | ||||
| // Add large openings to the bottom face to allow airflow through the fan | ||||
| airflowPattern = startSketchOn(bottomFaceSketch, face = END) | ||||
|   |> startProfile(at = [fanSize * 7 / 25, -fanSize * 9 / 25]) | ||||
|   |> angledLine(angle = 140, length = fanSize * 12 / 25, tag = $seg01) | ||||
|   |> tangentialArc(radius = fanSize * 1 / 50, angle = 90) | ||||
|   |> angledLine(angle = -130, length = fanSize * 8 / 25) | ||||
|   |> tangentialArc(radius = fanSize * 1 / 50, angle = 90) | ||||
|   |> angledLine(angle = segAng(seg01) + 180, length = fanSize * 2 / 25) | ||||
|   |> tangentialArc(radius = fanSize * 8 / 25, angle = 40) | ||||
|   |> angledLine(angle = 140deg, length = fanSize * 12 / 25, tag = $seg01) | ||||
|   |> tangentialArc(radius = fanSize * 1 / 50, angle = 90deg) | ||||
|   |> angledLine(angle = -130deg, length = fanSize * 8 / 25) | ||||
|   |> tangentialArc(radius = fanSize * 1 / 50, angle = 90deg) | ||||
|   |> angledLine(angle = segAng(seg01) + 180deg, length = fanSize * 2 / 25) | ||||
|   |> tangentialArc(radius = fanSize * 8 / 25, angle = 40deg) | ||||
|   |> xLine(length = fanSize * 3 / 25) | ||||
|   |> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)]) | ||||
|   |> close() | ||||
| @ -75,13 +75,13 @@ bodyMiddle = startSketchOn(bottomFaceSketch, face = END) | ||||
|        housingMiddleLength / 2, | ||||
|        -housingMiddleLength / 2 - housingMiddleRadius | ||||
|      ]) | ||||
|   |> tangentialArc(radius = housingMiddleRadius, angle = 90) | ||||
|   |> tangentialArc(radius = housingMiddleRadius, angle = 90deg) | ||||
|   |> yLine(length = housingMiddleLength) | ||||
|   |> tangentialArc(radius = housingMiddleRadius, angle = 90) | ||||
|   |> tangentialArc(radius = housingMiddleRadius, angle = 90deg) | ||||
|   |> xLine(length = -housingMiddleLength) | ||||
|   |> tangentialArc(radius = housingMiddleRadius, angle = 90) | ||||
|   |> tangentialArc(radius = housingMiddleRadius, angle = 90deg) | ||||
|   |> yLine(length = -housingMiddleLength) | ||||
|   |> tangentialArc(radius = housingMiddleRadius, angle = 90) | ||||
|   |> tangentialArc(radius = housingMiddleRadius, angle = 90deg) | ||||
|   |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) | ||||
|   |> extrude(length = fanHeight - 4 - 4) | ||||
|  | ||||
| @ -93,8 +93,8 @@ bodyFanHole = startSketchOn(bodyMiddle, face = END) | ||||
| // Top mounting face. Cut a hole in the face to accommodate the fan | ||||
| topFaceSketch = startSketchOn(bodyMiddle, face = END) | ||||
| topHoles = startProfile(topFaceSketch, at = [-fanSize / 2, -fanSize / 2]) | ||||
|   |> angledLine(angle = 0, length = fanSize, tag = $rectangleSegmentA002) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA002) + 90, length = fanSize, tag = $rectangleSegmentB002) | ||||
|   |> angledLine(angle = 0deg, length = fanSize, tag = $rectangleSegmentA002) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA002) + 90deg, length = fanSize, tag = $rectangleSegmentB002) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA002), length = -segLen(rectangleSegmentA002), tag = $rectangleSegmentC002) | ||||
|   |> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $rectangleSegmentD002) | ||||
|   |> close() | ||||
|  | ||||
| @ -20,32 +20,32 @@ fn fanBlade(offsetHeight, startAngle) { | ||||
|          15 * cos(startAngle), | ||||
|          15 * sin(startAngle) | ||||
|        ]) | ||||
|     |> arc(angleStart = startAngle, angleEnd = startAngle + 14, radius = 15) | ||||
|     |> arc(angleStart = startAngle, angleEnd = startAngle + 14deg, radius = 15) | ||||
|     |> arc( | ||||
|          endAbsolute = [ | ||||
|            fanSize * 22 / 50 * cos(startAngle - 20), | ||||
|            fanSize * 22 / 50 * sin(startAngle - 20) | ||||
|            fanSize * 22 / 50 * cos(startAngle - 20deg), | ||||
|            fanSize * 22 / 50 * sin(startAngle - 20deg) | ||||
|          ], | ||||
|          interiorAbsolute = [ | ||||
|            fanSize * 11 / 50 * cos(startAngle + 3), | ||||
|            fanSize * 11 / 50 * sin(startAngle + 3) | ||||
|            fanSize * 11 / 50 * cos(startAngle + 3deg), | ||||
|            fanSize * 11 / 50 * sin(startAngle + 3deg) | ||||
|          ], | ||||
|        ) | ||||
|     |> arc( | ||||
|          endAbsolute = [ | ||||
|            fanSize * 22 / 50 * cos(startAngle - 24), | ||||
|            fanSize * 22 / 50 * sin(startAngle - 24) | ||||
|            fanSize * 22 / 50 * cos(startAngle - 24deg), | ||||
|            fanSize * 22 / 50 * sin(startAngle - 24deg) | ||||
|          ], | ||||
|          interiorAbsolute = [ | ||||
|            fanSize * 22 / 50 * cos(startAngle - 22), | ||||
|            fanSize * 22 / 50 * sin(startAngle - 22) | ||||
|            fanSize * 22 / 50 * cos(startAngle - 22deg), | ||||
|            fanSize * 22 / 50 * sin(startAngle - 22deg) | ||||
|          ], | ||||
|        ) | ||||
|     |> arc( | ||||
|          endAbsolute = [profileStartX(%), profileStartY(%)], | ||||
|          interiorAbsolute = [ | ||||
|            fanSize * 11 / 50 * cos(startAngle - 5), | ||||
|            fanSize * 11 / 50 * sin(startAngle - 5) | ||||
|            fanSize * 11 / 50 * cos(startAngle - 5deg), | ||||
|            fanSize * 11 / 50 * sin(startAngle - 5deg) | ||||
|          ], | ||||
|        ) | ||||
|     |> close() | ||||
| @ -54,16 +54,16 @@ fn fanBlade(offsetHeight, startAngle) { | ||||
|  | ||||
| // Loft the fan blade cross sections into a single blade, then pattern them about the fan center | ||||
| crossSections = [ | ||||
|   fanBlade(offsetHeight = 4.5, startAngle = 50), | ||||
|   fanBlade(offsetHeight = (fanHeight - 2 - 4) / 2, startAngle = 30), | ||||
|   fanBlade(offsetHeight = fanHeight - 2, startAngle = 0) | ||||
|   fanBlade(offsetHeight = 4.5, startAngle = 50deg), | ||||
|   fanBlade(offsetHeight = (fanHeight - 2 - 4) / 2, startAngle = 30deg), | ||||
|   fanBlade(offsetHeight = fanHeight - 2, startAngle = 0deg) | ||||
| ] | ||||
| bladeLoft = loft(crossSections) | ||||
|   |> patternCircular3d( | ||||
|        instances = 9, | ||||
|        axis = [1, 0, 0], | ||||
|        center = [0, 0, 0], | ||||
|        arcDegrees = 360, | ||||
|        arcDegrees = 360deg, | ||||
|        rotateDuplicates = true, | ||||
|      ) | ||||
|  | ||||
|  | ||||
| @ -11,10 +11,10 @@ import * from "parameters.kcl" | ||||
| endTubePath = startSketchOn(offsetPlane(YZ, offset = -20)) | ||||
|   |> startProfile(at = [fanSize / 4, fanSize + 38]) | ||||
|   |> yLine(endAbsolute = bendRadius + 10, tag = $seg01) | ||||
|   |> tangentialArc(radius = bendRadius, angle = -90) | ||||
|   |> tangentialArc(radius = bendRadius, angle = -90deg) | ||||
|   |> xLine(endAbsolute = 0, tag = $seg02) | ||||
|   |> xLine(length = -segLen(seg02)) | ||||
|   |> tangentialArc(radius = bendRadius, angle = -90) | ||||
|   |> tangentialArc(radius = bendRadius, angle = -90deg) | ||||
|   |> yLine(length = segLen(seg01)) | ||||
|  | ||||
| // Sweep and translate the outermost tube on each end | ||||
| @ -27,7 +27,7 @@ endTube = startSketchOn(offsetPlane(XY, offset = fanSize + 38)) | ||||
|        instances = 2, | ||||
|        axis = [0, 0, 1], | ||||
|        center = [0, 0, 0], | ||||
|        arcDegrees = 360, | ||||
|        arcDegrees = 360deg, | ||||
|        rotateDuplicates = false, | ||||
|      ) | ||||
|  | ||||
| @ -35,13 +35,13 @@ endTube = startSketchOn(offsetPlane(XY, offset = fanSize + 38)) | ||||
| centerTubePath = startSketchOn(offsetPlane(YZ, offset = -4)) | ||||
|   |> startProfile(at = [fanSize / 2.67, fanSize + 38]) | ||||
|   |> yLine(endAbsolute = bendRadius + 15 + 10) | ||||
|   |> tangentialArc(radius = bendRadius, angle = -45) | ||||
|   |> angledLine(angle = -135, lengthY = 15) | ||||
|   |> tangentialArc(radius = bendRadius, angle = -45) | ||||
|   |> tangentialArc(radius = bendRadius, angle = -45deg) | ||||
|   |> angledLine(angle = -135deg, lengthY = 15) | ||||
|   |> tangentialArc(radius = bendRadius, angle = -45deg) | ||||
|   |> xLine(endAbsolute = 0, tag = $seg03) | ||||
|   |> xLine(length = -segLen(seg03)) | ||||
|   |> tangentialArc(radius = bendRadius, angle = -155) | ||||
|   |> tangentialArc(radius = bendRadius, angle = 65) | ||||
|   |> tangentialArc(radius = bendRadius, angle = -155deg) | ||||
|   |> tangentialArc(radius = bendRadius, angle = 65deg) | ||||
|   |> yLine(endAbsolute = fanSize + 38) | ||||
|  | ||||
| // Draw the profile and sweep the 4 interior tubes | ||||
| @ -68,13 +68,13 @@ centerTube = startSketchOn(offsetPlane(XY, offset = fanSize + 38)) | ||||
| heatFins = startSketchOn(offsetPlane(XY, offset = 45)) | ||||
|   |> startProfile(at = [0, -fanSize / 2]) | ||||
|   |> xLine(length = 9) | ||||
|   |> angledLine(angle = -60, length = 2.5, tag = $seg04) | ||||
|   |> angledLine(angle = -60deg, length = 2.5, tag = $seg04) | ||||
|   |> xLine(length = 0.75) | ||||
|   |> arc(interiorAbsolute = [lastSegX(%) + 1, lastSegY(%) + 1.2], endAbsolute = [lastSegX(%) + 2, lastSegY(%)]) | ||||
|   |> xLine(length = 0.75) | ||||
|   |> angledLine(angle = 60, length = segLen(seg04)) | ||||
|   |> angledLine(angle = 60deg, length = segLen(seg04)) | ||||
|   |> xLine(endAbsolute = heatSinkDepth / 2 - 3) | ||||
|   |> tangentialArc(angle = 90, radius = 3) | ||||
|   |> tangentialArc(angle = 90deg, radius = 3) | ||||
|   |> yLine(endAbsolute = 0) | ||||
|   |> mirror2d(axis = X) | ||||
|   |> mirror2d(axis = Y) | ||||
| @ -91,11 +91,11 @@ heatFins = startSketchOn(offsetPlane(XY, offset = 45)) | ||||
| coolerBase = startSketchOn(-XZ) | ||||
| baseLower = startProfile(coolerBase, at = [0, 10]) | ||||
|   |> xLine(length = -0.9) | ||||
|   |> arc(angleStart = 0, angleEnd = -180, radius = 3.1) | ||||
|   |> arc(angleStart = 0deg, angleEnd = -180deg, radius = 3.1) | ||||
|   |> xLine(length = -1.8) | ||||
|   |> arc(angleStart = 0, angleEnd = -180, radius = 3) | ||||
|   |> arc(angleStart = 0deg, angleEnd = -180deg, radius = 3) | ||||
|   |> xLine(length = -1.8) | ||||
|   |> arc(angleStart = 0, angleEnd = -180, radius = 3) | ||||
|   |> arc(angleStart = 0deg, angleEnd = -180deg, radius = 3) | ||||
|   |> xLine(length = -1.8) | ||||
|   |> xLine(length = -2) | ||||
|   |> yLine(length = -10) | ||||
| @ -105,15 +105,15 @@ baseLower = startProfile(coolerBase, at = [0, 10]) | ||||
|  | ||||
| baseUpper = startProfile(coolerBase, at = [0, 10]) | ||||
|   |> xLine(length = -0.9) | ||||
|   |> arc(angleStart = 0, angleEnd = 180, radius = 3.1) | ||||
|   |> arc(angleStart = 0deg, angleEnd = 180deg, radius = 3.1) | ||||
|   |> xLine(length = -1.8) | ||||
|   |> arc(angleStart = 0, angleEnd = 180, radius = 3) | ||||
|   |> arc(angleStart = 0deg, angleEnd = 180deg, radius = 3) | ||||
|   |> xLine(length = -1.8) | ||||
|   |> arc(angleStart = 0, angleEnd = 180, radius = 3) | ||||
|   |> arc(angleStart = 0deg, angleEnd = 180deg, radius = 3) | ||||
|   |> xLine(length = -1.8) | ||||
|   |> xLine(length = -1) | ||||
|   |> yLine(length = 4) | ||||
|   |> tangentialArc(angle = -90, radius = 2) | ||||
|   |> tangentialArc(angle = -90deg, radius = 2) | ||||
|   |> xLine(endAbsolute = 0) | ||||
|   |> mirror2d(axis = Y) | ||||
|   |> extrude(length = 2 * segLen(seg02) * 3 / 4, symmetric = true) | ||||
| @ -122,15 +122,15 @@ baseUpper = startProfile(coolerBase, at = [0, 10]) | ||||
| mountingBracket = startSketchOn(XZ) | ||||
|   |> startProfile(at = [-10, 16]) | ||||
|   |> xLine(length = -20) | ||||
|   |> tangentialArc(angle = 20, radius = bendRadius) | ||||
|   |> angledLine(angle = -160, length = 14, tag = $seg09) | ||||
|   |> tangentialArc(angle = -30, radius = bendRadius + sheetThickness) | ||||
|   |> angledLine(angle = 170, length = 21.5, tag = $seg04Q) | ||||
|   |> angledLine(angle = 170 - 90, length = sheetThickness, tag = $seg08) | ||||
|   |> angledLine(angle = segAng(seg04Q) + 180, length = segLen(seg04Q), tag = $seg05E) | ||||
|   |> tangentialArc(angle = 30, radius = bendRadius) | ||||
|   |> angledLine(angle = segAng(seg09) + 180, length = segLen(seg09)) | ||||
|   |> tangentialArc(angle = -20, radius = bendRadius + sheetThickness) | ||||
|   |> tangentialArc(angle = 20deg, radius = bendRadius) | ||||
|   |> angledLine(angle = -160deg, length = 14, tag = $seg09) | ||||
|   |> tangentialArc(angle = -30deg, radius = bendRadius + sheetThickness) | ||||
|   |> angledLine(angle = 170deg, length = 21.5, tag = $seg04Q) | ||||
|   |> angledLine(angle = 170deg - 90deg, length = sheetThickness, tag = $seg08) | ||||
|   |> angledLine(angle = segAng(seg04Q) + 180deg, length = segLen(seg04Q), tag = $seg05E) | ||||
|   |> tangentialArc(angle = 30deg, radius = bendRadius) | ||||
|   |> angledLine(angle = segAng(seg09) + 180deg, length = segLen(seg09)) | ||||
|   |> tangentialArc(angle = -20deg, radius = bendRadius + sheetThickness) | ||||
|   |> xLine(endAbsolute = profileStartX(%)) | ||||
|   |> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $seg07) | ||||
|   |> close() | ||||
| @ -166,6 +166,6 @@ thruHole = startSketchOn(mountingBracket, face = seg05E) | ||||
|        instances = 2, | ||||
|        axis = [0, 0, 1], | ||||
|        center = [0, 0, 0], | ||||
|        arcDegrees = 360, | ||||
|        arcDegrees = 360deg, | ||||
|        rotateDuplicates = true, | ||||
|      ) | ||||
|  | ||||
| @ -37,7 +37,7 @@ mountingWire | ||||
|        instances = 2, | ||||
|        axis = [0, 1, 0], | ||||
|        center = [0, 0, 40 + fanSize / 2], | ||||
|        arcDegrees = 360, | ||||
|        arcDegrees = 360deg, | ||||
|        rotateDuplicates = true, | ||||
|      ) | ||||
|   |> patternCircular3d( | ||||
| @ -45,7 +45,7 @@ mountingWire | ||||
|        instances = 2, | ||||
|        axis = [0, 0, 1], | ||||
|        center = [0, 0, 0], | ||||
|        arcDegrees = 360, | ||||
|        arcDegrees = 360deg, | ||||
|        rotateDuplicates = true, | ||||
|      ) | ||||
| removableSticker | ||||
|  | ||||
| @ -11,29 +11,29 @@ import * from "parameters.kcl" | ||||
| upperArm = startSketchOn(offsetPlane(XZ, offset = fanSize / 2 + 2)) | ||||
|   |> startProfile(at = [-12, 40 + fanSize / 2]) | ||||
|   |> yLine(length = 7) | ||||
|   |> tangentialArc(radius = 2, angle = 90) | ||||
|   |> tangentialArc(radius = 2, angle = 90deg) | ||||
|   |> xLine(length = -9) | ||||
|   |> tangentialArc(radius = 2, angle = -90) | ||||
|   |> tangentialArc(radius = 2, angle = -90deg) | ||||
|   |> yLine(length = 14) | ||||
|   |> tangentialArc(radius = 2, angle = 90) | ||||
|   |> tangentialArc(radius = 2, angle = 90deg) | ||||
|   |> xLine(length = -9) | ||||
|   |> tangentialArc(radius = 2, angle = -80) | ||||
|   |> angledLine(angle = 100, endAbsoluteY = 40 + fanSize / 2 + mountingHoleSpacing / 2 - 1.5) | ||||
|   |> tangentialArc(radius = 2, angle = 80, tag = $seg07) | ||||
|   |> tangentialArc(radius = 2, angle = -80deg) | ||||
|   |> angledLine(angle = 100deg, endAbsoluteY = 40 + fanSize / 2 + mountingHoleSpacing / 2 - 1.5) | ||||
|   |> tangentialArc(radius = 2, angle = 80deg, tag = $seg07) | ||||
|  | ||||
| // Draw the XZ component of the mounting wire path | ||||
| lowerArm = startSketchOn(offsetPlane(XZ, offset = fanSize / 2 + 2)) | ||||
|   |> startProfile(at = [-12, 40 + fanSize / 2]) | ||||
|   |> yLine(length = -7) | ||||
|   |> tangentialArc(radius = 2, angle = -90) | ||||
|   |> tangentialArc(radius = 2, angle = -90deg) | ||||
|   |> xLine(length = -9) | ||||
|   |> tangentialArc(radius = 2, angle = 90) | ||||
|   |> tangentialArc(radius = 2, angle = 90deg) | ||||
|   |> yLine(length = -14) | ||||
|   |> tangentialArc(radius = 2, angle = -90) | ||||
|   |> tangentialArc(radius = 2, angle = -90deg) | ||||
|   |> xLine(length = -9) | ||||
|   |> tangentialArc(radius = 2, angle = 80) | ||||
|   |> angledLine(angle = -100, endAbsoluteY = 40 + fanSize / 2 - (mountingHoleSpacing / 2) + 1.5) | ||||
|   |> tangentialArc(radius = 2, angle = -80, tag = $seg08) | ||||
|   |> tangentialArc(radius = 2, angle = 80deg) | ||||
|   |> angledLine(angle = -100deg, endAbsoluteY = 40 + fanSize / 2 - (mountingHoleSpacing / 2) + 1.5) | ||||
|   |> tangentialArc(radius = 2, angle = -80deg, tag = $seg08) | ||||
|  | ||||
| // Create the profile of the mounting wire and sweep along the XZ path | ||||
| wireProfile = startSketchOn(offsetPlane(XY, offset = 40 + fanSize / 2)) | ||||
| @ -47,18 +47,18 @@ sweepLowerArm = circle(wireProfile, center = [-12, -fanSize / 2 - 2], radius = 1 | ||||
| upperHook = startSketchOn(offsetPlane(XY, offset = segEndY(seg07))) | ||||
|   |> startProfile(at = [segEndX(seg07), -fanSize / 2 - 2]) | ||||
|   |> xLine(endAbsolute = -heatSinkDepth / 2 - fanHeight) | ||||
|   |> tangentialArc(radius = 2, angle = -90) | ||||
|   |> tangentialArc(radius = 2, angle = -90deg) | ||||
|   |> yLine(endAbsolute = -mountingHoleSpacing / 2 - 2) | ||||
|   |> tangentialArc(radius = 2, angle = -90) | ||||
|   |> tangentialArc(radius = 2, angle = -90deg) | ||||
|   |> xLine(length = fanHeight / 3) | ||||
|  | ||||
| // Draw the XY components of the mounting wire path | ||||
| lowerHook = startSketchOn(offsetPlane(XY, offset = segEndY(seg08))) | ||||
|   |> startProfile(at = [segEndX(seg07), -fanSize / 2 - 2]) | ||||
|   |> xLine(endAbsolute = -heatSinkDepth / 2 - fanHeight) | ||||
|   |> tangentialArc(radius = 2, angle = -90) | ||||
|   |> tangentialArc(radius = 2, angle = -90deg) | ||||
|   |> yLine(endAbsolute = -mountingHoleSpacing / 2 - 2) | ||||
|   |> tangentialArc(radius = 2, angle = -90) | ||||
|   |> tangentialArc(radius = 2, angle = -90deg) | ||||
|   |> xLine(length = fanHeight / 3) | ||||
|  | ||||
| // Sweep the wire profile around the hook-shaped segments of the mounting wire | ||||
|  | ||||
| @ -7,8 +7,8 @@ | ||||
| // Create a simple body to represent the removable warning sticker. Brightly color the sticker so that the user will not forget to remove it before installing the device | ||||
| removableSticker = startSketchOn(-XY) | ||||
|   |> startProfile(at = [-12, -12]) | ||||
|   |> angledLine(angle = 0, length = 24, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001) + 90, length = 24, tag = $rectangleSegmentB001) | ||||
|   |> angledLine(angle = 0deg, length = 24, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001) + 90deg, length = 24, tag = $rectangleSegmentB001) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $rectangleSegmentC001) | ||||
|   |> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $rectangleSegmentD001) | ||||
|   |> close() | ||||
|  | ||||
| @ -8,17 +8,17 @@ | ||||
| fn cycloidalGear(gearPitch, gearHeight, holeDiameter, helixAngle: number(deg)) { | ||||
|   // Create a function to draw the gear profile as a sketch. Rotate each profile about the gear's axis by an helix angle proportional to the total gear height | ||||
|   fn gearSketch(@gHeight) { | ||||
|     helixAngleP = helixAngle * gHeight / gearHeight | ||||
|     helixAngleP = (helixAngle * gHeight / gearHeight): number(deg) | ||||
|     gearProfile = startSketchOn(offsetPlane(XY, offset = gHeight)) | ||||
|       |> startProfile(at = [ | ||||
|            gearPitch * 1.55 * cos(helixAngleP) + gearPitch * sin(-helixAngleP), | ||||
|            gearPitch * 1.55 * sin(helixAngleP) + gearPitch * cos(-helixAngleP) | ||||
|          ]) | ||||
|       |> arc(angleStart = 90 + helixAngleP, angleEnd = -90 + helixAngleP, radius = gearPitch) | ||||
|       |> tangentialArc(radius = gearPitch * 1.67, angle = 60) | ||||
|       |> tangentialArc(radius = gearPitch, angle = -180) | ||||
|       |> tangentialArc(radius = gearPitch * 1.67, angle = 60) | ||||
|       |> tangentialArc(radius = gearPitch, angle = -180) | ||||
|       |> arc(angleStart = 90deg + helixAngleP, angleEnd = -90deg + helixAngleP, radius = gearPitch) | ||||
|       |> tangentialArc(radius = gearPitch * 1.67, angle = 60deg) | ||||
|       |> tangentialArc(radius = gearPitch, angle = -180deg) | ||||
|       |> tangentialArc(radius = gearPitch * 1.67, angle = 60deg) | ||||
|       |> tangentialArc(radius = gearPitch, angle = -180deg) | ||||
|       |> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)]) | ||||
|       |> close(%) | ||||
|       |> subtract2d(tool = circle(center = [0, 0], radius = holeDiameter / 2)) | ||||
| @ -40,5 +40,5 @@ cycloidalGear( | ||||
|   gearPitch = .3, | ||||
|   gearHeight = 1.5, | ||||
|   holeDiameter = 0.297, | ||||
|   helixAngle = -80, | ||||
|   helixAngle = -80deg, | ||||
| ) | ||||
|  | ||||
| @ -5,7 +5,7 @@ | ||||
| @settings(defaultLengthUnit = in, kclVersion = 1.0) | ||||
|  | ||||
| // Define the dihedral angle for a regular dodecahedron | ||||
| dihedral = 116.565 | ||||
| dihedral = 116.565deg | ||||
|  | ||||
| // Create a face template function that makes a large thin cube | ||||
| fn createFaceTemplate(@dither) { | ||||
| @ -22,29 +22,29 @@ fn createFaceTemplate(@dither) { | ||||
|  | ||||
| // Define the rotations array with [pitch, roll, yaw, dither] for each face | ||||
| faceRotations = [ | ||||
|   [0, 0, 0, 0], | ||||
|   [0deg, 0deg, 0deg, 0], | ||||
|   // face1 - reference face | ||||
|   [dihedral, 0, 0, 0.1], | ||||
|   [dihedral, 0deg, 0deg, 0.1], | ||||
|   // face2 | ||||
|   [dihedral, 0, 72, 0.2], | ||||
|   [dihedral, 0deg, 72deg, 0.2], | ||||
|   // face3 | ||||
|   [dihedral, 0, 144, 0.3], | ||||
|   [dihedral, 0deg, 144deg, 0.3], | ||||
|   // face4 | ||||
|   [dihedral, 0, 216, 0.4], | ||||
|   [dihedral, 0deg, 216deg, 0.4], | ||||
|   // face5 | ||||
|   [dihedral, 0, 288, 0.5], | ||||
|   [dihedral, 0deg, 288deg, 0.5], | ||||
|   // face6 | ||||
|   [180, 0, 0, 0.6], | ||||
|   [180deg, 0deg, 0deg, 0.6], | ||||
|   // face7 | ||||
|   [180 - dihedral, 0, 36, 0.7], | ||||
|   [180deg - dihedral, 0deg, 36deg, 0.7], | ||||
|   // face8 | ||||
|   [180 - dihedral, 0, 108, 0.8], | ||||
|   [180deg - dihedral, 0deg, 108deg, 0.8], | ||||
|   // face9 | ||||
|   [180 - dihedral, 0, 180, 0.9], | ||||
|   [180deg - dihedral, 0deg, 180deg, 0.9], | ||||
|   // face10 | ||||
|   [180 - dihedral, 0, 252, 0.11], | ||||
|   [180deg - dihedral, 0deg, 252deg, 0.11], | ||||
|   // face11 | ||||
|   [180 - dihedral, 0, 324, 0.12], | ||||
|   [180deg - dihedral, 0deg, 324deg, 0.12], | ||||
|   // face12 | ||||
| ] | ||||
|  | ||||
|  | ||||
| @ -14,8 +14,8 @@ holeDia = 4 | ||||
| // Model a box with base enclosure dimensions | ||||
| sketch001 = startSketchOn(XY) | ||||
|   |> startProfile(at = [0, 0]) | ||||
|   |> angledLine(angle = 0, length = width, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001) + 90, length, tag = $rectangleSegmentB001) | ||||
|   |> angledLine(angle = 0deg, length = width, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001) + 90deg, length, tag = $rectangleSegmentB001) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $rectangleSegmentC001) | ||||
|   |> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $rectangleSegmentD001) | ||||
|   |> close() | ||||
| @ -73,8 +73,8 @@ function001([ | ||||
| // Define lid position and outer surface | ||||
| sketch003 = startSketchOn(XY) | ||||
|   |> startProfile(at = [width * 1.2, 0]) | ||||
|   |> angledLine(angle = 0, length = width, tag = $rectangleSegmentA002) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001) + 90, length, tag = $rectangleSegmentB002) | ||||
|   |> angledLine(angle = 0deg, length = width, tag = $rectangleSegmentA002) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001) + 90deg, length, tag = $rectangleSegmentB002) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $rectangleSegmentC002) | ||||
|   |> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $rectangleSegmentD002) | ||||
|   |> close() | ||||
| @ -123,8 +123,8 @@ sketch004 = startSketchOn(extrude003, face = END) | ||||
|        width * 1.2 + wallThickness, | ||||
|        wallThickness | ||||
|      ]) | ||||
|   |> angledLine(angle = 0, length = width - (2 * wallThickness), tag = $rectangleSegmentA003) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA003) + 90, length = length - (2 * wallThickness), tag = $rectangleSegmentB003) | ||||
|   |> angledLine(angle = 0deg, length = width - (2 * wallThickness), tag = $rectangleSegmentA003) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA003) + 90deg, length = length - (2 * wallThickness), tag = $rectangleSegmentB003) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA003), length = -segLen(rectangleSegmentA003), tag = $rectangleSegmentC003) | ||||
|   |> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $rectangleSegmentD003) | ||||
|   |> close() | ||||
|  | ||||
| @ -27,9 +27,9 @@ fn primaryTube(n, angle001, length001, length002, length003) { | ||||
|   sweepPath = startSketchOn(sweepPlane) | ||||
|     |> startProfile(at = [0, plateHeight]) | ||||
|     |> line(end = [0, length001]) | ||||
|     |> tangentialArc(angle = -80, radius = bendRadius, tag = $arc01) | ||||
|     |> tangentialArc(angle = -80deg, radius = bendRadius, tag = $arc01) | ||||
|     |> angledLine(angle = tangentToEnd(arc01), length = length002) | ||||
|     |> tangentialArc(angle = 85, radius = bendRadius, tag = $arc02) | ||||
|     |> tangentialArc(angle = 85deg, radius = bendRadius, tag = $arc02) | ||||
|     |> angledLine(angle = tangentToEnd(arc02), length = length003) | ||||
|  | ||||
|   // Create the cross section of each tube and sweep them | ||||
| @ -44,28 +44,28 @@ fn primaryTube(n, angle001, length001, length002, length003) { | ||||
| // Draw a primary tube for each cylinder with specified lengths and angles | ||||
| primaryTube( | ||||
|   n = 0, | ||||
|   angle001 = 0, | ||||
|   angle001 = 0deg, | ||||
|   length001 = 3, | ||||
|   length002 = 6, | ||||
|   length003 = 5, | ||||
| ) | ||||
| primaryTube( | ||||
|   n = 1, | ||||
|   angle001 = 1, | ||||
|   angle001 = 1deg, | ||||
|   length001 = 3, | ||||
|   length002 = 6, | ||||
|   length003 = 5, | ||||
| ) | ||||
| primaryTube( | ||||
|   n = 2, | ||||
|   angle001 = 24.3, | ||||
|   angle001 = 24.3deg, | ||||
|   length001 = 5, | ||||
|   length002 = 5, | ||||
|   length003 = 3, | ||||
| ) | ||||
| primaryTube( | ||||
|   n = 3, | ||||
|   angle001 = 25.2, | ||||
|   angle001 = 25.2deg, | ||||
|   length001 = 5, | ||||
|   length002 = 5, | ||||
|   length003 = 3, | ||||
| @ -75,20 +75,20 @@ primaryTube( | ||||
| flangeSketch = startSketchOn(XY) | ||||
|   |> startProfile(at = [3 + 1.3, -1.25]) | ||||
|   |> xLine(length = -2.6, tag = $seg01) | ||||
|   |> tangentialArc(radius = .3, angle = -40) | ||||
|   |> tangentialArc(radius = .9, angle = 80) | ||||
|   |> tangentialArc(radius = .3, angle = -40) | ||||
|   |> tangentialArc(radius = .3, angle = -40deg) | ||||
|   |> tangentialArc(radius = .9, angle = 80deg) | ||||
|   |> tangentialArc(radius = .3, angle = -40deg) | ||||
|   |> xLine(length = -1.4, tag = $seg03) | ||||
|   |> yLine(length = segLen(seg01), tag = $seg04) | ||||
|   |> xLine(length = 3.1, tag = $seg05) | ||||
|   |> tangentialArc(radius = .3, angle = -40) | ||||
|   |> tangentialArc(radius = 1.5, angle = 80) | ||||
|   |> tangentialArc(radius = .3, angle = -40) | ||||
|   |> tangentialArc(radius = .3, angle = -40deg) | ||||
|   |> tangentialArc(radius = 1.5, angle = 80deg) | ||||
|   |> tangentialArc(radius = .3, angle = -40deg) | ||||
|   |> xLine(length = segLen(seg05), tag = $seg07) | ||||
|   |> yLine(endAbsolute = profileStartY(%), tag = $seg08) | ||||
|   |> xLine(length = -segLen(seg03), tag = $seg09) | ||||
|   |> tangentialArc(radius = .3, angle = -40) | ||||
|   |> tangentialArc(radius = .9, angle = 80) | ||||
|   |> tangentialArc(radius = .3, angle = -40deg) | ||||
|   |> tangentialArc(radius = .9, angle = 80deg) | ||||
|   |> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)]) | ||||
|   |> close() | ||||
|  | ||||
|  | ||||
| @ -24,7 +24,7 @@ assert(nHoles, isGreaterThan = 1, error = "nHoles must be greater than 1") | ||||
| circles = startSketchOn(XY) | ||||
|   |> circle(center = [mountingHolePlacementDiameter / 2, 0], radius = mountingHoleDia / 2) | ||||
|   |> patternCircular2d( | ||||
|        arcDegrees = 360, | ||||
|        arcDegrees = 360deg, | ||||
|        center = [0, 0], | ||||
|        instances = nHoles, | ||||
|        rotateDuplicates = true, | ||||
|  | ||||
| @ -20,23 +20,23 @@ gripSlotWidth = 8.0 | ||||
| fn slot(sketch1, start, end, width) { | ||||
|   angle = if start[0] == end[0] { | ||||
|     if end[1] > start[1] { | ||||
|       90 | ||||
|       90deg | ||||
|     } else { | ||||
|       270 | ||||
|       270deg | ||||
|     } | ||||
|   } else { | ||||
|     if end[0] < start[0] { | ||||
|       units::toDegrees(atan((end[1] - start[1]) / (end[0] - start[0]))) + 180 | ||||
|       units::toDegrees(atan((end[1] - start[1]) / (end[0] - start[0]))) + 180deg | ||||
|     } else { | ||||
|       units::toDegrees(atan((end[1] - start[1]) / (end[0] - start[0]))) | ||||
|     } | ||||
|   } | ||||
|   dist = sqrt(pow(end[1] - start[1], exp = 2) + pow(end[0] - start[0], exp = 2)) | ||||
|   xstart = width / 2 * cos(angle - 90) + start[0] | ||||
|   ystart = width / 2 * sin(angle - 90) + start[1] | ||||
|   xstart = width / 2 * cos(angle - 90deg) + start[0] | ||||
|   ystart = width / 2 * sin(angle - 90deg) + start[1] | ||||
|   slotSketch = startProfile(sketch1, at = [xstart, ystart]) | ||||
|     |> angledLine(angle = angle, length = dist) | ||||
|     |> tangentialArc(radius = width / 2, angle = 180) | ||||
|     |> tangentialArc(radius = width / 2, angle = 180deg) | ||||
|     |> angledLine(angle = angle, length = -dist) | ||||
|     |> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)]) | ||||
|     |> close() | ||||
| @ -51,7 +51,7 @@ flipperProfile = startProfile(flipperSketch, at = [-flipperLength, -32.0]) | ||||
|   |> line(end = [flipperLength, 2.0]) | ||||
|   |> yLine(length = 60.0, tag = $backEdge) | ||||
|   |> line(end = [-flipperLength, 2.0]) | ||||
|   |> arc(angleStart = 163.087610, angleEnd = 196.912390, radius = 110.0) | ||||
|   |> arc(angleStart = 163.087610deg, angleEnd = 196.912390deg, radius = 110.0) | ||||
|   |> close() | ||||
|  | ||||
| // Create a profile of the middle | ||||
| @ -137,13 +137,13 @@ gripSketch = startSketchOn(handlePlane) | ||||
| // Create a profile of the grip | ||||
| gripProfile = startProfile(gripSketch, at = [-26.806746, -10.0]) | ||||
|   |> xLine(length = gripWidth - (2 * gripFilletRadius)) | ||||
|   |> arc(angleStart = -90.0, angleEnd = 0.0, radius = gripFilletRadius) | ||||
|   |> arc(angleStart = -90.0deg, angleEnd = 0.0deg, radius = gripFilletRadius) | ||||
|   |> yLine(length = gripHeight - (2 * gripFilletRadius)) | ||||
|   |> arc(angleStart = 0.0, angleEnd = 90.0, radius = gripFilletRadius) | ||||
|   |> arc(angleStart = 0.0deg, angleEnd = 90.0deg, radius = gripFilletRadius) | ||||
|   |> xLine(length = -(gripWidth - (2 * gripFilletRadius))) | ||||
|   |> arc(angleStart = 90.0, angleEnd = 180.0, radius = gripFilletRadius) | ||||
|   |> arc(angleStart = 90.0deg, angleEnd = 180.0deg, radius = gripFilletRadius) | ||||
|   |> yLine(length = -(gripHeight - (2 * gripFilletRadius)), tag = $gripEdgeTop) | ||||
|   |> arc(angleStart = 180.0, angleEnd = 270.0, radius = gripFilletRadius) | ||||
|   |> arc(angleStart = 180.0deg, angleEnd = 270.0deg, radius = gripFilletRadius) | ||||
|   |> close() | ||||
|  | ||||
| // Extrude the grip profile to create the grip | ||||
|  | ||||
| @ -12,12 +12,12 @@ handleThickness = 0.65 | ||||
| // Upper ring of the metal structure | ||||
| sketch001 = startSketchOn(XZ) | ||||
|   |> startProfile(at = [carafeDiameter / 2, 5.7]) | ||||
|   |> angledLine(angle = 0, length = 0.1, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = 0deg, length = 0.1, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = -0.75, tag = $rectangleSegmentB001) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $rectangleSegmentC001) | ||||
|   |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) | ||||
|   |> close() | ||||
|   |> revolve(angle = 360, axis = Y) | ||||
|   |> revolve(angle = 360deg, axis = Y) | ||||
|  | ||||
| // Create an angled plane to sketch the supports | ||||
| plane001 = { | ||||
| @ -35,13 +35,13 @@ sketch002 = startSketchOn(plane001) | ||||
|   |> arc(angleStart = 180, angleEnd = 205, radius = 0.3) | ||||
|   |> angledLine(angle = -60, length = 0.6, tag = $edge2) | ||||
|   |> arc(angleStart = 30, angleEnd = -120, radius = 0.6) | ||||
|   |> angledLine(angle = 150, endAbsoluteY = -0.2, tag = $edge3) | ||||
|   |> angledLine(angle = 150deg, endAbsoluteY = -0.2, tag = $edge3) | ||||
|   |> arc(angleStart = 60, angleEnd = 90, radius = 0.5) | ||||
|   |> xLine(endAbsolute = 0.1, tag = $edgeLen) | ||||
|   |> yLine(length = 0.1) | ||||
|   |> xLine(length = segLen(edgeLen) + 0.035, tag = $edge4) | ||||
|   |> arc(angleStart = 90, angleEnd = 60, radius = 0.6) | ||||
|   |> angledLine(angle = 150, length = -segLen(edge3) + 0.035, tag = $edge5) | ||||
|   |> angledLine(angle = 150deg, length = -segLen(edge3) + 0.035, tag = $edge5) | ||||
|   |> arc(angleStart = -120, angleEnd = 30, radius = 0.5) | ||||
|   |> angledLine(angle = -60, length = -segLen(edge2) + 0.035, tag = $edge6) | ||||
|   |> arc(angleStart = 205, angleEnd = 180, radius = 0.6) | ||||
| @ -81,9 +81,9 @@ extrude002 = extrude(sketch004, length = -0.050) | ||||
| sketch005 = startSketchOn(XZ) | ||||
|   |> startProfile(at = [0.15, 1.11]) | ||||
|   |> xLine(endAbsolute = carafeDiameter / 2 - 0.2) | ||||
|   |> angledLine(angle = 30, endAbsoluteX = carafeDiameter / 2 - 0.07, tag = $seg1) | ||||
|   |> angledLine(angle = 30deg, endAbsoluteX = carafeDiameter / 2 - 0.07, tag = $seg1) | ||||
|   |> angledLine(angle = -60, length = 0.050) | ||||
|   |> angledLine(angle = 30, length = -segLen(seg1)) | ||||
|   |> angledLine(angle = 30deg, length = -segLen(seg1)) | ||||
|   |> xLine(endAbsolute = 0.15) | ||||
|   |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) | ||||
|   |> close() | ||||
| @ -93,7 +93,7 @@ sketch005 = startSketchOn(XZ) | ||||
| sketch006 = startSketchOn(XZ) | ||||
|   |> startProfile(at = [0.1, 1]) | ||||
|   |> line(end = [0.1, 0]) | ||||
|   |> angledLine(angle = 10, endAbsoluteX = 0.05) | ||||
|   |> angledLine(angle = 10deg, endAbsoluteX = 0.05) | ||||
|   |> yLine(length = 10) | ||||
|   |> line(end = [0.6, 0]) | ||||
|   |> yLine(length = -.05) | ||||
|  | ||||
| @ -269,7 +269,7 @@ axis001 = { | ||||
| lipSingleLengthCorner = revolve(lipFace(plane000), angle = -90, axis = axis001) | ||||
|  | ||||
| // Create a single corner of the bin | ||||
| lipSingleWidthCorner = revolve(lipFace(plane002), angle = 90, axis = axis001) | ||||
| lipSingleWidthCorner = revolve(lipFace(plane002), angle = 90deg, axis = axis001) | ||||
|  | ||||
| // Create the corners of the bin | ||||
| lipCorners000 = patternCircular3d( | ||||
|  | ||||
| @ -10,16 +10,16 @@ headSideProfile = startSketchOn(XZ) | ||||
|   |> yLine(length = 0.1) | ||||
|   |> tangentialArc(endAbsolute = [0.95, 11.92]) | ||||
|   |> tangentialArc(endAbsolute = [2.72, 11.26], tag = $seg01) | ||||
|   |> angledLine(angle = tangentToEnd(seg01) + 90, length = .2) | ||||
|   |> angledLine(angle = tangentToEnd(seg01) - 10, length = -0.5) | ||||
|   |> angledLine(angle = tangentToEnd(seg01) + 90deg, length = .2) | ||||
|   |> angledLine(angle = tangentToEnd(seg01) - 10deg, length = -0.5) | ||||
|   |> tangentialArc(endAbsolute = [-0.91, 12.78], tag = $seg03) | ||||
|   |> tangentialArc(endAbsolute = [-1.67, 12.85]) | ||||
|   |> xLine(length = -.25) | ||||
|   |> tangentialArc(angle = 90, radius = .05) | ||||
|   |> tangentialArc(angle = 90deg, radius = .05) | ||||
|   |> yLine(length = -1.125, tag = $seg02) | ||||
|   |> tangentialArc(angle = 90, radius = .05) | ||||
|   |> tangentialArc(angle = 90deg, radius = .05) | ||||
|   |> xLine(length = .25, tag = $seg04) | ||||
|   |> angledLine(angle = 23, length = 0.1) | ||||
|   |> angledLine(angle = 23deg, length = 0.1) | ||||
|   |> tangentialArc(endAbsolute = [-0.33, profileStartY(%)]) | ||||
|   |> xLine(endAbsolute = profileStartX(%)) | ||||
|   |> close() | ||||
| @ -31,8 +31,8 @@ leftSideCut = startProfile(headTopProfile, at = [-4, -1.6]) | ||||
|   |> line(endAbsolute = [segEndX(seg02), -segLen(seg02) / 2]) | ||||
|   |> arc( | ||||
|        %, | ||||
|        angleStart = 180, | ||||
|        angleEnd = 270, | ||||
|        angleStart = 180deg, | ||||
|        angleEnd = 270deg, | ||||
|        radius = .05, | ||||
|      ) | ||||
|   |> xLine(endAbsolute = segEndX(seg04)) | ||||
| @ -44,7 +44,7 @@ leftSideCut = startProfile(headTopProfile, at = [-4, -1.6]) | ||||
|   |> extrude(length = -14) | ||||
|  | ||||
| rearCut = startProfile(headTopProfile, at = [3.39, -0.56]) | ||||
|   |> angledLine(angle = 177, length = 0.1) | ||||
|   |> angledLine(angle = 177deg, length = 0.1) | ||||
|   |> tangentialArc(endAbsolute = [1.86, -0.37]) | ||||
|   |> tangentialArc(endAbsolute = [lastSegX(%), -lastSegY(%)]) | ||||
|   |> tangentialArc(endAbsolute = [profileStartX(%), -profileStartY(%)]) | ||||
| @ -56,8 +56,8 @@ rightSideCut = startProfile(headTopProfile, at = [-4, 1.6]) | ||||
|   |> line(endAbsolute = [segEndX(seg02), segLen(seg02) / 2]) | ||||
|   |> arc( | ||||
|        %, | ||||
|        angleStart = -180, | ||||
|        angleEnd = -270, | ||||
|        angleStart = -180deg, | ||||
|        angleEnd = -270deg, | ||||
|        radius = .05, | ||||
|      ) | ||||
|   |> xLine(endAbsolute = segEndX(seg04)) | ||||
| @ -108,11 +108,11 @@ hammerHead = union([firstProfiles, baseSupport]) | ||||
| handleSketch = startSketchOn(XZ) | ||||
|   |> startProfile(at = [0.01, 0]) | ||||
|   |> xLine(length = 1.125 / 2) | ||||
|   |> tangentialArc(angle = 90, radius = 0.05) | ||||
|   |> tangentialArc(angle = 90deg, radius = 0.05) | ||||
|   |> tangentialArc(endAbsolute = [0.38, 12.8 / 1.612]) | ||||
|   |> tangentialArc(endAbsolute = [0.28, 12.8]) | ||||
|   |> xLine(endAbsolute = profileStartX(%)) | ||||
|   |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) | ||||
|   |> close() | ||||
| handle = revolve(handleSketch, angle = 360, axis = Y) | ||||
| handle = revolve(handleSketch, angle = 360deg, axis = Y) | ||||
|   |> appearance(color = "#f14f04") | ||||
|  | ||||
| @ -29,8 +29,8 @@ fn helicalGear(nTeeth, module, pressureAngle, helixAngle, gearHeight) { | ||||
|     |> xLine(length = keywayDepth) | ||||
|     |> yLine(length = -keywayWidth) | ||||
|     |> xLine(length = -keywayDepth) | ||||
|     |> arc(angleStart = -1 * startAngle + 360, angleEnd = 180, radius = holeRadius) | ||||
|     |> arc(angleStart = 180, angleEnd = startAngle, radius = holeRadius) | ||||
|     |> arc(angleStart = -1 * startAngle + 360deg, angleEnd = 180deg, radius = holeRadius) | ||||
|     |> arc(angleStart = 180deg, angleEnd = startAngle, radius = holeRadius) | ||||
|     |> close() | ||||
|  | ||||
|   // Define a function to create a rotated gear sketch on an offset plane | ||||
| @ -47,7 +47,7 @@ fn helicalGear(nTeeth, module, pressureAngle, helixAngle, gearHeight) { | ||||
|            angle = helixCalc, | ||||
|            tag = $seg01, | ||||
|          ) | ||||
|       |> line(endAbsolute = polar(angle = 160 / nTeeth + helixCalc, length = tipDiameter / 2)) | ||||
|       |> line(endAbsolute = polar(angle = 160deg / nTeeth + helixCalc, length = tipDiameter / 2)) | ||||
|       |> involuteCircular( | ||||
|            startRadius = baseDiameter / 2, | ||||
|            endRadius = tipDiameter / 2, | ||||
| @ -56,7 +56,7 @@ fn helicalGear(nTeeth, module, pressureAngle, helixAngle, gearHeight) { | ||||
|          ) | ||||
|  | ||||
|       // Position the end line of the sketch at the start of the next tooth | ||||
|       |> line(endAbsolute = polar(angle = 360 / nTeeth + helixCalc, length = baseDiameter / 2)) | ||||
|       |> line(endAbsolute = polar(angle = 360deg / nTeeth + helixCalc, length = baseDiameter / 2)) | ||||
|  | ||||
|       // Pattern the sketch about the center by the specified number of teeth, then close the sketch | ||||
|       |> patternCircular2d( | ||||
| @ -93,7 +93,7 @@ fn helicalGear(nTeeth, module, pressureAngle, helixAngle, gearHeight) { | ||||
| helicalGear( | ||||
|   nTeeth = 21, | ||||
|   module = 2, | ||||
|   pressureAngle = 20, | ||||
|   helixAngle = 35, | ||||
|   pressureAngle = 20deg, | ||||
|   helixAngle = 35deg, | ||||
|   gearHeight = 7, | ||||
| ) | ||||
|  | ||||
| @ -29,8 +29,8 @@ fn helicalGear(nTeeth, module, pressureAngle, helixAngle, gearHeight) { | ||||
|     |> xLine(length = keywayDepth) | ||||
|     |> yLine(length = -keywayWidth) | ||||
|     |> xLine(length = -keywayDepth) | ||||
|     |> arc(angleStart = -1 * startAngle + 360, angleEnd = 180, radius = holeRadius) | ||||
|     |> arc(angleStart = 180, angleEnd = startAngle, radius = holeRadius) | ||||
|     |> arc(angleStart = -1 * startAngle + 360deg, angleEnd = 180deg, radius = holeRadius) | ||||
|     |> arc(angleStart = 180deg, angleEnd = startAngle, radius = holeRadius) | ||||
|     |> close() | ||||
|  | ||||
|   // Define a function to create a rotated gear sketch on an offset plane | ||||
| @ -47,7 +47,7 @@ fn helicalGear(nTeeth, module, pressureAngle, helixAngle, gearHeight) { | ||||
|            angle = helixCalc, | ||||
|            tag = $seg01, | ||||
|          ) | ||||
|       |> line(endAbsolute = polar(angle = 160 / nTeeth + helixCalc, length = tipDiameter / 2)) | ||||
|       |> line(endAbsolute = polar(angle = 160deg / nTeeth + helixCalc, length = tipDiameter / 2)) | ||||
|       |> involuteCircular( | ||||
|            startRadius = baseDiameter / 2, | ||||
|            endRadius = tipDiameter / 2, | ||||
| @ -56,7 +56,7 @@ fn helicalGear(nTeeth, module, pressureAngle, helixAngle, gearHeight) { | ||||
|          ) | ||||
|  | ||||
|       // Position the end line of the sketch at the start of the next tooth | ||||
|       |> line(endAbsolute = polar(angle = 360 / nTeeth + helixCalc, length = baseDiameter / 2)) | ||||
|       |> line(endAbsolute = polar(angle = 360deg / nTeeth + helixCalc, length = baseDiameter / 2)) | ||||
|  | ||||
|       // Pattern the sketch about the center by the specified number of teeth, then close the sketch | ||||
|       |> patternCircular2d( | ||||
| @ -113,7 +113,7 @@ fn ringGear(nTeeth, module, pressureAngle, helixAngle, gearHeight) { | ||||
|            angle = helixCalc, | ||||
|            tag = $seg01, | ||||
|          ) | ||||
|       |> line(endAbsolute = polar(angle = 200 / nTeeth + helixCalc, length = tipDiameter / 2)) | ||||
|       |> line(endAbsolute = polar(angle = 200deg / nTeeth + helixCalc, length = tipDiameter / 2)) | ||||
|       |> involuteCircular( | ||||
|            startRadius = baseDiameter / 2, | ||||
|            endRadius = tipDiameter / 2, | ||||
| @ -122,7 +122,7 @@ fn ringGear(nTeeth, module, pressureAngle, helixAngle, gearHeight) { | ||||
|          ) | ||||
|  | ||||
|       // Position the end line of the sketch at the start of the next tooth | ||||
|       |> line(endAbsolute = polar(angle = 360 / nTeeth + helixCalc, length = baseDiameter / 2)) | ||||
|       |> line(endAbsolute = polar(angle = 360deg / nTeeth + helixCalc, length = baseDiameter / 2)) | ||||
|  | ||||
|       // Pattern the sketch about the center by the specified number of teeth, then close the sketch | ||||
|       |> patternCircular2d( | ||||
| @ -164,8 +164,8 @@ fn ringGear(nTeeth, module, pressureAngle, helixAngle, gearHeight) { | ||||
| ringGear( | ||||
|   nTeeth = 42, | ||||
|   module = 1.5, | ||||
|   pressureAngle = 14, | ||||
|   helixAngle = -25, | ||||
|   pressureAngle = 14deg, | ||||
|   helixAngle = -25deg, | ||||
|   gearHeight = 5, | ||||
| ) | ||||
|  | ||||
| @ -173,8 +173,8 @@ ringGear( | ||||
| helicalGear( | ||||
|   nTeeth = 12, | ||||
|   module = 1.5, | ||||
|   pressureAngle = 14, | ||||
|   helixAngle = 25, | ||||
|   pressureAngle = 14deg, | ||||
|   helixAngle = 25deg, | ||||
|   gearHeight = 5, | ||||
| ) | ||||
|  | ||||
| @ -183,8 +183,8 @@ numPlanetGears = 3 | ||||
| helicalGear( | ||||
|        nTeeth = 12, | ||||
|        module = 1.5, | ||||
|        pressureAngle = 14, | ||||
|        helixAngle = -25, | ||||
|        pressureAngle = 14deg, | ||||
|        helixAngle = -25deg, | ||||
|        gearHeight = 5, | ||||
|      ) | ||||
|   |> translate(y = (12 + 12) / 2 * 1.5 + 2.7) | ||||
| @ -192,6 +192,6 @@ helicalGear( | ||||
|        instances = numPlanetGears, | ||||
|        axis = [0, 0, 1], | ||||
|        center = [0, 0, 0], | ||||
|        arcDegrees = 360, | ||||
|        arcDegrees = 360deg, | ||||
|        rotateDuplicates = false, | ||||
|      ) | ||||
|  | ||||
| @ -17,26 +17,26 @@ tankSketch = startSketchOn(YZ) | ||||
|   |> startProfile(at = [portDiameter / 2, tankHeight]) | ||||
|   |> yLine(length = -0.6) | ||||
|   |> xLine(length = 0.1) | ||||
|   |> tangentialArc(angle = -110, radius = 0.1) | ||||
|   |> tangentialArc(angle = 40, radius = 0.6) | ||||
|   |> tangentialArc(angle = -110, radius = 0.1) | ||||
|   |> tangentialArc(angle = 180, radius = 0.1) | ||||
|   |> tangentialArc(angle = -90, radius = tankDiameter / 2 - lastSegX(%), tag = $seg01) | ||||
|   |> tangentialArc(angle = -110deg, radius = 0.1) | ||||
|   |> tangentialArc(angle = 40deg, radius = 0.6) | ||||
|   |> tangentialArc(angle = -110deg, radius = 0.1) | ||||
|   |> tangentialArc(angle = 180deg, radius = 0.1) | ||||
|   |> tangentialArc(angle = -90deg, radius = tankDiameter / 2 - lastSegX(%), tag = $seg01) | ||||
|   |> angledLine(angle = tangentToEnd(seg01), endAbsoluteY = 1.5, tag = $seg09) | ||||
|   |> tangentialArc(angle = -90, radius = 2, tag = $seg02) | ||||
|   |> tangentialArc(angle = -90deg, radius = 2, tag = $seg02) | ||||
|   |> angledLine(angle = tangentToEnd(seg02), endAbsoluteX = 0.001, tag = $seg08) | ||||
|   |> yLine(length = wallThickness) | ||||
|   |> xLine(length = segLen(seg08)) | ||||
|   |> tangentialArc(angle = 90, radius = 2 - wallThickness) | ||||
|   |> tangentialArc(angle = 90deg, radius = 2 - wallThickness) | ||||
|   |> yLine(length = segLen(seg09)) | ||||
|   |> tangentialArc(angle = 90, radius = tankDiameter / 2 - wallThickness - 1.3) | ||||
|   |> tangentialArc(angle = 90deg, radius = tankDiameter / 2 - wallThickness - 1.3) | ||||
|   |> xLine(endAbsolute = profileStartX(%) - .1) | ||||
|   |> yLine(endAbsolute = profileStartY(%)) | ||||
|   |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) | ||||
|   |> close() | ||||
|  | ||||
| // Only revolving to 220deg so that the interior of the tank is visible. It should ultimately be closed at 360deg | ||||
| tankRevolve = revolve(tankSketch, angle = 220, axis = Y) | ||||
| tankRevolve = revolve(tankSketch, angle = 220deg, axis = Y) | ||||
|  | ||||
| // Model the brass valve on top of the tank port | ||||
| valveBody = startSketchOn(offsetPlane(XY, offset = tankHeight - 0.5)) | ||||
| @ -61,10 +61,10 @@ valve = union([valveBody, valvePort]) | ||||
| bracketOffsetProfile = startSketchOn(offsetPlane(XY, offset = tankHeight * 0.67)) | ||||
|   |> startProfile(at = [0, tankDiameter / 2 + wallThickness]) | ||||
|   |> xLine(length = -0.1) | ||||
|   |> tangentialArc(angle = 35, radius = tankDiameter / 2 + wallThickness) | ||||
|   |> tangentialArc(angle = -135, radius = 0.25 - wallThickness, tag = $seg06) | ||||
|   |> tangentialArc(angle = 35deg, radius = tankDiameter / 2 + wallThickness) | ||||
|   |> tangentialArc(angle = -135deg, radius = 0.25 - wallThickness, tag = $seg06) | ||||
|   |> angledLine(angle = tangentToEnd(seg06), length = tankDiameter / 7) | ||||
|   |> tangentialArc(angle = -80, radius = 0.25 - wallThickness, tag = $seg07) | ||||
|   |> tangentialArc(angle = -80deg, radius = 0.25 - wallThickness, tag = $seg07) | ||||
|   |> angledLine(angle = tangentToEnd(seg07), endAbsoluteX = 0) | ||||
|   |> mirror2d(axis = Y) | ||||
|   |> close() | ||||
| @ -73,10 +73,10 @@ bracketOffsetProfile = startSketchOn(offsetPlane(XY, offset = tankHeight * 0.67) | ||||
| bracketProfile = startSketchOn(offsetPlane(XY, offset = tankHeight * 0.67)) | ||||
|   |> startProfile(at = [0, tankDiameter / 2]) | ||||
|   |> xLine(length = -0.1) | ||||
|   |> tangentialArc(angle = 35, radius = tankDiameter / 2) | ||||
|   |> tangentialArc(angle = -135, radius = 0.25, tag = $seg04) | ||||
|   |> tangentialArc(angle = 35deg, radius = tankDiameter / 2) | ||||
|   |> tangentialArc(angle = -135deg, radius = 0.25, tag = $seg04) | ||||
|   |> angledLine(angle = tangentToEnd(seg04), length = tankDiameter / 7) | ||||
|   |> tangentialArc(angle = -80, radius = 0.25, tag = $seg05) | ||||
|   |> tangentialArc(angle = -80deg, radius = 0.25, tag = $seg05) | ||||
|   |> angledLine(angle = tangentToEnd(seg05), endAbsoluteX = 0) | ||||
|   |> mirror2d(axis = Y) | ||||
|   |> close() | ||||
|  | ||||
| @ -27,7 +27,7 @@ fn herringboneGear(nTeeth, module, pressureAngle, helixAngle, gearHeight) { | ||||
|            angle = helixCalc, | ||||
|            tag = $seg01, | ||||
|          ) | ||||
|       |> line(endAbsolute = polar(angle = 160 / nTeeth + helixCalc, length = tipDiameter / 2)) | ||||
|       |> line(endAbsolute = polar(angle = 160deg / nTeeth + helixCalc, length = tipDiameter / 2)) | ||||
|       |> involuteCircular( | ||||
|            startRadius = baseDiameter / 2, | ||||
|            endRadius = tipDiameter / 2, | ||||
| @ -36,7 +36,7 @@ fn herringboneGear(nTeeth, module, pressureAngle, helixAngle, gearHeight) { | ||||
|          ) | ||||
|  | ||||
|       // Position the end line of the sketch at the start of the next tooth | ||||
|       |> line(endAbsolute = polar(angle = 360 / nTeeth + helixCalc, length = baseDiameter / 2)) | ||||
|       |> line(endAbsolute = polar(angle = 360deg / nTeeth + helixCalc, length = baseDiameter / 2)) | ||||
|  | ||||
|       // Pattern the sketch about the center by the specified number of teeth, then close the sketch | ||||
|       |> patternCircular2d( | ||||
|  | ||||
| @ -27,7 +27,7 @@ fn herringboneGear(nTeeth, module, pressureAngle, helixAngle, gearHeight) { | ||||
|            angle = helixCalc, | ||||
|            tag = $seg01, | ||||
|          ) | ||||
|       |> line(endAbsolute = polar(angle = 160 / nTeeth + helixCalc, length = tipDiameter / 2)) | ||||
|       |> line(endAbsolute = polar(angle = 160deg / nTeeth + helixCalc, length = tipDiameter / 2)) | ||||
|       |> involuteCircular( | ||||
|            startRadius = baseDiameter / 2, | ||||
|            endRadius = tipDiameter / 2, | ||||
| @ -36,7 +36,7 @@ fn herringboneGear(nTeeth, module, pressureAngle, helixAngle, gearHeight) { | ||||
|          ) | ||||
|  | ||||
|       // Position the end line of the sketch at the start of the next tooth | ||||
|       |> line(endAbsolute = polar(angle = 360 / nTeeth + helixCalc, length = baseDiameter / 2)) | ||||
|       |> line(endAbsolute = polar(angle = 360deg / nTeeth + helixCalc, length = baseDiameter / 2)) | ||||
|  | ||||
|       // Pattern the sketch about the center by the specified number of teeth, then close the sketch | ||||
|       |> patternCircular2d( | ||||
| @ -98,7 +98,7 @@ fn ringGear(nTeeth, module, pressureAngle, helixAngle, gearHeight) { | ||||
|            angle = helixCalc, | ||||
|            tag = $seg01, | ||||
|          ) | ||||
|       |> line(endAbsolute = polar(angle = 220 / nTeeth + helixCalc, length = tipDiameter / 2)) | ||||
|       |> line(endAbsolute = polar(angle = 220deg / nTeeth + helixCalc, length = tipDiameter / 2)) | ||||
|       |> involuteCircular( | ||||
|            startRadius = baseDiameter / 2, | ||||
|            endRadius = tipDiameter / 2, | ||||
| @ -107,7 +107,7 @@ fn ringGear(nTeeth, module, pressureAngle, helixAngle, gearHeight) { | ||||
|          ) | ||||
|  | ||||
|       // Position the end line of the sketch at the start of the next tooth | ||||
|       |> line(endAbsolute = polar(angle = 360 / nTeeth + helixCalc, length = baseDiameter / 2)) | ||||
|       |> line(endAbsolute = polar(angle = 360deg / nTeeth + helixCalc, length = baseDiameter / 2)) | ||||
|  | ||||
|       // Pattern the sketch about the center by the specified number of teeth, then close the sketch | ||||
|       |> patternCircular2d( | ||||
|  | ||||
| @ -13,11 +13,11 @@ diameter = 0.3125 | ||||
| fn hexNut(start, thk, innerDia) { | ||||
|   hexNutSketch = startSketchOn(-XZ) | ||||
|     |> startProfile(at = [start[0] + innerDia, start[1]]) | ||||
|     |> angledLine(angle = 240, length = innerDia) | ||||
|     |> angledLine(angle = 180, length = innerDia) | ||||
|     |> angledLine(angle = 120, length = innerDia) | ||||
|     |> angledLine(angle = 60, length = innerDia) | ||||
|     |> angledLine(angle = 0, length = innerDia * .90) | ||||
|     |> angledLine(angle = 240deg, length = innerDia) | ||||
|     |> angledLine(angle = 180deg, length = innerDia) | ||||
|     |> angledLine(angle = 120deg, length = innerDia) | ||||
|     |> angledLine(angle = 60deg, length = innerDia) | ||||
|     |> angledLine(angle = 0deg, length = innerDia * .90) | ||||
|     |> close() | ||||
|     |> subtract2d(tool = circle(center = [start[0], start[1]], radius = innerDia / 2)) | ||||
|     |> extrude(length = thk) | ||||
|  | ||||
| @ -18,7 +18,7 @@ iBeam = startSketchOn(-XZ) | ||||
|   |> xLine(length = flangeWidth / 2) | ||||
|   |> yLine(length = -flangeThickness) | ||||
|   |> xLine(endAbsolute = webThickness / 2 + rootRadius) | ||||
|   |> tangentialArc(radius = rootRadius, angle = 90) | ||||
|   |> tangentialArc(radius = rootRadius, angle = 90deg) | ||||
|   |> yLine(endAbsolute = 0) | ||||
|   |> mirror2d(axis = X) | ||||
|   |> mirror2d(axis = Y) | ||||
|  | ||||
| @ -22,7 +22,7 @@ row6 = row5 + keyHeight + spacing | ||||
| sketch001 = startSketchOn(YZ) | ||||
|   |> startProfile(at = [0, 0]) | ||||
|   |> line(end = [-0.14, 0.68], tag = $seg01) | ||||
|   |> angledLine(angle = 7, length = row6 + 3 * spacing + keyHeight, tag = $seg02) | ||||
|   |> angledLine(angle = 7deg, length = row6 + 3 * spacing + keyHeight, tag = $seg02) | ||||
|   |> line(endAbsolute = [5.13, 0], tag = $seg03) | ||||
|   |> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $seg04) | ||||
|   |> close() | ||||
| @ -67,12 +67,12 @@ fn keyFn(originStart, keyWidth, keyHeight, repeats, color) { | ||||
|   sketch002 = startSketchOn(plane001) | ||||
|   profile002 = startProfile(sketch002, at = [originStart[0], originStart[1]]) | ||||
|     |> arc(angleStart = 180, angleEnd = 270, radius = 0.1) | ||||
|     |> angledLine(angle = 0, length = keyWidth - .2, tag = $rectangleSegmentA001) | ||||
|     |> tangentialArc(radius = 0.1, angle = 90) | ||||
|     |> angledLine(angle = 0deg, length = keyWidth - .2, tag = $rectangleSegmentA001) | ||||
|     |> tangentialArc(radius = 0.1, angle = 90deg) | ||||
|     |> angledLine(angle = segAng(rectangleSegmentA001) + 90, length = keyHeight - .2, tag = $rectangleSegmentB001) | ||||
|     |> tangentialArc(radius = 0.1, angle = 90) | ||||
|     |> tangentialArc(radius = 0.1, angle = 90deg) | ||||
|     |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $rectangleSegmentC001) | ||||
|     |> tangentialArc(radius = 0.1, angle = 90) | ||||
|     |> tangentialArc(radius = 0.1, angle = 90deg) | ||||
|     |> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $rectangleSegmentD001) | ||||
|     |> close() | ||||
|     |> extrude(length = keyDepth) | ||||
| @ -263,19 +263,19 @@ fn z(origin, scale, depth) { | ||||
|        ]) | ||||
|     |> yLine(length = -0.15 * scale) | ||||
|     |> xLine(length = 0.15 * scale) | ||||
|     |> angledLine(angle = 47.15, endAbsoluteX = 0.3 * scale + origin[0], tag = $seg1) | ||||
|     |> angledLine(angle = 47.15deg, endAbsoluteX = 0.3 * scale + origin[0], tag = $seg1) | ||||
|     |> yLine(endAbsolute = 0 + origin[1], tag = $seg3) | ||||
|     |> xLine(length = 0.63 * scale) | ||||
|     |> yLine(length = 0.225 * scale) | ||||
|     |> xLine(length = -0.57 * scale) | ||||
|     |> angledLine(angle = 47.15, endAbsoluteX = 0.93 * scale + origin[0]) | ||||
|     |> angledLine(angle = 47.15deg, endAbsoluteX = 0.93 * scale + origin[0]) | ||||
|     |> yLine(length = 0.15 * scale) | ||||
|     |> xLine(length = -0.15 * scale) | ||||
|     |> angledLine(angle = 47.15, length = -segLen(seg1), tag = $seg2) | ||||
|     |> angledLine(angle = 47.15deg, length = -segLen(seg1), tag = $seg2) | ||||
|     |> yLine(length = segLen(seg3)) | ||||
|     |> xLine(endAbsolute = 0 + origin[0]) | ||||
|     |> yLine(length = -0.225 * scale) | ||||
|     |> angledLineThatIntersects(angle = 0, intersectTag = seg2, offset = 0) | ||||
|     |> angledLineThatIntersects(angle = 0deg, intersectTag = seg2, offset = 0) | ||||
|     |> close() | ||||
|     |> extrude(length = -depth) | ||||
|     |> appearance(color = baseColor) | ||||
| @ -290,7 +290,7 @@ fn o(origin, scale, depth) { | ||||
|          .921 * scale + origin[1] | ||||
|        ]) | ||||
|     |> arc(angleStart = 47.15 + 6, angleEnd = 47.15 - 6 + 180, radius = .525 * scale) | ||||
|     |> angledLine(angle = 47.15, length = .24 * scale) | ||||
|     |> angledLine(angle = 47.15deg, length = .24 * scale) | ||||
|     |> arc(angleStart = 47.15 - 11 + 180, angleEnd = 47.15 + 11, radius = .288 * scale) | ||||
|     |> close() | ||||
|     |> extrude(length = -depth) | ||||
| @ -302,7 +302,7 @@ fn o(origin, scale, depth) { | ||||
|          .079 * scale + origin[1] | ||||
|        ]) | ||||
|     |> arc(angleStart = 47.15 + 6 - 180, angleEnd = 47.15 - 6, radius = .525 * scale) | ||||
|     |> angledLine(angle = 47.15, length = -.24 * scale) | ||||
|     |> angledLine(angle = 47.15deg, length = -.24 * scale) | ||||
|     |> arc(angleStart = 47.15 - 11, angleEnd = 47.15 + 11 - 180, radius = .288 * scale) | ||||
|     |> close() | ||||
|     |> extrude(length = -depth) | ||||
|  | ||||
| @ -9,7 +9,7 @@ import basePlateRadius, basePlateThickness, baseChamfer, baseHeight from "global | ||||
| // Base Plate | ||||
| sketch001 = startSketchOn(XY) | ||||
|   |> startProfile(at = [-basePlateRadius, -basePlateRadius]) | ||||
|   |> angledLine(angle = 0, length = 2 * basePlateRadius, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = 0deg, length = 2 * basePlateRadius, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001) + 90, length = 2 * basePlateRadius, tag = $rectangleSegmentB001) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $rectangleSegmentC001) | ||||
|   |> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $rectangleSegmentD001) | ||||
|  | ||||
| @ -14,9 +14,9 @@ extrude005 = extrude(sketch005, length = 1.5 - 0.1) | ||||
|  | ||||
| sketch006 = startSketchOn(plane002) | ||||
|   |> startProfile(at = [3.5, baseHeight]) | ||||
|   |> angledLine(angle = 60, length = 1.75) | ||||
|   |> angledLine(angle = 60deg, length = 1.75) | ||||
|   |> arc(angleStart = -30, angleEnd = -30 + 180, radius = 3) | ||||
|   |> angledLine(angle = 60, endAbsoluteY = baseHeight) | ||||
|   |> angledLine(angle = 60deg, endAbsoluteY = baseHeight) | ||||
|   |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) | ||||
|   |> close() | ||||
|  | ||||
|  | ||||
| @ -10,7 +10,7 @@ import * from "parameters.kcl" | ||||
| // Create the sketch of one of the balls. The ball diameter is sized as a fraction of the difference between inner and outer radius of the bearing | ||||
| ballsSketch = startSketchOn(offsetPlane(XY, offset = stockThickness / 2)) | ||||
|   |> startProfile(at = [bearingBoreDiameter / 2 + 0.1, 0.001]) | ||||
|   |> arc(angleEnd = 0, angleStart = 180, radius = sphereDia / 2) | ||||
|   |> arc(angleEnd = 0deg, angleStart = 180deg, radius = sphereDia / 2) | ||||
|   |> close() | ||||
|  | ||||
| // Revolve the ball to make a sphere and pattern around the inside wall | ||||
| @ -29,7 +29,7 @@ chainSketch = startSketchOn(offsetPlane(XY, offset = stockThickness / 2)) | ||||
|        bearingBoreDiameter / 2 + 0.1 + sphereDia / 2 - (chainWidth / 2), | ||||
|        0.125 * sin(60deg) | ||||
|      ]) | ||||
|   |> arc(angleEnd = 60, angleStart = 120, radius = sphereDia / 2) | ||||
|   |> arc(angleEnd = 60deg, angleStart = 120deg, radius = sphereDia / 2) | ||||
|   |> line(end = [0, chainThickness]) | ||||
|   |> line(end = [-chainWidth, 0]) | ||||
|   |> close() | ||||
| @ -63,35 +63,35 @@ bearingUpper = startProfile( | ||||
|          stockThickness | ||||
|        ], | ||||
|      ) | ||||
|   |> angledLine(angle = -91, length = 0.05) | ||||
|   |> angledLine(angle = -91deg, length = 0.05) | ||||
|   |> xLine(length = -(bearingOuterDiameter / 2 - (bearingBoreDiameter / 2)) + .145) | ||||
|   |> yLine(endAbsolute = 0.105) | ||||
|   |> xLine(length = -0.025) | ||||
|   |> angledLine(angle = 91, endAbsoluteY = profileStartY(%)) | ||||
|   |> angledLine(angle = 91deg, endAbsoluteY = profileStartY(%)) | ||||
|   |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) | ||||
|   |> close() | ||||
|   |> revolve(angle = 360, axis = Y) | ||||
|   |> revolve(angle = 360deg, axis = Y) | ||||
|   |> appearance(%, color = "#121212") | ||||
|  | ||||
| bearingLower = startProfile(bearingBody, at = [bearingBoreDiameter / 2, 0.025]) | ||||
|   |> xLine(length = 0.05) | ||||
|   |> angledLine(angle = 75, length = 0.04, tag = $seg01) | ||||
|   |> angledLine(angle = 75deg, length = 0.04, tag = $seg01) | ||||
|   |> xLine(length = 0.05) | ||||
|   |> angledLine(angle = -75, length = segLen(seg01)) | ||||
|   |> angledLine(angle = -75deg, length = segLen(seg01)) | ||||
|   |> xLine(endAbsolute = bearingOuterDiameter / 2) | ||||
|   |> yLine(length = stockThickness) | ||||
|   |> xLine(length = -0.07) | ||||
|   |> angledLine(angle = -91, endAbsoluteY = profileStartY(%) + .075) | ||||
|   |> angledLine(angle = -91deg, endAbsoluteY = profileStartY(%) + .075) | ||||
|   |> xLine(endAbsolute = profileStartX(%) + .05) | ||||
|   |> angledLine(angle = 91, endAbsoluteY = stockThickness * 1.25) | ||||
|   |> angledLine(angle = 91deg, endAbsoluteY = stockThickness * 1.25) | ||||
|   |> xLine(endAbsolute = profileStartX(%)) | ||||
|   |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) | ||||
|   |> close() | ||||
|   |> revolve(angle = 360, axis = Y) | ||||
|   |> revolve(angle = 360deg, axis = Y) | ||||
|   |> appearance(%, color = "#f0f0f0") | ||||
|  | ||||
| // Revolve the link sketch | ||||
| revolve(linkSketch, axis = Y, angle = 360 / 16) | ||||
| revolve(linkSketch, axis = Y, angle = 360deg / 16) | ||||
|   |> patternCircular3d( | ||||
|        arcDegrees = 360, | ||||
|        axis = [0, 0, 1], | ||||
|  | ||||
| @ -14,8 +14,8 @@ blockWidth = boltSpacingY + counterboreDiameter + boltDiameter | ||||
| // Draw the base plate | ||||
| plateSketch = startSketchOn(XY) | ||||
|   |> startProfile(at = [-blockLength / 2, -blockWidth / 2]) | ||||
|   |> angledLine(angle = 0, length = blockLength, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001) + 90, length = blockWidth, tag = $rectangleSegmentB001) | ||||
|   |> angledLine(angle = 0deg, length = blockLength, tag = $rectangleSegmentA001) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001) + 90deg, length = blockWidth, tag = $rectangleSegmentB001) | ||||
|   |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $rectangleSegmentC001) | ||||
|   |> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $rectangleSegmentD001) | ||||
|   |> close() | ||||
|  | ||||
| @ -21,11 +21,11 @@ export fn bolt() { | ||||
|          boltHexDrive / 2, | ||||
|          boltHexFlatLength / 2 | ||||
|        ]) | ||||
|     |> angledLine(angle = 270, length = boltHexFlatLength) | ||||
|     |> angledLine(angle = 210, length = boltHexFlatLength) | ||||
|     |> angledLine(angle = 150, length = boltHexFlatLength) | ||||
|     |> angledLine(angle = 90, length = boltHexFlatLength) | ||||
|     |> angledLine(angle = 30, length = boltHexFlatLength) | ||||
|     |> angledLine(angle = 270deg, length = boltHexFlatLength) | ||||
|     |> angledLine(angle = 210deg, length = boltHexFlatLength) | ||||
|     |> angledLine(angle = 150deg, length = boltHexFlatLength) | ||||
|     |> angledLine(angle = 90deg, length = boltHexFlatLength) | ||||
|     |> angledLine(angle = 30deg, length = boltHexFlatLength) | ||||
|     |> close() | ||||
|     |> extrude(length = -boltHeadLength * 0.75) | ||||
|  | ||||
|  | ||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user