Put in the speeds legend
Removed unused icons
|
|
@ -1,115 +1,99 @@
|
|||
using System;
|
||||
using MatterHackers.Agg;
|
||||
using MatterHackers.Agg.UI;
|
||||
using MatterHackers.GCodeVisualizer;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Diagnostics;
|
||||
using System.Threading.Tasks;
|
||||
using MatterHackers.Agg;
|
||||
using MatterHackers.MatterControl.PrintQueue;
|
||||
using MatterHackers.GCodeVisualizer;
|
||||
using MatterHackers.Agg.UI;
|
||||
using MatterHackers.MeshVisualizer;
|
||||
using MatterHackers.VectorMath;
|
||||
using System.IO;
|
||||
using MatterHackers.Agg.PlatformAbstract;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace MatterHackers.MatterControl.PartPreviewWindow
|
||||
{
|
||||
public class ColorGradientWidget : FlowLayoutWidget
|
||||
{
|
||||
public ColorGradientWidget(GCodeFile gcodeFileTest)
|
||||
: base(FlowDirection.TopToBottom)
|
||||
{
|
||||
BackgroundColor = new RGBA_Bytes(0, 0, 0, 120);
|
||||
|
||||
public class ColorGradientWidget : FlowLayoutWidget
|
||||
{
|
||||
HashSet<float> speeds = new HashSet<float>();
|
||||
PrinterMachineInstruction previousInstruction = gcodeFileTest.Instruction(0);
|
||||
for (int i = 1; i < gcodeFileTest.LineCount; i++)
|
||||
{
|
||||
PrinterMachineInstruction instruction = gcodeFileTest.Instruction(i);
|
||||
if (instruction.EPosition > previousInstruction.EPosition && (instruction.Line.IndexOf('X') != -1 || instruction.Line.IndexOf('Y') != -1))
|
||||
{
|
||||
speeds.Add((float)instruction.FeedRate);
|
||||
}
|
||||
previousInstruction = instruction;
|
||||
}
|
||||
|
||||
public ColorGradientWidget(GCodeFile gcodeFileTest)
|
||||
: base(FlowDirection.TopToBottom)
|
||||
{
|
||||
ExtrusionColors extrusionColors = new ExtrusionColors();
|
||||
|
||||
BackgroundColor = new RGBA_Bytes(0, 0, 0, 120);
|
||||
speeds.Select(speed => extrusionColors.GetColorForSpeed(speed)).ToArray();
|
||||
|
||||
HashSet<float> speeds = new HashSet<float>();
|
||||
PrinterMachineInstruction previousInstruction = gcodeFileTest.Instruction(0);
|
||||
for (int i = 1; i < gcodeFileTest.LineCount; i++)
|
||||
{
|
||||
PrinterMachineInstruction instruction = gcodeFileTest.Instruction(i);
|
||||
if(instruction.EPosition > previousInstruction.EPosition && (instruction.Line.IndexOf('X') != -1 || instruction.Line.IndexOf('Y') != -1))
|
||||
{
|
||||
speeds.Add((float)instruction.FeedRate);
|
||||
}
|
||||
previousInstruction = instruction;
|
||||
}
|
||||
float min = speeds.Min();
|
||||
float max = speeds.Max();
|
||||
int maxItems = Math.Min(7, speeds.Count());
|
||||
|
||||
ExtrusionColors extrusionColors = new ExtrusionColors();
|
||||
int count = maxItems - 1;
|
||||
float increment = (max - min) / count;
|
||||
int index = 0;
|
||||
|
||||
speeds.Select(speed => extrusionColors.GetColorForSpeed(speed)).ToArray();
|
||||
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();
|
||||
}
|
||||
|
||||
float min = speeds.Min();
|
||||
float max = speeds.Max();
|
||||
int maxItems = Math.Min(7, speeds.Count());
|
||||
RGBA_Bytes[] speedColors = rangeValues.OrderBy(s => s).Select(speed => extrusionColors.GetColorForSpeed(speed)).ToArray();
|
||||
|
||||
int count = maxItems - 1;
|
||||
float increment = (max - min) / count;
|
||||
int index = 0;
|
||||
for (int i = 0; i < speedColors.Length; i++)
|
||||
{
|
||||
RGBA_Bytes color = speedColors[i];
|
||||
int speed = rangeValues[i];
|
||||
|
||||
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();
|
||||
}
|
||||
GuiWidget colorWidget = new GuiWidget();
|
||||
colorWidget.Width = 20;
|
||||
colorWidget.Height = 20;
|
||||
colorWidget.BackgroundColor = color;
|
||||
colorWidget.Margin = new BorderDouble(2);
|
||||
float feedRateToMMPerSecond = speed / 60;
|
||||
|
||||
RGBA_Bytes[] speedColors = rangeValues.OrderBy(s => s).Select(speed => extrusionColors.GetColorForSpeed(speed)).ToArray();
|
||||
ColorToSpeedWidget colorToSpeedWidget = new ColorToSpeedWidget(colorWidget, feedRateToMMPerSecond.ToString());
|
||||
this.AddChild(colorToSpeedWidget);
|
||||
}
|
||||
|
||||
for (int i = 0; i < speedColors.Length; i++)
|
||||
{
|
||||
RGBA_Bytes color = speedColors[i];
|
||||
int speed = rangeValues[i];
|
||||
Margin = new BorderDouble(5, 5, 200, 50);
|
||||
Margin *= TextWidget.GlobalPointSizeScaleRatio;
|
||||
HAnchor |= Agg.UI.HAnchor.ParentLeft;
|
||||
VAnchor = Agg.UI.VAnchor.ParentTop;
|
||||
}
|
||||
|
||||
GuiWidget colorWidget = new GuiWidget();
|
||||
colorWidget.Width = 20;
|
||||
colorWidget.Height = 20;
|
||||
colorWidget.BackgroundColor = color;
|
||||
colorWidget.Margin = new BorderDouble(2);
|
||||
float feedRateToMMPerSecond = speed / 60;
|
||||
public class ColorToSpeedWidget : FlowLayoutWidget
|
||||
{
|
||||
public string layerSpeed;
|
||||
public GuiWidget speedColor;
|
||||
public ColorToSpeedWidget(GuiWidget colorWidget, String speed)
|
||||
: base(FlowDirection.LeftToRight)
|
||||
{
|
||||
Margin = new BorderDouble(2);
|
||||
|
||||
ColorToSpeedWidget colorToSpeedWidget = new ColorToSpeedWidget(colorWidget, feedRateToMMPerSecond.ToString());
|
||||
this.AddChild(colorToSpeedWidget);
|
||||
speedColor = colorWidget;
|
||||
layerSpeed = speed + " mm\\s";
|
||||
|
||||
}
|
||||
colorWidget.Margin = new BorderDouble(left: 2);
|
||||
|
||||
Margin = new BorderDouble(5, 5, 200, 50);
|
||||
HAnchor |= Agg.UI.HAnchor.ParentLeft;
|
||||
VAnchor = Agg.UI.VAnchor.ParentTop;
|
||||
|
||||
}
|
||||
|
||||
public class ColorToSpeedWidget : FlowLayoutWidget
|
||||
{
|
||||
public GuiWidget speedColor;
|
||||
public string layerSpeed;
|
||||
|
||||
public ColorToSpeedWidget(GuiWidget colorWidget, String speed)
|
||||
: base(FlowDirection.LeftToRight)
|
||||
{
|
||||
Margin = new BorderDouble(2);
|
||||
|
||||
speedColor = colorWidget;
|
||||
layerSpeed = speed + " mm\\s";
|
||||
|
||||
colorWidget.Margin = new BorderDouble(left: 2);
|
||||
|
||||
TextWidget speedTextBox = new TextWidget(layerSpeed, pointSize: 12);
|
||||
speedTextBox.TextColor = RGBA_Bytes.White;
|
||||
speedTextBox.VAnchor = VAnchor.ParentCenter;
|
||||
speedTextBox.Margin = new BorderDouble(left: 2);
|
||||
|
||||
this.AddChild(colorWidget);
|
||||
this.AddChild(speedTextBox);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
TextWidget speedTextBox = new TextWidget(layerSpeed, pointSize: 12);
|
||||
speedTextBox.TextColor = RGBA_Bytes.White;
|
||||
speedTextBox.VAnchor = VAnchor.ParentCenter;
|
||||
speedTextBox.Margin = new BorderDouble(left: 2);
|
||||
|
||||
this.AddChild(colorWidget);
|
||||
this.AddChild(speedTextBox);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -67,11 +67,11 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
private CheckBox expandModelOptions;
|
||||
private CheckBox expandDisplayOptions;
|
||||
private CheckBox syncToPrint;
|
||||
private CheckBox showSpeeds;
|
||||
private CheckBox showSpeeds;
|
||||
|
||||
private GuiWidget gcodeDisplayWidget;
|
||||
|
||||
private ColorGradientWidget gradient;
|
||||
private ColorGradientWidget gradientWidget;
|
||||
|
||||
private EventHandler unregisterEvents;
|
||||
private WindowMode windowMode;
|
||||
|
|
@ -568,25 +568,23 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
|
||||
// put in a show speed checkbox
|
||||
{
|
||||
showSpeeds = new CheckBox(LocalizedString.Get("Speeds"), textColor: ActiveTheme.Instance.PrimaryTextColor);
|
||||
showSpeeds = new CheckBox(LocalizedString.Get("Speeds"), textColor: ActiveTheme.Instance.PrimaryTextColor);
|
||||
showSpeeds.Checked = gcodeViewWidget.RenderSpeeds;
|
||||
//showSpeeds.Checked = gradient.Visible;
|
||||
//showSpeeds.Checked = gradient.Visible;
|
||||
showSpeeds.CheckedStateChanged += (sender, e) =>
|
||||
{
|
||||
/* if (!showSpeeds.Checked)
|
||||
{
|
||||
gradient.Visible = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
gradient.Visible = true;
|
||||
}*/
|
||||
|
||||
/* if (!showSpeeds.Checked)
|
||||
{
|
||||
gradient.Visible = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
gradient.Visible = true;
|
||||
}*/
|
||||
|
||||
gradient.Visible = showSpeeds.Checked;
|
||||
gradientWidget.Visible = showSpeeds.Checked;
|
||||
|
||||
gcodeViewWidget.RenderSpeeds = showSpeeds.Checked;
|
||||
|
||||
};
|
||||
|
||||
layerInfoContainer.AddChild(showSpeeds);
|
||||
|
|
@ -899,16 +897,13 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
&& gcodeViewWidget.LoadedGCode != null
|
||||
&& gcodeViewWidget.LoadedGCode.LineCount > 0)
|
||||
{
|
||||
|
||||
CloseIfNotNull(gradient);
|
||||
gradient = new ColorGradientWidget(gcodeViewWidget.LoadedGCode);
|
||||
AddChild(gradient);
|
||||
gradient.Visible = false;
|
||||
|
||||
|
||||
CloseIfNotNull(gradientWidget);
|
||||
gradientWidget = new ColorGradientWidget(gcodeViewWidget.LoadedGCode);
|
||||
AddChild(gradientWidget);
|
||||
gradientWidget.Visible = false;
|
||||
|
||||
CreateOptionsContent();
|
||||
setGradientVisibility();
|
||||
setGradientVisibility();
|
||||
buttonRightPanel.Visible = true;
|
||||
viewControlsToggle.Visible = true;
|
||||
|
||||
|
|
@ -936,9 +931,6 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
layerRenderRatioSlider.SecondValueChanged += new EventHandler(layerEndRenderRatioSlider_ValueChanged);
|
||||
AddChild(layerRenderRatioSlider);
|
||||
|
||||
|
||||
|
||||
|
||||
SetSliderSizes();
|
||||
|
||||
// let's change the active layer so that it is set to the first layer with data
|
||||
|
|
@ -951,20 +943,17 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
}
|
||||
}
|
||||
|
||||
private void setGradientVisibility()
|
||||
{
|
||||
if (showSpeeds.Checked)
|
||||
{
|
||||
gradient.Visible = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
gradient.Visible = false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
private void setGradientVisibility()
|
||||
{
|
||||
if (showSpeeds.Checked)
|
||||
{
|
||||
gradientWidget.Visible = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
gradientWidget.Visible = false;
|
||||
}
|
||||
}
|
||||
|
||||
private void layerStartRenderRatioSlider_ValueChanged(object sender, EventArgs e)
|
||||
{
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 146 B |
|
Before Width: | Height: | Size: 146 B |
|
Before Width: | Height: | Size: 146 B |
|
Before Width: | Height: | Size: 146 B |
|
Before Width: | Height: | Size: 146 B |
|
Before Width: | Height: | Size: 146 B |
|
Before Width: | Height: | Size: 146 B |