From cfb702be99677cdfb14546c3ae9e96f012205f07 Mon Sep 17 00:00:00 2001 From: Pavel Mikus Date: Mon, 2 Jan 2023 14:28:27 +0100 Subject: [PATCH] rename avoid_curled_filament_during_travels to avoid_crossing_curled_overhangs mark avoid_crossing_curled_overhangs as Experimental rename overhang_steepness_levels to overhang_overlap_levels --- src/libslic3r/GCode.cpp | 16 ++++++++-------- src/libslic3r/GCode.hpp | 2 +- src/libslic3r/Layer.hpp | 2 +- src/libslic3r/Preset.cpp | 4 ++-- src/libslic3r/Print.cpp | 2 +- src/libslic3r/PrintConfig.cpp | 23 ++++++++++++++--------- src/libslic3r/PrintConfig.hpp | 4 ++-- src/libslic3r/PrintObject.cpp | 4 ++-- src/slic3r/GUI/ConfigManipulation.cpp | 8 ++++---- src/slic3r/GUI/Tab.cpp | 4 ++-- 10 files changed, 37 insertions(+), 32 deletions(-) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 8cb95ea6c..b9817776f 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -2161,11 +2161,11 @@ LayerResult GCode::process_layer( Skirt::make_skirt_loops_per_extruder_1st_layer(print, layer_tools, m_skirt_done) : Skirt::make_skirt_loops_per_extruder_other_layers(print, layer_tools, m_skirt_done); - if (this->config().avoid_curled_filament_during_travels) { - m_avoid_curled_filaments.clear(); + if (this->config().avoid_crossing_curled_overhangs) { + m_avoid_crossing_curled_overhangs.clear(); for (const ObjectLayerToPrint &layer_to_print : layers) { - m_avoid_curled_filaments.add_obstacles(layer_to_print.object_layer, Point(scaled(this->origin()))); - m_avoid_curled_filaments.add_obstacles(layer_to_print.support_layer, Point(scaled(this->origin()))); + m_avoid_crossing_curled_overhangs.add_obstacles(layer_to_print.object_layer, Point(scaled(this->origin()))); + m_avoid_crossing_curled_overhangs.add_obstacles(layer_to_print.support_layer, Point(scaled(this->origin()))); } } @@ -2916,7 +2916,7 @@ std::string GCode::_extrude(const ExtrusionPath &path, const std::string_view de bool variable_speed = false; std::vector new_points{}; if (this->m_config.enable_dynamic_overhang_speeds && !this->on_first_layer() && is_perimeter(path.role())) { - new_points = m_extrusion_quality_estimator.estimate_extrusion_quality(path, m_config.overhang_steepness_levels, + new_points = m_extrusion_quality_estimator.estimate_extrusion_quality(path, m_config.overhang_overlap_levels, m_config.dynamic_overhang_speeds, m_config.get_abs_value("external_perimeter_speed"), speed); variable_speed = std::any_of(new_points.begin(), new_points.end(), [speed](const ProcessedPoint &p) { return p.speed != speed; }); @@ -3040,13 +3040,13 @@ std::string GCode::travel_to(const Point &point, ExtrusionRole role, std::string this->origin in order to get G-code coordinates. */ Polyline travel { this->last_pos(), point }; - if (this->config().avoid_curled_filament_during_travels) { + if (this->config().avoid_crossing_curled_overhangs) { if (m_config.avoid_crossing_perimeters) { BOOST_LOG_TRIVIAL(warning) - << "Option >avoid curled filament during travels< is not compatible with avoid crossing perimeters and it will be ignored!"; + << "Option >avoid crossing curled overhangs< is not compatible with avoid crossing perimeters and it will be ignored!"; } else { Point scaled_origin = Point(scaled(this->origin())); - travel = m_avoid_curled_filaments.find_path(this->last_pos() + scaled_origin, point + scaled_origin); + travel = m_avoid_crossing_curled_overhangs.find_path(this->last_pos() + scaled_origin, point + scaled_origin); travel.translate(-scaled_origin); } } diff --git a/src/libslic3r/GCode.hpp b/src/libslic3r/GCode.hpp index 9d1a2449b..09442cf0f 100644 --- a/src/libslic3r/GCode.hpp +++ b/src/libslic3r/GCode.hpp @@ -352,7 +352,7 @@ private: OozePrevention m_ooze_prevention; Wipe m_wipe; AvoidCrossingPerimeters m_avoid_crossing_perimeters; - JPSPathFinder m_avoid_curled_filaments; + JPSPathFinder m_avoid_crossing_curled_overhangs; RetractWhenCrossingPerimeters m_retract_when_crossing_perimeters; bool m_enable_loop_clipping; // If enabled, the G-code generator will put following comments at the ends diff --git a/src/libslic3r/Layer.hpp b/src/libslic3r/Layer.hpp index 024ed41a4..cfeace67b 100644 --- a/src/libslic3r/Layer.hpp +++ b/src/libslic3r/Layer.hpp @@ -324,7 +324,7 @@ public: coordf_t height; // layer height in unscaled coordinates coordf_t bottom_z() const { return this->print_z - this->height; } - //Lines estimated to be seriously malformed, info from the IssueSearch algorithm. These lines should probably be avoided during fast travels. + //Extrusions estimated to be seriously malformed, estimated during "Estimating curled extrusions" step. These lines should be avoided during fast travels. Lines malformed_lines; // Collection of expolygons generated by slicing the possibly multiple meshes of the source geometry diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 842638efc..206844b7b 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -420,7 +420,7 @@ void Preset::set_visible_from_appconfig(const AppConfig &app_config) static std::vector s_Preset_print_options { "layer_height", "first_layer_height", "perimeters", "spiral_vase", "slice_closing_radius", "slicing_mode", "top_solid_layers", "top_solid_min_thickness", "bottom_solid_layers", "bottom_solid_min_thickness", - "extra_perimeters", "extra_perimeters_on_overhangs", "ensure_vertical_shell_thickness", "avoid_curled_filament_during_travels", "avoid_crossing_perimeters", "thin_walls", "overhangs", + "extra_perimeters", "extra_perimeters_on_overhangs", "ensure_vertical_shell_thickness", "avoid_crossing_curled_overhangs", "avoid_crossing_perimeters", "thin_walls", "overhangs", "seam_position","staggered_inner_seams", "external_perimeters_first", "fill_density", "fill_pattern", "top_fill_pattern", "bottom_fill_pattern", "infill_every_layers", "infill_only_where_needed", "solid_infill_every_layers", "fill_angle", "bridge_angle", "solid_infill_below_area", "only_retract_when_crossing_perimeters", "infill_first", @@ -429,7 +429,7 @@ static std::vector s_Preset_print_options { "fuzzy_skin", "fuzzy_skin_thickness", "fuzzy_skin_point_dist", "max_volumetric_extrusion_rate_slope_positive", "max_volumetric_extrusion_rate_slope_negative", "perimeter_speed", "small_perimeter_speed", "external_perimeter_speed", "infill_speed", "solid_infill_speed", - "enable_dynamic_overhang_speeds", "dynamic_overhang_speeds", "overhang_steepness_levels", + "enable_dynamic_overhang_speeds", "dynamic_overhang_speeds", "overhang_overlap_levels", "top_solid_infill_speed", "support_material_speed", "support_material_xy_spacing", "support_material_interface_speed", "bridge_speed", "gap_fill_speed", "gap_fill_enabled", "travel_speed", "travel_speed_z", "first_layer_speed", "first_layer_speed_over_raft", "perimeter_acceleration", "infill_acceleration", "bridge_acceleration", "first_layer_acceleration", "first_layer_acceleration_over_raft", "default_acceleration", "skirts", "skirt_distance", "skirt_height", "draft_shield", diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index 4e230dc6d..79fee4672 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -222,7 +222,7 @@ bool Print::invalidate_state_by_config_options(const ConfigOptionResolver & /* n osteps.emplace_back(posInfill); osteps.emplace_back(posSupportMaterial); steps.emplace_back(psSkirtBrim); - } else if (opt_key == "avoid_curled_filament_during_travels") { + } else if (opt_key == "avoid_crossing_curled_overhangs") { osteps.emplace_back(posEstimateCurledExtrusions); } else { // for legacy, if we can't handle this option let's invalidate all steps diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index af2ce3b66..1c2947099 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -400,10 +400,10 @@ void PrintConfigDef::init_fff_params() // Maximum extruder temperature, bumped to 1500 to support printing of glass. const int max_temp = 1500; - def = this->add("avoid_curled_filament_during_travels", coBool); - def->label = L("Avoid curled filament during travels"); - def->tooltip = L("Plan travel moves such that the extruder avoids areas where filament may be curled up. " - "This is mostly happening on steeper rounded overhangs and may cause crash or borken print. " + def = this->add("avoid_crossing_curled_overhangs", coBool); + def->label = L("Avoid crossing curled overhangs (Experimental)"); + def->tooltip = L("Plan travel moves such that the extruder avoids areas where the filament may be curled up. " + "This is mostly happening on steeper rounded overhangs and may cause a crash with the nozzle. " "This feature slows down both the print and the G-code generation."); def->mode = comExpert; def->set_default_value(new ConfigOptionBool(false)); @@ -536,11 +536,15 @@ void PrintConfigDef::init_fff_params() def->mode = comAdvanced; def->set_default_value(new ConfigOptionBool(true)); - def = this->add("overhang_steepness_levels", coPercents); - def->full_label = L("Steepness levels of overhangs"); + def = this->add("overhang_overlap_levels", coPercents); + def->full_label = L("Overhang overlap levels"); def->category = L("Speed"); - def->tooltip = L("Controls overhang steepness, expressed as percentage of overlap of the extrusion with the previous layer. " - "Each overhang level then corresponds with the overhang speed below."); + def->tooltip = L("Controls overhang levels, expressed as a percentage of overlap of the extrusion with the previous layer - " + "100% represents full overlap - no overhang is present, while 0% represents full overhang (floating extrusion). " + "Each overhang level then corresponds with the overhang speed below. Speeds for overhang levels in between are " + "calculated via linear interpolation." + "If you set multiple different speeds for the same overhang level, only the largest speed is used. " + ); def->sidetext = L("%"); def->min = 0; def->max = 100; @@ -550,7 +554,8 @@ void PrintConfigDef::init_fff_params() def = this->add("dynamic_overhang_speeds", coFloatsOrPercents); def->full_label = L("Dynamic speed on overhangs"); def->category = L("Speed"); - def->tooltip = L("This setting controls the speed on the overhang with steepness value above. " + def->tooltip = L("This setting controls the speed on the overhang with the overlap value set above. " + "The speed of the extrusion is calculated as a linear interpolation of the speeds for higher and lower overlap. " "If set as percentage, the speed is calculated over the external perimeter speed." ); def->sidetext = L("mm/s or %"); diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index 7f8d5df12..a36125a07 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -565,7 +565,7 @@ PRINT_CONFIG_CLASS_DEFINE( ((ConfigOptionFloatOrPercent, external_perimeter_extrusion_width)) ((ConfigOptionFloatOrPercent, external_perimeter_speed)) ((ConfigOptionBool, enable_dynamic_overhang_speeds)) - ((ConfigOptionPercents, overhang_steepness_levels)) + ((ConfigOptionPercents, overhang_overlap_levels)) ((ConfigOptionFloatsOrPercents, dynamic_overhang_speeds)) ((ConfigOptionBool, external_perimeters_first)) ((ConfigOptionBool, extra_perimeters)) @@ -732,7 +732,7 @@ PRINT_CONFIG_CLASS_DERIVED_DEFINE( PrintConfig, (MachineEnvelopeConfig, GCodeConfig), - ((ConfigOptionBool, avoid_curled_filament_during_travels)) + ((ConfigOptionBool, avoid_crossing_curled_overhangs)) ((ConfigOptionBool, avoid_crossing_perimeters)) ((ConfigOptionFloatOrPercent, avoid_crossing_perimeters_max_detour)) ((ConfigOptionPoints, bed_shape)) diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp index 24a4191c1..177540192 100644 --- a/src/libslic3r/PrintObject.cpp +++ b/src/libslic3r/PrintObject.cpp @@ -454,7 +454,7 @@ void PrintObject::generate_support_material() void PrintObject::estimate_curled_extrusions() { if (this->set_started(posEstimateCurledExtrusions)) { - if (this->print()->config().avoid_curled_filament_during_travels) { + if (this->print()->config().avoid_crossing_curled_overhangs) { BOOST_LOG_TRIVIAL(debug) << "Estimating areas with curled extrusions - start"; m_print->set_status(88, L("Estimating curled extrusions")); @@ -749,7 +749,7 @@ bool PrintObject::invalidate_state_by_config_options( || opt_key == "support_material_interface_speed" || opt_key == "bridge_speed" || opt_key == "enable_dynamic_overhang_speeds" - || opt_key == "overhang_steepness_levels" + || opt_key == "overhang_overlap_levels" || opt_key == "dynamic_overhang_speeds" || opt_key == "external_perimeter_speed" || opt_key == "infill_speed" diff --git a/src/slic3r/GUI/ConfigManipulation.cpp b/src/slic3r/GUI/ConfigManipulation.cpp index 482f000f0..7f8e70e6c 100644 --- a/src/slic3r/GUI/ConfigManipulation.cpp +++ b/src/slic3r/GUI/ConfigManipulation.cpp @@ -221,11 +221,11 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig* config) bool have_perimeters = config->opt_int("perimeters") > 0; for (auto el : { "extra_perimeters","extra_perimeters_on_overhangs", "ensure_vertical_shell_thickness", "thin_walls", "overhangs", "seam_position","staggered_inner_seams", "external_perimeters_first", "external_perimeter_extrusion_width", - "perimeter_speed", "small_perimeter_speed", "external_perimeter_speed", "enable_dynamic_overhang_speeds", "overhang_steepness_levels", "dynamic_overhang_speeds" }) + "perimeter_speed", "small_perimeter_speed", "external_perimeter_speed", "enable_dynamic_overhang_speeds", "overhang_overlap_levels", "dynamic_overhang_speeds" }) toggle_field(el, have_perimeters); for (size_t i = 0; i < 4; i++) { - toggle_field("overhang_steepness_levels#" + std::to_string(i), config->opt_bool("enable_dynamic_overhang_speeds")); + toggle_field("overhang_overlap_levels#" + std::to_string(i), config->opt_bool("enable_dynamic_overhang_speeds")); toggle_field("dynamic_overhang_speeds#" + std::to_string(i), config->opt_bool("enable_dynamic_overhang_speeds")); } @@ -321,8 +321,8 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig* config) "wipe_tower_bridging", "wipe_tower_no_sparse_layers", "single_extruder_multi_material_priming" }) toggle_field(el, have_wipe_tower); - toggle_field("avoid_curled_filament_during_travels", !config->opt_bool("avoid_crossing_perimeters")); - toggle_field("avoid_crossing_perimeters", !config->opt_bool("avoid_curled_filament_during_travels")); + toggle_field("avoid_crossing_curled_overhangs", !config->opt_bool("avoid_crossing_perimeters")); + toggle_field("avoid_crossing_perimeters", !config->opt_bool("avoid_crossing_curled_overhangs")); bool have_avoid_crossing_perimeters = config->opt_bool("avoid_crossing_perimeters"); toggle_field("avoid_crossing_perimeters_max_detour", have_avoid_crossing_perimeters); diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 796ce622b..0b0cfc8ae 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -1425,7 +1425,7 @@ void TabPrint::build() optgroup->append_single_option_line("extra_perimeters", category_path + "extra-perimeters-if-needed"); optgroup->append_single_option_line("extra_perimeters_on_overhangs", category_path + "extra-perimeters-on-overhangs"); optgroup->append_single_option_line("ensure_vertical_shell_thickness", category_path + "ensure-vertical-shell-thickness"); - optgroup->append_single_option_line("avoid_curled_filament_during_travels", category_path + "avoid-curled-filament-during-travels"); + optgroup->append_single_option_line("avoid_crossing_curled_overhangs", category_path + "avoid-crossing-curled-overhangs"); optgroup->append_single_option_line("avoid_crossing_perimeters", category_path + "avoid-crossing-perimeters"); optgroup->append_single_option_line("avoid_crossing_perimeters_max_detour", category_path + "avoid_crossing_perimeters_max_detour"); optgroup->append_single_option_line("thin_walls", category_path + "detect-thin-walls"); @@ -1548,7 +1548,7 @@ void TabPrint::build() optgroup->append_line(line); }; optgroup->append_single_option_line("enable_dynamic_overhang_speeds"); - append_option_line(optgroup,"overhang_steepness_levels"); + append_option_line(optgroup,"overhang_overlap_levels"); append_option_line(optgroup,"dynamic_overhang_speeds"); optgroup = page->new_optgroup(L("Speed for non-print moves"));