opencad
← Machines
MachinePASS 10/10

Compound gear train

Compound spur-gear train on a base plate, every gear on its own revolute joint.

Facts

Backend
build123d
Gates
10 pass, 0 fail, 4 n/a
Envelope
195.0 × 100.0 × 21.5 mm
Bodies
4 (4 modelled)
Joints
3
Truth case
yes, scored against held-back geometry

Printable part designs

PartGatesFiles
base
compound-train-base
PASS 11/11STEP · STL
pinion
compound-train-pinion
PASS 11/11STEP · STL
idler
compound-train-idler
PASS 11/11STEP · STL
output
compound-train-output
PASS 11/11STEP · STL

Assembled machine

FileKindSize
compound-train.stepSTEP14.3 MB
compound-train.stlSTL0.8 MB

Source

assembly.yaml (design contract)

Design intent

Compound spur-gear train from sources/compound-train-spec.md (authoritative, text only): a 195 x 100 x 5 base plate carrying, on revolute joints about +z at (0, 0), (60, 0) and (120, 0), a motor-driven 20-tooth input pinion, a compound idler (40 teeth over z 0..8 and 15 teeth over z 8..16 on one solid) and a 45-tooth output gear (z 8.5..16.5); module 2, 20 deg pressure angle, zero shift, 0.10 mm circular backlash per mesh. The gears are phased at rest (pinion 0 deg, idler 4.5 deg, output 6.5 deg) so both meshes engage; the idler follows the pinion at -1/2 and the output follows the idler at -1/3 through meshed gear transmissions. A motion sweep turns the pinion through two pitches; the evaluator measures the train ratio and the output angle after one pinion revolution from the placed geometry. Kinematics only: the spec states no operating case, load or material.

Gates

TierGateResultEvidence
Aparts_pass
Every part design passed its own 12 gates and has a handoff STEP
PASSresults/build123d/compound-train/parts.json designs.<design>.gates_ok: compound-train-base=True, compound-train-pinion=True, compound-train-idler=True, compound-train-output=True
Abom_complete
Every body of the bill of materials is in the export, once, with a placement
PASSresults/build123d/compound-train/verify.json solid_count = 4 (expected 4); placements.missing = []; unmatched = []
Ajoint_fidelity
Every joint's child frame lies on its parent frame (axis, offset, rest angle)
PASSresults/build123d/compound-train/verify.json joints.joints.<joint>.checks; failing: none
Aclearances
Static clearances and seats at rest
PASSresults/build123d/compound-train/verify.json clearances.<name>; failing: none
Amotion_clear
Every drive moves through its range without interference; gears mesh; ratios match tooth counts
PASSresults/build123d/compound-train/kinematics.json motions.<name>.max_interference: pinionTurn=0
Afluid_domain
Each fluid region is one sealed piece within its volume band and agrees with the source's fluid body
n/aresults/build123d/compound-train/domains.json fluids.<name>:
Bexport_agreement
Each exported body equals its part handoff x placement; the assembled envelope matches
PASSresults/build123d/compound-train/verify.json agreement.bodies.<body>.volume_rel/hausdorff_mm; envelope.max_error = 0.0 (tol 0.1)
Bperformance
Every predicted observable meets the requirement the sources state over its numerical band (value +- 2 u_numerical)
PASSresults/build123d/compound-train/simulate.json observables.<id>.requirement: trainRatio=0.1667, outputAt360=60
Bconservation
Energy, mass and force balances of every analysis close within their tolerance
n/aresults/build123d/compound-train/simulate.json simulations.<id>.conservation:
Brefinement
Every prediction of a mesh ladder is resolved: all its levels finished and the grid-convergence index is within tolerance
n/aresults/build123d/compound-train/simulate.json simulations.<id>.refinement.observables:
Csource_hygiene
The assembly source imports only its declared inputs, formats and lints clean
PASSresults/build123d/compound-train/verify.json hygiene: cad_refs=[] truth_refs=[]; ruff format True, ruff check True
Cboundaries_complete
Every face of a bounded body carries exactly one named boundary
n/aresults/build123d/compound-train/domains.json boundaries.<body>.unassigned/conflicts: none
Cprovenance
Stage JSONs carry provenance stamps; part handoffs are hash-bound; inputs carry provenance
PASSresults/build123d/compound-train/<stage>.json provenance present for ['verify', 'kinematics', 'domains', 'simulate']; parts.json designs.<d>.step_sha256 present: True
Cevidence_separation
No worker-visible artefact reads truth; the assembly source only places declared inputs
PASSresults/build123d/compound-train/verify.json hygiene.truth_refs = []

Bill of materials

BodyKindDesignMaterial
basemodelledcompound-train-base
pinionmodelledcompound-train-pinion
idlermodelledcompound-train-idler
outputmodelledcompound-train-output