diff --git a/src/kiri-mode/cam/prepare.js b/src/kiri-mode/cam/prepare.js index 6b7732fc..07d72b6b 100644 --- a/src/kiri-mode/cam/prepare.js +++ b/src/kiri-mode/cam/prepare.js @@ -426,6 +426,12 @@ if (ftops.length > 1) { ftops = POLY.route(ftops, start); } + + let frags = ftops.filter(p => p.open); + ftops = ftops.filter(p => !p.open); + start = poly2polyEmit(frags, start, emitter, { mark: "emark", perm: true }); + for (let f of frags) f.level_emit = true; + ftops.forEach(top => { top.level_emit = true; let inside = level.filter(poly => poly.isInside(top)); @@ -522,7 +528,6 @@ maxz = Math.max(maxz, data.z + zadd + over); continue; } - let s1 = p1.slopeTo(p2).toUnit().normal(); let s2 = p2.slopeTo(p1).toUnit().normal(); let pa = p1.projectOnSlope(s1, off); diff --git a/src/kiri/print.js b/src/kiri/print.js index 2ab8c8a7..80439cc4 100644 --- a/src/kiri/print.js +++ b/src/kiri/print.js @@ -1228,8 +1228,10 @@ if (d2l < mindist && d2l < d2f) { poly.reverse(); found = {poly:poly, index:0, point:poly.first()}; + mindist = d2l; } else if (d2f < mindist) { found = {poly:poly, index:0, point:poly.first()}; + mindist = d2f; } continue; }