Engine fixed a bug where helices were starting at the wrong position. Requires updating the snapshots.
		
			
				
	
	
		
			125 lines
		
	
	
		
			928 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			125 lines
		
	
	
		
			928 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
---
 | 
						|
title: "std::helix"
 | 
						|
excerpt: "Create a helix."
 | 
						|
layout: manual
 | 
						|
---
 | 
						|
 | 
						|
Create a helix.
 | 
						|
 | 
						|
 | 
						|
 | 
						|
```js
 | 
						|
helix(
 | 
						|
  revolutions: number(_),
 | 
						|
  angleStart: number(Angle),
 | 
						|
  ccw?: bool,
 | 
						|
  radius?: number(Length),
 | 
						|
  axis?: Axis3d | Edge,
 | 
						|
  length?: number(Length),
 | 
						|
  cylinder?: Solid,
 | 
						|
): Helix
 | 
						|
```
 | 
						|
 | 
						|
 | 
						|
### Arguments
 | 
						|
 | 
						|
| Name | Type | Description | Required |
 | 
						|
|----------|------|-------------|----------|
 | 
						|
| `revolutions` | `number(_)` | Number of revolutions. | Yes |
 | 
						|
| `angleStart` | `number(Angle)` | Start angle (in degrees). | Yes |
 | 
						|
| `ccw` | [`bool`](/docs/kcl/types/bool) | Is the helix rotation counter clockwise? The default is `false`. | No |
 | 
						|
| `radius` | `number(Length)` | Radius of the helix. | No |
 | 
						|
| `axis` | `Axis3d | Edge` | Axis to use for the helix. | No |
 | 
						|
| `length` | `number(Length)` | Length of the helix. This is not necessary if the helix is created around an edge. If not given the length of the edge is used. | No |
 | 
						|
| `cylinder` | [`Solid`](/docs/kcl/types/Solid) | Cylinder to create the helix on. | No |
 | 
						|
 | 
						|
### Returns
 | 
						|
 | 
						|
[`Helix`](/docs/kcl/types/Helix)
 | 
						|
 | 
						|
 | 
						|
### Examples
 | 
						|
 | 
						|
```js
 | 
						|
// Create a helix around the Z axis.
 | 
						|
helixPath = helix(
 | 
						|
    angleStart = 0,
 | 
						|
    ccw = true,
 | 
						|
    revolutions = 5,
 | 
						|
    length = 10,
 | 
						|
    radius = 5,
 | 
						|
    axis = Z,
 | 
						|
 )
 | 
						|
 | 
						|
// Create a spring by sweeping around the helix path.
 | 
						|
springSketch = startSketchOn(YZ)
 | 
						|
    |> circle( center = [0, 0], radius = 0.5)
 | 
						|
    |> sweep(path = helixPath)
 | 
						|
```
 | 
						|
 | 
						|

 | 
						|
 | 
						|
```js
 | 
						|
// Create a helix around an edge.
 | 
						|
helper001 = startSketchOn(XZ)
 | 
						|
 |> startProfileAt([0, 0], %)
 | 
						|
 |> line(end = [0, 10], tag = $edge001)
 | 
						|
 | 
						|
helixPath = helix(
 | 
						|
    angleStart = 0,
 | 
						|
    ccw = true,
 | 
						|
    revolutions = 5,
 | 
						|
    length = 10,
 | 
						|
    radius = 5,
 | 
						|
    axis = edge001,
 | 
						|
 )
 | 
						|
 | 
						|
// Create a spring by sweeping around the helix path.
 | 
						|
springSketch = startSketchOn(XY)
 | 
						|
    |> circle( center = [0, 0], radius = 0.5 )
 | 
						|
    |> sweep(path = helixPath)
 | 
						|
```
 | 
						|
 | 
						|

 | 
						|
 | 
						|
```js
 | 
						|
// Create a helix around a custom axis.
 | 
						|
helixPath = helix(
 | 
						|
    angleStart = 0,
 | 
						|
    ccw = true,
 | 
						|
    revolutions = 5,
 | 
						|
    length = 10,
 | 
						|
    radius = 5,
 | 
						|
    axis = {
 | 
						|
        direction = [0, 0, 1.0],
 | 
						|
        origin = [0, 0.25, 0]
 | 
						|
    }
 | 
						|
 )
 | 
						|
 | 
						|
// Create a spring by sweeping around the helix path.
 | 
						|
springSketch = startSketchOn(XY)
 | 
						|
    |> circle( center = [0, 0], radius = 1 )
 | 
						|
    |> sweep(path = helixPath)
 | 
						|
```
 | 
						|
 | 
						|

 | 
						|
 | 
						|
```js
 | 
						|
// Create a helix on a cylinder.
 | 
						|
 | 
						|
part001 = startSketchOn(XY)
 | 
						|
  |> circle( center= [5, 5], radius= 10 )
 | 
						|
  |> extrude(length = 10)
 | 
						|
 | 
						|
helix(
 | 
						|
    angleStart = 0,
 | 
						|
    ccw = true,
 | 
						|
    revolutions = 16,
 | 
						|
    cylinder = part001,
 | 
						|
 )
 | 
						|
```
 | 
						|
 | 
						|

 | 
						|
 | 
						|
 |