add support for start and end code

This commit is contained in:
casperlamboo 2018-01-15 13:44:59 +01:00
parent 43af4e05ab
commit 10fb3714c7
3 changed files with 31 additions and 11 deletions

View File

@ -122,6 +122,15 @@ export default class {
return this;
}
addGCode(gcode, { temperature, bedTemperature, heatedbed }) {
gcode = gcode
.replace(/{temperature}/gi, temperature)
.replace(/{bedTemperature}/gi, bedTemperature)
.replace(/{if heatedBed}/gi, heatedbed ? '' : ';');
this._addGCode(gcode);
}
getGCode() {
return {
gcode: this._gcode,

View File

@ -76,16 +76,20 @@ export default function(settings, geometry, openObjectIndexes, constructLinePrev
function gcodeToString(gcode) {
const currentValues = {};
return gcode.reduce((string, command) => {
let first = true;
for (const action in command) {
const value = command[action];
const currentValue = currentValues[action];
if (first) {
string += `${action}${value}`;
first = false;
} else if (currentValue !== value) {
string += ` ${action}${value}`;
currentValues[action] = value;
if (typeof command === 'string') {
string += command;
} else {
let first = true;
for (const action in command) {
const value = command[action];
const currentValue = currentValues[action];
if (first) {
string += `${action}${value}`;
first = false;
} else if (currentValue !== value) {
string += ` ${action}${value}`;
currentValues[action] = value;
}
}
}
string += '\n';
@ -101,7 +105,10 @@ function createGcodeGeometry(gcode) {
let lastPoint = [0, 0, 0];
for (let i = 0; i < gcode.length; i ++) {
const { G, F, X, Y, Z } = gcode[i];
const command = gcode[i];
if (typeof command === 'string') continue;
const { G, F, X, Y, Z } = command;
if (X || Y || Z) {
if (G === 1) {

View File

@ -22,6 +22,8 @@ export default function slicesToGCode(slices, settings) {
const gcode = new GCode(nozzleToFilamentRatio);
if (settings.startCode) gcode.addGCode(settings.startCode, settings);
const defaultProfile = {
travelProfile: travel,
retractionProfile: retraction
@ -77,6 +79,8 @@ export default function slicesToGCode(slices, settings) {
}
}
if (settings.endCode) gcode.addGCode(settings.endCode, settings);
return gcode.getGCode();
}