add brim trigger threshold. disable first layer anchor (for now)

This commit is contained in:
Stewart Allen 2021-01-21 15:28:38 -05:00
commit cc1f466aa7
5 changed files with 32 additions and 15 deletions

View file

@ -310,6 +310,7 @@
firstLayerNozzleTemp: 0, firstLayerNozzleTemp: 0,
firstLayerBedTemp: 0, firstLayerBedTemp: 0,
firstLayerBrim: 0, firstLayerBrim: 0,
firstLayerBrimTrig: 0,
outputRaft: false, outputRaft: false,
outputRaftSpacing: 0.2, outputRaftSpacing: 0.2,
outputTemp: 200, outputTemp: 200,

View file

@ -1629,6 +1629,7 @@
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}), 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}), firstLayerPrintMult: UC.newInput(LANG.fl_mult_s, {title:LANG.fl_mult_l, convert:UC.toFloat, modes:FDM}),
firstLayerBrim: UC.newInput(LANG.fl_brim_s, {title:LANG.fl_brim_l, convert:UC.toFloat, 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}),
fdmSep: UC.newBlank({class:"pop-sep", modes:FDM, show:isNotBelt}), 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}), 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}), outputBrimOffset: UC.newInput(LANG.fl_skro_s, {title:LANG.fl_skro_l, convert:UC.toFloat, modes:FDM, show:isNotBelt}),

View file

@ -34,6 +34,7 @@
firstLayerRate = process.firstLayerRate, firstLayerRate = process.firstLayerRate,
firstLayerMult = process.firstLayerPrintMult, firstLayerMult = process.firstLayerPrintMult,
firstLayerBrim = process.firstLayerBrim, firstLayerBrim = process.firstLayerBrim,
firstLayerBrimTrig = process.firstLayerBrimTrig,
maxLayers = 0, maxLayers = 0,
layer = 0, layer = 0,
zoff = 0, zoff = 0,
@ -447,10 +448,10 @@
} }
// correct y offset to desired layer offset // correct y offset to desired layer offset
let miny = process.firstLayerYOffset || 0; let miny = process.firstLayerYOffset || 0;
let poff = minby - miny;
for (let layer of output) { for (let layer of output) {
for (let rec of layer) { for (let rec of layer) {
let point = rec.point; rec.point.y += poff;
point.y += minby - miny;
} }
} }
let thresh = firstLayerHeight * 1.05; let thresh = firstLayerHeight * 1.05;
@ -459,19 +460,28 @@
for (let layer of output) { for (let layer of output) {
let lastout, first = false; let lastout, first = false;
let minz = Infinity, maxy = -Infinity, minx = Infinity, maxx = -Infinity; let minz = Infinity, maxy = -Infinity, minx = Infinity, maxx = -Infinity;
for (let out of layer) { let mins = Infinity;
let point = out.point; let miny = Infinity;
let belty = out.belty = -point.y + point.z * bfactor; for (let rec of layer) {
if (out.emit && belty <= thresh && lastout && lastout.belty <= thresh) { let point = rec.point;
out.speed = firstLayerRate; let belty = rec.belty = -point.y + point.z * bfactor;
out.emit *= firstLayerMult; miny = Math.min(miny, belty);
if (rec.emit && belty <= thresh && lastout && Math.abs(lastout.belty - belty) < 0.005) {
rec.speed = firstLayerRate;
rec.emit *= firstLayerMult;
minx = Math.min(minx, point.x, lastout.point.x); minx = Math.min(minx, point.x, lastout.point.x);
maxx = Math.max(maxx, point.x, lastout.point.x); maxx = Math.max(maxx, point.x, lastout.point.x);
maxy = Math.max(maxy, point.y); maxy = Math.max(maxy, point.y);
minz = Math.min(minz, point.z); minz = Math.min(minz, point.z);
first = out; first = rec;
// find length of shortest bed-facing segment
mins = Math.min(mins, lastout.point.distTo2D(rec.point));
} }
lastout = out; lastout = rec;
}
// skip if brig trigger not met
if (firstLayerBrimTrig && mins > firstLayerBrimTrig) {
continue;
} }
// add brim, if specified // add brim, if specified
if (first && firstLayerBrim) { if (first && firstLayerBrim) {

View file

@ -509,7 +509,8 @@
shellout += top.shells.length; shellout += top.shells.length;
// add anchor extrusion if missing on the first belt layer // add anchor extrusion if missing on the first belt layer
if (opt.belt0 && top.shells.length === 0 && slice.up && slice.up.tops.length) { // todo: fix. disabled because throws off layer min y calculations in some cases
if (false && opt.belt0 && top.shells.length === 0 && slice.up && slice.up.tops.length) {
for (let up of slice.up.tops) { for (let up of slice.up.tops) {
let bounds = up.poly.bounds, let bounds = up.poly.bounds,
midy = (bounds.miny + bounds.maxy) / 2; midy = (bounds.miny + bounds.maxy) / 2;

View file

@ -213,10 +213,6 @@ kiri.lang['en-us'] = {
fl_mult_l: "extrusion multiplier\n0.0 - 2.0", fl_mult_l: "extrusion multiplier\n0.0 - 2.0",
fl_sfac_s: "width factor", fl_sfac_s: "width factor",
fl_sfac_l: "multiplier on nozzle size\nchanges line spacing", fl_sfac_l: "multiplier on nozzle size\nchanges line spacing",
fl_zoff_s: "layer offset",
fl_zoff_l: "height offset from belt\nof lowest extrusion\nin millimeters",
fl_brim_s: "brim size",
fl_brim_l: "add brim to part bottom\nsize is width in millimeters\n0 to disable",
fl_skrt_s: "skirt count", fl_skrt_s: "skirt count",
fl_skrt_l: "number of first-layer offset\nbrims to generate", fl_skrt_l: "number of first-layer offset\nbrims to generate",
fl_skro_s: "skirt offset", fl_skro_s: "skirt offset",
@ -230,6 +226,14 @@ kiri.lang['en-us'] = {
fr_nabl_s: "raft enable", fr_nabl_s: "raft enable",
fr_nabl_l: "create a raft under the\nmodel for better adhesion\nuses skirt offset and\ndisables skirt output", fr_nabl_l: "create a raft under the\nmodel for better adhesion\nuses skirt offset and\ndisables skirt output",
// FDM BELT ONLY
fl_zoff_s: "layer offset",
fl_zoff_l: "height offset from belt\nof lowest extrusion\nin millimeters",
fl_brim_s: "brim size",
fl_brim_l: "add brim to part bottom\nsize is width in millimeters\n0 to disable",
fl_brmn_s: "brim trigger",
fl_brmn_l: "add brims only when segment\nfacing belt is shorter than this\nvalue in millimeters\n0 = Infinity",
// FDM SUPPORT // FDM SUPPORT
sp_menu: "support", sp_menu: "support",
sp_detect: "detect", sp_detect: "detect",