public SpeedsLegend(GCodeFile gcodeFileTest, ThemeConfig theme, PrinterConfig printer) : base(FlowDirection.TopToBottom) { GCodeMemoryFile memoryFile = gcodeFileTest as GCodeMemoryFile; if (memoryFile == null) { // File was too big to load, content contained in GCodeFileStream and speeds should not be rendered return; } GCodeRenderer renderer = printer.Bed.GCodeRenderer; if (renderer == null) { // Renderer did not load for content and speeds should not be rendered return; } var speeds = memoryFile.Speeds; if (speeds.Count <= 0) { // No speeds were discovered during parsing and speeds should not be rendered return; } float min = speeds.Min(); float max = speeds.Max(); int maxItems = Math.Min(7, speeds.Count); int count = maxItems - 1; float increment = (max - min) / count; int index = 0; int[] rangeValues; if (speeds.Count < 8) { rangeValues = speeds.Select(s => (int)s).OrderBy(i => i).ToArray(); } else { rangeValues = Enumerable.Range(0, maxItems).Select(x => (int)(min + increment * index++)).ToArray(); } Color[] speedColors = rangeValues.OrderBy(s => s).Select(speed => renderer.ExtrusionColors.GetColorForSpeed(speed)).ToArray(); for (int i = 0; i < speedColors.Length; i++) { int feedrate = rangeValues[i]; this.AddChild( new SpeedLegendRow(speedColors[i], millimetersPerSecond: feedrate / 60, pointSize: theme.FontSize10) { Margin = new BorderDouble(5, 2, 2, 2), HAnchor = HAnchor.Stretch }); } }
private async void initialLoading_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { SetGCodeAfterLoad((GCodeFile)e.Result); gCodeRenderer = new GCodeRenderer(loadedGCode); await Task.Run(() => DoPostLoadInitialization()); postLoadInitialization_RunWorkerCompleted(); }
void initialLoading_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { SetGCodeAfterLoad((GCodeFile)e.Result); backgroundWorker = new BackgroundWorker(); backgroundWorker.WorkerReportsProgress = true; backgroundWorker.WorkerSupportsCancellation = true; backgroundWorker.ProgressChanged += new ProgressChangedEventHandler(postLoadInitialization_ProgressChanged); backgroundWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(postLoadInitialization_RunWorkerCompleted); backgroundWorker.DoWork += new DoWorkEventHandler(DoPostLoadInitialization); gCodeRenderer = new GCodeRenderer(loadedGCode); backgroundWorker.RunWorkerAsync(gCodeRenderer); }
public static void DoPostLoadInitialization(object sender, DoWorkEventArgs doWorkEventArgs) { GCodeRenderer gCodeRenderer = (GCodeRenderer)doWorkEventArgs.Argument; try { if (gCodeRenderer.GCodeFileToDraw != null) { gCodeRenderer.GCodeFileToDraw.GetFilamentUsedMm(ActiveSliceSettings.Instance.FilamentDiameter); } } catch (Exception) { } gCodeRenderer.CreateFeaturesForLayerIfRequired(0); }
private async void initialLoading_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { SetGCodeAfterLoad((GCodeFile)e.Result); gCodeRenderer = new GCodeRenderer(LoadedGCode); if (ActiveSliceSettings.Instance.PrinterSelected) { GCodeRenderer.ExtruderWidth = ActiveSliceSettings.Instance.GetValue <double>(SettingsKey.nozzle_diameter); } else { GCodeRenderer.ExtruderWidth = .4; } await Task.Run(() => DoPostLoadInitialization()); postLoadInitialization_RunWorkerCompleted(); }
public static void DoPostLoadInitialization(object sender, DoWorkEventArgs doWorkEventArgs) { GCodeRenderer gCodeRenderer = (GCodeRenderer)doWorkEventArgs.Argument; gCodeRenderer.CreateFeaturesForLayerIfRequired(0); }