add vertical wall clearing option for op-area like outline

This commit is contained in:
Stewart Allen 2026-01-03 00:44:50 -05:00
commit 84bf821c6d
4 changed files with 6 additions and 1 deletions

View file

@ -449,6 +449,7 @@ export const conf = {
camAreaDogbones: false,
camAreaRevbones: false,
camAreaOutline: false,
camAreaWalls: false,
camAreaZigZag: true,
camContourAngle: 85,
camContourBottom: false,

View file

@ -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 }),

View file

@ -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) {

View file

@ -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",