diff --git a/src/slic3r/GUI/CalibrationWizard.cpp b/src/slic3r/GUI/CalibrationWizard.cpp index a9dab4361b..4dac663cfd 100644 --- a/src/slic3r/GUI/CalibrationWizard.cpp +++ b/src/slic3r/GUI/CalibrationWizard.cpp @@ -1213,7 +1213,7 @@ void CalibrationWizard::update_print_progress() { request_calib_result(); } - if (curr_obj->print_status == "FINISH") + if (curr_obj->print_status == "FINISH" || curr_obj->print_status == "IDLE") { m_button_abort->Enable(false); m_button_abort->SetBitmap(m_bitmap_abort_disable.bmp()); diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index e8b7e95d7c..e85294f7b4 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -1940,7 +1940,7 @@ int MachineObject::command_start_calibration(bool vibration, bool bed_leveling, } } -int MachineObject::command_start_pa_calibration(const X1CCalibInfos& pa_data) +int MachineObject::command_start_pa_calibration(const X1CCalibInfos &pa_data, bool is_manual) { pa_calib_results.clear(); if ((printer_type == "BL-P001" || printer_type == "BL-P002")) { @@ -1948,6 +1948,7 @@ int MachineObject::command_start_pa_calibration(const X1CCalibInfos& pa_data) j["print"]["command"] = "extrusion_cali"; j["print"]["sequence_id"] = std::to_string(MachineObject::m_sequence_id++); j["print"]["nozzle_diameter"] = to_string_nozzle_diameter(pa_data.calib_datas[0].nozzle_diameter); + j["print"]["manual"] = is_manual; for (int i = 0; i < pa_data.calib_datas.size(); ++i) { j["print"]["filaments"][i]["tray_id"] = pa_data.calib_datas[i].tray_id; @@ -1973,7 +1974,8 @@ int MachineObject::command_set_pa_calibration(const std::vector& j["print"]["nozzle_diameter"] = to_string_nozzle_diameter(pa_calib_values[0].nozzle_diameter); for (int i = 0; i < pa_calib_values.size(); ++i) { - j["print"]["filaments"][i]["tray_id"] = pa_calib_values[i].tray_id; + if (pa_calib_values[i].tray_id >= 0) + j["print"]["filaments"][i]["tray_id"] = pa_calib_values[i].tray_id; j["print"]["filaments"][i]["filament_id"] = pa_calib_values[i].filament_id; j["print"]["filaments"][i]["setting_id"] = pa_calib_values[i].setting_id; j["print"]["filaments"][i]["name"] = pa_calib_values[i].name; @@ -3906,6 +3908,8 @@ int MachineObject::parse_json(std::string payload) else if ((*it)["n_coef"].is_string()) pa_calib_result.n_coef = stof((*it)["n_coef"].get().c_str()); + pa_calib_result.confidence = (*it)["confidence"].get(); + pa_calib_results.push_back(pa_calib_result); } has_get_pa_calib_result = true; diff --git a/src/slic3r/GUI/DeviceManager.hpp b/src/slic3r/GUI/DeviceManager.hpp index 14b91ad46d..e4cd182d5f 100644 --- a/src/slic3r/GUI/DeviceManager.hpp +++ b/src/slic3r/GUI/DeviceManager.hpp @@ -338,6 +338,7 @@ public: std::string name; float k_value; float n_coef; + int confidence; }; struct PACalibIndexInfo @@ -826,7 +827,7 @@ public: int command_start_calibration(bool vibration, bool bed_leveling, bool xcam_cali); // PA calibration - int command_start_pa_calibration(const X1CCalibInfos& pa_data); + int command_start_pa_calibration(const X1CCalibInfos& pa_data, bool is_manual = false); int command_set_pa_calibration(const std::vector& pa_calib_values); int command_delete_pa_calibration(const PACalibIndexInfo& pa_calib); int command_get_pa_calibration_tab(float nozzle_diameter, const std::string &filament_id = ""); diff --git a/src/slic3r/Utils/CalibUtils.cpp b/src/slic3r/Utils/CalibUtils.cpp index 04eaacc59f..bba89cd26e 100644 --- a/src/slic3r/Utils/CalibUtils.cpp +++ b/src/slic3r/Utils/CalibUtils.cpp @@ -92,7 +92,7 @@ CalibMode CalibUtils::get_calib_mode_by_name(const std::string &name) return CalibMode::Calib_None; } -void CalibUtils::calib_PA(const X1CCalibInfos& calib_infos, std::string& error_message) +void CalibUtils::calib_PA(const X1CCalibInfos &calib_infos, std::string &error_message, bool is_manual) { DeviceManager *dev = Slic3r::GUI::wxGetApp().getDeviceManager(); if (!dev) @@ -103,7 +103,7 @@ void CalibUtils::calib_PA(const X1CCalibInfos& calib_infos, std::string& error_m return; if (calib_infos.calib_datas.size() > 0) - obj_->command_start_pa_calibration(calib_infos); + obj_->command_start_pa_calibration(calib_infos, is_manual); } void CalibUtils::emit_get_PA_calib_results(float nozzle_diameter) diff --git a/src/slic3r/Utils/CalibUtils.hpp b/src/slic3r/Utils/CalibUtils.hpp index 5d3b97f136..a7679fc4bb 100644 --- a/src/slic3r/Utils/CalibUtils.hpp +++ b/src/slic3r/Utils/CalibUtils.hpp @@ -30,7 +30,7 @@ public: static CalibMode get_calib_mode_by_name(const std::string &name); - static void calib_PA(const X1CCalibInfos& calib_infos, std::string& error_message); + static void calib_PA(const X1CCalibInfos &calib_infos, std::string &error_message, bool is_manual = false); static void emit_get_PA_calib_results(float nozzle_diameter); static bool get_PA_calib_results(std::vector &pa_calib_results);