2025-03-06 18:01:24 -05:00
|
|
|
// Color Cube
|
|
|
|
// This is a color cube centered about the origin. It is used to help determine orientation in the scene.
|
|
|
|
|
2025-04-04 11:03:13 -07:00
|
|
|
// Set units
|
2025-05-06 08:44:03 +12:00
|
|
|
@settings(defaultLengthUnit = mm, kclVersion = 1.0)
|
2025-03-06 18:01:24 -05:00
|
|
|
|
2025-04-04 11:03:13 -07:00
|
|
|
// Parameters referenced in drawRectangle
|
2025-03-06 18:01:24 -05:00
|
|
|
size = 100
|
2025-03-26 08:53:34 -07:00
|
|
|
halfSize = size / 2
|
2025-03-06 18:01:24 -05:00
|
|
|
extrudeLength = 1.0
|
|
|
|
metalConstant = 50
|
|
|
|
roughnessConstant = 50
|
|
|
|
|
|
|
|
// Create planes for 6 sides of a cube
|
2025-03-26 08:53:34 -07:00
|
|
|
bluePlane = offsetPlane(XY, offset = halfSize)
|
|
|
|
yellowPlane = offsetPlane(XY, offset = -halfSize)
|
|
|
|
greenPlane = offsetPlane(XZ, offset = -halfSize)
|
|
|
|
purplePlane = offsetPlane(-XZ, offset = -halfSize)
|
|
|
|
redPlane = offsetPlane(YZ, offset = halfSize - extrudeLength)
|
|
|
|
tealPlane = offsetPlane(YZ, offset = -halfSize)
|
2025-03-06 18:01:24 -05:00
|
|
|
|
|
|
|
// Sketch a rectangle centered at the origin of the profile
|
2025-03-26 08:53:34 -07:00
|
|
|
fn sketchRectangle(profile, color) {
|
2025-03-06 18:01:24 -05:00
|
|
|
return profile
|
2025-04-25 16:01:35 -05:00
|
|
|
|> startProfile(at = [-halfSize, halfSize])
|
KCL: Angled line should use keyword args (#5803)
We continue migrating KCL stdlib functions to use keyword arguments. Next up is the `angledLine` family of functions (except `angledLineThatIntersects, which will be a quick follow-up).
Before vs. after:
`angledLine({angle = 90, length = 3}, %, $edge)`
=> `angledLine(angle = 90, length = 3, tag = $edge)`
`angledLineOfXLength({angle = 90, length = 3}, %, $edge)`
=> `angledLine(angle = 90, lengthX = 3, tag = $edge)`
`angledLineOfYLength({angle = 90, length = 3}, %, $edge)`
=> `angledLine(angle = 90, lengthY = 3, tag = $edge)`
`angledLineToX({angle = 90, length = 3}, %, $edge)`
=> `angledLine(angle = 90, endAbsoluteX = 3, tag = $edge)`
`angledLineToY({angle = 90, length = 3}, %, $edge)`
=> `angledLine(angle = 90, endAbsoluteY = 3, tag = $edge)`
2025-04-09 14:55:15 -05:00
|
|
|
|> angledLine(angle = 0, length = size, tag = $rectangleSegmentA001)
|
|
|
|
|> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = size, tag = $rectangleSegmentB001)
|
|
|
|
|> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $rectangleSegmentC001)
|
2025-03-26 08:53:34 -07:00
|
|
|
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
|
|
|
|> close()
|
KCL: Angled line should use keyword args (#5803)
We continue migrating KCL stdlib functions to use keyword arguments. Next up is the `angledLine` family of functions (except `angledLineThatIntersects, which will be a quick follow-up).
Before vs. after:
`angledLine({angle = 90, length = 3}, %, $edge)`
=> `angledLine(angle = 90, length = 3, tag = $edge)`
`angledLineOfXLength({angle = 90, length = 3}, %, $edge)`
=> `angledLine(angle = 90, lengthX = 3, tag = $edge)`
`angledLineOfYLength({angle = 90, length = 3}, %, $edge)`
=> `angledLine(angle = 90, lengthY = 3, tag = $edge)`
`angledLineToX({angle = 90, length = 3}, %, $edge)`
=> `angledLine(angle = 90, endAbsoluteX = 3, tag = $edge)`
`angledLineToY({angle = 90, length = 3}, %, $edge)`
=> `angledLine(angle = 90, endAbsoluteY = 3, tag = $edge)`
2025-04-09 14:55:15 -05:00
|
|
|
|> extrude(length = extrudeLength)
|
2025-03-26 08:53:34 -07:00
|
|
|
|> appearance(color = color, metalness = metalConstant, roughness = roughnessConstant)
|
2025-03-06 18:01:24 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
// Sketch each side of the cube
|
2025-05-01 11:36:51 -05:00
|
|
|
sketchRectangle(profile = bluePlane, color = '#0000FF')
|
|
|
|
sketchRectangle(profile = yellowPlane, color = '#FFFF00')
|
|
|
|
sketchRectangle(profile = greenPlane, color = '#00FF00')
|
|
|
|
sketchRectangle(profile = redPlane, color = '#FF0000')
|
|
|
|
sketchRectangle(profile = tealPlane, color = '#00FFFF')
|
|
|
|
sketchRectangle(profile = purplePlane, color = '#FF00FF')
|