Tech ENABLE_PROCESS_G2_G3_LINES set as default
This commit is contained in:
parent
6ee7445fe1
commit
cf37f154ee
@ -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 */
|
||||||
|
|
||||||
|
@ -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 */
|
||||||
|
@ -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_
|
||||||
|
@ -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
|
||||||
|
@ -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)
|
||||||
|
Loading…
Reference in New Issue
Block a user