From 4500f0fa8b75becbaf7caacba36ad1ae2d89ff8a Mon Sep 17 00:00:00 2001 From: Lars Brubaker Date: Thu, 13 May 2021 10:38:42 -0700 Subject: [PATCH] Adding customizable probing bed inset --- MatterControl.Printing/Settings/PrinterSettings.cs | 1 + MatterControl.Printing/Settings/SettingsKey.cs | 1 + .../Settings/SliceSettingsFields.cs | 12 ++++++++++++ .../Settings/SliceSettingsLayouts.cs | 1 + .../PrintLeveling/LevelWizardMesh.cs | 7 ++++++- Submodules/agg-sharp | 2 +- 6 files changed, 22 insertions(+), 2 deletions(-) diff --git a/MatterControl.Printing/Settings/PrinterSettings.cs b/MatterControl.Printing/Settings/PrinterSettings.cs index bf0352c70..9363426a1 100644 --- a/MatterControl.Printing/Settings/PrinterSettings.cs +++ b/MatterControl.Printing/Settings/PrinterSettings.cs @@ -165,6 +165,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration SettingsKey.print_center, SettingsKey.print_leveling_probe_start, SettingsKey.print_leveling_required_to_print, + SettingsKey.print_leveling_insets, SettingsKey.print_leveling_solution, SettingsKey.print_time_estimate_multiplier, SettingsKey.printer_name, diff --git a/MatterControl.Printing/Settings/SettingsKey.cs b/MatterControl.Printing/Settings/SettingsKey.cs index d22cbb7b7..accfe2568 100644 --- a/MatterControl.Printing/Settings/SettingsKey.cs +++ b/MatterControl.Printing/Settings/SettingsKey.cs @@ -182,6 +182,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration public const string print_leveling_probe_start = nameof(print_leveling_probe_start); public const string print_leveling_required_to_print = nameof(print_leveling_required_to_print); public const string print_leveling_solution = nameof(print_leveling_solution); + public const string print_leveling_insets = nameof(print_leveling_insets); public const string print_time_estimate_multiplier = nameof(print_time_estimate_multiplier); public const string printer_name = nameof(printer_name); public const string probe_has_been_calibrated = nameof(probe_has_been_calibrated); diff --git a/MatterControl.Printing/Settings/SliceSettingsFields.cs b/MatterControl.Printing/Settings/SliceSettingsFields.cs index 2c91406de..7a6dd1d3a 100644 --- a/MatterControl.Printing/Settings/SliceSettingsFields.cs +++ b/MatterControl.Printing/Settings/SliceSettingsFields.cs @@ -1075,6 +1075,18 @@ namespace MatterHackers.MatterControl.SlicerConfiguration RebuildGCodeOnChange = false }, new SliceSettingData() + { + SlicerConfigName = SettingsKey.print_leveling_insets, + PresentationName = "Leveling Insets".Localize(), + HelpText = "The inset amount for each side of the bed.\n- As a % of the width or depth\n- Ordered: Left, Front, Right, Back\n- NOTE: The probe offset is added on top of this".Localize(), + DataEditType = DataEditTypes.BOUNDS, + Units = "%".Localize(), + ShowAsOverride = true, + ShowIfSet = "!has_hardware_leveling", + RebuildGCodeOnChange = false, + DefaultValue = "10,10,10,10" + }, + new SliceSettingData() { SlicerConfigName = SettingsKey.leveling_sample_points, PresentationName = "Sample Points".Localize(), diff --git a/MatterControl.Printing/Settings/SliceSettingsLayouts.cs b/MatterControl.Printing/Settings/SliceSettingsLayouts.cs index 696f434df..0eecf38ff 100644 --- a/MatterControl.Printing/Settings/SliceSettingsLayouts.cs +++ b/MatterControl.Printing/Settings/SliceSettingsLayouts.cs @@ -292,6 +292,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration ("Leveling", new[] { SettingsKey.print_leveling_solution, + SettingsKey.print_leveling_insets, SettingsKey.leveling_sample_points, SettingsKey.print_leveling_required_to_print, }), diff --git a/MatterControlLib/ConfigurationPage/PrintLeveling/LevelWizardMesh.cs b/MatterControlLib/ConfigurationPage/PrintLeveling/LevelWizardMesh.cs index 50ef5a78b..8f3c87aa6 100644 --- a/MatterControlLib/ConfigurationPage/PrintLeveling/LevelWizardMesh.cs +++ b/MatterControlLib/ConfigurationPage/PrintLeveling/LevelWizardMesh.cs @@ -29,6 +29,7 @@ either expressed or implied, of the FreeBSD Project. using System; using System.Collections.Generic; +using MatterHackers.Agg; using MatterHackers.MatterControl.SlicerConfiguration; using MatterHackers.MeshVisualizer; using MatterHackers.VectorMath; @@ -53,7 +54,11 @@ namespace MatterHackers.MatterControl.ConfigurationPage.PrintLeveling { AxisAlignedBoundingBox aabb = printer.Bed.Aabb; - aabb.Expand(aabb.XSize * -.1, aabb.YSize * -.1, 0); + var insets = printer.Settings.GetValue(SettingsKey.print_leveling_insets); + aabb.MinXYZ.X += aabb.XSize * insets[0] / 100.0; + aabb.MinXYZ.Y += aabb.YSize * insets[1] / 100.0; + aabb.MaxXYZ.X -= aabb.XSize * insets[2] / 100.0; + aabb.MaxXYZ.Y -= aabb.YSize * insets[3] / 100.0; if (printer.Settings.GetValue(SettingsKey.bed_shape) == BedShape.Circular) { diff --git a/Submodules/agg-sharp b/Submodules/agg-sharp index 4c0f9c8ca..ef102435a 160000 --- a/Submodules/agg-sharp +++ b/Submodules/agg-sharp @@ -1 +1 @@ -Subproject commit 4c0f9c8cabf149ce6b4d70515b2a38c04483a72d +Subproject commit ef102435a4a6250caf7599fb6a889089b46a19b7