{"$schema":"nativecad-dfm-pack/1","id":"consumer","title":"Consumer products — housings, enclosures, handheld devices","sector":"consumer","version":"2026-09-03","summary":"Nominal wall by material, draft, ribs, bosses, snap fits, living hinges, ultrasonic welds, gaskets, textures, clamshell joints, battery doors, buttons, and the drop/tumble/cycle tests and standards a plastic consumer housing is held to.","aliases":["consumer product","housing","enclosure shell","clamshell","snap fit","living hinge","remote control","handheld","gadget","case","injection moulded housing","3d printed case"],"crossSector":false,"size":"standard","sources":[{"id":"bayer-snap-fit","title":"Bayer/Covestro Snap-Fit Joints for Plastics — A Design Guide","accessed":"2026-09-03"},{"id":"dupont-living-hinge","title":"DuPont Engineering Polymers — Living Hinge Design Guide","accessed":"2026-09-03"},{"id":"branson-ultrasonic","title":"Branson Ultrasonics — Joint Design for Ultrasonic Welding","url":"https://www.emerson.com/en-us/automation/branson","accessed":"2026-09-03"},{"id":"protolabs-guide","title":"Protolabs Injection Molding Design Guide","url":"https://www.protolabs.com/resources/design-tips/","accessed":"2026-09-03"},{"id":"fictiv-guide","title":"Fictiv Injection Molding Design Guidelines","url":"https://www.fictiv.com/articles/injection-molding-design-guidelines","accessed":"2026-09-03"},{"id":"ul-94","title":"UL 94 Standard for Tests for Flammability of Plastic Materials","url":"https://www.ul.com/services/ul-94-plastic-flammability","accessed":"2026-09-03"},{"id":"iec-62368-1","title":"IEC 62368-1 Audio/video, IT and communication technology equipment — Safety requirements","url":"https://webstore.iec.ch/publication/59362","accessed":"2026-09-03"},{"id":"cpsc-16cfr1501","title":"CPSC 16 CFR 1501 — Method for Identifying Toy Hazards (small-parts cylinder)","url":"https://www.cpsc.gov/Regulations-Laws--Standards/Federal-Register-Notices/2017/16-CFR-Part-1501","accessed":"2026-09-03"},{"id":"iec-60068-2-31","title":"IEC 60068-2-31 Environmental testing — Test Ec: Rough handling shocks","url":"https://webstore.iec.ch/publication/1000","accessed":"2026-09-03"},{"id":"hubs-3dp-guide","title":"Hubs (Protolabs) 3D Printing Design Guidelines — FDM/SLS/SLA","url":"https://www.hubs.com/knowledge-base/","accessed":"2026-09-03"},{"id":"moldtech-vdi3400","title":"VDI 3400 / Mold-Tech Texture Standard Reference","url":"https://www.mold-tech.com/","accessed":"2026-09-03"},{"id":"iec-60086","title":"IEC 60086 Primary Batteries — cell dimensions (AA, AAA, coin cells)","url":"https://webstore.iec.ch/publication/3049","accessed":"2026-09-03"}],"entries":[{"id":"wall-thickness-abs","kind":"dimension","tier":1,"title":"Nominal wall thickness, ABS injection moulding","summary":"ABS consumer housings run a 1.5-3.5 mm nominal wall, 2-2.5 mm typical; thinner short-shots the cavity, thicker sinks and slows cycle time.","applies":["abs","injection molding","housing"],"value":{"min":1.5,"max":3.5,"typical":2.5,"unit":"mm"},"basis":"Standard ABS moulding wall-thickness guidance for enclosure-class parts","sources":["protolabs-guide"],"tags":["wall","abs","injection-molding"],"check":{"process":"injection_molding","rule":"min_wall_thickness"}},{"id":"wall-thickness-pc","kind":"dimension","tier":1,"title":"Nominal wall thickness, polycarbonate (PC) injection moulding","summary":"PC housings run a 1.5-3.0 mm nominal wall; PC's higher viscosity fills thinner sections than ABS but sinks badly above 3 mm on a boss or rib root.","applies":["pc","polycarbonate","injection molding","housing"],"value":{"min":1.5,"max":3,"typical":2,"unit":"mm"},"basis":"Standard PC moulding wall-thickness guidance","sources":["protolabs-guide"],"tags":["wall","pc","injection-molding"],"check":{"process":"injection_molding","rule":"min_wall_thickness"}},{"id":"wall-thickness-pp","kind":"dimension","tier":1,"title":"Nominal wall thickness, polypropylene (PP) injection moulding","summary":"PP housings and living-hinge parts run a 1.0-3.0 mm nominal wall; PP's low shrink-sensitivity tolerates the thin end of the range better than ABS/PC.","applies":["pp","polypropylene","injection molding","housing","living hinge"],"value":{"min":1,"max":3,"typical":2,"unit":"mm"},"basis":"Standard PP moulding wall-thickness guidance","sources":["protolabs-guide"],"tags":["wall","pp","injection-molding"],"check":{"process":"injection_molding","rule":"min_wall_thickness"}},{"id":"wall-thickness-pa","kind":"dimension","tier":1,"title":"Nominal wall thickness, polyamide (PA/nylon) injection moulding","summary":"PA/nylon housings and clips run a 1.0-3.0 mm nominal wall; PA's fast crystallisation and moisture uptake favour the thinner, more uniform end of the range.","applies":["pa","nylon","injection molding","housing","snap fit"],"value":{"min":1,"max":3,"typical":2,"unit":"mm"},"basis":"Standard PA66/PA6 moulding wall-thickness guidance","sources":["protolabs-guide"],"tags":["wall","pa","nylon","injection-molding"],"check":{"process":"injection_molding","rule":"min_wall_thickness"}},{"id":"wall-thickness-pom","kind":"dimension","tier":1,"title":"Nominal wall thickness, acetal (POM) injection moulding","summary":"POM (acetal) parts, common for latches and gears in a housing, run a 1.5-3.0 mm nominal wall; POM shrinks more than ABS/PC so wall uniformity matters more, not less.","applies":["pom","acetal","delrin","injection molding"],"value":{"min":1.5,"max":3,"typical":2,"unit":"mm"},"basis":"Standard POM/acetal moulding wall-thickness guidance","sources":["protolabs-guide"],"tags":["wall","pom","acetal","injection-molding"],"check":{"process":"injection_molding","rule":"min_wall_thickness"}},{"id":"wall-thickness-tpe-overmold","kind":"dimension","tier":1,"title":"Nominal wall thickness, TPE overmould layer","summary":"A TPE (thermoplastic elastomer) soft-touch overmould skin runs 1.0-2.0 mm thick over a rigid substrate; thinner tears on demould, thicker adds cost and can telegraph substrate features.","applies":["tpe","overmold","soft touch","housing"],"value":{"min":1,"max":2,"typical":1.5,"unit":"mm"},"basis":"Common two-shot TPE overmould skin-thickness guidance","sources":["protolabs-guide"],"tags":["wall","tpe","overmold"],"see":["hardware/screw-boss-plastic"]},{"id":"wall-thickness-fdm","kind":"dimension","tier":1,"title":"Nominal wall thickness, FDM-printed housing","summary":"An FDM-printed housing wall runs 1.6-2.4 mm, i.e. 4-6 perimeters at a common 0.4 mm nozzle/extrusion width, to be self-supporting and hold a heat-set insert.","applies":["fdm","3d printing","housing"],"value":{"min":1.6,"max":2.4,"typical":2,"unit":"mm","note":"4-6 perimeters at 0.4mm extrusion width"},"basis":"Wall-loop multiples of a common 0.4 mm nozzle width for a self-supporting rigid shell","sources":["hubs-3dp-guide"],"tags":["wall","fdm","3d-printing"]},{"id":"wall-thickness-sls","kind":"dimension","tier":1,"title":"Nominal wall thickness, SLS (PA12) housing","summary":"An SLS PA12-printed housing wall runs 1.0-1.5 mm; SLS's self-supporting powder bed lets it go thinner than FDM but thinner than 1 mm warps in the thermal cycle and breaks in depowdering.","applies":["sls","pa12","3d printing","housing"],"value":{"min":1,"max":1.5,"typical":1.2,"unit":"mm"},"basis":"PA12 SLS printable wall floor with a margin for depowdering handling","sources":["hubs-3dp-guide"],"tags":["wall","sls","pa12","3d-printing"]},{"id":"wall-thickness-sla","kind":"dimension","tier":1,"title":"Nominal wall thickness, SLA/resin housing","summary":"An SLA (resin) printed housing wall runs 1.0-2.0 mm; below 1 mm an unsupported wall warps or detaches during the build-plate peel.","applies":["sla","resin","3d printing","housing"],"value":{"min":1,"max":2,"typical":1.5,"unit":"mm"},"basis":"SLA unsupported-wall floor before peel-induced warping/detachment","sources":["hubs-3dp-guide"],"tags":["wall","sla","resin","3d-printing"]},{"id":"wall-uniformity","kind":"rule","tier":1,"title":"Wall thickness uniformity across a housing","summary":"Keep adjoining wall sections within ±25% of the nominal wall; a bigger step changes cooling rate enough to sink, warp or void at the transition, whatever the resin.","applies":["housing","injection molding"],"value":{"max":25,"unit":"%"},"basis":"Uniform-wall moulding guidance: differential shrinkage across a wall-thickness step is what drives sink and warp","sources":["protolabs-guide","fictiv-guide"],"tags":["wall","uniformity","sink"]},{"id":"draft-angle-minimum","kind":"rule","tier":1,"title":"Minimum draft angle on moulded housing walls","summary":"Draft every wall parallel to the pull direction at least 1°, 1.5-2° on a lightly textured (VDI 18-24) surface, 0.5° acceptable only on a high-polish (SPI A) surface with no texture.","applies":["housing","injection molding"],"value":{"min":0.5,"max":2,"typical":1,"unit":"deg"},"basis":"Published minimum 1-2 deg per side on any wall parallel to the pull; texture needs more draft to release cleanly, polish needs less","sources":["protolabs-guide","fictiv-guide"],"tags":["draft","mold-release"],"check":{"process":"injection_molding","rule":"min_draft_angle"}},{"id":"corner-radius-inside-outside","kind":"rule","tier":1,"title":"Internal and external corner radii","summary":"Radius every internal corner to at least 0.5x the local wall thickness and every matching external corner to the internal radius plus one wall thickness, so the wall stays a constant section around the bend.","applies":["housing","injection molding"],"value":{"min":0.5,"unit":"ratio","note":"inside >= 0.5x wall; outside = inside + wall"},"basis":"A sharp internal corner is the classic moulded-part stress riser and flow restriction; matching the outside radius keeps the wall a constant section","sources":["protolabs-guide","fictiv-guide"],"tags":["corner","radius","stress"],"check":{"process":"injection_molding","rule":"min_internal_corner_radius"}},{"id":"rib-design","kind":"rule","tier":1,"title":"Rib thickness, height and draft off a housing wall","summary":"Size a rib to <=0.6x the wall thickness at its root, <=3x the wall in height, with 0.5-1° draft per side and >=2x the wall between adjacent ribs, or the rib sinks the show surface and starves the mould of flow.","applies":["housing","rib","injection molding"],"value":{"max":0.6,"unit":"ratio","note":"root thickness/wall; height <= 3x wall; spacing >= 2x wall; draft 0.5-1 deg"},"basis":"Rib thickness <=60% of nominal wall avoids a sink mark on the opposite show surface; height/spacing limits keep the rib fillable and coolable","sources":["protolabs-guide","fictiv-guide"],"tags":["rib","sink","stiffener"],"check":{"process":"injection_molding","rule":"max_rib_thickness_ratio"}},{"id":"hole-depth-ratio-consumer","kind":"rule","tier":1,"title":"Blind cored-hole depth-to-diameter ratio","summary":"Keep a blind cored hole (screw boss bore, standoff pocket) to <=3x its diameter deep; a through hole supported at both ends can go to ~6x before the core pin deflects or breaks under injection pressure.","applies":["housing","boss","injection molding"],"value":{"max":3,"unit":"ratio","note":"blind hole depth:diameter; ~6x for a through hole"},"basis":"An unsupported core pin is a cantilever; beyond ~3x diameter it deflects enough to produce an off-axis or short hole","sources":["protolabs-guide","fictiv-guide"],"tags":["hole","core-pin","boss"],"check":{"process":"injection_molding","rule":"max_hole_depth_ratio"}},{"id":"snap-fit-cantilever-basics","kind":"feature","tier":1,"title":"Cantilever snap-fit beam proportions","summary":"A cantilever snap beam runs 5-10x its own thickness in length, deflecting within an allowable strain of ~3% for ABS or ~6% for PP, with a 0.5-1.5 mm undercut at the catch — go longer/thinner rather than deeper to stay under the strain limit.","applies":["snap fit","housing","clamshell"],"value":{"min":5,"max":10,"unit":"ratio","note":"beam length:thickness; strain limit ~3% ABS, ~6% PP; undercut 0.5-1.5mm"},"basis":"Beam-bending allowable strain for the resin sets the deflection a given length:thickness ratio can take without yielding on repeated cycles","sources":["bayer-snap-fit"],"tags":["snap-fit","cantilever","beam"]},{"id":"living-hinge-pp","kind":"feature","tier":1,"title":"Living hinge geometry in polypropylene","summary":"A PP living hinge runs 0.2-0.3 mm thick at the hinge web, 1.0-1.5 mm land on either side, 0.5-0.8 mm fillet radius into the land, and must be flexed in the mould within minutes of moulding while the polymer chains are still oriented.","applies":["living hinge","pp","housing"],"value":{"table":[{"param":"hinge-thickness","min":0.2,"max":0.3},{"param":"land-width","min":1,"max":1.5},{"param":"fillet-radius","min":0.5,"max":0.8}],"unit":"mm"},"basis":"PP's high fatigue resistance only develops when the hinge web is flexed while molecular orientation from the fill is still fresh, typically within minutes of ejection","sources":["dupont-living-hinge"],"tags":["living-hinge","pp","flex"]},{"id":"battery-aa-compartment-consumer","kind":"dimension","tier":1,"title":"AA/AAA battery compartment for a consumer housing","summary":"An AA cell (⌀14.5x50.5 mm) needs a pocket of ⌀15.5x51.5 mm and an AAA cell (⌀10.5x44.5 mm) a pocket of ⌀11.5x45.5 mm, each with 3-5 mm of spring-contact travel at one end to take up cell-length tolerance.","applies":["battery","aa","aaa","housing"],"value":{"table":[{"param":"aa-pocket","diameter":15.5,"length":51.5},{"param":"aaa-pocket","diameter":11.5,"length":45.5}],"unit":"mm"},"basis":"IEC 60086 cell envelope plus 0.5-1mm assembly clearance and 3-5mm spring-contact travel","sources":["iec-60086"],"tags":["battery","aa","aaa","compartment"]},{"id":"button-key-travel","kind":"dimension","tier":1,"title":"Button/keycap travel and key gap","summary":"Size a moulded button or keycap for 0.3-1.5 mm of travel before it bottoms out, with a 0.2-0.3 mm gap to its neighbour so adjacent keys don't bind or let liquid track sideways between them.","applies":["button","keycap","housing","remote control"],"value":{"min":0.3,"max":1.5,"unit":"mm","note":"travel; key-to-key gap 0.2-0.3mm"},"basis":"Tactile-dome and silicone-pad button travel range balancing feel against bottoming-out force spikes","sources":["protolabs-guide"],"tags":["button","keycap","travel"]},{"id":"boss-plastic-see","kind":"feature","tier":2,"title":"Screw boss sizing off a housing wall","summary":"A screw boss standing off a consumer housing wall follows the generic plastic-boss rules (OD ~2.5x screw diameter, gusseted to the nearest wall, <=0.6x wall at the base) — see the hardware pack for the sizing table rather than duplicating it here.","applies":["boss","housing","screw"],"basis":"Boss geometry is process-driven, not sector-specific; the hardware pack owns the numbers","sources":["protolabs-guide"],"tags":["boss","screw","housing"],"see":["hardware/screw-boss-plastic"]},{"id":"heat-set-insert-see","kind":"fastener","tier":2,"title":"Heat-set insert for a housing boss","summary":"For a metal-threaded boss in a moulded or FDM housing use a brass heat-set insert: M3 needs a ⌀4.0 mm hole 5.5 mm deep in a ⌀9 mm boss (2× insert OD); full table in the hardware pack.","applies":["insert","boss","housing"],"basis":"Insert sizing is a generic fastener fact, not consumer-specific","sources":["protolabs-guide"],"tags":["insert","boss","fastener"],"see":["hardware/heat-set-inserts-metric"],"value":{"note":"insert size follows the boss/hole table for the chosen screw size","unit":"text","value":"see hardware/heat-set-inserts-metric"}},{"id":"snap-fit-annular","kind":"feature","tier":2,"title":"Annular snap-fit (cylindrical catch) proportions","summary":"An annular snap (a moulded lid ring snapping over a boss or bezel) uses a 0.3-0.8 mm undercut around the full circumference with a 30-45° lead-in chamfer; because the whole ring deflects at once, keep the undercut smaller than a cantilever's for the same resin strain limit.","applies":["snap fit","housing","lid"],"value":{"min":0.3,"max":0.8,"unit":"mm"},"basis":"A full-circumference catch has no free length to distribute strain over, so its allowable undercut is smaller than an equivalent cantilever beam's","sources":["bayer-snap-fit"],"tags":["snap-fit","annular","lid"]},{"id":"snap-fit-torsion","kind":"feature","tier":2,"title":"Torsion snap-fit (twisting catch) proportions","summary":"A torsion snap loads a short torsion bar (typically 1-2x the wall in diameter, 8-15 mm long) in twist rather than bending a cantilever beam, giving a stiffer, lower-deflection catch useful where beam space is too tight for a cantilever.","applies":["snap fit","housing"],"value":{"min":8,"max":15,"unit":"mm","note":"torsion bar length; diameter 1-2x wall"},"basis":"Torsion-bar snaps trade cantilever deflection range for stiffness in a tight envelope, common on battery-door and small-lid catches","sources":["bayer-snap-fit"],"tags":["snap-fit","torsion"]},{"id":"snap-fit-return-angle-undercut","kind":"rule","tier":2,"title":"Snap-fit return angle and undercut by release intent","summary":"Cut the catch face at 90° (a permanent, non-releasable joint) or 30-45° (a releasable joint meant to be opened for service) with a matching 0.5-1.5 mm undercut; a 90° face with a small undercut is what makes a snap hard to defeat without breaking it.","applies":["snap fit","housing","clamshell"],"value":{"min":30,"max":90,"unit":"deg","note":"90deg permanent; 30-45deg releasable; undercut 0.5-1.5mm"},"basis":"Return-face angle sets the force needed to release the catch; a permanent joint uses a steep face the beam can't ride back over","sources":["bayer-snap-fit"],"tags":["snap-fit","return-angle","undercut"]},{"id":"ultrasonic-energy-director","kind":"feature","tier":2,"title":"Ultrasonic-weld energy director","summary":"An energy director for ultrasonic welding is a 60-90° triangular ridge 0.3-0.6 mm tall on one weld face, which concentrates the vibrational energy into a melt bead that fuses the two halves of a housing.","applies":["ultrasonic weld","housing","clamshell"],"value":{"min":0.3,"max":0.6,"unit":"mm","note":"ridge height; 60-90deg included angle"},"basis":"A sharp, small-contact-area ridge concentrates ultrasonic energy to melt first, rather than the whole joint face softening at once","sources":["branson-ultrasonic"],"tags":["ultrasonic","weld","energy-director"]},{"id":"ultrasonic-shear-joint","kind":"feature","tier":2,"title":"Ultrasonic shear-joint interference","summary":"A shear joint (a stepped, self-aligning ultrasonic weld used for a tight seal) runs 0.2-0.4 mm of interference along its full vertical wall, so the melt progressively shears and fuses as the parts telescope together rather than welding all at once.","applies":["ultrasonic weld","housing","seal"],"value":{"min":0.2,"max":0.4,"unit":"mm"},"basis":"Progressive shear melting along a tall, self-aligning interference gives a more continuous, leak-tight bead than a flat energy-director joint","sources":["branson-ultrasonic"],"tags":["ultrasonic","shear-joint","seal"]},{"id":"gasket-ip-see","kind":"rule","tier":2,"title":"Gasket groove and IP rating for a consumer housing","summary":"A consumer housing claiming an IP rating uses the same groove-width/depth and boss-spacing numbers as an electronics enclosure — see the electronics pack's IP54/IP65/IP67 gasket-groove entries rather than re-deriving them here.","applies":["gasket","ip rating","housing"],"basis":"Gasket-groove sizing is a sealing-geometry fact shared with electronics enclosures, not consumer-specific","sources":["iec-62368-1"],"tags":["gasket","ip-rating","seal"],"see":["electronics/ip54-gasket-groove","electronics/ip65-gasket-groove","electronics/ip67-gasket-groove"]},{"id":"parting-line-placement","kind":"rule","tier":2,"title":"Parting-line placement on a housing","summary":"Route the parting line along the visible silhouette edge (not across a show face) and step it at least 1x the wall thickness around any texture or lettering, so mismatch and flash land on an edge the eye already reads as a break, not mid-surface.","applies":["housing","injection molding","cosmetic"],"basis":"A parting line placed on the natural silhouette hides normal per-shot mismatch; one crossing a show face is visible on every part","sources":["protolabs-guide","fictiv-guide"],"tags":["parting-line","cosmetic","tooling"]},{"id":"gate-placement","kind":"process","tier":2,"title":"Gate placement on a housing","summary":"Gate into the thickest section (≥ 1.5× the thinnest wall) and ≥ 10 mm from cosmetic show faces and snap-fit beams; a gate on a thin rib or at a snap beam's root leaves a weld line or vestige exactly where the part needs full strength.","applies":["housing","injection molding","gate"],"basis":"Filling thick-to-thin avoids premature freeze-off; keeping the gate off a structural feature avoids a weak spot at the gate vestige","sources":["protolabs-guide","fictiv-guide"],"tags":["gate","molding","process"]},{"id":"texture-vdi-moldtech","kind":"rule","tier":2,"title":"Surface texture callouts and the draft they add","summary":"Specify housing textures by VDI 3400 grade (VDI 12-15 fine grain to VDI 42-45 leather grain) or the equivalent Mold-Tech number, and add roughly +1° of draft per 0.025 mm of texture depth on top of the smooth-wall minimum so the texture releases without scuffing.","applies":["texture","housing","cosmetic"],"value":{"value":1,"unit":"deg","note":"additional draft per 0.025mm texture depth"},"basis":"A textured wall has raised peaks that must clear the mould on ejection just like a smooth wall, so texture depth adds directly to the required draft","sources":["moldtech-vdi3400"],"tags":["texture","vdi","mold-tech","draft"]},{"id":"draft-polish-reduced","kind":"rule","tier":2,"title":"Reduced draft on a high-polish surface","summary":"A high-polish (SPI A-1/A-2) show surface with no texture can go down to 0.5° draft, half the generic 1° floor, because there are no texture peaks to catch on ejection — but only on that specific polished, untextured face.","applies":["housing","cosmetic","polish"],"value":{"value":0.5,"unit":"deg"},"basis":"Draft exists to release texture and machining marks cleanly; a mirror-polished cavity has neither, so it tolerates less taper","sources":["protolabs-guide"],"tags":["draft","polish","cosmetic"]},{"id":"clamshell-lip-tongue-groove","kind":"feature","tier":2,"title":"Tongue-and-groove lip joint for a clamshell housing","summary":"A clamshell lip joint engages 0.5-0.8 mm of tongue into groove with 0.1 mm of clearance per side, enough to locate the two halves and block a straight-line dust/light path without binding on moulding tolerance.","applies":["clamshell","housing","lip"],"value":{"table":[{"param":"engagement","min":0.5,"max":0.8},{"param":"clearance","value":0.1}],"unit":"mm"},"basis":"Enough engagement to locate and dust-seal the joint, with clearance kept to the moulding tolerance floor so the two halves don't bind on assembly","sources":["protolabs-guide"],"tags":["clamshell","lip","tongue-and-groove"]},{"id":"battery-2032-compartment","kind":"dimension","tier":2,"title":"CR2032 coin-cell compartment","summary":"A CR2032 coin cell (⌀20x3.2 mm) needs a pocket of ⌀21x3.6-4 mm with a spring-loaded or PCB clip contact; orient the pocket so the cell can only insert one polarity forward, per the cell's own labelling.","applies":["battery","2032","coin cell","housing"],"value":{"table":[{"param":"cell","diameter":20,"thickness":3.2},{"param":"pocket","diameter":21,"thickness":3.8}],"unit":"mm"},"basis":"IEC 60086 CR2032 cell envelope plus assembly clearance for a spring or clip contact","sources":["iec-60086"],"tags":["battery","2032","coin-cell","compartment"]},{"id":"label-recess","kind":"dimension","tier":2,"title":"Label/nameplate recess depth","summary":"Recess a printed label or nameplate 0.1-0.2 mm below the surrounding surface so the label's own thickness sits flush rather than proud, where it would catch and peel at the edge.","applies":["label","housing","cosmetic"],"value":{"min":0.1,"max":0.2,"unit":"mm"},"basis":"Common pressure-sensitive label stock thickness, sized so the label sits flush after applying","sources":["protolabs-guide"],"tags":["label","recess","cosmetic"]},{"id":"key-gap-spacing","kind":"dimension","tier":2,"title":"Key-to-key gap on a button cluster","summary":"Space adjacent buttons or keys 0.2-0.3 mm apart at their moulded edges; tighter binds under moulding tolerance and thermal expansion, wider lets liquid or debris track between keys.","applies":["button","keycap","housing","remote control"],"value":{"min":0.2,"max":0.3,"unit":"mm"},"basis":"Moulding tolerance plus thermal-expansion clearance for two independently actuated key caps sharing one bezel opening","sources":["protolabs-guide"],"tags":["button","keycap","gap"]},{"id":"cable-strain-relief","kind":"feature","tier":2,"title":"Cable strain relief boss at a housing exit","summary":"A moulded strain-relief boss tapers the cable exit from the bend-radius-limited cable OD down to a snug bore over 8-12 mm, with ribs gripping the cable jacket rather than a sharp single edge that would cut into it under flex.","applies":["cable","strain relief","housing"],"value":{"min":8,"max":12,"unit":"mm"},"basis":"A gradual taper distributes bend stress over a length instead of concentrating it at one sharp exit edge, the classic cable-fatigue failure point","sources":["protolabs-guide"],"tags":["cable","strain-relief","boss"]},{"id":"rubber-feet","kind":"feature","tier":2,"title":"Rubber foot boss and recess","summary":"A stick-on rubber foot sits in a shallow 0.5-1 mm recess sized to its own diameter plus 0.2-0.3 mm clearance, so the foot's adhesive backing registers instead of drifting, and the foot's compressed height still clears the housing's lowest rib.","applies":["rubber foot","housing"],"value":{"min":0.5,"max":1,"unit":"mm"},"basis":"A shallow locating recess keeps an adhesive-backed foot registered under lateral load without needing a mechanical boss","sources":["protolabs-guide"],"tags":["foot","rubber","recess"]},{"id":"overmold-bond-rule","kind":"rule","tier":2,"title":"Overmould bond geometry","summary":"Give a TPE overmould mechanical purchase — 0.5-1 mm undercuts or through-holes in the rigid substrate every 15-25 mm — rather than relying on chemical bond alone, since not every rigid/TPE pair is chemically compatible.","applies":["overmold","tpe","housing"],"value":{"min":15,"max":25,"unit":"mm"},"basis":"Mechanical interlock guarantees adhesion independent of the specific rigid-resin/TPE chemical pairing, which varies by grade","sources":["protolabs-guide"],"tags":["overmold","tpe","bond"]},{"id":"fdm-mating-tolerance","kind":"tolerance","tier":2,"title":"FDM mating-part clearance","summary":"Two FDM-printed parts that must slide or snap together need 0.2-0.4 mm of clearance per side; tighter binds on typical FDM dimensional accuracy, looser feels loose on a snap or slide fit.","applies":["fdm","3d printing","housing"],"value":{"min":0.2,"max":0.4,"unit":"mm"},"basis":"Common FDM dimensional-accuracy band for a well-tuned printer/material combination","sources":["hubs-3dp-guide"],"tags":["fdm","tolerance","clearance"]},{"id":"fdm-hole-shrink-bridging-orientation","kind":"rule","tier":2,"title":"FDM hole shrink, bridging and build orientation","summary":"Oversize an FDM through-hole's nominal diameter by +0.2 mm to compensate for consistent shrink/first-layer squish, keep unsupported horizontal spans (bridges) under 40-50 mm, and orient the tallest snap/hinge feature along the build's Z axis for maximum layer strength across it.","applies":["fdm","3d printing","housing","hole"],"value":{"value":0.2,"unit":"mm","note":"hole oversize; bridging span 40-50mm max"},"basis":"FDM holes print consistently undersize from extrusion die-swell and cooling shrink; unsupported spans beyond the bridging limit sag before solidifying","sources":["hubs-3dp-guide"],"tags":["fdm","hole","bridging","orientation"]},{"id":"material-pcabs-consumer","kind":"material","tier":2,"title":"PC/ABS blend for consumer housings","summary":"PC/ABS blend (~1.1 g/cm3) is the common consumer-housing resin balancing ABS's mouldability with PC's impact and heat resistance, usually specified as UL 94 HB unless a flame-retardant grade is called out.","applies":["housing","pc-abs"],"value":{"value":1.1,"unit":"g/cm3"},"basis":"Standard PC/ABS blend resin datasheet density","sources":["ul-94"],"tags":["material","pc-abs","housing"]},{"id":"material-pp-consumer","kind":"material","tier":2,"title":"Polypropylene (PP) for hinged and flexed housing features","summary":"PP (~0.905 g/cm3) is the default resin wherever a housing needs a living hinge or a repeatedly flexed snap, thanks to its high fatigue resistance in thin section, at lower stiffness and heat resistance than ABS/PC.","applies":["housing","pp","living hinge","snap fit"],"value":{"value":0.905,"unit":"g/cm3"},"basis":"Standard homopolymer PP resin datasheet density","sources":["dupont-living-hinge"],"tags":["material","pp","living-hinge"]},{"id":"material-tpe-overmold","kind":"material","tier":2,"title":"TPE for soft-touch overmoulds","summary":"TPE overmould compounds (~1.0-1.15 g/cm3 depending on Shore A hardness, typically 40-70A for a grip surface) two-shot or insert-mould onto ABS/PC/PP substrates for a soft-touch feel and secondary grip.","applies":["housing","tpe","overmold","soft touch"],"value":{"min":1,"max":1.15,"unit":"g/cm3"},"basis":"Standard TPE overmould compound datasheet density range across common Shore A hardness grades","sources":["protolabs-guide"],"tags":["material","tpe","overmold"]},{"id":"test-drop-consumer","kind":"test","tier":2,"title":"Drop test onto faces, edges and corners (IEC 60068-2-31)","summary":"Drop the housing 1000-1500 mm onto each of its six faces plus representative edges and corners; surviving it needs corner radii sized to this pack's corner-radius rule and a wall that doesn't flex enough to crack a boss or snap.","applies":["housing","drop test","handheld"],"value":{"min":1000,"max":1500,"unit":"mm"},"basis":"IEC 60068-2-31 Test Ec rough-handling shock procedure, applied at the consumer-handheld drop height rather than the heavier equipment-class range","sources":["iec-60068-2-31"],"tags":["test","drop","shock"]},{"id":"test-button-hinge-cycle","kind":"test","tier":2,"title":"Button and living-hinge cycle-life test","summary":"Cycle a button or keycap 100,000-1,000,000 times and a living hinge similarly; passing means the button's travel and the hinge's thickness/land stay within this pack's own numbers, since drifting outside either is what fatigues first.","applies":["button","living hinge","housing"],"value":{"min":100000,"max":1000000,"unit":"cycles"},"basis":"Common consumer-durability cycle-count target for a repeatedly actuated button or hinge feature","sources":["dupont-living-hinge"],"tags":["test","button","hinge","cycle"]},{"id":"standard-ul94-consumer","kind":"standard","tier":2,"title":"UL 94 — plastic flammability for consumer housings","summary":"UL 94 classifies plastics HB through 5VA by burn behaviour; a housing enclosing mains voltage or a lithium cell commonly needs V-0 or better, which drives both resin grade selection and the minimum wall thickness the grade was rated at.","applies":["housing","flammability","material"],"basis":"Governing standard for plastic flammability classification used in consumer-product enclosure specs","sources":["ul-94"],"tags":["standard","ul94","flammability"]},{"id":"standard-iec-62368-1","kind":"standard","tier":2,"title":"IEC 62368-1 — enclosure and finger-probe safety","summary":"IEC 62368-1 sets the finger-probe (⌀12 mm articulated) and tool-access rules for a consumer device's enclosure openings, plus creepage/clearance to any internal hazardous voltage — a housing's vent slots and cutouts must keep the probe out per this pack's vent-slot geometry.","applies":["housing","safety","enclosure"],"basis":"Governing safety standard for audio/video, IT and communication equipment enclosures, superseding IEC 60950-1/60065","sources":["iec-62368-1"],"tags":["standard","iec62368","safety"]},{"id":"standard-cpsc-small-parts","kind":"standard","tier":2,"title":"CPSC small-parts cylinder (16 CFR 1501) for toys","summary":"A toy for children under 3 must not release a part fitting entirely inside the CPSC small-parts cylinder (⌀31.7 x 57.1 mm) after normal use or foreseeable abuse — a battery door or trim piece is checked against this cylinder, not eyeballed.","applies":["toy","housing","small parts"],"value":{"value":31.7,"unit":"mm"},"basis":"16 CFR 1501 defines the small-parts test cylinder and the abuse/use-and-abuse test sequence a part must survive without releasing a fitting piece","sources":["cpsc-16cfr1501"],"tags":["standard","cpsc","small-parts","toy"]},{"id":"recipe-clamshell-base","kind":"recipe","tier":2,"title":"Recipe: two-part clamshell base with snap-fit hooks","summary":"Build an 80x50x25 mm clamshell base: a 2 mm shell wall open at the top, with two 3x3x3 mm snap-fit hook bumps unioned onto the inside of opposite walls near the rim to catch a mating lid.","applies":["clamshell","housing","snap fit"],"basis":"Combines wall-thickness-abs, wall-uniformity and snap-fit-cantilever-basics into one buildable shelled tray with catch features","sources":["protolabs-guide","bayer-snap-fit"],"tags":["recipe","clamshell","snap-fit"],"recipe":{"prompt":"Model an 80x50x25mm clamshell base: 2mm shell wall open at the top, with two small snap-fit hook bumps on opposite inside walls near the rim","steps":[{"tool":"cad_box","args":{"dx":80,"dy":50,"dz":25},"note":"outer clamshell base block"},{"tool":"cad_shell","args":{"of":"$0","thickness":2,"open":[{"normal":[0,0,1]}]},"note":"hollow into a tray, open top; shell before any boss/hook"},{"tool":"cad_box","args":{"dx":3,"dy":3,"dz":3,"origin":[38.5,2,18]},"note":"snap hook bump on the inside of the y=0 wall, near the rim"},{"tool":"cad_boolean_union","args":{"of":"$1","tool":"$2"},"note":"union hook 1 onto the tray"},{"tool":"cad_box","args":{"dx":3,"dy":3,"dz":3,"origin":[38.5,45,18]},"note":"matching snap hook bump on the opposite wall"},{"tool":"cad_boolean_union","args":{"of":"$3","tool":"$4"},"note":"union hook 2 onto the tray"}],"expect":{"volume":19646,"faceCount":21,"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-battery-door","kind":"recipe","tier":2,"title":"Recipe: battery door with finger recess and snap tab","summary":"Build a 30x15x2 mm battery door: an 8x6x1 mm finger recess pocketed into the top face for thumbnail access, and a 4x2x1.5 mm snap tab projecting from one edge to catch the housing.","applies":["battery door","housing","snap fit"],"basis":"Combines wall-thickness-pc/abs-class thin-lid thickness with a pocketed finger recess and a torsion/cantilever-style snap tab into one buildable door","sources":["protolabs-guide","bayer-snap-fit"],"tags":["recipe","battery-door","snap-fit"],"recipe":{"prompt":"Model a 30x15x2mm battery door with an 8x6mm finger recess in the top face and a small snap tab on one edge","steps":[{"tool":"cad_box","args":{"dx":30,"dy":15,"dz":2},"note":"door plate"},{"tool":"cad_box","args":{"dx":8,"dy":6,"dz":2,"origin":[11,4.5,1]},"note":"pocket tool piercing the top face by 1mm, for an 8x6mm x 1mm-deep finger recess"},{"tool":"cad_boolean_subtract","args":{"of":"$0","tool":"$1"},"note":"cut the finger recess"},{"tool":"cad_box","args":{"dx":4,"dy":2,"dz":1.5,"origin":[13,15,0]},"note":"snap tab projecting from the far edge"},{"tool":"cad_boolean_union","args":{"of":"$2","tool":"$3"},"note":"union the snap tab onto the door"}],"expect":{"volume":864,"faceCount":15,"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-remote-control-shell","kind":"recipe","tier":2,"title":"Recipe: remote-control shell with fillets and button cutouts","summary":"Build a 150x45x20 mm remote-control shell: a 1.5 mm shell wall open at the bottom, R1.5 mm rounded outer edges (the radius a 1.5 mm wall carries — CADSB-744), and four 8x8 mm button cutouts through the top face on 15 mm spacing.","applies":["remote control","handheld","housing"],"basis":"Combines wall-thickness-abs-class shell thickness, corner-radius-inside-outside fillet and button-key-travel-sized cutouts into one buildable handheld shell","sources":["protolabs-guide"],"tags":["recipe","remote-control","button"],"recipe":{"prompt":"Model a 150x45x20mm remote-control shell: 1.5mm shell wall open at the bottom, R1.5mm rounded edges, and four 8x8mm button cutouts on 15mm spacing through the top face","steps":[{"tool":"cad_box","args":{"dx":150,"dy":45,"dz":20},"note":"remote body block"},{"tool":"cad_shell","args":{"of":"$0","thickness":1.5,"open":[{"normal":[0,0,-1]}]},"note":"hollow into a shell open on the bottom; shell before fillets/cutouts"},{"tool":"cad_fillet_edges","args":{"of":"$1","radius":1.5},"note":"blanket-round the convex outer edges — radius = the 1.5mm wall; a larger blanket radius on a shelled body is refused blend-through-wall (CADSB-744)"},{"tool":"cad_box","args":{"dx":8,"dy":8,"dz":4,"origin":[20,15,17]},"note":"button cutout tool 1, piercing the top face"},{"tool":"cad_boolean_subtract","args":{"of":"$2","tool":"$3"},"note":"cut button 1"},{"tool":"cad_box","args":{"dx":8,"dy":8,"dz":4,"origin":[35,15,17]},"note":"button cutout tool 2, 15mm from button 1"},{"tool":"cad_boolean_subtract","args":{"of":"$4","tool":"$5"},"note":"cut button 2"},{"tool":"cad_box","args":{"dx":8,"dy":8,"dz":4,"origin":[50,15,17]},"note":"button cutout tool 3"},{"tool":"cad_boolean_subtract","args":{"of":"$6","tool":"$7"},"note":"cut button 3"},{"tool":"cad_box","args":{"dx":8,"dy":8,"dz":4,"origin":[65,15,17]},"note":"button cutout tool 4"},{"tool":"cad_boolean_subtract","args":{"of":"$8","tool":"$9"},"note":"cut button 4"}],"expect":{"volume":20172.32,"faceCount":39,"watertight":true,"selfIntersection":false,"note":"measured 2026-09-19: the pin 19942.57/49 was taken on 2026-09-05 by CADSB-744 (a369d9770), ONE DAY before CADSB-735 (315d51afc, 2026-09-06) stopped the whole-body fillet publishing two bands built THROUGH each other. R1.5 on the 1.5 mm bottom rim IS that pair: the blanket pass now blends 8 edges and skips 16 — 8 reentrant, and 8 partition-radius-exceeds-face naming the rim (\"reduce the radius to at most 0.750001 for this pair\"). So the pinned body had those 8 rim bands built through each other and would FAIL this recipe's own expect.selfIntersection:false, which the same CADSB-744 commit added. The 229.75 mm^3 gap is those bands. Same shape as CADSF-1604's post-cap-4x4, in fillet instead of chamfer. CADSF-1607"}}}]}