mirror of
https://git.mirrors.martin98.com/https://github.com/prusa3d/PrusaSlicer.git
synced 2025-08-20 12:39:12 +08:00
#8467 - GCodeViewer - Fixed detection of extruder changes for gcode produced by other slicers, by adding missing default values
This commit is contained in:
parent
c99de065f7
commit
850b590c31
@ -38,6 +38,8 @@ static const float DEFAULT_FILAMENT_DENSITY = 1.245f;
|
|||||||
static const float DEFAULT_FILAMENT_COST = 0.0f;
|
static const float DEFAULT_FILAMENT_COST = 0.0f;
|
||||||
#endif // ENABLE_USED_FILAMENT_POST_PROCESS
|
#endif // ENABLE_USED_FILAMENT_POST_PROCESS
|
||||||
static const Slic3r::Vec3f DEFAULT_EXTRUDER_OFFSET = Slic3r::Vec3f::Zero();
|
static const Slic3r::Vec3f DEFAULT_EXTRUDER_OFFSET = Slic3r::Vec3f::Zero();
|
||||||
|
// taken from PrusaResearch.ini - [printer:Original Prusa i3 MK2.5 MMU2]
|
||||||
|
static const std::vector<std::string> DEFAULT_EXTRUDER_COLORS = { "#FF8000", "#DB5182", "#3EC0FF", "#FF4F4F", "#FBEB7D" };
|
||||||
|
|
||||||
#if ENABLE_PROCESS_G2_G3_LINES
|
#if ENABLE_PROCESS_G2_G3_LINES
|
||||||
static const std::string INTERNAL_G2G3_TAG = "!#!#! internal only - from G2/G3 expansion !#!#!";
|
static const std::string INTERNAL_G2G3_TAG = "!#!#! internal only - from G2/G3 expansion !#!#!";
|
||||||
@ -775,7 +777,8 @@ void GCodeProcessorResult::reset() {
|
|||||||
max_print_height = 0.0f;
|
max_print_height = 0.0f;
|
||||||
settings_ids.reset();
|
settings_ids.reset();
|
||||||
extruders_count = 0;
|
extruders_count = 0;
|
||||||
extruder_colors = std::vector<std::string>();
|
extruder_colors = DEFAULT_EXTRUDER_COLORS;
|
||||||
|
assert(extruder_colors.size() == MIN_EXTRUDERS_COUNT);
|
||||||
filament_diameters = std::vector<float>(MIN_EXTRUDERS_COUNT, DEFAULT_FILAMENT_DIAMETER);
|
filament_diameters = std::vector<float>(MIN_EXTRUDERS_COUNT, DEFAULT_FILAMENT_DIAMETER);
|
||||||
filament_densities = std::vector<float>(MIN_EXTRUDERS_COUNT, DEFAULT_FILAMENT_DENSITY);
|
filament_densities = std::vector<float>(MIN_EXTRUDERS_COUNT, DEFAULT_FILAMENT_DENSITY);
|
||||||
#if ENABLE_USED_FILAMENT_POST_PROCESS
|
#if ENABLE_USED_FILAMENT_POST_PROCESS
|
||||||
@ -3548,7 +3551,7 @@ void GCodeProcessor::process_T(const std::string_view command)
|
|||||||
} else {
|
} else {
|
||||||
unsigned char id = static_cast<unsigned char>(eid);
|
unsigned char id = static_cast<unsigned char>(eid);
|
||||||
if (m_extruder_id != id) {
|
if (m_extruder_id != id) {
|
||||||
if (id >= m_result.extruders_count)
|
if (id >= m_result.extruder_colors.size())
|
||||||
BOOST_LOG_TRIVIAL(error) << "GCodeProcessor encountered an invalid toolchange, maybe from a custom gcode.";
|
BOOST_LOG_TRIVIAL(error) << "GCodeProcessor encountered an invalid toolchange, maybe from a custom gcode.";
|
||||||
else {
|
else {
|
||||||
unsigned char old_extruder_id = m_extruder_id;
|
unsigned char old_extruder_id = m_extruder_id;
|
||||||
@ -3562,6 +3565,8 @@ void GCodeProcessor::process_T(const std::string_view command)
|
|||||||
m_time_processor.extruder_unloaded = false;
|
m_time_processor.extruder_unloaded = false;
|
||||||
extra_time += get_filament_load_time(static_cast<size_t>(m_extruder_id));
|
extra_time += get_filament_load_time(static_cast<size_t>(m_extruder_id));
|
||||||
simulate_st_synchronize(extra_time);
|
simulate_st_synchronize(extra_time);
|
||||||
|
|
||||||
|
m_result.extruders_count = std::max<size_t>(m_result.extruders_count, m_extruder_id + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
// store tool change move
|
// store tool change move
|
||||||
|
Loading…
x
Reference in New Issue
Block a user