2016-03-29 00:26:58 +02:00
|
|
|
import THREE from 'three.js';
|
2016-04-23 00:24:01 +02:00
|
|
|
import { PRECISION } from '../constants.js';
|
|
|
|
|
2016-04-21 22:14:22 +02:00
|
|
|
const offsetOptions = {
|
|
|
|
jointType: 'jtSquare',
|
|
|
|
endType: 'etClosedPolygon',
|
|
|
|
miterLimit: 2.0,
|
|
|
|
roundPrecision: 0.25
|
|
|
|
};
|
2016-03-29 00:26:58 +02:00
|
|
|
|
|
|
|
export default function optimizePaths(slices, settings) {
|
|
|
|
console.log("opimize paths");
|
|
|
|
|
2016-04-23 00:24:01 +02:00
|
|
|
const brimOffset = settings.config["brimOffset"] / PRECISION;
|
2016-03-29 00:26:58 +02:00
|
|
|
|
2016-04-23 00:24:01 +02:00
|
|
|
const start = new THREE.Vector2(0, 0);
|
2016-03-29 00:26:58 +02:00
|
|
|
|
2016-04-23 00:24:01 +02:00
|
|
|
for (let layer = 0; layer < slices.length; layer ++) {
|
|
|
|
const slice = slices[layer];
|
2016-03-29 00:26:58 +02:00
|
|
|
|
|
|
|
if (layer === 0) {
|
2016-04-21 22:14:22 +02:00
|
|
|
slice.brim = slice.getOutline().offset(brimOffset, offsetOptions);
|
2016-03-29 00:26:58 +02:00
|
|
|
}
|
|
|
|
|
2016-04-21 22:14:22 +02:00
|
|
|
// start = slice.optimizePaths(start);
|
2016-03-29 00:26:58 +02:00
|
|
|
|
2016-04-23 00:24:01 +02:00
|
|
|
for (let i = 0; i < slice.parts.length; i ++) {
|
|
|
|
const part = slice.parts[i];
|
2016-03-29 00:26:58 +02:00
|
|
|
|
2016-04-21 22:14:22 +02:00
|
|
|
if (part.shape.closed) {
|
2016-04-23 00:24:01 +02:00
|
|
|
part.outerLine.scaleDown(1 / PRECISION);
|
|
|
|
for (let i = 0; i < part.innerLines.length; i ++) {
|
|
|
|
const innerLine = part.innerLines[i];
|
|
|
|
innerLine.scaleDown(1 / PRECISION);
|
2016-03-29 00:26:58 +02:00
|
|
|
}
|
2016-04-23 00:24:01 +02:00
|
|
|
part.fill.scaleDown(1 / PRECISION);
|
2016-03-29 00:26:58 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (slice.support !== undefined) {
|
2016-04-23 00:24:01 +02:00
|
|
|
slice.support.scaleDown(1 / PRECISION);
|
2016-03-29 00:26:58 +02:00
|
|
|
}
|
|
|
|
if (slice.brim !== undefined) {
|
2016-04-23 00:24:01 +02:00
|
|
|
slice.brim.scaleDown(1 / PRECISION);
|
2016-03-29 00:26:58 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|