ENH:allow printing of all files in the SD card

Change-Id: I72097ddc1fa1020de2133753f14c0715322ea3cd
This commit is contained in:
tao wang 2023-07-04 17:15:42 +08:00 committed by Lane.Wei
parent d8767b2cfe
commit 9d65199a2b
9 changed files with 51 additions and 25 deletions

View File

@ -235,6 +235,11 @@ void PrintJob::process()
params.task_bed_type = this->task_bed_type; params.task_bed_type = this->task_bed_type;
params.print_type = this->m_print_type; params.print_type = this->m_print_type;
if (m_print_type == "from_sdcard_view") {
params.dst_file = m_dst_path;
}
if (wxGetApp().model().model_info && wxGetApp().model().model_info.get()) { if (wxGetApp().model().model_info && wxGetApp().model().model_info.get()) {
ModelInfo* model_info = wxGetApp().model().model_info.get(); ModelInfo* model_info = wxGetApp().model().model_info.get();
auto origin_profile_id = model_info->metadata_items.find(BBL_DESIGNER_PROFILE_ID_TAG); auto origin_profile_id = model_info->metadata_items.find(BBL_DESIGNER_PROFILE_ID_TAG);
@ -270,7 +275,7 @@ void PrintJob::process()
} }
if (params.preset_name.empty()) { params.preset_name = wxString::Format("%s_plate_%d", m_project_name, curr_plate_idx).ToStdString(); } if (params.preset_name.empty() && m_print_type == "from_normal") { params.preset_name = wxString::Format("%s_plate_%d", m_project_name, curr_plate_idx).ToStdString(); }
if (params.project_name.empty()) {params.project_name = m_project_name;} if (params.project_name.empty()) {params.project_name = m_project_name;}
wxString error_text; wxString error_text;
@ -506,6 +511,12 @@ void PrintJob::set_project_name(std::string name)
m_project_name = name; m_project_name = name;
} }
void PrintJob::set_dst_name(std::string path)
{
m_dst_path = path;
}
void PrintJob::on_check_ip_address_fail(std::function<void()> func) void PrintJob::on_check_ip_address_fail(std::function<void()> func)
{ {
m_enter_ip_address_fun_fail = func; m_enter_ip_address_fun_fail = func;

View File

@ -61,6 +61,7 @@ public:
std::string task_ams_mapping_info; std::string task_ams_mapping_info;
std::string connection_type; std::string connection_type;
std::string m_print_type; std::string m_print_type;
std::string m_dst_path;
int m_print_from_sdc_plate_idx = 0; int m_print_from_sdc_plate_idx = 0;
@ -99,6 +100,7 @@ public:
void process() override; void process() override;
void finalize() override; void finalize() override;
void set_project_name(std::string name); void set_project_name(std::string name);
void set_dst_name(std::string path);
void on_check_ip_address_fail(std::function<void()> func); void on_check_ip_address_fail(std::function<void()> func);
void on_check_ip_address_success(std::function<void()> func); void on_check_ip_address_success(std::function<void()> func);
void connect_to_local_mqtt(); void connect_to_local_mqtt();

View File

@ -510,8 +510,10 @@ void MediaFilePanel::doAction(size_t index, int action)
_L("Error"), wxOK).ShowModal(); _L("Error"), wxOK).ShowModal();
return; return;
} }
auto &file = fs->GetFile(index); auto &file = fs->GetFile(index);
int gcode_file_count = Slic3r::GUI::wxGetApp().plater()->update_print_required_data(config, model, plate_data_list, from_u8(file.name).ToStdString()); int gcode_file_count = Slic3r::GUI::wxGetApp().plater()->update_print_required_data(config, model, plate_data_list, from_u8(file.name).ToStdString(), file.path);
if (gcode_file_count > 0) { if (gcode_file_count > 0) {
wxPostEvent(Slic3r::GUI::wxGetApp().plater(), SimpleEvent(EVT_PRINT_FROM_SDCARD_VIEW)); wxPostEvent(Slic3r::GUI::wxGetApp().plater(), SimpleEvent(EVT_PRINT_FROM_SDCARD_VIEW));

View File

@ -2267,7 +2267,7 @@ struct Plater::priv
//BBS: add popup object table logic //BBS: add popup object table logic
bool PopupObjectTable(int object_id, int volume_id, const wxPoint& position); bool PopupObjectTable(int object_id, int volume_id, const wxPoint& position);
void on_action_send_to_printer(bool isall = false); void on_action_send_to_printer(bool isall = false);
int update_print_required_data(Slic3r::DynamicPrintConfig config, Slic3r::Model model, Slic3r::PlateDataPtrs plate_data_list, std::string file_name); int update_print_required_data(Slic3r::DynamicPrintConfig config, Slic3r::Model model, Slic3r::PlateDataPtrs plate_data_list, std::string file_name, std::string file_path);
private: private:
bool layers_height_allowed() const; bool layers_height_allowed() const;
@ -6312,10 +6312,10 @@ void Plater::priv::on_action_print_plate_from_sdcard(SimpleEvent&)
m_select_machine_dlg->ShowModal(); m_select_machine_dlg->ShowModal();
} }
int Plater::priv::update_print_required_data(Slic3r::DynamicPrintConfig config, Slic3r::Model model, Slic3r::PlateDataPtrs plate_data_list, std::string file_name) int Plater::priv::update_print_required_data(Slic3r::DynamicPrintConfig config, Slic3r::Model model, Slic3r::PlateDataPtrs plate_data_list, std::string file_name, std::string file_path)
{ {
if (!m_select_machine_dlg) m_select_machine_dlg = new SelectMachineDialog(q); if (!m_select_machine_dlg) m_select_machine_dlg = new SelectMachineDialog(q);
return m_select_machine_dlg->update_print_required_data(config, model, plate_data_list, file_name); return m_select_machine_dlg->update_print_required_data(config, model, plate_data_list, file_name, file_path);
} }
void Plater::priv::on_action_send_to_printer(bool isall) void Plater::priv::on_action_send_to_printer(bool isall)
@ -10961,9 +10961,9 @@ bool Plater::undo_redo_string_getter(const bool is_undo, int idx, const char** o
return false; return false;
} }
int Plater::update_print_required_data(Slic3r::DynamicPrintConfig config, Slic3r::Model model, Slic3r::PlateDataPtrs plate_data_list, std::string file_name) int Plater::update_print_required_data(Slic3r::DynamicPrintConfig config, Slic3r::Model model, Slic3r::PlateDataPtrs plate_data_list, std::string file_name, std::string file_path)
{ {
return p->update_print_required_data(config, model, plate_data_list, file_name); return p->update_print_required_data(config, model, plate_data_list, file_name, file_path);
} }

View File

@ -387,7 +387,7 @@ public:
void redo_to(int selection); void redo_to(int selection);
bool undo_redo_string_getter(const bool is_undo, int idx, const char** out_text); bool undo_redo_string_getter(const bool is_undo, int idx, const char** out_text);
void undo_redo_topmost_string_getter(const bool is_undo, std::string& out_text); void undo_redo_topmost_string_getter(const bool is_undo, std::string& out_text);
int update_print_required_data(Slic3r::DynamicPrintConfig config, Slic3r::Model model, Slic3r::PlateDataPtrs plate_data_list, std::string file_name); int update_print_required_data(Slic3r::DynamicPrintConfig config, Slic3r::Model model, Slic3r::PlateDataPtrs plate_data_list, std::string file_name, std::string file_path);
bool search_string_getter(int idx, const char** label, const char** tooltip); bool search_string_getter(int idx, const char** label, const char** tooltip);
// For the memory statistics. // For the memory statistics.
const Slic3r::UndoRedo::Stack& undo_redo_stack_main() const; const Slic3r::UndoRedo::Stack& undo_redo_stack_main() const;

View File

@ -1416,16 +1416,16 @@ void SelectMachineDialog::init_bind()
if (obj->dev_id == e.GetString()) { if (obj->dev_id == e.GetString()) {
m_comboBox_printer->SetValue(obj->dev_name + "(LAN)"); m_comboBox_printer->SetValue(obj->dev_name + "(LAN)");
} }
}else if(e.GetInt() == 1){ }else if(e.GetInt() == 1 && (m_print_type == PrintFromType::FROM_SDCARD_VIEW)){
on_send_print(); on_send_print();
} }
else if (e.GetInt() == -2) { else if (e.GetInt() == -2 && (m_print_type == PrintFromType::FROM_SDCARD_VIEW)) {
show_status(PrintDialogStatus::PrintStatusSendingCanceled); show_status(PrintDialogStatus::PrintStatusSendingCanceled);
prepare_mode(); prepare_mode();
MessageDialog msg_wingow(nullptr, _L("Printer local connection failed, please try again."), "", wxAPPLY | wxOK); MessageDialog msg_wingow(nullptr, _L("Printer local connection failed, please try again."), "", wxAPPLY | wxOK);
msg_wingow.ShowModal(); msg_wingow.ShowModal();
} }
else if (e.GetInt() == 5) { else if (e.GetInt() == 5 && (m_print_type == PrintFromType::FROM_SDCARD_VIEW)) {
show_status(PrintDialogStatus::PrintStatusSendingCanceled); show_status(PrintDialogStatus::PrintStatusSendingCanceled);
prepare_mode(); prepare_mode();
@ -2239,6 +2239,8 @@ void SelectMachineDialog::show_errors(wxString &info)
void SelectMachineDialog::on_ok_btn(wxCommandEvent &event) void SelectMachineDialog::on_ok_btn(wxCommandEvent &event)
{ {
bool has_slice_warnings = false;
DeviceManager* dev = Slic3r::GUI::wxGetApp().getDeviceManager(); DeviceManager* dev = Slic3r::GUI::wxGetApp().getDeviceManager();
if (!dev) return; if (!dev) return;
MachineObject* obj_ = dev->get_selected_machine(); MachineObject* obj_ = dev->get_selected_machine();
@ -2248,17 +2250,15 @@ void SelectMachineDialog::on_ok_btn(wxCommandEvent &event)
std::vector<wxString> confirm_text; std::vector<wxString> confirm_text;
confirm_text.push_back(_L("Please check the following:") + "\n\n"); confirm_text.push_back(_L("Please check the following:") + "\n\n");
#if 1
//Check Printer Model Id //Check Printer Model Id
bool is_same_printer_type = is_same_printer_model(); bool is_same_printer_type = is_same_printer_model();
if (!is_same_printer_type) if (!is_same_printer_type && (m_print_type == PrintFromType::FROM_NORMAL)) {
confirm_text.push_back(_L("The printer type selected when generating G-Code is not consistent with the currently selected printer. It is recommended that you use the same printer type for slicing.") + "\n"); confirm_text.push_back(_L("The printer type selected when generating G-Code is not consistent with the currently selected printer. It is recommended that you use the same printer type for slicing.") + "\n");
#else
bool is_same_printer_type = true;
#endif
//Check slice warnings has_slice_warnings = true;
bool has_slice_warnings = false; }
PartPlate* plate = m_plater->get_partplate_list().get_curr_plate(); PartPlate* plate = m_plater->get_partplate_list().get_curr_plate();
for (auto warning : plate->get_slice_result()->warnings) { for (auto warning : plate->get_slice_result()->warnings) {
@ -2334,7 +2334,7 @@ void SelectMachineDialog::on_ok_btn(wxCommandEvent &event)
confirm_text.push_back(_L("There are some unknown filaments in the AMS mappings. Please check whether they are the required filaments. If they are okay, press \"Confirm\" to start printing.") + "\n"); confirm_text.push_back(_L("There are some unknown filaments in the AMS mappings. Please check whether they are the required filaments. If they are okay, press \"Confirm\" to start printing.") + "\n");
} }
if (!is_same_printer_type || has_slice_warnings) { if (has_slice_warnings) {
wxString confirm_title = _L("Warning"); wxString confirm_title = _L("Warning");
ConfirmBeforeSendDialog confirm_dlg(this, wxID_ANY, confirm_title); ConfirmBeforeSendDialog confirm_dlg(this, wxID_ANY, confirm_title);
confirm_dlg.Bind(EVT_SECONDARY_CHECK_CONFIRM, [this, &confirm_dlg](wxCommandEvent& e) { confirm_dlg.Bind(EVT_SECONDARY_CHECK_CONFIRM, [this, &confirm_dlg](wxCommandEvent& e) {
@ -2542,13 +2542,20 @@ void SelectMachineDialog::on_send_print()
try { try {
m_print_job->m_print_from_sdc_plate_idx = m_required_data_plate_data_list[m_print_plate_idx]->plate_index + 1; m_print_job->m_print_from_sdc_plate_idx = m_required_data_plate_data_list[m_print_plate_idx]->plate_index + 1;
m_print_job->set_dst_name(m_required_data_file_path);
} }
catch (...) {} catch (...) {}
BOOST_LOG_TRIVIAL(info) << "print_job: m_print_plate_idx =" << m_print_job->m_print_from_sdc_plate_idx; BOOST_LOG_TRIVIAL(info) << "print_job: m_print_plate_idx =" << m_print_job->m_print_from_sdc_plate_idx;
auto input_str_arr = wxGetApp().split_str(m_required_data_file_name,".gcode.3mf"); auto input_str_arr = wxGetApp().split_str(m_required_data_file_name, ".gcode.3mf");
if (input_str_arr.size() > 1) { if (input_str_arr.size() <= 1) {
m_print_job->set_project_name(input_str_arr[0]); input_str_arr = wxGetApp().split_str(m_required_data_file_name, ".3mf");
if (input_str_arr.size() > 1) {
m_print_job->set_project_name(wxString(input_str_arr[0]).utf8_string());
}
}
else {
m_print_job->set_project_name(wxString(input_str_arr[0]).utf8_string());
} }
} }
@ -2695,7 +2702,7 @@ bool SelectMachineDialog::is_timeout()
return false; return false;
} }
int SelectMachineDialog::update_print_required_data(Slic3r::DynamicPrintConfig config, Slic3r::Model model, Slic3r::PlateDataPtrs plate_data_list, std::string file_name) int SelectMachineDialog::update_print_required_data(Slic3r::DynamicPrintConfig config, Slic3r::Model model, Slic3r::PlateDataPtrs plate_data_list, std::string file_name, std::string file_path)
{ {
m_required_data_plate_data_list.clear(); m_required_data_plate_data_list.clear();
m_required_data_config = config; m_required_data_config = config;
@ -2708,6 +2715,7 @@ int SelectMachineDialog::update_print_required_data(Slic3r::DynamicPrintConfig c
} }
m_required_data_file_name = file_name; m_required_data_file_name = file_name;
m_required_data_file_path = file_path;
return m_required_data_plate_data_list.size(); return m_required_data_plate_data_list.size();
} }

View File

@ -315,6 +315,7 @@ private:
Slic3r::Model m_required_data_model; Slic3r::Model m_required_data_model;
Slic3r::PlateDataPtrs m_required_data_plate_data_list; Slic3r::PlateDataPtrs m_required_data_plate_data_list;
std::string m_required_data_file_name; std::string m_required_data_file_name;
std::string m_required_data_file_path;
protected: protected:
PrintFromType m_print_type{FROM_NORMAL}; PrintFromType m_print_type{FROM_NORMAL};
@ -446,7 +447,7 @@ public:
bool is_blocking_printing(); bool is_blocking_printing();
bool has_tips(MachineObject* obj); bool has_tips(MachineObject* obj);
bool is_timeout(); bool is_timeout();
int update_print_required_data(Slic3r::DynamicPrintConfig config, Slic3r::Model model, Slic3r::PlateDataPtrs plate_data_list, std::string file_name); int update_print_required_data(Slic3r::DynamicPrintConfig config, Slic3r::Model model, Slic3r::PlateDataPtrs plate_data_list, std::string file_name, std::string file_path);
void set_print_type(PrintFromType type) {m_print_type = type;}; void set_print_type(PrintFromType type) {m_print_type = type;};
bool Show(bool show); bool Show(bool show);
bool do_ams_mapping(MachineObject* obj_); bool do_ams_mapping(MachineObject* obj_);

View File

@ -176,6 +176,7 @@ struct PrintParams {
int origin_profile_id = 0; int origin_profile_id = 0;
std::string origin_model_id; std::string origin_model_id;
std::string print_type; std::string print_type;
std::string dst_file;
/* access options */ /* access options */
std::string dev_ip; std::string dev_ip;

View File

@ -12,4 +12,5 @@ set(BBL_INTERNAL_TESTING "1")
endif() endif()
# The build_version should start from 50 in master branch # The build_version should start from 50 in master branch
set(SLIC3R_VERSION "01.06.09.57")
set(SLIC3R_VERSION "01.06.10.51")