diff --git a/src/slic3r/GUI/PresetComboBoxes.cpp b/src/slic3r/GUI/PresetComboBoxes.cpp index 343d9cab51..e2f356082f 100644 --- a/src/slic3r/GUI/PresetComboBoxes.cpp +++ b/src/slic3r/GUI/PresetComboBoxes.cpp @@ -889,11 +889,18 @@ static std::string get_connect_state_suffix_for_printer(const Preset& printer_pr // process real data from Connect if (auto printer_state_map = wxGetApp().plater()->get_user_account()->get_printer_state_map(); !printer_state_map.empty()) { - + // printer_state_map has only one nozzle value. Take a first value from "nozzle_diameter" opt. + std::string nozzle_diameter_serialized; + if (printer_preset.config.has("nozzle_diameter")) { + nozzle_diameter_serialized = dynamic_cast(printer_preset.config.option("nozzle_diameter"))->serialize(); + if (size_t comma = nozzle_diameter_serialized.find(','); comma != std::string::npos) + nozzle_diameter_serialized = nozzle_diameter_serialized.substr(0, comma); + } + for (const auto& [printer_model_nozzle_pair, states] : printer_state_map) { if (printer_model_nozzle_pair.first == printer_preset.config.opt_string("printer_model") && (printer_model_nozzle_pair.second.empty() - || printer_model_nozzle_pair.second == printer_preset.config.opt_string("nozzle_diamenter")) + || printer_model_nozzle_pair.second == nozzle_diameter_serialized) ) { PrinterStatesCount states_cnt = get_printe_states_count(states); @@ -913,11 +920,18 @@ static wxString get_connect_info_line(const Preset& printer_preset) { if (auto printer_state_map = wxGetApp().plater()->get_user_account()->get_printer_state_map(); !printer_state_map.empty()) { + // printer_state_map has only one nozzle value. Take a first value from "nozzle_diameter" opt. + std::string nozzle_diameter_serialized; + if (printer_preset.config.has("nozzle_diameter")) { + nozzle_diameter_serialized = dynamic_cast(printer_preset.config.option("nozzle_diameter"))->serialize(); + if (size_t comma = nozzle_diameter_serialized.find(','); comma != std::string::npos) + nozzle_diameter_serialized = nozzle_diameter_serialized.substr(0, comma); + } for (const auto& [printer_model_nozzle_pair, states] : printer_state_map) { if (printer_model_nozzle_pair.first == printer_preset.config.opt_string("printer_model") && (printer_model_nozzle_pair.second.empty() - || printer_model_nozzle_pair.second == printer_preset.config.opt_string("nozzle_diamenter")) + || printer_model_nozzle_pair.second == nozzle_diameter_serialized) ) { PrinterStatesCount states_cnt = get_printe_states_count(states); diff --git a/src/slic3r/GUI/UserAccount.cpp b/src/slic3r/GUI/UserAccount.cpp index bf29e851d2..992fc39b00 100644 --- a/src/slic3r/GUI/UserAccount.cpp +++ b/src/slic3r/GUI/UserAccount.cpp @@ -295,7 +295,7 @@ bool UserAccount::on_connect_uiid_map_success(const std::string& data, AppConfig continue; } const auto nozzle_diameter_opt = printer_tree.second.get_optional("nozzle_diameter"); - const std::string nozzle_diameter = nozzle_diameter_opt ? *nozzle_diameter_opt : std::string(); + const std::string nozzle_diameter = (nozzle_diameter_opt && *nozzle_diameter_opt != "0.0") ? *nozzle_diameter_opt : std::string(); std::pair model_nozzle_pair = { *printer_model, nozzle_diameter }; m_printer_uuid_map[*printer_uuid] = model_nozzle_pair; }