diff --git a/src/com/t_oster/liblasercut/drivers/GenericGcodeDriver.java b/src/com/t_oster/liblasercut/drivers/GenericGcodeDriver.java index a41cc9c9c3397de55eb2cb45a187a05a5fc5bb58..0265969c38184202e171b0d204b66144cb756884 100644 --- a/src/com/t_oster/liblasercut/drivers/GenericGcodeDriver.java +++ b/src/com/t_oster/liblasercut/drivers/GenericGcodeDriver.java @@ -23,6 +23,7 @@ import com.t_oster.liblasercut.platform.Util; import java.io.BufferedReader; import java.io.ByteArrayOutputStream; import java.io.IOException; +import java.io.File; import java.io.InputStreamReader; import java.io.PrintStream; import java.io.UnsupportedEncodingException; @@ -31,11 +32,17 @@ import java.net.Socket; import java.net.URI; import java.net.URISyntaxException; import java.net.URL; +import java.text.SimpleDateFormat; +import java.util.Date; import purejavacomm.*; import java.util.*; import net.sf.corn.httpclient.HttpClient; import net.sf.corn.httpclient.HttpResponse; + + + + /** * This class implements a driver for a generic GRBL GCode Lasercutter. * It should contain all possible options and is inteded to be the superclass @@ -377,6 +384,7 @@ public class GenericGcodeDriver extends LaserCutter { } } + private void writeShutdownCode() throws IOException { if (postJobGcode != null) { @@ -651,6 +659,42 @@ public class GenericGcodeDriver extends LaserCutter { pl.taskChanged(this, "sent."); pl.progressChanged(this, 100); } + +@Override +public void saveJob(LaserJob job) throws IllegalJobException, Exception { + checkJob(job); + + String timestamp = new SimpleDateFormat( "yyyyMMddhhmmssSSS" ).format( new Date( ) ); + String filename = "output_" + timestamp + ".gcode"; + System.out.println("Creating file " + filename); + //BufferedWriter writer = new BufferedWriter(new FileWriter(filename)); + this.out = new PrintStream(new File(filename)); + + writeInitializationCode(); + int i = 0; + int max = job.getParts().size(); + for (JobPart p : job.getParts()) + { + if (p instanceof RasterPart) + { + RasterPart rp = (RasterPart) p; + LaserProperty black = rp.getLaserProperty(); + LaserProperty white = black.clone(); + white.setProperty("power", 0.0f); + p = convertRasterToVectorPart((RasterPart) p, black, white, p.getDPI(), false); + } + if (p instanceof VectorPart) + { + //TODO: in direct mode use progress listener to indicate progress + //of individual job + writeVectorGCode((VectorPart) p, p.getDPI()); + } + i++; + } + writeShutdownCode(); + //writer.close(); +} + private List<Double> resolutions; @Override