Files
modeling-app/public/kcl-samples/color-cube/main.kcl
2025-03-26 11:53:34 -04:00

48 lines
1.6 KiB
Plaintext

// Color Cube
// This is a color cube centered about the origin. It is used to help determine orientation in the scene.
// Set unit
@settings(defaultLengthUnit = mm)
// Globals referenced in drawRectangle
size = 100
halfSize = size / 2
extrudeLength = 1.0
metalConstant = 50
roughnessConstant = 50
// Create planes for 6 sides of a cube
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)
// Sketch a rectangle centered at the origin of the profile
fn sketchRectangle(profile, color) {
return profile
|> startProfileAt([-halfSize, halfSize], %)
|> angledLine([0, size], %, $rectangleSegmentA001)
|> angledLine([
segAng(rectangleSegmentA001) - 90,
size
], %, $rectangleSegmentB001)
|> angledLine([
segAng(rectangleSegmentA001),
-segLen(rectangleSegmentA001)
], %, $rectangleSegmentC001)
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|> close()
|> extrude(%, length = extrudeLength)
|> appearance(color = color, metalness = metalConstant, roughness = roughnessConstant)
}
// Sketch each side of the cube
sketchRectangle(bluePlane, '#0000FF')
sketchRectangle(yellowPlane, '#FFFF00')
sketchRectangle(greenPlane, '#00FF00')
sketchRectangle(redPlane, '#FF0000')
sketchRectangle(tealPlane, '#00FFFF')
sketchRectangle(purplePlane, '#FF00FF')