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);