From 35a319d9d179a13ed693468c25b3f1cf50e0a124 Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Tue, 6 Apr 2021 22:38:02 -0400 Subject: [PATCH] add belt brim comb and gap controls --- src/kiri/conf.js | 2 ++ src/kiri/init.js | 6 ++++-- src/mode/fdm/client.js | 2 ++ src/mode/fdm/prepare.js | 18 ++++++++++++++---- web/kiri/lang/en.js | 6 +++++- 5 files changed, 27 insertions(+), 7 deletions(-) diff --git a/src/kiri/conf.js b/src/kiri/conf.js index 11b3d999..c7119507 100644 --- a/src/kiri/conf.js +++ b/src/kiri/conf.js @@ -317,6 +317,8 @@ firstLayerBedTemp: 0, firstLayerBrim: 0, firstLayerBrimTrig: 0, + firstLayerBrimComb: 0, + firstLayerBrimGap: 0, firstLayerBeltLead: 3, firstLayerFanSpeed: 0, outputRaft: false, diff --git a/src/kiri/init.js b/src/kiri/init.js index 94bccdd9..c9610727 100644 --- a/src/kiri/init.js +++ b/src/kiri/init.js @@ -1664,8 +1664,10 @@ firstLayerLineMult: UC.newInput(LANG.fl_sfac_s, {title:LANG.fl_sfac_l, convert:UC.toFloat, bound:UC.bound(0.5,2), modes:FDM, show:isNotBelt}), firstLayerPrintMult: UC.newInput(LANG.fl_mult_s, {title:LANG.fl_mult_l, convert:UC.toFloat, modes:FDM}), fdmSep: UC.newBlank({class:"pop-sep", modes:FDM, show:isBelt}), - firstLayerBrim: UC.newInput(LANG.fl_brim_s, {title:LANG.fl_brim_l, convert:UC.toFloat, modes:FDM, show:isBelt}), - firstLayerBrimTrig: UC.newInput(LANG.fl_brmn_s, {title:LANG.fl_brmn_l, convert:UC.toFloat, modes:FDM, show:isBelt}), + firstLayerBrim: UC.newInput(LANG.fl_brim_s, {title:LANG.fl_brim_l, convert:UC.toInt, modes:FDM, show:isBelt}), + firstLayerBrimComb: UC.newInput(LANG.fl_brco_s, {title:LANG.fl_brco_l, convert:UC.toInt, modes:FDM, show:isBelt}), + firstLayerBrimTrig: UC.newInput(LANG.fl_brmn_s, {title:LANG.fl_brmn_l, convert:UC.toInt, modes:FDM, show:isBelt}), + firstLayerBrimGap: UC.newInput(LANG.fl_brgp_s, {title:LANG.fl_brgp_l, convert:UC.toFloat, modes:FDM, show:isBelt}), fdmSep: UC.newBlank({class:"pop-sep", modes:FDM, show:isBelt}), firstLayerBeltLead: UC.newInput(LANG.fl_bled_s, {title:LANG.fl_bled_l, convert:UC.toFloat, modes:FDM, show:isBelt}), fdmSep: UC.newBlank({class:"pop-sep", modes:FDM, show:isNotBelt}), diff --git a/src/mode/fdm/client.js b/src/mode/fdm/client.js index 037bf946..601d34a0 100644 --- a/src/mode/fdm/client.js +++ b/src/mode/fdm/client.js @@ -52,7 +52,9 @@ "sliceSupportOffset": LANG.sp_offs_s, "sliceLayerStart": LANG.sl_strt_s, "firstLayerBrim": LANG.fl_brim_s, + "firstLayerBrimComb": LANG.fl_brco_s, "firstLayerBrimTrig": LANG.fl_brmn_s, + "firstLayerBrimGap": LANG.fl_brgp_s, // export "zHopDistance": LANG.ad_zhop_s, "arcTolerance": LANG.ad_zhop_s, diff --git a/src/mode/fdm/prepare.js b/src/mode/fdm/prepare.js index 4fcf1e2f..249ac3fc 100644 --- a/src/mode/fdm/prepare.js +++ b/src/mode/fdm/prepare.js @@ -501,12 +501,16 @@ // } let thresh = firstLayerHeight * 1.05; + let seqn = 0; + // iterate over layers, find extrusion on belt and // apply corrections and add brim when specified for (let layer of output) { let params = getRangeParameters(settings, layer.layer || 0); let firstLayerBrim = params.firstLayerBrim; let firstLayerBrimTrig = params.firstLayerBrimTrig; + let firstLayerBrimComb = params.firstLayerBrimComb; + let firstLayerBrimGap = params.firstLayerBrimGap || 0; let lastout, first = false; let minz = Infinity, maxy = -Infinity, minx = Infinity, maxx = -Infinity; let mins = Infinity; @@ -539,18 +543,24 @@ continue; } // add brim, if specified - if (first && firstLayerBrim) { + if (first && firstLayerBrim && seqn <= firstLayerBrimComb) { let { emit, tool } = first; let y = maxy; let z = minz; - let b = Math.max(firstLayerBrim, 1); + let g = firstLayerBrimGap || 0; + let b = Math.max(firstLayerBrim, 1) + g; let tmpout = []; layer.last().retract = true; print.addOutput(tmpout, newPoint(maxx + b, y, z), 0, firstLayerSeek, tool); - print.addOutput(tmpout, newPoint(maxx + 0, y, z), emit, firstLayerRate, tool).retract = true; + print.addOutput(tmpout, newPoint(maxx + g, y, z), emit, firstLayerRate, tool).retract = true; print.addOutput(tmpout, newPoint(minx - b, y, z), 0, firstLayerSeek, tool); - print.addOutput(tmpout, newPoint(minx - 0, y, z), emit, firstLayerRate, tool).retract = false; + print.addOutput(tmpout, newPoint(minx - g, y, z), emit, firstLayerRate, tool).retract = false; layer.splice(0,0,...tmpout); + if (firstLayerBrimComb) { + seqn++; + } + } else { + seqn = 0; } } } diff --git a/web/kiri/lang/en.js b/web/kiri/lang/en.js index 640123fb..e746bec4 100644 --- a/web/kiri/lang/en.js +++ b/web/kiri/lang/en.js @@ -310,10 +310,14 @@ kiri.lang['en-us'] = { // FDM BELT ONLY fl_zoff_s: "belt offset", fl_zoff_l: ["height offset from belt","of lowest extrusion","in millimeters"], - fl_brim_s: "brim size", + fl_brim_s: "brim width", fl_brim_l: ["add brim to part bottom","size is width in millimeters","0 to disable"], fl_brmn_s: "brim trigger", fl_brmn_l: ["add brims only when segment","facing belt is shorter than this","value in millimeters","0 = Infinity"], + fl_brco_s: "brim comb", + fl_brco_l: ["add brim gaps","every n lines","0 to disable"], + fl_brgp_s: "brim gap", + fl_brgp_l: ["spacing between brim and part","in millimeters"], fl_bled_s: "part anchor", fl_bled_l: ["belt part anchor","at start of print","in millimeters"],