add belt anchor line on first layer when needed

This commit is contained in:
Stewart Allen 2020-12-20 14:57:35 -05:00
commit ebbeb0178d
3 changed files with 18 additions and 3 deletions

View file

@ -916,6 +916,7 @@
API.function.clear(); API.function.clear();
API.conf.save(); API.conf.save();
showDevices(); showDevices();
API.modal.hide();
}; };
UI.deviceAdd.onclick = function() { UI.deviceAdd.onclick = function() {
API.function.clear(); API.function.clear();

View file

@ -124,6 +124,7 @@
let dz = 0, let dz = 0,
abs = true, abs = true,
absE = true, absE = true,
belt = false,
defh = 0, defh = 0,
height = 0, height = 0,
factor = 1, factor = 1,
@ -216,6 +217,9 @@
defh = parseFloat(hd[4]); defh = parseFloat(hd[4]);
if (fdm) dz = -defh / 2; if (fdm) dz = -defh / 2;
} }
if (line.indexOf("BED TYPE: BELT") > 0) {
belt = true;
}
line = line.split(";")[0].split(" ").filter(v => v); line = line.split(";")[0].split(" ").filter(v => v);
let cmd = line.shift(); let cmd = line.shift();
if (!cmd) return; if (!cmd) return;
@ -270,6 +274,7 @@
scope.lines = lines.length; scope.lines = lines.length;
scope.bytes = gcode.length; scope.bytes = gcode.length;
scope.maxSpeed = Math.floor(maxf / 60); scope.maxSpeed = Math.floor(maxf / 60);
scope.belt = belt;
done({ output: scope.output }); done({ output: scope.output });
}; };

View file

@ -201,7 +201,9 @@
) && !vaseMode; ) && !vaseMode;
doShells(slice, spro.sliceShells, firstOffset, shellOffset, fillOffset, { doShells(slice, spro.sliceShells, firstOffset, shellOffset, fillOffset, {
vase: vaseMode, vase: vaseMode,
thin: spro.detectThinWalls thin: spro.detectThinWalls,
belt0: sdev.bedBelt && slice.index === 0,
widget: widget
}); });
if (solid) { if (solid) {
doSolidLayerFill(slice, fillSpacing, sliceFillAngle); doSolidLayerFill(slice, fillSpacing, sliceFillAngle);
@ -358,8 +360,7 @@
* @param {number} fillOffset * @param {number} fillOffset
* @param {Obejct} options * @param {Obejct} options
*/ */
function doShells(slice, count, offset1, offsetN, fillOffset, options) { function doShells(slice, count, offset1, offsetN, fillOffset, opt = {}) {
const opt = options || {};
slice.tops.forEach(function(top) { slice.tops.forEach(function(top) {
let top_poly = [ top.poly ]; let top_poly = [ top.poly ];
@ -464,6 +465,14 @@
// for diffing // for diffing
top.last = last; top.last = last;
if (opt.belt0 && top.shells.length === 0) {
let bounds = opt.widget.bounds;
top.shells.push(BASE.newPolygon()
.setOpen()
.add(bounds.min.x - 5,0,slice.z)
.add(bounds.max.x + 5,0,slice.z));
}
}); });
}; };