Files
modeling-app/docs/kcl/revolve.md
Jess Frazelle 26fba71abf Revolve changed to kw args (#5873)
* initial port

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* more fixes

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* fix e2e

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* more fixes

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* update js side

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* fixes

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* fix;

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* cleanup

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

---------

Signed-off-by: Jess Frazelle <github@jessfraz.com>
2025-03-18 20:34:44 -07:00

1.4 MiB

title, excerpt, layout
title excerpt layout
revolve Rotate a sketch around some provided axis, creating a solid from its extent. 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.

revolve(
  sketches: [Sketch],
  axis: Axis2dOrEdgeReference,
  angle?: number,
  tolerance?: number,
): [Solid]

Arguments

Name Type Description Required
sketches [Sketch] The sketch or set of sketches that should be revolved Yes
axis Axis2dOrEdgeReference Axis of revolution. Yes
angle number Angle to revolve (in degrees). Default is 360. No
tolerance number Tolerance for the revolve operation. No

Returns

[Solid]

Examples

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

Rendered example of revolve 0

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

Rendered example of revolve 1

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)

Rendered example of revolve 2

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)

Rendered example of revolve 3

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

Rendered example of revolve 4

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

Rendered example of revolve 5

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)

Rendered example of revolve 6

sketch001 = startSketchOn('XY')
  |> startProfileAt([10, 0], %)
  |> line(end = [5, -5])
  |> line(end = [5, 5])
  |> line(endAbsolute = [profileStartX(%), profileStartY(%)])
  |> close()

part001 = revolve(
  sketch001,
  axis = {
    custom = {
      axis = [0.0, 1.0],
      origin = [0.0, 0.0]
    }
  },
)

Rendered example of revolve 7

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

Rendered example of revolve 8

// Revolve around a path that has not been extruded.


profile001 = startSketchOn('XY')
  |> 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)

Rendered example of revolve 9

// Revolve around a path that has not been extruded or closed.


profile001 = startSketchOn('XY')
  |> 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 revolve 10