Doodle3D-Slicer/src/sliceActions/shapesToSlices.js

41 lines
968 B
JavaScript
Raw Normal View History

2016-04-21 22:14:22 +02:00
import Shape from 'Doodle3D/clipper-js';
import Slice from '../slice.js';
2016-04-23 00:24:01 +02:00
import { CLEAN_DELTA } from '../constants.js';
export default function shapesToSlices(shapes, settings) {
2016-04-21 22:14:22 +02:00
const sliceLayers = [];
2016-04-23 00:24:01 +02:00
for (let layer = 0; layer < shapes.length; layer ++) {
let { closedShapes, openShapes } = shapes[layer];
2016-04-21 22:14:22 +02:00
closedShapes = new Shape(closedShapes, true, true)
2016-04-23 00:24:01 +02:00
.clean(CLEAN_DELTA)
2016-04-21 22:14:22 +02:00
.fixOrientation()
.removeOverlap()
.seperateShapes();
2016-04-21 22:14:22 +02:00
openShapes = new Shape(openShapes, false, true)
2016-04-23 00:24:01 +02:00
.clean(CLEAN_DELTA);
2016-04-23 00:24:01 +02:00
const slice = new Slice();
2016-04-23 00:24:01 +02:00
for (let i = 0; i < closedShapes.length; i ++) {
const closedShape = closedShapes[i];
2016-04-21 22:14:22 +02:00
slice.add(closedShape);
2016-04-21 22:14:22 +02:00
// if (openShapes.path.length > 0) {
// openShapes = openShapes.difference(closedShape);
// }
}
2016-04-23 00:24:01 +02:00
2016-04-21 22:14:22 +02:00
if (openShapes.paths.length > 0) {
slice.add(openShapes);
}
2016-04-21 22:14:22 +02:00
sliceLayers.push(slice);
}
2016-04-21 22:14:22 +02:00
return sliceLayers;
}