From 97a3edf0398b4e051a6359e9d62f11ba3a39b14c Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Thu, 25 Dec 2025 22:57:14 -0500 Subject: [PATCH] add strict closing rule for fdm, laser slicing --- src/geo/slicer.js | 5 +++++ src/kiri/mode/fdm/slice.js | 1 + src/kiri/mode/laser/driver.js | 1 + 3 files changed, 7 insertions(+) diff --git a/src/geo/slicer.js b/src/geo/slicer.js index 3ce82017..88e575c5 100644 --- a/src/geo/slicer.js +++ b/src/geo/slicer.js @@ -565,6 +565,11 @@ export function sliceConnect(input, z, opt = {}) { // emit a polygon if it can be cleaned and still have 2 or more points function emit(poly) { + let gap = poly.first().distTo2D(poly.last()); + if (opt.strict && gap > bridgeMax) { + if (debug) console.log('drop', gap, poly); + return; + } emitted += poly.length; if (!opt.dirty) poly = poly.clean(); if (poly.length > 2 || true) output.push(poly); diff --git a/src/kiri/mode/fdm/slice.js b/src/kiri/mode/fdm/slice.js index b6505093..2a99d529 100644 --- a/src/kiri/mode/fdm/slice.js +++ b/src/kiri/mode/fdm/slice.js @@ -222,6 +222,7 @@ export function fdm_slice(settings, widget, onupdate, ondone) { } slice(points, { + strict: true, debug: process.xray, xray: process.xray, zMin: bounds.min.z, diff --git a/src/kiri/mode/laser/driver.js b/src/kiri/mode/laser/driver.js index c097bfa4..daedf895 100644 --- a/src/kiri/mode/laser/driver.js +++ b/src/kiri/mode/laser/driver.js @@ -191,6 +191,7 @@ function laser_slice(settings, widget, onupdate, ondone) { let indices = []; slicer.slice(points, { + strict: true, zMin: bounds.min.z, zMax: bounds.max.z, zGen(zopt) {