Designing for 3D printing
A printable part follows a small handful of rules: walls thick enough to survive, tolerances generous enough to fit, overhangs gentle enough not to droop, orientation chosen to avoid supports, and the right edge geometry for the right places. This guide collects the numbers that work in practice, plus the printability checks the PrintPal AI CAD agent runs after every render.
Wall thickness
| Wall scenario | FDM 0.4 mm nozzle | SLA / DLP |
|---|---|---|
| Absolute minimum (cosmetic, non-load-bearing) | 0.8 mm (2 perimeters) | 0.5 mm |
| Recommended default | 1.6 mm (4 perimeters) | 1.0 mm |
| Load-bearing / structural | 2.4 – 3.2 mm | 1.5 – 2.0 mm |
| Vase-mode single wall | 0.4 – 0.6 mm (1 line, no top/bottom) | N/A |
A 0.4 mm nozzle prints walls cleanest at integer multiples of 0.4 (0.8, 1.2, 1.6, 2.0). Sub-multiple thicknesses force the slicer to gap-fill, which is weaker and uglier.
Tolerances & clearances
For FDM, real-world parts are typically 0.1–0.3 mm bigger than nominal due to extrusion width and over-expansion. Plan for it:
| Fit type | Clearance (mm) | Example |
|---|---|---|
| Press / interference | −0.05 to 0 | Heat-set inserts, bearing races |
| Push-fit | 0.05 – 0.10 | Pins, dowels, snap-fit posts |
| Slip-fit (default) | 0.20 | M3 hole = Ø3.2 (M3 + 0.2) |
| Loose / free-rotating | 0.30 – 0.50 | Hinges, threaded inserts you'll re-tap |
| Cable / wire pass | 0.50 – 1.00 | USB-C cutout, panel grommet |
Overhangs & bridges
| Overhang angle (from vertical) | FDM behaviour |
|---|---|
| 0 – 45° | Prints clean. No supports needed. |
| 45 – 60° | Visible droop; OK for non-cosmetic. |
| 60 – 70° | Heavy droop; supports recommended for cosmetic faces. |
| > 70° | Needs supports. The slicer will warn you. |
| Horizontal bridge | Up to ~30 mm clean on most printers; longer needs supports. |
The fix for an overhang is almost always one of:
- Add a chamfer on the underside (a 45° bevel printed bottom-up has no overhang).
- Reorient the part so the overhang faces up.
- Add a print-in-place support rib that you snip off after.
Chamfers vs fillets
OpenSCAD doesn't have a one-click chamfer or fillet — you build them with primitives. Which to pick:
| Use a chamfer (45°) | Use a fillet (radius) |
|---|---|
| Print-bottom edges (avoid elephant's foot) | Stress concentrations (inside corners) |
| Overhang lead-ins | Hand-friendly external corners |
| Lead-ins for screws / press-fit pins | Aesthetic / "soft" look |
Cheap to model with cylinder($fn=4) subtraction | Cheap to model with minkowski or 2D offset |
Quick recipes:
// 45° chamfer along the bottom edge of a box
difference() {
cube([40, 20, 10]);
translate([0, 0, 0])
rotate([45, 0, 0])
translate([-1, -5, -5])
cube([42, 5, 5]);
}
// Fillet a 2D corner with offset() before extruding
linear_extrude(height=5)
offset(r=2) offset(delta=-2)
square([40, 20]); // rounded rectangle
Orientation
Most printability problems disappear with the right orientation. Heuristics:
- The largest flat face goes on the build plate.
- Threaded holes for M3/M4 inserts should face up (clean cylindrical bore) or be reamed after printing.
- Anisotropy: FDM parts are ~50% weaker in the Z direction. Orient so loads pull along the layers, not across them.
- Cosmetic faces should be top or sides — never the bottom (elephant's foot, brim marks).
Small-feature limits
| Feature | FDM minimum | Notes |
|---|---|---|
| Embossed text | 0.4 mm depth, 4 mm tall | Sans-serif at this scale. |
| Engraved text | 0.6 mm deep, 5 mm tall | Bold; let the slicer print a hole-floor layer. |
| Pins | Ø 1.5 mm × ≤ 10 mm tall | Below this, they snap during removal. |
| Holes | Ø 1.5 mm (will need re-drilling) | Tip: add 0.2 mm extra for slip fit and skip the reamer. |
| Snap-fit lip | 0.4 mm interference, 1.5 mm tall | Add a 0.4 mm lead-in chamfer. |
Printability checks the agent runs
After every render, the PrintPal AI CAD agent runs:
- Manifold check — every edge shared by exactly two faces; no zero-area triangles.
- Watertight check — closed shell, no holes in the mesh that aren't intentional cavities.
- Min wall thickness — flags anything below 1.6 mm by default (configurable per session).
- Bbox vs brief — actual bounding box compared against the envelope it committed to in the design brief.
- Floating geometry — surfaces the slicer would treat as unsupported floors.
Failures appear as warn-colored tool cards in chat. You can address them with a one-line prompt ("increase wall to 2 mm") or let the agent self-correct on the next turn.
Material-specific rules of thumb
| Material | Strength | Tolerance | Best for |
|---|---|---|---|
| PLA | Stiff, brittle | ±0.15 mm | Prototypes, cosmetic, fixtures. |
| PETG | Tough, slight flex | ±0.20 mm | Functional parts, outdoor, mechanical. |
| ABS / ASA | Tough, heat-resistant | ±0.25 mm (warp) | Enclosures, automotive. |
| TPU (95A) | Flexible | ±0.30 mm | Gaskets, grips, snap-fits. |
| Nylon | Tough, low friction | ±0.20 mm | Gears, bushings, living hinges. |
| SLA resin (standard) | Brittle, very precise | ±0.05 mm | Miniatures, jewelry, precise mechanical. |
Related tools
Print cost calculator
Estimate filament cost, electricity, and machine time for a part.
Print time estimator
Quick volume-based print-time estimate without slicing.
Layer height calculator
Pick the right layer height for your nozzle and target finish.
Shrinkage calculator
Compensate for material-specific shrinkage on tight-fit parts.
The agent enforces these rules automatically
Tell the AI CAD agent your target material and printer, and every render comes back with the right wall thickness, hole clearances, and chamfers built in.