diff --git a/slice_test.html b/slice_test.html
index 418d42b..2160d7f 100644
--- a/slice_test.html
+++ b/slice_test.html
@@ -44,7 +44,6 @@ var printer = new D3D.Printer({
"printer.heatup.enabled": true,
"printer.heatup.temperature": 180,
"printer.retraction.amount": 3,
- "printer.retraction.enabled": false,
"printer.retraction.minDistance": 5,
"printer.retraction.speed": 50,
"printer.screenToMillimeterScale": 0.3, //????
@@ -54,6 +53,7 @@ var printer = new D3D.Printer({
"printer.type": "ultimaker",
"printer.useSubLayers": true, //wat is dit?
+ "printer.retraction.enabled": true,
"printer.speed": 50,
"printer.wallThickness": 0.4, //nozzle
"printer.layerHeight": 0.3,
diff --git a/src/box.js b/src/box.js
index 520db93..6a5751e 100644
--- a/src/box.js
+++ b/src/box.js
@@ -16,9 +16,8 @@ D3D.Box = function (localIp) {
"use strict";
var self = this;
- this.batchSize = 1024 * 10; //10kb
- this.maxBufferSize = 1024 * 1024 * 2; //2mb
- this.bytesSend = 0;
+ this.batchSize = 512;
+ this.maxBufferedLines = 4096;
this.localIp = localIp;
this.api = "http://" + localIp + "/d3dapi/";
@@ -61,7 +60,7 @@ D3D.Box.prototype.update = function () {
//Bij error wordt gelijk zelfde data opnieuw gestuurd
//Als DoodleBox ontkoppeld wordt komt er een error in de loop waardoor pagina breekt en ververst moet worden
- if (this.printBatches.length > 0 && (this.status["buffered_lines"]*30 + this.batchSize) <= this.maxBufferSize) {
+ if (this.printBatches.length > 0 && (this.status["buffered_lines"] + this.batchSize) <= this.maxBufferedLines) {
//if (this.printBatches.length > 0 ) {
this.printBatch();
}
@@ -89,9 +88,12 @@ D3D.Box.prototype.print = function (gcode) {
this.currentBatch = 0;
+ //clone gcode to remove array links
+ gcode = gcode.clone();
+
//gcode split in batches
- for (var i = 0; i < gcode.length; i += this.batchSize) {
- var gcodeBatch = gcode.substring(i, Math.min(i + this.batchSize, gcode.length));
+ while (gcode.length > 0) {
+ var gcodeBatch = gcode.splice(0, Math.min(this.batchSize, gcode.length));
this.printBatches.push(gcodeBatch);
}
@@ -106,7 +108,7 @@ D3D.Box.prototype.printBatch = function () {
this.setPrinterPrint({
"start": ((this.currentBatch === 0) ? true : false),
"first": ((this.currentBatch === 0) ? true : false),
- "gcode": gcode
+ "gcode": gcode.join("\n")
}, function (data) {
console.log("batch sent: " + self.currentBatch, data);
diff --git a/src/printer.js b/src/printer.js
index 98e3885..a3bdfd1 100644
--- a/src/printer.js
+++ b/src/printer.js
@@ -29,7 +29,7 @@ D3D.Printer.prototype.getStartCode = function () {
var gcode = this.config["printer.startcode"];
gcode = this.subsituteVariables(gcode);
- return gcode;
+ return gcode.split("\n");
};
D3D.Printer.prototype.getEndCode = function () {
"use strict";
@@ -37,7 +37,7 @@ D3D.Printer.prototype.getEndCode = function () {
var gcode = this.config["printer.endcode"];
gcode = this.subsituteVariables(gcode);
- return gcode;
+ return gcode.split("\n");
};
D3D.Printer.prototype.subsituteVariables = function (gcode) {
"use strict";
diff --git a/src/slicer.js b/src/slicer.js
index 5dce187..343700c 100644
--- a/src/slicer.js
+++ b/src/slicer.js
@@ -431,8 +431,8 @@ D3D.Slicer.prototype.dataToGcode = function (data, printer) {
}
}
else {
- var a = new THREE.Vector2().set(point.X, point.Y);
- var b = new THREE.Vector2().set(previousPoint.X, previousPoint.Y);
+ var a = new THREE.Vector2(point.X, point.Y);
+ var b = new THREE.Vector2(previousPoint.X, previousPoint.Y);
var lineLength = a.distanceTo(b);
extruder += lineLength * wallThickness * layerHeight / filamentSurfaceArea * flowRate;
@@ -452,7 +452,7 @@ D3D.Slicer.prototype.dataToGcode = function (data, printer) {
return gcode;
}
- var gcode = printer.getStartCode().split("\n");
+ var gcode = printer.getStartCode();
var extruder = 0.0;
var speed = firstLayerSlow ? (bottomSpeed*60).toFixed(3) : (normalSpeed*60).toFixed(3);
@@ -480,7 +480,9 @@ D3D.Slicer.prototype.dataToGcode = function (data, printer) {
}
}
- return gcode.join("\n") + "\n" + printer.getEndCode();
+ gcode = gcode.concat(printer.getEndCode());
+
+ return gcode;
};
//only for debug purposes
D3D.Slicer.prototype.drawPaths = function (printer, min, max) {
diff --git a/src/utils.js b/src/utils.js
index d4bc3bf..74dae39 100644
--- a/src/utils.js
+++ b/src/utils.js
@@ -68,4 +68,15 @@ function downloadFile (file, data) {
button.download = file;
button.href = window.URL.createObjectURL(blob);
button.click();
+}
+
+Array.prototype.clone = function () {
+ "use strict";
+ var array = [];
+
+ for (var i = 0; i < this.length; i ++) {
+ array[i] = this[i];
+ }
+
+ return array;
}
\ No newline at end of file