diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 2d1940e448..fae3bd51ea 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -4422,6 +4422,8 @@ LayerResult GCode::process_layer( bed_temp = get_highest_bed_temperature(false,print); else bed_temp = get_bed_temperature(first_extruder_id, false, m_config.curr_bed_type); + // ORCA: Only set bed temperature if it's greater than or equal to 0 (-1 means the feature is disabled) + if (bed_temp >= 0) gcode += m_writer.set_bed_temperature(bed_temp); // Mark the temperature transition from 1st to 2nd layer to be finished. m_second_layer_things_done = true; diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 4b91328b59..a36f2ec765 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -861,60 +861,66 @@ void PrintConfigDef::init_fff_params() def = this->add("supertack_plate_temp", coInts); def->label = L("Other layers"); def->tooltip = L("Bed temperature for layers except the initial one. " - "A value of 0 means the filament does not support printing on the Cool Plate SuperTack."); + "A value of 0 means the filament does not support printing on the Cool Plate SuperTack. " + "A value of -1 will skip setting the temperature for subsequent layers."); def->sidetext = L(u8"\u2103" /* °C */); // degrees Celsius, CIS languages need translation def->full_label = L("Bed temperature"); - def->min = 0; + def->min = -1; def->max = 120; def->set_default_value(new ConfigOptionInts{35}); def = this->add("cool_plate_temp", coInts); def->label = L("Other layers"); def->tooltip = L("Bed temperature for layers except the initial one. " - "A value of 0 means the filament does not support printing on the Cool Plate."); + "A value of 0 means the filament does not support printing on the Cool Plate. " + "A value of -1 will skip setting the temperature for subsequent layers."); def->sidetext = L(u8"\u2103" /* °C */); // degrees Celsius, CIS languages need translation def->full_label = L("Bed temperature"); - def->min = 0; + def->min = -1; def->max = 300; def->set_default_value(new ConfigOptionInts{ 35 }); def = this->add("textured_cool_plate_temp", coInts); def->label = L("Other layers"); def->tooltip = L("Bed temperature for layers except the initial one. " - "A value of 0 means the filament does not support printing on the Textured Cool Plate."); + "A value of 0 means the filament does not support printing on the Textured Cool Plate. " + "A value of -1 will skip setting the temperature for subsequent layers."); def->sidetext = L(u8"\u2103" /* °C */); // degrees Celsius, CIS languages need translation def->full_label = L("Bed temperature"); - def->min = 0; + def->min = -1; def->max = 300; def->set_default_value(new ConfigOptionInts{ 40 }); def = this->add("eng_plate_temp", coInts); def->label = L("Other layers"); def->tooltip = L("Bed temperature for layers except the initial one. " - "A value of 0 means the filament does not support printing on the Engineering Plate."); + "A value of 0 means the filament does not support printing on the Engineering Plate. " + "A value of -1 will skip setting the temperature for subsequent layers."); def->sidetext = L(u8"\u2103" /* °C */); // degrees Celsius, CIS languages need translation def->full_label = L("Bed temperature"); - def->min = 0; + def->min = -1; def->max = 300; def->set_default_value(new ConfigOptionInts{ 45 }); def = this->add("hot_plate_temp", coInts); def->label = L("Other layers"); def->tooltip = L("Bed temperature for layers except the initial one. " - "A value of 0 means the filament does not support printing on the High Temp Plate."); + "A value of 0 means the filament does not support printing on the High Temp Plate. " + "A value of -1 will skip setting the temperature for subsequent layers."); def->sidetext = L(u8"\u2103" /* °C */); // degrees Celsius, CIS languages need translation def->full_label = L("Bed temperature"); - def->min = 0; + def->min = -1; def->max = 300; def->set_default_value(new ConfigOptionInts{ 45 }); def = this->add("textured_plate_temp", coInts); def->label = L("Other layers"); def->tooltip = L("Bed temperature for layers except the initial one. " - "A value of 0 means the filament does not support printing on the Textured PEI Plate."); + "A value of 0 means the filament does not support printing on the Textured PEI Plate. " + "A value of -1 will skip setting the temperature for subsequent layers."); def->sidetext = L(u8"\u2103" /* °C */); // degrees Celsius, CIS languages need translation def->full_label = L("Bed temperature"); - def->min = 0; + def->min = -1; def->max = 300; def->set_default_value(new ConfigOptionInts{45}); diff --git a/src/slic3r/GUI/Widgets/SpinInput.cpp b/src/slic3r/GUI/Widgets/SpinInput.cpp index ccd7a80447..32515692c0 100644 --- a/src/slic3r/GUI/Widgets/SpinInput.cpp +++ b/src/slic3r/GUI/Widgets/SpinInput.cpp @@ -135,6 +135,15 @@ void SpinInput::SetRange(int min, int max) { this->min = min; this->max = max; + if (text_ctrl) { + if (min < 0) { + wxTextValidator validator(wxFILTER_INCLUDE_CHAR_LIST); + validator.SetCharIncludes("0123456789-"); + text_ctrl->SetValidator(validator); + } else { + text_ctrl->SetValidator(wxTextValidator(wxFILTER_DIGITS)); + } + } } void SpinInput::DoSetToolTipText(wxString const &tip)