kcl-samples → color-cube

color-cube

color-cube

KCL

// 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)
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')