Implemented top_solid_min_thickness / bottom_solid_min_thickness.

The two new config keys define a minimum vertical shell thickness.
The top shell thickness is calculated as a maximum of sum over
top_solid_layers * layer heights and top_solid_min_thickness,
the bottom shell thickness is calculated as a maximum of sum over
bottom_solid_layers * layer heights and bottom_solid_min_thickness.

The results of the formula above are shown at the Print parameter page
below the two new values to hint the user about the interaction
of the old versus new config values.

top_solid_min_thickness has no meaning if top_solid_layers is zero,
bottom_solid_min_thickness has no meaning if bottom_solid_layers is zero.
This commit is contained in:
bubnikv 2020-02-05 16:53:26 +01:00
parent 6f777264a1
commit 495a71ed00
14 changed files with 246 additions and 52 deletions
src/libslic3r

View file

@ -168,6 +168,17 @@ void PrintConfigDef::init_fff_params()
def->min = 0;
def->set_default_value(new ConfigOptionInt(3));
def = this->add("bottom_solid_min_thickness", coFloat);
//TRN To be shown in Print Settings "Top solid layers"
def->label = L("Bottom");
def->category = L("Layers and Perimeters");
def->tooltip = L("The number of bottom solid layers is increased above bottom_solid_layers if necessary to satisfy "
"minimum thickness of bottom shell.");
def->full_label = L("Minimum bottom shell thickness");
def->sidetext = L("mm");
def->min = 0;
def->set_default_value(new ConfigOptionFloat(0.));
def = this->add("bridge_acceleration", coFloat);
def->label = L("Bridge");
def->tooltip = L("This is the acceleration your printer will use for bridges. "
@ -1782,6 +1793,13 @@ void PrintConfigDef::init_fff_params()
def->shortcut.push_back("bottom_solid_layers");
def->min = 0;
def = this->add("solid_min_thickness", coFloat);
def->label = L("Minimum thickness of a top / bottom shell");
def->tooltip = L("Minimum thickness of a top / bottom shell");
def->shortcut.push_back("top_solid_min_thickness");
def->shortcut.push_back("bottom_solid_min_thickness");
def->min = 0;
def = this->add("spiral_vase", coBool);
def->label = L("Spiral vase");
def->tooltip = L("This feature will raise Z gradually while printing a single-walled object "
@ -2128,6 +2146,18 @@ void PrintConfigDef::init_fff_params()
def->min = 0;
def->set_default_value(new ConfigOptionInt(3));
def = this->add("top_solid_min_thickness", coFloat);
//TRN To be shown in Print Settings "Top solid layers"
def->label = L("Top");
def->category = L("Layers and Perimeters");
def->tooltip = L("The number of top solid layers is increased above top_solid_layers if necessary to satisfy "
"minimum thickness of top shell."
" This is useful to prevent pillowing effect when printing with variable layer height.");
def->full_label = L("Minimum top shell thickness");
def->sidetext = L("mm");
def->min = 0;
def->set_default_value(new ConfigOptionFloat(0.));
def = this->add("travel_speed", coFloat);
def->label = L("Travel");
def->tooltip = L("Speed for travel moves (jumps between distant extrusion points).");