diff --git a/js/kiri-print.js b/js/kiri-print.js index 7f8acc99..83c26979 100644 --- a/js/kiri-print.js +++ b/js/kiri-print.js @@ -491,7 +491,10 @@ var gs_kiri_print = exports; sparseMult = process.outputSparseMult, finishFactor = process.outputFinishFactor || 0, finishSpeed = opt.speed || process.outputFinishrate, - printSpeed = opt.speed || (firstLayer ? process.firstLayerRate : process.outputFeedrate), + firstShellSpeed = process.firstLayerRate, + firstFillSpeed = process.firstLayerFillRate, + printSpeed = opt.speed || (firstLayer ? firstShellSpeed : process.outputFeedrate), + fillSpeed = opt.speed || opt.fillSpeed || (firstLayer ? firstFillSpeed || firstShellSpeed : process.outputFeedrate), moveSpeed = process.outputSeekrate, outerFirst = process.outputOuterFirst, origin = startPoint.add(offset), @@ -594,7 +597,7 @@ var gs_kiri_print = exports; // to avoid shaking the printer to death. if (find.d <= thinWall && len <= thinWall) { p2 = p1.midPointTo(p2); - addOutput(preout, p2, fillMult * (find.d / thinWall), printSpeed); + addOutput(preout, p2, fillMult * (find.d / thinWall), fillSpeed); lastout = 1; } else { // retract if dist trigger and crosses a slice top polygon @@ -604,12 +607,12 @@ var gs_kiri_print = exports; // bridge ends of fill when they're close together if (dist < thinWall) { - addOutput(preout, p1, fillMult, printSpeed); + addOutput(preout, p1, fillMult, fillSpeed); } else { addOutput(preout, p1, 0, moveSpeed); } - addOutput(preout, p2, fillMult, printSpeed); + addOutput(preout, p2, fillMult, fillSpeed); lastout = 2; } diff --git a/js/kiri.js b/js/kiri.js index 3ff15376..a11134b4 100644 --- a/js/kiri.js +++ b/js/kiri.js @@ -73,6 +73,7 @@ self.kiri.license = exports.LICENSE; sliceVase: 1, firstSliceHeight: 1, firstLayerRate: 1, + firstLayerFillRate: 1, outputRaft: 1, outputTemp: 1, outputFanMax: 1, @@ -276,6 +277,7 @@ self.kiri.license = exports.LICENSE; firstSliceHeight: 0.25, firstLayerRate: 30, + firstLayerFillRate: 40, outputRaft: false, outputTemp: 220, @@ -2394,7 +2396,8 @@ self.kiri.license = exports.LICENSE; firstLayer: UC.newGroup("first layer", null, {modes:FDM}), firstSliceHeight: UC.newInput("slice height", {title:"in millimeters\nshould be >= slice height", convert:UC.toFloat, modes:FDM}), - firstLayerRate: UC.newInput("print speed", {title:"print move max speed\nmillimeters / minute", convert:UC.toFloat, modes:FDM}), + firstLayerRate: UC.newInput("shell speed", {title:"print move max speed\nmillimeters / minute", convert:UC.toFloat, modes:FDM}), + firstLayerFillRate: UC.newInput("fill speed", {title:"fill move max speed\nmillimeters / minute", convert:UC.toFloat, modes:FDM}), outputBrimCount: UC.newInput("skirt count", {title:"number of skirts", convert:UC.toInt, modes:FDM}), outputBrimOffset: UC.newInput("skirt offset", {title:"millimeters", convert:UC.toFloat, modes:FDM}),