Reworked custom gcode toolpaths generation

This commit is contained in:
enricoturri1966 2022-03-18 15:45:42 +01:00
parent b263ab9a8e
commit 0bd3112b7a
2 changed files with 3 additions and 4 deletions

View File

@ -1206,7 +1206,6 @@ void GCodeProcessor::reset()
m_extruded_last_z = 0.0f; m_extruded_last_z = 0.0f;
m_first_layer_height = 0.0f; m_first_layer_height = 0.0f;
m_processing_start_custom_gcode = false;
m_g1_line_id = 0; m_g1_line_id = 0;
m_layer_id = 0; m_layer_id = 0;
m_cp_color.reset(); m_cp_color.reset();
@ -1810,7 +1809,6 @@ void GCodeProcessor::process_tags(const std::string_view comment, bool producers
set_extrusion_role(ExtrusionEntity::string_to_role(comment.substr(reserved_tag(ETags::Role).length()))); set_extrusion_role(ExtrusionEntity::string_to_role(comment.substr(reserved_tag(ETags::Role).length())));
if (m_extrusion_role == erExternalPerimeter) if (m_extrusion_role == erExternalPerimeter)
m_seams_detector.activate(true); m_seams_detector.activate(true);
m_processing_start_custom_gcode = (m_extrusion_role == erCustom && m_g1_line_id == 0);
return; return;
} }
@ -2516,6 +2514,8 @@ void GCodeProcessor::process_G1(const GCodeReader::GCodeLine& line)
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)
m_height = (m_end_position[Z] <= double(m_first_layer_height)) ? m_end_position[Z] : m_first_layer_height;
else { else {
if (m_end_position[Z] > m_extruded_last_z + EPSILON) if (m_end_position[Z] > m_extruded_last_z + EPSILON)
m_height = m_end_position[Z] - m_extruded_last_z; m_height = m_end_position[Z] - m_extruded_last_z;
@ -3269,7 +3269,7 @@ void GCodeProcessor::store_move_vertex(EMoveType type)
m_extrusion_role, m_extrusion_role,
m_extruder_id, m_extruder_id,
m_cp_color.current, m_cp_color.current,
Vec3f(m_end_position[X], m_end_position[Y], m_processing_start_custom_gcode ? m_first_layer_height : m_end_position[Z] - m_z_offset) + m_extruder_offsets[m_extruder_id], Vec3f(m_end_position[X], m_end_position[Y], m_end_position[Z] - m_z_offset) + m_extruder_offsets[m_extruder_id],
static_cast<float>(m_end_position[E] - m_start_position[E]), static_cast<float>(m_end_position[E] - m_start_position[E]),
m_feedrate, m_feedrate,
m_width, m_width,

View File

@ -547,7 +547,6 @@ namespace Slic3r {
ExtruderTemps m_extruder_temps; ExtruderTemps m_extruder_temps;
float m_extruded_last_z; float m_extruded_last_z;
float m_first_layer_height; // mm float m_first_layer_height; // mm
bool m_processing_start_custom_gcode;
unsigned int m_g1_line_id; unsigned int m_g1_line_id;
unsigned int m_layer_id; unsigned int m_layer_id;
CpColor m_cp_color; CpColor m_cp_color;