generator-factory

Mechanisms that come off the bed already moving.

generator-factory generates parametric, print-in-place mechanisms — spinner rings, herringbone planetary gears, roller bearings, fidget clickers. Each one prints as a single solid with no supports and nothing to assemble, and every clearance, capture depth and tooth count is a number you set.

A print-in-place planetary gear ring: a sun gear, a row of herringbone planets and an internal ring gear, all meshing

Supports

None

Parts to assemble

0

Proven flank gap

0.15 mm

Mechanism types

5

Arm shapes

16

Four mechanisms, one spec string each

Every picture below is the output of the command printed under it. Change a number, get a different part.

A two-part print-in-place spinner ring: an outer band turning on an inner core

Spinner ring

A core and a spinner revolved from two profiles and separated by the print clearance. The capture ridge is chamfered to 45° so the groove roof cannot sag onto it and weld, and engagement is measured from the ridge tip — tuning the clearance never weakens the catch.

gf ring --size 7 --out ring.stl
A multi-layer ring nesting a planetary gear layer inside a roller bearing layer

Stacked ring

Concentric rotors joined by pluggable mechanisms, described by one spec string read inside out. Five mechanism types — herringbone planetary, barrel rollers, flanged spools, balls, and a plain chamfered ridge — nest in any order the walls allow.

gf stack --spec "2 | gear() | 2 | rollers() | 2"
A spinner ring with eight crescent-moon arms on rods around its outer rotor

Decorative arms

Sixteen 2D outlines — moon, star, heart, gear, hexagon — extruded on rods and unioned into the outermost rotor, so the result is still one connected solid. Bent rods keep the straight rod’s endpoints and clamp their swing against neighbour spacing.

… | 2 | arms(n=8, shape=moon, bend=zig)
A fidget clicker: a printed keycap with multicolour artwork above its switch base

Fidget clicker

Your SVG traced into colour layers, a Cherry MX or Kailh Box latch socket cut into the base, and a cap that snaps onto the switch. Cap and base come out on two plates of one Bambu project.

gf clicker --svg design.svg --out clicker.bbl.3mf

Parameters in, printable solid out

  1. Set the parameters

    Bore, band width, clearance, tooth module, roller count, capture depth. Millimetres throughout, and one source of defaults behind the CLI, the web configurator and the library.

  2. The generator builds one solid

    2D profiles are revolved, extruded and sliced, then cut against each other by the Manifold kernel. Captivity is checked before anything is written: a stack whose mechanism could fall out is rejected, not exported.

  3. Print it flat

    Orientation is part of the design, not a slicer decision — the part rests on a flat annular face and every capture overhang is chamfered to 45°, so nothing sags onto anything and fuses. It comes off the bed turning.

Captivity is enforced, not hoped for

A bearing that prints in one piece has to hold its own rollers in. Every rule below was measured — off a dissected reference print, or off one of ours that failed.

The roller is a re-entrant barrel

Its tips taper back in from the bulge, so the races close over them into a hard lip. Lip depth is tip − gap; the roller’s radial play is about gap. If the lip does not beat the play, the roller slides sideways, clears a lip and lifts out — so the generator enforces tip > 2·gap and rejects a spec that fails it.

That rule came from print #2: tip 0.8 against gap 0.35 left no margin, and a slightly loose print unhooked a roller. The defaults are now tip 1.0 and gap 0.30 — a 0.70 mm hook against 0.30 mm of play. Print #1 had failed earlier for the opposite reason: a plain hourglass roller forms no lip at all and cammed apart the moment the plate was pried off the bed.

The waist is relieved on purpose. There the race runs nearly parallel to the roller, and a tight parallel gap fuses, so the races hug the roller only at the bulge — curved line contact, tight enough to run true without welding — and pull back to about 0.5 mm at the waist, leaving a free channel for the cage.

gf stack --spec "1.8 | rollers(d=5.88, bulge=1.54, tip=0.64, gap=0.2, count=8) | 5.9" --bore 19.3 --band-width 14.5
A print-in-place roller bearing: eight barrel rollers captured between an inner and an outer race

Dissected reference

Band width
14.5 mm
Rollers
8
Bulge / waist
Ø5.88 / Ø2.80
Gap at bulge
0.05–0.10 mm
End lip
0.24–0.44 mm
We reproduce it to
~0.1 mm

Herringbone teeth, not straight ones

The planetary’s V-helix apexes at mid height, and that is what holds the gear pack in. Straight teeth let the whole sun-and-planet cluster slide out of the ring — that was planetary print #1. Backlash sets the limit, since axial play is roughly the flank gap over the tangent of the helix angle, so loose flanks defeat the V. The shipped recipe is the one that held across several prints: module 0.94, twelve four-tooth planets, ring clearance 0.15 mm, sun 0.16 mm.

Nothing may be fused

A test boolean-intersects every pair of bodies in a generated stack. Two parts that are meant to move and happen to touch fail the build rather than the print — which is the failure you can fix in a second instead of in four hours.

Three files, and one of them is a whole project

.stl

One merged binary mesh in millimetres. The format every slicer opens, for the designs that print as a single body.

.3mf

Each body its own object, millimetre units, written and then read back through a real 3MF parser before it leaves — so a file that would not open is a build failure here rather than a surprise on your machine.

.bbl.3mf

A Bambu Studio project. Every body is a named part of one object, so print-in-place parts cannot be dragged apart in the slicer; parts carry extruder assignments from your AMS palette, and several plates are laid out by physical offset.

The Bambu project carries the print profile too, grafted from a real project export rather than synthesised: Classic wall generator, thin-wall detection off, random seam, 0.2 mm layers. Those are not defaults we liked the look of. All four dissected reference prints set a random seam, because an aligned one stacks a vertical ridge down the gear flank that binds the mechanism.

gf ring --colors 000000,FFA200 --out ring.bbl.3mf

Three tiers

Monthly, annual, or buy one outright. See the full comparison.

Maker

$9/mo

Billed monthly

Spinner rings and calibration ladders, exported as STL.

Studio

$24/mo

Billed monthly

Planetary gears, stacked rings and decorative arms, exported as 3MF.

Workshop

$59/mo

Billed monthly

The clicker maker, SVG artwork, and multicolour Bambu projects.

Print something that comes off the bed turning.

Start with a calibration ladder, then generate the mechanism it proved out.

Get started