mirror of
https://github.com/gittrahan/support-fins.git
synced 2026-10-19 02:10:52 -05:00
tine knobs cleanup: comments say 'at' the reach, the bead width is likely, TINE_REACH in the real-parts test, Prusa port notes the old name (review)
This commit is contained in:
1 parent
e05199e409
commit
ec7475a9ea
5 files changed
+10
-10
No files matched your search
@@ -11,7 +11,7 @@ flat directory with a single menu entry:
|
||||
runs from a low tip on the plate up to the top of a straight back edge, **0.2 mm under the
|
||||
part**, on a thin foot with a round back end. A **comb of tines** runs along the slope: one-layer
|
||||
horizontal nubs, one bead (0.5 mm) wide, each top on the print preset's layer grid, that
|
||||
reach across the gap and **0.5 mm into the part** at mid-layer (`PROP.tineBite`), so each prints as one
|
||||
reach across the gap and **0.5 mm into the part** at mid-layer (the site's old `PROP.tineBite`; the site's tines now stop at the surface), so each prints as one
|
||||
strand that fuses in and snaps clean (`docs/FIN-SPEC.md`). The top of the slope ends in a
|
||||
short flat (1.2 mm, a little more when steep), never a point. Params: **Slope Angle** (20–70°, default 45), **Fin Height**,
|
||||
a **Gripping Tines** toggle, and **Tine Spacing** (default 6 mm, the sway braces' printed
|
||||
|
||||
@@ -53,7 +53,7 @@ local BASE_H = 0.6 -- foot thickness, snapped to whole layers (PROP.bas
|
||||
local BASE_W = 9.0 -- foot width across the fin [mm]
|
||||
local BASE_PAD = 3.0 -- foot runs this far past the back edge [mm]
|
||||
local GAP = 0.2 -- slope to part clearance, square to the slope (PROP.gap) [mm]
|
||||
local BITE = 0.5 -- how far a tine reaches horizontally into the part (PROP.tineBite) [mm]
|
||||
local BITE = 0.5 -- how far a tine reaches horizontally into the part (the site's old PROP.tineBite; its tines now stop at the surface, local issue 028) [mm]
|
||||
local TINE_GRIP = 0.4 -- how far a tine sinks back into the fin [mm]
|
||||
local TINE_W = 0.5 -- tine width: one nozzle bead (PROP.tineW) [mm]
|
||||
local MIN_STEP = 1.0 -- Tine Spacing never tighter than this [mm]
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
import { loadModel, analyze, fins, prop, insidePart, nearestFaceInwardH, rotX, rotY, assert } from './_util.js';
|
||||
|
||||
const TINE_BITE = prop.PROP.tineReach; // how far the nub reaches in -- read from source, don't drift
|
||||
const TINE_REACH = prop.PROP.tineReach; // how far a tine looks for the part -- read from source, don't drift
|
||||
|
||||
const CASES = [
|
||||
['plate', rotX(45)], ['plate', rotY(40)], ['plate', rotY(-40)],
|
||||
@@ -36,7 +36,7 @@ Deno.test('tines on real parts: every tine bites INTO the nearest face, none lie
|
||||
const caps = globalThis.__TINECAP;
|
||||
for (const c of caps) {
|
||||
total++;
|
||||
const bx = c.x + c.biteX * TINE_BITE, by = c.y + c.biteY * TINE_BITE;
|
||||
const bx = c.x + c.biteX * TINE_REACH, by = c.y + c.biteY * TINE_REACH;
|
||||
if (!insidePart(topo, rot, res.offset, bx, by, c.z)) { noGrip++; airCases.add(name); }
|
||||
const inw = nearestFaceInwardH(topo, rot, res.offset, [c.x, c.y, c.z]);
|
||||
if (inw) {
|
||||
|
||||
+3
-3
@@ -189,14 +189,14 @@ export const PROP = {
|
||||
// built the tine `th` (1.0mm) wide, ~2x spec, a fat divot Matthew caught by eye.
|
||||
tineW: 0.5,
|
||||
// (A 'point' tip and a tineWidth knob were tried on the tine coupon, 2026-10-03:
|
||||
// no visible difference -- a 0.3-0.5 wide tine or a point all print as about one
|
||||
// bead -- so both knobs are gone. prototype/calibration/README.md tine/ v1.)
|
||||
// no visible difference -- a 0.3-0.5 wide tine or a point likely all print as about
|
||||
// one bead -- so both knobs are gone. prototype/calibration/README.md tine/ v1.)
|
||||
// Tines per wall, EXACT, overriding spacing and the minGripTines floor: the comb is
|
||||
// spaced wall-length / n. 0 = off (the default; spacing rules decide). Calibration
|
||||
// knob (tunables.tinesPerWall), the tine coupon's how-few-still-hold row.
|
||||
tinesPerWall: 0,
|
||||
tineReach: 0.5, // how far out a tine looks for the part, horizontally: a tine is
|
||||
// placed only if solid lies within this reach (the slope gate is
|
||||
// placed only if solid lies at this reach (the slope gate is
|
||||
// gap/reach), and kissEnds searches up to 2x it for the surface the
|
||||
// tine's end stops on (#168: no tine runs into the part). Was
|
||||
// `tineBite`, when tines ran this far INTO the part. Shrinking it
|
||||
|
||||
+3
-3
@@ -144,14 +144,14 @@ export function tineStepFor(density) {
|
||||
* through those four corners, so on a sloped or curved underside the end leans with
|
||||
* the surface and no part of the tine sits inside the part.
|
||||
*
|
||||
* A tine used to run the full reach (0.5, then `tineBite`) on into the part. A slicer unions that
|
||||
* A tine used to run full `tineReach` (then called `tineBite`) on into the part. A slicer unions that
|
||||
* buried stretch away (the site's 3MF and STL put part and supports in one object),
|
||||
* so the print is the same; the tine just stops poking through, and is ready for an
|
||||
* export that keeps the two apart (local issue 027). Placement is unchanged: the
|
||||
* tine still has to reach solid within `tineReach`.
|
||||
*
|
||||
* Per corner: no solid within reach on that line and height -> the full bite (the
|
||||
* old shape); solid already back over the wall end -> TRIM_MIN past it.
|
||||
* Per corner: no solid within reach on that line and height -> the full tineReach
|
||||
* (the old shape); solid already back over the wall end -> TRIM_MIN past it.
|
||||
* Returns { bot: [left, right], top: [...] }.
|
||||
*/
|
||||
const TRIM_KISS = 0.01, TRIM_MIN = 0.05, TRIM_Z = 0.01;
|
||||
|
||||
Reference in new issue
Block a user