From d140b5bdab190f2fa7b0256ece3644f00761bb6e Mon Sep 17 00:00:00 2001 From: SoftFever Date: Wed, 8 May 2024 20:41:12 +0800 Subject: [PATCH 1/9] allow choose custom filament for A1 and P1 --- src/slic3r/GUI/DeviceManager.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index 9e3cb574b1..8b2ce3a50e 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -1382,7 +1382,6 @@ void MachineObject::parse_status(int flag) } is_support_filament_tangle_detect = ((flag >> 19) & 0x1) != 0; - is_support_user_preset = ((flag >> 22) & 0x1) != 0; if (xcam_filament_tangle_detect_count > 0) xcam_filament_tangle_detect_count--; else { From b876b0c0c34a88072e147e76c1ca747ef23611b5 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Wed, 8 May 2024 20:44:28 +0800 Subject: [PATCH 2/9] clean up wxWidgets.cmake --- deps/wxWidgets/wxWidgets.cmake | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/deps/wxWidgets/wxWidgets.cmake b/deps/wxWidgets/wxWidgets.cmake index fdc1abdc9a..b7f852d244 100644 --- a/deps/wxWidgets/wxWidgets.cmake +++ b/deps/wxWidgets/wxWidgets.cmake @@ -1,6 +1,3 @@ -set(_wx_version 3.1.5) -set(_wx_git_tag v${_wx_version}) - set(_wx_toolkit "") set(_wx_private_font "-DwxUSE_PRIVATE_FONTS=1") @@ -20,26 +17,10 @@ else () set(_wx_edge "-DwxUSE_WEBVIEW_EDGE=OFF") endif () - -# Note: for anybody wanting to switch to tarball fetching - this won't just work as -# git apply expects a git repo. Either git init empty repo, or change patching method. -# if (WIN32) -# # Windows requires a different tarball because of configured line endings as stated in docs. -# set(_wx_tarball_url https://github.com/wxWidgets/wxWidgets/releases/download/${_wx_git_tag}/wxWidgets-${_wx_version}.7z) -# set(_wx_tarball_hash 99f5382312e4a4aea444ada07341a72c5d4a69b58d8e76586d4b94ede7f5ef4d) -# else() -# set(_wx_tarball_url https://github.com/wxWidgets/wxWidgets/releases/download/${_wx_git_tag}/wxWidgets-${_wx_version}.tar.bz2) -# set(_wx_tarball_hash d7b3666de33aa5c10ea41bb9405c40326e1aeb74ee725bb88f90f1d50270a224) -# endif() - orcaslicer_add_cmake_project( wxWidgets GIT_REPOSITORY "https://github.com/SoftFever/Orca-deps-wxWidgets" - # GIT_TAG ${_wx_git_tag} GIT_SHALLOW ON - # URL ${_wx_tarball_url} - # URL_HASH SHA256=${_wx_tarball_hash} - # PATCH_COMMAND ${_patch_cmd} DEPENDS ${PNG_PKG} ${ZLIB_PKG} ${EXPAT_PKG} dep_TIFF dep_JPEG CMAKE_ARGS -DwxBUILD_PRECOMP=ON From 29f9d5dd0354a215632fbfaec223217bb63b351a Mon Sep 17 00:00:00 2001 From: yw4z Date: Wed, 8 May 2024 19:13:39 +0300 Subject: [PATCH 3/9] Close Variable layer height gizmo when other toolbar buttons clicked (#5255) --- src/slic3r/GUI/GLCanvas3D.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 8c00b09dff..f1bb13d291 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -6387,6 +6387,7 @@ bool GLCanvas3D::_init_main_toolbar() item.icon_filename = m_is_dark ? "toolbar_variable_layer_height_dark.svg" : "toolbar_variable_layer_height.svg"; item.tooltip = _utf8(L("Variable layer height")); item.sprite_id++; + item.left.toggable = true; // ORCA Closes popup if other toolbar icon clicked and it allows closing popup when clicked its button item.left.action_callback = [this]() { if (m_canvas != nullptr) wxPostEvent(m_canvas, SimpleEvent(EVT_GLTOOLBAR_LAYERSEDITING)); }; item.visibility_callback = [this]()->bool { bool res = current_printer_technology() == ptFFF; From de5c1c80e375816002ab6250333559c38c0913cb Mon Sep 17 00:00:00 2001 From: Ioannis Giannakas <59056762+igiannakas@users.noreply.github.com> Date: Thu, 9 May 2024 15:02:05 +0100 Subject: [PATCH 4/9] Fix bed mesh algorithm for 3 point bicubic algorightm (#5296) * Fix bed mesh algorithm for 3 point bicubic algorightm * Corrected + to * * Amended algo to mirror KAMP * Updated from feedbacl --- src/libslic3r/GCode.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index fc368eeca5..f65fabe5aa 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -2352,11 +2352,17 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato auto probe_dist_y = std::max(1., m_config.bed_mesh_probe_distance.value.y()); int probe_count_x = std::max(3, (int) std::ceil(mesh_bbox.size().x() / probe_dist_x)); int probe_count_y = std::max(3, (int) std::ceil(mesh_bbox.size().y() / probe_dist_y)); - this->placeholder_parser().set("bed_mesh_probe_count", new ConfigOptionInts({probe_count_x, probe_count_y})); auto bed_mesh_algo = "bicubic"; - if (probe_count_x < 4 || probe_count_y < 4) { + if (probe_count_x * probe_count_y <= 6) { // lagrange needs up to a total of 6 mesh points bed_mesh_algo = "lagrange"; } + else + if(print.config().gcode_flavor == gcfKlipper){ + // bicubic needs 4 probe points per axis + probe_count_x = std::max(probe_count_x,4); + probe_count_y = std::max(probe_count_y,4); + } + this->placeholder_parser().set("bed_mesh_probe_count", new ConfigOptionInts({probe_count_x, probe_count_y})); this->placeholder_parser().set("bed_mesh_algo", bed_mesh_algo); // get center without wipe tower BoundingBoxf bbox_wo_wt; // bounding box without wipe tower From 6920a88e58c1bc78247ba2b52685c218b7489eb8 Mon Sep 17 00:00:00 2001 From: Ioannis Giannakas <59056762+igiannakas@users.noreply.github.com> Date: Thu, 9 May 2024 16:21:06 +0100 Subject: [PATCH 5/9] SEMM: Introduced parameter to control the maximum speed used for purging in the purge tower (#5304) * Max wipe tower purge print speed for SEMM * Max wipe tower purge print speed for SEMM * Merge branch 'dev-branch' of https://github.com/igiannakas/OrcaSlicer into dev-branch * Updated float calculation * Updated float calculation * Updated tooltip * Updated label --- src/libslic3r/GCode/WipeTower2.cpp | 5 +++-- src/libslic3r/GCode/WipeTower2.hpp | 1 + src/libslic3r/Preset.cpp | 2 +- src/libslic3r/Print.cpp | 1 + src/libslic3r/PrintConfig.cpp | 12 ++++++++++++ src/libslic3r/PrintConfig.hpp | 1 + src/slic3r/GUI/ConfigManipulation.cpp | 2 +- src/slic3r/GUI/Plater.cpp | 2 +- src/slic3r/GUI/Tab.cpp | 1 + 9 files changed, 22 insertions(+), 5 deletions(-) diff --git a/src/libslic3r/GCode/WipeTower2.cpp b/src/libslic3r/GCode/WipeTower2.cpp index 5dd5fa0f63..0013cb99cc 100644 --- a/src/libslic3r/GCode/WipeTower2.cpp +++ b/src/libslic3r/GCode/WipeTower2.cpp @@ -550,7 +550,8 @@ WipeTower2::WipeTower2(const PrintConfig& config, const PrintRegionConfig& defau m_infill_speed(default_region_config.sparse_infill_speed), m_perimeter_speed(default_region_config.inner_wall_speed), m_current_tool(initial_tool), - wipe_volumes(wiping_matrix) + wipe_volumes(wiping_matrix), + m_wipe_tower_max_purge_speed(float(config.wipe_tower_max_purge_speed)) { // Read absolute value of first layer speed, if given as percentage, // it is taken over following default. Speeds from config are not @@ -1099,7 +1100,7 @@ void WipeTower2::toolchange_Wipe( // All the calculations in all other places take the spacing into account for all the layers. // If spare layers are excluded->if 1 or less toolchange has been done, it must be sill the first layer, too.So slow down. - const float target_speed = is_first_layer() || (m_num_tool_changes <= 1 && m_no_sparse_layers) ? m_first_layer_speed * 60.f : std::min(5400.f, m_infill_speed * 60.f); + const float target_speed = is_first_layer() || (m_num_tool_changes <= 1 && m_no_sparse_layers) ? m_first_layer_speed * 60.f : std::min(m_wipe_tower_max_purge_speed * 60.f, m_infill_speed * 60.f); float wipe_speed = 0.33f * target_speed; // if there is less than 2.5*m_perimeter_width to the edge, advance straightaway (there is likely a blob anyway) diff --git a/src/libslic3r/GCode/WipeTower2.hpp b/src/libslic3r/GCode/WipeTower2.hpp index 8fd5d5de31..cb1c11b4e9 100644 --- a/src/libslic3r/GCode/WipeTower2.hpp +++ b/src/libslic3r/GCode/WipeTower2.hpp @@ -189,6 +189,7 @@ private: int m_old_temperature = -1; // To keep track of what was the last temp that we set (so we don't issue the command when not neccessary) float m_travel_speed = 0.f; float m_infill_speed = 0.f; + float m_wipe_tower_max_purge_speed = 90.f; float m_perimeter_speed = 0.f; float m_first_layer_speed = 0.f; size_t m_first_layer_idx = size_t(-1); diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index a5f4a2f4f5..f6426739de 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -816,7 +816,7 @@ static std::vector s_Preset_print_options { "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_min_bead_width", "make_overhang_printable", "make_overhang_printable_angle", "make_overhang_printable_hole_size" ,"notes", - "wipe_tower_cone_angle", "wipe_tower_extra_spacing", "wipe_tower_extruder", "wiping_volumes_extruders","wipe_tower_bridging", "single_extruder_multi_material_priming", + "wipe_tower_cone_angle", "wipe_tower_extra_spacing","wipe_tower_max_purge_speed", "wipe_tower_extruder", "wiping_volumes_extruders","wipe_tower_bridging", "single_extruder_multi_material_priming", "wipe_tower_rotation_angle", "tree_support_branch_distance_organic", "tree_support_branch_diameter_organic", "tree_support_branch_angle_organic", "hole_to_polyhole", "hole_to_polyhole_threshold", "hole_to_polyhole_twisted", "mmu_segmented_region_max_width", "mmu_segmented_region_interlocking_depth", "small_area_infill_flow_compensation", "small_area_infill_flow_compensation_model", diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index 9dfe1f9659..93bbc7c94b 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -304,6 +304,7 @@ bool Print::invalidate_state_by_config_options(const ConfigOptionResolver & /* n || opt_key == "slow_down_layers" || opt_key == "wipe_tower_cone_angle" || opt_key == "wipe_tower_extra_spacing" + || opt_key == "wipe_tower_max_purge_speed" || opt_key == "wipe_tower_extruder" || opt_key == "wiping_volumes_extruders" || opt_key == "enable_filament_ramming" diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 8f5e000ed0..07b461e60c 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -4757,6 +4757,18 @@ def = this->add("filament_loading_speed", coFloats); def->min = 100.; def->max = 300.; def->set_default_value(new ConfigOptionPercent(100.)); + + def = this->add("wipe_tower_max_purge_speed", coFloat); + def->label = L("Maximum print speed when purging"); + def->tooltip = L("The maximum print speed when purging in the wipe tower. If the sparse infill speed " + "or calculated speed from the filament max volumetric speed is lower, the lowest speed will be used instead.\n" + "Increasing this speed may affect the tower's stability, as purging can be performed over " + "sparse layers. Before increasing this parameter beyond the default of 90mm/sec, make sure your printer can reliably " + "bridge at the increased speeds."); + def->sidetext = L("mm/s"); + def->mode = comAdvanced; + def->min = 10; + def->set_default_value(new ConfigOptionFloat(90.)); def = this->add("wipe_tower_extruder", coInt); def->label = L("Wipe tower extruder"); diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index 7630cbe598..74d630004d 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -1240,6 +1240,7 @@ PRINT_CONFIG_CLASS_DERIVED_DEFINE( // Orca: mmu support ((ConfigOptionFloat, wipe_tower_cone_angle)) ((ConfigOptionPercent, wipe_tower_extra_spacing)) + ((ConfigOptionFloat, wipe_tower_max_purge_speed)) ((ConfigOptionInt, wipe_tower_extruder)) ((ConfigOptionFloats, wiping_volumes_extruders)) diff --git a/src/slic3r/GUI/ConfigManipulation.cpp b/src/slic3r/GUI/ConfigManipulation.cpp index d871e7cbcf..db02032451 100644 --- a/src/slic3r/GUI/ConfigManipulation.cpp +++ b/src/slic3r/GUI/ConfigManipulation.cpp @@ -678,7 +678,7 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, co bool purge_in_primetower = preset_bundle->printers.get_edited_preset().config.opt_bool("purge_in_prime_tower"); - for (auto el : {"wipe_tower_rotation_angle", "wipe_tower_cone_angle", "wipe_tower_extra_spacing", "wipe_tower_bridging", "wipe_tower_no_sparse_layers"}) + for (auto el : {"wipe_tower_rotation_angle", "wipe_tower_cone_angle", "wipe_tower_extra_spacing", "wipe_tower_max_purge_speed", "wipe_tower_bridging", "wipe_tower_no_sparse_layers"}) toggle_line(el, have_prime_tower && purge_in_primetower); toggle_line("prime_volume",have_prime_tower && !purge_in_primetower); diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index cdeae514fc..f812ae2b06 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -2706,7 +2706,7 @@ Plater::priv::priv(Plater *q, MainFrame *main_frame) "brim_width", "wall_loops", "wall_filament", "sparse_infill_density", "sparse_infill_filament", "top_shell_layers", "enable_support", "support_filament", "support_interface_filament", "support_top_z_distance", "support_bottom_z_distance", "raft_layers", - "wipe_tower_rotation_angle", "wipe_tower_cone_angle", "wipe_tower_extra_spacing", "wipe_tower_extruder", + "wipe_tower_rotation_angle", "wipe_tower_cone_angle", "wipe_tower_extra_spacing","wipe_tower_max_purge_speed", "wipe_tower_extruder", "best_object_pos" })) , sidebar(new Sidebar(q)) diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index c0f2c02d3c..01f7c8adac 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -2283,6 +2283,7 @@ void TabPrint::build() optgroup->append_single_option_line("wipe_tower_bridging"); optgroup->append_single_option_line("wipe_tower_cone_angle"); optgroup->append_single_option_line("wipe_tower_extra_spacing"); + optgroup->append_single_option_line("wipe_tower_max_purge_speed"); optgroup->append_single_option_line("wipe_tower_no_sparse_layers"); // optgroup->append_single_option_line("single_extruder_multi_material_priming"); From 193062570ed87bdc787bf3b27d26d2cebd51f5f9 Mon Sep 17 00:00:00 2001 From: Stevetm2 <124851405+Stevetm2@users.noreply.github.com> Date: Thu, 9 May 2024 08:23:39 -0700 Subject: [PATCH 6/9] Creality Sermoon V1 - added generic filaments and machine settings (#5301) * Add Sermoon V1 to Creality Generic PLA.json * Add Sermoon V1 to Creality Generic ABS.json * Add Sermoon V1 to Creality Generic PETG.json * Add Sermoon V1 to Creality Generic TPU.json * Add Generic TPU to Creality Sermoon V1.json * Update Creality Sermoon V1 0.4 nozzle.json Update nozzle_type and small 64x64 thumbnail size in Creality Sermoon V1 0.4 nozzle.json * Set initial extruder_clearance values Creality Sermoon V1 0.4 nozzle.json --- .../profiles/Creality/filament/Creality Generic ABS.json | 1 + .../profiles/Creality/filament/Creality Generic PETG.json | 1 + .../profiles/Creality/filament/Creality Generic PLA.json | 1 + .../profiles/Creality/filament/Creality Generic TPU.json | 1 + .../Creality/machine/Creality Sermoon V1 0.4 nozzle.json | 7 +++++-- .../profiles/Creality/machine/Creality Sermoon V1.json | 2 +- 6 files changed, 10 insertions(+), 3 deletions(-) diff --git a/resources/profiles/Creality/filament/Creality Generic ABS.json b/resources/profiles/Creality/filament/Creality Generic ABS.json index d78b37cc4b..288cb5dbad 100644 --- a/resources/profiles/Creality/filament/Creality Generic ABS.json +++ b/resources/profiles/Creality/filament/Creality Generic ABS.json @@ -19,6 +19,7 @@ "Creality CR-6 Max 0.4 nozzle", "Creality CR-6 Max 0.6 nozzle", "Creality CR-6 Max 0.8 nozzle", + "Creality Sermoon V1 0.4 nozzle", "Creality Ender-3 0.2 nozzle", "Creality Ender-3 0.4 nozzle", "Creality Ender-3 0.6 nozzle", diff --git a/resources/profiles/Creality/filament/Creality Generic PETG.json b/resources/profiles/Creality/filament/Creality Generic PETG.json index a1850db60a..fc48c8a104 100644 --- a/resources/profiles/Creality/filament/Creality Generic PETG.json +++ b/resources/profiles/Creality/filament/Creality Generic PETG.json @@ -29,6 +29,7 @@ "Creality CR-6 Max 0.4 nozzle", "Creality CR-6 Max 0.6 nozzle", "Creality CR-6 Max 0.8 nozzle", + "Creality Sermoon V1 0.4 nozzle", "Creality Ender-3 0.2 nozzle", "Creality Ender-3 0.4 nozzle", "Creality Ender-3 0.6 nozzle", diff --git a/resources/profiles/Creality/filament/Creality Generic PLA.json b/resources/profiles/Creality/filament/Creality Generic PLA.json index 8f0fe91ad4..e0383bfc98 100644 --- a/resources/profiles/Creality/filament/Creality Generic PLA.json +++ b/resources/profiles/Creality/filament/Creality Generic PLA.json @@ -20,6 +20,7 @@ "Creality CR-6 Max 0.4 nozzle", "Creality CR-6 Max 0.6 nozzle", "Creality CR-6 Max 0.8 nozzle", + "Creality Sermoon V1 0.4 nozzle", "Creality Ender-3 0.2 nozzle", "Creality Ender-3 0.4 nozzle", "Creality Ender-3 0.6 nozzle", diff --git a/resources/profiles/Creality/filament/Creality Generic TPU.json b/resources/profiles/Creality/filament/Creality Generic TPU.json index 1e828955bd..ac48f2d032 100644 --- a/resources/profiles/Creality/filament/Creality Generic TPU.json +++ b/resources/profiles/Creality/filament/Creality Generic TPU.json @@ -16,6 +16,7 @@ "Creality K1 Max (0.4 nozzle)", "Creality K1 Max (0.6 nozzle)", "Creality K1 Max (0.8 nozzle)", + "Creality Sermoon V1 0.4 nozzle", "Creality CR-10 SE 0.2 nozzle", "Creality CR-10 SE 0.4 nozzle", "Creality CR-10 SE 0.6 nozzle", diff --git a/resources/profiles/Creality/machine/Creality Sermoon V1 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality Sermoon V1 0.4 nozzle.json index bff01e5087..c819c9847f 100644 --- a/resources/profiles/Creality/machine/Creality Sermoon V1 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Sermoon V1 0.4 nozzle.json @@ -60,11 +60,14 @@ "print_host_webui": "10.0.0.51", "gcode_flavor": "marlin", "thumbnails": [ - "32x32", + "64x64", "400x400" ], + "extruder_clearance_height_to_lid": "125", + "extruder_clearance_height_to_rod": "40", + "extruder_clearance_radius": "50", "printable_height": "165", "change_filament_gcode": "; S1 Pause For Filament change\nM125", - "nozzle_type": "undefine", + "nozzle_type": "brass", "auxiliary_fan": "1" } diff --git a/resources/profiles/Creality/machine/Creality Sermoon V1.json b/resources/profiles/Creality/machine/Creality Sermoon V1.json index 93bcb4bd85..b09dff72c2 100644 --- a/resources/profiles/Creality/machine/Creality Sermoon V1.json +++ b/resources/profiles/Creality/machine/Creality Sermoon V1.json @@ -11,5 +11,5 @@ "Spiral Lift" ], "hotend_model": "", - "default_materials": "Creality Generic PLA;Creality Generic PETG;Creality Generic ABS" + "default_materials": "Creality Generic PLA;Creality Generic PETG;Creality Generic ABS;Creality Generic TPU" } From 4c1b66c0b767af4b05497914194c49d695707aeb Mon Sep 17 00:00:00 2001 From: yw4z Date: Thu, 9 May 2024 18:26:01 +0300 Subject: [PATCH 7/9] Hide revert and delete preset buttons while search box focused (#5253) --- src/slic3r/GUI/Tab.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 01f7c8adac..4adc314d3b 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -319,6 +319,8 @@ void Tab::create_preset_tab() if (m_presets_choice) m_presets_choice->Show(); m_btn_save_preset->Show(); + m_btn_delete_preset->Show(); // ORCA: fixes delete preset button visible while search box focused + m_undo_btn->Show(); // ORCA: fixes revert preset button visible while search box focused m_btn_search->Show(); m_search_item->Hide(); @@ -347,6 +349,8 @@ void Tab::create_preset_tab() m_presets_choice->Hide(); m_btn_save_preset->Hide(); + m_btn_delete_preset->Hide(); // ORCA: fixes delete preset button visible while search box focused + m_undo_btn->Hide(); // ORCA: fixes revert preset button visible while search box focused m_btn_search->Hide(); m_search_item->Show(); From 46b7a2953d02a7414557f9649eb871b61a842ce1 Mon Sep 17 00:00:00 2001 From: Ioannis Giannakas <59056762+igiannakas@users.noreply.github.com> Date: Thu, 9 May 2024 16:36:30 +0100 Subject: [PATCH 8/9] Adjustable infill wall overlap for top and bottom surfaces (#4832) * Adjustable infill wall overlap for top and bottom surfaces * Compile error and tool tip updates --- src/libslic3r/Layer.cpp | 1 + src/libslic3r/PerimeterGenerator.cpp | 23 ++++++++++++++++++----- src/libslic3r/Preset.cpp | 2 +- src/libslic3r/PrintConfig.cpp | 11 ++++++++++- src/libslic3r/PrintConfig.hpp | 1 + src/libslic3r/PrintObject.cpp | 1 + src/slic3r/GUI/GUI_Factories.cpp | 2 +- src/slic3r/GUI/Tab.cpp | 3 ++- 8 files changed, 35 insertions(+), 9 deletions(-) diff --git a/src/libslic3r/Layer.cpp b/src/libslic3r/Layer.cpp index e92eb0a2ba..ddb608901f 100644 --- a/src/libslic3r/Layer.cpp +++ b/src/libslic3r/Layer.cpp @@ -181,6 +181,7 @@ void Layer::make_perimeters() && config.opt_serialize("outer_wall_line_width") == other_config.opt_serialize("outer_wall_line_width") && config.detect_thin_wall == other_config.detect_thin_wall && config.infill_wall_overlap == other_config.infill_wall_overlap + && config.top_bottom_infill_wall_overlap == other_config.top_bottom_infill_wall_overlap && config.fuzzy_skin == other_config.fuzzy_skin && config.fuzzy_skin_thickness == other_config.fuzzy_skin_thickness && config.fuzzy_skin_point_distance == other_config.fuzzy_skin_point_distance diff --git a/src/libslic3r/PerimeterGenerator.cpp b/src/libslic3r/PerimeterGenerator.cpp index 86f9f5ceac..8cdf36238d 100644 --- a/src/libslic3r/PerimeterGenerator.cpp +++ b/src/libslic3r/PerimeterGenerator.cpp @@ -2138,10 +2138,17 @@ void PerimeterGenerator::process_classic() ext_perimeter_spacing / 2 : // two or more loops? perimeter_spacing / 2; + // only apply infill overlap if we actually have one perimeter coord_t infill_peri_overlap = 0; + coord_t top_infill_peri_overlap = 0; if (inset > 0) { - infill_peri_overlap = coord_t(scale_(this->config->infill_wall_overlap.get_abs_value(unscale(inset + solid_infill_spacing / 2)))); + if(this->layer_id == 0 || this->upper_slices == nullptr){ + infill_peri_overlap = coord_t(scale_(this->config->top_bottom_infill_wall_overlap.get_abs_value(unscale(inset + solid_infill_spacing / 2)))); + }else{ + infill_peri_overlap = coord_t(scale_(this->config->infill_wall_overlap.get_abs_value(unscale(inset + solid_infill_spacing / 2)))); + top_infill_peri_overlap = coord_t(scale_(this->config->top_bottom_infill_wall_overlap.get_abs_value(unscale(inset + solid_infill_spacing / 2)))); + } inset -= infill_peri_overlap; } // simplify infill contours according to resolution @@ -2160,7 +2167,7 @@ void PerimeterGenerator::process_classic() //if any top_fills, grow them by ext_perimeter_spacing/2 to have the real un-anchored fill ExPolygons top_infill_exp = intersection_ex(fill_clip, offset_ex(top_fills, double(ext_perimeter_spacing / 2))); if (!top_fills.empty()) { - infill_exp = union_ex(infill_exp, offset_ex(top_infill_exp, double(infill_peri_overlap))); + infill_exp = union_ex(infill_exp, offset_ex(top_infill_exp, double(top_infill_peri_overlap))); } this->fill_surfaces->append(infill_exp, stInternal); @@ -2866,8 +2873,14 @@ ExPolygons infill_contour = union_ex(wallToolPaths.getInnerContour()); ext_perimeter_spacing : // two or more loops? perimeter_spacing; - - inset = coord_t(scale_(this->config->infill_wall_overlap.get_abs_value(unscale(inset)))); + coord_t top_inset = inset; + + top_inset = coord_t(scale_(this->config->top_bottom_infill_wall_overlap.get_abs_value(unscale(inset)))); + if(is_topmost_layer || is_bottom_layer) + inset = coord_t(scale_(this->config->top_bottom_infill_wall_overlap.get_abs_value(unscale(inset)))); + else + inset = coord_t(scale_(this->config->infill_wall_overlap.get_abs_value(unscale(inset)))); + // simplify infill contours according to resolution Polygons pp; for (ExPolygon& ex : infill_contour) @@ -2882,7 +2895,7 @@ ExPolygons infill_contour = union_ex(wallToolPaths.getInnerContour()); float(inset + min_perimeter_infill_spacing / 2.)); // append infill areas to fill_surfaces if (!top_fills.empty()) { - infill_exp = union_ex(infill_exp, offset_ex(top_fills, double(inset))); + infill_exp = union_ex(infill_exp, offset_ex(top_fills, double(top_inset))); } this->fill_surfaces->append(infill_exp, stInternal); diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index f6426739de..826358f0b1 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -793,7 +793,7 @@ static std::vector s_Preset_print_options { "sparse_infill_filament", "solid_infill_filament", "support_filament", "support_interface_filament","support_interface_not_for_body", "ooze_prevention", "standby_temperature_delta", "interface_shells", "line_width", "initial_layer_line_width", "inner_wall_line_width", "outer_wall_line_width", "sparse_infill_line_width", "internal_solid_infill_line_width", - "top_surface_line_width", "support_line_width", "infill_wall_overlap", "bridge_flow", "internal_bridge_flow", + "top_surface_line_width", "support_line_width", "infill_wall_overlap","top_bottom_infill_wall_overlap", "bridge_flow", "internal_bridge_flow", "elefant_foot_compensation", "elefant_foot_compensation_layers", "xy_contour_compensation", "xy_hole_compensation", "resolution", "enable_prime_tower", "prime_tower_width", "prime_tower_brim_width", "prime_volume", "wipe_tower_no_sparse_layers", "compatible_printers", "compatible_printers_condition", "inherits", diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 07b461e60c..b74fadbf98 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -2680,11 +2680,20 @@ def = this->add("filament_loading_speed", coFloats); def = this->add("infill_wall_overlap", coPercent); def->label = L("Infill/Wall overlap"); def->category = L("Strength"); - def->tooltip = L("Infill area is enlarged slightly to overlap with wall for better bonding. The percentage value is relative to line width of sparse infill"); + def->tooltip = L("Infill area is enlarged slightly to overlap with wall for better bonding. The percentage value is relative to line width of sparse infill. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces."); def->sidetext = L("%"); def->ratio_over = "inner_wall_line_width"; def->mode = comAdvanced; def->set_default_value(new ConfigOptionPercent(15)); + + def = this->add("top_bottom_infill_wall_overlap", coPercent); + def->label = L("Top/Bottom solid infill/wall overlap"); + def->category = L("Strength"); + def->tooltip = L("Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimising the appearance of pinholes. The percentage value is relative to line width of sparse infill"); + def->sidetext = L("%"); + def->ratio_over = "inner_wall_line_width"; + def->mode = comAdvanced; + def->set_default_value(new ConfigOptionPercent(25)); def = this->add("sparse_infill_speed", coFloat); def->label = L("Sparse infill"); diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index 74d630004d..9d6c88a2b8 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -894,6 +894,7 @@ PRINT_CONFIG_CLASS_DEFINE( ((ConfigOptionInt, sparse_infill_filament)) ((ConfigOptionFloatOrPercent, sparse_infill_line_width)) ((ConfigOptionPercent, infill_wall_overlap)) + ((ConfigOptionPercent, top_bottom_infill_wall_overlap)) ((ConfigOptionFloat, sparse_infill_speed)) //BBS ((ConfigOptionBool, infill_combination)) diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp index 1cce64d9f8..78f3e69fa5 100644 --- a/src/libslic3r/PrintObject.cpp +++ b/src/libslic3r/PrintObject.cpp @@ -926,6 +926,7 @@ bool PrintObject::invalidate_state_by_config_options( || opt_key == "initial_layer_line_width" || opt_key == "inner_wall_line_width" || opt_key == "infill_wall_overlap" + || opt_key == "top_bottom_infill_wall_overlap" || opt_key == "seam_gap" || opt_key == "role_based_wipe_speed" || opt_key == "wipe_on_loops" diff --git a/src/slic3r/GUI/GUI_Factories.cpp b/src/slic3r/GUI/GUI_Factories.cpp index d228e16b04..30bbbd8594 100644 --- a/src/slic3r/GUI/GUI_Factories.cpp +++ b/src/slic3r/GUI/GUI_Factories.cpp @@ -110,7 +110,7 @@ std::map> SettingsFactory::PART_CAT { L("Strength"), {{"wall_loops", "",1},{"top_shell_layers", L("Top Solid Layers"),1},{"top_shell_thickness", L("Top Minimum Shell Thickness"),1}, {"bottom_shell_layers", L("Bottom Solid Layers"),1}, {"bottom_shell_thickness", L("Bottom Minimum Shell Thickness"),1}, {"sparse_infill_density", "",1},{"sparse_infill_pattern", "",1},{"infill_anchor", "",1},{"infill_anchor_max", "",1},{"top_surface_pattern", "",1},{"bottom_surface_pattern", "",1}, {"internal_solid_infill_pattern", "",1}, - {"infill_combination", "",1}, {"infill_wall_overlap", "",1}, {"solid_infill_direction", "",1}, {"rotate_solid_infill_direction", "",1}, {"infill_direction", "",1}, {"bridge_angle", "",1}, {"minimum_sparse_infill_area", "",1} + {"infill_combination", "",1}, {"infill_wall_overlap", "",1},{"top_bottom_infill_wall_overlap", "",1}, {"solid_infill_direction", "",1}, {"rotate_solid_infill_direction", "",1}, {"infill_direction", "",1}, {"bridge_angle", "",1}, {"minimum_sparse_infill_area", "",1} }}, { L("Speed"), {{"outer_wall_speed", "",1},{"inner_wall_speed", "",2},{"sparse_infill_speed", "",3},{"top_surface_speed", "",4}, {"internal_solid_infill_speed", "",5}, {"enable_overhang_speed", "",6}, {"overhang_speed_classic", "",6}, {"overhang_1_4_speed", "",7}, {"overhang_2_4_speed", "",8}, {"overhang_3_4_speed", "",9}, {"overhang_4_4_speed", "",10}, diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 4adc314d3b..2bd2f1ea55 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -2120,6 +2120,7 @@ void TabPrint::build() optgroup->append_single_option_line("bottom_surface_pattern", "fill-patterns#Infill of the top surface and bottom surface"); optgroup->append_single_option_line("bottom_shell_layers"); optgroup->append_single_option_line("bottom_shell_thickness"); + optgroup->append_single_option_line("top_bottom_infill_wall_overlap"); optgroup = page->new_optgroup(L("Infill"), L"param_infill"); optgroup->append_single_option_line("sparse_infill_density"); @@ -2129,9 +2130,9 @@ void TabPrint::build() optgroup->append_single_option_line("internal_solid_infill_pattern"); optgroup->append_single_option_line("gap_fill_target"); optgroup->append_single_option_line("filter_out_gap_fill"); + optgroup->append_single_option_line("infill_wall_overlap"); optgroup = page->new_optgroup(L("Advanced"), L"param_advanced"); - optgroup->append_single_option_line("infill_wall_overlap"); optgroup->append_single_option_line("infill_direction"); optgroup->append_single_option_line("solid_infill_direction"); optgroup->append_single_option_line("rotate_solid_infill_direction"); From 5bceebdd9d68a147435b83043effe293d63974e7 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Fri, 10 May 2024 21:50:29 +0800 Subject: [PATCH 9/9] disable eigen for OpenCV (#5311) --- deps/OpenCV/OpenCV.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deps/OpenCV/OpenCV.cmake b/deps/OpenCV/OpenCV.cmake index f19569e86e..5a4090919b 100644 --- a/deps/OpenCV/OpenCV.cmake +++ b/deps/OpenCV/OpenCV.cmake @@ -26,7 +26,7 @@ orcaslicer_add_cmake_project(OpenCV -DBUILD_ZLIB=OFF -DWITH_1394=OFF -DWITH_CUDA=OFF - -DWITH_EIGEN=ON + -DWITH_EIGEN=OFF ${_use_IPP} -DWITH_ITT=OFF -DWITH_FFMPEG=OFF