mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-08-30 13:26:58 +00:00
Fix stringing between the model and the wipe tower (#15038)
# Description On multi-tool printers using the type 2 wipe tower, the travel to the tower ignored the configured Z hop type and always used a plain vertical hop, so the nozzle rose in place over the part and oozed instead of lifting away with the travel. It now follows the filament's Z hop setting, matching what the type 1 tower already does. Only toolchange travels to a type 2 tower change. Normal Lift and z_hop = 0 are unaffected, and no extrusion moves change in any mode. # Screenshots/Recordings/Graphs ## Tests <!-- > Please describe the tests that you have conducted to verify the changes made in this PR. --> <!-- > A guide for users on how to download the artifacts from this PR. --> [How to Download Pull Requests Artifacts for Testing](https://www.orcaslicer.com/wiki/how_to_download_pr_artifacts)
This commit is contained in:
@@ -1510,7 +1510,19 @@ static std::vector<Vec2d> get_path_of_change_filament(const Print& print)
|
|||||||
if (travel_to_tower_now) {
|
if (travel_to_tower_now) {
|
||||||
// FIXME: It would be better if the wipe tower set the force_travel flag for all toolchanges,
|
// FIXME: It would be better if the wipe tower set the force_travel flag for all toolchanges,
|
||||||
// then we could simplify the condition and make it more readable.
|
// then we could simplify the condition and make it more readable.
|
||||||
gcode += gcodegen.retract();
|
|
||||||
|
// Orca: pass the configured lift type, as append_tcr does above. lazy_lift() keeps
|
||||||
|
// the first type it is given, so the NormalLift default would pin this hop to a
|
||||||
|
// standing move. Slope and spiral both need a known head position.
|
||||||
|
LiftType lift_type = LiftType::NormalLift;
|
||||||
|
if (gcodegen.writer().filament() != nullptr && gcodegen.writer().is_current_position_clear()) {
|
||||||
|
ZHopType z_hop_type = ZHopType(gcodegen.config().z_hop_types.get_at(
|
||||||
|
gcodegen.get_filament_config_index((int) gcodegen.writer().filament()->id())));
|
||||||
|
if (z_hop_type == ZHopType::zhtAuto)
|
||||||
|
z_hop_type = ZHopType::zhtSpiral;
|
||||||
|
lift_type = gcodegen.to_lift_type(z_hop_type);
|
||||||
|
}
|
||||||
|
gcode += gcodegen.retract(false, false, lift_type);
|
||||||
gcodegen.m_avoid_crossing_perimeters.use_external_mp_once();
|
gcodegen.m_avoid_crossing_perimeters.use_external_mp_once();
|
||||||
if (!tcr.priming && gcodegen.last_pos_defined())
|
if (!tcr.priming && gcodegen.last_pos_defined())
|
||||||
gcode += travel_to_tower_gap(gcodegen, gcodegen.last_pos(), start_wipe_pos);
|
gcode += travel_to_tower_gap(gcodegen, gcodegen.last_pos(), start_wipe_pos);
|
||||||
|
|||||||
Reference in New Issue
Block a user