* Parse [T] instead of T[] for array types Signed-off-by: Nick Cameron <nrc@ncameron.org> * homogenous arrays, type coercion, remove solid set and sketch set, etc Signed-off-by: Nick Cameron <nrc@ncameron.org> --------- Signed-off-by: Nick Cameron <nrc@ncameron.org>
201 lines
1.2 MiB
201 lines
1.2 MiB
---
|
|
title: "revolve"
|
|
excerpt: "Rotate a sketch around some provided axis, creating a solid from its extent."
|
|
layout: manual
|
|
---
|
|
|
|
Rotate a sketch around some provided axis, creating a solid from its extent.
|
|
|
|
This, like extrude, is able to create a 3-dimensional solid from a 2-dimensional sketch. However, unlike extrude, this creates a solid by using the extent of the sketch as its revolved around an axis rather than using the extent of the sketch linearly translated through a third dimension.
|
|
|
|
Revolve occurs around a local sketch axis rather than a global axis.
|
|
|
|
You can provide more than one sketch to revolve, and they will all be revolved around the same axis.
|
|
|
|
```js
|
|
revolve(
|
|
data: RevolveData,
|
|
sketches: [Sketch],
|
|
): [Solid]
|
|
```
|
|
|
|
|
|
### Arguments
|
|
|
|
| Name | Type | Description | Required |
|
|
|----------|------|-------------|----------|
|
|
| `data` | [`RevolveData`](/docs/kcl/types/RevolveData) | Data for revolution surfaces. | Yes |
|
|
| `sketches` | [`[Sketch]`](/docs/kcl/types/Sketch) | | Yes |
|
|
|
|
### Returns
|
|
|
|
[`[Solid]`](/docs/kcl/types/Solid)
|
|
|
|
|
|
### Examples
|
|
|
|
```js
|
|
part001 = startSketchOn('XY')
|
|
|> startProfileAt([4, 12], %)
|
|
|> line(end = [2, 0])
|
|
|> line(end = [0, -6])
|
|
|> line(end = [4, -6])
|
|
|> line(end = [0, -6])
|
|
|> line(end = [-3.75, -4.5])
|
|
|> line(end = [0, -5.5])
|
|
|> line(end = [-2, 0])
|
|
|> close()
|
|
|> revolve({ axis = 'y' }, %) // default angle is 360
|
|
```
|
|
|
|

|
|
|
|
```js
|
|
// A donut shape.
|
|
sketch001 = startSketchOn('XY')
|
|
|> circle(center = [15, 0], radius = 5)
|
|
|> revolve({ angle = 360, axis = 'y' }, %)
|
|
```
|
|
|
|

|
|
|
|
```js
|
|
part001 = startSketchOn('XY')
|
|
|> startProfileAt([4, 12], %)
|
|
|> line(end = [2, 0])
|
|
|> line(end = [0, -6])
|
|
|> line(end = [4, -6])
|
|
|> line(end = [0, -6])
|
|
|> line(end = [-3.75, -4.5])
|
|
|> line(end = [0, -5.5])
|
|
|> line(end = [-2, 0])
|
|
|> close()
|
|
|> revolve({ axis = 'y', angle = 180 }, %)
|
|
```
|
|
|
|

|
|
|
|
```js
|
|
part001 = startSketchOn('XY')
|
|
|> startProfileAt([4, 12], %)
|
|
|> line(end = [2, 0])
|
|
|> line(end = [0, -6])
|
|
|> line(end = [4, -6])
|
|
|> line(end = [0, -6])
|
|
|> line(end = [-3.75, -4.5])
|
|
|> line(end = [0, -5.5])
|
|
|> line(end = [-2, 0])
|
|
|> close()
|
|
|> revolve({ axis = 'y', angle = 180 }, %)
|
|
part002 = startSketchOn(part001, 'end')
|
|
|> startProfileAt([4.5, -5], %)
|
|
|> line(end = [0, 5])
|
|
|> line(end = [5, 0])
|
|
|> line(end = [0, -5])
|
|
|> close()
|
|
|> extrude(length = 5)
|
|
```
|
|
|
|

|
|
|
|
```js
|
|
box = startSketchOn('XY')
|
|
|> startProfileAt([0, 0], %)
|
|
|> line(end = [0, 20])
|
|
|> line(end = [20, 0])
|
|
|> line(end = [0, -20])
|
|
|> close()
|
|
|> extrude(length = 20)
|
|
|
|
sketch001 = startSketchOn(box, "END")
|
|
|> circle(center = [10, 10], radius = 4)
|
|
|> revolve({ angle = -90, axis = 'y' }, %)
|
|
```
|
|
|
|

|
|
|
|
```js
|
|
box = startSketchOn('XY')
|
|
|> startProfileAt([0, 0], %)
|
|
|> line(end = [0, 20])
|
|
|> line(end = [20, 0])
|
|
|> line(end = [0, -20], tag = $revolveAxis)
|
|
|> close()
|
|
|> extrude(length = 20)
|
|
|
|
sketch001 = startSketchOn(box, "END")
|
|
|> circle(center = [10, 10], radius = 4)
|
|
|> revolve({
|
|
angle = 90,
|
|
axis = getOppositeEdge(revolveAxis)
|
|
}, %)
|
|
```
|
|
|
|

|
|
|
|
```js
|
|
box = startSketchOn('XY')
|
|
|> startProfileAt([0, 0], %)
|
|
|> line(end = [0, 20])
|
|
|> line(end = [20, 0])
|
|
|> line(end = [0, -20], tag = $revolveAxis)
|
|
|> close()
|
|
|> extrude(length = 20)
|
|
|
|
sketch001 = startSketchOn(box, "END")
|
|
|> circle(center = [10, 10], radius = 4)
|
|
|> revolve({
|
|
angle = 90,
|
|
axis = getOppositeEdge(revolveAxis),
|
|
tolerance = 0.0001
|
|
}, %)
|
|
```
|
|
|
|

|
|
|
|
```js
|
|
sketch001 = startSketchOn('XY')
|
|
|> startProfileAt([10, 0], %)
|
|
|> line(end = [5, -5])
|
|
|> line(end = [5, 5])
|
|
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
|
|> close()
|
|
|
|
part001 = revolve({
|
|
axis = {
|
|
custom = {
|
|
axis = [0.0, 1.0],
|
|
origin = [0.0, 0.0]
|
|
}
|
|
}
|
|
}, sketch001)
|
|
```
|
|
|
|

|
|
|
|
```js
|
|
// Revolve two sketches around the same axis.
|
|
|
|
|
|
sketch001 = startSketchOn('XY')
|
|
profile001 = startProfileAt([4, 8], sketch001)
|
|
|> xLine(length = 3)
|
|
|> yLine(length = -3)
|
|
|> xLine(length = -3)
|
|
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
|
|> close()
|
|
|
|
profile002 = startProfileAt([-5, 8], sketch001)
|
|
|> xLine(length = 3)
|
|
|> yLine(length = -3)
|
|
|> xLine(length = -3)
|
|
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
|
|> close()
|
|
|
|
revolve({ axis = "X" }, [profile001, profile002])
|
|
```
|
|
|
|

|
|
|
|
|