Feature: Ability to change flow ratios by extrusion path types (Code + Docs) (#10641)

This new feature allows users to override flow ratios for the following extrusion path types:

* First layer (excluding Brims and Skirts)
* Outer walls
* Inner walls
* Overhang perimeters
* Sparse infill
* Internal solid infill
* Gap fill
* Support
* Support interfaces
This commit is contained in:
Valerii Bokhan
2025-10-20 15:45:52 +02:00
committed by GitHub
parent 0bdb114881
commit e6a4ddf32d
7 changed files with 158 additions and 7 deletions

View File

@@ -1085,6 +1085,102 @@ void PrintConfigDef::init_fff_params()
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionFloat(1));
def = this->add("set_other_flow_ratios", coBool);
def->label = L("Set other flow ratios");
def->category = L("Advanced");
def->tooltip = L("Change flow ratios for other extrusion path types.");
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionBool(false));
def = this->add("first_layer_flow_ratio", coFloat);
def->label = L("First layer flow ratio");
def->category = L("Advanced");
def->tooltip = L("This factor affects the amount of material on the first layer for the extrusion path roles listed in this section.\n\n"
"For the first layer, the actual flow ratio for each path role (does not affect brims and skirts) will be multiplied by this value.");
def->min = 0;
def->max = 2;
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionFloat(1));
def = this->add("outer_wall_flow_ratio", coFloat);
def->label = L("Outer wall flow ratio");
def->category = L("Advanced");
def->tooltip = L("This factor affects the amount of material for outer walls.\n\n"
"The actual outer wall flow used is calculated by multiplying this value by the filament flow ratio, and if set, the object's flow ratio.");
def->min = 0;
def->max = 2;
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionFloat(1));
def = this->add("inner_wall_flow_ratio", coFloat);
def->label = L("Inner wall flow ratio");
def->category = L("Advanced");
def->tooltip = L("This factor affects the amount of material for inner walls.\n\n"
"The actual inner wall flow used is calculated by multiplying this value by the filament flow ratio, and if set, the object's flow ratio.");
def->min = 0;
def->max = 2;
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionFloat(1));
def = this->add("overhang_flow_ratio", coFloat);
def->label = L("Overhang flow ratio");
def->category = L("Advanced");
def->tooltip = L("This factor affects the amount of material for overhangs.\n\n"
"The actual overhang flow used is calculated by multiplying this value by the filament flow ratio, and if set, the object's flow ratio.");
def->min = 0;
def->max = 2;
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionFloat(1));
def = this->add("sparse_infill_flow_ratio", coFloat);
def->label = L("Sparse infill flow ratio");
def->category = L("Advanced");
def->tooltip = L("This factor affects the amount of material for sparse infill.\n\n"
"The actual sparse infill flow used is calculated by multiplying this value by the filament flow ratio, and if set, the object's flow ratio.");
def->min = 0;
def->max = 2;
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionFloat(1));
def = this->add("internal_solid_infill_flow_ratio", coFloat);
def->label = L("Internal solid infill flow ratio");
def->category = L("Advanced");
def->tooltip = L("This factor affects the amount of material for internal solid infill.\n\n"
"The actual internal solid infill flow used is calculated by multiplying this value by the filament flow ratio, and if set, the object's flow ratio.");
def->min = 0;
def->max = 2;
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionFloat(1));
def = this->add("gap_fill_flow_ratio", coFloat);
def->label = L("Gap fill flow ratio");
def->category = L("Advanced");
def->tooltip = L("This factor affects the amount of material for filling the gaps.\n\n"
"The actual gap filling flow used is calculated by multiplying this value by the filament flow ratio, and if set, the object's flow ratio.");
def->min = 0;
def->max = 2;
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionFloat(1));
def = this->add("support_flow_ratio", coFloat);
def->label = L("Support flow ratio");
def->category = L("Advanced");
def->tooltip = L("This factor affects the amount of material for support.\n\n"
"The actual support flow used is calculated by multiplying this value by the filament flow ratio, and if set, the object's flow ratio.");
def->min = 0;
def->max = 2;
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionFloat(1));
def = this->add("support_interface_flow_ratio", coFloat);
def->label = L("Support interface flow ratio");
def->category = L("Advanced");
def->tooltip = L("This factor affects the amount of material for the support interface.\n\n"
"The actual support interface flow used is calculated by multiplying this value by the filament flow ratio, and if set, the object's flow ratio.");
def->min = 0;
def->max = 2;
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionFloat(1));
def = this->add("precise_outer_wall",coBool);
def->label = L("Precise wall");