From 3738750ba3b2ec79dcbc4a9c3b5b4897f763c626 Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Thu, 19 Nov 2020 21:04:45 -0500 Subject: [PATCH] set view mode on part move,rotate,scale. debug code for tab intersections --- src/geo/polygon.js | 9 ++++++++- src/kiri/main.js | 3 +++ src/mode/cam/slice.js | 18 +++++++++++++++--- 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/src/geo/polygon.js b/src/geo/polygon.js index d4b569fa..7a5d8c6e 100644 --- a/src/geo/polygon.js +++ b/src/geo/polygon.js @@ -868,6 +868,8 @@ let int = UTIL.intersect(lp1, lp2, pp1, pp2, BASE.key.SEGINT, false); if (int) { list.push(int); + // console.log('pp1.pos',pp1.pos,'to',ip1); + // console.log('pp2.pos',pp2.pos,'to',ip2); pp1.pos = ip1; pp2.pos = ip2; } @@ -907,13 +909,18 @@ let poly = newPolygon(), start = i1.p2.pos, end = i2.p1.pos; + // console.log({emitSeg: this, i1, i2, start, end}); poly.setOpen(); poly.push(i1); this.forEachPoint(function(p, pos) { poly.push(p); - if (p === i2.p1) return true; + if (p === i2.p1) { + // console.log('hit end point @', pos); + return true; + } }, true, start); poly.push(i2); + // console.log({emit: poly}); return poly; }; diff --git a/src/kiri/main.js b/src/kiri/main.js index af54ca29..46f28618 100644 --- a/src/kiri/main.js +++ b/src/kiri/main.js @@ -933,6 +933,7 @@ } function moveSelection(x, y, z, abs) { + setViewMode(VIEWS.ARRANGE); forSelectedGroups(function (w) { w.move(x, y, z, abs); }); @@ -942,6 +943,7 @@ } function scaleSelection() { + setViewMode(VIEWS.ARRANGE); let args = arguments; forSelectedGroups(function (w) { w.scale(...args); @@ -958,6 +960,7 @@ } function rotateSelection(x, y, z) { + setViewMode(VIEWS.ARRANGE); forSelectedGroups(function (w) { w.rotate(x, y, z); }); diff --git a/src/mode/cam/slice.js b/src/mode/cam/slice.js index e1261c48..a8f3055d 100644 --- a/src/mode/cam/slice.js +++ b/src/mode/cam/slice.js @@ -274,7 +274,7 @@ if (outside) { offset.appendAll(outside); if (addTabsOutline && slice.z <= zMin + tabHeight) { - offset = addCutoutTabs(offset, slice.z, roughToolDiam, tabWidth, proc.camTabsCount, proc.camTabsAngle); + offset = addCutoutTabs(offset, slice.z, roughToolDiam, tabWidth, proc.camTabsCount, proc.camTabsAngle, slice); } } } @@ -533,7 +533,7 @@ } // cut outside traces at the right points - function addCutoutTabs(polys, z, toolDiam, tabWidth, tabCount, tabAngle) { + function addCutoutTabs(polys, z, toolDiam, tabWidth, tabCount, tabAngle, slice) { // skip if no tops | traces if (polys.length === 0) return polys; @@ -553,16 +553,28 @@ if (int1 && int2) { ints.push(int1); ints.push(int2); + // slice.output().setLayer('int',0xff0000).addLine(int1, int2); } }); let segs = []; if (ints.length) { ints.push(ints.shift()); + // let cv = 0; for (let i=0; i p.z += (i*0.01)); + // slice.output().setLayer(`seg${i}`,col[cv++]).addPoly(seg); + // slice.output().setLayer(`seg${i}`).addPoly(newPolygon().centerCircle(seg.first(),1,5)); + // slice.output().setLayer(`seg${i}`).addPoly(newPolygon().centerCircle(seg.last(),1,4)); + // slice.output().setLayer(`seg${i}`).addPoly(newPolygon().centerCircle(trace.first(),2,5)); + // slice.output().setLayer(`seg${i}`).addPoly(newPolygon().centerCircle(trace.last(),2,4)); + segs.push(seg); } // check for and eliminate overlaps + if (false) for (let i=0, il=segs.length; i < il; i++) { let si = segs[i]; for (let j=i+1; j