Worm Drive, Non-Throated

by syvwlch, published

Worm Drive, Non-Throated by syvwlch May 26, 2011
4 Share
Download All Files

Thing Apps Enabled

Order This Printed View All Apps



Public Domain
Worm Drive, Non-Throated by syvwlch is licensed under the Public Domain license.

Use This Project

Give a Shout Out

If you print this Thing and display it in public proudly give attribution by printing and displaying this tag.

Print Thing Tag

Thing Statistics

24914Views 6085Downloads


Ok, once you have an involute gear library AND a trapezoid thread library, you can easily make the simplest of worm drives, i.e. the non-throated kind.

Like all worm drives, the gear advances by one tooth for each revolution of the screw but with non-throated ones, there is only a single point of contact at any one time, and so torque and wear capabilities are limited.

As I pointed out in the comments, AFAIK a trapezoidal profile for the worm screw is all you need to match the worm gear's involute.

To make them mesh, all I did was to make sure that:

  1. the pitch is the same (distance from crest to crest),
  2. the pressure angle of the gear is equal to the angle of the sides of the screw profile,
  3. the distance between screw and gear is equal to the gear's radial pitch plus the screw's mid-profile radius, and
  4. the twist on the gear is equal to the gear's pitch radius divided by the screw's mid profile radius, with a sign depending on the screw's handedness.


This openSCAD script is a demo of the trapezoid thread library but also uses the MCAD involute gears library. It will only work if both of these are in the same directory or in your libraries directory.

It is ready for animation, and I have added a GIF of the animation in the comments below.

This code is in the same repository as the library:

All Apps

3D Print your file with 3D Hubs, the world’s largest online marketplace for 3D printing services.

App Info Launch App

Auto-magically prepare your 3D models for 3D printing. A cloud based 3D models Preparing and Healing solution for 3D Printing, MakePrintable provides features for model repairing, wall thickness...

App Info Launch App

Kiri:Moto is an integrated cloud-based slicer and tool-path generator for 3D Printing, CAM / CNC and Laser cutting. *** 3D printing mode provides model slicing and GCode output using built-in...

App Info Launch App
KiriMoto Thing App

With 3D Slash, you can edit 3d models like a stonecutter. A unique interface: as fun as a building game! The perfect tool for non-designers and children to create in 3D.

App Info Launch App

I downloaded the scad file but there is only the gear and not the worm... can you help me?

Do you have Thread_Library.scad and MCAD/involute_gears.scad?

I printed this thing and it came out ok but I had to cut the gears in half and lay them flat on the bed to I wouldn't need supports then I found that the 2 gears were one piece and I used ABS so I could Acetone the halves together so I snapped the parts apart and it tore the layer lamination apart on the bigger gears would u edit this thing and separate them plz.

hey, I just tried this with the latest version of OpenSCAD but I am getting the following error while rendering:

ERROR: CGAL error in CGALUtils::applyBinaryOperator union: CGAL ERROR: assertion violation! Expr: G.mark(v1,0)==G.mark(v2,0)&& G.mark(v1,1)==G.mark(v2,1) File: /data/OpenSCAD/libraries-mingw64-master/mxe-w64/usr/x86_64-w64-mingw32.static/include/CGAL/Nef_S2/SM_overlayer.h Line: 287

any chance I am doing something wrong?

Comments deleted.

Have you considered differencing the gear by a torus? The ID of the torus would make the throat diameter.

I'm an absolute noob at this and need a little hand holding. I get: "Warning: Can't open library 'Thread_Library.scad'". Also the worm gear doesn't show up.

Can't seem to F6 (Compile and render) this keeps crashing my OpenCad. Is there a trick to this?

It compiles and renders fine on this machine, but that was one version of OpenSCAD ago... there may have been changes that broke something?

Ok, Downloaded the latest version. Now we have no Crash. but still an issue with F6. Now I get a ERROR: Illegal polygonal object - make sure all polygons are defined with the same winding order. Skipping affected object.

Mmmh. Going to have to start debugging the trapezoidThread code.

That's odd, I got it to export ok to get the STL file, with no winding errors. OpenSCAD is a little more trouble than it is worth some times. :-(

This is wierd. So your library currently in Git does not work but if I use the Library you included in a previous thingiverse page http://www.thingiverse.com/thing:8793http://www.thingiverse.com/thi.... That one works. Your libraries extrude_polygon 3,4 and 6 work but not 5.

However now my Gear is just round with no teeth! I think I may revert back to the 2010 version of opencad. Wonder if running it in Win7 64bit has any bearing. I should try this in a VMWare instance of winxp.

Screw Library
by syvwlch

Yeah, the one on Git I've been bashing on to try to get the throated worm gear to work, so I don't know if if works with this script anymore.

As for the bald gears, that's a bug in the later versions of OpenSCAD that breaks the MCAD involute gears library. That's been an issue for at least two versions of OpenSCAD and no-one is fixing it. I have a kludge/hack version of the involutegear library that sorta works, if you want.

Nah it's ok I've reverted back to 2010 version.

However printing the screw is now proving very problematic. Specially when using PLA. And switching on Support while also using PLA is a nightmare to clean up.

Time to invent a two headed Cupcake extruder :-D


Ok, it's the right shape but won't export as an stl. Have a couple ideas to try when I have a little time.

Here is an animation of the negative space between the worm screw and the worm gear, showing that:

  1. there is only a single point of contact, since neither are throated, and

  2. an involute gear and a trapezoidal screw mesh just fine.

Again, I highly recommend clicking on it to see it in HD, it will stutter a bit while your browser loads it, but after that it's a pretty neat view. :-)

again amazing stuff Syvwlch!

After looking at your animation it struck me: shouldn't the screw have a involute profile too to mesh with the gear? Or does it have that already? Not that it would be practical to buy such leadscrew anywhere...

IANAX, but my current understanding is that you do not need a fancy profile on the worm screw to match the involute on the worm gear. A trapezoidal lead-screw works just fine.

All I did was make sure that:

  1. the pitch is the same (distance from crest to crest),
  2. the pressure angle of the gear is equal to the angle of the sides of the screw profile,
  3. the distance between screw and gear is equal to the gear's radial pitch plus the screw's mid-profile radius, and
  4. the twist on the gear is equal to the gear's pitch radius divided by the screw's mid profile radius, with a sign depending on the screw's handedness.

Hum... now that I look at that list, that's a lot of parameters to set, with only a few degrees of freedom.

Should I wrap this up into a module and/or library?

Library... yes

And once again, as soon as I think it, Thingiverse has it!

A t-shirt must be made!!

Does anyone have any ideas on how to print the worm well on a makerbot? I tried to print one a while ago, but failed many times and ended up just going with spur gears (my modular gear reducer).

If you want to print it rather than use an existing, machined lead screw, I would try what Tunell did with his kibble auger:


Print it in two halves split along the axis. To guarantee some semblance of strength, you might want to make the radius rather large relative to profile depth, and you might want sandwich a square metal shaft in there as support.

Auger Drive (Screw Conveyor)
by Tunell

Or, apparently, you can just print it on its side :-)


all this stuff is great , a throated worm drive would be great. gearbox-o-rama.....

So throating the worm screw should be relatively easy, because the way the thread library is build, changing the radius along the shaft is already built into the lower levels of the code. I just need to figure out how to bring that up to a top-level module with some simple parameters.

To throat the worm gear, I'm thinking we could stack several bevel gears to approximate the curve. Again, the trick is figuring out the math and packaging up the stack into a module with a set of parameters.

Hum, ok, not that easy after all. Here is the closest I have gotten, but it is not quite right.

Alright, I've worked out what need to change in the screw library to support this:


Now I just need to work that into the library and the throated worm screw WILL be easy.

Pile 'o Polyhedrons: the Improved Screw
by syvwlch

Well, there you go! More things to play with! Looks great.

Libraries are awesome, once you push the complexity down under the covers, you can start building the next level. :-)

Here is the animated GIF:

Outstanding, more great stuff to play with, it just get better and better.

I highly recommend clicking on it, to see it in HD. :-)