Fix: Schedule SLA print uploads too (the same way as FFF)
This commit is contained in:
parent
ee8df7b408
commit
4d70546a05
@ -84,26 +84,7 @@ void BackgroundSlicingProcess::process_fff()
|
|||||||
run_post_process_scripts(export_path, m_fff_print->config());
|
run_post_process_scripts(export_path, m_fff_print->config());
|
||||||
m_print->set_status(100, "G-code file exported to " + export_path);
|
m_print->set_status(100, "G-code file exported to " + export_path);
|
||||||
} else if (! m_upload_job.empty()) {
|
} else if (! m_upload_job.empty()) {
|
||||||
// A print host upload job has been scheduled
|
prepare_upload();
|
||||||
|
|
||||||
// XXX: is fs::path::string() right?
|
|
||||||
|
|
||||||
// Generate a unique temp path to which the gcode is copied
|
|
||||||
boost::filesystem::path source_path = boost::filesystem::temp_directory_path()
|
|
||||||
/ boost::filesystem::unique_path(".printhost.%%%%-%%%%-%%%%-%%%%.gcode");
|
|
||||||
|
|
||||||
if (copy_file(m_temp_output_path, source_path.string()) != 0) {
|
|
||||||
throw std::runtime_error("Copying of the temporary G-code to the output G-code failed");
|
|
||||||
}
|
|
||||||
|
|
||||||
m_print->set_status(95, "Running post-processing scripts");
|
|
||||||
run_post_process_scripts(source_path.string(), m_fff_print->config());
|
|
||||||
m_print->set_status(100, (boost::format("Scheduling upload to `%1%`. See Window -> Print Host Upload Queue") % m_upload_job.printhost->get_host()).str());
|
|
||||||
|
|
||||||
m_upload_job.upload_data.source_path = std::move(source_path);
|
|
||||||
m_upload_job.upload_data.upload_path = m_fff_print->print_statistics().finalize_output_path(m_upload_job.upload_data.upload_path.string());
|
|
||||||
|
|
||||||
GUI::wxGetApp().printhost_job_queue().enqueue(std::move(m_upload_job));
|
|
||||||
} else {
|
} else {
|
||||||
m_print->set_status(100, "Slicing complete");
|
m_print->set_status(100, "Slicing complete");
|
||||||
}
|
}
|
||||||
@ -170,6 +151,10 @@ void BackgroundSlicingProcess::process_sla()
|
|||||||
if (! m_export_path.empty()) {
|
if (! m_export_path.empty()) {
|
||||||
m_sla_print->export_raster<SLAZipFmt>(m_export_path);
|
m_sla_print->export_raster<SLAZipFmt>(m_export_path);
|
||||||
m_print->set_status(100, "Zip file exported to " + m_export_path);
|
m_print->set_status(100, "Zip file exported to " + m_export_path);
|
||||||
|
} else if (! m_upload_job.empty()) {
|
||||||
|
prepare_upload();
|
||||||
|
} else {
|
||||||
|
m_print->set_status(100, "Slicing complete");
|
||||||
}
|
}
|
||||||
this->set_step_done(bspsGCodeFinalize);
|
this->set_step_done(bspsGCodeFinalize);
|
||||||
}
|
}
|
||||||
@ -440,4 +425,35 @@ bool BackgroundSlicingProcess::invalidate_all_steps()
|
|||||||
return m_step_state.invalidate_all([this](){ this->stop_internal(); });
|
return m_step_state.invalidate_all([this](){ this->stop_internal(); });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void BackgroundSlicingProcess::prepare_upload()
|
||||||
|
{
|
||||||
|
// A print host upload job has been scheduled, enqueue it to the printhost job queue
|
||||||
|
|
||||||
|
// XXX: is fs::path::string() right?
|
||||||
|
|
||||||
|
// Generate a unique temp path to which the gcode/zip file is copied/exported
|
||||||
|
boost::filesystem::path source_path = boost::filesystem::temp_directory_path()
|
||||||
|
/ boost::filesystem::unique_path(".printhost.%%%%-%%%%-%%%%-%%%%.gcode");
|
||||||
|
|
||||||
|
if (m_print == m_fff_print) {
|
||||||
|
m_print->set_status(95, "Running post-processing scripts");
|
||||||
|
run_post_process_scripts(source_path.string(), m_fff_print->config());
|
||||||
|
|
||||||
|
if (copy_file(m_temp_output_path, source_path.string()) != 0) {
|
||||||
|
throw std::runtime_error("Copying of the temporary G-code to the output G-code failed");
|
||||||
|
}
|
||||||
|
|
||||||
|
m_upload_job.upload_data.upload_path = m_fff_print->print_statistics().finalize_output_path(m_upload_job.upload_data.upload_path.string());
|
||||||
|
} else {
|
||||||
|
m_sla_print->export_raster<SLAZipFmt>(source_path.string());
|
||||||
|
// TODO: Also finalize upload path like with FFF when there are statistics for SLA print
|
||||||
|
}
|
||||||
|
|
||||||
|
m_print->set_status(100, (boost::format("Scheduling upload to `%1%`. See Window -> Print Host Upload Queue") % m_upload_job.printhost->get_host()).str());
|
||||||
|
|
||||||
|
m_upload_job.upload_data.source_path = std::move(source_path);
|
||||||
|
|
||||||
|
GUI::wxGetApp().printhost_job_queue().enqueue(std::move(m_upload_job));
|
||||||
|
}
|
||||||
|
|
||||||
}; // namespace Slic3r
|
}; // namespace Slic3r
|
||||||
|
@ -167,6 +167,7 @@ private:
|
|||||||
bool invalidate_all_steps();
|
bool invalidate_all_steps();
|
||||||
// If the background processing stop was requested, throw CanceledException.
|
// If the background processing stop was requested, throw CanceledException.
|
||||||
void throw_if_canceled() const { if (m_print->canceled()) throw CanceledException(); }
|
void throw_if_canceled() const { if (m_print->canceled()) throw CanceledException(); }
|
||||||
|
void prepare_upload();
|
||||||
|
|
||||||
// wxWidgets command ID to be sent to the platter to inform that the slicing is finished, and the G-code export will continue.
|
// wxWidgets command ID to be sent to the platter to inform that the slicing is finished, and the G-code export will continue.
|
||||||
int m_event_slicing_completed_id = 0;
|
int m_event_slicing_completed_id = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user