cnc_machinability_check
Screen a 3D solid for 3-axis CNC machinability: count required setups, flag undercuts, deep pockets, small radii, and thin walls to guide design decisions.
Instructions
3-axis CNC machinability screen off a live solid — pure geometry, NO CAM engine (no toolpath, no gouge check, no holder collision).
Counts SETUPS from a tool-approach census: for every machined face, which of ±X/±Y/±Z can both address it (the normal does not point away — a wall parallel to the tool axis is milled by the cutter's periphery) and reach it (a ray from the face escapes the solid, the same caster the moldability undercut check uses), reduced to a minimum cover. Faces lying on the stock envelope are excluded: they are billet surfaces, and counting them would quote six setups for a plain block.
Findings: 'undercut' (a machined face no principal approach reaches — 5-axis, a
special cutter, or a redesign), 'deep_pocket' (depth/(2·corner radius) past
max_l_over_d — the corner radius caps the cutter and it cannot reach),
'small_radius' (an internal corner below the smallest cutter quoted, including a
SHARP planar corner reported as radius 0, which no rotating tool can produce),
'thin_wall'. pass is false when any fires; more than max_setups is a warning,
not a failure. fidelity='correlation', band_pct=None (an ordinal screen — rank
variants with score, don't gate on it).
Returns {setups, setup_directions, coverage, machined_faces, stock_faces, machined_area_mm2, min_internal_radius_mm, max_l_over_d_seen, undercut_faces, findings:[{code, severity, feature, detail}], warnings, score, pass, fidelity, band_pct, basis, escalate_to='cnc_time_estimate', limitations, n_faces}.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes | ||
| max_setups | No | ||
| min_wall_mm | No | ||
| max_l_over_d | No | ||
| min_tool_radius_mm | No |