FIX: invalid pop up when changing machine profile

1. Machine with multi extruder should set length of extruder offset
to extruder num
2. Register retract_restart_extra

jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ic3eb324cb91dc70b091c8922936d2709c361cc38
(cherry picked from commit 13df1ee7bab2bf13c9f5ffca6ad1228ff48e885e)
This commit is contained in:
xun.zhang 2024-10-15 19:35:17 +08:00 committed by Noisyfox
parent e26e2ca793
commit a6dc8c27a8
4 changed files with 16 additions and 5 deletions

View file

@ -804,8 +804,13 @@ void GCodeProcessor::apply_config(const PrintConfig& config)
for (size_t idx = 0; idx < m_result.nozzle_type.size(); ++idx) {
m_result.nozzle_type[idx] = NozzleType(config.nozzle_type.values[idx]);
}
std::vector<int> filament_map = config.filament_map.values; // 1 based idxs
// if filament map has wrong length, set filament to master extruder_id
filament_map.resize(filament_count, config.master_extruder_id.value);
for (size_t i = 0; i < filament_count; ++ i) {
m_extruder_offsets[i] = to_3d(config.extruder_offset.get_at(i).cast<float>().eval(), 0.f);
m_extruder_offsets[i] = to_3d(config.extruder_offset.get_at(filament_map[i] - 1).cast<float>().eval(), 0.f);
m_extruder_colors[i] = static_cast<unsigned char>(i);
m_extruder_temps_first_layer_config[i] = static_cast<int>(config.nozzle_temperature_initial_layer.get_at(i));
m_extruder_temps_config[i] = static_cast<int>(config.nozzle_temperature.get_at(i));