Merge branch 'main' into belt/baseChanges

This commit is contained in:
Joseph Robertson
2026-05-30 21:39:03 -05:00
committed by GitHub
655 changed files with 29588 additions and 7920 deletions

View File

@@ -1595,18 +1595,24 @@ void PrintConfigDef::init_fff_params()
def->label = L("Slow down for curled perimeters");
def->category = L("Speed");
// xgettext:no-c-format, no-boost-format
def->tooltip = L("Enable this option to slow down printing in areas where perimeters may have curled upwards. "
def->tooltip = L("Enable this option to slow down printing in areas where perimeters may have curled upwards.\n"
"For example, additional slowdown will be applied when printing overhangs on sharp corners like the "
"front of the Benchy hull, reducing curling which compounds over multiple layers.\n\n"
"It is generally recommended to have this option switched on unless your printer cooling is powerful enough or the "
"print speed slow enough that perimeter curling does not happen. If printing with a high external perimeter speed, "
"this parameter may introduce slight artifacts when slowing down due to the large variance in print speeds. "
"If you notice artifacts, ensure your pressure advance is tuned correctly.\n\n"
"print speed is slow enough that perimeter curling does not happen. \n"
"If printing with a high external perimeter speed, this parameter may introduce wall artifacts when slowing down, "
"due to the potentially large variance in print speeds causing the extruder to be unable to keep up with the requested flow change.\n"
"Root cause of these artifacts is most likely PA tuning being slightly off, especially when combined "
"with a high PA smooth time.\n\n"
"Recommendations when enabling this option:\n"
"1. Reduce Pressure Advance smooth time to 0.015 - 0.02 so the extruder reacts quickly to the speed changes.\n"
"2. Increase the minimum print speeds to limit the magnitude of the slowdown and reduce the variance between fast and slow segments.\n"
"3. If artifacts still appear, enable Extrusion Rate Smoothing (ERS) to further smooth the flow transitions.\n\n"
"Note: When this option is enabled, overhang perimeters are treated like overhangs, meaning the overhang speed is "
"applied even if the overhanging perimeter is part of a bridge. For example, when the perimeters are 100% overhanging"
", with no wall supporting them from underneath, the 100% overhang speed will be applied.");
"applied even if the overhanging perimeter is part of a bridge.\n"
"For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 100% overhang speed will be applied.");
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionBool{ true });
def->set_default_value(new ConfigOptionBool{ false });
def = this->add("overhang_1_4_speed", coFloatOrPercent);
def->label = "10%";
@@ -4095,10 +4101,10 @@ void PrintConfigDef::init_fff_params()
def->gui_type = ConfigOptionDef::GUIType::i_enum_open;
def->label = L("Infill");
def->category = L("Extruders");
def->tooltip = L("Filament to print internal sparse infill.");
def->min = 1;
def->tooltip = L("Filament to print internal sparse infill.\n\"Default\" uses the active object/part filament.");
def->min = 0;
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionInt(1));
def->set_default_value(new ConfigOptionInt(0));
def = this->add("sparse_infill_line_width", coFloatOrPercent);
def->label = L("Sparse infill");
@@ -4975,10 +4981,10 @@ void PrintConfigDef::init_fff_params()
def->gui_type = ConfigOptionDef::GUIType::i_enum_open;
def->label = L("Walls");
def->category = L("Extruders");
def->tooltip = L("Filament to print walls.");
def->min = 1;
def->tooltip = L("Filament to print walls.\n\"Default\" uses the active object/part filament.");
def->min = 0;
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionInt(1));
def->set_default_value(new ConfigOptionInt(0));
def = this->add("inner_wall_line_width", coFloatOrPercent);
def->label = L("Inner wall");
@@ -5736,10 +5742,10 @@ void PrintConfigDef::init_fff_params()
def->gui_type = ConfigOptionDef::GUIType::i_enum_open;
def->label = L("Solid infill");
def->category = L("Extruders");
def->tooltip = L("Filament to print solid infill.");
def->min = 1;
def->tooltip = L("Filament to print solid infill.\n\"Default\" uses the active object/part filament.");
def->min = 0;
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionInt(1));
def->set_default_value(new ConfigOptionInt(0));
def = this->add("internal_solid_infill_line_width", coFloatOrPercent);
def->label = L("Internal solid infill");
@@ -6115,7 +6121,7 @@ void PrintConfigDef::init_fff_params()
def->gui_type = ConfigOptionDef::GUIType::i_enum_open;
def->label = L("Support/raft base");
def->category = L("Support");
def->tooltip = L("Filament to print support base and raft. \"Default\" means no specific filament for support and current filament is used.");
def->tooltip = L("Filament to print support base and raft.\n\"Default\" means no specific filament for support and current filament is used.");
def->min = 0;
def->mode = comSimple;
def->set_default_value(new ConfigOptionInt(0));
@@ -6150,7 +6156,7 @@ void PrintConfigDef::init_fff_params()
def->gui_type = ConfigOptionDef::GUIType::i_enum_open;
def->label = L("Support/raft interface");
def->category = L("Support");
def->tooltip = L("Filament to print support interface. \"Default\" means no specific filament for support interface and current filament is used.");
def->tooltip = L("Filament to print support interface.\n\"Default\" means no specific filament for support interface and current filament is used.");
def->min = 0;
// BBS
def->mode = comSimple;
@@ -8843,9 +8849,9 @@ void DynamicPrintConfig::normalize_fdm(int used_filaments)
int extruder = this->option("extruder")->getInt();
this->erase("extruder");
if (extruder != 0) {
if (!this->has("sparse_infill_filament"))
if (!this->has("sparse_infill_filament") || this->option("sparse_infill_filament")->getInt() == 0)
this->option("sparse_infill_filament", true)->setInt(extruder);
if (!this->has("wall_filament"))
if (!this->has("wall_filament") || this->option("wall_filament")->getInt() == 0)
this->option("wall_filament", true)->setInt(extruder);
// Don't propagate the current extruder to support.
// For non-soluble supports, the default "0" extruder means to use the active extruder,
@@ -8857,8 +8863,11 @@ void DynamicPrintConfig::normalize_fdm(int used_filaments)
}
}
if (!this->has("solid_infill_filament") && this->has("sparse_infill_filament"))
this->option("solid_infill_filament", true)->setInt(this->option("sparse_infill_filament")->getInt());
if (this->has("sparse_infill_filament")) {
int sparse_infill_filament = this->option("sparse_infill_filament")->getInt();
if (sparse_infill_filament > 0 && (!this->has("solid_infill_filament") || this->option("solid_infill_filament")->getInt() == 0))
this->option("solid_infill_filament", true)->setInt(sparse_infill_filament);
}
if (this->has("spiral_mode") && this->opt<ConfigOptionBool>("spiral_mode", true)->value) {
{
@@ -8916,9 +8925,9 @@ void DynamicPrintConfig::normalize_fdm_1()
int extruder = this->option("extruder")->getInt();
this->erase("extruder");
if (extruder != 0) {
if (!this->has("sparse_infill_filament"))
if (!this->has("sparse_infill_filament") || this->option("sparse_infill_filament")->getInt() == 0)
this->option("sparse_infill_filament", true)->setInt(extruder);
if (!this->has("wall_filament"))
if (!this->has("wall_filament") || this->option("wall_filament")->getInt() == 0)
this->option("wall_filament", true)->setInt(extruder);
// Don't propagate the current extruder to support.
// For non-soluble supports, the default "0" extruder means to use the active extruder,
@@ -8930,8 +8939,11 @@ void DynamicPrintConfig::normalize_fdm_1()
}
}
if (!this->has("solid_infill_filament") && this->has("sparse_infill_filament"))
this->option("solid_infill_filament", true)->setInt(this->option("sparse_infill_filament")->getInt());
if (this->has("sparse_infill_filament")) {
int sparse_infill_filament = this->option("sparse_infill_filament")->getInt();
if (sparse_infill_filament > 0 && (!this->has("solid_infill_filament") || this->option("solid_infill_filament")->getInt() == 0))
this->option("solid_infill_filament", true)->setInt(sparse_infill_filament);
}
if (this->has("spiral_mode") && this->opt<ConfigOptionBool>("spiral_mode", true)->value) {
{