mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-10-15 11:51:33 +00:00
Belt: never start a scarf joint seam below the layer
A scarf joint begins one layer height below the current layer and ramps up along the wall. On a tilted belt that start is a step backwards along the belt axis, into the previous layer's wall at the seam: 0.283 mm per 0.2 mm layer at 45 degrees. With an aligned seam the nozzle rams the same spot on every layer. A BabyBelt Pro benchy with seam_slope_type=external showed 601 such back-steps from layer 107 on, and in the field the belt "jumped backwards" and the head knocked the part loose. Belt printers now skip the scarf in GCode::extrude_loop, and the process tab greys the scarf controls out for them, as it already does for arc fitting. The regression test slices a cube on a belt with the scarf enabled and checks the belt axis never steps back by a layer pitch.
This commit is contained in:
@@ -7661,8 +7661,13 @@ std::string GCode::extrude_loop(const ExtrusionLoop& loop_ref,
|
||||
loop.split_at(last_pos, false);
|
||||
|
||||
const auto seam_scarf_type = m_config.seam_slope_type.value;
|
||||
// Belt printers never get a scarf joint. The scarf starts one layer height
|
||||
// below the layer, which on a tilted belt is a step backwards along the belt
|
||||
// axis into the previous layer's wall at the seam (0.28 mm at 45 degrees per
|
||||
// 0.2 mm layer); with an aligned seam that ram repeats at the same spot on
|
||||
// every layer and knocks the part loose.
|
||||
bool enable_seam_slope = ((seam_scarf_type == SeamScarfType::External && !is_hole) || seam_scarf_type == SeamScarfType::All) &&
|
||||
!m_config.spiral_mode &&
|
||||
!m_config.spiral_mode && !m_config.belt_printer.value &&
|
||||
(loop.role() == erExternalPerimeter || (loop.role() == erPerimeter && m_config.seam_slope_inner_walls)) &&
|
||||
layer_id() > 0;
|
||||
const auto nozzle_diameter = EXTRUDER_CONFIG(nozzle_diameter);
|
||||
|
||||
Reference in New Issue
Block a user