static void GenerateGCodeForSliceFile(string sliceFile) { PlanarSliceStack slices = new PlanarSliceStack(); using (TextReader reader = new StreamReader(sliceFile)) { slices.ReadSimpleSliceFormat(reader); } // configure settings MakerbotSettings settings = new MakerbotSettings(Makerbot.Models.Replicator2); //MonopriceSettings settings = new MonopriceSettings(Monoprice.Models.MP_Select_Mini_V2); //PrintrbotSettings settings = new PrintrbotSettings(Printrbot.Models.Plus); settings.Shells = 2; settings.SparseLinearInfillStepX = 10; settings.InteriorSolidRegionShells = 1; settings.ClipSelfOverlaps = true; settings.GenerateSupport = true; settings.SupportSpacingStepX = 5.0; settings.SupportVolumeScale = 1.0; //settings.LayerRangeFilter = new Interval1i(0,10); LastSettings = settings.CloneAs <SingleMaterialFFFSettings>(); // empty... PrintMeshAssembly meshes = new PrintMeshAssembly(); // run print generator SingleMaterialFFFPrintGenerator printGen = new SingleMaterialFFFPrintGenerator(meshes, slices, settings); printGen.LayerPostProcessor = new SupportConnectionPostProcessor() { ZOffsetMM = 0.15f }; printGen.AccumulatePathSet = (SHOW_RELOADED_GCODE_PATHS == false); printGen.Generate(); GCodeFile genGCode = printGen.Result; string sWritePath = "../../../sample_output/generated.gcode"; StandardGCodeWriter writer = new StandardGCodeWriter(); using (StreamWriter w = new StreamWriter(sWritePath)) { writer.WriteFile(genGCode, w); } if (settings is MakerbotSettings) { System.Diagnostics.Process.Start(GPX_PATH, "-p " + sWritePath); } if (SHOW_RELOADED_GCODE_PATHS) { LoadGeneratedGCodeFile(sWritePath); } else { View.SetPaths(printGen.AccumulatedPaths, settings); } }
static string GenerateGCodeForMeshes(PrintMeshAssembly meshes) { bool ENABLE_SUPPORT_ZSHIFT = true; // configure settings MakerbotSettings settings = new MakerbotSettings(Makerbot.Models.Replicator2); //MonopriceSettings settings = new MonopriceSettings(Monoprice.Models.MP_Select_Mini_V2); //PrintrbotSettings settings = new PrintrbotSettings(Printrbot.Models.Plus); settings.ExtruderTempC = 200; settings.Shells = 2; settings.InteriorSolidRegionShells = 0; settings.SparseLinearInfillStepX = 10; settings.ClipSelfOverlaps = false; //settings.RoofLayers = settings.FloorLayers = 0; //settings.LayerRangeFilter = new Interval1i(245, 255); settings.LayerRangeFilter = new Interval1i(6, 40); settings.GenerateSupport = false; settings.EnableSupportShell = true; settings.SupportSolidSpace = 0.35; //settings.Machine.NozzleDiamMM = 0.75; //settings.Machine.MaxLayerHeightMM = 0.5; //settings.FillPathSpacingMM = settings.Machine.NozzleDiamMM; //settings.LayerHeightMM = 0.5; //settings.LayerRangeFilter = new Interval1i(130, 140); LastSettings = settings.CloneAs <SingleMaterialFFFSettings>(); System.Console.WriteLine("Slicing..."); // slice meshes MeshPlanarSlicerPro slicer = new MeshPlanarSlicerPro() { LayerHeightMM = settings.LayerHeightMM, SliceFactoryF = PlanarSlicePro.FactoryF }; slicer.Add(meshes); PlanarSliceStack slices = slicer.Compute(); System.Console.WriteLine("Generating GCode..."); // run print generator SingleMaterialFFFPrintGenPro printGen = new SingleMaterialFFFPrintGenPro(meshes, slices, settings); if (ENABLE_SUPPORT_ZSHIFT) { printGen.LayerPostProcessor = new SupportConnectionPostProcessor() { ZOffsetMM = 0.2f } } ; printGen.AccumulatePathSet = (SHOW_RELOADED_GCODE_PATHS == false); printGen.Generate(); GCodeFile genGCode = printGen.Result; System.Console.WriteLine("Writing GCode..."); string sWritePath = "../../../sample_output/generated.gcode"; StandardGCodeWriter writer = new StandardGCodeWriter(); using (StreamWriter w = new StreamWriter(sWritePath)) { writer.WriteFile(genGCode, w); } if (settings is MakerbotSettings) { System.Diagnostics.Process.Start(GPX_PATH, "-p " + sWritePath); } if (SHOW_RELOADED_GCODE_PATHS == false) { View.SetPaths(printGen.AccumulatedPaths, settings); } return(sWritePath); }