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