diff --git a/resources/images/bbl_bed_st_bottom.svg b/resources/images/bbl_bed_st_bottom.svg new file mode 100644 index 0000000000..68c0c0f594 --- /dev/null +++ b/resources/images/bbl_bed_st_bottom.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/images/bbl_bed_st_left.svg b/resources/images/bbl_bed_st_left.svg new file mode 100644 index 0000000000..4a7c10acbe --- /dev/null +++ b/resources/images/bbl_bed_st_left.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index f6c11632aa..29769752da 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -1792,6 +1792,7 @@ enum BambuBedType { bbtEngineeringPlate = 2, bbtHighTemperaturePlate = 3, bbtTexturedPEIPlate = 4, + bbtSuperTackPlate = 5, }; static BambuBedType to_bambu_bed_type(BedType type) @@ -1807,6 +1808,8 @@ static BambuBedType to_bambu_bed_type(BedType type) bambu_bed_type = bbtTexturedPEIPlate; else if (type == btPCT) bambu_bed_type = bbtCoolPlate; + else if (type == btSuperTack) + bambu_bed_type = bbtSuperTackPlate; return bambu_bed_type; } diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 30c9bc230f..4eb5c5e949 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -823,7 +823,7 @@ static std::vector s_Preset_filament_options { "filament_flow_ratio", "filament_density", "filament_cost", "filament_minimal_purge_on_wipe_tower", "nozzle_temperature", "nozzle_temperature_initial_layer", // BBS - "cool_plate_temp", "textured_cool_plate_temp", "eng_plate_temp", "hot_plate_temp", "textured_plate_temp", "cool_plate_temp_initial_layer", "textured_cool_plate_temp_initial_layer", "eng_plate_temp_initial_layer", "hot_plate_temp_initial_layer","textured_plate_temp_initial_layer", + "cool_plate_temp", "textured_cool_plate_temp", "eng_plate_temp", "hot_plate_temp", "textured_plate_temp", "cool_plate_temp_initial_layer", "textured_cool_plate_temp_initial_layer", "eng_plate_temp_initial_layer", "hot_plate_temp_initial_layer", "textured_plate_temp_initial_layer", "supertack_plate_temp_initial_layer", "supertack_plate_temp", // "bed_type", //BBS:temperature_vitrification "temperature_vitrification", "reduce_fan_stop_start_freq","dont_slow_down_outer_wall", "slow_down_for_layer_cooling", "fan_min_speed", diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index c07eaa70ac..e825498bf6 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -129,6 +129,7 @@ bool Print::invalidate_state_by_config_options(const ConfigOptionResolver & /* n "sparse_infill_acceleration", "internal_solid_infill_acceleration", // BBS + "supertack_plate_temp_initial_layer", "cool_plate_temp_initial_layer", "textured_cool_plate_temp_initial_layer", "eng_plate_temp_initial_layer", @@ -270,6 +271,8 @@ bool Print::invalidate_state_by_config_options(const ConfigOptionResolver & /* n || opt_key == "gcode_flavor" || opt_key == "single_extruder_multi_material" || opt_key == "nozzle_temperature" + // BBS + || opt_key == "supertack_plate_temp" || opt_key == "cool_plate_temp" || opt_key == "textured_cool_plate_temp" || opt_key == "eng_plate_temp" diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 9456c6049f..86914c6dbc 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -350,6 +350,7 @@ CONFIG_OPTION_ENUM_DEFINE_STATIC_MAPS(OverhangFanThreshold) // BBS static const t_config_enum_values s_keys_map_BedType = { { "Default Plate", btDefault }, + { "Supertack Plate", btSuperTack }, { "Cool Plate", btPC }, { "Engineering Plate", btEP }, { "High Temp Plate", btPEI }, @@ -657,6 +658,16 @@ void PrintConfigDef::init_fff_params() def->set_default_value(new ConfigOptionFloatOrPercent(0., false)); // BBS + def = this->add("supertack_plate_temp", coInts); + def->label = L("Other layers"); + def->tooltip = L("Bed temperature for layers except the initial one. " + "Value 0 means the filament does not support to print on the Cool Plate"); + def->sidetext = "°C"; + def->full_label = L("Bed temperature"); + def->min = 0; + 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. " @@ -707,6 +718,16 @@ void PrintConfigDef::init_fff_params() def->max = 300; def->set_default_value(new ConfigOptionInts{45}); + def = this->add("supertack_plate_temp_initial_layer", coInts); + def->label = L("Initial layer"); + def->full_label = L("Initial layer bed temperature"); + def->tooltip = L("Bed temperature of the initial layer. " + "Value 0 means the filament does not support to print on the Bambu Cool Plate SuperTack"); + def->sidetext = "°C"; + def->min = 0; + def->max = 120; + def->set_default_value(new ConfigOptionInts{ 35 }); + def = this->add("cool_plate_temp_initial_layer", coInts); def->label = L("Initial layer"); def->full_label = L("Initial layer bed temperature"); @@ -762,12 +783,14 @@ void PrintConfigDef::init_fff_params() def->mode = comSimple; def->enum_keys_map = &s_keys_map_BedType; // Orca: make sure the order of the values is the same as the BedType enum + def->enum_values.emplace_back("Supertack Plate"); def->enum_values.emplace_back("Cool Plate"); def->enum_values.emplace_back("Engineering Plate"); def->enum_values.emplace_back("High Temp Plate"); def->enum_values.emplace_back("Textured PEI Plate"); def->enum_values.emplace_back("Textured Cool Plate"); - def->enum_labels.emplace_back(L("Smooth Cool Plate")); + def->enum_labels.emplace_back(L("Bambu Cool Plate SuperTack")); + def->enum_labels.emplace_back(L("Smooth Cool Plate / PLA Plate")); def->enum_labels.emplace_back(L("Engineering Plate")); def->enum_labels.emplace_back(L("Smooth High Temp Plate")); def->enum_labels.emplace_back(L("Textured PEI Plate")); diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index 18f007a40a..ee522dab0d 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -254,6 +254,7 @@ enum OverhangFanThreshold { // BBS enum BedType { btDefault = 0, + btSuperTack, btPC, btEP, btPEI, @@ -322,6 +323,9 @@ static std::string bed_type_to_gcode_string(const BedType type) std::string type_str; switch (type) { + case btSuperTack: + type_str = "supertack_plate"; + break; case btPC: type_str = "cool_plate"; break; @@ -347,6 +351,9 @@ static std::string bed_type_to_gcode_string(const BedType type) static std::string get_bed_temp_key(const BedType type) { + if (type == btSuperTack) + return "supertack_plate_temp"; + if (type == btPC) return "cool_plate_temp"; @@ -367,6 +374,9 @@ static std::string get_bed_temp_key(const BedType type) static std::string get_bed_temp_1st_layer_key(const BedType type) { + if (type == btSuperTack) + return "supertack_plate_temp_initial_layer"; + if (type == btPC) return "cool_plate_temp_initial_layer"; @@ -1183,9 +1193,11 @@ PRINT_CONFIG_CLASS_DERIVED_DEFINE( ((ConfigOptionEnum, curr_bed_type)) ((ConfigOptionInts, cool_plate_temp)) ((ConfigOptionInts, textured_cool_plate_temp)) + ((ConfigOptionInts, supertack_plate_temp)) ((ConfigOptionInts, eng_plate_temp)) ((ConfigOptionInts, hot_plate_temp)) // hot is short for high temperature ((ConfigOptionInts, textured_plate_temp)) + ((ConfigOptionInts, supertack_plate_temp_initial_layer)) ((ConfigOptionInts, cool_plate_temp_initial_layer)) ((ConfigOptionInts, textured_cool_plate_temp_initial_layer)) ((ConfigOptionInts, eng_plate_temp_initial_layer)) diff --git a/src/slic3r/GUI/PartPlate.cpp b/src/slic3r/GUI/PartPlate.cpp index db8b4856a5..1f052706c9 100644 --- a/src/slic3r/GUI/PartPlate.cpp +++ b/src/slic3r/GUI/PartPlate.cpp @@ -5499,7 +5499,9 @@ void PartPlateList::BedTextureInfo::reset() void PartPlateList::init_bed_type_info() { BedTextureInfo::TexturePart pct_part_left(10, 130, 10, 110, "orca_bed_pct_left.svg"); - BedTextureInfo::TexturePart pc_part1(10, 130, 10, 110, "bbl_bed_pc_left.svg"); + BedTextureInfo::TexturePart st_part1(9, 70, 12.5, 170, "bbl_bed_st_left.svg"); + BedTextureInfo::TexturePart st_part2(74, -10, 148, 12, "bbl_bed_st_bottom.svg"); + BedTextureInfo::TexturePart pc_part1(10, 130, 10, 110, "bbl_bed_pc_left.svg"); BedTextureInfo::TexturePart pc_part2(74, -10, 148, 12, "bbl_bed_pc_bottom.svg"); BedTextureInfo::TexturePart ep_part1(7.5, 90, 12.5, 150, "bbl_bed_ep_left.svg"); BedTextureInfo::TexturePart ep_part2(74, -10, 148, 12, "bbl_bed_ep_bottom.svg"); @@ -5511,6 +5513,8 @@ void PartPlateList::init_bed_type_info() bed_texture_info[i].reset(); bed_texture_info[i].parts.clear(); } + bed_texture_info[btSuperTack].parts.push_back(st_part1); + bed_texture_info[btSuperTack].parts.push_back(st_part2); bed_texture_info[btPC].parts.push_back(pc_part1); bed_texture_info[btPC].parts.push_back(pc_part2); bed_texture_info[btPCT].parts.push_back(pct_part_left); diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 05b741bcb5..79cde9e6ce 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -3335,7 +3335,12 @@ void TabFilament::build() optgroup->append_line(line); optgroup = page->new_optgroup(L("Bed temperature"), L"param_bed_temp"); - line = { L("Cool plate"), L("Bed temperature when cool plate is installed. Value 0 means the filament does not support to print on the Cool Plate") }; + line = {L("Bambu Cool Plate SuperTack"), L("Bed temperature when cool plate is installed. Value 0 means the filament does not support to print on the Bambu Cool Plate SuperTack")}; + line.append_option(optgroup->get_option("supertack_plate_temp_initial_layer")); + line.append_option(optgroup->get_option("supertack_plate_temp")); + optgroup->append_line(line); + + line = { L("Cool Plate / PLA Plate"), L("Bed temperature when cool plate is installed. Value 0 means the filament does not support to print on the Cool Plate") }; line.append_option(optgroup->get_option("cool_plate_temp_initial_layer")); line.append_option(optgroup->get_option("cool_plate_temp")); optgroup->append_line(line); @@ -3625,6 +3630,12 @@ void TabFilament::toggle_options() bool is_pellet_printer = cfg.opt_bool("pellet_modded_printer"); toggle_line("pellet_flow_coefficient", is_pellet_printer); toggle_line("filament_diameter", !is_pellet_printer); + + bool support_chamber_temp_control = this->m_preset_bundle->printers.get_edited_preset().config.opt_bool("support_chamber_temp_control"); + toggle_line("chamber_temperatures", support_chamber_temp_control); + + for (auto el : {"supertack_plate_temp", "supertack_plate_temp_initial_layer", "cool_plate_temp", "cool_plate_temp_initial_layer", "eng_plate_temp", "eng_plate_temp_initial_layer", "textured_plate_temp", "textured_plate_temp_initial_layer"}) + toggle_line(el, is_BBL_printer); } if (m_active_page->title() == L("Setting Overrides")) update_filament_overrides_page(&cfg);