From ff68a2859d6eff9ea40f74498017dcf1e6776ccd Mon Sep 17 00:00:00 2001 From: Ian Bassi Date: Tue, 19 May 2026 09:42:44 -0300 Subject: [PATCH] Ignore Jerk values Warning if using JD (#13575) * Ignore Jerk values if using JD * add flavor check --- src/libslic3r/Print.cpp | 63 +++++++++++++++++++++-------------------- 1 file changed, 32 insertions(+), 31 deletions(-) diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index 1853e249b8..f2e59c3b67 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -1754,46 +1754,47 @@ StringObjectException Print::validate(StringObjectException *warning, Polygons* }; std::string warning_key; + const auto max_junction_deviation = m_config.machine_max_junction_deviation.values[0]; + const bool ignore_jerk_validation = m_config.gcode_flavor == gcfMarlinFirmware && max_junction_deviation > 0; + // check jerk - if (m_default_object_config.default_jerk == 1 || m_default_object_config.outer_wall_jerk == 1 || - m_default_object_config.inner_wall_jerk == 1) { - warning->string = L("Setting the jerk speed too low could lead to artifacts on curved surfaces"); - if (m_default_object_config.outer_wall_jerk == 1) - warning_key = "outer_wall_jerk"; - else if (m_default_object_config.inner_wall_jerk == 1) - warning_key = "inner_wall_jerk"; - else - warning_key = "default_jerk"; + if (!ignore_jerk_validation) { + if (m_default_object_config.default_jerk == 1 || m_default_object_config.outer_wall_jerk == 1 || + m_default_object_config.inner_wall_jerk == 1) { + warning->string = L("Setting the jerk speed too low could lead to artifacts on curved surfaces"); + if (m_default_object_config.outer_wall_jerk == 1) + warning_key = "outer_wall_jerk"; + else if (m_default_object_config.inner_wall_jerk == 1) + warning_key = "inner_wall_jerk"; + else + warning_key = "default_jerk"; - warning->opt_key = warning_key; - } + warning->opt_key = warning_key; + } - if (warning_key.empty() && m_default_object_config.default_jerk > 0) { - std::vector jerk_to_check = {"default_jerk", "outer_wall_jerk", "inner_wall_jerk", "infill_jerk", - "top_surface_jerk", "initial_layer_jerk", "travel_jerk"}; - const auto max_jerk = std::min(m_config.machine_max_jerk_x.values[0], m_config.machine_max_jerk_y.values[0]); - warning_key.clear(); - if (m_default_object_config.default_jerk > 0) - warning_key = check_motion_ability_object_setting(jerk_to_check, max_jerk); - if (!warning_key.empty()) { - warning->string = L( - "The jerk setting exceeds the printer's maximum jerk (machine_max_jerk_x/machine_max_jerk_y).\nOrca will " - "automatically cap the jerk speed to ensure it doesn't surpass the printer's capabilities.\nYou can adjust the " - "maximum jerk setting in your printer's configuration to get higher speeds."); - warning->opt_key = warning_key; - } + if (warning_key.empty() && m_default_object_config.default_jerk > 0) { + std::vector jerk_to_check = {"default_jerk", "outer_wall_jerk", "inner_wall_jerk", "infill_jerk", + "top_surface_jerk", "initial_layer_jerk", "travel_jerk"}; + const auto max_jerk = std::min(m_config.machine_max_jerk_x.values[0], m_config.machine_max_jerk_y.values[0]); + warning_key.clear(); + warning_key = check_motion_ability_object_setting(jerk_to_check, max_jerk); + if (!warning_key.empty()) { + warning->string = L( + "The jerk setting exceeds the printer's maximum jerk (machine_max_jerk_x/machine_max_jerk_y).\n" + "Orca will automatically cap the jerk speed to ensure it doesn't surpass the printer's capabilities.\n" + "You can adjust the maximum jerk setting in your printer's configuration to get higher speeds."); + warning->opt_key = warning_key; + } + } } // Check junction deviation - const auto max_junction_deviation = m_config.machine_max_junction_deviation.values[0]; // Orca: Only marlin FW supports max junction deviation. Dont display warning if firmware is not supporting it. const bool support_max_junction_deviation = ( m_config.gcode_flavor == gcfMarlinFirmware); if (warning_key.empty() && m_default_object_config.default_junction_deviation.value > max_junction_deviation && support_max_junction_deviation) { - warning->string = L( "Junction deviation setting exceeds the printer's maximum value " - "(machine_max_junction_deviation).\nOrca will " - "automatically cap the junction deviation to ensure it doesn't surpass the printer's " - "capabilities.\nYou can adjust the " - "machine_max_junction_deviation value in your printer's configuration to get higher limits."); + warning->string = L( "Junction deviation setting exceeds the printer's maximum value (machine_max_junction_deviation).\n" + "Orca will automatically cap the junction deviation to ensure it doesn't surpass the printer's capabilities.\n" + "You can adjust the machine_max_junction_deviation value in your printer's configuration to get higher limits."); warning->opt_key = warning_key; }