mirror of
https://git.mirrors.martin98.com/https://github.com/bambulab/BambuStudio.git
synced 2025-09-28 18:33:19 +08:00
ENH: add sync button for single extruder printer
jira: STUDIO-11628 Change-Id: If77b6e3094d27666bfc7adfb8e4a0fd989703db7
This commit is contained in:
parent
8ecc6aa224
commit
69dd357196
@ -515,7 +515,7 @@ void Sidebar::priv::layout_printer(bool isBBL, bool isDual)
|
|||||||
hsizer_printer_btn->Add(btn_edit_printer, 0);
|
hsizer_printer_btn->Add(btn_edit_printer, 0);
|
||||||
hsizer_printer_btn->Add(btn_connect_printer, 0, wxALIGN_CENTER | wxLEFT, FromDIP(4));
|
hsizer_printer_btn->Add(btn_connect_printer, 0, wxALIGN_CENTER | wxLEFT, FromDIP(4));
|
||||||
combo_printer->SetWindowStyle(combo_printer->GetWindowStyle() & ~wxALIGN_MASK | (isDual ? wxALIGN_CENTER_HORIZONTAL : wxALIGN_RIGHT));
|
combo_printer->SetWindowStyle(combo_printer->GetWindowStyle() & ~wxALIGN_MASK | (isDual ? wxALIGN_CENTER_HORIZONTAL : wxALIGN_RIGHT));
|
||||||
if (isDual) {
|
if (isBBL) {
|
||||||
wxBoxSizer *vsizer = new wxBoxSizer(wxVERTICAL);
|
wxBoxSizer *vsizer = new wxBoxSizer(wxVERTICAL);
|
||||||
wxBoxSizer *hsizer = new wxBoxSizer(wxHORIZONTAL);
|
wxBoxSizer *hsizer = new wxBoxSizer(wxHORIZONTAL);
|
||||||
hsizer->AddStretchSpacer(1);
|
hsizer->AddStretchSpacer(1);
|
||||||
@ -562,7 +562,7 @@ void Sidebar::priv::layout_printer(bool isBBL, bool isDual)
|
|||||||
}
|
}
|
||||||
|
|
||||||
btn_connect_printer->Show(!isBBL);
|
btn_connect_printer->Show(!isBBL);
|
||||||
btn_sync_printer->Show(isDual);
|
btn_sync_printer->Show(isBBL);
|
||||||
panel_printer_bed->Show(isBBL);
|
panel_printer_bed->Show(isBBL);
|
||||||
vsizer_printer->GetItem(2)->GetSizer()->GetItem(1)->Show(isDual);
|
vsizer_printer->GetItem(2)->GetSizer()->GetItem(1)->Show(isDual);
|
||||||
vsizer_printer->GetItem(2)->Show(isBBL && isDual);
|
vsizer_printer->GetItem(2)->Show(isBBL && isDual);
|
||||||
@ -1157,10 +1157,10 @@ bool Sidebar::priv::sync_extruder_list(bool &only_external_material)
|
|||||||
plater->pop_warning_and_go_to_device_page(printer_name, Plater::PrinterWarningType::NOT_CONNECTED, _L("Sync printer information"));
|
plater->pop_warning_and_go_to_device_page(printer_name, Plater::PrinterWarningType::NOT_CONNECTED, _L("Sync printer information"));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (obj->m_extder_data.extders.size() != 2) {//wxString(obj->get_preset_printer_model_name(machine_print_name))
|
//if (obj->m_extder_data.extders.size() != 2) {//wxString(obj->get_preset_printer_model_name(machine_print_name))
|
||||||
plater->pop_warning_and_go_to_device_page(printer_name, Plater::PrinterWarningType::INCONSISTENT, _L("Sync printer information"));
|
// plater->pop_warning_and_go_to_device_page(printer_name, Plater::PrinterWarningType::INCONSISTENT, _L("Sync printer information"));
|
||||||
return false;
|
// return false;
|
||||||
}
|
//}
|
||||||
|
|
||||||
if (!plater->check_printer_initialized(obj)) {
|
if (!plater->check_printer_initialized(obj)) {
|
||||||
BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << __LINE__ << " check_printer_initialized fail";
|
BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << __LINE__ << " check_printer_initialized fail";
|
||||||
@ -1243,18 +1243,28 @@ bool Sidebar::priv::sync_extruder_list(bool &only_external_material)
|
|||||||
int main_index = obj->is_main_extruder_on_left() ? 0 : 1;
|
int main_index = obj->is_main_extruder_on_left() ? 0 : 1;
|
||||||
int deputy_index = obj->is_main_extruder_on_left() ? 1 : 0;
|
int deputy_index = obj->is_main_extruder_on_left() ? 1 : 0;
|
||||||
|
|
||||||
int left_index = left_extruder->combo_diameter->FindString(get_diameter_string(nozzle_diameters[0]));
|
if (extruder_nums > 1) {
|
||||||
int right_index = left_extruder->combo_diameter->FindString(get_diameter_string(nozzle_diameters[1]));
|
int left_index = left_extruder->combo_diameter->FindString(get_diameter_string(nozzle_diameters[0]));
|
||||||
assert(left_index != -1 && right_index != -1);
|
int right_index = left_extruder->combo_diameter->FindString(get_diameter_string(nozzle_diameters[1]));
|
||||||
left_extruder->combo_diameter->SetSelection(left_index);
|
assert(left_index != -1 && right_index != -1);
|
||||||
right_extruder->combo_diameter->SetSelection(right_index);
|
left_extruder->combo_diameter->SetSelection(left_index);
|
||||||
is_switching_diameter = true;
|
right_extruder->combo_diameter->SetSelection(right_index);
|
||||||
switch_diameter(false);
|
is_switching_diameter = true;
|
||||||
is_switching_diameter = false;
|
switch_diameter(false);
|
||||||
AMSCountPopupWindow::SetAMSCount(deputy_index, deputy_4, deputy_1);
|
is_switching_diameter = false;
|
||||||
AMSCountPopupWindow::SetAMSCount(main_index, main_4, main_1);
|
AMSCountPopupWindow::SetAMSCount(deputy_index, deputy_4, deputy_1);
|
||||||
AMSCountPopupWindow::UpdateAMSCount(0, left_extruder);
|
AMSCountPopupWindow::SetAMSCount(main_index, main_4, main_1);
|
||||||
AMSCountPopupWindow::UpdateAMSCount(1, right_extruder);
|
AMSCountPopupWindow::UpdateAMSCount(0, left_extruder);
|
||||||
|
AMSCountPopupWindow::UpdateAMSCount(1, right_extruder);
|
||||||
|
} else {
|
||||||
|
int index = single_extruder->combo_diameter->FindString(get_diameter_string(nozzle_diameters[0]));
|
||||||
|
assert(index != -1);
|
||||||
|
single_extruder->combo_diameter->SetSelection(index);
|
||||||
|
is_switching_diameter = true;
|
||||||
|
switch_diameter(true);
|
||||||
|
is_switching_diameter = false;
|
||||||
|
}
|
||||||
|
|
||||||
BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << __LINE__ << " finish sync_extruder_list";
|
BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << __LINE__ << " finish sync_extruder_list";
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -1316,6 +1326,10 @@ void Sidebar::priv::update_sync_status(const MachineObject *obj)
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
auto is_same_nozzle_info = [](const ExtruderInfo &left, const ExtruderInfo &right) {
|
||||||
|
return abs(left.diameter - right.diameter) < EPSILON && left.nozzle_volue_type == right.nozzle_volue_type;
|
||||||
|
};
|
||||||
|
|
||||||
// 2. update extruder status
|
// 2. update extruder status
|
||||||
int extruder_nums = preset_bundle->get_printer_extruder_count();
|
int extruder_nums = preset_bundle->get_printer_extruder_count();
|
||||||
if (extruder_nums != obj->m_extder_data.extders.size())
|
if (extruder_nums != obj->m_extder_data.extders.size())
|
||||||
@ -1376,7 +1390,7 @@ void Sidebar::priv::update_sync_status(const MachineObject *obj)
|
|||||||
|
|
||||||
std::vector<bool> extruder_synced(extruder_nums, false);
|
std::vector<bool> extruder_synced(extruder_nums, false);
|
||||||
if (extruder_nums == 1) {
|
if (extruder_nums == 1) {
|
||||||
if (extruder_infos == machine_extruder_infos) {
|
if (is_same_nozzle_info(extruder_infos[0], machine_extruder_infos[0])) {
|
||||||
single_extruder->ShowBadge(true);
|
single_extruder->ShowBadge(true);
|
||||||
single_extruder->sync_ams(obj, machine_extruder_infos[0].ams_v4, machine_extruder_infos[0].ams_v1);
|
single_extruder->sync_ams(obj, machine_extruder_infos[0].ams_v4, machine_extruder_infos[0].ams_v1);
|
||||||
extruder_synced[0] = true;
|
extruder_synced[0] = true;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user