From 2cc9f470d37c990d857a14cfddc71e7946c9f52d Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Tue, 27 Apr 2021 22:34:53 -0400 Subject: [PATCH] add anchor bump to help it peel around the belt end --- src/kiri/conf.js | 1 + src/kiri/init.js | 1 + src/mode/fdm/slice.js | 20 +++++++++++++++++++- web/kiri/lang/en.js | 2 ++ 4 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/kiri/conf.js b/src/kiri/conf.js index 0ed1beb7..cb9f0aa6 100644 --- a/src/kiri/conf.js +++ b/src/kiri/conf.js @@ -321,6 +321,7 @@ firstLayerBrimComb: 0, firstLayerBrimGap: 0, firstLayerBeltLead: 3, + firstLayerBeltBump: 0, firstLayerFanSpeed: 0, outputRaft: false, outputRaftSpacing: 0.2, diff --git a/src/kiri/init.js b/src/kiri/init.js index 4dc5f5ae..41fd4a77 100644 --- a/src/kiri/init.js +++ b/src/kiri/init.js @@ -1680,6 +1680,7 @@ 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}), + firstLayerBeltBump: UC.newInput(LANG.fl_blmp_s, {title:LANG.fl_blmp_l, convert:UC.toFloat, bound:UC.bound(0, 10), modes:FDM, show:isBelt}), fdmSep: UC.newBlank({class:"pop-sep", modes:FDM, show:isNotBelt}), outputBrimCount: UC.newInput(LANG.fl_skrt_s, {title:LANG.fl_skrt_l, convert:UC.toInt, modes:FDM, show:isNotBelt}), outputBrimOffset: UC.newInput(LANG.fl_skro_s, {title:LANG.fl_skro_l, convert:UC.toFloat, modes:FDM, show:isNotBelt}), diff --git a/src/mode/fdm/slice.js b/src/mode/fdm/slice.js index 5cca6a72..3d8d843c 100644 --- a/src/mode/fdm/slice.js +++ b/src/mode/fdm/slice.js @@ -357,6 +357,7 @@ minx -= brim; maxx += brim; } + let adds = []; while (offset && start && offset >= sliceHeight) { let addto = start.down; if (!addto) { @@ -373,10 +374,27 @@ let y = z - smin - (nozzleSize / 2); // let splat = BASE.newPolygon().add(wb.min.x, y, z).add(wb.max.x, y, z).setOpen(); let splat = BASE.newPolygon().add(minx, y, z).add(maxx, y, z).setOpen(); - addto.addTop(splat).fill_sparse = [ splat ]; + let snew = addto.addTop(splat).fill_sparse = [ splat ]; + adds.push(snew); start = addto; offset -= sliceHeight; } + // add anchor bump + let bump = spro.firstLayerBeltBump; + if (bump) { + adds = adds.reverse().slice(1, adds.length - 1); + let count = 1; + for (let add of adds) { + let poly = add[0]; + let y = count++ * -nozzleSize; + if (-y > bump) { + break; + } + poly.push(poly.last().add({x:0, y, z:0})); + poly.push(poly.first().add({x:0, y, z:0})); + poly.setClosed(); + } + } } // calculations only relevant when solid layers are used diff --git a/web/kiri/lang/en.js b/web/kiri/lang/en.js index 5371bcbf..09ff1ed4 100644 --- a/web/kiri/lang/en.js +++ b/web/kiri/lang/en.js @@ -325,6 +325,8 @@ kiri.lang['en-us'] = { 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"], + fl_blmp_s: "anchor bump", + fl_blmp_l: ["add a bump to the start of","an anchor to help it peel","off at the end of the belt","in millimeters"], // FDM SUPPORT sp_menu: "support",