diff --git a/PartPreviewWindow/PrinterTabPage.cs b/PartPreviewWindow/PrinterTabPage.cs index b75c737de..15bc26364 100644 --- a/PartPreviewWindow/PrinterTabPage.cs +++ b/PartPreviewWindow/PrinterTabPage.cs @@ -38,6 +38,7 @@ using MatterHackers.VectorMath; using System; using MatterHackers.MatterControl.PrinterControls; using MatterHackers.MatterControl.PrinterCommunication; +using MatterHackers.GCodeVisualizer; namespace MatterHackers.MatterControl.PartPreviewWindow { @@ -135,6 +136,8 @@ namespace MatterHackers.MatterControl.PartPreviewWindow ApplicationController.Instance.Theme, View3DWidget.OpenMode.Editing); + modelViewer.meshViewerWidget.TrackballTumbleWidget.DrawGlContent += TrackballTumbleWidget_DrawGlContent; + modelViewer.BoundsChanged += (s, e) => { SetSliderSizes(); @@ -195,7 +198,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow } printer.BedPlate.LoadedGCodeChanged += BedPlate_LoadedGCodeChanged; - + this.ShowSliceLayers = false; this.printItem = printItem; @@ -208,6 +211,53 @@ namespace MatterHackers.MatterControl.PartPreviewWindow private void BedPlate_LoadedGCodeChanged(object sender, EventArgs e) { selectLayerSlider.Maximum = printer.BedPlate.LoadedGCode.LayerCount - 1; + + // ResetRenderInfo + printer.BedPlate.RenderInfo = new GCodeRenderInfo( + 0, + 1, + Agg.Transform.Affine.NewIdentity(), + 1, + 0, + 1, + new Vector2[] + { + ActiveSliceSettings.Instance.Helpers.ExtruderOffset(0), + ActiveSliceSettings.Instance.Helpers.ExtruderOffset(1) + }, + this.GetRenderType, + MeshViewerWidget.GetMaterialColor); + } + + private RenderType GetRenderType() + { + RenderType renderType = RenderType.Extrusions; + if (gcodeOptions.RenderMoves) + { + renderType |= RenderType.Moves; + } + if (gcodeOptions.RenderRetractions) + { + renderType |= RenderType.Retractions; + } + if (gcodeOptions.RenderSpeeds) + { + renderType |= RenderType.SpeedColors; + } + if (gcodeOptions.SimulateExtrusion) + { + renderType |= RenderType.SimulateExtrusion; + } + if (gcodeOptions.TransparentExtrusion) + { + renderType |= RenderType.TransparentExtrusion; + } + if (gcodeOptions.HideExtruderOffsets) + { + renderType |= RenderType.HideExtruderOffsets; + } + + return renderType; } private void AddSettingsTabBar(GuiWidget parent, GuiWidget widgetTodockTo) @@ -248,6 +298,8 @@ namespace MatterHackers.MatterControl.PartPreviewWindow this.ShowSliceLayers = !gcodeViewer.Visible; } + private GCodeFile loadedGCode => printer.BedPlate.LoadedGCode; + private bool showSliceLayers; public bool ShowSliceLayers { @@ -306,12 +358,27 @@ namespace MatterHackers.MatterControl.PartPreviewWindow ApplicationController.Instance.PartPreviewState.RotationMatrix = visibleWidget.World.RotationMatrix; ApplicationController.Instance.PartPreviewState.TranslationMatrix = visibleWidget.World.TranslationMatrix; + if (modelViewer?.meshViewerWidget != null) + { + modelViewer.meshViewerWidget.TrackballTumbleWidget.DrawGlContent -= TrackballTumbleWidget_DrawGlContent; + } + printer.BedPlate.ActiveLayerChanged -= ActiveLayer_Changed; printer.BedPlate.LoadedGCodeChanged -= BedPlate_LoadedGCodeChanged; base.OnClosed(e); } + private void TrackballTumbleWidget_DrawGlContent(object sender, EventArgs e) + { + if (loadedGCode == null || printer.BedPlate.GCodeRenderer == null || !this.Visible) + { + return; + } + + printer.BedPlate.Render3DLayerFeatures(); + } + internal GuiWidget ShowGCodeOverflowMenu() { var textColor = RGBA_Bytes.Black; diff --git a/PartPreviewWindow/ViewGcodeBasic.cs b/PartPreviewWindow/ViewGcodeBasic.cs index 25d4310ae..1fbc05f5f 100644 --- a/PartPreviewWindow/ViewGcodeBasic.cs +++ b/PartPreviewWindow/ViewGcodeBasic.cs @@ -91,13 +91,11 @@ namespace MatterHackers.MatterControl.PartPreviewWindow public ViewGcodeBasic(Vector3 viewerVolume, Vector2 bedCenter, BedShape bedShape, ViewControls3D viewControls3D, ThemeConfig theme, MeshViewerWidget externalMeshViewer) { this.externalMeshViewer = externalMeshViewer; - this.externalMeshViewer.TrackballTumbleWidget.DrawGlContent += TrackballTumbleWidget_DrawGlContent; buttonFactory = ApplicationController.Instance.Theme.BreadCrumbButtonFactory; options = ApplicationController.Instance.Printer.BedPlate.RendererOptions; printer = ApplicationController.Instance.Printer; - printer.BedPlate.LoadedGCodeChanged += BedPlate_LoadedGCodeChanged; this.viewControls3D = viewControls3D; this.viewerVolume = viewerVolume; @@ -124,25 +122,6 @@ namespace MatterHackers.MatterControl.PartPreviewWindow ApplicationController.Instance.AdvancedControlsPanelReloading.RegisterEvent((s, e) => printer.BedPlate.GCodeRenderer?.Clear3DGCode(), ref unregisterEvents); } - private void BedPlate_LoadedGCodeChanged(object sender, EventArgs e) - { - // ResetRenderInfo - printer.BedPlate.RenderInfo = new GCodeRenderInfo( - 0, - 1, - Agg.Transform.Affine.NewIdentity(), - 1, - 0, - 1, - new Vector2[] - { - ActiveSliceSettings.Instance.Helpers.ExtruderOffset(0), - ActiveSliceSettings.Instance.Helpers.ExtruderOffset(1) - }, - this.GetRenderType, - MeshViewerWidget.GetMaterialColor); - } - public override void OnLoad(EventArgs args) { // Find and hook the parent system window KeyDown event @@ -309,49 +288,6 @@ namespace MatterHackers.MatterControl.PartPreviewWindow } } - private RenderType GetRenderType() - { - var options = ApplicationController.Instance.Printer.BedPlate.RendererOptions; - - RenderType renderType = RenderType.Extrusions; - if (options.RenderMoves) - { - renderType |= RenderType.Moves; - } - if (options.RenderRetractions) - { - renderType |= RenderType.Retractions; - } - if (options.RenderSpeeds) - { - renderType |= RenderType.SpeedColors; - } - if (options.SimulateExtrusion) - { - renderType |= RenderType.SimulateExtrusion; - } - if (options.TransparentExtrusion) - { - renderType |= RenderType.TransparentExtrusion; - } - if (options.HideExtruderOffsets) - { - renderType |= RenderType.HideExtruderOffsets; - } - - return renderType; - } - - private void TrackballTumbleWidget_DrawGlContent(object sender, EventArgs e) - { - if (loadedGCode == null || printer.BedPlate.GCodeRenderer == null || !this.Visible) - { - return; - } - - printer.BedPlate.Render3DLayerFeatures(); - } - private GCodeDetails gcodeDetails; private void SwitchViewModes() @@ -425,11 +361,6 @@ namespace MatterHackers.MatterControl.PartPreviewWindow parentSystemWindow.KeyDown -= Parent_KeyDown; } - if (externalMeshViewer != null) - { - externalMeshViewer.TrackballTumbleWidget.DrawGlContent -= TrackballTumbleWidget_DrawGlContent; - } - if (printItem != null) { if (startedSliceFromGenerateButton && printItem.CurrentlySlicing)