Turned the 3d view render options into radio buttons.

Made the 2D gcode view able to show speed and extrusion simulation.
Made the 3D gcode view able to turn off speed and extrusion simulation.
This commit is contained in:
larsbrubaker 2014-08-18 11:02:00 -07:00
parent 66e0fb3b4d
commit f202a3336f
3 changed files with 97 additions and 39 deletions

View file

@ -1139,7 +1139,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
viewOptionContainer.AddChild(showBuildVolumeCheckBox); viewOptionContainer.AddChild(showBuildVolumeCheckBox);
} }
viewOptionContainer.AddChild(CreateRenderTypeDropDownMenu()); CreateRenderTypeRadioButtons(viewOptionContainer);
} }
buttonRightPanel.AddChild(viewOptionContainer); buttonRightPanel.AddChild(viewOptionContainer);
} }
@ -1421,36 +1421,37 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
return presetScaleMenu; return presetScaleMenu;
} }
private DropDownMenu CreateRenderTypeDropDownMenu() private void CreateRenderTypeRadioButtons(FlowLayoutWidget viewOptionContainer)
{ {
DropDownMenu renderTypeMenu = new DropDownMenu(LocalizedString.Get("Render Type"), Direction.Down);
RectangleDouble presetBounds = renderTypeMenu.LocalBounds;
presetBounds.Inflate(new BorderDouble(5, 10, 10, 10));
renderTypeMenu.LocalBounds = presetBounds;
renderTypeMenu.MenuAsWideAsItems = false;
renderTypeMenu.HAnchor |= HAnchor.ParentLeftRight;
renderTypeMenu.AddItem("Shaded".Localize());
renderTypeMenu.AddItem("Outlines".Localize());
renderTypeMenu.AddItem("Polygons".Localize());
renderTypeMenu.SelectionChanged += (sender, e) =>
{ {
switch (renderTypeMenu.SelectedIndex) RadioButton renderTypeShaded = new RadioButton("Shaded".Localize(), textColor: ActiveTheme.Instance.PrimaryTextColor);
renderTypeShaded.Checked = true;
renderTypeShaded.CheckedStateChanged += (sender, e) =>
{ {
case 0: meshViewerWidget.RenderType = RenderTypes.Shaded;
meshViewerWidget.RenderType = RenderTypes.Shaded; };
break; viewOptionContainer.AddChild(renderTypeShaded);
case 1: }
meshViewerWidget.RenderType = RenderTypes.Outlines;
break;
case 2:
meshViewerWidget.RenderType = RenderTypes.Polygons;
break;
}
};
return renderTypeMenu; {
RadioButton renderTypeOutlines = new RadioButton("Outlines".Localize(), textColor: ActiveTheme.Instance.PrimaryTextColor);
//renderTypeOutlines.Checked = true;
renderTypeOutlines.CheckedStateChanged += (sender, e) =>
{
meshViewerWidget.RenderType = RenderTypes.Outlines;
};
viewOptionContainer.AddChild(renderTypeOutlines);
}
{
RadioButton renderTypePolygons = new RadioButton("Polygons".Localize(), textColor: ActiveTheme.Instance.PrimaryTextColor);
//renderTypePolygons.Checked = true;
renderTypePolygons.CheckedStateChanged += (sender, e) =>
{
meshViewerWidget.RenderType = RenderTypes.Polygons;
};
viewOptionContainer.AddChild(renderTypePolygons);
}
} }
private GuiWidget generateHorizontalRule() private GuiWidget generateHorizontalRule()

View file

@ -251,6 +251,14 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
{ {
renderType |= RenderType.Retractions; renderType |= RenderType.Retractions;
} }
if (gcodeViewWidget.RenderSpeeds)
{
renderType |= RenderType.SpeedColors;
}
if (gcodeViewWidget.SimulateExtrusion)
{
renderType |= RenderType.SimulateExtrusion;
}
GCodeRenderer.ExtrusionColor = ActiveTheme.Instance.PrimaryAccentColor; GCodeRenderer.ExtrusionColor = ActiveTheme.Instance.PrimaryAccentColor;
gcodeViewWidget.gCodeRenderer.Render3D(0, Math.Min(gcodeViewWidget.ActiveLayerIndex + 1, gcodeViewWidget.LoadedGCode.NumChangesInZ), gcodeViewWidget.TotalTransform, 1, renderType, gcodeViewWidget.gCodeRenderer.Render3D(0, Math.Min(gcodeViewWidget.ActiveLayerIndex + 1, gcodeViewWidget.LoadedGCode.NumChangesInZ), gcodeViewWidget.TotalTransform, 1, renderType,
@ -445,7 +453,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
// put in a show grid check box // put in a show grid check box
{ {
CheckBox showGrid = new CheckBox(LocalizedString.Get("Show Grid"), textColor: ActiveTheme.Instance.PrimaryTextColor); CheckBox showGrid = new CheckBox(LocalizedString.Get("Grid"), textColor: ActiveTheme.Instance.PrimaryTextColor);
showGrid.Checked = gcodeViewWidget.RenderGrid; showGrid.Checked = gcodeViewWidget.RenderGrid;
meshViewerWidget.RenderBed = showGrid.Checked; meshViewerWidget.RenderBed = showGrid.Checked;
showGrid.CheckedStateChanged += (sender, e) => showGrid.CheckedStateChanged += (sender, e) =>
@ -458,7 +466,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
// put in a show moves checkbox // put in a show moves checkbox
{ {
CheckBox showMoves = new CheckBox(LocalizedString.Get("Show Moves"), textColor: ActiveTheme.Instance.PrimaryTextColor); CheckBox showMoves = new CheckBox(LocalizedString.Get("Moves"), textColor: ActiveTheme.Instance.PrimaryTextColor);
showMoves.Checked = gcodeViewWidget.RenderMoves; showMoves.Checked = gcodeViewWidget.RenderMoves;
showMoves.CheckedStateChanged += (sender, e) => showMoves.CheckedStateChanged += (sender, e) =>
{ {
@ -469,7 +477,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
// put in a show Retractions checkbox // put in a show Retractions checkbox
{ {
CheckBox showRetractions = new CheckBox(LocalizedString.Get("Show Retractions"), textColor: ActiveTheme.Instance.PrimaryTextColor); CheckBox showRetractions = new CheckBox(LocalizedString.Get("Retractions"), textColor: ActiveTheme.Instance.PrimaryTextColor);
showRetractions.Checked = gcodeViewWidget.RenderRetractions; showRetractions.Checked = gcodeViewWidget.RenderRetractions;
showRetractions.CheckedStateChanged += (sender, e) => showRetractions.CheckedStateChanged += (sender, e) =>
{ {
@ -478,6 +486,28 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
layerInfoContainer.AddChild(showRetractions); layerInfoContainer.AddChild(showRetractions);
} }
// put in a show speed checkbox
{
CheckBox showSpeeds = new CheckBox(LocalizedString.Get("Speeds"), textColor: ActiveTheme.Instance.PrimaryTextColor);
showSpeeds.Checked = gcodeViewWidget.RenderSpeeds;
showSpeeds.CheckedStateChanged += (sender, e) =>
{
gcodeViewWidget.RenderSpeeds = showSpeeds.Checked;
};
layerInfoContainer.AddChild(showSpeeds);
}
// put in a simulate extrusion checkbox
{
CheckBox simulateExtrusion = new CheckBox(LocalizedString.Get("Amount"), textColor: ActiveTheme.Instance.PrimaryTextColor);
simulateExtrusion.Checked = gcodeViewWidget.SimulateExtrusion;
simulateExtrusion.CheckedStateChanged += (sender, e) =>
{
gcodeViewWidget.SimulateExtrusion = simulateExtrusion.Checked;
};
layerInfoContainer.AddChild(simulateExtrusion);
}
// put in a show 3D view checkbox // put in a show 3D view checkbox
{ {
viewControlsToggle.twoDimensionButton.CheckedStateChanged += (sender, e) => viewControlsToggle.twoDimensionButton.CheckedStateChanged += (sender, e) =>

View file

@ -78,15 +78,34 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
} }
} }
public bool RenderRetractions public bool RenderRetractions
{ {
get { return (UserSettings.Instance.get("GcodeViewerRenderRetractions") == "True"); } get { return (UserSettings.Instance.get("GcodeViewerRenderRetractions") == "True"); }
set set
{ {
UserSettings.Instance.set ("GcodeViewerRenderRetractions", value.ToString ()); UserSettings.Instance.set("GcodeViewerRenderRetractions", value.ToString());
Invalidate(); Invalidate();
} }
} }
public bool RenderSpeeds
{
get { return (UserSettings.Instance.get("GcodeViewerRenderSpeeds") == "True"); }
set
{
UserSettings.Instance.set("GcodeViewerRenderSpeeds", value.ToString());
Invalidate();
}
}
public bool SimulateExtrusion
{
get { return (UserSettings.Instance.get("GcodeViewerSimulateExtrusion") == "True"); }
set
{
UserSettings.Instance.set("GcodeViewerSimulateExtrusion", value.ToString());
Invalidate();
}
}
BackgroundWorker backgroundWorker = null; BackgroundWorker backgroundWorker = null;
Vector2 lastMousePosition = new Vector2(0, 0); Vector2 lastMousePosition = new Vector2(0, 0);
@ -302,6 +321,14 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
{ {
renderType |= RenderType.Retractions; renderType |= RenderType.Retractions;
} }
if (RenderSpeeds)
{
renderType |= RenderType.SpeedColors;
}
if (SimulateExtrusion)
{
renderType |= RenderType.SimulateExtrusion;
}
gCodeRenderer.Render(graphics2D, activeLayerIndex, transform, layerScale, renderType, gCodeRenderer.Render(graphics2D, activeLayerIndex, transform, layerScale, renderType,
FeatureToStartOnRatio0To1, FeatureToEndOnRatio0To1); FeatureToStartOnRatio0To1, FeatureToEndOnRatio0To1);