Project

DriveForge: Parametric Planetary and Cycloidal Gearbox Generator for Autodesk Fusion

Can mathematically correct gear profiles become complete, manufacturable Fusion assemblies?


Project overview

I started DriveForge as an Autodesk Fusion add-in for generating configurable planetary gearboxes and cycloidal reducers. I began with mathematically correct gear profiles, then had to turn those curves into closed Fusion sketches, extrude them into separate components, place repeated parts at the correct phase, calculate clearances and fits, preserve enough wall thickness, and produce files that can be manufactured.

I combined a geometry engine, an assembly builder, and a validation system. Together, they generate gears and cycloidal discs along with carriers, pins, shafts, eccentric cams, bearing supports, bushings, covers, housings, spacers, and output interfaces.

The add-in currently includes:

  • A fixed-ring planetary gearbox generator
  • A single- or dual-disc cycloidal reducer generator
  • A Quick Generate command for choosing a complete drive from a smaller set of inputs
  • Machined, hybrid, and fully printed manufacturing modes
  • Commercial-bearing seats and placeholders
  • Plain journal bearings and replaceable printed bushings
  • Captured print-in-place slip and roller bearings
  • Separate or integrated pins
  • One-piece and separate eccentric-cam options
  • Automatic carriers, housings, covers, and fastener patterns
  • Named DXF sketches for manufacturable parts
  • STEP, DXF, STL, and 3MF export support
  • Regeneration metadata and named Fusion parameters
  • Geometry diagnostics
  • A dedicated DriveForge toolbar panel and icon

My main engineering challenge was connecting ideal mathematical geometry to the practical limits of CAD, assembly, and fabrication. A curve can be correct on paper and still fail as a Fusion profile. A tooth-count combination can satisfy a ratio equation and still produce interference. A nominal bearing diameter can fit mathematically while being impossible to print or assemble.

I made DriveForge check these problems before extrusion so a user would not have to discover them through a failed print or assembly.


Planetary gearbox design

A planetary gearbox contains a sun gear at the center, one or more planet gears, an internal ring gear, and a carrier that supports the planets. In DriveForge’s main planetary arrangement, I hold the ring stationary, drive the sun, and use the carrier as the output.

Let

Ns=sun tooth count,N_s=\text{sun tooth count},
Np=planet tooth count,N_p=\text{planet tooth count},
Nr=ring tooth count.N_r=\text{ring tooth count}.

All three gears must have the same module mm and pressure angle α\alpha.

Coaxial tooth-count relationship

For a gear with NN teeth and module mm, the pitch radius is

r=mN2.r=\frac{mN}{2}.

The sun-to-planet center distance is

dsp=rs+rp=m2(Ns+Np).d_{sp}=r_s+r_p =\frac{m}{2}(N_s+N_p).

Because the planet meshes internally with the ring, the ring-to-planet center distance is

drp=rr−rp=m2(Nr−Np).d_{rp}=r_r-r_p =\frac{m}{2}(N_r-N_p).

The two distances must be equal:

dsp=drp.d_{sp}=d_{rp}.

Therefore,

m2(Ns+Np)=m2(Nr−Np),\frac{m}{2}(N_s+N_p) = \frac{m}{2}(N_r-N_p),

which simplifies to

Nr=Ns+2Np.\boxed{N_r=N_s+2N_p}.

I check this equation before building the assembly and reject invalid tooth combinations instead of moving a planet away from the correct pitch center to make it appear to fit.

The main development configuration uses

Ns=18,Np=27,Nr=72.N_s=18,\qquad N_p=27,\qquad N_r=72.

It satisfies the required relationship:

18+2(27)=72.18+2(27)=72.

With a module of 11 mm, the center distance is

d=1(18+27)2=22.5 mm.d = \frac{1(18+27)}{2} = 22.5\text{ mm}.

The ring side produces the same result:

d=1(72−27)2=22.5 mm.d = \frac{1(72-27)}{2} = 22.5\text{ mm}.

Planetary reduction ratio

The rotational relationship between the sun, ring, and carrier follows the Willis equation:

ωs−ωcωr−ωc=−NrNs,\frac{\omega_s-\omega_c} {\omega_r-\omega_c} = -\frac{N_r}{N_s},

where ωs\omega_s, ωr\omega_r, and ωc\omega_c are the angular velocities of the sun, ring, and carrier.

Solving for carrier speed gives

ωc=Nsωs+NrωrNs+Nr.\omega_c = \frac{N_s\omega_s+N_r\omega_r} {N_s+N_r}.

For a stationary ring,

ωr=0,\omega_r=0,

so

ωc=NsNs+Nrωs.\omega_c = \frac{N_s}{N_s+N_r}\omega_s.

The input-to-output reduction is

i=ωsωc=1+NrNs.i = \frac{\omega_s}{\omega_c} = 1+\frac{N_r}{N_s}.

For the 18/27/72 design,

i=1+7218=5.i = 1+\frac{72}{18} = 5.

The completed gearbox therefore has a 5:15:1 reduction ratio.

When Quick Generate searches for a requested ratio iti_t, each possible tooth set receives a percentage error:

E=100∣i−it∣it.E = 100\frac{|i-i_t|}{i_t}.

I let Quick Generate choose the numerically closest ratio only when that combination also makes a practical gearbox. The search checks module, housing diameter, planet spacing, bearing room, minimum walls, and valid planet phasing.


Involute gear geometry

The sun and planet gears use involute tooth flanks. An involute is the path traced by the end of a taut line as it unwraps from a base circle. Involute gears are useful because they maintain a constant pressure angle while meshing.

For a gear with zz teeth, module mm, and pressure angle α\alpha, the pitch radius is

rp=mz2.r_p=\frac{mz}{2}.

The base radius is

rb=rpcos⁡α.r_b=r_p\cos\alpha.

For a standard external gear, the tip and root radii are

ra=rp+mr_a=r_p+m

and

rf=rp−1.25m.r_f=r_p-1.25m.

For an internal ring gear, the tooth directions reverse. The inward tip and outward root radii are

ra,internal=rp−m,r_{a,\mathrm{internal}}=r_p-m,
rf,internal=rp+1.25m.r_{f,\mathrm{internal}}=r_p+1.25m.

I keep external and internal radii as separate named quantities. This avoids confusing an external outside radius with the inward tip radius of an internal gear.

Parametric involute

The involute of the base circle is evaluated with

x(t)=rb(cos⁡t+tsin⁡t),x(t) = r_b(\cos t+t\sin t),
y(t)=rb(sin⁡t−tcos⁡t).y(t) = r_b(\sin t-t\cos t).

The radial distance of this point is

r(t)=rb1+t2.r(t) = r_b\sqrt{1+t^2}.

If the desired radius rr is known, the corresponding parameter is

t=(rrb)2−1.t = \sqrt{ \left(\frac{r}{r_b}\right)^2-1 }.

The involute is undefined below the base circle, so it requires

r≥rb.r\ge r_b.

When the root circle lies inside the base circle, I begin the involute at the base circle and connect it to the root using an additional transition.

The angular motion of the involute relative to its tangent point is

inv⁡(t)=t−tan⁡−1(t).\operatorname{inv}(t) = t-\tan^{-1}(t).

Tooth thickness and backlash

The nominal circular tooth thickness at the pitch circle is

s0=πm2.s_0=\frac{\pi m}{2}.

The planetary command treats the user-entered backlash bb as the total pair allowance. Each mating member receives half of the thinning:

bm=b2.b_m=\frac{b}{2}.

The pitch-circle tooth thickness of one generated member is therefore

s=πm2−bm.s = \frac{\pi m}{2}-b_m.

The corresponding half-angle is

δp=s2rp.\delta_p=\frac{s}{2r_p}.

At involute parameter tt, the flank angle is

δ(t)=δp+inv⁡(tp)−inv⁡(t),\delta(t) = \delta_p + \operatorname{inv}(t_p) - \operatorname{inv}(t),

where tpt_p is the involute parameter at the pitch circle.

I sample one flank, mirror it to form the other flank, add a tip arc, and connect neighboring teeth with root arcs. The finished profile repeats this construction at a pitch angle of

θpitch=2πz.\theta_{\mathrm{pitch}} = \frac{2\pi}{z}.

Undercut warning

A standard full-depth, zero-profile-shift gear may undercut when it has too few teeth. DriveForge estimates the theoretical minimum with

zmin⁡=2sin⁡2α.z_{\min} = \frac{2}{\sin^2\alpha}.

At a 20∘20^\circ pressure angle,

zmin⁡=2sin⁡220∘≈17.1.z_{\min} = \frac{2}{\sin^2 20^\circ} \approx17.1.

The default 18-tooth sun is only slightly above this theoretical limit. I report an undercut warning for lower counts rather than assuming that every mathematically generated outline is appropriate for a loaded gearbox.


Planet placement and tooth phasing

Correct center coordinates do not guarantee that the teeth mesh. If every planet is placed with the same rotation, one planet may align correctly while another places a tooth directly against a sun or ring tooth.

For nn equally spaced planets, the carrier angle of planet ii is

ϕi=2πin,i=0,…,n−1.\phi_i = \frac{2\pi i}{n}, \qquad i=0,\ldots,n-1.

The planet centers are

xi=dcos⁡ϕi,x_i=d\cos\phi_i,
yi=dsin⁡ϕi.y_i=d\sin\phi_i.

The external sun-to-planet mesh requires the planet phase

ψi=(1+NsNp)ϕi+π−πNp.\psi_i = \left( 1+\frac{N_s}{N_p} \right)\phi_i + \pi - \frac{\pi}{N_p}.

The constant term places a planet tooth space opposite a sun tooth at the first contact. The multiplier accounts for the tooth-index change as the planet moves around the sun.

Equally spaced planets also require

Ns+Nrn∈Z.\boxed{ \frac{N_s+N_r}{n} \in\mathbb{Z} }.

If this quantity is not an integer, all planets cannot occupy valid mesh phases at the same time.

Internal-ring phase

The internal ring requires a fixed phase correction based on the parity of the planet tooth count.

For an odd planet tooth count,

θr=0.\theta_r=0.

For an even planet tooth count,

θr=−πNr.\theta_r=-\frac{\pi}{N_r}.

The second case rotates the ring pattern by half of one ring tooth pitch. Without that correction, a planet tooth can point directly at a ring tooth even when the center distances and tooth-count relationships are correct.

I found this one of the more difficult planetary issues because the error is only half a tooth index. It also depends on the number of teeth on a planet, not the number of planets in the assembly.

Planet spacing

Adjacent planets must have enough room to avoid touching. Their center spacing is

dneighbor=2dsin⁡(πn).d_{\mathrm{neighbor}} = 2d\sin\left(\frac{\pi}{n}\right).

The approximate outside diameter of a standard planet is

Dp,outside=m(Np+2).D_{p,\mathrm{outside}} = m(N_p+2).

DriveForge requires

dneighbor>Dp,outside.d_{\mathrm{neighbor}} > D_{p,\mathrm{outside}}.

I also transform the sampled planet boundary into each assembled position and check that every vertex remains inside the internal ring boundary. This provides a numerical interference check in addition to the analytical spacing rules.


The planetary flat-chord defect

The most visible planetary failure I encountered was a large straight side replacing several teeth on every planet gear. The flat appeared at a different world-space orientation on each planet. Because the planets were occurrences of one shared component, that meant the defect rotated with the local planet definition.

I first suspected an off-by-one tooth loop, such as

i=0,…,z−2i=0,\ldots,z-2

instead of

i=0,…,z−1.i=0,\ldots,z-1.

The actual tooth loop was complete. It generated every requested tooth and used the same root-circle construction between the last tooth and the first tooth.

The unsafe behavior occurred during profile closure. The earlier geometry and sketch helpers could close any open outline by connecting its last point directly to its first point. That is only valid when the two points are already adjacent on the intended perimeter.

I changed DriveForge to measure the seam distance:

dseam=(xf−x0)2+(yf−y0)2.d_{\mathrm{seam}} = \sqrt{ (x_f-x_0)^2+(y_f-y_0)^2 }.

The boundary is accepted only when

dseam≤ε,d_{\mathrm{seam}}\le\varepsilon,

where ε\varepsilon is a small merge tolerance.

If the endpoints are separated by a meaningful distance, I stop generation with an error rather than converting the gap into a straight closing chord.

The P0 audit produced the following results:

Boundary Repetition verified Coverage Pre-closure seam
18-tooth sun 18 tips and 18 roots 360∘360^\circ 3.11×10−153.11\times10^{-15} mm
27-tooth planet 27 tips and 27 roots 360∘360^\circ 5.41×10−155.41\times10^{-15} mm
72-tooth ring 72 tooth spaces 360∘360^\circ 7.55×10−157.55\times10^{-15} mm

These gaps are floating-point noise rather than physical openings.

I also check the result of every Fusion sketch segment operation. Before extrusion, I confirm that the expected number of entities exists and that Fusion recognizes a closed profile. A failed segment can no longer be ignored while the rest of the gear continues.


Cycloidal reducer design

A cycloidal reducer uses an eccentric input to move a lobed disc inside a fixed ring of pins. The disc has one fewer lobe than the number of stationary pins.

Let

L=cycloidal-disc lobe count,L=\text{cycloidal-disc lobe count},
P=stationary ring-pin count.P=\text{stationary ring-pin count}.

DriveForge requires

P=L+1.\boxed{P=L+1}.

The development design uses

L=12,P=13.L=12,\qquad P=13.

The magnitude of the reduction ratio is

i=L.i=L.

The output rotates in the opposite direction from the input eccentric:

ωout=−ωinL.\omega_{\mathrm{out}} = -\frac{\omega_{\mathrm{in}}}{L}.

For the 12-lobe design,

ωout=−ωin12.\omega_{\mathrm{out}} = -\frac{\omega_{\mathrm{in}}}{12}.

This produces a 12:112:1 reduction with reversed output direction.

The ratio comes from the one-count difference between pins and lobes. During one input revolution, the pin mismatch advances the disc by one lobe relative to the stationary ring. One lobe is 1/L1/L of a disc revolution.


Cycloidal-disc profile

I use a derivative-normal parallel-curve construction for the cycloidal disc. Let

R=ring-pin center-circle radius,R=\text{ring-pin center-circle radius},
e=eccentricity,e=\text{eccentricity},
P=ring-pin count,P=\text{ring-pin count},
t=curve parameter.t=\text{curve parameter}.

The centerline curve is

x0(t)=Rcos⁡t−ecos⁡(Pt),x_0(t) = R\cos t-e\cos(Pt),
y0(t)=Rsin⁡t−esin⁡(Pt).y_0(t) = R\sin t-e\sin(Pt).

Its derivatives are

x0′(t)=−Rsin⁡t+Pesin⁡(Pt),x_0'(t) = -R\sin t + Pe\sin(Pt),
y0′(t)=Rcos⁡t−Pecos⁡(Pt).y_0'(t) = R\cos t - Pe\cos(Pt).

The local speed is

v(t)=x0′(t)2+y0′(t)2.v(t) = \sqrt{x_0'(t)^2+y_0'(t)^2}.

A perpendicular unit normal is

n(t)=(−y0′(t)v(t),x0′(t)v(t)).\mathbf n(t) = \left( -\frac{y_0'(t)}{v(t)}, \frac{x_0'(t)}{v(t)} \right).

If the effective pin radius is reffr_{\mathrm{eff}}, the finished disc boundary becomes

x(t)=x0(t)−reffy0′(t)v(t),x(t) = x_0(t) - r_{\mathrm{eff}} \frac{y_0'(t)}{v(t)},
y(t)=y0(t)+reffx0′(t)v(t).y(t) = y_0(t) + r_{\mathrm{eff}} \frac{x_0'(t)}{v(t)}.

The use of the derivative is important because it offsets the centerline in the correct local normal direction. Changing a radius inside a visually similar trochoid equation does not necessarily produce the conjugate pin envelope.

Clearances and 3D-print offset

The effective pin radius is

reff=rpin+cprofile+Δprint.r_{\mathrm{eff}} = r_{\mathrm{pin}} + c_{\mathrm{profile}} + \Delta_{\mathrm{print}}.

The optional printing contribution is

Δprint={cprint,when the print-offset option is enabled,0,when it is disabled.\Delta_{\mathrm{print}} = \begin{cases} c_{\mathrm{print}}, & \text{when the print-offset option is enabled},\\[4pt] 0, & \text{when it is disabled}. \end{cases}

I made the printing allowance toggleable because it is separate from the mechanical profile clearance. A machined design can disable it without changing the base gearbox dimensions.

The active printing offset is also added to the output-hole and shaft-passage clearances. It does not alter commercial-bearing seats or other fit values controlled by the bearing system.


Cycloidal singularities and unwanted lobes

An early cycloidal problem I encountered was a secondary bump between the intended lobes. Adding more sample points did not solve it because coarse sampling was not the cause.

The first validity condition uses the envelope factor

K=ePR.K=\frac{eP}{R}.

The design requires

K<1.\boxed{K<1}.

When

eP=R,eP=R,

the derivative can reach zero:

v(t)=0.v(t)=0.

The profile normal is undefined at that point, and the curve becomes singular. Larger values can introduce loops or unwanted features.

The KK limit is necessary, but a large parallel offset can still create cusps even when K<1K<1.

For a parametric curve (x(t),y(t))(x(t),y(t)), the radius of curvature is

ρ(t)=(x′(t)2+y′(t)2)3/2∣x′(t)y′′(t)−y′(t)x′′(t)∣.\rho(t) = \frac{ \left(x'(t)^2+y'(t)^2\right)^{3/2} }{ \left| x'(t)y''(t)-y'(t)x''(t) \right| }.

The effective offset must remain below the minimum relevant radius of curvature:

reff<ρmin⁡.r_{\mathrm{eff}}<\rho_{\min}.

I make DriveForge evaluate this limit for the cycloidal centerline. If the pin radius, profile clearance, and printing allowance exceed it, the program rejects the design and explains that the parameters would create extra bumps.

The ring pins also need enough space between them. The half-distance between adjacent pin centers is

Rsin⁡(πP).R\sin\left(\frac{\pi}{P}\right).

With pin radius rpinr_{\mathrm{pin}} and minimum web wmin⁡w_{\min}, the design must satisfy approximately

rpin+wmin⁡2<Rsin⁡(πP).r_{\mathrm{pin}} + \frac{w_{\min}}{2} < R\sin\left(\frac{\pi}{P}\right).

Adaptive sampling

The mathematical cycloidal profile is continuous, but Fusion receives a finite collection of points or curve segments. A fixed sample count either wastes points in smooth regions or loses accuracy near tight lobe transitions.

I use adaptive subdivision. For a parameter interval from tat_a to tbt_b, the generator evaluates the midpoint

tm=ta+tb2.t_m=\frac{t_a+t_b}{2}.

It calculates the true curve point at tmt_m and measures its distance from the straight chord between the endpoints:

dc=distance⁡(p(tm),p(ta)p(tb)‾).d_c = \operatorname{distance} \left( \mathbf p(t_m), \overline{ \mathbf p(t_a)\mathbf p(t_b) } \right).

If

dc>τ,d_c>\tau,

where τ\tau is the chord tolerance, the interval is divided again. Otherwise, the segment is accepted.

This places more points near sharp lobe transitions and fewer points along smooth portions. Chord tolerance controls approximation accuracy; it does not add mechanical clearance.

Each lobe occupies a parameter span of

Δt=2πL.\Delta t=\frac{2\pi}{L}.

After sampling all LL lobes, I evaluate the true endpoint at 2π2\pi. The strict closure check confirms that it returns to the beginning. A truncated final lobe cannot be hidden by an automatic closing line.


Cycloidal output-pin geometry

The cycloidal disc center moves in an eccentric orbit of radius ee. The output holes must accommodate that orbit while maintaining clearance around the output pins.

If the output contact diameter is DcD_c, the automatic output-hole diameter is

Dh=Dc+2e+2ceff,D_h = D_c + 2e + 2c_{\mathrm{eff}},

where

ceff=coutput+Δprint.c_{\mathrm{eff}} = c_{\mathrm{output}} + \Delta_{\mathrm{print}}.

The 2e2e term covers the full diameter of the eccentric orbit. The clearance is doubled because it acts radially on both sides.

For a plain output pin,

Dc=2routput pin.D_c=2r_{\mathrm{output\ pin}}.

If the pin uses a sleeve or roller interface, DriveForge uses the sleeve outside diameter.

For qq output pins on radius RoR_o, the pin centers are

xi=Rocos⁡(γ+2πiq),x_i = R_o\cos\left( \gamma+\frac{2\pi i}{q} \right),
yi=Rosin⁡(γ+2πiq).y_i = R_o\sin\left( \gamma+\frac{2\pi i}{q} \right).

The phase angle γ\gamma is used to align the holes in a dual-disc assembly.


Dual cycloidal discs

A dual-disc reducer uses two cycloidal discs with opposed eccentric phases.

For the first disc,

xc=e,θd=0,γ=0.x_c=e, \qquad \theta_d=0, \qquad \gamma=0.

For the second disc,

xc=−e,x_c=-e,
θd=−πL,\theta_d=-\frac{\pi}{L},
γ=+πL.\gamma=+\frac{\pi}{L}.

The eccentric positions are 180∘180^\circ apart. The second disc is rotated by half a lobe pitch, while its local output-hole pattern is counter-rotated. Both discs therefore engage the same stationary output-pin pattern.

For one disc of thickness tdt_d,

Hstack=td.H_{\mathrm{stack}}=t_d.

For two discs with spacer thickness sds_d,

Hstack=2td+sd.H_{\mathrm{stack}} = 2t_d+s_d.

With axial running clearance aa, the usual automatic ring-pin height is

Hpin=Hstack+2a.H_{\mathrm{pin}} = H_{\mathrm{stack}}+2a.

The top of the moving assembly is

Hmoving=tring plate+2a+Hstack+tcarrier.H_{\mathrm{moving}} = t_{\mathrm{ring\ plate}} + 2a + H_{\mathrm{stack}} + t_{\mathrm{carrier}}.

The housing height is

Hhousing=max⁡(Hmoving,tring plate+Hpin,explicit)+chousing,axial.H_{\mathrm{housing}} = \max \left( H_{\mathrm{moving}}, t_{\mathrm{ring\ plate}}+H_{\mathrm{pin,explicit}} \right) + c_{\mathrm{housing,axial}}.

These relationships prevent the second disc, carrier, and ring pins from occupying the same axial space.


Bearings, bushings, and shaft fits

The gear profiles are the central geometry, but I also built the support system needed to hold those gears in an assembly.

Depending on the manufacturing style and selected options, it can generate:

  • Commercial ball-bearing seats
  • Commercial-bearing placeholder bodies
  • Plain journal bearings
  • Replaceable printed bushings
  • Flanged bushings
  • Captured print-in-place slip bearings
  • Three-ring low-friction printed slip bearings
  • Print-in-place roller bearings
  • Thrust washers
  • Integrated thrust faces
  • Lubrication grooves
  • Bore-entry and bushing chamfers

I keep running clearance and press-fit interference distinct.

For a shaft of nominal diameter DsD_s with radial running clearance cc,

Dbore=Ds+2c.D_{\mathrm{bore}} = D_s+2c.

For a radial press-fit interference δ\delta,

Dpress bore=Ds−2δ.D_{\mathrm{press\ bore}} = D_s-2\delta.

For example, a 10.0010.00 mm shaft with 0.200.20 mm radial running clearance receives

Dbore=10.00+2(0.20)=10.40 mm.D_{\mathrm{bore}} = 10.00+2(0.20) = 10.40\text{ mm}.

The same shaft with 0.050.05 mm radial press interference receives

Dpress bore=10.00−2(0.05)=9.90 mm.D_{\mathrm{press\ bore}} = 10.00-2(0.05) = 9.90\text{ mm}.

I keep the following allowances separate:

  • Journal radial clearance
  • Axial clearance
  • Slip-fit clearance
  • Press-fit interference
  • Locating-hole clearance
  • Commercial-bearing shaft allowance
  • Commercial-bearing housing allowance
  • Print-in-place bearing gap

This prevents a setting intended for a printed journal from unexpectedly changing a carrier locating hole or commercial bearing seat.

The default captured slip bearing consists of two rings, or optionally three rings, separated by a printable radial gap. A tongue on one ring runs inside a matching groove on the next ring. The overlap captures the rings axially while allowing relative rotation.

The three-ring version introduces a floating middle ring. This creates two sliding interfaces and can reduce the relative sliding speed at each surface, although it requires more radial space.

Print-in-place roller bearings use full-complement spool rollers held between race ribs. They need enough space for the roller diameter, race walls, and printing gaps, so I enable them only when the host component is large enough.


Pins, carriers, cams, and shafts

Planet pins can remain separate or join directly to the front carrier. Cycloidal ring pins can be separate, joined to the ring plate, or joined to the housing.

Pin tips can receive chamfers for easier assembly. Integrated pin bases receive fillets when space permits. If the requested fillet would reach a running surface, I reduce it and report the change.

The planetary generator can create:

  • A front carrier
  • An optional rear carrier
  • Separate or integrated planet pins
  • Planet bushings or commercial bearings
  • Thrust washers or integral thrust faces
  • Sun input-shaft interfaces
  • Carrier output-shaft interfaces

The cycloidal generator can create:

  • A one-piece input camshaft
  • Separate press-fit eccentric cams
  • Single or opposed dual eccentric lobes
  • Eccentric journal or commercial-bearing supports
  • Output pins and sleeves
  • Output carrier and output hub
  • Ring plate and integrated ring pins

A one-piece camshaft places the eccentric lobes directly on the input shaft. In a dual-disc configuration, the lobes are opposed by 180∘180^\circ. The separate-cam option instead creates press-fit eccentric components.


Housing and fastener calculations

Both gearbox types can generate a complete housing with front and rear covers.

For a cycloidal drive, the cavity radius is based on the larger moving radial envelope:

rcavity=max⁡(R+rpin,Dcarrier2)+chousing,radial.r_{\mathrm{cavity}} = \max \left( R+r_{\mathrm{pin}}, \frac{D_{\mathrm{carrier}}}{2} \right) + c_{\mathrm{housing,radial}}.

A similar calculation is used for the planetary carrier and ring envelope.

When the housing fastener pitch-circle diameter is automatic, I position the holes one minimum wall beyond the cavity:

PCDf=2(rcavity+wmin⁡+Df2).\mathrm{PCD}_f = 2 \left( r_{\mathrm{cavity}} + w_{\min} + \frac{D_f}{2} \right).

The required housing radius is

rhousing=max⁡(rcavity+twall,PCDf2+Df2+wmin⁡).r_{\mathrm{housing}} = \max \left( r_{\mathrm{cavity}}+t_{\mathrm{wall}}, \frac{\mathrm{PCD}_f}{2} + \frac{D_f}{2} + w_{\min} \right).

The validation system checks the material between:

  • The cavity and fastener holes
  • Fastener holes and the outside wall
  • Gear roots and housing walls
  • Carrier bores and planet-pin holes
  • Cycloidal output holes and the disc boundary
  • Bearing seats and neighboring features

NEMA 17 and NEMA 23 options add the appropriate motor-mount pattern and pilot opening to the rear support. The motor shaft can act as the gearbox input shaft when the selected motor provides enough usable shaft length.


Quick Generate

The full planetary and cycloidal commands expose many dimensions. I added Quick Generate for users who know the required ratio, housing size, and shaft sizes but do not yet know the internal geometry.

Its main inputs are:

  • Drive type
  • Target ratio
  • Housing outside diameter
  • Input shaft diameter
  • Output shaft diameter
  • Mounting-hole diameter
  • Motor type
  • Manufacturing style
  • Output actuator pattern

For a planetary drive, I search integer sun, planet, and ring combinations. I check the ratio error, equal-spacing condition, module, carrier size, ring wall, bearing space, and housing diameter.

For a cycloidal drive, I begin with

L≈round⁡(it),L\approx\operatorname{round}(i_t),
P=L+1,P=L+1,

then search pin-circle radius, pin size, eccentricity, output-pin layout, and bearing support options.

I start with the more mechanically robust choices and move toward smaller alternatives when space is limited. I return a candidate only after the complete validation system accepts it.


Fusion components, regeneration, and export

I construct each generated drive as a named Fusion assembly rather than one anonymous body.

I use shared component definitions for repeated parts. For example, I create one planet-gear component and place several occurrences of it. I generate the local planet once; each occurrence receives its own position and phase transform.

I also store:

  • User parameters
  • Generator type
  • Saved command settings
  • Schema version
  • Geometry version
  • Component ownership information

These values allow the add-in to recognize and regenerate a previously created drive.

I give each manufacturable part a named sketch beginning with DXF_. The export command can produce:

  • One STEP file for the full assembly
  • Individual STEP files for parts
  • DXF files for source sketches
  • Optional STL files
  • Optional 3MF files

Shared parts are exported once. Commercial-bearing placeholders are skipped because they represent purchased parts.

I put commands for planetary generation, cycloidal generation, Quick Generate, regeneration, export, and diagnostics in a dedicated DriveForge panel with a custom toolbar icon.


Validation strategy

I separated pure geometry from Fusion modeling so I could test the mathematical parts without launching Autodesk Fusion.

The validation system checks:

  • Tooth-count relationships
  • Full angular coverage
  • Exact tooth and lobe repetition
  • Profile seam distance
  • Suspicious closing segments
  • Radial tip and root extents
  • Gear undercut risk
  • Planet spacing
  • Mesh phase
  • Planet-to-ring interference
  • Cycloidal singularity factor
  • Parallel-curve curvature limit
  • Polyline self-intersection
  • Output-hole orbital allowance
  • Bore and wall interference
  • Bearing and bushing fits
  • Axial stack height
  • Ring-pin height
  • Housing wall and fastener placement
  • Positive thicknesses and clearances

At the flat-chord milestone, my complete automated suite passed 164 tests. I also generated the exact 18/27/72 planetary assembly in Fusion and extruded it successfully.

I cannot rely on pure tests alone. Fusion still requires live smoke tests because Autodesk’s profile recognition, feature timeline, and export translators only exist inside the application.


What was easier than expected

I found shared components easier to reuse than I expected, and they simplified several parts of the project.

The three planets do not need three separately generated tooth profiles. I build one correct local component and apply a rigid transform to each occurrence:

[xwyw]=[xcyc]+[cos⁡ψ−sin⁡ψsin⁡ψcos⁡ψ][xlyl].\begin{bmatrix} x_w\\ y_w \end{bmatrix} = \begin{bmatrix} x_c\\ y_c \end{bmatrix} + \begin{bmatrix} \cos\psi & -\sin\psi\\ \sin\psi & \cos\psi \end{bmatrix} \begin{bmatrix} x_l\\ y_l \end{bmatrix}.

Once I had proven the local 27-tooth planet complete, every occurrence inherited the same geometry. Only the translation and tooth phase changed.

I reused the same approach for pins, bushings, washers, and bearing components. It reduced Fusion feature count and made exported parts easier to organize.

I also found the basic ratio calculations direct. The planetary ratio follows from the Willis equation, and the cycloidal ratio follows from the one-count difference between lobes and pins. Most of my difficulty appeared after I had to fit those ideal ratios inside a physical assembly.


What was harder than expected

The hardest part for me was proving that mathematically reasonable geometry would survive the entire path from an equation to a finished Fusion body.

I initially suspected the planetary flat chord came from the involute or tooth loop. The teeth were actually complete. I traced the dangerous operation to a later closure helper that could connect distant endpoints.

I initially suspected the cycloidal extra bump came from sampling. Increasing the sample count did not fix it because the effective parallel offset exceeded a curvature limit. I had to use the derivative-normal profile, the factor

K=ePR,K=\frac{eP}{R},

and the local radius of curvature.

I also found mesh phasing harder than expected. Correct tooth counts and center distances do not guarantee that every planet tooth lands in a tooth space. I added an equal-spacing divisibility rule, an external-mesh phase equation, and a fixed half-pitch ring correction for even planet tooth counts.

The bearing system gave me another kind of difficulty. I could not keep “clearance” as one general setting: a journal gap, slip-fit bushing, locating hole, press-fit shaft, and commercial bearing seat all need different equations. Keeping those values separate required more code, but it made the generated dimensions understandable and consistent.

Fusion introduced the final layer of uncertainty. A mathematical loop can be closed while Fusion still fails to create one of its sketch entities. I now treat every failed entity as a generation error and check Fusion’s recognized profiles before extrusion.


Conclusion

I combined two gearbox families in one Fusion add-in. For the planetary generator, I used involute tooth geometry, Willis kinematics, equal-spacing rules, and tooth-index phasing. For the cycloidal generator, I used a derivative-normal pin envelope, eccentric motion, curvature limits, adaptive sampling, and output-hole orbital allowance.

Around those mechanisms, I added the less visible parts that determine whether the design can be assembled: bearings, bushings, fits, pins, carriers, cams, shafts, spacers, covers, housings, fasteners, minimum walls, axial stacks, regeneration data, and manufacturing exports.

I wanted the finished system to do more than create a gear-shaped solid. It checks whether the requested dimensions describe a coherent mechanism, whether the profiles close naturally, whether the moving parts have room, whether the selected manufacturing method has suitable fits, and whether Fusion recognizes the geometry needed to produce the part.