Tech ENABLE_PROCESS_G2_G3_LINES set as default

This commit is contained in:
enricoturri1966 2022-12-06 13:21:06 +01:00
parent 6ee7445fe1
commit cf37f154ee
5 changed files with 0 additions and 87 deletions

View File

@ -40,9 +40,7 @@ static const Slic3r::Vec3f DEFAULT_EXTRUDER_OFFSET = Slic3r::Vec3f::Zero();
// taken from PrusaResearch.ini - [printer:Original Prusa i3 MK2.5 MMU2] // 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" }; static const std::vector<std::string> DEFAULT_EXTRUDER_COLORS = { "#FF8000", "#DB5182", "#3EC0FF", "#FF4F4F", "#FBEB7D" };
#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 !#!#!";
#endif // ENABLE_PROCESS_G2_G3_LINES
namespace Slic3r { namespace Slic3r {
@ -1418,10 +1416,8 @@ void GCodeProcessor::process_gcode_line(const GCodeReader::GCodeLine& line, bool
switch (cmd[1]) { switch (cmd[1]) {
case '0': { process_G0(line); break; } // Move case '0': { process_G0(line); break; } // Move
case '1': { process_G1(line); break; } // Move case '1': { process_G1(line); break; } // Move
#if ENABLE_PROCESS_G2_G3_LINES
case '2': { process_G2_G3(line, true); break; } // CW Arc Move case '2': { process_G2_G3(line, true); break; } // CW Arc Move
case '3': { process_G2_G3(line, false); break; } // CCW Arc Move case '3': { process_G2_G3(line, false); break; } // CCW Arc Move
#endif // ENABLE_PROCESS_G2_G3_LINES
default: break; default: break;
} }
break; break;
@ -2337,23 +2333,6 @@ void GCodeProcessor::process_G1(const GCodeReader::GCodeLine& line)
const float filament_diameter = (static_cast<size_t>(m_extruder_id) < m_result.filament_diameters.size()) ? m_result.filament_diameters[m_extruder_id] : m_result.filament_diameters.back(); const float filament_diameter = (static_cast<size_t>(m_extruder_id) < m_result.filament_diameters.size()) ? m_result.filament_diameters[m_extruder_id] : m_result.filament_diameters.back();
const float filament_radius = 0.5f * filament_diameter; const float filament_radius = 0.5f * filament_diameter;
const float area_filament_cross_section = static_cast<float>(M_PI) * sqr(filament_radius); const float area_filament_cross_section = static_cast<float>(M_PI) * sqr(filament_radius);
#if !ENABLE_PROCESS_G2_G3_LINES
auto absolute_position = [this, area_filament_cross_section](Axis axis, const GCodeReader::GCodeLine& lineG1) {
bool is_relative = (m_global_positioning_type == EPositioningType::Relative);
if (axis == E)
is_relative |= (m_e_local_positioning_type == EPositioningType::Relative);
if (lineG1.has(Slic3r::Axis(axis))) {
float lengthsScaleFactor = (m_units == EUnits::Inches) ? INCHES_TO_MM : 1.0f;
float ret = lineG1.value(Slic3r::Axis(axis)) * lengthsScaleFactor;
if (axis == E && m_use_volumetric_e)
ret /= area_filament_cross_section;
return is_relative ? m_start_position[axis] + ret : m_origin[axis] + ret;
}
else
return m_start_position[axis];
};
#endif // !ENABLE_PROCESS_G2_G3_LINES
auto move_type = [this](const AxisCoords& delta_pos) { auto move_type = [this](const AxisCoords& delta_pos) {
EMoveType type = EMoveType::Noop; EMoveType type = EMoveType::Noop;
@ -2381,11 +2360,7 @@ void GCodeProcessor::process_G1(const GCodeReader::GCodeLine& line)
// updates axes positions from line // updates axes positions from line
for (unsigned char a = X; a <= E; ++a) { for (unsigned char a = X; a <= E; ++a) {
#if ENABLE_PROCESS_G2_G3_LINES
m_end_position[a] = extract_absolute_position_on_axis((Axis)a, line, double(area_filament_cross_section)); m_end_position[a] = extract_absolute_position_on_axis((Axis)a, line, double(area_filament_cross_section));
#else
m_end_position[a] = absolute_position((Axis)a, line);
#endif // ENABLE_PROCESS_G2_G3_LINES
} }
// updates feedrate from line, if present // updates feedrate from line, if present
@ -2418,7 +2393,6 @@ void GCodeProcessor::process_G1(const GCodeReader::GCodeLine& line)
m_mm3_per_mm_compare.update(area_toolpath_cross_section, m_extrusion_role); m_mm3_per_mm_compare.update(area_toolpath_cross_section, m_extrusion_role);
#endif // ENABLE_GCODE_VIEWER_DATA_CHECKING #endif // ENABLE_GCODE_VIEWER_DATA_CHECKING
#if ENABLE_PROCESS_G2_G3_LINES
if (m_forced_height > 0.0f) if (m_forced_height > 0.0f)
m_height = m_forced_height; m_height = m_forced_height;
else if (m_layer_id == 0) else if (m_layer_id == 0)
@ -2427,16 +2401,6 @@ void GCodeProcessor::process_G1(const GCodeReader::GCodeLine& line)
if (m_end_position[Z] > m_extruded_last_z + EPSILON && delta_pos[Z] == 0.0) if (m_end_position[Z] > m_extruded_last_z + EPSILON && delta_pos[Z] == 0.0)
m_height = m_end_position[Z] - m_extruded_last_z; m_height = m_end_position[Z] - m_extruded_last_z;
} }
#else
if (m_forced_height > 0.0f)
m_height = m_forced_height;
else if (m_layer_id == 0)
m_height = (m_end_position[Z] <= double(m_first_layer_height)) ? m_end_position[Z] : m_first_layer_height;
else {
if (m_end_position[Z] > m_extruded_last_z + EPSILON)
m_height = m_end_position[Z] - m_extruded_last_z;
}
#endif // ENABLE_PROCESS_G2_G3_LINES
if (m_height == 0.0f) if (m_height == 0.0f)
m_height = DEFAULT_TOOLPATH_HEIGHT; m_height = DEFAULT_TOOLPATH_HEIGHT;
@ -2444,9 +2408,7 @@ void GCodeProcessor::process_G1(const GCodeReader::GCodeLine& line)
if (m_end_position[Z] == 0.0f || (m_extrusion_role == erCustom && m_layer_id == 0)) if (m_end_position[Z] == 0.0f || (m_extrusion_role == erCustom && m_layer_id == 0))
m_end_position[Z] = m_height; m_end_position[Z] = m_height;
#if ENABLE_PROCESS_G2_G3_LINES
if (line.comment() != INTERNAL_G2G3_TAG) if (line.comment() != INTERNAL_G2G3_TAG)
#endif // ENABLE_PROCESS_G2_G3_LINES
m_extruded_last_z = m_end_position[Z]; m_extruded_last_z = m_end_position[Z];
m_options_z_corrector.update(m_height); m_options_z_corrector.update(m_height);
@ -2679,14 +2641,9 @@ void GCodeProcessor::process_G1(const GCodeReader::GCodeLine& line)
} }
// store move // store move
#if ENABLE_PROCESS_G2_G3_LINES
store_move_vertex(type, line.comment() == INTERNAL_G2G3_TAG); store_move_vertex(type, line.comment() == INTERNAL_G2G3_TAG);
#else
store_move_vertex(type);
#endif // ENABLE_PROCESS_G2_G3_LINES
} }
#if ENABLE_PROCESS_G2_G3_LINES
void GCodeProcessor::process_G2_G3(const GCodeReader::GCodeLine& line, bool clockwise) void GCodeProcessor::process_G2_G3(const GCodeReader::GCodeLine& line, bool clockwise)
{ {
if (!line.has('I') || !line.has('J')) if (!line.has('I') || !line.has('J'))
@ -2888,7 +2845,6 @@ void GCodeProcessor::process_G2_G3(const GCodeReader::GCodeLine& line, bool cloc
process_gcode_line(line, false); process_gcode_line(line, false);
}); });
} }
#endif // ENABLE_PROCESS_G2_G3_LINES
void GCodeProcessor::process_G10(const GCodeReader::GCodeLine& line) void GCodeProcessor::process_G10(const GCodeReader::GCodeLine& line)
{ {
@ -3779,11 +3735,7 @@ void GCodeProcessor::post_process()
"Is " + out_path + " locked?" + '\n'); "Is " + out_path + " locked?" + '\n');
} }
#if ENABLE_PROCESS_G2_G3_LINES
void GCodeProcessor::store_move_vertex(EMoveType type, bool internal_only) void GCodeProcessor::store_move_vertex(EMoveType type, bool internal_only)
#else
void GCodeProcessor::store_move_vertex(EMoveType type)
#endif // ENABLE_PROCESS_G2_G3_LINES
{ {
m_last_line_id = (type == EMoveType::Color_change || type == EMoveType::Pause_Print || type == EMoveType::Custom_GCode) ? m_last_line_id = (type == EMoveType::Color_change || type == EMoveType::Pause_Print || type == EMoveType::Custom_GCode) ?
m_line_id + 1 : m_line_id + 1 :
@ -3803,12 +3755,8 @@ void GCodeProcessor::store_move_vertex(EMoveType type)
m_mm3_per_mm, m_mm3_per_mm,
m_fan_speed, m_fan_speed,
m_extruder_temps[m_extruder_id], m_extruder_temps[m_extruder_id],
#if ENABLE_PROCESS_G2_G3_LINES
static_cast<float>(m_result.moves.size()), static_cast<float>(m_result.moves.size()),
internal_only internal_only
#else
static_cast<float>(m_result.moves.size())
#endif // ENABLE_PROCESS_G2_G3_LINES
}); });
// stores stop time placeholders for later use // stores stop time placeholders for later use
@ -4003,7 +3951,6 @@ void GCodeProcessor::update_estimated_times_stats()
m_result.print_statistics.used_filaments_per_role = m_used_filaments.filaments_per_role; m_result.print_statistics.used_filaments_per_role = m_used_filaments.filaments_per_role;
} }
#if ENABLE_PROCESS_G2_G3_LINES
double GCodeProcessor::extract_absolute_position_on_axis(Axis axis, const GCodeReader::GCodeLine& line, double area_filament_cross_section) double GCodeProcessor::extract_absolute_position_on_axis(Axis axis, const GCodeReader::GCodeLine& line, double area_filament_cross_section)
{ {
if (line.has(Slic3r::Axis(axis))) { if (line.has(Slic3r::Axis(axis))) {
@ -4020,7 +3967,6 @@ double GCodeProcessor::extract_absolute_position_on_axis(Axis axis, const GCodeR
else else
return m_start_position[axis]; return m_start_position[axis];
} }
#endif // ENABLE_PROCESS_G2_G3_LINES
} /* namespace Slic3r */ } /* namespace Slic3r */

View File

@ -111,9 +111,7 @@ namespace Slic3r {
float fan_speed{ 0.0f }; // percentage float fan_speed{ 0.0f }; // percentage
float temperature{ 0.0f }; // Celsius degrees float temperature{ 0.0f }; // Celsius degrees
float time{ 0.0f }; // s float time{ 0.0f }; // s
#if ENABLE_PROCESS_G2_G3_LINES
bool internal_only{ false }; bool internal_only{ false };
#endif // ENABLE_PROCESS_G2_G3_LINES
float volumetric_rate() const { return feedrate * mm3_per_mm; } float volumetric_rate() const { return feedrate * mm3_per_mm; }
}; };
@ -649,10 +647,8 @@ namespace Slic3r {
void process_G0(const GCodeReader::GCodeLine& line); void process_G0(const GCodeReader::GCodeLine& line);
void process_G1(const GCodeReader::GCodeLine& line); void process_G1(const GCodeReader::GCodeLine& line);
#if ENABLE_PROCESS_G2_G3_LINES
// Arc Move // Arc Move
void process_G2_G3(const GCodeReader::GCodeLine& line, bool clockwise); void process_G2_G3(const GCodeReader::GCodeLine& line, bool clockwise);
#endif // ENABLE_PROCESS_G2_G3_LINES
// Retract or Set tool temperature // Retract or Set tool temperature
void process_G10(const GCodeReader::GCodeLine& line); void process_G10(const GCodeReader::GCodeLine& line);
@ -759,11 +755,7 @@ namespace Slic3r {
// 2) update used filament data // 2) update used filament data
void post_process(); void post_process();
#if ENABLE_PROCESS_G2_G3_LINES
void store_move_vertex(EMoveType type, bool internal_only = false); void store_move_vertex(EMoveType type, bool internal_only = false);
#else
void store_move_vertex(EMoveType type);
#endif // ENABLE_PROCESS_G2_G3_LINES
void set_extrusion_role(ExtrusionRole role); void set_extrusion_role(ExtrusionRole role);
@ -789,9 +781,7 @@ namespace Slic3r {
void update_estimated_times_stats(); void update_estimated_times_stats();
#if ENABLE_PROCESS_G2_G3_LINES
double extract_absolute_position_on_axis(Axis axis, const GCodeReader::GCodeLine& line, double area_filament_cross_section); double extract_absolute_position_on_axis(Axis axis, const GCodeReader::GCodeLine& line, double area_filament_cross_section);
#endif // ENABLE_PROCESS_G2_G3_LINES
}; };
} /* namespace Slic3r */ } /* namespace Slic3r */

View File

@ -57,8 +57,6 @@
#define ENABLE_WORLD_COORDINATE (1 && ENABLE_2_6_0_ALPHA1) #define ENABLE_WORLD_COORDINATE (1 && ENABLE_2_6_0_ALPHA1)
// Enable alternative version of file_wildcards() // Enable alternative version of file_wildcards()
#define ENABLE_ALTERNATIVE_FILE_WILDCARDS_GENERATOR (1 && ENABLE_2_6_0_ALPHA1) #define ENABLE_ALTERNATIVE_FILE_WILDCARDS_GENERATOR (1 && ENABLE_2_6_0_ALPHA1)
// Enable processing of gcode G2 and G3 lines
#define ENABLE_PROCESS_G2_G3_LINES (1 && ENABLE_2_6_0_ALPHA1)
#endif // _prusaslicer_technologies_h_ #endif // _prusaslicer_technologies_h_

View File

@ -2153,9 +2153,7 @@ void GCodeViewer::load_toolpaths(const GCodeProcessorResult& gcode_result)
size_t move_id = i - seams_count; size_t move_id = i - seams_count;
if (move.type == EMoveType::Extrude) { if (move.type == EMoveType::Extrude) {
#if ENABLE_PROCESS_G2_G3_LINES
if (!move.internal_only) { if (!move.internal_only) {
#endif // ENABLE_PROCESS_G2_G3_LINES
// layers zs // layers zs
const double* const last_z = m_layers.empty() ? nullptr : &m_layers.get_zs().back(); const double* const last_z = m_layers.empty() ? nullptr : &m_layers.get_zs().back();
const double z = static_cast<double>(move.position.z()); const double z = static_cast<double>(move.position.z());
@ -2163,9 +2161,7 @@ void GCodeViewer::load_toolpaths(const GCodeProcessorResult& gcode_result)
m_layers.append(z, { last_travel_s_id, move_id }); m_layers.append(z, { last_travel_s_id, move_id });
else else
m_layers.get_ranges().back().last = move_id; m_layers.get_ranges().back().last = move_id;
#if ENABLE_PROCESS_G2_G3_LINES
} }
#endif // ENABLE_PROCESS_G2_G3_LINES
// extruder ids // extruder ids
m_extruder_ids.emplace_back(move.extruder_id); m_extruder_ids.emplace_back(move.extruder_id);
// roles // roles

View File

@ -692,7 +692,6 @@ void Preview::update_moves_slider()
if (view.endpoints.last < view.endpoints.first) if (view.endpoints.last < view.endpoints.first)
return; return;
#if ENABLE_PROCESS_G2_G3_LINES
assert(view.endpoints.first <= view.current.first && view.current.first <= view.endpoints.last); assert(view.endpoints.first <= view.current.first && view.current.first <= view.endpoints.last);
assert(view.endpoints.first <= view.current.last && view.current.last <= view.endpoints.last); assert(view.endpoints.first <= view.current.last && view.current.last <= view.endpoints.last);
@ -721,22 +720,6 @@ void Preview::update_moves_slider()
m_moves_slider->SetSliderAlternateValues(alternate_values); m_moves_slider->SetSliderAlternateValues(alternate_values);
m_moves_slider->SetMaxValue(int(values.size()) - 1); m_moves_slider->SetMaxValue(int(values.size()) - 1);
m_moves_slider->SetSelectionSpan(values.front() - 1 - view.endpoints.first, values.back() - 1 - view.endpoints.first); m_moves_slider->SetSelectionSpan(values.front() - 1 - view.endpoints.first, values.back() - 1 - view.endpoints.first);
#else
std::vector<double> values(view.endpoints.last - view.endpoints.first + 1);
std::vector<double> alternate_values(view.endpoints.last - view.endpoints.first + 1);
unsigned int count = 0;
for (unsigned int i = view.endpoints.first; i <= view.endpoints.last; ++i) {
values[count] = static_cast<double>(i + 1);
if (view.gcode_ids[i] > 0)
alternate_values[count] = static_cast<double>(view.gcode_ids[i]);
++count;
}
m_moves_slider->SetSliderValues(values);
m_moves_slider->SetSliderAlternateValues(alternate_values);
m_moves_slider->SetMaxValue(view.endpoints.last - view.endpoints.first);
m_moves_slider->SetSelectionSpan(view.current.first - view.endpoints.first, view.current.last - view.endpoints.first);
#endif // ENABLE_PROCESS_G2_G3_LINES
} }
void Preview::enable_moves_slider(bool enable) void Preview::enable_moves_slider(bool enable)