From d306ac0569e37ab62c434bae5f90973b53121525 Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Tue, 16 Nov 2021 11:27:36 -0500 Subject: [PATCH] adjust purge tower belt offset --- src/mode/fdm/prepare.js | 12 ++++++++---- src/mode/fdm/slice.js | 3 ++- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/mode/fdm/prepare.js b/src/mode/fdm/prepare.js index d52fc507..b6ee242e 100644 --- a/src/mode/fdm/prepare.js +++ b/src/mode/fdm/prepare.js @@ -268,7 +268,8 @@ // replace extruders array with object array containing more info extruders = extruders.map((ext,i) => { if (!ext) return ext; - let noz = device.extruders[i].extNozzle, + let exi = device.extruders[i], + noz = exi.extNozzle, pos = {x:blokpos.x, y:blokpos.y, z:0}, rect = newPolygon().centerRectangle(pos, blok.x, blok.y), full = linesToPoly(POLY.fillArea([ @@ -279,6 +280,7 @@ ], 135, noz * 5)), rec = { extruder: i, + diameter: exi.extNozzle, rect, full, sparse @@ -323,12 +325,14 @@ if (layer.last()) { layer.last().retract = true; } - let purgeOn = first || !thin; + let purgeOn = (!isBelt && first) || !thin; let box = rec.rect.clone().setZ(z); let fill = (purgeOn ? rec.full : rec.sparse).clone().setZ(z); if (isBelt) { - box.move({x:0, y:z, z:0}); - fill.move({x:0, y:z, z:0}); + // offset by nozzle diameter + half step (shell) then angled + let exo = rec.diameter * (1/Math.sqrt(2)) * 1.5; + box.move({x:0, y:z - exo, z:0}); + fill.move({x:0, y:z - exo, z:0}); if (offset) { box.move(offset); fill.move(offset); diff --git a/src/mode/fdm/slice.js b/src/mode/fdm/slice.js index 31af7568..79edd7ff 100644 --- a/src/mode/fdm/slice.js +++ b/src/mode/fdm/slice.js @@ -367,7 +367,8 @@ } } // mark slice as touching belt if near miny - if (Math.abs(slice.belt.miny - smin) < 0.01) { + // if (Math.abs(slice.belt.miny - smin) < 0.01) { + if (Math.abs(slice.belt.miny) < 0.01) { slice.belt.touch = true; if (!start) start = slice; }