opencad
← Machines
MachinePASS 10/10

Rack and pinion

Rack and pinion on a base plate, three separate solids.

Facts

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

Printable part designs

PartGatesFiles
base
rack-pinion-base
PASS 11/11STEP · STL
pinion
rack-pinion-pinion
PASS 11/11STEP · STL
rack
rack-pinion-rack
PASS 11/11STEP · STL

Assembled machine

FileKindSize
rack-pinion.stepSTEP2.8 MB
rack-pinion.stlSTL0.2 MB

Source

assembly.yaml (design contract)

Design intent

Rack and pinion on a base plate from sources/rack-pinion-spec.md (the only source, text, authoritative): three separate solids with no fused bodies. A 240 x 80 x 5 base plate carries a 20-tooth module-2 involute spur pinion (pitch radius 20, face 8, D6 bore) on a revolute joint about +z at the origin and a 32-tooth module-2 straight-flank rack (200 long, 8 thick) on a slider joint along +x with its pitch line on y = -20, tangent to the pinion pitch circle, phased so the pinion tooth at -90 deg sits in the rack's tooth space at x = 0. The pinion is motor-driven through one full revolution and the rack follows through the mesh by the pitch circle's arc per degree (20 pi / 180 mm/deg; positive about +z moves the rack toward +x) with zero interference. Predict the rack ratio and the rack travel over one revolution from the placed geometry.

Gates

TierGateResultEvidence
Aparts_pass
Every part design passed its own 12 gates and has a handoff STEP
PASSresults/build123d/rack-pinion/parts.json designs.<design>.gates_ok: rack-pinion-base=True, rack-pinion-pinion=True, rack-pinion-rack=True
Abom_complete
Every body of the bill of materials is in the export, once, with a placement
PASSresults/build123d/rack-pinion/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/rack-pinion/verify.json joints.joints.<joint>.checks; failing: none
Aclearances
Static clearances and seats at rest
PASSresults/build123d/rack-pinion/verify.json clearances.<name>; failing: none
Amotion_clear
Every drive moves through its range without interference; gears mesh; ratios match tooth counts
PASSresults/build123d/rack-pinion/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/rack-pinion/domains.json fluids.<name>:
Bexport_agreement
Each exported body equals its part handoff x placement; the assembled envelope matches
PASSresults/build123d/rack-pinion/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/rack-pinion/simulate.json observables.<id>.requirement: rackRatio=0.3491, rackTravel=125.7
Bconservation
Energy, mass and force balances of every analysis close within their tolerance
n/aresults/build123d/rack-pinion/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/rack-pinion/simulate.json simulations.<id>.refinement.observables:
Csource_hygiene
The assembly source imports only its declared inputs, formats and lints clean
PASSresults/build123d/rack-pinion/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/rack-pinion/domains.json boundaries.<body>.unassigned/conflicts: none
Cprovenance
Stage JSONs carry provenance stamps; part handoffs are hash-bound; inputs carry provenance
PASSresults/build123d/rack-pinion/<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/rack-pinion/verify.json hygiene.truth_refs = []

Bill of materials

BodyKindDesignMaterial
basemodelledrack-pinion-base
pinionmodelledrack-pinion-pinion
rackmodelledrack-pinion-rack