ENH: calibration: filaments compatibility
Change-Id: Ibdbf25905b7f0fff2371247437624ec4645b35ee
This commit is contained in:
parent
0cad88309c
commit
257e2e0bbb
|
@ -509,19 +509,25 @@ std::string AppConfig::load()
|
|||
}
|
||||
}
|
||||
} else if (it.key() == "calis") {
|
||||
for (auto &j : it.value()) {
|
||||
std::string str = j.dump();
|
||||
for (auto &calis_j : it.value()) {
|
||||
PrinterCaliInfo cali_info;
|
||||
cali_info.dev_id = j["dev_id"].get<std::string>();
|
||||
cali_info.mode = CalibMode(j["cali_mode"].get<int>());
|
||||
cali_info.state = CalibState(j["cali_state"].get<int>());
|
||||
cali_info.filament_preset = j["preset"].get<std::string>();
|
||||
if (calis_j.contains("dev_id"))
|
||||
cali_info.dev_id = calis_j["dev_id"].get<std::string>();
|
||||
if (calis_j.contains("cali_mode"))
|
||||
cali_info.mode = CalibMode(calis_j["cali_mode"].get<int>());
|
||||
if (calis_j.contains("cali_state"))
|
||||
cali_info.state = CalibState(calis_j["cali_state"].get<int>());
|
||||
if (calis_j.contains("preset")) {
|
||||
for (auto cali_it = calis_j["preset"].begin(); cali_it != calis_j["preset"].end(); cali_it++) {
|
||||
int tray_id = cali_it.value()["tray_id"].get<int>();
|
||||
std::string name = cali_it.value()["preset_name"].get<std::string>();
|
||||
cali_info.filament_presets[tray_id] = name;
|
||||
}
|
||||
}
|
||||
//if (j.contains("nozzle"))
|
||||
//cali_info.nozzle_dia = j["nozzle"].get<float>();
|
||||
//if (j.contains("bed_type"))
|
||||
//cali_info.bed_type = j["bed_type"].get<int>();
|
||||
if (j.contains("tray_ids"))
|
||||
cali_info.tray_ids = j["tray_ids"].get<std::vector<int>>();
|
||||
m_printer_cali_infos.emplace_back(cali_info);
|
||||
}
|
||||
} else {
|
||||
|
@ -630,17 +636,19 @@ void AppConfig::save()
|
|||
}
|
||||
|
||||
for (const auto &cali_info : m_printer_cali_infos) {
|
||||
json json;
|
||||
json["dev_id"] = cali_info.dev_id;
|
||||
json["cali_mode"] = int(cali_info.mode);
|
||||
json["cali_state"] = int(cali_info.state);
|
||||
json["preset"] = cali_info.filament_preset;
|
||||
for (int tray_id : cali_info.tray_ids) {
|
||||
json["tray_ids"].push_back(tray_id);
|
||||
json cali_json;
|
||||
cali_json["dev_id"] = cali_info.dev_id;
|
||||
cali_json["cali_mode"] = int(cali_info.mode);
|
||||
cali_json["cali_state"] = int(cali_info.state);
|
||||
for (auto filament_preset : cali_info.filament_presets) {
|
||||
json preset_json;
|
||||
preset_json["tray_id"] = filament_preset.first;
|
||||
preset_json["preset_name"] = filament_preset.second;
|
||||
cali_json["preset"].push_back(preset_json);
|
||||
}
|
||||
//json["nozzle"] = cali_info.nozzle_dia;
|
||||
//json["bed_type"] = cali_info.bed_type;
|
||||
j["calis"].push_back(json);
|
||||
j["calis"].push_back(cali_json);
|
||||
}
|
||||
|
||||
// Write the other categories.
|
||||
|
@ -978,10 +986,9 @@ void AppConfig::save_printer_cali_infos(const PrinterCaliInfo &cali_info)
|
|||
if (iter == m_printer_cali_infos.end()) {
|
||||
m_printer_cali_infos.emplace_back(cali_info);
|
||||
} else {
|
||||
(*iter).filament_preset = cali_info.filament_preset;
|
||||
(*iter).filament_presets = cali_info.filament_presets;
|
||||
(*iter).mode = cali_info.mode;
|
||||
(*iter).state = cali_info.state;
|
||||
(*iter).tray_ids = cali_info.tray_ids;
|
||||
//(*iter).nozzle_dia = cali_info.nozzle_dia;
|
||||
//(*iter).bed_type = cali_info.bed_type;
|
||||
}
|
||||
|
|
|
@ -32,10 +32,11 @@ struct PrinterCaliInfo
|
|||
std::string dev_id;
|
||||
CalibMode mode;
|
||||
CalibState state;
|
||||
std::string filament_preset;
|
||||
std::vector<int> tray_ids;
|
||||
float nozzle_dia;
|
||||
int bed_type;
|
||||
//std::string filament_preset;
|
||||
//std::vector<int> tray_ids;
|
||||
std::map<int, std::string> filament_presets;
|
||||
//float nozzle_dia;
|
||||
//int bed_type;
|
||||
};
|
||||
|
||||
struct Calib_Params
|
||||
|
|
|
@ -105,7 +105,7 @@ bool FilamentComboBox::Enable(bool enable) {
|
|||
return result;
|
||||
}
|
||||
|
||||
void FilamentComboBox::SetValue(bool value) {
|
||||
void FilamentComboBox::SetValue(bool value, bool send_event) {
|
||||
if (m_radioBox) {
|
||||
if (value == m_radioBox->GetValue()) {
|
||||
if (m_checkBox) {
|
||||
|
@ -121,10 +121,12 @@ void FilamentComboBox::SetValue(bool value) {
|
|||
m_radioBox->SetValue(value);
|
||||
if (m_checkBox)
|
||||
m_checkBox->SetValue(value);
|
||||
SimpleEvent e(EVT_CALIBRATION_TRAY_SELECTION_CHANGED);
|
||||
e.ResumePropagation(wxEVENT_PROPAGATE_MAX);
|
||||
e.SetEventObject(this);
|
||||
GetEventHandler()->ProcessEvent(e);
|
||||
if (send_event) {
|
||||
SimpleEvent e(EVT_CALIBRATION_TRAY_SELECTION_CHANGED);
|
||||
e.ResumePropagation(wxEVENT_PROPAGATE_MAX);
|
||||
e.SetEventObject(this);
|
||||
GetEventHandler()->ProcessEvent(e);
|
||||
}
|
||||
}
|
||||
|
||||
CalibrationWizard::CalibrationWizard(wxWindow* parent, CalibMode mode, wxWindowID id, const wxPoint& pos, const wxSize& size, long style)
|
||||
|
@ -254,6 +256,7 @@ CalibrationWizardPage* CalibrationWizard::create_presets_page(bool need_custom_r
|
|||
m_filament_list_panel = new wxPanel(m_presets_panel);
|
||||
auto filament_list_sizer = new wxBoxSizer(wxVERTICAL);
|
||||
auto filament_list_tips = new wxStaticText(m_filament_list_panel, wxID_ANY, _L("Please select same type of material, because plate temperature might not be compatible with different type of material"), wxDefaultPosition, wxDefaultSize, 0);
|
||||
filament_list_tips->Hide();
|
||||
filament_list_tips->SetFont(Label::Body_13);
|
||||
filament_list_tips->SetForegroundColour(wxColour(145, 145, 145));
|
||||
filament_list_tips->Wrap(CALIBRATION_TEXT_MAX_LENGTH);
|
||||
|
@ -420,11 +423,6 @@ CalibrationWizardPage* CalibrationWizard::create_presets_page(bool need_custom_r
|
|||
|
||||
printing_param_sizer->AddSpacer(FromDIP(10));
|
||||
|
||||
auto printing_param_text = new wxStaticText(printing_param_panel, wxID_ANY, _L("Printing Parameters"));
|
||||
printing_param_text->SetFont(Label::Head_12);
|
||||
printing_param_text->Wrap(CALIBRATION_TEXT_MAX_LENGTH);
|
||||
printing_param_sizer->Add(printing_param_text, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(20));
|
||||
|
||||
auto info_sizer = new wxFlexGridSizer(0, 3, 0, FromDIP(10));
|
||||
info_sizer->SetFlexibleDirection(wxBOTH);
|
||||
info_sizer->SetNonFlexibleGrowMode(wxFLEX_GROWMODE_SPECIFIED);
|
||||
|
@ -436,14 +434,20 @@ CalibrationWizardPage* CalibrationWizard::create_presets_page(bool need_custom_r
|
|||
m_nozzle_temp->SetBorderWidth(0);
|
||||
nozzle_temp_sizer->Add(nozzle_temp_text, 0, wxALIGN_LEFT);
|
||||
nozzle_temp_sizer->Add(m_nozzle_temp, 0, wxEXPAND);
|
||||
nozzle_temp_text->Hide();
|
||||
m_nozzle_temp->Hide();
|
||||
|
||||
auto bed_temp_sizer = new wxBoxSizer(wxVERTICAL);
|
||||
auto bed_temp_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
auto printing_param_text = new wxStaticText(printing_param_panel, wxID_ANY, _L("Printing Parameters"));
|
||||
printing_param_text->SetFont(Label::Head_12);
|
||||
printing_param_text->Wrap(CALIBRATION_TEXT_MAX_LENGTH);
|
||||
bed_temp_sizer->Add(printing_param_text, 0, wxALIGN_CENTER | wxRIGHT, FromDIP(20));
|
||||
auto bed_temp_text = new wxStaticText(printing_param_panel, wxID_ANY, _L("Bed temperature"));
|
||||
bed_temp_text->SetFont(Label::Body_12);
|
||||
m_bed_temp = new TextInput(printing_param_panel, wxEmptyString, _L("\u2103"), "", wxDefaultPosition, CALIBRATION_FROM_TO_INPUT_SIZE, wxTE_READONLY);
|
||||
m_bed_temp->SetBorderWidth(0);
|
||||
bed_temp_sizer->Add(bed_temp_text, 0, wxALIGN_LEFT);
|
||||
bed_temp_sizer->Add(m_bed_temp, 0, wxEXPAND);
|
||||
bed_temp_sizer->Add(bed_temp_text, 0, wxALIGN_CENTER | wxRIGHT, FromDIP(10));
|
||||
bed_temp_sizer->Add(m_bed_temp, 0, wxALIGN_CENTER);
|
||||
|
||||
auto max_flow_sizer = new wxBoxSizer(wxVERTICAL);
|
||||
auto max_flow_text = new wxStaticText(printing_param_panel, wxID_ANY, _L("Max volumetric speed"));
|
||||
|
@ -452,6 +456,8 @@ CalibrationWizardPage* CalibrationWizard::create_presets_page(bool need_custom_r
|
|||
m_max_volumetric_speed->SetBorderWidth(0);
|
||||
max_flow_sizer->Add(max_flow_text, 0, wxALIGN_LEFT);
|
||||
max_flow_sizer->Add(m_max_volumetric_speed, 0, wxEXPAND);
|
||||
max_flow_text->Hide();
|
||||
m_max_volumetric_speed->Hide();
|
||||
|
||||
m_nozzle_temp->GetTextCtrl()->Bind(wxEVT_SET_FOCUS, [](auto&) {});
|
||||
m_bed_temp->GetTextCtrl()->Bind(wxEVT_SET_FOCUS, [](auto&) {});
|
||||
|
@ -851,7 +857,7 @@ void CalibrationWizard::on_click_btn_prev(IntEvent& event)
|
|||
msg_dlg.ShowModal();
|
||||
return;
|
||||
}
|
||||
MessageDialog msg_dlg(nullptr, _L("It will restart to get the results. Do you confirm to recalibrate?"), wxEmptyString, wxICON_WARNING | wxYES | wxNO);
|
||||
MessageDialog msg_dlg(nullptr, _L("It will restart to get the results. Do you confirm to re-calibrate?"), wxEmptyString, wxICON_WARNING | wxYES | wxNO);
|
||||
auto answer = msg_dlg.ShowModal();
|
||||
if (answer == wxID_NO)
|
||||
return;
|
||||
|
@ -867,7 +873,6 @@ void CalibrationWizard::on_click_btn_prev(IntEvent& event)
|
|||
|
||||
init_presets_selections();
|
||||
change_ams_select_mode();
|
||||
wxGetApp().preset_bundle->set_calibrate_printer("");
|
||||
on_update_ams_filament(false);
|
||||
on_switch_ams(m_ams_item_list[0]->m_amsinfo.ams_id);
|
||||
for (auto fcb : m_filament_comboBox_list)
|
||||
|
@ -908,7 +913,7 @@ void CalibrationWizard::on_click_btn_next(IntEvent& event)
|
|||
return;
|
||||
}
|
||||
|
||||
if (!m_printer_preset || !m_filament_preset || !m_print_preset) {
|
||||
if (!m_printer_preset || m_filament_presets.empty() || !m_print_preset) {
|
||||
wxString tips;
|
||||
if (!m_printer_preset) {
|
||||
tips = _L("Please select a printer and nozzle for calibration.");
|
||||
|
@ -973,12 +978,11 @@ void CalibrationWizard::init_printer_calib_info_from_appconfig() {
|
|||
for (int i = 0; i < infos.size(); i++) {
|
||||
if (m_printer_calib_infos.find(infos[i].dev_id) == m_printer_calib_infos.end()) {
|
||||
m_printer_calib_infos[infos[i].dev_id].dev_id = infos[i].dev_id;
|
||||
m_printer_calib_infos[infos[i].dev_id].filament_preset = infos[i].filament_preset;
|
||||
m_printer_calib_infos[infos[i].dev_id].filament_presets = infos[i].filament_presets;
|
||||
m_printer_calib_infos[infos[i].dev_id].mode = infos[i].mode;
|
||||
m_printer_calib_infos[infos[i].dev_id].state = infos[i].state;
|
||||
//m_printer_calib_infos[infos[i].dev_id].nozzle_dia = infos[i].nozzle_dia;
|
||||
//m_printer_calib_infos[infos[i].dev_id].bed_type = infos[i].bed_type;
|
||||
m_printer_calib_infos[infos[i].dev_id].tray_ids = infos[i].tray_ids;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -987,11 +991,11 @@ void CalibrationWizard::save_to_printer_calib_info(PageType page_type) {
|
|||
m_printer_calib_infos[curr_obj->dev_id].dev_id = curr_obj->dev_id;
|
||||
m_printer_calib_infos[curr_obj->dev_id].mode = m_mode;
|
||||
m_printer_calib_infos[curr_obj->dev_id].state = static_cast<Slic3r::CalibState>(page_type);
|
||||
if (m_filament_preset)
|
||||
m_printer_calib_infos[curr_obj->dev_id].filament_preset = m_filament_preset->name;
|
||||
for (auto filament_preset : m_filament_presets) {
|
||||
m_printer_calib_infos[curr_obj->dev_id].filament_presets[filament_preset.first] = filament_preset.second->name;
|
||||
}
|
||||
//m_printer_calib_infos[curr_obj->dev_id].nozzle_dia = stof(m_comboBox_nozzle_dia->GetValue().ToStdString());
|
||||
//m_printer_calib_infos[curr_obj->dev_id].bed_type = (int)(m_comboBox_bed_type->GetSelection() + btDefault + 1);
|
||||
m_printer_calib_infos[curr_obj->dev_id].tray_ids = get_selected_tray();
|
||||
wxGetApp().app_config->save_printer_cali_infos(m_printer_calib_infos[curr_obj->dev_id]);
|
||||
}
|
||||
|
||||
|
@ -1088,9 +1092,9 @@ void CalibrationWizard::update_print_progress()
|
|||
reset_printing_values();
|
||||
#ifdef CALIBRATION_DEBUG
|
||||
if (m_curr_page->get_page_type() == PageType::Calibration)
|
||||
#else
|
||||
if (curr_obj->print_status == "FINISH" && m_curr_page->get_page_type() == PageType::Calibration)
|
||||
#endif
|
||||
// todo: the printer status is not correct
|
||||
if (/*curr_obj->print_status == "FINISH" &&*/ m_curr_page->get_page_type() == PageType::Calibration)
|
||||
{
|
||||
m_button_abort->Enable(false);
|
||||
m_button_abort->SetBitmap(m_bitmap_abort_disable.bmp());
|
||||
|
@ -1198,7 +1202,8 @@ void CalibrationWizard::on_subtask_abort(wxCommandEvent& event)
|
|||
if (msg_dlg.ShowModal() == wxID_OK) {
|
||||
if (curr_obj) curr_obj->command_task_abort();
|
||||
m_btn_recali->Show();
|
||||
Layout();
|
||||
show_page(get_frist_page());
|
||||
save_to_printer_calib_info(PageType::Start);
|
||||
}
|
||||
//if (abort_dlg == nullptr) {
|
||||
// abort_dlg = new SecondaryCheckDialog(this->GetParent(), wxID_ANY, _L("Cancel print"));
|
||||
|
@ -1228,14 +1233,14 @@ std::vector<int> CalibrationWizard::get_selected_tray()
|
|||
}
|
||||
else {
|
||||
if (get_ams_select_mode() == FilamentSelectMode::FSMCheckBoxMode) {
|
||||
for (auto fcb : m_filament_comboBox_list) {
|
||||
for (auto& fcb : m_filament_comboBox_list) {
|
||||
if (fcb->GetCheckBox()->GetValue()) {
|
||||
tray_ids.push_back(fcb->get_tray_id());
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (get_ams_select_mode() == FilamentSelectMode::FSMRadioMode) {
|
||||
for (auto fcb : m_filament_comboBox_list) {
|
||||
for (auto& fcb : m_filament_comboBox_list) {
|
||||
if (fcb->GetRadioBox()->GetValue()) {
|
||||
tray_ids.push_back(fcb->get_tray_id());
|
||||
}
|
||||
|
@ -1259,21 +1264,22 @@ void CalibrationWizard::set_selected_tray(const std::vector<int>& tray_ids)
|
|||
m_filament_from_ext_spool = false;
|
||||
for (int tray_id : tray_ids) {
|
||||
if (get_ams_select_mode() == FilamentSelectMode::FSMCheckBoxMode) {
|
||||
for (auto fcb : m_filament_comboBox_list) {
|
||||
for (auto& fcb : m_filament_comboBox_list) {
|
||||
if (fcb->get_tray_id() == tray_id) {
|
||||
fcb->SetValue(true);
|
||||
fcb->SetValue(true, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (get_ams_select_mode() == FilamentSelectMode::FSMRadioMode) {
|
||||
for (auto fcb : m_filament_comboBox_list) {
|
||||
for (auto& fcb : m_filament_comboBox_list) {
|
||||
if (fcb->get_tray_id() == tray_id) {
|
||||
fcb->SetValue(true);
|
||||
fcb->SetValue(true, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
recommend_input_value();
|
||||
}
|
||||
|
||||
FilamentComboBoxList CalibrationWizard::get_selected_filament_comboBox()
|
||||
|
@ -1286,14 +1292,14 @@ FilamentComboBoxList CalibrationWizard::get_selected_filament_comboBox()
|
|||
}
|
||||
else {
|
||||
if (get_ams_select_mode() == FilamentSelectMode::FSMCheckBoxMode) {
|
||||
for (auto fcb : m_filament_comboBox_list) {
|
||||
for (auto& fcb : m_filament_comboBox_list) {
|
||||
if (fcb->GetCheckBox()->GetValue()) {
|
||||
fcb_list.push_back(fcb);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (get_ams_select_mode() == FilamentSelectMode::FSMRadioMode) {
|
||||
for (auto fcb : m_filament_comboBox_list) {
|
||||
for (auto& fcb : m_filament_comboBox_list) {
|
||||
if (fcb->GetRadioBox()->GetValue()) {
|
||||
fcb_list.push_back(fcb);
|
||||
}
|
||||
|
@ -1399,12 +1405,12 @@ void CalibrationWizard::update_printer() {
|
|||
if (new_obj != curr_obj) {
|
||||
curr_obj = new_obj;
|
||||
wxGetApp().sidebar().load_ams_list(new_obj->dev_id, new_obj);
|
||||
wxGetApp().preset_bundle->set_calibrate_printer("");
|
||||
init_presets_selections();
|
||||
change_ams_select_mode();
|
||||
wxGetApp().preset_bundle->set_calibrate_printer("");
|
||||
on_update_ams_filament(false);
|
||||
on_switch_ams(m_ams_item_list[0]->m_amsinfo.ams_id);
|
||||
for (auto fcb : m_filament_comboBox_list)
|
||||
for (auto& fcb : m_filament_comboBox_list)
|
||||
fcb->SetValue(false);
|
||||
m_virtual_tray_comboBox->SetValue(false);
|
||||
|
||||
|
@ -1417,14 +1423,19 @@ void CalibrationWizard::update_printer() {
|
|||
if (it != m_printer_calib_infos.end() && it->second.mode == m_mode) {
|
||||
PresetBundle* preset_bundle = wxGetApp().preset_bundle;
|
||||
if (preset_bundle) {
|
||||
for (auto filament_it = preset_bundle->filaments.begin(); filament_it != preset_bundle->filaments.end(); filament_it++) {
|
||||
if (filament_it->name == m_printer_calib_infos[curr_obj->dev_id].filament_preset) {
|
||||
m_filament_preset = (&*filament_it);
|
||||
|
||||
for (auto filament_preset : m_printer_calib_infos[curr_obj->dev_id].filament_presets) {
|
||||
for (auto filament_it = preset_bundle->filaments.begin(); filament_it != preset_bundle->filaments.end(); filament_it++) {
|
||||
if (filament_it->name == filament_preset.second) {
|
||||
m_filament_presets[filament_preset.first] = (&*filament_it);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
set_selected_tray(it->second.tray_ids);
|
||||
std::vector<int> tray_ids;
|
||||
for (auto filament_preset : it->second.filament_presets) {
|
||||
tray_ids.push_back(filament_preset.first);
|
||||
}
|
||||
set_selected_tray(tray_ids);
|
||||
jump_to_page(static_cast<PageType>(m_printer_calib_infos[curr_obj->dev_id].state));
|
||||
}
|
||||
else {
|
||||
|
@ -1502,40 +1513,62 @@ void CalibrationWizard::on_switch_ams(std::string ams_id)
|
|||
Layout();
|
||||
}
|
||||
|
||||
static std::map<std::string, bool> filament_is_high_temp{
|
||||
{"PLA", false},
|
||||
{"PLA-CF", false},
|
||||
//{"PETG", true},
|
||||
{"ABS", true},
|
||||
{"TPU", false},
|
||||
{"PA", true},
|
||||
{"PA-CF", true},
|
||||
{"PET-CF", true},
|
||||
{"PC", true},
|
||||
{"ASA", true},
|
||||
{"HIPS", true}
|
||||
};
|
||||
|
||||
void CalibrationWizard::on_select_tray(SimpleEvent& evt) {
|
||||
// when set selection of comboBox or select a checkbox/radio will enter
|
||||
|
||||
FilamentComboBoxList fcb_list = get_selected_filament_comboBox();
|
||||
if (fcb_list.empty()) {
|
||||
m_filament_preset = nullptr;
|
||||
m_filament_presets.clear();
|
||||
m_filaments_incompatible_tips->SetLabel("");
|
||||
m_filaments_incompatible_tips->Hide();
|
||||
recommend_input_value();
|
||||
return;
|
||||
}
|
||||
|
||||
auto first_preset = fcb_list[0]->GetComboBox()->get_selected_preset();
|
||||
if(!first_preset) {
|
||||
m_filament_preset = nullptr;
|
||||
recommend_input_value();
|
||||
return;
|
||||
// check compatibility
|
||||
bool has_high_temperature_filament = false;
|
||||
bool has_low_temperature_filament = false;
|
||||
wxString hight_temp_filament_type;
|
||||
wxString low_temp_filament_type;
|
||||
for (auto& fcb : fcb_list) {
|
||||
wxString filament_type = fcb->GetComboBox()->get_selected_preset()->alias;
|
||||
for (auto& item : filament_is_high_temp) {
|
||||
if (filament_type.Contains(item.first)) {
|
||||
if (item.second == true) {
|
||||
has_high_temperature_filament = true;
|
||||
hight_temp_filament_type = item.first;
|
||||
}
|
||||
else {
|
||||
has_low_temperature_filament = true;
|
||||
low_temp_filament_type = item.first;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool all_preset_same = true;
|
||||
for (auto fcb : fcb_list) {
|
||||
auto selected_preset = fcb->GetComboBox()->get_selected_preset();
|
||||
if (selected_preset && selected_preset->filament_id != first_preset->filament_id)
|
||||
all_preset_same = false;
|
||||
}
|
||||
if (!all_preset_same) {
|
||||
m_filament_preset = nullptr;
|
||||
wxString tips = wxString(_L("filaments incompatible, please select same type of material"));
|
||||
if (has_high_temperature_filament && has_low_temperature_filament) {
|
||||
m_filament_presets.clear();
|
||||
wxString tips = wxString::Format(_L("Unable to print %s and %s together. Filaments have large bed temperature difference"), hight_temp_filament_type, low_temp_filament_type);
|
||||
m_filaments_incompatible_tips->SetLabel(tips);
|
||||
m_filaments_incompatible_tips->Show();
|
||||
Layout();
|
||||
}
|
||||
else {
|
||||
m_filament_preset = const_cast<Preset*>(first_preset);
|
||||
for (auto& fcb : fcb_list) {
|
||||
m_filament_presets[fcb->get_tray_id()] = (const_cast<Preset*>(fcb->GetComboBox()->get_selected_preset()));
|
||||
}
|
||||
m_filaments_incompatible_tips->SetLabel("");
|
||||
m_filaments_incompatible_tips->Hide();
|
||||
Layout();
|
||||
|
@ -1618,7 +1651,7 @@ void CalibrationWizard::on_update_ams_filament(bool dialog)
|
|||
}
|
||||
|
||||
bool CalibrationWizard::recommend_input_value() {
|
||||
if (!m_filament_preset){
|
||||
if (m_filament_presets.empty()) {
|
||||
m_nozzle_temp->GetTextCtrl()->SetValue(wxEmptyString);
|
||||
m_bed_temp->GetTextCtrl()->SetValue(wxEmptyString);
|
||||
m_max_volumetric_speed->GetTextCtrl()->SetValue(wxEmptyString);
|
||||
|
@ -1627,50 +1660,53 @@ bool CalibrationWizard::recommend_input_value() {
|
|||
return false;
|
||||
}
|
||||
|
||||
PresetBundle* preset_bundle = wxGetApp().preset_bundle;
|
||||
int bed_temp_int = -1;
|
||||
bool bed_temp_compatible = true;
|
||||
PresetBundle* preset_bundle = wxGetApp().preset_bundle;
|
||||
if (preset_bundle) {
|
||||
// update nozzle temperature
|
||||
ConfigOption* opt_nozzle_temp = m_filament_preset->config.option("nozzle_temperature");
|
||||
if (opt_nozzle_temp) {
|
||||
ConfigOptionInts* opt_min_ints = dynamic_cast<ConfigOptionInts*>(opt_nozzle_temp);
|
||||
if (opt_min_ints) {
|
||||
wxString text_nozzle_temp = wxString::Format("%d", opt_min_ints->get_at(0));
|
||||
m_nozzle_temp->GetTextCtrl()->SetValue(text_nozzle_temp);
|
||||
for (auto& filament_preset : m_filament_presets) {
|
||||
// update nozzle temperature
|
||||
ConfigOption* opt_nozzle_temp = filament_preset.second->config.option("nozzle_temperature");
|
||||
if (opt_nozzle_temp) {
|
||||
ConfigOptionInts* opt_min_ints = dynamic_cast<ConfigOptionInts*>(opt_nozzle_temp);
|
||||
if (opt_min_ints) {
|
||||
wxString text_nozzle_temp = wxString::Format("%d", opt_min_ints->get_at(0));
|
||||
m_nozzle_temp->GetTextCtrl()->SetValue(text_nozzle_temp);
|
||||
}
|
||||
}
|
||||
}
|
||||
// update bed temperature
|
||||
bed_temp_int = get_bed_temp(&m_filament_preset->config);
|
||||
wxString bed_temp_text = wxString::Format("%d", bed_temp_int);
|
||||
m_bed_temp->GetTextCtrl()->SetValue(bed_temp_text);
|
||||
// update max flow speed
|
||||
ConfigOption* opt_flow_speed = m_filament_preset->config.option("filament_max_volumetric_speed");
|
||||
if (opt_flow_speed) {
|
||||
ConfigOptionFloats* opt_flow_floats = dynamic_cast<ConfigOptionFloats*>(opt_flow_speed);
|
||||
if (opt_flow_floats) {
|
||||
wxString flow_val_text = wxString::Format("%0.2f", opt_flow_floats->get_at(0));
|
||||
m_max_volumetric_speed->GetTextCtrl()->SetValue(flow_val_text);
|
||||
// update bed temperature
|
||||
bed_temp_int = get_bed_temp(&filament_preset.second->config);
|
||||
wxString bed_temp_text = wxString::Format("%d", bed_temp_int);
|
||||
m_bed_temp->GetTextCtrl()->SetValue(bed_temp_text);
|
||||
// update max flow speed
|
||||
ConfigOption* opt_flow_speed = filament_preset.second->config.option("filament_max_volumetric_speed");
|
||||
if (opt_flow_speed) {
|
||||
ConfigOptionFloats* opt_flow_floats = dynamic_cast<ConfigOptionFloats*>(opt_flow_speed);
|
||||
if (opt_flow_floats) {
|
||||
wxString flow_val_text = wxString::Format("%0.2f", opt_flow_floats->get_at(0));
|
||||
m_max_volumetric_speed->GetTextCtrl()->SetValue(flow_val_text);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// check compatibility
|
||||
if (m_bed_temp->GetTextCtrl()->GetValue().compare("0") == 0) {
|
||||
m_nozzle_temp->GetTextCtrl()->SetValue(wxEmptyString);
|
||||
m_bed_temp->GetTextCtrl()->SetValue(wxEmptyString);
|
||||
m_max_volumetric_speed->GetTextCtrl()->SetValue(wxEmptyString);
|
||||
wxString tips = wxString::Format(_L("%s does not support %s"), m_comboBox_bed_type->GetValue(), m_filament_preset->alias);
|
||||
m_bed_type_incompatible_tips->SetLabel(tips);
|
||||
m_bed_type_incompatible_tips->Update();
|
||||
m_bed_type_incompatible_tips->Show();
|
||||
Layout();
|
||||
return false;
|
||||
}
|
||||
else {
|
||||
m_bed_type_incompatible_tips->SetLabel("");
|
||||
m_bed_type_incompatible_tips->Hide();
|
||||
// check compatibility
|
||||
if (m_bed_temp->GetTextCtrl()->GetValue().compare("0") <= 0) {
|
||||
m_nozzle_temp->GetTextCtrl()->SetValue(wxEmptyString);
|
||||
m_bed_temp->GetTextCtrl()->SetValue(wxEmptyString);
|
||||
m_max_volumetric_speed->GetTextCtrl()->SetValue(wxEmptyString);
|
||||
wxString tips = wxString::Format(_L("%s is not compatible with %s"), m_comboBox_bed_type->GetValue(), filament_preset.second->alias);
|
||||
m_bed_type_incompatible_tips->SetLabel(tips);
|
||||
m_bed_type_incompatible_tips->Update();
|
||||
m_bed_type_incompatible_tips->Show();
|
||||
Layout();
|
||||
bed_temp_compatible = false;
|
||||
}
|
||||
else {
|
||||
m_bed_type_incompatible_tips->SetLabel("");
|
||||
m_bed_type_incompatible_tips->Hide();
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
return bed_temp_compatible;
|
||||
}
|
||||
|
||||
int CalibrationWizard::get_bed_temp(DynamicPrintConfig* config)
|
||||
|
@ -1683,16 +1719,16 @@ int CalibrationWizard::get_bed_temp(DynamicPrintConfig* config)
|
|||
return -1;
|
||||
}
|
||||
|
||||
bool CalibrationWizard::save_presets(const std::string& config_key, ConfigOption* config_value, const std::string& name)
|
||||
bool CalibrationWizard::save_presets(Preset* preset, const std::string& config_key, ConfigOption* config_value, const std::string& name)
|
||||
{
|
||||
auto filament_presets = &wxGetApp().preset_bundle->filaments;
|
||||
DynamicPrintConfig* filament_config = &m_filament_preset->config;
|
||||
DynamicPrintConfig* filament_config = &preset->config;
|
||||
|
||||
bool save_to_project = false;
|
||||
|
||||
filament_config->set_key_value(config_key, config_value);
|
||||
// Save the preset into Slic3r::data_dir / presets / section_name / preset_name.ini
|
||||
filament_presets->save_current_preset(name, false, save_to_project, m_filament_preset);
|
||||
filament_presets->save_current_preset(name, false, save_to_project, preset);
|
||||
|
||||
Preset* new_preset = filament_presets->find_preset(name, false, true);
|
||||
if (!new_preset) {
|
||||
|
@ -2088,7 +2124,7 @@ void PressureAdvanceWizard::sync_save_page_data() {
|
|||
grid_sizer->Add(left_title_sizer);
|
||||
grid_sizer->AddSpacer(COLUMN_GAP);
|
||||
|
||||
for (auto fcb : fcb_list) {
|
||||
for (auto& fcb : fcb_list) {
|
||||
bool result_failed = false;
|
||||
auto it_result = std::find_if(m_calib_results.begin(), m_calib_results.end(), [fcb](auto& calib_result) {
|
||||
return calib_result.tray_id == fcb->get_tray_id();
|
||||
|
@ -2135,7 +2171,7 @@ void PressureAdvanceWizard::sync_save_page_data() {
|
|||
static std::vector<PACalibResult> filtered_results;
|
||||
filtered_results.clear();
|
||||
for (auto history : m_calib_results_history) {
|
||||
if (history.setting_id == m_filament_preset->setting_id) {
|
||||
if (history.setting_id == m_filament_presets[fcb->get_tray_id()]->setting_id) {
|
||||
filtered_results.push_back(history);
|
||||
selections.push_back(history.name);
|
||||
}
|
||||
|
@ -2261,6 +2297,10 @@ bool PressureAdvanceWizard::start_calibration(std::vector<int> tray_ids)
|
|||
int bed_temp = -1;
|
||||
float max_volumetric_speed = -1;
|
||||
|
||||
if (m_nozzle_temp->GetTextCtrl()->GetValue().IsEmpty() ||
|
||||
m_bed_temp->GetTextCtrl()->GetValue().IsEmpty() ||
|
||||
m_max_volumetric_speed->GetTextCtrl()->GetValue().IsEmpty())
|
||||
return false;
|
||||
nozzle_temp = stoi(m_nozzle_temp->GetTextCtrl()->GetValue().ToStdString());
|
||||
bed_temp = stoi(m_bed_temp->GetTextCtrl()->GetValue().ToStdString());
|
||||
max_volumetric_speed = stof(m_max_volumetric_speed->GetTextCtrl()->GetValue().ToStdString());
|
||||
|
@ -2275,11 +2315,13 @@ bool PressureAdvanceWizard::start_calibration(std::vector<int> tray_ids)
|
|||
m_calib_results.clear();
|
||||
X1CCalibInfos calib_infos;
|
||||
for (int tray_id : tray_ids) {
|
||||
if (m_filament_presets.find(tray_id) == m_filament_presets.end())
|
||||
return false;
|
||||
X1CCalibInfos::X1CCalibInfo calib_info;
|
||||
calib_info.tray_id = tray_id;
|
||||
calib_info.nozzle_diameter = dynamic_cast<ConfigOptionFloats *>(m_printer_preset->config.option("nozzle_diameter"))->get_at(0);
|
||||
calib_info.filament_id = m_filament_preset->filament_id;
|
||||
calib_info.setting_id = m_filament_preset->setting_id;
|
||||
calib_info.filament_id = m_filament_presets[tray_id]->filament_id;
|
||||
calib_info.setting_id = m_filament_presets[tray_id]->setting_id;
|
||||
calib_info.bed_temp = bed_temp;
|
||||
calib_info.nozzle_temp = nozzle_temp;
|
||||
calib_info.max_volumetric_speed = max_volumetric_speed;
|
||||
|
@ -2297,7 +2339,7 @@ bool PressureAdvanceWizard::start_calibration(std::vector<int> tray_ids)
|
|||
return true;
|
||||
}
|
||||
else {
|
||||
curr_obj->command_start_extrusion_cali(tray_ids[0], nozzle_temp, bed_temp, max_volumetric_speed, m_filament_preset->setting_id);
|
||||
curr_obj->command_start_extrusion_cali(tray_ids[0], nozzle_temp, bed_temp, max_volumetric_speed, m_filament_presets.begin()->second->setting_id);
|
||||
show_page(get_curr_page()->get_next_page());
|
||||
return true;
|
||||
}
|
||||
|
@ -2381,8 +2423,8 @@ bool PressureAdvanceWizard::save_calibration_result()
|
|||
nozzle_temp = stoi(m_nozzle_temp->GetTextCtrl()->GetValue().ToStdString());
|
||||
bed_temp = stoi(m_bed_temp->GetTextCtrl()->GetValue().ToStdString());
|
||||
max_volumetric_speed = stof(m_max_volumetric_speed->GetTextCtrl()->GetValue().ToStdString());
|
||||
setting_id = m_filament_preset->setting_id;
|
||||
name = m_filament_preset->name;
|
||||
setting_id = m_filament_presets.begin()->second->setting_id;
|
||||
name = m_filament_presets.begin()->second->name;
|
||||
|
||||
// send command
|
||||
std::vector<int> tray_ids = get_selected_tray();
|
||||
|
@ -2467,8 +2509,8 @@ FlowRateWizard::FlowRateWizard(wxWindow* parent, wxWindowID id, const wxPoint& p
|
|||
}
|
||||
|
||||
void FlowRateWizard::set_save_name() {
|
||||
if (m_filament_preset) {
|
||||
m_save_name = m_filament_preset->alias + "-Calibrated";
|
||||
if (m_filament_presets.size() > 0) {
|
||||
m_save_name = m_filament_presets.begin()->second->alias + "-Calibrated";
|
||||
}
|
||||
else { m_save_name = ""; }
|
||||
if (!is_high_end_type(curr_obj)) {
|
||||
|
@ -2656,16 +2698,16 @@ void FlowRateWizard::create_low_end_pages() {
|
|||
show_page(m_curr_page);
|
||||
|
||||
m_optimal_block_coarse->Bind(wxEVT_COMBOBOX, [this](auto& e) {
|
||||
if (m_filament_preset) {
|
||||
DynamicPrintConfig& filament_config = m_filament_preset->config;
|
||||
if (m_filament_presets.begin()->second) {
|
||||
DynamicPrintConfig& filament_config = m_filament_presets.begin()->second->config;
|
||||
auto curr_flow_ratio = filament_config.option<ConfigOptionFloats>("filament_flow_ratio")->get_at(0);
|
||||
m_coarse_calc_result = curr_flow_ratio * (100.0f + stof(m_optimal_block_coarse->GetValue().ToStdString())) / 100.0f;
|
||||
m_coarse_calc_result_text->SetLabel(wxString::Format(_L("flow ratio : %s "), std::to_string(m_coarse_calc_result)));
|
||||
}
|
||||
});
|
||||
m_optimal_block_fine->Bind(wxEVT_COMBOBOX, [this](auto& e) {
|
||||
if (m_filament_preset) {
|
||||
DynamicPrintConfig& filament_config = m_filament_preset->config;
|
||||
if (m_filament_presets.begin()->second) {
|
||||
DynamicPrintConfig& filament_config = m_filament_presets.begin()->second->config;
|
||||
auto curr_flow_ratio = filament_config.option<ConfigOptionFloats>("filament_flow_ratio")->get_at(0);
|
||||
m_fine_calc_result = curr_flow_ratio * (100.0f + stof(m_optimal_block_fine->GetValue().ToStdString())) / 100.0f;
|
||||
m_fine_calc_result_text->SetLabel(wxString::Format(_L("flow ratio : %s "), std::to_string(m_fine_calc_result)));
|
||||
|
@ -2874,7 +2916,7 @@ void FlowRateWizard::sync_save_page_data() {
|
|||
grid_sizer->AddSpacer(COLUMN_GAP);
|
||||
|
||||
FilamentComboBoxList fcb_list = get_selected_filament_comboBox();
|
||||
for (auto fcb : fcb_list) {
|
||||
for (auto& fcb : fcb_list) {
|
||||
bool result_failed = false;
|
||||
auto it_result = std::find_if(m_calib_results.begin(), m_calib_results.end(), [fcb](auto& calib_result) {
|
||||
return calib_result.tray_id == fcb->get_tray_id();
|
||||
|
@ -2909,7 +2951,7 @@ void FlowRateWizard::sync_save_page_data() {
|
|||
save_name_input->GetTextCtrl()->Bind(wxEVT_TEXT_ENTER, [this, fcb, save_name_input](auto& e) {
|
||||
m_high_end_save_names[fcb->get_tray_id()] = save_name_input->GetTextCtrl()->GetValue().ToStdString();
|
||||
e.Skip();
|
||||
});
|
||||
});
|
||||
save_name_input->GetTextCtrl()->Bind(wxEVT_KILL_FOCUS, [this, fcb, save_name_input](auto& e) {
|
||||
m_high_end_save_names[fcb->get_tray_id()] = save_name_input->GetTextCtrl()->GetValue().ToStdString();
|
||||
});
|
||||
|
@ -2995,6 +3037,10 @@ bool FlowRateWizard::start_calibration(std::vector<int> tray_ids)
|
|||
int bed_temp = -1;
|
||||
float max_volumetric_speed = -1;
|
||||
|
||||
if (m_nozzle_temp->GetTextCtrl()->GetValue().IsEmpty() ||
|
||||
m_bed_temp->GetTextCtrl()->GetValue().IsEmpty() ||
|
||||
m_max_volumetric_speed->GetTextCtrl()->GetValue().IsEmpty())
|
||||
return false;
|
||||
nozzle_temp = stoi(m_nozzle_temp->GetTextCtrl()->GetValue().ToStdString());
|
||||
bed_temp = stoi(m_bed_temp->GetTextCtrl()->GetValue().ToStdString());
|
||||
max_volumetric_speed = stof(m_max_volumetric_speed->GetTextCtrl()->GetValue().ToStdString());
|
||||
|
@ -3009,15 +3055,17 @@ bool FlowRateWizard::start_calibration(std::vector<int> tray_ids)
|
|||
m_calib_results.clear();
|
||||
X1CCalibInfos calib_infos;
|
||||
for (int tray_id : tray_ids) {
|
||||
if (m_filament_presets.find(tray_id) == m_filament_presets.end())
|
||||
return false;
|
||||
X1CCalibInfos::X1CCalibInfo calib_info;
|
||||
calib_info.tray_id = tray_id;
|
||||
calib_info.nozzle_diameter = dynamic_cast<ConfigOptionFloats *>(m_printer_preset->config.option("nozzle_diameter"))->get_at(0);
|
||||
calib_info.filament_id = m_filament_preset->filament_id;
|
||||
calib_info.setting_id = m_filament_preset->setting_id;
|
||||
calib_info.filament_id = m_filament_presets.at(tray_id)->filament_id;
|
||||
calib_info.setting_id = m_filament_presets.at(tray_id)->setting_id;
|
||||
calib_info.bed_temp = bed_temp;
|
||||
calib_info.nozzle_temp = nozzle_temp;
|
||||
calib_info.max_volumetric_speed = max_volumetric_speed;
|
||||
calib_info.flow_rate = m_filament_preset->config.option<ConfigOptionFloats>("filament_flow_ratio")->get_at(0);
|
||||
calib_info.flow_rate = m_filament_presets.at(tray_id)->config.option<ConfigOptionFloats>("filament_flow_ratio")->get_at(0);
|
||||
calib_infos.calib_datas.push_back(calib_info);
|
||||
}
|
||||
std::string error_message;
|
||||
|
@ -3052,7 +3100,7 @@ bool FlowRateWizard::start_calibration(std::vector<int> tray_ids)
|
|||
calib_info.process_bar = m_send_progress_bar;
|
||||
calib_info.bed_type = BedType(m_comboBox_bed_type->GetSelection() + btDefault + 1);
|
||||
calib_info.printer_prest = m_printer_preset;
|
||||
calib_info.filament_prest = m_filament_preset;
|
||||
calib_info.filament_prest = m_filament_presets.begin()->second;
|
||||
calib_info.print_prest = m_print_preset;
|
||||
|
||||
std::string error_message;
|
||||
|
@ -3074,12 +3122,12 @@ bool FlowRateWizard::start_calibration(std::vector<int> tray_ids)
|
|||
bool FlowRateWizard::save_calibration_result()
|
||||
{
|
||||
if (is_high_end_type(curr_obj)) {
|
||||
DynamicPrintConfig& filament_config = m_filament_preset->config;
|
||||
for (int i = 0; i < m_calib_results.size(); i++) {
|
||||
DynamicPrintConfig& filament_config = m_filament_presets[m_calib_results[i].tray_id]->config; //todo access overflow
|
||||
// todo if names are same, will be covered
|
||||
auto it = m_high_end_save_names.find(m_calib_results[i].tray_id);
|
||||
if (it != m_high_end_save_names.end() && !it->second.empty()) {
|
||||
save_presets("filament_flow_ratio", new ConfigOptionFloats{ m_calib_results[i].flow_ratio }, it->second);
|
||||
save_presets(m_filament_presets.at(m_calib_results[i].tray_id), "filament_flow_ratio", new ConfigOptionFloats{ m_calib_results[i].flow_ratio }, it->second);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -3115,8 +3163,7 @@ bool FlowRateWizard::save_calibration_result()
|
|||
msg_dlg.ShowModal();
|
||||
return false;
|
||||
}
|
||||
DynamicPrintConfig& filament_config = m_filament_preset->config;
|
||||
save_presets("filament_flow_ratio", new ConfigOptionFloats{ result_value }, m_save_name);
|
||||
save_presets(m_filament_presets.begin()->second, "filament_flow_ratio", new ConfigOptionFloats{ result_value }, m_save_name);
|
||||
reset_reuse_panels();
|
||||
return true;
|
||||
}
|
||||
|
@ -3144,6 +3191,7 @@ void FlowRateWizard::reset_print_panel_to_page(CalibrationWizardPage* page, wxBo
|
|||
void FlowRateWizard::reset_send_progress_to_page(CalibrationWizardPage* page, wxBoxSizer* sizer)
|
||||
{
|
||||
m_send_progress_panel->Reparent(page);
|
||||
sizer->Insert(1, m_send_progress_panel, 0, wxALIGN_CENTER, 0);
|
||||
}
|
||||
|
||||
void FlowRateWizard::on_fine_tune(wxCommandEvent& e) {
|
||||
|
@ -3153,7 +3201,7 @@ void FlowRateWizard::on_fine_tune(wxCommandEvent& e) {
|
|||
return;
|
||||
}
|
||||
|
||||
DynamicPrintConfig& filament_config = m_filament_preset->config;
|
||||
DynamicPrintConfig& filament_config = m_filament_presets.begin()->second->config;
|
||||
filament_config.set_key_value("filament_flow_ratio", new ConfigOptionFloats{ m_coarse_calc_result });
|
||||
|
||||
reset_send_progress_to_page(m_low_end_page3, m_low_end_page3->get_btn_hsizer());
|
||||
|
@ -3187,8 +3235,8 @@ MaxVolumetricSpeedWizard::MaxVolumetricSpeedWizard(wxWindow* parent, wxWindowID
|
|||
}
|
||||
|
||||
void MaxVolumetricSpeedWizard::set_save_name() {
|
||||
if (m_filament_preset) {
|
||||
m_save_name = m_filament_preset->alias + "-Calibrated";
|
||||
if (m_filament_presets.begin()->second) {
|
||||
m_save_name = m_filament_presets.begin()->second->alias + "-Calibrated";
|
||||
}
|
||||
else { m_save_name = ""; }
|
||||
m_save_name_input->GetTextCtrl()->SetValue(m_save_name);
|
||||
|
@ -3369,7 +3417,7 @@ bool MaxVolumetricSpeedWizard::start_calibration(std::vector<int> tray_ids)
|
|||
calib_info.process_bar = m_send_progress_bar;
|
||||
calib_info.bed_type = BedType(m_comboBox_bed_type->GetSelection() + btDefault + 1);
|
||||
calib_info.printer_prest = m_printer_preset;
|
||||
calib_info.filament_prest = m_filament_preset;
|
||||
calib_info.filament_prest = m_filament_presets.begin()->second;
|
||||
calib_info.print_prest = m_print_preset;
|
||||
|
||||
std::string error_message;
|
||||
|
@ -3398,7 +3446,7 @@ bool MaxVolumetricSpeedWizard::save_calibration_result()
|
|||
msg_dlg.ShowModal();
|
||||
return false;
|
||||
}
|
||||
save_presets("filament_max_volumetric_speed", new ConfigOptionFloats{ max_volumetric_speed }, m_save_name);
|
||||
save_presets(m_filament_presets.begin()->second, "filament_max_volumetric_speed", new ConfigOptionFloats{ max_volumetric_speed }, m_save_name);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -3431,8 +3479,8 @@ TemperatureWizard::TemperatureWizard(wxWindow* parent, wxWindowID id, const wxPo
|
|||
}
|
||||
|
||||
void TemperatureWizard::set_save_name() {
|
||||
if (m_filament_preset) {
|
||||
m_save_name = m_filament_preset->alias + "-Calibrated";
|
||||
if (m_filament_presets.begin()->second) {
|
||||
m_save_name = m_filament_presets.begin()->second->alias + "-Calibrated";
|
||||
}
|
||||
else { m_save_name = ""; }
|
||||
m_save_name_input->GetTextCtrl()->SetValue(m_save_name);
|
||||
|
@ -3603,7 +3651,7 @@ bool TemperatureWizard::start_calibration(std::vector<int> tray_ids)
|
|||
calib_info.process_bar = m_send_progress_bar;
|
||||
calib_info.bed_type = BedType(m_comboBox_bed_type->GetSelection() + btDefault + 1);
|
||||
calib_info.printer_prest = m_printer_preset;
|
||||
calib_info.filament_prest = m_filament_preset;
|
||||
calib_info.filament_prest = m_filament_presets.begin()->second;
|
||||
calib_info.print_prest = m_print_preset;
|
||||
|
||||
std::string error_message;
|
||||
|
@ -3631,7 +3679,7 @@ bool TemperatureWizard::save_calibration_result()
|
|||
msg_dlg.ShowModal();
|
||||
return false;
|
||||
}
|
||||
save_presets("nozzle_temperature", new ConfigOptionInts(1, temp), m_save_name);
|
||||
save_presets(m_filament_presets.begin()->second, "nozzle_temperature", new ConfigOptionInts(1, temp), m_save_name);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -3643,7 +3691,7 @@ bool TemperatureWizard::recommend_input_value()
|
|||
return false;
|
||||
}
|
||||
else {
|
||||
wxString filament_name = m_filament_preset->alias;
|
||||
wxString filament_name = m_filament_presets.begin()->second->alias;
|
||||
|
||||
int start, end;
|
||||
if (filament_name.Contains("ABS") || filament_name.Contains("ASA")) {//todo supplement
|
||||
|
@ -3695,8 +3743,8 @@ RetractionWizard::RetractionWizard(wxWindow* parent, wxWindowID id, const wxPoin
|
|||
}
|
||||
|
||||
void RetractionWizard::set_save_name() {
|
||||
if (m_filament_preset) {
|
||||
m_save_name = m_filament_preset->alias + "-Calibrated";
|
||||
if (m_filament_presets.begin()->second) {
|
||||
m_save_name = m_filament_presets.begin()->second->alias + "-Calibrated";
|
||||
}
|
||||
else { m_save_name = ""; }
|
||||
m_save_name_input->GetTextCtrl()->SetValue(m_save_name);
|
||||
|
@ -3866,7 +3914,7 @@ bool RetractionWizard::start_calibration(std::vector<int> tray_ids)
|
|||
calib_info.process_bar = m_send_progress_bar;
|
||||
calib_info.bed_type = BedType(m_comboBox_bed_type->GetSelection() + btDefault + 1);
|
||||
calib_info.printer_prest = m_printer_preset;
|
||||
calib_info.filament_prest = m_filament_preset;
|
||||
calib_info.filament_prest = m_filament_presets.begin()->second;
|
||||
calib_info.print_prest = m_print_preset;
|
||||
|
||||
std::string error_message;
|
||||
|
@ -3894,7 +3942,7 @@ bool RetractionWizard::save_calibration_result()
|
|||
msg_dlg.ShowModal();
|
||||
return false;
|
||||
}
|
||||
save_presets("retraction_length", new ConfigOptionFloats{ length }, m_save_name);
|
||||
save_presets(m_filament_presets.begin()->second, "retraction_length", new ConfigOptionFloats{ length }, m_save_name);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -41,7 +41,7 @@ public:
|
|||
void SetRadioBox(wxRadioButton* btn) { m_radioBox = btn; }
|
||||
virtual bool Show(bool show = true);
|
||||
virtual bool Enable(bool enable);
|
||||
virtual void SetValue(bool value);
|
||||
virtual void SetValue(bool value, bool send_event = true);
|
||||
|
||||
protected:
|
||||
int m_tray_id;
|
||||
|
@ -129,7 +129,8 @@ protected:
|
|||
ComboBox* m_comboBox_bed_type;
|
||||
ComboBox* m_comboBox_process;
|
||||
Preset* m_printer_preset{nullptr};
|
||||
Preset* m_filament_preset{ nullptr };
|
||||
//Preset* m_filament_preset{ nullptr };
|
||||
std::map<int, Preset*> m_filament_presets;
|
||||
Preset* m_print_preset{ nullptr };
|
||||
wxStaticText* m_from_text;
|
||||
wxStaticText* m_to_text;
|
||||
|
@ -190,7 +191,7 @@ protected:
|
|||
void reset_printing_values();
|
||||
|
||||
// save
|
||||
bool save_presets(const std::string& config_key, ConfigOption* config_value, const std::string& name);
|
||||
bool save_presets(Preset* preset, const std::string& config_key, ConfigOption* config_value, const std::string& name);
|
||||
|
||||
// event handlers
|
||||
void on_select_nozzle(wxCommandEvent& evt);
|
||||
|
|
Loading…
Reference in New Issue