---
title: "shell"
excerpt: "Remove volume from a 3-dimensional shape such that a wall of the"
layout: 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.

```js
shell(solid_set: SolidSet, thickness: number, faces: [FaceTag]) -> SolidSet
```


### Arguments

| Name | Type | Description | Required |
|----------|------|-------------|----------|
| `solid_set` | [`SolidSet`](/docs/kcl/types/SolidSet) | Which solid (or solids) to shell out | Yes |
| `thickness` | `number` | The thickness of the shell | Yes |
| `faces` | [`[FaceTag]`](/docs/kcl/types/FaceTag) | The faces you want removed | Yes |

### Returns

[`SolidSet`](/docs/kcl/types/SolidSet) - A solid or a group of solids.


### Examples

```js
// 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](data:image/png;base64,[encoded data, 102136 characters])

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

```js
// 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](data:image/png;base64,[encoded data, 93920 characters])

```js
// 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](data:image/png;base64,[encoded data, 112400 characters])

```js
// 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](data:image/png;base64,[encoded data, 118896 characters])

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

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


