kcl

appearance

Set the appearance of a solid. This only works on solids, not sketches or individual paths.

This will work on any solid, including extruded solids, revolved solids, and shelled solids.

appearance(
  solids: [Solid],
  color: String,
  metalness?: number,
  roughness?: number,
): [Solid]

Arguments

NameTypeDescriptionRequired
solids[Solid]The solid(s) whose appearance is being setYes
colorStringColor of the new material, a hex string like '#ff0000'Yes
metalnessnumberMetalness of the new material, a percentage like 95.7.No
roughnessnumberRoughness of the new material, a percentage like 95.7.No

Returns

[Solid]

Examples

// Add color to an extruded solid.
exampleSketch = startSketchOn(XZ)
  |> startProfileAt([0, 0], %)
  |> line(endAbsolute = [10, 0])
  |> line(endAbsolute = [0, 10])
  |> line(endAbsolute = [-10, 0])
  |> close()

example = extrude(exampleSketch, length = 5)
  // There are other options besides 'color', but they're optional.
  |> appearance(color = '#ff0000')

Rendered example of appearance 0

// Add color to a revolved solid.
sketch001 = startSketchOn(XY)
  |> circle(center = [15, 0], radius = 5)
  |> revolve(angle = 360, axis = 'y')
  |> appearance(color = '#ff0000', metalness = 90, roughness = 90)

Rendered example of appearance 1

// Add color to different solids.
fn cube(center) {
  return startSketchOn(XY)
    |> startProfileAt([center[0] - 10, center[1] - 10], %)
    |> line(endAbsolute = [center[0] + 10, center[1] - 10])
    |> line(endAbsolute = [center[0] + 10, center[1] + 10])
    |> line(endAbsolute = [center[0] - 10, center[1] + 10])
    |> close()
    |> extrude(length = 10)
}

example0 = cube([0, 0])
example1 = cube([20, 0])
example2 = cube([40, 0])

appearance(
  [example0, example1],
  color = '#ff0000',
  metalness = 50,
  roughness = 50,
)
appearance(
  example2,
  color = '#00ff00',
  metalness = 50,
  roughness = 50,
)

Rendered example of appearance 2

// You can set the appearance before or after you shell it will yield the same result.
// This example shows setting the appearance _after_ the shell.
firstSketch = startSketchOn(XY)
  |> startProfileAt([-12, 12], %)
  |> line(end = [24, 0])
  |> line(end = [0, -24])
  |> line(end = [-24, 0])
  |> close()
  |> extrude(length = 6)

shell(firstSketch, faces = ['end'], thickness = 0.25)
  |> appearance(color = '#ff0000', metalness = 90, roughness = 90)

Rendered example of appearance 3

// You can set the appearance before or after you shell it will yield the same result.
// This example shows setting the appearance _before_ the shell.
firstSketch = startSketchOn(XY)
  |> startProfileAt([-12, 12], %)
  |> line(end = [24, 0])
  |> line(end = [0, -24])
  |> line(end = [-24, 0])
  |> close()
  |> extrude(length = 6)
  |> appearance(color = '#ff0000', metalness = 90, roughness = 90)

shell(firstSketch, faces = ['end'], thickness = 0.25)

Rendered example of appearance 4

// Setting the appearance of a 3D pattern can be done _before_ or _after_ the pattern.
// This example shows _before_ the pattern.
exampleSketch = startSketchOn(XZ)
  |> startProfileAt([0, 0], %)
  |> line(end = [0, 2])
  |> line(end = [3, 1])
  |> line(end = [0, -4])
  |> close()

example = extrude(exampleSketch, length = 1)
  |> appearance(color = '#ff0000', metalness = 90, roughness = 90)
  |> patternLinear3d(axis = [1, 0, 1], instances = 7, distance = 6)

Rendered example of appearance 5

// Setting the appearance of a 3D pattern can be done _before_ or _after_ the pattern.
// This example shows _after_ the pattern.
exampleSketch = startSketchOn(XZ)
  |> startProfileAt([0, 0], %)
  |> line(end = [0, 2])
  |> line(end = [3, 1])
  |> line(end = [0, -4])
  |> close()

example = extrude(exampleSketch, length = 1)
  |> patternLinear3d(axis = [1, 0, 1], instances = 7, distance = 6)
  |> appearance(color = '#ff0000', metalness = 90, roughness = 90)

Rendered example of appearance 6

// Color the result of a 2D pattern that was extruded.
exampleSketch = startSketchOn(XZ)
  |> startProfileAt([.5, 25], %)
  |> line(end = [0, 5])
  |> line(end = [-1, 0])
  |> line(end = [0, -5])
  |> close()
  |> patternCircular2d(
       center = [0, 0],
       instances = 13,
       arcDegrees = 360,
       rotateDuplicates = true,
     )

example = extrude(exampleSketch, length = 1)
  |> appearance(color = '#ff0000', metalness = 90, roughness = 90)

Rendered example of appearance 7

// Color the result of a sweep.

// Create a path for the sweep.
sweepPath = startSketchOn(XZ)
  |> startProfileAt([0.05, 0.05], %)
  |> line(end = [0, 7])
  |> tangentialArc({ offset = 90, radius = 5 }, %)
  |> line(end = [-3, 0])
  |> tangentialArc({ offset = -90, radius = 5 }, %)
  |> line(end = [0, 7])

pipeHole = startSketchOn(XY)
  |> circle(center = [0, 0], radius = 1.5)

sweepSketch = startSketchOn(XY)
  |> circle(center = [0, 0], radius = 2)
  |> hole(pipeHole, %)
  |> sweep(path = sweepPath)
  |> appearance(color = "#ff0000", metalness = 50, roughness = 50)

Rendered example of appearance 8