From 4784508d775447f6f7073c53522f24db91e88649 Mon Sep 17 00:00:00 2001 From: Lars Brubaker Date: Tue, 17 Nov 2020 12:11:42 -0800 Subject: [PATCH] Improving Set Temperature usability Added Set Temperature test --- .../Primitives/SetTemperatureObject3D.cs | 58 ++++++++++++++++-- .../Primitives/TemperatureTowerObject3D.cs | 2 +- .../DesignTools/PublicPropertyEditor.cs | 1 + .../MatterControl/PrimitivesContainer.cs | 1 - .../View3D/Object3DControlsLayer.cs | 6 +- .../Thumbnails/425727187812222155-256x256.png | Bin 3151 -> 5523 bytes Submodules/agg-sharp | 2 +- .../PrintingTests.cs | 37 +++++++++++ 8 files changed, 95 insertions(+), 12 deletions(-) diff --git a/MatterControlLib/DesignTools/Primitives/SetTemperatureObject3D.cs b/MatterControlLib/DesignTools/Primitives/SetTemperatureObject3D.cs index f553a1d89..4e583f1c3 100644 --- a/MatterControlLib/DesignTools/Primitives/SetTemperatureObject3D.cs +++ b/MatterControlLib/DesignTools/Primitives/SetTemperatureObject3D.cs @@ -31,6 +31,9 @@ using System.Collections.Generic; using System.Threading.Tasks; using MatterControl.Printing; using MatterHackers.Agg; +using MatterHackers.Agg.Image; +using MatterHackers.Agg.UI; +using MatterHackers.Agg.VertexSource; using MatterHackers.DataConverters3D; using MatterHackers.Localizations; using MatterHackers.MatterControl.PartPreviewWindow; @@ -39,7 +42,7 @@ using MatterHackers.VectorMath; namespace MatterHackers.MatterControl.DesignTools { - public class SetTemperatureObject3D : Object3D, IObject3DControlsProvider, IGCodeTransformer + public class SetTemperatureObject3D : Object3D, IObject3DControlsProvider, IGCodeTransformer, IEditorDraw { private bool hasBeenReached; private double accumulatedLayerHeight; @@ -47,8 +50,11 @@ namespace MatterHackers.MatterControl.DesignTools public SetTemperatureObject3D() { Name = "Set Temperature".Localize(); - Color = new Color(.11, .98, .26, .2); - Mesh = PlatonicSolids.CreateCube(40, 40, 0.2); + Color = Color.White.WithAlpha(.2); + Mesh = new RoundedRect(-20, -20, 20, 20, 3) + { + ResolutionScale = 10 + }.Extrude(.2); } public static async Task Create() @@ -99,10 +105,16 @@ namespace MatterHackers.MatterControl.DesignTools Invalidate(InvalidateType.DisplayValues); } + UpdateTexture(); + Parent?.Invalidate(new InvalidateArgs(this, InvalidateType.Mesh)); return Task.CompletedTask; } + private double WorldZ => default(Vector3).Transform(this.WorldMatrix()).Z; + + private (double temp, double worldZ) displayInfo = (double.MinValue, double.MinValue); + public IEnumerable ProcessCGcode(string lineToWrite, PrinterConfig printer) { if (!hasBeenReached @@ -112,9 +124,7 @@ namespace MatterHackers.MatterControl.DesignTools if (GCodeFile.GetFirstNumberAfter("; LAYER_HEIGHT", lineToWrite, ref layerHeight, out _, stopCheckingString: ":")) { accumulatedLayerHeight += layerHeight; - var worldPosition = default(Vector3); - worldPosition = worldPosition.Transform(this.WorldMatrix()); - if (accumulatedLayerHeight > worldPosition.Z) + if (accumulatedLayerHeight > WorldZ) { hasBeenReached = true; yield return $"M104 S{Temperature} ; Change Layer Temperature"; @@ -128,5 +138,41 @@ namespace MatterHackers.MatterControl.DesignTools hasBeenReached = false; accumulatedLayerHeight = 0; } + + public void DrawEditor(Object3DControlsLayer object3DControlLayer, List transparentMeshes, DrawEventArgs e) + { + if (displayInfo.temp == double.MinValue + || displayInfo.temp != Temperature + || displayInfo.worldZ != WorldZ) + { + UpdateTexture(); + } + } + + private void UpdateTexture() + { + Mesh.FaceTextures.Clear(); + displayInfo.temp = Temperature; + displayInfo.worldZ = WorldZ; + var theme = AppContext.Theme; + var texture = new ImageBuffer(128, 128, 32); + var graphics2D = texture.NewGraphics2D(); + graphics2D.Clear(theme.BackgroundColor); + graphics2D.DrawString($"Height: {displayInfo.worldZ:0.##}", + texture.Width / 2, + texture.Height / 5 * 3, + 15, + Agg.Font.Justification.Center, + Agg.Font.Baseline.BoundsCenter, + theme.TextColor); + graphics2D.DrawString($"Temp: {displayInfo.temp:0.##}", + texture.Width / 2, + texture.Height / 5 * 2, + 15, + Agg.Font.Justification.Center, + Agg.Font.Baseline.BoundsCenter, + theme.TextColor); + Mesh.PlaceTextureOnFaces(0, texture); + } } } \ No newline at end of file diff --git a/MatterControlLib/DesignTools/Primitives/TemperatureTowerObject3D.cs b/MatterControlLib/DesignTools/Primitives/TemperatureTowerObject3D.cs index af6d46d8f..f7243095b 100644 --- a/MatterControlLib/DesignTools/Primitives/TemperatureTowerObject3D.cs +++ b/MatterControlLib/DesignTools/Primitives/TemperatureTowerObject3D.cs @@ -54,6 +54,7 @@ namespace MatterHackers.MatterControl.DesignTools public TemperatureTowerObject3D() { Name = "Temperature Tower".Localize(); + Color = Color.White; if (shape == null) { @@ -172,7 +173,6 @@ namespace MatterHackers.MatterControl.DesignTools PointSize = 10, NameToWrite = $"{temp:0.##}", Matrix = Matrix4X4.CreateRotationX(MathHelper.Tau / 4) * Matrix4X4.CreateTranslation(0, -4.3, .8), - Color = Color.Transparent }; text.Rebuild().Wait(); var textBounds = text.GetAxisAlignedBoundingBox(); diff --git a/MatterControlLib/DesignTools/PublicPropertyEditor.cs b/MatterControlLib/DesignTools/PublicPropertyEditor.cs index b75009b6d..c39ec497c 100644 --- a/MatterControlLib/DesignTools/PublicPropertyEditor.cs +++ b/MatterControlLib/DesignTools/PublicPropertyEditor.cs @@ -326,6 +326,7 @@ namespace MatterHackers.MatterControl.DesignTools } object3D.Invalidated += RefreshField; + field.Content.Descendants().First().Name = property.DisplayName + " Edit"; field.Content.Closed += (s, e) => object3D.Invalidated -= RefreshField; rowContainer = CreateSettingsRow(property, field, theme); diff --git a/MatterControlLib/Library/Providers/MatterControl/PrimitivesContainer.cs b/MatterControlLib/Library/Providers/MatterControl/PrimitivesContainer.cs index 847aec020..6a430c335 100644 --- a/MatterControlLib/Library/Providers/MatterControl/PrimitivesContainer.cs +++ b/MatterControlLib/Library/Providers/MatterControl/PrimitivesContainer.cs @@ -78,7 +78,6 @@ namespace MatterHackers.MatterControl.Library () => "Text".Localize(), async () => await TextObject3D.Create()) { DateCreated = new System.DateTime(index++) }, - new GeneratorItem( () => "Cylinder".Localize(), async () => await CylinderObject3D.Create()) diff --git a/MatterControlLib/PartPreviewWindow/View3D/Object3DControlsLayer.cs b/MatterControlLib/PartPreviewWindow/View3D/Object3DControlsLayer.cs index 705c55227..29b670625 100644 --- a/MatterControlLib/PartPreviewWindow/View3D/Object3DControlsLayer.cs +++ b/MatterControlLib/PartPreviewWindow/View3D/Object3DControlsLayer.cs @@ -752,11 +752,11 @@ namespace MatterHackers.MatterControl.PartPreviewWindow if (!item.RebuildLocked) { item.Mesh.FaceTextures.TryGetValue(0, out FaceTextureData faceTexture); - bool viewOnlyTexture = faceTexture?.image == Object3DControlsLayer.viewOnlyTexture; + bool faceIsTextured = faceTexture?.image != null; // if not persistable and has view only texture, remove the view only texture if it has it if (item.WorldPersistable() - && viewOnlyTexture) + && faceIsTextured) { // make sure it does not have the view only texture using (item.RebuildLock()) @@ -765,7 +765,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow } } else if (!item.WorldPersistable() - && !viewOnlyTexture + && !faceIsTextured && !item.RebuildLocked) { // add a view only texture if it does not have one diff --git a/StaticData/Images/Thumbnails/425727187812222155-256x256.png b/StaticData/Images/Thumbnails/425727187812222155-256x256.png index 70ec35b08a47503ec3e450ed645501efab61a6e2..102cedb562a412835cd8b6e8f26180e1ebc653ef 100644 GIT binary patch literal 5523 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 ajQ9N03T|#@lV@OHVDNPHb6Mw<&;$VWZqGXa diff --git a/Submodules/agg-sharp b/Submodules/agg-sharp index c18ecbe08..6206906c7 160000 --- a/Submodules/agg-sharp +++ b/Submodules/agg-sharp @@ -1 +1 @@ -Subproject commit c18ecbe08a331cfd860edc7e635cbb82e044fe5b +Subproject commit 6206906c77413f6c5c3b11bc1ffffd8a9e13d619 diff --git a/Tests/MatterControl.AutomationTests/PrintingTests.cs b/Tests/MatterControl.AutomationTests/PrintingTests.cs index 19a408281..309705445 100644 --- a/Tests/MatterControl.AutomationTests/PrintingTests.cs +++ b/Tests/MatterControl.AutomationTests/PrintingTests.cs @@ -2,6 +2,7 @@ using System.Linq; using System.Threading; using System.Threading.Tasks; +using MatterHackers.Agg; using MatterHackers.Agg.UI; using MatterHackers.GuiAutomation; using MatterHackers.MatterControl.PrinterCommunication; @@ -380,6 +381,42 @@ namespace MatterHackers.MatterControl.Tests.Automation }, maxTimeToRun: 180); } + [Test, Category("Emulator")] + public async Task TemperatureTowerWorks() + { + await MatterControlUtilities.RunTest((testRunner) => + { + using (var emulator = testRunner.LaunchAndConnectToPrinterEmulator()) + { + Assert.AreEqual(1, ApplicationController.Instance.ActivePrinters.Count(), "One printer should exist after add"); + + var printer = testRunner.FirstPrinter(); + + bool foundTemp = false; + printer.Connection.LineSent += (s, e) => + { + if (e.StartsWith("M104 S222.2")) + { + foundTemp = true; + } + }; + + // print a part + testRunner.AddItemToBedplate() + .AddItemToBedplate(partName: "Row Item Set Temperature") + .DragDropByName("MoveInZControl", "MoveInZControl", offsetDrag: new Point2D(0, 0), offsetDrop: new Point2D(0, 10)) + .ClickByName("Temperature Edit") + .Type("222.2") + .StartPrint(printer) + .WaitFor(() => printer.Connection.CommunicationState == CommunicationStates.Connected); + + Assert.IsTrue(foundTemp); + } + + return Task.CompletedTask; + }, maxTimeToRun: 180); + } + [Test, Category("Emulator")] public async Task RecoveryT1NoProbe() {