mirror of
https://github.com/gittrahan/support-fins.git
synced 2026-10-19 02:10:52 -05:00
nozzle: large-format sizes 1.0-2.0 mm, and a nozzle guide -- the same scaling rule (a 2.0 nozzle builds a 5 mm wall); layer height stays capped at 0.6
From Per Hjort's #210, which took nozzles up to 3 mm (2.0 here, see the review fix). Layer height stays at 0.6: the gap, flanges and pad are fixed heights tuned for thin layers. The guide (docs/NOZZLE.md, adapted from #210's) lists the widths per size, the limits (thicker walls fit fewer places) and what to check in the slicer. 0.4 is unchanged (sweep vs main: no mesh changed). Co-authored-by: Per Hjort <35040883+HjortCreations@users.noreply.github.com>
This commit is contained in:
1 parent
e15f31548e
commit
e44cb1d846
6 files changed
+76
-2
No files matched your search
@@ -49,6 +49,13 @@ the way up (auto, or click an upright side in Draw), STL, 3MF and STEP import, S
|
||||
|
||||
Still open: scale-aware fin profiles, and the bed pad on tilted exports.
|
||||
|
||||
### Nozzle size and wall lines
|
||||
|
||||
Set **Nozzle** (0.2–3.0 mm) to your printer's nozzle and the support widths follow it;
|
||||
**Wall lines** (2 / 4 / 6 / 8) makes walls, wedges and sway braces thicker for tall parts.
|
||||
The contact tip and tines stay one line wide either way. See
|
||||
[the nozzle guide](docs/NOZZLE.md) for the sizes and what to check in the slicer.
|
||||
|
||||
### Sway braces for tall parts
|
||||
|
||||
**Full brace depth** is an optional checkbox under Sway. It starts off, keeping
|
||||
|
||||
+4
-1
@@ -314,7 +314,7 @@ nor the Draw worker/CPU changes.
|
||||
## Nozzle size — `web/nozzle.js`
|
||||
|
||||
Every width above is for a **0.4 mm nozzle**. The site's Nozzle field (0.2 / 0.25 /
|
||||
0.4 / 0.6 / 0.8, default 0.4) scales them by `k = nozzle / 0.4`:
|
||||
0.4 / 0.6 / 0.8, and 1.0-3.0 for large-format printers after #210; default 0.4) scales them by `k = nozzle / 0.4`:
|
||||
|
||||
| width | 0.4 | rule | 0.6 | 0.8 | 0.2 |
|
||||
|---|---|---|---|---|---|
|
||||
@@ -328,6 +328,9 @@ One-line features (tines, tip) follow the nozzle both ways. The structural width
|
||||
only grow: a finer nozzle doesn't make a free-standing wall stiffer. Heights (tine
|
||||
height, gaps, pad) follow the layer height, not the nozzle. 0.4 is the tuned
|
||||
geometry, unchanged. The other sizes are this scaling rule, not printed coupons.
|
||||
**Large nozzles** (1.0–3.0) follow the same rule: a 2.0 nozzle builds a 5 mm wall and
|
||||
a 3 mm tip. Layer height stays capped at 0.6: the gap, the flanges and the pad are fixed
|
||||
heights tuned for thin layers, and a 0.2 mm gap disappears into a 1 mm layer.
|
||||
The plugins build at 0.4 for now. Tine reach (`PROP.tineReach`
|
||||
0.5) is NOT scaled by the nozzle: at 0.8 the contact tip's half-width (0.6) passes it, so how far a
|
||||
0.8 tine stands proud of the tip is unprinted. The comb's scan step follows the tine
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
# Nozzle size and wall lines
|
||||
|
||||
Adapted from Per Hjort's nozzle-profile guide (#210).
|
||||
|
||||
Set **Setup → Nozzle** to your printer's nozzle diameter, and pick **Walls → Wall lines**
|
||||
for how thick the supports should be. The Walls summary shows the wall thickness.
|
||||
|
||||
## What changes
|
||||
|
||||
Every support width was tuned on a 0.4 mm nozzle: a 1.0 mm wall (two 0.5 mm lines), a
|
||||
0.6 mm contact tip, 0.5 mm tines. A different nozzle scales them by `nozzle / 0.4`:
|
||||
|
||||
| | 0.4 | 0.6 | 0.8 | 1.0 | 2.0 | 3.0 |
|
||||
|---|---|---|---|---|---|---|
|
||||
| wall, 2 lines | 1.0 | 1.5 | 2.0 | 2.5 | 5.0 | 7.5 |
|
||||
| contact tip | 0.6 | 0.9 | 1.2 | 1.5 | 3.0 | 4.5 |
|
||||
| tine | 0.5 | 0.75 | 1.0 | 1.25 | 2.5 | 3.75 |
|
||||
|
||||
- A **smaller** nozzle (0.2, 0.25) narrows the tip and tines, so they leave a smaller mark.
|
||||
Walls, wedges and braces never get thinner than the 0.4 numbers.
|
||||
- **Wall lines** multiplies the walls, wedges and braces: 4 lines is twice the wall, 8 is
|
||||
four times. The tip and tines stay one line, so the supports break off the same way.
|
||||
- Heights don't follow the nozzle. Tines are one layer tall, set by **Layer height**.
|
||||
|
||||
## Limits
|
||||
|
||||
- **Layer height goes up to 0.6 mm.** The breakaway gap, the feet and the bed pad are
|
||||
tuned for thin layers; thicker layers need those to scale first.
|
||||
- **Thicker walls fit fewer places.** A big nozzle or 8 lines can leave a tight overhang
|
||||
without a wall; the readout lists what's left unsupported.
|
||||
- The plugins build 0.4 / 2 lines for now (the PrusaSlicer and Onshape plugins take a nozzle).
|
||||
|
||||
## Check in the slicer
|
||||
|
||||
Sizes other than 0.4 / 2 lines follow these rules but haven't been print-tested. After slicing:
|
||||
|
||||
- the walls slice as solid perimeters with no gaps down the middle
|
||||
- each tine shows as one line on one layer, touching the part
|
||||
- there's a visible gap layer between each wall top and the part
|
||||
- first layers: feet and pad stick and stay separate from the part
|
||||
@@ -129,3 +129,19 @@ Deno.test('wall lines: a squat brim stays under half the row spacing', () => {
|
||||
} finally { applyNozzle(0.4); applyWallLines(2); }
|
||||
});
|
||||
|
||||
|
||||
// Large-format nozzles (after #210): the same rule, up to 3 mm.
|
||||
Deno.test('nozzle: large-format sizes scale like the rest, up to 3 mm', () => {
|
||||
const base = knobs();
|
||||
try {
|
||||
applyNozzle(2.0);
|
||||
assertClose(prop.PROP.th, base.th * 5, 1e-9, 'wall at 2.0');
|
||||
assertClose(prop.PROP.tineW, base.tineW * 5, 1e-9, 'tine at 2.0');
|
||||
applyNozzle(3.0);
|
||||
assertClose(prop.PROP.tip, base.tip * 7.5, 1e-9, 'tip at 3.0');
|
||||
applyNozzle(3.5);
|
||||
assertClose(prop.PROP.tip, base.tip * 7.5, 1e-9, 'a 3.5 nozzle was taken');
|
||||
const v4 = volumeAt(0.4), v20 = volumeAt(2.0);
|
||||
assert(v20 > v4 * 2, `2.0 nozzle built ${v20.toFixed(0)} mm3 vs 0.4's ${v4.toFixed(0)}`);
|
||||
} finally { applyNozzle(0.4); }
|
||||
});
|
||||
@@ -231,6 +231,14 @@
|
||||
<option value="0.4" selected>0.4</option>
|
||||
<option value="0.6">0.6</option>
|
||||
<option value="0.8">0.8</option>
|
||||
<option value="1.0">1.0</option>
|
||||
<option value="1.2">1.2</option>
|
||||
<option value="1.4">1.4</option>
|
||||
<option value="1.6">1.6</option>
|
||||
<option value="1.8">1.8</option>
|
||||
<option value="2.0">2.0</option>
|
||||
<option value="2.5">2.5</option>
|
||||
<option value="3.0">3.0</option>
|
||||
</select>
|
||||
</label>
|
||||
<label class="fld">
|
||||
|
||||
+1
-1
@@ -39,7 +39,7 @@ export let wallLines = 2;
|
||||
|
||||
/** Scale the support widths for this nozzle diameter (mm). Junk is ignored. */
|
||||
export function applyNozzle(d) {
|
||||
if (!Number.isFinite(d) || d < 0.1 || d > 1.2) return;
|
||||
if (!Number.isFinite(d) || d < 0.1 || d > 3) return;
|
||||
nozzle = d;
|
||||
rescale();
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user