ENH: config: refine the object config logic when extruder count changes

1. add logic in CLI
2. add logic to process height range
jira: no-jira

Change-Id: I8a7ba1a78dacad7131cafa3fb8b742027276c7e8
(cherry picked from commit 9a6624653b7b66101f1a74715227a0f2b4588f16)
This commit is contained in:
lane.wei
2024-11-26 15:21:48 +08:00
committed by Noisyfox
parent 1297857f66
commit ca5bd00d0e
2 changed files with 56 additions and 1 deletions

View File

@@ -5087,7 +5087,7 @@ void Tab::load_current_preset()
object->config.assign_config(std::move(object_config));
}
for (ModelVolume* v : object->volumes) {
if (v->is_model_part()) {
if (v->is_model_part() || v->is_modifier()) {
DynamicPrintConfig volume_config = v->config.get();
if (!volume_config.empty()) {
if (previous_extruder_count < new_extruder_count)
@@ -5098,6 +5098,18 @@ void Tab::load_current_preset()
}
}
}
for (auto &layer_config_it : object->layer_config_ranges) {
ModelConfig& layer_model_config = layer_config_it.second;
DynamicPrintConfig layer_config = layer_model_config.get();
if (!layer_config.empty()) {
if (previous_extruder_count < new_extruder_count)
layer_config.update_values_from_single_to_multi_2(new_print_config, print_options_with_variant);
else
layer_config.update_values_from_multi_to_single_2(print_options_with_variant);
layer_model_config.assign_config(std::move(layer_config));
}
}
}
}