diff --git a/src/kiri/main.js b/src/kiri/main.js index 8a5decdd..b81ab3e7 100644 --- a/src/kiri/main.js +++ b/src/kiri/main.js @@ -978,8 +978,8 @@ if (settings.device.bedBelt && WIDGETS[0].rotinfo) { let ri = WIDGETS[0].rotinfo; ri.dy = ri.dz = 0; - ri.dy = settings.device.bedDepth / 2 - ri.ypos; - stack.obj.rotate(WIDGETS[0].rotinfo); + // ri.dy = settings.device.bedDepth / 2 - ri.ypos; + // stack.obj.rotate(WIDGETS[0].rotinfo); } segtimes[`${segNumber}_draw`] = Date.now() - startTime; } diff --git a/src/mode/fdm/export.js b/src/mode/fdm/export.js index 68c0999e..6939a814 100644 --- a/src/mode/fdm/export.js +++ b/src/mode/fdm/export.js @@ -22,7 +22,7 @@ gcodeLayer = device.gcodeLayer, gcodeTrack = device.gcodeTrack, tool = 0, - isBelt = device.bedBelt, + isBelt = false && device.bedBelt, bedType = isBelt ? "belt" : "fixed", extruder = extruders[tool], offset_x = extruder.extOffsetX, @@ -199,11 +199,14 @@ } let epos = isBelt ? { x: pos.x, y: pos.y, z: pos.z } : pos; if (isBelt) { - let rpos = new THREE.Vector3(pos.x, pos.y, pos.z); - rpos.applyAxisAngle( taxis, angle ); - epos.x = rpos.x; - epos.y = rpos.z * icos; - epos.z = rpos.y + (bcos * rpos.z); + // let rpos = new THREE.Vector3(pos.x, pos.y, pos.z); + // rpos.applyAxisAngle( taxis, angle ); + // epos.x = rpos.x; + // epos.y = rpos.z * icos; + // epos.z = rpos.y + (bcos * rpos.z); + epos.x = pos.x; + epos.z = pos.z * icos; + epos.y = pos.y + epos.z * bcos; } if (emit.x) o.append(" X").append(epos.x.toFixed(decimals)); if (emit.y) o.append(" Y").append(epos.y.toFixed(decimals)); diff --git a/src/mode/fdm/prepare.js b/src/mode/fdm/prepare.js index 175df0f3..49facc85 100644 --- a/src/mode/fdm/prepare.js +++ b/src/mode/fdm/prepare.js @@ -45,7 +45,8 @@ print = self.worker.print = KIRI.newPrint(settings, widgets), isThin = settings.controller.lineType === "line", isFlat = settings.controller.lineType === "flat", - isBelt = device.bedBelt; + isBelt = device.bedBelt, + beltYoff = device.bedDepth / 2; // compute bounds if missing if (!bounds) { @@ -297,11 +298,13 @@ let widget = mesh.widget; let mslices = widget.slices; if (mslices && mslices[layer]) { - let offset = widget.track.pos || mesh.position || center; + let offset = mesh.position || center; if (isBelt) { - offset = Object.clone(offset); + offset = Object.clone(center); // widget.track.pos + // offset = Object.clone(offset); + let ycomp = widget.track.pos.y - beltYoff; offset.y = widget.rotinfo.dz; - offset.z = widget.rotinfo.dy; + // offset.z = widget.rotinfo.dy; } slices.push({ slice: mslices[layer], @@ -407,6 +410,27 @@ print.output = output; + // if belt, adjust z and y to baselines + if (isBelt) { + let bcos = Math.cos(Math.PI/4); + let icos = 1/bcos; + let miny = Infinity, minz = Infinity; + for (let layer of output) { + for (let rec of layer) { + rec.point.z = rec.point.z * icos; + rec.point.y = rec.point.y + rec.point.z * bcos; + miny = Math.min(miny, rec.point.y); + minz = Math.min(minz, rec.point.y); + } + } + for (let layer of output) { + for (let rec of layer) { + rec.point.y -= minz; + rec.point.z -= miny; + } + } + } + // render if not explicitly disabled if (render) { print.render = FDM.prepareRender(output, (progress, layer) => { @@ -414,24 +438,6 @@ }, { tools: device.extruders, thin: isThin, flat: isFlat, fdm: true }); } - // if belt, adjust z and y to baselines - if (isBelt) { - let miny = Infinity, minz = Infinity; - for (let layer of output) { - for (let rec of layer) { - miny = Math.min(miny, rec.point.y); - minz = Math.min(minz, rec.point.y); - } - } - console.log({miny, minz}); - // for (let layer of output) { - // for (let rec of layer) { - // rec.point.y -= minz; - // rec.point.z -= miny; - // } - // } - } - return print.render; };