From 4c4483226158800bc8192902ba9fa493cfa655be Mon Sep 17 00:00:00 2001
From: Owen Carter
Date: Mon, 15 Feb 2021 02:35:14 +0100
Subject: [PATCH 001/218] Seperate Laser and Mill start codes
---
src/components/settings.js | 10 ++++++----
src/lib/cam-gcode.js | 31 +++++++++++++++++++++++++------
src/reducers/settings.js | 4 +++-
3 files changed, 34 insertions(+), 11 deletions(-)
diff --git a/src/components/settings.js b/src/components/settings.js
index 8d5a23e0..c5ee6c15 100644
--- a/src/components/settings.js
+++ b/src/components/settings.js
@@ -266,11 +266,13 @@ class Settings extends React.Component {
-
-
+
+
+
+
-
-
+
+
diff --git a/src/lib/cam-gcode.js b/src/lib/cam-gcode.js
index e3285c81..4f6c461c 100644
--- a/src/lib/cam-gcode.js
+++ b/src/lib/cam-gcode.js
@@ -57,6 +57,11 @@ export function getGcode(settings, documents, operations, documentCacheHolder, s
const workers = [];
let jobIndex = 0;
+ let startCode = "";
+ let endCode = "";
+ let laserOps = false;
+ let millOps = false;
+
for (let opIndex = 0; opIndex < operations.length; ++opIndex) {
let op = expandHookGCode(operations[opIndex]);
@@ -132,23 +137,33 @@ export function getGcode(settings, documents, operations, documentCacheHolder, s
let { geometry, openGeometry, tabGeometry, filteredDocIds, docsWithImages } = preflight;
if (op.type === 'Laser Cut' || op.type === 'Laser Cut Inside' || op.type === 'Laser Cut Outside' || op.type === 'Laser Fill Path') {
-
+ laserOps = true;
+ if (startCode === "") startCode = settings.gcodeStart;
+ if (endCode === "") endCode = settings.gcodeEnd;
invokeWebWorker(require('worker-loader!./workers/cam-lasercut.js'), { settings, opIndex, op, geometry, openGeometry, tabGeometry }, cb, jobIndex)
} else if (op.type === 'Laser Raster') {
-
+ laserOps = true;
+ if (startCode === "") startCode = settings.gcodeStart;
+ if (endCode === "") endCode = settings.gcodeEnd;
getLaserRasterGcodeFromOp(settings, opIndex, op, docsWithImages, showAlert, (gcode)=>{jobDone(gcode,cb)}, progress, jobIndex, QE.chunk, workers);
} else if (op.type === 'Laser Raster Merge') {
-
+ laserOps = true;
+ if (startCode === "") startCode = settings.gcodeStart;
+ if (endCode === "") endCode = settings.gcodeEnd;
getLaserRasterMergeGcodeFromOp(settings, documentCacheHolder, opIndex, op, filteredDocIds, showAlert, (gcode) => { jobDone(gcode, cb) }, progress, jobIndex, QE.chunk, workers);
} else if (op.type.substring(0, 5) === 'Mill ') {
-
+ millOps = true;
+ if (startCode === "") startCode = settings.gcodeMillStart;
+ if (endCode === "") endCode = settings.gcodeMillEnd;
invokeWebWorker(require('worker-loader!./workers/cam-mill.js'), { settings, opIndex, op, geometry, openGeometry, tabGeometry }, cb, jobIndex)
} else if (op.type.substring(0, 6) === 'Lathe ') {
-
+ millOps = true;
+ if (startCode === "") startCode = settings.gcodeMillStart;
+ if (endCode === "") endCode = settings.gcodeMillEnd;
invokeWebWorker(require('worker-loader!./workers/cam-lathe.js'), { settings, opIndex, op, geometry, openGeometry, tabGeometry }, cb, jobIndex)
} else {
@@ -183,8 +198,12 @@ export function getGcode(settings, documents, operations, documentCacheHolder, s
QE.start((err) => {
progress(100)
let ellapsed=(new Date().getTime()-starttime)/1000;
+ if (laserOps && millOps) {
+ showAlert("Mixed operation types detected.","warning");
+ showAlert("Mixing Laser and Mill/Lathe operations in the same job is not recommended; only use the generated code if you understand the consequences and are sure this is what you want!","danger");
+ }
showAlert("Ellapsed: "+hhmmss(ellapsed)+String(Number(ellapsed-Math.floor(ellapsed)).toFixed(3)).substr(1),"info");
- done(settings.gcodeStart + gcode.join('\r\n') + settings.gcodeEnd);
+ done(startCode + gcode.join('\r\n') + endCode);
})
diff --git a/src/reducers/settings.js b/src/reducers/settings.js
index 77171c19..0bb53a4e 100644
--- a/src/reducers/settings.js
+++ b/src/reducers/settings.js
@@ -119,7 +119,9 @@ export const SETTINGS_INITIALSTATE = {
toolTestDuration: 0,
gcodeStart: "G21 ; Set units to mm\r\nG90 ; Absolute positioning\r\n",
- gcodeEnd: "M5 ; Switch tool offEnd\r\n",
+ gcodeMillStart: "G21 ; Set units to mm\r\nG90 ; Absolute positioning\r\n",
+ gcodeEnd: "M5 ; Switch tool off\r\n",
+ gcodeMillEnd: "M5 ; Switch tool off\r\n",
gcodeHoming: "",
gcodeGenerator: "default",
gcodeToolOn: "",
From 8a78f064c28881532568602440af64317acc77dd Mon Sep 17 00:00:00 2001
From: Owen Carter
Date: Mon, 15 Feb 2021 17:08:03 +0100
Subject: [PATCH 002/218] Pre-populate fill line distance with beam diameter
---
src/reducers/operation.js | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/reducers/operation.js b/src/reducers/operation.js
index b90bc472..3f103754 100644
--- a/src/reducers/operation.js
+++ b/src/reducers/operation.js
@@ -91,6 +91,7 @@ export const OPERATION_DEFAULTS = (state) => {
if (!state) state = GlobalStore().getState()
return {
laserDiameter: state.settings.machineBeamDiameter,
+ lineDistance: state.settings.machineBeamDiameter,
useBlower: state.settings.machineBlowerEnabled,
startHeight: isFinite(state.settings.machineZStartHeight) ? state.settings.machineZStartHeight : '',
}
From 72bd3de461af6f919d09e7fd0ea401746e8488f8 Mon Sep 17 00:00:00 2001
From: Owen Carter
Date: Mon, 15 Feb 2021 17:27:29 +0100
Subject: [PATCH 003/218] Allow more threads, improve info wording about this
---
src/components/settings.js | 2 +-
src/reducers/settings.js | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/components/settings.js b/src/components/settings.js
index c5ee6c15..aaadee5f 100644
--- a/src/components/settings.js
+++ b/src/components/settings.js
@@ -281,7 +281,7 @@ class Settings extends React.Component {
Gcode generation
- Higher number of threads demands powerful host computer, but increases performance on large files with lots of operations.
,"Gcode threads") }} />
+ Increasing this can improve performance on large files with lots of operations, but requres a powerful host computer for maximum benefit.
Should ideally match the number of threads on your machine -1,"Gcode threads") }} />
Enter from 0.1 (Ultra High Precision - Slow) to 2.0 (Low Precision - Fast) to achieve different levels of curve to gcode performance
,"Gcode Linearization Factor")} } />
diff --git a/src/reducers/settings.js b/src/reducers/settings.js
index 0bb53a4e..e030a1af 100644
--- a/src/reducers/settings.js
+++ b/src/reducers/settings.js
@@ -16,7 +16,7 @@ export const SETTINGS_VALIDATION_RULES = {
gcodeMoveUnits: 'in:mm/s,mm/min',
gcodeToolTestPower: 'required|numeric|min:0|max:100',
gcodeToolTestDuration: 'required|numeric|min:0',
- gcodeConcurrency: 'required|numeric|min:1|max:5',
+ gcodeConcurrency: 'required|numeric|min:1|max:15',
gcodeCurvePrecision: 'required|numeric|min:0.1|max:2',
machineZEnabled: 'boolean',
From 458a0555236222e1536549c965a2fd477d358ff7 Mon Sep 17 00:00:00 2001
From: Owen Carter
Date: Tue, 16 Feb 2021 02:36:33 +0100
Subject: [PATCH 004/218] Improved help info, allow empty Mill Start/End codes
---
src/components/forms.js | 6 ++--
src/components/settings.js | 62 ++++++++++++++++++++++++++------------
src/lib/cam-gcode.js | 7 +++--
3 files changed, 51 insertions(+), 24 deletions(-)
diff --git a/src/components/forms.js b/src/components/forms.js
index c25812ed..d1696ff6 100644
--- a/src/components/forms.js
+++ b/src/components/forms.js
@@ -207,7 +207,7 @@ export function ToggleField({object, field, description, units = "", setAttrs, d
}
-export function QuadrantField({object, field, description, setAttrs, dispatch, ...rest}) {
+export function QuadrantField({object, field, description, setAttrs, dispatch, info, ...rest}) {
let hasErrors = typeof (rest.errors) !== "undefined" && rest.errors !== null && typeof (rest.errors[field]) !== "undefined";
let errors = hasErrors ? rest.errors[field].join(". ") : null; delete rest.errors;
let radios = ["TL", "TR", "C", "BL", "BR"];
@@ -228,7 +228,7 @@ export function QuadrantField({object, field, description, setAttrs, dispatch, .
}
let input =
-
+
{info}