diff --git a/js/kiri-driver-fdm.js b/js/kiri-driver-fdm.js index 86236b92..dc77f072 100644 --- a/js/kiri-driver-fdm.js +++ b/js/kiri-driver-fdm.js @@ -597,7 +597,7 @@ var gs_kiri_fdm = exports; } // update time and distance (should calc in moveTo() instead) - time += (dist / speedMMM) * 60; + time += (dist / speedMMM) * 60 * 1.5; distance += dist; progress = Math.round((distance / totaldistance) * 100); diff --git a/js/kiri-print.js b/js/kiri-print.js index 425ae4d5..7f8acc99 100644 --- a/js/kiri-print.js +++ b/js/kiri-print.js @@ -501,6 +501,19 @@ var gs_kiri_print = exports; if (preout.length) preout.last().retract = true; } + function intersectsTop(p1, p2) { + var int = false; + slice.tops.forEach(function(top) { + if (!int) top.poly.forEachSegment(function(s1, s2) { + if (UTIL.intersect(p1,p2,s1,s2,BASE.key.SEGINT)) { + int = true; + return int; + } + }); + }); + return int; + } + function outputTraces(poly, bounds) { if (!poly) return; if (Array.isArray(poly)) { @@ -534,7 +547,10 @@ var gs_kiri_print = exports; var poly = el.poly; if (poly.last() === point) poly.reverse(); poly.forEachPoint(function(p, i) { - if (i === 0 && lp && lp.distTo2D(p) > retractDistSparse) retract(); + // retract if dist trigger and crosses a slice top polygon + if (i === 0 && lp && lp.distTo2D(p) > retractDistSparse && intersectsTop(lp,p)) { + retract(); + } addOutput(preout, p, i === 0 ? 0 : sparseMult, printSpeed); lp = p; }); @@ -581,7 +597,10 @@ var gs_kiri_print = exports; addOutput(preout, p2, fillMult * (find.d / thinWall), printSpeed); lastout = 1; } else { - if (dist > retractDist) retract(); + // retract if dist trigger and crosses a slice top polygon + if (dist > retractDist && intersectsTop(startPoint, p1)) { + retract(); + } // bridge ends of fill when they're close together if (dist < thinWall) { diff --git a/js/kiri.js b/js/kiri.js index 85ff72b4..12e4d8ad 100644 --- a/js/kiri.js +++ b/js/kiri.js @@ -263,9 +263,9 @@ self.kiri.license = exports.LICENSE; sliceSupportEnable: false, sliceSupportDensity: 0.25, sliceSupportOffset: 1.0, - sliceSupportSize: 4, + sliceSupportSize: 10, sliceSupportArea: 1, - sliceSupportExtra: 1, + sliceSupportExtra: 0, sliceSupportSpan: 6, sliceSolidMinArea: 0.1, @@ -281,16 +281,16 @@ self.kiri.license = exports.LICENSE; outputTemp: 220, outputFanMax: 255, outputBedTemp: 0, - outputFeedrate: 100, + outputFeedrate: 80, outputFinishrate: 60, - outputSeekrate: 150, + outputSeekrate: 100, outputShellMult: 1.1, outputFillMult: 1.2, outputSparseMult: 1.3, outputRetractOver: 5.0, outputRetractDist: 0.5, - outputRetractSpeed: 20, - outputRetractDwell: 50, + outputRetractSpeed: 40, + outputRetractDwell: 20, outputBrimCount: 2, outputBrimOffset: 3, outputShortPoly: 15.0, diff --git a/js/license.js b/js/license.js index 9f5f8776..f29e33d7 100644 --- a/js/license.js +++ b/js/license.js @@ -1,7 +1,7 @@ var exports = { COPYRIGHT:"Copyright (C) 2014-2017 Stewart Allen - All Rights Reserved", LICENSE:"Unauthorized copying, modification and re-distribution are strictly prohibited without prior written consent.", - VERSION:"1.0.87" + VERSION:"1.0.88" }; if (!module) var module = {}; module.exports = exports;