Helical Planetary Gear Set

Helical Planetary Gear Set render

gears/planetary/helical_planetary_gear_set.pyOBJECT_OT_helical_planetary_gear_set (object.helical_planetary_gear_set, "Helical Planetary Gear Set")

Same topology and assembly math as planetary_gear_set.md — read that first. This document only covers what's different: helical teeth on all three members, which introduces a hand-derivation rule specific to three-body epicyclic sets.

Properties

Same as the spur planetary set, plus:

Property Type Default Range Notes
helix_angle_degFloat (°)20.01–45Applies to all three members
hand (labeled "Sun Hand")EnumRIGHTRIGHT / LEFTSets the sun's hand only — planet and ring are derived
n_slicesInt162–64 (soft)Z divisions for the helical twist, applies to all three members

sun_teeth, planet_teeth, planet_count, module, pressure_angle_deg, width_mm, ring_wall_mm, pip_gap, outer_segs are identical to the spur set.

Hand is chosen once, for the sun — everything else follows

You only ever set the hand of the sun gear. Planet and ring hands are derived automatically from the two mesh rules in README.md:

sun-planet is external-external  → planet = OPPOSITE of sun
planet-ring is external-internal → ring   = SAME as planet
                                  → ring   = OPPOSITE of sun

In code this is sun_sign = ±1 from the hand enum, then planet_sign = -sun_sign, ring_sign = planet_sign. The panel shows this as a one-line summary: "R→L→L" when sun is RIGHT, "L→R→R" when sun is LEFT.

Planet phasing is unchanged by the helix

The planet orbital-rotation formula (-theta_i * sun_teeth/planet_teeth + pi/planet_teeth) and the ring's fixed -pi/ring_teeth phase correction are identical to the spur set — helix twist doesn't change the z=0 phase of any member, only how each member's teeth wind along Z above that phase.

Build method

Sun and planet: same per-slice twist extrusion as a standalone helical gear (helical_gear.py), just parameterized by sun_sign / planet_sign instead of a user-facing hand property. Ring: solid cylinder minus a twisted annulus cutter (same approach as helical_annulus_gear.md), using ring_sign.

Info box additionally shows normal module (module*cos(helix_angle)) and the sun's total twist across its face width, in degrees.

Output

2 + planet_count objects per call: HelPlanetaryRing, HelPlanetarySun, and HelPlanetaryPlanet.001.00N (linked-mesh copies, same as the spur set). Success message: "Helical planetary: %d/%d/%d teeth (sun/planet/ring), %.1f° helix, %d planets".