diff --git a/js/gcodeGenerating.js b/js/gcodeGenerating.js
index 93f4cba..9104722 100644
--- a/js/gcodeGenerating.js
+++ b/js/gcodeGenerating.js
@@ -38,6 +38,8 @@ function generate_gcode() {
var printerDimensionsX = settings["printer.dimensions.x"];
var printerDimensionsY = settings["printer.dimensions.y"];
var printerDimensionsZ = settings["printer.dimensions.z"];
+ var rasterSize = settings["doodle3d.raster.size"];
+ var rasterDiagonals = settings["doodle3d.raster.diagonals"];
var gCodeOffsetX = printerDimensionsX/2;
var gCodeOffsetY = printerDimensionsY/2;
@@ -140,6 +142,8 @@ function generate_gcode() {
}
}
+ var prevPoint = null;
+
// loop over the subpaths (the separately drawn lines)
for (var j = 0; j < paths.length; j++) { // TODO paths > subpaths
var commands = paths[j];
@@ -159,6 +163,22 @@ function generate_gcode() {
var isTraveling = !isLoop && i==0;
var doRetract = retractionEnabled && prev.distance(to) > retractionminDistance;
+ if (rasterSize > 0) {
+ to.x = (to.x / rasterSize).toFixed(0) * rasterSize;
+ to.y = (to.y / rasterSize).toFixed(0) * rasterSize;
+ }
+
+ if (prevPoint == null) prevPoint = to;
+
+ if (!rasterDiagonals) {
+ if (prevPoint.x != to.x && prevPoint.y != to.y) {
+ to.x = prevPoint.x;
+ i--;
+ }
+ }
+
+ prevPoint = to;
+
var firstPointEver = (layer == 0 && i == 0 && j == 0);
if (firstPointEver || layer > 2 && enableTraveling && isTraveling) { //always travel to first point, then disable traveling for first two layers and use settings for remainder of print
if (!firstPointEver && doRetract) gcode.push("G0 E" + (extruder - retractionamount).toFixed(3) + " F" + (retractionspeed * 60).toFixed(3)); //retract
diff --git a/www/settings.html b/www/settings.html
index b3418bd..15b700e 100644
--- a/www/settings.html
+++ b/www/settings.html
@@ -113,6 +113,8 @@
+
+