From d2ac6ba9d098fd9d4c4fffae8e039e8117b1f051 Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Mon, 12 Apr 2021 20:45:50 -0400 Subject: [PATCH 1/7] update precision to more accurately capture slices touching a belt. fix starting point for that case. --- src/mode/fdm/prepare.js | 2 +- src/mode/fdm/slice.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mode/fdm/prepare.js b/src/mode/fdm/prepare.js index 249ac3fc..1b09f25b 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..85fa02f3 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; } From e92adbdb3de7d093b744cda37b81c0a874764df3 Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Tue, 13 Apr 2021 09:57:56 -0400 Subject: [PATCH 2/7] push part on z to accomodate anchor. match anchor width to brim, when set --- src/kiri/worker.js | 6 ++++++ src/mode/fdm/slice.js | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/src/kiri/worker.js b/src/kiri/worker.js index 4d18136a..b2f38035 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) * qtpi; + 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) * qtpi; 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/slice.js b/src/mode/fdm/slice.js index 85fa02f3..3d6cbf78 100644 --- a/src/mode/fdm/slice.js +++ b/src/mode/fdm/slice.js @@ -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 = spro.firstLayerBrim || 0; + if (brim) { + minx -= brim; + maxx += brim; + } while (offset && start && offset >= sliceHeight) { let addto = start.down; if (!addto) { From e317782e6d4242fcf3aed4d1b62eb8ab5dab81ca Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Tue, 13 Apr 2021 10:01:45 -0400 Subject: [PATCH 3/7] fix short offset for anchor adjustment --- src/kiri/worker.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/kiri/worker.js b/src/kiri/worker.js index b2f38035..d74a5854 100644 --- a/src/kiri/worker.js +++ b/src/kiri/worker.js @@ -124,7 +124,7 @@ KIRI.worker = { let rotation = (Math.PI / 180) * 45; // move to accomodate anchor - ypos += (settings.process.firstLayerBeltLead || 0) * qtpi; + ypos += (settings.process.firstLayerBeltLead || 0); widget.rotate(rotation,0,0,true); let minr = gmin(group); @@ -152,7 +152,7 @@ KIRI.worker = { widget.groupBounds(); let { xpos, ypos } = widget.belt; // move to accomodate anchor - dy -= (settings.process.firstLayerBeltLead || 0) * qtpi; + dy -= (settings.process.firstLayerBeltLead || 0) ; widget.rotinfo = { angle: 45, dy, dz, xpos, ypos }; for (let others of group.slice(1)) { others.rotinfo = widget.rotinfo; From 49a839bc8b7ded8161cddcf39b32c126d73e6eee Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Tue, 13 Apr 2021 11:38:36 -0400 Subject: [PATCH 4/7] fix unit speed for fdm --- web/kiri/lang/en.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) 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"], From c537216b543c9d97f31aba89d891443568332047 Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Tue, 13 Apr 2021 12:53:34 -0400 Subject: [PATCH 5/7] at the cost of a litle extra compute time, remove more erroneous burs --- src/kiri/layers.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/kiri/layers.js b/src/kiri/layers.js index caa7ec8e..e96df07e 100644 --- a/src/kiri/layers.js +++ b/src/kiri/layers.js @@ -200,6 +200,8 @@ const contour = []; poly = poly.debur(0.05); if (!poly) return; + poly = poly.clean(); + if (!poly) return; poly = poly.miter(); poly.points.forEach(p => { contour.push(new THREE.Vector2(p.x, p.y)); From 9073a5789ebcd594e8881d1420fbd3e1dbf17cda Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Tue, 13 Apr 2021 13:05:57 -0400 Subject: [PATCH 6/7] better brim detection when ranges are in use --- src/mode/fdm/slice.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mode/fdm/slice.js b/src/mode/fdm/slice.js index 3d6cbf78..5b041f83 100644 --- a/src/mode/fdm/slice.js +++ b/src/mode/fdm/slice.js @@ -351,7 +351,7 @@ start = start.up; } // if a brim applies, add that width to anchor - let brim = spro.firstLayerBrim || 0; + let brim = getRangeParameters(settings, 0).firstLayerBrim || 0; if (brim) { minx -= brim; maxx += brim; From 401577943c3484f2de6ad127caf03fed5f637da9 Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Tue, 13 Apr 2021 13:31:02 -0400 Subject: [PATCH 7/7] alt approach to fixing miter render bug --- src/kiri/layers.js | 5 +++-- src/mode/fdm/slice.js | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/kiri/layers.js b/src/kiri/layers.js index e96df07e..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); } @@ -200,8 +203,6 @@ const contour = []; poly = poly.debur(0.05); if (!poly) return; - poly = poly.clean(); - if (!poly) return; poly = poly.miter(); poly.points.forEach(p => { contour.push(new THREE.Vector2(p.x, p.y)); diff --git a/src/mode/fdm/slice.js b/src/mode/fdm/slice.js index 5b041f83..70e5aef4 100644 --- a/src/mode/fdm/slice.js +++ b/src/mode/fdm/slice.js @@ -484,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)