default_material

This commit is contained in:
sunsets
2023-09-26 13:38:41 +08:00
parent 40e1a5534e
commit 07b20e3c40
2 changed files with 29 additions and 10 deletions

View File

@@ -1215,15 +1215,27 @@ Preset* PresetCollection::find_preset(const std::string &name, bool first_visibl
} }
// Return index of the first visible preset. Certainly at least the '- default -' preset shall be visible. // Return index of the first visible preset. Certainly at least the '- default -' preset shall be visible.
//B40
size_t PresetCollection::first_visible_idx() const size_t PresetCollection::first_visible_idx() const
{ {
size_t idx = m_default_suppressed ? m_num_default_presets : 0; size_t first_visible = -1;
for (; idx < m_presets.size(); ++ idx) size_t idx = m_default_suppressed ? m_num_default_presets : 0;
if (m_presets[idx].is_visible) for (; idx < m_presets.size(); ++idx)
break; if (m_presets[idx].is_visible) {
if (idx == m_presets.size()) if (first_visible == -1)
idx = 0; first_visible = idx;
return idx; if (m_type != Preset::TYPE_FILAMENT)
break;
else {
if (m_presets[idx].name.find("PLA") != std::string::npos) {
first_visible = idx;
break;
}
}
}
if (first_visible == -1)
first_visible = 0;
return first_visible;
} }
void PresetCollection::set_default_suppressed(bool default_suppressed) void PresetCollection::set_default_suppressed(bool default_suppressed)

View File

@@ -48,7 +48,7 @@ PresetBundle::PresetBundle() :
// The following keys are handled by the UI, they do not have a counterpart in any StaticPrintConfig derived classes, // The following keys are handled by the UI, they do not have a counterpart in any StaticPrintConfig derived classes,
// therefore they need to be handled differently. As they have no counterpart in StaticPrintConfig, they are not being // therefore they need to be handled differently. As they have no counterpart in StaticPrintConfig, they are not being
// initialized based on PrintConfigDef(), but to empty values (zeros, empty vectors, empty strings). // initialized based on PrintConfigDef(), but to empty values (zeros, empty vectors, empty strings).
//
// "compatible_printers", "compatible_printers_condition", "inherits", // "compatible_printers", "compatible_printers_condition", "inherits",
// "print_settings_id", "filament_settings_id", "printer_settings_id", "printer_settings_id" // "print_settings_id", "filament_settings_id", "printer_settings_id", "printer_settings_id"
// "printer_vendor", "printer_model", "printer_variant", "default_print_profile", "default_filament_profile" // "printer_vendor", "printer_model", "printer_variant", "default_print_profile", "default_filament_profile"
@@ -1679,8 +1679,15 @@ void PresetBundle::update_multi_material_filament_presets()
auto *nozzle_diameter = static_cast<const ConfigOptionFloats*>(printers.get_edited_preset().config.option("nozzle_diameter")); auto *nozzle_diameter = static_cast<const ConfigOptionFloats*>(printers.get_edited_preset().config.option("nozzle_diameter"));
size_t num_extruders = nozzle_diameter->values.size(); size_t num_extruders = nozzle_diameter->values.size();
// Verify validity of the current filament presets. // Verify validity of the current filament presets.
for (size_t i = 0; i < std::min(this->extruders_filaments.size(), num_extruders); ++i) //B40
this->extruders_filaments[i].select_filament(this->filaments.find_preset(this->extruders_filaments[i].get_selected_preset_name(), true)->name); for (size_t i = 0; i < std::min(this->extruders_filaments.size(), num_extruders); ++i) {
this->extruders_filaments[i].select_filament(this->filaments
.find_preset(this->filaments.get_selected_idx() == size_t(-1) ?
this->filaments.first_visible().name :
this->extruders_filaments[i].get_selected_preset_name(),
true)
->name);
}
if (this->extruders_filaments.size() > num_extruders) if (this->extruders_filaments.size() > num_extruders)
this->extruders_filaments.resize(num_extruders); this->extruders_filaments.resize(num_extruders);