467 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	title, excerpt, layout
| title | excerpt | layout | 
|---|---|---|
| rotate | Rotate a solid or a sketch. | manual | 
Rotate a solid or a sketch.
Using Roll, Pitch, and Yaw
When rotating a part in 3D space, "roll," "pitch," and "yaw" refer to the three rotational axes used to describe its orientation: roll is rotation around the longitudinal axis (front-to-back), pitch is rotation around the lateral axis (wing-to-wing), and yaw is rotation around the vertical axis (up-down); essentially, it's like tilting the part on its side (roll), tipping the nose up or down (pitch), and turning it left or right (yaw).
So, in the context of a 3D model:
- 
Roll: Imagine spinning a pencil on its tip - that's a roll movement.
 - 
Pitch: Think of a seesaw motion, where the object tilts up or down along its side axis.
 - 
Yaw: Like turning your head left or right, this is a rotation around the vertical axis
 
Using an Axis and Angle
When rotating a part around an axis, you specify the axis of rotation and the angle of rotation.
rotate(
  objects: SolidOrSketchOrImportedGeometry,
  roll?: number,
  pitch?: number,
  yaw?: number,
  axis?: [number],
  angle?: number,
  global?: bool,
): SolidOrSketchOrImportedGeometry
Arguments
| Name | Type | Description | Required | 
|---|---|---|---|
objects | 
SolidOrSketchOrImportedGeometry | 
The solid, sketch, or set of solids or sketches to rotate. | Yes | 
roll | 
number | 
The roll angle in degrees. Must be used with pitch and yaw. Must be between -360 and 360. | 
No | 
pitch | 
number | 
The pitch angle in degrees. Must be used with roll and yaw. Must be between -360 and 360. | 
No | 
yaw | 
number | 
The yaw angle in degrees. Must be used with roll and pitch. Must be between -360 and 360. | 
No | 
axis | 
[number] | 
The axis to rotate around. Must be used with angle. | 
No | 
angle | 
number | 
The angle to rotate in degrees. Must be used with axis. Must be between -360 and 360. | 
No | 
global | 
bool | 
If true, the transform is applied in global space. The origin of the model will move. By default, the transform is applied in local sketch axis, therefore the origin will not move. | No | 
Returns
SolidOrSketchOrImportedGeometry - Data for a solid or an imported geometry.
Examples
// Rotate a pipe with roll, pitch, and yaw.
// Create a path for the sweep.
sweepPath = startSketchOn('XZ')
  |> startProfileAt([0.05, 0.05], %)
  |> line(end = [0, 7])
  |> tangentialArc({ offset = 90, radius = 5 }, %)
  |> line(end = [-3, 0])
  |> tangentialArc({ offset = -90, radius = 5 }, %)
  |> line(end = [0, 7])
// Create a hole for the pipe.
pipeHole = startSketchOn('XY')
  |> circle(center = [0, 0], radius = 1.5)
sweepSketch = startSketchOn('XY')
  |> circle(center = [0, 0], radius = 2)
  |> hole(pipeHole, %)
  |> sweep(path = sweepPath)
  |> rotate(roll = 10, pitch = 10, yaw = 90)
// Rotate a pipe about an axis with an angle.
// Create a path for the sweep.
sweepPath = startSketchOn('XZ')
  |> startProfileAt([0.05, 0.05], %)
  |> line(end = [0, 7])
  |> tangentialArc({ offset = 90, radius = 5 }, %)
  |> line(end = [-3, 0])
  |> tangentialArc({ offset = -90, radius = 5 }, %)
  |> line(end = [0, 7])
// Create a hole for the pipe.
pipeHole = startSketchOn('XY')
  |> circle(center = [0, 0], radius = 1.5)
sweepSketch = startSketchOn('XY')
  |> circle(center = [0, 0], radius = 2)
  |> hole(pipeHole, %)
  |> sweep(path = sweepPath)
  |> rotate(axis = [0, 0, 1.0], angle = 90)
// Rotate an imported model.
import "tests/inputs/cube.sldprt" as cube
cube
  |> rotate(axis = [0, 0, 1.0], angle = 90)
// Sweep two sketches along the same path.
sketch001 = startSketchOn('XY')
rectangleSketch = startProfileAt([-200, 23.86], sketch001)
  |> angledLine([0, 73.47], %, $rectangleSegmentA001)
  |> angledLine([
       segAng(rectangleSegmentA001) - 90,
       50.61
     ], %)
  |> angledLine([
       segAng(rectangleSegmentA001),
       -segLen(rectangleSegmentA001)
     ], %)
  |> line(endAbsolute = [profileStartX(%), profileStartY(%)])
  |> close()
circleSketch = circle(sketch001, center = [200, -30.29], radius = 32.63)
sketch002 = startSketchOn('YZ')
sweepPath = startProfileAt([0, 0], sketch002)
  |> yLine(length = 231.81)
  |> tangentialArc({ radius = 80, offset = -90 }, %)
  |> xLine(length = 384.93)
parts = sweep([rectangleSketch, circleSketch], path = sweepPath)
// Rotate the sweeps.
rotate(parts, axis = [0, 0, 1.0], angle = 90)
// Translate and rotate a sketch to create a loft.
sketch001 = startSketchOn('XY')
fn square() {
  return startProfileAt([-10, 10], sketch001)
    |> xLine(length = 20)
    |> yLine(length = -20)
    |> xLine(length = -20)
    |> line(endAbsolute = [profileStartX(%), profileStartY(%)])
    |> close()
}
profile001 = square()
profile002 = square()
  |> translate(translate = [0, 0, 20])
  |> rotate(axis = [0, 0, 1.0], angle = 45)
loft([profile001, profile002])