Add option to enforce first layer min wall width (#1974)

Add option to set first layer min wall width
This commit is contained in:
xxxcq 2023-09-04 00:07:40 +08:00 committed by GitHub
parent 08cf38e5c9
commit 9e0dbd91ff
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 21 additions and 4 deletions

View file

@ -1784,8 +1784,13 @@ void PerimeterGenerator::process_arachne()
if (const auto& min_feature_size_opt = object_config->min_feature_size) if (const auto& min_feature_size_opt = object_config->min_feature_size)
input_params.min_feature_size = min_feature_size_opt.value * 0.01 * min_nozzle_diameter; input_params.min_feature_size = min_feature_size_opt.value * 0.01 * min_nozzle_diameter;
if (const auto& min_bead_width_opt = object_config->min_bead_width) if (this->layer_id == 0) {
input_params.min_bead_width = min_bead_width_opt.value * 0.01 * min_nozzle_diameter; if (const auto& initial_layer_min_bead_width_opt = object_config->initial_layer_min_bead_width)
input_params.min_bead_width = initial_layer_min_bead_width_opt.value * 0.01 * min_nozzle_diameter;
} else {
if (const auto& min_bead_width_opt = object_config->min_bead_width)
input_params.min_bead_width = min_bead_width_opt.value * 0.01 * min_nozzle_diameter;
}
if (const auto& wall_transition_filter_deviation_opt = object_config->wall_transition_filter_deviation) if (const auto& wall_transition_filter_deviation_opt = object_config->wall_transition_filter_deviation)
input_params.wall_transition_filter_deviation = wall_transition_filter_deviation_opt.value * 0.01 * min_nozzle_diameter; input_params.wall_transition_filter_deviation = wall_transition_filter_deviation_opt.value * 0.01 * min_nozzle_diameter;

View file

@ -765,7 +765,7 @@ static std::vector<std::string> s_Preset_print_options {
"sparse_infill_acceleration", "internal_solid_infill_acceleration", "tree_support_adaptive_layer_height", "tree_support_auto_brim", "sparse_infill_acceleration", "internal_solid_infill_acceleration", "tree_support_adaptive_layer_height", "tree_support_auto_brim",
"tree_support_brim_width", "gcode_comments", "gcode_label_objects", "tree_support_brim_width", "gcode_comments", "gcode_label_objects",
"initial_layer_travel_speed", "exclude_object", "slow_down_layers", "infill_anchor", "infill_anchor_max", "initial_layer_travel_speed", "exclude_object", "slow_down_layers", "infill_anchor", "infill_anchor_max",
"make_overhang_printable", "make_overhang_printable_angle", "make_overhang_printable_hole_size" ,"notes" "make_overhang_printable", "make_overhang_printable_angle", "make_overhang_printable_hole_size" ,"notes" ,"initial_layer_min_bead_width"
}; };

View file

@ -3872,6 +3872,16 @@ void PrintConfigDef::init_fff_params()
def->min = 0; def->min = 0;
def->set_default_value(new ConfigOptionPercent(25)); def->set_default_value(new ConfigOptionPercent(25));
def = this->add("initial_layer_min_bead_width", coPercent);
def->label = L("First layer minimum wall width");
def->category = L("Quality");
def->tooltip = L("The minimum wall width that should be used for the first layer is recommended to be set "
"to the same size as the nozzle. This adjustment is expected to enhance adhesion.");
def->sidetext = L("%");
def->mode = comAdvanced;
def->min = 0;
def->set_default_value(new ConfigOptionPercent(85));
def = this->add("min_bead_width", coPercent); def = this->add("min_bead_width", coPercent);
def->label = L("Minimum wall width"); def->label = L("Minimum wall width");
def->category = L("Quality"); def->category = L("Quality");

View file

@ -721,6 +721,7 @@ PRINT_CONFIG_CLASS_DEFINE(
((ConfigOptionFloat, wall_transition_angle)) ((ConfigOptionFloat, wall_transition_angle))
((ConfigOptionInt, wall_distribution_count)) ((ConfigOptionInt, wall_distribution_count))
((ConfigOptionPercent, min_feature_size)) ((ConfigOptionPercent, min_feature_size))
((ConfigOptionPercent, initial_layer_min_bead_width))
((ConfigOptionPercent, min_bead_width)) ((ConfigOptionPercent, min_bead_width))
// Orca // Orca

View file

@ -672,7 +672,7 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, co
bool have_arachne = config->opt_enum<PerimeterGeneratorType>("wall_generator") == PerimeterGeneratorType::Arachne; bool have_arachne = config->opt_enum<PerimeterGeneratorType>("wall_generator") == PerimeterGeneratorType::Arachne;
for (auto el : { "wall_transition_length", "wall_transition_filter_deviation", "wall_transition_angle", for (auto el : { "wall_transition_length", "wall_transition_filter_deviation", "wall_transition_angle",
"min_feature_size", "min_bead_width", "wall_distribution_count" }) "min_feature_size", "min_bead_width", "wall_distribution_count", "initial_layer_min_bead_width"})
toggle_line(el, have_arachne); toggle_line(el, have_arachne);
toggle_field("detect_thin_wall", !have_arachne); toggle_field("detect_thin_wall", !have_arachne);

View file

@ -1881,6 +1881,7 @@ void TabPrint::build()
optgroup->append_single_option_line("wall_transition_filter_deviation"); optgroup->append_single_option_line("wall_transition_filter_deviation");
optgroup->append_single_option_line("wall_transition_length"); optgroup->append_single_option_line("wall_transition_length");
optgroup->append_single_option_line("wall_distribution_count"); optgroup->append_single_option_line("wall_distribution_count");
optgroup->append_single_option_line("initial_layer_min_bead_width");
optgroup->append_single_option_line("min_bead_width"); optgroup->append_single_option_line("min_bead_width");
optgroup->append_single_option_line("min_feature_size"); optgroup->append_single_option_line("min_feature_size");