---
title: "shell"
subtitle: "Function in std::solid"
excerpt: ""
layout: manual
---



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

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.

### Arguments

| Name | Type | Description | Required |
|----------|------|-------------|----------|
| `solids` | [`[Solid; 1+]`](/docs/kcl-std/types/std-types-Solid) | Which solid (or solids) to shell out | Yes |
| `thickness` | [`number(Length)`](/docs/kcl-std/types/std-types-number) | The thickness of the shell | Yes |
| `faces` | [`[tag; 1+]`](/docs/kcl-std/types/std-types-tag) | The faces you want removed | Yes |

### Returns

[`[Solid]`](/docs/kcl-std/types/std-types-Solid)


### Examples

```kcl
// 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 shell 0](data:image/png;base64,[encoded data, 102140 characters])

```kcl
// 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 shell 1](data:image/png;base64,[encoded data, 142580 characters])

```kcl
// 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 shell 2](data:image/png;base64,[encoded data, 93656 characters])

```kcl
// 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 shell 3](data:image/png;base64,[encoded data, 112404 characters])

```kcl
// 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 shell 4](data:image/png;base64,[encoded data, 118904 characters])

```kcl
// 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 shell 5](data:image/png;base64,[encoded data, 73776 characters])

```kcl
// 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 shell 6](data:image/png;base64,[encoded data, 76660 characters])


