The commit contains quite a bit of refactoring, but the key change is at the
end of save_on_last_wipe. It was missing the subtraction of the wipe volume
from the respective member variable, so the tower would attempt to wipe too
much volume into the shrunk area.
- fixed depth calculation for nonzero extra spacing
- ixed issues with non-unity extra flow (incorrect wiping volumes, overlaps)
- minimum purge on wipe tower now has to be purged before finish_layer is called
- removed skinnydip_unloading_speed, unloading_speed is used instead
- the new parameter wipe_tower_extra_flow now automatically adjusts spacing
- the extra flow is seen in the preview
- skinnydip moves were simplified
- for MK4, pressure advance is kept for ramming and disabled for skinnydip
- G4 S0/R were swapped
- for MK4, the new temperature is set before the last cooling move
- range of the ramming dialog increased to 60 mm3/s
- fixed skinnydip_extra_move
- fixed temperature setting after cold_ramming
When we need to perform a color change on an extruder that isn’t used within the layer, we perform a tool change to select the correct extruder. Then, we perform the color change, and finally, we perform another tool change to switch back to the original extruder.
* Fixes SPE-2116. The reason for this bug was forgotten change in
WipeTowerIntegration after change in gcode.cpp.
* Prevents future similar bugs by unifing the functionality to a method.
Ignore the first intersection of the travel path with the object from which the travel starts.
Created a new class TravelObstacleTracker, for wrapping all data structures related to lift before obstacles.
During layer change, instead of generating the gcode, generate a placeholder tag. Then at the end of layer processing replace this tag with a ramping travel move.
This solves the issue, that one does not know the starting point of the current layer where the layer change gcode would be originally generate.
The ramping layer changes uses smoothing of the ramping travel. Also it is adjusted in such a way that it increases the ramp angle when the travel is too short, to always reach the next layer.
The warning was there because std::string_view::data() returns a pointer to a buffer that is not necessarily null-terminated. So, strncpy shouldn't be used on non-null-terminated buffers, but we always relied only on the buffer length, so it couldn't cause any issues.