From f202a3336fad9387a2e35d344ac212b6535f16aa Mon Sep 17 00:00:00 2001 From: larsbrubaker Date: Mon, 18 Aug 2014 11:02:00 -0700 Subject: [PATCH] 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. --- PartPreviewWindow/View3DTransfromPart.cs | 55 ++++++++++++------------ PartPreviewWindow/ViewGcodeBasic.cs | 36 ++++++++++++++-- PartPreviewWindow/ViewGcodeWidget.cs | 45 +++++++++++++++---- 3 files changed, 97 insertions(+), 39 deletions(-) diff --git a/PartPreviewWindow/View3DTransfromPart.cs b/PartPreviewWindow/View3DTransfromPart.cs index 043c3b95e..4e7910bfb 100644 --- a/PartPreviewWindow/View3DTransfromPart.cs +++ b/PartPreviewWindow/View3DTransfromPart.cs @@ -1139,7 +1139,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow viewOptionContainer.AddChild(showBuildVolumeCheckBox); } - viewOptionContainer.AddChild(CreateRenderTypeDropDownMenu()); + CreateRenderTypeRadioButtons(viewOptionContainer); } buttonRightPanel.AddChild(viewOptionContainer); } @@ -1421,36 +1421,37 @@ namespace MatterHackers.MatterControl.PartPreviewWindow 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; - break; - case 1: - meshViewerWidget.RenderType = RenderTypes.Outlines; - break; - case 2: - meshViewerWidget.RenderType = RenderTypes.Polygons; - break; - } - }; + meshViewerWidget.RenderType = RenderTypes.Shaded; + }; + viewOptionContainer.AddChild(renderTypeShaded); + } - 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() diff --git a/PartPreviewWindow/ViewGcodeBasic.cs b/PartPreviewWindow/ViewGcodeBasic.cs index cae82481e..9e1767f49 100644 --- a/PartPreviewWindow/ViewGcodeBasic.cs +++ b/PartPreviewWindow/ViewGcodeBasic.cs @@ -251,6 +251,14 @@ namespace MatterHackers.MatterControl.PartPreviewWindow { renderType |= RenderType.Retractions; } + if (gcodeViewWidget.RenderSpeeds) + { + renderType |= RenderType.SpeedColors; + } + if (gcodeViewWidget.SimulateExtrusion) + { + renderType |= RenderType.SimulateExtrusion; + } GCodeRenderer.ExtrusionColor = ActiveTheme.Instance.PrimaryAccentColor; 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 { - 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; meshViewerWidget.RenderBed = showGrid.Checked; showGrid.CheckedStateChanged += (sender, e) => @@ -458,7 +466,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow // 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.CheckedStateChanged += (sender, e) => { @@ -469,7 +477,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow // 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.CheckedStateChanged += (sender, e) => { @@ -478,6 +486,28 @@ namespace MatterHackers.MatterControl.PartPreviewWindow 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 { viewControlsToggle.twoDimensionButton.CheckedStateChanged += (sender, e) => diff --git a/PartPreviewWindow/ViewGcodeWidget.cs b/PartPreviewWindow/ViewGcodeWidget.cs index 65bc9cc5b..7ed7bc7b1 100644 --- a/PartPreviewWindow/ViewGcodeWidget.cs +++ b/PartPreviewWindow/ViewGcodeWidget.cs @@ -78,15 +78,34 @@ namespace MatterHackers.MatterControl.PartPreviewWindow } } - public bool RenderRetractions - { - get { return (UserSettings.Instance.get("GcodeViewerRenderRetractions") == "True"); } - set - { - UserSettings.Instance.set ("GcodeViewerRenderRetractions", value.ToString ()); - Invalidate(); - } - } + public bool RenderRetractions + { + get { return (UserSettings.Instance.get("GcodeViewerRenderRetractions") == "True"); } + set + { + UserSettings.Instance.set("GcodeViewerRenderRetractions", value.ToString()); + 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; Vector2 lastMousePosition = new Vector2(0, 0); @@ -302,6 +321,14 @@ namespace MatterHackers.MatterControl.PartPreviewWindow { renderType |= RenderType.Retractions; } + if (RenderSpeeds) + { + renderType |= RenderType.SpeedColors; + } + if (SimulateExtrusion) + { + renderType |= RenderType.SimulateExtrusion; + } gCodeRenderer.Render(graphics2D, activeLayerIndex, transform, layerScale, renderType, FeatureToStartOnRatio0To1, FeatureToEndOnRatio0To1);