247 lines
1.4 MiB
Markdown
247 lines
1.4 MiB
Markdown
![]() |
---
|
||
|
title: "std::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(@sketches: [Sketch; 1+], axis: Axis2d | Edge, angle?: number(deg), tolerance?: number(mm), tagStart?: tag, tagEnd?: tag): Solid
|
||
|
```
|
||
|
|
||
|
|
||
|
### Arguments
|
||
|
|
||
|
| Name | Type | Description | Required |
|
||
|
|----------|------|-------------|----------|
|
||
|
| `sketches` | `[Sketch; 1+]` | The sketch or set of sketches that should be revolved | Yes |
|
||
|
| `axis` | `Axis2d | Edge` | Axis of revolution. | Yes |
|
||
|
| `angle` | `number(deg)` | Angle to revolve (in degrees). Default is 360. | No |
|
||
|
| `tolerance` | `number(mm)` | Tolerance for the revolve operation. | No |
|
||
|
| `tagStart` | [`tag`](/docs/kcl/types/tag) | A named tag for the face at the start of the revolve, i.e. the original sketch. | No |
|
||
|
| `tagEnd` | [`tag`](/docs/kcl/types/tag) | A named tag for the face at the end of the revolve. | No |
|
||
|
|
||
|
### 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
|
||
|
```
|
||
|
|
||
|

|
||
|
|> circle( center = [15, 0], radius = 5 )
|
||
|
|> revolve(
|
||
|
angle = 360,
|
||
|
axis = Y,
|
||
|
)
|
||
|
```
|
||
|
|
||
|

|
||
|
|> 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)
|
||
|
```
|
||
|
|
||
|

|
||
|
|> 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)
|
||
|
```
|
||
|
|
||
|

|
||
|
|> 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
|
||
|
)
|
||
|
```
|
||
|
|
||
|

|
||
|
|> 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)
|
||
|
)
|
||
|
```
|
||
|
|
||
|

|
||
|
|> 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
|
||
|
)
|
||
|
```
|
||
|
|
||
|

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

|
||
|
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(
|
||
|
[profile001, profile002],
|
||
|
axis = X,
|
||
|
)
|
||
|
```
|
||
|
|
||
|

|
||
|
|> startProfileAt([0, 0], %)
|
||
|
|> line(end = [0, 20], tag = $revolveAxis)
|
||
|
|> line(end = [20, 0])
|
||
|
|> line(end = [0, -20])
|
||
|
|> close(%)
|
||
|
|
||
|
sketch001 = startSketchOn(XY)
|
||
|
|> circle(center = [-10, 10], radius = 4)
|
||
|
|> revolve(angle = 90, axis = revolveAxis)
|
||
|
```
|
||
|
|
||
|

|
||
|
|> startProfileAt([0, 0], %)
|
||
|
|> line(end = [0, 20], tag = $revolveAxis)
|
||
|
|> line(end = [20, 0])
|
||
|
|
||
|
sketch001 = startSketchOn(XY)
|
||
|
|> circle(center = [-10, 10], radius = 4)
|
||
|
|> revolve(angle = 90, axis = revolveAxis)
|
||
|
```
|
||
|
|
||
|
![Rendered example of std::revolve 10](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAADM6UlEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVdddd
|
||
|
|
||
|
|