From 02ab6ed84b9402992485c8fe61442b7e5b993ea6 Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Thu, 19 Jan 2023 12:03:59 -0500 Subject: [PATCH] fix tabs + threading in contouring. adjust flat surface detection --- src/kiri-mode/cam/prepare.js | 2 +- src/kiri-mode/cam/topo.js | 19 +++++++++++++++---- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/kiri-mode/cam/prepare.js b/src/kiri-mode/cam/prepare.js index fbc20164..5a577bb5 100644 --- a/src/kiri-mode/cam/prepare.js +++ b/src/kiri-mode/cam/prepare.js @@ -163,7 +163,7 @@ function prepEach(widget, settings, print, firstPoint, update) { tool = new CAM.Tool(settings, toolID); toolType = tool.getType(); toolDiam = tool.fluteDiameter(); - toolDiamMove = toolType === 'endmill' ? toolDiam / 4 : tolerance * 2; + toolDiamMove = toolType === 'endmill' ? toolDiam : tolerance * 2; lastTool = toolID; } feedRate = feed || feedRate; diff --git a/src/kiri-mode/cam/topo.js b/src/kiri-mode/cam/topo.js index 1942453c..a46a3d9d 100644 --- a/src/kiri-mode/cam/topo.js +++ b/src/kiri-mode/cam/topo.js @@ -179,6 +179,7 @@ class Topo { contourY, clipTo, clipTab, + clipTabZ: clipTab ? clipTab.map(t => t.z) : undefined, tabHeight, newslices, leave, @@ -304,7 +305,7 @@ class Topo { const { minX, maxX, minY, maxY, boundsX, boundsY, stepsX, stepsY } = params; const { gridDelta, resolution, partOff, toolStep, contourX, contourY } = params; - const { clipTo, clipTab, tabHeight, newslices, color, leave } = params; + const { clipTo, clipTab, clipTabZ, tabHeight, newslices, color, leave } = params; let stepsTaken = 0, stepsTotal = 0; @@ -330,6 +331,7 @@ class Topo { leave, clipTo, clipTab, + clipTabZ, tabHeight, resolution, concurrent @@ -519,7 +521,7 @@ class Trace { if (lastP) { const dz = z - lastP.z; - if (lastDZ !== undefined && Math.abs(lastDZ - dz) < 0.0001) { + if (lastDZ !== undefined && Math.abs(lastDZ - dz) < 0.00001) { latent = newP; } else { if (Math.abs(dz) < flatness) { @@ -574,6 +576,15 @@ class Trace { init(params) { this.cross = params; const { minions } = kiri; + const { clipTab, clipTabZ } = params; + + // because codec does not encode arbitrary fields + // in this case, z is appended to clip tabs in topo constructor + // we pass it as a side-channel and re-consitute here + if (clipTab) + for (let i=0, l=clipTab.length; i