From 8914b900b21b83ff7860a47539c3f64c92aaa537 Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Fri, 19 Jan 2018 19:23:02 -0500 Subject: [PATCH] add separate first layer extrusion multiplier --- js/kiri-print.js | 12 +++++++++--- js/kiri.js | 8 ++++---- web/kiri/filter/FDM/Raise3D.N2 | 3 ++- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/js/kiri-print.js b/js/kiri-print.js index 8165b77c..47ac7c55 100644 --- a/js/kiri-print.js +++ b/js/kiri-print.js @@ -492,13 +492,20 @@ var gs_kiri_print = exports; finishSpeed = opt.speed || process.outputFinishrate, firstShellSpeed = process.firstLayerRate, firstFillSpeed = process.firstLayerFillRate, + firstPrintMult = process.firstLayerPrintMult, 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), z = slice.z; + // apply first layer extrusion multipliers + if (firstLayer) { + fillMult *= firstPrintMult; + shellMult *= firstPrintMult; + sparseMult *= firstPrintMult; + } + function retract() { if (preout.length) preout.last().retract = true; } @@ -647,12 +654,11 @@ var gs_kiri_print = exports; next = array[i]; if (!next) continue; poly = fnp ? fnp(next) : next; - if (outerFirst && newTop && poly.depth !== 0) continue; find = poly.findClosestPointTo(startPoint); order.push({ i: i, n: next, - d: find.distance - (poly.depth * thinWall * (outerFirst?0:1)), + d: find.distance - (poly.depth * thinWall), }); } newTop = false; diff --git a/js/kiri.js b/js/kiri.js index 581863d9..70091aa2 100644 --- a/js/kiri.js +++ b/js/kiri.js @@ -74,6 +74,7 @@ self.kiri.license = exports.LICENSE; firstSliceHeight: 1, firstLayerRate: 1, firstLayerFillRate: 1, + firstLayerPrintMult: 1, outputRaft: 1, outputTemp: 1, outputFanMax: 1, @@ -95,7 +96,6 @@ self.kiri.license = exports.LICENSE; outputShortFactor: 1, outputFinishFactor: 1, outputCooling: 1, - outputOuterFirst: 1, detectThinWalls: 1, outputClockwise: 1, outputOriginCenter: 1, @@ -278,6 +278,7 @@ self.kiri.license = exports.LICENSE; firstSliceHeight: 0.25, firstLayerRate: 30, firstLayerFillRate: 40, + firstLayerPrintMult: 1.0, outputRaft: false, outputTemp: 220, @@ -299,7 +300,6 @@ self.kiri.license = exports.LICENSE; outputShortDistance: 5.0, outputShortFactor: 0.2, outputFinishFactor: 0, - outputOuterFirst: false, detectThinWalls: false, outputCooling: true, @@ -1121,7 +1121,7 @@ self.kiri.license = exports.LICENSE; ajax(host+"/api/wait?key="+json.key, function(data) { data = js2o(data); DBUG.log(data); - alert("print to "+target+" @ "+host+" : "+data.status); + alert("print to "+target+": "+data.status); }); } else { alert("grid:print error\nstatus: "+status+"\nmessage: "+xhtr.responseText); @@ -2455,6 +2455,7 @@ self.kiri.license = exports.LICENSE; firstSliceHeight: UC.newInput("slice height", {title:"in millimeters\nshould be >= slice height", 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}), + firstLayerPrintMult: UC.newInput("print factor", {title:"extrusion multiplier\n0.0 - 2.0", 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}), @@ -2467,7 +2468,6 @@ self.kiri.license = exports.LICENSE; outputShortDistance: UC.newInput("short segment", {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}), outputFinishFactor: UC.newInput("finish factor", {title:"% of nozzle diameter to\nshorten finish path by\nvalues of 0-1", bound:UC.bound(0.0,1), convert:UC.toFloat, modes:FDM}), - outputOuterFirst: UC.newBoolean("outer first", onBooleanClick, {title: "output outermost shell first", modes:FDM}), detectThinWalls: UC.newBoolean("thin wall fill", onBooleanClick, {title: "detect and fill thin openings\nbetween shells walls", modes:FDM}) }); diff --git a/web/kiri/filter/FDM/Raise3D.N2 b/web/kiri/filter/FDM/Raise3D.N2 index 1282eb02..b342374e 100644 --- a/web/kiri/filter/FDM/Raise3D.N2 +++ b/web/kiri/filter/FDM/Raise3D.N2 @@ -1,7 +1,7 @@ { "pre":[ - "M221 T0 S100.00", "M140 S{bed_temp}", + "M221 T0 S100.00", "M104 T0 S{temp}", "M109 T0 S{temp}", "M190 S{bed_temp}", @@ -11,6 +11,7 @@ "M107", "G28 X0 Y0", "G28 Z0", + "T0", "G1 Z0.05 F6000.00", "G92 E0", "G1 F140 E29",