Files
modeling-app/docs/kcl/shell.md
Nick Cameron 5d25f4a0e5 Support types in the standard library (#5651)
* Parse an unparse type decls (and refactor impl attributes slightly)

Signed-off-by: Nick Cameron <nrc@ncameron.org>

* Remove special treatment of geometric types from parser and executor

Signed-off-by: Nick Cameron <nrc@ncameron.org>

* Generate docs for std types

Signed-off-by: Nick Cameron <nrc@ncameron.org>

* Hover tool-tips for types and fixup the frontend

Signed-off-by: Nick Cameron <nrc@ncameron.org>

* Fixes

Signed-off-by: Nick Cameron <nrc@ncameron.org>

---------

Signed-off-by: Nick Cameron <nrc@ncameron.org>
2025-03-07 09:53:34 -05:00

708 KiB

title, excerpt, layout
title excerpt layout
shell Remove volume from a 3-dimensional shape such that a wall of the provided thickness remains, taking volume starting at the provided face, leaving it open in that direction. manual

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

shell(
  solidSet: SolidSet,
  thickness: number,
  faces: [FaceTag],
): SolidSet

Arguments

Name Type Description Required
solidSet SolidSet Which solid (or solids) to shell out Yes
thickness number The thickness of the shell Yes
faces [FaceTag] The faces you want removed Yes

Returns

SolidSet - A solid or a group of solids.

Examples

// Remove the end face for the extrusion.
firstSketch = startSketchOn('XY')
  |> startProfileAt([-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 shell 0

// Remove the start face for the extrusion.
firstSketch = startSketchOn('-XZ')
  |> startProfileAt([-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 shell 1

// Remove a tagged face and the end face for the extrusion.
firstSketch = startSketchOn('XY')
  |> startProfileAt([-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 shell 2

// Remove multiple faces at once.
firstSketch = startSketchOn('XY')
  |> startProfileAt([-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 shell 3

// Shell a sketch on face.
size = 100
case = startSketchOn('-XZ')
  |> startProfileAt([-size, -size], %)
  |> line(end = [2 * size, 0])
  |> line(end = [0, 2 * size])
  |> tangentialArcTo([-size, size], %)
  |> close()
  |> extrude(length = 65)

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

thing2 = startSketchOn(case, '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 shell 4

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

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

thing2 = startSketchOn(case, '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 shell 5

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


size = 100
case = startSketchOn('XY')
  |> startProfileAt([-size, -size], %)
  |> line(end = [2 * size, 0])
  |> line(end = [0, 2 * size])
  |> tangentialArcTo([-size, size], %)
  |> close()
  |> extrude(length = 65)

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

thing2 = startSketchOn(case, '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 shell 6