From fa86c58a7c3d808602005fffea907ba4eecf33a2 Mon Sep 17 00:00:00 2001 From: Lars Brubaker Date: Mon, 17 Jan 2022 11:33:22 -0800 Subject: [PATCH] Making it possible to set a bed surface and have settings for bed temperature / material --- .../Settings/PrinterSettings.cs | 15 +- .../Settings/SettingsHelpers.cs | 56 ++++++- .../Settings/SettingsKey.cs | 9 + .../Settings/SliceSettingsFields.cs | 91 ++++++++++ .../Settings/SliceSettingsLayouts.cs | 12 ++ .../ActionBar/TemperatureWidgetBed.cs | 101 +++++++++--- .../ApplicationView/SettingsValidation.cs | 2 +- .../PrintLeveling/LevelingPlan.cs | 2 +- .../SetupWizards/PrintLevelingWizard.cs | 4 +- .../SetupWizards/ZCalibrationWizard.cs | 2 +- .../WizardPages/LastPageInstructions.cs | 2 +- .../Io/PrintRecoveryStream.cs | 2 +- .../Io/ValidatePrintLevelingStream.cs | 4 +- .../PrinterCommunication/PrinterConnection.cs | 6 +- .../ControlWidgets/TemperatureControls.cs | 2 +- .../EngineMappingsMatterSlice.cs | 4 +- StaticData/Translations/Master.txt | 156 ++++++++++++++++++ Submodules/agg-sharp | 2 +- 18 files changed, 429 insertions(+), 43 deletions(-) diff --git a/MatterControl.Printing/Settings/PrinterSettings.cs b/MatterControl.Printing/Settings/PrinterSettings.cs index 693c2785a..3baadf3a8 100644 --- a/MatterControl.Printing/Settings/PrinterSettings.cs +++ b/MatterControl.Printing/Settings/PrinterSettings.cs @@ -100,6 +100,15 @@ namespace MatterHackers.MatterControl.SlicerConfiguration SettingsKey.bed_shape, SettingsKey.bed_size, SettingsKey.bed_temperature, + SettingsKey.bed_temperature_blue_tape, + SettingsKey.bed_temperature_buildtak, + SettingsKey.bed_temperature_garolite, + SettingsKey.bed_temperature_glass, + SettingsKey.bed_temperature_kapton, + SettingsKey.bed_temperature_pei, + SettingsKey.bed_temperature_pp, + SettingsKey.has_swappable_bed, + SettingsKey.bed_surface, SettingsKey.before_toolchange_gcode, SettingsKey.before_toolchange_gcode_1, SettingsKey.before_toolchange_gcode_2, @@ -1030,7 +1039,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration if (setting == SettingsKey.first_layer_bed_temperature && !this.Slicer.Exports.ContainsKey(SettingsKey.first_layer_bed_temperature)) { - value = $"{this.GetValue(SettingsKey.bed_temperature)}"; + value = $"{this.Helpers.ActiveBedTemperature}"; } // braces then brackets replacement @@ -1348,9 +1357,9 @@ namespace MatterHackers.MatterControl.SlicerConfiguration string value = this.GetValue(settingsKey); if (SettingsData.TryGetValue(settingsKey, out SliceSettingData settingsData) - && settingsData.Converter is ValueConverter resolver) + && settingsData.Converter != null) { - return resolver.Convert(value, this); + return settingsData.Converter.Convert(value, this); } return value; diff --git a/MatterControl.Printing/Settings/SettingsHelpers.cs b/MatterControl.Printing/Settings/SettingsHelpers.cs index 34d8da670..fd148cb35 100644 --- a/MatterControl.Printing/Settings/SettingsHelpers.cs +++ b/MatterControl.Printing/Settings/SettingsHelpers.cs @@ -204,8 +204,62 @@ namespace MatterHackers.MatterControl.SlicerConfiguration } } + public double ActiveBedTemperature + { + get + { + var temp = printerSettings.GetValue(ActiveBedTemperatureSetting); + // check if it might be trying to use the default + if (temp == 0) + { + // it is either the default (actual bed_temperature) or a 0. This will get the true temp requested + return printerSettings.GetValue(SettingsKey.bed_temperature); + } - public void DoPrintLeveling(bool doLeveling) + // fonud a good temp return it + return temp; + } + } + + public string ActiveBedTemperatureSetting + { + get + { + if (!printerSettings.GetValue(SettingsKey.has_swappable_bed)) + { + return SettingsKey.bed_temperature; + } + + switch(printerSettings.GetValue(SettingsKey.bed_surface)) + { + case "Blue Tape": + return SettingsKey.bed_temperature_blue_tape; + + case "BuildTak": + return SettingsKey.bed_temperature_buildtak; + + case "Garolite": + return SettingsKey.bed_temperature_garolite; + + case "Glass": + return SettingsKey.bed_temperature_glass; + + case "Kapton": + return SettingsKey.bed_temperature_kapton; + + case "PEI": + return SettingsKey.bed_temperature_pei; + + case "Polypropylene": + return SettingsKey.bed_temperature_pp; + + default: + return SettingsKey.bed_temperature; + } + } + } + + public void DoPrintLeveling(bool doLeveling) { // Early exit if already set if (doLeveling == printerSettings.GetValue(SettingsKey.print_leveling_enabled)) diff --git a/MatterControl.Printing/Settings/SettingsKey.cs b/MatterControl.Printing/Settings/SettingsKey.cs index 6994420b1..5afd2d2e9 100644 --- a/MatterControl.Printing/Settings/SettingsKey.cs +++ b/MatterControl.Printing/Settings/SettingsKey.cs @@ -46,6 +46,15 @@ namespace MatterHackers.MatterControl.SlicerConfiguration public const string bed_shape = nameof(bed_shape); public const string bed_size = nameof(bed_size); public const string bed_temperature = nameof(bed_temperature); + public const string bed_temperature_blue_tape = nameof(bed_temperature_blue_tape); + public const string bed_temperature_buildtak = nameof(bed_temperature_buildtak); + public const string bed_temperature_garolite = nameof(bed_temperature_garolite); + public const string bed_temperature_glass = nameof(bed_temperature_glass); + public const string bed_temperature_kapton = nameof(bed_temperature_kapton); + public const string bed_temperature_pei = nameof(bed_temperature_pei); + public const string bed_temperature_pp = nameof(bed_temperature_pp); + public const string has_swappable_bed = nameof(has_swappable_bed); + public const string bed_surface = nameof(bed_surface); public const string before_toolchange_gcode = nameof(before_toolchange_gcode); public const string before_toolchange_gcode_1 = nameof(before_toolchange_gcode_1); public const string before_toolchange_gcode_2 = nameof(before_toolchange_gcode_2); diff --git a/MatterControl.Printing/Settings/SliceSettingsFields.cs b/MatterControl.Printing/Settings/SliceSettingsFields.cs index 5d92c92c4..889c92499 100644 --- a/MatterControl.Printing/Settings/SliceSettingsFields.cs +++ b/MatterControl.Printing/Settings/SliceSettingsFields.cs @@ -136,6 +136,97 @@ namespace MatterHackers.MatterControl.SlicerConfiguration DefaultValue = "70" }, new SliceSettingData() + { + SlicerConfigName = SettingsKey.bed_temperature_blue_tape, + PresentationName = "Blue Tape Bed Temperature".Localize(), + HelpText = "The temperature to print when the bed is coverd with blue tape. Set to 0 to use default.".Localize(), + DataEditType = DataEditTypes.POSITIVE_DOUBLE, + Units = "°C".Localize(), + ShowIfSet = "has_heated_bed&has_swappable_bed", + DefaultValue = "0" + }, + new SliceSettingData() + { + SlicerConfigName = SettingsKey.bed_temperature_buildtak, + PresentationName = "BuildTak Bed Temperature".Localize(), + HelpText = "The temperature to print when the bed is using BuildTak. Set to 0 to use default.".Localize(), + DataEditType = DataEditTypes.POSITIVE_DOUBLE, + Units = "°C".Localize(), + ShowIfSet = "has_heated_bed&has_swappable_bed", + DefaultValue = "0" + }, + new SliceSettingData() + { + SlicerConfigName = SettingsKey.bed_temperature_garolite, + PresentationName = "Garolite Bed Temperature".Localize(), + HelpText = "The temperature to print when the bed is using garolite. Set to 0 to use default.".Localize(), + DataEditType = DataEditTypes.POSITIVE_DOUBLE, + Units = "°C".Localize(), + ShowIfSet = "has_heated_bed&has_swappable_bed", + DefaultValue = "0" + }, + new SliceSettingData() + { + SlicerConfigName = SettingsKey.bed_temperature_glass, + PresentationName = "Glass Bed Temperature".Localize(), + HelpText = "The temperature to print when the bed is using glass. Set to 0 to use default.".Localize(), + DataEditType = DataEditTypes.POSITIVE_DOUBLE, + Units = "°C".Localize(), + ShowIfSet = "has_heated_bed&has_swappable_bed", + DefaultValue = "0" + }, + new SliceSettingData() + { + SlicerConfigName = SettingsKey.bed_temperature_kapton, + PresentationName = "Kapton Bed Temperature".Localize(), + HelpText = "The temperature to print when the bed is coverd in kapton tape. Set to 0 to use default.".Localize(), + DataEditType = DataEditTypes.POSITIVE_DOUBLE, + Units = "°C".Localize(), + ShowIfSet = "has_heated_bed&has_swappable_bed", + DefaultValue = "0" + }, + new SliceSettingData() + { + SlicerConfigName = SettingsKey.bed_temperature_pei, + PresentationName = "PEI Bed Temperature".Localize(), + HelpText = "The temperature to print when the bed is using PEI. Set to 0 to use default.".Localize(), + DataEditType = DataEditTypes.POSITIVE_DOUBLE, + Units = "°C".Localize(), + ShowIfSet = "has_heated_bed&has_swappable_bed", + DefaultValue = "0" + }, + new SliceSettingData() + { + SlicerConfigName = SettingsKey.bed_temperature_pp, + PresentationName = "Polypropylene Bed Temperature".Localize(), + HelpText = "The temperature to print when the bed is polypropylene. Set to 0 to use default.".Localize(), + DataEditType = DataEditTypes.POSITIVE_DOUBLE, + Units = "°C".Localize(), + ShowIfSet = "has_heated_bed&has_swappable_bed", + DefaultValue = "0" + }, + new SliceSettingData() + { + SlicerConfigName = SettingsKey.has_swappable_bed, + PresentationName = "Has Swappable Bed".Localize(), + HelpText = "This should be checked if the printer supports multiple bed surfaces and the bed temperature for the different surfaces needs to vary.".Localize(), + DataEditType = DataEditTypes.CHECK_BOX, + RequiredDisplayDetail = DisplayDetailRequired.Advanced, + ShowIfSet = "has_heated_bed", + UiUpdate = UiUpdateRequired.Application, + DefaultValue = "0" + }, + new SliceSettingData() + { + SlicerConfigName = SettingsKey.bed_surface, + PresentationName = "Bed Surface".Localize(), + HelpText = "The current bed surfaces that the printer is using. This is used to set the correct bed temperature for a given material.".Localize(), + DataEditType = DataEditTypes.LIST, + ShowIfSet = "has_heated_bed&has_swappable_bed", + ListValues = "Default,Blue Tape,BuildTak,Garolite,Glass,Kapton,PEI,Polypropylene", + DefaultValue = "Default" + }, + new SliceSettingData() { SlicerConfigName = SettingsKey.first_layer_bed_temperature, PresentationName = "First Layer Bed Temperature".Localize(), diff --git a/MatterControl.Printing/Settings/SliceSettingsLayouts.cs b/MatterControl.Printing/Settings/SliceSettingsLayouts.cs index eadbc4216..6b625f020 100644 --- a/MatterControl.Printing/Settings/SliceSettingsLayouts.cs +++ b/MatterControl.Printing/Settings/SliceSettingsLayouts.cs @@ -137,6 +137,10 @@ namespace MatterHackers.MatterControl.SlicerConfiguration }), ("Adhesion", new[] { + ("Bed", new [] + { + SettingsKey.bed_surface, + }), ("Skirt", new[] { SettingsKey.create_skirt, @@ -209,6 +213,13 @@ namespace MatterHackers.MatterControl.SlicerConfiguration SettingsKey.temperature2, SettingsKey.temperature3, SettingsKey.bed_temperature, + SettingsKey.bed_temperature_blue_tape, + SettingsKey.bed_temperature_buildtak, + SettingsKey.bed_temperature_garolite, + SettingsKey.bed_temperature_glass, + SettingsKey.bed_temperature_kapton, + SettingsKey.bed_temperature_pei, + SettingsKey.bed_temperature_pp, SettingsKey.inactive_cool_down, SettingsKey.seconds_to_reheat, }), @@ -350,6 +361,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration SettingsKey.has_fan_per_extruder, SettingsKey.has_hardware_leveling, SettingsKey.has_heated_bed, + SettingsKey.has_swappable_bed, SettingsKey.has_sd_card_reader, SettingsKey.has_power_control, SettingsKey.filament_runout_sensor, diff --git a/MatterControlLib/ActionBar/TemperatureWidgetBed.cs b/MatterControlLib/ActionBar/TemperatureWidgetBed.cs index 69758a996..ca5b6d981 100644 --- a/MatterControlLib/ActionBar/TemperatureWidgetBed.cs +++ b/MatterControlLib/ActionBar/TemperatureWidgetBed.cs @@ -74,7 +74,7 @@ namespace MatterHackers.MatterControl.ActionBar { var widget = new IgnoredPopupWidget() { - Width = 300 * GuiWidget.DeviceScale, + Width = 340 * GuiWidget.DeviceScale, HAnchor = HAnchor.Absolute, VAnchor = VAnchor.Fit, Padding = new BorderDouble(12, 0), @@ -88,9 +88,9 @@ namespace MatterHackers.MatterControl.ActionBar }; widget.AddChild(container); - GuiWidget hotendRow; + GuiWidget heatedBedSettingItem; - container.AddChild(hotendRow = new SettingsItem( + container.AddChild(heatedBedSettingItem = new SettingsItem( "Heated Bed".Localize(), menuTheme, new SettingsItem.ToggleSwitchConfig() @@ -98,13 +98,13 @@ namespace MatterHackers.MatterControl.ActionBar Checked = printer.Connection.TargetBedTemperature > 0, ToggleAction = (itemChecked) => { - var goalTemp = itemChecked ? printer.Settings.GetValue(SettingsKey.bed_temperature) : 0; + var goalTemp = itemChecked ? printer.Settings.Helpers.ActiveBedTemperature : 0; printer.Connection.TargetBedTemperature = goalTemp; } }, enforceGutter: false)); - var toggleWidget = hotendRow.Children.Where(o => o is ICheckbox).FirstOrDefault(); + var toggleWidget = heatedBedSettingItem.Children.Where(o => o is ICheckbox).FirstOrDefault(); toggleWidget.Name = "Toggle Heater"; heatToggle = toggleWidget as ICheckbox; @@ -112,14 +112,6 @@ namespace MatterHackers.MatterControl.ActionBar int tabIndex = 0; var settingsContext = new SettingsContext(printer, null, NamedSettingsLayers.All); - var settingsData = PrinterSettings.SettingsData[SettingsKey.bed_temperature]; - var temperatureRow = SliceSettingsTabView.CreateItemRow(settingsData, settingsContext, printer, menuTheme, ref tabIndex, allUiFields); - container.AddChild(temperatureRow); - - // Add the temperature row to the always enabled list ensuring the field can be set when disconnected - alwaysEnabled.Add(temperatureRow); - alwaysEnabled.Add(hotendRow); - // add in the temp graph var graph = new DataViewGraph() { @@ -127,20 +119,74 @@ namespace MatterHackers.MatterControl.ActionBar MinValue = 0, ShowGoal = true, GoalColor = menuTheme.PrimaryAccentColor, - GoalValue = printer.Settings.GetValue(SettingsKey.bed_temperature), + GoalValue = printer.Settings.Helpers.ActiveBedTemperature, MaxValue = 150, // could come from some profile value in the future Width = widget.Width - 20 * GuiWidget.DeviceScale, Height = 35 * GuiWidget.DeviceScale, // this works better if it is a common multiple of the Width Margin = new BorderDouble(0, 5, 0, 0), }; + var temperatureRow = new FlowLayoutWidget() + { + HAnchor = HAnchor.Stretch + }; + + var bedSettingBeingEdited = printer.Settings.Helpers.ActiveBedTemperatureSetting; + + void SettingChanged(object s, StringEventArgs stringEvent) + { + if (stringEvent.Data == SettingsKey.bed_temperature + || stringEvent.Data == bedSettingBeingEdited) + { + graph.GoalValue = printer.Settings.Helpers.ActiveBedTemperature; + } + else if (stringEvent.Data == SettingsKey.bed_surface) + { + AddTemperatureControlForBedSurface(); + graph.GoalValue = printer.Settings.Helpers.ActiveBedTemperature; + } + } + + void AddTemperatureControlForBedSurface() + { + temperatureRow.CloseChildren(); + + bedSettingBeingEdited = printer.Settings.Helpers.ActiveBedTemperatureSetting; + + var settingsData = PrinterSettings.SettingsData[bedSettingBeingEdited]; + var bedTemperature = SliceSettingsTabView.CreateItemRow(settingsData, settingsContext, printer, menuTheme, ref tabIndex, allUiFields); + + var settingsRow = bedTemperature.DescendantsAndSelf().FirstOrDefault(); + + // make sure we are not still connected when changing settings + printer.Settings.SettingChanged -= SettingChanged; + // connect it + printer.Settings.SettingChanged += SettingChanged; + // and make sure we dispose when done + printer.Disposed += (s, e) => printer.Settings.SettingChanged -= SettingChanged; + + temperatureRow.AddChild(bedTemperature); + } + + AddTemperatureControlForBedSurface(); + container.AddChild(temperatureRow); + + // Add the temperature row to the always enabled list ensuring the field can be set when disconnected + alwaysEnabled.Add(temperatureRow); + alwaysEnabled.Add(heatedBedSettingItem); + + var bedSurfaceChanger = CreateBedSurfaceSelector(printer, menuTheme, ref tabIndex); + if (bedSurfaceChanger != null) + { + container.AddChild(bedSurfaceChanger); + alwaysEnabled.Add(bedSurfaceChanger); + } + runningInterval = UiThread.SetInterval(() => { graph.AddData(this.ActualTemperature); }, 1); - var settingsRow = temperatureRow.DescendantsAndSelf().FirstOrDefault(); - void Printer_SettingChanged(object s, StringEventArgs stringEvent) { if (stringEvent != null) @@ -156,14 +202,6 @@ namespace MatterHackers.MatterControl.ActionBar userInitiated: false); } } - - if (stringEvent.Data == SettingsKey.bed_temperature) - { - var temp = printer.Settings.GetValue(SettingsKey.bed_temperature); - graph.GoalValue = temp; - - settingsRow.UpdateStyle(); - } } } @@ -175,6 +213,21 @@ namespace MatterHackers.MatterControl.ActionBar return widget; } + public static GuiWidget CreateBedSurfaceSelector(PrinterConfig printer, ThemeConfig theme, ref int tabIndex) + { + if (!printer.Settings.GetValue(SettingsKey.has_heated_bed) + || !printer.Settings.GetValue(SettingsKey.has_swappable_bed)) + { + return null; + } + + var settingsContext = new SettingsContext(printer, null, NamedSettingsLayers.All); + var settingsData = PrinterSettings.SettingsData[SettingsKey.bed_surface]; + + var surfaceSelector = SliceSettingsTabView.CreateItemRow(settingsData, settingsContext, printer, theme, ref tabIndex); + return surfaceSelector; + } + public override void OnClosed(EventArgs e) { // Unregister listeners diff --git a/MatterControlLib/ApplicationView/SettingsValidation.cs b/MatterControlLib/ApplicationView/SettingsValidation.cs index 416d9d55c..b5735d116 100644 --- a/MatterControlLib/ApplicationView/SettingsValidation.cs +++ b/MatterControlLib/ApplicationView/SettingsValidation.cs @@ -271,7 +271,7 @@ namespace MatterHackers.MatterControl bool heatedBed = printer.Settings.GetValue(SettingsKey.has_heated_bed); - double bedTemperature = printer.Settings.GetValue(SettingsKey.bed_temperature); + double bedTemperature = printer.Settings.Helpers.ActiveBedTemperature; if (heatedBed && printer.Connection.IsConnected diff --git a/MatterControlLib/ConfigurationPage/PrintLeveling/LevelingPlan.cs b/MatterControlLib/ConfigurationPage/PrintLeveling/LevelingPlan.cs index 0c25088bf..0a5f4daf1 100644 --- a/MatterControlLib/ConfigurationPage/PrintLeveling/LevelingPlan.cs +++ b/MatterControlLib/ConfigurationPage/PrintLeveling/LevelingPlan.cs @@ -143,7 +143,7 @@ namespace MatterHackers.MatterControl.ConfigurationPage.PrintLeveling // check that the bed temperature at probe time was close enough to the current print bed temp double requiredLevelingTemp = printer.Settings.GetValue(SettingsKey.has_heated_bed) ? - printer.Settings.GetValue(SettingsKey.bed_temperature) + printer.Settings.Helpers.ActiveBedTemperature : 0; // check that the number of points sampled is correct for the solution diff --git a/MatterControlLib/ConfigurationPage/PrintLeveling/SetupWizards/PrintLevelingWizard.cs b/MatterControlLib/ConfigurationPage/PrintLeveling/SetupWizards/PrintLevelingWizard.cs index d18b7fc3f..4a28c223f 100644 --- a/MatterControlLib/ConfigurationPage/PrintLeveling/SetupWizards/PrintLevelingWizard.cs +++ b/MatterControlLib/ConfigurationPage/PrintLeveling/SetupWizards/PrintLevelingWizard.cs @@ -189,7 +189,7 @@ namespace MatterHackers.MatterControl.ConfigurationPage.PrintLeveling // start heating up now so it has more time to heat var bedTemperature = printer.Settings.GetValue(SettingsKey.has_heated_bed) ? - printer.Settings.GetValue(SettingsKey.bed_temperature) + printer.Settings.Helpers.ActiveBedTemperature : 0; if (bedTemperature > 0) { @@ -207,7 +207,7 @@ namespace MatterHackers.MatterControl.ConfigurationPage.PrintLeveling double targetHotendTemp = 0; if (printer.Settings.GetValue(SettingsKey.has_heated_bed)) { - targetBedTemp = printer.Settings.GetValue(SettingsKey.bed_temperature); + targetBedTemp = printer.Settings.Helpers.ActiveBedTemperature; } if (!printer.Settings.Helpers.ProbeBeingUsed) diff --git a/MatterControlLib/ConfigurationPage/PrintLeveling/SetupWizards/ZCalibrationWizard.cs b/MatterControlLib/ConfigurationPage/PrintLeveling/SetupWizards/ZCalibrationWizard.cs index ea16a4c79..6ab8276c2 100644 --- a/MatterControlLib/ConfigurationPage/PrintLeveling/SetupWizards/ZCalibrationWizard.cs +++ b/MatterControlLib/ConfigurationPage/PrintLeveling/SetupWizards/ZCalibrationWizard.cs @@ -157,7 +157,7 @@ namespace MatterHackers.MatterControl.ConfigurationPage.PrintLeveling { // start heating up the bed as that will be needed next var bedTemperature = printer.Settings.GetValue(SettingsKey.has_heated_bed) ? - printer.Settings.GetValue(SettingsKey.bed_temperature) + printer.Settings.Helpers.ActiveBedTemperature : 0; if (bedTemperature > 0) { diff --git a/MatterControlLib/ConfigurationPage/PrintLeveling/WizardPages/LastPageInstructions.cs b/MatterControlLib/ConfigurationPage/PrintLeveling/WizardPages/LastPageInstructions.cs index 97154aacd..a523f3e43 100644 --- a/MatterControlLib/ConfigurationPage/PrintLeveling/WizardPages/LastPageInstructions.cs +++ b/MatterControlLib/ConfigurationPage/PrintLeveling/WizardPages/LastPageInstructions.cs @@ -68,7 +68,7 @@ namespace MatterHackers.MatterControl.ConfigurationPage.PrintLeveling levelingData.CreationDate = DateTime.Now; // record the temp the bed was when we measured it (or 0 if no heated bed) levelingData.BedTemperature = printer.Settings.GetValue(SettingsKey.has_heated_bed) ? - printer.Settings.GetValue(SettingsKey.bed_temperature) + printer.Settings.Helpers.ActiveBedTemperature : 0; levelingData.IssuedLevelingTempWarning = false; diff --git a/MatterControlLib/PrinterCommunication/Io/PrintRecoveryStream.cs b/MatterControlLib/PrinterCommunication/Io/PrintRecoveryStream.cs index c3f4e9c67..e010ef77e 100644 --- a/MatterControlLib/PrinterCommunication/Io/PrintRecoveryStream.cs +++ b/MatterControlLib/PrinterCommunication/Io/PrintRecoveryStream.cs @@ -98,7 +98,7 @@ namespace MatterHackers.MatterControl.PrinterCommunication.Io queuedCommands.Add("M82; use absolute distance for extrusion"); bool hasHeatedBed = printer.Settings.GetValue(SettingsKey.has_heated_bed); - double bedTemp = printer.Settings.GetValue(SettingsKey.bed_temperature); + double bedTemp = printer.Settings.Helpers.ActiveBedTemperature; if (hasHeatedBed && bedTemp > 0) { // start heating the bed diff --git a/MatterControlLib/PrinterCommunication/Io/ValidatePrintLevelingStream.cs b/MatterControlLib/PrinterCommunication/Io/ValidatePrintLevelingStream.cs index b3a60a8e6..f86e4db5c 100644 --- a/MatterControlLib/PrinterCommunication/Io/ValidatePrintLevelingStream.cs +++ b/MatterControlLib/PrinterCommunication/Io/ValidatePrintLevelingStream.cs @@ -66,7 +66,7 @@ namespace MatterHackers.MatterControl.PrinterCommunication.Io printer.Connection.CanceleRequested += Connection_PrintCanceled; if (!printer.Settings.GetValue(SettingsKey.has_heated_bed) - || printer.Settings.GetValue(SettingsKey.bed_temperature) == 0) + || printer.Settings.Helpers.ActiveBedTemperature == 0) { // If we don't have a bed or we are not going to set the temperature // do not wait for an M190 @@ -311,7 +311,7 @@ namespace MatterHackers.MatterControl.PrinterCommunication.Io levelingData.CreationDate = DateTime.Now; // record the temp the bed was when we measured it (or 0 if no heated bed) levelingData.BedTemperature = printer.Settings.GetValue(SettingsKey.has_heated_bed) ? - printer.Settings.GetValue(SettingsKey.bed_temperature) + printer.Settings.Helpers.ActiveBedTemperature : 0; levelingData.IssuedLevelingTempWarning = false; diff --git a/MatterControlLib/PrinterCommunication/PrinterConnection.cs b/MatterControlLib/PrinterCommunication/PrinterConnection.cs index 24d25e9f8..27b25e04a 100644 --- a/MatterControlLib/PrinterCommunication/PrinterConnection.cs +++ b/MatterControlLib/PrinterCommunication/PrinterConnection.cs @@ -383,7 +383,9 @@ namespace MatterHackers.MatterControl.PrinterCommunication } } - if (stringEvent.Data == SettingsKey.bed_temperature) + if (stringEvent.Data == Printer.Settings.Helpers.ActiveBedTemperatureSetting + || stringEvent.Data == SettingsKey.bed_temperature + || stringEvent.Data == SettingsKey.bed_surface) { if (this.Printing && this.DetailedPrintingState == DetailedPrintingState.HeatingBed) @@ -394,7 +396,7 @@ namespace MatterHackers.MatterControl.PrinterCommunication double goalTemp = this.TargetBedTemperature; if (goalTemp > 0) { - var newGoal = printer.Settings.GetValue(SettingsKey.bed_temperature); + var newGoal = printer.Settings.Helpers.ActiveBedTemperature; this.TargetBedTemperature = newGoal; } } diff --git a/MatterControlLib/PrinterControls/ControlWidgets/TemperatureControls.cs b/MatterControlLib/PrinterControls/ControlWidgets/TemperatureControls.cs index 0560cb923..c526f2498 100644 --- a/MatterControlLib/PrinterControls/ControlWidgets/TemperatureControls.cs +++ b/MatterControlLib/PrinterControls/ControlWidgets/TemperatureControls.cs @@ -98,7 +98,7 @@ namespace MatterHackers.MatterControl.PrinterControls preHeatButton.Click += (s, e) => { // turn on the bed - printer.Connection.TargetBedTemperature = printer.Settings.GetValue(SettingsKey.bed_temperature); + printer.Connection.TargetBedTemperature = printer.Settings.Helpers.ActiveBedTemperature; for (int extruderIndex = 0; extruderIndex < hotendCount; extruderIndex++) { printer.Connection.SetTargetHotendTemperature(extruderIndex, printer.Settings.Helpers.ExtruderTargetTemperature(extruderIndex)); diff --git a/MatterControlLib/SlicerConfiguration/EngineMappingsMatterSlice.cs b/MatterControlLib/SlicerConfiguration/EngineMappingsMatterSlice.cs index 61fc848a0..2feb45f7b 100644 --- a/MatterControlLib/SlicerConfiguration/EngineMappingsMatterSlice.cs +++ b/MatterControlLib/SlicerConfiguration/EngineMappingsMatterSlice.cs @@ -678,7 +678,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration }; AddDefaultIfNotPresent(preStartGCode, "G21", startGCodeLines, "set units to millimeters"); AddDefaultIfNotPresent(preStartGCode, "M107", startGCodeLines, "fan off"); - double bed_temperature = settings.GetValue(SettingsKey.bed_temperature); + double bed_temperature = settings.Helpers.ActiveBedTemperature; if (bed_temperature > 0 && settings.GetValue(SettingsKey.has_heated_bed)) { @@ -747,7 +747,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration "; automatic settings after start_gcode" }; - double bed_temperature = settings.GetValue(SettingsKey.bed_temperature); + double bed_temperature = settings.Helpers.ActiveBedTemperature; if (bed_temperature > 0 && settings.GetValue(SettingsKey.has_heated_bed) && !startGCode.Contains("M109")) diff --git a/StaticData/Translations/Master.txt b/StaticData/Translations/Master.txt index 1dea65d8b..b7a41c786 100644 --- a/StaticData/Translations/Master.txt +++ b/StaticData/Translations/Master.txt @@ -64,6 +64,9 @@ Translated:5x5 Mesh English:7 Point Disk Translated:7 Point Disk +English:A comma separated list of bed names and temperatures (e.g. "Glass,70,PEI,65,Kapton,55"). When selected the bed temperature will be set to the chosen value. +Translated:A comma separated list of bed names and temperatures (e.g. "Glass,70,PEI,65,Kapton,55"). When selected the bed temperature will be set to the chosen value. + English:A component must be selected Translated:A component must be selected @@ -256,6 +259,9 @@ Translated:At least 1 part must be selected English:At least 2 parts must be selected Translated:At least 2 parts must be selected +English:Attempting to connect +Translated:Attempting to connect + English:Attempting to connect again may address the issue. Translated:Attempting to connect again may address the issue. @@ -337,6 +343,12 @@ Translated:Bed Shape English:Bed Size Translated:Bed Size +English:Bed Surface +Translated:Bed Surface + +English:Bed Surface Temperatures +Translated:Bed Surface Temperatures + English:Bed Temperature Translated:Bed Temperature @@ -367,6 +379,12 @@ Translated:Bevel Steps English:Bevel Top Translated:Bevel Top +English:Blue Tape +Translated:Blue Tape + +English:Blue Tape Bed Temperature +Translated:Blue Tape Bed Temperature + English:Bottom Inset Translated:Bottom Inset @@ -391,6 +409,12 @@ Translated:Brim Extruder English:Build Height Translated:Build Height +English:BuildTak +Translated:BuildTak + +English:BuildTak Bed Temperature +Translated:BuildTak Bed Temperature + English:Calculate and transmit a standard rep-rap checksum for all commands. Translated:Calculate and transmit a standard rep-rap checksum for all commands. @@ -463,6 +487,9 @@ Translated:Check For Update English:Checking Cloud Services Translated:Checking Cloud Services +English:Checking with webservice +Translated:Checking with webservice + English:Checks before each print that the layer height is less than the nozzle diameter (important for filament adhesion) Translated:Checks before each print that the layer height is less than the nozzle diameter (important for filament adhesion) @@ -574,6 +601,9 @@ Translated:Connect to the currently selected printer English:Connect to your printer to continue Translated:Connect to your printer to continue +English:Connect your printer to check for firmware updates. +Translated:Connect your printer to check for firmware updates. + English:Connected Translated:Connected @@ -583,6 +613,9 @@ Translated:Connected to Emulator English:Connection Failed Translated:Connection Failed +English:Connection succeeded +Translated:Connection succeeded + English:Continue Translated:Continue @@ -709,6 +742,9 @@ Translated:Cube English:Current Default Translated:Current Default +English:Currently available serial ports. +Translated:Currently available serial ports. + English:Curve Translated:Curve @@ -778,6 +814,9 @@ Translated:Detect gaps between perimeters that are too thin to fill with normal English:Detect perimeters that cross over themselves and combine them. Translated:Detect perimeters that cross over themselves and combine them. +English:Detecting device firmware... +Translated:Detecting device firmware... + English:Detects sections of the model that would be too thin to print and expands them to make them printable. Translated:Detects sections of the model that would be too thin to print and expands them to make them printable. @@ -841,6 +880,9 @@ Translated:Downloading English:Downloads Translated:Downloads +English:Dual Contouring +Translated:Dual Contouring + English:Dual Extrusion Align Translated:Dual Extrusion Align @@ -1192,6 +1234,12 @@ Translated:Furthest Back English:g/cm³ Translated:g/cm³ +English:Garolite +Translated:Garolite + +English:Garolite Bed Temperature +Translated:Garolite Bed Temperature + English:G-Code Translated:G-Code @@ -1255,6 +1303,12 @@ Translated:Generates an outline around the support material to improve strength English:GitHub Personal Access Token Translated:GitHub Personal Access Token +English:Glass +Translated:Glass + +English:Glass Bed Temperature +Translated:Glass Bed Temperature + English:Good Translated:Good @@ -1309,6 +1363,9 @@ Translated:Has Power Control English:Has SD Card Reader Translated:Has SD Card Reader +English:Has Swappable Bed +Translated:Has Swappable Bed + English:Has Z Probe Translated:Has Z Probe @@ -1564,6 +1621,12 @@ Translated:Iterations English:Jerk Velocity Translated:Jerk Velocity +English:Kapton +Translated:Kapton + +English:Kapton Bed Temperature +Translated:Kapton Bed Temperature + English:Keys Translated:Keys @@ -1759,6 +1822,9 @@ Translated:Make Selection English:Make the first layer on top of partial infill use the speed and fan for bridging. Translated:Make the first layer on top of partial infill use the speed and fan for bridging. +English:Manual Z Calibration complete. +Translated:Manual Z Calibration complete. + English:Manually Configure Connection Translated:Manually Configure Connection @@ -1813,6 +1879,9 @@ Translated:Max Velocity English:Maximum Speed Translated:Maximum Speed +English:Measure the nozzle offset +Translated:Measure the nozzle offset + English:Measure Tool Translated:Measure Tool @@ -2215,6 +2284,12 @@ Translated:Pause G-Code English:Pause Print Translated:Pause Print +English:PEI +Translated:PEI + +English:PEI Bed Temperature +Translated:PEI Bed Temperature + English:Percentage of Translated:Percentage of @@ -2311,6 +2386,12 @@ Translated:Point Size English:Polygons Translated:Polygons +English:Polypropylene +Translated:Polypropylene + +English:Polypropylene Bed Temperature +Translated:Polypropylene Bed Temperature + English:Port In Use Translated:Port In Use @@ -2386,6 +2467,9 @@ Translated:Print Leveling is an optional feature for this printer that can help English:Print Leveling measures the plane of the bed. Translated:Print Leveling measures the plane of the bed. +English:Print Leveling will run automatically at the start of each print. +Translated:Print Leveling will run automatically at the start of each print. + English:Print Leveling Wizard Translated:Print Leveling Wizard @@ -2476,6 +2560,9 @@ Translated:Pro Tools English:Probe Translated:Probe +English:Probe at bed center +Translated:Probe at bed center + English:Probe Offset Translated:Probe Offset @@ -2572,6 +2659,9 @@ Translated:Reduced Width English:Re-enter Password Translated:Re-enter Password +English:Refresh +Translated:Refresh + English:Refresh Folder Translated:Refresh Folder @@ -2599,6 +2689,9 @@ Translated:Remove Mode English:Remove Subtract Objects Translated:Remove Subtract Objects +English:Remove the paper +Translated:Remove the paper + English:Rename Translated:Rename @@ -2788,6 +2881,9 @@ Translated:s English:Sailfish Communication Translated:Sailfish Communication +English:Sample the bed center position to determine the probe distance to the bed +Translated:Sample the bed center position to determine the probe distance to the bed + English:Save Translated:Save @@ -2902,6 +2998,9 @@ Translated:Sets MatterControl to attempt to connect to a printer over the networ English:Sets MatterControl to use s3g communication method. (You must disconnect and reconnect for this to take effect) Translated:Sets MatterControl to use s3g communication method. (You must disconnect and reconnect for this to take effect) +English:Setting Name +Translated:Setting Name + English:Settings Translated:Settings @@ -3073,6 +3172,9 @@ Translated:Slice Engine English:Slice Height Translated:Slice Height +English:Slice Presets Editor +Translated:Slice Presets Editor + English:Slice Settings Translated:Slice Settings @@ -3325,6 +3427,9 @@ Translated:The color of the first material. English:The color of the second material (extruder 2). Translated:The color of the second material (extruder 2). +English:The current bed surfaces that the printer is using. This is used to set the correct bed temperature for a given material. +Translated:The current bed surfaces that the printer is using. This is used to set the correct bed temperature for a given material. + English:The date this file was originally created. Translated:The date this file was originally created. @@ -3556,6 +3661,9 @@ Translated:The semaphore timeout period has expired. English:The serial port communication speed of the printers firmware. Translated:The serial port communication speed of the printers firmware. +English:The 'Serial Port' section lists all available serial\nports on your device. Changing which USB port the printer\nis connected to may change the associated serial port.\n\nTip: If you are uncertain, unplug/plug in your printer\nand hit refresh. The new port that appears should be\nyour printer. +Translated:The 'Serial Port' section lists all available serial\nports on your device. Changing which USB port the printer\nis connected to may change the associated serial port.\n\nTip: If you are uncertain, unplug/plug in your printer\nand hit refresh. The new port that appears should be\nyour printer. + English:The serial port to use while connecting to this printer. Translated:The serial port to use while connecting to this printer. @@ -3619,6 +3727,45 @@ Translated:The target temperature the extruder will attempt to reach during the English:The temperature at which the extruder will wipe the nozzle, as specified by Custom G-Code. Translated:The temperature at which the extruder will wipe the nozzle, as specified by Custom G-Code. +English:The temperature to print when the bed is coverd in kapton tape. Set to 0 to disable. +Translated:The temperature to print when the bed is coverd in kapton tape. Set to 0 to disable. + +English:The temperature to print when the bed is coverd in kapton tape. Set to 0 to use default. +Translated:The temperature to print when the bed is coverd in kapton tape. Set to 0 to use default. + +English:The temperature to print when the bed is coverd with blue tape. Set to 0 to disable. +Translated:The temperature to print when the bed is coverd with blue tape. Set to 0 to disable. + +English:The temperature to print when the bed is coverd with blue tape. Set to 0 to use default. +Translated:The temperature to print when the bed is coverd with blue tape. Set to 0 to use default. + +English:The temperature to print when the bed is polypropylene. Set to 0 to disable. +Translated:The temperature to print when the bed is polypropylene. Set to 0 to disable. + +English:The temperature to print when the bed is polypropylene. Set to 0 to use default. +Translated:The temperature to print when the bed is polypropylene. Set to 0 to use default. + +English:The temperature to print when the bed is using BuildTak. Set to 0 to disable. +Translated:The temperature to print when the bed is using BuildTak. Set to 0 to disable. + +English:The temperature to print when the bed is using BuildTak. Set to 0 to use default. +Translated:The temperature to print when the bed is using BuildTak. Set to 0 to use default. + +English:The temperature to print when the bed is using garolite. Set to 0 to disable. +Translated:The temperature to print when the bed is using garolite. Set to 0 to disable. + +English:The temperature to print when the bed is using garolite. Set to 0 to use default. +Translated:The temperature to print when the bed is using garolite. Set to 0 to use default. + +English:The temperature to print when the bed is using glass. Set to 0 to use default. +Translated:The temperature to print when the bed is using glass. Set to 0 to use default. + +English:The temperature to print when the bed is using PEI. Set to 0 to disable. +Translated:The temperature to print when the bed is using PEI. Set to 0 to disable. + +English:The temperature to print when the bed is using PEI. Set to 0 to use default. +Translated:The temperature to print when the bed is using PEI. Set to 0 to use default. + English:The temperature to which the bed will be set for the duration of the print. Set to 0 to disable. Translated:The temperature to which the bed will be set for the duration of the print. Set to 0 to disable. @@ -3682,6 +3829,9 @@ Translated:This is the name of your printer that will be displayed in the choose English:This is used to increase the number of downloads allowed when browsing GitHub repositories Translated:This is used to increase the number of downloads allowed when browsing GitHub repositories +English:This should be checked if the printer supports multiple bed surfaces and the bed temperature for the different surfaces needs to vary. +Translated:This should be checked if the printer supports multiple bed surfaces and the bed temperature for the different surfaces needs to vary. + English:This will ensure that no filament is stuck to your nozzle. Translated:This will ensure that no filament is stuck to your nozzle. @@ -4024,6 +4174,9 @@ Translated:What to do when there is not a good place to hide the seam. English:What went wrong? Translated:What went wrong? +English:What's this? +Translated:What's this? + English:wheel Translated:wheel @@ -4054,6 +4207,9 @@ Translated:Wipe Shield Distance English:Wipe Tower Size Translated:Wipe Tower Size +English:Wizard +Translated:Wizard + English:Write Filter Translated:Write Filter diff --git a/Submodules/agg-sharp b/Submodules/agg-sharp index b307efd64..0a76ef80e 160000 --- a/Submodules/agg-sharp +++ b/Submodules/agg-sharp @@ -1 +1 @@ -Subproject commit b307efd64007c2bf6ed9d1d1b7b2605e0c80eb38 +Subproject commit 0a76ef80eeab6ec0f17ef3e23c81e635434e2f10