From 84bf821c6dd20b9855cc1f783895b9b2bd77ef9d Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Sat, 3 Jan 2026 00:44:50 -0500 Subject: [PATCH] add vertical wall clearing option for op-area like outline --- src/kiri/app/conf/defaults.js | 1 + src/kiri/mode/cam/cl-ops.js | 2 ++ src/kiri/mode/cam/op-area.js | 2 +- web/kiri/lang/en.js | 2 ++ 4 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/kiri/app/conf/defaults.js b/src/kiri/app/conf/defaults.js index dcc37957..0038ba8d 100644 --- a/src/kiri/app/conf/defaults.js +++ b/src/kiri/app/conf/defaults.js @@ -449,6 +449,7 @@ export const conf = { camAreaDogbones: false, camAreaRevbones: false, camAreaOutline: false, + camAreaWalls: false, camAreaZigZag: true, camContourAngle: 85, camContourBottom: false, diff --git a/src/kiri/mode/cam/cl-ops.js b/src/kiri/mode/cam/cl-ops.js index 199533b8..d3a35c67 100644 --- a/src/kiri/mode/cam/cl-ops.js +++ b/src/kiri/mode/cam/cl-ops.js @@ -705,6 +705,7 @@ export function createPopOps() { rate: 'camAreaSpeed', plunge: 'camAreaPlunge', expand: 'camAreaExpand', + walls: 'camAreaWalls', smooth: 'camAreaSmooth', follow: 'camAreaFollow', refine: 'camAreaRefine', @@ -730,6 +731,7 @@ export function createPopOps() { exp_end: UC.endExpand(), sep: UC.newBlank({ class: "pop-sep" }), exp: UC.newExpand("area modifiers", { }), + walls: UC.newBoolean(LANG.ca_wall_s, undefined, { title: LANG.ca_wall_l }), expand: UC.newInput(LANG.cp_xpnd_s, { title: LANG.cp_xpnd_l, convert: toFloat, units }), smooth: UC.newInput(LANG.cp_smoo_s, { title: LANG.cp_smoo_l, convert: toInt, xshow: isSurface }), follow: UC.newInput(LANG.cp_foll_s, { title: LANG.cp_foll_l, convert: toFloat }), diff --git a/src/kiri/mode/cam/op-area.js b/src/kiri/mode/cam/op-area.js index 35a6de58..f03c1bfd 100644 --- a/src/kiri/mode/cam/op-area.js +++ b/src/kiri/mode/cam/op-area.js @@ -186,7 +186,7 @@ class OpArea extends CamOp { let firstOff = -(toolDiam / 2 + (op.leave_xy ?? 0)); POLY.subtract([ area ], shadow, clip, undefined, undefined, 0); POLY.offset(clip, [ firstOff, -toolOver ], { - count: op.steps ?? 999, outs, flat: true, z: z - zMov, ...offopt + count: op.walls ? 1 : (op.steps ?? 999), outs, flat: true, z: z - zMov, ...offopt }); // if we see no offsets, re-check the mesh bottom Z then exit if (outs.length === 0) { diff --git a/web/kiri/lang/en.js b/web/kiri/lang/en.js index f5f12250..150fe28b 100644 --- a/web/kiri/lang/en.js +++ b/web/kiri/lang/en.js @@ -725,6 +725,8 @@ self.lang['en-us'] = { ca_altr_l: "alternate direction of travel lines (zigzag)", ca_sang_s: "step angle", ca_sang_l: "crossing angle on the XY plane for contour lines", + ca_wall_s: "walls", + ca_wall_l: ["perform a single pass along vertical faces. leave interior spaces. similar to outline operation"], // OUTPUT ou_menu: "output",