allow poly offset closer to 0 for pocket ops

This commit is contained in:
Stewart Allen 2024-12-15 15:14:59 -05:00
commit 4fc4b3da54
3 changed files with 6 additions and 5 deletions

View file

@ -345,10 +345,10 @@ function flatten(polys, to, crush) {
* @returns {Polygon[]} out
*/
function subtract(setA, setB, outA, outB, z, minArea, opt = {}) {
let min = minArea || 0.1,
let min = numOrDefault(minArea, 0.1),
out = [];
function filter(from, to = []) {
function filter(from, to = []) {
from.forEach(function(poly) {
if (poly.area() >= min) {
to.push(poly);

View file

@ -1220,6 +1220,7 @@ class OpPocket extends CamOp {
return slice;
}
function clearZ(polys, z, down) {
console.log({ clearZ: polys });
if (down) {
// adjust step down to a value <= down that
// ends on the lowest z specified
@ -1251,7 +1252,7 @@ class OpPocket extends CamOp {
if (smooth) {
shadow = POLY.setZ(POLY.offset(POLY.offset(shadow, smooth), -smooth), z);
}
POLY.subtract([ poly ], shadow, clip);
POLY.subtract([ poly ], shadow, clip, undefined, undefined, 0);
}
if (clip.length === 0) {
continue;
@ -1264,7 +1265,7 @@ class OpPocket extends CamOp {
[ expand || (-0.02), -toolOver ] :
[ -toolDiam / 2, -toolOver ];
POLY.offset(clip, offs, {
count, outs: slice.camLines = [], flat:true, z
count, outs: slice.camLines = [], flat:true, z, minArea: 0
});
} else {
// when engraving with a 0 width tip

View file

@ -281,7 +281,7 @@ CAM.slice = async function(settings, widget, onupdate, ondone) {
let tabpoly = tabs ? tabs.map(tab => tab.poly) : [];
let allpoly = POLY.union([...state.shadowTop.tops, ...tabpoly, ...state.shadowTop.slice.shadow], 0, true);
let shadowOff = maxToolDiam < 0 ? allpoly :
POLY.offset(allpoly, [minToolDiam/2,maxToolDiam/2], { count: 2, flat: true });
POLY.offset(allpoly, [minToolDiam/2,maxToolDiam/2], { count: 2, flat: true, minArea: 0 });
state.terrain.forEach(level => level.tops.appendAll(shadowOff));
widget.terrain = state.skipTerrain ? null : state.terrain;