2015-05-27 12:25:51 +02:00
|
|
|
D3D.SlicerWorker = function () {
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
this.worker = new Worker('webworker/worker.js');
|
|
|
|
|
2015-05-29 13:51:18 +02:00
|
|
|
var progressBar = document.getElementById("progress-bar");
|
|
|
|
var scope = this;
|
2015-05-27 12:25:51 +02:00
|
|
|
this.worker.addEventListener('message', function (event) {
|
2015-05-29 13:51:18 +02:00
|
|
|
|
|
|
|
switch (event.data["cmd"]) {
|
|
|
|
case "PROGRESS":
|
|
|
|
var progress = event.data["progress"];
|
|
|
|
var procent = (progress.sliceLayer + progress.dataLayer + progress.gcodeLayer) / progress.totalLayers / 3;
|
|
|
|
progressBar.style.width = procent * 100 + "%";
|
|
|
|
break;
|
|
|
|
|
|
|
|
case "GCODE":
|
|
|
|
gcode = event.data["gcode"];
|
|
|
|
break;
|
|
|
|
}
|
2015-05-27 12:25:51 +02:00
|
|
|
}, false);
|
|
|
|
}
|
|
|
|
D3D.SlicerWorker.prototype.setSettings = function (USER_SETTINGS, PRINTER_SETTINGS) {
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
this.worker.postMessage({
|
|
|
|
"cmd": "SET_SETTINGS",
|
|
|
|
"USER_SETTINGS": USER_SETTINGS,
|
|
|
|
"PRINTER_SETTINGS": PRINTER_SETTINGS
|
|
|
|
});
|
|
|
|
};
|
|
|
|
D3D.SlicerWorker.prototype.setMesh = function (mesh) {
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
if (mesh.geometry instanceof THREE.Geometry) {
|
|
|
|
var geometry = new THREE.BufferGeometry().fromGeometry(mesh.geometry);
|
|
|
|
}
|
|
|
|
else {
|
2015-05-29 10:41:44 +02:00
|
|
|
var geometry = mesh.geometry.clone();
|
|
|
|
}
|
|
|
|
|
|
|
|
var buffers = [];
|
|
|
|
|
|
|
|
for (var i = 0; i < geometry.attributesKeys.length; i ++) {
|
|
|
|
var key = geometry.attributesKeys[i];
|
|
|
|
buffers.push(geometry.attributes[key].array.buffer);
|
2015-05-27 12:25:51 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
mesh.updateMatrix();
|
|
|
|
|
|
|
|
this.worker.postMessage({
|
|
|
|
"cmd": "SET_MESH",
|
2015-05-29 10:41:44 +02:00
|
|
|
"geometry": geometry,
|
2015-05-27 12:25:51 +02:00
|
|
|
"matrix": mesh.matrix.toArray()
|
2015-05-29 10:41:44 +02:00
|
|
|
}, buffers);
|
2015-05-27 12:25:51 +02:00
|
|
|
};
|
|
|
|
D3D.SlicerWorker.prototype.slice = function () {
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
this.worker.postMessage({
|
|
|
|
"cmd": "SLICE"
|
|
|
|
});
|
|
|
|
};
|
|
|
|
D3D.SlicerWorker.prototype.close = function () {
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
this.worker.postMessage({
|
|
|
|
"cmd": "CLOSE"
|
|
|
|
});
|
|
|
|
};
|