From 079a8ad37d8766b1f63be9f0d3b0665fd3140218 Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Sat, 28 Nov 2020 19:20:21 -0500 Subject: [PATCH] add outline outside-only option for doing cutouts --- src/kiri/conf.js | 1 + src/kiri/init.js | 3 ++- src/mode/cam/slice.js | 9 ++++++++- web/kiri/lang/en.js | 2 ++ 4 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/kiri/conf.js b/src/kiri/conf.js index 9acd6f3c..eaf3385f 100644 --- a/src/kiri/conf.js +++ b/src/kiri/conf.js @@ -424,6 +424,7 @@ camOutlineSpeed: 800, camOutlinePlunge: 250, camOutlineWide: false, + camOutlineOut: false, camOutlineIn: false, camOutlineOn: false, camContourTool: 1000, diff --git a/src/kiri/init.js b/src/kiri/init.js index f19d2567..4049f59a 100644 --- a/src/kiri/init.js +++ b/src/kiri/init.js @@ -1580,8 +1580,9 @@ camOutlineDown: UC.newInput(LANG.cc_sdwn_s, {title:LANG.cc_sdwn_l, convert:UC.toFloat, modes:CAM, units:true}), camOutlineSpeed: UC.newInput(LANG.cc_feed_s, {title:LANG.cc_feed_l, convert:UC.toInt, modes:CAM, units:true}), camOutlinePlunge: UC.newInput(LANG.cc_plng_s, {title:LANG.cc_plng_l, convert:UC.toInt, modes:CAM, units:true}), + camOutlineIn: UC.newBoolean(LANG.co_olin_s, onBooleanClick, {title:LANG.co_olin_l, modes:CAM, show:() => { return !UI.camOutlineOut.checked }}), + camOutlineOut: UC.newBoolean(LANG.co_olot_s, onBooleanClick, {title:LANG.co_olot_l, modes:CAM, show:() => { return !UI.camOutlineIn.checked }}), camOutlineWide: UC.newBoolean(LANG.co_wide_s, onBooleanClick, {title:LANG.co_wide_l, modes:CAM, show:() => { return !UI.camOutlineIn.checked }}), - camOutlineIn: UC.newBoolean(LANG.co_olin_s, onBooleanClick, {title:LANG.co_olin_l, modes:CAM}), camOutlineSep: UC.newBlank({class:"pop-sep"}), camOutlineOn: UC.newBoolean(LANG.co_olen_s, onBooleanClick, {title:LANG.co_olen_l, modes:CAM}), camContour: UC.newGroup(LANG.cn_menu, null, {modes:CAM, marker:true}), diff --git a/src/mode/cam/slice.js b/src/mode/cam/slice.js index 6638a6be..4e408111 100644 --- a/src/mode/cam/slice.js +++ b/src/mode/cam/slice.js @@ -35,9 +35,10 @@ procFacing = proc.camRoughOn && proc.camZTopOffset && hasStock, procRough = proc.camRoughOn && proc.camRoughDown, procRoughIn = proc.camRoughIn, + procOutlineWide = proc.camOutlineWide, + procOutlineOut = proc.camOutlineOut, procOutlineIn = proc.camOutlineIn, procOutlineOn = proc.camOutlineOn, - procOutlineWide = proc.camOutlineWide, procOutline = procOutlineOn && proc.camOutlineDown, procContourX = proc.camContourXOn && proc.camOutlinePlunge, procContourY = proc.camContourYOn && proc.camOutlinePlunge, @@ -404,6 +405,12 @@ slices.forEach(slice => { let tops = slice.shadow; + + // outside only (use tshadow for entire cut) + if (procOutlineOut) { + tops = tshadow; + } + let offset = POLY.expand(tops, outlineToolDiam / 2, slice.z); if (!(offset && offset.length)) { return; diff --git a/web/kiri/lang/en.js b/web/kiri/lang/en.js index 38a97f50..ad25761e 100644 --- a/web/kiri/lang/en.js +++ b/web/kiri/lang/en.js @@ -309,6 +309,8 @@ kiri.lang['en-us'] = { co_wide_l: "widen outside cutout paths\nfor deep cuts in hard material", co_olin_s: "inside only", co_olin_l: "limit cutting to\ninside part boundaries", + co_olot_s: "outside only", + co_olot_l: "limit cutting to\exterior part boundaries\nwhich can be thought of\nas the shadow outline", co_olen_s: "enable", co_olen_l: "enabled outline cutting",