From 7550e8dc81a73301ca7acae100e2e3c0b04f7365 Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Fri, 15 Dec 2017 12:16:41 -0500 Subject: [PATCH] add experimental acceleration compensation --- js/kiri-print.js | 21 +++++++++++++-------- js/kiri.js | 3 +++ js/license.js | 2 +- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/js/kiri-print.js b/js/kiri-print.js index 8caf7738..9f6849f0 100644 --- a/js/kiri-print.js +++ b/js/kiri-print.js @@ -409,7 +409,9 @@ var gs_kiri_print = exports; var options = options || {}, process = this.settings.process, + accelComp = process.outputAccelComp, shortDist = process.outputShortDistance, + shortDist2 = process.outputShortDistance * 2, shortFact = process.outputShortFactor, shellMult = options.extrude || process.outputShellMult, printSpeed = options.rate || process.outputFeedrate, @@ -430,13 +432,16 @@ var gs_kiri_print = exports; if (options.shorten && dist > options.shorten && count === points.length) { point = last.offsetPointFrom(point, options.shorten); } - // if (options.accel && dist >= options.accel) { - // var p2 = last.offsetPointTo(point, shortDist), - // p3 = last.offsetPointFrom(point, shortDist); - // segmentOutput(output, last, p2, shortSpeed, printSpeed, 5, shellMult); - // addOutput(output, p3, shellMult, printSpeed); - // segmentOutput(output, p3, point, printSpeed, shortSpeed, 5, shellMult); - // } else + if (accelComp && options.accel && dist >= shortDist) { + var sl = dist > shortDist2 ? shortDist : dist / 2, + ml = dist > shortDist2 ? dist - sl - sl : 0, + ps = dist > shortDist2 ? printSpeed : (sl / shortDist) * printSpeed, + p2 = last.offsetPointTo(point, sl), + p3 = last.offsetPointFrom(point, sl); + segmentOutput(output, last, p2, shortSpeed, ps, 5, shellMult); + if (ml) addOutput(output, p3, shellMult, printSpeed); + segmentOutput(output, p3, point, ps, shortSpeed, 5, shellMult); + } else if (shortDist && dist < shortDist) { var shortRate = shortSpeed + (printSpeed - shortSpeed) * (dist / shortDist); addOutput(output, point, shellMult, shortRate); @@ -522,7 +527,7 @@ var gs_kiri_print = exports; var finishShell = poly.depth === 0 && !firstLayer; startPoint = scope.polyPrintPath(poly, startPoint, preout, { rate: finishShell ? process.outputFinishrate : printSpeed, - accel: finishShell ? process.outputShortDistance * 2 : 0, + accel: finishShell, shorten: finishShell && !firstLayer ? nozzle / 2 : 0, extrude: shellMult, onfirst: function(firstPoint) { diff --git a/js/kiri.js b/js/kiri.js index e986fb1b..1820fd74 100644 --- a/js/kiri.js +++ b/js/kiri.js @@ -79,6 +79,7 @@ self.kiri.license = exports.LICENSE; outputBrimOffset: 1, outputShortDistance: 1, outputShortFactor: 1, + outputAccelComp: 1, outputOuterFirst: 1, outputWipeSpeed: 1, outputWipeDistance: 1, @@ -276,6 +277,7 @@ self.kiri.license = exports.LICENSE; outputBrimOffset: 3, outputShortDistance: 5.0, outputShortFactor: 0.2, + outputAccelComp: false, outputOuterFirst: true, // --- LASER --- @@ -2362,6 +2364,7 @@ self.kiri.license = exports.LICENSE; outputWipeDistance: UC.newInput("wipe distance", {title:"distance to wipe nozzle after\neach enclosed island completes\nin millimeters. 0 to disable", convert:UC.toInt, modes:FDM}), outputShortDistance: UC.newInput("short distance", {title:"segment length cutoff\nfor short segments\nin millimeters", bound:UC.bound(0,200), convert:UC.toFloat, modes:FDM}), outputShortFactor: UC.newInput("short factor", {title:"max speed reduction factor\nfor short segments\nas % of print speed", bound:UC.bound(0.05,1), convert:UC.toFloat, modes:FDM}), + outputAccelComp: UC.newBoolean("acceleration", onBooleanClick, {title: "acceleration compensation\nexperimental", modes:FDM}), outputOuterFirst: UC.newBoolean("outer first", onBooleanClick, {title: "output outermost shell first", modes:FDM}), }); diff --git a/js/license.js b/js/license.js index f999af82..ec78a464 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.72" + VERSION:"1.0.73" }; if (!module) var module = {}; module.exports = exports;