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?: TagDecl,
tagEnd?: TagDecl,
): [Solid; 1+]
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
Name | Type | Description | Required |
---|---|---|---|
sketches | [Sketch; 1+] | The sketch or set of sketches that should be revolved | Yes |
axis | Axis2d or Edge | Axis of revolution. | Yes |
angle | number(Angle) | Angle to revolve (in degrees). Default is 360. | No |
tolerance | number(Length) | Defines the smallest distance below which two entities are considered coincident, intersecting, coplanar, or similar. For most use cases, it should not be changed from its default value of 10^-7 millimeters. | No |
symmetric | bool | If true, the extrusion will happen symmetrically around the sketch. Otherwise, the extrusion will happen on only one side of the sketch. | No |
bidirectionalAngle | number(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 |
tagStart | TagDecl | A named tag for the face at the start of the revolve, i.e. the original sketch. | No |
tagEnd | TagDecl | A named tag for the face at the end of the revolve. | No |
Returns
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 360deg
// A donut shape.
sketch001 = startSketchOn(XY)
|> circle(center = [15, 0], radius = 5)
|> revolve(angle = 360deg, axis = Y)
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 = 180deg)
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 = 180deg)
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)
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 = -90deg, axis = Y)
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 = 90deg, axis = getOppositeEdge(revolveAxis))
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 = 90deg, axis = getOppositeEdge(revolveAxis), tolerance = 0.0001)
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]
},
)
// 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)
// 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 = 90deg, axis = revolveAxis)
// 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 = 90deg, axis = revolveAxis)
// 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 = 90deg, axis = revolveAxis, symmetric = true)
// 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 = 90deg, axis = revolveAxis, bidirectionalAngle = 50)