From a2968df04c20044be168dbd0380a4b144ac4bd6e Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik Date: Fri, 11 Dec 2020 15:02:53 +0100 Subject: [PATCH 001/135] Merge of Fix support doesn't ignore overhangs bridge anymore #5164 --- src/libslic3r/SupportMaterial.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/libslic3r/SupportMaterial.cpp b/src/libslic3r/SupportMaterial.cpp index 0fc4eb024c..1e589200e5 100644 --- a/src/libslic3r/SupportMaterial.cpp +++ b/src/libslic3r/SupportMaterial.cpp @@ -906,13 +906,15 @@ namespace SupportMaterialInternal { polyline.extend_start(fw); polyline.extend_end(fw); // Is the straight perimeter segment supported at both sides? - for (size_t i = 0; i < lower_layer.lslices.size(); ++ i) - if (lower_layer.lslices_bboxes[i].contains(polyline.first_point()) && lower_layer.lslices_bboxes[i].contains(polyline.last_point()) && - lower_layer.lslices[i].contains(polyline.first_point()) && lower_layer.lslices[i].contains(polyline.last_point())) { - // Offset a polyline into a thick line. - polygons_append(bridges, offset(polyline, 0.5f * w + 10.f)); - break; - } + Point pts[2] = { polyline.first_point(), polyline.last_point() }; + bool supported[2] = { false, false }; + for (size_t i = 0; i < lower_layer.lslices.size() && ! supported[0] && ! supported[1]; ++ i) + for (int j = 0; j < 2; ++ j) + if (! supported[j] && lower_layer.lslices_bboxes[i].contains(pts[j]) && lower_layer.lslices[i].contains(pts[j])) + supported[j] = true; + if (supported[0] && supported[1]) + // Offset a polyline into a thick line. + polygons_append(bridges, offset(polyline, 0.5f * w + 10.f)); } bridges = union_(bridges); } From 7de0f46db4004dc2167327ea8884ed037c4d8a0a Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik Date: Fri, 11 Dec 2020 15:02:53 +0100 Subject: [PATCH 002/135] Merge of Fix support doesn't ignore overhangs bridge anymore #5164 --- src/libslic3r/SupportMaterial.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/libslic3r/SupportMaterial.cpp b/src/libslic3r/SupportMaterial.cpp index 0fc4eb024c..95c4297542 100644 --- a/src/libslic3r/SupportMaterial.cpp +++ b/src/libslic3r/SupportMaterial.cpp @@ -906,13 +906,15 @@ namespace SupportMaterialInternal { polyline.extend_start(fw); polyline.extend_end(fw); // Is the straight perimeter segment supported at both sides? - for (size_t i = 0; i < lower_layer.lslices.size(); ++ i) - if (lower_layer.lslices_bboxes[i].contains(polyline.first_point()) && lower_layer.lslices_bboxes[i].contains(polyline.last_point()) && - lower_layer.lslices[i].contains(polyline.first_point()) && lower_layer.lslices[i].contains(polyline.last_point())) { - // Offset a polyline into a thick line. - polygons_append(bridges, offset(polyline, 0.5f * w + 10.f)); - break; - } + Point pts[2] = { polyline.first_point(), polyline.last_point() }; + bool supported[2] = { false, false }; + for (size_t i = 0; i < lower_layer.lslices.size() && ! (supported[0] && supported[1]); ++ i) + for (int j = 0; j < 2; ++ j) + if (! supported[j] && lower_layer.lslices_bboxes[i].contains(pts[j]) && lower_layer.lslices[i].contains(pts[j])) + supported[j] = true; + if (supported[0] && supported[1]) + // Offset a polyline into a thick line. + polygons_append(bridges, offset(polyline, 0.5f * w + 10.f)); } bridges = union_(bridges); } From 25531d7c002fe90097e8eec252445fb57d88476c Mon Sep 17 00:00:00 2001 From: David Kocik Date: Fri, 11 Dec 2020 15:31:43 +0100 Subject: [PATCH 003/135] rename single instance setting in preferences --- src/slic3r/GUI/Preferences.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/slic3r/GUI/Preferences.cpp b/src/slic3r/GUI/Preferences.cpp index cdcd286954..4a608d2473 100644 --- a/src/slic3r/GUI/Preferences.cpp +++ b/src/slic3r/GUI/Preferences.cpp @@ -156,11 +156,14 @@ void PreferencesDialog::build() option = Option(def, "show_drop_project_dialog"); m_optgroup_general->append_single_option_line(option); - def.label = L("Single instance mode"); - def.type = coBool; + #if __APPLE__ + def.label = L("Allow just single PrusaSlicer instance"); + def.type = coBool; def.tooltip = L("On OSX there is always only one instance of app running by default. However it is allowed to run multiple instances of same app from the command line. In such case this settings will allow only one instance."); #else + def.label = L("Allow just single PrusaSlicer instance"); + def.type = coBool; def.tooltip = L("If this is enabled, when starting PrusaSlicer and another instance of the same PrusaSlicer is already running, that instance will be reactivated instead."); #endif def.set_default_value(new ConfigOptionBool{ app_config->has("single_instance") ? app_config->get("single_instance") == "1" : false }); From 8bfb2a4eef7c077659c19643fd58074e4217a12f Mon Sep 17 00:00:00 2001 From: YuSanka Date: Fri, 11 Dec 2020 15:58:10 +0100 Subject: [PATCH 004/135] Fix of #5315 - Height Slider heights are too squished + some code refactoring --- src/slic3r/GUI/DoubleSlider.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/slic3r/GUI/DoubleSlider.cpp b/src/slic3r/GUI/DoubleSlider.cpp index ce268e006b..8a2257274e 100644 --- a/src/slic3r/GUI/DoubleSlider.cpp +++ b/src/slic3r/GUI/DoubleSlider.cpp @@ -971,11 +971,15 @@ void Control::draw_ruler(wxDC& dc) double value = 0.0; int sequence = 0; + int prev_y_pos = -1; + wxCoord label_height = dc.GetMultiLineTextExtent("0").y - 2; + int values_size = (int)m_values.size(); + while (tick <= m_max_value) { value += m_ruler.long_step; if (value > m_values.back() && sequence < m_ruler.count) { value = m_ruler.long_step; - for (tick; tick < m_values.size(); tick++) + for (; tick < values_size; tick++) if (m_values[tick] < value) break; // short ticks from the last tick to the end of current sequence @@ -984,7 +988,7 @@ void Control::draw_ruler(wxDC& dc) } short_tick = tick; - for (tick; tick < m_values.size(); tick++) { + for (; tick < values_size; tick++) { if (m_values[tick] == value) break; if (m_values[tick] > value) { @@ -998,7 +1002,10 @@ void Control::draw_ruler(wxDC& dc) wxCoord pos = get_position_from_value(tick); draw_ticks_pair(dc, pos, mid, 5); - draw_tick_text(dc, wxPoint(mid, pos), tick); + if (prev_y_pos < 0 || prev_y_pos - pos >= label_height) { + draw_tick_text(dc, wxPoint(mid, pos), tick); + prev_y_pos = pos; + } draw_short_ticks(dc, short_tick, tick); From e78ad6ffa998cade604c27b0e900baa029d6256b Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik Date: Fri, 11 Dec 2020 17:57:29 +0100 Subject: [PATCH 005/135] Fixing unit tests for supports. After "dont_support_bridges" was fixed for perimeters, no support was rightfully generated for a preset using a default "dont_support_bridges" = off. --- tests/fff_print/test_support_material.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/tests/fff_print/test_support_material.cpp b/tests/fff_print/test_support_material.cpp index 663b715a98..01d8581323 100644 --- a/tests/fff_print/test_support_material.cpp +++ b/tests/fff_print/test_support_material.cpp @@ -23,6 +23,7 @@ SCENARIO("SupportMaterial: support_layers_z and contact_distance", "[SupportMate // Box h = 20mm, hole bottom at 5mm, hole height 10mm (top edge at 15mm). TriangleMesh mesh = Slic3r::Test::mesh(Slic3r::Test::TestMesh::cube_with_hole); mesh.rotate_x(float(M_PI / 2)); +// mesh.write_binary("d:\\temp\\cube_with_hole.stl"); auto check = [](Slic3r::Print &print, bool &first_support_layer_height_ok, bool &layer_height_minimum_ok, bool &layer_height_maximum_ok, bool &top_spacing_ok) { @@ -76,7 +77,8 @@ SCENARIO("SupportMaterial: support_layers_z and contact_distance", "[SupportMate { "support_material", 1 }, { "layer_height", 0.2 }, { "first_layer_height", 0.4 }, - }); + { "dont_support_bridges", false }, + }); bool a, b, c, d; check(print, a, b, c, d); THEN("First layer height is honored") { REQUIRE(a == true); } @@ -90,7 +92,8 @@ SCENARIO("SupportMaterial: support_layers_z and contact_distance", "[SupportMate { "support_material", 1 }, { "layer_height", 0.2 }, { "first_layer_height", 0.3 }, - }); + { "dont_support_bridges", false }, + }); bool a, b, c, d; check(print, a, b, c, d); THEN("First layer height is honored") { REQUIRE(a == true); } @@ -104,7 +107,8 @@ SCENARIO("SupportMaterial: support_layers_z and contact_distance", "[SupportMate { "support_material", 1 }, { "layer_height", 0.2 }, { "first_layer_height", 0.3 }, - }); + { "dont_support_bridges", false }, + }); bool a, b, c, d; check(print, a, b, c, d); THEN("First layer height is honored") { REQUIRE(a == true); } From 621610da754e23771a83db455c2d182e6242ccf1 Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik Date: Sat, 12 Dec 2020 08:34:43 +0100 Subject: [PATCH 006/135] Follow up on 569200eb992975fff3f41b115a73da7326758105 Improved formatting of the vector of dimensions, improved wordings of error messages and tooltips. --- src/libslic3r/PrintConfig.cpp | 2 +- src/slic3r/GUI/Field.cpp | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 49e1d416ee..8511c87e4c 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -64,7 +64,7 @@ void PrintConfigDef::init_common_params() def = this->add("thumbnails", coPoints); def->label = L("G-code thumbnails"); - def->tooltip = L("Picture sizes to be stored into a .gcode and .sl1 files"); + def->tooltip = L("Picture sizes to be stored into a .gcode and .sl1 files, in the following format: \"XxY, XxY, ...\""); def->mode = comExpert; def->gui_type = "one_string"; def->set_default_value(new ConfigOptionPoints()); diff --git a/src/slic3r/GUI/Field.cpp b/src/slic3r/GUI/Field.cpp index c6f6babae1..e65d87b31f 100644 --- a/src/slic3r/GUI/Field.cpp +++ b/src/slic3r/GUI/Field.cpp @@ -57,9 +57,10 @@ wxString double_to_string(double const value, const int max_precision /*= 4*/) wxString get_thumbnails_string(const std::vector& values) { wxString ret_str; - if (!values.empty()) - for (auto el : values) - ret_str += wxString::Format("%ix%i, ", int(el[0]), int(el[1])); + for (size_t i = 0; i < values.size(); ++ i) { + const Vec2d& el = values[i]; + ret_str += wxString::Format((i == 0) ? "%ix%i" : ", %ix%i", int(el[0]), int(el[1])); + } return ret_str; } @@ -359,7 +360,7 @@ void Field::get_value_by_opt_type(wxString& str, const bool check_value/* = true if (!m_value.empty()) text_value = get_thumbnails_string(boost::any_cast>(m_value)); set_value(text_value, true); - show_error(m_parent, format_wxstr(_L("Invalid input format. It must be represented like \"%1%\""),"XxY, XxY, ..." )); + show_error(m_parent, format_wxstr(_L("Invalid input format. Expected vector of dimensions in the following format: \"%1%\""),"XxY, XxY, ..." )); } } From 0884f4fbf5d3f77d7651f16de1fe1d00d8fe60f5 Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik Date: Sat, 12 Dec 2020 09:11:10 +0100 Subject: [PATCH 007/135] Slight rewording of the keyboard shortcuts dialog. --- src/slic3r/GUI/KBShortcutsDialog.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/slic3r/GUI/KBShortcutsDialog.cpp b/src/slic3r/GUI/KBShortcutsDialog.cpp index 6c7cc1833b..11bf7f6877 100644 --- a/src/slic3r/GUI/KBShortcutsDialog.cpp +++ b/src/slic3r/GUI/KBShortcutsDialog.cpp @@ -234,7 +234,7 @@ void KBShortcutsDialog::fill_shortcuts() { ctrl, L("Press to speed up 5 times while moving thumb\nwith arrow keys or mouse wheel") }, }; - m_full_shortcuts.push_back({ { _L("Vertical Slider"), _L("The following shortcuts are applicable when the vertical slider, in preview, is active") }, layers_slider_shortcuts }); + m_full_shortcuts.push_back({ { _L("Vertical Slider"), _L("The following shortcuts are applicable in G-code preview when the vertical slider is active") }, layers_slider_shortcuts }); Shortcuts sequential_slider_shortcuts = { #if ENABLE_ARROW_KEYS_WITH_SLIDERS @@ -250,7 +250,7 @@ void KBShortcutsDialog::fill_shortcuts() { ctrl, L("Press to speed up 5 times while moving thumb\nwith arrow keys or mouse wheel") }, }; - m_full_shortcuts.push_back({ { _L("Horizontal Slider"), _L("The following shortcuts are applicable when the horizontal slider, in preview, is active") }, sequential_slider_shortcuts }); + m_full_shortcuts.push_back({ { _L("Horizontal Slider"), _L("The following shortcuts are applicable in G-code preview when the horizontal slider is active") }, sequential_slider_shortcuts }); } wxPanel* KBShortcutsDialog::create_header(wxWindow* parent, const wxFont& bold_font) From d267a9a105dddaa2dc5ab2e9382fbc3ea9d2873d Mon Sep 17 00:00:00 2001 From: Lukas Matena Date: Sat, 12 Dec 2020 09:15:01 +0100 Subject: [PATCH 008/135] Fixed a typo in a tooltip --- src/libslic3r/PrintConfig.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 8511c87e4c..2fa30cc241 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -185,7 +185,7 @@ void PrintConfigDef::init_fff_params() def->set_default_value(new ConfigOptionBool(false)); def = this->add("avoid_crossing_perimeters_max_detour", coFloat); - def->label = L("Avoid crossing perimeters - The max detour lenght"); + def->label = L("Avoid crossing perimeters - Max detour length"); def->category = L("Layers and Perimeters"); def->tooltip = L("The maximum detour length for avoid crossing perimeters. " "If the detour is longer than this value, avoid crossing perimeters is not applied for this path."); From 0e6f9cdd0bd478b7939bc95dbe1b78987a89eea1 Mon Sep 17 00:00:00 2001 From: Lukas Matena Date: Fri, 11 Dec 2020 19:48:44 +0100 Subject: [PATCH 009/135] Linux: when available locales do not match the desired language completely, list the installed locales and try to find an alternative This should fix issues such as #3368 and #2580 --- src/slic3r/GUI/GUI_App.cpp | 89 ++++++++++++++++++++++++++++++-------- 1 file changed, 72 insertions(+), 17 deletions(-) diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 7d276700f2..29d7f9b200 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -1271,22 +1271,65 @@ bool GUI_App::switch_language() } } +#ifdef __linux +static const wxLanguageInfo* linux_get_existing_locale_language(const wxLanguageInfo* language, + const wxLanguageInfo* system_language) +{ + constexpr size_t max_len = 50; + char path[max_len] = ""; + std::vector locales; + const std::string lang_prefix = into_u8(language->CanonicalName.BeforeFirst('_')); + + FILE* fp = popen("locale -a", "r"); + if (fp != NULL) { + while (fgets(path, max_len, fp) != NULL) { + std::string line(path); + line = line.substr(0, line.find('\n')); + if (boost::starts_with(line, lang_prefix)) + locales.push_back(line); + } + pclose(fp); + } + + // locales now contain all candidates for this language. + // Sort them so ones containing anything about UTF-8 are at the beginning. + std::sort(locales.begin(), locales.end(), [](const std::string& a, const std::string& b) + { + auto has_utf8 = [](const std::string & s) { + return boost::to_upper_copy(s).find("UTF") != std::string::npos + && s.find("8") != std::string::npos; + }; + return (has_utf8(a) && ! has_utf8(b)); + }); + + // Remove the suffix. + for (std::string& s : locales) + s = s.substr(0, s.find(".")); + + // Is there a candidate matching a country code of a system language? Put it at the beginning + // (duplicates do not matter). Check backwards so the utf8 one ends up first if there are more. + std::string system_country = "_" + into_u8(system_language->CanonicalName.AfterFirst('_')).substr(0, 2); + int cnt = locales.size(); + for (int i=0; iLanguage)) + return lang; + } + return language; +} +#endif + // select language from the list of installed languages bool GUI_App::select_language() { wxArrayString translations = wxTranslations::Get()->GetAvailableTranslations(SLIC3R_APP_KEY); std::vector language_infos; language_infos.emplace_back(wxLocale::GetLanguageInfo(wxLANGUAGE_ENGLISH)); -#ifdef __linux__ - // wxWidgets consider the default English locale to be en_GB, which is often missing on Linux. - // Thus we offer en_US on Linux as well. - language_infos.emplace_back(wxLocale::GetLanguageInfo(wxLANGUAGE_ENGLISH_US)); - //FIXME https://github.com/prusa3d/PrusaSlicer/issues/2580#issuecomment-524546743 - // In a correctly set up system, "locale -a" will get all the installed locales on that system. - // According to the installed locales, the locales for the dictionaries may be modified with the available - // CanonicalName of the locale, possibly duplicating the entries for each CanonicalName of the dictionary. - // Other languages with missing locales of the system can be greyed out or not shown at all. -#endif // __linux__ for (size_t i = 0; i < translations.GetCount(); ++ i) { const wxLanguageInfo *langinfo = wxLocale::FindLanguageInfo(translations[i]); if (langinfo != nullptr) @@ -1315,13 +1358,6 @@ bool GUI_App::select_language() if (language_infos[i]->CanonicalName.BeforeFirst('_') == "en") // This will be the default selection if the active language does not match any dictionary. init_selection_default = i; -#ifdef __linux__ - // wxWidgets consider the default English locale to be en_GB, which is often missing on Linux. - // Thus we make the distintion between "en_US" and "en_GB" clear. - if (language_infos[i]->CanonicalName == "en_GB" && language_infos[i]->Description == "English") - names.Add("English (U.K.)"); - else -#endif // __linux__ names.Add(language_infos[i]->Description); } if (init_selection == -1) @@ -1388,6 +1424,14 @@ bool GUI_App::load_language(wxString language, bool initial) m_language_info_best = wxLocale::FindLanguageInfo(best_language); BOOST_LOG_TRIVIAL(trace) << boost::format("Best translation language detected (may be different from user locales): %1%") % m_language_info_best->CanonicalName.ToUTF8().data(); } + #ifdef __linux__ + wxString lc_all; + if (wxGetEnv("LC_ALL", &lc_all) && ! lc_all.IsEmpty()) { + // Best language returned by wxWidgets on Linux apparently does not respect LC_ALL. + // Disregard the "best" suggestion in case LC_ALL is provided. + m_language_info_best = nullptr; + } + #endif } } @@ -1433,6 +1477,17 @@ bool GUI_App::load_language(wxString language, bool initial) } else if (m_language_info_system != nullptr && language_info->CanonicalName.BeforeFirst('_') == m_language_info_system->CanonicalName.BeforeFirst('_')) language_info = m_language_info_system; +#ifdef __linux__ + // If we can't find this locale , try to use different one for the language + // instead of just reporting that it is impossible to switch. + if (! wxLocale::IsAvailable(language_info->Language)) { + std::string original_lang = into_u8(language_info->CanonicalName); + language_info = linux_get_existing_locale_language(language_info, m_language_info_system); + BOOST_LOG_TRIVIAL(trace) << boost::format("Can't switch language to %1% (missing locales). Using %2% instead.") + % original_lang % language_info->CanonicalName.ToUTF8().data(); + } +#endif + if (! wxLocale::IsAvailable(language_info->Language)) { // Loading the language dictionary failed. wxString message = "Switching PrusaSlicer to language " + language_info->CanonicalName + " failed."; From ccad84fb42fe79cfa2fb18c11988c3b709ae37e1 Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik Date: Sat, 12 Dec 2020 11:26:17 +0100 Subject: [PATCH 010/135] Follow-up on 3523bb421f17b6ac3b0587b9b206bfce7d006754 (Ongoing uploads while exiting dialog): Fixed some string conversion issues. --- src/slic3r/GUI/GUI_App.cpp | 3 ++- src/slic3r/GUI/PrintHostDialogs.cpp | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 7d276700f2..57c76a7576 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -3,6 +3,7 @@ #include "GUI_Init.hpp" #include "GUI_ObjectList.hpp" #include "GUI_ObjectManipulation.hpp" +#include "format.hpp" #include "I18N.hpp" #include @@ -1719,7 +1720,7 @@ bool GUI_App::check_print_host_queue() // Show dialog wxString job_string = wxString(); for (const auto& job : jobs) { - job_string += (boost::format(" %1% : %2% \n") % job.first % job.second).str(); + job_string += format_wxstr(" %1% : %2% \n", job.first, job.second); } wxString message; message += _(L("The uploads are still ongoing")) + ":\n\n" + job_string +"\n" + _(L("Stop them and continue anyway?")); diff --git a/src/slic3r/GUI/PrintHostDialogs.cpp b/src/slic3r/GUI/PrintHostDialogs.cpp index ef072397ba..a9343767fa 100644 --- a/src/slic3r/GUI/PrintHostDialogs.cpp +++ b/src/slic3r/GUI/PrintHostDialogs.cpp @@ -230,6 +230,7 @@ void PrintHostQueueDialog::append_job(const PrintHostJob &job) fields.push_back(wxVariant(job.upload_data.upload_path.string())); fields.push_back(wxVariant("")); job_list->AppendItem(fields, static_cast(ST_NEW)); + // Both strings are UTF-8 encoded. upload_names.emplace_back(job.printhost->get_host(), job.upload_data.upload_path.string()); } From 5605088aadf378788ac94657556a662b5493558b Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik Date: Sat, 12 Dec 2020 12:06:15 +0100 Subject: [PATCH 011/135] Follow-up on aaaa85c1f8a06d222ccbb745e67bdc56d65b90ed Fix of #5007 - "Reload from disk" causes objects converted to inches to revert to mm 1) Storing and reloading the "source_in_inches" source flag from AMF and 3MF 2) When converting objects with mixed "inches" volumes, do the right thing and do not convert those that do not need conversion. --- src/libslic3r/Format/3mf.cpp | 113 +++++++++++++++++++---------------- src/libslic3r/Format/AMF.cpp | 5 ++ src/libslic3r/Model.cpp | 8 ++- 3 files changed, 70 insertions(+), 56 deletions(-) diff --git a/src/libslic3r/Format/3mf.cpp b/src/libslic3r/Format/3mf.cpp index a4fd228fc4..dde185fe5b 100644 --- a/src/libslic3r/Format/3mf.cpp +++ b/src/libslic3r/Format/3mf.cpp @@ -56,58 +56,59 @@ const std::string SLA_SUPPORT_POINTS_FILE = "Metadata/Slic3r_PE_sla_support_poin const std::string SLA_DRAIN_HOLES_FILE = "Metadata/Slic3r_PE_sla_drain_holes.txt"; const std::string CUSTOM_GCODE_PER_PRINT_Z_FILE = "Metadata/Prusa_Slicer_custom_gcode_per_print_z.xml"; -const char* MODEL_TAG = "model"; -const char* RESOURCES_TAG = "resources"; -const char* OBJECT_TAG = "object"; -const char* MESH_TAG = "mesh"; -const char* VERTICES_TAG = "vertices"; -const char* VERTEX_TAG = "vertex"; -const char* TRIANGLES_TAG = "triangles"; -const char* TRIANGLE_TAG = "triangle"; -const char* COMPONENTS_TAG = "components"; -const char* COMPONENT_TAG = "component"; -const char* BUILD_TAG = "build"; -const char* ITEM_TAG = "item"; -const char* METADATA_TAG = "metadata"; +static constexpr char* MODEL_TAG = "model"; +static constexpr char* RESOURCES_TAG = "resources"; +static constexpr char* OBJECT_TAG = "object"; +static constexpr char* MESH_TAG = "mesh"; +static constexpr char* VERTICES_TAG = "vertices"; +static constexpr char* VERTEX_TAG = "vertex"; +static constexpr char* TRIANGLES_TAG = "triangles"; +static constexpr char* TRIANGLE_TAG = "triangle"; +static constexpr char* COMPONENTS_TAG = "components"; +static constexpr char* COMPONENT_TAG = "component"; +static constexpr char* BUILD_TAG = "build"; +static constexpr char* ITEM_TAG = "item"; +static constexpr char* METADATA_TAG = "metadata"; -const char* CONFIG_TAG = "config"; -const char* VOLUME_TAG = "volume"; +static constexpr char* CONFIG_TAG = "config"; +static constexpr char* VOLUME_TAG = "volume"; -const char* UNIT_ATTR = "unit"; -const char* NAME_ATTR = "name"; -const char* TYPE_ATTR = "type"; -const char* ID_ATTR = "id"; -const char* X_ATTR = "x"; -const char* Y_ATTR = "y"; -const char* Z_ATTR = "z"; -const char* V1_ATTR = "v1"; -const char* V2_ATTR = "v2"; -const char* V3_ATTR = "v3"; -const char* OBJECTID_ATTR = "objectid"; -const char* TRANSFORM_ATTR = "transform"; -const char* PRINTABLE_ATTR = "printable"; -const char* INSTANCESCOUNT_ATTR = "instances_count"; -const char* CUSTOM_SUPPORTS_ATTR = "slic3rpe:custom_supports"; -const char* CUSTOM_SEAM_ATTR = "slic3rpe:custom_seam"; +static constexpr char* UNIT_ATTR = "unit"; +static constexpr char* NAME_ATTR = "name"; +static constexpr char* TYPE_ATTR = "type"; +static constexpr char* ID_ATTR = "id"; +static constexpr char* X_ATTR = "x"; +static constexpr char* Y_ATTR = "y"; +static constexpr char* Z_ATTR = "z"; +static constexpr char* V1_ATTR = "v1"; +static constexpr char* V2_ATTR = "v2"; +static constexpr char* V3_ATTR = "v3"; +static constexpr char* OBJECTID_ATTR = "objectid"; +static constexpr char* TRANSFORM_ATTR = "transform"; +static constexpr char* PRINTABLE_ATTR = "printable"; +static constexpr char* INSTANCESCOUNT_ATTR = "instances_count"; +static constexpr char* CUSTOM_SUPPORTS_ATTR = "slic3rpe:custom_supports"; +static constexpr char* CUSTOM_SEAM_ATTR = "slic3rpe:custom_seam"; -const char* KEY_ATTR = "key"; -const char* VALUE_ATTR = "value"; -const char* FIRST_TRIANGLE_ID_ATTR = "firstid"; -const char* LAST_TRIANGLE_ID_ATTR = "lastid"; +static constexpr char* KEY_ATTR = "key"; +static constexpr char* VALUE_ATTR = "value"; +static constexpr char* FIRST_TRIANGLE_ID_ATTR = "firstid"; +static constexpr char* LAST_TRIANGLE_ID_ATTR = "lastid"; -const char* OBJECT_TYPE = "object"; -const char* VOLUME_TYPE = "volume"; +static constexpr char* OBJECT_TYPE = "object"; +static constexpr char* VOLUME_TYPE = "volume"; -const char* NAME_KEY = "name"; -const char* MODIFIER_KEY = "modifier"; -const char* VOLUME_TYPE_KEY = "volume_type"; -const char* MATRIX_KEY = "matrix"; -const char* SOURCE_FILE_KEY = "source_file"; -const char* SOURCE_OBJECT_ID_KEY = "source_object_id"; -const char* SOURCE_VOLUME_ID_KEY = "source_volume_id"; -const char* SOURCE_OFFSET_X_KEY = "source_offset_x"; -const char* SOURCE_OFFSET_Y_KEY = "source_offset_y"; -const char* SOURCE_OFFSET_Z_KEY = "source_offset_z"; +static constexpr char* NAME_KEY = "name"; +static constexpr char* MODIFIER_KEY = "modifier"; +static constexpr char* VOLUME_TYPE_KEY = "volume_type"; +static constexpr char* MATRIX_KEY = "matrix"; +static constexpr char* SOURCE_FILE_KEY = "source_file"; +static constexpr char* SOURCE_OBJECT_ID_KEY = "source_object_id"; +static constexpr char* SOURCE_VOLUME_ID_KEY = "source_volume_id"; +static constexpr char* SOURCE_OFFSET_X_KEY = "source_offset_x"; +static constexpr char* SOURCE_OFFSET_Y_KEY = "source_offset_y"; +static constexpr char* SOURCE_OFFSET_Z_KEY = "source_offset_z"; +static constexpr char* SOURCE_IN_INCHES = "source_in_inches"; const unsigned int VALID_OBJECT_TYPES_COUNT = 1; const char* VALID_OBJECT_TYPES[] = @@ -1926,6 +1927,8 @@ namespace Slic3r { volume->source.mesh_offset(1) = ::atof(metadata.value.c_str()); else if (metadata.key == SOURCE_OFFSET_Z_KEY) volume->source.mesh_offset(2) = ::atof(metadata.value.c_str()); + else if (metadata.key == SOURCE_IN_INCHES) + volume->source.is_converted_from_inches = metadata.value.c_str() == "1"; else volume->config.set_deserialize(metadata.key, metadata.value); } @@ -2752,12 +2755,16 @@ namespace Slic3r { if (!volume->source.input_file.empty()) { std::string input_file = xml_escape(m_fullpath_sources ? volume->source.input_file : boost::filesystem::path(volume->source.input_file).filename().string()); - stream << " <" << METADATA_TAG << " " << TYPE_ATTR << "=\"" << VOLUME_TYPE << "\" " << KEY_ATTR << "=\"" << SOURCE_FILE_KEY << "\" " << VALUE_ATTR << "=\"" << input_file << "\"/>\n"; - stream << " <" << METADATA_TAG << " " << TYPE_ATTR << "=\"" << VOLUME_TYPE << "\" " << KEY_ATTR << "=\"" << SOURCE_OBJECT_ID_KEY << "\" " << VALUE_ATTR << "=\"" << volume->source.object_idx << "\"/>\n"; - stream << " <" << METADATA_TAG << " " << TYPE_ATTR << "=\"" << VOLUME_TYPE << "\" " << KEY_ATTR << "=\"" << SOURCE_VOLUME_ID_KEY << "\" " << VALUE_ATTR << "=\"" << volume->source.volume_idx << "\"/>\n"; - stream << " <" << METADATA_TAG << " " << TYPE_ATTR << "=\"" << VOLUME_TYPE << "\" " << KEY_ATTR << "=\"" << SOURCE_OFFSET_X_KEY << "\" " << VALUE_ATTR << "=\"" << volume->source.mesh_offset(0) << "\"/>\n"; - stream << " <" << METADATA_TAG << " " << TYPE_ATTR << "=\"" << VOLUME_TYPE << "\" " << KEY_ATTR << "=\"" << SOURCE_OFFSET_Y_KEY << "\" " << VALUE_ATTR << "=\"" << volume->source.mesh_offset(1) << "\"/>\n"; - stream << " <" << METADATA_TAG << " " << TYPE_ATTR << "=\"" << VOLUME_TYPE << "\" " << KEY_ATTR << "=\"" << SOURCE_OFFSET_Z_KEY << "\" " << VALUE_ATTR << "=\"" << volume->source.mesh_offset(2) << "\"/>\n"; + std::string prefix = std::string(" <") + METADATA_TAG + " " + TYPE_ATTR + "=\"" + VOLUME_TYPE + "\" " + KEY_ATTR + "=\""; + stream << prefix << SOURCE_FILE_KEY << "\" " << VALUE_ATTR << "=\"" << input_file << "\"/>\n"; + stream << prefix << SOURCE_OBJECT_ID_KEY << "\" " << VALUE_ATTR << "=\"" << volume->source.object_idx << "\"/>\n"; + stream << prefix << SOURCE_VOLUME_ID_KEY << "\" " << VALUE_ATTR << "=\"" << volume->source.volume_idx << "\"/>\n"; + stream << prefix << SOURCE_OFFSET_X_KEY << "\" " << VALUE_ATTR << "=\"" << volume->source.mesh_offset(0) << "\"/>\n"; + stream << prefix << SOURCE_OFFSET_Y_KEY << "\" " << VALUE_ATTR << "=\"" << volume->source.mesh_offset(1) << "\"/>\n"; + stream << prefix << SOURCE_OFFSET_Z_KEY << "\" " << VALUE_ATTR << "=\"" << volume->source.mesh_offset(2) << "\"/>\n"; + stream << prefix << SOURCE_OFFSET_Z_KEY << "\" " << VALUE_ATTR << "=\"" << volume->source.mesh_offset(2) << "\"/>\n"; + if (volume->source.is_converted_from_inches) + stream << prefix << SOURCE_IN_INCHES << "\" " << VALUE_ATTR << "=\"1\"/>\n"; } // stores volume's config data diff --git a/src/libslic3r/Format/AMF.cpp b/src/libslic3r/Format/AMF.cpp index a2117d63bf..a183aeb462 100644 --- a/src/libslic3r/Format/AMF.cpp +++ b/src/libslic3r/Format/AMF.cpp @@ -778,6 +778,9 @@ void AMFParserContext::endElement(const char * /* name */) else if (strcmp(opt_key, "source_offset_z") == 0) { m_volume->source.mesh_offset(2) = ::atof(m_value[1].c_str()); } + else if (strcmp(opt_key, "source_in_inches") == 0) { + m_volume->source.is_converted_from_inches = m_value[1] == "1"; + } } } else if (m_path.size() == 3) { if (m_path[1] == NODE_TYPE_MATERIAL) { @@ -1204,6 +1207,8 @@ bool store_amf(const char* path, Model* model, const DynamicPrintConfig* config, stream << " " << volume->source.mesh_offset(0) << "\n"; stream << " " << volume->source.mesh_offset(1) << "\n"; stream << " " << volume->source.mesh_offset(2) << "\n"; + if (volume->source.is_converted_from_inches) + stream << " 1\n"; } stream << std::setprecision(std::numeric_limits::max_digits10); const indexed_triangle_set &its = volume->mesh().its; diff --git a/src/libslic3r/Model.cpp b/src/libslic3r/Model.cpp index b492fa01d2..d7682d2762 100644 --- a/src/libslic3r/Model.cpp +++ b/src/libslic3r/Model.cpp @@ -1060,9 +1060,11 @@ void ModelObject::convert_units(ModelObjectPtrs& new_objects, bool from_imperial vol->source.object_idx = (int)new_objects.size(); vol->source.volume_idx = vol_idx; - // Perform conversion - if (volume_idxs.empty() || - std::find(volume_idxs.begin(), volume_idxs.end(), vol_idx) != volume_idxs.end()) { + // Perform conversion only if the target "imperial" state is different from the current one. + // This check supports conversion of "mixed" set of volumes, each with different "imperial" state. + if (vol->source.is_converted_from_inches != from_imperial && + (volume_idxs.empty() || + std::find(volume_idxs.begin(), volume_idxs.end(), vol_idx) != volume_idxs.end())) { vol->scale_geometry_after_creation(versor); vol->set_offset(versor.cwiseProduct(volume->get_offset())); vol->source.is_converted_from_inches = from_imperial; From 3795f6b7799c9815e99c6a316240b9b5302b1ab8 Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik Date: Sat, 12 Dec 2020 16:28:01 +0100 Subject: [PATCH 012/135] Bumped up version number --- version.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.inc b/version.inc index 6a477692eb..5a0dc100d9 100644 --- a/version.inc +++ b/version.inc @@ -3,7 +3,7 @@ set(SLIC3R_APP_NAME "PrusaSlicer") set(SLIC3R_APP_KEY "PrusaSlicer") -set(SLIC3R_VERSION "2.3.0-beta2") +set(SLIC3R_VERSION "2.3.0-beta3") set(SLIC3R_BUILD_ID "PrusaSlicer-${SLIC3R_VERSION}+UNKNOWN") set(SLIC3R_RC_VERSION "2,3,0,0") set(SLIC3R_RC_VERSION_DOTS "2.3.0.0") From 9fdf8c8b8d46e26968baa5d6e6b80bfcea046e0c Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik Date: Sat, 12 Dec 2020 18:54:34 +0100 Subject: [PATCH 013/135] Fixed retrieving of the "saved in inches" flag from 3MF. Fixed "import STL from Inches" - it should always scale up even if the object is bigger than 3x3x3mm. --- src/libslic3r/Format/3mf.cpp | 2 +- src/libslic3r/Model.cpp | 6 +++--- src/libslic3r/Model.hpp | 2 +- src/slic3r/GUI/Plater.cpp | 10 ++++++---- 4 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/libslic3r/Format/3mf.cpp b/src/libslic3r/Format/3mf.cpp index dde185fe5b..49c336e621 100644 --- a/src/libslic3r/Format/3mf.cpp +++ b/src/libslic3r/Format/3mf.cpp @@ -1928,7 +1928,7 @@ namespace Slic3r { else if (metadata.key == SOURCE_OFFSET_Z_KEY) volume->source.mesh_offset(2) = ::atof(metadata.value.c_str()); else if (metadata.key == SOURCE_IN_INCHES) - volume->source.is_converted_from_inches = metadata.value.c_str() == "1"; + volume->source.is_converted_from_inches = metadata.value == "1"; else volume->config.set_deserialize(metadata.key, metadata.value); } diff --git a/src/libslic3r/Model.cpp b/src/libslic3r/Model.cpp index d7682d2762..7a1cdf8d38 100644 --- a/src/libslic3r/Model.cpp +++ b/src/libslic3r/Model.cpp @@ -461,11 +461,11 @@ bool Model::looks_like_imperial_units() const return false; } -void Model::convert_from_imperial_units() +void Model::convert_from_imperial_units(bool only_small_volumes) { double in_to_mm = 25.4; for (ModelObject* obj : this->objects) - if (obj->get_object_stl_stats().volume < 9.0) { // 9 = 3*3*3; + if (! only_small_volumes || obj->get_object_stl_stats().volume < 9.0) { // 9 = 3*3*3; obj->scale_mesh_after_creation(Vec3d(in_to_mm, in_to_mm, in_to_mm)); for (ModelVolume* v : obj->volumes) v->source.is_converted_from_inches = true; @@ -1062,7 +1062,7 @@ void ModelObject::convert_units(ModelObjectPtrs& new_objects, bool from_imperial // Perform conversion only if the target "imperial" state is different from the current one. // This check supports conversion of "mixed" set of volumes, each with different "imperial" state. - if (vol->source.is_converted_from_inches != from_imperial && + if (//vol->source.is_converted_from_inches != from_imperial && (volume_idxs.empty() || std::find(volume_idxs.begin(), volume_idxs.end(), vol_idx) != volume_idxs.end())) { vol->scale_geometry_after_creation(versor); diff --git a/src/libslic3r/Model.hpp b/src/libslic3r/Model.hpp index c10e304c32..99db132f67 100644 --- a/src/libslic3r/Model.hpp +++ b/src/libslic3r/Model.hpp @@ -1018,7 +1018,7 @@ public: bool looks_like_multipart_object() const; void convert_multipart_object(unsigned int max_extruders); bool looks_like_imperial_units() const; - void convert_from_imperial_units(); + void convert_from_imperial_units(bool only_small_volumes); // Ensures that the min z of the model is not negative void adjust_min_z(); diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 9129900d1d..d46ea35673 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -2393,22 +2393,24 @@ std::vector Plater::priv::load_files(const std::vector& input_ { // The model should now be initialized - auto convert_from_imperial_units = [](Model& model) { - model.convert_from_imperial_units(); + auto convert_from_imperial_units = [](Model& model, bool only_small_volumes) { + model.convert_from_imperial_units(only_small_volumes); wxGetApp().app_config->set("use_inches", "1"); wxGetApp().sidebar().update_ui_from_settings(); }; if (!is_project_file) { if (imperial_units) - convert_from_imperial_units(model); + // Convert even if the object is big. + convert_from_imperial_units(model, false); else if (model.looks_like_imperial_units()) { wxMessageDialog msg_dlg(q, format_wxstr(_L( "Some object(s) in file %s looks like saved in inches.\n" "Should I consider them as a saved in inches and convert them?"), from_path(filename)) + "\n", _L("The object appears to be saved in inches"), wxICON_WARNING | wxYES | wxNO); if (msg_dlg.ShowModal() == wxID_YES) - convert_from_imperial_units(model); + //FIXME up-scale only the small parts? + convert_from_imperial_units(model, true); } if (model.looks_like_multipart_object()) { From e9ee88c397aa3194b5f03eefc208a3a6d779827c Mon Sep 17 00:00:00 2001 From: rtyr <36745189+rtyr@users.noreply.github.com> Date: Sun, 13 Dec 2020 09:25:59 +0100 Subject: [PATCH 014/135] Fixed end g-code for Ender 5 --- resources/profiles/Creality.idx | 3 ++- resources/profiles/Creality.ini | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/resources/profiles/Creality.idx b/resources/profiles/Creality.idx index 0839b3dcf2..827d6795ab 100644 --- a/resources/profiles/Creality.idx +++ b/resources/profiles/Creality.idx @@ -1,7 +1,8 @@ min_slic3r_version = 2.3.0-beta2 +0.0.9 Fixed end g-code for Ender 5. 0.0.8 Slight end g-code improvements and spool weights. min_slic3r_version = 2.3.0-alpha2 -0.0.7 Updated start g-code for Creality printers +0.0.7 Updated start g-code for Creality printers. 0.0.6 Added filament profiles, adjusted temperatures, updated start g-code for some models. 0.0.5 Added 0.08mm SUPERDETAIL and 0.28mm SUPERDRAFT print profiles. Updated OPTIMAL print profile. 0.0.4 Added initial CR-10 profile, end g-code improvements. diff --git a/resources/profiles/Creality.ini b/resources/profiles/Creality.ini index 434e8bfc45..eb75b9d472 100644 --- a/resources/profiles/Creality.ini +++ b/resources/profiles/Creality.ini @@ -5,7 +5,7 @@ name = Creality # Configuration version of this file. Config file will only be installed, if the config_version differs. # This means, the server may force the PrusaSlicer configuration to be downgraded. -config_version = 0.0.8 +config_version = 0.0.9 # Where to get the updates from? config_update_url = https://files.prusa3d.com/wp-content/uploads/repository/PrusaSlicer-settings-master/live/Creality/ # changelog_url = https://files.prusa3d.com/?latest=slicer-profiles&lng=%1% @@ -678,7 +678,7 @@ start_gcode = G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 start_gcode = G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S150 ; set extruder temp for auto bed leveling\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nG28 ; home all\nG29 ; auto bed levelling\nG1 Z50 F240\nG1 X2 Y10 F3000\nM104 S[first_layer_temperature] ; set extruder temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG1 Z0.28 F240\nG92 E0\nG1 Y190 E15 F1500 ; intro line\nG1 X2.3 F5000\nG92 E0\nG1 Y10 E15 F1200 ; intro line\nG92 E0 [printer:*invertedz*] -end_gcode = {if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+2, max_print_height)} F600{endif} ; Move print bed down\nG1 X50 Y50 F{travel_speed*60} ; present print\n{if max_layer_z < max_print_height-10}G1 Z{z_offset+max_print_height-10)} F600{endif} ; Move print bed down further down\nM140 S0 ; turn off heatbed\nM104 S0 ; turn off temperature\nM107 ; turn off fan\nM84 X Y E ; disable motors +end_gcode = {if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+2, max_print_height)} F600{endif} ; Move print bed down\nG1 X50 Y50 F{travel_speed*60} ; present print\n{if max_layer_z < max_print_height-10}G1 Z{z_offset+max_print_height-10} F600{endif} ; Move print bed down further down\nM140 S0 ; turn off heatbed\nM104 S0 ; turn off temperature\nM107 ; turn off fan\nM84 X Y E ; disable motors [printer:Creality Ender-3 BLTouch] inherits = Creality Ender-3; *fastabl* From 44f71f0ed13e3b1f0aae8185decd4ab94abcd2e0 Mon Sep 17 00:00:00 2001 From: Yuri D'Elia Date: Sun, 13 Dec 2020 19:41:47 +0100 Subject: [PATCH 015/135] Include for std::atomic where needed Fixes build on linux using clang 11 --- src/libslic3r/Thread.cpp | 1 + src/slic3r/GUI/Mouse3DController.hpp | 1 + 2 files changed, 2 insertions(+) diff --git a/src/libslic3r/Thread.cpp b/src/libslic3r/Thread.cpp index 4e915f0c99..ad3e60b71e 100644 --- a/src/libslic3r/Thread.cpp +++ b/src/libslic3r/Thread.cpp @@ -6,6 +6,7 @@ #include #endif +#include #include #include #include diff --git a/src/slic3r/GUI/Mouse3DController.hpp b/src/slic3r/GUI/Mouse3DController.hpp index d99cbad1e5..af131992ce 100644 --- a/src/slic3r/GUI/Mouse3DController.hpp +++ b/src/slic3r/GUI/Mouse3DController.hpp @@ -9,6 +9,7 @@ #include "hidapi.h" #include +#include #include #include #include From 2b3d9359d4bb02fc7d4aae945bffdbb2d89608e7 Mon Sep 17 00:00:00 2001 From: David Kocik Date: Sun, 13 Dec 2020 21:21:18 +0100 Subject: [PATCH 016/135] Typo in preferences string about single instace --- src/slic3r/GUI/Preferences.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/slic3r/GUI/Preferences.cpp b/src/slic3r/GUI/Preferences.cpp index 4a608d2473..9c9ea8c4b3 100644 --- a/src/slic3r/GUI/Preferences.cpp +++ b/src/slic3r/GUI/Preferences.cpp @@ -158,11 +158,11 @@ void PreferencesDialog::build() #if __APPLE__ - def.label = L("Allow just single PrusaSlicer instance"); + def.label = L("Allow just a single PrusaSlicer instance"); def.type = coBool; def.tooltip = L("On OSX there is always only one instance of app running by default. However it is allowed to run multiple instances of same app from the command line. In such case this settings will allow only one instance."); #else - def.label = L("Allow just single PrusaSlicer instance"); + def.label = L("Allow just a single PrusaSlicer instance"); def.type = coBool; def.tooltip = L("If this is enabled, when starting PrusaSlicer and another instance of the same PrusaSlicer is already running, that instance will be reactivated instead."); #endif From 0f11ff8525d87ebb25c49e5596259b57af8be5e4 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Mon, 14 Dec 2020 09:06:19 +0100 Subject: [PATCH 017/135] Follow-up on https://github.com/prusa3d/PrusaSlicer/commit/fbf297819094958af2da1839dbdc8d59e6f4f795: Refresh Cut gizmo immediately, when state of "inches" checkbox is changed. + Fixed update of Z value, when Cut gizmo is in mm --- src/slic3r/GUI/Gizmos/GLGizmoCut.cpp | 3 +-- src/slic3r/GUI/Plater.cpp | 3 +++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp b/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp index 7d878ffe02..ffc1e7dcb3 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp @@ -180,8 +180,7 @@ void GLGizmoCut::on_render_input_window(float x, float y, float bottom_limit) ImGui::SameLine(); m_imgui->text(imperial_units ? _L("in") : _L("mm")); - if (imperial_units) - m_cut_z = cut_z * ObjectManipulation::in_to_mm; + m_cut_z = cut_z * (imperial_units ? ObjectManipulation::in_to_mm : 1.0); ImGui::Separator(); diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index d46ea35673..71205f014b 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -1336,6 +1336,9 @@ void Sidebar::update_ui_from_settings() p->object_manipulation->update_ui_from_settings(); show_info_sizer(); update_sliced_info_sizer(); + // update Cut gizmo, if it's open + p->plater->canvas3D()->update_gizmos_on_off_state(); + p->plater->canvas3D()->request_extra_frame(); } std::vector& Sidebar::combos_filament() From 57ba953b2e9aefa54bb679291a7563a383d72acc Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik Date: Mon, 14 Dec 2020 11:05:12 +0100 Subject: [PATCH 018/135] PresetUpdater - exceptions reformatted, not throwing an exception on Linux when changing file attributes, as changing file attributes may fail when writing onto FAT file system, which does not support some of the common Unix file attributes. --- src/slic3r/Utils/PresetUpdater.cpp | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/src/slic3r/Utils/PresetUpdater.cpp b/src/slic3r/Utils/PresetUpdater.cpp index 4c5075e231..21eea94286 100644 --- a/src/slic3r/Utils/PresetUpdater.cpp +++ b/src/slic3r/Utils/PresetUpdater.cpp @@ -65,17 +65,32 @@ void copy_file_fix(const fs::path& source, const fs::path& target,const std::str boost::system::error_code ec; if (fs::exists(target)) { fs::permissions(target, perms, ec); - if(ec) - throw Slic3r::CriticalException((boost::format(_utf8(L("Copying of file %1% to %2% failed. Permissions fail at target file before copying.\nError message : %3%\n This error happend during %4% phase."))) % source % target % ec.message() % caller_function_name).str()); + if (ec) { + std::string msg = GUI::format( + _L("Copying of file %1% to %2% failed. Permissions fail at target file before copying.\n" + "Error message : %3%\n This error happend during %4% phase."), + source, target, ec.message(), caller_function_name); +#if defined(__APPLE__) || defined(_WIN32) + throw Slic3r::CriticalException(msg); +#else + BOOST_LOG_TRIVIAL(debug) << msg; +#endif + } } ec.clear(); fs::copy_file(source, target, fs::copy_option::overwrite_if_exists, ec); if (ec) - throw Slic3r::CriticalException((boost::format(_utf8(L("Copying of file %1% to %2% failed.\nError message : %3%\n Copying was triggered by function: %4%"))) % source % target % ec.message() % caller_function_name).str()); + throw Slic3r::CriticalException(GUI::format( + _L("Copying of file %1% to %2% failed.\n" + "Error message : %3%\nCopying was triggered by function: %4%"), + source, target, ec.message(), caller_function_name)); ec.clear(); fs::permissions(target, perms, ec); if (ec) - throw Slic3r::CriticalException((boost::format(_utf8(L("Copying of file %1% to %2% failed. Permissions fail at target file after copying.\nError message : %3%\n Copying was triggered by function: %4%"))) % source % target % ec.message() % caller_function_name).str()); + throw Slic3r::CriticalException(GUI::format( + _L("Copying of file %1% to %2% failed. Permissions fail at target file after copying.\n" + "Error message : %3%\nCopying was triggered by function: %4%"), + source, target, ec.message(), caller_function_name)); } struct Update From c34b683970dcd7fd9640576833cff1d198af5b7f Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik Date: Mon, 14 Dec 2020 12:06:39 +0100 Subject: [PATCH 019/135] Fix of Slic3r::GUI::format/format_wxstr() for non-const wxString references. Vojtech seemingly does not understand perfect forwarding: Why Slic3r::internal::format::cook(T&& arg) is taken for non-const wxString reference? --- src/slic3r/GUI/format.hpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/slic3r/GUI/format.hpp b/src/slic3r/GUI/format.hpp index bc6fe7b1b5..d7b0256c6d 100644 --- a/src/slic3r/GUI/format.hpp +++ b/src/slic3r/GUI/format.hpp @@ -45,6 +45,11 @@ namespace internal { inline const utf8_buffer cook(const wxString &arg) { return utf8_buffer { arg.ToUTF8() }; } + // Vojtech seemingly does not understand perfect forwarding: + // Why Slic3r::internal::format::cook(T&& arg) is taken for non-const wxString reference? + inline const utf8_buffer cook(wxString &arg) { + return utf8_buffer { arg.ToUTF8() }; + } } } From fef729b75ac431d21b6bdee38254112e79af1cd4 Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik Date: Mon, 14 Dec 2020 12:23:29 +0100 Subject: [PATCH 020/135] Follow-up to c34b683970dcd7fd9640576833cff1d198af5b7f Fix of Slic3r::GUI::format/format_wxstr() for wxString&& --- src/slic3r/GUI/format.hpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/slic3r/GUI/format.hpp b/src/slic3r/GUI/format.hpp index d7b0256c6d..894803917d 100644 --- a/src/slic3r/GUI/format.hpp +++ b/src/slic3r/GUI/format.hpp @@ -50,6 +50,9 @@ namespace internal { inline const utf8_buffer cook(wxString &arg) { return utf8_buffer { arg.ToUTF8() }; } + inline const utf8_buffer cook(wxString &&arg) { + return utf8_buffer{ arg.ToUTF8() }; + } } } From 530148575b06fbf423166ced0d57c7b9eeca1dd4 Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik Date: Mon, 14 Dec 2020 12:36:55 +0100 Subject: [PATCH 021/135] Avoid crossing perimeters max detour could newly be specified in percentage of the direct path. --- src/libslic3r/GCode/AvoidCrossingPerimeters.cpp | 13 ++++++++++--- src/libslic3r/PrintConfig.cpp | 5 +++-- src/libslic3r/PrintConfig.hpp | 2 +- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/libslic3r/GCode/AvoidCrossingPerimeters.cpp b/src/libslic3r/GCode/AvoidCrossingPerimeters.cpp index 8262c38570..8758450c15 100644 --- a/src/libslic3r/GCode/AvoidCrossingPerimeters.cpp +++ b/src/libslic3r/GCode/AvoidCrossingPerimeters.cpp @@ -903,9 +903,16 @@ Polyline AvoidCrossingPerimeters::travel_to(const GCode &gcodegen, const Point & travel_intersection_count = 0; } - double max_detour_length scale_(gcodegen.config().avoid_crossing_perimeters_max_detour); - if (max_detour_length > 0 && (result_pl.length() - travel.length()) > max_detour_length) - result_pl = {start, end}; + ConfigOptionFloatOrPercent &opt_max_detour = gcodegen.config().avoid_crossing_perimeters_max_detour; + if (opt_max_detour.value > 0) { + double direct_length = travel.length(); + double detour = result_pl.length() - direct_length; + double max_detour_length = opt_max_detour.percent ? + direct_length * 0.01 * opt_max_detour.value : + scale_(opt_max_detour.value); + if (detour > max_detour_length) + result_pl = {start, end}; + } if (use_external) { result_pl.translate(-scaled_origin); diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 2fa30cc241..8b6f7b34cd 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -188,11 +188,12 @@ void PrintConfigDef::init_fff_params() def->label = L("Avoid crossing perimeters - Max detour length"); def->category = L("Layers and Perimeters"); def->tooltip = L("The maximum detour length for avoid crossing perimeters. " - "If the detour is longer than this value, avoid crossing perimeters is not applied for this path."); + "If the detour is longer than this value, avoid crossing perimeters is not applied for this travel path. " + "Detour length could be specified either as an absolute value or as percentage (for example 50%) of a direct travel path."); def->sidetext = L("mm (zero to disable)"); def->min = 0; def->mode = comExpert; - def->set_default_value(new ConfigOptionFloat(0.)); + def->set_default_value(new ConfigOptionFloatOrPercent(0.)); def = this->add("bed_temperature", coInts); def->label = L("Other layers"); diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index f30d2e8751..b5896891ef 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -828,7 +828,7 @@ class PrintConfig : public MachineEnvelopeConfig, public GCodeConfig public: ConfigOptionBool avoid_crossing_perimeters; - ConfigOptionFloat avoid_crossing_perimeters_max_detour; + ConfigOptionFloatOrPercent avoid_crossing_perimeters_max_detour; ConfigOptionPoints bed_shape; ConfigOptionInts bed_temperature; ConfigOptionFloat bridge_acceleration; From b5f95dd4b407e109c94b6066a4731bab41ca5f81 Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik Date: Mon, 14 Dec 2020 12:36:55 +0100 Subject: [PATCH 022/135] Avoid crossing perimeters max detour could newly be specified in percentage of the direct path. --- src/libslic3r/GCode/AvoidCrossingPerimeters.cpp | 13 ++++++++++--- src/libslic3r/PrintConfig.cpp | 5 +++-- src/libslic3r/PrintConfig.hpp | 2 +- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/libslic3r/GCode/AvoidCrossingPerimeters.cpp b/src/libslic3r/GCode/AvoidCrossingPerimeters.cpp index 8262c38570..88411607fc 100644 --- a/src/libslic3r/GCode/AvoidCrossingPerimeters.cpp +++ b/src/libslic3r/GCode/AvoidCrossingPerimeters.cpp @@ -903,9 +903,16 @@ Polyline AvoidCrossingPerimeters::travel_to(const GCode &gcodegen, const Point & travel_intersection_count = 0; } - double max_detour_length scale_(gcodegen.config().avoid_crossing_perimeters_max_detour); - if (max_detour_length > 0 && (result_pl.length() - travel.length()) > max_detour_length) - result_pl = {start, end}; + const ConfigOptionFloatOrPercent &opt_max_detour = gcodegen.config().avoid_crossing_perimeters_max_detour; + if (opt_max_detour.value > 0) { + double direct_length = travel.length(); + double detour = result_pl.length() - direct_length; + double max_detour_length = opt_max_detour.percent ? + direct_length * 0.01 * opt_max_detour.value : + scale_(opt_max_detour.value); + if (detour > max_detour_length) + result_pl = {start, end}; + } if (use_external) { result_pl.translate(-scaled_origin); diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 2fa30cc241..db0586f36e 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -188,11 +188,12 @@ void PrintConfigDef::init_fff_params() def->label = L("Avoid crossing perimeters - Max detour length"); def->category = L("Layers and Perimeters"); def->tooltip = L("The maximum detour length for avoid crossing perimeters. " - "If the detour is longer than this value, avoid crossing perimeters is not applied for this path."); + "If the detour is longer than this value, avoid crossing perimeters is not applied for this travel path. " + "Detour length could be specified either as an absolute value or as percentage (for example 50%) of a direct travel path."); def->sidetext = L("mm (zero to disable)"); def->min = 0; def->mode = comExpert; - def->set_default_value(new ConfigOptionFloat(0.)); + def->set_default_value(new ConfigOptionFloatOrPercent(0., false)); def = this->add("bed_temperature", coInts); def->label = L("Other layers"); diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index f30d2e8751..b5896891ef 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -828,7 +828,7 @@ class PrintConfig : public MachineEnvelopeConfig, public GCodeConfig public: ConfigOptionBool avoid_crossing_perimeters; - ConfigOptionFloat avoid_crossing_perimeters_max_detour; + ConfigOptionFloatOrPercent avoid_crossing_perimeters_max_detour; ConfigOptionPoints bed_shape; ConfigOptionInts bed_temperature; ConfigOptionFloat bridge_acceleration; From 12303d93d568c0c21a0bacfad0338b5dd4a63f10 Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik Date: Mon, 14 Dec 2020 12:49:16 +0100 Subject: [PATCH 023/135] Fixed previous merge --- src/libslic3r/PrintConfig.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 889e63ca16..db0586f36e 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -193,11 +193,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm (zero to disable)"); def->min = 0; def->mode = comExpert; -<<<<<<< HEAD def->set_default_value(new ConfigOptionFloatOrPercent(0., false)); -======= - def->set_default_value(new ConfigOptionFloatOrPercent(0.)); ->>>>>>> 530148575b06fbf423166ced0d57c7b9eeca1dd4 def = this->add("bed_temperature", coInts); def->label = L("Other layers"); From 9605e235b8b84637f0ac73b3dc15b7d4672a7b72 Mon Sep 17 00:00:00 2001 From: enricoturri1966 Date: Mon, 14 Dec 2020 14:02:50 +0100 Subject: [PATCH 024/135] #5378 - Do not apply machine limits for non-Marlin firmwares --- src/libslic3r/GCode/GCodeProcessor.cpp | 101 +++++++++++++------------ 1 file changed, 51 insertions(+), 50 deletions(-) diff --git a/src/libslic3r/GCode/GCodeProcessor.cpp b/src/libslic3r/GCode/GCodeProcessor.cpp index f36d3edb2a..a9d4176092 100644 --- a/src/libslic3r/GCode/GCodeProcessor.cpp +++ b/src/libslic3r/GCode/GCodeProcessor.cpp @@ -540,7 +540,7 @@ void GCodeProcessor::apply_config(const PrintConfig& config) m_filament_diameters[i] = static_cast(config.filament_diameter.values[i]); } - if (config.machine_limits_usage.value != MachineLimitsUsage::Ignore) + if (m_flavor == gcfMarlin && config.machine_limits_usage.value != MachineLimitsUsage::Ignore) m_time_processor.machine_limits = reinterpret_cast(config); // Filament load / unload times are not specific to a firmware flavor. Let anybody use it if they find it useful. @@ -620,7 +620,6 @@ void GCodeProcessor::apply_config(const DynamicPrintConfig& config) } } - // replace missing values with default std::string default_color = "#FF8000"; for (size_t i = 0; i < m_result.extruder_colors.size(); ++i) { @@ -649,69 +648,71 @@ void GCodeProcessor::apply_config(const DynamicPrintConfig& config) } } - const ConfigOptionFloats* machine_max_acceleration_x = config.option("machine_max_acceleration_x"); - if (machine_max_acceleration_x != nullptr) - m_time_processor.machine_limits.machine_max_acceleration_x.values = machine_max_acceleration_x->values; + if (m_flavor == gcfMarlin) { + const ConfigOptionFloats* machine_max_acceleration_x = config.option("machine_max_acceleration_x"); + if (machine_max_acceleration_x != nullptr) + m_time_processor.machine_limits.machine_max_acceleration_x.values = machine_max_acceleration_x->values; - const ConfigOptionFloats* machine_max_acceleration_y = config.option("machine_max_acceleration_y"); - if (machine_max_acceleration_y != nullptr) - m_time_processor.machine_limits.machine_max_acceleration_y.values = machine_max_acceleration_y->values; + const ConfigOptionFloats* machine_max_acceleration_y = config.option("machine_max_acceleration_y"); + if (machine_max_acceleration_y != nullptr) + m_time_processor.machine_limits.machine_max_acceleration_y.values = machine_max_acceleration_y->values; - const ConfigOptionFloats* machine_max_acceleration_z = config.option("machine_max_acceleration_z"); - if (machine_max_acceleration_z != nullptr) - m_time_processor.machine_limits.machine_max_acceleration_z.values = machine_max_acceleration_z->values; + const ConfigOptionFloats* machine_max_acceleration_z = config.option("machine_max_acceleration_z"); + if (machine_max_acceleration_z != nullptr) + m_time_processor.machine_limits.machine_max_acceleration_z.values = machine_max_acceleration_z->values; - const ConfigOptionFloats* machine_max_acceleration_e = config.option("machine_max_acceleration_e"); - if (machine_max_acceleration_e != nullptr) - m_time_processor.machine_limits.machine_max_acceleration_e.values = machine_max_acceleration_e->values; + const ConfigOptionFloats* machine_max_acceleration_e = config.option("machine_max_acceleration_e"); + if (machine_max_acceleration_e != nullptr) + m_time_processor.machine_limits.machine_max_acceleration_e.values = machine_max_acceleration_e->values; - const ConfigOptionFloats* machine_max_feedrate_x = config.option("machine_max_feedrate_x"); - if (machine_max_feedrate_x != nullptr) - m_time_processor.machine_limits.machine_max_feedrate_x.values = machine_max_feedrate_x->values; + const ConfigOptionFloats* machine_max_feedrate_x = config.option("machine_max_feedrate_x"); + if (machine_max_feedrate_x != nullptr) + m_time_processor.machine_limits.machine_max_feedrate_x.values = machine_max_feedrate_x->values; - const ConfigOptionFloats* machine_max_feedrate_y = config.option("machine_max_feedrate_y"); - if (machine_max_feedrate_y != nullptr) - m_time_processor.machine_limits.machine_max_feedrate_y.values = machine_max_feedrate_y->values; + const ConfigOptionFloats* machine_max_feedrate_y = config.option("machine_max_feedrate_y"); + if (machine_max_feedrate_y != nullptr) + m_time_processor.machine_limits.machine_max_feedrate_y.values = machine_max_feedrate_y->values; - const ConfigOptionFloats* machine_max_feedrate_z = config.option("machine_max_feedrate_z"); - if (machine_max_feedrate_z != nullptr) - m_time_processor.machine_limits.machine_max_feedrate_z.values = machine_max_feedrate_z->values; + const ConfigOptionFloats* machine_max_feedrate_z = config.option("machine_max_feedrate_z"); + if (machine_max_feedrate_z != nullptr) + m_time_processor.machine_limits.machine_max_feedrate_z.values = machine_max_feedrate_z->values; - const ConfigOptionFloats* machine_max_feedrate_e = config.option("machine_max_feedrate_e"); - if (machine_max_feedrate_e != nullptr) - m_time_processor.machine_limits.machine_max_feedrate_e.values = machine_max_feedrate_e->values; + const ConfigOptionFloats* machine_max_feedrate_e = config.option("machine_max_feedrate_e"); + if (machine_max_feedrate_e != nullptr) + m_time_processor.machine_limits.machine_max_feedrate_e.values = machine_max_feedrate_e->values; - const ConfigOptionFloats* machine_max_jerk_x = config.option("machine_max_jerk_x"); - if (machine_max_jerk_x != nullptr) - m_time_processor.machine_limits.machine_max_jerk_x.values = machine_max_jerk_x->values; + const ConfigOptionFloats* machine_max_jerk_x = config.option("machine_max_jerk_x"); + if (machine_max_jerk_x != nullptr) + m_time_processor.machine_limits.machine_max_jerk_x.values = machine_max_jerk_x->values; - const ConfigOptionFloats* machine_max_jerk_y = config.option("machine_max_jerk_y"); - if (machine_max_jerk_y != nullptr) - m_time_processor.machine_limits.machine_max_jerk_y.values = machine_max_jerk_y->values; + const ConfigOptionFloats* machine_max_jerk_y = config.option("machine_max_jerk_y"); + if (machine_max_jerk_y != nullptr) + m_time_processor.machine_limits.machine_max_jerk_y.values = machine_max_jerk_y->values; - const ConfigOptionFloats* machine_max_jerk_z = config.option("machine_max_jerkz"); - if (machine_max_jerk_z != nullptr) - m_time_processor.machine_limits.machine_max_jerk_z.values = machine_max_jerk_z->values; + const ConfigOptionFloats* machine_max_jerk_z = config.option("machine_max_jerkz"); + if (machine_max_jerk_z != nullptr) + m_time_processor.machine_limits.machine_max_jerk_z.values = machine_max_jerk_z->values; - const ConfigOptionFloats* machine_max_jerk_e = config.option("machine_max_jerk_e"); - if (machine_max_jerk_e != nullptr) - m_time_processor.machine_limits.machine_max_jerk_e.values = machine_max_jerk_e->values; + const ConfigOptionFloats* machine_max_jerk_e = config.option("machine_max_jerk_e"); + if (machine_max_jerk_e != nullptr) + m_time_processor.machine_limits.machine_max_jerk_e.values = machine_max_jerk_e->values; - const ConfigOptionFloats* machine_max_acceleration_extruding = config.option("machine_max_acceleration_extruding"); - if (machine_max_acceleration_extruding != nullptr) - m_time_processor.machine_limits.machine_max_acceleration_extruding.values = machine_max_acceleration_extruding->values; + const ConfigOptionFloats* machine_max_acceleration_extruding = config.option("machine_max_acceleration_extruding"); + if (machine_max_acceleration_extruding != nullptr) + m_time_processor.machine_limits.machine_max_acceleration_extruding.values = machine_max_acceleration_extruding->values; - const ConfigOptionFloats* machine_max_acceleration_retracting = config.option("machine_max_acceleration_retracting"); - if (machine_max_acceleration_retracting != nullptr) - m_time_processor.machine_limits.machine_max_acceleration_retracting.values = machine_max_acceleration_retracting->values; + const ConfigOptionFloats* machine_max_acceleration_retracting = config.option("machine_max_acceleration_retracting"); + if (machine_max_acceleration_retracting != nullptr) + m_time_processor.machine_limits.machine_max_acceleration_retracting.values = machine_max_acceleration_retracting->values; - const ConfigOptionFloats* machine_min_extruding_rate = config.option("machine_min_extruding_rate"); - if (machine_min_extruding_rate != nullptr) - m_time_processor.machine_limits.machine_min_extruding_rate.values = machine_min_extruding_rate->values; + const ConfigOptionFloats* machine_min_extruding_rate = config.option("machine_min_extruding_rate"); + if (machine_min_extruding_rate != nullptr) + m_time_processor.machine_limits.machine_min_extruding_rate.values = machine_min_extruding_rate->values; - const ConfigOptionFloats* machine_min_travel_rate = config.option("machine_min_travel_rate"); - if (machine_min_travel_rate != nullptr) - m_time_processor.machine_limits.machine_min_travel_rate.values = machine_min_travel_rate->values; + const ConfigOptionFloats* machine_min_travel_rate = config.option("machine_min_travel_rate"); + if (machine_min_travel_rate != nullptr) + m_time_processor.machine_limits.machine_min_travel_rate.values = machine_min_travel_rate->values; + } for (size_t i = 0; i < static_cast(PrintEstimatedTimeStatistics::ETimeMode::Count); ++i) { float max_acceleration = get_option_value(m_time_processor.machine_limits.machine_max_acceleration_extruding, i); From cdb05d103aac894b7bea0f9fd1ba0c6d4601af78 Mon Sep 17 00:00:00 2001 From: enricoturri1966 Date: Mon, 14 Dec 2020 15:11:38 +0100 Subject: [PATCH 025/135] Tweaked clamping of max toolpaths width --- src/libslic3r/GCode/GCodeProcessor.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libslic3r/GCode/GCodeProcessor.cpp b/src/libslic3r/GCode/GCodeProcessor.cpp index a9d4176092..2a5a08ce80 100644 --- a/src/libslic3r/GCode/GCodeProcessor.cpp +++ b/src/libslic3r/GCode/GCodeProcessor.cpp @@ -1773,7 +1773,7 @@ void GCodeProcessor::process_G1(const GCodeReader::GCodeLine& line) m_width = delta_pos[E] * static_cast(M_PI * sqr(filament_radius)) / (delta_xyz * m_height) + static_cast(1.0 - 0.25 * M_PI) * m_height; // clamp width to avoid artifacts which may arise from wrong values of m_height - m_width = std::min(m_width, 1.0f); + m_width = std::min(m_width, std::max(1.0f, 4.0f * m_height)); #if ENABLE_GCODE_VIEWER_DATA_CHECKING m_width_compare.update(m_width, m_extrusion_role); From 7b9f2093bb1fc9e8a6b2d60f1d71e831f12b672b Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik Date: Mon, 14 Dec 2020 15:58:39 +0100 Subject: [PATCH 026/135] Configuration layer: Support for vectors of FloatsOrPercents and FloatsOrPercentsNullable, to support further filament overrides of Print preset values, namely Avoid Crossing Perimeters. --- src/libslic3r/Config.cpp | 6 ++ src/libslic3r/Config.hpp | 139 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 145 insertions(+) diff --git a/src/libslic3r/Config.cpp b/src/libslic3r/Config.cpp index 03ce0ad406..b6b496ae91 100644 --- a/src/libslic3r/Config.cpp +++ b/src/libslic3r/Config.cpp @@ -233,6 +233,7 @@ ConfigOption* ConfigOptionDef::create_empty_option() const case coFloats: return new ConfigOptionFloatsNullable(); case coInts: return new ConfigOptionIntsNullable(); case coPercents: return new ConfigOptionPercentsNullable(); + case coFloatsOrPercents: return new ConfigOptionFloatsOrPercentsNullable(); case coBools: return new ConfigOptionBoolsNullable(); default: throw Slic3r::RuntimeError(std::string("Unknown option type for nullable option ") + this->label); } @@ -247,6 +248,7 @@ ConfigOption* ConfigOptionDef::create_empty_option() const case coPercent: return new ConfigOptionPercent(); case coPercents: return new ConfigOptionPercents(); case coFloatOrPercent: return new ConfigOptionFloatOrPercent(); + case coFloatsOrPercents: return new ConfigOptionFloatsOrPercents(); case coPoint: return new ConfigOptionPoint(); case coPoints: return new ConfigOptionPoints(); case coPoint3: return new ConfigOptionPoint3(); @@ -950,6 +952,8 @@ CEREAL_REGISTER_TYPE(Slic3r::ConfigOptionPercent) CEREAL_REGISTER_TYPE(Slic3r::ConfigOptionPercents) CEREAL_REGISTER_TYPE(Slic3r::ConfigOptionPercentsNullable) CEREAL_REGISTER_TYPE(Slic3r::ConfigOptionFloatOrPercent) +CEREAL_REGISTER_TYPE(Slic3r::ConfigOptionFloatsOrPercents) +CEREAL_REGISTER_TYPE(Slic3r::ConfigOptionFloatsOrPercentsNullable) CEREAL_REGISTER_TYPE(Slic3r::ConfigOptionPoint) CEREAL_REGISTER_TYPE(Slic3r::ConfigOptionPoints) CEREAL_REGISTER_TYPE(Slic3r::ConfigOptionPoint3) @@ -984,6 +988,8 @@ CEREAL_REGISTER_POLYMORPHIC_RELATION(Slic3r::ConfigOptionFloat, Slic3r::ConfigOp CEREAL_REGISTER_POLYMORPHIC_RELATION(Slic3r::ConfigOptionFloats, Slic3r::ConfigOptionPercents) CEREAL_REGISTER_POLYMORPHIC_RELATION(Slic3r::ConfigOptionFloats, Slic3r::ConfigOptionPercentsNullable) CEREAL_REGISTER_POLYMORPHIC_RELATION(Slic3r::ConfigOptionPercent, Slic3r::ConfigOptionFloatOrPercent) +CEREAL_REGISTER_POLYMORPHIC_RELATION(Slic3r::ConfigOptionVector, Slic3r::ConfigOptionFloatsOrPercents) +CEREAL_REGISTER_POLYMORPHIC_RELATION(Slic3r::ConfigOptionVector, Slic3r::ConfigOptionFloatsOrPercentsNullable) CEREAL_REGISTER_POLYMORPHIC_RELATION(Slic3r::ConfigOptionSingle, Slic3r::ConfigOptionPoint) CEREAL_REGISTER_POLYMORPHIC_RELATION(Slic3r::ConfigOptionVector, Slic3r::ConfigOptionPoints) CEREAL_REGISTER_POLYMORPHIC_RELATION(Slic3r::ConfigOptionSingle, Slic3r::ConfigOptionPoint3) diff --git a/src/libslic3r/Config.hpp b/src/libslic3r/Config.hpp index 6ef6f143c5..8cdacd59f3 100644 --- a/src/libslic3r/Config.hpp +++ b/src/libslic3r/Config.hpp @@ -86,6 +86,8 @@ enum ConfigOptionType { coPercents = coPercent + coVectorType, // a fraction or an absolute value coFloatOrPercent = 5, + // vector of the above + coFloatsOrPercents = coFloatOrPercent + coVectorType, // single 2d point (Point2f). Currently not used. coPoint = 6, // vector of 2d points (Point2f). Currently used for the definition of the print bed and for the extruder offsets. @@ -889,6 +891,143 @@ private: template void serialize(Archive &ar) { ar(cereal::base_class(this), percent); } }; + +struct FloatOrPercent +{ + double value; + bool percent; + +private: + friend class cereal::access; + template void serialize(Archive & ar) { ar(this->value); ar(this->percent); } +}; + +inline bool operator==(const FloatOrPercent &l, const FloatOrPercent &r) +{ + return l.value == r.value && l.percent == r.percent; +} + +inline bool operator!=(const FloatOrPercent& l, const FloatOrPercent& r) +{ + return !(l == r); +} + +template +class ConfigOptionFloatsOrPercentsTempl : public ConfigOptionVector +{ +public: + ConfigOptionFloatsOrPercentsTempl() : ConfigOptionVector() {} + explicit ConfigOptionFloatsOrPercentsTempl(size_t n, FloatOrPercent value) : ConfigOptionVector(n, value) {} + explicit ConfigOptionFloatsOrPercentsTempl(std::initializer_list il) : ConfigOptionVector(std::move(il)) {} + explicit ConfigOptionFloatsOrPercentsTempl(const std::vector &vec) : ConfigOptionVector(vec) {} + explicit ConfigOptionFloatsOrPercentsTempl(std::vector &&vec) : ConfigOptionVector(std::move(vec)) {} + + static ConfigOptionType static_type() { return coFloatsOrPercents; } + ConfigOptionType type() const override { return static_type(); } + ConfigOption* clone() const override { return new ConfigOptionFloatsOrPercentsTempl(*this); } + bool operator==(const ConfigOptionFloatsOrPercentsTempl &rhs) const { return vectors_equal(this->values, rhs.values); } + bool operator==(const ConfigOption &rhs) const override { + if (rhs.type() != this->type()) + throw Slic3r::RuntimeError("ConfigOptionFloatsOrPercentsTempl: Comparing incompatible types"); + assert(dynamic_cast*>(&rhs)); + return vectors_equal(this->values, static_cast*>(&rhs)->values); + } + // Could a special "nil" value be stored inside the vector, indicating undefined value? + bool nullable() const override { return NULLABLE; } + // Special "nil" value to be stored into the vector if this->supports_nil(). + static FloatOrPercent nil_value() { return { std::numeric_limits::quiet_NaN(), false }; } + // A scalar is nil, or all values of a vector are nil. + bool is_nil() const override { for (auto v : this->values) if (! std::isnan(v.value)) return false; return true; } + bool is_nil(size_t idx) const override { return std::isnan(this->values[idx].value); } + + std::string serialize() const override + { + std::ostringstream ss; + for (const FloatOrPercent &v : this->values) { + if (&v != &this->values.front()) + ss << ","; + serialize_single_value(ss, v); + } + return ss.str(); + } + + std::vector vserialize() const override + { + std::vector vv; + vv.reserve(this->values.size()); + for (const FloatOrPercent &v : this->values) { + std::ostringstream ss; + serialize_single_value(ss, v); + vv.push_back(ss.str()); + } + return vv; + } + + bool deserialize(const std::string &str, bool append = false) override + { + if (! append) + this->values.clear(); + std::istringstream is(str); + std::string item_str; + while (std::getline(is, item_str, ',')) { + boost::trim(item_str); + if (item_str == "nil") { + if (NULLABLE) + this->values.push_back(nil_value()); + else + throw Slic3r::RuntimeError("Deserializing nil into a non-nullable object"); + } else { + bool percent = item_str.find_first_of("%") != std::string::npos; + std::istringstream iss(item_str); + double value; + iss >> value; + this->values.push_back({ value, percent }); + } + } + return true; + } + + ConfigOptionFloatsOrPercentsTempl& operator=(const ConfigOption *opt) + { + this->set(opt); + return *this; + } + +protected: + void serialize_single_value(std::ostringstream &ss, const FloatOrPercent &v) const { + if (std::isfinite(v.value)) { + ss << v.value; + if (v.percent) + ss << "%"; + } else if (std::isnan(v.value)) { + if (NULLABLE) + ss << "nil"; + else + throw Slic3r::RuntimeError("Serializing NaN"); + } else + throw Slic3r::RuntimeError("Serializing invalid number"); + } + static bool vectors_equal(const std::vector &v1, const std::vector &v2) { + if (NULLABLE) { + if (v1.size() != v2.size()) + return false; + for (auto it1 = v1.begin(), it2 = v2.begin(); it1 != v1.end(); ++ it1, ++ it2) + if (! ((std::isnan(it1->value) && std::isnan(it2->value)) || *it1 == *it2)) + return false; + return true; + } else + // Not supporting nullable values, the default vector compare is cheaper. + return v1 == v2; + } + +private: + friend class cereal::access; + template void serialize(Archive &ar) { ar(cereal::base_class>(this)); } +}; + +using ConfigOptionFloatsOrPercents = ConfigOptionFloatsOrPercentsTempl; +using ConfigOptionFloatsOrPercentsNullable = ConfigOptionFloatsOrPercentsTempl; + class ConfigOptionPoint : public ConfigOptionSingle { public: From d70d54d4d32c86d9a61fbe2e3ccf33a6fda2eb2a Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik Date: Mon, 14 Dec 2020 16:22:40 +0100 Subject: [PATCH 027/135] UndoRedo extension:: has_undo_snapshot(timestamp) to query whether one can undo to a snapshot with a specific timestamp. Useful for notifications, that want to Undo a specific operation, to verify whether such operation is still valid. --- src/slic3r/Utils/UndoRedo.cpp | 7 +++++++ src/slic3r/Utils/UndoRedo.hpp | 2 ++ 2 files changed, 9 insertions(+) diff --git a/src/slic3r/Utils/UndoRedo.cpp b/src/slic3r/Utils/UndoRedo.cpp index b6d22d1e62..edf6b917a1 100644 --- a/src/slic3r/Utils/UndoRedo.cpp +++ b/src/slic3r/Utils/UndoRedo.cpp @@ -548,6 +548,7 @@ public: void load_snapshot(size_t timestamp, Slic3r::Model& model, Slic3r::GUI::GLGizmosManager& gizmos); bool has_undo_snapshot() const; + bool has_undo_snapshot(size_t time_to_load) const; bool has_redo_snapshot() const; bool undo(Slic3r::Model &model, const Slic3r::GUI::Selection &selection, Slic3r::GUI::GLGizmosManager &gizmos, const SnapshotData &snapshot_data, size_t jump_to_time); bool redo(Slic3r::Model &model, Slic3r::GUI::GLGizmosManager &gizmos, size_t jump_to_time); @@ -907,6 +908,11 @@ bool StackImpl::has_undo_snapshot() const return -- it != m_snapshots.begin(); } +bool StackImpl::has_undo_snapshot(size_t time_to_load) const +{ + return time_to_load < m_active_snapshot_time && std::binary_search(m_snapshots.begin(), m_snapshots.end(), Snapshot(time_to_load)); +} + bool StackImpl::has_redo_snapshot() const { assert(this->valid()); @@ -1083,6 +1089,7 @@ void Stack::release_least_recently_used() { pimpl->release_least_recently_used() void Stack::take_snapshot(const std::string& snapshot_name, const Slic3r::Model& model, const Slic3r::GUI::Selection& selection, const Slic3r::GUI::GLGizmosManager& gizmos, const SnapshotData &snapshot_data) { pimpl->take_snapshot(snapshot_name, model, selection, gizmos, snapshot_data); } bool Stack::has_undo_snapshot() const { return pimpl->has_undo_snapshot(); } +bool Stack::has_undo_snapshot(size_t time_to_load) const { return pimpl->has_undo_snapshot(time_to_load); } bool Stack::has_redo_snapshot() const { return pimpl->has_redo_snapshot(); } bool Stack::undo(Slic3r::Model& model, const Slic3r::GUI::Selection& selection, Slic3r::GUI::GLGizmosManager& gizmos, const SnapshotData &snapshot_data, size_t time_to_load) { return pimpl->undo(model, selection, gizmos, snapshot_data, time_to_load); } diff --git a/src/slic3r/Utils/UndoRedo.hpp b/src/slic3r/Utils/UndoRedo.hpp index 2901eacebf..e120c4f790 100644 --- a/src/slic3r/Utils/UndoRedo.hpp +++ b/src/slic3r/Utils/UndoRedo.hpp @@ -107,6 +107,8 @@ public: // To be queried to enable / disable the Undo / Redo buttons at the UI. bool has_undo_snapshot() const; bool has_redo_snapshot() const; + // To query whether one can undo to a snapshot. Useful for notifications, that want to Undo a specific operation. + bool has_undo_snapshot(size_t time_to_load) const; // Roll back the time. If time_to_load is SIZE_MAX, the previous snapshot is activated. // Undoing an action may need to take a snapshot of the current application state, so that redo to the current state is possible. From 159dde511ec90dedaa8feb5dec3c8d2b560e1601 Mon Sep 17 00:00:00 2001 From: David Kocik Date: Mon, 14 Dec 2020 08:57:45 +0100 Subject: [PATCH 028/135] Changed condition for showing Open new instance item in dock icon menu (mac). Fix of #5463. --- src/slic3r/GUI/MainFrame.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index 9482258def..db4183b407 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -59,10 +59,9 @@ public: PrusaSlicerTaskBarIcon(wxTaskBarIconType iconType = wxTBI_DEFAULT_TYPE) : wxTaskBarIcon(iconType) {} wxMenu *CreatePopupMenu() override { wxMenu *menu = new wxMenu; - if(wxGetApp().app_config->get("single_instance") == "1") { + if(wxGetApp().app_config->get("single_instance") == "0") { // Only allow opening a new PrusaSlicer instance on OSX if "single_instance" is disabled, // as starting new instances would interfere with the locking mechanism of "single_instance" support. - //FIXME Vojtech thinks the condition is wrong. append_menu_item(menu, wxID_ANY, _L("Open new instance"), _L("Open a new PrusaSlicer instance"), [this](wxCommandEvent&) { start_new_slicer(); }, "", nullptr); } From a5d363a9f4c59c662f05f81ea88242d255035d0e Mon Sep 17 00:00:00 2001 From: Lukas Matena Date: Mon, 14 Dec 2020 14:19:35 +0100 Subject: [PATCH 029/135] Do not emit M1 gcode for firmwares other than Marlin (after MM priming) The M1 gcode is apparently only supported on Marlin, others do not support it or use it for something else This should fix #5441 --- src/libslic3r/GCode.cpp | 39 ++++++++++++++++++++++++--------------- 1 file changed, 24 insertions(+), 15 deletions(-) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index fab7a70582..830fff8f98 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -413,14 +413,11 @@ namespace Slic3r { std::string WipeTowerIntegration::prime(GCode& gcodegen) { - assert(m_layer_idx == 0); std::string gcode; - for (const WipeTower::ToolChangeResult& tcr : m_priming) { if (! tcr.extrusions.empty()) gcode += append_tcr(gcodegen, tcr, tcr.new_tool); } - return gcode; } @@ -1243,18 +1240,30 @@ void GCode::_do_export(Print& print, FILE* file, ThumbnailsGeneratorCallback thu bbox_print.merge(get_wipe_tower_extrusions_extents(print, twolayers_printz)); BoundingBoxf bbox_prime(get_wipe_tower_priming_extrusions_extents(print)); bbox_prime.offset(0.5f); - // Beep for 500ms, tone 800Hz. Yet better, play some Morse. - _write(file, this->retract()); - _write(file, "M300 S800 P500\n"); - if (bbox_prime.overlap(bbox_print)) { - // Wait for the user to remove the priming extrusions, otherwise they would - // get covered by the print. - _write(file, "M1 Remove priming towers and click button.\n"); - } - else { - // Just wait for a bit to let the user check, that the priming succeeded. - //TODO Add a message explaining what the printer is waiting for. This needs a firmware fix. - _write(file, "M1 S10\n"); + bool overlap = bbox_prime.overlap(bbox_print); + + if (print.config().gcode_flavor == gcfMarlin) { + _write(file, this->retract()); + _write(file, "M300 S800 P500\n"); // Beep for 500ms, tone 800Hz. + if (overlap) { + // Wait for the user to remove the priming extrusions. + _write(file, "M1 Remove priming towers and click button.\n"); + } else { + // Just wait for a bit to let the user check, that the priming succeeded. + //TODO Add a message explaining what the printer is waiting for. This needs a firmware fix. + _write(file, "M1 S10\n"); + } + } else { + // This is not Marlin, M1 command is probably not supported. + // (See https://github.com/prusa3d/PrusaSlicer/issues/5441.) + if (overlap) { + print.active_step_add_warning(PrintStateBase::WarningLevel::CRITICAL, + L("Your print is very close to the priming regions. " + "Make sure there is no collision.")); + } else { + // Just continue printing, no action necessary. + } + } } print.throw_if_canceled(); From 5553762d9c5c9cfeac0cc9bd1f413235430757d2 Mon Sep 17 00:00:00 2001 From: Lukas Matena Date: Mon, 14 Dec 2020 14:22:43 +0100 Subject: [PATCH 030/135] Do not remove custom supports/seams when converting units to imperial --- src/libslic3r/Model.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/Model.cpp b/src/libslic3r/Model.cpp index 7a1cdf8d38..c25026cc49 100644 --- a/src/libslic3r/Model.cpp +++ b/src/libslic3r/Model.cpp @@ -1042,8 +1042,6 @@ void ModelObject::convert_units(ModelObjectPtrs& new_objects, bool from_imperial int vol_idx = 0; for (ModelVolume* volume : volumes) { - volume->supported_facets.clear(); - volume->seam_facets.clear(); if (!volume->mesh().empty()) { TriangleMesh mesh(volume->mesh()); mesh.require_shared_vertices(); @@ -1060,6 +1058,9 @@ void ModelObject::convert_units(ModelObjectPtrs& new_objects, bool from_imperial vol->source.object_idx = (int)new_objects.size(); vol->source.volume_idx = vol_idx; + vol->supported_facets.assign(volume->supported_facets); + vol->seam_facets.assign(volume->seam_facets); + // Perform conversion only if the target "imperial" state is different from the current one. // This check supports conversion of "mixed" set of volumes, each with different "imperial" state. if (//vol->source.is_converted_from_inches != from_imperial && From 1249fdb71d775eb61451b44759e99660da00e6eb Mon Sep 17 00:00:00 2001 From: Lukas Matena Date: Mon, 14 Dec 2020 14:23:05 +0100 Subject: [PATCH 031/135] Remove custom supports/seams after mesh repair The repair can remove some of the triangles, so the custom data would make no sense. This will hopefully fix #5458 Also, show a notification with a hyperlink to undo just before the repair. --- src/slic3r/GUI/NotificationManager.cpp | 10 ++++-- src/slic3r/GUI/NotificationManager.hpp | 7 ++-- src/slic3r/GUI/Plater.cpp | 46 ++++++++++++++++++++++---- src/slic3r/Utils/UndoRedo.cpp | 18 +++++----- 4 files changed, 61 insertions(+), 20 deletions(-) diff --git a/src/slic3r/GUI/NotificationManager.cpp b/src/slic3r/GUI/NotificationManager.cpp index b531968440..7706e7c243 100644 --- a/src/slic3r/GUI/NotificationManager.cpp +++ b/src/slic3r/GUI/NotificationManager.cpp @@ -1011,7 +1011,13 @@ void NotificationManager::push_notification(const std::string& text, int timesta { push_notification_data({ NotificationType::CustomNotification, NotificationLevel::RegularNotification, 10, text }, timestamp); } -void NotificationManager::push_notification(const std::string& text, NotificationManager::NotificationLevel level, int timestamp) + +void NotificationManager::push_notification(NotificationType type, + NotificationLevel level, + const std::string& text, + const std::string& hypertext, + std::function callback, + int timestamp) { int duration = 0; switch (level) { @@ -1022,7 +1028,7 @@ void NotificationManager::push_notification(const std::string& text, Notificatio assert(false); return; } - push_notification_data({ NotificationType::CustomNotification, level, duration, text }, timestamp); + push_notification_data({ type, level, duration, text, hypertext, callback }, timestamp); } void NotificationManager::push_slicing_error_notification(const std::string& text) { diff --git a/src/slic3r/GUI/NotificationManager.hpp b/src/slic3r/GUI/NotificationManager.hpp index 9452a8da0c..3e278a3908 100644 --- a/src/slic3r/GUI/NotificationManager.hpp +++ b/src/slic3r/GUI/NotificationManager.hpp @@ -67,7 +67,9 @@ enum class NotificationType // Progress bar instead of text. ProgressBar, // Notification, when Color Change G-code is empty and user try to add color change on DoubleSlider. - EmptyColorChangeCode + EmptyColorChangeCode, + // Notification that custom supports/seams were deleted after mesh repair. + CustomSupportsAndSeamRemovedAfterRepair }; class NotificationManager @@ -97,7 +99,8 @@ public: void push_notification(const std::string& text, int timestamp = 0); // Push a NotificationType::CustomNotification with provided notification level and 10s for RegularNotification. // ErrorNotification and ImportantNotification are never faded out. - void push_notification(const std::string& text, NotificationLevel level, int timestamp = 0); + void push_notification(NotificationType type, NotificationLevel level, const std::string& text, const std::string& hypertext = "", + std::function callback = std::function(), int timestamp = 0); // Creates Slicing Error notification with a custom text and no fade out. void push_slicing_error_notification(const std::string& text); // Creates Slicing Warning notification with a custom text and no fade out. diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 71205f014b..636eb457d1 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -2124,11 +2124,15 @@ Plater::priv::priv(Plater *q, MainFrame *main_frame) if (evt.data.second) { this->show_action_buttons(this->ready_to_slice); notification_manager->close_notification_of_type(NotificationType::ExportFinished); - notification_manager->push_notification(format(_L("Successfully unmounted. The device %s(%s) can now be safely removed from the computer."), evt.data.first.name, evt.data.first.path), - NotificationManager::NotificationLevel::RegularNotification); + notification_manager->push_notification(NotificationType::CustomNotification, + NotificationManager::NotificationLevel::RegularNotification, + format(_L("Successfully unmounted. The device %s(%s) can now be safely removed from the computer."), evt.data.first.name, evt.data.first.path) + ); } else { - notification_manager->push_notification(format(_L("Ejecting of device %s(%s) has failed."), evt.data.first.name, evt.data.first.path), - NotificationManager::NotificationLevel::ErrorNotification); + notification_manager->push_notification(NotificationType::CustomNotification, + NotificationManager::NotificationLevel::ErrorNotification, + format(_L("Ejecting of device %s(%s) has failed."), evt.data.first.name, evt.data.first.path) + ); } }); this->q->Bind(EVT_REMOVABLE_DRIVES_CHANGED, [this, q](RemovableDrivesChangedEvent &) { @@ -3361,10 +3365,38 @@ void Plater::priv::fix_through_netfabb(const int obj_idx, const int vol_idx/* = if (obj_idx < 0) return; - Plater::TakeSnapshot snapshot(q, _L("Fix Throught NetFabb")); + size_t snapshot_time = undo_redo_stack().active_snapshot_time(); + Plater::TakeSnapshot snapshot(q, _L("Fix through NetFabb")); - fix_model_by_win10_sdk_gui(*model.objects[obj_idx], vol_idx); - sla::reproject_points_and_holes(model.objects[obj_idx]); + ModelObject* mo = model.objects[obj_idx]; + + // If there are custom supports/seams, remove them. Fixed mesh + // may be different and they would make no sense. + bool paint_removed = false; + for (ModelVolume* mv : mo->volumes) { + paint_removed |= ! mv->supported_facets.empty() || ! mv->seam_facets.empty(); + mv->supported_facets.clear(); + mv->seam_facets.clear(); + } + if (paint_removed) { + // snapshot_time is captured by copy so the lambda knows where to undo/redo to. + notification_manager->push_notification( + NotificationType::CustomSupportsAndSeamRemovedAfterRepair, + NotificationManager::NotificationLevel::RegularNotification, + _u8L("Custom supports and seams were removed after repairing the mesh."), + _u8L("Undo the repair"), + [this, snapshot_time](wxEvtHandler*){ + if (undo_redo_stack().has_undo_snapshot(snapshot_time)) + undo_redo_to(snapshot_time); + else + notification_manager->push_notification( + _u8L("Cannot undo to before the mesh repair!")); + return true; + }); + } + + fix_model_by_win10_sdk_gui(*mo, vol_idx); + sla::reproject_points_and_holes(mo); this->update(); this->object_list_changed(); this->schedule_background_process(); diff --git a/src/slic3r/Utils/UndoRedo.cpp b/src/slic3r/Utils/UndoRedo.cpp index edf6b917a1..d82d9e31db 100644 --- a/src/slic3r/Utils/UndoRedo.cpp +++ b/src/slic3r/Utils/UndoRedo.cpp @@ -36,6 +36,15 @@ namespace Slic3r { namespace UndoRedo { +#ifdef SLIC3R_UNDOREDO_DEBUG +static inline std::string ptr_to_string(const void* ptr) +{ + char buf[64]; + sprintf(buf, "%p", ptr); + return buf; +} +#endif + SnapshotData::SnapshotData() : printer_technology(ptUnknown), flags(0), layer_range_idx(-1) { } @@ -368,15 +377,6 @@ private: MutableHistoryInterval& operator=(const MutableHistoryInterval &rhs); }; -#ifdef SLIC3R_UNDOREDO_DEBUG -static inline std::string ptr_to_string(const void* ptr) -{ - char buf[64]; - sprintf(buf, "%p", ptr); - return buf; -} -#endif - // Smaller objects (Model, ModelObject, ModelInstance, ModelVolume, DynamicPrintConfig) // are mutable and there is not tracking of the changes, therefore a snapshot needs to be // taken every time and compared to the previous data at the Undo / Redo stack. From b9bdfd26e3c0258ab9c526274174df657b3563eb Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik Date: Sat, 12 Dec 2020 13:37:50 +0100 Subject: [PATCH 032/135] Linux locales detection: A little refactoring --- src/slic3r/GUI/GUI_App.cpp | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 406f57de02..44843303ec 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -1293,34 +1293,40 @@ static const wxLanguageInfo* linux_get_existing_locale_language(const wxLanguage } // locales now contain all candidates for this language. - // Sort them so ones containing anything about UTF-8 are at the beginning. + // Sort them so ones containing anything about UTF-8 are at the end. std::sort(locales.begin(), locales.end(), [](const std::string& a, const std::string& b) { auto has_utf8 = [](const std::string & s) { - return boost::to_upper_copy(s).find("UTF") != std::string::npos - && s.find("8") != std::string::npos; + auto S = boost::to_upper_copy(s); + return S.find("UTF8") != std::string::npos || S.find("UTF-8") != std::string::npos; }; - return (has_utf8(a) && ! has_utf8(b)); + return ! has_utf8(a) && has_utf8(b); }); // Remove the suffix. for (std::string& s : locales) s = s.substr(0, s.find(".")); - // Is there a candidate matching a country code of a system language? Put it at the beginning - // (duplicates do not matter). Check backwards so the utf8 one ends up first if there are more. + // Is there a candidate matching a country code of a system language? Move it to the end, + // while maintaining the order of matches, so that the best match ends up at the very end. + // We just hope that dear Linux "locale -a" returns country codes in ISO 3166-1 alpha-2 code (two letter) format. + // https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes std::string system_country = "_" + into_u8(system_language->CanonicalName.AfterFirst('_')).substr(0, 2); int cnt = locales.size(); for (int i=0; iLanguage)) - return lang; - } + for (auto it = locales.rbegin(); it != locales.rend(); ++ it) + if (! it->empty()) { + const std::string &locale = *it; + const wxLanguageInfo* lang = wxLocale::FindLanguageInfo(locale.substr(0, locale.find("."))); + if (wxLocale::IsAvailable(lang->Language)) + return lang; + } return language; } #endif From acb7d6657760141cb7b1d3f3f73fa3beed6b4871 Mon Sep 17 00:00:00 2001 From: Lukas Matena Date: Mon, 14 Dec 2020 22:58:28 +0100 Subject: [PATCH 033/135] Linux locales detection: reject unexpected formatting --- src/slic3r/GUI/GUI_App.cpp | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 44843303ec..9bf0a23b53 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include @@ -1272,7 +1273,7 @@ bool GUI_App::switch_language() } } -#ifdef __linux +#ifdef __linux__ static const wxLanguageInfo* linux_get_existing_locale_language(const wxLanguageInfo* language, const wxLanguageInfo* system_language) { @@ -1281,6 +1282,9 @@ static const wxLanguageInfo* linux_get_existing_locale_language(const wxLanguage std::vector locales; const std::string lang_prefix = into_u8(language->CanonicalName.BeforeFirst('_')); + // Call locale -a so we can parse the output to get the list of available locales + // We expect lines such as "en_US.utf8". Pick ones starting with the language code + // we are switching to. Lines with different formatting will be removed later. FILE* fp = popen("locale -a", "r"); if (fp != NULL) { while (fgets(path, max_len, fp) != NULL) { @@ -1303,19 +1307,30 @@ static const wxLanguageInfo* linux_get_existing_locale_language(const wxLanguage return ! has_utf8(a) && has_utf8(b); }); - // Remove the suffix. + // Remove the suffix behind a dot, if there is one. for (std::string& s : locales) s = s.substr(0, s.find(".")); + // We just hope that dear Linux "locale -a" returns country codes + // in ISO 3166-1 alpha-2 code (two letter) format. + // https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes + // To be sure, remove anything not looking as expected + // (any number of lowercase letters, underscore, two uppercase letters). + locales.erase(std::remove_if(locales.begin(), + locales.end(), + [](const std::string& s) { + return ! std::regex_match(s, + std::regex("^[a-z]+_[A-Z]{2}$")); + }), + locales.end()); + // Is there a candidate matching a country code of a system language? Move it to the end, // while maintaining the order of matches, so that the best match ends up at the very end. - // We just hope that dear Linux "locale -a" returns country codes in ISO 3166-1 alpha-2 code (two letter) format. - // https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes std::string system_country = "_" + into_u8(system_language->CanonicalName.AfterFirst('_')).substr(0, 2); int cnt = locales.size(); for (int i=0; iempty()) { const std::string &locale = *it; - const wxLanguageInfo* lang = wxLocale::FindLanguageInfo(locale.substr(0, locale.find("."))); + const wxLanguageInfo* lang = wxLocale::FindLanguageInfo(from_u8(locale)); if (wxLocale::IsAvailable(lang->Language)) return lang; } From 0ca337ac7a91c183aa8d1fa6d2c288632f4248cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Hejl?= Date: Tue, 15 Dec 2020 06:46:44 +0100 Subject: [PATCH 034/135] Apply avoid crossing perimeters also for supports. --- .../GCode/AvoidCrossingPerimeters.cpp | 72 ++++++++++++++----- src/libslic3r/Print.hpp | 2 + src/libslic3r/PrintObject.cpp | 7 ++ 3 files changed, 65 insertions(+), 16 deletions(-) diff --git a/src/libslic3r/GCode/AvoidCrossingPerimeters.cpp b/src/libslic3r/GCode/AvoidCrossingPerimeters.cpp index 88411607fc..59652b565c 100644 --- a/src/libslic3r/GCode/AvoidCrossingPerimeters.cpp +++ b/src/libslic3r/GCode/AvoidCrossingPerimeters.cpp @@ -269,10 +269,10 @@ static std::vector simplify_travel(const AvoidCrossingPerimeters::B } // Called by avoid_perimeters() and by simplify_travel_heuristics(). -static size_t avoid_perimeters_inner(const GCode &gcodegen, const AvoidCrossingPerimeters::Boundary &boundary, - const Point &start, - const Point &end, - std::vector &result_out) +static size_t avoid_perimeters_inner(const AvoidCrossingPerimeters::Boundary &boundary, + const Point &start, + const Point &end, + std::vector &result_out) { const Polygons &boundaries = boundary.boundaries; const EdgeGrid::Grid &edge_grid = boundary.grid; @@ -372,14 +372,14 @@ static size_t avoid_perimeters_inner(const GCode &gcodegen, const AvoidCrossingP } // Called by AvoidCrossingPerimeters::travel_to() -static size_t avoid_perimeters(const GCode &gcodegen, const AvoidCrossingPerimeters::Boundary &boundary, - const Point &start, - const Point &end, - Polyline &result_out) +static size_t avoid_perimeters(const AvoidCrossingPerimeters::Boundary &boundary, + const Point &start, + const Point &end, + Polyline &result_out) { // Travel line is completely or partially inside the bounding box. std::vector path; - size_t num_intersections = avoid_perimeters_inner(gcodegen, boundary, start, end, path); + size_t num_intersections = avoid_perimeters_inner(boundary, start, end, path); result_out = to_polyline(path); #ifdef AVOID_CROSSING_PERIMETERS_DEBUG_OUTPUT @@ -726,6 +726,7 @@ static std::vector contour_distance(const EdgeGrid::Grid &grid, } // Polygon offset which ensures that if a polygon breaks up into several separate parts, the original polygon will be used in these places. +// ExPolygons are handled one by one so returned ExPolygons could intersect. static ExPolygons inner_offset(const ExPolygons &ex_polygons, double offset, double min_contour_width = scale_(0.001)) { double search_radius = 2. * (offset + min_contour_width); @@ -781,12 +782,25 @@ static ExPolygons inner_offset(const ExPolygons &ex_polygons, double offset, dou return ex_poly_result; } +//#define INCLUDE_SUPPORTS_IN_BOUNDARY + // called by AvoidCrossingPerimeters::travel_to() static ExPolygons get_boundary(const Layer &layer) { const float perimeter_spacing = get_perimeter_spacing(layer); const float perimeter_offset = perimeter_spacing / 2.f; + auto const *support_layer = dynamic_cast(&layer); ExPolygons boundary = union_ex(inner_offset(layer.lslices, perimeter_offset)); + if(support_layer) { +#ifdef INCLUDE_SUPPORTS_IN_BOUNDARY + append(boundary, inner_offset(support_layer->support_islands.expolygons, perimeter_offset)); +#endif + auto *layer_below = layer.object()->get_first_layer_bellow_printz(layer.print_z, EPSILON); + if (layer_below) + append(boundary, inner_offset(layer_below->lslices, perimeter_offset)); + // After calling inner_offset it is necessary to call union_ex because of the possibility of intersection ExPolygons + boundary = union_ex(boundary); + } // Collect all top layers that will not be crossed. size_t polygons_count = 0; for (const LayerRegion *layer_region : layer.regions()) @@ -810,20 +824,41 @@ static ExPolygons get_boundary(const Layer &layer) // called by AvoidCrossingPerimeters::travel_to() static Polygons get_boundary_external(const Layer &layer) { - const float perimeter_spacing = get_perimeter_spacing(layer); + const float perimeter_spacing = get_perimeter_spacing_external(layer); const float perimeter_offset = perimeter_spacing / 2.f; + auto const *support_layer = dynamic_cast(&layer); Polygons boundary; +#ifdef INCLUDE_SUPPORTS_IN_BOUNDARY + ExPolygons supports_boundary; +#endif // Collect all holes for all printed objects and their instances, which will be printed at the same time as passed "layer". for (const PrintObject *object : layer.object()->print()->objects()) { - Polygons polygons_per_obj; + Polygons polygons_per_obj; +#ifdef INCLUDE_SUPPORTS_IN_BOUNDARY + ExPolygons supports_per_obj; +#endif if (const Layer *l = object->get_layer_at_printz(layer.print_z, EPSILON); l) for (const ExPolygon &island : l->lslices) append(polygons_per_obj, island.holes); + if (support_layer) { + auto *layer_below = object->get_first_layer_bellow_printz(layer.print_z, EPSILON); + if (layer_below) + for (const ExPolygon &island : layer_below->lslices) append(polygons_per_obj, island.holes); +#ifdef INCLUDE_SUPPORTS_IN_BOUNDARY + append(supports_per_obj, support_layer->support_islands.expolygons); +#endif + } for (const PrintInstance &instance : object->instances()) { size_t boundary_idx = boundary.size(); append(boundary, polygons_per_obj); for (; boundary_idx < boundary.size(); ++boundary_idx) boundary[boundary_idx].translate(instance.shift); +#ifdef INCLUDE_SUPPORTS_IN_BOUNDARY + size_t support_idx = supports_boundary.size(); + append(supports_boundary, supports_per_obj); + for (; support_idx < supports_boundary.size(); ++support_idx) + supports_boundary[support_idx].translate(instance.shift); +#endif } } @@ -832,7 +867,9 @@ static Polygons get_boundary_external(const Layer &layer) // Reverse all polygons for making normals point from the polygon out. for (Polygon &poly : boundary) poly.reverse(); - +#ifdef INCLUDE_SUPPORTS_IN_BOUNDARY + append(boundary, to_polygons(inner_offset(supports_boundary, perimeter_offset))); +#endif return boundary; } @@ -873,14 +910,17 @@ Polyline AvoidCrossingPerimeters::travel_to(const GCode &gcodegen, const Point & Vec2d startf = start.cast(); Vec2d endf = end .cast(); - if (!use_external && !gcodegen.layer()->lslices.empty() && !any_expolygon_contains(gcodegen.layer()->lslices, gcodegen.layer()->lslices_bboxes, m_grid_lslice, travel)) { + const ExPolygons &lslices = gcodegen.layer()->lslices; + const std::vector &lslices_bboxes = gcodegen.layer()->lslices_bboxes; + bool is_support_layer = dynamic_cast(gcodegen.layer()) != nullptr; + if (!use_external && (is_support_layer || (!lslices.empty() && !any_expolygon_contains(lslices, lslices_bboxes, m_grid_lslice, travel)))) { // Initialize m_internal only when it is necessary. if (m_internal.boundaries.empty()) init_boundary(&m_internal, to_polygons(get_boundary(*gcodegen.layer()))); // Trim the travel line by the bounding box. - if (Geometry::liang_barsky_line_clipping(startf, endf, m_internal.bbox)) { - travel_intersection_count = avoid_perimeters(gcodegen, m_internal, startf.cast(), endf.cast(), result_pl); + if (!m_internal.boundaries.empty() && Geometry::liang_barsky_line_clipping(startf, endf, m_internal.bbox)) { + travel_intersection_count = avoid_perimeters(m_internal, startf.cast(), endf.cast(), result_pl); result_pl.points.front() = start; result_pl.points.back() = end; } @@ -891,7 +931,7 @@ Polyline AvoidCrossingPerimeters::travel_to(const GCode &gcodegen, const Point & // Trim the travel line by the bounding box. if (!m_external.boundaries.empty() && Geometry::liang_barsky_line_clipping(startf, endf, m_external.bbox)) { - travel_intersection_count = avoid_perimeters(gcodegen, m_external, startf.cast(), endf.cast(), result_pl); + travel_intersection_count = avoid_perimeters(m_external, startf.cast(), endf.cast(), result_pl); result_pl.points.front() = start; result_pl.points.back() = end; } diff --git a/src/libslic3r/Print.hpp b/src/libslic3r/Print.hpp index e65d67cb50..281ce35bc0 100644 --- a/src/libslic3r/Print.hpp +++ b/src/libslic3r/Print.hpp @@ -161,6 +161,8 @@ public: // Get a layer approximately at print_z. const Layer* get_layer_at_printz(coordf_t print_z, coordf_t epsilon) const; Layer* get_layer_at_printz(coordf_t print_z, coordf_t epsilon); + // Get the first layer approximately bellow print_z. + const Layer* get_first_layer_bellow_printz(coordf_t print_z, coordf_t epsilon) const; // print_z: top of the layer; slice_z: center of the layer. Layer* add_layer(int id, coordf_t height, coordf_t print_z, coordf_t slice_z); diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp index 84dfb6e0a6..98be93b31f 100644 --- a/src/libslic3r/PrintObject.cpp +++ b/src/libslic3r/PrintObject.cpp @@ -2943,4 +2943,11 @@ const Layer* PrintObject::get_layer_at_printz(coordf_t print_z, coordf_t epsilon Layer* PrintObject::get_layer_at_printz(coordf_t print_z, coordf_t epsilon) { return const_cast(std::as_const(*this).get_layer_at_printz(print_z, epsilon)); } +const Layer *PrintObject::get_first_layer_bellow_printz(coordf_t print_z, coordf_t epsilon) const +{ + coordf_t limit = print_z + epsilon; + auto it = Slic3r::lower_bound_by_predicate(m_layers.begin(), m_layers.end(), [limit](const Layer *layer) { return layer->print_z < limit; }); + return (it == m_layers.begin()) ? nullptr : *(--it); +} + } // namespace Slic3r From 4911b36bfd1d7cc90153c93ce38c56ec7eba935a Mon Sep 17 00:00:00 2001 From: enricoturri1966 Date: Tue, 15 Dec 2020 09:21:09 +0100 Subject: [PATCH 035/135] #5470 - Fixed switching camera views with alphanumeric row on a czech keyboard --- src/slic3r/GUI/GLCanvas3D.cpp | 92 +++++++++++++---------------------- 1 file changed, 34 insertions(+), 58 deletions(-) diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 8f1c8074cb..4ec9f89c82 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -2454,21 +2454,6 @@ void GLCanvas3D::on_char(wxKeyEvent& evt) if (m_gizmos.on_char(evt)) return; - auto action_plus = [this](wxKeyEvent& evt) { - if (dynamic_cast(m_canvas->GetParent()) != nullptr) - post_event(wxKeyEvent(EVT_GLCANVAS_EDIT_COLOR_CHANGE, evt)); - else - post_event(Event(EVT_GLCANVAS_INCREASE_INSTANCES, +1)); - }; - - auto action_a = [this]() { - post_event(SimpleEvent(EVT_GLCANVAS_ARRANGE)); - }; - - auto action_question_mark = [this]() { - post_event(SimpleEvent(EVT_GLCANVAS_QUESTION_MARK)); - }; - if ((evt.GetModifiers() & ctrlMask) != 0) { // CTRL is pressed switch (keyCode) { @@ -2478,7 +2463,7 @@ void GLCanvas3D::on_char(wxKeyEvent& evt) #else /* __APPLE__ */ case WXK_CONTROL_A: #endif /* __APPLE__ */ - post_event(SimpleEvent(EVT_GLCANVAS_SELECT_ALL)); + post_event(SimpleEvent(EVT_GLCANVAS_SELECT_ALL)); break; #ifdef __APPLE__ case 'c': @@ -2562,35 +2547,13 @@ void GLCanvas3D::on_char(wxKeyEvent& evt) post_event(SimpleEvent(EVT_GLTOOLBAR_DELETE_ALL)); break; default: evt.Skip(); } - } - else if ((evt.GetModifiers() & shiftMask) != 0) { - // SHIFT is pressed - switch (keyCode) { - case '+': { action_plus(evt); break; } - case 'A': - case 'a': { action_a(); break; } - case 'G': - case 'g': { - if (dynamic_cast(m_canvas->GetParent()) != nullptr) - post_event(wxKeyEvent(EVT_GLCANVAS_JUMP_TO, evt)); - break; - } - case '?': { action_question_mark(); break; } - default: - evt.Skip(); - } - } else if (evt.HasModifiers()) { - evt.Skip(); } else { switch (keyCode) { case WXK_BACK: - case WXK_DELETE: - post_event(SimpleEvent(EVT_GLTOOLBAR_DELETE)); - break; + case WXK_DELETE: { post_event(SimpleEvent(EVT_GLTOOLBAR_DELETE)); break; } case WXK_ESCAPE: { deselect_all(); break; } - case WXK_F5: - { + case WXK_F5: { if ((wxGetApp().is_editor() && !wxGetApp().plater()->model().objects.empty()) || (wxGetApp().is_gcode_viewer() && !wxGetApp().plater()->get_last_loaded_gcode().empty())) post_event(SimpleEvent(EVT_GLCANVAS_RELOAD_FROM_DISK)); @@ -2603,33 +2566,48 @@ void GLCanvas3D::on_char(wxKeyEvent& evt) case '4': { select_view("rear"); break; } case '5': { select_view("left"); break; } case '6': { select_view("right"); break; } - case '+': { action_plus(evt); break; } + case '+': { + if (dynamic_cast(m_canvas->GetParent()) != nullptr) + post_event(wxKeyEvent(EVT_GLCANVAS_EDIT_COLOR_CHANGE, evt)); + else + post_event(Event(EVT_GLCANVAS_INCREASE_INSTANCES, +1)); + break; + } case '-': { - if (dynamic_cast(m_canvas->GetParent()) != nullptr) - post_event(wxKeyEvent(EVT_GLCANVAS_EDIT_COLOR_CHANGE, evt)); - else - post_event(Event(EVT_GLCANVAS_INCREASE_INSTANCES, -1)); - break; } - case '?': { action_question_mark(); break; } + if (dynamic_cast(m_canvas->GetParent()) != nullptr) + post_event(wxKeyEvent(EVT_GLCANVAS_EDIT_COLOR_CHANGE, evt)); + else + post_event(Event(EVT_GLCANVAS_INCREASE_INSTANCES, -1)); + break; + } + case '?': { post_event(SimpleEvent(EVT_GLCANVAS_QUESTION_MARK)); break; } case 'A': - case 'a': { action_a(); break; } + case 'a': { post_event(SimpleEvent(EVT_GLCANVAS_ARRANGE)); break; } case 'B': case 'b': { zoom_to_bed(); break; } case 'E': case 'e': { m_labels.show(!m_labels.is_shown()); m_dirty = true; break; } + case 'G': + case 'g': { + if ((evt.GetModifiers() & shiftMask) != 0) { + if (dynamic_cast(m_canvas->GetParent()) != nullptr) + post_event(wxKeyEvent(EVT_GLCANVAS_JUMP_TO, evt)); + } + break; + } case 'I': case 'i': { _update_camera_zoom(1.0); break; } case 'K': case 'k': { wxGetApp().plater()->get_camera().select_next_type(); m_dirty = true; break; } case 'L': case 'l': { - if (!m_main_toolbar.is_enabled()) { - m_gcode_viewer.enable_legend(!m_gcode_viewer.is_legend_enabled()); - m_dirty = true; - wxGetApp().plater()->update_preview_bottom_toolbar(); - } - break; - } + if (!m_main_toolbar.is_enabled()) { + m_gcode_viewer.enable_legend(!m_gcode_viewer.is_legend_enabled()); + m_dirty = true; + wxGetApp().plater()->update_preview_bottom_toolbar(); + } + break; + } case 'O': case 'o': { _update_camera_zoom(-1.0); break; } #if ENABLE_RENDER_PICKING_PASS @@ -2641,8 +2619,7 @@ void GLCanvas3D::on_char(wxKeyEvent& evt) } #endif // ENABLE_RENDER_PICKING_PASS case 'Z': - case 'z': - { + case 'z': { if (!m_selection.is_empty()) zoom_to_selection(); else { @@ -2651,7 +2628,6 @@ void GLCanvas3D::on_char(wxKeyEvent& evt) else _zoom_to_box(m_gcode_viewer.get_paths_bounding_box()); } - break; } default: { evt.Skip(); break; } From 8627c35057373f14b0beb9f9b9b064a1141d2f09 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Tue, 15 Dec 2020 09:38:00 +0100 Subject: [PATCH 036/135] Fix of #5472 - UI bug: profile edit controls hidden by scroll bars --- src/slic3r/GUI/Plater.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 71205f014b..5d9f127686 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -630,7 +630,7 @@ void Sidebar::priv::show_preset_comboboxes() // Sidebar / public Sidebar::Sidebar(Plater *parent) - : wxPanel(parent, wxID_ANY, wxDefaultPosition, wxSize(40 * wxGetApp().em_unit(), -1)), p(new priv(parent)) + : wxPanel(parent, wxID_ANY, wxDefaultPosition, wxSize(42 * wxGetApp().em_unit(), -1)), p(new priv(parent)) { p->scrolled = new wxScrolledWindow(this); p->scrolled->SetScrollbars(0, 100, 1, 2); From 3f44f8177d273b94b66a659c8757d86ee0e68965 Mon Sep 17 00:00:00 2001 From: enricoturri1966 Date: Tue, 15 Dec 2020 10:44:51 +0100 Subject: [PATCH 037/135] Disable [Perform cut] button in Cut Gizmo dialog when the value of Z is not valid --- src/slic3r/GUI/Gizmos/GLGizmoCut.cpp | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp b/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp index ffc1e7dcb3..d43b0f24ed 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp @@ -84,9 +84,8 @@ void GLGizmoCut::on_start_dragging() void GLGizmoCut::on_update(const UpdateData& data) { - if (m_hover_id != -1) { + if (m_hover_id != -1) set_cut_z(m_start_z + calc_projection(data.mouse_ray)); - } } void GLGizmoCut::on_render() const @@ -149,7 +148,7 @@ void GLGizmoCut::on_render_input_window(float x, float y, float bottom_limit) static float last_y = 0.0f; static float last_h = 0.0f; - m_imgui->begin(_(L("Cut")), ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoCollapse); + m_imgui->begin(_L("Cut"), ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoCollapse); bool imperial_units = wxGetApp().app_config->get("use_inches") == "1"; @@ -157,8 +156,7 @@ void GLGizmoCut::on_render_input_window(float x, float y, float bottom_limit) float win_h = ImGui::GetWindowHeight(); y = std::min(y, bottom_limit - win_h); ImGui::SetWindowPos(ImVec2(x, y), ImGuiCond_Always); - if ((last_h != win_h) || (last_y != y)) - { + if (last_h != win_h || last_y != y) { // ask canvas for another frame to render the window in the correct position m_parent.request_extra_frame(); if (last_h != win_h) @@ -184,21 +182,20 @@ void GLGizmoCut::on_render_input_window(float x, float y, float bottom_limit) ImGui::Separator(); - m_imgui->checkbox(_(L("Keep upper part")), m_keep_upper); - m_imgui->checkbox(_(L("Keep lower part")), m_keep_lower); - m_imgui->checkbox(_(L("Rotate lower part upwards")), m_rotate_lower); + m_imgui->checkbox(_L("Keep upper part"), m_keep_upper); + m_imgui->checkbox(_L("Keep lower part"), m_keep_lower); + m_imgui->checkbox(_L("Rotate lower part upwards"), m_rotate_lower); ImGui::Separator(); - m_imgui->disabled_begin(!m_keep_upper && !m_keep_lower); - const bool cut_clicked = m_imgui->button(_(L("Perform cut"))); + m_imgui->disabled_begin((!m_keep_upper && !m_keep_lower) || m_cut_z <= 0.0 || m_max_z < m_cut_z); + const bool cut_clicked = m_imgui->button(_L("Perform cut")); m_imgui->disabled_end(); m_imgui->end(); - if (cut_clicked && (m_keep_upper || m_keep_lower)) { + if (cut_clicked && (m_keep_upper || m_keep_lower)) perform_cut(m_parent.get_selection()); - } } void GLGizmoCut::update_max_z(const Selection& selection) const From 82fe571cdc4ab2f7160b6728170ba2ac6e726f3d Mon Sep 17 00:00:00 2001 From: enricoturri1966 Date: Tue, 15 Dec 2020 10:57:16 +0100 Subject: [PATCH 038/135] Give focus to 3D scene when activating any gizmo to allow related imgui dialogs to receive keyboard input --- src/slic3r/GUI/GLCanvas3D.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 4ec9f89c82..e778de8794 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -3092,6 +3092,10 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) } if (m_gizmos.on_mouse(evt)) { + if (wxWindow::FindFocus() != this->m_canvas) + // Grab keyboard focus for input in gizmo dialogs. + m_canvas->SetFocus(); + if (evt.LeftUp() || evt.MiddleUp() || evt.RightUp()) mouse_up_cleanup(); From 43581059ff3a03a40f74407bee3ea7062a4077b3 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Tue, 15 Dec 2020 12:09:03 +0100 Subject: [PATCH 039/135] Fix of #5450 - Wrong printer preset after loading 3mf project file when having multiple presets for one physical printer --- src/libslic3r/Preset.cpp | 7 +++++++ src/libslic3r/Preset.hpp | 1 + src/libslic3r/PresetBundle.cpp | 4 ++-- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 63e4173796..af6b50215e 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -1849,6 +1849,13 @@ void PhysicalPrinterCollection::select_printer(const std::string& full_name) m_selected_preset = it->get_preset_name(full_name); } +void PhysicalPrinterCollection::select_printer(const std::string& printer_name, const std::string& preset_name) +{ + if (preset_name.empty()) + return select_printer(printer_name); + return select_printer(printer_name + PhysicalPrinter::separator() + preset_name); +} + void PhysicalPrinterCollection::select_printer(const PhysicalPrinter& printer) { return select_printer(printer.name); diff --git a/src/libslic3r/Preset.hpp b/src/libslic3r/Preset.hpp index 2e0e944678..b6d44d58ff 100644 --- a/src/libslic3r/Preset.hpp +++ b/src/libslic3r/Preset.hpp @@ -701,6 +701,7 @@ public: // If full_name doesn't contain name of selected preset, then select first preset in the list for this printer void select_printer(const std::string& full_name); void select_printer(const PhysicalPrinter& printer); + void select_printer(const std::string& printer_name, const std::string& preset_name); bool has_selection() const; void unselect_printer() ; bool is_selected(ConstIterator it, const std::string &preset_name) const; diff --git a/src/libslic3r/PresetBundle.cpp b/src/libslic3r/PresetBundle.cpp index 39d1f11c00..ae6a77139c 100644 --- a/src/libslic3r/PresetBundle.cpp +++ b/src/libslic3r/PresetBundle.cpp @@ -876,7 +876,7 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool // Activate the physical printer profile if possible. PhysicalPrinter *pp = this->physical_printers.find_printer(physical_printer, true); if (pp != nullptr && std::find(pp->preset_names.begin(), pp->preset_names.end(), this->printers.get_edited_preset().name) != pp->preset_names.end()) - this->physical_printers.select_printer(*pp); + this->physical_printers.select_printer(pp->name, this->printers.get_edited_preset().name); else this->physical_printers.unselect_printer(); } @@ -1396,7 +1396,7 @@ size_t PresetBundle::load_configbundle(const std::string &path, unsigned int fla if (! active_printer.empty()) printers.select_preset_by_name(active_printer, true); if (! active_physical_printer.empty()) - physical_printers.select_printer(active_physical_printer +" * " + active_printer); + physical_printers.select_printer(active_physical_printer, active_printer); // Activate the first filament preset. if (! active_filaments.empty() && ! active_filaments.front().empty()) filaments.select_preset_by_name(active_filaments.front(), true); From a13b35ce92efed202ef43f02debb83dfb533d9b0 Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik Date: Tue, 15 Dec 2020 12:14:30 +0100 Subject: [PATCH 040/135] Support for HiDPI in OpenGL on Linux / GTK3. wxGTK3 HiDPI support seems to emulate what OSX does quite closely, thus the changes are relatively minimal. Also fixed an ugly rounding issue when populating the ImGUI font map with image thumbnails. Fixes Gtk3 issue on 4k+ screens #4135 Fixes HiDPI screens with Wayland on Fedora 30 cause Plater view to be too small. #3245 --- src/slic3r/GUI/GLCanvas3D.cpp | 10 +++++++++- src/slic3r/GUI/GLCanvas3D.hpp | 5 +++-- src/slic3r/GUI/ImGuiWrapper.cpp | 8 ++++++-- src/slic3r/GUI/MainFrame.cpp | 3 ++- 4 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index e778de8794..c2e4424313 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -86,6 +86,13 @@ static const size_t VERTEX_BUFFER_RESERVE_SIZE_SUM_MAX = 1024 * 1024 * 128 / 4; namespace Slic3r { namespace GUI { +#ifdef __WXGTK3__ +// wxGTK3 seems to simulate OSX behavior in regard to HiDPI scaling support. +RetinaHelper::RetinaHelper(wxWindow* window) : m_window(window), m_self(nullptr) {} +RetinaHelper::~RetinaHelper() {} +float RetinaHelper::get_scale_factor() { return float(m_window->GetContentScaleFactor()); } +#endif // __WXGTK3__ + Size::Size() : m_width(0) , m_height(0) @@ -3732,7 +3739,8 @@ void GLCanvas3D::update_ui_from_settings() { m_dirty = true; -#if ENABLE_RETINA_GL +#if __APPLE__ + // Update OpenGL scaling on OSX after the user toggled the "use_retina_opengl" settings in Preferences dialog. const float orig_scaling = m_retina_helper->get_scale_factor(); const bool use_retina = wxGetApp().app_config->get("use_retina_opengl") == "1"; diff --git a/src/slic3r/GUI/GLCanvas3D.hpp b/src/slic3r/GUI/GLCanvas3D.hpp index 9c80aa2369..e64e65d1b3 100644 --- a/src/slic3r/GUI/GLCanvas3D.hpp +++ b/src/slic3r/GUI/GLCanvas3D.hpp @@ -31,8 +31,9 @@ class wxPaintEvent; class wxGLCanvas; class wxGLContext; -// Support for Retina OpenGL on Mac OS -#define ENABLE_RETINA_GL __APPLE__ +// Support for Retina OpenGL on Mac OS. +// wxGTK3 seems to simulate OSX behavior in regard to HiDPI scaling support, enable it as well. +#define ENABLE_RETINA_GL (__APPLE__ || __WXGTK3__) namespace Slic3r { diff --git a/src/slic3r/GUI/ImGuiWrapper.cpp b/src/slic3r/GUI/ImGuiWrapper.cpp index 3d96967ec8..ff8ba8f48a 100644 --- a/src/slic3r/GUI/ImGuiWrapper.cpp +++ b/src/slic3r/GUI/ImGuiWrapper.cpp @@ -963,6 +963,8 @@ void ImGuiWrapper::init_font(bool compress) // Fill rectangles from the SVG-icons for (auto icon : font_icons) { if (const ImFontAtlas::CustomRect* rect = io.Fonts->GetCustomRectByIndex(rect_id)) { + assert(rect->Width == icon_sz); + assert(rect->Height == icon_sz); std::vector raw_data = load_svg(icon.second, icon_sz, icon_sz); const ImU32* pIn = (ImU32*)raw_data.data(); for (int y = 0; y < icon_sz; y++) { @@ -973,10 +975,12 @@ void ImGuiWrapper::init_font(bool compress) } rect_id++; } - icon_sz = lround(32 * font_scale); // default size of large icon is 32 px - + + icon_sz *= 2; // default size of large icon is 32 px for (auto icon : font_icons_large) { if (const ImFontAtlas::CustomRect* rect = io.Fonts->GetCustomRectByIndex(rect_id)) { + assert(rect->Width == icon_sz); + assert(rect->Height == icon_sz); std::vector raw_data = load_svg(icon.second, icon_sz, icon_sz); const ImU32* pIn = (ImU32*)raw_data.data(); for (int y = 0; y < icon_sz; y++) { diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index db4183b407..8e6b1c5ef2 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -228,7 +228,8 @@ DPIFrame(NULL, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_S // OSX specific issue: // When we move application between Retina and non-Retina displays, The legend on a canvas doesn't redraw // So, redraw explicitly canvas, when application is moved -#if ENABLE_RETINA_GL +//FIXME maybe this is useful for __WXGTK3__ as well? +#if __APPLE__ Bind(wxEVT_MOVE, [this](wxMoveEvent& event) { wxGetApp().plater()->get_current_canvas3D()->set_as_dirty(); wxGetApp().plater()->get_current_canvas3D()->request_extra_frame(); From 161fb86c431ce20763b574474bdf3dcf9444aaae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Hejl?= Date: Tue, 15 Dec 2020 13:49:35 +0100 Subject: [PATCH 041/135] Fixed percentages in avoid crossing perimeters max detour --- src/libslic3r/PrintConfig.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index db0586f36e..a85348ac7c 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -184,7 +184,7 @@ void PrintConfigDef::init_fff_params() def->mode = comExpert; def->set_default_value(new ConfigOptionBool(false)); - def = this->add("avoid_crossing_perimeters_max_detour", coFloat); + def = this->add("avoid_crossing_perimeters_max_detour", coFloatOrPercent); def->label = L("Avoid crossing perimeters - Max detour length"); def->category = L("Layers and Perimeters"); def->tooltip = L("The maximum detour length for avoid crossing perimeters. " From 62c23313befb08034abaa9e6ed011ddd98743830 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Tue, 15 Dec 2020 13:57:05 +0100 Subject: [PATCH 042/135] Suppress to change "inches" flag after conversion to the inches. --- src/slic3r/GUI/Plater.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 5d9f127686..fca933fa70 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -2398,7 +2398,7 @@ std::vector Plater::priv::load_files(const std::vector& input_ auto convert_from_imperial_units = [](Model& model, bool only_small_volumes) { model.convert_from_imperial_units(only_small_volumes); - wxGetApp().app_config->set("use_inches", "1"); +// wxGetApp().app_config->set("use_inches", "1"); wxGetApp().sidebar().update_ui_from_settings(); }; From e62f0140494f25d533ebe4e7e2adec83c9f5b51f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Hejl?= Date: Tue, 15 Dec 2020 14:03:52 +0100 Subject: [PATCH 043/135] Corrected side text for avoid crossing perimeters max detour --- src/libslic3r/PrintConfig.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index a85348ac7c..ada089187e 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -190,7 +190,7 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("The maximum detour length for avoid crossing perimeters. " "If the detour is longer than this value, avoid crossing perimeters is not applied for this travel path. " "Detour length could be specified either as an absolute value or as percentage (for example 50%) of a direct travel path."); - def->sidetext = L("mm (zero to disable)"); + def->sidetext = L("mm or % (zero to disable)"); def->min = 0; def->mode = comExpert; def->set_default_value(new ConfigOptionFloatOrPercent(0., false)); From d59f345fbb0e77e2fc6618766881c4ecb364c552 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Hejl?= Date: Tue, 15 Dec 2020 14:18:11 +0100 Subject: [PATCH 044/135] Fix of #5443 - Assigned input file path for ModelVolume also for AMF archives --- src/libslic3r/Format/AMF.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/libslic3r/Format/AMF.cpp b/src/libslic3r/Format/AMF.cpp index a183aeb462..2312005a10 100644 --- a/src/libslic3r/Format/AMF.cpp +++ b/src/libslic3r/Format/AMF.cpp @@ -1020,6 +1020,12 @@ bool load_amf_archive(const char* path, DynamicPrintConfig* config, Model* model #endif // forward compatibility close_zip_reader(&archive); + + for (ModelObject *o : model->objects) + for (ModelVolume *v : o->volumes) + if (v->source.input_file.empty() && (v->type() == ModelVolumeType::MODEL_PART)) + v->source.input_file = path; + return true; } From aa8f97fce261bcc433a989d6a7f9d38080f6cccc Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik Date: Tue, 15 Dec 2020 14:26:33 +0100 Subject: [PATCH 045/135] Fix of 3DConnexion 3D SpaceMouse Jumpy Pan moves on Linux #5233 Also improved error reporting on Linux about the 3DConnexion device access issues. --- src/slic3r/GUI/Mouse3DController.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/slic3r/GUI/Mouse3DController.cpp b/src/slic3r/GUI/Mouse3DController.cpp index 57748af6f0..692ae7f1ba 100644 --- a/src/slic3r/GUI/Mouse3DController.cpp +++ b/src/slic3r/GUI/Mouse3DController.cpp @@ -346,7 +346,6 @@ bool Mouse3DController::State::apply(const Mouse3DController::Params ¶ms, Ca if (params.swap_yz) rot = Vec3d(rot.x(), -rot.z(), rot.y()); camera.rotate_local_around_target(Vec3d(rot.x(), - rot.z(), rot.y())); - break; } else { assert(input_queue_item.is_buttons()); switch (input_queue_item.type_or_buttons) { @@ -895,7 +894,10 @@ bool Mouse3DController::connect_device() if (device.second.size() == 1) { #if defined(__linux__) hid_device* test_device = hid_open(device.first.first, device.first.second, nullptr); - if (test_device != nullptr) { + if (test_device == nullptr) { + BOOST_LOG_TRIVIAL(error) << "3DConnexion device cannot be opened: " << device.second.front().path << + " You may need to update /etc/udev/rules.d"; + } else { hid_close(test_device); #else if (device.second.front().has_valid_usage()) { @@ -940,10 +942,13 @@ bool Mouse3DController::connect_device() break; } #endif // __linux__ + else { + BOOST_LOG_TRIVIAL(error) << "3DConnexion device cannot be opened: " << data.path << + " You may need to update /etc/udev/rules.d"; #if ENABLE_3DCONNEXION_DEVICES_DEBUG_OUTPUT - else std::cout << "-> NOT PASSED" << std::endl; #endif // ENABLE_3DCONNEXION_DEVICES_DEBUG_OUTPUT + } } if (found) From 8d4d6b6c891084432c19e7cab93704afe1003949 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Tue, 15 Dec 2020 14:58:34 +0100 Subject: [PATCH 046/135] UnsavedChangesDialog: Fixed default text color in respect to the system text color (Related to #5444) --- src/slic3r/GUI/UnsavedChangesDialog.cpp | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/src/slic3r/GUI/UnsavedChangesDialog.cpp b/src/slic3r/GUI/UnsavedChangesDialog.cpp index 946bdd8c1b..b4b38b4bd2 100644 --- a/src/slic3r/GUI/UnsavedChangesDialog.cpp +++ b/src/slic3r/GUI/UnsavedChangesDialog.cpp @@ -51,7 +51,12 @@ static std::string get_icon_name(Preset::Type type, PrinterTechnology pt) { return pt == ptSLA && type == Preset::TYPE_PRINTER ? "sla_printer" : type_icon_names.at(type); } -static std::string black = "#000000"; +static std::string def_text_color() +{ + wxColour def_colour = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT); + auto clr_str = wxString::Format(wxT("#%02X%02X%02X"), def_colour.Red(), def_colour.Green(), def_colour.Blue()); + return clr_str.ToStdString(); +} static std::string grey = "#808080"; static std::string orange = "#ed6b21"; @@ -158,7 +163,7 @@ ModelNode::ModelNode(ModelNode* parent, const wxString& text, const wxString& ol } // "color" strings - color_string(m_old_value, black); + color_string(m_old_value, def_text_color()); color_string(m_new_value, orange); UpdateIcons(); @@ -176,13 +181,13 @@ void ModelNode::UpdateEnabling() }; if (!m_toggle) { - change_text_color(m_text, black, grey); - change_text_color(m_old_value, black, grey); + change_text_color(m_text, def_text_color(), grey); + change_text_color(m_old_value, def_text_color(), grey); change_text_color(m_new_value, orange,grey); } else { - change_text_color(m_text, grey, black); - change_text_color(m_old_value, grey, black); + change_text_color(m_text, grey, def_text_color()); + change_text_color(m_old_value, grey, def_text_color()); change_text_color(m_new_value, grey, orange); } // update icons for the colors @@ -227,7 +232,7 @@ UnsavedChangesModel::~UnsavedChangesModel() wxDataViewItem UnsavedChangesModel::AddPreset(Preset::Type type, wxString preset_name, PrinterTechnology pt) { // "color" strings - color_string(preset_name, black); + color_string(preset_name, def_text_color()); make_string_bold(preset_name); auto preset = new ModelNode(type, m_parent_win, preset_name, get_icon_name(type, pt)); @@ -274,9 +279,9 @@ wxDataViewItem UnsavedChangesModel::AddOption(Preset::Type type, wxString catego wxString old_value, wxString new_value, const std::string category_icon_name) { // "color" strings - color_string(category_name, black); - color_string(group_name, black); - color_string(option_name, black); + color_string(category_name, def_text_color()); + color_string(group_name, def_text_color()); + color_string(option_name, def_text_color()); // "make" strings bold make_string_bold(category_name); From 20f5b7a7cd79c8797c6cb12c41ecf767e0258e28 Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik Date: Tue, 15 Dec 2020 15:14:59 +0100 Subject: [PATCH 047/135] When activating the PrusaSlicer main window, focus the Plater 3D view or G-code preview if it is marked as Active. Fixes 3Dconnexion not work directly after importing stl (focus problem ?) #5141 Keep your fingers crossed that it will not break something else. --- src/slic3r/GUI/Plater.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index fca933fa70..beb503ef30 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -5865,15 +5865,14 @@ void Plater::force_print_bed_update() void Plater::on_activate() { -#ifdef __linux__ +#if defined(__linux__) || defined(_WIN32) wxWindow *focus_window = wxWindow::FindFocus(); // Activating the main frame, and no window has keyboard focus. // Set the keyboard focus to the visible Canvas3D. - if (this->p->view3D->IsShown() && (!focus_window || focus_window == this->p->view3D->get_wxglcanvas())) - this->p->view3D->get_wxglcanvas()->SetFocus(); - - else if (this->p->preview->IsShown() && (!focus_window || focus_window == this->p->view3D->get_wxglcanvas())) - this->p->preview->get_wxglcanvas()->SetFocus(); + if (this->p->view3D->IsShown() && wxWindow::FindFocus() != this->p->view3D->get_wxglcanvas()) + CallAfter([this]() { this->p->view3D->get_wxglcanvas()->SetFocus(); }); + else if (this->p->preview->IsShown() && wxWindow::FindFocus() != this->p->view3D->get_wxglcanvas()) + CallAfter([this]() { this->p->preview->get_wxglcanvas()->SetFocus(); }); #endif this->p->show_delayed_error_message(); From dcd69b4ef8f98ac20fe4dbf2fb897afffe907d58 Mon Sep 17 00:00:00 2001 From: enricoturri1966 Date: Tue, 15 Dec 2020 15:57:22 +0100 Subject: [PATCH 048/135] #5415 - Fixed preview when volumetric extrusion is turned on --- src/libslic3r/GCode/GCodeProcessor.cpp | 30 ++++++++++++++++++++++++-- src/libslic3r/GCode/GCodeProcessor.hpp | 3 +++ src/libslic3r/Technologies.hpp | 8 +++++++ 3 files changed, 39 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/GCode/GCodeProcessor.cpp b/src/libslic3r/GCode/GCodeProcessor.cpp index 2a5a08ce80..c045cbcc21 100644 --- a/src/libslic3r/GCode/GCodeProcessor.cpp +++ b/src/libslic3r/GCode/GCodeProcessor.cpp @@ -562,6 +562,10 @@ void GCodeProcessor::apply_config(const PrintConfig& config) } m_time_processor.export_remaining_time_enabled = config.remaining_times.value; + +#if ENABLE_VOLUMETRIC_EXTRUSION_PROCESSING + m_use_volumetric_e = config.use_volumetric_e; +#endif // ENABLE_VOLUMETRIC_EXTRUSION_PROCESSING } void GCodeProcessor::apply_config(const DynamicPrintConfig& config) @@ -719,6 +723,12 @@ void GCodeProcessor::apply_config(const DynamicPrintConfig& config) m_time_processor.machines[i].max_acceleration = max_acceleration; m_time_processor.machines[i].acceleration = (max_acceleration > 0.0f) ? max_acceleration : DEFAULT_ACCELERATION; } + +#if ENABLE_VOLUMETRIC_EXTRUSION_PROCESSING + const ConfigOptionBool* use_volumetric_e = config.option("use_volumetric_e"); + if (use_volumetric_e != nullptr) + m_use_volumetric_e = use_volumetric_e->value; +#endif // ENABLE_VOLUMETRIC_EXTRUSION_PROCESSING } void GCodeProcessor::enable_stealth_time_estimator(bool enabled) @@ -773,6 +783,10 @@ void GCodeProcessor::reset() m_result.reset(); m_result.id = ++s_result_id; +#if ENABLE_VOLUMETRIC_EXTRUSION_PROCESSING + m_use_volumetric_e = false; +#endif // ENABLE_VOLUMETRIC_EXTRUSION_PROCESSING + #if ENABLE_GCODE_VIEWER_DATA_CHECKING m_mm3_per_mm_compare.reset(); m_height_compare.reset(); @@ -1653,8 +1667,14 @@ void GCodeProcessor::process_G0(const GCodeReader::GCodeLine& line) void GCodeProcessor::process_G1(const GCodeReader::GCodeLine& line) { - auto absolute_position = [this](Axis axis, const GCodeReader::GCodeLine& lineG1) - { +#if ENABLE_VOLUMETRIC_EXTRUSION_PROCESSING + float filament_diameter = (static_cast(m_extruder_id) < m_filament_diameters.size()) ? m_filament_diameters[m_extruder_id] : m_filament_diameters.back(); + float filament_radius = 0.5f * filament_diameter; + float area_filament_cross_section = static_cast(M_PI) * sqr(filament_radius); + auto absolute_position = [this, area_filament_cross_section](Axis axis, const GCodeReader::GCodeLine& lineG1) { +#else + auto absolute_position = [this](Axis axis, const GCodeReader::GCodeLine& lineG1) { +#endif // ENABLE_VOLUMETRIC_EXTRUSION_PROCESSING bool is_relative = (m_global_positioning_type == EPositioningType::Relative); if (axis == E) is_relative |= (m_e_local_positioning_type == EPositioningType::Relative); @@ -1662,6 +1682,10 @@ void GCodeProcessor::process_G1(const GCodeReader::GCodeLine& line) if (lineG1.has(Slic3r::Axis(axis))) { float lengthsScaleFactor = (m_units == EUnits::Inches) ? INCHES_TO_MM : 1.0f; float ret = lineG1.value(Slic3r::Axis(axis)) * lengthsScaleFactor; +#if ENABLE_VOLUMETRIC_EXTRUSION_PROCESSING + if (axis == E && m_use_volumetric_e) + ret /= area_filament_cross_section; +#endif // ENABLE_VOLUMETRIC_EXTRUSION_PROCESSING return is_relative ? m_start_position[axis] + ret : m_origin[axis] + ret; } else @@ -1719,9 +1743,11 @@ void GCodeProcessor::process_G1(const GCodeReader::GCodeLine& line) if (type == EMoveType::Extrude) { float delta_xyz = std::sqrt(sqr(delta_pos[X]) + sqr(delta_pos[Y]) + sqr(delta_pos[Z])); +#if !ENABLE_VOLUMETRIC_EXTRUSION_PROCESSING float filament_diameter = (static_cast(m_extruder_id) < m_filament_diameters.size()) ? m_filament_diameters[m_extruder_id] : m_filament_diameters.back(); float filament_radius = 0.5f * filament_diameter; float area_filament_cross_section = static_cast(M_PI) * sqr(filament_radius); +#endif // !ENABLE_VOLUMETRIC_EXTRUSION_PROCESSING float volume_extruded_filament = area_filament_cross_section * delta_pos[E]; float area_toolpath_cross_section = volume_extruded_filament / delta_xyz; diff --git a/src/libslic3r/GCode/GCodeProcessor.hpp b/src/libslic3r/GCode/GCodeProcessor.hpp index db221a360a..4cb2092e8f 100644 --- a/src/libslic3r/GCode/GCodeProcessor.hpp +++ b/src/libslic3r/GCode/GCodeProcessor.hpp @@ -421,6 +421,9 @@ namespace Slic3r { unsigned int m_g1_line_id; unsigned int m_layer_id; CpColor m_cp_color; +#if ENABLE_VOLUMETRIC_EXTRUSION_PROCESSING + bool m_use_volumetric_e; +#endif // ENABLE_VOLUMETRIC_EXTRUSION_PROCESSING enum class EProducer { diff --git a/src/libslic3r/Technologies.hpp b/src/libslic3r/Technologies.hpp index 15098b1b2d..e360e85fe0 100644 --- a/src/libslic3r/Technologies.hpp +++ b/src/libslic3r/Technologies.hpp @@ -99,4 +99,12 @@ #define ENABLE_TOOLPATHS_WIDTH_HEIGHT_FROM_GCODE (1 && ENABLE_2_3_0_BETA3) #define ENABLE_RENDER_PATH_REFRESH_AFTER_OPTIONS_CHANGE (1 && ENABLE_2_3_0_BETA3) + +//================= +// 2.3.0.rc1 techs +//================= +#define ENABLE_2_3_0_RC1 1 + +#define ENABLE_VOLUMETRIC_EXTRUSION_PROCESSING (1 && ENABLE_2_3_0_RC1) + #endif // _prusaslicer_technologies_h_ From c9da06e44a10ecadfa55ac2e1df4f63a48d5d685 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Tue, 15 Dec 2020 16:02:59 +0100 Subject: [PATCH 049/135] Fix for text color for the mode buttons under Linux with GTK2 (related to #5444) --- src/slic3r/GUI/wxExtensions.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/slic3r/GUI/wxExtensions.cpp b/src/slic3r/GUI/wxExtensions.cpp index 0ebe5ae2fb..c52864db3f 100644 --- a/src/slic3r/GUI/wxExtensions.cpp +++ b/src/slic3r/GUI/wxExtensions.cpp @@ -16,10 +16,7 @@ #include "Plater.hpp" #include "../Utils/MacDarkMode.hpp" -#ifdef __linux__ -#define wxLinux true -#else -#define wxLinux false +#ifndef __linux__ // msw_menuitem_bitmaps is used for MSW and OSX static std::map msw_menuitem_bitmaps; #ifdef __WXMSW__ @@ -660,7 +657,13 @@ void ModeButton::focus_button(const bool focus) Slic3r::GUI::wxGetApp().normal_font(); SetFont(new_font); - SetForegroundColour(wxSystemSettings::GetColour(focus ? wxSYS_COLOUR_BTNTEXT : wxLinux ? wxSYS_COLOUR_GRAYTEXT : wxSYS_COLOUR_BTNSHADOW)); + SetForegroundColour(wxSystemSettings::GetColour(focus ? wxSYS_COLOUR_BTNTEXT : +#if defined (__linux__) && defined (__WXGTK3__) + wxSYS_COLOUR_GRAYTEXT +#else + wxSYS_COLOUR_BTNSHADOW +#endif + )); Refresh(); Update(); From f37b9c4d515d7f50e91ea499be59315231e90cb4 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Tue, 15 Dec 2020 21:21:09 +0100 Subject: [PATCH 050/135] Set limits to the "extrusion_multiplier" value and show warning message, if out of range value was inputted --- src/libslic3r/PrintConfig.cpp | 2 ++ src/slic3r/GUI/Field.cpp | 29 +++++++++++++++++++++++------ 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index ada089187e..76bae268b0 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -607,6 +607,7 @@ void PrintConfigDef::init_fff_params() "this setting to get nice surface finish and correct single wall widths. " "Usual values are between 0.9 and 1.1. If you think you need to change this more, " "check filament diameter and your firmware E steps."); + def->max = 2; def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloats { 1. }); @@ -619,6 +620,7 @@ void PrintConfigDef::init_fff_params() "If expressed as percentage (for example: 230%), it will be computed over layer height."); def->sidetext = L("mm or %"); def->min = 0; + def->max = 1000; def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloatOrPercent(0, false)); diff --git a/src/slic3r/GUI/Field.cpp b/src/slic3r/GUI/Field.cpp index e65d87b31f..85c043c3b8 100644 --- a/src/slic3r/GUI/Field.cpp +++ b/src/slic3r/GUI/Field.cpp @@ -259,10 +259,22 @@ void Field::get_value_by_opt_type(wxString& str, const bool check_value/* = true m_value.clear(); break; } - show_error(m_parent, _(L("Input value is out of range"))); - if (m_opt.min > val) val = m_opt.min; - if (val > m_opt.max) val = m_opt.max; - set_value(double_to_string(val), true); + auto set_val = [this](double& val) { + if (m_opt.min > val) val = m_opt.min; + if (val > m_opt.max) val = m_opt.max; + set_value(double_to_string(val), true); + }; + if (m_opt_id == "extrusion_multiplier") { + wxString msg_text = format_wxstr(_L("Input value is out of range\n" + "Are you sure that %s is a correct value and you want to continue?"), str); + wxMessageDialog dialog(m_parent, msg_text, _L("Parameter validation") + ": " + m_opt_id, wxICON_WARNING | wxYES | wxNO); + if (dialog.ShowModal() == wxID_NO) + set_val(val); + } + else { + show_error(m_parent, _L("Input value is out of range")); + set_val(val); + } } } m_value = val; @@ -561,8 +573,13 @@ void TextCtrl::propagate_value() // on_kill_focus() cause a call of OptionsGroup::reload_config(), // Thus, do it only when it's really needed (when undefined value was input) on_kill_focus(); - else if (value_was_changed()) - on_change_field(); + else if (value_was_changed() && m_on_change != nullptr && !m_disable_change_event) { + // For this moment m_value is already updated in value_was_changed() + // so instead of call on_change_field() { m_on_change(m_opt_id, get_value()); } + // just do next: + m_on_change(m_opt_id, m_value); +// on_change_field(); // #ysFIXME delete after testing + } } void TextCtrl::set_value(const boost::any& value, bool change_event/* = false*/) { From 8f04d0e0e2223ea0385b84a563510f9b111ac871 Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik Date: Wed, 16 Dec 2020 11:46:27 +0100 Subject: [PATCH 051/135] Reverted escaping of ampersand where the escaping was not needed / lead to errors. --- src/slic3r/GUI/ConfigWizard.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/slic3r/GUI/ConfigWizard.cpp b/src/slic3r/GUI/ConfigWizard.cpp index 13166dc6de..00cf06e7d1 100644 --- a/src/slic3r/GUI/ConfigWizard.cpp +++ b/src/slic3r/GUI/ConfigWizard.cpp @@ -2271,7 +2271,6 @@ bool ConfigWizard::priv::check_and_install_missing_materials(Technology technolo wxString out; for (const VendorProfile::PrinterModel *printer_model : printer_models) { wxString name = from_u8(printer_model->name); - name.Replace("&", "&&", true); out += "\t\t"; out += name; out += "\n"; From 2f71af1ee40904f8f267fdc23364e9730fb27f28 Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik Date: Wed, 16 Dec 2020 12:05:29 +0100 Subject: [PATCH 052/135] Saving "converted from inches" to 3MF and AMF even if the file source information is empty. --- src/libslic3r/Format/3mf.cpp | 17 +++++++++-------- src/libslic3r/Format/AMF.cpp | 4 ++-- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/libslic3r/Format/3mf.cpp b/src/libslic3r/Format/3mf.cpp index 49c336e621..eb48226343 100644 --- a/src/libslic3r/Format/3mf.cpp +++ b/src/libslic3r/Format/3mf.cpp @@ -2752,17 +2752,18 @@ namespace Slic3r { stream << "\"/>\n"; // stores volume's source data - if (!volume->source.input_file.empty()) { std::string input_file = xml_escape(m_fullpath_sources ? volume->source.input_file : boost::filesystem::path(volume->source.input_file).filename().string()); std::string prefix = std::string(" <") + METADATA_TAG + " " + TYPE_ATTR + "=\"" + VOLUME_TYPE + "\" " + KEY_ATTR + "=\""; - stream << prefix << SOURCE_FILE_KEY << "\" " << VALUE_ATTR << "=\"" << input_file << "\"/>\n"; - stream << prefix << SOURCE_OBJECT_ID_KEY << "\" " << VALUE_ATTR << "=\"" << volume->source.object_idx << "\"/>\n"; - stream << prefix << SOURCE_VOLUME_ID_KEY << "\" " << VALUE_ATTR << "=\"" << volume->source.volume_idx << "\"/>\n"; - stream << prefix << SOURCE_OFFSET_X_KEY << "\" " << VALUE_ATTR << "=\"" << volume->source.mesh_offset(0) << "\"/>\n"; - stream << prefix << SOURCE_OFFSET_Y_KEY << "\" " << VALUE_ATTR << "=\"" << volume->source.mesh_offset(1) << "\"/>\n"; - stream << prefix << SOURCE_OFFSET_Z_KEY << "\" " << VALUE_ATTR << "=\"" << volume->source.mesh_offset(2) << "\"/>\n"; - stream << prefix << SOURCE_OFFSET_Z_KEY << "\" " << VALUE_ATTR << "=\"" << volume->source.mesh_offset(2) << "\"/>\n"; + if (! volume->source.input_file.empty()) { + stream << prefix << SOURCE_FILE_KEY << "\" " << VALUE_ATTR << "=\"" << input_file << "\"/>\n"; + stream << prefix << SOURCE_OBJECT_ID_KEY << "\" " << VALUE_ATTR << "=\"" << volume->source.object_idx << "\"/>\n"; + stream << prefix << SOURCE_VOLUME_ID_KEY << "\" " << VALUE_ATTR << "=\"" << volume->source.volume_idx << "\"/>\n"; + stream << prefix << SOURCE_OFFSET_X_KEY << "\" " << VALUE_ATTR << "=\"" << volume->source.mesh_offset(0) << "\"/>\n"; + stream << prefix << SOURCE_OFFSET_Y_KEY << "\" " << VALUE_ATTR << "=\"" << volume->source.mesh_offset(1) << "\"/>\n"; + stream << prefix << SOURCE_OFFSET_Z_KEY << "\" " << VALUE_ATTR << "=\"" << volume->source.mesh_offset(2) << "\"/>\n"; + stream << prefix << SOURCE_OFFSET_Z_KEY << "\" " << VALUE_ATTR << "=\"" << volume->source.mesh_offset(2) << "\"/>\n"; + } if (volume->source.is_converted_from_inches) stream << prefix << SOURCE_IN_INCHES << "\" " << VALUE_ATTR << "=\"1\"/>\n"; } diff --git a/src/libslic3r/Format/AMF.cpp b/src/libslic3r/Format/AMF.cpp index 2312005a10..07095d10b9 100644 --- a/src/libslic3r/Format/AMF.cpp +++ b/src/libslic3r/Format/AMF.cpp @@ -1213,9 +1213,9 @@ bool store_amf(const char* path, Model* model, const DynamicPrintConfig* config, stream << " " << volume->source.mesh_offset(0) << "\n"; stream << " " << volume->source.mesh_offset(1) << "\n"; stream << " " << volume->source.mesh_offset(2) << "\n"; - if (volume->source.is_converted_from_inches) - stream << " 1\n"; } + if (volume->source.is_converted_from_inches) + stream << " 1\n"; stream << std::setprecision(std::numeric_limits::max_digits10); const indexed_triangle_set &its = volume->mesh().its; for (size_t i = 0; i < its.indices.size(); ++i) { From 52e0e5b8cc861fd72ca33b8abcdd867b409d8279 Mon Sep 17 00:00:00 2001 From: enricoturri1966 Date: Wed, 16 Dec 2020 12:14:57 +0100 Subject: [PATCH 053/135] #5481 - Legend keeps last time estimator mode selected --- src/slic3r/GUI/GCodeViewer.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/slic3r/GUI/GCodeViewer.cpp b/src/slic3r/GUI/GCodeViewer.cpp index c3c627a232..ed35a74c09 100644 --- a/src/slic3r/GUI/GCodeViewer.cpp +++ b/src/slic3r/GUI/GCodeViewer.cpp @@ -370,6 +370,13 @@ void GCodeViewer::load(const GCodeProcessor::Result& gcode_result, const Print& } m_time_statistics = gcode_result.time_statistics; + + if (m_time_estimate_mode != PrintEstimatedTimeStatistics::ETimeMode::Normal) { + float time = m_time_statistics.modes[static_cast(m_time_estimate_mode)].time; + if (time == 0.0f || + short_time(get_time_dhms(time)) == short_time(get_time_dhms(m_time_statistics.modes[static_cast(PrintEstimatedTimeStatistics::ETimeMode::Normal)].time))) + m_time_estimate_mode = PrintEstimatedTimeStatistics::ETimeMode::Normal; + } } void GCodeViewer::refresh(const GCodeProcessor::Result& gcode_result, const std::vector& str_tool_colors) @@ -467,7 +474,6 @@ void GCodeViewer::reset() m_layers_z_range = { 0, 0 }; m_roles = std::vector(); m_time_statistics.reset(); - m_time_estimate_mode = PrintEstimatedTimeStatistics::ETimeMode::Normal; #if ENABLE_GCODE_VIEWER_STATISTICS m_statistics.reset_all(); From 3eb63c93e1626348876dee23cab570d0e6964f1d Mon Sep 17 00:00:00 2001 From: YuSanka Date: Wed, 16 Dec 2020 13:07:27 +0100 Subject: [PATCH 054/135] Follow-up to https://github.com/prusa3d/PrusaSlicer/commit/f37b9c4d515d7f50e91ea499be59315231e90cb4: Fix for issues: Issue 1: 1. Change "Extrusion multiplier" parameter, 2. Save edited preset. 3. Change "Extrusion multiplier" parameter -> preset wasn't marked as "modified" Issue 2: 1. Change "Extrusion multiplier" parameter with out of range value 2. Push ENTER for the message dialog 3. Answer "Yes" 4. Same message dialog appears again --- src/slic3r/GUI/Field.cpp | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/src/slic3r/GUI/Field.cpp b/src/slic3r/GUI/Field.cpp index 85c043c3b8..1575096ba7 100644 --- a/src/slic3r/GUI/Field.cpp +++ b/src/slic3r/GUI/Field.cpp @@ -265,11 +265,13 @@ void Field::get_value_by_opt_type(wxString& str, const bool check_value/* = true set_value(double_to_string(val), true); }; if (m_opt_id == "extrusion_multiplier") { - wxString msg_text = format_wxstr(_L("Input value is out of range\n" - "Are you sure that %s is a correct value and you want to continue?"), str); - wxMessageDialog dialog(m_parent, msg_text, _L("Parameter validation") + ": " + m_opt_id, wxICON_WARNING | wxYES | wxNO); - if (dialog.ShowModal() == wxID_NO) - set_val(val); + if (m_value.empty() || boost::any_cast(m_value) != val) { + wxString msg_text = format_wxstr(_L("Input value is out of range\n" + "Are you sure that %s is a correct value and you want to continue?"), str); + wxMessageDialog dialog(m_parent, msg_text, _L("Parameter validation") + ": " + m_opt_id, wxICON_WARNING | wxYES | wxNO); + if (dialog.ShowModal() == wxID_NO) + set_val(val); + } } else { show_error(m_parent, _L("Input value is out of range")); @@ -573,13 +575,8 @@ void TextCtrl::propagate_value() // on_kill_focus() cause a call of OptionsGroup::reload_config(), // Thus, do it only when it's really needed (when undefined value was input) on_kill_focus(); - else if (value_was_changed() && m_on_change != nullptr && !m_disable_change_event) { - // For this moment m_value is already updated in value_was_changed() - // so instead of call on_change_field() { m_on_change(m_opt_id, get_value()); } - // just do next: - m_on_change(m_opt_id, m_value); -// on_change_field(); // #ysFIXME delete after testing - } + else if (value_was_changed()) + on_change_field(); } void TextCtrl::set_value(const boost::any& value, bool change_event/* = false*/) { From 80251e0cf98c117be915c3bc7adfc4ce85b127b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Hejl?= Date: Wed, 16 Dec 2020 13:17:09 +0100 Subject: [PATCH 055/135] Fixed of unintentional disabling of wipe even in cases when avoid crossing perimeters weren't applied due to exceeding the maximum detour length. --- src/libslic3r/GCode/AvoidCrossingPerimeters.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/GCode/AvoidCrossingPerimeters.cpp b/src/libslic3r/GCode/AvoidCrossingPerimeters.cpp index 59652b565c..f1d8953724 100644 --- a/src/libslic3r/GCode/AvoidCrossingPerimeters.cpp +++ b/src/libslic3r/GCode/AvoidCrossingPerimeters.cpp @@ -943,20 +943,25 @@ Polyline AvoidCrossingPerimeters::travel_to(const GCode &gcodegen, const Point & travel_intersection_count = 0; } - const ConfigOptionFloatOrPercent &opt_max_detour = gcodegen.config().avoid_crossing_perimeters_max_detour; + const ConfigOptionFloatOrPercent &opt_max_detour = gcodegen.config().avoid_crossing_perimeters_max_detour; + bool max_detour_length_exceeded = false; if (opt_max_detour.value > 0) { double direct_length = travel.length(); double detour = result_pl.length() - direct_length; double max_detour_length = opt_max_detour.percent ? direct_length * 0.01 * opt_max_detour.value : scale_(opt_max_detour.value); - if (detour > max_detour_length) + if (detour > max_detour_length) { result_pl = {start, end}; + max_detour_length_exceeded = true; + } } if (use_external) { result_pl.translate(-scaled_origin); *could_be_wipe_disabled = false; + } else if (max_detour_length_exceeded) { + *could_be_wipe_disabled = false; } else *could_be_wipe_disabled = !need_wipe(gcodegen, m_grid_lslice, travel, result_pl, travel_intersection_count); From 0592d15c50b285bc32bec8d77e2bcc152590bb8d Mon Sep 17 00:00:00 2001 From: David Kocik Date: Tue, 15 Dec 2020 16:03:20 +0100 Subject: [PATCH 056/135] render timer draft --- src/slic3r/GUI/GLCanvas3D.cpp | 41 ++++++++++++++++++++-- src/slic3r/GUI/GLCanvas3D.hpp | 38 +++++++++++++++++++- src/slic3r/GUI/NotificationManager.cpp | 48 +++++++++++++++++++++++--- src/slic3r/GUI/NotificationManager.hpp | 11 ++++-- src/slic3r/Utils/PresetUpdater.cpp | 2 ++ 5 files changed, 130 insertions(+), 10 deletions(-) diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index c2e4424313..ff2752cfe4 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -1100,6 +1100,7 @@ wxDEFINE_EVENT(EVT_GLCANVAS_RESET_LAYER_HEIGHT_PROFILE, SimpleEvent); wxDEFINE_EVENT(EVT_GLCANVAS_ADAPTIVE_LAYER_HEIGHT_PROFILE, Event); wxDEFINE_EVENT(EVT_GLCANVAS_SMOOTH_LAYER_HEIGHT_PROFILE, HeightProfileSmoothEvent); wxDEFINE_EVENT(EVT_GLCANVAS_RELOAD_FROM_DISK, SimpleEvent); +wxDEFINE_EVENT(EVT_GLCANVAS_RENDER_TIMER, wxTimerEvent/*RenderTimerEvent*/); const double GLCanvas3D::DefaultCameraZoomToBoxMarginFactor = 1.25; @@ -1184,6 +1185,7 @@ GLCanvas3D::GLCanvas3D(wxGLCanvas* canvas) { if (m_canvas != nullptr) { m_timer.SetOwner(m_canvas); + m_render_timer.SetOwner(m_canvas); #if ENABLE_RETINA_GL m_retina_helper.reset(new RetinaHelper(canvas)); #endif // ENABLE_RETINA_GL @@ -1609,6 +1611,9 @@ void GLCanvas3D::render() wxGetApp().plater()->init_environment_texture(); #endif // ENABLE_ENVIRONMENT_MAP + m_render_timer.Stop(); + m_extra_frame_requested_delayed = std::numeric_limits::max(); + const Size& cnv_size = get_canvas_size(); // Probably due to different order of events on Linux/GTK2, when one switched from 3D scene // to preview, this was called before canvas had its final size. It reported zero width @@ -2346,6 +2351,7 @@ void GLCanvas3D::bind_event_handlers() m_canvas->Bind(wxEVT_KEY_UP, &GLCanvas3D::on_key, this); m_canvas->Bind(wxEVT_MOUSEWHEEL, &GLCanvas3D::on_mouse_wheel, this); m_canvas->Bind(wxEVT_TIMER, &GLCanvas3D::on_timer, this); + m_canvas->Bind(EVT_GLCANVAS_RENDER_TIMER, &GLCanvas3D::on_render_timer, this); m_canvas->Bind(wxEVT_LEFT_DOWN, &GLCanvas3D::on_mouse, this); m_canvas->Bind(wxEVT_LEFT_UP, &GLCanvas3D::on_mouse, this); m_canvas->Bind(wxEVT_MIDDLE_DOWN, &GLCanvas3D::on_mouse, this); @@ -2405,11 +2411,11 @@ void GLCanvas3D::on_idle(wxIdleEvent& evt) return; #if ENABLE_NEW_NOTIFICATIONS_FADE_OUT - NotificationManager* notification_mgr = wxGetApp().plater()->get_notification_manager(); + /*NotificationManager* notification_mgr = wxGetApp().plater()->get_notification_manager(); if (notification_mgr->requires_update()) notification_mgr->update_notifications(); - m_dirty |= notification_mgr->requires_render(); + m_dirty |= notification_mgr->requires_render();*/ #endif // ENABLE_NEW_NOTIFICATIONS_FADE_OUT // FIXME m_dirty |= m_main_toolbar.update_items_state(); @@ -2420,9 +2426,10 @@ void GLCanvas3D::on_idle(wxIdleEvent& evt) m_dirty |= mouse3d_controller_applied; #if ENABLE_NEW_NOTIFICATIONS_FADE_OUT + /* if (notification_mgr->requires_update()) { evt.RequestMore(); - } + }*/ #endif // ENABLE_NEW_NOTIFICATIONS_FADE_OUT if (!m_dirty) @@ -2973,6 +2980,29 @@ void GLCanvas3D::on_timer(wxTimerEvent& evt) _perform_layer_editing_action(); } +void GLCanvas3D::on_render_timer(wxTimerEvent& evt) +{ + render(); +} + +void GLCanvas3D::request_extra_frame_delayed(wxLongLong miliseconds) +{ + + if (!m_render_timer.IsRunning() ) { + m_extra_frame_requested_delayed = miliseconds; + m_render_timer.StartOnce((int)miliseconds.ToLong()); + m_render_timer_start = wxGetLocalTimeMillis(); + } else { + const wxLongLong remaining_time = m_extra_frame_requested_delayed - (wxGetLocalTimeMillis() - m_render_timer_start); + if(miliseconds < remaining_time) { + m_extra_frame_requested_delayed = miliseconds; + m_render_timer.StartOnce((int)miliseconds.ToLong()); + m_render_timer_start = wxGetLocalTimeMillis(); + } + } + +} + #ifndef NDEBUG // #define SLIC3R_DEBUG_MOUSE_EVENTS #endif @@ -6439,5 +6469,10 @@ void GLCanvas3D::WipeTowerInfo::apply_wipe_tower() const wxGetApp().get_tab(Preset::TYPE_PRINT)->load_config(cfg); } + +void GLCanvas3D::RenderTimer::Notify() +{ + wxPostEvent((wxEvtHandler*)GetOwner(), RenderTimerEvent( EVT_GLCANVAS_RENDER_TIMER, *this)); +} } // namespace GUI } // namespace Slic3r diff --git a/src/slic3r/GUI/GLCanvas3D.hpp b/src/slic3r/GUI/GLCanvas3D.hpp index e64e65d1b3..38ae484273 100644 --- a/src/slic3r/GUI/GLCanvas3D.hpp +++ b/src/slic3r/GUI/GLCanvas3D.hpp @@ -74,6 +74,25 @@ public: }; +class RenderTimerEvent : public wxEvent +{ +public: + RenderTimerEvent(wxEventType type, wxTimer& timer) + : wxEvent(timer.GetId(), type), + m_timer(&timer) + { + SetEventObject(timer.GetOwner()); + } + int GetInterval() const { return m_timer->GetInterval(); } + wxTimer& GetTimer() const { return *m_timer; } + + virtual wxEvent* Clone() const { return new RenderTimerEvent(*this); } + virtual wxEventCategory GetEventCategory() const { return wxEVT_CATEGORY_TIMER; } +private: + wxTimer* m_timer; +}; + + wxDECLARE_EVENT(EVT_GLCANVAS_OBJECT_SELECT, SimpleEvent); using Vec2dEvent = Event; @@ -119,6 +138,7 @@ wxDECLARE_EVENT(EVT_GLCANVAS_RESET_LAYER_HEIGHT_PROFILE, SimpleEvent); wxDECLARE_EVENT(EVT_GLCANVAS_ADAPTIVE_LAYER_HEIGHT_PROFILE, Event); wxDECLARE_EVENT(EVT_GLCANVAS_SMOOTH_LAYER_HEIGHT_PROFILE, HeightProfileSmoothEvent); wxDECLARE_EVENT(EVT_GLCANVAS_RELOAD_FROM_DISK, SimpleEvent); +wxDECLARE_EVENT(EVT_GLCANVAS_RENDER_TIMER, wxTimerEvent/*RenderTimerEvent*/); class GLCanvas3D { @@ -391,6 +411,11 @@ class GLCanvas3D static float get_window_width() { return s_window_width; }; }; + class RenderTimer : public wxTimer { + private: + virtual void Notify() override; + }; + public: enum ECursorType : unsigned char { @@ -428,12 +453,16 @@ private: std::string m_sidebar_field; // when true renders an extra frame by not resetting m_dirty to false // see request_extra_frame() - bool m_extra_frame_requested; + bool m_extra_frame_requested; + wxLongLong m_extra_frame_requested_delayed { std::numeric_limits::max() }; bool m_event_handlers_bound{ false }; mutable GLVolumeCollection m_volumes; GCodeViewer m_gcode_viewer; + RenderTimer m_render_timer; + wxLongLong m_render_timer_start; + Selection m_selection; const DynamicPrintConfig* m_config; Model* m_model; @@ -650,6 +679,7 @@ public: void on_key(wxKeyEvent& evt); void on_mouse_wheel(wxMouseEvent& evt); void on_timer(wxTimerEvent& evt); + void on_render_timer(wxTimerEvent& evt); void on_mouse(wxMouseEvent& evt); void on_paint(wxPaintEvent& evt); void on_set_focus(wxFocusEvent& evt); @@ -712,6 +742,7 @@ public: void msw_rescale(); void request_extra_frame() { m_extra_frame_requested = true; } + void request_extra_frame_delayed(wxLongLong miliseconds); int get_main_toolbar_item_id(const std::string& name) const { return m_main_toolbar.get_item_id(name); } void force_main_toolbar_left_action(int item_id) { m_main_toolbar.force_left_action(item_id, *this); } @@ -742,6 +773,11 @@ public: return ret; } + + + + + private: bool _is_shown_on_screen() const; diff --git a/src/slic3r/GUI/NotificationManager.cpp b/src/slic3r/GUI/NotificationManager.cpp index 7706e7c243..300303bbdd 100644 --- a/src/slic3r/GUI/NotificationManager.cpp +++ b/src/slic3r/GUI/NotificationManager.cpp @@ -136,6 +136,7 @@ NotificationManager::PopNotification::PopNotification(const NotificationData &n, , m_hypertext (n.hypertext) , m_text2 (n.text2) , m_evt_handler (evt_handler) + , m_notification_start (wxGetLocalTimeMillis()) { //init(); } @@ -147,6 +148,9 @@ void NotificationManager::PopNotification::render(GLCanvas3D& canvas, float init return; } + if (m_fading_out) + m_last_render_fading = wxGetLocalTimeMillis(); + Size cnv_size = canvas.get_canvas_size(); ImGuiWrapper& imgui = *wxGetApp().imgui(); ImVec2 mouse_pos = ImGui::GetMousePos(); @@ -747,6 +751,8 @@ void NotificationManager::PopNotification::update_state() if (!m_initialized) init(); + m_next_render = std::numeric_limits::max(); + if (m_hidden) { m_state = EState::Hidden; return; @@ -760,21 +766,32 @@ void NotificationManager::PopNotification::update_state() } if (m_counting_down) { + wxMilliClock_t up_time = wxGetLocalTimeMillis() - m_notification_start; + if (m_fading_out && m_current_fade_opacity <= 0.0f) m_finished = true; - else if (!m_fading_out && m_remaining_time == 0) { + else if (!m_fading_out && up_time >= m_remaining_time * 1000) { m_fading_out = true; m_fading_start = wxGetLocalTimeMillis(); + m_last_render_fading = wxGetLocalTimeMillis(); + } else if (!m_fading_out) { + m_next_render = m_remaining_time * 1000 - up_time; + BOOST_LOG_TRIVIAL(error) << (boost::format("next render %1%") % m_next_render); } + } if (m_finished) { m_state = EState::Finished; + m_next_render = 0; + BOOST_LOG_TRIVIAL(error) << "EState::Finished"; return; } if (m_close_pending) { m_finished = true; m_state = EState::ClosePending; + m_next_render = 0; + BOOST_LOG_TRIVIAL(error) << "EState::ClosePending"; return; } if (m_fading_out) { @@ -783,13 +800,17 @@ void NotificationManager::PopNotification::update_state() wxMilliClock_t curr_time = wxGetLocalTimeMillis() - m_fading_start; wxMilliClock_t no_render_time = wxGetLocalTimeMillis() - m_last_render_fading; m_current_fade_opacity = std::clamp(1.0f - 0.001f * static_cast(curr_time.GetValue()) / FADING_OUT_DURATION, 0.0f, 1.0f); - if (no_render_time > FADING_OUT_TIMEOUT) { + auto next_render = FADING_OUT_TIMEOUT - no_render_time; + if (next_render <= 0) { m_last_render_fading = wxGetLocalTimeMillis(); m_state = EState::FadingOutRender; - } + m_next_render = 0; + } else + m_next_render = next_render; + BOOST_LOG_TRIVIAL(error) << (boost::format("fade render %1%") % m_next_render); } - } + } #endif // ENABLE_NEW_NOTIFICATIONS_FADE_OUT @@ -1228,6 +1249,7 @@ void NotificationManager::render_notifications(float overlay_width) } } + update_notifications(); } #else void NotificationManager::render_notifications(float overlay_width) @@ -1377,6 +1399,12 @@ void NotificationManager::update_notifications() break; } } + if (m_hovered) { + for (const std::unique_ptr& notification : m_pop_notifications) { + notification->reset_start_time(); + } + } + // Reuire render if some notification was just deleted. size_t curr_size = m_pop_notifications.size(); @@ -1396,6 +1424,18 @@ void NotificationManager::update_notifications() if (m_requires_render) m_requires_update = true; + //request frames + wxLongLong next_render = std::numeric_limits::max(); + const wxLongLong max = std::numeric_limits::max(); + for (const std::unique_ptr& notification : m_pop_notifications) { + next_render = std::min(next_render, notification->next_render()); + } + + if (next_render == 0) + wxGetApp().plater()->get_current_canvas3D()->request_extra_frame(); + else if (next_render < max) + wxGetApp().plater()->get_current_canvas3D()->request_extra_frame_delayed(next_render); + // actualizate timers wxWindow* p = dynamic_cast(wxGetApp().plater()); while (p->GetParent() != nullptr) diff --git a/src/slic3r/GUI/NotificationManager.hpp b/src/slic3r/GUI/NotificationManager.hpp index 3e278a3908..fef66f1835 100644 --- a/src/slic3r/GUI/NotificationManager.hpp +++ b/src/slic3r/GUI/NotificationManager.hpp @@ -242,6 +242,8 @@ private: bool requires_render() const { return m_state == EState::FadingOutRender || m_state == EState::ClosePending || m_state == EState::Finished; } bool requires_update() const { return m_state != EState::Hidden; } EState get_state() const { return m_state; } + wxLongLong next_render() const { return m_next_render; } + void reset_start_time() { m_notification_start = wxGetLocalTimeMillis(); } #endif // ENABLE_NEW_NOTIFICATIONS_FADE_OUT protected: @@ -297,8 +299,13 @@ private: int m_countdown_frame { 0 }; bool m_fading_out { false }; #if ENABLE_NEW_NOTIFICATIONS_FADE_OUT - wxMilliClock_t m_fading_start { 0LL }; - wxMilliClock_t m_last_render_fading { 0LL }; + wxLongLong m_fading_start { 0LL }; + // time of last done render when fading + wxLongLong m_last_render_fading { 0LL }; + // first appereance of notification or last hover; + wxLongLong m_notification_start; + // time to next must-do render + wxLongLong m_next_render { std::numeric_limits::max() }; #else // total time left when fading beggins float m_fading_time{ 0.0f }; diff --git a/src/slic3r/Utils/PresetUpdater.cpp b/src/slic3r/Utils/PresetUpdater.cpp index 21eea94286..5de3da7432 100644 --- a/src/slic3r/Utils/PresetUpdater.cpp +++ b/src/slic3r/Utils/PresetUpdater.cpp @@ -740,6 +740,8 @@ void PresetUpdater::slic3r_update_notify() PresetUpdater::UpdateResult PresetUpdater::config_update(const Semver& old_slic3r_version, bool no_notification) const { if (! p->enabled_config_update) { return R_NOOP; } + + GUI::wxGetApp().plater()->get_notification_manager()->push_notification(GUI::NotificationType::PresetUpdateAvailable); auto updates = p->get_config_updates(old_slic3r_version); if (updates.incompats.size() > 0) { From 3ae40139b3e94d82b91dcbda45497175e07acb83 Mon Sep 17 00:00:00 2001 From: David Kocik Date: Wed, 16 Dec 2020 13:59:16 +0100 Subject: [PATCH 057/135] render timer --- src/slic3r/GUI/GLCanvas3D.cpp | 14 ++++++++-- src/slic3r/GUI/NotificationManager.cpp | 36 +++++++++++++------------- src/slic3r/GUI/NotificationManager.hpp | 6 ++--- src/slic3r/Utils/PresetUpdater.cpp | 2 -- 4 files changed, 33 insertions(+), 25 deletions(-) diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index ff2752cfe4..28f5c7c7f8 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -2409,7 +2409,6 @@ void GLCanvas3D::on_idle(wxIdleEvent& evt) { if (!m_initialized) return; - #if ENABLE_NEW_NOTIFICATIONS_FADE_OUT /*NotificationManager* notification_mgr = wxGetApp().plater()->get_notification_manager(); if (notification_mgr->requires_update()) @@ -2982,7 +2981,17 @@ void GLCanvas3D::on_timer(wxTimerEvent& evt) void GLCanvas3D::on_render_timer(wxTimerEvent& evt) { - render(); + // If slicer is not top window -> restart timer with one second to try again + wxWindow* p = dynamic_cast(wxGetApp().plater()); + while (p->GetParent() != nullptr) + p = p->GetParent(); + wxTopLevelWindow* top_level_wnd = dynamic_cast(p); + if (!top_level_wnd->IsActive()) { + request_extra_frame_delayed(1000); + return; + } + //render(); + m_dirty = true; } void GLCanvas3D::request_extra_frame_delayed(wxLongLong miliseconds) @@ -2995,6 +3004,7 @@ void GLCanvas3D::request_extra_frame_delayed(wxLongLong miliseconds) } else { const wxLongLong remaining_time = m_extra_frame_requested_delayed - (wxGetLocalTimeMillis() - m_render_timer_start); if(miliseconds < remaining_time) { + m_render_timer.Stop(); m_extra_frame_requested_delayed = miliseconds; m_render_timer.StartOnce((int)miliseconds.ToLong()); m_render_timer_start = wxGetLocalTimeMillis(); diff --git a/src/slic3r/GUI/NotificationManager.cpp b/src/slic3r/GUI/NotificationManager.cpp index 300303bbdd..d241bd3c2a 100644 --- a/src/slic3r/GUI/NotificationManager.cpp +++ b/src/slic3r/GUI/NotificationManager.cpp @@ -22,6 +22,9 @@ static constexpr float SPACE_RIGHT_PANEL = 10.0f; static constexpr float FADING_OUT_DURATION = 2.0f; // Time in Miliseconds after next render is requested static constexpr int FADING_OUT_TIMEOUT = 100; +// If timeout is changed to higher than 1 second, substract_time call should be revorked +static constexpr int MAX_TIMEOUT_MILISECONDS = 1000; +static constexpr int MAX_TIMEOUT_SECONDS = 1; #endif // ENABLE_NEW_NOTIFICATIONS_FADE_OUT namespace Slic3r { @@ -136,7 +139,7 @@ NotificationManager::PopNotification::PopNotification(const NotificationData &n, , m_hypertext (n.hypertext) , m_text2 (n.text2) , m_evt_handler (evt_handler) - , m_notification_start (wxGetLocalTimeMillis()) +// , m_notification_start (wxGetLocalTimeMillis()) { //init(); } @@ -763,24 +766,26 @@ void NotificationManager::PopNotification::update_state() m_fading_out = false; m_current_fade_opacity = 1.0f; m_remaining_time = m_data.duration; +// m_notification_start = wxGetLocalTimeMillis(); + BOOST_LOG_TRIVIAL(error) << "hover"; } if (m_counting_down) { - wxMilliClock_t up_time = wxGetLocalTimeMillis() - m_notification_start; - + //wxMilliClock_t up_time = wxGetLocalTimeMillis() - m_notification_start; + if (m_fading_out && m_current_fade_opacity <= 0.0f) m_finished = true; - else if (!m_fading_out && up_time >= m_remaining_time * 1000) { + else if (!m_fading_out && m_remaining_time <=0/*up_time >= m_data.duration * 1000*/) { m_fading_out = true; m_fading_start = wxGetLocalTimeMillis(); m_last_render_fading = wxGetLocalTimeMillis(); } else if (!m_fading_out) { - m_next_render = m_remaining_time * 1000 - up_time; - BOOST_LOG_TRIVIAL(error) << (boost::format("next render %1%") % m_next_render); + m_next_render = std::min(/*m_data.duration * 1000 - up_time*/m_remaining_time * 1000, MAX_TIMEOUT_MILISECONDS); + //BOOST_LOG_TRIVIAL(error) << (boost::format("up time %1% next render %2%") % up_time % m_next_render); } } - + if (m_finished) { m_state = EState::Finished; m_next_render = 0; @@ -802,15 +807,15 @@ void NotificationManager::PopNotification::update_state() m_current_fade_opacity = std::clamp(1.0f - 0.001f * static_cast(curr_time.GetValue()) / FADING_OUT_DURATION, 0.0f, 1.0f); auto next_render = FADING_OUT_TIMEOUT - no_render_time; if (next_render <= 0) { - m_last_render_fading = wxGetLocalTimeMillis(); + //m_last_render_fading = wxGetLocalTimeMillis(); m_state = EState::FadingOutRender; m_next_render = 0; } else m_next_render = next_render; - BOOST_LOG_TRIVIAL(error) << (boost::format("fade render %1%") % m_next_render); + //BOOST_LOG_TRIVIAL(error) << (boost::format("fade render %1%") % m_next_render); } } - + BOOST_LOG_TRIVIAL(error) << (boost::format("remaining time %1% fading %2% next render %3%") % m_remaining_time % m_fading_out % m_next_render); } #endif // ENABLE_NEW_NOTIFICATIONS_FADE_OUT @@ -1399,11 +1404,6 @@ void NotificationManager::update_notifications() break; } } - if (m_hovered) { - for (const std::unique_ptr& notification : m_pop_notifications) { - notification->reset_start_time(); - } - } // Reuire render if some notification was just deleted. @@ -1450,13 +1450,13 @@ void NotificationManager::update_notifications() long now = wxGetLocalTime(); // Pausing fade-out when the mouse is over some notification. if (!m_hovered && m_last_time < now) { - if (now - m_last_time >= 1) { + if (now - m_last_time >= MAX_TIMEOUT_SECONDS) { for (auto& notification : m_pop_notifications) { //if (notification->get_state() != PopNotification::EState::Static) - notification->substract_remaining_time(); + notification->substract_remaining_time(MAX_TIMEOUT_SECONDS); } + m_last_time = now; } - m_last_time = now; } } } diff --git a/src/slic3r/GUI/NotificationManager.hpp b/src/slic3r/GUI/NotificationManager.hpp index fef66f1835..a7a333fae0 100644 --- a/src/slic3r/GUI/NotificationManager.hpp +++ b/src/slic3r/GUI/NotificationManager.hpp @@ -232,7 +232,7 @@ private: const NotificationData get_data() const { return m_data; } const bool is_gray() const { return m_is_gray; } // Call equals one second down - void substract_remaining_time() { m_remaining_time--; } + void substract_remaining_time(int seconds) { m_remaining_time -= seconds; } void set_gray(bool g) { m_is_gray = g; } void set_paused(bool p) { m_paused = p; } bool compare_text(const std::string& text); @@ -243,7 +243,7 @@ private: bool requires_update() const { return m_state != EState::Hidden; } EState get_state() const { return m_state; } wxLongLong next_render() const { return m_next_render; } - void reset_start_time() { m_notification_start = wxGetLocalTimeMillis(); } +// void reset_start_time() { m_notification_start = wxGetLocalTimeMillis(); } #endif // ENABLE_NEW_NOTIFICATIONS_FADE_OUT protected: @@ -303,7 +303,7 @@ private: // time of last done render when fading wxLongLong m_last_render_fading { 0LL }; // first appereance of notification or last hover; - wxLongLong m_notification_start; +// wxLongLong m_notification_start; // time to next must-do render wxLongLong m_next_render { std::numeric_limits::max() }; #else diff --git a/src/slic3r/Utils/PresetUpdater.cpp b/src/slic3r/Utils/PresetUpdater.cpp index 5de3da7432..c3ea473cba 100644 --- a/src/slic3r/Utils/PresetUpdater.cpp +++ b/src/slic3r/Utils/PresetUpdater.cpp @@ -741,8 +741,6 @@ PresetUpdater::UpdateResult PresetUpdater::config_update(const Semver& old_slic3 { if (! p->enabled_config_update) { return R_NOOP; } - GUI::wxGetApp().plater()->get_notification_manager()->push_notification(GUI::NotificationType::PresetUpdateAvailable); - auto updates = p->get_config_updates(old_slic3r_version); if (updates.incompats.size() > 0) { BOOST_LOG_TRIVIAL(info) << format("%1% bundles incompatible. Asking for action...", updates.incompats.size()); From 08c4f674f704e6923183d887496730104013d99d Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik Date: Wed, 16 Dec 2020 14:40:56 +0100 Subject: [PATCH 058/135] Disabled "error" outputs 1) they should have been trace and 2) likely they should have been only enabled in debug mode and only through conditional compilation --- src/slic3r/GUI/NotificationManager.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/slic3r/GUI/NotificationManager.cpp b/src/slic3r/GUI/NotificationManager.cpp index d241bd3c2a..1bd12dc562 100644 --- a/src/slic3r/GUI/NotificationManager.cpp +++ b/src/slic3r/GUI/NotificationManager.cpp @@ -767,7 +767,7 @@ void NotificationManager::PopNotification::update_state() m_current_fade_opacity = 1.0f; m_remaining_time = m_data.duration; // m_notification_start = wxGetLocalTimeMillis(); - BOOST_LOG_TRIVIAL(error) << "hover"; +// BOOST_LOG_TRIVIAL(error) << "hover"; } if (m_counting_down) { @@ -789,14 +789,14 @@ void NotificationManager::PopNotification::update_state() if (m_finished) { m_state = EState::Finished; m_next_render = 0; - BOOST_LOG_TRIVIAL(error) << "EState::Finished"; + //BOOST_LOG_TRIVIAL(error) << "EState::Finished"; return; } if (m_close_pending) { m_finished = true; m_state = EState::ClosePending; m_next_render = 0; - BOOST_LOG_TRIVIAL(error) << "EState::ClosePending"; + //BOOST_LOG_TRIVIAL(error) << "EState::ClosePending"; return; } if (m_fading_out) { @@ -815,7 +815,7 @@ void NotificationManager::PopNotification::update_state() //BOOST_LOG_TRIVIAL(error) << (boost::format("fade render %1%") % m_next_render); } } - BOOST_LOG_TRIVIAL(error) << (boost::format("remaining time %1% fading %2% next render %3%") % m_remaining_time % m_fading_out % m_next_render); + //BOOST_LOG_TRIVIAL(error) << (boost::format("remaining time %1% fading %2% next render %3%") % m_remaining_time % m_fading_out % m_next_render); } #endif // ENABLE_NEW_NOTIFICATIONS_FADE_OUT From 1dae057f157464ab7be11e871d43d16f8b8bee36 Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik Date: Wed, 16 Dec 2020 16:15:58 +0100 Subject: [PATCH 059/135] Some refactoring of the fade out of notifications: 1) Use different wxWidgets call to get current time on Windows vs Unix for efficiency reasons. 2) Don't call this function multiple times in a single function, it is both expensive and not correct: One shall work with the same timestamp. 3) Added missing unbind of the new timer. --- src/slic3r/GUI/GLCanvas3D.cpp | 22 ++++++++--------- src/slic3r/GUI/GLCanvas3D.hpp | 22 ++++++++++------- src/slic3r/GUI/NotificationManager.cpp | 33 +++++++++++++------------- src/slic3r/GUI/NotificationManager.hpp | 11 ++++----- 4 files changed, 47 insertions(+), 41 deletions(-) diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 28f5c7c7f8..11e61b9f94 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -1612,7 +1612,7 @@ void GLCanvas3D::render() #endif // ENABLE_ENVIRONMENT_MAP m_render_timer.Stop(); - m_extra_frame_requested_delayed = std::numeric_limits::max(); + m_extra_frame_requested_delayed = std::numeric_limits::max(); const Size& cnv_size = get_canvas_size(); // Probably due to different order of events on Linux/GTK2, when one switched from 3D scene @@ -2381,6 +2381,7 @@ void GLCanvas3D::unbind_event_handlers() m_canvas->Unbind(wxEVT_KEY_UP, &GLCanvas3D::on_key, this); m_canvas->Unbind(wxEVT_MOUSEWHEEL, &GLCanvas3D::on_mouse_wheel, this); m_canvas->Unbind(wxEVT_TIMER, &GLCanvas3D::on_timer, this); + m_canvas->Unbind(EVT_GLCANVAS_RENDER_TIMER, &GLCanvas3D::on_render_timer, this); m_canvas->Unbind(wxEVT_LEFT_DOWN, &GLCanvas3D::on_mouse, this); m_canvas->Unbind(wxEVT_LEFT_UP, &GLCanvas3D::on_mouse, this); m_canvas->Unbind(wxEVT_MIDDLE_DOWN, &GLCanvas3D::on_mouse, this); @@ -2994,23 +2995,22 @@ void GLCanvas3D::on_render_timer(wxTimerEvent& evt) m_dirty = true; } -void GLCanvas3D::request_extra_frame_delayed(wxLongLong miliseconds) +void GLCanvas3D::request_extra_frame_delayed(int miliseconds) { - - if (!m_render_timer.IsRunning() ) { + int64_t now = timestamp_now(); + if (! m_render_timer.IsRunning()) { m_extra_frame_requested_delayed = miliseconds; - m_render_timer.StartOnce((int)miliseconds.ToLong()); - m_render_timer_start = wxGetLocalTimeMillis(); + m_render_timer.StartOnce(miliseconds); + m_render_timer_start = now; } else { - const wxLongLong remaining_time = m_extra_frame_requested_delayed - (wxGetLocalTimeMillis() - m_render_timer_start); - if(miliseconds < remaining_time) { + const int64_t remaining_time = (m_render_timer_start + m_extra_frame_requested_delayed) - now; + if (miliseconds < remaining_time) { m_render_timer.Stop(); m_extra_frame_requested_delayed = miliseconds; - m_render_timer.StartOnce((int)miliseconds.ToLong()); - m_render_timer_start = wxGetLocalTimeMillis(); + m_render_timer.StartOnce(miliseconds); + m_render_timer_start = now; } } - } #ifndef NDEBUG diff --git a/src/slic3r/GUI/GLCanvas3D.hpp b/src/slic3r/GUI/GLCanvas3D.hpp index 38ae484273..e315d4cb44 100644 --- a/src/slic3r/GUI/GLCanvas3D.hpp +++ b/src/slic3r/GUI/GLCanvas3D.hpp @@ -349,7 +349,7 @@ class GLCanvas3D public: void add_frame(int64_t frame) { - int64_t now = wxGetLocalTimeMillis().GetValue(); + int64_t now = GLCanvas3D::timestamp_now(); if (!m_frames.empty() && now - m_frames.front().first > 1000) { m_curr_total -= m_frames.front().second; m_frames.pop(); @@ -454,14 +454,14 @@ private: // when true renders an extra frame by not resetting m_dirty to false // see request_extra_frame() bool m_extra_frame_requested; - wxLongLong m_extra_frame_requested_delayed { std::numeric_limits::max() }; + int m_extra_frame_requested_delayed { std::numeric_limits::max() }; bool m_event_handlers_bound{ false }; mutable GLVolumeCollection m_volumes; GCodeViewer m_gcode_viewer; RenderTimer m_render_timer; - wxLongLong m_render_timer_start; + int64_t m_render_timer_start; Selection m_selection; const DynamicPrintConfig* m_config; @@ -742,7 +742,7 @@ public: void msw_rescale(); void request_extra_frame() { m_extra_frame_requested = true; } - void request_extra_frame_delayed(wxLongLong miliseconds); + void request_extra_frame_delayed(int miliseconds); int get_main_toolbar_item_id(const std::string& name) const { return m_main_toolbar.get_item_id(name); } void force_main_toolbar_left_action(int item_id) { m_main_toolbar.force_left_action(item_id, *this); } @@ -773,10 +773,16 @@ public: return ret; } - - - - + // Timestamp for FPS calculation and notification fade-outs. + static int64_t timestamp_now() { +#ifdef _WIN32 + // Cheaper on Windows, calls GetSystemTimeAsFileTime() + return wxGetUTCTimeMillis().GetValue(); +#else + // calls clock() + return wxGetLocalTimeMillis().GetValue(); +#endif + } private: bool _is_shown_on_screen() const; diff --git a/src/slic3r/GUI/NotificationManager.cpp b/src/slic3r/GUI/NotificationManager.cpp index 1bd12dc562..fa5aab66c1 100644 --- a/src/slic3r/GUI/NotificationManager.cpp +++ b/src/slic3r/GUI/NotificationManager.cpp @@ -139,7 +139,6 @@ NotificationManager::PopNotification::PopNotification(const NotificationData &n, , m_hypertext (n.hypertext) , m_text2 (n.text2) , m_evt_handler (evt_handler) -// , m_notification_start (wxGetLocalTimeMillis()) { //init(); } @@ -152,7 +151,7 @@ void NotificationManager::PopNotification::render(GLCanvas3D& canvas, float init } if (m_fading_out) - m_last_render_fading = wxGetLocalTimeMillis(); + m_last_render_fading = GLCanvas3D::timestamp_now(); Size cnv_size = canvas.get_canvas_size(); ImGuiWrapper& imgui = *wxGetApp().imgui(); @@ -754,7 +753,7 @@ void NotificationManager::PopNotification::update_state() if (!m_initialized) init(); - m_next_render = std::numeric_limits::max(); + m_next_render = std::numeric_limits::max(); if (m_hidden) { m_state = EState::Hidden; @@ -766,21 +765,23 @@ void NotificationManager::PopNotification::update_state() m_fading_out = false; m_current_fade_opacity = 1.0f; m_remaining_time = m_data.duration; -// m_notification_start = wxGetLocalTimeMillis(); +// m_notification_start = GLCanvas3D::timestamp_now(); // BOOST_LOG_TRIVIAL(error) << "hover"; } + int64_t now = GLCanvas3D::timestamp_now(); + if (m_counting_down) { - //wxMilliClock_t up_time = wxGetLocalTimeMillis() - m_notification_start; + //int64_t up_time = GLCanvas3D::timestamp_now() - m_notification_start; if (m_fading_out && m_current_fade_opacity <= 0.0f) m_finished = true; else if (!m_fading_out && m_remaining_time <=0/*up_time >= m_data.duration * 1000*/) { m_fading_out = true; - m_fading_start = wxGetLocalTimeMillis(); - m_last_render_fading = wxGetLocalTimeMillis(); + m_fading_start = now; + m_last_render_fading = now; } else if (!m_fading_out) { - m_next_render = std::min(/*m_data.duration * 1000 - up_time*/m_remaining_time * 1000, MAX_TIMEOUT_MILISECONDS); + m_next_render = std::min(/*m_data.duration * 1000 - up_time*/m_remaining_time * 1000, MAX_TIMEOUT_MILISECONDS); //BOOST_LOG_TRIVIAL(error) << (boost::format("up time %1% next render %2%") % up_time % m_next_render); } @@ -802,12 +803,12 @@ void NotificationManager::PopNotification::update_state() if (m_fading_out) { if (!m_paused) { m_state = EState::FadingOutStatic; - wxMilliClock_t curr_time = wxGetLocalTimeMillis() - m_fading_start; - wxMilliClock_t no_render_time = wxGetLocalTimeMillis() - m_last_render_fading; - m_current_fade_opacity = std::clamp(1.0f - 0.001f * static_cast(curr_time.GetValue()) / FADING_OUT_DURATION, 0.0f, 1.0f); + int64_t curr_time = now - m_fading_start; + int64_t no_render_time = now - m_last_render_fading; + m_current_fade_opacity = std::clamp(1.0f - 0.001f * static_cast(curr_time) / FADING_OUT_DURATION, 0.0f, 1.0f); auto next_render = FADING_OUT_TIMEOUT - no_render_time; if (next_render <= 0) { - //m_last_render_fading = wxGetLocalTimeMillis(); + //m_last_render_fading = GLCanvas3D::timestamp_now(); m_state = EState::FadingOutRender; m_next_render = 0; } else @@ -1425,16 +1426,16 @@ void NotificationManager::update_notifications() m_requires_update = true; //request frames - wxLongLong next_render = std::numeric_limits::max(); - const wxLongLong max = std::numeric_limits::max(); + int64_t next_render = std::numeric_limits::max(); + const int64_t max = std::numeric_limits::max(); for (const std::unique_ptr& notification : m_pop_notifications) { - next_render = std::min(next_render, notification->next_render()); + next_render = std::min(next_render, notification->next_render()); } if (next_render == 0) wxGetApp().plater()->get_current_canvas3D()->request_extra_frame(); else if (next_render < max) - wxGetApp().plater()->get_current_canvas3D()->request_extra_frame_delayed(next_render); + wxGetApp().plater()->get_current_canvas3D()->request_extra_frame_delayed(int(next_render)); // actualizate timers wxWindow* p = dynamic_cast(wxGetApp().plater()); diff --git a/src/slic3r/GUI/NotificationManager.hpp b/src/slic3r/GUI/NotificationManager.hpp index a7a333fae0..580c838c53 100644 --- a/src/slic3r/GUI/NotificationManager.hpp +++ b/src/slic3r/GUI/NotificationManager.hpp @@ -242,8 +242,7 @@ private: bool requires_render() const { return m_state == EState::FadingOutRender || m_state == EState::ClosePending || m_state == EState::Finished; } bool requires_update() const { return m_state != EState::Hidden; } EState get_state() const { return m_state; } - wxLongLong next_render() const { return m_next_render; } -// void reset_start_time() { m_notification_start = wxGetLocalTimeMillis(); } + int64_t next_render() const { return m_next_render; } #endif // ENABLE_NEW_NOTIFICATIONS_FADE_OUT protected: @@ -299,13 +298,13 @@ private: int m_countdown_frame { 0 }; bool m_fading_out { false }; #if ENABLE_NEW_NOTIFICATIONS_FADE_OUT - wxLongLong m_fading_start { 0LL }; + int64_t m_fading_start { 0LL }; // time of last done render when fading - wxLongLong m_last_render_fading { 0LL }; + int64_t m_last_render_fading { 0LL }; // first appereance of notification or last hover; -// wxLongLong m_notification_start; +// int64_t m_notification_start; // time to next must-do render - wxLongLong m_next_render { std::numeric_limits::max() }; + int64_t m_next_render { std::numeric_limits::max() }; #else // total time left when fading beggins float m_fading_time{ 0.0f }; From 3f11877c8f1eb1435c3d0b2c786af9a7bbb26d3c Mon Sep 17 00:00:00 2001 From: rtyr <36745189+rtyr@users.noreply.github.com> Date: Wed, 16 Dec 2020 16:18:31 +0100 Subject: [PATCH 060/135] Added full_fan_speed_layer value for PETG. Increased support interface spacing for 0.6mm nozzle profiles. Updated firmware version. --- resources/profiles/PrusaResearch.idx | 2 + resources/profiles/PrusaResearch.ini | 57 +++++++++++++++------------- 2 files changed, 32 insertions(+), 27 deletions(-) diff --git a/resources/profiles/PrusaResearch.idx b/resources/profiles/PrusaResearch.idx index ec139937f4..389178def7 100644 --- a/resources/profiles/PrusaResearch.idx +++ b/resources/profiles/PrusaResearch.idx @@ -1,3 +1,5 @@ +min_slic3r_version = 2.3.0-rc1 +1.2.0 Added full_fan_speed_layer value for PETG. Increased support interface spacing for 0.6mm nozzle profiles. Updated firmware version. min_slic3r_version = 2.3.0-beta2 1.2.0-beta1 Updated end g-code. Added full_fan_speed_layer values. min_slic3r_version = 2.3.0-beta0 diff --git a/resources/profiles/PrusaResearch.ini b/resources/profiles/PrusaResearch.ini index 4f4aa01537..1607ee1604 100644 --- a/resources/profiles/PrusaResearch.ini +++ b/resources/profiles/PrusaResearch.ini @@ -5,7 +5,7 @@ name = Prusa Research # Configuration version of this file. Config file will only be installed, if the config_version differs. # This means, the server may force the PrusaSlicer configuration to be downgraded. -config_version = 1.2.0-beta1 +config_version = 1.2.0 # Where to get the updates from? config_update_url = https://files.prusa3d.com/wp-content/uploads/repository/PrusaSlicer-settings-master/live/PrusaResearch/ changelog_url = https://files.prusa3d.com/?latest=slicer-profiles&lng=%1% @@ -317,6 +317,7 @@ solid_infill_extrusion_width = 0.65 top_infill_extrusion_width = 0.6 support_material_extrusion_width = 0.55 support_material_contact_distance = 0.15 +support_material_interface_spacing = 0.3 support_material_xy_spacing = 80% output_filename_format = {input_filename_base}_{nozzle_diameter[0]}n_{layer_height}mm_{filament_type[0]}_{printer_model}_{print_time}.gcode infill_anchor_max = 15 @@ -355,6 +356,7 @@ support_material_speed = 40 output_filename_format = {input_filename_base}_{nozzle_diameter[0]}n_{layer_height}mm_{filament_type[0]}_{printer_model}_{print_time}.gcode infill_anchor_max = 15 first_layer_height = 0.3 +support_material_interface_spacing = 0.3 [print:*soluble_support*] overhangs = 1 @@ -1419,6 +1421,7 @@ inherits = *common* bed_temperature = 90 bridge_fan_speed = 50 disable_fan_first_layers = 3 +full_fan_speed_layer = 5 fan_always_on = 1 fan_below_layer_time = 20 filament_colour = #FF8000 @@ -5080,21 +5083,21 @@ inherits = Original Prusa i3 MK2S printer_model = MK2.5 remaining_times = 1 machine_max_jerk_e = 4.5 -start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0 +start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.2 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0 [printer:Original Prusa i3 MK2.5 0.25 nozzle] inherits = Original Prusa i3 MK2S 0.25 nozzle printer_model = MK2.5 remaining_times = 1 machine_max_jerk_e = 4.5 -start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0 +start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.2 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0 [printer:Original Prusa i3 MK2.5 0.6 nozzle] inherits = Original Prusa i3 MK2S 0.6 nozzle printer_model = MK2.5 remaining_times = 1 machine_max_jerk_e = 4.5 -start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0 +start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.2 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0 [printer:Original Prusa i3 MK2.5 MMU2 Single] inherits = Original Prusa i3 MK2.5; *mm2* @@ -5123,7 +5126,7 @@ machine_min_travel_rate = 0 default_print_profile = 0.15mm OPTIMAL @MK2.5 default_filament_profile = Prusament PLA printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_MK2.5\n -start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\n; select extruder\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; load to nozzle\nTc\n; purge line\nG1 X55.0 E8.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F2200.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\nG92 E0.0\n +start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.2 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\n; select extruder\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; load to nozzle\nTc\n; purge line\nG1 X55.0 E8.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F2200.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\nG92 E0.0\n end_gcode = {if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+10, max_print_height)}{endif} F720 ; Move print head up\nG1 X0 Y210 F7200\nG1 E2 F5000\nG1 E2 F5500\nG1 E2 F6000\nG1 E-15.0000 F5800\nG1 E-20.0000 F5500\nG1 E10.0000 F3000\nG1 E-10.0000 F3100\nG1 E10.0000 F3150\nG1 E-10.0000 F3250\nG1 E10.0000 F3300\n\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nM702 C\nG4 ; wait\nM104 S0 ; turn off temperature\nM900 K0 ; reset LA\nM84 ; disable motors [printer:Original Prusa i3 MK2.5 MMU2 Single 0.6 nozzle] @@ -5165,23 +5168,23 @@ single_extruder_multi_material = 1 # to be defined explicitely. nozzle_diameter = 0.4,0.4,0.4,0.4,0.4 extruder_colour = #FF8000;#DB5182;#00FFFF;#FF4F4F;#9FFF9F -start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55.0 E32.0 F1073.0\nG1 X5.0 E32.0 F1800.0\nG1 X55.0 E8.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F2200.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\nG92 E0.0\n{endif}\nG92 E0.0\n +start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.2 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55.0 E32.0 F1073.0\nG1 X5.0 E32.0 F1800.0\nG1 X55.0 E8.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F2200.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\nG92 E0.0\n{endif}\nG92 E0.0\n end_gcode = {if has_wipe_tower}\nG1 E-15.0000 F3000\n{else}\nG1 X0 Y210 F7200\nG1 E2 F5000\nG1 E2 F5500\nG1 E2 F6000\nG1 E-15.0000 F5800\nG1 E-20.0000 F5500\nG1 E10.0000 F3000\nG1 E-10.0000 F3100\nG1 E10.0000 F3150\nG1 E-10.0000 F3250\nG1 E10.0000 F3300\n{endif}\n\n; Unload filament\nM702 C\n\nG4 ; wait\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\n; Lift print head a bit\n{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+30, max_print_height)}{endif} ; Move print head up\nG1 X0 Y200 F3000 ; home X axis\nM900 K0 ; reset LA\nM84 ; disable motors\n [printer:Original Prusa i3 MK2.5S] inherits = Original Prusa i3 MK2.5 printer_model = MK2.5S -start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0 +start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.2 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0 [printer:Original Prusa i3 MK2.5S 0.25 nozzle] inherits = Original Prusa i3 MK2.5 0.25 nozzle printer_model = MK2.5S -start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0 +start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.2 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0 [printer:Original Prusa i3 MK2.5S 0.6 nozzle] inherits = Original Prusa i3 MK2.5 0.6 nozzle printer_model = MK2.5S -start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0 +start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.2 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0 [printer:Original Prusa i3 MK2.5S MMU2S Single] inherits = Original Prusa i3 MK2.5; *mm2s* @@ -5210,7 +5213,7 @@ machine_min_travel_rate = 0 default_print_profile = 0.15mm OPTIMAL @MK2.5 default_filament_profile = Prusament PLA printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_MK2.5\n -start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nTc\n; purge line\nG1 X55.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F2200.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\nG92 E0.0\n +start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.2 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nTc\n; purge line\nG1 X55.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F2200.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\nG92 E0.0\n end_gcode = {if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+10, max_print_height)}{endif} F720 ; Move print head up\nG1 X0 Y210 F7200\nG1 E2 F5000\nG1 E2 F5500\nG1 E2 F6000\nG1 E-15.0000 F5800\nG1 E-20.0000 F5500\nG1 E10.0000 F3000\nG1 E-10.0000 F3100\nG1 E10.0000 F3150\nG1 E-10.0000 F3250\nG1 E10.0000 F3300\n\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nM702 C\nG4 ; wait\nM104 S0 ; turn off temperature\nM900 K0 ; reset LA\nM84 ; disable motors [printer:Original Prusa i3 MK2.5S MMU2S Single 0.6 nozzle] @@ -5231,7 +5234,7 @@ nozzle_diameter = 0.25 printer_variant = 0.25 retract_lift = 0.15 default_print_profile = 0.10mm DETAIL 0.25 nozzle -start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nTc\n; purge line\nG1 X55.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F1400.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\nG92 E0.0\n +start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.2 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nTc\n; purge line\nG1 X55.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F1400.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\nG92 E0.0\n [printer:Original Prusa i3 MK2.5S MMU2S] inherits = Original Prusa i3 MK2.5; *mm2s* @@ -5264,7 +5267,7 @@ single_extruder_multi_material = 1 # to be defined explicitely. nozzle_diameter = 0.4,0.4,0.4,0.4,0.4 extruder_colour = #FF8000;#DB5182;#00FFFF;#FF4F4F;#9FFF9F -start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55.0 E29.0 F1073.0\nG1 X5.0 E29.0 F1800.0\nG1 X55.0 E8.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F2200.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\nG92 E0.0\n{endif}\nG92 E0.0\n +start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.2 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55.0 E29.0 F1073.0\nG1 X5.0 E29.0 F1800.0\nG1 X55.0 E8.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F2200.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\nG92 E0.0\n{endif}\nG92 E0.0\n end_gcode = {if has_wipe_tower}\nG1 E-15.0000 F3000\n{else}\nG1 X0 Y210 F7200\nG1 E2 F5000\nG1 E2 F5500\nG1 E2 F6000\nG1 E-15.0000 F5800\nG1 E-20.0000 F5500\nG1 E10.0000 F3000\nG1 E-10.0000 F3100\nG1 E10.0000 F3150\nG1 E-10.0000 F3250\nG1 E10.0000 F3300\n{endif}\n\n; Unload filament\nM702 C\n\nG4 ; wait\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\n; Lift print head a bit\n{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+30, max_print_height)}{endif} ; Move print head up\nG1 X0 Y200 F3000 ; home X axis\nM900 K0 ; reset LA\nM84 ; disable motors\n [printer:Original Prusa i3 MK2.5S MMU2S 0.6 nozzle] @@ -5311,7 +5314,7 @@ remaining_times = 1 printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_MK3\n retract_lift_below = 209 max_print_height = 210 -start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0\nM221 S{if layer_height<0.075}100{else}95{endif}\n\n; Don't change E values below. Excessive value can damage the printer.\n{if print_settings_id=~/.*(DETAIL @MK3|QUALITY @MK3).*/}M907 E430 ; set extruder motor current{endif}\n{if print_settings_id=~/.*(SPEED @MK3|DRAFT @MK3).*/}M907 E538 ; set extruder motor current{endif} +start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.2 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0\nM221 S{if layer_height<0.075}100{else}95{endif}\n\n; Don't change E values below. Excessive value can damage the printer.\n{if print_settings_id=~/.*(DETAIL @MK3|QUALITY @MK3).*/}M907 E430 ; set extruder motor current{endif}\n{if print_settings_id=~/.*(SPEED @MK3|DRAFT @MK3).*/}M907 E538 ; set extruder motor current{endif} printer_model = MK3 default_print_profile = 0.15mm QUALITY @MK3 @@ -5322,7 +5325,7 @@ max_layer_height = 0.15 min_layer_height = 0.05 printer_variant = 0.25 retract_lift = 0.15 -start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E8.0 F700.0 ; intro line\nG1 X100.0 E12.5 F700.0 ; intro line\nG92 E0.0\nM221 S{if layer_height<0.075}100{else}95{endif}\n\n; Don't change E value below. Excessive value can damage the printer.\n{if print_settings_id=~/.*@0.25 nozzle MK3.*/}M907 E430 ; set extruder motor current{endif} +start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.2 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E8.0 F700.0 ; intro line\nG1 X100.0 E12.5 F700.0 ; intro line\nG92 E0.0\nM221 S{if layer_height<0.075}100{else}95{endif}\n\n; Don't change E value below. Excessive value can damage the printer.\n{if print_settings_id=~/.*@0.25 nozzle MK3.*/}M907 E430 ; set extruder motor current{endif} default_print_profile = 0.10mm DETAIL @0.25 nozzle MK3 [printer:Original Prusa i3 MK3 0.6 nozzle] @@ -5337,19 +5340,19 @@ default_print_profile = 0.30mm QUALITY @0.6 nozzle MK3 inherits = Original Prusa i3 MK3 renamed_from = "Original Prusa i3 MK3S" printer_model = MK3S -start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0\nM221 S{if layer_height<0.075}100{else}95{endif}\n\n; Don't change E values below. Excessive value can damage the printer.\n{if print_settings_id=~/.*(DETAIL @MK3|QUALITY @MK3).*/}M907 E430 ; set extruder motor current{endif}\n{if print_settings_id=~/.*(SPEED @MK3|DRAFT @MK3).*/}M907 E538 ; set extruder motor current{endif} +start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.2 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0\nM221 S{if layer_height<0.075}100{else}95{endif}\n\n; Don't change E values below. Excessive value can damage the printer.\n{if print_settings_id=~/.*(DETAIL @MK3|QUALITY @MK3).*/}M907 E430 ; set extruder motor current{endif}\n{if print_settings_id=~/.*(SPEED @MK3|DRAFT @MK3).*/}M907 E538 ; set extruder motor current{endif} [printer:Original Prusa i3 MK3S & MK3S+ 0.25 nozzle] inherits = Original Prusa i3 MK3 0.25 nozzle renamed_from = "Original Prusa i3 MK3S 0.25 nozzle" printer_model = MK3S -start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E8.0 F700.0 ; intro line\nG1 X100.0 E12.5 F700.0 ; intro line\nG92 E0.0\nM221 S{if layer_height<0.075}100{else}95{endif}\n\n; Don't change E value below. Excessive value can damage the printer.\n{if print_settings_id=~/.*@0.25 nozzle MK3.*/}M907 E430 ; set extruder motor current{endif} +start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.2 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E8.0 F700.0 ; intro line\nG1 X100.0 E12.5 F700.0 ; intro line\nG92 E0.0\nM221 S{if layer_height<0.075}100{else}95{endif}\n\n; Don't change E value below. Excessive value can damage the printer.\n{if print_settings_id=~/.*@0.25 nozzle MK3.*/}M907 E430 ; set extruder motor current{endif} [printer:Original Prusa i3 MK3S & MK3S+ 0.6 nozzle] inherits = Original Prusa i3 MK3 0.6 nozzle renamed_from = "Original Prusa i3 MK3S 0.6 nozzle" printer_model = MK3S -start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0\nM221 S{if layer_height<0.075}100{else}95{endif} +start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.2 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0\nM221 S{if layer_height<0.075}100{else}95{endif} [printer:*mm2*] inherits = Original Prusa i3 MK3 @@ -5379,7 +5382,7 @@ default_filament_profile = Prusament PLA @MMU2 inherits = *mm2* single_extruder_multi_material = 0 default_filament_profile = Prusament PLA -start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nTc\n; purge line\nG1 X55.0 E8.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F2200.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0.0\n\n; Don't change E values below. Excessive value can damage the printer.\n{if print_settings_id=~/.*(DETAIL @MK3|QUALITY @MK3).*/}M907 E430 ; set extruder motor current{endif}\n{if print_settings_id=~/.*(SPEED @MK3|DRAFT @MK3).*/}M907 E538 ; set extruder motor current{endif} +start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.2 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nTc\n; purge line\nG1 X55.0 E8.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F2200.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0.0\n\n; Don't change E values below. Excessive value can damage the printer.\n{if print_settings_id=~/.*(DETAIL @MK3|QUALITY @MK3).*/}M907 E430 ; set extruder motor current{endif}\n{if print_settings_id=~/.*(SPEED @MK3|DRAFT @MK3).*/}M907 E538 ; set extruder motor current{endif} end_gcode = {if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+10, max_print_height)}{endif} F720 ; Move print head up\nG1 X0 Y210 F7200\nG1 E2 F5000\nG1 E2 F5500\nG1 E2 F6000\nG1 E-15.0000 F5800\nG1 E-20.0000 F5500\nG1 E10.0000 F3000\nG1 E-10.0000 F3100\nG1 E10.0000 F3150\nG1 E-10.0000 F3250\nG1 E10.0000 F3300\n\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nM702 C\nG4 ; wait\nM221 S100 ; reset flow\nM900 K0 ; reset LA\n{if print_settings_id=~/.*(DETAIL @MK3|QUALITY @MK3|@0.25 nozzle MK3).*/}M907 E538 ; reset extruder motor current{endif}\nM104 S0 ; turn off temperature\nM84 ; disable motors [printer:Original Prusa i3 MK3 MMU2 Single 0.6 nozzle] @@ -5389,7 +5392,7 @@ nozzle_diameter = 0.6 max_layer_height = 0.40 min_layer_height = 0.15 printer_variant = 0.6 -start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nTc\n; purge line\nG1 X55.0 E8.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F2200.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0.0 +start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.2 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nTc\n; purge line\nG1 X55.0 E8.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F2200.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0.0 default_print_profile = 0.30mm QUALITY @0.6 nozzle MK3 [printer:Original Prusa i3 MK3 MMU2 Single 0.25 nozzle] @@ -5400,7 +5403,7 @@ max_layer_height = 0.15 min_layer_height = 0.05 printer_variant = 0.25 retract_lift = 0.15 -start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nTc\n; purge line\nG1 X55.0 E8.0 F1000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F1400.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0.0\n\n; Don't change E value below. Excessive value can damage the printer.\n{if print_settings_id=~/.*@0.25 nozzle MK3.*/}M907 E430 ; set extruder motor current{endif} +start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.2 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nTc\n; purge line\nG1 X55.0 E8.0 F1000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F1400.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0.0\n\n; Don't change E value below. Excessive value can damage the printer.\n{if print_settings_id=~/.*@0.25 nozzle MK3.*/}M907 E430 ; set extruder motor current{endif} default_print_profile = 0.10mm DETAIL @0.25 nozzle MK3 [printer:Original Prusa i3 MK3 MMU2] @@ -5411,7 +5414,7 @@ inherits = *mm2* machine_max_acceleration_e = 8000,8000 nozzle_diameter = 0.4,0.4,0.4,0.4,0.4 extruder_colour = #FF8000;#DB5182;#00FFFF;#FF4F4F;#9FFF9F -start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55.0 E32.0 F1073.0\nG1 X5.0 E32.0 F1800.0\nG1 X55.0 E8.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F2200.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\nG92 E0.0\n{endif}\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0.0\n\n; Don't change E values below. Excessive value can damage the printer.\n{if print_settings_id=~/.*(DETAIL @MK3|QUALITY @MK3|SOLUBLE).*/}M907 E430 ; set extruder motor current{endif}\n{if print_settings_id=~/.*(SPEED @MK3|DRAFT @MK3).*/}M907 E538 ; set extruder motor current{endif} +start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.2 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55.0 E32.0 F1073.0\nG1 X5.0 E32.0 F1800.0\nG1 X55.0 E8.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F2200.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\nG92 E0.0\n{endif}\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0.0\n\n; Don't change E values below. Excessive value can damage the printer.\n{if print_settings_id=~/.*(DETAIL @MK3|QUALITY @MK3|SOLUBLE).*/}M907 E430 ; set extruder motor current{endif}\n{if print_settings_id=~/.*(SPEED @MK3|DRAFT @MK3).*/}M907 E538 ; set extruder motor current{endif} end_gcode = {if has_wipe_tower}\nG1 E-15.0000 F3000\n{else}\nG1 X0 Y210 F7200\nG1 E2 F5000\nG1 E2 F5500\nG1 E2 F6000\nG1 E-15.0000 F5800\nG1 E-20.0000 F5500\nG1 E10.0000 F3000\nG1 E-10.0000 F3100\nG1 E10.0000 F3150\nG1 E-10.0000 F3250\nG1 E10.0000 F3300\n{endif}\n\n; Unload filament\nM702 C\n\nG4 ; wait\nM221 S100 ; reset flow\nM900 K0 ; reset LA\n{if print_settings_id=~/.*(DETAIL @MK3|QUALITY @MK3|SOLUBLE|@0.25 nozzle MK3).*/}M907 E538 ; reset extruder motor current{endif}\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\n; Lift print head a bit\n{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+30, max_print_height)}{endif} ; Move print head up\nG1 X0 Y200 F3000 ; home X axis\nM84 ; disable motors\n [printer:Original Prusa i3 MK3S & MK3S+ MMU2S Single] @@ -5419,7 +5422,7 @@ inherits = *mm2s* renamed_from = "Original Prusa i3 MK3S MMU2S Single" single_extruder_multi_material = 0 default_filament_profile = Prusament PLA -start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nTc\n; purge line\nG1 X55.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F2200.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0.0\n\n; Don't change E values below. Excessive value can damage the printer.\n{if print_settings_id=~/.*(DETAIL @MK3|QUALITY @MK3).*/}M907 E430 ; set extruder motor current{endif}\n{if print_settings_id=~/.*(SPEED @MK3|DRAFT @MK3).*/}M907 E538 ; set extruder motor current{endif} +start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.2 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nTc\n; purge line\nG1 X55.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F2200.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0.0\n\n; Don't change E values below. Excessive value can damage the printer.\n{if print_settings_id=~/.*(DETAIL @MK3|QUALITY @MK3).*/}M907 E430 ; set extruder motor current{endif}\n{if print_settings_id=~/.*(SPEED @MK3|DRAFT @MK3).*/}M907 E538 ; set extruder motor current{endif} end_gcode = {if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+10, max_print_height)}{endif} F720 ; Move print head up\nG1 X0 Y210 F7200\nG1 E2 F5000\nG1 E2 F5500\nG1 E2 F6000\nG1 E-15.0000 F5800\nG1 E-20.0000 F5500\nG1 E10.0000 F3000\nG1 E-10.0000 F3100\nG1 E10.0000 F3150\nG1 E-10.0000 F3250\nG1 E10.0000 F3300\n\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nM702 C\nG4 ; wait\nM221 S100 ; reset flow\nM900 K0 ; reset LA\n{if print_settings_id=~/.*(DETAIL @MK3|QUALITY @MK3|@0.25 nozzle MK3).*/}M907 E538 ; reset extruder motor current{endif}\nM104 S0 ; turn off temperature\nM84 ; disable motors [printer:Original Prusa i3 MK3S & MK3S+ MMU2S Single 0.6 nozzle] @@ -5430,7 +5433,7 @@ nozzle_diameter = 0.6 max_layer_height = 0.40 min_layer_height = 0.15 printer_variant = 0.6 -start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nTc\n; purge line\nG1 X55.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F2200.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0.0 +start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.2 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nTc\n; purge line\nG1 X55.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F2200.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0.0 default_print_profile = 0.30mm QUALITY @0.6 nozzle MK3 [printer:Original Prusa i3 MK3S & MK3S+ MMU2S Single 0.25 nozzle] @@ -5442,7 +5445,7 @@ max_layer_height = 0.15 min_layer_height = 0.05 printer_variant = 0.25 retract_lift = 0.15 -start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nTc\n; purge line\nG1 X55.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F1400.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0.0\n\n; Don't change E value below. Excessive value can damage the printer.\n{if print_settings_id=~/.*@0.25 nozzle MK3.*/}M907 E430 ; set extruder motor current{endif} +start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.2 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nTc\n; purge line\nG1 X55.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F1400.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0.0\n\n; Don't change E value below. Excessive value can damage the printer.\n{if print_settings_id=~/.*@0.25 nozzle MK3.*/}M907 E430 ; set extruder motor current{endif} default_print_profile = 0.10mm DETAIL @0.25 nozzle MK3 [printer:Original Prusa i3 MK3S & MK3S+ MMU2S] @@ -5451,7 +5454,7 @@ renamed_from = "Original Prusa i3 MK3S MMU2S" machine_max_acceleration_e = 8000,8000 nozzle_diameter = 0.4,0.4,0.4,0.4,0.4 extruder_colour = #FF8000;#DB5182;#00FFFF;#FF4F4F;#9FFF9F -start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55.0 E29.0 F1073.0\nG1 X5.0 E29.0 F1800.0\nG1 X55.0 E8.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F2200.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\nG92 E0.0\n{endif}\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0.0\n\n; Don't change E values below. Excessive value can damage the printer.\n{if print_settings_id=~/.*(DETAIL @MK3|QUALITY @MK3|SOLUBLE).*/}M907 E430 ; set extruder motor current{endif}\n{if print_settings_id=~/.*(SPEED @MK3|DRAFT @MK3).*/}M907 E538 ; set extruder motor current{endif} +start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.2 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55.0 E29.0 F1073.0\nG1 X5.0 E29.0 F1800.0\nG1 X55.0 E8.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F2200.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\nG92 E0.0\n{endif}\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0.0\n\n; Don't change E values below. Excessive value can damage the printer.\n{if print_settings_id=~/.*(DETAIL @MK3|QUALITY @MK3|SOLUBLE).*/}M907 E430 ; set extruder motor current{endif}\n{if print_settings_id=~/.*(SPEED @MK3|DRAFT @MK3).*/}M907 E538 ; set extruder motor current{endif} end_gcode = {if has_wipe_tower}\nG1 E-15.0000 F3000\n{else}\nG1 X0 Y210 F7200\nG1 E2 F5000\nG1 E2 F5500\nG1 E2 F6000\nG1 E-15.0000 F5800\nG1 E-20.0000 F5500\nG1 E10.0000 F3000\nG1 E-10.0000 F3100\nG1 E10.0000 F3150\nG1 E-10.0000 F3250\nG1 E10.0000 F3300\n{endif}\n\n; Unload filament\nM702 C\n\nG4 ; wait\nM221 S100 ; reset flow\nM900 K0 ; reset LA\n{if print_settings_id=~/.*(DETAIL @MK3|QUALITY @MK3|SOLUBLE|@0.25 nozzle MK3).*/}M907 E538 ; reset extruder motor current{endif}\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\n; Lift print head a bit\n{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+30, max_print_height)}{endif} ; Move print head up\nG1 X0 Y200 F3000 ; home X axis\nM84 ; disable motors\n ## 0.6mm nozzle MMU2/S printer profiles @@ -5463,7 +5466,7 @@ nozzle_diameter = 0.6,0.6,0.6,0.6,0.6 max_layer_height = 0.40 min_layer_height = 0.15 printer_variant = 0.6 -start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55.0 E29.0 F1073.0\nG1 X5.0 E29.0 F1800.0\nG1 X55.0 E8.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F2200.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\nG92 E0.0\n{endif}\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0.0 +start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.2 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55.0 E29.0 F1073.0\nG1 X5.0 E29.0 F1800.0\nG1 X55.0 E8.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F2200.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\nG92 E0.0\n{endif}\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0.0 default_print_profile = 0.30mm QUALITY @0.6 nozzle MK3 [printer:Original Prusa i3 MK3 MMU2 0.6 nozzle] @@ -5472,7 +5475,7 @@ nozzle_diameter = 0.6,0.6,0.6,0.6,0.6 max_layer_height = 0.40 min_layer_height = 0.15 printer_variant = 0.6 -start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55.0 E32.0 F1073.0\nG1 X5.0 E32.0 F1800.0\nG1 X55.0 E8.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F2200.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\nG92 E0.0\n{endif}\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0.0 +start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.2 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55.0 E32.0 F1073.0\nG1 X5.0 E32.0 F1800.0\nG1 X55.0 E8.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F2200.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\nG92 E0.0\n{endif}\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0.0 default_print_profile = 0.30mm QUALITY @0.6 nozzle MK3 ## MINI From 8b980d4b77bdc9429175ef3a2036981c1adea744 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Wed, 16 Dec 2020 17:28:42 +0100 Subject: [PATCH 061/135] Localization: Updated PrusaSlicer.pot and CZ dictionary + Fixed some phrases. --- resources/localization/PrusaSlicer.pot | 4767 ++++++++++--------- resources/localization/cs/PrusaSlicer.mo | Bin 293103 -> 302773 bytes resources/localization/cs/PrusaSlicer_cs.po | 219 +- src/slic3r/GUI/Field.cpp | 2 +- src/slic3r/GUI/GLCanvas3D.cpp | 2 +- src/slic3r/Utils/PresetUpdater.cpp | 3 +- 6 files changed, 2691 insertions(+), 2302 deletions(-) diff --git a/resources/localization/PrusaSlicer.pot b/resources/localization/PrusaSlicer.pot index 1efdfe5cb6..54b151153f 100644 --- a/resources/localization/PrusaSlicer.pot +++ b/resources/localization/PrusaSlicer.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-12-04 12:20+0100\n" +"POT-Creation-Date: 2020-12-16 16:54+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,53 +18,57 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" -#: src/slic3r/GUI/AboutDialog.cpp:42 src/slic3r/GUI/AboutDialog.cpp:297 +#: src/slic3r/GUI/AboutDialog.cpp:45 src/slic3r/GUI/AboutDialog.cpp:299 msgid "Portions copyright" msgstr "" -#: src/slic3r/GUI/AboutDialog.cpp:132 src/slic3r/GUI/AboutDialog.cpp:261 +#: src/slic3r/GUI/AboutDialog.cpp:135 src/slic3r/GUI/AboutDialog.cpp:263 msgid "Copyright" msgstr "" #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:134 +#: src/slic3r/GUI/AboutDialog.cpp:137 msgid "" "License agreements of all following programs (libraries) are part of " "application license agreement" msgstr "" -#: src/slic3r/GUI/AboutDialog.cpp:204 +#: src/slic3r/GUI/AboutDialog.cpp:206 #, possible-c-format msgid "About %s" msgstr "" -#: src/slic3r/GUI/AboutDialog.cpp:236 src/slic3r/GUI/GUI_App.cpp:231 -#: src/slic3r/GUI/MainFrame.cpp:152 +#: src/slic3r/GUI/AboutDialog.cpp:238 src/slic3r/GUI/AboutDialog.cpp:361 +#: src/slic3r/GUI/GUI_App.cpp:234 src/slic3r/GUI/MainFrame.cpp:151 msgid "Version" msgstr "" #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:263 src/slic3r/GUI/GUI_App.cpp:236 +#: src/slic3r/GUI/AboutDialog.cpp:265 src/slic3r/GUI/GUI_App.cpp:239 msgid "is licensed under the" msgstr "" -#: src/slic3r/GUI/AboutDialog.cpp:264 src/slic3r/GUI/GUI_App.cpp:236 +#: src/slic3r/GUI/AboutDialog.cpp:266 src/slic3r/GUI/GUI_App.cpp:239 msgid "GNU Affero General Public License, version 3" msgstr "" -#: src/slic3r/GUI/AboutDialog.cpp:265 +#: src/slic3r/GUI/AboutDialog.cpp:267 msgid "" "PrusaSlicer is based on Slic3r by Alessandro Ranellucci and the RepRap " "community." msgstr "" -#: src/slic3r/GUI/AboutDialog.cpp:266 +#: src/slic3r/GUI/AboutDialog.cpp:268 msgid "" "Contributions by Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, " "Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik and " "numerous others." msgstr "" +#: src/slic3r/GUI/AboutDialog.cpp:304 +msgid "Copy Version Info" +msgstr "" + #: src/slic3r/GUI/BackgroundSlicingProcess.cpp:78 #, possible-c-format msgid "" @@ -138,7 +142,7 @@ msgstr "" #: src/slic3r/GUI/BedShapeDialog.cpp:93 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:240 src/slic3r/GUI/Plater.cpp:162 -#: src/slic3r/GUI/Tab.cpp:2532 +#: src/slic3r/GUI/Tab.cpp:2536 msgid "Size" msgstr "" @@ -146,7 +150,7 @@ msgstr "" msgid "Origin" msgstr "" -#: src/slic3r/GUI/BedShapeDialog.cpp:95 src/libslic3r/PrintConfig.cpp:756 +#: src/slic3r/GUI/BedShapeDialog.cpp:95 src/libslic3r/PrintConfig.cpp:771 msgid "Diameter" msgstr "" @@ -163,44 +167,45 @@ msgstr "" #: src/slic3r/GUI/BedShapeDialog.cpp:129 src/slic3r/GUI/ConfigWizard.cpp:237 #: src/slic3r/GUI/ConfigWizard.cpp:1359 src/slic3r/GUI/ConfigWizard.cpp:1373 #: src/slic3r/GUI/ExtruderSequenceDialog.cpp:88 -#: src/slic3r/GUI/GCodeViewer.cpp:2324 src/slic3r/GUI/GCodeViewer.cpp:2330 -#: src/slic3r/GUI/GCodeViewer.cpp:2338 src/slic3r/GUI/GUI_ObjectLayers.cpp:145 +#: src/slic3r/GUI/GCodeViewer.cpp:2331 src/slic3r/GUI/GCodeViewer.cpp:2337 +#: src/slic3r/GUI/GCodeViewer.cpp:2345 src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:179 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:145 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:341 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:418 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:486 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:487 #: src/slic3r/GUI/ObjectDataViewModel.cpp:96 -#: src/slic3r/GUI/WipeTowerDialog.cpp:85 src/libslic3r/PrintConfig.cpp:75 -#: src/libslic3r/PrintConfig.cpp:82 src/libslic3r/PrintConfig.cpp:93 -#: src/libslic3r/PrintConfig.cpp:133 src/libslic3r/PrintConfig.cpp:231 -#: src/libslic3r/PrintConfig.cpp:289 src/libslic3r/PrintConfig.cpp:364 -#: src/libslic3r/PrintConfig.cpp:372 src/libslic3r/PrintConfig.cpp:422 -#: src/libslic3r/PrintConfig.cpp:552 src/libslic3r/PrintConfig.cpp:563 -#: src/libslic3r/PrintConfig.cpp:581 src/libslic3r/PrintConfig.cpp:759 -#: src/libslic3r/PrintConfig.cpp:1232 src/libslic3r/PrintConfig.cpp:1413 -#: src/libslic3r/PrintConfig.cpp:1474 src/libslic3r/PrintConfig.cpp:1492 -#: src/libslic3r/PrintConfig.cpp:1510 src/libslic3r/PrintConfig.cpp:1568 -#: src/libslic3r/PrintConfig.cpp:1578 src/libslic3r/PrintConfig.cpp:1699 -#: src/libslic3r/PrintConfig.cpp:1707 src/libslic3r/PrintConfig.cpp:1748 -#: src/libslic3r/PrintConfig.cpp:1756 src/libslic3r/PrintConfig.cpp:1766 -#: src/libslic3r/PrintConfig.cpp:1774 src/libslic3r/PrintConfig.cpp:1782 -#: src/libslic3r/PrintConfig.cpp:1845 src/libslic3r/PrintConfig.cpp:2111 -#: src/libslic3r/PrintConfig.cpp:2182 src/libslic3r/PrintConfig.cpp:2216 -#: src/libslic3r/PrintConfig.cpp:2345 src/libslic3r/PrintConfig.cpp:2424 -#: src/libslic3r/PrintConfig.cpp:2431 src/libslic3r/PrintConfig.cpp:2438 -#: src/libslic3r/PrintConfig.cpp:2468 src/libslic3r/PrintConfig.cpp:2478 -#: src/libslic3r/PrintConfig.cpp:2488 src/libslic3r/PrintConfig.cpp:2648 -#: src/libslic3r/PrintConfig.cpp:2682 src/libslic3r/PrintConfig.cpp:2821 -#: src/libslic3r/PrintConfig.cpp:2830 src/libslic3r/PrintConfig.cpp:2839 -#: src/libslic3r/PrintConfig.cpp:2849 src/libslic3r/PrintConfig.cpp:2914 -#: src/libslic3r/PrintConfig.cpp:2924 src/libslic3r/PrintConfig.cpp:2936 -#: src/libslic3r/PrintConfig.cpp:2956 src/libslic3r/PrintConfig.cpp:2966 -#: src/libslic3r/PrintConfig.cpp:2976 src/libslic3r/PrintConfig.cpp:2994 -#: src/libslic3r/PrintConfig.cpp:3009 src/libslic3r/PrintConfig.cpp:3023 -#: src/libslic3r/PrintConfig.cpp:3034 src/libslic3r/PrintConfig.cpp:3047 -#: src/libslic3r/PrintConfig.cpp:3092 src/libslic3r/PrintConfig.cpp:3102 -#: src/libslic3r/PrintConfig.cpp:3111 src/libslic3r/PrintConfig.cpp:3121 -#: src/libslic3r/PrintConfig.cpp:3137 src/libslic3r/PrintConfig.cpp:3161 +#: src/slic3r/GUI/WipeTowerDialog.cpp:85 src/libslic3r/PrintConfig.cpp:77 +#: src/libslic3r/PrintConfig.cpp:84 src/libslic3r/PrintConfig.cpp:95 +#: src/libslic3r/PrintConfig.cpp:135 src/libslic3r/PrintConfig.cpp:244 +#: src/libslic3r/PrintConfig.cpp:302 src/libslic3r/PrintConfig.cpp:377 +#: src/libslic3r/PrintConfig.cpp:385 src/libslic3r/PrintConfig.cpp:435 +#: src/libslic3r/PrintConfig.cpp:565 src/libslic3r/PrintConfig.cpp:576 +#: src/libslic3r/PrintConfig.cpp:594 src/libslic3r/PrintConfig.cpp:774 +#: src/libslic3r/PrintConfig.cpp:1258 src/libslic3r/PrintConfig.cpp:1439 +#: src/libslic3r/PrintConfig.cpp:1500 src/libslic3r/PrintConfig.cpp:1518 +#: src/libslic3r/PrintConfig.cpp:1536 src/libslic3r/PrintConfig.cpp:1594 +#: src/libslic3r/PrintConfig.cpp:1604 src/libslic3r/PrintConfig.cpp:1729 +#: src/libslic3r/PrintConfig.cpp:1737 src/libslic3r/PrintConfig.cpp:1778 +#: src/libslic3r/PrintConfig.cpp:1786 src/libslic3r/PrintConfig.cpp:1796 +#: src/libslic3r/PrintConfig.cpp:1804 src/libslic3r/PrintConfig.cpp:1812 +#: src/libslic3r/PrintConfig.cpp:1875 src/libslic3r/PrintConfig.cpp:2141 +#: src/libslic3r/PrintConfig.cpp:2212 src/libslic3r/PrintConfig.cpp:2246 +#: src/libslic3r/PrintConfig.cpp:2375 src/libslic3r/PrintConfig.cpp:2454 +#: src/libslic3r/PrintConfig.cpp:2461 src/libslic3r/PrintConfig.cpp:2468 +#: src/libslic3r/PrintConfig.cpp:2498 src/libslic3r/PrintConfig.cpp:2508 +#: src/libslic3r/PrintConfig.cpp:2518 src/libslic3r/PrintConfig.cpp:2678 +#: src/libslic3r/PrintConfig.cpp:2712 src/libslic3r/PrintConfig.cpp:2851 +#: src/libslic3r/PrintConfig.cpp:2860 src/libslic3r/PrintConfig.cpp:2869 +#: src/libslic3r/PrintConfig.cpp:2879 src/libslic3r/PrintConfig.cpp:2944 +#: src/libslic3r/PrintConfig.cpp:2954 src/libslic3r/PrintConfig.cpp:2966 +#: src/libslic3r/PrintConfig.cpp:2986 src/libslic3r/PrintConfig.cpp:2996 +#: src/libslic3r/PrintConfig.cpp:3006 src/libslic3r/PrintConfig.cpp:3024 +#: src/libslic3r/PrintConfig.cpp:3039 src/libslic3r/PrintConfig.cpp:3053 +#: src/libslic3r/PrintConfig.cpp:3064 src/libslic3r/PrintConfig.cpp:3077 +#: src/libslic3r/PrintConfig.cpp:3122 src/libslic3r/PrintConfig.cpp:3132 +#: src/libslic3r/PrintConfig.cpp:3141 src/libslic3r/PrintConfig.cpp:3151 +#: src/libslic3r/PrintConfig.cpp:3167 src/libslic3r/PrintConfig.cpp:3191 msgid "mm" msgstr "" @@ -218,7 +223,7 @@ msgstr "" msgid "Circular" msgstr "" -#: src/slic3r/GUI/BedShapeDialog.cpp:143 src/slic3r/GUI/GUI_Preview.cpp:241 +#: src/slic3r/GUI/BedShapeDialog.cpp:143 src/slic3r/GUI/GUI_Preview.cpp:243 #: src/libslic3r/ExtrusionEntity.cpp:323 src/libslic3r/ExtrusionEntity.cpp:358 msgid "Custom" msgstr "" @@ -228,7 +233,7 @@ msgid "Invalid" msgstr "" #: src/slic3r/GUI/BedShapeDialog.cpp:156 src/slic3r/GUI/BedShapeDialog.cpp:222 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2215 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2288 msgid "Shape" msgstr "" @@ -236,7 +241,7 @@ msgstr "" msgid "Load shape from STL..." msgstr "" -#: src/slic3r/GUI/BedShapeDialog.cpp:292 src/slic3r/GUI/MainFrame.cpp:1818 +#: src/slic3r/GUI/BedShapeDialog.cpp:292 src/slic3r/GUI/MainFrame.cpp:1826 msgid "Settings" msgstr "" @@ -249,7 +254,7 @@ msgid "Load..." msgstr "" #: src/slic3r/GUI/BedShapeDialog.cpp:333 src/slic3r/GUI/BedShapeDialog.cpp:413 -#: src/slic3r/GUI/Tab.cpp:3475 +#: src/slic3r/GUI/Tab.cpp:3484 msgid "Remove" msgstr "" @@ -337,31 +342,31 @@ msgid "" "preset" msgstr "" -#: src/slic3r/GUI/ConfigManipulation.cpp:47 +#: src/slic3r/GUI/ConfigManipulation.cpp:48 msgid "" "Zero layer height is not valid.\n" "\n" "The layer height will be reset to 0.01." msgstr "" -#: src/slic3r/GUI/ConfigManipulation.cpp:48 -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:29 src/slic3r/GUI/Tab.cpp:1390 -#: src/libslic3r/PrintConfig.cpp:71 +#: src/slic3r/GUI/ConfigManipulation.cpp:49 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:29 src/slic3r/GUI/Tab.cpp:1387 +#: src/libslic3r/PrintConfig.cpp:73 msgid "Layer height" msgstr "" -#: src/slic3r/GUI/ConfigManipulation.cpp:59 +#: src/slic3r/GUI/ConfigManipulation.cpp:60 msgid "" "Zero first layer height is not valid.\n" "\n" "The first layer height will be reset to 0.01." msgstr "" -#: src/slic3r/GUI/ConfigManipulation.cpp:60 src/libslic3r/PrintConfig.cpp:954 +#: src/slic3r/GUI/ConfigManipulation.cpp:61 src/libslic3r/PrintConfig.cpp:969 msgid "First layer height" msgstr "" -#: src/slic3r/GUI/ConfigManipulation.cpp:80 +#: src/slic3r/GUI/ConfigManipulation.cpp:81 #, possible-c-format msgid "" "The Spiral Vase mode requires:\n" @@ -373,15 +378,15 @@ msgid "" "- Detect thin walls disabled" msgstr "" -#: src/slic3r/GUI/ConfigManipulation.cpp:88 +#: src/slic3r/GUI/ConfigManipulation.cpp:89 msgid "Shall I adjust those settings in order to enable Spiral Vase?" msgstr "" -#: src/slic3r/GUI/ConfigManipulation.cpp:89 +#: src/slic3r/GUI/ConfigManipulation.cpp:90 msgid "Spiral Vase" msgstr "" -#: src/slic3r/GUI/ConfigManipulation.cpp:114 +#: src/slic3r/GUI/ConfigManipulation.cpp:115 msgid "" "The Wipe Tower currently supports the non-soluble supports only\n" "if they are printed with the current extruder without triggering a tool " @@ -390,74 +395,74 @@ msgid "" "to be set to 0)." msgstr "" -#: src/slic3r/GUI/ConfigManipulation.cpp:118 +#: src/slic3r/GUI/ConfigManipulation.cpp:119 msgid "Shall I adjust those settings in order to enable the Wipe Tower?" msgstr "" -#: src/slic3r/GUI/ConfigManipulation.cpp:119 -#: src/slic3r/GUI/ConfigManipulation.cpp:139 +#: src/slic3r/GUI/ConfigManipulation.cpp:120 +#: src/slic3r/GUI/ConfigManipulation.cpp:140 msgid "Wipe Tower" msgstr "" -#: src/slic3r/GUI/ConfigManipulation.cpp:135 +#: src/slic3r/GUI/ConfigManipulation.cpp:136 msgid "" "For the Wipe Tower to work with the soluble supports, the support layers\n" "need to be synchronized with the object layers." msgstr "" -#: src/slic3r/GUI/ConfigManipulation.cpp:138 +#: src/slic3r/GUI/ConfigManipulation.cpp:139 msgid "Shall I synchronize support layers in order to enable the Wipe Tower?" msgstr "" -#: src/slic3r/GUI/ConfigManipulation.cpp:158 +#: src/slic3r/GUI/ConfigManipulation.cpp:159 msgid "" "Supports work better, if the following feature is enabled:\n" "- Detect bridging perimeters" msgstr "" -#: src/slic3r/GUI/ConfigManipulation.cpp:161 +#: src/slic3r/GUI/ConfigManipulation.cpp:162 msgid "Shall I adjust those settings for supports?" msgstr "" -#: src/slic3r/GUI/ConfigManipulation.cpp:162 +#: src/slic3r/GUI/ConfigManipulation.cpp:163 msgid "Support Generator" msgstr "" -#: src/slic3r/GUI/ConfigManipulation.cpp:207 +#: src/slic3r/GUI/ConfigManipulation.cpp:198 msgid "The %1% infill pattern is not supposed to work at 100%% density." msgstr "" -#: src/slic3r/GUI/ConfigManipulation.cpp:209 +#: src/slic3r/GUI/ConfigManipulation.cpp:201 msgid "Shall I switch to rectilinear fill pattern?" msgstr "" -#: src/slic3r/GUI/ConfigManipulation.cpp:210 +#: src/slic3r/GUI/ConfigManipulation.cpp:202 #: src/slic3r/GUI/GUI_ObjectList.cpp:35 src/slic3r/GUI/GUI_ObjectList.cpp:93 -#: src/slic3r/GUI/GUI_ObjectList.cpp:652 src/slic3r/GUI/Plater.cpp:389 -#: src/slic3r/GUI/Tab.cpp:1434 src/slic3r/GUI/Tab.cpp:1436 -#: src/libslic3r/PrintConfig.cpp:246 src/libslic3r/PrintConfig.cpp:459 -#: src/libslic3r/PrintConfig.cpp:483 src/libslic3r/PrintConfig.cpp:833 -#: src/libslic3r/PrintConfig.cpp:847 src/libslic3r/PrintConfig.cpp:884 -#: src/libslic3r/PrintConfig.cpp:1050 src/libslic3r/PrintConfig.cpp:1060 -#: src/libslic3r/PrintConfig.cpp:1127 src/libslic3r/PrintConfig.cpp:1146 -#: src/libslic3r/PrintConfig.cpp:1165 src/libslic3r/PrintConfig.cpp:1898 -#: src/libslic3r/PrintConfig.cpp:1915 +#: src/slic3r/GUI/GUI_ObjectList.cpp:668 src/slic3r/GUI/Plater.cpp:389 +#: src/slic3r/GUI/Tab.cpp:1432 src/slic3r/GUI/Tab.cpp:1434 +#: src/libslic3r/PrintConfig.cpp:259 src/libslic3r/PrintConfig.cpp:472 +#: src/libslic3r/PrintConfig.cpp:496 src/libslic3r/PrintConfig.cpp:848 +#: src/libslic3r/PrintConfig.cpp:862 src/libslic3r/PrintConfig.cpp:899 +#: src/libslic3r/PrintConfig.cpp:1076 src/libslic3r/PrintConfig.cpp:1086 +#: src/libslic3r/PrintConfig.cpp:1153 src/libslic3r/PrintConfig.cpp:1172 +#: src/libslic3r/PrintConfig.cpp:1191 src/libslic3r/PrintConfig.cpp:1928 +#: src/libslic3r/PrintConfig.cpp:1945 msgid "Infill" msgstr "" -#: src/slic3r/GUI/ConfigManipulation.cpp:325 +#: src/slic3r/GUI/ConfigManipulation.cpp:320 msgid "Head penetration should not be greater than the head width." msgstr "" -#: src/slic3r/GUI/ConfigManipulation.cpp:327 +#: src/slic3r/GUI/ConfigManipulation.cpp:322 msgid "Invalid Head penetration" msgstr "" -#: src/slic3r/GUI/ConfigManipulation.cpp:338 +#: src/slic3r/GUI/ConfigManipulation.cpp:333 msgid "Pinhead diameter should be smaller than the pillar diameter." msgstr "" -#: src/slic3r/GUI/ConfigManipulation.cpp:340 +#: src/slic3r/GUI/ConfigManipulation.cpp:335 msgid "Invalid pinhead diameter" msgstr "" @@ -473,12 +478,12 @@ msgstr "" msgid "Before roll back" msgstr "" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:25 src/libslic3r/PrintConfig.cpp:141 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:25 src/libslic3r/PrintConfig.cpp:143 msgid "User" msgstr "" #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:28 -#: src/slic3r/GUI/GUI_Preview.cpp:227 src/libslic3r/ExtrusionEntity.cpp:309 +#: src/slic3r/GUI/GUI_Preview.cpp:229 src/libslic3r/ExtrusionEntity.cpp:309 msgid "Unknown" msgstr "" @@ -490,7 +495,7 @@ msgstr "" msgid "PrusaSlicer version" msgstr "" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:55 src/libslic3r/Preset.cpp:1257 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:55 src/libslic3r/Preset.cpp:1298 msgid "print" msgstr "" @@ -498,20 +503,20 @@ msgstr "" msgid "filaments" msgstr "" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:59 src/libslic3r/Preset.cpp:1259 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:59 src/libslic3r/Preset.cpp:1300 msgid "SLA print" msgstr "" #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:60 src/slic3r/GUI/Plater.cpp:696 -#: src/libslic3r/Preset.cpp:1260 +#: src/libslic3r/Preset.cpp:1301 msgid "SLA material" msgstr "" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:62 src/libslic3r/Preset.cpp:1261 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:62 src/libslic3r/Preset.cpp:1302 msgid "printer" msgstr "" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:66 src/slic3r/GUI/Tab.cpp:1307 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:66 src/slic3r/GUI/Tab.cpp:1304 msgid "vendor" msgstr "" @@ -565,12 +570,12 @@ msgid "Standard" msgstr "" #: src/slic3r/GUI/ConfigWizard.cpp:306 src/slic3r/GUI/ConfigWizard.cpp:596 -#: src/slic3r/GUI/Tab.cpp:3556 src/slic3r/GUI/UnsavedChangesDialog.cpp:927 +#: src/slic3r/GUI/Tab.cpp:3565 src/slic3r/GUI/UnsavedChangesDialog.cpp:933 msgid "All" msgstr "" #: src/slic3r/GUI/ConfigWizard.cpp:307 src/slic3r/GUI/ConfigWizard.cpp:597 -#: src/slic3r/GUI/DoubleSlider.cpp:1849 src/slic3r/GUI/Plater.cpp:361 +#: src/slic3r/GUI/DoubleSlider.cpp:1859 src/slic3r/GUI/Plater.cpp:361 #: src/slic3r/GUI/Plater.cpp:504 msgid "None" msgstr "" @@ -662,7 +667,7 @@ msgstr "" msgid "Updates" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1135 src/slic3r/GUI/Preferences.cpp:73 +#: src/slic3r/GUI/ConfigWizard.cpp:1135 src/slic3r/GUI/Preferences.cpp:94 msgid "Check for application updates" msgstr "" @@ -675,7 +680,7 @@ msgid "" "notification mechanisms, no automatic installation is done." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1145 src/slic3r/GUI/Preferences.cpp:108 +#: src/slic3r/GUI/ConfigWizard.cpp:1145 src/slic3r/GUI/Preferences.cpp:129 msgid "Update built-in Presets automatically" msgstr "" @@ -700,9 +705,9 @@ msgid "" "an update is applied." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1164 src/slic3r/GUI/GUI_ObjectList.cpp:1793 -#: src/slic3r/GUI/GUI_ObjectList.cpp:4439 src/slic3r/GUI/Plater.cpp:3101 -#: src/slic3r/GUI/Plater.cpp:3935 src/slic3r/GUI/Plater.cpp:3966 +#: src/slic3r/GUI/ConfigWizard.cpp:1164 src/slic3r/GUI/GUI_ObjectList.cpp:1825 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4567 src/slic3r/GUI/Plater.cpp:3112 +#: src/slic3r/GUI/Plater.cpp:3953 src/slic3r/GUI/Plater.cpp:3984 msgid "Reload from disk" msgstr "" @@ -723,11 +728,11 @@ msgstr "" msgid "Files association" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1183 src/slic3r/GUI/Preferences.cpp:91 +#: src/slic3r/GUI/ConfigWizard.cpp:1183 src/slic3r/GUI/Preferences.cpp:112 msgid "Associate .3mf files to PrusaSlicer" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1184 src/slic3r/GUI/Preferences.cpp:98 +#: src/slic3r/GUI/ConfigWizard.cpp:1184 src/slic3r/GUI/Preferences.cpp:119 msgid "Associate .stl files to PrusaSlicer" msgstr "" @@ -777,7 +782,7 @@ msgstr "" msgid "Firmware Type" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1280 src/slic3r/GUI/Tab.cpp:2173 +#: src/slic3r/GUI/ConfigWizard.cpp:1280 src/slic3r/GUI/Tab.cpp:2172 msgid "Firmware" msgstr "" @@ -844,8 +849,8 @@ msgid "Extrusion Temperature:" msgstr "" #: src/slic3r/GUI/ConfigWizard.cpp:1427 src/slic3r/GUI/ConfigWizard.cpp:1441 -#: src/libslic3r/PrintConfig.cpp:189 src/libslic3r/PrintConfig.cpp:935 -#: src/libslic3r/PrintConfig.cpp:979 src/libslic3r/PrintConfig.cpp:2264 +#: src/libslic3r/PrintConfig.cpp:202 src/libslic3r/PrintConfig.cpp:950 +#: src/libslic3r/PrintConfig.cpp:994 src/libslic3r/PrintConfig.cpp:2294 msgid "°C" msgstr "" @@ -865,11 +870,11 @@ msgstr "" msgid "Bed Temperature:" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1900 src/slic3r/GUI/ConfigWizard.cpp:2572 +#: src/slic3r/GUI/ConfigWizard.cpp:1900 src/slic3r/GUI/ConfigWizard.cpp:2573 msgid "Filaments" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1900 src/slic3r/GUI/ConfigWizard.cpp:2574 +#: src/slic3r/GUI/ConfigWizard.cpp:1900 src/slic3r/GUI/ConfigWizard.cpp:2575 msgid "SLA Materials" msgstr "" @@ -881,104 +886,104 @@ msgstr "" msgid "SLA Technology Printers" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:2265 src/slic3r/GUI/DoubleSlider.cpp:2232 -#: src/slic3r/GUI/DoubleSlider.cpp:2252 src/slic3r/GUI/GUI.cpp:244 +#: src/slic3r/GUI/ConfigWizard.cpp:2265 src/slic3r/GUI/DoubleSlider.cpp:2245 +#: src/slic3r/GUI/DoubleSlider.cpp:2265 src/slic3r/GUI/GUI.cpp:244 msgid "Notice" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:2285 +#: src/slic3r/GUI/ConfigWizard.cpp:2286 msgid "The following FFF printer models have no filament selected:" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:2289 +#: src/slic3r/GUI/ConfigWizard.cpp:2290 msgid "Do you want to select default filaments for these FFF printer models?" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:2303 +#: src/slic3r/GUI/ConfigWizard.cpp:2304 msgid "The following SLA printer models have no materials selected:" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:2307 +#: src/slic3r/GUI/ConfigWizard.cpp:2308 msgid "Do you want to select default SLA materials for these printer models?" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:2535 +#: src/slic3r/GUI/ConfigWizard.cpp:2536 msgid "Select all standard printers" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:2538 +#: src/slic3r/GUI/ConfigWizard.cpp:2539 msgid "< &Back" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:2539 +#: src/slic3r/GUI/ConfigWizard.cpp:2540 msgid "&Next >" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:2540 +#: src/slic3r/GUI/ConfigWizard.cpp:2541 msgid "&Finish" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:2541 src/slic3r/GUI/FirmwareDialog.cpp:151 +#: src/slic3r/GUI/ConfigWizard.cpp:2542 src/slic3r/GUI/FirmwareDialog.cpp:151 #: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:248 #: src/slic3r/GUI/ProgressStatusBar.cpp:26 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:650 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:656 msgid "Cancel" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:2554 +#: src/slic3r/GUI/ConfigWizard.cpp:2555 msgid "Prusa FFF Technology Printers" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:2557 +#: src/slic3r/GUI/ConfigWizard.cpp:2558 msgid "Prusa MSLA Technology Printers" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:2572 +#: src/slic3r/GUI/ConfigWizard.cpp:2573 msgid "Filament Profiles Selection" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:2572 src/slic3r/GUI/ConfigWizard.cpp:2574 -#: src/slic3r/GUI/GUI_ObjectList.cpp:4016 +#: src/slic3r/GUI/ConfigWizard.cpp:2573 src/slic3r/GUI/ConfigWizard.cpp:2575 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4144 msgid "Type:" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:2574 +#: src/slic3r/GUI/ConfigWizard.cpp:2575 msgid "SLA Material Profiles Selection" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:2677 +#: src/slic3r/GUI/ConfigWizard.cpp:2678 msgid "Configuration Assistant" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:2678 +#: src/slic3r/GUI/ConfigWizard.cpp:2679 msgid "Configuration &Assistant" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:2680 +#: src/slic3r/GUI/ConfigWizard.cpp:2681 msgid "Configuration Wizard" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:2681 +#: src/slic3r/GUI/ConfigWizard.cpp:2682 msgid "Configuration &Wizard" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:96 +#: src/slic3r/GUI/DoubleSlider.cpp:97 msgid "Place bearings in slots and resume printing" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1211 +#: src/slic3r/GUI/DoubleSlider.cpp:1224 msgid "One layer mode" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1213 +#: src/slic3r/GUI/DoubleSlider.cpp:1226 msgid "Discard all custom changes" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1217 src/slic3r/GUI/DoubleSlider.cpp:1985 +#: src/slic3r/GUI/DoubleSlider.cpp:1230 src/slic3r/GUI/DoubleSlider.cpp:1995 msgid "Jump to move" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1220 +#: src/slic3r/GUI/DoubleSlider.cpp:1233 #, possible-c-format msgid "" "Jump to height %s\n" @@ -986,48 +991,48 @@ msgid "" "or Set extruder sequence for the entire print" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1223 +#: src/slic3r/GUI/DoubleSlider.cpp:1236 #, possible-c-format msgid "" "Jump to height %s\n" "or Set ruler mode" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1228 +#: src/slic3r/GUI/DoubleSlider.cpp:1241 msgid "Edit current color - Right click the colored slider segment" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1238 +#: src/slic3r/GUI/DoubleSlider.cpp:1251 msgid "Print mode" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1252 +#: src/slic3r/GUI/DoubleSlider.cpp:1265 msgid "Add extruder change - Left click" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1254 +#: src/slic3r/GUI/DoubleSlider.cpp:1267 msgid "" "Add color change - Left click for predefined color or Shift + Left click for " "custom color selection" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1256 +#: src/slic3r/GUI/DoubleSlider.cpp:1269 msgid "Add color change - Left click" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1257 +#: src/slic3r/GUI/DoubleSlider.cpp:1270 msgid "or press \"+\" key" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1259 +#: src/slic3r/GUI/DoubleSlider.cpp:1272 msgid "Add another code - Ctrl + Left click" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1260 +#: src/slic3r/GUI/DoubleSlider.cpp:1273 msgid "Add another code - Right click" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1266 +#: src/slic3r/GUI/DoubleSlider.cpp:1279 msgid "" "The sequential print is on.\n" "It's impossible to apply any custom G-code for objects printing " @@ -1035,255 +1040,255 @@ msgid "" "This code won't be processed during G-code generation." msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1275 +#: src/slic3r/GUI/DoubleSlider.cpp:1288 msgid "Color change (\"%1%\")" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1276 +#: src/slic3r/GUI/DoubleSlider.cpp:1289 msgid "Color change (\"%1%\") for Extruder %2%" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1278 +#: src/slic3r/GUI/DoubleSlider.cpp:1291 msgid "Pause print (\"%1%\")" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1280 +#: src/slic3r/GUI/DoubleSlider.cpp:1293 msgid "Custom template (\"%1%\")" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1282 +#: src/slic3r/GUI/DoubleSlider.cpp:1295 msgid "Extruder (tool) is changed to Extruder \"%1%\"" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1289 +#: src/slic3r/GUI/DoubleSlider.cpp:1302 msgid "Note" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1291 +#: src/slic3r/GUI/DoubleSlider.cpp:1304 msgid "" "G-code associated to this tick mark is in a conflict with print mode.\n" "Editing it will cause changes of Slider data." msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1294 +#: src/slic3r/GUI/DoubleSlider.cpp:1307 msgid "" "There is a color change for extruder that won't be used till the end of " "print job.\n" "This code won't be processed during G-code generation." msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1297 +#: src/slic3r/GUI/DoubleSlider.cpp:1310 msgid "" "There is an extruder change set to the same extruder.\n" "This code won't be processed during G-code generation." msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1300 +#: src/slic3r/GUI/DoubleSlider.cpp:1313 msgid "" "There is a color change for extruder that has not been used before.\n" "Check your settings to avoid redundant color changes." msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1305 +#: src/slic3r/GUI/DoubleSlider.cpp:1318 msgid "Delete tick mark - Left click or press \"-\" key" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1307 +#: src/slic3r/GUI/DoubleSlider.cpp:1320 msgid "Edit tick mark - Ctrl + Left click" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1308 +#: src/slic3r/GUI/DoubleSlider.cpp:1321 msgid "Edit tick mark - Right click" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1408 src/slic3r/GUI/DoubleSlider.cpp:1442 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1832 +#: src/slic3r/GUI/DoubleSlider.cpp:1417 src/slic3r/GUI/DoubleSlider.cpp:1451 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1864 #, possible-c-format msgid "Extruder %d" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1409 src/slic3r/GUI/GUI_ObjectList.cpp:1833 +#: src/slic3r/GUI/DoubleSlider.cpp:1418 src/slic3r/GUI/GUI_ObjectList.cpp:1865 msgid "active" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1418 +#: src/slic3r/GUI/DoubleSlider.cpp:1427 msgid "Switch code to Change extruder" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1418 src/slic3r/GUI/GUI_ObjectList.cpp:1800 +#: src/slic3r/GUI/DoubleSlider.cpp:1427 src/slic3r/GUI/GUI_ObjectList.cpp:1832 msgid "Change extruder" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1419 +#: src/slic3r/GUI/DoubleSlider.cpp:1428 msgid "Change extruder (N/A)" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1421 +#: src/slic3r/GUI/DoubleSlider.cpp:1430 msgid "Use another extruder" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1443 +#: src/slic3r/GUI/DoubleSlider.cpp:1452 msgid "used" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1451 +#: src/slic3r/GUI/DoubleSlider.cpp:1460 msgid "Switch code to Color change (%1%) for:" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1452 +#: src/slic3r/GUI/DoubleSlider.cpp:1461 msgid "Add color change (%1%) for:" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1788 +#: src/slic3r/GUI/DoubleSlider.cpp:1797 msgid "Add color change" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1798 +#: src/slic3r/GUI/DoubleSlider.cpp:1808 msgid "Add pause print" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1802 +#: src/slic3r/GUI/DoubleSlider.cpp:1812 msgid "Add custom template" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1805 +#: src/slic3r/GUI/DoubleSlider.cpp:1815 msgid "Add custom G-code" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1823 +#: src/slic3r/GUI/DoubleSlider.cpp:1833 msgid "Edit color" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1824 +#: src/slic3r/GUI/DoubleSlider.cpp:1834 msgid "Edit pause print message" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1825 +#: src/slic3r/GUI/DoubleSlider.cpp:1835 msgid "Edit custom G-code" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1831 +#: src/slic3r/GUI/DoubleSlider.cpp:1841 msgid "Delete color change" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1832 +#: src/slic3r/GUI/DoubleSlider.cpp:1842 msgid "Delete tool change" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1833 +#: src/slic3r/GUI/DoubleSlider.cpp:1843 msgid "Delete pause print" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1834 +#: src/slic3r/GUI/DoubleSlider.cpp:1844 msgid "Delete custom G-code" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1844 src/slic3r/GUI/DoubleSlider.cpp:1985 +#: src/slic3r/GUI/DoubleSlider.cpp:1854 src/slic3r/GUI/DoubleSlider.cpp:1995 msgid "Jump to height" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1849 +#: src/slic3r/GUI/DoubleSlider.cpp:1859 msgid "Hide ruler" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1853 +#: src/slic3r/GUI/DoubleSlider.cpp:1863 msgid "Show object height" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1853 +#: src/slic3r/GUI/DoubleSlider.cpp:1863 msgid "Show object height on the ruler" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1857 +#: src/slic3r/GUI/DoubleSlider.cpp:1867 msgid "Show estimated print time" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1857 +#: src/slic3r/GUI/DoubleSlider.cpp:1867 msgid "Show estimated print time on the ruler" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1861 +#: src/slic3r/GUI/DoubleSlider.cpp:1871 msgid "Ruler mode" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1861 +#: src/slic3r/GUI/DoubleSlider.cpp:1871 msgid "Set ruler mode" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1866 +#: src/slic3r/GUI/DoubleSlider.cpp:1876 msgid "Set extruder sequence for the entire print" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1952 +#: src/slic3r/GUI/DoubleSlider.cpp:1962 msgid "Enter custom G-code used on current layer" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1953 +#: src/slic3r/GUI/DoubleSlider.cpp:1963 msgid "Custom G-code on current layer (%1% mm)." msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1968 +#: src/slic3r/GUI/DoubleSlider.cpp:1978 msgid "Enter short message shown on Printer display when a print is paused" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1969 +#: src/slic3r/GUI/DoubleSlider.cpp:1979 msgid "Message for pause print on current layer (%1% mm)." msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1984 +#: src/slic3r/GUI/DoubleSlider.cpp:1994 msgid "Enter the move you want to jump to" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1984 +#: src/slic3r/GUI/DoubleSlider.cpp:1994 msgid "Enter the height you want to jump to" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:2226 +#: src/slic3r/GUI/DoubleSlider.cpp:2239 msgid "The last color change data was saved for a single extruder printing." msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:2227 src/slic3r/GUI/DoubleSlider.cpp:2242 +#: src/slic3r/GUI/DoubleSlider.cpp:2240 src/slic3r/GUI/DoubleSlider.cpp:2255 msgid "The last color change data was saved for a multi extruder printing." msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:2229 +#: src/slic3r/GUI/DoubleSlider.cpp:2242 msgid "Your current changes will delete all saved color changes." msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:2230 src/slic3r/GUI/DoubleSlider.cpp:2250 +#: src/slic3r/GUI/DoubleSlider.cpp:2243 src/slic3r/GUI/DoubleSlider.cpp:2263 msgid "Are you sure you want to continue?" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:2243 +#: src/slic3r/GUI/DoubleSlider.cpp:2256 msgid "" "Select YES if you want to delete all saved tool changes, \n" "NO if you want all tool changes switch to color changes, \n" "or CANCEL to leave it unchanged." msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:2246 +#: src/slic3r/GUI/DoubleSlider.cpp:2259 msgid "Do you want to delete all saved tool changes?" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:2248 +#: src/slic3r/GUI/DoubleSlider.cpp:2261 msgid "" "The last color change data was saved for a multi extruder printing with tool " "changes for whole print." msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:2249 +#: src/slic3r/GUI/DoubleSlider.cpp:2262 msgid "Your current changes will delete all saved extruder (tool) changes." msgstr "" -#: src/slic3r/GUI/ExtraRenderers.cpp:297 src/slic3r/GUI/GUI_ObjectList.cpp:496 -#: src/slic3r/GUI/GUI_ObjectList.cpp:508 src/slic3r/GUI/GUI_ObjectList.cpp:1015 -#: src/slic3r/GUI/GUI_ObjectList.cpp:4454 -#: src/slic3r/GUI/GUI_ObjectList.cpp:4464 -#: src/slic3r/GUI/GUI_ObjectList.cpp:4499 +#: src/slic3r/GUI/ExtraRenderers.cpp:297 src/slic3r/GUI/GUI_ObjectList.cpp:512 +#: src/slic3r/GUI/GUI_ObjectList.cpp:524 src/slic3r/GUI/GUI_ObjectList.cpp:1033 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4582 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4592 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4627 #: src/slic3r/GUI/ObjectDataViewModel.cpp:209 #: src/slic3r/GUI/ObjectDataViewModel.cpp:266 #: src/slic3r/GUI/ObjectDataViewModel.cpp:291 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:499 src/libslic3r/PrintConfig.cpp:539 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:499 src/libslic3r/PrintConfig.cpp:552 msgid "default" msgstr "" @@ -1296,10 +1301,10 @@ msgid "Set extruder change for every" msgstr "" #: src/slic3r/GUI/ExtruderSequenceDialog.cpp:53 -#: src/libslic3r/PrintConfig.cpp:405 src/libslic3r/PrintConfig.cpp:1063 -#: src/libslic3r/PrintConfig.cpp:1688 src/libslic3r/PrintConfig.cpp:1853 -#: src/libslic3r/PrintConfig.cpp:1920 src/libslic3r/PrintConfig.cpp:2127 -#: src/libslic3r/PrintConfig.cpp:2173 +#: src/libslic3r/PrintConfig.cpp:418 src/libslic3r/PrintConfig.cpp:1089 +#: src/libslic3r/PrintConfig.cpp:1718 src/libslic3r/PrintConfig.cpp:1883 +#: src/libslic3r/PrintConfig.cpp:1950 src/libslic3r/PrintConfig.cpp:2157 +#: src/libslic3r/PrintConfig.cpp:2203 msgid "layers" msgstr "" @@ -1315,34 +1320,46 @@ msgstr "" msgid "Add extruder to sequence" msgstr "" -#: src/slic3r/GUI/Field.cpp:184 +#: src/slic3r/GUI/Field.cpp:197 msgid "default value" msgstr "" -#: src/slic3r/GUI/Field.cpp:187 +#: src/slic3r/GUI/Field.cpp:200 msgid "parameter name" msgstr "" -#: src/slic3r/GUI/Field.cpp:198 src/slic3r/GUI/OptionsGroup.cpp:779 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:880 +#: src/slic3r/GUI/Field.cpp:211 src/slic3r/GUI/OptionsGroup.cpp:781 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:886 msgid "N/A" msgstr "" -#: src/slic3r/GUI/Field.cpp:220 +#: src/slic3r/GUI/Field.cpp:233 #, possible-c-format msgid "%s doesn't support percentage" msgstr "" -#: src/slic3r/GUI/Field.cpp:240 src/slic3r/GUI/Field.cpp:276 -#: src/slic3r/GUI/Field.cpp:1430 src/slic3r/GUI/GUI_ObjectLayers.cpp:413 +#: src/slic3r/GUI/Field.cpp:253 src/slic3r/GUI/Field.cpp:303 +#: src/slic3r/GUI/Field.cpp:1510 src/slic3r/GUI/GUI_ObjectLayers.cpp:413 msgid "Invalid numeric input." msgstr "" -#: src/slic3r/GUI/Field.cpp:249 src/slic3r/GUI/Field.cpp:1442 +#: src/slic3r/GUI/Field.cpp:269 +#, possible-c-format +msgid "" +"Input value is out of range\n" +"Are you sure that %s is a correct value and that you want to continue?" +msgstr "" + +#: src/slic3r/GUI/Field.cpp:271 src/slic3r/GUI/Field.cpp:322 +msgid "Parameter validation" +msgstr "" + +#: src/slic3r/GUI/Field.cpp:277 src/slic3r/GUI/Field.cpp:369 +#: src/slic3r/GUI/Field.cpp:1522 msgid "Input value is out of range" msgstr "" -#: src/slic3r/GUI/Field.cpp:292 +#: src/slic3r/GUI/Field.cpp:319 #, possible-c-format msgid "" "Do you mean %s%% instead of %s %s?\n" @@ -1350,8 +1367,10 @@ msgid "" "or NO if you are sure that %s %s is a correct value." msgstr "" -#: src/slic3r/GUI/Field.cpp:295 -msgid "Parameter validation" +#: src/slic3r/GUI/Field.cpp:377 +msgid "" +"Invalid input format. Expected vector of dimensions in the following format: " +"\"%1%\"" msgstr "" #: src/slic3r/GUI/FirmwareDialog.cpp:150 @@ -1461,8 +1480,8 @@ msgid "Advanced: Output log" msgstr "" #: src/slic3r/GUI/FirmwareDialog.cpp:852 -#: src/slic3r/GUI/Mouse3DController.cpp:552 -#: src/slic3r/GUI/PrintHostDialogs.cpp:187 +#: src/slic3r/GUI/Mouse3DController.cpp:551 +#: src/slic3r/GUI/PrintHostDialogs.cpp:189 msgid "Close" msgstr "" @@ -1480,520 +1499,530 @@ msgstr "" msgid "Cancelling..." msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:220 +#: src/slic3r/GUI/GCodeViewer.cpp:239 msgid "Tool position" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:984 +#: src/slic3r/GUI/GCodeViewer.cpp:1010 msgid "Generating toolpaths" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:1375 +#: src/slic3r/GUI/GCodeViewer.cpp:1399 msgid "Generating vertex buffer" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:1468 +#: src/slic3r/GUI/GCodeViewer.cpp:1490 msgid "Generating index buffers" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2212 +#: src/slic3r/GUI/GCodeViewer.cpp:2219 msgid "Click to hide" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2212 +#: src/slic3r/GUI/GCodeViewer.cpp:2219 msgid "Click to show" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2324 +#: src/slic3r/GUI/GCodeViewer.cpp:2331 msgid "up to" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2330 +#: src/slic3r/GUI/GCodeViewer.cpp:2337 msgid "above" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2338 +#: src/slic3r/GUI/GCodeViewer.cpp:2345 msgid "from" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2338 +#: src/slic3r/GUI/GCodeViewer.cpp:2345 msgid "to" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2366 src/slic3r/GUI/GCodeViewer.cpp:2374 -#: src/slic3r/GUI/GUI_Preview.cpp:212 src/slic3r/GUI/GUI_Preview.cpp:517 +#: src/slic3r/GUI/GCodeViewer.cpp:2373 src/slic3r/GUI/GCodeViewer.cpp:2381 +#: src/slic3r/GUI/GUI_Preview.cpp:214 src/slic3r/GUI/GUI_Preview.cpp:533 +#: src/slic3r/GUI/GUI_Preview.cpp:942 msgid "Feature type" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2366 src/slic3r/GUI/GCodeViewer.cpp:2374 +#: src/slic3r/GUI/GCodeViewer.cpp:2373 src/slic3r/GUI/GCodeViewer.cpp:2381 #: src/slic3r/GUI/RammingChart.cpp:76 msgid "Time" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2374 +#: src/slic3r/GUI/GCodeViewer.cpp:2381 msgid "Percentage" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2377 +#: src/slic3r/GUI/GCodeViewer.cpp:2384 msgid "Height (mm)" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2378 +#: src/slic3r/GUI/GCodeViewer.cpp:2385 msgid "Width (mm)" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2379 +#: src/slic3r/GUI/GCodeViewer.cpp:2386 msgid "Speed (mm/s)" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2380 +#: src/slic3r/GUI/GCodeViewer.cpp:2387 msgid "Fan Speed (%)" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2381 +#: src/slic3r/GUI/GCodeViewer.cpp:2388 msgid "Volumetric flow rate (mm³/s)" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2382 src/slic3r/GUI/GUI_Preview.cpp:218 -#: src/slic3r/GUI/GUI_Preview.cpp:325 src/slic3r/GUI/GUI_Preview.cpp:468 -#: src/slic3r/GUI/GUI_Preview.cpp:516 src/slic3r/GUI/GUI_Preview.cpp:855 +#: src/slic3r/GUI/GCodeViewer.cpp:2389 src/slic3r/GUI/GUI_Preview.cpp:220 +#: src/slic3r/GUI/GUI_Preview.cpp:326 src/slic3r/GUI/GUI_Preview.cpp:471 +#: src/slic3r/GUI/GUI_Preview.cpp:532 src/slic3r/GUI/GUI_Preview.cpp:878 +#: src/slic3r/GUI/GUI_Preview.cpp:942 msgid "Tool" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2383 src/slic3r/GUI/GUI_Preview.cpp:219 -#: src/slic3r/GUI/GUI_Preview.cpp:514 +#: src/slic3r/GUI/GCodeViewer.cpp:2390 src/slic3r/GUI/GUI_Preview.cpp:221 +#: src/slic3r/GUI/GUI_Preview.cpp:530 src/slic3r/GUI/GUI_Preview.cpp:941 msgid "Color Print" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2419 src/slic3r/GUI/GCodeViewer.cpp:2454 -#: src/slic3r/GUI/GCodeViewer.cpp:2459 src/slic3r/GUI/GUI_ObjectList.cpp:296 -#: src/slic3r/GUI/wxExtensions.cpp:519 src/libslic3r/PrintConfig.cpp:534 +#: src/slic3r/GUI/GCodeViewer.cpp:2426 src/slic3r/GUI/GCodeViewer.cpp:2461 +#: src/slic3r/GUI/GCodeViewer.cpp:2466 src/slic3r/GUI/GUI_ObjectList.cpp:312 +#: src/slic3r/GUI/wxExtensions.cpp:519 src/libslic3r/PrintConfig.cpp:547 msgid "Extruder" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2430 +#: src/slic3r/GUI/GCodeViewer.cpp:2437 msgid "Default color" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2454 +#: src/slic3r/GUI/GCodeViewer.cpp:2461 msgid "default color" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2549 src/slic3r/GUI/GCodeViewer.cpp:2595 +#: src/slic3r/GUI/GCodeViewer.cpp:2556 src/slic3r/GUI/GCodeViewer.cpp:2602 msgid "Color change" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2568 src/slic3r/GUI/GCodeViewer.cpp:2593 +#: src/slic3r/GUI/GCodeViewer.cpp:2575 src/slic3r/GUI/GCodeViewer.cpp:2600 msgid "Print" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2594 src/slic3r/GUI/GCodeViewer.cpp:2611 +#: src/slic3r/GUI/GCodeViewer.cpp:2601 src/slic3r/GUI/GCodeViewer.cpp:2618 msgid "Pause" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2599 src/slic3r/GUI/GCodeViewer.cpp:2602 +#: src/slic3r/GUI/GCodeViewer.cpp:2606 src/slic3r/GUI/GCodeViewer.cpp:2609 msgid "Event" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2599 src/slic3r/GUI/GCodeViewer.cpp:2602 +#: src/slic3r/GUI/GCodeViewer.cpp:2606 src/slic3r/GUI/GCodeViewer.cpp:2609 msgid "Remaining time" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2602 +#: src/slic3r/GUI/GCodeViewer.cpp:2609 msgid "Duration" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2637 src/slic3r/GUI/GUI_Preview.cpp:981 -#: src/libslic3r/PrintConfig.cpp:2350 +#: src/slic3r/GUI/GCodeViewer.cpp:2644 src/slic3r/GUI/GUI_Preview.cpp:1023 +#: src/libslic3r/PrintConfig.cpp:2380 msgid "Travel" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2640 +#: src/slic3r/GUI/GCodeViewer.cpp:2647 msgid "Movement" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2641 +#: src/slic3r/GUI/GCodeViewer.cpp:2648 msgid "Extrusion" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2642 src/slic3r/GUI/Tab.cpp:1696 -#: src/slic3r/GUI/Tab.cpp:2578 +#: src/slic3r/GUI/GCodeViewer.cpp:2649 src/slic3r/GUI/Tab.cpp:1694 +#: src/slic3r/GUI/Tab.cpp:2582 msgid "Retraction" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2660 src/slic3r/GUI/GCodeViewer.cpp:2663 -#: src/slic3r/GUI/GUI_Preview.cpp:983 +#: src/slic3r/GUI/GCodeViewer.cpp:2666 src/slic3r/GUI/GCodeViewer.cpp:2669 +#: src/slic3r/GUI/GUI_Preview.cpp:1024 msgid "Wipe" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2695 src/slic3r/GUI/GUI_Preview.cpp:246 +#: src/slic3r/GUI/GCodeViewer.cpp:2700 src/slic3r/GUI/GUI_Preview.cpp:248 #: src/slic3r/GUI/GUI_Preview.cpp:262 msgid "Options" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2698 src/slic3r/GUI/GUI_Preview.cpp:985 +#: src/slic3r/GUI/GCodeViewer.cpp:2703 src/slic3r/GUI/GUI_Preview.cpp:1025 msgid "Retractions" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2699 src/slic3r/GUI/GUI_Preview.cpp:986 +#: src/slic3r/GUI/GCodeViewer.cpp:2704 src/slic3r/GUI/GUI_Preview.cpp:1026 msgid "Deretractions" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2700 src/slic3r/GUI/GUI_Preview.cpp:987 +#: src/slic3r/GUI/GCodeViewer.cpp:2705 src/slic3r/GUI/GUI_Preview.cpp:1027 msgid "Tool changes" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2701 src/slic3r/GUI/GUI_Preview.cpp:988 +#: src/slic3r/GUI/GCodeViewer.cpp:2706 src/slic3r/GUI/GUI_Preview.cpp:1028 msgid "Color changes" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2702 src/slic3r/GUI/GUI_Preview.cpp:989 +#: src/slic3r/GUI/GCodeViewer.cpp:2707 src/slic3r/GUI/GUI_Preview.cpp:1029 msgid "Print pauses" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2703 src/slic3r/GUI/GUI_Preview.cpp:990 +#: src/slic3r/GUI/GCodeViewer.cpp:2708 src/slic3r/GUI/GUI_Preview.cpp:1030 msgid "Custom G-codes" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2714 src/slic3r/GUI/GCodeViewer.cpp:2738 -#: src/slic3r/GUI/Plater.cpp:697 src/libslic3r/PrintConfig.cpp:115 +#: src/slic3r/GUI/GCodeViewer.cpp:2719 src/slic3r/GUI/GCodeViewer.cpp:2743 +#: src/slic3r/GUI/Plater.cpp:697 src/libslic3r/PrintConfig.cpp:117 msgid "Printer" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2716 src/slic3r/GUI/GCodeViewer.cpp:2743 +#: src/slic3r/GUI/GCodeViewer.cpp:2721 src/slic3r/GUI/GCodeViewer.cpp:2748 #: src/slic3r/GUI/Plater.cpp:693 msgid "Print settings" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2719 src/slic3r/GUI/GCodeViewer.cpp:2749 -#: src/slic3r/GUI/Plater.cpp:694 src/slic3r/GUI/Tab.cpp:1796 -#: src/slic3r/GUI/Tab.cpp:1797 +#: src/slic3r/GUI/GCodeViewer.cpp:2724 src/slic3r/GUI/GCodeViewer.cpp:2754 +#: src/slic3r/GUI/Plater.cpp:694 src/slic3r/GUI/Tab.cpp:1794 +#: src/slic3r/GUI/Tab.cpp:1795 msgid "Filament" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2774 src/slic3r/GUI/GCodeViewer.cpp:2779 +#: src/slic3r/GUI/GCodeViewer.cpp:2779 src/slic3r/GUI/GCodeViewer.cpp:2784 #: src/slic3r/GUI/Plater.cpp:242 src/slic3r/GUI/Plater.cpp:1135 #: src/slic3r/GUI/Plater.cpp:1220 msgid "Estimated printing time" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2774 +#: src/slic3r/GUI/GCodeViewer.cpp:2779 msgid "Normal mode" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2779 +#: src/slic3r/GUI/GCodeViewer.cpp:2784 msgid "Stealth mode" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2806 +#: src/slic3r/GUI/GCodeViewer.cpp:2811 msgid "Show stealth mode" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2810 +#: src/slic3r/GUI/GCodeViewer.cpp:2815 msgid "Show normal mode" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:228 src/slic3r/GUI/GLCanvas3D.cpp:4542 +#: src/slic3r/GUI/GLCanvas3D.cpp:236 src/slic3r/GUI/GLCanvas3D.cpp:4567 msgid "Variable layer height" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:230 +#: src/slic3r/GUI/GLCanvas3D.cpp:238 msgid "Left mouse button:" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:232 +#: src/slic3r/GUI/GLCanvas3D.cpp:240 msgid "Add detail" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:234 +#: src/slic3r/GUI/GLCanvas3D.cpp:242 msgid "Right mouse button:" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:236 +#: src/slic3r/GUI/GLCanvas3D.cpp:244 msgid "Remove detail" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:238 +#: src/slic3r/GUI/GLCanvas3D.cpp:246 msgid "Shift + Left mouse button:" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:240 +#: src/slic3r/GUI/GLCanvas3D.cpp:248 msgid "Reset to base" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:242 +#: src/slic3r/GUI/GLCanvas3D.cpp:250 msgid "Shift + Right mouse button:" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:244 +#: src/slic3r/GUI/GLCanvas3D.cpp:252 msgid "Smoothing" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:246 +#: src/slic3r/GUI/GLCanvas3D.cpp:254 msgid "Mouse wheel:" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:248 +#: src/slic3r/GUI/GLCanvas3D.cpp:256 msgid "Increase/decrease edit area" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:251 +#: src/slic3r/GUI/GLCanvas3D.cpp:259 msgid "Adaptive" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:257 +#: src/slic3r/GUI/GLCanvas3D.cpp:265 msgid "Quality / Speed" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:260 +#: src/slic3r/GUI/GLCanvas3D.cpp:268 msgid "Higher print quality versus higher print speed." msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:271 +#: src/slic3r/GUI/GLCanvas3D.cpp:279 msgid "Smooth" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:277 src/libslic3r/PrintConfig.cpp:558 +#: src/slic3r/GUI/GLCanvas3D.cpp:285 src/libslic3r/PrintConfig.cpp:571 msgid "Radius" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:287 +#: src/slic3r/GUI/GLCanvas3D.cpp:295 msgid "Keep min" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:296 src/slic3r/GUI/GLCanvas3D.cpp:3982 +#: src/slic3r/GUI/GLCanvas3D.cpp:304 src/slic3r/GUI/GLCanvas3D.cpp:4007 msgid "Reset" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:558 +#: src/slic3r/GUI/GLCanvas3D.cpp:566 msgid "Variable layer height - Manual edit" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:626 +#: src/slic3r/GUI/GLCanvas3D.cpp:634 msgid "An object outside the print area was detected." msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:627 +#: src/slic3r/GUI/GLCanvas3D.cpp:635 msgid "A toolpath outside the print area was detected." msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:628 +#: src/slic3r/GUI/GLCanvas3D.cpp:636 msgid "SLA supports outside the print area were detected." msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:629 +#: src/slic3r/GUI/GLCanvas3D.cpp:637 msgid "Some objects are not visible." msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:631 +#: src/slic3r/GUI/GLCanvas3D.cpp:639 msgid "" "An object outside the print area was detected.\n" "Resolve the current problem to continue slicing." msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:941 +#: src/slic3r/GUI/GLCanvas3D.cpp:949 msgid "Seq." msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:1445 +#: src/slic3r/GUI/GLCanvas3D.cpp:1453 msgid "Variable layer height - Reset" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:1453 +#: src/slic3r/GUI/GLCanvas3D.cpp:1461 msgid "Variable layer height - Adaptive" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:1461 +#: src/slic3r/GUI/GLCanvas3D.cpp:1469 msgid "Variable layer height - Smooth all" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:1860 +#: src/slic3r/GUI/GLCanvas3D.cpp:1871 msgid "Mirror Object" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:2724 +#: src/slic3r/GUI/GLCanvas3D.cpp:2736 #: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:520 msgid "Gizmo-Move" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:2802 +#: src/slic3r/GUI/GLCanvas3D.cpp:2822 #: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:522 msgid "Gizmo-Rotate" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:3321 +#: src/slic3r/GUI/GLCanvas3D.cpp:3345 msgid "Move Object" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:3790 src/slic3r/GUI/GLCanvas3D.cpp:4503 +#: src/slic3r/GUI/GLCanvas3D.cpp:3815 src/slic3r/GUI/GLCanvas3D.cpp:4528 msgid "Switch to Settings" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:3791 src/slic3r/GUI/GLCanvas3D.cpp:4503 +#: src/slic3r/GUI/GLCanvas3D.cpp:3816 src/slic3r/GUI/GLCanvas3D.cpp:4528 msgid "Print Settings Tab" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:3792 src/slic3r/GUI/GLCanvas3D.cpp:4504 +#: src/slic3r/GUI/GLCanvas3D.cpp:3817 src/slic3r/GUI/GLCanvas3D.cpp:4529 msgid "Filament Settings Tab" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:3792 src/slic3r/GUI/GLCanvas3D.cpp:4504 +#: src/slic3r/GUI/GLCanvas3D.cpp:3817 src/slic3r/GUI/GLCanvas3D.cpp:4529 msgid "Material Settings Tab" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:3793 src/slic3r/GUI/GLCanvas3D.cpp:4505 +#: src/slic3r/GUI/GLCanvas3D.cpp:3818 src/slic3r/GUI/GLCanvas3D.cpp:4530 msgid "Printer Settings Tab" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:3841 +#: src/slic3r/GUI/GLCanvas3D.cpp:3866 msgid "Undo History" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:3841 +#: src/slic3r/GUI/GLCanvas3D.cpp:3866 msgid "Redo History" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:3862 +#: src/slic3r/GUI/GLCanvas3D.cpp:3887 #, possible-c-format msgid "Undo %1$d Action" msgid_plural "Undo %1$d Actions" msgstr[0] "" msgstr[1] "" -#: src/slic3r/GUI/GLCanvas3D.cpp:3862 +#: src/slic3r/GUI/GLCanvas3D.cpp:3887 #, possible-c-format msgid "Redo %1$d Action" msgid_plural "Redo %1$d Actions" msgstr[0] "" msgstr[1] "" -#: src/slic3r/GUI/GLCanvas3D.cpp:3882 src/slic3r/GUI/GLCanvas3D.cpp:4521 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:122 src/slic3r/GUI/Search.cpp:351 +#: src/slic3r/GUI/GLCanvas3D.cpp:3907 src/slic3r/GUI/GLCanvas3D.cpp:4546 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:98 src/slic3r/GUI/Search.cpp:351 msgid "Search" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:3896 src/slic3r/GUI/GLCanvas3D.cpp:3904 +#: src/slic3r/GUI/GLCanvas3D.cpp:3921 src/slic3r/GUI/GLCanvas3D.cpp:3929 #: src/slic3r/GUI/Search.cpp:358 msgid "Enter a search term" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:3935 +#: src/slic3r/GUI/GLCanvas3D.cpp:3960 msgid "Arrange options" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:3965 -msgid "Use CTRL+left mouse key to enter text edit mode:" +#: src/slic3r/GUI/GLCanvas3D.cpp:3990 +msgid "Press %1%left mouse button to enter the exact value" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:3967 +#: src/slic3r/GUI/GLCanvas3D.cpp:3992 msgid "Spacing" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:3974 +#: src/slic3r/GUI/GLCanvas3D.cpp:3999 msgid "Enable rotations (slow)" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:3992 src/slic3r/GUI/GLCanvas3D.cpp:4413 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:143 src/slic3r/GUI/Plater.cpp:1645 +#: src/slic3r/GUI/GLCanvas3D.cpp:4017 src/slic3r/GUI/GLCanvas3D.cpp:4438 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:120 src/slic3r/GUI/Plater.cpp:1648 msgid "Arrange" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4387 +#: src/slic3r/GUI/GLCanvas3D.cpp:4412 msgid "Add..." msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4395 src/slic3r/GUI/GUI_ObjectList.cpp:1846 -#: src/slic3r/GUI/Plater.cpp:3932 src/slic3r/GUI/Plater.cpp:3956 -#: src/slic3r/GUI/Tab.cpp:3475 +#: src/slic3r/GUI/GLCanvas3D.cpp:4420 src/slic3r/GUI/GUI_ObjectList.cpp:1878 +#: src/slic3r/GUI/Plater.cpp:3950 src/slic3r/GUI/Plater.cpp:3974 +#: src/slic3r/GUI/Tab.cpp:3484 msgid "Delete" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4404 src/slic3r/GUI/KBShortcutsDialog.cpp:116 -#: src/slic3r/GUI/Plater.cpp:5043 +#: src/slic3r/GUI/GLCanvas3D.cpp:4429 src/slic3r/GUI/KBShortcutsDialog.cpp:88 +#: src/slic3r/GUI/Plater.cpp:5060 msgid "Delete all" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4413 src/slic3r/GUI/KBShortcutsDialog.cpp:144 +#: src/slic3r/GUI/GLCanvas3D.cpp:4438 src/slic3r/GUI/KBShortcutsDialog.cpp:121 msgid "Arrange selection" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4413 +#: src/slic3r/GUI/GLCanvas3D.cpp:4438 msgid "Click right mouse button to show arrangement options" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4435 +#: src/slic3r/GUI/GLCanvas3D.cpp:4460 msgid "Copy" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4444 +#: src/slic3r/GUI/GLCanvas3D.cpp:4469 msgid "Paste" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4456 src/slic3r/GUI/Plater.cpp:3791 -#: src/slic3r/GUI/Plater.cpp:3803 src/slic3r/GUI/Plater.cpp:3941 +#: src/slic3r/GUI/GLCanvas3D.cpp:4481 src/slic3r/GUI/Plater.cpp:3809 +#: src/slic3r/GUI/Plater.cpp:3821 src/slic3r/GUI/Plater.cpp:3959 msgid "Add instance" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4467 src/slic3r/GUI/Plater.cpp:3943 +#: src/slic3r/GUI/GLCanvas3D.cpp:4492 src/slic3r/GUI/Plater.cpp:3961 msgid "Remove instance" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4480 +#: src/slic3r/GUI/GLCanvas3D.cpp:4505 msgid "Split to objects" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4490 src/slic3r/GUI/GUI_ObjectList.cpp:1618 +#: src/slic3r/GUI/GLCanvas3D.cpp:4515 src/slic3r/GUI/GUI_ObjectList.cpp:1650 msgid "Split to parts" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4592 src/slic3r/GUI/KBShortcutsDialog.cpp:117 -#: src/slic3r/GUI/MainFrame.cpp:1128 +#: src/slic3r/GUI/GLCanvas3D.cpp:4617 src/slic3r/GUI/KBShortcutsDialog.cpp:89 +#: src/slic3r/GUI/MainFrame.cpp:1125 msgid "Undo" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4592 src/slic3r/GUI/GLCanvas3D.cpp:4631 +#: src/slic3r/GUI/GLCanvas3D.cpp:4617 src/slic3r/GUI/GLCanvas3D.cpp:4656 msgid "Click right mouse button to open/close History" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4615 +#: src/slic3r/GUI/GLCanvas3D.cpp:4640 msgid "Next Undo action: %1%" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4631 src/slic3r/GUI/KBShortcutsDialog.cpp:118 -#: src/slic3r/GUI/MainFrame.cpp:1131 +#: src/slic3r/GUI/GLCanvas3D.cpp:4656 src/slic3r/GUI/KBShortcutsDialog.cpp:90 +#: src/slic3r/GUI/MainFrame.cpp:1128 msgid "Redo" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4653 +#: src/slic3r/GUI/GLCanvas3D.cpp:4678 msgid "Next Redo action: %1%" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:6275 +#: src/slic3r/GUI/GLCanvas3D.cpp:6300 msgid "Selection-Add from rectangle" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:6294 +#: src/slic3r/GUI/GLCanvas3D.cpp:6319 msgid "Selection-Remove from rectangle" msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:48 -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:146 src/libslic3r/PrintConfig.cpp:3657 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:54 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:151 src/libslic3r/PrintConfig.cpp:3690 msgid "Cut" msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:170 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:179 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:341 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:418 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:486 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:487 +msgid "in" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:185 msgid "Keep upper part" msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:171 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:186 msgid "Keep lower part" msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:172 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:187 msgid "Rotate lower part upwards" msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:177 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:192 msgid "Perform cut" msgstr "" @@ -2068,7 +2097,7 @@ msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:54 #: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:37 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1563 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1595 msgid "Sphere" msgstr "" @@ -2147,7 +2176,7 @@ msgid "Quality" msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:44 -#: src/libslic3r/PrintConfig.cpp:3153 +#: src/libslic3r/PrintConfig.cpp:3183 msgid "Closing distance" msgstr "" @@ -2203,7 +2232,7 @@ msgstr "" #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:527 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:546 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:562 -#: src/libslic3r/PrintConfig.cpp:3706 +#: src/libslic3r/PrintConfig.cpp:3739 msgid "Rotate" msgstr "" @@ -2211,7 +2240,7 @@ msgstr "" #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:238 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:547 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:563 -#: src/libslic3r/PrintConfig.cpp:3721 +#: src/libslic3r/PrintConfig.cpp:3754 msgid "Scale" msgstr "" @@ -2261,7 +2290,7 @@ msgid "Minimal points distance" msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:54 -#: src/libslic3r/PrintConfig.cpp:2983 +#: src/libslic3r/PrintConfig.cpp:3013 msgid "Support points density" msgstr "" @@ -2437,21 +2466,21 @@ msgstr "" msgid "Add supports" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:235 +#: src/slic3r/GUI/GUI_App.cpp:238 msgid "is based on Slic3r by Alessandro Ranellucci and the RepRap community." msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:237 +#: src/slic3r/GUI/GUI_App.cpp:240 msgid "" "Contributions by Vojtech Bubnik, Enrico Turri, Oleksandra Iushchenko, Tamas " "Meszaros, Lukas Matena, Vojtech Kral, David Kocik and numerous others." msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:238 +#: src/slic3r/GUI/GUI_App.cpp:241 msgid "Artwork model by Nora Al-Badri and Jan Nikolai Nelles" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:378 +#: src/slic3r/GUI/GUI_App.cpp:381 msgid "" "Starting with %1% 2.3, configuration directory on Linux has changed " "(according to XDG Base Directory Specification) to \n" @@ -2470,20 +2499,20 @@ msgid "" "What do you want to do now?" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:386 +#: src/slic3r/GUI/GUI_App.cpp:389 #, possible-c-format msgid "%s - BREAKING CHANGE" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:388 +#: src/slic3r/GUI/GUI_App.cpp:391 msgid "Quit, I will move my data now" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:388 +#: src/slic3r/GUI/GUI_App.cpp:391 msgid "Start the application" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:576 +#: src/slic3r/GUI/GUI_App.cpp:579 #, possible-c-format msgid "" "%s has encountered an error. It was likely caused by running out of memory. " @@ -2493,74 +2522,87 @@ msgid "" "The application will now terminate." msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:579 +#: src/slic3r/GUI/GUI_App.cpp:582 msgid "Fatal error" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:699 +#: src/slic3r/GUI/GUI_App.cpp:586 +msgid "" +"PrusaSlicer has encountered a localization error. Please report to " +"PrusaSlicer team, what language was active and in which scenario this issue " +"happened. Thank you.\n" +"\n" +"The application will now terminate." +msgstr "" + +#: src/slic3r/GUI/GUI_App.cpp:589 +msgid "Critical error" +msgstr "" + +#: src/slic3r/GUI/GUI_App.cpp:710 msgid "" "Error parsing PrusaSlicer config file, it is probably corrupted. Try to " "manually delete the file to recover from the error. Your user profiles will " "not be affected." msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:705 +#: src/slic3r/GUI/GUI_App.cpp:716 msgid "" "Error parsing PrusaGCodeViewer config file, it is probably corrupted. Try to " "manually delete the file to recover from the error." msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:759 +#: src/slic3r/GUI/GUI_App.cpp:770 #, possible-c-format msgid "" "%s\n" "Do you want to continue?" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:761 src/slic3r/GUI/UnsavedChangesDialog.cpp:659 +#: src/slic3r/GUI/GUI_App.cpp:772 src/slic3r/GUI/UnsavedChangesDialog.cpp:665 msgid "Remember my choice" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:796 +#: src/slic3r/GUI/GUI_App.cpp:807 msgid "Loading configuration" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:864 +#: src/slic3r/GUI/GUI_App.cpp:875 msgid "Preparing settings tabs" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1109 +#: src/slic3r/GUI/GUI_App.cpp:1114 msgid "" "You have the following presets with saved options for \"Print Host upload\"" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1113 +#: src/slic3r/GUI/GUI_App.cpp:1118 msgid "" "But since this version of PrusaSlicer we don't show this information in " "Printer Settings anymore.\n" "Settings will be available in physical printers settings." msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1115 +#: src/slic3r/GUI/GUI_App.cpp:1120 msgid "" "By default new Printer devices will be named as \"Printer N\" during its " "creation.\n" "Note: This name can be changed later from the physical printers settings" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1118 src/slic3r/GUI/PhysicalPrinterDialog.cpp:626 +#: src/slic3r/GUI/GUI_App.cpp:1123 src/slic3r/GUI/PhysicalPrinterDialog.cpp:626 msgid "Information" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1131 src/slic3r/GUI/GUI_App.cpp:1142 +#: src/slic3r/GUI/GUI_App.cpp:1136 src/slic3r/GUI/GUI_App.cpp:1147 msgid "Recreating" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1147 +#: src/slic3r/GUI/GUI_App.cpp:1152 msgid "Loading of current presets" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1152 +#: src/slic3r/GUI/GUI_App.cpp:1157 msgid "Loading of a mode view" msgstr "" @@ -2580,145 +2622,161 @@ msgstr "" msgid "Changing of an application language" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1330 +#: src/slic3r/GUI/GUI_App.cpp:1371 msgid "Select the language" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1330 +#: src/slic3r/GUI/GUI_App.cpp:1371 msgid "Language" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1460 +#: src/slic3r/GUI/GUI_App.cpp:1520 msgid "modified" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1509 +#: src/slic3r/GUI/GUI_App.cpp:1569 #, possible-c-format msgid "Run %s" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1513 +#: src/slic3r/GUI/GUI_App.cpp:1573 msgid "&Configuration Snapshots" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1513 +#: src/slic3r/GUI/GUI_App.cpp:1573 msgid "Inspect / activate configuration snapshots" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1514 +#: src/slic3r/GUI/GUI_App.cpp:1574 msgid "Take Configuration &Snapshot" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1514 +#: src/slic3r/GUI/GUI_App.cpp:1574 msgid "Capture a configuration snapshot" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1515 +#: src/slic3r/GUI/GUI_App.cpp:1575 msgid "Check for updates" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1515 +#: src/slic3r/GUI/GUI_App.cpp:1575 msgid "Check for configuration updates" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1518 +#: src/slic3r/GUI/GUI_App.cpp:1578 msgid "&Preferences" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1524 +#: src/slic3r/GUI/GUI_App.cpp:1584 msgid "Application preferences" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1529 src/slic3r/GUI/wxExtensions.cpp:677 +#: src/slic3r/GUI/GUI_App.cpp:1589 src/slic3r/GUI/wxExtensions.cpp:683 msgid "Simple" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1529 +#: src/slic3r/GUI/GUI_App.cpp:1589 msgid "Simple View Mode" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1531 src/slic3r/GUI/wxExtensions.cpp:679 +#: src/slic3r/GUI/GUI_App.cpp:1591 src/slic3r/GUI/wxExtensions.cpp:685 msgctxt "Mode" msgid "Advanced" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1531 +#: src/slic3r/GUI/GUI_App.cpp:1591 msgid "Advanced View Mode" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1532 src/slic3r/GUI/wxExtensions.cpp:680 +#: src/slic3r/GUI/GUI_App.cpp:1592 src/slic3r/GUI/wxExtensions.cpp:686 msgid "Expert" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1532 +#: src/slic3r/GUI/GUI_App.cpp:1592 msgid "Expert View Mode" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1537 +#: src/slic3r/GUI/GUI_App.cpp:1597 msgid "Mode" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1537 +#: src/slic3r/GUI/GUI_App.cpp:1597 #, possible-c-format msgid "%s View Mode" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1540 +#: src/slic3r/GUI/GUI_App.cpp:1600 msgid "&Language" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1543 +#: src/slic3r/GUI/GUI_App.cpp:1603 msgid "Flash printer &firmware" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1543 +#: src/slic3r/GUI/GUI_App.cpp:1603 msgid "Upload a firmware image into an Arduino based printer" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1559 +#: src/slic3r/GUI/GUI_App.cpp:1619 msgid "Taking configuration snapshot" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1559 +#: src/slic3r/GUI/GUI_App.cpp:1619 msgid "Snapshot name" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1635 +#: src/slic3r/GUI/GUI_App.cpp:1648 +msgid "Failed to activate configuration snapshot." +msgstr "" + +#: src/slic3r/GUI/GUI_App.cpp:1698 msgid "Language selection" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1637 +#: src/slic3r/GUI/GUI_App.cpp:1700 msgid "" "Switching the language will trigger application restart.\n" "You will lose content of the plater." msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1639 +#: src/slic3r/GUI/GUI_App.cpp:1702 msgid "Do you want to proceed?" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1666 +#: src/slic3r/GUI/GUI_App.cpp:1729 msgid "&Configuration" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1697 +#: src/slic3r/GUI/GUI_App.cpp:1760 msgid "The preset(s) modifications are successfully saved" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1908 src/slic3r/GUI/Tab.cpp:3233 +#: src/slic3r/GUI/GUI_App.cpp:1781 +msgid "The uploads are still ongoing" +msgstr "" + +#: src/slic3r/GUI/GUI_App.cpp:1781 +msgid "Stop them and continue anyway?" +msgstr "" + +#: src/slic3r/GUI/GUI_App.cpp:1784 +msgid "Ongoing uploads" +msgstr "" + +#: src/slic3r/GUI/GUI_App.cpp:1998 src/slic3r/GUI/Tab.cpp:3242 msgid "It's impossible to print multi-part object(s) with SLA technology." msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1909 +#: src/slic3r/GUI/GUI_App.cpp:1999 msgid "Please check and fix your object list." msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1910 src/slic3r/GUI/Jobs/SLAImportJob.cpp:210 -#: src/slic3r/GUI/Plater.cpp:2346 src/slic3r/GUI/Tab.cpp:3235 +#: src/slic3r/GUI/GUI_App.cpp:2000 src/slic3r/GUI/Jobs/SLAImportJob.cpp:210 +#: src/slic3r/GUI/Plater.cpp:2355 src/slic3r/GUI/Tab.cpp:3244 msgid "Attention!" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1927 +#: src/slic3r/GUI/GUI_App.cpp:2017 msgid "Select a gcode file:" msgstr "" @@ -2747,38 +2805,38 @@ msgid "Add layer range" msgstr "" #: src/slic3r/GUI/GUI_ObjectList.cpp:34 src/slic3r/GUI/GUI_ObjectList.cpp:92 -#: src/slic3r/GUI/GUI_ObjectList.cpp:651 src/libslic3r/PrintConfig.cpp:72 -#: src/libslic3r/PrintConfig.cpp:218 src/libslic3r/PrintConfig.cpp:227 -#: src/libslic3r/PrintConfig.cpp:451 src/libslic3r/PrintConfig.cpp:517 -#: src/libslic3r/PrintConfig.cpp:525 src/libslic3r/PrintConfig.cpp:955 -#: src/libslic3r/PrintConfig.cpp:1193 src/libslic3r/PrintConfig.cpp:1558 -#: src/libslic3r/PrintConfig.cpp:1624 src/libslic3r/PrintConfig.cpp:1805 -#: src/libslic3r/PrintConfig.cpp:2272 src/libslic3r/PrintConfig.cpp:2331 -#: src/libslic3r/PrintConfig.cpp:2340 +#: src/slic3r/GUI/GUI_ObjectList.cpp:667 src/libslic3r/PrintConfig.cpp:74 +#: src/libslic3r/PrintConfig.cpp:189 src/libslic3r/PrintConfig.cpp:231 +#: src/libslic3r/PrintConfig.cpp:240 src/libslic3r/PrintConfig.cpp:464 +#: src/libslic3r/PrintConfig.cpp:530 src/libslic3r/PrintConfig.cpp:538 +#: src/libslic3r/PrintConfig.cpp:970 src/libslic3r/PrintConfig.cpp:1219 +#: src/libslic3r/PrintConfig.cpp:1584 src/libslic3r/PrintConfig.cpp:1650 +#: src/libslic3r/PrintConfig.cpp:1835 src/libslic3r/PrintConfig.cpp:2302 +#: src/libslic3r/PrintConfig.cpp:2361 src/libslic3r/PrintConfig.cpp:2370 msgid "Layers and Perimeters" msgstr "" #: src/slic3r/GUI/GUI_ObjectList.cpp:36 src/slic3r/GUI/GUI_ObjectList.cpp:95 -#: src/slic3r/GUI/GUI_ObjectList.cpp:654 src/slic3r/GUI/GUI_Preview.cpp:238 -#: src/slic3r/GUI/Tab.cpp:1474 src/slic3r/GUI/Tab.cpp:1476 +#: src/slic3r/GUI/GUI_ObjectList.cpp:670 src/slic3r/GUI/GUI_Preview.cpp:240 +#: src/slic3r/GUI/Tab.cpp:1472 src/slic3r/GUI/Tab.cpp:1474 #: src/libslic3r/ExtrusionEntity.cpp:320 src/libslic3r/ExtrusionEntity.cpp:352 -#: src/libslic3r/PrintConfig.cpp:413 src/libslic3r/PrintConfig.cpp:1685 -#: src/libslic3r/PrintConfig.cpp:2063 src/libslic3r/PrintConfig.cpp:2069 -#: src/libslic3r/PrintConfig.cpp:2077 src/libslic3r/PrintConfig.cpp:2089 -#: src/libslic3r/PrintConfig.cpp:2099 src/libslic3r/PrintConfig.cpp:2107 -#: src/libslic3r/PrintConfig.cpp:2122 src/libslic3r/PrintConfig.cpp:2143 -#: src/libslic3r/PrintConfig.cpp:2155 src/libslic3r/PrintConfig.cpp:2171 -#: src/libslic3r/PrintConfig.cpp:2180 src/libslic3r/PrintConfig.cpp:2189 -#: src/libslic3r/PrintConfig.cpp:2200 src/libslic3r/PrintConfig.cpp:2214 -#: src/libslic3r/PrintConfig.cpp:2222 src/libslic3r/PrintConfig.cpp:2223 -#: src/libslic3r/PrintConfig.cpp:2232 src/libslic3r/PrintConfig.cpp:2240 -#: src/libslic3r/PrintConfig.cpp:2254 +#: src/libslic3r/PrintConfig.cpp:426 src/libslic3r/PrintConfig.cpp:1715 +#: src/libslic3r/PrintConfig.cpp:2093 src/libslic3r/PrintConfig.cpp:2099 +#: src/libslic3r/PrintConfig.cpp:2107 src/libslic3r/PrintConfig.cpp:2119 +#: src/libslic3r/PrintConfig.cpp:2129 src/libslic3r/PrintConfig.cpp:2137 +#: src/libslic3r/PrintConfig.cpp:2152 src/libslic3r/PrintConfig.cpp:2173 +#: src/libslic3r/PrintConfig.cpp:2185 src/libslic3r/PrintConfig.cpp:2201 +#: src/libslic3r/PrintConfig.cpp:2210 src/libslic3r/PrintConfig.cpp:2219 +#: src/libslic3r/PrintConfig.cpp:2230 src/libslic3r/PrintConfig.cpp:2244 +#: src/libslic3r/PrintConfig.cpp:2252 src/libslic3r/PrintConfig.cpp:2253 +#: src/libslic3r/PrintConfig.cpp:2262 src/libslic3r/PrintConfig.cpp:2270 +#: src/libslic3r/PrintConfig.cpp:2284 msgid "Support material" msgstr "" #: src/slic3r/GUI/GUI_ObjectList.cpp:39 src/slic3r/GUI/GUI_ObjectList.cpp:99 -#: src/slic3r/GUI/GUI_ObjectList.cpp:658 src/libslic3r/PrintConfig.cpp:2450 -#: src/libslic3r/PrintConfig.cpp:2458 +#: src/slic3r/GUI/GUI_ObjectList.cpp:674 src/libslic3r/PrintConfig.cpp:2480 +#: src/libslic3r/PrintConfig.cpp:2488 msgid "Wipe options" msgstr "" @@ -2802,433 +2860,432 @@ msgstr "" msgid "Add support blocker" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:94 src/slic3r/GUI/GUI_ObjectList.cpp:653 -#: src/slic3r/GUI/GUI_Preview.cpp:234 src/slic3r/GUI/Tab.cpp:1444 +#: src/slic3r/GUI/GUI_ObjectList.cpp:94 src/slic3r/GUI/GUI_ObjectList.cpp:669 +#: src/slic3r/GUI/GUI_Preview.cpp:236 src/slic3r/GUI/Tab.cpp:1442 #: src/libslic3r/ExtrusionEntity.cpp:316 src/libslic3r/ExtrusionEntity.cpp:344 -#: src/libslic3r/PrintConfig.cpp:1200 src/libslic3r/PrintConfig.cpp:1206 -#: src/libslic3r/PrintConfig.cpp:1220 src/libslic3r/PrintConfig.cpp:1230 -#: src/libslic3r/PrintConfig.cpp:1238 src/libslic3r/PrintConfig.cpp:1240 +#: src/libslic3r/PrintConfig.cpp:1226 src/libslic3r/PrintConfig.cpp:1232 +#: src/libslic3r/PrintConfig.cpp:1246 src/libslic3r/PrintConfig.cpp:1256 +#: src/libslic3r/PrintConfig.cpp:1264 src/libslic3r/PrintConfig.cpp:1266 msgid "Ironing" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:96 src/slic3r/GUI/GUI_ObjectList.cpp:655 -#: src/slic3r/GUI/GUI_Preview.cpp:215 src/slic3r/GUI/Tab.cpp:1500 -#: src/libslic3r/PrintConfig.cpp:278 src/libslic3r/PrintConfig.cpp:505 -#: src/libslic3r/PrintConfig.cpp:986 src/libslic3r/PrintConfig.cpp:1166 -#: src/libslic3r/PrintConfig.cpp:1239 src/libslic3r/PrintConfig.cpp:1614 -#: src/libslic3r/PrintConfig.cpp:1886 src/libslic3r/PrintConfig.cpp:1938 -#: src/libslic3r/PrintConfig.cpp:2316 +#: src/slic3r/GUI/GUI_ObjectList.cpp:96 src/slic3r/GUI/GUI_ObjectList.cpp:671 +#: src/slic3r/GUI/GUI_Preview.cpp:217 src/slic3r/GUI/Tab.cpp:1498 +#: src/libslic3r/PrintConfig.cpp:291 src/libslic3r/PrintConfig.cpp:518 +#: src/libslic3r/PrintConfig.cpp:1012 src/libslic3r/PrintConfig.cpp:1192 +#: src/libslic3r/PrintConfig.cpp:1265 src/libslic3r/PrintConfig.cpp:1640 +#: src/libslic3r/PrintConfig.cpp:1916 src/libslic3r/PrintConfig.cpp:1968 +#: src/libslic3r/PrintConfig.cpp:2346 msgid "Speed" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:97 src/slic3r/GUI/GUI_ObjectList.cpp:656 -#: src/slic3r/GUI/Tab.cpp:1536 src/slic3r/GUI/Tab.cpp:2113 -#: src/libslic3r/PrintConfig.cpp:535 src/libslic3r/PrintConfig.cpp:1120 -#: src/libslic3r/PrintConfig.cpp:1592 src/libslic3r/PrintConfig.cpp:1907 -#: src/libslic3r/PrintConfig.cpp:2135 src/libslic3r/PrintConfig.cpp:2162 +#: src/slic3r/GUI/GUI_ObjectList.cpp:97 src/slic3r/GUI/GUI_ObjectList.cpp:672 +#: src/slic3r/GUI/Tab.cpp:1534 src/slic3r/GUI/Tab.cpp:2112 +#: src/libslic3r/PrintConfig.cpp:548 src/libslic3r/PrintConfig.cpp:1146 +#: src/libslic3r/PrintConfig.cpp:1618 src/libslic3r/PrintConfig.cpp:1937 +#: src/libslic3r/PrintConfig.cpp:2165 src/libslic3r/PrintConfig.cpp:2192 msgid "Extruders" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:98 src/slic3r/GUI/GUI_ObjectList.cpp:657 -#: src/libslic3r/PrintConfig.cpp:494 src/libslic3r/PrintConfig.cpp:602 -#: src/libslic3r/PrintConfig.cpp:942 src/libslic3r/PrintConfig.cpp:1128 -#: src/libslic3r/PrintConfig.cpp:1601 src/libslic3r/PrintConfig.cpp:1927 -#: src/libslic3r/PrintConfig.cpp:2144 src/libslic3r/PrintConfig.cpp:2304 +#: src/slic3r/GUI/GUI_ObjectList.cpp:98 src/slic3r/GUI/GUI_ObjectList.cpp:673 +#: src/libslic3r/PrintConfig.cpp:507 src/libslic3r/PrintConfig.cpp:616 +#: src/libslic3r/PrintConfig.cpp:957 src/libslic3r/PrintConfig.cpp:1154 +#: src/libslic3r/PrintConfig.cpp:1627 src/libslic3r/PrintConfig.cpp:1957 +#: src/libslic3r/PrintConfig.cpp:2174 src/libslic3r/PrintConfig.cpp:2334 msgid "Extrusion Width" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:102 src/slic3r/GUI/GUI_ObjectList.cpp:661 -#: src/slic3r/GUI/Tab.cpp:1430 src/slic3r/GUI/Tab.cpp:1454 -#: src/slic3r/GUI/Tab.cpp:1557 src/slic3r/GUI/Tab.cpp:1560 -#: src/slic3r/GUI/Tab.cpp:1856 src/slic3r/GUI/Tab.cpp:2193 -#: src/slic3r/GUI/Tab.cpp:4105 src/libslic3r/PrintConfig.cpp:90 -#: src/libslic3r/PrintConfig.cpp:130 src/libslic3r/PrintConfig.cpp:266 -#: src/libslic3r/PrintConfig.cpp:1071 src/libslic3r/PrintConfig.cpp:1155 -#: src/libslic3r/PrintConfig.cpp:2474 src/libslic3r/PrintConfig.cpp:2646 +#: src/slic3r/GUI/GUI_ObjectList.cpp:102 src/slic3r/GUI/GUI_ObjectList.cpp:677 +#: src/slic3r/GUI/Tab.cpp:1428 src/slic3r/GUI/Tab.cpp:1452 +#: src/slic3r/GUI/Tab.cpp:1555 src/slic3r/GUI/Tab.cpp:1558 +#: src/slic3r/GUI/Tab.cpp:1855 src/slic3r/GUI/Tab.cpp:2197 +#: src/slic3r/GUI/Tab.cpp:4114 src/libslic3r/PrintConfig.cpp:92 +#: src/libslic3r/PrintConfig.cpp:132 src/libslic3r/PrintConfig.cpp:279 +#: src/libslic3r/PrintConfig.cpp:1097 src/libslic3r/PrintConfig.cpp:1181 +#: src/libslic3r/PrintConfig.cpp:2504 src/libslic3r/PrintConfig.cpp:2676 msgid "Advanced" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:104 src/slic3r/GUI/GUI_ObjectList.cpp:663 -#: src/slic3r/GUI/Plater.cpp:357 src/slic3r/GUI/Tab.cpp:4039 -#: src/slic3r/GUI/Tab.cpp:4040 src/libslic3r/PrintConfig.cpp:2812 -#: src/libslic3r/PrintConfig.cpp:2819 src/libslic3r/PrintConfig.cpp:2828 -#: src/libslic3r/PrintConfig.cpp:2837 src/libslic3r/PrintConfig.cpp:2847 -#: src/libslic3r/PrintConfig.cpp:2857 src/libslic3r/PrintConfig.cpp:2894 -#: src/libslic3r/PrintConfig.cpp:2901 src/libslic3r/PrintConfig.cpp:2912 -#: src/libslic3r/PrintConfig.cpp:2922 src/libslic3r/PrintConfig.cpp:2931 -#: src/libslic3r/PrintConfig.cpp:2944 src/libslic3r/PrintConfig.cpp:2954 -#: src/libslic3r/PrintConfig.cpp:2963 src/libslic3r/PrintConfig.cpp:2973 -#: src/libslic3r/PrintConfig.cpp:2984 src/libslic3r/PrintConfig.cpp:2992 +#: src/slic3r/GUI/GUI_ObjectList.cpp:104 src/slic3r/GUI/GUI_ObjectList.cpp:679 +#: src/slic3r/GUI/Plater.cpp:357 src/slic3r/GUI/Tab.cpp:4048 +#: src/slic3r/GUI/Tab.cpp:4049 src/libslic3r/PrintConfig.cpp:2842 +#: src/libslic3r/PrintConfig.cpp:2849 src/libslic3r/PrintConfig.cpp:2858 +#: src/libslic3r/PrintConfig.cpp:2867 src/libslic3r/PrintConfig.cpp:2877 +#: src/libslic3r/PrintConfig.cpp:2887 src/libslic3r/PrintConfig.cpp:2924 +#: src/libslic3r/PrintConfig.cpp:2931 src/libslic3r/PrintConfig.cpp:2942 +#: src/libslic3r/PrintConfig.cpp:2952 src/libslic3r/PrintConfig.cpp:2961 +#: src/libslic3r/PrintConfig.cpp:2974 src/libslic3r/PrintConfig.cpp:2984 +#: src/libslic3r/PrintConfig.cpp:2993 src/libslic3r/PrintConfig.cpp:3003 +#: src/libslic3r/PrintConfig.cpp:3014 src/libslic3r/PrintConfig.cpp:3022 msgid "Supports" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:105 src/slic3r/GUI/GUI_ObjectList.cpp:664 -#: src/slic3r/GUI/Plater.cpp:500 src/slic3r/GUI/Tab.cpp:4080 -#: src/slic3r/GUI/Tab.cpp:4081 src/slic3r/GUI/Tab.cpp:4152 -#: src/libslic3r/PrintConfig.cpp:3000 src/libslic3r/PrintConfig.cpp:3007 -#: src/libslic3r/PrintConfig.cpp:3021 src/libslic3r/PrintConfig.cpp:3032 -#: src/libslic3r/PrintConfig.cpp:3042 src/libslic3r/PrintConfig.cpp:3064 -#: src/libslic3r/PrintConfig.cpp:3075 src/libslic3r/PrintConfig.cpp:3082 -#: src/libslic3r/PrintConfig.cpp:3089 src/libslic3r/PrintConfig.cpp:3100 -#: src/libslic3r/PrintConfig.cpp:3109 src/libslic3r/PrintConfig.cpp:3118 +#: src/slic3r/GUI/GUI_ObjectList.cpp:105 src/slic3r/GUI/GUI_ObjectList.cpp:680 +#: src/slic3r/GUI/Plater.cpp:500 src/slic3r/GUI/Tab.cpp:4089 +#: src/slic3r/GUI/Tab.cpp:4090 src/slic3r/GUI/Tab.cpp:4161 +#: src/libslic3r/PrintConfig.cpp:3030 src/libslic3r/PrintConfig.cpp:3037 +#: src/libslic3r/PrintConfig.cpp:3051 src/libslic3r/PrintConfig.cpp:3062 +#: src/libslic3r/PrintConfig.cpp:3072 src/libslic3r/PrintConfig.cpp:3094 +#: src/libslic3r/PrintConfig.cpp:3105 src/libslic3r/PrintConfig.cpp:3112 +#: src/libslic3r/PrintConfig.cpp:3119 src/libslic3r/PrintConfig.cpp:3130 +#: src/libslic3r/PrintConfig.cpp:3139 src/libslic3r/PrintConfig.cpp:3148 msgid "Pad" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:106 src/slic3r/GUI/Tab.cpp:4098 -#: src/slic3r/GUI/Tab.cpp:4099 src/libslic3r/SLA/Hollowing.cpp:45 +#: src/slic3r/GUI/GUI_ObjectList.cpp:106 src/slic3r/GUI/Tab.cpp:4107 +#: src/slic3r/GUI/Tab.cpp:4108 src/libslic3r/SLA/Hollowing.cpp:45 #: src/libslic3r/SLA/Hollowing.cpp:57 src/libslic3r/SLA/Hollowing.cpp:66 -#: src/libslic3r/SLA/Hollowing.cpp:75 src/libslic3r/PrintConfig.cpp:3128 -#: src/libslic3r/PrintConfig.cpp:3135 src/libslic3r/PrintConfig.cpp:3145 -#: src/libslic3r/PrintConfig.cpp:3154 +#: src/libslic3r/SLA/Hollowing.cpp:75 src/libslic3r/PrintConfig.cpp:3158 +#: src/libslic3r/PrintConfig.cpp:3165 src/libslic3r/PrintConfig.cpp:3175 +#: src/libslic3r/PrintConfig.cpp:3184 msgid "Hollowing" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:284 +#: src/slic3r/GUI/GUI_ObjectList.cpp:300 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:161 msgid "Name" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:300 src/slic3r/GUI/GUI_ObjectList.cpp:441 +#: src/slic3r/GUI/GUI_ObjectList.cpp:316 src/slic3r/GUI/GUI_ObjectList.cpp:457 msgid "Editing" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:386 +#: src/slic3r/GUI/GUI_ObjectList.cpp:402 #, possible-c-format msgid "Auto-repaired (%d errors):" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:393 +#: src/slic3r/GUI/GUI_ObjectList.cpp:409 msgid "degenerate facets" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:394 +#: src/slic3r/GUI/GUI_ObjectList.cpp:410 msgid "edges fixed" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:395 +#: src/slic3r/GUI/GUI_ObjectList.cpp:411 msgid "facets removed" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:396 +#: src/slic3r/GUI/GUI_ObjectList.cpp:412 msgid "facets added" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:397 +#: src/slic3r/GUI/GUI_ObjectList.cpp:413 msgid "facets reversed" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:398 +#: src/slic3r/GUI/GUI_ObjectList.cpp:414 msgid "backwards edges" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:406 +#: src/slic3r/GUI/GUI_ObjectList.cpp:422 msgid "Right button click the icon to fix STL through Netfabb" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:443 +#: src/slic3r/GUI/GUI_ObjectList.cpp:459 msgid "Right button click the icon to change the object settings" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:445 +#: src/slic3r/GUI/GUI_ObjectList.cpp:461 msgid "Click the icon to change the object settings" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:449 +#: src/slic3r/GUI/GUI_ObjectList.cpp:465 msgid "Right button click the icon to change the object printable property" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:451 +#: src/slic3r/GUI/GUI_ObjectList.cpp:467 msgid "Click the icon to change the object printable property" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:574 +#: src/slic3r/GUI/GUI_ObjectList.cpp:590 msgid "Change Extruder" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:589 +#: src/slic3r/GUI/GUI_ObjectList.cpp:605 msgid "Rename Object" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:589 +#: src/slic3r/GUI/GUI_ObjectList.cpp:605 msgid "Rename Sub-object" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1215 -#: src/slic3r/GUI/GUI_ObjectList.cpp:4244 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1247 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4372 msgid "Instances to Separated Objects" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1230 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1262 msgid "Volumes in Object reordered" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1230 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1262 msgid "Object reordered" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1306 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1661 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1667 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2008 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1338 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1693 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1699 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2081 #, possible-c-format msgid "Quick Add Settings (%s)" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1396 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1428 msgid "Select showing settings" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1445 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1477 msgid "Add Settings for Layers" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1446 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1478 msgid "Add Settings for Sub-object" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1447 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1479 msgid "Add Settings for Object" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1517 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1549 msgid "Add Settings Bundle for Height range" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1518 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1550 msgid "Add Settings Bundle for Sub-object" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1519 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1551 msgid "Add Settings Bundle for Object" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1558 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1590 msgid "Load" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1563 #: src/slic3r/GUI/GUI_ObjectList.cpp:1595 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1599 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1627 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1631 msgid "Box" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1563 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1595 msgid "Cylinder" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1563 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1595 msgid "Slab" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1631 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1663 msgid "Height range Modifier" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1640 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1672 msgid "Add settings" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1718 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1750 msgid "Change type" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1728 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1740 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1760 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1772 msgid "Set as a Separated Object" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1740 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1772 msgid "Set as a Separated Objects" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1750 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1782 msgid "Printable" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1765 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1797 msgid "Rename" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1776 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1808 msgid "Fix through the Netfabb" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1786 src/slic3r/GUI/Plater.cpp:3969 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1818 src/slic3r/GUI/Plater.cpp:3987 msgid "Export as STL" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1793 -#: src/slic3r/GUI/GUI_ObjectList.cpp:4439 src/slic3r/GUI/Plater.cpp:3935 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1825 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4567 src/slic3r/GUI/Plater.cpp:3953 msgid "Reload the selected volumes from disk" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1800 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1832 msgid "Set extruder for selected items" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1832 src/libslic3r/PrintConfig.cpp:378 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1864 src/libslic3r/PrintConfig.cpp:391 msgid "Default" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1852 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1884 msgid "Scale to print volume" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1852 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1884 msgid "Scale the selected object to fit the print volume" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1858 src/slic3r/GUI/Plater.cpp:5160 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1913 src/slic3r/GUI/Plater.cpp:5177 msgid "Convert from imperial units" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1861 src/slic3r/GUI/Plater.cpp:5160 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1915 src/slic3r/GUI/Plater.cpp:5177 msgid "Revert conversion from imperial units" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1868 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1876 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2569 src/libslic3r/PrintConfig.cpp:3697 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1944 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1952 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2630 src/libslic3r/PrintConfig.cpp:3730 msgid "Merge" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1868 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1944 msgid "Merge objects to the one multipart object" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1876 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1952 msgid "Merge objects to the one single object" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1953 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2210 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2026 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2283 msgid "Add Shape" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2038 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2111 msgid "Load Part" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2077 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2150 msgid "Error!" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2152 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2225 msgid "Add Generic Subobject" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2181 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2254 msgid "Generic" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2307 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2408 -msgid "Last instance of an object cannot be deleted." -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:2319 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2380 msgid "Delete Settings" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2341 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2402 msgid "Delete All Instances from Object" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2357 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2418 msgid "Delete Height Range" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2389 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2450 msgid "From Object List You can't delete the last solid part from object." msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2393 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2454 msgid "Delete Subobject" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2412 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2469 +msgid "Last instance of an object cannot be deleted." +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2473 msgid "Delete Instance" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2436 src/slic3r/GUI/Plater.cpp:2850 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2497 src/slic3r/GUI/Plater.cpp:2861 msgid "" "The selected object couldn't be split because it contains only one part." msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2440 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2501 msgid "Split to Parts" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2576 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2637 msgid "Merged" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2660 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2721 msgid "Merge all parts to the one single object" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2692 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2753 msgid "Add Layers" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2846 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2907 msgid "Group manipulation" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2858 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2919 msgid "Object manipulation" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2871 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2932 msgid "Object Settings to modify" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2875 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2936 msgid "Part Settings to modify" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2880 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2941 msgid "Layer range Settings to modify" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2886 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2947 msgid "Part manipulation" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2892 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2953 msgid "Instance manipulation" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2899 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2960 msgid "Height ranges" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2899 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2960 msgid "Settings for height range" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3083 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3144 msgid "Delete Selected Item" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3221 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3332 msgid "Delete Selected" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3297 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3325 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3345 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3408 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3436 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3456 msgid "Add Height Range" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3391 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3502 msgid "" "Cannot insert a new layer range after the current layer range.\n" "The next layer range is too thin to be split to two\n" "without violating the minimum layer height." msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3395 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3506 msgid "" "Cannot insert a new layer range between the current and the next layer " "range.\n" @@ -3236,122 +3293,122 @@ msgid "" "is thinner than the minimum layer height allowed." msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3400 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3511 msgid "" "Cannot insert a new layer range after the current layer range.\n" "Current layer range overlaps with the next layer range." msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3459 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3570 msgid "Edit Height Range" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3754 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3865 msgid "Selection-Remove from list" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3762 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3873 msgid "Selection-Add from list" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3880 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4008 msgid "Object or Instance" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3881 -#: src/slic3r/GUI/GUI_ObjectList.cpp:4014 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4009 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4142 msgid "Part" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3881 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4009 msgid "Layer" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3883 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4011 msgid "Unsupported selection" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3884 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4012 #, possible-c-format msgid "You started your selection with %s Item." msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3885 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4013 #, possible-c-format msgid "In this mode you can select only other %s Items%s" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3888 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4016 msgid "of a current Object" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3893 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3968 src/slic3r/GUI/Plater.cpp:143 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4021 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4096 src/slic3r/GUI/Plater.cpp:143 msgid "Info" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:4009 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4137 msgid "You can't change a type of the last solid part of the object." msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:4014 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4142 msgid "Modifier" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:4014 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4142 msgid "Support Enforcer" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:4014 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4142 msgid "Support Blocker" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:4016 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4144 msgid "Select type of part" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:4021 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4149 msgid "Change Part Type" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:4266 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4394 msgid "Enter new name" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:4266 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4394 msgid "Renaming" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:4282 -#: src/slic3r/GUI/GUI_ObjectList.cpp:4409 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4410 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4537 #: src/slic3r/GUI/SavePresetDialog.cpp:101 #: src/slic3r/GUI/SavePresetDialog.cpp:109 msgid "The supplied name is not valid;" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:4283 -#: src/slic3r/GUI/GUI_ObjectList.cpp:4410 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4411 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4538 #: src/slic3r/GUI/SavePresetDialog.cpp:102 msgid "the following characters are not allowed:" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:4458 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4586 msgid "Select extruder number:" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:4459 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4587 msgid "This extruder will be set for selected items" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:4484 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4612 msgid "Change Extruders" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:4581 src/slic3r/GUI/Selection.cpp:1512 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4709 src/slic3r/GUI/Selection.cpp:1485 msgid "Set Printable" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:4581 src/slic3r/GUI/Selection.cpp:1512 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4709 src/slic3r/GUI/Selection.cpp:1485 msgid "Set Unprintable" msgstr "" @@ -3369,7 +3426,7 @@ msgstr "" msgid "Select coordinate space, in which the transformation will be performed." msgstr "" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:163 src/libslic3r/GCode.cpp:631 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:163 src/libslic3r/GCode.cpp:540 msgid "Object name" msgstr "" @@ -3380,8 +3437,8 @@ msgstr "" #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:224 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:506 -#: src/slic3r/GUI/Mouse3DController.cpp:487 -#: src/slic3r/GUI/Mouse3DController.cpp:508 +#: src/slic3r/GUI/Mouse3DController.cpp:486 +#: src/slic3r/GUI/Mouse3DController.cpp:507 msgid "Rotation" msgstr "" @@ -3394,13 +3451,6 @@ msgstr "" msgid "Set Mirror" msgstr "" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:341 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:418 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:486 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:487 -msgid "in" -msgstr "" - #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:345 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:357 msgid "Drop to bed" @@ -3477,100 +3527,100 @@ msgstr "" msgid "Change Option %s" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:210 +#: src/slic3r/GUI/GUI_Preview.cpp:212 msgid "View" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:213 src/libslic3r/PrintConfig.cpp:547 +#: src/slic3r/GUI/GUI_Preview.cpp:215 src/libslic3r/PrintConfig.cpp:560 msgid "Height" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:214 src/libslic3r/PrintConfig.cpp:2436 +#: src/slic3r/GUI/GUI_Preview.cpp:216 src/libslic3r/PrintConfig.cpp:2466 msgid "Width" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:216 src/slic3r/GUI/Tab.cpp:1842 +#: src/slic3r/GUI/GUI_Preview.cpp:218 src/slic3r/GUI/Tab.cpp:1840 msgid "Fan speed" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:217 +#: src/slic3r/GUI/GUI_Preview.cpp:219 msgid "Volumetric flow rate" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:222 +#: src/slic3r/GUI/GUI_Preview.cpp:224 msgid "Show" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:225 src/slic3r/GUI/GUI_Preview.cpp:243 +#: src/slic3r/GUI/GUI_Preview.cpp:227 src/slic3r/GUI/GUI_Preview.cpp:245 msgid "Feature types" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:228 src/libslic3r/ExtrusionEntity.cpp:310 +#: src/slic3r/GUI/GUI_Preview.cpp:230 src/libslic3r/ExtrusionEntity.cpp:310 #: src/libslic3r/ExtrusionEntity.cpp:332 msgid "Perimeter" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:229 src/libslic3r/ExtrusionEntity.cpp:311 +#: src/slic3r/GUI/GUI_Preview.cpp:231 src/libslic3r/ExtrusionEntity.cpp:311 #: src/libslic3r/ExtrusionEntity.cpp:334 msgid "External perimeter" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:230 src/libslic3r/ExtrusionEntity.cpp:312 +#: src/slic3r/GUI/GUI_Preview.cpp:232 src/libslic3r/ExtrusionEntity.cpp:312 #: src/libslic3r/ExtrusionEntity.cpp:336 msgid "Overhang perimeter" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:231 src/libslic3r/ExtrusionEntity.cpp:313 +#: src/slic3r/GUI/GUI_Preview.cpp:233 src/libslic3r/ExtrusionEntity.cpp:313 #: src/libslic3r/ExtrusionEntity.cpp:338 msgid "Internal infill" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:232 src/libslic3r/ExtrusionEntity.cpp:314 -#: src/libslic3r/ExtrusionEntity.cpp:340 src/libslic3r/PrintConfig.cpp:1926 -#: src/libslic3r/PrintConfig.cpp:1937 +#: src/slic3r/GUI/GUI_Preview.cpp:234 src/libslic3r/ExtrusionEntity.cpp:314 +#: src/libslic3r/ExtrusionEntity.cpp:340 src/libslic3r/PrintConfig.cpp:1956 +#: src/libslic3r/PrintConfig.cpp:1967 msgid "Solid infill" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:233 src/libslic3r/ExtrusionEntity.cpp:315 -#: src/libslic3r/ExtrusionEntity.cpp:342 src/libslic3r/PrintConfig.cpp:2303 -#: src/libslic3r/PrintConfig.cpp:2315 +#: src/slic3r/GUI/GUI_Preview.cpp:235 src/libslic3r/ExtrusionEntity.cpp:315 +#: src/libslic3r/ExtrusionEntity.cpp:342 src/libslic3r/PrintConfig.cpp:2333 +#: src/libslic3r/PrintConfig.cpp:2345 msgid "Top solid infill" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:235 src/libslic3r/ExtrusionEntity.cpp:317 +#: src/slic3r/GUI/GUI_Preview.cpp:237 src/libslic3r/ExtrusionEntity.cpp:317 #: src/libslic3r/ExtrusionEntity.cpp:346 msgid "Bridge infill" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:236 src/libslic3r/ExtrusionEntity.cpp:318 -#: src/libslic3r/ExtrusionEntity.cpp:348 src/libslic3r/PrintConfig.cpp:985 +#: src/slic3r/GUI/GUI_Preview.cpp:238 src/libslic3r/ExtrusionEntity.cpp:318 +#: src/libslic3r/ExtrusionEntity.cpp:348 src/libslic3r/PrintConfig.cpp:1011 msgid "Gap fill" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:237 src/slic3r/GUI/Tab.cpp:1464 +#: src/slic3r/GUI/GUI_Preview.cpp:239 src/slic3r/GUI/Tab.cpp:1462 #: src/libslic3r/ExtrusionEntity.cpp:319 src/libslic3r/ExtrusionEntity.cpp:350 msgid "Skirt" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:239 src/libslic3r/ExtrusionEntity.cpp:321 -#: src/libslic3r/ExtrusionEntity.cpp:354 src/libslic3r/PrintConfig.cpp:2188 +#: src/slic3r/GUI/GUI_Preview.cpp:241 src/libslic3r/ExtrusionEntity.cpp:321 +#: src/libslic3r/ExtrusionEntity.cpp:354 src/libslic3r/PrintConfig.cpp:2218 msgid "Support material interface" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:240 src/slic3r/GUI/Tab.cpp:1547 +#: src/slic3r/GUI/GUI_Preview.cpp:242 src/slic3r/GUI/Tab.cpp:1545 #: src/libslic3r/ExtrusionEntity.cpp:322 src/libslic3r/ExtrusionEntity.cpp:356 msgid "Wipe tower" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:991 +#: src/slic3r/GUI/GUI_Preview.cpp:1031 msgid "Shells" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:992 +#: src/slic3r/GUI/GUI_Preview.cpp:1032 msgid "Tool marker" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:993 +#: src/slic3r/GUI/GUI_Preview.cpp:1033 msgid "Legend/Estimated printing time" msgstr "" @@ -3586,19 +3636,19 @@ msgstr "" msgid "Search in English" msgstr "" -#: src/slic3r/GUI/Jobs/ArrangeJob.cpp:146 +#: src/slic3r/GUI/Jobs/ArrangeJob.cpp:145 msgid "Arranging" msgstr "" -#: src/slic3r/GUI/Jobs/ArrangeJob.cpp:176 +#: src/slic3r/GUI/Jobs/ArrangeJob.cpp:175 msgid "Could not arrange model objects! Some geometries may be invalid." msgstr "" -#: src/slic3r/GUI/Jobs/ArrangeJob.cpp:182 +#: src/slic3r/GUI/Jobs/ArrangeJob.cpp:181 msgid "Arranging canceled." msgstr "" -#: src/slic3r/GUI/Jobs/ArrangeJob.cpp:183 +#: src/slic3r/GUI/Jobs/ArrangeJob.cpp:182 msgid "Arranging done." msgstr "" @@ -3662,1205 +3712,1235 @@ msgstr "" msgid "Importing done." msgstr "" -#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:208 src/slic3r/GUI/Plater.cpp:2344 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:208 src/slic3r/GUI/Plater.cpp:2353 msgid "You cannot load SLA project with a multi-part object on the bed" msgstr "" -#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:209 src/slic3r/GUI/Plater.cpp:2345 -#: src/slic3r/GUI/Tab.cpp:3234 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:209 src/slic3r/GUI/Plater.cpp:2354 +#: src/slic3r/GUI/Tab.cpp:3243 msgid "Please check your object list before preset changing." msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:34 src/slic3r/GUI/MainFrame.cpp:897 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:17 src/slic3r/GUI/MainFrame.cpp:894 msgid "Keyboard Shortcuts" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:97 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:69 msgid "New project, clear plater" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:98 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:70 msgid "Open project STL/OBJ/AMF/3MF with config, clear plater" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:99 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:71 msgid "Save project (3mf)" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:100 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:72 msgid "Save project as (3mf)" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:101 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:73 msgid "(Re)slice" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:103 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:75 msgid "Import STL/OBJ/AMF/3MF without config, keep plater" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:104 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:76 msgid "Import Config from ini/amf/3mf/gcode" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:105 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:77 msgid "Load Config from ini/amf/3mf/gcode and merge" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:107 src/slic3r/GUI/Plater.cpp:770 -#: src/slic3r/GUI/Plater.cpp:5985 src/libslic3r/PrintConfig.cpp:3602 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:79 src/slic3r/GUI/Plater.cpp:770 +#: src/slic3r/GUI/Plater.cpp:6007 src/libslic3r/PrintConfig.cpp:3635 msgid "Export G-code" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:108 src/slic3r/GUI/Plater.cpp:5986 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:80 src/slic3r/GUI/Plater.cpp:6008 msgid "Send G-code" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:109 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:81 msgid "Export config" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:110 src/slic3r/GUI/Plater.cpp:758 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:82 src/slic3r/GUI/Plater.cpp:758 msgid "Export to SD card / Flash drive" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:111 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:83 msgid "Eject SD card / Flash drive" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:113 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:85 msgid "Select all objects" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:114 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:86 msgid "Deselect all" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:115 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:87 msgid "Delete selected" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:119 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:91 msgid "Copy to clipboard" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:120 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:92 msgid "Paste from clipboard" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:121 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:94 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:96 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:187 msgid "Reload plater from disk" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:124 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:100 msgid "Select Plater Tab" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:125 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:101 msgid "Select Print Settings Tab" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:126 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:102 msgid "Select Filament Settings Tab" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:127 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:103 msgid "Select Printer Settings Tab" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:128 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:104 msgid "Switch to 3D" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:129 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:105 msgid "Switch to Preview" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:130 -#: src/slic3r/GUI/PrintHostDialogs.cpp:163 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:106 +#: src/slic3r/GUI/PrintHostDialogs.cpp:165 msgid "Print host upload queue" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:132 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:107 src/slic3r/GUI/MainFrame.cpp:65 +#: src/slic3r/GUI/MainFrame.cpp:1191 +msgid "Open new instance" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:109 msgid "Camera view" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:133 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:110 msgid "Show/Hide object/instance labels" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:135 src/slic3r/GUI/Preferences.cpp:12 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:112 src/slic3r/GUI/Preferences.cpp:13 msgid "Preferences" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:137 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:114 msgid "Show keyboard shortcuts list" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:140 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:117 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:191 msgid "Commands" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:145 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:122 msgid "Add Instance of the selected object" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:146 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:123 msgid "Remove Instance of the selected object" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:147 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:124 msgid "" "Press to select multiple objects\n" "or move multiple objects with mouse" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:148 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:125 msgid "Press to activate selection rectangle" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:149 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:126 msgid "Press to activate deselection rectangle" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:150 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:127 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:196 #: src/slic3r/GUI/KBShortcutsDialog.cpp:207 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:218 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:230 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:236 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:241 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:219 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:226 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:243 msgid "Arrow Up" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:150 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:127 msgid "Move selection 10 mm in positive Y direction" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:151 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:128 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:197 #: src/slic3r/GUI/KBShortcutsDialog.cpp:208 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:219 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:231 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:237 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:242 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:220 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:227 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:244 msgid "Arrow Down" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:151 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:128 msgid "Move selection 10 mm in negative Y direction" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:152 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:209 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:232 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:238 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:243 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:255 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:129 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:198 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:221 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:228 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:241 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:246 msgid "Arrow Left" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:152 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:129 msgid "Move selection 10 mm in negative X direction" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:153 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:210 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:233 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:239 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:244 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:256 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:130 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:199 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:222 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:229 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:242 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:247 msgid "Arrow Right" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:153 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:130 msgid "Move selection 10 mm in positive X direction" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:154 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:155 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:131 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:132 msgid "Any arrow" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:154 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:131 msgid "Movement step set to 1 mm" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:155 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:132 msgid "Movement in camera space" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:156 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:133 msgid "Page Up" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:156 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:133 msgid "Rotate selection 45 degrees CCW" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:157 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:134 msgid "Page Down" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:157 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:134 msgid "Rotate selection 45 degrees CW" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:158 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:135 msgid "Gizmo move" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:159 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:136 msgid "Gizmo scale" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:160 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:137 msgid "Gizmo rotate" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:161 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:138 msgid "Gizmo cut" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:162 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:139 msgid "Gizmo Place face on bed" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:163 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:140 msgid "Gizmo SLA hollow" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:141 msgid "Gizmo SLA support points" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:142 msgid "Unselect gizmo or clear selection" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:166 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:143 msgid "Change camera type (perspective, orthographic)" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:167 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:144 msgid "Zoom to Bed" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:168 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:145 msgid "" "Zoom to selected object\n" "or all objects in scene, if none selected" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:169 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:146 msgid "Zoom in" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:170 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:147 msgid "Zoom out" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:171 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:148 msgid "Switch between Editor/Preview" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:172 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:149 msgid "Collapse/Expand the sidebar" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:175 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:152 msgid "Show/Hide 3Dconnexion devices settings dialog, if enabled" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:177 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:181 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:154 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:158 msgid "Show/Hide 3Dconnexion devices settings dialog" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:190 src/slic3r/GUI/MainFrame.cpp:327 -#: src/slic3r/GUI/MainFrame.cpp:339 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:167 src/slic3r/GUI/MainFrame.cpp:331 +#: src/slic3r/GUI/MainFrame.cpp:343 msgid "Plater" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:193 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:170 msgid "All gizmos: Rotate - left mouse button; Pan - right mouse button" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:194 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:171 msgid "Gizmo move: Press to snap by 1mm" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:195 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:172 msgid "Gizmo scale: Press to snap by 5%" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:196 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:173 msgid "Gizmo scale: Scale selection to fit print volume" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:197 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:174 msgid "Gizmo scale: Press to activate one direction scaling" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:198 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:175 msgid "Gizmo scale: Press to scale selected objects around their own center" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:199 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:176 msgid "Gizmo rotate: Press to rotate selected objects around their own center" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:202 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:179 msgid "Gizmos" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:211 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:230 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:179 +msgid "" +"The following shortcuts are applicable when the specified gizmo is active" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:183 src/slic3r/GUI/MainFrame.cpp:1244 +msgid "Open a G-code file" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:185 src/slic3r/GUI/MainFrame.cpp:1142 +#: src/slic3r/GUI/MainFrame.cpp:1146 src/slic3r/GUI/MainFrame.cpp:1249 +#: src/slic3r/GUI/MainFrame.cpp:1253 +msgid "Reload the plater from disk" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:196 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:200 msgid "Vertical slider - Move active thumb Up" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:208 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:212 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:231 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:197 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:201 msgid "Vertical slider - Move active thumb Down" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:209 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:213 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:238 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:198 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:202 msgid "Horizontal slider - Move active thumb Left" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:210 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:214 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:239 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:199 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:203 msgid "Horizontal slider - Move active thumb Right" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:215 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:204 msgid "On/Off one layer mode of the vertical slider" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 msgid "Show/Hide Legend and Estimated printing time" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:218 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 msgid "Upper layer" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:219 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:208 msgid "Lower layer" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:220 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:209 msgid "Upper Layer" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:221 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:210 msgid "Lower Layer" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:222 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:211 msgid "Show/Hide Legend & Estimated printing time" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:226 src/slic3r/GUI/Plater.cpp:4135 -#: src/slic3r/GUI/Tab.cpp:2598 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:215 src/slic3r/GUI/Plater.cpp:4152 +#: src/slic3r/GUI/Tab.cpp:2602 msgid "Preview" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:232 -msgid "Vertical slider - Set upper thumb as active" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:219 +msgid "Move active thumb Up" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:233 -msgid "Vertical slider - Set lower thumb as active" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:220 +msgid "Move active thumb Down" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:234 -msgid "Vertical slider - Add color change marker for current layer" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:221 +msgid "Set upper thumb as active" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:235 -msgid "Vertical slider - Delete color change marker for current layer" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:222 +msgid "Set lower thumb as active" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:236 -msgid "Horizontal slider - Set left thumb as active" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:237 -msgid "Horizontal slider - Set right thumb as active" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:241 -msgid "Move current slider thumb Up" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:242 -msgid "Move current slider thumb Down" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:243 -msgid "Set upper thumb to current slider thumb" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:244 -msgid "Set lower thumb to current slider thumb" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:245 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:223 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:230 msgid "Add color change marker for current layer" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:246 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:224 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:231 msgid "Delete color change marker for current layer" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:248 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:226 +msgid "Move current slider thumb Up" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:227 +msgid "Move current slider thumb Down" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:228 +msgid "Set upper thumb to current slider thumb" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:229 +msgid "Set lower thumb to current slider thumb" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:233 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:234 #: src/slic3r/GUI/KBShortcutsDialog.cpp:249 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:257 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:258 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:250 msgid "" "Press to speed up 5 times while moving thumb\n" "with arrow keys or mouse wheel" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:252 -msgid "Layers Slider" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:237 +msgid "Vertical Slider" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:255 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:237 +msgid "" +"The following shortcuts are applicable in G-code preview when the vertical " +"slider is active" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:241 +msgid "Move active thumb Left" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:242 +msgid "Move active thumb Right" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:243 +msgid "Set left thumb as active" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:244 +msgid "Set right thumb as active" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:246 msgid "Move active slider thumb Left" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:256 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:247 msgid "Move active slider thumb Right" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:261 -msgid "Sequential Slider" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:253 +msgid "Horizontal Slider" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:284 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:253 +msgid "" +"The following shortcuts are applicable in G-code preview when the horizontal " +"slider is active" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:276 msgid "Keyboard shortcuts" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:66 src/slic3r/GUI/MainFrame.cpp:1188 -msgid "Open new instance" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:66 src/slic3r/GUI/MainFrame.cpp:80 -#: src/slic3r/GUI/MainFrame.cpp:1188 +#: src/slic3r/GUI/MainFrame.cpp:65 src/slic3r/GUI/MainFrame.cpp:79 +#: src/slic3r/GUI/MainFrame.cpp:1191 msgid "Open a new PrusaSlicer instance" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:69 src/slic3r/GUI/MainFrame.cpp:82 +#: src/slic3r/GUI/MainFrame.cpp:68 src/slic3r/GUI/MainFrame.cpp:81 msgid "G-code preview" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:69 src/slic3r/GUI/MainFrame.cpp:1094 +#: src/slic3r/GUI/MainFrame.cpp:68 src/slic3r/GUI/MainFrame.cpp:1091 msgid "Open G-code viewer" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:80 src/slic3r/GUI/MainFrame.cpp:1252 +#: src/slic3r/GUI/MainFrame.cpp:79 src/slic3r/GUI/MainFrame.cpp:1260 msgid "Open PrusaSlicer" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:82 +#: src/slic3r/GUI/MainFrame.cpp:81 msgid "Open new G-code viewer" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:154 +#: src/slic3r/GUI/MainFrame.cpp:153 msgid "" "Remember to check for updates at https://github.com/prusa3d/PrusaSlicer/" "releases" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:506 +#: src/slic3r/GUI/MainFrame.cpp:510 msgid "based on Slic3r" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:869 +#: src/slic3r/GUI/MainFrame.cpp:866 msgid "Prusa 3D &Drivers" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:869 +#: src/slic3r/GUI/MainFrame.cpp:866 msgid "Open the Prusa3D drivers download page in your browser" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:871 +#: src/slic3r/GUI/MainFrame.cpp:868 msgid "Software &Releases" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:871 +#: src/slic3r/GUI/MainFrame.cpp:868 msgid "Open the software releases page in your browser" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:877 +#: src/slic3r/GUI/MainFrame.cpp:874 #, possible-c-format msgid "%s &Website" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:878 +#: src/slic3r/GUI/MainFrame.cpp:875 #, possible-c-format msgid "Open the %s website in your browser" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:884 +#: src/slic3r/GUI/MainFrame.cpp:881 msgid "System &Info" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:884 +#: src/slic3r/GUI/MainFrame.cpp:881 msgid "Show system information" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:886 +#: src/slic3r/GUI/MainFrame.cpp:883 msgid "Show &Configuration Folder" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:886 +#: src/slic3r/GUI/MainFrame.cpp:883 msgid "Show user configuration folder (datadir)" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:888 +#: src/slic3r/GUI/MainFrame.cpp:885 msgid "Report an I&ssue" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:888 +#: src/slic3r/GUI/MainFrame.cpp:885 #, possible-c-format msgid "Report an issue on %s" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:891 src/slic3r/GUI/MainFrame.cpp:894 +#: src/slic3r/GUI/MainFrame.cpp:888 src/slic3r/GUI/MainFrame.cpp:891 #, possible-c-format msgid "&About %s" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:891 src/slic3r/GUI/MainFrame.cpp:894 +#: src/slic3r/GUI/MainFrame.cpp:888 src/slic3r/GUI/MainFrame.cpp:891 msgid "Show about dialog" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:897 +#: src/slic3r/GUI/MainFrame.cpp:894 msgid "Show the list of the keyboard shortcuts" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:911 +#: src/slic3r/GUI/MainFrame.cpp:908 msgid "Iso" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:911 +#: src/slic3r/GUI/MainFrame.cpp:908 msgid "Iso View" msgstr "" #. TRN To be shown in the main menu View->Top #. TRN To be shown in Print Settings "Top solid layers" -#: src/slic3r/GUI/MainFrame.cpp:915 src/libslic3r/PrintConfig.cpp:2330 -#: src/libslic3r/PrintConfig.cpp:2339 +#: src/slic3r/GUI/MainFrame.cpp:912 src/libslic3r/PrintConfig.cpp:2360 +#: src/libslic3r/PrintConfig.cpp:2369 msgid "Top" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:915 +#: src/slic3r/GUI/MainFrame.cpp:912 msgid "Top View" msgstr "" #. TRN To be shown in the main menu View->Bottom #. TRN To be shown in Print Settings "Bottom solid layers" #. TRN To be shown in Print Settings "Top solid layers" -#: src/slic3r/GUI/MainFrame.cpp:918 src/libslic3r/PrintConfig.cpp:217 -#: src/libslic3r/PrintConfig.cpp:226 +#: src/slic3r/GUI/MainFrame.cpp:915 src/libslic3r/PrintConfig.cpp:230 +#: src/libslic3r/PrintConfig.cpp:239 msgid "Bottom" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:918 +#: src/slic3r/GUI/MainFrame.cpp:915 msgid "Bottom View" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:920 +#: src/slic3r/GUI/MainFrame.cpp:917 msgid "Front" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:920 +#: src/slic3r/GUI/MainFrame.cpp:917 msgid "Front View" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:922 src/libslic3r/PrintConfig.cpp:1815 +#: src/slic3r/GUI/MainFrame.cpp:919 src/libslic3r/PrintConfig.cpp:1845 msgid "Rear" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:922 +#: src/slic3r/GUI/MainFrame.cpp:919 msgid "Rear View" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:924 +#: src/slic3r/GUI/MainFrame.cpp:921 msgid "Left" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:924 +#: src/slic3r/GUI/MainFrame.cpp:921 msgid "Left View" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:926 +#: src/slic3r/GUI/MainFrame.cpp:923 msgid "Right" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:926 +#: src/slic3r/GUI/MainFrame.cpp:923 msgid "Right View" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:939 +#: src/slic3r/GUI/MainFrame.cpp:936 msgid "&New Project" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:939 +#: src/slic3r/GUI/MainFrame.cpp:936 msgid "Start a new project" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:942 +#: src/slic3r/GUI/MainFrame.cpp:939 msgid "&Open Project" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:942 +#: src/slic3r/GUI/MainFrame.cpp:939 msgid "Open a project file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:947 +#: src/slic3r/GUI/MainFrame.cpp:944 msgid "Recent projects" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:956 +#: src/slic3r/GUI/MainFrame.cpp:953 msgid "" "The selected project is no longer available.\n" "Do you want to remove it from the recent projects list?" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:956 src/slic3r/GUI/MainFrame.cpp:1335 -#: src/slic3r/GUI/PrintHostDialogs.cpp:259 +#: src/slic3r/GUI/MainFrame.cpp:953 src/slic3r/GUI/MainFrame.cpp:1343 +#: src/slic3r/GUI/PrintHostDialogs.cpp:263 msgid "Error" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:981 +#: src/slic3r/GUI/MainFrame.cpp:978 msgid "&Save Project" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:981 +#: src/slic3r/GUI/MainFrame.cpp:978 msgid "Save current project file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:985 src/slic3r/GUI/MainFrame.cpp:987 +#: src/slic3r/GUI/MainFrame.cpp:982 src/slic3r/GUI/MainFrame.cpp:984 msgid "Save Project &as" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:985 src/slic3r/GUI/MainFrame.cpp:987 +#: src/slic3r/GUI/MainFrame.cpp:982 src/slic3r/GUI/MainFrame.cpp:984 msgid "Save current project file as" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:995 +#: src/slic3r/GUI/MainFrame.cpp:992 msgid "Import STL/OBJ/AM&F/3MF" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:995 +#: src/slic3r/GUI/MainFrame.cpp:992 msgid "Load a model" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:999 +#: src/slic3r/GUI/MainFrame.cpp:996 msgid "Import STL (imperial units)" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:999 +#: src/slic3r/GUI/MainFrame.cpp:996 msgid "Load an model saved with imperial units" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1003 +#: src/slic3r/GUI/MainFrame.cpp:1000 msgid "Import SL1 archive" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1003 +#: src/slic3r/GUI/MainFrame.cpp:1000 msgid "Load an SL1 archive" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1008 +#: src/slic3r/GUI/MainFrame.cpp:1005 msgid "Import &Config" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1008 +#: src/slic3r/GUI/MainFrame.cpp:1005 msgid "Load exported configuration file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1011 +#: src/slic3r/GUI/MainFrame.cpp:1008 msgid "Import Config from &project" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1011 +#: src/slic3r/GUI/MainFrame.cpp:1008 msgid "Load configuration from project file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1015 +#: src/slic3r/GUI/MainFrame.cpp:1012 msgid "Import Config &Bundle" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1015 +#: src/slic3r/GUI/MainFrame.cpp:1012 msgid "Load presets from a bundle" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1018 +#: src/slic3r/GUI/MainFrame.cpp:1015 msgid "&Import" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1021 src/slic3r/GUI/MainFrame.cpp:1297 +#: src/slic3r/GUI/MainFrame.cpp:1018 src/slic3r/GUI/MainFrame.cpp:1305 msgid "Export &G-code" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1021 +#: src/slic3r/GUI/MainFrame.cpp:1018 msgid "Export current plate as G-code" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1025 src/slic3r/GUI/MainFrame.cpp:1298 +#: src/slic3r/GUI/MainFrame.cpp:1022 src/slic3r/GUI/MainFrame.cpp:1306 msgid "S&end G-code" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1025 +#: src/slic3r/GUI/MainFrame.cpp:1022 msgid "Send to print current plate as G-code" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1029 +#: src/slic3r/GUI/MainFrame.cpp:1026 msgid "Export G-code to SD card / Flash drive" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1029 +#: src/slic3r/GUI/MainFrame.cpp:1026 msgid "Export current plate as G-code to SD card / Flash drive" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1033 +#: src/slic3r/GUI/MainFrame.cpp:1030 msgid "Export plate as &STL" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1033 +#: src/slic3r/GUI/MainFrame.cpp:1030 msgid "Export current plate as STL" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1036 +#: src/slic3r/GUI/MainFrame.cpp:1033 msgid "Export plate as STL &including supports" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1036 +#: src/slic3r/GUI/MainFrame.cpp:1033 msgid "Export current plate as STL including supports" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1039 +#: src/slic3r/GUI/MainFrame.cpp:1036 msgid "Export plate as &AMF" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1039 +#: src/slic3r/GUI/MainFrame.cpp:1036 msgid "Export current plate as AMF" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1043 src/slic3r/GUI/MainFrame.cpp:1249 +#: src/slic3r/GUI/MainFrame.cpp:1040 src/slic3r/GUI/MainFrame.cpp:1257 msgid "Export &toolpaths as OBJ" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1043 src/slic3r/GUI/MainFrame.cpp:1249 +#: src/slic3r/GUI/MainFrame.cpp:1040 src/slic3r/GUI/MainFrame.cpp:1257 msgid "Export toolpaths as OBJ" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1047 +#: src/slic3r/GUI/MainFrame.cpp:1044 msgid "Export &Config" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1047 +#: src/slic3r/GUI/MainFrame.cpp:1044 msgid "Export current configuration to file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1050 +#: src/slic3r/GUI/MainFrame.cpp:1047 msgid "Export Config &Bundle" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1050 +#: src/slic3r/GUI/MainFrame.cpp:1047 msgid "Export all presets to file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1053 +#: src/slic3r/GUI/MainFrame.cpp:1050 msgid "Export Config Bundle With Physical Printers" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1053 +#: src/slic3r/GUI/MainFrame.cpp:1050 msgid "Export all presets including physical printers to file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1056 +#: src/slic3r/GUI/MainFrame.cpp:1053 msgid "&Export" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1058 +#: src/slic3r/GUI/MainFrame.cpp:1055 msgid "Ejec&t SD card / Flash drive" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1058 +#: src/slic3r/GUI/MainFrame.cpp:1055 msgid "Eject SD card / Flash drive after the G-code was exported to it." msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1066 +#: src/slic3r/GUI/MainFrame.cpp:1063 msgid "Quick Slice" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1066 +#: src/slic3r/GUI/MainFrame.cpp:1063 msgid "Slice a file into a G-code" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1072 +#: src/slic3r/GUI/MainFrame.cpp:1069 msgid "Quick Slice and Save As" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1072 +#: src/slic3r/GUI/MainFrame.cpp:1069 msgid "Slice a file into a G-code, save as" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1078 +#: src/slic3r/GUI/MainFrame.cpp:1075 msgid "Repeat Last Quick Slice" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1078 +#: src/slic3r/GUI/MainFrame.cpp:1075 msgid "Repeat last quick slice" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1086 +#: src/slic3r/GUI/MainFrame.cpp:1083 msgid "(Re)Slice No&w" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1086 +#: src/slic3r/GUI/MainFrame.cpp:1083 msgid "Start new slicing process" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1090 +#: src/slic3r/GUI/MainFrame.cpp:1087 msgid "&Repair STL file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1090 +#: src/slic3r/GUI/MainFrame.cpp:1087 msgid "Automatically repair an STL file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1094 +#: src/slic3r/GUI/MainFrame.cpp:1091 msgid "&G-code preview" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1097 src/slic3r/GUI/MainFrame.cpp:1256 +#: src/slic3r/GUI/MainFrame.cpp:1094 src/slic3r/GUI/MainFrame.cpp:1264 msgid "&Quit" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1097 src/slic3r/GUI/MainFrame.cpp:1256 +#: src/slic3r/GUI/MainFrame.cpp:1094 src/slic3r/GUI/MainFrame.cpp:1264 #, possible-c-format msgid "Quit %s" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1112 +#: src/slic3r/GUI/MainFrame.cpp:1109 msgid "&Select all" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1113 +#: src/slic3r/GUI/MainFrame.cpp:1110 msgid "Selects all objects" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1115 +#: src/slic3r/GUI/MainFrame.cpp:1112 msgid "D&eselect all" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1116 +#: src/slic3r/GUI/MainFrame.cpp:1113 msgid "Deselects all objects" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1119 +#: src/slic3r/GUI/MainFrame.cpp:1116 msgid "&Delete selected" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1120 +#: src/slic3r/GUI/MainFrame.cpp:1117 msgid "Deletes the current selection" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1122 +#: src/slic3r/GUI/MainFrame.cpp:1119 msgid "Delete &all" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1123 +#: src/slic3r/GUI/MainFrame.cpp:1120 msgid "Deletes all objects" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1127 +#: src/slic3r/GUI/MainFrame.cpp:1124 msgid "&Undo" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1130 +#: src/slic3r/GUI/MainFrame.cpp:1127 msgid "&Redo" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1135 +#: src/slic3r/GUI/MainFrame.cpp:1132 msgid "&Copy" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1136 +#: src/slic3r/GUI/MainFrame.cpp:1133 msgid "Copy selection to clipboard" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1138 +#: src/slic3r/GUI/MainFrame.cpp:1135 msgid "&Paste" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1139 +#: src/slic3r/GUI/MainFrame.cpp:1136 msgid "Paste clipboard" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1143 src/slic3r/GUI/MainFrame.cpp:1245 +#: src/slic3r/GUI/MainFrame.cpp:1141 src/slic3r/GUI/MainFrame.cpp:1145 +#: src/slic3r/GUI/MainFrame.cpp:1248 src/slic3r/GUI/MainFrame.cpp:1252 msgid "Re&load from disk" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1144 src/slic3r/GUI/MainFrame.cpp:1246 -msgid "Reload the plater from disk" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:1148 +#: src/slic3r/GUI/MainFrame.cpp:1151 msgid "Searc&h" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1149 +#: src/slic3r/GUI/MainFrame.cpp:1152 msgid "Search in settings" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1157 +#: src/slic3r/GUI/MainFrame.cpp:1160 msgid "&Plater Tab" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1157 +#: src/slic3r/GUI/MainFrame.cpp:1160 msgid "Show the plater" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1162 +#: src/slic3r/GUI/MainFrame.cpp:1165 msgid "P&rint Settings Tab" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1162 +#: src/slic3r/GUI/MainFrame.cpp:1165 msgid "Show the print settings" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1165 src/slic3r/GUI/MainFrame.cpp:1300 +#: src/slic3r/GUI/MainFrame.cpp:1168 src/slic3r/GUI/MainFrame.cpp:1308 msgid "&Filament Settings Tab" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1165 +#: src/slic3r/GUI/MainFrame.cpp:1168 msgid "Show the filament settings" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1169 +#: src/slic3r/GUI/MainFrame.cpp:1172 msgid "Print&er Settings Tab" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1169 +#: src/slic3r/GUI/MainFrame.cpp:1172 msgid "Show the printer settings" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1175 +#: src/slic3r/GUI/MainFrame.cpp:1178 msgid "3&D" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1175 +#: src/slic3r/GUI/MainFrame.cpp:1178 msgid "Show the 3D editing view" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1178 +#: src/slic3r/GUI/MainFrame.cpp:1181 msgid "Pre&view" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1178 +#: src/slic3r/GUI/MainFrame.cpp:1181 msgid "Show the 3D slices preview" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1184 +#: src/slic3r/GUI/MainFrame.cpp:1187 msgid "Print &Host Upload Queue" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1184 +#: src/slic3r/GUI/MainFrame.cpp:1187 msgid "Display the Print Host Upload Queue window" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1199 +#: src/slic3r/GUI/MainFrame.cpp:1201 msgid "Show &labels" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1199 +#: src/slic3r/GUI/MainFrame.cpp:1201 msgid "Show object/instance labels in 3D scene" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1202 +#: src/slic3r/GUI/MainFrame.cpp:1204 msgid "&Collapse sidebar" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1202 src/slic3r/GUI/Plater.cpp:2234 +#: src/slic3r/GUI/MainFrame.cpp:1204 src/slic3r/GUI/Plater.cpp:2243 msgid "Collapse sidebar" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1214 src/slic3r/GUI/MainFrame.cpp:1271 +#: src/slic3r/GUI/MainFrame.cpp:1216 src/slic3r/GUI/MainFrame.cpp:1279 msgid "&File" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1215 +#: src/slic3r/GUI/MainFrame.cpp:1217 msgid "&Edit" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1216 +#: src/slic3r/GUI/MainFrame.cpp:1218 msgid "&Window" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1217 src/slic3r/GUI/MainFrame.cpp:1272 +#: src/slic3r/GUI/MainFrame.cpp:1219 src/slic3r/GUI/MainFrame.cpp:1280 msgid "&View" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1220 src/slic3r/GUI/MainFrame.cpp:1275 +#: src/slic3r/GUI/MainFrame.cpp:1222 src/slic3r/GUI/MainFrame.cpp:1283 msgid "&Help" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1242 +#: src/slic3r/GUI/MainFrame.cpp:1244 msgid "&Open G-code" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1242 -msgid "Open a G-code file" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:1252 +#: src/slic3r/GUI/MainFrame.cpp:1260 msgid "Open &PrusaSlicer" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1297 +#: src/slic3r/GUI/MainFrame.cpp:1305 msgid "E&xport" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1298 +#: src/slic3r/GUI/MainFrame.cpp:1306 msgid "S&end to print" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1300 +#: src/slic3r/GUI/MainFrame.cpp:1308 msgid "Mate&rial Settings Tab" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1323 +#: src/slic3r/GUI/MainFrame.cpp:1331 msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1334 +#: src/slic3r/GUI/MainFrame.cpp:1342 msgid "No previously sliced file." msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1340 +#: src/slic3r/GUI/MainFrame.cpp:1348 msgid "Previously sliced file (" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1340 +#: src/slic3r/GUI/MainFrame.cpp:1348 msgid ") not found." msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1341 +#: src/slic3r/GUI/MainFrame.cpp:1349 msgid "File Not Found" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1376 +#: src/slic3r/GUI/MainFrame.cpp:1384 #, possible-c-format msgid "Save %s file as:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1376 +#: src/slic3r/GUI/MainFrame.cpp:1384 msgid "SVG" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1376 +#: src/slic3r/GUI/MainFrame.cpp:1384 msgid "G-code" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1388 +#: src/slic3r/GUI/MainFrame.cpp:1396 msgid "Save zip file as:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1397 src/slic3r/GUI/Plater.cpp:2994 -#: src/slic3r/GUI/Plater.cpp:5517 src/slic3r/GUI/Tab.cpp:1577 -#: src/slic3r/GUI/Tab.cpp:4106 +#: src/slic3r/GUI/MainFrame.cpp:1405 src/slic3r/GUI/Plater.cpp:3005 +#: src/slic3r/GUI/Plater.cpp:5534 src/slic3r/GUI/Tab.cpp:1575 +#: src/slic3r/GUI/Tab.cpp:4115 msgid "Slicing" msgstr "" #. TRN "Processing input_file_basename" -#: src/slic3r/GUI/MainFrame.cpp:1399 +#: src/slic3r/GUI/MainFrame.cpp:1407 #, possible-c-format msgid "Processing %s" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1422 +#: src/slic3r/GUI/MainFrame.cpp:1430 msgid "%1% was successfully sliced." msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1424 +#: src/slic3r/GUI/MainFrame.cpp:1432 msgid "Slicing Done!" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1439 +#: src/slic3r/GUI/MainFrame.cpp:1447 msgid "Select the STL file to repair:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1449 +#: src/slic3r/GUI/MainFrame.cpp:1457 msgid "Save OBJ file (less prone to coordinate errors than STL) as:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1461 +#: src/slic3r/GUI/MainFrame.cpp:1469 msgid "Your file was repaired." msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1461 src/libslic3r/PrintConfig.cpp:3702 +#: src/slic3r/GUI/MainFrame.cpp:1469 src/libslic3r/PrintConfig.cpp:3735 msgid "Repair" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1475 +#: src/slic3r/GUI/MainFrame.cpp:1483 msgid "Save configuration as:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1494 src/slic3r/GUI/MainFrame.cpp:1556 +#: src/slic3r/GUI/MainFrame.cpp:1502 src/slic3r/GUI/MainFrame.cpp:1564 msgid "Select configuration to load:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1530 +#: src/slic3r/GUI/MainFrame.cpp:1538 msgid "Save presets bundle as:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1577 +#: src/slic3r/GUI/MainFrame.cpp:1585 #, possible-c-format msgid "%d presets successfully imported." msgstr "" -#: src/slic3r/GUI/Mouse3DController.cpp:462 +#: src/slic3r/GUI/Mouse3DController.cpp:461 msgid "3Dconnexion settings" msgstr "" -#: src/slic3r/GUI/Mouse3DController.cpp:473 +#: src/slic3r/GUI/Mouse3DController.cpp:472 msgid "Device:" msgstr "" -#: src/slic3r/GUI/Mouse3DController.cpp:478 +#: src/slic3r/GUI/Mouse3DController.cpp:477 msgid "Speed:" msgstr "" -#: src/slic3r/GUI/Mouse3DController.cpp:481 -#: src/slic3r/GUI/Mouse3DController.cpp:502 +#: src/slic3r/GUI/Mouse3DController.cpp:480 +#: src/slic3r/GUI/Mouse3DController.cpp:501 msgid "Translation" msgstr "" -#: src/slic3r/GUI/Mouse3DController.cpp:493 -#: src/slic3r/GUI/Mouse3DController.cpp:502 +#: src/slic3r/GUI/Mouse3DController.cpp:492 +#: src/slic3r/GUI/Mouse3DController.cpp:501 msgid "Zoom" msgstr "" -#: src/slic3r/GUI/Mouse3DController.cpp:499 +#: src/slic3r/GUI/Mouse3DController.cpp:498 msgid "Deadzone:" msgstr "" -#: src/slic3r/GUI/Mouse3DController.cpp:514 +#: src/slic3r/GUI/Mouse3DController.cpp:513 msgid "Options:" msgstr "" -#: src/slic3r/GUI/Mouse3DController.cpp:517 +#: src/slic3r/GUI/Mouse3DController.cpp:516 msgid "Swap Y/Z axes" msgstr "" @@ -4874,61 +4954,68 @@ msgstr "" msgid "%s has encountered an error" msgstr "" -#: src/slic3r/GUI/NotificationManager.hpp:398 +#: src/slic3r/GUI/NotificationManager.hpp:451 msgid "3D Mouse disconnected." msgstr "" -#: src/slic3r/GUI/NotificationManager.hpp:401 +#: src/slic3r/GUI/NotificationManager.hpp:454 msgid "Configuration update is available." msgstr "" -#: src/slic3r/GUI/NotificationManager.hpp:401 +#: src/slic3r/GUI/NotificationManager.hpp:454 msgid "See more." msgstr "" -#: src/slic3r/GUI/NotificationManager.hpp:403 +#: src/slic3r/GUI/NotificationManager.hpp:456 msgid "New version is available." msgstr "" -#: src/slic3r/GUI/NotificationManager.hpp:403 +#: src/slic3r/GUI/NotificationManager.hpp:456 msgid "See Releases page." msgstr "" -#: src/slic3r/GUI/NotificationManager.cpp:387 -#: src/slic3r/GUI/NotificationManager.cpp:397 +#: src/slic3r/GUI/NotificationManager.hpp:459 +msgid "" +"You have just added a G-code for color change, but its value is empty.\n" +"To export the G-code correctly, check the \"Color Change G-code\" in " +"\"Printer Settings > Custom G-code\"" +msgstr "" + +#: src/slic3r/GUI/NotificationManager.cpp:483 +#: src/slic3r/GUI/NotificationManager.cpp:493 msgid "More" msgstr "" -#: src/slic3r/GUI/NotificationManager.cpp:690 -#: src/slic3r/GUI/NotificationManager.cpp:961 +#: src/slic3r/GUI/NotificationManager.cpp:840 +#: src/slic3r/GUI/NotificationManager.cpp:1111 msgid "Export G-Code." msgstr "" -#: src/slic3r/GUI/NotificationManager.cpp:734 +#: src/slic3r/GUI/NotificationManager.cpp:884 msgid "Open Folder." msgstr "" -#: src/slic3r/GUI/NotificationManager.cpp:772 +#: src/slic3r/GUI/NotificationManager.cpp:922 msgid "Eject drive" msgstr "" -#: src/slic3r/GUI/NotificationManager.cpp:880 -#: src/slic3r/GUI/NotificationManager.cpp:896 -#: src/slic3r/GUI/NotificationManager.cpp:907 +#: src/slic3r/GUI/NotificationManager.cpp:1030 +#: src/slic3r/GUI/NotificationManager.cpp:1046 +#: src/slic3r/GUI/NotificationManager.cpp:1057 msgid "ERROR:" msgstr "" -#: src/slic3r/GUI/NotificationManager.cpp:885 -#: src/slic3r/GUI/NotificationManager.cpp:900 -#: src/slic3r/GUI/NotificationManager.cpp:915 +#: src/slic3r/GUI/NotificationManager.cpp:1035 +#: src/slic3r/GUI/NotificationManager.cpp:1050 +#: src/slic3r/GUI/NotificationManager.cpp:1065 msgid "WARNING:" msgstr "" -#: src/slic3r/GUI/NotificationManager.cpp:964 +#: src/slic3r/GUI/NotificationManager.cpp:1114 msgid "Slicing finished." msgstr "" -#: src/slic3r/GUI/NotificationManager.cpp:1007 +#: src/slic3r/GUI/NotificationManager.cpp:1156 msgid "Exporting finished." msgstr "" @@ -4942,8 +5029,8 @@ msgstr "" msgid "Instance %d" msgstr "" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:69 src/slic3r/GUI/Tab.cpp:3953 -#: src/slic3r/GUI/Tab.cpp:4035 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:69 src/slic3r/GUI/Tab.cpp:3962 +#: src/slic3r/GUI/Tab.cpp:4044 msgid "Layers" msgstr "" @@ -4983,12 +5070,12 @@ msgstr "" msgid "Error loading shaders" msgstr "" -#: src/slic3r/GUI/OptionsGroup.cpp:333 +#: src/slic3r/GUI/OptionsGroup.cpp:335 msgctxt "Layers" msgid "Top" msgstr "" -#: src/slic3r/GUI/OptionsGroup.cpp:333 +#: src/slic3r/GUI/OptionsGroup.cpp:335 msgctxt "Layers" msgid "Bottom" msgstr "" @@ -5017,7 +5104,7 @@ msgstr "" msgid "Add preset for this printer device" msgstr "" -#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:205 src/slic3r/GUI/Tab.cpp:2065 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:205 src/slic3r/GUI/Tab.cpp:2064 msgid "Print Host upload" msgstr "" @@ -5056,7 +5143,7 @@ msgid "Open CA certificate file" msgstr "" #: src/slic3r/GUI/PhysicalPrinterDialog.cpp:395 -#: src/libslic3r/PrintConfig.cpp:122 +#: src/libslic3r/PrintConfig.cpp:124 msgid "HTTPS CA File" msgstr "" @@ -5147,8 +5234,8 @@ msgstr "" msgid "Select what kind of support do you need" msgstr "" -#: src/slic3r/GUI/Plater.cpp:362 src/libslic3r/PrintConfig.cpp:2098 -#: src/libslic3r/PrintConfig.cpp:2893 +#: src/slic3r/GUI/Plater.cpp:362 src/libslic3r/PrintConfig.cpp:2128 +#: src/libslic3r/PrintConfig.cpp:2923 msgid "Support on build plate only" msgstr "" @@ -5160,7 +5247,7 @@ msgstr "" msgid "Everywhere" msgstr "" -#: src/slic3r/GUI/Plater.cpp:396 src/slic3r/GUI/Tab.cpp:1471 +#: src/slic3r/GUI/Plater.cpp:396 src/slic3r/GUI/Tab.cpp:1469 msgid "Brim" msgstr "" @@ -5190,12 +5277,12 @@ msgstr "" msgid "SLA print settings" msgstr "" -#: src/slic3r/GUI/Plater.cpp:756 src/slic3r/GUI/Plater.cpp:5986 +#: src/slic3r/GUI/Plater.cpp:756 src/slic3r/GUI/Plater.cpp:6008 msgid "Send to printer" msgstr "" -#: src/slic3r/GUI/Plater.cpp:771 src/slic3r/GUI/Plater.cpp:2994 -#: src/slic3r/GUI/Plater.cpp:5520 +#: src/slic3r/GUI/Plater.cpp:771 src/slic3r/GUI/Plater.cpp:3005 +#: src/slic3r/GUI/Plater.cpp:5537 msgid "Slice now" msgstr "" @@ -5260,8 +5347,8 @@ msgstr "" msgid "(including spool)" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1204 src/libslic3r/PrintConfig.cpp:807 -#: src/libslic3r/PrintConfig.cpp:2708 src/libslic3r/PrintConfig.cpp:2709 +#: src/slic3r/GUI/Plater.cpp:1204 src/libslic3r/PrintConfig.cpp:822 +#: src/libslic3r/PrintConfig.cpp:2738 src/libslic3r/PrintConfig.cpp:2739 msgid "Cost" msgstr "" @@ -5273,492 +5360,492 @@ msgstr "" msgid "stealth mode" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1400 src/slic3r/GUI/Plater.cpp:4859 +#: src/slic3r/GUI/Plater.cpp:1403 src/slic3r/GUI/Plater.cpp:4876 #, possible-c-format msgid "%s - Drop project file" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1407 src/slic3r/GUI/Plater.cpp:4866 +#: src/slic3r/GUI/Plater.cpp:1410 src/slic3r/GUI/Plater.cpp:4883 msgid "Open as project" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1408 src/slic3r/GUI/Plater.cpp:4867 +#: src/slic3r/GUI/Plater.cpp:1411 src/slic3r/GUI/Plater.cpp:4884 msgid "Import geometry only" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1409 src/slic3r/GUI/Plater.cpp:4868 +#: src/slic3r/GUI/Plater.cpp:1412 src/slic3r/GUI/Plater.cpp:4885 msgid "Import config only" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1412 src/slic3r/GUI/Plater.cpp:4871 +#: src/slic3r/GUI/Plater.cpp:1415 src/slic3r/GUI/Plater.cpp:4888 msgid "Select an action to apply to the file" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1413 src/slic3r/GUI/Plater.cpp:4872 +#: src/slic3r/GUI/Plater.cpp:1416 src/slic3r/GUI/Plater.cpp:4889 msgid "Action" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1421 src/slic3r/GUI/Plater.cpp:4880 +#: src/slic3r/GUI/Plater.cpp:1424 src/slic3r/GUI/Plater.cpp:4897 msgid "Don't show again" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1466 src/slic3r/GUI/Plater.cpp:4917 +#: src/slic3r/GUI/Plater.cpp:1469 src/slic3r/GUI/Plater.cpp:4934 msgid "You can open only one .gcode file at a time." msgstr "" -#: src/slic3r/GUI/Plater.cpp:1467 src/slic3r/GUI/Plater.cpp:4918 +#: src/slic3r/GUI/Plater.cpp:1470 src/slic3r/GUI/Plater.cpp:4935 msgid "Drag and drop G-code file" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1521 src/slic3r/GUI/Plater.cpp:4731 -#: src/slic3r/GUI/Plater.cpp:4972 +#: src/slic3r/GUI/Plater.cpp:1524 src/slic3r/GUI/Plater.cpp:4748 +#: src/slic3r/GUI/Plater.cpp:4989 msgid "Import Object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1543 src/slic3r/GUI/Plater.cpp:4994 +#: src/slic3r/GUI/Plater.cpp:1546 src/slic3r/GUI/Plater.cpp:5011 msgid "Load File" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1548 src/slic3r/GUI/Plater.cpp:4999 +#: src/slic3r/GUI/Plater.cpp:1551 src/slic3r/GUI/Plater.cpp:5016 msgid "Load Files" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1651 +#: src/slic3r/GUI/Plater.cpp:1654 msgid "Fill bed" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1657 +#: src/slic3r/GUI/Plater.cpp:1660 msgid "Optimize Rotation" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1663 +#: src/slic3r/GUI/Plater.cpp:1666 msgid "Import SLA archive" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2118 +#: src/slic3r/GUI/Plater.cpp:2127 #, possible-c-format msgid "" "Successfully unmounted. The device %s(%s) can now be safely removed from the " "computer." msgstr "" -#: src/slic3r/GUI/Plater.cpp:2121 +#: src/slic3r/GUI/Plater.cpp:2130 #, possible-c-format msgid "Ejecting of device %s(%s) has failed." msgstr "" -#: src/slic3r/GUI/Plater.cpp:2140 +#: src/slic3r/GUI/Plater.cpp:2149 msgid "New Project" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2233 +#: src/slic3r/GUI/Plater.cpp:2242 msgid "Expand sidebar" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2306 +#: src/slic3r/GUI/Plater.cpp:2315 msgid "Loading" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2316 +#: src/slic3r/GUI/Plater.cpp:2325 msgid "Loading file" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2400 +#: src/slic3r/GUI/Plater.cpp:2411 #, possible-c-format msgid "" "Some object(s) in file %s looks like saved in inches.\n" "Should I consider them as a saved in inches and convert them?" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2402 +#: src/slic3r/GUI/Plater.cpp:2413 msgid "The object appears to be saved in inches" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2410 +#: src/slic3r/GUI/Plater.cpp:2421 msgid "" "This file contains several objects positioned at multiple heights.\n" "Instead of considering them as multiple objects, should I consider\n" "this file as a single object having multiple parts?" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2413 src/slic3r/GUI/Plater.cpp:2466 +#: src/slic3r/GUI/Plater.cpp:2424 src/slic3r/GUI/Plater.cpp:2477 msgid "Multi-part object detected" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2420 +#: src/slic3r/GUI/Plater.cpp:2431 msgid "" "This file cannot be loaded in a simple mode. Do you want to switch to an " "advanced mode?" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2421 +#: src/slic3r/GUI/Plater.cpp:2432 msgid "Detected advanced data" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2443 +#: src/slic3r/GUI/Plater.cpp:2454 #, possible-c-format msgid "" "You can't to add the object(s) from %s because of one or some of them " "is(are) multi-part" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2463 +#: src/slic3r/GUI/Plater.cpp:2474 msgid "" "Multiple objects were loaded for a multi-material printer.\n" "Instead of considering them as multiple objects, should I consider\n" "these files to represent a single object having multiple parts?" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2479 +#: src/slic3r/GUI/Plater.cpp:2490 msgid "Loaded" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2581 +#: src/slic3r/GUI/Plater.cpp:2592 msgid "" "Your object appears to be too large, so it was automatically scaled down to " "fit your print bed." msgstr "" -#: src/slic3r/GUI/Plater.cpp:2582 +#: src/slic3r/GUI/Plater.cpp:2593 msgid "Object too large?" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2644 +#: src/slic3r/GUI/Plater.cpp:2655 msgid "Export STL file:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2651 +#: src/slic3r/GUI/Plater.cpp:2662 msgid "Export AMF file:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2657 +#: src/slic3r/GUI/Plater.cpp:2668 msgid "Save file as:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2663 +#: src/slic3r/GUI/Plater.cpp:2674 msgid "Export OBJ file:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2759 +#: src/slic3r/GUI/Plater.cpp:2770 msgid "Delete Object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2770 +#: src/slic3r/GUI/Plater.cpp:2781 msgid "Reset Project" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2842 +#: src/slic3r/GUI/Plater.cpp:2853 msgid "" "The selected object can't be split because it contains more than one volume/" "material." msgstr "" -#: src/slic3r/GUI/Plater.cpp:2853 +#: src/slic3r/GUI/Plater.cpp:2864 msgid "Split to Objects" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2978 src/slic3r/GUI/Plater.cpp:3662 +#: src/slic3r/GUI/Plater.cpp:2989 src/slic3r/GUI/Plater.cpp:3675 msgid "Invalid data" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2988 +#: src/slic3r/GUI/Plater.cpp:2999 msgid "Ready to slice" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3026 src/slic3r/GUI/PrintHostDialogs.cpp:260 +#: src/slic3r/GUI/Plater.cpp:3037 src/slic3r/GUI/PrintHostDialogs.cpp:264 msgid "Cancelling" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3045 +#: src/slic3r/GUI/Plater.cpp:3056 msgid "Another export job is currently running." msgstr "" -#: src/slic3r/GUI/Plater.cpp:3162 +#: src/slic3r/GUI/Plater.cpp:3173 msgid "Please select the file to reload" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3197 +#: src/slic3r/GUI/Plater.cpp:3208 msgid "It is not allowed to change the file to reload" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3197 +#: src/slic3r/GUI/Plater.cpp:3208 msgid "Do you want to retry" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3215 +#: src/slic3r/GUI/Plater.cpp:3226 msgid "Reload from:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3306 +#: src/slic3r/GUI/Plater.cpp:3319 msgid "Unable to reload:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3311 +#: src/slic3r/GUI/Plater.cpp:3324 msgid "Error during reload" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3330 +#: src/slic3r/GUI/Plater.cpp:3343 msgid "Reload all from disk" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3351 +#: src/slic3r/GUI/Plater.cpp:3364 msgid "Fix Throught NetFabb" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3619 +#: src/slic3r/GUI/Plater.cpp:3632 msgid "There are active warnings concerning sliced models:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3630 +#: src/slic3r/GUI/Plater.cpp:3643 msgid "generated warnings" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3670 src/slic3r/GUI/PrintHostDialogs.cpp:261 +#: src/slic3r/GUI/Plater.cpp:3683 src/slic3r/GUI/PrintHostDialogs.cpp:265 msgid "Cancelled" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3932 src/slic3r/GUI/Plater.cpp:3956 +#: src/slic3r/GUI/Plater.cpp:3950 src/slic3r/GUI/Plater.cpp:3974 msgid "Remove the selected object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3941 +#: src/slic3r/GUI/Plater.cpp:3959 msgid "Add one more instance of the selected object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3943 +#: src/slic3r/GUI/Plater.cpp:3961 msgid "Remove one instance of the selected object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3945 +#: src/slic3r/GUI/Plater.cpp:3963 msgid "Set number of instances" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3945 +#: src/slic3r/GUI/Plater.cpp:3963 msgid "Change the number of instances of the selected object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3947 +#: src/slic3r/GUI/Plater.cpp:3965 msgid "Fill bed with instances" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3947 +#: src/slic3r/GUI/Plater.cpp:3965 msgid "Fill the remaining area of bed with instances of the selected object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3966 +#: src/slic3r/GUI/Plater.cpp:3984 msgid "Reload the selected object from disk" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3969 +#: src/slic3r/GUI/Plater.cpp:3987 msgid "Export the selected object as STL file" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4000 +#: src/slic3r/GUI/Plater.cpp:4017 msgid "Along X axis" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4000 +#: src/slic3r/GUI/Plater.cpp:4017 msgid "Mirror the selected object along the X axis" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4002 +#: src/slic3r/GUI/Plater.cpp:4019 msgid "Along Y axis" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4002 +#: src/slic3r/GUI/Plater.cpp:4019 msgid "Mirror the selected object along the Y axis" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4004 +#: src/slic3r/GUI/Plater.cpp:4021 msgid "Along Z axis" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4004 +#: src/slic3r/GUI/Plater.cpp:4021 msgid "Mirror the selected object along the Z axis" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4007 +#: src/slic3r/GUI/Plater.cpp:4024 msgid "Mirror" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4007 +#: src/slic3r/GUI/Plater.cpp:4024 msgid "Mirror the selected object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4019 +#: src/slic3r/GUI/Plater.cpp:4036 msgid "To objects" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4019 src/slic3r/GUI/Plater.cpp:4039 +#: src/slic3r/GUI/Plater.cpp:4036 src/slic3r/GUI/Plater.cpp:4056 msgid "Split the selected object into individual objects" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4021 +#: src/slic3r/GUI/Plater.cpp:4038 msgid "To parts" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4021 src/slic3r/GUI/Plater.cpp:4057 +#: src/slic3r/GUI/Plater.cpp:4038 src/slic3r/GUI/Plater.cpp:4074 msgid "Split the selected object into individual sub-parts" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4024 src/slic3r/GUI/Plater.cpp:4039 -#: src/slic3r/GUI/Plater.cpp:4057 src/libslic3r/PrintConfig.cpp:3726 +#: src/slic3r/GUI/Plater.cpp:4041 src/slic3r/GUI/Plater.cpp:4056 +#: src/slic3r/GUI/Plater.cpp:4074 src/libslic3r/PrintConfig.cpp:3759 msgid "Split" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4024 +#: src/slic3r/GUI/Plater.cpp:4041 msgid "Split the selected object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4046 +#: src/slic3r/GUI/Plater.cpp:4063 msgid "Optimize orientation" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4047 +#: src/slic3r/GUI/Plater.cpp:4064 msgid "Optimize the rotation of the object for better print results." msgstr "" -#: src/slic3r/GUI/Plater.cpp:4127 +#: src/slic3r/GUI/Plater.cpp:4144 msgid "3D editor view" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4499 +#: src/slic3r/GUI/Plater.cpp:4516 msgid "" "%1% printer was active at the time the target Undo / Redo snapshot was " "taken. Switching to %1% printer requires reloading of %1% presets." msgstr "" -#: src/slic3r/GUI/Plater.cpp:4703 +#: src/slic3r/GUI/Plater.cpp:4720 msgid "Load Project" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4735 +#: src/slic3r/GUI/Plater.cpp:4752 msgid "Import Objects" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4804 +#: src/slic3r/GUI/Plater.cpp:4821 msgid "The selected file" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4804 +#: src/slic3r/GUI/Plater.cpp:4821 msgid "does not contain valid gcode." msgstr "" -#: src/slic3r/GUI/Plater.cpp:4805 +#: src/slic3r/GUI/Plater.cpp:4822 msgid "Error while loading .gcode file" msgstr "" -#: src/slic3r/GUI/Plater.cpp:5043 +#: src/slic3r/GUI/Plater.cpp:5060 msgid "All objects will be removed, continue?" msgstr "" -#: src/slic3r/GUI/Plater.cpp:5051 +#: src/slic3r/GUI/Plater.cpp:5068 msgid "Delete Selected Objects" msgstr "" -#: src/slic3r/GUI/Plater.cpp:5059 +#: src/slic3r/GUI/Plater.cpp:5076 msgid "Increase Instances" msgstr "" -#: src/slic3r/GUI/Plater.cpp:5093 +#: src/slic3r/GUI/Plater.cpp:5110 msgid "Decrease Instances" msgstr "" -#: src/slic3r/GUI/Plater.cpp:5124 +#: src/slic3r/GUI/Plater.cpp:5141 msgid "Enter the number of copies:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:5125 +#: src/slic3r/GUI/Plater.cpp:5142 msgid "Copies of the selected object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:5129 +#: src/slic3r/GUI/Plater.cpp:5146 #, possible-c-format msgid "Set numbers of copies to %d" msgstr "" -#: src/slic3r/GUI/Plater.cpp:5195 +#: src/slic3r/GUI/Plater.cpp:5212 msgid "Cut by Plane" msgstr "" -#: src/slic3r/GUI/Plater.cpp:5252 +#: src/slic3r/GUI/Plater.cpp:5269 msgid "Save G-code file as:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:5252 +#: src/slic3r/GUI/Plater.cpp:5269 msgid "Save SL1 file as:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:5399 -#, possible-c-format -msgid "STL file exported to %s" -msgstr "" - #: src/slic3r/GUI/Plater.cpp:5416 #, possible-c-format +msgid "STL file exported to %s" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:5433 +#, possible-c-format msgid "AMF file exported to %s" msgstr "" -#: src/slic3r/GUI/Plater.cpp:5419 +#: src/slic3r/GUI/Plater.cpp:5436 #, possible-c-format msgid "Error exporting AMF file %s" msgstr "" -#: src/slic3r/GUI/Plater.cpp:5448 +#: src/slic3r/GUI/Plater.cpp:5465 #, possible-c-format msgid "3MF file exported to %s" msgstr "" -#: src/slic3r/GUI/Plater.cpp:5453 +#: src/slic3r/GUI/Plater.cpp:5470 #, possible-c-format msgid "Error exporting 3MF file %s" msgstr "" -#: src/slic3r/GUI/Plater.cpp:5985 +#: src/slic3r/GUI/Plater.cpp:6007 msgid "Export" msgstr "" -#: src/slic3r/GUI/Plater.cpp:6080 +#: src/slic3r/GUI/Plater.cpp:6102 msgid "Paste From Clipboard" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:24 src/slic3r/GUI/Tab.cpp:2099 -#: src/slic3r/GUI/Tab.cpp:2281 src/slic3r/GUI/Tab.cpp:2389 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1072 +#: src/slic3r/GUI/Preferences.cpp:56 src/slic3r/GUI/Tab.cpp:2098 +#: src/slic3r/GUI/Tab.cpp:2285 src/slic3r/GUI/Tab.cpp:2393 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1080 msgid "General" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:48 +#: src/slic3r/GUI/Preferences.cpp:69 msgid "Remember output directory" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:50 +#: src/slic3r/GUI/Preferences.cpp:71 msgid "" "If this is enabled, Slic3r will prompt the last output directory instead of " "the one containing the input files." msgstr "" -#: src/slic3r/GUI/Preferences.cpp:56 +#: src/slic3r/GUI/Preferences.cpp:77 msgid "Auto-center parts" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:58 +#: src/slic3r/GUI/Preferences.cpp:79 msgid "" "If this is enabled, Slic3r will auto-center objects around the print bed " "center." msgstr "" -#: src/slic3r/GUI/Preferences.cpp:64 +#: src/slic3r/GUI/Preferences.cpp:85 msgid "Background processing" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:66 +#: src/slic3r/GUI/Preferences.cpp:87 msgid "" "If this is enabled, Slic3r will pre-process objects as soon as they're " "loaded in order to save time when exporting G-code." msgstr "" -#: src/slic3r/GUI/Preferences.cpp:75 +#: src/slic3r/GUI/Preferences.cpp:96 msgid "" "If enabled, PrusaSlicer will check for the new versions of itself online. " "When a new version becomes available a notification is displayed at the next " @@ -5766,25 +5853,25 @@ msgid "" "notification mechanisms, no automatic installation is done." msgstr "" -#: src/slic3r/GUI/Preferences.cpp:81 +#: src/slic3r/GUI/Preferences.cpp:102 msgid "Export sources full pathnames to 3mf and amf" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:83 +#: src/slic3r/GUI/Preferences.cpp:104 msgid "" "If enabled, allows the Reload from disk command to automatically find and " "load the files when invoked." msgstr "" -#: src/slic3r/GUI/Preferences.cpp:93 +#: src/slic3r/GUI/Preferences.cpp:114 msgid "If enabled, sets PrusaSlicer as default application to open .3mf files." msgstr "" -#: src/slic3r/GUI/Preferences.cpp:100 +#: src/slic3r/GUI/Preferences.cpp:121 msgid "If enabled, sets PrusaSlicer as default application to open .stl files." msgstr "" -#: src/slic3r/GUI/Preferences.cpp:110 +#: src/slic3r/GUI/Preferences.cpp:131 msgid "" "If enabled, Slic3r downloads updates of built-in system presets in the " "background. These updates are downloaded into a separate temporary location. " @@ -5792,218 +5879,218 @@ msgid "" "startup." msgstr "" -#: src/slic3r/GUI/Preferences.cpp:115 +#: src/slic3r/GUI/Preferences.cpp:136 msgid "Suppress \" - default - \" presets" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:117 +#: src/slic3r/GUI/Preferences.cpp:138 msgid "" "Suppress \" - default - \" presets in the Print / Filament / Printer " "selections once there are any other valid presets available." msgstr "" -#: src/slic3r/GUI/Preferences.cpp:123 +#: src/slic3r/GUI/Preferences.cpp:144 msgid "Show incompatible print and filament presets" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:125 +#: src/slic3r/GUI/Preferences.cpp:146 msgid "" "When checked, the print and filament presets are shown in the preset editor " "even if they are marked as incompatible with the active printer" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:131 +#: src/slic3r/GUI/Preferences.cpp:152 msgid "Show drop project dialog" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:133 +#: src/slic3r/GUI/Preferences.cpp:154 msgid "" "When checked, whenever dragging and dropping a project file on the " "application, shows a dialog asking to select the action to take on the file " "to load." msgstr "" -#: src/slic3r/GUI/Preferences.cpp:138 src/libslic3r/PrintConfig.cpp:3753 -msgid "Single instance mode" +#: src/slic3r/GUI/Preferences.cpp:161 src/slic3r/GUI/Preferences.cpp:165 +msgid "Allow just a single PrusaSlicer instance" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:141 +#: src/slic3r/GUI/Preferences.cpp:163 msgid "" "On OSX there is always only one instance of app running by default. However " "it is allowed to run multiple instances of same app from the command line. " "In such case this settings will allow only one instance." msgstr "" -#: src/slic3r/GUI/Preferences.cpp:143 +#: src/slic3r/GUI/Preferences.cpp:167 msgid "" "If this is enabled, when starting PrusaSlicer and another instance of the " "same PrusaSlicer is already running, that instance will be reactivated " "instead." msgstr "" -#: src/slic3r/GUI/Preferences.cpp:160 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:665 +#: src/slic3r/GUI/Preferences.cpp:173 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:671 msgid "Ask for unsaved changes when closing application" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:162 +#: src/slic3r/GUI/Preferences.cpp:175 msgid "When closing the application, always ask for unsaved changes" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:167 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:666 +#: src/slic3r/GUI/Preferences.cpp:180 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:672 msgid "Ask for unsaved changes when selecting new preset" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:169 +#: src/slic3r/GUI/Preferences.cpp:182 msgid "Always ask for unsaved changes when selecting new preset" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:177 +#: src/slic3r/GUI/Preferences.cpp:190 msgid "Associate .gcode files to PrusaSlicer G-code Viewer" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:179 +#: src/slic3r/GUI/Preferences.cpp:192 msgid "" "If enabled, sets PrusaSlicer G-code Viewer as default application to open ." "gcode files." msgstr "" -#: src/slic3r/GUI/Preferences.cpp:188 +#: src/slic3r/GUI/Preferences.cpp:201 msgid "Use Retina resolution for the 3D scene" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:190 +#: src/slic3r/GUI/Preferences.cpp:203 msgid "" "If enabled, the 3D scene will be rendered in Retina resolution. If you are " "experiencing 3D performance problems, disabling this option may help." msgstr "" -#: src/slic3r/GUI/Preferences.cpp:198 src/slic3r/GUI/Preferences.cpp:200 +#: src/slic3r/GUI/Preferences.cpp:211 src/slic3r/GUI/Preferences.cpp:213 msgid "Show splash screen" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:207 +#: src/slic3r/GUI/Preferences.cpp:220 msgid "Enable support for legacy 3DConnexion devices" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:209 +#: src/slic3r/GUI/Preferences.cpp:222 msgid "" "If enabled, the legacy 3DConnexion devices settings dialog is available by " "pressing CTRL+M" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:218 +#: src/slic3r/GUI/Preferences.cpp:232 msgid "Camera" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:224 +#: src/slic3r/GUI/Preferences.cpp:237 msgid "Use perspective camera" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:226 +#: src/slic3r/GUI/Preferences.cpp:239 msgid "" "If enabled, use perspective camera. If not enabled, use orthographic camera." msgstr "" -#: src/slic3r/GUI/Preferences.cpp:231 +#: src/slic3r/GUI/Preferences.cpp:244 msgid "Use free camera" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:233 +#: src/slic3r/GUI/Preferences.cpp:246 msgid "If enabled, use free camera. If not enabled, use constrained camera." msgstr "" -#: src/slic3r/GUI/Preferences.cpp:238 +#: src/slic3r/GUI/Preferences.cpp:251 msgid "Reverse direction of zoom with mouse wheel" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:240 +#: src/slic3r/GUI/Preferences.cpp:253 msgid "If enabled, reverses the direction of zoom with mouse wheel" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:247 +#: src/slic3r/GUI/Preferences.cpp:261 msgid "GUI" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:262 -msgid "Show sidebar collapse/expand button" -msgstr "" - -#: src/slic3r/GUI/Preferences.cpp:264 -msgid "" -"If enabled, the button for the collapse sidebar will be appeared in top " -"right corner of the 3D Scene" -msgstr "" - -#: src/slic3r/GUI/Preferences.cpp:269 -msgid "Use custom size for toolbar icons" -msgstr "" - -#: src/slic3r/GUI/Preferences.cpp:271 -msgid "If enabled, you can change size of toolbar icons manually." -msgstr "" - #: src/slic3r/GUI/Preferences.cpp:276 -msgid "Suppress to open hyperlink in browser" -msgstr "" - -#: src/slic3r/GUI/Preferences.cpp:278 -msgid "" -"If enabled, the descriptions of configuration parameters in settings tabs " -"woldn't work as hyperlinks. If disabled, the descriptions of configuration " -"parameters in settings tabs will work as hyperlinks." -msgstr "" - -#: src/slic3r/GUI/Preferences.cpp:285 msgid "Sequential slider applied only to top layer" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:287 +#: src/slic3r/GUI/Preferences.cpp:278 msgid "" "If enabled, changes made using the sequential slider, in preview, apply only " "to gcode top layer. If disabled, changes made using the sequential slider, " "in preview, apply to the whole gcode." msgstr "" -#: src/slic3r/GUI/Preferences.cpp:304 +#: src/slic3r/GUI/Preferences.cpp:285 +msgid "Show sidebar collapse/expand button" +msgstr "" + +#: src/slic3r/GUI/Preferences.cpp:287 +msgid "" +"If enabled, the button for the collapse sidebar will be appeared in top " +"right corner of the 3D Scene" +msgstr "" + +#: src/slic3r/GUI/Preferences.cpp:292 +msgid "Suppress to open hyperlink in browser" +msgstr "" + +#: src/slic3r/GUI/Preferences.cpp:294 +msgid "" +"If enabled, the descriptions of configuration parameters in settings tabs " +"wouldn't work as hyperlinks. If disabled, the descriptions of configuration " +"parameters in settings tabs will work as hyperlinks." +msgstr "" + +#: src/slic3r/GUI/Preferences.cpp:300 +msgid "Use custom size for toolbar icons" +msgstr "" + +#: src/slic3r/GUI/Preferences.cpp:302 +msgid "If enabled, you can change size of toolbar icons manually." +msgstr "" + +#: src/slic3r/GUI/Preferences.cpp:320 msgid "Render" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:310 +#: src/slic3r/GUI/Preferences.cpp:325 msgid "Use environment map" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:312 +#: src/slic3r/GUI/Preferences.cpp:327 msgid "If enabled, renders object using the environment map." msgstr "" -#: src/slic3r/GUI/Preferences.cpp:345 +#: src/slic3r/GUI/Preferences.cpp:352 #, possible-c-format msgid "You need to restart %s to make the changes effective." msgstr "" -#: src/slic3r/GUI/Preferences.cpp:420 +#: src/slic3r/GUI/Preferences.cpp:427 msgid "Icon size in a respect to the default size" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:435 +#: src/slic3r/GUI/Preferences.cpp:442 msgid "Select toolbar icon size in respect to the default one." msgstr "" -#: src/slic3r/GUI/Preferences.cpp:466 +#: src/slic3r/GUI/Preferences.cpp:473 msgid "Old regular layout with the tab bar" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:467 +#: src/slic3r/GUI/Preferences.cpp:474 msgid "New layout, access via settings button in the top menu" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:468 +#: src/slic3r/GUI/Preferences.cpp:475 msgid "Settings in non-modal window" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:477 +#: src/slic3r/GUI/Preferences.cpp:484 msgid "Layout Options" msgstr "" @@ -6044,7 +6131,7 @@ msgid "Add/Remove presets" msgstr "" #: src/slic3r/GUI/PresetComboBoxes.cpp:685 -#: src/slic3r/GUI/PresetComboBoxes.cpp:715 src/slic3r/GUI/Tab.cpp:2986 +#: src/slic3r/GUI/PresetComboBoxes.cpp:715 src/slic3r/GUI/Tab.cpp:2990 msgid "Add physical printer" msgstr "" @@ -6052,7 +6139,7 @@ msgstr "" msgid "Edit preset" msgstr "" -#: src/slic3r/GUI/PresetComboBoxes.cpp:703 src/slic3r/GUI/Tab.cpp:2986 +#: src/slic3r/GUI/PresetComboBoxes.cpp:703 src/slic3r/GUI/Tab.cpp:2990 msgid "Edit physical printer" msgstr "" @@ -6078,221 +6165,225 @@ msgstr "" msgid "Add/Remove printers" msgstr "" -#: src/slic3r/GUI/PresetHints.cpp:28 +#: src/slic3r/GUI/PresetHints.cpp:32 msgid "" "If estimated layer time is below ~%1%s, fan will run at %2%%% and print " "speed will be reduced so that no less than %3%s are spent on that layer " "(however, speed will never be reduced below %4%mm/s)." msgstr "" -#: src/slic3r/GUI/PresetHints.cpp:35 +#: src/slic3r/GUI/PresetHints.cpp:39 msgid "" "If estimated layer time is greater, but still below ~%1%s, fan will run at a " "proportionally decreasing speed between %2%%% and %3%%%." msgstr "" -#: src/slic3r/GUI/PresetHints.cpp:39 -msgid "During the other layers, fan" +#: src/slic3r/GUI/PresetHints.cpp:49 +msgid "Fan speed will be ramped from zero at layer %1% to %2%%% at layer %3%." msgstr "" -#: src/slic3r/GUI/PresetHints.cpp:41 -msgid "Fan" +#: src/slic3r/GUI/PresetHints.cpp:51 +msgid "During the other layers, fan will always run at %1%%%" msgstr "" -#: src/slic3r/GUI/PresetHints.cpp:47 -msgid "will always run at %1%%%" +#: src/slic3r/GUI/PresetHints.cpp:51 +msgid "Fan will always run at %1%%%" msgstr "" -#: src/slic3r/GUI/PresetHints.cpp:50 +#: src/slic3r/GUI/PresetHints.cpp:53 msgid "except for the first %1% layers." msgstr "" -#: src/slic3r/GUI/PresetHints.cpp:52 +#: src/slic3r/GUI/PresetHints.cpp:55 msgid "except for the first layer." msgstr "" -#: src/slic3r/GUI/PresetHints.cpp:54 -msgid "will be turned off." +#: src/slic3r/GUI/PresetHints.cpp:58 +msgid "During the other layers, fan will be turned off." msgstr "" -#: src/slic3r/GUI/PresetHints.cpp:155 +#: src/slic3r/GUI/PresetHints.cpp:58 +msgid "Fan will be turned off." +msgstr "" + +#: src/slic3r/GUI/PresetHints.cpp:159 msgid "external perimeters" msgstr "" -#: src/slic3r/GUI/PresetHints.cpp:164 +#: src/slic3r/GUI/PresetHints.cpp:168 msgid "perimeters" msgstr "" -#: src/slic3r/GUI/PresetHints.cpp:173 +#: src/slic3r/GUI/PresetHints.cpp:177 msgid "infill" msgstr "" -#: src/slic3r/GUI/PresetHints.cpp:183 +#: src/slic3r/GUI/PresetHints.cpp:187 msgid "solid infill" msgstr "" -#: src/slic3r/GUI/PresetHints.cpp:191 +#: src/slic3r/GUI/PresetHints.cpp:195 msgid "top solid infill" msgstr "" -#: src/slic3r/GUI/PresetHints.cpp:202 +#: src/slic3r/GUI/PresetHints.cpp:206 msgid "support" msgstr "" -#: src/slic3r/GUI/PresetHints.cpp:212 +#: src/slic3r/GUI/PresetHints.cpp:216 msgid "support interface" msgstr "" -#: src/slic3r/GUI/PresetHints.cpp:218 +#: src/slic3r/GUI/PresetHints.cpp:222 msgid "First layer volumetric" msgstr "" -#: src/slic3r/GUI/PresetHints.cpp:218 +#: src/slic3r/GUI/PresetHints.cpp:222 msgid "Bridging volumetric" msgstr "" -#: src/slic3r/GUI/PresetHints.cpp:218 +#: src/slic3r/GUI/PresetHints.cpp:222 msgid "Volumetric" msgstr "" -#: src/slic3r/GUI/PresetHints.cpp:219 +#: src/slic3r/GUI/PresetHints.cpp:223 msgid "flow rate is maximized" msgstr "" -#: src/slic3r/GUI/PresetHints.cpp:222 +#: src/slic3r/GUI/PresetHints.cpp:226 msgid "by the print profile maximum" msgstr "" -#: src/slic3r/GUI/PresetHints.cpp:223 +#: src/slic3r/GUI/PresetHints.cpp:227 msgid "when printing" msgstr "" -#: src/slic3r/GUI/PresetHints.cpp:224 +#: src/slic3r/GUI/PresetHints.cpp:228 msgid "with a volumetric rate" msgstr "" -#: src/slic3r/GUI/PresetHints.cpp:228 +#: src/slic3r/GUI/PresetHints.cpp:232 #, possible-c-format msgid "%3.2f mm³/s at filament speed %3.2f mm/s." msgstr "" -#: src/slic3r/GUI/PresetHints.cpp:246 +#: src/slic3r/GUI/PresetHints.cpp:250 msgid "" "Recommended object thin wall thickness: Not available due to invalid layer " "height." msgstr "" -#: src/slic3r/GUI/PresetHints.cpp:262 +#: src/slic3r/GUI/PresetHints.cpp:266 #, possible-c-format msgid "Recommended object thin wall thickness for layer height %.2f and" msgstr "" -#: src/slic3r/GUI/PresetHints.cpp:269 +#: src/slic3r/GUI/PresetHints.cpp:273 #, possible-c-format msgid "%d lines: %.2f mm" msgstr "" -#: src/slic3r/GUI/PresetHints.cpp:273 +#: src/slic3r/GUI/PresetHints.cpp:277 msgid "" "Recommended object thin wall thickness: Not available due to excessively " "small extrusion width." msgstr "" -#: src/slic3r/GUI/PresetHints.cpp:302 +#: src/slic3r/GUI/PresetHints.cpp:306 msgid "" "Top / bottom shell thickness hint: Not available due to invalid layer height." msgstr "" -#: src/slic3r/GUI/PresetHints.cpp:315 +#: src/slic3r/GUI/PresetHints.cpp:319 msgid "Top shell is %1% mm thick for layer height %2% mm." msgstr "" -#: src/slic3r/GUI/PresetHints.cpp:318 +#: src/slic3r/GUI/PresetHints.cpp:322 msgid "Minimum top shell thickness is %1% mm." msgstr "" -#: src/slic3r/GUI/PresetHints.cpp:321 +#: src/slic3r/GUI/PresetHints.cpp:325 msgid "Top is open." msgstr "" -#: src/slic3r/GUI/PresetHints.cpp:334 +#: src/slic3r/GUI/PresetHints.cpp:338 msgid "Bottom shell is %1% mm thick for layer height %2% mm." msgstr "" -#: src/slic3r/GUI/PresetHints.cpp:337 +#: src/slic3r/GUI/PresetHints.cpp:341 msgid "Minimum bottom shell thickness is %1% mm." msgstr "" -#: src/slic3r/GUI/PresetHints.cpp:340 +#: src/slic3r/GUI/PresetHints.cpp:344 msgid "Bottom is open." msgstr "" -#: src/slic3r/GUI/PrintHostDialogs.cpp:34 +#: src/slic3r/GUI/PrintHostDialogs.cpp:35 msgid "Send G-Code to printer host" msgstr "" -#: src/slic3r/GUI/PrintHostDialogs.cpp:34 +#: src/slic3r/GUI/PrintHostDialogs.cpp:35 msgid "Upload to Printer Host with the following filename:" msgstr "" -#: src/slic3r/GUI/PrintHostDialogs.cpp:36 +#: src/slic3r/GUI/PrintHostDialogs.cpp:37 msgid "Start printing after upload" msgstr "" -#: src/slic3r/GUI/PrintHostDialogs.cpp:44 +#: src/slic3r/GUI/PrintHostDialogs.cpp:45 msgid "Use forward slashes ( / ) as a directory separator if needed." msgstr "" -#: src/slic3r/GUI/PrintHostDialogs.cpp:57 +#: src/slic3r/GUI/PrintHostDialogs.cpp:58 msgid "Group" msgstr "" -#: src/slic3r/GUI/PrintHostDialogs.cpp:174 +#: src/slic3r/GUI/PrintHostDialogs.cpp:176 msgid "ID" msgstr "" -#: src/slic3r/GUI/PrintHostDialogs.cpp:175 +#: src/slic3r/GUI/PrintHostDialogs.cpp:177 msgid "Progress" msgstr "" -#: src/slic3r/GUI/PrintHostDialogs.cpp:176 +#: src/slic3r/GUI/PrintHostDialogs.cpp:178 msgid "Status" msgstr "" -#: src/slic3r/GUI/PrintHostDialogs.cpp:177 +#: src/slic3r/GUI/PrintHostDialogs.cpp:179 msgid "Host" msgstr "" -#: src/slic3r/GUI/PrintHostDialogs.cpp:178 +#: src/slic3r/GUI/PrintHostDialogs.cpp:180 msgid "Filename" msgstr "" -#: src/slic3r/GUI/PrintHostDialogs.cpp:179 +#: src/slic3r/GUI/PrintHostDialogs.cpp:181 msgid "Error Message" msgstr "" -#: src/slic3r/GUI/PrintHostDialogs.cpp:182 +#: src/slic3r/GUI/PrintHostDialogs.cpp:184 msgid "Cancel selected" msgstr "" -#: src/slic3r/GUI/PrintHostDialogs.cpp:184 +#: src/slic3r/GUI/PrintHostDialogs.cpp:186 msgid "Show error message" msgstr "" -#: src/slic3r/GUI/PrintHostDialogs.cpp:226 -#: src/slic3r/GUI/PrintHostDialogs.cpp:257 +#: src/slic3r/GUI/PrintHostDialogs.cpp:228 +#: src/slic3r/GUI/PrintHostDialogs.cpp:261 msgid "Enqueued" msgstr "" -#: src/slic3r/GUI/PrintHostDialogs.cpp:258 +#: src/slic3r/GUI/PrintHostDialogs.cpp:262 msgid "Uploading" msgstr "" -#: src/slic3r/GUI/PrintHostDialogs.cpp:262 +#: src/slic3r/GUI/PrintHostDialogs.cpp:266 msgid "Completed" msgstr "" -#: src/slic3r/GUI/PrintHostDialogs.cpp:300 +#: src/slic3r/GUI/PrintHostDialogs.cpp:304 msgid "Error uploading to print host:" msgstr "" @@ -6301,12 +6392,12 @@ msgid "NO RAMMING AT ALL" msgstr "" #: src/slic3r/GUI/RammingChart.cpp:76 src/slic3r/GUI/WipeTowerDialog.cpp:83 -#: src/libslic3r/PrintConfig.cpp:691 src/libslic3r/PrintConfig.cpp:735 -#: src/libslic3r/PrintConfig.cpp:750 src/libslic3r/PrintConfig.cpp:2606 -#: src/libslic3r/PrintConfig.cpp:2615 src/libslic3r/PrintConfig.cpp:2725 -#: src/libslic3r/PrintConfig.cpp:2733 src/libslic3r/PrintConfig.cpp:2741 -#: src/libslic3r/PrintConfig.cpp:2748 src/libslic3r/PrintConfig.cpp:2756 -#: src/libslic3r/PrintConfig.cpp:2764 +#: src/libslic3r/PrintConfig.cpp:706 src/libslic3r/PrintConfig.cpp:750 +#: src/libslic3r/PrintConfig.cpp:765 src/libslic3r/PrintConfig.cpp:2636 +#: src/libslic3r/PrintConfig.cpp:2645 src/libslic3r/PrintConfig.cpp:2755 +#: src/libslic3r/PrintConfig.cpp:2763 src/libslic3r/PrintConfig.cpp:2771 +#: src/libslic3r/PrintConfig.cpp:2778 src/libslic3r/PrintConfig.cpp:2786 +#: src/libslic3r/PrintConfig.cpp:2794 msgid "s" msgstr "" @@ -6314,8 +6405,8 @@ msgstr "" msgid "Volumetric speed" msgstr "" -#: src/slic3r/GUI/RammingChart.cpp:81 src/libslic3r/PrintConfig.cpp:648 -#: src/libslic3r/PrintConfig.cpp:1432 +#: src/slic3r/GUI/RammingChart.cpp:81 src/libslic3r/PrintConfig.cpp:663 +#: src/libslic3r/PrintConfig.cpp:1458 msgid "mm³/s" msgstr "" @@ -6346,7 +6437,7 @@ msgstr "" #: src/slic3r/GUI/SavePresetDialog.cpp:136 msgid "" -"Preset with name \"%1%\" already exists and is incopatible with selected " +"Preset with name \"%1%\" already exists and is incompatible with selected " "printer." msgstr "" @@ -6358,43 +6449,51 @@ msgstr "" msgid "The name cannot be empty." msgstr "" -#: src/slic3r/GUI/SavePresetDialog.cpp:176 -#: src/slic3r/GUI/SavePresetDialog.cpp:182 +#: src/slic3r/GUI/SavePresetDialog.cpp:147 +msgid "The name cannot start with space character." +msgstr "" + +#: src/slic3r/GUI/SavePresetDialog.cpp:152 +msgid "The name cannot end with space character." +msgstr "" + +#: src/slic3r/GUI/SavePresetDialog.cpp:186 +#: src/slic3r/GUI/SavePresetDialog.cpp:192 msgid "Save preset" msgstr "" -#: src/slic3r/GUI/SavePresetDialog.cpp:205 +#: src/slic3r/GUI/SavePresetDialog.cpp:215 msgctxt "PresetName" msgid "Copy" msgstr "" -#: src/slic3r/GUI/SavePresetDialog.cpp:263 +#: src/slic3r/GUI/SavePresetDialog.cpp:273 msgid "" "You have selected physical printer \"%1%\" \n" "with related printer preset \"%2%\"" msgstr "" -#: src/slic3r/GUI/SavePresetDialog.cpp:296 +#: src/slic3r/GUI/SavePresetDialog.cpp:306 msgid "What would you like to do with \"%1%\" preset after saving?" msgstr "" -#: src/slic3r/GUI/SavePresetDialog.cpp:299 +#: src/slic3r/GUI/SavePresetDialog.cpp:309 msgid "Change \"%1%\" to \"%2%\" for this physical printer \"%3%\"" msgstr "" -#: src/slic3r/GUI/SavePresetDialog.cpp:300 +#: src/slic3r/GUI/SavePresetDialog.cpp:310 msgid "Add \"%1%\" as a next preset for the the physical printer \"%2%\"" msgstr "" -#: src/slic3r/GUI/SavePresetDialog.cpp:301 +#: src/slic3r/GUI/SavePresetDialog.cpp:311 msgid "Just switch to \"%1%\" preset" msgstr "" -#: src/slic3r/GUI/Search.cpp:77 src/slic3r/GUI/Tab.cpp:2417 +#: src/slic3r/GUI/Search.cpp:77 src/slic3r/GUI/Tab.cpp:2421 msgid "Stealth" msgstr "" -#: src/slic3r/GUI/Search.cpp:77 src/slic3r/GUI/Tab.cpp:2411 +#: src/slic3r/GUI/Search.cpp:77 src/slic3r/GUI/Tab.cpp:2415 msgid "Normal" msgstr "" @@ -6430,15 +6529,15 @@ msgstr "" msgid "Selection-Remove All" msgstr "" -#: src/slic3r/GUI/Selection.cpp:987 +#: src/slic3r/GUI/Selection.cpp:960 msgid "Scale To Fit" msgstr "" -#: src/slic3r/GUI/Selection.cpp:1514 +#: src/slic3r/GUI/Selection.cpp:1487 msgid "Set Printable Instance" msgstr "" -#: src/slic3r/GUI/Selection.cpp:1514 +#: src/slic3r/GUI/Selection.cpp:1487 msgid "Set Unprintable Instance" msgstr "" @@ -6450,329 +6549,329 @@ msgstr "" msgid "Copy to Clipboard" msgstr "" -#: src/slic3r/GUI/Tab.cpp:112 src/libslic3r/PrintConfig.cpp:308 +#: src/slic3r/GUI/Tab.cpp:109 src/libslic3r/PrintConfig.cpp:321 msgid "Compatible printers" msgstr "" -#: src/slic3r/GUI/Tab.cpp:113 +#: src/slic3r/GUI/Tab.cpp:110 msgid "Select the printers this profile is compatible with." msgstr "" -#: src/slic3r/GUI/Tab.cpp:118 src/libslic3r/PrintConfig.cpp:323 +#: src/slic3r/GUI/Tab.cpp:115 src/libslic3r/PrintConfig.cpp:336 msgid "Compatible print profiles" msgstr "" -#: src/slic3r/GUI/Tab.cpp:119 +#: src/slic3r/GUI/Tab.cpp:116 msgid "Select the print profiles this profile is compatible with." msgstr "" #. TRN "Save current Settings" -#: src/slic3r/GUI/Tab.cpp:214 +#: src/slic3r/GUI/Tab.cpp:211 #, possible-c-format msgid "Save current %s" msgstr "" -#: src/slic3r/GUI/Tab.cpp:215 +#: src/slic3r/GUI/Tab.cpp:212 msgid "Delete this preset" msgstr "" -#: src/slic3r/GUI/Tab.cpp:219 +#: src/slic3r/GUI/Tab.cpp:216 msgid "" "Hover the cursor over buttons to find more information \n" "or click this button." msgstr "" -#: src/slic3r/GUI/Tab.cpp:223 +#: src/slic3r/GUI/Tab.cpp:220 msgid "Search in settings [%1%]" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1240 +#: src/slic3r/GUI/Tab.cpp:1237 msgid "Detach from system preset" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1253 +#: src/slic3r/GUI/Tab.cpp:1250 msgid "" "A copy of the current system preset will be created, which will be detached " "from the system preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:1254 +#: src/slic3r/GUI/Tab.cpp:1251 msgid "" "The current custom preset will be detached from the parent system preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:1257 +#: src/slic3r/GUI/Tab.cpp:1254 msgid "Modifications to the current profile will be saved." msgstr "" -#: src/slic3r/GUI/Tab.cpp:1260 +#: src/slic3r/GUI/Tab.cpp:1257 msgid "" "This action is not revertable.\n" "Do you want to proceed?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1262 +#: src/slic3r/GUI/Tab.cpp:1259 msgid "Detach preset" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1288 +#: src/slic3r/GUI/Tab.cpp:1285 msgid "This is a default preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:1290 +#: src/slic3r/GUI/Tab.cpp:1287 msgid "This is a system preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:1292 +#: src/slic3r/GUI/Tab.cpp:1289 msgid "Current preset is inherited from the default preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:1296 +#: src/slic3r/GUI/Tab.cpp:1293 msgid "Current preset is inherited from" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1300 +#: src/slic3r/GUI/Tab.cpp:1297 msgid "It can't be deleted or modified." msgstr "" -#: src/slic3r/GUI/Tab.cpp:1301 +#: src/slic3r/GUI/Tab.cpp:1298 msgid "" "Any modifications should be saved as a new preset inherited from this one." msgstr "" -#: src/slic3r/GUI/Tab.cpp:1302 +#: src/slic3r/GUI/Tab.cpp:1299 msgid "To do that please specify a new name for the preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:1306 +#: src/slic3r/GUI/Tab.cpp:1303 msgid "Additional information:" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1312 +#: src/slic3r/GUI/Tab.cpp:1309 msgid "printer model" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1320 +#: src/slic3r/GUI/Tab.cpp:1317 msgid "default print profile" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1323 +#: src/slic3r/GUI/Tab.cpp:1320 msgid "default filament profile" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1337 +#: src/slic3r/GUI/Tab.cpp:1334 msgid "default SLA material profile" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1341 +#: src/slic3r/GUI/Tab.cpp:1338 msgid "default SLA print profile" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1349 +#: src/slic3r/GUI/Tab.cpp:1346 msgid "full profile name" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1350 +#: src/slic3r/GUI/Tab.cpp:1347 msgid "symbolic profile name" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1388 src/slic3r/GUI/Tab.cpp:4033 +#: src/slic3r/GUI/Tab.cpp:1385 src/slic3r/GUI/Tab.cpp:4042 msgid "Layers and perimeters" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1394 +#: src/slic3r/GUI/Tab.cpp:1391 msgid "Vertical shells" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1406 +#: src/slic3r/GUI/Tab.cpp:1403 msgid "Horizontal shells" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1407 src/libslic3r/PrintConfig.cpp:1950 +#: src/slic3r/GUI/Tab.cpp:1404 src/libslic3r/PrintConfig.cpp:1980 msgid "Solid layers" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1412 +#: src/slic3r/GUI/Tab.cpp:1409 msgid "Minimum shell thickness" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1423 +#: src/slic3r/GUI/Tab.cpp:1420 msgid "Quality (slower slicing)" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1450 +#: src/slic3r/GUI/Tab.cpp:1448 msgid "Reducing printing time" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1462 +#: src/slic3r/GUI/Tab.cpp:1460 msgid "Skirt and brim" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1482 +#: src/slic3r/GUI/Tab.cpp:1480 msgid "Raft" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1486 +#: src/slic3r/GUI/Tab.cpp:1484 msgid "Options for support material and raft" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1501 +#: src/slic3r/GUI/Tab.cpp:1499 msgid "Speed for print moves" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1514 +#: src/slic3r/GUI/Tab.cpp:1512 msgid "Speed for non-print moves" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1517 +#: src/slic3r/GUI/Tab.cpp:1515 msgid "Modifiers" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1520 +#: src/slic3r/GUI/Tab.cpp:1518 msgid "Acceleration control (advanced)" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1527 +#: src/slic3r/GUI/Tab.cpp:1525 msgid "Autospeed (advanced)" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1535 +#: src/slic3r/GUI/Tab.cpp:1533 msgid "Multiple Extruders" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1543 +#: src/slic3r/GUI/Tab.cpp:1541 msgid "Ooze prevention" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1561 +#: src/slic3r/GUI/Tab.cpp:1559 msgid "Extrusion width" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1571 +#: src/slic3r/GUI/Tab.cpp:1569 msgid "Overlap" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1574 +#: src/slic3r/GUI/Tab.cpp:1572 msgid "Flow" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1583 +#: src/slic3r/GUI/Tab.cpp:1581 msgid "Other" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1586 src/slic3r/GUI/Tab.cpp:4109 +#: src/slic3r/GUI/Tab.cpp:1584 src/slic3r/GUI/Tab.cpp:4118 msgid "Output options" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1587 +#: src/slic3r/GUI/Tab.cpp:1585 msgid "Sequential printing" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1589 +#: src/slic3r/GUI/Tab.cpp:1587 msgid "Extruder clearance" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1594 src/slic3r/GUI/Tab.cpp:4110 +#: src/slic3r/GUI/Tab.cpp:1592 src/slic3r/GUI/Tab.cpp:4119 msgid "Output file" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1601 src/libslic3r/PrintConfig.cpp:1636 +#: src/slic3r/GUI/Tab.cpp:1599 src/libslic3r/PrintConfig.cpp:1662 msgid "Post-processing scripts" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1607 src/slic3r/GUI/Tab.cpp:1608 -#: src/slic3r/GUI/Tab.cpp:1928 src/slic3r/GUI/Tab.cpp:1929 -#: src/slic3r/GUI/Tab.cpp:2262 src/slic3r/GUI/Tab.cpp:2263 -#: src/slic3r/GUI/Tab.cpp:2338 src/slic3r/GUI/Tab.cpp:2339 -#: src/slic3r/GUI/Tab.cpp:3976 src/slic3r/GUI/Tab.cpp:3977 +#: src/slic3r/GUI/Tab.cpp:1605 src/slic3r/GUI/Tab.cpp:1606 +#: src/slic3r/GUI/Tab.cpp:1927 src/slic3r/GUI/Tab.cpp:1928 +#: src/slic3r/GUI/Tab.cpp:2266 src/slic3r/GUI/Tab.cpp:2267 +#: src/slic3r/GUI/Tab.cpp:2342 src/slic3r/GUI/Tab.cpp:2343 +#: src/slic3r/GUI/Tab.cpp:3985 src/slic3r/GUI/Tab.cpp:3986 msgid "Notes" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1614 src/slic3r/GUI/Tab.cpp:1936 -#: src/slic3r/GUI/Tab.cpp:2269 src/slic3r/GUI/Tab.cpp:2345 -#: src/slic3r/GUI/Tab.cpp:3984 src/slic3r/GUI/Tab.cpp:4115 +#: src/slic3r/GUI/Tab.cpp:1612 src/slic3r/GUI/Tab.cpp:1935 +#: src/slic3r/GUI/Tab.cpp:2273 src/slic3r/GUI/Tab.cpp:2349 +#: src/slic3r/GUI/Tab.cpp:3993 src/slic3r/GUI/Tab.cpp:4124 msgid "Dependencies" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1615 src/slic3r/GUI/Tab.cpp:1937 -#: src/slic3r/GUI/Tab.cpp:2270 src/slic3r/GUI/Tab.cpp:2346 -#: src/slic3r/GUI/Tab.cpp:3985 src/slic3r/GUI/Tab.cpp:4116 +#: src/slic3r/GUI/Tab.cpp:1613 src/slic3r/GUI/Tab.cpp:1936 +#: src/slic3r/GUI/Tab.cpp:2274 src/slic3r/GUI/Tab.cpp:2350 +#: src/slic3r/GUI/Tab.cpp:3994 src/slic3r/GUI/Tab.cpp:4125 msgid "Profile dependencies" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1695 +#: src/slic3r/GUI/Tab.cpp:1693 msgid "Filament Overrides" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1817 +#: src/slic3r/GUI/Tab.cpp:1815 msgid "Temperature" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1818 +#: src/slic3r/GUI/Tab.cpp:1816 msgid "Nozzle" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1823 +#: src/slic3r/GUI/Tab.cpp:1821 msgid "Bed" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1828 +#: src/slic3r/GUI/Tab.cpp:1826 msgid "Cooling" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1830 src/libslic3r/PrintConfig.cpp:1539 -#: src/libslic3r/PrintConfig.cpp:2398 +#: src/slic3r/GUI/Tab.cpp:1828 src/libslic3r/PrintConfig.cpp:1565 +#: src/libslic3r/PrintConfig.cpp:2428 msgid "Enable" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1841 +#: src/slic3r/GUI/Tab.cpp:1839 msgid "Fan settings" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1851 +#: src/slic3r/GUI/Tab.cpp:1850 msgid "Cooling thresholds" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1857 +#: src/slic3r/GUI/Tab.cpp:1856 msgid "Filament properties" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1864 +#: src/slic3r/GUI/Tab.cpp:1863 msgid "Print speed override" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1874 +#: src/slic3r/GUI/Tab.cpp:1873 msgid "Wipe tower parameters" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1877 +#: src/slic3r/GUI/Tab.cpp:1876 msgid "Toolchange parameters with single extruder MM printers" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1890 +#: src/slic3r/GUI/Tab.cpp:1889 msgid "Ramming settings" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1913 src/slic3r/GUI/Tab.cpp:2201 -#: src/libslic3r/PrintConfig.cpp:2033 +#: src/slic3r/GUI/Tab.cpp:1912 src/slic3r/GUI/Tab.cpp:2205 +#: src/libslic3r/PrintConfig.cpp:2063 msgid "Custom G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1914 src/slic3r/GUI/Tab.cpp:2202 -#: src/libslic3r/PrintConfig.cpp:1983 src/libslic3r/PrintConfig.cpp:1998 +#: src/slic3r/GUI/Tab.cpp:1913 src/slic3r/GUI/Tab.cpp:2206 +#: src/libslic3r/PrintConfig.cpp:2013 src/libslic3r/PrintConfig.cpp:2028 msgid "Start G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1921 src/slic3r/GUI/Tab.cpp:2209 -#: src/libslic3r/PrintConfig.cpp:428 src/libslic3r/PrintConfig.cpp:438 +#: src/slic3r/GUI/Tab.cpp:1920 src/slic3r/GUI/Tab.cpp:2213 +#: src/libslic3r/PrintConfig.cpp:441 src/libslic3r/PrintConfig.cpp:451 msgid "End G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1971 +#: src/slic3r/GUI/Tab.cpp:1970 msgid "Volumetric flow hints not available" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2067 +#: src/slic3r/GUI/Tab.cpp:2066 msgid "" "Note: All parameters from this group are moved to the Physical Printer " "settings (see changelog).\n" @@ -6785,19 +6884,19 @@ msgid "" "physical_printer directory." msgstr "" -#: src/slic3r/GUI/Tab.cpp:2100 src/slic3r/GUI/Tab.cpp:2282 +#: src/slic3r/GUI/Tab.cpp:2099 src/slic3r/GUI/Tab.cpp:2286 msgid "Size and coordinates" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2109 src/slic3r/GUI/UnsavedChangesDialog.cpp:1072 +#: src/slic3r/GUI/Tab.cpp:2108 src/slic3r/GUI/UnsavedChangesDialog.cpp:1080 msgid "Capabilities" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2114 +#: src/slic3r/GUI/Tab.cpp:2113 msgid "Number of extruders of the printer." msgstr "" -#: src/slic3r/GUI/Tab.cpp:2142 +#: src/slic3r/GUI/Tab.cpp:2141 msgid "" "Single Extruder Multi Material is selected, \n" "and all extruders must have the same diameter.\n" @@ -6805,231 +6904,231 @@ msgid "" "nozzle diameter value?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2145 src/slic3r/GUI/Tab.cpp:2548 -#: src/libslic3r/PrintConfig.cpp:1508 +#: src/slic3r/GUI/Tab.cpp:2144 src/slic3r/GUI/Tab.cpp:2552 +#: src/libslic3r/PrintConfig.cpp:1534 msgid "Nozzle diameter" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2216 src/libslic3r/PrintConfig.cpp:196 +#: src/slic3r/GUI/Tab.cpp:2220 src/libslic3r/PrintConfig.cpp:209 msgid "Before layer change G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2223 src/libslic3r/PrintConfig.cpp:1247 +#: src/slic3r/GUI/Tab.cpp:2227 src/libslic3r/PrintConfig.cpp:1273 msgid "After layer change G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2230 src/libslic3r/PrintConfig.cpp:2291 +#: src/slic3r/GUI/Tab.cpp:2234 src/libslic3r/PrintConfig.cpp:2321 msgid "Tool change G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2237 +#: src/slic3r/GUI/Tab.cpp:2241 msgid "Between objects G-code (for sequential printing)" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2244 +#: src/slic3r/GUI/Tab.cpp:2248 msgid "Color Change G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2250 src/libslic3r/PrintConfig.cpp:2024 +#: src/slic3r/GUI/Tab.cpp:2254 src/libslic3r/PrintConfig.cpp:2054 msgid "Pause Print G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2256 +#: src/slic3r/GUI/Tab.cpp:2260 msgid "Template Custom G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2289 +#: src/slic3r/GUI/Tab.cpp:2293 msgid "Display" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2304 +#: src/slic3r/GUI/Tab.cpp:2308 msgid "Tilt" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2305 +#: src/slic3r/GUI/Tab.cpp:2309 msgid "Tilt time" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2311 src/slic3r/GUI/Tab.cpp:3960 +#: src/slic3r/GUI/Tab.cpp:2315 src/slic3r/GUI/Tab.cpp:3969 msgid "Corrections" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2328 src/slic3r/GUI/Tab.cpp:3956 +#: src/slic3r/GUI/Tab.cpp:2332 src/slic3r/GUI/Tab.cpp:3965 msgid "Exposure" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2387 src/slic3r/GUI/Tab.cpp:2481 -#: src/libslic3r/PrintConfig.cpp:1276 src/libslic3r/PrintConfig.cpp:1311 -#: src/libslic3r/PrintConfig.cpp:1328 src/libslic3r/PrintConfig.cpp:1345 -#: src/libslic3r/PrintConfig.cpp:1361 src/libslic3r/PrintConfig.cpp:1371 -#: src/libslic3r/PrintConfig.cpp:1381 src/libslic3r/PrintConfig.cpp:1391 +#: src/slic3r/GUI/Tab.cpp:2391 src/slic3r/GUI/Tab.cpp:2485 +#: src/libslic3r/PrintConfig.cpp:1302 src/libslic3r/PrintConfig.cpp:1337 +#: src/libslic3r/PrintConfig.cpp:1354 src/libslic3r/PrintConfig.cpp:1371 +#: src/libslic3r/PrintConfig.cpp:1387 src/libslic3r/PrintConfig.cpp:1397 +#: src/libslic3r/PrintConfig.cpp:1407 src/libslic3r/PrintConfig.cpp:1417 msgid "Machine limits" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2410 +#: src/slic3r/GUI/Tab.cpp:2414 msgid "Values in this column are for Normal mode" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2416 +#: src/slic3r/GUI/Tab.cpp:2420 msgid "Values in this column are for Stealth mode" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2425 +#: src/slic3r/GUI/Tab.cpp:2429 msgid "Maximum feedrates" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2430 +#: src/slic3r/GUI/Tab.cpp:2434 msgid "Maximum accelerations" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2437 +#: src/slic3r/GUI/Tab.cpp:2441 msgid "Jerk limits" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2442 +#: src/slic3r/GUI/Tab.cpp:2446 msgid "Minimum feedrates" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2506 src/slic3r/GUI/Tab.cpp:2514 +#: src/slic3r/GUI/Tab.cpp:2510 src/slic3r/GUI/Tab.cpp:2518 msgid "Single extruder MM setup" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2515 +#: src/slic3r/GUI/Tab.cpp:2519 msgid "Single extruder multimaterial parameters" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2546 +#: src/slic3r/GUI/Tab.cpp:2550 msgid "" "This is a single extruder multimaterial printer, diameters of all extruders " "will be set to the new value. Do you want to proceed?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2570 +#: src/slic3r/GUI/Tab.cpp:2574 msgid "Layer height limits" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2575 +#: src/slic3r/GUI/Tab.cpp:2579 msgid "Position (for multi-extruder printers)" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2581 +#: src/slic3r/GUI/Tab.cpp:2585 msgid "Only lift Z" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2594 +#: src/slic3r/GUI/Tab.cpp:2598 msgid "" "Retraction when tool is disabled (advanced settings for multi-extruder " "setups)" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2601 +#: src/slic3r/GUI/Tab.cpp:2605 msgid "Reset to Filament Color" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2779 +#: src/slic3r/GUI/Tab.cpp:2783 msgid "" "The Wipe option is not available when using the Firmware Retraction mode.\n" "\n" "Shall I disable it in order to enable Firmware Retraction?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2781 +#: src/slic3r/GUI/Tab.cpp:2785 msgid "Firmware Retraction" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3367 +#: src/slic3r/GUI/Tab.cpp:3376 msgid "Detached" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3430 +#: src/slic3r/GUI/Tab.cpp:3439 msgid "remove" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3430 +#: src/slic3r/GUI/Tab.cpp:3439 msgid "delete" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3439 +#: src/slic3r/GUI/Tab.cpp:3448 msgid "It's a last preset for this physical printer." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3444 +#: src/slic3r/GUI/Tab.cpp:3453 msgid "" "Are you sure you want to delete \"%1%\" preset from the physical printer " "\"%2%\"?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3456 +#: src/slic3r/GUI/Tab.cpp:3465 msgid "" "The physical printer(s) below is based on the preset, you are going to " "delete." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3460 +#: src/slic3r/GUI/Tab.cpp:3469 msgid "" "Note, that selected preset will be deleted from this/those printer(s) too." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3464 +#: src/slic3r/GUI/Tab.cpp:3473 msgid "" "The physical printer(s) below is based only on the preset, you are going to " "delete." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3468 +#: src/slic3r/GUI/Tab.cpp:3477 msgid "" "Note, that this/those printer(s) will be deleted after deleting of the " "selected preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3472 +#: src/slic3r/GUI/Tab.cpp:3481 msgid "Are you sure you want to %1% the selected preset?" msgstr "" #. TRN Remove/Delete -#: src/slic3r/GUI/Tab.cpp:3477 +#: src/slic3r/GUI/Tab.cpp:3486 msgid "%1% Preset" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3558 src/slic3r/GUI/Tab.cpp:3630 +#: src/slic3r/GUI/Tab.cpp:3567 src/slic3r/GUI/Tab.cpp:3639 msgid "Set" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3694 +#: src/slic3r/GUI/Tab.cpp:3703 msgid "" "Machine limits will be emitted to G-code and used to estimate print time." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3697 +#: src/slic3r/GUI/Tab.cpp:3706 msgid "" "Machine limits will NOT be emitted to G-code, however they will be used to " "estimate print time, which may therefore not be accurate as the printer may " "apply a different set of machine limits." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3701 +#: src/slic3r/GUI/Tab.cpp:3710 msgid "" "Machine limits are not set, therefore the print time estimate may not be " "accurate." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3723 +#: src/slic3r/GUI/Tab.cpp:3732 msgid "LOCKED LOCK" msgstr "" #. TRN Description for "LOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:3725 +#: src/slic3r/GUI/Tab.cpp:3734 msgid "" "indicates that the settings are the same as the system (or default) values " "for the current option group" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3727 +#: src/slic3r/GUI/Tab.cpp:3736 msgid "UNLOCKED LOCK" msgstr "" #. TRN Description for "UNLOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:3729 +#: src/slic3r/GUI/Tab.cpp:3738 msgid "" "indicates that some settings were changed and are not equal to the system " "(or default) values for the current option group.\n" @@ -7037,23 +7136,23 @@ msgid "" "to the system (or default) values." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3734 +#: src/slic3r/GUI/Tab.cpp:3743 msgid "WHITE BULLET" msgstr "" #. TRN Description for "WHITE BULLET" -#: src/slic3r/GUI/Tab.cpp:3736 +#: src/slic3r/GUI/Tab.cpp:3745 msgid "" "for the left button: indicates a non-system (or non-default) preset,\n" "for the right button: indicates that the settings hasn't been modified." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3739 +#: src/slic3r/GUI/Tab.cpp:3748 msgid "BACK ARROW" msgstr "" #. TRN Description for "BACK ARROW" -#: src/slic3r/GUI/Tab.cpp:3741 +#: src/slic3r/GUI/Tab.cpp:3750 msgid "" "indicates that the settings were changed and are not equal to the last saved " "preset for the current option group.\n" @@ -7061,13 +7160,13 @@ msgid "" "to the last saved preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3751 +#: src/slic3r/GUI/Tab.cpp:3760 msgid "" "LOCKED LOCK icon indicates that the settings are the same as the system (or " "default) values for the current option group" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3753 +#: src/slic3r/GUI/Tab.cpp:3762 msgid "" "UNLOCKED LOCK icon indicates that some settings were changed and are not " "equal to the system (or default) values for the current option group.\n" @@ -7075,17 +7174,17 @@ msgid "" "default) values." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3756 +#: src/slic3r/GUI/Tab.cpp:3765 msgid "WHITE BULLET icon indicates a non system (or non default) preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3759 +#: src/slic3r/GUI/Tab.cpp:3768 msgid "" "WHITE BULLET icon indicates that the settings are the same as in the last " "saved preset for the current option group." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3761 +#: src/slic3r/GUI/Tab.cpp:3770 msgid "" "BACK ARROW icon indicates that the settings were changed and are not equal " "to the last saved preset for the current option group.\n" @@ -7093,196 +7192,196 @@ msgid "" "preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3767 +#: src/slic3r/GUI/Tab.cpp:3776 msgid "" "LOCKED LOCK icon indicates that the value is the same as the system (or " "default) value." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3768 +#: src/slic3r/GUI/Tab.cpp:3777 msgid "" "UNLOCKED LOCK icon indicates that the value was changed and is not equal to " "the system (or default) value.\n" "Click to reset current value to the system (or default) value." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3774 +#: src/slic3r/GUI/Tab.cpp:3783 msgid "" "WHITE BULLET icon indicates that the value is the same as in the last saved " "preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3775 +#: src/slic3r/GUI/Tab.cpp:3784 msgid "" "BACK ARROW icon indicates that the value was changed and is not equal to the " "last saved preset.\n" "Click to reset current value to the last saved preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3919 src/slic3r/GUI/Tab.cpp:3921 +#: src/slic3r/GUI/Tab.cpp:3928 src/slic3r/GUI/Tab.cpp:3930 msgid "Material" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4043 +#: src/slic3r/GUI/Tab.cpp:4052 msgid "Support head" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4048 +#: src/slic3r/GUI/Tab.cpp:4057 msgid "Support pillar" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4071 +#: src/slic3r/GUI/Tab.cpp:4080 msgid "Connection of the support sticks and junctions" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4076 +#: src/slic3r/GUI/Tab.cpp:4085 msgid "Automatic generation" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4150 +#: src/slic3r/GUI/Tab.cpp:4159 msgid "" "\"%1%\" is disabled because \"%2%\" is on in \"%3%\" category.\n" "To enable \"%1%\", please switch off \"%2%\"" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4152 src/libslic3r/PrintConfig.cpp:2972 +#: src/slic3r/GUI/Tab.cpp:4161 src/libslic3r/PrintConfig.cpp:3002 msgid "Object elevation" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4152 src/libslic3r/PrintConfig.cpp:3074 +#: src/slic3r/GUI/Tab.cpp:4161 src/libslic3r/PrintConfig.cpp:3104 msgid "Pad around object" msgstr "" -#: src/slic3r/GUI/Tab.hpp:374 src/slic3r/GUI/Tab.hpp:496 +#: src/slic3r/GUI/Tab.hpp:370 src/slic3r/GUI/Tab.hpp:492 msgid "Print Settings" msgstr "" -#: src/slic3r/GUI/Tab.hpp:405 +#: src/slic3r/GUI/Tab.hpp:401 msgid "Filament Settings" msgstr "" -#: src/slic3r/GUI/Tab.hpp:446 +#: src/slic3r/GUI/Tab.hpp:442 msgid "Printer Settings" msgstr "" -#: src/slic3r/GUI/Tab.hpp:480 +#: src/slic3r/GUI/Tab.hpp:476 msgid "Material Settings" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:143 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:152 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:851 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:149 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:158 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:857 msgid "Undef" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:531 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:537 msgid "PrusaSlicer is closing: Unsaved Changes" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:548 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:554 msgid "Switching Presets: Unsaved Changes" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:614 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:620 msgid "Old Value" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:615 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:621 msgid "New Value" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:646 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:652 msgid "Transfer" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:647 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:653 msgid "Discard" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:648 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:654 msgid "Save" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:668 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:674 msgid "PrusaSlicer will remember your action." msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:670 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:676 msgid "" "You will not be asked about the unsaved changes the next time you close " "PrusaSlicer." msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:671 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:677 msgid "" "You will not be asked about the unsaved changes the next time you switch a " "preset." msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:672 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:678 msgid "" "Visit \"Preferences\" and check \"%1%\"\n" "to be asked about unsaved changes again." msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:674 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:680 msgid "PrusaSlicer: Don't ask me again" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:741 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:747 msgid "" "Some fields are too long to fit. Right mouse click reveals the full text." msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:743 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:749 msgid "All settings changes will be discarded." msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:746 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:752 msgid "Save the selected options." msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:746 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:752 msgid "Transfer the selected settings to the newly selected preset." msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:750 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:756 msgid "Save the selected options to preset \"%1%\"." msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:751 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:757 msgid "Transfer the selected options to the newly selected preset \"%1%\"." msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1010 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1019 msgid "The following presets were modified:" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1015 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1024 msgid "Preset \"%1%\" has the following unsaved changes:" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1019 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1028 msgid "" "Preset \"%1%\" is not compatible with the new printer profile and it has the " "following unsaved changes:" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1020 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1029 msgid "" "Preset \"%1%\" is not compatible with the new print profile and it has the " "following unsaved changes:" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1067 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1075 msgid "Extruders count" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1183 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1197 msgid "Old value" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1184 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1198 msgid "New value" msgstr "" @@ -7688,17 +7787,53 @@ msgstr "" msgid "Could not connect to Prusa SLA" msgstr "" -#: src/slic3r/Utils/PresetUpdater.cpp:727 +#: src/slic3r/Utils/PresetUpdater.cpp:70 +msgid "" +"Copying of file %1% to %2% failed. Permissions fail at target file before " +"copying.\n" +"Error message : %3%\n" +"This error happend during %4% phase." +msgstr "" + +#: src/slic3r/Utils/PresetUpdater.cpp:85 +msgid "" +"Copying of file %1% to %2% failed.\n" +"Error message : %3%\n" +"Copying was triggered by function: %4%" +msgstr "" + +#: src/slic3r/Utils/PresetUpdater.cpp:92 +msgid "" +"Copying of file %1% to %2% failed. Permissions fail at target file after " +"copying.\n" +"Error message : %3%\n" +"Copying was triggered by function: %4%" +msgstr "" + +#: src/slic3r/Utils/PresetUpdater.cpp:121 +msgid "install" +msgstr "" + +#: src/slic3r/Utils/PresetUpdater.cpp:413 +#: src/slic3r/Utils/PresetUpdater.cpp:421 +msgid "checking install indices" +msgstr "" + +#: src/slic3r/Utils/PresetUpdater.cpp:601 +msgid "getting config updates" +msgstr "" + +#: src/slic3r/Utils/PresetUpdater.cpp:755 #, possible-c-format msgid "requires min. %s and max. %s" msgstr "" -#: src/slic3r/Utils/PresetUpdater.cpp:731 +#: src/slic3r/Utils/PresetUpdater.cpp:759 #, possible-c-format msgid "requires min. %s" msgstr "" -#: src/slic3r/Utils/PresetUpdater.cpp:734 +#: src/slic3r/Utils/PresetUpdater.cpp:762 #, possible-c-format msgid "requires max. %s" msgstr "" @@ -7729,19 +7864,19 @@ msgstr "" msgid "Open G-code file:" msgstr "" -#: src/libslic3r/GCode.cpp:612 +#: src/libslic3r/GCode.cpp:521 msgid "There is an object with no extrusions on the first layer." msgstr "" -#: src/libslic3r/GCode.cpp:630 +#: src/libslic3r/GCode.cpp:539 msgid "Empty layers detected, the output would not be printable." msgstr "" -#: src/libslic3r/GCode.cpp:631 +#: src/libslic3r/GCode.cpp:540 msgid "Print z" msgstr "" -#: src/libslic3r/GCode.cpp:632 +#: src/libslic3r/GCode.cpp:541 msgid "" "This is usually caused by negligibly small extrusions or by a faulty model. " "Try to repair the model or change its orientation on the bed." @@ -7756,13 +7891,13 @@ msgid "" "Cannot calculate extrusion width for %1%: Variable \"%2%\" not accessible." msgstr "" -#: src/libslic3r/Format/3mf.cpp:1667 +#: src/libslic3r/Format/3mf.cpp:1668 msgid "" "The selected 3mf file has been saved with a newer version of %1% and is not " "compatible." msgstr "" -#: src/libslic3r/Format/AMF.cpp:955 +#: src/libslic3r/Format/AMF.cpp:958 msgid "" "The selected amf file has been saved with a newer version of %1% and is not " "compatible." @@ -7892,114 +8027,117 @@ msgstr "" msgid "write calledback failed" msgstr "" -#: src/libslic3r/Preset.cpp:1258 +#: src/libslic3r/Preset.cpp:1299 msgid "filament" msgstr "" -#: src/libslic3r/Print.cpp:1247 +#: src/libslic3r/Print.cpp:1251 msgid "All objects are outside of the print volume." msgstr "" -#: src/libslic3r/Print.cpp:1250 +#: src/libslic3r/Print.cpp:1254 msgid "The supplied settings will cause an empty print." msgstr "" -#: src/libslic3r/Print.cpp:1254 +#: src/libslic3r/Print.cpp:1258 msgid "Some objects are too close; your extruder will collide with them." msgstr "" -#: src/libslic3r/Print.cpp:1256 +#: src/libslic3r/Print.cpp:1260 msgid "" "Some objects are too tall and cannot be printed without extruder collisions." msgstr "" -#: src/libslic3r/Print.cpp:1265 -msgid "The Spiral Vase option can only be used when printing a single object." +#: src/libslic3r/Print.cpp:1269 +msgid "" +"Only a single object may be printed at a time in Spiral Vase mode. Either " +"remove all but the last object, or enable sequential mode by " +"\"complete_objects\"." msgstr "" -#: src/libslic3r/Print.cpp:1272 +#: src/libslic3r/Print.cpp:1277 msgid "" "The Spiral Vase option can only be used when printing single material " "objects." msgstr "" -#: src/libslic3r/Print.cpp:1285 +#: src/libslic3r/Print.cpp:1290 msgid "" "The wipe tower is only supported if all extruders have the same nozzle " "diameter and use filaments of the same diameter." msgstr "" -#: src/libslic3r/Print.cpp:1291 +#: src/libslic3r/Print.cpp:1296 msgid "" "The Wipe Tower is currently only supported for the Marlin, RepRap/Sprinter, " "RepRapFirmware and Repetier G-code flavors." msgstr "" -#: src/libslic3r/Print.cpp:1293 +#: src/libslic3r/Print.cpp:1298 msgid "" "The Wipe Tower is currently only supported with the relative extruder " "addressing (use_relative_e_distances=1)." msgstr "" -#: src/libslic3r/Print.cpp:1295 +#: src/libslic3r/Print.cpp:1300 msgid "Ooze prevention is currently not supported with the wipe tower enabled." msgstr "" -#: src/libslic3r/Print.cpp:1297 +#: src/libslic3r/Print.cpp:1302 msgid "" "The Wipe Tower currently does not support volumetric E (use_volumetric_e=0)." msgstr "" -#: src/libslic3r/Print.cpp:1299 +#: src/libslic3r/Print.cpp:1304 msgid "" "The Wipe Tower is currently not supported for multimaterial sequential " "prints." msgstr "" -#: src/libslic3r/Print.cpp:1320 +#: src/libslic3r/Print.cpp:1325 msgid "" "The Wipe Tower is only supported for multiple objects if they have equal " "layer heights" msgstr "" -#: src/libslic3r/Print.cpp:1322 +#: src/libslic3r/Print.cpp:1327 msgid "" "The Wipe Tower is only supported for multiple objects if they are printed " "over an equal number of raft layers" msgstr "" -#: src/libslic3r/Print.cpp:1324 +#: src/libslic3r/Print.cpp:1329 msgid "" "The Wipe Tower is only supported for multiple objects if they are printed " "with the same support_material_contact_distance" msgstr "" -#: src/libslic3r/Print.cpp:1326 +#: src/libslic3r/Print.cpp:1331 msgid "" "The Wipe Tower is only supported for multiple objects if they are sliced " "equally." msgstr "" -#: src/libslic3r/Print.cpp:1368 +#: src/libslic3r/Print.cpp:1373 msgid "" "The Wipe tower is only supported if all objects have the same variable layer " "height" msgstr "" -#: src/libslic3r/Print.cpp:1394 +#: src/libslic3r/Print.cpp:1399 msgid "" "One or more object were assigned an extruder that the printer does not have." msgstr "" -#: src/libslic3r/Print.cpp:1403 +#: src/libslic3r/Print.cpp:1408 msgid "%1%=%2% mm is too low to be printable at a layer height %3% mm" msgstr "" -#: src/libslic3r/Print.cpp:1406 +#: src/libslic3r/Print.cpp:1411 msgid "Excessive %1%=%2% mm to be printable with a nozzle diameter %3% mm" msgstr "" -#: src/libslic3r/Print.cpp:1417 +#: src/libslic3r/Print.cpp:1422 msgid "" "Printing with multiple extruders of differing nozzle diameters. If support " "is to be printed with the current extruder (support_material_extruder == 0 " @@ -8007,13 +8145,13 @@ msgid "" "same diameter." msgstr "" -#: src/libslic3r/Print.cpp:1425 +#: src/libslic3r/Print.cpp:1430 msgid "" "For the Wipe Tower to work with the soluble supports, the support layers " "need to be synchronized with the object layers." msgstr "" -#: src/libslic3r/Print.cpp:1429 +#: src/libslic3r/Print.cpp:1434 msgid "" "The Wipe Tower currently supports the non-soluble supports only if they are " "printed with the current extruder without triggering a tool change. (both " @@ -8021,31 +8159,31 @@ msgid "" "set to 0)." msgstr "" -#: src/libslic3r/Print.cpp:1451 +#: src/libslic3r/Print.cpp:1456 msgid "First layer height can't be greater than nozzle diameter" msgstr "" -#: src/libslic3r/Print.cpp:1456 +#: src/libslic3r/Print.cpp:1461 msgid "Layer height can't be greater than nozzle diameter" msgstr "" -#: src/libslic3r/Print.cpp:1615 +#: src/libslic3r/Print.cpp:1620 msgid "Infilling layers" msgstr "" -#: src/libslic3r/Print.cpp:1641 +#: src/libslic3r/Print.cpp:1646 msgid "Generating skirt" msgstr "" -#: src/libslic3r/Print.cpp:1650 +#: src/libslic3r/Print.cpp:1655 msgid "Generating brim" msgstr "" -#: src/libslic3r/Print.cpp:1673 +#: src/libslic3r/Print.cpp:1678 msgid "Exporting G-code" msgstr "" -#: src/libslic3r/Print.cpp:1677 +#: src/libslic3r/Print.cpp:1682 msgid "Generating G-code" msgstr "" @@ -8053,34 +8191,34 @@ msgstr "" msgid "Pad brim size is too small for the current configuration." msgstr "" -#: src/libslic3r/SLAPrint.cpp:628 +#: src/libslic3r/SLAPrint.cpp:630 msgid "" "Cannot proceed without support points! Add support points or disable support " "generation." msgstr "" -#: src/libslic3r/SLAPrint.cpp:640 +#: src/libslic3r/SLAPrint.cpp:642 msgid "" "Elevation is too low for object. Use the \"Pad around object\" feature to " "print the object without elevation." msgstr "" -#: src/libslic3r/SLAPrint.cpp:646 +#: src/libslic3r/SLAPrint.cpp:648 msgid "" "The endings of the support pillars will be deployed on the gap between the " "object and the pad. 'Support base safety distance' has to be greater than " "the 'Pad object gap' parameter to avoid this." msgstr "" -#: src/libslic3r/SLAPrint.cpp:661 +#: src/libslic3r/SLAPrint.cpp:663 msgid "Exposition time is out of printer profile bounds." msgstr "" -#: src/libslic3r/SLAPrint.cpp:668 +#: src/libslic3r/SLAPrint.cpp:670 msgid "Initial exposition time is out of printer profile bounds." msgstr "" -#: src/libslic3r/SLAPrint.cpp:784 +#: src/libslic3r/SLAPrint.cpp:786 msgid "Slicing done" msgstr "" @@ -8171,41 +8309,47 @@ msgid "Bed custom model" msgstr "" #: src/libslic3r/PrintConfig.cpp:66 -msgid "Picture sizes to be stored into a .gcode and .sl1 files" +msgid "G-code thumbnails" msgstr "" -#: src/libslic3r/PrintConfig.cpp:73 +#: src/libslic3r/PrintConfig.cpp:67 +msgid "" +"Picture sizes to be stored into a .gcode and .sl1 files, in the following " +"format: \"XxY, XxY, ...\"" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:75 msgid "" "This setting controls the height (and thus the total number) of the slices/" "layers. Thinner layers give better accuracy but take more time to print." msgstr "" -#: src/libslic3r/PrintConfig.cpp:80 +#: src/libslic3r/PrintConfig.cpp:82 msgid "Max print height" msgstr "" -#: src/libslic3r/PrintConfig.cpp:81 +#: src/libslic3r/PrintConfig.cpp:83 msgid "" "Set this to the maximum height that can be reached by your extruder while " "printing." msgstr "" -#: src/libslic3r/PrintConfig.cpp:89 +#: src/libslic3r/PrintConfig.cpp:91 msgid "Slice gap closing radius" msgstr "" -#: src/libslic3r/PrintConfig.cpp:91 +#: src/libslic3r/PrintConfig.cpp:93 msgid "" "Cracks smaller than 2x gap closing radius are being filled during the " "triangle mesh slicing. The gap closing operation may reduce the final print " "resolution, therefore it is advisable to keep the value reasonably low." msgstr "" -#: src/libslic3r/PrintConfig.cpp:99 +#: src/libslic3r/PrintConfig.cpp:101 msgid "Hostname, IP or URL" msgstr "" -#: src/libslic3r/PrintConfig.cpp:100 +#: src/libslic3r/PrintConfig.cpp:102 msgid "" "Slic3r can upload G-code files to a printer host. This field should contain " "the hostname, IP address or URL of the printer host instance. Print host " @@ -8214,98 +8358,114 @@ msgid "" "password@your-octopi-address/" msgstr "" -#: src/libslic3r/PrintConfig.cpp:108 +#: src/libslic3r/PrintConfig.cpp:110 msgid "API Key / Password" msgstr "" -#: src/libslic3r/PrintConfig.cpp:109 +#: src/libslic3r/PrintConfig.cpp:111 msgid "" "Slic3r can upload G-code files to a printer host. This field should contain " "the API Key or the password required for authentication." msgstr "" -#: src/libslic3r/PrintConfig.cpp:116 +#: src/libslic3r/PrintConfig.cpp:118 msgid "Name of the printer" msgstr "" -#: src/libslic3r/PrintConfig.cpp:123 +#: src/libslic3r/PrintConfig.cpp:125 msgid "" "Custom CA certificate file can be specified for HTTPS OctoPrint connections, " "in crt/pem format. If left blank, the default OS CA certificate repository " "is used." msgstr "" -#: src/libslic3r/PrintConfig.cpp:129 +#: src/libslic3r/PrintConfig.cpp:131 msgid "Elephant foot compensation" msgstr "" -#: src/libslic3r/PrintConfig.cpp:131 +#: src/libslic3r/PrintConfig.cpp:133 msgid "" "The first layer will be shrunk in the XY plane by the configured value to " "compensate for the 1st layer squish aka an Elephant Foot effect." msgstr "" -#: src/libslic3r/PrintConfig.cpp:147 +#: src/libslic3r/PrintConfig.cpp:149 msgid "Password" msgstr "" -#: src/libslic3r/PrintConfig.cpp:153 +#: src/libslic3r/PrintConfig.cpp:155 msgid "Printer preset name" msgstr "" -#: src/libslic3r/PrintConfig.cpp:154 +#: src/libslic3r/PrintConfig.cpp:156 msgid "Related printer preset name" msgstr "" -#: src/libslic3r/PrintConfig.cpp:159 +#: src/libslic3r/PrintConfig.cpp:161 msgid "Authorization Type" msgstr "" -#: src/libslic3r/PrintConfig.cpp:164 +#: src/libslic3r/PrintConfig.cpp:166 msgid "API key" msgstr "" -#: src/libslic3r/PrintConfig.cpp:165 +#: src/libslic3r/PrintConfig.cpp:167 msgid "HTTP digest" msgstr "" -#: src/libslic3r/PrintConfig.cpp:178 +#: src/libslic3r/PrintConfig.cpp:180 msgid "Avoid crossing perimeters" msgstr "" -#: src/libslic3r/PrintConfig.cpp:179 +#: src/libslic3r/PrintConfig.cpp:181 msgid "" "Optimize travel moves in order to minimize the crossing of perimeters. This " "is mostly useful with Bowden extruders which suffer from oozing. This " "feature slows down both the print and the G-code generation." msgstr "" -#: src/libslic3r/PrintConfig.cpp:186 src/libslic3r/PrintConfig.cpp:2261 +#: src/libslic3r/PrintConfig.cpp:188 +msgid "Avoid crossing perimeters - Max detour length" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:190 +msgid "" +"The maximum detour length for avoid crossing perimeters. If the detour is " +"longer than this value, avoid crossing perimeters is not applied for this " +"travel path. Detour length could be specified either as an absolute value or " +"as percentage (for example 50%) of a direct travel path." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:193 +msgid "mm or % (zero to disable)" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:199 src/libslic3r/PrintConfig.cpp:2291 msgid "Other layers" msgstr "" -#: src/libslic3r/PrintConfig.cpp:187 +#: src/libslic3r/PrintConfig.cpp:200 msgid "" "Bed temperature for layers after the first one. Set this to zero to disable " "bed temperature control commands in the output." msgstr "" -#: src/libslic3r/PrintConfig.cpp:190 +#: src/libslic3r/PrintConfig.cpp:203 msgid "Bed temperature" msgstr "" -#: src/libslic3r/PrintConfig.cpp:197 +#: src/libslic3r/PrintConfig.cpp:210 msgid "" "This custom code is inserted at every layer change, right before the Z move. " "Note that you can use placeholder variables for all Slic3r settings as well " "as [layer_num] and [layer_z]." msgstr "" -#: src/libslic3r/PrintConfig.cpp:207 +#: src/libslic3r/PrintConfig.cpp:220 msgid "Between objects G-code" msgstr "" -#: src/libslic3r/PrintConfig.cpp:208 +#: src/libslic3r/PrintConfig.cpp:221 msgid "" "This code is inserted between objects when using sequential printing. By " "default extruder and bed temperature are reset using non-wait command; " @@ -8315,81 +8475,81 @@ msgid "" "S[first_layer_temperature]\" command wherever you want." msgstr "" -#: src/libslic3r/PrintConfig.cpp:219 +#: src/libslic3r/PrintConfig.cpp:232 msgid "Number of solid layers to generate on bottom surfaces." msgstr "" -#: src/libslic3r/PrintConfig.cpp:220 +#: src/libslic3r/PrintConfig.cpp:233 msgid "Bottom solid layers" msgstr "" -#: src/libslic3r/PrintConfig.cpp:228 +#: src/libslic3r/PrintConfig.cpp:241 msgid "" "The number of bottom solid layers is increased above bottom_solid_layers if " "necessary to satisfy minimum thickness of bottom shell." msgstr "" -#: src/libslic3r/PrintConfig.cpp:230 +#: src/libslic3r/PrintConfig.cpp:243 msgid "Minimum bottom shell thickness" msgstr "" -#: src/libslic3r/PrintConfig.cpp:236 +#: src/libslic3r/PrintConfig.cpp:249 msgid "Bridge" msgstr "" -#: src/libslic3r/PrintConfig.cpp:237 +#: src/libslic3r/PrintConfig.cpp:250 msgid "" "This is the acceleration your printer will use for bridges. Set zero to " "disable acceleration control for bridges." msgstr "" -#: src/libslic3r/PrintConfig.cpp:239 src/libslic3r/PrintConfig.cpp:382 -#: src/libslic3r/PrintConfig.cpp:925 src/libslic3r/PrintConfig.cpp:1053 -#: src/libslic3r/PrintConfig.cpp:1334 src/libslic3r/PrintConfig.cpp:1383 -#: src/libslic3r/PrintConfig.cpp:1393 src/libslic3r/PrintConfig.cpp:1586 +#: src/libslic3r/PrintConfig.cpp:252 src/libslic3r/PrintConfig.cpp:395 +#: src/libslic3r/PrintConfig.cpp:940 src/libslic3r/PrintConfig.cpp:1079 +#: src/libslic3r/PrintConfig.cpp:1360 src/libslic3r/PrintConfig.cpp:1409 +#: src/libslic3r/PrintConfig.cpp:1419 src/libslic3r/PrintConfig.cpp:1612 msgid "mm/s²" msgstr "" -#: src/libslic3r/PrintConfig.cpp:245 +#: src/libslic3r/PrintConfig.cpp:258 msgid "Bridging angle" msgstr "" -#: src/libslic3r/PrintConfig.cpp:247 +#: src/libslic3r/PrintConfig.cpp:260 msgid "" "Bridging angle override. If left to zero, the bridging angle will be " "calculated automatically. Otherwise the provided angle will be used for all " "bridges. Use 180° for zero angle." msgstr "" -#: src/libslic3r/PrintConfig.cpp:250 src/libslic3r/PrintConfig.cpp:837 -#: src/libslic3r/PrintConfig.cpp:1823 src/libslic3r/PrintConfig.cpp:1833 -#: src/libslic3r/PrintConfig.cpp:2091 src/libslic3r/PrintConfig.cpp:2246 -#: src/libslic3r/PrintConfig.cpp:2445 src/libslic3r/PrintConfig.cpp:2946 -#: src/libslic3r/PrintConfig.cpp:3067 +#: src/libslic3r/PrintConfig.cpp:263 src/libslic3r/PrintConfig.cpp:852 +#: src/libslic3r/PrintConfig.cpp:1853 src/libslic3r/PrintConfig.cpp:1863 +#: src/libslic3r/PrintConfig.cpp:2121 src/libslic3r/PrintConfig.cpp:2276 +#: src/libslic3r/PrintConfig.cpp:2475 src/libslic3r/PrintConfig.cpp:2976 +#: src/libslic3r/PrintConfig.cpp:3097 msgid "°" msgstr "" -#: src/libslic3r/PrintConfig.cpp:256 +#: src/libslic3r/PrintConfig.cpp:269 msgid "Bridges fan speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:257 +#: src/libslic3r/PrintConfig.cpp:270 msgid "This fan speed is enforced during all bridges and overhangs." msgstr "" -#: src/libslic3r/PrintConfig.cpp:258 src/libslic3r/PrintConfig.cpp:849 -#: src/libslic3r/PrintConfig.cpp:1222 src/libslic3r/PrintConfig.cpp:1401 -#: src/libslic3r/PrintConfig.cpp:1464 src/libslic3r/PrintConfig.cpp:1715 -#: src/libslic3r/PrintConfig.cpp:2623 src/libslic3r/PrintConfig.cpp:2860 -#: src/libslic3r/PrintConfig.cpp:2986 +#: src/libslic3r/PrintConfig.cpp:271 src/libslic3r/PrintConfig.cpp:864 +#: src/libslic3r/PrintConfig.cpp:1248 src/libslic3r/PrintConfig.cpp:1427 +#: src/libslic3r/PrintConfig.cpp:1490 src/libslic3r/PrintConfig.cpp:1745 +#: src/libslic3r/PrintConfig.cpp:2653 src/libslic3r/PrintConfig.cpp:2890 +#: src/libslic3r/PrintConfig.cpp:3016 msgid "%" msgstr "" -#: src/libslic3r/PrintConfig.cpp:265 +#: src/libslic3r/PrintConfig.cpp:278 msgid "Bridge flow ratio" msgstr "" -#: src/libslic3r/PrintConfig.cpp:267 +#: src/libslic3r/PrintConfig.cpp:280 msgid "" "This factor affects the amount of plastic for bridging. You can decrease it " "slightly to pull the extrudates and prevent sagging, although default " @@ -8397,84 +8557,84 @@ msgid "" "before tweaking this." msgstr "" -#: src/libslic3r/PrintConfig.cpp:277 +#: src/libslic3r/PrintConfig.cpp:290 msgid "Bridges" msgstr "" -#: src/libslic3r/PrintConfig.cpp:279 +#: src/libslic3r/PrintConfig.cpp:292 msgid "Speed for printing bridges." msgstr "" -#: src/libslic3r/PrintConfig.cpp:280 src/libslic3r/PrintConfig.cpp:656 -#: src/libslic3r/PrintConfig.cpp:664 src/libslic3r/PrintConfig.cpp:673 -#: src/libslic3r/PrintConfig.cpp:681 src/libslic3r/PrintConfig.cpp:708 -#: src/libslic3r/PrintConfig.cpp:727 src/libslic3r/PrintConfig.cpp:989 -#: src/libslic3r/PrintConfig.cpp:1168 src/libslic3r/PrintConfig.cpp:1241 -#: src/libslic3r/PrintConfig.cpp:1317 src/libslic3r/PrintConfig.cpp:1351 -#: src/libslic3r/PrintConfig.cpp:1363 src/libslic3r/PrintConfig.cpp:1373 -#: src/libslic3r/PrintConfig.cpp:1423 src/libslic3r/PrintConfig.cpp:1482 -#: src/libslic3r/PrintConfig.cpp:1616 src/libslic3r/PrintConfig.cpp:1790 -#: src/libslic3r/PrintConfig.cpp:1799 src/libslic3r/PrintConfig.cpp:2225 -#: src/libslic3r/PrintConfig.cpp:2352 +#: src/libslic3r/PrintConfig.cpp:293 src/libslic3r/PrintConfig.cpp:671 +#: src/libslic3r/PrintConfig.cpp:679 src/libslic3r/PrintConfig.cpp:688 +#: src/libslic3r/PrintConfig.cpp:696 src/libslic3r/PrintConfig.cpp:723 +#: src/libslic3r/PrintConfig.cpp:742 src/libslic3r/PrintConfig.cpp:1015 +#: src/libslic3r/PrintConfig.cpp:1194 src/libslic3r/PrintConfig.cpp:1267 +#: src/libslic3r/PrintConfig.cpp:1343 src/libslic3r/PrintConfig.cpp:1377 +#: src/libslic3r/PrintConfig.cpp:1389 src/libslic3r/PrintConfig.cpp:1399 +#: src/libslic3r/PrintConfig.cpp:1449 src/libslic3r/PrintConfig.cpp:1508 +#: src/libslic3r/PrintConfig.cpp:1642 src/libslic3r/PrintConfig.cpp:1820 +#: src/libslic3r/PrintConfig.cpp:1829 src/libslic3r/PrintConfig.cpp:2255 +#: src/libslic3r/PrintConfig.cpp:2382 msgid "mm/s" msgstr "" -#: src/libslic3r/PrintConfig.cpp:287 +#: src/libslic3r/PrintConfig.cpp:300 msgid "Brim width" msgstr "" -#: src/libslic3r/PrintConfig.cpp:288 +#: src/libslic3r/PrintConfig.cpp:301 msgid "" "Horizontal width of the brim that will be printed around each object on the " "first layer." msgstr "" -#: src/libslic3r/PrintConfig.cpp:295 +#: src/libslic3r/PrintConfig.cpp:308 msgid "Clip multi-part objects" msgstr "" -#: src/libslic3r/PrintConfig.cpp:296 +#: src/libslic3r/PrintConfig.cpp:309 msgid "" "When printing multi-material objects, this settings will make Slic3r to clip " "the overlapping object parts one by the other (2nd part will be clipped by " "the 1st, 3rd part will be clipped by the 1st and 2nd etc)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:303 +#: src/libslic3r/PrintConfig.cpp:316 msgid "Colorprint height" msgstr "" -#: src/libslic3r/PrintConfig.cpp:304 +#: src/libslic3r/PrintConfig.cpp:317 msgid "Heights at which a filament change is to occur." msgstr "" -#: src/libslic3r/PrintConfig.cpp:314 +#: src/libslic3r/PrintConfig.cpp:327 msgid "Compatible printers condition" msgstr "" -#: src/libslic3r/PrintConfig.cpp:315 +#: src/libslic3r/PrintConfig.cpp:328 msgid "" "A boolean expression using the configuration values of an active printer " "profile. If this expression evaluates to true, this profile is considered " "compatible with the active printer profile." msgstr "" -#: src/libslic3r/PrintConfig.cpp:329 +#: src/libslic3r/PrintConfig.cpp:342 msgid "Compatible print profiles condition" msgstr "" -#: src/libslic3r/PrintConfig.cpp:330 +#: src/libslic3r/PrintConfig.cpp:343 msgid "" "A boolean expression using the configuration values of an active print " "profile. If this expression evaluates to true, this profile is considered " "compatible with the active print profile." msgstr "" -#: src/libslic3r/PrintConfig.cpp:347 +#: src/libslic3r/PrintConfig.cpp:360 msgid "Complete individual objects" msgstr "" -#: src/libslic3r/PrintConfig.cpp:348 +#: src/libslic3r/PrintConfig.cpp:361 msgid "" "When printing multiple objects or copies, this feature will complete each " "object before moving onto next one (and starting it from its bottom layer). " @@ -8482,97 +8642,97 @@ msgid "" "warn and prevent you from extruder collisions, but beware." msgstr "" -#: src/libslic3r/PrintConfig.cpp:356 +#: src/libslic3r/PrintConfig.cpp:369 msgid "Enable auto cooling" msgstr "" -#: src/libslic3r/PrintConfig.cpp:357 +#: src/libslic3r/PrintConfig.cpp:370 msgid "" "This flag enables the automatic cooling logic that adjusts print speed and " "fan speed according to layer printing time." msgstr "" -#: src/libslic3r/PrintConfig.cpp:362 +#: src/libslic3r/PrintConfig.cpp:375 msgid "Cooling tube position" msgstr "" -#: src/libslic3r/PrintConfig.cpp:363 +#: src/libslic3r/PrintConfig.cpp:376 msgid "Distance of the center-point of the cooling tube from the extruder tip." msgstr "" -#: src/libslic3r/PrintConfig.cpp:370 +#: src/libslic3r/PrintConfig.cpp:383 msgid "Cooling tube length" msgstr "" -#: src/libslic3r/PrintConfig.cpp:371 +#: src/libslic3r/PrintConfig.cpp:384 msgid "Length of the cooling tube to limit space for cooling moves inside it." msgstr "" -#: src/libslic3r/PrintConfig.cpp:379 +#: src/libslic3r/PrintConfig.cpp:392 msgid "" "This is the acceleration your printer will be reset to after the role-" "specific acceleration values are used (perimeter/infill). Set zero to " "prevent resetting acceleration at all." msgstr "" -#: src/libslic3r/PrintConfig.cpp:388 +#: src/libslic3r/PrintConfig.cpp:401 msgid "Default filament profile" msgstr "" -#: src/libslic3r/PrintConfig.cpp:389 +#: src/libslic3r/PrintConfig.cpp:402 msgid "" "Default filament profile associated with the current printer profile. On " "selection of the current printer profile, this filament profile will be " "activated." msgstr "" -#: src/libslic3r/PrintConfig.cpp:395 +#: src/libslic3r/PrintConfig.cpp:408 msgid "Default print profile" msgstr "" -#: src/libslic3r/PrintConfig.cpp:396 src/libslic3r/PrintConfig.cpp:2790 -#: src/libslic3r/PrintConfig.cpp:2801 +#: src/libslic3r/PrintConfig.cpp:409 src/libslic3r/PrintConfig.cpp:2820 +#: src/libslic3r/PrintConfig.cpp:2831 msgid "" "Default print profile associated with the current printer profile. On " "selection of the current printer profile, this print profile will be " "activated." msgstr "" -#: src/libslic3r/PrintConfig.cpp:402 +#: src/libslic3r/PrintConfig.cpp:415 msgid "Disable fan for the first" msgstr "" -#: src/libslic3r/PrintConfig.cpp:403 +#: src/libslic3r/PrintConfig.cpp:416 msgid "" "You can set this to a positive value to disable fan at all during the first " "layers, so that it does not make adhesion worse." msgstr "" -#: src/libslic3r/PrintConfig.cpp:412 +#: src/libslic3r/PrintConfig.cpp:425 msgid "Don't support bridges" msgstr "" -#: src/libslic3r/PrintConfig.cpp:414 +#: src/libslic3r/PrintConfig.cpp:427 msgid "" "Experimental option for preventing support material from being generated " "under bridged areas." msgstr "" -#: src/libslic3r/PrintConfig.cpp:420 +#: src/libslic3r/PrintConfig.cpp:433 msgid "Distance between copies" msgstr "" -#: src/libslic3r/PrintConfig.cpp:421 +#: src/libslic3r/PrintConfig.cpp:434 msgid "Distance used for the auto-arrange feature of the plater." msgstr "" -#: src/libslic3r/PrintConfig.cpp:429 +#: src/libslic3r/PrintConfig.cpp:442 msgid "" "This end procedure is inserted at the end of the output file. Note that you " "can use placeholder variables for all PrusaSlicer settings." msgstr "" -#: src/libslic3r/PrintConfig.cpp:439 +#: src/libslic3r/PrintConfig.cpp:452 msgid "" "This end procedure is inserted at the end of the output file, before the " "printer end gcode (and before any toolchange from this filament in case of " @@ -8581,70 +8741,70 @@ msgid "" "in extruder order." msgstr "" -#: src/libslic3r/PrintConfig.cpp:450 +#: src/libslic3r/PrintConfig.cpp:463 msgid "Ensure vertical shell thickness" msgstr "" -#: src/libslic3r/PrintConfig.cpp:452 +#: src/libslic3r/PrintConfig.cpp:465 msgid "" "Add solid infill near sloping surfaces to guarantee the vertical shell " "thickness (top+bottom solid layers)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:458 +#: src/libslic3r/PrintConfig.cpp:471 msgid "Top fill pattern" msgstr "" -#: src/libslic3r/PrintConfig.cpp:460 +#: src/libslic3r/PrintConfig.cpp:473 msgid "" "Fill pattern for top infill. This only affects the top visible layer, and " "not its adjacent solid shells." msgstr "" -#: src/libslic3r/PrintConfig.cpp:470 src/libslic3r/PrintConfig.cpp:903 -#: src/libslic3r/PrintConfig.cpp:2206 +#: src/libslic3r/PrintConfig.cpp:483 src/libslic3r/PrintConfig.cpp:918 +#: src/libslic3r/PrintConfig.cpp:2236 msgid "Rectilinear" msgstr "" -#: src/libslic3r/PrintConfig.cpp:471 +#: src/libslic3r/PrintConfig.cpp:484 msgid "Monotonic" msgstr "" -#: src/libslic3r/PrintConfig.cpp:472 src/libslic3r/PrintConfig.cpp:904 +#: src/libslic3r/PrintConfig.cpp:485 src/libslic3r/PrintConfig.cpp:919 msgid "Aligned Rectilinear" msgstr "" -#: src/libslic3r/PrintConfig.cpp:473 src/libslic3r/PrintConfig.cpp:910 +#: src/libslic3r/PrintConfig.cpp:486 src/libslic3r/PrintConfig.cpp:925 msgid "Concentric" msgstr "" -#: src/libslic3r/PrintConfig.cpp:474 src/libslic3r/PrintConfig.cpp:914 +#: src/libslic3r/PrintConfig.cpp:487 src/libslic3r/PrintConfig.cpp:929 msgid "Hilbert Curve" msgstr "" -#: src/libslic3r/PrintConfig.cpp:475 src/libslic3r/PrintConfig.cpp:915 +#: src/libslic3r/PrintConfig.cpp:488 src/libslic3r/PrintConfig.cpp:930 msgid "Archimedean Chords" msgstr "" -#: src/libslic3r/PrintConfig.cpp:476 src/libslic3r/PrintConfig.cpp:916 +#: src/libslic3r/PrintConfig.cpp:489 src/libslic3r/PrintConfig.cpp:931 msgid "Octagram Spiral" msgstr "" -#: src/libslic3r/PrintConfig.cpp:482 +#: src/libslic3r/PrintConfig.cpp:495 msgid "Bottom fill pattern" msgstr "" -#: src/libslic3r/PrintConfig.cpp:484 +#: src/libslic3r/PrintConfig.cpp:497 msgid "" "Fill pattern for bottom infill. This only affects the bottom external " "visible layer, and not its adjacent solid shells." msgstr "" -#: src/libslic3r/PrintConfig.cpp:493 src/libslic3r/PrintConfig.cpp:504 +#: src/libslic3r/PrintConfig.cpp:506 src/libslic3r/PrintConfig.cpp:517 msgid "External perimeters" msgstr "" -#: src/libslic3r/PrintConfig.cpp:495 +#: src/libslic3r/PrintConfig.cpp:508 msgid "" "Set this to a non-zero value to set a manual extrusion width for external " "perimeters. If left zero, default extrusion width will be used if set, " @@ -8652,43 +8812,43 @@ msgid "" "(for example 200%), it will be computed over layer height." msgstr "" -#: src/libslic3r/PrintConfig.cpp:498 src/libslic3r/PrintConfig.cpp:607 -#: src/libslic3r/PrintConfig.cpp:947 src/libslic3r/PrintConfig.cpp:960 -#: src/libslic3r/PrintConfig.cpp:1078 src/libslic3r/PrintConfig.cpp:1133 -#: src/libslic3r/PrintConfig.cpp:1159 src/libslic3r/PrintConfig.cpp:1606 -#: src/libslic3r/PrintConfig.cpp:1931 src/libslic3r/PrintConfig.cpp:2080 -#: src/libslic3r/PrintConfig.cpp:2148 src/libslic3r/PrintConfig.cpp:2309 +#: src/libslic3r/PrintConfig.cpp:511 src/libslic3r/PrintConfig.cpp:621 +#: src/libslic3r/PrintConfig.cpp:962 src/libslic3r/PrintConfig.cpp:975 +#: src/libslic3r/PrintConfig.cpp:1104 src/libslic3r/PrintConfig.cpp:1159 +#: src/libslic3r/PrintConfig.cpp:1185 src/libslic3r/PrintConfig.cpp:1632 +#: src/libslic3r/PrintConfig.cpp:1961 src/libslic3r/PrintConfig.cpp:2110 +#: src/libslic3r/PrintConfig.cpp:2178 src/libslic3r/PrintConfig.cpp:2339 msgid "mm or %" msgstr "" -#: src/libslic3r/PrintConfig.cpp:506 +#: src/libslic3r/PrintConfig.cpp:519 msgid "" "This separate setting will affect the speed of external perimeters (the " "visible ones). If expressed as percentage (for example: 80%) it will be " "calculated on the perimeters speed setting above. Set to zero for auto." msgstr "" -#: src/libslic3r/PrintConfig.cpp:509 src/libslic3r/PrintConfig.cpp:969 -#: src/libslic3r/PrintConfig.cpp:1890 src/libslic3r/PrintConfig.cpp:1942 -#: src/libslic3r/PrintConfig.cpp:2192 src/libslic3r/PrintConfig.cpp:2322 +#: src/libslic3r/PrintConfig.cpp:522 src/libslic3r/PrintConfig.cpp:984 +#: src/libslic3r/PrintConfig.cpp:1920 src/libslic3r/PrintConfig.cpp:1972 +#: src/libslic3r/PrintConfig.cpp:2222 src/libslic3r/PrintConfig.cpp:2352 msgid "mm/s or %" msgstr "" -#: src/libslic3r/PrintConfig.cpp:516 +#: src/libslic3r/PrintConfig.cpp:529 msgid "External perimeters first" msgstr "" -#: src/libslic3r/PrintConfig.cpp:518 +#: src/libslic3r/PrintConfig.cpp:531 msgid "" "Print contour perimeters from the outermost one to the innermost one instead " "of the default inverse order." msgstr "" -#: src/libslic3r/PrintConfig.cpp:524 +#: src/libslic3r/PrintConfig.cpp:537 msgid "Extra perimeters if needed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:526 +#: src/libslic3r/PrintConfig.cpp:539 #, possible-c-format msgid "" "Add more perimeters when needed for avoiding gaps in sloping walls. Slic3r " @@ -8696,14 +8856,14 @@ msgid "" "is supported." msgstr "" -#: src/libslic3r/PrintConfig.cpp:536 +#: src/libslic3r/PrintConfig.cpp:549 msgid "" "The extruder to use (unless more specific extruder settings are specified). " "This value overrides perimeter and infill extruders, but not the support " "extruders." msgstr "" -#: src/libslic3r/PrintConfig.cpp:548 +#: src/libslic3r/PrintConfig.cpp:561 msgid "" "Set this to the vertical distance between your nozzle tip and (usually) the " "X carriage rods. In other words, this is the height of the clearance " @@ -8711,26 +8871,26 @@ msgid "" "extruder can peek before colliding with other printed objects." msgstr "" -#: src/libslic3r/PrintConfig.cpp:559 +#: src/libslic3r/PrintConfig.cpp:572 msgid "" "Set this to the clearance radius around your extruder. If the extruder is " "not centered, choose the largest value for safety. This setting is used to " "check for collisions and to display the graphical preview in the plater." msgstr "" -#: src/libslic3r/PrintConfig.cpp:569 +#: src/libslic3r/PrintConfig.cpp:582 msgid "Extruder Color" msgstr "" -#: src/libslic3r/PrintConfig.cpp:570 src/libslic3r/PrintConfig.cpp:630 +#: src/libslic3r/PrintConfig.cpp:583 src/libslic3r/PrintConfig.cpp:645 msgid "This is only used in the Slic3r interface as a visual help." msgstr "" -#: src/libslic3r/PrintConfig.cpp:576 +#: src/libslic3r/PrintConfig.cpp:589 msgid "Extruder offset" msgstr "" -#: src/libslic3r/PrintConfig.cpp:577 +#: src/libslic3r/PrintConfig.cpp:590 msgid "" "If your firmware doesn't handle the extruder displacement you need the G-" "code to take it into account. This option lets you specify the displacement " @@ -8738,21 +8898,21 @@ msgid "" "coordinates (they will be subtracted from the XY coordinate)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:586 +#: src/libslic3r/PrintConfig.cpp:599 msgid "Extrusion axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:587 +#: src/libslic3r/PrintConfig.cpp:600 msgid "" "Use this option to set the axis letter associated to your printer's extruder " "(usually E but some printers use A)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:592 +#: src/libslic3r/PrintConfig.cpp:605 msgid "Extrusion multiplier" msgstr "" -#: src/libslic3r/PrintConfig.cpp:593 +#: src/libslic3r/PrintConfig.cpp:606 msgid "" "This factor changes the amount of flow proportionally. You may need to tweak " "this setting to get nice surface finish and correct single wall widths. " @@ -8760,11 +8920,11 @@ msgid "" "more, check filament diameter and your firmware E steps." msgstr "" -#: src/libslic3r/PrintConfig.cpp:601 +#: src/libslic3r/PrintConfig.cpp:615 msgid "Default extrusion width" msgstr "" -#: src/libslic3r/PrintConfig.cpp:603 +#: src/libslic3r/PrintConfig.cpp:617 msgid "" "Set this to a non-zero value to allow a manual extrusion width. If left to " "zero, Slic3r derives extrusion widths from the nozzle diameter (see the " @@ -8773,123 +8933,123 @@ msgid "" "height." msgstr "" -#: src/libslic3r/PrintConfig.cpp:613 +#: src/libslic3r/PrintConfig.cpp:628 msgid "Keep fan always on" msgstr "" -#: src/libslic3r/PrintConfig.cpp:614 +#: src/libslic3r/PrintConfig.cpp:629 msgid "" "If this is enabled, fan will never be disabled and will be kept running at " "least at its minimum speed. Useful for PLA, harmful for ABS." msgstr "" -#: src/libslic3r/PrintConfig.cpp:619 +#: src/libslic3r/PrintConfig.cpp:634 msgid "Enable fan if layer print time is below" msgstr "" -#: src/libslic3r/PrintConfig.cpp:620 +#: src/libslic3r/PrintConfig.cpp:635 msgid "" "If layer print time is estimated below this number of seconds, fan will be " "enabled and its speed will be calculated by interpolating the minimum and " "maximum speeds." msgstr "" -#: src/libslic3r/PrintConfig.cpp:622 src/libslic3r/PrintConfig.cpp:1878 +#: src/libslic3r/PrintConfig.cpp:637 src/libslic3r/PrintConfig.cpp:1908 msgid "approximate seconds" msgstr "" -#: src/libslic3r/PrintConfig.cpp:629 +#: src/libslic3r/PrintConfig.cpp:644 msgid "Color" msgstr "" -#: src/libslic3r/PrintConfig.cpp:635 +#: src/libslic3r/PrintConfig.cpp:650 msgid "Filament notes" msgstr "" -#: src/libslic3r/PrintConfig.cpp:636 +#: src/libslic3r/PrintConfig.cpp:651 msgid "You can put your notes regarding the filament here." msgstr "" -#: src/libslic3r/PrintConfig.cpp:644 src/libslic3r/PrintConfig.cpp:1429 +#: src/libslic3r/PrintConfig.cpp:659 src/libslic3r/PrintConfig.cpp:1455 msgid "Max volumetric speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:645 +#: src/libslic3r/PrintConfig.cpp:660 msgid "" "Maximum volumetric speed allowed for this filament. Limits the maximum " "volumetric speed of a print to the minimum of print and filament volumetric " "speed. Set to zero for no limit." msgstr "" -#: src/libslic3r/PrintConfig.cpp:654 +#: src/libslic3r/PrintConfig.cpp:669 msgid "Loading speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:655 +#: src/libslic3r/PrintConfig.cpp:670 msgid "Speed used for loading the filament on the wipe tower." msgstr "" -#: src/libslic3r/PrintConfig.cpp:662 +#: src/libslic3r/PrintConfig.cpp:677 msgid "Loading speed at the start" msgstr "" -#: src/libslic3r/PrintConfig.cpp:663 +#: src/libslic3r/PrintConfig.cpp:678 msgid "Speed used at the very beginning of loading phase." msgstr "" -#: src/libslic3r/PrintConfig.cpp:670 +#: src/libslic3r/PrintConfig.cpp:685 msgid "Unloading speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:671 +#: src/libslic3r/PrintConfig.cpp:686 msgid "" "Speed used for unloading the filament on the wipe tower (does not affect " "initial part of unloading just after ramming)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:679 +#: src/libslic3r/PrintConfig.cpp:694 msgid "Unloading speed at the start" msgstr "" -#: src/libslic3r/PrintConfig.cpp:680 +#: src/libslic3r/PrintConfig.cpp:695 msgid "" "Speed used for unloading the tip of the filament immediately after ramming." msgstr "" -#: src/libslic3r/PrintConfig.cpp:687 +#: src/libslic3r/PrintConfig.cpp:702 msgid "Delay after unloading" msgstr "" -#: src/libslic3r/PrintConfig.cpp:688 +#: src/libslic3r/PrintConfig.cpp:703 msgid "" "Time to wait after the filament is unloaded. May help to get reliable " "toolchanges with flexible materials that may need more time to shrink to " "original dimensions." msgstr "" -#: src/libslic3r/PrintConfig.cpp:697 +#: src/libslic3r/PrintConfig.cpp:712 msgid "Number of cooling moves" msgstr "" -#: src/libslic3r/PrintConfig.cpp:698 +#: src/libslic3r/PrintConfig.cpp:713 msgid "" "Filament is cooled by being moved back and forth in the cooling tubes. " "Specify desired number of these moves." msgstr "" -#: src/libslic3r/PrintConfig.cpp:706 +#: src/libslic3r/PrintConfig.cpp:721 msgid "Speed of the first cooling move" msgstr "" -#: src/libslic3r/PrintConfig.cpp:707 +#: src/libslic3r/PrintConfig.cpp:722 msgid "Cooling moves are gradually accelerating beginning at this speed." msgstr "" -#: src/libslic3r/PrintConfig.cpp:714 +#: src/libslic3r/PrintConfig.cpp:729 msgid "Minimal purge on wipe tower" msgstr "" -#: src/libslic3r/PrintConfig.cpp:715 +#: src/libslic3r/PrintConfig.cpp:730 msgid "" "After a tool change, the exact position of the newly loaded filament inside " "the nozzle may not be known, and the filament pressure is likely not yet " @@ -8898,63 +9058,63 @@ msgid "" "to produce successive infill or sacrificial object extrusions reliably." msgstr "" -#: src/libslic3r/PrintConfig.cpp:719 +#: src/libslic3r/PrintConfig.cpp:734 msgid "mm³" msgstr "" -#: src/libslic3r/PrintConfig.cpp:725 +#: src/libslic3r/PrintConfig.cpp:740 msgid "Speed of the last cooling move" msgstr "" -#: src/libslic3r/PrintConfig.cpp:726 +#: src/libslic3r/PrintConfig.cpp:741 msgid "Cooling moves are gradually accelerating towards this speed." msgstr "" -#: src/libslic3r/PrintConfig.cpp:733 +#: src/libslic3r/PrintConfig.cpp:748 msgid "Filament load time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:734 +#: src/libslic3r/PrintConfig.cpp:749 msgid "" "Time for the printer firmware (or the Multi Material Unit 2.0) to load a new " "filament during a tool change (when executing the T code). This time is " "added to the total print time by the G-code time estimator." msgstr "" -#: src/libslic3r/PrintConfig.cpp:741 +#: src/libslic3r/PrintConfig.cpp:756 msgid "Ramming parameters" msgstr "" -#: src/libslic3r/PrintConfig.cpp:742 +#: src/libslic3r/PrintConfig.cpp:757 msgid "" "This string is edited by RammingDialog and contains ramming specific " "parameters." msgstr "" -#: src/libslic3r/PrintConfig.cpp:748 +#: src/libslic3r/PrintConfig.cpp:763 msgid "Filament unload time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:749 +#: src/libslic3r/PrintConfig.cpp:764 msgid "" "Time for the printer firmware (or the Multi Material Unit 2.0) to unload a " "filament during a tool change (when executing the T code). This time is " "added to the total print time by the G-code time estimator." msgstr "" -#: src/libslic3r/PrintConfig.cpp:757 +#: src/libslic3r/PrintConfig.cpp:772 msgid "" "Enter your filament diameter here. Good precision is required, so use a " "caliper and do multiple measurements along the filament, then compute the " "average." msgstr "" -#: src/libslic3r/PrintConfig.cpp:764 src/libslic3r/PrintConfig.cpp:2701 -#: src/libslic3r/PrintConfig.cpp:2702 +#: src/libslic3r/PrintConfig.cpp:779 src/libslic3r/PrintConfig.cpp:2731 +#: src/libslic3r/PrintConfig.cpp:2732 msgid "Density" msgstr "" -#: src/libslic3r/PrintConfig.cpp:765 +#: src/libslic3r/PrintConfig.cpp:780 msgid "" "Enter your filament density here. This is only for statistical information. " "A decent way is to weigh a known length of filament and compute the ratio of " @@ -8962,41 +9122,41 @@ msgid "" "displacement." msgstr "" -#: src/libslic3r/PrintConfig.cpp:768 +#: src/libslic3r/PrintConfig.cpp:783 msgid "g/cm³" msgstr "" -#: src/libslic3r/PrintConfig.cpp:773 +#: src/libslic3r/PrintConfig.cpp:788 msgid "Filament type" msgstr "" -#: src/libslic3r/PrintConfig.cpp:774 +#: src/libslic3r/PrintConfig.cpp:789 msgid "The filament material type for use in custom G-codes." msgstr "" -#: src/libslic3r/PrintConfig.cpp:801 +#: src/libslic3r/PrintConfig.cpp:816 msgid "Soluble material" msgstr "" -#: src/libslic3r/PrintConfig.cpp:802 +#: src/libslic3r/PrintConfig.cpp:817 msgid "Soluble material is most likely used for a soluble support." msgstr "" -#: src/libslic3r/PrintConfig.cpp:808 +#: src/libslic3r/PrintConfig.cpp:823 msgid "" "Enter your filament cost per kg here. This is only for statistical " "information." msgstr "" -#: src/libslic3r/PrintConfig.cpp:809 +#: src/libslic3r/PrintConfig.cpp:824 msgid "money/kg" msgstr "" -#: src/libslic3r/PrintConfig.cpp:814 +#: src/libslic3r/PrintConfig.cpp:829 msgid "Spool weight" msgstr "" -#: src/libslic3r/PrintConfig.cpp:815 +#: src/libslic3r/PrintConfig.cpp:830 msgid "" "Enter weight of the empty filament spool. One may weigh a partially consumed " "filament spool before printing and one may compare the measured weight with " @@ -9004,103 +9164,103 @@ msgid "" "amount of filament on the spool is sufficient to finish the print." msgstr "" -#: src/libslic3r/PrintConfig.cpp:819 +#: src/libslic3r/PrintConfig.cpp:834 msgid "g" msgstr "" -#: src/libslic3r/PrintConfig.cpp:828 src/libslic3r/PrintConfig.cpp:2785 +#: src/libslic3r/PrintConfig.cpp:843 src/libslic3r/PrintConfig.cpp:2815 msgid "(Unknown)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:832 +#: src/libslic3r/PrintConfig.cpp:847 msgid "Fill angle" msgstr "" -#: src/libslic3r/PrintConfig.cpp:834 +#: src/libslic3r/PrintConfig.cpp:849 msgid "" "Default base angle for infill orientation. Cross-hatching will be applied to " "this. Bridges will be infilled using the best direction Slic3r can detect, " "so this setting does not affect them." msgstr "" -#: src/libslic3r/PrintConfig.cpp:846 +#: src/libslic3r/PrintConfig.cpp:861 msgid "Fill density" msgstr "" -#: src/libslic3r/PrintConfig.cpp:848 +#: src/libslic3r/PrintConfig.cpp:863 msgid "Density of internal infill, expressed in the range 0% - 100%." msgstr "" -#: src/libslic3r/PrintConfig.cpp:883 +#: src/libslic3r/PrintConfig.cpp:898 msgid "Fill pattern" msgstr "" -#: src/libslic3r/PrintConfig.cpp:885 +#: src/libslic3r/PrintConfig.cpp:900 msgid "Fill pattern for general low-density infill." msgstr "" -#: src/libslic3r/PrintConfig.cpp:905 +#: src/libslic3r/PrintConfig.cpp:920 msgid "Grid" msgstr "" -#: src/libslic3r/PrintConfig.cpp:906 +#: src/libslic3r/PrintConfig.cpp:921 msgid "Triangles" msgstr "" -#: src/libslic3r/PrintConfig.cpp:907 +#: src/libslic3r/PrintConfig.cpp:922 msgid "Stars" msgstr "" -#: src/libslic3r/PrintConfig.cpp:908 +#: src/libslic3r/PrintConfig.cpp:923 msgid "Cubic" msgstr "" -#: src/libslic3r/PrintConfig.cpp:909 +#: src/libslic3r/PrintConfig.cpp:924 msgid "Line" msgstr "" -#: src/libslic3r/PrintConfig.cpp:911 src/libslic3r/PrintConfig.cpp:2208 +#: src/libslic3r/PrintConfig.cpp:926 src/libslic3r/PrintConfig.cpp:2238 msgid "Honeycomb" msgstr "" -#: src/libslic3r/PrintConfig.cpp:912 +#: src/libslic3r/PrintConfig.cpp:927 msgid "3D Honeycomb" msgstr "" -#: src/libslic3r/PrintConfig.cpp:913 +#: src/libslic3r/PrintConfig.cpp:928 msgid "Gyroid" msgstr "" -#: src/libslic3r/PrintConfig.cpp:917 +#: src/libslic3r/PrintConfig.cpp:932 msgid "Adaptive Cubic" msgstr "" -#: src/libslic3r/PrintConfig.cpp:918 +#: src/libslic3r/PrintConfig.cpp:933 msgid "Support Cubic" msgstr "" -#: src/libslic3r/PrintConfig.cpp:922 src/libslic3r/PrintConfig.cpp:931 -#: src/libslic3r/PrintConfig.cpp:941 src/libslic3r/PrintConfig.cpp:975 +#: src/libslic3r/PrintConfig.cpp:937 src/libslic3r/PrintConfig.cpp:946 +#: src/libslic3r/PrintConfig.cpp:956 src/libslic3r/PrintConfig.cpp:990 msgid "First layer" msgstr "" -#: src/libslic3r/PrintConfig.cpp:923 +#: src/libslic3r/PrintConfig.cpp:938 msgid "" "This is the acceleration your printer will use for first layer. Set zero to " "disable acceleration control for first layer." msgstr "" -#: src/libslic3r/PrintConfig.cpp:932 +#: src/libslic3r/PrintConfig.cpp:947 msgid "First layer bed temperature" msgstr "" -#: src/libslic3r/PrintConfig.cpp:933 +#: src/libslic3r/PrintConfig.cpp:948 msgid "" "Heated build plate temperature for the first layer. Set this to zero to " "disable bed temperature control commands in the output." msgstr "" -#: src/libslic3r/PrintConfig.cpp:943 +#: src/libslic3r/PrintConfig.cpp:958 msgid "" "Set this to a non-zero value to set a manual extrusion width for first " "layer. You can use this to force fatter extrudates for better adhesion. If " @@ -9108,7 +9268,7 @@ msgid "" "layer height. If set to zero, it will use the default extrusion width." msgstr "" -#: src/libslic3r/PrintConfig.cpp:956 +#: src/libslic3r/PrintConfig.cpp:971 msgid "" "When printing with very low layer heights, you might still want to print a " "thicker bottom layer to improve adhesion and tolerance for non perfect build " @@ -9116,51 +9276,64 @@ msgid "" "example: 150%) over the default layer height." msgstr "" -#: src/libslic3r/PrintConfig.cpp:965 +#: src/libslic3r/PrintConfig.cpp:980 msgid "First layer speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:966 +#: src/libslic3r/PrintConfig.cpp:981 msgid "" "If expressed as absolute value in mm/s, this speed will be applied to all " "the print moves of the first layer, regardless of their type. If expressed " "as a percentage (for example: 40%) it will scale the default speeds." msgstr "" -#: src/libslic3r/PrintConfig.cpp:976 +#: src/libslic3r/PrintConfig.cpp:991 msgid "First layer nozzle temperature" msgstr "" -#: src/libslic3r/PrintConfig.cpp:977 +#: src/libslic3r/PrintConfig.cpp:992 msgid "" "Nozzle temperature for the first layer. If you want to control temperature " "manually during print, set this to zero to disable temperature control " "commands in the output G-code." msgstr "" -#: src/libslic3r/PrintConfig.cpp:987 +#: src/libslic3r/PrintConfig.cpp:1000 +msgid "Full fan speed at layer" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1001 +msgid "" +"Fan speed will be ramped up linearly from zero at layer " +"\"disable_fan_first_layers\" to maximum at layer \"full_fan_speed_layer\". " +"\"full_fan_speed_layer\" will be ignored if lower than " +"\"disable_fan_first_layers\", in which case the fan will be running at " +"maximum allowed speed at layer \"disable_fan_first_layers\" + 1." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1013 msgid "" "Speed for filling small gaps using short zigzag moves. Keep this reasonably " "low to avoid too much shaking and resonance issues. Set zero to disable gaps " "filling." msgstr "" -#: src/libslic3r/PrintConfig.cpp:995 +#: src/libslic3r/PrintConfig.cpp:1021 msgid "Verbose G-code" msgstr "" -#: src/libslic3r/PrintConfig.cpp:996 +#: src/libslic3r/PrintConfig.cpp:1022 msgid "" "Enable this to get a commented G-code file, with each line explained by a " "descriptive text. If you print from SD card, the additional weight of the " "file could make your firmware slow down." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1003 +#: src/libslic3r/PrintConfig.cpp:1029 msgid "G-code flavor" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1004 +#: src/libslic3r/PrintConfig.cpp:1030 msgid "" "Some G/M-code commands, including temperature control and others, are not " "universal. Set this option to your printer's firmware to get a compatible " @@ -9168,15 +9341,15 @@ msgid "" "extrusion value at all." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1029 +#: src/libslic3r/PrintConfig.cpp:1055 msgid "No extrusion" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1034 +#: src/libslic3r/PrintConfig.cpp:1060 msgid "Label objects" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1035 +#: src/libslic3r/PrintConfig.cpp:1061 msgid "" "Enable this to add comments into the G-Code labeling print moves with what " "object they belong to, which is useful for the Octoprint CancelObject " @@ -9184,42 +9357,42 @@ msgid "" "setup and Wipe into Object / Wipe into Infill." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1042 +#: src/libslic3r/PrintConfig.cpp:1068 msgid "High extruder current on filament swap" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1043 +#: src/libslic3r/PrintConfig.cpp:1069 msgid "" "It may be beneficial to increase the extruder motor current during the " "filament exchange sequence to allow for rapid ramming feed rates and to " "overcome resistance when loading a filament with an ugly shaped tip." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1051 +#: src/libslic3r/PrintConfig.cpp:1077 msgid "" "This is the acceleration your printer will use for infill. Set zero to " "disable acceleration control for infill." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1059 +#: src/libslic3r/PrintConfig.cpp:1085 msgid "Combine infill every" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1061 +#: src/libslic3r/PrintConfig.cpp:1087 msgid "" "This feature allows to combine infill and speed up your print by extruding " "thicker infill layers while preserving thin perimeters, thus accuracy." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1064 +#: src/libslic3r/PrintConfig.cpp:1090 msgid "Combine infill every n layers" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1070 +#: src/libslic3r/PrintConfig.cpp:1096 msgid "Length of the infill anchor" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1072 +#: src/libslic3r/PrintConfig.cpp:1098 msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " @@ -9232,19 +9405,19 @@ msgid "" "perimeters connected to a single infill line." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1087 +#: src/libslic3r/PrintConfig.cpp:1113 msgid "0 (no open anchors)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1092 src/libslic3r/PrintConfig.cpp:1114 +#: src/libslic3r/PrintConfig.cpp:1118 src/libslic3r/PrintConfig.cpp:1140 msgid "1000 (unlimited)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1097 +#: src/libslic3r/PrintConfig.cpp:1123 msgid "Maximum length of the infill anchor" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1099 +#: src/libslic3r/PrintConfig.cpp:1125 msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " @@ -9256,19 +9429,19 @@ msgid "" "parameter. Set this parameter to zero to disable anchoring." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1109 +#: src/libslic3r/PrintConfig.cpp:1135 msgid "0 (not anchored)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1119 +#: src/libslic3r/PrintConfig.cpp:1145 msgid "Infill extruder" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1121 +#: src/libslic3r/PrintConfig.cpp:1147 msgid "The extruder to use when printing infill." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1129 +#: src/libslic3r/PrintConfig.cpp:1155 msgid "" "Set this to a non-zero value to set a manual extrusion width for infill. If " "left zero, default extrusion width will be used if set, otherwise 1.125 x " @@ -9277,32 +9450,32 @@ msgid "" "example 90%) it will be computed over layer height." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1139 +#: src/libslic3r/PrintConfig.cpp:1165 msgid "Infill before perimeters" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1140 +#: src/libslic3r/PrintConfig.cpp:1166 msgid "" "This option will switch the print order of perimeters and infill, making the " "latter first." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1145 +#: src/libslic3r/PrintConfig.cpp:1171 msgid "Only infill where needed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1147 +#: src/libslic3r/PrintConfig.cpp:1173 msgid "" "This option will limit infill to the areas actually needed for supporting " "ceilings (it will act as internal support material). If enabled, slows down " "the G-code generation due to the multiple checks involved." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1154 +#: src/libslic3r/PrintConfig.cpp:1180 msgid "Infill/perimeters overlap" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1156 +#: src/libslic3r/PrintConfig.cpp:1182 msgid "" "This setting applies an additional overlap between infill and perimeters for " "better bonding. Theoretically this shouldn't be needed, but backlash might " @@ -9310,71 +9483,71 @@ msgid "" "perimeter extrusion width." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1167 +#: src/libslic3r/PrintConfig.cpp:1193 msgid "Speed for printing the internal fill. Set to zero for auto." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1175 +#: src/libslic3r/PrintConfig.cpp:1201 msgid "Inherits profile" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1176 +#: src/libslic3r/PrintConfig.cpp:1202 msgid "Name of the profile, from which this profile inherits." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1189 +#: src/libslic3r/PrintConfig.cpp:1215 msgid "Interface shells" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1190 +#: src/libslic3r/PrintConfig.cpp:1216 msgid "" "Force the generation of solid shells between adjacent materials/volumes. " "Useful for multi-extruder prints with translucent materials or manual " "soluble support material." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1198 +#: src/libslic3r/PrintConfig.cpp:1224 msgid "Enable ironing" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1199 +#: src/libslic3r/PrintConfig.cpp:1225 msgid "" "Enable ironing of the top layers with the hot print head for smooth surface" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1205 src/libslic3r/PrintConfig.cpp:1207 +#: src/libslic3r/PrintConfig.cpp:1231 src/libslic3r/PrintConfig.cpp:1233 msgid "Ironing Type" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1212 +#: src/libslic3r/PrintConfig.cpp:1238 msgid "All top surfaces" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1213 +#: src/libslic3r/PrintConfig.cpp:1239 msgid "Topmost surface only" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1214 +#: src/libslic3r/PrintConfig.cpp:1240 msgid "All solid surfaces" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1219 +#: src/libslic3r/PrintConfig.cpp:1245 msgid "Flow rate" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1221 +#: src/libslic3r/PrintConfig.cpp:1247 msgid "Percent of a flow rate relative to object's normal layer height." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1229 +#: src/libslic3r/PrintConfig.cpp:1255 msgid "Spacing between ironing passes" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1231 +#: src/libslic3r/PrintConfig.cpp:1257 msgid "Distance between ironing lines" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1248 +#: src/libslic3r/PrintConfig.cpp:1274 msgid "" "This custom code is inserted at every layer change, right after the Z move " "and before the extruder moves to the first layer point. Note that you can " @@ -9382,11 +9555,11 @@ msgid "" "[layer_z]." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1259 +#: src/libslic3r/PrintConfig.cpp:1285 msgid "Supports remaining times" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1260 +#: src/libslic3r/PrintConfig.cpp:1286 msgid "" "Emit M73 P[percent printed] R[remaining time in minutes] at 1 minute " "intervals into the G-code to let the firmware show accurate remaining time. " @@ -9394,175 +9567,175 @@ msgid "" "firmware supports M73 Qxx Sxx for the silent mode." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1268 +#: src/libslic3r/PrintConfig.cpp:1294 msgid "Supports stealth mode" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1269 +#: src/libslic3r/PrintConfig.cpp:1295 msgid "The firmware supports stealth mode" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1274 +#: src/libslic3r/PrintConfig.cpp:1300 msgid "How to apply limits" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1275 +#: src/libslic3r/PrintConfig.cpp:1301 msgid "Purpose of Machine Limits" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1277 +#: src/libslic3r/PrintConfig.cpp:1303 msgid "How to apply the Machine Limits" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1282 +#: src/libslic3r/PrintConfig.cpp:1308 msgid "Emit to G-code" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1283 +#: src/libslic3r/PrintConfig.cpp:1309 msgid "Use for time estimate" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1284 +#: src/libslic3r/PrintConfig.cpp:1310 msgid "Ignore" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1307 +#: src/libslic3r/PrintConfig.cpp:1333 msgid "Maximum feedrate X" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1308 +#: src/libslic3r/PrintConfig.cpp:1334 msgid "Maximum feedrate Y" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1309 +#: src/libslic3r/PrintConfig.cpp:1335 msgid "Maximum feedrate Z" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1310 +#: src/libslic3r/PrintConfig.cpp:1336 msgid "Maximum feedrate E" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1313 +#: src/libslic3r/PrintConfig.cpp:1339 msgid "Maximum feedrate of the X axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1314 +#: src/libslic3r/PrintConfig.cpp:1340 msgid "Maximum feedrate of the Y axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1315 +#: src/libslic3r/PrintConfig.cpp:1341 msgid "Maximum feedrate of the Z axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1316 +#: src/libslic3r/PrintConfig.cpp:1342 msgid "Maximum feedrate of the E axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1324 +#: src/libslic3r/PrintConfig.cpp:1350 msgid "Maximum acceleration X" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1325 +#: src/libslic3r/PrintConfig.cpp:1351 msgid "Maximum acceleration Y" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1326 +#: src/libslic3r/PrintConfig.cpp:1352 msgid "Maximum acceleration Z" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1327 +#: src/libslic3r/PrintConfig.cpp:1353 msgid "Maximum acceleration E" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1330 +#: src/libslic3r/PrintConfig.cpp:1356 msgid "Maximum acceleration of the X axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1331 +#: src/libslic3r/PrintConfig.cpp:1357 msgid "Maximum acceleration of the Y axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1332 +#: src/libslic3r/PrintConfig.cpp:1358 msgid "Maximum acceleration of the Z axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1333 +#: src/libslic3r/PrintConfig.cpp:1359 msgid "Maximum acceleration of the E axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1341 +#: src/libslic3r/PrintConfig.cpp:1367 msgid "Maximum jerk X" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1342 +#: src/libslic3r/PrintConfig.cpp:1368 msgid "Maximum jerk Y" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1343 +#: src/libslic3r/PrintConfig.cpp:1369 msgid "Maximum jerk Z" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1344 +#: src/libslic3r/PrintConfig.cpp:1370 msgid "Maximum jerk E" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1347 +#: src/libslic3r/PrintConfig.cpp:1373 msgid "Maximum jerk of the X axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1348 +#: src/libslic3r/PrintConfig.cpp:1374 msgid "Maximum jerk of the Y axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1349 +#: src/libslic3r/PrintConfig.cpp:1375 msgid "Maximum jerk of the Z axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1350 +#: src/libslic3r/PrintConfig.cpp:1376 msgid "Maximum jerk of the E axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1360 +#: src/libslic3r/PrintConfig.cpp:1386 msgid "Minimum feedrate when extruding" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1362 +#: src/libslic3r/PrintConfig.cpp:1388 msgid "Minimum feedrate when extruding (M205 S)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1370 +#: src/libslic3r/PrintConfig.cpp:1396 msgid "Minimum travel feedrate" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1372 +#: src/libslic3r/PrintConfig.cpp:1398 msgid "Minimum travel feedrate (M205 T)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1380 +#: src/libslic3r/PrintConfig.cpp:1406 msgid "Maximum acceleration when extruding" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1382 +#: src/libslic3r/PrintConfig.cpp:1408 msgid "Maximum acceleration when extruding (M204 S)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1390 +#: src/libslic3r/PrintConfig.cpp:1416 msgid "Maximum acceleration when retracting" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1392 +#: src/libslic3r/PrintConfig.cpp:1418 msgid "Maximum acceleration when retracting (M204 T)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1399 src/libslic3r/PrintConfig.cpp:1408 +#: src/libslic3r/PrintConfig.cpp:1425 src/libslic3r/PrintConfig.cpp:1434 msgid "Max" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1400 +#: src/libslic3r/PrintConfig.cpp:1426 msgid "This setting represents the maximum speed of your fan." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1409 +#: src/libslic3r/PrintConfig.cpp:1435 #, possible-c-format msgid "" "This is the highest printable layer height for this extruder, used to cap " @@ -9571,28 +9744,28 @@ msgid "" "adhesion. If set to 0, layer height is limited to 75% of the nozzle diameter." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1419 +#: src/libslic3r/PrintConfig.cpp:1445 msgid "Max print speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1420 +#: src/libslic3r/PrintConfig.cpp:1446 msgid "" "When setting other speed settings to 0 Slic3r will autocalculate the optimal " "speed in order to keep constant extruder pressure. This experimental setting " "is used to set the highest print speed you want to allow." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1430 +#: src/libslic3r/PrintConfig.cpp:1456 msgid "" "This experimental setting is used to set the maximum volumetric speed your " "extruder supports." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1439 +#: src/libslic3r/PrintConfig.cpp:1465 msgid "Max volumetric slope positive" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1440 src/libslic3r/PrintConfig.cpp:1451 +#: src/libslic3r/PrintConfig.cpp:1466 src/libslic3r/PrintConfig.cpp:1477 msgid "" "This experimental setting is used to limit the speed of change in extrusion " "rate. A value of 1.8 mm³/s² ensures, that a change from the extrusion rate " @@ -9600,95 +9773,95 @@ msgid "" "s) to 5.4 mm³/s (feedrate 60 mm/s) will take at least 2 seconds." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1444 src/libslic3r/PrintConfig.cpp:1455 +#: src/libslic3r/PrintConfig.cpp:1470 src/libslic3r/PrintConfig.cpp:1481 msgid "mm³/s²" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1450 +#: src/libslic3r/PrintConfig.cpp:1476 msgid "Max volumetric slope negative" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1462 src/libslic3r/PrintConfig.cpp:1471 +#: src/libslic3r/PrintConfig.cpp:1488 src/libslic3r/PrintConfig.cpp:1497 msgid "Min" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1463 +#: src/libslic3r/PrintConfig.cpp:1489 msgid "This setting represents the minimum PWM your fan needs to work." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1472 +#: src/libslic3r/PrintConfig.cpp:1498 msgid "" "This is the lowest printable layer height for this extruder and limits the " "resolution for variable layer height. Typical values are between 0.05 mm and " "0.1 mm." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1480 +#: src/libslic3r/PrintConfig.cpp:1506 msgid "Min print speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1481 +#: src/libslic3r/PrintConfig.cpp:1507 msgid "Slic3r will not scale speed down below this speed." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1488 +#: src/libslic3r/PrintConfig.cpp:1514 msgid "Minimal filament extrusion length" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1489 +#: src/libslic3r/PrintConfig.cpp:1515 msgid "" "Generate no less than the number of skirt loops required to consume the " "specified amount of filament on the bottom layer. For multi-extruder " "machines, this minimum applies to each extruder." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1498 +#: src/libslic3r/PrintConfig.cpp:1524 msgid "Configuration notes" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1499 +#: src/libslic3r/PrintConfig.cpp:1525 msgid "" "You can put here your personal notes. This text will be added to the G-code " "header comments." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1509 +#: src/libslic3r/PrintConfig.cpp:1535 msgid "" "This is the diameter of your extruder nozzle (for example: 0.5, 0.35 etc.)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1514 +#: src/libslic3r/PrintConfig.cpp:1540 msgid "Host Type" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1515 +#: src/libslic3r/PrintConfig.cpp:1541 msgid "" "Slic3r can upload G-code files to a printer host. This field must contain " "the kind of the host." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1532 +#: src/libslic3r/PrintConfig.cpp:1558 msgid "Only retract when crossing perimeters" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1533 +#: src/libslic3r/PrintConfig.cpp:1559 msgid "" "Disables retraction when the travel path does not exceed the upper layer's " "perimeters (and thus any ooze will be probably invisible)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1540 +#: src/libslic3r/PrintConfig.cpp:1566 msgid "" "This option will drop the temperature of the inactive extruders to prevent " "oozing. It will enable a tall skirt automatically and move extruders outside " "such skirt when changing temperatures." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1547 +#: src/libslic3r/PrintConfig.cpp:1573 msgid "Output filename format" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1548 +#: src/libslic3r/PrintConfig.cpp:1574 msgid "" "You can use all configuration options as variables inside this template. For " "example: [layer_height], [fill_density] etc. You can also use [timestamp], " @@ -9696,31 +9869,31 @@ msgid "" "[input_filename], [input_filename_base]." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1557 +#: src/libslic3r/PrintConfig.cpp:1583 msgid "Detect bridging perimeters" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1559 +#: src/libslic3r/PrintConfig.cpp:1585 msgid "" "Experimental option to adjust flow for overhangs (bridge flow will be used), " "to apply bridge speed to them and enable fan." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1565 +#: src/libslic3r/PrintConfig.cpp:1591 msgid "Filament parking position" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1566 +#: src/libslic3r/PrintConfig.cpp:1592 msgid "" "Distance of the extruder tip from the position where the filament is parked " "when unloaded. This should match the value in printer firmware." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1574 +#: src/libslic3r/PrintConfig.cpp:1600 msgid "Extra loading distance" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1575 +#: src/libslic3r/PrintConfig.cpp:1601 msgid "" "When set to zero, the distance the filament is moved from parking position " "during load is exactly the same as it was moved back during unload. When " @@ -9728,27 +9901,27 @@ msgid "" "than unloading." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1583 src/libslic3r/PrintConfig.cpp:1600 -#: src/libslic3r/PrintConfig.cpp:1613 src/libslic3r/PrintConfig.cpp:1623 +#: src/libslic3r/PrintConfig.cpp:1609 src/libslic3r/PrintConfig.cpp:1626 +#: src/libslic3r/PrintConfig.cpp:1639 src/libslic3r/PrintConfig.cpp:1649 msgid "Perimeters" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1584 +#: src/libslic3r/PrintConfig.cpp:1610 msgid "" "This is the acceleration your printer will use for perimeters. Set zero to " "disable acceleration control for perimeters." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1591 +#: src/libslic3r/PrintConfig.cpp:1617 msgid "Perimeter extruder" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1593 +#: src/libslic3r/PrintConfig.cpp:1619 msgid "" "The extruder to use when printing perimeters and brim. First extruder is 1." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1602 +#: src/libslic3r/PrintConfig.cpp:1628 msgid "" "Set this to a non-zero value to set a manual extrusion width for perimeters. " "You may want to use thinner extrudates to get more accurate surfaces. If " @@ -9757,12 +9930,12 @@ msgid "" "it will be computed over layer height." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1615 +#: src/libslic3r/PrintConfig.cpp:1641 msgid "" "Speed for perimeters (contours, aka vertical shells). Set to zero for auto." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1625 +#: src/libslic3r/PrintConfig.cpp:1651 msgid "" "This option sets the number of perimeters to generate for each layer. Note " "that Slic3r may increase this number automatically when it detects sloping " @@ -9770,11 +9943,11 @@ msgid "" "Perimeters option is enabled." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1629 +#: src/libslic3r/PrintConfig.cpp:1655 msgid "(minimum)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1637 +#: src/libslic3r/PrintConfig.cpp:1663 msgid "" "If you want to process the output G-code through custom scripts, just list " "their absolute paths here. Separate multiple scripts with a semicolon. " @@ -9783,55 +9956,55 @@ msgid "" "environment variables." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1649 +#: src/libslic3r/PrintConfig.cpp:1675 msgid "Printer type" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1650 +#: src/libslic3r/PrintConfig.cpp:1676 msgid "Type of the printer." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1655 +#: src/libslic3r/PrintConfig.cpp:1681 msgid "Printer notes" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1656 +#: src/libslic3r/PrintConfig.cpp:1682 msgid "You can put your notes regarding the printer here." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1664 +#: src/libslic3r/PrintConfig.cpp:1690 msgid "Printer vendor" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1665 +#: src/libslic3r/PrintConfig.cpp:1691 msgid "Name of the printer vendor." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1670 +#: src/libslic3r/PrintConfig.cpp:1696 msgid "Printer variant" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1671 +#: src/libslic3r/PrintConfig.cpp:1697 msgid "" "Name of the printer variant. For example, the printer variants may be " "differentiated by a nozzle diameter." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1684 +#: src/libslic3r/PrintConfig.cpp:1714 msgid "Raft layers" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1686 +#: src/libslic3r/PrintConfig.cpp:1716 msgid "" "The object will be raised by this number of layers, and support material " "will be generated under it." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1694 +#: src/libslic3r/PrintConfig.cpp:1724 msgid "Resolution" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1695 +#: src/libslic3r/PrintConfig.cpp:1725 msgid "" "Minimum detail resolution, used to simplify the input file for speeding up " "the slicing job and reducing memory usage. High-resolution models often " @@ -9839,277 +10012,277 @@ msgid "" "simplification and use full resolution from input." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1705 +#: src/libslic3r/PrintConfig.cpp:1735 msgid "Minimum travel after retraction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1706 +#: src/libslic3r/PrintConfig.cpp:1736 msgid "" "Retraction is not triggered when travel moves are shorter than this length." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1712 +#: src/libslic3r/PrintConfig.cpp:1742 msgid "Retract amount before wipe" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1713 +#: src/libslic3r/PrintConfig.cpp:1743 msgid "" "With bowden extruders, it may be wise to do some amount of quick retract " "before doing the wipe movement." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1720 +#: src/libslic3r/PrintConfig.cpp:1750 msgid "Retract on layer change" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1721 +#: src/libslic3r/PrintConfig.cpp:1751 msgid "This flag enforces a retraction whenever a Z move is done." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1726 src/libslic3r/PrintConfig.cpp:1734 +#: src/libslic3r/PrintConfig.cpp:1756 src/libslic3r/PrintConfig.cpp:1764 msgid "Length" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1727 +#: src/libslic3r/PrintConfig.cpp:1757 msgid "Retraction Length" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1728 +#: src/libslic3r/PrintConfig.cpp:1758 msgid "" "When retraction is triggered, filament is pulled back by the specified " "amount (the length is measured on raw filament, before it enters the " "extruder)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1730 src/libslic3r/PrintConfig.cpp:1739 +#: src/libslic3r/PrintConfig.cpp:1760 src/libslic3r/PrintConfig.cpp:1769 msgid "mm (zero to disable)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1735 +#: src/libslic3r/PrintConfig.cpp:1765 msgid "Retraction Length (Toolchange)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1736 +#: src/libslic3r/PrintConfig.cpp:1766 msgid "" "When retraction is triggered before changing tool, filament is pulled back " "by the specified amount (the length is measured on raw filament, before it " "enters the extruder)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1744 +#: src/libslic3r/PrintConfig.cpp:1774 msgid "Lift Z" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1745 +#: src/libslic3r/PrintConfig.cpp:1775 msgid "" "If you set this to a positive value, Z is quickly raised every time a " "retraction is triggered. When using multiple extruders, only the setting for " "the first extruder will be considered." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1752 +#: src/libslic3r/PrintConfig.cpp:1782 msgid "Above Z" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1753 +#: src/libslic3r/PrintConfig.cpp:1783 msgid "Only lift Z above" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1754 +#: src/libslic3r/PrintConfig.cpp:1784 msgid "" "If you set this to a positive value, Z lift will only take place above the " "specified absolute Z. You can tune this setting for skipping lift on the " "first layers." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1761 +#: src/libslic3r/PrintConfig.cpp:1791 msgid "Below Z" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1762 +#: src/libslic3r/PrintConfig.cpp:1792 msgid "Only lift Z below" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1763 +#: src/libslic3r/PrintConfig.cpp:1793 msgid "" "If you set this to a positive value, Z lift will only take place below the " "specified absolute Z. You can tune this setting for limiting lift to the " "first layers." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1771 src/libslic3r/PrintConfig.cpp:1779 +#: src/libslic3r/PrintConfig.cpp:1801 src/libslic3r/PrintConfig.cpp:1809 msgid "Extra length on restart" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1772 +#: src/libslic3r/PrintConfig.cpp:1802 msgid "" "When the retraction is compensated after the travel move, the extruder will " "push this additional amount of filament. This setting is rarely needed." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1780 +#: src/libslic3r/PrintConfig.cpp:1810 msgid "" "When the retraction is compensated after changing tool, the extruder will " "push this additional amount of filament." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1787 src/libslic3r/PrintConfig.cpp:1788 +#: src/libslic3r/PrintConfig.cpp:1817 src/libslic3r/PrintConfig.cpp:1818 msgid "Retraction Speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1789 +#: src/libslic3r/PrintConfig.cpp:1819 msgid "The speed for retractions (it only applies to the extruder motor)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1795 src/libslic3r/PrintConfig.cpp:1796 +#: src/libslic3r/PrintConfig.cpp:1825 src/libslic3r/PrintConfig.cpp:1826 msgid "Deretraction Speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1797 +#: src/libslic3r/PrintConfig.cpp:1827 msgid "" "The speed for loading of a filament into extruder after retraction (it only " "applies to the extruder motor). If left to zero, the retraction speed is " "used." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1804 +#: src/libslic3r/PrintConfig.cpp:1834 msgid "Seam position" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1806 +#: src/libslic3r/PrintConfig.cpp:1836 msgid "Position of perimeters starting points." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1812 +#: src/libslic3r/PrintConfig.cpp:1842 msgid "Random" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1813 +#: src/libslic3r/PrintConfig.cpp:1843 msgid "Nearest" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1814 +#: src/libslic3r/PrintConfig.cpp:1844 msgid "Aligned" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1822 +#: src/libslic3r/PrintConfig.cpp:1852 msgid "Direction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1824 +#: src/libslic3r/PrintConfig.cpp:1854 msgid "Preferred direction of the seam" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1825 +#: src/libslic3r/PrintConfig.cpp:1855 msgid "Seam preferred direction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1832 +#: src/libslic3r/PrintConfig.cpp:1862 msgid "Jitter" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1834 +#: src/libslic3r/PrintConfig.cpp:1864 msgid "Seam preferred direction jitter" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1835 +#: src/libslic3r/PrintConfig.cpp:1865 msgid "Preferred direction of the seam - jitter" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1842 +#: src/libslic3r/PrintConfig.cpp:1872 msgid "Distance from object" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1843 +#: src/libslic3r/PrintConfig.cpp:1873 msgid "" "Distance between skirt and object(s). Set this to zero to attach the skirt " "to the object(s) and get a brim for better adhesion." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1850 +#: src/libslic3r/PrintConfig.cpp:1880 msgid "Skirt height" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1851 +#: src/libslic3r/PrintConfig.cpp:1881 msgid "" "Height of skirt expressed in layers. Set this to a tall value to use skirt " "as a shield against drafts." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1858 +#: src/libslic3r/PrintConfig.cpp:1888 msgid "Draft shield" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1859 +#: src/libslic3r/PrintConfig.cpp:1889 msgid "" "If enabled, the skirt will be as tall as a highest printed object. This is " "useful to protect an ABS or ASA print from warping and detaching from print " "bed due to wind draft." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1865 +#: src/libslic3r/PrintConfig.cpp:1895 msgid "Loops (minimum)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1866 +#: src/libslic3r/PrintConfig.cpp:1896 msgid "Skirt Loops" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1867 +#: src/libslic3r/PrintConfig.cpp:1897 msgid "" "Number of loops for the skirt. If the Minimum Extrusion Length option is " "set, the number of loops might be greater than the one configured here. Set " "this to zero to disable skirt completely." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1875 +#: src/libslic3r/PrintConfig.cpp:1905 msgid "Slow down if layer print time is below" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1876 +#: src/libslic3r/PrintConfig.cpp:1906 msgid "" "If layer print time is estimated below this number of seconds, print moves " "speed will be scaled down to extend duration to this value." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1885 +#: src/libslic3r/PrintConfig.cpp:1915 msgid "Small perimeters" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1887 +#: src/libslic3r/PrintConfig.cpp:1917 msgid "" "This separate setting will affect the speed of perimeters having radius <= " "6.5mm (usually holes). If expressed as percentage (for example: 80%) it will " "be calculated on the perimeters speed setting above. Set to zero for auto." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1897 +#: src/libslic3r/PrintConfig.cpp:1927 msgid "Solid infill threshold area" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1899 +#: src/libslic3r/PrintConfig.cpp:1929 msgid "" "Force solid infill for regions having a smaller area than the specified " "threshold." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1900 +#: src/libslic3r/PrintConfig.cpp:1930 msgid "mm²" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1906 +#: src/libslic3r/PrintConfig.cpp:1936 msgid "Solid infill extruder" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1908 +#: src/libslic3r/PrintConfig.cpp:1938 msgid "The extruder to use when printing solid infill." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1914 +#: src/libslic3r/PrintConfig.cpp:1944 msgid "Solid infill every" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1916 +#: src/libslic3r/PrintConfig.cpp:1946 msgid "" "This feature allows to force a solid layer every given number of layers. " "Zero to disable. You can set this to any value (for example 9999); Slic3r " @@ -10117,7 +10290,7 @@ msgid "" "according to nozzle diameter and layer height." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1928 +#: src/libslic3r/PrintConfig.cpp:1958 msgid "" "Set this to a non-zero value to set a manual extrusion width for infill for " "solid surfaces. If left zero, default extrusion width will be used if set, " @@ -10125,46 +10298,46 @@ msgid "" "(for example 90%) it will be computed over layer height." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1939 +#: src/libslic3r/PrintConfig.cpp:1969 msgid "" "Speed for printing solid regions (top/bottom/internal horizontal shells). " "This can be expressed as a percentage (for example: 80%) over the default " "infill speed above. Set to zero for auto." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1951 +#: src/libslic3r/PrintConfig.cpp:1981 msgid "Number of solid layers to generate on top and bottom surfaces." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1957 src/libslic3r/PrintConfig.cpp:1958 +#: src/libslic3r/PrintConfig.cpp:1987 src/libslic3r/PrintConfig.cpp:1988 msgid "Minimum thickness of a top / bottom shell" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1964 +#: src/libslic3r/PrintConfig.cpp:1994 msgid "Spiral vase" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1965 +#: src/libslic3r/PrintConfig.cpp:1995 msgid "" "This feature will raise Z gradually while printing a single-walled object in " "order to remove any visible seam. This option requires a single perimeter, " "no infill, no top solid layers and no support material. You can still set " "any number of bottom solid layers as well as skirt/brim loops. It won't work " -"when printing more than an object." +"when printing more than one single object." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1973 +#: src/libslic3r/PrintConfig.cpp:2003 msgid "Temperature variation" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1974 +#: src/libslic3r/PrintConfig.cpp:2004 msgid "" "Temperature difference to be applied when an extruder is not active. Enables " "a full-height \"sacrificial\" skirt on which the nozzles are periodically " "wiped." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1984 +#: src/libslic3r/PrintConfig.cpp:2014 msgid "" "This start procedure is inserted at the beginning, after bed has reached the " "target temperature and extruder just started heating, and before extruder " @@ -10175,7 +10348,7 @@ msgid "" "put a \"M109 S[first_layer_temperature]\" command wherever you want." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1999 +#: src/libslic3r/PrintConfig.cpp:2029 msgid "" "This start procedure is inserted at the beginning, after any printer start " "gcode (and after any toolchange to this filament in case of multi-material " @@ -10188,45 +10361,45 @@ msgid "" "extruders, the gcode is processed in extruder order." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2015 +#: src/libslic3r/PrintConfig.cpp:2045 msgid "Color change G-code" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2016 +#: src/libslic3r/PrintConfig.cpp:2046 msgid "This G-code will be used as a code for the color change" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2025 +#: src/libslic3r/PrintConfig.cpp:2055 msgid "This G-code will be used as a code for the pause print" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2034 +#: src/libslic3r/PrintConfig.cpp:2064 msgid "This G-code will be used as a custom code" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2042 +#: src/libslic3r/PrintConfig.cpp:2072 msgid "Single Extruder Multi Material" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2043 +#: src/libslic3r/PrintConfig.cpp:2073 msgid "The printer multiplexes filaments into a single hot end." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2048 +#: src/libslic3r/PrintConfig.cpp:2078 msgid "Prime all printing extruders" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2049 +#: src/libslic3r/PrintConfig.cpp:2079 msgid "" "If enabled, all printing extruders will be primed at the front edge of the " "print bed at the start of the print." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2054 +#: src/libslic3r/PrintConfig.cpp:2084 msgid "No sparse layers (EXPERIMENTAL)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2055 +#: src/libslic3r/PrintConfig.cpp:2085 msgid "" "If enabled, the wipe tower will not be printed on layers with no " "toolchanges. On layers with a toolchange, extruder will travel downward to " @@ -10234,75 +10407,75 @@ msgid "" "with the print." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2062 +#: src/libslic3r/PrintConfig.cpp:2092 msgid "Generate support material" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2064 +#: src/libslic3r/PrintConfig.cpp:2094 msgid "Enable support material generation." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2068 +#: src/libslic3r/PrintConfig.cpp:2098 msgid "Auto generated supports" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2070 +#: src/libslic3r/PrintConfig.cpp:2100 msgid "" "If checked, supports will be generated automatically based on the overhang " "threshold value. If unchecked, supports will be generated inside the " "\"Support Enforcer\" volumes only." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2076 +#: src/libslic3r/PrintConfig.cpp:2106 msgid "XY separation between an object and its support" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2078 +#: src/libslic3r/PrintConfig.cpp:2108 msgid "" "XY separation between an object and its support. If expressed as percentage " "(for example 50%), it will be calculated over external perimeter width." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2088 +#: src/libslic3r/PrintConfig.cpp:2118 msgid "Pattern angle" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2090 +#: src/libslic3r/PrintConfig.cpp:2120 msgid "" "Use this setting to rotate the support material pattern on the horizontal " "plane." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2100 src/libslic3r/PrintConfig.cpp:2895 +#: src/libslic3r/PrintConfig.cpp:2130 src/libslic3r/PrintConfig.cpp:2925 msgid "" "Only create support if it lies on a build plate. Don't create support on a " "print." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2106 +#: src/libslic3r/PrintConfig.cpp:2136 msgid "Contact Z distance" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2108 +#: src/libslic3r/PrintConfig.cpp:2138 msgid "" "The vertical distance between object and support material interface. Setting " "this to 0 will also prevent Slic3r from using bridge flow and speed for the " "first object layer." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2115 +#: src/libslic3r/PrintConfig.cpp:2145 msgid "0 (soluble)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2116 +#: src/libslic3r/PrintConfig.cpp:2146 msgid "0.2 (detachable)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2121 +#: src/libslic3r/PrintConfig.cpp:2151 msgid "Enforce support for the first" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2123 +#: src/libslic3r/PrintConfig.cpp:2153 msgid "" "Generate support material for the specified number of layers counting from " "bottom, regardless of whether normal support material is enabled or not and " @@ -10310,21 +10483,21 @@ msgid "" "of objects having a very thin or poor footprint on the build plate." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2128 +#: src/libslic3r/PrintConfig.cpp:2158 msgid "Enforce support for the first n layers" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2134 +#: src/libslic3r/PrintConfig.cpp:2164 msgid "Support material/raft/skirt extruder" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2136 +#: src/libslic3r/PrintConfig.cpp:2166 msgid "" "The extruder to use when printing support material, raft and skirt (1+, 0 to " "use the current extruder to minimize tool changes)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2145 +#: src/libslic3r/PrintConfig.cpp:2175 msgid "" "Set this to a non-zero value to set a manual extrusion width for support " "material. If left zero, default extrusion width will be used if set, " @@ -10332,89 +10505,89 @@ msgid "" "example 90%) it will be computed over layer height." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2154 +#: src/libslic3r/PrintConfig.cpp:2184 msgid "Interface loops" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2156 +#: src/libslic3r/PrintConfig.cpp:2186 msgid "" "Cover the top contact layer of the supports with loops. Disabled by default." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2161 +#: src/libslic3r/PrintConfig.cpp:2191 msgid "Support material/raft interface extruder" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2163 +#: src/libslic3r/PrintConfig.cpp:2193 msgid "" "The extruder to use when printing support material interface (1+, 0 to use " "the current extruder to minimize tool changes). This affects raft too." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2170 +#: src/libslic3r/PrintConfig.cpp:2200 msgid "Interface layers" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2172 +#: src/libslic3r/PrintConfig.cpp:2202 msgid "" "Number of interface layers to insert between the object(s) and support " "material." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2179 +#: src/libslic3r/PrintConfig.cpp:2209 msgid "Interface pattern spacing" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2181 +#: src/libslic3r/PrintConfig.cpp:2211 msgid "Spacing between interface lines. Set zero to get a solid interface." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2190 +#: src/libslic3r/PrintConfig.cpp:2220 msgid "" "Speed for printing support material interface layers. If expressed as " "percentage (for example 50%) it will be calculated over support material " "speed." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2199 +#: src/libslic3r/PrintConfig.cpp:2229 msgid "Pattern" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2201 +#: src/libslic3r/PrintConfig.cpp:2231 msgid "Pattern used to generate support material." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2207 +#: src/libslic3r/PrintConfig.cpp:2237 msgid "Rectilinear grid" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2213 +#: src/libslic3r/PrintConfig.cpp:2243 msgid "Pattern spacing" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2215 +#: src/libslic3r/PrintConfig.cpp:2245 msgid "Spacing between support material lines." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2224 +#: src/libslic3r/PrintConfig.cpp:2254 msgid "Speed for printing support material." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2231 +#: src/libslic3r/PrintConfig.cpp:2261 msgid "Synchronize with object layers" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2233 +#: src/libslic3r/PrintConfig.cpp:2263 msgid "" "Synchronize support layers with the object print layers. This is useful with " "multi-material printers, where the extruder switch is expensive." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2239 +#: src/libslic3r/PrintConfig.cpp:2269 msgid "Overhang threshold" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2241 +#: src/libslic3r/PrintConfig.cpp:2271 msgid "" "Support material will not be generated for overhangs whose slope angle (90° " "= vertical) is above the given threshold. In other words, this value " @@ -10423,47 +10596,47 @@ msgid "" "detection (recommended)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2253 +#: src/libslic3r/PrintConfig.cpp:2283 msgid "With sheath around the support" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2255 +#: src/libslic3r/PrintConfig.cpp:2285 msgid "" "Add a sheath (a single perimeter line) around the base support. This makes " "the support more reliable, but also more difficult to remove." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2262 +#: src/libslic3r/PrintConfig.cpp:2292 msgid "" "Nozzle temperature for layers after the first one. Set this to zero to " "disable temperature control commands in the output G-code." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2265 +#: src/libslic3r/PrintConfig.cpp:2295 msgid "Nozzle temperature" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2271 +#: src/libslic3r/PrintConfig.cpp:2301 msgid "Detect thin walls" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2273 +#: src/libslic3r/PrintConfig.cpp:2303 msgid "" "Detect single-width walls (parts where two extrusions don't fit and we need " "to collapse them into a single trace)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2279 +#: src/libslic3r/PrintConfig.cpp:2309 msgid "Threads" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2280 +#: src/libslic3r/PrintConfig.cpp:2310 msgid "" "Threads are used to parallelize long-running tasks. Optimal threads number " "is slightly above the number of available cores/processors." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2292 +#: src/libslic3r/PrintConfig.cpp:2322 msgid "" "This custom code is inserted before every toolchange. Placeholder variables " "for all PrusaSlicer settings as well as {previous_extruder} and " @@ -10473,7 +10646,7 @@ msgid "" "behaviour both before and after the toolchange." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2305 +#: src/libslic3r/PrintConfig.cpp:2335 msgid "" "Set this to a non-zero value to set a manual extrusion width for infill for " "top surfaces. You may want to use thinner extrudates to fill all narrow " @@ -10482,7 +10655,7 @@ msgid "" "percentage (for example 90%) it will be computed over layer height." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2317 +#: src/libslic3r/PrintConfig.cpp:2347 msgid "" "Speed for printing top solid layers (it only applies to the uppermost " "external layers and not to their internal solid layers). You may want to " @@ -10491,54 +10664,54 @@ msgid "" "for auto." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2332 +#: src/libslic3r/PrintConfig.cpp:2362 msgid "Number of solid layers to generate on top surfaces." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2333 +#: src/libslic3r/PrintConfig.cpp:2363 msgid "Top solid layers" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2341 +#: src/libslic3r/PrintConfig.cpp:2371 msgid "" "The number of top solid layers is increased above top_solid_layers if " "necessary to satisfy minimum thickness of top shell. This is useful to " "prevent pillowing effect when printing with variable layer height." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2344 +#: src/libslic3r/PrintConfig.cpp:2374 msgid "Minimum top shell thickness" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2351 +#: src/libslic3r/PrintConfig.cpp:2381 msgid "Speed for travel moves (jumps between distant extrusion points)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2359 +#: src/libslic3r/PrintConfig.cpp:2389 msgid "Use firmware retraction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2360 +#: src/libslic3r/PrintConfig.cpp:2390 msgid "" "This experimental setting uses G10 and G11 commands to have the firmware " "handle the retraction. This is only supported in recent Marlin." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2366 +#: src/libslic3r/PrintConfig.cpp:2396 msgid "Use relative E distances" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2367 +#: src/libslic3r/PrintConfig.cpp:2397 msgid "" "If your firmware requires relative E values, check this, otherwise leave it " "unchecked. Most firmwares use absolute values." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2373 +#: src/libslic3r/PrintConfig.cpp:2403 msgid "Use volumetric E" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2374 +#: src/libslic3r/PrintConfig.cpp:2404 msgid "" "This experimental setting uses outputs the E values in cubic millimeters " "instead of linear millimeters. If your firmware doesn't already know " @@ -10548,127 +10721,127 @@ msgid "" "only supported in recent Marlin." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2384 +#: src/libslic3r/PrintConfig.cpp:2414 msgid "Enable variable layer height feature" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2385 +#: src/libslic3r/PrintConfig.cpp:2415 msgid "" "Some printers or printer setups may have difficulties printing with a " "variable layer height. Enabled by default." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2391 +#: src/libslic3r/PrintConfig.cpp:2421 msgid "Wipe while retracting" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2392 +#: src/libslic3r/PrintConfig.cpp:2422 msgid "" "This flag will move the nozzle while retracting to minimize the possible " "blob on leaky extruders." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2399 +#: src/libslic3r/PrintConfig.cpp:2429 msgid "" "Multi material printers may need to prime or purge extruders on tool " "changes. Extrude the excess material into the wipe tower." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2405 +#: src/libslic3r/PrintConfig.cpp:2435 msgid "Purging volumes - load/unload volumes" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2406 +#: src/libslic3r/PrintConfig.cpp:2436 msgid "" "This vector saves required volumes to change from/to each tool used on the " "wipe tower. These values are used to simplify creation of the full purging " "volumes below." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2412 +#: src/libslic3r/PrintConfig.cpp:2442 msgid "Purging volumes - matrix" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2413 +#: src/libslic3r/PrintConfig.cpp:2443 msgid "" "This matrix describes volumes (in cubic milimetres) required to purge the " "new filament on the wipe tower for any given pair of tools." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2422 +#: src/libslic3r/PrintConfig.cpp:2452 msgid "Position X" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2423 +#: src/libslic3r/PrintConfig.cpp:2453 msgid "X coordinate of the left front corner of a wipe tower" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2429 +#: src/libslic3r/PrintConfig.cpp:2459 msgid "Position Y" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2430 +#: src/libslic3r/PrintConfig.cpp:2460 msgid "Y coordinate of the left front corner of a wipe tower" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2437 +#: src/libslic3r/PrintConfig.cpp:2467 msgid "Width of a wipe tower" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2443 +#: src/libslic3r/PrintConfig.cpp:2473 msgid "Wipe tower rotation angle" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2444 +#: src/libslic3r/PrintConfig.cpp:2474 msgid "Wipe tower rotation angle with respect to x-axis." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2451 +#: src/libslic3r/PrintConfig.cpp:2481 msgid "Wipe into this object's infill" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2452 +#: src/libslic3r/PrintConfig.cpp:2482 msgid "" "Purging after toolchange will done inside this object's infills. This lowers " "the amount of waste but may result in longer print time due to additional " "travel moves." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2459 +#: src/libslic3r/PrintConfig.cpp:2489 msgid "Wipe into this object" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2460 +#: src/libslic3r/PrintConfig.cpp:2490 msgid "" "Object will be used to purge the nozzle after a toolchange to save material " "that would otherwise end up in the wipe tower and decrease print time. " "Colours of the objects will be mixed as a result." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2466 +#: src/libslic3r/PrintConfig.cpp:2496 msgid "Maximal bridging distance" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2467 +#: src/libslic3r/PrintConfig.cpp:2497 msgid "Maximal distance between supports on sparse infill sections." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2473 +#: src/libslic3r/PrintConfig.cpp:2503 msgid "XY Size Compensation" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2475 +#: src/libslic3r/PrintConfig.cpp:2505 msgid "" "The object will be grown/shrunk in the XY plane by the configured value " "(negative = inwards, positive = outwards). This might be useful for fine-" "tuning hole sizes." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2483 +#: src/libslic3r/PrintConfig.cpp:2513 msgid "Z offset" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2484 +#: src/libslic3r/PrintConfig.cpp:2514 msgid "" "This value will be added (or subtracted) from all the Z coordinates in the " "output G-code. It is used to compensate for bad Z endstop position: for " @@ -10676,414 +10849,414 @@ msgid "" "print bed, set this to -0.3 (or fix your endstop)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2551 +#: src/libslic3r/PrintConfig.cpp:2581 msgid "Display width" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2552 +#: src/libslic3r/PrintConfig.cpp:2582 msgid "Width of the display" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2557 +#: src/libslic3r/PrintConfig.cpp:2587 msgid "Display height" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2558 +#: src/libslic3r/PrintConfig.cpp:2588 msgid "Height of the display" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2563 +#: src/libslic3r/PrintConfig.cpp:2593 msgid "Number of pixels in" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2565 +#: src/libslic3r/PrintConfig.cpp:2595 msgid "Number of pixels in X" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2571 +#: src/libslic3r/PrintConfig.cpp:2601 msgid "Number of pixels in Y" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2576 +#: src/libslic3r/PrintConfig.cpp:2606 msgid "Display horizontal mirroring" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2577 +#: src/libslic3r/PrintConfig.cpp:2607 msgid "Mirror horizontally" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2578 +#: src/libslic3r/PrintConfig.cpp:2608 msgid "Enable horizontal mirroring of output images" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2583 +#: src/libslic3r/PrintConfig.cpp:2613 msgid "Display vertical mirroring" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2584 +#: src/libslic3r/PrintConfig.cpp:2614 msgid "Mirror vertically" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2585 +#: src/libslic3r/PrintConfig.cpp:2615 msgid "Enable vertical mirroring of output images" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2590 +#: src/libslic3r/PrintConfig.cpp:2620 msgid "Display orientation" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2591 +#: src/libslic3r/PrintConfig.cpp:2621 msgid "" "Set the actual LCD display orientation inside the SLA printer. Portrait mode " "will flip the meaning of display width and height parameters and the output " "images will be rotated by 90 degrees." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2597 +#: src/libslic3r/PrintConfig.cpp:2627 msgid "Landscape" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2598 +#: src/libslic3r/PrintConfig.cpp:2628 msgid "Portrait" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2603 +#: src/libslic3r/PrintConfig.cpp:2633 msgid "Fast" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2604 +#: src/libslic3r/PrintConfig.cpp:2634 msgid "Fast tilt" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2605 +#: src/libslic3r/PrintConfig.cpp:2635 msgid "Time of the fast tilt" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2612 +#: src/libslic3r/PrintConfig.cpp:2642 msgid "Slow" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2613 +#: src/libslic3r/PrintConfig.cpp:2643 msgid "Slow tilt" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2614 +#: src/libslic3r/PrintConfig.cpp:2644 msgid "Time of the slow tilt" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2621 +#: src/libslic3r/PrintConfig.cpp:2651 msgid "Area fill" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2622 +#: src/libslic3r/PrintConfig.cpp:2652 msgid "" "The percentage of the bed area. \n" "If the print area exceeds the specified value, \n" "then a slow tilt will be used, otherwise - a fast tilt" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2629 src/libslic3r/PrintConfig.cpp:2630 -#: src/libslic3r/PrintConfig.cpp:2631 +#: src/libslic3r/PrintConfig.cpp:2659 src/libslic3r/PrintConfig.cpp:2660 +#: src/libslic3r/PrintConfig.cpp:2661 msgid "Printer scaling correction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2637 src/libslic3r/PrintConfig.cpp:2638 +#: src/libslic3r/PrintConfig.cpp:2667 src/libslic3r/PrintConfig.cpp:2668 msgid "Printer absolute correction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2639 +#: src/libslic3r/PrintConfig.cpp:2669 msgid "" "Will inflate or deflate the sliced 2D polygons according to the sign of the " "correction." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2645 +#: src/libslic3r/PrintConfig.cpp:2675 msgid "Elephant foot minimum width" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2647 +#: src/libslic3r/PrintConfig.cpp:2677 msgid "" "Minimum width of features to maintain when doing elephant foot compensation." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2654 src/libslic3r/PrintConfig.cpp:2655 +#: src/libslic3r/PrintConfig.cpp:2684 src/libslic3r/PrintConfig.cpp:2685 msgid "Printer gamma correction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2656 +#: src/libslic3r/PrintConfig.cpp:2686 msgid "" "This will apply a gamma correction to the rasterized 2D polygons. A gamma " "value of zero means thresholding with the threshold in the middle. This " "behaviour eliminates antialiasing without losing holes in polygons." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2668 src/libslic3r/PrintConfig.cpp:2669 +#: src/libslic3r/PrintConfig.cpp:2698 src/libslic3r/PrintConfig.cpp:2699 msgid "SLA material type" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2680 src/libslic3r/PrintConfig.cpp:2681 +#: src/libslic3r/PrintConfig.cpp:2710 src/libslic3r/PrintConfig.cpp:2711 msgid "Initial layer height" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2687 src/libslic3r/PrintConfig.cpp:2688 +#: src/libslic3r/PrintConfig.cpp:2717 src/libslic3r/PrintConfig.cpp:2718 msgid "Bottle volume" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2689 +#: src/libslic3r/PrintConfig.cpp:2719 msgid "ml" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2694 src/libslic3r/PrintConfig.cpp:2695 +#: src/libslic3r/PrintConfig.cpp:2724 src/libslic3r/PrintConfig.cpp:2725 msgid "Bottle weight" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2696 +#: src/libslic3r/PrintConfig.cpp:2726 msgid "kg" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2703 +#: src/libslic3r/PrintConfig.cpp:2733 msgid "g/ml" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2710 +#: src/libslic3r/PrintConfig.cpp:2740 msgid "money/bottle" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2715 +#: src/libslic3r/PrintConfig.cpp:2745 msgid "Faded layers" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2716 +#: src/libslic3r/PrintConfig.cpp:2746 msgid "" "Number of the layers needed for the exposure time fade from initial exposure " "time to the exposure time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2723 src/libslic3r/PrintConfig.cpp:2724 +#: src/libslic3r/PrintConfig.cpp:2753 src/libslic3r/PrintConfig.cpp:2754 msgid "Minimum exposure time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2731 src/libslic3r/PrintConfig.cpp:2732 +#: src/libslic3r/PrintConfig.cpp:2761 src/libslic3r/PrintConfig.cpp:2762 msgid "Maximum exposure time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2739 src/libslic3r/PrintConfig.cpp:2740 +#: src/libslic3r/PrintConfig.cpp:2769 src/libslic3r/PrintConfig.cpp:2770 msgid "Exposure time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2746 src/libslic3r/PrintConfig.cpp:2747 +#: src/libslic3r/PrintConfig.cpp:2776 src/libslic3r/PrintConfig.cpp:2777 msgid "Minimum initial exposure time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2754 src/libslic3r/PrintConfig.cpp:2755 +#: src/libslic3r/PrintConfig.cpp:2784 src/libslic3r/PrintConfig.cpp:2785 msgid "Maximum initial exposure time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2762 src/libslic3r/PrintConfig.cpp:2763 +#: src/libslic3r/PrintConfig.cpp:2792 src/libslic3r/PrintConfig.cpp:2793 msgid "Initial exposure time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2769 src/libslic3r/PrintConfig.cpp:2770 +#: src/libslic3r/PrintConfig.cpp:2799 src/libslic3r/PrintConfig.cpp:2800 msgid "Correction for expansion" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2776 +#: src/libslic3r/PrintConfig.cpp:2806 msgid "SLA print material notes" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2777 +#: src/libslic3r/PrintConfig.cpp:2807 msgid "You can put your notes regarding the SLA print material here." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2789 src/libslic3r/PrintConfig.cpp:2800 +#: src/libslic3r/PrintConfig.cpp:2819 src/libslic3r/PrintConfig.cpp:2830 msgid "Default SLA material profile" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2811 +#: src/libslic3r/PrintConfig.cpp:2841 msgid "Generate supports" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2813 +#: src/libslic3r/PrintConfig.cpp:2843 msgid "Generate supports for the models" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2818 +#: src/libslic3r/PrintConfig.cpp:2848 msgid "Pinhead front diameter" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2820 +#: src/libslic3r/PrintConfig.cpp:2850 msgid "Diameter of the pointing side of the head" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2827 +#: src/libslic3r/PrintConfig.cpp:2857 msgid "Head penetration" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2829 +#: src/libslic3r/PrintConfig.cpp:2859 msgid "How much the pinhead has to penetrate the model surface" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2836 +#: src/libslic3r/PrintConfig.cpp:2866 msgid "Pinhead width" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2838 +#: src/libslic3r/PrintConfig.cpp:2868 msgid "Width from the back sphere center to the front sphere center" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2846 +#: src/libslic3r/PrintConfig.cpp:2876 msgid "Pillar diameter" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2848 +#: src/libslic3r/PrintConfig.cpp:2878 msgid "Diameter in mm of the support pillars" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2856 +#: src/libslic3r/PrintConfig.cpp:2886 msgid "Small pillar diameter percent" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2858 +#: src/libslic3r/PrintConfig.cpp:2888 msgid "" "The percentage of smaller pillars compared to the normal pillar diameter " "which are used in problematic areas where a normal pilla cannot fit." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2867 +#: src/libslic3r/PrintConfig.cpp:2897 msgid "Max bridges on a pillar" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2869 +#: src/libslic3r/PrintConfig.cpp:2899 msgid "" "Maximum number of bridges that can be placed on a pillar. Bridges hold " "support point pinheads and connect to pillars as small branches." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2877 +#: src/libslic3r/PrintConfig.cpp:2907 msgid "Pillar connection mode" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2878 +#: src/libslic3r/PrintConfig.cpp:2908 msgid "" "Controls the bridge type between two neighboring pillars. Can be zig-zag, " "cross (double zig-zag) or dynamic which will automatically switch between " "the first two depending on the distance of the two pillars." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2886 +#: src/libslic3r/PrintConfig.cpp:2916 msgid "Zig-Zag" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2887 +#: src/libslic3r/PrintConfig.cpp:2917 msgid "Cross" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2888 +#: src/libslic3r/PrintConfig.cpp:2918 msgid "Dynamic" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2900 +#: src/libslic3r/PrintConfig.cpp:2930 msgid "Pillar widening factor" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2902 +#: src/libslic3r/PrintConfig.cpp:2932 msgid "" "Merging bridges or pillars into another pillars can increase the radius. " "Zero means no increase, one means full increase." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2911 +#: src/libslic3r/PrintConfig.cpp:2941 msgid "Support base diameter" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2913 +#: src/libslic3r/PrintConfig.cpp:2943 msgid "Diameter in mm of the pillar base" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2921 +#: src/libslic3r/PrintConfig.cpp:2951 msgid "Support base height" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2923 +#: src/libslic3r/PrintConfig.cpp:2953 msgid "The height of the pillar base cone" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2930 +#: src/libslic3r/PrintConfig.cpp:2960 msgid "Support base safety distance" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2933 +#: src/libslic3r/PrintConfig.cpp:2963 msgid "" "The minimum distance of the pillar base from the model in mm. Makes sense in " "zero elevation mode where a gap according to this parameter is inserted " "between the model and the pad." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2943 +#: src/libslic3r/PrintConfig.cpp:2973 msgid "Critical angle" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2945 +#: src/libslic3r/PrintConfig.cpp:2975 msgid "The default angle for connecting support sticks and junctions." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2953 +#: src/libslic3r/PrintConfig.cpp:2983 msgid "Max bridge length" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2955 +#: src/libslic3r/PrintConfig.cpp:2985 msgid "The max length of a bridge" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2962 +#: src/libslic3r/PrintConfig.cpp:2992 msgid "Max pillar linking distance" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2964 +#: src/libslic3r/PrintConfig.cpp:2994 msgid "" "The max distance of two pillars to get linked with each other. A zero value " "will prohibit pillar cascading." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2974 +#: src/libslic3r/PrintConfig.cpp:3004 msgid "" "How much the supports should lift up the supported object. If \"Pad around " "object\" is enabled, this value is ignored." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2985 +#: src/libslic3r/PrintConfig.cpp:3015 msgid "This is a relative measure of support points density." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2991 +#: src/libslic3r/PrintConfig.cpp:3021 msgid "Minimal distance of the support points" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2993 +#: src/libslic3r/PrintConfig.cpp:3023 msgid "No support points will be placed closer than this threshold." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2999 +#: src/libslic3r/PrintConfig.cpp:3029 msgid "Use pad" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3001 +#: src/libslic3r/PrintConfig.cpp:3031 msgid "Add a pad underneath the supported model" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3006 +#: src/libslic3r/PrintConfig.cpp:3036 msgid "Pad wall thickness" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3008 +#: src/libslic3r/PrintConfig.cpp:3038 msgid "The thickness of the pad and its optional cavity walls." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3016 +#: src/libslic3r/PrintConfig.cpp:3046 msgid "Pad wall height" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3017 +#: src/libslic3r/PrintConfig.cpp:3047 msgid "" "Defines the pad cavity depth. Set to zero to disable the cavity. Be careful " "when enabling this feature, as some resins may produce an extreme suction " @@ -11091,111 +11264,111 @@ msgid "" "difficult." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3030 +#: src/libslic3r/PrintConfig.cpp:3060 msgid "Pad brim size" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3031 +#: src/libslic3r/PrintConfig.cpp:3061 msgid "How far should the pad extend around the contained geometry" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3041 +#: src/libslic3r/PrintConfig.cpp:3071 msgid "Max merge distance" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3043 +#: src/libslic3r/PrintConfig.cpp:3073 msgid "" "Some objects can get along with a few smaller pads instead of a single big " "one. This parameter defines how far the center of two smaller pads should " "be. If theyare closer, they will get merged into one pad." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3063 +#: src/libslic3r/PrintConfig.cpp:3093 msgid "Pad wall slope" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3065 +#: src/libslic3r/PrintConfig.cpp:3095 msgid "" "The slope of the pad wall relative to the bed plane. 90 degrees means " "straight walls." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3076 +#: src/libslic3r/PrintConfig.cpp:3106 msgid "Create pad around object and ignore the support elevation" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3081 +#: src/libslic3r/PrintConfig.cpp:3111 msgid "Pad around object everywhere" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3083 +#: src/libslic3r/PrintConfig.cpp:3113 msgid "Force pad around object everywhere" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3088 +#: src/libslic3r/PrintConfig.cpp:3118 msgid "Pad object gap" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3090 +#: src/libslic3r/PrintConfig.cpp:3120 msgid "" "The gap between the object bottom and the generated pad in zero elevation " "mode." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3099 +#: src/libslic3r/PrintConfig.cpp:3129 msgid "Pad object connector stride" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3101 +#: src/libslic3r/PrintConfig.cpp:3131 msgid "" "Distance between two connector sticks which connect the object and the " "generated pad." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3108 +#: src/libslic3r/PrintConfig.cpp:3138 msgid "Pad object connector width" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3110 +#: src/libslic3r/PrintConfig.cpp:3140 msgid "" "Width of the connector sticks which connect the object and the generated pad." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3117 +#: src/libslic3r/PrintConfig.cpp:3147 msgid "Pad object connector penetration" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3120 +#: src/libslic3r/PrintConfig.cpp:3150 msgid "How much should the tiny connectors penetrate into the model body." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3127 +#: src/libslic3r/PrintConfig.cpp:3157 msgid "Enable hollowing" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3129 +#: src/libslic3r/PrintConfig.cpp:3159 msgid "Hollow out a model to have an empty interior" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3134 +#: src/libslic3r/PrintConfig.cpp:3164 msgid "Wall thickness" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3136 +#: src/libslic3r/PrintConfig.cpp:3166 msgid "Minimum wall thickness of a hollowed model." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3144 +#: src/libslic3r/PrintConfig.cpp:3174 msgid "Accuracy" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3146 +#: src/libslic3r/PrintConfig.cpp:3176 msgid "" "Performance vs accuracy of calculation. Lower values may produce unwanted " "artifacts." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3156 +#: src/libslic3r/PrintConfig.cpp:3186 msgid "" "Hollowing is done in two steps: first, an imaginary interior is calculated " "deeper (offset plus the closing distance) in the object and then it's " @@ -11204,266 +11377,270 @@ msgid "" "most." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3569 +#: src/libslic3r/PrintConfig.cpp:3602 msgid "Export OBJ" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3570 +#: src/libslic3r/PrintConfig.cpp:3603 msgid "Export the model(s) as OBJ." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3581 +#: src/libslic3r/PrintConfig.cpp:3614 msgid "Export SLA" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3582 +#: src/libslic3r/PrintConfig.cpp:3615 msgid "Slice the model and export SLA printing layers as PNG." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3587 +#: src/libslic3r/PrintConfig.cpp:3620 msgid "Export 3MF" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3588 +#: src/libslic3r/PrintConfig.cpp:3621 msgid "Export the model(s) as 3MF." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3592 +#: src/libslic3r/PrintConfig.cpp:3625 msgid "Export AMF" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3593 +#: src/libslic3r/PrintConfig.cpp:3626 msgid "Export the model(s) as AMF." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3597 +#: src/libslic3r/PrintConfig.cpp:3630 msgid "Export STL" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3598 +#: src/libslic3r/PrintConfig.cpp:3631 msgid "Export the model(s) as STL." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3603 +#: src/libslic3r/PrintConfig.cpp:3636 msgid "Slice the model and export toolpaths as G-code." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3608 +#: src/libslic3r/PrintConfig.cpp:3641 msgid "G-code viewer" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3609 +#: src/libslic3r/PrintConfig.cpp:3642 msgid "Visualize an already sliced and saved G-code" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3614 +#: src/libslic3r/PrintConfig.cpp:3647 msgid "Slice" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3615 +#: src/libslic3r/PrintConfig.cpp:3648 msgid "" "Slice the model as FFF or SLA based on the printer_technology configuration " "value." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3620 +#: src/libslic3r/PrintConfig.cpp:3653 msgid "Help" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3621 +#: src/libslic3r/PrintConfig.cpp:3654 msgid "Show this help." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3626 +#: src/libslic3r/PrintConfig.cpp:3659 msgid "Help (FFF options)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3627 +#: src/libslic3r/PrintConfig.cpp:3660 msgid "Show the full list of print/G-code configuration options." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3631 +#: src/libslic3r/PrintConfig.cpp:3664 msgid "Help (SLA options)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3632 +#: src/libslic3r/PrintConfig.cpp:3665 msgid "Show the full list of SLA print configuration options." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3636 +#: src/libslic3r/PrintConfig.cpp:3669 msgid "Output Model Info" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3637 +#: src/libslic3r/PrintConfig.cpp:3670 msgid "Write information about the model to the console." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3641 +#: src/libslic3r/PrintConfig.cpp:3674 msgid "Save config file" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3642 +#: src/libslic3r/PrintConfig.cpp:3675 msgid "Save configuration to the specified file." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3652 +#: src/libslic3r/PrintConfig.cpp:3685 msgid "Align XY" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3653 +#: src/libslic3r/PrintConfig.cpp:3686 msgid "Align the model to the given point." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3658 +#: src/libslic3r/PrintConfig.cpp:3691 msgid "Cut model at the given Z." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3679 +#: src/libslic3r/PrintConfig.cpp:3712 msgid "Center" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3680 +#: src/libslic3r/PrintConfig.cpp:3713 msgid "Center the print around the given center." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3684 +#: src/libslic3r/PrintConfig.cpp:3717 msgid "Don't arrange" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3685 +#: src/libslic3r/PrintConfig.cpp:3718 msgid "" "Do not rearrange the given models before merging and keep their original XY " "coordinates." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3688 +#: src/libslic3r/PrintConfig.cpp:3721 msgid "Duplicate" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3689 +#: src/libslic3r/PrintConfig.cpp:3722 msgid "Multiply copies by this factor." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3693 +#: src/libslic3r/PrintConfig.cpp:3726 msgid "Duplicate by grid" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3694 +#: src/libslic3r/PrintConfig.cpp:3727 msgid "Multiply copies by creating a grid." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3698 +#: src/libslic3r/PrintConfig.cpp:3731 msgid "" "Arrange the supplied models in a plate and merge them in a single model in " "order to perform actions once." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3703 +#: src/libslic3r/PrintConfig.cpp:3736 msgid "" "Try to repair any non-manifold meshes (this option is implicitly added " "whenever we need to slice the model to perform the requested action)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3707 +#: src/libslic3r/PrintConfig.cpp:3740 msgid "Rotation angle around the Z axis in degrees." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3711 +#: src/libslic3r/PrintConfig.cpp:3744 msgid "Rotate around X" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3712 +#: src/libslic3r/PrintConfig.cpp:3745 msgid "Rotation angle around the X axis in degrees." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3716 +#: src/libslic3r/PrintConfig.cpp:3749 msgid "Rotate around Y" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3717 +#: src/libslic3r/PrintConfig.cpp:3750 msgid "Rotation angle around the Y axis in degrees." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3722 +#: src/libslic3r/PrintConfig.cpp:3755 msgid "Scaling factor or percentage." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3727 +#: src/libslic3r/PrintConfig.cpp:3760 msgid "" "Detect unconnected parts in the given model(s) and split them into separate " "objects." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3730 +#: src/libslic3r/PrintConfig.cpp:3763 msgid "Scale to Fit" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3731 +#: src/libslic3r/PrintConfig.cpp:3764 msgid "Scale to fit the given volume." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3740 +#: src/libslic3r/PrintConfig.cpp:3773 msgid "Ignore non-existent config files" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3741 +#: src/libslic3r/PrintConfig.cpp:3774 msgid "Do not fail if a file supplied to --load does not exist." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3744 +#: src/libslic3r/PrintConfig.cpp:3777 msgid "Load config file" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3745 +#: src/libslic3r/PrintConfig.cpp:3778 msgid "" "Load configuration from the specified file. It can be used more than once to " "load options from multiple files." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3748 +#: src/libslic3r/PrintConfig.cpp:3781 msgid "Output File" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3749 +#: src/libslic3r/PrintConfig.cpp:3782 msgid "" "The file where the output will be written (if not specified, it will be " "based on the input file)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3754 +#: src/libslic3r/PrintConfig.cpp:3786 +msgid "Single instance mode" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3787 msgid "" "If enabled, the command line arguments are sent to an existing instance of " "GUI PrusaSlicer, or an existing PrusaSlicer window is activated. Overrides " "the \"single_instance\" configuration value from application preferences." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3765 +#: src/libslic3r/PrintConfig.cpp:3798 msgid "Data directory" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3766 +#: src/libslic3r/PrintConfig.cpp:3799 msgid "" "Load and store settings at the given directory. This is useful for " "maintaining different profiles or including configurations from a network " "storage." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3769 +#: src/libslic3r/PrintConfig.cpp:3802 msgid "Logging level" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3770 +#: src/libslic3r/PrintConfig.cpp:3803 msgid "" "Sets logging sensitivity. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" "trace\n" "For example. loglevel=2 logs fatal, error and warning level messages." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3776 +#: src/libslic3r/PrintConfig.cpp:3809 msgid "Render with a software renderer" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3777 +#: src/libslic3r/PrintConfig.cpp:3810 msgid "" "Render with a software renderer. The bundled MESA software renderer is " "loaded instead of the default OpenGL driver." @@ -11473,7 +11650,7 @@ msgstr "" msgid "Error with zip archive" msgstr "" -#: src/libslic3r/PrintObject.cpp:113 +#: src/libslic3r/PrintObject.cpp:112 msgid "Processing triangulated mesh" msgstr "" diff --git a/resources/localization/cs/PrusaSlicer.mo b/resources/localization/cs/PrusaSlicer.mo index 480a71be477adc29ddd7af0bb99b2ec7d2144e24..7b4a6c318ed606bd4f4b900c685e9e5cc6056b3a 100644 GIT binary patch delta 61698 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 z�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 delta 54330 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 bJ>6%u!@N7oXR+NJH^(Q$W?q`>^U(2sKz-S| diff --git a/resources/localization/cs/PrusaSlicer_cs.po b/resources/localization/cs/PrusaSlicer_cs.po index f8fa249cad..57417f3ca7 100644 --- a/resources/localization/cs/PrusaSlicer_cs.po +++ b/resources/localization/cs/PrusaSlicer_cs.po @@ -744,6 +744,10 @@ msgstr "Všechny horní povrchy" msgid "allocation failed" msgstr "alokace selhala" +#: src/slic3r/GUI/Preferences.cpp:161 src/slic3r/GUI/Preferences.cpp:165 +msgid "Allow just a single PrusaSlicer instance" +msgstr "Povolit pouze jednu instanci PrusaSliceru" + #: src/slic3r/GUI/Plater.cpp:3915 msgid "Along X axis" msgstr "Podél osy X" @@ -1011,6 +1015,10 @@ msgstr "Automatická rychlost (pokročilé)" msgid "Avoid crossing perimeters" msgstr "Vyhnout se přejíždění perimetrů" +#: src/libslic3r/PrintConfig.cpp:188 +msgid "Avoid crossing perimeters - Max detour length" +msgstr "Vyvarovat se přejezdů přes perimetry - maximální délka objízdné cesty" + #: src/slic3r/GUI/Tab.cpp:3705 msgid "BACK ARROW" msgstr "ŠIPKA ZPĚT" @@ -1388,6 +1396,11 @@ msgstr "Zkontrolujte aktualizace konfigurace" msgid "Check for updates" msgstr "Zkontrolovat akt&ualizace" +#: src/slic3r/Utils/PresetUpdater.cpp:412 +#: src/slic3r/Utils/PresetUpdater.cpp:420 +msgid "checking install indices" +msgstr "kontrola indexů instalace" + #: src/slic3r/GUI/BedShapeDialog.cpp:608 msgid "Choose a file to import bed texture from (PNG/SVG):" msgstr "Vyberte soubor, ze kterého chcete importovat texturu pro tiskovou podložku (PNG/SVG):" @@ -1729,6 +1742,26 @@ msgstr "Kopírovat do schránky" msgid "Copy to Clipboard" msgstr "Kopírovat do Schránky" +#: src/slic3r/GUI/AboutDialog.cpp:304 +msgid "Copy Version Info" +msgstr "Zkopírovat číslo verze" + +#: src/slic3r/Utils/PresetUpdater.cpp:84 +msgid "Copying of file %1% to %2% failed.\nError message : %3%\nCopying was triggered by function: %4%" +msgstr "Kopírování souboru %1% do %2% se nezdařilo.\nChybová zpráva: %3%\nTato chyba nastala ve funkci: %4%" + +#: src/slic3r/Utils/PresetUpdater.cpp:91 +msgid "Copying of file %1% to %2% failed. Permissions fail at target file after copying.\nError message : %3%\nCopying was triggered by function: %4%" +msgstr "Kopírování souboru %1% do %2% se nezdařilo. Pro kopírování z/do cílového souboru nemáte dostatečná oprávnění.\nChybová zpráva: %3%\nTato chyba nastala ve funkci: %4%" + +#: src/slic3r/Utils/PresetUpdater.cpp:70 +msgid "Copying of file %1% to %2% failed. Permissions fail at target file before copying.\nError message : %3%\n This error happend during %4% phase." +msgstr "Kopírování souboru %1% do %2% se nezdařilo. Pro kopírování z/do cílového souboru nemáte dostatečná oprávnění.\nChybová zpráva: %3%\nTato chyba nastala ve funkci: %4%" + +#: src/slic3r/Utils/PresetUpdater.cpp:70 +msgid "Copying of file %1% to %2% failed. Permissions fail at target file before copying.\nError message : %3%\nThis error happend during %4% phase." +msgstr "Kopírování souboru %1% do %2% se nezdařilo. Pro kopírování z/do cílového souboru nemáte dostatečná oprávnění.\nChybová zpráva: %3%\nTato chyba nastala ve funkci: %4%" + #: src/slic3r/GUI/BackgroundSlicingProcess.cpp:156 msgid "Copying of the temporary G-code has finished but the exported code couldn't be opened during copy check. The output G-code is at %1%.tmp." msgstr "Kopírování dočasného G-codu bylo dokončeno, ale exportovaný G-code nemohl být během kontroly kopírování otevřen. Výstupní G-cod je v %1%.tmp." @@ -1826,6 +1859,10 @@ msgstr "Vytvoří podložku kolem objektu a ignorujte nadzvednutí objektu podp msgid "Critical angle" msgstr "Kritický úhel" +#: src/slic3r/GUI/GUI_App.cpp:589 +msgid "Critical error" +msgstr "Kritická chyba" + #: src/libslic3r/PrintConfig.cpp:2832 msgid "Cross" msgstr "Cross" @@ -2437,6 +2474,14 @@ msgstr "Doba trvání" msgid "During the other layers, fan" msgstr "V průběhu ostatních vrstev, ventilátor" +#: src/slic3r/GUI/PresetHints.cpp:51 +msgid "During the other layers, fan will always run at %1%%%" +msgstr "Během ostatních vrstev bude ventilátor vždy běžet na %1%%%" + +#: src/slic3r/GUI/PresetHints.cpp:58 +msgid "During the other layers, fan will be turned off." +msgstr "Během ostatních vrstev bude ventilátor vypnutý." + #: src/libslic3r/PrintConfig.cpp:2833 msgid "Dynamic" msgstr "Dynamic" @@ -3155,6 +3200,10 @@ msgstr "Načtení vstupního modelu se nezdařilo." msgid "Failed processing of the output_filename_format template." msgstr "Zpracování šablony output_filename_format selhalo." +#: src/slic3r/GUI/GUI_App.cpp:1648 +msgid "Failed to activate configuration snapshot." +msgstr "Aktivace konfiguračního snapshotu se nezdařila." + #: src/slic3r/GUI/PresetHints.cpp:41 msgid "Fan" msgstr "Ventilátor" @@ -3171,6 +3220,22 @@ msgstr "Rychlost ventilátoru" msgid "Fan Speed (%)" msgstr "Rychlost ventilátoru (%)" +#: src/slic3r/GUI/PresetHints.cpp:49 +msgid "Fan speed will be ramped from zero at layer %1% to %2%%% at layer %3%." +msgstr "Rychlost ventilátoru se zvýší z nuly ve vrstvě %1% na %2%%% ve vrstvě %3%." + +#: src/libslic3r/PrintConfig.cpp:1001 +msgid "Fan speed will be ramped up linearly from zero at layer \"disable_fan_first_layers\" to maximum at layer \"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower than \"disable_fan_first_layers\", in which case the fan will be running at maximum allowed speed at layer \"disable_fan_first_layers\" + 1." +msgstr "Otáčky ventilátoru se lineárně zvýší z nuly ve vrstvě \"disable_fan_first_layers\" na maximum ve vrstvě \"full_fan_speed_layer\". Hodnota \"full_fan_speed_layer\" bude ignorována, pokud je nižší než \"disable_fan_first_layers\", v takovém případě se bude ventilátor točit na maximální povolenou hodnotu ve vrstvě \"disable_fan_first_layers\" + 1." + +#: src/slic3r/GUI/PresetHints.cpp:51 +msgid "Fan will always run at %1%%%" +msgstr "Ventilátor vždy poběží na %1%%%" + +#: src/slic3r/GUI/PresetHints.cpp:58 +msgid "Fan will be turned off." +msgstr "Ventilátor bude vypnutý." + #: src/libslic3r/PrintConfig.cpp:2548 msgid "Fast" msgstr "Rychlý" @@ -3521,6 +3586,10 @@ msgstr "Zepředu" msgid "Front View" msgstr "Pohled zepředu" +#: src/libslic3r/PrintConfig.cpp:1000 +msgid "Full fan speed at layer" +msgstr "Maximální otáčky ventilátoru ve vrstvě" + #: src/slic3r/GUI/Tab.cpp:1331 msgid "full profile name" msgstr "celé jméno profilu" @@ -3549,6 +3618,10 @@ msgstr "Druh G-code" msgid "G-code preview" msgstr "Náhled G-codu" +#: src/libslic3r/PrintConfig.cpp:66 +msgid "G-code thumbnails" +msgstr "Náhledy G-codu" + #: src/libslic3r/PrintConfig.cpp:3552 msgid "G-code viewer" msgstr "Prohlížeč G-codu" @@ -3644,6 +3717,10 @@ msgstr "Generování vrcholového bufferu" msgid "Generic" msgstr "Obecný" +#: src/slic3r/Utils/PresetUpdater.cpp:600 +msgid "getting config updates" +msgstr "získávání aktualizací konfigurace" + #: src/slic3r/GUI/KBShortcutsDialog.cpp:169 msgid "Gizmo cut" msgstr "Gizmo řez" @@ -3880,6 +3957,10 @@ msgstr "Plástev" msgid "Horizontal shells" msgstr "Vodorovné stěny" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:253 +msgid "Horizontal Slider" +msgstr "Horizontální posuvník" + #: src/slic3r/GUI/KBShortcutsDialog.cpp:209 #: src/slic3r/GUI/KBShortcutsDialog.cpp:213 #: src/slic3r/GUI/KBShortcutsDialog.cpp:238 @@ -3902,7 +3983,7 @@ msgstr "Horizontální posuvník - Pohyb posuvníkem vpravo" #: src/slic3r/GUI/KBShortcutsDialog.cpp:236 msgid "Horizontal slider - Set left thumb as active" -msgstr "Horizontální posuvník -Nastavit levý ukazatel jako aktivní" +msgstr "Horizontální posuvník - Nastavit levý ukazatel jako aktivní" #: src/slic3r/GUI/KBShortcutsDialog.cpp:236 msgid "Horizontal slider - Set left thumb to current thumb" @@ -3910,11 +3991,11 @@ msgstr "Horizontální posuvník -Pohyb levým posuvníkem k aktivnímu posuvní #: src/slic3r/GUI/KBShortcutsDialog.cpp:237 msgid "Horizontal slider - Set right thumb as active" -msgstr "Horizontální posuvník -Nastavit pravý ukazatel jako aktivní" +msgstr "Horizontální posuvník - Nastavit pravý ukazatel jako aktivní" #: src/slic3r/GUI/KBShortcutsDialog.cpp:237 msgid "Horizontal slider - Set right thumb to current thumb" -msgstr "Horizontální posuvník -Pohyb pravým posuvníkem k aktivnímu posuvníku" +msgstr "Horizontální posuvník - Pohyb pravým posuvníkem k aktivnímu posuvníku" #: src/libslic3r/PrintConfig.cpp:279 msgid "Horizontal width of the brim that will be printed around each object on the first layer." @@ -4056,6 +4137,10 @@ msgid "If enabled, the command line arguments are sent to an existing instance o msgstr "Pokud je povoleno, argumenty příkazového řádku se odešlou do existující instance grafického uživatelského rozhraní PrusaSlicer,u nebo se aktivuje existující okno PrusaSlicer. Přepíše hodnotu konfigurace „single_instance“ z nastavení aplikace." #: src/slic3r/GUI/Preferences.cpp:278 +msgid "If enabled, the descriptions of configuration parameters in settings tabs woldn't work as hyperlinks. If disabled, the descriptions of configuration parameters in settings tabs will work as hyperlinks." +msgstr "Pokud je aškrtnuto, popisky konfiguračních parametrů na kartách nastavení nebudou fungovat jako hypertextové odkazy. Pokud není zaškrtnuto, popisy konfiguračních parametrů budou fungovat jako hypertextové odkazy." + +#: src/slic3r/GUI/Preferences.cpp:294 msgid "If enabled, the descriptions of configuration parameters in settings tabs wouldn't work as hyperlinks. If disabled, the descriptions of configuration parameters in settings tabs will work as hyperlinks." msgstr "Pokud je aškrtnuto, popisky konfiguračních parametrů na kartách nastavení nebudou fungovat jako hypertextové odkazy. Pokud není zaškrtnuto, popisy konfiguračních parametrů budou fungovat jako hypertextové odkazy." @@ -4355,6 +4440,16 @@ msgstr "Doba počátečního osvitu" msgid "Initial layer height" msgstr "Výška první vrstvy" +#: src/slic3r/GUI/Field.cpp:269 +#, possible-c-format +msgid "Input value is out of range\nAre you sure that %s is a correct value and that you want to continue?" +msgstr "Vstupní hodnota je mimo povolený rozsah\nJste si jisti, že %s je správná hodnota a že chcete pokračovat?" + +#: src/slic3r/GUI/Field.cpp:268 +#, possible-c-format +msgid "Input value is out of range\nAre you sure that %s is a correct value and you want to continue?" +msgstr "Vstupní hodnota je mimo povolený rozsah\nJste si jisti, že %s je správná hodnota a chcete pokračovat?" + #: src/slic3r/GUI/Field.cpp:252 src/slic3r/GUI/Field.cpp:1370 msgid "Input value is out of range" msgstr "Zadaná hodnota je mimo rozsah" @@ -4363,6 +4458,10 @@ msgstr "Zadaná hodnota je mimo rozsah" msgid "Inspect / activate configuration snapshots" msgstr "Zkontrolovat / aktivovat zálohy konfigurace" +#: src/slic3r/Utils/PresetUpdater.cpp:120 +msgid "install" +msgstr "instralovat" + #: src/slic3r/GUI/ObjectDataViewModel.cpp:62 #: src/slic3r/GUI/ObjectDataViewModel.cpp:218 #, possible-c-format @@ -4432,6 +4531,10 @@ msgstr "Neplatný průnik podpěry do modelu" msgid "invalid header or archive is corrupted" msgstr "neplatná hlavička nebo je archiv poškozen" +#: src/slic3r/GUI/Field.cpp:375 +msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\"" +msgstr "Neplatný vstupní formát. Očekává se vektor rozměrů v následujícím formátu: \"%1%\"" + #: src/slic3r/GUI/Field.cpp:243 src/slic3r/GUI/Field.cpp:274 #: src/slic3r/GUI/Field.cpp:1358 src/slic3r/GUI/GUI_ObjectLayers.cpp:413 msgid "Invalid numeric input." @@ -5355,6 +5458,10 @@ msgstr "mm (nula pro vypnutí)" msgid "mm or %" msgstr "mm nebo %" +#: src/libslic3r/PrintConfig.cpp:193 +msgid "mm or % (zero to disable)" +msgstr "mm nebo % (nula pro deaktivaci)" + #: src/libslic3r/PrintConfig.cpp:271 src/libslic3r/PrintConfig.cpp:645 #: src/libslic3r/PrintConfig.cpp:653 src/libslic3r/PrintConfig.cpp:662 #: src/libslic3r/PrintConfig.cpp:670 src/libslic3r/PrintConfig.cpp:697 @@ -5494,6 +5601,22 @@ msgstr "Posunout ukazatel aktivního posuvníku vlevo" msgid "Move active slider thumb Right" msgstr "Posunout ukazatel aktivního posuvníku vpravo" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:220 +msgid "Move active thumb Down" +msgstr "Posunout aktivní ukazatel dolů" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:241 +msgid "Move active thumb Left" +msgstr "Posunout aktivní ukazatel vlevo" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:242 +msgid "Move active thumb Right" +msgstr "Posunout aktivní ukazatel vpravo" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:219 +msgid "Move active thumb Up" +msgstr "Posunout aktivní ukazatel nahoru" + #: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1219 msgid "Move clipping plane" msgstr "Posunout řezovou rovinu" @@ -5955,6 +6078,14 @@ msgstr "Zobrazení po jedné vrstvě" msgid "One or more object were assigned an extruder that the printer does not have." msgstr "Jeden nebo více objektů bylo přiřazeno extruderu, který tiskárna nemá." +#: src/slic3r/GUI/GUI_App.cpp:1784 +msgid "Ongoing uploads" +msgstr "Probíhá nahrávání" + +#: src/libslic3r/Print.cpp:1269 +msgid "Only a single object may be printed at a time in Spiral Vase mode. Either remove all but the last object, or enable sequential mode by \"complete_objects\"." +msgstr "V režimu spirálové vázy lze současně tisknout pouze jeden objekt. Buď odeberte všechny objekty kromě posledního, nebo povolte sekvenční režim pomocí \"complete_objects\"." + #: src/libslic3r/PrintConfig.cpp:2045 src/libslic3r/PrintConfig.cpp:2840 msgid "Only create support if it lies on a build plate. Don't create support on a print." msgstr "Podpěry vytvářet pouze v případě, že leží na tiskové podložce. Nevytváří podpěry na výtisky." @@ -6364,6 +6495,10 @@ msgstr "Vyberte si jiného výrobce, který je podporováný programem %s" msgid "Picture sizes to be stored into a .gcode and .sl1 files" msgstr "Velikosti obrázků, které mají být uloženy do souborů .gcode a .sl1" +#: src/libslic3r/PrintConfig.cpp:67 +msgid "Picture sizes to be stored into a .gcode and .sl1 files, in the following format: \"XxY, XxY, ...\"" +msgstr "Velikosti obrázků, které mají být uloženy do souborů .gcode a .sl1, v následujícím formátu: „XxY, XxY, ...“" + #: src/libslic3r/PrintConfig.cpp:2822 msgid "Pillar connection mode" msgstr "Způsob propojení podpěr" @@ -6488,6 +6623,10 @@ msgstr "Přednastavení \"%1%\" není kompatibilní s novým profilem tiskárny msgid "Preset with name \"%1%\" already exists and is imcopatible with selected printer." msgstr "Přednastavení s názvem \"%1%\" již existuje a není kompatibilní s vybranou tiskárnou." +#: src/slic3r/GUI/SavePresetDialog.cpp:136 +msgid "Preset with name \"%1%\" already exists and is incompatible with selected printer." +msgstr "Přednastavení s názvem \"%1%\" již existuje a není kompatibilní s vybranou tiskárnou." + #: src/slic3r/GUI/SavePresetDialog.cpp:136 msgid "Preset with name \"%1%\" already exists and is incopatible with selected printer." msgstr "Přednastavení s názvem \"%1%\" již existuje a není kompatibilní s vybranou tiskárnou." @@ -6501,6 +6640,10 @@ msgctxt "PresetName" msgid "Copy" msgstr "Kopie" +#: src/slic3r/GUI/GLCanvas3D.cpp:3990 +msgid "Press %1%left mouse button to enter the exact value" +msgstr "Pro zadání přesné hodnoty stiskni %1%levé tlačítko myši" + #: src/slic3r/GUI/KBShortcutsDialog.cpp:157 msgid "Press to activate deselection rectangle" msgstr "Stiskem aktivujete obdélníkové odstranění výběru" @@ -6719,6 +6862,10 @@ msgstr "PrusaSlicer detekoval úložiště SSL certifikátu v: %1%" msgid "PrusaSlicer GUI initialization failed" msgstr "Inicializace grafického uživatelského rozhraní PrusaSliceru se nezdařila" +#: src/slic3r/GUI/GUI_App.cpp:586 +msgid "PrusaSlicer has encountered a localization error. Please report to PrusaSlicer team, what language was active and in which scenario this issue happened. Thank you.\n\nThe application will now terminate." +msgstr "V aplikaci PrusaSlicer došlo k chybě v lokalizaci. Nahlaste PrusaSlicer týmu, jaký jazyk byl aktivní a ve kterém scénáři k tomuto problému došlo. Děkujeme.\n\nAplikace bude nyní ukončena." + #: src/slic3r/GUI/AboutDialog.cpp:285 msgid "PrusaSlicer is based on Slic3r by Alessandro Ranellucci and the RepRap community." msgstr "PrusaSlicer je založen na Slic3r od Alessandra Ranellucciho a RepRap komunity." @@ -7787,6 +7934,14 @@ msgstr "Nastavení sekvence extruderů pro celý tisk" msgid "Set extruder(tool) sequence" msgstr "Nastavte pořadí extruderu(nástroje)" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:243 +msgid "Set left thumb as active" +msgstr "Nastavit levý ukazatel jako aktivní" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:222 +msgid "Set lower thumb as active" +msgstr "Nastavit spodní ukazatel jako aktivní" + #: src/slic3r/GUI/KBShortcutsDialog.cpp:218 msgid "Set lower thumb to current slider thumb" msgstr "Aktivovat spodní ukazatel aktivního posuvníku" @@ -7820,6 +7975,10 @@ msgstr "Zvolen příznak Tisknout objekt" msgid "Set Printable Instance" msgstr "Zvolen příznak Tisknout Instanci" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:244 +msgid "Set right thumb as active" +msgstr "Nastavit pravý ukazatel jako aktivní" + #: src/slic3r/GUI/DoubleSlider.cpp:1836 msgid "Set ruler mode" msgstr "Nastavení režimu pravítka" @@ -7888,6 +8047,10 @@ msgstr "Odebrán příznak Tisknout objekt" msgid "Set Unprintable Instance" msgstr "Odebrán příznak Tisknout Instanci" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:221 +msgid "Set upper thumb as active" +msgstr "Nastavit horní ukazatel jako aktivní" + #: src/slic3r/GUI/KBShortcutsDialog.cpp:217 msgid "Set upper thumb to current slider thumb" msgstr "Aktivovat horní ukazatel aktivního posuvníku" @@ -8632,6 +8795,10 @@ msgstr "Soubor STL exportován do %s" msgid "Stop at height" msgstr "Skončit ve výšce" +#: src/slic3r/GUI/GUI_App.cpp:1781 +msgid "Stop them and continue anyway?" +msgstr "Chcete i přesto pokračovat a zastavit nahrávání?" + #: src/slic3r/GUI/PhysicalPrinterDialog.cpp:295 msgid "Success!" msgstr "Úspěch!" @@ -8986,6 +9153,18 @@ msgstr "Následující modely FFF tiskáren nemají vybraný filament:" msgid "The following presets were modified:" msgstr "Byla upravena následující přednastavení:" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:253 +msgid "The following shortcuts are applicable in G-code preview when the horizontal slider is active" +msgstr "Následující zkratky jsou použitelné v náhledu G-codu, když je aktivní vodorovný posuvník" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:237 +msgid "The following shortcuts are applicable in G-code preview when the vertical slider is active" +msgstr "Následující zkratky jsou použitelné v náhledu G-codu, když je aktivní svislý posuvník" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:179 +msgid "The following shortcuts are applicable when the specified gizmo is active" +msgstr "Následující klávesové zkratky jsou funkční při patřičném aktivním gizmu" + #: src/slic3r/GUI/ConfigWizard.cpp:2275 msgid "The following SLA printer models have no materials selected:" msgstr "Následující modely SLA tiskáren nemají vybrané žádné materiály:" @@ -9022,6 +9201,10 @@ msgstr "Maximální vzdálenost dvou podpůrných pilířů pro vzájemné prov msgid "The max length of a bridge" msgstr "Maximální délka přemostění" +#: src/libslic3r/PrintConfig.cpp:190 +msgid "The maximum detour length for avoid crossing perimeters. If the detour is longer than this value, avoid crossing perimeters is not applied for this travel path. Detour length could be specified either as an absolute value or as percentage (for example 50%) of a direct travel path." +msgstr "Maximální délka objízdné trasy s cílem, aby nedošlo k přejetí přes perimetry. Pokud je objízdná trasa delší než tato hodnota, nebude dodrženo omezení přejíždění přes perimetry. Délka objízdné trasy může být zadána buď jako absolutní hodnota, nebo jako procento (například 50%) přímé cesty." + #: src/libslic3r/PrintConfig.cpp:2878 msgid "The minimum distance of the pillar base from the model in mm. Makes sense in zero elevation mode where a gap according to this parameter is inserted between the model and the pad." msgstr "Minimální vzdálenost základny podpěr od modelu v mm. Dává smysl v režimu nulového nadzvednutí nad podložku, kde je mezera podle tohoto parametru vložena mezi model a podložku." @@ -9030,6 +9213,14 @@ msgstr "Minimální vzdálenost základny podpěr od modelu v mm. Dává smysl v msgid "The name cannot be empty." msgstr "Název nesmí být prázdný." +#: src/slic3r/GUI/SavePresetDialog.cpp:152 +msgid "The name cannot end with space character." +msgstr "Název nesmí končit mezerou." + +#: src/slic3r/GUI/SavePresetDialog.cpp:147 +msgid "The name cannot start with space character." +msgstr "Název nesmí začínat mezerou." + #: src/libslic3r/PrintConfig.cpp:219 msgid "The number of bottom solid layers is increased above bottom_solid_layers if necessary to satisfy minimum thickness of bottom shell." msgstr "Počet spodních plných vrstev je navýšen nad zadaný počet bottom_solid_layers, je-li to nutné k dosažení minimální tloušťky spodní skořepiny." @@ -9162,6 +9353,10 @@ msgstr "Zadané nastavení způsobí prázdný tisk." msgid "The thickness of the pad and its optional cavity walls." msgstr "Tloušťka podložky a její volitelné duté stěny." +#: src/slic3r/GUI/GUI_App.cpp:1781 +msgid "The uploads are still ongoing" +msgstr "Nahrávání stále probíhá" + #: src/libslic3r/PrintConfig.cpp:2053 msgid "The vertical distance between object and support material interface. Setting this to 0 will also prevent Slic3r from using bridge flow and speed for the first object layer." msgstr "Vertikální vzdálenost mezi objektem a podpěrami. Nastavením tohoto parametru na hodnotu 0 se také zabrání tomu, aby Slic3r použil parametry průtoku a rychlosti pro mosty při tisku první vrstvy objektu." @@ -9319,6 +9514,10 @@ msgstr "Tato funkce umožňuje vynucení plné vrstvy za každý daný počet vr msgid "This feature will raise Z gradually while printing a single-walled object in order to remove any visible seam. This option requires a single perimeter, no infill, no top solid layers and no support material. You can still set any number of bottom solid layers as well as skirt/brim loops. It won't work when printing more than an object." msgstr "Tato funkce zvýší postupně Z při tisku jednovrstvého objektu, aby se odstranil jakýkoli viditelný šev. Tato volba vyžaduje jediný obvod, žádnou výplň, žádné vrchní plné vrstvy a žádný podpůrný materiál. Můžete stále nastavit libovolný počet spodních plných vrstev, stejně jako obrysové smyčky / límec. Při tisku více než jednoho objektu nebude toto nastavení fungovat." +#: src/libslic3r/PrintConfig.cpp:1995 +msgid "This feature will raise Z gradually while printing a single-walled object in order to remove any visible seam. This option requires a single perimeter, no infill, no top solid layers and no support material. You can still set any number of bottom solid layers as well as skirt/brim loops. It won't work when printing more than one single object." +msgstr "Tato funkce zvýší postupně Z při tisku jednovrstvého objektu, aby se odstranil jakýkoli viditelný šev. Tato volba vyžaduje jediný obvod, žádnou výplň, žádné vrchní plné vrstvy a žádný podpůrný materiál. Můžete stále nastavit libovolný počet spodních plných vrstev, stejně jako obrysové smyčky / límec. Při tisku více než jednoho samostatného objektu nebude toto nastavení fungovat." + #: src/slic3r/GUI/Plater.cpp:2329 msgid "This file cannot be loaded in a simple mode. Do you want to switch to an advanced mode?" msgstr "Tento soubor nelze načíst v jednoduchém režimu. Chcete přepnout do pokročilého režimu?" @@ -9888,6 +10087,10 @@ msgstr "Vyšší vrstva" msgid "Upper layer" msgstr "Horní vrstva" +#: src/slic3r/GUI/GLCanvas3D.cpp:3990 +msgid "Use %1%left mouse key to enter text edit mode:" +msgstr "Stiskněte %1%levé tlačítko myši pro vstup do režimu textové editace:\n" + #: src/slic3r/GUI/DoubleSlider.cpp:1276 msgid "Use another extruder" msgstr "Použít jiný extruder" @@ -10067,6 +10270,10 @@ msgstr "verze" msgid "Vertical shells" msgstr "Svislé stěny" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:237 +msgid "Vertical Slider" +msgstr "Vertikální posuvník" + #: src/slic3r/GUI/KBShortcutsDialog.cpp:234 msgid "Vertical slider - Add color change marker for current layer" msgstr "Vertikální posuvník - Přidat značku změny barvy pro aktuální vrstvu" @@ -10105,7 +10312,7 @@ msgstr "Vertikální posuvník - Pohyb spodním posuvníkem k aktivnímu posuvn #: src/slic3r/GUI/KBShortcutsDialog.cpp:232 msgid "Vertical slider - Set upper thumb as active" -msgstr "Vertikální posuvník -Nastavit horní ukazatel jako aktivní" +msgstr "Vertikální posuvník - Nastavit horní ukazatel jako aktivní" #: src/slic3r/GUI/KBShortcutsDialog.cpp:232 msgid "Vertical slider - Set upper thumb to current thumb" @@ -10458,6 +10665,10 @@ msgstr "Nelze načíst SLA projekt s objektem na podložce, který je složený msgid "You cannot use non-uniform scaling mode for multiple objects/parts selection" msgstr "Nemůžete použít nestejnoměrnou změnu měřítka pro více vybraných objektů/částí" +#: src/slic3r/GUI/NotificationManager.hpp:459 +msgid "You have just added a G-code for color change, but its value is empty.\nTo export the G-code correctly, check the \"Color Change G-code\" in \"Printer Settings > Custom G-code\"" +msgstr "Právě jste přidali G-code pro změnu barvy, ale jeho obsah je prázdný.\nChcete-li exportovat G-code správně, zkontrolujte „G-code pro změnu barvy“ v „Nastavení tiskárny> Vlastní G-code“" + #: src/slic3r/GUI/SavePresetDialog.cpp:277 msgid "You have selected physical printer \"%1%\" \nwith related printer preset \"%2%\"" msgstr "Vybrali jste fyzickou tiskárnu \"%1%\"\ns tiskovým přednastavením \"%2%\"" diff --git a/src/slic3r/GUI/Field.cpp b/src/slic3r/GUI/Field.cpp index 1575096ba7..d29579016a 100644 --- a/src/slic3r/GUI/Field.cpp +++ b/src/slic3r/GUI/Field.cpp @@ -267,7 +267,7 @@ void Field::get_value_by_opt_type(wxString& str, const bool check_value/* = true if (m_opt_id == "extrusion_multiplier") { if (m_value.empty() || boost::any_cast(m_value) != val) { wxString msg_text = format_wxstr(_L("Input value is out of range\n" - "Are you sure that %s is a correct value and you want to continue?"), str); + "Are you sure that %s is a correct value and that you want to continue?"), str); wxMessageDialog dialog(m_parent, msg_text, _L("Parameter validation") + ": " + m_opt_id, wxICON_WARNING | wxYES | wxNO); if (dialog.ShowModal() == wxID_NO) set_val(val); diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 11e61b9f94..14892d678b 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -4027,7 +4027,7 @@ bool GLCanvas3D::_render_arrange_menu(float pos_x) dist_key += postfix; rot_key += postfix; - imgui->text(GUI::format_wxstr(_L("Use %1%left mouse key to enter text edit mode:"), shortkey_ctrl_prefix())); + imgui->text(GUI::format_wxstr(_L("Press %1%left mouse button to enter the exact value"), shortkey_ctrl_prefix())); if (imgui->slider_float(_L("Spacing"), &settings.distance, dist_min, 100.0f, "%5.2f") || dist_min > settings.distance) { settings.distance = std::max(dist_min, settings.distance); diff --git a/src/slic3r/Utils/PresetUpdater.cpp b/src/slic3r/Utils/PresetUpdater.cpp index c3ea473cba..94de459bc1 100644 --- a/src/slic3r/Utils/PresetUpdater.cpp +++ b/src/slic3r/Utils/PresetUpdater.cpp @@ -68,7 +68,8 @@ void copy_file_fix(const fs::path& source, const fs::path& target,const std::str if (ec) { std::string msg = GUI::format( _L("Copying of file %1% to %2% failed. Permissions fail at target file before copying.\n" - "Error message : %3%\n This error happend during %4% phase."), + "Error message : %3%\n" + "This error happend during %4% phase."), source, target, ec.message(), caller_function_name); #if defined(__APPLE__) || defined(_WIN32) throw Slic3r::CriticalException(msg); From 20aa8d65bf2eef6e0023cd6763ef5ed281e6700b Mon Sep 17 00:00:00 2001 From: Lukas Matena Date: Wed, 16 Dec 2020 17:10:48 +0100 Subject: [PATCH 062/135] Fix through Netfabb notification - remove 'undo' hypertext for now and refuse to fix when a gizmo is opened (because of missing updates) This is a follow-up of 1249fdb --- src/slic3r/GUI/Plater.cpp | 38 +++++++++++++++++++++++++++----------- 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 35c03db267..fb7a81a4f9 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -3365,7 +3365,18 @@ void Plater::priv::fix_through_netfabb(const int obj_idx, const int vol_idx/* = if (obj_idx < 0) return; - size_t snapshot_time = undo_redo_stack().active_snapshot_time(); + // Do not fix anything when a gizmo is open. There might be issues with updates + // and what is worse, the snapshot time would refer to the internal stack. + if (q->canvas3D()->get_gizmos_manager().get_current_type() != GLGizmosManager::Undefined) { + notification_manager->push_notification( + NotificationType::CustomSupportsAndSeamRemovedAfterRepair, + NotificationManager::NotificationLevel::RegularNotification, + _u8L("ERROR: Please close all manipulators available from " + "the left toolbar before fixing the mesh.")); + return; + } + + // size_t snapshot_time = undo_redo_stack().active_snapshot_time(); Plater::TakeSnapshot snapshot(q, _L("Fix through NetFabb")); ModelObject* mo = model.objects[obj_idx]; @@ -3383,16 +3394,21 @@ void Plater::priv::fix_through_netfabb(const int obj_idx, const int vol_idx/* = notification_manager->push_notification( NotificationType::CustomSupportsAndSeamRemovedAfterRepair, NotificationManager::NotificationLevel::RegularNotification, - _u8L("Custom supports and seams were removed after repairing the mesh."), - _u8L("Undo the repair"), - [this, snapshot_time](wxEvtHandler*){ - if (undo_redo_stack().has_undo_snapshot(snapshot_time)) - undo_redo_to(snapshot_time); - else - notification_manager->push_notification( - _u8L("Cannot undo to before the mesh repair!")); - return true; - }); + _u8L("Custom supports and seams were removed after repairing the mesh.")); +// _u8L("Undo the repair"), +// [this, snapshot_time](wxEvtHandler*){ +// // Make sure the snapshot is still available and that +// // we are in the main stack and not in a gizmo-stack. +// if (undo_redo_stack().has_undo_snapshot(snapshot_time) +// && q->canvas3D()->get_gizmos_manager().get_current() == nullptr) +// undo_redo_to(snapshot_time); +// else +// notification_manager->push_notification( +// NotificationType::CustomSupportsAndSeamRemovedAfterRepair, +// NotificationManager::NotificationLevel::RegularNotification, +// _u8L("Cannot undo to before the mesh repair!")); +// return true; +// }); } fix_model_by_win10_sdk_gui(*mo, vol_idx); From 99747f8f256064f06329fea9a96a15705e042e64 Mon Sep 17 00:00:00 2001 From: David Kocik Date: Wed, 16 Dec 2020 17:42:50 +0100 Subject: [PATCH 063/135] Changed requested time of rendering for timed notification to full duration. Commented unused code. --- src/slic3r/GUI/NotificationManager.cpp | 47 +++++++++++++++----------- src/slic3r/GUI/NotificationManager.hpp | 29 +++++++++++----- src/slic3r/Utils/PresetUpdater.cpp | 2 +- 3 files changed, 49 insertions(+), 29 deletions(-) diff --git a/src/slic3r/GUI/NotificationManager.cpp b/src/slic3r/GUI/NotificationManager.cpp index fa5aab66c1..c2c7727edb 100644 --- a/src/slic3r/GUI/NotificationManager.cpp +++ b/src/slic3r/GUI/NotificationManager.cpp @@ -20,11 +20,11 @@ static constexpr float GAP_WIDTH = 10.0f; static constexpr float SPACE_RIGHT_PANEL = 10.0f; #if ENABLE_NEW_NOTIFICATIONS_FADE_OUT static constexpr float FADING_OUT_DURATION = 2.0f; -// Time in Miliseconds after next render is requested +// Time in Miliseconds after next render when fading out is requested static constexpr int FADING_OUT_TIMEOUT = 100; // If timeout is changed to higher than 1 second, substract_time call should be revorked -static constexpr int MAX_TIMEOUT_MILISECONDS = 1000; -static constexpr int MAX_TIMEOUT_SECONDS = 1; +//static constexpr int MAX_TIMEOUT_MILISECONDS = 1000; +//static constexpr int MAX_TIMEOUT_SECONDS = 1; #endif // ENABLE_NEW_NOTIFICATIONS_FADE_OUT namespace Slic3r { @@ -139,6 +139,7 @@ NotificationManager::PopNotification::PopNotification(const NotificationData &n, , m_hypertext (n.hypertext) , m_text2 (n.text2) , m_evt_handler (evt_handler) + , m_notification_start (GLCanvas3D::timestamp_now()) { //init(); } @@ -760,29 +761,29 @@ void NotificationManager::PopNotification::update_state() return; } + int64_t now = GLCanvas3D::timestamp_now(); + if (m_hovered) { // reset fading m_fading_out = false; m_current_fade_opacity = 1.0f; m_remaining_time = m_data.duration; -// m_notification_start = GLCanvas3D::timestamp_now(); -// BOOST_LOG_TRIVIAL(error) << "hover"; + m_notification_start = now; } - int64_t now = GLCanvas3D::timestamp_now(); + if (m_counting_down) { - //int64_t up_time = GLCanvas3D::timestamp_now() - m_notification_start; + int64_t up_time = now - m_notification_start; if (m_fading_out && m_current_fade_opacity <= 0.0f) m_finished = true; - else if (!m_fading_out && m_remaining_time <=0/*up_time >= m_data.duration * 1000*/) { + else if (!m_fading_out && /*m_remaining_time <=0*/up_time >= m_data.duration * 1000) { m_fading_out = true; m_fading_start = now; m_last_render_fading = now; } else if (!m_fading_out) { - m_next_render = std::min(/*m_data.duration * 1000 - up_time*/m_remaining_time * 1000, MAX_TIMEOUT_MILISECONDS); - //BOOST_LOG_TRIVIAL(error) << (boost::format("up time %1% next render %2%") % up_time % m_next_render); + m_next_render = m_data.duration * 1000 - up_time;//std::min(/*m_data.duration * 1000 - up_time*/m_remaining_time * 1000, MAX_TIMEOUT_MILISECONDS); } } @@ -790,14 +791,12 @@ void NotificationManager::PopNotification::update_state() if (m_finished) { m_state = EState::Finished; m_next_render = 0; - //BOOST_LOG_TRIVIAL(error) << "EState::Finished"; return; } if (m_close_pending) { m_finished = true; m_state = EState::ClosePending; m_next_render = 0; - //BOOST_LOG_TRIVIAL(error) << "EState::ClosePending"; return; } if (m_fading_out) { @@ -813,10 +812,8 @@ void NotificationManager::PopNotification::update_state() m_next_render = 0; } else m_next_render = next_render; - //BOOST_LOG_TRIVIAL(error) << (boost::format("fade render %1%") % m_next_render); } } - //BOOST_LOG_TRIVIAL(error) << (boost::format("remaining time %1% fading %2% next render %3%") % m_remaining_time % m_fading_out % m_next_render); } #endif // ENABLE_NEW_NOTIFICATIONS_FADE_OUT @@ -1214,10 +1211,11 @@ bool NotificationManager::push_notification_data(const NotificationData& notific } bool NotificationManager::push_notification_data(std::unique_ptr notification, int timestamp) { +/* #if ENABLE_NEW_NOTIFICATIONS_FADE_OUT m_requires_update = true; #endif // ENABLE_NEW_NOTIFICATIONS_FADE_OUT - +*/ // if timestamped notif, push only new one if (timestamp != 0) { if (m_used_timestamps.find(timestamp) == m_used_timestamps.end()) { @@ -1242,6 +1240,7 @@ bool NotificationManager::push_notification_data(std::unique_ptrget_current_canvas3D(); @@ -1376,6 +1375,14 @@ void NotificationManager::set_in_preview(bool preview) #if ENABLE_NEW_NOTIFICATIONS_FADE_OUT void NotificationManager::update_notifications() { + // no update if not top window + wxWindow* p = dynamic_cast(wxGetApp().plater()); + while (p->GetParent() != nullptr) + p = p->GetParent(); + wxTopLevelWindow* top_level_wnd = dynamic_cast(p); + if (!top_level_wnd->IsActive()) + return; + static size_t last_size = m_pop_notifications.size(); for (auto it = m_pop_notifications.begin(); it != m_pop_notifications.end();) { @@ -1388,7 +1395,7 @@ void NotificationManager::update_notifications() ++it; } } - + /* m_requires_update = false; for (const std::unique_ptr& notification : m_pop_notifications) { if (notification->requires_update()) { @@ -1396,7 +1403,7 @@ void NotificationManager::update_notifications() break; } } - + */ // update hovering state m_hovered = false; for (const std::unique_ptr& notification : m_pop_notifications) { @@ -1406,7 +1413,7 @@ void NotificationManager::update_notifications() } } - + /* // Reuire render if some notification was just deleted. size_t curr_size = m_pop_notifications.size(); m_requires_render = m_hovered || (last_size != curr_size); @@ -1424,7 +1431,7 @@ void NotificationManager::update_notifications() // Make sure there will be update after last notification erased if (m_requires_render) m_requires_update = true; - + */ //request frames int64_t next_render = std::numeric_limits::max(); const int64_t max = std::numeric_limits::max(); @@ -1437,6 +1444,7 @@ void NotificationManager::update_notifications() else if (next_render < max) wxGetApp().plater()->get_current_canvas3D()->request_extra_frame_delayed(int(next_render)); + /* // actualizate timers wxWindow* p = dynamic_cast(wxGetApp().plater()); while (p->GetParent() != nullptr) @@ -1460,6 +1468,7 @@ void NotificationManager::update_notifications() } } } + */ } #endif // ENABLE_NEW_NOTIFICATIONS_FADE_OUT diff --git a/src/slic3r/GUI/NotificationManager.hpp b/src/slic3r/GUI/NotificationManager.hpp index 580c838c53..9252190efc 100644 --- a/src/slic3r/GUI/NotificationManager.hpp +++ b/src/slic3r/GUI/NotificationManager.hpp @@ -148,13 +148,13 @@ public: void set_in_preview(bool preview); // Move to left to avoid colision with variable layer height gizmo. void set_move_from_overlay(bool move) { m_move_from_overlay = move; } - +/* #if ENABLE_NEW_NOTIFICATIONS_FADE_OUT - void update_notifications(); + bool requires_update() const { return m_requires_update; } bool requires_render() const { return m_requires_render; } #endif // ENABLE_NEW_NOTIFICATIONS_FADE_OUT - +*/ private: // duration 0 means not disapearing struct NotificationData { @@ -189,6 +189,7 @@ private: class PopNotification { public: + #if ENABLE_NEW_NOTIFICATIONS_FADE_OUT enum class EState { @@ -209,6 +210,7 @@ private: Hovered }; #endif // ENABLE_NEW_NOTIFICATIONS_FADE_OUT + PopNotification(const NotificationData &n, NotificationIDProvider &id_provider, wxEvtHandler* evt_handler); virtual ~PopNotification() { if (m_id) m_id_provider.release_id(m_id); } #if ENABLE_NEW_NOTIFICATIONS_FADE_OUT @@ -238,13 +240,15 @@ private: bool compare_text(const std::string& text); void hide(bool h) { m_hidden = h; } #if ENABLE_NEW_NOTIFICATIONS_FADE_OUT + // sets m_next_render with time of next mandatory rendering void update_state(); + int64_t next_render() const { return m_next_render; } + /* bool requires_render() const { return m_state == EState::FadingOutRender || m_state == EState::ClosePending || m_state == EState::Finished; } bool requires_update() const { return m_state != EState::Hidden; } + */ EState get_state() const { return m_state; } - int64_t next_render() const { return m_next_render; } #endif // ENABLE_NEW_NOTIFICATIONS_FADE_OUT - protected: // Call after every size change void init(); @@ -279,9 +283,11 @@ private: // For reusing ImGUI windows. NotificationIDProvider &m_id_provider; + #if ENABLE_NEW_NOTIFICATIONS_FADE_OUT EState m_state { EState::Unknown }; #endif // ENABLE_NEW_NOTIFICATIONS_FADE_OUT + int m_id { 0 }; bool m_initialized { false }; // Main text @@ -302,7 +308,7 @@ private: // time of last done render when fading int64_t m_last_render_fading { 0LL }; // first appereance of notification or last hover; -// int64_t m_notification_start; + int64_t m_notification_start; // time to next must-do render int64_t m_next_render { std::numeric_limits::max() }; #else @@ -432,8 +438,12 @@ private: void sort_notifications(); // If there is some error notification active, then the "Export G-code" notification after the slicing is finished is suppressed. bool has_slicing_error_notification(); - - // Target for wxWidgets events sent by clicking on the hyperlink available at some notifications. +#if ENABLE_NEW_NOTIFICATIONS_FADE_OUT + // perform update_state on each notification and ask for more frames if needed + void update_notifications(); +#endif // ENABLE_NEW_NOTIFICATIONS_FADE_OUT + + // Target for wxWidgets events sent by clicking on the hyperlink available at some notifications. wxEvtHandler* m_evt_handler; // Cache of IDs to identify and reuse ImGUI windows. NotificationIDProvider m_id_provider; @@ -448,11 +458,12 @@ private: bool m_in_preview { false }; // True if the layer editing is enabled in Plater, so that the notifications are shifted left of it. bool m_move_from_overlay { false }; +/* #if ENABLE_NEW_NOTIFICATIONS_FADE_OUT bool m_requires_update{ false }; bool m_requires_render{ false }; #endif // ENABLE_NEW_NOTIFICATIONS_FADE_OUT - +*/ //prepared (basic) notifications const std::vector basic_notifications = { // {NotificationType::SlicingNotPossible, NotificationLevel::RegularNotification, 10, _u8L("Slicing is not possible.")}, diff --git a/src/slic3r/Utils/PresetUpdater.cpp b/src/slic3r/Utils/PresetUpdater.cpp index 94de459bc1..fa0f7b38ed 100644 --- a/src/slic3r/Utils/PresetUpdater.cpp +++ b/src/slic3r/Utils/PresetUpdater.cpp @@ -741,7 +741,7 @@ void PresetUpdater::slic3r_update_notify() PresetUpdater::UpdateResult PresetUpdater::config_update(const Semver& old_slic3r_version, bool no_notification) const { if (! p->enabled_config_update) { return R_NOOP; } - + auto updates = p->get_config_updates(old_slic3r_version); if (updates.incompats.size() > 0) { BOOST_LOG_TRIVIAL(info) << format("%1% bundles incompatible. Asking for action...", updates.incompats.size()); From 64e68f418b94e5f63226b78e553fc3e121ea9454 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Wed, 16 Dec 2020 20:04:14 +0100 Subject: [PATCH 064/135] Follow-up to https://github.com/prusa3d/PrusaSlicer/commit/3eb63c93e1626348876dee23cab570d0e6964f1d: If value for "Extrusion Multiplier" is out of range, and "NO" is selected in warning message dialog, then set previous value instead of max limit value --- src/slic3r/GUI/Field.cpp | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/slic3r/GUI/Field.cpp b/src/slic3r/GUI/Field.cpp index d29579016a..4eae3e36e6 100644 --- a/src/slic3r/GUI/Field.cpp +++ b/src/slic3r/GUI/Field.cpp @@ -259,23 +259,27 @@ void Field::get_value_by_opt_type(wxString& str, const bool check_value/* = true m_value.clear(); break; } - auto set_val = [this](double& val) { - if (m_opt.min > val) val = m_opt.min; - if (val > m_opt.max) val = m_opt.max; - set_value(double_to_string(val), true); - }; if (m_opt_id == "extrusion_multiplier") { if (m_value.empty() || boost::any_cast(m_value) != val) { wxString msg_text = format_wxstr(_L("Input value is out of range\n" "Are you sure that %s is a correct value and that you want to continue?"), str); wxMessageDialog dialog(m_parent, msg_text, _L("Parameter validation") + ": " + m_opt_id, wxICON_WARNING | wxYES | wxNO); - if (dialog.ShowModal() == wxID_NO) - set_val(val); + if (dialog.ShowModal() == wxID_NO) { + if (m_value.empty()) { + if (m_opt.min > val) val = m_opt.min; + if (val > m_opt.max) val = m_opt.max; + } + else + val = boost::any_cast(m_value); + set_value(double_to_string(val), true); + } } } else { show_error(m_parent, _L("Input value is out of range")); - set_val(val); + if (m_opt.min > val) val = m_opt.min; + if (val > m_opt.max) val = m_opt.max; + set_value(double_to_string(val), true); } } } From 19b7827511db2a46911ec6567decd0a54beffa13 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Thu, 17 Dec 2020 00:37:07 +0100 Subject: [PATCH 065/135] Fix of #5103 and #4861 - ConfigWizard layout issues --- src/slic3r/GUI/ConfigWizard.cpp | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/src/slic3r/GUI/ConfigWizard.cpp b/src/slic3r/GUI/ConfigWizard.cpp index 00cf06e7d1..f69826139a 100644 --- a/src/slic3r/GUI/ConfigWizard.cpp +++ b/src/slic3r/GUI/ConfigWizard.cpp @@ -35,6 +35,11 @@ #include "slic3r/Config/Snapshot.hpp" #include "slic3r/Utils/PresetUpdater.hpp" +#if defined(__linux__) && defined(__WXGTK3__) +#define wxLinux_gtk3 true +#else +#define wxLinux_gtk3 false +#endif //defined(__linux__) && defined(__WXGTK3__) namespace Slic3r { namespace GUI { @@ -409,7 +414,11 @@ ConfigWizardPage::ConfigWizardPage(ConfigWizard *parent, wxString title, wxStrin SetSizer(sizer); - this->Hide(); + // There is strange layout on Linux with GTK3, + // see https://github.com/prusa3d/PrusaSlicer/issues/5103 and https://github.com/prusa3d/PrusaSlicer/issues/4861 + // So, non-active pages will be hidden later, on wxEVT_SHOW, after completed Layout() for all pages + if (!wxLinux_gtk3) + this->Hide(); Bind(wxEVT_SIZE, [this](wxSizeEvent &event) { this->Layout(); @@ -2642,6 +2651,20 @@ ConfigWizard::ConfigWizard(wxWindow *parent) Layout(); }); + + if (wxLinux_gtk3) + this->Bind(wxEVT_SHOW, [this, vsizer](const wxShowEvent& e) { + ConfigWizardPage* active_page = p->index->active_page(); + if (!active_page) + return; + for (auto page : p->all_pages) + if (page != active_page) + page->Hide(); + // update best size for the dialog after hiding of the non-active pages + vsizer->SetSizeHints(this); + // set initial dialog size + p->init_dialog_size(); + }); } ConfigWizard::~ConfigWizard() {} From ddef0841842630f7c669ee3291254933f8c3d951 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Thu, 17 Dec 2020 09:09:14 +0100 Subject: [PATCH 066/135] Localization: Updated CZ, DE, ES, FR, IT and PL dictionaries --- resources/localization/cs/PrusaSlicer.mo | Bin 302773 -> 294970 bytes resources/localization/cs/PrusaSlicer_cs.po | 229 ----------- resources/localization/de/PrusaSlicer.mo | Bin 302173 -> 303890 bytes resources/localization/de/PrusaSlicer_de.po | 394 ++++++++++--------- resources/localization/es/PrusaSlicer.mo | Bin 301221 -> 302832 bytes resources/localization/es/PrusaSlicer_es.po | 392 +++++++++---------- resources/localization/fr/PrusaSlicer.mo | Bin 310303 -> 312003 bytes resources/localization/fr/PrusaSlicer_fr.po | 392 +++++++++---------- resources/localization/it/PrusaSlicer.mo | Bin 296688 -> 298251 bytes resources/localization/it/PrusaSlicer_it.po | 396 ++++++++++---------- resources/localization/pl/PrusaSlicer.mo | Bin 293545 -> 295480 bytes resources/localization/pl/PrusaSlicer_pl.po | 396 ++++++++++---------- 12 files changed, 940 insertions(+), 1259 deletions(-) diff --git a/resources/localization/cs/PrusaSlicer.mo b/resources/localization/cs/PrusaSlicer.mo index 7b4a6c318ed606bd4f4b900c685e9e5cc6056b3a..32f1fd7260ab3d42b5c0dcecfe240915bef73ae0 100644 GIT binary patch delta 54157 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 z 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 delta 57698 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 z�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 diff --git a/resources/localization/cs/PrusaSlicer_cs.po b/resources/localization/cs/PrusaSlicer_cs.po index 57417f3ca7..7ea8176059 100644 --- a/resources/localization/cs/PrusaSlicer_cs.po +++ b/resources/localization/cs/PrusaSlicer_cs.po @@ -19,11 +19,6 @@ msgstr "\"%1%\" je deaktivováno, protože \"%2%\" je zapnuto v kategorii \"%3%\ msgid "%" msgstr "%" -#: src/slic3r/GUI/GLCanvas3D.cpp:969 -#, possible-c-format -msgid "%.2f - %.2f mm" -msgstr "%.2f - %.2f mm" - #. TRN Remove/Delete #: src/slic3r/GUI/Tab.cpp:3425 msgid "%1% Preset" @@ -296,10 +291,6 @@ msgstr "&(Znovu) Slicovat" msgid "(Unknown)" msgstr "(Neznámý)" -#: src/slic3r/GUI/Plater.cpp:1195 -msgid "(weight with spool)" -msgstr "(včetně cívky)" - #: src/slic3r/GUI/MainFrame.cpp:1491 msgid ") not found." msgstr ") nebyl nalezen." @@ -386,11 +377,6 @@ msgstr "O %s" msgid "above" msgstr "nad" -#: src/slic3r/GUI/GLCanvas3D.cpp:965 -#, possible-c-format -msgid "above %.2f mm" -msgstr "nad %.2f mm" - #: src/libslic3r/PrintConfig.cpp:1677 msgid "Above Z" msgstr "Nad Z" @@ -1446,10 +1432,6 @@ msgstr "Kruh" msgid "Circular" msgstr "Kruhový" -#: src/slic3r/GUI/GLCanvas3D.cpp:3961 -msgid "Clearance size" -msgstr "Velikost mezery" - #: src/slic3r/GUI/GLCanvas3D.cpp:5028 src/slic3r/GUI/GLCanvas3D.cpp:5067 msgid "Click right mouse button to open/close History" msgstr "Stisk pravého tlačítka myši pro zobrazení/skrytí Historie" @@ -1524,11 +1506,6 @@ msgstr "Změna barvy (\"%1%\")" msgid "Color change (\"%1%\") for Extruder %2%" msgstr "Změna barvy (\"%1%\") pro Extruder %2%" -#: src/slic3r/GUI/GLCanvas3D.cpp:1001 -#, possible-c-format -msgid "Color change for Extruder %d at %.2f mm" -msgstr "Změna barvy pro extruder %d ve výšce %.2f mm" - #: src/slic3r/GUI/Tab.cpp:2203 msgid "Color Change G-code" msgstr "G-code pro změnu barvy" @@ -1754,10 +1731,6 @@ msgstr "Kopírování souboru %1% do %2% se nezdařilo.\nChybová zpráva: %3%\n msgid "Copying of file %1% to %2% failed. Permissions fail at target file after copying.\nError message : %3%\nCopying was triggered by function: %4%" msgstr "Kopírování souboru %1% do %2% se nezdařilo. Pro kopírování z/do cílového souboru nemáte dostatečná oprávnění.\nChybová zpráva: %3%\nTato chyba nastala ve funkci: %4%" -#: src/slic3r/Utils/PresetUpdater.cpp:70 -msgid "Copying of file %1% to %2% failed. Permissions fail at target file before copying.\nError message : %3%\n This error happend during %4% phase." -msgstr "Kopírování souboru %1% do %2% se nezdařilo. Pro kopírování z/do cílového souboru nemáte dostatečná oprávnění.\nChybová zpráva: %3%\nTato chyba nastala ve funkci: %4%" - #: src/slic3r/Utils/PresetUpdater.cpp:70 msgid "Copying of file %1% to %2% failed. Permissions fail at target file before copying.\nError message : %3%\nThis error happend during %4% phase." msgstr "Kopírování souboru %1% do %2% se nezdařilo. Pro kopírování z/do cílového souboru nemáte dostatečná oprávnění.\nChybová zpráva: %3%\nTato chyba nastala ve funkci: %4%" @@ -2016,10 +1989,6 @@ msgstr "Výchozí profil filamentu" msgid "Default filament profile associated with the current printer profile. On selection of the current printer profile, this filament profile will be activated." msgstr "Výchozí materiálový profil spojený se současným profilem tiskárny. Při výběru současného profilu tiskárny se aktivuje tento materiálový profil." -#: src/slic3r/GUI/GLCanvas3D.cpp:910 src/slic3r/GUI/GLCanvas3D.cpp:939 -msgid "Default print color" -msgstr "Výchozí barva tisku" - #: src/slic3r/GUI/Tab.cpp:1302 msgid "default print profile" msgstr "výchozí tiskový profil" @@ -2470,10 +2439,6 @@ msgstr "Duplikovat mřížkou" msgid "Duration" msgstr "Doba trvání" -#: src/slic3r/GUI/PresetHints.cpp:39 -msgid "During the other layers, fan" -msgstr "V průběhu ostatních vrstev, ventilátor" - #: src/slic3r/GUI/PresetHints.cpp:51 msgid "During the other layers, fan will always run at %1%%%" msgstr "Během ostatních vrstev bude ventilátor vždy běžet na %1%%%" @@ -3116,10 +3081,6 @@ msgstr "Extruder změněn na" msgid "Extruder clearance" msgstr "Kolizní oblast extruderu" -#: src/slic3r/GUI/Tab.cpp:1563 -msgid "Extruder clearance (mm)" -msgstr "Kolizní oblast extruderu (mm)" - #: src/libslic3r/PrintConfig.cpp:558 msgid "Extruder Color" msgstr "Barva extruderu" @@ -3204,10 +3165,6 @@ msgstr "Zpracování šablony output_filename_format selhalo." msgid "Failed to activate configuration snapshot." msgstr "Aktivace konfiguračního snapshotu se nezdařila." -#: src/slic3r/GUI/PresetHints.cpp:41 -msgid "Fan" -msgstr "Ventilátor" - #: src/slic3r/GUI/Tab.cpp:1802 msgid "Fan settings" msgstr "Nastavení ventilátoru" @@ -3973,30 +3930,6 @@ msgstr "Horizontální posuvník - Pohyb aktivním ukazatelem vlevo" msgid "Horizontal slider - Move active thumb Right" msgstr "Horizontální posuvník - Pohyb aktivním ukazatelem vpravo" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:238 -msgid "Horizontal slider - Move current thumb Left" -msgstr "Horizontální posuvník - Pohyb posuvníkem vlevo" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:239 -msgid "Horizontal slider - Move current thumb Right" -msgstr "Horizontální posuvník - Pohyb posuvníkem vpravo" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:236 -msgid "Horizontal slider - Set left thumb as active" -msgstr "Horizontální posuvník - Nastavit levý ukazatel jako aktivní" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:236 -msgid "Horizontal slider - Set left thumb to current thumb" -msgstr "Horizontální posuvník -Pohyb levým posuvníkem k aktivnímu posuvníku" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:237 -msgid "Horizontal slider - Set right thumb as active" -msgstr "Horizontální posuvník - Nastavit pravý ukazatel jako aktivní" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:237 -msgid "Horizontal slider - Set right thumb to current thumb" -msgstr "Horizontální posuvník - Pohyb pravým posuvníkem k aktivnímu posuvníku" - #: src/libslic3r/PrintConfig.cpp:279 msgid "Horizontal width of the brim that will be printed around each object on the first layer." msgstr "Šírka límce který bude vytištěn v první vrstvě okolo každého objektu." @@ -4136,10 +4069,6 @@ msgstr "Pokud je povoleno, bude v pravém horním rohu 3D scény zobrazeno tlač msgid "If enabled, the command line arguments are sent to an existing instance of GUI PrusaSlicer, or an existing PrusaSlicer window is activated. Overrides the \"single_instance\" configuration value from application preferences." msgstr "Pokud je povoleno, argumenty příkazového řádku se odešlou do existující instance grafického uživatelského rozhraní PrusaSlicer,u nebo se aktivuje existující okno PrusaSlicer. Přepíše hodnotu konfigurace „single_instance“ z nastavení aplikace." -#: src/slic3r/GUI/Preferences.cpp:278 -msgid "If enabled, the descriptions of configuration parameters in settings tabs woldn't work as hyperlinks. If disabled, the descriptions of configuration parameters in settings tabs will work as hyperlinks." -msgstr "Pokud je aškrtnuto, popisky konfiguračních parametrů na kartách nastavení nebudou fungovat jako hypertextové odkazy. Pokud není zaškrtnuto, popisy konfiguračních parametrů budou fungovat jako hypertextové odkazy." - #: src/slic3r/GUI/Preferences.cpp:294 msgid "If enabled, the descriptions of configuration parameters in settings tabs wouldn't work as hyperlinks. If disabled, the descriptions of configuration parameters in settings tabs will work as hyperlinks." msgstr "Pokud je aškrtnuto, popisky konfiguračních parametrů na kartách nastavení nebudou fungovat jako hypertextové odkazy. Pokud není zaškrtnuto, popisy konfiguračních parametrů budou fungovat jako hypertextové odkazy." @@ -4420,10 +4349,6 @@ msgstr "Info" msgid "Information" msgstr "Informace" -#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:547 -msgid "Infornation" -msgstr "Informace" - #: src/libslic3r/PrintConfig.cpp:1101 msgid "Inherits profile" msgstr "Zdědí profil" @@ -4445,11 +4370,6 @@ msgstr "Výška první vrstvy" msgid "Input value is out of range\nAre you sure that %s is a correct value and that you want to continue?" msgstr "Vstupní hodnota je mimo povolený rozsah\nJste si jisti, že %s je správná hodnota a že chcete pokračovat?" -#: src/slic3r/GUI/Field.cpp:268 -#, possible-c-format -msgid "Input value is out of range\nAre you sure that %s is a correct value and you want to continue?" -msgstr "Vstupní hodnota je mimo povolený rozsah\nJste si jisti, že %s je správná hodnota a chcete pokračovat?" - #: src/slic3r/GUI/Field.cpp:252 src/slic3r/GUI/Field.cpp:1370 msgid "Input value is out of range" msgstr "Zadaná hodnota je mimo rozsah" @@ -4624,21 +4544,6 @@ msgstr "Přechod do výšky %s\nnebo Nastavení režimu pravítka" msgid "Jump to height %s\nSet ruler mode\nor Set extruder sequence for the entire print" msgstr "Přechod do výšky %s\nNastavení režimu pravítka\nnebo Nastavení sekvence extruderů pro celý tisk" -#: src/slic3r/GUI/DoubleSlider.cpp:1075 -#, possible-c-format -msgid "Jump to height %s or Set extruder sequence for the entire print" -msgstr "Přechod do výšky %s nebo Nastavení sekvence extruderů pro celý tisk" - -#: src/slic3r/GUI/DoubleSlider.cpp:1222 -#, possible-c-format -msgid "Jump to height %s or Set ruler mode" -msgstr "Přechod do výšky %s nebo Nastavení režimu pravítka" - -#: src/slic3r/GUI/DoubleSlider.cpp:1220 -#, possible-c-format -msgid "Jump to height %s Set ruler mode\n or Set extruder sequence for the entire print" -msgstr "Přechod do výšky %s Nastavení režimu pravítka nebo Nastavení sekvence extruderů pro celý tisk" - #: src/slic3r/GUI/DoubleSlider.cpp:1071 src/slic3r/GUI/DoubleSlider.cpp:1852 msgid "Jump to move" msgstr "Přechod na pohyb v rámci vrstvy" @@ -4749,10 +4654,6 @@ msgstr "Vrstvy a perimetry" msgid "Layers and Perimeters" msgstr "Vrstvy a perimetry" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:225 -msgid "Layers Slider" -msgstr "Posuvníky" - #: src/slic3r/GUI/OptionsGroup.cpp:293 msgctxt "Layers" msgid "Bottom" @@ -4798,10 +4699,6 @@ msgstr "Levé tlačítko myši:" msgid "Left View" msgstr "Pohled zleva" -#: src/slic3r/GUI/GUI_Preview.cpp:339 -msgid "Legend" -msgstr "Legenda" - #: src/slic3r/GUI/GUI_Preview.cpp:1480 msgid "Legend/Estimated printing time" msgstr "Legenda / Odhadovaný čas tisku" @@ -5625,14 +5522,6 @@ msgstr "Posunout řezovou rovinu" msgid "Move current slider thumb Down" msgstr "Posunout aktivní posuvník dolů" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:229 -msgid "Move current slider thumb Left" -msgstr "Posunout aktivní posuvník vlevo" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:230 -msgid "Move current slider thumb Right" -msgstr "Posunout aktivní posuvník vpravo" - #: src/slic3r/GUI/KBShortcutsDialog.cpp:215 msgid "Move current slider thumb Up" msgstr "Posunout aktivní posuvník nahoru" @@ -5641,16 +5530,6 @@ msgstr "Posunout aktivní posuvník nahoru" msgid "Move drainage hole" msgstr "Posun odtokového otvoru" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:209 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:213 -msgid "Move horizontal slider current thumb Left" -msgstr "Posunout aktivní horizontální posuvník vlevo" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:210 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:214 -msgid "Move horizontal slider current thumb Right" -msgstr "Posunout aktivní horizontální posuvník vpravo" - #: src/slic3r/GUI/GLCanvas3D.cpp:3810 msgid "Move Object" msgstr "Posunutí Objektu" @@ -5679,16 +5558,6 @@ msgstr "Posun výběru o 10 mm v kladném směru osy Y" msgid "Move support point" msgstr "Posun podpěrného bodu" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:208 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:212 -msgid "Move vertical slider current thumb Down" -msgstr "Posunout vertikální posuvník dolů" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:211 -msgid "Move vertical slider current thumb Up" -msgstr "Posunout vertikální posuvník nahoru" - #: src/slic3r/GUI/GCodeViewer.cpp:2492 msgid "Movement" msgstr "Přejezd" @@ -6438,11 +6307,6 @@ msgstr "Pozastavení tisku (\"%1%\")" msgid "Pause Print G-code" msgstr "G-code pro pozastavení tisku" -#: src/slic3r/GUI/GLCanvas3D.cpp:940 src/slic3r/GUI/GLCanvas3D.cpp:949 -#: src/slic3r/GUI/GLCanvas3D.cpp:988 -msgid "Pause print or custom G-code" -msgstr "Pozastavit tisk nebo vložit vlastní G-code" - #: src/libslic3r/PrintConfig.cpp:1147 msgid "Percent of a flow rate relative to object's normal layer height." msgstr "Procento průtoku vzhledem k normální výšce vrstvy objektu." @@ -6491,10 +6355,6 @@ msgstr "Fyzické tiskárny" msgid "Pick another vendor supported by %s" msgstr "Vyberte si jiného výrobce, který je podporováný programem %s" -#: src/libslic3r/PrintConfig.cpp:66 -msgid "Picture sizes to be stored into a .gcode and .sl1 files" -msgstr "Velikosti obrázků, které mají být uloženy do souborů .gcode a .sl1" - #: src/libslic3r/PrintConfig.cpp:67 msgid "Picture sizes to be stored into a .gcode and .sl1 files, in the following format: \"XxY, XxY, ...\"" msgstr "Velikosti obrázků, které mají být uloženy do souborů .gcode a .sl1, v následujícím formátu: „XxY, XxY, ...“" @@ -6619,18 +6479,10 @@ msgstr "Přednastavení \"%1%\" není kompatibilní s novým tiskovým profilem msgid "Preset \"%1%\" is not compatible with the new printer profile and it has the following unsaved changes:" msgstr "Přednastavení \"%1%\" není kompatibilní s novým profilem tiskárny a má následující neuložené změny:" -#: src/slic3r/GUI/SavePresetDialog.cpp:136 -msgid "Preset with name \"%1%\" already exists and is imcopatible with selected printer." -msgstr "Přednastavení s názvem \"%1%\" již existuje a není kompatibilní s vybranou tiskárnou." - #: src/slic3r/GUI/SavePresetDialog.cpp:136 msgid "Preset with name \"%1%\" already exists and is incompatible with selected printer." msgstr "Přednastavení s názvem \"%1%\" již existuje a není kompatibilní s vybranou tiskárnou." -#: src/slic3r/GUI/SavePresetDialog.cpp:136 -msgid "Preset with name \"%1%\" already exists and is incopatible with selected printer." -msgstr "Přednastavení s názvem \"%1%\" již existuje a není kompatibilní s vybranou tiskárnou." - #: src/slic3r/GUI/SavePresetDialog.cpp:148 msgid "Preset with name \"%1%\" already exists." msgstr "Přednastavení s názvem \"%1%\" již existuje." @@ -7885,10 +7737,6 @@ msgstr "Sekv." msgid "Sequential printing" msgstr "Sekvenční tisk" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:235 -msgid "Sequential Slider" -msgstr "Sekvenční posuvník" - #: src/slic3r/GUI/Preferences.cpp:230 msgid "Sequential slider applied only to top layer" msgstr "Použití sekvenčního posuvníku pouze na horní vrstvu" @@ -8389,10 +8237,6 @@ msgstr "Slic3r může nahrát soubory G-code do tiskového serveru. Toto pole mu msgid "Slic3r can upload G-code files to a printer host. This field should contain the API Key or the password required for authentication." msgstr "Slic3r může nahrát soubory do tiskového serveru. Toto pole by mělo obsahovat klíč API požadovaný pro ověření." -#: src/libslic3r/PrintConfig.cpp:100 -msgid "Slic3r can upload G-code files to a printer host. This field should contain the hostname, IP address or URL of the printer host instance." -msgstr "Slic3r může nahrát soubory G-code do tiskového serveru. Toto pole by mělo obsahovat název serveru (hostname), IP adresu nebo URL tiskového serveru." - #: src/libslic3r/PrintConfig.cpp:100 msgid "Slic3r can upload G-code files to a printer host. This field should contain the hostname, IP address or URL of the printer host instance. Print host behind HAProxy with basic auth enabled can be accessed by putting the user name and password into the URL in the following format: https://username:password@your-octopi-address/" msgstr "Slic3r může nahrávat G-cody do tiskového serveru. Toto pole by mělo obsahovat název hostitele, IP adresu nebo URL tiskového serveru. K tiskovému serveru za HAProxy se zapnutým ověřením basic auth lze přistupovat zadáním uživatelského jména a hesla do adresy URL v následujícím formátu: https://username: password@your-octopi-address/" @@ -8935,10 +8779,6 @@ msgstr "Podporuje tichý režim" msgid "Supports work better, if the following feature is enabled:\n- Detect bridging perimeters" msgstr "Podpěry fungují lépe, pokud je povolena funkce:\n- Detekovat perimetry přemostění" -#: src/slic3r/GUI/DoubleSlider.cpp:1824 -msgid "Supprese show the ruler" -msgstr "Potlačit zobrazení pravítka" - #: src/slic3r/GUI/Preferences.cpp:104 msgid "Suppress \" - default - \" presets" msgstr "Potlačit “ - výchozí - “ přednastavení" @@ -9322,10 +9162,6 @@ msgstr "Rychlost retrakce (toto nastavení platí pouze pro motor extruderu)." msgid "The Spiral Vase mode requires:\n- one perimeter\n- no top solid layers\n- 0% fill density\n- no support material\n- Ensure vertical shell thickness enabled\n- Detect thin walls disabled" msgstr "Režim Spiral Vase vyžaduje:\n- jeden perimetr\n- žádné horní plné vrstvy\n- 0% hustota výplně\n- bez podpěrného materiálu\n- aktivní volbu „Zajistit tloušťku svislých stěn“\n- neaktivní volbu „Detekce tenkých stěn“" -#: src/libslic3r/Print.cpp:1263 -msgid "The Spiral Vase option can only be used when printing a single object." -msgstr "Možnost \"Spirálová váza\" lze použít pouze při tisku jednoho objektu." - #: src/libslic3r/Print.cpp:1270 msgid "The Spiral Vase option can only be used when printing single material objects." msgstr "Možnost \"Spirálová váza\" lze použít pouze při tisku jedním materiálem." @@ -9510,10 +9346,6 @@ msgstr "Tato funkce umožňuje kombinovat výplň a urychlit tisk pomocí extruz msgid "This feature allows to force a solid layer every given number of layers. Zero to disable. You can set this to any value (for example 9999); Slic3r will automatically choose the maximum possible number of layers to combine according to nozzle diameter and layer height." msgstr "Tato funkce umožňuje vynucení plné vrstvy za každý daný počet vrstev. Pro vypnutí nastavte nulu. Můžete nastavit libovolnou hodnotu (například 9999); Slic3r automaticky zvolí maximální počet vrstev, které se budou kombinovat podle průměru trysky a výšky vrstvy." -#: src/libslic3r/PrintConfig.cpp:1910 -msgid "This feature will raise Z gradually while printing a single-walled object in order to remove any visible seam. This option requires a single perimeter, no infill, no top solid layers and no support material. You can still set any number of bottom solid layers as well as skirt/brim loops. It won't work when printing more than an object." -msgstr "Tato funkce zvýší postupně Z při tisku jednovrstvého objektu, aby se odstranil jakýkoli viditelný šev. Tato volba vyžaduje jediný obvod, žádnou výplň, žádné vrchní plné vrstvy a žádný podpůrný materiál. Můžete stále nastavit libovolný počet spodních plných vrstev, stejně jako obrysové smyčky / límec. Při tisku více než jednoho objektu nebude toto nastavení fungovat." - #: src/libslic3r/PrintConfig.cpp:1995 msgid "This feature will raise Z gradually while printing a single-walled object in order to remove any visible seam. This option requires a single perimeter, no infill, no top solid layers and no support material. You can still set any number of bottom solid layers as well as skirt/brim loops. It won't work when printing more than one single object." msgstr "Tato funkce zvýší postupně Z při tisku jednovrstvého objektu, aby se odstranil jakýkoli viditelný šev. Tato volba vyžaduje jediný obvod, žádnou výplň, žádné vrchní plné vrstvy a žádný podpůrný materiál. Můžete stále nastavit libovolný počet spodních plných vrstev, stejně jako obrysové smyčky / límec. Při tisku více než jednoho samostatného objektu nebude toto nastavení fungovat." @@ -9595,10 +9427,6 @@ msgstr "Toto je zrychlení, které vaše tiskárna použije pro první vrstvu. N msgid "This is the acceleration your printer will use for infill. Set zero to disable acceleration control for infill." msgstr "Toto je zrychlení, které vaše tiskárna použije pro výplň. Nastavte nulu, chcete-li vypnout řízení zrychlení pro výplň." -#: src/libslic3r/PrintConfig.cpp:1508 -msgid "This is the acceleration your printer will use for perimeters. A high value like 9000 usually gives good results if your hardware is up to the job. Set zero to disable acceleration control for perimeters." -msgstr "Jedná se o akceleraci, kterou vaše tiskárna použije pro perimetry. Vysoká hodnota, jako je 9000, obvykle dává dobré výsledky, pokud je váš hardware v pořádku. Nastavte nulu pro vypnutí řízení zrychlení pro perimetry." - #: src/libslic3r/PrintConfig.cpp:1582 msgid "This is the acceleration your printer will use for perimeters. Set zero to disable acceleration control for perimeters." msgstr "Toto je zrychlení, které vaše tiskárna použije pro perimetry. Nastavením na nulu vypnete ovládání akcelerace pro perimetry." @@ -9775,10 +9603,6 @@ msgstr "Chcete-li použít vlastní soubor CA, importujte soubor CA do Certifica msgid "Toggle %c axis mirroring" msgstr "Přepnout zrcadlení podle osy %c" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:215 -msgid "Toggle vertical slider one layer mode ON/OFF" -msgstr "Zapnou/vypnout režim jedné vrstvy vertikálního posuvníku" - #: src/libslic3r/miniz_extension.cpp:93 msgid "too many files" msgstr "příliš mnoho souborů" @@ -10037,11 +9861,6 @@ msgstr "Nepodporovaný výběr" msgid "up to" msgstr "až do" -#: src/slic3r/GUI/GLCanvas3D.cpp:961 -#, possible-c-format -msgid "up to %.2f mm" -msgstr "do % .2f mm" - #: src/slic3r/GUI/UpdateDialogs.cpp:38 msgid "Update available" msgstr "Je dostupná aktualizace" @@ -10087,18 +9906,10 @@ msgstr "Vyšší vrstva" msgid "Upper layer" msgstr "Horní vrstva" -#: src/slic3r/GUI/GLCanvas3D.cpp:3990 -msgid "Use %1%left mouse key to enter text edit mode:" -msgstr "Stiskněte %1%levé tlačítko myši pro vstup do režimu textové editace:\n" - #: src/slic3r/GUI/DoubleSlider.cpp:1276 msgid "Use another extruder" msgstr "Použít jiný extruder" -#: src/slic3r/GUI/GLCanvas3D.cpp:3959 -msgid "Use CTRL+left mouse key to enter text edit mode:" -msgstr "Pomocí CTRL + levé tlačítko myši přejděte do režimu úprav textu:" - #: src/slic3r/GUI/Preferences.cpp:220 msgid "Use custom size for toolbar icons" msgstr "Použít vlastní velikost ikon na panelu nástrojů" @@ -10274,14 +10085,6 @@ msgstr "Svislé stěny" msgid "Vertical Slider" msgstr "Vertikální posuvník" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:234 -msgid "Vertical slider - Add color change marker for current layer" -msgstr "Vertikální posuvník - Přidat značku změny barvy pro aktuální vrstvu" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:235 -msgid "Vertical slider - Delete color change marker for current layer" -msgstr "Vertikální posuvník - Odebrat značku změny barvy pro aktuální vrstvu" - #: src/slic3r/GUI/KBShortcutsDialog.cpp:208 #: src/slic3r/GUI/KBShortcutsDialog.cpp:212 #: src/slic3r/GUI/KBShortcutsDialog.cpp:231 @@ -10294,30 +10097,6 @@ msgstr "Vertikální posuvník - Pohyb aktivním ukazatelem dolů" msgid "Vertical slider - Move active thumb Up" msgstr "Vertikální posuvník - Pohyb aktivním ukazatelem nahoru" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:231 -msgid "Vertical slider - Move current thumb Down" -msgstr "Vertikální posuvník - Pohyb posuvníkem dolů" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:230 -msgid "Vertical slider - Move current thumb Up" -msgstr "Vertikální posuvník - Pohyb posuvníkem nahoru" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:233 -msgid "Vertical slider - Set lower thumb as active" -msgstr "Vertikální posuvník -Nastavit spodní ukazatel jako aktivní" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:233 -msgid "Vertical slider - Set lower thumb to current thumb" -msgstr "Vertikální posuvník - Pohyb spodním posuvníkem k aktivnímu posuvníku" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:232 -msgid "Vertical slider - Set upper thumb as active" -msgstr "Vertikální posuvník - Nastavit horní ukazatel jako aktivní" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:232 -msgid "Vertical slider - Set upper thumb to current thumb" -msgstr "Vertikální posuvník - Pohyb horním posuvníkem k aktivnímu posuvníku" - #: src/slic3r/GUI/GUI_Preview.cpp:265 src/slic3r/GUI/GUI_Preview.cpp:271 msgid "View" msgstr "Zobrazení" @@ -10498,14 +10277,6 @@ msgstr "Šířka spojek, které spojují objekt s vygenerovanou podložkou." msgid "Width of the display" msgstr "Šířka displeje" -#: src/slic3r/GUI/PresetHints.cpp:47 -msgid "will always run at %1%%%" -msgstr "bude vždy běžet na %1%%%" - -#: src/slic3r/GUI/PresetHints.cpp:54 -msgid "will be turned off." -msgstr "bude vypnut." - #: src/libslic3r/PrintConfig.cpp:2584 msgid "Will inflate or deflate the sliced 2D polygons according to the sign of the correction." msgstr "Vytvoří offset každé vrstvy v rovině XY. Kladná hodnota - offset směrem ven, plocha polygonu se zvětší. Záporná hodnota - offset směrem dovnitř, plocha polygonu se zmenší." diff --git a/resources/localization/de/PrusaSlicer.mo b/resources/localization/de/PrusaSlicer.mo index cefc7e46767757984210f1ca480a8a981fcfd4fa..d2256b27d622974b07e31ddb603cdcdfd748a04d 100644 GIT binary patch delta 60562 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 delta 57246 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 diff --git a/resources/localization/de/PrusaSlicer_de.po b/resources/localization/de/PrusaSlicer_de.po index acbd398147..4c9a631e61 100644 --- a/resources/localization/de/PrusaSlicer_de.po +++ b/resources/localization/de/PrusaSlicer_de.po @@ -19,11 +19,6 @@ msgstr "\"%1%\" ist deaktiviert, weil \"%2%\" in der Kategorie \"%3%\" eingescha msgid "%" msgstr "%" -#: src/slic3r/GUI/GLCanvas3D.cpp:969 -#, possible-c-format -msgid "%.2f - %.2f mm" -msgstr "%.2f - %.2f mm" - #. TRN Remove/Delete #: src/slic3r/GUI/Tab.cpp:3425 msgid "%1% Preset" @@ -296,10 +291,6 @@ msgstr "(Re)Slice jet&zt" msgid "(Unknown)" msgstr "(Unbekannt)" -#: src/slic3r/GUI/Plater.cpp:1195 -msgid "(weight with spool)" -msgstr "(Gewicht mit Spule)" - #: src/slic3r/GUI/MainFrame.cpp:1491 msgid ") not found." msgstr ") nicht gefunden." @@ -386,11 +377,6 @@ msgstr "Über %s" msgid "above" msgstr "über" -#: src/slic3r/GUI/GLCanvas3D.cpp:965 -#, possible-c-format -msgid "above %.2f mm" -msgstr "oberhalb %.2f mm" - #: src/libslic3r/PrintConfig.cpp:1677 msgid "Above Z" msgstr "Über Z" @@ -744,6 +730,10 @@ msgstr "Alle Oberseiten" msgid "allocation failed" msgstr "Allokation fehlgeschlagen" +#: src/slic3r/GUI/Preferences.cpp:161 src/slic3r/GUI/Preferences.cpp:165 +msgid "Allow just a single PrusaSlicer instance" +msgstr "Nur eine einzige PrusaSlicer-Instanz zulassen" + #: src/slic3r/GUI/Plater.cpp:3915 msgid "Along X axis" msgstr "Entlang der X Achse" @@ -1011,6 +1001,10 @@ msgstr "Automatische Geschwindigkeit (fortgeschritten)" msgid "Avoid crossing perimeters" msgstr "Kreuzen der Kontur vermeiden" +#: src/libslic3r/PrintConfig.cpp:188 +msgid "Avoid crossing perimeters - Max detour length" +msgstr "Kreuzen von Perimetern Vermeiden - Maximale Umleitungslänge" + #: src/slic3r/GUI/Tab.cpp:3705 msgid "BACK ARROW" msgstr "PFEIL ZURÜCK" @@ -1388,6 +1382,11 @@ msgstr "Suche nach Konfigurationsaktualisierungen" msgid "Check for updates" msgstr "Nach &Updates suchen" +#: src/slic3r/Utils/PresetUpdater.cpp:412 +#: src/slic3r/Utils/PresetUpdater.cpp:420 +msgid "checking install indices" +msgstr "Überprüfung der Installationsindizes" + #: src/slic3r/GUI/BedShapeDialog.cpp:608 msgid "Choose a file to import bed texture from (PNG/SVG):" msgstr "Wählen Sie eine Datei aus, aus der Sie die Druckbetttextur importieren möchten (PNG/SVG):" @@ -1433,10 +1432,6 @@ msgstr "Kreis" msgid "Circular" msgstr "Kreisförmig" -#: src/slic3r/GUI/GLCanvas3D.cpp:3961 -msgid "Clearance size" -msgstr "Freiraum" - #: src/slic3r/GUI/GLCanvas3D.cpp:5028 src/slic3r/GUI/GLCanvas3D.cpp:5067 msgid "Click right mouse button to open/close History" msgstr "Klicken Sie mit der rechten Maustaste, um die Historie zu öffnen/schließen" @@ -1511,11 +1506,6 @@ msgstr "Farbwechsel (\"%1%\")" msgid "Color change (\"%1%\") for Extruder %2%" msgstr "Farbwechsel (\"%1%\") für Extruder %2%" -#: src/slic3r/GUI/GLCanvas3D.cpp:1001 -#, possible-c-format -msgid "Color change for Extruder %d at %.2f mm" -msgstr "Farbwechsel für Extruder %d bei %.2f mm" - #: src/slic3r/GUI/Tab.cpp:2203 msgid "Color Change G-code" msgstr "G-Code für Farbwechsel" @@ -1729,6 +1719,22 @@ msgstr "Zu Zwischenablage kopieren" msgid "Copy to Clipboard" msgstr "Zu Zwischenablage kopieren" +#: src/slic3r/GUI/AboutDialog.cpp:304 +msgid "Copy Version Info" +msgstr "Versionsinfo kopieren" + +#: src/slic3r/Utils/PresetUpdater.cpp:84 +msgid "Copying of file %1% to %2% failed.\nError message : %3%\nCopying was triggered by function: %4%" +msgstr "Das Kopieren der Datei %1% nach %2% ist fehlgeschlagen.\nFehlermeldung : %3%\nKopieren wurde ausgelöst durch Funktion: %4%" + +#: src/slic3r/Utils/PresetUpdater.cpp:91 +msgid "Copying of file %1% to %2% failed. Permissions fail at target file after copying.\nError message : %3%\nCopying was triggered by function: %4%" +msgstr "Kopieren der Datei %1% nach %2% fehlgeschlagen. Berechtigungsfehler der Zieldatei nach dem Kopieren.\nFehlermeldung : %3%\n Dieser Fehler wurde ausgelöst durch Funktion: %4%" + +#: src/slic3r/Utils/PresetUpdater.cpp:70 +msgid "Copying of file %1% to %2% failed. Permissions fail at target file before copying.\nError message : %3%\nThis error happend during %4% phase." +msgstr "Kopieren der Datei %1% nach %2% fehlgeschlagen. Berechtigungsfehler der Zieldatei vor dem Kopieren.\nFehlermeldung : %3%\nDieser Fehler trat während der Phase %4% auf." + #: src/slic3r/GUI/BackgroundSlicingProcess.cpp:156 msgid "Copying of the temporary G-code has finished but the exported code couldn't be opened during copy check. The output G-code is at %1%.tmp." msgstr "Das Kopieren des temporären G-Codes ist abgeschlossen, aber der exportierte Code konnte während der Kopierprüfung nicht geöffnet werden. Der Ausgabe-G-Code liegt in %1%.tmp." @@ -1826,6 +1832,10 @@ msgstr "Erstellt eine Grundschicht um das Objekt herum und ignoriert die Unterst msgid "Critical angle" msgstr "Kritischer Winkel" +#: src/slic3r/GUI/GUI_App.cpp:589 +msgid "Critical error" +msgstr "Kritischer Fehler" + #: src/libslic3r/PrintConfig.cpp:2832 msgid "Cross" msgstr "Kreuz" @@ -1979,10 +1989,6 @@ msgstr "Standard-Filamentprofil" msgid "Default filament profile associated with the current printer profile. On selection of the current printer profile, this filament profile will be activated." msgstr "Standard-Filamentprofil, das dem aktuellen Druckerprofil zugeordnet ist. Bei Auswahl des aktuellen Druckerprofils wird dieses Filamentprofil aktiviert." -#: src/slic3r/GUI/GLCanvas3D.cpp:910 src/slic3r/GUI/GLCanvas3D.cpp:939 -msgid "Default print color" -msgstr "Standard Druckfarbe" - #: src/slic3r/GUI/Tab.cpp:1302 msgid "default print profile" msgstr "Standard-Druckprofil" @@ -2433,9 +2439,13 @@ msgstr "Duplizieren nach Raster" msgid "Duration" msgstr "Dauer" -#: src/slic3r/GUI/PresetHints.cpp:39 -msgid "During the other layers, fan" -msgstr "Während der übrigen Schichten, Lüfter" +#: src/slic3r/GUI/PresetHints.cpp:51 +msgid "During the other layers, fan will always run at %1%%%" +msgstr "Bei den anderen Schichten läuft der Lüfter immer mit %1%%%" + +#: src/slic3r/GUI/PresetHints.cpp:58 +msgid "During the other layers, fan will be turned off." +msgstr "Bei den anderen Schichten wird der Lüfter ausgeschaltet." #: src/libslic3r/PrintConfig.cpp:2833 msgid "Dynamic" @@ -3071,10 +3081,6 @@ msgstr "Extruder geändert auf" msgid "Extruder clearance" msgstr "Extruder Freiraum" -#: src/slic3r/GUI/Tab.cpp:1563 -msgid "Extruder clearance (mm)" -msgstr "Extruder Freiraum (mm)" - #: src/libslic3r/PrintConfig.cpp:558 msgid "Extruder Color" msgstr "Extruder Farbe" @@ -3155,9 +3161,9 @@ msgstr "Das Laden des Inputmodells ist fehlgeschlagen." msgid "Failed processing of the output_filename_format template." msgstr "Die Verarbeitung der output_filename_format Vorlage ist fehlgeschlagen." -#: src/slic3r/GUI/PresetHints.cpp:41 -msgid "Fan" -msgstr "Kühllüfter" +#: src/slic3r/GUI/GUI_App.cpp:1648 +msgid "Failed to activate configuration snapshot." +msgstr "Konfigurations-Snapshot konnte nicht aktiviert werden." #: src/slic3r/GUI/Tab.cpp:1802 msgid "Fan settings" @@ -3171,6 +3177,22 @@ msgstr "Lüftergeschwindigkeit" msgid "Fan Speed (%)" msgstr "Lüftergeschwindigkeit (%)" +#: src/slic3r/GUI/PresetHints.cpp:49 +msgid "Fan speed will be ramped from zero at layer %1% to %2%%% at layer %3%." +msgstr "Die Lüfterdrehzahl wird rampenförmig von Null bei Schicht %1% auf %2%%% bei Schicht %3% erhöht." + +#: src/libslic3r/PrintConfig.cpp:1001 +msgid "Fan speed will be ramped up linearly from zero at layer \"disable_fan_first_layers\" to maximum at layer \"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower than \"disable_fan_first_layers\", in which case the fan will be running at maximum allowed speed at layer \"disable_fan_first_layers\" + 1." +msgstr "Die Lüfterdrehzahl wird linear von Null bei der Schicht \"disable_fan_first_layers\" bis zum Maximum bei der Schicht \"full_fan_speed_layer\" hochgefahren. \"full_fan_speed_layer\" wird ignoriert, wenn sie niedriger ist als \"disable_fan_first_layers\", in diesem Fall läuft der Lüfter mit der maximal zulässigen Drehzahl auf Schicht \"disable_fan_first_layers\" + 1." + +#: src/slic3r/GUI/PresetHints.cpp:51 +msgid "Fan will always run at %1%%%" +msgstr "Der Lüfter läuft immer mit %1%%%" + +#: src/slic3r/GUI/PresetHints.cpp:58 +msgid "Fan will be turned off." +msgstr "Der Lüfter wird ausgeschaltet." + #: src/libslic3r/PrintConfig.cpp:2548 msgid "Fast" msgstr "Schnell" @@ -3521,6 +3543,10 @@ msgstr "Front" msgid "Front View" msgstr "Frontalansicht" +#: src/libslic3r/PrintConfig.cpp:1000 +msgid "Full fan speed at layer" +msgstr "Volle Lüfterdrehzahl auf Schicht" + #: src/slic3r/GUI/Tab.cpp:1331 msgid "full profile name" msgstr "vollständiger Profilname" @@ -3549,6 +3575,10 @@ msgstr "G-Code Typ" msgid "G-code preview" msgstr "G-Code Vorschau" +#: src/libslic3r/PrintConfig.cpp:66 +msgid "G-code thumbnails" +msgstr "G-Code-Miniaturbilder" + #: src/libslic3r/PrintConfig.cpp:3552 msgid "G-code viewer" msgstr "G-Code-Viewer" @@ -3644,6 +3674,10 @@ msgstr "Erzeuge den Vertex-Puffer" msgid "Generic" msgstr "Generisch" +#: src/slic3r/Utils/PresetUpdater.cpp:600 +msgid "getting config updates" +msgstr "Abrufen von Konfigurations-Updates" + #: src/slic3r/GUI/KBShortcutsDialog.cpp:169 msgid "Gizmo cut" msgstr "Gizmo Schnitt" @@ -3880,6 +3914,10 @@ msgstr "Bienenwabe" msgid "Horizontal shells" msgstr "Horizontale Konturhüllen" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:253 +msgid "Horizontal Slider" +msgstr "Horizontaler Schieberegler" + #: src/slic3r/GUI/KBShortcutsDialog.cpp:209 #: src/slic3r/GUI/KBShortcutsDialog.cpp:213 #: src/slic3r/GUI/KBShortcutsDialog.cpp:238 @@ -3892,30 +3930,6 @@ msgstr "Horizontaler Schieberegler - Aktiven Schieber nach links bewegen" msgid "Horizontal slider - Move active thumb Right" msgstr "Horizontaler Schieberegler - Aktiven Schieber nach rechts bewegen" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:238 -msgid "Horizontal slider - Move current thumb Left" -msgstr "Horizontaler Schieberegler - Aktuellen Schieber nach links bewegen" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:239 -msgid "Horizontal slider - Move current thumb Right" -msgstr "Horizontaler Schieberegler - Aktuellen Schieber nach rechts bewegen" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:236 -msgid "Horizontal slider - Set left thumb as active" -msgstr "Horizontaler Schieberegler - Linken Schieber aktiv setzen" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:236 -msgid "Horizontal slider - Set left thumb to current thumb" -msgstr "Horizontaler Schieberegler - Linken Schieber auf aktuellen setzen" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:237 -msgid "Horizontal slider - Set right thumb as active" -msgstr "Horizontaler Schieberegler - Rechten Schieber aktiv setzen" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:237 -msgid "Horizontal slider - Set right thumb to current thumb" -msgstr "Horizontaler Schieberegler - Rechten Schieber auf aktuellen setzen" - #: src/libslic3r/PrintConfig.cpp:279 msgid "Horizontal width of the brim that will be printed around each object on the first layer." msgstr "Horizontalbreite des Randes, der um jedes Objekt auf der Bodenschicht gedruckt wird." @@ -4055,7 +4069,7 @@ msgstr "Wenn aktiviert, wird die Schaltfläche zum Zusammenklappen der Seitenlei msgid "If enabled, the command line arguments are sent to an existing instance of GUI PrusaSlicer, or an existing PrusaSlicer window is activated. Overrides the \"single_instance\" configuration value from application preferences." msgstr "Wenn aktiviert, werden die Befehlszeilenargumente an eine vorhandene Instanz der GUI PrusaSlicer gesendet, oder ein vorhandenes PrusaSlicer-Fenster wird aktiviert. Übersteuert den Konfigurationswert \"single_instance\" aus den Anwendungseinstellungen." -#: src/slic3r/GUI/Preferences.cpp:278 +#: src/slic3r/GUI/Preferences.cpp:294 msgid "If enabled, the descriptions of configuration parameters in settings tabs wouldn't work as hyperlinks. If disabled, the descriptions of configuration parameters in settings tabs will work as hyperlinks." msgstr "Wenn aktiviert, funktionieren die Beschreibungen von Konfigurationsparametern in Einstellungsregistern nicht als Hyperlinks. Wenn diese Option deaktiviert ist, funktionieren die Beschreibungen von Konfigurationsparametern in Einstellungsregistern als Hyperlinks." @@ -4335,10 +4349,6 @@ msgstr "Info" msgid "Information" msgstr "Informationen" -#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:547 -msgid "Infornation" -msgstr "Informationen" - #: src/libslic3r/PrintConfig.cpp:1101 msgid "Inherits profile" msgstr "Übernimmt Profil" @@ -4355,6 +4365,11 @@ msgstr "Anfang-Belichtungszeit" msgid "Initial layer height" msgstr "Anfangsschichthöhe" +#: src/slic3r/GUI/Field.cpp:269 +#, possible-c-format +msgid "Input value is out of range\nAre you sure that %s is a correct value and that you want to continue?" +msgstr "Eingabewert liegt außerhalb des Bereichs\nSind Sie sicher, dass %s ein korrekter Wert ist und Sie fortfahren möchten?" + #: src/slic3r/GUI/Field.cpp:252 src/slic3r/GUI/Field.cpp:1370 msgid "Input value is out of range" msgstr "Der Eingabewert ist nicht im gültigen Bereich" @@ -4363,6 +4378,10 @@ msgstr "Der Eingabewert ist nicht im gültigen Bereich" msgid "Inspect / activate configuration snapshots" msgstr "Inspiziere / aktiviere Konfigurations-Momentaufnahmen" +#: src/slic3r/Utils/PresetUpdater.cpp:120 +msgid "install" +msgstr "Installation" + #: src/slic3r/GUI/ObjectDataViewModel.cpp:62 #: src/slic3r/GUI/ObjectDataViewModel.cpp:218 #, possible-c-format @@ -4432,6 +4451,10 @@ msgstr "Ungültige Eindringtiefe des Stützkopfes" msgid "invalid header or archive is corrupted" msgstr "ungültiger Dateiheader oder Archiv ist beschädigt" +#: src/slic3r/GUI/Field.cpp:375 +msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\"" +msgstr "Ungültiges Eingabeformat. Erwarteter Vektor der Abmessungen im folgenden Format: \"%1%\"" + #: src/slic3r/GUI/Field.cpp:243 src/slic3r/GUI/Field.cpp:274 #: src/slic3r/GUI/Field.cpp:1358 src/slic3r/GUI/GUI_ObjectLayers.cpp:413 msgid "Invalid numeric input." @@ -4521,21 +4544,6 @@ msgstr "Auf Höhe %s springen\noder Linealmodus einstellen" msgid "Jump to height %s\nSet ruler mode\nor Set extruder sequence for the entire print" msgstr "Auf Höhe %s springen\nLineal-Modus einstellen\noder Extrudersequenz für den gesamten Druck einstellen" -#: src/slic3r/GUI/DoubleSlider.cpp:1075 -#, possible-c-format -msgid "Jump to height %s or Set extruder sequence for the entire print" -msgstr "Auf Höhe %s wechseln oder Extrudersequenz für den gesamten Druck einstellen" - -#: src/slic3r/GUI/DoubleSlider.cpp:1222 -#, possible-c-format -msgid "Jump to height %s or Set ruler mode" -msgstr "Auf Höhe %s springen oder Linealmodus einstellen" - -#: src/slic3r/GUI/DoubleSlider.cpp:1220 -#, possible-c-format -msgid "Jump to height %s Set ruler mode\n or Set extruder sequence for the entire print" -msgstr "Auf Höhe %s springen Lineal-Modus einstellen\n oder Extrudersequenz für den gesamten Druck einstellen" - #: src/slic3r/GUI/DoubleSlider.cpp:1071 src/slic3r/GUI/DoubleSlider.cpp:1852 msgid "Jump to move" msgstr "Zum Bewegen wechseln" @@ -4646,10 +4654,6 @@ msgstr "Schichten und Umfänge" msgid "Layers and Perimeters" msgstr "Schichten und Konturen" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:225 -msgid "Layers Slider" -msgstr "Schichtenschieber" - #: src/slic3r/GUI/OptionsGroup.cpp:293 msgctxt "Layers" msgid "Bottom" @@ -4695,10 +4699,6 @@ msgstr "Linke Maustaste:" msgid "Left View" msgstr "Anicht von Links" -#: src/slic3r/GUI/GUI_Preview.cpp:339 -msgid "Legend" -msgstr "Legende" - #: src/slic3r/GUI/GUI_Preview.cpp:1480 msgid "Legend/Estimated printing time" msgstr "Legende/geschätzte Druckzeit" @@ -5344,7 +5344,7 @@ msgstr "mm" #: src/libslic3r/PrintConfig.cpp:1655 src/libslic3r/PrintConfig.cpp:1664 msgid "mm (zero to disable)" -msgstr "mm (null eingeben zum Deaktivieren)" +msgstr "mm (Null zum Deaktivieren)" #: src/libslic3r/PrintConfig.cpp:487 src/libslic3r/PrintConfig.cpp:596 #: src/libslic3r/PrintConfig.cpp:924 src/libslic3r/PrintConfig.cpp:937 @@ -5355,6 +5355,10 @@ msgstr "mm (null eingeben zum Deaktivieren)" msgid "mm or %" msgstr "mm oder %" +#: src/libslic3r/PrintConfig.cpp:193 +msgid "mm or % (zero to disable)" +msgstr "mm oder % (Null zum Deaktivieren)" + #: src/libslic3r/PrintConfig.cpp:271 src/libslic3r/PrintConfig.cpp:645 #: src/libslic3r/PrintConfig.cpp:653 src/libslic3r/PrintConfig.cpp:662 #: src/libslic3r/PrintConfig.cpp:670 src/libslic3r/PrintConfig.cpp:697 @@ -5494,6 +5498,22 @@ msgstr "Bewege aktiven Schieberegler nach links" msgid "Move active slider thumb Right" msgstr "Bewege aktiven Schieberegler nach rechts" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:220 +msgid "Move active thumb Down" +msgstr "Aktiven Schieber nach unten bewegen" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:241 +msgid "Move active thumb Left" +msgstr "Aktiven Schieber nach links bewegen" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:242 +msgid "Move active thumb Right" +msgstr "Aktiven Schieber nach rechts bewegen" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:219 +msgid "Move active thumb Up" +msgstr "Aktiven Schieber nach oben bewegen" + #: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1219 msgid "Move clipping plane" msgstr "Beschnittebene bewegen" @@ -5502,14 +5522,6 @@ msgstr "Beschnittebene bewegen" msgid "Move current slider thumb Down" msgstr "Bewege aktuellen Schieberegler nach unten" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:229 -msgid "Move current slider thumb Left" -msgstr "Bewege aktuellen Schieberegler nach links" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:230 -msgid "Move current slider thumb Right" -msgstr "Bewege aktuellen Schieberegler nach rechts" - #: src/slic3r/GUI/KBShortcutsDialog.cpp:215 msgid "Move current slider thumb Up" msgstr "Bewege aktuellen Schieberegler nach oben" @@ -5518,16 +5530,6 @@ msgstr "Bewege aktuellen Schieberegler nach oben" msgid "Move drainage hole" msgstr "Drainageloch bewegen" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:209 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:213 -msgid "Move horizontal slider current thumb Left" -msgstr "Horizontalen Schieberegler aktuellen Schieber nach links bewegen" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:210 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:214 -msgid "Move horizontal slider current thumb Right" -msgstr "Horizontalen Schieberegler aktuellen Schieber nach rechts bewegen" - #: src/slic3r/GUI/GLCanvas3D.cpp:3810 msgid "Move Object" msgstr "Objekt bewegen" @@ -5556,16 +5558,6 @@ msgstr "Auswahl 10 mm in positiver Y-Richtung verschieben" msgid "Move support point" msgstr "Stützpunkt bewegen" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:208 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:212 -msgid "Move vertical slider current thumb Down" -msgstr "Vertikalen Schieberegler aktuellen Schieber nach unten bewegen" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:211 -msgid "Move vertical slider current thumb Up" -msgstr "Vertikalen Schieberegler aktuellen Schieber nach oben bewegen" - #: src/slic3r/GUI/GCodeViewer.cpp:2492 msgid "Movement" msgstr "Bewegung" @@ -5955,6 +5947,14 @@ msgstr "Eine Schicht Modus" msgid "One or more object were assigned an extruder that the printer does not have." msgstr "Eines oder mehrere Objekte wurden einem Extruder zugewiesen, der auf diesem Drucker nicht vorhanden ist." +#: src/slic3r/GUI/GUI_App.cpp:1784 +msgid "Ongoing uploads" +msgstr "Laufende Uploads" + +#: src/libslic3r/Print.cpp:1269 +msgid "Only a single object may be printed at a time in Spiral Vase mode. Either remove all but the last object, or enable sequential mode by \"complete_objects\"." +msgstr "Im Modus \"Spiralvase\" darf immer nur ein einziges Objekt gedruckt werden. Entfernen Sie entweder alle bis auf das letzte Objekt, oder aktivieren Sie den sequenziellen Modus durch \"complete_objects\"." + #: src/libslic3r/PrintConfig.cpp:2045 src/libslic3r/PrintConfig.cpp:2840 msgid "Only create support if it lies on a build plate. Don't create support on a print." msgstr "Nur dann Stützen schaffen, wenn sie auf der Druckplattform aufbauen. Erstellt keine Stützen, die auf dem Ausdruck gründen würden." @@ -6307,11 +6307,6 @@ msgstr "Druck pausieren (\"%1%\")" msgid "Pause Print G-code" msgstr "Druckpausen G-Code" -#: src/slic3r/GUI/GLCanvas3D.cpp:940 src/slic3r/GUI/GLCanvas3D.cpp:949 -#: src/slic3r/GUI/GLCanvas3D.cpp:988 -msgid "Pause print or custom G-code" -msgstr "Druckpausen oder benutzerdefinierter G-Code" - #: src/libslic3r/PrintConfig.cpp:1147 msgid "Percent of a flow rate relative to object's normal layer height." msgstr "Prozent einer Flussrate relativ zur normalen Schichthöhe des Objekts." @@ -6360,9 +6355,9 @@ msgstr "Physische Drucker" msgid "Pick another vendor supported by %s" msgstr "Wählen Sie einen anderen Hersteller, der von %s unterstützt wird" -#: src/libslic3r/PrintConfig.cpp:66 -msgid "Picture sizes to be stored into a .gcode and .sl1 files" -msgstr "Bildgrößen, die in einer.gcode und .sl1 Datei gespeichert werden sollen" +#: src/libslic3r/PrintConfig.cpp:67 +msgid "Picture sizes to be stored into a .gcode and .sl1 files, in the following format: \"XxY, XxY, ...\"" +msgstr "Bildgrößen, die in einer .gcode- und .sl1-Datei gespeichert werden sollen, im folgenden Format: \"XxY, XxY, ...\"" #: src/libslic3r/PrintConfig.cpp:2822 msgid "Pillar connection mode" @@ -6485,11 +6480,7 @@ msgid "Preset \"%1%\" is not compatible with the new printer profile and it has msgstr "Die \"%1%\" Voreinstellung ist mit dem neuen Druckerprofil nicht kompatibel und weist die folgenden ungespeicherten Änderungen auf:" #: src/slic3r/GUI/SavePresetDialog.cpp:136 -msgid "Preset with name \"%1%\" already exists and is imcopatible with selected printer." -msgstr "Die Voreinstellung mit dem Namen \"%1%\" existiert bereits und ist mit dem ausgewählten Drucker nicht kompatibel." - -#: src/slic3r/GUI/SavePresetDialog.cpp:136 -msgid "Preset with name \"%1%\" already exists and is incopatible with selected printer." +msgid "Preset with name \"%1%\" already exists and is incompatible with selected printer." msgstr "Die Voreinstellung mit dem Namen \"%1%\" existiert bereits und ist mit dem ausgewählten Drucker nicht kompatibel." #: src/slic3r/GUI/SavePresetDialog.cpp:148 @@ -6501,6 +6492,10 @@ msgctxt "PresetName" msgid "Copy" msgstr "Kopieren" +#: src/slic3r/GUI/GLCanvas3D.cpp:3990 +msgid "Press %1%left mouse button to enter the exact value" +msgstr "%1%linke Maustaste drücken, um den genauen Wert einzugeben" + #: src/slic3r/GUI/KBShortcutsDialog.cpp:157 msgid "Press to activate deselection rectangle" msgstr "Drücken um das Abwahlrechteck zu aktivieren" @@ -6719,6 +6714,10 @@ msgstr "PrusaSlicer erkannte System-SSL-Zertifikatspeicher in: %1%" msgid "PrusaSlicer GUI initialization failed" msgstr "PrusaSlicer GUI-Initialisierung fehlgeschlagen" +#: src/slic3r/GUI/GUI_App.cpp:586 +msgid "PrusaSlicer has encountered a localization error. Please report to PrusaSlicer team, what language was active and in which scenario this issue happened. Thank you.\n\nThe application will now terminate." +msgstr "PrusaSlicer ist auf einen Lokalisierungsfehler gestoßen. Bitte melden Sie dem PrusaSlicer-Team, welche Sprache aktiv war und in welchem Szenario dieses Problem aufgetreten ist. Wir danken Ihnen.\n\nDie Anwendung wird nun beendet." + #: src/slic3r/GUI/AboutDialog.cpp:285 msgid "PrusaSlicer is based on Slic3r by Alessandro Ranellucci and the RepRap community." msgstr "PrusaSlicer basiert auf Slic3r von Alessandro Ranellucci und der RepRap Community." @@ -7737,10 +7736,6 @@ msgstr "Seq." msgid "Sequential printing" msgstr "Sequentielles Drucken" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:235 -msgid "Sequential Slider" -msgstr "Sequentieller Schieberegler" - #: src/slic3r/GUI/Preferences.cpp:230 msgid "Sequential slider applied only to top layer" msgstr "Sequentieller Schieberegler wird nur auf die oberste Schicht angewendet" @@ -7786,6 +7781,14 @@ msgstr "Extrudersequenz für den gesamten Druck einstellen" msgid "Set extruder(tool) sequence" msgstr "Extruder(werkzeug)sequenz einstellen" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:243 +msgid "Set left thumb as active" +msgstr "Linken Schieber aktiv setzen" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:222 +msgid "Set lower thumb as active" +msgstr "Unteren Schieber aktiv setzen" + #: src/slic3r/GUI/KBShortcutsDialog.cpp:218 msgid "Set lower thumb to current slider thumb" msgstr "Stelle den unteren Regler auf den aktuellen Schieberegler" @@ -7819,6 +7822,10 @@ msgstr "Setze Druckbar" msgid "Set Printable Instance" msgstr "Setze druckbare Kopie" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:244 +msgid "Set right thumb as active" +msgstr "Rechten Schieber aktiv setzen" + #: src/slic3r/GUI/DoubleSlider.cpp:1836 msgid "Set ruler mode" msgstr "Lineal-Modus einstellen" @@ -7887,6 +7894,10 @@ msgstr "Setze Undruckbar" msgid "Set Unprintable Instance" msgstr "Setze undruckbare Kopie" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:221 +msgid "Set upper thumb as active" +msgstr "Oberen Schieber aktiv setzen" + #: src/slic3r/GUI/KBShortcutsDialog.cpp:217 msgid "Set upper thumb to current slider thumb" msgstr "Stelle den oberen Regler auf den aktuellen Schieberegler" @@ -8225,10 +8236,6 @@ msgstr "PrusaSlicer kann G-Code Dateien auf einen Drucker-Host hochladen. Dieses msgid "Slic3r can upload G-code files to a printer host. This field should contain the API Key or the password required for authentication." msgstr "PrusaSlicer kann G-Code Dateien zu einem Druckerhost hochladen. Dieses Feld sollte den API-Schlüssel oder das Kennwort enthalten, die für die Authentifizierung erforderlich sind." -#: src/libslic3r/PrintConfig.cpp:100 -msgid "Slic3r can upload G-code files to a printer host. This field should contain the hostname, IP address or URL of the printer host instance." -msgstr "PrusaSlicer kann G-Code Dateien auf einen Drucker-Host hochladen. Dieses Feld sollte den Hostnamen, die IP-Adresse oder die URL der Drucker-Hostinstanz enthalten." - #: src/libslic3r/PrintConfig.cpp:100 msgid "Slic3r can upload G-code files to a printer host. This field should contain the hostname, IP address or URL of the printer host instance. Print host behind HAProxy with basic auth enabled can be accessed by putting the user name and password into the URL in the following format: https://username:password@your-octopi-address/" msgstr "PrusaSlicer kann G-Code-Dateien auf einen Drucker-Host hochladen. Dieses Feld sollte den Hostnamen, die IP-Adresse oder die URL der Drucker-Host-Instanz enthalten. Auf einen Drucker-Host hinter HAProxy mit aktivierter Basisauthentifizierung kann zugegriffen werden, indem der Benutzername und das Passwort im folgenden Format in die URL eingegeben werden: https://username:password@Ihre-octopi-addresse/" @@ -8631,6 +8638,10 @@ msgstr "Die STL-Datei wurde exportiert zu %s" msgid "Stop at height" msgstr "Stoppe auf Höhe" +#: src/slic3r/GUI/GUI_App.cpp:1781 +msgid "Stop them and continue anyway?" +msgstr "Stoppen und trotzdem weitermachen?" + #: src/slic3r/GUI/PhysicalPrinterDialog.cpp:295 msgid "Success!" msgstr "Erfolg!" @@ -8767,10 +8778,6 @@ msgstr "Unterstützt Stealth Modus" msgid "Supports work better, if the following feature is enabled:\n- Detect bridging perimeters" msgstr "Stützen funktionieren besser, wenn die folgende Funktion aktiviert ist:\n- Erkennen von Umfangbrücken" -#: src/slic3r/GUI/DoubleSlider.cpp:1824 -msgid "Supprese show the ruler" -msgstr "LIneal zeigen unterdrücken" - #: src/slic3r/GUI/Preferences.cpp:104 msgid "Suppress \" - default - \" presets" msgstr "\"Standard\"-Einstellungen unterdrücken" @@ -8985,6 +8992,18 @@ msgstr "Bei den folgenden FFF-Druckermodellen wurde kein Filament ausgewählt:" msgid "The following presets were modified:" msgstr "Die folgenden Voreinstellungen wurden geändert:" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:253 +msgid "The following shortcuts are applicable in G-code preview when the horizontal slider is active" +msgstr "Die folgenden Tastenkombinationen sind in der G-Code-Vorschau anwendbar, wenn der horizontale Schieberegler aktiv ist" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:237 +msgid "The following shortcuts are applicable in G-code preview when the vertical slider is active" +msgstr "Die folgenden Tastenkombinationen sind in der G-Code-Vorschau anwendbar, wenn der vertikale Schieberegler aktiv ist" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:179 +msgid "The following shortcuts are applicable when the specified gizmo is active" +msgstr "Die folgenden Tastenkombinationen sind anwendbar, wenn das angegebene Gizmo aktiv ist" + #: src/slic3r/GUI/ConfigWizard.cpp:2275 msgid "The following SLA printer models have no materials selected:" msgstr "Bei den folgenden SLA-Druckermodellen wurden keine Materialien ausgewählt:" @@ -9021,6 +9040,10 @@ msgstr "Der maximale Abstand zwischen 2 Pfeilern, die miteinander verbunden werd msgid "The max length of a bridge" msgstr "Die maximale Länge einer Überbrückung" +#: src/libslic3r/PrintConfig.cpp:190 +msgid "The maximum detour length for avoid crossing perimeters. If the detour is longer than this value, avoid crossing perimeters is not applied for this travel path. Detour length could be specified either as an absolute value or as percentage (for example 50%) of a direct travel path." +msgstr "Die maximale Umleitungslänge für kreuzen der Kontur vermeiden. Wenn die Umleitung länger als dieser Wert ist, wird die Umgehung von Konturen nicht für diesen Fahrweg angewendet. Die Umleitungslänge kann entweder als absoluter Wert oder als Prozentsatz (z. B. 50 %) eines direkten Verfahrwegs angegeben werden." + #: src/libslic3r/PrintConfig.cpp:2878 msgid "The minimum distance of the pillar base from the model in mm. Makes sense in zero elevation mode where a gap according to this parameter is inserted between the model and the pad." msgstr "Der Mindestabstand des Säulenfußes zum Modell in mm. Sinnvoll im Nullhöhenmodus, bei dem ein Spalt gemäß diesem Parameter zwischen Modell und Grundschicht eingefügt wird." @@ -9029,6 +9052,14 @@ msgstr "Der Mindestabstand des Säulenfußes zum Modell in mm. Sinnvoll im Nullh msgid "The name cannot be empty." msgstr "Name kann nicht leer sein." +#: src/slic3r/GUI/SavePresetDialog.cpp:152 +msgid "The name cannot end with space character." +msgstr "Der Name darf nicht mit einem Leerzeichen enden." + +#: src/slic3r/GUI/SavePresetDialog.cpp:147 +msgid "The name cannot start with space character." +msgstr "Der Name darf nicht mit einem Leerzeichen beginnen." + #: src/libslic3r/PrintConfig.cpp:219 msgid "The number of bottom solid layers is increased above bottom_solid_layers if necessary to satisfy minimum thickness of bottom shell." msgstr "Die Anzahl der unteren Massivschichten wird über bottom_solid_layers erhöht, wenn es notwendig ist, um die Mindeststärke der Bodenschale zu erfüllen." @@ -9130,10 +9161,6 @@ msgstr "Die Einzugsgeschwindigkeit (sie betrifft nur den Extruderantrieb)." msgid "The Spiral Vase mode requires:\n- one perimeter\n- no top solid layers\n- 0% fill density\n- no support material\n- Ensure vertical shell thickness enabled\n- Detect thin walls disabled" msgstr "Der Spiralvasenmodus erfordert:\n- einen Perimeter\n- keine oberen massiven Schichten\n- 0% Fülldichte\n- kein Stützmaterial\n- Vertikale Schalenstärke sicherstellen aktiv\n- Dünne Wände erkennen nicht aktiv" -#: src/libslic3r/Print.cpp:1263 -msgid "The Spiral Vase option can only be used when printing a single object." -msgstr "Die Option Spiralvase kann nur beim Drucken eines einzelnen Objekts verwendet werden." - #: src/libslic3r/Print.cpp:1270 msgid "The Spiral Vase option can only be used when printing single material objects." msgstr "Die Option Spiralvase kann nur beim Drucken von Objekten aus einem einzigen Material verwendet werden." @@ -9161,6 +9188,10 @@ msgstr "Die vorgenommenen Einstellungen führen zu einem leeren Druck." msgid "The thickness of the pad and its optional cavity walls." msgstr "Die Stärke der Grundschicht und seine optionalen Hohlraumwände." +#: src/slic3r/GUI/GUI_App.cpp:1781 +msgid "The uploads are still ongoing" +msgstr "Die Uploads sind noch im Gange" + #: src/libslic3r/PrintConfig.cpp:2053 msgid "The vertical distance between object and support material interface. Setting this to 0 will also prevent Slic3r from using bridge flow and speed for the first object layer." msgstr "Der vertikale Abstand zwischen Objekt und Trägermaterialschnittstelle. Wenn Sie diesen Wert auf 0 setzen, wird PrusaSlicer auch verhindern, dass Bridge-Flow und -Geschwindigkeit für die erste Objektschicht verwendet werden." @@ -9314,9 +9345,9 @@ msgstr "Diese Einstellung erlaubt es, Infill zu kombinieren und die Druckdauer z msgid "This feature allows to force a solid layer every given number of layers. Zero to disable. You can set this to any value (for example 9999); Slic3r will automatically choose the maximum possible number of layers to combine according to nozzle diameter and layer height." msgstr "Diese Einstellung erzwingt eine massive Schicht nach einer vorgegebenen Anzahl von Schichten. Null deaktiviert diese Einstellung. Sie können jeden Wert eingeben (z.B. 9999); PrusaSlicer wird automatisch die größtmögliche Anzahl von Schichten wählen, die in Abhängigkeit von Düsendurchmesser und Schichthöhe kombiniert werden können." -#: src/libslic3r/PrintConfig.cpp:1910 -msgid "This feature will raise Z gradually while printing a single-walled object in order to remove any visible seam. This option requires a single perimeter, no infill, no top solid layers and no support material. You can still set any number of bottom solid layers as well as skirt/brim loops. It won't work when printing more than an object." -msgstr "Dieses Verfahren erhöht die Z-Position allmählich, während eine einfache Hülle gedruckt wird, um jeglichen sichtbaren Saum zu vermeiden. Diese Option setzt eine einzige Außenkontur, keinen Infill, keine massiven Deckenschichten und keine Stützen voraus. Sie können immer noch eine beliebige Anzahl von Bodenschichten sowie Schleifen für Schürzen und Rand einstellen. Die Methode funktioniert nicht, wenn mehr als ein Objekt gedruckt wird." +#: src/libslic3r/PrintConfig.cpp:1995 +msgid "This feature will raise Z gradually while printing a single-walled object in order to remove any visible seam. This option requires a single perimeter, no infill, no top solid layers and no support material. You can still set any number of bottom solid layers as well as skirt/brim loops. It won't work when printing more than one single object." +msgstr "Diese Funktion hebt Z allmählich an, während ein einwandiges Objekt gedruckt wird, um jede sichtbare Naht zu entfernen. Diese Option erfordert eine einzelne Umrandung, keine Füllung, keine oberen festen Schichten und kein Stützmaterial. Sie können trotzdem eine beliebige Anzahl von unteren massiven Schichten sowie Schürzen-/Randschlaufen einstellen. Sie funktioniert nicht, wenn mehr als ein einzelnes Objekt gedruckt wird." #: src/slic3r/GUI/Plater.cpp:2329 msgid "This file cannot be loaded in a simple mode. Do you want to switch to an advanced mode?" @@ -9395,10 +9426,6 @@ msgstr "Die Beschleunigung, die Ihr Drucker für die erste Schicht verwendet. S msgid "This is the acceleration your printer will use for infill. Set zero to disable acceleration control for infill." msgstr "Diese Stellung bestimmt die Beschleunigung des Druckers für Infill. Setzen Sie dies auf null, um die Beschleunigungskontrolle für das Infill zu deaktivieren." -#: src/libslic3r/PrintConfig.cpp:1508 -msgid "This is the acceleration your printer will use for perimeters. A high value like 9000 usually gives good results if your hardware is up to the job. Set zero to disable acceleration control for perimeters." -msgstr "Dies ist die Beschleunigung, die der Drucker für Außenkonturen benutzen wird. Ein hoher Wert wie 9000 ergibt üblicherweise gute Resultate falls Ihre Hardware mithalten kann. Setzen Sie dies auf null, um die Beschleunigungskontrolle bei Außenkonturen zu deaktivieren." - #: src/libslic3r/PrintConfig.cpp:1582 msgid "This is the acceleration your printer will use for perimeters. Set zero to disable acceleration control for perimeters." msgstr "Dies ist die Beschleunigung, die Ihr Drucker für Perimeter verwendet. Setzen Sie Null, um die Beschleunigungssteuerung für Perimeter zu deaktivieren." @@ -9575,10 +9602,6 @@ msgstr "Um eine benutzerdefinierte CA-Datei zu verwenden, importieren Sie bitte msgid "Toggle %c axis mirroring" msgstr "Umschalten der Spiegelung der %c-Achse" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:215 -msgid "Toggle vertical slider one layer mode ON/OFF" -msgstr "Umschalten des vertikalen Schiebereglers für den Modus einer Schicht EIN/AUS" - #: src/libslic3r/miniz_extension.cpp:93 msgid "too many files" msgstr "zu viele Dateien" @@ -9836,11 +9859,6 @@ msgstr "Nicht unterstützte Auswahl" msgid "up to" msgstr "bis zu" -#: src/slic3r/GUI/GLCanvas3D.cpp:961 -#, possible-c-format -msgid "up to %.2f mm" -msgstr "bis zu %.2f mm" - #: src/slic3r/GUI/UpdateDialogs.cpp:38 msgid "Update available" msgstr "Ein Update ist verfügbar" @@ -9890,10 +9908,6 @@ msgstr "Obere Schicht" msgid "Use another extruder" msgstr "Einen anderen Extruder verwenden" -#: src/slic3r/GUI/GLCanvas3D.cpp:3959 -msgid "Use CTRL+left mouse key to enter text edit mode:" -msgstr "STRG+linke Maustaste verwenden, um in den Textbearbeitungsmodus zu gelangen:" - #: src/slic3r/GUI/Preferences.cpp:220 msgid "Use custom size for toolbar icons" msgstr "Benutzerdefinierte Größe für Symbolleistensymbole verwenden" @@ -10065,13 +10079,9 @@ msgstr "Version" msgid "Vertical shells" msgstr "Vertikale Konturhüllen" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:234 -msgid "Vertical slider - Add color change marker for current layer" -msgstr "Vertikaler Schieberegler - Fügt einen Farbwechselmarker der aktuellen Schicht hinzu" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:235 -msgid "Vertical slider - Delete color change marker for current layer" -msgstr "Vertikaler Schieberegler - Löscht den Farbwechselmarker der aktuellen Schicht" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:237 +msgid "Vertical Slider" +msgstr "Vertikaler Schieberegler" #: src/slic3r/GUI/KBShortcutsDialog.cpp:208 #: src/slic3r/GUI/KBShortcutsDialog.cpp:212 @@ -10085,30 +10095,6 @@ msgstr "Vertikaler Schieberegler - Aktiven Schieber nach unten bewegen" msgid "Vertical slider - Move active thumb Up" msgstr "Vertikaler Schieberegler - Aktiven Schieber nach oben bewegen" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:231 -msgid "Vertical slider - Move current thumb Down" -msgstr "Vertikaler Schieberegler - Aktuellen Schieber nach unten bewegen" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:230 -msgid "Vertical slider - Move current thumb Up" -msgstr "Vertikaler Schieberegler - Aktuellen Schieber nach oben bewegen" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:233 -msgid "Vertical slider - Set lower thumb as active" -msgstr "Vertikaler Schieberegler - Unteren Schieber aktiv setzen" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:233 -msgid "Vertical slider - Set lower thumb to current thumb" -msgstr "Vertikaler Schieberegler - Unteren Schieber auf aktuellen setzen" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:232 -msgid "Vertical slider - Set upper thumb as active" -msgstr "Vertikaler Schieberegler - Oberen Schieber aktiv setzen" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:232 -msgid "Vertical slider - Set upper thumb to current thumb" -msgstr "Vertikaler Schieberegler - Oberen Schieber auf aktuellen setzen" - #: src/slic3r/GUI/GUI_Preview.cpp:265 src/slic3r/GUI/GUI_Preview.cpp:271 msgid "View" msgstr "Ansicht" @@ -10289,14 +10275,6 @@ msgstr "Breite der Verbindungsstäbe, die das Objekt und die erzeugte Grundschic msgid "Width of the display" msgstr "Displaybreite" -#: src/slic3r/GUI/PresetHints.cpp:47 -msgid "will always run at %1%%%" -msgstr "wird immer mit %1%%% laufen" - -#: src/slic3r/GUI/PresetHints.cpp:54 -msgid "will be turned off." -msgstr "wird abgeschaltet." - #: src/libslic3r/PrintConfig.cpp:2584 msgid "Will inflate or deflate the sliced 2D polygons according to the sign of the correction." msgstr "Vergrößert oder verringert die geslicten 2D-Polygone entsprechend dem Vorzeichen der Korrektur." @@ -10456,6 +10434,10 @@ msgstr "Sie können kein SLA-Projekt mit einem mehrteiligen Objekt auf das Druck msgid "You cannot use non-uniform scaling mode for multiple objects/parts selection" msgstr "Sie können den nichtgleichmäßigen Skalierungsmodus nicht für mehrere Objekte/Teileauswahlen verwenden" +#: src/slic3r/GUI/NotificationManager.hpp:459 +msgid "You have just added a G-code for color change, but its value is empty.\nTo export the G-code correctly, check the \"Color Change G-code\" in \"Printer Settings > Custom G-code\"" +msgstr "Sie haben gerade einen G-Code für Farbwechsel hinzugefügt, aber sein Wert ist leer.\nUm den G-Code korrekt zu exportieren, überprüfen Sie den \"Farbwechsel-G-Code\" unter \"Druckereinstellungen > Benutzerdefinierter G-Code\"." + #: src/slic3r/GUI/SavePresetDialog.cpp:277 msgid "You have selected physical printer \"%1%\" \nwith related printer preset \"%2%\"" msgstr "Sie haben den physischen Drucker \"%1%\" ausgewählt \nmit der zugehörigen Druckervoreinstellung \"%2%\"." diff --git a/resources/localization/es/PrusaSlicer.mo b/resources/localization/es/PrusaSlicer.mo index 6acd11b339567f986e63b71f83b20ed2f97e97cf..335dc02c26d156aaa313a46b0b189fa786053e1e 100644 GIT binary patch delta 59966 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%0DhmMTB{lP5d8{?QT^uh z4Prav_bF|A^v{y;O=O2EMDR*U;cyWClonrc-3}!UCndmx_ z>^`t#)QrTlD1IUO$|{$6|4qU9I0grSALFzMUJB6fv_csqTcl=bHFB8XJ+$(n-38?K z__a{JZ=l(tJ&QSt-P@qsd zfSM@zX@cKI_Mz)b%uCo$5YN{%T1KL4huj$5ckttC7UodQChRBZClP-W4nIXQC+xsb z3Ws>wOoBszeF9h=SSXXAPXH*-D1Ra5D(zk9UVyjb@1;K-ZUtw-+u#ylJc_*oEHps1 zh_e52gaW9TQWhi8UU)4@TA~-K8Eq_|0hUUV4RAmFhtO|E(cjYUMAwD34{2JVx9|3*2M49+J zK*AVR#^-MOzms$`_KWmO(k@d)CLq@(_6qiR+C|O+*hUc>9?g$2@KCN%F;$E>zl}VC zV7{@?q_+6{MuMJz*Qbrq1>)|(=0Wd(e3wi}8HBxpn63_#A}JX!_3twt(; z#2urns@O3Ul%Kdt;9P`bWJP|P_%!^!L4E;42?~n9d+E27{r@rL{Si*XNm?93L0G7Q zN>B~(8t_IE?IT#|pz?VRpC^@0^t+HB#CM-`;;1i$^uRU|+XmWm#3jkU^5fT^mij1T zq${}!$@qd{`95cpCei-NEVQ7_h8Gj}A^j}?e~fPvHB&p(3=JbmQFIT|e~xw>F;BsT z=@+FnN!I^Rf@k6!qeAotQba?X?xwAP?GH8mF`o}f{u)5Z(lTpx;msKH@LK_w2csdn zJa`ED2nF;)C$s{22R>eGl3)JYb4v}Bn@ASH>8z@5Dte*T*v_foofI<%zZU4~0x}N$ zL-0=eU((hB4Clj!zhUjR@p z)dooZ9wQd2MBfz^EzjcH68TMZOW+tKDEX3#IS+0(Wt;)7IsWQ#0it?_WP545lZ-E# zHK`%;B_;1M1DOSMJ@DPBMx3f}YA~2*@V$?u58=}d{|)qmv}e)vpDEXWHI4UZ*_= z;Bn&CVZTA50R01i{tEX&*Hd98fmNH>-muWG#0m|RR`TcK@GztK8Gt8I4xyh0U?D&f z0C^0+kJLzB#I`^I3CN$=z9Vim^5bBf#r7E(ONcv){#)$Npyv-2OsbA92izE`@v|@E zu!_JJRn_9~6}ssJ_a@+T0zZa@u8`zQY>(srbW~+IqY7M3!q<@}U=#8Xn@zu)vWxCT zbQi&RP4@paIR2)9N1&X7ydMyuCum=$-${X024n|5MbZDFVg}HjLMLQLzk$L^;x~_e z-MFOrN!m*J?ZRi7iK)h)j`O=J$uSjFTP0Y`3_MQYQG6T4SA&k;%|T~4e0w-qQ%55f$QBlxW&Z|=3ji*L5HwhivonbMo7iD zk{T282K`LR5n9g}K2osxX!$27CY8qTIph}jeT{#v!l*^R0P;GppP-}|T|(cQk~XM$ z4G*H@QT2U^d@lhDXdi=xj?jB2GiZ@b38i5_*zVwUYvzS)MtKvjH0UtuY z0s9XsK1JbKndKJZq{v2pk-S(h#bF_BDdi~kK^PyTs5fAtn%K6XD~X(s1b*a7D)GbE zhNEu=#$}aMVw@EFkqB{w%KU;IQJtX^=1+et^W#SF3RBaI1ohPvrD4BI6?T+jCMq!b z!lOy}6~P{(jwEkQVeORS8SLrkzJWWEqal4EzLMVjBl*dE<4&1C9=+8y^qsg{PzYoB}R@E&pUR6WyEe zL-JWz1=y~F$Dx!zbecgwiy)z;@EgcQ;1dMD#;7tGsnB@*j*zSZwl&1Ys8yVNPARh) zl#q?~7vh}wgc|_#IG{pL!ui!S%|l-b$JsdUgN3e>C`lFd95FNTosa$?eiIeO0^*t~ zj3-rG3EF1ZN79xB!@%AHzvc2T9yLbu2c0T_e4{{ik)$U2UFaH6WjQl_^harY&I2$S z&WGRosE;fART4A@i@y@JJgsKnJNldO8>O(j&=-2iERyTbUuIgiQPpgm-Xx*WB>F-X z;EMzlrkJYeMw4I)fgxB^K;l=9SPgp#=|D^1uGsGeuORx7*o8WRBXn66Q&R5#kKj*m zepmr&$~d3GUO@Lf0ka4kOaB2goE?mq8x)g+{%hLqB&a|uG&eteH&--2%= zu$xhQdH5u{@TXKa9APXh^b<+e5%2`gS;#`q6O^jJ1L#j8{|tc8FnqTYyOKirlU0+Z zf|&pphI8>CA#uphNM?$A~6Um{3F5K%S1SE5!?ih%E!ohp-(?2l@uI^{{=9{1I69k>4@| zutzZnjmPkns(3fLwFLVqWEzzxrZTM##l z_8Eo!K0Xi7m;9D|DnMkRmjPaYqmEpVdKMnSjnq+kn2%X4QV6lAWS`1poV^W=kISH&k)g zXcvMFg)JYEpeB{yqmrMceU1Kc+KmKtQ?oD~?=@8XD7M!DzYF^W+9dR4qhOZ)*o3}9 z--NanZ2|oDfb%@DKP&rI^h?pLl+VIKBxpyay-5YO4B*ae!k9s0hf* z*q0#JBH%jqD)dA2$E&F17AL4%}_GNf5a)?d^5oZAri1RSGOgi$1^g{~R)?+Kg)Kt%b>Ao*M9rqTbNnGt#q`}H`C zcJzP5=M=spXlua7@cjTDFYjL$aK4w3I#f^rD)W-8KMq@@Y5;`pK^EEzK#U4e+#-D2 z65k4a75YCae>ZJKbh?U*#XL$O$zWeau}@B{@1bafq8!`^=UhPgsG!T(g-$5Yhw#0Z z{%(qW1;2FVR~kP}fU!-6&#EGiW4B@Z5?wYi=kd7*TOHab(1oAJ*cqo4bPnT?&1gCR zEHod-ib~eh>@>xhITbUI_AU8c z_yi13;k+E4jIthJAL2L~xgoO9+a#|FP&_?F+(|Xc9vB*se0iMD+r;04k5C6y`~&ny zfw_fTUC<4b{okPSX(%efmoUBuXjwH939hVy-$K_8TVwj40#r&R%RyfPcH>(N+b62% z-z6BThTm!QN%%}deuF$WkWG^Pzpn}?g0UL?gKAXbP!iiToJXl-GZ>Z7C_sdE(iT>u z{8P123y);tTnz39HGuo^wX67Z$Uh>7TVwndz8B{=NxVQMFG7DIPE9CaEZiBNXDOlp z_Vd_;>LTAwdy@V-s`!*wRc@-5*7D96l$oEV=;w zg~&pO6_ChD6!9nt`lDN^?4lpXNIRexT1S$*6>bpSJ=p%BorA6$u)Rp`H0|5JB z?4YK297d;_rp7AqFh)=my=>RVl%EgVS|z`My(jkV=-et+a*V{@KowaMxe#&?{e2X) z8LUU-`X>_n7=eeWY$ts$P6LonDewTJsSdBj=O*BV2rfg+dVF)ywS|AcUnmFtQ}~{s z75ZMaeTkF0X2NH{eSqXbVK>e`g0pFbE&_I+GLFFUH{>pA1P_DIN&N7cOnY1v=u_=i znA%XB727?M4f4VRRS~O+i_!bUOye70EIz=`qrIRCCUFZx9Ur^aK42Ma!5yNCP z1NYOf0nZ`eF?7=v=qeJtims6IO8_Gcj!|P`{(@cjje}#95C2R$ZNVu{9)FnXM&no( zPNj$mC?}|?JA!lTxZt%Utct%-H8qt#V}Bnx37b$q+Vx-w)rDVBSXTU=M*p4i`;mSf za`m3f524u@2BBO*Kq|UUDpAxL{W%xiQ3W2a|544tGV9`*C$hHQJW;pM)>a?3Dpt$w zo1l#i1%jHc1zg@tw^Qru4+ZoAZdaPquerQ|pzcj`ZXJJlWPyC`b9}CJC##Q zt(QJgOLqo+A;0E!dNYGrTaSHLt=QJzZ~kcAUfTLsLXp8vf57GQYTdjUKBH)1YtL|o z3;d+UNm|gSB{fOXGISK_DG8nYexG0SI0FGa)2X%6lA0zZbns>8Qjj)54`@NZD>KvS zccyEpxmrfZn-&BYw`NI}n42#{`#0!XU#H*W3Q$Ve8!%I9dQc1M{!C{u8lz_f8EaZJ z;s3{K!ZO&~<@}p!Qk@w-zw%=kgVC1zl;nI~pEoS;AV%5gAj)y1H0*ZGy|~)^zs-JvX5FLtdFDu2xc# zrDGIaV0`@GitD*t-DIZI8;wdOLCEjr68SPRQXz-`78GfHfo8FF}X6mT*!3Im7#H$F=@dp3QkNXclaNZCv(4P6S7=sSy~!b5P#<#6U-&?$~9(g zZq?`(=yWv=wx~FlVO$>o%&c#qgW^F zs|mrZkSEp4Z5@al>||Y0I6oUny3=nA=w}T@F7~$`tYU1TOnx@Ew2XjB(6u1N%K{mY z?ecT`4we<-@ufQ%smr`4{Z5ZrAeSeVd63oP*4f#kn8_M*;PmRLb=ZRg&ha6qH|PRK zAY@xjO!IlN-OiwMbkskP7-_Q7TDxE*XPvdb)tYS1Snh=8u$=l*Gte>#bYt z4ll9Bv5nS|4VX~3GlK#6LX<}tK^_3yQzSEQ0H@}h$P7lWeWdy(>zaIFb}Q^@zL5CH zXt`b3pj?x5+2*7B6x*iTDI@kfvweOB=ey%M6?E#JWNsaEF?usY@)(f^hq{KcR&L!| zfiz~p@A5H0EGt)_T!2*=-9=@49>`5PPFCRJ3TJ9ZcD`b5TqW|yaqD_(X&F~^HQYkB z81B)wipDc1t-7(GzqL%{_mkE?ix?k`wk1R^pSS*2DB}9c`eBJGL0`695B3x)N%JxD zUXtqGT(;V_k@kNuiAMdutQ8_P{<1d6A2IUTh8GEE_~ho6wGzl;%xR$@1LCG&!{_NN z`|cLIdC%JTzW!WlgPv+4w(0#c@vpy+A>f!mj4Ys{2$?Soc`!z zd8%c9zxVZ3{u1Ox>tun37$kh_I@2pkTc6`TKL+)}-zjYpIl%jRZFo&(Y zxUy~^+lktA%}Z_WH_35Py(E{{$IT@(N&y0Dx(5Avj?=AW>%puPtz-NlhpQKIa}MDi zx>dK+y#I`znYPNtnRl(_j6T`6d=+HF(b;m$Ju4p2I8(}Yx{uD?oThsvy*$1rfB~eQ zhBiz0vv8gM6!SuP<2*TyvH1VVH}Y(0+p$8G)UIN#lR!`&=gflaHFMTus@9%NTbj=;Ke>4_oyq3@<6^nq+Txv_>|kz6!a#O{iP0OFC8)yHzV6OV zCf=Dg&b*F^9ZbLuCZO_6)Lb=rfc7yBTIs|z7FHZ ziM9ph1W;}v^CZi3xV-6{Yy*)gxwdBZiW~t2LTs_ctryLho zUQ6?bCedU&{dt=_&Y<5H;2hqQE9?q}(lt-sY7Q=f;D!S^d7FHZy&G&xN<`dyY$I)v zpI@_GFH&Ak<2)eKTzOl)lFU4%BO4cw*!mgOj@t5tO$6PamgUOfoZgsYmpZMx*+}%1 zgkC&E^|4Ngj-ElIC-$E5h|XpR8M3#@PNS#m8dsagka=pCl($ap=1@6p{%e}B9?iqZ z0y0((?+6)aIkd35F}zq56);jRA=kng$PVRg2uM|C8U7UQzpFIN3&#IpssB}_I?uWI zGXGv>BfokD(mDl#u_^YYh5UZ1l5@TQm~$!*L=ODMxudrBkY2Jf zZ*@xK%4ORRl_EDC_U_iwy?tWK4yAKGH?J?3)>yd1Cdc}I`R)B2EP))O%4S>n_Iik; z7Hc+dwOkp=DyMp`9&14gxV^48*2k;mV1ElH90y~b=-q;9Ui5!}{12yIIp~FH1Y%(zuXR#QbrdiXQF%@zkBn2-8BjK87Bkf;(nj-e)=I zm{Vm`@8Kxd!Cdn}ZngM{`459LkMy1H05vaX#XEI(T-Me3?Q;v)AME6)MWQ=5kGN%V z`^p%}CGFRW_Hub$Ixl*hfYP0j3Z?9YidE*2;rF?DOmY;MWUkGwx6U4hR^7fKvbcsl ztEN$~tNnrWOrd%X__SPeHd!{D_+)FA(~|CQ8#&q4 zKG=G1XY+h-u4LANUoM2po0GSiy~&rtc4i*-*$kYROs`v~erLcK{)s(y?61|`-p?NC z*V}Hj8~i__mm-7u+gFz})>XHcGjiPa;>HUiRUBt8B~mqG)mVEWkxJ)l&z+cReCx80 zHx7@r*EUke*{?>nxa}iKhdc1G0!5pb+aK^*2JjS%-ZM@XtjoiR-ed0j=Bb?fk;5+c zjB}ENur4@_`{ZbEE>i{}M|}?XZlZWp1hGaJ94Xvd-flN91-=-RPs?hgr@GucDsDjq zoM{~Nd9Luj&!h8S&-e*b?XHB#$~pG2)^ciB4QMHu=9w~AO9{9eC!3S@FDL)%^Xx|* z2LIntmP77kqtR)5WsMV)UoHm=B0ZGGK&di%am{1D&$zP4UN3Tfk-dHaj{TG*SJ%8w ztb*vXglUQ$|IJ;PlRs-CgR`Dr-jB_P7oSmRyurA#&FdTgfz@~(0h%k_<>NWXey6AE z(Va>b6%$~Zo#q=rXL$v4B7l1hyjGJZ?uHn4HSwO2{^# zbHdhBA~%-XH`a{o-D@9eGr}H6S>xkG*2$BJ_9D_vcF16ilO9J!+;UdF|J07+f+eRjaqHC77r++?SrDy}#=5Kp5WjslE zz2HvwnH!b4cFa|7K2-lL60aK3N2|QO^-yVL+WjGZa7}YuoT^eZmYlr1m}k1Uv)t`% zz#5W{a@qqc6;Oi0GvGi4R0w& ziO9KU8zUTT5+buR93}Eq{MSbn$6xb3 z)>uBy(bTxl<0xgk?RFG447a08WTDq#Enl@g@7h!cx}LX1XCBQNirpVZ)kH`6aIzd! zxxAs+c4yurIeHq0@RWqUvMWYke3&a1Q{3GZ{ZNZ{JnqqCKKSvc=~`lk7`oO$_oT8> zk=%SC;uVN(yo33=!c#bQiZ@0rwHK`&2K icOmm!XKwpkk}UQ7@z;%P<1NT;d~G;78Y7lDy8jQ5clbX5 delta 56765 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\{7Om|~>_{4yqu^Ja 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 QJ;)vFu4t}V;cEMT0MI*Um;e9( diff --git a/resources/localization/es/PrusaSlicer_es.po b/resources/localization/es/PrusaSlicer_es.po index 6efa234a93..b830c00e48 100644 --- a/resources/localization/es/PrusaSlicer_es.po +++ b/resources/localization/es/PrusaSlicer_es.po @@ -19,11 +19,6 @@ msgstr "\"%1%\" está desactivado porque \"%2%\" está en la categoría \"%3%\". msgid "%" msgstr "%" -#: src/slic3r/GUI/GLCanvas3D.cpp:969 -#, possible-c-format -msgid "%.2f - %.2f mm" -msgstr "%.2f - %.2f mm" - #. TRN Remove/Delete #: src/slic3r/GUI/Tab.cpp:3425 msgid "%1% Preset" @@ -296,10 +291,6 @@ msgstr "(Re)Laminar A&hora" msgid "(Unknown)" msgstr "(Desconocido)" -#: src/slic3r/GUI/Plater.cpp:1195 -msgid "(weight with spool)" -msgstr "(peso con bobina)" - #: src/slic3r/GUI/MainFrame.cpp:1491 msgid ") not found." msgstr ") no encontrado." @@ -386,11 +377,6 @@ msgstr "Acerca de %s" msgid "above" msgstr "sobre" -#: src/slic3r/GUI/GLCanvas3D.cpp:965 -#, possible-c-format -msgid "above %.2f mm" -msgstr "sobre %.2f mm" - #: src/libslic3r/PrintConfig.cpp:1677 msgid "Above Z" msgstr "Encima de Z" @@ -744,6 +730,10 @@ msgstr "Todas las superficies superiores" msgid "allocation failed" msgstr "asignación fallida" +#: src/slic3r/GUI/Preferences.cpp:161 src/slic3r/GUI/Preferences.cpp:165 +msgid "Allow just a single PrusaSlicer instance" +msgstr "Permitir una sola instancia de PrusaSlicer" + #: src/slic3r/GUI/Plater.cpp:3915 msgid "Along X axis" msgstr "A lo largo del eje X" @@ -1011,6 +1001,10 @@ msgstr "Velocidad automática (avanzado)" msgid "Avoid crossing perimeters" msgstr "Evita cruzar perímetros" +#: src/libslic3r/PrintConfig.cpp:188 +msgid "Avoid crossing perimeters - Max detour length" +msgstr "Evitar cruzar perímetros - Longitud máxima del desvío" + #: src/slic3r/GUI/Tab.cpp:3705 msgid "BACK ARROW" msgstr "FLECHA HACIA ATRÁS" @@ -1388,6 +1382,11 @@ msgstr "Comprueba si hay actualizaciones de configuración" msgid "Check for updates" msgstr "Comprueba si hay act&ualizaciones" +#: src/slic3r/Utils/PresetUpdater.cpp:412 +#: src/slic3r/Utils/PresetUpdater.cpp:420 +msgid "checking install indices" +msgstr "comprobando índices de instalación" + #: src/slic3r/GUI/BedShapeDialog.cpp:608 msgid "Choose a file to import bed texture from (PNG/SVG):" msgstr "Escoge un archivo para importar la textura de la base de impresión (PNG/SVG):" @@ -1433,10 +1432,6 @@ msgstr "Círculo" msgid "Circular" msgstr "Circular" -#: src/slic3r/GUI/GLCanvas3D.cpp:3961 -msgid "Clearance size" -msgstr "Espacio de la separación" - #: src/slic3r/GUI/GLCanvas3D.cpp:5028 src/slic3r/GUI/GLCanvas3D.cpp:5067 msgid "Click right mouse button to open/close History" msgstr "Clic con botón derecho del ratón para abrir/cerrar Historia" @@ -1511,11 +1506,6 @@ msgstr "Cambio de color (\"%1%\")" msgid "Color change (\"%1%\") for Extruder %2%" msgstr "Cambio de color (\"%1%\") para el Extrusor %2%" -#: src/slic3r/GUI/GLCanvas3D.cpp:1001 -#, possible-c-format -msgid "Color change for Extruder %d at %.2f mm" -msgstr "Cambio de color para Extrusor %d en %.2f mm" - #: src/slic3r/GUI/Tab.cpp:2203 msgid "Color Change G-code" msgstr "Código G Cambio Color" @@ -1729,6 +1719,22 @@ msgstr "Copiar al portapapeles" msgid "Copy to Clipboard" msgstr "Copiar al portapapeles" +#: src/slic3r/GUI/AboutDialog.cpp:304 +msgid "Copy Version Info" +msgstr "Copiar Información de Versión" + +#: src/slic3r/Utils/PresetUpdater.cpp:84 +msgid "Copying of file %1% to %2% failed.\nError message : %3%\nCopying was triggered by function: %4%" +msgstr "Copia del archivo %1% a %2% fallida.\nMensaje de error : %3%\nLa copia fue activada por la función: %4%" + +#: src/slic3r/Utils/PresetUpdater.cpp:91 +msgid "Copying of file %1% to %2% failed. Permissions fail at target file after copying.\nError message : %3%\nCopying was triggered by function: %4%" +msgstr "Copia del archivo %1% a %2% fallida. Los permisos fallan en el archivo de destino después de copiar. \nMensaje de error : %3%\nLa copia fue activada por la función: %4%" + +#: src/slic3r/Utils/PresetUpdater.cpp:70 +msgid "Copying of file %1% to %2% failed. Permissions fail at target file before copying.\nError message : %3%\nThis error happend during %4% phase." +msgstr "Copia del archivo %1% a %2% fallida. Los permisos fallan en el archivo de destino antes de copiar.\nMensaje de error : %3%\n Este error ocurrió durante la fase %4%." + #: src/slic3r/GUI/BackgroundSlicingProcess.cpp:156 msgid "Copying of the temporary G-code has finished but the exported code couldn't be opened during copy check. The output G-code is at %1%.tmp." msgstr "La copia del código G temporal ha finalizado, pero el código exportado no se pudo abrir durante la verificación de la copia. El código G de salida está en %1%.tmp." @@ -1826,6 +1832,10 @@ msgstr "Crear pad alrededor del objeto e ignorar la elevación del soporte" msgid "Critical angle" msgstr "Ángulo crítico" +#: src/slic3r/GUI/GUI_App.cpp:589 +msgid "Critical error" +msgstr "Error crítico" + #: src/libslic3r/PrintConfig.cpp:2832 msgid "Cross" msgstr "Cruzado" @@ -1979,10 +1989,6 @@ msgstr "Perfil de filamento por defecto" msgid "Default filament profile associated with the current printer profile. On selection of the current printer profile, this filament profile will be activated." msgstr "Perfil de filamento por defecto asociado con el perfil de impresora actual. Al seleccionar el perfil de impresora actual se activará este perfil de filamento." -#: src/slic3r/GUI/GLCanvas3D.cpp:910 src/slic3r/GUI/GLCanvas3D.cpp:939 -msgid "Default print color" -msgstr "Color de impresión predeterminado" - #: src/slic3r/GUI/Tab.cpp:1302 msgid "default print profile" msgstr "perfil de impresión por defecto" @@ -2433,9 +2439,13 @@ msgstr "Duplicar por cuadrícula" msgid "Duration" msgstr "Duración" -#: src/slic3r/GUI/PresetHints.cpp:39 -msgid "During the other layers, fan" -msgstr "Durante las otras capas, el ventilador" +#: src/slic3r/GUI/PresetHints.cpp:51 +msgid "During the other layers, fan will always run at %1%%%" +msgstr "Durante el resto de capas, el ventilador siempre funcionará al %1%%%" + +#: src/slic3r/GUI/PresetHints.cpp:58 +msgid "During the other layers, fan will be turned off." +msgstr "Durante las otras capas, el ventilador se apagará." #: src/libslic3r/PrintConfig.cpp:2833 msgid "Dynamic" @@ -3071,10 +3081,6 @@ msgstr "El extrusor cambia a" msgid "Extruder clearance" msgstr "Separación del extrusor" -#: src/slic3r/GUI/Tab.cpp:1563 -msgid "Extruder clearance (mm)" -msgstr "Distancia libre del extrusor (mm)" - #: src/libslic3r/PrintConfig.cpp:558 msgid "Extruder Color" msgstr "Color del extrusor" @@ -3155,9 +3161,9 @@ msgstr "No se pudo cargar el modelo de entrada." msgid "Failed processing of the output_filename_format template." msgstr "Error al procesar la plantilla output_filename_format." -#: src/slic3r/GUI/PresetHints.cpp:41 -msgid "Fan" -msgstr "Ventilador" +#: src/slic3r/GUI/GUI_App.cpp:1648 +msgid "Failed to activate configuration snapshot." +msgstr "No se pudo activar la instantánea de configuración." #: src/slic3r/GUI/Tab.cpp:1802 msgid "Fan settings" @@ -3171,6 +3177,22 @@ msgstr "Velocidad del ventilador" msgid "Fan Speed (%)" msgstr "Velocidad Ventilador (%)" +#: src/slic3r/GUI/PresetHints.cpp:49 +msgid "Fan speed will be ramped from zero at layer %1% to %2%%% at layer %3%." +msgstr "La velocidad del ventilador aumentará desde cero en la capa %1% a %2%%% en la capa %3%." + +#: src/libslic3r/PrintConfig.cpp:1001 +msgid "Fan speed will be ramped up linearly from zero at layer \"disable_fan_first_layers\" to maximum at layer \"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower than \"disable_fan_first_layers\", in which case the fan will be running at maximum allowed speed at layer \"disable_fan_first_layers\" + 1." +msgstr "La velocidad del ventilador aumentará linealmente desde cero en la capa \"disable_fan_first_layers\" al máximo en la capa \"full_fan_speed_layer\". \"full_fan_speed_layer\" será ignorada si es menor que \"disable_fan_first_layers\",en cuyo caso el ventilador funcionará a la velocidad máxima permitida en la capa \"disable_fan_first_layers\" + 1." + +#: src/slic3r/GUI/PresetHints.cpp:51 +msgid "Fan will always run at %1%%%" +msgstr "El ventilador siempre funcionará al %1%%%" + +#: src/slic3r/GUI/PresetHints.cpp:58 +msgid "Fan will be turned off." +msgstr "El ventilador se apagará." + #: src/libslic3r/PrintConfig.cpp:2548 msgid "Fast" msgstr "Rápida" @@ -3521,6 +3543,10 @@ msgstr "Frontal" msgid "Front View" msgstr "Vista frontal" +#: src/libslic3r/PrintConfig.cpp:1000 +msgid "Full fan speed at layer" +msgstr "Velocidad máxima del ventilador en la capa" + #: src/slic3r/GUI/Tab.cpp:1331 msgid "full profile name" msgstr "nombre completo perfil" @@ -3549,6 +3575,10 @@ msgstr "Tipo de código G" msgid "G-code preview" msgstr "Previsualización código G" +#: src/libslic3r/PrintConfig.cpp:66 +msgid "G-code thumbnails" +msgstr "Miniaturas de código G" + #: src/libslic3r/PrintConfig.cpp:3552 msgid "G-code viewer" msgstr "Visor código G" @@ -3644,6 +3674,10 @@ msgstr "Generando buffer de vértice" msgid "Generic" msgstr "Genérico" +#: src/slic3r/Utils/PresetUpdater.cpp:600 +msgid "getting config updates" +msgstr "obteniendo actualizaciones de configuración" + #: src/slic3r/GUI/KBShortcutsDialog.cpp:169 msgid "Gizmo cut" msgstr "Corte Gizmo" @@ -3880,6 +3914,10 @@ msgstr "Panal de abeja" msgid "Horizontal shells" msgstr "Carcasas horizontales" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:253 +msgid "Horizontal Slider" +msgstr "Control Deslizante Horizontal" + #: src/slic3r/GUI/KBShortcutsDialog.cpp:209 #: src/slic3r/GUI/KBShortcutsDialog.cpp:213 #: src/slic3r/GUI/KBShortcutsDialog.cpp:238 @@ -3892,30 +3930,6 @@ msgstr "Control deslizante horizontal - Mover el pulgar activo hacia la Izquierd msgid "Horizontal slider - Move active thumb Right" msgstr "Control deslizante horizontal - Mover el pulgar activo hacia la Derecha" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:238 -msgid "Horizontal slider - Move current thumb Left" -msgstr "Control deslizante horizontal - Mover el pulgar actual hacia la Izquierda" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:239 -msgid "Horizontal slider - Move current thumb Right" -msgstr "Control deslizante horizontal - Mover el pulgar actual hacia la Derecha" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:236 -msgid "Horizontal slider - Set left thumb as active" -msgstr "Control deslizante horizontal - Establecer el pulgar izquierdo como activo" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:236 -msgid "Horizontal slider - Set left thumb to current thumb" -msgstr "Control deslizante horizontal - Establecer el pulgar izquierdo en el pulgar actual" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:237 -msgid "Horizontal slider - Set right thumb as active" -msgstr "Control deslizante horizontal - Establecer el pulgar derecho como activo" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:237 -msgid "Horizontal slider - Set right thumb to current thumb" -msgstr "Control deslizante horizontal - Establecer el pulgar derecho en el pulgar actual" - #: src/libslic3r/PrintConfig.cpp:279 msgid "Horizontal width of the brim that will be printed around each object on the first layer." msgstr "Ancho horizontal del borde que se imprimirá alrededor de cada objeto en la primera capa." @@ -4055,7 +4069,7 @@ msgstr "Si está habilitado, el botón de la barra lateral ocultable aparecerá msgid "If enabled, the command line arguments are sent to an existing instance of GUI PrusaSlicer, or an existing PrusaSlicer window is activated. Overrides the \"single_instance\" configuration value from application preferences." msgstr "Si está habilitado, los argumentos de la línea de comando se envían a una instancia existente de GUI PrusaSlicer, o se activa una ventana de PrusaSlicer existente. Anula el valor de configuración \"single_instance\" de las preferencias de la aplicación." -#: src/slic3r/GUI/Preferences.cpp:278 +#: src/slic3r/GUI/Preferences.cpp:294 msgid "If enabled, the descriptions of configuration parameters in settings tabs wouldn't work as hyperlinks. If disabled, the descriptions of configuration parameters in settings tabs will work as hyperlinks." msgstr "Si está habilitado, las descripciones de los parámetros de configuración en las pestañas de configuración no funcionarán como hipervínculos. Si está deshabilitado, las descripciones de los parámetros de configuración en las pestañas de configuración funcionarán como hipervínculos." @@ -4335,10 +4349,6 @@ msgstr "Info" msgid "Information" msgstr "Información" -#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:547 -msgid "Infornation" -msgstr "Información" - #: src/libslic3r/PrintConfig.cpp:1101 msgid "Inherits profile" msgstr "Hereda el perfil" @@ -4355,6 +4365,11 @@ msgstr "Tiempo de exposición inicial" msgid "Initial layer height" msgstr "Altura de la capa inicial" +#: src/slic3r/GUI/Field.cpp:269 +#, possible-c-format +msgid "Input value is out of range\nAre you sure that %s is a correct value and that you want to continue?" +msgstr "El valor introducido está fuera de rango\n¿Está seguro de que %s es un valor correcto y que deseas continuar?" + #: src/slic3r/GUI/Field.cpp:252 src/slic3r/GUI/Field.cpp:1370 msgid "Input value is out of range" msgstr "El valor introducido está fuera de rango" @@ -4363,6 +4378,10 @@ msgstr "El valor introducido está fuera de rango" msgid "Inspect / activate configuration snapshots" msgstr "Inspeccionar / activar instantáneas de configuración" +#: src/slic3r/Utils/PresetUpdater.cpp:120 +msgid "install" +msgstr "instalar" + #: src/slic3r/GUI/ObjectDataViewModel.cpp:62 #: src/slic3r/GUI/ObjectDataViewModel.cpp:218 #, possible-c-format @@ -4432,6 +4451,10 @@ msgstr "Penetración inválida de la cabeza" msgid "invalid header or archive is corrupted" msgstr "encabezado inválido o archivo está dañado" +#: src/slic3r/GUI/Field.cpp:375 +msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\"" +msgstr "Formato de entrada inválido. Vector esperado de dimensiones en el siguiente formato: \"%1%\"" + #: src/slic3r/GUI/Field.cpp:243 src/slic3r/GUI/Field.cpp:274 #: src/slic3r/GUI/Field.cpp:1358 src/slic3r/GUI/GUI_ObjectLayers.cpp:413 msgid "Invalid numeric input." @@ -4521,21 +4544,6 @@ msgstr "Salta a la altura %s\no Fija el modo regla" msgid "Jump to height %s\nSet ruler mode\nor Set extruder sequence for the entire print" msgstr "Salta a la altura %s\nFija el modo regla\no Fija la secuencia del extrusor para toda la impresión" -#: src/slic3r/GUI/DoubleSlider.cpp:1075 -#, possible-c-format -msgid "Jump to height %s or Set extruder sequence for the entire print" -msgstr "Salta a la altura %s o Fija la secuencia del extrusor para toda la impresión" - -#: src/slic3r/GUI/DoubleSlider.cpp:1222 -#, possible-c-format -msgid "Jump to height %s or Set ruler mode" -msgstr "Salta a la altura %s o Fija el modo regla" - -#: src/slic3r/GUI/DoubleSlider.cpp:1220 -#, possible-c-format -msgid "Jump to height %s Set ruler mode\n or Set extruder sequence for the entire print" -msgstr "Salta a la altura %s Fija el modo regla\n o Fija la secuencia del extrusor para toda la impresión" - #: src/slic3r/GUI/DoubleSlider.cpp:1071 src/slic3r/GUI/DoubleSlider.cpp:1852 msgid "Jump to move" msgstr "Saltar al movimiento" @@ -4646,10 +4654,6 @@ msgstr "Capas y perímetros" msgid "Layers and Perimeters" msgstr "Capas y Perímetros" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:225 -msgid "Layers Slider" -msgstr "Deslizador de Capas" - #: src/slic3r/GUI/OptionsGroup.cpp:293 msgctxt "Layers" msgid "Bottom" @@ -4695,10 +4699,6 @@ msgstr "Botón izquierdo del ratón:" msgid "Left View" msgstr "Vista izquierda" -#: src/slic3r/GUI/GUI_Preview.cpp:339 -msgid "Legend" -msgstr "Leyenda" - #: src/slic3r/GUI/GUI_Preview.cpp:1480 msgid "Legend/Estimated printing time" msgstr "Leyenda/Tiempo de impresión estimado" @@ -5355,6 +5355,10 @@ msgstr "mm (cero para deshabilitar)" msgid "mm or %" msgstr "mm o %" +#: src/libslic3r/PrintConfig.cpp:193 +msgid "mm or % (zero to disable)" +msgstr "mm or % (cero para deshabilitar)" + #: src/libslic3r/PrintConfig.cpp:271 src/libslic3r/PrintConfig.cpp:645 #: src/libslic3r/PrintConfig.cpp:653 src/libslic3r/PrintConfig.cpp:662 #: src/libslic3r/PrintConfig.cpp:670 src/libslic3r/PrintConfig.cpp:697 @@ -5494,6 +5498,22 @@ msgstr "Mover el control deslizante activo hacia la Izquierda" msgid "Move active slider thumb Right" msgstr "Mover el control deslizante activo hacia la Derecha" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:220 +msgid "Move active thumb Down" +msgstr "Mover el pulgar activo hacia Abajo" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:241 +msgid "Move active thumb Left" +msgstr "Mover el pulgar activo hacia la Izquierda" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:242 +msgid "Move active thumb Right" +msgstr "Mover el pulgar activo hacia la Derecha" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:219 +msgid "Move active thumb Up" +msgstr "Mover el pulgar activo hacia Arriba" + #: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1219 msgid "Move clipping plane" msgstr "Mover plano de recorte" @@ -5502,14 +5522,6 @@ msgstr "Mover plano de recorte" msgid "Move current slider thumb Down" msgstr "Mover el control deslizante actual hacia Abajo" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:229 -msgid "Move current slider thumb Left" -msgstr "Mover el control deslizante actual hacia la Izquierda" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:230 -msgid "Move current slider thumb Right" -msgstr "Mover el control deslizante actual hacia la Derecha" - #: src/slic3r/GUI/KBShortcutsDialog.cpp:215 msgid "Move current slider thumb Up" msgstr "Mover el control deslizante actual hacia Arriba" @@ -5518,16 +5530,6 @@ msgstr "Mover el control deslizante actual hacia Arriba" msgid "Move drainage hole" msgstr "Mover orificio de drenaje" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:209 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:213 -msgid "Move horizontal slider current thumb Left" -msgstr "Mover el control deslizante horizontal hacia la Izquierda" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:210 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:214 -msgid "Move horizontal slider current thumb Right" -msgstr "Mover el control deslizante horizontal hacia la Derecha" - #: src/slic3r/GUI/GLCanvas3D.cpp:3810 msgid "Move Object" msgstr "Mover Objeto" @@ -5556,16 +5558,6 @@ msgstr "Mover la selección 10 mm en dirección Y positiva" msgid "Move support point" msgstr "Mover punto de soporte" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:208 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:212 -msgid "Move vertical slider current thumb Down" -msgstr "Mover el control deslizante vertical hacia Abajo" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:211 -msgid "Move vertical slider current thumb Up" -msgstr "Mover el control deslizante vertical hacia Arriba" - #: src/slic3r/GUI/GCodeViewer.cpp:2492 msgid "Movement" msgstr "Movimiento" @@ -5955,6 +5947,14 @@ msgstr "Modo de capa única" msgid "One or more object were assigned an extruder that the printer does not have." msgstr "Uno o más objetos fueron asignados a un extrusor no existente." +#: src/slic3r/GUI/GUI_App.cpp:1784 +msgid "Ongoing uploads" +msgstr "Cargas en curso" + +#: src/libslic3r/Print.cpp:1269 +msgid "Only a single object may be printed at a time in Spiral Vase mode. Either remove all but the last object, or enable sequential mode by \"complete_objects\"." +msgstr "Solo se puede imprimir un objeto a la vez en el modo Vaso en espiral. Elimina todos menos el último objeto o habilita el modo secuencial en \"complete_objects\"." + #: src/libslic3r/PrintConfig.cpp:2045 src/libslic3r/PrintConfig.cpp:2840 msgid "Only create support if it lies on a build plate. Don't create support on a print." msgstr "Solo crear soportes si está en contacto con la plataforma. No crea soporte en la impresión." @@ -6307,11 +6307,6 @@ msgstr "Pausar impresión (\"%1%\")" msgid "Pause Print G-code" msgstr "Pausar Código G de Impresión" -#: src/slic3r/GUI/GLCanvas3D.cpp:940 src/slic3r/GUI/GLCanvas3D.cpp:949 -#: src/slic3r/GUI/GLCanvas3D.cpp:988 -msgid "Pause print or custom G-code" -msgstr "Pausar impresión o código G personalizado" - #: src/libslic3r/PrintConfig.cpp:1147 msgid "Percent of a flow rate relative to object's normal layer height." msgstr "Porcentaje de caudal relativo a la altura normal de la capa del objeto." @@ -6360,9 +6355,9 @@ msgstr "Impresoras físicas" msgid "Pick another vendor supported by %s" msgstr "Elije otro proveedor compatible con% s" -#: src/libslic3r/PrintConfig.cpp:66 -msgid "Picture sizes to be stored into a .gcode and .sl1 files" -msgstr "Tamaños de imagen para almacenar en un archivo .gcode y .sl1" +#: src/libslic3r/PrintConfig.cpp:67 +msgid "Picture sizes to be stored into a .gcode and .sl1 files, in the following format: \"XxY, XxY, ...\"" +msgstr "Tamaños de imagen para almacenar en archivos .gcode y .sl1, en el siguiente formato: \"XxY, XxY, ...\"" #: src/libslic3r/PrintConfig.cpp:2822 msgid "Pillar connection mode" @@ -6485,11 +6480,7 @@ msgid "Preset \"%1%\" is not compatible with the new printer profile and it has msgstr "El ajuste preestablecido \"%1%\" no es compatible con el nuevo perfil de impresora y tiene los siguientes cambios sin guardar:" #: src/slic3r/GUI/SavePresetDialog.cpp:136 -msgid "Preset with name \"%1%\" already exists and is imcopatible with selected printer." -msgstr "El ajuste predeterminado con el nombre \"%1%\" ya existe y no es compatible con la impresora seleccionada." - -#: src/slic3r/GUI/SavePresetDialog.cpp:136 -msgid "Preset with name \"%1%\" already exists and is incopatible with selected printer." +msgid "Preset with name \"%1%\" already exists and is incompatible with selected printer." msgstr "El ajuste predeterminado con el nombre \"%1%\" ya existe y es incompatible con la impresora seleccionada." #: src/slic3r/GUI/SavePresetDialog.cpp:148 @@ -6501,6 +6492,10 @@ msgctxt "PresetName" msgid "Copy" msgstr "Copiar" +#: src/slic3r/GUI/GLCanvas3D.cpp:3990 +msgid "Press %1%left mouse button to enter the exact value" +msgstr "Presiona %1% botón izquierdo del ratón para introducir el valor exacto" + #: src/slic3r/GUI/KBShortcutsDialog.cpp:157 msgid "Press to activate deselection rectangle" msgstr "Presionar para activar el rectángulo de deselección" @@ -6719,6 +6714,10 @@ msgstr "PrusaSlicer detectó el almacenamiento de certificados SSL del sistema e msgid "PrusaSlicer GUI initialization failed" msgstr "Hubo un error al abrir el GUI de PrusaSlicer" +#: src/slic3r/GUI/GUI_App.cpp:586 +msgid "PrusaSlicer has encountered a localization error. Please report to PrusaSlicer team, what language was active and in which scenario this issue happened. Thank you.\n\nThe application will now terminate." +msgstr "PrusaSlicer ha encontrado un error de localización. Por favor, informa al equipo de PrusaSlicer qué idioma estaba activo y en qué escenario ocurrió este problema. Gracias.\n\nLa aplicación terminará ahora." + #: src/slic3r/GUI/AboutDialog.cpp:285 msgid "PrusaSlicer is based on Slic3r by Alessandro Ranellucci and the RepRap community." msgstr "PrusaSlicer está basado en Slic3r de Alessandro Ranellucci y la comunidad RepRap." @@ -7737,10 +7736,6 @@ msgstr "Sec." msgid "Sequential printing" msgstr "Impresión secuencial" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:235 -msgid "Sequential Slider" -msgstr "Deslizador secuencial" - #: src/slic3r/GUI/Preferences.cpp:230 msgid "Sequential slider applied only to top layer" msgstr "Deslizador secuencial aplicado solo a la capa superior" @@ -7786,6 +7781,14 @@ msgstr "Fija la secuencia del extrusor para toda la impresión" msgid "Set extruder(tool) sequence" msgstr "Establecer secuencia extrusor(herramienta)" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:243 +msgid "Set left thumb as active" +msgstr "Establecer el pulgar izquierdo como activo" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:222 +msgid "Set lower thumb as active" +msgstr "Establecer el pulgar inferior como activo" + #: src/slic3r/GUI/KBShortcutsDialog.cpp:218 msgid "Set lower thumb to current slider thumb" msgstr "Coloca el pulgar inferior en el control deslizante actual" @@ -7819,6 +7822,10 @@ msgstr "Establecer Imprimible" msgid "Set Printable Instance" msgstr "Establecer Instancia imprimible" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:244 +msgid "Set right thumb as active" +msgstr "Establecer el pulgar derecho como activo" + #: src/slic3r/GUI/DoubleSlider.cpp:1836 msgid "Set ruler mode" msgstr "Establecer modo de regla" @@ -7887,6 +7894,10 @@ msgstr "Establecer No imprimible" msgid "Set Unprintable Instance" msgstr "Establecer Instancia No Imprimible" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:221 +msgid "Set upper thumb as active" +msgstr "Establecer el pulgar superior como activo" + #: src/slic3r/GUI/KBShortcutsDialog.cpp:217 msgid "Set upper thumb to current slider thumb" msgstr "Coloca el pulgar superior en el control deslizante actual" @@ -8225,10 +8236,6 @@ msgstr "Slic3r puede subir archivos de código G a un host de impresión. Este c msgid "Slic3r can upload G-code files to a printer host. This field should contain the API Key or the password required for authentication." msgstr "Slic3r puede subir archivos de código G a un host de impresión. Este campo debe contener la clave API o la contraseña requerida para la autenticación." -#: src/libslic3r/PrintConfig.cpp:100 -msgid "Slic3r can upload G-code files to a printer host. This field should contain the hostname, IP address or URL of the printer host instance." -msgstr "Slic3r puede subir archivos G-code a un host de impresión. Este campo debería contener el nombre de equipo, dirección IP o el URL de la instancia del host." - #: src/libslic3r/PrintConfig.cpp:100 msgid "Slic3r can upload G-code files to a printer host. This field should contain the hostname, IP address or URL of the printer host instance. Print host behind HAProxy with basic auth enabled can be accessed by putting the user name and password into the URL in the following format: https://username:password@your-octopi-address/" msgstr "Slic3r puede cargar archivos de código G a un host de impresión. Este campo debe contener el nombre de host, la dirección IP o la URL de la instancia de host de la impresora. Se puede acceder al host de impresión mediante un HAProxy con la autenticación básica habilitada ingresando el nombre de usuario y la contraseña en la URL en el siguiente formato: https://nombredeusuario:contraseña@su-dirección-de-octopi /" @@ -8631,6 +8638,10 @@ msgstr "Archivo STL exportado a %s" msgid "Stop at height" msgstr "Parar en altura" +#: src/slic3r/GUI/GUI_App.cpp:1781 +msgid "Stop them and continue anyway?" +msgstr "¿Detenerlos y continuar de todos modos?" + #: src/slic3r/GUI/PhysicalPrinterDialog.cpp:295 msgid "Success!" msgstr "¡Éxito!" @@ -8767,10 +8778,6 @@ msgstr "Soporta modo silencioso" msgid "Supports work better, if the following feature is enabled:\n- Detect bridging perimeters" msgstr "Los soportes funcionan mejor si la siguiente característica está habilitada:\n- Detectar perímetros con puentes" -#: src/slic3r/GUI/DoubleSlider.cpp:1824 -msgid "Supprese show the ruler" -msgstr "Suprimir el mostrar la regla" - #: src/slic3r/GUI/Preferences.cpp:104 msgid "Suppress \" - default - \" presets" msgstr "Suprima los ajustes iniciales \"- predeterminado -\"" @@ -8985,6 +8992,18 @@ msgstr "Los siguientes modelos de impresoras FFF no tienen filamento seleccionad msgid "The following presets were modified:" msgstr "Los siguientes ajustes fueron modificados:" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:253 +msgid "The following shortcuts are applicable in G-code preview when the horizontal slider is active" +msgstr "Los siguientes atajos son aplicables en la vista previa del código G cuando el control deslizante horizontal está activo" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:237 +msgid "The following shortcuts are applicable in G-code preview when the vertical slider is active" +msgstr "Los siguientes atajos son aplicables en la vista previa del código G cuando el control deslizante vertical está activo" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:179 +msgid "The following shortcuts are applicable when the specified gizmo is active" +msgstr "Los siguientes atajos son aplicables cuando el gizmo especificado está activo" + #: src/slic3r/GUI/ConfigWizard.cpp:2275 msgid "The following SLA printer models have no materials selected:" msgstr "Los siguientes modelos de impresoras SLA no tienen filamento seleccionado:" @@ -9021,6 +9040,10 @@ msgstr "La distancia máxima entre dos pilares par que se unan entre si. Un valo msgid "The max length of a bridge" msgstr "La longitud máxima de un puente" +#: src/libslic3r/PrintConfig.cpp:190 +msgid "The maximum detour length for avoid crossing perimeters. If the detour is longer than this value, avoid crossing perimeters is not applied for this travel path. Detour length could be specified either as an absolute value or as percentage (for example 50%) of a direct travel path." +msgstr "La longitud máxima del desvío para evitar cruzar perímetros. Si el desvío es más largo que este valor, el evitar cruzar perímetros no se aplica para esta ruta de viaje. La longitud del desvío se puede especificar como valor absoluto o como porcentaje (por ejemplo, 50%) de un desplazamiento directo." + #: src/libslic3r/PrintConfig.cpp:2878 msgid "The minimum distance of the pillar base from the model in mm. Makes sense in zero elevation mode where a gap according to this parameter is inserted between the model and the pad." msgstr "La distancia mínima del modelo a la base de pilares en mm. Tiene sentido en el modo de cero elevación donde hay un hueco de acuerdo a cuando este parámetro se introduce entre el modelo y el pad." @@ -9029,6 +9052,14 @@ msgstr "La distancia mínima del modelo a la base de pilares en mm. Tiene sentid msgid "The name cannot be empty." msgstr "El nombre no puede estar vacío." +#: src/slic3r/GUI/SavePresetDialog.cpp:152 +msgid "The name cannot end with space character." +msgstr "El nombre no puede terminar con un carácter de espacio." + +#: src/slic3r/GUI/SavePresetDialog.cpp:147 +msgid "The name cannot start with space character." +msgstr "El nombre no puede empezar con un carácter de espacio." + #: src/libslic3r/PrintConfig.cpp:219 msgid "The number of bottom solid layers is increased above bottom_solid_layers if necessary to satisfy minimum thickness of bottom shell." msgstr "El número de capas sólidas en la base se incrementa por encima de bottom_solid_layers si es necesario para asegurar un espesor mínimo en la pared de inferior." @@ -9130,10 +9161,6 @@ msgstr "La velocidad para las retracciones (solo se aplica al motor del extrusor msgid "The Spiral Vase mode requires:\n- one perimeter\n- no top solid layers\n- 0% fill density\n- no support material\n- Ensure vertical shell thickness enabled\n- Detect thin walls disabled" msgstr "El modo Vaso Espiral necesita:\n-un perímetro\n-cero capas de tapa superior\n-0% densidad de relleno\n-sin soportes\n-Comprueba que está activado el espesor de pared vertical\n-Desactiva la detección de paredes finas" -#: src/libslic3r/Print.cpp:1263 -msgid "The Spiral Vase option can only be used when printing a single object." -msgstr "La opción Vaso en espiral solo puede ser usada cuando se imprime un solo objeto." - #: src/libslic3r/Print.cpp:1270 msgid "The Spiral Vase option can only be used when printing single material objects." msgstr "La opción Vaso en espiral solo puede ser usada al imprimir objetos de un solo material." @@ -9161,6 +9188,10 @@ msgstr "Los ajustes proporcionados causarán una impresión vacía." msgid "The thickness of the pad and its optional cavity walls." msgstr "El grosor de las pads y sus paredes de cavidad opcionales." +#: src/slic3r/GUI/GUI_App.cpp:1781 +msgid "The uploads are still ongoing" +msgstr "Las subidas aún están en curso" + #: src/libslic3r/PrintConfig.cpp:2053 msgid "The vertical distance between object and support material interface. Setting this to 0 will also prevent Slic3r from using bridge flow and speed for the first object layer." msgstr "La distancia vertical entre el objeto y la interfaz del material de soporte. Establecer esto en 0 también evitará que Slic3r use el flujo y la velocidad del puente para la primera capa de los objetos." @@ -9314,9 +9345,9 @@ msgstr "Esta característica permite combinar el relleno y acelerar la impresió msgid "This feature allows to force a solid layer every given number of layers. Zero to disable. You can set this to any value (for example 9999); Slic3r will automatically choose the maximum possible number of layers to combine according to nozzle diameter and layer height." msgstr "Esta característica permite forzar una capa sólida en cada número de capas. Cero para deshabilitar. Puede establecer esto en cualquier valor (por ejemplo, 9999); Slic3r seleccionará automáticamente la cantidad máxima posible de capas para combinar según el diámetro de la boquilla y la altura de la capa." -#: src/libslic3r/PrintConfig.cpp:1910 -msgid "This feature will raise Z gradually while printing a single-walled object in order to remove any visible seam. This option requires a single perimeter, no infill, no top solid layers and no support material. You can still set any number of bottom solid layers as well as skirt/brim loops. It won't work when printing more than an object." -msgstr "Esta función aumentará Z gradualmente mientras imprime un objeto de pared simple para eliminar cualquier costura visible. Esta opción requiere un perímetro único, sin relleno, sin capas sólidas superiores y sin material de soporte. Todavía puede establecer cualquier cantidad de capas sólidas inferiores, así como bucles de falda / balsa. No funcionará al imprimir más de un objeto." +#: src/libslic3r/PrintConfig.cpp:1995 +msgid "This feature will raise Z gradually while printing a single-walled object in order to remove any visible seam. This option requires a single perimeter, no infill, no top solid layers and no support material. You can still set any number of bottom solid layers as well as skirt/brim loops. It won't work when printing more than one single object." +msgstr "Esta función aumentará Z gradualmente mientras imprimes un objeto de pared simple para eliminar cualquier costura visible. Esta opción requiere un perímetro único, sin relleno, sin capas sólidas superiores y sin material de soporte. Puedes establecer cualquier cantidad de capas sólidas inferiores, así como los bucles de falda/balsa. No funcionará al imprimir más de un objeto." #: src/slic3r/GUI/Plater.cpp:2329 msgid "This file cannot be loaded in a simple mode. Do you want to switch to an advanced mode?" @@ -9395,10 +9426,6 @@ msgstr "Esta es la aceleración que su impresora usará para la primera capa. Es msgid "This is the acceleration your printer will use for infill. Set zero to disable acceleration control for infill." msgstr "Esta es la aceleración que su impresora usará para el relleno. Establezca con el valor cero para deshabilitar el control de aceleración para el relleno." -#: src/libslic3r/PrintConfig.cpp:1508 -msgid "This is the acceleration your printer will use for perimeters. A high value like 9000 usually gives good results if your hardware is up to the job. Set zero to disable acceleration control for perimeters." -msgstr "Esta es la aceleración que su impresora usará para los perímetros. Un valor alto como 9000 generalmente da buenos resultados si su hardware está a la altura del trabajo. Establezca con el valor cero para deshabilitar el control de aceleración para los perímetros." - #: src/libslic3r/PrintConfig.cpp:1582 msgid "This is the acceleration your printer will use for perimeters. Set zero to disable acceleration control for perimeters." msgstr "Esta es la aceleración que usará su impresora para los perímetros. Establezca con el valor cero para deshabilitar el control de aceleración de los perímetros." @@ -9575,10 +9602,6 @@ msgstr "Para usar un archivo CA personalizado, importa tu archivo CA al Almacén msgid "Toggle %c axis mirroring" msgstr "Activar reflejo del eje %c" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:215 -msgid "Toggle vertical slider one layer mode ON/OFF" -msgstr "Activar/Desactivar el modo de una capa del control deslizante vertical" - #: src/libslic3r/miniz_extension.cpp:93 msgid "too many files" msgstr "demasiados archivos" @@ -9836,11 +9859,6 @@ msgstr "Selección no soportada" msgid "up to" msgstr "hasta" -#: src/slic3r/GUI/GLCanvas3D.cpp:961 -#, possible-c-format -msgid "up to %.2f mm" -msgstr "hasta %.2f mm" - #: src/slic3r/GUI/UpdateDialogs.cpp:38 msgid "Update available" msgstr "Actualización disponible" @@ -9890,10 +9908,6 @@ msgstr "Capa superior" msgid "Use another extruder" msgstr "Usar otro extrusor" -#: src/slic3r/GUI/GLCanvas3D.cpp:3959 -msgid "Use CTRL+left mouse key to enter text edit mode:" -msgstr "Usar CTRL + clic izquierdo del ratón para entrar al modo de edición de texto:" - #: src/slic3r/GUI/Preferences.cpp:220 msgid "Use custom size for toolbar icons" msgstr "Usar tamaño personalizado para los iconos de la barra de herramientas" @@ -10065,13 +10079,9 @@ msgstr "versión" msgid "Vertical shells" msgstr "Carcasas verticales" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:234 -msgid "Vertical slider - Add color change marker for current layer" -msgstr "Control deslizante vertical - Añadir marcador de cambio de color para la capa actual" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:235 -msgid "Vertical slider - Delete color change marker for current layer" -msgstr "Control deslizante vertical - Eliminar marcador de cambio de color para la capa actual" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:237 +msgid "Vertical Slider" +msgstr "Control Deslizante Vertical" #: src/slic3r/GUI/KBShortcutsDialog.cpp:208 #: src/slic3r/GUI/KBShortcutsDialog.cpp:212 @@ -10085,30 +10095,6 @@ msgstr "Control deslizante vertical - Mover el pulgar activo hacia Abajo" msgid "Vertical slider - Move active thumb Up" msgstr "Control deslizante vertical - Mover el pulgar activo hacia Arriba" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:231 -msgid "Vertical slider - Move current thumb Down" -msgstr "Control deslizante vertical - Mover el pulgar actual hacia Abajo" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:230 -msgid "Vertical slider - Move current thumb Up" -msgstr "Control deslizante vertical - Mover el pulgar actual hacia Arriba" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:233 -msgid "Vertical slider - Set lower thumb as active" -msgstr "Control deslizante vertical - Establecer el pulgar inferior como activo" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:233 -msgid "Vertical slider - Set lower thumb to current thumb" -msgstr "Control deslizante vertical - Establecer el pulgar inferior en el pulgar actual" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:232 -msgid "Vertical slider - Set upper thumb as active" -msgstr "Control deslizante vertical - Establecer el pulgar superior como activo" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:232 -msgid "Vertical slider - Set upper thumb to current thumb" -msgstr "Control deslizante vertical - Establecer el pulgar superior en el pulgar actual" - #: src/slic3r/GUI/GUI_Preview.cpp:265 src/slic3r/GUI/GUI_Preview.cpp:271 msgid "View" msgstr "Vista" @@ -10289,14 +10275,6 @@ msgstr "Ancho de los palitos de apoyo que conectan la pieza y la base generada." msgid "Width of the display" msgstr "Ancho de la pantalla" -#: src/slic3r/GUI/PresetHints.cpp:47 -msgid "will always run at %1%%%" -msgstr "siempre funcionará al %1%%%" - -#: src/slic3r/GUI/PresetHints.cpp:54 -msgid "will be turned off." -msgstr "será apagada." - #: src/libslic3r/PrintConfig.cpp:2584 msgid "Will inflate or deflate the sliced 2D polygons according to the sign of the correction." msgstr "Aumentará o reducirá los polígonos 2D laminados de acuerdo con el signo de la corrección." @@ -10456,6 +10434,10 @@ msgstr "No puedes cargar un proyecto SLA con varias piezas en la base" msgid "You cannot use non-uniform scaling mode for multiple objects/parts selection" msgstr "No puedes usar el modo de escala no uniforme para la selección de múltiples objetos/partes" +#: src/slic3r/GUI/NotificationManager.hpp:459 +msgid "You have just added a G-code for color change, but its value is empty.\nTo export the G-code correctly, check the \"Color Change G-code\" in \"Printer Settings > Custom G-code\"" +msgstr "Acabas de añadir un código G para el cambio de color, pero su valor está vacío.\nPara exportar el código G correctamente, marca \"Código G Cambio de Color\" in \"Configuración de la Impresora > Código G Personalizado\"" + #: src/slic3r/GUI/SavePresetDialog.cpp:277 msgid "You have selected physical printer \"%1%\" \nwith related printer preset \"%2%\"" msgstr "Ha seleccionado una impresora física \"%1%\" \ncon preajuste de impresora relacionado \"%2%\"" diff --git a/resources/localization/fr/PrusaSlicer.mo b/resources/localization/fr/PrusaSlicer.mo index 05fe81aab0b3976a35ba3775957a427e9405ed8b..696080f9b1c6f062fbe0d71c9f709f33d53a377c 100644 GIT binary patch delta 60448 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 WDt0dB>gY6k?{bYdU)kjv_rCztBG*y? delta 57151 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

>*T^ z)+=bsvL|Y}EyQBD1Rvo=tjh?G7UE@u$zy{4Z$g$V!d_2(YSEzgIp^*E(3bT_#e!Z8 z?N_iYCMsc5RXbcV=zor%hQqnwJSqw6mkRoy*|y+8>WNF+7JCXKxIu+7bPOw%RTlG` zQRRaEpC2AXJ!nPwp#KfYr3!Z6JQaif?|`hscbp%n6!dmsIHIyO>_$E4>ncJ2N2Pur z*|N!6HRz3|eIgFV1l5B6uU3!49n`Z_4|+%NBL0bA)ChVvaAeJ(_bDA|UyGd+Pt^|k zfAQd19h<5-b?K14e2ApQfOVaF$% z>Rs>(wX>ycXy!w8s0u0>KSe!wAZEmc7_Ifchk`D=j#{t(qAqyrjN8bTT?*8v)@W3u z1~_M8B=wD06i=b94>q>@CPr=LIZz+R3!x&>82!Kh*OfwM8iu3R`4V@+R@4smojZQY z9e;!xf!D+$mkD!HErVKyol#qIPt?XW0yTA0Fb6KilK5Q{*1xj&Jq=}O2sE>GSst5E zUxJ#N=NJoZh?0^-?XYeFkbkM^O*Hgvy0?sEB84$@_={Q&C5SDpW$lJSE!mV8mDDJ+k=z8z{S?t;pNKB$}-fm$64 zP*WS;K|x7zz%|^!k<{;@vb9@Vd&^Bjjo^cJHWiss9nOwbF&`>&{ZXr8qN^`KUANWM zkDvx}5ldPU50uaC-^R;Xn= z6tz5Oq6WIj9Y5lyPc@(525yhGpG)|&~aUutcyK314dFWh?=|lsFAfoeW2)s8u@V4TrR_C z+>ct0zdOB8>_M4O*~ zP-f_E7I!vseuj#`ROdG5CFh&&tbdIlvPaPW$EIrHW$JHHTjs@{HlpjO5q{9iLR$fK zybCVJ-l(4=l7D8$D`E}mpP;622Wp`EF$eyNxiBK!+cttcr~}n74}OOF0bwx?kKh7S z2%Gk`)zAmE*DpmyBVgYR69PQkW>d^0~RrD5hpL_#t-zbKPNEtKiRiU68)kbCc zaMVsV4>fmRVeHcXba2jfk=A%M=5clGB)P)O%+efk8sI9iph@k%;Ao>XPNh*@0*7db9h<#DZ zaG1)CH$77CuD1-JYS|YOhcqFk+3d zxle{|si()TI21<(_`_^0PQA-`i`+8Q@=P~@kyoJb@r0oN*XP!v9`rXVnO>oiDKOEJ zC=P1N&4dbl6;x<|;{9e>o^*prJli!=9+Ud^hSfc?XpvG4pIg>5mHa6s(Rb@h(0>?QECk+m3n- z<55rYgKGR{I}|6$a|blG_m^_snp@iF~!GaA)i2zCDssDTbgy)9>;A`||Sg68}vYPmdd z2NJHZKRPLdpVL0lnRumrFYqOHq&>9C9`p%nY8GH2T#5zoEVjXj)%FEOJJdigARP#M z|D&K#MXa$oib9RBE|$V(s2rGsIdLN@5*JZB;X~|>@z>gqTmw<7XFF;tzC)dV8Fl?* zRHV{;rMG05pXDg1p}MmXDk4T zOvQY-7L`*Mk^lZ9Sx!N7a%a803!bBToN9wbA|EE8{vqnTil_(FL(O3a%#IUKTka;T zfxlxT%(u}#(2T~7)c2z9-+2@3KR1Qp6#CPVuP_VsOk3>B=JKeG!`o^%NQxRsHB>}8 zqNZv*YPC#9CD|6#IzNKS_7kWM-$ixwH7eqf+gSgFDdgE^$yK3Q5(!g)Qyi}2+yE$;3BFc_fVmayUU)Ja#z@ToSp`aBtPneVyF&O zMy=l_I0`qS_KEyo+j$F7JKtK=gSVlsJAj(9)0h{pUh4LsWWS3Cc`xav``yTs5(;Sr(vrrLOhRTV(*aEMimRpIvmV6aZ=k-FZs_;Y# zdf+ltQXE1(@FJ?mZ&3R}l6|%jSk#D?qh2mMQK34DnydezlJQ?uL{fia?J=nRq7LdlpP(W* z&b4nqJ@6Q6s?R##sGa@C%l@t1pb%=WuZeo_5bT7rQAzg_m7JXp+fLUTwV`Z8Md}JF z32$O8e28VR#1Z>JW+3`Wit6wI^uPbRL_tY%AGKVbIb$ES(5J)Zw3oyBxBxW;4^Sb0 z?u`1*>Wxq%9*gSO3{>*YM@9Hs)XsSRJJ!EKb&m#xJn=C*kO>vyBB*Sx=i2+Dme&+i z)-Q4G8&KCDMn&)pYRcYYHB9%tO-)A(QXh$a2fq*7182|>$$>SP2YYe!`oCFK1GT)vdnst0o<@cG z4(h@LKUs)Mqmrf?YR(#>M$#2E@(HM9+TiNPP@%tvx-N9e?w1%fkn*VI+5wAb{m-HB zfQAzoiMvkQ11>qAqq02N&vv8os1Wu>P1Q7Pf_qWRE6Ev)WJy$rJD>(Q4eQ`)tcuUE zwch`w&)S?WMD=VRYKwh{%GStpc7qtygKMIeXBX6tHxjkMtVErE67|5Vs9gC6l|w1d z+e@f0s=YpDY*Ok36%@OP;&4?gah6ihcFZp#LjZAKkSGZMqlq|JjcB zsL1?s-#UKtKI>m|7kprIo*TXj zS)M>eQ#T^eHqo6syi&|!}pV);(um<&}SQ}TMdj16Uj!65| z)_*=!hwGz8I0zNNX{eXbPuL98KC_PX!P3;XBJU2q|EHi(X8hZhPZVlzE{4kXO868z zV-{@o+?MGORCaGfU4PWoPomcSO$=eef9$?VF){ThS1*G8zyDd4LU#_-#s#p#>~eEHIn=R7L(S5Z6VTVy0&zE>83)~Jo94_3g#*b9TNEl2vIa^rLK|NMVG z1#KLgP@(-670L_P5%0P7+HY*`+M`A`5X<8*)V^^Lb^Xt%x9Tm7h4J3n>pd~*zNt~k znis=*a8(M*fflHBKM1w8EqBe(;!y z8o(XY6xN{ItFUxL$Udk<@ZUdbNy9@Lltk46A%D5_LVX}vfZEZP<1^ff+JIIDL;hRr z9IB%gLLooPdti``O~b9U&x{rFBC%rZkpI14N1V>_qga>rhH=9of9_VsHP2%y4g}+c zyvkS(XX99GjA`PB{JHCi>fk_3h+$M{r@Hp#sEDq^82kZs-#4g87E2KFr@VTYf=+DZ z8iqKhp^{{oa~&q3z8&=vI*Pi{byT)LMMWkNYf8j6? z<8a@fusX*tM1}lsNHb**c~_{%i4OTMz2Bo*|J`UvlOyDR9X1BHP(O^vcVOKyZ(-{VkIaS_+xJM4k0^M?Gtik&who}Q}fwe z#m*n{e=Q~oHRo4Q7rsLNwHj|(0b6d{3WmHrwEqvA|a{~xh=jLWGnDjf2EjlWEc zMQRmRqCIhukpJPcA@DMo)7@;_3Iz%JC!;%O{V%t9Hr zc*x&L%c62WGXB}vW+5yL6IyRN_H3Npnvv4}Cmx~Rwr$AUhFRO$j&=b{Qt#hBdg|$G^HTg_a9Y-38*-$t4VwNV|zxOfWn4!MM}@vr`@ zfA#zy8bbK*09$r%2ikH>KPcq?<1!_%8W%(jwwF;4)JtnP?!(Vf%eeXwdzT!=I@E8w zdXb^_7Hop*P%G4y+-Ydo-rJ*S&<*FI-T`Y-Tjze%mYZx?$p4+q)c67QX{h~S5$gPX z*Z@zXURGI#+XKp>Udyd;B2GcAk`yECcBsba49Ne&)xC=Q16I%bXc$H zRJa-=F$%xOWcUCT+IN@;V~ylEkxhZxdP|J5w_}RY_Kpcxrl1c9ZBU`V|V& z`&XEi`c~9Vb{^AU>M{1wtsv?(+Z6S(nu>afZA8ua_o(%M4Hdz3WBDki&;L0oXk>d( zuhnB1gTZmOyo#ZwW(aCTQ&1gSh#%o5EQrrhp9iv!w_K@!S*TCOY`78A;Tczdfc3Th z6Hl<7wnxq7P}B#I>8MC7$4EShdMQ0XCD)jVmW=06bNV~#{r(aanZ%QXt=nileZmg|63sV~QRcn@`6$eAHCDLp?C%EL$}hun_fVXR}!>6OCvx4Zq-TcoTQbwjFQooRIgD z`oE~(_kA*#2V(j8A^#s7UGjx(K;0JDr`zlc83@PwE(&=gxo*_rkpB;l2A0?qtUz^q zJvPMMVG3F<3BI&Y=0Wv*IJU$&7#E+Q=I#|Li4rWe&wSZXk*bY4-T^hjeyFTpgZgZE z5-Z?y)W-GUGV5TtF$HZPmr%*|247&R<@VX_gBA9GrdX2p?xr_TDbK);{Ts#ui*~9|vNUuPl2H z;xOu2*IDG2qBf?dsN^iV-X1stm4rWIe++G~x8o3Or1k#~g|-~1vC*btJr1XS5|wP# zHii8E27DvzLj4SCIThb*?}qXipL!Kk64ygbMH}phpP{zw3#h5OhT3ue##B7tdqqKW znq-U3O-}T)ACu7D3U$LCm=nXO4dp8=hKErddWD+vh^=OJ)P`0aHRr8Sxi$>7gDyt@ z`~NKz)Wf3~iKkE({)Nhoz&5)<4%9OI2oqx~RL8obIywUL;&fEf9zfmq7-qqrQ5|`T zx_^@Gtp7*~QQPfxSOrz@fFI%*RAly{_JMP*{sb3LkGmt}|9bukRL53h1nx(z`-2$5 z?@&p50{J}S-9mjLy0ar}NtJjPTPO_^P;>tE*Y>hGg1Yc5=D-K22PNNaNtO#W@;;~= zk3mhvc<1M+5zlk(LY;TP`Ae9BUItfC7rsFC_#G;A!96yT4^ZtXoM~NqCRC`iqpr{I z>K~%smgP{9sDm0&UGGj{tf3n)D%5K zbs+v;ORi+j?5L?Lj+&Y#uDuzOLt*bz3c7G8D(lCf9{2?+%hzK;Jc>E-IVyx1_gUy8 zQ4c7D>UdquiXBnQay;h2nW&xhAgaR`d|7`FDd>XGej8a1)SMP{^$Ms9YM`d11M0@z zQ5_$M>S!1>*I%Fpu-kb870KUF%kL#>0BH`eQ)>OEr=ZaM|NlmEv=%$Whs3$2JMe#n zodvH$K``qX5`^`>6n1-L=;I#mtAGzY}V4QLV zA`kFykb4dlDaBMjb6w77+MRNpBAvjNRlh6vd|-bgmML!tlI7tDd7i}A1Rp1v4Ty4A~h3(2igIw9{s zJOBcI*26YKn@D^RBo5Z{PiLOcrYor7f7h@LhWsxyBwuRYrJNtobUd-iSb0a>i&Lr2 zx?-?~^B+TEFWQ@??EzGzu%RC99^yp-&Z6K~{O07#YJ=qvJui6%djkJW>hn_{k_i2}p_)?oXEbwT1Hnbf#43CK^VyI6#zEDe_u-$bK25S3v46hq04EL@rfcfgAk zZ6djI)QrdSZ`vP99r#~W?Du-AYv7B9J98xk{8N8hKR^|AXT=%D1ULxd{#cI=w-w4w z#MWrTu8@o-HwE3Q#PWmm?~>`mc;YkgV|1AHntuzD?f89Y_&xa}tlePV5OyRtO|KE3M*Scf zPb4>%cohCsGV< zpW$~$O=>d8yZl-yg7j4M-#g(DMLf@XEvnu&Xg> zH)0W3ktFn6{EL7l1tZ)ml=Q5wPtq_Su?%b;J?@{#t)QkBL(~f!dO$>Q|Ll-pO-=O0 zw$X+>*Vyb74IuU+b|cyivL}fbL2u&EqS;e4>WjU|CeAT@BXay4gzYnI17f+U`-u2K zPB0Na4>}z!lL>Jr3M)ZW3~(C&@@jV|#cB8x@kJWqi&$tS9W)r=Vl4Ho!CzNQEgE)* zOJqF$D0Cm%i@IW9zQhjJlgZ=Eziq#pEmDpJRYn>@)KH z+xjGCQ@j~Fkw#bWy(s?+k1Y|h6toz*b>uGK*QYRmFLDF@ja*1Js(+n8YcPdS`8n5g zHugM&+$R5*VlK#lvi~1Rid;f}BY1?OR!lgAAw;f0u%5=eyti$|)_~wg;?q$F!^|S~ z8kps*>k29I0M0q^j6%KSMAj2Kpm}+VCogg`KOs0mvWNwl$ZA0H3MZP}qcl5;eFl;k z{Jk`L2HT%?8djt`wg8wEY)=}7OJm|97Zp2FH}wV^JeHgN^Mf_EAuKur+y(i1fG=T1 z2I8N`@}-xc1hCmOXs$bY0os|hfgYzIO`9gN<}ISF8YQS%`|G%BnKY0194l@N}kq>pvXA2L7pY5@IL(}((@Zm}D?U*Fr zeu&`Nkw%MXUWy^2i9f52?}ZI{f!es>_wNC8q9MPiWE)Arb_F%Y??>Sw9YXl||Kn`O zz{y`QL{_k?Zuq;2Z_WwXA{cH7dW^Na@mLK{2|e8oV4d{hZKUlD;=%j>rmzMJmBb~0 zuxT$r_yWUp1bY~aPj^%f;ypry6xUNrqc$WXsS`O&hcC7ke0(WVkp z$+RsbSV0rtLe`Z`4+`2r6p7`#Lcu>cHIj-jf=3x(A-RzJjMJLNBJ%O9NMDBV!nvQp zLehsgtIX}%5ltYj|Me~rH2-{5y2s?n?qs^b7X?gYYQ2#^N z@t*cg9xwLJgWvM9JH4$_;%>!`?@umV{-AX+?T9W-8pdEg7a6$cx^kgv0zNlhc&n81#+9wOKO1{y{| z(im%}K?G!d@n5CLKsU0Er*J7nzk+)b!r5pG;w>3?E3uB`Q>i(H|2VP5`0t|4z~zVI zXLx@_<%5jn)D5J064>DR*Q9tpp!x)J0TQW(wgOl?=a_=AUR>5DzZ>l5ij%~5)OV-R zB^o}9zYr@@hI)}`I9{Pf#E1c}>;@?hhHv57_@bNbX?WK%Sh)Cf-JZJQ^8P=K>Dqvhk4VPQWNz4w_k{U% znfyKSFJd3lA(Lq)AIJN!{iz>_ZAxA~;qov5{}G}snuZmKi^P#jQojPj^$C9dl9LNw z#*$n>(LJ;#;2rF;CPc5HAsG*50y+`(GssFBj3$2peO>0_hMB3>!i)FVR3gdf$b89b1?D866-So@F!@ zxv3mq;6ERXaMz^fB$&*qB;Nw~4aIi+ckwf{@PL9l>vhK0yKJi&>|NcN6*f>$$mGxK zB41;RD@RU*jZkwLOapp2up-qXxc;vJY)U~Z?9&9jG+WHhL-I3z3u5x|>{SY{Yi=@w zcmRzgejV+vyF5%@J_iiR5Ni9faA^Kju0Fjc5Cz#Jq#mHaovpJ!ba{WTLZ{r`3M`S^;^MC0@sO# zA?d;ZebEEt&WFXxXWGu{^>SW`Lq%eH(DXQkzu`Z?56L3@(KIPf(;?LT6jtlQf1H{_ zG+RP5H^c439wxqo*g7Q{0p>G<$Nv|F0HUWDWIw>wp)P92DEWB`-iPc}8uJ5)w!ExG zvdPQ0AlgvBj0Rc6+p(U+kd44Cfb$ss2Vft=ZlPC4w5Zg}^KWMg^ANa(|0o4N>alKs zMC2u6BEu;jf!>Dj4H{)qBl0fwEr{17_ACBBi;0$AKU>3 zaBIH~vj18TU87LGmzfu^38-z5j>l^X4-?}PbMAlK-L&v7*h=L10+DTyp3WQ^|He98 z4v_mE?%KpZCJ}&ZE*!70u1fv(Je>b*053xxOK>#)9~7M?`7*ka^)d1He?OGEc<}(e z#FBKP3iz8~I!Nva&8q4yqKo}r*1o#xnQ?b(-ZBX*ek?`qi4y@rVa`1pZhnf zEs#WFUx6eflkwvzxWOQa=*Kh@iOeCe)g|Z73E7s>XchT2Y$}Du?-754{2A{EI= zL*YLS?iYsHhVPW`e~C0FSOCzQx~r4K4TvuT@(~+}zZT+880I~EH>4k+*U7gPLT$DI zt`gvy5DUq3+Wafx-)X;8{NdDQJ_)(})%q5sOGwJEm#rg_0^m9Hva+;+>d&GV6t`6y^aArHLuKe7C8*8A`Y-DGffrdLpa1nH*o|Zy)`RAzAeOZO(UaP6 zEo7a@J*#BTsO`s4hrx6KTMp9ukahs~CQZU+Dlw6#iEovS;@hcp$>aZdl5>LToQnb4 zbdesL3*sj@k^4$AAA1|+kK?w_iLat;Gqwo0jgX6MVZbM`bBNsoI|j~3FrT4EiFr^5 zvDfAE-?;>nSiDN{PIl4@zXSF!C96#SZTvMfY(U{a$kP~ZEU`DJx3H_xg5*Sgrv5`} zo*^eP3cMd%6iohLgkka95YN2E#T;}UMU}DPQU}nN=wybONv;`IWCGaR=oSVlNd9s0 zX&90zU|&OLlM`7=t`oI0h_$2UDRd(nxFE0pLb6AlFCd$(jp6{+3nP9NePTxMxRo93)J^Z#vLe{Sxc{^^UD4c6+eV=lx4jEeN)d) zQoq17n7Ze&4Pj2u+WKm1==PiI`ZF-O!TM2=emO=iGi~_*J>U$s0ZNuLq0w3$yCX#D z=-0&e(Xc((Bjn%5PsM(L-AC**Y-QG0VXO+i1-{5**ze$)kN+IFJ{-?x8Je}scvs$U z55akaq)0SG0YH1uc7i~55j%mFWZj$M8W8q`co)8WLHIX@3ur^Z%ird^5U-}YwaA|% zb`{J`-Pln0Q;EGAy1ktO+=_rm6^c7j)Qy5%Sdn2m%u5V19)FLLORg^XDM~EsAKA=E zVg-nu!Op-I#$F-*ERBnW4V&45#3!;lf>{*Tz}BJQYvMI%(h*yjA}^Q-ZPJaQhBL%F z;I9)Ogg&adfiyWujbEEw!Zy|6Ww_qzr&9BZeBSyqV39I8CV2Uo?m85bD*7dW_rSe~{TN$} zVdS&^%tC<5LX-rk2*GXSznl{aUN)kE$SUHm zVCRJmDDf)rjKY4%Fe2N?kA){cy^iOExa9sfQ5&9T^2SP9hoapOHvy8t0M#jMpg5^r zA*96RYw?4~iBzFB4>dc8iwx1mEvUPu7y~;qCvCe0erzU9MK0*{ajeJWgo2m9=s>cV zrI>l_U4cqlA>Q^Dv1#PbDm%xh*r6v|zTjLqTC*zxJA|C#?88kn(aS+YP zO8;R1>Jiwl!8L%=bf*$3Pl3qy+GH}5zeuB&*z3d!f-lbwo1<^x=OOkSxlQ=1Xq-j7 z2lzhthv4}LdjihW__gKx7KaEVQE(q%JsO|X>80uCI>=poxvPr&L4#A^i)k)D^&-o4 zz-8dtk?%&n81b4kJ439O=FeesqnnA}mA5NrXq+X-jT~TI0u}j$9Xyre1}_^DFAH`J z*w1PD6%8U38-fkiVO}Oa5p4_R8)7HX6trX*ek$vTNTz7-S%nZ|sPbW54`CiZgRuaogPUHdjmstPFK5W#5 zDMV6mfS?bsUk~Ioz)GB6ezYEqMb-&nn6%b-KH@_e$fIk4REMVmO`fDa74DGSr^g9h z{|8WB%YJ{nD|<7uV6DDA^9!AZ_t&1MG~+ZNR|XNlE$@Y&n0yfr$bzZ+K%8v))M;we=i&@S+8e(AI!JG?0+s^&KW4@{AWQ>ia;*FX<+_PGJ$U* zx0zv9=M>oPGEAcK%%Vv-1`D7|(FAZawYD|*OVr*GJob0;2lc998I(P8{hx)TE#U8H zz6j6<+UQ$Z16v7t4kWGd=aavw)jNraq(b^9aW8&*2DpLWg_ui{Ve$z0yKqmSJ_bLE zzJ27Wpdx{6fE6hexu-kWN3IdM4S+{NI7;Kcf?JONK-ZHYEdcI0@E_wx!Lg0uH)5Nj zzboz?c>W~+CNYs_#50={6!{$c5y@c`hGYg!SEJL(ogycaLB0*mo}yWn*1n;GuP2{E zya)CNa-}t168|e=1F`wx`;ErgoK&Q|6pSPw(oGxqNc5zzs;+<0=_`OSX#PF9(&QQ_ z`BBYxhx|$OO$OS=W-Us5xlj}^b2>q_$i=^|_Z(DyYkih#i*ou|~G@3y^C3ctm zJE&Y$bBKkc0P9n_{)!rT7hRUYKGea_hVfQm*mA7%f}cvh6xd-xB)9)TXivz_p}VxG zH?|(@CfNBDG-C&~Sr4V~2S{$QZbf`5{(RySiH~D#!qs0-6xVi|dM7##`~=qR(1n^$ z0H0Zv#EZHMazS~W-MkFw2c|ws6UE`Xdc}Xmv0m3n}V|zQBOTAghU= zMuP~{uEVq=ZYcg;YMzC!3OJFU;aaCSSvQi8-VSO~0tYERMe$r3h$J&uNzG3p7Db~E zi9ZTSGvf8hPokzi#Qn9Y)SZwEWF9)3_)O|V+}M{{52mgrd>;AeZG;w1V^R@=#A+5lP(BrAWc4m@TTrY z*1f>pgyVOuTY-%Mvy)sI8JOHh`1$aQNCC2nlUyJly>@{-9)hp1#h_X z1uW8n*dwg}f>7i#jppDdv%87J3+Mo^VV5$%G-BaW4(w8LeUxvXd=#(^(p!KZCF!8y zO5NE@3KD{H6itWh8D(1x<_p%JQztj!E7bkS1}YK%44#hoGpYFwT?g(927E+$Ph$`3 zMtf!gepeUDZA+raMO?%Q(Pf%^1!j!+5bcJ*LMuW1qT(7d>^rPS=akuQgI@!F7_o3k zgKHAlaaxyi{{xW^;w*~pk+_8~;%EJ$G)J?D&4cVu;!7bYti(65$7%F6@oDHwtdqfy zVG~PfzaXT^#Qz{KPgWv+;?>oE18n86;U(XNnm)2i8ny(xO@hcIVy}}cLrkQ6 zUj9YSpMV^YU&dOwm()F#SfFmh(XKkKXfesjyOy4+l{c#Tc#k(B(eE1X^(VU0Q+>Xq zU575TD!8lCS3`2|%KE;1!AOrg&7BhGaix1Fd3L?^;I2{DHQJZv>NLTh7KrzxxuWA; zZvR8lZGT1PH;?BtI-8dZ7{#qMk;chf*2E~IurpVjFUgl?E-GP^u(()N(DFwcb4wJA zOA2+Uo}666y3^7qWf&=DgVsiMt3X?$SzdEQSL1+HvzxIjzj?a9;WY~mFbd|53#6ra zQvBwx{f+1-UAX*-f#g_MUv^{~1B?>p`m;vqu3dd;-bua`zdOm5p5&F0>$v)P{H`R= zXunqYeXhSz*#51?tbfiZ)A-*q!j=|1#+(8ENoUm^V4N)H%tx*x}2Vy_2U_1w_#p5YYew~oil!qG;f?W%34#e8}H|} z-uT9dkFq-aY3y(m=JucH8_&(f;|g9yWh{A5}8z~7%9+xk6j3>@tcW)m1 z;z(;*ar-U9Tv^I~(mGVyek`xq;F?j!+F#jzxTxKoV$E!7zZuc5y(^J(b7i=b0v=bA zcdW7Y-4<}=Cs!Kdgk&r_EKi|*7j=Fh&J{sC2JeaJeug;yV z<^%0#a@X$Izi;0A0@HVEm6LVs$y>jKh-)IJ;+Wwo>+<(?6 z)BV5W!F#uFybKzAK=|kV@n5Kd_S@ym5$lw(iDrqyv-p;HO zZIm?K(MBG(XT zXRizG!Pe0{(%D(unt05+bQCkcp2kKKr#m9ePT|W|4!5g=*=ITkP9d^n=#09!g-dtI5nP()s2oI; z2q9wrbBdm%B+H!csAHIyr#UK_-!F0Ii^_p{Tpirp@HlDCD##&8y(T=auI_+evsU&D zN5$gSLDNw?f63rucziW)aw-pJ>0V!o%NO7=+%&p5i&{5dbWAnckaQ<-mYxi5H?Hh0 zejeg@sE-?)oyAdbW8wm5v^Or%E7yD71bGHXT6ZrxX4}mZmmKr0 znU@`{qpX`hI0_dq?>%r-h~&|-nl~lgFRzEpiVqyctoaWdzm&AL6?Y~$OH^}@mZ@^4 zm)m1n_U42nE24~ZW}bq96c;zIq~KG8zpmA`l5}@kdom|_r@l1PNHLcJZT0v@w%>#9zXXGU#efuJ|#OVPOb(b)TUH(XZXBnu5p2C zpuncB=*q9N<#>@CS22H>0-JC>WhSh>2#1X8)=N|r^e zFD+iSV}3B)+0rUB!Z|08`E$IpN@lt%Y+`mhfaf=!TIFudae6Yi32|pirbqBu))ntd z0g;fM#Yv=rlSfFIE7r%YEG;`ro^jng=capI89uooCcFJ|B%UO>Qg}8<_W0|%LJtP% z=9GA6j2SuFS;U&@ao#SMpZiE$@bw&bw3f>q&GO6Xgq~(oW;rM2>)bvyH89aLDVUI_ zTvshuT#`4=m5_5k4L&gY0vTyJM<=ff*$Pj*a{b}U6S2qD!n!%%c{G>#?h>ul+?*6w#+v0HNwIolZ4mxrD89fijP(z#Xt=LyX$e$+YGY Custom G-code\"" +msgstr "Vous venez d'ajouter un G-code de changement de couleur, mais sa valeur est vide.\nPour exporter le G-code correctement, référez-vous à \"G-code de Changement de Couleur\" dans \"Réglages de l'Imprimante > G-code Personnalisé\"" + #: src/slic3r/GUI/SavePresetDialog.cpp:277 msgid "You have selected physical printer \"%1%\" \nwith related printer preset \"%2%\"" msgstr "Vous avez sélectionné l'imprimante physique \"%1%\"\navec le préréglage d'imprimante associé \"%2%\"" diff --git a/resources/localization/it/PrusaSlicer.mo b/resources/localization/it/PrusaSlicer.mo index 918e0ef33c80a2a92f001e9935a15a3e82dea616..3e187623f4de31563401530d8a24b6c38fcc1f67 100644 GIT binary patch delta 59978 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 X7Z+#a_}wYNcrsUmyRvD`arXQlm)F7Q diff --git a/resources/localization/it/PrusaSlicer_it.po b/resources/localization/it/PrusaSlicer_it.po index 75fe2ab1ce..b32164d297 100644 --- a/resources/localization/it/PrusaSlicer_it.po +++ b/resources/localization/it/PrusaSlicer_it.po @@ -19,11 +19,6 @@ msgstr "\"%1%\" è disattivato perchè \"%2%\" è nella categoria \"%3%\".\nPer msgid "%" msgstr "%" -#: src/slic3r/GUI/GLCanvas3D.cpp:969 -#, possible-c-format -msgid "%.2f - %.2f mm" -msgstr "%.2f - %.2f mm" - #. TRN Remove/Delete #: src/slic3r/GUI/Tab.cpp:3425 msgid "%1% Preset" @@ -296,10 +291,6 @@ msgstr "(Re)Sli&ce Ora" msgid "(Unknown)" msgstr "(Sconosciuto)" -#: src/slic3r/GUI/Plater.cpp:1195 -msgid "(weight with spool)" -msgstr "(peso con bobina)" - #: src/slic3r/GUI/MainFrame.cpp:1491 msgid ") not found." msgstr ") non trovato." @@ -386,11 +377,6 @@ msgstr "Informazioni su %s" msgid "above" msgstr "sopra" -#: src/slic3r/GUI/GLCanvas3D.cpp:965 -#, possible-c-format -msgid "above %.2f mm" -msgstr "sopra %.2f mm" - #: src/libslic3r/PrintConfig.cpp:1677 msgid "Above Z" msgstr "Z Sopra" @@ -744,6 +730,10 @@ msgstr "Tutte le superfici superiori" msgid "allocation failed" msgstr "allocazione fallita" +#: src/slic3r/GUI/Preferences.cpp:161 src/slic3r/GUI/Preferences.cpp:165 +msgid "Allow just a single PrusaSlicer instance" +msgstr "Permetti una singola istanza di PrusaSlicer" + #: src/slic3r/GUI/Plater.cpp:3915 msgid "Along X axis" msgstr "Lungo asse X" @@ -1011,6 +1001,10 @@ msgstr "Autovelocità (avanzato)" msgid "Avoid crossing perimeters" msgstr "Evita incrocio perimetri" +#: src/libslic3r/PrintConfig.cpp:188 +msgid "Avoid crossing perimeters - Max detour length" +msgstr "Evita incrocio perimetri - Lunghezza massima della deviazione" + #: src/slic3r/GUI/Tab.cpp:3705 msgid "BACK ARROW" msgstr "FRECCIA INDIETRO" @@ -1388,6 +1382,11 @@ msgstr "Controlla aggiornamenti di configurazione" msgid "Check for updates" msgstr "Cerca aggiorna&menti" +#: src/slic3r/Utils/PresetUpdater.cpp:412 +#: src/slic3r/Utils/PresetUpdater.cpp:420 +msgid "checking install indices" +msgstr "controllo degli indici di installazione" + #: src/slic3r/GUI/BedShapeDialog.cpp:608 msgid "Choose a file to import bed texture from (PNG/SVG):" msgstr "Seleziona un file da cui importare la forma del piano di stampa (PNG/SVG):" @@ -1433,10 +1432,6 @@ msgstr "Cerchio" msgid "Circular" msgstr "Circolare" -#: src/slic3r/GUI/GLCanvas3D.cpp:3961 -msgid "Clearance size" -msgstr "Dimensioni di spazio libero" - #: src/slic3r/GUI/GLCanvas3D.cpp:5028 src/slic3r/GUI/GLCanvas3D.cpp:5067 msgid "Click right mouse button to open/close History" msgstr "Cliccare con il tasto destro del mouse per aprire/chiudere la Cronologia" @@ -1511,11 +1506,6 @@ msgstr "Cambio colore (\"%1%\")" msgid "Color change (\"%1%\") for Extruder %2%" msgstr "Cambio colore (\"%1%\") per Estrusore %2%" -#: src/slic3r/GUI/GLCanvas3D.cpp:1001 -#, possible-c-format -msgid "Color change for Extruder %d at %.2f mm" -msgstr "Cambio colore per Estrusore %d a %.2f mm" - #: src/slic3r/GUI/Tab.cpp:2203 msgid "Color Change G-code" msgstr "G-code cambio colore" @@ -1729,6 +1719,22 @@ msgstr "Copia negli appunti" msgid "Copy to Clipboard" msgstr "Copia negli appunti" +#: src/slic3r/GUI/AboutDialog.cpp:304 +msgid "Copy Version Info" +msgstr "Copia info versione" + +#: src/slic3r/Utils/PresetUpdater.cpp:84 +msgid "Copying of file %1% to %2% failed.\nError message : %3%\nCopying was triggered by function: %4%" +msgstr "Copia del file %1% a %2% non riuscita.\nMessaggio errore : %3%\nL'errore è stato causata dalla funzione: %4%" + +#: src/slic3r/Utils/PresetUpdater.cpp:91 +msgid "Copying of file %1% to %2% failed. Permissions fail at target file after copying.\nError message : %3%\nCopying was triggered by function: %4%" +msgstr "Copia del file %1% su %2% non riuscita. Permessi non validi nel file di destinazione dopo la copia.\nMessaggio errore : %3%\n Questo errore è causato dalla funzione: %4%." + +#: src/slic3r/Utils/PresetUpdater.cpp:70 +msgid "Copying of file %1% to %2% failed. Permissions fail at target file before copying.\nError message : %3%\nThis error happend during %4% phase." +msgstr "Copia del file %1% su %2% non riuscita. Permessi non validi nel file di destinazione prima della copia.\nMessaggio errore : %3%\n Questo errore si è verificato durante la fase %4%." + #: src/slic3r/GUI/BackgroundSlicingProcess.cpp:156 msgid "Copying of the temporary G-code has finished but the exported code couldn't be opened during copy check. The output G-code is at %1%.tmp." msgstr "Copia del G-code temporaneo completata ma non è stato possibile aprire il codice esportato durante il controllo copia. Il G-code di output è su %1%.tmp." @@ -1826,6 +1832,10 @@ msgstr "Genera Pad intorno all'oggetto ed ignora l'elevazione del supporto" msgid "Critical angle" msgstr "Angolo critico" +#: src/slic3r/GUI/GUI_App.cpp:589 +msgid "Critical error" +msgstr "Errore critico" + #: src/libslic3r/PrintConfig.cpp:2832 msgid "Cross" msgstr "Croce" @@ -1979,10 +1989,6 @@ msgstr "Profilo filamento predefinito" msgid "Default filament profile associated with the current printer profile. On selection of the current printer profile, this filament profile will be activated." msgstr "Profilo filamento predefinito associato al profilo stampante corrente. Quando si seleziona il profilo stampante corrente, questo profilo filamento verrà attivato." -#: src/slic3r/GUI/GLCanvas3D.cpp:910 src/slic3r/GUI/GLCanvas3D.cpp:939 -msgid "Default print color" -msgstr "Colore di stampa predefinito" - #: src/slic3r/GUI/Tab.cpp:1302 msgid "default print profile" msgstr "profilo di stampa predefinito" @@ -2258,7 +2264,7 @@ msgstr "Disabilita la retrazione quando la traiettoria del movimento non oltrepa #: src/slic3r/GUI/UnsavedChangesDialog.cpp:641 msgid "Discard" -msgstr "Elimina" +msgstr "Cancella" #: src/slic3r/GUI/DoubleSlider.cpp:1066 msgid "Discard all custom changes" @@ -2433,9 +2439,13 @@ msgstr "Duplica per griglia" msgid "Duration" msgstr "Durata" -#: src/slic3r/GUI/PresetHints.cpp:39 -msgid "During the other layers, fan" -msgstr "Durante gli altri layer, la ventola" +#: src/slic3r/GUI/PresetHints.cpp:51 +msgid "During the other layers, fan will always run at %1%%%" +msgstr "Durante gli altri layer, la ventola lavorerà sempre a %1%%%" + +#: src/slic3r/GUI/PresetHints.cpp:58 +msgid "During the other layers, fan will be turned off." +msgstr "Durante gli altri layer, la ventola sarà spenta." #: src/libslic3r/PrintConfig.cpp:2833 msgid "Dynamic" @@ -3071,10 +3081,6 @@ msgstr "Cambia estrusore a" msgid "Extruder clearance" msgstr "Margine estrusore" -#: src/slic3r/GUI/Tab.cpp:1563 -msgid "Extruder clearance (mm)" -msgstr "Margine estrusore (mm)" - #: src/libslic3r/PrintConfig.cpp:558 msgid "Extruder Color" msgstr "Colore estrusore" @@ -3155,9 +3161,9 @@ msgstr "Caricamento modello input fallito." msgid "Failed processing of the output_filename_format template." msgstr "Elaborazione fallita del modello output_filename_format." -#: src/slic3r/GUI/PresetHints.cpp:41 -msgid "Fan" -msgstr "Ventola" +#: src/slic3r/GUI/GUI_App.cpp:1648 +msgid "Failed to activate configuration snapshot." +msgstr "Impossibile attivare l'istantanea di configurazione." #: src/slic3r/GUI/Tab.cpp:1802 msgid "Fan settings" @@ -3171,6 +3177,22 @@ msgstr "Velocità ventola" msgid "Fan Speed (%)" msgstr "Velocità ventola (%)" +#: src/slic3r/GUI/PresetHints.cpp:49 +msgid "Fan speed will be ramped from zero at layer %1% to %2%%% at layer %3%." +msgstr "La velocità della ventola sarà incrementata da zero al layer %1% a %2%%% al layer %3%." + +#: src/libslic3r/PrintConfig.cpp:1001 +msgid "Fan speed will be ramped up linearly from zero at layer \"disable_fan_first_layers\" to maximum at layer \"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower than \"disable_fan_first_layers\", in which case the fan will be running at maximum allowed speed at layer \"disable_fan_first_layers\" + 1." +msgstr "La velocità della ventola sarà incrementata linearmente da zero al layer \"disable_fan_fan_first_layers\" fino al massimo al layer \"full_fan_speed_layer\". \"full_fan_speed_layer\" sarà ignorato se inferiore a \"disable_fan_first_layers\", nel qual caso la ventola funzionerà alla massima velocità consentita al layer \"disable_fan_first_layers\" + 1." + +#: src/slic3r/GUI/PresetHints.cpp:51 +msgid "Fan will always run at %1%%%" +msgstr "La ventola lavorerà sempre a %1%%%" + +#: src/slic3r/GUI/PresetHints.cpp:58 +msgid "Fan will be turned off." +msgstr "La ventola verrà spenta." + #: src/libslic3r/PrintConfig.cpp:2548 msgid "Fast" msgstr "Veloce" @@ -3521,6 +3543,10 @@ msgstr "Frontale" msgid "Front View" msgstr "Vista anteriore" +#: src/libslic3r/PrintConfig.cpp:1000 +msgid "Full fan speed at layer" +msgstr "Massima velocità della ventola al layer" + #: src/slic3r/GUI/Tab.cpp:1331 msgid "full profile name" msgstr "nome completo profilo" @@ -3549,6 +3575,10 @@ msgstr "Formato G-code" msgid "G-code preview" msgstr "Anteprima G-code" +#: src/libslic3r/PrintConfig.cpp:66 +msgid "G-code thumbnails" +msgstr "Miniature G-code" + #: src/libslic3r/PrintConfig.cpp:3552 msgid "G-code viewer" msgstr "Visualizzatore G-code" @@ -3644,6 +3674,10 @@ msgstr "Generazione buffer vertici" msgid "Generic" msgstr "Generico" +#: src/slic3r/Utils/PresetUpdater.cpp:600 +msgid "getting config updates" +msgstr "recupero aggiornamenti di configurazione" + #: src/slic3r/GUI/KBShortcutsDialog.cpp:169 msgid "Gizmo cut" msgstr "Gizmo Taglia" @@ -3880,6 +3914,10 @@ msgstr "Nido d'ape" msgid "Horizontal shells" msgstr "Gusci orizzontali" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:253 +msgid "Horizontal Slider" +msgstr "Cursore di scorrimento orizzontale " + #: src/slic3r/GUI/KBShortcutsDialog.cpp:209 #: src/slic3r/GUI/KBShortcutsDialog.cpp:213 #: src/slic3r/GUI/KBShortcutsDialog.cpp:238 @@ -3892,30 +3930,6 @@ msgstr "Cursore di scorrimento orizzontale - Sposta a sinistra il cursore attivo msgid "Horizontal slider - Move active thumb Right" msgstr "Cursore di scorrimento orizzontale - Sposta a destra il cursore attivo" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:238 -msgid "Horizontal slider - Move current thumb Left" -msgstr "Cursore di scorrimento orizzontale: sposta il cursore corrente a sinistra" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:239 -msgid "Horizontal slider - Move current thumb Right" -msgstr "Cursore di scorrimento orizzontale: sposta il cursore corrente a destra" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:236 -msgid "Horizontal slider - Set left thumb as active" -msgstr "Cursore di scorrimento orizzontale - Imposta cursore sinistro come attivo" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:236 -msgid "Horizontal slider - Set left thumb to current thumb" -msgstr "Cursore di scorrimento orizzontale: sposta il cursore sinistro al cursore corrente" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:237 -msgid "Horizontal slider - Set right thumb as active" -msgstr "Cursore di scorrimento orizzontale - Imposta cursore destro come attivo" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:237 -msgid "Horizontal slider - Set right thumb to current thumb" -msgstr "Cursore di scorrimento orizzontale: Imposta il cursore destro al cursore corrente" - #: src/libslic3r/PrintConfig.cpp:279 msgid "Horizontal width of the brim that will be printed around each object on the first layer." msgstr "Larghezza orizzontale del brim che sarà stampata attorno ad ogni oggetto nel primo layer." @@ -4055,7 +4069,7 @@ msgstr "Se abilitato, il pulsante per ridurre la barra di scorrimento laterale a msgid "If enabled, the command line arguments are sent to an existing instance of GUI PrusaSlicer, or an existing PrusaSlicer window is activated. Overrides the \"single_instance\" configuration value from application preferences." msgstr "Se abilitato, gli argomenti della riga di comando vengono inviati ad un'istanza GUI esistente di PrusaSlicer, oppure viene attivata una finestra PrusaSlicer esistente. Sovrascrive il valore di configurazione \"single_instance\" dalle preferenze dell'applicazione." -#: src/slic3r/GUI/Preferences.cpp:278 +#: src/slic3r/GUI/Preferences.cpp:294 msgid "If enabled, the descriptions of configuration parameters in settings tabs wouldn't work as hyperlinks. If disabled, the descriptions of configuration parameters in settings tabs will work as hyperlinks." msgstr "Se abilitata, le descrizioni dei parametri di configurazione nelle schede delle impostazioni non funzionano come collegamenti ipertestuali. Se disabilitata, le descrizioni dei parametri di configurazione nelle schede delle impostazioni funzioneranno come collegamenti ipertestuali." @@ -4335,10 +4349,6 @@ msgstr "Info" msgid "Information" msgstr "Informazioni" -#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:547 -msgid "Infornation" -msgstr "Informazioni" - #: src/libslic3r/PrintConfig.cpp:1101 msgid "Inherits profile" msgstr "Eredita profilo" @@ -4355,6 +4365,11 @@ msgstr "Tempo di esposizione iniziale" msgid "Initial layer height" msgstr "Altezza layer iniziale" +#: src/slic3r/GUI/Field.cpp:269 +#, possible-c-format +msgid "Input value is out of range\nAre you sure that %s is a correct value and that you want to continue?" +msgstr "Il valore di input è fuori portata\nSei sicuro che %s sia un valore corretto e di voler continuare?" + #: src/slic3r/GUI/Field.cpp:252 src/slic3r/GUI/Field.cpp:1370 msgid "Input value is out of range" msgstr "Valore input fuori portata" @@ -4363,6 +4378,10 @@ msgstr "Valore input fuori portata" msgid "Inspect / activate configuration snapshots" msgstr "Ispeziona / attiva istantanee di configurazione" +#: src/slic3r/Utils/PresetUpdater.cpp:120 +msgid "install" +msgstr "installa" + #: src/slic3r/GUI/ObjectDataViewModel.cpp:62 #: src/slic3r/GUI/ObjectDataViewModel.cpp:218 #, possible-c-format @@ -4432,6 +4451,10 @@ msgstr "Penetrazione della testa non valida" msgid "invalid header or archive is corrupted" msgstr "titolo non valido o archivio corrotto" +#: src/slic3r/GUI/Field.cpp:375 +msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\"" +msgstr "Formato di input non valido. Vettore di dimensioni previsto nel seguente formato: \"%1%\"" + #: src/slic3r/GUI/Field.cpp:243 src/slic3r/GUI/Field.cpp:274 #: src/slic3r/GUI/Field.cpp:1358 src/slic3r/GUI/GUI_ObjectLayers.cpp:413 msgid "Invalid numeric input." @@ -4521,21 +4544,6 @@ msgstr "Vai all'altezza %s \no Imposta la modalità righello" msgid "Jump to height %s\nSet ruler mode\nor Set extruder sequence for the entire print" msgstr "Vai all'altezza %s\nImposta la modalità del righello\no Imposta la sequenza dell'estrusore per l'intera stampa" -#: src/slic3r/GUI/DoubleSlider.cpp:1075 -#, possible-c-format -msgid "Jump to height %s or Set extruder sequence for the entire print" -msgstr "Vai all'altezza %s o Imposta sequenza estrusore per l'intera stampa" - -#: src/slic3r/GUI/DoubleSlider.cpp:1222 -#, possible-c-format -msgid "Jump to height %s or Set ruler mode" -msgstr "Vai all'altezza %s o Imposta la modalità righello" - -#: src/slic3r/GUI/DoubleSlider.cpp:1220 -#, possible-c-format -msgid "Jump to height %s Set ruler mode\n or Set extruder sequence for the entire print" -msgstr "Vai all'altezza %s Imposta la modalità del righello\n o Imposta la sequenza dell'estrusore per l'intera stampa" - #: src/slic3r/GUI/DoubleSlider.cpp:1071 src/slic3r/GUI/DoubleSlider.cpp:1852 msgid "Jump to move" msgstr "Salta per spostare" @@ -4646,10 +4654,6 @@ msgstr "Layer e perimetri" msgid "Layers and Perimeters" msgstr "Layer e Perimetri" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:225 -msgid "Layers Slider" -msgstr "Barra di scorrimento Layer" - #: src/slic3r/GUI/OptionsGroup.cpp:293 msgctxt "Layers" msgid "Bottom" @@ -4695,10 +4699,6 @@ msgstr "Tasto sinistro mouse:" msgid "Left View" msgstr "Vista sinistra" -#: src/slic3r/GUI/GUI_Preview.cpp:339 -msgid "Legend" -msgstr "Legenda" - #: src/slic3r/GUI/GUI_Preview.cpp:1480 msgid "Legend/Estimated printing time" msgstr "Legenda/Stima del tempo di stampa" @@ -5355,6 +5355,10 @@ msgstr "mm (imposta a zero per disabilitare)" msgid "mm or %" msgstr "mm o %" +#: src/libslic3r/PrintConfig.cpp:193 +msgid "mm or % (zero to disable)" +msgstr "mm o % (zero per disattivare)" + #: src/libslic3r/PrintConfig.cpp:271 src/libslic3r/PrintConfig.cpp:645 #: src/libslic3r/PrintConfig.cpp:653 src/libslic3r/PrintConfig.cpp:662 #: src/libslic3r/PrintConfig.cpp:670 src/libslic3r/PrintConfig.cpp:697 @@ -5494,6 +5498,22 @@ msgstr "Sposta il cursore di scorrimento attivo sinistro" msgid "Move active slider thumb Right" msgstr "Sposta cursore di scorrimento attivo destro" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:220 +msgid "Move active thumb Down" +msgstr "Abbassa cursore attivo" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:241 +msgid "Move active thumb Left" +msgstr "Sposta a sinistra il cursore attivo" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:242 +msgid "Move active thumb Right" +msgstr "Sposta a destra il cursore attivo" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:219 +msgid "Move active thumb Up" +msgstr "Solleva cursore attivo" + #: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1219 msgid "Move clipping plane" msgstr "Sposta piano sezione" @@ -5502,14 +5522,6 @@ msgstr "Sposta piano sezione" msgid "Move current slider thumb Down" msgstr "Abbassa la barra di scorrimento attuale" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:229 -msgid "Move current slider thumb Left" -msgstr "Sposta a sinistra la barra di scorrimento attuale" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:230 -msgid "Move current slider thumb Right" -msgstr "Sposta a destra la barra di scorrimento attuale" - #: src/slic3r/GUI/KBShortcutsDialog.cpp:215 msgid "Move current slider thumb Up" msgstr "Solleva la barra di scorrimento attuale" @@ -5518,16 +5530,6 @@ msgstr "Solleva la barra di scorrimento attuale" msgid "Move drainage hole" msgstr "Sposta foro di drenaggio" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:209 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:213 -msgid "Move horizontal slider current thumb Left" -msgstr "Sposta il cursore di scorrimento orizzontale corrente a Sinistra" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:210 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:214 -msgid "Move horizontal slider current thumb Right" -msgstr "Sposta il cursore di scorrimento orizzontale corrente a Destra" - #: src/slic3r/GUI/GLCanvas3D.cpp:3810 msgid "Move Object" msgstr "Sposta oggetto" @@ -5556,16 +5558,6 @@ msgstr "Sposta selezione 10 mm in direzione Y positiva" msgid "Move support point" msgstr "Sposta punto di supporto" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:208 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:212 -msgid "Move vertical slider current thumb Down" -msgstr "Sposta il cursore di scorrimento verticale corrente in Basso" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:211 -msgid "Move vertical slider current thumb Up" -msgstr "Sposta il cursore di scorrimento verticale corrente verso l'alto" - #: src/slic3r/GUI/GCodeViewer.cpp:2492 msgid "Movement" msgstr "Movimento" @@ -5655,7 +5647,7 @@ msgstr "Nuovo progetto, pulisci piano" #: src/slic3r/GUI/UnsavedChangesDialog.cpp:609 msgid "New Value" -msgstr "Nuovo Valore" +msgstr "Nuovo valore" #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1178 msgid "New value" @@ -5955,6 +5947,14 @@ msgstr "Modalità Un Layer" msgid "One or more object were assigned an extruder that the printer does not have." msgstr "Uno o più oggetti sono assegnati ad un estrusore non presente sulla stampante." +#: src/slic3r/GUI/GUI_App.cpp:1784 +msgid "Ongoing uploads" +msgstr "Caricamenti in corso" + +#: src/libslic3r/Print.cpp:1269 +msgid "Only a single object may be printed at a time in Spiral Vase mode. Either remove all but the last object, or enable sequential mode by \"complete_objects\"." +msgstr "In modalità Vaso a spirale è possibile stampare un solo oggetto alla volta. Rimuovere tutti gli oggetti tranne l'ultimo, oppure abilitare la modalità sequenziale con \"complete_objects\"." + #: src/libslic3r/PrintConfig.cpp:2045 src/libslic3r/PrintConfig.cpp:2840 msgid "Only create support if it lies on a build plate. Don't create support on a print." msgstr "Genera supporti solo se questi poggiano sulla superficie di stampa. Non genera supporti sulla stampa." @@ -6307,11 +6307,6 @@ msgstr "Metti in pausa (\"%1%\")" msgid "Pause Print G-code" msgstr "G-code Pausa Stampa" -#: src/slic3r/GUI/GLCanvas3D.cpp:940 src/slic3r/GUI/GLCanvas3D.cpp:949 -#: src/slic3r/GUI/GLCanvas3D.cpp:988 -msgid "Pause print or custom G-code" -msgstr "Pausa stampa o G-code personalizzato" - #: src/libslic3r/PrintConfig.cpp:1147 msgid "Percent of a flow rate relative to object's normal layer height." msgstr "Percentuale di una portata rispetto all'altezza normale dello strato dell'oggetto." @@ -6360,9 +6355,9 @@ msgstr "Stampanti fisiche" msgid "Pick another vendor supported by %s" msgstr "Scegli un altro produttore supportato da %s" -#: src/libslic3r/PrintConfig.cpp:66 -msgid "Picture sizes to be stored into a .gcode and .sl1 files" -msgstr "Dimensioni immagine per essere memorizzate nei file .gcode e .sl1" +#: src/libslic3r/PrintConfig.cpp:67 +msgid "Picture sizes to be stored into a .gcode and .sl1 files, in the following format: \"XxY, XxY, ...\"" +msgstr "Dimensioni delle immagini da memorizzare in un file .gcode e .sl1, nel seguente formato: \"XxY, XxY, ...\"" #: src/libslic3r/PrintConfig.cpp:2822 msgid "Pillar connection mode" @@ -6485,11 +6480,7 @@ msgid "Preset \"%1%\" is not compatible with the new printer profile and it has msgstr "Il preset \"%1%\" non è compatibile con il nuovo profilo stampante e possiede le seguenti modifiche non salvate:" #: src/slic3r/GUI/SavePresetDialog.cpp:136 -msgid "Preset with name \"%1%\" already exists and is imcopatible with selected printer." -msgstr "Il preset con il nome \"%1%\" esiste già e non è compatibile con la stampante selezionata." - -#: src/slic3r/GUI/SavePresetDialog.cpp:136 -msgid "Preset with name \"%1%\" already exists and is incopatible with selected printer." +msgid "Preset with name \"%1%\" already exists and is incompatible with selected printer." msgstr "Il preset con il nome \"%1%\" è già esistente ed è incompatibile con la stampante selezionata." #: src/slic3r/GUI/SavePresetDialog.cpp:148 @@ -6501,6 +6492,10 @@ msgctxt "PresetName" msgid "Copy" msgstr "Copia" +#: src/slic3r/GUI/GLCanvas3D.cpp:3990 +msgid "Press %1%left mouse button to enter the exact value" +msgstr "Premi il tasto sinistro del mouse %1% per inserire il valore esatto" + #: src/slic3r/GUI/KBShortcutsDialog.cpp:157 msgid "Press to activate deselection rectangle" msgstr "Premi per attivare il rettangolo di deselezione" @@ -6719,6 +6714,10 @@ msgstr "PrusaSlicer ha rilevato l'archivio dei certificati SSL di sistema: %1%" msgid "PrusaSlicer GUI initialization failed" msgstr "Inizializzazione GUI PrusaSlicer non riuscita" +#: src/slic3r/GUI/GUI_App.cpp:586 +msgid "PrusaSlicer has encountered a localization error. Please report to PrusaSlicer team, what language was active and in which scenario this issue happened. Thank you.\n\nThe application will now terminate." +msgstr "PrusaSlicer ha riscontrato un errore di localizzazione. Si prega di riferire al team di PrusaSlicer, quale lingua era attiva e in quale scenario si è verificato questo problema. Grazie.\n\nL'applicazione terminerà ora." + #: src/slic3r/GUI/AboutDialog.cpp:285 msgid "PrusaSlicer is based on Slic3r by Alessandro Ranellucci and the RepRap community." msgstr "PrusaSlicer è basato su Slic3r di Alessandro Ranellucci e la comunità RepRap." @@ -7737,10 +7736,6 @@ msgstr "Seq." msgid "Sequential printing" msgstr "Stampa sequenziale" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:235 -msgid "Sequential Slider" -msgstr "Slider Sequenziale" - #: src/slic3r/GUI/Preferences.cpp:230 msgid "Sequential slider applied only to top layer" msgstr "Cursore sequenziale applicato solo sullo strato superiore" @@ -7786,6 +7781,14 @@ msgstr "Imposta sequenza estrusore per l'intera stampa" msgid "Set extruder(tool) sequence" msgstr "Imposta sequenza estrusore(attrezzo)" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:243 +msgid "Set left thumb as active" +msgstr "Imposta cursore sinistro come attivo" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:222 +msgid "Set lower thumb as active" +msgstr "Imposta cursore inferiore come attivo" + #: src/slic3r/GUI/KBShortcutsDialog.cpp:218 msgid "Set lower thumb to current slider thumb" msgstr "Imposta il cursore inferiore alla barra di scorrimento attuale" @@ -7819,6 +7822,10 @@ msgstr "Imposta stampabile" msgid "Set Printable Instance" msgstr "Imposta Istanza Stampabile" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:244 +msgid "Set right thumb as active" +msgstr "Imposta cursore destro come attivo" + #: src/slic3r/GUI/DoubleSlider.cpp:1836 msgid "Set ruler mode" msgstr "Imposta la modalità righello" @@ -7887,6 +7894,10 @@ msgstr "Imposta non stampabile" msgid "Set Unprintable Instance" msgstr "Imposta Istanza non stampabile" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:221 +msgid "Set upper thumb as active" +msgstr "Imposta cursore superiore come attivo" + #: src/slic3r/GUI/KBShortcutsDialog.cpp:217 msgid "Set upper thumb to current slider thumb" msgstr "Imposta il cursore superiore alla barra di scorrimento attuale" @@ -8225,10 +8236,6 @@ msgstr "Slic3r può caricare il file G-code ad un host stampante. Questo campo d msgid "Slic3r can upload G-code files to a printer host. This field should contain the API Key or the password required for authentication." msgstr "Slic3r può caricare i file G-code su un host di stampa. Questo campo deve contenere la chiave API o la password richiesta per l'autenticazione." -#: src/libslic3r/PrintConfig.cpp:100 -msgid "Slic3r can upload G-code files to a printer host. This field should contain the hostname, IP address or URL of the printer host instance." -msgstr "Slic3r può caricare i file G-code su un host della stampante. Questo campo dovrebbe contenere il nome host, l'indirizzo IP o URL dell'istanza dell'host della stampante." - #: src/libslic3r/PrintConfig.cpp:100 msgid "Slic3r can upload G-code files to a printer host. This field should contain the hostname, IP address or URL of the printer host instance. Print host behind HAProxy with basic auth enabled can be accessed by putting the user name and password into the URL in the following format: https://username:password@your-octopi-address/" msgstr "Slic3r può caricare i file G-code su una stampante host. Questo campo deve contenere il nome host, l'indirizzo IP o l'URL dell'istanza host della stampante. L'host di stampa dietro HAProxy con l'autenticazione di base abilitata è accessibile inserendo il nome utente e la password nell'URL nel seguente formato: https://username:password@il tuo indirizzo di octopi/" @@ -8631,6 +8638,10 @@ msgstr "File STL esportato in %s" msgid "Stop at height" msgstr "Ferma all'altezza" +#: src/slic3r/GUI/GUI_App.cpp:1781 +msgid "Stop them and continue anyway?" +msgstr "Interromperli e continuare comunque?" + #: src/slic3r/GUI/PhysicalPrinterDialog.cpp:295 msgid "Success!" msgstr "Successo!" @@ -8767,10 +8778,6 @@ msgstr "Supporto modalità silenziosa" msgid "Supports work better, if the following feature is enabled:\n- Detect bridging perimeters" msgstr "I supporti funzionano meglio se le la seguente funzione è attivata:\n- Rileva perimetri ponte" -#: src/slic3r/GUI/DoubleSlider.cpp:1824 -msgid "Supprese show the ruler" -msgstr "Nascondi il righello" - #: src/slic3r/GUI/Preferences.cpp:104 msgid "Suppress \" - default - \" presets" msgstr "Nascondi i preset \" - default - \"" @@ -8985,6 +8992,18 @@ msgstr "I seguenti modelli di stampante FFF non hanno nessun filamento seleziona msgid "The following presets were modified:" msgstr "I preset seguenti sono stati modificati:" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:253 +msgid "The following shortcuts are applicable in G-code preview when the horizontal slider is active" +msgstr "Le seguenti scorciatoie sono applicabili nell'anteprima del G-code quando il cursore orizzontale è attivo" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:237 +msgid "The following shortcuts are applicable in G-code preview when the vertical slider is active" +msgstr "Le seguenti scorciatoie sono applicabili nell'anteprima del G-code quando il cursore verticale è attivo" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:179 +msgid "The following shortcuts are applicable when the specified gizmo is active" +msgstr "Le seguenti scorciatoie sono applicabili quando il gizmo specificato è attivo" + #: src/slic3r/GUI/ConfigWizard.cpp:2275 msgid "The following SLA printer models have no materials selected:" msgstr "I seguenti modelli di stampante SLA non hanno nessun filamento selezionato:" @@ -9021,6 +9040,10 @@ msgstr "La distanza massima tra due pilastri per collegarsi gli uni agli altri. msgid "The max length of a bridge" msgstr "La lunghezza massima di un bridge" +#: src/libslic3r/PrintConfig.cpp:190 +msgid "The maximum detour length for avoid crossing perimeters. If the detour is longer than this value, avoid crossing perimeters is not applied for this travel path. Detour length could be specified either as an absolute value or as percentage (for example 50%) of a direct travel path." +msgstr "La lunghezza massima di deviazione per evitare di incrociare i perimetri. Se la deviazione è più lunga di questo valore, la funzione evita incrocio perimetri non viene applicata per questo percorso di spostamento. La lunghezza della deviazione può essere specificata sia come valore assoluto che come percentuale (ad esempio 50%) di un percorso di spostamento diretto." + #: src/libslic3r/PrintConfig.cpp:2878 msgid "The minimum distance of the pillar base from the model in mm. Makes sense in zero elevation mode where a gap according to this parameter is inserted between the model and the pad." msgstr "Distanza minima della base del pilastro dal modello in mm. Ha senso con modalità ad elevazione zero in cui viene inserito uno spazio tra modello e pad a seconda di questo parametro." @@ -9029,6 +9052,14 @@ msgstr "Distanza minima della base del pilastro dal modello in mm. Ha senso con msgid "The name cannot be empty." msgstr "Il nome non può essere vuoto." +#: src/slic3r/GUI/SavePresetDialog.cpp:152 +msgid "The name cannot end with space character." +msgstr "Il nome non può terminare con il carattere spazio." + +#: src/slic3r/GUI/SavePresetDialog.cpp:147 +msgid "The name cannot start with space character." +msgstr "Il nome non può iniziare con il carattere spazio." + #: src/libslic3r/PrintConfig.cpp:219 msgid "The number of bottom solid layers is increased above bottom_solid_layers if necessary to satisfy minimum thickness of bottom shell." msgstr "Il numero di layer solidi inferiori è aumentato al di sopra di bottom_solid_layers se necessario per soddisfare lo spessore minimo del guscio inferiore." @@ -9130,10 +9161,6 @@ msgstr "Velocità delle retrazioni (si applica solamente al motore dell'estrusor msgid "The Spiral Vase mode requires:\n- one perimeter\n- no top solid layers\n- 0% fill density\n- no support material\n- Ensure vertical shell thickness enabled\n- Detect thin walls disabled" msgstr "La modalità Vaso a spirale necessita:\n-un solo perimetro\n-nessun layer solido superiore\n-densità riempimento 0%\n-nessun materiale di supporto\n-Mantieni spessore guscio verticale attivo\n-Rileva perimetri sottili disattivo" -#: src/libslic3r/Print.cpp:1263 -msgid "The Spiral Vase option can only be used when printing a single object." -msgstr "L'opzione Vaso a Spirale può essere utilizzata soltanto durante la stampa di un oggetto singolo." - #: src/libslic3r/Print.cpp:1270 msgid "The Spiral Vase option can only be used when printing single material objects." msgstr "L'opzione Vaso a Spirale può essere usata solo durante la stampa di oggetti in materiale singolo." @@ -9161,6 +9188,10 @@ msgstr "Le configurazioni fornite causeranno una stampa vuota." msgid "The thickness of the pad and its optional cavity walls." msgstr "Lo spessore del pad e delle intercapedini opzionali." +#: src/slic3r/GUI/GUI_App.cpp:1781 +msgid "The uploads are still ongoing" +msgstr "I caricamenti sono ancora in corso" + #: src/libslic3r/PrintConfig.cpp:2053 msgid "The vertical distance between object and support material interface. Setting this to 0 will also prevent Slic3r from using bridge flow and speed for the first object layer." msgstr "Distanza verticale tra oggetto e interfaccia del materiale di supporto. Impostando questo valore a 0 eviterà che Slic3r utilizzi il flusso e velocità bridge per il primo layer dell'oggetto." @@ -9314,9 +9345,9 @@ msgstr "Questa funzione permette di combinare il riempimento e velocizza il temp msgid "This feature allows to force a solid layer every given number of layers. Zero to disable. You can set this to any value (for example 9999); Slic3r will automatically choose the maximum possible number of layers to combine according to nozzle diameter and layer height." msgstr "Questa funzione permette di forzare un layer solido ogni tot layer. Zero per disabilitare. È possibile impostare qualunque valore (per esempio 9999); Slic3r sceglierà automaticamente il maggior numero possibile di layer da combinare secondo il diametro dell'ugello e l'altezza layer." -#: src/libslic3r/PrintConfig.cpp:1910 -msgid "This feature will raise Z gradually while printing a single-walled object in order to remove any visible seam. This option requires a single perimeter, no infill, no top solid layers and no support material. You can still set any number of bottom solid layers as well as skirt/brim loops. It won't work when printing more than an object." -msgstr "Questa funzione solleverà Z gradualmente durante la stampa di un oggetto a parete singola allo scopo di rimuovere qualunque giunzione. Questa opzione richiede un singolo perimetro, nessun riempimento, nessun layer solido superiore e nessun materiale di supporto. È possibile comunque impostare qualunque numero di layer solidi inferiori così come per i giri di skirt/brim. Non funzionerà stampando più di un oggetto." +#: src/libslic3r/PrintConfig.cpp:1995 +msgid "This feature will raise Z gradually while printing a single-walled object in order to remove any visible seam. This option requires a single perimeter, no infill, no top solid layers and no support material. You can still set any number of bottom solid layers as well as skirt/brim loops. It won't work when printing more than one single object." +msgstr "Questa funzione solleverà Z gradualmente durante la stampa di un oggetto a parete singola allo scopo di rimuovere qualunque giunzione. Questa opzione richiede un singolo perimetro, nessun riempimento, nessun layer solido superiore e nessun materiale di supporto. È possibile comunque impostare qualunque numero di layer solidi inferiori così come per i giri di skirt/brim. Non funzionerà stampando più di un oggetto singolo." #: src/slic3r/GUI/Plater.cpp:2329 msgid "This file cannot be loaded in a simple mode. Do you want to switch to an advanced mode?" @@ -9395,10 +9426,6 @@ msgstr "Questa è l'accelerazione che la stampante utilizzerà per il primo laye msgid "This is the acceleration your printer will use for infill. Set zero to disable acceleration control for infill." msgstr "Questa è l'accelerazione che la stampante utilizzerà per il riempimento. Imposta a zero per disattivare il controllo dell'accelerazione per il riempimento." -#: src/libslic3r/PrintConfig.cpp:1508 -msgid "This is the acceleration your printer will use for perimeters. A high value like 9000 usually gives good results if your hardware is up to the job. Set zero to disable acceleration control for perimeters." -msgstr "Questa è l'accelerazione che la stampante utilizzerà per i perimetri. Un valore alto come 9000 solitamente produce dei buoni risultati se l'hardware è all'altezza. Imposta a zero per disattivare il controllo dell'accelerazione per i perimetri." - #: src/libslic3r/PrintConfig.cpp:1582 msgid "This is the acceleration your printer will use for perimeters. Set zero to disable acceleration control for perimeters." msgstr "Questa è l'accelerazione che la stampante utilizzerà per i perimetri. Impostare zero per disabilitare il controllo dell'accelerazione per i perimetri." @@ -9575,10 +9602,6 @@ msgstr "Per utilizzare un file CA personalizzato, importa il tuo file CA sul Cer msgid "Toggle %c axis mirroring" msgstr "Attiva / disattiva il mirroring dell'asse %c" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:215 -msgid "Toggle vertical slider one layer mode ON/OFF" -msgstr "Attivare/disattivare il cursore verticale a un layer" - #: src/libslic3r/miniz_extension.cpp:93 msgid "too many files" msgstr "troppi file" @@ -9836,11 +9859,6 @@ msgstr "Selezione non supportata" msgid "up to" msgstr "fino a" -#: src/slic3r/GUI/GLCanvas3D.cpp:961 -#, possible-c-format -msgid "up to %.2f mm" -msgstr "fino a %.2f mm" - #: src/slic3r/GUI/UpdateDialogs.cpp:38 msgid "Update available" msgstr "Aggiornamento disponibile" @@ -9890,10 +9908,6 @@ msgstr "Layer superiore" msgid "Use another extruder" msgstr "Usa un altro estrusore" -#: src/slic3r/GUI/GLCanvas3D.cpp:3959 -msgid "Use CTRL+left mouse key to enter text edit mode:" -msgstr "Usare CTRL+tasto sinistro del mouse per entrare nella modalità di modifica del testo:" - #: src/slic3r/GUI/Preferences.cpp:220 msgid "Use custom size for toolbar icons" msgstr "Utilizza dimensione personalizzata per le icone degli strumenti" @@ -10065,13 +10079,9 @@ msgstr "versione" msgid "Vertical shells" msgstr "Gusci verticali" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:234 -msgid "Vertical slider - Add color change marker for current layer" -msgstr "Cursore scorrimento verticale: Aggiungi un segnale di cambio colore per il layer corrente" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:235 -msgid "Vertical slider - Delete color change marker for current layer" -msgstr "Cursore scorrimento verticale: Elimina il segnale di cambio colore per il layer corrente" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:237 +msgid "Vertical Slider" +msgstr "Cursore di scorrimento verticale" #: src/slic3r/GUI/KBShortcutsDialog.cpp:208 #: src/slic3r/GUI/KBShortcutsDialog.cpp:212 @@ -10085,30 +10095,6 @@ msgstr "Cursore di scorrimento verticale - Abbassa cursore attivo" msgid "Vertical slider - Move active thumb Up" msgstr "Cursore di scorrimento verticale - Solleva cursore attivo" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:231 -msgid "Vertical slider - Move current thumb Down" -msgstr "Cursore di scorrimento verticale: sposta il cursore corrente verso il basso" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:230 -msgid "Vertical slider - Move current thumb Up" -msgstr "Cursore di scorrimento verticale: sposta il cursore corrente verso l'alto" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:233 -msgid "Vertical slider - Set lower thumb as active" -msgstr "Cursore di scorrimento verticale - Imposta cursore inferiore come attivo" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:233 -msgid "Vertical slider - Set lower thumb to current thumb" -msgstr "Cursore di scorrimento verticale: sposta il cursore inferiore al cursore corrente" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:232 -msgid "Vertical slider - Set upper thumb as active" -msgstr "Cursore di scorrimento verticale - Imposta cursore superiore come attivo" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:232 -msgid "Vertical slider - Set upper thumb to current thumb" -msgstr "Cursore di scorrimento verticale: sposta il cursore superiore al cursore corrente" - #: src/slic3r/GUI/GUI_Preview.cpp:265 src/slic3r/GUI/GUI_Preview.cpp:271 msgid "View" msgstr "Vista" @@ -10289,14 +10275,6 @@ msgstr "Larghezza delle barre di connessione che collegano l'oggetto e il pad ge msgid "Width of the display" msgstr "Larghezza del display" -#: src/slic3r/GUI/PresetHints.cpp:47 -msgid "will always run at %1%%%" -msgstr "lavorerà sempre a %1%%%" - -#: src/slic3r/GUI/PresetHints.cpp:54 -msgid "will be turned off." -msgstr "rimarrà spenta." - #: src/libslic3r/PrintConfig.cpp:2584 msgid "Will inflate or deflate the sliced 2D polygons according to the sign of the correction." msgstr "Gonfierà o sgonfierà i poligoni 2D processati in base al segno della correzione." @@ -10456,6 +10434,10 @@ msgstr "Non è possibile caricare un progetto SLA con un oggetto multi-parte sul msgid "You cannot use non-uniform scaling mode for multiple objects/parts selection" msgstr "Non è possibile utilizzare la modalità di ridimensionamento non uniforme per una selezione di più oggetti/parti" +#: src/slic3r/GUI/NotificationManager.hpp:459 +msgid "You have just added a G-code for color change, but its value is empty.\nTo export the G-code correctly, check the \"Color Change G-code\" in \"Printer Settings > Custom G-code\"" +msgstr "Hai aggiunto un G-code per il cambio colore, ma il suo valore è vuoto.\nPer esportare correttamente il G-code, controlla \"Color Change G-code\" su \"Impostazioni stampante > G-code personalizzato\"" + #: src/slic3r/GUI/SavePresetDialog.cpp:277 msgid "You have selected physical printer \"%1%\" \nwith related printer preset \"%2%\"" msgstr "Hai selezionato la stampante fisica \"%1%\" \ncon il relativo preset stampante \"%2%\"" diff --git a/resources/localization/pl/PrusaSlicer.mo b/resources/localization/pl/PrusaSlicer.mo index 8564299be0cddf263058f33585529dfa5e621f8b..535e39409bdc6d50c324d2a3e97001efae9682f8 100644 GIT binary patch delta 60015 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 Custom G-code\"" +msgstr "Dodany został G-code dla zmiany koloru, ale nie zawiera parametrów.\nAby poprawnie wyeksportować G-code, wybierz \"G-code dla zmiany koloru\" w sekcji \"Ustawienia drukarki -> Własny G-code\"" + #: src/slic3r/GUI/SavePresetDialog.cpp:277 msgid "You have selected physical printer \"%1%\" \nwith related printer preset \"%2%\"" msgstr "Wybrana została fizyczna drukarka \"%1%\"\nz powiązanym zestawem ustawień drukarki \"%2%\"" From 7df9f3e422eb38fd51395baaa0f39942129f3a87 Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik Date: Thu, 17 Dec 2020 09:16:53 +0100 Subject: [PATCH 067/135] Improvements of OBJ parser robustness. --- src/libslic3r/Format/OBJ.cpp | 3 ++- src/libslic3r/Format/objparser.cpp | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/libslic3r/Format/OBJ.cpp b/src/libslic3r/Format/OBJ.cpp index aa389781af..f0a002f50d 100644 --- a/src/libslic3r/Format/OBJ.cpp +++ b/src/libslic3r/Format/OBJ.cpp @@ -70,7 +70,8 @@ bool load_obj(const char *path, TriangleMesh *meshptr) ++ num_normals; } } - if (data.vertices[i].coordIdx != -1) { + // Result of obj_parseline() call is not checked, thus not all vertices are necessarily finalized with coord_Idx == -1. + if (i < data.vertices.size() && data.vertices[i].coordIdx != -1) { // This is a quad. Produce the other triangle. stl_facet &facet2 = stl.facet_start[i_face++]; facet2.vertex[0] = facet.vertex[0]; diff --git a/src/libslic3r/Format/objparser.cpp b/src/libslic3r/Format/objparser.cpp index 8c1a53459d..f675bfd66e 100644 --- a/src/libslic3r/Format/objparser.cpp +++ b/src/libslic3r/Format/objparser.cpp @@ -338,11 +338,14 @@ bool objparse(const char *path, ObjData &data) char *c = buf + lastLine; while (*c == ' ' || *c == '\t') ++ c; + //FIXME check the return value and exit on error? + // Will it break parsing of some obj files? obj_parseline(c, data); lastLine = i + 1; } lenPrev = len - lastLine; memmove(buf, buf + lastLine, lenPrev); + assert(lenPrev <= 65536); } } catch (std::bad_alloc&) { From b1095adc186e06f66ca4e201a221d4274e8ec7d6 Mon Sep 17 00:00:00 2001 From: david kocik Date: Thu, 17 Dec 2020 09:51:45 +0100 Subject: [PATCH 068/135] follow up of commit c9da06e44a10ecadfa55ac2e1df4f63a48d5d685 --- src/slic3r/GUI/wxExtensions.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/slic3r/GUI/wxExtensions.cpp b/src/slic3r/GUI/wxExtensions.cpp index c52864db3f..e2566e3f95 100644 --- a/src/slic3r/GUI/wxExtensions.cpp +++ b/src/slic3r/GUI/wxExtensions.cpp @@ -660,6 +660,8 @@ void ModeButton::focus_button(const bool focus) SetForegroundColour(wxSystemSettings::GetColour(focus ? wxSYS_COLOUR_BTNTEXT : #if defined (__linux__) && defined (__WXGTK3__) wxSYS_COLOUR_GRAYTEXT +#elif defined (__linux__) && defined (__WXGTK2__) + wxSYS_COLOUR_BTNTEXT #else wxSYS_COLOUR_BTNSHADOW #endif From ba9a9b4e7ac8863f52923a90a9290a8ab0660e89 Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik Date: Thu, 17 Dec 2020 09:52:59 +0100 Subject: [PATCH 069/135] Fixed buffer overflow in the OBJ parser. Improved error reporting on OBJ parser. --- src/libslic3r/Format/OBJ.cpp | 6 ++++-- src/libslic3r/Format/objparser.cpp | 14 ++++++++++---- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/libslic3r/Format/OBJ.cpp b/src/libslic3r/Format/OBJ.cpp index f0a002f50d..cb7eb45493 100644 --- a/src/libslic3r/Format/OBJ.cpp +++ b/src/libslic3r/Format/OBJ.cpp @@ -7,6 +7,8 @@ #include +#include + #ifdef _WIN32 #define DIR_SEPARATOR '\\' #else @@ -22,7 +24,7 @@ bool load_obj(const char *path, TriangleMesh *meshptr) // Parse the OBJ file. ObjParser::ObjData data; if (! ObjParser::objparse(path, data)) { - // die "Failed to parse $file\n" if !-e $path; + BOOST_LOG_TRIVIAL(error) << "load_obj: failed to parse " << path; return false; } @@ -103,7 +105,7 @@ bool load_obj(const char *path, TriangleMesh *meshptr) stl_get_size(&stl); mesh.repair(); if (mesh.facets_count() == 0) { - // die "This OBJ file couldn't be read because it's empty.\n" + BOOST_LOG_TRIVIAL(error) << "load_obj: This OBJ file couldn't be read because it's empty. " << path; return false; } diff --git a/src/libslic3r/Format/objparser.cpp b/src/libslic3r/Format/objparser.cpp index f675bfd66e..12cee350dc 100644 --- a/src/libslic3r/Format/objparser.cpp +++ b/src/libslic3r/Format/objparser.cpp @@ -1,6 +1,7 @@ #include #include +#include #include #include "objparser.hpp" @@ -312,7 +313,7 @@ static bool obj_parseline(const char *line, ObjData &data) break; } default: - printf("ObjParser: Unknown command: %c\r\n", c1); + BOOST_LOG_TRIVIAL(error) << "ObjParser: Unknown command: " << c1; break; } @@ -344,12 +345,16 @@ bool objparse(const char *path, ObjData &data) lastLine = i + 1; } lenPrev = len - lastLine; + if (lenPrev > 65536) { + BOOST_LOG_TRIVIAL(error) << "ObjParser: Excessive line length"; + ::fclose(pFile); + return false; + } memmove(buf, buf + lastLine, lenPrev); - assert(lenPrev <= 65536); } } catch (std::bad_alloc&) { - printf("Out of memory\r\n"); + BOOST_LOG_TRIVIAL(error) << "ObjParser: Out of memory"; } ::fclose(pFile); @@ -381,7 +386,8 @@ bool objparse(std::istream &stream, ObjData &data) } } catch (std::bad_alloc&) { - printf("Out of memory\r\n"); + BOOST_LOG_TRIVIAL(error) << "ObjParser: Out of memory"; + return false; } return true; From b8fc1d3173c1b0b26c5ebbf7d9f8925cffd0e4cc Mon Sep 17 00:00:00 2001 From: enricoturri1966 Date: Thu, 17 Dec 2020 11:41:41 +0100 Subject: [PATCH 070/135] GCodeViewer - Fixed visualization of time estimates for silent mode --- src/libslic3r/GCode/GCodeProcessor.cpp | 133 +++++++++++++------------ src/libslic3r/GCode/GCodeProcessor.hpp | 2 +- src/slic3r/GUI/Plater.cpp | 1 - 3 files changed, 69 insertions(+), 67 deletions(-) diff --git a/src/libslic3r/GCode/GCodeProcessor.cpp b/src/libslic3r/GCode/GCodeProcessor.cpp index c045cbcc21..b2900a157b 100644 --- a/src/libslic3r/GCode/GCodeProcessor.cpp +++ b/src/libslic3r/GCode/GCodeProcessor.cpp @@ -724,6 +724,9 @@ void GCodeProcessor::apply_config(const DynamicPrintConfig& config) m_time_processor.machines[i].acceleration = (max_acceleration > 0.0f) ? max_acceleration : DEFAULT_ACCELERATION; } + if (m_time_processor.machine_limits.machine_max_acceleration_x.values.size() > 1) + enable_stealth_time_estimator(true); + #if ENABLE_VOLUMETRIC_EXTRUSION_PROCESSING const ConfigOptionBool* use_volumetric_e = config.option("use_volumetric_e"); if (use_volumetric_e != nullptr) @@ -2140,32 +2143,29 @@ void GCodeProcessor::process_M135(const GCodeReader::GCodeLine& line) void GCodeProcessor::process_M201(const GCodeReader::GCodeLine& line) { - if (!m_time_processor.machine_envelope_processing_enabled) - return; - // see http://reprap.org/wiki/G-code#M201:_Set_max_printing_acceleration float factor = ((m_flavor != gcfRepRapSprinter && m_flavor != gcfRepRapFirmware) && m_units == EUnits::Inches) ? INCHES_TO_MM : 1.0f; for (size_t i = 0; i < static_cast(PrintEstimatedTimeStatistics::ETimeMode::Count); ++i) { - if (line.has_x()) - set_option_value(m_time_processor.machine_limits.machine_max_acceleration_x, i, line.x() * factor); + if (static_cast(i) == PrintEstimatedTimeStatistics::ETimeMode::Normal || + m_time_processor.machine_envelope_processing_enabled) { + if (line.has_x()) + set_option_value(m_time_processor.machine_limits.machine_max_acceleration_x, i, line.x() * factor); - if (line.has_y()) - set_option_value(m_time_processor.machine_limits.machine_max_acceleration_y, i, line.y() * factor); + if (line.has_y()) + set_option_value(m_time_processor.machine_limits.machine_max_acceleration_y, i, line.y() * factor); - if (line.has_z()) - set_option_value(m_time_processor.machine_limits.machine_max_acceleration_z, i, line.z() * factor); + if (line.has_z()) + set_option_value(m_time_processor.machine_limits.machine_max_acceleration_z, i, line.z() * factor); - if (line.has_e()) - set_option_value(m_time_processor.machine_limits.machine_max_acceleration_e, i, line.e() * factor); + if (line.has_e()) + set_option_value(m_time_processor.machine_limits.machine_max_acceleration_e, i, line.e() * factor); + } } } void GCodeProcessor::process_M203(const GCodeReader::GCodeLine& line) { - if (!m_time_processor.machine_envelope_processing_enabled) - return; - // see http://reprap.org/wiki/G-code#M203:_Set_maximum_feedrate if (m_flavor == gcfRepetier) return; @@ -2175,45 +2175,48 @@ void GCodeProcessor::process_M203(const GCodeReader::GCodeLine& line) float factor = (m_flavor == gcfMarlin || m_flavor == gcfSmoothie) ? 1.0f : MMMIN_TO_MMSEC; for (size_t i = 0; i < static_cast(PrintEstimatedTimeStatistics::ETimeMode::Count); ++i) { - if (line.has_x()) - set_option_value(m_time_processor.machine_limits.machine_max_feedrate_x, i, line.x() * factor); + if (static_cast(i) == PrintEstimatedTimeStatistics::ETimeMode::Normal || + m_time_processor.machine_envelope_processing_enabled) { + if (line.has_x()) + set_option_value(m_time_processor.machine_limits.machine_max_feedrate_x, i, line.x() * factor); - if (line.has_y()) - set_option_value(m_time_processor.machine_limits.machine_max_feedrate_y, i, line.y() * factor); + if (line.has_y()) + set_option_value(m_time_processor.machine_limits.machine_max_feedrate_y, i, line.y() * factor); - if (line.has_z()) - set_option_value(m_time_processor.machine_limits.machine_max_feedrate_z, i, line.z() * factor); + if (line.has_z()) + set_option_value(m_time_processor.machine_limits.machine_max_feedrate_z, i, line.z() * factor); - if (line.has_e()) - set_option_value(m_time_processor.machine_limits.machine_max_feedrate_e, i, line.e() * factor); + if (line.has_e()) + set_option_value(m_time_processor.machine_limits.machine_max_feedrate_e, i, line.e() * factor); + } } } void GCodeProcessor::process_M204(const GCodeReader::GCodeLine& line) { - if (!m_time_processor.machine_envelope_processing_enabled) - return; - float value; for (size_t i = 0; i < static_cast(PrintEstimatedTimeStatistics::ETimeMode::Count); ++i) { - if (line.has_value('S', value)) { - // Legacy acceleration format. This format is used by the legacy Marlin, MK2 or MK3 firmware, - // and it is also generated by Slic3r to control acceleration per extrusion type - // (there is a separate acceleration settings in Slicer for perimeter, first layer etc). - set_acceleration(static_cast(i), value); - if (line.has_value('T', value)) - set_option_value(m_time_processor.machine_limits.machine_max_acceleration_retracting, i, value); - } - else { - // New acceleration format, compatible with the upstream Marlin. - if (line.has_value('P', value)) + if (static_cast(i) == PrintEstimatedTimeStatistics::ETimeMode::Normal || + m_time_processor.machine_envelope_processing_enabled) { + if (line.has_value('S', value)) { + // Legacy acceleration format. This format is used by the legacy Marlin, MK2 or MK3 firmware, + // and it is also generated by Slic3r to control acceleration per extrusion type + // (there is a separate acceleration settings in Slicer for perimeter, first layer etc). set_acceleration(static_cast(i), value); - if (line.has_value('R', value)) - set_option_value(m_time_processor.machine_limits.machine_max_acceleration_retracting, i, value); - if (line.has_value('T', value)) { - // Interpret the T value as the travel acceleration in the new Marlin format. - //FIXME Prusa3D firmware currently does not support travel acceleration value independent from the extruding acceleration value. - // set_travel_acceleration(value); + if (line.has_value('T', value)) + set_option_value(m_time_processor.machine_limits.machine_max_acceleration_retracting, i, value); + } + else { + // New acceleration format, compatible with the upstream Marlin. + if (line.has_value('P', value)) + set_acceleration(static_cast(i), value); + if (line.has_value('R', value)) + set_option_value(m_time_processor.machine_limits.machine_max_acceleration_retracting, i, value); + if (line.has_value('T', value)) { + // Interpret the T value as the travel acceleration in the new Marlin format. + //FIXME Prusa3D firmware currently does not support travel acceleration value independent from the extruding acceleration value. + // set_travel_acceleration(value); + } } } } @@ -2221,31 +2224,31 @@ void GCodeProcessor::process_M204(const GCodeReader::GCodeLine& line) void GCodeProcessor::process_M205(const GCodeReader::GCodeLine& line) { - if (!m_time_processor.machine_envelope_processing_enabled) - return; - for (size_t i = 0; i < static_cast(PrintEstimatedTimeStatistics::ETimeMode::Count); ++i) { - if (line.has_x()) { - float max_jerk = line.x(); - set_option_value(m_time_processor.machine_limits.machine_max_jerk_x, i, max_jerk); - set_option_value(m_time_processor.machine_limits.machine_max_jerk_y, i, max_jerk); + if (static_cast(i) == PrintEstimatedTimeStatistics::ETimeMode::Normal || + m_time_processor.machine_envelope_processing_enabled) { + if (line.has_x()) { + float max_jerk = line.x(); + set_option_value(m_time_processor.machine_limits.machine_max_jerk_x, i, max_jerk); + set_option_value(m_time_processor.machine_limits.machine_max_jerk_y, i, max_jerk); + } + + if (line.has_y()) + set_option_value(m_time_processor.machine_limits.machine_max_jerk_y, i, line.y()); + + if (line.has_z()) + set_option_value(m_time_processor.machine_limits.machine_max_jerk_z, i, line.z()); + + if (line.has_e()) + set_option_value(m_time_processor.machine_limits.machine_max_jerk_e, i, line.e()); + + float value; + if (line.has_value('S', value)) + set_option_value(m_time_processor.machine_limits.machine_min_extruding_rate, i, value); + + if (line.has_value('T', value)) + set_option_value(m_time_processor.machine_limits.machine_min_travel_rate, i, value); } - - if (line.has_y()) - set_option_value(m_time_processor.machine_limits.machine_max_jerk_y, i, line.y()); - - if (line.has_z()) - set_option_value(m_time_processor.machine_limits.machine_max_jerk_z, i, line.z()); - - if (line.has_e()) - set_option_value(m_time_processor.machine_limits.machine_max_jerk_e, i, line.e()); - - float value; - if (line.has_value('S', value)) - set_option_value(m_time_processor.machine_limits.machine_min_extruding_rate, i, value); - - if (line.has_value('T', value)) - set_option_value(m_time_processor.machine_limits.machine_min_travel_rate, i, value); } } diff --git a/src/libslic3r/GCode/GCodeProcessor.hpp b/src/libslic3r/GCode/GCodeProcessor.hpp index 4cb2092e8f..5068d0fd62 100644 --- a/src/libslic3r/GCode/GCodeProcessor.hpp +++ b/src/libslic3r/GCode/GCodeProcessor.hpp @@ -242,7 +242,7 @@ namespace Slic3r { bool extruder_unloaded; // whether or not to export post-process the gcode to export lines M73 in it bool export_remaining_time_enabled; - // allow to skip the lines M201/M203/M204/M205 generated by GCode::print_machine_envelope() + // allow to skip the lines M201/M203/M204/M205 generated by GCode::print_machine_envelope() for non-Normal time estimate mode bool machine_envelope_processing_enabled; MachineEnvelopeConfig machine_limits; // Additional load / unload times for a filament exchange sequence. diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index fb7a81a4f9..4526bc51d9 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -4857,7 +4857,6 @@ void Plater::load_gcode(const wxString& filename) // process gcode GCodeProcessor processor; processor.enable_producers(true); - processor.enable_machine_envelope_processing(true); processor.process_file(filename.ToUTF8().data(), false); p->gcode_result = std::move(processor.extract_result()); From 1cf97b9c9332bb192b75ae65d448362dd6ded8b3 Mon Sep 17 00:00:00 2001 From: Pascal de Bruijn Date: Thu, 17 Dec 2020 13:04:39 +0100 Subject: [PATCH 071/135] Creality.ini: improve parameter consistency --- resources/profiles/Creality.ini | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/resources/profiles/Creality.ini b/resources/profiles/Creality.ini index eb75b9d472..f8802b8fc6 100644 --- a/resources/profiles/Creality.ini +++ b/resources/profiles/Creality.ini @@ -588,26 +588,26 @@ extruder_offset = 0x0 gcode_flavor = marlin silent_mode = 0 remaining_times = 0 -machine_max_acceleration_e = 10000 -machine_max_acceleration_extruding = 2000 -machine_max_acceleration_retracting = 1500 -machine_max_acceleration_x = 3000 -machine_max_acceleration_y = 3000 -machine_max_acceleration_z = 500 -machine_max_feedrate_e = 120 +machine_max_acceleration_e = 5000 +machine_max_acceleration_extruding = 500 +machine_max_acceleration_retracting = 1000 +machine_max_acceleration_x = 500 +machine_max_acceleration_y = 500 +machine_max_acceleration_z = 100 +machine_max_feedrate_e = 60 machine_max_feedrate_x = 500 machine_max_feedrate_y = 500 -machine_max_feedrate_z = 12 -machine_max_jerk_e = 2.5 -machine_max_jerk_x = 20 -machine_max_jerk_y = 20 +machine_max_feedrate_z = 10 +machine_max_jerk_e = 5 +machine_max_jerk_x = 8 +machine_max_jerk_y = 8 machine_max_jerk_z = 0.4 machine_min_extruding_rate = 0 machine_min_travel_rate = 0 layer_gcode = ;AFTER_LAYER_CHANGE\n;[layer_z] max_layer_height = 0.3 min_layer_height = 0.07 -max_print_height = 200 +max_print_height = 250 nozzle_diameter = 0.4 printer_notes = printer_settings_id = From 33c36e67774843525deea9c294b38d5c1a220f98 Mon Sep 17 00:00:00 2001 From: Pascal de Bruijn Date: Thu, 17 Dec 2020 13:05:40 +0100 Subject: [PATCH 072/135] creality.ini: enable conservative elefant_foot_compensation given the diversity of printers and bed types and a typical lack of auto bed levelling, it will be impossible to get a good fit for everyone by default. A very conservative 0.1 for elefant_foot_compensation is unlikely to cause overcompensation. And I'd prefer to undercompensate as opposed to overcompensate as a default. --- resources/profiles/Creality.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/profiles/Creality.ini b/resources/profiles/Creality.ini index f8802b8fc6..66614f1f6e 100644 --- a/resources/profiles/Creality.ini +++ b/resources/profiles/Creality.ini @@ -172,7 +172,7 @@ clip_multipart_objects = 1 compatible_printers = complete_objects = 0 dont_support_bridges = 1 -elefant_foot_compensation = 0 +elefant_foot_compensation = 0.1 ensure_vertical_shell_thickness = 1 external_fill_pattern = rectilinear external_perimeters_first = 0 From 6e3b4b6fd88a537a0e0d8d4507b18826b656d868 Mon Sep 17 00:00:00 2001 From: Lukas Matena Date: Thu, 17 Dec 2020 02:59:36 +0100 Subject: [PATCH 073/135] Random seam: optimization and fix of a possible infinite loop --- src/libslic3r/GCode/SeamPlacer.cpp | 78 ++++++++++++++++++++++++------ 1 file changed, 64 insertions(+), 14 deletions(-) diff --git a/src/libslic3r/GCode/SeamPlacer.cpp b/src/libslic3r/GCode/SeamPlacer.cpp index 4b74391e80..1acc160f0f 100644 --- a/src/libslic3r/GCode/SeamPlacer.cpp +++ b/src/libslic3r/GCode/SeamPlacer.cpp @@ -504,7 +504,7 @@ Point SeamPlacer::get_random_seam(size_t layer_idx, const Polygon& polygon, size bool* saw_custom) const { // Parametrize the polygon by its length. - std::vector lengths = polygon.parameter_by_length(); + const std::vector lengths = polygon.parameter_by_length(); // Which of the points are inside enforcers/blockers? std::vector enforcers_idxs; @@ -516,23 +516,73 @@ Point SeamPlacer::get_random_seam(size_t layer_idx, const Polygon& polygon, size if (saw_custom) *saw_custom = has_enforcers || has_blockers; - // FIXME FIXME FIXME: This is just to test the outcome and whether it is - // reasonable. The algorithm should really sum the length of all available - // pieces, get a random length and find the respective point. - float rand_len = 0.f; - size_t pt_idx = 0; - do { - rand_len = lengths.back() * (rand()/float(RAND_MAX)); - auto it = std::lower_bound(lengths.begin(), lengths.end(), rand_len); - pt_idx = it == lengths.end() ? 0 : (it-lengths.begin()-1); + assert(std::is_sorted(enforcers_idxs.begin(), enforcers_idxs.end())); + assert(std::is_sorted(blockers_idxs.begin(), blockers_idxs.end())); + std::vector edges; - // If there are blockers and the point is inside, repeat. - // If there are enforcers and the point is NOT inside, repeat. - } while ((has_blockers && std::binary_search(blockers_idxs.begin(), blockers_idxs.end(), pt_idx)) - || (has_enforcers && ! std::binary_search(enforcers_idxs.begin(), enforcers_idxs.end(), pt_idx))); + // Lambda to calculate lengths of all edges of interest. Last parameter + // decides whether to measure edges inside or outside idxs. + // Negative number = not an edge of interest. + auto get_valid_length = [&lengths](const std::vector& idxs, + std::vector& edges, + bool measure_inside_edges) -> float + { + // First mark edges we are interested in by assigning a positive number. + edges.assign(lengths.size()-1, measure_inside_edges ? -1.f : 1.f); + for (size_t i=0; i the edge between them is the enforcer/blocker. + bool inside_edge = ((i != idxs.size()-1 && idxs[i+1] == this_pt_idx + 1) + || (i == idxs.size()-1 && idxs.back() == lengths.size()-2 && idxs[0] == 0)); + if (inside_edge) + edges[this_pt_idx] = measure_inside_edges ? 1.f : -1.f; + } + // Now measure them. + float running_total = 0.f; + for (size_t i=0; i 0.f) { + edges[i] = lengths[i+1] - lengths[i]; + running_total += edges[i]; + } + } + return running_total; + }; + + // Find all seam candidate edges and their lengths. + float valid_length = 0.f; + if (has_enforcers) + valid_length = get_valid_length(enforcers_idxs, edges, true); + + if (! has_enforcers || valid_length == 0.f) { + // Second condition covers case with isolated enf points. Given how the painted + // triangles are projected, this should not happen. Stay on the safe side though. + if (has_blockers) + valid_length = get_valid_length(blockers_idxs, edges, false); + if (valid_length == 0.f) // No blockers or everything blocked - use the whole polygon. + valid_length = lengths.back(); + } + assert(valid_length != 0.f); + // Now generate a random length and find the respective edge. + float rand_len = valid_length * (rand()/float(RAND_MAX)); + size_t pt_idx = 0; // Index of the edge where to put the seam. + if (valid_length == lengths.back()) { + // Whole polygon is used for placing the seam. + auto it = std::lower_bound(lengths.begin(), lengths.end(), rand_len); + pt_idx = it == lengths.begin() ? 0 : (it-lengths.begin()-1); // this takes care of a corner case where rand() returns 0 + } else { + float running = 0.f; + for (size_t i=0; i 0.f ? edges[i] : 0.f; + if (running >= rand_len) { + pt_idx = i; + break; + } + } + } if (! has_enforcers && ! has_blockers) { // The polygon may be too coarse, calculate the point exactly. + assert(valid_length == lengths.back()); bool last_seg = pt_idx == polygon.points.size()-1; size_t next_idx = last_seg ? 0 : pt_idx+1; const Point& prev = polygon.points[pt_idx]; From aa69730bc2884f331e738ccbcdd3fddf85e96467 Mon Sep 17 00:00:00 2001 From: Lukas Matena Date: Thu, 17 Dec 2020 15:57:53 +0100 Subject: [PATCH 074/135] Revert recent changes in PresetUpdater error reporting This reverts commits: 57ba953 ("PresetUpdater - exceptions reformatted, not throwing an exception") 03028bb ("Improved exception throwing at copy file in preset updater") --- src/slic3r/Utils/PresetUpdater.cpp | 44 ++++++------------------------ 1 file changed, 8 insertions(+), 36 deletions(-) diff --git a/src/slic3r/Utils/PresetUpdater.cpp b/src/slic3r/Utils/PresetUpdater.cpp index fa0f7b38ed..60dfe05c78 100644 --- a/src/slic3r/Utils/PresetUpdater.cpp +++ b/src/slic3r/Utils/PresetUpdater.cpp @@ -54,44 +54,18 @@ static const char *INDEX_FILENAME = "index.idx"; static const char *TMP_EXTENSION = ".download"; -//void copy_file_fix(const fs::path &source, const fs::path &target) -void copy_file_fix(const fs::path& source, const fs::path& target,const std::string& caller_function_name) +void copy_file_fix(const fs::path &source, const fs::path &target) { static const auto perms = fs::owner_read | fs::owner_write | fs::group_read | fs::others_read; // aka 644 BOOST_LOG_TRIVIAL(debug) << format("PresetUpdater: Copying %1% -> %2%", source, target); // Make sure the file has correct permission both before and after we copy over it - boost::system::error_code ec; if (fs::exists(target)) { - fs::permissions(target, perms, ec); - if (ec) { - std::string msg = GUI::format( - _L("Copying of file %1% to %2% failed. Permissions fail at target file before copying.\n" - "Error message : %3%\n" - "This error happend during %4% phase."), - source, target, ec.message(), caller_function_name); -#if defined(__APPLE__) || defined(_WIN32) - throw Slic3r::CriticalException(msg); -#else - BOOST_LOG_TRIVIAL(debug) << msg; -#endif - } + fs::permissions(target, perms); } - ec.clear(); - fs::copy_file(source, target, fs::copy_option::overwrite_if_exists, ec); - if (ec) - throw Slic3r::CriticalException(GUI::format( - _L("Copying of file %1% to %2% failed.\n" - "Error message : %3%\nCopying was triggered by function: %4%"), - source, target, ec.message(), caller_function_name)); - ec.clear(); - fs::permissions(target, perms, ec); - if (ec) - throw Slic3r::CriticalException(GUI::format( - _L("Copying of file %1% to %2% failed. Permissions fail at target file after copying.\n" - "Error message : %3%\nCopying was triggered by function: %4%"), - source, target, ec.message(), caller_function_name)); + fs::copy_file(source, target, fs::copy_option::overwrite_if_exists); + fs::permissions(target, perms); } struct Update @@ -117,9 +91,7 @@ struct Update void install() const { - std::string error_message; - copy_file_fix(source, target, _utf8(L("install"))); - + copy_file_fix(source, target); } friend std::ostream& operator<<(std::ostream& os, const Update &self) @@ -410,7 +382,7 @@ void PresetUpdater::priv::check_install_indices() const if (! fs::exists(path_in_cache)) { BOOST_LOG_TRIVIAL(info) << "Install index from resources: " << path.filename(); - copy_file_fix(path, path_in_cache, _utf8(L("checking install indices"))); + copy_file_fix(path, path_in_cache); } else { Index idx_rsrc, idx_cache; idx_rsrc.load(path); @@ -418,7 +390,7 @@ void PresetUpdater::priv::check_install_indices() const if (idx_cache.version() < idx_rsrc.version()) { BOOST_LOG_TRIVIAL(info) << "Update index from resources: " << path.filename(); - copy_file_fix(path, path_in_cache, _utf8(L("checking install indices"))); + copy_file_fix(path, path_in_cache); } } } @@ -598,7 +570,7 @@ Updates PresetUpdater::priv::get_config_updates(const Semver &old_slic3r_version updates.updates.emplace_back(std::move(new_update)); // 'Install' the index in the vendor directory. This is used to memoize // offered updates and to not offer the same update again if it was cancelled by the user. - copy_file_fix(bundle_path_idx_to_install, bundle_path_idx, _utf8(L("getting config updates"))); + copy_file_fix(bundle_path_idx_to_install, bundle_path_idx); } else { BOOST_LOG_TRIVIAL(warning) << format("Index for vendor %1% indicates update (%2%) but the new bundle was found neither in cache nor resources", idx.vendor(), From b22a38d1d1417f8f7b6b1b773a76224be0ee4e1b Mon Sep 17 00:00:00 2001 From: YuSanka Date: Thu, 17 Dec 2020 16:51:25 +0100 Subject: [PATCH 075/135] Fix of "cut off text for filament type" (Related to #5444) --- src/slic3r/GUI/Field.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/slic3r/GUI/Field.cpp b/src/slic3r/GUI/Field.cpp index 4eae3e36e6..88c8331874 100644 --- a/src/slic3r/GUI/Field.cpp +++ b/src/slic3r/GUI/Field.cpp @@ -917,6 +917,12 @@ void Choice::BUILD() { #endif //__WXOSX__ } +#ifdef __WXGTK3__ + wxSize best_sz = temp->GetBestSize(); + if (best_sz.x > size.x) + temp->SetSize(best_sz); +#endif //__WXGTK3__ + temp->SetFont(Slic3r::GUI::wxGetApp().normal_font()); if (!wxOSX) temp->SetBackgroundStyle(wxBG_STYLE_PAINT); From 5bd1a57650e0ad43362ca64b850b28462e7f5bd8 Mon Sep 17 00:00:00 2001 From: Lukas Matena Date: Thu, 17 Dec 2020 18:07:35 +0100 Subject: [PATCH 076/135] Bumped up version number to 2.3.0-rc1 --- src/slic3r/GUI/GUI_App.cpp | 4 ++-- version.inc | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 9bf0a23b53..14cd57537b 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -675,8 +675,8 @@ bool GUI_App::init_opengl() void GUI_App::init_app_config() { // Profiles for the alpha are stored into the PrusaSlicer-alpha directory to not mix with the current release. -// SetAppName(SLIC3R_APP_KEY); - SetAppName(SLIC3R_APP_KEY "-beta"); + SetAppName(SLIC3R_APP_KEY); +// SetAppName(SLIC3R_APP_KEY "-beta"); // SetAppDisplayName(SLIC3R_APP_NAME); // Set the Slic3r data directory at the Slic3r XS module. diff --git a/version.inc b/version.inc index 5a0dc100d9..bfcd0f3276 100644 --- a/version.inc +++ b/version.inc @@ -3,7 +3,7 @@ set(SLIC3R_APP_NAME "PrusaSlicer") set(SLIC3R_APP_KEY "PrusaSlicer") -set(SLIC3R_VERSION "2.3.0-beta3") +set(SLIC3R_VERSION "2.3.0-rc1") set(SLIC3R_BUILD_ID "PrusaSlicer-${SLIC3R_VERSION}+UNKNOWN") set(SLIC3R_RC_VERSION "2,3,0,0") set(SLIC3R_RC_VERSION_DOTS "2.3.0.0") From 19b52da2603a20562dcb147e7a94a750b055d4e0 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Fri, 18 Dec 2020 08:40:17 +0100 Subject: [PATCH 077/135] Fix of #5501 - 3D Editor / Layer View widget DPI regression (Linux GTK3 specific) --- src/slic3r/GUI/GLCanvas3D.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 14892d678b..481a2d305a 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -5328,7 +5328,7 @@ void GLCanvas3D::_render_view_toolbar() const { GLToolbar& view_toolbar = wxGetApp().plater()->get_view_toolbar(); -#if ENABLE_RETINA_GL +#if __APPLE__ // m_view_toolbar.set_scale(m_retina_helper->get_scale_factor()); const float scale = m_retina_helper->get_scale_factor() * wxGetApp().toolbar_icon_scale(); view_toolbar.set_scale(scale); //! #ys_FIXME_experiment @@ -5337,7 +5337,7 @@ void GLCanvas3D::_render_view_toolbar() const // m_view_toolbar.set_scale(wxGetApp().em_unit()*0.1f); const float size = int(GLGizmosManager::Default_Icons_Size * wxGetApp().toolbar_icon_scale()); view_toolbar.set_icons_size(size); //! #ys_FIXME_experiment -#endif // ENABLE_RETINA_GL +#endif // __APPLE__ Size cnv_size = get_canvas_size(); float inv_zoom = (float)wxGetApp().plater()->get_camera().get_inv_zoom(); From 156019d9d0dcbf64ac7a43aa4620f06dfadcfff3 Mon Sep 17 00:00:00 2001 From: enricoturri1966 Date: Fri, 18 Dec 2020 09:03:18 +0100 Subject: [PATCH 078/135] Fixed color of shells in preview --- src/slic3r/GUI/GCodeViewer.cpp | 6 ++++++ src/slic3r/GUI/GCodeViewer.hpp | 1 + src/slic3r/GUI/GLCanvas3D.cpp | 5 ++++- 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/slic3r/GUI/GCodeViewer.cpp b/src/slic3r/GUI/GCodeViewer.cpp index ed35a74c09..5a3cff9a48 100644 --- a/src/slic3r/GUI/GCodeViewer.cpp +++ b/src/slic3r/GUI/GCodeViewer.cpp @@ -452,6 +452,12 @@ void GCodeViewer::refresh_render_paths() } #endif // ENABLE_RENDER_PATH_REFRESH_AFTER_OPTIONS_CHANGE +void GCodeViewer::update_shells_color_by_extruder(const DynamicPrintConfig* config) +{ + if (config != nullptr) + m_shells.volumes.update_colors_by_extruder(config); +} + void GCodeViewer::reset() { m_initialized = false; diff --git a/src/slic3r/GUI/GCodeViewer.hpp b/src/slic3r/GUI/GCodeViewer.hpp index 2c769b2c82..8a3f620153 100644 --- a/src/slic3r/GUI/GCodeViewer.hpp +++ b/src/slic3r/GUI/GCodeViewer.hpp @@ -472,6 +472,7 @@ public: #if ENABLE_RENDER_PATH_REFRESH_AFTER_OPTIONS_CHANGE void refresh_render_paths(); #endif // ENABLE_RENDER_PATH_REFRESH_AFTER_OPTIONS_CHANGE + void update_shells_color_by_extruder(const DynamicPrintConfig* config); void reset(); void render() const; diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 14892d678b..ac13ec4394 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -2288,8 +2288,11 @@ static void reserve_new_volume_finalize_old_volume(GLVolume& vol_new, GLVolume& void GLCanvas3D::load_gcode_preview(const GCodeProcessor::Result& gcode_result) { m_gcode_viewer.load(gcode_result, *this->fff_print(), m_initialized); - if (wxGetApp().is_editor()) + + if (wxGetApp().is_editor()) { + m_gcode_viewer.update_shells_color_by_extruder(m_config); _show_warning_texture_if_needed(WarningTexture::ToolpathOutside); + } } void GLCanvas3D::refresh_gcode_preview(const GCodeProcessor::Result& gcode_result, const std::vector& str_tool_colors) From 240dc8b69755b60906919479cdb0badb179107f4 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Fri, 18 Dec 2020 11:27:28 +0100 Subject: [PATCH 079/135] Follow-up to https://github.com/prusa3d/PrusaSlicer/commit/19b52da2603a20562dcb147e7a94a750b055d4e0: Fixed scale for view toolbar on HDPI (GTK3 specific) --- src/slic3r/GUI/GLCanvas3D.cpp | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 6357090376..f78307725c 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -5331,16 +5331,18 @@ void GLCanvas3D::_render_view_toolbar() const { GLToolbar& view_toolbar = wxGetApp().plater()->get_view_toolbar(); -#if __APPLE__ -// m_view_toolbar.set_scale(m_retina_helper->get_scale_factor()); +#if ENABLE_RETINA_GL const float scale = m_retina_helper->get_scale_factor() * wxGetApp().toolbar_icon_scale(); - view_toolbar.set_scale(scale); //! #ys_FIXME_experiment -#else -// m_view_toolbar.set_scale(m_canvas->GetContentScaleFactor()); -// m_view_toolbar.set_scale(wxGetApp().em_unit()*0.1f); - const float size = int(GLGizmosManager::Default_Icons_Size * wxGetApp().toolbar_icon_scale()); - view_toolbar.set_icons_size(size); //! #ys_FIXME_experiment +#if __APPLE__ + view_toolbar.set_scale(scale); +#else // if GTK3 + const float size = int(GLGizmosManager::Default_Icons_Size * scale); + view_toolbar.set_icons_size(size); #endif // __APPLE__ +#else + const float size = int(GLGizmosManager::Default_Icons_Size * wxGetApp().toolbar_icon_scale()); + view_toolbar.set_icons_size(size); +#endif // ENABLE_RETINA_GL Size cnv_size = get_canvas_size(); float inv_zoom = (float)wxGetApp().plater()->get_camera().get_inv_zoom(); From 8849aa77dc5fe4eacaafd29c274dcbdacc638aef Mon Sep 17 00:00:00 2001 From: YuSanka Date: Fri, 18 Dec 2020 11:31:14 +0100 Subject: [PATCH 080/135] Decrease min height for ObjectList (related to #5462) --- src/slic3r/GUI/GUI_ObjectList.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index f0c23f1d47..ed3e9199d2 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -261,10 +261,10 @@ ObjectList::~ObjectList() void ObjectList::set_min_height() { /* Temporary workaround for the correct behavior of the Scrolled sidebar panel: - * change min hight of object list to the normal min value (35 * wxGetApp().em_unit()) + * change min hight of object list to the normal min value (20 * wxGetApp().em_unit()) * after first whole Mainframe updating/layouting */ - const int list_min_height = 35 * wxGetApp().em_unit(); + const int list_min_height = 20 * wxGetApp().em_unit(); if (this->GetMinSize().GetY() > list_min_height) this->SetMinSize(wxSize(-1, list_min_height)); } @@ -274,7 +274,7 @@ void ObjectList::create_objects_ctrl() { /* Temporary workaround for the correct behavior of the Scrolled sidebar panel: * 1. set a height of the list to some big value - * 2. change it to the normal min value (15 * wxGetApp().em_unit()) after first whole Mainframe updating/layouting + * 2. change it to the normal min value (20 * wxGetApp().em_unit()) after first whole Mainframe updating/layouting */ SetMinSize(wxSize(-1, 3000)); From 8f3baeb1c9e72a8c080e167155c3437fd4904c06 Mon Sep 17 00:00:00 2001 From: Lukas Matena Date: Fri, 18 Dec 2020 11:14:26 +0100 Subject: [PATCH 081/135] Fix of #5410 (Ironing untick/tick bug) This is a follow-up of commit b1b7a5a which fixed several similar bugs --- src/libslic3r/PrintObject.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp index 98be93b31f..203f24d6d0 100644 --- a/src/libslic3r/PrintObject.cpp +++ b/src/libslic3r/PrintObject.cpp @@ -655,6 +655,7 @@ bool PrintObject::invalidate_step(PrintObjectStep step) } else if (step == posPrepareInfill) { invalidated |= this->invalidate_steps({ posInfill, posIroning }); } else if (step == posInfill) { + invalidated |= this->invalidate_steps({ posIroning }); invalidated |= m_print->invalidate_steps({ psSkirt, psBrim }); } else if (step == posSlice) { invalidated |= this->invalidate_steps({ posPerimeters, posPrepareInfill, posInfill, posIroning, posSupportMaterial }); From 1cbe2bd87e1ac91121984b9e416c9f2bbba9b1e0 Mon Sep 17 00:00:00 2001 From: Lukas Matena Date: Fri, 18 Dec 2020 13:04:28 +0100 Subject: [PATCH 082/135] Added a missing translation macro --- src/libslic3r/GCode.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 830fff8f98..b07db889c7 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -1258,8 +1258,8 @@ void GCode::_do_export(Print& print, FILE* file, ThumbnailsGeneratorCallback thu // (See https://github.com/prusa3d/PrusaSlicer/issues/5441.) if (overlap) { print.active_step_add_warning(PrintStateBase::WarningLevel::CRITICAL, - L("Your print is very close to the priming regions. " - "Make sure there is no collision.")); + _(L("Your print is very close to the priming regions. " + "Make sure there is no collision."))); } else { // Just continue printing, no action necessary. } From d49f85572b1d5f2ca14c6f504ba448ddb5c8fa22 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Fri, 18 Dec 2020 13:28:06 +0100 Subject: [PATCH 083/135] Added a missing translation macro --- src/slic3r/GUI/GUI_ObjectManipulation.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/slic3r/GUI/GUI_ObjectManipulation.cpp b/src/slic3r/GUI/GUI_ObjectManipulation.cpp index 1b5e9a2310..8a4c280961 100644 --- a/src/slic3r/GUI/GUI_ObjectManipulation.cpp +++ b/src/slic3r/GUI/GUI_ObjectManipulation.cpp @@ -420,7 +420,7 @@ ObjectManipulation::ObjectManipulation(wxWindow* parent) : m_main_grid_sizer->Add(editors_grid_sizer, 1, wxEXPAND); - m_check_inch = new wxCheckBox(parent, wxID_ANY, "Inches"); + m_check_inch = new wxCheckBox(parent, wxID_ANY, _L("Inches")); m_check_inch->SetFont(wxGetApp().normal_font()); m_check_inch->SetValue(m_imperial_units); From 22acf3602c09b6dd580b6029db15ae84748c5bd7 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Fri, 18 Dec 2020 13:59:53 +0100 Subject: [PATCH 084/135] localization: Updated PrusaSlicer.pot --- resources/localization/PrusaSlicer.pot | 894 ++++++++++++------------- 1 file changed, 439 insertions(+), 455 deletions(-) diff --git a/resources/localization/PrusaSlicer.pot b/resources/localization/PrusaSlicer.pot index 54b151153f..85eab0e3e1 100644 --- a/resources/localization/PrusaSlicer.pot +++ b/resources/localization/PrusaSlicer.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-12-16 16:54+0100\n" +"POT-Creation-Date: 2020-12-18 13:59+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -39,16 +39,16 @@ msgid "About %s" msgstr "" #: src/slic3r/GUI/AboutDialog.cpp:238 src/slic3r/GUI/AboutDialog.cpp:361 -#: src/slic3r/GUI/GUI_App.cpp:234 src/slic3r/GUI/MainFrame.cpp:151 +#: src/slic3r/GUI/GUI_App.cpp:235 src/slic3r/GUI/MainFrame.cpp:151 msgid "Version" msgstr "" #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:265 src/slic3r/GUI/GUI_App.cpp:239 +#: src/slic3r/GUI/AboutDialog.cpp:265 src/slic3r/GUI/GUI_App.cpp:240 msgid "is licensed under the" msgstr "" -#: src/slic3r/GUI/AboutDialog.cpp:266 src/slic3r/GUI/GUI_App.cpp:239 +#: src/slic3r/GUI/AboutDialog.cpp:266 src/slic3r/GUI/GUI_App.cpp:240 msgid "GNU Affero General Public License, version 3" msgstr "" @@ -164,11 +164,11 @@ msgid "" "rectangle." msgstr "" -#: src/slic3r/GUI/BedShapeDialog.cpp:129 src/slic3r/GUI/ConfigWizard.cpp:237 -#: src/slic3r/GUI/ConfigWizard.cpp:1359 src/slic3r/GUI/ConfigWizard.cpp:1373 +#: src/slic3r/GUI/BedShapeDialog.cpp:129 src/slic3r/GUI/ConfigWizard.cpp:242 +#: src/slic3r/GUI/ConfigWizard.cpp:1368 src/slic3r/GUI/ConfigWizard.cpp:1382 #: src/slic3r/GUI/ExtruderSequenceDialog.cpp:88 -#: src/slic3r/GUI/GCodeViewer.cpp:2331 src/slic3r/GUI/GCodeViewer.cpp:2337 -#: src/slic3r/GUI/GCodeViewer.cpp:2345 src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:179 +#: src/slic3r/GUI/GCodeViewer.cpp:2337 src/slic3r/GUI/GCodeViewer.cpp:2343 +#: src/slic3r/GUI/GCodeViewer.cpp:2351 src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:179 #: src/slic3r/GUI/GUI_ObjectLayers.cpp:145 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:341 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:418 @@ -296,7 +296,7 @@ msgstr "" msgid "Choose an STL file to import bed model from:" msgstr "" -#: src/slic3r/GUI/BedShapeDialog.hpp:98 src/slic3r/GUI/ConfigWizard.cpp:1318 +#: src/slic3r/GUI/BedShapeDialog.hpp:98 src/slic3r/GUI/ConfigWizard.cpp:1327 msgid "Bed Shape" msgstr "" @@ -553,125 +553,125 @@ msgstr "" msgid "Configuration Snapshots" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:237 +#: src/slic3r/GUI/ConfigWizard.cpp:242 msgid "nozzle" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:241 +#: src/slic3r/GUI/ConfigWizard.cpp:246 msgid "Alternate nozzles:" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:305 +#: src/slic3r/GUI/ConfigWizard.cpp:310 msgid "All standard" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:305 +#: src/slic3r/GUI/ConfigWizard.cpp:310 msgid "Standard" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:306 src/slic3r/GUI/ConfigWizard.cpp:596 +#: src/slic3r/GUI/ConfigWizard.cpp:311 src/slic3r/GUI/ConfigWizard.cpp:605 #: src/slic3r/GUI/Tab.cpp:3565 src/slic3r/GUI/UnsavedChangesDialog.cpp:933 msgid "All" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:307 src/slic3r/GUI/ConfigWizard.cpp:597 +#: src/slic3r/GUI/ConfigWizard.cpp:312 src/slic3r/GUI/ConfigWizard.cpp:606 #: src/slic3r/GUI/DoubleSlider.cpp:1859 src/slic3r/GUI/Plater.cpp:361 #: src/slic3r/GUI/Plater.cpp:504 msgid "None" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:443 +#: src/slic3r/GUI/ConfigWizard.cpp:452 #, possible-c-format msgid "Welcome to the %s Configuration Assistant" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:445 +#: src/slic3r/GUI/ConfigWizard.cpp:454 #, possible-c-format msgid "Welcome to the %s Configuration Wizard" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:447 +#: src/slic3r/GUI/ConfigWizard.cpp:456 msgid "Welcome" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:449 +#: src/slic3r/GUI/ConfigWizard.cpp:458 #, possible-c-format msgid "" "Hello, welcome to %s! This %s helps you with the initial configuration; just " "a few settings and you will be ready to print." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:454 +#: src/slic3r/GUI/ConfigWizard.cpp:463 msgid "Remove user profiles (a snapshot will be taken beforehand)" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:497 +#: src/slic3r/GUI/ConfigWizard.cpp:506 #, possible-c-format msgid "%s Family" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:585 +#: src/slic3r/GUI/ConfigWizard.cpp:594 msgid "Printer:" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:587 +#: src/slic3r/GUI/ConfigWizard.cpp:596 msgid "Vendor:" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:588 +#: src/slic3r/GUI/ConfigWizard.cpp:597 msgid "Profile:" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:660 src/slic3r/GUI/ConfigWizard.cpp:810 -#: src/slic3r/GUI/ConfigWizard.cpp:871 src/slic3r/GUI/ConfigWizard.cpp:1008 +#: src/slic3r/GUI/ConfigWizard.cpp:669 src/slic3r/GUI/ConfigWizard.cpp:819 +#: src/slic3r/GUI/ConfigWizard.cpp:880 src/slic3r/GUI/ConfigWizard.cpp:1017 msgid "(All)" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:689 +#: src/slic3r/GUI/ConfigWizard.cpp:698 msgid "" "Filaments marked with * are not compatible with some installed " "printers." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:692 +#: src/slic3r/GUI/ConfigWizard.cpp:701 msgid "All installed printers are compatible with the selected filament." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:712 +#: src/slic3r/GUI/ConfigWizard.cpp:721 msgid "" "Only the following installed printers are compatible with the selected " "filament:" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1098 +#: src/slic3r/GUI/ConfigWizard.cpp:1107 msgid "Custom Printer Setup" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1098 +#: src/slic3r/GUI/ConfigWizard.cpp:1107 msgid "Custom Printer" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1100 +#: src/slic3r/GUI/ConfigWizard.cpp:1109 msgid "Define a custom printer profile" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1102 +#: src/slic3r/GUI/ConfigWizard.cpp:1111 msgid "Custom profile name:" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1127 +#: src/slic3r/GUI/ConfigWizard.cpp:1136 msgid "Automatic updates" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1127 +#: src/slic3r/GUI/ConfigWizard.cpp:1136 msgid "Updates" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1135 src/slic3r/GUI/Preferences.cpp:94 +#: src/slic3r/GUI/ConfigWizard.cpp:1144 src/slic3r/GUI/Preferences.cpp:94 msgid "Check for application updates" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1139 +#: src/slic3r/GUI/ConfigWizard.cpp:1148 #, possible-c-format msgid "" "If enabled, %s checks for new application versions online. When a new " @@ -680,11 +680,11 @@ msgid "" "notification mechanisms, no automatic installation is done." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1145 src/slic3r/GUI/Preferences.cpp:129 +#: src/slic3r/GUI/ConfigWizard.cpp:1154 src/slic3r/GUI/Preferences.cpp:129 msgid "Update built-in Presets automatically" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1149 +#: src/slic3r/GUI/ConfigWizard.cpp:1158 #, possible-c-format msgid "" "If enabled, %s downloads updates of built-in system presets in the " @@ -693,30 +693,30 @@ msgid "" "startup." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1152 +#: src/slic3r/GUI/ConfigWizard.cpp:1161 msgid "" "Updates are never applied without user's consent and never overwrite user's " "customized settings." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1157 +#: src/slic3r/GUI/ConfigWizard.cpp:1166 msgid "" "Additionally a backup snapshot of the whole configuration is created before " "an update is applied." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1164 src/slic3r/GUI/GUI_ObjectList.cpp:1825 -#: src/slic3r/GUI/GUI_ObjectList.cpp:4567 src/slic3r/GUI/Plater.cpp:3112 -#: src/slic3r/GUI/Plater.cpp:3953 src/slic3r/GUI/Plater.cpp:3984 +#: src/slic3r/GUI/ConfigWizard.cpp:1173 src/slic3r/GUI/GUI_ObjectList.cpp:1825 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4567 src/slic3r/GUI/Plater.cpp:3116 +#: src/slic3r/GUI/Plater.cpp:4001 src/slic3r/GUI/Plater.cpp:4032 msgid "Reload from disk" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1167 +#: src/slic3r/GUI/ConfigWizard.cpp:1176 msgid "" "Export full pathnames of models and parts sources into 3mf and amf files" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1171 +#: src/slic3r/GUI/ConfigWizard.cpp:1180 msgid "" "If enabled, allows the Reload from disk command to automatically find and " "load the files when invoked.\n" @@ -724,23 +724,23 @@ msgid "" "using an open file dialog." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1181 +#: src/slic3r/GUI/ConfigWizard.cpp:1190 msgid "Files association" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1183 src/slic3r/GUI/Preferences.cpp:112 +#: src/slic3r/GUI/ConfigWizard.cpp:1192 src/slic3r/GUI/Preferences.cpp:112 msgid "Associate .3mf files to PrusaSlicer" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1184 src/slic3r/GUI/Preferences.cpp:119 +#: src/slic3r/GUI/ConfigWizard.cpp:1193 src/slic3r/GUI/Preferences.cpp:119 msgid "Associate .stl files to PrusaSlicer" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1195 +#: src/slic3r/GUI/ConfigWizard.cpp:1204 msgid "View mode" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1197 +#: src/slic3r/GUI/ConfigWizard.cpp:1206 msgid "" "PrusaSlicer's user interfaces comes in three variants:\n" "Simple, Advanced, and Expert.\n" @@ -749,221 +749,221 @@ msgid "" "fine-tuning, they are suitable for advanced and expert users, respectively." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1202 +#: src/slic3r/GUI/ConfigWizard.cpp:1211 msgid "Simple mode" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1203 +#: src/slic3r/GUI/ConfigWizard.cpp:1212 msgid "Advanced mode" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1204 +#: src/slic3r/GUI/ConfigWizard.cpp:1213 msgid "Expert mode" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1210 +#: src/slic3r/GUI/ConfigWizard.cpp:1219 msgid "The size of the object can be specified in inches" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1211 +#: src/slic3r/GUI/ConfigWizard.cpp:1220 msgid "Use inches" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1245 +#: src/slic3r/GUI/ConfigWizard.cpp:1254 msgid "Other Vendors" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1249 +#: src/slic3r/GUI/ConfigWizard.cpp:1258 #, possible-c-format msgid "Pick another vendor supported by %s" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1280 +#: src/slic3r/GUI/ConfigWizard.cpp:1289 msgid "Firmware Type" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1280 src/slic3r/GUI/Tab.cpp:2172 +#: src/slic3r/GUI/ConfigWizard.cpp:1289 src/slic3r/GUI/Tab.cpp:2172 msgid "Firmware" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1284 +#: src/slic3r/GUI/ConfigWizard.cpp:1293 msgid "Choose the type of firmware used by your printer." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1318 +#: src/slic3r/GUI/ConfigWizard.cpp:1327 msgid "Bed Shape and Size" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1321 +#: src/slic3r/GUI/ConfigWizard.cpp:1330 msgid "Set the shape of your printer's bed." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1341 +#: src/slic3r/GUI/ConfigWizard.cpp:1350 msgid "Filament and Nozzle Diameters" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1341 +#: src/slic3r/GUI/ConfigWizard.cpp:1350 msgid "Print Diameters" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1355 +#: src/slic3r/GUI/ConfigWizard.cpp:1364 msgid "Enter the diameter of your printer's hot end nozzle." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1358 +#: src/slic3r/GUI/ConfigWizard.cpp:1367 msgid "Nozzle Diameter:" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1368 +#: src/slic3r/GUI/ConfigWizard.cpp:1377 msgid "Enter the diameter of your filament." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1369 +#: src/slic3r/GUI/ConfigWizard.cpp:1378 msgid "" "Good precision is required, so use a caliper and do multiple measurements " "along the filament, then compute the average." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1372 +#: src/slic3r/GUI/ConfigWizard.cpp:1381 msgid "Filament Diameter:" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1406 +#: src/slic3r/GUI/ConfigWizard.cpp:1415 msgid "Nozzle and Bed Temperatures" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1406 +#: src/slic3r/GUI/ConfigWizard.cpp:1415 msgid "Temperatures" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1422 +#: src/slic3r/GUI/ConfigWizard.cpp:1431 msgid "Enter the temperature needed for extruding your filament." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1423 +#: src/slic3r/GUI/ConfigWizard.cpp:1432 msgid "A rule of thumb is 160 to 230 °C for PLA, and 215 to 250 °C for ABS." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1426 +#: src/slic3r/GUI/ConfigWizard.cpp:1435 msgid "Extrusion Temperature:" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1427 src/slic3r/GUI/ConfigWizard.cpp:1441 +#: src/slic3r/GUI/ConfigWizard.cpp:1436 src/slic3r/GUI/ConfigWizard.cpp:1450 #: src/libslic3r/PrintConfig.cpp:202 src/libslic3r/PrintConfig.cpp:950 #: src/libslic3r/PrintConfig.cpp:994 src/libslic3r/PrintConfig.cpp:2294 msgid "°C" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1436 +#: src/slic3r/GUI/ConfigWizard.cpp:1445 msgid "" "Enter the bed temperature needed for getting your filament to stick to your " "heated bed." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1437 +#: src/slic3r/GUI/ConfigWizard.cpp:1446 msgid "" "A rule of thumb is 60 °C for PLA and 110 °C for ABS. Leave zero if you have " "no heated bed." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1440 +#: src/slic3r/GUI/ConfigWizard.cpp:1449 msgid "Bed Temperature:" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1900 src/slic3r/GUI/ConfigWizard.cpp:2573 +#: src/slic3r/GUI/ConfigWizard.cpp:1909 src/slic3r/GUI/ConfigWizard.cpp:2582 msgid "Filaments" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1900 src/slic3r/GUI/ConfigWizard.cpp:2575 +#: src/slic3r/GUI/ConfigWizard.cpp:1909 src/slic3r/GUI/ConfigWizard.cpp:2584 msgid "SLA Materials" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1954 +#: src/slic3r/GUI/ConfigWizard.cpp:1963 msgid "FFF Technology Printers" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1959 +#: src/slic3r/GUI/ConfigWizard.cpp:1968 msgid "SLA Technology Printers" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:2265 src/slic3r/GUI/DoubleSlider.cpp:2245 +#: src/slic3r/GUI/ConfigWizard.cpp:2274 src/slic3r/GUI/DoubleSlider.cpp:2245 #: src/slic3r/GUI/DoubleSlider.cpp:2265 src/slic3r/GUI/GUI.cpp:244 msgid "Notice" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:2286 +#: src/slic3r/GUI/ConfigWizard.cpp:2295 msgid "The following FFF printer models have no filament selected:" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:2290 +#: src/slic3r/GUI/ConfigWizard.cpp:2299 msgid "Do you want to select default filaments for these FFF printer models?" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:2304 +#: src/slic3r/GUI/ConfigWizard.cpp:2313 msgid "The following SLA printer models have no materials selected:" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:2308 +#: src/slic3r/GUI/ConfigWizard.cpp:2317 msgid "Do you want to select default SLA materials for these printer models?" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:2536 +#: src/slic3r/GUI/ConfigWizard.cpp:2545 msgid "Select all standard printers" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:2539 +#: src/slic3r/GUI/ConfigWizard.cpp:2548 msgid "< &Back" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:2540 +#: src/slic3r/GUI/ConfigWizard.cpp:2549 msgid "&Next >" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:2541 +#: src/slic3r/GUI/ConfigWizard.cpp:2550 msgid "&Finish" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:2542 src/slic3r/GUI/FirmwareDialog.cpp:151 +#: src/slic3r/GUI/ConfigWizard.cpp:2551 src/slic3r/GUI/FirmwareDialog.cpp:151 #: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:248 #: src/slic3r/GUI/ProgressStatusBar.cpp:26 #: src/slic3r/GUI/UnsavedChangesDialog.cpp:656 msgid "Cancel" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:2555 +#: src/slic3r/GUI/ConfigWizard.cpp:2564 msgid "Prusa FFF Technology Printers" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:2558 +#: src/slic3r/GUI/ConfigWizard.cpp:2567 msgid "Prusa MSLA Technology Printers" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:2573 +#: src/slic3r/GUI/ConfigWizard.cpp:2582 msgid "Filament Profiles Selection" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:2573 src/slic3r/GUI/ConfigWizard.cpp:2575 +#: src/slic3r/GUI/ConfigWizard.cpp:2582 src/slic3r/GUI/ConfigWizard.cpp:2584 #: src/slic3r/GUI/GUI_ObjectList.cpp:4144 msgid "Type:" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:2575 +#: src/slic3r/GUI/ConfigWizard.cpp:2584 msgid "SLA Material Profiles Selection" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:2678 +#: src/slic3r/GUI/ConfigWizard.cpp:2701 msgid "Configuration Assistant" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:2679 +#: src/slic3r/GUI/ConfigWizard.cpp:2702 msgid "Configuration &Assistant" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:2681 +#: src/slic3r/GUI/ConfigWizard.cpp:2704 msgid "Configuration Wizard" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:2682 +#: src/slic3r/GUI/ConfigWizard.cpp:2705 msgid "Configuration &Wizard" msgstr "" @@ -1338,28 +1338,28 @@ msgstr "" msgid "%s doesn't support percentage" msgstr "" -#: src/slic3r/GUI/Field.cpp:253 src/slic3r/GUI/Field.cpp:303 -#: src/slic3r/GUI/Field.cpp:1510 src/slic3r/GUI/GUI_ObjectLayers.cpp:413 +#: src/slic3r/GUI/Field.cpp:253 src/slic3r/GUI/Field.cpp:307 +#: src/slic3r/GUI/Field.cpp:1520 src/slic3r/GUI/GUI_ObjectLayers.cpp:413 msgid "Invalid numeric input." msgstr "" -#: src/slic3r/GUI/Field.cpp:269 +#: src/slic3r/GUI/Field.cpp:264 #, possible-c-format msgid "" "Input value is out of range\n" "Are you sure that %s is a correct value and that you want to continue?" msgstr "" -#: src/slic3r/GUI/Field.cpp:271 src/slic3r/GUI/Field.cpp:322 +#: src/slic3r/GUI/Field.cpp:266 src/slic3r/GUI/Field.cpp:326 msgid "Parameter validation" msgstr "" -#: src/slic3r/GUI/Field.cpp:277 src/slic3r/GUI/Field.cpp:369 -#: src/slic3r/GUI/Field.cpp:1522 +#: src/slic3r/GUI/Field.cpp:279 src/slic3r/GUI/Field.cpp:373 +#: src/slic3r/GUI/Field.cpp:1532 msgid "Input value is out of range" msgstr "" -#: src/slic3r/GUI/Field.cpp:319 +#: src/slic3r/GUI/Field.cpp:323 #, possible-c-format msgid "" "Do you mean %s%% instead of %s %s?\n" @@ -1367,7 +1367,7 @@ msgid "" "or NO if you are sure that %s %s is a correct value." msgstr "" -#: src/slic3r/GUI/Field.cpp:377 +#: src/slic3r/GUI/Field.cpp:381 msgid "" "Invalid input format. Expected vector of dimensions in the following format: " "\"%1%\"" @@ -1503,218 +1503,218 @@ msgstr "" msgid "Tool position" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:1010 +#: src/slic3r/GUI/GCodeViewer.cpp:1016 msgid "Generating toolpaths" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:1399 +#: src/slic3r/GUI/GCodeViewer.cpp:1405 msgid "Generating vertex buffer" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:1490 +#: src/slic3r/GUI/GCodeViewer.cpp:1496 msgid "Generating index buffers" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2219 +#: src/slic3r/GUI/GCodeViewer.cpp:2225 msgid "Click to hide" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2219 +#: src/slic3r/GUI/GCodeViewer.cpp:2225 msgid "Click to show" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2331 +#: src/slic3r/GUI/GCodeViewer.cpp:2337 msgid "up to" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2337 +#: src/slic3r/GUI/GCodeViewer.cpp:2343 msgid "above" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2345 +#: src/slic3r/GUI/GCodeViewer.cpp:2351 msgid "from" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2345 +#: src/slic3r/GUI/GCodeViewer.cpp:2351 msgid "to" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2373 src/slic3r/GUI/GCodeViewer.cpp:2381 +#: src/slic3r/GUI/GCodeViewer.cpp:2379 src/slic3r/GUI/GCodeViewer.cpp:2387 #: src/slic3r/GUI/GUI_Preview.cpp:214 src/slic3r/GUI/GUI_Preview.cpp:533 #: src/slic3r/GUI/GUI_Preview.cpp:942 msgid "Feature type" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2373 src/slic3r/GUI/GCodeViewer.cpp:2381 +#: src/slic3r/GUI/GCodeViewer.cpp:2379 src/slic3r/GUI/GCodeViewer.cpp:2387 #: src/slic3r/GUI/RammingChart.cpp:76 msgid "Time" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2381 +#: src/slic3r/GUI/GCodeViewer.cpp:2387 msgid "Percentage" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2384 +#: src/slic3r/GUI/GCodeViewer.cpp:2390 msgid "Height (mm)" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2385 +#: src/slic3r/GUI/GCodeViewer.cpp:2391 msgid "Width (mm)" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2386 +#: src/slic3r/GUI/GCodeViewer.cpp:2392 msgid "Speed (mm/s)" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2387 +#: src/slic3r/GUI/GCodeViewer.cpp:2393 msgid "Fan Speed (%)" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2388 +#: src/slic3r/GUI/GCodeViewer.cpp:2394 msgid "Volumetric flow rate (mm³/s)" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2389 src/slic3r/GUI/GUI_Preview.cpp:220 +#: src/slic3r/GUI/GCodeViewer.cpp:2395 src/slic3r/GUI/GUI_Preview.cpp:220 #: src/slic3r/GUI/GUI_Preview.cpp:326 src/slic3r/GUI/GUI_Preview.cpp:471 #: src/slic3r/GUI/GUI_Preview.cpp:532 src/slic3r/GUI/GUI_Preview.cpp:878 #: src/slic3r/GUI/GUI_Preview.cpp:942 msgid "Tool" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2390 src/slic3r/GUI/GUI_Preview.cpp:221 +#: src/slic3r/GUI/GCodeViewer.cpp:2396 src/slic3r/GUI/GUI_Preview.cpp:221 #: src/slic3r/GUI/GUI_Preview.cpp:530 src/slic3r/GUI/GUI_Preview.cpp:941 msgid "Color Print" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2426 src/slic3r/GUI/GCodeViewer.cpp:2461 -#: src/slic3r/GUI/GCodeViewer.cpp:2466 src/slic3r/GUI/GUI_ObjectList.cpp:312 +#: src/slic3r/GUI/GCodeViewer.cpp:2432 src/slic3r/GUI/GCodeViewer.cpp:2467 +#: src/slic3r/GUI/GCodeViewer.cpp:2472 src/slic3r/GUI/GUI_ObjectList.cpp:312 #: src/slic3r/GUI/wxExtensions.cpp:519 src/libslic3r/PrintConfig.cpp:547 msgid "Extruder" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2437 +#: src/slic3r/GUI/GCodeViewer.cpp:2443 msgid "Default color" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2461 +#: src/slic3r/GUI/GCodeViewer.cpp:2467 msgid "default color" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2556 src/slic3r/GUI/GCodeViewer.cpp:2602 +#: src/slic3r/GUI/GCodeViewer.cpp:2562 src/slic3r/GUI/GCodeViewer.cpp:2608 msgid "Color change" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2575 src/slic3r/GUI/GCodeViewer.cpp:2600 +#: src/slic3r/GUI/GCodeViewer.cpp:2581 src/slic3r/GUI/GCodeViewer.cpp:2606 msgid "Print" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2601 src/slic3r/GUI/GCodeViewer.cpp:2618 +#: src/slic3r/GUI/GCodeViewer.cpp:2607 src/slic3r/GUI/GCodeViewer.cpp:2624 msgid "Pause" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2606 src/slic3r/GUI/GCodeViewer.cpp:2609 +#: src/slic3r/GUI/GCodeViewer.cpp:2612 src/slic3r/GUI/GCodeViewer.cpp:2615 msgid "Event" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2606 src/slic3r/GUI/GCodeViewer.cpp:2609 +#: src/slic3r/GUI/GCodeViewer.cpp:2612 src/slic3r/GUI/GCodeViewer.cpp:2615 msgid "Remaining time" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2609 +#: src/slic3r/GUI/GCodeViewer.cpp:2615 msgid "Duration" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2644 src/slic3r/GUI/GUI_Preview.cpp:1023 +#: src/slic3r/GUI/GCodeViewer.cpp:2650 src/slic3r/GUI/GUI_Preview.cpp:1023 #: src/libslic3r/PrintConfig.cpp:2380 msgid "Travel" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2647 +#: src/slic3r/GUI/GCodeViewer.cpp:2653 msgid "Movement" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2648 +#: src/slic3r/GUI/GCodeViewer.cpp:2654 msgid "Extrusion" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2649 src/slic3r/GUI/Tab.cpp:1694 +#: src/slic3r/GUI/GCodeViewer.cpp:2655 src/slic3r/GUI/Tab.cpp:1694 #: src/slic3r/GUI/Tab.cpp:2582 msgid "Retraction" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2666 src/slic3r/GUI/GCodeViewer.cpp:2669 +#: src/slic3r/GUI/GCodeViewer.cpp:2672 src/slic3r/GUI/GCodeViewer.cpp:2675 #: src/slic3r/GUI/GUI_Preview.cpp:1024 msgid "Wipe" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2700 src/slic3r/GUI/GUI_Preview.cpp:248 +#: src/slic3r/GUI/GCodeViewer.cpp:2706 src/slic3r/GUI/GUI_Preview.cpp:248 #: src/slic3r/GUI/GUI_Preview.cpp:262 msgid "Options" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2703 src/slic3r/GUI/GUI_Preview.cpp:1025 +#: src/slic3r/GUI/GCodeViewer.cpp:2709 src/slic3r/GUI/GUI_Preview.cpp:1025 msgid "Retractions" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2704 src/slic3r/GUI/GUI_Preview.cpp:1026 +#: src/slic3r/GUI/GCodeViewer.cpp:2710 src/slic3r/GUI/GUI_Preview.cpp:1026 msgid "Deretractions" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2705 src/slic3r/GUI/GUI_Preview.cpp:1027 +#: src/slic3r/GUI/GCodeViewer.cpp:2711 src/slic3r/GUI/GUI_Preview.cpp:1027 msgid "Tool changes" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2706 src/slic3r/GUI/GUI_Preview.cpp:1028 +#: src/slic3r/GUI/GCodeViewer.cpp:2712 src/slic3r/GUI/GUI_Preview.cpp:1028 msgid "Color changes" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2707 src/slic3r/GUI/GUI_Preview.cpp:1029 +#: src/slic3r/GUI/GCodeViewer.cpp:2713 src/slic3r/GUI/GUI_Preview.cpp:1029 msgid "Print pauses" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2708 src/slic3r/GUI/GUI_Preview.cpp:1030 +#: src/slic3r/GUI/GCodeViewer.cpp:2714 src/slic3r/GUI/GUI_Preview.cpp:1030 msgid "Custom G-codes" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2719 src/slic3r/GUI/GCodeViewer.cpp:2743 +#: src/slic3r/GUI/GCodeViewer.cpp:2725 src/slic3r/GUI/GCodeViewer.cpp:2749 #: src/slic3r/GUI/Plater.cpp:697 src/libslic3r/PrintConfig.cpp:117 msgid "Printer" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2721 src/slic3r/GUI/GCodeViewer.cpp:2748 +#: src/slic3r/GUI/GCodeViewer.cpp:2727 src/slic3r/GUI/GCodeViewer.cpp:2754 #: src/slic3r/GUI/Plater.cpp:693 msgid "Print settings" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2724 src/slic3r/GUI/GCodeViewer.cpp:2754 +#: src/slic3r/GUI/GCodeViewer.cpp:2730 src/slic3r/GUI/GCodeViewer.cpp:2760 #: src/slic3r/GUI/Plater.cpp:694 src/slic3r/GUI/Tab.cpp:1794 #: src/slic3r/GUI/Tab.cpp:1795 msgid "Filament" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2779 src/slic3r/GUI/GCodeViewer.cpp:2784 +#: src/slic3r/GUI/GCodeViewer.cpp:2785 src/slic3r/GUI/GCodeViewer.cpp:2790 #: src/slic3r/GUI/Plater.cpp:242 src/slic3r/GUI/Plater.cpp:1135 #: src/slic3r/GUI/Plater.cpp:1220 msgid "Estimated printing time" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2779 +#: src/slic3r/GUI/GCodeViewer.cpp:2785 msgid "Normal mode" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2784 +#: src/slic3r/GUI/GCodeViewer.cpp:2790 msgid "Stealth mode" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2811 +#: src/slic3r/GUI/GCodeViewer.cpp:2817 msgid "Show stealth mode" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2815 +#: src/slic3r/GUI/GCodeViewer.cpp:2821 msgid "Show normal mode" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:236 src/slic3r/GUI/GLCanvas3D.cpp:4567 +#: src/slic3r/GUI/GLCanvas3D.cpp:236 src/slic3r/GUI/GLCanvas3D.cpp:4610 msgid "Variable layer height" msgstr "" @@ -1782,7 +1782,7 @@ msgstr "" msgid "Keep min" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:304 src/slic3r/GUI/GLCanvas3D.cpp:4007 +#: src/slic3r/GUI/GLCanvas3D.cpp:304 src/slic3r/GUI/GLCanvas3D.cpp:4050 msgid "Reset" msgstr "" @@ -1816,184 +1816,184 @@ msgstr "" msgid "Seq." msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:1453 +#: src/slic3r/GUI/GLCanvas3D.cpp:1455 msgid "Variable layer height - Reset" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:1461 +#: src/slic3r/GUI/GLCanvas3D.cpp:1463 msgid "Variable layer height - Adaptive" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:1469 +#: src/slic3r/GUI/GLCanvas3D.cpp:1471 msgid "Variable layer height - Smooth all" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:1871 +#: src/slic3r/GUI/GLCanvas3D.cpp:1876 msgid "Mirror Object" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:2736 +#: src/slic3r/GUI/GLCanvas3D.cpp:2746 #: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:520 msgid "Gizmo-Move" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:2822 +#: src/slic3r/GUI/GLCanvas3D.cpp:2832 #: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:522 msgid "Gizmo-Rotate" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:3345 +#: src/slic3r/GUI/GLCanvas3D.cpp:3388 msgid "Move Object" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:3815 src/slic3r/GUI/GLCanvas3D.cpp:4528 +#: src/slic3r/GUI/GLCanvas3D.cpp:3858 src/slic3r/GUI/GLCanvas3D.cpp:4571 msgid "Switch to Settings" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:3816 src/slic3r/GUI/GLCanvas3D.cpp:4528 +#: src/slic3r/GUI/GLCanvas3D.cpp:3859 src/slic3r/GUI/GLCanvas3D.cpp:4571 msgid "Print Settings Tab" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:3817 src/slic3r/GUI/GLCanvas3D.cpp:4529 +#: src/slic3r/GUI/GLCanvas3D.cpp:3860 src/slic3r/GUI/GLCanvas3D.cpp:4572 msgid "Filament Settings Tab" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:3817 src/slic3r/GUI/GLCanvas3D.cpp:4529 +#: src/slic3r/GUI/GLCanvas3D.cpp:3860 src/slic3r/GUI/GLCanvas3D.cpp:4572 msgid "Material Settings Tab" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:3818 src/slic3r/GUI/GLCanvas3D.cpp:4530 +#: src/slic3r/GUI/GLCanvas3D.cpp:3861 src/slic3r/GUI/GLCanvas3D.cpp:4573 msgid "Printer Settings Tab" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:3866 +#: src/slic3r/GUI/GLCanvas3D.cpp:3909 msgid "Undo History" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:3866 +#: src/slic3r/GUI/GLCanvas3D.cpp:3909 msgid "Redo History" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:3887 +#: src/slic3r/GUI/GLCanvas3D.cpp:3930 #, possible-c-format msgid "Undo %1$d Action" msgid_plural "Undo %1$d Actions" msgstr[0] "" msgstr[1] "" -#: src/slic3r/GUI/GLCanvas3D.cpp:3887 +#: src/slic3r/GUI/GLCanvas3D.cpp:3930 #, possible-c-format msgid "Redo %1$d Action" msgid_plural "Redo %1$d Actions" msgstr[0] "" msgstr[1] "" -#: src/slic3r/GUI/GLCanvas3D.cpp:3907 src/slic3r/GUI/GLCanvas3D.cpp:4546 +#: src/slic3r/GUI/GLCanvas3D.cpp:3950 src/slic3r/GUI/GLCanvas3D.cpp:4589 #: src/slic3r/GUI/KBShortcutsDialog.cpp:98 src/slic3r/GUI/Search.cpp:351 msgid "Search" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:3921 src/slic3r/GUI/GLCanvas3D.cpp:3929 +#: src/slic3r/GUI/GLCanvas3D.cpp:3964 src/slic3r/GUI/GLCanvas3D.cpp:3972 #: src/slic3r/GUI/Search.cpp:358 msgid "Enter a search term" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:3960 +#: src/slic3r/GUI/GLCanvas3D.cpp:4003 msgid "Arrange options" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:3990 +#: src/slic3r/GUI/GLCanvas3D.cpp:4033 msgid "Press %1%left mouse button to enter the exact value" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:3992 +#: src/slic3r/GUI/GLCanvas3D.cpp:4035 msgid "Spacing" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:3999 +#: src/slic3r/GUI/GLCanvas3D.cpp:4042 msgid "Enable rotations (slow)" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4017 src/slic3r/GUI/GLCanvas3D.cpp:4438 +#: src/slic3r/GUI/GLCanvas3D.cpp:4060 src/slic3r/GUI/GLCanvas3D.cpp:4481 #: src/slic3r/GUI/KBShortcutsDialog.cpp:120 src/slic3r/GUI/Plater.cpp:1648 msgid "Arrange" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4412 +#: src/slic3r/GUI/GLCanvas3D.cpp:4455 msgid "Add..." msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4420 src/slic3r/GUI/GUI_ObjectList.cpp:1878 -#: src/slic3r/GUI/Plater.cpp:3950 src/slic3r/GUI/Plater.cpp:3974 +#: src/slic3r/GUI/GLCanvas3D.cpp:4463 src/slic3r/GUI/GUI_ObjectList.cpp:1878 +#: src/slic3r/GUI/Plater.cpp:3998 src/slic3r/GUI/Plater.cpp:4022 #: src/slic3r/GUI/Tab.cpp:3484 msgid "Delete" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4429 src/slic3r/GUI/KBShortcutsDialog.cpp:88 -#: src/slic3r/GUI/Plater.cpp:5060 +#: src/slic3r/GUI/GLCanvas3D.cpp:4472 src/slic3r/GUI/KBShortcutsDialog.cpp:88 +#: src/slic3r/GUI/Plater.cpp:5107 msgid "Delete all" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4438 src/slic3r/GUI/KBShortcutsDialog.cpp:121 +#: src/slic3r/GUI/GLCanvas3D.cpp:4481 src/slic3r/GUI/KBShortcutsDialog.cpp:121 msgid "Arrange selection" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4438 +#: src/slic3r/GUI/GLCanvas3D.cpp:4481 msgid "Click right mouse button to show arrangement options" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4460 +#: src/slic3r/GUI/GLCanvas3D.cpp:4503 msgid "Copy" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4469 +#: src/slic3r/GUI/GLCanvas3D.cpp:4512 msgid "Paste" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4481 src/slic3r/GUI/Plater.cpp:3809 -#: src/slic3r/GUI/Plater.cpp:3821 src/slic3r/GUI/Plater.cpp:3959 +#: src/slic3r/GUI/GLCanvas3D.cpp:4524 src/slic3r/GUI/Plater.cpp:3857 +#: src/slic3r/GUI/Plater.cpp:3869 src/slic3r/GUI/Plater.cpp:4007 msgid "Add instance" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4492 src/slic3r/GUI/Plater.cpp:3961 +#: src/slic3r/GUI/GLCanvas3D.cpp:4535 src/slic3r/GUI/Plater.cpp:4009 msgid "Remove instance" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4505 +#: src/slic3r/GUI/GLCanvas3D.cpp:4548 msgid "Split to objects" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4515 src/slic3r/GUI/GUI_ObjectList.cpp:1650 +#: src/slic3r/GUI/GLCanvas3D.cpp:4558 src/slic3r/GUI/GUI_ObjectList.cpp:1650 msgid "Split to parts" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4617 src/slic3r/GUI/KBShortcutsDialog.cpp:89 +#: src/slic3r/GUI/GLCanvas3D.cpp:4660 src/slic3r/GUI/KBShortcutsDialog.cpp:89 #: src/slic3r/GUI/MainFrame.cpp:1125 msgid "Undo" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4617 src/slic3r/GUI/GLCanvas3D.cpp:4656 +#: src/slic3r/GUI/GLCanvas3D.cpp:4660 src/slic3r/GUI/GLCanvas3D.cpp:4699 msgid "Click right mouse button to open/close History" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4640 +#: src/slic3r/GUI/GLCanvas3D.cpp:4683 msgid "Next Undo action: %1%" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4656 src/slic3r/GUI/KBShortcutsDialog.cpp:90 +#: src/slic3r/GUI/GLCanvas3D.cpp:4699 src/slic3r/GUI/KBShortcutsDialog.cpp:90 #: src/slic3r/GUI/MainFrame.cpp:1128 msgid "Redo" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4678 +#: src/slic3r/GUI/GLCanvas3D.cpp:4721 msgid "Next Redo action: %1%" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:6300 +#: src/slic3r/GUI/GLCanvas3D.cpp:6345 msgid "Selection-Add from rectangle" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:6319 +#: src/slic3r/GUI/GLCanvas3D.cpp:6364 msgid "Selection-Remove from rectangle" msgstr "" @@ -2466,21 +2466,21 @@ msgstr "" msgid "Add supports" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:238 +#: src/slic3r/GUI/GUI_App.cpp:239 msgid "is based on Slic3r by Alessandro Ranellucci and the RepRap community." msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:240 +#: src/slic3r/GUI/GUI_App.cpp:241 msgid "" "Contributions by Vojtech Bubnik, Enrico Turri, Oleksandra Iushchenko, Tamas " "Meszaros, Lukas Matena, Vojtech Kral, David Kocik and numerous others." msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:241 +#: src/slic3r/GUI/GUI_App.cpp:242 msgid "Artwork model by Nora Al-Badri and Jan Nikolai Nelles" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:381 +#: src/slic3r/GUI/GUI_App.cpp:382 msgid "" "Starting with %1% 2.3, configuration directory on Linux has changed " "(according to XDG Base Directory Specification) to \n" @@ -2499,20 +2499,20 @@ msgid "" "What do you want to do now?" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:389 +#: src/slic3r/GUI/GUI_App.cpp:390 #, possible-c-format msgid "%s - BREAKING CHANGE" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:391 +#: src/slic3r/GUI/GUI_App.cpp:392 msgid "Quit, I will move my data now" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:391 +#: src/slic3r/GUI/GUI_App.cpp:392 msgid "Start the application" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:579 +#: src/slic3r/GUI/GUI_App.cpp:580 #, possible-c-format msgid "" "%s has encountered an error. It was likely caused by running out of memory. " @@ -2522,11 +2522,11 @@ msgid "" "The application will now terminate." msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:582 +#: src/slic3r/GUI/GUI_App.cpp:583 msgid "Fatal error" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:586 +#: src/slic3r/GUI/GUI_App.cpp:587 msgid "" "PrusaSlicer has encountered a localization error. Please report to " "PrusaSlicer team, what language was active and in which scenario this issue " @@ -2535,248 +2535,248 @@ msgid "" "The application will now terminate." msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:589 +#: src/slic3r/GUI/GUI_App.cpp:590 msgid "Critical error" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:710 +#: src/slic3r/GUI/GUI_App.cpp:711 msgid "" "Error parsing PrusaSlicer config file, it is probably corrupted. Try to " "manually delete the file to recover from the error. Your user profiles will " "not be affected." msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:716 +#: src/slic3r/GUI/GUI_App.cpp:717 msgid "" "Error parsing PrusaGCodeViewer config file, it is probably corrupted. Try to " "manually delete the file to recover from the error." msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:770 +#: src/slic3r/GUI/GUI_App.cpp:771 #, possible-c-format msgid "" "%s\n" "Do you want to continue?" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:772 src/slic3r/GUI/UnsavedChangesDialog.cpp:665 +#: src/slic3r/GUI/GUI_App.cpp:773 src/slic3r/GUI/UnsavedChangesDialog.cpp:665 msgid "Remember my choice" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:807 +#: src/slic3r/GUI/GUI_App.cpp:808 msgid "Loading configuration" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:875 +#: src/slic3r/GUI/GUI_App.cpp:876 msgid "Preparing settings tabs" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1114 +#: src/slic3r/GUI/GUI_App.cpp:1115 msgid "" "You have the following presets with saved options for \"Print Host upload\"" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1118 +#: src/slic3r/GUI/GUI_App.cpp:1119 msgid "" "But since this version of PrusaSlicer we don't show this information in " "Printer Settings anymore.\n" "Settings will be available in physical printers settings." msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1120 +#: src/slic3r/GUI/GUI_App.cpp:1121 msgid "" "By default new Printer devices will be named as \"Printer N\" during its " "creation.\n" "Note: This name can be changed later from the physical printers settings" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1123 src/slic3r/GUI/PhysicalPrinterDialog.cpp:626 +#: src/slic3r/GUI/GUI_App.cpp:1124 src/slic3r/GUI/PhysicalPrinterDialog.cpp:626 msgid "Information" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1136 src/slic3r/GUI/GUI_App.cpp:1147 +#: src/slic3r/GUI/GUI_App.cpp:1137 src/slic3r/GUI/GUI_App.cpp:1148 msgid "Recreating" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1152 +#: src/slic3r/GUI/GUI_App.cpp:1153 msgid "Loading of current presets" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1157 +#: src/slic3r/GUI/GUI_App.cpp:1158 msgid "Loading of a mode view" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1233 +#: src/slic3r/GUI/GUI_App.cpp:1234 msgid "Choose one file (3MF/AMF):" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1245 +#: src/slic3r/GUI/GUI_App.cpp:1246 msgid "Choose one or more files (STL/OBJ/AMF/3MF/PRUSA):" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1257 +#: src/slic3r/GUI/GUI_App.cpp:1258 msgid "Choose one file (GCODE/.GCO/.G/.ngc/NGC):" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1268 +#: src/slic3r/GUI/GUI_App.cpp:1269 msgid "Changing of an application language" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1371 +#: src/slic3r/GUI/GUI_App.cpp:1392 msgid "Select the language" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1371 +#: src/slic3r/GUI/GUI_App.cpp:1392 msgid "Language" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1520 +#: src/slic3r/GUI/GUI_App.cpp:1541 msgid "modified" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1569 +#: src/slic3r/GUI/GUI_App.cpp:1590 #, possible-c-format msgid "Run %s" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1573 +#: src/slic3r/GUI/GUI_App.cpp:1594 msgid "&Configuration Snapshots" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1573 +#: src/slic3r/GUI/GUI_App.cpp:1594 msgid "Inspect / activate configuration snapshots" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1574 +#: src/slic3r/GUI/GUI_App.cpp:1595 msgid "Take Configuration &Snapshot" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1574 +#: src/slic3r/GUI/GUI_App.cpp:1595 msgid "Capture a configuration snapshot" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1575 +#: src/slic3r/GUI/GUI_App.cpp:1596 msgid "Check for updates" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1575 +#: src/slic3r/GUI/GUI_App.cpp:1596 msgid "Check for configuration updates" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1578 +#: src/slic3r/GUI/GUI_App.cpp:1599 msgid "&Preferences" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1584 +#: src/slic3r/GUI/GUI_App.cpp:1605 msgid "Application preferences" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1589 src/slic3r/GUI/wxExtensions.cpp:683 +#: src/slic3r/GUI/GUI_App.cpp:1610 src/slic3r/GUI/wxExtensions.cpp:685 msgid "Simple" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1589 +#: src/slic3r/GUI/GUI_App.cpp:1610 msgid "Simple View Mode" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1591 src/slic3r/GUI/wxExtensions.cpp:685 +#: src/slic3r/GUI/GUI_App.cpp:1612 src/slic3r/GUI/wxExtensions.cpp:687 msgctxt "Mode" msgid "Advanced" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1591 +#: src/slic3r/GUI/GUI_App.cpp:1612 msgid "Advanced View Mode" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1592 src/slic3r/GUI/wxExtensions.cpp:686 +#: src/slic3r/GUI/GUI_App.cpp:1613 src/slic3r/GUI/wxExtensions.cpp:688 msgid "Expert" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1592 +#: src/slic3r/GUI/GUI_App.cpp:1613 msgid "Expert View Mode" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1597 +#: src/slic3r/GUI/GUI_App.cpp:1618 msgid "Mode" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1597 +#: src/slic3r/GUI/GUI_App.cpp:1618 #, possible-c-format msgid "%s View Mode" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1600 +#: src/slic3r/GUI/GUI_App.cpp:1621 msgid "&Language" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1603 +#: src/slic3r/GUI/GUI_App.cpp:1624 msgid "Flash printer &firmware" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1603 +#: src/slic3r/GUI/GUI_App.cpp:1624 msgid "Upload a firmware image into an Arduino based printer" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1619 +#: src/slic3r/GUI/GUI_App.cpp:1640 msgid "Taking configuration snapshot" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1619 +#: src/slic3r/GUI/GUI_App.cpp:1640 msgid "Snapshot name" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1648 +#: src/slic3r/GUI/GUI_App.cpp:1669 msgid "Failed to activate configuration snapshot." msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1698 +#: src/slic3r/GUI/GUI_App.cpp:1719 msgid "Language selection" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1700 +#: src/slic3r/GUI/GUI_App.cpp:1721 msgid "" "Switching the language will trigger application restart.\n" "You will lose content of the plater." msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1702 +#: src/slic3r/GUI/GUI_App.cpp:1723 msgid "Do you want to proceed?" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1729 +#: src/slic3r/GUI/GUI_App.cpp:1750 msgid "&Configuration" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1760 +#: src/slic3r/GUI/GUI_App.cpp:1781 msgid "The preset(s) modifications are successfully saved" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1781 +#: src/slic3r/GUI/GUI_App.cpp:1802 msgid "The uploads are still ongoing" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1781 +#: src/slic3r/GUI/GUI_App.cpp:1802 msgid "Stop them and continue anyway?" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1784 +#: src/slic3r/GUI/GUI_App.cpp:1805 msgid "Ongoing uploads" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1998 src/slic3r/GUI/Tab.cpp:3242 +#: src/slic3r/GUI/GUI_App.cpp:2019 src/slic3r/GUI/Tab.cpp:3242 msgid "It's impossible to print multi-part object(s) with SLA technology." msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1999 +#: src/slic3r/GUI/GUI_App.cpp:2020 msgid "Please check and fix your object list." msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:2000 src/slic3r/GUI/Jobs/SLAImportJob.cpp:210 -#: src/slic3r/GUI/Plater.cpp:2355 src/slic3r/GUI/Tab.cpp:3244 +#: src/slic3r/GUI/GUI_App.cpp:2021 src/slic3r/GUI/Jobs/SLAImportJob.cpp:210 +#: src/slic3r/GUI/Plater.cpp:2359 src/slic3r/GUI/Tab.cpp:3244 msgid "Attention!" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:2017 +#: src/slic3r/GUI/GUI_App.cpp:2038 msgid "Select a gcode file:" msgstr "" @@ -3111,12 +3111,12 @@ msgstr "" msgid "Fix through the Netfabb" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1818 src/slic3r/GUI/Plater.cpp:3987 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1818 src/slic3r/GUI/Plater.cpp:4035 msgid "Export as STL" msgstr "" #: src/slic3r/GUI/GUI_ObjectList.cpp:1825 -#: src/slic3r/GUI/GUI_ObjectList.cpp:4567 src/slic3r/GUI/Plater.cpp:3953 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4567 src/slic3r/GUI/Plater.cpp:4001 msgid "Reload the selected volumes from disk" msgstr "" @@ -3136,11 +3136,11 @@ msgstr "" msgid "Scale the selected object to fit the print volume" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1913 src/slic3r/GUI/Plater.cpp:5177 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1913 src/slic3r/GUI/Plater.cpp:5224 msgid "Convert from imperial units" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1915 src/slic3r/GUI/Plater.cpp:5177 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1915 src/slic3r/GUI/Plater.cpp:5224 msgid "Revert conversion from imperial units" msgstr "" @@ -3207,7 +3207,7 @@ msgstr "" msgid "Delete Instance" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2497 src/slic3r/GUI/Plater.cpp:2861 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2497 src/slic3r/GUI/Plater.cpp:2865 msgid "" "The selected object couldn't be split because it contains only one part." msgstr "" @@ -3426,7 +3426,7 @@ msgstr "" msgid "Select coordinate space, in which the transformation will be performed." msgstr "" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:163 src/libslic3r/GCode.cpp:540 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:163 src/libslic3r/GCode.cpp:537 msgid "Object name" msgstr "" @@ -3469,6 +3469,10 @@ msgstr "" msgid "Reset scale" msgstr "" +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:423 +msgid "Inches" +msgstr "" + #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:507 msgid "Scale factors" msgstr "" @@ -3712,11 +3716,11 @@ msgstr "" msgid "Importing done." msgstr "" -#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:208 src/slic3r/GUI/Plater.cpp:2353 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:208 src/slic3r/GUI/Plater.cpp:2357 msgid "You cannot load SLA project with a multi-part object on the bed" msgstr "" -#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:209 src/slic3r/GUI/Plater.cpp:2354 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:209 src/slic3r/GUI/Plater.cpp:2358 #: src/slic3r/GUI/Tab.cpp:3243 msgid "Please check your object list before preset changing." msgstr "" @@ -3758,11 +3762,11 @@ msgid "Load Config from ini/amf/3mf/gcode and merge" msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:79 src/slic3r/GUI/Plater.cpp:770 -#: src/slic3r/GUI/Plater.cpp:6007 src/libslic3r/PrintConfig.cpp:3635 +#: src/slic3r/GUI/Plater.cpp:6054 src/libslic3r/PrintConfig.cpp:3635 msgid "Export G-code" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:80 src/slic3r/GUI/Plater.cpp:6008 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:80 src/slic3r/GUI/Plater.cpp:6055 msgid "Send G-code" msgstr "" @@ -4133,7 +4137,7 @@ msgstr "" msgid "Show/Hide Legend & Estimated printing time" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:215 src/slic3r/GUI/Plater.cpp:4152 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:215 src/slic3r/GUI/Plater.cpp:4200 #: src/slic3r/GUI/Tab.cpp:2602 msgid "Preview" msgstr "" @@ -4776,7 +4780,7 @@ msgstr "" msgid "&Collapse sidebar" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1204 src/slic3r/GUI/Plater.cpp:2243 +#: src/slic3r/GUI/MainFrame.cpp:1204 src/slic3r/GUI/Plater.cpp:2247 msgid "Collapse sidebar" msgstr "" @@ -4857,8 +4861,8 @@ msgstr "" msgid "Save zip file as:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1405 src/slic3r/GUI/Plater.cpp:3005 -#: src/slic3r/GUI/Plater.cpp:5534 src/slic3r/GUI/Tab.cpp:1575 +#: src/slic3r/GUI/MainFrame.cpp:1405 src/slic3r/GUI/Plater.cpp:3009 +#: src/slic3r/GUI/Plater.cpp:5581 src/slic3r/GUI/Tab.cpp:1575 #: src/slic3r/GUI/Tab.cpp:4115 msgid "Slicing" msgstr "" @@ -4954,68 +4958,68 @@ msgstr "" msgid "%s has encountered an error" msgstr "" -#: src/slic3r/GUI/NotificationManager.hpp:451 +#: src/slic3r/GUI/NotificationManager.hpp:471 msgid "3D Mouse disconnected." msgstr "" -#: src/slic3r/GUI/NotificationManager.hpp:454 +#: src/slic3r/GUI/NotificationManager.hpp:474 msgid "Configuration update is available." msgstr "" -#: src/slic3r/GUI/NotificationManager.hpp:454 +#: src/slic3r/GUI/NotificationManager.hpp:474 msgid "See more." msgstr "" -#: src/slic3r/GUI/NotificationManager.hpp:456 +#: src/slic3r/GUI/NotificationManager.hpp:476 msgid "New version is available." msgstr "" -#: src/slic3r/GUI/NotificationManager.hpp:456 +#: src/slic3r/GUI/NotificationManager.hpp:476 msgid "See Releases page." msgstr "" -#: src/slic3r/GUI/NotificationManager.hpp:459 +#: src/slic3r/GUI/NotificationManager.hpp:479 msgid "" "You have just added a G-code for color change, but its value is empty.\n" "To export the G-code correctly, check the \"Color Change G-code\" in " "\"Printer Settings > Custom G-code\"" msgstr "" -#: src/slic3r/GUI/NotificationManager.cpp:483 -#: src/slic3r/GUI/NotificationManager.cpp:493 +#: src/slic3r/GUI/NotificationManager.cpp:490 +#: src/slic3r/GUI/NotificationManager.cpp:500 msgid "More" msgstr "" -#: src/slic3r/GUI/NotificationManager.cpp:840 -#: src/slic3r/GUI/NotificationManager.cpp:1111 +#: src/slic3r/GUI/NotificationManager.cpp:864 +#: src/slic3r/GUI/NotificationManager.cpp:1141 msgid "Export G-Code." msgstr "" -#: src/slic3r/GUI/NotificationManager.cpp:884 +#: src/slic3r/GUI/NotificationManager.cpp:908 msgid "Open Folder." msgstr "" -#: src/slic3r/GUI/NotificationManager.cpp:922 +#: src/slic3r/GUI/NotificationManager.cpp:946 msgid "Eject drive" msgstr "" -#: src/slic3r/GUI/NotificationManager.cpp:1030 -#: src/slic3r/GUI/NotificationManager.cpp:1046 -#: src/slic3r/GUI/NotificationManager.cpp:1057 +#: src/slic3r/GUI/NotificationManager.cpp:1060 +#: src/slic3r/GUI/NotificationManager.cpp:1076 +#: src/slic3r/GUI/NotificationManager.cpp:1087 msgid "ERROR:" msgstr "" -#: src/slic3r/GUI/NotificationManager.cpp:1035 -#: src/slic3r/GUI/NotificationManager.cpp:1050 #: src/slic3r/GUI/NotificationManager.cpp:1065 +#: src/slic3r/GUI/NotificationManager.cpp:1080 +#: src/slic3r/GUI/NotificationManager.cpp:1095 msgid "WARNING:" msgstr "" -#: src/slic3r/GUI/NotificationManager.cpp:1114 +#: src/slic3r/GUI/NotificationManager.cpp:1144 msgid "Slicing finished." msgstr "" -#: src/slic3r/GUI/NotificationManager.cpp:1156 +#: src/slic3r/GUI/NotificationManager.cpp:1186 msgid "Exporting finished." msgstr "" @@ -5277,12 +5281,12 @@ msgstr "" msgid "SLA print settings" msgstr "" -#: src/slic3r/GUI/Plater.cpp:756 src/slic3r/GUI/Plater.cpp:6008 +#: src/slic3r/GUI/Plater.cpp:756 src/slic3r/GUI/Plater.cpp:6055 msgid "Send to printer" msgstr "" -#: src/slic3r/GUI/Plater.cpp:771 src/slic3r/GUI/Plater.cpp:3005 -#: src/slic3r/GUI/Plater.cpp:5537 +#: src/slic3r/GUI/Plater.cpp:771 src/slic3r/GUI/Plater.cpp:3009 +#: src/slic3r/GUI/Plater.cpp:5584 msgid "Slice now" msgstr "" @@ -5360,53 +5364,53 @@ msgstr "" msgid "stealth mode" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1403 src/slic3r/GUI/Plater.cpp:4876 +#: src/slic3r/GUI/Plater.cpp:1403 src/slic3r/GUI/Plater.cpp:4923 #, possible-c-format msgid "%s - Drop project file" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1410 src/slic3r/GUI/Plater.cpp:4883 +#: src/slic3r/GUI/Plater.cpp:1410 src/slic3r/GUI/Plater.cpp:4930 msgid "Open as project" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1411 src/slic3r/GUI/Plater.cpp:4884 +#: src/slic3r/GUI/Plater.cpp:1411 src/slic3r/GUI/Plater.cpp:4931 msgid "Import geometry only" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1412 src/slic3r/GUI/Plater.cpp:4885 +#: src/slic3r/GUI/Plater.cpp:1412 src/slic3r/GUI/Plater.cpp:4932 msgid "Import config only" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1415 src/slic3r/GUI/Plater.cpp:4888 +#: src/slic3r/GUI/Plater.cpp:1415 src/slic3r/GUI/Plater.cpp:4935 msgid "Select an action to apply to the file" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1416 src/slic3r/GUI/Plater.cpp:4889 +#: src/slic3r/GUI/Plater.cpp:1416 src/slic3r/GUI/Plater.cpp:4936 msgid "Action" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1424 src/slic3r/GUI/Plater.cpp:4897 +#: src/slic3r/GUI/Plater.cpp:1424 src/slic3r/GUI/Plater.cpp:4944 msgid "Don't show again" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1469 src/slic3r/GUI/Plater.cpp:4934 +#: src/slic3r/GUI/Plater.cpp:1469 src/slic3r/GUI/Plater.cpp:4981 msgid "You can open only one .gcode file at a time." msgstr "" -#: src/slic3r/GUI/Plater.cpp:1470 src/slic3r/GUI/Plater.cpp:4935 +#: src/slic3r/GUI/Plater.cpp:1470 src/slic3r/GUI/Plater.cpp:4982 msgid "Drag and drop G-code file" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1524 src/slic3r/GUI/Plater.cpp:4748 -#: src/slic3r/GUI/Plater.cpp:4989 +#: src/slic3r/GUI/Plater.cpp:1524 src/slic3r/GUI/Plater.cpp:4796 +#: src/slic3r/GUI/Plater.cpp:5036 msgid "Import Object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1546 src/slic3r/GUI/Plater.cpp:5011 +#: src/slic3r/GUI/Plater.cpp:1546 src/slic3r/GUI/Plater.cpp:5058 msgid "Load File" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1551 src/slic3r/GUI/Plater.cpp:5016 +#: src/slic3r/GUI/Plater.cpp:1551 src/slic3r/GUI/Plater.cpp:5063 msgid "Load Files" msgstr "" @@ -5422,390 +5426,400 @@ msgstr "" msgid "Import SLA archive" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2127 +#: src/slic3r/GUI/Plater.cpp:2129 #, possible-c-format msgid "" "Successfully unmounted. The device %s(%s) can now be safely removed from the " "computer." msgstr "" -#: src/slic3r/GUI/Plater.cpp:2130 +#: src/slic3r/GUI/Plater.cpp:2134 #, possible-c-format msgid "Ejecting of device %s(%s) has failed." msgstr "" -#: src/slic3r/GUI/Plater.cpp:2149 +#: src/slic3r/GUI/Plater.cpp:2153 msgid "New Project" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2242 +#: src/slic3r/GUI/Plater.cpp:2246 msgid "Expand sidebar" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2315 +#: src/slic3r/GUI/Plater.cpp:2319 msgid "Loading" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2325 +#: src/slic3r/GUI/Plater.cpp:2329 msgid "Loading file" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2411 +#: src/slic3r/GUI/Plater.cpp:2415 #, possible-c-format msgid "" "Some object(s) in file %s looks like saved in inches.\n" "Should I consider them as a saved in inches and convert them?" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2413 +#: src/slic3r/GUI/Plater.cpp:2417 msgid "The object appears to be saved in inches" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2421 +#: src/slic3r/GUI/Plater.cpp:2425 msgid "" "This file contains several objects positioned at multiple heights.\n" "Instead of considering them as multiple objects, should I consider\n" "this file as a single object having multiple parts?" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2424 src/slic3r/GUI/Plater.cpp:2477 +#: src/slic3r/GUI/Plater.cpp:2428 src/slic3r/GUI/Plater.cpp:2481 msgid "Multi-part object detected" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2431 +#: src/slic3r/GUI/Plater.cpp:2435 msgid "" "This file cannot be loaded in a simple mode. Do you want to switch to an " "advanced mode?" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2432 +#: src/slic3r/GUI/Plater.cpp:2436 msgid "Detected advanced data" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2454 +#: src/slic3r/GUI/Plater.cpp:2458 #, possible-c-format msgid "" "You can't to add the object(s) from %s because of one or some of them " "is(are) multi-part" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2474 +#: src/slic3r/GUI/Plater.cpp:2478 msgid "" "Multiple objects were loaded for a multi-material printer.\n" "Instead of considering them as multiple objects, should I consider\n" "these files to represent a single object having multiple parts?" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2490 +#: src/slic3r/GUI/Plater.cpp:2494 msgid "Loaded" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2592 +#: src/slic3r/GUI/Plater.cpp:2596 msgid "" "Your object appears to be too large, so it was automatically scaled down to " "fit your print bed." msgstr "" -#: src/slic3r/GUI/Plater.cpp:2593 +#: src/slic3r/GUI/Plater.cpp:2597 msgid "Object too large?" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2655 +#: src/slic3r/GUI/Plater.cpp:2659 msgid "Export STL file:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2662 +#: src/slic3r/GUI/Plater.cpp:2666 msgid "Export AMF file:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2668 +#: src/slic3r/GUI/Plater.cpp:2672 msgid "Save file as:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2674 +#: src/slic3r/GUI/Plater.cpp:2678 msgid "Export OBJ file:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2770 +#: src/slic3r/GUI/Plater.cpp:2774 msgid "Delete Object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2781 +#: src/slic3r/GUI/Plater.cpp:2785 msgid "Reset Project" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2853 +#: src/slic3r/GUI/Plater.cpp:2857 msgid "" "The selected object can't be split because it contains more than one volume/" "material." msgstr "" -#: src/slic3r/GUI/Plater.cpp:2864 +#: src/slic3r/GUI/Plater.cpp:2868 msgid "Split to Objects" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2989 src/slic3r/GUI/Plater.cpp:3675 +#: src/slic3r/GUI/Plater.cpp:2993 src/slic3r/GUI/Plater.cpp:3723 msgid "Invalid data" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2999 +#: src/slic3r/GUI/Plater.cpp:3003 msgid "Ready to slice" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3037 src/slic3r/GUI/PrintHostDialogs.cpp:264 +#: src/slic3r/GUI/Plater.cpp:3041 src/slic3r/GUI/PrintHostDialogs.cpp:264 msgid "Cancelling" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3056 +#: src/slic3r/GUI/Plater.cpp:3060 msgid "Another export job is currently running." msgstr "" -#: src/slic3r/GUI/Plater.cpp:3173 +#: src/slic3r/GUI/Plater.cpp:3177 msgid "Please select the file to reload" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3208 +#: src/slic3r/GUI/Plater.cpp:3212 msgid "It is not allowed to change the file to reload" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3208 +#: src/slic3r/GUI/Plater.cpp:3212 msgid "Do you want to retry" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3226 +#: src/slic3r/GUI/Plater.cpp:3230 msgid "Reload from:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3319 +#: src/slic3r/GUI/Plater.cpp:3323 msgid "Unable to reload:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3324 +#: src/slic3r/GUI/Plater.cpp:3328 msgid "Error during reload" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3343 +#: src/slic3r/GUI/Plater.cpp:3347 msgid "Reload all from disk" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3364 -msgid "Fix Throught NetFabb" +#: src/slic3r/GUI/Plater.cpp:3374 +msgid "" +"ERROR: Please close all manipulators available from the left toolbar before " +"fixing the mesh." msgstr "" -#: src/slic3r/GUI/Plater.cpp:3632 +#: src/slic3r/GUI/Plater.cpp:3380 +msgid "Fix through NetFabb" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:3397 +msgid "Custom supports and seams were removed after repairing the mesh." +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:3680 msgid "There are active warnings concerning sliced models:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3643 +#: src/slic3r/GUI/Plater.cpp:3691 msgid "generated warnings" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3683 src/slic3r/GUI/PrintHostDialogs.cpp:265 +#: src/slic3r/GUI/Plater.cpp:3731 src/slic3r/GUI/PrintHostDialogs.cpp:265 msgid "Cancelled" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3950 src/slic3r/GUI/Plater.cpp:3974 +#: src/slic3r/GUI/Plater.cpp:3998 src/slic3r/GUI/Plater.cpp:4022 msgid "Remove the selected object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3959 +#: src/slic3r/GUI/Plater.cpp:4007 msgid "Add one more instance of the selected object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3961 +#: src/slic3r/GUI/Plater.cpp:4009 msgid "Remove one instance of the selected object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3963 +#: src/slic3r/GUI/Plater.cpp:4011 msgid "Set number of instances" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3963 +#: src/slic3r/GUI/Plater.cpp:4011 msgid "Change the number of instances of the selected object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3965 +#: src/slic3r/GUI/Plater.cpp:4013 msgid "Fill bed with instances" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3965 +#: src/slic3r/GUI/Plater.cpp:4013 msgid "Fill the remaining area of bed with instances of the selected object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3984 +#: src/slic3r/GUI/Plater.cpp:4032 msgid "Reload the selected object from disk" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3987 +#: src/slic3r/GUI/Plater.cpp:4035 msgid "Export the selected object as STL file" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4017 +#: src/slic3r/GUI/Plater.cpp:4065 msgid "Along X axis" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4017 +#: src/slic3r/GUI/Plater.cpp:4065 msgid "Mirror the selected object along the X axis" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4019 +#: src/slic3r/GUI/Plater.cpp:4067 msgid "Along Y axis" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4019 +#: src/slic3r/GUI/Plater.cpp:4067 msgid "Mirror the selected object along the Y axis" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4021 +#: src/slic3r/GUI/Plater.cpp:4069 msgid "Along Z axis" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4021 +#: src/slic3r/GUI/Plater.cpp:4069 msgid "Mirror the selected object along the Z axis" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4024 +#: src/slic3r/GUI/Plater.cpp:4072 msgid "Mirror" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4024 +#: src/slic3r/GUI/Plater.cpp:4072 msgid "Mirror the selected object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4036 +#: src/slic3r/GUI/Plater.cpp:4084 msgid "To objects" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4036 src/slic3r/GUI/Plater.cpp:4056 +#: src/slic3r/GUI/Plater.cpp:4084 src/slic3r/GUI/Plater.cpp:4104 msgid "Split the selected object into individual objects" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4038 +#: src/slic3r/GUI/Plater.cpp:4086 msgid "To parts" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4038 src/slic3r/GUI/Plater.cpp:4074 +#: src/slic3r/GUI/Plater.cpp:4086 src/slic3r/GUI/Plater.cpp:4122 msgid "Split the selected object into individual sub-parts" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4041 src/slic3r/GUI/Plater.cpp:4056 -#: src/slic3r/GUI/Plater.cpp:4074 src/libslic3r/PrintConfig.cpp:3759 +#: src/slic3r/GUI/Plater.cpp:4089 src/slic3r/GUI/Plater.cpp:4104 +#: src/slic3r/GUI/Plater.cpp:4122 src/libslic3r/PrintConfig.cpp:3759 msgid "Split" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4041 +#: src/slic3r/GUI/Plater.cpp:4089 msgid "Split the selected object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4063 +#: src/slic3r/GUI/Plater.cpp:4111 msgid "Optimize orientation" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4064 +#: src/slic3r/GUI/Plater.cpp:4112 msgid "Optimize the rotation of the object for better print results." msgstr "" -#: src/slic3r/GUI/Plater.cpp:4144 +#: src/slic3r/GUI/Plater.cpp:4192 msgid "3D editor view" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4516 +#: src/slic3r/GUI/Plater.cpp:4564 msgid "" "%1% printer was active at the time the target Undo / Redo snapshot was " "taken. Switching to %1% printer requires reloading of %1% presets." msgstr "" -#: src/slic3r/GUI/Plater.cpp:4720 +#: src/slic3r/GUI/Plater.cpp:4768 msgid "Load Project" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4752 +#: src/slic3r/GUI/Plater.cpp:4800 msgid "Import Objects" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4821 +#: src/slic3r/GUI/Plater.cpp:4868 msgid "The selected file" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4821 +#: src/slic3r/GUI/Plater.cpp:4868 msgid "does not contain valid gcode." msgstr "" -#: src/slic3r/GUI/Plater.cpp:4822 +#: src/slic3r/GUI/Plater.cpp:4869 msgid "Error while loading .gcode file" msgstr "" -#: src/slic3r/GUI/Plater.cpp:5060 +#: src/slic3r/GUI/Plater.cpp:5107 msgid "All objects will be removed, continue?" msgstr "" -#: src/slic3r/GUI/Plater.cpp:5068 +#: src/slic3r/GUI/Plater.cpp:5115 msgid "Delete Selected Objects" msgstr "" -#: src/slic3r/GUI/Plater.cpp:5076 +#: src/slic3r/GUI/Plater.cpp:5123 msgid "Increase Instances" msgstr "" -#: src/slic3r/GUI/Plater.cpp:5110 +#: src/slic3r/GUI/Plater.cpp:5157 msgid "Decrease Instances" msgstr "" -#: src/slic3r/GUI/Plater.cpp:5141 +#: src/slic3r/GUI/Plater.cpp:5188 msgid "Enter the number of copies:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:5142 +#: src/slic3r/GUI/Plater.cpp:5189 msgid "Copies of the selected object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:5146 +#: src/slic3r/GUI/Plater.cpp:5193 #, possible-c-format msgid "Set numbers of copies to %d" msgstr "" -#: src/slic3r/GUI/Plater.cpp:5212 +#: src/slic3r/GUI/Plater.cpp:5259 msgid "Cut by Plane" msgstr "" -#: src/slic3r/GUI/Plater.cpp:5269 +#: src/slic3r/GUI/Plater.cpp:5316 msgid "Save G-code file as:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:5269 +#: src/slic3r/GUI/Plater.cpp:5316 msgid "Save SL1 file as:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:5416 +#: src/slic3r/GUI/Plater.cpp:5463 #, possible-c-format msgid "STL file exported to %s" msgstr "" -#: src/slic3r/GUI/Plater.cpp:5433 +#: src/slic3r/GUI/Plater.cpp:5480 #, possible-c-format msgid "AMF file exported to %s" msgstr "" -#: src/slic3r/GUI/Plater.cpp:5436 +#: src/slic3r/GUI/Plater.cpp:5483 #, possible-c-format msgid "Error exporting AMF file %s" msgstr "" -#: src/slic3r/GUI/Plater.cpp:5465 +#: src/slic3r/GUI/Plater.cpp:5512 #, possible-c-format msgid "3MF file exported to %s" msgstr "" -#: src/slic3r/GUI/Plater.cpp:5470 +#: src/slic3r/GUI/Plater.cpp:5517 #, possible-c-format msgid "Error exporting 3MF file %s" msgstr "" -#: src/slic3r/GUI/Plater.cpp:6007 +#: src/slic3r/GUI/Plater.cpp:6054 msgid "Export" msgstr "" -#: src/slic3r/GUI/Plater.cpp:6102 +#: src/slic3r/GUI/Plater.cpp:6149 msgid "Paste From Clipboard" msgstr "" @@ -7787,53 +7801,17 @@ msgstr "" msgid "Could not connect to Prusa SLA" msgstr "" -#: src/slic3r/Utils/PresetUpdater.cpp:70 -msgid "" -"Copying of file %1% to %2% failed. Permissions fail at target file before " -"copying.\n" -"Error message : %3%\n" -"This error happend during %4% phase." -msgstr "" - -#: src/slic3r/Utils/PresetUpdater.cpp:85 -msgid "" -"Copying of file %1% to %2% failed.\n" -"Error message : %3%\n" -"Copying was triggered by function: %4%" -msgstr "" - -#: src/slic3r/Utils/PresetUpdater.cpp:92 -msgid "" -"Copying of file %1% to %2% failed. Permissions fail at target file after " -"copying.\n" -"Error message : %3%\n" -"Copying was triggered by function: %4%" -msgstr "" - -#: src/slic3r/Utils/PresetUpdater.cpp:121 -msgid "install" -msgstr "" - -#: src/slic3r/Utils/PresetUpdater.cpp:413 -#: src/slic3r/Utils/PresetUpdater.cpp:421 -msgid "checking install indices" -msgstr "" - -#: src/slic3r/Utils/PresetUpdater.cpp:601 -msgid "getting config updates" -msgstr "" - -#: src/slic3r/Utils/PresetUpdater.cpp:755 +#: src/slic3r/Utils/PresetUpdater.cpp:727 #, possible-c-format msgid "requires min. %s and max. %s" msgstr "" -#: src/slic3r/Utils/PresetUpdater.cpp:759 +#: src/slic3r/Utils/PresetUpdater.cpp:731 #, possible-c-format msgid "requires min. %s" msgstr "" -#: src/slic3r/Utils/PresetUpdater.cpp:762 +#: src/slic3r/Utils/PresetUpdater.cpp:734 #, possible-c-format msgid "requires max. %s" msgstr "" @@ -7864,24 +7842,30 @@ msgstr "" msgid "Open G-code file:" msgstr "" -#: src/libslic3r/GCode.cpp:521 +#: src/libslic3r/GCode.cpp:518 msgid "There is an object with no extrusions on the first layer." msgstr "" -#: src/libslic3r/GCode.cpp:539 +#: src/libslic3r/GCode.cpp:536 msgid "Empty layers detected, the output would not be printable." msgstr "" -#: src/libslic3r/GCode.cpp:540 +#: src/libslic3r/GCode.cpp:537 msgid "Print z" msgstr "" -#: src/libslic3r/GCode.cpp:541 +#: src/libslic3r/GCode.cpp:538 msgid "" "This is usually caused by negligibly small extrusions or by a faulty model. " "Try to repair the model or change its orientation on the bed." msgstr "" +#: src/libslic3r/GCode.cpp:1261 +msgid "" +"Your print is very close to the priming regions. Make sure there is no " +"collision." +msgstr "" + #: src/libslic3r/ExtrusionEntity.cpp:324 src/libslic3r/ExtrusionEntity.cpp:360 msgid "Mixed" msgstr "" From b0115dca603ee75f6ae117b777b23c670eb62f0e Mon Sep 17 00:00:00 2001 From: Lukas Matena Date: Fri, 18 Dec 2020 15:35:30 +0100 Subject: [PATCH 085/135] Fixed encoding issue in ConfigWizard on Windows (#5422) --- src/slic3r/GUI/ConfigWizard.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/slic3r/GUI/ConfigWizard.cpp b/src/slic3r/GUI/ConfigWizard.cpp index f69826139a..5af48ee368 100644 --- a/src/slic3r/GUI/ConfigWizard.cpp +++ b/src/slic3r/GUI/ConfigWizard.cpp @@ -214,7 +214,7 @@ PrinterPicker::PrinterPicker(wxWindow *parent, const VendorProfile &vendor, wxSt load_bitmap(Slic3r::var(PRINTER_PLACEHOLDER), bitmap, bitmap_width); } } - auto *title = new wxStaticText(this, wxID_ANY, model.name, wxDefaultPosition, wxDefaultSize, wxALIGN_LEFT); + auto *title = new wxStaticText(this, wxID_ANY, from_u8(model.name), wxDefaultPosition, wxDefaultSize, wxALIGN_LEFT); title->SetFont(font_name); const int wrap_width = std::max((int)MODEL_MIN_WRAP, bitmap_width); title->Wrap(wrap_width); From b5de1456a02a253bb8119127df5926bd4b9ee6bd Mon Sep 17 00:00:00 2001 From: David Kocik Date: Fri, 18 Dec 2020 15:47:29 +0100 Subject: [PATCH 086/135] Keyboard shortcut at notification hover - eject sd --- src/slic3r/GUI/NotificationManager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/slic3r/GUI/NotificationManager.cpp b/src/slic3r/GUI/NotificationManager.cpp index c2c7727edb..8ed206273f 100644 --- a/src/slic3r/GUI/NotificationManager.cpp +++ b/src/slic3r/GUI/NotificationManager.cpp @@ -943,7 +943,7 @@ void NotificationManager::ExportFinishedNotification::render_eject_button(ImGuiW if (m_hover_time > 0 && m_hover_time < time_now) { ImGui::PushStyleColor(ImGuiCol_PopupBg, ImGuiWrapper::COL_WINDOW_BACKGROUND); ImGui::BeginTooltip(); - imgui.text(_u8L("Eject drive")); + imgui.text(_u8L("Eject drive ") + GUI::shortkey_ctrl_prefix() + "T"); ImGui::EndTooltip(); ImGui::PopStyleColor(); } From 71cb5d146952df046eacd636b07c1aa35121ca6b Mon Sep 17 00:00:00 2001 From: Pascal de Bruijn Date: Fri, 18 Dec 2020 18:55:29 +0100 Subject: [PATCH 087/135] Creality.ini: default to Generic PLA, and move defaults to common printer section --- resources/profiles/Creality.ini | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/resources/profiles/Creality.ini b/resources/profiles/Creality.ini index 66614f1f6e..d23c5cb182 100644 --- a/resources/profiles/Creality.ini +++ b/resources/profiles/Creality.ini @@ -631,8 +631,8 @@ variable_layer_height = 1 wipe = 1 z_offset = 0 printer_model = -default_print_profile = -default_filament_profile = +default_print_profile = 0.16mm OPTIMAL @CREALITY +default_filament_profile = Generic PLA @CREALITY [printer:Creality Ender-3] inherits = *common* @@ -666,8 +666,6 @@ retract_length = 5 retract_speed = 60 deretract_speed = 40 retract_before_wipe = 70% -default_print_profile = 0.16mm OPTIMAL @CREALITY -default_filament_profile = Creality PLA @CREALITY start_gcode = G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 ; home all\nG1 Z2 F240\nG1 X2 Y10 F3000\nG1 Z0.28 F240\nG92 E0\nG1 Y190 E15 F1500 ; intro line\nG1 X2.3 F5000\nG92 E0\nG1 Y10 E15 F1200 ; intro line\nG92 E0 end_gcode = {if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+2, max_print_height)} F600{endif} ; Move print head up\nG1 X5 Y170 F{travel_speed*60} ; present print\n{if max_layer_z < max_print_height-10}G1 Z{z_offset+min(max_layer_z+70, max_print_height-10)} F600{endif} ; Move print head further up\nM140 S0 ; turn off heatbed\nM104 S0 ; turn off temperature\nM107 ; turn off fan\nM84 X Y E ; disable motors From 593c397b1915fe1784645e5f2898c42918823e6d Mon Sep 17 00:00:00 2001 From: David Kocik Date: Sat, 19 Dec 2020 09:22:40 +0100 Subject: [PATCH 088/135] Missing init() call at notification render --- src/slic3r/GUI/NotificationManager.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/slic3r/GUI/NotificationManager.cpp b/src/slic3r/GUI/NotificationManager.cpp index 8ed206273f..abb2d6115c 100644 --- a/src/slic3r/GUI/NotificationManager.cpp +++ b/src/slic3r/GUI/NotificationManager.cpp @@ -146,6 +146,10 @@ NotificationManager::PopNotification::PopNotification(const NotificationData &n, #if ENABLE_NEW_NOTIFICATIONS_FADE_OUT void NotificationManager::PopNotification::render(GLCanvas3D& canvas, float initial_y, bool move_from_overlay, float overlay_width) { + if (!m_initialized) { + init(); + } + if (m_hidden) { m_top_y = initial_y - GAP_WIDTH; return; From a19b5f2f3ac5bd089be3edc43d3031ac7426f9c0 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Sat, 19 Dec 2020 13:34:03 +0100 Subject: [PATCH 089/135] Localization: Updated dictionaries CZ, DE, ES, FR, IT, NL, PL --- resources/localization/cs/PrusaSlicer.mo | Bin 294970 -> 295681 bytes resources/localization/cs/PrusaSlicer_cs.po | 44 +- resources/localization/de/PrusaSlicer.mo | Bin 303890 -> 304631 bytes resources/localization/de/PrusaSlicer_de.po | 20 + resources/localization/es/PrusaSlicer.mo | Bin 302832 -> 303563 bytes resources/localization/es/PrusaSlicer_es.po | 20 + resources/localization/fr/PrusaSlicer.mo | Bin 312003 -> 312758 bytes resources/localization/fr/PrusaSlicer_fr.po | 22 +- resources/localization/it/PrusaSlicer.mo | Bin 298251 -> 298985 bytes resources/localization/it/PrusaSlicer_it.po | 20 + resources/localization/nl/PrusaSlicer.mo | Bin 280805 -> 286987 bytes resources/localization/nl/PrusaSlicer_nl.po | 5407 ++++++++++--------- resources/localization/pl/PrusaSlicer.mo | Bin 295480 -> 296199 bytes resources/localization/pl/PrusaSlicer_pl.po | 20 + 14 files changed, 2948 insertions(+), 2605 deletions(-) diff --git a/resources/localization/cs/PrusaSlicer.mo b/resources/localization/cs/PrusaSlicer.mo index 32f1fd7260ab3d42b5c0dcecfe240915bef73ae0..414237103493b9a8341807041db22743a184a13e 100644 GIT binary patch delta 54581 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 TTR+Gi95^g6VOzM@^bG$4Xe~jb delta 54028 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 AqyPW_ diff --git a/resources/localization/cs/PrusaSlicer_cs.po b/resources/localization/cs/PrusaSlicer_cs.po index 7ea8176059..364f634d06 100644 --- a/resources/localization/cs/PrusaSlicer_cs.po +++ b/resources/localization/cs/PrusaSlicer_cs.po @@ -1003,7 +1003,7 @@ msgstr "Vyhnout se přejíždění perimetrů" #: src/libslic3r/PrintConfig.cpp:188 msgid "Avoid crossing perimeters - Max detour length" -msgstr "Vyvarovat se přejezdů přes perimetry - maximální délka objízdné cesty" +msgstr "Vyhnout se přejíždění perimetrů - maximální délka objízdné cesty" #: src/slic3r/GUI/Tab.cpp:3705 msgid "BACK ARROW" @@ -1180,7 +1180,7 @@ msgstr "Úhel vytváření mostů" #: src/libslic3r/PrintConfig.cpp:238 msgid "Bridging angle override. If left to zero, the bridging angle will be calculated automatically. Otherwise the provided angle will be used for all bridges. Use 180° for zero angle." -msgstr "Přepsání úhlu vytváření mostů. Nastavením hodnoty na nulu se bude úhel vytváření mostů vypočítávat automaticky. Při zadání jiného úhlu, bude pro všechny mosty použitý zadaný úhel. Pro nulový úhel zadejte 180°." +msgstr "Přepsání úhlu vytváření mostů. Nastavením hodnoty na nulu se bude úhel vytváření mostů vypočítávat automaticky. Při zadání jiného úhlu bude pro všechny mosty použitý zadaný úhel. Pro nulový úhel zadejte 180°." #: src/slic3r/GUI/PresetHints.cpp:218 msgid "Bridging volumetric" @@ -1904,6 +1904,10 @@ msgstr "Vlastní nastavení tiskárny" msgid "Custom profile name:" msgstr "Vlastní název profilu:" +#: src/slic3r/GUI/Plater.cpp:3397 +msgid "Custom supports and seams were removed after repairing the mesh." +msgstr "Po opravě modelu byly odstraněny vlastní podpěry a švy." + #: src/slic3r/GUI/DoubleSlider.cpp:1135 msgid "Custom template (\"%1%\")" msgstr "Vlastní šablona (\"%1%\")" @@ -2161,7 +2165,7 @@ msgstr "Hustota" #: src/libslic3r/PrintConfig.cpp:827 msgid "Density of internal infill, expressed in the range 0% - 100%." -msgstr "Hustota vnitřní výplně, vyjádřená v rozmezí 0% až 100%." +msgstr "Hustota vnitřní výplně vyjádřená v rozmezí 0 až 100 %." #: src/slic3r/GUI/Tab.cpp:1588 src/slic3r/GUI/Tab.cpp:1895 #: src/slic3r/GUI/Tab.cpp:2228 src/slic3r/GUI/Tab.cpp:2304 @@ -2780,6 +2784,10 @@ msgstr "Chyba: %s" msgid "ERROR: not enough resources to execute a new job." msgstr "CHYBA: nedostatek prostředků ke spuštění nové úlohy." +#: src/slic3r/GUI/Plater.cpp:3374 +msgid "ERROR: Please close all manipulators available from the left toolbar before fixing the mesh." +msgstr "CHYBA: Před opravou modelu zavřete všechny manipulátory dostupné z levého panelu nástrojů." + #: src/slic3r/GUI/GCodeViewer.cpp:2552 src/slic3r/GUI/GCodeViewer.cpp:2557 #: src/slic3r/GUI/Plater.cpp:246 src/slic3r/GUI/Plater.cpp:1125 #: src/slic3r/GUI/Plater.cpp:1175 src/slic3r/GUI/Plater.cpp:1196 @@ -3438,6 +3446,10 @@ msgstr "Rychlost první vrstvy" msgid "First layer volumetric" msgstr "Volumetrická hodnota první vrstvy" +#: src/slic3r/GUI/Plater.cpp:3380 +msgid "Fix through NetFabb" +msgstr "Opravit pomocí NetFabb" + #: src/slic3r/GUI/GUI_ObjectList.cpp:1776 msgid "Fix through the Netfabb" msgstr "Opravit pomocí služby Netfabb" @@ -3604,7 +3616,7 @@ msgstr "Obecné" #: src/libslic3r/PrintConfig.cpp:1415 msgid "Generate no less than the number of skirt loops required to consume the specified amount of filament on the bottom layer. For multi-extruder machines, this minimum applies to each extruder." -msgstr "Nevygenerovat méně, než počet obrysových smyček, potřebných ke spotřebování specifikovaného množství filamentu na spodní vrstvu. U strojů s více extrudery platí toto minimum pro každý extruder." +msgstr "Nevygenerovat méně než je počet obrysových smyček potřebných ke spotřebování specifikovaného množství filamentu na spodní vrstvu. U strojů s více extrudery platí toto minimum pro každý extruder." #: src/libslic3r/PrintConfig.cpp:2007 msgid "Generate support material" @@ -3932,7 +3944,7 @@ msgstr "Horizontální posuvník - Pohyb aktivním ukazatelem vpravo" #: src/libslic3r/PrintConfig.cpp:279 msgid "Horizontal width of the brim that will be printed around each object on the first layer." -msgstr "Šírka límce který bude vytištěn v první vrstvě okolo každého objektu." +msgstr "Šířka límce, který bude vytištěn v první vrstvě okolo každého objektu." #: src/slic3r/GUI/PrintHostDialogs.cpp:150 msgid "Host" @@ -4270,6 +4282,10 @@ msgstr "in" msgid "In this mode you can select only other %s Items%s" msgstr "V tomto režimu můžete vybrat pouze jinou/jiný %s %s" +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:423 +msgid "Inches" +msgstr "Palce" + #: src/slic3r/GUI/UpdateDialogs.cpp:230 msgid "Incompatible bundles:" msgstr "Nekompatibilní balíky:" @@ -5471,7 +5487,7 @@ msgstr "korun/kg" #: src/libslic3r/PrintConfig.cpp:461 msgid "Monotonic" -msgstr "Monotóní" +msgstr "Monotónní" #: src/slic3r/GUI/NotificationManager.cpp:305 #: src/slic3r/GUI/NotificationManager.cpp:315 @@ -7845,7 +7861,7 @@ msgstr "Nastavte tvar a rozměry vaší tiskové podložky." #: src/libslic3r/PrintConfig.cpp:592 msgid "Set this to a non-zero value to allow a manual extrusion width. If left to zero, Slic3r derives extrusion widths from the nozzle diameter (see the tooltips for perimeter extrusion width, infill extrusion width etc). If expressed as percentage (for example: 230%), it will be computed over layer height." -msgstr "Nastavením kladné hodnoty povolíte manuální šířku extruze. Pokud je hodnota ponechána na nule, Slic3r odvozuje šířku extruze z průměru trysky (viz nápovědy pro šířku extruze perimetru, šířku extruze výplně apod.). Pokud je hodnota vyjádřena procenty (například: 230%), vypočítá se z výšky vrstvy." +msgstr "Nastavením kladné hodnoty povolíte manuální nastavení šířky extruze. Pokud je hodnota ponechána na nule, Slic3r odvozuje šířku extruze z průměru trysky (viz nápovědy pro šířku extruze perimetru, šířku extruze výplně apod.). Pokud je hodnota vyjádřena procenty (například: 230%), vypočítá se z výšky vrstvy." #: src/libslic3r/PrintConfig.cpp:484 msgid "Set this to a non-zero value to set a manual extrusion width for external perimeters. If left zero, default extrusion width will be used if set, otherwise 1.125 x nozzle diameter will be used. If expressed as percentage (for example 200%), it will be computed over layer height." @@ -7853,7 +7869,7 @@ msgstr "Nastavením na kladnou hodnotu, definuje šířku manuální extruze pro #: src/libslic3r/PrintConfig.cpp:920 msgid "Set this to a non-zero value to set a manual extrusion width for first layer. You can use this to force fatter extrudates for better adhesion. If expressed as percentage (for example 120%) it will be computed over first layer height. If set to zero, it will use the default extrusion width." -msgstr "Nastavením kladné hodnoty zvolíte manuální šířku vytlačování pro první vrstvu. Toto můžete použít k vytlačování tlustší extruze pro lepší přilnavost. Pokud je vyjádřeno jako procenty (například 120%), bude vypočteno z výšky první vrstvy. Pokud je nastavena na nulu, použije se výchozí šířka vytlačování." +msgstr "Nastavením kladné hodnoty povolíte manuální nastavení šířky vytlačování pro první vrstvu. Toto můžete použít k vytlačování tlustší extruze pro lepší přilnavost. Pokud je vyjádřeno jako procenty (například 120%), bude vypočteno z výšky první vrstvy. Pokud je nastavena na nulu, použije se výchozí šířka vytlačování." #: src/libslic3r/PrintConfig.cpp:1873 msgid "Set this to a non-zero value to set a manual extrusion width for infill for solid surfaces. If left zero, default extrusion width will be used if set, otherwise 1.125 x nozzle diameter will be used. If expressed as percentage (for example 90%) it will be computed over layer height." @@ -7865,7 +7881,7 @@ msgstr "Zadejte kladnou hodnotu, chcete-li nastavit manuálně šířku extruze #: src/libslic3r/PrintConfig.cpp:1055 msgid "Set this to a non-zero value to set a manual extrusion width for infill. If left zero, default extrusion width will be used if set, otherwise 1.125 x nozzle diameter will be used. You may want to use fatter extrudates to speed up the infill and make your parts stronger. If expressed as percentage (for example 90%) it will be computed over layer height." -msgstr "Nastavením kladné hodnoty upravíte manuálně šířku extruze pro výplň. Pokud je ponechána nula, použije se standardní šířka extruze, pokud je nastavena, jinak se použije průměr trysky 1,125 x. Je možné, že budete chtít použít tlustší extruze, pro zrychlení výplně a zpevnění vašich výtisků. Pokud je vyjádřeno jako procenty (například 90%), bude vypočteno z výšky vrstvy." +msgstr "Nastavením kladné hodnoty povolíte manuální nastavení šířky extruze pro výplň. Pokud je ponechána nula, použije se standardní šířka extruze, pokud je nastavena, jinak se použije průměr trysky 1,125 x. Je možné, že budete chtít použít tlustší extruze, pro zrychlení výplně a zpevnění vašich výtisků. Pokud je vyjádřeno jako procenty (například 90%), bude vypočteno z výšky vrstvy." #: src/libslic3r/PrintConfig.cpp:1527 msgid "Set this to a non-zero value to set a manual extrusion width for perimeters. You may want to use thinner extrudates to get more accurate surfaces. If left zero, default extrusion width will be used if set, otherwise 1.125 x nozzle diameter will be used. If expressed as percentage (for example 200%) it will be computed over layer height." @@ -9328,11 +9344,11 @@ msgstr "Tento extruder bude nastaven pro vybrané položky" #: src/libslic3r/PrintConfig.cpp:258 msgid "This factor affects the amount of plastic for bridging. You can decrease it slightly to pull the extrudates and prevent sagging, although default settings are usually good and you should experiment with cooling (use a fan) before tweaking this." -msgstr "Tato hodnota určuje množství vytlačeného plastu při vytváření mostů. Mírným snížením této hodnoty můžete předejít pronášení i když, přednastavené hodnoty jsou většinou dobré a je lepší experimentovat s chlazením (využitím ventilátoru), než s touto hodnotou." +msgstr "Tato hodnota určuje množství vytlačeného plastu při vytváření mostů. Mírným snížením této hodnoty můžete předejít pronášení, i když přednastavené hodnoty jsou většinou dobré a je lepší experimentovat s chlazením (využitím ventilátoru) než s touto hodnotou." #: src/libslic3r/PrintConfig.cpp:582 msgid "This factor changes the amount of flow proportionally. You may need to tweak this setting to get nice surface finish and correct single wall widths. Usual values are between 0.9 and 1.1. If you think you need to change this more, check filament diameter and your firmware E steps." -msgstr "Tento faktor mění poměrné množství průtoku. Možná bude třeba toto nastavení vyladit, pro dosažení hezkého povrchu a správné šířky jednotlivých stěn. Obvyklé hodnoty jsou mezi 0,9 a 1,1. Pokud si myslíte, že hodnotu potřebujete změnit více, zkontrolujte průměr filamentu a E kroky ve firmwaru." +msgstr "Tento faktor mění poměrné množství průtoku. Možná bude třeba toto nastavení vyladit pro dosažení hezkého povrchu a správné šířky jednotlivých stěn. Obvyklé hodnoty jsou mezi 0,9 a 1,1. Pokud si myslíte, že hodnotu potřebujete změnit více, zkontrolujte průměr filamentu a E kroky ve firmwaru." #: src/libslic3r/PrintConfig.cpp:248 msgid "This fan speed is enforced during all bridges and overhangs." @@ -10203,7 +10219,7 @@ msgstr "při tisku" #: src/libslic3r/PrintConfig.cpp:287 msgid "When printing multi-material objects, this settings will make Slic3r to clip the overlapping object parts one by the other (2nd part will be clipped by the 1st, 3rd part will be clipped by the 1st and 2nd etc)." -msgstr "Připnutí překrývajících se objektů jeden k druhému při Multimateriálovém tisku. (Druhá část se připne k první, třetí část k první a druhé, atd)." +msgstr "Připnutí překrývajících se objektů jeden k druhému při Multimateriálovém tisku. (Druhá část se připne k první, třetí část k první a druhé, atd.)" #: src/libslic3r/PrintConfig.cpp:339 msgid "When printing multiple objects or copies, this feature will complete each object before moving onto next one (and starting it from its bottom layer). This feature is useful to avoid the risk of ruined prints. Slic3r should warn and prevent you from extruder collisions, but beware." @@ -10494,6 +10510,10 @@ msgstr "Váš soubor byl opraven." msgid "Your object appears to be too large, so it was automatically scaled down to fit your print bed." msgstr "Váš objekt se zdá být příliš velký, takže byl automaticky zmenšen, aby se vešel na tiskovou podložku." +#: src/libslic3r/GCode.cpp:1261 +msgid "Your print is very close to the priming regions. Make sure there is no collision." +msgstr "Váš tisk je velmi blízko čistícím oblastem. Zajistěte, aby nedošlo ke kolizi." + #: src/libslic3r/PrintConfig.cpp:2428 msgid "Z offset" msgstr "Odsazení Z" diff --git a/resources/localization/de/PrusaSlicer.mo b/resources/localization/de/PrusaSlicer.mo index d2256b27d622974b07e31ddb603cdcdfd748a04d..9bb7e0b37a44dfb853a33463c4020efa55600877 100644 GIT binary patch delta 54429 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

8X8r4eZd52aT-4l8vd%??eg)RRzi}T% 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