From a79308dc8f0d0d09ae6ea10f042c2f4a52bfa3f4 Mon Sep 17 00:00:00 2001 From: casperlamboo Date: Thu, 20 Jul 2017 00:05:50 +0200 Subject: [PATCH 1/3] better error handling --- src/Slicer.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Slicer.js b/src/Slicer.js index c80959b..fba0910 100644 --- a/src/Slicer.js +++ b/src/Slicer.js @@ -26,10 +26,14 @@ export default class { return this; } sliceSync(settings, onProgress) { + if (typeof this.geometry === 'undefined') { + throw new Error('Geometry is not set, use Slicer.setGeometry or Slicer.setMesh first'); + } + return slice(this.geometry, settings, onProgress); } slice(settings, onProgress) { - if (!this.geometry) { + if (typeof this.geometry === 'undefined') { throw new Error('Geometry is not set, use Slicer.setGeometry or Slicer.setMesh first'); } From 0564f3e7bc6dd4de12206f4fb906c32b9255bd50 Mon Sep 17 00:00:00 2001 From: casperlamboo Date: Thu, 20 Jul 2017 00:06:19 +0200 Subject: [PATCH 2/3] fix onProgress handling in slice function --- src/Slicer.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Slicer.js b/src/Slicer.js index fba0910..c4d9d34 100644 --- a/src/Slicer.js +++ b/src/Slicer.js @@ -52,7 +52,9 @@ export default class { break; } case 'PROGRESS': { - onProgress(data); + if (typeof onProgress !== 'undefined') { + onProgress(data); + } break; } } From ed05c6fda939de4cc55b28a94f7f59f10f2eda21 Mon Sep 17 00:00:00 2001 From: casperlamboo Date: Thu, 20 Jul 2017 00:10:29 +0200 Subject: [PATCH 3/3] update save example --- example/save.js | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/example/save.js b/example/save.js index 9524c6c..1270eea 100644 --- a/example/save.js +++ b/example/save.js @@ -1,6 +1,6 @@ import * as THREE from 'three'; import { defaultSettings, Slicer } from 'src/index.js'; -import { saveAs } from 'file-saver'; +import fileSaver from 'file-saver'; const settings = { ...defaultSettings.base, @@ -12,16 +12,15 @@ const settings = { const jsonLoader = new THREE.JSONLoader(); jsonLoader.load('models/airplane.json', async geometry => { geometry.applyMatrix(new THREE.Matrix4().makeRotationX(Math.PI / -2)); - geometry.applyMatrix(new THREE.Matrix4().setPosition(new THREE.Vector3(50, -0.1, 50))); + geometry.applyMatrix(new THREE.Matrix4().setPosition(new THREE.Vector3(50, -0.0, 50))); geometry.computeFaceNormals(); const slicer = new Slicer().setGeometry(geometry); - const gcode = await slicer.slice(settings) - .progress(({ progress: { done, total, action } }) => { - const percentage = `${(done / total * 100).toFixed()}%` - document.write(`

${action}, ${percentage}

`); - }); + const gcode = await slicer.slice(settings, ({ progress: { done, total, action } }) => { + const percentage = `${(done / total * 100).toFixed()}%` + document.write(`

${action}, ${percentage}

`); + }); const file = new File([gcode], 'gcode.gcode', { type: 'text/plain' }); - saveAs(file); + fileSaver.saveAs(file); });