Skip to main content
OCCT category icon with a stylized logo representation

Creating Helix Wires

This tutorial demonstrates how to create three types of helical and spiral wire shapes using OpenCASCADE (OCCT). These curves are fundamental building blocks for modeling springs, threads, coils, and other spiral-based geometries.

Types of Helix and Spiral Wires

1. Regular Helix Wire

A helix is a 3D curve that winds around an axis while rising at a constant rate. Think of a spring or a corkscrew. Key parameters include:

  • Radius: The distance from the central axis to the helix curve
  • Pitch: The vertical distance covered in one complete revolution (360°)
  • Height: The total vertical extent of the helix
  • Direction: The axis around which the helix winds (typically Y-up: [0, 1, 0])
  • Clockwise: Determines the winding direction when viewed from above

2. Flat Spiral Wire (Archimedean Spiral)

A flat spiral lies entirely in a plane and expands outward from a center point. This is useful for creating decorative patterns, clock springs, or spiral ramps. Key parameters include:

  • Start Radius: The inner radius where the spiral begins
  • End Radius: The outer radius where the spiral ends
  • Number of Turns: How many complete rotations the spiral makes
  • Direction: The normal vector of the plane containing the spiral

3. Tapered Helix Wire (Conical Helix)

A tapered helix combines the rising motion of a regular helix with a changing radius, creating a cone-shaped spiral. This is commonly used for conical springs or decorative elements. Key parameters include:

  • Start Radius: The radius at the base of the cone
  • End Radius: The radius at the top of the cone
  • Pitch and Height: Same as a regular helix

Example Overview

The interactive examples below create all three wire types positioned side by side:

  • Left (x = -8): A regular helix with radius 1, pitch 1, and height 5
  • Center (x = 0): A flat spiral expanding from radius 0.5 to 5 with 5 turns
  • Right (x = 8): A tapered helix narrowing from radius 2 to 0.5
Bitbybit Platform

Regular helix, tapered helix and flat spiral examples

rete logoRete
Script Source (rete)
{
"id": "rete-v2-json",
"nodes": {
"2abca66d21efd2a2": {
"id": "2abca66d21efd2a2",
"name": "bitbybit.occt.shapes.wire.createHelixWire",
"customName": "create helix wire",
"async": true,
"drawable": true,
"data": {
"genericNodeData": {
"hide": false,
"oneOnOne": false,
"flatten": 0,
"forceExecution": false
},
"radius": 1,
"pitch": 1,
"height": 5,
"center": [
0,
0,
0
],
"direction": [
0,
1,
0
],
"clockwise": false,
"tolerance": 0.0001
},
"inputs": {
"center": {
"connections": [
{
"node": "26d17aed24ceb170",
"output": "result",
"data": {}
}
]
}
},
"position": [
706.0512890586609,
285.8208999785649
]
},
"26d17aed24ceb170": {
"id": "26d17aed24ceb170",
"name": "bitbybit.vector.vectorXYZ",
"customName": "vector xyz",
"async": false,
"drawable": true,
"data": {
"genericNodeData": {
"hide": true,
"oneOnOne": false,
"flatten": 0,
"forceExecution": false
},
"x": -8,
"y": 0,
"z": 0
},
"inputs": {},
"position": [
308.13724588203286,
400.4410333929026
]
},
"389d488161c3075a": {
"id": "389d488161c3075a",
"name": "bitbybit.occt.shapes.wire.createTaperedHelixWire",
"customName": "create tapered helix wire",
"async": true,
"drawable": true,
"data": {
"genericNodeData": {
"hide": false,
"oneOnOne": false,
"flatten": 0,
"forceExecution": false
},
"startRadius": 2,
"endRadius": 0.5,
"pitch": 1,
"height": 5,
"center": [
0,
0,
0
],
"direction": [
0,
1,
0
],
"clockwise": false,
"tolerance": 0.0001
},
"inputs": {
"center": {
"connections": [
{
"node": "307bea8c538bbc14",
"output": "result",
"data": {}
}
]
}
},
"position": [
1983.3245178411435,
306.0315773435569
]
},
"5963964013669860": {
"id": "5963964013669860",
"name": "bitbybit.occt.shapes.wire.createFlatSpiralWire",
"customName": "create flat spiral wire",
"async": true,
"drawable": true,
"data": {
"genericNodeData": {
"hide": false,
"oneOnOne": false,
"flatten": 0,
"forceExecution": false
},
"startRadius": 0.5,
"endRadius": 5,
"numTurns": 5,
"center": [
0,
0,
0
],
"direction": [
0,
1,
0
],
"clockwise": false,
"tolerance": 0.0001
},
"inputs": {},
"position": [
1143.7762077506823,
290.70325704546104
]
},
"307bea8c538bbc14": {
"id": "307bea8c538bbc14",
"name": "bitbybit.vector.vectorXYZ",
"customName": "vector xyz",
"async": false,
"drawable": true,
"data": {
"genericNodeData": {
"hide": true,
"oneOnOne": false,
"flatten": 0,
"forceExecution": false
},
"x": 8,
"y": 0,
"z": 0
},
"inputs": {},
"position": [
1587.768691450028,
458.8546759665349
]
}
}
}

Practical Applications

These helix and spiral wires serve as the foundation for many real-world modeling scenarios:

  • Springs and Coils: Use regular or tapered helixes as sweep paths to create compression springs, extension springs, or coil shapes
  • Threads and Screws: Helixes can define the path for thread profiles when creating bolts, screws, or nuts
  • Spiral Staircases: Flat spirals or helixes can guide the placement of steps in architectural designs
  • Decorative Elements: Spirals add visual interest to jewelry, furniture, and artistic designs
  • Pipes and Tubing: Sweep a circular profile along a helix to create coiled pipes or tubes

Tips for Working with Helix Wires

  1. Tolerance Parameter: Lower tolerance values create smoother curves but require more computation. The default 0.0001 provides a good balance for most use cases.

  2. Direction Vector: The direction defines the axis of rotation. Use [0, 1, 0] for vertical helixes, [1, 0, 0] for horizontal ones along X, or any normalized vector for custom orientations.

  3. Combining with Other Operations: These wires can be used with operations like pipe, sweep, or loft to create solid 3D shapes from the wire paths.