mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-31 04:31:15 -06:00 
			
		
		
		
	FIX: fix bugs of calibration
Change-Id: I2d0f57105bdda2abc3fc7b218122d4df5a3161da
This commit is contained in:
		
							parent
							
								
									32892514ff
								
							
						
					
					
						commit
						28b56c2efb
					
				
					 8 changed files with 116 additions and 57 deletions
				
			
		|  | @ -51,7 +51,7 @@ CalibrationWizard::~CalibrationWizard() | |||
| 
 | ||||
| void CalibrationWizard::on_cali_job_finished(wxCommandEvent& event) | ||||
| { | ||||
|     this->on_cali_job_finished(); | ||||
|     this->on_cali_job_finished(event.GetString()); | ||||
|     event.Skip(); | ||||
| } | ||||
| 
 | ||||
|  | @ -198,6 +198,29 @@ bool CalibrationWizard::save_preset(const std::string &old_preset_name, const st | |||
|     return true; | ||||
| } | ||||
| 
 | ||||
| void CalibrationWizard::cache_preset_info(MachineObject* obj, float nozzle_dia) | ||||
| { | ||||
|     if (!obj) return; | ||||
| 
 | ||||
|     CalibrationPresetPage* preset_page = (static_cast<CalibrationPresetPage*>(preset_step->page)); | ||||
| 
 | ||||
|     std::map<int, Preset*> selected_filaments = preset_page->get_selected_filaments(); | ||||
| 
 | ||||
|     obj->selected_cali_preset.clear(); | ||||
|     for (auto& item : selected_filaments) { | ||||
|         CaliPresetInfo result; | ||||
|         result.tray_id = item.first; | ||||
|         result.nozzle_diameter = nozzle_dia; | ||||
|         result.filament_id = item.second->filament_id; | ||||
|         result.setting_id = item.second->setting_id; | ||||
|         result.name = item.second->name; | ||||
|         obj->selected_cali_preset.push_back(result); | ||||
|     } | ||||
| 
 | ||||
|     CaliPresetStage stage; | ||||
|     preset_page->get_cali_stage(stage, obj->cache_flow_ratio); | ||||
| } | ||||
| 
 | ||||
| void CalibrationWizard::on_cali_go_home() | ||||
| { | ||||
|     // can go home? confirm to continue
 | ||||
|  | @ -370,23 +393,14 @@ void PressureAdvanceWizard::on_cali_start() | |||
|     std::string setting_id; | ||||
|     BedType plate_type = BedType::btDefault; | ||||
| 
 | ||||
|     // save preset info to machine object
 | ||||
|     CalibrationPresetPage* preset_page = (static_cast<CalibrationPresetPage*>(preset_step->page)); | ||||
| 
 | ||||
|     std::map<int, Preset*> selected_filaments = preset_page->get_selected_filaments(); | ||||
| 
 | ||||
|     curr_obj->selected_cali_preset.clear(); | ||||
|     for (auto& item : selected_filaments) { | ||||
|         CaliPresetInfo result; | ||||
|         result.tray_id          = item.first; | ||||
|         result.nozzle_diameter  = nozzle_dia; | ||||
|         result.filament_id      = item.second->filament_id; | ||||
|         result.setting_id       = item.second->setting_id; | ||||
|         result.name             = item.second->name; | ||||
|         curr_obj->selected_cali_preset.push_back(result); | ||||
|     } | ||||
| 
 | ||||
|     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) { | ||||
|         BOOST_LOG_TRIVIAL(error) << "CaliPreset: get preset info, nozzle and plate type error"; | ||||
|         return; | ||||
|  | @ -667,6 +681,8 @@ void FlowRateWizard::on_cali_start(CaliPresetStage stage, float cali_value) | |||
| 
 | ||||
|     std::map<int, Preset*> selected_filaments = preset_page->get_selected_filaments(); | ||||
| 
 | ||||
|     CalibrationWizard::cache_preset_info(curr_obj, nozzle_dia); | ||||
| 
 | ||||
|     if (m_cali_method == CalibrationMethod::CALI_METHOD_AUTO) { | ||||
|         X1CCalibInfos calib_infos; | ||||
|         for (auto& item : selected_filaments) { | ||||
|  | @ -894,11 +910,26 @@ void FlowRateWizard::set_cali_method(CalibrationMethod method) | |||
|     CalibrationWizard::set_cali_method(method); | ||||
| } | ||||
| 
 | ||||
| void FlowRateWizard::on_cali_job_finished() | ||||
| void FlowRateWizard::on_cali_job_finished(wxString evt_data) | ||||
| { | ||||
|     int       cali_stage = 0; | ||||
|     CalibMode obj_cali_mode = CalibUtils::get_calib_mode_by_name(evt_data.ToStdString(), cali_stage); | ||||
| 
 | ||||
|     if (obj_cali_mode == m_mode) { | ||||
|         if (cali_stage == 1) { | ||||
|             if (m_curr_step != cali_coarse_step) | ||||
|                 show_step(cali_coarse_step); | ||||
|         } | ||||
|         else if (cali_stage == 2) { | ||||
|             if (m_curr_step != cali_fine_step) { | ||||
|                 show_step(cali_fine_step); | ||||
|             } | ||||
|         } | ||||
|         else | ||||
|             show_step(cali_coarse_step); | ||||
|     } | ||||
|     // change ui, hide
 | ||||
|     static_cast<CalibrationPresetPage*>(preset_step->page)->on_cali_finished_job(); | ||||
|   | ||||
|     show_step(m_curr_step->next); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
|  | @ -979,6 +1010,8 @@ void MaxVolumetricSpeedWizard::on_cali_start() | |||
| 
 | ||||
|     preset_page->get_preset_info(nozzle_dia, plate_type); | ||||
| 
 | ||||
|     CalibrationWizard::cache_preset_info(curr_obj, nozzle_dia); | ||||
| 
 | ||||
|     wxArrayString values = preset_page->get_custom_range_values(); | ||||
|     Calib_Params  params; | ||||
|     if (values.size() != 3) { | ||||
|  | @ -1047,12 +1080,20 @@ void MaxVolumetricSpeedWizard::on_cali_save() | |||
|     } | ||||
| } | ||||
| 
 | ||||
| void MaxVolumetricSpeedWizard::on_cali_job_finished() | ||||
| void MaxVolumetricSpeedWizard::on_cali_job_finished(wxString evt_data) | ||||
| { | ||||
|     static_cast<CalibrationPresetPage*>(preset_step->page)->on_cali_finished_job(); | ||||
|     int       cali_stage = 0; | ||||
|     CalibMode obj_cali_mode = CalibUtils::get_calib_mode_by_name(evt_data.ToStdString(), cali_stage); | ||||
| 
 | ||||
|     show_step(m_curr_step->next); | ||||
|     if (obj_cali_mode == m_mode) { | ||||
|         if (m_curr_step != cali_step) { | ||||
|             show_step(cali_step); | ||||
|         } | ||||
|     } | ||||
|     // change ui, hide
 | ||||
|     static_cast<CalibrationPresetPage*>(preset_step->page)->on_cali_finished_job(); | ||||
| } | ||||
| 
 | ||||
| void MaxVolumetricSpeedWizard::on_device_connected(MachineObject *obj) | ||||
| { | ||||
|     CalibrationWizard::on_device_connected(obj); | ||||
|  |  | |||
|  | @ -42,7 +42,7 @@ public: | |||
| 
 | ||||
|     void on_cali_job_finished(wxCommandEvent& event); | ||||
| 
 | ||||
|     virtual void on_cali_job_finished() {} | ||||
|     virtual void on_cali_job_finished(wxString evt_data) {} | ||||
| 
 | ||||
|     CalibrationWizardPageStep* get_curr_step() { return m_curr_step; } | ||||
| 
 | ||||
|  | @ -62,6 +62,8 @@ public: | |||
| 
 | ||||
|     bool save_preset(const std::string &old_preset_name, const std::string &new_preset_name, const std::map<std::string, ConfigOption *> &key_values, std::string& message); | ||||
| 
 | ||||
|     virtual void cache_preset_info(MachineObject* obj, float nozzle_dia); | ||||
| 
 | ||||
| protected: | ||||
|     void on_cali_go_home(); | ||||
| 
 | ||||
|  | @ -121,7 +123,7 @@ public: | |||
| 
 | ||||
|     void set_cali_method(CalibrationMethod method) override; | ||||
| 
 | ||||
|     void on_cali_job_finished() override; | ||||
|     void on_cali_job_finished(wxString evt_data) override; | ||||
| 
 | ||||
| protected: | ||||
|     void create_pages(); | ||||
|  | @ -142,7 +144,7 @@ public: | |||
|     MaxVolumetricSpeedWizard(wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxTAB_TRAVERSAL); | ||||
|     ~MaxVolumetricSpeedWizard() {}; | ||||
| 
 | ||||
|     void on_cali_job_finished() override; | ||||
|     void on_cali_job_finished(wxString evt_data) override; | ||||
| 
 | ||||
| protected: | ||||
|     void create_pages(); | ||||
|  |  | |||
|  | @ -51,7 +51,7 @@ void CaliPresetCaliStagePanel::create_panel(wxWindow* parent) | |||
|     flow_ratio_input = new TextInput(input_panel, wxEmptyString, "", "", wxDefaultPosition, CALIBRATION_FROM_TO_INPUT_SIZE); | ||||
|     flow_ratio_input->GetTextCtrl()->SetValidator(wxTextValidator(wxFILTER_NUMERIC)); | ||||
|     float default_flow_ratio = 1.0f; | ||||
|     auto flow_ratio_str = wxString::Format("%.3f", default_flow_ratio); | ||||
|     auto flow_ratio_str = wxString::Format("%.2f", default_flow_ratio); | ||||
|     flow_ratio_input->GetTextCtrl()->SetValue(flow_ratio_str); | ||||
|     input_sizer->AddSpacer(FromDIP(18)); | ||||
|     input_sizer->Add(flow_ratio_input, 0, wxTOP, FromDIP(10)); | ||||
|  | @ -73,7 +73,7 @@ void CaliPresetCaliStagePanel::create_panel(wxWindow* parent) | |||
|     flow_ratio_input->GetTextCtrl()->Bind(wxEVT_TEXT_ENTER, [this](auto& e) { | ||||
|         float flow_ratio = 0.0f; | ||||
|         if (!CalibUtils::validate_input_flow_ratio(flow_ratio_input->GetTextCtrl()->GetValue(), &flow_ratio)) { | ||||
|             MessageDialog msg_dlg(nullptr, _L("Please input a valid value (0.0 < flow ratio < 0.2)"), wxEmptyString, wxICON_WARNING | wxOK); | ||||
|             MessageDialog msg_dlg(nullptr, _L("Please input a valid value (0.0 < flow ratio < 2.0)"), wxEmptyString, wxICON_WARNING | wxOK); | ||||
|             msg_dlg.ShowModal(); | ||||
|         } | ||||
|         auto flow_ratio_str = wxString::Format("%.3f", flow_ratio); | ||||
|  | @ -83,7 +83,7 @@ void CaliPresetCaliStagePanel::create_panel(wxWindow* parent) | |||
|     flow_ratio_input->GetTextCtrl()->Bind(wxEVT_KILL_FOCUS, [this](auto& e) { | ||||
|         float flow_ratio = 0.0f; | ||||
|         if (!CalibUtils::validate_input_flow_ratio(flow_ratio_input->GetTextCtrl()->GetValue(), &flow_ratio)) { | ||||
|             MessageDialog msg_dlg(nullptr, _L("Please input a valid value (0.0 < flow ratio < 0.2)"), wxEmptyString, wxICON_WARNING | wxOK); | ||||
|             MessageDialog msg_dlg(nullptr, _L("Please input a valid value (0.0 < flow ratio < 2.0)"), wxEmptyString, wxICON_WARNING | wxOK); | ||||
|             msg_dlg.ShowModal(); | ||||
|         } | ||||
|         auto flow_ratio_str = wxString::Format("%.3f", flow_ratio); | ||||
|  | @ -499,6 +499,8 @@ void CalibrationPresetPage::create_filament_list_panel(wxWindow* parent) | |||
|         filament_comboBox_sizer->Add(fcb, 0, wxALIGN_CENTER); | ||||
|         filament_fgSizer->Add(filament_comboBox_sizer, 0); | ||||
| 
 | ||||
|         fcb->Bind(EVT_CALI_TRAY_CHANGED, &CalibrationPresetPage::on_select_tray, this); | ||||
| 
 | ||||
|         radio_btn->Bind(wxEVT_RADIOBUTTON, [this](wxCommandEvent& evt) { | ||||
|             wxCommandEvent event(EVT_CALI_TRAY_CHANGED); | ||||
|             event.SetEventObject(this); | ||||
|  | @ -533,6 +535,8 @@ void CalibrationPresetPage::create_ext_spool_panel(wxWindow* parent) | |||
|     m_virtual_tray_comboBox->set_select_mode(CalibrationFilamentMode::CALI_MODEL_SINGLE); | ||||
|     radio_btn->SetValue(true); | ||||
| 
 | ||||
|     m_virtual_tray_comboBox->Bind(EVT_CALI_TRAY_CHANGED, &CalibrationPresetPage::on_select_tray, this); | ||||
| 
 | ||||
|     panel_sizer->Add(radio_btn, 0, wxALIGN_CENTER); | ||||
|     panel_sizer->Add(check_box, 0, wxALIGN_CENTER); | ||||
|     panel_sizer->Add(m_virtual_tray_comboBox, 0, wxALIGN_CENTER | wxRIGHT, FromDIP(8)); | ||||
|  | @ -785,7 +789,7 @@ void CalibrationPresetPage::on_recommend_input_value() | |||
|         Preset *selected_filament_preset = selected_filaments.begin()->second; | ||||
|         if (selected_filament_preset) { | ||||
|             float flow_ratio = selected_filament_preset->config.option<ConfigOptionFloats>("filament_flow_ratio")->get_at(0); | ||||
|             m_cali_stage_panel->set_flow_ratio_value(float_to_string(flow_ratio)); | ||||
|             m_cali_stage_panel->set_flow_ratio_value(wxString::Format("%.2f", flow_ratio)); | ||||
|         } | ||||
|     } | ||||
|     else if (m_cali_mode == CalibMode::Calib_Vol_speed_Tower) { | ||||
|  | @ -794,9 +798,9 @@ void CalibrationPresetPage::on_recommend_input_value() | |||
|             double max_volumetric_speed = selected_filament_preset->config.option<ConfigOptionFloats>("filament_max_volumetric_speed")->get_at(0); | ||||
|             if (m_custom_range_panel) { | ||||
|                 wxArrayString values; | ||||
|                 values.push_back(float_to_string(max_volumetric_speed - 5)); | ||||
|                 values.push_back(float_to_string(max_volumetric_speed + 5)); | ||||
|                 values.push_back("0.5"); | ||||
|                 values.push_back(wxString::Format("%.2f", max_volumetric_speed - 5)); | ||||
|                 values.push_back(wxString::Format("%.2f", max_volumetric_speed + 5)); | ||||
|                 values.push_back(wxString::Format("%.2f", 0.5f)); | ||||
|                 m_custom_range_panel->set_values(values); | ||||
|             } | ||||
|         } | ||||
|  | @ -818,11 +822,12 @@ void CalibrationPresetPage::check_filament_compatible() | |||
|         m_tips_panel->set_params(0, 0, 0.0f); | ||||
|         if (!error_tips.empty()) { | ||||
|             wxString tips = from_u8(error_tips); | ||||
|             m_warning_panel->set_warning(tips); | ||||
|         } else { | ||||
|             wxString tips = wxString::Format(_L("%s is not compatible with %s"), m_comboBox_bed_type->GetValue(), incompatiable_filament_name); | ||||
|             m_warning_panel->set_warning(tips); | ||||
|             m_warning_panel->Show(); | ||||
|         } | ||||
|         m_warning_panel->Show(); | ||||
|     } else { | ||||
|         m_tips_panel->set_params(0, bed_temp, 0); | ||||
|         m_warning_panel->set_warning(""); | ||||
|  | @ -917,6 +922,7 @@ void CalibrationPresetPage::show_status(CaliPresetPageStatus status) | |||
|     else { | ||||
|         m_sending_panel->Hide(); | ||||
|     } | ||||
|     Layout(); | ||||
| } | ||||
| 
 | ||||
| float CalibrationPresetPage::get_nozzle_value() | ||||
|  | @ -1154,12 +1160,12 @@ void CalibrationPresetPage::select_default_compatible_filament() | |||
|         return; | ||||
| 
 | ||||
|     if (m_ams_radiobox->GetValue()) { | ||||
|         std::vector<Preset*> multi_select_filaments; | ||||
|         for (auto &fcb : m_filament_comboBox_list) { | ||||
|             if (!fcb->GetRadioBox()->IsEnabled()) | ||||
|                 continue; | ||||
| 
 | ||||
|             Preset* preset = const_cast<Preset *>(fcb->GetComboBox()->get_selected_preset()); | ||||
|             std::vector<Preset *> multi_select_filaments; | ||||
|             if (m_cali_filament_mode == CalibrationFilamentMode::CALI_MODEL_SINGLE) { | ||||
|                 if (is_filaments_compatiable({preset})) { | ||||
|                     fcb->GetRadioBox()->SetValue(true); | ||||
|  |  | |||
|  | @ -344,25 +344,18 @@ void CaliPASaveManualPanel::create_panel(wxWindow* parent) | |||
| 
 | ||||
|     m_top_sizer->AddSpacer(FromDIP(20)); | ||||
| 
 | ||||
|     auto value_sizer = new wxBoxSizer(wxHORIZONTAL); | ||||
|     auto k_value_text = new wxStaticText(parent, wxID_ANY, _L("Factor K"), wxDefaultPosition, wxDefaultSize, 0); | ||||
|     k_value_text->Wrap(-1); | ||||
|     k_value_text->SetFont(::Label::Head_14); | ||||
|     k_value_text->Wrap(-1); | ||||
|     auto n_value_text = new wxStaticText(parent, wxID_ANY, _L("Factor N"), wxDefaultPosition, wxDefaultSize, 0); | ||||
|     n_value_text->Wrap(-1); | ||||
|     n_value_text->SetFont(::Label::Head_14); | ||||
|     n_value_text->Wrap(-1); | ||||
|     n_value_text->Hide(); | ||||
|     m_k_val = new TextInput(parent, wxEmptyString, "", "", wxDefaultPosition, CALIBRATION_OPTIMAL_INPUT_SIZE, 0); | ||||
|     m_n_val = new TextInput(parent, wxEmptyString, "", "", wxDefaultPosition, CALIBRATION_OPTIMAL_INPUT_SIZE, 0); | ||||
|     n_value_text->Hide(); | ||||
|     m_n_val->Hide(); | ||||
|     value_sizer->Add(k_value_text, 0, wxALIGN_CENTER_VERTICAL, 0); | ||||
|     value_sizer->AddSpacer(FromDIP(10)); | ||||
|     value_sizer->Add(m_k_val, 0); | ||||
|     value_sizer->AddSpacer(FromDIP(50)); | ||||
|     value_sizer->Add(n_value_text, 0, wxALIGN_CENTER_VERTICAL, 0); | ||||
|     value_sizer->AddSpacer(FromDIP(10)); | ||||
|     value_sizer->Add(m_n_val, 0); | ||||
|     m_top_sizer->Add(value_sizer, 0, wxALIGN_CENTER); | ||||
|     m_top_sizer->Add(k_value_text, 0); | ||||
|     m_top_sizer->Add(m_k_val, 0); | ||||
| 
 | ||||
|     m_top_sizer->AddSpacer(FromDIP(20)); | ||||
| 
 | ||||
|  | @ -373,6 +366,8 @@ void CaliPASaveManualPanel::create_panel(wxWindow* parent) | |||
|     m_save_name_input = new TextInput(parent, "", "", "", wxDefaultPosition, { CALIBRATION_TEXT_MAX_LENGTH, FromDIP(24) }, 0); | ||||
|     m_top_sizer->Add(m_save_name_input, 0, 0, 0); | ||||
| 
 | ||||
|     m_top_sizer->AddSpacer(FromDIP(20)); | ||||
| 
 | ||||
|     Bind(wxEVT_LEFT_DOWN, [this](auto& e) { | ||||
|         SetFocusIgnoringChildren(); | ||||
|         }); | ||||
|  | @ -554,13 +549,14 @@ void CaliSavePresetValuePanel::create_panel(wxWindow *parent) | |||
| 
 | ||||
|     m_top_sizer->Add(m_record_picture, 0, wxALIGN_CENTER); | ||||
|     m_top_sizer->AddSpacer(FromDIP(20)); | ||||
|     m_top_sizer->Add(m_value_title, 0, wxALIGN_CENTER); | ||||
|     m_top_sizer->Add(m_value_title, 0); | ||||
|     m_top_sizer->AddSpacer(FromDIP(10)); | ||||
|     m_top_sizer->Add(m_input_value, 0, wxALIGN_CENTER); | ||||
|     m_top_sizer->Add(m_input_value, 0); | ||||
|     m_top_sizer->AddSpacer(FromDIP(20)); | ||||
|     m_top_sizer->Add(m_save_name_title, 0, wxALIGN_CENTER); | ||||
|     m_top_sizer->Add(m_save_name_title, 0); | ||||
|     m_top_sizer->AddSpacer(FromDIP(10)); | ||||
|     m_top_sizer->Add(m_input_name, 0, wxALIGN_CENTER); | ||||
|     m_top_sizer->Add(m_input_name, 0); | ||||
|     m_top_sizer->AddSpacer(FromDIP(20)); | ||||
| } | ||||
| 
 | ||||
| void CaliSavePresetValuePanel::set_img(const std::string& bmp_name_in) | ||||
|  | @ -624,9 +620,9 @@ void CalibrationPASavePage::create_page(wxWindow* parent) | |||
|     m_auto_panel = new CaliPASaveAutoPanel(parent, wxID_ANY); | ||||
|     m_p1p_panel = new CaliPASaveP1PPanel(parent, wxID_ANY); | ||||
| 
 | ||||
|     m_top_sizer->Add(m_manual_panel, 0); | ||||
|     m_top_sizer->Add(m_auto_panel, 0); | ||||
|     m_top_sizer->Add(m_p1p_panel, 0); | ||||
|     m_top_sizer->Add(m_manual_panel, 0, wxEXPAND); | ||||
|     m_top_sizer->Add(m_auto_panel, 0, wxEXPAND); | ||||
|     m_top_sizer->Add(m_p1p_panel, 0, wxEXPAND); | ||||
| 
 | ||||
|     m_action_panel = new CaliPageActionPanel(parent, m_cali_mode, CaliPageType::CALI_PAGE_PA_SAVE); | ||||
|     m_top_sizer->Add(m_action_panel, 0, wxEXPAND, 0); | ||||
|  | @ -837,7 +833,7 @@ void CalibrationFlowX1SavePage::save_to_result_from_widgets(wxWindow* window, bo | |||
|         if (input->get_type() == GridTextInputType::FlowRatio) { | ||||
|             float flow_ratio = 0.0f; | ||||
|             if (!CalibUtils::validate_input_flow_ratio(input->GetTextCtrl()->GetValue(), &flow_ratio)) { | ||||
|                 MessageDialog msg_dlg(nullptr, _L("Please input a valid value (0.0 < flow ratio < 0.2)"), wxEmptyString, wxICON_WARNING | wxOK); | ||||
|                 MessageDialog msg_dlg(nullptr, _L("Please input a valid value (0.0 < flow ratio < 2.0)"), wxEmptyString, wxICON_WARNING | wxOK); | ||||
|                 msg_dlg.ShowModal(); | ||||
|                 *out_is_valid = false; | ||||
|             } | ||||
|  | @ -909,7 +905,7 @@ void CalibrationFlowCoarseSavePage::create_page(wxWindow* parent) | |||
|     auto complete_text = new wxStaticText(parent, wxID_ANY, _L("Please find the best object on your plate"), wxDefaultPosition, wxDefaultSize, 0); | ||||
|     complete_text->SetFont(Label::Head_14); | ||||
|     complete_text->Wrap(-1); | ||||
|     m_top_sizer->Add(complete_text, 0, 0, 0); | ||||
|     m_top_sizer->Add(complete_text, 0, wxALIGN_CENTER, 0); | ||||
|     m_top_sizer->AddSpacer(FromDIP(20)); | ||||
| 
 | ||||
|     m_record_picture = new wxStaticBitmap(parent, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0); | ||||
|  | @ -967,6 +963,8 @@ void CalibrationFlowCoarseSavePage::create_page(wxWindow* parent) | |||
|     m_top_sizer->Add(save_panel, 0, 0, 0); | ||||
|     save_panel->Hide(); | ||||
| 
 | ||||
|     m_top_sizer->AddSpacer(FromDIP(20)); | ||||
| 
 | ||||
|     checkBox_skip_calibration->Bind(wxEVT_TOGGLEBUTTON, [this, save_panel, checkBox_skip_calibration](wxCommandEvent& e) { | ||||
|         if (checkBox_skip_calibration->GetValue()) { | ||||
|             m_skip_fine_calibration = true; | ||||
|  | @ -1037,6 +1035,7 @@ bool CalibrationFlowCoarseSavePage::Show(bool show) { | |||
|             if (!curr_obj->selected_cali_preset.empty()) { | ||||
|                 wxString default_name = get_default_name(curr_obj->selected_cali_preset[0].name, CalibMode::Calib_Flow_Rate); | ||||
|                 set_default_name(default_name); | ||||
|                 set_curr_flow_ratio(curr_obj->cache_flow_ratio); | ||||
|             } | ||||
|         } | ||||
|         else { | ||||
|  | @ -1079,7 +1078,7 @@ void CalibrationFlowFineSavePage::create_page(wxWindow* parent) | |||
|     auto complete_text = new wxStaticText(parent, wxID_ANY, _L("Please find the best object on your plate"), wxDefaultPosition, wxDefaultSize, 0); | ||||
|     complete_text->SetFont(Label::Head_14); | ||||
|     complete_text->Wrap(-1); | ||||
|     m_top_sizer->Add(complete_text, 0, 0, 0); | ||||
|     m_top_sizer->Add(complete_text, 0, wxALIGN_CENTER, 0); | ||||
|     m_top_sizer->AddSpacer(FromDIP(20)); | ||||
| 
 | ||||
|     m_record_picture = new wxStaticBitmap(parent, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0); | ||||
|  | @ -1113,6 +1112,8 @@ void CalibrationFlowFineSavePage::create_page(wxWindow* parent) | |||
|     m_save_name_input = new TextInput(parent, "", "", "", wxDefaultPosition, {CALIBRATION_TEXT_MAX_LENGTH, FromDIP(24)}, 0); | ||||
|     m_top_sizer->Add(m_save_name_input, 0, 0, 0); | ||||
| 
 | ||||
|     m_top_sizer->AddSpacer(FromDIP(20)); | ||||
| 
 | ||||
|     m_optimal_block_fine->Bind(wxEVT_COMBOBOX, [this, fine_calc_result_text](auto& e) { | ||||
|         m_fine_flow_ratio = m_curr_flow_ratio * (100.0f + stof(m_optimal_block_fine->GetValue().ToStdString())) / 100.0f; | ||||
|         fine_calc_result_text->SetLabel(wxString::Format(_L("flow ratio : %s "), std::to_string(m_fine_flow_ratio))); | ||||
|  | @ -1158,6 +1159,7 @@ bool CalibrationFlowFineSavePage::Show(bool show) { | |||
|             if (!curr_obj->selected_cali_preset.empty()) { | ||||
|                 wxString default_name = get_default_name(curr_obj->selected_cali_preset[0].name, CalibMode::Calib_Flow_Rate); | ||||
|                 set_default_name(default_name); | ||||
|                 set_curr_flow_ratio(curr_obj->cache_flow_ratio); | ||||
|             } | ||||
|         } | ||||
|         else { | ||||
|  | @ -1205,7 +1207,7 @@ void CalibrationMaxVolumetricSpeedSavePage::create_page(wxWindow *parent) | |||
| 
 | ||||
|     set_save_img(); | ||||
| 
 | ||||
|     m_top_sizer->Add(m_save_preset_panel, 0); | ||||
|     m_top_sizer->Add(m_save_preset_panel, 0, wxEXPAND); | ||||
| 
 | ||||
|     m_action_panel = new CaliPageActionPanel(parent, m_cali_mode, CaliPageType::CALI_PAGE_COMMON_SAVE); | ||||
|     m_top_sizer->Add(m_action_panel, 0, wxEXPAND, 0); | ||||
|  |  | |||
|  | @ -683,6 +683,7 @@ public: | |||
|     // 2: reset when start calibration in start page
 | ||||
|     // 3: save tray_id, filament_id, setting_id, and name, nozzle_dia
 | ||||
|     std::vector<CaliPresetInfo> selected_cali_preset; | ||||
|     float                      cache_flow_ratio { 0.0 }; | ||||
| 
 | ||||
|     bool                       has_get_pa_calib_tab{ false }; | ||||
|     std::vector<PACalibResult> pa_calib_tab; | ||||
|  |  | |||
|  | @ -480,13 +480,16 @@ void PrintJob::process() | |||
| 
 | ||||
|         BOOST_LOG_TRIVIAL(error) << "print_job: send ok."; | ||||
|         wxCommandEvent* evt = new wxCommandEvent(m_print_job_completed_id); | ||||
|         if (!m_completed_evt_data.empty()) | ||||
|             evt->SetString(m_completed_evt_data); | ||||
|         else | ||||
|             evt->SetString(m_dev_id); | ||||
|         if (m_print_job_completed_id == wxGetApp().plater()->get_send_calibration_finished_event()) { | ||||
|             int sel = wxGetApp().mainframe->get_calibration_curr_tab(); | ||||
|             if (sel >= 0) { | ||||
|                 evt->SetInt(sel); | ||||
|             } | ||||
|         } | ||||
|         evt->SetString(m_dev_id); | ||||
|         wxQueueEvent(m_plater, evt); | ||||
|         m_job_finished = true; | ||||
|     } | ||||
|  |  | |||
|  | @ -38,6 +38,7 @@ class PrintJob : public PlaterJob | |||
|     std::string         m_dev_id; | ||||
|     bool                m_job_finished{ false }; | ||||
|     int                 m_print_job_completed_id = 0; | ||||
|     wxString            m_completed_evt_data; | ||||
|     std::function<void()> m_enter_ip_address_fun_fail{ nullptr }; | ||||
|     std::function<void()> m_enter_ip_address_fun_success{ nullptr }; | ||||
| 
 | ||||
|  | @ -90,7 +91,10 @@ public: | |||
|     } | ||||
| 
 | ||||
|     bool is_finished() { return m_job_finished;  } | ||||
|     void set_print_job_finished_event(int event_id) { m_print_job_completed_id = event_id; } | ||||
|     void set_print_job_finished_event(int event_id, wxString evt_data = wxEmptyString) { | ||||
|         m_print_job_completed_id = event_id; | ||||
|         m_completed_evt_data = evt_data; | ||||
|     } | ||||
|     void on_success(std::function<void()> success); | ||||
|     void process() override; | ||||
|     void finalize() override; | ||||
|  |  | |||
|  | @ -865,7 +865,6 @@ void CalibUtils::send_to_print(const CalibInfo &calib_info, std::string &error_m | |||
| 
 | ||||
|     print_job->connection_type  = obj_->connection_type(); | ||||
|     print_job->cloud_print_only = obj_->is_cloud_print_only; | ||||
|     print_job->set_print_job_finished_event(wxGetApp().plater()->get_send_calibration_finished_event()); | ||||
| 
 | ||||
|     PrintPrepareData job_data; | ||||
|     job_data.is_from_plater = false; | ||||
|  | @ -893,6 +892,7 @@ void CalibUtils::send_to_print(const CalibInfo &calib_info, std::string &error_m | |||
| 
 | ||||
|     print_job->has_sdcard = obj_->has_sdcard(); | ||||
|     print_job->set_print_config(MachineBedTypeString[bed_type], true, false, false, false, true); | ||||
|     print_job->set_print_job_finished_event(wxGetApp().plater()->get_send_calibration_finished_event(), print_job->m_project_name); | ||||
| 
 | ||||
|     print_job->start(); | ||||
| } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Stone Li
						Stone Li