diff --git a/src/main/java/de/thomas_oster/liblasercut/drivers/GenericGcodeDriver.java b/src/main/java/de/thomas_oster/liblasercut/drivers/GenericGcodeDriver.java index 7411a305..72c80a88 100644 --- a/src/main/java/de/thomas_oster/liblasercut/drivers/GenericGcodeDriver.java +++ b/src/main/java/de/thomas_oster/liblasercut/drivers/GenericGcodeDriver.java @@ -528,17 +528,20 @@ protected void setFocus(PrintStream out, double focus) throws IOException { protected void move(PrintStream out, double x, double y, double resolution) throws IOException { x = isFlipXaxis() ? getBedWidth() - Util.px2mm(x, resolution) : Util.px2mm(x, resolution); y = isFlipYaxis() ? getBedHeight() - Util.px2mm(y, resolution) : Util.px2mm(y, resolution); - currentSpeed = getTravel_speed(); + + String append = ""; if (blankLaserDuringRapids) { currentPower = Double.NaN; // set to invalid value to force new S-value at next G1 - sendLine("G0 X%s Y%s F%d S0", formatDouble(x, getGCodeDigits()), formatDouble(y, getGCodeDigits()), (int) (travel_speed)); - } - else + append = " S0"; } + if (isSendFeedDuringRapids()) { - sendLine("G0 X%s Y%s F%d", formatDouble(x, getGCodeDigits()), formatDouble(y, getGCodeDigits()), (int) (travel_speed)); + currentSpeed = getTravel_speed(); + append += String.format(FORMAT_LOCALE, " F%f", currentSpeed); } + sendLine("G0 X%s Y%s " + append, formatDouble(x, getGCodeDigits()), formatDouble(y, getGCodeDigits()), (int) (travel_speed)); + } protected void line(PrintStream out, double x, double y, double resolution) throws IOException { @@ -589,6 +592,11 @@ private void writeShutdownCode() throws IOException { protected void sendLine(String text, Object... parameters) throws IOException { + if (text.startsWith("G0") || text.startsWith("G1")) { + // Remove spaces from all standard moves. + // Leave all other commands unchanged because they could be user-specific display messages from the init code. + text = text.replace(" ", ""); + } out.format(FORMAT_LOCALE, text+LINEEND(), parameters); out.flush(); if (isWaitForOKafterEachLine()) @@ -917,14 +925,14 @@ else if (this.port != null) public void sendJob(LaserJob job, ProgressListener pl, List warnings) throws IllegalJobException, Exception { sendOrSaveJob(job, pl, warnings, null); } - + /*** * Send the job to the port or file. * If a filePrintStream is given (!= null), write the job to the file. * Else (filePrintStream = null), connect to the configured network port or serial port. */ public void sendOrSaveJob(LaserJob job, ProgressListener pl, List warnings, PrintStream filePrintStream) throws IllegalJobException, Exception { - + pl.progressChanged(this, 0); pl.taskChanged(this, "checking job"); checkJob(job); @@ -934,7 +942,7 @@ public void sendOrSaveJob(LaserJob job, ProgressListener pl, List warnin if (filePrintStream != null) { // write to file this.out = filePrintStream; } else { // send to network - connect(pl); + connect(pl); } pl.taskChanged(this, "sending"); try { @@ -945,7 +953,7 @@ public void sendOrSaveJob(LaserJob job, ProgressListener pl, List warnin if (filePrintStream != null) { // write to file filePrintStream.close(); } else { // send to network - disconnect(this.jobName); + disconnect(this.jobName); } } pl.taskChanged(this, "sent."); @@ -1322,4 +1330,16 @@ public GenericGcodeDriver clone() { return clone; } + /** + * Send the F (travelFeed) during G0 rapid moves? + * + * true: Yes. Best for compatibility. + * false: No. Shorter G-Code and still works for standards-compliant G-Code interpreters. (Note that G0 means "move as fast as possible", so specifying a feed-speed makes no sense.) + */ + // TODO: make configurable in the future + protected boolean isSendFeedDuringRapids() + { + return true; + } + } diff --git a/src/main/java/de/thomas_oster/liblasercut/drivers/Grbl.java b/src/main/java/de/thomas_oster/liblasercut/drivers/Grbl.java index 54ac7765..123e868e 100644 --- a/src/main/java/de/thomas_oster/liblasercut/drivers/Grbl.java +++ b/src/main/java/de/thomas_oster/liblasercut/drivers/Grbl.java @@ -114,9 +114,12 @@ public String getModelName() protected void sendLineWithoutWait(String text, Object... parameters) throws IOException { boolean wasSetWaitingForOk = isWaitForOKafterEachLine(); - setWaitForOKafterEachLine(false); - sendLine(text, parameters); - setWaitForOKafterEachLine(wasSetWaitingForOk); + try { + setWaitForOKafterEachLine(false); + sendLine(text, parameters); + } finally { + setWaitForOKafterEachLine(wasSetWaitingForOk); + } } /** @@ -158,43 +161,11 @@ protected String waitForIdentificationLine(ProgressListener pl) throws IOExcepti return null; } - /** - * Send a G0 rapid move to Grbl. - * Doesn't include travel speed since grbl ignores that anyway. - */ @Override - protected void move(PrintStream out, double x, double y, double resolution) throws IOException { - x = isFlipXaxis() ? getBedWidth() - Util.px2mm(x, resolution) : Util.px2mm(x, resolution); - y = isFlipYaxis() ? getBedHeight() - Util.px2mm(y, resolution) : Util.px2mm(y, resolution); - currentSpeed = getTravel_speed(); - if (blankLaserDuringRapids) - { - currentPower = -1; // set to invalid value to force new S-value at next G1 - sendLine("G0 X%f Y%f S0", x, y); - } - else + protected boolean isSendFeedDuringRapids() { - sendLine("G0 X%f Y%f", x, y); - } - } - - /** - * Send a line of gcode to the cutter, stripping out any whitespace in the process - */ - @Override - protected void sendLine(String text, Object... parameters) throws IOException - { - out.format(FORMAT_LOCALE, text.replace(" ", "")+LINEEND(), parameters); - // System.out.println(String.format(FORMAT_LOCALE, "> "+text+LINEEND(), parameters)); - out.flush(); - if (isWaitForOKafterEachLine()) - { - String line = waitForLine(); - if (!"ok".equals(line)) - { - throw new IOException("Lasercutter did not respond 'ok', but '"+line+"'instead."); - } - } + // Grbl ignores the F parameter during G0. + return false; } @Override diff --git a/test-output/de.thomas_oster.liblasercut.drivers.GenericGcodeDriver.out b/test-output/de.thomas_oster.liblasercut.drivers.GenericGcodeDriver.out index 52e7503d..e9491737 100644 --- a/test-output/de.thomas_oster.liblasercut.drivers.GenericGcodeDriver.out +++ b/test-output/de.thomas_oster.liblasercut.drivers.GenericGcodeDriver.out @@ -1,75 +1,75 @@ G21 G90 -G0 Z0 -G0 X0.508 Y0.508 F3600 -G1 X25.4 Y50.8 S1 F1200 -G1 X50.8 Y0 -G0 X101.6 Y0 F3600 -G1 X76.2 Y5.08 F1200 -G1 X76.1492 Y20.32 -G1 X76.1492 Y22.86 -G1 X76.0984 Y25.4 -G1 X76.1492 Y30.48 -G1 X76.2 Y45.72 -G1 X101.6 Y50.8 -G0 X0 Y1.8796 F3600 -G1 X0.6604 Y1.8796 S0 F1200 -G1 X0.762 Y1.8796 S1 -G1 X0.8636 Y1.8796 -G1 X0.9144 Y1.8796 -G1 X1.0668 Y1.8796 -G1 X1.1176 Y1.8796 -G1 X6.096 Y1.8796 S0 -G0 X0 Y1.9304 F3600 -G1 X0.6604 Y1.9304 F1200 -G1 X0.8128 Y1.9304 S1 -G1 X0.8636 Y1.9304 -G1 X0.9652 Y1.9304 -G1 X1.0668 Y1.9304 -G1 X1.1176 Y1.9304 -G1 X6.096 Y1.9304 S0 -G0 X0 Y1.9812 F3600 -G1 X0.6604 Y1.9812 F1200 -G1 X1.1176 Y1.9812 S1 -G1 X6.096 Y1.9812 S0 -G0 X0 Y2.032 F3600 -G1 X0.6604 Y2.032 F1200 -G1 X0.762 Y2.032 S1 -G1 X1.1176 Y2.032 -G1 X6.096 Y2.032 S0 -G0 X0 Y2.0828 F3600 -G1 X0.6604 Y2.0828 F1200 -G1 X1.1176 Y2.0828 S1 -G1 X6.096 Y2.0828 S0 -G0 X0 Y2.1336 F3600 -G1 X0.6604 Y2.1336 F1200 -G1 X0.762 Y2.1336 S1 -G1 X1.1176 Y2.1336 -G1 X6.096 Y2.1336 S0 -G0 X0 Y3.9116 F3600 -G1 X2.2352 Y3.9116 F1200 -G1 X2.3368 Y3.9116 S1 -G1 X2.3876 Y3.9116 S0 -G1 X2.54 Y3.9116 S1 -G1 X7.5184 Y3.9116 S0 -G0 X0 Y3.9624 F3600 -G1 X2.286 Y3.9624 F1200 -G1 X2.3368 Y3.9624 S1 -G1 X2.4384 Y3.9624 S0 -G1 X2.54 Y3.9624 S1 -G1 X7.5184 Y3.9624 S0 -G0 X0 Y4.0132 F3600 -G1 X2.1336 Y4.0132 F1200 -G1 X2.1844 Y4.0132 S0.75 -G1 X2.2352 Y4.0132 S0 -G1 X2.5908 Y4.0132 S0.75 -G1 X7.5692 Y4.0132 S0 -G0 X0 Y4.064 F3600 -G1 X2.2352 Y4.064 F1200 -G1 X2.5908 Y4.064 S0.5 -G1 X7.5692 Y4.064 S0 -G0 X0 Y4.1656 F3600 -G1 X2.1336 Y4.1656 F1200 -G1 X2.2352 Y4.1656 S1 -G1 X7.2136 Y4.1656 S0 -G0 X0 Y0 +G0Z0 +G0X0.508Y0.508F3600.000000 +G1X25.4Y50.8S1F1200 +G1X50.8Y0 +G0X101.6Y0F3600.000000 +G1X76.2Y5.08F1200 +G1X76.1492Y20.32 +G1X76.1492Y22.86 +G1X76.0984Y25.4 +G1X76.1492Y30.48 +G1X76.2Y45.72 +G1X101.6Y50.8 +G0X0Y1.8796F3600.000000 +G1X0.6604Y1.8796S0F1200 +G1X0.762Y1.8796S1 +G1X0.8636Y1.8796 +G1X0.9144Y1.8796 +G1X1.0668Y1.8796 +G1X1.1176Y1.8796 +G1X6.096Y1.8796S0 +G0X0Y1.9304F3600.000000 +G1X0.6604Y1.9304F1200 +G1X0.8128Y1.9304S1 +G1X0.8636Y1.9304 +G1X0.9652Y1.9304 +G1X1.0668Y1.9304 +G1X1.1176Y1.9304 +G1X6.096Y1.9304S0 +G0X0Y1.9812F3600.000000 +G1X0.6604Y1.9812F1200 +G1X1.1176Y1.9812S1 +G1X6.096Y1.9812S0 +G0X0Y2.032F3600.000000 +G1X0.6604Y2.032F1200 +G1X0.762Y2.032S1 +G1X1.1176Y2.032 +G1X6.096Y2.032S0 +G0X0Y2.0828F3600.000000 +G1X0.6604Y2.0828F1200 +G1X1.1176Y2.0828S1 +G1X6.096Y2.0828S0 +G0X0Y2.1336F3600.000000 +G1X0.6604Y2.1336F1200 +G1X0.762Y2.1336S1 +G1X1.1176Y2.1336 +G1X6.096Y2.1336S0 +G0X0Y3.9116F3600.000000 +G1X2.2352Y3.9116F1200 +G1X2.3368Y3.9116S1 +G1X2.3876Y3.9116S0 +G1X2.54Y3.9116S1 +G1X7.5184Y3.9116S0 +G0X0Y3.9624F3600.000000 +G1X2.286Y3.9624F1200 +G1X2.3368Y3.9624S1 +G1X2.4384Y3.9624S0 +G1X2.54Y3.9624S1 +G1X7.5184Y3.9624S0 +G0X0Y4.0132F3600.000000 +G1X2.1336Y4.0132F1200 +G1X2.1844Y4.0132S0.75 +G1X2.2352Y4.0132S0 +G1X2.5908Y4.0132S0.75 +G1X7.5692Y4.0132S0 +G0X0Y4.064F3600.000000 +G1X2.2352Y4.064F1200 +G1X2.5908Y4.064S0.5 +G1X7.5692Y4.064S0 +G0X0Y4.1656F3600.000000 +G1X2.1336Y4.1656F1200 +G1X2.2352Y4.1656S1 +G1X7.2136Y4.1656S0 +G0X0Y0 diff --git a/test-output/de.thomas_oster.liblasercut.drivers.Grbl.out b/test-output/de.thomas_oster.liblasercut.drivers.Grbl.out index 7529b1c6..a6870b9c 100644 --- a/test-output/de.thomas_oster.liblasercut.drivers.Grbl.out +++ b/test-output/de.thomas_oster.liblasercut.drivers.Grbl.out @@ -1 +1 @@ -G21 G90 M3 G0Z0S0 G0X0.508000Y0.508000S0 G1X25.4Y50.8S1000F1200 G1X50.8Y0 G0X101.600000Y0.000000S0 G1X76.2Y5.08S1000F1200 G1X76.1492Y20.32 G1X76.1492Y22.86 G1X76.0984Y25.4 G1X76.1492Y30.48 G1X76.2Y45.72 G1X101.6Y50.8 G0X0.000000Y1.879600S0 G1X0.6604Y1.8796S0F1200 G1X0.762Y1.8796S1000 G1X0.8636Y1.8796 G1X0.9144Y1.8796 G1X1.0668Y1.8796 G1X1.1176Y1.8796 G1X6.096Y1.8796S0 G0X0.000000Y1.930400S0 G1X0.6604Y1.9304S0F1200 G1X0.8128Y1.9304S1000 G1X0.8636Y1.9304 G1X0.9652Y1.9304 G1X1.0668Y1.9304 G1X1.1176Y1.9304 G1X6.096Y1.9304S0 G0X0.000000Y1.981200S0 G1X0.6604Y1.9812S0F1200 G1X1.1176Y1.9812S1000 G1X6.096Y1.9812S0 G0X0.000000Y2.032000S0 G1X0.6604Y2.032S0F1200 G1X0.762Y2.032S1000 G1X1.1176Y2.032 G1X6.096Y2.032S0 G0X0.000000Y2.082800S0 G1X0.6604Y2.0828S0F1200 G1X1.1176Y2.0828S1000 G1X6.096Y2.0828S0 G0X0.000000Y2.133600S0 G1X0.6604Y2.1336S0F1200 G1X0.762Y2.1336S1000 G1X1.1176Y2.1336 G1X6.096Y2.1336S0 G0X0.000000Y3.911600S0 G1X2.2352Y3.9116S0F1200 G1X2.3368Y3.9116S1000 G1X2.3876Y3.9116S0 G1X2.54Y3.9116S1000 G1X7.5184Y3.9116S0 G0X0.000000Y3.962400S0 G1X2.286Y3.9624S0F1200 G1X2.3368Y3.9624S1000 G1X2.4384Y3.9624S0 G1X2.54Y3.9624S1000 G1X7.5184Y3.9624S0 G0X0.000000Y4.013200S0 G1X2.1336Y4.0132S0F1200 G1X2.1844Y4.0132S750 G1X2.2352Y4.0132S0 G1X2.5908Y4.0132S750 G1X7.5692Y4.0132S0 G0X0.000000Y4.064000S0 G1X2.2352Y4.064S0F1200 G1X2.5908Y4.064S500 G1X7.5692Y4.064S0 G0X0.000000Y4.165600S0 G1X2.1336Y4.1656S0F1200 G1X2.2352Y4.1656S1000 G1X7.2136Y4.1656S0 M5 G0X0Y0 \ No newline at end of file +G21 G90 M3 G0Z0S0 G0X0.508Y0.508S0 G1X25.4Y50.8S1000F1200 G1X50.8Y0 G0X101.6Y0S0 G1X76.2Y5.08S1000 G1X76.1492Y20.32 G1X76.1492Y22.86 G1X76.0984Y25.4 G1X76.1492Y30.48 G1X76.2Y45.72 G1X101.6Y50.8 G0X0Y1.8796S0 G1X0.6604Y1.8796S0 G1X0.762Y1.8796S1000 G1X0.8636Y1.8796 G1X0.9144Y1.8796 G1X1.0668Y1.8796 G1X1.1176Y1.8796 G1X6.096Y1.8796S0 G0X0Y1.9304S0 G1X0.6604Y1.9304S0 G1X0.8128Y1.9304S1000 G1X0.8636Y1.9304 G1X0.9652Y1.9304 G1X1.0668Y1.9304 G1X1.1176Y1.9304 G1X6.096Y1.9304S0 G0X0Y1.9812S0 G1X0.6604Y1.9812S0 G1X1.1176Y1.9812S1000 G1X6.096Y1.9812S0 G0X0Y2.032S0 G1X0.6604Y2.032S0 G1X0.762Y2.032S1000 G1X1.1176Y2.032 G1X6.096Y2.032S0 G0X0Y2.0828S0 G1X0.6604Y2.0828S0 G1X1.1176Y2.0828S1000 G1X6.096Y2.0828S0 G0X0Y2.1336S0 G1X0.6604Y2.1336S0 G1X0.762Y2.1336S1000 G1X1.1176Y2.1336 G1X6.096Y2.1336S0 G0X0Y3.9116S0 G1X2.2352Y3.9116S0 G1X2.3368Y3.9116S1000 G1X2.3876Y3.9116S0 G1X2.54Y3.9116S1000 G1X7.5184Y3.9116S0 G0X0Y3.9624S0 G1X2.286Y3.9624S0 G1X2.3368Y3.9624S1000 G1X2.4384Y3.9624S0 G1X2.54Y3.9624S1000 G1X7.5184Y3.9624S0 G0X0Y4.0132S0 G1X2.1336Y4.0132S0 G1X2.1844Y4.0132S750 G1X2.2352Y4.0132S0 G1X2.5908Y4.0132S750 G1X7.5692Y4.0132S0 G0X0Y4.064S0 G1X2.2352Y4.064S0 G1X2.5908Y4.064S500 G1X7.5692Y4.064S0 G0X0Y4.1656S0 G1X2.1336Y4.1656S0 G1X2.2352Y4.1656S1000 G1X7.2136Y4.1656S0 M5 G0X0Y0 \ No newline at end of file diff --git a/test-output/de.thomas_oster.liblasercut.drivers.Marlin.out b/test-output/de.thomas_oster.liblasercut.drivers.Marlin.out index 07edb550..9ff111a9 100644 --- a/test-output/de.thomas_oster.liblasercut.drivers.Marlin.out +++ b/test-output/de.thomas_oster.liblasercut.drivers.Marlin.out @@ -2,78 +2,78 @@ G21 G90 G28 XY M5 -G0 Z0 -G0 X0.508 Y0.508 F3600 -G1 X25.4 Y50.8 S100 F1200 -G1 X50.8 Y0 -G0 X101.6 Y0 F3600 -G1 X76.2 Y5.08 F1200 -G1 X76.1492 Y20.32 -G1 X76.1492 Y22.86 -G1 X76.0984 Y25.4 -G1 X76.1492 Y30.48 -G1 X76.2 Y45.72 -G1 X101.6 Y50.8 -G0 X0 Y1.8796 F3600 -G1 X0.6604 Y1.8796 S0 F1200 -G1 X0.762 Y1.8796 S100 -G1 X0.8636 Y1.8796 -G1 X0.9144 Y1.8796 -G1 X1.0668 Y1.8796 -G1 X1.1176 Y1.8796 -G1 X6.096 Y1.8796 S0 -G0 X0 Y1.9304 F3600 -G1 X0.6604 Y1.9304 F1200 -G1 X0.8128 Y1.9304 S100 -G1 X0.8636 Y1.9304 -G1 X0.9652 Y1.9304 -G1 X1.0668 Y1.9304 -G1 X1.1176 Y1.9304 -G1 X6.096 Y1.9304 S0 -G0 X0 Y1.9812 F3600 -G1 X0.6604 Y1.9812 F1200 -G1 X1.1176 Y1.9812 S100 -G1 X6.096 Y1.9812 S0 -G0 X0 Y2.032 F3600 -G1 X0.6604 Y2.032 F1200 -G1 X0.762 Y2.032 S100 -G1 X1.1176 Y2.032 -G1 X6.096 Y2.032 S0 -G0 X0 Y2.0828 F3600 -G1 X0.6604 Y2.0828 F1200 -G1 X1.1176 Y2.0828 S100 -G1 X6.096 Y2.0828 S0 -G0 X0 Y2.1336 F3600 -G1 X0.6604 Y2.1336 F1200 -G1 X0.762 Y2.1336 S100 -G1 X1.1176 Y2.1336 -G1 X6.096 Y2.1336 S0 -G0 X0 Y3.9116 F3600 -G1 X2.2352 Y3.9116 F1200 -G1 X2.3368 Y3.9116 S100 -G1 X2.3876 Y3.9116 S0 -G1 X2.54 Y3.9116 S100 -G1 X7.5184 Y3.9116 S0 -G0 X0 Y3.9624 F3600 -G1 X2.286 Y3.9624 F1200 -G1 X2.3368 Y3.9624 S100 -G1 X2.4384 Y3.9624 S0 -G1 X2.54 Y3.9624 S100 -G1 X7.5184 Y3.9624 S0 -G0 X0 Y4.0132 F3600 -G1 X2.1336 Y4.0132 F1200 -G1 X2.1844 Y4.0132 S75 -G1 X2.2352 Y4.0132 S0 -G1 X2.5908 Y4.0132 S75 -G1 X7.5692 Y4.0132 S0 -G0 X0 Y4.064 F3600 -G1 X2.2352 Y4.064 F1200 -G1 X2.5908 Y4.064 S50 -G1 X7.5692 Y4.064 S0 -G0 X0 Y4.1656 F3600 -G1 X2.1336 Y4.1656 F1200 -G1 X2.2352 Y4.1656 S100 -G1 X7.2136 Y4.1656 S0 -G0 X0 Y0 +G0Z0 +G0X0.508Y0.508F3600.000000 +G1X25.4Y50.8S100F1200 +G1X50.8Y0 +G0X101.6Y0F3600.000000 +G1X76.2Y5.08F1200 +G1X76.1492Y20.32 +G1X76.1492Y22.86 +G1X76.0984Y25.4 +G1X76.1492Y30.48 +G1X76.2Y45.72 +G1X101.6Y50.8 +G0X0Y1.8796F3600.000000 +G1X0.6604Y1.8796S0F1200 +G1X0.762Y1.8796S100 +G1X0.8636Y1.8796 +G1X0.9144Y1.8796 +G1X1.0668Y1.8796 +G1X1.1176Y1.8796 +G1X6.096Y1.8796S0 +G0X0Y1.9304F3600.000000 +G1X0.6604Y1.9304F1200 +G1X0.8128Y1.9304S100 +G1X0.8636Y1.9304 +G1X0.9652Y1.9304 +G1X1.0668Y1.9304 +G1X1.1176Y1.9304 +G1X6.096Y1.9304S0 +G0X0Y1.9812F3600.000000 +G1X0.6604Y1.9812F1200 +G1X1.1176Y1.9812S100 +G1X6.096Y1.9812S0 +G0X0Y2.032F3600.000000 +G1X0.6604Y2.032F1200 +G1X0.762Y2.032S100 +G1X1.1176Y2.032 +G1X6.096Y2.032S0 +G0X0Y2.0828F3600.000000 +G1X0.6604Y2.0828F1200 +G1X1.1176Y2.0828S100 +G1X6.096Y2.0828S0 +G0X0Y2.1336F3600.000000 +G1X0.6604Y2.1336F1200 +G1X0.762Y2.1336S100 +G1X1.1176Y2.1336 +G1X6.096Y2.1336S0 +G0X0Y3.9116F3600.000000 +G1X2.2352Y3.9116F1200 +G1X2.3368Y3.9116S100 +G1X2.3876Y3.9116S0 +G1X2.54Y3.9116S100 +G1X7.5184Y3.9116S0 +G0X0Y3.9624F3600.000000 +G1X2.286Y3.9624F1200 +G1X2.3368Y3.9624S100 +G1X2.4384Y3.9624S0 +G1X2.54Y3.9624S100 +G1X7.5184Y3.9624S0 +G0X0Y4.0132F3600.000000 +G1X2.1336Y4.0132F1200 +G1X2.1844Y4.0132S75 +G1X2.2352Y4.0132S0 +G1X2.5908Y4.0132S75 +G1X7.5692Y4.0132S0 +G0X0Y4.064F3600.000000 +G1X2.2352Y4.064F1200 +G1X2.5908Y4.064S50 +G1X7.5692Y4.064S0 +G0X0Y4.1656F3600.000000 +G1X2.1336Y4.1656F1200 +G1X2.2352Y4.1656S100 +G1X7.2136Y4.1656S0 +G0X0Y0 M5 G28 XY diff --git a/test-output/de.thomas_oster.liblasercut.drivers.SmoothieBoard.out b/test-output/de.thomas_oster.liblasercut.drivers.SmoothieBoard.out index 3be0121f..bfd1db5f 100644 --- a/test-output/de.thomas_oster.liblasercut.drivers.SmoothieBoard.out +++ b/test-output/de.thomas_oster.liblasercut.drivers.SmoothieBoard.out @@ -1,77 +1,77 @@ G21 G90 M3 -G0 Z0 -G0 X0.508 Y0.508 F3600 -G1 X25.4 Y50.8 S1 F1200 -G1 X50.8 Y0 -G0 X101.6 Y0 F3600 -G1 X76.2 Y5.08 F1200 -G1 X76.1492 Y20.32 -G1 X76.1492 Y22.86 -G1 X76.0984 Y25.4 -G1 X76.1492 Y30.48 -G1 X76.2 Y45.72 -G1 X101.6 Y50.8 -G0 X0 Y1.8796 F3600 -G1 X0.6604 Y1.8796 S0 F1200 -G1 X0.762 Y1.8796 S1 -G1 X0.8636 Y1.8796 -G1 X0.9144 Y1.8796 -G1 X1.0668 Y1.8796 -G1 X1.1176 Y1.8796 -G1 X6.096 Y1.8796 S0 -G0 X0 Y1.9304 F3600 -G1 X0.6604 Y1.9304 F1200 -G1 X0.8128 Y1.9304 S1 -G1 X0.8636 Y1.9304 -G1 X0.9652 Y1.9304 -G1 X1.0668 Y1.9304 -G1 X1.1176 Y1.9304 -G1 X6.096 Y1.9304 S0 -G0 X0 Y1.9812 F3600 -G1 X0.6604 Y1.9812 F1200 -G1 X1.1176 Y1.9812 S1 -G1 X6.096 Y1.9812 S0 -G0 X0 Y2.032 F3600 -G1 X0.6604 Y2.032 F1200 -G1 X0.762 Y2.032 S1 -G1 X1.1176 Y2.032 -G1 X6.096 Y2.032 S0 -G0 X0 Y2.0828 F3600 -G1 X0.6604 Y2.0828 F1200 -G1 X1.1176 Y2.0828 S1 -G1 X6.096 Y2.0828 S0 -G0 X0 Y2.1336 F3600 -G1 X0.6604 Y2.1336 F1200 -G1 X0.762 Y2.1336 S1 -G1 X1.1176 Y2.1336 -G1 X6.096 Y2.1336 S0 -G0 X0 Y3.9116 F3600 -G1 X2.2352 Y3.9116 F1200 -G1 X2.3368 Y3.9116 S1 -G1 X2.3876 Y3.9116 S0 -G1 X2.54 Y3.9116 S1 -G1 X7.5184 Y3.9116 S0 -G0 X0 Y3.9624 F3600 -G1 X2.286 Y3.9624 F1200 -G1 X2.3368 Y3.9624 S1 -G1 X2.4384 Y3.9624 S0 -G1 X2.54 Y3.9624 S1 -G1 X7.5184 Y3.9624 S0 -G0 X0 Y4.0132 F3600 -G1 X2.1336 Y4.0132 F1200 -G1 X2.1844 Y4.0132 S0.75 -G1 X2.2352 Y4.0132 S0 -G1 X2.5908 Y4.0132 S0.75 -G1 X7.5692 Y4.0132 S0 -G0 X0 Y4.064 F3600 -G1 X2.2352 Y4.064 F1200 -G1 X2.5908 Y4.064 S0.5 -G1 X7.5692 Y4.064 S0 -G0 X0 Y4.1656 F3600 -G1 X2.1336 Y4.1656 F1200 -G1 X2.2352 Y4.1656 S1 -G1 X7.2136 Y4.1656 S0 -G0 X0 Y0 +G0Z0 +G0X0.508Y0.508F3600.000000 +G1X25.4Y50.8S1F1200 +G1X50.8Y0 +G0X101.6Y0F3600.000000 +G1X76.2Y5.08F1200 +G1X76.1492Y20.32 +G1X76.1492Y22.86 +G1X76.0984Y25.4 +G1X76.1492Y30.48 +G1X76.2Y45.72 +G1X101.6Y50.8 +G0X0Y1.8796F3600.000000 +G1X0.6604Y1.8796S0F1200 +G1X0.762Y1.8796S1 +G1X0.8636Y1.8796 +G1X0.9144Y1.8796 +G1X1.0668Y1.8796 +G1X1.1176Y1.8796 +G1X6.096Y1.8796S0 +G0X0Y1.9304F3600.000000 +G1X0.6604Y1.9304F1200 +G1X0.8128Y1.9304S1 +G1X0.8636Y1.9304 +G1X0.9652Y1.9304 +G1X1.0668Y1.9304 +G1X1.1176Y1.9304 +G1X6.096Y1.9304S0 +G0X0Y1.9812F3600.000000 +G1X0.6604Y1.9812F1200 +G1X1.1176Y1.9812S1 +G1X6.096Y1.9812S0 +G0X0Y2.032F3600.000000 +G1X0.6604Y2.032F1200 +G1X0.762Y2.032S1 +G1X1.1176Y2.032 +G1X6.096Y2.032S0 +G0X0Y2.0828F3600.000000 +G1X0.6604Y2.0828F1200 +G1X1.1176Y2.0828S1 +G1X6.096Y2.0828S0 +G0X0Y2.1336F3600.000000 +G1X0.6604Y2.1336F1200 +G1X0.762Y2.1336S1 +G1X1.1176Y2.1336 +G1X6.096Y2.1336S0 +G0X0Y3.9116F3600.000000 +G1X2.2352Y3.9116F1200 +G1X2.3368Y3.9116S1 +G1X2.3876Y3.9116S0 +G1X2.54Y3.9116S1 +G1X7.5184Y3.9116S0 +G0X0Y3.9624F3600.000000 +G1X2.286Y3.9624F1200 +G1X2.3368Y3.9624S1 +G1X2.4384Y3.9624S0 +G1X2.54Y3.9624S1 +G1X7.5184Y3.9624S0 +G0X0Y4.0132F3600.000000 +G1X2.1336Y4.0132F1200 +G1X2.1844Y4.0132S0.75 +G1X2.2352Y4.0132S0 +G1X2.5908Y4.0132S0.75 +G1X7.5692Y4.0132S0 +G0X0Y4.064F3600.000000 +G1X2.2352Y4.064F1200 +G1X2.5908Y4.064S0.5 +G1X7.5692Y4.064S0 +G0X0Y4.1656F3600.000000 +G1X2.1336Y4.1656F1200 +G1X2.2352Y4.1656S1 +G1X7.2136Y4.1656S0 +G0X0Y0 M5