194 lines
		
	
	
		
			708 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			194 lines
		
	
	
		
			708 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
---
 | 
						|
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(data: ShellData, solid_set: SolidSet) -> SolidSet
 | 
						|
```
 | 
						|
 | 
						|
 | 
						|
### Arguments
 | 
						|
 | 
						|
| Name | Type | Description | Required |
 | 
						|
|----------|------|-------------|----------|
 | 
						|
| `data` | [`ShellData`](/docs/kcl/types/ShellData) | Data for shells. | Yes |
 | 
						|
| `solid_set` | [`SolidSet`](/docs/kcl/types/SolidSet) | A solid or a group of solids. | 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({ faces = ['end'], thickness = 0.25 }, firstSketch)
 | 
						|
```
 | 
						|
 | 
						|

 | 
						|
 | 
						|
```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({ faces = ['start'], thickness = 0.25 }, firstSketch)
 | 
						|
```
 | 
						|
 | 
						|

 | 
						|
 | 
						|
```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({ faces = [myTag], thickness = 0.25 }, firstSketch)
 | 
						|
```
 | 
						|
 | 
						|

 | 
						|
 | 
						|
```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({
 | 
						|
  faces = [myTag, 'end'],
 | 
						|
  thickness = 0.25
 | 
						|
}, firstSketch)
 | 
						|
```
 | 
						|
 | 
						|

 | 
						|
 | 
						|
```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({ faces = ['start'], thickness = 5 }, case)
 | 
						|
```
 | 
						|
 | 
						|

 | 
						|
 | 
						|
```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({ faces = ['end'], thickness = 5 }, thing1)
 | 
						|
```
 | 
						|
 | 
						|

 | 
						|
 | 
						|
```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({ faces = ['end'], thickness = 5 }, [thing1, thing2])
 | 
						|
```
 | 
						|
 | 
						|

 | 
						|
 | 
						|
 |