static void Main(string[] args) { const string filename = "20x20x20.sl1"; FileInfo file = new FileInfo(filename); var p = new Program(); var configuration = p.Extract(filename); GCodeWriter gCodeWriter = new GCodeWriter(configuration.config); gCodeWriter.WriteHeader(); gCodeWriter.StartGCode(); var layerHeight = (decimal)gCodeWriter.PrusaPrintConfig.LayerHeight; decimal currentLayerHeight = 0.0m; decimal currentLayer = 1m; foreach (var image in configuration.images) { decimal zlevel = (currentLayer * layerHeight); gCodeWriter.Write(); gCodeWriter.Write(new Comment() { Value = $"LAYER_START:{currentLayer-1}" }); gCodeWriter.Write(new Comment() { Value = $"currPos:{zlevel}" }); gCodeWriter.Write(new M6054() { Value = image.Name }); gCodeWriter.Write(new G0() { Z = 5.0m + zlevel, F = 65 }); gCodeWriter.Write(new G0() { Z = zlevel, F = 150 }); gCodeWriter.Write(new G4() { Value = 0 }); gCodeWriter.Write(new M106() { Value = 255 }); gCodeWriter.Write(new G4() { Value = (currentLayer <= gCodeWriter.PrusaPrintConfig.NumFade ? gCodeWriter.PrusaPrintConfig.ExpTimeFirst * 1000 : gCodeWriter.PrusaPrintConfig.ExpTime * 1000) }); gCodeWriter.Write(new M106() { Value = 0 }); gCodeWriter.Write(); gCodeWriter.Write(new Comment() { Value = "LAYER_END" }); gCodeWriter.Write(); currentLayerHeight += layerHeight; currentLayer++; } var gcode = gCodeWriter.ToString(); var data = p.RebuildZipFile(gcode, configuration.images); var fileName = file.Name + ".zip"; File.WriteAllBytes(fileName, data); }