From 232fc30db1bcde98120d11f72d02236f051825c1 Mon Sep 17 00:00:00 2001 From: Ian Chua Date: Mon, 18 May 2026 15:18:31 +0800 Subject: [PATCH 01/26] log: add logs surrounding logout to potentially catch any unwanted logouts or errors --- src/slic3r/GUI/GUI_App.cpp | 21 +++++++++++++++------ src/slic3r/GUI/WebGuideDialog.cpp | 5 ++++- src/slic3r/Utils/OrcaCloudServiceAgent.cpp | 1 + 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 3169e53eee..889cccde0f 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -1900,6 +1900,7 @@ void GUI_App::init_networking_callbacks() } if (return_code == 5) { GUI::wxGetApp().CallAfter([this, provider = event.provider] { + BOOST_LOG_TRIVIAL(info) << "logout: login expired"; this->request_user_logout(provider); MessageDialog msg_dlg(nullptr, _L("Login information expired. Please login again."), "", wxAPPLY | wxOK); if (msg_dlg.ShowModal() == wxOK) { @@ -4526,7 +4527,8 @@ std::string GUI_App::handle_web_request(std::string cmd) } else if (command_str.compare("homepage_logout") == 0) { CallAfter([this] { - wxGetApp().request_user_logout(); + BOOST_LOG_TRIVIAL(info) << "logout: homepage_logout"; + request_user_logout(); }); } else if (command_str.compare("get_orca_login_info") == 0) { @@ -4539,18 +4541,22 @@ std::string GUI_App::handle_web_request(std::string cmd) CallAfter([this] { request_login(true, BBL_CLOUD_PROVIDER); }); } else if (command_str.compare("homepage_bambu_logout") == 0) { - CallAfter([this] { request_user_logout(BBL_CLOUD_PROVIDER); }); + CallAfter([this] { + BOOST_LOG_TRIVIAL(info) << "logout: homepage_bambu_logout"; + request_user_logout(BBL_CLOUD_PROVIDER); + }); } else if (command_str.compare("homepage_orca_login_or_register") == 0) { CallAfter([this] { request_login(true, ORCA_CLOUD_PROVIDER); }); } else if (command_str.compare("homepage_orca_logout") == 0) { - CallAfter([this] { request_user_logout(ORCA_CLOUD_PROVIDER); }); + CallAfter([this] { + BOOST_LOG_TRIVIAL(info) << "logout: homepage_orca_logout"; + request_user_logout(ORCA_CLOUD_PROVIDER); + }); } else if (command_str.compare("homepage_modeldepot") == 0) { - CallAfter([this] { - wxGetApp().open_mall_page_dialog(); - }); + CallAfter([this] { open_mall_page_dialog(); }); } else if (command_str.compare("homepage_newproject") == 0) { this->request_open_project(""); @@ -4826,6 +4832,7 @@ void GUI_App::on_http_error(wxCommandEvent &evt) if (status == 401) { if (m_agent) { if (m_agent->is_user_login(provider)) { + BOOST_LOG_TRIVIAL(warning) << "logout: http error 401."; this->request_user_logout(provider); if (!m_show_http_errpr_msgdlg) { @@ -5599,6 +5606,7 @@ void GUI_App::show_check_privacy_dlg(wxCommandEvent& evt) privacy_dlg.Bind(EVT_PRIVACY_UPDATE_CANCEL, [this, provider](wxCommandEvent &e) { app_config->set_bool("privacy_update_checked", false); if (m_agent) { + BOOST_LOG_TRIVIAL(info) << "logout: Privacy update dialog cancelled."; m_agent->user_logout(false, provider); post_logout_to_webview(provider); } @@ -6766,6 +6774,7 @@ void GUI_App::stop_sync_user_preset() void GUI_App::on_stealth_mode_enter() { stop_sync_user_preset(); + BOOST_LOG_TRIVIAL(info) << "logout: on_stealth_mode_enter"; request_user_logout(ORCA_CLOUD_PROVIDER); request_user_logout(BBL_CLOUD_PROVIDER); if (mainframe && mainframe->m_webview) { diff --git a/src/slic3r/GUI/WebGuideDialog.cpp b/src/slic3r/GUI/WebGuideDialog.cpp index 575748fce0..f68c00ff40 100644 --- a/src/slic3r/GUI/WebGuideDialog.cpp +++ b/src/slic3r/GUI/WebGuideDialog.cpp @@ -4,6 +4,7 @@ #include #include #include +#include #include #include "I18N.hpp" #include "libslic3r/AppConfig.hpp" @@ -516,7 +517,9 @@ void GuideFrame::OnScriptMessage(wxWebViewEvent &evt) if (agent) { agent->set_country_code(country_code); if (wxGetApp().is_user_login()) { - agent->user_logout(); + BOOST_LOG_TRIVIAL(info) << "logout: user_logout on user_guide_finish"; + // agent->user_logout(); + wxGetApp().request_user_logout(); } } } diff --git a/src/slic3r/Utils/OrcaCloudServiceAgent.cpp b/src/slic3r/Utils/OrcaCloudServiceAgent.cpp index 4298f9616c..2b32b428ea 100644 --- a/src/slic3r/Utils/OrcaCloudServiceAgent.cpp +++ b/src/slic3r/Utils/OrcaCloudServiceAgent.cpp @@ -1465,6 +1465,7 @@ bool OrcaCloudServiceAgent::load_refresh_token(std::string& out_token) if (payload.rfind("v2:", 0) == 0) { auto delim = payload.find(':', 3); if (delim == std::string::npos) { + BOOST_LOG_TRIVIAL(warning) << "payload missing delim ':'."; integrity_ok = false; } else { std::string stored_hmac = payload.substr(3, delim - 3); From 6a06b63d6fcabd90445ca5e6cfb668aa7af9a34f Mon Sep 17 00:00:00 2001 From: Ian Chua Date: Mon, 18 May 2026 16:12:03 +0800 Subject: [PATCH 02/26] add logs to http_get/post/put/delete --- src/slic3r/Utils/OrcaCloudServiceAgent.cpp | 27 +++++++++++++--------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/src/slic3r/Utils/OrcaCloudServiceAgent.cpp b/src/slic3r/Utils/OrcaCloudServiceAgent.cpp index 2b32b428ea..0e1027cd46 100644 --- a/src/slic3r/Utils/OrcaCloudServiceAgent.cpp +++ b/src/slic3r/Utils/OrcaCloudServiceAgent.cpp @@ -1784,7 +1784,8 @@ int OrcaCloudServiceAgent::http_get(const std::string& path, std::string* respon std::string url = api_base_url + path; BOOST_LOG_TRIVIAL(trace) << "OrcaCloudServiceAgent: GET " << url; - ensure_token_fresh("http_get_" + path); + if (!ensure_token_fresh("http_get_" + path)) + BOOST_LOG_TRIVIAL(warning) << "ensure_token_fresh returned false"; struct HttpResult { bool success{false}; @@ -1816,8 +1817,9 @@ int OrcaCloudServiceAgent::http_get(const std::string& path, std::string* respon }) .on_error([&](std::string body, std::string error, unsigned resp_status) { result.success = false; - result.status = resp_status; - result.body = body; + result.status = resp_status == 0 ? 404 : resp_status; + result.body = body; + BOOST_LOG_TRIVIAL(error) << "OrcaCloudServiceAgent: HTTP error - " << error; }) .timeout_max(30) .perform_sync(); @@ -1885,8 +1887,9 @@ int OrcaCloudServiceAgent::http_post(const std::string& path, const std::string& }) .on_error([&](std::string resp_body, std::string error, unsigned resp_status) { result.success = false; - result.status = resp_status; - result.body = resp_body; + result.status = resp_status == 0 ? 404 : resp_status; + result.body = body; + BOOST_LOG_TRIVIAL(error) << "OrcaCloudServiceAgent: HTTP error - " << error; }) .timeout_max(30) .perform_sync(); @@ -1954,8 +1957,9 @@ int OrcaCloudServiceAgent::http_put(const std::string& path, const std::string& }) .on_error([&](std::string resp_body, std::string error, unsigned resp_status) { result.success = false; - result.status = resp_status; - result.body = resp_body; + result.status = resp_status == 0 ? 404 : resp_status; + result.body = body; + BOOST_LOG_TRIVIAL(error) << "OrcaCloudServiceAgent: HTTP error - " << error; }) .timeout_max(30) .perform_sync(); @@ -2020,8 +2024,9 @@ int OrcaCloudServiceAgent::http_delete(const std::string& path, std::string* res }) .on_error([&](std::string resp_body, std::string error, unsigned resp_status) { result.success = false; - result.status = resp_status; - result.body = resp_body; + result.status = resp_status == 0 ? 404 : resp_status; + result.body = resp_body; + BOOST_LOG_TRIVIAL(error) << "OrcaCloudServiceAgent: HTTP error - " << error; }) .timeout_max(30) .perform_sync(); @@ -2102,7 +2107,7 @@ bool OrcaCloudServiceAgent::http_post_token(const std::string& body, std::string }) .on_error([&](std::string body, std::string error, unsigned resp_status) { success = false; - status = resp_status; + status = resp_status == 0 ? 404 : resp_status; resp_body = body; BOOST_LOG_TRIVIAL(error) << "OrcaCloudServiceAgent: HTTP error - " << error; }) @@ -2172,7 +2177,7 @@ bool OrcaCloudServiceAgent::http_post_auth(const std::string& path, const std::s }) .on_error([&](std::string body, std::string error, unsigned resp_status) { success = false; - status = resp_status; + status = resp_status == 0 ? 404 : resp_status; resp_body = body; BOOST_LOG_TRIVIAL(error) << "OrcaCloudServiceAgent: HTTP (auth) error - " << error; }) From e5ca01ba9e9c380189a5677fa213b5bc217e3af2 Mon Sep 17 00:00:00 2001 From: Ioannis Giannakas <59056762+igiannakas@users.noreply.github.com> Date: Mon, 18 May 2026 09:24:28 +0100 Subject: [PATCH 03/26] Fix per-volume "Only one wall" overrides being ignored on assembly parts (#13714) --- src/libslic3r/Layer.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/libslic3r/Layer.cpp b/src/libslic3r/Layer.cpp index 67959a508a..0a80c019ae 100644 --- a/src/libslic3r/Layer.cpp +++ b/src/libslic3r/Layer.cpp @@ -159,6 +159,12 @@ bool Layer::is_perimeter_compatible(const PrintRegion& a, const PrintRegion& b) && 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 + // Orca: these flags directly change the effective wall count produced by the perimeter + // generator. If two regions disagree on any of them, merging their slices into one shared make_perimeters + // call would silently use the first region's flag for both. + && config.only_one_wall_first_layer == other_config.only_one_wall_first_layer + && config.only_one_wall_top == other_config.only_one_wall_top + && config.min_width_top_surface == other_config.min_width_top_surface && config.seam_slope_type == other_config.seam_slope_type && config.seam_slope_conditional == other_config.seam_slope_conditional && config.scarf_angle_threshold == other_config.scarf_angle_threshold From ddeaa4ba82e529755cb9ef7024206d8308adb3f4 Mon Sep 17 00:00:00 2001 From: CSLRDoesntGameDev <126827743+CSLRDoesntGameDev@users.noreply.github.com> Date: Mon, 18 May 2026 02:57:24 -0600 Subject: [PATCH 04/26] Add patches to the Anycubic Kobra X machine json (#13677) add patched anycubic kobra x machine json Co-authored-by: SoftFever --- .../profiles/Anycubic/machine/Anycubic Kobra X 0.4 nozzle.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/profiles/Anycubic/machine/Anycubic Kobra X 0.4 nozzle.json b/resources/profiles/Anycubic/machine/Anycubic Kobra X 0.4 nozzle.json index a33b6ee6f8..72e5707665 100644 --- a/resources/profiles/Anycubic/machine/Anycubic Kobra X 0.4 nozzle.json +++ b/resources/profiles/Anycubic/machine/Anycubic Kobra X 0.4 nozzle.json @@ -41,7 +41,7 @@ "before_layer_change_gcode": "", "best_object_pos": "0.5,0.5", "change_extrusion_role_gcode": "", - "change_filament_gcode": "; FLUSH_START\n;@2026-04-03 17:46:45 3+n换料gcode,包括7=3+4,19=3+4×4\n;_GP_INLINE_ESTIMATED_PRINTING_TIME_PLACEHOLDER\n;;; SET_VELOCITY_LIMIT VELOCITY=350 ACCEL=10000\n;;; G1 E-2 F4800\n;;; G1 Z{toolchange_z+0.6} F1800\n;;; M106 S0\n;;; G1 X265 F21000\n;;; M400 P370\n;;; G1 X277.5 F600\n;;; G1 E-2 F300\n;;; M400 P361\n;;; G1 Z{toolchange_z+3} F1200\n;;; G1 X0 F21000\n;;; G1 X-17.5 F5250\n;;; M400 P1569\n\n{local minimal_extrude_ = 5.0}\n{if one_of(filament_type[current_extruder], \"TPU\", \"PVA\")}\n{local minimal_extrude_ = 8.0}\n{endif}\n;;; G1 E{minimal_extrude_} F300\n;;; G1 E-33 F600\n\n{ local curr_t = current_extruder; local next_t = next_extruder;}\n{ local tab_step_time_ = (0, 850, 1350, 850, 850, 0, 1350, 1350, 1350, 1350, 0, 850, 850, 1350, 850, 0)};\n{ if (0 <= curr_t && curr_t < 3) then local step_from_=curr_t else local step_from_=3 endif}; from {step_from_}\n{ if (0 <= next_t && next_t < 3) then local step_into_=next_t else local step_into_=3 endif}; from {step_into_}\n;;; M400 P{tab_step_time_[step_from_ * 4 + step_into_]}\n\n{ local magic_mask_with_box = flush_length_4}\n{ if magic_mask_with_box == -1392 && size(filament_type) > 0 && size(filament_type) == size(ace_t_box_vector) && size(filament_type) == size(ace_t_slot_vector) }\n { local is_curr_in_box = size(ace_t_box_vector) > curr_t ? ace_t_box_vector[curr_t] >= 0 ? true : false : false}; is_curr_in_box = {is_curr_in_box}\n { local is_next_in_box = size(ace_t_box_vector) > next_t ? ace_t_box_vector[next_t] >= 0 ? true : false : false}; is_next_in_box = {is_next_in_box}\n\n; curr_t box={ace_t_box_vector[curr_t]}, slot={ace_t_slot_vector[curr_t]}; next_t box={ace_t_box_vector[next_t]}, slot={ace_t_slot_vector[next_t]}\n { if ace_t_box_vector[curr_t] < 0 && ace_t_box_vector[next_t] < 0}\n;;; M400 P0 ; 料架→料架\n { elsif ace_t_box_vector[curr_t] < 0 && ace_t_box_vector[next_t] >= 0 }\n;;; M400 P40409 ; 料架→盒子\n { elsif ace_t_box_vector[curr_t] >= 0 && ace_t_box_vector[next_t] < 0 }\n;;; M400 P51591 ; 盒子→料架\n { elsif ace_t_box_vector[curr_t] >= 0 && ace_t_box_vector[next_t] == ace_t_box_vector[curr_t] }\n { if 0 < ace_t_slot_vector[curr_t] && ace_t_slot_vector[curr_t] <= 4 && 0 < ace_t_slot_vector[next_t] && ace_t_slot_vector[next_t] <= 4}\n;;; M400 P2700 ; 四进四→料盒\n { else }\n;;; M400 P91279 ; 盒子→盒子\n { endif }\n { elsif ace_t_box_vector[curr_t] >= 0 && ace_t_box_vector[next_t] != ace_t_box_vector[curr_t] }\n;;; M400 P93746 ; 盒子→不同盒子\n { else }\n; 未知\n { endif }\n{ endif }\n\n\nT[next_extruder]\n\n;;; G1 E8 F300\n;;; M400 P3643\n;;; G1 E13 F1200\n;;; M400 P1000\n\n{local flush_length_= flush_length}\n{local loops_=max(1,int((flush_length_-70+150) / 150))}\n{local extrude_length_=flush_length_ / loops_}\n{local EXTRUDE_SPEED_ = 5 * 60}\n{local UNWIND_SPEED_ = 20 *60}\n{local index_ = 0}\n\n{ if (loops_ > 0) }\n{ local loops_ = loops_ - 1}\n{ local index_ = index_ + 1}\n; {index_} + {loops_}\n;;; M106 S0\n;;; M400 P1000\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; M400 P{extrude_length_/0.03}\n;;; G1 E0.000001\n;;; M106 S255\n;;; M400 P2005\n;;; G1 E-2 F{UNWIND_SPEED_}\n;;; M400 P414\n{endif}\n{ if (loops_ > 0) }\n{ local loops_ = loops_ - 1}\n{ local index_ = index_ + 1}\n; {index_} + {loops_}\n;;; M106 S0\n;;; M400 P1000\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; M400 P{extrude_length_/0.03}\n;;; M106 S255\n;;; M400 P2005\n;;; G1 E-2 F{UNWIND_SPEED_}\n;;; M400 P414\n{endif}\n{ if (loops_ > 0) }\n{ local loops_ = loops_ - 1}\n{ local index_ = index_ + 1}\n; {index_} + {loops_}\n;;; M106 S0\n;;; M400 P1000\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; M400 P{extrude_length_/0.03}\n;;; M106 S255\n;;; M400 P2005\n;;; G1 E-2 F{UNWIND_SPEED_}\n;;; M400 P414\n{endif}\n\n; G1 X{x_after_toolchange} Y{y_after_toolchange} F12000\n; G1 Z{toolchange_z} F1200\n;;; G1 E2 F1800\n; SET_VELOCITY_LIMIT VELOCITY=450 ACCEL=10000\n;;; M400 P0\n;_GP_INLINE_ESTIMATED_PRINTING_TIME_PLACEHOLDER\n; FLUSH_END", + "change_filament_gcode": "; FLUSH_START\n;@2026-04-03 17:46:45 3+n换料gcode,包括7=3+4,19=3+4×4\n;_GP_INLINE_ESTIMATED_PRINTING_TIME_PLACEHOLDER\n;;; SET_VELOCITY_LIMIT VELOCITY=350 ACCEL=10000\n;;; G1 E-2 F4800\n;;; G1 Z{toolchange_z+0.6} F1800\n;;; M106 S0\n;;; G1 X265 F21000\n;;; M400 P370\n;;; G1 X277.5 F600\n;;; G1 E-2 F300\n;;; M400 P361\n;;; G1 Z{toolchange_z+3} F1200\n;;; G1 X0 F21000\n;;; G1 X-17.5 F5250\n;;; M400 P1569\n\n{local minimal_extrude_ = 5.0}\n{if one_of(filament_type[current_extruder], \"TPU\", \"PVA\")}\n{local minimal_extrude_ = 8.0}\n{endif}\n;;; G1 E{minimal_extrude_} F300\n;;; G1 E-33 F600\n\n{ local curr_t = current_extruder; local next_t = next_extruder;}\n{ local tab_step_time_ = (0, 850, 1350, 850, 850, 0, 1350, 1350, 1350, 1350, 0, 850, 850, 1350, 850, 0)};\n{ if (0 <= curr_t && curr_t < 3) then local step_from_=curr_t else local step_from_=3 endif}; from {step_from_}\n{ if (0 <= next_t && next_t < 3) then local step_into_=next_t else local step_into_=3 endif}; from {step_into_}\n;;; M400 P{tab_step_time_[step_from_ * 4 + step_into_]}\n\n{ local magic_mask_with_box = flush_length_4}\n{ if magic_mask_with_box == -1392 }\n { local is_curr_in_box = size(ace_t_box_vector) > curr_t ? ace_t_box_vector[curr_t] >= 0 ? true : false : false}; is_curr_in_box = {is_curr_in_box}\n { local is_next_in_box = size(ace_t_box_vector) > next_t ? ace_t_box_vector[next_t] >= 0 ? true : false : false}; is_next_in_box = {is_next_in_box}\n\n; curr_t box={ace_t_box_vector[curr_t]}, slot={ace_t_slot_vector[curr_t]}; next_t box={ace_t_box_vector[next_t]}, slot={ace_t_slot_vector[next_t]}\n { if ace_t_box_vector[curr_t] < 0 && ace_t_box_vector[next_t] < 0}\n;;; M400 P0 ; 料架→料架\n { elsif ace_t_box_vector[curr_t] < 0 && ace_t_box_vector[next_t] >= 0 }\n;;; M400 P40409 ; 料架→盒子\n { elsif ace_t_box_vector[curr_t] >= 0 && ace_t_box_vector[next_t] < 0 }\n;;; M400 P51591 ; 盒子→料架\n { elsif ace_t_box_vector[curr_t] >= 0 && ace_t_box_vector[next_t] == ace_t_box_vector[curr_t] }\n { if 0 < ace_t_slot_vector[curr_t] && ace_t_slot_vector[curr_t] <= 4 && 0 < ace_t_slot_vector[next_t] && ace_t_slot_vector[next_t] <= 4}\n;;; M400 P2700 ; 四进四→料盒\n { else }\n;;; M400 P91279 ; 盒子→盒子\n { endif }\n { elsif ace_t_box_vector[curr_t] >= 0 && ace_t_box_vector[next_t] != ace_t_box_vector[curr_t] }\n;;; M400 P93746 ; 盒子→不同盒子\n { else }\n; 未知\n { endif }\n{ endif }\n\n\nT[next_extruder]\n\n;;; G1 E8 F300\n;;; M400 P3643\n;;; G1 E13 F1200\n;;; M400 P1000\n\n{local flush_length_= flush_length}\n{local loops_=max(1,int((flush_length_-70+150) / 150))}\n{local extrude_length_=flush_length_ / loops_}\n{local EXTRUDE_SPEED_ = 5 * 60}\n{local UNWIND_SPEED_ = 20 *60}\n{local index_ = 0}\n\n{ if (loops_ > 0) }\n{ local loops_ = loops_ - 1}\n{ local index_ = index_ + 1}\n; {index_} + {loops_}\n;;; M106 S0\n;;; M400 P1000\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; M400 P{extrude_length_/0.03}\n;;; G1 E0.000001\n;;; M106 S255\n;;; M400 P2005\n;;; G1 E-2 F{UNWIND_SPEED_}\n;;; M400 P414\n{endif}\n{ if (loops_ > 0) }\n{ loops_ = loops_ - 1}\n{ index_ = index_ + 1}\n; {index_} + {loops_}\n;;; M106 S0\n;;; M400 P1000\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; M400 P{extrude_length_/0.03}\n;;; M106 S255\n;;; M400 P2005\n;;; G1 E-2 F{UNWIND_SPEED_}\n;;; M400 P414\n{endif}\n{ if (loops_ > 0) }\n{ loops_ = loops_ - 1}\n{ index_ = index_ + 1}\n; {index_} + {loops_}\n;;; M106 S0\n;;; M400 P1000\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; M400 P{extrude_length_/0.03}\n;;; M106 S255\n;;; M400 P2005\n;;; G1 E-2 F{UNWIND_SPEED_}\n;;; M400 P414\n{endif}\n\n; G1 X{x_after_toolchange} Y{y_after_toolchange} F12000\n; G1 Z{toolchange_z} F1200\n;;; G1 E2 F1800\n; SET_VELOCITY_LIMIT VELOCITY=450 ACCEL=10000\n;;; M400 P0\n;_GP_INLINE_ESTIMATED_PRINTING_TIME_PLACEHOLDER\n; FLUSH_END", "cooling_tube_length": "0", "cooling_tube_retraction": "0", "deretraction_speed": [ From b9ff15054faea23eb7ce99f466363e7f21d44755 Mon Sep 17 00:00:00 2001 From: Thomas Henauer Date: Mon, 18 May 2026 12:01:19 +0200 Subject: [PATCH 05/26] Fix wxGTK submenu popup parenting and sizing on Wayland (#13707) --- src/slic3r/GUI/Widgets/DropDown.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/slic3r/GUI/Widgets/DropDown.cpp b/src/slic3r/GUI/Widgets/DropDown.cpp index d698f9f7dc..abbecc4353 100644 --- a/src/slic3r/GUI/Widgets/DropDown.cpp +++ b/src/slic3r/GUI/Widgets/DropDown.cpp @@ -564,11 +564,6 @@ void DropDown::messureSize() subDropDown->use_content_width = true; subDropDown->Create(GetParent()); #ifdef __WXGTK__ - // Orca: Keep the wx parent as the combobox so wxPopupTransientWindow installs - // its capture handlers on the main dropdown, but make the native GTK - // popup transient for the currently open popup to satisfy Wayland's - // xdg-shell rule that a popup's parent must be the topmost mapped popup. - gtk_window_set_transient_for(GTK_WINDOW(subDropDown->GetHandle()), GTK_WINDOW(GetHandle())); // Orca: On Wayland, while the sub holds an xdg_popup grab, motion events for // the cursor over main may not be delivered (Mutter drops motion // outside the grabbing surface). Poll on idle and synthesize a @@ -636,8 +631,11 @@ void DropDown::autoPosition() // may exceed auto drect = wxDisplay(GetParent()).GetGeometry(); if (GetPosition().y + size.y + 10 > drect.GetBottom()) { + int available_height = drect.GetBottom() - GetPosition().y - 10; + if (available_height < rowSize.y * 2) + return; if (use_content_width && count <= 15) size.x += 6; - size.y = drect.GetBottom() - GetPosition().y - 10; + size.y = available_height; wxWindow::SetSize(size); if (selection >= 0) { if (offset.y + rowSize.y * (selection + 1) > size.y) @@ -727,6 +725,13 @@ void DropDown::mouseMove(wxMouseEvent &event) drop.group = items[-index - 2].group_key; drop.need_sync = true; drop.messureSize(); +#ifdef __WXGTK__ + // wxGTK wraps popup contents in a native GtkWindow. Make the submenu + // transient for the currently mapped parent popup window before + // positioning/showing it, so wlroots/Hyprland sees the topmost parent. + if (m_widget && drop.m_widget) + gtk_window_set_transient_for(GTK_WINDOW(drop.m_widget), GTK_WINDOW(m_widget)); +#endif drop.autoPosition(); drop.paintNow(); if (!drop.IsShown()) From b4aa070c40dd73ddef33b49b61e37feb9d67d7bf Mon Sep 17 00:00:00 2001 From: yw4z Date: Mon, 18 May 2026 14:46:47 +0300 Subject: [PATCH 06/26] MultiChooseDialog & CheckList class & improvements for Profile Dependencies (#9971) * init * fix * fix * update * update * update * Update Tab.cpp * Update CheckList.cpp --- resources/images/filter.svg | 1 + src/slic3r/CMakeLists.txt | 4 + src/slic3r/GUI/MultiChoiceDialog.cpp | 58 +++++++ src/slic3r/GUI/MultiChoiceDialog.hpp | 37 +++++ src/slic3r/GUI/Tab.cpp | 19 ++- src/slic3r/GUI/Widgets/CheckList.cpp | 225 +++++++++++++++++++++++++++ src/slic3r/GUI/Widgets/CheckList.hpp | 59 +++++++ 7 files changed, 399 insertions(+), 4 deletions(-) create mode 100644 resources/images/filter.svg create mode 100644 src/slic3r/GUI/MultiChoiceDialog.cpp create mode 100644 src/slic3r/GUI/MultiChoiceDialog.hpp create mode 100644 src/slic3r/GUI/Widgets/CheckList.cpp create mode 100644 src/slic3r/GUI/Widgets/CheckList.hpp diff --git a/resources/images/filter.svg b/resources/images/filter.svg new file mode 100644 index 0000000000..c48942073b --- /dev/null +++ b/resources/images/filter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/slic3r/CMakeLists.txt b/src/slic3r/CMakeLists.txt index c22b9b64fd..5e502207ef 100644 --- a/src/slic3r/CMakeLists.txt +++ b/src/slic3r/CMakeLists.txt @@ -329,6 +329,8 @@ set(SLIC3R_GUI_SOURCES GUI/Mouse3DController.hpp GUI/MsgDialog.cpp GUI/MsgDialog.hpp + GUI/MultiChoiceDialog.hpp + GUI/MultiChoiceDialog.cpp GUI/MultiMachine.cpp GUI/MultiMachine.hpp GUI/MultiMachineManagerPage.cpp @@ -496,6 +498,8 @@ set(SLIC3R_GUI_SOURCES GUI/Widgets/Button.hpp GUI/Widgets/CheckBox.cpp GUI/Widgets/CheckBox.hpp + GUI/Widgets/CheckList.cpp + GUI/Widgets/CheckList.hpp GUI/Widgets/ComboBox.cpp GUI/Widgets/ComboBox.hpp GUI/Widgets/DialogButtons.cpp diff --git a/src/slic3r/GUI/MultiChoiceDialog.cpp b/src/slic3r/GUI/MultiChoiceDialog.cpp new file mode 100644 index 0000000000..6bd5412737 --- /dev/null +++ b/src/slic3r/GUI/MultiChoiceDialog.cpp @@ -0,0 +1,58 @@ +#include "MultiChoiceDialog.hpp" + +#include "GUI_App.hpp" +#include "MainFrame.hpp" + +namespace Slic3r { namespace GUI { + +MultiChoiceDialog::MultiChoiceDialog( + wxWindow* parent, + const wxString& message, + const wxString& caption, + const wxArrayString& choices +) + : DPIDialog(parent ? parent : static_cast(wxGetApp().mainframe), wxID_ANY, caption, wxDefaultPosition, wxDefaultSize, wxCAPTION | wxCLOSE_BOX) +{ + SetBackgroundColour(*wxWHITE); + + wxBoxSizer* w_sizer = new wxBoxSizer(wxVERTICAL); + + if(!message.IsEmpty()){ + wxStaticText *msg = new wxStaticText(this, wxID_ANY, message); + msg->SetFont(Label::Body_13); + msg->Wrap(-1); + w_sizer->Add(msg, 0, wxRIGHT | wxLEFT | wxTOP, FromDIP(10)); + } + + m_check_list = new CheckList(this, choices); + + w_sizer->Add(m_check_list, 1, wxRIGHT | wxLEFT | wxTOP | wxEXPAND, FromDIP(10)); + + auto dlg_btns = new DialogButtons(this, {"OK", "Cancel"}); + + dlg_btns->GetOK()->Bind( wxEVT_BUTTON, [this](wxCommandEvent &e) {EndModal(wxID_OK);}); + dlg_btns->GetCANCEL()->Bind(wxEVT_BUTTON, [this](wxCommandEvent &e) {EndModal(wxID_CANCEL);}); + + w_sizer->Add(dlg_btns, 0, wxEXPAND); + + SetSizer(w_sizer); + Layout(); + w_sizer->Fit(this); + wxGetApp().UpdateDlgDarkUI(this); +} + +wxArrayInt MultiChoiceDialog::GetSelections() const +{ + return m_check_list->GetSelections(); +} + +void MultiChoiceDialog::SetSelections(wxArrayInt sel_array) +{ + m_check_list->SetSelections(sel_array); +} + +MultiChoiceDialog::~MultiChoiceDialog() {} + +void MultiChoiceDialog::on_dpi_changed(const wxRect &suggested_rect) {} + +}} // namespace Slic3r::GUI \ No newline at end of file diff --git a/src/slic3r/GUI/MultiChoiceDialog.hpp b/src/slic3r/GUI/MultiChoiceDialog.hpp new file mode 100644 index 0000000000..f636bebd3b --- /dev/null +++ b/src/slic3r/GUI/MultiChoiceDialog.hpp @@ -0,0 +1,37 @@ +#ifndef slic3r_GUI_MultiChoiceDialog_hpp_ +#define slic3r_GUI_MultiChoiceDialog_hpp_ + +#include "Widgets/CheckList.hpp" +#include "Widgets/DialogButtons.hpp" + +#include +#include +#include + + +namespace Slic3r { namespace GUI { + +class MultiChoiceDialog : public DPIDialog +{ +public: + MultiChoiceDialog( + wxWindow* parent = nullptr, + const wxString& message = wxEmptyString, + const wxString& caption = wxEmptyString, + const wxArrayString& choices = wxArrayString() + ); + ~MultiChoiceDialog(); + + wxArrayInt GetSelections() const; + + void SetSelections(wxArrayInt sel_array); + +protected: + CheckList* m_check_list; + wxArrayInt m_selected_indices; + void on_dpi_changed(const wxRect &suggested_rect) override; +}; + +}} // namespace Slic3r::GUI + +#endif \ No newline at end of file diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index ccf595b22a..44b34e590e 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -40,7 +40,7 @@ #include "UnsavedChangesDialog.hpp" #include "SavePresetDialog.hpp" #include "EditGCodeDialog.hpp" - +#include "MultiChoiceDialog.hpp" #include "MsgDialog.hpp" #include "Notebook.hpp" @@ -7002,7 +7002,15 @@ wxSizer* Tab::compatible_widget_create(wxWindow* parent, PresetDependencies &dep presets.Add(from_u8(preset.name)); } - wxMultiChoiceDialog dlg(parent, deps.dialog_title, deps.dialog_label, presets); + if(deps.type == Preset::TYPE_PRINTER){ + deps.dialog_title = "Compatible printers"; + deps.dialog_label = "Select printers"; + }else{ + deps.dialog_title = "Compatible process profiles"; + deps.dialog_label = "Select profiles"; + } + + MultiChoiceDialog dlg(parent, deps.dialog_label, deps.dialog_title, presets); wxGetApp().UpdateDlgDarkUI(&dlg); // Collect and set indices of depending_presets marked as compatible. wxArrayInt selections; @@ -7015,13 +7023,16 @@ wxSizer* Tab::compatible_widget_create(wxWindow* parent, PresetDependencies &dep break; } dlg.SetSelections(selections); + dlg.SetSize(FromDIP(wxSize(360, 480))); std::vector value; // Show the dialog. if (dlg.ShowModal() == wxID_OK) { selections.Clear(); selections = dlg.GetSelections(); - for (auto idx : selections) - value.push_back(presets[idx].ToUTF8().data()); + // leave list empty if all items checked. this will check "All" checkbox automatically. also fixes unnecessary config change + if(selections.GetCount() != presets.GetCount()) + for (auto idx : selections) + value.push_back(presets[idx].ToUTF8().data()); if (value.empty()) { deps.checkbox->SetValue(1); deps.btn->Disable(); diff --git a/src/slic3r/GUI/Widgets/CheckList.cpp b/src/slic3r/GUI/Widgets/CheckList.cpp new file mode 100644 index 0000000000..cd0dcebff3 --- /dev/null +++ b/src/slic3r/GUI/Widgets/CheckList.cpp @@ -0,0 +1,225 @@ +#include "CheckList.hpp" + +#include "slic3r/GUI/GUI_App.hpp" + +CheckList::CheckList( + wxWindow* parent, + const wxArrayString& choices, + long scroll_style +) + : wxWindow(parent, wxID_ANY) + , m_search(this, "search", 16) + , m_menu(this, "filter", 16) + , m_first_load(true) +{ + Freeze(); + w_sizer = new wxBoxSizer(wxVERTICAL); + + f_sizer = new wxBoxSizer(wxHORIZONTAL); + f_bar = new wxPanel(this, wxID_ANY); + f_bar->SetBackgroundColour(parent->GetBackgroundColour()); + m_filter_box = new TextInput(f_bar, "", "", "", wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER); + m_filter_box->SetIcon(m_search.bmp()); + m_filter_box->SetMinSize(FromDIP(wxSize(200,24))); + m_filter_box->SetSize(FromDIP(wxSize(-1,24))); + m_filter_box->SetFocus(); + m_filter_ctrl = m_filter_box->GetTextCtrl(); + m_filter_ctrl->SetFont(Label::Body_13); + m_filter_ctrl->SetSize(wxSize(-1, FromDIP(16))); // Centers text vertically + m_filter_ctrl->SetHint(_L("Type to filter...")); + m_filter_ctrl->Bind(wxEVT_TEXT, [this](auto &e) {Filter(m_filter_ctrl->GetValue());}); + m_filter_ctrl->Bind(wxEVT_TEXT_ENTER, [this](auto &e) {Filter(m_filter_ctrl->GetValue());}); + m_filter_ctrl->Bind(wxEVT_SET_FOCUS, [this](auto &e) {Filter(m_filter_ctrl->GetValue());e.Skip();}); + m_filter_ctrl->Bind(wxEVT_KILL_FOCUS, [this](auto &e) {Filter(m_filter_ctrl->GetValue());e.Skip();}); + f_sizer->Add(m_filter_box, 1, wxEXPAND); + Bind(wxEVT_SET_FOCUS, [this](auto &e) {m_filter_box->SetFocus();}); + + fb_sizer = new wxBoxSizer(wxHORIZONTAL); + auto create_btn = [this] (wxString title, bool select){ + auto btn = new wxStaticText(f_bar, wxID_ANY, title); + btn->SetForegroundColour("#009687"); + btn->SetCursor(wxCURSOR_HAND); + btn->SetFont(Label::Body_13); + btn->Bind(wxEVT_LEFT_DOWN, [this, select](wxMouseEvent &e) {SelectAll(select);}); + fb_sizer->Add(btn, 0, wxLEFT | wxALIGN_CENTER_VERTICAL, FromDIP(10)); + }; + f_sizer->Add(fb_sizer,0 ,wxALIGN_CENTER_VERTICAL); + create_btn(_L("All") , true); + create_btn(_L("None"), false); + + m_menu_button = new wxStaticBitmap(f_bar, wxID_ANY, m_menu.bmp()); + m_menu_button->SetCursor(wxCURSOR_HAND); + m_menu_button->Bind(wxEVT_LEFT_DOWN, &CheckList::ShowMenu, this); + f_sizer->Add(m_menu_button,0 ,wxLEFT | wxALIGN_CENTER_VERTICAL, FromDIP(10)); + + f_bar->SetSizerAndFit(f_sizer); + w_sizer->Add(f_bar, 0, wxEXPAND); + + auto spacer = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(-1, FromDIP(3))); + spacer->SetBackgroundColour(parent->GetBackgroundColour()); + w_sizer->Add(spacer, 0, wxEXPAND); + + s_sizer = new wxBoxSizer(wxVERTICAL); + m_scroll_area = new wxScrolledWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, scroll_style); + m_scroll_area->SetScrollRate(0, 10); + m_scroll_area->SetSizer(s_sizer); + m_scroll_area->SetBackgroundColour(parent->GetBackgroundColour()); + m_scroll_area->Bind(wxEVT_RIGHT_DOWN, &CheckList::ShowMenu, this); + m_scroll_area->DisableFocusFromKeyboard(); + + m_info = new wxStaticText(m_scroll_area, wxID_ANY, ""); + m_info->SetFont(Label::Body_13); + s_sizer->Add(m_info, 1, wxALIGN_CENTER_HORIZONTAL | wxALL, FromDIP(10)); + m_info->Hide(); + + m_info_nonsel = _L("No selected items..."); + m_info_allsel = _L("All items selected..."); + m_info_empty = _L("No matching items..."); + + SetBackgroundColour(StateColor::darkModeColorFor("#DBDBDB")); // draws border on wxScrolledWindow + + w_sizer->Add(m_scroll_area, 1, wxEXPAND | wxALL, FromDIP(1)); // 1 for border + s_sizer->Layout(); + + m_list_size = choices.size(); + + m_checks.reserve(m_list_size); + + auto margin = FromDIP(2); + wxCheckBox* cb; + + for (size_t i = 0; i < m_list_size; ++i){ + cb = new wxCheckBox(m_scroll_area, wxID_ANY, choices[i]); + m_checks.emplace_back(cb); + s_sizer->Add(cb, 0, wxALL, margin); + } + + m_scroll_area->FitInside(); + s_sizer->Layout(); + + SetSizer(w_sizer); + Layout(); + Thaw(); +} + +void CheckList::SetSelections(wxArrayInt sel_array){ + if(!m_first_load){ + for (size_t i = 0; i < m_list_size; ++i) + Check(i, false); + m_first_load = false; + } + + for (int i : sel_array) + Check(i, true); +} + +wxArrayInt CheckList::GetSelections() +{ + wxArrayInt checks; + for (size_t i = 0; i < m_list_size; ++i) + if (m_checks[i]->GetValue()) + checks.push_back(i); + return checks; +} + +void CheckList::Check(int i, bool checked) +{ + if (i > -1 && i < m_list_size) + m_checks[i]->SetValue(checked); +} + +void CheckList::SelectAll(bool value) +{ + for (size_t i = 0; i < m_list_size; ++i) + Check(i, value); +} + +void CheckList::SelectVisible(bool value) +{ + auto filter = m_filter_ctrl->GetValue().Lower(); + if((!value && filter == "::unsel") || (value && filter == "::sel")) + m_filter_ctrl->SetValue(""); + for (size_t i = 0; i < m_list_size; ++i) + if(m_checks[i]->IsShown()) + Check(i, value); +} + +bool CheckList::IsChecked(int i) +{ + if (i > -1 && i < m_list_size) + return false; + return m_checks[i]->GetValue(); +} + +void CheckList::Filter(const wxString& filterText) +{ + Freeze(); + auto filter = filterText.Lower(); + auto c_text = m_filter_ctrl->GetValue().Lower(); + + if(filter == "::sel" || filter == "::nonsel"){ + if(c_text != filter){ // not text input + m_filter_ctrl->SetValue(filter); + m_filter_ctrl->SetSelection(0,-1); + } + fb_sizer->Show(false); + if (filter == "::sel") + for (auto& cb : m_checks) cb->Show(cb->GetValue()); + else + for (auto& cb : m_checks) cb->Show(!cb->GetValue()); + } + else{ + bool clear = filterText.IsEmpty(); + fb_sizer->Show(clear); + for (auto& cb : m_checks) + cb->Show(clear || cb->GetLabel().Lower().Contains(filter)); + } + + m_info->Show(); + for (size_t i = 0; i < m_list_size; ++i) { + if (m_checks[i]->IsShown()){ + m_info->Hide(); + break; + } + } + if (m_info->IsShown()) + m_info->SetLabel(filter == "::sel" ? m_info_nonsel : filter == "::nonsel" ? m_info_allsel : m_info_empty); + + m_scroll_area->FitInside(); + f_sizer->Layout(); + Thaw(); +} + +void CheckList::ShowMenu(wxMouseEvent &evt) +{ + bool filtering = !m_filter_ctrl->GetValue().IsEmpty(); + bool list_empty = m_info->IsShown(); + + wxMenu m; + m.Append(wxID_FILE1, _L("Select All" ))->Enable(!filtering); + m.Append(wxID_FILE2, _L("Deselect All"))->Enable(!filtering); + m.AppendSeparator(); + m.Append(wxID_FILE3, _L("Select visible" ))->Enable(!list_empty && filtering); + m.Append(wxID_FILE4, _L("Deselect visible"))->Enable(!list_empty && filtering); + m.AppendSeparator(); + m.Append(wxID_FILE5, _L("Filter selected" )); + m.Append(wxID_FILE6, _L("Filter nonSelected")); + + m.Bind(wxEVT_MENU, [this](wxCommandEvent& e) { + switch (e.GetId()){ + case wxID_FILE1: SelectAll(true) ; break; + case wxID_FILE2: SelectAll(false) ; break; + case wxID_FILE3: SelectVisible(true) ; break; + case wxID_FILE4: SelectVisible(false); break; + case wxID_FILE5: Filter("::sel") ; break; + case wxID_FILE6: Filter("::nonsel") ; break; + default: break; + } + },wxID_FILE1, wxID_FILE6); + + wxWindow* src = dynamic_cast(evt.GetEventObject()); + if (!src) return; + wxPoint screen_pos = src->ClientToScreen(evt.GetPosition()); + wxPoint local_pos = ScreenToClient(screen_pos); + PopupMenu(&m, local_pos); +} \ No newline at end of file diff --git a/src/slic3r/GUI/Widgets/CheckList.hpp b/src/slic3r/GUI/Widgets/CheckList.hpp new file mode 100644 index 0000000000..bd40e1ad84 --- /dev/null +++ b/src/slic3r/GUI/Widgets/CheckList.hpp @@ -0,0 +1,59 @@ +#ifndef slic3r_GUI_CHECKLIST_hpp_ +#define slic3r_GUI_CHECKLIST_hpp_ + +#include "../wxExtensions.hpp" + +#include "Label.hpp" +#include "TextInput.hpp" + +#include +#include +#include +#include + +class CheckList : public wxWindow +{ +public: + CheckList( + wxWindow* parent, + const wxArrayString& choices = wxArrayString(), + long scroll_style = wxVSCROLL + ); + + wxArrayInt GetSelections(); + void SetSelections(wxArrayInt sel_array); + void Check(int i, bool checked); + bool IsChecked(int i); + + void Filter(const wxString& filterText); + void SelectAll(bool value); + void SelectVisible(bool value); + +private: + void ShowMenu(wxMouseEvent &e); + + std::vector m_checks; + int m_list_size; + bool m_first_load; + wxBoxSizer* w_sizer; + + wxPanel* f_bar; + wxBoxSizer* f_sizer; + TextInput* m_filter_box; + wxTextCtrl* m_filter_ctrl; + wxBoxSizer* fb_sizer; + wxStaticBitmap* m_menu_button; + + wxScrolledWindow* m_scroll_area; + wxBoxSizer* s_sizer; + + wxStaticText* m_info; + wxString m_info_nonsel; + wxString m_info_allsel; + wxString m_info_empty; + + ScalableBitmap m_search; + ScalableBitmap m_menu; +}; + +#endif // !slic3r_GUI_CheckList_hpp_ From 248a55abd0864a7c76b5d1466b7558c5abb4ad62 Mon Sep 17 00:00:00 2001 From: Kappa971 <62349018+Kappa971@users.noreply.github.com> Date: Mon, 18 May 2026 15:29:38 +0200 Subject: [PATCH 07/26] Update Italian translation (#13674) --- localization/i18n/it/OrcaSlicer_it.po | 734 +++++++++++++++++--------- 1 file changed, 483 insertions(+), 251 deletions(-) diff --git a/localization/i18n/it/OrcaSlicer_it.po b/localization/i18n/it/OrcaSlicer_it.po index 991fe0c0fa..91f171c11d 100644 --- a/localization/i18n/it/OrcaSlicer_it.po +++ b/localization/i18n/it/OrcaSlicer_it.po @@ -533,7 +533,7 @@ msgid "Drag" msgstr "Trascina" msgid "Move cut line" -msgstr "" +msgstr "Sposta linea di taglio" msgid "Draw cut line" msgstr "Disegna linea di taglio" @@ -831,7 +831,7 @@ msgid "Embossing actions" msgstr "Azioni di rilievo" msgid "Position on surface" -msgstr "" +msgstr "Posizione sulla superficie" msgid "Emboss" msgstr "Rilievo" @@ -1911,14 +1911,14 @@ msgstr "Aggiornamento dell'informativa sulla riservatezza" #, c-format, boost-format msgid "your Bambu Cloud profile (user ID: \"%s\")" -msgstr "" +msgstr "il tuo profilo Bambu Cloud (ID utente: \"%s\")" msgid "your default profile" -msgstr "" +msgstr "il tuo profilo predefinito" #, c-format, boost-format msgid "a user profile (folder: \"%s\")" -msgstr "" +msgstr "profilo utente (cartella: \"%s\")" #, c-format, boost-format msgid "" @@ -1926,15 +1926,20 @@ msgid "" "Do you want to migrate them to your OrcaCloud profile?\n" "This will copy your presets so they are available under your new account." msgstr "" +"Sono stati trovati dei profili utente in %s.\n" +"Desideri migrarli al tuo profilo OrcaCloud?\n" +"In questo modo verranno copiati e resi disponibili nel tuo nuovo profilo." msgid "Migrate User Presets" -msgstr "" +msgstr "Migra profili utente" #, c-format, boost-format msgid "" "Failed to migrate user presets:\n" "%s" msgstr "" +"Impossibile migrare i profili utente:\n" +"%s" msgid "" "The number of user presets cached in the cloud has exceeded the upper limit, " @@ -1951,29 +1956,33 @@ msgid "" "reduce the preset size by removing custom configurations or use it locally " "only." msgstr "" +"Il contenuto del profilo è troppo grande per essere sincronizzato con il " +"cloud (supera 1 MB). Si prega di ridurre le dimensioni del profilo " +"rimuovendo le configurazioni personalizzate oppure utilizzarlo solo in " +"locale." #, c-format, boost-format msgid "%s updated from %s to %s" -msgstr "" +msgstr "%s aggiornato da %s a %s" #, c-format, boost-format msgid "%s has been downloaded." -msgstr "" +msgstr "%s è stato scaricato." #, c-format, boost-format msgid "Bundle %s is no longer available." -msgstr "" +msgstr "Il pacchetto %s non è più disponibile." #, c-format, boost-format msgid "Bundle %s access is unauthorized." -msgstr "" +msgstr "L'accesso al pacchetto %s non è autorizzato." msgid "Loading user preset" msgstr "Caricamento profili utente" #, c-format, boost-format msgid "%s has been removed." -msgstr "" +msgstr "%s è stato rimosso." msgid "Switching application language" msgstr "Cambio lingua applicazione" @@ -2141,7 +2150,7 @@ msgid "Backspace" msgstr "Backspace" msgid "Load..." -msgstr "Caricamento..." +msgstr "Carica..." msgid "Cube" msgstr "Cubo" @@ -2190,9 +2199,9 @@ msgid "" "No - Do not change these settings for me" msgstr "" "Questo modello presenta una goffratura del testo sulla superficie superiore. " -"Per ottenere risultati ottimali, si consiglia di impostare la 'Soglia di una " -"parete(min_width_top_surface)' su 0 affinché la 'Soglia di una sola parete " -"sulle superfici superiori' funzioni al meglio.\n" +"Per ottenere risultati ottimali, si consiglia di impostare 'Soglia singola " +"parete (min_width_top_surface)' su 0 affinché l'opzione 'Solo una parete su " +"superfici superiori' funzioni al meglio.\n" "Sì - Modificare automaticamente queste impostazioni\n" "No - Non modificare queste impostazioni per me" @@ -2221,7 +2230,7 @@ msgid "Support Enforcer" msgstr "Supporto di rinforzo" msgid "Change part type" -msgstr "" +msgstr "Modifica tipo di parte" msgid "Set as an individual object" msgstr "Imposta come singolo oggetto" @@ -2239,10 +2248,10 @@ msgid "Printable" msgstr "Stampabile" msgid "Auto Drop" -msgstr "" +msgstr "Rilascio automatico" msgid "Automatically drops the selected object to the build plate" -msgstr "" +msgstr "Rilascia automaticamente l'oggetto selezionato sul piano di stampa" msgid "Fix model" msgstr "Correggi il modello" @@ -2427,10 +2436,10 @@ msgid "Select all objects on the current plate" msgstr "Seleziona tutti gli oggetti sul piatto corrente" msgid "Select All Plates" -msgstr "Seleziona tutte le piastre" +msgstr "Seleziona tutti i piatti" msgid "Select all objects on all plates" -msgstr "Seleziona tutti gli oggetti su tutte le piastre" +msgstr "Seleziona tutti gli oggetti su tutti i piatti" msgid "Delete All" msgstr "Elimina tutto" @@ -2493,7 +2502,7 @@ msgid "Simplify Model" msgstr "Semplifica Modello" msgid "Subdivision mesh" -msgstr "Suddivisione mesh" +msgstr "Suddivisione maglia" msgid "(Lost color)" msgstr "(Colore perso)" @@ -2505,7 +2514,7 @@ msgid "Drop" msgstr "Lascia" msgid "Edit Process Settings" -msgstr "Modifica le impostazioni del processo" +msgstr "Modifica impostazioni di processo" msgid "Copy Process Settings" msgstr "Copia impostazioni di processo" @@ -2523,7 +2532,7 @@ msgid "Set Filament for selected items" msgstr "Imposta filamento per gli elementi selezionati" msgid "Automatically snaps the selected object to the build plate" -msgstr "" +msgstr "Aggancia automaticamente l'oggetto selezionato sul piano di stampa" msgid "Unlock" msgstr "Sblocca" @@ -2821,7 +2830,7 @@ msgid "Brim" msgstr "Tesa" msgid "Object/Part Settings" -msgstr "" +msgstr "Impostazioni oggetto/parte" msgid "Reset parameter" msgstr "Ripristina parametro" @@ -3535,6 +3544,14 @@ msgid "" "enhancements. Each project carried the work of its predecessors forward, " "crediting those who came before." msgstr "" +"I programmi di sezionamento a sorgente aperta per l'elaborazione del modelli " +"per la stampa 3D, si fondano su una tradizione di collaborazione e " +"riconoscimento del merito. Slic3r, creato da Alessandro Ranellucci e dalla " +"comunità RepRap, ha gettato le basi. PrusaSlicer di Prusa Research ha " +"sviluppato ulteriormente questo lavoro; Bambu Studio è derivato da " +"PrusaSlicer e SuperSlicer lo ha ampliato con miglioramenti apportati dalla " +"comunità. Ogni progetto ha portato avanti il ​​lavoro dei suoi predecessori, " +"riconoscendo il contributo di chi li ha preceduti." msgid "" "OrcaSlicer began in that same spirit, drawing from PrusaSlicer, BambuStudio, " @@ -3542,12 +3559,20 @@ msgid "" "introducing advanced calibration tools, precise wall and seam control and " "hundreds of other features." msgstr "" +"OrcaSlicer è nato con lo stesso spirito, traendo ispirazione da PrusaSlicer, " +"BambuStudio, SuperSlicer e CuraSlicer. Ma da allora si è evoluto ben oltre " +"le sue origini, introducendo strumenti di calibrazione avanzati, controllo " +"preciso su pareti e cuciture e centinaia di altre funzionalità." msgid "" "Today, OrcaSlicer is the most widely used and actively developed open-source " "slicer in the 3D printing community. Many of its innovations have been " "adopted by other slicers, making it a driving force for the entire industry." msgstr "" +"Oggi, OrcaSlicer è il programma di sezionamento a sorgente aperta più " +"utilizzato e attivamente sviluppato nella comunità della stampa 3D. Molte " +"delle sue innovazioni sono state adottate da altri programmi di stampa, " +"rendendolo un punto di riferimento per l'intero settore." msgid "Version" msgstr "Versione" @@ -4501,7 +4526,7 @@ msgid "Inspecting first layer" msgstr "Ispezione del primo strato" msgid "Identifying build plate type" -msgstr "Identificazione tipo piatto di stampa" +msgstr "Identificazione tipo piano di stampa" msgid "Calibrating Micro Lidar" msgstr "Calibrazione Micro Lidar" @@ -4970,7 +4995,7 @@ msgid "Acceleration" msgstr "Accelerazione" msgid "Jerk" -msgstr "" +msgstr "Scatto" msgid "Fan Speed" msgstr "Velocità ventola" @@ -5120,10 +5145,10 @@ msgid "Color: " msgstr "Colore: " msgid "Acceleration: " -msgstr "" +msgstr "Accelerazione: " msgid "Jerk: " -msgstr "" +msgstr "Scatto: " msgid "PA: " msgstr "PA: " @@ -5156,8 +5181,9 @@ msgid "" "Automatically re-slice according to the optimal filament grouping, and the " "grouping results will be displayed after slicing." msgstr "" -"Ri-slicing automatico secondo il raggruppamento filamenti ottimale; i " -"risultati del raggruppamento verranno visualizzati dopo lo slicing." +"Rielabora automaticamente in base al raggruppamento ottimale dei filamenti; " +"i risultati del raggruppamento verranno visualizzati al termine " +"dell'elaborazione." msgid "Filament Grouping" msgstr "Raggruppamento filamenti" @@ -5258,10 +5284,10 @@ msgid "Actual Speed (mm/s)" msgstr "Velocità effettiva (mm/s)" msgid "Acceleration (mm/s²)" -msgstr "" +msgstr "Accelerazione (mm/s²)" msgid "Jerk (mm/s)" -msgstr "" +msgstr "Scatto (mm/s)" msgid "Fan Speed (%)" msgstr "Velocità ventola (%)" @@ -5294,7 +5320,7 @@ msgid "Filament change times" msgstr "Tempi cambio filamento" msgid "Tool changes" -msgstr "" +msgstr "Cambi testina" msgid "Color change" msgstr "Cambio colore" @@ -5387,10 +5413,10 @@ msgid "Sequence" msgstr "Sequenza" msgid "Object Selection" -msgstr "" +msgstr "Selezione oggetto" msgid "Part Selection" -msgstr "" +msgstr "Selezione parte" msgid "number keys" msgstr "tasti numerici" @@ -5582,7 +5608,7 @@ msgid "Paint Toolbar" msgstr "Barra strumenti di pittura" msgid "part selection" -msgstr "" +msgstr "selezione parte" msgid "Explosion Ratio" msgstr "Rapporto di esplosione" @@ -6136,7 +6162,7 @@ msgid "View" msgstr "Vista" msgid "Preset Bundle" -msgstr "" +msgstr "Pacchetto profili" msgid "Help" msgstr "Aiuto" @@ -6178,7 +6204,7 @@ msgid "VFA" msgstr "VFA" msgid "Calibration Guide" -msgstr "" +msgstr "Guida alla calibrazione" msgid "&Open G-code" msgstr "Apri G-code" @@ -6293,6 +6319,11 @@ msgid "" "2. The Filament presets\n" "3. The Printer presets" msgstr "" +"Desideri sincronizzare i tuoi dati personali da Orca Cloud?\n" +"Contiene le seguenti informazioni:\n" +"1. Profili di processo\n" +"2. Profili di filamento\n" +"3. Profili della stampante" msgid "Synchronization" msgstr "Sincronizzazione" @@ -6314,6 +6345,8 @@ msgid "" "The player is not loaded because the GStreamer GTK video sink is missing or " "failed to initialize." msgstr "" +"Il lettore non è stato caricato perché il ricevitore video GTK di GStreamer " +"è mancante o non è stato inizializzato correttamente." msgid "Please confirm if the printer is connected." msgstr "Verifica che la stampante sia collegata." @@ -7216,10 +7249,10 @@ msgid "Model file downloaded." msgstr "File del modello scaricato." msgid "Shared profiles may be available for this printer." -msgstr "" +msgstr "Per questa stampante potrebbero essere disponibili profili condivisi." msgid "Browse shared profiles" -msgstr "" +msgstr "Esplora i profili condivisi" msgid "Serious warning:" msgstr "Avviso serio:" @@ -7433,7 +7466,7 @@ msgid "Objects" msgstr "Oggetti" msgid "Cycle settings visibility" -msgstr "" +msgstr "Visibilità impostazioni" msgid "Compare presets" msgstr "Confronta i profili" @@ -7718,28 +7751,30 @@ msgid "Load 3MF" msgstr "Carica 3MF" msgid "BambuStudio Project" -msgstr "" +msgstr "Progetto BambuStudio" -#, fuzzy msgid "The 3MF is not supported by OrcaSlicer, loading geometry data only." msgstr "" "Il formato 3MF non è supportato da OrcaSlicer. Saranno caricati solo i dati " "geometrici." -#, fuzzy msgid "" "The 3MF file was generated by an old OrcaSlicer version, loading geometry " "data only." msgstr "" -"Il 3MF è stato generato da una vecchia versione di OrcaSlicer, caricando " -"solo i dati geometrici." +"Il file 3MF è stato generato da una vecchia versione di OrcaSlicer. Saranno " +"caricati solo i dati geometrici." msgid "" "The 3MF file was generated by an older version, loading geometry data only." msgstr "" +"Il file 3MF è stato generato da una versione precedente. Saranno caricati " +"solo i dati geometrici." msgid "The 3MF file was generated by BambuStudio, loading geometry data only." msgstr "" +"Il file 3MF è stato generato da BambuStudio. Saranno caricati solo i dati " +"geometrici." msgid "" "This project was created with an OrcaSlicer 2.3.1-alpha and uses infill " @@ -7782,12 +7817,18 @@ msgid "" "The 3MF was created by BambuStudio (version %s), which is newer than the " "compatible version %s. Found unrecognized settings:" msgstr "" +"Il file 3MF è stato creato da BambuStudio (versione %s), che è più recente " +"della versione compatibile %s. Sono state trovate impostazioni non " +"riconosciute:" #, c-format, boost-format msgid "" "The 3MF was created by BambuStudio (version %s), which is newer than the " "compatible version %s. Some settings may not be fully compatible." msgstr "" +"Il file 3MF è stato creato da BambuStudio (versione %s), che è più recente " +"della versione compatibile %s. Alcune impostazioni potrebbero non essere " +"pienamente compatibili." msgid "" "The 3MF was created by BambuStudio. Some settings may differ from OrcaSlicer." @@ -7804,7 +7845,7 @@ msgstr "Si prega di correggerli nella scheda dei parametri" msgid "" "The 3MF has the following modified G-code in filament or printer presets:" msgstr "" -"Il 3MF ha i seguenti G-code modificati nei profili del filamento o della " +"Il 3MF ha i seguenti G-code modificati nei profili di filamento o della " "stampante:" msgid "" @@ -7883,7 +7924,7 @@ msgid "Object with multiple parts was detected" msgstr "È stato rilevato un oggetto con più parti" msgid "Auto-Drop" -msgstr "" +msgstr "Rilascio automatico" #, c-format, boost-format msgid "" @@ -7958,9 +7999,11 @@ msgstr "L'oggetto selezionato non può essere diviso." msgid "Disable Auto-Drop to preserve z positioning?\n" msgstr "" +"Disabilitare la funzione di Rilascio automatico per preservare il " +"posizionamento sull'asse Z?\n" msgid "Object with floating parts was detected" -msgstr "" +msgstr "È stato rilevato un oggetto con parti fluttuanti" msgid "Another export job is running." msgstr "È in esecuzione un altro processo di esportazione." @@ -8380,7 +8423,7 @@ msgid "Triangles: %1%\n" msgstr "Triangoli: %1%\n" msgid "Use \"Fix Model\" to repair the mesh." -msgstr "" +msgstr "Utilizza \"Correggi modello\" per riparare la maglia poligonale." #, c-format, boost-format msgid "" @@ -8554,15 +8597,17 @@ msgid "Show the splash screen during startup." msgstr "Mostra la schermata iniziale durante l'avvio." msgid "Show shared profiles notification" -msgstr "" +msgstr "Mostra notifica profili condivisi" msgid "" "Show a notification with a link to browse shared profiles when the selected " "printer is changed." msgstr "" +"Quando si cambia la stampante selezionata, viene visualizzata una notifica " +"con un collegamento per esplorare i profili condivisi." msgid "Use window buttons on left side" -msgstr "" +msgstr "Utilizza i pulsanti della finestra sul lato sinistro" msgid "(Requires restart)" msgstr "(Richiede riavvio)" @@ -8638,10 +8683,10 @@ msgstr "" "del filamento/processo per ciascuna stampante." msgid "Group user filament presets" -msgstr "Raggruppa profili filamento utente" +msgstr "Raggruppa profili di filamento utente" msgid "Group user filament presets based on selection" -msgstr "Raggruppa profili filamento utente in base alla selezione" +msgstr "Raggruppa i profili di filamento utente in base alla selezione" msgid "All" msgstr "Tutto" @@ -8716,7 +8761,7 @@ msgid "Auto arrange plate after cloning" msgstr "Disposizione automatica del piatto dopo la clonazione" msgid "Auto slice after changes" -msgstr "Slicing automatico dopo le modifiche" +msgstr "Elaborazione automatica dopo le modifiche" msgid "" "If enabled, OrcaSlicer will re-slice automatically whenever slicing-related " @@ -8835,6 +8880,10 @@ msgid "" "the transmission of data to Bambu's cloud services too. Users who don't use " "BBL machines or use LAN mode only can safely turn on this function." msgstr "" +"Questa opzione disabilita tutti i servizi cloud, ad esempio Orca Cloud e " +"Bambu Cloud. Interrompe anche la trasmissione dei dati ai servizi cloud di " +"Bambu. Gli utenti che non utilizzano macchine BBL o che utilizzano solo la " +"modalità LAN, possono attivare questa opzione in tutta sicurezza." msgid "Network test" msgstr "Test di rete" @@ -8843,15 +8892,18 @@ msgid "Test" msgstr "Prova" msgid "Cloud Providers" -msgstr "" +msgstr "Fornitori di servizi cloud" msgid "Enable Bambu Cloud" -msgstr "" +msgstr "Abilita Bambu Cloud" msgid "" "Allow logging into Bambu Cloud alongside Orca Cloud. When enabled, a Bambu " "login section appears on the homepage." msgstr "" +"Consente l'accesso sia a Bambu Cloud che a Orca Cloud. Quando questa opzione " +"è abilitata, nella pagina iniziale viene visualizzata una sezione per " +"l'accesso a Bambu." msgid "Update & sync" msgstr "Aggiorna e sincronizza" @@ -9133,7 +9185,7 @@ msgid "Project-inside presets" msgstr "Profilo interno al progetto" msgid "Bundle presets" -msgstr "" +msgstr "Pacchetto profili" msgid "System" msgstr "Sistema" @@ -9738,6 +9790,9 @@ msgid "" "type in the slicing file. Please make sure you have installed the correct " "filament in the external spool." msgstr "" +"Il tipo di filamento esterno è sconosciuto o non corrisponde al tipo di " +"filamento specificato nel file di sezionamento. Assicurati di aver " +"installato il filamento corretto nella bobina esterna." msgid "Please refer to Wiki before use->" msgstr "Fare riferimento alla Wiki prima dell'uso ->" @@ -10129,8 +10184,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "Quando si registra un timelapse senza la testina di stampa, si consiglia di " "aggiungere un \"Timelapse Torre di spurgo\"\n" @@ -10500,7 +10555,7 @@ msgid "Cooling Fan" msgstr "Velocità minima ventola di raffreddamento" msgid "Fan speed-up time" -msgstr "Tempo di accelerazione della ventola" +msgstr "Tempo accelerazione ventola" msgid "Extruder Clearance" msgstr "Spazio libero estrusore" @@ -10554,10 +10609,10 @@ msgid "Normal" msgstr "Normale" msgid "Resonance Compensation" -msgstr "" +msgstr "Compensazione risonanza" msgid "Resonance Avoidance Speed" -msgstr "Velocità evita risonanza" +msgstr "Velocità prevenzione risonanza" msgid "Frequency" msgstr "Frequenza" @@ -10566,12 +10621,15 @@ msgid "" "The frequency of the anti-vibration signal will correspond to the natural " "frequency of the frame." msgstr "" +"La frequenza del segnale antivibrazione corrisponderà alla frequenza " +"naturale del telaio." msgid "Damping" -msgstr "" +msgstr "Smorzamento" msgid "Damping ratio for the input shaping filter." msgstr "" +"Rapporto di smorzamento per il filtro della compensazione della risonanza." msgid "Speed limitation" msgstr "Limitazione velocità" @@ -10696,29 +10754,42 @@ msgid "" " %s first layer %d %s, other layers %d %s\n" " %s max delta %d %s, current delta %d %s\n" msgstr "" +" - %s:\n" +" %s primo strato %d %s, altri strati %d %s\n" +" %s delta massimo %d %s, delta attuale %d %s\n" msgid "" "Some first-layer and other-layer temperature pairs exceed safety limits.\n" msgstr "" +"Alcune coppie di temperature del primo strato e di altri strati superano i " +"limiti di sicurezza.\n" msgid "" "\n" "Invalid pairs:\n" msgstr "" +"\n" +"Coppie non valide:\n" msgid "" "\n" "You can go back to edit values, or continue if this is intentional." msgstr "" +"\n" +"È possibile tornare indietro per modificare i valori, oppure continuare se " +"questa scelta è intenzionale." msgid "" "\n" "\n" "Continue anyway?" msgstr "" +"\n" +"\n" +"Continuare comunque?" msgid "Temperature Safety Check" -msgstr "" +msgstr "Controllo di sicurezza della temperatura" msgid "Continue" msgstr "Continua" @@ -10727,7 +10798,7 @@ msgid "Back" msgstr "Posteriore" msgid "Don't warn again for this preset" -msgstr "" +msgstr "Non inviare più avvisi per questo profilo" #, c-format, boost-format msgid "Left: %s" @@ -11046,7 +11117,7 @@ msgid "" "presets.\n" "Are you sure you want to continue?" msgstr "" -"La sincronizzazione dei filamenti AMS scarterà i profili filamento " +"La sincronizzazione dei filamenti AMS scarterà i profili di filamento " "modificati ma non salvati.\n" "Sei sicuro di voler continuare?" @@ -11148,7 +11219,7 @@ msgid "" "replaced with the mapped filament types and colors. This action cannot be " "undone." msgstr "" -"Dopo la sincronizzazione, i profili filamento e i colori del progetto " +"Dopo la sincronizzazione, i profili di filamento e i colori del progetto " "saranno sostituiti con i tipi e i colori dei filamenti mappati. Questa " "azione non può essere annullata." @@ -11241,15 +11312,15 @@ msgid "" "This is an expert-level setting, incorrect adjustment will likely lead to " "jams, extruder wheel grinding into filament etc." msgstr "" -"Per modellazione del filamento (o Ramming) si intende l'operazione di " -"estrusione effettuata appena prima di un cambio di filamento in una " -"stampante MM con estrusore singolo. Il suo scopo è quello di dare una forma " -"corretta all'estremità del filamento scaricato, in modo che non impedisca " -"l'inserimento del nuovo filamento e possa essere reinserito successivamente. " -"Questa fase è importante e i diversi materiali possono richiedere velocità " -"di estrusione diverse per ottenere una buona forma. Per questo motivo, le " -"velocità di estrusione nella fase di modellazione del filamento sono " -"regolabili.\n" +"Per Spinta del filamento (o Ramming) si intende l'operazione di estrusione " +"effettuata appena prima di un cambio di filamento in una stampante " +"multimateriale con estrusore singolo. Il suo scopo è quello di dare una " +"forma corretta all'estremità del filamento scaricato, in modo che non " +"impedisca l'inserimento del nuovo filamento e possa essere reinserito " +"successivamente. Questa fase è importante e i diversi materiali possono " +"richiedere velocità di estrusione diverse per ottenere una buona forma. Per " +"questo motivo, le velocità di estrusione nella fase di modellazione del " +"filamento sono regolabili.\n" "\n" "Si tratta di un'impostazione per esperti: una regolazione errata potrebbe " "causare inceppamenti, la macinazione del filamento da parte dell'ingranaggio " @@ -11314,11 +11385,16 @@ msgid "" "Native Wayland liveview requires the GStreamer GTK video sink. Please " "install the gtksink plugin for GStreamer, then restart OrcaSlicer." msgstr "" +"La funzione di visualizzazione in tempo reale nativa di Wayland richiede il " +"ricevitore video GTK di GStreamer. Installare il modulo gtksink per " +"GStreamer e riavviare OrcaSlicer." msgid "" "Failed to initialize the native Wayland GStreamer video sink. Please check " "your GStreamer GTK plugin installation." msgstr "" +"Impossibile inizializzare il ricevitore video nativo di Wayland GStreamer. " +"Verificare l'installazione del modulo GTK di GStreamer." msgid "" "Windows Media Player is required for this task! Do you want to enable " @@ -11361,6 +11437,8 @@ msgstr "" msgid "Cloud agent is not available. Please restart OrcaSlicer and try again." msgstr "" +"Il fornitore di servizi cloud non è disponibile. Riavviare OrcaSlicer e " +"riprovare." msgid "Bambu Network plug-in not detected." msgstr "Modulo di rete Bambu non rilevato." @@ -11541,7 +11619,7 @@ msgid "Zoom out" msgstr "Rimpicciolisci" msgid "Toggle printable for object/part" -msgstr "" +msgstr "Attiva/disattiva stampa per oggetto/parte" msgid "Switch between Prepare/Preview" msgstr "Passa tra Prepara e Anteprima" @@ -11635,7 +11713,7 @@ msgid "New version of Orca Slicer" msgstr "Nuova versione di OrcaSlicer" msgid "Check on Github" -msgstr "" +msgstr "Visualizza su GitHub" msgid "Skip this Version" msgstr "Salta questa versione" @@ -11787,8 +11865,8 @@ msgid "" msgstr "" "È stato rilevato un aggiornamento importante che deve essere eseguito prima " "che la stampa possa continuare. Si desidera aggiornare ora? È possibile " -"effettuare l'aggiornamento anche in un secondo momento da \"Aggiorna firmware" -"\"." +"effettuare l'aggiornamento anche in un secondo momento da \"Aggiorna " +"firmware\"." msgid "" "The firmware version is abnormal. Repairing and updating are required before " @@ -11805,13 +11883,13 @@ msgstr "Scheda di estensione" #, boost-format msgid "Split into %1% parts" -msgstr "" +msgstr "Dividere in %1% parti" msgid "Repair finished" msgstr "Riparazione completata" msgid "Repair failed" -msgstr "" +msgstr "Riparazione fallita" msgid "Repair canceled" msgstr "Riparazione annullata" @@ -11858,10 +11936,10 @@ msgstr "" "l'oggetto potrebbe avere una maglia poligonale difettosa" msgid "Process change extrusion role G-code" -msgstr "" +msgstr "G-code cambio ruolo estrusione processo" msgid "Filament change extrusion role G-code" -msgstr "" +msgstr "G-code cambio ruolo estrusione filamento" msgid "No object can be printed. Maybe too small" msgstr "Non è possibile stampare alcun oggetto. Potrebbe essere troppo piccolo" @@ -11895,15 +11973,19 @@ msgstr "" "La matrice dei volumi di spurgo non corrisponde alla dimensione corretta!" msgid "set_accel_and_jerk() is only supported by Klipper" -msgstr "" +msgstr "set_accel_and_jerk() è supportato solo da Klipper" msgid "" "Input shaping is not supported by Marlin < 2.1.2.\n" "Check your firmware version and update your G-code flavor to ´Marlin 2´" msgstr "" +"La compensazione della risonanza non è supportata da Marlin < 2.1.2.\n" +"Verifica la versione del firmware e aggiorna il G-code a ´Marlin 2´" msgid "Input shaping is only supported by Klipper, RepRapFirmware and Marlin 2" msgstr "" +"La compensazione della risonanza è supportata solo da Klipper, " +"RepRapFirmware e Marlin 2" msgid "Grouping error: " msgstr "Errore di raggruppamento: " @@ -12071,16 +12153,24 @@ msgid "" "temperature must fall within the recommended nozzle temperature range of the " "other filaments. Otherwise, nozzle clogging or printer damage may occur." msgstr "" +"Le temperature degli ugelli selezionate sono incompatibili. La temperatura " +"dell'ugello per ciascun filamento deve rientrare nell'intervallo di " +"temperatura consigliato per gli altri filamenti. In caso contrario, " +"potrebbero verificarsi ostruzioni degli ugelli o danni alla stampante." msgid "" "Invalid recommended nozzle temperature range. The lower bound must be lower " "than the upper bound." msgstr "" +"Intervallo di temperatura dell'ugello consigliato non valido. Il limite " +"inferiore deve essere minore del limite superiore." msgid "" "If you still want to print, you can enable the option in Preferences / " "Control / Slicing / Remove mixed temperature restriction." msgstr "" +"Se desideri comunque stampare, puoi abilitare l'opzione in Preferenze / " +"Controllo / Elaborazione / Rimuovi restrizione temperature miste." msgid "No extrusions under current settings." msgstr "Nessuna estrusione con le impostazioni attuali." @@ -12321,7 +12411,7 @@ msgid "" "each layer to prevent loss of floating point accuracy. Add \"G92 E0\" to " "layer_gcode." msgstr "" -"L'indirizzamento relativo dell'estrusore richiede la reimpostazione della " +"L'indirizzamento relativo dell'estrusore richiede il ripristino della " "posizione dell'estrusore ad ogni strato per evitare la perdita di precisione " "in virgola mobile. Aggiungi \"G92 E0\" a layer_gcode." @@ -12475,7 +12565,7 @@ msgstr "" "compensare l'effetto zampa d'elefante." msgid "Elephant foot compensation layers" -msgstr "Strato di compensazione zampa d'elefante" +msgstr "Strati compensazione zampa d'elefante" msgid "" "The number of layers on which the elephant foot compensation will be active. " @@ -12483,13 +12573,13 @@ msgid "" "the next layers will be linearly shrunk less, up to the layer indicated by " "this value." msgstr "" -"Il numero di strati su cui sarà attiva la compensazione della zampa " -"d'elefante. Il primo strato verrà ridotto in base al valore della " -"compensazione della zampa d'elefante, mentre gli strati successivi saranno " -"ridotti in modo lineare, fino allo strato indicato da questo parametro." +"Numero di strati su cui sarà attiva la compensazione della zampa d'elefante. " +"Il primo strato verrà ridotto in base al valore della compensazione della " +"zampa d'elefante, mentre gli strati successivi saranno ridotti in modo " +"lineare, fino allo strato indicato da questo parametro." msgid "Elephant foot layers density" -msgstr "" +msgstr "Densità strati zampa d'elefante" msgid "" "Density of internal solid infill for Elephant foot layers compensation.\n" @@ -12497,6 +12587,11 @@ msgid "" "Subsequent layers become linearly denser by the height specified in " "elefant_foot_compensation_layers." msgstr "" +"Densità del riempimento solido interno per gli strati di compensazione " +"dell'effetto zampa d'elefante.\n" +"Il valore iniziale è impostato per il secondo strato.\n" +"Gli strati successivi aumentano di densità in modo lineare in base " +"all'altezza specificata in elefant_foot_compensation_layers." msgid "" "Slicing height for each layer. Smaller layer height means more accurate and " @@ -13043,7 +13138,7 @@ msgstr "" "Diminuisci leggermente questo valore (ad esempio 0,9) per ridurre la " "quantità di filamento estruso per i ponti e tendere il materiale.\n" "\n" -"Il flusso effettivo utilizzato nei ponti viene calcolato moltiplicando " +"Il flusso di stampa effettivo per i ponti viene calcolato moltiplicando " "questo valore con il flusso di stampa del filamento e, se impostato, con il " "flusso di stampa dell'oggetto." @@ -13062,9 +13157,10 @@ msgstr "" "Questo valore regola lo spessore dello strato dei ponti interni. È il primo " "strato sopra il riempimento sparso. Ridurre leggermente questo valore (ad " "esempio 0,9) per migliorare la qualità della superficie sopra i riempimenti " -"radi.\n" -"Il flusso effettivo utilizzato nei ponti interni viene calcolato " -"moltiplicando questo valore con il flusso di stampa dei ponti, flusso di " +"sparsi.\n" +"\n" +"Il flusso di stampa effettivo utilizzato per i ponti interni viene calcolato " +"moltiplicando questo valore con il flusso di stampa dei ponti, il flusso di " "stampa del filamento e, se impostato, con il flusso di stampa dell'oggetto." msgid "Top surface flow ratio" @@ -13077,13 +13173,13 @@ msgid "" "The actual top surface flow used is calculated by multiplying this value " "with the filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Questo valore influenza la quantità di materiale utilizzata per il " +"Questo fattore influenza la quantità di materiale utilizzata per il " "riempimento solido della superficie superiore. Puoi diminuirlo leggermente " "per avere una finitura liscia sulla superficie.\n" "\n" -"Il flusso di stampa effettivo utilizzato nelle superfici superiori viene " -"calcolato moltiplicando questo valore con il flusso di stampa del filamento " -"e, se impostato, con il flusso di stampa dell'oggetto." +"Il flusso di stampa effettivo per le superfici superiori viene calcolato " +"moltiplicando questo valore con il flusso di stampa del filamento e, se " +"impostato, con il flusso di stampa dell'oggetto." msgid "Bottom surface flow ratio" msgstr "Flusso di stampa superficie inferiore" @@ -13094,12 +13190,12 @@ msgid "" "The actual bottom solid infill flow used is calculated by multiplying this " "value with the filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Questo valore influenza la quantità di materiale utilizzata per il " +"Questo fattore influenza la quantità di materiale utilizzata per il " "riempimento solido della superficie inferiore.\n" "\n" -"Il flusso di stampa effettivo utilizzato nelle superfici inferiori viene " -"calcolato moltiplicando questo valore con il flusso di stampa del filamento " -"e, se impostato, con il flusso di stampa dell'oggetto." +"Il flusso di stampa effettivo per le superfici inferiori viene calcolato " +"moltiplicando questo valore con il flusso di stampa del filamento e, se " +"impostato, con il flusso di stampa dell'oggetto." msgid "Set other flow ratios" msgstr "Imposta altri rapporti di flusso" @@ -13109,7 +13205,7 @@ msgstr "" "Modifica i rapporti di flusso per altri tipi di percorso di estrusione." msgid "First layer flow ratio" -msgstr "Rapporto di flusso primo strato" +msgstr "Flusso di stampa primo strato" msgid "" "This factor affects the amount of material on the first layer for the " @@ -13118,14 +13214,15 @@ msgid "" "For the first layer, the actual flow ratio for each path role (does not " "affect brims and skirts) will be multiplied by this value." msgstr "" -"Questo fattore influisce sulla quantità di materiale sul primo strato per i " -"ruoli del percorso di estrusione elencati in questa sezione.\n" +"Questo fattore influisce sulla quantità di materiale utilizzata sul primo " +"strato per i ruoli del percorso di estrusione elencati in questa sezione.\n" "\n" -"Per il primo strato, il rapporto di flusso effettivo per ogni ruolo del " -"percorso (non influisce su tese e gonne) sarà moltiplicato per questo valore." +"Per il primo strato, il flusso di stampa effettivo per ogni ruolo del " +"percorso di estrusione (non influisce su tese e gonne) sarà moltiplicato per " +"questo valore." msgid "Outer wall flow ratio" -msgstr "Rapporto di flusso parete esterna" +msgstr "Flusso di stampa pareti esterne" msgid "" "This factor affects the amount of material for outer walls.\n" @@ -13133,14 +13230,15 @@ msgid "" "The actual outer wall flow used is calculated by multiplying this value by " "the filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Questo fattore influisce sulla quantità di materiale per le pareti esterne.\n" +"Questo fattore influisce sulla quantità di materiale utilizzata per le " +"pareti esterne.\n" "\n" -"Il flusso effettivo della parete esterna viene calcolato moltiplicando " -"questo valore per il rapporto di flusso del filamento e, se impostato, per " -"il rapporto di flusso dell'oggetto." +"Il flusso di stampa effettivo per le pareti esterne viene calcolato " +"moltiplicando questo valore per il flusso di stampa del filamento e, se " +"impostato, per il flusso di stampa dell'oggetto." msgid "Inner wall flow ratio" -msgstr "Rapporto di flusso parete interna" +msgstr "Flusso di stampa pareti interne" msgid "" "This factor affects the amount of material for inner walls.\n" @@ -13148,14 +13246,15 @@ msgid "" "The actual inner wall flow used is calculated by multiplying this value by " "the filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Questo fattore influisce sulla quantità di materiale per le pareti interne.\n" +"Questo fattore influisce sulla quantità di materiale utilizzata per le " +"pareti interne.\n" "\n" -"Il flusso effettivo della parete interna viene calcolato moltiplicando " -"questo valore per il rapporto di flusso del filamento e, se impostato, per " -"il rapporto di flusso dell'oggetto." +"Il flusso di stampa effettivo per le pareti interne viene calcolato " +"moltiplicando questo valore per il flusso di stampa del filamento e, se " +"impostato, per il flusso di stampa dell'oggetto." msgid "Overhang flow ratio" -msgstr "Rapporto di flusso per sbalzi" +msgstr "Flusso di stampa sporgenze" msgid "" "This factor affects the amount of material for overhangs.\n" @@ -13163,14 +13262,15 @@ msgid "" "The actual overhang flow used is calculated by multiplying this value by the " "filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Questo fattore influisce sulla quantità di materiale per gli sbalzi.\n" +"Questo fattore influisce sulla quantità di materiale utilizzata per le " +"sporgenze.\n" "\n" -"Il flusso effettivo degli sbalzi viene calcolato moltiplicando questo valore " -"per il rapporto di flusso del filamento e, se impostato, per il rapporto di " -"flusso dell'oggetto." +"Il flusso di stampa effettivo per le sporgenze viene calcolato moltiplicando " +"questo valore per il flusso di stampa del filamento e, se impostato, per il " +"flusso di stampa dell'oggetto." msgid "Sparse infill flow ratio" -msgstr "Rapporto di flusso riempimento sparso" +msgstr "Flusso di stampa riempimento sparso" msgid "" "This factor affects the amount of material for sparse infill.\n" @@ -13178,15 +13278,15 @@ msgid "" "The actual sparse infill flow used is calculated by multiplying this value " "by the filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Questo fattore influisce sulla quantità di materiale per il riempimento " -"sparso.\n" +"Questo fattore influisce sulla quantità di materiale utilizzata per il " +"riempimento sparso.\n" "\n" -"Il flusso effettivo del riempimento sparso viene calcolato moltiplicando " -"questo valore per il rapporto di flusso del filamento e, se impostato, per " -"il rapporto di flusso dell'oggetto." +"Il flusso di stampa effettivo per il riempimento sparso viene calcolato " +"moltiplicando questo valore per il flusso di stampa del filamento e, se " +"impostato, per il flusso di stampa dell'oggetto." msgid "Internal solid infill flow ratio" -msgstr "Rapporto di flusso riempimento solido interno" +msgstr "Flusso di stampa riempimento solido interno" msgid "" "This factor affects the amount of material for internal solid infill.\n" @@ -13194,15 +13294,15 @@ msgid "" "The actual internal solid infill flow used is calculated by multiplying this " "value by the filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Questo fattore influisce sulla quantità di materiale per il riempimento " -"solido interno.\n" +"Questo fattore influisce sulla quantità di materiale utilizzata per il " +"riempimento solido interno.\n" "\n" -"Il flusso effettivo del riempimento solido interno viene calcolato " -"moltiplicando questo valore per il rapporto di flusso del filamento e, se " -"impostato, per il rapporto di flusso dell'oggetto." +"Il flusso di stampa effettivo per il riempimento solido interno viene " +"calcolato moltiplicando questo valore per il flusso di stampa del filamento " +"e, se impostato, per il flusso di stampa dell'oggetto." msgid "Gap fill flow ratio" -msgstr "Rapporto di flusso riempimento spazi" +msgstr "Flusso di stampa riempimento spazi" msgid "" "This factor affects the amount of material for filling the gaps.\n" @@ -13210,15 +13310,15 @@ msgid "" "The actual gap filling flow used is calculated by multiplying this value by " "the filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Questo fattore influisce sulla quantità di materiale per il riempimento " -"degli spazi.\n" +"Questo fattore influisce sulla quantità di materiale utilizzata per il " +"riempimento degli spazi vuoti.\n" "\n" -"Il flusso effettivo del riempimento spazi viene calcolato moltiplicando " -"questo valore per il rapporto di flusso del filamento e, se impostato, per " -"il rapporto di flusso dell'oggetto." +"Il flusso di stampa effettivo per il riempimento degli spazi vuoti viene " +"calcolato moltiplicando questo valore per il flusso di stampa del filamento " +"e, se impostato, per il flusso di stampa dell'oggetto." msgid "Support flow ratio" -msgstr "Rapporto di flusso supporto" +msgstr "Flusso di stampa supporti" msgid "" "This factor affects the amount of material for support.\n" @@ -13226,14 +13326,15 @@ msgid "" "The actual support flow used is calculated by multiplying this value by the " "filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Questo fattore influisce sulla quantità di materiale per il supporto.\n" +"Questo fattore influisce sulla quantità di materiale utilizzata per i " +"supporti.\n" "\n" -"Il flusso effettivo del supporto viene calcolato moltiplicando questo valore " -"per il rapporto di flusso del filamento e, se impostato, per il rapporto di " -"flusso dell'oggetto." +"Il flusso di stampa effettivo per i supporti viene calcolato moltiplicando " +"questo valore per il flusso di stampa del filamento e, se impostato, per il " +"flusso di stampa dell'oggetto." msgid "Support interface flow ratio" -msgstr "Rapporto di flusso interfaccia supporto" +msgstr "Flusso di stampa interfaccie supporti" msgid "" "This factor affects the amount of material for the support interface.\n" @@ -13241,12 +13342,12 @@ msgid "" "The actual support interface flow used is calculated by multiplying this " "value by the filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Questo fattore influisce sulla quantità di materiale per l'interfaccia di " -"supporto.\n" +"Questo fattore influisce sulla quantità di materiale utilizzata per le " +"interfacce dei supporti.\n" "\n" -"Il flusso effettivo dell'interfaccia di supporto viene calcolato " -"moltiplicando questo valore per il rapporto di flusso del filamento e, se " -"impostato, per il rapporto di flusso dell'oggetto." +"Il flusso di stampa effettivo per le interfacce dei supporti viene calcolato " +"moltiplicando questo valore per il flusso di stampa del filamento e, se " +"impostato, per il flusso di stampa dell'oggetto." msgid "Precise wall" msgstr "Parete precisa" @@ -13391,7 +13492,7 @@ msgid "Sacrificial layer" msgstr "Strato sacrificale" msgid "Reverse threshold" -msgstr "Soglia inversa" +msgstr "Soglia di inversione" msgid "Overhang reversal threshold" msgstr "Soglia di inversione sporgenze" @@ -13518,7 +13619,7 @@ msgstr "" "più facile la rimozione della tesa." msgid "Brim flow ratio" -msgstr "" +msgstr "Flusso di stampa tese" msgid "" "This factor affects the amount of material for brims.\n" @@ -13528,9 +13629,17 @@ msgid "" "\n" "Note: The resulting value will not be affected by the first-layer flow ratio." msgstr "" +"Questo valore influisce sulla quantità di materiale utilizzata per le tese.\n" +"\n" +"Il flusso di stampa effettivo per le tese viene calcolato moltiplicando " +"questo valore per il flusso di stampa del filamento e, se impostato, per il " +"flusso di stampa dell'oggetto.\n" +"\n" +"Nota: il valore risultante non sarà influenzato dal flusso di stampa del " +"primo strato." msgid "Brim follows compensated outline" -msgstr "Tesa segue il contorno compensato" +msgstr "Tesa su contorno con compensazione" msgid "" "When enabled, the brim is aligned with the first-layer perimeter geometry " @@ -13541,21 +13650,24 @@ msgid "" "If your current setup already works well, enabling it may be unnecessary and " "can cause the brim to fuse with upper layers." msgstr "" -"Quando abilitato, tesa è allineato con la geometria perimetrale del primo " -"strato dopo l'applicazione della compensazione del piede di elefante.\n" -"Questa opzione è prevista per i casi in cui è prevista la compensazione del " -"piede di elefante altera significativamente l'impronta del primo strato.\n" +"Se abilitata, la tesa viene allineata con il perimetro del primo strato dopo " +"l'applicazione della Compensazione della zampa d'elefante.\n" +"Questa opzione è pensata per i casi in cui la compensazione della zampa di " +"elefante altera significativamente le dimensioni del primo strato.\n" "\n" -"Se la tua configurazione attuale funziona già bene, abilitarla potrebbe non " -"essere necessaria e può causare la fusione del tesa con gli strati superiori." +"Se la tua configurazione attuale funziona in modo ottimale, non è necessario " +"abilitare questa opzione, in quanto potrebbe causare la fusione della tesa " +"con gli strati superiori." msgid "Combine brims" -msgstr "" +msgstr "Unisci tese" msgid "" "Combine multiple brims into one when they are close to each other. This can " "improve brim adhesion." msgstr "" +"Unisce più tese in una quando sono vicine tra loro. Questo può migliorare " +"l'adesione delle tese." msgid "Brim ears" msgstr "Tesa ad orecchio" @@ -13688,14 +13800,18 @@ msgstr "" msgid "" "Enable this to override the fan speed set in custom G-code during print." msgstr "" +"Abilita questa opzione per sovrascrivere la velocità della ventola impostata " +"nel G-code personalizzato durante la stampa." msgid "On completion" -msgstr "" +msgstr "Al completamento" msgid "" "Enable this to override the fan speed set in custom G-code after print " "completion." msgstr "" +"Abilita questa opzione per sovrascrivere la velocità della ventola impostata " +"nel G-code personalizzato una volta terminata la stampa." msgid "" "Speed of exhaust fan during printing. This speed will override the speed in " @@ -14130,6 +14246,13 @@ msgid "" "\n" "This option will be disabled if spiral vase mode is enabled." msgstr "" +"Direzione in cui vengono estrusi i perimetri di stampa, guardando dall'alto " +"verso il basso.\n" +"I fori vengono stampati nella direzione opposta ai perimetri, per mantenere " +"l'allineamento con gli strati i cui contorni sono incompleti e cambiano " +"direzione, formando parzialmente contorni di fori.\n" +"\n" +"Questa opzione verrà disabilitata se la modalità vaso a spirale è attiva." msgid "Counter clockwise" msgstr "Senso antiorario" @@ -14777,9 +14900,9 @@ msgid "" "this movement should be before the filament is retracted again." msgstr "" "Se impostato su un valore diverso da zero, il filamento viene spostato verso " -"l'ugello tra i singoli movimenti nei tubi di raffreddamento (\"timbratura" -"\"). Questa opzione configura la durata di questo movimento prima che il " -"filamento venga nuovamente retratto." +"l'ugello tra i singoli movimenti nei tubi di raffreddamento " +"(\"timbratura\"). Questa opzione configura la durata di questo movimento " +"prima che il filamento venga nuovamente retratto." msgid "Speed of the first cooling move" msgstr "Velocità del primo movimento di raffreddamento" @@ -14807,10 +14930,11 @@ msgstr "" "oggetti sacrificali o riempimenti." msgid "Wipe tower cooling" -msgstr "" +msgstr "Raffreddamento torre di spurgo" msgid "Temperature drop before entering filament tower" msgstr "" +"Calo di temperatura prima dell'ingresso nella torre di spurgo del filamento" msgid "Interface layer pre-extrusion distance" msgstr "Distanza di pre-estrusione dello strato di interfaccia" @@ -14880,7 +15004,7 @@ msgid "" "This string is edited by RammingDialog and contains ramming specific " "parameters." msgstr "" -"Questa stringa è stata modifcata da RammingDialog e contiene parametri " +"Questa stringa è stata modificata da RammingDialog e contiene parametri " "specifici per l'operazione di modellazione della punta del filamento." msgid "Enable ramming for multi-tool setups" @@ -15264,12 +15388,14 @@ msgstr "" "inferiore, è possibile migliorare l'adesione sul piano di stampa." msgid "First layer travel" -msgstr "" +msgstr "Spostamento primo strato" msgid "" "Travel acceleration of first layer.\n" "The percentage value is relative to Travel Acceleration." msgstr "" +"Accelerazione dello spostamento nel primo strato.\n" +"Il valore percentuale è relativo all'accelerazione dello spostamento." msgid "Enable accel_to_decel" msgstr "Abilita accel_to_decel" @@ -15323,6 +15449,8 @@ msgid "" "Travel jerk of first layer.\n" "The percentage value is relative to Travel Jerk." msgstr "" +"Scatto dello spostamento nel primo strato.\n" +"Il valore percentuale è relativo allo scatto dello spostamento." msgid "" "Line width of the first layer. If expressed as a %, it will be computed over " @@ -15379,21 +15507,21 @@ msgstr "" "Temperatura dell'ugello per la stampa del primo strato con questo filamento." msgid "Full fan speed at layer" -msgstr "Velocità massima della ventola su strato" +msgstr "Velocità massima ventola su strato" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "La velocità della ventola aumenterà in modo lineare da zero nello strato " "\"close_fan_the_first_x_layers\" al massimo nello strato " "\"full_fan_speed_layer\". Se inferiore a \"close_fan_the_first_x_layers\", " "\"full_fan_speed_layer\" verrà ignorato. in tal caso la ventola funzionerà " -"alla massima velocità consentita nello strato \"close_fan_the_first_x_layers" -"\" + 1." +"alla massima velocità consentita nello strato " +"\"close_fan_the_first_x_layers\" + 1." msgid "layer" msgstr "strato" @@ -15617,6 +15745,17 @@ msgid "" "Ripple: Uniform ripple pattern that ripples left and right of the original " "path. Repeating pattern, woven appearance." msgstr "" +"Tipo di rumore da utilizzare per la generazione della superficie ruvida:\n" +"Classico: rumore casuale uniforme classico.\n" +"Perlin: rumore Perlin, che conferisce una trama più uniforme.\n" +"Ondulato: Simile al rumore Perlin, ma più granuloso.\n" +"Multifrattale ruvido: rumore con superfici nette e frastagliate. Crea trame " +"simili al marmo.\n" +"Voronoi: divide la superficie in tassellazioni di Voronoi e ne sposta " +"ciascuna di una quantità casuale. Crea una trama a mosaico.\n" +"Increspature: Motivo con onde uniformi che si propagano a sinistra e a " +"destra del percorso originale. Motivo ripetuto, aspetto in stile tessuto " +"intrecciato." msgid "Classic" msgstr "Classico" @@ -15628,13 +15767,13 @@ msgid "Billow" msgstr "Ondulato" msgid "Ridged Multifractal" -msgstr "Multifrattale increspato" +msgstr "Multifrattale ruvido" msgid "Voronoi" msgstr "Voronoi" msgid "Ripple" -msgstr "" +msgstr "Increspature" msgid "Fuzzy skin feature size" msgstr "Dimensione struttura superficie ruvida" @@ -15667,13 +15806,15 @@ msgstr "" "daranno luogo a un rumore più uniforme." msgid "Number of ripples per layer" -msgstr "" +msgstr "Numero increspature per strato" msgid "Controls how many full cycles of ripples will be added per layer." msgstr "" +"Controlla quanti cicli completi di increspature verranno aggiunti per ogni " +"strato." msgid "Ripple offset" -msgstr "" +msgstr "Deviazione increspature" msgid "" "Shifts the ripple phase forward along the print path by the specified " @@ -15687,9 +15828,20 @@ msgid "" "The shift is applied once every number of layers set by Layers between " "ripple offset, so layers within the same group are printed identically." msgstr "" +"Sposta in avanti la fase dell'increspatura, lungo il percorso di stampa, " +"della percentuale specificata di lunghezza d'onda.\n" +"- 0% mantieni ogni strato identico.\n" +"- 50% sposta il motivo di mezza lunghezza d'onda, invertendo di fatto la " +"fase.\n" +"- 100% sposta il motivo di un'intera lunghezza d'onda, tornando alla fase " +"originale.\n" +"\n" +"Lo spostamento viene applicato una volta ogni numero di strati impostato " +"nell'opzione \"Strati deviazione increspature\", in modo che gli strati " +"all'interno dello stesso gruppo vengano stampati in modo identico." msgid "Layers between ripple offset" -msgstr "" +msgstr "Strati deviazione increspature" msgid "" "Specifies how many consecutive layers share the same ripple phase before the " @@ -15702,6 +15854,15 @@ msgid "" "to 6 are shifted by the configured offset, then layers 7 to 9 return to the " "base pattern, etc." msgstr "" +"Specifica quanti strati consecutivi condividono la stessa fase di " +"increspatura prima che venga applicata la deviazione.\n" +"Per esempio:\n" +"- 1 = lo strato 1 viene stampato con il motivo di increspatura di base, lo " +"strato 2 viene spostato in base alla deviazione configurata, lo strato 3 " +"ritorna al motivo di base e così via.\n" +"- 3 = Gli strati da 1 a 3 vengono stampati con il motivo di increspatura di " +"base, gli strati da 4 a 6 vengono spostati in base alla deviazione " +"configurata, gli strati da 7 a 9 ritornano al motivo di base e così via." msgid "Filter out tiny gaps" msgstr "Filtra piccoli spazi vuoti" @@ -15895,7 +16056,7 @@ msgid "Will only take into account the delay for the cooling of overhangs." msgstr "Terrà conto solo del ritardo per il raffreddamento delle sporgenze." msgid "Fan kick-start time" -msgstr "Tempo di avvio della ventola" +msgstr "Tempo avvio ventola" msgid "" "Emit a max fan speed command for this amount of seconds before reducing to " @@ -16370,7 +16531,7 @@ msgid "Print speed of ironing lines." msgstr "Indica la velocità di stampa per le linee di stiratura." msgid "Ironing angle offset" -msgstr "Offset angolo di stiratura" +msgstr "Angolo di stiratura" msgid "The angle of ironing lines offset from the top surface." msgstr "L'angolo delle linee di stiratura rispetto alla superficie superiore." @@ -16382,42 +16543,53 @@ msgid "Use a fixed absolute angle for ironing." msgstr "Usa un angolo assoluto fisso per la stiratura." msgid "Ironing expansion" -msgstr "" +msgstr "Espansione stiratura" msgid "Expand or contract the ironing area." -msgstr "" +msgstr "Espande o riduce l'area di stiratura." msgid "Z contouring enabled" -msgstr "" +msgstr "Contornatura Z abilitata" msgid "Enable Z-layer contouring (aka Z-layer anti-aliasing)." msgstr "" +"Abilita la contornatura degli strati sull'asse Z (noto anche come anti-" +"aliasing dell'asse Z)." msgid "Minimize wall height angle" -msgstr "" +msgstr "Riduci altezza su pareti inclinate" msgid "" "Reduce the height of top-surface perimeters to match the model edge height.\n" "Affects perimeters with a slope less than this angle (degrees).\n" "A reasonable value is 35. Set to 0 to disable." msgstr "" +"Riduce l'altezza dei perimetri della superficie superiore in modo che si " +"adattino meglio al bordo del modello\n" +"Influisce sui perimetri con una pendenza inferiore a questo angolo (in " +"gradi).\n" +"Il valore consigliato è 35. Impostare a 0 per disabilitare questa funzione." msgid "°" msgstr "°" msgid "Don't alternate fill direction" -msgstr "" +msgstr "Non alternare direzione riempimento" msgid "Disable alternating fill direction when using Z contouring." msgstr "" +"Disabilita il riempimento a direzione alternata quando si utilizza l'opzione " +"\"Contornatura Z\"." msgid "Minimum z height" -msgstr "" +msgstr "Altezza Z minima" msgid "" "Minimum Z-layer height.\n" "Also controls the slicing plane." msgstr "" +"Altezza minima dello strato sull'asse Z.\n" +"Controlla anche il piano per l'elaborazione." msgid "This G-code is inserted at every layer change after the Z lift." msgstr "" @@ -16599,16 +16771,17 @@ msgstr "" "Marlin 2." msgid "Resonance avoidance" -msgstr "Evitamento della risonanza" +msgstr "Prevenzione risonanza" msgid "" "By reducing the speed of the outer wall to avoid the resonance zone of the " "printer, ringing on the surface of the model are avoided.\n" "Please turn this option off when testing ringing." msgstr "" -"Riducendo la velocità della parete esterna per evitare la zona di risonanza " -"della stampante, si evitano le ondulazioni sulla superficie del modello.\n" -"Disattivare questa opzione quando si testa il ringing." +"Riducendo la velocità nelle pareti esterne per evitare la zona di risonanza " +"della stampante, si evitano le ondulazioni o ronzii (ringing) sulla " +"superficie del modello.\n" +"Disattivare questa opzione quando si testa il ronzio ." msgid "Min" msgstr "Minimo" @@ -16623,12 +16796,14 @@ msgid "Maximum speed of resonance avoidance." msgstr "Velocità massima per l'evitamento della risonanza." msgid "Emit input shaping" -msgstr "" +msgstr "Sovrascrivi compensazione risonanza" msgid "" "Override firmware input shaping settings.\n" "If disabled, firmware settings are used." msgstr "" +"Sovrascrivi le impostazioni di compensazione della risonanza del firmware.\n" +"Se disabilitato, verranno utilizzate le impostazioni del firmware." msgid "Input shaper type" msgstr "Tipo di compensazione della risonanza" @@ -16638,42 +16813,44 @@ msgid "" "Default uses the firmware default settings.\n" "Disable turns off input shaping in the firmware." msgstr "" +"Seleziona l'algoritmo di compensazione della risonanza.\n" +"L'opzione \"Default\" utilizza le impostazioni predefinite del firmware." msgid "MZV" -msgstr "" +msgstr "MZV" msgid "ZV" -msgstr "" +msgstr "ZV" msgid "ZVD" -msgstr "" +msgstr "ZVD" msgid "ZVDD" -msgstr "" +msgstr "ZVDD" msgid "ZVDDD" -msgstr "" +msgstr "ZVDDD" msgid "EI" -msgstr "" +msgstr "EI" msgid "EI2" -msgstr "" +msgstr "EI2" msgid "2HUMP_EI" -msgstr "" +msgstr "2HUMP_EI" msgid "EI3" -msgstr "" +msgstr "EI3" msgid "3HUMP_EI" -msgstr "" +msgstr "3HUMP_EI" msgid "DAA" -msgstr "" +msgstr "DAA" msgid "X" -msgstr "" +msgstr "X" msgid "" "Resonant frequency for the X axis input shaper.\n" @@ -16681,15 +16858,26 @@ msgid "" "To disable input shaping, use the Disable type.\n" "RRF: X and Y values are equal." msgstr "" +"Frequenza di risonanza per la compensazione sull'asse X.\n" +"Se impostato a zero, verranno utilizzate le impostazioni di frequenza del " +"firmware.\n" +"Per disabilitare la compensazione della risonanza, selezionare il tipo " +"\"Disabilita\".\n" +"RRF: i valori X e Y sono uguali." msgid "Y" -msgstr "" +msgstr "Y" msgid "" "Resonant frequency for the Y axis input shaper.\n" "Zero will use the firmware frequency.\n" "To disable input shaping, use the Disable type." msgstr "" +"Frequenza di risonanza per la compensazione sull'asse Y.\n" +"Se impostato a zero, verranno utilizzate le impostazioni di frequenza del " +"firmware.\n" +"Per disabilitare la compensazione della risonanza, selezionare il tipo " +"\"Disabilita\"." msgid "" "Damping ratio for the X axis input shaper.\n" @@ -16697,12 +16885,23 @@ msgid "" "To disable input shaping, use the Disable type.\n" "RRF: X and Y values are equal." msgstr "" +"Rapporto di smorzamento per la compensazione della risonanza sull'asse X.\n" +"Se impostato a zero, verranno utilizzate le impostazioni di rapporto di " +"smorzamento del firmware.\n" +"Per disabilitare la compensazione della risonanza, selezionare il tipo " +"\"Disabilita\".\n" +"RRF: i valori X e Y sono uguali." msgid "" "Damping ratio for the Y axis input shaper.\n" "Zero will use the firmware damping ratio.\n" "To disable input shaping, use the Disable type." msgstr "" +"Rapporto di smorzamento per la compensazione della risonanza sull'asse Y.\n" +"Se impostato a zero, verranno utilizzate le impostazioni di rapporto di " +"smorzamento del firmware.\n" +"Per disabilitare la compensazione della risonanza, selezionare il tipo " +"\"Disabilita\"." msgid "" "Part cooling fan speed may be increased when auto cooling is enabled. This " @@ -16840,10 +17039,12 @@ msgstr "" "utilizzare questa funzione. Comando G-code: M106 P2 S(0-255)" msgid "For the first" -msgstr "" +msgstr "Per il primo" msgid "Set special auxiliary cooling fan for the first certain layers." msgstr "" +"Imposta la ventola di raffreddamento ausiliaria per i primi strati " +"specificati." msgid "" "Auxiliary fan speed will be ramped up linearly from layer \"For the first\" " @@ -16852,10 +17053,18 @@ msgid "" "in which case the fan will run at maximum allowed speed at layer \"For the " "first\" + 1." msgstr "" +"La velocità della ventola ausiliaria aumenterà linearmente da \"Per il " +"primo\" fino al valore massimo impostato su \"Velocità massima ventola su " +"strato\".\n" +"Il valore \"Velocità massima ventola su strato\" verrà ignorato se inferiore " +"a \"Per il primo\"; in tal caso, la ventola funzionerà alla velocità massima " +"consentita con il valore \"Per il primo\" + 1." msgid "" "Special auxiliary cooling fan speed, effective only for the first x layers." msgstr "" +"Velocità della ventola di raffreddamento ausiliaria, operativa solo per i " +"primi x strati." msgid "" "The lowest printable layer height for the extruder. Used to limit the " @@ -17094,12 +17303,15 @@ msgstr "" "OrcaSlicer leggendo le variabili di ambiente." msgid "Change extrusion role G-code (process)" -msgstr "" +msgstr "Modifica G-code ruolo di estrusione (processo)" msgid "" "This G-code is inserted when the extrusion role is changed. It runs after " "the machine and filament extrusion role G-code." msgstr "" +"Questo G-code viene inserito quando si effettua il cambio del ruolo di " +"estrusione. Viene eseguito dopo il G-code della macchina e del ruolo di " +"estrusione del filamento." msgid "Printer type" msgstr "Tipo stampante" @@ -17944,7 +18156,7 @@ msgstr "" "l'azione di cambio filamento manuale." msgid "Wipe tower type" -msgstr "Tipo di torre di pulizia" +msgstr "Tipo di torre di spurgo" msgid "" "Choose the wipe tower implementation for multi-material prints. Type 1 is " @@ -18107,10 +18319,11 @@ msgstr "" "sbalzi, ecc." msgid "Ignore small overhangs" -msgstr "Ignora sbalzi piccoli" +msgstr "Ignora piccole sporgenze" msgid "Ignore small overhangs that possibly don't require support." -msgstr "Ignora i piccoli sbalzi che potrebbero non richiedere supporto." +msgstr "" +"Ignora le piccole sporgenze che potrebbero non necessitare dei supporti." msgid "Top Z distance" msgstr "Distanza Z superiore" @@ -18330,15 +18543,18 @@ msgid "Threshold angle" msgstr "Angolo di soglia" msgid "" -"Support will be generated for overhangs whose slope angle is below the threshold. " -"The smaller this value is, the steeper the overhang that can be printed without support.\n" -"Note: If set to 0, normal supports use the Threshold overlap instead, " -"while tree supports fall back to a default value of 30." +"Support will be generated for overhangs whose slope angle is below the " +"threshold. The smaller this value is, the steeper the overhang that can be " +"printed without support.\n" +"Note: If set to 0, normal supports use the Threshold overlap instead, while " +"tree supports fall back to a default value of 30." msgstr "" -"I supporti verranno generati per gli sbalzi il cui angolo di inclinazione è inferiore alla soglia." -"Più piccolo è questo valore, più ripido sarà lo sbalzo che può essere stampato senza supporto.\n" -"Nota: se impostato su 0, i supporti normali useranno invece Soglia sovrapposizione, " -"mentre i supporti ad albero torneranno al valore predefinito di 30." +"I supporti verranno generati per le sporgenze il cui angolo di inclinazione " +"è inferiore a questa soglia. Più piccolo è questo valore, più ripide saranno " +"le sporgenze stampabili senza supporti.\n" +"Nota: se impostato a 0, i supporti normali useranno il valore specificato in " +"\"Soglia sovrapposizione\", mentre i supporti ad albero torneranno al valore " +"predefinito di 30." msgid "Threshold overlap" msgstr "Soglia sovrapposizione" @@ -18350,8 +18566,8 @@ msgid "" msgstr "" "Se l'angolo di soglia è zero, i supporti verranno generati per le sporgenze " "la cui sovrapposizione è al di sotto della soglia. Quanto più piccolo è " -"questo valore, tanto più ripida sarà la sporgenza che può essere stampata " -"senza supporto." +"questo valore, tanto più ripide saranno le sporgenze stampabili senza " +"supporti." msgid "Tree support branch angle" msgstr "Angolo rami supporti ad albero" @@ -18509,8 +18725,8 @@ msgstr "Attiva controllo della temperatura" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the \"machine_start_gcode" -"\"\n" +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present.\n" @@ -18598,12 +18814,14 @@ msgstr "" "Questo gcode viene inserito quando viene modificato il ruolo di estrusione." msgid "Change extrusion role G-code (filament)" -msgstr "" +msgstr "Modifica G-code ruolo di estrusione (filamento)" msgid "" "This G-code is inserted when the extrusion role is changed for the active " "filament." msgstr "" +"Questo G-code viene inserito quando si effettua il cambio del ruolo di " +"estrusione per il filamento attivo." msgid "" "Line width for top surfaces. If expressed as a %, it will be computed over " @@ -19217,15 +19435,18 @@ msgstr "" "singola." msgid "Maximum wall resolution" -msgstr "" +msgstr "Risoluzione massima parete" msgid "" "This value determines the smallest wall line segment length in mm. The " "smaller you set this value, the more accurate and precise the walls will be." msgstr "" +"Questo valore determina la lunghezza minima del segmento di linea della " +"parete, in mm. Più piccolo è il valore impostato, più accurate e precise " +"saranno le pareti." msgid "Maximum wall deviation" -msgstr "" +msgstr "Deviazione massima parete" msgid "" "The maximum deviation allowed when reducing the resolution for the 'Maximum " @@ -19234,6 +19455,11 @@ msgid "" "'Maximum wall resolution', so if the two conflict, 'Maximum wall deviation' " "takes precedence." msgstr "" +"Deviazione massima consentita quando si riduce la risoluzione tramite " +"l'impostazione \"Risoluzione massima parete\". Se si aumenta questo valore, " +"la stampa sarà meno precisa, ma il G-Code sarà più contenuto. \"Deviazione " +"massima parete\" limita \"Risoluzione massima parete\", quindi in caso di " +"conflitto tra i due valori, \"Deviazione massima parete\" ha la precedenza." msgid "First layer minimum wall width" msgstr "Larghezza minima parete del primo strato" @@ -20023,7 +20249,7 @@ msgid "Generating infill toolpath" msgstr "Generazione percorso testina per riempimento" msgid "Z contouring" -msgstr "" +msgstr "Contornatura Z" msgid "Detect overhangs for auto-lift" msgstr "Rilevamento sporgenze per il sollevamento automatico" @@ -20660,6 +20886,11 @@ msgid "" "temperature range of the other filaments. Otherwise, nozzle clogging or " "printer damage may occur." msgstr "" +"Le temperature degli ugelli selezionate sono incompatibili. Per la stampa " +"multimateriale, la temperatura dell'ugello per ciascun filamento deve " +"rientrare nell'intervallo di temperatura consigliato per gli altri " +"filamenti. In caso contrario, potrebbero verificarsi ostruzioni degli ugelli " +"o danni alla stampante." msgid "Sync AMS and nozzle information" msgstr "Sincronizza informazioni AMS e ugello" @@ -21090,25 +21321,25 @@ msgid "NOTE: High values may cause Layer shift (>%s)" msgstr "NOTA: valori elevati possono causare spostamento degli strati (>%s)" msgid "Flow Ratio Calibration" -msgstr "" +msgstr "Calibrazione flusso di stampa" msgid "Calibration Test Type" -msgstr "" +msgstr "Tipo test calibrazione" msgid "Pass 1 (Coarse)" -msgstr "" +msgstr "Passaggio 1 (Impreciso)" msgid "Pass 2 (Fine)" -msgstr "" +msgstr "Passaggio 2 (Fine)" msgid "YOLO (Recommended)" msgstr "YOLO (Consigliato)" msgid "YOLO (Perfectionist)" -msgstr "" +msgstr "YOLO (Perfezionista)" msgid "Top Surface Pattern" -msgstr "" +msgstr "Motivo superficie superiore" msgid "Send G-code to printer host" msgstr "Invia G-code all'host di stampa" @@ -21378,12 +21609,12 @@ msgstr "" "Vuoi riscriverlo?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\".\n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\".\n" "To add preset for more printers, please go to printer selection" msgstr "" -"Rinomineremo i profili come \"Produttore Tipo Seriale @stampante selezionata" -"\".\n" +"Rinomineremo i profili come \"Produttore Tipo Seriale @stampante " +"selezionata\".\n" "Per aggiungere il profilo per più stampanti, vai alla selezione della " "stampante" @@ -21505,7 +21736,7 @@ msgstr "" "Il nome del profilo della stampante che hai creato esiste già. Vuoi " "sovrascriverlo?\n" "\tSì: Sovrascrivi il profilo della stampante con lo stesso nome, e i profili " -"del filamento e del processo con lo stesso nome saranno ricreati,\n" +"di filamento e di processo con lo stesso nome saranno ricreati,\n" "mentre gli altri saranno conservati.\n" "\tAnnulla: Non creare un profilo, torna alla pagina di creazione." @@ -21626,7 +21857,7 @@ msgid "Printer presets(.zip)" msgstr "Profili stampante (.zip)" msgid "Filament presets(.zip)" -msgstr "Profili filamento (.zip)" +msgstr "Profili di filamento (.zip)" msgid "Process presets(.zip)" msgstr "Profili di processo (.zip)" @@ -22738,7 +22969,7 @@ msgid "Global settings" msgstr "Impostazioni globali" msgid "Video tutorial" -msgstr "" +msgstr "Video tutorial" msgid "(Sync with printer)" msgstr "(Sincronizza con stampante)" @@ -23017,7 +23248,7 @@ msgid "" "Generic filament presets will be used." msgstr "" "Il filamento potrebbe non essere compatibile con le impostazioni correnti " -"della macchina. Verranno utilizzati i profili filamento generici." +"della macchina. Verranno utilizzati i profili di filamento generici." msgid "" "The filament model is unknown. Still using the previous filament preset." @@ -23027,7 +23258,7 @@ msgstr "" msgid "The filament model is unknown. Generic filament presets will be used." msgstr "" -"Il modello di filamento è sconosciuto. Verranno utilizzati i profili " +"Il modello di filamento è sconosciuto. Verranno utilizzati i profili di " "filamento generici." msgid "" @@ -25417,12 +25648,13 @@ msgstr "" #~ "nostro wiki.\n" #~ "\n" #~ "Di solito la calibrazione non è necessaria. Quando si avvia una stampa a " -#~ "singolo colore/materiale, con l'opzione \"calibrazione dinamica del flusso" -#~ "\" selezionata nel menu di avvio della stampa, la stampante seguirà il " -#~ "vecchio modo, calibrando il filamento prima della stampa; Quando si avvia " -#~ "una stampa multicolore/materiale, la stampante utilizzerà il parametro di " -#~ "compensazione predefinito per il filamento durante ogni cambio di " -#~ "filamento, che avrà un buon risultato nella maggior parte dei casi.\n" +#~ "singolo colore/materiale, con l'opzione \"calibrazione dinamica del " +#~ "flusso\" selezionata nel menu di avvio della stampa, la stampante seguirà " +#~ "il vecchio modo, calibrando il filamento prima della stampa; Quando si " +#~ "avvia una stampa multicolore/materiale, la stampante utilizzerà il " +#~ "parametro di compensazione predefinito per il filamento durante ogni " +#~ "cambio di filamento, che avrà un buon risultato nella maggior parte dei " +#~ "casi.\n" #~ "\n" #~ "Si prega di notare che ci sono alcuni casi che renderanno il risultato " #~ "della calibrazione non affidabile: utilizzo di una piastra di texture per " From 054a173af76e796ab6b6cfa57d59974d09cefcc7 Mon Sep 17 00:00:00 2001 From: yw4z Date: Mon, 18 May 2026 19:00:48 +0300 Subject: [PATCH 08/26] Fix possible crash on startup because of low max volumetric speed on profiles (#13716) * Update fdm_filament_common.json * update * Update fdm_filament_common.json --- resources/profiles/Afinia/filament/fdm_filament_common.json | 2 +- resources/profiles/Anycubic/filament/fdm_filament_common.json | 2 +- resources/profiles/Artillery/filament/fdm_filament_common.json | 2 +- resources/profiles/BBL/filament/fdm_filament_common.json | 2 +- resources/profiles/Blocks/filament/fdm_filament_common.json | 2 +- .../profiles/CONSTRUCT3D/filament/fdm_filament_common.json | 2 +- resources/profiles/CoLiDo/filament/fdm_filament_common.json | 2 +- resources/profiles/Comgrow/filament/fdm_filament_common.json | 2 +- resources/profiles/Creality/filament/fdm_filament_common.json | 2 +- resources/profiles/Cubicon/filament/fdm_filament_common.json | 2 +- resources/profiles/DeltaMaker/filament/fdm_filament_pet.json | 2 +- resources/profiles/DeltaMaker/filament/fdm_filament_pla.json | 2 +- resources/profiles/DeltaMaker/filament/fdm_filament_tpu.json | 2 +- resources/profiles/Dremel/filament/fdm_filament_common.json | 2 +- resources/profiles/Elegoo/filament/fdm_filament_common.json | 2 +- resources/profiles/Eryone/filament/fdm_filament_common.json | 2 +- resources/profiles/FLSun/filament/fdm_filament_common.json | 2 +- resources/profiles/Flashforge/filament/fdm_filament_common.json | 2 +- resources/profiles/Flashforge/filament/fdm_filament_pet.json | 2 +- resources/profiles/Flashforge/filament/fdm_filament_pla.json | 2 +- .../FlyingBear/filament/Ghost7/fdm_filament_common_Ghost7.json | 2 +- .../profiles/FlyingBear/filament/S1/fdm_filament_common_S1.json | 2 +- resources/profiles/FlyingBear/filament/fdm_filament_common.json | 2 +- .../InfiMech/filament/EX+APS/fdm_filament_common_EX+APS.json | 2 +- .../profiles/InfiMech/filament/EX/fdm_filament_common_EX.json | 2 +- .../profiles/InfiMech/filament/HSN/fdm_filament_common_HSN.json | 2 +- resources/profiles/InfiMech/filament/fdm_filament_common.json | 2 +- resources/profiles/LH/filament/fdm_filament_common.json | 2 +- resources/profiles/LONGER/filament/fdm_filament_common.json | 2 +- resources/profiles/OrcaArena/filament/fdm_filament_common.json | 2 +- .../OrcaFilamentLibrary/filament/base/fdm_filament_common.json | 2 +- resources/profiles/Peopoly/filament/fdm_filament_common.json | 2 +- resources/profiles/Phrozen/filament/fdm_filament_common.json | 2 +- resources/profiles/Prusa/filament/fdm_filament_common.json | 2 +- resources/profiles/Qidi/filament/fdm_filament_common.json | 2 +- resources/profiles/Ratrig/filament/fdm_filament_common.json | 2 +- resources/profiles/SecKit/filament/fdm_filament_common.json | 2 +- resources/profiles/Snapmaker/filament/fdm_filament_common.json | 2 +- resources/profiles/Tiertime/filament/fdm_filament_common.json | 2 +- resources/profiles/Vzbot/filament/fdm_filament_common.json | 2 +- .../profiles/Wanhao France/filament/fdm_filament_common.json | 2 +- .../profiles/WonderMaker/filament/fdm_filament_common.json | 2 +- resources/profiles/re3D/filament/fdm_filament_common.json | 2 +- 43 files changed, 43 insertions(+), 43 deletions(-) diff --git a/resources/profiles/Afinia/filament/fdm_filament_common.json b/resources/profiles/Afinia/filament/fdm_filament_common.json index dd89148ec9..94ed0997ee 100644 --- a/resources/profiles/Afinia/filament/fdm_filament_common.json +++ b/resources/profiles/Afinia/filament/fdm_filament_common.json @@ -61,7 +61,7 @@ "nil" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/Anycubic/filament/fdm_filament_common.json b/resources/profiles/Anycubic/filament/fdm_filament_common.json index 868a8418e6..2949245a6e 100644 --- a/resources/profiles/Anycubic/filament/fdm_filament_common.json +++ b/resources/profiles/Anycubic/filament/fdm_filament_common.json @@ -58,7 +58,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/Artillery/filament/fdm_filament_common.json b/resources/profiles/Artillery/filament/fdm_filament_common.json index f8aa522eb2..abf727c392 100644 --- a/resources/profiles/Artillery/filament/fdm_filament_common.json +++ b/resources/profiles/Artillery/filament/fdm_filament_common.json @@ -58,7 +58,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/BBL/filament/fdm_filament_common.json b/resources/profiles/BBL/filament/fdm_filament_common.json index 69fb92a4ec..caa037c74b 100644 --- a/resources/profiles/BBL/filament/fdm_filament_common.json +++ b/resources/profiles/BBL/filament/fdm_filament_common.json @@ -97,7 +97,7 @@ "nil" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_ramming_volumetric_speed": [ "-1" diff --git a/resources/profiles/Blocks/filament/fdm_filament_common.json b/resources/profiles/Blocks/filament/fdm_filament_common.json index 205c0d3075..9294e67f0f 100644 --- a/resources/profiles/Blocks/filament/fdm_filament_common.json +++ b/resources/profiles/Blocks/filament/fdm_filament_common.json @@ -64,7 +64,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/CONSTRUCT3D/filament/fdm_filament_common.json b/resources/profiles/CONSTRUCT3D/filament/fdm_filament_common.json index fc6dba4016..bf2a52192b 100644 --- a/resources/profiles/CONSTRUCT3D/filament/fdm_filament_common.json +++ b/resources/profiles/CONSTRUCT3D/filament/fdm_filament_common.json @@ -64,7 +64,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/CoLiDo/filament/fdm_filament_common.json b/resources/profiles/CoLiDo/filament/fdm_filament_common.json index 996fd8412b..ab6956a1a4 100644 --- a/resources/profiles/CoLiDo/filament/fdm_filament_common.json +++ b/resources/profiles/CoLiDo/filament/fdm_filament_common.json @@ -67,7 +67,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/Comgrow/filament/fdm_filament_common.json b/resources/profiles/Comgrow/filament/fdm_filament_common.json index 205c0d3075..9294e67f0f 100644 --- a/resources/profiles/Comgrow/filament/fdm_filament_common.json +++ b/resources/profiles/Comgrow/filament/fdm_filament_common.json @@ -64,7 +64,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/Creality/filament/fdm_filament_common.json b/resources/profiles/Creality/filament/fdm_filament_common.json index 205c0d3075..9294e67f0f 100644 --- a/resources/profiles/Creality/filament/fdm_filament_common.json +++ b/resources/profiles/Creality/filament/fdm_filament_common.json @@ -64,7 +64,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/Cubicon/filament/fdm_filament_common.json b/resources/profiles/Cubicon/filament/fdm_filament_common.json index 205c0d3075..9294e67f0f 100644 --- a/resources/profiles/Cubicon/filament/fdm_filament_common.json +++ b/resources/profiles/Cubicon/filament/fdm_filament_common.json @@ -64,7 +64,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/DeltaMaker/filament/fdm_filament_pet.json b/resources/profiles/DeltaMaker/filament/fdm_filament_pet.json index 6e60f86bbd..52cc522d49 100755 --- a/resources/profiles/DeltaMaker/filament/fdm_filament_pet.json +++ b/resources/profiles/DeltaMaker/filament/fdm_filament_pet.json @@ -14,7 +14,7 @@ "15" ], "filament_max_volumetric_speed": [ - "0" + "8" ], "filament_type": [ "PETG" diff --git a/resources/profiles/DeltaMaker/filament/fdm_filament_pla.json b/resources/profiles/DeltaMaker/filament/fdm_filament_pla.json index b4a6b48e02..6a791a5846 100755 --- a/resources/profiles/DeltaMaker/filament/fdm_filament_pla.json +++ b/resources/profiles/DeltaMaker/filament/fdm_filament_pla.json @@ -6,7 +6,7 @@ "instantiation": "false", "fan_cooling_layer_time": "100", "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_type": [ "PLA" diff --git a/resources/profiles/DeltaMaker/filament/fdm_filament_tpu.json b/resources/profiles/DeltaMaker/filament/fdm_filament_tpu.json index 5776cd8939..29b2e790a5 100755 --- a/resources/profiles/DeltaMaker/filament/fdm_filament_tpu.json +++ b/resources/profiles/DeltaMaker/filament/fdm_filament_tpu.json @@ -14,7 +14,7 @@ "30" ], "filament_max_volumetric_speed": [ - "0" + "3.6" ], "filament_type": [ "TPU" diff --git a/resources/profiles/Dremel/filament/fdm_filament_common.json b/resources/profiles/Dremel/filament/fdm_filament_common.json index fbfcbfb193..b87e860352 100644 --- a/resources/profiles/Dremel/filament/fdm_filament_common.json +++ b/resources/profiles/Dremel/filament/fdm_filament_common.json @@ -40,7 +40,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/Elegoo/filament/fdm_filament_common.json b/resources/profiles/Elegoo/filament/fdm_filament_common.json index 205c0d3075..9294e67f0f 100644 --- a/resources/profiles/Elegoo/filament/fdm_filament_common.json +++ b/resources/profiles/Elegoo/filament/fdm_filament_common.json @@ -64,7 +64,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/Eryone/filament/fdm_filament_common.json b/resources/profiles/Eryone/filament/fdm_filament_common.json index 83af95dd28..83f2a1f5d3 100644 --- a/resources/profiles/Eryone/filament/fdm_filament_common.json +++ b/resources/profiles/Eryone/filament/fdm_filament_common.json @@ -58,7 +58,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/FLSun/filament/fdm_filament_common.json b/resources/profiles/FLSun/filament/fdm_filament_common.json index 868a8418e6..2949245a6e 100644 --- a/resources/profiles/FLSun/filament/fdm_filament_common.json +++ b/resources/profiles/FLSun/filament/fdm_filament_common.json @@ -58,7 +58,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/Flashforge/filament/fdm_filament_common.json b/resources/profiles/Flashforge/filament/fdm_filament_common.json index cb6109169c..77353ae799 100644 --- a/resources/profiles/Flashforge/filament/fdm_filament_common.json +++ b/resources/profiles/Flashforge/filament/fdm_filament_common.json @@ -64,7 +64,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/Flashforge/filament/fdm_filament_pet.json b/resources/profiles/Flashforge/filament/fdm_filament_pet.json index f32eb3f72c..678ab77822 100644 --- a/resources/profiles/Flashforge/filament/fdm_filament_pet.json +++ b/resources/profiles/Flashforge/filament/fdm_filament_pet.json @@ -38,7 +38,7 @@ "15" ], "filament_max_volumetric_speed": [ - "0" + "8" ], "filament_type": [ "PETG" diff --git a/resources/profiles/Flashforge/filament/fdm_filament_pla.json b/resources/profiles/Flashforge/filament/fdm_filament_pla.json index 3086172aab..7dd7f4e42a 100644 --- a/resources/profiles/Flashforge/filament/fdm_filament_pla.json +++ b/resources/profiles/Flashforge/filament/fdm_filament_pla.json @@ -8,7 +8,7 @@ "100" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_type": [ "PLA" diff --git a/resources/profiles/FlyingBear/filament/Ghost7/fdm_filament_common_Ghost7.json b/resources/profiles/FlyingBear/filament/Ghost7/fdm_filament_common_Ghost7.json index 01c835d5c8..7200bb2a0f 100644 --- a/resources/profiles/FlyingBear/filament/Ghost7/fdm_filament_common_Ghost7.json +++ b/resources/profiles/FlyingBear/filament/Ghost7/fdm_filament_common_Ghost7.json @@ -64,7 +64,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/FlyingBear/filament/S1/fdm_filament_common_S1.json b/resources/profiles/FlyingBear/filament/S1/fdm_filament_common_S1.json index cefa33afa5..5501986fb5 100644 --- a/resources/profiles/FlyingBear/filament/S1/fdm_filament_common_S1.json +++ b/resources/profiles/FlyingBear/filament/S1/fdm_filament_common_S1.json @@ -64,7 +64,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/FlyingBear/filament/fdm_filament_common.json b/resources/profiles/FlyingBear/filament/fdm_filament_common.json index 64993e656a..b01bfa0377 100644 --- a/resources/profiles/FlyingBear/filament/fdm_filament_common.json +++ b/resources/profiles/FlyingBear/filament/fdm_filament_common.json @@ -64,7 +64,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/InfiMech/filament/EX+APS/fdm_filament_common_EX+APS.json b/resources/profiles/InfiMech/filament/EX+APS/fdm_filament_common_EX+APS.json index 9cc78b356c..2d051eeee2 100644 --- a/resources/profiles/InfiMech/filament/EX+APS/fdm_filament_common_EX+APS.json +++ b/resources/profiles/InfiMech/filament/EX+APS/fdm_filament_common_EX+APS.json @@ -64,7 +64,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/InfiMech/filament/EX/fdm_filament_common_EX.json b/resources/profiles/InfiMech/filament/EX/fdm_filament_common_EX.json index f4990a806c..a67718f5e0 100644 --- a/resources/profiles/InfiMech/filament/EX/fdm_filament_common_EX.json +++ b/resources/profiles/InfiMech/filament/EX/fdm_filament_common_EX.json @@ -64,7 +64,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/InfiMech/filament/HSN/fdm_filament_common_HSN.json b/resources/profiles/InfiMech/filament/HSN/fdm_filament_common_HSN.json index 847c3260e4..e8ae383cf3 100644 --- a/resources/profiles/InfiMech/filament/HSN/fdm_filament_common_HSN.json +++ b/resources/profiles/InfiMech/filament/HSN/fdm_filament_common_HSN.json @@ -64,7 +64,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/InfiMech/filament/fdm_filament_common.json b/resources/profiles/InfiMech/filament/fdm_filament_common.json index 64993e656a..b01bfa0377 100644 --- a/resources/profiles/InfiMech/filament/fdm_filament_common.json +++ b/resources/profiles/InfiMech/filament/fdm_filament_common.json @@ -64,7 +64,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/LH/filament/fdm_filament_common.json b/resources/profiles/LH/filament/fdm_filament_common.json index 788382bc9e..50f0df75c4 100644 --- a/resources/profiles/LH/filament/fdm_filament_common.json +++ b/resources/profiles/LH/filament/fdm_filament_common.json @@ -64,7 +64,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/LONGER/filament/fdm_filament_common.json b/resources/profiles/LONGER/filament/fdm_filament_common.json index 205c0d3075..9294e67f0f 100644 --- a/resources/profiles/LONGER/filament/fdm_filament_common.json +++ b/resources/profiles/LONGER/filament/fdm_filament_common.json @@ -64,7 +64,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/OrcaArena/filament/fdm_filament_common.json b/resources/profiles/OrcaArena/filament/fdm_filament_common.json index 4026949258..27b0ff7b5e 100644 --- a/resources/profiles/OrcaArena/filament/fdm_filament_common.json +++ b/resources/profiles/OrcaArena/filament/fdm_filament_common.json @@ -70,7 +70,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_common.json b/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_common.json index 1dc6e50f39..ce95ca7c52 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_common.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_common.json @@ -61,7 +61,7 @@ "nil" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/Peopoly/filament/fdm_filament_common.json b/resources/profiles/Peopoly/filament/fdm_filament_common.json index 868a8418e6..2949245a6e 100644 --- a/resources/profiles/Peopoly/filament/fdm_filament_common.json +++ b/resources/profiles/Peopoly/filament/fdm_filament_common.json @@ -58,7 +58,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/Phrozen/filament/fdm_filament_common.json b/resources/profiles/Phrozen/filament/fdm_filament_common.json index 868a8418e6..2949245a6e 100644 --- a/resources/profiles/Phrozen/filament/fdm_filament_common.json +++ b/resources/profiles/Phrozen/filament/fdm_filament_common.json @@ -58,7 +58,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/Prusa/filament/fdm_filament_common.json b/resources/profiles/Prusa/filament/fdm_filament_common.json index f8aa522eb2..abf727c392 100644 --- a/resources/profiles/Prusa/filament/fdm_filament_common.json +++ b/resources/profiles/Prusa/filament/fdm_filament_common.json @@ -58,7 +58,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/Qidi/filament/fdm_filament_common.json b/resources/profiles/Qidi/filament/fdm_filament_common.json index 81e3df4e5b..e0e07572c3 100644 --- a/resources/profiles/Qidi/filament/fdm_filament_common.json +++ b/resources/profiles/Qidi/filament/fdm_filament_common.json @@ -61,7 +61,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/Ratrig/filament/fdm_filament_common.json b/resources/profiles/Ratrig/filament/fdm_filament_common.json index 8d05a6f91a..ab5b8305a6 100644 --- a/resources/profiles/Ratrig/filament/fdm_filament_common.json +++ b/resources/profiles/Ratrig/filament/fdm_filament_common.json @@ -64,7 +64,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/SecKit/filament/fdm_filament_common.json b/resources/profiles/SecKit/filament/fdm_filament_common.json index 8d05a6f91a..ab5b8305a6 100644 --- a/resources/profiles/SecKit/filament/fdm_filament_common.json +++ b/resources/profiles/SecKit/filament/fdm_filament_common.json @@ -64,7 +64,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/Snapmaker/filament/fdm_filament_common.json b/resources/profiles/Snapmaker/filament/fdm_filament_common.json index 66296d8ded..04c0a64a6f 100644 --- a/resources/profiles/Snapmaker/filament/fdm_filament_common.json +++ b/resources/profiles/Snapmaker/filament/fdm_filament_common.json @@ -67,7 +67,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "0" diff --git a/resources/profiles/Tiertime/filament/fdm_filament_common.json b/resources/profiles/Tiertime/filament/fdm_filament_common.json index dd89148ec9..94ed0997ee 100644 --- a/resources/profiles/Tiertime/filament/fdm_filament_common.json +++ b/resources/profiles/Tiertime/filament/fdm_filament_common.json @@ -61,7 +61,7 @@ "nil" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/Vzbot/filament/fdm_filament_common.json b/resources/profiles/Vzbot/filament/fdm_filament_common.json index 205c0d3075..9294e67f0f 100644 --- a/resources/profiles/Vzbot/filament/fdm_filament_common.json +++ b/resources/profiles/Vzbot/filament/fdm_filament_common.json @@ -64,7 +64,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/Wanhao France/filament/fdm_filament_common.json b/resources/profiles/Wanhao France/filament/fdm_filament_common.json index 205c0d3075..9294e67f0f 100644 --- a/resources/profiles/Wanhao France/filament/fdm_filament_common.json +++ b/resources/profiles/Wanhao France/filament/fdm_filament_common.json @@ -64,7 +64,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/WonderMaker/filament/fdm_filament_common.json b/resources/profiles/WonderMaker/filament/fdm_filament_common.json index 458f1a0113..fff218a7f5 100755 --- a/resources/profiles/WonderMaker/filament/fdm_filament_common.json +++ b/resources/profiles/WonderMaker/filament/fdm_filament_common.json @@ -61,7 +61,7 @@ "nil" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/re3D/filament/fdm_filament_common.json b/resources/profiles/re3D/filament/fdm_filament_common.json index 3fbf7a0288..745f258139 100644 --- a/resources/profiles/re3D/filament/fdm_filament_common.json +++ b/resources/profiles/re3D/filament/fdm_filament_common.json @@ -64,7 +64,7 @@ "2.85" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" From dc12126b78104fb339cff943b664a2f6cca09794 Mon Sep 17 00:00:00 2001 From: yw4z Date: Mon, 18 May 2026 19:01:42 +0300 Subject: [PATCH 09/26] Fix 2 Linux assertation errors on gtk_window_resize() (#13718) Update DropDown.cpp --- src/slic3r/GUI/Widgets/DropDown.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/slic3r/GUI/Widgets/DropDown.cpp b/src/slic3r/GUI/Widgets/DropDown.cpp index abbecc4353..f33fd04800 100644 --- a/src/slic3r/GUI/Widgets/DropDown.cpp +++ b/src/slic3r/GUI/Widgets/DropDown.cpp @@ -554,7 +554,8 @@ void DropDown::messureSize() wxWindow::SetSize(szContent); #ifdef __WXGTK__ // Gtk has a wrapper window for popup widget - gtk_window_resize (GTK_WINDOW (m_widget), szContent.x, szContent.y); + if (szContent.x > 0 && szContent.y > 0) + gtk_window_resize (GTK_WINDOW (m_widget), szContent.x, szContent.y); #endif if (!groups.empty() && subDropDown == nullptr) { subDropDown = new DropDown(items); From 88b4a63228d21edc6685c56904a317bfa32ace28 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Tue, 19 May 2026 01:01:53 +0800 Subject: [PATCH 10/26] Fix Linux data-view dropdown popup parenting (#13721) Delay opening the object-list filament dropdown on wxGTK until the editor window is mapped, avoiding popup creation without a valid native toplevel. Also set the GTK transient parent for dropdown popups created from data-view cell editors. --- src/slic3r/GUI/ExtraRenderers.cpp | 12 ++++++++++-- src/slic3r/GUI/Widgets/DropDown.cpp | 24 ++++++++++++++++++++++++ src/slic3r/GUI/Widgets/DropDown.hpp | 2 ++ 3 files changed, 36 insertions(+), 2 deletions(-) diff --git a/src/slic3r/GUI/ExtraRenderers.cpp b/src/slic3r/GUI/ExtraRenderers.cpp index 28837dbdad..18811ef241 100644 --- a/src/slic3r/GUI/ExtraRenderers.cpp +++ b/src/slic3r/GUI/ExtraRenderers.cpp @@ -324,9 +324,18 @@ wxWindow* BitmapChoiceRenderer::CreateEditorCtrl(wxWindow* parent, wxRect labelR else c_editor->SetSelection(atoi(data.GetText().c_str()) - 1); - // Open the dropdown immediately when the editor is focused. c_editor->Bind(wxEVT_SET_FOCUS, [c_editor](wxFocusEvent& evt) { +#ifdef __WXGTK__ + // On wxGTK the data-view editor may receive focus before its native + // window is mapped. Opening the popup one event later avoids creating + // the GTK popup without a valid toplevel parent. + c_editor->CallAfter([c_editor]() { + if (c_editor->IsShownOnScreen()) + c_editor->ForceDropdownOpen(); + }); +#else c_editor->ForceDropdownOpen(); +#endif evt.Skip(); }); @@ -392,4 +401,3 @@ wxSize TextRenderer::GetSize() const return GetTextExtent(m_value); } - diff --git a/src/slic3r/GUI/Widgets/DropDown.cpp b/src/slic3r/GUI/Widgets/DropDown.cpp index f33fd04800..973113d0ac 100644 --- a/src/slic3r/GUI/Widgets/DropDown.cpp +++ b/src/slic3r/GUI/Widgets/DropDown.cpp @@ -167,6 +167,30 @@ bool DropDown::HasDismissLongTime() (now - dismissTime).total_milliseconds() >= 20; } +void DropDown::Popup(wxWindow *focus) +{ +#ifdef __WXGTK__ + if (!mainDropDown && m_widget) { + // Data-view cell editors can receive focus before wxGTK infers a + // native popup parent, so provide the current toplevel explicitly. + GtkWindow *transient_parent = nullptr; + for (wxWindow *win = GetParent(); win; win = win->GetParent()) { + GtkWidget *widget = static_cast(win->GetHandle()); + if (!widget) + continue; + GtkWidget *top = gtk_widget_get_toplevel(widget); + if (GTK_IS_WINDOW(top)) { + transient_parent = GTK_WINDOW(top); + break; + } + } + if (transient_parent) + gtk_window_set_transient_for(GTK_WINDOW(m_widget), transient_parent); + } +#endif + PopupWindow::Popup(focus); +} + void DropDown::paintEvent(wxPaintEvent& evt) { // depending on your system you may need to look at double-buffered dcs diff --git a/src/slic3r/GUI/Widgets/DropDown.hpp b/src/slic3r/GUI/Widgets/DropDown.hpp index 639a13e526..09041e3dc0 100644 --- a/src/slic3r/GUI/Widgets/DropDown.hpp +++ b/src/slic3r/GUI/Widgets/DropDown.hpp @@ -105,6 +105,8 @@ public: bool HasDismissLongTime(); + void Popup(wxWindow *focus = nullptr) override; + protected: void Dismiss() override; From d8369e5f75d2df6d336a933cea8439c72581284a Mon Sep 17 00:00:00 2001 From: SoftFever Date: Tue, 19 May 2026 01:38:37 +0800 Subject: [PATCH 11/26] Fix faint toolbar icons on Wayland (#13723) Use glBlendFuncSeparate in GLTexture::render_sub_texture so destination alpha stays at 1.0. The Wayland compositor honors framebuffer alpha for window compositing; the previous straight-alpha blend reduced dst alpha at anti-aliased icon edges, making them semi-transparent against the desktop. RGB blending is unchanged, so X11/Windows/macOS are unaffected. --- src/slic3r/GUI/GLTexture.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/slic3r/GUI/GLTexture.cpp b/src/slic3r/GUI/GLTexture.cpp index 7bf4d008d4..d670181b1b 100644 --- a/src/slic3r/GUI/GLTexture.cpp +++ b/src/slic3r/GUI/GLTexture.cpp @@ -663,7 +663,9 @@ void GLTexture::render_texture(unsigned int tex_id, float left, float right, flo void GLTexture::render_sub_texture(unsigned int tex_id, float left, float right, float bottom, float top, const GLTexture::Quad_UVs& uvs) { glsafe(::glEnable(GL_BLEND)); - glsafe(::glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)); + // Orca: fix washed-out toolbar icons on Wayland: keep destination alpha at 1.0 so the compositor + // does not treat anti-aliased icon edges as window transparency. + glsafe(::glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ONE_MINUS_SRC_ALPHA)); glsafe(::glEnable(GL_TEXTURE_2D)); glsafe(::glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE)); From f78836bef40f182e4ca748d381240fd604bc03a8 Mon Sep 17 00:00:00 2001 From: Andrew <159703254+andrewsoonqn@users.noreply.github.com> Date: Tue, 19 May 2026 11:20:04 +0800 Subject: [PATCH 12/26] Stop tracking .idea files (#13735) --- .idea/.gitignore | 8 -------- .idea/OrcaSlicer.iml | 2 -- .idea/codeStyles/Project.xml | 7 ------- .idea/codeStyles/codeStyleConfig.xml | 5 ----- .idea/misc.xml | 4 ---- .idea/modules.xml | 8 -------- .idea/vcs.xml | 6 ------ 7 files changed, 40 deletions(-) delete mode 100644 .idea/.gitignore delete mode 100644 .idea/OrcaSlicer.iml delete mode 100644 .idea/codeStyles/Project.xml delete mode 100644 .idea/codeStyles/codeStyleConfig.xml delete mode 100644 .idea/misc.xml delete mode 100644 .idea/modules.xml delete mode 100644 .idea/vcs.xml diff --git a/.idea/.gitignore b/.idea/.gitignore deleted file mode 100644 index 13566b81b0..0000000000 --- a/.idea/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml -# Editor-based HTTP Client requests -/httpRequests/ -# Datasource local storage ignored files -/dataSources/ -/dataSources.local.xml diff --git a/.idea/OrcaSlicer.iml b/.idea/OrcaSlicer.iml deleted file mode 100644 index f08604bb65..0000000000 --- a/.idea/OrcaSlicer.iml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml deleted file mode 100644 index f60388162d..0000000000 --- a/.idea/codeStyles/Project.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml deleted file mode 100644 index 79ee123c2b..0000000000 --- a/.idea/codeStyles/codeStyleConfig.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index 79b3c94830..0000000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index b80725f1d9..0000000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 35eb1ddfbb..0000000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file From d0fbda3af1ce25597507c9f4f9ce3060191ad4d1 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Tue, 19 May 2026 14:26:34 +0800 Subject: [PATCH 13/26] Fix Linux segfault when loading Fluidd/Mainsail printer hosts (#7210) (#13724) * Fix Linux segfault when loading Fluidd/Mainsail printer hosts (#7210) Co-authored-by: VittC <58783944+VittC@users.noreply.github.com> * narrow down the changes --------- Co-authored-by: VittC <58783944+VittC@users.noreply.github.com> --- src/slic3r/GUI/PrinterWebView.cpp | 91 +++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) diff --git a/src/slic3r/GUI/PrinterWebView.cpp b/src/slic3r/GUI/PrinterWebView.cpp index 1dccfab66f..c4c5cbcc5f 100644 --- a/src/slic3r/GUI/PrinterWebView.cpp +++ b/src/slic3r/GUI/PrinterWebView.cpp @@ -23,6 +23,91 @@ namespace Slic3r { namespace GUI { +#ifdef __linux__ +// Workaround for crash in WebKitGTK when loading Fluidd < v1.37.0 or Mainsail < v2.16.1. +// Their bundled vue-resize component detects container resizes by inserting +//