diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 9833ea1ff8..991a0926d2 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -23,6 +23,8 @@ #include #include #include +#include +#include #include #include @@ -4354,6 +4356,7 @@ std::string GCode::_extrude(const ExtrusionPath &path, std::string description, for (size_t i = 1; i < new_points.size(); i++) { const ProcessedPoint &processed_point = new_points[i]; + const ProcessedPoint &pre_processed_point = new_points[i-1]; Vec2d p = this->point_to_gcode_quantized(processed_point.p); if (m_enable_cooling_markers) { if (enable_overhang_bridge_fan) { @@ -4387,7 +4390,7 @@ std::string GCode::_extrude(const ExtrusionPath &path, std::string description, } const double line_length = (p - prev).norm(); - double new_speed = std::max((float)EXTRUDER_CONFIG(slow_down_min_speed), processed_point.speed) * 60.0; + double new_speed = std::max((float)EXTRUDER_CONFIG(slow_down_min_speed), pre_processed_point.speed) * 60.0; if (last_set_speed != new_speed) { gcode += m_writer.set_speed(new_speed, "", comment); last_set_speed = new_speed; diff --git a/src/libslic3r/GCode/ExtrusionProcessor.hpp b/src/libslic3r/GCode/ExtrusionProcessor.hpp index c44ce50f46..967620b407 100644 --- a/src/libslic3r/GCode/ExtrusionProcessor.hpp +++ b/src/libslic3r/GCode/ExtrusionProcessor.hpp @@ -1,6 +1,8 @@ #ifndef slic3r_ExtrusionProcessor_hpp_ #define slic3r_ExtrusionProcessor_hpp_ +// This algorithm is copied from PrusaSlicer, original author is Pavel Mikus(pavel.mikus.mail@seznam.cz) + #include "../AABBTreeLines.hpp" //#include "../SupportSpotsGenerator.hpp" #include "../libslic3r.h" @@ -68,7 +70,7 @@ public: class CurvatureEstimator { static const size_t sliders_count = 3; - SlidingWindowCurvatureAccumulator sliders[sliders_count] = {{1.0},{4.0}, {10.0}}; + SlidingWindowCurvatureAccumulator sliders[sliders_count] = {{3.0},{9.0}, {16.0}}; public: void add_point(float distance, float angle) diff --git a/src/libslic3r/PerimeterGenerator.cpp b/src/libslic3r/PerimeterGenerator.cpp index 189bb03dbe..e424e0db85 100644 --- a/src/libslic3r/PerimeterGenerator.cpp +++ b/src/libslic3r/PerimeterGenerator.cpp @@ -609,7 +609,7 @@ static ExtrusionEntityCollection traverse_extrusions(const PerimeterGenerator& p extrusion_paths_append(temp_paths, clip_extrusion(extrusion_path, lower_slices_paths, ClipperLib_Z::ctIntersection), role, is_external ? perimeter_generator.ext_perimeter_flow : perimeter_generator.perimeter_flow); - if (perimeter_generator.config->enable_overhang_speed && perimeter_generator.config->fuzzy_skin == FuzzySkinType::None) { + if (perimeter_generator.config->overhang_speed_classic && perimeter_generator.config->enable_overhang_speed && perimeter_generator.config->fuzzy_skin == FuzzySkinType::None) { Flow flow = is_external ? perimeter_generator.ext_perimeter_flow : perimeter_generator.perimeter_flow; std::map> clipper_serise; diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index e7b404e5e6..578034e6ce 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -783,7 +783,7 @@ void PrintConfigDef::init_fff_params() def->category = L("Speed"); def->tooltip = L("Enable this option to use classic mode"); def->mode = comAdvanced; - def->set_default_value(new ConfigOptionBool{ true }); + def->set_default_value(new ConfigOptionBool{ false }); def = this->add("enable_overhang_speed", coBool); def->label = L("Slow down for overhang"); @@ -4607,7 +4607,7 @@ void PrintConfigDef::handle_legacy(t_config_option_key &opt_key, std::string &va "remove_freq_sweep", "remove_bed_leveling", "remove_extrusion_calibration", "support_transition_line_width", "support_transition_speed", "bed_temperature", "bed_temperature_initial_layer", "can_switch_nozzle_type", "can_add_auxiliary_fan", "extra_flush_volume", "spaghetti_detector", "adaptive_layer_height", - "z_hop_type", "z_lift_type"/*, "overhang_speed_classic"*/ + "z_hop_type", "z_lift_type" }; if (ignore.find(opt_key) != ignore.end()) { diff --git a/src/slic3r/GUI/ConfigManipulation.cpp b/src/slic3r/GUI/ConfigManipulation.cpp index 64f411fd8e..649fd3045e 100644 --- a/src/slic3r/GUI/ConfigManipulation.cpp +++ b/src/slic3r/GUI/ConfigManipulation.cpp @@ -321,37 +321,6 @@ void ConfigManipulation::update_print_fff_config(DynamicPrintConfig* config, con is_msg_dlg_already_exist = false; } - //BBS - /* - if (config->opt_enum("wall_generator") == PerimeterGeneratorType::Arachne && - config->opt_bool("overhang_speed_classic")) - { - wxString msg_text = _(L("Arachne engine doesn't work with classic overhang speed mode.\n")) + "\n"; - if (is_global_config) - msg_text += "\n" + _(L("Turn off classic mode automatically? \n" - "Yes - Enable arachne with classic mode off\n" - "No - Give up using arachne this time")); - MessageDialog dialog(m_msg_dlg_parent, msg_text, "", - wxICON_WARNING | (is_global_config ? wxYES | wxNO : wxOK)); - DynamicPrintConfig new_conf = *config; - is_msg_dlg_already_exist = true; - auto answer = dialog.ShowModal(); - bool enable_overhang_slow_down_legacy = false; - if (!is_global_config || answer == wxID_YES) { - new_conf.set_key_value("overhang_speed_classic", new ConfigOptionBool(false)); - enable_overhang_slow_down_legacy = true; - } - else { - new_conf.set_key_value("wall_generator", new ConfigOptionEnum(PerimeterGeneratorType::Classic)); - } - apply(config, &new_conf); - if (cb_value_change) { - if (!enable_overhang_slow_down_legacy) - cb_value_change("overhang_speed_classic", false); - } - is_msg_dlg_already_exist = false; - } - */ // BBS int filament_cnt = wxGetApp().preset_bundle->filament_presets.size(); #if 0