diff --git a/ConfigurationPage/PrintLeveling/LevelingPlan.cs b/ConfigurationPage/PrintLeveling/LevelingPlan.cs index 1d9975675..82d8d08a3 100644 --- a/ConfigurationPage/PrintLeveling/LevelingPlan.cs +++ b/ConfigurationPage/PrintLeveling/LevelingPlan.cs @@ -49,6 +49,16 @@ namespace MatterHackers.MatterControl.ConfigurationPage.PrintLeveling this.printer = printer; } + public static Vector2 ProbeOffsetSamplePosition(PrinterConfig printer) + { + if (printer.Settings.GetValue(SettingsKey.print_leveling_solution) == LevelingSystem.ProbeCustom) + { + return printer.Settings.GetValue(SettingsKey.probe_offset_sample_point); + } + + return printer.Settings.GetValue(SettingsKey.print_center); + } + public IEnumerable GetSampleRing(int numberOfSamples, double ratio, double phase) { double bedRadius = Math.Min(printer.Settings.GetValue(SettingsKey.bed_size).X, printer.Settings.GetValue(SettingsKey.bed_size).Y) / 2; diff --git a/ConfigurationPage/PrintLeveling/ProbeCalibrationWizard.cs b/ConfigurationPage/PrintLeveling/ProbeCalibrationWizard.cs index cd7b1c235..d6dd1ea4b 100644 --- a/ConfigurationPage/PrintLeveling/ProbeCalibrationWizard.cs +++ b/ConfigurationPage/PrintLeveling/ProbeCalibrationWizard.cs @@ -123,7 +123,7 @@ namespace MatterHackers.MatterControl.ConfigurationPage.PrintLeveling targetHotendTemp); double startProbeHeight = printer.Settings.GetValue(SettingsKey.print_leveling_probe_start); - Vector2 probePosition = printer.Settings.GetValue(SettingsKey.print_center); + Vector2 probePosition = LevelingPlan.ProbeOffsetSamplePosition(printer); int i = 0; diff --git a/SlicerConfiguration/Settings/SettingsHelpers.cs b/SlicerConfiguration/Settings/SettingsHelpers.cs index aced35cc2..de52e82f8 100644 --- a/SlicerConfiguration/Settings/SettingsHelpers.cs +++ b/SlicerConfiguration/Settings/SettingsHelpers.cs @@ -124,6 +124,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration 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 leveling_sample_points = nameof(leveling_sample_points); + public const string probe_offset_sample_point = nameof(probe_offset_sample_point); public const string printer_name = nameof(printer_name); public const string progress_reporting = nameof(progress_reporting); public const string publish_bed_image = nameof(publish_bed_image); diff --git a/SlicerConfiguration/SlicerMapping/EngineMappingMatterSlice.cs b/SlicerConfiguration/SlicerMapping/EngineMappingMatterSlice.cs index ddd04379b..afa76661d 100644 --- a/SlicerConfiguration/SlicerMapping/EngineMappingMatterSlice.cs +++ b/SlicerConfiguration/SlicerMapping/EngineMappingMatterSlice.cs @@ -84,6 +84,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration SettingsKey.print_leveling_required_to_print, SettingsKey.print_leveling_solution, SettingsKey.leveling_sample_points, + SettingsKey.probe_offset_sample_point, SettingsKey.recover_first_layer_speed, SettingsKey.number_of_first_layers, SettingsKey.recover_is_enabled, diff --git a/StaticData/SliceSettings/Layouts.txt b/StaticData/SliceSettings/Layouts.txt index 6aab83a60..5cb9bc64d 100644 --- a/StaticData/SliceSettings/Layouts.txt +++ b/StaticData/SliceSettings/Layouts.txt @@ -165,6 +165,7 @@ Printer Print Leveling print_leveling_solution leveling_sample_points + probe_offset_sample_point print_leveling_required_to_print Leveling Probe print_leveling_probe_start diff --git a/StaticData/SliceSettings/Properties.json b/StaticData/SliceSettings/Properties.json index f37208f5a..bc935e10a 100644 --- a/StaticData/SliceSettings/Properties.json +++ b/StaticData/SliceSettings/Properties.json @@ -730,12 +730,22 @@ { "SlicerConfigName": "leveling_sample_points", "PresentationName": "Sample Points", - "HelpText": "A comma separated list of sample points to probje the bed at. You must specify an x and y position for each point. For example: '20,20,100,180,180,20' will saple the bad at 3 points.", + "HelpText": "A comma separated list of sample points to probe the bed at. You must specify an x and y position for each point. For example: '20,20,100,180,180,20' will saple the bad at 3 points.", "DataEditType": "MULTI_LINE_TEXT", "DefaultValue": "20,20,100,180,180,20", "ShowIfSet": "!sla_printer&!has_hardware_leveling&print_leveling_solution=Custom Points", "RebuildGCodeOnChange": false }, + { + "SlicerConfigName": "probe_offset_sample_point", + "PresentationName": "Probe Offset Sample Point", + "HelpText": "The position to measure the probe offset.", + "Units": "mm", + "DataEditType": "VECTOR2", + "DefaultValue": "100,100", + "ShowIfSet": "!sla_printer&!has_hardware_leveling&print_leveling_solution=Custom Points&use_z_probe", + "RebuildGCodeOnChange": false + }, { "SlicerConfigName": "print_leveling_required_to_print", "PresentationName": "Require Leveling To Print",