From 26f13eb998b8569c78326ef59dc433db55ef5045 Mon Sep 17 00:00:00 2001 From: casperlamboo Date: Sun, 17 May 2015 19:58:44 +0200 Subject: [PATCH] changest converting (x, y z) to (z, x) instead of (x, z) see https://github.com/Doodle3D/Doodle3D-Slicer/issues/2 --- library/clipper.js | 18 ++++++++-------- models/d20.stl | Bin 0 -> 141884 bytes models/pikachu.stl | Bin 0 -> 20684 bytes slice_test.html | 52 +++++++++------------------------------------ src/slicer.js | 30 +++++++++++--------------- 5 files changed, 31 insertions(+), 69 deletions(-) create mode 100644 models/d20.stl create mode 100644 models/pikachu.stl diff --git a/library/clipper.js b/library/clipper.js index eb844d7..b0420e9 100755 --- a/library/clipper.js +++ b/library/clipper.js @@ -2876,8 +2876,8 @@ }; ClipperLib.ClipperBase.prototype.AddPaths = function (ppg, polyType, closed) { - // console.warn("-------------------------------------------"); - // console.warn(JSON.stringify(ppg)); + // console.log("-------------------------------------------"); + // console.log(JSON.stringify(ppg)); var result = false; for (var i = 0, ilen = ppg.length; i < ilen; ++i) if (this.AddPath(ppg[i], polyType, closed)) @@ -3100,7 +3100,7 @@ if (this.m_ExecuteLocked) return false; if (this.m_HasOpenPaths) - //ClipperLib.Error("Error: PolyTree struct is need for open path clipping."); + ClipperLib.Error("Error: PolyTree struct is need for open path clipping."); this.m_ExecuteLocked = true; ClipperLib.Clear(solution); this.m_SubjFillType = subjFillType; @@ -3185,7 +3185,7 @@ if (this.m_Scanbeam === null) break; var topY = this.PopScanbeam(); - //console.warn("botY:" + botY + ", topY:" + topY); + //console.log("botY:" + botY + ", topY:" + topY); if (!this.ProcessIntersections(botY, topY)) return false; this.ProcessEdgesAtTopOfScanbeam(topY); @@ -4747,7 +4747,7 @@ return; //prepare for sorting ... var e = this.m_ActiveEdges; - //console.warn(JSON.stringify(JSON.decycle( e ))); + //console.log(JSON.stringify(JSON.decycle( e ))); this.m_SortedEdges = e; while (e !== null) { @@ -4766,13 +4766,13 @@ { var eNext = e.NextInSEL; var pt = new ClipperLib.IntPoint(); - //console.warn("e.Curr.X: " + e.Curr.X + " eNext.Curr.X" + eNext.Curr.X); + //console.log("e.Curr.X: " + e.Curr.X + " eNext.Curr.X" + eNext.Curr.X); if (e.Curr.X > eNext.Curr.X) { if (!this.IntersectPoint(e, eNext, pt) && e.Curr.X > eNext.Curr.X + 1) { - //console.warn("e.Curr.X: "+JSON.stringify(JSON.decycle( e.Curr.X ))); - //console.warn("eNext.Curr.X+1: "+JSON.stringify(JSON.decycle( eNext.Curr.X+1))); + //console.log("e.Curr.X: "+JSON.stringify(JSON.decycle( e.Curr.X ))); + //console.log("eNext.Curr.X+1: "+JSON.stringify(JSON.decycle( eNext.Curr.X+1))); ClipperLib.Error("Intersection error"); } if (pt.Y > botY) @@ -6469,7 +6469,7 @@ if (solution.length > 0) solution.splice(0, 1); } - //console.warn(JSON.stringify(solution)); + //console.log(JSON.stringify(solution)); } else // function (polytree, delta) { diff --git a/models/d20.stl b/models/d20.stl new file mode 100644 index 0000000000000000000000000000000000000000..2546bd940b6e8b6b8e2fac54874ee6efcd67a4f7 GIT binary patch literal 141884 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 literal 0 HcmV?d00001 diff --git a/slice_test.html b/slice_test.html index 6c540b9..8f66ec4 100644 --- a/slice_test.html +++ b/slice_test.html @@ -30,7 +30,6 @@ canvas {border: 1px solid black;} //geimplimenteerd worden in de doodlebox? var printerConfig = { "printer.baudrate": "115200", //wat is dit? - "printer.bed.temperature": 70, "printer.bottomFlowRate": 1.0, "printer.bottomLayerSpeed": 35, "printer.dimensions.x": 200, @@ -69,7 +68,7 @@ var printerConfig = { var printer = new D3D.Printer(printerConfig); var localIp = location.hash.substring(1); -var doodleBox = new D3D.Box(localIp); +//var doodleBox = new D3D.Box(localIp); //var printer = doodleBox.printer; var scene = new THREE.Scene(); @@ -79,47 +78,20 @@ renderer.setClearColor(0xffffff, 1); var camera = new THREE.PerspectiveCamera(75, renderer.domElement.width/renderer.domElement.height, 1, 10000); +var light = new THREE.AmbientLight(0x404040); +scene.add(light ); + +var directionalLight = new THREE.DirectionalLight(0xffffff, 0.5); +directionalLight.position.set(0, 1, 1); +scene.add(directionalLight); + applyMouseControls(renderer, camera, new THREE.Vector3(100, 0, 100), 1000); -var geometry = (function () { - "use strict"; - - var circle = new THREE.Shape(); - circle.absarc(0, 0, 100, 0, Math.PI*2, false); - - var hole = new THREE.Path(); - hole.absarc(0, 0, 15, 0, Math.PI*2, true ); - - circle.holes.push(hole); - - var matrix = new THREE.Matrix4(); - matrix.makeRotationX(Math.PI*1.5); - - var geometry = new THREE.ExtrudeGeometry(circle, { - amount: 3, - bevelEnabled: false, - steps: 1 - }); - geometry.applyMatrix(matrix); - - return geometry; -})(); - -var material = new THREE.MeshBasicMaterial({color: 0x000000, wireframe: true}); -var geometry = new THREE.TorusGeometry(20, 10, 30, 30); -var geometry = new THREE.BoxGeometry(10, 10, 10, 1, 1, 1); -//var geometry = new THREE.SphereGeometry(10, 10, 10); -var mesh = new THREE.Mesh(geometry, material); -mesh.position.x = 100; -mesh.position.z = 100; -//scene.add(mesh); - var loader = new THREE.STLLoader(); loader.load("models/stanford_bunny.stl", function (geometry) { //var geometry = new THREE.BoxGeometry(10, 10, 10, 1, 1, 1); //var geometry = new THREE.SphereGeometry(10, 10, 10); //var geometry = new THREE.TorusGeometry(20, 10, 30, 30); - /* var geometry = (function () { "use strict"; @@ -146,6 +118,7 @@ loader.load("models/stanford_bunny.stl", function (geometry) { })(); */ + var material = new THREE.MeshPhongMaterial({color: 0x00ff00}); var mesh = new THREE.Mesh(geometry, material); mesh.rotation.x = -Math.PI/2; @@ -154,11 +127,6 @@ loader.load("models/stanford_bunny.stl", function (geometry) { mesh.position.z = 100; //mesh.position.y = -2; - ///* - //mesh.rotation.x = -Math.PI/2; - //mesh is lifted a little bit... - //mesh.position.y = 26.5; - //*/ scene.add(mesh); var slicer = new D3D.Slicer().setMesh(mesh); @@ -166,7 +134,7 @@ loader.load("models/stanford_bunny.stl", function (geometry) { var canvas = document.getElementById("canvas"); var context = canvas.getContext("2d"); - var img = slicer.drawPaths(printer, 7, 8); + var img = slicer.drawPaths(printer, 0, 1); context.drawImage(img, 0, 0); gcode = slicer.getGcode(printer); diff --git a/src/slicer.js b/src/slicer.js index 4949f5a..d82ee9c 100644 --- a/src/slicer.js +++ b/src/slicer.js @@ -14,8 +14,6 @@ D3D.Slicer = function () { "use strict"; - - this.lines = []; }; D3D.Slicer.prototype.setMesh = function (mesh) { "use strict"; @@ -44,7 +42,8 @@ D3D.Slicer.prototype.setMesh = function (mesh) { mesh.updateMatrix(); geometry.applyMatrix(mesh.matrix); geometry.computeFaceNormals(); - + geometry.computeBoundingBox(); + this.geometry = geometry; //get unique lines from geometry; @@ -62,7 +61,7 @@ D3D.Slicer.prototype.createLines = function () { function addLine (a, b) { //think lookup can only be b_a, a_b is only possible when face is flipped - var index = lineLookup[a + "_" + b] || lineLookup[b + "_" + a]; + var index = lineLookup[b + "_" + a] || lineLookup[a + "_" + b]; if (index === undefined) { index = self.lines.length; @@ -82,8 +81,8 @@ D3D.Slicer.prototype.createLines = function () { for (var i = 0; i < this.geometry.faces.length; i ++) { var face = this.geometry.faces[i]; - //if (face.normal.y !== 1 && face.normal.y !== -1) { - var normal = new THREE.Vector2().set(face.normal.x, face.normal.z).normalize(); + if (face.normal.y !== 1 && face.normal.y !== -1) { + var normal = new THREE.Vector2().set(face.normal.z, face.normal.x).normalize(); //check for only adding unique lines //returns index of said line @@ -99,7 +98,7 @@ D3D.Slicer.prototype.createLines = function () { this.lines[a].normals.push(normal); this.lines[b].normals.push(normal); this.lines[c].normals.push(normal); - //} + } } }; D3D.Slicer.prototype.slice = function (height, step) { @@ -126,6 +125,7 @@ D3D.Slicer.prototype.slice = function (height, step) { var slices = []; for (var layer = 1; layer < layersIntersections.length-1; layer ++) { + //for (var layer = 0; layer < layersIntersections.length; layer ++) { var layerIntersections = layersIntersections[layer]; var y = layer*step; @@ -138,11 +138,11 @@ D3D.Slicer.prototype.slice = function (height, step) { var x = line.end.x * alpha + line.start.x * (1 - alpha); var z = line.end.z * alpha + line.start.z * (1 - alpha); - intersections[index] = new THREE.Vector2(x, z); + intersections[index] = new THREE.Vector2(z, x); } var done = []; - var slice = new D3D.Paths([], true); + var slice = []; for (var i = 0; i < layerIntersections.length; i ++) { var index = layerIntersections[i]; @@ -327,6 +327,7 @@ D3D.Slicer.prototype.slicesToData = function (slices, printer) { else { fill = fill.optimizePath(outerLayer.lastPoint()); } + if (fill.length > 0) { start = fill.lastPoint(); } @@ -353,12 +354,12 @@ D3D.Slicer.prototype.getFillTemplate = function (bounds, size, even, uneven) { var paths = new D3D.Paths([], false); if (even) { - for (var length = Math.floor(bounds.left); length <= Math.ceil(bounds.right); length += size) { + for (var length = Math.floor(bounds.left/size)*size; length <= Math.ceil(bounds.right/size)*size; length += size) { paths.push([{X: length, Y: bounds.top}, {X: length, Y: bounds.bottom}]); } } if (uneven) { - for (var length = Math.floor(bounds.top); length <= Math.floor(bounds.bottom); length += size) { + for (var length = Math.floor(bounds.top/size)*size; length <= Math.floor(bounds.bottom/size)*size; length += size) { paths.push([{X: bounds.left, Y: length}, {X: bounds.right, Y: length}]); } } @@ -525,13 +526,6 @@ D3D.Slicer.prototype.getGcode = function (printer) { console.log("Data: " + (end - start) + "ms"); - //return data; - - //TODO - //make the path more optimized for 3d printers - //make the printer follow the shortest path from line to line - //see https://github.com/Ultimaker/CuraEngine#gcode-generation - var start = new Date().getTime(); var gcode = this.dataToGcode(data, printer); var end = new Date().getTime();