ENH: CLI: add time estimation for non-cache slicing

JIRA: XXXX
Change-Id: Ifed2d70e8d6355087694df96e413cdbcf792d6d9
This commit is contained in:
lane.wei 2023-10-07 22:15:31 +08:00 committed by Lane.Wei
parent 04552e4c9b
commit 165bb96e35
6 changed files with 29 additions and 8 deletions

View file

@ -10,6 +10,7 @@
#include "ShortestPath.hpp"
#include "SupportMaterial.hpp"
#include "Thread.hpp"
#include "Time.hpp"
#include "GCode.hpp"
#include "GCode/WipeTower.hpp"
#include "Utils.hpp"
@ -1479,8 +1480,12 @@ std::map<ObjectID, unsigned int> getObjectExtruderMap(const Print& print) {
}
// Slicing process, running at a background thread.
void Print::process(bool use_cache)
void Print::process(long long *time_cost_with_cache, bool use_cache)
{
long long start_time = 0, end_time = 0;
if (time_cost_with_cache)
*time_cost_with_cache = 0;
name_tbb_thread_pool_threads_set_locale();
//compute the PrintObject with the same geometries
@ -1680,6 +1685,9 @@ void Print::process(bool use_cache)
if (this->set_started(psSkirtBrim)) {
this->set_status(70, L("Generating skirt & brim"));
if (time_cost_with_cache)
start_time = (long long)Slic3r::Utils::get_current_time_utc();
m_skirt.clear();
m_skirt_convex_hull.clear();
m_first_layer_convex_hull.points.clear();
@ -1764,6 +1772,11 @@ void Print::process(bool use_cache)
this->finalize_first_layer_convex_hull();
this->set_done(psSkirtBrim);
if (time_cost_with_cache) {
end_time = (long long)Slic3r::Utils::get_current_time_utc();
*time_cost_with_cache = *time_cost_with_cache + end_time - start_time;
}
}
//BBS
for (PrintObject *obj : m_objects) {

View file

@ -698,7 +698,7 @@ public:
ApplyStatus apply(const Model &model, DynamicPrintConfig config) override;
void process(bool use_cache = false) override;
void process(long long *time_cost_with_cache = nullptr, bool use_cache = false) override;
// Exports G-code into a file name based on the path_template, returns the file path of the generated G-code file.
// If preview_data is not null, the preview_data is filled in for the G-code visualization (not used by the command line Slic3r).
std::string export_gcode(const std::string& path_template, GCodeProcessorResult* result, ThumbnailsGeneratorCallback thumbnail_cb = nullptr);

View file

@ -422,7 +422,7 @@ public:
// After calling the apply() function, call set_task() to limit the task to be processed by process().
virtual void set_task(const TaskParams &params) {}
// Perform the calculation. This is the only method that is to be called at a worker thread.
virtual void process(bool use_cache = false) = 0;
virtual void process(long long *time_cost_with_cache = nullptr, bool use_cache = false) = 0;
virtual int export_cached_data(const std::string& dir_path, bool with_space=false) { return 0;}
virtual int load_cached_data(const std::string& directory) { return 0;}
// Clean up after process() finished, either with success, error or if canceled.

View file

@ -686,7 +686,7 @@ bool SLAPrint::invalidate_step(SLAPrintStep step)
return invalidated;
}
void SLAPrint::process(bool use_cache)
void SLAPrint::process(long long *time_cost_with_cache, bool use_cache)
{
if (m_objects.empty())
return;

View file

@ -451,7 +451,7 @@ public:
std::vector<ObjectID> print_object_ids() const override;
ApplyStatus apply(const Model &model, DynamicPrintConfig config) override;
void set_task(const TaskParams &params) override;
void process(bool use_cache = false) override;
void process(long long *time_cost_with_cache = nullptr, bool use_cache = false) override;
void finalize() override;
// Returns true if an object step is done on all objects and there's at least one object.
bool is_step_done(SLAPrintObjectStep step) const;