ENH: add sync button for cali preset page
and modify some UI part jira: none Change-Id: I9462a10adb7017a7038e5cd7e30cf393b63ae77b
This commit is contained in:
parent
6617aa81c8
commit
da68a52247
|
@ -418,6 +418,7 @@ void CalibrationWizard::cache_preset_info(MachineObject* obj, float nozzle_dia)
|
|||
get_tray_ams_and_slot_id(result.tray_id, ams_id, slot_id, tray_id);
|
||||
result.extruder_id = preset_page->get_extruder_id(ams_id);
|
||||
result.nozzle_volume_type = preset_page->get_nozzle_volume_type(result.extruder_id);
|
||||
result.nozzle_diameter = preset_page->get_nozzle_diameter(result.extruder_id);
|
||||
}
|
||||
else {
|
||||
result.extruder_id = 0;
|
||||
|
@ -697,7 +698,6 @@ void PressureAdvanceWizard::on_cali_start()
|
|||
//clean PA result
|
||||
curr_obj->reset_pa_cali_result();
|
||||
|
||||
float nozzle_dia = -1;
|
||||
std::string setting_id;
|
||||
BedType plate_type = BedType::btDefault;
|
||||
|
||||
|
@ -710,11 +710,11 @@ void PressureAdvanceWizard::on_cali_start()
|
|||
return;
|
||||
}
|
||||
|
||||
float nozzle_dia = -1;
|
||||
preset_page->get_preset_info(nozzle_dia, plate_type);
|
||||
|
||||
CalibrationWizard::cache_preset_info(curr_obj, nozzle_dia);
|
||||
|
||||
if (nozzle_dia < 0 || plate_type == BedType::btDefault) {
|
||||
if (/*nozzle_dia < 0 || */ plate_type == BedType::btDefault) {
|
||||
BOOST_LOG_TRIVIAL(error) << "CaliPreset: get preset info, nozzle and plate type error";
|
||||
return;
|
||||
}
|
||||
|
@ -738,7 +738,7 @@ void PressureAdvanceWizard::on_cali_start()
|
|||
calib_info.extruder_id = preset_page->get_extruder_id(calib_info.ams_id);
|
||||
calib_info.extruder_type = preset_page->get_extruder_type(calib_info.extruder_id);
|
||||
calib_info.nozzle_volume_type = preset_page->get_nozzle_volume_type(calib_info.extruder_id);
|
||||
calib_info.nozzle_diameter = nozzle_dia;
|
||||
calib_info.nozzle_diameter = preset_page->get_nozzle_diameter(calib_info.extruder_id);
|
||||
calib_info.filament_id = item.second->filament_id;
|
||||
calib_info.setting_id = item.second->setting_id;
|
||||
calib_info.bed_temp = bed_temp;
|
||||
|
@ -783,7 +783,7 @@ void PressureAdvanceWizard::on_cali_start()
|
|||
|
||||
calib_info.bed_type = plate_type;
|
||||
calib_info.process_bar = preset_page->get_sending_progress_bar();
|
||||
calib_info.printer_prest = preset_page->get_printer_preset(curr_obj, nozzle_dia);
|
||||
calib_info.printer_prest = preset_page->get_printer_preset(curr_obj, preset_page->get_nozzle_diameter(calib_info.extruder_id));
|
||||
calib_info.print_prest = preset_page->get_print_preset();
|
||||
calib_info.filament_prest = temp_filament_preset;
|
||||
|
||||
|
@ -1189,7 +1189,7 @@ void FlowRateWizard::on_cali_start(CaliPresetStage stage, float cali_value, Flow
|
|||
calib_info.extruder_id = preset_page->get_extruder_id(calib_info.ams_id);
|
||||
calib_info.extruder_type = preset_page->get_extruder_type(calib_info.extruder_id);
|
||||
calib_info.nozzle_volume_type = preset_page->get_nozzle_volume_type(calib_info.extruder_id);
|
||||
calib_info.nozzle_diameter = nozzle_dia;
|
||||
calib_info.nozzle_diameter = preset_page->get_nozzle_diameter(calib_info.extruder_id);
|
||||
calib_info.filament_id = item.second->filament_id;
|
||||
calib_info.setting_id = item.second->setting_id;
|
||||
calib_info.bed_temp = bed_temp;
|
||||
|
@ -1248,7 +1248,7 @@ void FlowRateWizard::on_cali_start(CaliPresetStage stage, float cali_value, Flow
|
|||
temp_filament_preset->config = preset->config;
|
||||
|
||||
calib_info.bed_type = plate_type;
|
||||
calib_info.printer_prest = preset_page->get_printer_preset(curr_obj, nozzle_dia);
|
||||
calib_info.printer_prest = preset_page->get_printer_preset(curr_obj, preset_page->get_nozzle_diameter(calib_info.extruder_id));
|
||||
calib_info.print_prest = preset_page->get_print_preset();
|
||||
calib_info.params.mode = CalibMode::Calib_Flow_Rate;
|
||||
|
||||
|
@ -1657,7 +1657,7 @@ void MaxVolumetricSpeedWizard::on_cali_start()
|
|||
|
||||
calib_info.bed_type = plate_type;
|
||||
calib_info.process_bar = preset_page->get_sending_progress_bar();
|
||||
calib_info.printer_prest = preset_page->get_printer_preset(curr_obj, nozzle_dia);
|
||||
calib_info.printer_prest = preset_page->get_printer_preset(curr_obj, preset_page->get_nozzle_diameter(calib_info.extruder_id));
|
||||
calib_info.print_prest = preset_page->get_print_preset();
|
||||
|
||||
wxString wx_err_string;
|
||||
|
|
|
@ -5,6 +5,12 @@
|
|||
#include "MsgDialog.hpp"
|
||||
#include "libslic3r/Print.hpp"
|
||||
|
||||
#define CALIBRATION_LABEL_SIZE wxSize(FromDIP(150), FromDIP(24))
|
||||
#define SYNC_BUTTON_SIZE (wxSize(FromDIP(50), FromDIP(50)))
|
||||
|
||||
#define LEFT_EXTRUDER_ID 1
|
||||
#define RIGHT_EXTRUDER_ID 0
|
||||
|
||||
namespace Slic3r { namespace GUI {
|
||||
static int PA_LINE = 0;
|
||||
static int PA_PATTERN = 1;
|
||||
|
@ -527,63 +533,155 @@ void CalibrationPresetPage::create_selection_panel(wxWindow* parent)
|
|||
{
|
||||
auto panel_sizer = new wxBoxSizer(wxVERTICAL);
|
||||
|
||||
auto nozzle_combo_text = new Label(parent, _L("Nozzle Diameter"));
|
||||
nozzle_combo_text->SetFont(Label::Head_14);
|
||||
nozzle_combo_text->Wrap(-1);
|
||||
panel_sizer->Add(nozzle_combo_text, 0, wxALL, 0);
|
||||
panel_sizer->AddSpacer(FromDIP(10));
|
||||
m_comboBox_nozzle_dia = new ComboBox(parent, wxID_ANY, "", wxDefaultPosition, CALIBRATION_COMBOX_SIZE, 0, nullptr, wxCB_READONLY);
|
||||
panel_sizer->Add(m_comboBox_nozzle_dia, 0, wxALL, 0);
|
||||
|
||||
m_nozzle_diameter_tips = new Label(parent, "");
|
||||
m_nozzle_diameter_tips->Hide();
|
||||
m_nozzle_diameter_tips->SetFont(Label::Body_13);
|
||||
//m_nozzle_diameter_tips->SetForegroundColour(wxColour(100, 100, 100));
|
||||
m_nozzle_diameter_tips->Wrap(CALIBRATION_TEXT_MAX_LENGTH);
|
||||
panel_sizer->Add(m_nozzle_diameter_tips, 0, wxALL, 0);
|
||||
auto sync_button_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
auto btn_sync = new Button(parent, "", "ams_nozzle_sync");
|
||||
btn_sync->SetToolTip(_L("Synchronize nozzle and AMS information"));
|
||||
btn_sync->SetCornerRadius(8);
|
||||
StateColor btn_sync_bg_col(std::pair<wxColour, int>(wxColour(0xCECECE), StateColor::Pressed), std::pair<wxColour, int>(wxColour(0xF8F8F8), StateColor::Hovered),
|
||||
std::pair<wxColour, int>(wxColour(0xF8F8F8), StateColor::Normal));
|
||||
StateColor btn_sync_bd_col(std::pair<wxColour, int>(wxColour(0x00AE42), StateColor::Pressed), std::pair<wxColour, int>(wxColour(0x00AE42), StateColor::Hovered),
|
||||
std::pair<wxColour, int>(wxColour(0xEEEEEE), StateColor::Normal));
|
||||
btn_sync->SetBackgroundColor(btn_sync_bg_col);
|
||||
btn_sync->SetBorderColor(btn_sync_bd_col);
|
||||
btn_sync->SetCanFocus(false);
|
||||
btn_sync->SetPaddingSize({FromDIP(6), FromDIP(12)});
|
||||
btn_sync->SetMinSize(SYNC_BUTTON_SIZE);
|
||||
btn_sync->SetMaxSize(SYNC_BUTTON_SIZE);
|
||||
btn_sync->SetVertical();
|
||||
btn_sync->Bind(wxEVT_BUTTON, [this](wxCommandEvent &e) {
|
||||
if (!curr_obj) {
|
||||
MessageDialog msg_dlg(nullptr, _L("Please connect the printer first before synchronizing."), wxEmptyString, wxICON_WARNING | wxOK);
|
||||
msg_dlg.ShowModal();
|
||||
return;
|
||||
}
|
||||
on_device_connected(curr_obj);
|
||||
});
|
||||
|
||||
auto sync_button_text = new Label(parent, _L("Sync printer information"));
|
||||
sync_button_text->SetFont(Label::Head_14);
|
||||
sync_button_text->Wrap(-1);
|
||||
sync_button_sizer->Add(btn_sync);
|
||||
sync_button_sizer->AddSpacer(FromDIP(20));
|
||||
sync_button_sizer->Add(sync_button_text, 0, wxALIGN_CENTER_VERTICAL | wxALL, 0);
|
||||
panel_sizer->Add(sync_button_sizer);
|
||||
panel_sizer->AddSpacer(PRESET_GAP);
|
||||
|
||||
// nozzle_volume_type (multi_extruder)
|
||||
// single extruder
|
||||
{
|
||||
m_nozzle_volume_type_panel = new wxPanel(parent);
|
||||
m_nozzle_volume_type_panel->SetBackgroundColour(*wxWHITE);
|
||||
m_single_nozzle_info_panel = new wxPanel(parent);
|
||||
m_single_nozzle_info_panel->SetBackgroundColour(*wxWHITE);
|
||||
auto single_nozzle_sizer = new wxBoxSizer(wxVERTICAL);
|
||||
auto nozzle_combo_text = new Label(m_single_nozzle_info_panel, _L("Nozzle Diameter"));
|
||||
nozzle_combo_text->SetFont(Label::Head_14);
|
||||
nozzle_combo_text->Wrap(-1);
|
||||
|
||||
single_nozzle_sizer->Add(nozzle_combo_text, 0, wxALL, 0);
|
||||
single_nozzle_sizer->AddSpacer(FromDIP(10));
|
||||
m_comboBox_nozzle_dia = new ComboBox(m_single_nozzle_info_panel, wxID_ANY, "", wxDefaultPosition, CALIBRATION_COMBOX_SIZE, 0, nullptr, wxCB_READONLY);
|
||||
single_nozzle_sizer->Add(m_comboBox_nozzle_dia, 0, wxALL, 0);
|
||||
|
||||
m_nozzle_diameter_tips = new Label(m_single_nozzle_info_panel, "");
|
||||
m_nozzle_diameter_tips->Hide();
|
||||
m_nozzle_diameter_tips->SetFont(Label::Body_13);
|
||||
// m_nozzle_diameter_tips->SetForegroundColour(wxColour(100, 100, 100));
|
||||
m_nozzle_diameter_tips->Wrap(CALIBRATION_TEXT_MAX_LENGTH);
|
||||
single_nozzle_sizer->Add(m_nozzle_diameter_tips, 0, wxALL, 0);
|
||||
single_nozzle_sizer->AddSpacer(PRESET_GAP);
|
||||
|
||||
m_single_nozzle_info_panel->SetSizer(single_nozzle_sizer);
|
||||
panel_sizer->Add(m_single_nozzle_info_panel);
|
||||
}
|
||||
|
||||
// multi extruder
|
||||
{
|
||||
m_multi_nozzle_info_panel = new wxPanel(parent);
|
||||
m_multi_nozzle_info_panel->SetBackgroundColour(*wxWHITE);
|
||||
auto nozzle_volume_sizer = new wxBoxSizer(wxVERTICAL);
|
||||
auto nozzle_volume_type_text = new Label(m_nozzle_volume_type_panel, _L("Nozzle Volume Type"));
|
||||
nozzle_volume_type_text->SetFont(Label::Head_14);
|
||||
nozzle_volume_type_text->Wrap(-1);
|
||||
nozzle_volume_sizer->Add(nozzle_volume_type_text, 0, wxALL, 0);
|
||||
nozzle_volume_sizer->AddSpacer(FromDIP(10));
|
||||
auto nozzle_info_text = new Label(m_multi_nozzle_info_panel, _L("Nozzle Info"));
|
||||
nozzle_info_text->SetFont(Label::Head_14);
|
||||
nozzle_info_text->Wrap(-1);
|
||||
nozzle_volume_sizer->Add(nozzle_info_text, 0, wxALL, 0);
|
||||
//nozzle_volume_sizer->AddSpacer(FromDIP(10));
|
||||
|
||||
wxBoxSizer * type_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
m_left_nozzle_volume_type_sizer = new wxStaticBoxSizer(wxVERTICAL, m_nozzle_volume_type_panel, "Left");
|
||||
m_right_nozzle_volume_type_sizer = new wxStaticBoxSizer(wxVERTICAL, m_nozzle_volume_type_panel, "Right");
|
||||
m_left_nozzle_volume_type_sizer = new wxStaticBoxSizer(wxVERTICAL, m_multi_nozzle_info_panel, "Left");
|
||||
{
|
||||
//wxBoxSizer *nozzle_diameter_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
auto nozzle_diameter_text = new Label(m_multi_nozzle_info_panel, _L("Nozzle Diameter"), 0, CALIBRATION_LABEL_SIZE);
|
||||
nozzle_diameter_text->SetFont(Label::Head_14);
|
||||
nozzle_diameter_text->Wrap(-1);
|
||||
|
||||
m_comboBox_nozzle_volume_types.clear();
|
||||
m_left_comboBox_nozzle_dia = new ComboBox(m_multi_nozzle_info_panel, wxID_ANY, "", wxDefaultPosition, CALIBRATION_FILAMENT_COMBOX_SIZE, 0, nullptr, wxCB_READONLY);
|
||||
m_left_comboBox_nozzle_dia->Disable();
|
||||
|
||||
ComboBox *nozzle_volume_type_cbx = new ComboBox(m_nozzle_volume_type_panel, wxID_ANY, "", wxDefaultPosition, CALIBRATION_FILAMENT_COMBOX_SIZE, 0, nullptr, wxCB_READONLY);
|
||||
m_comboBox_nozzle_volume_types.emplace_back(nozzle_volume_type_cbx);
|
||||
m_left_nozzle_volume_type_sizer->Add(m_comboBox_nozzle_volume_types.back(), 0, wxEXPAND | wxALL, 5);
|
||||
m_left_nozzle_volume_type_sizer->AddSpacer(FromDIP(5));
|
||||
m_left_nozzle_volume_type_sizer->Add(nozzle_diameter_text, 0, wxLEFT | wxRIGHT, 10);
|
||||
m_left_nozzle_volume_type_sizer->AddSpacer(FromDIP(5));
|
||||
m_left_nozzle_volume_type_sizer->Add(m_left_comboBox_nozzle_dia, 0, wxLEFT | wxRIGHT, 10);
|
||||
m_left_nozzle_volume_type_sizer->AddSpacer(FromDIP(5));
|
||||
|
||||
nozzle_volume_type_cbx = new ComboBox(m_nozzle_volume_type_panel, wxID_ANY, "", wxDefaultPosition, CALIBRATION_FILAMENT_COMBOX_SIZE, 0, nullptr,wxCB_READONLY);
|
||||
m_comboBox_nozzle_volume_types.emplace_back(nozzle_volume_type_cbx);
|
||||
m_right_nozzle_volume_type_sizer->Add(m_comboBox_nozzle_volume_types.back(), 0, wxEXPAND | wxALL, 5);
|
||||
//wxBoxSizer *nozzle_volume_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
auto nozzle_volume_type_text = new Label(m_multi_nozzle_info_panel, _L("Nozzle Volume Type"), 0, CALIBRATION_LABEL_SIZE);
|
||||
nozzle_volume_type_text->SetFont(Label::Head_14);
|
||||
nozzle_volume_type_text->Wrap(-1);
|
||||
|
||||
type_sizer->Add(m_left_nozzle_volume_type_sizer, 1, wxEXPAND | wxALL, 10);
|
||||
type_sizer->Add(m_right_nozzle_volume_type_sizer, 1, wxEXPAND | wxALL, 10);
|
||||
m_left_comboBox_nozzle_volume = new ComboBox(m_multi_nozzle_info_panel, wxID_ANY, "", wxDefaultPosition, CALIBRATION_FILAMENT_COMBOX_SIZE, 0, nullptr, wxCB_READONLY);
|
||||
m_left_comboBox_nozzle_volume->Disable();
|
||||
|
||||
m_left_nozzle_volume_type_sizer->Add(nozzle_volume_type_text, 0, wxLEFT | wxRIGHT, 10);
|
||||
m_left_nozzle_volume_type_sizer->AddSpacer(FromDIP(5));
|
||||
m_left_nozzle_volume_type_sizer->Add(m_left_comboBox_nozzle_volume, 0, wxLEFT | wxRIGHT, 10);
|
||||
m_left_nozzle_volume_type_sizer->AddSpacer(FromDIP(5));
|
||||
|
||||
//m_left_nozzle_volume_type_sizer->Add(nozzle_diameter_sizer);
|
||||
//m_left_nozzle_volume_type_sizer->AddSpacer(FromDIP(5));
|
||||
//m_left_nozzle_volume_type_sizer->Add(nozzle_volume_sizer);
|
||||
}
|
||||
|
||||
m_right_nozzle_volume_type_sizer = new wxStaticBoxSizer(wxVERTICAL, m_multi_nozzle_info_panel, "Right");
|
||||
{
|
||||
//wxBoxSizer *nozzle_diameter_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
auto nozzle_diameter_text = new Label(m_multi_nozzle_info_panel, _L("Nozzle Diameter"), 0, CALIBRATION_LABEL_SIZE);
|
||||
nozzle_diameter_text->SetFont(Label::Head_14);
|
||||
nozzle_diameter_text->Wrap(-1);
|
||||
|
||||
m_right_comboBox_nozzle_dia = new ComboBox(m_multi_nozzle_info_panel, wxID_ANY, "", wxDefaultPosition, CALIBRATION_FILAMENT_COMBOX_SIZE, 0, nullptr, wxCB_READONLY);
|
||||
m_right_comboBox_nozzle_dia->Disable();
|
||||
|
||||
m_right_nozzle_volume_type_sizer->AddSpacer(FromDIP(5));
|
||||
m_right_nozzle_volume_type_sizer->Add(nozzle_diameter_text, 0, wxLEFT | wxRIGHT, 10);
|
||||
m_right_nozzle_volume_type_sizer->AddSpacer(FromDIP(5));
|
||||
m_right_nozzle_volume_type_sizer->Add(m_right_comboBox_nozzle_dia, 0, wxLEFT | wxRIGHT, 10);
|
||||
m_right_nozzle_volume_type_sizer->AddSpacer(FromDIP(5));
|
||||
|
||||
//wxBoxSizer *nozzle_volume_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
auto nozzle_volume_type_text = new Label(m_multi_nozzle_info_panel, _L("Nozzle Volume Type"), 0, CALIBRATION_LABEL_SIZE);
|
||||
nozzle_volume_type_text->SetFont(Label::Head_14);
|
||||
nozzle_volume_type_text->Wrap(-1);
|
||||
|
||||
m_right_comboBox_nozzle_volume = new ComboBox(m_multi_nozzle_info_panel, wxID_ANY, "", wxDefaultPosition, CALIBRATION_FILAMENT_COMBOX_SIZE, 0, nullptr, wxCB_READONLY);
|
||||
m_right_comboBox_nozzle_volume->Disable();
|
||||
|
||||
m_right_nozzle_volume_type_sizer->Add(nozzle_volume_type_text, 0, wxLEFT | wxRIGHT, 10);
|
||||
m_right_nozzle_volume_type_sizer->AddSpacer(FromDIP(5));
|
||||
m_right_nozzle_volume_type_sizer->Add(m_right_comboBox_nozzle_volume, 0, wxLEFT | wxRIGHT, 10);
|
||||
m_right_nozzle_volume_type_sizer->AddSpacer(FromDIP(5));
|
||||
|
||||
//m_right_nozzle_volume_type_sizer->Add(nozzle_diameter_sizer);
|
||||
//m_right_nozzle_volume_type_sizer->AddSpacer(FromDIP(5));
|
||||
//m_right_nozzle_volume_type_sizer->Add(nozzle_volume_sizer);
|
||||
}
|
||||
|
||||
type_sizer->Add(m_left_nozzle_volume_type_sizer, 1, wxEXPAND | wxRIGHT, 10);
|
||||
type_sizer->Add(m_right_nozzle_volume_type_sizer, 1, wxEXPAND, 0);
|
||||
|
||||
nozzle_volume_sizer->Add(type_sizer);
|
||||
nozzle_volume_sizer->AddSpacer(PRESET_GAP);
|
||||
|
||||
for (size_t i = 0; i < m_comboBox_nozzle_volume_types.size(); ++i) {
|
||||
m_comboBox_nozzle_volume_types[i]->Bind(wxEVT_COMBOBOX, std::bind(&CalibrationPresetPage::on_select_nozzle_volume_type, this, std::placeholders::_1, i));
|
||||
m_comboBox_nozzle_volume_types[i]->Hide();
|
||||
}
|
||||
m_multi_nozzle_info_panel->SetSizer(nozzle_volume_sizer);
|
||||
panel_sizer->Add(m_multi_nozzle_info_panel);
|
||||
|
||||
m_nozzle_volume_type_panel->SetSizer(nozzle_volume_sizer);
|
||||
panel_sizer->Add(m_nozzle_volume_type_panel);
|
||||
|
||||
m_nozzle_volume_type_panel->Hide();
|
||||
m_multi_nozzle_info_panel->Hide();
|
||||
}
|
||||
|
||||
auto plate_type_combo_text = new Label(parent, _L("Plate Type"));
|
||||
|
@ -661,20 +759,38 @@ void CalibrationPresetPage::init_selection_values()
|
|||
m_comboBox_bed_type->SetSelection(curr_selection);
|
||||
}
|
||||
|
||||
// init nozzle_volume_type for multi_extruder
|
||||
// left
|
||||
{
|
||||
for (int i = 0; i < NOZZLE_LIST_COUNT; i++) {
|
||||
m_left_comboBox_nozzle_dia->AppendString(wxString::Format("%1.1f mm", nozzle_diameter_list[i]));
|
||||
}
|
||||
m_left_comboBox_nozzle_dia->SetSelection(NOZZLE_LIST_DEFAULT);
|
||||
|
||||
const ConfigOptionDef *nozzle_volume_type_def = print_config_def.get("nozzle_volume_type");
|
||||
if (nozzle_volume_type_def && nozzle_volume_type_def->enum_keys_map) {
|
||||
for (auto item : nozzle_volume_type_def->enum_labels) {
|
||||
for (size_t i = 0; i < m_comboBox_nozzle_volume_types.size(); ++i) {
|
||||
m_comboBox_nozzle_volume_types[i]->AppendString(_L(item));
|
||||
}
|
||||
m_left_comboBox_nozzle_volume->AppendString(_L(item));
|
||||
}
|
||||
}
|
||||
|
||||
for (size_t i = 0; i < m_comboBox_nozzle_volume_types.size(); ++i) {
|
||||
m_comboBox_nozzle_volume_types[i]->SetSelection(int(NozzleVolumeType::nvtStandard)); // default for single extruder printer
|
||||
m_left_comboBox_nozzle_volume->SetSelection(int(NozzleVolumeType::nvtStandard));
|
||||
}
|
||||
|
||||
// right
|
||||
{
|
||||
for (int i = 0; i < NOZZLE_LIST_COUNT; i++) {
|
||||
m_right_comboBox_nozzle_dia->AppendString(wxString::Format("%1.1f mm", nozzle_diameter_list[i]));
|
||||
}
|
||||
m_right_comboBox_nozzle_dia->SetSelection(NOZZLE_LIST_DEFAULT);
|
||||
|
||||
const ConfigOptionDef *nozzle_volume_type_def = print_config_def.get("nozzle_volume_type");
|
||||
if (nozzle_volume_type_def && nozzle_volume_type_def->enum_keys_map) {
|
||||
for (auto item : nozzle_volume_type_def->enum_labels) {
|
||||
m_right_comboBox_nozzle_volume->AppendString(_L(item));
|
||||
}
|
||||
}
|
||||
|
||||
m_right_comboBox_nozzle_volume->SetSelection(int(NozzleVolumeType::nvtStandard));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -749,13 +865,39 @@ void CalibrationPresetPage::create_filament_list_panel(wxWindow* parent)
|
|||
panel_sizer->Fit(parent);
|
||||
}
|
||||
|
||||
float CalibrationPresetPage::get_nozzle_diameter(int extruder_id) const
|
||||
{
|
||||
float nozzle_dia = -1.f;
|
||||
if (!curr_obj)
|
||||
return nozzle_dia;
|
||||
|
||||
if (curr_obj->is_multi_extruders()) {
|
||||
if (extruder_id == LEFT_EXTRUDER_ID) {
|
||||
if (m_left_comboBox_nozzle_dia->GetSelection() >= 0 && m_left_comboBox_nozzle_dia->GetSelection() < NOZZLE_LIST_COUNT) {
|
||||
nozzle_dia = nozzle_diameter_list[m_left_comboBox_nozzle_dia->GetSelection()];
|
||||
}
|
||||
} else if (extruder_id == RIGHT_EXTRUDER_ID) {
|
||||
if (m_right_comboBox_nozzle_dia->GetSelection() >= 0 && m_right_comboBox_nozzle_dia->GetSelection() < NOZZLE_LIST_COUNT) {
|
||||
nozzle_dia = nozzle_diameter_list[m_right_comboBox_nozzle_dia->GetSelection()];
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (m_comboBox_nozzle_dia->GetSelection() >= 0 && m_comboBox_nozzle_dia->GetSelection() < NOZZLE_LIST_COUNT) {
|
||||
nozzle_dia = nozzle_diameter_list[m_comboBox_nozzle_dia->GetSelection()];
|
||||
}
|
||||
|
||||
return nozzle_dia;
|
||||
}
|
||||
|
||||
NozzleVolumeType CalibrationPresetPage::get_nozzle_volume_type(int extruder_id) const
|
||||
{
|
||||
if (m_comboBox_nozzle_volume_types.size() > extruder_id)
|
||||
return NozzleVolumeType(m_comboBox_nozzle_volume_types[extruder_id]->GetSelection());
|
||||
else {
|
||||
return NozzleVolumeType::nvtStandard;
|
||||
if (extruder_id == LEFT_EXTRUDER_ID) {
|
||||
return NozzleVolumeType(m_left_comboBox_nozzle_volume->GetSelection());
|
||||
}
|
||||
else if (extruder_id == RIGHT_EXTRUDER_ID) {
|
||||
return NozzleVolumeType(m_right_comboBox_nozzle_volume->GetSelection());
|
||||
}
|
||||
return NozzleVolumeType::nvtStandard;
|
||||
}
|
||||
|
||||
ExtruderType CalibrationPresetPage::get_extruder_type(int extruder_id) const
|
||||
|
@ -1862,6 +2004,15 @@ void CalibrationPresetPage::init_with_machine(MachineObject* obj)
|
|||
{
|
||||
if (!obj) return;
|
||||
|
||||
auto get_nozzle_diameter_list_index = [&obj](int extruder_id) -> int {
|
||||
for (int i = 0; i < NOZZLE_LIST_COUNT; i++) {
|
||||
if (abs(obj->m_extder_data.extders[extruder_id].current_nozzle_diameter - nozzle_diameter_list[i]) < 1e-3) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
};
|
||||
|
||||
//set flow ratio calibration type
|
||||
m_cali_stage_panel->set_flow_ratio_calibration_type(obj->flow_ratio_calibration_type);
|
||||
// set nozzle value from machine
|
||||
|
@ -1888,59 +2039,82 @@ void CalibrationPresetPage::init_with_machine(MachineObject* obj)
|
|||
}
|
||||
|
||||
if (obj->is_multi_extruders()) {
|
||||
for (int i = 0; i < m_comboBox_nozzle_volume_types.size(); ++i) {
|
||||
m_comboBox_nozzle_volume_types[i]->Show();
|
||||
if (obj->m_extder_data.extders[i].current_nozzle_flow_type != NozzleFlowType::NONE_FLOWTYPE)
|
||||
m_comboBox_nozzle_volume_types[i]->SetSelection(obj->m_extder_data.extders[i].current_nozzle_flow_type - 1);
|
||||
else
|
||||
m_comboBox_nozzle_volume_types[i]->SetSelection(0);
|
||||
for (size_t i = 0; i < obj->m_extder_data.extders.size(); ++i) {
|
||||
if (i == LEFT_EXTRUDER_ID) {
|
||||
int index = get_nozzle_diameter_list_index(LEFT_EXTRUDER_ID);
|
||||
if ((index != -1) && m_left_comboBox_nozzle_dia->GetCount() > index) {
|
||||
m_left_comboBox_nozzle_dia->SetSelection(index);
|
||||
wxCommandEvent event(wxEVT_COMBOBOX);
|
||||
event.SetEventObject(this);
|
||||
wxPostEvent(m_left_comboBox_nozzle_dia, event);
|
||||
m_left_comboBox_nozzle_dia->SetToolTip(_L("The nozzle diameter has been synchronized from the printer Settings"));
|
||||
}
|
||||
else {
|
||||
m_left_comboBox_nozzle_dia->SetToolTip(wxEmptyString);
|
||||
if (m_left_comboBox_nozzle_dia->GetCount() > NOZZLE_LIST_DEFAULT)
|
||||
m_left_comboBox_nozzle_dia->SetSelection(NOZZLE_LIST_DEFAULT);
|
||||
}
|
||||
|
||||
if (obj->m_extder_data.extders[i].current_nozzle_flow_type != NozzleFlowType::NONE_FLOWTYPE) {
|
||||
m_left_comboBox_nozzle_volume->SetSelection(obj->m_extder_data.extders[i].current_nozzle_flow_type - 1);
|
||||
} else {
|
||||
m_left_comboBox_nozzle_volume->SetSelection(0);
|
||||
}
|
||||
}
|
||||
else if (i == RIGHT_EXTRUDER_ID) {
|
||||
int index = get_nozzle_diameter_list_index(RIGHT_EXTRUDER_ID);
|
||||
if ((index != -1) && m_right_comboBox_nozzle_dia->GetCount() > index) {
|
||||
m_right_comboBox_nozzle_dia->SetSelection(index);
|
||||
wxCommandEvent event(wxEVT_COMBOBOX);
|
||||
event.SetEventObject(this);
|
||||
wxPostEvent(m_right_comboBox_nozzle_dia, event);
|
||||
m_right_comboBox_nozzle_dia->SetToolTip(_L("The nozzle diameter has been synchronized from the printer Settings"));
|
||||
} else {
|
||||
m_right_comboBox_nozzle_dia->SetToolTip(wxEmptyString);
|
||||
if (m_right_comboBox_nozzle_dia->GetCount() > NOZZLE_LIST_DEFAULT)
|
||||
m_right_comboBox_nozzle_dia->SetSelection(NOZZLE_LIST_DEFAULT);
|
||||
}
|
||||
|
||||
if (obj->m_extder_data.extders[i].current_nozzle_flow_type != NozzleFlowType::NONE_FLOWTYPE) {
|
||||
m_right_comboBox_nozzle_volume->SetSelection(obj->m_extder_data.extders[i].current_nozzle_flow_type - 1);
|
||||
} else {
|
||||
m_right_comboBox_nozzle_volume->SetSelection(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!obj->is_main_extruder_on_left() && m_main_extruder_on_left) {
|
||||
m_multi_exturder_ams_sizer->Detach(m_main_sizer);
|
||||
m_multi_exturder_ams_sizer->Detach(m_deputy_sizer);
|
||||
m_left_nozzle_volume_type_sizer->Detach(0);
|
||||
m_right_nozzle_volume_type_sizer->Detach(0);
|
||||
|
||||
m_main_sizer->GetStaticBox()->SetLabel("Right");
|
||||
m_deputy_sizer->GetStaticBox()->SetLabel("Left");
|
||||
m_multi_exturder_ams_sizer->Add(m_deputy_sizer, 1, wxEXPAND | wxALL | wxALIGN_BOTTOM, 10);
|
||||
m_multi_exturder_ams_sizer->Add(m_main_sizer, 1, wxEXPAND | wxALL | wxALIGN_BOTTOM, 10);
|
||||
|
||||
m_left_nozzle_volume_type_sizer->Add(m_comboBox_nozzle_volume_types[1]);
|
||||
m_right_nozzle_volume_type_sizer->Add(m_comboBox_nozzle_volume_types[0]);
|
||||
|
||||
m_main_extruder_on_left = false;
|
||||
}
|
||||
else if (obj->is_main_extruder_on_left() && !m_main_extruder_on_left) {
|
||||
m_multi_exturder_ams_sizer->Detach(m_main_sizer);
|
||||
m_multi_exturder_ams_sizer->Detach(m_deputy_sizer);
|
||||
|
||||
m_left_nozzle_volume_type_sizer->Detach(0);
|
||||
m_right_nozzle_volume_type_sizer->Detach(0);
|
||||
|
||||
m_main_sizer->GetStaticBox()->SetLabel("Left");
|
||||
m_deputy_sizer->GetStaticBox()->SetLabel("Right");
|
||||
m_multi_exturder_ams_sizer->Add(m_main_sizer, 1, wxEXPAND | wxALL | wxALIGN_BOTTOM, 10);
|
||||
m_multi_exturder_ams_sizer->Add(m_deputy_sizer, 1, wxEXPAND | wxALL | wxALIGN_BOTTOM, 10);
|
||||
|
||||
m_left_nozzle_volume_type_sizer->Add(m_comboBox_nozzle_volume_types[0]);
|
||||
m_right_nozzle_volume_type_sizer->Add(m_comboBox_nozzle_volume_types[1]);
|
||||
|
||||
m_main_extruder_on_left = true;
|
||||
}
|
||||
|
||||
m_nozzle_volume_type_panel->Show();
|
||||
m_single_nozzle_info_panel->Hide();
|
||||
m_multi_nozzle_info_panel->Show();
|
||||
m_multi_exutrder_filament_list_panel->Show();
|
||||
m_filament_list_panel->Hide();
|
||||
m_ext_spool_panel->Hide();
|
||||
}
|
||||
else {
|
||||
for (int i = 0; i < m_comboBox_nozzle_volume_types.size(); ++i) {
|
||||
m_comboBox_nozzle_volume_types[i]->Hide();
|
||||
}
|
||||
|
||||
m_nozzle_volume_type_panel->Hide();
|
||||
m_single_nozzle_info_panel->Show();
|
||||
m_multi_nozzle_info_panel->Hide();
|
||||
m_multi_exutrder_filament_list_panel->Hide();
|
||||
}
|
||||
|
||||
|
|
|
@ -220,6 +220,7 @@ public:
|
|||
void on_sys_color_changed() override;
|
||||
|
||||
int get_extruder_id(int ams_id);
|
||||
float get_nozzle_diameter(int extruder_id) const;
|
||||
NozzleVolumeType get_nozzle_volume_type(int extruder_id) const;
|
||||
ExtruderType get_extruder_type(int extruder_id) const;
|
||||
|
||||
|
@ -294,10 +295,15 @@ protected:
|
|||
void create_multi_extruder_filament_list_panel(wxWindow *parent);
|
||||
void on_select_nozzle_volume_type(wxCommandEvent &evt, size_t extruder_id);
|
||||
|
||||
std::vector<ComboBox*> m_comboBox_nozzle_volume_types;
|
||||
wxPanel* m_nozzle_volume_type_panel{nullptr};
|
||||
wxPanel* m_single_nozzle_info_panel{nullptr};
|
||||
wxPanel* m_multi_nozzle_info_panel{nullptr};
|
||||
wxPanel* m_multi_exutrder_filament_list_panel{nullptr};
|
||||
|
||||
ComboBox * m_left_comboBox_nozzle_dia;
|
||||
ComboBox * m_right_comboBox_nozzle_dia;
|
||||
ComboBox * m_left_comboBox_nozzle_volume;
|
||||
ComboBox * m_right_comboBox_nozzle_volume;
|
||||
|
||||
wxPanel* m_main_ams_preview_panel{nullptr};
|
||||
wxPanel* m_deputy_ams_preview_panel{nullptr};
|
||||
wxBoxSizer* m_main_ams_items_sizer{nullptr};
|
||||
|
@ -358,3 +364,4 @@ public:
|
|||
}} // namespace Slic3r::GUI
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -1111,7 +1111,21 @@ bool CalibUtils::check_printable_status_before_cali(const MachineObject *obj, co
|
|||
return false;
|
||||
}
|
||||
|
||||
float diameter = obj->m_extder_data.extders[0].current_nozzle_diameter;
|
||||
float cali_diameter = cali_infos.calib_datas[0].nozzle_diameter;
|
||||
int extruder_id = cali_infos.calib_datas[0].extruder_id;
|
||||
for (const auto& cali_info : cali_infos.calib_datas) {
|
||||
if (!is_approx(cali_diameter, cali_info.nozzle_diameter)) {
|
||||
error_message = _L("Calibration using nozzles of different diameters is not supported.");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (extruder_id >= obj->m_extder_data.extders.size()) {
|
||||
error_message = _L("The number of printer extruders and the printer selected for calibration does not match.");
|
||||
return false;
|
||||
}
|
||||
|
||||
float diameter = obj->m_extder_data.extders[extruder_id].current_nozzle_diameter;
|
||||
bool is_multi_extruder = obj->is_multi_extruders();
|
||||
std::vector<NozzleFlowType> nozzle_volume_types;
|
||||
if (is_multi_extruder) {
|
||||
|
|
Loading…
Reference in New Issue