48 lines
1.5 KiB
Plaintext
48 lines
1.5 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')
|