Time estimators use initial data from config
This commit is contained in:
parent
00ef0610a5
commit
f420ced581
3 changed files with 47 additions and 10 deletions
|
@ -375,7 +375,7 @@ void GCode::do_export(Print *print, const char *path, GCodePreviewData *preview_
|
||||||
}
|
}
|
||||||
fclose(file);
|
fclose(file);
|
||||||
|
|
||||||
if (m_default_time_estimator.get_dialect() == gcfMarlin)
|
if (m_silent_time_estimator_enabled)
|
||||||
GCodeTimeEstimator::post_process_elapsed_times(path_tmp, m_default_time_estimator.get_time(), m_silent_time_estimator.get_time());
|
GCodeTimeEstimator::post_process_elapsed_times(path_tmp, m_default_time_estimator.get_time(), m_silent_time_estimator.get_time());
|
||||||
|
|
||||||
if (! this->m_placeholder_parser_failed_templates.empty()) {
|
if (! this->m_placeholder_parser_failed_templates.empty()) {
|
||||||
|
@ -410,12 +410,45 @@ void GCode::_do_export(Print &print, FILE *file, GCodePreviewData *preview_data)
|
||||||
// resets time estimators
|
// resets time estimators
|
||||||
m_default_time_estimator.reset();
|
m_default_time_estimator.reset();
|
||||||
m_default_time_estimator.set_dialect(print.config.gcode_flavor);
|
m_default_time_estimator.set_dialect(print.config.gcode_flavor);
|
||||||
if (print.config.gcode_flavor == gcfMarlin)
|
m_default_time_estimator.set_acceleration(print.config.machine_max_acceleration_extruding.values[0]);
|
||||||
|
m_default_time_estimator.set_retract_acceleration(print.config.machine_max_acceleration_retracting.values[0]);
|
||||||
|
m_default_time_estimator.set_minimum_feedrate(print.config.machine_min_extruding_rate.values[0]);
|
||||||
|
m_default_time_estimator.set_minimum_travel_feedrate(print.config.machine_min_travel_rate.values[0]);
|
||||||
|
m_default_time_estimator.set_axis_max_acceleration(GCodeTimeEstimator::X, print.config.machine_max_acceleration_x.values[0]);
|
||||||
|
m_default_time_estimator.set_axis_max_acceleration(GCodeTimeEstimator::Y, print.config.machine_max_acceleration_y.values[0]);
|
||||||
|
m_default_time_estimator.set_axis_max_acceleration(GCodeTimeEstimator::Z, print.config.machine_max_acceleration_z.values[0]);
|
||||||
|
m_default_time_estimator.set_axis_max_acceleration(GCodeTimeEstimator::E, print.config.machine_max_acceleration_e.values[0]);
|
||||||
|
m_default_time_estimator.set_axis_max_feedrate(GCodeTimeEstimator::X, print.config.machine_max_feedrate_x.values[0]);
|
||||||
|
m_default_time_estimator.set_axis_max_feedrate(GCodeTimeEstimator::Y, print.config.machine_max_feedrate_y.values[0]);
|
||||||
|
m_default_time_estimator.set_axis_max_feedrate(GCodeTimeEstimator::Z, print.config.machine_max_feedrate_z.values[0]);
|
||||||
|
m_default_time_estimator.set_axis_max_feedrate(GCodeTimeEstimator::E, print.config.machine_max_feedrate_e.values[0]);
|
||||||
|
m_default_time_estimator.set_axis_max_jerk(GCodeTimeEstimator::X, print.config.machine_max_jerk_x.values[0]);
|
||||||
|
m_default_time_estimator.set_axis_max_jerk(GCodeTimeEstimator::Y, print.config.machine_max_jerk_y.values[0]);
|
||||||
|
m_default_time_estimator.set_axis_max_jerk(GCodeTimeEstimator::Z, print.config.machine_max_jerk_z.values[0]);
|
||||||
|
m_default_time_estimator.set_axis_max_jerk(GCodeTimeEstimator::E, print.config.machine_max_jerk_e.values[0]);
|
||||||
|
|
||||||
|
m_silent_time_estimator_enabled = (print.config.gcode_flavor == gcfMarlin) && print.config.silent_mode;
|
||||||
|
if (m_silent_time_estimator_enabled)
|
||||||
{
|
{
|
||||||
m_silent_time_estimator.reset();
|
m_silent_time_estimator.reset();
|
||||||
m_silent_time_estimator.set_dialect(print.config.gcode_flavor);
|
m_silent_time_estimator.set_dialect(print.config.gcode_flavor);
|
||||||
|
m_silent_time_estimator.set_acceleration(print.config.machine_max_acceleration_extruding.values[1]);
|
||||||
|
m_silent_time_estimator.set_retract_acceleration(print.config.machine_max_acceleration_retracting.values[1]);
|
||||||
|
m_silent_time_estimator.set_minimum_feedrate(print.config.machine_min_extruding_rate.values[1]);
|
||||||
|
m_silent_time_estimator.set_minimum_travel_feedrate(print.config.machine_min_travel_rate.values[1]);
|
||||||
|
m_silent_time_estimator.set_axis_max_acceleration(GCodeTimeEstimator::X, print.config.machine_max_acceleration_x.values[1]);
|
||||||
|
m_silent_time_estimator.set_axis_max_acceleration(GCodeTimeEstimator::Y, print.config.machine_max_acceleration_y.values[1]);
|
||||||
|
m_silent_time_estimator.set_axis_max_acceleration(GCodeTimeEstimator::Z, print.config.machine_max_acceleration_z.values[1]);
|
||||||
|
m_silent_time_estimator.set_axis_max_acceleration(GCodeTimeEstimator::E, print.config.machine_max_acceleration_e.values[1]);
|
||||||
|
m_silent_time_estimator.set_axis_max_feedrate(GCodeTimeEstimator::X, print.config.machine_max_feedrate_x.values[1]);
|
||||||
|
m_silent_time_estimator.set_axis_max_feedrate(GCodeTimeEstimator::Y, print.config.machine_max_feedrate_y.values[1]);
|
||||||
|
m_silent_time_estimator.set_axis_max_feedrate(GCodeTimeEstimator::Z, print.config.machine_max_feedrate_z.values[1]);
|
||||||
|
m_silent_time_estimator.set_axis_max_feedrate(GCodeTimeEstimator::E, print.config.machine_max_feedrate_e.values[1]);
|
||||||
|
m_silent_time_estimator.set_axis_max_jerk(GCodeTimeEstimator::X, print.config.machine_max_jerk_x.values[1]);
|
||||||
|
m_silent_time_estimator.set_axis_max_jerk(GCodeTimeEstimator::Y, print.config.machine_max_jerk_y.values[1]);
|
||||||
|
m_silent_time_estimator.set_axis_max_jerk(GCodeTimeEstimator::Z, print.config.machine_max_jerk_z.values[1]);
|
||||||
|
m_silent_time_estimator.set_axis_max_jerk(GCodeTimeEstimator::E, print.config.machine_max_jerk_e.values[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// resets analyzer
|
// resets analyzer
|
||||||
m_analyzer.reset();
|
m_analyzer.reset();
|
||||||
m_enable_analyzer = preview_data != nullptr;
|
m_enable_analyzer = preview_data != nullptr;
|
||||||
|
@ -606,7 +639,7 @@ void GCode::_do_export(Print &print, FILE *file, GCodePreviewData *preview_data)
|
||||||
}
|
}
|
||||||
|
|
||||||
// before start gcode time estimation
|
// before start gcode time estimation
|
||||||
if (m_default_time_estimator.get_dialect() == gcfMarlin)
|
if (m_silent_time_estimator_enabled)
|
||||||
{
|
{
|
||||||
_write(file, m_default_time_estimator.get_elapsed_time_string().c_str());
|
_write(file, m_default_time_estimator.get_elapsed_time_string().c_str());
|
||||||
_write(file, m_silent_time_estimator.get_elapsed_time_string().c_str());
|
_write(file, m_silent_time_estimator.get_elapsed_time_string().c_str());
|
||||||
|
@ -817,7 +850,7 @@ void GCode::_do_export(Print &print, FILE *file, GCodePreviewData *preview_data)
|
||||||
_writeln(file, this->placeholder_parser_process("end_filament_gcode", end_gcode, (unsigned int)(&end_gcode - &print.config.end_filament_gcode.values.front()), &config));
|
_writeln(file, this->placeholder_parser_process("end_filament_gcode", end_gcode, (unsigned int)(&end_gcode - &print.config.end_filament_gcode.values.front()), &config));
|
||||||
}
|
}
|
||||||
// before end gcode time estimation
|
// before end gcode time estimation
|
||||||
if (m_default_time_estimator.get_dialect() == gcfMarlin)
|
if (m_silent_time_estimator_enabled)
|
||||||
{
|
{
|
||||||
_write(file, m_default_time_estimator.get_elapsed_time_string().c_str());
|
_write(file, m_default_time_estimator.get_elapsed_time_string().c_str());
|
||||||
_write(file, m_silent_time_estimator.get_elapsed_time_string().c_str());
|
_write(file, m_silent_time_estimator.get_elapsed_time_string().c_str());
|
||||||
|
@ -829,7 +862,7 @@ void GCode::_do_export(Print &print, FILE *file, GCodePreviewData *preview_data)
|
||||||
|
|
||||||
// calculates estimated printing time
|
// calculates estimated printing time
|
||||||
m_default_time_estimator.calculate_time();
|
m_default_time_estimator.calculate_time();
|
||||||
if (m_default_time_estimator.get_dialect() == gcfMarlin)
|
if (m_silent_time_estimator_enabled)
|
||||||
m_silent_time_estimator.calculate_time();
|
m_silent_time_estimator.calculate_time();
|
||||||
|
|
||||||
// Get filament stats.
|
// Get filament stats.
|
||||||
|
@ -839,7 +872,7 @@ void GCode::_do_export(Print &print, FILE *file, GCodePreviewData *preview_data)
|
||||||
print.total_weight = 0.;
|
print.total_weight = 0.;
|
||||||
print.total_cost = 0.;
|
print.total_cost = 0.;
|
||||||
print.estimated_default_print_time = m_default_time_estimator.get_time_dhms();
|
print.estimated_default_print_time = m_default_time_estimator.get_time_dhms();
|
||||||
print.estimated_silent_print_time = (m_default_time_estimator.get_dialect() == gcfMarlin) ? m_silent_time_estimator.get_time_dhms() : "N/A";
|
print.estimated_silent_print_time = m_silent_time_estimator_enabled ? m_silent_time_estimator.get_time_dhms() : "N/A";
|
||||||
for (const Extruder &extruder : m_writer.extruders()) {
|
for (const Extruder &extruder : m_writer.extruders()) {
|
||||||
double used_filament = extruder.used_filament();
|
double used_filament = extruder.used_filament();
|
||||||
double extruded_volume = extruder.extruded_volume();
|
double extruded_volume = extruder.extruded_volume();
|
||||||
|
@ -860,7 +893,7 @@ void GCode::_do_export(Print &print, FILE *file, GCodePreviewData *preview_data)
|
||||||
}
|
}
|
||||||
_write_format(file, "; total filament cost = %.1lf\n", print.total_cost);
|
_write_format(file, "; total filament cost = %.1lf\n", print.total_cost);
|
||||||
_write_format(file, "; estimated printing time (default mode) = %s\n", m_default_time_estimator.get_time_dhms().c_str());
|
_write_format(file, "; estimated printing time (default mode) = %s\n", m_default_time_estimator.get_time_dhms().c_str());
|
||||||
if (m_default_time_estimator.get_dialect() == gcfMarlin)
|
if (m_silent_time_estimator_enabled)
|
||||||
_write_format(file, "; estimated printing time (silent mode) = %s\n", m_silent_time_estimator.get_time_dhms().c_str());
|
_write_format(file, "; estimated printing time (silent mode) = %s\n", m_silent_time_estimator.get_time_dhms().c_str());
|
||||||
|
|
||||||
// Append full config.
|
// Append full config.
|
||||||
|
@ -1430,7 +1463,7 @@ void GCode::process_layer(
|
||||||
_write(file, gcode);
|
_write(file, gcode);
|
||||||
|
|
||||||
// after layer time estimation
|
// after layer time estimation
|
||||||
if (m_default_time_estimator.get_dialect() == gcfMarlin)
|
if (m_silent_time_estimator_enabled)
|
||||||
{
|
{
|
||||||
_write(file, m_default_time_estimator.get_elapsed_time_string().c_str());
|
_write(file, m_default_time_estimator.get_elapsed_time_string().c_str());
|
||||||
_write(file, m_silent_time_estimator.get_elapsed_time_string().c_str());
|
_write(file, m_silent_time_estimator.get_elapsed_time_string().c_str());
|
||||||
|
@ -2094,7 +2127,7 @@ void GCode::_write(FILE* file, const char *what)
|
||||||
fwrite(gcode, 1, ::strlen(gcode), file);
|
fwrite(gcode, 1, ::strlen(gcode), file);
|
||||||
// updates time estimator and gcode lines vector
|
// updates time estimator and gcode lines vector
|
||||||
m_default_time_estimator.add_gcode_block(gcode);
|
m_default_time_estimator.add_gcode_block(gcode);
|
||||||
if (m_default_time_estimator.get_dialect() == gcfMarlin)
|
if (m_silent_time_estimator_enabled)
|
||||||
m_silent_time_estimator.add_gcode_block(gcode);
|
m_silent_time_estimator.add_gcode_block(gcode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -135,6 +135,7 @@ public:
|
||||||
m_second_layer_things_done(false),
|
m_second_layer_things_done(false),
|
||||||
m_default_time_estimator(GCodeTimeEstimator::Default),
|
m_default_time_estimator(GCodeTimeEstimator::Default),
|
||||||
m_silent_time_estimator(GCodeTimeEstimator::Silent),
|
m_silent_time_estimator(GCodeTimeEstimator::Silent),
|
||||||
|
m_silent_time_estimator_enabled(false),
|
||||||
m_last_obj_copy(nullptr, Point(std::numeric_limits<coord_t>::max(), std::numeric_limits<coord_t>::max()))
|
m_last_obj_copy(nullptr, Point(std::numeric_limits<coord_t>::max(), std::numeric_limits<coord_t>::max()))
|
||||||
{}
|
{}
|
||||||
~GCode() {}
|
~GCode() {}
|
||||||
|
@ -294,6 +295,7 @@ protected:
|
||||||
// Time estimators
|
// Time estimators
|
||||||
GCodeTimeEstimator m_default_time_estimator;
|
GCodeTimeEstimator m_default_time_estimator;
|
||||||
GCodeTimeEstimator m_silent_time_estimator;
|
GCodeTimeEstimator m_silent_time_estimator;
|
||||||
|
bool m_silent_time_estimator_enabled;
|
||||||
|
|
||||||
// Analyzer
|
// Analyzer
|
||||||
GCodeAnalyzer m_analyzer;
|
GCodeAnalyzer m_analyzer;
|
||||||
|
|
|
@ -555,6 +555,7 @@ public:
|
||||||
ConfigOptionFloat cooling_tube_retraction;
|
ConfigOptionFloat cooling_tube_retraction;
|
||||||
ConfigOptionFloat cooling_tube_length;
|
ConfigOptionFloat cooling_tube_length;
|
||||||
ConfigOptionFloat parking_pos_retraction;
|
ConfigOptionFloat parking_pos_retraction;
|
||||||
|
ConfigOptionBool silent_mode;
|
||||||
|
|
||||||
|
|
||||||
std::string get_extrusion_axis() const
|
std::string get_extrusion_axis() const
|
||||||
|
@ -612,6 +613,7 @@ protected:
|
||||||
OPT_PTR(cooling_tube_retraction);
|
OPT_PTR(cooling_tube_retraction);
|
||||||
OPT_PTR(cooling_tube_length);
|
OPT_PTR(cooling_tube_length);
|
||||||
OPT_PTR(parking_pos_retraction);
|
OPT_PTR(parking_pos_retraction);
|
||||||
|
OPT_PTR(silent_mode);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue