Report as inappropriate

Gear2's setscrew's captive nut has a bug: It's always created right on the edge of the gear's shaft.

//setscrew captive nut

        translate([(gear2_shaft_outer_d)/2, 0, gear_h+gear_shaft_h-gear2_captive_nut_r-gear2_setscrew_offset])

Uses the diameter where gear 1 uses the radius; changing this paragraph to

//setscrew captive nut

        translate([(gear2_shaft_outer_d)/4, 0, gear_h+gear_shaft_h-gear2_captive_nut_r-gear2_setscrew_offset])

generates the nut trap in the right spot.