It's not a Spirograph, it's just a HypotrochoidGraph, but it makes pretty pictures

After Reverse engineering a 3d printing gear model I decided to start from scratch. I built a FreeCAD model that uses embedded parameters in gears to make it possible to print the sets of gears that you want, and I generated a set of gears that my wife (the mathematician for whom I did this work) asked for to teach a workshop.

I’m able to stuff all three rings and seven gears that my wife chose on my printer for a single print:

This is good because the print takes 3 hours and I’m going to be making six sets this weekend. :smiley:

The OBJ files are printable as provided. Choose slicer settings for high quality; artifacts from roughness on the teeth will make the set work poorly and/or be visible in the drawings.

To use, flip the rings over, so that the flange is above the teeth. The flange helps hold the teeth of the gears down so they don’t jump out.

The gears are used as printed. The upper tips of the gears are chamfered to keep them from catching on the flange.

The racetrack on the ring is to assist gripping the ring solidly to hold it in place during use.

If you want to make other size rings and gears, the FCStd files were created with FreeCAD 0.20.1 and the FCGear workbench. You will need the FCGear Workbench installed to make modifications.

In FreeCAD, select the gray InvoluteGear in the Gear, or the gray InternalInvoluteGear in the Ring, and then change the base property teeth to the number of teeth you want. (If you want a Gear with fewer than 15 teeth, you might need to edit the Drawing Holes Pocket sketch and delete (or change to construction geometry) some holes that collide.)

If you would like larger teeth (and, naturally the resulting size), change the base property module from 2mm to 3mm for both the Ring and the Gear and regenerate all the rings and gears you wish to use.

All the files, both the ten OBJ files and the two FCStd files, are available at GitLab:


How big is your build plate?

My bed is 350mm x 350mm. I sometimes print large objects, and other times collections of many objects. But in this case there is a lot of space, even with the complete collection, and it easily fits in a 250mm x 220mm footprint if I counted accurately. It may be possible to squeeze it even tighter. Not sure that it’s important to do so though.

Ok, I didn’t think it would fit the E3 bed. I will print these for my Grand-kids hopefully


I have pushed to gitlab an assembly that lets you look at a particular gear and ring configuration together to see whether it can function. You just load up all three FCStd files into a FreeCAD session, change the parameters, wait for FreeCAD to catch up with recomputing the gears, and then recompute the assembly. My youngest was curious as to what was the largest gear that could fit into a ring with 41 teeth, and we determined that it was a 36-tooth gear with the tooth shape parameters I chose; all larger gears intersected at least a little bit.

Standard shorter teeth could handle more, of course. If you want to have gears almost as large as the ring in a compatible set, you’ll want to change the tooth profiles for the gear and ring, which will require modifying the gear tooth bevel to match.

Yeah, Freecad is not my strong point. I use Fusion 360. I can import step files though.

Also I created a Gitlab login, but Im not a code guy much. All though I like staring aimlessly at code as though I know what it says…

1 Like

That doesn’t give you any ability to adjust parameters to change a design. A STEP file here wouldn’t be meaningfully different from the .obj files that I posted for printing. Just two different representations of a shape.

Fusion isn’t available for Linux, either for pay or gratis.

FreeCAD has been growing by leaps and bounds the past few years. It seemed inscrutable when I first tried it, in January 2016. But a few years ago, my then-middle-school child watched a few videos and was able to use it, and even look over my shoulder and help me out with a few things, including pointing out when I needed to use a datum plane. Lately, there have been enough good videos for new users that it’s becoming a lot more accessible. Between Joko Engineering, Flowwie, and MangoJellySolutions there are a lot of learning opportunities.

OficineRobotica has good content in particular showing what can be done with the “Realthunder” branch which has lots of stuff that hasn’t made it to the official release. I have used that a lot in the past but am not using it right now because the author has been working on some major improvements in upstream FreeCAD (addressing the “topological naming problem” that plagues CAD in general) which has reasonably interfered with keeping his development fork up to date. It means that the next version of FreeCAD is going to do a better job more often of DWIM, and that will make it a lot more accessible to a lot more people, I think.

I’m good with that, Not all things are for all people. I’ve never checked out freecad for very long.
I uploaded one of the .obj files into F3D, and they are simple Mesh files like .stl. With step files they can be manipulated and add to with keeping a timeline one step or two easier that’s all.
The gears are printing very clean though. Sharp.

The point of using FreeCAD here — the reason that I included FreeCAD files in the package — would be to change model parameters to create additional models with different characteristics like which module, how many teeth, pressure angle, etc.

STEP files wouldn’t let you change those parameters. Yes, they can encode more than a simple mesh (e.g. materials), but they don’t allow you to recompute from parameters. Given that these parameters drive implementation-specific code, I don’t expect there to be any general interchange format that would transform a parameterized model from one CAD package to another.

Glad they are printing well for you! Always great to hear success. :tada:

I’m late to the party but these are neat! Thanks for sharing.

1 Like