mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-10-03 13:51:37 +00:00
Disambiguate nozzles by the variant too
This commit is contained in:
@@ -1572,8 +1572,10 @@ bool Sidebar::priv::switch_diameter(bool single)
|
||||
auto* nozzle_diameter = dynamic_cast<const ConfigOptionFloats*>(printer_preset.config.option("nozzle_diameter"));
|
||||
if (nozzle_diameter && nozzle_diameter->size() > 0) {
|
||||
auto current_nozzle_dia = get_diameter_string(nozzle_diameter->values[0]);
|
||||
// If the selected diameter is the same as current nozzle, don't switch profiles
|
||||
if (current_nozzle_dia == diameter.ToStdString()) {
|
||||
// A named variant can share this diameter; selecting the plain diameter
|
||||
// must still switch back to the standard profile.
|
||||
if (current_nozzle_dia == diameter.ToStdString() &&
|
||||
printer_preset.config.opt_string("printer_variant") == diameter.ToStdString()) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -3677,11 +3679,16 @@ void Sidebar::update_presets(Preset::Type preset_type)
|
||||
extruder.combo_flow->SetSelection(select);
|
||||
};
|
||||
|
||||
auto update_extruder_diameter = [&diameters, &nozzle_diameter](int extruder_index,ExtruderGroup & extruder) {
|
||||
auto update_extruder_diameter = [&diameters, &nozzle_diameter, &diameter](int extruder_index,ExtruderGroup & extruder) {
|
||||
extruder.combo_diameter->Clear();
|
||||
int select = -1;
|
||||
// ORCA get the actual nozzle diameter from printer config
|
||||
auto nozzle_dia = get_diameter_string(nozzle_diameter->values[extruder_index]);
|
||||
// Named variants such as "0.4 High Flow" share a physical diameter.
|
||||
// Retain the variant selection unless the diameter was customized.
|
||||
const auto selected_variant =
|
||||
(diameter == nozzle_dia || boost::algorithm::starts_with(diameter, nozzle_dia + " ")) &&
|
||||
std::find(diameters.begin(), diameters.end(), diameter) != diameters.end() ? diameter : nozzle_dia;
|
||||
// ORCA try to add nozzle diameter from config if list is empty. fixes blank nozzle combo box when preset has no alias
|
||||
if(diameters[0].empty() && !nozzle_dia.empty()){
|
||||
diameters[0] = nozzle_dia;
|
||||
@@ -3691,7 +3698,7 @@ void Sidebar::update_presets(Preset::Type preset_type)
|
||||
diameters.push_back(nozzle_dia);
|
||||
}
|
||||
for (size_t i = 0; i < diameters.size(); ++i) {
|
||||
if (diameters[i] == nozzle_dia)
|
||||
if (diameters[i] == selected_variant)
|
||||
select = extruder.combo_diameter->GetCount();
|
||||
extruder.combo_diameter->Append(diameters[i], {});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user