mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-25 07:34:03 -06:00
ENH: CLI: add time estimation for non-cache slicing
JIRA: XXXX Change-Id: Ifed2d70e8d6355087694df96e413cdbcf792d6d9
This commit is contained in:
parent
04552e4c9b
commit
165bb96e35
6 changed files with 29 additions and 8 deletions
|
@ -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) {
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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 ¶ms) {}
|
||||
// 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.
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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 ¶ms) 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;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue