{"$schema":"nativecad-dfm-pack/1","id":"maker-enclosures","title":"Maker enclosures — Raspberry Pi, Arduino, ESP32 cases and project boxes","sector":"maker-enclosures","version":"2026-09-04","summary":"Board outlines and mounting holes for the SBC/dev-board families electronics.json doesn't cover (Pi Zero, Nano, NodeMCU, Jetson Nano, CM4, HATs), plus maker-specific fit, vent, lid, fan-grill, DIN-rail and material choices for a 3D-printed or extruded project box.","aliases":["raspberry pi case","arduino case","arduino uno","esp32 case","pico","raspberry pi pico","dev board enclosure","hat","din rail enclosure","sbc case","pcb case","vent slots","project box enclosure","3d printed project box"],"crossSector":false,"size":"full","sources":[{"id":"rpi-zero-2w-mech","title":"Raspberry Pi Zero 2 W Mechanical Drawing","url":"https://datasheets.raspberrypi.com/rpizero/raspberry-pi-zero-2-w-mechanical-drawing.pdf","accessed":"2026-09-04"},{"id":"rpi-4-mech","title":"Raspberry Pi 4 Model B Mechanical Drawing","url":"https://datasheets.raspberrypi.com/rpi4/raspberry-pi-4-mechanical-drawing.pdf","accessed":"2026-09-04"},{"id":"arduino-nano-store","title":"Arduino Nano Product Page (docs.arduino.cc)","url":"https://docs.arduino.cc/hardware/nano","accessed":"2026-09-04"},{"id":"nodemcu-devkit-repo","title":"NodeMCU Devkit Hardware Repository (board outline)","url":"https://github.com/nodemcu/nodemcu-devkit-v1.0","accessed":"2026-09-04"},{"id":"nvidia-jetson-nano","title":"NVIDIA Jetson Nano Module Product Page (mechanical spec)","url":"https://www.nvidia.com/en-us/autonomous-machines/embedded-systems/jetson-nano/product-development/","accessed":"2026-09-04"},{"id":"rpi-cm4-datasheet","title":"Raspberry Pi Compute Module 4 Datasheet","url":"https://datasheets.raspberrypi.com/cm4/cm4-datasheet.pdf","accessed":"2026-09-04"},{"id":"rpi-hats-spec","title":"Raspberry Pi HATs Specification (raspberrypi/hats, mechanical requirements)","url":"https://github.com/raspberrypi/hats/blob/master/README.md","accessed":"2026-09-04"},{"id":"computer-fan-sizes","title":"Standard axial cooling-fan frame sizes and mounting-hole spacing","url":"https://noctua.at/en/products/fan","accessed":"2026-09-04"},{"id":"hubs-3dp-tolerance","title":"Hubs FDM 3D Printing Design and Tolerance Guide","url":"https://www.hubs.com/knowledge-base/fdm-3d-printing-tolerances/","accessed":"2026-09-04"},{"id":"rpi-thermal-docs","title":"Raspberry Pi Documentation — thermals and throttling","url":"https://www.raspberrypi.com/documentation/computers/raspberry-pi.html","accessed":"2026-09-04"},{"id":"en-60715","title":"EN 60715 Standardized mounting on rails (TH35 DIN rail)","url":"https://www.din.de/en","accessed":"2026-09-04"},{"id":"hammond-1455-series","title":"Hammond Manufacturing 1455 Series extruded-aluminium enclosures","url":"https://www.hammfg.com/electronics/small-case/aluminum/1455","accessed":"2026-09-04"},{"id":"extrusion-2020-spec","title":"2020 T-slot aluminium extrusion profile specification","url":"https://openbuildspartstore.com/v-slot-20x20-linear-rail/","accessed":"2026-09-04"},{"id":"usb-micro-b-spec","title":"USB Micro-B receptacle mechanical envelope (USB-IF)","url":"https://www.usb.org/documents","accessed":"2026-09-04"},{"id":"ipc-2221","title":"IPC-2221 Generic Standard on Printed Board Design","url":"https://www.ipc.org/toc/IPC-2221.pdf","accessed":"2026-09-04"},{"id":"iec-60068-2-31","title":"IEC 60068-2-31 Rough-handling shock (drop) test","url":"https://webstore.iec.ch/publication/1000","accessed":"2026-09-04"}],"entries":[{"id":"pi-zero-mounting","kind":"dimension","tier":1,"title":"Raspberry Pi Zero / Zero 2 W board outline and mounting holes","summary":"Pi Zero and Zero 2 W share a 65 x 30 mm outline with four ~2.75 mm mounting holes on a 58 x 23 mm rectangle centred on the board — the Zero 2 W reuses the original Zero's case footprint and hole pattern.","applies":["raspberry pi zero","raspberry pi zero 2 w","pi zero","sbc"],"value":{"table":[{"param":"board","x":65,"y":30},{"param":"holes","x":58,"y":23},{"param":"hole-diameter","value":2.75}],"unit":"mm"},"basis":"Official Raspberry Pi Zero 2 W mechanical drawing","sources":["rpi-zero-2w-mech"],"tags":["raspberry-pi","pi-zero","mounting","pattern"]},{"id":"arduino-nano-outline","kind":"dimension","tier":1,"title":"Arduino Nano board outline (no standard mounting holes)","summary":"Arduino Nano is 45 x 18 mm with no standardised mounting-hole pattern across revisions; design the case around header-pin friction, a card-edge socket, or adhesive pads rather than a screwed-down board.","applies":["arduino nano"],"value":{"table":[{"param":"board","x":45,"y":18}],"unit":"mm"},"basis":"Arduino Nano official form factor; hole placement (where present) is not standardised across vendor clones","sources":["arduino-nano-store"],"tags":["arduino","nano","mounting"]},{"id":"nodemcu-devkit-outline","kind":"dimension","tier":1,"title":"NodeMCU / ESP8266-ESP32 devkit board outline","summary":"A NodeMCU-style ESP8266 or ESP32 devkit board runs about 48-58 mm long by 26-31 mm wide across dual 0.1 in pin-header rows, varying by vendor — confirm the exact board's own drawing before fixing a case width.","applies":["nodemcu","esp8266","esp32 devkit","esp32 case"],"value":{"table":[{"param":"length","min":48,"max":58},{"param":"width","min":26,"max":31}],"unit":"mm"},"basis":"NodeMCU/Amica devkit reference board layout; vendor clones vary the same way the ESP32 DevKitC does","sources":["nodemcu-devkit-repo"],"see":["electronics/esp32-devkit-width"],"tags":["esp8266","esp32","nodemcu","devkit"]},{"id":"jetson-nano-module-envelope","kind":"dimension","tier":1,"title":"Jetson Nano compute module envelope","summary":"The Jetson Nano production module is a 69.6 x 45 mm SO-DIMM-style board on a 260-pin edge connector; the Developer Kit's carrier board is closer to 100 x 80 mm — case to the carrier, not the bare module, unless building a custom carrier.","applies":["jetson nano","jetson nano developer kit"],"value":{"table":[{"param":"module","x":69.6,"y":45}],"unit":"mm"},"basis":"NVIDIA Jetson Nano product page mechanical specification","sources":["nvidia-jetson-nano"],"tags":["jetson","nano","sbc","module"]},{"id":"compute-module-4-envelope","kind":"dimension","tier":1,"title":"Raspberry Pi Compute Module 4 (CM4) envelope","summary":"CM4 is a 55 x 40 mm SO-DIMM-form module with no mounting holes of its own — it plugs into a carrier's edge connector; the official CM4 IO Board carrier is 105 x 70 mm with four corner mounting holes to case around instead.","applies":["compute module 4","cm4","compute module"],"value":{"table":[{"param":"module","x":55,"y":40},{"param":"io-board-carrier","x":105,"y":70}],"unit":"mm"},"basis":"Raspberry Pi Compute Module 4 datasheet","sources":["rpi-cm4-datasheet"],"tags":["compute-module","cm4","sbc"]},{"id":"raspberry-pi-hat-spec","kind":"dimension","tier":1,"title":"Raspberry Pi HAT board outline and stacking standoff","summary":"A HAT board outline is 65 x 56.5 mm (the Pi footprint plus a little extra length) and must be spaced at least 8 mm off the Pi by its standoffs/header; most HATs use an 11 mm standoff for solder-side clearance on both boards.","applies":["hat","raspberry pi hat","uhat"],"value":{"table":[{"param":"board","x":65,"y":56.5},{"param":"standoff-min","value":8},{"param":"standoff-typical","value":11}],"unit":"mm"},"basis":"Raspberry Pi HATs specification, mechanical requirement 5 (GPIO connector spacing)","sources":["rpi-hats-spec"],"tags":["hat","standoff","stacking"]},{"id":"fan-grill-40mm-hole-pattern","kind":"dimension","tier":1,"title":"40 mm cooling-fan mounting-hole pattern","summary":"A standard 40 x 40 x 10 mm cooling fan has four mounting holes on a 32 mm square pitch, sized for an M3 or 4-40 screw (~3.2-4.3 mm clearance hole) — the pattern a fan-grill plate or Pi enclosure fan boss should match.","applies":["fan","40mm fan","fan grill","vent slots"],"value":{"table":[{"param":"frame","value":40},{"param":"hole-pitch","value":32}],"unit":"mm"},"basis":"Industry-standard 40mm axial fan frame, consistent across vendors","sources":["computer-fan-sizes"],"tags":["fan","vent","grill","mounting"]},{"id":"fan-grill-30mm-hole-pattern","kind":"dimension","tier":1,"title":"30 mm cooling-fan mounting-hole pattern","summary":"A 30 x 30 x 7-10 mm cooling fan (common on Pi 4/5 top-hat coolers) has four mounting holes on a 24 mm square pitch, sized for an M3 screw — smaller than the 40 mm fan's 32 mm pitch, don't mix the two up in a fan boss.","applies":["fan","30mm fan","raspberry pi fan"],"value":{"table":[{"param":"frame","value":30},{"param":"hole-pitch","value":24}],"unit":"mm"},"basis":"Industry-standard 30mm axial fan frame, common on SBC cooling HATs","sources":["computer-fan-sizes"],"tags":["fan","vent","mounting"]},{"id":"maker-print-fit-clearance","kind":"tolerance","tier":1,"title":"Print clearance for a maker enclosure lid/boss fit","summary":"A press-fit or sliding joint on an FDM-printed maker case (lid rim into base, boss into a socket) wants 0.2-0.3 mm clearance per side on an unsanded, well-tuned printer; 0.3 mm is the safe default for a first print.","applies":["3d printed","fit test","lid","boss"],"value":{"min":0.2,"max":0.3,"typical":0.3,"unit":"mm"},"basis":"FDM dimensional-accuracy guidance for mating printed parts","sources":["hubs-3dp-tolerance"],"tags":["clearance","fit","fdm","tolerance"]},{"id":"vent-slot-width-printable","kind":"rule","tier":1,"title":"Minimum printable width for an FDM vent slot","summary":"A ventilation slot cut through an FDM wall should be at least 2 mm wide so the top perimeter bridges cleanly instead of sagging or fusing shut — narrower than the IP2X finger-safe 3 mm maximum, so 2-3 mm satisfies both at once.","applies":["vent slots","fdm","3d printed project box"],"value":{"min":2,"unit":"mm"},"basis":"Bridging/overhang limit for a short unsupported slot span on a common 0.4mm-nozzle FDM print","sources":["hubs-3dp-tolerance"],"see":["electronics/vent-slot-ip2x"],"tags":["vent","slot","fdm","printable"]},{"id":"maker-enclosure-default-wall","kind":"rule","tier":1,"title":"Default wall thickness for a first maker enclosure","summary":"Start a Pi/Arduino/ESP32 case at 2-2.5 mm wall if printing (about 5-6 perimeters at 0.4 mm) or 1.5-2 mm if injection moulding; check the electronics pack for the full process min/max before pushing thinner.","applies":["enclosure","project box enclosure","dev board enclosure"],"value":{"min":1.5,"max":2.5,"typical":2,"unit":"mm"},"basis":"Common maker-community starting wall before iterating against a specific printer or process","sources":["hubs-3dp-tolerance"],"see":["electronics/enclosure-wall-thickness-fdm","electronics/enclosure-wall-thickness-im"],"tags":["wall","enclosure","default"]},{"id":"port-cutout-height-rule","kind":"rule","tier":1,"title":"Placing a port cutout's height on an enclosure wall","summary":"A port cutout's Z-centre on the case wall = standoff height (board top above the floor) + half the connector's body height, e.g. a Pi4 on a 5 mm standoff with a 3.3 mm-tall USB-C body centres that cutout about 6.65 mm above the floor.","applies":["usb-c","hdmi","usb-a","raspberry pi case"],"value":{"typical":6.65,"unit":"mm","note":"worked example: 5mm standoff + 3.3mm USB-C body / 2"},"basis":"The connector body sits on top of the board, which itself sits on top of the standoff","sources":["rpi-4-mech","ipc-2221"],"see":["electronics/pcb-standoff-height","electronics/usb-c-cutout"],"tags":["port","cutout","height","standoff"]},{"id":"sbc-heat-throttle-clearance","kind":"rule","tier":1,"title":"Vent or fan a case around the Pi's thermal throttle points","summary":"Raspberry Pi 4/5 soft-throttles near 80 C and hard-throttles at 85 C; a sealed case with no venting can raise idle-to-load temperature 10-15 C over an open board, so give a sealed printed case at least 150 mm2 of vent-slot area or a 30/40 mm fan mount over the SoC.","applies":["raspberry pi case","sbc case","vent slots"],"value":{"table":[{"param":"soft-throttle","value":80},{"param":"hard-throttle","value":85}],"unit":"C"},"basis":"Raspberry Pi OS default thermal-governor thresholds","sources":["rpi-thermal-docs"],"see":["electronics/fin-spacing-natural-convection"],"tags":["thermal","throttle","vent","raspberry-pi"]},{"id":"din-rail-enclosure-depth-clearance","kind":"rule","tier":1,"title":"Rear clearance a DIN-rail maker enclosure needs behind its wall","summary":"A DIN-rail-mounted enclosure needs at least 20 mm clear behind its mounting wall — the TH35 rail's 15 mm-deep profile plus room for a clip's ~7.5 mm flex channel to seat — or the case body fouls the rail before the clip locks.","applies":["din rail enclosure"],"value":{"min":20,"unit":"mm"},"basis":"TH35 rail depth plus a standard plastic clip's channel depth","sources":["en-60715"],"see":["electronics/din-rail-profile","electronics/din-rail-clip-dimensions"],"tags":["din-rail","clearance","enclosure"]},{"id":"snap-lid-maker","kind":"feature","tier":1,"title":"Distributed snap bumps for a maker enclosure lid","summary":"A maker case lid that should close by hand without tooling uses 4-8 shallow snap bumps (0.5-0.8 mm overhang, 15-25 mm apart) round the rim rather than one or two deep cantilever hooks — more, lower-force catches close evenly and survive more cycles.","applies":["snap fit","lid","project box enclosure"],"value":{"min":0.5,"max":0.8,"unit":"mm"},"basis":"Distributing catch force keeps strain per bump low on PLA/PETG, which is more brittle than ABS/PC","sources":["hubs-3dp-tolerance"],"see":["electronics/snap-fit-cantilever-lid"],"tags":["snap-fit","lid","maker"]},{"id":"screw-lid-maker","kind":"feature","tier":2,"title":"Screw-down lid as the low-risk alternative to a snap lid","summary":"A screw-down lid uses 4 corner M2.5/M3 screws into printed bosses (self-tapping into PLA/PETG for occasional access, heat-set inserts if opened often); keep each boss centre at least 1.5x the hole diameter from any wall.","applies":["screw lid","enclosure","lid"],"value":{"min":1.5,"unit":"ratio"},"basis":"Boss-to-wall clearance avoids a thin, weak rib where the boss meets the case wall","sources":["hubs-3dp-tolerance"],"see":["hardware/heat-set-inserts-metric"],"tags":["screw","lid","boss"]},{"id":"hat-header-keepout","kind":"rule","tier":2,"title":"Keep-out around the 40-pin header for HAT compatibility","summary":"Leave a clear zone of at least 5 mm around the 40-pin GPIO header footprint and no wall on the header's outward short edge, so a stacked HAT's ribbon or camera-cable slot has room, per the HAT mechanical spec's flex-cable allowance.","applies":["hat","gpio header","raspberry pi case"],"value":{"min":5,"unit":"mm"},"basis":"HAT mechanical spec camera/display flex-cable slot clearance","sources":["rpi-hats-spec"],"tags":["hat","gpio","keepout"]},{"id":"heat-set-insert-boss-print-margin","kind":"fastener","tier":2,"title":"Sizing a printed boss around a heat-set insert on a thin wall","summary":"A boss standing alone off a 2 mm shelled wall for an M2.5 heat-set insert (4.0 mm insert OD, hardware pack table) wants roughly an 8 mm boss OD, not just insert-OD x2 — the extra margin covers the boss-to-shell wall junction so it doesn't crack on install.","applies":["heat-set insert","boss","enclosure"],"value":{"typical":8,"unit":"mm"},"basis":"Boss OD >= 2x insert OD plus a wall-junction margin, from field experience with thin-wall printed bosses","sources":["hubs-3dp-tolerance"],"see":["hardware/heat-set-inserts-metric"],"tags":["insert","boss","print"]},{"id":"hammond-box-reference-sizes","kind":"dimension","tier":2,"title":"Off-the-shelf enclosure reference sizes (Hammond 1455 series)","summary":"Hammond's 1455 extruded-aluminium series is a common size reference: 1455N1201 is 100 x 50 x 25 mm, 1455T2201 is 165 x 101 x 41 mm — useful envelopes to check a custom design against before committing to a print run.","applies":["project box enclosure","reference"],"value":{"table":[{"param":"1455N1201","x":100,"y":50,"z":25},{"param":"1455T2201","x":165,"y":101,"z":41}],"unit":"mm"},"basis":"Published Hammond Manufacturing 1455 series dimensions","sources":["hammond-1455-series"],"tags":["hammond","reference","aluminium"]},{"id":"project-box-cable-entry-clearance","kind":"rule","tier":2,"title":"Clearance around a cable-gland or grommet hole in a project box","summary":"Leave at least 3 mm of clear wall around a cable-gland or grommet hole's outer diameter so the gland's clamping nut doesn't overlap a nearby boss or internal rib, and stand any gland boss at least one gland-OD off the nearest corner.","applies":["cable gland","grommet","project box enclosure"],"value":{"min":3,"unit":"mm"},"basis":"The gland nut needs a flat annulus to seat and turn without binding on adjacent features","sources":["hubs-3dp-tolerance"],"see":["electronics/cable-gland-pg-sizes","electronics/cable-gland-metric-sizes"],"tags":["cable-gland","clearance"]},{"id":"pcb-case-tolerance-stackup","kind":"tolerance","tier":2,"title":"Internal cavity length for a boxed board, worked example","summary":"Cavity length = board length + 2x print clearance (0.3 mm) + 2x standoff play (~0.5 mm); a Pi 4 (85 mm) in a printed case wants an internal cavity of about 86.6 mm so the board drops in without forcing the standoff bosses.","applies":["raspberry pi case","sbc case","tolerance"],"value":{"typical":86.6,"unit":"mm"},"basis":"Sum of the board dimension, twice the print-clearance tolerance and twice a small standoff-position play","sources":["hubs-3dp-tolerance","rpi-4-mech"],"tags":["tolerance","stackup","cavity"]},{"id":"sbc-case-standoff-boss-height","kind":"feature","tier":2,"title":"Standoff-boss height on a shelled floor","summary":"A standoff boss unioned onto a shelled case floor should stand floor-thickness + board-clearance tall, embedded down through the floor per the box+union convention: a 2 mm floor plus 5 mm PCB clearance makes a 7 mm-tall boss whose bottom 2 mm buries into the floor.","applies":["standoff","boss","enclosure"],"value":{"typical":7,"unit":"mm"},"basis":"Embedding the boss through the floor (rather than starting it at the floor's top face) avoids a non-manifold seam at the union","sources":["ipc-2221"],"see":["electronics/pcb-standoff-height"],"tags":["standoff","boss","union"]},{"id":"din-rail-clip-integration","kind":"feature","tier":2,"title":"Attaching a DIN-rail clip to an enclosure's rear wall","summary":"Union a DIN-rail clip block (matching the electronics pack's clip channel geometry) onto the case's rear wall; that local patch needs to be at least the clip's 7.5 mm channel depth thick, usually a thickened boss rather than the case's normal 2 mm shell.","applies":["din rail enclosure","clip"],"value":{"min":7.5,"unit":"mm"},"basis":"The clip's channel depth sets the minimum thickness of the wall patch it's built on","sources":["en-60715"],"see":["electronics/din-rail-clip-dimensions"],"tags":["din-rail","clip","feature"]},{"id":"material-pla-enclosure","kind":"material","tier":2,"title":"PLA for a low-heat maker enclosure","summary":"PLA prints easily and holds tolerance well but softens around 55-60 C, so it's fine for an Arduino/ESP32 case or anything away from a hot component, but not for a case sitting directly over a Raspberry Pi's SoC in a warm room.","applies":["pla","3d printing","enclosure"],"value":{"table":[{"param":"heat-deflection","value":55}],"unit":"C"},"basis":"PLA heat-deflection temperature at standard test load","sources":["hubs-3dp-tolerance"],"tags":["pla","material","thermal"]},{"id":"material-petg-enclosure","kind":"material","tier":2,"title":"PETG as the practical minimum for a Pi-adjacent enclosure","summary":"PETG holds shape to about 70-80 C and is noticeably tougher than PLA, making it the practical minimum for any case that sits directly over a Raspberry Pi (which itself runs 60-80 C under load) — PLA can visibly sag there.","applies":["petg","raspberry pi case","enclosure"],"value":{"table":[{"param":"heat-deflection","min":70,"max":80}],"unit":"C"},"basis":"PETG heat-deflection range versus a Pi's typical loaded SoC/board temperature","sources":["hubs-3dp-tolerance","rpi-thermal-docs"],"tags":["petg","material","thermal","raspberry-pi"]},{"id":"material-abs-enclosure","kind":"material","tier":2,"title":"ABS for a tougher, warmer-tolerant maker case","summary":"ABS holds to about 90-100 C and takes acetone smoothing/vapour polishing well, at the cost of warping more than PETG/PLA on an open-bed printer — a reasonable step up from PETG for a case near sustained heat.","applies":["abs","enclosure"],"value":{"table":[{"param":"heat-deflection","min":90,"max":100}],"unit":"C"},"basis":"ABS heat-deflection range and known warping behaviour on FDM","sources":["hubs-3dp-tolerance"],"tags":["abs","material","thermal"]},{"id":"material-asa-enclosure","kind":"material","tier":2,"title":"ASA for an outdoor or UV-exposed maker enclosure","summary":"ASA matches ABS's toughness and heat resistance (~95-100 C) but adds UV/weathering resistance ABS lacks, making it the better default for an outdoor project box, garden sensor case or anything left in sunlight for months.","applies":["asa","outdoor","enclosure"],"value":{"table":[{"param":"heat-deflection","min":95,"max":100}],"unit":"C"},"basis":"ASA weatherability versus ABS on the same base thermal class","sources":["hubs-3dp-tolerance"],"tags":["asa","material","outdoor","uv"]},{"id":"material-aluminium-extrusion-enclosure","kind":"material","tier":2,"title":"Aluminium T-slot extrusion for a rigid maker enclosure frame","summary":"2020 (20x20mm) T-slot aluminium extrusion with printed end caps/panels builds a rigid, reconfigurable project box or rack frame; the 6 mm T-slot takes M5 T-nuts, avoiding print-only fastening for the load-bearing frame.","applies":["aluminium extrusion","2020 extrusion","project box enclosure"],"value":{"table":[{"param":"profile","value":20},{"param":"slot-width","value":6}],"unit":"mm"},"basis":"Common 2020 T-slot extrusion profile used in maker frames and enclosures","sources":["extrusion-2020-spec"],"tags":["aluminium","extrusion","frame"]},{"id":"recipe-pi4-case-base","kind":"recipe","tier":2,"title":"Recipe: Raspberry Pi 4 case base with standoff bosses and port cutouts","summary":"Build a 95x66x30 mm Pi 4 case base: a 2 mm shell open at the top, four standoff bosses unioned onto the floor on the Pi 4's 58x49 mm hole pattern, and USB-A/HDMI port cutouts subtracted through the front wall.","applies":["raspberry pi case","sbc case","dev board enclosure"],"basis":"Combines pi-zero/pi4-style mounting pattern, sbc-case-standoff-boss-height and port-cutout-height-rule into one buildable printed base","sources":["rpi-4-mech","hubs-3dp-tolerance"],"tags":["recipe","raspberry-pi","case"],"recipe":{"prompt":"Model a 95x66x30mm Raspberry Pi 4 case base: 2mm shell wall open at the top, four standoff bosses on the Pi 4's 58x49mm mounting-hole pattern, and USB-A and HDMI port cutouts through the front wall","steps":[{"tool":"cad_box","args":{"dx":95,"dy":66,"dz":30},"note":"outer case block"},{"tool":"cad_shell","args":{"of":"$0","thickness":2,"open":[{"normal":[0,0,1]}]},"note":"hollow into a tray, open top; shell before bosses/cutouts"},{"tool":"cad_box","args":{"dx":6,"dy":6,"dz":7,"origin":[7.5,7.5,0]},"note":"boss 1, embedded through the 2mm floor, at hole (10.5,10.5)"},{"tool":"cad_boolean_union","args":{"of":"$1","tool":"$2"},"note":"union boss 1 onto the tray"},{"tool":"cad_box","args":{"dx":6,"dy":6,"dz":7,"origin":[65.5,7.5,0]},"note":"boss 2, at hole (68.5,10.5) — 58mm from boss 1 in x"},{"tool":"cad_boolean_union","args":{"of":"$3","tool":"$4"},"note":"union boss 2"},{"tool":"cad_box","args":{"dx":6,"dy":6,"dz":7,"origin":[7.5,56.5,0]},"note":"boss 3, at hole (10.5,59.5) — 49mm from boss 1 in y"},{"tool":"cad_boolean_union","args":{"of":"$5","tool":"$6"},"note":"union boss 3"},{"tool":"cad_box","args":{"dx":6,"dy":6,"dz":7,"origin":[65.5,56.5,0]},"note":"boss 4, at hole (68.5,59.5), completing the 58x49mm rectangle"},{"tool":"cad_boolean_union","args":{"of":"$7","tool":"$8"},"note":"union boss 4"},{"tool":"cad_box","args":{"dx":13.6,"dy":6,"dz":6.4,"origin":[20,-2,15]},"note":"USB-A cutout tool piercing the front wall (y=0)"},{"tool":"cad_boolean_subtract","args":{"of":"$9","tool":"$10"},"note":"cut the USB-A port opening"},{"tool":"cad_box","args":{"dx":15.6,"dy":6,"dz":6.6,"origin":[45,-2,15]},"note":"HDMI cutout tool piercing the front wall"},{"tool":"cad_boolean_subtract","args":{"of":"$11","tool":"$12"},"note":"cut the HDMI port opening"}],"expect":{"volume":30464,"faceCount":39,"watertight":true,"note":"measured 2026-09-19: agrees with the kernel on the CADSF-1630 corpus sweep — volume inside the 0.5% band and faceCount exact"}}},{"id":"recipe-pico-case","kind":"recipe","tier":2,"title":"Recipe: Raspberry Pi Pico case with standoff bosses and USB cutout","summary":"Build a 59x29x12 mm Pico case: a 1.5 mm shell open at the top, two standoff bosses on the Pico's 47x11.4 mm mounting-hole pattern, and a Micro-USB cutout subtracted through the end wall.","applies":["pico","raspberry pi pico","dev board enclosure"],"basis":"Combines pi-pico-mounting geometry, sbc-case-standoff-boss-height and micro-usb-cutout into one buildable printed case","sources":["hubs-3dp-tolerance"],"tags":["recipe","pico","case"],"recipe":{"prompt":"Model a 59x29x12mm Raspberry Pi Pico case: 1.5mm shell wall open at the top, two standoff bosses on the Pico's 47x11.4mm mounting-hole pattern, and a Micro-USB cutout through the end wall","steps":[{"tool":"cad_box","args":{"dx":59,"dy":29,"dz":12},"note":"outer case block"},{"tool":"cad_shell","args":{"of":"$0","thickness":1.5,"open":[{"normal":[0,0,1]}]},"note":"hollow into a tray, open top"},{"tool":"cad_box","args":{"dx":5,"dy":5,"dz":4.5,"origin":[3.5,6.3,0]},"note":"boss 1, embedded through the 1.5mm floor, at hole (6,8.8)"},{"tool":"cad_boolean_union","args":{"of":"$1","tool":"$2"},"note":"union boss 1 onto the tray"},{"tool":"cad_box","args":{"dx":5,"dy":5,"dz":4.5,"origin":[50.5,6.3,0]},"note":"boss 2, at hole (53,8.8) — 47mm from boss 1 in x"},{"tool":"cad_boolean_union","args":{"of":"$3","tool":"$4"},"note":"union boss 2"},{"tool":"cad_box","args":{"dx":3,"dy":9.1,"dz":3.4,"origin":[-1,9.95,5]},"note":"Micro-USB cutout tool piercing the end wall (x=0)"},{"tool":"cad_boolean_subtract","args":{"of":"$5","tool":"$6"},"note":"cut the Micro-USB port opening"}],"expect":{"volume":5347.59,"faceCount":25,"watertight":true,"note":"measured 2026-09-19: agrees with the kernel on the CADSF-1630 corpus sweep — volume inside the 0.5% band and faceCount exact"}}},{"id":"recipe-fan-grill-plate","kind":"recipe","tier":2,"title":"Recipe: 40 mm fan grill mounting plate","summary":"Build a 44x44x3 mm plate for a 40 mm fan: four M3 clearance mounting holes on the fan's 32 mm square pitch, plus a ring of twelve 2.5 mm round vent holes through the centre as the grille.","applies":["fan grill","vent slots","40mm fan"],"basis":"Combines fan-grill-40mm-hole-pattern and vent-hole-round-alternative into one buildable plate using cad_hole_pattern","sources":["computer-fan-sizes","hubs-3dp-tolerance"],"tags":["recipe","fan","grill"],"recipe":{"prompt":"Model a 44x44x3mm mounting plate for a 40mm fan: four M3 clearance holes on the fan's 32mm square mounting pattern, and a ring of twelve 2.5mm round vent holes through the centre","steps":[{"tool":"cad_box","args":{"dx":44,"dy":44,"dz":3},"note":"plate blank"},{"tool":"cad_hole_pattern","args":{"of":"$0","type":"drill","diameter":3.2,"pattern":{"kind":"grid","origin":[6,6],"dx":32,"dy":32,"nx":2,"ny":2}},"note":"4x M3 clearance mounting holes on the 32mm fan pitch"},{"tool":"cad_hole_pattern","args":{"of":"$1","type":"drill","diameter":2.5,"pattern":{"kind":"circular","center":[22,22],"radius":15,"count":12}},"note":"ring of 12 round vent holes forming the grille"}],"expect":{"volume":5534.78,"faceCount":38,"watertight":true,"note":"measured 2026-09-19: agrees with the kernel on the CADSF-1630 corpus sweep — volume inside the 0.5% band and faceCount exact"}}},{"id":"test-drop-maker-enclosure","kind":"test","tier":2,"title":"Drop test for a maker enclosure","summary":"A 1000 mm drop onto a hard floor on each face/corner/edge (a maker-scale version of IEC 60068-2-31) wants outer corners radiused >= 2 mm and no unsupported flat wall span over 40 mm, or a printed PLA/PETG case cracks at the corner or splits the flat.","applies":["drop test","enclosure"],"value":{"typical":1000,"unit":"mm"},"basis":"Scaled-down maker version of the rough-handling shock test's corner/edge/face drop sequence","sources":["iec-60068-2-31"],"see":["electronics/test-drop-iec-60068-2-31"],"tags":["drop","test","corner-radius"]},{"id":"test-thermal-throttle-clearance","kind":"test","tier":2,"title":"Thermal soak test against the Pi's throttle points","summary":"Run the boxed Pi at full CPU load for 10-15 minutes and read the SoC temperature; if it crosses 80 C before load settles, the case needs more vent-slot area or a fan mount — a soak test is what validates a vent design, not a spec check alone.","applies":["thermal test","raspberry pi case","vent slots"],"value":{"typical":80,"unit":"C"},"basis":"Sustained-load soak is the only way to confirm a given vent design keeps the SoC under its throttle point","sources":["rpi-thermal-docs"],"tags":["thermal","test","raspberry-pi"]},{"id":"test-fit-print-clearance","kind":"test","tier":2,"title":"Fit test for boss/socket and lid clearance","summary":"Print the base and lid (or a boss/socket coupon) and test-fit by hand: if it needs force or sanding, clearance is under the 0.2-0.3 mm default; if it rattles, it's over — adjust the mating dimension by 0.1 mm steps and reprint.","applies":["fit test","tolerance","3d printed"],"value":{"typical":0.3,"unit":"mm"},"basis":"Printer-to-printer variance makes a coupon test more reliable than trusting the nominal clearance alone","sources":["hubs-3dp-tolerance"],"tags":["fit-test","tolerance","print"]},{"id":"micro-usb-cutout","kind":"dimension","tier":2,"title":"Micro-USB panel cutout","summary":"A Micro-USB Type-B receptacle body is about 8.7 x 3.0 mm; cut the panel opening to roughly 9.3 x 3.4 mm (0.2-0.4 mm clearance per side) for boards like the Pico or a NodeMCU that still use Micro-USB rather than USB-C.","applies":["micro-usb","pico","nodemcu","connector cutout"],"value":{"table":[{"param":"receptacle","x":8.7,"y":3},{"param":"cutout","x":9.3,"y":3.4}],"unit":"mm"},"basis":"USB Micro-B receptacle mechanical envelope plus panel clearance","sources":["usb-micro-b-spec"],"tags":["micro-usb","cutout","connector"]},{"id":"vent-hole-round-alternative","kind":"feature","tier":2,"title":"Round vent holes as the print-friendly alternative to slots","summary":"A grid of ~2.5 mm round holes passes the same IP2X finger-safety limit as a 3 mm slot (the round hole is smaller than the 12.5 mm test finger the same way) while printing overhang-free on FDM, unlike a long thin slot.","applies":["vent slots","enclosure","fdm"],"value":{"typical":2.5,"unit":"mm"},"basis":"A round hole has no unsupported bridging span the way a slot's long edge does","sources":["hubs-3dp-tolerance"],"see":["electronics/vent-slot-ip2x"],"tags":["vent","round-hole","fdm"]},{"id":"lid-alignment-lip","kind":"feature","tier":2,"title":"Alignment lip between a case base and lid","summary":"A 0.5-1 mm tall, clearance-fit step round the base rim (socket) that a matching lip on the lid drops into keeps a snap or screw lid centred and blocks a straight dust/light path at the seam; print the lip on the lid, the socket on the base.","applies":["lid","enclosure","alignment"],"value":{"min":0.5,"max":1,"unit":"mm"},"basis":"A shallow step self-centres the lid and breaks the seam's straight-through gap without adding real sealing","sources":["hubs-3dp-tolerance"],"tags":["lid","alignment","lip"]},{"id":"project-box-lid-screw-count","kind":"rule","tier":2,"title":"Lid screw count by enclosure length","summary":"A screw-down lid uses 4 corner screws under about 120 mm of case length; past 150 mm add a 5th, central screw so the lid doesn't bow enough at mid-span to gap the seam or warp against a corner-only clamp.","applies":["screw lid","project box enclosure"],"value":{"min":4,"typical":4,"unit":"count"},"basis":"Unsupported lid span between corner screws grows with case length, the same logic as a board's standoff count","sources":["hubs-3dp-tolerance"],"see":["electronics/mounting-standoff-count-rule"],"tags":["screw","lid","count"]},{"id":"maker-enclosure-corner-radius","kind":"rule","tier":2,"title":"Outer corner radius for a maker enclosure","summary":"Round outer corners to at least 2 mm: it blunts the point most likely to crack on a drop and removes the FDM top-layer overhang defect a sharp 90 degree outside corner leaves on some slicers.","applies":["enclosure","corner","drop test"],"value":{"min":2,"unit":"mm"},"basis":"Corner-radius floor shared by the drop test's geometric requirement and FDM's own printability limit","sources":["hubs-3dp-tolerance","iec-60068-2-31"],"tags":["corner","radius","drop","fdm"]},{"id":"aluminium-extrusion-panel-slot","kind":"dimension","tier":3,"title":"Panel slot for a T-slot extrusion enclosure frame","summary":"A 2020 extrusion frame holds flat panels in a 3 mm deep channel sized to the panel thickness plus 0.3 mm print clearance, routed or printed into an end cap that clamps into the extrusion's 6 mm T-slot with an M5 T-nut.","applies":["aluminium extrusion","panel","project box enclosure"],"value":{"typical":3,"unit":"mm"},"basis":"Panel-retention channel depth common to T-slot extrusion frame builds","sources":["extrusion-2020-spec"],"tags":["extrusion","panel","slot"]}]}