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);