/** * This method handles shuffling together two gcodes, it first executes preprocessing and then * hands the gcodes off to Layer_Helper */ public void combine() { MutableGCodeSource left, right; // load our layers into something we can use left = new MutableGCodeSource(leftFile); right = new MutableGCodeSource(rightFile); // remove some tags we don't want/get SkeinforgePostProcessor.stripNonLayerTagComments(left); SkeinforgePostProcessor.stripNonLayerTagComments(right); // load our layers into something we can *really* use LinkedList<Layer> leftLayers = parseLayers(left); LinkedList<Layer> rightLayers = parseLayers(right); // merge our layers into one list final LinkedList<Layer> layers = doMerge(leftLayers, rightLayers); // refresh and repopulate our result result = new MutableGCodeSource(); for (Layer l : layers) { result.add(l.getCommands()); } // add start gcode, updated based on settings SkeinforgePostProcessor.prependAndModifyStartCode(result, startGCode); // add end code Layer endLayer = new Layer(Double.MAX_VALUE, endGCode.asList()); result.add(endLayer.toString()); // interlace progress updates result.addProgressUpdates(); }