ENH: add connected to printer preset list

and add group name
jira:none

Change-Id: Iecc4ec38ff071105f856c2034ceac0d5bde3b7b0
(cherry picked from commit c44cc2db1a4b27955e0099b06f2508faf824b538)
This commit is contained in:
zhimin.zeng
2024-11-29 14:39:10 +08:00
committed by Noisyfox
parent a766604101
commit 4e083f2cc2
4 changed files with 155 additions and 48 deletions

View File

@@ -2228,6 +2228,8 @@ void Sidebar::load_ams_list(std::string const &device, MachineObject* obj)
for (auto c : p->combos_filament)
c->update();
p->combo_printer->update();
}
void Sidebar::sync_ams_list()
@@ -4929,33 +4931,7 @@ std::vector<size_t> Plater::priv::load_files(const std::vector<fs::path>& input_
machine_type = "C12";
if (printer_preset.get_current_printer_type(preset_bundle) != machine_type || !is_approx((float) preset_nozzle_diameter, machine_nozzle_diameter)) {
auto get_printer_preset = [](MachineObject *obj, float nozzle_value) -> Preset * {
if (!obj)
return nullptr;
Preset *printer_preset = nullptr;
PresetBundle *preset_bundle = wxGetApp().preset_bundle;
for (auto printer_it = preset_bundle->printers.begin(); printer_it != preset_bundle->printers.end(); printer_it++) {
// only use system printer preset
if (!printer_it->is_system) continue;
ConfigOption *printer_nozzle_opt = printer_it->config.option("nozzle_diameter");
ConfigOptionFloatsNullable *printer_nozzle_vals = nullptr;
if (printer_nozzle_opt) printer_nozzle_vals = dynamic_cast<ConfigOptionFloatsNullable *>(printer_nozzle_opt);
std::string model_id = printer_it->get_current_printer_type(preset_bundle);
std::string printer_type = obj->printer_type;
if (obj->is_support_upgrade_kit && obj->installed_upgrade_kit)
printer_type = "C12";
if (model_id.compare(printer_type) == 0 && printer_nozzle_vals && abs(printer_nozzle_vals->get_at(0) - nozzle_value) < 1e-3) {
printer_preset = &(*printer_it);
}
};
return printer_preset;
};
Preset *machine_preset = get_printer_preset(obj, machine_nozzle_diameter);
Preset *machine_preset = get_printer_preset(obj);
if (machine_preset != nullptr) {
bool sync_printer_info = false;
if (!wxGetApp().app_config->has("sync_after_load_file_show_flag")) {
@@ -7201,8 +7177,12 @@ void Plater::priv::on_select_preset(wxCommandEvent &evt)
//! instead of
//! combo->GetStringSelection().ToUTF8().data());
wxString wx_name = combo->GetString(selection);
if (preset_type == Preset::TYPE_PRINTER) {
wx_name = combo->get_preset_item_name(selection); }
std::string preset_name = wxGetApp().preset_bundle->get_preset_name_by_alias(preset_type,
Preset::remove_suffix_modified(combo->GetString(selection).ToUTF8().data()));
Preset::remove_suffix_modified(wx_name.ToUTF8().data()));
if (preset_type == Preset::TYPE_FILAMENT) {
wxGetApp().preset_bundle->set_filament_preset(idx, preset_name);
@@ -12486,6 +12466,33 @@ void Plater::export_core_3mf()
export_3mf(path_u8, SaveStrategy::Silence);
}
Preset *get_printer_preset(MachineObject *obj)
{
if (!obj)
return nullptr;
Preset *printer_preset = nullptr;
float machine_nozzle_diameter = obj->m_extder_data.extders[0].current_nozzle_diameter;
PresetBundle *preset_bundle = wxGetApp().preset_bundle;
for (auto printer_it = preset_bundle->printers.begin(); printer_it != preset_bundle->printers.end(); printer_it++) {
// only use system printer preset
if (!printer_it->is_system)
continue;
ConfigOption *printer_nozzle_opt = printer_it->config.option("nozzle_diameter");
ConfigOptionFloatsNullable *printer_nozzle_vals = nullptr;
if (printer_nozzle_opt) printer_nozzle_vals = dynamic_cast<ConfigOptionFloatsNullable *>(printer_nozzle_opt);
std::string model_id = printer_it->get_current_printer_type(preset_bundle);
std::string printer_type = obj->printer_type;
if (obj->is_support_upgrade_kit && obj->installed_upgrade_kit) printer_type = "C12";
if (model_id.compare(printer_type) == 0 && printer_nozzle_vals && abs(printer_nozzle_vals->get_at(0) - machine_nozzle_diameter) < 1e-3) {
printer_preset = &(*printer_it);
}
}
return printer_preset;
}
// Following lambda generates a combined mesh for export with normals pointing outwards.
TriangleMesh Plater::combine_mesh_fff(const ModelObject& mo, int instance_id, std::function<void(const std::string&)> notify_func)
{