public void DoProcessing() { if (!gcode.IsOpened()) { return; } timeKeeper.Restart(); LogOutput.Log("Analyzing and optimizing model...\n"); optomizedModel = new OptimizedModel(simpleModel); if (MatterSlice.Canceled) { return; } optomizedModel.SetPositionAndSize(simpleModel, config.positionToPlaceObjectCenter_um.X, config.positionToPlaceObjectCenter_um.Y, -config.bottomClipAmount_um, config.centerObjectInXy); for (int volumeIndex = 0; volumeIndex < simpleModel.volumes.Count; volumeIndex++) { LogOutput.Log(" Face counts: {0} . {1} {2:0.0}%\n".FormatWith((int)simpleModel.volumes[volumeIndex].faceTriangles.Count, (int)optomizedModel.volumes[volumeIndex].facesTriangle.Count, (double)(optomizedModel.volumes[volumeIndex].facesTriangle.Count) / (double)(simpleModel.volumes[volumeIndex].faceTriangles.Count) * 100)); LogOutput.Log(" Vertex counts: {0} . {1} {2:0.0}%\n".FormatWith((int)simpleModel.volumes[volumeIndex].faceTriangles.Count * 3, (int)optomizedModel.volumes[volumeIndex].vertices.Count, (double)(optomizedModel.volumes[volumeIndex].vertices.Count) / (double)(simpleModel.volumes[volumeIndex].faceTriangles.Count * 3) * 100)); } LogOutput.Log("Optimize model {0:0.0}s \n".FormatWith(timeKeeper.Elapsed.Seconds)); timeKeeper.Reset(); Stopwatch timeKeeperTotal = new Stopwatch(); timeKeeperTotal.Start(); preSetup(config.extrusionWidth_um); sliceModels(storage); processSliceData(storage); if (MatterSlice.Canceled) { return; } writeGCode(storage); if (MatterSlice.Canceled) { return; } LogOutput.logProgress("process", 1, 1); //Report to the GUI that a file has been fully processed. LogOutput.Log("Total time elapsed {0:0.00}s.\n".FormatWith(timeKeeperTotal.Elapsed.Seconds)); }