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]
|
||||
M106 S255
|
||||
M104 S142
|
||||
M104 S250
|
||||
M17 S
|
||||
M17 X0.5 Y0.5
|
||||
G91
|
||||
|
@ -9,24 +9,24 @@ G1 Z3
|
|||
G90
|
||||
G28 X
|
||||
M17 R
|
||||
G1 X70 F12000
|
||||
G1 X70 F21000
|
||||
G1 Y245
|
||||
G1 Y265 F3000
|
||||
G4
|
||||
M106 S0
|
||||
M109 S250
|
||||
G4 S10
|
||||
G1 X90
|
||||
G1 Y255
|
||||
G1 X120
|
||||
G1 X20 Y50 F12000
|
||||
G1 X20 Y50 F21000
|
||||
G1 Y-3
|
||||
T[next_extruder]
|
||||
G1 X54
|
||||
G1 Y265
|
||||
G92 E0
|
||||
G1 E40 F180
|
||||
M109 S[new_filament_temp]
|
||||
G4
|
||||
M104 S[new_filament_temp]
|
||||
G1 X70 F15000
|
||||
G1 X76
|
||||
G1 X65
|
||||
|
|
|
@ -1,35 +1,32 @@
|
|||
M620 S255
|
||||
M106 P1 S255
|
||||
M104 S142
|
||||
M104 S250
|
||||
M17 S
|
||||
M17 X0.5 Y0.5
|
||||
G91
|
||||
G1 Y-5 F3000
|
||||
G1 Z3.0 F1200
|
||||
G1 Z3 F1200
|
||||
G90
|
||||
G28 X
|
||||
M17 R
|
||||
|
||||
G1 X70 F12000
|
||||
G1 X70 F21000
|
||||
G1 Y245
|
||||
G1 Y265 F3000
|
||||
M400
|
||||
G4
|
||||
M106 P1 S0
|
||||
M109 S250
|
||||
G4 S10
|
||||
G1 X90 F3000
|
||||
G1 Y255 F4000
|
||||
G1 X100 F5000
|
||||
G1 X120 F12000
|
||||
|
||||
G1 X20 Y50 F12000
|
||||
G1 X120 F21000
|
||||
G1 X20 Y50
|
||||
G1 Y-3
|
||||
|
||||
T255
|
||||
G4
|
||||
M104 S0
|
||||
G1 X70 F3000
|
||||
|
||||
G91
|
||||
G1 Z-3.0 F1200
|
||||
G1 Z-3 F1200
|
||||
G90
|
||||
M621 S255
|
|
@ -1562,9 +1562,8 @@ int MachineObject::command_ams_switch(int tray_index, int old_temp, int new_temp
|
|||
std::string gcode = "";
|
||||
if (tray_index == 255) {
|
||||
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 {
|
||||
// include VIRTUAL_TRAY_ID
|
||||
gcode = DeviceManager::load_gcode(printer_type, "ams_load.gcode");
|
||||
boost::replace_all(gcode, "[next_extruder]", std::to_string(tray_index));
|
||||
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)
|
||||
{
|
||||
//valid actions
|
||||
if (action == "resume" || action == "reset" || action == "pause") {
|
||||
if (action == "resume" || action == "reset" || action == "pause" || action == "done") {
|
||||
json j;
|
||||
j["print"]["command"] = "ams_control";
|
||||
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)
|
||||
{
|
||||
try {
|
||||
int code = 0;
|
||||
std::string error;
|
||||
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));
|
||||
return result;
|
||||
} catch(...) {
|
||||
;
|
||||
}
|
||||
return wxEmptyString;
|
||||
}
|
||||
|
||||
void PrintJob::process()
|
||||
|
|
|
@ -26,6 +26,7 @@ namespace Slic3r { namespace GUI {
|
|||
|
||||
wxDEFINE_EVENT(EVT_SECONDARY_CHECK_CONFIRM, wxCommandEvent);
|
||||
wxDEFINE_EVENT(EVT_SECONDARY_CHECK_CANCEL, wxCommandEvent);
|
||||
wxDEFINE_EVENT(EVT_SECONDARY_CHECK_FUNC, wxCommandEvent);
|
||||
wxDEFINE_EVENT(EVT_CHECKBOX_CHANGE, wxCommandEvent);
|
||||
wxDEFINE_EVENT(EVT_ENTER_IP_ADDRESS, wxCommandEvent);
|
||||
wxDEFINE_EVENT(EVT_CLOSE_IPADDRESS_DLG, wxCommandEvent);
|
||||
|
@ -592,12 +593,32 @@ SecondaryCheckDialog::SecondaryCheckDialog(wxWindow* parent, wxWindowID id, cons
|
|||
this->on_hide();
|
||||
});
|
||||
|
||||
if (btn_style != CONFIRM_AND_CANCEL)
|
||||
m_button_cancel->Hide();
|
||||
else
|
||||
m_button_fn = new Button(this, _L("Done"));
|
||||
m_button_fn->SetBackgroundColor(btn_bg_white);
|
||||
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_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->Add(m_button_fn, 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(FromDIP(5),0, 0, 0);
|
||||
|
@ -619,6 +640,16 @@ SecondaryCheckDialog::SecondaryCheckDialog(wxWindow* parent, wxWindowID id, cons
|
|||
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)
|
||||
{
|
||||
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)
|
||||
{
|
||||
m_button_ok->SetLabel(ok_btn_text);
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
#include <wx/spinctrl.h>
|
||||
#include <wx/artprov.h>
|
||||
#include <wx/wrapsizer.h>
|
||||
#include <wx/event.h>
|
||||
|
||||
#include "AmsMappingPopup.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_CANCEL, wxCommandEvent);
|
||||
wxDECLARE_EVENT(EVT_SECONDARY_CHECK_FUNC, wxCommandEvent);
|
||||
|
||||
class ReleaseNoteDialog : public DPIDialog
|
||||
{
|
||||
|
@ -98,11 +100,14 @@ public:
|
|||
|
||||
class SecondaryCheckDialog : public DPIFrame
|
||||
{
|
||||
private:
|
||||
wxWindow* event_parent { nullptr };
|
||||
public:
|
||||
enum ButtonStyle {
|
||||
ONLY_CONFIRM = 0,
|
||||
CONFIRM_AND_CANCEL = 1,
|
||||
MAX_STYLE_NUM = 2
|
||||
CONFIRM_AND_FUNC = 2,
|
||||
MAX_STYLE_NUM = 3
|
||||
};
|
||||
SecondaryCheckDialog(
|
||||
wxWindow* parent,
|
||||
|
@ -118,6 +123,9 @@ public:
|
|||
void on_show();
|
||||
void on_hide();
|
||||
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();
|
||||
~SecondaryCheckDialog();
|
||||
void on_dpi_changed(const wxRect& suggested_rect);
|
||||
|
@ -125,8 +133,9 @@ public:
|
|||
Label* m_staticText_release_note {nullptr};
|
||||
wxBoxSizer* m_sizer_main;
|
||||
wxScrolledWindow *m_vebview_release_note {nullptr};
|
||||
Button* m_button_ok;
|
||||
Button* m_button_cancel;
|
||||
Button* m_button_ok { nullptr };
|
||||
Button* m_button_cancel { nullptr };
|
||||
Button* m_button_fn { nullptr };
|
||||
wxCheckBox* m_show_again_checkbox;
|
||||
bool not_show_again = false;
|
||||
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_RETRY, &StatusPanel::on_ams_retry, 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_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();
|
||||
}
|
||||
|
||||
void StatusPanel::show_error_message(wxString msg)
|
||||
void StatusPanel::show_error_message(wxString msg, std::string print_error_str)
|
||||
{
|
||||
if (msg.IsEmpty()) {
|
||||
if (m_panel_error_txt->IsShown()) {
|
||||
|
@ -1611,6 +1611,12 @@ void StatusPanel::show_error_message(wxString msg)
|
|||
if (m_print_error_dlg == nullptr) {
|
||||
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->on_show();
|
||||
}
|
||||
|
@ -1638,7 +1644,7 @@ void StatusPanel::update_error_message()
|
|||
error_msg = wxString::Format("%s[%s]",
|
||||
error_msg,
|
||||
print_error_str);
|
||||
show_error_message(error_msg);
|
||||
show_error_message(error_msg, print_error_str);
|
||||
} else {
|
||||
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_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)) {
|
||||
m_ams_control->SetAmsStep(curr_ams_id, curr_can_id, AMSPassRoadType::AMS_ROAD_TYPE_NONE, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
|
||||
// set segment 1, 2
|
||||
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) {
|
||||
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);
|
||||
else if (obj->m_tray_now != "255") {
|
||||
m_ams_control->SetAmsStep(curr_ams_id, obj->m_tray_id, AMSPassRoadType::AMS_ROAD_TYPE_LOAD, AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP1);
|
||||
}
|
||||
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_COMBO_LOAD_STEP3);
|
||||
m_ams_control->SetAmsStep(curr_ams_id, obj->m_tray_id, AMSPassRoadType::AMS_ROAD_TYPE_UNLOAD, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
|
||||
}
|
||||
} 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) {
|
||||
if (!obj->is_ams_unload()) {
|
||||
m_ams_control->SetFilamentStep(FilamentStep::STEP_PULL_CURR_FILAMENT, true);
|
||||
m_ams_control->SetAmsStep(curr_ams_id, obj->m_tray_id, AMSPassRoadType::AMS_ROAD_TYPE_LOAD, AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP2);
|
||||
// set segment 3
|
||||
if (m_ams_control->GetCurentAms() == std::to_string(VIRTUAL_TRAY_ID)) {
|
||||
m_ams_control->SetExtruder(obj->is_filament_at_extruder(), obj->vt_tray.get_color());
|
||||
} 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 {
|
||||
//FilamentStep::STEP_PULL_CURR_FILAMENT);
|
||||
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);
|
||||
m_ams_control->SetFilamentStep(FilamentStep::STEP_IDLE, FilamentStepType::STEP_TYPE_VT_LOAD);
|
||||
}
|
||||
} 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) {
|
||||
if (!obj->is_ams_unload()) {
|
||||
m_ams_control->SetFilamentStep(FilamentStep::STEP_PUSH_NEW_FILAMENT, true);
|
||||
m_ams_control->SetAmsStep(curr_ams_id, obj->m_tray_id, AMSPassRoadType::AMS_ROAD_TYPE_LOAD, AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP2);
|
||||
m_ams_control->SetFilamentStep(FilamentStep::STEP_PUSH_NEW_FILAMENT, FilamentStepType::STEP_TYPE_LOAD);
|
||||
}
|
||||
else {
|
||||
m_ams_control->SetFilamentStep(FilamentStep::STEP_PUSH_NEW_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->SetFilamentStep(FilamentStep::STEP_PUSH_NEW_FILAMENT, FilamentStepType::STEP_TYPE_UNLOAD);
|
||||
}
|
||||
} else if (obj->ams_status_sub == 0x06) {
|
||||
if (!obj->is_ams_unload()) {
|
||||
m_ams_control->SetFilamentStep(FilamentStep::STEP_PUSH_NEW_FILAMENT, true);
|
||||
m_ams_control->SetAmsStep(curr_ams_id, obj->m_tray_id, AMSPassRoadType::AMS_ROAD_TYPE_LOAD, AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP3);
|
||||
} else {
|
||||
m_ams_control->SetFilamentStep(FilamentStep::STEP_PUSH_NEW_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->SetFilamentStep(FilamentStep::STEP_PUSH_NEW_FILAMENT, FilamentStepType::STEP_TYPE_LOAD);
|
||||
}
|
||||
else {
|
||||
m_ams_control->SetFilamentStep(FilamentStep::STEP_PUSH_NEW_FILAMENT, FilamentStepType::STEP_TYPE_UNLOAD);
|
||||
}
|
||||
} else if (obj->ams_status_sub == 0x07) {
|
||||
if (!obj->is_ams_unload()) {
|
||||
m_ams_control->SetFilamentStep(FilamentStep::STEP_PURGE_OLD_FILAMENT);
|
||||
} else {
|
||||
m_ams_control->SetFilamentStep(FilamentStep::STEP_PURGE_OLD_FILAMENT, false);
|
||||
m_ams_control->SetFilamentStep(FilamentStep::STEP_PURGE_OLD_FILAMENT, FilamentStepType::STEP_TYPE_LOAD);
|
||||
}
|
||||
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 {
|
||||
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) {
|
||||
m_ams_control->SetFilamentStep(FilamentStep::STEP_IDLE);
|
||||
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);
|
||||
m_ams_control->SetFilamentStep(FilamentStep::STEP_IDLE, FilamentStepType::STEP_TYPE_LOAD);
|
||||
} else {
|
||||
m_ams_control->SetAmsStep(curr_ams_id, obj->m_tray_id, AMSPassRoadType::AMS_ROAD_TYPE_UNLOAD, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
|
||||
}
|
||||
} 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);
|
||||
}
|
||||
}
|
||||
m_ams_control->SetFilamentStep(FilamentStep::STEP_IDLE, FilamentStepType::STEP_TYPE_LOAD);
|
||||
}
|
||||
|
||||
|
||||
for (auto ams_it = obj->amsList.begin(); ams_it != obj->amsList.end(); ams_it++) {
|
||||
std::string ams_id = ams_it->first;
|
||||
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));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
auto type = event.GetInt();
|
||||
|
|
|
@ -312,7 +312,7 @@ protected:
|
|||
void on_subtask_pause_resume(wxCommandEvent &event);
|
||||
void on_subtask_abort(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 show_recenter_dialog();
|
||||
|
||||
|
@ -348,6 +348,7 @@ protected:
|
|||
void on_ams_selected(wxCommandEvent &event);
|
||||
void on_ams_guide(wxCommandEvent &event);
|
||||
void on_ams_retry(wxCommandEvent &event);
|
||||
void on_print_error_func(wxCommandEvent& event);
|
||||
|
||||
void on_fan_changed(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 UNLOAD_STEP_COUNT = 3;
|
||||
static const int VT_LOAD_STEP_COUNT = 4;
|
||||
|
||||
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"),
|
||||
};
|
||||
|
||||
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_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->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(m_filament_load_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);
|
||||
|
@ -2169,8 +2187,15 @@ void AMSControl::msw_rescale()
|
|||
|
||||
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 < UNLOAD_STEP_COUNT; i++) { m_filament_unload_step->AppendItem(FILAMENT_UNLOAD_STEP_STRING[i]); }
|
||||
for (int i = 0; i < LOAD_STEP_COUNT; 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()
|
||||
|
@ -2403,26 +2428,56 @@ void AMSControl::SwitchAms(std::string ams_id)
|
|||
// 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();
|
||||
return;
|
||||
}
|
||||
|
||||
if (item_idx == FilamentStep::STEP_IDLE && !isload) {
|
||||
m_filament_unload_step->Idle();
|
||||
m_filament_vt_load_step->Idle();
|
||||
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_filament_load_step->SelectItem(item_idx - 1);
|
||||
}
|
||||
|
||||
if (item_idx >= 0 && !isload && item_idx < FilamentStep::STEP_COUNT) {
|
||||
m_simplebook_right->SetSelection(2);
|
||||
m_filament_unload_step->SelectItem(item_idx - 1);
|
||||
else {
|
||||
m_filament_load_step->Idle();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2470,6 +2525,15 @@ bool AMSControl::Enable(bool 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)
|
||||
{
|
||||
AmsCansWindow *cans = nullptr;
|
||||
|
@ -2487,25 +2551,22 @@ void AMSControl::SetAmsStep(std::string ams_id, std::string canid, AMSPassRoadTy
|
|||
if (cans == nullptr) return;
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
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_2);
|
||||
}
|
||||
|
||||
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_NONE);
|
||||
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_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_2);
|
||||
cans->amsCans->SetAmsStep(canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_3);
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
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)
|
||||
|
|
|
@ -95,9 +95,17 @@ enum FilamentStep {
|
|||
STEP_PULL_CURR_FILAMENT,
|
||||
STEP_PUSH_NEW_FILAMENT,
|
||||
STEP_PURGE_OLD_FILAMENT,
|
||||
STEP_FEED_FILAMENT,
|
||||
STEP_CONFIRM_EXTRUDED,
|
||||
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_SIZE wxSize(FromDIP(82), 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_unload_step = {nullptr};
|
||||
::StepIndicator *m_filament_vt_load_step = {nullptr};
|
||||
|
||||
Button *m_button_extruder_feed = {nullptr};
|
||||
Button *m_button_extruder_back = {nullptr};
|
||||
|
@ -528,7 +537,7 @@ public:
|
|||
void PlayRridLoading(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 SetHumidity(std::string amsid, int humidity);
|
||||
|
@ -536,6 +545,7 @@ public:
|
|||
void CreateAms();
|
||||
void UpdateAms(std::vector<AMSinfo> info, bool keep_selection = true, bool has_extrusion_cali = 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 SwitchAms(std::string ams_id);
|
||||
|
||||
|
|
Loading…
Reference in New Issue