experimental wide cutout parameterization for cam outline

This commit is contained in:
Stewart Allen 2024-03-20 16:20:17 -04:00
commit 25ba73681e
4 changed files with 6 additions and 0 deletions

View file

@ -1290,6 +1290,7 @@ CAM.init = function(kiri, api) {
tool: 'camOutlineTool', tool: 'camOutlineTool',
spindle: 'camOutlineSpindle', spindle: 'camOutlineSpindle',
step: 'camOutlineOver', step: 'camOutlineOver',
steps: 'camOutlineOverCount',
down: 'camOutlineDown', down: 'camOutlineDown',
rate: 'camOutlineSpeed', rate: 'camOutlineSpeed',
plunge: 'camOutlinePlunge', plunge: 'camOutlinePlunge',
@ -1308,6 +1309,7 @@ CAM.init = function(kiri, api) {
plunge: UC.newInput(LANG.cc_plng_s, {title:LANG.cc_plng_l, convert:UC.toInt, units:true}), plunge: UC.newInput(LANG.cc_plng_s, {title:LANG.cc_plng_l, convert:UC.toInt, units:true}),
down: UC.newInput(LANG.cc_sdwn_s, {title:LANG.cc_sdwn_l, convert:UC.toFloat, units:true}), down: UC.newInput(LANG.cc_sdwn_s, {title:LANG.cc_sdwn_l, convert:UC.toFloat, units:true}),
step: UC.newInput(LANG.cc_sovr_s, {title:LANG.cc_sovr_l, convert:UC.toFloat, bound:UC.bound(0.01,1.0), show:() => popOp.outline.rec.wide}), step: UC.newInput(LANG.cc_sovr_s, {title:LANG.cc_sovr_l, convert:UC.toFloat, bound:UC.bound(0.01,1.0), show:() => popOp.outline.rec.wide}),
steps: UC.newInput(LANG.cc_sovc_s, {title:LANG.cc_sovc_l, convert:UC.toInt, bound:UC.bound(1,5), show:() => popOp.outline.rec.wide}),
sep: UC.newBlank({class:"pop-sep"}), sep: UC.newBlank({class:"pop-sep"}),
top: UC.newBoolean(LANG.co_clrt_s, undefined, {title:LANG.co_clrt_l}), top: UC.newBoolean(LANG.co_clrt_s, undefined, {title:LANG.co_clrt_l}),
inside: UC.newBoolean(LANG.co_olin_s, undefined, {title:LANG.co_olin_l, show:(op) => { return !op.inputs.outside.checked }}), inside: UC.newBoolean(LANG.co_olin_s, undefined, {title:LANG.co_olin_l, show:(op) => { return !op.inputs.outside.checked }}),

View file

@ -663,6 +663,7 @@ class OpOutline extends CamOp {
} else { } else {
if (op.wide) { if (op.wide) {
let stepover = toolDiam * op.step; let stepover = toolDiam * op.step;
for (let c = (op.steps || 1); c > 0; c--)
offset.slice().forEach(op => { offset.slice().forEach(op => {
// clone removes inners but the real solution is // clone removes inners but the real solution is
// to limit expanded shells to through holes // to limit expanded shells to through holes

View file

@ -482,6 +482,7 @@ const conf = exports({
camOutlineTop: true, camOutlineTop: true,
camOutlineDown: 3, camOutlineDown: 3,
camOutlineOver: 0.4, camOutlineOver: 0.4,
camOutlineOverCount: 1,
camOutlineSpeed: 800, camOutlineSpeed: 800,
camOutlinePlunge: 250, camOutlinePlunge: 250,
camOutlineWide: false, camOutlineWide: false,

View file

@ -445,6 +445,8 @@ self.kiri.lang['en-us'] = {
cc_spnd_l: ["spindle speed in","revolutions / minute"], cc_spnd_l: ["spindle speed in","revolutions / minute"],
cc_sovr_s: "step over", cc_sovr_s: "step over",
cc_sovr_l: ["a fraction of tool diameter between 0 and 1. values greater than 0.49 may result in uncut areas or undesirable artifacts."], cc_sovr_l: ["a fraction of tool diameter between 0 and 1. values greater than 0.49 may result in uncut areas or undesirable artifacts."],
cc_sovc_s: "wide steps",
cc_sovc_l: ["number of wide cutout steps"],
cc_sang_s: "step angle", cc_sang_s: "step angle",
cc_sang_l: ["rotation in degrees between lathe axial points"], cc_sang_l: ["rotation in degrees between lathe axial points"],
cc_sdwn_s: "step down", cc_sdwn_s: "step down",