Merge remote-tracking branch 'upstream/main' into feedback

This commit is contained in:
Clifford Garwood
2026-05-01 01:30:40 -04:00
1033 changed files with 24477 additions and 1712 deletions
+61 -2
View File
@@ -714,6 +714,18 @@ void PrintConfigDef::init_common_params()
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionInt(1));
def = this->add("elefant_foot_layers_density", coPercent);
def->label = L("Elefant foot layers density");
def->category = L("Quality");
def->tooltip = L("Density of internal solid infill for elefant foot layers compensation. "
"The initial value for the second layer is set. "
"Subsequent layers become linearly denser by the height specified in elefant_foot_compensation_layers. ");
def->sidetext = "%";
def->min = 50;
def->max = 100;
def->mode = comExpert;
def->set_default_value(new ConfigOptionPercent(100));
def = this->add("layer_height", coFloat);
def->label = L("Layer height");
def->category = L("Quality");
@@ -2602,7 +2614,7 @@ void PrintConfigDef::init_fff_params()
def->label = L("Number of cooling moves");
def->tooltip = L("Filament is cooled by being moved back and forth in the "
"cooling tubes. Specify desired number of these moves.");
def->max = 0;
def->min = 0;
def->max = 20;
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionInts { 4 });
@@ -6915,6 +6927,29 @@ void PrintConfigDef::init_fff_params()
def->max = 25.0;
def->set_default_value(new ConfigOptionFloat(0.5));
def = this->add("wall_maximum_resolution", coFloat);
def->label = L("Maximum wall resolution");
def->category = L("Quality");
def->tooltip = L("This value determines the smallest wall line segment length in mm. "
"The smaller you set this value, the more accurate and precise the walls will be.");
def->sidetext = L("mm"); // millimeters, CIS languages need translation
def->mode = comExpert;
def->min = 0.005;
def->max = 0.5f;
def->set_default_value(new ConfigOptionFloat(0.5f));
def = this->add("wall_maximum_deviation", coFloat);
def->label = L("Maximum wall deviation");
def->category = L("Quality");
def->tooltip = L("The maximum deviation allowed when reducing the resolution for the 'Maximum wall resolution' setting. If you increase this, "
"the print will be less accurate, but the G-Code will be smaller. 'Maximum wall deviation' limits 'Maximum wall resolution', "
"so if the two conflict, 'Maximum wall deviation' takes precedence.");
def->sidetext = L("mm"); // millimeters, CIS languages need translation
def->mode = comExpert;
def->min = 0.005f;
def->max = 0.05f;
def->set_default_value(new ConfigOptionFloat(0.025f));
def = this->add("initial_layer_min_bead_width", coPercent);
def->label = L("First layer minimum wall width");
def->category = L("Quality");
@@ -11063,8 +11098,32 @@ bool has_skirt(const DynamicPrintConfig& cfg)
|| (opt_draft_shield && opt_draft_shield->getInt() != dsDisabled);
}
float get_real_skirt_dist(const DynamicPrintConfig& cfg) {
return has_skirt(cfg) ? cfg.opt_float("skirt_distance") : 0;
if (!has_skirt(cfg)) return 0.f;
float dist = cfg.opt_float("skirt_distance");
int loops = cfg.opt_int("skirt_loops");
auto opt_draft_shield = cfg.option("draft_shield");
if (opt_draft_shield && opt_draft_shield->getInt() != dsDisabled && loops == 0) {
loops = 1;
}
float width = cfg.opt_float("initial_layer_line_width");
if (width <= 0.f) {
width = cfg.opt_float("line_width");
}
if (width <= 0.f) {
auto* nd = cfg.opt<ConfigOptionFloats>("nozzle_diameter");
if (nd && !nd->values.empty()) {
width = *std::max_element(nd->values.begin(), nd->values.end());
} else {
width = 0.4f;
}
}
return dist + loops * width;
}
static bool is_XL_printer(const std::string& printer_notes)
{
return boost::algorithm::contains(printer_notes, "PRINTER_VENDOR_PRUSA3D")