mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-05-19 11:23:42 +00:00
FIX: crash when sync printer status
jira: none Change-Id: I7198f34b12c720519cc2e092254572fe6ee50778 (cherry picked from commit 6aacef93af32f0316f0758df881744fcda2a09a7)
This commit is contained in:
@@ -3386,6 +3386,14 @@ std::pair<PresetsConfigSubstitutions, size_t> PresetBundle::load_vendor_configs_
|
|||||||
return std::make_pair(std::move(substitutions), presets_loaded);
|
return std::make_pair(std::move(substitutions), presets_loaded);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PresetBundle::on_extruders_count_changed(int extruders_count)
|
||||||
|
{
|
||||||
|
printers.get_edited_preset().set_num_extruders(extruders_count);
|
||||||
|
update_multi_material_filament_presets();
|
||||||
|
reset_default_nozzle_volume_type();
|
||||||
|
extruder_ams_counts.resize(extruders_count);
|
||||||
|
}
|
||||||
|
|
||||||
void PresetBundle::update_multi_material_filament_presets(size_t to_delete_filament_id)
|
void PresetBundle::update_multi_material_filament_presets(size_t to_delete_filament_id)
|
||||||
{
|
{
|
||||||
if (printers.get_edited_preset().printer_technology() != ptFFF)
|
if (printers.get_edited_preset().printer_technology() != ptFFF)
|
||||||
|
|||||||
@@ -256,6 +256,8 @@ public:
|
|||||||
// update size and content of filament_presets.
|
// update size and content of filament_presets.
|
||||||
void update_multi_material_filament_presets(size_t to_delete_filament_id = size_t(-1));
|
void update_multi_material_filament_presets(size_t to_delete_filament_id = size_t(-1));
|
||||||
|
|
||||||
|
void on_extruders_count_changed(int extruder_count);
|
||||||
|
|
||||||
// Update the is_compatible flag of all print and filament presets depending on whether they are marked
|
// Update the is_compatible flag of all print and filament presets depending on whether they are marked
|
||||||
// as compatible with the currently selected printer (and print in case of filament presets).
|
// as compatible with the currently selected printer (and print in case of filament presets).
|
||||||
// Also updates the is_visible flag of each preset.
|
// Also updates the is_visible flag of each preset.
|
||||||
|
|||||||
@@ -1199,12 +1199,14 @@ void Sidebar::priv::update_sync_status(const MachineObject *obj)
|
|||||||
}
|
}
|
||||||
|
|
||||||
std::vector<std::map<int, int>> extruder_ams_counts = wxGetApp().preset_bundle->extruder_ams_counts;
|
std::vector<std::map<int, int>> extruder_ams_counts = wxGetApp().preset_bundle->extruder_ams_counts;
|
||||||
for (size_t i = 0; i < extruder_ams_counts.size(); ++i) {
|
if (extruder_ams_counts.size() >= extruder_nums) {
|
||||||
for (auto iter = extruder_ams_counts[i].begin(); iter != extruder_ams_counts[i].end(); ++iter){
|
for (size_t i = 0; i < extruder_nums; ++i) {
|
||||||
if (iter->first == 4)
|
for (auto iter = extruder_ams_counts[i].begin(); iter != extruder_ams_counts[i].end(); ++iter) {
|
||||||
extruder_infos[i].ams_4 = iter->second;
|
if (iter->first == 4)
|
||||||
if (iter->first == 1)
|
extruder_infos[i].ams_4 = iter->second;
|
||||||
extruder_infos[i].ams_1 = iter->second;
|
if (iter->first == 1)
|
||||||
|
extruder_infos[i].ams_1 = iter->second;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4278,9 +4278,7 @@ void TabPrinter::extruders_count_changed(size_t extruders_count)
|
|||||||
bool is_count_changed = false;
|
bool is_count_changed = false;
|
||||||
if (m_extruders_count != extruders_count) {
|
if (m_extruders_count != extruders_count) {
|
||||||
m_extruders_count = extruders_count;
|
m_extruders_count = extruders_count;
|
||||||
m_preset_bundle->printers.get_edited_preset().set_num_extruders(extruders_count);
|
m_preset_bundle->on_extruders_count_changed(extruders_count);
|
||||||
m_preset_bundle->update_multi_material_filament_presets();
|
|
||||||
m_preset_bundle->reset_default_nozzle_volume_type();
|
|
||||||
is_count_changed = true;
|
is_count_changed = true;
|
||||||
|
|
||||||
wxGetApp().plater()->get_partplate_list().on_extruder_count_changed((int)m_extruders_count);
|
wxGetApp().plater()->get_partplate_list().on_extruder_count_changed((int)m_extruders_count);
|
||||||
|
|||||||
Reference in New Issue
Block a user