From eb90fe82b09699ea39fdf18586eb8b6b5598c81a Mon Sep 17 00:00:00 2001 From: LarsBrubaker Date: Sun, 6 Jan 2019 08:35:55 -0800 Subject: [PATCH] removing z_offset, adding data to nozzle offsets xyz issue: MatterHackers/MCCentral#4793 Slightly illogical that z-offset can have different values --- .../Settings/SettingsHelpers.cs | 3 +- .../SlicerConfiguration/SliceSettingsRow.cs | 2 +- .../SliceSettingsWidget.cs | 2 +- .../UIFields/ExtruderOffsetField.cs | 31 ++++++++++++++++++- StaticData/SliceSettings/Layouts.txt | 1 - 5 files changed, 34 insertions(+), 5 deletions(-) diff --git a/MatterControl.Printing/Settings/SettingsHelpers.cs b/MatterControl.Printing/Settings/SettingsHelpers.cs index 4e9841799..c544a9986 100644 --- a/MatterControl.Printing/Settings/SettingsHelpers.cs +++ b/MatterControl.Printing/Settings/SettingsHelpers.cs @@ -173,6 +173,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration string currentOffsets = printerSettings.GetValue(SettingsKey.extruder_offset); string[] offsets = currentOffsets.Split(','); int count = 0; + var zOffset = printerSettings.GetValue(SettingsKey.z_offset); foreach (string offset in offsets) { if (count == extruderIndex) @@ -180,7 +181,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration string[] xyz = offset.Split('x'); if (xyz.Length == 2) { - return new Vector3(double.Parse(xyz[0]), double.Parse(xyz[1]), 0); + return new Vector3(double.Parse(xyz[0]), double.Parse(xyz[1]), -zOffset); } else { diff --git a/MatterControlLib/SlicerConfiguration/SliceSettingsRow.cs b/MatterControlLib/SlicerConfiguration/SliceSettingsRow.cs index cfca90ecf..840b12bbc 100644 --- a/MatterControlLib/SlicerConfiguration/SliceSettingsRow.cs +++ b/MatterControlLib/SlicerConfiguration/SliceSettingsRow.cs @@ -374,7 +374,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration } } - if (validationErrors.Any()) + if (validationErrors != null && validationErrors.Any()) { var errorsPanel = new FlowLayoutWidget(FlowDirection.TopToBottom) { diff --git a/MatterControlLib/SlicerConfiguration/SliceSettingsWidget.cs b/MatterControlLib/SlicerConfiguration/SliceSettingsWidget.cs index c780edfb8..b6982e5ed 100644 --- a/MatterControlLib/SlicerConfiguration/SliceSettingsWidget.cs +++ b/MatterControlLib/SlicerConfiguration/SliceSettingsWidget.cs @@ -740,7 +740,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration case SliceSettingData.DataEditTypes.OFFSET3: placeFieldInDedicatedRow = true; - uiField = new ExtruderOffsetField(settingsContext, settingData.SlicerConfigName, theme.TextColor, theme); + uiField = new ExtruderOffsetField(printer, settingsContext, settingData.SlicerConfigName, theme.TextColor, theme); break; #if !__ANDROID__ case SliceSettingData.DataEditTypes.IP_LIST: diff --git a/MatterControlLib/SlicerConfiguration/UIFields/ExtruderOffsetField.cs b/MatterControlLib/SlicerConfiguration/UIFields/ExtruderOffsetField.cs index 0e2d01583..04ecf596b 100644 --- a/MatterControlLib/SlicerConfiguration/UIFields/ExtruderOffsetField.cs +++ b/MatterControlLib/SlicerConfiguration/UIFields/ExtruderOffsetField.cs @@ -42,11 +42,13 @@ namespace MatterHackers.MatterControl.SlicerConfiguration private Color textColor; private ThemeConfig theme; private string slicerConfigName; + PrinterConfig printer; private List childFields; - public ExtruderOffsetField(SettingsContext settingsContext, string slicerConfigName, Color textColor, ThemeConfig theme) + public ExtruderOffsetField(PrinterConfig printer, SettingsContext settingsContext, string slicerConfigName, Color textColor, ThemeConfig theme) { + this.printer = printer; this.slicerConfigName = slicerConfigName; this.settingsContext = settingsContext; this.textColor = textColor; @@ -111,6 +113,33 @@ namespace MatterHackers.MatterControl.SlicerConfiguration base.Initialize(tabIndex); } + protected override string ConvertValue(string newValue) + { + var offsets = newValue?.Split(','); + string corrected = ""; + bool first = true; + foreach (string offset in offsets) + { + if(!first) + { + corrected += ","; + } + string[] xyz = offset.Split('x'); + if (xyz.Length == 2) + { + var zOffset = printer.Settings.GetValue(SettingsKey.z_offset); + corrected += xyz[0] + "x" + xyz[1] + "x" + (-zOffset).ToString(); + } + else + { + corrected += offset; + } + first = false; + } + + return corrected; + } + protected override void OnValueChanged(FieldChangedEventArgs fieldChangedEventArgs) { var segments = this.Value.Split(','); diff --git a/StaticData/SliceSettings/Layouts.txt b/StaticData/SliceSettings/Layouts.txt index f3a6e8396..14f843713 100644 --- a/StaticData/SliceSettings/Layouts.txt +++ b/StaticData/SliceSettings/Layouts.txt @@ -138,7 +138,6 @@ Printer bed_size print_center build_height - z_offset bed_shape Extruders Extruders