add extruder deselect script. relegate extruder abs/rel to detection via gcode header parsing
This commit is contained in:
parent
80693c2576
commit
b5c8b19864
6 changed files with 36 additions and 13 deletions
6
notes.md
6
notes.md
|
|
@ -11,10 +11,12 @@
|
||||||
* `P` client/worker interface normalization
|
* `P` client/worker interface normalization
|
||||||
* `P` explore widget vertex reloading / replacing (Onshape primarily)
|
* `P` explore widget vertex reloading / replacing (Onshape primarily)
|
||||||
|
|
||||||
* `F` G2/G3 arc output / input
|
* `F` add % field type with conversion (like units)
|
||||||
|
* `F` complete G2/G3 arc output / input (85% now)
|
||||||
* `F` expose grouping feature
|
* `F` expose grouping feature
|
||||||
* `F` SVG import to 3D part like images
|
* `F` SVG import to 3D part like images
|
||||||
* `F` bundle current profile into exported device
|
* `F` bundle current profile into exported device
|
||||||
|
* `F` integrate svg nest arrange algorithm
|
||||||
|
|
||||||
# FDM
|
# FDM
|
||||||
|
|
||||||
|
|
@ -67,6 +69,7 @@
|
||||||
* `B` climb vs conventional not fully consistent after refactor
|
* `B` climb vs conventional not fully consistent after refactor
|
||||||
* `B` outside cutting direction in roughing mode inverted
|
* `B` outside cutting direction in roughing mode inverted
|
||||||
|
|
||||||
|
* `F` add layout spacing preference
|
||||||
* `F` import SVG into a path that can be overlaid onto a 3D mesh (laser?)
|
* `F` import SVG into a path that can be overlaid onto a 3D mesh (laser?)
|
||||||
* `F` intelligently turn circle hole pocket clear into spiral down
|
* `F` intelligently turn circle hole pocket clear into spiral down
|
||||||
* `F` trace follow hole that matches endmill should turn into a drill op
|
* `F` trace follow hole that matches endmill should turn into a drill op
|
||||||
|
|
@ -111,6 +114,7 @@
|
||||||
* http://wiki.imal.org/howto/cnc-milling-introduction-cutting-tools
|
* http://wiki.imal.org/howto/cnc-milling-introduction-cutting-tools
|
||||||
* http://www.twak.co.uk/2011/01/degeneracy-in-weighted-straight.html
|
* http://www.twak.co.uk/2011/01/degeneracy-in-weighted-straight.html
|
||||||
* http://photon.chrisgraf.de/
|
* http://photon.chrisgraf.de/
|
||||||
|
* https://github.com/Jack000/SVGnest
|
||||||
|
|
||||||
# More CNC
|
# More CNC
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -77,6 +77,7 @@
|
||||||
extFilament: device.filamentSize,
|
extFilament: device.filamentSize,
|
||||||
extNozzle: device.nozzleSize,
|
extNozzle: device.nozzleSize,
|
||||||
extSelect: ["T0"],
|
extSelect: ["T0"],
|
||||||
|
extDeselect: [],
|
||||||
extOffsetX: 0,
|
extOffsetX: 0,
|
||||||
extOffsetY: 0
|
extOffsetY: 0
|
||||||
}];
|
}];
|
||||||
|
|
@ -143,6 +144,7 @@
|
||||||
if (rec.offset_x) e.extOffsetX = rec.offset_x;
|
if (rec.offset_x) e.extOffsetX = rec.offset_x;
|
||||||
if (rec.offset_y) e.extOffsetY = rec.offset_y;
|
if (rec.offset_y) e.extOffsetY = rec.offset_y;
|
||||||
if (rec.select) e.extSelect = rec.select;
|
if (rec.select) e.extSelect = rec.select;
|
||||||
|
if (rec.deselect) e.extDeselect = rec.deselect;
|
||||||
device.extruders.push(e);
|
device.extruders.push(e);
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -273,6 +275,7 @@
|
||||||
extFilament: 1.75,
|
extFilament: 1.75,
|
||||||
extNozzle: 0.4,
|
extNozzle: 0.4,
|
||||||
extSelect: ["T0"],
|
extSelect: ["T0"],
|
||||||
|
extDeselect: [],
|
||||||
extOffsetX: 0,
|
extOffsetX: 0,
|
||||||
extOffsetY: 0
|
extOffsetY: 0
|
||||||
}]
|
}]
|
||||||
|
|
|
||||||
|
|
@ -739,6 +739,12 @@
|
||||||
|
|
||||||
// add extruder selection buttons
|
// add extruder selection buttons
|
||||||
if (dev.extruders) {
|
if (dev.extruders) {
|
||||||
|
for (let ext of dev.extruders) {
|
||||||
|
// add missing deselect field from legacy configs
|
||||||
|
if (!ext.extDeselect) {
|
||||||
|
ext.extDeselect = [];
|
||||||
|
}
|
||||||
|
}
|
||||||
let ext = API.lists.extruders = [];
|
let ext = API.lists.extruders = [];
|
||||||
dev.internal = 0;
|
dev.internal = 0;
|
||||||
let selext = $('pop-nozzle');
|
let selext = $('pop-nozzle');
|
||||||
|
|
@ -768,7 +774,6 @@
|
||||||
UI.bedDepth,
|
UI.bedDepth,
|
||||||
UI.bedWidth,
|
UI.bedWidth,
|
||||||
UI.maxHeight,
|
UI.maxHeight,
|
||||||
UI.extrudeAbs,
|
|
||||||
UI.deviceOrigin,
|
UI.deviceOrigin,
|
||||||
UI.deviceRound,
|
UI.deviceRound,
|
||||||
UI.deviceBelt,
|
UI.deviceBelt,
|
||||||
|
|
@ -792,12 +797,12 @@
|
||||||
UI.extDel,
|
UI.extDel,
|
||||||
UI.extOffsetX,
|
UI.extOffsetX,
|
||||||
UI.extOffsetY,
|
UI.extOffsetY,
|
||||||
UI.extSelect
|
UI.extSelect,
|
||||||
|
UI.extDeselect
|
||||||
].forEach(function(e) {
|
].forEach(function(e) {
|
||||||
e.disabled = !local;
|
e.disabled = !local;
|
||||||
});
|
});
|
||||||
|
|
||||||
UI.extrudeAbs.style.display = mode === 'CAM' ? 'none' : 'flex';
|
|
||||||
UI.deviceSave.disabled = !local;
|
UI.deviceSave.disabled = !local;
|
||||||
UI.deviceDelete.disabled = !local;
|
UI.deviceDelete.disabled = !local;
|
||||||
UI.deviceExport.disabled = !local;
|
UI.deviceExport.disabled = !local;
|
||||||
|
|
@ -1570,7 +1575,7 @@
|
||||||
extOffsetX: UC.newInput(LANG.dv_exox_s, {title:LANG.dv_exox_l, convert:UC.toFloat, modes:FDM}),
|
extOffsetX: UC.newInput(LANG.dv_exox_s, {title:LANG.dv_exox_l, convert:UC.toFloat, modes:FDM}),
|
||||||
extOffsetY: UC.newInput(LANG.dv_exoy_s, {title:LANG.dv_exoy_l, convert:UC.toFloat, modes:FDM}),
|
extOffsetY: UC.newInput(LANG.dv_exoy_s, {title:LANG.dv_exoy_l, convert:UC.toFloat, modes:FDM}),
|
||||||
extSelect: UC.newText(LANG.dv_exts_s, {title:LANG.dv_exts_l, modes:FDM, size:14, height:3, modes:FDM, area:gcode}),
|
extSelect: UC.newText(LANG.dv_exts_s, {title:LANG.dv_exts_l, modes:FDM, size:14, height:3, modes:FDM, area:gcode}),
|
||||||
extrudeAbs: UC.newBoolean(LANG.dv_xtab_s, onBooleanClick, {title:LANG.dv_xtab_l, modes:FDM}),
|
extDeselect: UC.newText(LANG.dv_dext_s, {title:LANG.dv_dext_l, modes:FDM, size:14, height:3, modes:FDM, area:gcode}),
|
||||||
extActions: UC.newRow([
|
extActions: UC.newRow([
|
||||||
UI.extPrev = UC.newButton(undefined, undefined, {icon:'<i class="fas fa-less-than"></i>'}),
|
UI.extPrev = UC.newButton(undefined, undefined, {icon:'<i class="fas fa-less-than"></i>'}),
|
||||||
UI.extAdd = UC.newButton(undefined, undefined, {icon:'<i class="fas fa-plus"></i>'}),
|
UI.extAdd = UC.newButton(undefined, undefined, {icon:'<i class="fas fa-plus"></i>'}),
|
||||||
|
|
|
||||||
|
|
@ -1974,6 +1974,7 @@
|
||||||
UI.extAdd.onclick = function() {
|
UI.extAdd.onclick = function() {
|
||||||
let copy = clone(device.extruders[device.internal]);
|
let copy = clone(device.extruders[device.internal]);
|
||||||
copy.extSelect = [`T${device.extruders.length}`];
|
copy.extSelect = [`T${device.extruders.length}`];
|
||||||
|
copy.extDeselect = [];
|
||||||
device.extruders.push(copy);
|
device.extruders.push(copy);
|
||||||
device.internal = device.extruders.length - 1;
|
device.internal = device.extruders.length - 1;
|
||||||
updateExtruderFields(device);
|
updateExtruderFields(device);
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,8 @@
|
||||||
extruder = extruders[tool],
|
extruder = extruders[tool],
|
||||||
offset_x = extruder.extOffsetX,
|
offset_x = extruder.extOffsetX,
|
||||||
offset_y = extruder.extOffsetY,
|
offset_y = extruder.extOffsetY,
|
||||||
extrudeAbs = device.extrudeAbs,
|
extrudeAbs = device.extrudeAbs || false,
|
||||||
|
extrudeSet = false,
|
||||||
time = 0,
|
time = 0,
|
||||||
layer = 0,
|
layer = 0,
|
||||||
pause = [],
|
pause = [],
|
||||||
|
|
@ -135,7 +136,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
function appendAllSub(arr, pad) {
|
function appendAllSub(arr, pad) {
|
||||||
if (!arr) return;
|
if (!arr || arr.length === 0) return;
|
||||||
if (!Array.isArray(arr)) arr = [ arr ];
|
if (!Array.isArray(arr)) arr = [ arr ];
|
||||||
arr.forEach(function(line) { appendSub(line, pad) });
|
arr.forEach(function(line) { appendSub(line, pad) });
|
||||||
}
|
}
|
||||||
|
|
@ -156,10 +157,16 @@
|
||||||
let line = device.gcodePre[i];
|
let line = device.gcodePre[i];
|
||||||
if (line.indexOf('T0') >= 0) t0 = true; else
|
if (line.indexOf('T0') >= 0) t0 = true; else
|
||||||
if (line.indexOf('T1') >= 0) t1 = true; else
|
if (line.indexOf('T1') >= 0) t1 = true; else
|
||||||
if (line.indexOf('M82') >= 0) extrudeAbs = true; else
|
if (line.indexOf('M82') >= 0) {
|
||||||
if (line.indexOf('M83') >= 0) extrudeAbs = false; else
|
extrudeAbs = true;
|
||||||
if (line.indexOf('G90') >= 0) extrudeAbs = true; else
|
extrudeSet = true;
|
||||||
if (line.indexOf('G91') >= 0) extrudeAbs = false; else
|
} else
|
||||||
|
if (line.indexOf('M83') >= 0) {
|
||||||
|
extrudeAbs = false;
|
||||||
|
extrudeSet = true;
|
||||||
|
} else
|
||||||
|
if (line.indexOf('G90') >= 0 && !extrudeSet) extrudeAbs = true; else
|
||||||
|
if (line.indexOf('G91') >= 0 && !extrudeSet) extrudeAbs = false; else
|
||||||
if (line.indexOf('G92') === 0) {
|
if (line.indexOf('G92') === 0) {
|
||||||
line.split(";")[0].split(' ').forEach(function (tok) {
|
line.split(";")[0].split(' ').forEach(function (tok) {
|
||||||
let val = parseFloat(tok.substring(1) || 0) || 0;
|
let val = parseFloat(tok.substring(1) || 0) || 0;
|
||||||
|
|
@ -355,8 +362,9 @@
|
||||||
out = path[pidx];
|
out = path[pidx];
|
||||||
speedMMM = (out.speed || process.outputFeedrate) * 60;
|
speedMMM = (out.speed || process.outputFeedrate) * 60;
|
||||||
|
|
||||||
// look for extruder change and recalc emit factor
|
// look for extruder change, run scripts, recalc emit factor
|
||||||
if (out.tool !== undefined && out.tool !== tool) {
|
if (out.tool !== undefined && out.tool !== tool) {
|
||||||
|
appendAllSub(extruder.extDeselect);
|
||||||
tool = out.tool;
|
tool = out.tool;
|
||||||
subst.nozzle = subst.tool = tool;
|
subst.nozzle = subst.tool = tool;
|
||||||
extruder = extruders[tool];
|
extruder = extruders[tool];
|
||||||
|
|
|
||||||
|
|
@ -68,7 +68,9 @@ kiri.lang['en-us'] = {
|
||||||
dv_lzof_s: "laser off",
|
dv_lzof_s: "laser off",
|
||||||
dv_lzof_l: "gcode laser off script",
|
dv_lzof_l: "gcode laser off script",
|
||||||
dv_exts_s: "select",
|
dv_exts_s: "select",
|
||||||
dv_exts_l: "gcode to select this extruder",
|
dv_exts_l: "gcode run to enable this extruder",
|
||||||
|
dv_dext_s: "deselect",
|
||||||
|
dv_dext_l: "gcode run before enabling another extruder",
|
||||||
dv_extd_s: "deselect",
|
dv_extd_s: "deselect",
|
||||||
dv_extd_l: "gcode to deselect this extruder",
|
dv_extd_l: "gcode to deselect this extruder",
|
||||||
dv_exox_s: "offset x",
|
dv_exox_s: "offset x",
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue