diff --git a/src/kiri/core/conf.js b/src/kiri/core/conf.js index a6c09d08..2e9aa772 100644 --- a/src/kiri/core/conf.js +++ b/src/kiri/core/conf.js @@ -441,6 +441,7 @@ export const conf = { camRoughTop: true, camRoughIn: true, camRoughOn: true, + camRoughOmitThru: false, camRoughOmitVoid: false, camOutlineTool: 1000, camOutlineSpindle: 1000, diff --git a/src/kiri/mode/cam/cl-ops.js b/src/kiri/mode/cam/cl-ops.js index 90dff2a4..944f8d2e 100644 --- a/src/kiri/mode/cam/cl-ops.js +++ b/src/kiri/mode/cam/cl-ops.js @@ -227,6 +227,7 @@ export function createPopOps() { voids: 'camRoughVoid', flats: 'camRoughFlat', inside: 'camRoughIn', + omitthru: 'camRoughOmitThru', ov_topz: 0, ov_botz: 0, ov_conv: '~camConventional', @@ -246,6 +247,7 @@ export function createPopOps() { voids: UC.newBoolean(LANG.cr_clrp_s, undefined, { title: LANG.cr_clrp_l }), flats: UC.newBoolean(LANG.cr_clrf_s, undefined, { title: LANG.cr_clrf_l }), inside: UC.newBoolean(LANG.cr_olin_s, undefined, { title: LANG.cr_olin_l }), + omitthru: UC.newBoolean(LANG.co_omit_s, undefined, { title: LANG.co_omit_l }), sep: UC.newBlank({ class: "pop-sep" }), exp: UC.newExpand("overrides"), ov_topz: UC.newInput(LANG.ou_ztop_s, { title: LANG.ou_ztop_l, convert: UC.toFloat, units: true }), diff --git a/src/kiri/mode/cam/op-rough.js b/src/kiri/mode/cam/op-rough.js index 06e2630e..7145bb73 100644 --- a/src/kiri/mode/cam/op-rough.js +++ b/src/kiri/mode/cam/op-rough.js @@ -144,6 +144,7 @@ class OpRough extends CamOp { // inset or eliminate thru holes from shadow shadow = POLY.flatten(shadow.clone(true), [], true); + if (!op.omitthru) thruHoles.forEach(hole => { shadow = shadow.map(p => { if (p.isEquivalent(hole)) {