From d60c2d46d0fc51ee43a922f231ff684b1d9885d4 Mon Sep 17 00:00:00 2001 From: casperlamboo Date: Fri, 6 May 2016 19:54:25 +0200 Subject: [PATCH] move scale up and scale down to separate function --- src/sliceActions/applyPrecision.js | 22 ++++++++++++++++++ src/sliceActions/generateInnerLines.js | 2 +- src/sliceActions/optimizePaths.js | 26 +++------------------ src/sliceActions/removePrecision.js | 32 ++++++++++++++++++++++++++ src/slicer.js | 6 +++++ 5 files changed, 64 insertions(+), 24 deletions(-) create mode 100644 src/sliceActions/applyPrecision.js create mode 100644 src/sliceActions/removePrecision.js diff --git a/src/sliceActions/applyPrecision.js b/src/sliceActions/applyPrecision.js new file mode 100644 index 0000000..506431a --- /dev/null +++ b/src/sliceActions/applyPrecision.js @@ -0,0 +1,22 @@ +import { PRECISION } from '../constants.js' + +export default function applyPrecision(shapes) { + for (let i = 0; i < shapes.length; i ++) { + const { closedShapes, openShapes } = shapes[i]; + + scaleUpShape(closedShapes); + scaleUpShape(openShapes); + } +} + +function scaleUpShape(shape) { + for (let i = 0; i < shape.length; i ++) { + const path = shape[i]; + + for (let i = 0; i < path.length; i ++) { + const point = path[i]; + + point.copy(point.divideScalar(PRECISION)); + } + } +} diff --git a/src/sliceActions/generateInnerLines.js b/src/sliceActions/generateInnerLines.js index 4979a65..bf75a7d 100644 --- a/src/sliceActions/generateInnerLines.js +++ b/src/sliceActions/generateInnerLines.js @@ -25,7 +25,7 @@ export default function generateInnerLines(slices, settings) { if (!part.shape.closed) continue; - const outerLine = part.shape.scaleDown(PRECISION).offset(-nozzleRadius, offsetOptions); + const outerLine = part.shape.offset(-nozzleRadius, offsetOptions); if (outerLine.paths.length > 0) { part.outerLine.join(outerLine); diff --git a/src/sliceActions/optimizePaths.js b/src/sliceActions/optimizePaths.js index 40e9878..e7bc71b 100644 --- a/src/sliceActions/optimizePaths.js +++ b/src/sliceActions/optimizePaths.js @@ -1,35 +1,15 @@ import THREE from 'three.js'; -import { PRECISION } from '../constants.js'; - export default function optimizePaths(slices, settings) { - console.log("opimize paths"); + console.log('opimize paths'); const start = new THREE.Vector2(0, 0); for (let layer = 0; layer < slices.length; layer ++) { const slice = slices[layer]; - // start = slice.optimizePaths(start); + const end = slice.optimizePaths(start); - for (let i = 0; i < slice.parts.length; i ++) { - const part = slice.parts[i]; - - if (part.shape.closed) { - part.outerLine.scaleDown(1 / PRECISION); - for (let i = 0; i < part.innerLines.length; i ++) { - const innerLine = part.innerLines[i]; - innerLine.scaleDown(1 / PRECISION); - } - part.fill.scaleDown(1 / PRECISION); - } - } - - if (slice.support !== undefined) { - slice.support.scaleDown(1 / PRECISION); - } - if (slice.brim !== undefined) { - slice.brim.scaleDown(1 / PRECISION); - } + start.copy(end); } } diff --git a/src/sliceActions/removePrecision.js b/src/sliceActions/removePrecision.js new file mode 100644 index 0000000..0e6a8d0 --- /dev/null +++ b/src/sliceActions/removePrecision.js @@ -0,0 +1,32 @@ +import THREE from 'three.js'; +import { PRECISION } from '../constants.js'; + +export default function removePrecision(slices) { + console.log('opimize paths'); + + const start = new THREE.Vector2(0, 0); + + for (let layer = 0; layer < slices.length; layer ++) { + const slice = slices[layer]; + + for (let i = 0; i < slice.parts.length; i ++) { + const part = slice.parts[i]; + + if (part.shape.closed) { + part.outerLine.scaleDown(1 / PRECISION); + for (let i = 0; i < part.innerLines.length; i ++) { + const innerLine = part.innerLines[i]; + innerLine.scaleDown(1 / PRECISION); + } + part.fill.scaleDown(1 / PRECISION); + } + } + + if (slice.support !== undefined) { + slice.support.scaleDown(1 / PRECISION); + } + if (slice.brim !== undefined) { + slice.brim.scaleDown(1 / PRECISION); + } + } +} diff --git a/src/slicer.js b/src/slicer.js index 6b3f303..74225c6 100644 --- a/src/slicer.js +++ b/src/slicer.js @@ -10,6 +10,8 @@ import addBrim from './sliceActions/addBrim.js'; import optimizePaths from './sliceActions/optimizePaths.js'; import shapesToSlices from './sliceActions/shapesToSlices.js'; import slicesToGCode from './sliceActions/slicesToGCode.js'; +import applyPrecision from './sliceActions/applyPrecision.js'; +import removePrecision from './sliceActions/removePrecision.js'; export default class extends EventDispatcher { constructor () { @@ -79,6 +81,8 @@ export default class extends EventDispatcher { this.progress.sliced = true; this._updateProgress(settings); + applyPrecision(shapes); + const slices = shapesToSlices(shapes, settings); this.progress.generatedSlices = true; this._updateProgress(settings); @@ -103,6 +107,8 @@ export default class extends EventDispatcher { this.progress.optimizedPaths = true; this._updateProgress(settings); + removePrecision(slices); + var gcode = slicesToGCode(slices, settings); this.progress.generatedGCode = true; this._updateProgress(settings);