Helix in eight shape

How can I make an eight shape helix like this?

helix eight shape


Tx in advance for your help


Hi Guy,

Welcome to the forum. Here’s one way to do this:

We are going to start with a quarter turn of a helix to form part of the outer curve of a line that will be the centreline of the pipe. There’s going to be a lot of symmetry so we’ll work around the origin - if you need the object elsewhere in the model space its easier to work here and move it once made.

Create a short line to represent the axis of the first helix. Position it roughly as shown:

In the front view, create a helix using the AroundCurve option. Make your start point off to the left at a suitable radius for the outside of the loop and set the number of turns to 0.25:

In the front view again, make a polar array of the helix around the origin, with number of objects = 2 and angle to fill = 180:

In the top view, mirror the second helix on the x-axis, using the Copy = No option:

In the front view, draw a line between the two closest points of the two helixes:

Use the match command to match the start of the straight line to the first helix, using the curvature continuity option, then repeat for the other end and the second helix:

Join the two helixes and the line to make a single curve. In the Right view, make a polar array of the curve, centred on its end point, with number of objects = 2 and angle to fill = 180:

Join the two curves, then use Scale1D to adjust how tightly you want the coils to lie:

Create a linear array of the curve, setting the number of items to however many coils you want and setting the first reference point to the start of the curve and the second reference point to its end:

Finally, pipe the curve using a radius appropriate to the size of the tubing:

If you want to introduce some real-world irregularity to the size and spacing of the coils, per your ground-source loop picture, then before piping you can turn on control points for the curve and mess around with their positions using scale, shear, twist etc. You’ll find an earlier thread in this forum on creating a telephone cord where I go into a little more detail on this.


1 Like

Method using FlowAlongSrf. This method ensures a constant grade along the “helix”.
F8HDC1.3dm (3.6 MB)

Create a planar curve with the planview shape of one half of a loop, with the ends of the curve at the crossing location.
To keep the curve from automatically closing and becoming smooth, first create an open curve. Then move one end to coincide with the other end.
If continuous curvature is desired the curve needs to have zero curvature at the ends needs to be zero. An easy way to ensure this if using the Curve command is to make the curve “SubD friendly”. (Note SubD modeling is not used in this method.)

Extrude the curve to the height between crossings. Note that this is have the “pitch” of the helix.

Unroll the surface.
Create a diagonal line across the unrolled surface.

FlowAlongSrf the diagonal line onto the extruded surface.
The line is object to be flowed.
The unrolled surface is the base surface. Select near a corner on the long side.
The extruded surface is the target surface. Select near a corner on the bottom.

Copy the curve with one ends meeting.
Mirror with Copy=No the copied curve to create the other half of the helix curve.

Array as desired.
Pipe if desired.


Incredible, thanks for both (quick!) replies, I will try them out.
I come from SU, didn’t know there was such a helpfull community for Rhino.

1 Like