diff --git a/src/kiri/conf.js b/src/kiri/conf.js index 7879a7fc..3b7abe0b 100644 --- a/src/kiri/conf.js +++ b/src/kiri/conf.js @@ -206,7 +206,7 @@ finishingTool: "camOutlineTool", finishingSpindle: "camOutlineSpindle", finishingDown: "camOutlineDown", - finishingOver: "camOutlineOver", + finishingOver: "camContourOver", finishingSpeed: "camOutlineSpeed", finishingPlunge: "camOutlinePlunge", finishingOn: "camOutlineOn", @@ -396,8 +396,6 @@ // process defaults CAM:Process p:{ processName: "default", - camFastFeed: 6000, - camFastFeedZ: 300, camRoughTool: 1000, // roughingTool camRoughSpindle: 1000, // camRoughSpindle camRoughDown: 2, // roughingDown @@ -410,19 +408,20 @@ camOutlineTool: 1000, // finishingTool camOutlineSpindle: 1000,// finishingSpindle camOutlineDown: 3, // finishingDown - camOutlineOver: 0.5, // finishingOver camOutlineSpeed: 800, // finishingSpeed camOutlinePlunge: 250, // finishingPlunge camOutlineOn: true, // finishingOn camContourTool: 1000, camContourSpindle: 1000,// (new) + camContourOver: 0.5, // (new) camContourSpeed: 1000, // (new) camContourAngle: 85, // finishingAngle camContourCurves: false,// finishCurvesOnly camContourXOn: true, // finishingXOn camContourYOn: true, // finishingYOn camTraceTool: 1000, - camTraceEnable: false, + camTraceSpeed: 250, + camTraceOn: false, camDrillTool: 1000, // drillTool camDrillSpindle: 1000, // drillSpindle camDrillDownSpeed: 250, // drillDownSpeed @@ -440,10 +439,12 @@ camDepthFirst: true, camEaseDown: false, camOriginTop: true, - camTolerance: 0.15, camZTopOffset: 0, camZBottom: 0, camZClearance: 1, + camFastFeed: 6000, + camFastFeedZ: 300, + camTolerance: 0.15, camStockX: 0, camStockY: 0, camStockZ: 0, diff --git a/src/kiri/init.js b/src/kiri/init.js index 19834fda..aec9b1b4 100644 --- a/src/kiri/init.js +++ b/src/kiri/init.js @@ -1373,7 +1373,6 @@ camOutline: UC.newGroup(LANG.co_menu, null, {modes:CAM, marker:true}), camOutlineTool: UC.newSelect(LANG.cc_tool, {modes:CAM}), camOutlineSpindle: UC.newInput(LANG.cc_spnd_s, {title:LANG.cc_spnd_l, convert:UC.toInt, modes:CAM, visible:spindleShow}), - camOutlineOver: UC.newInput(LANG.cc_sovr_s, {title:LANG.cc_sovr_l, convert:UC.toFloat, bound:UC.bound(0.05,1.0), modes:CAM}), camOutlineDown: UC.newInput(LANG.cc_sdwn_s, {title:LANG.cc_sdwn_l, convert:UC.toFloat, modes:CAM}), camOutlineSpeed: UC.newInput(LANG.cc_feed_s, {title:LANG.cc_feed_l, convert:UC.toInt, modes:CAM}), camOutlinePlunge: UC.newInput(LANG.cc_plng_s, {title:LANG.cc_plng_l, convert:UC.toInt, modes:CAM}), @@ -1383,6 +1382,7 @@ camContour: UC.newGroup(LANG.cn_menu, null, {modes:CAM, marker:true}), camContourTool: UC.newSelect(LANG.cc_tool, {modes:CAM}), camContourSpindle: UC.newInput(LANG.cc_spnd_s, {title:LANG.cc_spnd_l, convert:UC.toInt, modes:CAM, visible:spindleShow}), + camContourOver: UC.newInput(LANG.cc_sovr_s, {title:LANG.cc_sovr_l, convert:UC.toFloat, bound:UC.bound(0.05,1.0), modes:CAM}), camContourSpeed: UC.newInput(LANG.cc_feed_s, {title:LANG.cc_feed_l, convert:UC.toInt, modes:CAM}), camContourAngle: UC.newInput(LANG.cf_angl_s, {title:LANG.cf_angl_l, convert:UC.toFloat, bound:UC.bound(45,90), modes:CAM}), camContourCurves: UC.newBoolean(LANG.cf_curv_s, onBooleanClick, {title:LANG.cf_curv_l, modes:CAM}), diff --git a/src/mode/cam/driver.js b/src/mode/cam/driver.js index b4e146ac..bad3bc7e 100644 --- a/src/mode/cam/driver.js +++ b/src/mode/cam/driver.js @@ -192,14 +192,14 @@ function getMaxTopoToolZ(topo, profile, x, y, floormax) { let tv, tx, ty, tz, gv, i = 0, mz = -1; - const sx = topo.stepsx, sy = topo.stepsy; + const sx = topo.stepsx, sy = topo.stepsy, xl = sx - 1, yl = sy - 1; while (i < profile.length) { // tool profile point x, y, and z offsets let tx = profile[i++] + x; let ty = profile[i++] + y; let tz = profile[i++]; - if (tx < 0 || tx >= sx || ty < 0 || ty >= sy) { + if (tx < 0 || tx > xl || ty < 0 || ty > yl) { // if outside max topo steps, use 0 gv = 0; } else { @@ -390,7 +390,7 @@ resolution = outp.camTolerance * units, diameter = getToolDiameter(settings, proc.camOutlineTool), tool = getToolById(settings, proc.camOutlineTool), - toolStep = diameter * proc.camOutlineOver, + toolStep = diameter * proc.camContourOver, traceJoin = diameter / 2, pocketOnly = proc.camOutlinePocket, bounds = widget.getBoundingBox().clone(), @@ -477,7 +477,7 @@ lines = slice.lines; gridy = 0; // slices have x/z swapped - for (y = minY; y <= maxY; y += resolution) { + for (y = minY; y < maxY && gridy < stepsy; y += resolution) { gridi = gridx * stepsy + gridy; gridv = data[gridi] || 0; // strategy using raw lines (faster slice, but more lines)