diff --git a/src/kiri/mode/fdm/post.js b/src/kiri/mode/fdm/post.js index 650eb3c6..44f40217 100644 --- a/src/kiri/mode/fdm/post.js +++ b/src/kiri/mode/fdm/post.js @@ -175,18 +175,18 @@ function thin_type_3(params) { let simplifyChain = false; let shortenAtNexus = false; let shortenEdgeSpur = false; - let intersectChains = false; - let maxInsetBypass = true; + let intersectChains = true; + let maxInsetBypass = false; let showNoodle = false; + let showMedLine = false; + let showInset = false; let showExtrusion = true; let showExtrudeInset = false; - let showInsetPoints = false; let showChainRawPoints = false; let showChainInterpPoints = true; let showChainIntersect = false; let showNuMedLine = false; - let showMedLine = true; let showMedPoints = false; let showMedNormals = false; let showMedRadii = false; @@ -221,16 +221,13 @@ function thin_type_3(params) { insets.push(inset); let ps = POLY.flatten(inset); POLY.setZ(inset, z); - shells.appendAll(inset); + if (showInset) { + shells.appendAll(inset); + } if (intersectChains) { break; } - // if (dtotl >= maxR * 3) { - // break; - // } inset = POLY.offset(inset, -dstep, { - // join: ClipperLib.JoinType.jtRound, - // arc: (1/dstep) * 4 minArea: 0 }); } @@ -238,8 +235,6 @@ function thin_type_3(params) { // project from first inset and find greated offset intersection if (maxInsetBypass) { - // shells.appendAll(noodle); - // return { last, gaps }; let { intersectRayLine } = base.util; let tests = insets.slice(1); let source = POLY.flatten(insets[0], []); @@ -739,12 +734,15 @@ function thin_type_3(params) { } // project inset segment normals onto closest chain - if (intersectChains) { - let { intersect } = base.util; - let { SEGINT } = base.key; - inset = POLY.flatten(inset, []); - for (let poly of inset) { - let nupoly = new Polygon(); + if (intersectChains) for (let insetp of inset) { + let { intersectRayLine } = base.util; + let parent = new Polygon(); + let inner = []; + for (let poly of insetp.flattenTo([])) { + let nupoly = poly.parent ? new Polygon() : parent; + if (poly.parent) { + inner.push(nupoly); + } poly.segment(minR).forEachSegment((p1, p2) => { let np1 = { x:(p1.x+p2.x)/2, y:(p1.y+p2.y)/2 }; let len = pointDist(p1, p2); @@ -756,8 +754,8 @@ function thin_type_3(params) { for (let i=0; i