add trace option to ignore part boundaries
This commit is contained in:
parent
bdf3de7b04
commit
8a0d827c2a
7 changed files with 18 additions and 3 deletions
|
|
@ -604,6 +604,7 @@ export const conf = {
|
||||||
camToolInit: true,
|
camToolInit: true,
|
||||||
camTraceDogbone: false,
|
camTraceDogbone: false,
|
||||||
camTraceDown: 0,
|
camTraceDown: 0,
|
||||||
|
camTraceIgnore: false,
|
||||||
camTraceLines: false,
|
camTraceLines: false,
|
||||||
camTraceMerge: false,
|
camTraceMerge: false,
|
||||||
camTraceOffOver: 0,
|
camTraceOffOver: 0,
|
||||||
|
|
|
||||||
|
|
@ -487,6 +487,7 @@ export function createPopOps() {
|
||||||
offover: 'camTraceOffOver',
|
offover: 'camTraceOffOver',
|
||||||
dogbone: 'camTraceDogbone',
|
dogbone: 'camTraceDogbone',
|
||||||
revbone: 'camTraceDogbone',
|
revbone: 'camTraceDogbone',
|
||||||
|
ignore: 'camTraceIgnore',
|
||||||
merge: 'camTraceMerge',
|
merge: 'camTraceMerge',
|
||||||
ov_topz: 0,
|
ov_topz: 0,
|
||||||
ov_botz: 0,
|
ov_botz: 0,
|
||||||
|
|
@ -502,6 +503,7 @@ export function createPopOps() {
|
||||||
offover: UC.newInput(LANG.cc_offd_s, { title: LANG.cc_offd_l, convert: toFloat, units, show: () => env.poppedRec.offset !== "none" || env.poppedRec.mode === "clear" }),
|
offover: UC.newInput(LANG.cc_offd_s, { title: LANG.cc_offd_l, convert: toFloat, units, show: () => env.poppedRec.offset !== "none" || env.poppedRec.mode === "clear" }),
|
||||||
sep: UC.newBlank({ class: "pop-sep", modes: MODES.CAM, xshow: zDogSep }),
|
sep: UC.newBlank({ class: "pop-sep", modes: MODES.CAM, xshow: zDogSep }),
|
||||||
thru: UC.newBoolean(LANG.cc_thru_s, undefined, { title: LANG.cc_thru_l }),
|
thru: UC.newBoolean(LANG.cc_thru_s, undefined, { title: LANG.cc_thru_l }),
|
||||||
|
ignore: UC.newBoolean(LANG.co_igno_s, undefined, { title: LANG.co_igno_l, show: () => env.poppedRec.mode === 'clear' }),
|
||||||
merge: UC.newBoolean(LANG.co_merg_s, undefined, { title: LANG.co_merg_l, show: () => !env.popOp.trace.rec.down }),
|
merge: UC.newBoolean(LANG.co_merg_s, undefined, { title: LANG.co_merg_l, show: () => !env.popOp.trace.rec.down }),
|
||||||
dogbone: UC.newBoolean(LANG.co_dogb_s, undefined, { title: LANG.co_dogb_l, show: canDogBones }),
|
dogbone: UC.newBoolean(LANG.co_dogb_s, undefined, { title: LANG.co_dogb_l, show: canDogBones }),
|
||||||
revbone: UC.newBoolean(LANG.co_dogr_s, undefined, { title: LANG.co_dogr_l, show: canDogBonesRev }),
|
revbone: UC.newBoolean(LANG.co_dogr_s, undefined, { title: LANG.co_dogr_l, show: canDogBonesRev }),
|
||||||
|
|
|
||||||
|
|
@ -191,7 +191,12 @@ class OpArea extends CamOp {
|
||||||
let outs = [];
|
let outs = [];
|
||||||
let clip = [];
|
let clip = [];
|
||||||
let firstOff = -(toolDiam / 2 + (op.leave_xy ?? 0));
|
let firstOff = -(toolDiam / 2 + (op.leave_xy ?? 0));
|
||||||
|
// remove shadow from area
|
||||||
|
if (op.ignore) {
|
||||||
|
clip = [ area ];
|
||||||
|
} else {
|
||||||
POLY.subtract([ area ], shadow, clip, undefined, undefined, 0);
|
POLY.subtract([ area ], shadow, clip, undefined, undefined, 0);
|
||||||
|
}
|
||||||
POLY.offset(clip, [ firstOff, -toolOver ], {
|
POLY.offset(clip, [ firstOff, -toolOver ], {
|
||||||
count: op.walls ? 1 : (op.steps ?? 999), outs, flat: true, z: z - zMov, ...offopt
|
count: op.walls ? 1 : (op.steps ?? 999), outs, flat: true, z: z - zMov, ...offopt
|
||||||
});
|
});
|
||||||
|
|
@ -258,7 +263,7 @@ class OpArea extends CamOp {
|
||||||
for (let z of zs) {
|
for (let z of zs) {
|
||||||
let slice = newLayer(z);
|
let slice = newLayer(z);
|
||||||
let layers = slice.output();
|
let layers = slice.output();
|
||||||
let shadow = await shadowAt(z);
|
let shadow = op.base ? state.shadow.base : await shadowAt(z);
|
||||||
let outs = [];
|
let outs = [];
|
||||||
if (tr_type === 'none') {
|
if (tr_type === 'none') {
|
||||||
// todo: move this out of the zs loop and only setZ when needed
|
// todo: move this out of the zs loop and only setZ when needed
|
||||||
|
|
|
||||||
|
|
@ -25,9 +25,11 @@ class OpOutline extends CamOp {
|
||||||
let areas = shadow.base.clone(true);
|
let areas = shadow.base.clone(true);
|
||||||
ops_list.push(new OpArea(state, {
|
ops_list.push(new OpArea(state, {
|
||||||
areas: { [widget.id]: areas.map(p => p.toArray()) },
|
areas: { [widget.id]: areas.map(p => p.toArray()) },
|
||||||
|
base: true,
|
||||||
direction,
|
direction,
|
||||||
dogbones,
|
dogbones,
|
||||||
down,
|
down,
|
||||||
|
drape: true,
|
||||||
expand: 0,
|
expand: 0,
|
||||||
mode: 'trace',
|
mode: 'trace',
|
||||||
omitinner: omitvoid,
|
omitinner: omitvoid,
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ class OpTrace extends CamOp {
|
||||||
|
|
||||||
async slice(progress) {
|
async slice(progress) {
|
||||||
let { op, state } = this;
|
let { op, state } = this;
|
||||||
let { areas, direction, down, expand, follow, offover, offset, outline, mode, ov_botz, ov_topz } = op;
|
let { areas, direction, down, expand, follow, offover, offset, outline, ignore, mode, ov_botz, ov_topz } = op;
|
||||||
let { plunge, rate, refine, smooth, spindle, step, steps, thru, tolerance, tool } = op;
|
let { plunge, rate, refine, smooth, spindle, step, steps, thru, tolerance, tool } = op;
|
||||||
let trace = {
|
let trace = {
|
||||||
areas,
|
areas,
|
||||||
|
|
@ -21,6 +21,7 @@ class OpTrace extends CamOp {
|
||||||
down,
|
down,
|
||||||
expand,
|
expand,
|
||||||
follow,
|
follow,
|
||||||
|
ignore,
|
||||||
mode: mode === 'clear' ? 'clear' : 'trace',
|
mode: mode === 'clear' ? 'clear' : 'trace',
|
||||||
outline,
|
outline,
|
||||||
ov_botz,
|
ov_botz,
|
||||||
|
|
|
||||||
|
|
@ -380,6 +380,8 @@ function supportDone() {
|
||||||
// Use popVisualState to restore original material
|
// Use popVisualState to restore original material
|
||||||
w.popVisualState('paint');
|
w.popVisualState('paint');
|
||||||
});
|
});
|
||||||
|
api.conf.save();
|
||||||
|
api.space.save();
|
||||||
}
|
}
|
||||||
|
|
||||||
// manual supports clear
|
// manual supports clear
|
||||||
|
|
|
||||||
|
|
@ -549,6 +549,8 @@ self.lang['en-us'] = {
|
||||||
co_menu: "outline",
|
co_menu: "outline",
|
||||||
co_merg_s: "merge overlap",
|
co_merg_s: "merge overlap",
|
||||||
co_merg_l: ["merge overlapping lines to prevent overcutting into adjacent solids"],
|
co_merg_l: ["merge overlapping lines to prevent overcutting into adjacent solids"],
|
||||||
|
co_igno_s: "ignore part",
|
||||||
|
co_igno_l: ["do not constrain cutting areas","to part boundaries. this allows","using the part as negative space"],
|
||||||
co_dogb_s: "dogbones",
|
co_dogb_s: "dogbones",
|
||||||
co_dogb_l: ["insert dogbone cuts","into inside corners"],
|
co_dogb_l: ["insert dogbone cuts","into inside corners"],
|
||||||
co_dogr_s: "reverse bones",
|
co_dogr_s: "reverse bones",
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue