From 59950369e03e57f08ec3983a3ae1647d883ebde8 Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Tue, 5 Jul 2022 19:19:21 -0400 Subject: [PATCH] fix thin output start/end point tracking (which broke retraction) and add slice indices in xray mode --- src/kiri-mode/fdm/prepare.js | 6 +++++- src/kiri-mode/fdm/slice.js | 4 ++-- src/kiri/api.js | 1 + 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/kiri-mode/fdm/prepare.js b/src/kiri-mode/fdm/prepare.js index de81eaeb..f0d07002 100644 --- a/src/kiri-mode/fdm/prepare.js +++ b/src/kiri-mode/fdm/prepare.js @@ -1120,6 +1120,9 @@ function slicePrintPath(print, slice, startPoint, offset, output, opt = {}) { } let first = points[0]; let last = first; + if (startPoint && startPoint.distTo2D(first) > thinWall && intersectsTop(startPoint, first)) { + retract(); + } print.addOutput(preout, first, 0, moveSpeed, extruder); for (let p of order) { let dist = last ? last.distTo2D(p) : 0; @@ -1128,11 +1131,12 @@ function slicePrintPath(print, slice, startPoint, offset, output, opt = {}) { print.addOutput(preout, p, 0, moveSpeed, extruder); } print.addOutput(preout, p, 1, fillSpeed, extruder); - last = p; + startPoint = last = p; } // close a circle if (last && last.distTo2D(first) <= thinWall) { print.addOutput(preout, first, 1, fillSpeed, extruder); + startPoint = first; } } diff --git a/src/kiri-mode/fdm/slice.js b/src/kiri-mode/fdm/slice.js index e509bdbb..aeb03301 100644 --- a/src/kiri-mode/fdm/slice.js +++ b/src/kiri-mode/fdm/slice.js @@ -283,7 +283,6 @@ FDM.slice = function(settings, widget, onupdate, ondone) { for (let i=0; i slices.length - process.sliceTopLayers - 1; + let isTop = process.sliceTopLayers && slice.index > slices.length - process.sliceTopLayers - 1; let isDense = range.sliceFillSparse > 0.995; let isSolid = (isBottom || ((isTop || isDense) && !vaseMode)) && !isSynth; let solidWidth = isSolid ? range.sliceFillWidth || 1 : 0; diff --git a/src/kiri/api.js b/src/kiri/api.js index fbb4881d..1d105a1f 100644 --- a/src/kiri/api.js +++ b/src/kiri/api.js @@ -50,6 +50,7 @@ const devel = { let base = (proc.firstSliceHeight || size); layers = Array.isArray(layers) ? layers : [ layers ]; proc.xray = layers.map(l => raw ? l : base + l * size - size / 2); + proc.xrayi = layers.slice(); api.function.slice(); } };