diff --git a/src/kiri/layers.js b/src/kiri/layers.js index caa7ec8e..8d73a35d 100644 --- a/src/kiri/layers.js +++ b/src/kiri/layers.js @@ -85,6 +85,9 @@ } addPolys(polys, options) { + if (options && options.clean) { + polys = polys.map(p => p.clean()); + } if (options && options.flat) { return this.addFlats(polys, options); } diff --git a/src/kiri/worker.js b/src/kiri/worker.js index 4d18136a..d74a5854 100644 --- a/src/kiri/worker.js +++ b/src/kiri/worker.js @@ -6,6 +6,7 @@ let BASE = self.base, KIRI = self.kiri, UTIL = BASE.util, time = UTIL.time, + qtpi = Math.cos(Math.PI/4), current = self.worker = { print: null, snap: null @@ -122,6 +123,9 @@ KIRI.worker = { let ypos = settings.device.bedDepth / 2 + track.pos.y + miny; let rotation = (Math.PI / 180) * 45; + // move to accomodate anchor + ypos += (settings.process.firstLayerBeltLead || 0); + widget.rotate(rotation,0,0,true); let minr = gmin(group); widget.belt = { xpos, ypos, yadd: minr.maxy - minr.miny }; @@ -147,6 +151,8 @@ KIRI.worker = { let { dy, dz } = widget.track.center; widget.groupBounds(); let { xpos, ypos } = widget.belt; + // move to accomodate anchor + dy -= (settings.process.firstLayerBeltLead || 0) ; widget.rotinfo = { angle: 45, dy, dz, xpos, ypos }; for (let others of group.slice(1)) { others.rotinfo = widget.rotinfo; diff --git a/src/mode/fdm/prepare.js b/src/mode/fdm/prepare.js index 3e8374de..12ea5b3a 100644 --- a/src/mode/fdm/prepare.js +++ b/src/mode/fdm/prepare.js @@ -413,7 +413,7 @@ // output seek to start point between mesh slices if previous data printPoint = print.slicePrintPath( slice, - slice.belt && slice.belt.touch ? newPoint(-wtb.w, wtb.d * 2, 0) : printPoint.sub(offset), + slice.belt && slice.belt.touch ? newPoint(-5000, 0, 0) : printPoint.sub(offset), offset, layerout, { diff --git a/src/mode/fdm/slice.js b/src/mode/fdm/slice.js index 688d3c40..70e5aef4 100644 --- a/src/mode/fdm/slice.js +++ b/src/mode/fdm/slice.js @@ -339,7 +339,7 @@ maxx = Math.max(maxx, poly.bounds.maxx); } } - if (Math.abs(slice.belt.miny - smin) < 0.001) { + if (Math.abs(slice.belt.miny - smin) < 0.01) { slice.belt.touch = true; if (!start) start = slice; } @@ -350,6 +350,12 @@ while (start.up && start.topShells().length === 0) { start = start.up; } + // if a brim applies, add that width to anchor + let brim = getRangeParameters(settings, 0).firstLayerBrim || 0; + if (brim) { + minx -= brim; + maxx += brim; + } while (offset && start && offset >= sliceHeight) { let addto = start.down; if (!addto) { @@ -478,7 +484,7 @@ if (top.shells) output .setLayer("shells", isSynth ? COLOR.support : COLOR.shell) - .addPolys(top.shells, vopt({ offset, height })); + .addPolys(top.shells, vopt({ offset, height, clean: true })); if (top.gaps) output .setLayer("gaps", COLOR.gaps) diff --git a/web/kiri/lang/en.js b/web/kiri/lang/en.js index e746bec4..496a66fd 100644 --- a/web/kiri/lang/en.js +++ b/web/kiri/lang/en.js @@ -287,9 +287,9 @@ kiri.lang['en-us'] = { fl_lahi_s: "layer height", fl_lahi_l: ["height of each slice","in millimeters","should be >= slice height"], fl_rate_s: "shell speed", - fl_rate_l: ["shell printing max speed","in millimeters / minute"], + fl_rate_l: ["shell printing max speed","in millimeters / second"], fl_frat_s: "fill speed", - fl_frat_l: ["fill printing max speed","in millimeters / minute"], + fl_frat_l: ["fill printing max speed","in millimeters / second"], fl_mult_s: "flow factor", fl_mult_l: ["extrusion multiplier","0.0 - 2.0"], fl_sfac_s: "width factor", @@ -366,7 +366,7 @@ kiri.lang['en-us'] = { cc_sdwn_s: "step down", cc_sdwn_l: ["step down depth","for each pass","in workspace units","0 to disable"], cc_feed_s: "feed rate", - cc_feed_l: ["max cutting speed in","workspace units / minute"], + cc_feed_l: ["max cutting speed in","workspace units / second"], cc_plng_s: "plunge rate", cc_plng_l: ["max z axis speed in","workspace units / minute"], cc_sngl_s: "select lines only", @@ -481,7 +481,7 @@ kiri.lang['en-us'] = { ou_powr_s: "power", ou_powr_l: ["0 - 100","represents %"], ou_sped_s: "speed", - ou_sped_l: "millimeters / minute", + ou_sped_l: "millimeters / second", ou_mrgd_s: "merged", ou_mrgd_l: ["merge all layers using","color coding to denote","stacking depth"], ou_grpd_s: "grouped", @@ -499,11 +499,11 @@ kiri.lang['en-us'] = { ou_bedd_s: "bed temp", ou_bedd_l: "degrees in celsius", ou_feed_s: "print speed", - ou_feed_l: ["max print speed","millimeters / minute"], + ou_feed_l: ["max print speed","millimeters / second"], ou_fini_s: "finish speed", - ou_fini_l: ["outermost shell speed","millimeters / minute"], + ou_fini_l: ["outermost shell speed","millimeters / second"], ou_move_s: "move speed", - ou_move_l: ["non-print move speed","millimeters / minute","0 = enable G0 moves"], + ou_move_l: ["non-print move speed","millimeters / second","0 = enable G0 moves"], ou_shml_s: "shell factor", ou_flml_s: "solid factor", ou_spml_s: "infill factor", @@ -581,7 +581,7 @@ kiri.lang['en-us'] = { ad_play_s: "polish layers", ad_play_l: ["polish up to specified","# of layers at a time"], ad_pspd_s: "polish speed", - ad_pspd_l: ["polishing speed","in millimeters / minute"], + ad_pspd_l: ["polishing speed","in millimeters / second"], ad_purg_s: "purge tower", ad_purg_l: ["enable purge tower","for multiple extruders"],