Making springs -
including tapered helix and tapered wire.

main page

Making springs
The following is just one method of making a spring so that the (circular) cross-sections (of the spring 'wire') lie on planes that more closely approximate to the ideal in order to maintain the integrity of the shape.
To achieve this, the cross-section edgeloops of the spring have been rotated
6). Now need to move (Y) the sections the appropriate amount.
Select end face, press F twice for selections as shown and Move -> Y -> 0.2 WU everything selected.
7). After the Move -> Y
8). Press minus to decrease the selection and press shift D to repeat the Move-> Y. Repeat the whole sequence once more to move the end face.
9). Situation after all Move Y ops completed
We now have a finished 90 deg chunk of finished spring section - all that needs doing is to dupe this the required amount. Whilst there's lots of ways to achieve this, I used the following routine.
10). Select the 90 deg chunk and dupe on the spot 3 times (once then shift D)
Object select one chunk and rotate Y -> 90 deg (hold shift to constrain)
Keeping first (rotated) object selected, select another dupe and use shift D (to rotate both newly selected and first one) again. Repeat for last section
11). All appropriate faces are now exposed, so use Face | PutOn with relevant sections and after all in place, apply Object | Weld

There is (as always?) a compromise in this duping / welding of multiple sections approach - how many individual sections to deal with before duping etc - I'll leave this to the user.

Using Bounding Box Moves etc is - imo - a more precise way of aligning stuff than using PutOn and using more accurate figures etc all round will obviously produce results that are closer to the ideal (especially if dealing with multiple duped / welded sections) - but I suspect little of this is relevant for most purposes :)

Whilst the above involves a bit of maths, imo the result justifies the bit of effort - and will cope with any pitch of spring - if this is combined with the torus primitive controls available - then a flexible and versatile range of options is available to the user for those 'special' occasions when the basic spring won't suffice.

Nothing to stop user making a range of these, saving same and using merge - if frequently required:)

(More versatile methods below, imo)

Maths-free suggestions.

Use the whole of the method above - but 'eyeball' the angles and section Y moves - working on a known (desired) pitch change is probably the easier, more logical approach.
ie - Move Y one section 0.2 WU and then rotate the loop until 'it looks half reasonable' - then use this angle for the other sections.
Although less accurate (than using maths) - it'll be better than what follows :)

Create a default spring, select the whole spring except for the lowest section and the bottom end face.
Move -> Y all of this by some amount (say 0.10 WU)
Press (-) to deselect another section and then press shift D to move -> Y
Repeat for all sections untill all done (similar procedure to that used in 6 - 8 above)

Whilst this distorts the spring cross section it might be ok in some situations?
1). Create a torus - for once I've not used the default, because it would have been too large (image-wise) and has too many sections - just for showing a technique.
Select one of the edges (as shown) at the top or bottom - these give the true length between cross-section centres - and note its length from the info readout.
Decide on the spring pitch you want - I chose 2.4 WU (to keep the maths simple (with 12 sections).
To calculate the angle that cross-section edgeloops have to be rotated we now have both necessary bits of information for a bit of maths.

Tan A (angle) = Vertical height / Horizontal distance.

Vertical height = Pitch / No of sections = 2.4 / 12 = 0.2WU
Horiz. Distance = that measured in (1) = 0.517WU

Angle therefore = Tan(-1) 0.2 / 0.517 = Tan (-1) 0.387

Angle = 21.15 deg.

(Figures rounded for simplicity)

2). Select the first edgeloop and apply Edge | Rotate -> use RMB option and select the vert shown to fix the vector orig.
Press tab and enter 21.15 deg.
3). First edgeloop after being rotated.
4). Repeat 3 more times to finish all the sections for a 90 deg wedge.
5). Loopcut this wedge from the original torus and discard the unwanted bit.
Happened to be messing with this when saw the 'Gizmo' thread over at CGT.

Just a few mods to the bottom end (!) of what I already had .....
8). Repeat this op until they've all been rotated (except for last). A perspective view looks a mess - but a Y view doesn't :)
9). Just got to bridge between the cross-sections now.
Start at one end, select the relevant faces and apply Face | Bridge.
10). Once you can see what's what, you'll be able to do more than one pair of faces at the same camera setting - as here - obviously use Shift D for all the repeat Bridge ops.
11). Last pair of faces to be bridged.
12). Final tapered spring.

Fairly obvious (imo) what parameters affect the outcome - but, for the record:

'Wire' dia given by cylinder dia.
Spring radius (or start rad if tapered) given by initial X offset of cylinder..
Spring pitch by Y offset of first duped extraction. (If you've got a known pitch, divide this by the number of spring sections to get an individual section pitch, to use at this stage.)
Spring taper given by x offset of duped cross section. (see above re whole spring etc) and difference in start / finish dias.

Once you've done one (or 2) you'll get the hang of it all :)
Another approach - better, imo, - especially for 'weird' stuff :)

1). Create 2 cylinders having the required number of sections - I used 8.
Leave one in the default position, select the other, apply Object | Rotate -> X and then Move | X some distance (think I used 6, but can't remember - doesn't matter). This Move X op. will determine the radius of the spring - the spring 'wire' diameter is determined by the cylinder being moved.
Select the moved cyl. and apply Move | Z -> 1 unit (could just move the face) - select the end face shown.
2). Apply Face | Rotate -> X -> 10 deg - the actual figure you use for this rotate theoretically depends on stuff previously covered - but I'm assuming no-one's bothered with all this maths malarky - so am using approx. figures :)
3). Apply Face | Extract -> Normal -> zero - get rid of the cylinder.
4). View | Z, Ortho (important !) and apply Object | Duplicate -> Free. Move the dupe as required. Moving it +/- Y (only) will eventually produce a 'standard' spring - moving it X as well (as here) will produce a tapering spring, but constant wire dia.
I used 0.3 for Y, 0.15 for X.
5). Do some more dupes - I wanted a total of 17, so used Shift D 15 times.
6). All that needs doing now is to rotate these X sections into their correct positions.
With top one selected, apply Object | Rotate -> Y (use RMB option and select the top face of the remaining cylinder for the vector origin).
Drag first cross-section to 45 deg (use shift to constrain)
7). Keep first scetion selected, select next and use Shift D to rotate both (by another 45 deg).
Another approach - bridging between duped cross-sections - tapered helix shown.
1). Basic spring - I've used the intermediate stage version from the previous (pitch change) tut - but any will do.
2). If you want to create a single wire taper (direction) as here, decide which end will be the greater diameter end. Select that end face of the spring and apply Face | Extrude -> Normal -> 0.1 (say) - distance is totally irrelevant.
Repeat the extrude op 31 times, using Shift D.
3). Select all the wire cross-section edgeloops, except the opposite end from the multiple extrusions and apply Edge | Scale -> Uniform -> 105%.
4). Use Alt + Cntrl G to de-select the 2 end edgeloops from those selected - then re-apply the scale op (105%) using Shift D.
5). Repeat the whole of the procedure, alternating between deselection of the end edgeloops and using Shift D. This is relatively quick and easy - but keep your wits about you to do this in the correct sequence (order) (Probably helps if you're a keyboard player with Pink Floyd or similar).
This image shows the situation after doing half the loops.
6). Continue until all the ops are complete, then loopcut off the end multi-extrusion.
End result shown here - 104% would probably have been better - I'll let you find out for yourselves why :).

Doubtful that anything here will satisfy anyone wanting a 'one click' solution - but they're actually relatively quick to implement - and extremely versatile - especially when combined -imo.

Tapers can be changed at will and reversed at any time - non-linear stuff is also relatively easy - but remember - if you're intending to do something 'really' fancy, its better - imo - not to start with a Wings primitive spring, because the cross-sectional loops aren't correct and this can cause immense problems 'down the line'
Whilst I've used a Wings primitive spring, this method will also work with a spring created from scratch.

!). Default Wings spring (but 4 slices). Since I wanted a 'complete' 2 full turns of spring, I dialled in 3 turns and loopcut off the unwanted portion.
2). Select the whole spring and apply Object | Scale -> Y -> 200%. Whilst this will double the pitch, it also deforms the wire cross-section - as visible at the top.
3). Select all cross-section edge loops.
4). Apply Edge | Scale -> Y -> 50%. Since each edgeloop is scaled around its own (selection) centre, the new pitch doesn't alter, but the cross-sections do - and thus they return to circular - but half the required (original) diameter.
5). Leave the edgeloops selected and apply Edge | Scale -> Uniform -> 200%. This will return them to their correct diameter.
6). Finished spring with twice the pitch of the original default spring.

This will obviously work with other (pitch) scaling factors - if you get stuck in the middle of this - measure what you've got, compare with what you need - and use a calculator to work out the scale factor - if you're using 'messy' numbers.

The fact that the (circular) cross-sections are vertically aligned is still a problem, of course :)
Pitch modification - for use with Wings primitive springs, or otherwise created.
Spring wire taper - use with any spring type.
A few basic examples done with above methods.
9). Repeat this sequence for all of the verts around the cylinder - ie add a vert, Shift D, add a vert, Shift D etc until all verts lie on the correct (helical) path. (wire frame view to show helix)
10). Whilst verts are selected, connect them, using Vert | Connect (press C)
(don't forget to dissolve the edge joining the start and finish verts)
11). With helical sequence of edges selected, apply Edge | Bevel.
12). Apply Face | Extrude Region -> Normal and drag to suit.
13). Finished (very) basic thread. (add additional geom. to maintain thread cross section - if that's what's required, etc)

If you want the thread to continue (ie more than 360 deg say) - introduce more verts (using cut 2) at the appropriate end(s), line up using Vert | Flatten -> RMB option, and start another move sequence as described in (9))

If doing something like a machine screw / bolt / threaded rod, etc - an alternative approach to consider.
Select all axial edges as in (2)
Cut 8 (in this case) - in general, cut these edges the same number as the number of sides on the cylinder.
Then connect up the appropriate verts to form a helix - ie top vert on one edge, 2nd vert next edge, 3rd vert next ..... - you'll then have your first (helical) thread pitch.
Select object and apply Cleanup (to remove unwanted verts)
Dupe this basic (single thread) section and weld the dupes to form a longer object.
Remove edges around (welded) end faces (and cleanup again)

Carry on as shown in (10) to form the thread from the helical sequence of edges.

Another method on a temp page
Basic screw thread for bottles

Whilst a bottle-top screw thread is hardly a spring, it is of the same 'family' and -  having noticed a query about making same, decided to add something here.
There's many ways of going about this, depending on exactly what's needed, so I decided to stick to absolute basics and form a single helical path :)
1). Basic cylinder to show the idea - have used an 8 sided one as it's more than adequate for this purpose.
2). Select all radial edges and apply Edge | Cut -> 2 (or press 2) - could also use Vert | Connect to bisect the edges and join up the new verts with edges - all in one go.
3). New verts, halfway along edges.
4). Apply Vert | Move -> Y to provide a bit more room for the helix that will be formed underneath.
5). Deselect all verts and reselect any one - I chose this'un on, facing along the X axis.
6). Apply Vert | Move -> -Y (downwards) to the first vert (selected in (5)) and afterwards, select either (but not both) of the neighbouring verts - (one to the upper left here)
7). With both verts selected, apply shift + D (repeat last op  (move -Y) ) - this will move both verts downwards along the Y axis by the same amount as the initial move.
8). Situation after choosing the third vert and applying Shift + D again.