From b7c457309e55325ec41f479ff250189b2e509721 Mon Sep 17 00:00:00 2001 From: John Lewin Date: Mon, 26 Jun 2017 09:45:31 -0700 Subject: [PATCH] Improve GCode/Model view toggling - Switch models to Wireframe while in GCode view - Conditionally render layers data on visibility of GCode widget - Short term: Clear Scene selection on entering GCode view - Use consistent formatting for GCodeRenderInfo constructor --- PartPreviewWindow/GCode2DWidget.cs | 20 ++++++++++++----- PartPreviewWindow/PartPreviewContent.cs | 1 + PartPreviewWindow/View3D/MeshViewerWidget.cs | 7 ++++-- PartPreviewWindow/View3D/View3DWidget.cs | 23 +++++++++++++++----- PartPreviewWindow/ViewGcodeBasic.cs | 11 +++++++--- Submodules/agg-sharp | 2 +- 6 files changed, 46 insertions(+), 18 deletions(-) diff --git a/PartPreviewWindow/GCode2DWidget.cs b/PartPreviewWindow/GCode2DWidget.cs index 91a80b1c8..d28df5158 100644 --- a/PartPreviewWindow/GCode2DWidget.cs +++ b/PartPreviewWindow/GCode2DWidget.cs @@ -205,17 +205,25 @@ namespace MatterHackers.MatterControl.PartPreviewWindow } } - GCodeRenderInfo renderInfo = new GCodeRenderInfo(activeLayerIndex, activeLayerIndex, transform, layerScale, CreateRenderInfo(), - FeatureToStartOnRatio0To1, FeatureToEndOnRatio0To1, - new Vector2[] { ActiveSliceSettings.Instance.Helpers.ExtruderOffset(0), ActiveSliceSettings.Instance.Helpers.ExtruderOffset(1) }, - MeshViewerWidget.GetMaterialColor); + var renderInfo = new GCodeRenderInfo( + activeLayerIndex, + activeLayerIndex, + transform, + layerScale, + CreateRenderInfo(), + FeatureToStartOnRatio0To1, + FeatureToEndOnRatio0To1, + new Vector2[] + { + ActiveSliceSettings.Instance.Helpers.ExtruderOffset(0), + ActiveSliceSettings.Instance.Helpers.ExtruderOffset(1) + }, + MeshViewerWidget.GetMaterialColor); //using (new PerformanceTimer("GCode Timer", "Render")) { printer.BedPlate.GCodeRenderer?.Render(graphics2D, renderInfo); } - - this.DebugShowBounds = true; } } diff --git a/PartPreviewWindow/PartPreviewContent.cs b/PartPreviewWindow/PartPreviewContent.cs index 9092acc76..7abf89d01 100644 --- a/PartPreviewWindow/PartPreviewContent.cs +++ b/PartPreviewWindow/PartPreviewContent.cs @@ -265,6 +265,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow public void ToggleView() { gcodeViewer.Visible = !gcodeViewer.Visible; + modelViewer.ShowSliceLayers = gcodeViewer.Visible; } private async void LoadActivePrintItem() diff --git a/PartPreviewWindow/View3D/MeshViewerWidget.cs b/PartPreviewWindow/View3D/MeshViewerWidget.cs index 231529813..bab5ac792 100644 --- a/PartPreviewWindow/View3D/MeshViewerWidget.cs +++ b/PartPreviewWindow/View3D/MeshViewerWidget.cs @@ -240,7 +240,7 @@ namespace MatterHackers.MeshVisualizer public RenderTypes RenderType { - get { return renderType; } + get => this.IsActive ? renderType : RenderTypes.Wireframe; set { if (renderType != value) @@ -773,6 +773,8 @@ namespace MatterHackers.MeshVisualizer }); } + public bool IsActive { get; set; } = true; + private void DrawObject(IObject3D object3D, Matrix4X4 transform, bool parentSelected) { foreach(MeshAndTransform meshAndTransform in object3D.VisibleMeshes(transform)) @@ -782,11 +784,12 @@ namespace MatterHackers.MeshVisualizer MeshMaterialData meshData = MeshMaterialData.Get(meshAndTransform.MeshData); RGBA_Bytes drawColor = object3D.Color; + if (drawColor.Alpha0To1 == 0) { drawColor = isSelected ? GetSelectedMaterialColor(meshData.MaterialIndex) : GetMaterialColor(meshData.MaterialIndex); } - + GLHelper.Render(meshAndTransform.MeshData, drawColor, meshAndTransform.Matrix, RenderType); } } diff --git a/PartPreviewWindow/View3D/View3DWidget.cs b/PartPreviewWindow/View3D/View3DWidget.cs index 1e30c5556..f3b2fb6f1 100644 --- a/PartPreviewWindow/View3D/View3DWidget.cs +++ b/PartPreviewWindow/View3D/View3DWidget.cs @@ -2285,11 +2285,6 @@ namespace MatterHackers.MatterControl.PartPreviewWindow this.saveAsWindow = null; } - private bool scaleQueueMenu_Click() - { - return true; - } - private void SetEditControlsBasedOnPrinterState(object sender, EventArgs e) { if (windowType == WindowMode.Embeded) @@ -2358,6 +2353,23 @@ namespace MatterHackers.MatterControl.PartPreviewWindow Invalidate(); } + private bool showSliceLayers; + public bool ShowSliceLayers + { + get => showSliceLayers; + set + { + showSliceLayers = value; + meshViewerWidget.IsActive = !value; + + if (showSliceLayers) + { + selectedObjectPanel.Visible = false; + Scene.ClearSelection(); + } + } + } + // Before printing persist any changes to disk internal async Task PersistPlateIfNeeded() { @@ -2387,7 +2399,6 @@ namespace MatterHackers.MatterControl.PartPreviewWindow SelectedTransformChanged?.Invoke(this, null); } - // ViewControls3D {{ internal GuiWidget ShowOverflowMenu() { diff --git a/PartPreviewWindow/ViewGcodeBasic.cs b/PartPreviewWindow/ViewGcodeBasic.cs index a142b6fae..4c7929568 100644 --- a/PartPreviewWindow/ViewGcodeBasic.cs +++ b/PartPreviewWindow/ViewGcodeBasic.cs @@ -354,21 +354,26 @@ namespace MatterHackers.MatterControl.PartPreviewWindow private void TrackballTumbleWidget_DrawGlContent(object sender, EventArgs e) { - if (loadedGCode == null || printer.BedPlate.GCodeRenderer == null) + if (loadedGCode == null || printer.BedPlate.GCodeRenderer == null || !this.Visible) { return; } GCodeRenderer.ExtrusionColor = ActiveTheme.Instance.PrimaryAccentColor; - GCodeRenderInfo renderInfo = new GCodeRenderInfo(0, + var renderInfo = new GCodeRenderInfo( + 0, Math.Min(gcode2DWidget.ActiveLayerIndex + 1, loadedGCode.NumChangesInZ), gcode2DWidget.TotalTransform, 1, GetRenderType(), gcode2DWidget.FeatureToStartOnRatio0To1, gcode2DWidget.FeatureToEndOnRatio0To1, - new Vector2[] { ActiveSliceSettings.Instance.Helpers.ExtruderOffset(0), ActiveSliceSettings.Instance.Helpers.ExtruderOffset(1) }, + new Vector2[] + { + ActiveSliceSettings.Instance.Helpers.ExtruderOffset(0), + ActiveSliceSettings.Instance.Helpers.ExtruderOffset(1) + }, MeshViewerWidget.GetMaterialColor); printer.BedPlate.GCodeRenderer.Render3D(renderInfo); diff --git a/Submodules/agg-sharp b/Submodules/agg-sharp index 706ded619..39c92e01e 160000 --- a/Submodules/agg-sharp +++ b/Submodules/agg-sharp @@ -1 +1 @@ -Subproject commit 706ded619b4dd739dcedba938cbd647bb06bf977 +Subproject commit 39c92e01eee0f5334618e54e617ceb3d44d75054