ENH: refine load/unload for spool holder filament
update ams load/unload gcode Change-Id: Ia3d4a26efb14325c89f0c9f9571268c1834361ae Signed-off-by: Stone Li <stone.li@bambulab.com>
This commit is contained in:
parent
9480b84b64
commit
a48c36fde1
|
@ -1,6 +1,6 @@
|
||||||
M620 S[next_extruder]
|
M620 S[next_extruder]
|
||||||
M106 S255
|
M106 S255
|
||||||
M104 S142
|
M104 S250
|
||||||
M17 S
|
M17 S
|
||||||
M17 X0.5 Y0.5
|
M17 X0.5 Y0.5
|
||||||
G91
|
G91
|
||||||
|
@ -9,24 +9,24 @@ G1 Z3
|
||||||
G90
|
G90
|
||||||
G28 X
|
G28 X
|
||||||
M17 R
|
M17 R
|
||||||
G1 X70 F12000
|
G1 X70 F21000
|
||||||
G1 Y245
|
G1 Y245
|
||||||
G1 Y265 F3000
|
G1 Y265 F3000
|
||||||
G4
|
G4
|
||||||
M106 S0
|
M106 S0
|
||||||
M109 S250
|
M109 S250
|
||||||
G4 S10
|
|
||||||
G1 X90
|
G1 X90
|
||||||
G1 Y255
|
G1 Y255
|
||||||
G1 X120
|
G1 X120
|
||||||
G1 X20 Y50 F12000
|
G1 X20 Y50 F21000
|
||||||
G1 Y-3
|
G1 Y-3
|
||||||
T[next_extruder]
|
T[next_extruder]
|
||||||
G1 X54
|
G1 X54
|
||||||
G1 Y265
|
G1 Y265
|
||||||
G92 E0
|
G92 E0
|
||||||
G1 E40 F180
|
G1 E40 F180
|
||||||
M109 S[new_filament_temp]
|
G4
|
||||||
|
M104 S[new_filament_temp]
|
||||||
G1 X70 F15000
|
G1 X70 F15000
|
||||||
G1 X76
|
G1 X76
|
||||||
G1 X65
|
G1 X65
|
||||||
|
|
|
@ -1,35 +1,32 @@
|
||||||
M620 S255
|
M620 S255
|
||||||
M106 P1 S255
|
M106 P1 S255
|
||||||
M104 S142
|
M104 S250
|
||||||
M17 S
|
M17 S
|
||||||
M17 X0.5 Y0.5
|
M17 X0.5 Y0.5
|
||||||
G91
|
G91
|
||||||
G1 Y-5 F3000
|
G1 Y-5 F3000
|
||||||
G1 Z3.0 F1200
|
G1 Z3 F1200
|
||||||
G90
|
G90
|
||||||
G28 X
|
G28 X
|
||||||
M17 R
|
M17 R
|
||||||
|
G1 X70 F21000
|
||||||
G1 X70 F12000
|
|
||||||
G1 Y245
|
G1 Y245
|
||||||
G1 Y265 F3000
|
G1 Y265 F3000
|
||||||
M400
|
G4
|
||||||
M106 P1 S0
|
M106 P1 S0
|
||||||
M109 S250
|
M109 S250
|
||||||
G4 S10
|
|
||||||
G1 X90 F3000
|
G1 X90 F3000
|
||||||
G1 Y255 F4000
|
G1 Y255 F4000
|
||||||
G1 X100 F5000
|
G1 X100 F5000
|
||||||
G1 X120 F12000
|
G1 X120 F21000
|
||||||
|
G1 X20 Y50
|
||||||
G1 X20 Y50 F12000
|
|
||||||
G1 Y-3
|
G1 Y-3
|
||||||
|
|
||||||
T255
|
T255
|
||||||
|
G4
|
||||||
M104 S0
|
M104 S0
|
||||||
G1 X70 F3000
|
G1 X70 F3000
|
||||||
|
|
||||||
G91
|
G91
|
||||||
G1 Z-3.0 F1200
|
G1 Z-3 F1200
|
||||||
G90
|
G90
|
||||||
M621 S255
|
M621 S255
|
|
@ -1562,9 +1562,8 @@ int MachineObject::command_ams_switch(int tray_index, int old_temp, int new_temp
|
||||||
std::string gcode = "";
|
std::string gcode = "";
|
||||||
if (tray_index == 255) {
|
if (tray_index == 255) {
|
||||||
gcode = DeviceManager::load_gcode(printer_type, "ams_unload.gcode");
|
gcode = DeviceManager::load_gcode(printer_type, "ams_unload.gcode");
|
||||||
} else if (tray_index == VIRTUAL_TRAY_ID) {
|
|
||||||
gcode = DeviceManager::load_gcode(printer_type, "vt_load.gcode");
|
|
||||||
} else {
|
} else {
|
||||||
|
// include VIRTUAL_TRAY_ID
|
||||||
gcode = DeviceManager::load_gcode(printer_type, "ams_load.gcode");
|
gcode = DeviceManager::load_gcode(printer_type, "ams_load.gcode");
|
||||||
boost::replace_all(gcode, "[next_extruder]", std::to_string(tray_index));
|
boost::replace_all(gcode, "[next_extruder]", std::to_string(tray_index));
|
||||||
boost::replace_all(gcode, "[new_filament_temp]", std::to_string(new_temp));
|
boost::replace_all(gcode, "[new_filament_temp]", std::to_string(new_temp));
|
||||||
|
@ -1668,7 +1667,7 @@ int MachineObject::command_ams_select_tray(std::string tray_id)
|
||||||
int MachineObject::command_ams_control(std::string action)
|
int MachineObject::command_ams_control(std::string action)
|
||||||
{
|
{
|
||||||
//valid actions
|
//valid actions
|
||||||
if (action == "resume" || action == "reset" || action == "pause") {
|
if (action == "resume" || action == "reset" || action == "pause" || action == "done") {
|
||||||
json j;
|
json j;
|
||||||
j["print"]["command"] = "ams_control";
|
j["print"]["command"] = "ams_control";
|
||||||
j["print"]["sequence_id"] = std::to_string(MachineObject::m_sequence_id++);
|
j["print"]["sequence_id"] = std::to_string(MachineObject::m_sequence_id++);
|
||||||
|
|
|
@ -59,6 +59,7 @@ void PrintJob::on_success(std::function<void()> success)
|
||||||
|
|
||||||
wxString PrintJob::get_http_error_msg(unsigned int status, std::string body)
|
wxString PrintJob::get_http_error_msg(unsigned int status, std::string body)
|
||||||
{
|
{
|
||||||
|
try {
|
||||||
int code = 0;
|
int code = 0;
|
||||||
std::string error;
|
std::string error;
|
||||||
std::string message;
|
std::string message;
|
||||||
|
@ -99,6 +100,10 @@ wxString PrintJob::get_http_error_msg(unsigned int status, std::string body)
|
||||||
|
|
||||||
result = wxString::Format("code=%u, error=%s", code, from_u8(error));
|
result = wxString::Format("code=%u, error=%s", code, from_u8(error));
|
||||||
return result;
|
return result;
|
||||||
|
} catch(...) {
|
||||||
|
;
|
||||||
|
}
|
||||||
|
return wxEmptyString;
|
||||||
}
|
}
|
||||||
|
|
||||||
void PrintJob::process()
|
void PrintJob::process()
|
||||||
|
|
|
@ -26,6 +26,7 @@ namespace Slic3r { namespace GUI {
|
||||||
|
|
||||||
wxDEFINE_EVENT(EVT_SECONDARY_CHECK_CONFIRM, wxCommandEvent);
|
wxDEFINE_EVENT(EVT_SECONDARY_CHECK_CONFIRM, wxCommandEvent);
|
||||||
wxDEFINE_EVENT(EVT_SECONDARY_CHECK_CANCEL, wxCommandEvent);
|
wxDEFINE_EVENT(EVT_SECONDARY_CHECK_CANCEL, wxCommandEvent);
|
||||||
|
wxDEFINE_EVENT(EVT_SECONDARY_CHECK_FUNC, wxCommandEvent);
|
||||||
wxDEFINE_EVENT(EVT_CHECKBOX_CHANGE, wxCommandEvent);
|
wxDEFINE_EVENT(EVT_CHECKBOX_CHANGE, wxCommandEvent);
|
||||||
wxDEFINE_EVENT(EVT_ENTER_IP_ADDRESS, wxCommandEvent);
|
wxDEFINE_EVENT(EVT_ENTER_IP_ADDRESS, wxCommandEvent);
|
||||||
wxDEFINE_EVENT(EVT_CLOSE_IPADDRESS_DLG, wxCommandEvent);
|
wxDEFINE_EVENT(EVT_CLOSE_IPADDRESS_DLG, wxCommandEvent);
|
||||||
|
@ -592,12 +593,32 @@ SecondaryCheckDialog::SecondaryCheckDialog(wxWindow* parent, wxWindowID id, cons
|
||||||
this->on_hide();
|
this->on_hide();
|
||||||
});
|
});
|
||||||
|
|
||||||
if (btn_style != CONFIRM_AND_CANCEL)
|
m_button_fn = new Button(this, _L("Done"));
|
||||||
m_button_cancel->Hide();
|
m_button_fn->SetBackgroundColor(btn_bg_white);
|
||||||
else
|
m_button_fn->SetBorderColor(wxColour(38, 46, 48));
|
||||||
|
m_button_fn->SetFont(Label::Body_12);
|
||||||
|
m_button_fn->SetSize(wxSize(FromDIP(58), FromDIP(24)));
|
||||||
|
m_button_fn->SetMinSize(wxSize(-1, FromDIP(24)));
|
||||||
|
m_button_fn->SetCornerRadius(FromDIP(12));
|
||||||
|
|
||||||
|
m_button_fn->Bind(wxEVT_LEFT_DOWN, [this](wxMouseEvent& e) {
|
||||||
|
post_event(wxCommandEvent(EVT_SECONDARY_CHECK_FUNC));
|
||||||
|
e.Skip();
|
||||||
|
});
|
||||||
|
|
||||||
|
if (btn_style == CONFIRM_AND_CANCEL) {
|
||||||
m_button_cancel->Show();
|
m_button_cancel->Show();
|
||||||
|
m_button_fn->Hide();
|
||||||
|
} else if (btn_style == CONFIRM_AND_FUNC) {
|
||||||
|
m_button_cancel->Hide();
|
||||||
|
m_button_fn->Show();
|
||||||
|
} else {
|
||||||
|
m_button_cancel->Hide();
|
||||||
|
m_button_fn->Hide();
|
||||||
|
}
|
||||||
|
|
||||||
sizer_button->AddStretchSpacer();
|
sizer_button->AddStretchSpacer();
|
||||||
|
sizer_button->Add(m_button_fn, 0, wxALL, FromDIP(5));
|
||||||
sizer_button->Add(m_button_ok, 0, wxALL, FromDIP(5));
|
sizer_button->Add(m_button_ok, 0, wxALL, FromDIP(5));
|
||||||
sizer_button->Add(m_button_cancel, 0, wxALL, FromDIP(5));
|
sizer_button->Add(m_button_cancel, 0, wxALL, FromDIP(5));
|
||||||
sizer_button->Add(FromDIP(5),0, 0, 0);
|
sizer_button->Add(FromDIP(5),0, 0, 0);
|
||||||
|
@ -619,6 +640,16 @@ SecondaryCheckDialog::SecondaryCheckDialog(wxWindow* parent, wxWindowID id, cons
|
||||||
wxGetApp().UpdateFrameDarkUI(this);
|
wxGetApp().UpdateFrameDarkUI(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SecondaryCheckDialog::post_event(wxCommandEvent&& event)
|
||||||
|
{
|
||||||
|
if (event_parent) {
|
||||||
|
event.SetString("");
|
||||||
|
event.SetEventObject(event_parent);
|
||||||
|
wxPostEvent(event_parent, event);
|
||||||
|
event.Skip();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void SecondaryCheckDialog::update_text(wxString text)
|
void SecondaryCheckDialog::update_text(wxString text)
|
||||||
{
|
{
|
||||||
wxBoxSizer* sizer_text_release_note = new wxBoxSizer(wxVERTICAL);
|
wxBoxSizer* sizer_text_release_note = new wxBoxSizer(wxVERTICAL);
|
||||||
|
@ -681,6 +712,33 @@ void SecondaryCheckDialog::on_hide()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SecondaryCheckDialog::update_title_style(wxString title, SecondaryCheckDialog::ButtonStyle style, wxWindow* parent)
|
||||||
|
{
|
||||||
|
SetTitle(title);
|
||||||
|
|
||||||
|
event_parent = parent;
|
||||||
|
|
||||||
|
if (style == CONFIRM_AND_CANCEL) {
|
||||||
|
m_button_cancel->Show();
|
||||||
|
m_button_fn->Hide();
|
||||||
|
}
|
||||||
|
else if (style == CONFIRM_AND_FUNC) {
|
||||||
|
m_button_cancel->Hide();
|
||||||
|
m_button_fn->Show();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
m_button_cancel->Hide();
|
||||||
|
m_button_fn->Hide();
|
||||||
|
}
|
||||||
|
Layout();
|
||||||
|
}
|
||||||
|
|
||||||
|
void SecondaryCheckDialog::update_func_btn(wxString func_btn_text)
|
||||||
|
{
|
||||||
|
m_button_fn->SetLabel(func_btn_text);
|
||||||
|
rescale();
|
||||||
|
}
|
||||||
|
|
||||||
void SecondaryCheckDialog::update_btn_label(wxString ok_btn_text, wxString cancel_btn_text)
|
void SecondaryCheckDialog::update_btn_label(wxString ok_btn_text, wxString cancel_btn_text)
|
||||||
{
|
{
|
||||||
m_button_ok->SetLabel(ok_btn_text);
|
m_button_ok->SetLabel(ok_btn_text);
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
#include <wx/spinctrl.h>
|
#include <wx/spinctrl.h>
|
||||||
#include <wx/artprov.h>
|
#include <wx/artprov.h>
|
||||||
#include <wx/wrapsizer.h>
|
#include <wx/wrapsizer.h>
|
||||||
|
#include <wx/event.h>
|
||||||
|
|
||||||
#include "AmsMappingPopup.hpp"
|
#include "AmsMappingPopup.hpp"
|
||||||
#include "GUI_Utils.hpp"
|
#include "GUI_Utils.hpp"
|
||||||
|
@ -39,6 +40,7 @@ namespace Slic3r { namespace GUI {
|
||||||
|
|
||||||
wxDECLARE_EVENT(EVT_SECONDARY_CHECK_CONFIRM, wxCommandEvent);
|
wxDECLARE_EVENT(EVT_SECONDARY_CHECK_CONFIRM, wxCommandEvent);
|
||||||
wxDECLARE_EVENT(EVT_SECONDARY_CHECK_CANCEL, wxCommandEvent);
|
wxDECLARE_EVENT(EVT_SECONDARY_CHECK_CANCEL, wxCommandEvent);
|
||||||
|
wxDECLARE_EVENT(EVT_SECONDARY_CHECK_FUNC, wxCommandEvent);
|
||||||
|
|
||||||
class ReleaseNoteDialog : public DPIDialog
|
class ReleaseNoteDialog : public DPIDialog
|
||||||
{
|
{
|
||||||
|
@ -98,11 +100,14 @@ public:
|
||||||
|
|
||||||
class SecondaryCheckDialog : public DPIFrame
|
class SecondaryCheckDialog : public DPIFrame
|
||||||
{
|
{
|
||||||
|
private:
|
||||||
|
wxWindow* event_parent { nullptr };
|
||||||
public:
|
public:
|
||||||
enum ButtonStyle {
|
enum ButtonStyle {
|
||||||
ONLY_CONFIRM = 0,
|
ONLY_CONFIRM = 0,
|
||||||
CONFIRM_AND_CANCEL = 1,
|
CONFIRM_AND_CANCEL = 1,
|
||||||
MAX_STYLE_NUM = 2
|
CONFIRM_AND_FUNC = 2,
|
||||||
|
MAX_STYLE_NUM = 3
|
||||||
};
|
};
|
||||||
SecondaryCheckDialog(
|
SecondaryCheckDialog(
|
||||||
wxWindow* parent,
|
wxWindow* parent,
|
||||||
|
@ -118,6 +123,9 @@ public:
|
||||||
void on_show();
|
void on_show();
|
||||||
void on_hide();
|
void on_hide();
|
||||||
void update_btn_label(wxString ok_btn_text, wxString cancel_btn_text);
|
void update_btn_label(wxString ok_btn_text, wxString cancel_btn_text);
|
||||||
|
void update_title_style(wxString title, SecondaryCheckDialog::ButtonStyle style, wxWindow* parent = nullptr);
|
||||||
|
void update_func_btn(wxString func_btn_text);
|
||||||
|
void post_event(wxCommandEvent&& event);
|
||||||
void rescale();
|
void rescale();
|
||||||
~SecondaryCheckDialog();
|
~SecondaryCheckDialog();
|
||||||
void on_dpi_changed(const wxRect& suggested_rect);
|
void on_dpi_changed(const wxRect& suggested_rect);
|
||||||
|
@ -125,8 +133,9 @@ public:
|
||||||
Label* m_staticText_release_note {nullptr};
|
Label* m_staticText_release_note {nullptr};
|
||||||
wxBoxSizer* m_sizer_main;
|
wxBoxSizer* m_sizer_main;
|
||||||
wxScrolledWindow *m_vebview_release_note {nullptr};
|
wxScrolledWindow *m_vebview_release_note {nullptr};
|
||||||
Button* m_button_ok;
|
Button* m_button_ok { nullptr };
|
||||||
Button* m_button_cancel;
|
Button* m_button_cancel { nullptr };
|
||||||
|
Button* m_button_fn { nullptr };
|
||||||
wxCheckBox* m_show_again_checkbox;
|
wxCheckBox* m_show_again_checkbox;
|
||||||
bool not_show_again = false;
|
bool not_show_again = false;
|
||||||
std::string show_again_config_text = "";
|
std::string show_again_config_text = "";
|
||||||
|
|
|
@ -1274,7 +1274,7 @@ StatusPanel::StatusPanel(wxWindow *parent, wxWindowID id, const wxPoint &pos, co
|
||||||
Bind(EVT_AMS_GUIDE_WIKI, &StatusPanel::on_ams_guide, this);
|
Bind(EVT_AMS_GUIDE_WIKI, &StatusPanel::on_ams_guide, this);
|
||||||
Bind(EVT_AMS_RETRY, &StatusPanel::on_ams_retry, this);
|
Bind(EVT_AMS_RETRY, &StatusPanel::on_ams_retry, this);
|
||||||
Bind(EVT_FAN_CHANGED, &StatusPanel::on_fan_changed, this);
|
Bind(EVT_FAN_CHANGED, &StatusPanel::on_fan_changed, this);
|
||||||
|
Bind(EVT_SECONDARY_CHECK_FUNC, &StatusPanel::on_print_error_func, this);
|
||||||
|
|
||||||
m_switch_speed->Connect(wxEVT_LEFT_DOWN, wxCommandEventHandler(StatusPanel::on_switch_speed), NULL, this);
|
m_switch_speed->Connect(wxEVT_LEFT_DOWN, wxCommandEventHandler(StatusPanel::on_switch_speed), NULL, this);
|
||||||
m_calibration_btn->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(StatusPanel::on_start_calibration), NULL, this);
|
m_calibration_btn->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(StatusPanel::on_start_calibration), NULL, this);
|
||||||
|
@ -1591,7 +1591,7 @@ void StatusPanel::show_recenter_dialog() {
|
||||||
obj->command_go_home();
|
obj->command_go_home();
|
||||||
}
|
}
|
||||||
|
|
||||||
void StatusPanel::show_error_message(wxString msg)
|
void StatusPanel::show_error_message(wxString msg, std::string print_error_str)
|
||||||
{
|
{
|
||||||
if (msg.IsEmpty()) {
|
if (msg.IsEmpty()) {
|
||||||
if (m_panel_error_txt->IsShown()) {
|
if (m_panel_error_txt->IsShown()) {
|
||||||
|
@ -1611,6 +1611,12 @@ void StatusPanel::show_error_message(wxString msg)
|
||||||
if (m_print_error_dlg == nullptr) {
|
if (m_print_error_dlg == nullptr) {
|
||||||
m_print_error_dlg = new SecondaryCheckDialog(this->GetParent(), wxID_ANY, _L("Warning"), SecondaryCheckDialog::ButtonStyle::ONLY_CONFIRM);
|
m_print_error_dlg = new SecondaryCheckDialog(this->GetParent(), wxID_ANY, _L("Warning"), SecondaryCheckDialog::ButtonStyle::ONLY_CONFIRM);
|
||||||
}
|
}
|
||||||
|
if (print_error_str == "07FF 8007") {
|
||||||
|
m_print_error_dlg->update_func_btn("Done");
|
||||||
|
m_print_error_dlg->update_title_style(_L("Warning"), SecondaryCheckDialog::ButtonStyle::CONFIRM_AND_FUNC, this);
|
||||||
|
} else {
|
||||||
|
m_print_error_dlg->update_title_style(_L("Warning"), SecondaryCheckDialog::ButtonStyle::ONLY_CONFIRM, this);
|
||||||
|
}
|
||||||
m_print_error_dlg->update_text(msg);
|
m_print_error_dlg->update_text(msg);
|
||||||
m_print_error_dlg->on_show();
|
m_print_error_dlg->on_show();
|
||||||
}
|
}
|
||||||
|
@ -1638,7 +1644,7 @@ void StatusPanel::update_error_message()
|
||||||
error_msg = wxString::Format("%s[%s]",
|
error_msg = wxString::Format("%s[%s]",
|
||||||
error_msg,
|
error_msg,
|
||||||
print_error_str);
|
print_error_str);
|
||||||
show_error_message(error_msg);
|
show_error_message(error_msg, print_error_str);
|
||||||
} else {
|
} else {
|
||||||
BOOST_LOG_TRIVIAL(info) << "show print error! error_msg is empty, print error = " << obj->print_error;
|
BOOST_LOG_TRIVIAL(info) << "show print error! error_msg is empty, print error = " << obj->print_error;
|
||||||
}
|
}
|
||||||
|
@ -1951,91 +1957,110 @@ void StatusPanel::update_ams(MachineObject *obj)
|
||||||
|
|
||||||
std::string curr_ams_id = m_ams_control->GetCurentAms();
|
std::string curr_ams_id = m_ams_control->GetCurentAms();
|
||||||
std::string curr_can_id = m_ams_control->GetCurrentCan(curr_ams_id);
|
std::string curr_can_id = m_ams_control->GetCurrentCan(curr_ams_id);
|
||||||
|
bool is_vt_tray = false;
|
||||||
|
if (obj->m_tray_tar == std::to_string(VIRTUAL_TRAY_ID))
|
||||||
|
is_vt_tray = true;
|
||||||
|
|
||||||
if (m_ams_control->GetCurentAms() == std::to_string(VIRTUAL_TRAY_ID)) {
|
// set segment 1, 2
|
||||||
m_ams_control->SetAmsStep(curr_ams_id, curr_can_id, AMSPassRoadType::AMS_ROAD_TYPE_NONE, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
|
if (m_ams_control->GetCurentAms() != std::to_string(VIRTUAL_TRAY_ID)) {
|
||||||
|
if (obj->m_tray_now != "255" && obj->is_filament_at_extruder()) {
|
||||||
|
m_ams_control->SetAmsStep(curr_ams_id, obj->m_tray_id, AMSPassRoadType::AMS_ROAD_TYPE_LOAD, AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP2);
|
||||||
}
|
}
|
||||||
else if (m_ams_control->GetCurentAms() != obj->m_ams_id) {
|
else if (obj->m_tray_now != "255") {
|
||||||
m_ams_control->SetAmsStep(curr_ams_id, curr_can_id, AMSPassRoadType::AMS_ROAD_TYPE_LOAD, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
|
|
||||||
} else {
|
|
||||||
if (obj->ams_status_main == AMS_STATUS_MAIN_FILAMENT_CHANGE) {
|
|
||||||
// wait to heat hotend
|
|
||||||
if (obj->ams_status_sub == 0x02) {
|
|
||||||
|
|
||||||
if (curr_ams_id == obj->m_ams_id) {
|
|
||||||
if (!obj->is_ams_unload()) {
|
|
||||||
m_ams_control->SetFilamentStep(FilamentStep::STEP_HEAT_NOZZLE, true);
|
|
||||||
m_ams_control->SetAmsStep(curr_ams_id, obj->m_tray_id, AMSPassRoadType::AMS_ROAD_TYPE_LOAD, AMSPassRoadSTEP::AMS_ROAD_STEP_3);
|
|
||||||
} else {
|
|
||||||
m_ams_control->SetFilamentStep(FilamentStep::STEP_HEAT_NOZZLE, false);
|
|
||||||
m_ams_control->SetAmsStep(curr_ams_id, obj->m_tray_id, AMSPassRoadType::AMS_ROAD_TYPE_UNLOAD, AMSPassRoadSTEP::AMS_ROAD_STEP_3);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if (obj->ams_status_sub == 0x03) {
|
|
||||||
if (!obj->is_ams_unload()) {
|
|
||||||
m_ams_control->SetFilamentStep(FilamentStep::STEP_CUT_FILAMENT, true);
|
|
||||||
m_ams_control->SetAmsStep(curr_ams_id, obj->m_tray_id, AMSPassRoadType::AMS_ROAD_TYPE_LOAD, AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP1);
|
m_ams_control->SetAmsStep(curr_ams_id, obj->m_tray_id, AMSPassRoadType::AMS_ROAD_TYPE_LOAD, AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP1);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
m_ams_control->SetFilamentStep(FilamentStep::STEP_CUT_FILAMENT, false);
|
m_ams_control->SetAmsStep(curr_ams_id, obj->m_tray_id, AMSPassRoadType::AMS_ROAD_TYPE_UNLOAD, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
|
||||||
m_ams_control->SetAmsStep(curr_ams_id, obj->m_tray_id, AMSPassRoadType::AMS_ROAD_TYPE_UNLOAD, AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP3);
|
}
|
||||||
|
} else {
|
||||||
|
m_ams_control->SetAmsStep(curr_ams_id, obj->m_tray_id, AMSPassRoadType::AMS_ROAD_TYPE_UNLOAD, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if (obj->ams_status_sub == 0x04) {
|
// set segment 3
|
||||||
if (!obj->is_ams_unload()) {
|
if (m_ams_control->GetCurentAms() == std::to_string(VIRTUAL_TRAY_ID)) {
|
||||||
m_ams_control->SetFilamentStep(FilamentStep::STEP_PULL_CURR_FILAMENT, true);
|
m_ams_control->SetExtruder(obj->is_filament_at_extruder(), obj->vt_tray.get_color());
|
||||||
m_ams_control->SetAmsStep(curr_ams_id, obj->m_tray_id, AMSPassRoadType::AMS_ROAD_TYPE_LOAD, AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP2);
|
} else {
|
||||||
|
m_ams_control->SetExtruder(obj->is_filament_at_extruder(), m_ams_control->GetCanColour(curr_ams_id, obj->m_tray_id));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (obj->ams_status_main == AMS_STATUS_MAIN_FILAMENT_CHANGE) {
|
||||||
|
if (obj->m_tray_tar == std::to_string(VIRTUAL_TRAY_ID)
|
||||||
|
&& (obj->m_tray_now != std::to_string(VIRTUAL_TRAY_ID) || obj->m_tray_now != "255")
|
||||||
|
) {
|
||||||
|
// wait to heat hotend
|
||||||
|
if (obj->ams_status_sub == 0x02) {
|
||||||
|
m_ams_control->SetFilamentStep(FilamentStep::STEP_HEAT_NOZZLE, FilamentStepType::STEP_TYPE_VT_LOAD);
|
||||||
|
}
|
||||||
|
else if (obj->ams_status_sub == 0x05) {
|
||||||
|
m_ams_control->SetFilamentStep(FilamentStep::STEP_FEED_FILAMENT, FilamentStepType::STEP_TYPE_VT_LOAD);
|
||||||
|
}
|
||||||
|
else if (obj->ams_status_sub == 0x06) {
|
||||||
|
m_ams_control->SetFilamentStep(FilamentStep::STEP_CONFIRM_EXTRUDED, FilamentStepType::STEP_TYPE_VT_LOAD);
|
||||||
|
}
|
||||||
|
else if (obj->ams_status_sub == 0x07) {
|
||||||
|
m_ams_control->SetFilamentStep(FilamentStep::STEP_PURGE_OLD_FILAMENT, FilamentStepType::STEP_TYPE_VT_LOAD);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
//FilamentStep::STEP_PULL_CURR_FILAMENT);
|
m_ams_control->SetFilamentStep(FilamentStep::STEP_IDLE, FilamentStepType::STEP_TYPE_VT_LOAD);
|
||||||
m_ams_control->SetFilamentStep(FilamentStep::STEP_PULL_CURR_FILAMENT, false);
|
}
|
||||||
m_ams_control->SetAmsStep(curr_ams_id, obj->m_tray_id, AMSPassRoadType::AMS_ROAD_TYPE_UNLOAD, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
|
} else {
|
||||||
|
// wait to heat hotend
|
||||||
|
if (obj->ams_status_sub == 0x02) {
|
||||||
|
if (curr_ams_id == obj->m_ams_id) {
|
||||||
|
if (!obj->is_ams_unload()) {
|
||||||
|
m_ams_control->SetFilamentStep(FilamentStep::STEP_HEAT_NOZZLE, FilamentStepType::STEP_TYPE_LOAD);
|
||||||
|
} else {
|
||||||
|
m_ams_control->SetFilamentStep(FilamentStep::STEP_HEAT_NOZZLE, FilamentStepType::STEP_TYPE_UNLOAD);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
m_ams_control->SetFilamentStep(FilamentStep::STEP_IDLE, FilamentStepType::STEP_TYPE_UNLOAD);
|
||||||
|
}
|
||||||
|
} else if (obj->ams_status_sub == 0x03) {
|
||||||
|
if (!obj->is_ams_unload()) {
|
||||||
|
m_ams_control->SetFilamentStep(FilamentStep::STEP_CUT_FILAMENT, FilamentStepType::STEP_TYPE_LOAD);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
m_ams_control->SetFilamentStep(FilamentStep::STEP_CUT_FILAMENT, FilamentStepType::STEP_TYPE_UNLOAD);
|
||||||
|
}
|
||||||
|
} else if (obj->ams_status_sub == 0x04) {
|
||||||
|
if (!obj->is_ams_unload()) {
|
||||||
|
m_ams_control->SetFilamentStep(FilamentStep::STEP_PULL_CURR_FILAMENT, FilamentStepType::STEP_TYPE_LOAD);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
m_ams_control->SetFilamentStep(FilamentStep::STEP_PULL_CURR_FILAMENT, FilamentStepType::STEP_TYPE_UNLOAD);
|
||||||
}
|
}
|
||||||
} else if (obj->ams_status_sub == 0x05) {
|
} else if (obj->ams_status_sub == 0x05) {
|
||||||
if (!obj->is_ams_unload()) {
|
if (!obj->is_ams_unload()) {
|
||||||
m_ams_control->SetFilamentStep(FilamentStep::STEP_PUSH_NEW_FILAMENT, true);
|
m_ams_control->SetFilamentStep(FilamentStep::STEP_PUSH_NEW_FILAMENT, FilamentStepType::STEP_TYPE_LOAD);
|
||||||
m_ams_control->SetAmsStep(curr_ams_id, obj->m_tray_id, AMSPassRoadType::AMS_ROAD_TYPE_LOAD, AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP2);
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
m_ams_control->SetFilamentStep(FilamentStep::STEP_PUSH_NEW_FILAMENT, false);
|
m_ams_control->SetFilamentStep(FilamentStep::STEP_PUSH_NEW_FILAMENT, FilamentStepType::STEP_TYPE_UNLOAD);
|
||||||
m_ams_control->SetAmsStep(curr_ams_id, obj->m_tray_id, AMSPassRoadType::AMS_ROAD_TYPE_UNLOAD, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
|
|
||||||
}
|
}
|
||||||
} else if (obj->ams_status_sub == 0x06) {
|
} else if (obj->ams_status_sub == 0x06) {
|
||||||
if (!obj->is_ams_unload()) {
|
if (!obj->is_ams_unload()) {
|
||||||
m_ams_control->SetFilamentStep(FilamentStep::STEP_PUSH_NEW_FILAMENT, true);
|
m_ams_control->SetFilamentStep(FilamentStep::STEP_PUSH_NEW_FILAMENT, FilamentStepType::STEP_TYPE_LOAD);
|
||||||
m_ams_control->SetAmsStep(curr_ams_id, obj->m_tray_id, AMSPassRoadType::AMS_ROAD_TYPE_LOAD, AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP3);
|
}
|
||||||
} else {
|
else {
|
||||||
m_ams_control->SetFilamentStep(FilamentStep::STEP_PUSH_NEW_FILAMENT, false);
|
m_ams_control->SetFilamentStep(FilamentStep::STEP_PUSH_NEW_FILAMENT, FilamentStepType::STEP_TYPE_UNLOAD);
|
||||||
m_ams_control->SetAmsStep(curr_ams_id, obj->m_tray_id, AMSPassRoadType::AMS_ROAD_TYPE_UNLOAD, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
|
|
||||||
}
|
}
|
||||||
} else if (obj->ams_status_sub == 0x07) {
|
} else if (obj->ams_status_sub == 0x07) {
|
||||||
if (!obj->is_ams_unload()) {
|
if (!obj->is_ams_unload()) {
|
||||||
m_ams_control->SetFilamentStep(FilamentStep::STEP_PURGE_OLD_FILAMENT);
|
m_ams_control->SetFilamentStep(FilamentStep::STEP_PURGE_OLD_FILAMENT, FilamentStepType::STEP_TYPE_LOAD);
|
||||||
} else {
|
}
|
||||||
m_ams_control->SetFilamentStep(FilamentStep::STEP_PURGE_OLD_FILAMENT, false);
|
else {
|
||||||
|
m_ams_control->SetFilamentStep(FilamentStep::STEP_PURGE_OLD_FILAMENT, FilamentStepType::STEP_TYPE_UNLOAD);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_ams_control->SetAmsStep(curr_ams_id, obj->m_tray_id, AMSPassRoadType::AMS_ROAD_TYPE_LOAD, AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP3);
|
|
||||||
} else {
|
} else {
|
||||||
m_ams_control->SetAmsStep(curr_ams_id, obj->m_tray_id, AMSPassRoadType::AMS_ROAD_TYPE_UNLOAD, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
|
m_ams_control->SetFilamentStep(FilamentStep::STEP_IDLE, FilamentStepType::STEP_TYPE_UNLOAD);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else if (obj->ams_status_main == AMS_STATUS_MAIN_ASSIST) {
|
} else if (obj->ams_status_main == AMS_STATUS_MAIN_ASSIST) {
|
||||||
m_ams_control->SetFilamentStep(FilamentStep::STEP_IDLE);
|
m_ams_control->SetFilamentStep(FilamentStep::STEP_IDLE, FilamentStepType::STEP_TYPE_LOAD);
|
||||||
if (obj->is_filament_move()) {
|
|
||||||
m_ams_control->SetAmsStep(curr_ams_id, obj->m_tray_id, AMSPassRoadType::AMS_ROAD_TYPE_UNLOAD, AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP3);
|
|
||||||
} else {
|
} else {
|
||||||
m_ams_control->SetAmsStep(curr_ams_id, obj->m_tray_id, AMSPassRoadType::AMS_ROAD_TYPE_UNLOAD, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
|
m_ams_control->SetFilamentStep(FilamentStep::STEP_IDLE, FilamentStepType::STEP_TYPE_LOAD);
|
||||||
}
|
|
||||||
} else {
|
|
||||||
m_ams_control->SetFilamentStep(FilamentStep::STEP_IDLE, false);
|
|
||||||
if (obj->is_filament_move()) {
|
|
||||||
m_ams_control->SetAmsStep(curr_ams_id, obj->m_tray_id, AMSPassRoadType::AMS_ROAD_TYPE_UNLOAD, AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP3);
|
|
||||||
} else {
|
|
||||||
m_ams_control->SetAmsStep(curr_ams_id, obj->m_tray_id, AMSPassRoadType::AMS_ROAD_TYPE_UNLOAD, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
for (auto ams_it = obj->amsList.begin(); ams_it != obj->amsList.end(); ams_it++) {
|
for (auto ams_it = obj->amsList.begin(); ams_it != obj->amsList.end(); ams_it++) {
|
||||||
std::string ams_id = ams_it->first;
|
std::string ams_id = ams_it->first;
|
||||||
try {
|
try {
|
||||||
|
@ -2796,7 +2821,6 @@ void StatusPanel::on_ams_selected(wxCommandEvent &event)
|
||||||
update_ams_control_state(curr_ams_id, obj->is_function_supported(PrinterFunction::FUNC_EXTRUSION_CALI));
|
update_ams_control_state(curr_ams_id, obj->is_function_supported(PrinterFunction::FUNC_EXTRUSION_CALI));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void StatusPanel::on_ams_guide(wxCommandEvent& event)
|
void StatusPanel::on_ams_guide(wxCommandEvent& event)
|
||||||
|
@ -2813,6 +2837,17 @@ void StatusPanel::on_ams_retry(wxCommandEvent& event)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void StatusPanel::on_print_error_func(wxCommandEvent& event)
|
||||||
|
{
|
||||||
|
BOOST_LOG_TRIVIAL(info) << "on_print_error_func";
|
||||||
|
if (obj) {
|
||||||
|
obj->command_ams_control("done");
|
||||||
|
if (m_print_error_dlg) {
|
||||||
|
m_print_error_dlg->on_hide();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void StatusPanel::on_fan_changed(wxCommandEvent& event)
|
void StatusPanel::on_fan_changed(wxCommandEvent& event)
|
||||||
{
|
{
|
||||||
auto type = event.GetInt();
|
auto type = event.GetInt();
|
||||||
|
|
|
@ -312,7 +312,7 @@ protected:
|
||||||
void on_subtask_pause_resume(wxCommandEvent &event);
|
void on_subtask_pause_resume(wxCommandEvent &event);
|
||||||
void on_subtask_abort(wxCommandEvent &event);
|
void on_subtask_abort(wxCommandEvent &event);
|
||||||
void on_print_error_clean(wxCommandEvent &event);
|
void on_print_error_clean(wxCommandEvent &event);
|
||||||
void show_error_message(wxString msg);
|
void show_error_message(wxString msg, std::string print_error_str = "");
|
||||||
void error_info_reset();
|
void error_info_reset();
|
||||||
void show_recenter_dialog();
|
void show_recenter_dialog();
|
||||||
|
|
||||||
|
@ -348,6 +348,7 @@ protected:
|
||||||
void on_ams_selected(wxCommandEvent &event);
|
void on_ams_selected(wxCommandEvent &event);
|
||||||
void on_ams_guide(wxCommandEvent &event);
|
void on_ams_guide(wxCommandEvent &event);
|
||||||
void on_ams_retry(wxCommandEvent &event);
|
void on_ams_retry(wxCommandEvent &event);
|
||||||
|
void on_print_error_func(wxCommandEvent& event);
|
||||||
|
|
||||||
void on_fan_changed(wxCommandEvent& event);
|
void on_fan_changed(wxCommandEvent& event);
|
||||||
void on_switch_speed(wxCommandEvent& event);
|
void on_switch_speed(wxCommandEvent& event);
|
||||||
|
|
|
@ -11,6 +11,7 @@ namespace Slic3r { namespace GUI {
|
||||||
|
|
||||||
static const int LOAD_STEP_COUNT = 5;
|
static const int LOAD_STEP_COUNT = 5;
|
||||||
static const int UNLOAD_STEP_COUNT = 3;
|
static const int UNLOAD_STEP_COUNT = 3;
|
||||||
|
static const int VT_LOAD_STEP_COUNT = 4;
|
||||||
|
|
||||||
static const wxColour AMS_TRAY_DEFAULT_COL = wxColour(255, 255, 255);
|
static const wxColour AMS_TRAY_DEFAULT_COL = wxColour(255, 255, 255);
|
||||||
|
|
||||||
|
@ -22,7 +23,18 @@ static wxString FILAMENT_LOAD_STEP_STRING[LOAD_STEP_COUNT] = {
|
||||||
_L("Purge old filament"),
|
_L("Purge old filament"),
|
||||||
};
|
};
|
||||||
|
|
||||||
static wxString FILAMENT_UNLOAD_STEP_STRING[UNLOAD_STEP_COUNT] = {_L("Heat the nozzle"), _L("Cut filament"), _L("Pull back current filament")};
|
static wxString VT_TRAY_LOAD_STEP_STRING[VT_LOAD_STEP_COUNT] = {
|
||||||
|
_L("Heat the nozzle"),
|
||||||
|
_L("Feed new filament from external spool"),
|
||||||
|
_L("Confirm whether the filament has been extruded"),
|
||||||
|
_L("Purge old filament"),
|
||||||
|
};
|
||||||
|
|
||||||
|
static wxString FILAMENT_UNLOAD_STEP_STRING[UNLOAD_STEP_COUNT] = {
|
||||||
|
_L("Heat the nozzle"),
|
||||||
|
_L("Cut filament"),
|
||||||
|
_L("Pull back current filament")
|
||||||
|
};
|
||||||
|
|
||||||
wxDEFINE_EVENT(EVT_AMS_EXTRUSION_CALI, wxCommandEvent);
|
wxDEFINE_EVENT(EVT_AMS_EXTRUSION_CALI, wxCommandEvent);
|
||||||
wxDEFINE_EVENT(EVT_AMS_LOAD, SimpleEvent);
|
wxDEFINE_EVENT(EVT_AMS_LOAD, SimpleEvent);
|
||||||
|
@ -1805,9 +1817,15 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons
|
||||||
m_filament_unload_step->SetSize(AMS_STEP_SIZE);
|
m_filament_unload_step->SetSize(AMS_STEP_SIZE);
|
||||||
m_filament_unload_step->SetBackgroundColour(*wxWHITE);
|
m_filament_unload_step->SetBackgroundColour(*wxWHITE);
|
||||||
|
|
||||||
|
m_filament_vt_load_step = new ::StepIndicator(m_simplebook_right, wxID_ANY);
|
||||||
|
m_filament_vt_load_step->SetMinSize(AMS_STEP_SIZE);
|
||||||
|
m_filament_vt_load_step->SetSize(AMS_STEP_SIZE);
|
||||||
|
m_filament_vt_load_step->SetBackgroundColour(*wxWHITE);
|
||||||
|
|
||||||
m_simplebook_right->AddPage(tip_right, wxEmptyString, false);
|
m_simplebook_right->AddPage(tip_right, wxEmptyString, false);
|
||||||
m_simplebook_right->AddPage(m_filament_load_step, wxEmptyString, false);
|
m_simplebook_right->AddPage(m_filament_load_step, wxEmptyString, false);
|
||||||
m_simplebook_right->AddPage(m_filament_unload_step, wxEmptyString, false);
|
m_simplebook_right->AddPage(m_filament_unload_step, wxEmptyString, false);
|
||||||
|
m_simplebook_right->AddPage(m_filament_vt_load_step, wxEmptyString, false);
|
||||||
|
|
||||||
|
|
||||||
m_button_ams_setting_normal = ScalableBitmap(this, "ams_setting_normal", 24);
|
m_button_ams_setting_normal = ScalableBitmap(this, "ams_setting_normal", 24);
|
||||||
|
@ -2169,8 +2187,15 @@ void AMSControl::msw_rescale()
|
||||||
|
|
||||||
void AMSControl::UpdateStepCtrl()
|
void AMSControl::UpdateStepCtrl()
|
||||||
{
|
{
|
||||||
for (int i = 0; i < LOAD_STEP_COUNT; i++) { m_filament_load_step->AppendItem(FILAMENT_LOAD_STEP_STRING[i]); }
|
for (int i = 0; i < LOAD_STEP_COUNT; i++) {
|
||||||
for (int i = 0; i < UNLOAD_STEP_COUNT; i++) { m_filament_unload_step->AppendItem(FILAMENT_UNLOAD_STEP_STRING[i]); }
|
m_filament_load_step->AppendItem(FILAMENT_LOAD_STEP_STRING[i]);
|
||||||
|
}
|
||||||
|
for (int i = 0; i < UNLOAD_STEP_COUNT; i++) {
|
||||||
|
m_filament_unload_step->AppendItem(FILAMENT_UNLOAD_STEP_STRING[i]);
|
||||||
|
}
|
||||||
|
for (int i = 0; i < VT_LOAD_STEP_COUNT; i++) {
|
||||||
|
m_filament_vt_load_step->AppendItem(VT_TRAY_LOAD_STEP_STRING[i]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void AMSControl::CreateAms()
|
void AMSControl::CreateAms()
|
||||||
|
@ -2403,26 +2428,56 @@ void AMSControl::SwitchAms(std::string ams_id)
|
||||||
// update buttons
|
// update buttons
|
||||||
}
|
}
|
||||||
|
|
||||||
void AMSControl::SetFilamentStep(int item_idx, bool isload)
|
void AMSControl::SetFilamentStep(int item_idx, FilamentStepType f_type)
|
||||||
{
|
{
|
||||||
if (item_idx == FilamentStep::STEP_IDLE && isload) {
|
if (item_idx == FilamentStep::STEP_IDLE) {
|
||||||
|
m_simplebook_right->SetSelection(0);
|
||||||
m_filament_load_step->Idle();
|
m_filament_load_step->Idle();
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (item_idx == FilamentStep::STEP_IDLE && !isload) {
|
|
||||||
m_filament_unload_step->Idle();
|
m_filament_unload_step->Idle();
|
||||||
|
m_filament_vt_load_step->Idle();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (item_idx >= 0 && isload && item_idx < FilamentStep::STEP_COUNT) {
|
if (f_type == FilamentStepType::STEP_TYPE_LOAD) {
|
||||||
|
if (item_idx > 0 && item_idx < FilamentStep::STEP_COUNT) {
|
||||||
|
m_simplebook_right->SetSelection(1);
|
||||||
|
m_filament_load_step->SelectItem(item_idx - 1);
|
||||||
|
} else {
|
||||||
|
m_filament_load_step->Idle();
|
||||||
|
}
|
||||||
|
} else if (f_type == FilamentStepType::STEP_TYPE_UNLOAD) {
|
||||||
|
if (item_idx > 0 && item_idx < FilamentStep::STEP_COUNT) {
|
||||||
|
m_simplebook_right->SetSelection(2);
|
||||||
|
m_filament_unload_step->SelectItem(item_idx - 1);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
m_filament_unload_step->Idle();
|
||||||
|
}
|
||||||
|
} else if (f_type == FilamentStepType::STEP_TYPE_VT_LOAD) {
|
||||||
|
m_simplebook_right->SetSelection(3);
|
||||||
|
if (item_idx == STEP_HEAT_NOZZLE) {
|
||||||
|
m_filament_vt_load_step->SelectItem(0);
|
||||||
|
}
|
||||||
|
else if (item_idx == STEP_FEED_FILAMENT) {
|
||||||
|
m_filament_vt_load_step->SelectItem(1);
|
||||||
|
}
|
||||||
|
else if (item_idx == STEP_CONFIRM_EXTRUDED) {
|
||||||
|
m_filament_vt_load_step->SelectItem(2);
|
||||||
|
}
|
||||||
|
else if (item_idx == STEP_PURGE_OLD_FILAMENT) {
|
||||||
|
m_filament_vt_load_step->SelectItem(3);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
m_filament_vt_load_step->Idle();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (item_idx > 0 && item_idx < FilamentStep::STEP_COUNT) {
|
||||||
m_simplebook_right->SetSelection(1);
|
m_simplebook_right->SetSelection(1);
|
||||||
m_filament_load_step->SelectItem(item_idx - 1);
|
m_filament_load_step->SelectItem(item_idx - 1);
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
if (item_idx >= 0 && !isload && item_idx < FilamentStep::STEP_COUNT) {
|
m_filament_load_step->Idle();
|
||||||
m_simplebook_right->SetSelection(2);
|
}
|
||||||
m_filament_unload_step->SelectItem(item_idx - 1);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2470,6 +2525,15 @@ bool AMSControl::Enable(bool enable)
|
||||||
return wxWindow::Enable(enable);
|
return wxWindow::Enable(enable);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AMSControl::SetExtruder(bool on_off, wxColour col)
|
||||||
|
{
|
||||||
|
if (!on_off) {
|
||||||
|
m_extruder->TurnOff();
|
||||||
|
} else {
|
||||||
|
m_extruder->TurnOn(col);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void AMSControl::SetAmsStep(std::string ams_id, std::string canid, AMSPassRoadType type, AMSPassRoadSTEP step)
|
void AMSControl::SetAmsStep(std::string ams_id, std::string canid, AMSPassRoadType type, AMSPassRoadSTEP step)
|
||||||
{
|
{
|
||||||
AmsCansWindow *cans = nullptr;
|
AmsCansWindow *cans = nullptr;
|
||||||
|
@ -2487,25 +2551,22 @@ void AMSControl::SetAmsStep(std::string ams_id, std::string canid, AMSPassRoadTy
|
||||||
if (cans == nullptr) return;
|
if (cans == nullptr) return;
|
||||||
|
|
||||||
if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_NONE) {
|
if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_NONE) {
|
||||||
if (ams_id == m_current_ams) { m_extruder->TurnOff(); }
|
|
||||||
cans->amsCans->SetAmsStep(canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
|
cans->amsCans->SetAmsStep(canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP1) {
|
if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP1) {
|
||||||
if (ams_id == m_current_ams) { m_extruder->TurnOff(); }
|
|
||||||
cans->amsCans->SetAmsStep(canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_1);
|
cans->amsCans->SetAmsStep(canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_1);
|
||||||
cans->amsCans->SetAmsStep(canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_2);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP2) {
|
if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP2) {
|
||||||
if (ams_id == m_current_ams) { m_extruder->TurnOn(GetCanColour(ams_id, canid)); }
|
cans->amsCans->SetAmsStep(canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_1);
|
||||||
cans->amsCans->SetAmsStep(canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
|
cans->amsCans->SetAmsStep(canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_2);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP3) {
|
if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP3) {
|
||||||
if (ams_id == m_current_ams) { m_extruder->TurnOn(GetCanColour(ams_id, canid)); }
|
|
||||||
cans->amsCans->SetAmsStep(canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_1);
|
cans->amsCans->SetAmsStep(canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_1);
|
||||||
cans->amsCans->SetAmsStep(canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_2);
|
cans->amsCans->SetAmsStep(canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_2);
|
||||||
|
cans->amsCans->SetAmsStep(canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_3);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (auto i = 0; i < m_ams_info.size(); i++) {
|
for (auto i = 0; i < m_ams_info.size(); i++) {
|
||||||
|
@ -2514,14 +2575,6 @@ void AMSControl::SetAmsStep(std::string ams_id, std::string canid, AMSPassRoadTy
|
||||||
m_ams_info[i].current_can_id = canid;
|
m_ams_info[i].current_can_id = canid;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (type == AMSPassRoadType::AMS_ROAD_TYPE_LOAD) {
|
|
||||||
SetActionState(AMSAction::AMS_ACTION_LOAD);
|
|
||||||
} else if (type == AMSPassRoadType::AMS_ROAD_TYPE_UNLOAD) {
|
|
||||||
SetActionState(AMSAction::AMS_ACTION_UNLOAD);
|
|
||||||
} else if (type == AMSPassRoadType::AMS_ROAD_TYPE_NONE) {
|
|
||||||
SetActionState(AMSAction::AMS_ACTION_NORMAL);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void AMSControl::on_filament_load(wxCommandEvent &event)
|
void AMSControl::on_filament_load(wxCommandEvent &event)
|
||||||
|
|
|
@ -95,9 +95,17 @@ enum FilamentStep {
|
||||||
STEP_PULL_CURR_FILAMENT,
|
STEP_PULL_CURR_FILAMENT,
|
||||||
STEP_PUSH_NEW_FILAMENT,
|
STEP_PUSH_NEW_FILAMENT,
|
||||||
STEP_PURGE_OLD_FILAMENT,
|
STEP_PURGE_OLD_FILAMENT,
|
||||||
|
STEP_FEED_FILAMENT,
|
||||||
|
STEP_CONFIRM_EXTRUDED,
|
||||||
STEP_COUNT,
|
STEP_COUNT,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum FilamentStepType {
|
||||||
|
STEP_TYPE_LOAD = 0,
|
||||||
|
STEP_TYPE_UNLOAD = 1,
|
||||||
|
STEP_TYPE_VT_LOAD = 2,
|
||||||
|
};
|
||||||
|
|
||||||
#define AMS_ITEM_CUBE_SIZE wxSize(FromDIP(14), FromDIP(14))
|
#define AMS_ITEM_CUBE_SIZE wxSize(FromDIP(14), FromDIP(14))
|
||||||
#define AMS_ITEM_SIZE wxSize(FromDIP(82), FromDIP(27))
|
#define AMS_ITEM_SIZE wxSize(FromDIP(82), FromDIP(27))
|
||||||
#define AMS_ITEM_HUMIDITY_SIZE wxSize(FromDIP(120), FromDIP(27))
|
#define AMS_ITEM_HUMIDITY_SIZE wxSize(FromDIP(120), FromDIP(27))
|
||||||
|
@ -495,6 +503,7 @@ protected:
|
||||||
|
|
||||||
::StepIndicator *m_filament_load_step = {nullptr};
|
::StepIndicator *m_filament_load_step = {nullptr};
|
||||||
::StepIndicator *m_filament_unload_step = {nullptr};
|
::StepIndicator *m_filament_unload_step = {nullptr};
|
||||||
|
::StepIndicator *m_filament_vt_load_step = {nullptr};
|
||||||
|
|
||||||
Button *m_button_extruder_feed = {nullptr};
|
Button *m_button_extruder_feed = {nullptr};
|
||||||
Button *m_button_extruder_back = {nullptr};
|
Button *m_button_extruder_back = {nullptr};
|
||||||
|
@ -528,7 +537,7 @@ public:
|
||||||
void PlayRridLoading(wxString amsid, wxString canid);
|
void PlayRridLoading(wxString amsid, wxString canid);
|
||||||
void StopRridLoading(wxString amsid, wxString canid);
|
void StopRridLoading(wxString amsid, wxString canid);
|
||||||
|
|
||||||
void SetFilamentStep(int item_idx, bool isload = true);
|
void SetFilamentStep(int item_idx, FilamentStepType f_type);
|
||||||
void ShowFilamentTip(bool hasams = true);
|
void ShowFilamentTip(bool hasams = true);
|
||||||
|
|
||||||
void SetHumidity(std::string amsid, int humidity);
|
void SetHumidity(std::string amsid, int humidity);
|
||||||
|
@ -536,6 +545,7 @@ public:
|
||||||
void CreateAms();
|
void CreateAms();
|
||||||
void UpdateAms(std::vector<AMSinfo> info, bool keep_selection = true, bool has_extrusion_cali = true);
|
void UpdateAms(std::vector<AMSinfo> info, bool keep_selection = true, bool has_extrusion_cali = true);
|
||||||
void AddAms(AMSinfo info, bool refresh = true);
|
void AddAms(AMSinfo info, bool refresh = true);
|
||||||
|
void SetExtruder(bool on_off, wxColour col);
|
||||||
void SetAmsStep(std::string ams_id, std::string canid, AMSPassRoadType type, AMSPassRoadSTEP step);
|
void SetAmsStep(std::string ams_id, std::string canid, AMSPassRoadType type, AMSPassRoadSTEP step);
|
||||||
void SwitchAms(std::string ams_id);
|
void SwitchAms(std::string ams_id);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue