Merge remote-tracking branch 'origin/develop' into develop

This commit is contained in:
peteruithoven 2017-07-24 15:50:44 +02:00
commit 46dd12d6ec
4 changed files with 24 additions and 16 deletions

8
.gitignore vendored
View File

@ -1,8 +1,12 @@
*.DS_Store
jspm_packages/*
jspm_packages
node_modules/*
node_modules
lib
module
bundle.js

View File

@ -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();
@ -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);
}
@ -42,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) => {
@ -63,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
}
});
});

View File

@ -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');
}

View File

@ -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) {