Feature: Add inward wipe for external perimeters (#15407)

This commit is contained in:
Valerii Bokhan
2026-09-15 20:01:39 -03:00
committed by GitHub
parent a0ada1aa88
commit 3e1daccd7c
19 changed files with 3041 additions and 83 deletions
+29
View File
@@ -6267,6 +6267,35 @@ void PrintConfigDef::init_fff_params()
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionBool(false));
def = this->add("wipe_inward", coBool);
def->label = L("Wipe inward");
def->category = L("Quality");
def->tooltip = L("Applies only to external walls, including hole boundaries. Moves the hot nozzle toward printed "
"inner walls during wiping to reduce reheating of freshly printed plastic and seam marks.\n\n"
"Especially useful at layer heights below 0.1 mm, where wipe marks are more visible.\n\n"
"Uses the regular wipe if no adjacent inner wall is already printed (single-wall areas or "
"Outer/Inner wall order), or if no supported inward path can be found, for example at tight "
"corners or seam gaps.");
def->mode = comExpert;
def->set_default_value(new ConfigOptionBool(false));
def = this->add("wipe_inward_distance", coFloatOrPercent);
def->label = L("Wipe inward distance");
def->category = L("Quality");
def->tooltip = L("The distance the wipe path is shifted away from the external perimeter, specified in millimeters "
"or as a percentage of the actual outer-wall extrusion width.\n\n"
"For example, 50% shifts the path by half of the outer-wall width. The effective offset is limited "
"by both the actual outer-wall width and the available spacing to the adjacent wall, so values "
"above 100% or an equivalent absolute distance have no additional effect. "
"Set to 0 to disable the offset.");
def->sidetext = L("mm or %");
def->ratio_over = "outer_wall_line_width";
def->min = 0;
def->max = 100;
def->max_literal = 2; // Orca: G-code generation also clamps literal values to the actual outer-wall width.
def->mode = comExpert;
def->set_default_value(new ConfigOptionFloatOrPercent(50, true));
def = this->add("wipe_before_external_loop", coBool);
def->label = L("Wipe before external loop");
def->category = L("Quality");