I spent three days staring at a 99-part assembly in Fusion 360, orbiting around every corner, convinced it was clean. It wasn't.
The Problem
A motor bracket was buried 27,000 mm³ inside an aluminum extrusion. Twenty-four joining plates were clipping beams by fractions of a millimeter. A motor mount had quietly drifted 600mm from its motor during an auto-placement update. None of it visible at screen scale. All of it structurally wrong.
I only found out because I got tired of looking and wrote a script to look for me. That script became CADCLAW — an open-source testing framework for STEP assemblies. The testing layer mechanical engineering never had.
The Gap Nobody Talks About
Software developers have had automated testing for decades. Write code, write tests, run CI. If something breaks, you know before it ships. Shipping code without tests is considered unprofessional.
In mechanical CAD? You open the file. You orbit around. You squint at intersections. You zoom into corners. That's it. That's the quality assurance process for most hardware teams. Including ours.
For our project — M3-CRETE, an open-source concrete 3D printer with 17 aluminum extrusions, 6 stepper motors, 24 V-wheels, and dozens of brackets, plates, and belts — visual inspection stopped scaling around part 50. By part 99, we were guessing.
Five Gates
Inventory. Every mechanical part has a dimensional fingerprint. A NEMA23 motor is always 56.4 × 56.4 × 76.6 mm. Always. The harness labels parts by their bounding-box signature, counts them, and tells you if something's missing before you notice it's gone.
Interference. Not bounding-box approximation — exact solid-solid boolean intersection using OpenCascade. Reports overlap volume in cubic millimeters. If a plate clips a beam by half a mm³, you see it. Your eyes never would.
Adjacency. “Is every motor within 50mm of its bracket?” When you auto-place 99 parts, one ends up in the right assembly at the wrong address. This gate catches it in zero seconds.
Dimensional. Did that box() call swap two arguments and produce an 80mm slab instead of a 4mm plate? The “typo catcher” for geometry.
Kinematics. Our gantry beam — two 1-meter C-beams spliced to span 2 meters — was sagging 0.9mm at center under a 3kg printhead.
Try holding your fingers apart by 0.5mm. That's our tolerance target. Now imagine that deviation compounding across a 2-meter concrete print, layer after layer after layer. The wall curves. The layers drift. The print fails.
The kinematics gate flagged it. We added two carbon fiber tubes epoxied into the beam channels — 200 grams, $60 — and the sag dropped to 0.42mm. Problem solved before we ever cut aluminum.
The Numbers
- 70 MB → 13 MB STEP file. The harness identified that imported supplier geometry — beautiful filleted edges, countersunk holes, NURBS surfaces — was 80% of the file size. Replaced with parametric geometry. Same assembly. Five times smaller.
- 53 solid-solid interferences caught in one three-second run. Plates clipping beams. A bracket 27,000 mm³ deep inside a beam. My eyes missed all 53.
- Motor mount 600mm from motor. The adjacency gate caught it immediately.
- 150+ design changes validated across 15 sessions without opening a CAD viewer.
What This Normally Costs
CATIA with assembly validation modules: $7,500–$10,000 per seat per year. SolidWorks Professional with interference detection: $5,000–$8,000. Hiring a mechanical engineering consultant to manually review a 99-part assembly: $70–$150/hour, 40+ hours, $3,000–$6,000 — and they still might miss what a boolean intersection check finds in 3 seconds.
We wrote 500 lines of Python and got better results. Then we open-sourced it.
The Human-AI Part
This framework was built during a collaboration between me and an AI (Claude). I design in Fusion 360. The AI reads the STEP geometry, generates parametric replacements, validates the assembly. The harness sits between us.
I catch things the AI can't — “that bracket needs to clear the belt path” requires physical intuition. The AI catches things I can't — “plate 17 overlaps C-beam 4 by 1,003 mm³ at coordinates (2102, 18, 20)” requires checking 4,800 part pairs in 3 seconds.
Neither of us is the quality gate. The harness is. If the harness passes, the geometry is coherent. Both of us trust it. Both of us are accountable to it.
Try It
- CADCLAW: github.com/sunnyday-technologies/CADCLAW
- M3-CRETE printer: github.com/sunnyday-technologies/M3-CRETE
- Interactive BOM: bom.m3-crete.com/bom
MIT license. Python + CadQuery. No commercial CAD software required. 17 passing tests across 3 tiers of fixture complexity.
If you've ever spent an afternoon squinting at an assembly wondering if something's clipping — this exists now.