Files
modeling-app/docs/kcl-std/functions/std-solid-shell.md
Nick Cameron 9c52f5b19a Add tags to Rust std lib functions (#6701)
Signed-off-by: Nick Cameron <nrc@ncameron.org>
2025-05-06 14:14:11 +12:00

708 KiB

title, excerpt, layout
title excerpt layout
std::solid::shell manual

Remove volume from a 3-dimensional shape such that a wall of the provided thickness remains, taking volume starting at the providedface, leaving it open in that direction.

shell(
  @solids: [Solid; 1+],
  thickness: number(Length),
  faces: [tag; 1+],
): [Solid]

Arguments

Name Type Description Required
solids [Solid; 1+] Which solid (or solids) to shell out Yes
thickness number(Length) The thickness of the shell Yes
faces [tag; 1+] The faces you want removed Yes

Returns

[Solid]

Examples

// Remove the end face for the extrusion.
firstSketch = startSketchOn(XY)
    |> startProfile(at = [-12, 12])
    |> line(end = [24, 0])
    |> line(end = [0, -24])
    |> line(end = [-24, 0])
    |> close()
    |> extrude(length = 6)

// Remove the end face for the extrusion.
shell(
    firstSketch,
    faces = [END],
    thickness = 0.25,
)

Rendered example of std::solid::shell 0

// Remove the start face for the extrusion.
firstSketch = startSketchOn(-XZ)
    |> startProfile(at = [-12, 12])
    |> line(end = [24, 0])
    |> line(end = [0, -24])
    |> line(end = [-24, 0])
    |> close()
    |> extrude(length = 6)

// Remove the start face for the extrusion.
shell(
    firstSketch,
    faces = [START],
    thickness = 0.25,
)

Rendered example of std::solid::shell 1

// Remove a tagged face and the end face for the extrusion.
firstSketch = startSketchOn(XY)
    |> startProfile(at = [-12, 12])
    |> line(end = [24, 0])
    |> line(end = [0, -24])
    |> line(end = [-24, 0], tag = $myTag)
    |> close()
    |> extrude(length = 6)

// Remove a tagged face for the extrusion.
shell(
    firstSketch,
    faces = [myTag],
    thickness = 0.25,
)

Rendered example of std::solid::shell 2

// Remove multiple faces at once.
firstSketch = startSketchOn(XY)
    |> startProfile(at = [-12, 12])
    |> line(end = [24, 0])
    |> line(end = [0, -24])
    |> line(end = [-24, 0], tag = $myTag)
    |> close()
    |> extrude(length = 6)

// Remove a tagged face and the end face for the extrusion.
shell(
    firstSketch,
    faces = [myTag, END],
    thickness = 0.25,
)

Rendered example of std::solid::shell 3

// Shell a sketch on face.
size = 100
case = startSketchOn(-XZ)
    |> startProfile(at = [-size, -size])
    |> line(end = [2 * size, 0])
    |> line(end = [0, 2 * size])
    |> tangentialArc(endAbsolute = [-size, size])
    |> close()
    |> extrude(length = 65)

thing1 = startSketchOn(case, face = END)
    |> circle( center = [-size / 2, -size / 2], radius = 25 )
    |> extrude(length = 50)

thing2 = startSketchOn(case, face = END)
    |> circle( center = [size / 2, -size / 2], radius = 25 )
    |> extrude(length = 50)

// We put "case" in the shell function to shell the entire object.
shell(case, faces = [START], thickness = 5)

Rendered example of std::solid::shell 4

// Shell a sketch on face object on the end face.
size = 100
case = startSketchOn(XY)
    |> startProfile(at = [-size, -size])
    |> line(end = [2 * size, 0])
    |> line(end = [0, 2 * size])
    |> tangentialArc(endAbsolute = [-size, size])
    |> close()
    |> extrude(length = 65)

thing1 = startSketchOn(case, face = END)
    |> circle( center = [-size / 2, -size / 2], radius = 25 )
    |> extrude(length = 50)

thing2 = startSketchOn(case, face = END)
    |> circle( center = [size / 2, -size / 2], radius = 25 )
    |> extrude(length = 50)

// We put "thing1" in the shell function to shell the end face of the object.
shell(thing1, faces = [END], thickness = 5)

Rendered example of std::solid::shell 5

// Shell sketched on face objects on the end face, include all sketches to shell
// the entire object.

size = 100
case = startSketchOn(XY)
    |> startProfile(at = [-size, -size])
    |> line(end = [2 * size, 0])
    |> line(end = [0, 2 * size])
    |> tangentialArc(endAbsolute = [-size, size])
    |> close()
    |> extrude(length = 65)

thing1 = startSketchOn(case, face = END)
    |> circle( center = [-size / 2, -size / 2], radius = 25 )
    |> extrude(length = 50)

thing2 = startSketchOn(case, face = END)
    |> circle( center = [size / 2, -size / 2], radius = 25)
    |> extrude(length = 50)

// We put "thing1" and "thing2" in the shell function to shell the end face of the object.
shell([thing1, thing2], faces = [END], thickness = 5)

Rendered example of std::solid::shell 6