mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-05-20 20:03:47 +00:00
SPE-2397: Fixed order of traversing time blocks in GCodeProcessor::TimeMachine::calculate_time() to match what is done in firmware
(cherry picked from commit 9b7961ddcb824c5b18cb414ed5b975d999a24641)
This commit is contained in:
committed by
Andrew Sun
parent
7814605906
commit
acd3c94955
@@ -398,16 +398,16 @@ void GCodeProcessor::TimeMachine::calculate_time(GCodeProcessorResult& result, P
|
|||||||
|
|
||||||
assert(keep_last_n_blocks <= blocks.size());
|
assert(keep_last_n_blocks <= blocks.size());
|
||||||
|
|
||||||
// forward_pass
|
|
||||||
for (size_t i = 0; i + 1 < blocks.size(); ++i) {
|
|
||||||
planner_forward_pass_kernel(blocks[i], blocks[i + 1]);
|
|
||||||
}
|
|
||||||
|
|
||||||
// reverse_pass
|
// reverse_pass
|
||||||
for (int i = static_cast<int>(blocks.size()) - 1; i > 0; --i) {
|
for (int i = static_cast<int>(blocks.size()) - 1; i > 0; --i) {
|
||||||
planner_reverse_pass_kernel(blocks[i - 1], blocks[i]);
|
planner_reverse_pass_kernel(blocks[i - 1], blocks[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// forward_pass
|
||||||
|
for (size_t i = 0; i + 1 < blocks.size(); ++i) {
|
||||||
|
planner_forward_pass_kernel(blocks[i], blocks[i + 1]);
|
||||||
|
}
|
||||||
|
|
||||||
recalculate_trapezoids(blocks);
|
recalculate_trapezoids(blocks);
|
||||||
|
|
||||||
const size_t n_blocks_process = blocks.size() - keep_last_n_blocks;
|
const size_t n_blocks_process = blocks.size() - keep_last_n_blocks;
|
||||||
@@ -1874,7 +1874,7 @@ void GCodeProcessor::apply_config(const PrintConfig& config)
|
|||||||
size_t filament_count = config.filament_diameter.values.size();
|
size_t filament_count = config.filament_diameter.values.size();
|
||||||
m_result.filaments_count = filament_count;
|
m_result.filaments_count = filament_count;
|
||||||
|
|
||||||
// Orca:
|
// Orca:
|
||||||
m_is_XL_printer = is_XL_printer(config);
|
m_is_XL_printer = is_XL_printer(config);
|
||||||
m_preheat_time = config.preheat_time;
|
m_preheat_time = config.preheat_time;
|
||||||
m_preheat_steps = config.preheat_steps;
|
m_preheat_steps = config.preheat_steps;
|
||||||
@@ -3023,7 +3023,7 @@ void GCodeProcessor::process_tags(const std::string_view comment, bool producers
|
|||||||
float filament_diameter = (static_cast<size_t>(filament_id) < m_result.filament_diameters.size()) ? m_result.filament_diameters[filament_id] : m_result.filament_diameters.back();
|
float filament_diameter = (static_cast<size_t>(filament_id) < m_result.filament_diameters.size()) ? m_result.filament_diameters[filament_id] : m_result.filament_diameters.back();
|
||||||
float filament_radius = 0.5f * filament_diameter;
|
float filament_radius = 0.5f * filament_diameter;
|
||||||
float area_filament_cross_section = static_cast<float>(M_PI) * sqr(filament_radius);
|
float area_filament_cross_section = static_cast<float>(M_PI) * sqr(filament_radius);
|
||||||
|
|
||||||
float dE = std::stof(match.str());
|
float dE = std::stof(match.str());
|
||||||
float volume_extruded_filament = area_filament_cross_section * dE;
|
float volume_extruded_filament = area_filament_cross_section * dE;
|
||||||
m_used_filaments.update_flush_per_filament(filament_id, volume_extruded_filament);
|
m_used_filaments.update_flush_per_filament(filament_id, volume_extruded_filament);
|
||||||
|
|||||||
Reference in New Issue
Block a user