diff --git a/src/kiri-mode/cam/client.js b/src/kiri-mode/cam/client.js index 94b44438..0ea743dc 100644 --- a/src/kiri-mode/cam/client.js +++ b/src/kiri-mode/cam/client.js @@ -1791,7 +1791,7 @@ CAM.init = function(kiri, api) { menu: UC.newRow([ UC.newButton("select", func.surfaceAdd) ], {class:"ext-buttons f-row"}), }; - const drillOp =createPopOp('drill', { + createPopOp('drill', { tool: 'camDrillTool', spindle: 'camDrillSpindle', down: 'camDrillDown', @@ -1801,7 +1801,7 @@ CAM.init = function(kiri, api) { mark: 'camDrillMark', precision:'camDrillPrecision', thru: 'camDrillThru', - + fromTop: 'camDrillFromStockTop', }).inputs = { tool: UC.newSelect(LANG.cc_tool, {}, "tools"), sep: UC.newBlank({class:"pop-sep"}), @@ -1810,7 +1810,8 @@ CAM.init = function(kiri, api) { down: UC.newInput(LANG.cc_sdwn_s, {title:LANG.cc_sdwn_l, convert:UC.toFloat, units:true}), dwell: UC.newInput(LANG.cd_dwll_s, {title:LANG.cd_dwll_l, convert:UC.toFloat}), lift: UC.newInput(LANG.cd_lift_s, {title:LANG.cd_lift_l, convert:UC.toFloat, units:true, show:() => !poppedRec.mark}), - mark: UC.newBoolean(LANG.cd_mark_s, undefined, {title:LANG.cd_mark_l}), + mark: UC.newBoolean(LANG.cd_mark_s,undefined, {title:LANG.cd_mark_l, show:() => !poppedRec.fromTop}), + fromTop: UC.newBoolean(LANG.cd_ftop_s,undefined, {title:LANG.cd_ftop_l, show:() => !poppedRec.mark}), sep: UC.newBlank({class:"pop-sep"}), thru: UC.newInput(LANG.cd_dtru_s, {title:LANG.cd_dtru_l, convert:UC.toFloat, units:true,show:() => !poppedRec.mark}), precision:UC.newInput(LANG.cd_prcn_s, {title:LANG.cd_prcn_l, convert:UC.toFloat, units:true,show:() => !poppedRec.mark}), diff --git a/src/kiri-mode/cam/slice.js b/src/kiri-mode/cam/slice.js index 9f0db31a..b995d74b 100644 --- a/src/kiri-mode/cam/slice.js +++ b/src/kiri-mode/cam/slice.js @@ -564,6 +564,11 @@ CAM.holes = async function(settings, widget, individual, rec,onProgress) { onProgress(0.75+(i/circles.length*0.25),"assemble holes") } drills.forEach( h=>{ + if(rec.fromTop){ + // set z top if selected + h.depth += wztop - h.z + h.z = wztop + } delete h.overlapping //for encoding h.diam = toolDiam // for mesh generation h.selected = (!individual && Math.abs(h.area - area) <= area * 0.05 ); //for same size selection diff --git a/web/kiri/lang/en.js b/web/kiri/lang/en.js index 72a84134..d9c32b46 100644 --- a/web/kiri/lang/en.js +++ b/web/kiri/lang/en.js @@ -599,6 +599,8 @@ self.kiri.lang['en-us'] = { cd_dtru_l: ["additional drill depth below part bottom","overrides global z thru","0 to disable"], cd_mark_s: "marking", cd_mark_l: ["only mark holes, do not drill out","the step down setting is used","to determine how deep to mark"], + cd_ftop_s: "from stock top", + cd_ftop_l: ["drill from stock top","instead of part surface"], cd_prcn_s: "precision", cd_prcn_l: ["distance between slices","to search for holes","in workspace units","lower is slower and","uses more memory","0 = only flats"],