Reviewer fuzz (210 random boxes, Light/Custom, layers 0.08-0.4, gaps, grips, margins): every slice now equals the full 0.1 mm grid's at 13 heights, no folds, no open edges; 30 cases folded before. Main's band scan was itself coarse in a few places (tips, thin Custom pads), so a few golden slices move to the full grid's.
Fine blocks keep the full grid's nodes and diagonals, and the rim keeps every node, so the pad's sections at ten heights match main segment for segment (cube X20-45, Light/Custom, 0.12-0.28 layers; man bust, buster, Isaac). A coarse block beside a fine one fans from its centre through the shared nodes, so there are no T-junctions. A coarser grid was the other option and was dropped: at a 0.3 mm cell the gap closes to 0.080 mm at a cube's corners. Goldens re-recorded: only the pad's triangles changed.
The reach is measured from the wall's centre, so a tip wider than 0.4's 0.6
swallowed the 0.5 reach and a curved underside lost its tines; the extra
half-tip is added to it (0.15 at 0.6, 0.3 at 0.8, 1.2 at 2.0; 0.4 and finer
unchanged). A wall over 6 mm -- half the 12 mm row spacing -- fused rows into
one block (3.0 x 8 lines: 6.7 kg on a 252 g plate), so walls and wedges cap
there, the page offers only the Wall lines that fit the nozzle, and the
nozzle stops at 2.0 (2.5's two-line wall is already 6.25). tests: every
offered nozzle x lines stays under half the row spacing; the sphere keeps 70%
of its 0.4 tines at 2.0 with nothing inside the part.
Co-authored-by: Per Hjort <35040883+HjortCreations@users.noreply.github.com>
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>
The reach probe sits at the tine's mid-height, half a layer under the
underside, so it only finds solid when reach * tan(slope) > layer / 2: the
cutoff was ~17deg at 0.3 mm layers, ~22 at 0.4, ~31 at 0.6. The M4 front
upright had 223 tines at 0.2, 117 at 0.4, 53 at 0.6; buster upright none at
0.4. The reach now keeps the 0.2 layer's ratio (tineReach * max(1, layer/0.2)):
228 / 220 and 15 / 10. 0.2 and thinner are unchanged (sweep vs main: no mesh
changed). Found checking #210's large nozzles: not the nozzle, the layer.
tests: a tilted block at 20 and 30deg gets as many tines at 0.3/0.4/0.6 as at 0.2.
From Per Hjort's nozzle profiles (#210), ported onto web/nozzle.js. Lines
multiply the structural widths (wall, wedge; a brace rib is never thinner than
the wall). The feet move out with the wall's face, and a neck into the tip that
would lean flatter than 55deg gets the height to stand at 55. 2 lines is the
tuned wall: sweep vs main unchanged (no mesh changed). A thicker wall fits fewer
places, so a tight part can lose a wall or two at 8 lines; the readout reports
them. A setting of the part (undoable, saved with a session), sent to the Worker
in opts.tunables.wallLines. The plugins build 2 lines.
Co-authored-by: Per Hjort <35040883+HjortCreations@users.noreply.github.com>
A saved session leaves the nozzle alone, like the build volume. SWAY.thPerMm
grows with the rib widths so a brace reaches thMax at the same height. FIN-SPEC
notes what stays unscaled (tine reach) and the 0.2 comb losing a tine or two.
Tines and the contact tip scale by nozzle/0.4 both ways; the wall, wedge and
sway brace rib only grow (a finer nozzle doesn't stiffen a free-standing wall).
Heights stay on the layer height. 0.4 is unchanged (sweep vs main: identical).
The Worker gets it in opts.tunables.nozzle; the plugins stay at 0.4 for now.
* engine: interface crest (GitHub #21) -- with PROP.iface on, every wall (prop, part-attached, squat, Draw/fill, wedge blade) splits 0.6 mm under its top into body + crest, the crest and the tine comb tagged (v[3] = 1) so triRanges/removal/Worker are untouched; the 3MF writer's separate form writes the tagged triangles as a third object, '<name> interface', in register; off (the default) is byte-identical
* site: Interface material switch (Walls) -- the crest and tines show purple and export as their own 3MF object, for a toolchanger's second filament (PETG under PLA); reaches the Worker via tunables and Draw on the page; re-import still pre-selects the part; German strings; plugins leave it out (one body to the host)
* engine: interface crest review fixes -- sway brace tines are interface too (Auto and Draw); the crest is one trapezoid on the taper line, so no section has a collinear corner (zero-area cap triangles); Interface material is in the undo history; FIN-SPEC lists what is not split yet (sway rib edge, a part-standing wall's foot, a wedge whose contact steps straight up) (review)
* site: the interface is a part of the supports object, not its own -- an object starting in mid-air is refused by Orca ('empty first layer'); as the supports' second component it stands on the plate with them and takes its own filament per part
* engine: interface crest modes -- 'flat' (the default when on) crests a wall station only under an underside within 10deg of level, a full-width (th) 0.6 mm block with no tip taper, tines left in the body; 'all' crests every wall top and the tines as before. A 35deg cube's print with the crest everywhere couldn't lay PETG on the narrow PLA tip through every layer; PETG interfaces are used on flat undersides. Off stays byte-identical (sweep vs main)
* site: Interface material is a dropdown (Off / Flat contacts / Everywhere); the readout says when it is on and no wall got a crest; German strings
* engine: interface modes review fixes -- cutouts under a flat crest keep their old ceiling (holeTop: the taper start, not the crest's cut), so the split loses no plastic (lbracket Y8 lattice lost 4.6%); the crest's part reference is set only while the crest is on and dropped after each build; the readout's 'no flat contacts' note counts walls only (not the pad) and only in Flat contacts; tests: flat mode with lattice/diamond cutouts, mixed flat/tilted walls, squat walls (review)
* engine: the interface crest is one layer of the print (PROP.ifaceLayers 1, the Layer height field, as the tines), not a fixed 0.6 mm -- one tool change each way per flat contact instead of three; tooltip and FIN-SPEC say so; tests: the crest is one 0.2 / 0.3 mm layer
---------
Co-authored-by: matthewtrahan <mathyout@pm.me>