From 7dd335f134e663ec3d2817dbea0d0077c9fcb986 Mon Sep 17 00:00:00 2001 From: tao wang Date: Fri, 13 Dec 2024 10:04:28 +0800 Subject: [PATCH] NEW:new extrusion command jira:[none ] Change-Id: I721ce4b2eb5ab02a88dc370f14bbfdb1b91f40a1 (cherry picked from commit 79c534375f7650480208a662e0a8302bc4ff6c45) --- src/slic3r/GUI/DeviceManager.cpp | 9 +++++++++ src/slic3r/GUI/DeviceManager.hpp | 1 + src/slic3r/GUI/StatusPanel.cpp | 19 +++++++++++++++---- 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index 2169a2756..94350f889 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -2308,6 +2308,15 @@ int MachineObject::command_axis_control(std::string axis, double unit, double in return this->publish_gcode(cmd); } +int MachineObject::command_extruder_control(int nozzle_id, double val) +{ + json j; + j["print"]["command"] = "set_extrusion_length"; + j["print"]["sequence_id"] = std::to_string(MachineObject::m_sequence_id++); + j["print"]["extruder_index"] = nozzle_id; + j["print"]["length"] = (int)val; + return this->publish_json(j.dump()); +} bool MachineObject::is_support_command_calibration() { diff --git a/src/slic3r/GUI/DeviceManager.hpp b/src/slic3r/GUI/DeviceManager.hpp index 1c3b85d8f..83968ba29 100644 --- a/src/slic3r/GUI/DeviceManager.hpp +++ b/src/slic3r/GUI/DeviceManager.hpp @@ -1086,6 +1086,7 @@ public: // axis string is X, Y, Z, E int command_axis_control(std::string axis, double unit = 1.0f, double input_val = 1.0f, int speed = 3000); + int command_extruder_control(int nozzle_id, double val); // calibration printer bool is_support_command_calibration(); int command_start_calibration(bool vibration, bool bed_leveling, bool xcam_cali, bool motor_noise); diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp index 9b2a2d3b6..b441f86c5 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -3953,8 +3953,14 @@ void StatusPanel::axis_ctrl_e_hint(bool up_down) void StatusPanel::on_axis_ctrl_e_up_10(wxCommandEvent &event) { if (obj) { - if (obj->m_extder_data.extders[0].temp >= TEMP_THRESHOLD_ALLOW_E_CTRL || (wxGetApp().app_config->get("not_show_ectrl_hint") == "1")) - obj->command_axis_control("E", 1.0, -10.0f, 900); + auto current_nozzle_id = obj->m_extder_data.current_extder_id; + if (obj->m_extder_data.extders[current_nozzle_id].temp >= TEMP_THRESHOLD_ALLOW_E_CTRL || (wxGetApp().app_config->get("not_show_ectrl_hint") == "1")) + if (obj->is_enable_np) { + obj->command_extruder_control(current_nozzle_id, -10.0f); + } else { + obj->command_axis_control("E", 1.0, -10.0f, 900); + } + else axis_ctrl_e_hint(true); } @@ -3963,8 +3969,13 @@ void StatusPanel::on_axis_ctrl_e_up_10(wxCommandEvent &event) void StatusPanel::on_axis_ctrl_e_down_10(wxCommandEvent &event) { if (obj) { - if (obj->m_extder_data.extders[0].temp >= TEMP_THRESHOLD_ALLOW_E_CTRL || (wxGetApp().app_config->get("not_show_ectrl_hint") == "1")) - obj->command_axis_control("E", 1.0, 10.0f, 900); + auto current_nozzle_id = obj->m_extder_data.current_extder_id; + if (obj->m_extder_data.extders[current_nozzle_id].temp >= TEMP_THRESHOLD_ALLOW_E_CTRL || (wxGetApp().app_config->get("not_show_ectrl_hint") == "1")) + if (obj->is_enable_np) { + obj->command_extruder_control(current_nozzle_id, 10.0f); + } else { + obj->command_axis_control("E", 1.0, 10.0f, 900); + } else axis_ctrl_e_hint(false); }