* extend extrude endpoint * revolve and mocks * add bounds check to revolve * kcl examples of new args * update to 110 * fix mock * move example to prelude * change to camelCase * new prelude tests * extend just file * missed change * change to XY * redo sim tests * review changes * redo markdown
137 lines
343 KiB
Markdown
137 lines
343 KiB
Markdown
---
|
|
title: "extrude"
|
|
excerpt: "Extend a 2-dimensional sketch through a third dimension in order to create new 3-dimensional volume, or if extruded into an existing volume, cut into an existing solid."
|
|
layout: manual
|
|
---
|
|
|
|
Extend a 2-dimensional sketch through a third dimension in order to create new 3-dimensional volume, or if extruded into an existing volume, cut into an existing solid.
|
|
|
|
You can provide more than one sketch to extrude, and they will all be extruded in the same direction.
|
|
|
|
```js
|
|
extrude(
|
|
sketches: [Sketch],
|
|
length: number,
|
|
symmetric?: bool,
|
|
bidirectionalLength?: number,
|
|
tagStart?: TagDeclarator,
|
|
tagEnd?: TagDeclarator,
|
|
): [Solid]
|
|
```
|
|
|
|
|
|
### Arguments
|
|
|
|
| Name | Type | Description | Required |
|
|
|----------|------|-------------|----------|
|
|
| `sketches` | [`[Sketch]`](/docs/kcl/types/Sketch) | Which sketch or sketches should be extruded | Yes |
|
|
| `length` | [`number`](/docs/kcl/types/number) | How far to extrude the given sketches | Yes |
|
|
| `symmetric` | [`bool`](/docs/kcl/types/bool) | If true, the extrusion will happen symmetrically around the sketch. Otherwise, the | No |
|
|
| `bidirectionalLength` | [`number`](/docs/kcl/types/number) | If specified, will also extrude in the opposite direction to 'distance' to the specified distance. If 'symmetric' is true, this value is ignored. | No |
|
|
| `tagStart` | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | A named tag for the face at the start of the extrusion, i.e. the original sketch | No |
|
|
| `tagEnd` | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | A named tag for the face at the end of the extrusion, i.e. the new face created by extruding the original sketch | No |
|
|
|
|
### Returns
|
|
|
|
[`[Solid]`](/docs/kcl/types/Solid)
|
|
|
|
|
|
### Examples
|
|
|
|
```js
|
|
example = startSketchOn(XZ)
|
|
|> startProfileAt([0, 0], %)
|
|
|> line(end = [10, 0])
|
|
|> arc({
|
|
angleStart = 120,
|
|
angleEnd = 0,
|
|
radius = 5
|
|
}, %)
|
|
|> line(end = [5, 0])
|
|
|> line(end = [0, 10])
|
|
|> bezierCurve({
|
|
control1 = [-10, 0],
|
|
control2 = [2, 10],
|
|
to = [-5, 10]
|
|
}, %)
|
|
|> line(end = [-5, -2])
|
|
|> close()
|
|
|> extrude(length = 10)
|
|
```
|
|
|
|

|
|
|
|
```js
|
|
exampleSketch = startSketchOn(XZ)
|
|
|> startProfileAt([-10, 0], %)
|
|
|> arc({
|
|
angleStart = 120,
|
|
angleEnd = -60,
|
|
radius = 5
|
|
}, %)
|
|
|> line(end = [10, 0])
|
|
|> line(end = [5, 0])
|
|
|> bezierCurve({
|
|
control1 = [-3, 0],
|
|
control2 = [2, 10],
|
|
to = [-5, 10]
|
|
}, %)
|
|
|> line(end = [-4, 10])
|
|
|> line(end = [-5, -2])
|
|
|> close()
|
|
|
|
example = extrude(exampleSketch, length = 10)
|
|
```
|
|
|
|

|
|
|
|
```js
|
|
exampleSketch = startSketchOn(XZ)
|
|
|> startProfileAt([-10, 0], %)
|
|
|> arc({
|
|
angleStart = 120,
|
|
angleEnd = -60,
|
|
radius = 5
|
|
}, %)
|
|
|> line(end = [10, 0])
|
|
|> line(end = [5, 0])
|
|
|> bezierCurve({
|
|
control1 = [-3, 0],
|
|
control2 = [2, 10],
|
|
to = [-5, 10]
|
|
}, %)
|
|
|> line(end = [-4, 10])
|
|
|> line(end = [-5, -2])
|
|
|> close()
|
|
|
|
example = extrude(exampleSketch, length = 20, symmetric = true)
|
|
```
|
|
|
|

|
|
|
|
```js
|
|
exampleSketch = startSketchOn(XZ)
|
|
|> startProfileAt([-10, 0], %)
|
|
|> arc({
|
|
angleStart = 120,
|
|
angleEnd = -60,
|
|
radius = 5
|
|
}, %)
|
|
|> line(end = [10, 0])
|
|
|> line(end = [5, 0])
|
|
|> bezierCurve({
|
|
control1 = [-3, 0],
|
|
control2 = [2, 10],
|
|
to = [-5, 10]
|
|
}, %)
|
|
|> line(end = [-4, 10])
|
|
|> line(end = [-5, -2])
|
|
|> close()
|
|
|
|
example = extrude(exampleSketch, length = 10, bidirectionalLength = 50)
|
|
```
|
|
|
|

|
|
|
|
|