From 83a7d49e321455d104f2bfc390b9e89019d3885e Mon Sep 17 00:00:00 2001 From: Lars Brubaker Date: Wed, 4 Apr 2018 14:57:59 -0700 Subject: [PATCH] Make sure we don't sample off the bed reorder 7 and 13 point leveling probe positions issue: MatterHackers/MCCentral#1821 Improvements to leveling process --- .../PrintLeveling/LevelWizard13PointRadial.cs | 27 ++++++++++--------- .../PrintLeveling/LevelWizard7PointRadial.cs | 6 ++--- .../PrintLeveling/LevelWizardBase.cs | 9 +++++-- .../View3D/PrinterBar/PauseResumeButton.cs | 13 +++++++++ StaticData/SliceSettings/Properties.json | 1 - Submodules/agg-sharp | 2 +- 6 files changed, 38 insertions(+), 20 deletions(-) diff --git a/ConfigurationPage/PrintLeveling/LevelWizard13PointRadial.cs b/ConfigurationPage/PrintLeveling/LevelWizard13PointRadial.cs index 8c55011c6..11d3a497f 100644 --- a/ConfigurationPage/PrintLeveling/LevelWizard13PointRadial.cs +++ b/ConfigurationPage/PrintLeveling/LevelWizard13PointRadial.cs @@ -48,28 +48,29 @@ namespace MatterHackers.MatterControl.ConfigurationPage.PrintLeveling double bedRadius = Math.Min(printer.Settings.GetValue(SettingsKey.bed_size).X, printer.Settings.GetValue(SettingsKey.bed_size).Y) / 2; Vector2 bedCenter = printer.Settings.GetValue(SettingsKey.print_center); - // around the outside - int numberOfOuterSamples = 6; - for (int i = 0; i < numberOfOuterSamples; i++) - { - Vector2 position = new Vector2(bedRadius, 0); - position.Rotate(MathHelper.Tau / numberOfOuterSamples * i); - position += bedCenter; - yield return position; - } + // the center + yield return bedCenter; // around an inner circle - int numberOfInnerSamples = 6; + int numberOfInnerSamples = 4; for (int i = 0; i < numberOfInnerSamples; i++) { - Vector2 position = new Vector2(bedRadius / 2, 0); + Vector2 position = new Vector2(bedRadius * .45, 0); position.Rotate(MathHelper.Tau / numberOfInnerSamples * i); position += bedCenter; yield return position; } - // the center - yield return bedCenter; + // around the outside + int numberOfOuterSamples = 8; + for (int i = 0; i < numberOfOuterSamples; i++) + { + Vector2 position = new Vector2(bedRadius * .9, 0); + // the -MathHelper.Tau / 4 is to start out just under the last inner point + position.Rotate(MathHelper.Tau / numberOfOuterSamples * i - MathHelper.Tau / 4); + position += bedCenter; + yield return position; + } } } } \ No newline at end of file diff --git a/ConfigurationPage/PrintLeveling/LevelWizard7PointRadial.cs b/ConfigurationPage/PrintLeveling/LevelWizard7PointRadial.cs index c4e5ab4b3..ba2275dbc 100644 --- a/ConfigurationPage/PrintLeveling/LevelWizard7PointRadial.cs +++ b/ConfigurationPage/PrintLeveling/LevelWizard7PointRadial.cs @@ -49,15 +49,15 @@ namespace MatterHackers.MatterControl.ConfigurationPage.PrintLeveling double bedRadius = Math.Min(printer.Settings.GetValue(SettingsKey.bed_size).X, printer.Settings.GetValue(SettingsKey.bed_size).Y) / 2; Vector2 bedCenter = printer.Settings.GetValue(SettingsKey.print_center); + yield return bedCenter; + for (int i = 0; i < numberOfRadialSamples; i++) { - Vector2 position = new Vector2(bedRadius, 0); + Vector2 position = new Vector2(bedRadius * .9, 0); position.Rotate(MathHelper.Tau / numberOfRadialSamples * i); position += bedCenter; yield return position; } - - yield return bedCenter; } } } \ No newline at end of file diff --git a/ConfigurationPage/PrintLeveling/LevelWizardBase.cs b/ConfigurationPage/PrintLeveling/LevelWizardBase.cs index 21c60e9b9..243b4ee7c 100644 --- a/ConfigurationPage/PrintLeveling/LevelWizardBase.cs +++ b/ConfigurationPage/PrintLeveling/LevelWizardBase.cs @@ -238,11 +238,16 @@ namespace MatterHackers.MatterControl.ConfigurationPage.PrintLeveling if (printerSettings.Helpers.UseZProbe()) { var probeOffset = printer.Settings.GetValue(SettingsKey.z_probe_xy_offset); - var actualNozzlePosition = probePosition + probeOffset; + var actualNozzlePosition = probePosition - probeOffset; + // clamp this to the bed bounds + Vector2 bedSize = printer.Settings.GetValue(SettingsKey.bed_size); + Vector2 printCenter = printer.Settings.GetValue(SettingsKey.print_center); + RectangleDouble bedBounds = new RectangleDouble(printCenter - bedSize/2, printCenter + bedSize/2); + Vector2 adjustedPostion = bedBounds.Clamp(actualNozzlePosition); // and push it back into the probePosition - probePosition = actualNozzlePosition - probeOffset; + probePosition = adjustedPostion + probeOffset; } return probePosition; diff --git a/PartPreviewWindow/View3D/PrinterBar/PauseResumeButton.cs b/PartPreviewWindow/View3D/PrinterBar/PauseResumeButton.cs index 6b1761fa3..1e10e1d53 100644 --- a/PartPreviewWindow/View3D/PrinterBar/PauseResumeButton.cs +++ b/PartPreviewWindow/View3D/PrinterBar/PauseResumeButton.cs @@ -29,6 +29,7 @@ either expressed or implied, of the FreeBSD Project. using System; using System.Threading; +using MatterHackers.Agg; using MatterHackers.Agg.Platform; using MatterHackers.Agg.UI; using MatterHackers.Localizations; @@ -60,6 +61,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow BackgroundColor = theme.ButtonFactory.Options.NormalFillColor, HoverColor = theme.ButtonFactory.Options.HoverFillColor, }; + finishSetupButton.Click += (s, e) => { UiThread.RunOnIdle(async () => @@ -83,6 +85,17 @@ namespace MatterHackers.MatterControl.PartPreviewWindow UiThread.RunOnIdle(SetButtonStates); }, ref unregisterEvents); + ActiveSliceSettings.SettingChanged.RegisterEvent((s, e) => + { + if (e is StringEventArgs stringEvent + && (stringEvent.Data == SettingsKey.z_probe_z_offset + || stringEvent.Data == SettingsKey.print_leveling_data + || stringEvent.Data == SettingsKey.print_leveling_solution)) + { + SetButtonStates(); + } + }, ref unregisterEvents); + SetButtonStates(); } diff --git a/StaticData/SliceSettings/Properties.json b/StaticData/SliceSettings/Properties.json index e19d7aa5a..43bd94bea 100644 --- a/StaticData/SliceSettings/Properties.json +++ b/StaticData/SliceSettings/Properties.json @@ -775,7 +775,6 @@ "ShowAsOverride": true, "ShowIfSet": "!has_hardware_leveling", "DefaultValue": "3 Point Plane", - "ReloadUiWhenChanged": true, "RebuildGCodeOnChange": false }, { diff --git a/Submodules/agg-sharp b/Submodules/agg-sharp index 6a84d1740..285336bfd 160000 --- a/Submodules/agg-sharp +++ b/Submodules/agg-sharp @@ -1 +1 @@ -Subproject commit 6a84d17400a0bfe0e3fe0e76ab978c527a2eb13c +Subproject commit 285336bfd56a2d3fd6d8d05d4547177e752b5c98