diff --git a/src/slic3r/GUI/CaliHistoryDialog.cpp b/src/slic3r/GUI/CaliHistoryDialog.cpp index 56593dea7..88066963d 100644 --- a/src/slic3r/GUI/CaliHistoryDialog.cpp +++ b/src/slic3r/GUI/CaliHistoryDialog.cpp @@ -577,6 +577,8 @@ NewCalibrationHistoryDialog::NewCalibrationHistoryDialog(wxWindow *parent, const if (!obj) return; + curr_obj = obj; + this->SetBackgroundColour(*wxWHITE); auto main_sizer = new wxBoxSizer(wxVERTICAL); @@ -737,6 +739,17 @@ void NewCalibrationHistoryDialog::on_ok(wxCommandEvent &event) } } + try { + json js; + js["cali_type"] = "cali_new_pa"; + js["nozzle_diameter"] = m_new_result.nozzle_diameter; + js["filament_id"] = m_new_result.filament_id; + js["printer_type"] = curr_obj->printer_type; + + NetworkAgent *agent = GUI::wxGetApp().getAgent(); + if (agent) agent->track_event("cali", js.dump()); + } catch (...) {} + CalibUtils::set_PA_calib_result({m_new_result}, true); EndModal(wxID_OK); diff --git a/src/slic3r/GUI/CaliHistoryDialog.hpp b/src/slic3r/GUI/CaliHistoryDialog.hpp index 94b3a874a..f3cefddf8 100644 --- a/src/slic3r/GUI/CaliHistoryDialog.hpp +++ b/src/slic3r/GUI/CaliHistoryDialog.hpp @@ -74,6 +74,7 @@ protected: protected: PACalibResult m_new_result; std::vector m_history_results; + MachineObject * curr_obj; TextInput *m_name_value{nullptr}; TextInput *m_k_value{nullptr}; diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index 161618cff..3bcf81aa3 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -2124,6 +2124,7 @@ int MachineObject::command_start_pa_calibration(const X1CCalibInfos &pa_data, in j["print"]["nozzle_diameter"] = to_string_nozzle_diameter(pa_data.calib_datas[0].nozzle_diameter); j["print"]["mode"] = mode; + std::string filament_ids; for (int i = 0; i < pa_data.calib_datas.size(); ++i) { j["print"]["filaments"][i]["tray_id"] = pa_data.calib_datas[i].tray_id; j["print"]["filaments"][i]["bed_temp"] = pa_data.calib_datas[i].bed_temp; @@ -2131,9 +2132,25 @@ int MachineObject::command_start_pa_calibration(const X1CCalibInfos &pa_data, in j["print"]["filaments"][i]["setting_id"] = pa_data.calib_datas[i].setting_id; j["print"]["filaments"][i]["nozzle_temp"] = pa_data.calib_datas[i].nozzle_temp; j["print"]["filaments"][i]["max_volumetric_speed"] = std::to_string(pa_data.calib_datas[i].max_volumetric_speed); + + if (i > 0) + filament_ids += ","; + filament_ids += pa_data.calib_datas[i].filament_id; } BOOST_LOG_TRIVIAL(trace) << "extrusion_cali: " << j.dump(); + + try { + json js; + js["cali_type"] = "cali_pa_auto"; + js["nozzle_diameter"] = pa_data.calib_datas[0].nozzle_diameter; + js["filament_id"] = filament_ids; + js["printer_type"] = this->printer_type; + NetworkAgent *agent = GUI::wxGetApp().getAgent(); + if (agent) + agent->track_event("cali", js.dump()); + } catch (...) {} + return this->publish_json(j.dump()); } return -1; @@ -2247,6 +2264,7 @@ int MachineObject::command_start_flow_ratio_calibration(const X1CCalibInfos& cal j["print"]["tray_id"] = calib_data.calib_datas[0].tray_id; j["print"]["nozzle_diameter"] = to_string_nozzle_diameter(calib_data.calib_datas[0].nozzle_diameter); + std::string filament_ids; for (int i = 0; i < calib_data.calib_datas.size(); ++i) { j["print"]["filaments"][i]["tray_id"] = calib_data.calib_datas[i].tray_id; j["print"]["filaments"][i]["bed_temp"] = calib_data.calib_datas[i].bed_temp; @@ -2255,8 +2273,22 @@ int MachineObject::command_start_flow_ratio_calibration(const X1CCalibInfos& cal j["print"]["filaments"][i]["nozzle_temp"] = calib_data.calib_datas[i].nozzle_temp; j["print"]["filaments"][i]["def_flow_ratio"] = std::to_string(calib_data.calib_datas[i].flow_rate); j["print"]["filaments"][i]["max_volumetric_speed"] = std::to_string(calib_data.calib_datas[i].max_volumetric_speed); + + if (i > 0) + filament_ids += ","; + filament_ids += calib_data.calib_datas[i].filament_id; } + try { + json js; + js["cali_type"] = "cali_flow_rate_auto"; + js["nozzle_diameter"] = calib_data.calib_datas[0].nozzle_diameter; + js["filament_id"] = filament_ids; + js["printer_type"] = this->printer_type; + NetworkAgent *agent = GUI::wxGetApp().getAgent(); + if (agent) agent->track_event("cali", js.dump()); + } catch (...) {} + BOOST_LOG_TRIVIAL(trace) << "flowrate_cali: " << j.dump(); return this->publish_json(j.dump()); } diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index d53ff23a6..5ad7d7dd0 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -2867,7 +2867,15 @@ void MainFrame::init_menubar_as_editor() // help append_menu_item(m_topbar->GetCalibMenu(), wxID_ANY, _L("Tutorial"), _L("Calibration help"), - [this](wxCommandEvent&) { wxLaunchDefaultBrowser("https://wiki.bambulab.com/e/en/staging/bambu-studio/Calibration", wxBROWSER_NEW_WINDOW); }, "", nullptr, + [this](wxCommandEvent&) { + try { + json js; + js["cali_type"] = "third_cali_tutorial"; + NetworkAgent *agent = GUI::wxGetApp().getAgent(); + if (agent) agent->track_event("third_cali", js.dump()); + } catch (...) {} + wxLaunchDefaultBrowser("https://wiki.bambulab.com/en/bambu-studio/Calibration", wxBROWSER_NEW_WINDOW); + }, "", nullptr, [this]() {return m_plater->is_view3D_shown();; }, this); } @@ -2989,7 +2997,15 @@ void MainFrame::init_menubar_as_editor() // help append_menu_item( m_calib_menu, wxID_ANY, _L("Tutorial"), _L("Calibration help"), - [this](wxCommandEvent &) { wxLaunchDefaultBrowser("https://wiki.bambulab.com/en/bambu-studio/Calibration", wxBROWSER_NEW_WINDOW); }, "", nullptr, + [this](wxCommandEvent &) { + try { + json js; + js["cali_type"] = "third_cali_tutorial"; + NetworkAgent *agent = GUI::wxGetApp().getAgent(); + if (agent) agent->track_event("third_cali", js.dump()); + } catch (...) {} + wxLaunchDefaultBrowser("https://wiki.bambulab.com/en/bambu-studio/Calibration", wxBROWSER_NEW_WINDOW); + }, "", nullptr, [this]() { return m_plater->is_view3D_shown(); ; diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 738ed6e12..efd22ce7c 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -9053,6 +9053,23 @@ void Plater::calib_pa(const Calib_Params ¶ms) default: break; } + try { + json js; + if (params.mode == CalibMode::Calib_PA_Line) + js["cali_type"] = "third_cali_pa_line"; + else if (params.mode == CalibMode::Calib_PA_Pattern) + js["cali_type"] = "third_cali_pa_pattern"; + else if (params.mode == CalibMode::Calib_PA_Tower) + js["cali_type"] = "third_cali_pa_tower"; + + std::string filament_id = wxGetApp().preset_bundle->filaments.get_edited_preset().filament_id; + js["filament_id"] = filament_id; + + NetworkAgent *agent = GUI::wxGetApp().getAgent(); + if (agent) + agent->track_event("third_cali", js.dump()); + } catch (...) {} + p->background_process.fff_print()->set_calib_params(params); } @@ -9259,6 +9276,20 @@ void Plater::calib_flowrate(int pass) wxGetApp().get_tab(Preset::TYPE_FILAMENT)->reload_config(); wxGetApp().get_tab(Preset::TYPE_PRINTER)->reload_config(); + try { + json js; + if (pass == 1) + js["cali_type"] = "third_cali_flow_rate_1"; + if (pass == 2) + js["cali_type"] = "third_cali_flow_rate_2"; + + std::string filament_id = wxGetApp().preset_bundle->filaments.get_edited_preset().filament_id; + js["filament_id"] = filament_id; + + NetworkAgent *agent = GUI::wxGetApp().getAgent(); + if (agent) agent->track_event("third_cali", js.dump()); + } catch (...) {} + Calib_Params params; params.mode = CalibMode::Calib_Flow_Rate; p->background_process.fff_print()->set_calib_params(params); @@ -9266,6 +9297,16 @@ void Plater::calib_flowrate(int pass) void Plater::calib_temp(const Calib_Params ¶ms) { + try { + json js; + js["cali_type"] = "third_cali_temp"; + std::string filament_id = wxGetApp().preset_bundle->filaments.get_edited_preset().filament_id; + js["filament_id"] = filament_id; + + NetworkAgent *agent = GUI::wxGetApp().getAgent(); + if (agent) agent->track_event("third_cali", js.dump()); + } catch (...) {} + const auto calib_temp_name = wxString::Format(L"Nozzle temperature test"); if (new_project(false, false, calib_temp_name) == wxID_CANCEL) return; @@ -9316,6 +9357,16 @@ void Plater::calib_temp(const Calib_Params ¶ms) void Plater::calib_max_vol_speed(const Calib_Params ¶ms) { + try { + json js; + js["cali_type"] = "third_cali_max_flowrate"; + std::string filament_id = wxGetApp().preset_bundle->filaments.get_edited_preset().filament_id; + js["filament_id"] = filament_id; + + NetworkAgent *agent = GUI::wxGetApp().getAgent(); + if (agent) agent->track_event("third_cali", js.dump()); + } catch (...) {} + const auto calib_vol_speed_name = wxString::Format(L"Max volumetric speed test"); if (new_project(false, false, calib_vol_speed_name) == wxID_CANCEL) return; @@ -9387,6 +9438,16 @@ void Plater::calib_max_vol_speed(const Calib_Params ¶ms) void Plater::calib_retraction(const Calib_Params ¶ms) { + try { + json js; + js["cali_type"] = "third_cali_retraction"; + std::string filament_id = wxGetApp().preset_bundle->filaments.get_edited_preset().filament_id; + js["filament_id"] = filament_id; + + NetworkAgent *agent = GUI::wxGetApp().getAgent(); + if (agent) agent->track_event("third_cali", js.dump()); + } catch (...) {} + const auto calib_retraction_name = wxString::Format(L"Retraction test"); if (new_project(false, false, calib_retraction_name) == wxID_CANCEL) return; @@ -9427,6 +9488,16 @@ void Plater::calib_retraction(const Calib_Params ¶ms) void Plater::calib_VFA(const Calib_Params ¶ms) { + try { + json js; + js["cali_type"] = "third_cali_VFA"; + std::string filament_id = wxGetApp().preset_bundle->filaments.get_edited_preset().filament_id; + js["filament_id"] = filament_id; + + NetworkAgent *agent = GUI::wxGetApp().getAgent(); + if (agent) agent->track_event("third_cali", js.dump()); + } catch (...) {} + const auto calib_vfa_name = wxString::Format(L"VFA test"); if (new_project(false, false, calib_vfa_name) == wxID_CANCEL) return; diff --git a/src/slic3r/Utils/CalibUtils.cpp b/src/slic3r/Utils/CalibUtils.cpp index a971cca03..1a4531194 100644 --- a/src/slic3r/Utils/CalibUtils.cpp +++ b/src/slic3r/Utils/CalibUtils.cpp @@ -566,6 +566,32 @@ bool CalibUtils::calib_flowrate(int pass, const CalibInfo &calib_info, wxString if (!process_and_store_3mf(&model, full_config, params, error_message)) return false; + DeviceManager *dev = Slic3r::GUI::wxGetApp().getDeviceManager(); + if (!dev) { + error_message = _L("Need select printer"); + return false; + } + + MachineObject *obj_ = dev->get_selected_machine(); + if (obj_ == nullptr) { + error_message = _L("Need select printer"); + return false; + } + + try { + json js; + if (pass == 1) + js["cali_type"] = "cali_flow_rate_1"; + else if (pass == 2) + js["cali_type"] = "cali_flow_rate_2"; + js["nozzle_diameter"] = nozzle_diameter; + js["filament_id"] = calib_info.filament_prest->filament_id; + js["printer_type"] = obj_->printer_type; + NetworkAgent *agent = GUI::wxGetApp().getAgent(); + if (agent) + agent->track_event("cali", js.dump()); + } catch (...) {} + send_to_print(calib_info, error_message, pass); return true; } @@ -657,6 +683,37 @@ bool CalibUtils::calib_generic_PA(const CalibInfo &calib_info, wxString &error_m if (!process_and_store_3mf(&model, full_config, params, error_message)) return false; + DeviceManager *dev = Slic3r::GUI::wxGetApp().getDeviceManager(); + if (!dev) { + error_message = _L("Need select printer"); + return false; + } + + MachineObject *obj_ = dev->get_selected_machine(); + if (obj_ == nullptr) { + error_message = _L("Need select printer"); + return false; + } + + try { + json js; + if (params.mode == CalibMode::Calib_PA_Line) + js["cali_type"] = "cali_pa_line"; + else if (params.mode == CalibMode::Calib_PA_Pattern) + js["cali_type"] = "cali_pa_pattern"; + + const ConfigOptionFloats *nozzle_diameter_config = printer_config.option("nozzle_diameter"); + assert(nozzle_diameter_config->values.size() > 0); + float nozzle_diameter = nozzle_diameter_config->values[0]; + + js["nozzle_diameter"] = nozzle_diameter; + js["filament_id"] = calib_info.filament_prest->filament_id; + js["printer_type"] = obj_->printer_type; + NetworkAgent *agent = GUI::wxGetApp().getAgent(); + if (agent) + agent->track_event("cali", js.dump()); + } catch (...) {} + send_to_print(calib_info, error_message); return true; }