Esempio n. 1
0
        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
                });
            }
        }
Esempio n. 2
0
        private async void initialLoading_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            SetGCodeAfterLoad((GCodeFile)e.Result);

            gCodeRenderer = new GCodeRenderer(loadedGCode);

            await Task.Run(() => DoPostLoadInitialization());

            postLoadInitialization_RunWorkerCompleted();
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
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();
        }
Esempio n. 6
0
        public static void DoPostLoadInitialization(object sender, DoWorkEventArgs doWorkEventArgs)
        {
            GCodeRenderer gCodeRenderer = (GCodeRenderer)doWorkEventArgs.Argument;

            gCodeRenderer.CreateFeaturesForLayerIfRequired(0);
        }