add cam expert menu and 'skip shadow' safety disable
This commit is contained in:
parent
ec574248c5
commit
0d4e81b11a
6 changed files with 25 additions and 9 deletions
|
|
@ -484,6 +484,7 @@
|
||||||
outputOriginCenter: false,
|
outputOriginCenter: false,
|
||||||
outputInvertX: false,
|
outputInvertX: false,
|
||||||
outputInvertY: false,
|
outputInvertY: false,
|
||||||
|
camExpertFast: false,
|
||||||
ops: [], // current ops
|
ops: [], // current ops
|
||||||
op2: [] // flip ops
|
op2: [] // flip ops
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1702,6 +1702,9 @@
|
||||||
outputOriginCenter: UC.newBoolean(LANG.or_cntr_s, onBooleanClick, {title:LANG.or_cntr_l, modes:CAM_LASER}),
|
outputOriginCenter: UC.newBoolean(LANG.or_cntr_s, onBooleanClick, {title:LANG.or_cntr_l, modes:CAM_LASER}),
|
||||||
camOriginTop: UC.newBoolean(LANG.or_topp_s, onBooleanClick, {title:LANG.or_topp_l, modes:CAM}),
|
camOriginTop: UC.newBoolean(LANG.or_topp_s, onBooleanClick, {title:LANG.or_topp_l, modes:CAM}),
|
||||||
|
|
||||||
|
camExpert: UC.newGroup(LANG.op_xprt_s, null, {group: "cam_expert", modes:CAM, marker: false}),
|
||||||
|
camExpertFast: UC.newBoolean(LANG.cx_fast_s, onBooleanClick, {title:LANG.cx_fast_l, modes:CAM}),
|
||||||
|
|
||||||
advanced: UC.newGroup(LANG.ad_menu, null, {modes:FDM}),
|
advanced: UC.newGroup(LANG.ad_menu, null, {modes:FDM}),
|
||||||
outputRetractDist: UC.newInput(LANG.ad_rdst_s, {title:LANG.ad_rdst_l, convert:UC.toFloat, modes:FDM}),
|
outputRetractDist: UC.newInput(LANG.ad_rdst_s, {title:LANG.ad_rdst_l, convert:UC.toFloat, modes:FDM}),
|
||||||
outputRetractSpeed: UC.newInput(LANG.ad_rrat_s, {title:LANG.ad_rrat_l, convert:UC.toInt, modes:FDM}),
|
outputRetractSpeed: UC.newInput(LANG.ad_rrat_s, {title:LANG.ad_rrat_l, convert:UC.toInt, modes:FDM}),
|
||||||
|
|
|
||||||
|
|
@ -104,7 +104,7 @@
|
||||||
|
|
||||||
slice(progress) {
|
slice(progress) {
|
||||||
let { op, state } = this;
|
let { op, state } = this;
|
||||||
let { settings, widget, slicer, sliceAll } = state;
|
let { settings, widget, slicer, sliceAll, unsafe } = state;
|
||||||
let { updateToolDiams, thruHoles, tabs, cutTabs } = state;
|
let { updateToolDiams, thruHoles, tabs, cutTabs } = state;
|
||||||
let { tshadow, shadowTop, ztOff, zBottom, zMax } = state;
|
let { tshadow, shadowTop, ztOff, zBottom, zMax } = state;
|
||||||
|
|
||||||
|
|
@ -185,7 +185,7 @@
|
||||||
|
|
||||||
// console.log('indices', ...indices, {zBottom});
|
// console.log('indices', ...indices, {zBottom});
|
||||||
slicer.slice(indices, { each: (data, index, total) => {
|
slicer.slice(indices, { each: (data, index, total) => {
|
||||||
shadow = POLY.union(shadow.slice().appendAll(data.tops), 0.01, true);
|
shadow = unsafe ? data.tops : POLY.union(shadow.slice().appendAll(data.tops), 0.01, true);
|
||||||
if (flats.indexOf(data.z) >= 0) {
|
if (flats.indexOf(data.z) >= 0) {
|
||||||
// exclude flats injected to complete shadow
|
// exclude flats injected to complete shadow
|
||||||
return;
|
return;
|
||||||
|
|
@ -375,7 +375,7 @@
|
||||||
|
|
||||||
slice(progress) {
|
slice(progress) {
|
||||||
let { op, state } = this;
|
let { op, state } = this;
|
||||||
let { settings, widget, slicer, sliceAll, tshadow, thruHoles } = state;
|
let { settings, widget, slicer, sliceAll, tshadow, thruHoles, unsafe } = state;
|
||||||
let { updateToolDiams, zThru, zBottom, shadowTop, tabs, cutTabs } = state;
|
let { updateToolDiams, zThru, zBottom, shadowTop, tabs, cutTabs } = state;
|
||||||
|
|
||||||
let toolDiam = this.toolDiam = new CAM.Tool(settings, op.tool).fluteDiameter();
|
let toolDiam = this.toolDiam = new CAM.Tool(settings, op.tool).fluteDiameter();
|
||||||
|
|
@ -405,7 +405,7 @@
|
||||||
});
|
});
|
||||||
} else
|
} else
|
||||||
slicer.slice(indices, { each: (data, index, total) => {
|
slicer.slice(indices, { each: (data, index, total) => {
|
||||||
shadow = POLY.union(shadow.slice().appendAll(data.tops), 0.01, true);
|
shadow = unsafe ? data.tops : POLY.union(shadow.slice().appendAll(data.tops), 0.01, true);
|
||||||
if (flats.indexOf(data.z) >= 0) {
|
if (flats.indexOf(data.z) >= 0) {
|
||||||
// exclude flats injected to complete shadow
|
// exclude flats injected to complete shadow
|
||||||
return;
|
return;
|
||||||
|
|
@ -925,11 +925,11 @@
|
||||||
|
|
||||||
slice(progress) {
|
slice(progress) {
|
||||||
let state = this.state;
|
let state = this.state;
|
||||||
let { ops, slicer, widget } = state;
|
let { ops, slicer, widget, unsafe } = state;
|
||||||
|
|
||||||
let real = ops.map(rec => rec.op).filter(op => op);
|
let real = ops.map(rec => rec.op).filter(op => op);
|
||||||
let rough = real.filter(op => op.type === 'rough').length > 0;
|
let rough = real.filter(op => op.type === 'rough').length > 0;
|
||||||
let outlineIn = real.filter(op => op.type === 'outline' && op.inside).length > 0;
|
let outlineOut = real.filter(op => op.type === 'outline' && op.outside).length > 0;
|
||||||
|
|
||||||
let minStepDown = real
|
let minStepDown = real
|
||||||
.map(op => (op.down || 3) / 3)
|
.map(op => (op.down || 3) / 3)
|
||||||
|
|
@ -938,7 +938,8 @@
|
||||||
let tslices = [];
|
let tslices = [];
|
||||||
let tshadow = [];
|
let tshadow = [];
|
||||||
let tzindex = slicer.interval(minStepDown, { fit: true, off: 0.01, down: true, flats: true });
|
let tzindex = slicer.interval(minStepDown, { fit: true, off: 0.01, down: true, flats: true });
|
||||||
let skipTerrain = !(rough || outlineIn) && (tzindex.length > 50 || widget.vertices.length > 1000000);
|
let complex = tzindex.length > 50 || widget.vertices.length > 1000000;
|
||||||
|
let skipTerrain = unsafe || (!rough && !outlineOut && complex);
|
||||||
|
|
||||||
if (skipTerrain) {
|
if (skipTerrain) {
|
||||||
console.log("skipping terrain generation");
|
console.log("skipping terrain generation");
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,8 @@
|
||||||
minToolDiam = Infinity,
|
minToolDiam = Infinity,
|
||||||
maxToolDiam = -Infinity,
|
maxToolDiam = -Infinity,
|
||||||
thruHoles,
|
thruHoles,
|
||||||
tabs = settings.widget[widget.id].tab;
|
tabs = settings.widget[widget.id].tab,
|
||||||
|
unsafe = proc.camExpertFast;
|
||||||
|
|
||||||
if (tabs) {
|
if (tabs) {
|
||||||
// make tab polygons
|
// make tab polygons
|
||||||
|
|
@ -61,6 +62,10 @@
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (unsafe) {
|
||||||
|
console.log("disabling overhang safeties");
|
||||||
|
}
|
||||||
|
|
||||||
if (!proc.ops || proc.ops.length === 0) {
|
if (!proc.ops || proc.ops.length === 0) {
|
||||||
throw 'no processes specified';
|
throw 'no processes specified';
|
||||||
}
|
}
|
||||||
|
|
@ -106,7 +111,8 @@
|
||||||
zBottom,
|
zBottom,
|
||||||
zThru,
|
zThru,
|
||||||
ztOff,
|
ztOff,
|
||||||
zMax
|
zMax,
|
||||||
|
unsafe
|
||||||
};
|
};
|
||||||
|
|
||||||
let opList = [
|
let opList = [
|
||||||
|
|
|
||||||
|
|
@ -1088,6 +1088,7 @@ th, tr, td, label {
|
||||||
}
|
}
|
||||||
.t-pad2 {
|
.t-pad2 {
|
||||||
width: 10px;
|
width: 10px;
|
||||||
|
height: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#devices {
|
#devices {
|
||||||
|
|
|
||||||
|
|
@ -473,6 +473,10 @@ kiri.lang['en-us'] = {
|
||||||
ad_pspd_s: "polish speed",
|
ad_pspd_s: "polish speed",
|
||||||
ad_pspd_l: "polishing speed\nin millimeters / minute",
|
ad_pspd_l: "polishing speed\nin millimeters / minute",
|
||||||
|
|
||||||
|
// CAM EXPERT
|
||||||
|
cx_fast_s: "skip shadow",
|
||||||
|
cx_fast_l: "disable overhang detection\ncan be faster and use less\nmemory with complex models\nbut fails with overhangs\ntry enabling if slicing\nhangs during shadowing",
|
||||||
|
|
||||||
// FDM GCODE
|
// FDM GCODE
|
||||||
ag_menu: "gcode",
|
ag_menu: "gcode",
|
||||||
ag_nozl_s: "nozzle",
|
ag_nozl_s: "nozzle",
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue