| name | openscad-support-free-fdm |
| description | Audit, redesign, and generate self-supporting OpenSCAD geometry for FDM printing. Use when minimizing or eliminating supports, fixing overhangs, choosing teardrops or polyholes, adding sacrificial bridges, splitting parts with joinery, tuning thread slop, or deciding when Manifold-backed booleans are needed. |
| argument-hint | Part type, intended print orientation, material, nozzle, layer height, support policy, and any problem features |
OpenSCAD Support-Free FDM
Use this skill when the geometry itself must solve printability. It is for redesigning parts to print cleanly without slicer-generated supports, not for installing OpenSCAD or libraries.
This skill is self-contained. Use it for the support-free redesign workflow, decision tree, and failure-mode triage. If the blocker is environment setup, use openscad-toolchain-setup. If the blocker is render or export validation rather than geometry redesign, use openscad-model-qa.
Inputs To Confirm
Before changing geometry, confirm:
- target print orientation and whether it is fixed or negotiable
- material, nozzle diameter, line width, and layer height
- whether supports are forbidden, merely discouraged, or acceptable only in named locations
- critical holes, threads, counterbores, snap fits, or mating faces
- clearance targets and whether the part is single-piece or can be split
- whether BOSL2, MCAD, or NopSCADlib may be used
- whether the model is expected to render with
--backend=manifold
Default Bias
- Prefer support-free geometry over slicer supports.
- Prefer changing topology before adding sacrificial or custom support.
- Treat downward fillets, horizontal circular bores, and blind vertical counterbores as first-class risk features.
- If a feature still requires support after redesign, make the justification explicit.
Workflow
-
Lock the print orientation.
- Define the intended build-plate face first.
- Reorient the design before adding complexity; orientation changes often remove more supports than local edits.
-
Diagnose unsupported geometry.
- Use layer-to-layer reasoning: compare a section at
Z_n against Z_(n-1) dilated by the allowed horizontal offset.
- Compute
offset_max = layer_height / tan(max_overhang_angle).
- For a 45 degree rule of thumb,
offset_max ~= layer_height.
- In OpenSCAD, model diagnostic slices with
projection(cut=true) plus offset(r=offset_max) and isolate violations with difference().
- Highlight suspect regions with
color([1, 0, 0, 0.8]), #, %, !, and disable heavy diagnostics with * before final render.
-
Pick the least invasive fix.
- Downward edges: replace fillets with 45 degree chamfers or BOSL2 masks.
- Horizontal holes: choose between polyhole, teardrop, and truncated teardrop.
- Vertical counterbores and nut traps: add sacrificial bridges or hanging-hole style sequential overhangs.
- Threads: add explicit slop and favor printable thread profiles or orientation changes.
- Large multi-axis overhangs: split the part and add joinery.
- Custom supports: use only when topology changes are impossible or would violate the part function.
-
Encode the fix as reusable modules.
- Wrap hole strategies in named helpers such as
polyhole(), teardrop_hole(), truncated_teardrop_hole(), bridged_counterbore(), and support_pillar().
- Put printer and process constants near the parameter block.
- Keep clearances and support gaps explicit.
-
Validate before closing.
- Preview the intended print orientation.
- Confirm no new unsupported faces were introduced by the fix.
- Recheck mating features, thread engagement, and joinery clearances.
- Prefer a Manifold-backed final render for dense boolean work.
Decision Table
| Situation | Preferred strategy | Notes |
|---|
| Downward-facing cosmetic edge | 45 degree chamfer | Reserve fillets for upward or side-facing edges unless the print orientation changes. |
| Small horizontal clearance hole | Polyhole | Counteracts arc shrinkage with minimal geometry change. |
| Precision horizontal bore | Teardrop | Removes the unsupported apex entirely. |
| Horizontal bore with limited headroom | Truncated teardrop | Trades a tiny bridge for better Z-space efficiency. |
| Vertical counterbore or buried fastener | Sacrificial bridge or hanging hole | Build a printable floor before smaller circular walls continue. |
| Support-heavy monolith | Split with dovetail or snap-fit joinery | Prefer flat-printing halves over inaccessible internal support. |
| Unavoidable isolated island | Scripted single-wall support pillar | Keep contact tiny and deliberate; do not default to slicer support. |
Common Mistakes
- preserving a beautiful downward fillet that forces massive support
- using round horizontal bores where teardrops or polyholes are needed
- assuming threaded holes will print to nominal size without slop
- keeping a complex part monolithic when a split with joinery is simpler
- using
minkowski() for every edge treatment instead of faster mask or intersection approaches
- relying on slicer supports for inaccessible internal cavities
Completion Criteria
- intended orientation is stated
- support policy is stated
- each risky feature has a named strategy
- clearances and slop are parameterized
- remaining supports, if any, are deliberate and justified
- final report states what was changed and why
Resources