FIX: fix the topmost iron issue
Signed-off-by: qing.zhang <qing.zhang@bambulab.com> Change-Id: I79a034f188aaa1ef4528b944c725008f926b7b1f
This commit is contained in:
parent
fbb9dfc41a
commit
53be2ee554
|
@ -2469,7 +2469,7 @@ void GCodeProcessor::process_G1(const GCodeReader::GCodeLine& line)
|
||||||
AxisCoords delta_pos;
|
AxisCoords delta_pos;
|
||||||
for (unsigned char a = X; a <= E; ++a) {
|
for (unsigned char a = X; a <= E; ++a) {
|
||||||
delta_pos[a] = m_end_position[a] - m_start_position[a];
|
delta_pos[a] = m_end_position[a] - m_start_position[a];
|
||||||
max_abs_delta = std::max(max_abs_delta, std::abs(delta_pos[a]));
|
max_abs_delta = std::max<float>(max_abs_delta, std::abs(delta_pos[a]));
|
||||||
}
|
}
|
||||||
|
|
||||||
// no displacement, return
|
// no displacement, return
|
||||||
|
@ -2575,7 +2575,7 @@ void GCodeProcessor::process_G1(const GCodeReader::GCodeLine& line)
|
||||||
minimum_feedrate(static_cast<PrintEstimatedStatistics::ETimeMode>(i), m_feedrate);
|
minimum_feedrate(static_cast<PrintEstimatedStatistics::ETimeMode>(i), m_feedrate);
|
||||||
|
|
||||||
//BBS: calculeta enter and exit direction
|
//BBS: calculeta enter and exit direction
|
||||||
curr.enter_direction = { delta_pos[X], delta_pos[Y], delta_pos[Z] };
|
curr.enter_direction = { static_cast<float>(delta_pos[X]), static_cast<float>(delta_pos[Y]), static_cast<float>(delta_pos[Z]) };
|
||||||
float norm = curr.enter_direction.norm();
|
float norm = curr.enter_direction.norm();
|
||||||
if (!is_extrusion_only_move(delta_pos))
|
if (!is_extrusion_only_move(delta_pos))
|
||||||
curr.enter_direction = curr.enter_direction / norm;
|
curr.enter_direction = curr.enter_direction / norm;
|
||||||
|
@ -2624,8 +2624,7 @@ void GCodeProcessor::process_G1(const GCodeReader::GCodeLine& line)
|
||||||
curr.abs_axis_feedrate[a] = std::abs(curr.axis_feedrate[a]);
|
curr.abs_axis_feedrate[a] = std::abs(curr.axis_feedrate[a]);
|
||||||
if (curr.abs_axis_feedrate[a] != 0.0f) {
|
if (curr.abs_axis_feedrate[a] != 0.0f) {
|
||||||
float axis_max_feedrate = get_axis_max_feedrate(static_cast<PrintEstimatedStatistics::ETimeMode>(i), static_cast<Axis>(a));
|
float axis_max_feedrate = get_axis_max_feedrate(static_cast<PrintEstimatedStatistics::ETimeMode>(i), static_cast<Axis>(a));
|
||||||
if (axis_max_feedrate != 0.0f)
|
if (axis_max_feedrate != 0.0f) min_feedrate_factor = std::min<float>(min_feedrate_factor, axis_max_feedrate / curr.abs_axis_feedrate[a]);
|
||||||
min_feedrate_factor = std::min(min_feedrate_factor, axis_max_feedrate / curr.abs_axis_feedrate[a]);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//BBS: update curr.feedrate
|
//BBS: update curr.feedrate
|
||||||
|
@ -2914,6 +2913,7 @@ void GCodeProcessor::process_G2_G3(const GCodeReader::GCodeLine& line)
|
||||||
|
|
||||||
EMoveType type = move_type(delta_pos[E]);
|
EMoveType type = move_type(delta_pos[E]);
|
||||||
|
|
||||||
|
|
||||||
float delta_xyz = std::sqrt(sqr(arc_length) + sqr(delta_pos[Z]));
|
float delta_xyz = std::sqrt(sqr(arc_length) + sqr(delta_pos[Z]));
|
||||||
if (type == EMoveType::Extrude) {
|
if (type == EMoveType::Extrude) {
|
||||||
float volume_extruded_filament = area_filament_cross_section * delta_pos[E];
|
float volume_extruded_filament = area_filament_cross_section * delta_pos[E];
|
||||||
|
@ -3020,8 +3020,7 @@ void GCodeProcessor::process_G2_G3(const GCodeReader::GCodeLine& line)
|
||||||
curr.abs_axis_feedrate[a] = std::abs(curr.axis_feedrate[a]);
|
curr.abs_axis_feedrate[a] = std::abs(curr.axis_feedrate[a]);
|
||||||
if (curr.abs_axis_feedrate[a] != 0.0f) {
|
if (curr.abs_axis_feedrate[a] != 0.0f) {
|
||||||
float axis_max_feedrate = get_axis_max_feedrate(static_cast<PrintEstimatedStatistics::ETimeMode>(i), static_cast<Axis>(a));
|
float axis_max_feedrate = get_axis_max_feedrate(static_cast<PrintEstimatedStatistics::ETimeMode>(i), static_cast<Axis>(a));
|
||||||
if (axis_max_feedrate != 0.0f)
|
if (axis_max_feedrate != 0.0f) min_feedrate_factor = std::min<float>(min_feedrate_factor, axis_max_feedrate / curr.abs_axis_feedrate[a]);
|
||||||
min_feedrate_factor = std::min(min_feedrate_factor, axis_max_feedrate / curr.abs_axis_feedrate[a]);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
curr.feedrate *= min_feedrate_factor;
|
curr.feedrate *= min_feedrate_factor;
|
||||||
|
@ -3048,8 +3047,7 @@ void GCodeProcessor::process_G2_G3(const GCodeReader::GCodeLine& line)
|
||||||
|
|
||||||
if (axis_acc[a] != 0.0f) {
|
if (axis_acc[a] != 0.0f) {
|
||||||
float axis_max_acceleration = get_axis_max_acceleration(static_cast<PrintEstimatedStatistics::ETimeMode>(i), static_cast<Axis>(a));
|
float axis_max_acceleration = get_axis_max_acceleration(static_cast<PrintEstimatedStatistics::ETimeMode>(i), static_cast<Axis>(a));
|
||||||
if (axis_max_acceleration != 0.0f && axis_acc[a] > axis_max_acceleration)
|
if (axis_max_acceleration != 0.0f && axis_acc[a] > axis_max_acceleration) min_acc_factor = std::min<float>(min_acc_factor, axis_max_acceleration / axis_acc[a]);
|
||||||
min_acc_factor = std::min(min_acc_factor, axis_max_acceleration / axis_acc[a]);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
block.acceleration = acceleration * min_acc_factor;
|
block.acceleration = acceleration * min_acc_factor;
|
||||||
|
@ -3697,7 +3695,7 @@ void GCodeProcessor::store_move_vertex(EMoveType type, EMovePathType path_type)
|
||||||
m_cp_color.current,
|
m_cp_color.current,
|
||||||
//BBS: add plate's offset to the rendering vertices
|
//BBS: add plate's offset to the rendering vertices
|
||||||
Vec3f(m_end_position[X] + m_x_offset, m_end_position[Y] + m_y_offset, m_processing_start_custom_gcode ? m_first_layer_height : m_end_position[Z]) + m_extruder_offsets[m_extruder_id],
|
Vec3f(m_end_position[X] + m_x_offset, m_end_position[Y] + m_y_offset, m_processing_start_custom_gcode ? m_first_layer_height : m_end_position[Z]) + m_extruder_offsets[m_extruder_id],
|
||||||
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,
|
||||||
m_height,
|
m_height,
|
||||||
|
|
|
@ -219,7 +219,7 @@ namespace Slic3r {
|
||||||
#endif // ENABLE_GCODE_VIEWER_DATA_CHECKING
|
#endif // ENABLE_GCODE_VIEWER_DATA_CHECKING
|
||||||
|
|
||||||
private:
|
private:
|
||||||
using AxisCoords = std::array<float, 4>;
|
using AxisCoords = std::array<double, 4>;
|
||||||
using ExtruderColors = std::vector<unsigned char>;
|
using ExtruderColors = std::vector<unsigned char>;
|
||||||
using ExtruderTemps = std::vector<float>;
|
using ExtruderTemps = std::vector<float>;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue