EMH: add nozzle diameter synchronization

jira: STUDIO-9140
Change-Id: I62e4035e473c8bfa2ccf7719bc6c1072c0a30b61
This commit is contained in:
zhimin.zeng 2025-01-06 20:30:54 +08:00 committed by lane.wei
parent 0121cf2d69
commit 3c303e6e2c
1 changed files with 19 additions and 0 deletions

View File

@ -193,6 +193,18 @@ wxDEFINE_EVENT(EVT_ADD_FILAMENT, SimpleEvent);
wxDEFINE_EVENT(EVT_DEL_FILAMENT, SimpleEvent); wxDEFINE_EVENT(EVT_DEL_FILAMENT, SimpleEvent);
wxDEFINE_EVENT(EVT_ADD_CUSTOM_FILAMENT, ColorEvent); wxDEFINE_EVENT(EVT_ADD_CUSTOM_FILAMENT, ColorEvent);
static int get_diameter_index(float diameter)
{
float eps = 1e-3;
std::vector<float> diameters = {0.2, 0.4, 0.6, 0.8};
for (int index = 0; index < diameters.size(); ++index) {
if (abs(diameters[index] - diameter) < eps) {
return index;
}
}
return 0;
}
bool Plater::has_illegal_filename_characters(const wxString& wxs_name) bool Plater::has_illegal_filename_characters(const wxString& wxs_name)
{ {
std::string name = into_u8(wxs_name); std::string name = into_u8(wxs_name);
@ -1146,8 +1158,11 @@ bool Sidebar::priv::sync_extruder_list()
} }
assert(obj->m_extder_data.extders.size() == extruder_nums); assert(obj->m_extder_data.extders.size() == extruder_nums);
std::vector<float> nozzle_diameters;
nozzle_diameters.resize(extruder_nums);
for (size_t index = 0; index < extruder_nums; ++index) { for (size_t index = 0; index < extruder_nums; ++index) {
int extruder_id = extruder_map[index]; int extruder_id = extruder_map[index];
nozzle_diameters[extruder_id] = obj->m_extder_data.extders[index].current_nozzle_diameter;
if (obj->m_extder_data.extders[index].current_nozzle_flow_type == NozzleFlowType::NONE_FLOWTYPE) { if (obj->m_extder_data.extders[index].current_nozzle_flow_type == NozzleFlowType::NONE_FLOWTYPE) {
MessageDialog dlg(this->plater, _L("There are unset nozzle types. Please set the nozzle types of all extruders before synchronizing."), MessageDialog dlg(this->plater, _L("There are unset nozzle types. Please set the nozzle types of all extruders before synchronizing."),
_L("Sync extruder infomation"), wxICON_WARNING | wxOK); _L("Sync extruder infomation"), wxICON_WARNING | wxOK);
@ -1175,6 +1190,10 @@ bool Sidebar::priv::sync_extruder_list()
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;
left_extruder->combo_diameter->SetSelection(get_diameter_index(nozzle_diameters[0]));
right_extruder->combo_diameter->SetSelection(get_diameter_index(nozzle_diameters[1]));
switch_diameter(false);
AMSCountPopupWindow::SetAMSCount(deputy_index, deputy_4, deputy_1); AMSCountPopupWindow::SetAMSCount(deputy_index, deputy_4, deputy_1);
AMSCountPopupWindow::SetAMSCount(main_index, main_4, main_1); AMSCountPopupWindow::SetAMSCount(main_index, main_4, main_1);
AMSCountPopupWindow::UpdateAMSCount(0, left_extruder); AMSCountPopupWindow::UpdateAMSCount(0, left_extruder);