kcl library referencestdsketchrevolve

revolveFunction in std::sketch

Rotate a sketch around some provided axis, creating a solid from its extent.

revolve(
  @sketches: [Sketch; 1+],
  axis: Axis2d | Edge,
  angle?: number(Angle),
  tolerance?: number(Length),
  symmetric?: bool,
  bidirectionalAngle?: number(Angle),
  tagStart?: tag,
  tagEnd?: tag,
): Solid

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.

Arguments

NameTypeDescriptionRequired
sketches[Sketch; 1+]The sketch or set of sketches that should be revolvedYes
axisAxis2d or EdgeAxis of revolution.Yes
anglenumber(Angle)Angle to revolve (in degrees). Default is 360.No
tolerancenumber(Length)Tolerance for the revolve operation.No
symmetricboolIf true, the extrusion will happen symmetrically around the sketch. Otherwise, the extrusion will happen on only one side of the sketch.No
bidirectionalAnglenumber(Angle)If specified, will also revolve in the opposite direction to 'angle' to the specified angle. If 'symmetric' is true, this value is ignored.No
tagStarttagA named tag for the face at the start of the revolve, i.e. the original sketch.No
tagEndtagA named tag for the face at the end of the revolve.No

Returns

Solid - A solid is a collection of extrude surfaces.

Examples

part001 = startSketchOn(XY)
    |> startProfile(at = [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)
    |> startProfile(at = [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)
    |> startProfile(at = [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, face = END)
    |> startProfile(at = [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)
    |> startProfile(at = [0, 0])
    |> line(end = [0, 20])
    |> line(end = [20, 0])
    |> line(end = [0, -20])
    |> close()
    |> extrude(length = 20)

sketch001 = startSketchOn(box, face = END)
    |> circle( center = [10,10], radius = 4 )
    |> revolve(
        angle = -90,
        axis = Y
    )

Rendered example of revolve 4

box = startSketchOn(XY)
    |> startProfile(at = [0, 0])
    |> line(end = [0, 20])
    |> line(end = [20, 0])
    |> line(end = [0, -20], tag = $revolveAxis)
    |> close()
    |> extrude(length = 20)

sketch001 = startSketchOn(box, face = END)
    |> circle( center = [10,10], radius = 4 )
    |> revolve(
        angle = 90,
        axis = getOppositeEdge(revolveAxis)
    )

Rendered example of revolve 5

box = startSketchOn(XY)
    |> startProfile(at = [0, 0])
    |> line(end = [0, 20])
    |> line(end = [20, 0])
    |> line(end = [0, -20], tag = $revolveAxis)
    |> close()
    |> extrude(length = 20)

sketch001 = startSketchOn(box, face = END)
    |> circle( center = [10,10], radius = 4 )
    |> revolve(
        angle = 90,
        axis = getOppositeEdge(revolveAxis),
        tolerance = 0.0001
    )

Rendered example of revolve 6

sketch001 = startSketchOn(XY)
  |> startProfile(at = [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]
  }
)

Rendered example of revolve 7

// Revolve two sketches around the same axis.

sketch001 = startSketchOn(XY)
profile001 = startProfile(sketch001, at = [4, 8])
    |> xLine(length = 3)
    |> yLine(length = -3)
    |> xLine(length = -3)
    |> line(endAbsolute = [profileStartX(%), profileStartY(%)])
    |> close()

profile002 = startProfile(sketch001, at = [-5, 8])
    |> 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)
    |> startProfile(at = [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)
    |> startProfile(at = [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

// Symmetrically revolve around a path.

profile001 = startSketchOn(XY)
    |> startProfile(at = [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, symmetric = true)

Rendered example of revolve 11

// Bidirectional revolve around a path.

profile001 = startSketchOn(XY)
    |> startProfile(at = [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, bidirectionalAngle = 50)

Rendered example of revolve 12