From c07a0b81c2c353df1526c9d5e326e2f612611811 Mon Sep 17 00:00:00 2001 From: casperlamboo Date: Mon, 24 Jul 2017 13:01:16 +0200 Subject: [PATCH 1/5] update git ignore --- .gitignore | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 6875798..00989a1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,12 @@ *.DS_Store -jspm_packages/* +jspm_packages -node_modules/* +node_modules + +lib + +module bundle.js From 8b475d8e4b3c541d5682fd6e5c9c231ce0af3c0a Mon Sep 17 00:00:00 2001 From: casperlamboo Date: Mon, 24 Jul 2017 13:01:22 +0200 Subject: [PATCH 2/5] typo --- src/Slicer.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Slicer.js b/src/Slicer.js index 4da1f01..89f0476 100644 --- a/src/Slicer.js +++ b/src/Slicer.js @@ -4,7 +4,7 @@ import SlicerWorker from './slicerWorker.js!worker'; export function sliceMesh(settings, mesh, sync = false, onProgress) { if (typeof mesh === 'undefined' || !mesh.isMesh) { - throw new Error('Provide mesh is not intance of THREE.Mesh'); + throw new Error('Provided mesh is not intance of THREE.Mesh'); } mesh.updateMatrix(); From cb465b9eeec418845ce55b4134e73571b90ef101 Mon Sep 17 00:00:00 2001 From: casperlamboo Date: Mon, 24 Jul 2017 15:40:39 +0200 Subject: [PATCH 3/5] Throw error when provided mesh is empty @peteruithoven --- src/Slicer.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/Slicer.js b/src/Slicer.js index 89f0476..e4ed5e3 100644 --- a/src/Slicer.js +++ b/src/Slicer.js @@ -23,6 +23,10 @@ export function sliceGeometry(settings, geometry, matrix, sync = false, onProgre throw new Error('Geometry is not an instance of BufferGeometry or Geometry'); } + if (geometry.faces.length === 0) { + throw new Error('Geometry does not contain any data'); + } + if (matrix) { geometry.applyMatrix(matrix); } From 4a61164af9c9dc861e3b64cc22d43344341c16fb Mon Sep 17 00:00:00 2001 From: casperlamboo Date: Mon, 24 Jul 2017 15:40:54 +0200 Subject: [PATCH 4/5] Terminate web worker on error --- src/Slicer.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Slicer.js b/src/Slicer.js index e4ed5e3..a3d7196 100644 --- a/src/Slicer.js +++ b/src/Slicer.js @@ -46,7 +46,11 @@ function sliceAsync(settings, geometry, onProgress) { return new Promise((resolve, reject) => { // create the slicer worker const slicerWorker = new SlicerWorker(); - slicerWorker.onerror = reject; + + slicerWorker.onerror = error => { + slicerWorker.terminate(); + reject(error); + }; // listen to messages send from worker slicerWorker.addEventListener('message', (event) => { From 0ad8de8c80507c758a6de27ddd8fd5e6b9b89d81 Mon Sep 17 00:00:00 2001 From: casperlamboo Date: Mon, 24 Jul 2017 15:45:18 +0200 Subject: [PATCH 5/5] simplify code --- src/Slicer.js | 3 ++- src/sliceActions/addBrim.js | 7 +++---- src/sliceActions/optimizePaths.js | 10 +++------- 3 files changed, 8 insertions(+), 12 deletions(-) diff --git a/src/Slicer.js b/src/Slicer.js index a3d7196..d100150 100644 --- a/src/Slicer.js +++ b/src/Slicer.js @@ -71,11 +71,12 @@ function sliceAsync(settings, geometry, onProgress) { }); // send geometry and settings to worker to start the slicing progress + geometry = geometry.toJSON(); slicerWorker.postMessage({ message: 'SLICE', data: { settings, - geometry: geometry.toJSON() + geometry } }); }); diff --git a/src/sliceActions/addBrim.js b/src/sliceActions/addBrim.js index 9812598..da66540 100644 --- a/src/sliceActions/addBrim.js +++ b/src/sliceActions/addBrim.js @@ -15,11 +15,10 @@ export default function addBrim(slices, settings) { const [firstLayer] = slices; - firstLayer.brim = firstLayer.parts.reduce((brim, { shape }) => { + firstLayer.brim = firstLayer.parts.reduce((brim, { shape }) => ( brim.join(shape.offset(brimOffset, { ...offsetOptions, endType: shape.closed ? 'etClosedPolygon' : 'etOpenRound' - })); - return brim; - }, new Shape([], true)).simplify('pftNonZero'); + })) + ), new Shape([], true)).simplify('pftNonZero'); } diff --git a/src/sliceActions/optimizePaths.js b/src/sliceActions/optimizePaths.js index cc5fec5..5a478b4 100644 --- a/src/sliceActions/optimizePaths.js +++ b/src/sliceActions/optimizePaths.js @@ -21,12 +21,8 @@ export default function optimizePaths(slices, settings) { for (let i = 0; i < slice.parts.length; i ++) { const part = slice.parts[i]; - let bounds; - if (part.shape.closed) { - bounds = part.outerLine.shapeBounds(); - } else { - bounds = part.shape.shapeBounds(); - } + const shape = part.shape.closed ? part.outerLine : part.shape; + const bounds = shape.shapeBounds(); const top = bounds.top - start.y; const bottom = start.y - bounds.bottom; @@ -41,7 +37,7 @@ export default function optimizePaths(slices, settings) { } } - const part = slice.parts.splice(closestPart, 1)[0]; + const [part] = slice.parts.splice(closestPart, 1); parts.push(part); if (part.shape.closed) {