allow poly offset closer to 0 for pocket ops
This commit is contained in:
parent
9ae2efcc72
commit
4fc4b3da54
3 changed files with 6 additions and 5 deletions
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in a new issue