---
title: "helix"
excerpt: "Create a helix."
layout: manual
---

Create a helix.



```js
helix(revolutions: number, angle_start: number, ccw?: bool, radius: number, axis: Axis3dOrEdgeReference, length?: number) -> HelixValue
```


### Arguments

| Name | Type | Description | Required |
|----------|------|-------------|----------|
| `revolutions` | `number` | Number of revolutions. | Yes |
| `angle_start` | `number` | Start angle (in degrees). | Yes |
| `ccw` | `bool` | Is the helix rotation counter clockwise? The default is `false`. | No |
| `radius` | `number` | Radius of the helix. | Yes |
| `axis` | [`Axis3dOrEdgeReference`](/docs/kcl/types/Axis3dOrEdgeReference) | Axis to use for the helix. | Yes |
| `length` | `number` | 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 |

### Returns

[`HelixValue`](/docs/kcl/types/HelixValue) - A 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)
```

![Rendered example of helix 0](data:image/png;base64,[encoded data, 255704 characters])

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

![Rendered example of helix 1](data:image/png;base64,[encoded data, 251764 characters])

```js
// Create a helix around a custom axis.
helixPath = helix(
  angleStart = 0,
  ccw = true,
  revolutions = 5,
  length = 10,
  radius = 5,
  axis = {
  custom = {
    axis = [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)
```

![Rendered example of helix 2](data:image/png;base64,[encoded data, 238488 characters])


