opencad
← Machines
MachinePASS 10/10

Spur gear pair on a carrier

A 20-tooth pinion and a 40-tooth wheel, module 2, on revolute joints over a carrier plate.

Facts

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

Printable part designs

PartGatesFiles
carrier
gear-train-carrier
PASS 11/11STEP · STL
pinion
gear-train-pinion
PASS 11/11STEP · STL
wheel
gear-train-wheel
PASS 11/11STEP · STL

Assembled machine

FileKindSize
gear-train.stepSTEP7.0 MB
gear-train.stlSTL0.4 MB

Source

assembly.yaml (design contract)

Design intent

Spur-gear pair on a carrier plate from sources/gear-pair-spec.md (the only source; text, authoritative): a 20-tooth pinion and a 40-tooth wheel, module 2, pressure angle 20 deg, no profile shift, face width 8, each tooth thinned 0.05 at its pitch circle for 0.10 total circular backlash, on revolute joints on a 110 x 50 x 5 carrier plate at the pinion axis (0, 0) and the wheel axis (60, 0). The pinion (a tooth centred on +x) is the motor-driven joint; the wheel (a tooth space centred toward the pinion) follows through a -0.5 gear transmission. Acceptance: one pinion pitch (18 deg) of rotation with zero interference and a flank gap of at most 0.15; the transmission ratio is predicted from the placed geometry.

Gates

TierGateResultEvidence
Aparts_pass
Every part design passed its own 12 gates and has a handoff STEP
PASSresults/build123d/gear-train/parts.json designs.<design>.gates_ok: gear-train-carrier=True, gear-train-pinion=True, gear-train-wheel=True
Abom_complete
Every body of the bill of materials is in the export, once, with a placement
PASSresults/build123d/gear-train/verify.json solid_count = 3 (expected 3); placements.missing = []; unmatched = []
Ajoint_fidelity
Every joint's child frame lies on its parent frame (axis, offset, rest angle)
PASSresults/build123d/gear-train/verify.json joints.joints.<joint>.checks; failing: none
Aclearances
Static clearances and seats at rest
PASSresults/build123d/gear-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/gear-train/kinematics.json motions.<name>.max_interference: onePitch=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/gear-train/domains.json fluids.<name>:
Bexport_agreement
Each exported body equals its part handoff x placement; the assembled envelope matches
PASSresults/build123d/gear-train/verify.json agreement.bodies.<body>.volume_rel/hausdorff_mm; envelope.max_error = 0.0017455259504330911 (tol 0.1)
Bperformance
Every predicted observable meets the requirement the sources state over its numerical band (value +- 2 u_numerical)
PASSresults/build123d/gear-train/simulate.json observables.<id>.requirement: gearRatio=-0.5
Bconservation
Energy, mass and force balances of every analysis close within their tolerance
n/aresults/build123d/gear-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/gear-train/simulate.json simulations.<id>.refinement.observables:
Csource_hygiene
The assembly source imports only its declared inputs, formats and lints clean
PASSresults/build123d/gear-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/gear-train/domains.json boundaries.<body>.unassigned/conflicts: none
Cprovenance
Stage JSONs carry provenance stamps; part handoffs are hash-bound; inputs carry provenance
PASSresults/build123d/gear-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/gear-train/verify.json hygiene.truth_refs = []

Bill of materials

BodyKindDesignMaterial
carriermodelledgear-train-carrier
pinionmodelledgear-train-pinion
wheelmodelledgear-train-wheel