From 69c3a07f9004d4ab5e029432588ef7a69ffa7923 Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Thu, 19 Nov 2020 13:54:55 -0500 Subject: [PATCH] ensure top is cleared in roughing when no top offset and clear faces checked. only show view clear in arrange mode --- notes.md | 1 + src/kiri/main.js | 3 ++- src/mode/cam/slice.js | 6 +++++- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/notes.md b/notes.md index 2d5c884d..6b32d592 100644 --- a/notes.md +++ b/notes.md @@ -63,6 +63,7 @@ * `B` outside cutting direction in roughing mode inverted * `B` clear voids has double interior pass because wrong offset shadow used +* `B` top clearing operations should use linear, not offset, passes * `F` flat and volumetric rendering of paths * `F` z bounded slices (extension of z bottom offset feature) * `F` z planar settings visualizations diff --git a/src/kiri/main.js b/src/kiri/main.js index 737dd608..af54ca29 100644 --- a/src/kiri/main.js +++ b/src/kiri/main.js @@ -1985,7 +1985,8 @@ viewMode = mode; platform.deselect(); updateSelectedInfo(); - // updateStockVisibility(); + // disable clear in non-arrange modes + $('view-clear').style.display = mode === VIEWS.ARRANGE ? '' : 'none'; switch (mode) { case VIEWS.ARRANGE: complete = {}; diff --git a/src/mode/cam/slice.js b/src/mode/cam/slice.js index f7640e31..289dfb77 100644 --- a/src/mode/cam/slice.js +++ b/src/mode/cam/slice.js @@ -144,12 +144,16 @@ thruHoles = tshadow.map(p => p.inner || []).flat(); // create facing slices - if (procFacing) { + if (procFacing || proc.camRoughFlat) { let shadow = shadowTop.tops.clone(); let inset = POLY.offset(shadow, (roughToolDiam / 4)); let facing = POLY.offset(inset, -(roughToolDiam * proc.camRoughOver), { count: 999, flat: true }); let zdiv = ztOff / roughDown; let zstep = (zdiv % 1 > 0) ? ztOff / (Math.floor(zdiv) + 1) : roughDown; + if (proc.camRoughFlat && ztOff === 0) { + // compensate for lack of z top offset in this scenario + ztOff = zstep; + } for (let z = zMax + ztOff - zstep; z >= zMax; z -= zstep) { let slice = shadowTop.slice.clone(false); slice.z = z;