From c6a9d5adb828f399ac90612476633fc0c05c6992 Mon Sep 17 00:00:00 2001 From: casperlamboo Date: Fri, 19 Aug 2016 14:09:51 +0200 Subject: [PATCH] reorganize folders and make Slicer.slice promise --- example/app.js | 3 +- src/Slicer.js | 44 +++-------------------- src/sliceActions/generateInfills.js | 2 +- src/sliceActions/generateSupport.js | 2 +- src/{ => sliceActions}/getFillTemplate.js | 0 src/sliceActions/index.js | 39 ++++++++++++++++++++ 6 files changed, 46 insertions(+), 44 deletions(-) rename src/{ => sliceActions}/getFillTemplate.js (100%) create mode 100644 src/sliceActions/index.js diff --git a/example/app.js b/example/app.js index 4dfebd0..1030820 100644 --- a/example/app.js +++ b/example/app.js @@ -11,7 +11,6 @@ const geometry = new THREE.TorusGeometry(20, 10, 30, 30); const slicer = new SLICER.Slicer(); slicer.setGeometry(geometry); -slicer.addEventListener('finish', ({ gcode }) => { +const gcode = slicer.slice(settings).then(gcode => { document.getElementById('gcode').innerHTML = gcode.replace(/(?:\r\n|\r|\n)/g, '
'); }); -slicer.slice(settings); diff --git a/src/Slicer.js b/src/Slicer.js index 9ccd5f8..04686c2 100644 --- a/src/Slicer.js +++ b/src/Slicer.js @@ -1,19 +1,7 @@ import THREE from 'three.js'; -import EventDispatcher from 'EventDispatcher'; -import calculateLayersIntersections from './sliceActions/calculateLayersIntersections.js'; -import createLines from './sliceActions/createLines.js'; -import generateInfills from './sliceActions/generateInfills.js'; -import generateInnerLines from './sliceActions/generateInnerLines.js'; -import generateSupport from './sliceActions/generateSupport.js'; -import intersectionsToShapes from './sliceActions/intersectionsToShapes.js'; -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'; +import slice from './sliceActions/index.js'; -export default class extends EventDispatcher { +export default class { setMesh(mesh) { mesh.updateMatrix(); @@ -41,31 +29,7 @@ export default class extends EventDispatcher { return this; } - slice(settings) { - // get unique lines from geometry; - const lines = createLines(this.geometry, settings); - - const { - layerIntersectionIndexes, - layerIntersectionPoints - } = calculateLayersIntersections(lines, settings); - - const shapes = intersectionsToShapes(layerIntersectionIndexes, layerIntersectionPoints, lines, settings); - - applyPrecision(shapes); - - const slices = shapesToSlices(shapes, settings); - - generateInnerLines(slices, settings); - generateInfills(slices, settings); - generateSupport(slices, settings); - addBrim(slices, settings); - optimizePaths(slices, settings); - removePrecision(slices); - - const gcode = slicesToGCode(slices, settings); - - this.dispatchEvent({ type: 'finish', gcode }); - return gcode; + async slice(settings) { + return slice(this.geometry, settings); } } diff --git a/src/sliceActions/generateInfills.js b/src/sliceActions/generateInfills.js index e6bb3fd..b9e7925 100644 --- a/src/sliceActions/generateInfills.js +++ b/src/sliceActions/generateInfills.js @@ -1,5 +1,5 @@ import { PRECISION } from '../constants.js' -import getFillTemplate from '../getFillTemplate.js'; +import getFillTemplate from './getFillTemplate.js'; import Shape from 'Doodle3D/clipper-js'; export default function generateInfills(slices, settings) { diff --git a/src/sliceActions/generateSupport.js b/src/sliceActions/generateSupport.js index 17ca7b3..dcb48dd 100644 --- a/src/sliceActions/generateSupport.js +++ b/src/sliceActions/generateSupport.js @@ -1,4 +1,4 @@ -import getFillTemplate from '../getFillTemplate.js'; +import getFillTemplate from './getFillTemplate.js'; import Shape from 'Doodle3D/clipper-js'; import { PRECISION } from '../constants.js'; diff --git a/src/getFillTemplate.js b/src/sliceActions/getFillTemplate.js similarity index 100% rename from src/getFillTemplate.js rename to src/sliceActions/getFillTemplate.js diff --git a/src/sliceActions/index.js b/src/sliceActions/index.js new file mode 100644 index 0000000..28d4da4 --- /dev/null +++ b/src/sliceActions/index.js @@ -0,0 +1,39 @@ +import calculateLayersIntersections from './calculateLayersIntersections.js'; +import createLines from './createLines.js'; +import generateInfills from './generateInfills.js'; +import generateInnerLines from './generateInnerLines.js'; +import generateSupport from './generateSupport.js'; +import intersectionsToShapes from './intersectionsToShapes.js'; +import addBrim from './addBrim.js'; +import optimizePaths from './optimizePaths.js'; +import shapesToSlices from './shapesToSlices.js'; +import slicesToGCode from './slicesToGCode.js'; +import applyPrecision from './applyPrecision.js'; +import removePrecision from './removePrecision.js'; + +export default function(geometry, settings) { + // get unique lines from geometry; + const lines = createLines(geometry, settings); + + const { + layerIntersectionIndexes, + layerIntersectionPoints + } = calculateLayersIntersections(lines, settings); + + const shapes = intersectionsToShapes(layerIntersectionIndexes, layerIntersectionPoints, lines, settings); + + applyPrecision(shapes); + + const slices = shapesToSlices(shapes, settings); + + generateInnerLines(slices, settings); + generateInfills(slices, settings); + generateSupport(slices, settings); + addBrim(slices, settings); + optimizePaths(slices, settings); + removePrecision(slices); + + const gcode = slicesToGCode(slices, settings); + + return gcode; +}