diff --git a/CMakeLists.txt b/CMakeLists.txt index 9f30f18ea5..85b054bf05 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -393,6 +393,7 @@ endif () find_package(PNG REQUIRED) +set(OpenGL_GL_PREFERENCE "LEGACY") find_package(OpenGL REQUIRED) # Find glew or use bundled version @@ -509,11 +510,14 @@ endif() if (WIN32) install(DIRECTORY "${SLIC3R_RESOURCES_DIR}/" DESTINATION "${CMAKE_INSTALL_PREFIX}/resources") elseif (SLIC3R_FHS) + # CMAKE_INSTALL_FULL_DATAROOTDIR: read-only architecture-independent data root (share) set(SLIC3R_FHS_RESOURCES "${CMAKE_INSTALL_FULL_DATAROOTDIR}/PrusaSlicer") install(DIRECTORY "${SLIC3R_RESOURCES_DIR}/" DESTINATION "${SLIC3R_FHS_RESOURCES}") install(FILES src/platform/unix/PrusaSlicer.desktop DESTINATION ${SLIC3R_FHS_RESOURCES}/applications) + install(FILES src/platform/unix/PrusaGcodeviewer.desktop DESTINATION ${SLIC3R_FHS_RESOURCES}/applications) else () install(FILES src/platform/unix/PrusaSlicer.desktop DESTINATION ${CMAKE_INSTALL_PREFIX}/resources/applications) + install(FILES src/platform/unix/PrusaGcodeviewer.desktop DESTINATION ${CMAKE_INSTALL_PREFIX}/resources/applications) install(DIRECTORY "${SLIC3R_RESOURCES_DIR}/" DESTINATION "${CMAKE_INSTALL_PREFIX}/resources") endif () diff --git a/deps/CGAL/CGAL.cmake b/deps/CGAL/CGAL.cmake index f0584c5b58..fa88fc29ee 100644 --- a/deps/CGAL/CGAL.cmake +++ b/deps/CGAL/CGAL.cmake @@ -15,6 +15,17 @@ include(GNUInstallDirs) # If this file is not present, it will not consider the stored absolute path ExternalProject_Add_Step(dep_CGAL dep_CGAL_relocation_fix DEPENDEES install + COMMAND ${CMAKE_COMMAND} -E remove CGALConfig-installation-dirs.cmake WORKING_DIRECTORY "${DESTDIR}/usr/local/${CMAKE_INSTALL_LIBDIR}/cmake/CGAL" ) + +# Again, for whatever reason, CGAL thinks that its version is not relevant if +# configured as a header only library. Fixing it by placing a cmake version file +# besides the installed config file. +ExternalProject_Add_Step(dep_CGAL dep_CGAL_version_fix + DEPENDEES install + + COMMAND ${CMAKE_COMMAND} -E copy cgal/CGALConfigVersion.cmake "${DESTDIR}/usr/local/${CMAKE_INSTALL_LIBDIR}/cmake/CGAL/CGALConfigVersion.cmake" + WORKING_DIRECTORY "${CMAKE_CURRENT_LIST_DIR}" +) diff --git a/deps/CGAL/cgal/CGALConfigVersion.cmake b/deps/CGAL/cgal/CGALConfigVersion.cmake new file mode 100644 index 0000000000..f688824e8b --- /dev/null +++ b/deps/CGAL/cgal/CGALConfigVersion.cmake @@ -0,0 +1,37 @@ +# This is a basic version file for the Config-mode of find_package(). +# It is used by write_basic_package_version_file() as input file for configure_file() +# to create a version-file which can be installed along a config.cmake file. +# +# The created file sets PACKAGE_VERSION_EXACT if the current version string and +# the requested version string are exactly the same and it sets +# PACKAGE_VERSION_COMPATIBLE if the current version is >= requested version. +# The variable CVF_VERSION must be set before calling configure_file(). + +set(PACKAGE_VERSION "5.0.0") + +if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION) + set(PACKAGE_VERSION_COMPATIBLE FALSE) +else() + set(PACKAGE_VERSION_COMPATIBLE TRUE) + if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION) + set(PACKAGE_VERSION_EXACT TRUE) + endif() +endif() + + +# if the installed project requested no architecture check, don't perform the check +if("FALSE") + return() +endif() + +# if the installed or the using project don't have CMAKE_SIZEOF_VOID_P set, ignore it: +if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "" OR "8" STREQUAL "") + return() +endif() + +# check that the installed version has the same 32/64bit-ness as the one which is currently searching: +if(NOT CMAKE_SIZEOF_VOID_P STREQUAL "8") + math(EXPR installedBits "8 * 8") + set(PACKAGE_VERSION "${PACKAGE_VERSION} (${installedBits}bit)") + set(PACKAGE_VERSION_UNSUITABLE TRUE) +endif() diff --git a/deps/PNG/PNG.cmake b/deps/PNG/PNG.cmake index 3a8d22ae3a..3e55991fba 100644 --- a/deps/PNG/PNG.cmake +++ b/deps/PNG/PNG.cmake @@ -1,7 +1,3 @@ -set(_prefix_line "") -if(CMAKE_SYSTEM_NAME STREQUAL "Linux") - set(_prefix_line "-DPNG_PREFIX=prusaslicer_") -endif() prusaslicer_add_cmake_project(PNG GIT_REPOSITORY https://github.com/glennrp/libpng.git @@ -10,7 +6,7 @@ prusaslicer_add_cmake_project(PNG CMAKE_ARGS -DPNG_SHARED=OFF -DPNG_STATIC=ON - ${_prefix_line} + -DPNG_PREFIX=prusaslicer_ -DPNG_TESTS=OFF ) diff --git a/resources/data/flatpak/com.prusa3d.PrusaSlicer.desktop b/resources/data/flatpak/com.prusa3d.PrusaSlicer.desktop new file mode 100755 index 0000000000..8987222984 --- /dev/null +++ b/resources/data/flatpak/com.prusa3d.PrusaSlicer.desktop @@ -0,0 +1,12 @@ +[Desktop Entry] +Name=PrusaSlicer +GenericName=3D Printing Software +Icon=com.prusa3d.PrusaSlicer +Exec=prusa-slicer %F +Terminal=false +Type=Application +MimeType=model/stl;model/x-wavefront-obj;model/3mf;model/x-geomview-off;application/x-amf; +Categories=Graphics;3DGraphics;Engineering; +Keywords=3D;Printing;Slicer;slice;3D;printer;convert;gcode;stl;obj;amf;SLA +StartupNotify=false +StartupWMClass=prusa-slicer \ No newline at end of file diff --git a/resources/data/flatpak/com.prusa3d.PrusaSlicer.metainfo.xml b/resources/data/flatpak/com.prusa3d.PrusaSlicer.metainfo.xml new file mode 100755 index 0000000000..b62a57e480 --- /dev/null +++ b/resources/data/flatpak/com.prusa3d.PrusaSlicer.metainfo.xml @@ -0,0 +1,62 @@ + + + com.prusa3d.PrusaSlicer + com.prusa3d.PrusaSlicer.desktop + + prusa-slicer.desktop + + PrusaSlicer + Powerful 3D printing slicer optimized for Prusa printers + 0BSD + AGPL-3.0-only + +

+ PrusaSlicer takes 3D models (STL, OBJ, AMF) and converts them into G-code + instructions for FFF printers or PNG layers for mSLA 3D printers. It's + compatible with any modern printer based on the RepRap toolchain, including all + those based on the Marlin, Prusa, Sprinter and Repetier firmware. It also works + with Mach3, LinuxCNC and Machinekit controllers. +

+

+ PrusaSlicer is based on Slic3r by Alessandro Ranelucci and the RepRap community. +

+

+ What are some of PrusaSlicer's main features? +

+ +
+ https://www.prusa3d.com/prusaslicer/ + https://help.prusa3d.com + https://github.com/prusa3d/PrusaSlicer/issues + + + https://user-images.githubusercontent.com/590307/78981854-24d07580-7b21-11ea-9441-77923534a659.png + + + https://user-images.githubusercontent.com/590307/78981860-2863fc80-7b21-11ea-8c2d-8ff79ced2578.png + + + https://user-images.githubusercontent.com/590307/78981862-28fc9300-7b21-11ea-9b0d-d03e16b709d3.png + + + + + + +

This is final release of PrusaSlicer 2.2.0 introducing SLA hollowing and hole drilling, support for 3rd party printer vendors, 3Dconnexion support, + automatic variable layer height, macOS dark mode support, greatly improved ColorPrint feature and much, much more. + Several bugs found in the previous release candidate are fixed in this final release. See the respective change logs of the previous releases for all the + new features, improvements and bugfixes in the 2.2.0 series.

+
+
+
+
diff --git a/resources/icons/PrusaSlicer-gcodeviewer.ico b/resources/icons/PrusaSlicer-gcodeviewer.ico index 955b8c6dc3..1cd867e29b 100644 Binary files a/resources/icons/PrusaSlicer-gcodeviewer.ico and b/resources/icons/PrusaSlicer-gcodeviewer.ico differ diff --git a/resources/icons/PrusaSlicer-gcodeviewer_128px.png b/resources/icons/PrusaSlicer-gcodeviewer_128px.png index f75bcfe587..475ddb68ed 100644 Binary files a/resources/icons/PrusaSlicer-gcodeviewer_128px.png and b/resources/icons/PrusaSlicer-gcodeviewer_128px.png differ diff --git a/resources/icons/PrusaSlicer-gcodeviewer_192px.png b/resources/icons/PrusaSlicer-gcodeviewer_192px.png index 7f4e9d6174..2f3b03683e 100644 Binary files a/resources/icons/PrusaSlicer-gcodeviewer_192px.png and b/resources/icons/PrusaSlicer-gcodeviewer_192px.png differ diff --git a/resources/icons/PrusaSlicer-gcodeviewer_32px.png b/resources/icons/PrusaSlicer-gcodeviewer_32px.png index 0f7e49d87a..eaba5e21d7 100644 Binary files a/resources/icons/PrusaSlicer-gcodeviewer_32px.png and b/resources/icons/PrusaSlicer-gcodeviewer_32px.png differ diff --git a/resources/icons/fdm_supports.svg b/resources/icons/fdm_supports.svg new file mode 100644 index 0000000000..a64314f807 --- /dev/null +++ b/resources/icons/fdm_supports.svg @@ -0,0 +1,19 @@ + + + + + + + + + + diff --git a/resources/icons/notification_eject_sd.svg b/resources/icons/notification_eject_sd.svg new file mode 100644 index 0000000000..bea6c09772 --- /dev/null +++ b/resources/icons/notification_eject_sd.svg @@ -0,0 +1,75 @@ + +image/svg+xml + + + + + + + diff --git a/resources/icons/notification_eject_sd_hover.svg b/resources/icons/notification_eject_sd_hover.svg new file mode 100644 index 0000000000..23d2480c62 --- /dev/null +++ b/resources/icons/notification_eject_sd_hover.svg @@ -0,0 +1,76 @@ + +image/svg+xml + + + + + + + diff --git a/resources/localization/PrusaSlicer.pot b/resources/localization/PrusaSlicer.pot index a111c8fa09..6b4ec495e4 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-10-19 13:45+0200\n" +"POT-Creation-Date: 2020-11-18 12:28+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,55 +18,54 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" -#: src/slic3r/GUI/AboutDialog.cpp:43 src/slic3r/GUI/AboutDialog.cpp:48 -#: src/slic3r/GUI/AboutDialog.cpp:317 +#: src/slic3r/GUI/AboutDialog.cpp:42 src/slic3r/GUI/AboutDialog.cpp:297 msgid "Portions copyright" msgstr "" -#: src/slic3r/GUI/AboutDialog.cpp:139 src/slic3r/GUI/AboutDialog.cpp:281 +#: src/slic3r/GUI/AboutDialog.cpp:132 src/slic3r/GUI/AboutDialog.cpp:261 msgid "Copyright" msgstr "" #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:141 +#: src/slic3r/GUI/AboutDialog.cpp:134 msgid "" "License agreements of all following programs (libraries) are part of " "application license agreement" msgstr "" -#: src/slic3r/GUI/AboutDialog.cpp:212 src/slic3r/GUI/AboutDialog.cpp:215 +#: src/slic3r/GUI/AboutDialog.cpp:204 #, possible-c-format msgid "About %s" msgstr "" -#: src/slic3r/GUI/AboutDialog.cpp:256 src/slic3r/GUI/GUI_App.cpp:239 +#: src/slic3r/GUI/AboutDialog.cpp:236 src/slic3r/GUI/GUI_App.cpp:231 #: src/slic3r/GUI/MainFrame.cpp:164 msgid "Version" msgstr "" #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:283 src/slic3r/GUI/GUI_App.cpp:244 +#: src/slic3r/GUI/AboutDialog.cpp:263 src/slic3r/GUI/GUI_App.cpp:236 msgid "is licensed under the" msgstr "" -#: src/slic3r/GUI/AboutDialog.cpp:284 src/slic3r/GUI/GUI_App.cpp:244 +#: src/slic3r/GUI/AboutDialog.cpp:264 src/slic3r/GUI/GUI_App.cpp:236 msgid "GNU Affero General Public License, version 3" msgstr "" -#: src/slic3r/GUI/AboutDialog.cpp:285 +#: src/slic3r/GUI/AboutDialog.cpp:265 msgid "" "PrusaSlicer is based on Slic3r by Alessandro Ranellucci and the RepRap " "community." msgstr "" -#: src/slic3r/GUI/AboutDialog.cpp:286 +#: src/slic3r/GUI/AboutDialog.cpp:266 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/BackgroundSlicingProcess.cpp:62 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:77 #, possible-c-format msgid "" "%s has encountered an error. It was likely caused by running out of memory. " @@ -74,66 +73,71 @@ msgid "" "and we would be glad if you reported it." msgstr "" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:144 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:156 msgid "" "Copying of the temporary G-code to the output G-code failed. Maybe the SD " -"card is write locked?" +"card is write locked?\n" +"Error message: %1%" msgstr "" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:147 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:159 msgid "" "Copying of the temporary G-code to the output G-code failed. There might be " "problem with target device, please try exporting again or using different " "device. The corrupted output G-code is at %1%.tmp." msgstr "" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:150 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:162 msgid "" "Renaming of the G-code after copying to the selected destination folder has " "failed. Current path is %1%.tmp. Please try exporting again." msgstr "" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:153 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:165 msgid "" "Copying of the temporary G-code has finished but the original code at %1% " "couldn't be opened during copy check. The output G-code is at %2%.tmp." msgstr "" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:156 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:168 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 "" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:163 -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:520 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:171 +msgid "Unknown error occured during exporting G-code." +msgstr "" + +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:176 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:525 msgid "Running post-processing scripts" msgstr "" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:165 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:178 msgid "G-code file exported to %1%" msgstr "" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:170 -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:219 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:183 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:232 msgid "Slicing complete" msgstr "" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:214 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:227 msgid "Masked SLA file exported to %1%" msgstr "" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:522 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:528 msgid "Copying of the temporary G-code to the output G-code failed" msgstr "" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:545 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:551 msgid "Scheduling upload to `%1%`. See Window -> Print Host Upload Queue" msgstr "" #: src/slic3r/GUI/BedShapeDialog.cpp:93 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:240 src/slic3r/GUI/Plater.cpp:166 -#: src/slic3r/GUI/Tab.cpp:2493 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:240 src/slic3r/GUI/Plater.cpp:161 +#: src/slic3r/GUI/Tab.cpp:2504 msgid "Size" msgstr "" @@ -141,7 +145,7 @@ msgstr "" msgid "Origin" msgstr "" -#: src/slic3r/GUI/BedShapeDialog.cpp:95 src/libslic3r/PrintConfig.cpp:745 +#: src/slic3r/GUI/BedShapeDialog.cpp:95 src/libslic3r/PrintConfig.cpp:752 msgid "Diameter" msgstr "" @@ -155,11 +159,11 @@ msgid "" "rectangle." msgstr "" -#: src/slic3r/GUI/BedShapeDialog.cpp:129 src/slic3r/GUI/ConfigWizard.cpp:236 -#: src/slic3r/GUI/ConfigWizard.cpp:1336 src/slic3r/GUI/ConfigWizard.cpp:1350 +#: src/slic3r/GUI/BedShapeDialog.cpp:129 src/slic3r/GUI/ConfigWizard.cpp:240 +#: src/slic3r/GUI/ConfigWizard.cpp:1346 src/slic3r/GUI/ConfigWizard.cpp:1360 #: src/slic3r/GUI/ExtruderSequenceDialog.cpp:87 -#: src/slic3r/GUI/GCodeViewer.cpp:2183 src/slic3r/GUI/GCodeViewer.cpp:2189 -#: src/slic3r/GUI/GCodeViewer.cpp:2197 src/slic3r/GUI/GUI_ObjectLayers.cpp:145 +#: src/slic3r/GUI/GCodeViewer.cpp:2275 src/slic3r/GUI/GCodeViewer.cpp:2281 +#: src/slic3r/GUI/GCodeViewer.cpp:2289 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 @@ -167,35 +171,35 @@ msgstr "" #: 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:124 src/libslic3r/PrintConfig.cpp:222 -#: src/libslic3r/PrintConfig.cpp:280 src/libslic3r/PrintConfig.cpp:355 -#: src/libslic3r/PrintConfig.cpp:363 src/libslic3r/PrintConfig.cpp:413 -#: src/libslic3r/PrintConfig.cpp:541 src/libslic3r/PrintConfig.cpp:552 -#: src/libslic3r/PrintConfig.cpp:570 src/libslic3r/PrintConfig.cpp:748 -#: src/libslic3r/PrintConfig.cpp:1158 src/libslic3r/PrintConfig.cpp:1339 -#: src/libslic3r/PrintConfig.cpp:1400 src/libslic3r/PrintConfig.cpp:1418 -#: src/libslic3r/PrintConfig.cpp:1436 src/libslic3r/PrintConfig.cpp:1492 -#: src/libslic3r/PrintConfig.cpp:1502 src/libslic3r/PrintConfig.cpp:1624 -#: src/libslic3r/PrintConfig.cpp:1632 src/libslic3r/PrintConfig.cpp:1673 -#: src/libslic3r/PrintConfig.cpp:1681 src/libslic3r/PrintConfig.cpp:1691 -#: src/libslic3r/PrintConfig.cpp:1699 src/libslic3r/PrintConfig.cpp:1707 -#: src/libslic3r/PrintConfig.cpp:1790 src/libslic3r/PrintConfig.cpp:2056 -#: src/libslic3r/PrintConfig.cpp:2127 src/libslic3r/PrintConfig.cpp:2161 -#: src/libslic3r/PrintConfig.cpp:2290 src/libslic3r/PrintConfig.cpp:2369 -#: src/libslic3r/PrintConfig.cpp:2376 src/libslic3r/PrintConfig.cpp:2383 -#: src/libslic3r/PrintConfig.cpp:2413 src/libslic3r/PrintConfig.cpp:2423 -#: src/libslic3r/PrintConfig.cpp:2433 src/libslic3r/PrintConfig.cpp:2593 -#: src/libslic3r/PrintConfig.cpp:2627 src/libslic3r/PrintConfig.cpp:2766 -#: src/libslic3r/PrintConfig.cpp:2775 src/libslic3r/PrintConfig.cpp:2784 -#: src/libslic3r/PrintConfig.cpp:2794 src/libslic3r/PrintConfig.cpp:2859 -#: src/libslic3r/PrintConfig.cpp:2869 src/libslic3r/PrintConfig.cpp:2881 -#: src/libslic3r/PrintConfig.cpp:2901 src/libslic3r/PrintConfig.cpp:2911 -#: src/libslic3r/PrintConfig.cpp:2921 src/libslic3r/PrintConfig.cpp:2939 -#: src/libslic3r/PrintConfig.cpp:2954 src/libslic3r/PrintConfig.cpp:2968 -#: src/libslic3r/PrintConfig.cpp:2979 src/libslic3r/PrintConfig.cpp:2992 -#: src/libslic3r/PrintConfig.cpp:3037 src/libslic3r/PrintConfig.cpp:3047 -#: src/libslic3r/PrintConfig.cpp:3056 src/libslic3r/PrintConfig.cpp:3066 -#: src/libslic3r/PrintConfig.cpp:3082 src/libslic3r/PrintConfig.cpp:3106 +#: src/libslic3r/PrintConfig.cpp:131 src/libslic3r/PrintConfig.cpp:229 +#: src/libslic3r/PrintConfig.cpp:287 src/libslic3r/PrintConfig.cpp:362 +#: src/libslic3r/PrintConfig.cpp:370 src/libslic3r/PrintConfig.cpp:420 +#: src/libslic3r/PrintConfig.cpp:548 src/libslic3r/PrintConfig.cpp:559 +#: src/libslic3r/PrintConfig.cpp:577 src/libslic3r/PrintConfig.cpp:755 +#: src/libslic3r/PrintConfig.cpp:1167 src/libslic3r/PrintConfig.cpp:1348 +#: src/libslic3r/PrintConfig.cpp:1409 src/libslic3r/PrintConfig.cpp:1427 +#: src/libslic3r/PrintConfig.cpp:1445 src/libslic3r/PrintConfig.cpp:1503 +#: src/libslic3r/PrintConfig.cpp:1513 src/libslic3r/PrintConfig.cpp:1635 +#: src/libslic3r/PrintConfig.cpp:1643 src/libslic3r/PrintConfig.cpp:1684 +#: src/libslic3r/PrintConfig.cpp:1692 src/libslic3r/PrintConfig.cpp:1702 +#: src/libslic3r/PrintConfig.cpp:1710 src/libslic3r/PrintConfig.cpp:1718 +#: src/libslic3r/PrintConfig.cpp:1781 src/libslic3r/PrintConfig.cpp:2047 +#: src/libslic3r/PrintConfig.cpp:2118 src/libslic3r/PrintConfig.cpp:2152 +#: src/libslic3r/PrintConfig.cpp:2281 src/libslic3r/PrintConfig.cpp:2360 +#: src/libslic3r/PrintConfig.cpp:2367 src/libslic3r/PrintConfig.cpp:2374 +#: src/libslic3r/PrintConfig.cpp:2404 src/libslic3r/PrintConfig.cpp:2414 +#: src/libslic3r/PrintConfig.cpp:2424 src/libslic3r/PrintConfig.cpp:2584 +#: src/libslic3r/PrintConfig.cpp:2618 src/libslic3r/PrintConfig.cpp:2757 +#: src/libslic3r/PrintConfig.cpp:2766 src/libslic3r/PrintConfig.cpp:2775 +#: src/libslic3r/PrintConfig.cpp:2785 src/libslic3r/PrintConfig.cpp:2850 +#: src/libslic3r/PrintConfig.cpp:2860 src/libslic3r/PrintConfig.cpp:2872 +#: src/libslic3r/PrintConfig.cpp:2892 src/libslic3r/PrintConfig.cpp:2902 +#: src/libslic3r/PrintConfig.cpp:2912 src/libslic3r/PrintConfig.cpp:2930 +#: src/libslic3r/PrintConfig.cpp:2945 src/libslic3r/PrintConfig.cpp:2959 +#: src/libslic3r/PrintConfig.cpp:2970 src/libslic3r/PrintConfig.cpp:2983 +#: src/libslic3r/PrintConfig.cpp:3028 src/libslic3r/PrintConfig.cpp:3038 +#: src/libslic3r/PrintConfig.cpp:3047 src/libslic3r/PrintConfig.cpp:3057 +#: src/libslic3r/PrintConfig.cpp:3073 src/libslic3r/PrintConfig.cpp:3097 msgid "mm" msgstr "" @@ -213,8 +217,8 @@ msgstr "" msgid "Circular" msgstr "" -#: src/slic3r/GUI/BedShapeDialog.cpp:143 src/slic3r/GUI/GUI_Preview.cpp:314 -#: src/libslic3r/ExtrusionEntity.cpp:327 src/libslic3r/ExtrusionEntity.cpp:362 +#: src/slic3r/GUI/BedShapeDialog.cpp:143 src/slic3r/GUI/GUI_Preview.cpp:309 +#: src/libslic3r/ExtrusionEntity.cpp:323 src/libslic3r/ExtrusionEntity.cpp:358 msgid "Custom" msgstr "" @@ -231,7 +235,7 @@ msgstr "" msgid "Load shape from STL..." msgstr "" -#: src/slic3r/GUI/BedShapeDialog.cpp:292 src/slic3r/GUI/MainFrame.cpp:1969 +#: src/slic3r/GUI/BedShapeDialog.cpp:292 src/slic3r/GUI/MainFrame.cpp:1981 msgid "Settings" msgstr "" @@ -244,7 +248,7 @@ msgid "Load..." msgstr "" #: src/slic3r/GUI/BedShapeDialog.cpp:333 src/slic3r/GUI/BedShapeDialog.cpp:413 -#: src/slic3r/GUI/Tab.cpp:3423 +#: src/slic3r/GUI/Tab.cpp:3447 msgid "Remove" msgstr "" @@ -286,7 +290,7 @@ msgstr "" msgid "Choose an STL file to import bed model from:" msgstr "" -#: src/slic3r/GUI/BedShapeDialog.hpp:98 src/slic3r/GUI/ConfigWizard.cpp:1295 +#: src/slic3r/GUI/BedShapeDialog.hpp:98 src/slic3r/GUI/ConfigWizard.cpp:1305 msgid "Bed Shape" msgstr "" @@ -340,7 +344,7 @@ msgid "" msgstr "" #: src/slic3r/GUI/ConfigManipulation.cpp:48 -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:29 src/slic3r/GUI/Tab.cpp:1371 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:29 src/slic3r/GUI/Tab.cpp:1376 #: src/libslic3r/PrintConfig.cpp:71 msgid "Layer height" msgstr "" @@ -352,7 +356,7 @@ msgid "" "The first layer height will be reset to 0.01." msgstr "" -#: src/slic3r/GUI/ConfigManipulation.cpp:60 src/libslic3r/PrintConfig.cpp:931 +#: src/slic3r/GUI/ConfigManipulation.cpp:60 src/libslic3r/PrintConfig.cpp:938 msgid "First layer height" msgstr "" @@ -428,15 +432,15 @@ msgstr "" #: src/slic3r/GUI/ConfigManipulation.cpp:210 #: 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:393 -#: src/slic3r/GUI/Tab.cpp:1413 src/slic3r/GUI/Tab.cpp:1414 -#: src/libslic3r/PrintConfig.cpp:237 src/libslic3r/PrintConfig.cpp:450 -#: src/libslic3r/PrintConfig.cpp:472 src/libslic3r/PrintConfig.cpp:812 -#: src/libslic3r/PrintConfig.cpp:826 src/libslic3r/PrintConfig.cpp:863 -#: src/libslic3r/PrintConfig.cpp:1025 src/libslic3r/PrintConfig.cpp:1035 -#: src/libslic3r/PrintConfig.cpp:1053 src/libslic3r/PrintConfig.cpp:1072 -#: src/libslic3r/PrintConfig.cpp:1091 src/libslic3r/PrintConfig.cpp:1843 -#: src/libslic3r/PrintConfig.cpp:1860 +#: src/slic3r/GUI/GUI_ObjectList.cpp:652 src/slic3r/GUI/Plater.cpp:388 +#: src/slic3r/GUI/Tab.cpp:1420 src/slic3r/GUI/Tab.cpp:1422 +#: src/libslic3r/PrintConfig.cpp:244 src/libslic3r/PrintConfig.cpp:457 +#: src/libslic3r/PrintConfig.cpp:479 src/libslic3r/PrintConfig.cpp:819 +#: src/libslic3r/PrintConfig.cpp:833 src/libslic3r/PrintConfig.cpp:870 +#: src/libslic3r/PrintConfig.cpp:1034 src/libslic3r/PrintConfig.cpp:1044 +#: src/libslic3r/PrintConfig.cpp:1062 src/libslic3r/PrintConfig.cpp:1081 +#: src/libslic3r/PrintConfig.cpp:1100 src/libslic3r/PrintConfig.cpp:1834 +#: src/libslic3r/PrintConfig.cpp:1851 msgid "Infill" msgstr "" @@ -468,12 +472,12 @@ msgstr "" msgid "Before roll back" msgstr "" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:24 src/libslic3r/PrintConfig.cpp:132 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:24 src/libslic3r/PrintConfig.cpp:139 msgid "User" msgstr "" #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:27 -#: src/slic3r/GUI/GUI_Preview.cpp:299 src/libslic3r/ExtrusionEntity.cpp:310 +#: src/slic3r/GUI/GUI_Preview.cpp:294 src/libslic3r/ExtrusionEntity.cpp:309 msgid "Unknown" msgstr "" @@ -485,174 +489,182 @@ msgstr "" msgid "PrusaSlicer version" msgstr "" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:51 src/libslic3r/Preset.cpp:1300 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:54 src/libslic3r/Preset.cpp:1257 msgid "print" msgstr "" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:52 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:55 msgid "filaments" msgstr "" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:53 src/libslic3r/Preset.cpp:1304 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:58 src/libslic3r/Preset.cpp:1259 +msgid "SLA print" +msgstr "" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:59 src/slic3r/GUI/Plater.cpp:688 +#: src/libslic3r/Preset.cpp:1260 +msgid "SLA material" +msgstr "" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:61 src/libslic3r/Preset.cpp:1261 msgid "printer" msgstr "" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:57 src/slic3r/GUI/Tab.cpp:1289 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:65 src/slic3r/GUI/Tab.cpp:1293 msgid "vendor" msgstr "" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:57 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:65 msgid "version" msgstr "" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:58 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:66 msgid "min PrusaSlicer version" msgstr "" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:60 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:68 msgid "max PrusaSlicer version" msgstr "" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:63 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:71 msgid "model" msgstr "" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:63 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:71 msgid "variants" msgstr "" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:75 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:83 #, possible-c-format msgid "Incompatible with this %s" msgstr "" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:78 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:86 msgid "Activate" msgstr "" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:104 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:112 msgid "Configuration Snapshots" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:236 +#: src/slic3r/GUI/ConfigWizard.cpp:240 msgid "nozzle" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:240 +#: src/slic3r/GUI/ConfigWizard.cpp:244 msgid "Alternate nozzles:" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:307 +#: src/slic3r/GUI/ConfigWizard.cpp:308 msgid "All standard" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:307 +#: src/slic3r/GUI/ConfigWizard.cpp:308 msgid "Standard" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:308 src/slic3r/GUI/ConfigWizard.cpp:598 -#: src/slic3r/GUI/Tab.cpp:3507 src/slic3r/GUI/UnsavedChangesDialog.cpp:921 +#: src/slic3r/GUI/ConfigWizard.cpp:309 src/slic3r/GUI/ConfigWizard.cpp:599 +#: src/slic3r/GUI/Tab.cpp:3528 src/slic3r/GUI/UnsavedChangesDialog.cpp:921 msgid "All" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:309 src/slic3r/GUI/ConfigWizard.cpp:599 -#: src/slic3r/GUI/Plater.cpp:365 src/slic3r/GUI/Plater.cpp:505 -#: src/libslic3r/ExtrusionEntity.cpp:312 +#: src/slic3r/GUI/ConfigWizard.cpp:310 src/slic3r/GUI/ConfigWizard.cpp:600 +#: src/slic3r/GUI/Plater.cpp:360 src/slic3r/GUI/Plater.cpp:500 msgid "None" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:445 +#: src/slic3r/GUI/ConfigWizard.cpp:446 #, possible-c-format msgid "Welcome to the %s Configuration Assistant" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:447 +#: src/slic3r/GUI/ConfigWizard.cpp:448 #, possible-c-format msgid "Welcome to the %s Configuration Wizard" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:449 +#: src/slic3r/GUI/ConfigWizard.cpp:450 msgid "Welcome" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:451 +#: src/slic3r/GUI/ConfigWizard.cpp:452 #, 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:456 +#: src/slic3r/GUI/ConfigWizard.cpp:457 msgid "Remove user profiles (a snapshot will be taken beforehand)" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:499 +#: src/slic3r/GUI/ConfigWizard.cpp:500 #, possible-c-format msgid "%s Family" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:587 +#: src/slic3r/GUI/ConfigWizard.cpp:588 msgid "Printer:" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:589 +#: src/slic3r/GUI/ConfigWizard.cpp:590 msgid "Vendor:" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:590 +#: src/slic3r/GUI/ConfigWizard.cpp:591 msgid "Profile:" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:662 src/slic3r/GUI/ConfigWizard.cpp:812 -#: src/slic3r/GUI/ConfigWizard.cpp:873 src/slic3r/GUI/ConfigWizard.cpp:1007 +#: src/slic3r/GUI/ConfigWizard.cpp:663 src/slic3r/GUI/ConfigWizard.cpp:813 +#: src/slic3r/GUI/ConfigWizard.cpp:874 src/slic3r/GUI/ConfigWizard.cpp:1011 msgid "(All)" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:691 +#: src/slic3r/GUI/ConfigWizard.cpp:692 msgid "" "Filaments marked with * are not compatible with some installed " "printers." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:694 +#: src/slic3r/GUI/ConfigWizard.cpp:695 msgid "All installed printers are compatible with the selected filament." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:714 +#: src/slic3r/GUI/ConfigWizard.cpp:715 msgid "" "Only the following installed printers are compatible with the selected " "filament:" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1091 +#: src/slic3r/GUI/ConfigWizard.cpp:1101 msgid "Custom Printer Setup" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1091 +#: src/slic3r/GUI/ConfigWizard.cpp:1101 msgid "Custom Printer" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1093 +#: src/slic3r/GUI/ConfigWizard.cpp:1103 msgid "Define a custom printer profile" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1095 +#: src/slic3r/GUI/ConfigWizard.cpp:1105 msgid "Custom profile name:" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1120 +#: src/slic3r/GUI/ConfigWizard.cpp:1130 msgid "Automatic updates" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1120 +#: src/slic3r/GUI/ConfigWizard.cpp:1130 msgid "Updates" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1128 src/slic3r/GUI/Preferences.cpp:81 +#: src/slic3r/GUI/ConfigWizard.cpp:1138 src/slic3r/GUI/Preferences.cpp:81 msgid "Check for application updates" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1132 +#: src/slic3r/GUI/ConfigWizard.cpp:1142 #, possible-c-format msgid "" "If enabled, %s checks for new application versions online. When a new " @@ -661,11 +673,11 @@ msgid "" "notification mechanisms, no automatic installation is done." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1138 src/slic3r/GUI/Preferences.cpp:97 +#: src/slic3r/GUI/ConfigWizard.cpp:1148 src/slic3r/GUI/Preferences.cpp:97 msgid "Update built-in Presets automatically" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1142 +#: src/slic3r/GUI/ConfigWizard.cpp:1152 #, possible-c-format msgid "" "If enabled, %s downloads updates of built-in system presets in the " @@ -674,30 +686,30 @@ msgid "" "startup." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1145 +#: src/slic3r/GUI/ConfigWizard.cpp:1155 msgid "" "Updates are never applied without user's consent and never overwrite user's " "customized settings." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1150 +#: src/slic3r/GUI/ConfigWizard.cpp:1160 msgid "" "Additionally a backup snapshot of the whole configuration is created before " "an update is applied." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1157 src/slic3r/GUI/GUI_ObjectList.cpp:1793 -#: src/slic3r/GUI/GUI_ObjectList.cpp:4439 src/slic3r/GUI/Plater.cpp:3028 -#: src/slic3r/GUI/Plater.cpp:3852 src/slic3r/GUI/Plater.cpp:3881 +#: src/slic3r/GUI/ConfigWizard.cpp:1167 src/slic3r/GUI/GUI_ObjectList.cpp:1793 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4439 src/slic3r/GUI/Plater.cpp:3120 +#: src/slic3r/GUI/Plater.cpp:3953 src/slic3r/GUI/Plater.cpp:3982 msgid "Reload from disk" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1160 +#: src/slic3r/GUI/ConfigWizard.cpp:1170 msgid "" "Export full pathnames of models and parts sources into 3mf and amf files" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1164 +#: src/slic3r/GUI/ConfigWizard.cpp:1174 msgid "" "If enabled, allows the Reload from disk command to automatically find and " "load the files when invoked.\n" @@ -705,11 +717,11 @@ msgid "" "using an open file dialog." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1172 +#: src/slic3r/GUI/ConfigWizard.cpp:1182 msgid "View mode" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1174 +#: src/slic3r/GUI/ConfigWizard.cpp:1184 msgid "" "PrusaSlicer's user interfaces comes in three variants:\n" "Simple, Advanced, and Expert.\n" @@ -718,285 +730,285 @@ msgid "" "fine-tuning, they are suitable for advanced and expert users, respectively." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1179 +#: src/slic3r/GUI/ConfigWizard.cpp:1189 msgid "Simple mode" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1180 +#: src/slic3r/GUI/ConfigWizard.cpp:1190 msgid "Advanced mode" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1181 +#: src/slic3r/GUI/ConfigWizard.cpp:1191 msgid "Expert mode" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1187 +#: src/slic3r/GUI/ConfigWizard.cpp:1197 msgid "The size of the object can be specified in inches" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1188 +#: src/slic3r/GUI/ConfigWizard.cpp:1198 msgid "Use inches" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1222 +#: src/slic3r/GUI/ConfigWizard.cpp:1232 msgid "Other Vendors" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1226 +#: src/slic3r/GUI/ConfigWizard.cpp:1236 #, possible-c-format msgid "Pick another vendor supported by %s" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1257 +#: src/slic3r/GUI/ConfigWizard.cpp:1267 msgid "Firmware Type" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1257 src/slic3r/GUI/Tab.cpp:2132 +#: src/slic3r/GUI/ConfigWizard.cpp:1267 src/slic3r/GUI/Tab.cpp:2145 msgid "Firmware" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1261 +#: src/slic3r/GUI/ConfigWizard.cpp:1271 msgid "Choose the type of firmware used by your printer." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1295 +#: src/slic3r/GUI/ConfigWizard.cpp:1305 msgid "Bed Shape and Size" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1298 +#: src/slic3r/GUI/ConfigWizard.cpp:1308 msgid "Set the shape of your printer's bed." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1318 +#: src/slic3r/GUI/ConfigWizard.cpp:1328 msgid "Filament and Nozzle Diameters" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1318 +#: src/slic3r/GUI/ConfigWizard.cpp:1328 msgid "Print Diameters" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1332 +#: src/slic3r/GUI/ConfigWizard.cpp:1342 msgid "Enter the diameter of your printer's hot end nozzle." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1335 +#: src/slic3r/GUI/ConfigWizard.cpp:1345 msgid "Nozzle Diameter:" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1345 +#: src/slic3r/GUI/ConfigWizard.cpp:1355 msgid "Enter the diameter of your filament." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1346 +#: src/slic3r/GUI/ConfigWizard.cpp:1356 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:1349 +#: src/slic3r/GUI/ConfigWizard.cpp:1359 msgid "Filament Diameter:" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1383 -msgid "Extruder and Bed Temperatures" +#: src/slic3r/GUI/ConfigWizard.cpp:1393 +msgid "Nozzle and Bed Temperatures" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1383 +#: src/slic3r/GUI/ConfigWizard.cpp:1393 msgid "Temperatures" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1399 +#: src/slic3r/GUI/ConfigWizard.cpp:1409 msgid "Enter the temperature needed for extruding your filament." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1400 +#: src/slic3r/GUI/ConfigWizard.cpp:1410 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:1403 +#: src/slic3r/GUI/ConfigWizard.cpp:1413 msgid "Extrusion Temperature:" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1404 src/slic3r/GUI/ConfigWizard.cpp:1418 -#: src/libslic3r/PrintConfig.cpp:180 src/libslic3r/PrintConfig.cpp:912 -#: src/libslic3r/PrintConfig.cpp:956 src/libslic3r/PrintConfig.cpp:2209 +#: src/slic3r/GUI/ConfigWizard.cpp:1414 src/slic3r/GUI/ConfigWizard.cpp:1428 +#: src/libslic3r/PrintConfig.cpp:187 src/libslic3r/PrintConfig.cpp:919 +#: src/libslic3r/PrintConfig.cpp:963 src/libslic3r/PrintConfig.cpp:2200 msgid "°C" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1413 +#: src/slic3r/GUI/ConfigWizard.cpp:1423 msgid "" "Enter the bed temperature needed for getting your filament to stick to your " "heated bed." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1414 +#: src/slic3r/GUI/ConfigWizard.cpp:1424 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:1417 +#: src/slic3r/GUI/ConfigWizard.cpp:1427 msgid "Bed Temperature:" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1872 src/slic3r/GUI/ConfigWizard.cpp:2524 +#: src/slic3r/GUI/ConfigWizard.cpp:1882 src/slic3r/GUI/ConfigWizard.cpp:2534 msgid "Filaments" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1872 src/slic3r/GUI/ConfigWizard.cpp:2526 +#: src/slic3r/GUI/ConfigWizard.cpp:1882 src/slic3r/GUI/ConfigWizard.cpp:2536 msgid "SLA Materials" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1926 +#: src/slic3r/GUI/ConfigWizard.cpp:1936 msgid "FFF Technology Printers" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1931 +#: src/slic3r/GUI/ConfigWizard.cpp:1941 msgid "SLA Technology Printers" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:2237 src/slic3r/GUI/DoubleSlider.cpp:2124 -#: src/slic3r/GUI/DoubleSlider.cpp:2144 src/slic3r/GUI/GUI.cpp:244 +#: src/slic3r/GUI/ConfigWizard.cpp:2247 src/slic3r/GUI/DoubleSlider.cpp:2133 +#: src/slic3r/GUI/DoubleSlider.cpp:2153 src/slic3r/GUI/GUI.cpp:244 msgid "Notice" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:2257 +#: src/slic3r/GUI/ConfigWizard.cpp:2267 msgid "The following FFF printer models have no filament selected:" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:2261 +#: src/slic3r/GUI/ConfigWizard.cpp:2271 msgid "Do you want to select default filaments for these FFF printer models?" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:2275 +#: src/slic3r/GUI/ConfigWizard.cpp:2285 msgid "The following SLA printer models have no materials selected:" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:2279 +#: src/slic3r/GUI/ConfigWizard.cpp:2289 msgid "Do you want to select default SLA materials for these printer models?" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:2487 +#: src/slic3r/GUI/ConfigWizard.cpp:2497 msgid "Select all standard printers" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:2490 +#: src/slic3r/GUI/ConfigWizard.cpp:2500 msgid "< &Back" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:2491 +#: src/slic3r/GUI/ConfigWizard.cpp:2501 msgid "&Next >" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:2492 +#: src/slic3r/GUI/ConfigWizard.cpp:2502 msgid "&Finish" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:2493 src/slic3r/GUI/FirmwareDialog.cpp:151 -#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:245 +#: src/slic3r/GUI/ConfigWizard.cpp:2503 src/slic3r/GUI/FirmwareDialog.cpp:151 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:248 #: src/slic3r/GUI/ProgressStatusBar.cpp:26 #: src/slic3r/GUI/UnsavedChangesDialog.cpp:644 msgid "Cancel" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:2506 +#: src/slic3r/GUI/ConfigWizard.cpp:2516 msgid "Prusa FFF Technology Printers" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:2509 +#: src/slic3r/GUI/ConfigWizard.cpp:2519 msgid "Prusa MSLA Technology Printers" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:2524 +#: src/slic3r/GUI/ConfigWizard.cpp:2534 msgid "Filament Profiles Selection" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:2524 src/slic3r/GUI/ConfigWizard.cpp:2526 +#: src/slic3r/GUI/ConfigWizard.cpp:2534 src/slic3r/GUI/ConfigWizard.cpp:2536 #: src/slic3r/GUI/GUI_ObjectList.cpp:4016 msgid "Type:" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:2526 +#: src/slic3r/GUI/ConfigWizard.cpp:2536 msgid "SLA Material Profiles Selection" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:2624 +#: src/slic3r/GUI/ConfigWizard.cpp:2634 msgid "Configuration Assistant" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:2625 +#: src/slic3r/GUI/ConfigWizard.cpp:2635 msgid "Configuration &Assistant" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:2627 +#: src/slic3r/GUI/ConfigWizard.cpp:2637 msgid "Configuration Wizard" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:2628 +#: src/slic3r/GUI/ConfigWizard.cpp:2638 msgid "Configuration &Wizard" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:110 +#: src/slic3r/GUI/DoubleSlider.cpp:106 msgid "Place bearings in slots and resume printing" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1064 +#: src/slic3r/GUI/DoubleSlider.cpp:1075 msgid "One layer mode" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1066 +#: src/slic3r/GUI/DoubleSlider.cpp:1077 msgid "Discard all custom changes" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1071 src/slic3r/GUI/DoubleSlider.cpp:1852 +#: src/slic3r/GUI/DoubleSlider.cpp:1082 src/slic3r/GUI/DoubleSlider.cpp:1863 msgid "Jump to move" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1075 +#: src/slic3r/GUI/DoubleSlider.cpp:1086 #, possible-c-format msgid "Jump to height %s or Set extruder sequence for the entire print" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1077 src/slic3r/GUI/DoubleSlider.cpp:1721 -#: src/slic3r/GUI/DoubleSlider.cpp:1852 src/slic3r/GUI/DoubleSlider.cpp:1856 +#: src/slic3r/GUI/DoubleSlider.cpp:1088 src/slic3r/GUI/DoubleSlider.cpp:1732 +#: src/slic3r/GUI/DoubleSlider.cpp:1863 src/slic3r/GUI/DoubleSlider.cpp:1867 msgid "Jump to height" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1083 +#: src/slic3r/GUI/DoubleSlider.cpp:1094 msgid "Edit current color - Right click the colored slider segment" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1093 +#: src/slic3r/GUI/DoubleSlider.cpp:1104 msgid "Print mode" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1107 +#: src/slic3r/GUI/DoubleSlider.cpp:1118 msgid "Add extruder change - Left click" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1109 +#: src/slic3r/GUI/DoubleSlider.cpp:1120 msgid "" "Add color change - Left click for predefined color or Shift + Left click for " "custom color selection" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1111 +#: src/slic3r/GUI/DoubleSlider.cpp:1122 msgid "Add color change - Left click" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1112 +#: src/slic3r/GUI/DoubleSlider.cpp:1123 msgid "or press \"+\" key" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1114 +#: src/slic3r/GUI/DoubleSlider.cpp:1125 msgid "Add another code - Ctrl + Left click" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1115 +#: src/slic3r/GUI/DoubleSlider.cpp:1126 msgid "Add another code - Right click" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1121 +#: src/slic3r/GUI/DoubleSlider.cpp:1132 msgid "" "The sequential print is on.\n" "It's impossible to apply any custom G-code for objects printing " @@ -1004,212 +1016,212 @@ msgid "" "This code won't be processed during G-code generation." msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1130 +#: src/slic3r/GUI/DoubleSlider.cpp:1141 msgid "Color change (\"%1%\")" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1131 +#: src/slic3r/GUI/DoubleSlider.cpp:1142 msgid "Color change (\"%1%\") for Extruder %2%" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1133 +#: src/slic3r/GUI/DoubleSlider.cpp:1144 msgid "Pause print (\"%1%\")" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1135 +#: src/slic3r/GUI/DoubleSlider.cpp:1146 msgid "Custom template (\"%1%\")" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1137 +#: src/slic3r/GUI/DoubleSlider.cpp:1148 msgid "Extruder (tool) is changed to Extruder \"%1%\"" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1144 +#: src/slic3r/GUI/DoubleSlider.cpp:1155 msgid "Note" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1146 +#: src/slic3r/GUI/DoubleSlider.cpp:1157 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:1149 +#: src/slic3r/GUI/DoubleSlider.cpp:1160 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:1152 +#: src/slic3r/GUI/DoubleSlider.cpp:1163 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:1155 +#: src/slic3r/GUI/DoubleSlider.cpp:1166 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:1160 +#: src/slic3r/GUI/DoubleSlider.cpp:1171 msgid "Delete tick mark - Left click or press \"-\" key" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1162 +#: src/slic3r/GUI/DoubleSlider.cpp:1173 msgid "Edit tick mark - Ctrl + Left click" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1163 +#: src/slic3r/GUI/DoubleSlider.cpp:1174 msgid "Edit tick mark - Right click" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1263 src/slic3r/GUI/DoubleSlider.cpp:1297 -#: src/slic3r/GUI/GLCanvas3D.cpp:983 src/slic3r/GUI/GUI_ObjectList.cpp:1832 -#: src/slic3r/GUI/Tab.cpp:2489 src/libslic3r/GCode/PreviewData.cpp:450 +#: src/slic3r/GUI/DoubleSlider.cpp:1274 src/slic3r/GUI/DoubleSlider.cpp:1308 +#: src/slic3r/GUI/GLCanvas3D.cpp:980 src/slic3r/GUI/GUI_ObjectList.cpp:1832 +#: src/slic3r/GUI/Tab.cpp:2500 #, possible-c-format msgid "Extruder %d" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1264 src/slic3r/GUI/GUI_ObjectList.cpp:1833 +#: src/slic3r/GUI/DoubleSlider.cpp:1275 src/slic3r/GUI/GUI_ObjectList.cpp:1833 msgid "active" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1273 +#: src/slic3r/GUI/DoubleSlider.cpp:1284 msgid "Switch code to Change extruder" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1273 src/slic3r/GUI/GUI_ObjectList.cpp:1800 +#: src/slic3r/GUI/DoubleSlider.cpp:1284 src/slic3r/GUI/GUI_ObjectList.cpp:1800 msgid "Change extruder" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1274 +#: src/slic3r/GUI/DoubleSlider.cpp:1285 msgid "Change extruder (N/A)" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1276 +#: src/slic3r/GUI/DoubleSlider.cpp:1287 msgid "Use another extruder" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1298 +#: src/slic3r/GUI/DoubleSlider.cpp:1309 msgid "used" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1306 +#: src/slic3r/GUI/DoubleSlider.cpp:1317 msgid "Switch code to Color change (%1%) for:" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1307 +#: src/slic3r/GUI/DoubleSlider.cpp:1318 msgid "Add color change (%1%) for:" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1665 +#: src/slic3r/GUI/DoubleSlider.cpp:1676 msgid "Add color change" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1675 +#: src/slic3r/GUI/DoubleSlider.cpp:1686 msgid "Add pause print" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1679 +#: src/slic3r/GUI/DoubleSlider.cpp:1690 msgid "Add custom template" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1682 +#: src/slic3r/GUI/DoubleSlider.cpp:1693 msgid "Add custom G-code" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1700 +#: src/slic3r/GUI/DoubleSlider.cpp:1711 msgid "Edit color" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1701 +#: src/slic3r/GUI/DoubleSlider.cpp:1712 msgid "Edit pause print message" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1702 +#: src/slic3r/GUI/DoubleSlider.cpp:1713 msgid "Edit custom G-code" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1708 +#: src/slic3r/GUI/DoubleSlider.cpp:1719 msgid "Delete color change" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1709 +#: src/slic3r/GUI/DoubleSlider.cpp:1720 msgid "Delete tool change" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1710 +#: src/slic3r/GUI/DoubleSlider.cpp:1721 msgid "Delete pause print" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1711 +#: src/slic3r/GUI/DoubleSlider.cpp:1722 msgid "Delete custom G-code" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1728 +#: src/slic3r/GUI/DoubleSlider.cpp:1739 msgid "Set extruder sequence for the entire print" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1814 +#: src/slic3r/GUI/DoubleSlider.cpp:1825 msgid "Enter custom G-code used on current layer" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1815 +#: src/slic3r/GUI/DoubleSlider.cpp:1826 msgid "Custom G-code on current layer (%1% mm)." msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1830 +#: src/slic3r/GUI/DoubleSlider.cpp:1841 msgid "Enter short message shown on Printer display when a print is paused" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1831 +#: src/slic3r/GUI/DoubleSlider.cpp:1842 msgid "Message for pause print on current layer (%1% mm)." msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1851 +#: src/slic3r/GUI/DoubleSlider.cpp:1862 msgid "Enter the move you want to jump to" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:1851 src/slic3r/GUI/DoubleSlider.cpp:1855 +#: src/slic3r/GUI/DoubleSlider.cpp:1862 src/slic3r/GUI/DoubleSlider.cpp:1866 msgid "Enter the height you want to jump to" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:2118 +#: src/slic3r/GUI/DoubleSlider.cpp:2127 msgid "The last color change data was saved for a single extruder printing." msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:2119 src/slic3r/GUI/DoubleSlider.cpp:2134 +#: src/slic3r/GUI/DoubleSlider.cpp:2128 src/slic3r/GUI/DoubleSlider.cpp:2143 msgid "The last color change data was saved for a multi extruder printing." msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:2121 +#: src/slic3r/GUI/DoubleSlider.cpp:2130 msgid "Your current changes will delete all saved color changes." msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:2122 src/slic3r/GUI/DoubleSlider.cpp:2142 +#: src/slic3r/GUI/DoubleSlider.cpp:2131 src/slic3r/GUI/DoubleSlider.cpp:2151 msgid "Are you sure you want to continue?" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:2135 +#: src/slic3r/GUI/DoubleSlider.cpp:2144 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:2138 +#: src/slic3r/GUI/DoubleSlider.cpp:2147 msgid "Do you want to delete all saved tool changes?" msgstr "" -#: src/slic3r/GUI/DoubleSlider.cpp:2140 +#: src/slic3r/GUI/DoubleSlider.cpp:2149 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:2141 +#: src/slic3r/GUI/DoubleSlider.cpp:2150 msgid "Your current changes will delete all saved extruder (tool) changes." msgstr "" @@ -1218,10 +1230,10 @@ msgstr "" #: src/slic3r/GUI/GUI_ObjectList.cpp:4454 #: src/slic3r/GUI/GUI_ObjectList.cpp:4464 #: src/slic3r/GUI/GUI_ObjectList.cpp:4499 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:202 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:259 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:284 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:492 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:209 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:266 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:291 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:499 msgid "default" msgstr "" @@ -1234,10 +1246,10 @@ msgid "Set extruder change for every" msgstr "" #: src/slic3r/GUI/ExtruderSequenceDialog.cpp:52 -#: src/libslic3r/PrintConfig.cpp:396 src/libslic3r/PrintConfig.cpp:1038 -#: src/libslic3r/PrintConfig.cpp:1613 src/libslic3r/PrintConfig.cpp:1798 -#: src/libslic3r/PrintConfig.cpp:1865 src/libslic3r/PrintConfig.cpp:2072 -#: src/libslic3r/PrintConfig.cpp:2118 +#: src/libslic3r/PrintConfig.cpp:403 src/libslic3r/PrintConfig.cpp:1047 +#: src/libslic3r/PrintConfig.cpp:1624 src/libslic3r/PrintConfig.cpp:1789 +#: src/libslic3r/PrintConfig.cpp:1856 src/libslic3r/PrintConfig.cpp:2063 +#: src/libslic3r/PrintConfig.cpp:2109 msgid "layers" msgstr "" @@ -1261,26 +1273,26 @@ msgstr "" msgid "parameter name" msgstr "" -#: src/slic3r/GUI/Field.cpp:198 src/slic3r/GUI/OptionsGroup.cpp:715 +#: src/slic3r/GUI/Field.cpp:198 src/slic3r/GUI/OptionsGroup.cpp:774 #: src/slic3r/GUI/UnsavedChangesDialog.cpp:874 msgid "N/A" msgstr "" -#: src/slic3r/GUI/Field.cpp:223 +#: src/slic3r/GUI/Field.cpp:220 #, possible-c-format msgid "%s doesn't support percentage" msgstr "" -#: 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 +#: src/slic3r/GUI/Field.cpp:240 src/slic3r/GUI/Field.cpp:271 +#: src/slic3r/GUI/Field.cpp:1417 src/slic3r/GUI/GUI_ObjectLayers.cpp:413 msgid "Invalid numeric input." msgstr "" -#: src/slic3r/GUI/Field.cpp:252 src/slic3r/GUI/Field.cpp:1370 +#: src/slic3r/GUI/Field.cpp:249 src/slic3r/GUI/Field.cpp:1429 msgid "Input value is out of range" msgstr "" -#: src/slic3r/GUI/Field.cpp:288 +#: src/slic3r/GUI/Field.cpp:285 #, possible-c-format msgid "" "Do you mean %s%% instead of %s %s?\n" @@ -1288,7 +1300,7 @@ msgid "" "or NO if you are sure that %s %s is a correct value." msgstr "" -#: src/slic3r/GUI/Field.cpp:291 +#: src/slic3r/GUI/Field.cpp:288 msgid "Parameter validation" msgstr "" @@ -1365,8 +1377,8 @@ msgid "Firmware image:" msgstr "" #: src/slic3r/GUI/FirmwareDialog.cpp:805 -#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:271 -#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:327 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:289 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:364 msgid "Browse" msgstr "" @@ -1399,8 +1411,8 @@ msgid "Advanced: Output log" msgstr "" #: src/slic3r/GUI/FirmwareDialog.cpp:852 -#: src/slic3r/GUI/Mouse3DController.cpp:353 -#: src/slic3r/GUI/PrintHostDialogs.cpp:159 +#: src/slic3r/GUI/Mouse3DController.cpp:552 +#: src/slic3r/GUI/PrintHostDialogs.cpp:187 msgid "Close" msgstr "" @@ -1418,502 +1430,511 @@ msgstr "" msgid "Cancelling..." msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:223 +#: src/slic3r/GUI/GCodeViewer.cpp:221 msgid "Tool position" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:933 +#: src/slic3r/GUI/GCodeViewer.cpp:965 msgid "Generating toolpaths" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:1318 +#: src/slic3r/GUI/GCodeViewer.cpp:1356 msgid "Generating vertex buffer" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:1392 +#: src/slic3r/GUI/GCodeViewer.cpp:1437 msgid "Generating index buffers" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2071 +#: src/slic3r/GUI/GCodeViewer.cpp:2163 msgid "Click to hide" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2071 +#: src/slic3r/GUI/GCodeViewer.cpp:2163 msgid "Click to show" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2183 +#: src/slic3r/GUI/GCodeViewer.cpp:2275 msgid "up to" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2189 +#: src/slic3r/GUI/GCodeViewer.cpp:2281 msgid "above" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2197 +#: src/slic3r/GUI/GCodeViewer.cpp:2289 msgid "from" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2197 +#: src/slic3r/GUI/GCodeViewer.cpp:2289 msgid "to" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2225 src/slic3r/GUI/GCodeViewer.cpp:2233 -#: src/slic3r/GUI/GUI_Preview.cpp:275 src/slic3r/GUI/GUI_Preview.cpp:787 -#: src/libslic3r/GCode/PreviewData.cpp:350 +#: src/slic3r/GUI/GCodeViewer.cpp:2317 src/slic3r/GUI/GCodeViewer.cpp:2325 +#: src/slic3r/GUI/GUI_Preview.cpp:270 src/slic3r/GUI/GUI_Preview.cpp:788 msgid "Feature type" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2225 src/slic3r/GUI/GCodeViewer.cpp:2233 +#: src/slic3r/GUI/GCodeViewer.cpp:2317 src/slic3r/GUI/GCodeViewer.cpp:2325 #: src/slic3r/GUI/RammingChart.cpp:76 msgid "Time" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2233 +#: src/slic3r/GUI/GCodeViewer.cpp:2325 msgid "Percentage" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2236 src/libslic3r/GCode/PreviewData.cpp:352 +#: src/slic3r/GUI/GCodeViewer.cpp:2328 msgid "Height (mm)" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2237 src/libslic3r/GCode/PreviewData.cpp:354 +#: src/slic3r/GUI/GCodeViewer.cpp:2329 msgid "Width (mm)" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2238 src/libslic3r/GCode/PreviewData.cpp:356 +#: src/slic3r/GUI/GCodeViewer.cpp:2330 msgid "Speed (mm/s)" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2239 src/libslic3r/GCode/PreviewData.cpp:358 +#: src/slic3r/GUI/GCodeViewer.cpp:2331 msgid "Fan Speed (%)" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2240 src/libslic3r/GCode/PreviewData.cpp:360 +#: src/slic3r/GUI/GCodeViewer.cpp:2332 msgid "Volumetric flow rate (mm³/s)" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2241 src/slic3r/GUI/GUI_Preview.cpp:281 -#: src/slic3r/GUI/GUI_Preview.cpp:453 src/slic3r/GUI/GUI_Preview.cpp:693 -#: src/slic3r/GUI/GUI_Preview.cpp:786 src/slic3r/GUI/GUI_Preview.cpp:1270 -#: src/libslic3r/GCode/PreviewData.cpp:362 +#: src/slic3r/GUI/GCodeViewer.cpp:2333 src/slic3r/GUI/GUI_Preview.cpp:276 +#: src/slic3r/GUI/GUI_Preview.cpp:447 src/slic3r/GUI/GUI_Preview.cpp:694 +#: src/slic3r/GUI/GUI_Preview.cpp:787 src/slic3r/GUI/GUI_Preview.cpp:1266 msgid "Tool" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2242 src/slic3r/GUI/GUI_Preview.cpp:282 -#: src/slic3r/GUI/GUI_Preview.cpp:784 src/libslic3r/GCode/PreviewData.cpp:364 +#: src/slic3r/GUI/GCodeViewer.cpp:2334 src/slic3r/GUI/GUI_Preview.cpp:277 +#: src/slic3r/GUI/GUI_Preview.cpp:785 msgid "Color Print" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2277 src/slic3r/GUI/GCodeViewer.cpp:2313 -#: src/slic3r/GUI/GCodeViewer.cpp:2318 src/slic3r/GUI/GUI_ObjectList.cpp:296 -#: src/slic3r/GUI/Tab.cpp:1780 src/slic3r/GUI/wxExtensions.cpp:515 -#: src/libslic3r/PrintConfig.cpp:523 +#: src/slic3r/GUI/GCodeViewer.cpp:2370 src/slic3r/GUI/GCodeViewer.cpp:2405 +#: src/slic3r/GUI/GCodeViewer.cpp:2410 src/slic3r/GUI/GUI_ObjectList.cpp:296 +#: src/slic3r/GUI/wxExtensions.cpp:515 src/libslic3r/PrintConfig.cpp:530 msgid "Extruder" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2289 +#: src/slic3r/GUI/GCodeViewer.cpp:2381 msgid "Default color" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2313 +#: src/slic3r/GUI/GCodeViewer.cpp:2405 msgid "default color" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2410 src/slic3r/GUI/GCodeViewer.cpp:2438 +#: src/slic3r/GUI/GCodeViewer.cpp:2500 src/slic3r/GUI/GCodeViewer.cpp:2546 msgid "Color change" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2436 src/slic3r/GUI/GCodeViewer.cpp:2451 +#: src/slic3r/GUI/GCodeViewer.cpp:2519 src/slic3r/GUI/GCodeViewer.cpp:2544 msgid "Print" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2437 src/slic3r/GUI/GCodeViewer.cpp:2460 -#: src/slic3r/GUI/Plater.cpp:1199 +#: src/slic3r/GUI/GCodeViewer.cpp:2545 src/slic3r/GUI/GCodeViewer.cpp:2562 +#: src/slic3r/GUI/Plater.cpp:1201 msgid "Pause" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2442 src/slic3r/GUI/GCodeViewer.cpp:2445 +#: src/slic3r/GUI/GCodeViewer.cpp:2550 src/slic3r/GUI/GCodeViewer.cpp:2553 msgid "Event" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2442 src/slic3r/GUI/GCodeViewer.cpp:2445 +#: src/slic3r/GUI/GCodeViewer.cpp:2550 src/slic3r/GUI/GCodeViewer.cpp:2553 msgid "Remaining time" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2445 +#: src/slic3r/GUI/GCodeViewer.cpp:2553 msgid "Duration" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2489 src/slic3r/GUI/GUI_Preview.cpp:335 -#: src/slic3r/GUI/GUI_Preview.cpp:1471 src/libslic3r/PrintConfig.cpp:2295 +#: src/slic3r/GUI/GCodeViewer.cpp:2588 src/slic3r/GUI/GUI_Preview.cpp:330 +#: src/slic3r/GUI/GUI_Preview.cpp:1466 src/libslic3r/PrintConfig.cpp:2286 msgid "Travel" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2492 +#: src/slic3r/GUI/GCodeViewer.cpp:2591 msgid "Movement" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2493 +#: src/slic3r/GUI/GCodeViewer.cpp:2592 msgid "Extrusion" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2494 src/slic3r/GUI/Tab.cpp:1670 -#: src/slic3r/GUI/Tab.cpp:2539 +#: src/slic3r/GUI/GCodeViewer.cpp:2593 src/slic3r/GUI/Tab.cpp:1680 +#: src/slic3r/GUI/Tab.cpp:2550 msgid "Retraction" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2525 src/slic3r/GUI/GUI_Preview.cpp:320 -#: src/slic3r/GUI/GUI_Preview.cpp:333 +#: src/slic3r/GUI/GCodeViewer.cpp:2624 src/slic3r/GUI/GUI_Preview.cpp:315 +#: src/slic3r/GUI/GUI_Preview.cpp:328 msgid "Options" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2528 src/slic3r/GUI/GUI_Preview.cpp:336 -#: src/slic3r/GUI/GUI_Preview.cpp:1472 +#: src/slic3r/GUI/GCodeViewer.cpp:2627 src/slic3r/GUI/GUI_Preview.cpp:331 +#: src/slic3r/GUI/GUI_Preview.cpp:1467 msgid "Retractions" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2529 src/slic3r/GUI/GUI_Preview.cpp:337 -#: src/slic3r/GUI/GUI_Preview.cpp:1473 +#: src/slic3r/GUI/GCodeViewer.cpp:2628 src/slic3r/GUI/GUI_Preview.cpp:332 +#: src/slic3r/GUI/GUI_Preview.cpp:1468 msgid "Deretractions" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2530 src/slic3r/GUI/GUI_Preview.cpp:1474 +#: src/slic3r/GUI/GCodeViewer.cpp:2629 src/slic3r/GUI/GUI_Preview.cpp:1469 msgid "Tool changes" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2531 src/slic3r/GUI/GUI_Preview.cpp:1475 +#: src/slic3r/GUI/GCodeViewer.cpp:2630 src/slic3r/GUI/GUI_Preview.cpp:1470 msgid "Color changes" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2532 src/slic3r/GUI/GUI_Preview.cpp:1476 -msgid "Pause prints" +#: src/slic3r/GUI/GCodeViewer.cpp:2631 src/slic3r/GUI/GUI_Preview.cpp:1471 +msgid "Print pauses" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2533 src/slic3r/GUI/GUI_Preview.cpp:1477 -msgid "Custom GCodes" +#: src/slic3r/GUI/GCodeViewer.cpp:2632 src/slic3r/GUI/GUI_Preview.cpp:1472 +msgid "Custom G-codes" msgstr "" -#: 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 +#: src/slic3r/GUI/GCodeViewer.cpp:2643 src/slic3r/GUI/GCodeViewer.cpp:2667 +#: src/slic3r/GUI/Plater.cpp:689 src/libslic3r/PrintConfig.cpp:113 +msgid "Printer" +msgstr "" + +#: src/slic3r/GUI/GCodeViewer.cpp:2645 src/slic3r/GUI/GCodeViewer.cpp:2672 +#: src/slic3r/GUI/Plater.cpp:685 +msgid "Print settings" +msgstr "" + +#: src/slic3r/GUI/GCodeViewer.cpp:2648 src/slic3r/GUI/GCodeViewer.cpp:2678 +#: src/slic3r/GUI/Plater.cpp:686 src/slic3r/GUI/Tab.cpp:1780 +#: src/slic3r/GUI/Tab.cpp:1781 +msgid "Filament" +msgstr "" + +#: src/slic3r/GUI/GCodeViewer.cpp:2701 src/slic3r/GUI/GCodeViewer.cpp:2706 +#: src/slic3r/GUI/Plater.cpp:241 src/slic3r/GUI/Plater.cpp:1127 +#: src/slic3r/GUI/Plater.cpp:1177 src/slic3r/GUI/Plater.cpp:1198 msgid "Estimated printing time" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2552 +#: src/slic3r/GUI/GCodeViewer.cpp:2701 msgid "Normal mode" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2557 +#: src/slic3r/GUI/GCodeViewer.cpp:2706 msgid "Stealth mode" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2586 +#: src/slic3r/GUI/GCodeViewer.cpp:2733 msgid "Show stealth mode" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2591 +#: src/slic3r/GUI/GCodeViewer.cpp:2737 msgid "Show normal mode" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:231 src/slic3r/GUI/GLCanvas3D.cpp:4978 +#: src/slic3r/GUI/GLCanvas3D.cpp:228 src/slic3r/GUI/GLCanvas3D.cpp:4965 msgid "Variable layer height" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:233 +#: src/slic3r/GUI/GLCanvas3D.cpp:230 msgid "Left mouse button:" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:235 +#: src/slic3r/GUI/GLCanvas3D.cpp:232 msgid "Add detail" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:237 +#: src/slic3r/GUI/GLCanvas3D.cpp:234 msgid "Right mouse button:" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:239 +#: src/slic3r/GUI/GLCanvas3D.cpp:236 msgid "Remove detail" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:241 +#: src/slic3r/GUI/GLCanvas3D.cpp:238 msgid "Shift + Left mouse button:" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:243 +#: src/slic3r/GUI/GLCanvas3D.cpp:240 msgid "Reset to base" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:245 +#: src/slic3r/GUI/GLCanvas3D.cpp:242 msgid "Shift + Right mouse button:" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:247 +#: src/slic3r/GUI/GLCanvas3D.cpp:244 msgid "Smoothing" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:249 +#: src/slic3r/GUI/GLCanvas3D.cpp:246 msgid "Mouse wheel:" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:251 +#: src/slic3r/GUI/GLCanvas3D.cpp:248 msgid "Increase/decrease edit area" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:254 +#: src/slic3r/GUI/GLCanvas3D.cpp:251 msgid "Adaptive" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:260 +#: src/slic3r/GUI/GLCanvas3D.cpp:257 msgid "Quality / Speed" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:263 +#: src/slic3r/GUI/GLCanvas3D.cpp:260 msgid "Higher print quality versus higher print speed." msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:274 +#: src/slic3r/GUI/GLCanvas3D.cpp:271 msgid "Smooth" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:280 src/libslic3r/PrintConfig.cpp:547 +#: src/slic3r/GUI/GLCanvas3D.cpp:277 src/libslic3r/PrintConfig.cpp:554 msgid "Radius" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:290 +#: src/slic3r/GUI/GLCanvas3D.cpp:287 msgid "Keep min" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:299 +#: src/slic3r/GUI/GLCanvas3D.cpp:296 msgid "Reset" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:565 +#: src/slic3r/GUI/GLCanvas3D.cpp:562 msgid "Variable layer height - Manual edit" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:633 +#: src/slic3r/GUI/GLCanvas3D.cpp:630 msgid "An object outside the print area was detected." msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:634 +#: src/slic3r/GUI/GLCanvas3D.cpp:631 msgid "A toolpath outside the print area was detected." msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:635 +#: src/slic3r/GUI/GLCanvas3D.cpp:632 msgid "SLA supports outside the print area were detected." msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:636 +#: src/slic3r/GUI/GLCanvas3D.cpp:633 msgid "Some objects are not visible." msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:638 +#: src/slic3r/GUI/GLCanvas3D.cpp:635 msgid "" "An object outside the print area was detected.\n" "Resolve the current problem to continue slicing." msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:910 src/slic3r/GUI/GLCanvas3D.cpp:939 +#: src/slic3r/GUI/GLCanvas3D.cpp:907 src/slic3r/GUI/GLCanvas3D.cpp:936 msgid "Default print color" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:940 src/slic3r/GUI/GLCanvas3D.cpp:949 -#: src/slic3r/GUI/GLCanvas3D.cpp:988 +#: src/slic3r/GUI/GLCanvas3D.cpp:937 src/slic3r/GUI/GLCanvas3D.cpp:946 +#: src/slic3r/GUI/GLCanvas3D.cpp:985 msgid "Pause print or custom G-code" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:961 +#: src/slic3r/GUI/GLCanvas3D.cpp:958 #, possible-c-format msgid "up to %.2f mm" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:965 +#: src/slic3r/GUI/GLCanvas3D.cpp:962 #, possible-c-format msgid "above %.2f mm" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:969 +#: src/slic3r/GUI/GLCanvas3D.cpp:966 #, possible-c-format msgid "%.2f - %.2f mm" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:1001 +#: src/slic3r/GUI/GLCanvas3D.cpp:998 #, possible-c-format msgid "Color change for Extruder %d at %.2f mm" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:1312 +#: src/slic3r/GUI/GLCanvas3D.cpp:1309 msgid "Seq." msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:1418 -msgid "canvas_tooltip" -msgstr "" - -#: src/slic3r/GUI/GLCanvas3D.cpp:1778 +#: src/slic3r/GUI/GLCanvas3D.cpp:1776 msgid "Variable layer height - Reset" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:1786 +#: src/slic3r/GUI/GLCanvas3D.cpp:1784 msgid "Variable layer height - Adaptive" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:1794 +#: src/slic3r/GUI/GLCanvas3D.cpp:1792 msgid "Variable layer height - Smooth all" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:2226 +#: src/slic3r/GUI/GLCanvas3D.cpp:2228 msgid "Mirror Object" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:3165 +#: src/slic3r/GUI/GLCanvas3D.cpp:3191 #: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:520 msgid "Gizmo-Move" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:3249 +#: src/slic3r/GUI/GLCanvas3D.cpp:3275 #: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:522 msgid "Gizmo-Rotate" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:3810 +#: src/slic3r/GUI/GLCanvas3D.cpp:3802 msgid "Move Object" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4302 src/slic3r/GUI/GLCanvas3D.cpp:4939 +#: src/slic3r/GUI/GLCanvas3D.cpp:4289 src/slic3r/GUI/GLCanvas3D.cpp:4926 msgid "Switch to Settings" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4303 src/slic3r/GUI/GLCanvas3D.cpp:4939 +#: src/slic3r/GUI/GLCanvas3D.cpp:4290 src/slic3r/GUI/GLCanvas3D.cpp:4926 msgid "Print Settings Tab" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4304 src/slic3r/GUI/GLCanvas3D.cpp:4940 +#: src/slic3r/GUI/GLCanvas3D.cpp:4291 src/slic3r/GUI/GLCanvas3D.cpp:4927 msgid "Filament Settings Tab" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4304 src/slic3r/GUI/GLCanvas3D.cpp:4940 +#: src/slic3r/GUI/GLCanvas3D.cpp:4291 src/slic3r/GUI/GLCanvas3D.cpp:4927 msgid "Material Settings Tab" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4305 src/slic3r/GUI/GLCanvas3D.cpp:4941 +#: src/slic3r/GUI/GLCanvas3D.cpp:4292 src/slic3r/GUI/GLCanvas3D.cpp:4928 msgid "Printer Settings Tab" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4361 +#: src/slic3r/GUI/GLCanvas3D.cpp:4348 msgid "Undo History" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4361 +#: src/slic3r/GUI/GLCanvas3D.cpp:4348 msgid "Redo History" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4382 +#: src/slic3r/GUI/GLCanvas3D.cpp:4369 #, possible-c-format msgid "Undo %1$d Action" msgid_plural "Undo %1$d Actions" msgstr[0] "" msgstr[1] "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4382 +#: src/slic3r/GUI/GLCanvas3D.cpp:4369 #, possible-c-format msgid "Redo %1$d Action" msgid_plural "Redo %1$d Actions" msgstr[0] "" msgstr[1] "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4402 src/slic3r/GUI/GLCanvas3D.cpp:4957 +#: src/slic3r/GUI/GLCanvas3D.cpp:4389 src/slic3r/GUI/GLCanvas3D.cpp:4944 #: src/slic3r/GUI/KBShortcutsDialog.cpp:130 src/slic3r/GUI/Search.cpp:426 msgid "Search" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4416 src/slic3r/GUI/GLCanvas3D.cpp:4424 +#: src/slic3r/GUI/GLCanvas3D.cpp:4403 src/slic3r/GUI/GLCanvas3D.cpp:4411 #: src/slic3r/GUI/Search.cpp:433 -msgid "Type here to search" +msgid "Enter a search term" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4833 +#: src/slic3r/GUI/GLCanvas3D.cpp:4820 msgid "Add..." msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4841 src/slic3r/GUI/GUI_ObjectList.cpp:1846 -#: src/slic3r/GUI/Plater.cpp:3849 src/slic3r/GUI/Plater.cpp:3871 -#: src/slic3r/GUI/Tab.cpp:3423 +#: src/slic3r/GUI/GLCanvas3D.cpp:4828 src/slic3r/GUI/GUI_ObjectList.cpp:1846 +#: src/slic3r/GUI/Plater.cpp:3950 src/slic3r/GUI/Plater.cpp:3972 +#: src/slic3r/GUI/Tab.cpp:3447 msgid "Delete" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4850 src/slic3r/GUI/KBShortcutsDialog.cpp:124 -#: src/slic3r/GUI/Plater.cpp:4774 +#: src/slic3r/GUI/GLCanvas3D.cpp:4837 src/slic3r/GUI/KBShortcutsDialog.cpp:124 +#: src/slic3r/GUI/Plater.cpp:4882 msgid "Delete all" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4859 src/slic3r/GUI/KBShortcutsDialog.cpp:151 -#: src/slic3r/GUI/Plater.cpp:1549 +#: src/slic3r/GUI/GLCanvas3D.cpp:4846 src/slic3r/GUI/KBShortcutsDialog.cpp:151 +#: src/slic3r/GUI/Plater.cpp:1633 msgid "Arrange" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4859 src/slic3r/GUI/KBShortcutsDialog.cpp:152 +#: src/slic3r/GUI/GLCanvas3D.cpp:4846 src/slic3r/GUI/KBShortcutsDialog.cpp:152 msgid "Arrange selection" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4871 +#: src/slic3r/GUI/GLCanvas3D.cpp:4858 msgid "Copy" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4880 +#: src/slic3r/GUI/GLCanvas3D.cpp:4867 msgid "Paste" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4892 src/slic3r/GUI/Plater.cpp:3708 -#: src/slic3r/GUI/Plater.cpp:3720 src/slic3r/GUI/Plater.cpp:3858 +#: src/slic3r/GUI/GLCanvas3D.cpp:4879 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:4903 src/slic3r/GUI/Plater.cpp:3860 +#: src/slic3r/GUI/GLCanvas3D.cpp:4890 src/slic3r/GUI/Plater.cpp:3961 msgid "Remove instance" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4916 +#: src/slic3r/GUI/GLCanvas3D.cpp:4903 msgid "Split to objects" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4926 src/slic3r/GUI/GUI_ObjectList.cpp:1618 +#: src/slic3r/GUI/GLCanvas3D.cpp:4913 src/slic3r/GUI/GUI_ObjectList.cpp:1618 msgid "Split to parts" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:5028 src/slic3r/GUI/KBShortcutsDialog.cpp:125 -#: src/slic3r/GUI/MainFrame.cpp:1187 +#: src/slic3r/GUI/GLCanvas3D.cpp:5015 src/slic3r/GUI/KBShortcutsDialog.cpp:125 +#: src/slic3r/GUI/MainFrame.cpp:1199 msgid "Undo" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:5028 src/slic3r/GUI/GLCanvas3D.cpp:5067 +#: src/slic3r/GUI/GLCanvas3D.cpp:5015 src/slic3r/GUI/GLCanvas3D.cpp:5054 msgid "Click right mouse button to open/close History" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:5051 +#: src/slic3r/GUI/GLCanvas3D.cpp:5038 msgid "Next Undo action: %1%" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:5067 src/slic3r/GUI/KBShortcutsDialog.cpp:126 -#: src/slic3r/GUI/MainFrame.cpp:1190 +#: src/slic3r/GUI/GLCanvas3D.cpp:5054 src/slic3r/GUI/KBShortcutsDialog.cpp:126 +#: src/slic3r/GUI/MainFrame.cpp:1202 msgid "Redo" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:5089 +#: src/slic3r/GUI/GLCanvas3D.cpp:5076 msgid "Next Redo action: %1%" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:7193 +#: src/slic3r/GUI/GLCanvas3D.cpp:7179 msgid "Selection-Add from rectangle" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:7212 +#: src/slic3r/GUI/GLCanvas3D.cpp:7198 msgid "Selection-Remove from rectangle" msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:48 -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:146 src/libslic3r/PrintConfig.cpp:3601 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:146 src/libslic3r/PrintConfig.cpp:3593 msgid "Cut" msgstr "" @@ -1934,7 +1955,7 @@ msgid "Perform cut" msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:33 -msgid "FDM Support Editing" +msgid "Paint-on supports" msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:42 @@ -1953,12 +1974,12 @@ msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:44 #: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:27 -msgid "Cursor size" +msgid "Brush size" msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:45 #: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:28 -msgid "Cursor type" +msgid "Brush shape" msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:46 @@ -2008,6 +2029,10 @@ msgstr "" msgid "Sphere" msgstr "" +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:129 +msgid "Autoset by angle" +msgstr "" + #: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:136 #: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:118 msgid "Reset selection" @@ -2041,27 +2066,23 @@ msgstr "" msgid "Threshold:" msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:235 -msgid "deg" -msgstr "" - -#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:239 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:242 msgid "Enforce" msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:242 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:245 msgid "Block" msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:292 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:295 msgid "Block supports by angle" msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:293 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:296 msgid "Add supports by angle" msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp:41 +#: src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp:40 msgid "Place on face" msgstr "" @@ -2078,11 +2099,12 @@ msgid "Offset" msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:43 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:56 msgid "Quality" msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:44 -#: src/libslic3r/PrintConfig.cpp:3098 +#: src/libslic3r/PrintConfig.cpp:3089 msgid "Closing distance" msgstr "" @@ -2134,36 +2156,11 @@ msgstr "" msgid "Move" msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:210 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:224 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:506 -#: src/slic3r/GUI/Mouse3DController.cpp:288 -#: src/slic3r/GUI/Mouse3DController.cpp:309 -msgid "Rotation" -msgstr "" - -#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:220 src/slic3r/GUI/Plater.cpp:3961 -msgid "Optimize orientation" -msgstr "" - -#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:221 -#: src/libslic3r/PrintConfig.cpp:3089 -msgid "Accuracy" -msgstr "" - -#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:233 -msgid "Least supports" -msgstr "" - -#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:234 -msgid "Suface quality" -msgstr "" - -#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:513 +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:461 #: 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:3650 +#: src/libslic3r/PrintConfig.cpp:3642 msgid "Rotate" msgstr "" @@ -2171,7 +2168,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:3665 +#: src/libslic3r/PrintConfig.cpp:3657 msgid "Scale" msgstr "" @@ -2186,7 +2183,7 @@ msgid "Block seam" msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:46 -msgid "Seam Editing" +msgid "Seam painting" msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:47 @@ -2221,7 +2218,7 @@ msgid "Minimal points distance" msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:54 -#: src/libslic3r/PrintConfig.cpp:2928 +#: src/libslic3r/PrintConfig.cpp:2919 msgid "Support points density" msgstr "" @@ -2287,8 +2284,8 @@ msgid "Are you sure you want to do it?" msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1129 src/slic3r/GUI/GUI.cpp:256 -#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:478 -#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:502 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:557 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:581 #: src/slic3r/GUI/WipeTowerDialog.cpp:45 src/slic3r/GUI/WipeTowerDialog.cpp:366 msgid "Warning" msgstr "" @@ -2373,45 +2370,77 @@ msgstr "" msgid "Gizmo-Scale" msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:639 +#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:630 msgid "Gizmo-Place on Face" msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:39 -msgid "Supports gizmo turned on" +msgid "Entering Paint-on supports" msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:40 -msgid "Seam gizmo turned on" +msgid "Entering Seam painting" msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:47 -msgid "Seam gizmo turned off" +msgid "Leaving Seam painting" msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:48 -msgid "Supports gizmo turned off" +msgid "Leaving Paint-on supports" msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:371 msgid "Add supports" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:243 +#: src/slic3r/GUI/GUI_App.cpp:235 msgid "is based on Slic3r by Alessandro Ranellucci and the RepRap community." msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:245 +#: src/slic3r/GUI/GUI_App.cpp:237 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:246 +#: src/slic3r/GUI/GUI_App.cpp:238 msgid "Artwork model by Nora Al-Badri and Jan Nikolai Nelles" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:528 +#: src/slic3r/GUI/GUI_App.cpp:378 +msgid "" +"Starting with %1% 2.3, configuration directory on Linux has changed " +"(according to XDG Base Directory Specification) to \n" +"%2%.\n" +"\n" +"This directory did not exist yet (maybe you run the new version for the " +"first time).\n" +"However, an old %1% configuration directory was detected in \n" +"%3%.\n" +"\n" +"Consider moving the contents of the old directory to the new location in " +"order to access your profiles, etc.\n" +"Note that if you decide to downgrade %1% in future, it will use the old " +"location again.\n" +"\n" +"What do you want to do now?" +msgstr "" + +#: src/slic3r/GUI/GUI_App.cpp:386 +#, possible-c-format +msgid "%s - BREAKING CHANGE" +msgstr "" + +#: src/slic3r/GUI/GUI_App.cpp:388 +msgid "Quit, I will move my data now" +msgstr "" + +#: src/slic3r/GUI/GUI_App.cpp:388 +msgid "Start the application" +msgstr "" + +#: src/slic3r/GUI/GUI_App.cpp:577 #, possible-c-format msgid "" "%s has encountered an error. It was likely caused by running out of memory. " @@ -2421,177 +2450,177 @@ msgid "" "The application will now terminate." msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:531 +#: src/slic3r/GUI/GUI_App.cpp:580 msgid "Fatal error" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:655 src/slic3r/GUI/GUI_App.cpp:670 +#: src/slic3r/GUI/GUI_App.cpp:700 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:661 +#: src/slic3r/GUI/GUI_App.cpp:706 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:718 +#: src/slic3r/GUI/GUI_App.cpp:760 #, possible-c-format msgid "" "%s\n" "Do you want to continue?" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:720 src/slic3r/GUI/UnsavedChangesDialog.cpp:653 +#: src/slic3r/GUI/GUI_App.cpp:762 src/slic3r/GUI/UnsavedChangesDialog.cpp:653 msgid "Remember my choice" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:759 -msgid "Loading configuration..." +#: src/slic3r/GUI/GUI_App.cpp:797 +msgid "Loading configuration" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:825 -msgid "Creating settings tabs..." +#: src/slic3r/GUI/GUI_App.cpp:855 +msgid "Preparing settings tabs" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1078 +#: src/slic3r/GUI/GUI_App.cpp:1100 msgid "" "You have the following presets with saved options for \"Print Host upload\"" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1082 +#: src/slic3r/GUI/GUI_App.cpp:1104 msgid "" -"But from this version of PrusaSlicer we don't show/use this information in " -"Printer Settings.\n" -"Now, this information will be exposed in physical printers settings." +"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:1084 +#: src/slic3r/GUI/GUI_App.cpp:1106 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:1087 src/slic3r/GUI/Tab.cpp:3435 +#: src/slic3r/GUI/GUI_App.cpp:1109 msgid "Information" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1102 src/slic3r/GUI/GUI_App.cpp:1115 +#: src/slic3r/GUI/GUI_App.cpp:1122 src/slic3r/GUI/GUI_App.cpp:1133 msgid "Recreating" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1120 +#: src/slic3r/GUI/GUI_App.cpp:1138 msgid "Loading of current presets" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1125 +#: src/slic3r/GUI/GUI_App.cpp:1143 msgid "Loading of a mode view" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1208 +#: src/slic3r/GUI/GUI_App.cpp:1224 msgid "Choose one file (3MF/AMF):" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1220 +#: src/slic3r/GUI/GUI_App.cpp:1236 msgid "Choose one or more files (STL/OBJ/AMF/3MF/PRUSA):" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1233 +#: src/slic3r/GUI/GUI_App.cpp:1248 msgid "Choose one file (GCODE/.GCO/.G/.ngc/NGC):" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1245 +#: src/slic3r/GUI/GUI_App.cpp:1259 msgid "Changing of an application language" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1295 +#: src/slic3r/GUI/GUI_App.cpp:1309 msgid "Select the language" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1295 +#: src/slic3r/GUI/GUI_App.cpp:1309 msgid "Language" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1425 +#: src/slic3r/GUI/GUI_App.cpp:1439 msgid "modified" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1474 +#: src/slic3r/GUI/GUI_App.cpp:1488 #, possible-c-format msgid "Run %s" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1480 +#: src/slic3r/GUI/GUI_App.cpp:1492 msgid "&Configuration Snapshots" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1480 +#: src/slic3r/GUI/GUI_App.cpp:1492 msgid "Inspect / activate configuration snapshots" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1481 +#: src/slic3r/GUI/GUI_App.cpp:1493 msgid "Take Configuration &Snapshot" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1481 +#: src/slic3r/GUI/GUI_App.cpp:1493 msgid "Capture a configuration snapshot" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1482 +#: src/slic3r/GUI/GUI_App.cpp:1494 msgid "Check for updates" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1482 +#: src/slic3r/GUI/GUI_App.cpp:1494 msgid "Check for configuration updates" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1487 +#: src/slic3r/GUI/GUI_App.cpp:1497 msgid "&Preferences" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1493 +#: src/slic3r/GUI/GUI_App.cpp:1503 msgid "Application preferences" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1504 src/slic3r/GUI/wxExtensions.cpp:673 +#: src/slic3r/GUI/GUI_App.cpp:1508 src/slic3r/GUI/wxExtensions.cpp:673 msgid "Simple" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1504 +#: src/slic3r/GUI/GUI_App.cpp:1508 msgid "Simple View Mode" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1506 src/slic3r/GUI/wxExtensions.cpp:675 +#: src/slic3r/GUI/GUI_App.cpp:1510 src/slic3r/GUI/wxExtensions.cpp:675 msgctxt "Mode" msgid "Advanced" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1506 +#: src/slic3r/GUI/GUI_App.cpp:1510 msgid "Advanced View Mode" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1507 src/slic3r/GUI/wxExtensions.cpp:676 +#: src/slic3r/GUI/GUI_App.cpp:1511 src/slic3r/GUI/wxExtensions.cpp:676 msgid "Expert" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1507 +#: src/slic3r/GUI/GUI_App.cpp:1511 msgid "Expert View Mode" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1512 +#: src/slic3r/GUI/GUI_App.cpp:1516 msgid "Mode" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1512 +#: src/slic3r/GUI/GUI_App.cpp:1516 #, possible-c-format msgid "%s View Mode" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1517 +#: src/slic3r/GUI/GUI_App.cpp:1519 msgid "&Language" msgstr "" @@ -2603,53 +2632,61 @@ msgstr "" msgid "Upload a firmware image into an Arduino based printer" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1540 +#: src/slic3r/GUI/GUI_App.cpp:1538 msgid "Taking configuration snapshot" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1540 +#: src/slic3r/GUI/GUI_App.cpp:1538 msgid "Snapshot name" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1605 src/slic3r/GUI/GUI_App.cpp:1614 +#: src/slic3r/GUI/GUI_App.cpp:1600 msgid "Language selection" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1608 +#: src/slic3r/GUI/GUI_App.cpp:1602 msgid "" "Switching the language will trigger application restart.\n" "You will lose content of the plater." msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1610 +#: src/slic3r/GUI/GUI_App.cpp:1604 msgid "Do you want to proceed?" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1645 +#: src/slic3r/GUI/GUI_App.cpp:1631 msgid "&Configuration" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1676 +#: src/slic3r/GUI/GUI_App.cpp:1662 msgid "The preset(s) modifications are successfully saved" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1876 src/slic3r/GUI/Tab.cpp:3187 +#: src/slic3r/GUI/GUI_App.cpp:1862 src/slic3r/GUI/Tab.cpp:3205 msgid "It's impossible to print multi-part object(s) with SLA technology." msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1877 +#: src/slic3r/GUI/GUI_App.cpp:1863 msgid "Please check and fix your object list." msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1878 src/slic3r/GUI/Jobs/SLAImportJob.cpp:210 -#: src/slic3r/GUI/Plater.cpp:2256 src/slic3r/GUI/Tab.cpp:3189 +#: src/slic3r/GUI/GUI_App.cpp:1864 src/slic3r/GUI/Jobs/SLAImportJob.cpp:210 +#: src/slic3r/GUI/Plater.cpp:2347 src/slic3r/GUI/Tab.cpp:3207 msgid "Attention!" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1895 +#: src/slic3r/GUI/GUI_App.cpp:1881 msgid "Select a gcode file:" msgstr "" +#: src/slic3r/GUI/GUI_Init.cpp:73 src/slic3r/GUI/GUI_Init.cpp:76 +msgid "PrusaSlicer GUI initialization failed" +msgstr "" + +#: src/slic3r/GUI/GUI_Init.cpp:76 +msgid "Fatal error, exception catched: %1%" +msgstr "" + #: src/slic3r/GUI/GUI_ObjectLayers.cpp:29 msgid "Start at height" msgstr "" @@ -2668,37 +2705,37 @@ 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:209 src/libslic3r/PrintConfig.cpp:218 -#: src/libslic3r/PrintConfig.cpp:442 src/libslic3r/PrintConfig.cpp:506 -#: src/libslic3r/PrintConfig.cpp:514 src/libslic3r/PrintConfig.cpp:932 -#: src/libslic3r/PrintConfig.cpp:1119 src/libslic3r/PrintConfig.cpp:1482 -#: src/libslic3r/PrintConfig.cpp:1549 src/libslic3r/PrintConfig.cpp:1730 -#: src/libslic3r/PrintConfig.cpp:2217 src/libslic3r/PrintConfig.cpp:2276 -#: src/libslic3r/PrintConfig.cpp:2285 +#: src/libslic3r/PrintConfig.cpp:216 src/libslic3r/PrintConfig.cpp:225 +#: src/libslic3r/PrintConfig.cpp:449 src/libslic3r/PrintConfig.cpp:513 +#: src/libslic3r/PrintConfig.cpp:521 src/libslic3r/PrintConfig.cpp:939 +#: src/libslic3r/PrintConfig.cpp:1128 src/libslic3r/PrintConfig.cpp:1493 +#: src/libslic3r/PrintConfig.cpp:1560 src/libslic3r/PrintConfig.cpp:1741 +#: src/libslic3r/PrintConfig.cpp:2208 src/libslic3r/PrintConfig.cpp:2267 +#: src/libslic3r/PrintConfig.cpp:2276 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:311 -#: src/slic3r/GUI/Tab.cpp:1449 src/slic3r/GUI/Tab.cpp:1450 -#: src/libslic3r/ExtrusionEntity.cpp:324 src/libslic3r/ExtrusionEntity.cpp:356 -#: src/libslic3r/PrintConfig.cpp:404 src/libslic3r/PrintConfig.cpp:1610 -#: src/libslic3r/PrintConfig.cpp:2008 src/libslic3r/PrintConfig.cpp:2014 -#: src/libslic3r/PrintConfig.cpp:2022 src/libslic3r/PrintConfig.cpp:2034 -#: src/libslic3r/PrintConfig.cpp:2044 src/libslic3r/PrintConfig.cpp:2052 -#: src/libslic3r/PrintConfig.cpp:2067 src/libslic3r/PrintConfig.cpp:2088 -#: src/libslic3r/PrintConfig.cpp:2100 src/libslic3r/PrintConfig.cpp:2116 -#: src/libslic3r/PrintConfig.cpp:2125 src/libslic3r/PrintConfig.cpp:2134 -#: src/libslic3r/PrintConfig.cpp:2145 src/libslic3r/PrintConfig.cpp:2159 -#: src/libslic3r/PrintConfig.cpp:2167 src/libslic3r/PrintConfig.cpp:2168 -#: src/libslic3r/PrintConfig.cpp:2177 src/libslic3r/PrintConfig.cpp:2185 -#: src/libslic3r/PrintConfig.cpp:2199 +#: src/slic3r/GUI/GUI_ObjectList.cpp:654 src/slic3r/GUI/GUI_Preview.cpp:306 +#: src/slic3r/GUI/Tab.cpp:1458 src/slic3r/GUI/Tab.cpp:1460 +#: src/libslic3r/ExtrusionEntity.cpp:320 src/libslic3r/ExtrusionEntity.cpp:352 +#: src/libslic3r/PrintConfig.cpp:411 src/libslic3r/PrintConfig.cpp:1621 +#: src/libslic3r/PrintConfig.cpp:1999 src/libslic3r/PrintConfig.cpp:2005 +#: src/libslic3r/PrintConfig.cpp:2013 src/libslic3r/PrintConfig.cpp:2025 +#: src/libslic3r/PrintConfig.cpp:2035 src/libslic3r/PrintConfig.cpp:2043 +#: src/libslic3r/PrintConfig.cpp:2058 src/libslic3r/PrintConfig.cpp:2079 +#: src/libslic3r/PrintConfig.cpp:2091 src/libslic3r/PrintConfig.cpp:2107 +#: src/libslic3r/PrintConfig.cpp:2116 src/libslic3r/PrintConfig.cpp:2125 +#: src/libslic3r/PrintConfig.cpp:2136 src/libslic3r/PrintConfig.cpp:2150 +#: src/libslic3r/PrintConfig.cpp:2158 src/libslic3r/PrintConfig.cpp:2159 +#: src/libslic3r/PrintConfig.cpp:2168 src/libslic3r/PrintConfig.cpp:2176 +#: src/libslic3r/PrintConfig.cpp:2190 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:2395 -#: src/libslic3r/PrintConfig.cpp:2403 +#: src/slic3r/GUI/GUI_ObjectList.cpp:658 src/libslic3r/PrintConfig.cpp:2386 +#: src/libslic3r/PrintConfig.cpp:2394 msgid "Wipe options" msgstr "" @@ -2723,82 +2760,83 @@ 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:307 src/slic3r/GUI/Tab.cpp:1420 -#: src/libslic3r/ExtrusionEntity.cpp:320 src/libslic3r/ExtrusionEntity.cpp:348 -#: src/libslic3r/PrintConfig.cpp:1126 src/libslic3r/PrintConfig.cpp:1132 -#: src/libslic3r/PrintConfig.cpp:1146 src/libslic3r/PrintConfig.cpp:1156 +#: src/slic3r/GUI/GUI_Preview.cpp:302 src/slic3r/GUI/Tab.cpp:1428 +#: src/libslic3r/ExtrusionEntity.cpp:316 src/libslic3r/ExtrusionEntity.cpp:344 +#: src/libslic3r/PrintConfig.cpp:1135 src/libslic3r/PrintConfig.cpp:1141 +#: src/libslic3r/PrintConfig.cpp:1155 src/libslic3r/PrintConfig.cpp:1165 +#: src/libslic3r/PrintConfig.cpp:1173 src/libslic3r/PrintConfig.cpp:1175 msgid "Ironing" msgstr "" #: src/slic3r/GUI/GUI_ObjectList.cpp:96 src/slic3r/GUI/GUI_ObjectList.cpp:655 -#: src/slic3r/GUI/GUI_Preview.cpp:278 src/slic3r/GUI/Tab.cpp:1474 -#: src/libslic3r/PrintConfig.cpp:269 src/libslic3r/PrintConfig.cpp:494 -#: src/libslic3r/PrintConfig.cpp:963 src/libslic3r/PrintConfig.cpp:1092 -#: src/libslic3r/PrintConfig.cpp:1165 src/libslic3r/PrintConfig.cpp:1539 -#: src/libslic3r/PrintConfig.cpp:1776 src/libslic3r/PrintConfig.cpp:1831 -#: src/libslic3r/PrintConfig.cpp:1883 src/libslic3r/PrintConfig.cpp:2261 +#: src/slic3r/GUI/GUI_Preview.cpp:273 src/slic3r/GUI/Tab.cpp:1484 +#: src/libslic3r/PrintConfig.cpp:276 src/libslic3r/PrintConfig.cpp:501 +#: src/libslic3r/PrintConfig.cpp:970 src/libslic3r/PrintConfig.cpp:1101 +#: src/libslic3r/PrintConfig.cpp:1174 src/libslic3r/PrintConfig.cpp:1550 +#: src/libslic3r/PrintConfig.cpp:1822 src/libslic3r/PrintConfig.cpp:1874 +#: src/libslic3r/PrintConfig.cpp:2252 msgid "Speed" msgstr "" #: src/slic3r/GUI/GUI_ObjectList.cpp:97 src/slic3r/GUI/GUI_ObjectList.cpp:656 -#: src/slic3r/GUI/Tab.cpp:1510 src/slic3r/GUI/Tab.cpp:2072 -#: src/libslic3r/PrintConfig.cpp:524 src/libslic3r/PrintConfig.cpp:1046 -#: src/libslic3r/PrintConfig.cpp:1517 src/libslic3r/PrintConfig.cpp:1852 -#: src/libslic3r/PrintConfig.cpp:2080 src/libslic3r/PrintConfig.cpp:2107 +#: src/slic3r/GUI/Tab.cpp:1520 src/slic3r/GUI/Tab.cpp:2085 +#: src/libslic3r/PrintConfig.cpp:531 src/libslic3r/PrintConfig.cpp:1055 +#: src/libslic3r/PrintConfig.cpp:1528 src/libslic3r/PrintConfig.cpp:1843 +#: src/libslic3r/PrintConfig.cpp:2071 src/libslic3r/PrintConfig.cpp:2098 msgid "Extruders" msgstr "" #: src/slic3r/GUI/GUI_ObjectList.cpp:98 src/slic3r/GUI/GUI_ObjectList.cpp:657 -#: src/libslic3r/PrintConfig.cpp:483 src/libslic3r/PrintConfig.cpp:591 -#: src/libslic3r/PrintConfig.cpp:919 src/libslic3r/PrintConfig.cpp:1054 -#: src/libslic3r/PrintConfig.cpp:1526 src/libslic3r/PrintConfig.cpp:1872 -#: src/libslic3r/PrintConfig.cpp:2089 src/libslic3r/PrintConfig.cpp:2249 +#: src/libslic3r/PrintConfig.cpp:490 src/libslic3r/PrintConfig.cpp:598 +#: src/libslic3r/PrintConfig.cpp:926 src/libslic3r/PrintConfig.cpp:1063 +#: src/libslic3r/PrintConfig.cpp:1537 src/libslic3r/PrintConfig.cpp:1863 +#: src/libslic3r/PrintConfig.cpp:2080 src/libslic3r/PrintConfig.cpp:2240 msgid "Extrusion Width" msgstr "" #: src/slic3r/GUI/GUI_ObjectList.cpp:102 src/slic3r/GUI/GUI_ObjectList.cpp:661 -#: src/slic3r/GUI/Tab.cpp:1409 src/slic3r/GUI/Tab.cpp:1430 -#: src/slic3r/GUI/Tab.cpp:1531 src/slic3r/GUI/Tab.cpp:1534 -#: src/slic3r/GUI/Tab.cpp:1816 src/slic3r/GUI/Tab.cpp:2152 -#: src/slic3r/GUI/Tab.cpp:4080 src/libslic3r/PrintConfig.cpp:90 -#: src/libslic3r/PrintConfig.cpp:121 src/libslic3r/PrintConfig.cpp:257 -#: src/libslic3r/PrintConfig.cpp:1081 src/libslic3r/PrintConfig.cpp:2419 -#: src/libslic3r/PrintConfig.cpp:2591 +#: src/slic3r/GUI/Tab.cpp:1416 src/slic3r/GUI/Tab.cpp:1438 +#: src/slic3r/GUI/Tab.cpp:1541 src/slic3r/GUI/Tab.cpp:1544 +#: src/slic3r/GUI/Tab.cpp:1828 src/slic3r/GUI/Tab.cpp:2165 +#: src/slic3r/GUI/Tab.cpp:4077 src/libslic3r/PrintConfig.cpp:90 +#: src/libslic3r/PrintConfig.cpp:128 src/libslic3r/PrintConfig.cpp:264 +#: src/libslic3r/PrintConfig.cpp:1090 src/libslic3r/PrintConfig.cpp:2410 +#: src/libslic3r/PrintConfig.cpp:2582 msgid "Advanced" msgstr "" #: src/slic3r/GUI/GUI_ObjectList.cpp:104 src/slic3r/GUI/GUI_ObjectList.cpp:663 -#: src/slic3r/GUI/Plater.cpp:361 src/slic3r/GUI/Tab.cpp:4014 -#: src/slic3r/GUI/Tab.cpp:4015 src/libslic3r/PrintConfig.cpp:2757 -#: src/libslic3r/PrintConfig.cpp:2764 src/libslic3r/PrintConfig.cpp:2773 -#: src/libslic3r/PrintConfig.cpp:2782 src/libslic3r/PrintConfig.cpp:2792 -#: src/libslic3r/PrintConfig.cpp:2802 src/libslic3r/PrintConfig.cpp:2839 -#: src/libslic3r/PrintConfig.cpp:2846 src/libslic3r/PrintConfig.cpp:2857 -#: src/libslic3r/PrintConfig.cpp:2867 src/libslic3r/PrintConfig.cpp:2876 -#: src/libslic3r/PrintConfig.cpp:2889 src/libslic3r/PrintConfig.cpp:2899 -#: src/libslic3r/PrintConfig.cpp:2908 src/libslic3r/PrintConfig.cpp:2918 -#: src/libslic3r/PrintConfig.cpp:2929 src/libslic3r/PrintConfig.cpp:2937 +#: src/slic3r/GUI/Plater.cpp:356 src/slic3r/GUI/Tab.cpp:4011 +#: src/slic3r/GUI/Tab.cpp:4012 src/libslic3r/PrintConfig.cpp:2748 +#: src/libslic3r/PrintConfig.cpp:2755 src/libslic3r/PrintConfig.cpp:2764 +#: src/libslic3r/PrintConfig.cpp:2773 src/libslic3r/PrintConfig.cpp:2783 +#: src/libslic3r/PrintConfig.cpp:2793 src/libslic3r/PrintConfig.cpp:2830 +#: src/libslic3r/PrintConfig.cpp:2837 src/libslic3r/PrintConfig.cpp:2848 +#: src/libslic3r/PrintConfig.cpp:2858 src/libslic3r/PrintConfig.cpp:2867 +#: src/libslic3r/PrintConfig.cpp:2880 src/libslic3r/PrintConfig.cpp:2890 +#: src/libslic3r/PrintConfig.cpp:2899 src/libslic3r/PrintConfig.cpp:2909 +#: src/libslic3r/PrintConfig.cpp:2920 src/libslic3r/PrintConfig.cpp:2928 msgid "Supports" msgstr "" #: src/slic3r/GUI/GUI_ObjectList.cpp:105 src/slic3r/GUI/GUI_ObjectList.cpp:664 -#: src/slic3r/GUI/Plater.cpp:501 src/slic3r/GUI/Tab.cpp:4055 -#: src/slic3r/GUI/Tab.cpp:4056 src/slic3r/GUI/Tab.cpp:4127 -#: src/libslic3r/PrintConfig.cpp:2945 src/libslic3r/PrintConfig.cpp:2952 -#: src/libslic3r/PrintConfig.cpp:2966 src/libslic3r/PrintConfig.cpp:2977 -#: src/libslic3r/PrintConfig.cpp:2987 src/libslic3r/PrintConfig.cpp:3009 -#: src/libslic3r/PrintConfig.cpp:3020 src/libslic3r/PrintConfig.cpp:3027 -#: src/libslic3r/PrintConfig.cpp:3034 src/libslic3r/PrintConfig.cpp:3045 -#: src/libslic3r/PrintConfig.cpp:3054 src/libslic3r/PrintConfig.cpp:3063 +#: src/slic3r/GUI/Plater.cpp:496 src/slic3r/GUI/Tab.cpp:4052 +#: src/slic3r/GUI/Tab.cpp:4053 src/slic3r/GUI/Tab.cpp:4124 +#: src/libslic3r/PrintConfig.cpp:2936 src/libslic3r/PrintConfig.cpp:2943 +#: src/libslic3r/PrintConfig.cpp:2957 src/libslic3r/PrintConfig.cpp:2968 +#: src/libslic3r/PrintConfig.cpp:2978 src/libslic3r/PrintConfig.cpp:3000 +#: src/libslic3r/PrintConfig.cpp:3011 src/libslic3r/PrintConfig.cpp:3018 +#: src/libslic3r/PrintConfig.cpp:3025 src/libslic3r/PrintConfig.cpp:3036 +#: src/libslic3r/PrintConfig.cpp:3045 src/libslic3r/PrintConfig.cpp:3054 msgid "Pad" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:106 src/slic3r/GUI/Tab.cpp:4073 -#: src/slic3r/GUI/Tab.cpp:4074 src/libslic3r/SLA/Hollowing.cpp:45 +#: src/slic3r/GUI/GUI_ObjectList.cpp:106 src/slic3r/GUI/Tab.cpp:4070 +#: src/slic3r/GUI/Tab.cpp:4071 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:3073 -#: src/libslic3r/PrintConfig.cpp:3080 src/libslic3r/PrintConfig.cpp:3090 -#: src/libslic3r/PrintConfig.cpp:3099 +#: src/libslic3r/SLA/Hollowing.cpp:75 src/libslic3r/PrintConfig.cpp:3064 +#: src/libslic3r/PrintConfig.cpp:3071 src/libslic3r/PrintConfig.cpp:3081 +#: src/libslic3r/PrintConfig.cpp:3090 msgid "Hollowing" msgstr "" @@ -2972,12 +3010,12 @@ msgstr "" msgid "Fix through the Netfabb" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1786 src/slic3r/GUI/Plater.cpp:3884 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1786 src/slic3r/GUI/Plater.cpp:3985 msgid "Export as STL" msgstr "" #: src/slic3r/GUI/GUI_ObjectList.cpp:1793 -#: src/slic3r/GUI/GUI_ObjectList.cpp:4439 src/slic3r/GUI/Plater.cpp:3852 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4439 src/slic3r/GUI/Plater.cpp:3953 msgid "Reload the selected volumes from disk" msgstr "" @@ -2985,7 +3023,7 @@ msgstr "" msgid "Set extruder for selected items" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1832 src/libslic3r/PrintConfig.cpp:369 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1832 src/libslic3r/PrintConfig.cpp:376 msgid "Default" msgstr "" @@ -2997,17 +3035,17 @@ msgstr "" msgid "Scale the selected object to fit the print volume" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1858 src/slic3r/GUI/Plater.cpp:4886 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1858 src/slic3r/GUI/Plater.cpp:4994 msgid "Convert from imperial units" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1861 src/slic3r/GUI/Plater.cpp:4886 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1861 src/slic3r/GUI/Plater.cpp:4994 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:3641 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2569 src/libslic3r/PrintConfig.cpp:3633 msgid "Merge" msgstr "" @@ -3069,7 +3107,7 @@ msgstr "" msgid "Delete Instance" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2436 src/slic3r/GUI/Plater.cpp:2771 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2436 src/slic3r/GUI/Plater.cpp:2862 msgid "" "The selected object couldn't be split because it contains only one part." msgstr "" @@ -3205,7 +3243,7 @@ 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:147 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3968 src/slic3r/GUI/Plater.cpp:142 msgid "Info" msgstr "" @@ -3243,14 +3281,14 @@ msgstr "" #: src/slic3r/GUI/GUI_ObjectList.cpp:4282 #: src/slic3r/GUI/GUI_ObjectList.cpp:4409 -#: src/slic3r/GUI/SavePresetDialog.cpp:116 -#: src/slic3r/GUI/SavePresetDialog.cpp:124 +#: 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/SavePresetDialog.cpp:117 +#: src/slic3r/GUI/SavePresetDialog.cpp:102 msgid "the following characters are not allowed:" msgstr "" @@ -3266,11 +3304,11 @@ msgstr "" msgid "Change Extruders" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:4581 src/slic3r/GUI/Selection.cpp:1513 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4581 src/slic3r/GUI/Selection.cpp:1531 msgid "Set Printable" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:4581 src/slic3r/GUI/Selection.cpp:1513 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4581 src/slic3r/GUI/Selection.cpp:1531 msgid "Set Unprintable" msgstr "" @@ -3288,7 +3326,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:623 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:163 src/libslic3r/GCode.cpp:621 msgid "Object name" msgstr "" @@ -3297,6 +3335,13 @@ msgstr "" msgid "Position" 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 +msgid "Rotation" +msgstr "" + #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:271 #, possible-c-format msgid "Toggle %c axis mirroring" @@ -3389,117 +3434,117 @@ msgstr "" msgid "Change Option %s" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:265 src/slic3r/GUI/GUI_Preview.cpp:271 +#: src/slic3r/GUI/GUI_Preview.cpp:260 src/slic3r/GUI/GUI_Preview.cpp:266 msgid "View" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:276 src/libslic3r/PrintConfig.cpp:536 +#: src/slic3r/GUI/GUI_Preview.cpp:271 src/libslic3r/PrintConfig.cpp:543 msgid "Height" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:277 src/libslic3r/PrintConfig.cpp:2381 +#: src/slic3r/GUI/GUI_Preview.cpp:272 src/libslic3r/PrintConfig.cpp:2372 msgid "Width" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:279 src/slic3r/GUI/Tab.cpp:1803 +#: src/slic3r/GUI/GUI_Preview.cpp:274 src/slic3r/GUI/Tab.cpp:1814 msgid "Fan speed" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:280 +#: src/slic3r/GUI/GUI_Preview.cpp:275 msgid "Volumetric flow rate" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:286 src/slic3r/GUI/GUI_Preview.cpp:288 +#: src/slic3r/GUI/GUI_Preview.cpp:281 src/slic3r/GUI/GUI_Preview.cpp:283 msgid "Show" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:293 src/slic3r/GUI/GUI_Preview.cpp:295 -#: src/slic3r/GUI/GUI_Preview.cpp:316 +#: src/slic3r/GUI/GUI_Preview.cpp:288 src/slic3r/GUI/GUI_Preview.cpp:290 +#: src/slic3r/GUI/GUI_Preview.cpp:311 msgid "Feature types" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:301 src/libslic3r/ExtrusionEntity.cpp:314 -#: src/libslic3r/ExtrusionEntity.cpp:336 +#: src/slic3r/GUI/GUI_Preview.cpp:296 src/libslic3r/ExtrusionEntity.cpp:310 +#: src/libslic3r/ExtrusionEntity.cpp:332 msgid "Perimeter" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:302 src/libslic3r/ExtrusionEntity.cpp:315 -#: src/libslic3r/ExtrusionEntity.cpp:338 +#: src/slic3r/GUI/GUI_Preview.cpp:297 src/libslic3r/ExtrusionEntity.cpp:311 +#: src/libslic3r/ExtrusionEntity.cpp:334 msgid "External perimeter" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:303 src/libslic3r/ExtrusionEntity.cpp:316 -#: src/libslic3r/ExtrusionEntity.cpp:340 +#: src/slic3r/GUI/GUI_Preview.cpp:298 src/libslic3r/ExtrusionEntity.cpp:312 +#: src/libslic3r/ExtrusionEntity.cpp:336 msgid "Overhang perimeter" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:304 src/libslic3r/ExtrusionEntity.cpp:317 -#: src/libslic3r/ExtrusionEntity.cpp:342 +#: src/slic3r/GUI/GUI_Preview.cpp:299 src/libslic3r/ExtrusionEntity.cpp:313 +#: src/libslic3r/ExtrusionEntity.cpp:338 msgid "Internal infill" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:305 src/libslic3r/ExtrusionEntity.cpp:318 -#: src/libslic3r/ExtrusionEntity.cpp:344 src/libslic3r/PrintConfig.cpp:1871 -#: src/libslic3r/PrintConfig.cpp:1882 +#: src/slic3r/GUI/GUI_Preview.cpp:300 src/libslic3r/ExtrusionEntity.cpp:314 +#: src/libslic3r/ExtrusionEntity.cpp:340 src/libslic3r/PrintConfig.cpp:1862 +#: src/libslic3r/PrintConfig.cpp:1873 msgid "Solid infill" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:306 src/libslic3r/ExtrusionEntity.cpp:319 -#: src/libslic3r/ExtrusionEntity.cpp:346 src/libslic3r/PrintConfig.cpp:2248 -#: src/libslic3r/PrintConfig.cpp:2260 +#: src/slic3r/GUI/GUI_Preview.cpp:301 src/libslic3r/ExtrusionEntity.cpp:315 +#: src/libslic3r/ExtrusionEntity.cpp:342 src/libslic3r/PrintConfig.cpp:2239 +#: src/libslic3r/PrintConfig.cpp:2251 msgid "Top solid infill" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:308 src/libslic3r/ExtrusionEntity.cpp:321 -#: src/libslic3r/ExtrusionEntity.cpp:350 +#: src/slic3r/GUI/GUI_Preview.cpp:303 src/libslic3r/ExtrusionEntity.cpp:317 +#: src/libslic3r/ExtrusionEntity.cpp:346 msgid "Bridge infill" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:309 src/libslic3r/ExtrusionEntity.cpp:322 -#: src/libslic3r/ExtrusionEntity.cpp:352 src/libslic3r/PrintConfig.cpp:962 +#: src/slic3r/GUI/GUI_Preview.cpp:304 src/libslic3r/ExtrusionEntity.cpp:318 +#: src/libslic3r/ExtrusionEntity.cpp:348 src/libslic3r/PrintConfig.cpp:969 msgid "Gap fill" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:310 src/slic3r/GUI/Tab.cpp:1439 -#: src/libslic3r/ExtrusionEntity.cpp:323 src/libslic3r/ExtrusionEntity.cpp:354 +#: src/slic3r/GUI/GUI_Preview.cpp:305 src/slic3r/GUI/Tab.cpp:1448 +#: src/libslic3r/ExtrusionEntity.cpp:319 src/libslic3r/ExtrusionEntity.cpp:350 msgid "Skirt" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:312 src/libslic3r/ExtrusionEntity.cpp:325 -#: src/libslic3r/ExtrusionEntity.cpp:358 src/libslic3r/PrintConfig.cpp:2133 +#: src/slic3r/GUI/GUI_Preview.cpp:307 src/libslic3r/ExtrusionEntity.cpp:321 +#: src/libslic3r/ExtrusionEntity.cpp:354 src/libslic3r/PrintConfig.cpp:2124 msgid "Support material interface" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:313 src/slic3r/GUI/Tab.cpp:1521 -#: src/libslic3r/ExtrusionEntity.cpp:326 src/libslic3r/ExtrusionEntity.cpp:360 +#: src/slic3r/GUI/GUI_Preview.cpp:308 src/slic3r/GUI/Tab.cpp:1531 +#: src/libslic3r/ExtrusionEntity.cpp:322 src/libslic3r/ExtrusionEntity.cpp:356 msgid "Wipe tower" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:338 src/slic3r/GUI/GUI_Preview.cpp:1478 +#: src/slic3r/GUI/GUI_Preview.cpp:333 src/slic3r/GUI/GUI_Preview.cpp:1473 msgid "Shells" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:339 +#: src/slic3r/GUI/GUI_Preview.cpp:334 msgid "Legend" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:1479 +#: src/slic3r/GUI/GUI_Preview.cpp:1474 msgid "Tool marker" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:1480 +#: src/slic3r/GUI/GUI_Preview.cpp:1475 msgid "Legend/Estimated printing time" msgstr "" -#: src/slic3r/GUI/ImGuiWrapper.cpp:800 src/slic3r/GUI/Search.cpp:464 +#: src/slic3r/GUI/ImGuiWrapper.cpp:804 src/slic3r/GUI/Search.cpp:464 msgid "Use for search" msgstr "" -#: src/slic3r/GUI/ImGuiWrapper.cpp:801 src/slic3r/GUI/Search.cpp:458 +#: src/slic3r/GUI/ImGuiWrapper.cpp:805 src/slic3r/GUI/Search.cpp:458 msgid "Category" msgstr "" -#: src/slic3r/GUI/ImGuiWrapper.cpp:803 src/slic3r/GUI/Search.cpp:460 +#: src/slic3r/GUI/ImGuiWrapper.cpp:807 src/slic3r/GUI/Search.cpp:460 msgid "Search in English" msgstr "" @@ -3519,7 +3564,7 @@ msgstr "" msgid "Arranging done." msgstr "" -#: src/slic3r/GUI/Jobs/Job.cpp:74 +#: src/slic3r/GUI/Jobs/Job.cpp:75 msgid "ERROR: not enough resources to execute a new job." msgstr "" @@ -3540,7 +3585,7 @@ msgid "Choose SLA archive:" msgstr "" #: src/slic3r/GUI/Jobs/SLAImportJob.cpp:39 -msgid "Import file: " +msgid "Import file" msgstr "" #: src/slic3r/GUI/Jobs/SLAImportJob.cpp:46 @@ -3555,10 +3600,6 @@ msgstr "" msgid "Import model only" msgstr "" -#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:56 -msgid "Quality: " -msgstr "" - #: src/slic3r/GUI/Jobs/SLAImportJob.cpp:59 msgid "Accurate" msgstr "" @@ -3583,18 +3624,18 @@ msgstr "" msgid "Importing done." msgstr "" -#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:208 src/slic3r/GUI/Plater.cpp:2254 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:208 src/slic3r/GUI/Plater.cpp:2345 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:2255 -#: src/slic3r/GUI/Tab.cpp:3188 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:209 src/slic3r/GUI/Plater.cpp:2346 +#: src/slic3r/GUI/Tab.cpp:3206 msgid "Please check your object list before preset changing." msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:37 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:39 src/slic3r/GUI/MainFrame.cpp:941 -#: src/slic3r/GUI/MainFrame.cpp:1332 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:39 src/slic3r/GUI/MainFrame.cpp:953 +#: src/slic3r/GUI/MainFrame.cpp:1344 msgid "Keyboard Shortcuts" msgstr "" @@ -3630,12 +3671,12 @@ msgstr "" msgid "Load Config from ini/amf/3mf/gcode and merge" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:115 src/slic3r/GUI/Plater.cpp:766 -#: src/slic3r/GUI/Plater.cpp:5706 src/libslic3r/PrintConfig.cpp:3546 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:115 src/slic3r/GUI/Plater.cpp:762 +#: src/slic3r/GUI/Plater.cpp:5849 src/libslic3r/PrintConfig.cpp:3538 msgid "Export G-code" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:116 src/slic3r/GUI/Plater.cpp:5707 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:116 src/slic3r/GUI/Plater.cpp:5850 msgid "Send G-code" msgstr "" @@ -3643,7 +3684,7 @@ msgstr "" msgid "Export config" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:118 src/slic3r/GUI/Plater.cpp:755 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:118 src/slic3r/GUI/Plater.cpp:750 msgid "Export to SD card / Flash drive" msgstr "" @@ -3700,7 +3741,7 @@ msgid "Switch to Preview" msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:138 -#: src/slic3r/GUI/PrintHostDialogs.cpp:136 +#: src/slic3r/GUI/PrintHostDialogs.cpp:163 msgid "Print host upload queue" msgstr "" @@ -3747,8 +3788,8 @@ msgid "Press to activate deselection rectangle" msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:158 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:215 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:212 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:222 msgid "Arrow Up" msgstr "" @@ -3757,8 +3798,8 @@ msgid "Move selection 10 mm in positive Y direction" msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:159 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:206 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:213 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:223 msgid "Arrow Down" msgstr "" @@ -3767,8 +3808,8 @@ msgid "Move selection 10 mm in negative Y direction" msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:160 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:217 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:229 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:224 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:236 msgid "Arrow Left" msgstr "" @@ -3777,8 +3818,8 @@ msgid "Move selection 10 mm in negative X direction" msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:161 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:218 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:230 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:225 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:237 msgid "Arrow Right" msgstr "" @@ -3878,119 +3919,125 @@ msgid "Collapse/Expand the sidebar" msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:182 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:185 msgid "Show/Hide 3Dconnexion devices settings dialog" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:190 src/slic3r/GUI/MainFrame.cpp:340 -#: src/slic3r/GUI/MainFrame.cpp:352 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:194 src/slic3r/GUI/MainFrame.cpp:351 +#: src/slic3r/GUI/MainFrame.cpp:363 msgid "Plater" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:193 -#, possible-c-format -msgid "" -"Press to snap by 5% in Gizmo scale\n" -"or to snap by 1mm in Gizmo move" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:197 +msgid "All gizmos: Rotate - left mouse button; Pan - right mouse button" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:194 -msgid "" -"Scale selection to fit print volume\n" -"in Gizmo scale" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:195 -msgid "Press to activate one direction scaling in Gizmo scale" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:196 -msgid "" -"Press to scale (in Gizmo scale) or rotate (in Gizmo rotate)\n" -"selected objects around their own center" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:198 +msgid "Gizmo move: Press to snap by 1mm" msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:199 -msgid "Gizmos" +msgid "Gizmo scale: Press to snap by 5%" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 -msgid "Upper Layer" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:200 +msgid "Gizmo scale: Scale selection to fit print volume" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:201 +msgid "Gizmo scale: Press to activate one direction scaling" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:202 +msgid "Gizmo scale: Press to scale selected objects around their own center" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:203 +msgid "Gizmo rotate: Press to rotate selected objects around their own center" msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:206 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:208 +msgid "Gizmos" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:212 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:214 +msgid "Upper Layer" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:213 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:215 msgid "Lower Layer" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:209 -msgid "Show/Hide Legend/Estimated printing time" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 +msgid "Show/Hide Legend & Estimated printing time" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:212 src/slic3r/GUI/Plater.cpp:4052 -#: src/slic3r/GUI/Tab.cpp:2559 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:219 src/slic3r/GUI/Plater.cpp:4153 +#: src/slic3r/GUI/Tab.cpp:2570 msgid "Preview" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:215 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:222 msgid "Move current slider thumb Up" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:223 msgid "Move current slider thumb Down" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:217 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:224 msgid "Set upper thumb to current slider thumb" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:218 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:225 msgid "Set lower thumb to current slider thumb" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:219 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:226 msgid "Add color change marker for current layer" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:220 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:227 msgid "Delete color change marker for current layer" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:221 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:222 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:231 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:232 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:228 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:229 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:238 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:239 msgid "" "Press to speed up 5 times while moving thumb\n" "with arrow keys or mouse wheel" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:225 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:232 msgid "Layers Slider" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:229 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:236 msgid "Move current slider thumb Left" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:230 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:237 msgid "Move current slider thumb Right" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:235 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:242 msgid "Sequential Slider" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:259 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:270 msgid "Keyboard shortcuts" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:63 src/slic3r/GUI/MainFrame.cpp:1262 +#: src/slic3r/GUI/MainFrame.cpp:63 src/slic3r/GUI/MainFrame.cpp:1274 msgid "Open new instance" msgstr "" #: src/slic3r/GUI/MainFrame.cpp:63 src/slic3r/GUI/MainFrame.cpp:77 -#: src/slic3r/GUI/MainFrame.cpp:1262 +#: src/slic3r/GUI/MainFrame.cpp:1274 msgid "Open a new PrusaSlicer instance" msgstr "" @@ -3998,11 +4045,11 @@ msgstr "" msgid "G-code preview" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:66 src/slic3r/GUI/MainFrame.cpp:1141 +#: src/slic3r/GUI/MainFrame.cpp:66 src/slic3r/GUI/MainFrame.cpp:1153 msgid "Open G-code viewer" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:77 src/slic3r/GUI/MainFrame.cpp:1398 +#: src/slic3r/GUI/MainFrame.cpp:77 src/slic3r/GUI/MainFrame.cpp:1410 msgid "Open PrusaSlicer" msgstr "" @@ -4012,700 +4059,700 @@ msgstr "" #: src/slic3r/GUI/MainFrame.cpp:166 msgid "" -" - Remember to check for updates at https://github.com/prusa3d/PrusaSlicer/" +"Remember to check for updates at https://github.com/prusa3d/PrusaSlicer/" "releases" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:535 src/slic3r/GUI/MainFrame.cpp:537 +#: src/slic3r/GUI/MainFrame.cpp:550 src/slic3r/GUI/MainFrame.cpp:552 msgid "based on Slic3r" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:909 src/slic3r/GUI/MainFrame.cpp:1308 +#: src/slic3r/GUI/MainFrame.cpp:921 src/slic3r/GUI/MainFrame.cpp:1320 msgid "Prusa 3D &Drivers" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:909 src/slic3r/GUI/MainFrame.cpp:1308 +#: src/slic3r/GUI/MainFrame.cpp:921 src/slic3r/GUI/MainFrame.cpp:1320 msgid "Open the Prusa3D drivers download page in your browser" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:911 src/slic3r/GUI/MainFrame.cpp:1310 +#: src/slic3r/GUI/MainFrame.cpp:923 src/slic3r/GUI/MainFrame.cpp:1322 msgid "Software &Releases" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:911 src/slic3r/GUI/MainFrame.cpp:1310 +#: src/slic3r/GUI/MainFrame.cpp:923 src/slic3r/GUI/MainFrame.cpp:1322 msgid "Open the software releases page in your browser" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:917 src/slic3r/GUI/MainFrame.cpp:1316 +#: src/slic3r/GUI/MainFrame.cpp:929 src/slic3r/GUI/MainFrame.cpp:1328 #, possible-c-format msgid "%s &Website" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:918 src/slic3r/GUI/MainFrame.cpp:1317 +#: src/slic3r/GUI/MainFrame.cpp:930 src/slic3r/GUI/MainFrame.cpp:1329 #, possible-c-format msgid "Open the %s website in your browser" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:924 src/slic3r/GUI/MainFrame.cpp:1323 +#: src/slic3r/GUI/MainFrame.cpp:936 src/slic3r/GUI/MainFrame.cpp:1335 msgid "System &Info" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:924 src/slic3r/GUI/MainFrame.cpp:1323 +#: src/slic3r/GUI/MainFrame.cpp:936 src/slic3r/GUI/MainFrame.cpp:1335 msgid "Show system information" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:926 src/slic3r/GUI/MainFrame.cpp:1325 +#: src/slic3r/GUI/MainFrame.cpp:938 src/slic3r/GUI/MainFrame.cpp:1337 msgid "Show &Configuration Folder" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:926 src/slic3r/GUI/MainFrame.cpp:1325 +#: src/slic3r/GUI/MainFrame.cpp:938 src/slic3r/GUI/MainFrame.cpp:1337 msgid "Show user configuration folder (datadir)" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:928 src/slic3r/GUI/MainFrame.cpp:1327 +#: src/slic3r/GUI/MainFrame.cpp:940 src/slic3r/GUI/MainFrame.cpp:1339 msgid "Report an I&ssue" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:928 src/slic3r/GUI/MainFrame.cpp:1327 +#: src/slic3r/GUI/MainFrame.cpp:940 src/slic3r/GUI/MainFrame.cpp:1339 #, possible-c-format msgid "Report an issue on %s" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:933 src/slic3r/GUI/MainFrame.cpp:937 -#: src/slic3r/GUI/MainFrame.cpp:1329 +#: src/slic3r/GUI/MainFrame.cpp:945 src/slic3r/GUI/MainFrame.cpp:949 +#: src/slic3r/GUI/MainFrame.cpp:1341 #, possible-c-format msgid "&About %s" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:933 src/slic3r/GUI/MainFrame.cpp:937 -#: src/slic3r/GUI/MainFrame.cpp:1329 +#: src/slic3r/GUI/MainFrame.cpp:945 src/slic3r/GUI/MainFrame.cpp:949 +#: src/slic3r/GUI/MainFrame.cpp:1341 msgid "Show about dialog" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:941 src/slic3r/GUI/MainFrame.cpp:1332 +#: src/slic3r/GUI/MainFrame.cpp:953 src/slic3r/GUI/MainFrame.cpp:1344 msgid "Show the list of the keyboard shortcuts" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:955 src/slic3r/GUI/MainFrame.cpp:1275 +#: src/slic3r/GUI/MainFrame.cpp:967 src/slic3r/GUI/MainFrame.cpp:1287 msgid "Iso" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:955 src/slic3r/GUI/MainFrame.cpp:1275 +#: src/slic3r/GUI/MainFrame.cpp:967 src/slic3r/GUI/MainFrame.cpp:1287 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:959 src/slic3r/GUI/MainFrame.cpp:1279 -#: src/libslic3r/PrintConfig.cpp:2275 src/libslic3r/PrintConfig.cpp:2284 +#: src/slic3r/GUI/MainFrame.cpp:971 src/slic3r/GUI/MainFrame.cpp:1291 +#: src/libslic3r/PrintConfig.cpp:2266 src/libslic3r/PrintConfig.cpp:2275 msgid "Top" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:959 src/slic3r/GUI/MainFrame.cpp:1279 +#: src/slic3r/GUI/MainFrame.cpp:971 src/slic3r/GUI/MainFrame.cpp:1291 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:962 src/slic3r/GUI/MainFrame.cpp:1282 -#: src/libslic3r/PrintConfig.cpp:208 src/libslic3r/PrintConfig.cpp:217 +#: src/slic3r/GUI/MainFrame.cpp:974 src/slic3r/GUI/MainFrame.cpp:1294 +#: src/libslic3r/PrintConfig.cpp:215 src/libslic3r/PrintConfig.cpp:224 msgid "Bottom" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:962 src/slic3r/GUI/MainFrame.cpp:1282 +#: src/slic3r/GUI/MainFrame.cpp:974 src/slic3r/GUI/MainFrame.cpp:1294 msgid "Bottom View" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:964 src/slic3r/GUI/MainFrame.cpp:1284 +#: src/slic3r/GUI/MainFrame.cpp:976 src/slic3r/GUI/MainFrame.cpp:1296 msgid "Front" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:964 src/slic3r/GUI/MainFrame.cpp:1284 +#: src/slic3r/GUI/MainFrame.cpp:976 src/slic3r/GUI/MainFrame.cpp:1296 msgid "Front View" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:966 src/slic3r/GUI/MainFrame.cpp:1286 -#: src/libslic3r/PrintConfig.cpp:1740 +#: src/slic3r/GUI/MainFrame.cpp:978 src/slic3r/GUI/MainFrame.cpp:1298 +#: src/libslic3r/PrintConfig.cpp:1751 msgid "Rear" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:966 src/slic3r/GUI/MainFrame.cpp:1286 +#: src/slic3r/GUI/MainFrame.cpp:978 src/slic3r/GUI/MainFrame.cpp:1298 msgid "Rear View" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:968 src/slic3r/GUI/MainFrame.cpp:1288 +#: src/slic3r/GUI/MainFrame.cpp:980 src/slic3r/GUI/MainFrame.cpp:1300 msgid "Left" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:968 src/slic3r/GUI/MainFrame.cpp:1288 +#: src/slic3r/GUI/MainFrame.cpp:980 src/slic3r/GUI/MainFrame.cpp:1300 msgid "Left View" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:970 src/slic3r/GUI/MainFrame.cpp:1290 +#: src/slic3r/GUI/MainFrame.cpp:982 src/slic3r/GUI/MainFrame.cpp:1302 msgid "Right" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:970 src/slic3r/GUI/MainFrame.cpp:1290 +#: src/slic3r/GUI/MainFrame.cpp:982 src/slic3r/GUI/MainFrame.cpp:1302 msgid "Right View" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:986 +#: src/slic3r/GUI/MainFrame.cpp:998 msgid "&New Project" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:986 +#: src/slic3r/GUI/MainFrame.cpp:998 msgid "Start a new project" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:989 +#: src/slic3r/GUI/MainFrame.cpp:1001 msgid "&Open Project" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:989 +#: src/slic3r/GUI/MainFrame.cpp:1001 msgid "Open a project file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:994 +#: src/slic3r/GUI/MainFrame.cpp:1006 msgid "Recent projects" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1003 +#: src/slic3r/GUI/MainFrame.cpp:1015 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:1003 src/slic3r/GUI/MainFrame.cpp:1486 -#: src/slic3r/GUI/PrintHostDialogs.cpp:231 +#: src/slic3r/GUI/MainFrame.cpp:1015 src/slic3r/GUI/MainFrame.cpp:1498 +#: src/slic3r/GUI/PrintHostDialogs.cpp:259 msgid "Error" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1028 +#: src/slic3r/GUI/MainFrame.cpp:1040 msgid "&Save Project" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1028 +#: src/slic3r/GUI/MainFrame.cpp:1040 msgid "Save current project file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1032 src/slic3r/GUI/MainFrame.cpp:1034 +#: src/slic3r/GUI/MainFrame.cpp:1044 src/slic3r/GUI/MainFrame.cpp:1046 msgid "Save Project &as" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1032 src/slic3r/GUI/MainFrame.cpp:1034 +#: src/slic3r/GUI/MainFrame.cpp:1044 src/slic3r/GUI/MainFrame.cpp:1046 msgid "Save current project file as" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1042 +#: src/slic3r/GUI/MainFrame.cpp:1054 msgid "Import STL/OBJ/AM&F/3MF" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1042 +#: src/slic3r/GUI/MainFrame.cpp:1054 msgid "Load a model" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1046 +#: src/slic3r/GUI/MainFrame.cpp:1058 msgid "Import STL (imperial units)" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1046 +#: src/slic3r/GUI/MainFrame.cpp:1058 msgid "Load an model saved with imperial units" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1050 +#: src/slic3r/GUI/MainFrame.cpp:1062 msgid "Import SL1 archive" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1050 -msgid "Load an SL1 output archive" +#: src/slic3r/GUI/MainFrame.cpp:1062 +msgid "Load an SL1 archive" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1055 +#: src/slic3r/GUI/MainFrame.cpp:1067 msgid "Import &Config" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1055 +#: src/slic3r/GUI/MainFrame.cpp:1067 msgid "Load exported configuration file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1058 +#: src/slic3r/GUI/MainFrame.cpp:1070 msgid "Import Config from &project" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1058 +#: src/slic3r/GUI/MainFrame.cpp:1070 msgid "Load configuration from project file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1062 +#: src/slic3r/GUI/MainFrame.cpp:1074 msgid "Import Config &Bundle" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1062 +#: src/slic3r/GUI/MainFrame.cpp:1074 msgid "Load presets from a bundle" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1065 +#: src/slic3r/GUI/MainFrame.cpp:1077 msgid "&Import" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1068 src/slic3r/GUI/MainFrame.cpp:1448 +#: src/slic3r/GUI/MainFrame.cpp:1080 src/slic3r/GUI/MainFrame.cpp:1460 msgid "Export &G-code" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1068 +#: src/slic3r/GUI/MainFrame.cpp:1080 msgid "Export current plate as G-code" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1072 src/slic3r/GUI/MainFrame.cpp:1449 +#: src/slic3r/GUI/MainFrame.cpp:1084 src/slic3r/GUI/MainFrame.cpp:1461 msgid "S&end G-code" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1072 +#: src/slic3r/GUI/MainFrame.cpp:1084 msgid "Send to print current plate as G-code" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1076 +#: src/slic3r/GUI/MainFrame.cpp:1088 msgid "Export G-code to SD card / Flash drive" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1076 +#: src/slic3r/GUI/MainFrame.cpp:1088 msgid "Export current plate as G-code to SD card / Flash drive" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1080 +#: src/slic3r/GUI/MainFrame.cpp:1092 msgid "Export plate as &STL" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1080 +#: src/slic3r/GUI/MainFrame.cpp:1092 msgid "Export current plate as STL" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1083 +#: src/slic3r/GUI/MainFrame.cpp:1095 msgid "Export plate as STL &including supports" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1083 +#: src/slic3r/GUI/MainFrame.cpp:1095 msgid "Export current plate as STL including supports" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1086 +#: src/slic3r/GUI/MainFrame.cpp:1098 msgid "Export plate as &AMF" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1086 +#: src/slic3r/GUI/MainFrame.cpp:1098 msgid "Export current plate as AMF" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1090 src/slic3r/GUI/MainFrame.cpp:1395 +#: src/slic3r/GUI/MainFrame.cpp:1102 src/slic3r/GUI/MainFrame.cpp:1407 msgid "Export &toolpaths as OBJ" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1090 src/slic3r/GUI/MainFrame.cpp:1395 +#: src/slic3r/GUI/MainFrame.cpp:1102 src/slic3r/GUI/MainFrame.cpp:1407 msgid "Export toolpaths as OBJ" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1094 +#: src/slic3r/GUI/MainFrame.cpp:1106 msgid "Export &Config" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1094 +#: src/slic3r/GUI/MainFrame.cpp:1106 msgid "Export current configuration to file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1097 +#: src/slic3r/GUI/MainFrame.cpp:1109 msgid "Export Config &Bundle" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1097 +#: src/slic3r/GUI/MainFrame.cpp:1109 msgid "Export all presets to file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1100 +#: src/slic3r/GUI/MainFrame.cpp:1112 msgid "Export Config Bundle With Physical Printers" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1100 +#: src/slic3r/GUI/MainFrame.cpp:1112 msgid "Export all presets including physical printers to file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1103 +#: src/slic3r/GUI/MainFrame.cpp:1115 msgid "&Export" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1105 +#: src/slic3r/GUI/MainFrame.cpp:1117 msgid "Ejec&t SD card / Flash drive" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1105 +#: src/slic3r/GUI/MainFrame.cpp:1117 msgid "Eject SD card / Flash drive after the G-code was exported to it." msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1113 +#: src/slic3r/GUI/MainFrame.cpp:1125 msgid "Quick Slice" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1113 +#: src/slic3r/GUI/MainFrame.cpp:1125 msgid "Slice a file into a G-code" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1119 +#: src/slic3r/GUI/MainFrame.cpp:1131 msgid "Quick Slice and Save As" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1119 +#: src/slic3r/GUI/MainFrame.cpp:1131 msgid "Slice a file into a G-code, save as" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1125 +#: src/slic3r/GUI/MainFrame.cpp:1137 msgid "Repeat Last Quick Slice" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1125 +#: src/slic3r/GUI/MainFrame.cpp:1137 msgid "Repeat last quick slice" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1133 +#: src/slic3r/GUI/MainFrame.cpp:1145 msgid "(Re)Slice No&w" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1133 +#: src/slic3r/GUI/MainFrame.cpp:1145 msgid "Start new slicing process" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1137 +#: src/slic3r/GUI/MainFrame.cpp:1149 msgid "&Repair STL file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1137 +#: src/slic3r/GUI/MainFrame.cpp:1149 msgid "Automatically repair an STL file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1141 +#: src/slic3r/GUI/MainFrame.cpp:1153 msgid "&G-code preview" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1144 src/slic3r/GUI/MainFrame.cpp:1402 +#: src/slic3r/GUI/MainFrame.cpp:1156 src/slic3r/GUI/MainFrame.cpp:1414 msgid "&Quit" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1144 src/slic3r/GUI/MainFrame.cpp:1402 +#: src/slic3r/GUI/MainFrame.cpp:1156 src/slic3r/GUI/MainFrame.cpp:1414 #, possible-c-format msgid "Quit %s" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1171 +#: src/slic3r/GUI/MainFrame.cpp:1183 msgid "&Select all" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1172 +#: src/slic3r/GUI/MainFrame.cpp:1184 msgid "Selects all objects" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1174 +#: src/slic3r/GUI/MainFrame.cpp:1186 msgid "D&eselect all" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1175 +#: src/slic3r/GUI/MainFrame.cpp:1187 msgid "Deselects all objects" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1178 +#: src/slic3r/GUI/MainFrame.cpp:1190 msgid "&Delete selected" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1179 +#: src/slic3r/GUI/MainFrame.cpp:1191 msgid "Deletes the current selection" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1181 +#: src/slic3r/GUI/MainFrame.cpp:1193 msgid "Delete &all" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1182 +#: src/slic3r/GUI/MainFrame.cpp:1194 msgid "Deletes all objects" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1186 +#: src/slic3r/GUI/MainFrame.cpp:1198 msgid "&Undo" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1189 +#: src/slic3r/GUI/MainFrame.cpp:1201 msgid "&Redo" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1194 +#: src/slic3r/GUI/MainFrame.cpp:1206 msgid "&Copy" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1195 +#: src/slic3r/GUI/MainFrame.cpp:1207 msgid "Copy selection to clipboard" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1197 +#: src/slic3r/GUI/MainFrame.cpp:1209 msgid "&Paste" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1198 +#: src/slic3r/GUI/MainFrame.cpp:1210 msgid "Paste clipboard" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1202 +#: src/slic3r/GUI/MainFrame.cpp:1214 msgid "Re&load from disk" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1203 +#: src/slic3r/GUI/MainFrame.cpp:1215 msgid "Reload the plater from disk" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1207 +#: src/slic3r/GUI/MainFrame.cpp:1219 msgid "Searc&h" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1208 -msgid "Find option" +#: src/slic3r/GUI/MainFrame.cpp:1220 +msgid "Search in settings" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1216 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "&Plater Tab" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1216 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Show the plater" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1221 +#: src/slic3r/GUI/MainFrame.cpp:1233 msgid "P&rint Settings Tab" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1221 +#: src/slic3r/GUI/MainFrame.cpp:1233 msgid "Show the print settings" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1224 src/slic3r/GUI/MainFrame.cpp:1451 +#: src/slic3r/GUI/MainFrame.cpp:1236 src/slic3r/GUI/MainFrame.cpp:1463 msgid "&Filament Settings Tab" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1224 +#: src/slic3r/GUI/MainFrame.cpp:1236 msgid "Show the filament settings" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1228 +#: src/slic3r/GUI/MainFrame.cpp:1240 msgid "Print&er Settings Tab" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1228 +#: src/slic3r/GUI/MainFrame.cpp:1240 msgid "Show the printer settings" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1234 +#: src/slic3r/GUI/MainFrame.cpp:1246 msgid "3&D" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1234 +#: src/slic3r/GUI/MainFrame.cpp:1246 msgid "Show the 3D editing view" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1237 +#: src/slic3r/GUI/MainFrame.cpp:1249 msgid "Pre&view" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1237 +#: src/slic3r/GUI/MainFrame.cpp:1249 msgid "Show the 3D slices preview" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1258 +#: src/slic3r/GUI/MainFrame.cpp:1270 msgid "Print &Host Upload Queue" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1258 +#: src/slic3r/GUI/MainFrame.cpp:1270 msgid "Display the Print Host Upload Queue window" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1294 +#: src/slic3r/GUI/MainFrame.cpp:1306 msgid "Show &labels" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1294 +#: src/slic3r/GUI/MainFrame.cpp:1306 msgid "Show object/instance labels in 3D scene" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1297 +#: src/slic3r/GUI/MainFrame.cpp:1309 msgid "&Collapse sidebar" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1297 src/slic3r/GUI/Plater.cpp:2144 +#: src/slic3r/GUI/MainFrame.cpp:1309 src/slic3r/GUI/Plater.cpp:2235 msgid "Collapse sidebar" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1347 src/slic3r/GUI/MainFrame.cpp:1357 -#: src/slic3r/GUI/MainFrame.cpp:1417 +#: src/slic3r/GUI/MainFrame.cpp:1359 src/slic3r/GUI/MainFrame.cpp:1369 +#: src/slic3r/GUI/MainFrame.cpp:1429 msgid "&File" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1348 src/slic3r/GUI/MainFrame.cpp:1358 +#: src/slic3r/GUI/MainFrame.cpp:1360 src/slic3r/GUI/MainFrame.cpp:1370 msgid "&Edit" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1349 src/slic3r/GUI/MainFrame.cpp:1359 +#: src/slic3r/GUI/MainFrame.cpp:1361 src/slic3r/GUI/MainFrame.cpp:1371 msgid "&Window" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1350 src/slic3r/GUI/MainFrame.cpp:1360 -#: src/slic3r/GUI/MainFrame.cpp:1418 +#: src/slic3r/GUI/MainFrame.cpp:1362 src/slic3r/GUI/MainFrame.cpp:1372 +#: src/slic3r/GUI/MainFrame.cpp:1430 msgid "&View" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1353 src/slic3r/GUI/MainFrame.cpp:1363 -#: src/slic3r/GUI/MainFrame.cpp:1423 +#: src/slic3r/GUI/MainFrame.cpp:1365 src/slic3r/GUI/MainFrame.cpp:1375 +#: src/slic3r/GUI/MainFrame.cpp:1435 msgid "&Help" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1391 +#: src/slic3r/GUI/MainFrame.cpp:1403 msgid "&Open G-code" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1391 +#: src/slic3r/GUI/MainFrame.cpp:1403 msgid "Open a G-code file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1398 +#: src/slic3r/GUI/MainFrame.cpp:1410 msgid "Open &PrusaSlicer" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1448 +#: src/slic3r/GUI/MainFrame.cpp:1460 msgid "E&xport" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1449 +#: src/slic3r/GUI/MainFrame.cpp:1461 msgid "S&end to print" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1451 +#: src/slic3r/GUI/MainFrame.cpp:1463 msgid "Mate&rial Settings Tab" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1474 +#: src/slic3r/GUI/MainFrame.cpp:1486 msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1485 +#: src/slic3r/GUI/MainFrame.cpp:1497 msgid "No previously sliced file." msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1491 +#: src/slic3r/GUI/MainFrame.cpp:1503 msgid "Previously sliced file (" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1491 +#: src/slic3r/GUI/MainFrame.cpp:1503 msgid ") not found." msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1492 +#: src/slic3r/GUI/MainFrame.cpp:1504 msgid "File Not Found" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1527 +#: src/slic3r/GUI/MainFrame.cpp:1539 #, possible-c-format msgid "Save %s file as:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1527 +#: src/slic3r/GUI/MainFrame.cpp:1539 msgid "SVG" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1527 +#: src/slic3r/GUI/MainFrame.cpp:1539 msgid "G-code" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1539 +#: src/slic3r/GUI/MainFrame.cpp:1551 msgid "Save zip file as:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1548 src/slic3r/GUI/Plater.cpp:2921 -#: src/slic3r/GUI/Plater.cpp:5234 src/slic3r/GUI/Tab.cpp:1551 -#: src/slic3r/GUI/Tab.cpp:4081 +#: src/slic3r/GUI/MainFrame.cpp:1560 src/slic3r/GUI/Plater.cpp:3013 +#: src/slic3r/GUI/Plater.cpp:5350 src/slic3r/GUI/Tab.cpp:1561 +#: src/slic3r/GUI/Tab.cpp:4078 msgid "Slicing" msgstr "" #. TRN "Processing input_file_basename" -#: src/slic3r/GUI/MainFrame.cpp:1550 +#: src/slic3r/GUI/MainFrame.cpp:1562 #, possible-c-format msgid "Processing %s" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1573 -msgid " was successfully sliced." +#: src/slic3r/GUI/MainFrame.cpp:1585 +msgid "%1% was successfully sliced." msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1575 +#: src/slic3r/GUI/MainFrame.cpp:1587 msgid "Slicing Done!" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1590 +#: src/slic3r/GUI/MainFrame.cpp:1602 msgid "Select the STL file to repair:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1600 +#: src/slic3r/GUI/MainFrame.cpp:1612 msgid "Save OBJ file (less prone to coordinate errors than STL) as:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1612 +#: src/slic3r/GUI/MainFrame.cpp:1624 msgid "Your file was repaired." msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1612 src/libslic3r/PrintConfig.cpp:3646 +#: src/slic3r/GUI/MainFrame.cpp:1624 src/libslic3r/PrintConfig.cpp:3638 msgid "Repair" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1626 +#: src/slic3r/GUI/MainFrame.cpp:1638 msgid "Save configuration as:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1645 src/slic3r/GUI/MainFrame.cpp:1707 +#: src/slic3r/GUI/MainFrame.cpp:1657 src/slic3r/GUI/MainFrame.cpp:1719 msgid "Select configuration to load:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1681 +#: src/slic3r/GUI/MainFrame.cpp:1693 msgid "Save presets bundle as:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1728 +#: src/slic3r/GUI/MainFrame.cpp:1740 #, possible-c-format msgid "%d presets successfully imported." msgstr "" -#: src/slic3r/GUI/Mouse3DController.cpp:263 +#: src/slic3r/GUI/Mouse3DController.cpp:462 msgid "3Dconnexion settings" msgstr "" -#: src/slic3r/GUI/Mouse3DController.cpp:274 +#: src/slic3r/GUI/Mouse3DController.cpp:473 msgid "Device:" msgstr "" -#: src/slic3r/GUI/Mouse3DController.cpp:279 +#: src/slic3r/GUI/Mouse3DController.cpp:478 msgid "Speed:" msgstr "" -#: src/slic3r/GUI/Mouse3DController.cpp:282 -#: src/slic3r/GUI/Mouse3DController.cpp:303 +#: src/slic3r/GUI/Mouse3DController.cpp:481 +#: src/slic3r/GUI/Mouse3DController.cpp:502 msgid "Translation" msgstr "" -#: src/slic3r/GUI/Mouse3DController.cpp:294 -#: src/slic3r/GUI/Mouse3DController.cpp:303 +#: src/slic3r/GUI/Mouse3DController.cpp:493 +#: src/slic3r/GUI/Mouse3DController.cpp:502 msgid "Zoom" msgstr "" -#: src/slic3r/GUI/Mouse3DController.cpp:300 +#: src/slic3r/GUI/Mouse3DController.cpp:499 msgid "Deadzone:" msgstr "" -#: src/slic3r/GUI/Mouse3DController.cpp:315 +#: src/slic3r/GUI/Mouse3DController.cpp:514 msgid "Options:" msgstr "" -#: src/slic3r/GUI/Mouse3DController.cpp:318 +#: src/slic3r/GUI/Mouse3DController.cpp:517 msgid "Swap Y/Z axes" msgstr "" @@ -4719,72 +4766,76 @@ msgstr "" msgid "%s has encountered an error" msgstr "" -#: src/slic3r/GUI/NotificationManager.hpp:317 -msgid "Exporting finished." -msgstr "" - -#: src/slic3r/GUI/NotificationManager.hpp:317 -msgid "Eject drive." -msgstr "" - -#: src/slic3r/GUI/NotificationManager.hpp:318 +#: src/slic3r/GUI/NotificationManager.hpp:395 msgid "3D Mouse disconnected." msgstr "" -#: src/slic3r/GUI/NotificationManager.hpp:321 +#: src/slic3r/GUI/NotificationManager.hpp:398 msgid "Configuration update is available." msgstr "" -#: src/slic3r/GUI/NotificationManager.hpp:321 +#: src/slic3r/GUI/NotificationManager.hpp:398 msgid "See more." msgstr "" -#: src/slic3r/GUI/NotificationManager.hpp:322 +#: src/slic3r/GUI/NotificationManager.hpp:400 msgid "New version is available." msgstr "" -#: src/slic3r/GUI/NotificationManager.hpp:322 +#: src/slic3r/GUI/NotificationManager.hpp:400 msgid "See Releases page." msgstr "" -#: src/slic3r/GUI/NotificationManager.cpp:305 -#: src/slic3r/GUI/NotificationManager.cpp:315 +#: src/slic3r/GUI/NotificationManager.cpp:387 +#: src/slic3r/GUI/NotificationManager.cpp:397 msgid "More" msgstr "" -#: src/slic3r/GUI/NotificationManager.cpp:631 -#: src/slic3r/GUI/NotificationManager.cpp:748 +#: src/slic3r/GUI/NotificationManager.cpp:690 +#: src/slic3r/GUI/NotificationManager.cpp:961 msgid "Export G-Code." msgstr "" -#: src/slic3r/GUI/NotificationManager.cpp:667 -#: src/slic3r/GUI/NotificationManager.cpp:683 -#: src/slic3r/GUI/NotificationManager.cpp:694 +#: src/slic3r/GUI/NotificationManager.cpp:734 +msgid "Open Folder." +msgstr "" + +#: src/slic3r/GUI/NotificationManager.cpp:772 +msgid "Eject drive" +msgstr "" + +#: src/slic3r/GUI/NotificationManager.cpp:880 +#: src/slic3r/GUI/NotificationManager.cpp:896 +#: src/slic3r/GUI/NotificationManager.cpp:907 msgid "ERROR:" msgstr "" -#: src/slic3r/GUI/NotificationManager.cpp:672 -#: src/slic3r/GUI/NotificationManager.cpp:687 -#: src/slic3r/GUI/NotificationManager.cpp:702 +#: src/slic3r/GUI/NotificationManager.cpp:885 +#: src/slic3r/GUI/NotificationManager.cpp:900 +#: src/slic3r/GUI/NotificationManager.cpp:915 msgid "WARNING:" msgstr "" -#: src/slic3r/GUI/NotificationManager.cpp:751 +#: src/slic3r/GUI/NotificationManager.cpp:964 msgid "Slicing finished." msgstr "" +#: src/slic3r/GUI/NotificationManager.cpp:1007 +msgid "Exporting finished." +msgstr "" + #: src/slic3r/GUI/ObjectDataViewModel.cpp:58 msgid "Instances" msgstr "" #: src/slic3r/GUI/ObjectDataViewModel.cpp:62 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:218 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:225 #, possible-c-format msgid "Instance %d" msgstr "" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:69 src/slic3r/GUI/Tab.cpp:3928 -#: src/slic3r/GUI/Tab.cpp:4010 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:69 src/slic3r/GUI/Tab.cpp:3925 +#: src/slic3r/GUI/Tab.cpp:4007 msgid "Layers" msgstr "" @@ -4824,702 +4875,726 @@ msgstr "" msgid "Error loading shaders" msgstr "" -#: src/slic3r/GUI/OptionsGroup.cpp:293 +#: src/slic3r/GUI/OptionsGroup.cpp:328 msgctxt "Layers" msgid "Top" msgstr "" -#: src/slic3r/GUI/OptionsGroup.cpp:293 +#: src/slic3r/GUI/OptionsGroup.cpp:328 msgctxt "Layers" msgid "Bottom" msgstr "" -#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:55 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:51 msgid "Delete this preset from this printer device" msgstr "" -#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:85 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:81 msgid "This printer will be shown in the presets list as" msgstr "" -#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:159 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:155 msgid "Physical Printer" msgstr "" -#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:165 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:161 msgid "Type here the name of your printer device" msgstr "" -#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:176 -msgid "Descriptive name for the printer device" +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:172 +msgid "Descriptive name for the printer" msgstr "" -#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:180 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:176 msgid "Add preset for this printer device" msgstr "" -#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:209 src/slic3r/GUI/Tab.cpp:2024 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:205 src/slic3r/GUI/Tab.cpp:2037 msgid "Print Host upload" msgstr "" -#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:284 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:260 +msgid "Connection to printers connected via the print host failed." +msgstr "" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:302 msgid "Test" msgstr "" -#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:289 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:307 msgid "Could not get a valid Printer Host reference" msgstr "" -#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:295 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:319 msgid "Success!" msgstr "" -#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:319 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:329 +msgid "Refresh Printers" +msgstr "" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:356 msgid "" "HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" "signed certificate." msgstr "" -#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:329 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:366 msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" msgstr "" -#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:330 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:367 msgid "Open CA certificate file" msgstr "" -#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:358 -#: src/libslic3r/PrintConfig.cpp:113 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:395 +#: src/libslic3r/PrintConfig.cpp:120 msgid "HTTPS CA File" msgstr "" -#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:359 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:396 #, possible-c-format msgid "" "On this system, %s uses HTTPS certificates from the system Certificate Store " "or Keychain." msgstr "" -#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:360 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:397 msgid "" "To use a custom CA file, please import your CA file into Certificate Store / " "Keychain." msgstr "" -#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:464 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:543 msgid "The supplied name is empty. It can't be saved." msgstr "" -#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:468 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:547 msgid "You should to change a name of your printer device. It can't be saved." msgstr "" -#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:476 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:555 msgid "Printer with name \"%1%\" already exists." msgstr "" -#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:477 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:556 msgid "Replace?" msgstr "" -#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:500 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:579 msgid "" -"Next printer preset(s) is(are) duplicated:%1%Should I add it(they) just once " -"for the printer \"%2%\" and close the Editing Dialog?" +"Following printer preset(s) is duplicated:%1%The above preset for printer " +"\"%2%\" will be used just once." msgstr "" -#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:546 -msgid "It's not possible to delete last related preset for the printer." +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:625 +msgid "It's not possible to delete the last related preset for the printer." msgstr "" -#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:547 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:626 msgid "Infornation" msgstr "" -#: src/slic3r/GUI/Plater.cpp:167 +#: src/slic3r/GUI/Plater.cpp:162 msgid "Volume" msgstr "" -#: src/slic3r/GUI/Plater.cpp:168 +#: src/slic3r/GUI/Plater.cpp:163 msgid "Facets" msgstr "" -#: src/slic3r/GUI/Plater.cpp:169 +#: src/slic3r/GUI/Plater.cpp:164 msgid "Materials" msgstr "" -#: src/slic3r/GUI/Plater.cpp:172 +#: src/slic3r/GUI/Plater.cpp:167 msgid "Manifold" msgstr "" -#: src/slic3r/GUI/Plater.cpp:222 +#: src/slic3r/GUI/Plater.cpp:217 msgid "Sliced Info" msgstr "" -#: src/slic3r/GUI/Plater.cpp:241 src/slic3r/GUI/Plater.cpp:1141 +#: src/slic3r/GUI/Plater.cpp:236 src/slic3r/GUI/Plater.cpp:1143 msgid "Used Filament (m)" msgstr "" -#: src/slic3r/GUI/Plater.cpp:242 src/slic3r/GUI/Plater.cpp:1153 +#: src/slic3r/GUI/Plater.cpp:237 src/slic3r/GUI/Plater.cpp:1155 msgid "Used Filament (mm³)" msgstr "" -#: src/slic3r/GUI/Plater.cpp:243 +#: src/slic3r/GUI/Plater.cpp:238 msgid "Used Filament (g)" msgstr "" -#: src/slic3r/GUI/Plater.cpp:244 +#: src/slic3r/GUI/Plater.cpp:239 msgid "Used Material (unit)" msgstr "" -#: src/slic3r/GUI/Plater.cpp:245 +#: src/slic3r/GUI/Plater.cpp:240 msgid "Cost (money)" msgstr "" -#: src/slic3r/GUI/Plater.cpp:247 +#: src/slic3r/GUI/Plater.cpp:242 msgid "Number of tool changes" msgstr "" -#: src/slic3r/GUI/Plater.cpp:364 +#: src/slic3r/GUI/Plater.cpp:359 msgid "Select what kind of support do you need" msgstr "" -#: src/slic3r/GUI/Plater.cpp:366 src/libslic3r/PrintConfig.cpp:2043 -#: src/libslic3r/PrintConfig.cpp:2838 +#: src/slic3r/GUI/Plater.cpp:361 src/libslic3r/PrintConfig.cpp:2034 +#: src/libslic3r/PrintConfig.cpp:2829 msgid "Support on build plate only" msgstr "" -#: src/slic3r/GUI/Plater.cpp:367 src/slic3r/GUI/Plater.cpp:490 +#: src/slic3r/GUI/Plater.cpp:362 src/slic3r/GUI/Plater.cpp:485 msgid "For support enforcers only" msgstr "" -#: src/slic3r/GUI/Plater.cpp:368 +#: src/slic3r/GUI/Plater.cpp:363 msgid "Everywhere" msgstr "" -#: src/slic3r/GUI/Plater.cpp:400 src/slic3r/GUI/Tab.cpp:1446 +#: src/slic3r/GUI/Plater.cpp:395 src/slic3r/GUI/Tab.cpp:1455 msgid "Brim" msgstr "" -#: src/slic3r/GUI/Plater.cpp:402 +#: src/slic3r/GUI/Plater.cpp:397 msgid "" "This flag enables the brim that will be printed around each object on the " "first layer." msgstr "" -#: src/slic3r/GUI/Plater.cpp:410 +#: src/slic3r/GUI/Plater.cpp:405 msgid "Purging volumes" msgstr "" -#: src/slic3r/GUI/Plater.cpp:504 +#: src/slic3r/GUI/Plater.cpp:499 msgid "Select what kind of pad do you need" msgstr "" -#: src/slic3r/GUI/Plater.cpp:506 +#: src/slic3r/GUI/Plater.cpp:501 msgid "Below object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:507 +#: src/slic3r/GUI/Plater.cpp:502 msgid "Around object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:690 -msgid "Print settings" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:691 src/slic3r/GUI/Tab.cpp:1770 -#: src/slic3r/GUI/Tab.cpp:1771 -msgid "Filament" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:692 +#: src/slic3r/GUI/Plater.cpp:687 msgid "SLA print settings" msgstr "" -#: src/slic3r/GUI/Plater.cpp:693 src/libslic3r/Preset.cpp:1303 -msgid "SLA material" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:694 -msgid "Printer" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:753 src/slic3r/GUI/Plater.cpp:5707 +#: src/slic3r/GUI/Plater.cpp:748 src/slic3r/GUI/Plater.cpp:5850 msgid "Send to printer" msgstr "" -#: src/slic3r/GUI/Plater.cpp:754 -msgid "Remove device" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:767 src/slic3r/GUI/Plater.cpp:2921 -#: src/slic3r/GUI/Plater.cpp:5237 +#: src/slic3r/GUI/Plater.cpp:763 src/slic3r/GUI/Plater.cpp:3013 +#: src/slic3r/GUI/Plater.cpp:5353 msgid "Slice now" msgstr "" -#: src/slic3r/GUI/Plater.cpp:916 +#: src/slic3r/GUI/Plater.cpp:918 msgid "Hold Shift to Slice & Export G-code" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1061 +#: src/slic3r/GUI/Plater.cpp:1063 #, possible-c-format msgid "%d (%d shells)" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1066 +#: src/slic3r/GUI/Plater.cpp:1068 #, possible-c-format msgid "Auto-repaired (%d errors)" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1069 +#: src/slic3r/GUI/Plater.cpp:1071 #, possible-c-format msgid "" "%d degenerate facets, %d edges fixed, %d facets removed, %d facets added, %d " "facets reversed, %d backwards edges" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1079 +#: src/slic3r/GUI/Plater.cpp:1081 msgid "Yes" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1100 +#: src/slic3r/GUI/Plater.cpp:1102 msgid "Used Material (ml)" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1103 +#: src/slic3r/GUI/Plater.cpp:1105 msgid "object(s)" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1103 +#: src/slic3r/GUI/Plater.cpp:1105 msgid "supports and pad" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1141 +#: src/slic3r/GUI/Plater.cpp:1143 msgid "Used Filament (in)" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1143 src/slic3r/GUI/Plater.cpp:1160 +#: src/slic3r/GUI/Plater.cpp:1145 src/slic3r/GUI/Plater.cpp:1162 msgid "objects" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1143 src/slic3r/GUI/Plater.cpp:1160 +#: src/slic3r/GUI/Plater.cpp:1145 src/slic3r/GUI/Plater.cpp:1162 msgid "wipe tower" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1153 +#: src/slic3r/GUI/Plater.cpp:1155 msgid "Used Filament (in³)" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1158 src/libslic3r/PrintConfig.cpp:796 -#: src/libslic3r/PrintConfig.cpp:2653 src/libslic3r/PrintConfig.cpp:2654 +#: src/slic3r/GUI/Plater.cpp:1160 src/libslic3r/PrintConfig.cpp:803 +#: src/libslic3r/PrintConfig.cpp:2644 src/libslic3r/PrintConfig.cpp:2645 msgid "Cost" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1177 src/slic3r/GUI/Plater.cpp:1224 +#: src/slic3r/GUI/Plater.cpp:1179 src/slic3r/GUI/Plater.cpp:1226 msgid "normal mode" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1187 src/slic3r/GUI/Plater.cpp:1235 +#: src/slic3r/GUI/Plater.cpp:1189 src/slic3r/GUI/Plater.cpp:1237 msgid "stealth mode" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1198 src/libslic3r/PrintConfig.cpp:618 +#: src/slic3r/GUI/Plater.cpp:1200 src/libslic3r/PrintConfig.cpp:625 msgid "Color" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1405 +#: src/slic3r/GUI/Plater.cpp:1410 +#, possible-c-format +msgid "%s - Drop project file" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:1417 +msgid "Open as project" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:1418 +msgid "Import geometry only" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:1419 +msgid "Import config only" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:1422 +msgid "Select an action to apply to the file" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:1423 +msgid "Action" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:1431 +msgid "Don't show again" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:1471 msgid "You can open only one .gcode file at a time." msgstr "" -#: src/slic3r/GUI/Plater.cpp:1406 +#: src/slic3r/GUI/Plater.cpp:1472 msgid "Drag and drop G-code file" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1436 -msgid "Load File" +#: src/slic3r/GUI/Plater.cpp:1528 src/slic3r/GUI/Plater.cpp:4753 +msgid "Import Object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1440 -msgid "Load Files" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1555 +#: src/slic3r/GUI/Plater.cpp:1639 msgid "Optimize Rotation" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1561 +#: src/slic3r/GUI/Plater.cpp:1645 msgid "Import SLA archive" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2031 +#: src/slic3r/GUI/Plater.cpp:2123 #, possible-c-format msgid "" -"Unmounting successful. The device %s(%s) can now be safely removed from the " +"Successfully unmounted. The device %s(%s) can now be safely removed from the " "computer." msgstr "" -#: src/slic3r/GUI/Plater.cpp:2034 +#: src/slic3r/GUI/Plater.cpp:2126 #, possible-c-format msgid "Ejecting of device %s(%s) has failed." msgstr "" -#: src/slic3r/GUI/Plater.cpp:2056 +#: src/slic3r/GUI/Plater.cpp:2147 msgid "New Project" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2143 +#: src/slic3r/GUI/Plater.cpp:2234 msgid "Expand sidebar" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2216 +#: src/slic3r/GUI/Plater.cpp:2307 msgid "Loading" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2226 +#: src/slic3r/GUI/Plater.cpp:2317 msgid "Loading file" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2309 +#: src/slic3r/GUI/Plater.cpp:2400 #, 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:2311 -msgid "Saved in inches object detected" +#: src/slic3r/GUI/Plater.cpp:2402 +msgid "The object appears to be saved in inches" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2319 +#: src/slic3r/GUI/Plater.cpp:2410 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:2322 src/slic3r/GUI/Plater.cpp:2375 +#: src/slic3r/GUI/Plater.cpp:2413 src/slic3r/GUI/Plater.cpp:2466 msgid "Multi-part object detected" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2329 +#: src/slic3r/GUI/Plater.cpp:2420 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:2330 +#: src/slic3r/GUI/Plater.cpp:2421 msgid "Detected advanced data" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2352 +#: src/slic3r/GUI/Plater.cpp:2443 #, 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:2372 +#: src/slic3r/GUI/Plater.cpp:2463 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:2388 +#: src/slic3r/GUI/Plater.cpp:2479 msgid "Loaded" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2490 +#: src/slic3r/GUI/Plater.cpp:2581 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:2491 +#: src/slic3r/GUI/Plater.cpp:2582 msgid "Object too large?" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2553 +#: src/slic3r/GUI/Plater.cpp:2644 msgid "Export STL file:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2560 +#: src/slic3r/GUI/Plater.cpp:2651 msgid "Export AMF file:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2566 +#: src/slic3r/GUI/Plater.cpp:2657 msgid "Save file as:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2572 +#: src/slic3r/GUI/Plater.cpp:2663 msgid "Export OBJ file:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2673 +#: src/slic3r/GUI/Plater.cpp:2764 msgid "Delete Object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2684 +#: src/slic3r/GUI/Plater.cpp:2775 msgid "Reset Project" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2763 +#: src/slic3r/GUI/Plater.cpp:2854 msgid "" "The selected object can't be split because it contains more than one volume/" "material." msgstr "" -#: src/slic3r/GUI/Plater.cpp:2774 +#: src/slic3r/GUI/Plater.cpp:2865 msgid "Split to Objects" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2906 src/slic3r/GUI/Plater.cpp:3583 +#: src/slic3r/GUI/Plater.cpp:2997 src/slic3r/GUI/Plater.cpp:3680 msgid "Invalid data" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2915 +#: src/slic3r/GUI/Plater.cpp:3007 msgid "Ready to slice" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2953 src/slic3r/GUI/PrintHostDialogs.cpp:232 +#: src/slic3r/GUI/Plater.cpp:3045 src/slic3r/GUI/PrintHostDialogs.cpp:260 msgid "Cancelling" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2972 +#: src/slic3r/GUI/Plater.cpp:3064 msgid "Another export job is currently running." msgstr "" -#: src/slic3r/GUI/Plater.cpp:3089 +#: src/slic3r/GUI/Plater.cpp:3181 msgid "Please select the file to reload" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3124 +#: src/slic3r/GUI/Plater.cpp:3216 msgid "It is not allowed to change the file to reload" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3124 +#: src/slic3r/GUI/Plater.cpp:3216 msgid "Do you want to retry" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3142 +#: src/slic3r/GUI/Plater.cpp:3234 msgid "Reload from:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3233 +#: src/slic3r/GUI/Plater.cpp:3325 msgid "Unable to reload:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3238 +#: src/slic3r/GUI/Plater.cpp:3330 msgid "Error during reload" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3257 +#: src/slic3r/GUI/Plater.cpp:3349 msgid "Reload all from disk" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3278 +#: src/slic3r/GUI/Plater.cpp:3370 msgid "Fix Throught NetFabb" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3543 -msgid "There are active warnings concerning sliced models:\n" +#: src/slic3r/GUI/Plater.cpp:3638 +msgid "There are active warnings concerning sliced models:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3554 +#: src/slic3r/GUI/Plater.cpp:3649 msgid "generated warnings" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3589 src/slic3r/GUI/PrintHostDialogs.cpp:233 +#: src/slic3r/GUI/Plater.cpp:3688 src/slic3r/GUI/PrintHostDialogs.cpp:261 msgid "Cancelled" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3849 src/slic3r/GUI/Plater.cpp:3871 +#: src/slic3r/GUI/Plater.cpp:3950 src/slic3r/GUI/Plater.cpp:3972 msgid "Remove the selected object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3858 +#: src/slic3r/GUI/Plater.cpp:3959 msgid "Add one more instance of the selected object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3860 +#: src/slic3r/GUI/Plater.cpp:3961 msgid "Remove one instance of the selected object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3862 +#: src/slic3r/GUI/Plater.cpp:3963 msgid "Set number of instances" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3862 +#: src/slic3r/GUI/Plater.cpp:3963 msgid "Change the number of instances of the selected object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3881 +#: src/slic3r/GUI/Plater.cpp:3982 msgid "Reload the selected object from disk" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3884 +#: src/slic3r/GUI/Plater.cpp:3985 msgid "Export the selected object as STL file" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3915 +#: src/slic3r/GUI/Plater.cpp:4016 msgid "Along X axis" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3915 +#: src/slic3r/GUI/Plater.cpp:4016 msgid "Mirror the selected object along the X axis" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3917 +#: src/slic3r/GUI/Plater.cpp:4018 msgid "Along Y axis" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3917 +#: src/slic3r/GUI/Plater.cpp:4018 msgid "Mirror the selected object along the Y axis" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3919 +#: src/slic3r/GUI/Plater.cpp:4020 msgid "Along Z axis" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3919 +#: src/slic3r/GUI/Plater.cpp:4020 msgid "Mirror the selected object along the Z axis" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3922 +#: src/slic3r/GUI/Plater.cpp:4023 msgid "Mirror" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3922 +#: src/slic3r/GUI/Plater.cpp:4023 msgid "Mirror the selected object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3934 +#: src/slic3r/GUI/Plater.cpp:4035 msgid "To objects" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3934 src/slic3r/GUI/Plater.cpp:3954 +#: src/slic3r/GUI/Plater.cpp:4035 src/slic3r/GUI/Plater.cpp:4055 msgid "Split the selected object into individual objects" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3936 +#: src/slic3r/GUI/Plater.cpp:4037 msgid "To parts" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3936 src/slic3r/GUI/Plater.cpp:3972 +#: src/slic3r/GUI/Plater.cpp:4037 src/slic3r/GUI/Plater.cpp:4073 msgid "Split the selected object into individual sub-parts" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3939 src/slic3r/GUI/Plater.cpp:3954 -#: src/slic3r/GUI/Plater.cpp:3972 src/libslic3r/PrintConfig.cpp:3670 +#: src/slic3r/GUI/Plater.cpp:4040 src/slic3r/GUI/Plater.cpp:4055 +#: src/slic3r/GUI/Plater.cpp:4073 src/libslic3r/PrintConfig.cpp:3662 msgid "Split" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3939 +#: src/slic3r/GUI/Plater.cpp:4040 msgid "Split the selected object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3962 +#: src/slic3r/GUI/Plater.cpp:4062 +msgid "Optimize orientation" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:4063 msgid "Optimize the rotation of the object for better print results." msgstr "" -#: src/slic3r/GUI/Plater.cpp:4044 +#: src/slic3r/GUI/Plater.cpp:4145 msgid "3D editor view" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4423 +#: src/slic3r/GUI/Plater.cpp:4521 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:4627 +#: src/slic3r/GUI/Plater.cpp:4725 msgid "Load Project" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4655 -msgid "Import Object" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:4659 +#: src/slic3r/GUI/Plater.cpp:4757 msgid "Import Objects" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4774 +#: src/slic3r/GUI/Plater.cpp:4827 +msgid "The selected file" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:4827 +msgid "does not contain valid gcode." +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:4828 +msgid "Error while loading .gcode file" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:4882 msgid "All objects will be removed, continue?" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4782 +#: src/slic3r/GUI/Plater.cpp:4890 msgid "Delete Selected Objects" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4790 +#: src/slic3r/GUI/Plater.cpp:4898 msgid "Increase Instances" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4824 +#: src/slic3r/GUI/Plater.cpp:4932 msgid "Decrease Instances" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4855 +#: src/slic3r/GUI/Plater.cpp:4963 msgid "Enter the number of copies:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4856 +#: src/slic3r/GUI/Plater.cpp:4964 msgid "Copies of the selected object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4860 +#: src/slic3r/GUI/Plater.cpp:4968 #, possible-c-format msgid "Set numbers of copies to %d" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4921 +#: src/slic3r/GUI/Plater.cpp:5029 msgid "Cut by Plane" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4975 +#: src/slic3r/GUI/Plater.cpp:5083 msgid "Save G-code file as:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4975 +#: src/slic3r/GUI/Plater.cpp:5083 msgid "Save SL1 file as:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:5118 +#: src/slic3r/GUI/Plater.cpp:5230 #, possible-c-format msgid "STL file exported to %s" msgstr "" -#: src/slic3r/GUI/Plater.cpp:5135 +#: src/slic3r/GUI/Plater.cpp:5247 #, possible-c-format msgid "AMF file exported to %s" msgstr "" -#: src/slic3r/GUI/Plater.cpp:5138 +#: src/slic3r/GUI/Plater.cpp:5250 #, possible-c-format msgid "Error exporting AMF file %s" msgstr "" -#: src/slic3r/GUI/Plater.cpp:5167 +#: src/slic3r/GUI/Plater.cpp:5279 #, possible-c-format msgid "3MF file exported to %s" msgstr "" -#: src/slic3r/GUI/Plater.cpp:5172 +#: src/slic3r/GUI/Plater.cpp:5284 #, possible-c-format msgid "Error exporting 3MF file %s" msgstr "" -#: src/slic3r/GUI/Plater.cpp:5706 +#: src/slic3r/GUI/Plater.cpp:5849 msgid "Export" msgstr "" -#: src/slic3r/GUI/Plater.cpp:5803 +#: src/slic3r/GUI/Plater.cpp:5946 msgid "Paste From Clipboard" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:24 src/slic3r/GUI/Tab.cpp:2058 -#: src/slic3r/GUI/Tab.cpp:2240 src/slic3r/GUI/Tab.cpp:2348 +#: src/slic3r/GUI/Preferences.cpp:24 src/slic3r/GUI/Tab.cpp:2071 +#: src/slic3r/GUI/Tab.cpp:2253 src/slic3r/GUI/Tab.cpp:2361 #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1066 msgid "General" msgstr "" @@ -5600,162 +5675,182 @@ msgid "" "even if they are marked as incompatible with the active printer" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:120 src/libslic3r/PrintConfig.cpp:3697 -msgid "Single Instance" +#: src/slic3r/GUI/Preferences.cpp:120 +msgid "Show drop project dialog" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:123 +#: src/slic3r/GUI/Preferences.cpp:122 +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:127 src/libslic3r/PrintConfig.cpp:3689 +msgid "Single instance mode" +msgstr "" + +#: src/slic3r/GUI/Preferences.cpp:130 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:125 +#: src/slic3r/GUI/Preferences.cpp:132 msgid "" -"If this is enabled, when staring PrusaSlicer and another instance of same " -"PrusaSlicer is running, that instance will be reactivated instead." +"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:135 +#: src/slic3r/GUI/Preferences.cpp:142 msgid "Use Retina resolution for the 3D scene" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:137 +#: src/slic3r/GUI/Preferences.cpp:144 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:154 +#: src/slic3r/GUI/Preferences.cpp:161 #: src/slic3r/GUI/UnsavedChangesDialog.cpp:659 msgid "Ask for unsaved changes when closing application" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:156 -msgid "Always ask for unsaved changes when closing application" +#: src/slic3r/GUI/Preferences.cpp:163 +msgid "When closing the application, always ask for unsaved changes" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:161 +#: src/slic3r/GUI/Preferences.cpp:168 #: src/slic3r/GUI/UnsavedChangesDialog.cpp:660 msgid "Ask for unsaved changes when selecting new preset" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:163 +#: src/slic3r/GUI/Preferences.cpp:170 msgid "Always ask for unsaved changes when selecting new preset" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:169 src/slic3r/GUI/Preferences.cpp:171 +#: src/slic3r/GUI/Preferences.cpp:176 src/slic3r/GUI/Preferences.cpp:178 msgid "Show splash screen" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:178 +#: src/slic3r/GUI/Preferences.cpp:185 msgid "Camera" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:184 +#: src/slic3r/GUI/Preferences.cpp:191 msgid "Use perspective camera" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:186 +#: src/slic3r/GUI/Preferences.cpp:193 msgid "" "If enabled, use perspective camera. If not enabled, use orthographic camera." msgstr "" -#: src/slic3r/GUI/Preferences.cpp:191 +#: src/slic3r/GUI/Preferences.cpp:198 msgid "Use free camera" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:193 +#: src/slic3r/GUI/Preferences.cpp:200 msgid "If enabled, use free camera. If not enabled, use constrained camera." msgstr "" -#: src/slic3r/GUI/Preferences.cpp:200 +#: src/slic3r/GUI/Preferences.cpp:205 +msgid "Reverse direction of zoom with mouse wheel" +msgstr "" + +#: src/slic3r/GUI/Preferences.cpp:207 +msgid "If enabled, reverses the direction of zoom with mouse wheel" +msgstr "" + +#: src/slic3r/GUI/Preferences.cpp:214 msgid "GUI" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:213 +#: src/slic3r/GUI/Preferences.cpp:227 msgid "Show sidebar collapse/expand button" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:215 +#: src/slic3r/GUI/Preferences.cpp:229 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:220 +#: src/slic3r/GUI/Preferences.cpp:234 msgid "Use custom size for toolbar icons" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:222 +#: src/slic3r/GUI/Preferences.cpp:236 msgid "If enabled, you can change size of toolbar icons manually." msgstr "" -#: src/slic3r/GUI/Preferences.cpp:230 +#: src/slic3r/GUI/Preferences.cpp:243 msgid "Sequential slider applied only to top layer" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:232 +#: src/slic3r/GUI/Preferences.cpp:245 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, " +"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:255 +#: src/slic3r/GUI/Preferences.cpp:269 msgid "Render" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:261 +#: src/slic3r/GUI/Preferences.cpp:275 msgid "Use environment map" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:263 +#: src/slic3r/GUI/Preferences.cpp:277 msgid "If enabled, renders object using the environment map." msgstr "" -#: src/slic3r/GUI/Preferences.cpp:299 +#: src/slic3r/GUI/Preferences.cpp:313 #, possible-c-format msgid "You need to restart %s to make the changes effective." msgstr "" -#: src/slic3r/GUI/Preferences.cpp:376 +#: src/slic3r/GUI/Preferences.cpp:390 msgid "Icon size in a respect to the default size" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:391 +#: src/slic3r/GUI/Preferences.cpp:405 msgid "Select toolbar icon size in respect to the default one." msgstr "" -#: src/slic3r/GUI/Preferences.cpp:422 +#: src/slic3r/GUI/Preferences.cpp:436 msgid "Old regular layout with the tab bar" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:423 -msgid "New layout without the tab bar on the plater" +#: src/slic3r/GUI/Preferences.cpp:437 +msgid "New layout, access via settings button in the top menu" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:424 -msgid "Settings will be shown in the non-modal dialog" +#: src/slic3r/GUI/Preferences.cpp:438 +msgid "Settings in non-modal window" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:433 -msgid "Settings layout mode" +#: src/slic3r/GUI/Preferences.cpp:447 +msgid "Layout Options" msgstr "" #: src/slic3r/GUI/PresetComboBoxes.cpp:188 #: src/slic3r/GUI/PresetComboBoxes.cpp:226 -#: src/slic3r/GUI/PresetComboBoxes.cpp:724 -#: src/slic3r/GUI/PresetComboBoxes.cpp:774 -#: src/slic3r/GUI/PresetComboBoxes.cpp:886 -#: src/slic3r/GUI/PresetComboBoxes.cpp:930 +#: src/slic3r/GUI/PresetComboBoxes.cpp:752 +#: src/slic3r/GUI/PresetComboBoxes.cpp:802 +#: src/slic3r/GUI/PresetComboBoxes.cpp:916 +#: src/slic3r/GUI/PresetComboBoxes.cpp:960 msgid "System presets" msgstr "" #: src/slic3r/GUI/PresetComboBoxes.cpp:230 -#: src/slic3r/GUI/PresetComboBoxes.cpp:778 -#: src/slic3r/GUI/PresetComboBoxes.cpp:934 +#: src/slic3r/GUI/PresetComboBoxes.cpp:806 +#: src/slic3r/GUI/PresetComboBoxes.cpp:964 msgid "User presets" msgstr "" @@ -5763,51 +5858,55 @@ msgstr "" msgid "Incompatible presets" msgstr "" -#: src/slic3r/GUI/PresetComboBoxes.cpp:566 -msgid "Click to edit preset" -msgstr "" - -#: src/slic3r/GUI/PresetComboBoxes.cpp:622 -#: src/slic3r/GUI/PresetComboBoxes.cpp:669 -msgid "Add/Remove presets" -msgstr "" - -#: src/slic3r/GUI/PresetComboBoxes.cpp:627 -#: src/slic3r/GUI/PresetComboBoxes.cpp:674 -msgid "Add physical printer" -msgstr "" - -#: src/slic3r/GUI/PresetComboBoxes.cpp:641 -msgid "Edit preset" -msgstr "" - -#: src/slic3r/GUI/PresetComboBoxes.cpp:645 -msgid "Edit physical printer" -msgstr "" - -#: src/slic3r/GUI/PresetComboBoxes.cpp:652 -msgid "Delete physical printer" -msgstr "" - -#: src/slic3r/GUI/PresetComboBoxes.cpp:658 +#: src/slic3r/GUI/PresetComboBoxes.cpp:276 msgid "Are you sure you want to delete \"%1%\" printer?" msgstr "" -#: src/slic3r/GUI/PresetComboBoxes.cpp:659 +#: src/slic3r/GUI/PresetComboBoxes.cpp:278 msgid "Delete Physical Printer" msgstr "" -#: src/slic3r/GUI/PresetComboBoxes.cpp:789 -#: src/slic3r/GUI/PresetComboBoxes.cpp:948 +#: src/slic3r/GUI/PresetComboBoxes.cpp:615 +msgid "Click to edit preset" +msgstr "" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:671 +#: src/slic3r/GUI/PresetComboBoxes.cpp:701 +msgid "Add/Remove presets" +msgstr "" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:676 +#: src/slic3r/GUI/PresetComboBoxes.cpp:706 src/slic3r/GUI/Tab.cpp:2958 +msgid "Add physical printer" +msgstr "" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:690 +msgid "Edit preset" +msgstr "" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:694 src/slic3r/GUI/Tab.cpp:2958 +msgid "Edit physical printer" +msgstr "" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:697 +msgid "Delete physical printer" +msgstr "" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:817 +#: src/slic3r/GUI/PresetComboBoxes.cpp:978 msgid "Physical printers" msgstr "" -#: src/slic3r/GUI/PresetComboBoxes.cpp:813 +#: src/slic3r/GUI/PresetComboBoxes.cpp:841 +msgid "Add/Remove filaments" +msgstr "" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:843 msgid "Add/Remove materials" msgstr "" -#: src/slic3r/GUI/PresetComboBoxes.cpp:815 -#: src/slic3r/GUI/PresetComboBoxes.cpp:972 +#: src/slic3r/GUI/PresetComboBoxes.cpp:845 +#: src/slic3r/GUI/PresetComboBoxes.cpp:1002 msgid "Add/Remove printers" msgstr "" @@ -5960,68 +6059,72 @@ msgstr "" msgid "Bottom is open." msgstr "" -#: src/slic3r/GUI/PrintHostDialogs.cpp:33 +#: src/slic3r/GUI/PrintHostDialogs.cpp:34 msgid "Send G-Code to printer host" msgstr "" -#: src/slic3r/GUI/PrintHostDialogs.cpp:33 +#: src/slic3r/GUI/PrintHostDialogs.cpp:34 msgid "Upload to Printer Host with the following filename:" msgstr "" -#: src/slic3r/GUI/PrintHostDialogs.cpp:35 +#: src/slic3r/GUI/PrintHostDialogs.cpp:36 msgid "Start printing after upload" msgstr "" -#: src/slic3r/GUI/PrintHostDialogs.cpp:42 +#: src/slic3r/GUI/PrintHostDialogs.cpp:44 msgid "Use forward slashes ( / ) as a directory separator if needed." msgstr "" -#: src/slic3r/GUI/PrintHostDialogs.cpp:147 +#: src/slic3r/GUI/PrintHostDialogs.cpp:57 +msgid "Group" +msgstr "" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:174 msgid "ID" msgstr "" -#: src/slic3r/GUI/PrintHostDialogs.cpp:148 +#: src/slic3r/GUI/PrintHostDialogs.cpp:175 msgid "Progress" msgstr "" -#: src/slic3r/GUI/PrintHostDialogs.cpp:149 +#: src/slic3r/GUI/PrintHostDialogs.cpp:176 msgid "Status" msgstr "" -#: src/slic3r/GUI/PrintHostDialogs.cpp:150 +#: src/slic3r/GUI/PrintHostDialogs.cpp:177 msgid "Host" msgstr "" -#: src/slic3r/GUI/PrintHostDialogs.cpp:151 +#: src/slic3r/GUI/PrintHostDialogs.cpp:178 msgid "Filename" msgstr "" -#: src/slic3r/GUI/PrintHostDialogs.cpp:152 +#: src/slic3r/GUI/PrintHostDialogs.cpp:179 msgid "Error Message" msgstr "" -#: src/slic3r/GUI/PrintHostDialogs.cpp:155 +#: src/slic3r/GUI/PrintHostDialogs.cpp:182 msgid "Cancel selected" msgstr "" -#: src/slic3r/GUI/PrintHostDialogs.cpp:157 +#: src/slic3r/GUI/PrintHostDialogs.cpp:184 msgid "Show error message" msgstr "" -#: src/slic3r/GUI/PrintHostDialogs.cpp:198 -#: src/slic3r/GUI/PrintHostDialogs.cpp:229 +#: src/slic3r/GUI/PrintHostDialogs.cpp:226 +#: src/slic3r/GUI/PrintHostDialogs.cpp:257 msgid "Enqueued" msgstr "" -#: src/slic3r/GUI/PrintHostDialogs.cpp:230 +#: src/slic3r/GUI/PrintHostDialogs.cpp:258 msgid "Uploading" msgstr "" -#: src/slic3r/GUI/PrintHostDialogs.cpp:234 +#: src/slic3r/GUI/PrintHostDialogs.cpp:262 msgid "Completed" msgstr "" -#: src/slic3r/GUI/PrintHostDialogs.cpp:272 +#: src/slic3r/GUI/PrintHostDialogs.cpp:300 msgid "Error uploading to print host:" msgstr "" @@ -6030,12 +6133,12 @@ msgid "NO RAMMING AT ALL" msgstr "" #: src/slic3r/GUI/RammingChart.cpp:76 src/slic3r/GUI/WipeTowerDialog.cpp:83 -#: src/libslic3r/PrintConfig.cpp:680 src/libslic3r/PrintConfig.cpp:724 -#: src/libslic3r/PrintConfig.cpp:739 src/libslic3r/PrintConfig.cpp:2551 -#: src/libslic3r/PrintConfig.cpp:2560 src/libslic3r/PrintConfig.cpp:2670 -#: src/libslic3r/PrintConfig.cpp:2678 src/libslic3r/PrintConfig.cpp:2686 -#: src/libslic3r/PrintConfig.cpp:2693 src/libslic3r/PrintConfig.cpp:2701 -#: src/libslic3r/PrintConfig.cpp:2709 +#: src/libslic3r/PrintConfig.cpp:687 src/libslic3r/PrintConfig.cpp:731 +#: src/libslic3r/PrintConfig.cpp:746 src/libslic3r/PrintConfig.cpp:2542 +#: src/libslic3r/PrintConfig.cpp:2551 src/libslic3r/PrintConfig.cpp:2661 +#: src/libslic3r/PrintConfig.cpp:2669 src/libslic3r/PrintConfig.cpp:2677 +#: src/libslic3r/PrintConfig.cpp:2684 src/libslic3r/PrintConfig.cpp:2692 +#: src/libslic3r/PrintConfig.cpp:2700 msgid "s" msgstr "" @@ -6043,85 +6146,87 @@ msgstr "" msgid "Volumetric speed" msgstr "" -#: src/slic3r/GUI/RammingChart.cpp:81 src/libslic3r/PrintConfig.cpp:637 -#: src/libslic3r/PrintConfig.cpp:1358 +#: src/slic3r/GUI/RammingChart.cpp:81 src/libslic3r/PrintConfig.cpp:644 +#: src/libslic3r/PrintConfig.cpp:1367 msgid "mm³/s" msgstr "" -#: src/slic3r/GUI/SavePresetDialog.cpp:72 +#: src/slic3r/GUI/SavePresetDialog.cpp:57 #, possible-c-format msgid "Save %s as:" msgstr "" -#: src/slic3r/GUI/SavePresetDialog.cpp:125 +#: src/slic3r/GUI/SavePresetDialog.cpp:110 msgid "the following suffix is not allowed:" msgstr "" -#: src/slic3r/GUI/SavePresetDialog.cpp:131 +#: src/slic3r/GUI/SavePresetDialog.cpp:116 msgid "The supplied name is not available." msgstr "" -#: src/slic3r/GUI/SavePresetDialog.cpp:137 +#: src/slic3r/GUI/SavePresetDialog.cpp:122 msgid "Cannot overwrite a system profile." msgstr "" -#: src/slic3r/GUI/SavePresetDialog.cpp:142 +#: src/slic3r/GUI/SavePresetDialog.cpp:127 msgid "Cannot overwrite an external profile." msgstr "" -#: src/slic3r/GUI/SavePresetDialog.cpp:148 +#: src/slic3r/GUI/SavePresetDialog.cpp:134 msgid "Preset with name \"%1%\" already exists." msgstr "" -#: src/slic3r/GUI/SavePresetDialog.cpp:150 -msgid "And selected preset is imcopatible with selected printer." +#: src/slic3r/GUI/SavePresetDialog.cpp:136 +msgid "" +"Preset with name \"%1%\" already exists and is imcopatible with selected " +"printer." msgstr "" -#: src/slic3r/GUI/SavePresetDialog.cpp:151 +#: src/slic3r/GUI/SavePresetDialog.cpp:137 msgid "Note: This preset will be replaced after saving" msgstr "" -#: src/slic3r/GUI/SavePresetDialog.cpp:156 -msgid "The empty name is not available." +#: src/slic3r/GUI/SavePresetDialog.cpp:142 +msgid "The name cannot be empty." msgstr "" -#: src/slic3r/GUI/SavePresetDialog.cpp:190 -#: src/slic3r/GUI/SavePresetDialog.cpp:196 +#: src/slic3r/GUI/SavePresetDialog.cpp:176 +#: src/slic3r/GUI/SavePresetDialog.cpp:182 msgid "Save preset" msgstr "" -#: src/slic3r/GUI/SavePresetDialog.cpp:219 +#: src/slic3r/GUI/SavePresetDialog.cpp:205 msgctxt "PresetName" msgid "Copy" msgstr "" -#: src/slic3r/GUI/SavePresetDialog.cpp:277 +#: src/slic3r/GUI/SavePresetDialog.cpp:263 msgid "" "You have selected physical printer \"%1%\" \n" "with related printer preset \"%2%\"" msgstr "" -#: src/slic3r/GUI/SavePresetDialog.cpp:310 +#: src/slic3r/GUI/SavePresetDialog.cpp:296 msgid "What would you like to do with \"%1%\" preset after saving?" msgstr "" -#: src/slic3r/GUI/SavePresetDialog.cpp:313 +#: src/slic3r/GUI/SavePresetDialog.cpp:299 msgid "Change \"%1%\" to \"%2%\" for this physical printer \"%3%\"" msgstr "" -#: src/slic3r/GUI/SavePresetDialog.cpp:314 +#: src/slic3r/GUI/SavePresetDialog.cpp:300 msgid "Add \"%1%\" as a next preset for the the physical printer \"%2%\"" msgstr "" -#: src/slic3r/GUI/SavePresetDialog.cpp:315 +#: src/slic3r/GUI/SavePresetDialog.cpp:301 msgid "Just switch to \"%1%\" preset" msgstr "" -#: src/slic3r/GUI/Search.cpp:77 src/slic3r/GUI/Tab.cpp:2378 +#: src/slic3r/GUI/Search.cpp:77 src/slic3r/GUI/Tab.cpp:2389 msgid "Stealth" msgstr "" -#: src/slic3r/GUI/Search.cpp:77 src/slic3r/GUI/Tab.cpp:2372 +#: src/slic3r/GUI/Search.cpp:77 src/slic3r/GUI/Tab.cpp:2383 msgid "Normal" msgstr "" @@ -6157,15 +6262,15 @@ msgstr "" msgid "Selection-Remove All" msgstr "" -#: src/slic3r/GUI/Selection.cpp:988 +#: src/slic3r/GUI/Selection.cpp:1006 msgid "Scale To Fit" msgstr "" -#: src/slic3r/GUI/Selection.cpp:1515 +#: src/slic3r/GUI/Selection.cpp:1533 msgid "Set Printable Instance" msgstr "" -#: src/slic3r/GUI/Selection.cpp:1515 +#: src/slic3r/GUI/Selection.cpp:1533 msgid "Set Unprintable Instance" msgstr "" @@ -6177,350 +6282,354 @@ msgstr "" msgid "Copy to Clipboard" msgstr "" -#: src/slic3r/GUI/Tab.cpp:101 src/libslic3r/PrintConfig.cpp:299 +#: src/slic3r/GUI/Tab.cpp:111 src/libslic3r/PrintConfig.cpp:306 msgid "Compatible printers" msgstr "" -#: src/slic3r/GUI/Tab.cpp:102 +#: src/slic3r/GUI/Tab.cpp:112 msgid "Select the printers this profile is compatible with." msgstr "" -#: src/slic3r/GUI/Tab.cpp:107 src/libslic3r/PrintConfig.cpp:314 +#: src/slic3r/GUI/Tab.cpp:117 src/libslic3r/PrintConfig.cpp:321 msgid "Compatible print profiles" msgstr "" -#: src/slic3r/GUI/Tab.cpp:108 +#: src/slic3r/GUI/Tab.cpp:118 msgid "Select the print profiles this profile is compatible with." msgstr "" #. TRN "Save current Settings" -#: src/slic3r/GUI/Tab.cpp:203 +#: src/slic3r/GUI/Tab.cpp:213 #, possible-c-format msgid "Save current %s" msgstr "" -#: src/slic3r/GUI/Tab.cpp:204 +#: src/slic3r/GUI/Tab.cpp:214 msgid "Delete this preset" msgstr "" -#: src/slic3r/GUI/Tab.cpp:210 +#: src/slic3r/GUI/Tab.cpp:218 msgid "" "Hover the cursor over buttons to find more information \n" "or click this button." msgstr "" -#: src/slic3r/GUI/Tab.cpp:214 -msgid "Click to start a search or use %1% shortcut" +#: src/slic3r/GUI/Tab.cpp:222 +msgid "Search in settings [%1%]" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1224 +#: src/slic3r/GUI/Tab.cpp:1228 msgid "Detach from system preset" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1237 +#: src/slic3r/GUI/Tab.cpp:1241 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:1238 +#: src/slic3r/GUI/Tab.cpp:1242 msgid "" "The current custom preset will be detached from the parent system preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:1241 +#: src/slic3r/GUI/Tab.cpp:1245 msgid "Modifications to the current profile will be saved." msgstr "" -#: src/slic3r/GUI/Tab.cpp:1244 +#: src/slic3r/GUI/Tab.cpp:1248 msgid "" "This action is not revertable.\n" "Do you want to proceed?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1246 +#: src/slic3r/GUI/Tab.cpp:1250 msgid "Detach preset" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1272 +#: src/slic3r/GUI/Tab.cpp:1276 msgid "This is a default preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:1274 +#: src/slic3r/GUI/Tab.cpp:1278 msgid "This is a system preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:1276 +#: src/slic3r/GUI/Tab.cpp:1280 msgid "Current preset is inherited from the default preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:1278 +#: src/slic3r/GUI/Tab.cpp:1282 msgid "Current preset is inherited from" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1282 +#: src/slic3r/GUI/Tab.cpp:1286 msgid "It can't be deleted or modified." msgstr "" -#: src/slic3r/GUI/Tab.cpp:1283 +#: src/slic3r/GUI/Tab.cpp:1287 msgid "" "Any modifications should be saved as a new preset inherited from this one." msgstr "" -#: src/slic3r/GUI/Tab.cpp:1284 +#: src/slic3r/GUI/Tab.cpp:1288 msgid "To do that please specify a new name for the preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:1288 +#: src/slic3r/GUI/Tab.cpp:1292 msgid "Additional information:" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1294 +#: src/slic3r/GUI/Tab.cpp:1298 msgid "printer model" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1302 +#: src/slic3r/GUI/Tab.cpp:1306 msgid "default print profile" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1305 +#: src/slic3r/GUI/Tab.cpp:1309 msgid "default filament profile" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1319 +#: src/slic3r/GUI/Tab.cpp:1323 msgid "default SLA material profile" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1323 +#: src/slic3r/GUI/Tab.cpp:1327 msgid "default SLA print profile" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1331 +#: src/slic3r/GUI/Tab.cpp:1335 msgid "full profile name" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1332 +#: src/slic3r/GUI/Tab.cpp:1336 msgid "symbolic profile name" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1370 src/slic3r/GUI/Tab.cpp:4008 +#: src/slic3r/GUI/Tab.cpp:1374 src/slic3r/GUI/Tab.cpp:4005 msgid "Layers and perimeters" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1375 +#: src/slic3r/GUI/Tab.cpp:1380 msgid "Vertical shells" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1386 +#: src/slic3r/GUI/Tab.cpp:1392 msgid "Horizontal shells" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1387 src/libslic3r/PrintConfig.cpp:1895 +#: src/slic3r/GUI/Tab.cpp:1393 src/libslic3r/PrintConfig.cpp:1886 msgid "Solid layers" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1391 +#: src/slic3r/GUI/Tab.cpp:1398 msgid "Minimum shell thickness" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1402 +#: src/slic3r/GUI/Tab.cpp:1409 msgid "Quality (slower slicing)" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1426 +#: src/slic3r/GUI/Tab.cpp:1434 msgid "Reducing printing time" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1438 +#: src/slic3r/GUI/Tab.cpp:1446 msgid "Skirt and brim" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1456 +#: src/slic3r/GUI/Tab.cpp:1466 msgid "Raft" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1460 +#: src/slic3r/GUI/Tab.cpp:1470 msgid "Options for support material and raft" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1475 +#: src/slic3r/GUI/Tab.cpp:1485 msgid "Speed for print moves" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1488 +#: src/slic3r/GUI/Tab.cpp:1498 msgid "Speed for non-print moves" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1491 +#: src/slic3r/GUI/Tab.cpp:1501 msgid "Modifiers" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1494 +#: src/slic3r/GUI/Tab.cpp:1504 msgid "Acceleration control (advanced)" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1501 +#: src/slic3r/GUI/Tab.cpp:1511 msgid "Autospeed (advanced)" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1509 +#: src/slic3r/GUI/Tab.cpp:1519 msgid "Multiple Extruders" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1517 +#: src/slic3r/GUI/Tab.cpp:1527 msgid "Ooze prevention" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1535 +#: src/slic3r/GUI/Tab.cpp:1545 msgid "Extrusion width" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1545 +#: src/slic3r/GUI/Tab.cpp:1555 msgid "Overlap" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1548 +#: src/slic3r/GUI/Tab.cpp:1558 msgid "Flow" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1557 +#: src/slic3r/GUI/Tab.cpp:1567 msgid "Other" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1560 src/slic3r/GUI/Tab.cpp:4084 +#: src/slic3r/GUI/Tab.cpp:1570 src/slic3r/GUI/Tab.cpp:4081 msgid "Output options" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1561 +#: src/slic3r/GUI/Tab.cpp:1571 msgid "Sequential printing" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1563 +#: src/slic3r/GUI/Tab.cpp:1573 msgid "Extruder clearance (mm)" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1568 src/slic3r/GUI/Tab.cpp:4085 +#: src/slic3r/GUI/Tab.cpp:1578 src/slic3r/GUI/Tab.cpp:4082 msgid "Output file" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1575 src/libslic3r/PrintConfig.cpp:1561 +#: src/slic3r/GUI/Tab.cpp:1585 src/libslic3r/PrintConfig.cpp:1572 msgid "Post-processing scripts" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1581 src/slic3r/GUI/Tab.cpp:1582 -#: src/slic3r/GUI/Tab.cpp:1887 src/slic3r/GUI/Tab.cpp:1888 -#: src/slic3r/GUI/Tab.cpp:2221 src/slic3r/GUI/Tab.cpp:2222 -#: src/slic3r/GUI/Tab.cpp:2297 src/slic3r/GUI/Tab.cpp:2298 -#: src/slic3r/GUI/Tab.cpp:3951 src/slic3r/GUI/Tab.cpp:3952 +#: src/slic3r/GUI/Tab.cpp:1591 src/slic3r/GUI/Tab.cpp:1592 +#: src/slic3r/GUI/Tab.cpp:1900 src/slic3r/GUI/Tab.cpp:1901 +#: src/slic3r/GUI/Tab.cpp:2234 src/slic3r/GUI/Tab.cpp:2235 +#: src/slic3r/GUI/Tab.cpp:2310 src/slic3r/GUI/Tab.cpp:2311 +#: src/slic3r/GUI/Tab.cpp:3948 src/slic3r/GUI/Tab.cpp:3949 msgid "Notes" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1588 src/slic3r/GUI/Tab.cpp:1895 -#: src/slic3r/GUI/Tab.cpp:2228 src/slic3r/GUI/Tab.cpp:2304 -#: src/slic3r/GUI/Tab.cpp:3959 src/slic3r/GUI/Tab.cpp:4090 +#: src/slic3r/GUI/Tab.cpp:1598 src/slic3r/GUI/Tab.cpp:1908 +#: src/slic3r/GUI/Tab.cpp:2241 src/slic3r/GUI/Tab.cpp:2317 +#: src/slic3r/GUI/Tab.cpp:3956 src/slic3r/GUI/Tab.cpp:4087 msgid "Dependencies" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1589 src/slic3r/GUI/Tab.cpp:1896 -#: src/slic3r/GUI/Tab.cpp:2229 src/slic3r/GUI/Tab.cpp:2305 -#: src/slic3r/GUI/Tab.cpp:3960 src/slic3r/GUI/Tab.cpp:4091 +#: src/slic3r/GUI/Tab.cpp:1599 src/slic3r/GUI/Tab.cpp:1909 +#: src/slic3r/GUI/Tab.cpp:2242 src/slic3r/GUI/Tab.cpp:2318 +#: src/slic3r/GUI/Tab.cpp:3957 src/slic3r/GUI/Tab.cpp:4088 msgid "Profile dependencies" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1669 +#: src/slic3r/GUI/Tab.cpp:1679 msgid "Filament Overrides" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1779 +#: src/slic3r/GUI/Tab.cpp:1789 msgid "Temperature" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1785 +#: src/slic3r/GUI/Tab.cpp:1790 +msgid "Nozzle" +msgstr "" + +#: src/slic3r/GUI/Tab.cpp:1795 msgid "Bed" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1790 +#: src/slic3r/GUI/Tab.cpp:1800 msgid "Cooling" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1791 src/libslic3r/PrintConfig.cpp:1463 -#: src/libslic3r/PrintConfig.cpp:2343 +#: src/slic3r/GUI/Tab.cpp:1802 src/libslic3r/PrintConfig.cpp:1474 +#: src/libslic3r/PrintConfig.cpp:2334 msgid "Enable" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1802 +#: src/slic3r/GUI/Tab.cpp:1813 msgid "Fan settings" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1811 +#: src/slic3r/GUI/Tab.cpp:1823 msgid "Cooling thresholds" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1817 +#: src/slic3r/GUI/Tab.cpp:1829 msgid "Filament properties" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1824 +#: src/slic3r/GUI/Tab.cpp:1836 msgid "Print speed override" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1834 +#: src/slic3r/GUI/Tab.cpp:1846 msgid "Wipe tower parameters" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1837 +#: src/slic3r/GUI/Tab.cpp:1849 msgid "Toolchange parameters with single extruder MM printers" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1850 +#: src/slic3r/GUI/Tab.cpp:1862 msgid "Ramming settings" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1872 src/slic3r/GUI/Tab.cpp:2160 -#: src/libslic3r/PrintConfig.cpp:1978 +#: src/slic3r/GUI/Tab.cpp:1885 src/slic3r/GUI/Tab.cpp:2173 +#: src/libslic3r/PrintConfig.cpp:1969 msgid "Custom G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1873 src/slic3r/GUI/Tab.cpp:2161 -#: src/libslic3r/PrintConfig.cpp:1928 src/libslic3r/PrintConfig.cpp:1943 +#: src/slic3r/GUI/Tab.cpp:1886 src/slic3r/GUI/Tab.cpp:2174 +#: src/libslic3r/PrintConfig.cpp:1919 src/libslic3r/PrintConfig.cpp:1934 msgid "Start G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1880 src/slic3r/GUI/Tab.cpp:2168 -#: src/libslic3r/PrintConfig.cpp:419 src/libslic3r/PrintConfig.cpp:429 +#: src/slic3r/GUI/Tab.cpp:1893 src/slic3r/GUI/Tab.cpp:2181 +#: src/libslic3r/PrintConfig.cpp:426 src/libslic3r/PrintConfig.cpp:436 msgid "End G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1930 +#: src/slic3r/GUI/Tab.cpp:1943 msgid "Volumetric flow hints not available" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2026 +#: src/slic3r/GUI/Tab.cpp:2039 msgid "" "Note: All parameters from this group are moved to the Physical Printer " "settings (see changelog).\n" "\n" "A new Physical Printer profile is created by clicking on the \"cog\" icon " -"right of the Printer profiles combo box, by selecting the \"add or remove " -"printers\" item in the Printer combo box. The Physical Printer profile " -"editor opens also when clicking on the \"cog\" icon in the Printer settings " -"tab. The Physical Printer profiles are being stored into PrusaSlicer/" +"right of the Printer profiles combo box, by selecting the \"Add physical " +"printer\" item in the Printer combo box. The Physical Printer profile editor " +"opens also when clicking on the \"cog\" icon in the Printer settings tab. " +"The Physical Printer profiles are being stored into PrusaSlicer/" "physical_printer directory." msgstr "" -#: src/slic3r/GUI/Tab.cpp:2059 src/slic3r/GUI/Tab.cpp:2241 +#: src/slic3r/GUI/Tab.cpp:2072 src/slic3r/GUI/Tab.cpp:2254 msgid "Size and coordinates" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2068 src/slic3r/GUI/UnsavedChangesDialog.cpp:1066 +#: src/slic3r/GUI/Tab.cpp:2081 src/slic3r/GUI/UnsavedChangesDialog.cpp:1066 msgid "Capabilities" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2073 +#: src/slic3r/GUI/Tab.cpp:2086 msgid "Number of extruders of the printer." msgstr "" -#: src/slic3r/GUI/Tab.cpp:2101 +#: src/slic3r/GUI/Tab.cpp:2114 msgid "" "Single Extruder Multi Material is selected, \n" "and all extruders must have the same diameter.\n" @@ -6528,227 +6637,231 @@ msgid "" "nozzle diameter value?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2104 src/slic3r/GUI/Tab.cpp:2509 -#: src/libslic3r/PrintConfig.cpp:1434 +#: src/slic3r/GUI/Tab.cpp:2117 src/slic3r/GUI/Tab.cpp:2520 +#: src/libslic3r/PrintConfig.cpp:1443 msgid "Nozzle diameter" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2175 src/libslic3r/PrintConfig.cpp:187 +#: src/slic3r/GUI/Tab.cpp:2188 src/libslic3r/PrintConfig.cpp:194 msgid "Before layer change G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2182 src/libslic3r/PrintConfig.cpp:1173 +#: src/slic3r/GUI/Tab.cpp:2195 src/libslic3r/PrintConfig.cpp:1182 msgid "After layer change G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2189 src/libslic3r/PrintConfig.cpp:2236 +#: src/slic3r/GUI/Tab.cpp:2202 src/libslic3r/PrintConfig.cpp:2227 msgid "Tool change G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2196 +#: src/slic3r/GUI/Tab.cpp:2209 msgid "Between objects G-code (for sequential printing)" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2203 +#: src/slic3r/GUI/Tab.cpp:2216 msgid "Color Change G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2209 src/libslic3r/PrintConfig.cpp:1969 +#: src/slic3r/GUI/Tab.cpp:2222 src/libslic3r/PrintConfig.cpp:1960 msgid "Pause Print G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2215 +#: src/slic3r/GUI/Tab.cpp:2228 msgid "Template Custom G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2248 +#: src/slic3r/GUI/Tab.cpp:2261 msgid "Display" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2263 +#: src/slic3r/GUI/Tab.cpp:2276 msgid "Tilt" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2264 +#: src/slic3r/GUI/Tab.cpp:2277 msgid "Tilt time" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2270 src/slic3r/GUI/Tab.cpp:3935 +#: src/slic3r/GUI/Tab.cpp:2283 src/slic3r/GUI/Tab.cpp:3932 msgid "Corrections" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2287 src/slic3r/GUI/Tab.cpp:3931 +#: src/slic3r/GUI/Tab.cpp:2300 src/slic3r/GUI/Tab.cpp:3928 msgid "Exposure" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2346 src/slic3r/GUI/Tab.cpp:2442 -#: src/libslic3r/PrintConfig.cpp:1202 src/libslic3r/PrintConfig.cpp:1237 -#: src/libslic3r/PrintConfig.cpp:1254 src/libslic3r/PrintConfig.cpp:1271 -#: src/libslic3r/PrintConfig.cpp:1287 src/libslic3r/PrintConfig.cpp:1297 -#: src/libslic3r/PrintConfig.cpp:1307 src/libslic3r/PrintConfig.cpp:1317 +#: src/slic3r/GUI/Tab.cpp:2359 src/slic3r/GUI/Tab.cpp:2453 +#: src/libslic3r/PrintConfig.cpp:1211 src/libslic3r/PrintConfig.cpp:1246 +#: src/libslic3r/PrintConfig.cpp:1263 src/libslic3r/PrintConfig.cpp:1280 +#: src/libslic3r/PrintConfig.cpp:1296 src/libslic3r/PrintConfig.cpp:1306 +#: src/libslic3r/PrintConfig.cpp:1316 src/libslic3r/PrintConfig.cpp:1326 msgid "Machine limits" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2371 +#: src/slic3r/GUI/Tab.cpp:2382 msgid "Values in this column are for Normal mode" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2377 +#: src/slic3r/GUI/Tab.cpp:2388 msgid "Values in this column are for Stealth mode" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2386 +#: src/slic3r/GUI/Tab.cpp:2397 msgid "Maximum feedrates" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2391 +#: src/slic3r/GUI/Tab.cpp:2402 msgid "Maximum accelerations" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2398 +#: src/slic3r/GUI/Tab.cpp:2409 msgid "Jerk limits" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2403 +#: src/slic3r/GUI/Tab.cpp:2414 msgid "Minimum feedrates" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2467 src/slic3r/GUI/Tab.cpp:2475 +#: src/slic3r/GUI/Tab.cpp:2478 src/slic3r/GUI/Tab.cpp:2486 msgid "Single extruder MM setup" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2476 +#: src/slic3r/GUI/Tab.cpp:2487 msgid "Single extruder multimaterial parameters" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2507 +#: src/slic3r/GUI/Tab.cpp:2518 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:2531 +#: src/slic3r/GUI/Tab.cpp:2542 msgid "Layer height limits" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2536 +#: src/slic3r/GUI/Tab.cpp:2547 msgid "Position (for multi-extruder printers)" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2542 +#: src/slic3r/GUI/Tab.cpp:2553 msgid "Only lift Z" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2555 +#: src/slic3r/GUI/Tab.cpp:2566 msgid "" "Retraction when tool is disabled (advanced settings for multi-extruder " "setups)" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2564 +#: src/slic3r/GUI/Tab.cpp:2573 msgid "Reset to Filament Color" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2731 +#: src/slic3r/GUI/Tab.cpp:2751 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:2733 +#: src/slic3r/GUI/Tab.cpp:2753 msgid "Firmware Retraction" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3323 +#: src/slic3r/GUI/Tab.cpp:3339 msgid "Detached" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3386 +#: src/slic3r/GUI/Tab.cpp:3402 msgid "remove" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3386 +#: src/slic3r/GUI/Tab.cpp:3402 msgid "delete" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3392 +#: src/slic3r/GUI/Tab.cpp:3411 +msgid "It's a last preset for this physical printer." +msgstr "" + +#: src/slic3r/GUI/Tab.cpp:3416 msgid "" "Are you sure you want to delete \"%1%\" preset from the physical printer " "\"%2%\"?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3404 -msgid "Next physical printer(s) has/have selected preset" +#: src/slic3r/GUI/Tab.cpp:3428 +msgid "" +"The physical printer(s) below is based on the preset, you are going to " +"delete." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3408 +#: src/slic3r/GUI/Tab.cpp:3432 msgid "" "Note, that selected preset will be deleted from this/those printer(s) too." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3412 -msgid "Next physical printer(s) has/have one and only selected preset" +#: src/slic3r/GUI/Tab.cpp:3436 +msgid "" +"The physical printer(s) below is based only on the preset, you are going to " +"delete." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3416 +#: src/slic3r/GUI/Tab.cpp:3440 msgid "" "Note, that this/those printer(s) will be deleted after deleting of the " "selected preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3420 +#: src/slic3r/GUI/Tab.cpp:3444 msgid "Are you sure you want to %1% the selected preset?" msgstr "" #. TRN Remove/Delete -#: src/slic3r/GUI/Tab.cpp:3425 +#: src/slic3r/GUI/Tab.cpp:3449 msgid "%1% Preset" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3435 -msgid "It's a last for this physical printer. We can't delete it" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:3509 src/slic3r/GUI/Tab.cpp:3588 +#: src/slic3r/GUI/Tab.cpp:3530 src/slic3r/GUI/Tab.cpp:3602 msgid "Set" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3660 +#: src/slic3r/GUI/Tab.cpp:3666 msgid "" "Machine limits will be emitted to G-code and used to estimate print time." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3663 +#: src/slic3r/GUI/Tab.cpp:3669 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:3667 +#: src/slic3r/GUI/Tab.cpp:3673 msgid "" "Machine limits are not set, therefore the print time estimate may not be " "accurate." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3689 +#: src/slic3r/GUI/Tab.cpp:3695 msgid "LOCKED LOCK" msgstr "" #. TRN Description for "LOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:3691 +#: src/slic3r/GUI/Tab.cpp:3697 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:3693 +#: src/slic3r/GUI/Tab.cpp:3699 msgid "UNLOCKED LOCK" msgstr "" #. TRN Description for "UNLOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:3695 +#: src/slic3r/GUI/Tab.cpp:3701 msgid "" "indicates that some settings were changed and are not equal to the system " "(or default) values for the current option group.\n" @@ -6756,23 +6869,23 @@ msgid "" "to the system (or default) values." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3700 +#: src/slic3r/GUI/Tab.cpp:3706 msgid "WHITE BULLET" msgstr "" #. TRN Description for "WHITE BULLET" -#: src/slic3r/GUI/Tab.cpp:3702 +#: src/slic3r/GUI/Tab.cpp:3708 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:3705 +#: src/slic3r/GUI/Tab.cpp:3711 msgid "BACK ARROW" msgstr "" #. TRN Description for "BACK ARROW" -#: src/slic3r/GUI/Tab.cpp:3707 +#: src/slic3r/GUI/Tab.cpp:3713 msgid "" "indicates that the settings were changed and are not equal to the last saved " "preset for the current option group.\n" @@ -6780,13 +6893,13 @@ msgid "" "to the last saved preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3717 +#: src/slic3r/GUI/Tab.cpp:3723 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:3719 +#: src/slic3r/GUI/Tab.cpp:3725 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" @@ -6794,17 +6907,17 @@ msgid "" "default) values." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3722 +#: src/slic3r/GUI/Tab.cpp:3728 msgid "WHITE BULLET icon indicates a non system (or non default) preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3725 +#: src/slic3r/GUI/Tab.cpp:3731 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:3727 +#: src/slic3r/GUI/Tab.cpp:3733 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" @@ -6812,79 +6925,79 @@ msgid "" "preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3733 +#: src/slic3r/GUI/Tab.cpp:3739 msgid "" "LOCKED LOCK icon indicates that the value is the same as the system (or " "default) value." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3734 +#: src/slic3r/GUI/Tab.cpp:3740 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:3740 +#: src/slic3r/GUI/Tab.cpp:3746 msgid "" "WHITE BULLET icon indicates that the value is the same as in the last saved " "preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3741 +#: src/slic3r/GUI/Tab.cpp:3747 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:3894 src/slic3r/GUI/Tab.cpp:3896 +#: src/slic3r/GUI/Tab.cpp:3891 src/slic3r/GUI/Tab.cpp:3893 msgid "Material" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4018 +#: src/slic3r/GUI/Tab.cpp:4015 msgid "Support head" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4023 +#: src/slic3r/GUI/Tab.cpp:4020 msgid "Support pillar" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4046 +#: src/slic3r/GUI/Tab.cpp:4043 msgid "Connection of the support sticks and junctions" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4051 +#: src/slic3r/GUI/Tab.cpp:4048 msgid "Automatic generation" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4125 +#: src/slic3r/GUI/Tab.cpp:4122 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:4127 src/libslic3r/PrintConfig.cpp:2917 +#: src/slic3r/GUI/Tab.cpp:4124 src/libslic3r/PrintConfig.cpp:2908 msgid "Object elevation" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4127 src/libslic3r/PrintConfig.cpp:3019 +#: src/slic3r/GUI/Tab.cpp:4124 src/libslic3r/PrintConfig.cpp:3010 msgid "Pad around object" msgstr "" -#: src/slic3r/GUI/Tab.hpp:378 src/slic3r/GUI/Tab.hpp:502 +#: src/slic3r/GUI/Tab.hpp:373 src/slic3r/GUI/Tab.hpp:495 msgid "Print Settings" msgstr "" -#: src/slic3r/GUI/Tab.hpp:409 +#: src/slic3r/GUI/Tab.hpp:404 msgid "Filament Settings" msgstr "" -#: src/slic3r/GUI/Tab.hpp:453 +#: src/slic3r/GUI/Tab.hpp:445 msgid "Printer Settings" msgstr "" -#: src/slic3r/GUI/Tab.hpp:486 +#: src/slic3r/GUI/Tab.hpp:479 msgid "Material Settings" msgstr "" @@ -6895,7 +7008,7 @@ msgid "Undef" msgstr "" #: src/slic3r/GUI/UnsavedChangesDialog.cpp:525 -msgid "Closing PrusaSlicer: Unsaved Changes" +msgid "PrusaSlicer is closing: Unsaved Changes" msgstr "" #: src/slic3r/GUI/UnsavedChangesDialog.cpp:542 @@ -6954,7 +7067,7 @@ msgid "" msgstr "" #: src/slic3r/GUI/UnsavedChangesDialog.cpp:737 -msgid "All modified options will be reverted." +msgid "All settings changes will be discarded." msgstr "" #: src/slic3r/GUI/UnsavedChangesDialog.cpp:740 @@ -6962,7 +7075,7 @@ msgid "Save the selected options." msgstr "" #: src/slic3r/GUI/UnsavedChangesDialog.cpp:740 -msgid "Transfer the selected options to the newly selected presets." +msgid "Transfer the selected settings to the newly selected preset." msgstr "" #: src/slic3r/GUI/UnsavedChangesDialog.cpp:744 @@ -7266,25 +7379,25 @@ msgstr "" msgid "Note: AstroBox version at least 1.1.0 is required." msgstr "" -#: src/slic3r/Utils/Duet.cpp:49 +#: src/slic3r/Utils/Duet.cpp:47 msgid "Connection to Duet works correctly." msgstr "" -#: src/slic3r/Utils/Duet.cpp:55 +#: src/slic3r/Utils/Duet.cpp:53 msgid "Could not connect to Duet" msgstr "" -#: src/slic3r/Utils/Duet.cpp:84 src/slic3r/Utils/Duet.cpp:139 +#: src/slic3r/Utils/Duet.cpp:88 src/slic3r/Utils/Duet.cpp:151 #: src/slic3r/Utils/FlashAir.cpp:122 src/slic3r/Utils/FlashAir.cpp:143 #: src/slic3r/Utils/FlashAir.cpp:159 msgid "Unknown error occured" msgstr "" -#: src/slic3r/Utils/Duet.cpp:133 +#: src/slic3r/Utils/Duet.cpp:145 msgid "Wrong password" msgstr "" -#: src/slic3r/Utils/Duet.cpp:136 +#: src/slic3r/Utils/Duet.cpp:148 msgid "Could not get resources to create a new connection" msgstr "" @@ -7407,17 +7520,17 @@ msgstr "" msgid "Could not connect to Prusa SLA" msgstr "" -#: src/slic3r/Utils/PresetUpdater.cpp:726 +#: src/slic3r/Utils/PresetUpdater.cpp:727 #, possible-c-format msgid "requires min. %s and max. %s" msgstr "" -#: src/slic3r/Utils/PresetUpdater.cpp:730 +#: src/slic3r/Utils/PresetUpdater.cpp:731 #, possible-c-format msgid "requires min. %s" msgstr "" -#: src/slic3r/Utils/PresetUpdater.cpp:733 +#: src/slic3r/Utils/PresetUpdater.cpp:734 #, possible-c-format msgid "requires max. %s" msgstr "" @@ -7448,25 +7561,25 @@ msgstr "" msgid "Open G-code file:" msgstr "" -#: src/libslic3r/GCode.cpp:604 +#: src/libslic3r/GCode.cpp:602 msgid "There is an object with no extrusions on the first layer." msgstr "" -#: src/libslic3r/GCode.cpp:622 +#: src/libslic3r/GCode.cpp:620 msgid "Empty layers detected, the output would not be printable." msgstr "" -#: src/libslic3r/GCode.cpp:623 +#: src/libslic3r/GCode.cpp:621 msgid "Print z" msgstr "" -#: src/libslic3r/GCode.cpp:624 +#: src/libslic3r/GCode.cpp:622 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/ExtrusionEntity.cpp:328 src/libslic3r/ExtrusionEntity.cpp:364 +#: src/libslic3r/ExtrusionEntity.cpp:324 src/libslic3r/ExtrusionEntity.cpp:360 msgid "Mixed" msgstr "" @@ -7611,118 +7724,114 @@ msgstr "" msgid "write calledback failed" msgstr "" -#: src/libslic3r/Preset.cpp:1301 +#: src/libslic3r/Preset.cpp:1258 msgid "filament" msgstr "" -#: src/libslic3r/Preset.cpp:1302 -msgid "SLA print" -msgstr "" - -#: src/libslic3r/Print.cpp:1245 +#: src/libslic3r/Print.cpp:1246 msgid "All objects are outside of the print volume." msgstr "" -#: src/libslic3r/Print.cpp:1248 +#: src/libslic3r/Print.cpp:1249 msgid "The supplied settings will cause an empty print." msgstr "" -#: src/libslic3r/Print.cpp:1252 +#: src/libslic3r/Print.cpp:1253 msgid "Some objects are too close; your extruder will collide with them." msgstr "" -#: src/libslic3r/Print.cpp:1254 +#: src/libslic3r/Print.cpp:1255 msgid "" "Some objects are too tall and cannot be printed without extruder collisions." msgstr "" -#: src/libslic3r/Print.cpp:1263 +#: src/libslic3r/Print.cpp:1264 msgid "The Spiral Vase option can only be used when printing a single object." msgstr "" -#: src/libslic3r/Print.cpp:1270 +#: src/libslic3r/Print.cpp:1271 msgid "" "The Spiral Vase option can only be used when printing single material " "objects." msgstr "" -#: src/libslic3r/Print.cpp:1283 +#: src/libslic3r/Print.cpp:1284 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:1288 +#: src/libslic3r/Print.cpp:1290 msgid "" -"The Wipe Tower is currently only supported for the Marlin, RepRap/Sprinter " -"and Repetier G-code flavors." +"The Wipe Tower is currently only supported for the Marlin, RepRap/Sprinter, " +"RepRapFirmware and Repetier G-code flavors." msgstr "" -#: src/libslic3r/Print.cpp:1290 +#: src/libslic3r/Print.cpp:1292 msgid "" "The Wipe Tower is currently only supported with the relative extruder " "addressing (use_relative_e_distances=1)." msgstr "" -#: src/libslic3r/Print.cpp:1292 +#: src/libslic3r/Print.cpp:1294 msgid "Ooze prevention is currently not supported with the wipe tower enabled." msgstr "" -#: src/libslic3r/Print.cpp:1294 +#: src/libslic3r/Print.cpp:1296 msgid "" "The Wipe Tower currently does not support volumetric E (use_volumetric_e=0)." msgstr "" -#: src/libslic3r/Print.cpp:1296 +#: src/libslic3r/Print.cpp:1298 msgid "" "The Wipe Tower is currently not supported for multimaterial sequential " "prints." msgstr "" -#: src/libslic3r/Print.cpp:1317 +#: src/libslic3r/Print.cpp:1319 msgid "" "The Wipe Tower is only supported for multiple objects if they have equal " "layer heights" msgstr "" -#: src/libslic3r/Print.cpp:1319 +#: src/libslic3r/Print.cpp:1321 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:1321 +#: src/libslic3r/Print.cpp:1323 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:1323 +#: src/libslic3r/Print.cpp:1325 msgid "" "The Wipe Tower is only supported for multiple objects if they are sliced " "equally." msgstr "" -#: src/libslic3r/Print.cpp:1365 +#: src/libslic3r/Print.cpp:1367 msgid "" "The Wipe tower is only supported if all objects have the same variable layer " "height" msgstr "" -#: src/libslic3r/Print.cpp:1391 +#: src/libslic3r/Print.cpp:1393 msgid "" "One or more object were assigned an extruder that the printer does not have." msgstr "" -#: src/libslic3r/Print.cpp:1400 +#: src/libslic3r/Print.cpp:1402 msgid "%1%=%2% mm is too low to be printable at a layer height %3% mm" msgstr "" -#: src/libslic3r/Print.cpp:1403 +#: src/libslic3r/Print.cpp:1405 msgid "Excessive %1%=%2% mm to be printable with a nozzle diameter %3% mm" msgstr "" -#: src/libslic3r/Print.cpp:1414 +#: src/libslic3r/Print.cpp:1416 msgid "" "Printing with multiple extruders of differing nozzle diameters. If support " "is to be printed with the current extruder (support_material_extruder == 0 " @@ -7730,13 +7839,13 @@ msgid "" "same diameter." msgstr "" -#: src/libslic3r/Print.cpp:1422 +#: src/libslic3r/Print.cpp:1424 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:1426 +#: src/libslic3r/Print.cpp:1428 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 " @@ -7744,31 +7853,31 @@ msgid "" "set to 0)." msgstr "" -#: src/libslic3r/Print.cpp:1448 +#: src/libslic3r/Print.cpp:1450 msgid "First layer height can't be greater than nozzle diameter" msgstr "" -#: src/libslic3r/Print.cpp:1453 +#: src/libslic3r/Print.cpp:1455 msgid "Layer height can't be greater than nozzle diameter" msgstr "" -#: src/libslic3r/Print.cpp:1610 +#: src/libslic3r/Print.cpp:1614 msgid "Infilling layers" msgstr "" -#: src/libslic3r/Print.cpp:1636 +#: src/libslic3r/Print.cpp:1640 msgid "Generating skirt" msgstr "" -#: src/libslic3r/Print.cpp:1645 +#: src/libslic3r/Print.cpp:1649 msgid "Generating brim" msgstr "" -#: src/libslic3r/Print.cpp:1676 +#: src/libslic3r/Print.cpp:1672 msgid "Exporting G-code" msgstr "" -#: src/libslic3r/Print.cpp:1680 +#: src/libslic3r/Print.cpp:1676 msgid "Generating G-code" msgstr "" @@ -7776,34 +7885,34 @@ msgstr "" msgid "Pad brim size is too small for the current configuration." msgstr "" -#: src/libslic3r/SLAPrint.cpp:627 +#: src/libslic3r/SLAPrint.cpp:628 msgid "" "Cannot proceed without support points! Add support points or disable support " "generation." msgstr "" -#: src/libslic3r/SLAPrint.cpp:639 +#: src/libslic3r/SLAPrint.cpp:640 msgid "" "Elevation is too low for object. Use the \"Pad around object\" feature to " "print the object without elevation." msgstr "" -#: src/libslic3r/SLAPrint.cpp:645 +#: src/libslic3r/SLAPrint.cpp:646 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:660 +#: src/libslic3r/SLAPrint.cpp:661 msgid "Exposition time is out of printer profile bounds." msgstr "" -#: src/libslic3r/SLAPrint.cpp:667 +#: src/libslic3r/SLAPrint.cpp:668 msgid "Initial exposition time is out of printer profile bounds." msgstr "" -#: src/libslic3r/SLAPrint.cpp:780 +#: src/libslic3r/SLAPrint.cpp:784 msgid "Slicing done" msgstr "" @@ -7945,75 +8054,79 @@ msgid "" msgstr "" #: src/libslic3r/PrintConfig.cpp:114 +msgid "Name of the printer" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:121 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:120 +#: src/libslic3r/PrintConfig.cpp:127 msgid "Elephant foot compensation" msgstr "" -#: src/libslic3r/PrintConfig.cpp:122 +#: src/libslic3r/PrintConfig.cpp:129 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:138 +#: src/libslic3r/PrintConfig.cpp:145 msgid "Password" msgstr "" -#: src/libslic3r/PrintConfig.cpp:144 +#: src/libslic3r/PrintConfig.cpp:151 msgid "Printer preset name" msgstr "" -#: src/libslic3r/PrintConfig.cpp:145 +#: src/libslic3r/PrintConfig.cpp:152 msgid "Related printer preset name" msgstr "" -#: src/libslic3r/PrintConfig.cpp:150 +#: src/libslic3r/PrintConfig.cpp:157 msgid "Authorization Type" msgstr "" -#: src/libslic3r/PrintConfig.cpp:169 +#: src/libslic3r/PrintConfig.cpp:176 msgid "Avoid crossing perimeters" msgstr "" -#: src/libslic3r/PrintConfig.cpp:170 +#: src/libslic3r/PrintConfig.cpp:177 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:177 src/libslic3r/PrintConfig.cpp:2206 +#: src/libslic3r/PrintConfig.cpp:184 src/libslic3r/PrintConfig.cpp:2197 msgid "Other layers" msgstr "" -#: src/libslic3r/PrintConfig.cpp:178 +#: src/libslic3r/PrintConfig.cpp:185 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:181 +#: src/libslic3r/PrintConfig.cpp:188 msgid "Bed temperature" msgstr "" -#: src/libslic3r/PrintConfig.cpp:188 +#: src/libslic3r/PrintConfig.cpp:195 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:198 +#: src/libslic3r/PrintConfig.cpp:205 msgid "Between objects G-code" msgstr "" -#: src/libslic3r/PrintConfig.cpp:199 +#: src/libslic3r/PrintConfig.cpp:206 msgid "" "This code is inserted between objects when using sequential printing. By " "default extruder and bed temperature are reset using non-wait command; " @@ -8023,81 +8136,81 @@ msgid "" "S[first_layer_temperature]\" command wherever you want." msgstr "" -#: src/libslic3r/PrintConfig.cpp:210 +#: src/libslic3r/PrintConfig.cpp:217 msgid "Number of solid layers to generate on bottom surfaces." msgstr "" -#: src/libslic3r/PrintConfig.cpp:211 +#: src/libslic3r/PrintConfig.cpp:218 msgid "Bottom solid layers" msgstr "" -#: src/libslic3r/PrintConfig.cpp:219 +#: src/libslic3r/PrintConfig.cpp:226 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:221 +#: src/libslic3r/PrintConfig.cpp:228 msgid "Minimum bottom shell thickness" msgstr "" -#: src/libslic3r/PrintConfig.cpp:227 +#: src/libslic3r/PrintConfig.cpp:234 msgid "Bridge" msgstr "" -#: src/libslic3r/PrintConfig.cpp:228 +#: src/libslic3r/PrintConfig.cpp:235 msgid "" "This is the acceleration your printer will use for bridges. Set zero to " "disable acceleration control for bridges." msgstr "" -#: src/libslic3r/PrintConfig.cpp:230 src/libslic3r/PrintConfig.cpp:373 -#: src/libslic3r/PrintConfig.cpp:902 src/libslic3r/PrintConfig.cpp:1028 -#: src/libslic3r/PrintConfig.cpp:1260 src/libslic3r/PrintConfig.cpp:1309 -#: src/libslic3r/PrintConfig.cpp:1319 src/libslic3r/PrintConfig.cpp:1511 +#: src/libslic3r/PrintConfig.cpp:237 src/libslic3r/PrintConfig.cpp:380 +#: src/libslic3r/PrintConfig.cpp:909 src/libslic3r/PrintConfig.cpp:1037 +#: src/libslic3r/PrintConfig.cpp:1269 src/libslic3r/PrintConfig.cpp:1318 +#: src/libslic3r/PrintConfig.cpp:1328 src/libslic3r/PrintConfig.cpp:1522 msgid "mm/s²" msgstr "" -#: src/libslic3r/PrintConfig.cpp:236 +#: src/libslic3r/PrintConfig.cpp:243 msgid "Bridging angle" msgstr "" -#: src/libslic3r/PrintConfig.cpp:238 +#: src/libslic3r/PrintConfig.cpp:245 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:241 src/libslic3r/PrintConfig.cpp:816 -#: src/libslic3r/PrintConfig.cpp:1748 src/libslic3r/PrintConfig.cpp:1758 -#: src/libslic3r/PrintConfig.cpp:2036 src/libslic3r/PrintConfig.cpp:2191 -#: src/libslic3r/PrintConfig.cpp:2390 src/libslic3r/PrintConfig.cpp:2891 -#: src/libslic3r/PrintConfig.cpp:3012 +#: src/libslic3r/PrintConfig.cpp:248 src/libslic3r/PrintConfig.cpp:823 +#: src/libslic3r/PrintConfig.cpp:1759 src/libslic3r/PrintConfig.cpp:1769 +#: src/libslic3r/PrintConfig.cpp:2027 src/libslic3r/PrintConfig.cpp:2182 +#: src/libslic3r/PrintConfig.cpp:2381 src/libslic3r/PrintConfig.cpp:2882 +#: src/libslic3r/PrintConfig.cpp:3003 msgid "°" msgstr "" -#: src/libslic3r/PrintConfig.cpp:247 +#: src/libslic3r/PrintConfig.cpp:254 msgid "Bridges fan speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:248 +#: src/libslic3r/PrintConfig.cpp:255 msgid "This fan speed is enforced during all bridges and overhangs." msgstr "" -#: src/libslic3r/PrintConfig.cpp:249 src/libslic3r/PrintConfig.cpp:828 -#: src/libslic3r/PrintConfig.cpp:1148 src/libslic3r/PrintConfig.cpp:1327 -#: src/libslic3r/PrintConfig.cpp:1390 src/libslic3r/PrintConfig.cpp:1640 -#: src/libslic3r/PrintConfig.cpp:2568 src/libslic3r/PrintConfig.cpp:2805 -#: src/libslic3r/PrintConfig.cpp:2931 +#: src/libslic3r/PrintConfig.cpp:256 src/libslic3r/PrintConfig.cpp:835 +#: src/libslic3r/PrintConfig.cpp:1157 src/libslic3r/PrintConfig.cpp:1336 +#: src/libslic3r/PrintConfig.cpp:1399 src/libslic3r/PrintConfig.cpp:1651 +#: src/libslic3r/PrintConfig.cpp:2559 src/libslic3r/PrintConfig.cpp:2796 +#: src/libslic3r/PrintConfig.cpp:2922 msgid "%" msgstr "" -#: src/libslic3r/PrintConfig.cpp:256 +#: src/libslic3r/PrintConfig.cpp:263 msgid "Bridge flow ratio" msgstr "" -#: src/libslic3r/PrintConfig.cpp:258 +#: src/libslic3r/PrintConfig.cpp:265 msgid "" "This factor affects the amount of plastic for bridging. You can decrease it " "slightly to pull the extrudates and prevent sagging, although default " @@ -8105,84 +8218,84 @@ msgid "" "before tweaking this." msgstr "" -#: src/libslic3r/PrintConfig.cpp:268 +#: src/libslic3r/PrintConfig.cpp:275 msgid "Bridges" msgstr "" -#: src/libslic3r/PrintConfig.cpp:270 +#: src/libslic3r/PrintConfig.cpp:277 msgid "Speed for printing bridges." msgstr "" -#: 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 -#: src/libslic3r/PrintConfig.cpp:716 src/libslic3r/PrintConfig.cpp:966 -#: src/libslic3r/PrintConfig.cpp:1094 src/libslic3r/PrintConfig.cpp:1167 -#: src/libslic3r/PrintConfig.cpp:1243 src/libslic3r/PrintConfig.cpp:1277 -#: src/libslic3r/PrintConfig.cpp:1289 src/libslic3r/PrintConfig.cpp:1299 -#: src/libslic3r/PrintConfig.cpp:1349 src/libslic3r/PrintConfig.cpp:1408 -#: src/libslic3r/PrintConfig.cpp:1541 src/libslic3r/PrintConfig.cpp:1715 -#: src/libslic3r/PrintConfig.cpp:1724 src/libslic3r/PrintConfig.cpp:2170 -#: src/libslic3r/PrintConfig.cpp:2297 +#: src/libslic3r/PrintConfig.cpp:278 src/libslic3r/PrintConfig.cpp:652 +#: src/libslic3r/PrintConfig.cpp:660 src/libslic3r/PrintConfig.cpp:669 +#: src/libslic3r/PrintConfig.cpp:677 src/libslic3r/PrintConfig.cpp:704 +#: src/libslic3r/PrintConfig.cpp:723 src/libslic3r/PrintConfig.cpp:973 +#: src/libslic3r/PrintConfig.cpp:1103 src/libslic3r/PrintConfig.cpp:1176 +#: src/libslic3r/PrintConfig.cpp:1252 src/libslic3r/PrintConfig.cpp:1286 +#: src/libslic3r/PrintConfig.cpp:1298 src/libslic3r/PrintConfig.cpp:1308 +#: src/libslic3r/PrintConfig.cpp:1358 src/libslic3r/PrintConfig.cpp:1417 +#: src/libslic3r/PrintConfig.cpp:1552 src/libslic3r/PrintConfig.cpp:1726 +#: src/libslic3r/PrintConfig.cpp:1735 src/libslic3r/PrintConfig.cpp:2161 +#: src/libslic3r/PrintConfig.cpp:2288 msgid "mm/s" msgstr "" -#: src/libslic3r/PrintConfig.cpp:278 +#: src/libslic3r/PrintConfig.cpp:285 msgid "Brim width" msgstr "" -#: src/libslic3r/PrintConfig.cpp:279 +#: src/libslic3r/PrintConfig.cpp:286 msgid "" "Horizontal width of the brim that will be printed around each object on the " "first layer." msgstr "" -#: src/libslic3r/PrintConfig.cpp:286 +#: src/libslic3r/PrintConfig.cpp:293 msgid "Clip multi-part objects" msgstr "" -#: src/libslic3r/PrintConfig.cpp:287 +#: src/libslic3r/PrintConfig.cpp:294 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:294 +#: src/libslic3r/PrintConfig.cpp:301 msgid "Colorprint height" msgstr "" -#: src/libslic3r/PrintConfig.cpp:295 +#: src/libslic3r/PrintConfig.cpp:302 msgid "Heights at which a filament change is to occur." msgstr "" -#: src/libslic3r/PrintConfig.cpp:305 +#: src/libslic3r/PrintConfig.cpp:312 msgid "Compatible printers condition" msgstr "" -#: src/libslic3r/PrintConfig.cpp:306 +#: src/libslic3r/PrintConfig.cpp:313 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:320 +#: src/libslic3r/PrintConfig.cpp:327 msgid "Compatible print profiles condition" msgstr "" -#: src/libslic3r/PrintConfig.cpp:321 +#: src/libslic3r/PrintConfig.cpp:328 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:338 +#: src/libslic3r/PrintConfig.cpp:345 msgid "Complete individual objects" msgstr "" -#: src/libslic3r/PrintConfig.cpp:339 +#: src/libslic3r/PrintConfig.cpp:346 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). " @@ -8190,97 +8303,97 @@ msgid "" "warn and prevent you from extruder collisions, but beware." msgstr "" -#: src/libslic3r/PrintConfig.cpp:347 +#: src/libslic3r/PrintConfig.cpp:354 msgid "Enable auto cooling" msgstr "" -#: src/libslic3r/PrintConfig.cpp:348 +#: src/libslic3r/PrintConfig.cpp:355 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:353 +#: src/libslic3r/PrintConfig.cpp:360 msgid "Cooling tube position" msgstr "" -#: src/libslic3r/PrintConfig.cpp:354 +#: src/libslic3r/PrintConfig.cpp:361 msgid "Distance of the center-point of the cooling tube from the extruder tip." msgstr "" -#: src/libslic3r/PrintConfig.cpp:361 +#: src/libslic3r/PrintConfig.cpp:368 msgid "Cooling tube length" msgstr "" -#: src/libslic3r/PrintConfig.cpp:362 +#: src/libslic3r/PrintConfig.cpp:369 msgid "Length of the cooling tube to limit space for cooling moves inside it." msgstr "" -#: src/libslic3r/PrintConfig.cpp:370 +#: src/libslic3r/PrintConfig.cpp:377 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:379 +#: src/libslic3r/PrintConfig.cpp:386 msgid "Default filament profile" msgstr "" -#: src/libslic3r/PrintConfig.cpp:380 +#: src/libslic3r/PrintConfig.cpp:387 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:386 +#: src/libslic3r/PrintConfig.cpp:393 msgid "Default print profile" msgstr "" -#: src/libslic3r/PrintConfig.cpp:387 src/libslic3r/PrintConfig.cpp:2735 -#: src/libslic3r/PrintConfig.cpp:2746 +#: src/libslic3r/PrintConfig.cpp:394 src/libslic3r/PrintConfig.cpp:2726 +#: src/libslic3r/PrintConfig.cpp:2737 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:393 +#: src/libslic3r/PrintConfig.cpp:400 msgid "Disable fan for the first" msgstr "" -#: src/libslic3r/PrintConfig.cpp:394 +#: src/libslic3r/PrintConfig.cpp:401 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:403 +#: src/libslic3r/PrintConfig.cpp:410 msgid "Don't support bridges" msgstr "" -#: src/libslic3r/PrintConfig.cpp:405 +#: src/libslic3r/PrintConfig.cpp:412 msgid "" "Experimental option for preventing support material from being generated " "under bridged areas." msgstr "" -#: src/libslic3r/PrintConfig.cpp:411 +#: src/libslic3r/PrintConfig.cpp:418 msgid "Distance between copies" msgstr "" -#: src/libslic3r/PrintConfig.cpp:412 +#: src/libslic3r/PrintConfig.cpp:419 msgid "Distance used for the auto-arrange feature of the plater." msgstr "" -#: src/libslic3r/PrintConfig.cpp:420 +#: src/libslic3r/PrintConfig.cpp:427 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:430 +#: src/libslic3r/PrintConfig.cpp:437 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 " @@ -8289,66 +8402,66 @@ msgid "" "in extruder order." msgstr "" -#: src/libslic3r/PrintConfig.cpp:441 +#: src/libslic3r/PrintConfig.cpp:448 msgid "Ensure vertical shell thickness" msgstr "" -#: src/libslic3r/PrintConfig.cpp:443 +#: src/libslic3r/PrintConfig.cpp:450 msgid "" "Add solid infill near sloping surfaces to guarantee the vertical shell " "thickness (top+bottom solid layers)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:449 +#: src/libslic3r/PrintConfig.cpp:456 msgid "Top fill pattern" msgstr "" -#: src/libslic3r/PrintConfig.cpp:451 +#: src/libslic3r/PrintConfig.cpp:458 msgid "" "Fill pattern for top infill. This only affects the top visible layer, and " "not its adjacent solid shells." msgstr "" -#: src/libslic3r/PrintConfig.cpp:460 src/libslic3r/PrintConfig.cpp:881 -#: src/libslic3r/PrintConfig.cpp:2151 +#: src/libslic3r/PrintConfig.cpp:467 src/libslic3r/PrintConfig.cpp:888 +#: src/libslic3r/PrintConfig.cpp:2142 msgid "Rectilinear" msgstr "" -#: src/libslic3r/PrintConfig.cpp:461 +#: src/libslic3r/PrintConfig.cpp:468 msgid "Monotonic" msgstr "" -#: src/libslic3r/PrintConfig.cpp:462 src/libslic3r/PrintConfig.cpp:887 +#: src/libslic3r/PrintConfig.cpp:469 src/libslic3r/PrintConfig.cpp:894 msgid "Concentric" msgstr "" -#: src/libslic3r/PrintConfig.cpp:463 src/libslic3r/PrintConfig.cpp:891 +#: src/libslic3r/PrintConfig.cpp:470 src/libslic3r/PrintConfig.cpp:898 msgid "Hilbert Curve" msgstr "" -#: src/libslic3r/PrintConfig.cpp:464 src/libslic3r/PrintConfig.cpp:892 +#: src/libslic3r/PrintConfig.cpp:471 src/libslic3r/PrintConfig.cpp:899 msgid "Archimedean Chords" msgstr "" -#: src/libslic3r/PrintConfig.cpp:465 src/libslic3r/PrintConfig.cpp:893 +#: src/libslic3r/PrintConfig.cpp:472 src/libslic3r/PrintConfig.cpp:900 msgid "Octagram Spiral" msgstr "" -#: src/libslic3r/PrintConfig.cpp:471 +#: src/libslic3r/PrintConfig.cpp:478 msgid "Bottom fill pattern" msgstr "" -#: src/libslic3r/PrintConfig.cpp:473 +#: src/libslic3r/PrintConfig.cpp:480 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:482 src/libslic3r/PrintConfig.cpp:493 +#: src/libslic3r/PrintConfig.cpp:489 src/libslic3r/PrintConfig.cpp:500 msgid "External perimeters" msgstr "" -#: src/libslic3r/PrintConfig.cpp:484 +#: src/libslic3r/PrintConfig.cpp:491 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, " @@ -8356,43 +8469,43 @@ msgid "" "(for example 200%), it will be computed over layer height." msgstr "" -#: src/libslic3r/PrintConfig.cpp:487 src/libslic3r/PrintConfig.cpp:596 -#: src/libslic3r/PrintConfig.cpp:924 src/libslic3r/PrintConfig.cpp:937 -#: src/libslic3r/PrintConfig.cpp:1059 src/libslic3r/PrintConfig.cpp:1085 -#: src/libslic3r/PrintConfig.cpp:1531 src/libslic3r/PrintConfig.cpp:1876 -#: src/libslic3r/PrintConfig.cpp:2025 src/libslic3r/PrintConfig.cpp:2093 -#: src/libslic3r/PrintConfig.cpp:2254 +#: src/libslic3r/PrintConfig.cpp:494 src/libslic3r/PrintConfig.cpp:603 +#: src/libslic3r/PrintConfig.cpp:931 src/libslic3r/PrintConfig.cpp:944 +#: src/libslic3r/PrintConfig.cpp:1068 src/libslic3r/PrintConfig.cpp:1094 +#: src/libslic3r/PrintConfig.cpp:1542 src/libslic3r/PrintConfig.cpp:1867 +#: src/libslic3r/PrintConfig.cpp:2016 src/libslic3r/PrintConfig.cpp:2084 +#: src/libslic3r/PrintConfig.cpp:2245 msgid "mm or %" msgstr "" -#: src/libslic3r/PrintConfig.cpp:495 +#: src/libslic3r/PrintConfig.cpp:502 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:498 src/libslic3r/PrintConfig.cpp:946 -#: src/libslic3r/PrintConfig.cpp:1835 src/libslic3r/PrintConfig.cpp:1887 -#: src/libslic3r/PrintConfig.cpp:2137 src/libslic3r/PrintConfig.cpp:2267 +#: src/libslic3r/PrintConfig.cpp:505 src/libslic3r/PrintConfig.cpp:953 +#: src/libslic3r/PrintConfig.cpp:1826 src/libslic3r/PrintConfig.cpp:1878 +#: src/libslic3r/PrintConfig.cpp:2128 src/libslic3r/PrintConfig.cpp:2258 msgid "mm/s or %" msgstr "" -#: src/libslic3r/PrintConfig.cpp:505 +#: src/libslic3r/PrintConfig.cpp:512 msgid "External perimeters first" msgstr "" -#: src/libslic3r/PrintConfig.cpp:507 +#: src/libslic3r/PrintConfig.cpp:514 msgid "" "Print contour perimeters from the outermost one to the innermost one instead " "of the default inverse order." msgstr "" -#: src/libslic3r/PrintConfig.cpp:513 +#: src/libslic3r/PrintConfig.cpp:520 msgid "Extra perimeters if needed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:515 +#: src/libslic3r/PrintConfig.cpp:522 #, possible-c-format msgid "" "Add more perimeters when needed for avoiding gaps in sloping walls. Slic3r " @@ -8400,14 +8513,14 @@ msgid "" "is supported." msgstr "" -#: src/libslic3r/PrintConfig.cpp:525 +#: src/libslic3r/PrintConfig.cpp:532 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:537 +#: src/libslic3r/PrintConfig.cpp:544 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 " @@ -8415,26 +8528,26 @@ msgid "" "extruder can peek before colliding with other printed objects." msgstr "" -#: src/libslic3r/PrintConfig.cpp:548 +#: src/libslic3r/PrintConfig.cpp:555 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:558 +#: src/libslic3r/PrintConfig.cpp:565 msgid "Extruder Color" msgstr "" -#: src/libslic3r/PrintConfig.cpp:559 src/libslic3r/PrintConfig.cpp:619 +#: src/libslic3r/PrintConfig.cpp:566 src/libslic3r/PrintConfig.cpp:626 msgid "This is only used in the Slic3r interface as a visual help." msgstr "" -#: src/libslic3r/PrintConfig.cpp:565 +#: src/libslic3r/PrintConfig.cpp:572 msgid "Extruder offset" msgstr "" -#: src/libslic3r/PrintConfig.cpp:566 +#: src/libslic3r/PrintConfig.cpp:573 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 " @@ -8442,21 +8555,21 @@ msgid "" "coordinates (they will be subtracted from the XY coordinate)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:575 +#: src/libslic3r/PrintConfig.cpp:582 msgid "Extrusion axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:576 +#: src/libslic3r/PrintConfig.cpp:583 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:581 +#: src/libslic3r/PrintConfig.cpp:588 msgid "Extrusion multiplier" msgstr "" -#: src/libslic3r/PrintConfig.cpp:582 +#: src/libslic3r/PrintConfig.cpp:589 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. " @@ -8464,11 +8577,11 @@ msgid "" "more, check filament diameter and your firmware E steps." msgstr "" -#: src/libslic3r/PrintConfig.cpp:590 +#: src/libslic3r/PrintConfig.cpp:597 msgid "Default extrusion width" msgstr "" -#: src/libslic3r/PrintConfig.cpp:592 +#: src/libslic3r/PrintConfig.cpp:599 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 " @@ -8477,119 +8590,119 @@ msgid "" "height." msgstr "" -#: src/libslic3r/PrintConfig.cpp:602 +#: src/libslic3r/PrintConfig.cpp:609 msgid "Keep fan always on" msgstr "" -#: src/libslic3r/PrintConfig.cpp:603 +#: src/libslic3r/PrintConfig.cpp:610 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:608 +#: src/libslic3r/PrintConfig.cpp:615 msgid "Enable fan if layer print time is below" msgstr "" -#: src/libslic3r/PrintConfig.cpp:609 +#: src/libslic3r/PrintConfig.cpp:616 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:611 src/libslic3r/PrintConfig.cpp:1823 +#: src/libslic3r/PrintConfig.cpp:618 src/libslic3r/PrintConfig.cpp:1814 msgid "approximate seconds" msgstr "" -#: src/libslic3r/PrintConfig.cpp:624 +#: src/libslic3r/PrintConfig.cpp:631 msgid "Filament notes" msgstr "" -#: src/libslic3r/PrintConfig.cpp:625 +#: src/libslic3r/PrintConfig.cpp:632 msgid "You can put your notes regarding the filament here." msgstr "" -#: src/libslic3r/PrintConfig.cpp:633 src/libslic3r/PrintConfig.cpp:1355 +#: src/libslic3r/PrintConfig.cpp:640 src/libslic3r/PrintConfig.cpp:1364 msgid "Max volumetric speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:634 +#: src/libslic3r/PrintConfig.cpp:641 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:643 +#: src/libslic3r/PrintConfig.cpp:650 msgid "Loading speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:644 +#: src/libslic3r/PrintConfig.cpp:651 msgid "Speed used for loading the filament on the wipe tower." msgstr "" -#: src/libslic3r/PrintConfig.cpp:651 +#: src/libslic3r/PrintConfig.cpp:658 msgid "Loading speed at the start" msgstr "" -#: src/libslic3r/PrintConfig.cpp:652 +#: src/libslic3r/PrintConfig.cpp:659 msgid "Speed used at the very beginning of loading phase." msgstr "" -#: src/libslic3r/PrintConfig.cpp:659 +#: src/libslic3r/PrintConfig.cpp:666 msgid "Unloading speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:660 +#: src/libslic3r/PrintConfig.cpp:667 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:668 +#: src/libslic3r/PrintConfig.cpp:675 msgid "Unloading speed at the start" msgstr "" -#: src/libslic3r/PrintConfig.cpp:669 +#: src/libslic3r/PrintConfig.cpp:676 msgid "" "Speed used for unloading the tip of the filament immediately after ramming." msgstr "" -#: src/libslic3r/PrintConfig.cpp:676 +#: src/libslic3r/PrintConfig.cpp:683 msgid "Delay after unloading" msgstr "" -#: src/libslic3r/PrintConfig.cpp:677 +#: src/libslic3r/PrintConfig.cpp:684 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:686 +#: src/libslic3r/PrintConfig.cpp:693 msgid "Number of cooling moves" msgstr "" -#: src/libslic3r/PrintConfig.cpp:687 +#: src/libslic3r/PrintConfig.cpp:694 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:695 +#: src/libslic3r/PrintConfig.cpp:702 msgid "Speed of the first cooling move" msgstr "" -#: src/libslic3r/PrintConfig.cpp:696 +#: src/libslic3r/PrintConfig.cpp:703 msgid "Cooling moves are gradually accelerating beginning at this speed." msgstr "" -#: src/libslic3r/PrintConfig.cpp:703 +#: src/libslic3r/PrintConfig.cpp:710 msgid "Minimal purge on wipe tower" msgstr "" -#: src/libslic3r/PrintConfig.cpp:704 +#: src/libslic3r/PrintConfig.cpp:711 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 " @@ -8598,63 +8711,63 @@ msgid "" "to produce successive infill or sacrificial object extrusions reliably." msgstr "" -#: src/libslic3r/PrintConfig.cpp:708 +#: src/libslic3r/PrintConfig.cpp:715 msgid "mm³" msgstr "" -#: src/libslic3r/PrintConfig.cpp:714 +#: src/libslic3r/PrintConfig.cpp:721 msgid "Speed of the last cooling move" msgstr "" -#: src/libslic3r/PrintConfig.cpp:715 +#: src/libslic3r/PrintConfig.cpp:722 msgid "Cooling moves are gradually accelerating towards this speed." msgstr "" -#: src/libslic3r/PrintConfig.cpp:722 +#: src/libslic3r/PrintConfig.cpp:729 msgid "Filament load time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:723 +#: src/libslic3r/PrintConfig.cpp:730 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:730 +#: src/libslic3r/PrintConfig.cpp:737 msgid "Ramming parameters" msgstr "" -#: src/libslic3r/PrintConfig.cpp:731 +#: src/libslic3r/PrintConfig.cpp:738 msgid "" "This string is edited by RammingDialog and contains ramming specific " "parameters." msgstr "" -#: src/libslic3r/PrintConfig.cpp:737 +#: src/libslic3r/PrintConfig.cpp:744 msgid "Filament unload time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:738 +#: src/libslic3r/PrintConfig.cpp:745 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:746 +#: src/libslic3r/PrintConfig.cpp:753 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:753 src/libslic3r/PrintConfig.cpp:2646 -#: src/libslic3r/PrintConfig.cpp:2647 +#: src/libslic3r/PrintConfig.cpp:760 src/libslic3r/PrintConfig.cpp:2637 +#: src/libslic3r/PrintConfig.cpp:2638 msgid "Density" msgstr "" -#: src/libslic3r/PrintConfig.cpp:754 +#: src/libslic3r/PrintConfig.cpp:761 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 " @@ -8662,129 +8775,129 @@ msgid "" "displacement." msgstr "" -#: src/libslic3r/PrintConfig.cpp:757 +#: src/libslic3r/PrintConfig.cpp:764 msgid "g/cm³" msgstr "" -#: src/libslic3r/PrintConfig.cpp:762 +#: src/libslic3r/PrintConfig.cpp:769 msgid "Filament type" msgstr "" -#: src/libslic3r/PrintConfig.cpp:763 +#: src/libslic3r/PrintConfig.cpp:770 msgid "The filament material type for use in custom G-codes." msgstr "" -#: src/libslic3r/PrintConfig.cpp:790 +#: src/libslic3r/PrintConfig.cpp:797 msgid "Soluble material" msgstr "" -#: src/libslic3r/PrintConfig.cpp:791 +#: src/libslic3r/PrintConfig.cpp:798 msgid "Soluble material is most likely used for a soluble support." msgstr "" -#: src/libslic3r/PrintConfig.cpp:797 +#: src/libslic3r/PrintConfig.cpp:804 msgid "" "Enter your filament cost per kg here. This is only for statistical " "information." msgstr "" -#: src/libslic3r/PrintConfig.cpp:798 +#: src/libslic3r/PrintConfig.cpp:805 msgid "money/kg" msgstr "" -#: src/libslic3r/PrintConfig.cpp:807 src/libslic3r/PrintConfig.cpp:2730 +#: src/libslic3r/PrintConfig.cpp:814 src/libslic3r/PrintConfig.cpp:2721 msgid "(Unknown)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:811 +#: src/libslic3r/PrintConfig.cpp:818 msgid "Fill angle" msgstr "" -#: src/libslic3r/PrintConfig.cpp:813 +#: src/libslic3r/PrintConfig.cpp:820 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:825 +#: src/libslic3r/PrintConfig.cpp:832 msgid "Fill density" msgstr "" -#: src/libslic3r/PrintConfig.cpp:827 +#: src/libslic3r/PrintConfig.cpp:834 msgid "Density of internal infill, expressed in the range 0% - 100%." msgstr "" -#: src/libslic3r/PrintConfig.cpp:862 +#: src/libslic3r/PrintConfig.cpp:869 msgid "Fill pattern" msgstr "" -#: src/libslic3r/PrintConfig.cpp:864 +#: src/libslic3r/PrintConfig.cpp:871 msgid "Fill pattern for general low-density infill." msgstr "" -#: src/libslic3r/PrintConfig.cpp:882 +#: src/libslic3r/PrintConfig.cpp:889 msgid "Grid" msgstr "" -#: src/libslic3r/PrintConfig.cpp:883 +#: src/libslic3r/PrintConfig.cpp:890 msgid "Triangles" msgstr "" -#: src/libslic3r/PrintConfig.cpp:884 +#: src/libslic3r/PrintConfig.cpp:891 msgid "Stars" msgstr "" -#: src/libslic3r/PrintConfig.cpp:885 +#: src/libslic3r/PrintConfig.cpp:892 msgid "Cubic" msgstr "" -#: src/libslic3r/PrintConfig.cpp:886 +#: src/libslic3r/PrintConfig.cpp:893 msgid "Line" msgstr "" -#: src/libslic3r/PrintConfig.cpp:888 src/libslic3r/PrintConfig.cpp:2153 +#: src/libslic3r/PrintConfig.cpp:895 src/libslic3r/PrintConfig.cpp:2144 msgid "Honeycomb" msgstr "" -#: src/libslic3r/PrintConfig.cpp:889 +#: src/libslic3r/PrintConfig.cpp:896 msgid "3D Honeycomb" msgstr "" -#: src/libslic3r/PrintConfig.cpp:890 +#: src/libslic3r/PrintConfig.cpp:897 msgid "Gyroid" msgstr "" -#: src/libslic3r/PrintConfig.cpp:894 +#: src/libslic3r/PrintConfig.cpp:901 msgid "Adaptive Cubic" msgstr "" -#: src/libslic3r/PrintConfig.cpp:895 +#: src/libslic3r/PrintConfig.cpp:902 msgid "Support Cubic" msgstr "" -#: src/libslic3r/PrintConfig.cpp:899 src/libslic3r/PrintConfig.cpp:908 -#: src/libslic3r/PrintConfig.cpp:918 src/libslic3r/PrintConfig.cpp:952 +#: src/libslic3r/PrintConfig.cpp:906 src/libslic3r/PrintConfig.cpp:915 +#: src/libslic3r/PrintConfig.cpp:925 src/libslic3r/PrintConfig.cpp:959 msgid "First layer" msgstr "" -#: src/libslic3r/PrintConfig.cpp:900 +#: src/libslic3r/PrintConfig.cpp:907 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:909 +#: src/libslic3r/PrintConfig.cpp:916 msgid "First layer bed temperature" msgstr "" -#: src/libslic3r/PrintConfig.cpp:910 +#: src/libslic3r/PrintConfig.cpp:917 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:920 +#: src/libslic3r/PrintConfig.cpp:927 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 " @@ -8792,7 +8905,7 @@ msgid "" "layer height. If set to zero, it will use the default extrusion width." msgstr "" -#: src/libslic3r/PrintConfig.cpp:933 +#: src/libslic3r/PrintConfig.cpp:940 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 " @@ -8800,51 +8913,51 @@ msgid "" "example: 150%) over the default layer height." msgstr "" -#: src/libslic3r/PrintConfig.cpp:942 +#: src/libslic3r/PrintConfig.cpp:949 msgid "First layer speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:943 +#: src/libslic3r/PrintConfig.cpp:950 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:953 -msgid "First layer extruder temperature" +#: src/libslic3r/PrintConfig.cpp:960 +msgid "First layer nozzle temperature" msgstr "" -#: src/libslic3r/PrintConfig.cpp:954 +#: src/libslic3r/PrintConfig.cpp:961 msgid "" -"Extruder temperature for first layer. If you want to control temperature " +"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 file." +"commands in the output G-code." msgstr "" -#: src/libslic3r/PrintConfig.cpp:964 +#: src/libslic3r/PrintConfig.cpp:971 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:972 +#: src/libslic3r/PrintConfig.cpp:979 msgid "Verbose G-code" msgstr "" -#: src/libslic3r/PrintConfig.cpp:973 +#: src/libslic3r/PrintConfig.cpp:980 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:980 +#: src/libslic3r/PrintConfig.cpp:987 msgid "G-code flavor" msgstr "" -#: src/libslic3r/PrintConfig.cpp:981 +#: src/libslic3r/PrintConfig.cpp:988 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 " @@ -8852,15 +8965,15 @@ msgid "" "extrusion value at all." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1004 +#: src/libslic3r/PrintConfig.cpp:1013 msgid "No extrusion" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1009 +#: src/libslic3r/PrintConfig.cpp:1018 msgid "Label objects" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1010 +#: src/libslic3r/PrintConfig.cpp:1019 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 " @@ -8868,46 +8981,46 @@ msgid "" "setup and Wipe into Object / Wipe into Infill." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1017 +#: src/libslic3r/PrintConfig.cpp:1026 msgid "High extruder current on filament swap" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1018 +#: src/libslic3r/PrintConfig.cpp:1027 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:1026 +#: src/libslic3r/PrintConfig.cpp:1035 msgid "" "This is the acceleration your printer will use for infill. Set zero to " "disable acceleration control for infill." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1034 +#: src/libslic3r/PrintConfig.cpp:1043 msgid "Combine infill every" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1036 +#: src/libslic3r/PrintConfig.cpp:1045 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:1039 +#: src/libslic3r/PrintConfig.cpp:1048 msgid "Combine infill every n layers" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1045 +#: src/libslic3r/PrintConfig.cpp:1054 msgid "Infill extruder" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1047 +#: src/libslic3r/PrintConfig.cpp:1056 msgid "The extruder to use when printing infill." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1055 +#: src/libslic3r/PrintConfig.cpp:1064 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 " @@ -8916,32 +9029,32 @@ msgid "" "example 90%) it will be computed over layer height." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1065 +#: src/libslic3r/PrintConfig.cpp:1074 msgid "Infill before perimeters" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1066 +#: src/libslic3r/PrintConfig.cpp:1075 msgid "" "This option will switch the print order of perimeters and infill, making the " "latter first." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1071 +#: src/libslic3r/PrintConfig.cpp:1080 msgid "Only infill where needed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1073 +#: src/libslic3r/PrintConfig.cpp:1082 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:1080 +#: src/libslic3r/PrintConfig.cpp:1089 msgid "Infill/perimeters overlap" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1082 +#: src/libslic3r/PrintConfig.cpp:1091 msgid "" "This setting applies an additional overlap between infill and perimeters for " "better bonding. Theoretically this shouldn't be needed, but backlash might " @@ -8949,63 +9062,59 @@ msgid "" "perimeter extrusion width." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1093 +#: src/libslic3r/PrintConfig.cpp:1102 msgid "Speed for printing the internal fill. Set to zero for auto." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1101 +#: src/libslic3r/PrintConfig.cpp:1110 msgid "Inherits profile" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1102 +#: src/libslic3r/PrintConfig.cpp:1111 msgid "Name of the profile, from which this profile inherits." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1115 +#: src/libslic3r/PrintConfig.cpp:1124 msgid "Interface shells" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1116 +#: src/libslic3r/PrintConfig.cpp:1125 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:1124 +#: src/libslic3r/PrintConfig.cpp:1133 msgid "Enable ironing" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1125 +#: src/libslic3r/PrintConfig.cpp:1134 msgid "" "Enable ironing of the top layers with the hot print head for smooth surface" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1131 src/libslic3r/PrintConfig.cpp:1133 +#: src/libslic3r/PrintConfig.cpp:1140 src/libslic3r/PrintConfig.cpp:1142 msgid "Ironing Type" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1145 +#: src/libslic3r/PrintConfig.cpp:1154 msgid "Flow rate" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1147 +#: src/libslic3r/PrintConfig.cpp:1156 msgid "Percent of a flow rate relative to object's normal layer height." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1155 +#: src/libslic3r/PrintConfig.cpp:1164 msgid "Spacing between ironing passes" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1157 +#: src/libslic3r/PrintConfig.cpp:1166 msgid "Distance between ironing lines" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1164 src/libslic3r/PrintConfig.cpp:1166 -msgid "Ironing speed" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1174 +#: src/libslic3r/PrintConfig.cpp:1183 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 " @@ -9013,11 +9122,11 @@ msgid "" "[layer_z]." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1185 +#: src/libslic3r/PrintConfig.cpp:1194 msgid "Supports remaining times" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1186 +#: src/libslic3r/PrintConfig.cpp:1195 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. " @@ -9025,163 +9134,175 @@ msgid "" "firmware supports M73 Qxx Sxx for the silent mode." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1194 +#: src/libslic3r/PrintConfig.cpp:1203 msgid "Supports stealth mode" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1195 +#: src/libslic3r/PrintConfig.cpp:1204 msgid "The firmware supports stealth mode" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1200 -msgid "How to apply" +#: src/libslic3r/PrintConfig.cpp:1209 +msgid "How to apply limits" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1201 +#: src/libslic3r/PrintConfig.cpp:1210 msgid "Purpose of Machine Limits" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1203 +#: src/libslic3r/PrintConfig.cpp:1212 msgid "How to apply the Machine Limits" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1233 -msgid "Maximum feedrate X" +#: src/libslic3r/PrintConfig.cpp:1217 +msgid "Emit to G-code" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1234 -msgid "Maximum feedrate Y" +#: src/libslic3r/PrintConfig.cpp:1218 +msgid "Use for time estimate" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1235 -msgid "Maximum feedrate Z" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1236 -msgid "Maximum feedrate E" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1239 -msgid "Maximum feedrate of the X axis" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1240 -msgid "Maximum feedrate of the Y axis" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1241 -msgid "Maximum feedrate of the Z axis" +#: src/libslic3r/PrintConfig.cpp:1219 +msgid "Ignore" msgstr "" #: src/libslic3r/PrintConfig.cpp:1242 -msgid "Maximum feedrate of the E axis" +msgid "Maximum feedrate X" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1243 +msgid "Maximum feedrate Y" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1244 +msgid "Maximum feedrate Z" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1245 +msgid "Maximum feedrate E" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1248 +msgid "Maximum feedrate of the X axis" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1249 +msgid "Maximum feedrate of the Y axis" msgstr "" #: src/libslic3r/PrintConfig.cpp:1250 -msgid "Maximum acceleration X" +msgid "Maximum feedrate of the Z axis" msgstr "" #: src/libslic3r/PrintConfig.cpp:1251 -msgid "Maximum acceleration Y" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1252 -msgid "Maximum acceleration Z" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1253 -msgid "Maximum acceleration E" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1256 -msgid "Maximum acceleration of the X axis" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1257 -msgid "Maximum acceleration of the Y axis" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1258 -msgid "Maximum acceleration of the Z axis" +msgid "Maximum feedrate of the E axis" msgstr "" #: src/libslic3r/PrintConfig.cpp:1259 -msgid "Maximum acceleration of the E axis" +msgid "Maximum acceleration X" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1260 +msgid "Maximum acceleration Y" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1261 +msgid "Maximum acceleration Z" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1262 +msgid "Maximum acceleration E" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1265 +msgid "Maximum acceleration of the X axis" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1266 +msgid "Maximum acceleration of the Y axis" msgstr "" #: src/libslic3r/PrintConfig.cpp:1267 -msgid "Maximum jerk X" +msgid "Maximum acceleration of the Z axis" msgstr "" #: src/libslic3r/PrintConfig.cpp:1268 -msgid "Maximum jerk Y" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1269 -msgid "Maximum jerk Z" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1270 -msgid "Maximum jerk E" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1273 -msgid "Maximum jerk of the X axis" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1274 -msgid "Maximum jerk of the Y axis" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1275 -msgid "Maximum jerk of the Z axis" +msgid "Maximum acceleration of the E axis" msgstr "" #: src/libslic3r/PrintConfig.cpp:1276 +msgid "Maximum jerk X" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1277 +msgid "Maximum jerk Y" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1278 +msgid "Maximum jerk Z" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1279 +msgid "Maximum jerk E" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1282 +msgid "Maximum jerk of the X axis" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1283 +msgid "Maximum jerk of the Y axis" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1284 +msgid "Maximum jerk of the Z axis" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1285 msgid "Maximum jerk of the E axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1286 +#: src/libslic3r/PrintConfig.cpp:1295 msgid "Minimum feedrate when extruding" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1288 +#: src/libslic3r/PrintConfig.cpp:1297 msgid "Minimum feedrate when extruding (M205 S)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1296 +#: src/libslic3r/PrintConfig.cpp:1305 msgid "Minimum travel feedrate" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1298 +#: src/libslic3r/PrintConfig.cpp:1307 msgid "Minimum travel feedrate (M205 T)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1306 +#: src/libslic3r/PrintConfig.cpp:1315 msgid "Maximum acceleration when extruding" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1308 +#: src/libslic3r/PrintConfig.cpp:1317 msgid "Maximum acceleration when extruding (M204 S)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1316 +#: src/libslic3r/PrintConfig.cpp:1325 msgid "Maximum acceleration when retracting" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1318 +#: src/libslic3r/PrintConfig.cpp:1327 msgid "Maximum acceleration when retracting (M204 T)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1325 src/libslic3r/PrintConfig.cpp:1334 +#: src/libslic3r/PrintConfig.cpp:1334 src/libslic3r/PrintConfig.cpp:1343 msgid "Max" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1326 +#: src/libslic3r/PrintConfig.cpp:1335 msgid "This setting represents the maximum speed of your fan." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1335 +#: src/libslic3r/PrintConfig.cpp:1344 #, possible-c-format msgid "" "This is the highest printable layer height for this extruder, used to cap " @@ -9190,28 +9311,28 @@ msgid "" "adhesion. If set to 0, layer height is limited to 75% of the nozzle diameter." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1345 +#: src/libslic3r/PrintConfig.cpp:1354 msgid "Max print speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1346 +#: src/libslic3r/PrintConfig.cpp:1355 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:1356 +#: src/libslic3r/PrintConfig.cpp:1365 msgid "" "This experimental setting is used to set the maximum volumetric speed your " "extruder supports." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1365 +#: src/libslic3r/PrintConfig.cpp:1374 msgid "Max volumetric slope positive" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1366 src/libslic3r/PrintConfig.cpp:1377 +#: src/libslic3r/PrintConfig.cpp:1375 src/libslic3r/PrintConfig.cpp:1386 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 " @@ -9219,95 +9340,95 @@ msgid "" "s) to 5.4 mm³/s (feedrate 60 mm/s) will take at least 2 seconds." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1370 src/libslic3r/PrintConfig.cpp:1381 +#: src/libslic3r/PrintConfig.cpp:1379 src/libslic3r/PrintConfig.cpp:1390 msgid "mm³/s²" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1376 +#: src/libslic3r/PrintConfig.cpp:1385 msgid "Max volumetric slope negative" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1388 src/libslic3r/PrintConfig.cpp:1397 +#: src/libslic3r/PrintConfig.cpp:1397 src/libslic3r/PrintConfig.cpp:1406 msgid "Min" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1389 +#: src/libslic3r/PrintConfig.cpp:1398 msgid "This setting represents the minimum PWM your fan needs to work." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1398 +#: src/libslic3r/PrintConfig.cpp:1407 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:1406 +#: src/libslic3r/PrintConfig.cpp:1415 msgid "Min print speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1407 +#: src/libslic3r/PrintConfig.cpp:1416 msgid "Slic3r will not scale speed down below this speed." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1414 +#: src/libslic3r/PrintConfig.cpp:1423 msgid "Minimal filament extrusion length" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1415 +#: src/libslic3r/PrintConfig.cpp:1424 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:1424 +#: src/libslic3r/PrintConfig.cpp:1433 msgid "Configuration notes" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1425 +#: src/libslic3r/PrintConfig.cpp:1434 msgid "" "You can put here your personal notes. This text will be added to the G-code " "header comments." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1435 +#: src/libslic3r/PrintConfig.cpp:1444 msgid "" "This is the diameter of your extruder nozzle (for example: 0.5, 0.35 etc.)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1440 +#: src/libslic3r/PrintConfig.cpp:1449 msgid "Host Type" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1441 +#: src/libslic3r/PrintConfig.cpp:1450 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:1456 +#: src/libslic3r/PrintConfig.cpp:1467 msgid "Only retract when crossing perimeters" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1457 +#: src/libslic3r/PrintConfig.cpp:1468 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:1464 +#: src/libslic3r/PrintConfig.cpp:1475 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:1471 +#: src/libslic3r/PrintConfig.cpp:1482 msgid "Output filename format" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1472 +#: src/libslic3r/PrintConfig.cpp:1483 msgid "" "You can use all configuration options as variables inside this template. For " "example: [layer_height], [fill_density] etc. You can also use [timestamp], " @@ -9315,31 +9436,31 @@ msgid "" "[input_filename], [input_filename_base]." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1481 +#: src/libslic3r/PrintConfig.cpp:1492 msgid "Detect bridging perimeters" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1483 +#: src/libslic3r/PrintConfig.cpp:1494 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:1489 +#: src/libslic3r/PrintConfig.cpp:1500 msgid "Filament parking position" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1490 +#: src/libslic3r/PrintConfig.cpp:1501 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:1498 +#: src/libslic3r/PrintConfig.cpp:1509 msgid "Extra loading distance" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1499 +#: src/libslic3r/PrintConfig.cpp:1510 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 " @@ -9347,28 +9468,28 @@ msgid "" "than unloading." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1507 src/libslic3r/PrintConfig.cpp:1525 -#: src/libslic3r/PrintConfig.cpp:1538 src/libslic3r/PrintConfig.cpp:1548 +#: src/libslic3r/PrintConfig.cpp:1518 src/libslic3r/PrintConfig.cpp:1536 +#: src/libslic3r/PrintConfig.cpp:1549 src/libslic3r/PrintConfig.cpp:1559 msgid "Perimeters" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1508 +#: src/libslic3r/PrintConfig.cpp:1519 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 "" -#: src/libslic3r/PrintConfig.cpp:1516 +#: src/libslic3r/PrintConfig.cpp:1527 msgid "Perimeter extruder" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1518 +#: src/libslic3r/PrintConfig.cpp:1529 msgid "" "The extruder to use when printing perimeters and brim. First extruder is 1." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1527 +#: src/libslic3r/PrintConfig.cpp:1538 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 " @@ -9377,12 +9498,12 @@ msgid "" "it will be computed over layer height." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1540 +#: src/libslic3r/PrintConfig.cpp:1551 msgid "" "Speed for perimeters (contours, aka vertical shells). Set to zero for auto." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1550 +#: src/libslic3r/PrintConfig.cpp:1561 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 " @@ -9390,11 +9511,11 @@ msgid "" "Perimeters option is enabled." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1554 +#: src/libslic3r/PrintConfig.cpp:1565 msgid "(minimum)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1562 +#: src/libslic3r/PrintConfig.cpp:1573 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. " @@ -9403,55 +9524,55 @@ msgid "" "environment variables." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1574 +#: src/libslic3r/PrintConfig.cpp:1585 msgid "Printer type" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1575 +#: src/libslic3r/PrintConfig.cpp:1586 msgid "Type of the printer." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1580 +#: src/libslic3r/PrintConfig.cpp:1591 msgid "Printer notes" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1581 +#: src/libslic3r/PrintConfig.cpp:1592 msgid "You can put your notes regarding the printer here." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1589 +#: src/libslic3r/PrintConfig.cpp:1600 msgid "Printer vendor" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1590 +#: src/libslic3r/PrintConfig.cpp:1601 msgid "Name of the printer vendor." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1595 +#: src/libslic3r/PrintConfig.cpp:1606 msgid "Printer variant" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1596 +#: src/libslic3r/PrintConfig.cpp:1607 msgid "" "Name of the printer variant. For example, the printer variants may be " "differentiated by a nozzle diameter." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1609 +#: src/libslic3r/PrintConfig.cpp:1620 msgid "Raft layers" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1611 +#: src/libslic3r/PrintConfig.cpp:1622 msgid "" "The object will be raised by this number of layers, and support material " "will be generated under it." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1619 +#: src/libslic3r/PrintConfig.cpp:1630 msgid "Resolution" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1620 +#: src/libslic3r/PrintConfig.cpp:1631 msgid "" "Minimum detail resolution, used to simplify the input file for speeding up " "the slicing job and reducing memory usage. High-resolution models often " @@ -9459,293 +9580,277 @@ msgid "" "simplification and use full resolution from input." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1630 +#: src/libslic3r/PrintConfig.cpp:1641 msgid "Minimum travel after retraction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1631 +#: src/libslic3r/PrintConfig.cpp:1642 msgid "" "Retraction is not triggered when travel moves are shorter than this length." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1637 +#: src/libslic3r/PrintConfig.cpp:1648 msgid "Retract amount before wipe" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1638 +#: src/libslic3r/PrintConfig.cpp:1649 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:1645 +#: src/libslic3r/PrintConfig.cpp:1656 msgid "Retract on layer change" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1646 +#: src/libslic3r/PrintConfig.cpp:1657 msgid "This flag enforces a retraction whenever a Z move is done." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1651 src/libslic3r/PrintConfig.cpp:1659 +#: src/libslic3r/PrintConfig.cpp:1662 src/libslic3r/PrintConfig.cpp:1670 msgid "Length" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1652 +#: src/libslic3r/PrintConfig.cpp:1663 msgid "Retraction Length" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1653 +#: src/libslic3r/PrintConfig.cpp:1664 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:1655 src/libslic3r/PrintConfig.cpp:1664 +#: src/libslic3r/PrintConfig.cpp:1666 src/libslic3r/PrintConfig.cpp:1675 msgid "mm (zero to disable)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1660 +#: src/libslic3r/PrintConfig.cpp:1671 msgid "Retraction Length (Toolchange)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1661 +#: src/libslic3r/PrintConfig.cpp:1672 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:1669 +#: src/libslic3r/PrintConfig.cpp:1680 msgid "Lift Z" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1670 +#: src/libslic3r/PrintConfig.cpp:1681 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:1677 +#: src/libslic3r/PrintConfig.cpp:1688 msgid "Above Z" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1678 +#: src/libslic3r/PrintConfig.cpp:1689 msgid "Only lift Z above" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1679 +#: src/libslic3r/PrintConfig.cpp:1690 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:1686 +#: src/libslic3r/PrintConfig.cpp:1697 msgid "Below Z" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1687 +#: src/libslic3r/PrintConfig.cpp:1698 msgid "Only lift Z below" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1688 +#: src/libslic3r/PrintConfig.cpp:1699 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:1696 src/libslic3r/PrintConfig.cpp:1704 +#: src/libslic3r/PrintConfig.cpp:1707 src/libslic3r/PrintConfig.cpp:1715 msgid "Extra length on restart" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1697 +#: src/libslic3r/PrintConfig.cpp:1708 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:1705 +#: src/libslic3r/PrintConfig.cpp:1716 msgid "" "When the retraction is compensated after changing tool, the extruder will " "push this additional amount of filament." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1712 src/libslic3r/PrintConfig.cpp:1713 +#: src/libslic3r/PrintConfig.cpp:1723 src/libslic3r/PrintConfig.cpp:1724 msgid "Retraction Speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1714 +#: src/libslic3r/PrintConfig.cpp:1725 msgid "The speed for retractions (it only applies to the extruder motor)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1720 src/libslic3r/PrintConfig.cpp:1721 +#: src/libslic3r/PrintConfig.cpp:1731 src/libslic3r/PrintConfig.cpp:1732 msgid "Deretraction Speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1722 +#: src/libslic3r/PrintConfig.cpp:1733 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:1729 +#: src/libslic3r/PrintConfig.cpp:1740 msgid "Seam position" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1731 +#: src/libslic3r/PrintConfig.cpp:1742 msgid "Position of perimeters starting points." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1737 +#: src/libslic3r/PrintConfig.cpp:1748 msgid "Random" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1738 +#: src/libslic3r/PrintConfig.cpp:1749 msgid "Nearest" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1739 +#: src/libslic3r/PrintConfig.cpp:1750 msgid "Aligned" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1747 +#: src/libslic3r/PrintConfig.cpp:1758 msgid "Direction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1749 +#: src/libslic3r/PrintConfig.cpp:1760 msgid "Preferred direction of the seam" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1750 +#: src/libslic3r/PrintConfig.cpp:1761 msgid "Seam preferred direction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1757 +#: src/libslic3r/PrintConfig.cpp:1768 msgid "Jitter" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1759 +#: src/libslic3r/PrintConfig.cpp:1770 msgid "Seam preferred direction jitter" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1760 +#: src/libslic3r/PrintConfig.cpp:1771 msgid "Preferred direction of the seam - jitter" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1769 -msgid "Serial port" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1770 -msgid "USB/serial port for printer connection." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1777 -msgid "Serial port speed" -msgstr "" - #: src/libslic3r/PrintConfig.cpp:1778 -msgid "Speed (baud) of USB/serial port for printer connection." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1787 msgid "Distance from object" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1788 +#: src/libslic3r/PrintConfig.cpp:1779 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:1795 +#: src/libslic3r/PrintConfig.cpp:1786 msgid "Skirt height" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1796 +#: src/libslic3r/PrintConfig.cpp:1787 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:1803 +#: src/libslic3r/PrintConfig.cpp:1794 msgid "Draft shield" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1804 +#: src/libslic3r/PrintConfig.cpp:1795 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:1810 +#: src/libslic3r/PrintConfig.cpp:1801 msgid "Loops (minimum)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1811 +#: src/libslic3r/PrintConfig.cpp:1802 msgid "Skirt Loops" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1812 +#: src/libslic3r/PrintConfig.cpp:1803 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:1820 +#: src/libslic3r/PrintConfig.cpp:1811 msgid "Slow down if layer print time is below" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1821 +#: src/libslic3r/PrintConfig.cpp:1812 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:1830 +#: src/libslic3r/PrintConfig.cpp:1821 msgid "Small perimeters" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1832 +#: src/libslic3r/PrintConfig.cpp:1823 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:1842 +#: src/libslic3r/PrintConfig.cpp:1833 msgid "Solid infill threshold area" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1844 +#: src/libslic3r/PrintConfig.cpp:1835 msgid "" "Force solid infill for regions having a smaller area than the specified " "threshold." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1845 +#: src/libslic3r/PrintConfig.cpp:1836 msgid "mm²" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1851 +#: src/libslic3r/PrintConfig.cpp:1842 msgid "Solid infill extruder" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1853 +#: src/libslic3r/PrintConfig.cpp:1844 msgid "The extruder to use when printing solid infill." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1859 +#: src/libslic3r/PrintConfig.cpp:1850 msgid "Solid infill every" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1861 +#: src/libslic3r/PrintConfig.cpp:1852 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 " @@ -9753,7 +9858,7 @@ msgid "" "according to nozzle diameter and layer height." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1873 +#: src/libslic3r/PrintConfig.cpp:1864 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, " @@ -9761,26 +9866,26 @@ msgid "" "(for example 90%) it will be computed over layer height." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1884 +#: src/libslic3r/PrintConfig.cpp:1875 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:1896 +#: src/libslic3r/PrintConfig.cpp:1887 msgid "Number of solid layers to generate on top and bottom surfaces." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1902 src/libslic3r/PrintConfig.cpp:1903 +#: src/libslic3r/PrintConfig.cpp:1893 src/libslic3r/PrintConfig.cpp:1894 msgid "Minimum thickness of a top / bottom shell" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1909 +#: src/libslic3r/PrintConfig.cpp:1900 msgid "Spiral vase" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1910 +#: src/libslic3r/PrintConfig.cpp:1901 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, " @@ -9789,18 +9894,18 @@ msgid "" "when printing more than an object." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1918 +#: src/libslic3r/PrintConfig.cpp:1909 msgid "Temperature variation" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1919 +#: src/libslic3r/PrintConfig.cpp:1910 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:1929 +#: src/libslic3r/PrintConfig.cpp:1920 msgid "" "This start procedure is inserted at the beginning, after bed has reached the " "target temperature and extruder just started heating, and before extruder " @@ -9811,7 +9916,7 @@ msgid "" "put a \"M109 S[first_layer_temperature]\" command wherever you want." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1944 +#: src/libslic3r/PrintConfig.cpp:1935 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 " @@ -9824,45 +9929,45 @@ msgid "" "extruders, the gcode is processed in extruder order." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1960 +#: src/libslic3r/PrintConfig.cpp:1951 msgid "Color change G-code" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1961 +#: src/libslic3r/PrintConfig.cpp:1952 msgid "This G-code will be used as a code for the color change" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1970 +#: src/libslic3r/PrintConfig.cpp:1961 msgid "This G-code will be used as a code for the pause print" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1979 +#: src/libslic3r/PrintConfig.cpp:1970 msgid "This G-code will be used as a custom code" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1987 +#: src/libslic3r/PrintConfig.cpp:1978 msgid "Single Extruder Multi Material" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1988 +#: src/libslic3r/PrintConfig.cpp:1979 msgid "The printer multiplexes filaments into a single hot end." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1993 +#: src/libslic3r/PrintConfig.cpp:1984 msgid "Prime all printing extruders" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1994 +#: src/libslic3r/PrintConfig.cpp:1985 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:1999 +#: src/libslic3r/PrintConfig.cpp:1990 msgid "No sparse layers (EXPERIMENTAL)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2000 +#: src/libslic3r/PrintConfig.cpp:1991 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 " @@ -9870,75 +9975,75 @@ msgid "" "with the print." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2007 +#: src/libslic3r/PrintConfig.cpp:1998 msgid "Generate support material" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2009 +#: src/libslic3r/PrintConfig.cpp:2000 msgid "Enable support material generation." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2013 +#: src/libslic3r/PrintConfig.cpp:2004 msgid "Auto generated supports" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2015 +#: src/libslic3r/PrintConfig.cpp:2006 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:2021 +#: src/libslic3r/PrintConfig.cpp:2012 msgid "XY separation between an object and its support" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2023 +#: src/libslic3r/PrintConfig.cpp:2014 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:2033 +#: src/libslic3r/PrintConfig.cpp:2024 msgid "Pattern angle" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2035 +#: src/libslic3r/PrintConfig.cpp:2026 msgid "" "Use this setting to rotate the support material pattern on the horizontal " "plane." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2045 src/libslic3r/PrintConfig.cpp:2840 +#: src/libslic3r/PrintConfig.cpp:2036 src/libslic3r/PrintConfig.cpp:2831 msgid "" "Only create support if it lies on a build plate. Don't create support on a " "print." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2051 +#: src/libslic3r/PrintConfig.cpp:2042 msgid "Contact Z distance" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2053 +#: src/libslic3r/PrintConfig.cpp:2044 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:2060 +#: src/libslic3r/PrintConfig.cpp:2051 msgid "0 (soluble)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2061 +#: src/libslic3r/PrintConfig.cpp:2052 msgid "0.2 (detachable)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2066 +#: src/libslic3r/PrintConfig.cpp:2057 msgid "Enforce support for the first" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2068 +#: src/libslic3r/PrintConfig.cpp:2059 msgid "" "Generate support material for the specified number of layers counting from " "bottom, regardless of whether normal support material is enabled or not and " @@ -9946,21 +10051,21 @@ msgid "" "of objects having a very thin or poor footprint on the build plate." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2073 +#: src/libslic3r/PrintConfig.cpp:2064 msgid "Enforce support for the first n layers" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2079 +#: src/libslic3r/PrintConfig.cpp:2070 msgid "Support material/raft/skirt extruder" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2081 +#: src/libslic3r/PrintConfig.cpp:2072 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:2090 +#: src/libslic3r/PrintConfig.cpp:2081 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, " @@ -9968,89 +10073,89 @@ msgid "" "example 90%) it will be computed over layer height." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2099 +#: src/libslic3r/PrintConfig.cpp:2090 msgid "Interface loops" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2101 +#: src/libslic3r/PrintConfig.cpp:2092 msgid "" "Cover the top contact layer of the supports with loops. Disabled by default." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2106 +#: src/libslic3r/PrintConfig.cpp:2097 msgid "Support material/raft interface extruder" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2108 +#: src/libslic3r/PrintConfig.cpp:2099 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:2115 +#: src/libslic3r/PrintConfig.cpp:2106 msgid "Interface layers" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2117 +#: src/libslic3r/PrintConfig.cpp:2108 msgid "" "Number of interface layers to insert between the object(s) and support " "material." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2124 +#: src/libslic3r/PrintConfig.cpp:2115 msgid "Interface pattern spacing" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2126 +#: src/libslic3r/PrintConfig.cpp:2117 msgid "Spacing between interface lines. Set zero to get a solid interface." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2135 +#: src/libslic3r/PrintConfig.cpp:2126 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:2144 +#: src/libslic3r/PrintConfig.cpp:2135 msgid "Pattern" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2146 +#: src/libslic3r/PrintConfig.cpp:2137 msgid "Pattern used to generate support material." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2152 +#: src/libslic3r/PrintConfig.cpp:2143 msgid "Rectilinear grid" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2158 +#: src/libslic3r/PrintConfig.cpp:2149 msgid "Pattern spacing" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2160 +#: src/libslic3r/PrintConfig.cpp:2151 msgid "Spacing between support material lines." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2169 +#: src/libslic3r/PrintConfig.cpp:2160 msgid "Speed for printing support material." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2176 +#: src/libslic3r/PrintConfig.cpp:2167 msgid "Synchronize with object layers" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2178 +#: src/libslic3r/PrintConfig.cpp:2169 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:2184 +#: src/libslic3r/PrintConfig.cpp:2175 msgid "Overhang threshold" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2186 +#: src/libslic3r/PrintConfig.cpp:2177 msgid "" "Support material will not be generated for overhangs whose slope angle (90° " "= vertical) is above the given threshold. In other words, this value " @@ -10059,47 +10164,47 @@ msgid "" "detection (recommended)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2198 +#: src/libslic3r/PrintConfig.cpp:2189 msgid "With sheath around the support" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2200 +#: src/libslic3r/PrintConfig.cpp:2191 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:2207 +#: src/libslic3r/PrintConfig.cpp:2198 msgid "" -"Extruder temperature for layers after the first one. Set this to zero to " -"disable temperature control commands in the output." +"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:2210 -msgid "Extruder temperature" +#: src/libslic3r/PrintConfig.cpp:2201 +msgid "Nozzle temperature" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2216 +#: src/libslic3r/PrintConfig.cpp:2207 msgid "Detect thin walls" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2218 +#: src/libslic3r/PrintConfig.cpp:2209 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:2224 +#: src/libslic3r/PrintConfig.cpp:2215 msgid "Threads" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2225 +#: src/libslic3r/PrintConfig.cpp:2216 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:2237 +#: src/libslic3r/PrintConfig.cpp:2228 msgid "" "This custom code is inserted before every toolchange. Placeholder variables " "for all PrusaSlicer settings as well as {previous_extruder} and " @@ -10109,7 +10214,7 @@ msgid "" "behaviour both before and after the toolchange." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2250 +#: src/libslic3r/PrintConfig.cpp:2241 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 " @@ -10118,7 +10223,7 @@ msgid "" "percentage (for example 90%) it will be computed over layer height." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2262 +#: src/libslic3r/PrintConfig.cpp:2253 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 " @@ -10127,54 +10232,54 @@ msgid "" "for auto." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2277 +#: src/libslic3r/PrintConfig.cpp:2268 msgid "Number of solid layers to generate on top surfaces." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2278 +#: src/libslic3r/PrintConfig.cpp:2269 msgid "Top solid layers" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2286 +#: src/libslic3r/PrintConfig.cpp:2277 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:2289 +#: src/libslic3r/PrintConfig.cpp:2280 msgid "Minimum top shell thickness" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2296 +#: src/libslic3r/PrintConfig.cpp:2287 msgid "Speed for travel moves (jumps between distant extrusion points)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2304 +#: src/libslic3r/PrintConfig.cpp:2295 msgid "Use firmware retraction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2305 +#: src/libslic3r/PrintConfig.cpp:2296 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:2311 +#: src/libslic3r/PrintConfig.cpp:2302 msgid "Use relative E distances" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2312 +#: src/libslic3r/PrintConfig.cpp:2303 msgid "" "If your firmware requires relative E values, check this, otherwise leave it " "unchecked. Most firmwares use absolute values." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2318 +#: src/libslic3r/PrintConfig.cpp:2309 msgid "Use volumetric E" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2319 +#: src/libslic3r/PrintConfig.cpp:2310 msgid "" "This experimental setting uses outputs the E values in cubic millimeters " "instead of linear millimeters. If your firmware doesn't already know " @@ -10184,127 +10289,127 @@ msgid "" "only supported in recent Marlin." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2329 +#: src/libslic3r/PrintConfig.cpp:2320 msgid "Enable variable layer height feature" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2330 +#: src/libslic3r/PrintConfig.cpp:2321 msgid "" "Some printers or printer setups may have difficulties printing with a " "variable layer height. Enabled by default." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2336 +#: src/libslic3r/PrintConfig.cpp:2327 msgid "Wipe while retracting" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2337 +#: src/libslic3r/PrintConfig.cpp:2328 msgid "" "This flag will move the nozzle while retracting to minimize the possible " "blob on leaky extruders." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2344 +#: src/libslic3r/PrintConfig.cpp:2335 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:2350 +#: src/libslic3r/PrintConfig.cpp:2341 msgid "Purging volumes - load/unload volumes" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2351 +#: src/libslic3r/PrintConfig.cpp:2342 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:2357 +#: src/libslic3r/PrintConfig.cpp:2348 msgid "Purging volumes - matrix" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2358 +#: src/libslic3r/PrintConfig.cpp:2349 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:2367 +#: src/libslic3r/PrintConfig.cpp:2358 msgid "Position X" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2368 +#: src/libslic3r/PrintConfig.cpp:2359 msgid "X coordinate of the left front corner of a wipe tower" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2374 +#: src/libslic3r/PrintConfig.cpp:2365 msgid "Position Y" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2375 +#: src/libslic3r/PrintConfig.cpp:2366 msgid "Y coordinate of the left front corner of a wipe tower" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2382 +#: src/libslic3r/PrintConfig.cpp:2373 msgid "Width of a wipe tower" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2388 +#: src/libslic3r/PrintConfig.cpp:2379 msgid "Wipe tower rotation angle" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2389 +#: src/libslic3r/PrintConfig.cpp:2380 msgid "Wipe tower rotation angle with respect to x-axis." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2396 +#: src/libslic3r/PrintConfig.cpp:2387 msgid "Wipe into this object's infill" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2397 +#: src/libslic3r/PrintConfig.cpp:2388 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:2404 +#: src/libslic3r/PrintConfig.cpp:2395 msgid "Wipe into this object" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2405 +#: src/libslic3r/PrintConfig.cpp:2396 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:2411 +#: src/libslic3r/PrintConfig.cpp:2402 msgid "Maximal bridging distance" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2412 +#: src/libslic3r/PrintConfig.cpp:2403 msgid "Maximal distance between supports on sparse infill sections." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2418 +#: src/libslic3r/PrintConfig.cpp:2409 msgid "XY Size Compensation" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2420 +#: src/libslic3r/PrintConfig.cpp:2411 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:2428 +#: src/libslic3r/PrintConfig.cpp:2419 msgid "Z offset" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2429 +#: src/libslic3r/PrintConfig.cpp:2420 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 " @@ -10312,414 +10417,414 @@ msgid "" "print bed, set this to -0.3 (or fix your endstop)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2496 +#: src/libslic3r/PrintConfig.cpp:2487 msgid "Display width" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2497 +#: src/libslic3r/PrintConfig.cpp:2488 msgid "Width of the display" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2502 +#: src/libslic3r/PrintConfig.cpp:2493 msgid "Display height" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2503 +#: src/libslic3r/PrintConfig.cpp:2494 msgid "Height of the display" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2508 +#: src/libslic3r/PrintConfig.cpp:2499 msgid "Number of pixels in" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2510 +#: src/libslic3r/PrintConfig.cpp:2501 msgid "Number of pixels in X" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2516 +#: src/libslic3r/PrintConfig.cpp:2507 msgid "Number of pixels in Y" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2521 +#: src/libslic3r/PrintConfig.cpp:2512 msgid "Display horizontal mirroring" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2522 +#: src/libslic3r/PrintConfig.cpp:2513 msgid "Mirror horizontally" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2523 +#: src/libslic3r/PrintConfig.cpp:2514 msgid "Enable horizontal mirroring of output images" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2528 +#: src/libslic3r/PrintConfig.cpp:2519 msgid "Display vertical mirroring" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2529 +#: src/libslic3r/PrintConfig.cpp:2520 msgid "Mirror vertically" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2530 +#: src/libslic3r/PrintConfig.cpp:2521 msgid "Enable vertical mirroring of output images" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2535 +#: src/libslic3r/PrintConfig.cpp:2526 msgid "Display orientation" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2536 +#: src/libslic3r/PrintConfig.cpp:2527 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:2542 +#: src/libslic3r/PrintConfig.cpp:2533 msgid "Landscape" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2543 +#: src/libslic3r/PrintConfig.cpp:2534 msgid "Portrait" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2548 +#: src/libslic3r/PrintConfig.cpp:2539 msgid "Fast" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2549 +#: src/libslic3r/PrintConfig.cpp:2540 msgid "Fast tilt" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2550 +#: src/libslic3r/PrintConfig.cpp:2541 msgid "Time of the fast tilt" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2557 +#: src/libslic3r/PrintConfig.cpp:2548 msgid "Slow" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2558 +#: src/libslic3r/PrintConfig.cpp:2549 msgid "Slow tilt" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2559 +#: src/libslic3r/PrintConfig.cpp:2550 msgid "Time of the slow tilt" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2566 +#: src/libslic3r/PrintConfig.cpp:2557 msgid "Area fill" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2567 +#: src/libslic3r/PrintConfig.cpp:2558 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:2574 src/libslic3r/PrintConfig.cpp:2575 -#: src/libslic3r/PrintConfig.cpp:2576 +#: src/libslic3r/PrintConfig.cpp:2565 src/libslic3r/PrintConfig.cpp:2566 +#: src/libslic3r/PrintConfig.cpp:2567 msgid "Printer scaling correction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2582 src/libslic3r/PrintConfig.cpp:2583 +#: src/libslic3r/PrintConfig.cpp:2573 src/libslic3r/PrintConfig.cpp:2574 msgid "Printer absolute correction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2584 +#: src/libslic3r/PrintConfig.cpp:2575 msgid "" "Will inflate or deflate the sliced 2D polygons according to the sign of the " "correction." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2590 +#: src/libslic3r/PrintConfig.cpp:2581 msgid "Elephant foot minimum width" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2592 +#: src/libslic3r/PrintConfig.cpp:2583 msgid "" "Minimum width of features to maintain when doing elephant foot compensation." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2599 src/libslic3r/PrintConfig.cpp:2600 +#: src/libslic3r/PrintConfig.cpp:2590 src/libslic3r/PrintConfig.cpp:2591 msgid "Printer gamma correction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2601 +#: src/libslic3r/PrintConfig.cpp:2592 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:2613 src/libslic3r/PrintConfig.cpp:2614 +#: src/libslic3r/PrintConfig.cpp:2604 src/libslic3r/PrintConfig.cpp:2605 msgid "SLA material type" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2625 src/libslic3r/PrintConfig.cpp:2626 +#: src/libslic3r/PrintConfig.cpp:2616 src/libslic3r/PrintConfig.cpp:2617 msgid "Initial layer height" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2632 src/libslic3r/PrintConfig.cpp:2633 +#: src/libslic3r/PrintConfig.cpp:2623 src/libslic3r/PrintConfig.cpp:2624 msgid "Bottle volume" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2634 +#: src/libslic3r/PrintConfig.cpp:2625 msgid "ml" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2639 src/libslic3r/PrintConfig.cpp:2640 +#: src/libslic3r/PrintConfig.cpp:2630 src/libslic3r/PrintConfig.cpp:2631 msgid "Bottle weight" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2641 +#: src/libslic3r/PrintConfig.cpp:2632 msgid "kg" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2648 +#: src/libslic3r/PrintConfig.cpp:2639 msgid "g/ml" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2655 +#: src/libslic3r/PrintConfig.cpp:2646 msgid "money/bottle" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2660 +#: src/libslic3r/PrintConfig.cpp:2651 msgid "Faded layers" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2661 +#: src/libslic3r/PrintConfig.cpp:2652 msgid "" "Number of the layers needed for the exposure time fade from initial exposure " "time to the exposure time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2668 src/libslic3r/PrintConfig.cpp:2669 +#: src/libslic3r/PrintConfig.cpp:2659 src/libslic3r/PrintConfig.cpp:2660 msgid "Minimum exposure time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2676 src/libslic3r/PrintConfig.cpp:2677 +#: src/libslic3r/PrintConfig.cpp:2667 src/libslic3r/PrintConfig.cpp:2668 msgid "Maximum exposure time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2684 src/libslic3r/PrintConfig.cpp:2685 +#: src/libslic3r/PrintConfig.cpp:2675 src/libslic3r/PrintConfig.cpp:2676 msgid "Exposure time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2691 src/libslic3r/PrintConfig.cpp:2692 +#: src/libslic3r/PrintConfig.cpp:2682 src/libslic3r/PrintConfig.cpp:2683 msgid "Minimum initial exposure time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2699 src/libslic3r/PrintConfig.cpp:2700 +#: src/libslic3r/PrintConfig.cpp:2690 src/libslic3r/PrintConfig.cpp:2691 msgid "Maximum initial exposure time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2707 src/libslic3r/PrintConfig.cpp:2708 +#: src/libslic3r/PrintConfig.cpp:2698 src/libslic3r/PrintConfig.cpp:2699 msgid "Initial exposure time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2714 src/libslic3r/PrintConfig.cpp:2715 +#: src/libslic3r/PrintConfig.cpp:2705 src/libslic3r/PrintConfig.cpp:2706 msgid "Correction for expansion" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2721 +#: src/libslic3r/PrintConfig.cpp:2712 msgid "SLA print material notes" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2722 +#: src/libslic3r/PrintConfig.cpp:2713 msgid "You can put your notes regarding the SLA print material here." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2734 src/libslic3r/PrintConfig.cpp:2745 +#: src/libslic3r/PrintConfig.cpp:2725 src/libslic3r/PrintConfig.cpp:2736 msgid "Default SLA material profile" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2756 +#: src/libslic3r/PrintConfig.cpp:2747 msgid "Generate supports" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2758 +#: src/libslic3r/PrintConfig.cpp:2749 msgid "Generate supports for the models" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2763 +#: src/libslic3r/PrintConfig.cpp:2754 msgid "Pinhead front diameter" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2765 +#: src/libslic3r/PrintConfig.cpp:2756 msgid "Diameter of the pointing side of the head" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2772 +#: src/libslic3r/PrintConfig.cpp:2763 msgid "Head penetration" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2774 +#: src/libslic3r/PrintConfig.cpp:2765 msgid "How much the pinhead has to penetrate the model surface" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2781 +#: src/libslic3r/PrintConfig.cpp:2772 msgid "Pinhead width" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2783 +#: src/libslic3r/PrintConfig.cpp:2774 msgid "Width from the back sphere center to the front sphere center" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2791 +#: src/libslic3r/PrintConfig.cpp:2782 msgid "Pillar diameter" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2793 +#: src/libslic3r/PrintConfig.cpp:2784 msgid "Diameter in mm of the support pillars" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2801 +#: src/libslic3r/PrintConfig.cpp:2792 msgid "Small pillar diameter percent" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2803 +#: src/libslic3r/PrintConfig.cpp:2794 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:2812 +#: src/libslic3r/PrintConfig.cpp:2803 msgid "Max bridges on a pillar" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2814 +#: src/libslic3r/PrintConfig.cpp:2805 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:2822 +#: src/libslic3r/PrintConfig.cpp:2813 msgid "Pillar connection mode" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2823 +#: src/libslic3r/PrintConfig.cpp:2814 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:2831 +#: src/libslic3r/PrintConfig.cpp:2822 msgid "Zig-Zag" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2832 +#: src/libslic3r/PrintConfig.cpp:2823 msgid "Cross" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2833 +#: src/libslic3r/PrintConfig.cpp:2824 msgid "Dynamic" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2845 +#: src/libslic3r/PrintConfig.cpp:2836 msgid "Pillar widening factor" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2847 +#: src/libslic3r/PrintConfig.cpp:2838 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:2856 +#: src/libslic3r/PrintConfig.cpp:2847 msgid "Support base diameter" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2858 +#: src/libslic3r/PrintConfig.cpp:2849 msgid "Diameter in mm of the pillar base" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2866 +#: src/libslic3r/PrintConfig.cpp:2857 msgid "Support base height" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2868 +#: src/libslic3r/PrintConfig.cpp:2859 msgid "The height of the pillar base cone" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2875 +#: src/libslic3r/PrintConfig.cpp:2866 msgid "Support base safety distance" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2878 +#: src/libslic3r/PrintConfig.cpp:2869 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:2888 +#: src/libslic3r/PrintConfig.cpp:2879 msgid "Critical angle" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2890 +#: src/libslic3r/PrintConfig.cpp:2881 msgid "The default angle for connecting support sticks and junctions." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2898 +#: src/libslic3r/PrintConfig.cpp:2889 msgid "Max bridge length" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2900 +#: src/libslic3r/PrintConfig.cpp:2891 msgid "The max length of a bridge" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2907 +#: src/libslic3r/PrintConfig.cpp:2898 msgid "Max pillar linking distance" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2909 +#: src/libslic3r/PrintConfig.cpp:2900 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:2919 +#: src/libslic3r/PrintConfig.cpp:2910 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:2930 +#: src/libslic3r/PrintConfig.cpp:2921 msgid "This is a relative measure of support points density." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2936 +#: src/libslic3r/PrintConfig.cpp:2927 msgid "Minimal distance of the support points" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2938 +#: src/libslic3r/PrintConfig.cpp:2929 msgid "No support points will be placed closer than this threshold." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2944 +#: src/libslic3r/PrintConfig.cpp:2935 msgid "Use pad" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2946 +#: src/libslic3r/PrintConfig.cpp:2937 msgid "Add a pad underneath the supported model" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2951 +#: src/libslic3r/PrintConfig.cpp:2942 msgid "Pad wall thickness" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2953 +#: src/libslic3r/PrintConfig.cpp:2944 msgid "The thickness of the pad and its optional cavity walls." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2961 +#: src/libslic3r/PrintConfig.cpp:2952 msgid "Pad wall height" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2962 +#: src/libslic3r/PrintConfig.cpp:2953 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 " @@ -10727,107 +10832,111 @@ msgid "" "difficult." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2975 +#: src/libslic3r/PrintConfig.cpp:2966 msgid "Pad brim size" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2976 +#: src/libslic3r/PrintConfig.cpp:2967 msgid "How far should the pad extend around the contained geometry" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2986 +#: src/libslic3r/PrintConfig.cpp:2977 msgid "Max merge distance" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2988 +#: src/libslic3r/PrintConfig.cpp:2979 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:3008 +#: src/libslic3r/PrintConfig.cpp:2999 msgid "Pad wall slope" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3010 +#: src/libslic3r/PrintConfig.cpp:3001 msgid "" "The slope of the pad wall relative to the bed plane. 90 degrees means " "straight walls." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3021 +#: src/libslic3r/PrintConfig.cpp:3012 msgid "Create pad around object and ignore the support elevation" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3026 +#: src/libslic3r/PrintConfig.cpp:3017 msgid "Pad around object everywhere" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3028 +#: src/libslic3r/PrintConfig.cpp:3019 msgid "Force pad around object everywhere" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3033 +#: src/libslic3r/PrintConfig.cpp:3024 msgid "Pad object gap" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3035 +#: src/libslic3r/PrintConfig.cpp:3026 msgid "" "The gap between the object bottom and the generated pad in zero elevation " "mode." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3044 +#: src/libslic3r/PrintConfig.cpp:3035 msgid "Pad object connector stride" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3046 +#: src/libslic3r/PrintConfig.cpp:3037 msgid "" "Distance between two connector sticks which connect the object and the " "generated pad." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3053 +#: src/libslic3r/PrintConfig.cpp:3044 msgid "Pad object connector width" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3055 +#: src/libslic3r/PrintConfig.cpp:3046 msgid "" "Width of the connector sticks which connect the object and the generated pad." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3062 +#: src/libslic3r/PrintConfig.cpp:3053 msgid "Pad object connector penetration" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3065 +#: src/libslic3r/PrintConfig.cpp:3056 msgid "How much should the tiny connectors penetrate into the model body." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3072 +#: src/libslic3r/PrintConfig.cpp:3063 msgid "Enable hollowing" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3074 +#: src/libslic3r/PrintConfig.cpp:3065 msgid "Hollow out a model to have an empty interior" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3079 +#: src/libslic3r/PrintConfig.cpp:3070 msgid "Wall thickness" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3081 +#: src/libslic3r/PrintConfig.cpp:3072 msgid "Minimum wall thickness of a hollowed model." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3091 +#: src/libslic3r/PrintConfig.cpp:3080 +msgid "Accuracy" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3082 msgid "" "Performance vs accuracy of calculation. Lower values may produce unwanted " "artifacts." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3101 +#: src/libslic3r/PrintConfig.cpp:3092 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 " @@ -10836,266 +10945,266 @@ msgid "" "most." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3513 +#: src/libslic3r/PrintConfig.cpp:3505 msgid "Export OBJ" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3514 +#: src/libslic3r/PrintConfig.cpp:3506 msgid "Export the model(s) as OBJ." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3525 +#: src/libslic3r/PrintConfig.cpp:3517 msgid "Export SLA" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3526 +#: src/libslic3r/PrintConfig.cpp:3518 msgid "Slice the model and export SLA printing layers as PNG." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3531 +#: src/libslic3r/PrintConfig.cpp:3523 msgid "Export 3MF" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3532 +#: src/libslic3r/PrintConfig.cpp:3524 msgid "Export the model(s) as 3MF." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3536 +#: src/libslic3r/PrintConfig.cpp:3528 msgid "Export AMF" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3537 +#: src/libslic3r/PrintConfig.cpp:3529 msgid "Export the model(s) as AMF." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3541 +#: src/libslic3r/PrintConfig.cpp:3533 msgid "Export STL" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3542 +#: src/libslic3r/PrintConfig.cpp:3534 msgid "Export the model(s) as STL." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3547 +#: src/libslic3r/PrintConfig.cpp:3539 msgid "Slice the model and export toolpaths as G-code." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3552 +#: src/libslic3r/PrintConfig.cpp:3544 msgid "G-code viewer" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3553 +#: src/libslic3r/PrintConfig.cpp:3545 msgid "Visualize an already sliced and saved G-code" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3558 +#: src/libslic3r/PrintConfig.cpp:3550 msgid "Slice" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3559 +#: src/libslic3r/PrintConfig.cpp:3551 msgid "" "Slice the model as FFF or SLA based on the printer_technology configuration " "value." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3564 +#: src/libslic3r/PrintConfig.cpp:3556 msgid "Help" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3565 +#: src/libslic3r/PrintConfig.cpp:3557 msgid "Show this help." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3570 +#: src/libslic3r/PrintConfig.cpp:3562 msgid "Help (FFF options)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3571 +#: src/libslic3r/PrintConfig.cpp:3563 msgid "Show the full list of print/G-code configuration options." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3575 +#: src/libslic3r/PrintConfig.cpp:3567 msgid "Help (SLA options)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3576 +#: src/libslic3r/PrintConfig.cpp:3568 msgid "Show the full list of SLA print configuration options." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3580 +#: src/libslic3r/PrintConfig.cpp:3572 msgid "Output Model Info" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3581 +#: src/libslic3r/PrintConfig.cpp:3573 msgid "Write information about the model to the console." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3585 +#: src/libslic3r/PrintConfig.cpp:3577 msgid "Save config file" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3586 +#: src/libslic3r/PrintConfig.cpp:3578 msgid "Save configuration to the specified file." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3596 +#: src/libslic3r/PrintConfig.cpp:3588 msgid "Align XY" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3597 +#: src/libslic3r/PrintConfig.cpp:3589 msgid "Align the model to the given point." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3602 +#: src/libslic3r/PrintConfig.cpp:3594 msgid "Cut model at the given Z." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3623 +#: src/libslic3r/PrintConfig.cpp:3615 msgid "Center" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3624 +#: src/libslic3r/PrintConfig.cpp:3616 msgid "Center the print around the given center." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3628 +#: src/libslic3r/PrintConfig.cpp:3620 msgid "Don't arrange" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3629 +#: src/libslic3r/PrintConfig.cpp:3621 msgid "" "Do not rearrange the given models before merging and keep their original XY " "coordinates." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3632 +#: src/libslic3r/PrintConfig.cpp:3624 msgid "Duplicate" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3633 +#: src/libslic3r/PrintConfig.cpp:3625 msgid "Multiply copies by this factor." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3637 +#: src/libslic3r/PrintConfig.cpp:3629 msgid "Duplicate by grid" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3638 +#: src/libslic3r/PrintConfig.cpp:3630 msgid "Multiply copies by creating a grid." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3642 +#: src/libslic3r/PrintConfig.cpp:3634 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:3647 +#: src/libslic3r/PrintConfig.cpp:3639 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:3651 +#: src/libslic3r/PrintConfig.cpp:3643 msgid "Rotation angle around the Z axis in degrees." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3655 +#: src/libslic3r/PrintConfig.cpp:3647 msgid "Rotate around X" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3656 +#: src/libslic3r/PrintConfig.cpp:3648 msgid "Rotation angle around the X axis in degrees." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3660 +#: src/libslic3r/PrintConfig.cpp:3652 msgid "Rotate around Y" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3661 +#: src/libslic3r/PrintConfig.cpp:3653 msgid "Rotation angle around the Y axis in degrees." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3666 +#: src/libslic3r/PrintConfig.cpp:3658 msgid "Scaling factor or percentage." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3671 +#: src/libslic3r/PrintConfig.cpp:3663 msgid "" "Detect unconnected parts in the given model(s) and split them into separate " "objects." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3674 +#: src/libslic3r/PrintConfig.cpp:3666 msgid "Scale to Fit" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3675 +#: src/libslic3r/PrintConfig.cpp:3667 msgid "Scale to fit the given volume." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3684 +#: src/libslic3r/PrintConfig.cpp:3676 msgid "Ignore non-existent config files" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3685 +#: src/libslic3r/PrintConfig.cpp:3677 msgid "Do not fail if a file supplied to --load does not exist." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3688 +#: src/libslic3r/PrintConfig.cpp:3680 msgid "Load config file" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3689 +#: src/libslic3r/PrintConfig.cpp:3681 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:3692 +#: src/libslic3r/PrintConfig.cpp:3684 msgid "Output File" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3693 +#: src/libslic3r/PrintConfig.cpp:3685 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:3698 +#: src/libslic3r/PrintConfig.cpp:3690 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:3709 +#: src/libslic3r/PrintConfig.cpp:3701 msgid "Data directory" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3710 +#: src/libslic3r/PrintConfig.cpp:3702 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:3713 +#: src/libslic3r/PrintConfig.cpp:3705 msgid "Logging level" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3714 +#: src/libslic3r/PrintConfig.cpp:3706 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:3720 +#: src/libslic3r/PrintConfig.cpp:3712 msgid "Render with a software renderer" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3721 +#: src/libslic3r/PrintConfig.cpp:3713 msgid "" "Render with a software renderer. The bundled MESA software renderer is " "loaded instead of the default OpenGL driver." diff --git a/resources/localization/cs/PrusaSlicer.mo b/resources/localization/cs/PrusaSlicer.mo index 95c5093663..b1a000e92e 100644 Binary files a/resources/localization/cs/PrusaSlicer.mo and b/resources/localization/cs/PrusaSlicer.mo differ diff --git a/resources/localization/cs/PrusaSlicer_cs.po b/resources/localization/cs/PrusaSlicer_cs.po index cad51dbfa3..e60316e611 100644 --- a/resources/localization/cs/PrusaSlicer_cs.po +++ b/resources/localization/cs/PrusaSlicer_cs.po @@ -5,82 +5,106 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Poedit 2.3\n" +"X-Generator: Poedit 2.4.2\n" "Project-Id-Version: \n" "POT-Creation-Date: \n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" -#: src/slic3r/GUI/MainFrame.cpp:66 -msgid " - Remember to check for updates at http://github.com/prusa3d/PrusaSlicer/releases" -msgstr " - Nezapomeňte zkontrolovat aktualizace na http://github.com/prusa3d/PrusaSlicer/releases" +#: src/slic3r/GUI/Tab.cpp:4124 +msgid "" +"\"%1%\" is disabled because \"%2%\" is on in \"%3%\" category.\n" +"To enable \"%1%\", please switch off \"%2%\"" +msgstr "" +"\"%1%\" je deaktivováno, protože \"%2%\" je zapnuto v kategorii \"%3%\".\n" +"Chcete-li povolit \"%1%\",, vypněte \"%2%\"" -#: src/slic3r/GUI/MainFrame.cpp:872 -msgid " was successfully sliced." -msgstr " byl úspěšně slicován." - -#: src/libslic3r/PrintConfig.cpp:215 src/libslic3r/PrintConfig.cpp:792 -#: src/libslic3r/PrintConfig.cpp:1219 src/libslic3r/PrintConfig.cpp:1282 -#: src/libslic3r/PrintConfig.cpp:1532 src/libslic3r/PrintConfig.cpp:2425 -#: src/libslic3r/PrintConfig.cpp:2767 +#: src/libslic3r/PrintConfig.cpp:249 src/libslic3r/PrintConfig.cpp:828 +#: src/libslic3r/PrintConfig.cpp:1148 src/libslic3r/PrintConfig.cpp:1327 +#: src/libslic3r/PrintConfig.cpp:1390 src/libslic3r/PrintConfig.cpp:1640 +#: src/libslic3r/PrintConfig.cpp:2568 src/libslic3r/PrintConfig.cpp:2805 +#: src/libslic3r/PrintConfig.cpp:2931 msgid "%" msgstr "%" -#: src/slic3r/GUI/GLCanvas3D.cpp:963 +#: src/slic3r/GUI/GLCanvas3D.cpp:969 #, c-format msgid "%.2f - %.2f mm" msgstr "%.2f - %.2f mm" #. TRN Remove/Delete -#: src/slic3r/GUI/Tab.cpp:3126 +#: src/slic3r/GUI/Tab.cpp:3425 msgid "%1% Preset" msgstr "%1% Přednastavení" -#: src/slic3r/GUI/Plater.cpp:4400 +#: src/slic3r/GUI/Plater.cpp:4423 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 "%1% tiskárna byla aktivní v době, kdy byly pořízeny kroky Zpět / Vpřed. Přepnutí na tiskárnu %1% vyžaduje opětovné načtení předvoleb %1%." -#: src/libslic3r/Print.cpp:1374 +#: src/slic3r/GUI/MainFrame.cpp:1585 +msgid "%1% was successfully sliced." +msgstr "%1% byl úspěšně naslicován." + +#: src/libslic3r/Print.cpp:1400 msgid "%1%=%2% mm is too low to be printable at a layer height %3% mm" msgstr "%1%=%2% mm je příliš nízké na to, aby bylo možné tisknout ve výšce vrstvy %3% mm" -#: src/slic3r/GUI/PresetHints.cpp:229 +#: src/slic3r/GUI/PresetHints.cpp:228 #, c-format msgid "%3.2f mm³/s at filament speed %3.2f mm/s." msgstr "%3.2f mm³/s při rychlosti filamentu %3.2f mm/s." -#: src/slic3r/GUI/Plater.cpp:1152 +#: src/slic3r/GUI/Plater.cpp:1061 #, c-format msgid "%d (%d shells)" msgstr "%d (%d obalů)" -#: src/slic3r/GUI/Plater.cpp:1160 +#: src/slic3r/GUI/Plater.cpp:1069 #, c-format msgid "%d degenerate facets, %d edges fixed, %d facets removed, %d facets added, %d facets reversed, %d backwards edges" msgstr "%d poškozených faset, %d okrajů opraveno, %d faset odstraněno, %d faset přidáno, %d faset navráceno, %d zadních okrajů" -#: src/slic3r/GUI/PresetHints.cpp:270 +#: src/slic3r/GUI/PresetHints.cpp:269 #, c-format msgid "%d lines: %.2f mm" msgstr "%d perimetry: %.2f mm" -#: src/slic3r/GUI/MainFrame.cpp:1027 +#: src/slic3r/GUI/MainFrame.cpp:1728 #, c-format msgid "%d presets successfully imported." msgstr "%d přednastavení úspěšně importováno." -#: src/slic3r/GUI/MainFrame.cpp:692 +#: src/slic3r/GUI/GUI_App.cpp:718 +#, c-format +msgid "" +"%s\n" +"Do you want to continue?" +msgstr "" +"%s\n" +"Chcete pokračovat?" + +#: src/slic3r/GUI/MainFrame.cpp:917 src/slic3r/GUI/MainFrame.cpp:1316 #, c-format msgid "%s &Website" msgstr "%s &Webová stránka" +#: src/slic3r/GUI/GUI_App.cpp:394 +#, c-format +msgid "%s - BREAKING CHANGE" +msgstr "%s - ZLOMOVÁ ZMĚNA" + +#: src/slic3r/GUI/Plater.cpp:1410 +#, c-format +msgid "%s - Drop project file" +msgstr "%s - Otevírání projektu" + #: src/slic3r/GUI/UpdateDialogs.cpp:211 #, c-format msgid "%s configuration is incompatible" msgstr "Konfigurace %s není kompatibilní" -#: src/slic3r/GUI/Field.cpp:175 +#: src/slic3r/GUI/Field.cpp:223 #, c-format msgid "%s doesn't support percentage" msgstr "%s nepodporuje procenta" @@ -90,7 +114,7 @@ msgstr "%s nepodporuje procenta" msgid "%s error" msgstr "%s chyba" -#: src/slic3r/GUI/ConfigWizard.cpp:481 +#: src/slic3r/GUI/ConfigWizard.cpp:499 #, c-format msgid "%s Family" msgstr "%s Rodina" @@ -100,7 +124,7 @@ msgstr "%s Rodina" msgid "%s has encountered an error" msgstr "Došlo k chybě v programu %s" -#: src/slic3r/GUI/GUI_App.cpp:138 +#: src/slic3r/GUI/GUI_App.cpp:528 #, c-format msgid "" "%s has encountered an error. It was likely caused by running out of memory. If you are sure you have enough RAM on your system, this may also be a bug and we would be glad if you reported it.\n" @@ -111,12 +135,12 @@ msgstr "" "\n" "Aplikace se nyní ukončí." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:222 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:62 #, c-format msgid "%s has encountered an error. It was likely caused by running out of memory. If you are sure you have enough RAM on your system, this may also be a bug and we would be glad if you reported it." msgstr "%s zaznamenal chybu. Bylo to pravděpodobně způsobeno nedostatkem paměti. Pokud jste si jisti, že máte v systému dostatek paměti RAM, může to být také chyba programu a v takovém případě bychom byli rádi, kdybyste nám to nahlásili." -#: src/slic3r/GUI/UpdateDialogs.cpp:308 +#: src/slic3r/GUI/UpdateDialogs.cpp:309 #, c-format msgid "%s has no configuration updates available." msgstr "%s nemá k dispozici žádné aktualizace konfigurace." @@ -143,7 +167,7 @@ msgstr "" "\n" "Při nastavování nových předvoleb postupujte podle pokynů v %s a vyberte, zda chcete povolit automatické přednastavené aktualizace." -#: src/slic3r/GUI/GUI_App.cpp:820 +#: src/slic3r/GUI/GUI_App.cpp:1512 #, c-format msgid "%s View Mode" msgstr "%s Režim zobrazení" @@ -163,218 +187,252 @@ msgstr "" "\n" "Aktualizované balíčky konfigurace:" -#: src/slic3r/GUI/MainFrame.cpp:705 +#: src/slic3r/GUI/MainFrame.cpp:933 src/slic3r/GUI/MainFrame.cpp:937 +#: src/slic3r/GUI/MainFrame.cpp:1329 #, c-format msgid "&About %s" msgstr "&O %su" -#: src/slic3r/GUI/GUI_App.cpp:908 +#: src/slic3r/GUI/MainFrame.cpp:1297 +msgid "&Collapse sidebar" +msgstr "&Sbalit postranní panel" + +#: src/slic3r/GUI/GUI_App.cpp:1645 msgid "&Configuration" msgstr "&Konfigurace" -#: src/slic3r/GUI/GUI_App.cpp:800 +#: src/slic3r/GUI/GUI_App.cpp:1480 msgid "&Configuration Snapshots" msgstr "Zálohy konfigura&ce" -#: src/slic3r/GUI/MainFrame.cpp:588 +#: src/slic3r/GUI/MainFrame.cpp:1194 msgid "&Copy" msgstr "&Kopírovat" -#: src/slic3r/GUI/MainFrame.cpp:572 +#: src/slic3r/GUI/MainFrame.cpp:1178 msgid "&Delete selected" msgstr "Sma&zat vybrané" -#: src/slic3r/GUI/MainFrame.cpp:722 +#: src/slic3r/GUI/MainFrame.cpp:1348 src/slic3r/GUI/MainFrame.cpp:1358 msgid "&Edit" msgstr "&Editovat" -#: src/slic3r/GUI/MainFrame.cpp:506 +#: src/slic3r/GUI/MainFrame.cpp:1103 msgid "&Export" msgstr "&Exportovat" -#: src/slic3r/GUI/MainFrame.cpp:617 src/slic3r/GUI/MainFrame.cpp:752 +#: src/slic3r/GUI/MainFrame.cpp:1224 src/slic3r/GUI/MainFrame.cpp:1451 msgid "&Filament Settings Tab" -msgstr "Panel nastavení &filamentu" +msgstr "Panel Nastavení &filamentu" -#: src/slic3r/GUI/MainFrame.cpp:721 +#: src/slic3r/GUI/MainFrame.cpp:1347 src/slic3r/GUI/MainFrame.cpp:1357 +#: src/slic3r/GUI/MainFrame.cpp:1417 msgid "&File" msgstr "&Soubor" -#: src/slic3r/GUI/ConfigWizard.cpp:1981 +#: src/slic3r/GUI/ConfigWizard.cpp:2492 msgid "&Finish" msgstr "&Dokončit" -#: src/slic3r/GUI/MainFrame.cpp:727 +#: src/slic3r/GUI/MainFrame.cpp:1141 +msgid "&G-code preview" +msgstr "&G-code prohlížeč" + +#: src/slic3r/GUI/MainFrame.cpp:1353 src/slic3r/GUI/MainFrame.cpp:1363 +#: src/slic3r/GUI/MainFrame.cpp:1423 msgid "&Help" msgstr "&Pomoc" -#: src/slic3r/GUI/MainFrame.cpp:474 +#: src/slic3r/GUI/MainFrame.cpp:1065 msgid "&Import" msgstr "&Importovat" -#: src/slic3r/GUI/GUI_App.cpp:822 +#: src/slic3r/GUI/GUI_App.cpp:1517 msgid "&Language" msgstr "&Jazyk" -#: src/slic3r/GUI/MainFrame.cpp:405 +#: src/slic3r/GUI/MainFrame.cpp:986 msgid "&New Project" msgstr "&Nový projekt" -#: src/slic3r/GUI/ConfigWizard.cpp:1980 +#: src/slic3r/GUI/ConfigWizard.cpp:2491 msgid "&Next >" msgstr "&Další>" -#: src/slic3r/GUI/MainFrame.cpp:408 +#: src/slic3r/GUI/MainFrame.cpp:1391 +msgid "&Open G-code" +msgstr "&Otevřít G-code" + +#: src/slic3r/GUI/MainFrame.cpp:989 msgid "&Open Project" msgstr "&Otevřít projekt" -#: src/slic3r/GUI/MainFrame.cpp:591 +#: src/slic3r/GUI/MainFrame.cpp:1197 msgid "&Paste" msgstr "Vloži&t" -#: src/slic3r/GUI/MainFrame.cpp:606 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "&Plater Tab" msgstr "&Panel Podložka" -#: src/slic3r/GUI/GUI_App.cpp:804 +#: src/slic3r/GUI/GUI_App.cpp:1487 msgid "&Preferences" msgstr "Nas&tavení" -#: src/slic3r/GUI/MainFrame.cpp:540 +#: src/slic3r/GUI/MainFrame.cpp:1144 src/slic3r/GUI/MainFrame.cpp:1402 msgid "&Quit" msgstr "Ukonči&t" -#: src/slic3r/GUI/MainFrame.cpp:583 +#: src/slic3r/GUI/MainFrame.cpp:1189 msgid "&Redo" msgstr "&Vpřed" -#: src/slic3r/GUI/MainFrame.cpp:536 +#: src/slic3r/GUI/MainFrame.cpp:1137 msgid "&Repair STL file" msgstr "Op&ravit soubor STL" -#: src/slic3r/GUI/MainFrame.cpp:446 +#: src/slic3r/GUI/MainFrame.cpp:1028 msgid "&Save Project" msgstr "&Uložit projekt" -#: src/slic3r/GUI/MainFrame.cpp:565 +#: src/slic3r/GUI/MainFrame.cpp:1171 msgid "&Select all" msgstr "Vybrat &vše" -#: src/slic3r/GUI/MainFrame.cpp:580 +#: src/slic3r/GUI/MainFrame.cpp:1186 msgid "&Undo" msgstr "&Zpět" -#: src/slic3r/GUI/MainFrame.cpp:724 +#: src/slic3r/GUI/MainFrame.cpp:1350 src/slic3r/GUI/MainFrame.cpp:1360 +#: src/slic3r/GUI/MainFrame.cpp:1418 msgid "&View" msgstr "&Zobrazení" -#: src/slic3r/GUI/MainFrame.cpp:723 +#: src/slic3r/GUI/MainFrame.cpp:1349 src/slic3r/GUI/MainFrame.cpp:1359 msgid "&Window" msgstr "&Okno" -#: src/slic3r/GUI/ConfigWizard.cpp:603 src/slic3r/GUI/ConfigWizard.cpp:631 +#: src/slic3r/GUI/ConfigWizard.cpp:662 src/slic3r/GUI/ConfigWizard.cpp:812 +#: src/slic3r/GUI/ConfigWizard.cpp:873 src/slic3r/GUI/ConfigWizard.cpp:1007 msgid "(All)" msgstr "(Všechny)" -#: src/libslic3r/PrintConfig.cpp:1446 +#: src/libslic3r/PrintConfig.cpp:1554 msgid "(minimum)" msgstr "(minimálně)" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:116 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:109 msgid "(Re)slice" msgstr "(Znovu)Slicovat" -#: src/slic3r/GUI/MainFrame.cpp:532 +#: src/slic3r/GUI/MainFrame.cpp:1133 msgid "(Re)Slice No&w" msgstr "&(Znovu) Slicovat" -#: src/libslic3r/PrintConfig.cpp:771 src/libslic3r/PrintConfig.cpp:2587 +#: src/libslic3r/PrintConfig.cpp:807 src/libslic3r/PrintConfig.cpp:2730 msgid "(Unknown)" msgstr "(Neznámý)" -#: src/slic3r/GUI/MainFrame.cpp:790 +#: src/slic3r/GUI/MainFrame.cpp:1491 msgid ") not found." msgstr ") nebyl nalezen." -#: src/libslic3r/PrintConfig.cpp:1918 +#: src/libslic3r/PrintConfig.cpp:2060 msgid "0 (soluble)" msgstr "0 (rozpustné)" -#: src/libslic3r/PrintConfig.cpp:1919 +#: src/libslic3r/PrintConfig.cpp:2061 msgid "0.2 (detachable)" msgstr "0.2 (oddělitelné)" -#: src/slic3r/GUI/MainFrame.cpp:626 +#: src/slic3r/GUI/MainFrame.cpp:1234 msgid "3&D" msgstr "3&D" -#: src/slic3r/GUI/Plater.cpp:4097 +#: src/slic3r/GUI/Plater.cpp:4044 msgid "3D editor view" msgstr "Zobrazení 3D editoru" -#: src/libslic3r/PrintConfig.cpp:851 +#: src/libslic3r/PrintConfig.cpp:889 msgid "3D Honeycomb" msgstr "3D Plástev" -#: src/slic3r/GUI/Mouse3DController.cpp:274 +#: src/slic3r/GUI/NotificationManager.hpp:318 +msgid "3D Mouse disconnected." +msgstr "3D myš odpojena." + +#: src/slic3r/GUI/Mouse3DController.cpp:263 msgid "3Dconnexion settings" msgstr "Nastavení 3DConnexion" -#: src/slic3r/GUI/Plater.cpp:5038 +#: src/slic3r/GUI/Plater.cpp:5167 #, c-format msgid "3MF file exported to %s" msgstr "Soubor 3MF byl exportován do %s" -#: src/slic3r/GUI/ConfigWizard.cpp:1979 +#: src/slic3r/GUI/ConfigWizard.cpp:2490 msgid "< &Back" msgstr "<&Zpět" -#: src/libslic3r/PrintConfig.cpp:287 +#: src/libslic3r/PrintConfig.cpp:321 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 "Logický výraz může používat konfigurační hodnoty aktivního profilu tiskárny. Pokud je tento logický výraz pravdivý, potom je tento profil považován za kompatibilní s aktivním profilem tiskárny." -#: src/libslic3r/PrintConfig.cpp:272 +#: src/libslic3r/PrintConfig.cpp:306 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 "Logický výraz může používat konfigurační hodnoty aktivního profilu tiskárny. Pokud je tento logický výraz pravdivý, potom je tento profil považován za kompatibilní s aktivním profilem tiskárny." -#: src/slic3r/GUI/Tab.cpp:975 +#: src/slic3r/GUI/Tab.cpp:1237 msgid "A copy of the current system preset will be created, which will be detached from the system preset." msgstr "Bude vytvořena oddělená kopie aktuálního systémového přednastavení." -#: src/slic3r/GUI/ConfigWizard.cpp:1034 +#: src/slic3r/GUI/ConfigWizard.cpp:1400 msgid "A rule of thumb is 160 to 230 °C for PLA, and 215 to 250 °C for ABS." msgstr "Obecným pravidlem je 160 až 230 °C pro PLA a 215 až 250 °C pro ABS." -#: src/slic3r/GUI/ConfigWizard.cpp:1048 +#: src/slic3r/GUI/ConfigWizard.cpp:1414 msgid "A rule of thumb is 60 °C for PLA and 110 °C for ABS. Leave zero if you have no heated bed." msgstr "Obecným pravidlem je 60 °C pro PLA a 110 °C pro ABS. Zadejte nula, pokud nemáte vyhřívanou podložku." -#: src/slic3r/GUI/GLCanvas3D.cpp:686 -msgid "A toolpath outside the print area was detected" -msgstr "Byla detekována dráha mimo tiskovou oblast" +#: src/slic3r/GUI/GLCanvas3D.cpp:634 +msgid "A toolpath outside the print area was detected." +msgstr "Byla detekována cesta mimo tiskovou oblast." -#: src/slic3r/GUI/AboutDialog.cpp:199 +#: src/slic3r/GUI/AboutDialog.cpp:212 src/slic3r/GUI/AboutDialog.cpp:215 #, c-format msgid "About %s" msgstr "O %s" -#: src/slic3r/GUI/GLCanvas3D.cpp:959 +#: src/slic3r/GUI/GCodeViewer.cpp:2189 +msgid "above" +msgstr "nad" + +#: src/slic3r/GUI/GLCanvas3D.cpp:965 #, c-format msgid "above %.2f mm" msgstr "nad %.2f mm" -#: src/libslic3r/PrintConfig.cpp:1569 +#: src/libslic3r/PrintConfig.cpp:1677 msgid "Above Z" msgstr "Nad Z" -#: src/slic3r/GUI/Tab.cpp:1164 +#: src/slic3r/GUI/Tab.cpp:1494 msgid "Acceleration control (advanced)" msgstr "Kontrola akcelerací (pokročilé)" -#: src/libslic3r/PrintConfig.cpp:2925 +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:221 +#: src/libslic3r/PrintConfig.cpp:3089 msgid "Accuracy" msgstr "Přesnost" +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:59 +msgid "Accurate" +msgstr "Přesné" + +#: src/slic3r/GUI/Plater.cpp:1423 +msgid "Action" +msgstr "Akce" + #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:78 msgid "Activate" msgstr "Aktivovat" @@ -383,67 +441,75 @@ msgstr "Aktivovat" msgid "Active" msgstr "Aktivní" -#: src/slic3r/GUI/DoubleSlider.cpp:1135 src/slic3r/GUI/GUI_ObjectList.cpp:1705 +#: src/slic3r/GUI/DoubleSlider.cpp:1264 src/slic3r/GUI/GUI_ObjectList.cpp:1833 msgid "active" msgstr "aktivní" -#: src/slic3r/GUI/GLCanvas3D.cpp:267 +#: src/slic3r/GUI/GLCanvas3D.cpp:254 msgid "Adaptive" msgstr "Adaptivní" -#: src/slic3r/GUI/Tab.cpp:241 -msgid "Add a new printer" -msgstr "Přidat novou tiskárnu" +#: src/libslic3r/PrintConfig.cpp:894 +msgid "Adaptive Cubic" +msgstr "Kubická adaptivní" -#: src/libslic3r/PrintConfig.cpp:2782 +#: src/slic3r/GUI/SavePresetDialog.cpp:314 +msgid "Add \"%1%\" as a next preset for the the physical printer \"%2%\"" +msgstr "Přidat \"%1%\" jako další přednasatevení pro fyzickou tikárnu \"%2%\"" + +#: src/libslic3r/PrintConfig.cpp:2946 msgid "Add a pad underneath the supported model" msgstr "Pod podepíraný model přidá podložku" -#: src/libslic3r/PrintConfig.cpp:2058 +#: src/libslic3r/PrintConfig.cpp:2200 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 "Přidá pouzdro (jednu obvodovou čáru) kolem podpěr. Díky tomu je podpora spolehlivější, ale také obtížnější na odstranění." -#: src/slic3r/GUI/DoubleSlider.cpp:991 +#: src/slic3r/GUI/DoubleSlider.cpp:1114 msgid "Add another code - Ctrl + Left click" msgstr "Přidat další kód - Ctrl + Levé kliknutí" -#: src/slic3r/GUI/DoubleSlider.cpp:992 +#: src/slic3r/GUI/DoubleSlider.cpp:1115 msgid "Add another code - Right click" msgstr "Přidání jiného kódu - Pravé tlačítko" -#: src/slic3r/GUI/DoubleSlider.cpp:1477 +#: src/slic3r/GUI/DoubleSlider.cpp:1665 msgid "Add color change" msgstr "Přidat změnu barvy" -#: src/slic3r/GUI/DoubleSlider.cpp:1180 +#: src/slic3r/GUI/DoubleSlider.cpp:1307 msgid "Add color change (%1%) for:" msgstr "Přidat změnu barvy (%1%) pro:" -#: src/slic3r/GUI/DoubleSlider.cpp:988 +#: src/slic3r/GUI/DoubleSlider.cpp:1111 msgid "Add color change - Left click" msgstr "Přidat změnu barvy - Levé tlačítko myši" -#: src/slic3r/GUI/DoubleSlider.cpp:986 +#: src/slic3r/GUI/DoubleSlider.cpp:1109 msgid "Add color change - Left click for predefined color or Shift + Left click for custom color selection" msgstr "Přidat změnu barvy - Levé tlačítko myši pro předdefinovanou barvu, nebo Shift + Levé tlačítko myši pro výběr vlastní barvy" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:218 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:219 msgid "Add color change marker for current layer" msgstr "Přidat značku změny barvy pro aktuální vrstvu" -#: src/slic3r/GUI/DoubleSlider.cpp:1490 +#: src/slic3r/GUI/DoubleSlider.cpp:1682 msgid "Add custom G-code" msgstr "Přidat vlastní G-code" -#: src/slic3r/GUI/GLCanvas3D.cpp:240 +#: src/slic3r/GUI/DoubleSlider.cpp:1679 +msgid "Add custom template" +msgstr "Přidat vlastní šablonu" + +#: src/slic3r/GUI/GLCanvas3D.cpp:235 msgid "Add detail" msgstr "Přidat detail" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:421 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:308 msgid "Add drainage hole" msgstr "Přidání odtokového otvoru" -#: src/slic3r/GUI/DoubleSlider.cpp:984 +#: src/slic3r/GUI/DoubleSlider.cpp:1107 msgid "Add extruder change - Left click" msgstr "Přidat změnu extruderu - Levé tlačítko myši" @@ -451,30 +517,30 @@ msgstr "Přidat změnu extruderu - Levé tlačítko myši" msgid "Add extruder to sequence" msgstr "Přidat extruder do seznamu" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1993 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2152 msgid "Add Generic Subobject" msgstr "Přidání obecného Dílčího objektu" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2896 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2925 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2943 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3297 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3325 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3345 msgid "Add Height Range" msgstr "Přidání Rozsahu vrstev" -#: src/slic3r/GUI/GLCanvas3D.cpp:4526 src/slic3r/GUI/Plater.cpp:3788 -#: src/slic3r/GUI/Plater.cpp:3800 src/slic3r/GUI/Plater.cpp:3940 +#: src/slic3r/GUI/GLCanvas3D.cpp:4892 src/slic3r/GUI/Plater.cpp:3708 +#: src/slic3r/GUI/Plater.cpp:3720 src/slic3r/GUI/Plater.cpp:3858 msgid "Add instance" msgstr "Přidat instanci" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:159 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:153 msgid "Add Instance of the selected object" msgstr "Přidat instanci vybraného objektu" -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:162 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:165 msgid "Add layer range" msgstr "Přidat rozsah vrstev" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2328 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2692 msgid "Add Layers" msgstr "Přidat Vrstvy" @@ -482,12 +548,12 @@ msgstr "Přidat Vrstvy" msgid "Add modifier" msgstr "Přidat modifikátor" -#: src/libslic3r/PrintConfig.cpp:479 -#, no-c-format +#: src/libslic3r/PrintConfig.cpp:515 +#, c-format msgid "Add more perimeters when needed for avoiding gaps in sloping walls. Slic3r keeps adding perimeters, until more than 70% of the loop immediately above is supported." msgstr "Přidání více perimetrů, pokud je potřeba, pro vyvarování se tvorbě mezer v šikmých plochách. Slic3r pokračuje v přidávání perimetrů, dokud není podepřeno více než 70% perimetrů v následující vrstvě." -#: src/slic3r/GUI/Plater.cpp:3940 +#: src/slic3r/GUI/Plater.cpp:3858 msgid "Add one more instance of the selected object" msgstr "Přidejte jednu nebo více instancí vybraného objektu" @@ -495,52 +561,61 @@ msgstr "Přidejte jednu nebo více instancí vybraného objektu" msgid "Add part" msgstr "Přidat díl" -#: src/slic3r/GUI/DoubleSlider.cpp:1487 +#: src/slic3r/GUI/DoubleSlider.cpp:1675 msgid "Add pause print" msgstr "Přidat pozastavení tisku" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1363 +#: src/slic3r/GUI/PresetComboBoxes.cpp:627 +#: src/slic3r/GUI/PresetComboBoxes.cpp:674 +msgid "Add physical printer" +msgstr "Přidat fyzickou tiskárnu" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1210 msgid "Add point" msgstr "Přidat bod" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1366 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1213 msgid "Add point to selection" msgstr "Přidat bod k výběru" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1509 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:180 +msgid "Add preset for this printer device" +msgstr "Přidat přednastavení pro tuto tiskárnu" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1640 msgid "Add settings" msgstr "Přidat nastavení" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1386 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1517 msgid "Add Settings Bundle for Height range" msgstr "Přidání Skupiny nastavení pro Výškový rozsah" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1388 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1519 msgid "Add Settings Bundle for Object" msgstr "Přidání skupiny nastavení pro Objekt" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1387 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1518 msgid "Add Settings Bundle for Sub-object" msgstr "Přidání skupiny nastavení pro Dílčí objekt" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1314 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1445 msgid "Add Settings for Layers" msgstr "Přidání nastavení pro Vrstvy" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1316 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1447 msgid "Add Settings for Object" msgstr "Přidání nastavení pro Objekty" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1315 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1446 msgid "Add Settings for Sub-object" msgstr "Přidání nastavení pro Dílčí objeky" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1793 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2051 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1953 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2210 msgid "Add Shape" msgstr "Přidat Tvar" -#: src/libslic3r/PrintConfig.cpp:409 +#: src/libslic3r/PrintConfig.cpp:443 msgid "Add solid infill near sloping surfaces to guarantee the vertical shell thickness (top+bottom solid layers)." msgstr "Přidá plnou výplň u šikmých ploch pro garanci tloušťky svislých stěn (vrchních a spodních plných vrstev)." @@ -552,11 +627,19 @@ msgstr "Přidat blokátor podpěr" msgid "Add support enforcer" msgstr "Přidat vynucení podpěr" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:494 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:374 msgid "Add support point" msgstr "Přidání podpěrného bodu" -#: src/slic3r/GUI/GLCanvas3D.cpp:4467 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:371 +msgid "Add supports" +msgstr "Přidání podpěr" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:293 +msgid "Add supports by angle" +msgstr "Přidat podpěry dle úhlu" + +#: src/slic3r/GUI/GLCanvas3D.cpp:4833 msgid "Add..." msgstr "Přidat..." @@ -564,23 +647,29 @@ msgstr "Přidat..." msgid "Add/Remove filaments" msgstr "Přidání / Odebrání filamentů" -#: src/slic3r/GUI/Preset.cpp:1201 +#: src/slic3r/GUI/PresetComboBoxes.cpp:813 msgid "Add/Remove materials" msgstr "Přidání / Odebrání materiálů" -#: src/slic3r/GUI/Preset.cpp:1203 +#: src/slic3r/GUI/PresetComboBoxes.cpp:622 +#: src/slic3r/GUI/PresetComboBoxes.cpp:669 +msgid "Add/Remove presets" +msgstr "Přidat/Odebrat přednastavení" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:815 +#: src/slic3r/GUI/PresetComboBoxes.cpp:972 msgid "Add/Remove printers" msgstr "Přidat/Odebrat tiskárny" -#: src/slic3r/GUI/Tab.cpp:970 +#: src/slic3r/GUI/Tab.cpp:1288 msgid "Additional information:" msgstr "Doplňující informace:" -#: src/slic3r/GUI/GUI_ObjectSettings.cpp:59 +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:62 msgid "Additional Settings" msgstr "Další nastavení" -#: src/slic3r/GUI/ConfigWizard.cpp:791 +#: src/slic3r/GUI/ConfigWizard.cpp:1150 msgid "Additionally a backup snapshot of the whole configuration is created before an update is applied." msgstr "Dále je před nainstalováním aktualizace vytvořena záloha veškerého nastavení." @@ -588,23 +677,22 @@ msgstr "Dále je před nainstalováním aktualizace vytvořena záloha veškeré msgid "Address" msgstr "Adresa" -#: src/slic3r/GUI/GUI_App.cpp:814 src/slic3r/GUI/GUI_ObjectList.cpp:104 -#: src/slic3r/GUI/GUI_ObjectList.cpp:622 src/slic3r/GUI/Tab.cpp:1087 -#: src/slic3r/GUI/Tab.cpp:1102 src/slic3r/GUI/Tab.cpp:1201 -#: src/slic3r/GUI/Tab.cpp:1204 src/slic3r/GUI/Tab.cpp:1470 -#: src/slic3r/GUI/Tab.cpp:1967 src/slic3r/GUI/Tab.cpp:3661 -#: src/slic3r/GUI/wxExtensions.cpp:754 src/libslic3r/PrintConfig.cpp:88 -#: src/libslic3r/PrintConfig.cpp:119 src/libslic3r/PrintConfig.cpp:223 -#: src/libslic3r/PrintConfig.cpp:1037 src/libslic3r/PrintConfig.cpp:2276 -#: src/libslic3r/PrintConfig.cpp:2448 +#: src/slic3r/GUI/GUI_ObjectList.cpp:102 src/slic3r/GUI/GUI_ObjectList.cpp:661 +#: src/slic3r/GUI/Tab.cpp:1409 src/slic3r/GUI/Tab.cpp:1430 +#: src/slic3r/GUI/Tab.cpp:1531 src/slic3r/GUI/Tab.cpp:1534 +#: src/slic3r/GUI/Tab.cpp:1816 src/slic3r/GUI/Tab.cpp:2152 +#: src/slic3r/GUI/Tab.cpp:4080 src/libslic3r/PrintConfig.cpp:90 +#: src/libslic3r/PrintConfig.cpp:121 src/libslic3r/PrintConfig.cpp:257 +#: src/libslic3r/PrintConfig.cpp:1081 src/libslic3r/PrintConfig.cpp:2419 +#: src/libslic3r/PrintConfig.cpp:2591 msgid "Advanced" msgstr "Pokročilý" -#: src/slic3r/GUI/ConfigWizard.cpp:821 +#: src/slic3r/GUI/ConfigWizard.cpp:1180 msgid "Advanced mode" msgstr "Pokročilý režim" -#: src/slic3r/GUI/GUI_App.cpp:814 +#: src/slic3r/GUI/GUI_App.cpp:1506 msgid "Advanced View Mode" msgstr "Pokročilý režim" @@ -612,124 +700,140 @@ msgstr "Pokročilý režim" msgid "Advanced: Output log" msgstr "Pokročilý:  Výstupní log" -#: src/libslic3r/PrintConfig.cpp:668 +#: src/libslic3r/PrintConfig.cpp:704 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 stable. Before purging the print head into an infill or a sacrificial object, Slic3r will always prime this amount of material into the wipe tower to produce successive infill or sacrificial object extrusions reliably." msgstr "Po výměně nástroje nemusí být známa přesná poloha nově zavedeného filamentu uvnitř trysky a tlak filamentu pravděpodobně ještě není stabilní. Před vyčištěním tiskové hlavy do výplně nebo do objektu bude Slic3r toto množství materiálu vždy vytlačovat do čistící věže, aby se spolehlivě vytvořily následné výplně nebo objekty." -#: src/slic3r/GUI/Tab.cpp:1994 src/libslic3r/PrintConfig.cpp:1080 +#: src/slic3r/GUI/Tab.cpp:2182 src/libslic3r/PrintConfig.cpp:1173 msgid "After layer change G-code" msgstr "G-code po změně vrstvy" -#: src/libslic3r/PrintConfig.cpp:3398 +#: src/libslic3r/PrintConfig.cpp:3597 msgid "Align the model to the given point." msgstr "Zarovnejte model s daným bodem." -#: src/libslic3r/PrintConfig.cpp:3397 +#: src/libslic3r/PrintConfig.cpp:3596 msgid "Align XY" msgstr "Zarovnat XY" -#: src/libslic3r/PrintConfig.cpp:1631 +#: src/libslic3r/PrintConfig.cpp:1739 msgid "Aligned" msgstr "Zarovnaný" -#: src/slic3r/GUI/ConfigWizard.cpp:290 src/slic3r/GUI/ConfigWizard.cpp:573 -#: src/slic3r/GUI/Tab.cpp:3174 +#: src/slic3r/GUI/ConfigWizard.cpp:308 src/slic3r/GUI/ConfigWizard.cpp:598 +#: src/slic3r/GUI/Tab.cpp:3507 src/slic3r/GUI/UnsavedChangesDialog.cpp:921 msgid "All" msgstr "Všechny" -#: src/libslic3r/Print.cpp:1219 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:197 +msgid "All gizmos: Rotate - left mouse button; Pan - right mouse button" +msgstr "Všechna gizma: Rotace - levé talčítko myši; Posun - pravé tlačítko myši" + +#: src/slic3r/GUI/ConfigWizard.cpp:694 +msgid "All installed printers are compatible with the selected filament." +msgstr "Všechny instalované tiskárny jsou kompatibilní s vybraným filamentem." + +#: src/libslic3r/Print.cpp:1245 msgid "All objects are outside of the print volume." msgstr "Všechny objekty jsou mimo tiskový prostor." -#: src/slic3r/GUI/Plater.cpp:4669 +#: src/slic3r/GUI/Plater.cpp:4774 msgid "All objects will be removed, continue?" msgstr "Všechny objekty budou odebrány, pokračovat?" -#: src/slic3r/GUI/ConfigWizard.cpp:289 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:737 +msgid "All settings changes will be discarded." +msgstr "Všechny změny v nastavení budou zahozeny." + +#: src/slic3r/GUI/ConfigWizard.cpp:307 msgid "All standard" msgstr "Všechny běžné" -#: src/libslic3r/Zipper.cpp:62 +#: src/libslic3r/miniz_extension.cpp:121 msgid "allocation failed" msgstr "alokace selhala" -#: src/slic3r/GUI/Plater.cpp:3995 +#: src/slic3r/GUI/Plater.cpp:3915 msgid "Along X axis" msgstr "Podél osy X" -#: src/slic3r/GUI/Plater.cpp:3997 +#: src/slic3r/GUI/Plater.cpp:3917 msgid "Along Y axis" msgstr "Podél osy Y" -#: src/slic3r/GUI/Plater.cpp:3999 +#: src/slic3r/GUI/Plater.cpp:3919 msgid "Along Z axis" msgstr "Podél osy Z" -#: src/slic3r/GUI/ConfigWizard.cpp:222 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:160 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:141 +msgid "Alt + Mouse wheel" +msgstr "Alt + kolečko myši" + +#: src/slic3r/GUI/ConfigWizard.cpp:240 msgid "Alternate nozzles:" msgstr "Alternativní trysky:" -#: src/slic3r/GUI/Plater.cpp:5002 +#: src/slic3r/GUI/Preferences.cpp:163 +msgid "Always ask for unsaved changes when selecting new preset" +msgstr "Při výběru nového přednastavení se vždy dotázat na neuložené změny" + +#: src/slic3r/GUI/Plater.cpp:5135 #, c-format msgid "AMF file exported to %s" msgstr "Soubor AMF byl exportován do %s" -#: src/slic3r/GUI/GLCanvas3D.cpp:690 +#: src/slic3r/GUI/GLCanvas3D.cpp:638 msgid "" -"An object outside the print area was detected\n" -"Resolve the current problem to continue slicing" +"An object outside the print area was detected.\n" +"Resolve the current problem to continue slicing." msgstr "" -"Byl detekován objekt mimo tiskovou oblast\n" -"Pro pokračování ve slicování vyřešte tento problém" +"Byl detekován objekt mimo tiskovou oblast.\n" +"Pro pokračování ve slicování vyřešte tento problém." -#: src/slic3r/GUI/GLCanvas3D.cpp:685 -msgid "An object outside the print area was detected" -msgstr "Byl detekován objekt mimo tiskovou oblast" +#: src/slic3r/GUI/GLCanvas3D.cpp:633 +msgid "An object outside the print area was detected." +msgstr "Byl detekován objekt mimo tiskovou oblast." -#: src/slic3r/GUI/Tab.cpp:2943 -msgid "and it has the following unsaved changes:" -msgstr "a má neuložené následující změny:" - -#: src/slic3r/GUI/Plater.cpp:3170 +#: src/slic3r/GUI/Plater.cpp:2972 msgid "Another export job is currently running." msgstr "V současné době běží jiná úloha exportu." -#: src/slic3r/GUI/KBShortcutsDialog.cpp:168 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:169 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:162 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:163 msgid "Any arrow" msgstr "Šipky" -#: src/slic3r/GUI/Tab.cpp:965 +#: src/slic3r/GUI/Tab.cpp:1283 msgid "Any modifications should be saved as a new preset inherited from this one." msgstr "Jakékoliv úpravy by měly být uloženy jako nové přednastavení zděděná z tohoto." -#: src/libslic3r/PrintConfig.cpp:104 +#: src/libslic3r/PrintConfig.cpp:106 msgid "API Key / Password" msgstr "API klíč / Heslo" -#: src/slic3r/GUI/GUI_App.cpp:810 +#: src/slic3r/GUI/GUI_App.cpp:1493 msgid "Application preferences" msgstr "Nastavení aplikace" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:52 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1374 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:51 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1221 msgid "Apply changes" msgstr "Aplikovat změny" -#: src/libslic3r/PrintConfig.cpp:575 src/libslic3r/PrintConfig.cpp:1708 +#: src/libslic3r/PrintConfig.cpp:611 src/libslic3r/PrintConfig.cpp:1823 msgid "approximate seconds" msgstr "vteřin přibližně" -#: src/libslic3r/PrintConfig.cpp:428 src/libslic3r/PrintConfig.cpp:854 +#: src/libslic3r/PrintConfig.cpp:464 src/libslic3r/PrintConfig.cpp:892 msgid "Archimedean Chords" msgstr "Archimedean Chords" -#: src/libslic3r/Zipper.cpp:88 +#: src/libslic3r/miniz_extension.cpp:147 msgid "archive is too large" msgstr "archiv je moc velký" -#. TRN remove/delete -#: src/slic3r/GUI/Tab.cpp:3123 +#: src/slic3r/GUI/Tab.cpp:3420 msgid "Are you sure you want to %1% the selected preset?" msgstr "Opravdu chcete %1% vybrané přednastavení?" @@ -741,97 +845,125 @@ msgstr "" "Opravdu chcete ukončit nahrávání firmware?\n" "Tiskárna může zůstat v nefunkčním stavu!" -#: src/slic3r/GUI/DoubleSlider.cpp:1903 src/slic3r/GUI/DoubleSlider.cpp:1924 +#: src/slic3r/GUI/DoubleSlider.cpp:2122 src/slic3r/GUI/DoubleSlider.cpp:2142 msgid "Are you sure you want to continue?" msgstr "Opravdu chcete pokračovat?" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1269 +#: src/slic3r/GUI/Tab.cpp:3392 +msgid "Are you sure you want to delete \"%1%\" preset from the physical printer \"%2%\"?" +msgstr "Opravdu chcete odstranit přednastavení \"%1%\" z fyzické tiskárny \"%2%\"?" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:658 +msgid "Are you sure you want to delete \"%1%\" printer?" +msgstr "Opravdu chcete odstranit tiskárnu \"%1%\"?" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1128 msgid "Are you sure you want to do it?" msgstr "Opravdu to chcete udělat?" -#: src/libslic3r/PrintConfig.cpp:2423 +#: src/libslic3r/PrintConfig.cpp:2566 msgid "Area fill" msgstr "Zaplněná plocha" -#: src/slic3r/GUI/Plater.cpp:641 +#: src/slic3r/GUI/Plater.cpp:507 msgid "Around object" msgstr "Okolo objektu" -#: src/slic3r/GUI/GLCanvas3D.cpp:4493 src/slic3r/GUI/KBShortcutsDialog.cpp:157 -#: src/slic3r/GUI/Plater.cpp:2754 +#: src/slic3r/GUI/GLCanvas3D.cpp:4859 src/slic3r/GUI/KBShortcutsDialog.cpp:151 +#: src/slic3r/GUI/Plater.cpp:1549 msgid "Arrange" msgstr "Uspořádat" -#: src/slic3r/GUI/GLCanvas3D.cpp:4493 src/slic3r/GUI/KBShortcutsDialog.cpp:158 +#: src/slic3r/GUI/GLCanvas3D.cpp:4859 src/slic3r/GUI/KBShortcutsDialog.cpp:152 msgid "Arrange selection" msgstr "Uspořádat výběr" -#: src/libslic3r/PrintConfig.cpp:3443 +#: src/libslic3r/PrintConfig.cpp:3642 msgid "Arrange the supplied models in a plate and merge them in a single model in order to perform actions once." msgstr "Uspořádejte modely na tiskovou podložku a slučte je do jednoho modelu, abyste s nimi mohli provádět akce jednou." -#: src/slic3r/GUI/Plater.cpp:2813 +#: src/slic3r/GUI/Jobs/ArrangeJob.cpp:149 msgid "Arranging" msgstr "Uspořádávání" -#: src/slic3r/GUI/Plater.cpp:2841 +#: src/slic3r/GUI/Jobs/ArrangeJob.cpp:182 msgid "Arranging canceled." msgstr "Uspořádávání zrušeno." -#: src/slic3r/GUI/Plater.cpp:2842 +#: src/slic3r/GUI/Jobs/ArrangeJob.cpp:183 msgid "Arranging done." msgstr "Uspořádávání dokončeno." -#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:215 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:159 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:206 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 msgid "Arrow Down" msgstr "Šipka dolů" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:166 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:160 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:217 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:229 msgid "Arrow Left" msgstr "Šipka vlevo" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:167 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:217 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:161 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:218 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:230 msgid "Arrow Right" msgstr "Šipka vpravo" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:204 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:214 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:158 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:215 msgid "Arrow Up" msgstr "Šipka nahoru" -#: src/slic3r/GUI/GLCanvas3DManager.cpp:290 +#: src/slic3r/GUI/GUI_App.cpp:246 +msgid "Artwork model by Nora Al-Badri and Jan Nikolai Nelles" +msgstr "Model od Nory Al-Badri a Jana Nikolaje Nellese" + +#: src/slic3r/GUI/OpenGLManager.cpp:265 msgid "As a workaround, you may run PrusaSlicer with a software rendered 3D graphics by running prusa-slicer.exe with the --sw_renderer parameter." msgstr "Řešením může být spuštění PrusaSliceru se softwarovým vykreslováním 3D grafiky a to spuštěním prusa-slicer.exe s parametrem --sw_renderer." -#: src/slic3r/GUI/GUI_App.cpp:1086 src/slic3r/GUI/Plater.cpp:2313 -#: src/slic3r/GUI/Tab.cpp:2960 +#: src/slic3r/GUI/Preferences.cpp:154 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:659 +msgid "Ask for unsaved changes when closing application" +msgstr "Zeptat se na neuložené změny při zavírání aplikace" + +#: src/slic3r/GUI/Preferences.cpp:161 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:660 +msgid "Ask for unsaved changes when selecting new preset" +msgstr "Zeptat se na neuložené změny při výběru nového profilu" + +#: src/slic3r/GUI/GUI_App.cpp:1878 src/slic3r/GUI/Jobs/SLAImportJob.cpp:210 +#: src/slic3r/GUI/Plater.cpp:2256 src/slic3r/GUI/Tab.cpp:3189 msgid "Attention!" msgstr "Pozor!" -#: src/libslic3r/PrintConfig.cpp:1871 +#: src/libslic3r/PrintConfig.cpp:150 +msgid "Authorization Type" +msgstr "Typ oprávnění" + +#: src/libslic3r/PrintConfig.cpp:2013 msgid "Auto generated supports" msgstr "Automaticky generované podpěry" -#: src/slic3r/GUI/Preferences.cpp:47 +#: src/slic3r/GUI/Preferences.cpp:64 msgid "Auto-center parts" msgstr "Auto-centrování objektů" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:56 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1377 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:55 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1224 msgid "Auto-generate points" msgstr "Automatické generování bodů" -#: src/slic3r/GUI/Plater.cpp:1157 +#: src/slic3r/GUI/Plater.cpp:1066 #, c-format msgid "Auto-repaired (%d errors)" msgstr "Automaticky opraveno (%d chyb)" -#: src/slic3r/GUI/GUI_ObjectList.cpp:339 +#: src/slic3r/GUI/GUI_ObjectList.cpp:386 #, c-format msgid "Auto-repaired (%d errors):" msgstr "Automaticky opraveno ( %d chyb):" @@ -840,39 +972,47 @@ msgstr "Automaticky opraveno ( %d chyb):" msgid "Autodetected" msgstr "Automaticky detekováno" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1273 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1134 msgid "Autogenerate support points" msgstr "Automatické generování podpěrných bodů" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1268 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1127 msgid "Autogeneration will erase all manually edited points." msgstr "Automatické generování vymaže všechny ručně vytvořené body." -#: src/slic3r/GUI/Tab.cpp:3632 +#: src/slic3r/GUI/Tab.cpp:4051 msgid "Automatic generation" msgstr "Automatické generování" -#: src/slic3r/GUI/ConfigWizard.cpp:761 +#: src/slic3r/GUI/ConfigWizard.cpp:1120 msgid "Automatic updates" msgstr "Automatické aktualizace" -#: src/slic3r/GUI/MainFrame.cpp:536 +#: src/slic3r/GUI/MainFrame.cpp:1137 msgid "Automatically repair an STL file" msgstr "Automaticky opravit STL soubor" -#: src/slic3r/GUI/Tab.cpp:1171 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:129 +msgid "Autoset by angle" +msgstr "Automaticky podle úhlu" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:233 +msgid "Autoset custom supports" +msgstr "Automatické nastavení podpěr" + +#: src/slic3r/GUI/Tab.cpp:1501 msgid "Autospeed (advanced)" msgstr "Automatická rychlost (pokročilé)" -#: src/libslic3r/PrintConfig.cpp:136 +#: src/libslic3r/PrintConfig.cpp:169 msgid "Avoid crossing perimeters" msgstr "Vyhnout se přejíždění perimetrů" -#: src/slic3r/GUI/Tab.cpp:3268 +#: src/slic3r/GUI/Tab.cpp:3705 msgid "BACK ARROW" msgstr "ŠIPKA ZPĚT" -#: src/slic3r/GUI/Tab.cpp:3290 +#: src/slic3r/GUI/Tab.cpp:3727 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" "Click to reset all settings for the current option group to the last saved preset." @@ -880,7 +1020,7 @@ msgstr "" "Ikona ŠIPKY ZPĚT indikuje, že došlo ke změně nastavení, které není shodné s naposledy uloženým přednastavením pro aktuální skupinu nastavení.\n" "Klikněte pro reset všech nastavení pro aktuální skupinu nastavení na naposledy uložené přednastavení." -#: src/slic3r/GUI/Tab.cpp:3304 +#: src/slic3r/GUI/Tab.cpp:3741 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." @@ -888,19 +1028,23 @@ msgstr "" "Ikona ŠIPKY ZPĚT indikuje, že se hodnota změnila a není shodná s naposledy uloženým přednastavením.\n" "Klikněte pro reset současné hodnoty na naposledy uložené přednastavení." -#: src/slic3r/GUI/Preferences.cpp:55 +#: src/slic3r/GUI/Preferences.cpp:72 msgid "Background processing" msgstr "Zpracování na pozadí" -#: src/slic3r/GUI/GUI_ObjectList.cpp:351 +#: src/slic3r/GUI/GUI_ObjectList.cpp:398 msgid "backwards edges" msgstr "zadní okraje" -#: src/slic3r/GUI/MainFrame.cpp:174 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:60 +msgid "Balanced" +msgstr "Vyvážené" + +#: src/slic3r/GUI/MainFrame.cpp:535 src/slic3r/GUI/MainFrame.cpp:537 msgid "based on Slic3r" msgstr "založený na Slic3r" -#: src/slic3r/GUI/Tab.cpp:1439 +#: src/slic3r/GUI/Tab.cpp:1785 msgid "Bed" msgstr "Tisková podložka" @@ -912,7 +1056,7 @@ msgstr "Vlastní model podložky" msgid "Bed custom texture" msgstr "Vlastní textura podložky" -#: src/slic3r/GUI/BedShapeDialog.hpp:59 src/slic3r/GUI/ConfigWizard.cpp:929 +#: src/slic3r/GUI/BedShapeDialog.hpp:98 src/slic3r/GUI/ConfigWizard.cpp:1295 msgid "Bed Shape" msgstr "Tvar tiskové podložky" @@ -920,23 +1064,23 @@ msgstr "Tvar tiskové podložky" msgid "Bed shape" msgstr "Tvar tiskové podložky" -#: src/slic3r/GUI/ConfigWizard.cpp:929 +#: src/slic3r/GUI/ConfigWizard.cpp:1295 msgid "Bed Shape and Size" msgstr "Tvar a rozměr podložky" -#: src/libslic3r/PrintConfig.cpp:147 +#: src/libslic3r/PrintConfig.cpp:181 msgid "Bed temperature" msgstr "Teplota tiskové podložky" -#: src/libslic3r/PrintConfig.cpp:145 +#: src/libslic3r/PrintConfig.cpp:178 msgid "Bed temperature for layers after the first one. Set this to zero to disable bed temperature control commands in the output." msgstr "Teplota tiskové podložky pro další vrstvy po první vrstvě. Nastavením na hodnotu nula vypnete ovládací příkazy teploty tiskové podložky ve výstupu." -#: src/slic3r/GUI/ConfigWizard.cpp:1051 +#: src/slic3r/GUI/ConfigWizard.cpp:1417 msgid "Bed Temperature:" msgstr "Teplota tiskové podložky:" -#: src/slic3r/GUI/Tab.cpp:1988 src/libslic3r/PrintConfig.cpp:153 +#: src/slic3r/GUI/Tab.cpp:2175 src/libslic3r/PrintConfig.cpp:187 msgid "Before layer change G-code" msgstr "G-code před změnou vrstvy" @@ -944,143 +1088,191 @@ msgstr "G-code před změnou vrstvy" msgid "Before roll back" msgstr "Před vrácením zpět" -#: src/slic3r/GUI/Plater.cpp:640 +#: src/slic3r/GUI/Plater.cpp:506 msgid "Below object" msgstr "Pod objektem" -#: src/libslic3r/PrintConfig.cpp:1578 +#: src/libslic3r/PrintConfig.cpp:1686 msgid "Below Z" msgstr "Pod Z" -#: src/libslic3r/PrintConfig.cpp:164 +#: src/libslic3r/PrintConfig.cpp:198 msgid "Between objects G-code" msgstr "G-code mezi objekty" -#: src/slic3r/GUI/Tab.cpp:2006 +#: src/slic3r/GUI/Tab.cpp:2196 msgid "Between objects G-code (for sequential printing)" msgstr "G-code mezi objekty (pro sekvenční tisk)" -#: src/libslic3r/PrintConfig.cpp:2489 src/libslic3r/PrintConfig.cpp:2490 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:242 +msgid "Block" +msgstr "Blokovat" + +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:32 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:383 +msgid "Block seam" +msgstr "Blokace švu" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:373 +msgid "Block supports" +msgstr "Blokování podpěr" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:292 +msgid "Block supports by angle" +msgstr "Blokování podpěr dle úhlu" + +#: src/libslic3r/PrintConfig.cpp:2632 src/libslic3r/PrintConfig.cpp:2633 msgid "Bottle volume" msgstr "Objem láhve" -#: src/libslic3r/PrintConfig.cpp:2496 src/libslic3r/PrintConfig.cpp:2497 +#: src/libslic3r/PrintConfig.cpp:2639 src/libslic3r/PrintConfig.cpp:2640 msgid "Bottle weight" msgstr "Hmotnost láhve" #. 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:665 src/libslic3r/PrintConfig.cpp:174 -#: src/libslic3r/PrintConfig.cpp:183 +#: src/slic3r/GUI/MainFrame.cpp:962 src/slic3r/GUI/MainFrame.cpp:1282 +#: src/libslic3r/PrintConfig.cpp:208 src/libslic3r/PrintConfig.cpp:217 msgid "Bottom" msgstr "Zespod" -#: src/libslic3r/PrintConfig.cpp:435 +#: src/libslic3r/PrintConfig.cpp:471 msgid "Bottom fill pattern" msgstr "Vzor spodní výplně" -#: src/slic3r/GUI/PresetHints.cpp:342 +#: src/slic3r/GUI/PresetHints.cpp:340 msgid "Bottom is open." msgstr "Spodní část je otevřená." -#: src/slic3r/GUI/PresetHints.cpp:336 +#: src/slic3r/GUI/PresetHints.cpp:334 msgid "Bottom shell is %1% mm thick for layer height %2% mm." msgstr "Tloušťka spodní skořepiny je %1% mm při výšce vrstvy %2% mm." -#: src/libslic3r/PrintConfig.cpp:177 +#: src/libslic3r/PrintConfig.cpp:211 msgid "Bottom solid layers" msgstr "Plné spodní vrstvy" -#: src/slic3r/GUI/MainFrame.cpp:665 +#: src/slic3r/GUI/MainFrame.cpp:962 src/slic3r/GUI/MainFrame.cpp:1282 msgid "Bottom View" msgstr "Pohled zespod" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1432 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1464 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1468 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1563 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1595 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1599 msgid "Box" msgstr "Kostka" -#: src/libslic3r/PrintConfig.cpp:193 +#: src/libslic3r/PrintConfig.cpp:227 msgid "Bridge" msgstr "Most" -#: src/libslic3r/PrintConfig.cpp:222 +#: src/libslic3r/PrintConfig.cpp:256 msgid "Bridge flow ratio" msgstr "Poměr průtoku při vytváření mostů" -#: src/slic3r/GUI/GUI_Preview.cpp:243 src/libslic3r/ExtrusionEntity.cpp:316 +#: src/slic3r/GUI/GUI_Preview.cpp:308 src/libslic3r/ExtrusionEntity.cpp:321 +#: src/libslic3r/ExtrusionEntity.cpp:350 msgid "Bridge infill" msgstr "Výplň mostů" -#: src/libslic3r/PrintConfig.cpp:234 +#: src/libslic3r/PrintConfig.cpp:268 msgid "Bridges" msgstr "Mosty" -#: src/libslic3r/PrintConfig.cpp:213 +#: src/libslic3r/PrintConfig.cpp:247 msgid "Bridges fan speed" msgstr "Rychlost ventilátoru při vytváření mostů" -#: src/libslic3r/PrintConfig.cpp:202 +#: src/libslic3r/PrintConfig.cpp:236 msgid "Bridging angle" msgstr "Úhel vytváření mostů" -#: src/libslic3r/PrintConfig.cpp:204 +#: 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°." -#: src/slic3r/GUI/PresetHints.cpp:219 +#: src/slic3r/GUI/PresetHints.cpp:218 msgid "Bridging volumetric" msgstr "Volumetrická hodnota mostů" -#: src/slic3r/GUI/Plater.cpp:534 src/slic3r/GUI/Tab.cpp:1117 +#: src/slic3r/GUI/Plater.cpp:400 src/slic3r/GUI/Tab.cpp:1446 msgid "Brim" msgstr "Límec" -#: src/libslic3r/PrintConfig.cpp:244 +#: src/libslic3r/PrintConfig.cpp:278 msgid "Brim width" msgstr "Šířka límce" -#: src/slic3r/GUI/FirmwareDialog.cpp:805 src/slic3r/GUI/Tab.cpp:1658 -#: src/slic3r/GUI/Tab.cpp:1721 +#: src/slic3r/GUI/FirmwareDialog.cpp:805 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:271 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:327 msgid "Browse" msgstr "Procházet" -#: src/libslic3r/Zipper.cpp:82 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:45 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:28 +msgid "Brush shape" +msgstr "Tvar štětce" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:44 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:27 +msgid "Brush size" +msgstr "Velikost štětce" + +#: src/libslic3r/miniz_extension.cpp:141 msgid "buffer too small" msgstr "buffer je příliš malý" +#: src/slic3r/GUI/GUI_App.cpp:1152 +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 "" +"Ale od této verze PrusaSliceru již nebudeme tyto informace zobrazovat v Nastavení tiskárny.\n" +"Nastavení bude k dispozici v nastavení fyzických tiskáren." + #: src/slic3r/GUI/ButtonsDescription.cpp:16 msgid "Buttons And Text Colors Description" msgstr "Barvy pro textové popisky a tlačítka" -#: src/slic3r/GUI/PresetHints.cpp:223 +#: src/slic3r/GUI/GUI_App.cpp:1084 +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 "" +"Ve výchozím stavu budou při vytváření nové tiskárny pojmenovány jako „Printer N“.\n" +"Poznámka: Tento název lze později změnit v nastavení fyzických tiskáren" + +#: src/slic3r/GUI/PresetHints.cpp:222 msgid "by the print profile maximum" msgstr "maximem pro profil tisku" -#: src/slic3r/GUI/Preferences.cpp:113 +#: src/slic3r/GUI/Preferences.cpp:178 msgid "Camera" msgstr "Kamera" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:144 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:140 msgid "Camera view" msgstr "Pohled kamery" -#: src/slic3r/GUI/ConfigWizard.cpp:1982 src/slic3r/GUI/FirmwareDialog.cpp:151 +#: src/slic3r/GUI/ConfigWizard.cpp:2493 src/slic3r/GUI/FirmwareDialog.cpp:151 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:245 #: src/slic3r/GUI/ProgressStatusBar.cpp:26 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:644 msgid "Cancel" msgstr "Zrušit" -#: src/slic3r/GUI/PrintHostDialogs.cpp:157 +#: src/slic3r/GUI/PrintHostDialogs.cpp:155 msgid "Cancel selected" msgstr "Zrušit vybrané" -#: src/slic3r/GUI/Plater.cpp:3669 src/slic3r/GUI/PrintHostDialogs.cpp:233 +#: src/slic3r/GUI/Plater.cpp:3589 src/slic3r/GUI/PrintHostDialogs.cpp:233 msgid "Cancelled" msgstr "Zrušeno" -#: src/slic3r/GUI/Plater.cpp:3153 src/slic3r/GUI/PrintHostDialogs.cpp:232 +#: src/slic3r/GUI/Plater.cpp:2953 src/slic3r/GUI/PrintHostDialogs.cpp:232 msgid "Cancelling" msgstr "Zrušení" @@ -1092,7 +1284,7 @@ msgstr "Ukončování..." msgid "Cannot calculate extrusion width for %1%: Variable \"%2%\" not accessible." msgstr "Nelze vypočítat šířku extrudování pro %1%: Proměnná \"%2%\" není dostupná." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3017 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3400 msgid "" "Cannot insert a new layer range after the current layer range.\n" "Current layer range overlaps with the next layer range." @@ -1100,7 +1292,7 @@ msgstr "" "Nelze vložit nový rozsah vrstev za aktuální rozsah vrstev.\n" "Aktuální rozsah vrstev se překrývá s dalším rozsahem vrstev." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3008 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3391 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" @@ -1110,7 +1302,7 @@ msgstr "" "Další rozsah vrstev je příliš tenký na to, aby byl rozdělen na dva\n" "bez porušení minimální výšky vrstvy." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3012 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3395 msgid "" "Cannot insert a new layer range between the current and the next layer range.\n" "The gap between the current layer range and the next layer range\n" @@ -1120,80 +1312,88 @@ msgstr "" "Mezera mezi aktuálním rozsahem vrstev a dalším rozsahem vrstev\n" "je tenčí, než je minimální povolená výška vrstvy." -#: src/slic3r/GUI/Tab.cpp:3073 +#: src/slic3r/GUI/SavePresetDialog.cpp:137 msgid "Cannot overwrite a system profile." msgstr "Nelze přepsat systémový profil." -#: src/slic3r/GUI/Tab.cpp:3077 +#: src/slic3r/GUI/SavePresetDialog.cpp:142 msgid "Cannot overwrite an external profile." msgstr "Nelze přepsat externí profil." -#: src/libslic3r/SLAPrint.cpp:613 +#: src/libslic3r/SLAPrint.cpp:627 msgid "Cannot proceed without support points! Add support points or disable support generation." msgstr "Nelze pokračovat bez podpěrných bodů! Přidejte podpěrné body nebo zakažte generování podpěr." -#: src/slic3r/GUI/Tab.cpp:1834 +#: src/slic3r/GUI/Tab.cpp:2068 src/slic3r/GUI/UnsavedChangesDialog.cpp:1066 msgid "Capabilities" msgstr "Možnosti" -#: src/slic3r/GUI/GUI_App.cpp:801 +#: src/slic3r/GUI/GUI_App.cpp:1481 msgid "Capture a configuration snapshot" msgstr "Vytvořit aktuální zálohu konfigurace" -#: src/libslic3r/PrintConfig.cpp:3424 +#: src/slic3r/GUI/ImGuiWrapper.cpp:801 src/slic3r/GUI/Search.cpp:458 +msgid "Category" +msgstr "Kategorie" + +#: src/libslic3r/PrintConfig.cpp:3623 msgid "Center" msgstr "Střed" -#: src/libslic3r/PrintConfig.cpp:3425 +#: src/libslic3r/PrintConfig.cpp:3624 msgid "Center the print around the given center." msgstr "Vycentrujte tisk kolem daného středu." -#: src/slic3r/GUI/Tab.cpp:1728 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:329 msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" msgstr "Soubory s certifikátem (*.crt, *.pem)|*.crt;*.pem|Všechny soubory|*.*" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:180 +#: src/slic3r/GUI/SavePresetDialog.cpp:313 +msgid "Change \"%1%\" to \"%2%\" for this physical printer \"%3%\"" +msgstr "Změnit \"%1%\" na\"%2%\" pro tuto fyzickou tiskárnu \"%3%\"" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:174 msgid "Change camera type (perspective, orthographic)" msgstr "Změna typu kamery (perspektivní, ortografická)" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:885 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:693 msgid "Change drainage hole diameter" msgstr "Změna poloměru odtokového otvoru" -#: src/slic3r/GUI/DoubleSlider.cpp:1144 src/slic3r/GUI/GUI_ObjectList.cpp:1671 +#: src/slic3r/GUI/DoubleSlider.cpp:1273 src/slic3r/GUI/GUI_ObjectList.cpp:1800 msgid "Change extruder" msgstr "Změnit extruder" -#: src/slic3r/GUI/GUI_ObjectList.cpp:536 +#: src/slic3r/GUI/GUI_ObjectList.cpp:574 msgid "Change Extruder" msgstr "Změnit Extruder" -#: src/slic3r/GUI/DoubleSlider.cpp:1145 +#: src/slic3r/GUI/DoubleSlider.cpp:1274 msgid "Change extruder (N/A)" msgstr "Změnit extruder (N/A)" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3997 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4484 msgid "Change Extruders" msgstr "Změnit Extrudery" -#: src/slic3r/GUI/GUI_ObjectSettings.cpp:152 +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:157 #, c-format msgid "Change Option %s" msgstr "Změna parametru %s" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3558 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4021 msgid "Change Part Type" msgstr "Změna typu části" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:820 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:694 msgid "Change point head diameter" msgstr "Změna průměru hrotu" -#: src/slic3r/GUI/Plater.cpp:3944 +#: src/slic3r/GUI/Plater.cpp:3862 msgid "Change the number of instances of the selected object" msgstr "Změní počet instancí vybraného objektu" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1589 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1718 msgid "Change type" msgstr "Změnit typ" @@ -1201,125 +1401,172 @@ msgstr "Změnit typ" msgid "Changelog && Download" msgstr "Changelog && Stažení" -#: src/slic3r/GUI/GUI_App.cpp:442 +#: src/slic3r/GUI/GUI_App.cpp:1245 msgid "Changing of an application language" msgstr "Změnit jazyk aplikace" -#: src/slic3r/GUI/ConfigWizard.cpp:769 src/slic3r/GUI/Preferences.cpp:64 +#: src/slic3r/GUI/ConfigWizard.cpp:1128 src/slic3r/GUI/Preferences.cpp:81 msgid "Check for application updates" msgstr "Zkontrolovat aktualizace aplikace" -#: src/slic3r/GUI/GUI_App.cpp:802 +#: src/slic3r/GUI/GUI_App.cpp:1482 msgid "Check for configuration updates" msgstr "Zkontrolujte aktualizace konfigurace" -#: src/slic3r/GUI/GUI_App.cpp:802 +#: src/slic3r/GUI/GUI_App.cpp:1482 msgid "Check for updates" msgstr "Zkontrolovat akt&ualizace" -#: src/slic3r/GUI/BedShapeDialog.cpp:532 +#: 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):" -#: src/slic3r/GUI/MainFrame.cpp:773 +#: src/slic3r/GUI/MainFrame.cpp:1474 msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" msgstr "Zvolit soubor ke slicování (STL/OBJ/AMF/3MF/PRUSA):" -#: src/slic3r/GUI/BedShapeDialog.cpp:555 +#: src/slic3r/GUI/BedShapeDialog.cpp:631 msgid "Choose an STL file to import bed model from:" msgstr "Vyberte STL soubor, ze kterého chcete importovat model tiskové podložky:" -#: src/slic3r/GUI/BedShapeDialog.cpp:487 +#: src/slic3r/GUI/BedShapeDialog.cpp:563 msgid "Choose an STL file to import bed shape from:" msgstr "Vyberte STL soubor, ze kterého chcete importovat tvar tiskové podložky:" -#: src/slic3r/GUI/GUI_App.cpp:555 +#: src/slic3r/GUI/GUI_App.cpp:1208 msgid "Choose one file (3MF/AMF):" msgstr "Vyberte jeden soubor (3MF/AMF):" -#: src/slic3r/GUI/GUI_App.cpp:567 +#: src/slic3r/GUI/GUI_App.cpp:1233 +msgid "Choose one file (GCODE/.GCO/.G/.ngc/NGC):" +msgstr "Vyberte jeden soubor (GCODE/.GCO/.G/.ngc/NGC):" + +#: src/slic3r/GUI/GUI_App.cpp:1220 msgid "Choose one or more files (STL/OBJ/AMF/3MF/PRUSA):" msgstr "Vyberte jeden nebo více souborů (STL/OBJ/AMF/3MF/PRUSA):" -#: src/slic3r/GUI/ConfigWizard.cpp:895 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:35 +msgid "Choose SLA archive:" +msgstr "Vyberte SLA archiv:" + +#: src/slic3r/GUI/ConfigWizard.cpp:1261 msgid "Choose the type of firmware used by your printer." msgstr "Vyberte typ firmware používaný vaší tiskárnou." -#: src/slic3r/GUI/BedShapeDialog.cpp:89 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:53 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:36 +msgid "Circle" +msgstr "Kruh" + +#: src/slic3r/GUI/BedShapeDialog.cpp:142 msgid "Circular" msgstr "Kruhový" -#: src/slic3r/GUI/GLCanvas3D.cpp:4624 src/slic3r/GUI/GLCanvas3D.cpp:4657 -msgid "Click right mouse button to open History" -msgstr "Stiskem pravého tlačítka myši se zobrazí Historie" +#: 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" -#: src/slic3r/GUI/GUI_ObjectList.cpp:404 +#: src/slic3r/GUI/GUI_ObjectList.cpp:451 msgid "Click the icon to change the object printable property" msgstr "Klepnutím na ikonu změníte příznak objektu, zda se bude tisknout či nikoliv" -#: src/slic3r/GUI/GUI_ObjectList.cpp:398 +#: src/slic3r/GUI/GUI_ObjectList.cpp:445 msgid "Click the icon to change the object settings" msgstr "Pro změnu nastavení objektu klikněte na ikonu" -#: src/slic3r/GUI/Plater.cpp:343 +#: src/slic3r/GUI/PresetComboBoxes.cpp:566 msgid "Click to edit preset" msgstr "Klikněte pro editaci přednastavení" -#: src/libslic3r/PrintConfig.cpp:252 +#: src/slic3r/GUI/GCodeViewer.cpp:2071 +msgid "Click to hide" +msgstr "Kliknutím skryjete" + +#: src/slic3r/GUI/GCodeViewer.cpp:2071 +msgid "Click to show" +msgstr "Kliknutím zobrazíte" + +#: src/libslic3r/PrintConfig.cpp:286 msgid "Clip multi-part objects" msgstr "Připnutí objektů z více částí k sobě" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:50 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:58 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:42 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:25 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:57 msgid "Clipping of view" -msgstr "Řezová rovina" +msgstr "Řez rovinou" #: src/slic3r/GUI/FirmwareDialog.cpp:852 -#: src/slic3r/GUI/Mouse3DController.cpp:364 -#: src/slic3r/GUI/PrintHostDialogs.cpp:161 +#: src/slic3r/GUI/Mouse3DController.cpp:353 +#: src/slic3r/GUI/PrintHostDialogs.cpp:159 msgid "Close" msgstr "Zavřít" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:45 -#: src/libslic3r/PrintConfig.cpp:2934 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:44 +#: src/libslic3r/PrintConfig.cpp:3098 msgid "Closing distance" msgstr "Vzdálenost uzavření" -#: src/slic3r/GUI/Plater.cpp:1260 src/libslic3r/PrintConfig.cpp:582 +#: src/slic3r/GUI/MainFrame.cpp:1297 src/slic3r/GUI/Plater.cpp:2144 +msgid "Collapse sidebar" +msgstr "Sbalit postranní panel" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:180 +msgid "Collapse/Expand the sidebar" +msgstr "Sbalit/Rozbalit postranní panel" + +#: src/slic3r/GUI/Plater.cpp:1198 src/libslic3r/PrintConfig.cpp:618 msgid "Color" msgstr "Barva" -#: src/slic3r/GUI/DoubleSlider.cpp:1005 +#: src/slic3r/GUI/GCodeViewer.cpp:2410 src/slic3r/GUI/GCodeViewer.cpp:2438 +msgid "Color change" +msgstr "Změna barvy" + +#: src/slic3r/GUI/DoubleSlider.cpp:1130 msgid "Color change (\"%1%\")" msgstr "Změna barvy (\"%1%\")" -#: src/slic3r/GUI/DoubleSlider.cpp:1006 +#: src/slic3r/GUI/DoubleSlider.cpp:1131 msgid "Color change (\"%1%\") for Extruder %2%" msgstr "Změna barvy (\"%1%\") pro Extruder %2%" -#: src/slic3r/GUI/GLCanvas3D.cpp:995 +#: src/slic3r/GUI/GLCanvas3D.cpp:1001 #, 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/GUI_Preview.cpp:228 src/slic3r/GUI/GUI_Preview.cpp:572 -#: src/libslic3r/GCode/PreviewData.cpp:359 +#: src/slic3r/GUI/Tab.cpp:2203 +msgid "Color Change G-code" +msgstr "G-code pro změnu barvy" + +#: src/libslic3r/PrintConfig.cpp:1960 +msgid "Color change G-code" +msgstr "G-code pro změnu barvy" + +#: src/slic3r/GUI/GCodeViewer.cpp:2531 src/slic3r/GUI/GUI_Preview.cpp:1475 +msgid "Color changes" +msgstr "Změny barev" + +#: src/slic3r/GUI/GCodeViewer.cpp:2242 src/slic3r/GUI/GUI_Preview.cpp:282 +#: src/slic3r/GUI/GUI_Preview.cpp:784 src/libslic3r/GCode/PreviewData.cpp:364 msgid "Color Print" msgstr "Barevný tisk" -#: src/libslic3r/PrintConfig.cpp:260 +#: src/libslic3r/PrintConfig.cpp:294 msgid "Colorprint height" msgstr "Výška barevného tisku" -#: src/libslic3r/PrintConfig.cpp:990 +#: src/libslic3r/PrintConfig.cpp:1034 msgid "Combine infill every" msgstr "Kombinovat výplň každou" -#: src/libslic3r/PrintConfig.cpp:995 +#: src/libslic3r/PrintConfig.cpp:1039 msgid "Combine infill every n layers" msgstr "Kombinovat výplň každou n vrstvu" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:154 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:148 msgid "Commands" msgstr "Příkazy" @@ -1327,23 +1574,23 @@ msgstr "Příkazy" msgid "Comment:" msgstr "Komentář:" -#: src/slic3r/GUI/Tab.cpp:56 src/libslic3r/PrintConfig.cpp:280 +#: src/slic3r/GUI/Tab.cpp:107 src/libslic3r/PrintConfig.cpp:314 msgid "Compatible print profiles" msgstr "Kompatibilní tiskové profily" -#: src/libslic3r/PrintConfig.cpp:286 +#: src/libslic3r/PrintConfig.cpp:320 msgid "Compatible print profiles condition" msgstr "Stav kompatibilních tiskových profilů" -#: src/slic3r/GUI/Tab.cpp:50 src/libslic3r/PrintConfig.cpp:265 +#: src/slic3r/GUI/Tab.cpp:101 src/libslic3r/PrintConfig.cpp:299 msgid "Compatible printers" msgstr "Kompatibilní tiskárny" -#: src/libslic3r/PrintConfig.cpp:271 +#: src/libslic3r/PrintConfig.cpp:305 msgid "Compatible printers condition" msgstr "Stav kompatibilních tiskáren" -#: src/libslic3r/PrintConfig.cpp:304 +#: src/libslic3r/PrintConfig.cpp:338 msgid "Complete individual objects" msgstr "Dokončení individuálních objektů" @@ -1351,27 +1598,27 @@ msgstr "Dokončení individuálních objektů" msgid "Completed" msgstr "Dokončeno" -#: src/libslic3r/Zipper.cpp:54 +#: src/libslic3r/miniz_extension.cpp:113 msgid "compression failed" msgstr "komprese se nezdařila" -#: src/libslic3r/PrintConfig.cpp:426 src/libslic3r/PrintConfig.cpp:849 +#: src/libslic3r/PrintConfig.cpp:462 src/libslic3r/PrintConfig.cpp:887 msgid "Concentric" msgstr "Koncentrická" -#: src/slic3r/GUI/ConfigWizard.cpp:2110 +#: src/slic3r/GUI/ConfigWizard.cpp:2625 msgid "Configuration &Assistant" msgstr "Průvodce n&astavením" -#: src/slic3r/GUI/ConfigWizard.cpp:2113 +#: src/slic3r/GUI/ConfigWizard.cpp:2628 msgid "Configuration &Wizard" msgstr "Průvodce &nastavením" -#: src/slic3r/GUI/ConfigWizard.cpp:2109 +#: src/slic3r/GUI/ConfigWizard.cpp:2624 msgid "Configuration Assistant" msgstr "Průvodce nastavení tiskárny" -#: src/libslic3r/PrintConfig.cpp:1316 +#: src/libslic3r/PrintConfig.cpp:1424 msgid "Configuration notes" msgstr "Konfigurační poznámky" @@ -1387,11 +1634,15 @@ msgstr "Aktualizace nastavení" msgid "Configuration update is available" msgstr "Je k dispozici aktualizace nastavení" -#: src/slic3r/GUI/UpdateDialogs.cpp:303 +#: src/slic3r/GUI/NotificationManager.hpp:321 +msgid "Configuration update is available." +msgstr "Je k dispozici aktualizace konfigurace." + +#: src/slic3r/GUI/UpdateDialogs.cpp:304 msgid "Configuration updates" msgstr "Aktualizace konfigurace" -#: src/slic3r/GUI/ConfigWizard.cpp:2112 +#: src/slic3r/GUI/ConfigWizard.cpp:2627 msgid "Configuration Wizard" msgstr "Průvodce nastavením" @@ -1399,15 +1650,11 @@ msgstr "Průvodce nastavením" msgid "Confirmation" msgstr "Potvrzení" -#: src/slic3r/GUI/Tab.cpp:1931 -msgid "Connection failed." -msgstr "Připojení selhalo." - -#: src/slic3r/GUI/Tab.cpp:3627 +#: src/slic3r/GUI/Tab.cpp:4046 msgid "Connection of the support sticks and junctions" msgstr "Spojení podpůrných tyčí a spojek" -#: src/slic3r/Utils/AstroBox.cpp:83 +#: src/slic3r/Utils/AstroBox.cpp:84 msgid "Connection to AstroBox works correctly." msgstr "Připojení k AstroBoxu funguje správně." @@ -1423,124 +1670,136 @@ msgstr "Připojení k FlashAir funguje správně a nahrávání je povoleno." msgid "Connection to OctoPrint works correctly." msgstr "Připojení k OctoPrint pracuje správně." -#: src/slic3r/GUI/Tab.cpp:1928 -msgid "Connection to printer works correctly." -msgstr "Připojení k tiskárně pracuje správně." +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:260 +msgid "Connection to printers connected via the print host failed." +msgstr "Připojení k tiskárnám připojených prostřednictvím tiskového serveru se nezdařilo." -#: src/slic3r/Utils/OctoPrint.cpp:176 +#: src/slic3r/Utils/OctoPrint.cpp:185 msgid "Connection to Prusa SL1 works correctly." msgstr "Připojení k tiskárně Prusa SL1 funguje správně." -#: src/libslic3r/PrintConfig.cpp:1909 +#: src/libslic3r/PrintConfig.cpp:2051 msgid "Contact Z distance" msgstr "Mezera mezi podpěrami a objektem v ose Z" -#: src/slic3r/GUI/AboutDialog.cpp:261 +#: src/slic3r/GUI/AboutDialog.cpp:286 msgid "Contributions by Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik and numerous others." msgstr "Příspěvky od Henrika Brixa Andersena, Nicolase Dandrimonta, Marka Hindessa, Petra Ledviny, Josefa Lenoxe, Y. Sapira, Mika Sheldrakeho, Vojtěcha Bubnika a mnoha dalších." -#: src/libslic3r/PrintConfig.cpp:2659 +#: src/slic3r/GUI/GUI_App.cpp:245 +msgid "Contributions by Vojtech Bubnik, Enrico Turri, Oleksandra Iushchenko, Tamas Meszaros, Lukas Matena, Vojtech Kral, David Kocik and numerous others." +msgstr "Příspěvky od Vojtěcha Bubníka, Enrica Turriho, Oleksandry Iushchenko, Tamáse Mészárose, Lukáše Matěny, Vojtěcha Krále, Davida Kocíka a řady dalších." + +#: src/libslic3r/PrintConfig.cpp:2823 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 "Řídí typ mostu mezi dvěma sousedními sloupky. Může být zig-zag, cross (dvojitý zig-zag) nebo dynamic, který automaticky přepíná mezi prvními dvěma v závislosti na vzdálenosti dvou sloupků." -#: src/slic3r/GUI/Tab.cpp:1444 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1858 src/slic3r/GUI/Plater.cpp:4886 +msgid "Convert from imperial units" +msgstr "Převod z imperiálních jednotek" + +#: src/slic3r/GUI/Tab.cpp:1790 msgid "Cooling" msgstr "Chlazení" -#: src/libslic3r/PrintConfig.cpp:660 +#: src/libslic3r/PrintConfig.cpp:696 msgid "Cooling moves are gradually accelerating beginning at this speed." msgstr "Chladicí pohyby se postupně zrychlují a začínají touto rychlostí." -#: src/libslic3r/PrintConfig.cpp:679 +#: src/libslic3r/PrintConfig.cpp:715 msgid "Cooling moves are gradually accelerating towards this speed." msgstr "Chladící pohyby se postupně zrychlují až k této rychlosti." -#: src/slic3r/GUI/Tab.cpp:1465 +#: src/slic3r/GUI/Tab.cpp:1811 msgid "Cooling thresholds" msgstr "Podmínky chlazení" -#: src/libslic3r/PrintConfig.cpp:327 +#: src/libslic3r/PrintConfig.cpp:361 msgid "Cooling tube length" msgstr "Délka chladící trubičky" -#: src/libslic3r/PrintConfig.cpp:319 +#: src/libslic3r/PrintConfig.cpp:353 msgid "Cooling tube position" msgstr "Pozice chladící trubičky" -#: src/slic3r/GUI/Plater.cpp:4752 +#: src/slic3r/GUI/Plater.cpp:4856 msgid "Copies of the selected object" msgstr "Kopie vybraného modelu" -#: src/slic3r/GUI/GLCanvas3D.cpp:4505 +#: src/slic3r/GUI/GLCanvas3D.cpp:4871 msgid "Copy" msgstr "Kopírovat" -#: src/slic3r/GUI/MainFrame.cpp:589 +#: src/slic3r/GUI/MainFrame.cpp:1195 msgid "Copy selection to clipboard" msgstr "Kopírovat výběr do schránky" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:132 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:127 msgid "Copy to clipboard" msgstr "Kopírovat do schránky" -#: src/slic3r/GUI/SysInfoDialog.cpp:154 +#: src/slic3r/GUI/SysInfoDialog.cpp:177 msgid "Copy to Clipboard" msgstr "Kopírovat do Schránky" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:121 +#: 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." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:118 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:153 msgid "Copying of the temporary G-code has finished but the original code at %1% couldn't be opened during copy check. The output G-code is at %2%.tmp." msgstr "Kopírování dočasného G-codu bylo dokončeno, ale původní G-code na %1% nemohl být během kontroly kopírování otevřen. Výstupní G-code je v %2%.tmp." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:480 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:522 msgid "Copying of the temporary G-code to the output G-code failed" msgstr "Kopírování dočasného G-codu do výstupního G-codu selhalo" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:109 -msgid "Copying of the temporary G-code to the output G-code failed. Maybe the SD card is write locked?" -msgstr "Kopírování dočasného G-codu do výstupního G-codu se nezdařilo. Není SD karta chráněná proti zápisu?" +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:163 +msgid "" +"Copying of the temporary G-code to the output G-code failed. Maybe the SD card is write locked?\n" +"Error message: %1%" +msgstr "" +"Kopírování dočasného G-codu do výstupního G-codu se nezdařilo. Není SD karta chráněná proti zápisu?\n" +"Chybová hláška: %1%" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:112 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:147 msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp." msgstr "Kopírování dočasného G-codu do výstupního G-codu se nezdařilo. Může to být problém s cílovým zařízením. Zkuste exportovat znovu nebo použijte jiné zařízení. Poškozený výstupní G-code je v %1%.tmp." -#: src/slic3r/GUI/AboutDialog.cpp:127 src/slic3r/GUI/AboutDialog.cpp:256 +#: src/slic3r/GUI/AboutDialog.cpp:139 src/slic3r/GUI/AboutDialog.cpp:281 msgid "Copyright" msgstr "Autorská práva" -#: src/libslic3r/PrintConfig.cpp:2571 src/libslic3r/PrintConfig.cpp:2572 +#: src/libslic3r/PrintConfig.cpp:2714 src/libslic3r/PrintConfig.cpp:2715 msgid "Correction for expansion" msgstr "Korekce expanze" -#: src/slic3r/GUI/Tab.cpp:2100 src/slic3r/GUI/Tab.cpp:3519 +#: src/slic3r/GUI/Tab.cpp:2270 src/slic3r/GUI/Tab.cpp:3935 msgid "Corrections" msgstr "Korekce" -#: src/slic3r/GUI/Plater.cpp:1243 src/libslic3r/PrintConfig.cpp:760 -#: src/libslic3r/PrintConfig.cpp:2510 src/libslic3r/PrintConfig.cpp:2511 +#: src/slic3r/GUI/Plater.cpp:1158 src/libslic3r/PrintConfig.cpp:796 +#: src/libslic3r/PrintConfig.cpp:2653 src/libslic3r/PrintConfig.cpp:2654 msgid "Cost" msgstr "Náklady" -#: src/slic3r/GUI/Plater.cpp:239 +#: src/slic3r/GUI/Plater.cpp:245 msgid "Cost (money)" msgstr "Cena (peníze)" -#: src/slic3r/GUI/Plater.cpp:2835 +#: src/slic3r/GUI/Jobs/ArrangeJob.cpp:176 msgid "Could not arrange model objects! Some geometries may be invalid." msgstr "Objekty nelze uspořádat! Některé geometrie mohou být neplatné." -#: src/slic3r/Utils/AstroBox.cpp:89 +#: src/slic3r/Utils/AstroBox.cpp:90 msgid "Could not connect to AstroBox" msgstr "Nelze se připojit k AstroBoxu" -#: src/slic3r/Utils/Duet.cpp:54 +#: src/slic3r/Utils/Duet.cpp:55 msgid "Could not connect to Duet" msgstr "Nelze se připojit k Duet" -#: src/slic3r/Utils/FlashAir.cpp:73 +#: src/slic3r/Utils/FlashAir.cpp:74 msgid "Could not connect to FlashAir" msgstr "Nelze se spojit s FlashAir" @@ -1548,56 +1807,69 @@ msgstr "Nelze se spojit s FlashAir" msgid "Could not connect to OctoPrint" msgstr "Nelze se spojit s OctoPrintem" -#: src/slic3r/Utils/OctoPrint.cpp:181 +#: src/slic3r/Utils/OctoPrint.cpp:191 msgid "Could not connect to Prusa SLA" msgstr "Nelze se připojit k Prusa SLA" -#: src/slic3r/GUI/Tab.cpp:1687 +#: src/slic3r/Utils/Http.cpp:73 +msgid "Could not detect system SSL certificate store. PrusaSlicer will be unable to establish secure network connections." +msgstr "Úložiště systémových certifikátů SSL se nepodařilo zjistit. PrusaSlicer nebude schopen navázat zabezpečené síťové připojení." + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:289 msgid "Could not get a valid Printer Host reference" msgstr "Nelze získat platný odkaz na tiskový server" -#: src/slic3r/Utils/Duet.cpp:134 +#: src/slic3r/Utils/Duet.cpp:136 msgid "Could not get resources to create a new connection" msgstr "Nelze získat prostředky pro vytvoření nového spojení" -#: src/libslic3r/PrintConfig.cpp:1959 +#: src/libslic3r/PrintConfig.cpp:2101 msgid "Cover the top contact layer of the supports with loops. Disabled by default." msgstr "Zakrýt smyčkami horní kontaktní vrstvu podpěr. Ve výchozím nastavení zakázáno." -#: src/libslic3r/PrintConfig.cpp:89 +#: src/libslic3r/PrintConfig.cpp:91 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 "Praskliny menší než 2x poloměr uzavření mezery se vyplní během slicování trojúhelníkových sítí. Operace uzavírání mezery může snížit konečné rozlišení tisku, proto je vhodné udržovat rozumně nízkou hodnotu." -#: src/libslic3r/Zipper.cpp:58 +#: src/libslic3r/miniz_extension.cpp:117 msgid "CRC-32 check failed" msgstr "CRC-32 kontrola selhala" -#: src/libslic3r/PrintConfig.cpp:2857 +#: src/libslic3r/PrintConfig.cpp:3021 msgid "Create pad around object and ignore the support elevation" msgstr "Vytvoří podložku kolem objektu a ignorujte nadzvednutí objektu podpěrami" -#: src/libslic3r/PrintConfig.cpp:2724 +#: src/libslic3r/PrintConfig.cpp:2888 msgid "Critical angle" msgstr "Kritický úhel" -#: src/libslic3r/PrintConfig.cpp:2668 +#: src/libslic3r/PrintConfig.cpp:2832 msgid "Cross" msgstr "Cross" -#: src/libslic3r/PrintConfig.cpp:847 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:225 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:203 +msgid "Ctrl + Mouse wheel" +msgstr "Ctrl + kolečko myši" + +#: src/libslic3r/PrintConfig.cpp:885 msgid "Cubic" msgstr "Kubická" -#: src/slic3r/GUI/wxExtensions.cpp:704 +#: src/slic3r/Utils/Http.cpp:91 +msgid "CURL init has failed. PrusaSlicer will be unable to establish network connections. See logs for additional details." +msgstr "CURL init selhal. PrusaSlicer nebude schopen navázat síťová připojení. Další podrobnosti najdete v logu." + +#: src/slic3r/GUI/wxExtensions.cpp:624 #, c-format msgid "Current mode is %s" msgstr "Aktuální režim je %s" -#: src/slic3r/GUI/Tab.cpp:959 +#: src/slic3r/GUI/Tab.cpp:1278 msgid "Current preset is inherited from" msgstr "Aktuální nastavení je zděděné od" -#: src/slic3r/GUI/Tab.cpp:957 +#: src/slic3r/GUI/Tab.cpp:1276 msgid "Current preset is inherited from the default preset." msgstr "Aktuální nastavení je zděděno z výchozího nastavení." @@ -1605,451 +1877,488 @@ msgstr "Aktuální nastavení je zděděno z výchozího nastavení." msgid "Current version:" msgstr "Aktuální verze:" -#: src/slic3r/GUI/BedShapeDialog.cpp:98 src/slic3r/GUI/GUI_Preview.cpp:249 -#: src/libslic3r/ExtrusionEntity.cpp:322 +#: src/slic3r/GUI/BedShapeDialog.cpp:143 src/slic3r/GUI/GUI_Preview.cpp:314 +#: src/libslic3r/ExtrusionEntity.cpp:327 src/libslic3r/ExtrusionEntity.cpp:362 msgid "Custom" msgstr "Vlastní" -#: src/libslic3r/PrintConfig.cpp:112 +#: src/libslic3r/PrintConfig.cpp:114 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 "Pro HTTPS připojení OctoPrintu lze zadat vlastní CA certifikát ve formátu crt/pem. Pokud zůstane pole prázdné, použije se výchozí úložiště certifikátů OS CA." -#: src/slic3r/GUI/Tab.cpp:1527 src/slic3r/GUI/Tab.cpp:1975 +#: src/slic3r/GUI/Tab.cpp:1872 src/slic3r/GUI/Tab.cpp:2160 +#: src/libslic3r/PrintConfig.cpp:1978 msgid "Custom G-code" msgstr "Vlastní G-code" -#: src/slic3r/GUI/DoubleSlider.cpp:1619 +#: src/slic3r/GUI/DoubleSlider.cpp:1815 msgid "Custom G-code on current layer (%1% mm)." msgstr "Vlastní G-code v současné vrstvě (%1% mm)." -#: src/slic3r/GUI/ConfigWizard.cpp:732 +#: src/slic3r/GUI/GCodeViewer.cpp:2580 src/slic3r/GUI/GUI_Preview.cpp:1477 +msgid "Custom G-codes" +msgstr "Vlastní G-cody" + +#: src/slic3r/GUI/ConfigWizard.cpp:1091 msgid "Custom Printer" msgstr "Vlastní tiskárna" -#: src/slic3r/GUI/ConfigWizard.cpp:732 +#: src/slic3r/GUI/ConfigWizard.cpp:1091 msgid "Custom Printer Setup" msgstr "Vlastní nastavení tiskárny" -#: src/slic3r/GUI/ConfigWizard.cpp:736 +#: src/slic3r/GUI/ConfigWizard.cpp:1095 msgid "Custom profile name:" msgstr "Vlastní název profilu:" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:42 -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:144 src/libslic3r/PrintConfig.cpp:3402 +#: src/slic3r/GUI/DoubleSlider.cpp:1135 +msgid "Custom template (\"%1%\")" +msgstr "Vlastní šablona (\"%1%\")" + +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:146 src/libslic3r/PrintConfig.cpp:3601 msgid "Cut" msgstr "Řezat" -#: src/slic3r/GUI/Plater.cpp:4786 +#: src/slic3r/GUI/Plater.cpp:4921 msgid "Cut by Plane" msgstr "Řez Rovinou" -#: src/libslic3r/PrintConfig.cpp:3403 +#: src/libslic3r/PrintConfig.cpp:3602 msgid "Cut model at the given Z." msgstr "Rozříznout model v dané výšce Z." -#: src/slic3r/GUI/GUI_ObjectList.cpp:1432 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1563 msgid "Cylinder" msgstr "Válec" -#: src/slic3r/GUI/MainFrame.cpp:568 +#: src/slic3r/GUI/MainFrame.cpp:1174 msgid "D&eselect all" msgstr "Odznačit vš&e" -#: src/libslic3r/PrintConfig.cpp:3504 +#: src/libslic3r/PrintConfig.cpp:3709 msgid "Data directory" msgstr "Složka Data" -#: src/slic3r/GUI/Mouse3DController.cpp:313 +#: src/slic3r/GUI/Mouse3DController.cpp:300 msgid "Deadzone:" msgstr "Mrtvá zóna:" -#: src/libslic3r/Zipper.cpp:52 +#: src/libslic3r/miniz_extension.cpp:111 msgid "decompression failed or archive is corrupted" msgstr "dekomprese selhala nebo je archiv poškozen" -#: src/slic3r/GUI/Plater.cpp:4720 +#: src/slic3r/GUI/Plater.cpp:4824 msgid "Decrease Instances" msgstr "Odebrání Instancí" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1704 src/libslic3r/PrintConfig.cpp:335 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1832 src/libslic3r/PrintConfig.cpp:369 msgid "Default" msgstr "Výchozí" -#: src/slic3r/GUI/GUI_ObjectList.cpp:457 src/slic3r/GUI/GUI_ObjectList.cpp:469 -#: src/slic3r/GUI/GUI_ObjectList.cpp:917 src/slic3r/GUI/GUI_ObjectList.cpp:3967 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3977 -#: src/slic3r/GUI/GUI_ObjectList.cpp:4012 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:200 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:257 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:282 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:490 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:1753 +#: 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/ObjectDataViewModel.cpp:202 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:259 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:284 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:492 msgid "default" msgstr "výchozí" -#: src/libslic3r/PrintConfig.cpp:777 +#: src/libslic3r/PrintConfig.cpp:813 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 "Výchozí úhel pro orientaci výplně. Bude pro něj použito křížové šrafování. Mosty budou vyplněny nejlepším směrem, který Slic3r dokáže rozpoznat, takže toto nastavení je neovlivní." -#: src/libslic3r/PrintConfig.cpp:554 +#: src/slic3r/GUI/GCodeViewer.cpp:2289 +msgid "Default color" +msgstr "Výchozí barva" + +#: src/slic3r/GUI/GCodeViewer.cpp:2313 +msgid "default color" +msgstr "výchozí barva" + +#: src/libslic3r/PrintConfig.cpp:590 msgid "Default extrusion width" msgstr "Výchozí šířka extruze" -#: src/slic3r/GUI/Tab.cpp:987 +#: src/slic3r/GUI/Tab.cpp:1305 msgid "default filament profile" msgstr "výchozí profil filamentu" -#: src/libslic3r/PrintConfig.cpp:345 +#: src/libslic3r/PrintConfig.cpp:379 msgid "Default filament profile" msgstr "Výchozí profil filamentu" -#: src/libslic3r/PrintConfig.cpp:346 +#: src/libslic3r/PrintConfig.cpp:380 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/Tab.cpp:2919 -#, c-format -msgid "Default preset (%s)" -msgstr "Výchozí přednastavení (%s)" - -#: src/slic3r/GUI/GLCanvas3D.cpp:904 src/slic3r/GUI/GLCanvas3D.cpp:933 +#: 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:984 +#: src/slic3r/GUI/Tab.cpp:1302 msgid "default print profile" msgstr "výchozí tiskový profil" -#: src/libslic3r/PrintConfig.cpp:352 +#: src/libslic3r/PrintConfig.cpp:386 msgid "Default print profile" msgstr "Výchozí tiskový profil" -#: src/libslic3r/PrintConfig.cpp:353 src/libslic3r/PrintConfig.cpp:2592 -#: src/libslic3r/PrintConfig.cpp:2603 +#: src/libslic3r/PrintConfig.cpp:387 src/libslic3r/PrintConfig.cpp:2735 +#: src/libslic3r/PrintConfig.cpp:2746 msgid "Default print profile associated with the current printer profile. On selection of the current printer profile, this print profile will be activated." msgstr "Výchozí tiskový profil spojený se současným profilem tiskárny. Při výběru současného profilu tiskárny se aktivuje tento tiskový profil." -#: src/slic3r/GUI/Tab.cpp:1001 +#: src/slic3r/GUI/Tab.cpp:1319 msgid "default SLA material profile" msgstr "výchozí profil pro SLA materiál" -#: src/libslic3r/PrintConfig.cpp:2591 src/libslic3r/PrintConfig.cpp:2602 +#: src/libslic3r/PrintConfig.cpp:2734 src/libslic3r/PrintConfig.cpp:2745 msgid "Default SLA material profile" msgstr "Výchozí profil pro SLA materiál" -#: src/slic3r/GUI/Tab.cpp:1005 +#: src/slic3r/GUI/Tab.cpp:1323 msgid "default SLA print profile" msgstr "výchozí SLA tiskový profil" -#: src/slic3r/GUI/Field.cpp:136 +#: src/slic3r/GUI/Field.cpp:184 msgid "default value" msgstr "výchozí hodnota" -#: src/slic3r/GUI/ConfigWizard.cpp:734 +#: src/slic3r/GUI/ConfigWizard.cpp:1093 msgid "Define a custom printer profile" msgstr "Vytvořit vlastní tiskový profil" -#: src/libslic3r/PrintConfig.cpp:2798 +#: src/libslic3r/PrintConfig.cpp:2962 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 effect inside the cavity, which makes peeling the print off the vat foil difficult." msgstr "Definuje hloubku dutiny. Chcete-li dutinu vypnout, nastavte ji na nulu. Při povolování této funkce buďte opatrní, protože některé pryskyřice mohou způsobit extrémní sací efekt uvnitř dutiny, což ztěžuje odlupování tisku z fólie ve vaničce." -#: src/slic3r/GUI/GUI_ObjectList.cpp:346 +#: src/slic3r/GUI/GUI_ObjectList.cpp:393 msgid "degenerate facets" msgstr "degenerace facetů" -#: src/libslic3r/PrintConfig.cpp:640 +#: src/libslic3r/PrintConfig.cpp:676 msgid "Delay after unloading" msgstr "Zpoždění po vyjmutí" -#: src/slic3r/GUI/Tab.cpp:3121 +#: src/slic3r/GUI/Tab.cpp:3386 msgid "delete" msgstr "smazat" -#: src/slic3r/GUI/GLCanvas3D.cpp:4475 src/slic3r/GUI/GUI_ObjectList.cpp:1718 -#: src/slic3r/GUI/Plater.cpp:3931 src/slic3r/GUI/Plater.cpp:3953 -#: src/slic3r/GUI/Tab.cpp:3124 +#: src/slic3r/GUI/GLCanvas3D.cpp:4841 src/slic3r/GUI/GUI_ObjectList.cpp:1846 +#: src/slic3r/GUI/Plater.cpp:3849 src/slic3r/GUI/Plater.cpp:3871 +#: src/slic3r/GUI/Tab.cpp:3423 msgid "Delete" msgstr "Smazat" -#: src/slic3r/GUI/MainFrame.cpp:575 +#: src/slic3r/GUI/MainFrame.cpp:1181 msgid "Delete &all" msgstr "Sm&azat vše" -#: src/slic3r/GUI/GLCanvas3D.cpp:4484 src/slic3r/GUI/KBShortcutsDialog.cpp:129 -#: src/slic3r/GUI/Plater.cpp:4669 +#: src/slic3r/GUI/GLCanvas3D.cpp:4850 src/slic3r/GUI/KBShortcutsDialog.cpp:124 +#: src/slic3r/GUI/Plater.cpp:4774 msgid "Delete all" msgstr "Smazat vše" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2176 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2341 msgid "Delete All Instances from Object" msgstr "Smazat všechny instance objektu" -#: src/slic3r/GUI/DoubleSlider.cpp:1516 +#: src/slic3r/GUI/DoubleSlider.cpp:1708 msgid "Delete color change" msgstr "Smazat změnu barvy" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:219 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:220 msgid "Delete color change marker for current layer" msgstr "Odebrat značku změny barvy pro aktuální vrstvu" -#: src/slic3r/GUI/DoubleSlider.cpp:1519 +#: src/slic3r/GUI/DoubleSlider.cpp:1711 msgid "Delete custom G-code" msgstr "Smazat vlastní G-code" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:539 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:424 msgid "Delete drainage hole" msgstr "Odstranění odtokového otvoru" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2192 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2357 msgid "Delete Height Range" msgstr "Odstranění Rozsahu vrstev" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2246 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2412 msgid "Delete Instance" msgstr "Smazání Instance" -#: src/slic3r/GUI/Plater.cpp:2712 +#: src/slic3r/GUI/Plater.cpp:2673 msgid "Delete Object" msgstr "Smazat Objekt" -#: src/slic3r/GUI/GUI_ObjectSettings.cpp:101 +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:104 #, c-format msgid "Delete Option %s" msgstr "Odebrání parametru %s" -#: src/slic3r/GUI/DoubleSlider.cpp:1518 +#: src/slic3r/GUI/DoubleSlider.cpp:1710 msgid "Delete pause print" msgstr "Odebrat pozastavení tisku" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:128 +#: src/slic3r/GUI/PresetComboBoxes.cpp:652 +msgid "Delete physical printer" +msgstr "Odstranit fyzickou tiskárnu" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:659 +msgid "Delete Physical Printer" +msgstr "Odstranit fyzickou tiskárnu" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:123 msgid "Delete selected" msgstr "Smazat vybrané" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2830 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3221 msgid "Delete Selected" msgstr "Smazání vybraných" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2693 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3083 msgid "Delete Selected Item" msgstr "Smazat vybrané položky" -#: src/slic3r/GUI/Plater.cpp:4677 +#: src/slic3r/GUI/Plater.cpp:4782 msgid "Delete Selected Objects" msgstr "Odstranit vybrané objekty" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2152 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2319 msgid "Delete Settings" msgstr "Smazat Nastavení" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2227 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2393 msgid "Delete Subobject" msgstr "Smazání dílčího objektu" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:631 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:514 msgid "Delete support point" msgstr "Odebrání podpěrného bodu" -#: src/slic3r/GUI/Tab.cpp:134 +#: src/slic3r/GUI/Tab.cpp:204 msgid "Delete this preset" msgstr "Smazat přednastavení" -#: src/slic3r/GUI/DoubleSlider.cpp:1035 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:55 +msgid "Delete this preset from this printer device" +msgstr "Odstranit toto přednastavení z této tiskárny" + +#: src/slic3r/GUI/DoubleSlider.cpp:1160 msgid "Delete tick mark - Left click or press \"-\" key" msgstr "Smazat značku - Levé tlačítko myši nebo klávesa \"-\"" -#: src/slic3r/GUI/DoubleSlider.cpp:1517 +#: src/slic3r/GUI/DoubleSlider.cpp:1709 msgid "Delete tool change" msgstr "Smazat změnu nástroje" -#: src/slic3r/GUI/MainFrame.cpp:576 +#: src/slic3r/GUI/MainFrame.cpp:1182 msgid "Deletes all objects" msgstr "Smazat všechny objekty" -#: src/slic3r/GUI/MainFrame.cpp:573 +#: src/slic3r/GUI/MainFrame.cpp:1179 msgid "Deletes the current selection" msgstr "Smaže aktuální výběr" -#: src/libslic3r/PrintConfig.cpp:717 src/libslic3r/PrintConfig.cpp:2503 -#: src/libslic3r/PrintConfig.cpp:2504 +#: src/libslic3r/PrintConfig.cpp:753 src/libslic3r/PrintConfig.cpp:2646 +#: src/libslic3r/PrintConfig.cpp:2647 msgid "Density" msgstr "Hustota" -#: src/libslic3r/PrintConfig.cpp:791 +#: 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%." -#: src/slic3r/GUI/Tab.cpp:1258 src/slic3r/GUI/Tab.cpp:1548 -#: src/slic3r/GUI/Tab.cpp:2019 src/slic3r/GUI/Tab.cpp:2135 -#: src/slic3r/GUI/Tab.cpp:3543 src/slic3r/GUI/Tab.cpp:3671 +#: src/slic3r/GUI/Tab.cpp:1588 src/slic3r/GUI/Tab.cpp:1895 +#: src/slic3r/GUI/Tab.cpp:2228 src/slic3r/GUI/Tab.cpp:2304 +#: src/slic3r/GUI/Tab.cpp:3959 src/slic3r/GUI/Tab.cpp:4090 msgid "Dependencies" msgstr "Závislosti" -#: src/libslic3r/PrintConfig.cpp:1612 src/libslic3r/PrintConfig.cpp:1613 +#: src/libslic3r/PrintConfig.cpp:1720 src/libslic3r/PrintConfig.cpp:1721 msgid "Deretraction Speed" msgstr "Rychlost deretrakce" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:127 +#: src/slic3r/GUI/GCodeViewer.cpp:2529 src/slic3r/GUI/GUI_Preview.cpp:337 +#: src/slic3r/GUI/GUI_Preview.cpp:1473 +msgid "Deretractions" +msgstr "Deretrakce" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:172 +msgid "Descriptive name for the printer" +msgstr "Popisný název tiskárny" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:122 msgid "Deselect all" msgstr "Odznačit vše" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1369 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1216 msgid "Deselect by rectangle" msgstr "Odznačit obdélníkovým výběrem myši" -#: src/slic3r/GUI/MainFrame.cpp:569 +#: src/slic3r/GUI/MainFrame.cpp:1175 msgid "Deselects all objects" msgstr "Odznačit všechny objekty" -#: src/slic3r/GUI/Tab.cpp:963 +#: src/slic3r/GUI/Tab.cpp:1224 msgid "Detach from system preset" msgstr "Oddělit od systémového přednastavení" -#: src/slic3r/GUI/Tab.cpp:984 +#: src/slic3r/GUI/Tab.cpp:1246 msgid "Detach preset" msgstr "Oddělení přednastavení" -#: src/slic3r/GUI/Tab.cpp:3029 +#: src/slic3r/GUI/Tab.cpp:3323 msgid "Detached" msgstr "Odpojeno" -#: src/libslic3r/PrintConfig.cpp:1373 +#: src/libslic3r/PrintConfig.cpp:1481 msgid "Detect bridging perimeters" msgstr "Detekovat perimetry přemostění" -#: src/libslic3r/PrintConfig.cpp:2075 +#: src/libslic3r/PrintConfig.cpp:2218 msgid "Detect single-width walls (parts where two extrusions don't fit and we need to collapse them into a single trace)." msgstr "Detekuje stěny o tloušťce jedné čáry (části, kam se dvě čáry nemohou vejít a je potřeba sloučit je do čáry jedné)." -#: src/libslic3r/PrintConfig.cpp:2073 +#: src/libslic3r/PrintConfig.cpp:2216 msgid "Detect thin walls" msgstr "Detekovat tenké zdi" -#: src/libslic3r/PrintConfig.cpp:3472 +#: src/libslic3r/PrintConfig.cpp:3671 msgid "Detect unconnected parts in the given model(s) and split them into separate objects." msgstr "Rozpoznat nepřipojené části daného modelu(ů) a rozdělit je do samostatných objektů." -#: src/slic3r/GUI/Plater.cpp:2368 +#: src/slic3r/GUI/Plater.cpp:2330 msgid "Detected advanced data" msgstr "Byla detekována data z pokročilého režimu" -#: src/slic3r/GUI/Mouse3DController.cpp:289 +#: src/slic3r/GUI/Mouse3DController.cpp:274 msgid "Device:" msgstr "Zařízení:" -#: src/slic3r/GUI/BedShapeDialog.cpp:93 src/libslic3r/PrintConfig.cpp:709 +#: src/slic3r/GUI/BedShapeDialog.cpp:95 src/libslic3r/PrintConfig.cpp:745 msgid "Diameter" msgstr "Průměr" -#: src/libslic3r/PrintConfig.cpp:2694 +#: src/libslic3r/PrintConfig.cpp:2858 msgid "Diameter in mm of the pillar base" msgstr "Průměr základny podpěr v mm" -#: src/libslic3r/PrintConfig.cpp:2650 +#: src/libslic3r/PrintConfig.cpp:2793 msgid "Diameter in mm of the support pillars" msgstr "Průměr podpěrných sloupů v mm" -#: src/libslic3r/PrintConfig.cpp:2622 +#: src/libslic3r/PrintConfig.cpp:2765 msgid "Diameter of the pointing side of the head" msgstr "Průměr konce podpůrného hrotu" -#: src/slic3r/GUI/BedShapeDialog.cpp:94 +#: src/slic3r/GUI/BedShapeDialog.cpp:131 msgid "Diameter of the print bed. It is assumed that origin (0,0) is located in the center." msgstr "Průměr tiskové podložky. Přepokládaný počátek (0,0) je umístěn uprostřed." -#: src/libslic3r/PrintConfig.cpp:1639 +#: src/libslic3r/PrintConfig.cpp:1747 msgid "Direction" msgstr "Směr" -#: src/libslic3r/PrintConfig.cpp:359 +#: src/libslic3r/PrintConfig.cpp:393 msgid "Disable fan for the first" msgstr "Vypnutí chlazení pro prvních" -#: src/libslic3r/PrintConfig.cpp:1349 +#: src/libslic3r/PrintConfig.cpp:1457 msgid "Disables retraction when the travel path does not exceed the upper layer's perimeters (and thus any ooze will be probably invisible)." msgstr "Vypne retrakce, pokud dráha nepřekročí perimetr vrchní vrstvy (a proto bude pravděpodobně jakékoliv odkapávání neviditelné)." -#: src/slic3r/GUI/DoubleSlider.cpp:952 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:641 +msgid "Discard" +msgstr "Zahodit" + +#: src/slic3r/GUI/DoubleSlider.cpp:1066 msgid "Discard all custom changes" msgstr "Odstranit všechny vámi provedené změny" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:53 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1375 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:52 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1222 msgid "Discard changes" msgstr "Zahodit změny" -#: src/slic3r/GUI/GUI_App.cpp:932 src/slic3r/GUI/Tab.cpp:2946 -msgid "Discard changes and continue anyway?" -msgstr "Zahodit změny a pokračovat?" - -#: src/slic3r/GUI/Tab.cpp:2078 +#: src/slic3r/GUI/Tab.cpp:2248 msgid "Display" msgstr "Displej" -#: src/libslic3r/PrintConfig.cpp:2359 +#: src/libslic3r/PrintConfig.cpp:2502 msgid "Display height" msgstr "Výška displeje" -#: src/libslic3r/PrintConfig.cpp:2378 +#: src/libslic3r/PrintConfig.cpp:2521 msgid "Display horizontal mirroring" msgstr "Horizontální zrcadlení displeje" -#: src/libslic3r/PrintConfig.cpp:2392 +#: src/libslic3r/PrintConfig.cpp:2535 msgid "Display orientation" msgstr "Orientace displeje" -#: src/slic3r/GUI/MainFrame.cpp:648 +#: src/slic3r/GUI/MainFrame.cpp:1258 msgid "Display the Print Host Upload Queue window" msgstr "Zobrazit okno s frontou nahrávání do tiskového serveru" -#: src/libslic3r/PrintConfig.cpp:2385 +#: src/libslic3r/PrintConfig.cpp:2528 msgid "Display vertical mirroring" msgstr "Vertikální zrcadlení displeje" -#: src/libslic3r/PrintConfig.cpp:2353 +#: src/libslic3r/PrintConfig.cpp:2496 msgid "Display width" msgstr "Šířka displeje" -#: src/libslic3r/PrintConfig.cpp:377 +#: src/libslic3r/PrintConfig.cpp:411 msgid "Distance between copies" msgstr "Vzdálenost mezi kopiemi" -#: src/libslic3r/PrintConfig.cpp:1680 +#: src/libslic3r/PrintConfig.cpp:1157 +msgid "Distance between ironing lines" +msgstr "Vzdálenost mezi žehlicími tahy" + +#: src/libslic3r/PrintConfig.cpp:1788 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 "Vzdálenost mezi obrysem a objektem (objekty). Nastavte tuto hodnotu na nulu, pro sloučení obrysu s předmětem (předměty) a tvorbu límce pro dosažení lepší přilnavosti." -#: src/libslic3r/PrintConfig.cpp:2882 +#: src/libslic3r/PrintConfig.cpp:3046 msgid "Distance between two connector sticks which connect the object and the generated pad." msgstr "Rozteč mezi dvěmi spojkami, které spojují objekt s vygenerovanou podložkou." -#: src/libslic3r/PrintConfig.cpp:1679 +#: src/libslic3r/PrintConfig.cpp:1787 msgid "Distance from object" msgstr "Vzdálenost od objektu" -#: src/slic3r/GUI/BedShapeDialog.cpp:85 +#: src/slic3r/GUI/BedShapeDialog.cpp:121 msgid "Distance of the 0,0 G-code coordinate from the front left corner of the rectangle." msgstr "Vzdálenost souřadnice 0,0 G-code od předního levého rohu obdélníku." -#: src/libslic3r/PrintConfig.cpp:320 +#: src/libslic3r/PrintConfig.cpp:354 msgid "Distance of the center-point of the cooling tube from the extruder tip." msgstr "Vzdálenost ze středu chladící trubičky ke špičce extruderu." -#: src/libslic3r/PrintConfig.cpp:1382 +#: src/libslic3r/PrintConfig.cpp:1490 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 "Vzdálenost špičky extruderu od místa, kde je zaparkován filament při vytažení. Měla by se shodovat s hodnotou ve firmware tiskárny." -#: src/libslic3r/PrintConfig.cpp:378 +#: src/libslic3r/PrintConfig.cpp:412 msgid "Distance used for the auto-arrange feature of the plater." msgstr "Vzdálenost, použitá pro funkci automatického rozmístění po podložce." -#: src/libslic3r/PrintConfig.cpp:3486 +#: src/libslic3r/PrintConfig.cpp:3685 msgid "Do not fail if a file supplied to --load does not exist." msgstr "Nepodaří se, pokud neexistuje soubor dodaný k přepínači --load." -#: src/libslic3r/PrintConfig.cpp:3430 +#: src/libslic3r/PrintConfig.cpp:3629 msgid "Do not rearrange the given models before merging and keep their original XY coordinates." msgstr "Nepřeuspořádávejte modely před sloučením a tím ponecháním jejich původních souřadnic v XY." -#: src/slic3r/GUI/Field.cpp:240 +#: src/slic3r/GUI/Field.cpp:288 #, c-format msgid "" "Do you mean %s%% instead of %s %s?\n" @@ -2060,31 +2369,35 @@ msgstr "" "Vyberte ANO, pokud chcete změnit tuto hodnotu na %s%%,\n" "nebo NE, pokud jste si jisti, že %s %s je správná hodnota." -#: src/slic3r/GUI/DoubleSlider.cpp:1920 +#: src/slic3r/GUI/DoubleSlider.cpp:2138 msgid "Do you want to delete all saved tool changes?" msgstr "Opravdu chcete odstranit všechny uložené změny nástrojů?" -#: src/slic3r/GUI/GUI_App.cpp:884 +#: src/slic3r/GUI/GUI_App.cpp:1610 msgid "Do you want to proceed?" msgstr "Chcete pokračovat?" -#: src/slic3r/GUI/Plater.cpp:3321 +#: src/slic3r/GUI/Plater.cpp:3124 msgid "Do you want to retry" msgstr "Chcete to zkusit znovu" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1045 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:911 msgid "Do you want to save your manually edited support points?" msgstr "Chcete uložit ručně upravené podpěrné body?" -#: src/slic3r/GUI/ConfigWizard.cpp:1834 +#: src/slic3r/GUI/ConfigWizard.cpp:2261 msgid "Do you want to select default filaments for these FFF printer models?" msgstr "Chcete pro tyto modely FFF tiskáren vybrat výchozí filamenty?" -#: src/slic3r/GUI/ConfigWizard.cpp:1852 +#: src/slic3r/GUI/ConfigWizard.cpp:2279 msgid "Do you want to select default SLA materials for these printer models?" msgstr "Chcete pro tyto modely tiskáren vybrat výchozí SLA materiály?" -#: src/libslic3r/PrintConfig.cpp:3429 +#: src/slic3r/GUI/Plater.cpp:4751 +msgid "does not contain valid gcode." +msgstr "neobsahuje platný G-code." + +#: src/libslic3r/PrintConfig.cpp:3628 msgid "Don't arrange" msgstr "Neuspořádávat" @@ -2092,7 +2405,11 @@ msgstr "Neuspořádávat" msgid "Don't notify about new releases any more" msgstr "Neupozorňovat na nové verze" -#: src/libslic3r/PrintConfig.cpp:369 +#: src/slic3r/GUI/Plater.cpp:1431 +msgid "Don't show again" +msgstr "Znovu nezobrazovat" + +#: src/libslic3r/PrintConfig.cpp:403 msgid "Don't support bridges" msgstr "Nevytvářet podpěry pod mosty" @@ -2100,234 +2417,296 @@ msgstr "Nevytvářet podpěry pod mosty" msgid "Downgrade" msgstr "Downgrade" -#: src/libslic3r/PrintConfig.cpp:1695 +#: src/libslic3r/PrintConfig.cpp:1803 msgid "Draft shield" msgstr "Ochranný štít" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1365 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1368 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1369 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1212 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1215 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1216 msgid "Drag" msgstr "Tažení" -#: src/libslic3r/SLAPrintSteps.cpp:44 +#: src/slic3r/GUI/Plater.cpp:1406 +msgid "Drag and drop G-code file" +msgstr "Přetáhněte soubor G-code" + +#: src/libslic3r/SLAPrintSteps.cpp:45 msgid "Drilling holes into model." msgstr "Vrtání otvorů do modelu." -#: src/libslic3r/SLAPrintSteps.cpp:199 +#: src/libslic3r/SLAPrintSteps.cpp:201 msgid "Drilling holes into the mesh failed. This is usually caused by broken model. Try to fix it first." msgstr "Vrtání otvorů do meshe selhalo. Je to obvykle způsobené poškozeným modelem. Zkuste ho nejprve opravit." -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:337 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:349 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:345 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:357 msgid "Drop to bed" msgstr "Spadnout na podložku" -#: src/libslic3r/PrintConfig.cpp:3433 +#: src/libslic3r/PrintConfig.cpp:3632 msgid "Duplicate" msgstr "Duplikovat" -#: src/libslic3r/PrintConfig.cpp:3438 +#: src/libslic3r/PrintConfig.cpp:3637 msgid "Duplicate by grid" msgstr "Duplikovat mřížkou" -#: src/slic3r/GUI/PresetHints.cpp:40 +#: src/slic3r/GUI/GCodeViewer.cpp:2445 +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/libslic3r/PrintConfig.cpp:2669 +#: src/libslic3r/PrintConfig.cpp:2833 msgid "Dynamic" msgstr "Dynamic" -#: src/slic3r/GUI/MainFrame.cpp:749 +#: src/slic3r/GUI/MainFrame.cpp:1448 msgid "E&xport" msgstr "E&xportovat" -#: src/slic3r/GUI/GUI_ObjectList.cpp:347 +#: src/slic3r/GUI/GUI_ObjectList.cpp:394 msgid "edges fixed" msgstr "hrany opraveny" -#: src/slic3r/GUI/DoubleSlider.cpp:1508 +#: src/slic3r/GUI/DoubleSlider.cpp:1700 msgid "Edit color" msgstr "Upravit barvu" -#: src/slic3r/GUI/DoubleSlider.cpp:960 +#: src/slic3r/GUI/DoubleSlider.cpp:1083 msgid "Edit current color - Right click the colored slider segment" msgstr "Upravit aktuální barvu - Klik pravým tlačítkem na barevný segment posuvníku" -#: src/slic3r/GUI/DoubleSlider.cpp:1510 +#: src/slic3r/GUI/DoubleSlider.cpp:1702 msgid "Edit custom G-code" msgstr "Upravit vlastní G-code" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3003 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3459 msgid "Edit Height Range" msgstr "Úprava Rozsahu vrstev" -#: src/slic3r/GUI/DoubleSlider.cpp:1509 +#: src/slic3r/GUI/DoubleSlider.cpp:1701 msgid "Edit pause print message" msgstr "Upravit zprávu při pozastavení tisku" -#: src/slic3r/GUI/DoubleSlider.cpp:1037 +#: src/slic3r/GUI/PresetComboBoxes.cpp:645 +msgid "Edit physical printer" +msgstr "Upravit fyzickou tiskárnu" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:641 +msgid "Edit preset" +msgstr "Upravit přednastavení" + +#: src/slic3r/GUI/DoubleSlider.cpp:1162 msgid "Edit tick mark - Ctrl + Left click" msgstr "Upravit značku - Ctrl + Levé tlačítko myši" -#: src/slic3r/GUI/DoubleSlider.cpp:1038 +#: src/slic3r/GUI/DoubleSlider.cpp:1163 msgid "Edit tick mark - Right click" msgstr "Upravit značku - Pravé tlačítko myši" -#: src/slic3r/GUI/GUI_ObjectList.cpp:282 src/slic3r/GUI/GUI_ObjectList.cpp:394 +#: src/slic3r/GUI/GUI_ObjectList.cpp:300 src/slic3r/GUI/GUI_ObjectList.cpp:441 msgid "Editing" msgstr "Editace" -#: src/slic3r/GUI/MainFrame.cpp:547 +#: src/slic3r/GUI/MainFrame.cpp:1105 msgid "Ejec&t SD card / Flash drive" msgstr "Vysunou&t SD kartu / Flash disk" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:126 +#: src/slic3r/GUI/NotificationManager.cpp:780 +msgid "Eject drive" +msgstr "Vysunout úložiště" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:119 msgid "Eject SD card / Flash drive" msgstr "Vysunout SD kartu / Flash disk" -#: src/slic3r/GUI/MainFrame.cpp:547 +#: src/slic3r/GUI/MainFrame.cpp:1105 msgid "Eject SD card / Flash drive after the G-code was exported to it." msgstr "Vysunout SD kartu / Flash disk po vyexportování G-codu." -#: src/slic3r/GUI/Plater.cpp:2202 +#: src/slic3r/GUI/Plater.cpp:2034 #, c-format msgid "Ejecting of device %s(%s) has failed." msgstr "Vysunutí zařízení %s(%s) se nezdařilo." -#: src/libslic3r/PrintConfig.cpp:118 +#: src/libslic3r/PrintConfig.cpp:120 msgid "Elephant foot compensation" msgstr "Kompenzace rozplácnutí první vrstvy" -#: src/libslic3r/PrintConfig.cpp:2447 +#: src/libslic3r/PrintConfig.cpp:2590 msgid "Elephant foot minimum width" msgstr "Minimální šířka po kompenzaci rozplácnutí první vrstvy" -#: src/libslic3r/SLAPrint.cpp:625 +#: src/libslic3r/SLAPrint.cpp:639 msgid "Elevation is too low for object. Use the \"Pad around object\" feature to print the object without elevation." msgstr "Nadzvednutí objektu je příliš malé. Pomocí funkce „Podložka okolo objektu“ můžete objekt vytisknout bez nadzvednutí nad podložku." -#: src/libslic3r/PrintConfig.cpp:1093 +#: src/libslic3r/PrintConfig.cpp:1186 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. As of now only the Prusa i3 MK3 firmware recognizes M73. Also the i3 MK3 firmware supports M73 Qxx Sxx for the silent mode." msgstr "Vkládání M73 P[počet vytištěných procent] R[zbývající čas v minutách] v 1 minutových intervalech do G-codu, aby firmware ukázal přesný zbývající čas. M73 nyní rozpoznává pouze firmware tiskárny Prusa i3 MK3. Firmware i3 MK3 také podporuje M73 Qxx Sxx pro tichý režim." -#: src/libslic3r/GCode.cpp:637 +#: src/libslic3r/PrintConfig.cpp:1217 +msgid "Emit to G-code" +msgstr "Emitivat do G-codu" + +#: src/libslic3r/GCode.cpp:622 msgid "Empty layers detected, the output would not be printable." msgstr "Byly detekovány prázdné vrstvy, model by nebylo možné vytisknout." -#: src/slic3r/GUI/Tab.cpp:1445 src/libslic3r/PrintConfig.cpp:1355 -#: src/libslic3r/PrintConfig.cpp:2200 +#: src/slic3r/GUI/Tab.cpp:1791 src/libslic3r/PrintConfig.cpp:1463 +#: src/libslic3r/PrintConfig.cpp:2343 msgid "Enable" msgstr "Zapnout" -#: src/libslic3r/PrintConfig.cpp:313 +#: src/libslic3r/PrintConfig.cpp:347 msgid "Enable auto cooling" msgstr "Zapnutí automatického chlazení" -#: src/libslic3r/PrintConfig.cpp:572 +#: src/libslic3r/PrintConfig.cpp:608 msgid "Enable fan if layer print time is below" msgstr "Zapnout ventilátor, pokud je doba tisku vrstvy kratší než" -#: src/libslic3r/PrintConfig.cpp:2908 +#: src/libslic3r/PrintConfig.cpp:3072 msgid "Enable hollowing" msgstr "Povolit tvorbu dutin" -#: src/libslic3r/PrintConfig.cpp:2380 +#: src/libslic3r/PrintConfig.cpp:2523 msgid "Enable horizontal mirroring of output images" msgstr "Zapne horizontální zrcadlení výstupních obrázků" -#: src/libslic3r/PrintConfig.cpp:1867 +#: src/libslic3r/PrintConfig.cpp:1124 +msgid "Enable ironing" +msgstr "Zapnout ironing" + +#: src/libslic3r/PrintConfig.cpp:1125 +msgid "Enable ironing of the top layers with the hot print head for smooth surface" +msgstr "Pro hladké vrchní vrstvy povolte ironing pomocí ohřáté tiskové hlavy" + +#: src/libslic3r/PrintConfig.cpp:2009 msgid "Enable support material generation." msgstr "Zapne generování podpěr." -#: src/libslic3r/PrintConfig.cpp:966 +#: src/libslic3r/PrintConfig.cpp:1010 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 plugin. This settings is NOT compatible with Single Extruder Multi Material setup and Wipe into Object / Wipe into Infill." msgstr "Zapněte tuto možnost, chcete-li do G-Code přidávat komentáře, které budou určovat, příslušnost tiskových pohybů k jednotlivým objektům. To je užitečné pro Octoprint plugin CancelObject. Nastavení NENÍ kompatibilní se Single Extruder Multi Material konfigurací a s čištěním trysky do objektu / výplně." -#: src/libslic3r/PrintConfig.cpp:929 +#: src/libslic3r/PrintConfig.cpp:973 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 "Aktivací získáte komentovaný soubor G-code, přičemž každý řádek je doplněn popisným textem. Pokud tisknete z SD karty, dodatečné informace v souboru můžou zpomalit firmware." -#: src/libslic3r/PrintConfig.cpp:2186 +#: src/libslic3r/PrintConfig.cpp:2329 msgid "Enable variable layer height feature" msgstr "Zapnout variabilní výšku vrstev" -#: src/libslic3r/PrintConfig.cpp:2387 +#: src/libslic3r/PrintConfig.cpp:2530 msgid "Enable vertical mirroring of output images" msgstr "Zapne vertikální zrcadlení výstupních obrázků" -#: src/slic3r/GUI/Tab.cpp:1534 src/slic3r/GUI/Tab.cpp:1982 -#: src/libslic3r/PrintConfig.cpp:385 src/libslic3r/PrintConfig.cpp:395 +#: src/slic3r/GUI/Tab.cpp:1880 src/slic3r/GUI/Tab.cpp:2168 +#: src/libslic3r/PrintConfig.cpp:419 src/libslic3r/PrintConfig.cpp:429 msgid "End G-code" msgstr "Konec G-code" -#: src/libslic3r/PrintConfig.cpp:1924 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:239 +msgid "Enforce" +msgstr "Vynutit" + +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:30 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:381 +msgid "Enforce seam" +msgstr "Vynucení švu" + +#: src/libslic3r/PrintConfig.cpp:2066 msgid "Enforce support for the first" msgstr "Zesílit podpěry pro prvních" -#: src/libslic3r/PrintConfig.cpp:1931 +#: src/libslic3r/PrintConfig.cpp:2073 msgid "Enforce support for the first n layers" msgstr "Vynucení podpěr pro prvních n vrstev" +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:47 +msgid "Enforce supports" +msgstr "Vynucení podpěr" + #: src/slic3r/GUI/PrintHostDialogs.cpp:198 #: src/slic3r/GUI/PrintHostDialogs.cpp:229 msgid "Enqueued" msgstr "Zařazeno do fronty" -#: src/libslic3r/PrintConfig.cpp:407 +#: src/libslic3r/PrintConfig.cpp:441 msgid "Ensure vertical shell thickness" msgstr "Zajistit tloušťku svislých stěn" -#: src/slic3r/GUI/DoubleSlider.cpp:1618 +#: src/slic3r/GUI/GLCanvas3D.cpp:4402 src/slic3r/GUI/GLCanvas3D.cpp:4410 +#: src/slic3r/GUI/Search.cpp:433 +msgid "Enter a search term" +msgstr "Zadejte hledaný výraz" + +#: src/slic3r/GUI/DoubleSlider.cpp:1814 msgid "Enter custom G-code used on current layer" msgstr "Vložte vlastní G-code použitý v této vrstvě" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3803 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4266 msgid "Enter new name" msgstr "Zadejte nový název" -#: src/slic3r/GUI/DoubleSlider.cpp:1634 +#: src/slic3r/GUI/DoubleSlider.cpp:1830 msgid "Enter short message shown on Printer display when a print is paused" msgstr "Zadejte krátkou zprávu, která se zobrazí na displeji tiskárny při pozastavení tisku" -#: src/slic3r/GUI/ConfigWizard.cpp:1047 +#: src/slic3r/GUI/ConfigWizard.cpp:1413 msgid "Enter the bed temperature needed for getting your filament to stick to your heated bed." msgstr "Zadejte požadovanou teplotu filamentu, aby se spojil s vyhřívanou podložkou." -#: src/slic3r/GUI/ConfigWizard.cpp:979 +#: src/slic3r/GUI/ConfigWizard.cpp:1345 msgid "Enter the diameter of your filament." msgstr "Zadejte průměr vašeho filamentu." -#: src/slic3r/GUI/ConfigWizard.cpp:966 +#: src/slic3r/GUI/ConfigWizard.cpp:1332 msgid "Enter the diameter of your printer's hot end nozzle." msgstr "Zadejte průměr trysky hotendu vaší tiskárny." -#: src/slic3r/GUI/DoubleSlider.cpp:1650 +#: src/slic3r/GUI/DoubleSlider.cpp:1851 src/slic3r/GUI/DoubleSlider.cpp:1855 msgid "Enter the height you want to jump to" msgstr "Zadejte výšku, na kterou chcete přejít" -#: src/slic3r/GUI/Plater.cpp:4751 +#: src/slic3r/GUI/DoubleSlider.cpp:1851 +msgid "Enter the move you want to jump to" +msgstr "Zadejte pohyb v rámci vrstvy, na který chcete přejít" + +#: src/slic3r/GUI/Plater.cpp:4855 msgid "Enter the number of copies:" msgstr "Zadejte počet kopií:" -#: src/slic3r/GUI/ConfigWizard.cpp:1033 +#: src/slic3r/GUI/ConfigWizard.cpp:1399 msgid "Enter the temperature needed for extruding your filament." msgstr "Zadejte požadovanou teplotu pro extruzi vašeho filamentu." -#: src/libslic3r/PrintConfig.cpp:761 +#: src/libslic3r/PrintConfig.cpp:797 msgid "Enter your filament cost per kg here. This is only for statistical information." msgstr "Zde zadejte cenu filamentu za kg. Slouží pouze pro statistické informace." -#: src/libslic3r/PrintConfig.cpp:718 +#: src/libslic3r/PrintConfig.cpp:754 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 the length to volume. Better is to calculate the volume directly through displacement." msgstr "Zde zadejte hustotu filamentu. Toto je pouze pro statistické informace. Přípustný způsob je zvážit známou délku filamentu a vypočítat poměr délky k objemu. Je lepší vypočítat objem přímo přes posun." -#: src/libslic3r/PrintConfig.cpp:710 +#: src/libslic3r/PrintConfig.cpp:746 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 "Zde zadejte průměr filamentu. Je zapotřebí správné přesnosti, proto použijte šupleru a proveďte několik měření podél filamentu, poté vypočtete průměr." -#: src/slic3r/GUI/MainFrame.cpp:422 src/slic3r/GUI/MainFrame.cpp:785 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:39 +msgid "Entering Paint-on supports" +msgstr "Vstup do Malování podpěr" + +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:40 +msgid "Entering Seam painting" +msgstr "Vstup do Malování švu" + +#: src/slic3r/GUI/MainFrame.cpp:1003 src/slic3r/GUI/MainFrame.cpp:1486 #: src/slic3r/GUI/PrintHostDialogs.cpp:231 msgid "Error" msgstr "Chyba" @@ -2337,25 +2716,33 @@ msgstr "Chyba" msgid "Error accessing port at %s: %s" msgstr "Chyba při přístupu k portu na %s : %s" -#: src/slic3r/GUI/Plater.cpp:3433 +#: src/slic3r/GUI/Plater.cpp:3238 msgid "Error during reload" msgstr "Chyba při opětovném načtení souboru" -#: src/slic3r/GUI/Plater.cpp:5043 +#: src/slic3r/GUI/Plater.cpp:5172 #, c-format msgid "Error exporting 3MF file %s" msgstr "Chyba při exportu souboru 3MF %s" -#: src/slic3r/GUI/Plater.cpp:5005 +#: src/slic3r/GUI/Plater.cpp:5138 #, c-format msgid "Error exporting AMF file %s" msgstr "Chyba při exportu souboru AMF %s" -#: src/slic3r/GUI/PrintHostDialogs.cpp:154 +#: src/slic3r/GUI/OpenGLManager.cpp:276 +msgid "Error loading shaders" +msgstr "Chyba při načítání shaderů" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:152 msgid "Error Message" msgstr "Chybová hláška" -#: src/slic3r/GUI/AppConfig.cpp:114 +#: src/slic3r/GUI/GUI_App.cpp:661 +msgid "Error parsing PrusaGCodeViewer config file, it is probably corrupted. Try to manually delete the file to recover from the error." +msgstr "Chyba při zpracování konfiguračního souboru PrusaGCodeVieweru. Je pravděpodobně poškozený. Pro zotavení zkuste soubor ručně odstranit." + +#: src/slic3r/GUI/GUI_App.cpp:655 src/slic3r/GUI/GUI_App.cpp:670 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 "Chyba při načítání konfiguračního souboru PrusaSliceru. Soubor je pravděpodobně poškozen. Zkuste soubor ručně smazat . Vaše uživatelské profily nebudou ovlivněny." @@ -2363,45 +2750,60 @@ msgstr "Chyba při načítání konfiguračního souboru PrusaSliceru. Soubor je msgid "Error uploading to print host:" msgstr "Chyba při nahrávání do tiskového serveru:" -#: src/libslic3r/Zipper.cpp:102 +#: src/slic3r/GUI/Plater.cpp:4752 +msgid "Error while loading .gcode file" +msgstr "Chyba při načítání souboru .gcode" + +#: src/libslic3r/Zipper.cpp:27 msgid "Error with zip archive" msgstr "Chyba v zip archivu" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1918 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2077 msgid "Error!" msgstr "Chyba!" -#: src/slic3r/GUI/BedShapeDialog.cpp:505 +#: src/slic3r/GUI/BedShapeDialog.cpp:581 msgid "Error! Invalid model" msgstr "Chyba! Neplatný model" +#: src/slic3r/GUI/NotificationManager.cpp:667 +#: src/slic3r/GUI/NotificationManager.cpp:683 +#: src/slic3r/GUI/NotificationManager.cpp:694 +msgid "ERROR:" +msgstr "CHYBA:" + #: src/slic3r/GUI/FirmwareDialog.cpp:647 #, c-format msgid "Error: %s" msgstr "Chyba: %s" -#: src/slic3r/GUI/Job.hpp:123 +#: src/slic3r/GUI/Jobs/Job.cpp:74 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:240 src/slic3r/GUI/Plater.cpp:1216 -#: src/slic3r/GUI/Plater.cpp:1258 +#: 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 msgid "Estimated printing time" msgstr "Odhadovaný čas tisku" -#: src/slic3r/GUI/Plater.cpp:502 +#: src/slic3r/GUI/GCodeViewer.cpp:2442 src/slic3r/GUI/GCodeViewer.cpp:2445 +msgid "Event" +msgstr "Akce" + +#: src/slic3r/GUI/Plater.cpp:368 msgid "Everywhere" msgstr "Všude" -#: src/slic3r/GUI/PresetHints.cpp:51 +#: src/slic3r/GUI/PresetHints.cpp:50 msgid "except for the first %1% layers." msgstr "s výjimkou prvních %1% vrstev." -#: src/slic3r/GUI/PresetHints.cpp:53 +#: src/slic3r/GUI/PresetHints.cpp:52 msgid "except for the first layer." msgstr "vyjma první vrstvy." -#: src/libslic3r/Print.cpp:1377 +#: src/libslic3r/Print.cpp:1403 msgid "Excessive %1%=%2% mm to be printable with a nozzle diameter %3% mm" msgstr "Příliš velká hodnota proměnné %1% =%2% mm pro tisk s průměrem trysky %3% mm" @@ -2410,116 +2812,129 @@ msgstr "Příliš velká hodnota proměnné %1% =%2% mm pro tisk s průměrem tr msgid "Exit %s" msgstr "Ukončit %s" -#: src/libslic3r/PrintConfig.cpp:371 +#: src/slic3r/GUI/Plater.cpp:2143 +msgid "Expand sidebar" +msgstr "Rozbalit postranní panel" + +#: src/libslic3r/PrintConfig.cpp:405 msgid "Experimental option for preventing support material from being generated under bridged areas." msgstr "Experimentální nastavení pro zabránění tvorbě podpěr v oblastech po mosty." -#: src/libslic3r/PrintConfig.cpp:1375 +#: src/libslic3r/PrintConfig.cpp:1483 msgid "Experimental option to adjust flow for overhangs (bridge flow will be used), to apply bridge speed to them and enable fan." msgstr "Experimentální volba pro nastavení průtoku pro přesahy (použije se průtok jako u mostů), aplikuje se na ně rychlost mostu a spustí se ventilátor." -#: src/slic3r/GUI/GUI_App.cpp:815 src/slic3r/GUI/wxExtensions.cpp:755 +#: src/slic3r/GUI/GUI_App.cpp:1507 src/slic3r/GUI/wxExtensions.cpp:676 msgid "Expert" msgstr "Expert" -#: src/slic3r/GUI/ConfigWizard.cpp:822 +#: src/slic3r/GUI/ConfigWizard.cpp:1181 msgid "Expert mode" msgstr "Expertní režim" -#: src/slic3r/GUI/GUI_App.cpp:815 +#: src/slic3r/GUI/GUI_App.cpp:1507 msgid "Expert View Mode" msgstr "Režim Expert" -#: src/slic3r/GUI/Plater.cpp:5521 +#: src/slic3r/GUI/Plater.cpp:5706 msgid "Export" msgstr "Exportovat" -#: src/slic3r/GUI/MainFrame.cpp:500 +#: src/slic3r/GUI/MainFrame.cpp:1094 msgid "Export &Config" msgstr "Exportovat Konfigura&ci" -#: src/slic3r/GUI/MainFrame.cpp:477 src/slic3r/GUI/MainFrame.cpp:749 +#: src/slic3r/GUI/MainFrame.cpp:1068 src/slic3r/GUI/MainFrame.cpp:1448 msgid "Export &G-code" msgstr "Exportovat &G-code" -#: src/slic3r/GUI/MainFrame.cpp:496 +#: src/slic3r/GUI/MainFrame.cpp:1090 src/slic3r/GUI/MainFrame.cpp:1395 msgid "Export &toolpaths as OBJ" msgstr "Exportovat &trasy extruderu jako OBJ" -#: src/libslic3r/PrintConfig.cpp:3338 +#: src/libslic3r/PrintConfig.cpp:3531 msgid "Export 3MF" msgstr "Exportovat 3MF" -#: src/slic3r/GUI/MainFrame.cpp:503 +#: src/slic3r/GUI/MainFrame.cpp:1100 +msgid "Export all presets including physical printers to file" +msgstr "Exportovat do souboru všechna přednastavení včetně fyzických tiskáren" + +#: src/slic3r/GUI/MainFrame.cpp:1097 msgid "Export all presets to file" msgstr "Exportovat všechna přednastavení do souboru" -#: src/libslic3r/PrintConfig.cpp:3343 +#: src/libslic3r/PrintConfig.cpp:3536 msgid "Export AMF" msgstr "Exportovat AMF" -#: src/slic3r/GUI/Plater.cpp:2598 +#: src/slic3r/GUI/Plater.cpp:2560 msgid "Export AMF file:" msgstr "Exportovat AMF soubor:" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1657 src/slic3r/GUI/Plater.cpp:3966 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1786 src/slic3r/GUI/Plater.cpp:3884 msgid "Export as STL" msgstr "Exportovat jako STL" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:124 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:117 msgid "Export config" msgstr "Exportovat konfiguraci" -#: src/slic3r/GUI/MainFrame.cpp:503 +#: src/slic3r/GUI/MainFrame.cpp:1097 msgid "Export Config &Bundle" msgstr "Exportovat Konfigurační &Balík" -#: src/slic3r/GUI/MainFrame.cpp:500 +#: src/slic3r/GUI/MainFrame.cpp:1100 +msgid "Export Config Bundle With Physical Printers" +msgstr "Exportovat Konfigurační balík včetně fyzických tiskáren" + +#: src/slic3r/GUI/MainFrame.cpp:1094 msgid "Export current configuration to file" msgstr "Exportovat současnou konfiguraci do souboru" -#: src/slic3r/GUI/MainFrame.cpp:492 +#: src/slic3r/GUI/MainFrame.cpp:1086 msgid "Export current plate as AMF" msgstr "Exportovat stávající plochu jako AMF" -#: src/slic3r/GUI/MainFrame.cpp:477 +#: src/slic3r/GUI/MainFrame.cpp:1068 msgid "Export current plate as G-code" msgstr "Exportovat stávající plochu do G-code" -#: src/slic3r/GUI/MainFrame.cpp:521 +#: src/slic3r/GUI/MainFrame.cpp:1076 msgid "Export current plate as G-code to SD card / Flash drive" msgstr "Exportovat aktuální podložku jako G-code na SD kartu / Flash disk" -#: src/slic3r/GUI/MainFrame.cpp:486 +#: src/slic3r/GUI/MainFrame.cpp:1080 msgid "Export current plate as STL" msgstr "Exportovat stávající plochu jako STL" -#: src/slic3r/GUI/MainFrame.cpp:489 +#: src/slic3r/GUI/MainFrame.cpp:1083 msgid "Export current plate as STL including supports" msgstr "Exportovat stávající plochu včetně podpěr jako STL" -#: src/slic3r/GUI/Plater.cpp:3664 -msgid "Export failed" -msgstr "Exportování selhalo" - -#: src/slic3r/GUI/ConfigWizard.cpp:801 +#: src/slic3r/GUI/ConfigWizard.cpp:1160 msgid "Export full pathnames of models and parts sources into 3mf and amf files" msgstr "Exportovat úplné zdrojové cesty modelů a dílů do souborů 3mf a amf" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:122 src/slic3r/GUI/Plater.cpp:891 -#: src/slic3r/GUI/Plater.cpp:5521 src/libslic3r/PrintConfig.cpp:3353 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:115 src/slic3r/GUI/Plater.cpp:766 +#: src/slic3r/GUI/Plater.cpp:5706 src/libslic3r/PrintConfig.cpp:3546 msgid "Export G-code" msgstr "Exportovat G-code" -#: src/slic3r/GUI/MainFrame.cpp:521 +#: src/slic3r/GUI/MainFrame.cpp:1076 msgid "Export G-code to SD card / Flash drive" msgstr "Exportovat G-code na SD kartu / Flash disk" -#: src/libslic3r/PrintConfig.cpp:3320 +#: src/slic3r/GUI/NotificationManager.cpp:631 +#: src/slic3r/GUI/NotificationManager.cpp:748 +msgid "Export G-Code." +msgstr "Export G-codu." + +#: src/libslic3r/PrintConfig.cpp:3513 msgid "Export OBJ" msgstr "Exportovat OBJ" -#: src/slic3r/GUI/Plater.cpp:2610 +#: src/slic3r/GUI/Plater.cpp:2572 msgid "Export OBJ file:" msgstr "Exportovat OBJ soubor:" @@ -2527,212 +2942,215 @@ msgstr "Exportovat OBJ soubor:" msgid "Export of a temporary 3mf file failed" msgstr "Export dočasného 3MF souboru selhalo" -#: src/slic3r/GUI/MainFrame.cpp:492 +#: src/slic3r/GUI/MainFrame.cpp:1086 msgid "Export plate as &AMF" msgstr "Exportovat plochu jako &AMF" -#: src/slic3r/GUI/MainFrame.cpp:486 +#: src/slic3r/GUI/MainFrame.cpp:1080 msgid "Export plate as &STL" msgstr "Exportovat plochu jako &STL" -#: src/slic3r/GUI/MainFrame.cpp:489 +#: src/slic3r/GUI/MainFrame.cpp:1083 msgid "Export plate as STL &including supports" msgstr "Exportovat t&iskovou plochu včetně podpěr jako STL" -#: src/libslic3r/PrintConfig.cpp:3332 +#: src/libslic3r/PrintConfig.cpp:3525 msgid "Export SLA" msgstr "Exportovat SLA" -#: src/slic3r/GUI/Preferences.cpp:72 +#: src/slic3r/GUI/Preferences.cpp:89 msgid "Export sources full pathnames to 3mf and amf" msgstr "Exportovat absolutní cesty k 3mf a amf souborům" -#: src/libslic3r/PrintConfig.cpp:3348 +#: src/libslic3r/PrintConfig.cpp:3541 msgid "Export STL" msgstr "Exportovat STL" -#: src/slic3r/GUI/Plater.cpp:2591 +#: src/slic3r/GUI/Plater.cpp:2553 msgid "Export STL file:" msgstr "Exportovat STL soubor:" -#: src/libslic3r/PrintConfig.cpp:3339 +#: src/libslic3r/PrintConfig.cpp:3532 msgid "Export the model(s) as 3MF." msgstr "Exportovat model(y) jako 3MF." -#: src/libslic3r/PrintConfig.cpp:3344 +#: src/libslic3r/PrintConfig.cpp:3537 msgid "Export the model(s) as AMF." msgstr "Exportovat model(y) jako AMF." -#: src/libslic3r/PrintConfig.cpp:3321 +#: src/libslic3r/PrintConfig.cpp:3514 msgid "Export the model(s) as OBJ." msgstr "Exportovat model(y) jako OBJ." -#: src/libslic3r/PrintConfig.cpp:3349 +#: src/libslic3r/PrintConfig.cpp:3542 msgid "Export the model(s) as STL." msgstr "Exportovat model(y) jako STL." -#: src/slic3r/GUI/Plater.cpp:3966 +#: src/slic3r/GUI/Plater.cpp:3884 msgid "Export the selected object as STL file" msgstr "Exportovat vybrané objekty jako STL soubor" -#: src/slic3r/GUI/Plater.cpp:880 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:118 src/slic3r/GUI/Plater.cpp:755 msgid "Export to SD card / Flash drive" msgstr "Export na SD kartu / Flash disk" -#: src/slic3r/GUI/MainFrame.cpp:496 +#: src/slic3r/GUI/MainFrame.cpp:1090 src/slic3r/GUI/MainFrame.cpp:1395 msgid "Export toolpaths as OBJ" msgstr "Exportovat trasy extruderu jako OBJ" -#: src/libslic3r/Print.cpp:1638 +#: src/slic3r/GUI/NotificationManager.hpp:317 +msgid "Exporting finished." +msgstr "Exportování dokončeno." + +#: src/libslic3r/Print.cpp:1676 msgid "Exporting G-code" msgstr "Exportování souboru G-code" #: src/slic3r/Utils/FixModelByWin10.cpp:341 -msgid "Exporting model..." -msgstr "Exportování modelu..." +msgid "Exporting model" +msgstr "Exportování modelu" #: src/slic3r/Utils/FixModelByWin10.cpp:219 #: src/slic3r/Utils/FixModelByWin10.cpp:359 msgid "Exporting source model" msgstr "Exportování zdrojového modelu" -#: src/libslic3r/SLAPrint.cpp:646 +#: src/libslic3r/SLAPrint.cpp:660 msgid "Exposition time is out of printer profile bounds." msgstr "Doba osvitu je mimo rozsah profilu tiskárny." -#: src/slic3r/GUI/Tab.cpp:2117 src/slic3r/GUI/Tab.cpp:3515 +#: src/slic3r/GUI/Tab.cpp:2287 src/slic3r/GUI/Tab.cpp:3931 msgid "Exposure" msgstr "Osvit" -#: src/libslic3r/PrintConfig.cpp:2541 src/libslic3r/PrintConfig.cpp:2542 +#: src/libslic3r/PrintConfig.cpp:2684 src/libslic3r/PrintConfig.cpp:2685 msgid "Exposure time" msgstr "Doba osvitu" -#: src/slic3r/GUI/GUI_Preview.cpp:238 src/libslic3r/ExtrusionEntity.cpp:311 +#: src/slic3r/GUI/GUI_Preview.cpp:302 src/libslic3r/ExtrusionEntity.cpp:315 +#: src/libslic3r/ExtrusionEntity.cpp:338 msgid "External perimeter" msgstr "Vnější perimetr" -#: src/slic3r/GUI/PresetHints.cpp:156 +#: src/slic3r/GUI/PresetHints.cpp:155 msgid "external perimeters" msgstr "vnější perimetry" -#: src/libslic3r/PrintConfig.cpp:446 src/libslic3r/PrintConfig.cpp:457 +#: src/libslic3r/PrintConfig.cpp:482 src/libslic3r/PrintConfig.cpp:493 msgid "External perimeters" msgstr "Vnější perimetry" -#: src/libslic3r/PrintConfig.cpp:469 +#: src/libslic3r/PrintConfig.cpp:505 msgid "External perimeters first" msgstr "Nejprve tisknout vnější perimetry" -#: src/libslic3r/PrintConfig.cpp:1588 src/libslic3r/PrintConfig.cpp:1596 +#: src/libslic3r/PrintConfig.cpp:1696 src/libslic3r/PrintConfig.cpp:1704 msgid "Extra length on restart" msgstr "Extra vzdálenost při návratu" -#: src/libslic3r/PrintConfig.cpp:1390 +#: src/libslic3r/PrintConfig.cpp:1498 msgid "Extra loading distance" msgstr "Extra délka při zavádění" -#: src/libslic3r/PrintConfig.cpp:477 +#: src/libslic3r/PrintConfig.cpp:513 msgid "Extra perimeters if needed" msgstr "Extra perimetry (pokud jsou potřeba)" -#: src/slic3r/GUI/GUI_ObjectList.cpp:278 src/slic3r/GUI/Tab.cpp:1434 -#: src/slic3r/GUI/wxExtensions.cpp:598 src/libslic3r/PrintConfig.cpp:487 +#: src/slic3r/GUI/GCodeViewer.cpp:2277 src/slic3r/GUI/GCodeViewer.cpp:2313 +#: src/slic3r/GUI/GCodeViewer.cpp:2318 src/slic3r/GUI/GUI_ObjectList.cpp:296 +#: src/slic3r/GUI/Tab.cpp:1780 src/slic3r/GUI/wxExtensions.cpp:515 +#: src/libslic3r/PrintConfig.cpp:523 msgid "Extruder" msgstr "Extruder" -#: src/slic3r/GUI/DoubleSlider.cpp:1134 src/slic3r/GUI/DoubleSlider.cpp:1170 -#: src/slic3r/GUI/GLCanvas3D.cpp:977 src/slic3r/GUI/GUI_ObjectList.cpp:1704 -#: src/slic3r/GUI/Tab.cpp:2320 src/libslic3r/GCode/PreviewData.cpp:445 +#: src/slic3r/GUI/DoubleSlider.cpp:1263 src/slic3r/GUI/DoubleSlider.cpp:1297 +#: src/slic3r/GUI/GLCanvas3D.cpp:983 src/slic3r/GUI/GUI_ObjectList.cpp:1832 +#: src/slic3r/GUI/Tab.cpp:2489 src/libslic3r/GCode/PreviewData.cpp:450 #, c-format msgid "Extruder %d" msgstr "Extruder %d" -#: src/slic3r/GUI/DoubleSlider.cpp:1011 +#: src/slic3r/GUI/DoubleSlider.cpp:1137 msgid "Extruder (tool) is changed to Extruder \"%1%\"" msgstr "Extruder (nástroj) se změní na Extruder \"%1%\"" -#: src/slic3r/GUI/ConfigWizard.cpp:1017 -msgid "Extruder and Bed Temperatures" -msgstr "Teploty extruderu a podložky" - #: src/slic3r/GUI/WipeTowerDialog.cpp:255 msgid "Extruder changed to" msgstr "Extruder změněn na" -#: src/slic3r/GUI/Tab.cpp:1233 +#: src/slic3r/GUI/Tab.cpp:1563 msgid "Extruder clearance (mm)" msgstr "Kolizní oblast extruderu (mm)" -#: src/libslic3r/PrintConfig.cpp:522 +#: src/libslic3r/PrintConfig.cpp:558 msgid "Extruder Color" msgstr "Barva extruderu" -#: src/libslic3r/PrintConfig.cpp:529 +#: src/libslic3r/PrintConfig.cpp:565 msgid "Extruder offset" msgstr "Odsazení extruderu" -#: src/libslic3r/PrintConfig.cpp:911 -msgid "Extruder temperature for first layer. If you want to control temperature manually during print, set this to zero to disable temperature control commands in the output file." -msgstr "Teplota extruderu pro první vrstvu. Chcete-li během tisku ručně ovládat teplotu, nastavte tuto hodnotu na nulu, aby se ve výstupním souboru zakázaly příkazy pro řízení teploty." - -#: src/libslic3r/PrintConfig.cpp:2065 -msgid "Extruder temperature for layers after the first one. Set this to zero to disable temperature control commands in the output." -msgstr "Teplota extruderu pro následující vrstvy po vrstvě první. Nastavte tuto hodnotu na nulu, abyste zakázali příkazy pro řízení teploty na výstupu." - -#: src/slic3r/GUI/GUI_ObjectList.cpp:99 src/slic3r/GUI/GUI_ObjectList.cpp:617 -#: src/slic3r/GUI/Tab.cpp:1180 src/slic3r/GUI/Tab.cpp:1838 -#: src/libslic3r/PrintConfig.cpp:488 src/libslic3r/PrintConfig.cpp:1002 -#: src/libslic3r/PrintConfig.cpp:1409 src/libslic3r/PrintConfig.cpp:1737 -#: src/libslic3r/PrintConfig.cpp:1938 src/libslic3r/PrintConfig.cpp:1965 +#: src/slic3r/GUI/GUI_ObjectList.cpp:97 src/slic3r/GUI/GUI_ObjectList.cpp:656 +#: src/slic3r/GUI/Tab.cpp:1510 src/slic3r/GUI/Tab.cpp:2072 +#: src/libslic3r/PrintConfig.cpp:524 src/libslic3r/PrintConfig.cpp:1046 +#: src/libslic3r/PrintConfig.cpp:1517 src/libslic3r/PrintConfig.cpp:1852 +#: src/libslic3r/PrintConfig.cpp:2080 src/libslic3r/PrintConfig.cpp:2107 msgid "Extruders" msgstr "Extrudery" -#: src/libslic3r/PrintConfig.cpp:539 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1061 +msgid "Extruders count" +msgstr "Počet extruderů" + +#: src/slic3r/GUI/GCodeViewer.cpp:2493 +msgid "Extrusion" +msgstr "Extruze" + +#: src/libslic3r/PrintConfig.cpp:575 msgid "Extrusion axis" msgstr "Osa extruderu" -#: src/libslic3r/PrintConfig.cpp:545 +#: src/libslic3r/PrintConfig.cpp:581 msgid "Extrusion multiplier" msgstr "Násobič extruze" -#: src/slic3r/GUI/ConfigWizard.cpp:1037 +#: src/slic3r/GUI/ConfigWizard.cpp:1403 msgid "Extrusion Temperature:" msgstr "Teplota extruze:" -#: src/slic3r/GUI/Tab.cpp:1205 +#: src/slic3r/GUI/Tab.cpp:1535 msgid "Extrusion width" msgstr "Šířka extruze" -#: src/slic3r/GUI/GUI_ObjectList.cpp:100 src/slic3r/GUI/GUI_ObjectList.cpp:618 -#: src/libslic3r/PrintConfig.cpp:447 src/libslic3r/PrintConfig.cpp:555 -#: src/libslic3r/PrintConfig.cpp:877 src/libslic3r/PrintConfig.cpp:1010 -#: src/libslic3r/PrintConfig.cpp:1418 src/libslic3r/PrintConfig.cpp:1757 -#: src/libslic3r/PrintConfig.cpp:1947 src/libslic3r/PrintConfig.cpp:2106 +#: src/slic3r/GUI/GUI_ObjectList.cpp:98 src/slic3r/GUI/GUI_ObjectList.cpp:657 +#: src/libslic3r/PrintConfig.cpp:483 src/libslic3r/PrintConfig.cpp:591 +#: src/libslic3r/PrintConfig.cpp:919 src/libslic3r/PrintConfig.cpp:1054 +#: src/libslic3r/PrintConfig.cpp:1526 src/libslic3r/PrintConfig.cpp:1872 +#: src/libslic3r/PrintConfig.cpp:2089 src/libslic3r/PrintConfig.cpp:2249 msgid "Extrusion Width" msgstr "Šíře extruze" -#: src/slic3r/GUI/Plater.cpp:162 +#: src/slic3r/GUI/Plater.cpp:168 msgid "Facets" msgstr "Facety" -#: src/slic3r/GUI/GUI_ObjectList.cpp:349 +#: src/slic3r/GUI/GUI_ObjectList.cpp:396 msgid "facets added" msgstr "facety přidány" -#: src/slic3r/GUI/GUI_ObjectList.cpp:348 +#: src/slic3r/GUI/GUI_ObjectList.cpp:395 msgid "facets removed" msgstr "facety odebrány" -#: src/slic3r/GUI/GUI_ObjectList.cpp:350 +#: src/slic3r/GUI/GUI_ObjectList.cpp:397 msgid "facets reversed" msgstr "facety otočeny" -#: src/libslic3r/PrintConfig.cpp:2517 +#: src/libslic3r/PrintConfig.cpp:2660 msgid "Faded layers" msgstr "Vrstvy počátečního osvitu" -#: src/libslic3r/Zipper.cpp:44 +#: src/libslic3r/miniz_extension.cpp:103 msgid "failed finding central directory" msgstr "selhalo nalezení kořenového adresáře" @@ -2740,105 +3158,115 @@ msgstr "selhalo nalezení kořenového adresáře" msgid "Failed loading the input model." msgstr "Načtení vstupního modelu se nezdařilo." -#: src/libslic3r/PrintBase.cpp:71 +#: src/libslic3r/PrintBase.cpp:72 msgid "Failed processing of the output_filename_format template." msgstr "Zpracování šablony output_filename_format selhalo." -#: src/slic3r/GUI/PresetHints.cpp:42 +#: src/slic3r/GUI/PresetHints.cpp:41 msgid "Fan" msgstr "Ventilátor" -#: src/slic3r/GUI/Tab.cpp:1456 +#: src/slic3r/GUI/Tab.cpp:1802 msgid "Fan settings" msgstr "Nastavení ventilátoru" -#: src/slic3r/GUI/GUI_Preview.cpp:225 src/slic3r/GUI/Tab.cpp:1457 +#: src/slic3r/GUI/GUI_Preview.cpp:279 src/slic3r/GUI/Tab.cpp:1803 msgid "Fan speed" msgstr "Rychlost ventilátoru" -#: src/libslic3r/GCode/PreviewData.cpp:353 +#: src/slic3r/GUI/GCodeViewer.cpp:2239 src/libslic3r/GCode/PreviewData.cpp:358 msgid "Fan Speed (%)" msgstr "Rychlost ventilátoru (%)" -#: src/libslic3r/PrintConfig.cpp:2405 +#: src/libslic3r/PrintConfig.cpp:2548 msgid "Fast" msgstr "Rychlý" -#: src/libslic3r/PrintConfig.cpp:2406 +#: src/libslic3r/PrintConfig.cpp:2549 msgid "Fast tilt" msgstr "Rychlý náklon" -#: src/slic3r/GUI/GUI_App.cpp:141 +#: src/slic3r/GUI/GUI_App.cpp:531 msgid "Fatal error" msgstr "Fatální chyba" -#: src/slic3r/GUI/GUI_Preview.cpp:221 src/slic3r/GUI/GUI_Preview.cpp:575 -#: src/libslic3r/GCode/PreviewData.cpp:345 +#: src/slic3r/GUI/GUI_Init.cpp:88 +msgid "Fatal error, exception catched: %1%" +msgstr "Závažná chyba, zachycená výjimka: %1%" + +#: src/slic3r/GUI/GCodeViewer.cpp:2225 src/slic3r/GUI/GCodeViewer.cpp:2233 +#: src/slic3r/GUI/GUI_Preview.cpp:275 src/slic3r/GUI/GUI_Preview.cpp:787 +#: src/libslic3r/GCode/PreviewData.cpp:350 msgid "Feature type" msgstr "Typ" -#: src/slic3r/GUI/GUI_Preview.cpp:234 src/slic3r/GUI/GUI_Preview.cpp:235 +#: src/slic3r/GUI/GUI_Preview.cpp:293 src/slic3r/GUI/GUI_Preview.cpp:295 +#: src/slic3r/GUI/GUI_Preview.cpp:316 msgid "Feature types" -msgstr "Typy extruzí" +msgstr "Typy extrudování" -#: src/slic3r/GUI/ConfigWizard.cpp:1525 +#: src/slic3r/GUI/ConfigWizard.cpp:1926 msgid "FFF Technology Printers" msgstr "Tiskárny technologie FFF" -#: src/slic3r/GUI/Plater.cpp:816 src/slic3r/GUI/Tab.cpp:1425 -#: src/slic3r/GUI/Tab.cpp:1426 +#: src/slic3r/GUI/Plater.cpp:691 src/slic3r/GUI/Tab.cpp:1770 +#: src/slic3r/GUI/Tab.cpp:1771 msgid "Filament" msgstr "Filament" -#: src/slic3r/GUI/Preset.cpp:1522 +#: src/libslic3r/Preset.cpp:1301 msgid "filament" msgstr "filament" -#: src/slic3r/GUI/ConfigWizard.cpp:952 +#: src/slic3r/GUI/ConfigWizard.cpp:1318 msgid "Filament and Nozzle Diameters" msgstr "Průměr filamentu a trysky" -#: src/slic3r/GUI/ConfigWizard.cpp:983 +#: src/slic3r/GUI/ConfigWizard.cpp:1349 msgid "Filament Diameter:" msgstr "Průměr filamentu:" -#: src/libslic3r/PrintConfig.cpp:651 +#: src/libslic3r/PrintConfig.cpp:687 msgid "Filament is cooled by being moved back and forth in the cooling tubes. Specify desired number of these moves." msgstr "Filament je chlazen pohyby tam a zpět v chladicí trubičce. Zadejte požadovaný počet těchto pohybů." -#: src/libslic3r/PrintConfig.cpp:686 +#: src/libslic3r/PrintConfig.cpp:722 msgid "Filament load time" msgstr "Doba zavádění filamentu" -#: src/libslic3r/PrintConfig.cpp:588 +#: src/libslic3r/PrintConfig.cpp:624 msgid "Filament notes" msgstr "Poznámky k filamentu" -#: src/slic3r/GUI/Tab.cpp:1323 src/slic3r/GUI/Tab.cpp:1378 +#: src/slic3r/GUI/Tab.cpp:1669 msgid "Filament Overrides" msgstr "Přepsání globálních hodnot" -#: src/libslic3r/PrintConfig.cpp:1381 +#: src/libslic3r/PrintConfig.cpp:1489 msgid "Filament parking position" msgstr "Parkovací pozice filamentu" -#: src/slic3r/GUI/ConfigWizard.cpp:2013 +#: src/slic3r/GUI/ConfigWizard.cpp:2524 msgid "Filament Profiles Selection" msgstr "Výběr Filamentových Profilů" -#: src/slic3r/GUI/Tab.cpp:1471 +#: src/slic3r/GUI/Tab.cpp:1817 msgid "Filament properties" msgstr "Vlastnosti filamentu" -#: src/slic3r/GUI/Tab.hpp:355 +#: src/slic3r/GUI/Tab.hpp:409 msgid "Filament Settings" msgstr "Nastavení filamentu" -#: src/libslic3r/PrintConfig.cpp:726 +#: src/slic3r/GUI/GLCanvas3D.cpp:4304 src/slic3r/GUI/GLCanvas3D.cpp:4940 +msgid "Filament Settings Tab" +msgstr "Panel Nastavení filamentu" + +#: src/libslic3r/PrintConfig.cpp:762 msgid "Filament type" msgstr "Typ filamentu" -#: src/libslic3r/PrintConfig.cpp:701 +#: src/libslic3r/PrintConfig.cpp:737 msgid "Filament unload time" msgstr "Doba vysouvání filamentu" @@ -2846,75 +3274,79 @@ msgstr "Doba vysouvání filamentu" msgid "filaments" msgstr "filamenty" -#: src/slic3r/GUI/ConfigWizard.cpp:1471 src/slic3r/GUI/ConfigWizard.cpp:2013 +#: src/slic3r/GUI/ConfigWizard.cpp:1872 src/slic3r/GUI/ConfigWizard.cpp:2524 msgid "Filaments" msgstr "Filamenty" -#: src/libslic3r/Zipper.cpp:72 +#: src/slic3r/GUI/ConfigWizard.cpp:691 +msgid "Filaments marked with * are not compatible with some installed printers." +msgstr "Filamenty označené znakem * nejsou kompatibilní s některými nainstalovanými tiskárnami." + +#: src/libslic3r/miniz_extension.cpp:131 msgid "file close failed" msgstr "zavření souboru selhalo" -#: src/libslic3r/Zipper.cpp:66 +#: src/libslic3r/miniz_extension.cpp:125 msgid "file create failed" msgstr "vytvoření souboru selhalo" -#: src/slic3r/GUI/MainFrame.cpp:791 +#: src/slic3r/GUI/MainFrame.cpp:1492 msgid "File Not Found" msgstr "Soubor nenalezen" -#: src/libslic3r/Zipper.cpp:86 +#: src/libslic3r/miniz_extension.cpp:145 msgid "file not found" msgstr "soubor nenalezen" -#: src/libslic3r/Zipper.cpp:64 +#: src/libslic3r/miniz_extension.cpp:123 msgid "file open failed" msgstr "otevření souboru selhalo" -#: src/libslic3r/Zipper.cpp:70 +#: src/libslic3r/miniz_extension.cpp:129 msgid "file read failed" msgstr "čtení souboru se nezdařilo" -#: src/libslic3r/Zipper.cpp:74 +#: src/libslic3r/miniz_extension.cpp:133 msgid "file seek failed" msgstr "hledání souboru selhalo" -#: src/libslic3r/Zipper.cpp:76 +#: src/libslic3r/miniz_extension.cpp:135 msgid "file stat failed" msgstr "soubor stat selhal" -#: src/libslic3r/Zipper.cpp:36 +#: src/libslic3r/miniz_extension.cpp:95 msgid "file too large" msgstr "soubor je příliš velký" -#: src/libslic3r/Zipper.cpp:68 +#: src/libslic3r/miniz_extension.cpp:127 msgid "file write failed" msgstr "zápis souboru se nezdařil" -#: src/slic3r/GUI/PrintHostDialogs.cpp:153 +#: src/slic3r/GUI/PrintHostDialogs.cpp:151 msgid "Filename" msgstr "Název souboru" -#: src/libslic3r/PrintConfig.cpp:775 +#: src/libslic3r/PrintConfig.cpp:811 msgid "Fill angle" msgstr "Úhel výplně" -#: src/libslic3r/PrintConfig.cpp:789 +#: src/libslic3r/PrintConfig.cpp:825 msgid "Fill density" msgstr "Hustota výplně" -#: src/libslic3r/PrintConfig.cpp:826 +#: src/libslic3r/PrintConfig.cpp:862 msgid "Fill pattern" msgstr "Vzor výplně" -#: src/libslic3r/PrintConfig.cpp:437 +#: src/libslic3r/PrintConfig.cpp:473 msgid "Fill pattern for bottom infill. This only affects the bottom external visible layer, and not its adjacent solid shells." msgstr "Vzor výplně pro spodní vrstvy. Ovlivňuje pouze spodní vnější viditelné vrstvy. Neovlivňuje následné plné vrstvy." -#: src/libslic3r/PrintConfig.cpp:828 +#: src/libslic3r/PrintConfig.cpp:864 msgid "Fill pattern for general low-density infill." msgstr "Vzor výplně pro obecnou výplň s nízkou hustotou." -#: src/libslic3r/PrintConfig.cpp:417 +#: src/libslic3r/PrintConfig.cpp:451 msgid "Fill pattern for top infill. This only affects the top visible layer, and not its adjacent solid shells." msgstr "Nastavte vzor pro horní výplň. Ovlivňuje pouze horní viditelnou vrstvu a ne její sousední plné vrstvy." @@ -2922,7 +3354,7 @@ msgstr "Nastavte vzor pro horní výplň. Ovlivňuje pouze horní viditelnou vrs msgid "Finished" msgstr "Dokončeno" -#: src/slic3r/GUI/ConfigWizard.cpp:891 src/slic3r/GUI/Tab.cpp:1947 +#: src/slic3r/GUI/ConfigWizard.cpp:1257 src/slic3r/GUI/Tab.cpp:2132 msgid "Firmware" msgstr "Firmware" @@ -2934,44 +3366,52 @@ msgstr "Aktualizace firmware" msgid "Firmware image:" msgstr "Soubor s firmware:" -#: src/slic3r/GUI/Tab.cpp:2577 +#: src/slic3r/GUI/Tab.cpp:2733 msgid "Firmware Retraction" msgstr "Firmware Retrakce" -#: src/slic3r/GUI/ConfigWizard.cpp:891 +#: src/slic3r/GUI/ConfigWizard.cpp:1257 msgid "Firmware Type" msgstr "Typ firmware" -#: src/libslic3r/PrintConfig.cpp:859 src/libslic3r/PrintConfig.cpp:868 -#: src/libslic3r/PrintConfig.cpp:876 src/libslic3r/PrintConfig.cpp:910 +#: src/libslic3r/PrintConfig.cpp:899 src/libslic3r/PrintConfig.cpp:908 +#: src/libslic3r/PrintConfig.cpp:918 src/libslic3r/PrintConfig.cpp:952 msgid "First layer" msgstr "První vrstva" -#: src/slic3r/GUI/ConfigManipulation.cpp:61 src/libslic3r/PrintConfig.cpp:889 +#: src/libslic3r/PrintConfig.cpp:909 +msgid "First layer bed temperature" +msgstr "Teplota tiskové podložky při první vrstvě" + +#: src/slic3r/GUI/ConfigManipulation.cpp:60 src/libslic3r/PrintConfig.cpp:931 msgid "First layer height" msgstr "Výška první vrstvy" -#: src/libslic3r/Print.cpp:1422 +#: src/libslic3r/Print.cpp:1448 msgid "First layer height can't be greater than nozzle diameter" msgstr "Výška první vrstvy nesmí být větší než průměr trysky" -#: src/libslic3r/PrintConfig.cpp:900 +#: src/libslic3r/PrintConfig.cpp:960 +msgid "First layer nozzle temperature" +msgstr "Teplota trysky při první vrstvě" + +#: src/libslic3r/PrintConfig.cpp:942 msgid "First layer speed" msgstr "Rychlost první vrstvy" -#: src/slic3r/GUI/PresetHints.cpp:219 +#: src/slic3r/GUI/PresetHints.cpp:218 msgid "First layer volumetric" msgstr "Volumetrická hodnota první vrstvy" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1647 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1776 msgid "Fix through the Netfabb" msgstr "Opravit pomocí služby Netfabb" -#: src/slic3r/GUI/Plater.cpp:3473 +#: src/slic3r/GUI/Plater.cpp:3278 msgid "Fix Throught NetFabb" msgstr "Opravit pomocí Netfabb" -#: src/slic3r/GUI/GUI_App.cpp:824 +#: src/slic3r/GUI/GUI_App.cpp:1522 msgid "Flash printer &firmware" msgstr "Nahrát &firmware tiskárny" @@ -2999,24 +3439,32 @@ msgstr "Probíhá nahrávání firmware. Prosím neodpojujte tiskárnu!" msgid "Flashing succeeded!" msgstr "Nahrávání bylo úspěšné!" -#: src/slic3r/GUI/Tab.cpp:1218 +#: src/slic3r/GUI/Tab.cpp:1548 msgid "Flow" msgstr "Průtok" -#: src/slic3r/GUI/PresetHints.cpp:220 +#: src/libslic3r/PrintConfig.cpp:1145 +msgid "Flow rate" +msgstr "Průtok" + +#: src/slic3r/GUI/PresetHints.cpp:219 msgid "flow rate is maximized" msgstr "průtok je maximalizován" -#: src/slic3r/GUI/UpdateDialogs.cpp:286 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:555 +msgid "Following printer preset(s) is duplicated:%1%The above preset for printer \"%2%\" will be used just once." +msgstr "Následující přednastavení tiskárny je duplicitní:%1%Výše uvedené přednastavení bude pro tiskárnu \"%2%\" použito pouze jednou." + +#: src/slic3r/GUI/UpdateDialogs.cpp:287 msgid "For more information please visit our wiki page:" msgstr "Pro více informací prosím navštivte naší wiki stránku:" -#: src/slic3r/GUI/Plater.cpp:501 src/slic3r/GUI/Plater.cpp:624 +#: src/slic3r/GUI/Plater.cpp:367 src/slic3r/GUI/Plater.cpp:490 msgid "For support enforcers only" msgstr "Pouze pro vynucené podpěry" #. TRN Description for "WHITE BULLET" -#: src/slic3r/GUI/Tab.cpp:3267 +#: src/slic3r/GUI/Tab.cpp:3702 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." @@ -3024,7 +3472,7 @@ msgstr "" "na levé straně: indikuje nesystémové (jiné než výchozí) přednastavení,\n" "na pravé straně: indikuje, že nastavení nebylo změněno." -#: src/slic3r/GUI/ConfigManipulation.cpp:136 +#: src/slic3r/GUI/ConfigManipulation.cpp:135 msgid "" "For the Wipe Tower to work with the soluble supports, the support layers\n" "need to be synchronized with the object layers." @@ -3032,21 +3480,21 @@ msgstr "" "U čistící věže pokud pracujte s rozpustnými materiály, je třeba\n" "synchronizovat vrstvy podpěr s vrstvami objektů." -#: src/libslic3r/Print.cpp:1396 +#: src/libslic3r/Print.cpp:1422 msgid "For the Wipe Tower to work with the soluble supports, the support layers need to be synchronized with the object layers." msgstr "" "U čistící věže pokud pracujte s rozpustnými materiály, je třeba\n" "synchronizovat vrstvy podpěr s vrstvami objektů." -#: src/libslic3r/PrintConfig.cpp:2864 +#: src/libslic3r/PrintConfig.cpp:3028 msgid "Force pad around object everywhere" msgstr "Vynutit podložku všude okolo objektů" -#: src/libslic3r/PrintConfig.cpp:1729 +#: src/libslic3r/PrintConfig.cpp:1844 msgid "Force solid infill for regions having a smaller area than the specified threshold." msgstr "Vynucení plné výplně pro oblasti, které mají menší plochu, než je stanovená prahová hodnota." -#: src/libslic3r/PrintConfig.cpp:1072 +#: src/libslic3r/PrintConfig.cpp:1116 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 "Vynucení vytváření pevných skořepin mezi sousedními materiály/objemy. Užitečné pro tisk s více extrudery s průsvitnými materiály nebo ručně rozpustným podpůrným materiálem." @@ -3054,27 +3502,31 @@ msgstr "Vynucení vytváření pevných skořepin mezi sousedními materiály/ob msgid "From" msgstr "Předchozí extruder" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2223 +#: src/slic3r/GUI/GCodeViewer.cpp:2197 +msgid "from" +msgstr "z" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2389 msgid "From Object List You can't delete the last solid part from object." msgstr "Ze seznamu objektů nemůžete smazat poslední část objektu." -#: src/slic3r/GUI/MainFrame.cpp:667 +#: src/slic3r/GUI/MainFrame.cpp:964 src/slic3r/GUI/MainFrame.cpp:1284 msgid "Front" msgstr "Zepředu" -#: src/slic3r/GUI/MainFrame.cpp:667 +#: src/slic3r/GUI/MainFrame.cpp:964 src/slic3r/GUI/MainFrame.cpp:1284 msgid "Front View" msgstr "Pohled zepředu" -#: src/slic3r/GUI/Tab.cpp:1013 +#: src/slic3r/GUI/Tab.cpp:1331 msgid "full profile name" msgstr "celé jméno profilu" -#: src/slic3r/GUI/MainFrame.cpp:826 +#: src/slic3r/GUI/MainFrame.cpp:1527 msgid "G-code" msgstr "G-code" -#: src/slic3r/GUI/DoubleSlider.cpp:1021 +#: src/slic3r/GUI/DoubleSlider.cpp:1146 msgid "" "G-code associated to this tick mark is in a conflict with print mode.\n" "Editing it will cause changes of Slider data." @@ -3082,220 +3534,273 @@ msgstr "" "G-code na této značce je v rozporu s tiskovým režimem.\n" "Editace způsobí změny v posuvníku." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:130 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:165 msgid "G-code file exported to %1%" msgstr "G-code byl exportován do %1%" -#: src/libslic3r/PrintConfig.cpp:936 +#: src/libslic3r/PrintConfig.cpp:980 msgid "G-code flavor" msgstr "Druh G-code" -#: src/libslic3r/PrintConfig.cpp:721 +#: src/slic3r/GUI/MainFrame.cpp:66 src/slic3r/GUI/MainFrame.cpp:79 +msgid "G-code preview" +msgstr "Náhled G-codu" + +#: src/libslic3r/PrintConfig.cpp:3552 +msgid "G-code viewer" +msgstr "Prohlížeč G-codu" + +#: src/libslic3r/PrintConfig.cpp:757 msgid "g/cm³" msgstr "g/cm³" -#: src/libslic3r/PrintConfig.cpp:2505 +#: src/libslic3r/PrintConfig.cpp:2648 msgid "g/ml" msgstr "g/ml" -#: src/slic3r/GUI/GUI_Preview.cpp:244 src/libslic3r/ExtrusionEntity.cpp:317 -#: src/libslic3r/PrintConfig.cpp:918 +#: src/slic3r/GUI/GUI_Preview.cpp:309 src/libslic3r/ExtrusionEntity.cpp:322 +#: src/libslic3r/ExtrusionEntity.cpp:352 src/libslic3r/PrintConfig.cpp:962 msgid "Gap fill" msgstr "Výplň tenkých stěn" -#: src/slic3r/GUI/Preferences.cpp:22 src/slic3r/GUI/Tab.cpp:1796 -#: src/slic3r/GUI/Tab.cpp:2040 +#: src/slic3r/GUI/Preferences.cpp:24 src/slic3r/GUI/Tab.cpp:2058 +#: src/slic3r/GUI/Tab.cpp:2240 src/slic3r/GUI/Tab.cpp:2348 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1066 msgid "General" msgstr "Obecné" -#: src/libslic3r/PrintConfig.cpp:1307 +#: 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." -#: src/libslic3r/PrintConfig.cpp:1865 +#: src/libslic3r/PrintConfig.cpp:2007 msgid "Generate support material" msgstr "Generovat podpěry" -#: src/libslic3r/PrintConfig.cpp:1926 +#: src/libslic3r/PrintConfig.cpp:2068 msgid "Generate support material for the specified number of layers counting from bottom, regardless of whether normal support material is enabled or not and regardless of any angle threshold. This is useful for getting more adhesion of objects having a very thin or poor footprint on the build plate." msgstr "Vygeneruje podpěry pro zadaný počet vrstev počítaných od spodního okraje, bez ohledu na to, zda jsou povoleny standartní podpěry nebo nikoliv a bez ohledu na jakýkoli prah úhlu. To je užitečné pro získání větší přilnavosti předmětů s velmi tenkou nebo špatnou stopou na tiskové podložce." -#: src/libslic3r/PrintConfig.cpp:2613 +#: src/libslic3r/PrintConfig.cpp:2756 msgid "Generate supports" msgstr "Generovat podpěry" -#: src/libslic3r/PrintConfig.cpp:2615 +#: src/libslic3r/PrintConfig.cpp:2758 msgid "Generate supports for the models" msgstr "Generovat podpěry modelů" -#: src/libslic3r/Print.cpp:1614 +#: src/slic3r/GUI/Plater.cpp:3554 +msgid "generated warnings" +msgstr "generovaná varování" + +#: src/libslic3r/Print.cpp:1645 msgid "Generating brim" msgstr "Generování límce" -#: src/libslic3r/Print.cpp:1642 +#: src/libslic3r/Print.cpp:1680 msgid "Generating G-code" msgstr "Generování G-code" -#: src/libslic3r/SLAPrintSteps.cpp:48 +#: src/slic3r/GUI/GCodeViewer.cpp:1392 +msgid "Generating index buffers" +msgstr "Generování indexových bufferů" + +#: src/libslic3r/SLAPrintSteps.cpp:49 msgid "Generating pad" msgstr "Generování podložky" -#: src/libslic3r/PrintObject.cpp:152 +#: src/libslic3r/PrintObject.cpp:158 msgid "Generating perimeters" msgstr "Generování perimetrů" -#: src/libslic3r/Print.cpp:1606 +#: src/libslic3r/Print.cpp:1636 msgid "Generating skirt" msgstr "Generování obrysových smyček" -#: src/libslic3r/PrintObject.cpp:395 +#: src/libslic3r/PrintObject.cpp:422 msgid "Generating support material" msgstr "Generování podpěr" -#: src/libslic3r/SLAPrintSteps.cpp:46 src/libslic3r/SLAPrintSteps.cpp:356 +#: src/libslic3r/SLAPrintSteps.cpp:47 src/libslic3r/SLAPrintSteps.cpp:359 msgid "Generating support points" msgstr "Generování podpěrných bodů" -#: src/libslic3r/SLAPrintSteps.cpp:47 +#: src/libslic3r/SLAPrintSteps.cpp:48 msgid "Generating support tree" msgstr "Generování podpěr typu strom" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2022 +#: src/slic3r/GUI/GCodeViewer.cpp:933 +msgid "Generating toolpaths" +msgstr "Generování cest nástroje" + +#: src/slic3r/GUI/GCodeViewer.cpp:1318 +msgid "Generating vertex buffer" +msgstr "Generování vrcholového bufferu" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2181 msgid "Generic" msgstr "Obecný" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:175 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:169 msgid "Gizmo cut" msgstr "Gizmo řez" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:172 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:166 msgid "Gizmo move" msgstr "Gizmo posuv" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:176 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:198 +msgid "Gizmo move: Press to snap by 1mm" +msgstr "Gizmo posuvu: Stiskni pro 1mm krok" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:170 msgid "Gizmo Place face on bed" msgstr "Gizmo Umístit plochou na podložku" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:174 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:168 msgid "Gizmo rotate" msgstr "Gizmo rotace" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:173 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:203 +msgid "Gizmo rotate: Press to rotate selected objects around their own center" +msgstr "Gizmo rotace: Stiskni pro rotaci vybraných objektů kolem jejich vlastních středů" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:167 msgid "Gizmo scale" msgstr "Gizmo měřítko" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:177 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:201 +msgid "Gizmo scale: Press to activate one direction scaling" +msgstr "Gizmo měřítko: Stiskem aktivujete změnu velikosti pouze v jednom směru" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:202 +msgid "Gizmo scale: Press to scale selected objects around their own center" +msgstr "Gizmo měřítko: Stiskni pro změnu velikosti vybraných objektů v jejich vlastních středech" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:199 +msgid "Gizmo scale: Press to snap by 5%" +msgstr "Gizmo měřítko: Stiskni pro 5% krok" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:200 +msgid "Gizmo scale: Scale selection to fit print volume" +msgstr "Gizmo měřítko: Vyplnit tiskový objem aktivním výběrem modelů" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:171 msgid "Gizmo SLA hollow" msgstr "Gizmo SLA dutina" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:178 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:172 msgid "Gizmo SLA support points" msgstr "Gizmo SLA podpěrné body" -#: src/slic3r/GUI/GLCanvas3D.cpp:2921 -#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:562 +#: src/slic3r/GUI/GLCanvas3D.cpp:3165 +#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:520 msgid "Gizmo-Move" msgstr "Gizmo-Posuv" -#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:489 +#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:639 msgid "Gizmo-Place on Face" msgstr "Gizmo-Umístit plochou na podložku" -#: src/slic3r/GUI/GLCanvas3D.cpp:3001 -#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:564 +#: src/slic3r/GUI/GLCanvas3D.cpp:3249 +#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:522 msgid "Gizmo-Rotate" msgstr "Gizmo-Otáčení" -#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:563 +#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:521 msgid "Gizmo-Scale" msgstr "Gizmo-Měřítko" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:201 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:199 msgid "Gizmos" msgstr "Gizma" -#: src/slic3r/GUI/AboutDialog.cpp:259 +#: src/slic3r/GUI/AboutDialog.cpp:284 src/slic3r/GUI/GUI_App.cpp:244 msgid "GNU Affero General Public License, version 3" msgstr "GNU Affero General Public License, verze 3" -#: src/slic3r/GUI/ConfigWizard.cpp:980 +#: src/slic3r/GUI/ConfigWizard.cpp:1346 msgid "Good precision is required, so use a caliper and do multiple measurements along the filament, then compute the average." msgstr "Je zapotřebí velká přesnost, proto použijte posuvné měřítko (šupleru) a proveďte několik měření po délce filamentu, poté vypočítejte průměr." -#: src/libslic3r/PrintConfig.cpp:844 +#: src/libslic3r/PrintConfig.cpp:882 msgid "Grid" msgstr "Mřížka" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2454 +#: src/slic3r/GUI/PrintHostDialogs.cpp:57 +msgid "Group" +msgstr "Skupina" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2846 msgid "Group manipulation" msgstr "Manipulace se skupinou" -#: src/slic3r/GUI/Preferences.cpp:133 +#: src/slic3r/GUI/Preferences.cpp:200 msgid "GUI" msgstr "GUI" -#: src/libslic3r/PrintConfig.cpp:852 +#: src/libslic3r/PrintConfig.cpp:890 msgid "Gyroid" msgstr "Gyroid" -#: src/slic3r/GUI/Tab.cpp:2937 -msgid "has the following unsaved changes:" -msgstr "má neuložené následující změny:" - -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:47 msgid "Head diameter" msgstr "Průměr hrotu" -#: src/slic3r/GUI/ConfigManipulation.cpp:317 +#: src/libslic3r/PrintConfig.cpp:2772 +msgid "Head penetration" +msgstr "Průnik podpěry do modelu" + +#: src/slic3r/GUI/ConfigManipulation.cpp:322 msgid "Head penetration should not be greater than the head width." msgstr "Průnik hrotu podpěry by neměl být větší než je tloušťka hrotu podpěry." -#: src/libslic3r/PrintConfig.cpp:869 +#: src/libslic3r/PrintConfig.cpp:910 msgid "Heated build plate temperature for the first layer. Set this to zero to disable bed temperature control commands in the output." msgstr "Teplota vyhřívané tiskové podložky pro první vrstvu. Nastavením tuto hodnoty na nulu vypnete příkazy pro řízení teploty ve vrstvě ve výstupu." -#: src/slic3r/GUI/GUI_Preview.cpp:222 src/libslic3r/PrintConfig.cpp:500 +#: src/slic3r/GUI/GUI_Preview.cpp:276 src/libslic3r/PrintConfig.cpp:536 msgid "Height" msgstr "Výška" -#: src/libslic3r/GCode/PreviewData.cpp:347 +#: src/slic3r/GUI/GCodeViewer.cpp:2236 src/libslic3r/GCode/PreviewData.cpp:352 msgid "Height (mm)" msgstr "Výška (mm)" -#: src/libslic3r/PrintConfig.cpp:1688 +#: src/libslic3r/PrintConfig.cpp:1796 msgid "Height of skirt expressed in layers. Set this to a tall value to use skirt as a shield against drafts." msgstr "Výška obrysu vyjádřená ve vrstvách. Nastavte tuto hodnotu vysokou, pro použití obrysu jako stínění proti průvanu." -#: src/libslic3r/PrintConfig.cpp:2360 +#: src/libslic3r/PrintConfig.cpp:2503 msgid "Height of the display" msgstr "Výška displeje" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1500 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1631 msgid "Height range Modifier" msgstr "Modifikátor Výškového rozsahu" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2507 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2899 msgid "Height ranges" msgstr "Výškové rozsahy" -#: src/libslic3r/PrintConfig.cpp:261 +#: src/libslic3r/PrintConfig.cpp:295 msgid "Heights at which a filament change is to occur." msgstr "Výšky, při kterých má dojít ke změně filamentu." -#: src/slic3r/GUI/ConfigWizard.cpp:433 +#: src/slic3r/GUI/ConfigWizard.cpp:451 #, 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 "Ahoj, vítejte v %su! Tento %s vám pomůže se základní konfigurací; jen několik nastavení a budete připraveni tisknout." -#: src/libslic3r/PrintConfig.cpp:3365 +#: src/libslic3r/PrintConfig.cpp:3564 msgid "Help" msgstr "Nápověda" -#: src/libslic3r/PrintConfig.cpp:3371 +#: src/libslic3r/PrintConfig.cpp:3570 msgid "Help (FFF options)" msgstr "Nápověda (pro FFF)" -#: src/libslic3r/PrintConfig.cpp:3376 +#: src/libslic3r/PrintConfig.cpp:3575 msgid "Help (SLA options)" msgstr "Nápověda (pro SLA)" @@ -3303,96 +3808,80 @@ msgstr "Nápověda (pro SLA)" msgid "Here you can adjust required purging volume (mm³) for any given pair of tools." msgstr "Zde můžete upravit požadovaný objem čištění (mm³) pro kteroukoliv dvojici extruderů." -#: src/libslic3r/PrintConfig.cpp:973 +#: src/libslic3r/PrintConfig.cpp:1017 msgid "High extruder current on filament swap" msgstr "Zvýšený proud do extruderového motoru při výměně filamentu" -#: src/slic3r/GUI/GLCanvas3D.cpp:277 +#: src/slic3r/GUI/GLCanvas3D.cpp:263 msgid "Higher print quality versus higher print speed." msgstr "Vyšší kvalita tisku versus vyšší rychlost tisku." -#: src/libslic3r/PrintConfig.cpp:427 src/libslic3r/PrintConfig.cpp:853 +#: src/libslic3r/PrintConfig.cpp:463 src/libslic3r/PrintConfig.cpp:891 msgid "Hilbert Curve" msgstr "Hilbertova křivka" -#: src/slic3r/GUI/Plater.cpp:1042 +#: src/slic3r/GUI/Plater.cpp:916 msgid "Hold Shift to Slice & Export G-code" msgstr "Stiskni Shift pro Slicování & Export G-codu" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:47 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:46 msgid "Hole depth" msgstr "Hloubka otvoru" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:46 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:45 msgid "Hole diameter" msgstr "Průměr otvoru" -#: src/slic3r/GUI/Plater.cpp:2760 -msgid "Hollow" -msgstr "Vydutit" - -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:977 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:785 msgid "Hollow and drill" msgstr "Vydutit a vyvrtat" -#: src/libslic3r/PrintConfig.cpp:2910 +#: src/libslic3r/PrintConfig.cpp:3074 msgid "Hollow out a model to have an empty interior" msgstr "Vyduťte model, abyste měli vnitřek prázdný" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:41 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:40 msgid "Hollow this object" msgstr "Vydutit tento objekt" -#: src/slic3r/GUI/GUI_ObjectList.cpp:108 src/slic3r/GUI/Tab.cpp:3654 -#: src/slic3r/GUI/Tab.cpp:3655 src/libslic3r/SLA/Hollowing.cpp:46 -#: src/libslic3r/SLA/Hollowing.cpp:58 src/libslic3r/SLA/Hollowing.cpp:67 -#: src/libslic3r/SLA/Hollowing.cpp:76 src/libslic3r/PrintConfig.cpp:2909 -#: src/libslic3r/PrintConfig.cpp:2916 src/libslic3r/PrintConfig.cpp:2926 -#: src/libslic3r/PrintConfig.cpp:2935 +#: src/slic3r/GUI/GUI_ObjectList.cpp:106 src/slic3r/GUI/Tab.cpp:4073 +#: src/slic3r/GUI/Tab.cpp:4074 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:3073 +#: src/libslic3r/PrintConfig.cpp:3080 src/libslic3r/PrintConfig.cpp:3090 +#: src/libslic3r/PrintConfig.cpp:3099 msgid "Hollowing" msgstr "Vytvoření dutiny" -#: src/slic3r/GUI/Plater.cpp:2926 -msgid "Hollowing cancelled." -msgstr "Vytváření dutiny bylo zrušeno." - -#: src/slic3r/GUI/Plater.cpp:2927 -msgid "Hollowing done." -msgstr "Vydutění dokončeno." - -#: src/slic3r/GUI/Plater.cpp:2929 -msgid "Hollowing failed." -msgstr "Vydutění selhalo." - -#: src/libslic3r/PrintConfig.cpp:2937 +#: src/libslic3r/PrintConfig.cpp:3101 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 inflated back to the specified offset. A greater closing distance makes the interior more rounded. At zero, the interior will resemble the exterior the most." msgstr "Tvorba dutiny se provádí ve dvou krocích: nejprve se imaginární vnitřní stěna vypočítá hlouběji (offset plus vzdálenost uzavření) v objektu a poté se nafoukne zpět na zadaný offset. Díky větší vzdálenosti uzavření je vnitřek modelu zaoblenější. Při nulové hodnotě se vnitřek modelu nejvíce podobá vnějšku modelu." -#: src/libslic3r/SLAPrintSteps.cpp:43 +#: src/libslic3r/SLAPrintSteps.cpp:44 msgid "Hollowing model" msgstr "Vydutění modelu" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:813 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:624 msgid "Hollowing parameter change" msgstr "Změna parametru dutiny" -#: src/libslic3r/PrintConfig.cpp:850 src/libslic3r/PrintConfig.cpp:2011 +#: src/libslic3r/PrintConfig.cpp:888 src/libslic3r/PrintConfig.cpp:2153 msgid "Honeycomb" msgstr "Plástev" -#: src/slic3r/GUI/Tab.cpp:1064 +#: src/slic3r/GUI/Tab.cpp:1386 msgid "Horizontal shells" msgstr "Vodorovné stěny" -#: src/libslic3r/PrintConfig.cpp:245 +#: 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." -#: src/slic3r/GUI/PrintHostDialogs.cpp:152 +#: src/slic3r/GUI/PrintHostDialogs.cpp:150 msgid "Host" msgstr "Server" -#: src/libslic3r/PrintConfig.cpp:1332 +#: src/libslic3r/PrintConfig.cpp:1440 msgid "Host Type" msgstr "Typ tiskového serveru" @@ -3400,11 +3889,11 @@ msgstr "Typ tiskového serveru" msgid "Hostname" msgstr "Název serveru" -#: src/libslic3r/PrintConfig.cpp:97 +#: src/libslic3r/PrintConfig.cpp:99 msgid "Hostname, IP or URL" msgstr "Název serveru, IP nebo URL" -#: src/slic3r/GUI/Tab.cpp:139 +#: src/slic3r/GUI/Tab.cpp:210 msgid "" "Hover the cursor over buttons to find more information \n" "or click this button." @@ -3412,57 +3901,66 @@ msgstr "" "Pro více informací přejeďte kurzorem nad tlačítky\n" "nebo na tlačítko klikněte." -#: src/libslic3r/PrintConfig.cpp:2812 +#: src/libslic3r/PrintConfig.cpp:2976 msgid "How far should the pad extend around the contained geometry" msgstr "Jak široká má být podložka kolem geometrie" -#: src/libslic3r/PrintConfig.cpp:2901 +#: src/libslic3r/PrintConfig.cpp:3065 msgid "How much should the tiny connectors penetrate into the model body." msgstr "Jak hluboko mají spojky proniknou do modelu." -#: src/libslic3r/PrintConfig.cpp:2631 +#: src/libslic3r/PrintConfig.cpp:2774 msgid "How much the pinhead has to penetrate the model surface" msgstr "Jak moc hrot podpěry pronikne do povrchu modelu" -#: src/libslic3r/PrintConfig.cpp:2755 +#: src/libslic3r/PrintConfig.cpp:2919 msgid "How much the supports should lift up the supported object. If \"Pad around object\" is enabled, this value is ignored." msgstr "O kolik mají podpěry nadzvednout podporovaný objekt. V případě zvolení možnosti \"Podložka okolo objektu\" bude tato hodnota ignorována." -#: src/libslic3r/PrintConfig.cpp:111 +#: src/libslic3r/PrintConfig.cpp:1209 +msgid "How to apply limits" +msgstr "Uplatnění limitů" + +#: src/libslic3r/PrintConfig.cpp:1203 +msgid "How to apply the Machine Limits" +msgstr "Jak se mají projevit limity stroje" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:358 +#: src/libslic3r/PrintConfig.cpp:113 msgid "HTTPS CA File" msgstr "Soubor HTTPS CA" -#: src/slic3r/GUI/Tab.cpp:1713 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:319 msgid "HTTPS CA file is optional. It is only needed if you use HTTPS with a self-signed certificate." msgstr "Soubor HTTPS CA je volitelný. Je nutný pouze pokud použijte HTTPS certifikát s vlastním podpisem." -#: src/slic3r/GUI/Preferences.cpp:222 +#: src/slic3r/GUI/Preferences.cpp:376 msgid "Icon size in a respect to the default size" msgstr "Velikost ikon vůči výchozí velikosti" -#: src/slic3r/GUI/PrintHostDialogs.cpp:149 +#: src/slic3r/GUI/PrintHostDialogs.cpp:147 msgid "ID" msgstr "ID" -#: src/libslic3r/PrintConfig.cpp:1873 +#: src/libslic3r/PrintConfig.cpp:2015 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 "Pokud je zaškrtnuto, budou podpěry generovány automaticky na základě prahové hodnoty převisu. Pokud není zaškrtnuto, bude podpěra generována pouze v místech, kde je umístěn objekt pro \"Vynucení podpěr\"." -#: src/slic3r/GUI/ConfigWizard.cpp:773 +#: src/slic3r/GUI/ConfigWizard.cpp:1132 #, c-format msgid "If enabled, %s checks for new application versions online. When a new version becomes available, a notification is displayed at the next application startup (never during program usage). This is only a notification mechanisms, no automatic installation is done." msgstr "Pokud je povoleno, kontroluje %s nově dostupné verze. V případě, že je nová verze k dispozici, zobrazí se notifikace při dalším startu programu (nikdy během užívání aplikace). Tento systém slouží pouze pro upozornění uživatele, nedochází k automatické instalaci." -#: src/slic3r/GUI/ConfigWizard.cpp:783 +#: src/slic3r/GUI/ConfigWizard.cpp:1142 #, c-format msgid "If enabled, %s downloads updates of built-in system presets in the background.These updates are downloaded into a separate temporary location.When a new preset version becomes available it is offered at application startup." msgstr "Pokud je povoleno, stáhne %s na pozadí aktualizace vestavěných systémových přednastavení. Tyto aktualizace jsou staženy do dočasného umístění. Pokud je k dispozici nové přednastavení, zobrazí se upozornění při startu programu." -#: src/libslic3r/PrintConfig.cpp:1852 +#: src/libslic3r/PrintConfig.cpp:1994 msgid "If enabled, all printing extruders will be primed at the front edge of the print bed at the start of the print." msgstr "Pokud je tato možnost povolena, všechny tiskové extrudery na začátku tisku vytlačí na předním okraji podložky malé množství materiálu." -#: src/slic3r/GUI/ConfigWizard.cpp:805 +#: src/slic3r/GUI/ConfigWizard.cpp:1164 msgid "" "If enabled, allows the Reload from disk command to automatically find and load the files when invoked.\n" "If not enabled, the Reload from disk command will ask to select each file using an open file dialog." @@ -3470,127 +3968,180 @@ msgstr "" "Pokud je povoleno, v případě vyžádání, umožňuje funkci „Znovu načíst z disku“ automaticky vyhledat a načíst soubory.\n" "Pokud není povoleno, funkce „Znovu načíst z disku“ požádá o zadání cest ke každému souboru pomocí dialogového okna." -#: src/slic3r/GUI/Preferences.cpp:74 +#: src/slic3r/GUI/Preferences.cpp:91 msgid "If enabled, allows the Reload from disk command to automatically find and load the files when invoked." msgstr "Pokud je povoleno, v případě vyžádání, umožňuje funkci „Znovu načíst z disku“ automaticky vyhledat a načíst soubory." -#: src/slic3r/GUI/Preferences.cpp:66 +#: src/slic3r/GUI/Preferences.cpp:238 +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 "Pokud je povoleno, pohyby sekvenčního posuvníku v náhledu G-codu se aplikují pouze na horní vrstvu. Pokud je zakázáno, aplikují se na celý G-code." + +#: src/slic3r/GUI/Preferences.cpp:83 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 application startup (never during program usage). This is only a notification mechanisms, no automatic installation is done." msgstr "Pokud je povoleno, PrusaSlicer kontroluje nově dostupné verze programu. V případě, že je nová verze k dispozici, zobrazí se notifikace při dalším startu programu (nikdy během užívání aplikace). Tento systém slouží pouze pro upozornění uživatele, nedochází k automatické instalaci." -#: src/slic3r/GUI/Preferences.cpp:82 +#: src/slic3r/GUI/Preferences.cpp:270 +msgid "If enabled, renders object using the environment map." +msgstr "Pokud je povoleno, vykreslí objekt za pomoci mapy prostředí." + +#: src/slic3r/GUI/Preferences.cpp:200 +msgid "If enabled, reverses the direction of zoom with mouse wheel" +msgstr "Pokud je povoleno, při zoomu obrátí funkci kolečka myši" + +#: src/slic3r/GUI/Preferences.cpp:99 msgid "If enabled, Slic3r downloads updates of built-in system presets in the background. These updates are downloaded into a separate temporary location. When a new preset version becomes available it is offered at application startup." msgstr "Pokud je povoleno, stáhne Slic3r na pozadí aktualizace vestavěných systémových přednastavení. Tyto aktualizace jsou staženy do dočasného umístění. Pokud je k dispozici nové přednastavení, zobrazí se upozornění při startu programu." -#: src/slic3r/GUI/Preferences.cpp:106 +#: src/slic3r/GUI/Preferences.cpp:137 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 "Pokud je tato volba povolena, bude 3D scéna vykreslena v rozlišení Retina. Pokud dochází k potížím s výkonem, zkuste tuto volbu vypnout." -#: src/libslic3r/PrintConfig.cpp:1696 +#: src/slic3r/GUI/Preferences.cpp:215 +msgid "If enabled, the button for the collapse sidebar will be appeared in top right corner of the 3D Scene" +msgstr "Pokud je povoleno, bude v pravém horním rohu 3D scény zobrazeno tlačítko pro ovládání bočního panelu" + +#: src/libslic3r/PrintConfig.cpp:3698 +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/libslic3r/PrintConfig.cpp:1804 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 "Pokud je tato možnost povolena, bude obrys (skirt) stejně vysoký jako nejvyšší tištěný objekt. To je užitečné k ochraně modelu při tisku z ABS nebo ASA před deformací a odlepením od tiskové podložky v důsledku průvanu." -#: src/libslic3r/PrintConfig.cpp:1858 +#: src/libslic3r/PrintConfig.cpp:2000 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 print the wipe tower. User is responsible for ensuring there is no collision with the print." msgstr "Pokud je tato možnost povolena, nebude čistící věž vytištěna ve vrstvách bez změny barvy. U vrstev s výměnou sjede extruder směrem dolů a vytiskne vrstvu čistící věže. Uživatel je odpovědný za to, že nedojde ke kolizi tiskové hlavy s tiskem." -#: src/slic3r/GUI/Preferences.cpp:128 +#: src/slic3r/GUI/Preferences.cpp:193 msgid "If enabled, use free camera. If not enabled, use constrained camera." msgstr "Pokud je zaškrtnuto, použije „free kameru“. Pokud není, použije „constrained kameru“." -#: src/slic3r/GUI/Preferences.cpp:121 +#: src/slic3r/GUI/Preferences.cpp:186 msgid "If enabled, use perspective camera. If not enabled, use orthographic camera." msgstr "Pokud je zaškrtnuto, použije perspektivní kameru. Pokud není, použije ortografickou kameru." -#: src/slic3r/GUI/Preferences.cpp:145 +#: src/slic3r/GUI/Preferences.cpp:222 msgid "If enabled, you can change size of toolbar icons manually." msgstr "Pokud je zaškrtnuto, můžete nastavit velikost ikon na panelu nástrojů." -#: src/slic3r/GUI/PresetHints.cpp:29 +#: src/slic3r/GUI/PresetHints.cpp:28 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 "Pokud je odhadovaný čas vrstvy nižší než ~%1%s, bude ventilátor pracovat na %2%%% a rychlost tisku bude snížena tak, aby na tuto vrstvu nebylo použito méně než %3%s (rychlost však nikdy nebude snížena pod %4%mm/s)." -#: src/slic3r/GUI/PresetHints.cpp:36 +#: src/slic3r/GUI/PresetHints.cpp:35 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 "Pokud je odhadovaný čas vrstvy delší, ale stále pod ~%1%s, bude ventilátor pracovat s plynule klesající rychlostí mezi %2%%% a %3%%%." -#: src/libslic3r/PrintConfig.cpp:901 +#: src/libslic3r/PrintConfig.cpp:943 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 "Pokud je vyjádřena jako absolutní hodnota v mm / s, bude tato rychlost použita pro všechny pohyby tisku první vrstvy bez ohledu na jejich typ. Pokud je hodnota vyjádřena procenty (například: 40%), změní v závislosti na výchozích rychlostech." -#: src/libslic3r/PrintConfig.cpp:573 +#: src/libslic3r/PrintConfig.cpp:609 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 "Pokud je doba tisku vrstvy odhadnuta jako kratší než tato nastavená hodnota ve vteřinách, ventilátor bude aktivován a jeho rychlost bude vypočtena interpolací minimální a maximální rychlosti." -#: src/libslic3r/PrintConfig.cpp:1706 +#: src/libslic3r/PrintConfig.cpp:1821 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 "Pokud je doba tisku vrstvy odhadnuta kratší než tento počet sekund, rychlost tisku se zpomalí, aby se prodloužila doba tisku této vrstvy." -#: src/libslic3r/PrintConfig.cpp:567 +#: src/libslic3r/PrintConfig.cpp:603 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 "Pokud je tato funkce zapnutá, ventilátor nebude nikdy vypnut a bude udržován v chodu alespoň rychlostí která je nastavena jako minimální rychlost. Užitečné pro PLA, škodlivé pro ABS." -#: src/slic3r/GUI/Preferences.cpp:49 +#: src/slic3r/GUI/Preferences.cpp:66 msgid "If this is enabled, Slic3r will auto-center objects around the print bed center." msgstr "Pokud je tato možnost povolena, Slic3r bude automaticky centrovat objekty kolem středu tiskové plochy." -#: src/slic3r/GUI/Preferences.cpp:57 +#: src/slic3r/GUI/Preferences.cpp:74 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 "Pokud je tato možnost povolena, Slic3r předprojektuje objekty, jakmile budou načteny, aby šetřil čas při exportu G-code." -#: src/slic3r/GUI/Preferences.cpp:41 +#: src/slic3r/GUI/Preferences.cpp:54 msgid "If this is enabled, Slic3r will prompt the last output directory instead of the one containing the input files." msgstr "Pokud je tato volba povolena, Slic3r vyvolá poslední výstupní adresář namísto toho, který obsahuje vstupní soubory." -#: src/libslic3r/PrintConfig.cpp:1562 +#: src/slic3r/GUI/Preferences.cpp:125 +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 "Pokud je tato možnost povolena, tak v případě již běžícího PrusaSliceru bude při pokusu spuštění dalšího PrusaSliceru aktivována právě tato instance." + +#: src/libslic3r/PrintConfig.cpp:1670 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 "Zadáním kladné hodnoty, se Z rychle přizvedne při každém vyvolání retrakce. Při použití více extruderů bude použito pouze nastavení pro první extruder." -#: src/libslic3r/PrintConfig.cpp:1571 +#: src/libslic3r/PrintConfig.cpp:1679 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 "Zadáním kladné hodnoty se zdvih Z uskuteční pouze nad zadanou absolutní hodnotou Z. Toto nastavení můžete zvolit pro přeskočení přizvednutí u prvních vrstev." -#: src/libslic3r/PrintConfig.cpp:1580 +#: src/libslic3r/PrintConfig.cpp:1688 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 "Zadáním kladné hodnoty se zdvih Z uskuteční pouze pod zadanou absolutní hodnotou Z. Toto nastavení můžete zvolit pro přeskočení přizvednutí u prvních vrstev." -#: src/libslic3r/PrintConfig.cpp:1454 +#: src/libslic3r/PrintConfig.cpp:1562 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. Scripts will be passed the absolute path to the G-code file as the first argument, and they can access the Slic3r config settings by reading environment variables." msgstr "Pokud chcete zpracovat výstupní G-code pomocí vlastních skriptů, stačí zde uvést jejich absolutní cesty. Oddělte více skriptů středníkem. Skripty předají absolutní cestu k souboru G-code jako první argument a mohou přistupovat k nastavení konfigurace Slic3ru čtením proměnných prostředí." -#: src/libslic3r/PrintConfig.cpp:530 +#: src/libslic3r/PrintConfig.cpp:566 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 of each extruder with respect to the first one. It expects positive coordinates (they will be subtracted from the XY coordinate)." msgstr "Pokud firmware nezpracovává umístění extruderu správně, potřebujete aby to vzal G-code v úvahu. Toto nastavení umožňuje určit odsazení každého extruderu vzhledem k prvnímu. Očekávají se pozitivní souřadnice (budou odečteny od souřadnice XY)." -#: src/libslic3r/PrintConfig.cpp:2169 +#: src/libslic3r/PrintConfig.cpp:2312 msgid "If your firmware requires relative E values, check this, otherwise leave it unchecked. Most firmwares use absolute values." msgstr "Pokud váš firmware vyžaduje relativní hodnoty E, zaškrtněte toto, jinak nechte nezaškrtnuté. Většina firmwarů používá absolutní hodnoty." -#: src/libslic3r/PrintConfig.cpp:3485 +#: src/libslic3r/PrintConfig.cpp:1219 +msgid "Ignore" +msgstr "Ignorovat" + +#: src/libslic3r/PrintConfig.cpp:3684 msgid "Ignore non-existent config files" msgstr "Ignorovat neexistující konfigurační soubory" -#: src/slic3r/GUI/MainFrame.cpp:464 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:192 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:173 +msgid "Ignores facets facing away from the camera." +msgstr "Ignoruje fasety směřující pryč od kamery." + +#: src/slic3r/GUI/MainFrame.cpp:1055 msgid "Import &Config" msgstr "Importovat Konfigura&ci" -#: src/slic3r/GUI/MainFrame.cpp:471 +#: src/slic3r/GUI/MainFrame.cpp:1062 msgid "Import Config &Bundle" msgstr "Importovat Konfigurační &Balík" -#: src/slic3r/GUI/MainFrame.cpp:467 +#: src/slic3r/GUI/MainFrame.cpp:1058 msgid "Import Config from &project" msgstr "Načíst konfiguraci z &projektu" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:119 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:112 msgid "Import Config from ini/amf/3mf/gcode" msgstr "Načíst konfiguraci ze souboru ini/amf/3mf/gcode" -#: src/slic3r/GUI/Plater.cpp:4603 +#: src/slic3r/GUI/Plater.cpp:1419 +msgid "Import config only" +msgstr "Importovat pouze konfiguraci" + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:39 +msgid "Import file" +msgstr "Importovat soubor" + +#: src/slic3r/GUI/Plater.cpp:1418 +msgid "Import geometry only" +msgstr "Importovat pouze modely" + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:46 +msgid "Import model and profile" +msgstr "Importovat model a profil" + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:48 +msgid "Import model only" +msgstr "Importujte pouze model" + +#: src/slic3r/GUI/Plater.cpp:4655 msgid "Import Object" msgstr "Importovat Objekt" -#: src/slic3r/GUI/Plater.cpp:4607 +#: src/slic3r/GUI/Plater.cpp:4659 msgid "Import Objects" msgstr "Importovat Objekty" @@ -3598,15 +4149,50 @@ msgstr "Importovat Objekty" msgid "Import of the repaired 3mf file failed" msgstr "Import opraveného 3MF souboru selhal" -#: src/slic3r/GUI/MainFrame.cpp:460 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:47 +msgid "Import profile only" +msgstr "Importovat pouze profil" + +#: src/slic3r/GUI/MainFrame.cpp:1050 +msgid "Import SL1 archive" +msgstr "Importovat SL1 archiv" + +#: src/slic3r/GUI/Plater.cpp:1561 +msgid "Import SLA archive" +msgstr "Importovat SLA archiv" + +#: src/slic3r/GUI/MainFrame.cpp:1046 +msgid "Import STL (imperial units)" +msgstr "Importovat STL (imperiální jednotky)" + +#: src/slic3r/GUI/MainFrame.cpp:1042 msgid "Import STL/OBJ/AM&F/3MF" msgstr "Importovat STL/OBJ/AM&F/3MF" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:118 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:111 msgid "Import STL/OBJ/AMF/3MF without config, keep plater" msgstr "Importovat STL/OBJ/AMF/3MF bez konfigurace, zachová stávající podložku" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3422 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:159 +msgid "Importing canceled." +msgstr "Import zrušen." + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:160 +msgid "Importing done." +msgstr "Import dokončen." + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:135 +msgid "Importing SLA archive" +msgstr "Importuje se SLA archiv" + +#: 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 "in" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:3885 #, c-format 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" @@ -3615,25 +4201,25 @@ msgstr "V tomto režimu můžete vybrat pouze jinou/jiný %s %s" msgid "Incompatible bundles:" msgstr "Nekompatibilní balíky:" +#: src/slic3r/GUI/PresetComboBoxes.cpp:241 +msgid "Incompatible presets" +msgstr "Nekompatibilní předvolby" + #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:75 #, c-format msgid "Incompatible with this %s" msgstr "Nekompatibilní s tímto %s" -#: src/slic3r/GUI/Plater.cpp:4685 +#: src/slic3r/GUI/Plater.cpp:4790 msgid "Increase Instances" msgstr "Přidání Instancí" -#: src/slic3r/GUI/GLCanvas3D.cpp:264 +#: src/slic3r/GUI/GLCanvas3D.cpp:251 msgid "Increase/decrease edit area" msgstr "Zvětšit / zmenšit oblast úprav" -#: src/slic3r/GUI/Plater.cpp:2922 -msgid "Indexing hollowed object" -msgstr "Indexování dutého objektu" - #. TRN Description for "UNLOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:3258 +#: src/slic3r/GUI/Tab.cpp:3695 msgid "" "indicates that some settings were changed and are not equal to the system (or default) values for the current option group.\n" "Click the UNLOCKED LOCK icon to reset all settings for current option group to the system (or default) values." @@ -3642,12 +4228,12 @@ msgstr "" "Klikněte na ikonu ODEMKNUTÉHO ZÁMKU pro reset všech nastavení aktuální skupiny nastavení na systémové (nebo výchozí) hodnoty." #. TRN Description for "LOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:3254 +#: src/slic3r/GUI/Tab.cpp:3691 msgid "indicates that the settings are the same as the system (or default) values for the current option group" msgstr "indikuje, že nastavení jsou stejná jako systémové (výchozí) hodnoty pro aktuální skupinu nastavení" #. TRN Description for "BACK ARROW" -#: src/slic3r/GUI/Tab.cpp:3270 +#: src/slic3r/GUI/Tab.cpp:3707 msgid "" "indicates that the settings were changed and are not equal to the last saved preset for the current option group.\n" "Click the BACK ARROW icon to reset all settings for the current option group to the last saved preset." @@ -3655,419 +4241,475 @@ msgstr "" "indikuje, že došlo ke změně nastavení, které není shodné s naposledy uloženým přednastavením pro aktuální skupinu nastavení.\n" "Klikněte na ikonu ŠIPKY ZPĚT pro reset všech nastavení pro aktuální skupinu nastavení na naposledy uložené přednastavení." -#: src/slic3r/GUI/ConfigManipulation.cpp:211 -#: src/slic3r/GUI/GUI_ObjectList.cpp:35 src/slic3r/GUI/GUI_ObjectList.cpp:96 -#: src/slic3r/GUI/GUI_ObjectList.cpp:614 src/slic3r/GUI/Plater.cpp:527 -#: src/slic3r/GUI/Tab.cpp:1091 src/slic3r/GUI/Tab.cpp:1092 -#: src/libslic3r/PrintConfig.cpp:203 src/libslic3r/PrintConfig.cpp:416 -#: src/libslic3r/PrintConfig.cpp:436 src/libslic3r/PrintConfig.cpp:776 -#: src/libslic3r/PrintConfig.cpp:790 src/libslic3r/PrintConfig.cpp:827 -#: src/libslic3r/PrintConfig.cpp:981 src/libslic3r/PrintConfig.cpp:991 -#: src/libslic3r/PrintConfig.cpp:1009 src/libslic3r/PrintConfig.cpp:1028 -#: src/libslic3r/PrintConfig.cpp:1047 src/libslic3r/PrintConfig.cpp:1728 -#: src/libslic3r/PrintConfig.cpp:1745 +#: src/slic3r/GUI/ConfigManipulation.cpp:210 +#: 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:393 +#: src/slic3r/GUI/Tab.cpp:1413 src/slic3r/GUI/Tab.cpp:1414 +#: src/libslic3r/PrintConfig.cpp:237 src/libslic3r/PrintConfig.cpp:450 +#: src/libslic3r/PrintConfig.cpp:472 src/libslic3r/PrintConfig.cpp:812 +#: src/libslic3r/PrintConfig.cpp:826 src/libslic3r/PrintConfig.cpp:863 +#: src/libslic3r/PrintConfig.cpp:1025 src/libslic3r/PrintConfig.cpp:1035 +#: src/libslic3r/PrintConfig.cpp:1053 src/libslic3r/PrintConfig.cpp:1072 +#: src/libslic3r/PrintConfig.cpp:1091 src/libslic3r/PrintConfig.cpp:1843 +#: src/libslic3r/PrintConfig.cpp:1860 msgid "Infill" msgstr "Výplň" -#: src/slic3r/GUI/PresetHints.cpp:174 +#: src/slic3r/GUI/PresetHints.cpp:173 msgid "infill" msgstr "výplň" -#: src/libslic3r/PrintConfig.cpp:1021 +#: src/libslic3r/PrintConfig.cpp:1065 msgid "Infill before perimeters" msgstr "Tisknout výplň před tiskem perimetrů" -#: src/libslic3r/PrintConfig.cpp:1001 +#: src/libslic3r/PrintConfig.cpp:1045 msgid "Infill extruder" msgstr "Extruder pro výplň" -#: src/libslic3r/PrintConfig.cpp:1036 +#: src/libslic3r/PrintConfig.cpp:1080 msgid "Infill/perimeters overlap" msgstr "Přesah pro výplň/perimetry" -#: src/libslic3r/Print.cpp:1584 +#: src/libslic3r/Print.cpp:1610 msgid "Infilling layers" msgstr "Generování výplně vrstev" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3430 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3505 src/slic3r/GUI/Plater.cpp:141 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3893 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3968 src/slic3r/GUI/Plater.cpp:147 msgid "Info" msgstr "Info" -#: src/libslic3r/PrintConfig.cpp:1057 +#: src/slic3r/GUI/GUI_App.cpp:1087 src/slic3r/GUI/Tab.cpp:3435 +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" -#: src/libslic3r/SLAPrint.cpp:653 +#: src/libslic3r/SLAPrint.cpp:667 msgid "Initial exposition time is out of printer profile bounds." msgstr "Doba počátečního osvitu je mimo rozsah profilu tiskárny." -#: src/libslic3r/PrintConfig.cpp:2564 src/libslic3r/PrintConfig.cpp:2565 +#: src/libslic3r/PrintConfig.cpp:2707 src/libslic3r/PrintConfig.cpp:2708 msgid "Initial exposure time" msgstr "Doba počátečního osvitu" -#: src/libslic3r/PrintConfig.cpp:2482 src/libslic3r/PrintConfig.cpp:2483 +#: src/libslic3r/PrintConfig.cpp:2625 src/libslic3r/PrintConfig.cpp:2626 msgid "Initial layer height" msgstr "Výška první vrstvy" -#: src/slic3r/GUI/Field.cpp:204 +#: 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" -#: src/slic3r/GUI/GUI_App.cpp:800 +#: src/slic3r/GUI/GUI_App.cpp:1480 msgid "Inspect / activate configuration snapshots" msgstr "Zkontrolovat / aktivovat zálohy konfigurace" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:60 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:216 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:62 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:218 #, c-format msgid "Instance %d" msgstr "Instance %d" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2500 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2892 msgid "Instance manipulation" msgstr "Manipulace s instancí objektu" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:56 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:58 msgid "Instances" msgstr "Instance" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1091 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3781 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1215 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4244 msgid "Instances to Separated Objects" msgstr "Změna instance na samostatný objekt" -#: src/libslic3r/PrintConfig.cpp:1973 +#: src/libslic3r/PrintConfig.cpp:2115 msgid "Interface layers" msgstr "Kontaktní vrstvy" -#: src/libslic3r/PrintConfig.cpp:1957 +#: src/libslic3r/PrintConfig.cpp:2099 msgid "Interface loops" msgstr "Kontaktní smyčky" -#: src/libslic3r/PrintConfig.cpp:1982 +#: src/libslic3r/PrintConfig.cpp:2124 msgid "Interface pattern spacing" msgstr "Rozteč kontaktních vrstev" -#: src/libslic3r/PrintConfig.cpp:1071 +#: src/libslic3r/PrintConfig.cpp:1115 msgid "Interface shells" msgstr "Mezilehlé stěny" -#: src/libslic3r/Zipper.cpp:84 +#: src/libslic3r/miniz_extension.cpp:143 msgid "internal error" msgstr "interní chyba" -#: src/slic3r/GUI/GUI_Preview.cpp:240 src/libslic3r/ExtrusionEntity.cpp:313 +#: src/slic3r/GUI/GUI_Preview.cpp:304 src/libslic3r/ExtrusionEntity.cpp:317 +#: src/libslic3r/ExtrusionEntity.cpp:342 msgid "Internal infill" msgstr "Vnitřní výplň" -#: src/slic3r/GUI/Plater.cpp:3106 +#: src/slic3r/GUI/BedShapeDialog.cpp:145 +msgid "Invalid" +msgstr "Neplatný" + +#: src/slic3r/GUI/Plater.cpp:2906 src/slic3r/GUI/Plater.cpp:3583 msgid "Invalid data" msgstr "Neplatná data" -#: src/slic3r/GUI/BedShapeDialog.cpp:494 src/slic3r/GUI/BedShapeDialog.cpp:543 -#: src/slic3r/GUI/BedShapeDialog.cpp:566 +#: src/slic3r/GUI/BedShapeDialog.cpp:570 src/slic3r/GUI/BedShapeDialog.cpp:619 +#: src/slic3r/GUI/BedShapeDialog.cpp:642 msgid "Invalid file format." msgstr "Neplatný formát souboru." -#: src/libslic3r/Zipper.cpp:80 +#: src/libslic3r/miniz_extension.cpp:139 msgid "invalid filename" msgstr "neplatný název souboru" -#: src/slic3r/GUI/ConfigManipulation.cpp:319 +#: src/slic3r/GUI/ConfigManipulation.cpp:324 msgid "Invalid Head penetration" msgstr "Neplatný průnik podpěry do modelu" -#: src/libslic3r/Zipper.cpp:48 +#: src/libslic3r/miniz_extension.cpp:107 msgid "invalid header or archive is corrupted" msgstr "neplatná hlavička nebo je archiv poškozen" -#: src/slic3r/GUI/Field.cpp:195 src/slic3r/GUI/Field.cpp:226 -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:376 +#: 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." msgstr "Neplatný číselný vstup." -#: src/libslic3r/Zipper.cpp:78 +#: src/libslic3r/miniz_extension.cpp:137 msgid "invalid parameter" msgstr "neplatný parametr" -#: src/slic3r/GUI/ConfigManipulation.cpp:332 +#: src/slic3r/GUI/ConfigManipulation.cpp:337 msgid "Invalid pinhead diameter" msgstr "Průměr hrotu podpěry je neplatný" +#: src/slic3r/GUI/GUI_ObjectList.cpp:94 src/slic3r/GUI/GUI_ObjectList.cpp:653 +#: src/slic3r/GUI/GUI_Preview.cpp:307 src/slic3r/GUI/Tab.cpp:1420 +#: src/libslic3r/ExtrusionEntity.cpp:320 src/libslic3r/ExtrusionEntity.cpp:348 +#: src/libslic3r/PrintConfig.cpp:1126 src/libslic3r/PrintConfig.cpp:1132 +#: src/libslic3r/PrintConfig.cpp:1146 src/libslic3r/PrintConfig.cpp:1156 +msgid "Ironing" +msgstr "Ironing" + +#: src/libslic3r/PrintConfig.cpp:1131 src/libslic3r/PrintConfig.cpp:1133 +msgid "Ironing Type" +msgstr "Způsob vyhlazování" + +#: src/slic3r/GUI/GUI_App.cpp:243 +msgid "is based on Slic3r by Alessandro Ranellucci and the RepRap community." +msgstr "je založen na Slic3r od Alessandra Ranellucciho a RepRap komunity." + #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:258 +#: src/slic3r/GUI/AboutDialog.cpp:283 src/slic3r/GUI/GUI_App.cpp:244 msgid "is licensed under the" msgstr "je licencován pod" -#: src/slic3r/GUI/Tab.cpp:2941 -msgid "is not compatible with print profile" -msgstr "není kompatibilní s tiskovým profilem" - -#: src/slic3r/GUI/Tab.cpp:2940 -msgid "is not compatible with printer" -msgstr "není kompatibilní s tiskárnou" - -#: src/slic3r/GUI/MainFrame.cpp:658 +#: src/slic3r/GUI/MainFrame.cpp:955 src/slic3r/GUI/MainFrame.cpp:1275 msgid "Iso" msgstr "Izometrické" -#: src/slic3r/GUI/MainFrame.cpp:658 +#: src/slic3r/GUI/MainFrame.cpp:955 src/slic3r/GUI/MainFrame.cpp:1275 msgid "Iso View" msgstr "Izometrické zobrazení" -#: src/slic3r/GUI/Tab.cpp:964 +#: src/slic3r/GUI/Tab.cpp:1282 msgid "It can't be deleted or modified." msgstr "Nelze smazat nebo upravit." -#: src/slic3r/GUI/Plater.cpp:3321 +#: src/slic3r/GUI/Plater.cpp:3124 msgid "It is not allowed to change the file to reload" msgstr "Není možné změnit soubor, který má být znovu načten" -#: src/libslic3r/PrintConfig.cpp:974 +#: src/libslic3r/PrintConfig.cpp:1018 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 "Může být užitečné zvýšit proud motoru extruderu během sekvence výměny filamentu, aby se umožnily vysoké rychlosti zavádění filamentu a aby se překonal odpor při zavádění filamentu s ošklivě tvarovanou špičkou." -#: src/slic3r/GUI/GUI_App.cpp:1084 src/slic3r/GUI/Tab.cpp:2958 +#: src/slic3r/GUI/Tab.cpp:3413 +msgid "It's a last preset for this physical printer." +msgstr "Toto je poslední přednastavení pro tuto fyzickou tiskárnu." + +#: src/slic3r/GUI/GUI_App.cpp:1876 src/slic3r/GUI/Tab.cpp:3187 msgid "It's impossible to print multi-part object(s) with SLA technology." msgstr "SLA technologií nelze tisknout vícedílné objekty." -#: src/slic3r/GUI/Tab.cpp:2229 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:601 +msgid "It's not possible to delete the last related preset for the printer." +msgstr "Není možné odstranit poslední související přednastavení tiskárny." + +#: src/slic3r/GUI/Tab.cpp:2398 msgid "Jerk limits" msgstr "Ryv limity" -#: src/libslic3r/PrintConfig.cpp:1649 +#: src/libslic3r/PrintConfig.cpp:1757 msgid "Jitter" msgstr "Rozkmit (Jitter)" -#: src/slic3r/GUI/DoubleSlider.cpp:957 src/slic3r/GUI/DoubleSlider.cpp:1529 -#: src/slic3r/GUI/DoubleSlider.cpp:1651 +#: src/slic3r/GUI/DoubleSlider.cpp:1077 src/slic3r/GUI/DoubleSlider.cpp:1721 +#: src/slic3r/GUI/DoubleSlider.cpp:1852 src/slic3r/GUI/DoubleSlider.cpp:1856 msgid "Jump to height" msgstr "Přechod do výšky" -#: src/slic3r/GUI/DoubleSlider.cpp:955 +#: src/slic3r/GUI/DoubleSlider.cpp:1075 #, 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/libslic3r/PrintConfig.cpp:566 +#: 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" + +#: src/slic3r/GUI/SavePresetDialog.cpp:315 +msgid "Just switch to \"%1%\" preset" +msgstr "Pouze se přepnout do profilu \"%1%\"" + +#: src/libslic3r/PrintConfig.cpp:602 msgid "Keep fan always on" msgstr "Ventilátor vždy zapnutý" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:169 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:171 msgid "Keep lower part" msgstr "Zachovat spodní část" -#: src/slic3r/GUI/GLCanvas3D.cpp:304 +#: src/slic3r/GUI/GLCanvas3D.cpp:290 msgid "Keep min" msgstr "Zachovat minima" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:168 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:170 msgid "Keep upper part" msgstr "Zachovat horní část" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:41 src/slic3r/GUI/MainFrame.cpp:708 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:37 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:39 src/slic3r/GUI/MainFrame.cpp:941 +#: src/slic3r/GUI/MainFrame.cpp:1332 msgid "Keyboard Shortcuts" msgstr "Klávesové zkratky" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:245 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:259 msgid "Keyboard shortcuts" msgstr "Klávesové zkratky" -#: src/libslic3r/PrintConfig.cpp:2498 +#: src/libslic3r/PrintConfig.cpp:2641 msgid "kg" msgstr "kg" -#: src/libslic3r/PrintConfig.cpp:965 +#: src/libslic3r/PrintConfig.cpp:1009 msgid "Label objects" msgstr "Označování objektů" -#: src/libslic3r/PrintConfig.cpp:2399 +#: src/libslic3r/PrintConfig.cpp:2542 msgid "Landscape" msgstr "Orientace na šířku" -#: src/slic3r/GUI/GUI_App.cpp:629 +#: src/slic3r/GUI/GUI_App.cpp:1295 msgid "Language" msgstr "Jazyk" -#: src/slic3r/GUI/GUI_App.cpp:885 +#: src/slic3r/GUI/GUI_App.cpp:1605 src/slic3r/GUI/GUI_App.cpp:1614 msgid "Language selection" msgstr "Výběr jazyka" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2140 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2242 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2307 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2408 msgid "Last instance of an object cannot be deleted." msgstr "Poslední instanci objektu nelze odstranit." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3418 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3881 msgid "Layer" msgstr "Vrstva" -#: src/slic3r/GUI/ConfigManipulation.cpp:49 -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:27 src/slic3r/GUI/Tab.cpp:1049 +#: src/slic3r/GUI/ConfigManipulation.cpp:48 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:29 src/slic3r/GUI/Tab.cpp:1371 #: src/libslic3r/PrintConfig.cpp:71 msgid "Layer height" msgstr "Výška vrstvy" -#: src/libslic3r/Print.cpp:1427 +#: src/libslic3r/Print.cpp:1453 msgid "Layer height can't be greater than nozzle diameter" msgstr "Výška vrstvy nemůže být větší než je průměr trysky" -#: src/slic3r/GUI/Tab.cpp:2362 +#: src/slic3r/GUI/Tab.cpp:2531 msgid "Layer height limits" msgstr "Výškové limity vrstvy" -#: src/slic3r/GUI/ConfigWizard.cpp:2015 -msgid "Layer height:" -msgstr "Výška vrstvy:" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:2488 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2880 msgid "Layer range Settings to modify" msgstr "Nastavení pro vrstvy v rozsahu" #: src/slic3r/GUI/ExtruderSequenceDialog.cpp:52 -#: src/libslic3r/PrintConfig.cpp:362 src/libslic3r/PrintConfig.cpp:994 -#: src/libslic3r/PrintConfig.cpp:1505 src/libslic3r/PrintConfig.cpp:1690 -#: src/libslic3r/PrintConfig.cpp:1750 src/libslic3r/PrintConfig.cpp:1930 -#: src/libslic3r/PrintConfig.cpp:1976 +#: src/libslic3r/PrintConfig.cpp:396 src/libslic3r/PrintConfig.cpp:1038 +#: src/libslic3r/PrintConfig.cpp:1613 src/libslic3r/PrintConfig.cpp:1798 +#: src/libslic3r/PrintConfig.cpp:1865 src/libslic3r/PrintConfig.cpp:2072 +#: src/libslic3r/PrintConfig.cpp:2118 msgid "layers" msgstr "vrstva(y)" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:67 src/slic3r/GUI/Tab.cpp:3512 -#: src/slic3r/GUI/Tab.cpp:3600 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:69 src/slic3r/GUI/Tab.cpp:3928 +#: src/slic3r/GUI/Tab.cpp:4010 msgid "Layers" msgstr "Vrstvy" -#: src/slic3r/GUI/Tab.cpp:1048 src/slic3r/GUI/Tab.cpp:3598 +#: src/slic3r/GUI/Tab.cpp:1370 src/slic3r/GUI/Tab.cpp:4008 msgid "Layers and perimeters" msgstr "Vrstvy a perimetry" -#: src/slic3r/GUI/GUI_ObjectList.cpp:34 src/slic3r/GUI/GUI_ObjectList.cpp:95 -#: src/slic3r/GUI/GUI_ObjectList.cpp:613 src/libslic3r/PrintConfig.cpp:72 -#: src/libslic3r/PrintConfig.cpp:175 src/libslic3r/PrintConfig.cpp:184 -#: src/libslic3r/PrintConfig.cpp:408 src/libslic3r/PrintConfig.cpp:470 -#: src/libslic3r/PrintConfig.cpp:478 src/libslic3r/PrintConfig.cpp:890 -#: src/libslic3r/PrintConfig.cpp:1075 src/libslic3r/PrintConfig.cpp:1374 -#: src/libslic3r/PrintConfig.cpp:1441 src/libslic3r/PrintConfig.cpp:1622 -#: src/libslic3r/PrintConfig.cpp:2074 src/libslic3r/PrintConfig.cpp:2133 -#: src/libslic3r/PrintConfig.cpp:2142 +#: 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:209 src/libslic3r/PrintConfig.cpp:218 +#: src/libslic3r/PrintConfig.cpp:442 src/libslic3r/PrintConfig.cpp:506 +#: src/libslic3r/PrintConfig.cpp:514 src/libslic3r/PrintConfig.cpp:932 +#: src/libslic3r/PrintConfig.cpp:1119 src/libslic3r/PrintConfig.cpp:1482 +#: src/libslic3r/PrintConfig.cpp:1549 src/libslic3r/PrintConfig.cpp:1730 +#: src/libslic3r/PrintConfig.cpp:2217 src/libslic3r/PrintConfig.cpp:2276 +#: src/libslic3r/PrintConfig.cpp:2285 msgid "Layers and Perimeters" msgstr "Vrstvy a perimetry" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:222 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:225 msgid "Layers Slider" msgstr "Posuvníky" -#: src/slic3r/GUI/OptionsGroup.cpp:258 +#: src/slic3r/GUI/OptionsGroup.cpp:293 msgctxt "Layers" msgid "Bottom" msgstr "Spodních" -#: src/slic3r/GUI/OptionsGroup.cpp:258 +#: src/slic3r/GUI/OptionsGroup.cpp:293 msgctxt "Layers" msgid "Top" msgstr "Vrchních" -#: src/slic3r/GUI/MainFrame.cpp:671 +#: src/slic3r/GUI/Preferences.cpp:440 +msgid "Layout Options" +msgstr "Možnosti rozložení" + +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:48 +msgid "Leaving Paint-on supports" +msgstr "Opuštění Malování podpěr" + +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:47 +msgid "Leaving Seam painting" +msgstr "Opuštění Malování švu" + +#: src/slic3r/GUI/MainFrame.cpp:968 src/slic3r/GUI/MainFrame.cpp:1288 msgid "Left" msgstr "Zleva" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1363 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1366 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1367 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1210 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1213 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1214 msgid "Left click" msgstr "Levý klik" -#: src/slic3r/GUI/GLCanvas3D.cpp:237 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:46 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:29 +msgid "Left mouse button" +msgstr "Levé tlačítko myši" + +#: src/slic3r/GUI/GLCanvas3D.cpp:233 msgid "Left mouse button:" msgstr "Levé tlačítko myši:" -#: src/slic3r/GUI/MainFrame.cpp:671 +#: src/slic3r/GUI/MainFrame.cpp:968 src/slic3r/GUI/MainFrame.cpp:1288 msgid "Left View" msgstr "Pohled zleva" -#: src/slic3r/GUI/GUI_Preview.cpp:257 +#: src/slic3r/GUI/GUI_Preview.cpp:339 msgid "Legend" msgstr "Legenda" -#: src/libslic3r/PrintConfig.cpp:1543 src/libslic3r/PrintConfig.cpp:1551 +#: src/slic3r/GUI/GUI_Preview.cpp:1480 +msgid "Legend/Estimated printing time" +msgstr "Legenda / Odhadovaný čas tisku" + +#: src/libslic3r/PrintConfig.cpp:1651 src/libslic3r/PrintConfig.cpp:1659 msgid "Length" msgstr "Vzdálenost" -#: src/libslic3r/PrintConfig.cpp:328 +#: src/libslic3r/PrintConfig.cpp:362 msgid "Length of the cooling tube to limit space for cooling moves inside it." msgstr "Délka kovové trubičky určené pro ochlazení a zformování filamentu po vytažení z extruderu." #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:129 +#: src/slic3r/GUI/AboutDialog.cpp:141 msgid "License agreements of all following programs (libraries) are part of application license agreement" msgstr "Licenční ujednání všech následujících programů (knihoven) je součástí licenční smlouvy" -#: src/libslic3r/PrintConfig.cpp:1561 +#: src/libslic3r/PrintConfig.cpp:1669 msgid "Lift Z" msgstr "Zvednout Z" -#: src/libslic3r/PrintConfig.cpp:848 +#: src/libslic3r/PrintConfig.cpp:886 msgid "Line" msgstr "Čára" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1427 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1558 msgid "Load" msgstr "Načíst" -#: src/slic3r/GUI/MainFrame.cpp:460 +#: src/slic3r/GUI/MainFrame.cpp:1042 msgid "Load a model" msgstr "Načíst model" -#: src/libslic3r/PrintConfig.cpp:3505 +#: src/slic3r/GUI/MainFrame.cpp:1046 +msgid "Load an model saved with imperial units" +msgstr "Načíst jako model v imperiálních jednotkách" + +#: src/slic3r/GUI/MainFrame.cpp:1058 +msgid "Load an SL1 archive" +msgstr "Načíst SL1 archiv" + +#: src/libslic3r/PrintConfig.cpp:3710 msgid "Load and store settings at the given directory. This is useful for maintaining different profiles or including configurations from a network storage." msgstr "Načtěte a uložte nastavení z/do daného adresáře. To je užitečné pro udržování různých profilů nebo konfigurací ze síťového úložiště." -#: src/libslic3r/PrintConfig.cpp:3489 +#: src/libslic3r/PrintConfig.cpp:3688 msgid "Load config file" msgstr "Načíst konfigurační soubor" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:120 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:113 msgid "Load Config from ini/amf/3mf/gcode and merge" msgstr "Načíst konfiguraci zesouboru ini/amf/3mf/gcode a sloučit" -#: src/slic3r/GUI/MainFrame.cpp:467 +#: src/slic3r/GUI/MainFrame.cpp:1058 msgid "Load configuration from project file" msgstr "Načíst konfiguraci z projektu" -#: src/libslic3r/PrintConfig.cpp:3490 +#: src/libslic3r/PrintConfig.cpp:3689 msgid "Load configuration from the specified file. It can be used more than once to load options from multiple files." msgstr "Načíst konfiguraci ze zadaného souboru. Může být použito vícekrát než jednou pro načtení z více souborů." -#: src/slic3r/GUI/MainFrame.cpp:464 +#: src/slic3r/GUI/MainFrame.cpp:1055 msgid "Load exported configuration file" msgstr "Načíst exportovaný konfigurační soubor" -#: src/slic3r/GUI/Plater.cpp:1395 -msgid "Load File" -msgstr "Načtení souboru" - -#: src/slic3r/GUI/Plater.cpp:1399 -msgid "Load Files" -msgstr "Naštení souborů" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1879 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2038 msgid "Load Part" msgstr "Přidání části" -#: src/slic3r/GUI/MainFrame.cpp:471 +#: src/slic3r/GUI/MainFrame.cpp:1062 msgid "Load presets from a bundle" msgstr "Načíst přednastavení z balíku" -#: src/slic3r/GUI/Plater.cpp:4575 +#: src/slic3r/GUI/Plater.cpp:4627 msgid "Load Project" msgstr "Načíst Projekt" -#: src/slic3r/GUI/BedShapeDialog.cpp:102 +#: src/slic3r/GUI/BedShapeDialog.cpp:243 msgid "Load shape from STL..." msgstr "Načíst tvar ze souboru STL…" -#: src/slic3r/GUI/BedShapeDialog.cpp:182 src/slic3r/GUI/BedShapeDialog.cpp:261 +#: src/slic3r/GUI/BedShapeDialog.cpp:325 src/slic3r/GUI/BedShapeDialog.cpp:405 msgid "Load..." msgstr "Načíst..." @@ -4075,19 +4717,27 @@ msgstr "Načíst..." msgid "loaded" msgstr "zaváděn" -#: src/slic3r/GUI/Plater.cpp:2426 +#: src/slic3r/GUI/Plater.cpp:2388 msgid "Loaded" msgstr "Načteno" -#: src/slic3r/GUI/Plater.cpp:2273 +#: src/slic3r/GUI/Plater.cpp:2216 msgid "Loading" msgstr "Načítání" -#: src/slic3r/GUI/GUI_App.cpp:474 +#: src/slic3r/GUI/GUI_App.cpp:797 +msgid "Loading configuration" +msgstr "Načítání konfigurace" + +#: src/slic3r/GUI/Plater.cpp:2226 +msgid "Loading file" +msgstr "Načítání souboru" + +#: src/slic3r/GUI/GUI_App.cpp:1125 msgid "Loading of a mode view" msgstr "Načítání režimu zobrazení" -#: src/slic3r/GUI/GUI_App.cpp:466 +#: src/slic3r/GUI/GUI_App.cpp:1120 msgid "Loading of current presets" msgstr "Načítání aktuálních předvoleb" @@ -4096,101 +4746,117 @@ msgstr "Načítání aktuálních předvoleb" msgid "Loading repaired model" msgstr "Načítaní opraveného modelu" -#: src/libslic3r/PrintConfig.cpp:607 +#: src/libslic3r/PrintConfig.cpp:643 msgid "Loading speed" msgstr "Rychlost zavádění" -#: src/libslic3r/PrintConfig.cpp:615 +#: src/libslic3r/PrintConfig.cpp:651 msgid "Loading speed at the start" msgstr "Počáteční rychlost zavádění" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:63 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:106 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:69 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:112 msgid "Local coordinates" msgstr "Lokální souřadnice" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:48 msgid "Lock supports under new islands" msgstr "Ukotvi podpěry pod novými ostrůvky" -#: src/slic3r/GUI/Tab.cpp:3252 +#: src/slic3r/GUI/Tab.cpp:3689 msgid "LOCKED LOCK" msgstr "ZAMČENÝ ZÁMEK" -#: src/slic3r/GUI/Tab.cpp:3280 +#: src/slic3r/GUI/Tab.cpp:3717 msgid "LOCKED LOCK icon indicates that the settings are the same as the system (or default) values for the current option group" msgstr "Ikona ZAMKNUTÉHO ZÁMKU indikuje, že nastavení jsou stejná jako systémové (nebo výchozí) hodnoty pro aktuální skupinu nastavení" -#: src/slic3r/GUI/Tab.cpp:3296 +#: src/slic3r/GUI/Tab.cpp:3733 msgid "LOCKED LOCK icon indicates that the value is the same as the system (or default) value." msgstr "Ikona ZAMKNUTÉHO ZÁMKU indikuje, že hodnota je shodná se systémovou (výchozí) hodnotou." -#: src/libslic3r/PrintConfig.cpp:3508 +#: src/libslic3r/PrintConfig.cpp:3713 msgid "Logging level" msgstr "Úroveň logování" -#: src/libslic3r/PrintConfig.cpp:1695 +#: src/libslic3r/PrintConfig.cpp:1810 msgid "Loops (minimum)" msgstr "Smyček (minimálně)" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:206 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:208 msgid "Lower Layer" msgstr "Nižší vrstva" -#: src/slic3r/GUI/Tab.cpp:2188 src/slic3r/GUI/Tab.cpp:2273 -#: src/libslic3r/PrintConfig.cpp:1129 src/libslic3r/PrintConfig.cpp:1146 -#: src/libslic3r/PrintConfig.cpp:1163 src/libslic3r/PrintConfig.cpp:1179 -#: src/libslic3r/PrintConfig.cpp:1189 src/libslic3r/PrintConfig.cpp:1199 -#: src/libslic3r/PrintConfig.cpp:1209 +#: src/slic3r/GUI/Tab.cpp:2346 src/slic3r/GUI/Tab.cpp:2442 +#: src/libslic3r/PrintConfig.cpp:1202 src/libslic3r/PrintConfig.cpp:1237 +#: src/libslic3r/PrintConfig.cpp:1254 src/libslic3r/PrintConfig.cpp:1271 +#: src/libslic3r/PrintConfig.cpp:1287 src/libslic3r/PrintConfig.cpp:1297 +#: src/libslic3r/PrintConfig.cpp:1307 src/libslic3r/PrintConfig.cpp:1317 msgid "Machine limits" msgstr "Limity stroje" -#: src/slic3r/GUI/Plater.cpp:166 +#: src/slic3r/GUI/Tab.cpp:3667 +msgid "Machine limits are not set, therefore the print time estimate may not be accurate." +msgstr "Nejsou nastaveny limity zařízení, proto nemusí být odhad doby tisku přesný." + +#: src/slic3r/GUI/Tab.cpp:3660 +msgid "Machine limits will be emitted to G-code and used to estimate print time." +msgstr "Limity stroje budou emitovány do G-codu a budou použity k odhadu doby tisku." + +#: src/slic3r/GUI/Tab.cpp:3663 +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 "Limity stroje NEBUDOU aplikovány do G-codu, ale budou použity k odhadu doby tisku, což však nemusí být přesné, protože tiskárna může použít jinou sadu limitů." + +#: src/slic3r/GUI/Plater.cpp:172 msgid "Manifold" msgstr "Model OK" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:57 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:56 msgid "Manual editing" msgstr "Manuální úprava" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:180 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:214 msgid "Masked SLA file exported to %1%" msgstr "Soubor pro SLA byl exportován do %1%" -#: src/slic3r/GUI/MainFrame.cpp:752 +#: src/slic3r/GUI/MainFrame.cpp:1451 msgid "Mate&rial Settings Tab" -msgstr "Panel nastavení mate&riálu" +msgstr "Panel Nastavení mate&riálu" -#: src/slic3r/GUI/Tab.cpp:3478 src/slic3r/GUI/Tab.cpp:3480 +#: src/slic3r/GUI/Tab.cpp:3894 src/slic3r/GUI/Tab.cpp:3896 msgid "Material" msgstr "Materiál" -#: src/slic3r/GUI/Tab.hpp:416 +#: src/slic3r/GUI/Tab.hpp:486 msgid "Material Settings" msgstr "Nastavení materiálu" -#: src/slic3r/GUI/Plater.cpp:163 +#: src/slic3r/GUI/GLCanvas3D.cpp:4304 src/slic3r/GUI/GLCanvas3D.cpp:4940 +msgid "Material Settings Tab" +msgstr "Panel Nastavení materiálu" + +#: src/slic3r/GUI/Plater.cpp:169 msgid "Materials" msgstr "Materiálů" -#: src/libslic3r/PrintConfig.cpp:1217 src/libslic3r/PrintConfig.cpp:1226 +#: src/libslic3r/PrintConfig.cpp:1325 src/libslic3r/PrintConfig.cpp:1334 msgid "Max" msgstr "Maximum" -#: src/libslic3r/PrintConfig.cpp:2734 +#: src/libslic3r/PrintConfig.cpp:2898 msgid "Max bridge length" msgstr "Maximální délka mostu" -#: src/libslic3r/PrintConfig.cpp:2658 +#: src/libslic3r/PrintConfig.cpp:2812 msgid "Max bridges on a pillar" msgstr "Max počet mostů na sloupu" -#: src/libslic3r/PrintConfig.cpp:2822 +#: src/libslic3r/PrintConfig.cpp:2986 msgid "Max merge distance" msgstr "Maximální vzdálenost pro sloučení" -#: src/libslic3r/PrintConfig.cpp:2743 +#: src/libslic3r/PrintConfig.cpp:2907 msgid "Max pillar linking distance" msgstr "Max. vzdálenost propojení podpěr" @@ -4198,7 +4864,7 @@ msgstr "Max. vzdálenost propojení podpěr" msgid "Max print height" msgstr "Maximální výška tisku" -#: src/libslic3r/PrintConfig.cpp:1237 +#: src/libslic3r/PrintConfig.cpp:1345 msgid "Max print speed" msgstr "Maximální rychlost tisku" @@ -4206,171 +4872,189 @@ msgstr "Maximální rychlost tisku" msgid "max PrusaSlicer version" msgstr "max PrusaSlicer verze" -#: src/libslic3r/PrintConfig.cpp:1268 +#: src/libslic3r/PrintConfig.cpp:1376 msgid "Max volumetric slope negative" msgstr "Maximální negativní objemový sklon" -#: src/libslic3r/PrintConfig.cpp:1257 +#: src/libslic3r/PrintConfig.cpp:1365 msgid "Max volumetric slope positive" msgstr "Maximální pozitivní objemový sklon" -#: src/libslic3r/PrintConfig.cpp:597 src/libslic3r/PrintConfig.cpp:1247 +#: src/libslic3r/PrintConfig.cpp:633 src/libslic3r/PrintConfig.cpp:1355 msgid "Max volumetric speed" msgstr "Maximální objemová rychlost" -#: src/libslic3r/PrintConfig.cpp:2268 +#: src/libslic3r/PrintConfig.cpp:2411 msgid "Maximal bridging distance" msgstr "Maximální vzdálenost přemostění" -#: src/libslic3r/PrintConfig.cpp:2269 +#: src/libslic3r/PrintConfig.cpp:2412 msgid "Maximal distance between supports on sparse infill sections." msgstr "Maximální vzdálenost mezi podpěrami u částí s řídkou výplní." -#: src/libslic3r/PrintConfig.cpp:1145 +#: src/libslic3r/PrintConfig.cpp:1253 msgid "Maximum acceleration E" msgstr "Maximální zrychlení E" -#: src/libslic3r/PrintConfig.cpp:1151 +#: src/libslic3r/PrintConfig.cpp:1259 msgid "Maximum acceleration of the E axis" msgstr "Maximální zrychlení osy E" -#: src/libslic3r/PrintConfig.cpp:1148 +#: src/libslic3r/PrintConfig.cpp:1256 msgid "Maximum acceleration of the X axis" msgstr "Maximální zrychlení osy X" -#: src/libslic3r/PrintConfig.cpp:1149 +#: src/libslic3r/PrintConfig.cpp:1257 msgid "Maximum acceleration of the Y axis" msgstr "Maximální zrychlení osy Y" -#: src/libslic3r/PrintConfig.cpp:1150 +#: src/libslic3r/PrintConfig.cpp:1258 msgid "Maximum acceleration of the Z axis" msgstr "Maximální zrychlení osy Z" -#: src/libslic3r/PrintConfig.cpp:1198 +#: src/libslic3r/PrintConfig.cpp:1306 msgid "Maximum acceleration when extruding" msgstr "Maximální zrychlení při extruzi" -#: src/libslic3r/PrintConfig.cpp:1200 +#: src/libslic3r/PrintConfig.cpp:1308 msgid "Maximum acceleration when extruding (M204 S)" msgstr "Maximální zrychlení při extruzi (M204 S)" -#: src/libslic3r/PrintConfig.cpp:1208 +#: src/libslic3r/PrintConfig.cpp:1316 msgid "Maximum acceleration when retracting" msgstr "Maximální zrychlení při retrakci" -#: src/libslic3r/PrintConfig.cpp:1210 +#: src/libslic3r/PrintConfig.cpp:1318 msgid "Maximum acceleration when retracting (M204 T)" msgstr "Maximální zrychlení při retrakci (M204 T)" -#: src/libslic3r/PrintConfig.cpp:1142 +#: src/libslic3r/PrintConfig.cpp:1250 msgid "Maximum acceleration X" msgstr "Maximální zrychlení X" -#: src/libslic3r/PrintConfig.cpp:1143 +#: src/libslic3r/PrintConfig.cpp:1251 msgid "Maximum acceleration Y" msgstr "Maximální zrychlení Y" -#: src/libslic3r/PrintConfig.cpp:1144 +#: src/libslic3r/PrintConfig.cpp:1252 msgid "Maximum acceleration Z" msgstr "Maximální zrychlení Z" -#: src/slic3r/GUI/Tab.cpp:2222 +#: src/slic3r/GUI/Tab.cpp:2391 msgid "Maximum accelerations" msgstr "Maximální zrychlení" -#: src/libslic3r/PrintConfig.cpp:2533 src/libslic3r/PrintConfig.cpp:2534 +#: src/libslic3r/PrintConfig.cpp:2676 src/libslic3r/PrintConfig.cpp:2677 msgid "Maximum exposure time" msgstr "Maximální doba osvitu" -#: src/libslic3r/PrintConfig.cpp:1128 +#: src/libslic3r/PrintConfig.cpp:1236 msgid "Maximum feedrate E" msgstr "Maximální rychlost posuvu E" -#: src/libslic3r/PrintConfig.cpp:1134 +#: src/libslic3r/PrintConfig.cpp:1242 msgid "Maximum feedrate of the E axis" msgstr "Maximální rychlost posuvu osy E" -#: src/libslic3r/PrintConfig.cpp:1131 +#: src/libslic3r/PrintConfig.cpp:1239 msgid "Maximum feedrate of the X axis" msgstr "Maximální rychlost posuvu osy X" -#: src/libslic3r/PrintConfig.cpp:1132 +#: src/libslic3r/PrintConfig.cpp:1240 msgid "Maximum feedrate of the Y axis" msgstr "Maximální rychlost posuvu osy Y" -#: src/libslic3r/PrintConfig.cpp:1133 +#: src/libslic3r/PrintConfig.cpp:1241 msgid "Maximum feedrate of the Z axis" msgstr "Maximální rychlost posuvu osy Z" -#: src/libslic3r/PrintConfig.cpp:1125 +#: src/libslic3r/PrintConfig.cpp:1233 msgid "Maximum feedrate X" msgstr "Maximální rychlost posuvu X" -#: src/libslic3r/PrintConfig.cpp:1126 +#: src/libslic3r/PrintConfig.cpp:1234 msgid "Maximum feedrate Y" msgstr "Maximální rychlost posuvu Y" -#: src/libslic3r/PrintConfig.cpp:1127 +#: src/libslic3r/PrintConfig.cpp:1235 msgid "Maximum feedrate Z" msgstr "Maximální rychlost posuvu Z" -#: src/slic3r/GUI/Tab.cpp:2217 +#: src/slic3r/GUI/Tab.cpp:2386 msgid "Maximum feedrates" msgstr "Maximální rychlosti posuvu" -#: src/libslic3r/PrintConfig.cpp:2556 src/libslic3r/PrintConfig.cpp:2557 +#: src/libslic3r/PrintConfig.cpp:2699 src/libslic3r/PrintConfig.cpp:2700 msgid "Maximum initial exposure time" msgstr "Maximální doba počátečního osvitu" -#: src/libslic3r/PrintConfig.cpp:1162 +#: src/libslic3r/PrintConfig.cpp:1270 msgid "Maximum jerk E" msgstr "Maximální ryv E" -#: src/libslic3r/PrintConfig.cpp:1168 +#: src/libslic3r/PrintConfig.cpp:1276 msgid "Maximum jerk of the E axis" msgstr "Maximální ryv (jerk) osy E" -#: src/libslic3r/PrintConfig.cpp:1165 +#: src/libslic3r/PrintConfig.cpp:1273 msgid "Maximum jerk of the X axis" msgstr "Maximální ryv (jerk) osy X" -#: src/libslic3r/PrintConfig.cpp:1166 +#: src/libslic3r/PrintConfig.cpp:1274 msgid "Maximum jerk of the Y axis" msgstr "Maximální ryv (jerk) osy Y" -#: src/libslic3r/PrintConfig.cpp:1167 +#: src/libslic3r/PrintConfig.cpp:1275 msgid "Maximum jerk of the Z axis" msgstr "Maximální ryv (jerk) osy Z" -#: src/libslic3r/PrintConfig.cpp:1159 +#: src/libslic3r/PrintConfig.cpp:1267 msgid "Maximum jerk X" msgstr "Maximální ryv X" -#: src/libslic3r/PrintConfig.cpp:1160 +#: src/libslic3r/PrintConfig.cpp:1268 msgid "Maximum jerk Y" msgstr "Maximální ryv Y" -#: src/libslic3r/PrintConfig.cpp:1161 +#: src/libslic3r/PrintConfig.cpp:1269 msgid "Maximum jerk Z" msgstr "Maximální ryv Z" -#: src/libslic3r/PrintConfig.cpp:2660 +#: src/libslic3r/PrintConfig.cpp:2814 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 "Maximální počet mostů, které mohou být umístěny na podpěrný sloup. Mosty drží hroty podpěr a připojují se ke sloupům jako malé větve." -#: src/libslic3r/PrintConfig.cpp:598 +#: src/libslic3r/PrintConfig.cpp:634 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 "Maximální povolený objem průtoku pro tento filament. Omezuje maximální rychlost průtoku pro tisk až na minimální rychlost průtoku pro tisk a filament. Zadejte nulu pro nastavení bez omezení." -#: src/libslic3r/PrintConfig.cpp:3442 +#: 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:3641 msgid "Merge" msgstr "Sloučit" -#: src/libslic3r/PrintConfig.cpp:2683 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2660 +msgid "Merge all parts to the one single object" +msgstr "Sloučit všechny části do jednoho jediného objektu" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1868 +msgid "Merge objects to the one multipart object" +msgstr "Sloučit objekty do jednoho vícedílného objektu" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1876 +msgid "Merge objects to the one single object" +msgstr "Sloučit objekty do jednoho jediného objektu" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2576 +msgid "Merged" +msgstr "Sloučení" + +#: src/libslic3r/PrintConfig.cpp:2847 msgid "Merging bridges or pillars into another pillars can increase the radius. Zero means no increase, one means full increase." msgstr "Sloučení mostů nebo podpěr do jiných podpěr může zvýšit poloměr. Hodnota 0 znamená žádné zvýšení, hodnota 1 znamená maximální zvýšení." -#: src/libslic3r/SLAPrintSteps.cpp:64 +#: src/libslic3r/SLAPrintSteps.cpp:65 msgid "Merging slices and calculating statistics" msgstr "Slučování tiskových vrstev a výpočet statistik" @@ -4378,15 +5062,15 @@ msgstr "Slučování tiskových vrstev a výpočet statistik" msgid "Mesh repair failed." msgstr "Oprava meshe selhala." -#: src/slic3r/GUI/DoubleSlider.cpp:1635 +#: src/slic3r/GUI/DoubleSlider.cpp:1831 msgid "Message for pause print on current layer (%1% mm)." msgstr "Zpráva při pozastavení tisku na aktuální vrstvě ve výšce (%1% mm)." -#: src/libslic3r/PrintConfig.cpp:1280 src/libslic3r/PrintConfig.cpp:1289 +#: src/libslic3r/PrintConfig.cpp:1388 src/libslic3r/PrintConfig.cpp:1397 msgid "Min" msgstr "Minimum" -#: src/libslic3r/PrintConfig.cpp:1298 +#: src/libslic3r/PrintConfig.cpp:1406 msgid "Min print speed" msgstr "Minimální rychlost tisku" @@ -4394,232 +5078,237 @@ msgstr "Minimální rychlost tisku" msgid "min PrusaSlicer version" msgstr "min PrusaSlicer verze" -#: src/libslic3r/PrintConfig.cpp:2772 +#: src/libslic3r/PrintConfig.cpp:2936 msgid "Minimal distance of the support points" msgstr "Minimální vzdálenost podpěrných bodů" -#: src/libslic3r/PrintConfig.cpp:1306 +#: src/libslic3r/PrintConfig.cpp:1414 msgid "Minimal filament extrusion length" msgstr "Minimální délka extruze filamentu" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:54 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:53 msgid "Minimal points distance" msgstr "Minimální vzdálenost bodů" -#: src/libslic3r/PrintConfig.cpp:667 +#: src/libslic3r/PrintConfig.cpp:703 msgid "Minimal purge on wipe tower" msgstr "Minimální vytlačený objem na čistící věži" -#: src/libslic3r/PrintConfig.cpp:187 +#: src/libslic3r/PrintConfig.cpp:221 msgid "Minimum bottom shell thickness" msgstr "Minimální tloušťka spodní skořepiny" -#: src/slic3r/GUI/PresetHints.cpp:339 +#: src/slic3r/GUI/PresetHints.cpp:337 msgid "Minimum bottom shell thickness is %1% mm." msgstr "Minimální tloušťka spodní skořepiny je %1% mm." -#: src/libslic3r/PrintConfig.cpp:1512 +#: src/libslic3r/PrintConfig.cpp:1620 msgid "Minimum detail resolution, used to simplify the input file for speeding up the slicing job and reducing memory usage. High-resolution models often carry more detail than printers can render. Set to zero to disable any simplification and use full resolution from input." msgstr "Minimální rozlišení detailů, které se používají pro zjednodušení vstupního souboru pro urychlení slicovací úlohy a snížení využití paměti. Modely s vysokým rozlišením často obsahují více detailů než tiskárny dokážou vykreslit. Nastavte na nulu, chcete-li zakázat jakékoli zjednodušení a použít vstup v plném rozlišení." -#: src/libslic3r/PrintConfig.cpp:2525 src/libslic3r/PrintConfig.cpp:2526 +#: src/libslic3r/PrintConfig.cpp:2668 src/libslic3r/PrintConfig.cpp:2669 msgid "Minimum exposure time" msgstr "Minimální doba osvitu" -#: src/libslic3r/PrintConfig.cpp:1178 +#: src/libslic3r/PrintConfig.cpp:1286 msgid "Minimum feedrate when extruding" msgstr "Minimální rychlosti posuvu během extruze" -#: src/libslic3r/PrintConfig.cpp:1180 +#: src/libslic3r/PrintConfig.cpp:1288 msgid "Minimum feedrate when extruding (M205 S)" msgstr "Minimální rychlosti posuvu během extruze (M205 S)" -#: src/slic3r/GUI/Tab.cpp:2234 +#: src/slic3r/GUI/Tab.cpp:2403 msgid "Minimum feedrates" msgstr "Minimální rychlosti posuvu" -#: src/libslic3r/PrintConfig.cpp:2548 src/libslic3r/PrintConfig.cpp:2549 +#: src/libslic3r/PrintConfig.cpp:2691 src/libslic3r/PrintConfig.cpp:2692 msgid "Minimum initial exposure time" msgstr "Minimální doba počátečního osvitu" -#: src/slic3r/GUI/Tab.cpp:1069 +#: src/slic3r/GUI/Tab.cpp:1391 msgid "Minimum shell thickness" msgstr "Minimální tloušťka skořepiny" -#: src/libslic3r/PrintConfig.cpp:1787 src/libslic3r/PrintConfig.cpp:1788 +#: src/libslic3r/PrintConfig.cpp:1902 src/libslic3r/PrintConfig.cpp:1903 msgid "Minimum thickness of a top / bottom shell" msgstr "Minimální tloušťka vrchní / spodní skořepiny" -#: src/libslic3r/PrintConfig.cpp:2146 +#: src/libslic3r/PrintConfig.cpp:2289 msgid "Minimum top shell thickness" msgstr "Minimální tloušťka vrchní skořepiny" -#: src/slic3r/GUI/PresetHints.cpp:320 +#: src/slic3r/GUI/PresetHints.cpp:318 msgid "Minimum top shell thickness is %1% mm." msgstr "Minimální tloušťka vrchní skořepiny je %1% mm." -#: src/libslic3r/PrintConfig.cpp:1522 +#: src/libslic3r/PrintConfig.cpp:1630 msgid "Minimum travel after retraction" msgstr "Minimální dráha extruderu po retrakci" -#: src/libslic3r/PrintConfig.cpp:1188 +#: src/libslic3r/PrintConfig.cpp:1296 msgid "Minimum travel feedrate" msgstr "Minimální rychlost při přesunu" -#: src/libslic3r/PrintConfig.cpp:1190 +#: src/libslic3r/PrintConfig.cpp:1298 msgid "Minimum travel feedrate (M205 T)" msgstr "Minimální rychlost při přesunu (M205 T)" -#: src/libslic3r/PrintConfig.cpp:2917 +#: src/libslic3r/PrintConfig.cpp:3081 msgid "Minimum wall thickness of a hollowed model." msgstr "Minimální tloušťka stěny dutého modelu." -#: src/libslic3r/PrintConfig.cpp:2449 +#: src/libslic3r/PrintConfig.cpp:2592 msgid "Minimum width of features to maintain when doing elephant foot compensation." msgstr "Minimální šířka prvků, které je třeba zachovat při provádění kompenzace rozplácnutí první vrstvy." -#: src/slic3r/GUI/Plater.cpp:4002 +#: src/slic3r/GUI/Plater.cpp:3922 msgid "Mirror" msgstr "Zrcadlit" -#: src/libslic3r/PrintConfig.cpp:2379 +#: src/libslic3r/PrintConfig.cpp:2522 msgid "Mirror horizontally" msgstr "Zrcadlit horizontálně" -#: src/slic3r/GUI/GLCanvas3D.cpp:2053 +#: src/slic3r/GUI/GLCanvas3D.cpp:2226 msgid "Mirror Object" msgstr "Zrcadlit Objekt" -#: src/slic3r/GUI/Plater.cpp:4002 +#: src/slic3r/GUI/Plater.cpp:3922 msgid "Mirror the selected object" msgstr "Zrcadlit vybraný objekt" -#: src/slic3r/GUI/Plater.cpp:3995 +#: src/slic3r/GUI/Plater.cpp:3915 msgid "Mirror the selected object along the X axis" msgstr "Zrcadlit rozměr vybraného objektu podél osy X" -#: src/slic3r/GUI/Plater.cpp:3997 +#: src/slic3r/GUI/Plater.cpp:3917 msgid "Mirror the selected object along the Y axis" msgstr "Zrcadlit rozměr vybraného objektu podél osy Y" -#: src/slic3r/GUI/Plater.cpp:3999 +#: src/slic3r/GUI/Plater.cpp:3919 msgid "Mirror the selected object along the Z axis" msgstr "Zrcadlit rozměr vybraného objektu podél osy Z" -#: src/libslic3r/PrintConfig.cpp:2386 +#: src/libslic3r/PrintConfig.cpp:2529 msgid "Mirror vertically" msgstr "Zrcadlit vertikálně" -#: src/slic3r/Utils/AstroBox.cpp:68 src/slic3r/Utils/OctoPrint.cpp:68 +#: src/slic3r/Utils/AstroBox.cpp:69 src/slic3r/Utils/OctoPrint.cpp:68 #, c-format msgid "Mismatched type of print host: %s" msgstr "Nesprávný typ tiskového serveru: % s" -#: src/libslic3r/ExtrusionEntity.cpp:323 +#: src/libslic3r/ExtrusionEntity.cpp:328 src/libslic3r/ExtrusionEntity.cpp:364 msgid "Mixed" msgstr "Smíšený" -#: src/libslic3r/PrintConfig.cpp:2491 +#: src/libslic3r/PrintConfig.cpp:2634 msgid "ml" msgstr "ml" -#: src/slic3r/GUI/BedShapeDialog.cpp:92 src/slic3r/GUI/ConfigWizard.cpp:218 -#: src/slic3r/GUI/ConfigWizard.cpp:970 src/slic3r/GUI/ConfigWizard.cpp:984 +#: src/slic3r/GUI/BedShapeDialog.cpp:129 src/slic3r/GUI/ConfigWizard.cpp:236 +#: src/slic3r/GUI/ConfigWizard.cpp:1336 src/slic3r/GUI/ConfigWizard.cpp:1350 #: src/slic3r/GUI/ExtruderSequenceDialog.cpp:87 -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:135 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:333 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:94 +#: src/slic3r/GUI/GCodeViewer.cpp:2183 src/slic3r/GUI/GCodeViewer.cpp:2189 +#: src/slic3r/GUI/GCodeViewer.cpp:2197 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:91 -#: src/libslic3r/PrintConfig.cpp:122 src/libslic3r/PrintConfig.cpp:188 -#: src/libslic3r/PrintConfig.cpp:246 src/libslic3r/PrintConfig.cpp:321 -#: src/libslic3r/PrintConfig.cpp:329 src/libslic3r/PrintConfig.cpp:379 -#: src/libslic3r/PrintConfig.cpp:505 src/libslic3r/PrintConfig.cpp:516 -#: src/libslic3r/PrintConfig.cpp:534 src/libslic3r/PrintConfig.cpp:712 -#: src/libslic3r/PrintConfig.cpp:1231 src/libslic3r/PrintConfig.cpp:1292 -#: src/libslic3r/PrintConfig.cpp:1310 src/libslic3r/PrintConfig.cpp:1328 -#: src/libslic3r/PrintConfig.cpp:1384 src/libslic3r/PrintConfig.cpp:1394 -#: src/libslic3r/PrintConfig.cpp:1516 src/libslic3r/PrintConfig.cpp:1524 -#: src/libslic3r/PrintConfig.cpp:1565 src/libslic3r/PrintConfig.cpp:1573 -#: src/libslic3r/PrintConfig.cpp:1583 src/libslic3r/PrintConfig.cpp:1591 -#: src/libslic3r/PrintConfig.cpp:1599 src/libslic3r/PrintConfig.cpp:1682 -#: src/libslic3r/PrintConfig.cpp:1914 src/libslic3r/PrintConfig.cpp:1985 -#: src/libslic3r/PrintConfig.cpp:2019 src/libslic3r/PrintConfig.cpp:2147 -#: src/libslic3r/PrintConfig.cpp:2226 src/libslic3r/PrintConfig.cpp:2233 -#: src/libslic3r/PrintConfig.cpp:2240 src/libslic3r/PrintConfig.cpp:2270 -#: src/libslic3r/PrintConfig.cpp:2280 src/libslic3r/PrintConfig.cpp:2290 -#: src/libslic3r/PrintConfig.cpp:2450 src/libslic3r/PrintConfig.cpp:2484 -#: src/libslic3r/PrintConfig.cpp:2623 src/libslic3r/PrintConfig.cpp:2632 -#: src/libslic3r/PrintConfig.cpp:2641 src/libslic3r/PrintConfig.cpp:2651 -#: src/libslic3r/PrintConfig.cpp:2695 src/libslic3r/PrintConfig.cpp:2705 -#: src/libslic3r/PrintConfig.cpp:2717 src/libslic3r/PrintConfig.cpp:2737 -#: src/libslic3r/PrintConfig.cpp:2747 src/libslic3r/PrintConfig.cpp:2757 -#: src/libslic3r/PrintConfig.cpp:2775 src/libslic3r/PrintConfig.cpp:2790 -#: src/libslic3r/PrintConfig.cpp:2804 src/libslic3r/PrintConfig.cpp:2815 -#: src/libslic3r/PrintConfig.cpp:2828 src/libslic3r/PrintConfig.cpp:2873 -#: src/libslic3r/PrintConfig.cpp:2883 src/libslic3r/PrintConfig.cpp:2892 -#: src/libslic3r/PrintConfig.cpp:2902 src/libslic3r/PrintConfig.cpp:2918 -#: src/libslic3r/PrintConfig.cpp:2942 +#: src/libslic3r/PrintConfig.cpp:82 src/libslic3r/PrintConfig.cpp:93 +#: src/libslic3r/PrintConfig.cpp:124 src/libslic3r/PrintConfig.cpp:222 +#: src/libslic3r/PrintConfig.cpp:280 src/libslic3r/PrintConfig.cpp:355 +#: src/libslic3r/PrintConfig.cpp:363 src/libslic3r/PrintConfig.cpp:413 +#: src/libslic3r/PrintConfig.cpp:541 src/libslic3r/PrintConfig.cpp:552 +#: src/libslic3r/PrintConfig.cpp:570 src/libslic3r/PrintConfig.cpp:748 +#: src/libslic3r/PrintConfig.cpp:1158 src/libslic3r/PrintConfig.cpp:1339 +#: src/libslic3r/PrintConfig.cpp:1400 src/libslic3r/PrintConfig.cpp:1418 +#: src/libslic3r/PrintConfig.cpp:1436 src/libslic3r/PrintConfig.cpp:1492 +#: src/libslic3r/PrintConfig.cpp:1502 src/libslic3r/PrintConfig.cpp:1624 +#: src/libslic3r/PrintConfig.cpp:1632 src/libslic3r/PrintConfig.cpp:1673 +#: src/libslic3r/PrintConfig.cpp:1681 src/libslic3r/PrintConfig.cpp:1691 +#: src/libslic3r/PrintConfig.cpp:1699 src/libslic3r/PrintConfig.cpp:1707 +#: src/libslic3r/PrintConfig.cpp:1790 src/libslic3r/PrintConfig.cpp:2056 +#: src/libslic3r/PrintConfig.cpp:2127 src/libslic3r/PrintConfig.cpp:2161 +#: src/libslic3r/PrintConfig.cpp:2290 src/libslic3r/PrintConfig.cpp:2369 +#: src/libslic3r/PrintConfig.cpp:2376 src/libslic3r/PrintConfig.cpp:2383 +#: src/libslic3r/PrintConfig.cpp:2413 src/libslic3r/PrintConfig.cpp:2423 +#: src/libslic3r/PrintConfig.cpp:2433 src/libslic3r/PrintConfig.cpp:2593 +#: src/libslic3r/PrintConfig.cpp:2627 src/libslic3r/PrintConfig.cpp:2766 +#: src/libslic3r/PrintConfig.cpp:2775 src/libslic3r/PrintConfig.cpp:2784 +#: src/libslic3r/PrintConfig.cpp:2794 src/libslic3r/PrintConfig.cpp:2859 +#: src/libslic3r/PrintConfig.cpp:2869 src/libslic3r/PrintConfig.cpp:2881 +#: src/libslic3r/PrintConfig.cpp:2901 src/libslic3r/PrintConfig.cpp:2911 +#: src/libslic3r/PrintConfig.cpp:2921 src/libslic3r/PrintConfig.cpp:2939 +#: src/libslic3r/PrintConfig.cpp:2954 src/libslic3r/PrintConfig.cpp:2968 +#: src/libslic3r/PrintConfig.cpp:2979 src/libslic3r/PrintConfig.cpp:2992 +#: src/libslic3r/PrintConfig.cpp:3037 src/libslic3r/PrintConfig.cpp:3047 +#: src/libslic3r/PrintConfig.cpp:3056 src/libslic3r/PrintConfig.cpp:3066 +#: src/libslic3r/PrintConfig.cpp:3082 src/libslic3r/PrintConfig.cpp:3106 msgid "mm" msgstr "mm" -#: src/libslic3r/PrintConfig.cpp:1547 src/libslic3r/PrintConfig.cpp:1556 +#: src/libslic3r/PrintConfig.cpp:1655 src/libslic3r/PrintConfig.cpp:1664 msgid "mm (zero to disable)" msgstr "mm (nula pro vypnutí)" -#: src/libslic3r/PrintConfig.cpp:451 src/libslic3r/PrintConfig.cpp:560 -#: src/libslic3r/PrintConfig.cpp:882 src/libslic3r/PrintConfig.cpp:895 -#: src/libslic3r/PrintConfig.cpp:1015 src/libslic3r/PrintConfig.cpp:1041 -#: src/libslic3r/PrintConfig.cpp:1423 src/libslic3r/PrintConfig.cpp:1761 -#: src/libslic3r/PrintConfig.cpp:1883 src/libslic3r/PrintConfig.cpp:1951 -#: src/libslic3r/PrintConfig.cpp:2111 +#: src/libslic3r/PrintConfig.cpp:487 src/libslic3r/PrintConfig.cpp:596 +#: src/libslic3r/PrintConfig.cpp:924 src/libslic3r/PrintConfig.cpp:937 +#: src/libslic3r/PrintConfig.cpp:1059 src/libslic3r/PrintConfig.cpp:1085 +#: src/libslic3r/PrintConfig.cpp:1531 src/libslic3r/PrintConfig.cpp:1876 +#: src/libslic3r/PrintConfig.cpp:2025 src/libslic3r/PrintConfig.cpp:2093 +#: src/libslic3r/PrintConfig.cpp:2254 msgid "mm or %" msgstr "mm nebo %" -#: src/libslic3r/PrintConfig.cpp:237 src/libslic3r/PrintConfig.cpp:609 -#: src/libslic3r/PrintConfig.cpp:617 src/libslic3r/PrintConfig.cpp:626 -#: src/libslic3r/PrintConfig.cpp:634 src/libslic3r/PrintConfig.cpp:661 -#: src/libslic3r/PrintConfig.cpp:680 src/libslic3r/PrintConfig.cpp:922 -#: src/libslic3r/PrintConfig.cpp:1050 src/libslic3r/PrintConfig.cpp:1135 -#: src/libslic3r/PrintConfig.cpp:1169 src/libslic3r/PrintConfig.cpp:1181 -#: src/libslic3r/PrintConfig.cpp:1191 src/libslic3r/PrintConfig.cpp:1241 -#: src/libslic3r/PrintConfig.cpp:1300 src/libslic3r/PrintConfig.cpp:1433 -#: src/libslic3r/PrintConfig.cpp:1607 src/libslic3r/PrintConfig.cpp:1616 -#: src/libslic3r/PrintConfig.cpp:2028 src/libslic3r/PrintConfig.cpp:2154 +#: 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 +#: src/libslic3r/PrintConfig.cpp:716 src/libslic3r/PrintConfig.cpp:966 +#: src/libslic3r/PrintConfig.cpp:1094 src/libslic3r/PrintConfig.cpp:1167 +#: src/libslic3r/PrintConfig.cpp:1243 src/libslic3r/PrintConfig.cpp:1277 +#: src/libslic3r/PrintConfig.cpp:1289 src/libslic3r/PrintConfig.cpp:1299 +#: src/libslic3r/PrintConfig.cpp:1349 src/libslic3r/PrintConfig.cpp:1408 +#: src/libslic3r/PrintConfig.cpp:1541 src/libslic3r/PrintConfig.cpp:1715 +#: src/libslic3r/PrintConfig.cpp:1724 src/libslic3r/PrintConfig.cpp:2170 +#: src/libslic3r/PrintConfig.cpp:2297 msgid "mm/s" msgstr "mm/s" -#: src/libslic3r/PrintConfig.cpp:462 src/libslic3r/PrintConfig.cpp:904 -#: src/libslic3r/PrintConfig.cpp:1720 src/libslic3r/PrintConfig.cpp:1772 -#: src/libslic3r/PrintConfig.cpp:1995 src/libslic3r/PrintConfig.cpp:2124 +#: src/libslic3r/PrintConfig.cpp:498 src/libslic3r/PrintConfig.cpp:946 +#: src/libslic3r/PrintConfig.cpp:1835 src/libslic3r/PrintConfig.cpp:1887 +#: src/libslic3r/PrintConfig.cpp:2137 src/libslic3r/PrintConfig.cpp:2267 msgid "mm/s or %" msgstr "mm/s nebo %" -#: src/libslic3r/PrintConfig.cpp:196 src/libslic3r/PrintConfig.cpp:339 -#: src/libslic3r/PrintConfig.cpp:862 src/libslic3r/PrintConfig.cpp:984 -#: src/libslic3r/PrintConfig.cpp:1152 src/libslic3r/PrintConfig.cpp:1201 -#: src/libslic3r/PrintConfig.cpp:1211 src/libslic3r/PrintConfig.cpp:1403 +#: src/libslic3r/PrintConfig.cpp:230 src/libslic3r/PrintConfig.cpp:373 +#: src/libslic3r/PrintConfig.cpp:902 src/libslic3r/PrintConfig.cpp:1028 +#: src/libslic3r/PrintConfig.cpp:1260 src/libslic3r/PrintConfig.cpp:1309 +#: src/libslic3r/PrintConfig.cpp:1319 src/libslic3r/PrintConfig.cpp:1511 msgid "mm/s²" msgstr "mm/s²" -#: src/libslic3r/PrintConfig.cpp:1730 +#: src/libslic3r/PrintConfig.cpp:1845 msgid "mm²" msgstr "mm²" -#: src/libslic3r/PrintConfig.cpp:672 +#: src/libslic3r/PrintConfig.cpp:708 msgid "mm³" msgstr "mm³" -#: src/slic3r/GUI/RammingChart.cpp:81 src/libslic3r/PrintConfig.cpp:601 -#: src/libslic3r/PrintConfig.cpp:1250 +#: src/slic3r/GUI/RammingChart.cpp:81 src/libslic3r/PrintConfig.cpp:637 +#: src/libslic3r/PrintConfig.cpp:1358 msgid "mm³/s" msgstr "mm³/s" -#: src/libslic3r/PrintConfig.cpp:1262 src/libslic3r/PrintConfig.cpp:1273 +#: src/libslic3r/PrintConfig.cpp:1370 src/libslic3r/PrintConfig.cpp:1381 msgid "mm³/s²" msgstr "mm³/s²" -#: src/slic3r/GUI/GUI_App.cpp:820 +#: src/slic3r/GUI/GUI_App.cpp:1512 msgid "Mode" msgstr "Reži&m" @@ -4627,7 +5316,7 @@ msgstr "Reži&m" msgid "model" msgstr "model" -#: src/slic3r/GUI/BedShapeDialog.cpp:251 +#: src/slic3r/GUI/BedShapeDialog.cpp:395 msgid "Model" msgstr "Model" @@ -4656,99 +5345,125 @@ msgstr "Oprava modelu byla dokončena" msgid "Model repaired successfully" msgstr "Model byl úspěšně opraven" -#: src/slic3r/GUI/Tab.cpp:979 +#: src/slic3r/GUI/GUI_App.cpp:1506 src/slic3r/GUI/wxExtensions.cpp:675 +msgctxt "Mode" +msgid "Advanced" +msgstr "Pokročilý" + +#: src/slic3r/GUI/Tab.cpp:1241 msgid "Modifications to the current profile will be saved." msgstr "Úpravy aktuálního profilu budou uloženy." -#: src/slic3r/GUI/Preset.cpp:247 +#: src/slic3r/GUI/GUI_App.cpp:1425 msgid "modified" msgstr "upraveno" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3551 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4014 msgid "Modifier" msgstr "Modifikátor" -#: src/slic3r/GUI/Tab.cpp:1161 +#: src/slic3r/GUI/Tab.cpp:1491 msgid "Modifiers" msgstr "Modifikátory" -#: src/libslic3r/PrintConfig.cpp:2512 +#: src/libslic3r/PrintConfig.cpp:2655 msgid "money/bottle" msgstr "cena/láhev" -#: src/libslic3r/PrintConfig.cpp:762 +#: src/libslic3r/PrintConfig.cpp:798 msgid "money/kg" msgstr "korun/kg" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1372 +#: src/libslic3r/PrintConfig.cpp:461 +msgid "Monotonic" +msgstr "Monotóní" + +#: src/slic3r/GUI/NotificationManager.cpp:305 +#: src/slic3r/GUI/NotificationManager.cpp:315 +msgid "More" +msgstr "Více" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1219 msgid "Mouse wheel" msgstr "Kolečko myši" -#: src/slic3r/GUI/GLCanvas3D.cpp:261 +#: src/slic3r/GUI/GLCanvas3D.cpp:249 msgid "Mouse wheel:" msgstr "Kolečko myši:" -#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:64 msgid "Move" msgstr "Přesunout" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1372 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1219 msgid "Move clipping plane" msgstr "Posunout řezovou rovinu" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:215 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 msgid "Move current slider thumb Down" msgstr "Posunout aktivní posuvník dolů" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:214 +#: 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" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:1059 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:835 msgid "Move drainage hole" msgstr "Posun odtokového otvoru" -#: src/slic3r/GUI/GLCanvas3D.cpp:3505 +#: src/slic3r/GUI/GLCanvas3D.cpp:3810 msgid "Move Object" msgstr "Posunutí Objektu" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1365 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1212 msgid "Move point" msgstr "Posunout bod" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:166 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:160 msgid "Move selection 10 mm in negative X direction" msgstr "Posun výběru o 10 mm v záporném směru osy X" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:159 msgid "Move selection 10 mm in negative Y direction" msgstr "Posun výběru o 10 mm v záporném směru osy Y" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:167 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:161 msgid "Move selection 10 mm in positive X direction" msgstr "Posun výběru o 10 mm v kladném směru osy X" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:158 msgid "Move selection 10 mm in positive Y direction" msgstr "Posun výběru o 10 mm v kladném směru osy Y" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1097 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:955 msgid "Move support point" msgstr "Posun podpěrného bodu" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:169 +#: src/slic3r/GUI/GCodeViewer.cpp:2492 +msgid "Movement" +msgstr "Přejezd" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:163 msgid "Movement in camera space" msgstr "Posun výběru v ortogonálním prostoru kamery" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:168 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:162 msgid "Movement step set to 1 mm" msgstr "Krok pro posun výběru o velikosti 1 mm" -#: src/libslic3r/PrintConfig.cpp:2201 +#: src/libslic3r/PrintConfig.cpp:2344 msgid "Multi material printers may need to prime or purge extruders on tool changes. Extrude the excess material into the wipe tower." msgstr "Multimateriálové tiskárny mohou potřebovat, aby při výměně nástrojů vyčistili extrudery. Vytlačí přebytečný materiál do čistící věže." -#: src/slic3r/GUI/Plater.cpp:2360 src/slic3r/GUI/Plater.cpp:2413 +#: src/slic3r/GUI/Plater.cpp:2322 src/slic3r/GUI/Plater.cpp:2375 msgid "Multi-part object detected" msgstr "Detekován objekt obsahující více částí" @@ -4757,11 +5472,11 @@ msgstr "Detekován objekt obsahující více částí" msgid "Multiple %s devices found. Please only connect one at a time for flashing." msgstr "Bylo nalezeno více zařízení %s . Během flashování mějte připojené pouze jedno." -#: src/slic3r/GUI/Tab.cpp:1179 +#: src/slic3r/GUI/Tab.cpp:1509 msgid "Multiple Extruders" msgstr "Více Extruderů" -#: src/slic3r/GUI/Plater.cpp:2410 +#: src/slic3r/GUI/Plater.cpp:2372 msgid "" "Multiple objects were loaded for a multi-material printer.\n" "Instead of considering them as multiple objects, should I consider\n" @@ -4771,36 +5486,41 @@ msgstr "" "Mají být vloženy jako jeden objekt obsahující více částí, \n" "namísto vložení několika objektů?" -#: src/libslic3r/PrintConfig.cpp:3439 +#: src/libslic3r/PrintConfig.cpp:3638 msgid "Multiply copies by creating a grid." msgstr "Vynásobí kopie vytvořením mřížky." -#: src/libslic3r/PrintConfig.cpp:3434 +#: src/libslic3r/PrintConfig.cpp:3633 msgid "Multiply copies by this factor." msgstr "Vynásobí kopie tímto číslem." -#: src/slic3r/GUI/Field.cpp:150 src/slic3r/GUI/OptionsGroup.cpp:580 +#: src/slic3r/GUI/Field.cpp:198 src/slic3r/GUI/OptionsGroup.cpp:715 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:874 msgid "N/A" msgstr "N/A" -#: src/slic3r/GUI/GUI_ObjectList.cpp:270 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:153 +#: src/slic3r/GUI/GUI_ObjectList.cpp:284 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:161 msgid "Name" msgstr "Název" -#: src/libslic3r/PrintConfig.cpp:1488 +#: src/libslic3r/PrintConfig.cpp:114 +msgid "Name of the printer" +msgstr "Název tiskárny" + +#: src/libslic3r/PrintConfig.cpp:1596 msgid "Name of the printer variant. For example, the printer variants may be differentiated by a nozzle diameter." msgstr "Název varianty tiskárny. Varianty tiskárny mohou být například rozlišeny podle průměru trysky." -#: src/libslic3r/PrintConfig.cpp:1482 +#: src/libslic3r/PrintConfig.cpp:1590 msgid "Name of the printer vendor." msgstr "Název prodejce tiskárny." -#: src/libslic3r/PrintConfig.cpp:1058 +#: src/libslic3r/PrintConfig.cpp:1102 msgid "Name of the profile, from which this profile inherits." msgstr "Název profilu, ze kterého tento profil zdědí." -#: src/libslic3r/PrintConfig.cpp:1630 +#: src/libslic3r/PrintConfig.cpp:1738 msgid "Nearest" msgstr "Nejbližší" @@ -4808,14 +5528,30 @@ msgstr "Nejbližší" msgid "Network lookup" msgstr "Hledání v síti" -#: src/slic3r/GUI/Plater.cpp:2151 +#: src/slic3r/GUI/Preferences.cpp:430 +msgid "New layout, access via settings button in the top menu" +msgstr "Nové rozvržení, přístup přes tlačítko nastavení v horním menu" + +#: src/slic3r/GUI/Plater.cpp:2056 msgid "New Project" msgstr "Nový Projekt" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:112 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:105 msgid "New project, clear plater" msgstr "Nový projekt, odstranit modely na podložce" +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:609 +msgid "New Value" +msgstr "Nová hodnota" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1178 +msgid "New value" +msgstr "Nová hodnota" + +#: src/slic3r/GUI/NotificationManager.hpp:322 +msgid "New version is available." +msgstr "K dispozici je nová verze." + #: src/slic3r/GUI/UpdateDialogs.cpp:38 #, c-format msgid "New version of %s is available" @@ -4825,23 +5561,23 @@ msgstr "Je dostupná nová verze %s" msgid "New version:" msgstr "Nová verze:" -#: src/slic3r/GUI/GLCanvas3D.cpp:4673 +#: src/slic3r/GUI/GLCanvas3D.cpp:5089 msgid "Next Redo action: %1%" msgstr "Akce vpřed: %1%" -#: src/slic3r/GUI/GLCanvas3D.cpp:4641 +#: src/slic3r/GUI/GLCanvas3D.cpp:5051 msgid "Next Undo action: %1%" msgstr "Akce zpět: %1%" -#: src/libslic3r/PrintConfig.cpp:960 +#: src/libslic3r/PrintConfig.cpp:1004 msgid "No extrusion" msgstr "Žádná extruze" -#: src/libslic3r/SLAPrintSteps.cpp:453 +#: src/libslic3r/SLAPrintSteps.cpp:451 msgid "No pad can be generated for this model with the current configuration" msgstr "Pro aktuální model nelze vygenerovat žádnou podložku" -#: src/slic3r/GUI/MainFrame.cpp:784 +#: src/slic3r/GUI/MainFrame.cpp:1485 msgid "No previously sliced file." msgstr "Žádné dříve slicované soubory." @@ -4849,175 +5585,221 @@ msgstr "Žádné dříve slicované soubory." msgid "NO RAMMING AT ALL" msgstr "ŽÁDNÁ RAPIDNÍ EXTRUZE" -#: src/libslic3r/PrintConfig.cpp:1857 +#: src/libslic3r/PrintConfig.cpp:1999 msgid "No sparse layers (EXPERIMENTAL)" msgstr "Bez řídkých vrstev (EXPERIMENTÁLNÍ)" -#: src/libslic3r/PrintConfig.cpp:2774 +#: src/libslic3r/PrintConfig.cpp:2938 msgid "No support points will be placed closer than this threshold." msgstr "Žádné podpůrné body nebudou umístěny blíže než je tento práh." -#: src/slic3r/GUI/UpdateDialogs.cpp:303 +#: src/slic3r/GUI/UpdateDialogs.cpp:304 msgid "No updates available" msgstr "Žádné aktualizace nejsou dostupné" -#: src/slic3r/GUI/ConfigWizard.cpp:291 src/slic3r/GUI/ConfigWizard.cpp:574 -#: src/slic3r/GUI/Plater.cpp:499 src/slic3r/GUI/Plater.cpp:639 -#: src/libslic3r/ExtrusionEntity.cpp:309 +#: src/slic3r/GUI/ConfigWizard.cpp:309 src/slic3r/GUI/ConfigWizard.cpp:599 +#: src/slic3r/GUI/Plater.cpp:365 src/slic3r/GUI/Plater.cpp:505 +#: src/libslic3r/ExtrusionEntity.cpp:312 msgid "None" msgstr "Žádné" -#: src/slic3r/GUI/Tab.cpp:2203 +#: src/slic3r/GUI/Search.cpp:77 src/slic3r/GUI/Tab.cpp:2372 msgid "Normal" msgstr "Normální" -#: src/slic3r/GUI/Plater.cpp:1286 +#: src/slic3r/GUI/Plater.cpp:1177 src/slic3r/GUI/Plater.cpp:1224 msgid "normal mode" msgstr "normální režim" -#: src/libslic3r/Zipper.cpp:46 +#: src/slic3r/GUI/GCodeViewer.cpp:2552 +msgid "Normal mode" +msgstr "Normální režim" + +#: src/libslic3r/miniz_extension.cpp:105 msgid "not a ZIP archive" msgstr "není ZIP archiv" -#: src/slic3r/GUI/BedShapeDialog.cpp:223 src/slic3r/GUI/BedShapeDialog.cpp:302 +#: src/slic3r/GUI/BedShapeDialog.cpp:366 src/slic3r/GUI/BedShapeDialog.cpp:446 msgid "Not found:" msgstr "Nenalezeno:" -#: src/slic3r/GUI/DoubleSlider.cpp:1019 +#: src/slic3r/GUI/DoubleSlider.cpp:1144 msgid "Note" msgstr "Poznámka" -#: src/slic3r/Utils/AstroBox.cpp:89 +#: src/slic3r/GUI/Tab.cpp:3408 +msgid "Note, that selected preset will be deleted from this/those printer(s) too." +msgstr "Upozorňujeme, že vybrané přednastavené bude odstraněno také z těchto tiskáren." + +#: src/slic3r/GUI/Tab.cpp:3416 +msgid "Note, that this/those printer(s) will be deleted after deleting of the selected preset." +msgstr "Upozorňujeme, že tato/tyto tiskárny budou odstraněny po odstranění vybraného přednastavení." + +#: src/slic3r/GUI/Tab.cpp:2039 +msgid "" +"Note: All parameters from this group are moved to the Physical Printer settings (see changelog).\n" +"\n" +"A new Physical Printer profile is created by clicking on the \"cog\" icon right of the Printer profiles combo box, by selecting the \"Add physical printer\" item in the Printer combo box. The Physical Printer profile editor opens also when clicking on the \"cog\" icon in the Printer settings tab. The Physical Printer profiles are being stored into PrusaSlicer/physical_printer directory." +msgstr "" +"Poznámka: Všechna nastavení z této sekce jsou přesunuta do nastavení Fyzické tiskárny (viz changelog).\n" +"\n" +"Nový profil Fyzické tiskárny lze vytvořit kliknutím na ikonu „ozubeného kolečka“ vpravo od pole se seznamem profilů tiskáren a výběrem položky „Přidat fyzickou tiskárnu“. Editor fyzické tiskárny se otevře po kliknutí na ikonu „ozubeného kolečka“ na kartě Nastavení tiskárny. Profily fyzických tiskáren se ukládají do adresáře PrusaSlicer/physical_printer directory." + +#: src/slic3r/Utils/AstroBox.cpp:92 msgid "Note: AstroBox version at least 1.1.0 is required." msgstr "Poznámka: Je vyžadována verze AstroBoxu nejméně 1.1.0." -#: src/slic3r/Utils/FlashAir.cpp:73 +#: src/slic3r/Utils/FlashAir.cpp:76 msgid "Note: FlashAir with firmware 2.00.02 or newer and activated upload function is required." msgstr "Poznámka: Vyžaduje se FlashAir s firmwarem 2.00.02 nebo novějším a aktivovanou funkcí nahrávání." -#: src/slic3r/Utils/OctoPrint.cpp:89 +#: src/slic3r/Utils/OctoPrint.cpp:91 msgid "Note: OctoPrint version at least 1.1.0 is required." msgstr "Poznámka: Je vyžadován OctoPrint ve verzi alespoň 1.1.0." -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1345 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1192 msgid "Note: some shortcuts work in (non)editing mode only." msgstr "Poznámka: některé zkratky nefungují v režimu editace." -#: src/slic3r/GUI/Tab.cpp:1251 src/slic3r/GUI/Tab.cpp:1252 -#: src/slic3r/GUI/Tab.cpp:1540 src/slic3r/GUI/Tab.cpp:1541 -#: src/slic3r/GUI/Tab.cpp:2012 src/slic3r/GUI/Tab.cpp:2013 -#: src/slic3r/GUI/Tab.cpp:2128 src/slic3r/GUI/Tab.cpp:2129 -#: src/slic3r/GUI/Tab.cpp:3535 src/slic3r/GUI/Tab.cpp:3536 +#: src/slic3r/GUI/SavePresetDialog.cpp:151 +msgid "Note: This preset will be replaced after saving" +msgstr "Upozornění: Taoto přednastavení bude po uložení nahrazeno" + +#: src/slic3r/GUI/Tab.cpp:1581 src/slic3r/GUI/Tab.cpp:1582 +#: src/slic3r/GUI/Tab.cpp:1887 src/slic3r/GUI/Tab.cpp:1888 +#: src/slic3r/GUI/Tab.cpp:2221 src/slic3r/GUI/Tab.cpp:2222 +#: src/slic3r/GUI/Tab.cpp:2297 src/slic3r/GUI/Tab.cpp:2298 +#: src/slic3r/GUI/Tab.cpp:3951 src/slic3r/GUI/Tab.cpp:3952 msgid "Notes" msgstr "Poznámky" -#: src/slic3r/GUI/ConfigWizard.cpp:1751 src/slic3r/GUI/DoubleSlider.cpp:1905 -#: src/slic3r/GUI/DoubleSlider.cpp:1926 src/slic3r/GUI/GUI.cpp:245 +#: src/slic3r/GUI/ConfigWizard.cpp:2237 src/slic3r/GUI/DoubleSlider.cpp:2124 +#: src/slic3r/GUI/DoubleSlider.cpp:2144 src/slic3r/GUI/GUI.cpp:244 msgid "Notice" msgstr "Oznámení" -#: src/slic3r/GUI/ConfigWizard.cpp:218 +#: src/slic3r/GUI/ConfigWizard.cpp:236 msgid "nozzle" msgstr "tryska" -#: src/slic3r/GUI/Tab.cpp:1870 src/slic3r/GUI/Tab.cpp:2340 -#: src/libslic3r/PrintConfig.cpp:1326 +#: src/slic3r/GUI/Tab.cpp:1790 +msgid "Nozzle" +msgstr "Tryska" + +#: src/slic3r/GUI/ConfigWizard.cpp:1392 +msgid "Nozzle and Bed Temperatures" +msgstr "Teplota trysky a tiskové podložky" + +#: src/slic3r/GUI/Tab.cpp:2104 src/slic3r/GUI/Tab.cpp:2509 +#: src/libslic3r/PrintConfig.cpp:1434 msgid "Nozzle diameter" msgstr "Průměr trysky" -#: src/slic3r/GUI/ConfigWizard.cpp:969 +#: src/slic3r/GUI/ConfigWizard.cpp:1335 msgid "Nozzle Diameter:" msgstr "Průměr trysky:" -#: src/libslic3r/PrintConfig.cpp:650 +#: src/libslic3r/PrintConfig.cpp:2201 +msgid "Nozzle temperature" +msgstr "Teplota trysky" + +#: src/libslic3r/PrintConfig.cpp:2198 +msgid "Nozzle temperature for layers after the first one. Set this to zero to disable temperature control commands in the output G-code." +msgstr "Teplota trysky od druhé vrstvy dále. Nastavte tuto hodnotu na nulu, abyste zakázali příkazy pro řízení teploty ve výstupním G-codu." + +#: src/libslic3r/PrintConfig.cpp:961 +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 "Teplota trysky pro první vrstvu. Chcete-li během tisku ručně ovládat teplotu, nastavte tuto hodnotu na nulu, aby se ve výstupním G-codu neobjevily příkazy pro řízení teploty." + +#: src/libslic3r/PrintConfig.cpp:686 msgid "Number of cooling moves" msgstr "Počet chladících pohybů" -#: src/slic3r/GUI/Tab.cpp:1839 +#: src/slic3r/GUI/Tab.cpp:2073 msgid "Number of extruders of the printer." msgstr "Počet extrudérů tiskárny." -#: src/libslic3r/PrintConfig.cpp:1975 +#: src/libslic3r/PrintConfig.cpp:2117 msgid "Number of interface layers to insert between the object(s) and support material." msgstr "Počet interface vrstev vložených mezi objekt (objekty) a podpěry." -#: src/libslic3r/PrintConfig.cpp:1697 +#: src/libslic3r/PrintConfig.cpp:1812 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 "Počet obrysových smyček. Je-li nastavena možnost Minimální délka extruze, počet obrysových smyček může být větší než počet zde nakonfigurovaných. Nastavte tuto hodnotu na nulu, pro úplné deaktivování." -#: src/libslic3r/PrintConfig.cpp:2365 +#: src/libslic3r/PrintConfig.cpp:2508 msgid "Number of pixels in" msgstr "Počet pixelů v ose" -#: src/libslic3r/PrintConfig.cpp:2367 +#: src/libslic3r/PrintConfig.cpp:2510 msgid "Number of pixels in X" msgstr "Počet pixelů v ose X" -#: src/libslic3r/PrintConfig.cpp:2373 +#: src/libslic3r/PrintConfig.cpp:2516 msgid "Number of pixels in Y" msgstr "Počet pixelů v ose Y" -#: src/libslic3r/PrintConfig.cpp:176 +#: src/libslic3r/PrintConfig.cpp:210 msgid "Number of solid layers to generate on bottom surfaces." msgstr "Počet plných vrstev." -#: src/libslic3r/PrintConfig.cpp:1781 +#: src/libslic3r/PrintConfig.cpp:1896 msgid "Number of solid layers to generate on top and bottom surfaces." msgstr "Počet plných vrstev generovaných na vrchních a spodních površích." -#: src/libslic3r/PrintConfig.cpp:2134 +#: src/libslic3r/PrintConfig.cpp:2277 msgid "Number of solid layers to generate on top surfaces." msgstr "Počet vrchních generovaných plných vrstev." -#: src/libslic3r/PrintConfig.cpp:2518 +#: src/libslic3r/PrintConfig.cpp:2661 msgid "Number of the layers needed for the exposure time fade from initial exposure time to the exposure time" msgstr "Počet vrstev potřebných pro přechod z počáteční doby osvitu na dobu osvitu" -#: src/slic3r/GUI/Plater.cpp:241 +#: src/slic3r/GUI/Plater.cpp:247 msgid "Number of tool changes" msgstr "Počet změn nástroje" -#: src/libslic3r/PrintConfig.cpp:2753 +#: src/slic3r/GUI/Tab.cpp:4127 src/libslic3r/PrintConfig.cpp:2917 msgid "Object elevation" msgstr "Nadzvednutí objektu" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2466 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2858 msgid "Object manipulation" msgstr "Manipulace s objektem" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:155 src/libslic3r/GCode.cpp:638 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:163 src/libslic3r/GCode.cpp:623 msgid "Object name" msgstr "Jméno objektu" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3417 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3880 msgid "Object or Instance" msgstr "Objekt nebo Instanci" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1106 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1230 msgid "Object reordered" msgstr "Zěna pořadí objektů" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2479 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2871 msgid "Object Settings to modify" msgstr "Změna nastavení objektu" -#: src/slic3r/GUI/Plater.cpp:2529 +#: src/slic3r/GUI/Plater.cpp:2491 msgid "Object too large?" msgstr "Objekt moc velký?" -#: src/libslic3r/PrintConfig.cpp:2262 +#: src/libslic3r/PrintConfig.cpp:2405 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 "Objekty budou použity k vyčištění barvy filamentu v trysce po změně extruderu, aby se ušetřil materiál, který by jinak skončil v čistící věži. Výsledkem budou objekty s náhodně mixovanými barvami." -#: src/slic3r/GUI/Plater.cpp:1194 +#: src/slic3r/GUI/Plater.cpp:1103 msgid "object(s)" msgstr "objekt(y)" -#: src/slic3r/GUI/Plater.cpp:1231 src/slic3r/GUI/Plater.cpp:1245 +#: src/slic3r/GUI/Plater.cpp:1143 src/slic3r/GUI/Plater.cpp:1160 msgid "objects" msgstr "objekty" -#: src/libslic3r/PrintConfig.cpp:429 src/libslic3r/PrintConfig.cpp:855 +#: src/libslic3r/PrintConfig.cpp:465 src/libslic3r/PrintConfig.cpp:893 msgid "Octagram Spiral" msgstr "Octagram Spiral" @@ -5025,64 +5807,101 @@ msgstr "Octagram Spiral" msgid "OctoPrint version" msgstr "Verze OctoPrintu" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3425 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3888 msgid "of a current Object" msgstr "současného Objektu" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:43 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:42 msgid "Offset" msgstr "Odsazení" -#: src/slic3r/GUI/Tab.cpp:1755 +#: src/slic3r/GUI/Preferences.cpp:422 +msgid "Old regular layout with the tab bar" +msgstr "Původní rozložení s panelem karet" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:608 +msgid "Old Value" +msgstr "Stará hodnota" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1177 +msgid "Old value" +msgstr "Stará hodnota" + +#: src/slic3r/GUI/Preferences.cpp:123 +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 "Na OSX je ve výchozím nastavení vždy spuštěna pouze jedna instance aplikace. Je však povoleno spouštět více instancí stejné aplikace z příkazového řádku. V takovém případě toto nastavení povolí pouze jednu instanci." + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:359 #, c-format msgid "On this system, %s uses HTTPS certificates from the system Certificate Store or Keychain." msgstr "V tomto systému používá %s certifikáty HTTPS ze systému Certificate Store nebo Keychain." -#: src/slic3r/GUI/DoubleSlider.cpp:950 +#: src/slic3r/GUI/DoubleSlider.cpp:1064 msgid "One layer mode" msgstr "Zobrazení po jedné vrstvě" -#: src/libslic3r/Print.cpp:1365 +#: src/libslic3r/Print.cpp:1391 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/libslic3r/PrintConfig.cpp:1903 src/libslic3r/PrintConfig.cpp:2676 +#: 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." -#: src/libslic3r/PrintConfig.cpp:1027 +#: src/libslic3r/PrintConfig.cpp:1071 msgid "Only infill where needed" msgstr "Výplň pouze kde je potřeba" -#: src/slic3r/GUI/Tab.cpp:2373 +#: src/slic3r/GUI/Tab.cpp:2542 msgid "Only lift Z" msgstr "Pouze zvednout Z" -#: src/libslic3r/PrintConfig.cpp:1570 +#: src/libslic3r/PrintConfig.cpp:1678 msgid "Only lift Z above" msgstr "Zvednout Z pouze nad" -#: src/libslic3r/PrintConfig.cpp:1579 +#: src/libslic3r/PrintConfig.cpp:1687 msgid "Only lift Z below" msgstr "Zvednout Z pouze pod" -#: src/libslic3r/PrintConfig.cpp:1348 +#: src/libslic3r/PrintConfig.cpp:1456 msgid "Only retract when crossing perimeters" msgstr "Provést retrakci pouze při přejíždění perimetrů" -#: src/slic3r/GUI/Tab.cpp:1187 +#: src/slic3r/GUI/ConfigWizard.cpp:714 +msgid "Only the following installed printers are compatible with the selected filament:" +msgstr "S vybraným filamentem jsou kompatibilní pouze následující nainstalované tiskárny:" + +#: src/slic3r/GUI/Tab.cpp:1517 msgid "Ooze prevention" msgstr "Prevence odkapávání" -#: src/libslic3r/Print.cpp:1266 +#: src/libslic3r/Print.cpp:1292 msgid "Ooze prevention is currently not supported with the wipe tower enabled." msgstr "V současné době není funkce \"Prevence odkapávání\" filamentu podporována společně s povolenou čistící věží." -#: src/slic3r/GUI/MainFrame.cpp:408 +#: src/slic3r/GUI/MainFrame.cpp:1398 +msgid "Open &PrusaSlicer" +msgstr "Otevřít &PrusaSlicer" + +#: src/slic3r/GUI/MainFrame.cpp:1391 +msgid "Open a G-code file" +msgstr "Otevřít G-code" + +#: src/slic3r/GUI/MainFrame.cpp:63 src/slic3r/GUI/MainFrame.cpp:77 +#: src/slic3r/GUI/MainFrame.cpp:1262 +msgid "Open a new PrusaSlicer instance" +msgstr "Otevře novou instanci PrusaSliceru" + +#: src/slic3r/GUI/MainFrame.cpp:989 msgid "Open a project file" msgstr "Otevřít soubor s projektem" -#: src/slic3r/GUI/Tab.cpp:1729 +#: src/slic3r/GUI/Plater.cpp:1417 +msgid "Open as project" +msgstr "Otevřít jako projekt" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:330 msgid "Open CA certificate file" msgstr "Otevřít soubor s certifikátem CA" @@ -5095,116 +5914,150 @@ msgstr "Otevře stránku s changelogem" msgid "Open download page" msgstr "Otevře stránku pro stažení programu" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:113 +#: src/slic3r/GUI/NotificationManager.cpp:742 +msgid "Open Folder." +msgstr "Otevřít složku" + +#: src/slic3r/Utils/Process.cpp:151 +msgid "Open G-code file:" +msgstr "Otevřít soubor G-code:" + +#: src/slic3r/GUI/MainFrame.cpp:66 src/slic3r/GUI/MainFrame.cpp:1141 +msgid "Open G-code viewer" +msgstr "Otevřít prohlížeč G-codu" + +#: src/slic3r/GUI/MainFrame.cpp:79 +msgid "Open new G-code viewer" +msgstr "Otevřít nový prohlížeč G-codu" + +#: src/slic3r/GUI/MainFrame.cpp:63 src/slic3r/GUI/MainFrame.cpp:1262 +msgid "Open new instance" +msgstr "Otevřít novou instanci" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:106 msgid "Open project STL/OBJ/AMF/3MF with config, clear plater" msgstr "Otevřít projekt STL/OBJ/AMF/3MF s konfigurací, odstranit modely na podložce" -#: src/slic3r/GUI/MainFrame.cpp:693 +#: src/slic3r/GUI/MainFrame.cpp:77 src/slic3r/GUI/MainFrame.cpp:1398 +msgid "Open PrusaSlicer" +msgstr "Otevřít PrusaSlicer" + +#: src/slic3r/GUI/MainFrame.cpp:918 src/slic3r/GUI/MainFrame.cpp:1317 #, c-format msgid "Open the %s website in your browser" msgstr "Otevřít webovou stránku %s v prohlížeči" -#: src/slic3r/GUI/MainFrame.cpp:684 +#: src/slic3r/GUI/MainFrame.cpp:909 src/slic3r/GUI/MainFrame.cpp:1308 msgid "Open the Prusa3D drivers download page in your browser" msgstr "Otevřít stránku pro stahování Prusa 3D ovladačů ve vašem prohlížeči" -#: src/slic3r/GUI/MainFrame.cpp:686 +#: src/slic3r/GUI/MainFrame.cpp:911 src/slic3r/GUI/MainFrame.cpp:1310 msgid "Open the software releases page in your browser" msgstr "Otevřít stránku s verzemi tohoto softwaru ve vašem prohlížeči" -#: src/slic3r/GUI/Plater.cpp:4040 +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:220 src/slic3r/GUI/Plater.cpp:3961 msgid "Optimize orientation" msgstr "Optimalizovat orientaci" -#: src/slic3r/GUI/Plater.cpp:2767 +#: src/slic3r/GUI/Plater.cpp:1555 msgid "Optimize Rotation" msgstr "Optimalizovat Orientaci" -#: src/slic3r/GUI/Plater.cpp:4040 +#: src/slic3r/GUI/Plater.cpp:3962 msgid "Optimize the rotation of the object for better print results." msgstr "Optimalizujte rotaci objektu pro lepší výsledky tisku." -#: src/libslic3r/PrintConfig.cpp:137 +#: src/libslic3r/PrintConfig.cpp:170 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 "Optimalizovat rychloposuny do pořadí aby se minimalizovalo přejíždění perimetrů. Nejvíce užitečné u Bowdenových extruderů které trpí na vytékání filamentu. Toto nastavení zpomaluje tisk i generování G-code." -#: src/slic3r/GUI/Tab.cpp:1131 +#: src/slic3r/GUI/GCodeViewer.cpp:2525 src/slic3r/GUI/GUI_Preview.cpp:320 +#: src/slic3r/GUI/GUI_Preview.cpp:333 +msgid "Options" +msgstr "Volby" + +#: src/slic3r/GUI/Tab.cpp:1460 msgid "Options for support material and raft" msgstr "Volby pro podpěry a raft" -#: src/slic3r/GUI/DoubleSlider.cpp:989 +#: src/slic3r/GUI/Mouse3DController.cpp:315 +msgid "Options:" +msgstr "Možnosti:" + +#: src/slic3r/GUI/DoubleSlider.cpp:1112 msgid "or press \"+\" key" msgstr "nebo stiskněte klávesu „+“" -#: src/slic3r/GUI/Plater.cpp:2892 +#: src/slic3r/GUI/Jobs/RotoptimizeJob.cpp:74 msgid "Orientation found." msgstr "Orientace nalezena." -#: src/slic3r/GUI/Plater.cpp:2891 +#: src/slic3r/GUI/Jobs/RotoptimizeJob.cpp:73 msgid "Orientation search canceled." msgstr "Hledání optimální orientace zrušeno." -#: src/slic3r/GUI/BedShapeDialog.cpp:84 +#: src/slic3r/GUI/BedShapeDialog.cpp:94 msgid "Origin" msgstr "Počátek" -#: src/slic3r/GUI/Tab.cpp:1227 +#: src/slic3r/GUI/Tab.cpp:1557 msgid "Other" msgstr "Ostatní" -#: src/libslic3r/PrintConfig.cpp:144 src/libslic3r/PrintConfig.cpp:2064 +#: src/libslic3r/PrintConfig.cpp:177 src/libslic3r/PrintConfig.cpp:2206 msgid "Other layers" msgstr "Ostatní vrstvy" -#: src/slic3r/GUI/ConfigWizard.cpp:856 +#: src/slic3r/GUI/ConfigWizard.cpp:1222 msgid "Other Vendors" msgstr "Ostatní výrobci" -#: src/slic3r/GUI/Tab.cpp:1238 src/slic3r/GUI/Tab.cpp:3666 +#: src/slic3r/GUI/Tab.cpp:1568 src/slic3r/GUI/Tab.cpp:4085 msgid "Output file" msgstr "Výstupní soubor" -#: src/libslic3r/PrintConfig.cpp:3493 +#: src/libslic3r/PrintConfig.cpp:3692 msgid "Output File" msgstr "Výstupní soubor" -#: src/libslic3r/PrintConfig.cpp:1363 +#: src/libslic3r/PrintConfig.cpp:1471 msgid "Output filename format" msgstr "Formát názvu výstupního souboru" -#: src/libslic3r/PrintConfig.cpp:3381 +#: src/libslic3r/PrintConfig.cpp:3580 msgid "Output Model Info" msgstr "Info o výstupním modelu" -#: src/slic3r/GUI/Tab.cpp:1230 src/slic3r/GUI/Tab.cpp:3665 +#: src/slic3r/GUI/Tab.cpp:1560 src/slic3r/GUI/Tab.cpp:4084 msgid "Output options" msgstr "Možnosti výstupu" -#: src/slic3r/GUI/GUI_Preview.cpp:239 src/libslic3r/ExtrusionEntity.cpp:312 +#: src/slic3r/GUI/GUI_Preview.cpp:303 src/libslic3r/ExtrusionEntity.cpp:316 +#: src/libslic3r/ExtrusionEntity.cpp:340 msgid "Overhang perimeter" msgstr "Perimetr převisu" -#: src/libslic3r/PrintConfig.cpp:2042 +#: src/libslic3r/PrintConfig.cpp:2184 msgid "Overhang threshold" msgstr "Mezní úhel převisu" -#: src/slic3r/GUI/Tab.cpp:1215 +#: src/slic3r/GUI/Tab.cpp:1545 msgid "Overlap" msgstr "Překrytí" -#: src/slic3r/GUI/MainFrame.cpp:614 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "P&rint Settings Tab" -msgstr "Panel nastavení &tisku" +msgstr "Panel Nastavení &tisku" -#: src/slic3r/GUI/GUI_ObjectList.cpp:107 src/slic3r/GUI/GUI_ObjectList.cpp:625 -#: src/slic3r/GUI/Plater.cpp:635 src/slic3r/GUI/Tab.cpp:3636 -#: src/slic3r/GUI/Tab.cpp:3637 src/libslic3r/PrintConfig.cpp:2781 -#: src/libslic3r/PrintConfig.cpp:2788 src/libslic3r/PrintConfig.cpp:2802 -#: src/libslic3r/PrintConfig.cpp:2813 src/libslic3r/PrintConfig.cpp:2823 -#: src/libslic3r/PrintConfig.cpp:2845 src/libslic3r/PrintConfig.cpp:2856 -#: src/libslic3r/PrintConfig.cpp:2863 src/libslic3r/PrintConfig.cpp:2870 -#: src/libslic3r/PrintConfig.cpp:2881 src/libslic3r/PrintConfig.cpp:2890 -#: src/libslic3r/PrintConfig.cpp:2899 +#: src/slic3r/GUI/GUI_ObjectList.cpp:105 src/slic3r/GUI/GUI_ObjectList.cpp:664 +#: src/slic3r/GUI/Plater.cpp:501 src/slic3r/GUI/Tab.cpp:4055 +#: src/slic3r/GUI/Tab.cpp:4056 src/slic3r/GUI/Tab.cpp:4127 +#: src/libslic3r/PrintConfig.cpp:2945 src/libslic3r/PrintConfig.cpp:2952 +#: src/libslic3r/PrintConfig.cpp:2966 src/libslic3r/PrintConfig.cpp:2977 +#: src/libslic3r/PrintConfig.cpp:2987 src/libslic3r/PrintConfig.cpp:3009 +#: src/libslic3r/PrintConfig.cpp:3020 src/libslic3r/PrintConfig.cpp:3027 +#: src/libslic3r/PrintConfig.cpp:3034 src/libslic3r/PrintConfig.cpp:3045 +#: src/libslic3r/PrintConfig.cpp:3054 src/libslic3r/PrintConfig.cpp:3063 msgid "Pad" msgstr "Podložka" @@ -5212,150 +6065,186 @@ msgstr "Podložka" msgid "Pad and Support" msgstr "Podložka a Podpěry" -#: src/libslic3r/PrintConfig.cpp:2855 +#: src/slic3r/GUI/Tab.cpp:4127 src/libslic3r/PrintConfig.cpp:3019 msgid "Pad around object" msgstr "Podložka okolo objektu" -#: src/libslic3r/PrintConfig.cpp:2862 +#: src/libslic3r/PrintConfig.cpp:3026 msgid "Pad around object everywhere" msgstr "Podložka všude okolo objektu" -#: src/libslic3r/PrintConfig.cpp:2811 +#: src/libslic3r/PrintConfig.cpp:2975 msgid "Pad brim size" msgstr "Velikost límce podložky" -#: src/libslic3r/SLA/Pad.cpp:691 +#: src/libslic3r/SLA/Pad.cpp:532 msgid "Pad brim size is too small for the current configuration." msgstr "Velikost okraje podložky je pro aktuální konfiguraci příliš malá." -#: src/libslic3r/PrintConfig.cpp:2898 +#: src/libslic3r/PrintConfig.cpp:3062 msgid "Pad object connector penetration" msgstr "Průnik spojky Podložka-Objekt" -#: src/libslic3r/PrintConfig.cpp:2880 +#: src/libslic3r/PrintConfig.cpp:3044 msgid "Pad object connector stride" msgstr "Rozteč spojek Podložka-Objekt" -#: src/libslic3r/PrintConfig.cpp:2889 +#: src/libslic3r/PrintConfig.cpp:3053 msgid "Pad object connector width" msgstr "Šířka spojky Podložka-Objekt" -#: src/libslic3r/PrintConfig.cpp:2869 +#: src/libslic3r/PrintConfig.cpp:3033 msgid "Pad object gap" msgstr "Mezera Podložka-Objekt" -#: src/libslic3r/PrintConfig.cpp:2797 +#: src/libslic3r/PrintConfig.cpp:2961 msgid "Pad wall height" msgstr "Výška bočnice podložky" -#: src/libslic3r/PrintConfig.cpp:2844 +#: src/libslic3r/PrintConfig.cpp:3008 msgid "Pad wall slope" msgstr "Sklon bočnice podložky" -#: src/libslic3r/PrintConfig.cpp:2787 +#: src/libslic3r/PrintConfig.cpp:2951 msgid "Pad wall thickness" msgstr "Tloušťka stěny podložky" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:171 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 msgid "Page Down" msgstr "Page Down" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:170 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 msgid "Page Up" msgstr "Page Up" -#: src/slic3r/GUI/Field.cpp:139 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:33 +msgid "Paint-on supports" +msgstr "Malování podpěr" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:178 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:159 +msgid "Paints all facets inside, regardless of their orientation." +msgstr "Maluje na všechny facety bez ohledu na jejich orientaci." + +#: src/slic3r/GUI/Field.cpp:187 msgid "parameter name" msgstr "název parametru" -#: src/slic3r/GUI/Field.cpp:243 +#: src/slic3r/GUI/Field.cpp:291 msgid "Parameter validation" msgstr "Validace parametru" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3418 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3551 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3881 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4014 msgid "Part" msgstr "Část" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2494 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2886 msgid "Part manipulation" msgstr "Manipulace s částmi" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2483 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2875 msgid "Part Settings to modify" msgstr "Změna nastavení části" -#: src/slic3r/GUI/GLCanvas3D.cpp:4514 +#: src/libslic3r/PrintConfig.cpp:138 +msgid "Password" +msgstr "Heslo" + +#: src/slic3r/GUI/GLCanvas3D.cpp:4880 msgid "Paste" msgstr "Vložit" -#: src/slic3r/GUI/MainFrame.cpp:592 +#: src/slic3r/GUI/MainFrame.cpp:1198 msgid "Paste clipboard" msgstr "Vložit ze schránky" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:133 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:128 msgid "Paste from clipboard" msgstr "Vložit ze schránky" -#: src/slic3r/GUI/Plater.cpp:5606 +#: src/slic3r/GUI/Plater.cpp:5803 msgid "Paste From Clipboard" msgstr "Vložení ze schránky" -#: src/libslic3r/PrintConfig.cpp:2002 +#: src/libslic3r/PrintConfig.cpp:2144 msgid "Pattern" msgstr "Vzor" -#: src/libslic3r/PrintConfig.cpp:1891 +#: src/libslic3r/PrintConfig.cpp:2033 msgid "Pattern angle" msgstr "Úhel vzoru" -#: src/libslic3r/PrintConfig.cpp:2016 +#: src/libslic3r/PrintConfig.cpp:2158 msgid "Pattern spacing" msgstr "Rozteč podpěr" -#: src/libslic3r/PrintConfig.cpp:2004 +#: src/libslic3r/PrintConfig.cpp:2146 msgid "Pattern used to generate support material." msgstr "Vzor použitý pro generování podpěr." -#: src/slic3r/GUI/Plater.cpp:1261 +#: src/slic3r/GUI/GCodeViewer.cpp:2437 src/slic3r/GUI/GCodeViewer.cpp:2460 +#: src/slic3r/GUI/Plater.cpp:1199 msgid "Pause" msgstr "Pozastavení" -#: src/slic3r/GUI/DoubleSlider.cpp:1009 +#: src/slic3r/GUI/DoubleSlider.cpp:1133 msgid "Pause print (\"%1%\")" msgstr "Pozastavení tisku (\"%1%\")" -#: src/slic3r/GUI/GLCanvas3D.cpp:934 src/slic3r/GUI/GLCanvas3D.cpp:943 -#: src/slic3r/GUI/GLCanvas3D.cpp:982 +#: src/slic3r/GUI/Tab.cpp:2209 src/libslic3r/PrintConfig.cpp:1969 +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/slic3r/GUI/Gizmos/GLGizmoCut.cpp:175 +#: 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." + +#: src/slic3r/GUI/GCodeViewer.cpp:2233 +msgid "Percentage" +msgstr "Procentuálně" + +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:177 msgid "Perform cut" msgstr "Provést řez" -#: src/libslic3r/PrintConfig.cpp:2927 +#: src/libslic3r/PrintConfig.cpp:3091 msgid "Performance vs accuracy of calculation. Lower values may produce unwanted artifacts." msgstr "Rychlost vs. přesnost výpočtu. Nižší hodnoty mohou způsobit nežádoucí artefakty." -#: src/slic3r/GUI/GUI_Preview.cpp:237 src/libslic3r/ExtrusionEntity.cpp:310 +#: src/slic3r/GUI/GUI_Preview.cpp:301 src/libslic3r/ExtrusionEntity.cpp:314 +#: src/libslic3r/ExtrusionEntity.cpp:336 msgid "Perimeter" msgstr "Perimetr" -#: src/libslic3r/PrintConfig.cpp:1408 +#: src/libslic3r/PrintConfig.cpp:1516 msgid "Perimeter extruder" msgstr "Extruder pro perimetry" -#: src/slic3r/GUI/PresetHints.cpp:165 +#: src/slic3r/GUI/PresetHints.cpp:164 msgid "perimeters" msgstr "perimetry" -#: src/libslic3r/PrintConfig.cpp:1399 src/libslic3r/PrintConfig.cpp:1417 -#: src/libslic3r/PrintConfig.cpp:1430 src/libslic3r/PrintConfig.cpp:1440 +#: src/libslic3r/PrintConfig.cpp:1507 src/libslic3r/PrintConfig.cpp:1525 +#: src/libslic3r/PrintConfig.cpp:1538 src/libslic3r/PrintConfig.cpp:1548 msgid "Perimeters" msgstr "Perimetry" -#: src/slic3r/GUI/ConfigWizard.cpp:860 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:159 +msgid "Physical Printer" +msgstr "Fyzická tiskárna" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:789 +#: src/slic3r/GUI/PresetComboBoxes.cpp:948 +msgid "Physical printers" +msgstr "Fyzické tiskárny" + +#: src/slic3r/GUI/ConfigWizard.cpp:1226 #, c-format msgid "Pick another vendor supported by %s" msgstr "Vyberte si jiného výrobce, který je podporováný programem %s" @@ -5364,126 +6253,148 @@ 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:2681 +#: src/libslic3r/PrintConfig.cpp:2822 +msgid "Pillar connection mode" +msgstr "Způsob propojení podpěr" + +#: src/libslic3r/PrintConfig.cpp:2791 +msgid "Pillar diameter" +msgstr "Průměr podpěry" + +#: src/libslic3r/PrintConfig.cpp:2845 msgid "Pillar widening factor" msgstr "Koeficient rozšiřování podpěry" -#: src/slic3r/GUI/ConfigManipulation.cpp:330 +#: src/slic3r/GUI/ConfigManipulation.cpp:335 msgid "Pinhead diameter should be smaller than the pillar diameter." msgstr "Průměr hrotu podpěry by měl být menší než průměr podpěrných sloupů." -#: src/slic3r/GUI/DoubleSlider.cpp:79 +#: src/libslic3r/PrintConfig.cpp:2763 +msgid "Pinhead front diameter" +msgstr "Průměr podpěrného hrotu" + +#: src/libslic3r/PrintConfig.cpp:2781 +msgid "Pinhead width" +msgstr "Šířka podpěrného hrotu" + +#: src/slic3r/GUI/DoubleSlider.cpp:110 msgid "Place bearings in slots and resume printing" msgstr "Vložte ložiska do otvorů a pokračujte v tisku" -#: src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp:45 +#: src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp:41 msgid "Place on face" msgstr "Umístit plochou na podložku" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:192 src/slic3r/GUI/MainFrame.cpp:204 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:190 src/slic3r/GUI/MainFrame.cpp:340 +#: src/slic3r/GUI/MainFrame.cpp:352 msgid "Plater" msgstr "Podložka" -#: src/slic3r/GUI/GUI_App.cpp:1085 +#: src/slic3r/GUI/GUI_App.cpp:1877 msgid "Please check and fix your object list." msgstr "Zkontrolujte a opravte seznam objektů." -#: src/slic3r/GUI/Plater.cpp:2312 src/slic3r/GUI/Tab.cpp:2959 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:209 src/slic3r/GUI/Plater.cpp:2255 +#: src/slic3r/GUI/Tab.cpp:3188 msgid "Please check your object list before preset changing." msgstr "Před změnou nastavení zkontrolujte prosím seznam objektů." -#: src/slic3r/GUI/Plater.cpp:3286 +#: src/slic3r/GUI/Plater.cpp:3089 msgid "Please select the file to reload" msgstr "Vyberte soubor, který chcete znovu načíst" -#: src/slic3r/GUI/AboutDialog.cpp:39 src/slic3r/GUI/AboutDialog.cpp:291 +#: src/slic3r/GUI/AboutDialog.cpp:43 src/slic3r/GUI/AboutDialog.cpp:48 +#: src/slic3r/GUI/AboutDialog.cpp:317 msgid "Portions copyright" msgstr "Autorská práva" -#: src/libslic3r/PrintConfig.cpp:2400 +#: src/libslic3r/PrintConfig.cpp:2543 msgid "Portrait" msgstr "Orientace na výšku" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:215 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:457 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:223 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:505 msgid "Position" msgstr "Pozice" -#: src/slic3r/GUI/Tab.cpp:2367 +#: src/slic3r/GUI/Tab.cpp:2536 msgid "Position (for multi-extruder printers)" msgstr "Pozice (pro tiskárny s více extrudery)" -#: src/libslic3r/PrintConfig.cpp:1623 +#: src/libslic3r/PrintConfig.cpp:1731 msgid "Position of perimeters starting points." msgstr "Pozice začátku perimetrů." -#: src/libslic3r/PrintConfig.cpp:2224 +#: src/libslic3r/PrintConfig.cpp:2367 msgid "Position X" msgstr "Pozice X" -#: src/libslic3r/PrintConfig.cpp:2231 +#: src/libslic3r/PrintConfig.cpp:2374 msgid "Position Y" msgstr "Pozice Y" -#: src/slic3r/GUI/Tab.cpp:1245 src/libslic3r/PrintConfig.cpp:1453 +#: src/slic3r/GUI/Tab.cpp:1575 src/libslic3r/PrintConfig.cpp:1561 msgid "Post-processing scripts" msgstr "Postprodukční skripty" -#: src/slic3r/GUI/MainFrame.cpp:629 +#: src/slic3r/GUI/MainFrame.cpp:1237 msgid "Pre&view" msgstr "&Náhled" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:149 src/slic3r/GUI/Preferences.cpp:10 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:143 src/slic3r/GUI/Preferences.cpp:12 msgid "Preferences" msgstr "Nastavení" -#: src/libslic3r/PrintConfig.cpp:1641 +#: src/libslic3r/PrintConfig.cpp:1749 msgid "Preferred direction of the seam" msgstr "Preferovaný směr švu" -#: src/libslic3r/PrintConfig.cpp:1652 +#: src/libslic3r/PrintConfig.cpp:1760 msgid "Preferred direction of the seam - jitter" msgstr "Preferovaný směr švu - rozkmit" -#: src/libslic3r/PrintObject.cpp:255 +#: src/libslic3r/PrintObject.cpp:261 msgid "Preparing infill" msgstr "Příprava výplně" -#: src/slic3r/GUI/Tab.cpp:2920 -#, c-format -msgid "Preset (%s)" -msgstr "Přednastavení (%s)" +#: src/slic3r/GUI/GUI_App.cpp:855 +msgid "Preparing settings tabs" +msgstr "Příprava karet s nastavením" -#: src/slic3r/GUI/Tab.cpp:3082 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1009 +msgid "Preset \"%1%\" has the following unsaved changes:" +msgstr "Přednastavení \"%1%\"má následující neuložené změny:" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1014 +msgid "Preset \"%1%\" is not compatible with the new print profile and it has the following unsaved changes:" +msgstr "Přednastavení \"%1%\" není kompatibilní s novým tiskovým profilem a obsahuje následující neuložené změny:" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1013 +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:148 msgid "Preset with name \"%1%\" already exists." msgstr "Přednastavení s názvem \"%1%\" již existuje." -#: src/slic3r/GUI/Tab.cpp:3029 +#: src/slic3r/GUI/SavePresetDialog.cpp:219 msgctxt "PresetName" msgid "Copy" msgstr "Kopie" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:163 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:157 msgid "Press to activate deselection rectangle" msgstr "Stiskem aktivujete obdélníkové odstranění výběru" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:197 -msgid "Press to activate one direction scaling in Gizmo scale" -msgstr "Stiskem aktivujete změnu velikosti pouze v jednom směru" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:162 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:156 msgid "Press to activate selection rectangle" msgstr "Stiskem aktivujete obdélníkový výběr" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:198 -msgid "" -"Press to scale (in Gizmo scale) or rotate (in Gizmo rotate)\n" -"selected objects around their own center" -msgstr "" -"Změna velikosti nebo rotace\n" -"vybraných objektů kolem vlastních středů" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:161 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:155 msgid "" "Press to select multiple objects\n" "or move multiple objects with mouse" @@ -5491,164 +6402,189 @@ msgstr "" "Stisknutím vyberte více objektů\n" "nebo přesuňte více objektů pomocí myši" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:195 -#, no-c-format +#: src/slic3r/GUI/KBShortcutsDialog.cpp:221 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:222 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:231 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:232 msgid "" -"Press to snap by 5% in Gizmo scale\n" -"or to snap by 1mm in Gizmo move" +"Press to speed up 5 times while moving thumb\n" +"with arrow keys or mouse wheel" msgstr "" -"Stiskni pro 5% krok při změně velikosti,\n" -"nebo 1mm krok při posunu" +"5× zrychlíte pohyb posuvníku pomocí\n" +"šipek nebo kolečkem myši" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:211 src/slic3r/GUI/Plater.cpp:4105 -#: src/slic3r/GUI/Tab.cpp:2390 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:212 src/slic3r/GUI/Plater.cpp:4052 +#: src/slic3r/GUI/Tab.cpp:2559 msgid "Preview" msgstr "Náhled" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:42 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:41 msgid "Preview hollowed and drilled model" msgstr "Náhled dutého modelu" -#: src/slic3r/GUI/MainFrame.cpp:790 +#: src/slic3r/GUI/MainFrame.cpp:1491 msgid "Previously sliced file (" msgstr "Dříve slicovaný soubor (" -#: src/libslic3r/PrintConfig.cpp:1851 +#: src/libslic3r/PrintConfig.cpp:1993 msgid "Prime all printing extruders" msgstr "Příprava všech tiskových extruderů" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:51 src/slic3r/GUI/Preset.cpp:1521 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:51 src/libslic3r/Preset.cpp:1300 msgid "print" msgstr "tisk" -#: src/slic3r/GUI/MainFrame.cpp:648 +#: src/slic3r/GUI/GCodeViewer.cpp:2436 src/slic3r/GUI/GCodeViewer.cpp:2451 +msgid "Print" +msgstr "Tisk" + +#: src/slic3r/GUI/MainFrame.cpp:1258 msgid "Print &Host Upload Queue" msgstr "Fronta na&hrávání do tiskového serveru" -#: src/libslic3r/PrintConfig.cpp:471 +#: src/libslic3r/PrintConfig.cpp:507 msgid "Print contour perimeters from the outermost one to the innermost one instead of the default inverse order." msgstr "Tisk obrysových perimetrů od vnějších po vnitřní namísto opačného výchozího pořadí." -#: src/slic3r/GUI/ConfigWizard.cpp:952 +#: src/slic3r/GUI/ConfigWizard.cpp:1318 msgid "Print Diameters" msgstr "Parametry extruderu" -#: src/slic3r/GUI/Tab.cpp:1944 src/slic3r/GUI/Tab.cpp:2123 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:209 src/slic3r/GUI/Tab.cpp:2024 msgid "Print Host upload" -msgstr "Nahrání do tiskového serveru" +msgstr "Nahrávání do tiskového serveru" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:142 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:138 #: src/slic3r/GUI/PrintHostDialogs.cpp:136 msgid "Print host upload queue" msgstr "Fronta nahrávaní do tiskového serveru" -#: src/slic3r/GUI/DoubleSlider.cpp:970 +#: src/slic3r/GUI/DoubleSlider.cpp:1093 msgid "Print mode" msgstr "Režim tisku" -#: src/slic3r/GUI/Tab.hpp:328 src/slic3r/GUI/Tab.hpp:431 +#: src/slic3r/GUI/GCodeViewer.cpp:2579 src/slic3r/GUI/GUI_Preview.cpp:1476 +msgid "Print pauses" +msgstr "Pauzy tisku" + +#: src/slic3r/GUI/Tab.hpp:378 src/slic3r/GUI/Tab.hpp:502 msgid "Print Settings" msgstr "Nastavení tisku" -#: src/slic3r/GUI/Plater.cpp:815 +#: src/slic3r/GUI/Plater.cpp:690 msgid "Print settings" msgstr "Nastavení tisku" -#: src/slic3r/GUI/Tab.cpp:1478 +#: src/slic3r/GUI/GLCanvas3D.cpp:4303 src/slic3r/GUI/GLCanvas3D.cpp:4939 +msgid "Print Settings Tab" +msgstr "Panel Nastavení tisku" + +#: src/slic3r/GUI/Tab.cpp:1824 msgid "Print speed override" msgstr "Přepsání rychlosti tisku" -#: src/libslic3r/GCode.cpp:638 +#: src/libslic3r/GCode.cpp:623 msgid "Print z" msgstr "Tisk ve výšce" -#: src/slic3r/GUI/MainFrame.cpp:621 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Print&er Settings Tab" -msgstr "Panel nastav&ení tiskárny" +msgstr "Panel Nastav&ení tiskárny" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1621 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1750 msgid "Printable" msgstr "Tisknout objekt" -#: src/slic3r/GUI/Plater.cpp:819 +#: src/slic3r/GUI/Plater.cpp:694 msgid "Printer" msgstr "Tiskárna" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:53 src/slic3r/GUI/Preset.cpp:1525 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:53 src/libslic3r/Preset.cpp:1304 msgid "printer" msgstr "tiskárna" -#: src/libslic3r/PrintConfig.cpp:2439 src/libslic3r/PrintConfig.cpp:2440 +#: src/libslic3r/PrintConfig.cpp:2582 src/libslic3r/PrintConfig.cpp:2583 msgid "Printer absolute correction" msgstr "Absolutní korekce tiskárny" -#: src/libslic3r/PrintConfig.cpp:2456 src/libslic3r/PrintConfig.cpp:2457 +#: src/libslic3r/PrintConfig.cpp:2599 src/libslic3r/PrintConfig.cpp:2600 msgid "Printer gamma correction" msgstr "Gamma korekce tiskárny" -#: src/slic3r/GUI/Tab.cpp:976 +#: src/slic3r/GUI/Tab.cpp:1294 msgid "printer model" msgstr "model tiskárny" -#: src/libslic3r/PrintConfig.cpp:1472 +#: src/libslic3r/PrintConfig.cpp:1580 msgid "Printer notes" msgstr "Poznámky o tiskárně" -#: src/libslic3r/PrintConfig.cpp:2431 src/libslic3r/PrintConfig.cpp:2432 -#: src/libslic3r/PrintConfig.cpp:2433 +#: src/libslic3r/PrintConfig.cpp:144 +msgid "Printer preset name" +msgstr "Název přednastavení tiskárny" + +#: src/libslic3r/PrintConfig.cpp:2574 src/libslic3r/PrintConfig.cpp:2575 +#: src/libslic3r/PrintConfig.cpp:2576 msgid "Printer scaling correction" msgstr "Korekce měřítka tisku" -#: src/slic3r/GUI/Tab.hpp:391 +#: src/slic3r/GUI/Tab.hpp:453 msgid "Printer Settings" msgstr "Nastavení tiskárny" +#: src/slic3r/GUI/GLCanvas3D.cpp:4305 src/slic3r/GUI/GLCanvas3D.cpp:4941 +msgid "Printer Settings Tab" +msgstr "Panel Nastavení tiskárny" + #: src/libslic3r/PrintConfig.cpp:43 src/libslic3r/PrintConfig.cpp:44 msgid "Printer technology" msgstr "Technologie tisku" -#: src/libslic3r/PrintConfig.cpp:1466 +#: src/libslic3r/PrintConfig.cpp:1574 msgid "Printer type" msgstr "Typ tiskárny" -#: src/libslic3r/PrintConfig.cpp:1487 +#: src/libslic3r/PrintConfig.cpp:1595 msgid "Printer variant" msgstr "Varianta tiskárny" -#: src/libslic3r/PrintConfig.cpp:1481 +#: src/libslic3r/PrintConfig.cpp:1589 msgid "Printer vendor" msgstr "Prodejce tiskárny" -#: src/libslic3r/Print.cpp:1388 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:476 +msgid "Printer with name \"%1%\" already exists." +msgstr "Tiskárna s názvem \"%1%\" již existuje." + +#: src/slic3r/GUI/ConfigWizard.cpp:587 +msgid "Printer:" +msgstr "Tiskárna:" + +#: src/libslic3r/Print.cpp:1414 msgid "Printing with multiple extruders of differing nozzle diameters. If support is to be printed with the current extruder (support_material_extruder == 0 or support_material_interface_extruder == 0), all nozzles have to be of the same diameter." msgstr "Tisk s více extrudery různých průměrů trysek. Má-li být podpěra tisknuta aktuálním extruderem (support_material_extruder == 0 nebo support_material_interface_extruder == 0), musí mít všechny trysky stejný průměr." #. TRN "Processing input_file_basename" -#: src/slic3r/GUI/MainFrame.cpp:849 +#: src/slic3r/GUI/MainFrame.cpp:1550 #, c-format msgid "Processing %s" msgstr "Zpracovávám %s" -#: src/slic3r/GUI/Plater.cpp:2283 -#, c-format -msgid "Processing input file %s" -msgstr "Zpracovávám vstupní soubor %s" - -#: src/libslic3r/PrintObject.cpp:108 +#: src/libslic3r/PrintObject.cpp:114 msgid "Processing triangulated mesh" msgstr "Zpracovávám tringulační sítě" -#: src/slic3r/GUI/Tab.cpp:1259 src/slic3r/GUI/Tab.cpp:1549 -#: src/slic3r/GUI/Tab.cpp:2020 src/slic3r/GUI/Tab.cpp:2136 -#: src/slic3r/GUI/Tab.cpp:3544 src/slic3r/GUI/Tab.cpp:3672 +#: src/slic3r/GUI/Tab.cpp:1589 src/slic3r/GUI/Tab.cpp:1896 +#: src/slic3r/GUI/Tab.cpp:2229 src/slic3r/GUI/Tab.cpp:2305 +#: src/slic3r/GUI/Tab.cpp:3960 src/slic3r/GUI/Tab.cpp:4091 msgid "Profile dependencies" msgstr "Profilové závislosti" -#: src/slic3r/GUI/ConfigWizard.cpp:566 +#: src/slic3r/GUI/ConfigWizard.cpp:590 msgid "Profile:" msgstr "Profil:" -#: src/slic3r/GUI/PrintHostDialogs.cpp:150 +#: src/slic3r/GUI/PrintHostDialogs.cpp:148 msgid "Progress" msgstr "Průběh" @@ -5656,23 +6592,35 @@ msgstr "Průběh" msgid "Progress:" msgstr "Průběh:" -#: src/slic3r/GUI/MainFrame.cpp:684 +#: src/slic3r/GUI/MainFrame.cpp:909 src/slic3r/GUI/MainFrame.cpp:1308 msgid "Prusa 3D &Drivers" msgstr "Prusa 3&D Ovladače" -#: src/slic3r/GUI/ConfigWizard.cpp:1995 +#: src/slic3r/GUI/ConfigWizard.cpp:2506 msgid "Prusa FFF Technology Printers" msgstr "Prusa tiskárny technologie FFF" -#: src/slic3r/GUI/ConfigWizard.cpp:1998 +#: src/slic3r/GUI/ConfigWizard.cpp:2509 msgid "Prusa MSLA Technology Printers" msgstr "Prusa tiskárny technologie MSLA" -#: src/slic3r/GUI/AboutDialog.cpp:260 +#: src/slic3r/Utils/Http.cpp:78 +msgid "PrusaSlicer detected system SSL certificate store in: %1%" +msgstr "PrusaSlicer detekoval úložiště SSL certifikátu v: %1%" + +#: src/slic3r/GUI/GUI_Init.cpp:85 src/slic3r/GUI/GUI_Init.cpp:88 +msgid "PrusaSlicer GUI initialization failed" +msgstr "Inicializace grafického uživatelského rozhraní PrusaSliceru se nezdařila" + +#: 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." -#: src/slic3r/GUI/GLCanvas3DManager.cpp:284 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:525 +msgid "PrusaSlicer is closing: Unsaved Changes" +msgstr "PrusaSlicer se zavírá: Neuložené změny" + +#: src/slic3r/GUI/OpenGLManager.cpp:259 #, c-format msgid "" "PrusaSlicer requires OpenGL 2.0 capable graphics driver to run correctly, \n" @@ -5683,7 +6631,11 @@ msgstr "PrusaSlicer vyžaduje grafický ovladač s funkčním OpenGL 2.0. Zatím msgid "PrusaSlicer version" msgstr "verze PrusaSliceru" -#: src/slic3r/GUI/ConfigWizard.cpp:815 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:662 +msgid "PrusaSlicer will remember your action." +msgstr "PrusaSlicer si vaši akci zapamatuje." + +#: src/slic3r/GUI/ConfigWizard.cpp:1174 msgid "" "PrusaSlicer's user interfaces comes in three variants:\n" "Simple, Advanced, and Expert.\n" @@ -5693,64 +6645,80 @@ msgstr "" "Jednoduché, pokročilé a expertní.\n" "Jednoduchý režim zobrazuje pouze nejčastěji používaná nastavení relevantní pro běžný 3D tisk. Další dva nabízejí detailnější doladění a proto jsou vhodné pro pokročilé a expertní uživatele." -#: src/libslic3r/PrintConfig.cpp:2254 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:668 +msgid "PrusaSlicer: Don't ask me again" +msgstr "PrusaSlicer: Již se znavu neptat" + +#: src/libslic3r/PrintConfig.cpp:2397 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 "Vyčištění trysky po výměně filamentu se provede uvnitř výplní tohoto objektu. Tím se snižuje množství odpadu, ale může to mít za následek delší dobu tisku v důsledku dodatečných pohybů." -#: src/slic3r/GUI/Plater.cpp:544 +#: src/slic3r/GUI/Plater.cpp:410 msgid "Purging volumes" msgstr "Objemy čištění" -#: src/libslic3r/PrintConfig.cpp:2207 +#: src/libslic3r/PrintConfig.cpp:2350 msgid "Purging volumes - load/unload volumes" msgstr "Objemy čištění - zaváděné / vyjmuté objemy" -#: src/libslic3r/PrintConfig.cpp:2214 +#: src/libslic3r/PrintConfig.cpp:2357 msgid "Purging volumes - matrix" msgstr "Objemy čištění - matice" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:44 +#: src/libslic3r/PrintConfig.cpp:1201 +msgid "Purpose of Machine Limits" +msgstr "Účel limitů stroje" + +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:43 msgid "Quality" msgstr "Kvalita" -#: src/slic3r/GUI/Tab.cpp:1080 +#: src/slic3r/GUI/Tab.cpp:1402 msgid "Quality (slower slicing)" msgstr "Kvalita (pomalejší slicing)" -#: src/slic3r/GUI/GLCanvas3D.cpp:273 +#: src/slic3r/GUI/GLCanvas3D.cpp:260 msgid "Quality / Speed" msgstr "Kvalita / Rychlost" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1182 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1530 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1536 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1849 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:61 +msgid "Quick" +msgstr "Rychlé" + +#: 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 #, c-format msgid "Quick Add Settings (%s)" msgstr "Rychlé přidání nastavení (%s)" -#: src/slic3r/GUI/MainFrame.cpp:512 +#: src/slic3r/GUI/MainFrame.cpp:1113 msgid "Quick Slice" msgstr "Rychlé Slicování" -#: src/slic3r/GUI/MainFrame.cpp:518 +#: src/slic3r/GUI/MainFrame.cpp:1119 msgid "Quick Slice and Save As" msgstr "Rychlé Slicování a Uložit jako" -#: src/slic3r/GUI/MainFrame.cpp:540 +#: src/slic3r/GUI/MainFrame.cpp:1144 src/slic3r/GUI/MainFrame.cpp:1402 #, c-format msgid "Quit %s" msgstr "Ukončit %s" -#: src/slic3r/GUI/GLCanvas3D.cpp:294 src/libslic3r/PrintConfig.cpp:511 +#: src/slic3r/GUI/GUI_App.cpp:396 +msgid "Quit, I will move my data now" +msgstr "Zavřít aplikaci, přesunu si svá data" + +#: src/slic3r/GUI/GLCanvas3D.cpp:280 src/libslic3r/PrintConfig.cpp:547 msgid "Radius" msgstr "Rádius" -#: src/slic3r/GUI/Tab.cpp:1127 +#: src/slic3r/GUI/Tab.cpp:1456 msgid "Raft" msgstr "Raft" -#: src/libslic3r/PrintConfig.cpp:1501 +#: src/libslic3r/PrintConfig.cpp:1609 msgid "Raft layers" msgstr "Vrstev raftu" @@ -5776,27 +6744,27 @@ msgstr "Rozestup linek při rapidní extruzi" msgid "Ramming line width" msgstr "Šířka linky při rapidní extruzi" -#: src/libslic3r/PrintConfig.cpp:694 +#: src/libslic3r/PrintConfig.cpp:730 msgid "Ramming parameters" msgstr "Parametry rapidní extruze" -#: src/slic3r/GUI/Tab.cpp:1505 +#: src/slic3r/GUI/Tab.cpp:1850 msgid "Ramming settings" msgstr "Nastavení rapidní extruze" -#: src/libslic3r/PrintConfig.cpp:1629 +#: src/libslic3r/PrintConfig.cpp:1737 msgid "Random" msgstr "Náhodný" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:94 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:96 msgid "Range" msgstr "Rozsah" -#: src/libslic3r/SLAPrintSteps.cpp:65 +#: src/libslic3r/SLAPrintSteps.cpp:66 msgid "Rasterizing layers" msgstr "Rasterizace vrstev" -#: src/slic3r/GUI/MainFrame.cpp:596 +#: src/slic3r/GUI/MainFrame.cpp:1202 msgid "Re&load from disk" msgstr "Znovu &načíst z disku" @@ -5808,58 +6776,59 @@ msgstr "Přenastavit" msgid "Ready" msgstr "Připraveno" -#: src/slic3r/GUI/Plater.cpp:3115 +#: src/slic3r/GUI/Plater.cpp:2915 msgid "Ready to slice" msgstr "Připraven ke slicování" -#: src/slic3r/GUI/MainFrame.cpp:669 src/libslic3r/PrintConfig.cpp:1632 +#: src/slic3r/GUI/MainFrame.cpp:966 src/slic3r/GUI/MainFrame.cpp:1286 +#: src/libslic3r/PrintConfig.cpp:1740 msgid "Rear" msgstr "Zezadu" -#: src/slic3r/GUI/MainFrame.cpp:669 +#: src/slic3r/GUI/MainFrame.cpp:966 src/slic3r/GUI/MainFrame.cpp:1286 msgid "Rear View" msgstr "Pohled zezadu" -#: src/slic3r/GUI/MainFrame.cpp:413 +#: src/slic3r/GUI/MainFrame.cpp:994 msgid "Recent projects" msgstr "N&edávné projekty" -#: src/slic3r/GUI/PresetHints.cpp:263 +#: src/slic3r/GUI/PresetHints.cpp:262 #, c-format msgid "Recommended object thin wall thickness for layer height %.2f and" msgstr "Doporučená tloušťka stěny objektu pro výšku vrstvy %.2f a" -#: src/slic3r/GUI/PresetHints.cpp:274 +#: src/slic3r/GUI/PresetHints.cpp:273 msgid "Recommended object thin wall thickness: Not available due to excessively small extrusion width." msgstr "Doporučená tloušťka stěny objektu: Není k dispozici kvůli příliš malé šířce extruze." -#: src/slic3r/GUI/PresetHints.cpp:247 +#: src/slic3r/GUI/PresetHints.cpp:246 msgid "Recommended object thin wall thickness: Not available due to invalid layer height." msgstr "Doporučená tloušťka stěny objektu: Není k dispozici kvůli neplatné výšce vrstvy." -#: src/slic3r/GUI/GUI_App.cpp:450 src/slic3r/GUI/GUI_App.cpp:459 +#: src/slic3r/GUI/GUI_App.cpp:1102 src/slic3r/GUI/GUI_App.cpp:1115 msgid "Recreating" msgstr "Obnovení" -#: src/slic3r/GUI/BedShapeDialog.cpp:73 +#: src/slic3r/GUI/BedShapeDialog.cpp:141 msgid "Rectangular" msgstr "Obdélníkový" -#: src/libslic3r/PrintConfig.cpp:425 src/libslic3r/PrintConfig.cpp:843 -#: src/libslic3r/PrintConfig.cpp:2009 +#: src/libslic3r/PrintConfig.cpp:460 src/libslic3r/PrintConfig.cpp:881 +#: src/libslic3r/PrintConfig.cpp:2151 msgid "Rectilinear" msgstr "Přímočará" -#: src/libslic3r/PrintConfig.cpp:2010 +#: src/libslic3r/PrintConfig.cpp:2152 msgid "Rectilinear grid" msgstr "Přímočará mřížka" -#: src/slic3r/GUI/GLCanvas3D.cpp:4657 src/slic3r/GUI/KBShortcutsDialog.cpp:131 -#: src/slic3r/GUI/MainFrame.cpp:584 +#: src/slic3r/GUI/GLCanvas3D.cpp:5067 src/slic3r/GUI/KBShortcutsDialog.cpp:126 +#: src/slic3r/GUI/MainFrame.cpp:1190 msgid "Redo" msgstr "Vpřed" -#: src/slic3r/GUI/GLCanvas3D.cpp:4065 +#: src/slic3r/GUI/GLCanvas3D.cpp:4382 #, c-format msgid "Redo %1$d Action" msgid_plural "Redo %1$d Actions" @@ -5867,152 +6836,184 @@ msgstr[0] "%1$d Akce Vpřed" msgstr[1] "%1$d Akce Vpřed" msgstr[2] "%1$d Akcí Vpřed" -#: src/slic3r/GUI/GLCanvas3D.cpp:4047 +#: src/slic3r/GUI/GLCanvas3D.cpp:4361 msgid "Redo History" msgstr "Historie operací Vpřed" -#: src/slic3r/GUI/Tab.cpp:1098 +#: src/slic3r/GUI/Tab.cpp:1426 msgid "Reducing printing time" msgstr "Zkracování tiskového času" -#: src/slic3r/GUI/Plater.cpp:3452 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:327 +msgid "Refresh Printers" +msgstr "Obnovit tiskárny" + +#: src/libslic3r/PrintConfig.cpp:145 +msgid "Related printer preset name" +msgstr "Název souvisejícího přednastavení tiskárny" + +#: src/slic3r/GUI/Plater.cpp:3257 msgid "Reload all from disk" msgstr "Vše znovu načíst z disku" -#: src/slic3r/GUI/ConfigWizard.cpp:798 src/slic3r/GUI/GUI_ObjectList.cpp:1664 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3956 src/slic3r/GUI/Plater.cpp:3225 -#: src/slic3r/GUI/Plater.cpp:3934 src/slic3r/GUI/Plater.cpp:3963 +#: src/slic3r/GUI/ConfigWizard.cpp:1157 src/slic3r/GUI/GUI_ObjectList.cpp:1793 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4439 src/slic3r/GUI/Plater.cpp:3028 +#: src/slic3r/GUI/Plater.cpp:3852 src/slic3r/GUI/Plater.cpp:3881 msgid "Reload from disk" msgstr "Znovu načíst z disku" -#: src/slic3r/GUI/Plater.cpp:3339 +#: src/slic3r/GUI/Plater.cpp:3142 msgid "Reload from:" msgstr "Znovu načíst z:" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:134 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:129 msgid "Reload plater from disk" msgstr "Znovu načíst podložku z disku" -#: src/slic3r/GUI/MainFrame.cpp:597 +#: src/slic3r/GUI/MainFrame.cpp:1203 msgid "Reload the plater from disk" msgstr "Znovu načíst podložku z disku" -#: src/slic3r/GUI/Plater.cpp:3963 +#: src/slic3r/GUI/Plater.cpp:3881 msgid "Reload the selected object from disk" msgstr "Znovu načíst vybraný objekt z disku" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1664 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3956 src/slic3r/GUI/Plater.cpp:3934 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1793 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4439 src/slic3r/GUI/Plater.cpp:3852 msgid "Reload the selected volumes from disk" msgstr "Znovu načíst vybrané objekty z disku" -#: src/slic3r/GUI/Preferences.cpp:39 +#: src/slic3r/GUI/GCodeViewer.cpp:2442 src/slic3r/GUI/GCodeViewer.cpp:2445 +msgid "Remaining time" +msgstr "Zbývající čas" + +#: src/slic3r/GUI/GUI_App.cpp:720 src/slic3r/GUI/UnsavedChangesDialog.cpp:653 +msgid "Remember my choice" +msgstr "Zapamatovat moji volbu" + +#: src/slic3r/GUI/Preferences.cpp:52 msgid "Remember output directory" msgstr "Pamatovat si výstupní složku" -#: src/slic3r/GUI/Tab.cpp:3121 +#: src/slic3r/GUI/MainFrame.cpp:166 +msgid "Remember to check for updates at https://github.com/prusa3d/PrusaSlicer/releases" +msgstr "Nezapomeňte zkontrolovat aktualizace na https://github.com/prusa3d/PrusaSlicer/releases" + +#: src/slic3r/GUI/Tab.cpp:3386 msgid "remove" msgstr "odebrat" -#: src/slic3r/GUI/BedShapeDialog.cpp:190 src/slic3r/GUI/BedShapeDialog.cpp:269 -#: src/slic3r/GUI/Tab.cpp:3124 +#: src/slic3r/GUI/BedShapeDialog.cpp:333 src/slic3r/GUI/BedShapeDialog.cpp:413 +#: src/slic3r/GUI/Tab.cpp:3423 msgid "Remove" msgstr "Odebrat" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:48 msgid "Remove all holes" msgstr "Odebrat všechny otvory" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:51 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:50 msgid "Remove all points" msgstr "Odebrat všechny body" -#: src/slic3r/GUI/GLCanvas3D.cpp:246 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:52 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:35 +msgid "Remove all selection" +msgstr "Smazat celý výběr" + +#: src/slic3r/GUI/GLCanvas3D.cpp:239 msgid "Remove detail" msgstr "Ubrat detail" -#: src/slic3r/GUI/Plater.cpp:879 -msgid "Remove device" -msgstr "Odebrat zařízení" - #: src/slic3r/GUI/ExtruderSequenceDialog.cpp:182 msgid "Remove extruder from sequence" msgstr "Odebrat extruder ze seznamu" -#: src/slic3r/GUI/GLCanvas3D.cpp:4537 src/slic3r/GUI/Plater.cpp:3942 +#: src/slic3r/GUI/GLCanvas3D.cpp:4903 src/slic3r/GUI/Plater.cpp:3860 msgid "Remove instance" msgstr "Odebrat instanci" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:160 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:154 msgid "Remove Instance of the selected object" msgstr "Odebrat instanci vybraného objektu" -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:153 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:161 msgid "Remove layer range" msgstr "Odstranit rozsah vrstev" -#: src/slic3r/GUI/Plater.cpp:3942 +#: src/slic3r/GUI/Plater.cpp:3860 msgid "Remove one instance of the selected object" msgstr "Odebere jednu instanci vybraného objektu" -#: src/slic3r/GUI/GUI_ObjectSettings.cpp:95 +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:98 msgid "Remove parameter" msgstr "Odebrat parametr" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1364 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1211 msgid "Remove point" msgstr "Odebrat bod" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1367 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1214 msgid "Remove point from selection" msgstr "Odebrat bod z výběru" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:47 msgid "Remove selected holes" msgstr "Smazat označené otvory" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:50 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1371 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1218 msgid "Remove selected points" msgstr "Odebrat označené body" -#: src/slic3r/GUI/Plater.cpp:3931 src/slic3r/GUI/Plater.cpp:3953 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:51 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:34 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:368 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:378 +msgid "Remove selection" +msgstr "Odebrat výběr" + +#: src/slic3r/GUI/Plater.cpp:3849 src/slic3r/GUI/Plater.cpp:3871 msgid "Remove the selected object" msgstr "Odstranit vybraný objekt" -#: src/slic3r/GUI/ConfigWizard.cpp:453 +#: src/slic3r/GUI/ConfigWizard.cpp:456 msgid "Remove user profiles (a snapshot will be taken beforehand)" msgstr "Odstranit uživatelské profily (předtím bude proveden snapshot)" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1636 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1765 msgid "Rename" msgstr "Přejmenovat" -#: src/slic3r/GUI/GUI_ObjectList.cpp:551 +#: src/slic3r/GUI/GUI_ObjectList.cpp:589 msgid "Rename Object" msgstr "Přejmenování objektu" -#: src/slic3r/GUI/GUI_ObjectList.cpp:551 +#: src/slic3r/GUI/GUI_ObjectList.cpp:589 msgid "Rename Sub-object" msgstr "Přejmenování dílčího objektu" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3803 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4266 msgid "Renaming" msgstr "Přejmenování" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:115 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:150 msgid "Renaming of the G-code after copying to the selected destination folder has failed. Current path is %1%.tmp. Please try exporting again." msgstr "Přejmenování G-codu po zkopírování do vybrané cílové složky se nezdařilo. Aktuální cesta je %1%.tmp. Zkuste to prosím znovu." -#: src/libslic3r/PrintConfig.cpp:3515 -msgid "Render with a software renderer" -msgstr "Vykreslení pomocí softwaru" +#: src/slic3r/GUI/Preferences.cpp:255 +msgid "Render" +msgstr "Render" -#: src/libslic3r/PrintConfig.cpp:3516 +#: src/libslic3r/PrintConfig.cpp:3720 +msgid "Render with a software renderer" +msgstr "Vykreslování pomocí softwaru" + +#: src/libslic3r/PrintConfig.cpp:3721 msgid "Render with a software renderer. The bundled MESA software renderer is loaded instead of the default OpenGL driver." msgstr "Vykreslení pomocí softwaru. Namísto výchozího ovladače OpenGL je načten dodaný softwarový renderer MESA." -#: src/slic3r/GUI/MainFrame.cpp:911 src/libslic3r/PrintConfig.cpp:3447 +#: src/slic3r/GUI/MainFrame.cpp:1612 src/libslic3r/PrintConfig.cpp:3646 msgid "Repair" msgstr "Oprava" @@ -6036,38 +7037,38 @@ msgstr "Opravený soubor 3MF neobsahuje žádný objemové těleso" msgid "Repairing model by the Netfabb service" msgstr "Opravování modelu službou Netfabb" -#: src/slic3r/GUI/MainFrame.cpp:524 +#: src/slic3r/GUI/MainFrame.cpp:1125 msgid "Repeat last quick slice" msgstr "Opakovat poslední rychlé slicování" -#: src/slic3r/GUI/MainFrame.cpp:524 +#: src/slic3r/GUI/MainFrame.cpp:1125 msgid "Repeat Last Quick Slice" msgstr "Opakovat poslední rychlé slicování" -#: src/slic3r/GUI/Tab.cpp:3083 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:477 msgid "Replace?" msgstr "Nahradit?" -#: src/slic3r/GUI/MainFrame.cpp:703 +#: src/slic3r/GUI/MainFrame.cpp:928 src/slic3r/GUI/MainFrame.cpp:1327 msgid "Report an I&ssue" msgstr "Nahlá&sit chybu" -#: src/slic3r/GUI/MainFrame.cpp:703 +#: src/slic3r/GUI/MainFrame.cpp:928 src/slic3r/GUI/MainFrame.cpp:1327 #, c-format msgid "Report an issue on %s" msgstr "Nahlásit chybu v programu %s" -#: src/slic3r/Utils/PresetUpdater.cpp:713 +#: src/slic3r/Utils/PresetUpdater.cpp:733 #, c-format msgid "requires max. %s" msgstr "vyžaduje max. %s" -#: src/slic3r/Utils/PresetUpdater.cpp:710 +#: src/slic3r/Utils/PresetUpdater.cpp:730 #, c-format msgid "requires min. %s" msgstr "vyžaduje min. %s" -#: src/slic3r/Utils/PresetUpdater.cpp:705 +#: src/slic3r/Utils/PresetUpdater.cpp:726 #, c-format msgid "requires min. %s and max. %s" msgstr "vyžaduje min. %s a max. %s" @@ -6076,270 +7077,300 @@ msgstr "vyžaduje min. %s a max. %s" msgid "Rescan" msgstr "Skenovat" -#: src/slic3r/GUI/Tab.cpp:1906 -msgid "Rescan serial ports" -msgstr "Znovu prohledat sériové porty" - -#: src/slic3r/GUI/GLCanvas3D.cpp:313 +#: src/slic3r/GUI/GLCanvas3D.cpp:299 msgid "Reset" msgstr "Výchozí" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1373 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1220 msgid "Reset clipping plane" msgstr "Obnovit řezovou rovinu" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:51 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:59 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:43 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:50 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:26 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:58 msgid "Reset direction" msgstr "Resetovat směr" -#: src/slic3r/GUI/Plater.cpp:2723 +#: src/slic3r/GUI/Plater.cpp:2684 msgid "Reset Project" msgstr "Resetovat Projekt" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:363 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:372 msgid "Reset rotation" msgstr "Výchozí natočení" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:385 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:394 msgid "Reset Rotation" msgstr "Výchozí Natočení" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:397 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:399 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:407 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:409 msgid "Reset scale" msgstr "Výchozí měřítko" -#: src/slic3r/GUI/GLCanvas3D.cpp:252 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:136 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:118 +msgid "Reset selection" +msgstr "Resetovat výběr" + +#: src/slic3r/GUI/GLCanvas3D.cpp:243 msgid "Reset to base" msgstr "Obnovit na výchozí" -#: src/slic3r/GUI/Tab.cpp:2394 +#: src/slic3r/GUI/Tab.cpp:2564 msgid "Reset to Filament Color" -msgstr "Obnovit barvu filamentu" +msgstr "Obnovit na barvu filamentu" -#: src/libslic3r/PrintConfig.cpp:1511 +#: src/libslic3r/PrintConfig.cpp:1619 msgid "Resolution" msgstr "Rozlišení" -#: src/libslic3r/PrintConfig.cpp:1529 +#: src/libslic3r/PrintConfig.cpp:1637 msgid "Retract amount before wipe" msgstr "Délka retrakce před očištěním" -#: src/libslic3r/PrintConfig.cpp:1537 +#: src/libslic3r/PrintConfig.cpp:1645 msgid "Retract on layer change" msgstr "Retrakce při změně vrstvy" -#: src/slic3r/GUI/Tab.cpp:1324 src/slic3r/GUI/Tab.cpp:1383 -#: src/slic3r/GUI/Tab.cpp:2370 +#: src/slic3r/GUI/GCodeViewer.cpp:2494 src/slic3r/GUI/Tab.cpp:1670 +#: src/slic3r/GUI/Tab.cpp:2539 msgid "Retraction" msgstr "Retrakce" -#: src/libslic3r/PrintConfig.cpp:1523 +#: src/libslic3r/PrintConfig.cpp:1631 msgid "Retraction is not triggered when travel moves are shorter than this length." msgstr "Retrakce není spuštěna, pokud jsou rychloposuny pojezdu kratší než tato délka." -#: src/libslic3r/PrintConfig.cpp:1544 +#: src/libslic3r/PrintConfig.cpp:1652 msgid "Retraction Length" msgstr "Vzdálenost retrakce" -#: src/libslic3r/PrintConfig.cpp:1552 +#: src/libslic3r/PrintConfig.cpp:1660 msgid "Retraction Length (Toolchange)" msgstr "Vzdálenost retrakce (při změně extruderu)" -#: src/libslic3r/PrintConfig.cpp:1604 src/libslic3r/PrintConfig.cpp:1605 +#: src/libslic3r/PrintConfig.cpp:1712 src/libslic3r/PrintConfig.cpp:1713 msgid "Retraction Speed" msgstr "Rychlost retrakce" -#: src/slic3r/GUI/Tab.cpp:2386 +#: src/slic3r/GUI/Tab.cpp:2555 msgid "Retraction when tool is disabled (advanced settings for multi-extruder setups)" msgstr "Retrakce pro neaktivní extruder (pokročilé nastavení pro tiskárny typu MultiMaterial)" -#: src/slic3r/GUI/GUI_Preview.cpp:254 +#: src/slic3r/GUI/GCodeViewer.cpp:2528 src/slic3r/GUI/GUI_Preview.cpp:336 +#: src/slic3r/GUI/GUI_Preview.cpp:1472 msgid "Retractions" msgstr "Retrakce" -#: src/slic3r/GUI/MainFrame.cpp:673 +#: src/slic3r/GUI/Preferences.cpp:198 +msgid "Reverse direction of zoom with mouse wheel" +msgstr "Reverzovat funkci kolečka myši při zoomu" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1861 src/slic3r/GUI/Plater.cpp:4886 +msgid "Revert conversion from imperial units" +msgstr "Vrátit převod z imperiálních jednotek" + +#: src/slic3r/GUI/MainFrame.cpp:970 src/slic3r/GUI/MainFrame.cpp:1290 msgid "Right" msgstr "Zprava" -#: src/slic3r/GUI/GUI_ObjectList.cpp:402 +#: src/slic3r/GUI/GUI_ObjectList.cpp:449 msgid "Right button click the icon to change the object printable property" msgstr "Klepnutím pravým tlačítkem myši na ikonu změníte nastavení tisku pro objekt" -#: src/slic3r/GUI/GUI_ObjectList.cpp:396 +#: src/slic3r/GUI/GUI_ObjectList.cpp:443 msgid "Right button click the icon to change the object settings" msgstr "Klepnutím pravým tlačítkem myši na ikonu změníte nastavení objektu" -#: src/slic3r/GUI/GUI_ObjectList.cpp:359 +#: src/slic3r/GUI/GUI_ObjectList.cpp:406 msgid "Right button click the icon to fix STL through Netfabb" msgstr "Klepnutím pravým tlačítkem myši se spustí oprava STL souboru pomocí služby Netfabb" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1364 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1211 msgid "Right click" msgstr "Pravý klik" -#: src/slic3r/GUI/GLCanvas3D.cpp:243 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:31 +msgid "Right mouse button" +msgstr "Pravé tlačítko myši" + +#: src/slic3r/GUI/GLCanvas3D.cpp:237 msgid "Right mouse button:" msgstr "Pravé tlačítko myši:" -#: src/slic3r/GUI/MainFrame.cpp:673 +#: src/slic3r/GUI/MainFrame.cpp:970 src/slic3r/GUI/MainFrame.cpp:1290 msgid "Right View" msgstr "Pohled zprava" -#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:449 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:480 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:499 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:517 -#: src/libslic3r/PrintConfig.cpp:3451 +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:513 +#: 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:3650 msgid "Rotate" msgstr "Otočit" -#: src/libslic3r/PrintConfig.cpp:3456 +#: src/libslic3r/PrintConfig.cpp:3655 msgid "Rotate around X" msgstr "Otočit okolo osy X" -#: src/libslic3r/PrintConfig.cpp:3461 +#: src/libslic3r/PrintConfig.cpp:3660 msgid "Rotate around Y" msgstr "Otočit okolo osy Y" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:170 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:172 msgid "Rotate lower part upwards" msgstr "Otočit spodní část řezem dolů" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:170 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 msgid "Rotate selection 45 degrees CCW" msgstr "Otočení výběru o 45 ° proti směru hodinových ručiček" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:171 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 msgid "Rotate selection 45 degrees CW" msgstr "Otočení výběru o 45 ° po směru hodinových ručiček" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:216 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:458 -#: src/slic3r/GUI/Mouse3DController.cpp:304 -#: src/slic3r/GUI/Mouse3DController.cpp:321 +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:210 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:224 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:506 +#: src/slic3r/GUI/Mouse3DController.cpp:288 +#: src/slic3r/GUI/Mouse3DController.cpp:309 msgid "Rotation" msgstr "Otáčení" -#: src/libslic3r/PrintConfig.cpp:3457 +#: src/libslic3r/PrintConfig.cpp:3656 msgid "Rotation angle around the X axis in degrees." msgstr "Úhel otočení kolem osy X ve stupních." -#: src/libslic3r/PrintConfig.cpp:3462 +#: src/libslic3r/PrintConfig.cpp:3661 msgid "Rotation angle around the Y axis in degrees." msgstr "Úhel otočení kolem osy Y ve stupních." -#: src/libslic3r/PrintConfig.cpp:3452 +#: src/libslic3r/PrintConfig.cpp:3651 msgid "Rotation angle around the Z axis in degrees." msgstr "Úhel otočení kolem osy Z ve stupních." -#: src/slic3r/GUI/GUI_App.cpp:797 +#: src/slic3r/GUI/GUI_App.cpp:1474 #, c-format msgid "Run %s" msgstr "Spustit %s" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:128 -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:478 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:163 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:520 msgid "Running post-processing scripts" msgstr "Vykonávají se postprodukční skripty" #: src/slic3r/GUI/RammingChart.cpp:76 src/slic3r/GUI/WipeTowerDialog.cpp:83 -#: src/libslic3r/PrintConfig.cpp:644 src/libslic3r/PrintConfig.cpp:688 -#: src/libslic3r/PrintConfig.cpp:703 src/libslic3r/PrintConfig.cpp:2408 -#: src/libslic3r/PrintConfig.cpp:2417 src/libslic3r/PrintConfig.cpp:2527 -#: src/libslic3r/PrintConfig.cpp:2535 src/libslic3r/PrintConfig.cpp:2543 -#: src/libslic3r/PrintConfig.cpp:2550 src/libslic3r/PrintConfig.cpp:2558 -#: src/libslic3r/PrintConfig.cpp:2566 +#: src/libslic3r/PrintConfig.cpp:680 src/libslic3r/PrintConfig.cpp:724 +#: src/libslic3r/PrintConfig.cpp:739 src/libslic3r/PrintConfig.cpp:2551 +#: src/libslic3r/PrintConfig.cpp:2560 src/libslic3r/PrintConfig.cpp:2670 +#: src/libslic3r/PrintConfig.cpp:2678 src/libslic3r/PrintConfig.cpp:2686 +#: src/libslic3r/PrintConfig.cpp:2693 src/libslic3r/PrintConfig.cpp:2701 +#: src/libslic3r/PrintConfig.cpp:2709 msgid "s" msgstr "s" -#: src/slic3r/GUI/MainFrame.cpp:481 src/slic3r/GUI/MainFrame.cpp:750 +#: src/slic3r/GUI/MainFrame.cpp:1072 src/slic3r/GUI/MainFrame.cpp:1449 msgid "S&end G-code" msgstr "Od&eslat G-code" -#: src/slic3r/GUI/MainFrame.cpp:750 +#: src/slic3r/GUI/MainFrame.cpp:1449 msgid "S&end to print" msgstr "Od&eslat do tiskárny" -#. TRN Preset -#: src/slic3r/GUI/Tab.cpp:3417 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:642 +msgid "Save" +msgstr "Uložit" + +#: src/slic3r/GUI/SavePresetDialog.cpp:72 #, c-format msgid "Save %s as:" msgstr "Uložit %s jako:" -#: src/slic3r/GUI/MainFrame.cpp:826 +#: src/slic3r/GUI/MainFrame.cpp:1527 #, c-format msgid "Save %s file as:" msgstr "Uložit %s soubor jako:" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1046 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:912 msgid "Save changes?" msgstr "Uložit změny?" -#: src/libslic3r/PrintConfig.cpp:3386 +#: src/libslic3r/PrintConfig.cpp:3585 msgid "Save config file" msgstr "Uložit konfigurační soubor" -#: src/slic3r/GUI/MainFrame.cpp:925 +#: src/slic3r/GUI/MainFrame.cpp:1626 msgid "Save configuration as:" msgstr "Uložit konfiguraci jako:" -#: src/libslic3r/PrintConfig.cpp:3387 +#: src/libslic3r/PrintConfig.cpp:3586 msgid "Save configuration to the specified file." msgstr "Uložit konfiguraci do zadaného souboru." #. TRN "Save current Settings" -#: src/slic3r/GUI/Tab.cpp:133 +#: src/slic3r/GUI/Tab.cpp:203 #, c-format msgid "Save current %s" msgstr "Uložit stávající %s" -#: src/slic3r/GUI/MainFrame.cpp:446 +#: src/slic3r/GUI/MainFrame.cpp:1028 msgid "Save current project file" msgstr "Uložit stávající projekt" -#: src/slic3r/GUI/MainFrame.cpp:450 src/slic3r/GUI/MainFrame.cpp:452 +#: src/slic3r/GUI/MainFrame.cpp:1032 src/slic3r/GUI/MainFrame.cpp:1034 msgid "Save current project file as" msgstr "Uložit stávající projekt jako" -#: src/slic3r/GUI/Plater.cpp:2604 +#: src/slic3r/GUI/Plater.cpp:2566 msgid "Save file as:" msgstr "Uložit soubor jako:" -#: src/slic3r/GUI/Plater.cpp:4839 +#: src/slic3r/GUI/Plater.cpp:4975 msgid "Save G-code file as:" msgstr "Uložit G-code jako:" -#: src/slic3r/GUI/MainFrame.cpp:899 +#: src/slic3r/GUI/MainFrame.cpp:1600 msgid "Save OBJ file (less prone to coordinate errors than STL) as:" msgstr "Uložit soubor OBJ (méně náchylný na chyby souřadnic než STL) jako:" -#: src/slic3r/GUI/Tab.hpp:443 +#: src/slic3r/GUI/SavePresetDialog.cpp:190 +#: src/slic3r/GUI/SavePresetDialog.cpp:196 msgid "Save preset" msgstr "Uložit přednastavení" -#: src/slic3r/GUI/MainFrame.cpp:980 +#: src/slic3r/GUI/MainFrame.cpp:1681 msgid "Save presets bundle as:" msgstr "Uložit balík přednastavení jako:" -#: src/slic3r/GUI/MainFrame.cpp:450 src/slic3r/GUI/MainFrame.cpp:452 +#: src/slic3r/GUI/MainFrame.cpp:1032 src/slic3r/GUI/MainFrame.cpp:1034 msgid "Save Project &as" msgstr "Uložit Projekt j&ako" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:114 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:107 msgid "Save project (3mf)" msgstr "Uložit projekt (3mf)" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:115 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:108 msgid "Save project as (3mf)" msgstr "Uložit projekt jako (3mf)" -#: src/slic3r/GUI/Plater.cpp:4839 +#: src/slic3r/GUI/Plater.cpp:4975 msgid "Save SL1 file as:" msgstr "Uložit SL1 soubor jako:" -#: src/slic3r/GUI/MainFrame.cpp:838 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:744 +msgid "Save the selected options to preset \"%1%\"." +msgstr "Uloží vybraná nastaneví do přednastavení \"%1%\"." + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:740 +msgid "Save the selected options." +msgstr "Uložte vybrané možnosti." + +#: src/slic3r/GUI/MainFrame.cpp:1539 msgid "Save zip file as:" msgstr "Uložit ZIP soubor jako:" @@ -6349,159 +7380,188 @@ msgstr "Uložit ZIP soubor jako:" msgid "Saving mesh into the 3MF container failed." msgstr "Ukládání meshe do 3MF kontejneru selhalo." -#: src/slic3r/GUI/Gizmos/GLGizmoScale.cpp:47 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:230 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:500 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:518 -#: src/libslic3r/PrintConfig.cpp:3466 +#: src/slic3r/GUI/Gizmos/GLGizmoScale.cpp:78 +#: 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:3665 msgid "Scale" msgstr "Měřítko" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:459 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:507 msgid "Scale factors" msgstr "Měřítka" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:196 -msgid "" -"Scale selection to fit print volume\n" -"in Gizmo scale" -msgstr "" -"Vyplnit tiskovou plochu aktivním výběrem\n" -"v Gizmo režimu měřítko" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1724 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1852 msgid "Scale the selected object to fit the print volume" msgstr "Přizpůsobit měřítko vybraného objektu, aby se objekt vešel do tiksového objemu" -#: src/libslic3r/PrintConfig.cpp:3475 +#: src/libslic3r/PrintConfig.cpp:3674 msgid "Scale to Fit" msgstr "Vyplnit tiskový objem" -#: src/slic3r/GUI/Selection.cpp:939 +#: src/slic3r/GUI/Selection.cpp:988 msgid "Scale To Fit" msgstr "Vyplnit tiskový objem" -#: src/libslic3r/PrintConfig.cpp:3476 +#: src/libslic3r/PrintConfig.cpp:3675 msgid "Scale to fit the given volume." msgstr "Změnit velikost, aby se objekt vešel do zadaného tiskového prostoru." -#: src/slic3r/GUI/GUI_ObjectList.cpp:1724 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1852 msgid "Scale to print volume" msgstr "Změnit velikost podle tiskového objemu" -#: src/libslic3r/PrintConfig.cpp:3467 +#: src/libslic3r/PrintConfig.cpp:3666 msgid "Scaling factor or percentage." msgstr "Procentuální měřítko." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:505 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:545 msgid "Scheduling upload to `%1%`. See Window -> Print Host Upload Queue" msgstr "Plánování nahrávání do `%1%`. Viz Okno -> Fronta nahrávaní do tiskového serveru" -#: src/libslic3r/PrintConfig.cpp:1621 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:46 +msgid "Seam painting" +msgstr "Malování pozice švu" + +#: src/libslic3r/PrintConfig.cpp:1729 msgid "Seam position" msgstr "Pozice švu" -#: src/libslic3r/PrintConfig.cpp:1642 +#: src/libslic3r/PrintConfig.cpp:1750 msgid "Seam preferred direction" msgstr "Preferovaný směr švu" -#: src/libslic3r/PrintConfig.cpp:1651 +#: src/libslic3r/PrintConfig.cpp:1759 msgid "Seam preferred direction jitter" msgstr "Seam preferred direction jitter" +#: src/slic3r/GUI/MainFrame.cpp:1207 +msgid "Searc&h" +msgstr "Vy&hledávání" + +#: src/slic3r/GUI/GLCanvas3D.cpp:4402 src/slic3r/GUI/GLCanvas3D.cpp:4957 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:130 src/slic3r/GUI/Search.cpp:426 +msgid "Search" +msgstr "Vyhledávání" + +#: src/slic3r/GUI/ImGuiWrapper.cpp:803 src/slic3r/GUI/Search.cpp:460 +msgid "Search in English" +msgstr "Hledat v angličtině" + +#: src/slic3r/GUI/MainFrame.cpp:1216 +msgid "Search in settings" +msgstr "Vyhledávání v nastavení" + +#: src/slic3r/GUI/Tab.cpp:222 +msgid "Search in settings [%1%]" +msgstr "Hledat v nastavení [%1%]" + #: src/slic3r/GUI/BonjourDialog.cpp:218 msgid "Searching for devices" msgstr "Hledám zařízení" -#: src/slic3r/GUI/Plater.cpp:2858 +#: src/slic3r/GUI/Jobs/RotoptimizeJob.cpp:41 msgid "Searching for optimal orientation" msgstr "Hledání optimální orientace" -#: src/slic3r/GUI/GUI_App.cpp:1103 +#: src/slic3r/GUI/NotificationManager.hpp:321 +msgid "See more." +msgstr "Více" + +#: src/slic3r/GUI/NotificationManager.hpp:322 +msgid "See Releases page." +msgstr "Viz stránka s releasy." + +#: src/slic3r/GUI/GUI_App.cpp:1895 msgid "Select a gcode file:" msgstr "Vyberte soubor gcode:" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:126 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:121 msgid "Select all objects" msgstr "Vybrat všechny objekty" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1370 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1217 msgid "Select all points" msgstr "Vybrat všechny body" -#: src/slic3r/GUI/ConfigWizard.cpp:1976 +#: src/slic3r/GUI/ConfigWizard.cpp:2487 msgid "Select all standard printers" msgstr "Vybrat všechny standardní tiskárny" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1368 +#: src/slic3r/GUI/Plater.cpp:1422 +msgid "Select an action to apply to the file" +msgstr "Vyberte jak chcete na soubor otevřít" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1215 msgid "Select by rectangle" msgstr "Označit obdélníkovým výběrem myši" -#: src/slic3r/GUI/MainFrame.cpp:944 src/slic3r/GUI/MainFrame.cpp:1006 +#: src/slic3r/GUI/MainFrame.cpp:1645 src/slic3r/GUI/MainFrame.cpp:1707 msgid "Select configuration to load:" msgstr "Zvolte konfiguraci k načtení:" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:82 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:88 msgid "Select coordinate space, in which the transformation will be performed." msgstr "Vyberte souřadnicový prostor, ve kterém bude provedena transformace." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3971 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4458 msgid "Select extruder number:" msgstr "Vyberte číslo extruderu:" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:138 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:134 msgid "Select Filament Settings Tab" msgstr "Zobrazit panel Nastavení filamentu" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:136 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:132 msgid "Select Plater Tab" msgstr "Zobrazit panel Podložka" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:137 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:133 msgid "Select Print Settings Tab" msgstr "Zobrazit panel Nastavení tisku" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:139 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:135 msgid "Select Printer Settings Tab" msgstr "Zobrazit panel Nastavení tiskárny" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1265 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1396 msgid "Select showing settings" msgstr "Zvolte nastavení zobrazení" -#: src/slic3r/GUI/GUI_App.cpp:629 +#: src/slic3r/GUI/GUI_App.cpp:1295 msgid "Select the language" msgstr "Výběr jazyka" -#: src/slic3r/GUI/Tab.cpp:57 +#: src/slic3r/GUI/Tab.cpp:108 msgid "Select the print profiles this profile is compatible with." msgstr "Vyberte tiskové profily, s nimiž je tento profil kompatibilní." -#: src/slic3r/GUI/Tab.cpp:51 +#: src/slic3r/GUI/Tab.cpp:102 msgid "Select the printers this profile is compatible with." msgstr "Vyberte tiskárny, s nimiž je tento profil kompatibilní." -#: src/slic3r/GUI/MainFrame.cpp:889 +#: src/slic3r/GUI/MainFrame.cpp:1590 msgid "Select the STL file to repair:" msgstr "Vyberte STL soubor k opravě:" -#: src/slic3r/GUI/Preferences.cpp:237 +#: src/slic3r/GUI/Preferences.cpp:391 msgid "Select toolbar icon size in respect to the default one." msgstr "Vyberte velikost ikon na panelu nástrojů vzhledem k výchozí velikosti." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3553 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4016 msgid "Select type of part" msgstr "Vyberte typ součásti" -#: src/slic3r/GUI/Plater.cpp:638 +#: src/slic3r/GUI/Plater.cpp:504 msgid "Select what kind of pad do you need" msgstr "Vyberte, jaký typ podložky potřebujete" -#: src/slic3r/GUI/Plater.cpp:498 +#: src/slic3r/GUI/Plater.cpp:364 msgid "Select what kind of support do you need" msgstr "Vyberte typ podpěr, které potřebujete" -#: src/slic3r/GUI/DoubleSlider.cpp:1917 +#: src/slic3r/GUI/DoubleSlider.cpp:2135 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" @@ -6511,59 +7571,59 @@ msgstr "" "NE, pokud chcete, aby se všechny změny nástroje přepnout na změny barev,\n" "nebo ZRUŠIT pro ponechání beze změny." -#: src/slic3r/GUI/Selection.cpp:146 +#: src/slic3r/GUI/Selection.cpp:191 msgid "Selection-Add" msgstr "Výběř - Přidání" -#: src/slic3r/GUI/Selection.cpp:376 +#: src/slic3r/GUI/Selection.cpp:421 msgid "Selection-Add All" msgstr "Výběr - Označení všeho" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3299 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3762 msgid "Selection-Add from list" msgstr "Výběr - Přidání v seznamu" -#: src/slic3r/GUI/GLCanvas3D.cpp:6598 +#: src/slic3r/GUI/GLCanvas3D.cpp:7193 msgid "Selection-Add from rectangle" msgstr "Výběr - Přidání obdélníkovým výběrem" -#: src/slic3r/GUI/Selection.cpp:256 +#: src/slic3r/GUI/Selection.cpp:301 msgid "Selection-Add Instance" msgstr "Výběr - Přidání Instance" -#: src/slic3r/GUI/Selection.cpp:219 +#: src/slic3r/GUI/Selection.cpp:264 msgid "Selection-Add Object" msgstr "Výběr - Přidání Objektu" -#: src/slic3r/GUI/Selection.cpp:187 +#: src/slic3r/GUI/Selection.cpp:232 msgid "Selection-Remove" msgstr "Výběr - Odebrání" -#: src/slic3r/GUI/Selection.cpp:402 +#: src/slic3r/GUI/Selection.cpp:447 msgid "Selection-Remove All" msgstr "Výběr - Zrušení" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3291 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3754 msgid "Selection-Remove from list" msgstr "Výběr - Odebrání v seznamu" -#: src/slic3r/GUI/GLCanvas3D.cpp:6617 +#: src/slic3r/GUI/GLCanvas3D.cpp:7212 msgid "Selection-Remove from rectangle" msgstr "Výběr - Odebrání obdélníkovým výběrem" -#: src/slic3r/GUI/Selection.cpp:275 +#: src/slic3r/GUI/Selection.cpp:320 msgid "Selection-Remove Instance" msgstr "Výběr - Odebrání Instance" -#: src/slic3r/GUI/Selection.cpp:238 +#: src/slic3r/GUI/Selection.cpp:283 msgid "Selection-Remove Object" msgstr "Výběr - Odebrání Objektu" -#: src/slic3r/GUI/MainFrame.cpp:566 +#: src/slic3r/GUI/MainFrame.cpp:1172 msgid "Selects all objects" msgstr "Vybrat všechny objekty" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:123 src/slic3r/GUI/Plater.cpp:5522 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:116 src/slic3r/GUI/Plater.cpp:5707 msgid "Send G-code" msgstr "Odeslat G-code" @@ -6571,29 +7631,29 @@ msgstr "Odeslat G-code" msgid "Send G-Code to printer host" msgstr "Odeslat G-Code do tiskového serveru" -#: src/slic3r/GUI/MainFrame.cpp:481 +#: src/slic3r/GUI/MainFrame.cpp:1072 msgid "Send to print current plate as G-code" msgstr "Odeslat k tisku stávající plochu jako G-code" -#: src/slic3r/GUI/Plater.cpp:878 src/slic3r/GUI/Plater.cpp:5522 +#: src/slic3r/GUI/Plater.cpp:753 src/slic3r/GUI/Plater.cpp:5707 msgid "Send to printer" msgstr "Odeslat do tiskárny" -#: src/slic3r/GUI/GLCanvas3D.cpp:1305 +#: src/slic3r/GUI/GLCanvas3D.cpp:1312 msgid "Seq." msgstr "Sekv." -#: src/slic3r/GUI/Tab.cpp:1231 +#: src/slic3r/GUI/Tab.cpp:1561 msgid "Sequential printing" msgstr "Sekvenční tisk" -#: src/slic3r/GUI/Tab.cpp:1901 src/libslic3r/PrintConfig.cpp:1661 -msgid "Serial port" -msgstr "Sériový port" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:235 +msgid "Sequential Slider" +msgstr "Sekvenční posuvník" -#: src/libslic3r/PrintConfig.cpp:1669 -msgid "Serial port speed" -msgstr "Rychlost sériového portu" +#: 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" #: src/slic3r/GUI/FirmwareDialog.cpp:807 msgid "Serial port:" @@ -6603,17 +7663,16 @@ msgstr "Sériový port:" msgid "Service name" msgstr "Název služby" -#: src/slic3r/GUI/Tab.cpp:1802 src/slic3r/GUI/Tab.cpp:2046 -#: src/slic3r/GUI/Tab.cpp:3176 +#: src/slic3r/GUI/Tab.cpp:3509 src/slic3r/GUI/Tab.cpp:3588 msgid "Set" msgstr "Nastavit" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1599 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1611 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1728 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1740 msgid "Set as a Separated Object" msgstr "Změnit na samostatný objekt" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1611 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1740 msgid "Set as a Separated Objects" msgstr "Převést na oddělené objekty" @@ -6621,7 +7680,7 @@ msgstr "Převést na oddělené objekty" msgid "Set extruder change for every" msgstr "Nastavit změnu extruderu po každých" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1671 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1800 msgid "Set extruder for selected items" msgstr "Zvolte extruder pro vybrané položky" @@ -6629,7 +7688,7 @@ msgstr "Zvolte extruder pro vybrané položky" msgid "Set extruder sequence" msgstr "Nastavte pořadí extruderu" -#: src/slic3r/GUI/DoubleSlider.cpp:1532 +#: src/slic3r/GUI/DoubleSlider.cpp:1728 msgid "Set extruder sequence for the entire print" msgstr "Nastavení sekvence extruderů pro celý tisk" @@ -6637,84 +7696,84 @@ msgstr "Nastavení sekvence extruderů pro celý tisk" msgid "Set extruder(tool) sequence" msgstr "Nastavte pořadí extruderu(nástroje)" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:217 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:218 msgid "Set lower thumb to current slider thumb" msgstr "Aktivovat spodní ukazatel aktivního posuvníku" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:297 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:305 msgid "Set Mirror" msgstr "Zrcadlení" -#: src/slic3r/GUI/Plater.cpp:3944 +#: src/slic3r/GUI/Plater.cpp:3862 msgid "Set number of instances" msgstr "Zadat počet instancí" -#: src/slic3r/GUI/Plater.cpp:4756 +#: src/slic3r/GUI/Plater.cpp:4860 #, c-format msgid "Set numbers of copies to %d" msgstr "Nastavení počtu kopií na %d" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:781 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:828 msgid "Set Orientation" msgstr "Změna orientace" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:750 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:797 msgid "Set Position" msgstr "Nastavení pozice" -#: src/slic3r/GUI/GUI_ObjectList.cpp:4094 src/slic3r/GUI/Selection.cpp:1474 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4581 src/slic3r/GUI/Selection.cpp:1513 msgid "Set Printable" msgstr "Zvolen příznak Tisknout objekt" -#: src/slic3r/GUI/Selection.cpp:1475 +#: src/slic3r/GUI/Selection.cpp:1515 msgid "Set Printable Instance" msgstr "Zvolen příznak Tisknout Instanci" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:846 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:893 msgid "Set Scale" msgstr "Nastavení měřítka" -#: src/libslic3r/PrintConfig.cpp:2393 +#: src/libslic3r/PrintConfig.cpp:2536 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 "Nastavte skutečnou orientaci LCD displeje uvnitř SLA tiskárny. Režim Orientace na výšku převrátí význam parametrů šířky a výšky a výstupní obrazy budou otočeny o 90 stupňů." -#: src/slic3r/GUI/ConfigWizard.cpp:932 +#: src/slic3r/GUI/ConfigWizard.cpp:1298 msgid "Set the shape of your printer's bed." msgstr "Nastavte tvar a rozměry vaší tiskové podložky." -#: src/libslic3r/PrintConfig.cpp:556 +#: 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." -#: src/libslic3r/PrintConfig.cpp:448 +#: 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." msgstr "Nastavením na kladnou hodnotu, definuje šířku manuální extruze pro vnější obvod. Pokud je ponechána nula, použije se výchozí šířka extruze, pokud je nastavena, jinak se použije průměr trysky 1,125 x. Pokud je hodnota vyjádřena jako procento (například 200%), vypočítá se podle výšky vrstvy." -#: src/libslic3r/PrintConfig.cpp:878 +#: 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í." -#: src/libslic3r/PrintConfig.cpp:1758 +#: 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." msgstr "Zadejte kladnou hodnotu, chcete-li nastavit manuálně šířku extruze pro výplň plných povrchů. 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. Pokud je vyjádřena procenty (například 90%), bude vypočtena z výšky vrstvy." -#: src/libslic3r/PrintConfig.cpp:2107 +#: src/libslic3r/PrintConfig.cpp:2250 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 regions and get a smoother finish. If left zero, default extrusion width will be used if set, otherwise nozzle diameter will be used. If expressed as percentage (for example 90%) it will be computed over layer height." msgstr "Zadejte kladnou hodnotu, chcete-li nastavit manuálně šířku extruze pro výplň vrchních ploch. Možná budete chtít použít tenčí extruzi, abyste vyplnili všechny úzké oblasti a získali hladší povrch. Pokud je ponechána nula, použije se výchozí šířka extruze, pokud je nastavena, jinak se použije průměr trysky. Pokud je vyjádřena procenty (například 90%), bude vypočtena z výšky vrstvy." -#: src/libslic3r/PrintConfig.cpp:1011 +#: 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." -#: src/libslic3r/PrintConfig.cpp:1419 +#: 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." msgstr "Nastavením na kladnou hodnotu nastavíte manuálně šířku vytlačování perimetrů. Chcete-li získat přesnější povrchy, můžete použít tenčí extruze. 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. Pokud je vyjádřeno procenty (například 200%), vypočte se z výšky vrstvy." -#: src/libslic3r/PrintConfig.cpp:1948 +#: src/libslic3r/PrintConfig.cpp:2090 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, otherwise nozzle diameter will be used. If expressed as percentage (for example 90%) it will be computed over layer height." msgstr "Zadejte kladnou hodnotu, chcete-li nastavit manuálně šířku extruze pro podpěry. Pokud je ponechána nula, použije se výchozí šířka extruze, pokud je nastavena, jinak se použije průměr trysky. Pokud je vyjádřena procenty (například 90%), bude vypočtena z výšky vrstvy." -#: src/libslic3r/PrintConfig.cpp:512 +#: src/libslic3r/PrintConfig.cpp:548 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 "Zadejte horizontální rádius kolizního prostoru okolo extruderu. Pokud tryska není v centru tohoto rádiusu, zvolte nejdelší vzdálenost. Toto nastavení slouží ke kontrole kolizí a zobrazení grafického náhledu na podložce." @@ -6722,23 +7781,23 @@ msgstr "Zadejte horizontální rádius kolizního prostoru okolo extruderu. Poku msgid "Set this to the maximum height that can be reached by your extruder while printing." msgstr "Nastavte tuto hodnotu na maximální výšku, která může být dosažena extruderem během tisku." -#: src/libslic3r/PrintConfig.cpp:501 +#: src/libslic3r/PrintConfig.cpp:537 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 cylinder around your extruder, and it represents the maximum depth the extruder can peek before colliding with other printed objects." msgstr "Zadejte vertikální vzdálenost mezi tryskou a (obvykle) tyčemi osy X. Jinými slovy, je to výška kolizního prostoru okolo extruderu a představuje maximální hloubku, které může extruder dosáhnout před kolizí s jinými, již vytištěnými, objekty." -#: src/slic3r/GUI/GUI_ObjectList.cpp:4094 src/slic3r/GUI/Selection.cpp:1474 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4581 src/slic3r/GUI/Selection.cpp:1513 msgid "Set Unprintable" msgstr "Odebrán příznak Tisknout objekt" -#: src/slic3r/GUI/Selection.cpp:1475 +#: src/slic3r/GUI/Selection.cpp:1515 msgid "Set Unprintable Instance" msgstr "Odebrán příznak Tisknout Instanci" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:217 msgid "Set upper thumb to current slider thumb" msgstr "Aktivovat horní ukazatel aktivního posuvníku" -#: src/libslic3r/PrintConfig.cpp:3509 +#: src/libslic3r/PrintConfig.cpp:3714 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." @@ -6746,63 +7805,74 @@ msgstr "" "Zvolte úroveň logování: 0:fatalní chyby, 1:chyby, 2:varování, 3:info, 4:ladění, 5:trasování\n" "Například. loglevel=2 zaznamenává fatální chyby, chyby a varovné zprávy." -#: src/slic3r/GUI/BedShapeDialog.cpp:155 +#: src/slic3r/GUI/BedShapeDialog.cpp:292 src/slic3r/GUI/MainFrame.cpp:1969 msgid "Settings" msgstr "Nastavení" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2507 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2899 msgid "Settings for height range" msgstr "Nastavení pro výškový rozsah" -#: src/slic3r/GUI/ConfigManipulation.cpp:162 +#: src/slic3r/GUI/Preferences.cpp:431 +msgid "Settings in non-modal window" +msgstr "Nastavení v nemodálním okně" + +#: src/slic3r/GUI/ConfigManipulation.cpp:161 msgid "Shall I adjust those settings for supports?" msgstr "Mám upravit tato nastavení pro podpěry?" -#: src/slic3r/GUI/ConfigManipulation.cpp:89 +#: src/slic3r/GUI/ConfigManipulation.cpp:88 msgid "Shall I adjust those settings in order to enable Spiral Vase?" msgstr "Mám tato nastavení upravit tak, aby bylo možné povolit režim Váza?" -#: src/slic3r/GUI/ConfigManipulation.cpp:119 +#: src/slic3r/GUI/ConfigManipulation.cpp:118 msgid "Shall I adjust those settings in order to enable the Wipe Tower?" msgstr "Mám tato nastavení upravit tak, aby bylo možné povolit Čistící Věž?" -#: src/slic3r/GUI/ConfigManipulation.cpp:210 +#: src/slic3r/GUI/ConfigManipulation.cpp:209 msgid "Shall I switch to rectilinear fill pattern?" msgstr "Mám přepnout na přímočarý vzor výplně?" -#: src/slic3r/GUI/ConfigManipulation.cpp:139 +#: src/slic3r/GUI/ConfigManipulation.cpp:138 msgid "Shall I synchronize support layers in order to enable the Wipe Tower?" msgstr "Mám synchronizovat vrstvy podpěr, aby bylo možné zapnout Čistící Věž?" -#: src/slic3r/GUI/BedShapeDialog.cpp:66 src/slic3r/GUI/GUI_ObjectList.cpp:2059 +#: src/slic3r/GUI/BedShapeDialog.cpp:156 src/slic3r/GUI/BedShapeDialog.cpp:222 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2215 msgid "Shape" msgstr "Tvar" -#: src/slic3r/GUI/GUI_Preview.cpp:256 +#: src/slic3r/GUI/GUI_Preview.cpp:338 src/slic3r/GUI/GUI_Preview.cpp:1478 msgid "Shells" msgstr "Skořepiny" -#: src/slic3r/GUI/GLCanvas3D.cpp:249 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:50 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:33 +msgid "Shift + Left mouse button" +msgstr "Shift + levé tlačítko myši" + +#: src/slic3r/GUI/GLCanvas3D.cpp:241 msgid "Shift + Left mouse button:" msgstr "Shift + Levé tlačítko myši:" -#: src/slic3r/GUI/GLCanvas3D.cpp:255 +#: src/slic3r/GUI/GLCanvas3D.cpp:245 msgid "Shift + Right mouse button:" msgstr "Shift + Pravé tlačítko myši:" -#: src/slic3r/GUI/GUI_Preview.cpp:231 +#: src/slic3r/GUI/GUI_Preview.cpp:286 src/slic3r/GUI/GUI_Preview.cpp:288 msgid "Show" msgstr "Zobrazit" -#: src/slic3r/GUI/MainFrame.cpp:701 +#: src/slic3r/GUI/MainFrame.cpp:926 src/slic3r/GUI/MainFrame.cpp:1325 msgid "Show &Configuration Folder" msgstr "Otevřít adresář s &konfiguracemi" -#: src/slic3r/GUI/MainFrame.cpp:676 +#: src/slic3r/GUI/MainFrame.cpp:1294 msgid "Show &labels" msgstr "Zobrazit &popisky" -#: src/slic3r/GUI/MainFrame.cpp:705 +#: src/slic3r/GUI/MainFrame.cpp:933 src/slic3r/GUI/MainFrame.cpp:937 +#: src/slic3r/GUI/MainFrame.cpp:1329 msgid "Show about dialog" msgstr "Zobrazit okno o Slic3ru" @@ -6810,111 +7880,131 @@ msgstr "Zobrazit okno o Slic3ru" msgid "Show advanced settings" msgstr "Zobrazit rozšířená nastavení" -#: src/slic3r/GUI/PrintHostDialogs.cpp:159 +#: src/slic3r/GUI/Preferences.cpp:120 +msgid "Show drop project dialog" +msgstr "Zobrazit dialogové okno při přetažení projektu" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:157 msgid "Show error message" msgstr "Zobrazit chybovou hlášku" -#: src/slic3r/GUI/Preferences.cpp:95 +#: src/slic3r/GUI/Preferences.cpp:112 msgid "Show incompatible print and filament presets" msgstr "Zobrazit nekompatibilní přednastavení tisku a filamentu" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:151 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:145 msgid "Show keyboard shortcuts list" msgstr "Zobrazit přehled klávesových zkratek" -#: src/slic3r/GUI/MainFrame.cpp:676 +#: src/slic3r/GUI/GCodeViewer.cpp:2591 +msgid "Show normal mode" +msgstr "V normálním režimu" + +#: src/slic3r/GUI/MainFrame.cpp:1294 msgid "Show object/instance labels in 3D scene" msgstr "Zobrazit popisky objektů / instancí ve 3D scéně" +#: src/slic3r/GUI/Preferences.cpp:213 +msgid "Show sidebar collapse/expand button" +msgstr "Zobrazit tlačítko sbalit/rozbalit postranní panel" + #: src/slic3r/GUI/WipeTowerDialog.cpp:377 msgid "Show simplified settings" msgstr "Zobrazit jednoduché nastavení" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:52 +#: src/slic3r/GUI/Preferences.cpp:169 src/slic3r/GUI/Preferences.cpp:171 +msgid "Show splash screen" +msgstr "Zobrazovat úvodní obrazovku" + +#: src/slic3r/GUI/GCodeViewer.cpp:2586 +msgid "Show stealth mode" +msgstr "Tichý režim" + +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:51 msgid "Show supports" msgstr "Zobrazit podpěry" -#: src/slic3r/GUI/MainFrame.cpp:699 +#: src/slic3r/GUI/MainFrame.cpp:924 src/slic3r/GUI/MainFrame.cpp:1323 msgid "Show system information" msgstr "Zobrazit systémové informace" -#: src/slic3r/GUI/MainFrame.cpp:626 +#: src/slic3r/GUI/MainFrame.cpp:1234 msgid "Show the 3D editing view" msgstr "Zobrazit 3D editaci" -#: src/slic3r/GUI/MainFrame.cpp:629 +#: src/slic3r/GUI/MainFrame.cpp:1237 msgid "Show the 3D slices preview" msgstr "Zobrazit 3D náhled vrstev" -#: src/slic3r/GUI/MainFrame.cpp:617 +#: src/slic3r/GUI/MainFrame.cpp:1224 msgid "Show the filament settings" msgstr "Zobrazit nastavení filamentu" -#: src/libslic3r/PrintConfig.cpp:3372 +#: src/libslic3r/PrintConfig.cpp:3571 msgid "Show the full list of print/G-code configuration options." msgstr "Zobrazit kompletní seznam možností konfigurace tisku / G-codu." -#: src/libslic3r/PrintConfig.cpp:3377 +#: src/libslic3r/PrintConfig.cpp:3576 msgid "Show the full list of SLA print configuration options." msgstr "Zobrazit kompletní seznam možností konfigurace SLA tisku." -#: src/slic3r/GUI/MainFrame.cpp:708 +#: src/slic3r/GUI/MainFrame.cpp:941 src/slic3r/GUI/MainFrame.cpp:1332 msgid "Show the list of the keyboard shortcuts" msgstr "Zobrazit seznam klávesových zkratek" -#: src/slic3r/GUI/MainFrame.cpp:606 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "Show the plater" msgstr "Zobrazit podložku" -#: src/slic3r/GUI/MainFrame.cpp:614 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "Show the print settings" msgstr "Zobrazit nastavení tisku" -#: src/slic3r/GUI/MainFrame.cpp:621 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Show the printer settings" msgstr "Zobrazit nastavení tiskárny" -#: src/libslic3r/PrintConfig.cpp:3366 +#: src/libslic3r/PrintConfig.cpp:3565 msgid "Show this help." msgstr "Zobrazí tuto nápovědu." -#: src/slic3r/GUI/MainFrame.cpp:701 +#: src/slic3r/GUI/MainFrame.cpp:926 src/slic3r/GUI/MainFrame.cpp:1325 msgid "Show user configuration folder (datadir)" msgstr "Zobrazit uživatelský adresář konfigurace (datadir)" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:185 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:182 msgid "Show/Hide 3Dconnexion devices settings dialog" msgstr "Zobrazit / skrýt dialogové okno nastavení zařízení 3Dconnexion" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:208 -msgid "Show/Hide Legend" -msgstr "Zobrazit/Skrýt Legendu" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 +msgid "Show/Hide Legend & Estimated printing time" +msgstr "Zobrazit/skrýt legendu a odhadované tiskové časy" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:146 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:141 msgid "Show/Hide object/instance labels" msgstr "Zobrazit/skrýt popisky objektů/instancí" -#: src/slic3r/GUI/GUI_App.cpp:813 src/slic3r/GUI/wxExtensions.cpp:753 +#: src/slic3r/GUI/GUI_App.cpp:1504 src/slic3r/GUI/wxExtensions.cpp:673 msgid "Simple" msgstr "Jednoduchý" -#: src/slic3r/GUI/ConfigWizard.cpp:820 +#: src/slic3r/GUI/ConfigWizard.cpp:1179 msgid "Simple mode" msgstr "Jednoduchý režim" -#: src/slic3r/GUI/GUI_App.cpp:813 +#: src/slic3r/GUI/GUI_App.cpp:1504 msgid "Simple View Mode" msgstr "Jednoduchý režim" -#: src/slic3r/GUI/Tab.cpp:2298 src/slic3r/GUI/Tab.cpp:2306 +#: src/slic3r/GUI/Tab.cpp:2467 src/slic3r/GUI/Tab.cpp:2475 msgid "Single extruder MM setup" msgstr "Nastavení jednoho extruderu MM" -#: src/libslic3r/PrintConfig.cpp:1845 +#: src/libslic3r/PrintConfig.cpp:1987 msgid "Single Extruder Multi Material" msgstr "MultiMaterial tisk s jedním extrudérem" -#: src/slic3r/GUI/Tab.cpp:1867 +#: src/slic3r/GUI/Tab.cpp:2101 msgid "" "Single Extruder Multi Material is selected, \n" "and all extruders must have the same diameter.\n" @@ -6924,435 +8014,463 @@ msgstr "" "a proto všechny extrudery musí mít stejný průměr.\n" "Chcete nastavit průměry všech extruderových trysek podle průměru prvního extruderu?" -#: src/slic3r/GUI/Tab.cpp:2307 +#: src/slic3r/GUI/Tab.cpp:2476 msgid "Single extruder multimaterial parameters" msgstr "Parametry jednoho multi materiálového extruderu" -#: src/slic3r/GUI/BedShapeDialog.cpp:77 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:232 src/slic3r/GUI/Plater.cpp:160 -#: src/slic3r/GUI/Tab.cpp:2324 +#: src/slic3r/GUI/Preferences.cpp:120 src/libslic3r/PrintConfig.cpp:3689 +msgid "Single instance mode" +msgstr "Režim jedné instance" + +#: src/slic3r/GUI/BedShapeDialog.cpp:93 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:240 src/slic3r/GUI/Plater.cpp:166 +#: src/slic3r/GUI/Tab.cpp:2493 msgid "Size" msgstr "Rozměr" -#: src/slic3r/GUI/Tab.cpp:1797 src/slic3r/GUI/Tab.cpp:2041 +#: src/slic3r/GUI/Tab.cpp:2059 src/slic3r/GUI/Tab.cpp:2241 msgid "Size and coordinates" msgstr "Rozměry a počátek" -#: src/slic3r/GUI/BedShapeDialog.cpp:78 +#: src/slic3r/GUI/BedShapeDialog.cpp:110 msgid "Size in X and Y of the rectangular plate." msgstr "Rozměr obdélníkové tiskové podložky v ose X a Y." -#: src/slic3r/GUI/GUI_Preview.cpp:245 src/slic3r/GUI/Tab.cpp:1111 -#: src/libslic3r/ExtrusionEntity.cpp:318 +#: src/slic3r/GUI/GUI_Preview.cpp:310 src/slic3r/GUI/Tab.cpp:1439 +#: src/libslic3r/ExtrusionEntity.cpp:323 src/libslic3r/ExtrusionEntity.cpp:354 msgid "Skirt" msgstr "Obrys" -#: src/slic3r/GUI/Tab.cpp:1110 +#: src/slic3r/GUI/Tab.cpp:1438 msgid "Skirt and brim" msgstr "Obrys a límec" -#: src/libslic3r/PrintConfig.cpp:1687 +#: src/libslic3r/PrintConfig.cpp:1795 msgid "Skirt height" msgstr "Výška obrysu" -#: src/libslic3r/PrintConfig.cpp:1696 +#: src/libslic3r/PrintConfig.cpp:1811 msgid "Skirt Loops" msgstr "Počet obrysových smyček" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1334 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1181 msgid "SLA gizmo keyboard shortcuts" msgstr "Klávesové zkratky pro SLA gizma" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1058 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:924 msgid "SLA gizmo turned off" msgstr "Ukončení režimu SLA gizmo" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1017 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:897 msgid "SLA gizmo turned on" msgstr "Vstup do režimu SLA gizmo" -#: src/slic3r/GUI/Plater.cpp:818 src/slic3r/GUI/Preset.cpp:1524 +#: src/slic3r/GUI/Plater.cpp:693 src/libslic3r/Preset.cpp:1303 msgid "SLA material" msgstr "SLA materiál" -#: src/slic3r/GUI/ConfigWizard.cpp:2015 +#: src/slic3r/GUI/ConfigWizard.cpp:2526 msgid "SLA Material Profiles Selection" msgstr "Výběr SLA materiálových profilů" -#: src/libslic3r/PrintConfig.cpp:2470 src/libslic3r/PrintConfig.cpp:2471 +#: src/libslic3r/PrintConfig.cpp:2613 src/libslic3r/PrintConfig.cpp:2614 msgid "SLA material type" msgstr "Typ SLA materiálu" -#: src/slic3r/GUI/ConfigWizard.cpp:1471 src/slic3r/GUI/ConfigWizard.cpp:2015 +#: src/slic3r/GUI/ConfigWizard.cpp:1872 src/slic3r/GUI/ConfigWizard.cpp:2526 msgid "SLA Materials" msgstr "SLA Materiály" -#: src/slic3r/GUI/Preset.cpp:1523 +#: src/libslic3r/Preset.cpp:1302 msgid "SLA print" msgstr "SLA tisk" -#: src/libslic3r/PrintConfig.cpp:2578 +#: src/libslic3r/PrintConfig.cpp:2721 msgid "SLA print material notes" msgstr "Poznámky pro SLA materiál" -#: src/slic3r/GUI/Plater.cpp:817 +#: src/slic3r/GUI/Plater.cpp:692 msgid "SLA print settings" msgstr "Nastavení SLA tisku" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:996 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:869 msgid "SLA Support Points" msgstr "SLA Podpěrné Body" -#: src/slic3r/GUI/GLCanvas3D.cpp:687 -msgid "SLA supports outside the print area were detected" -msgstr "Byly zjištěny SLA podpěry mimo tiskovou oblast" +#: src/slic3r/GUI/GLCanvas3D.cpp:635 +msgid "SLA supports outside the print area were detected." +msgstr "Byly zjištěny SLA podpěry mimo tiskovou oblast." -#: src/slic3r/GUI/ConfigWizard.cpp:1530 +#: src/slic3r/GUI/ConfigWizard.cpp:1931 msgid "SLA Technology Printers" msgstr "Tiskárny technologie SLA" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1432 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1563 msgid "Slab" msgstr "Deska" -#: src/libslic3r/PrintConfig.cpp:1333 +#: src/libslic3r/PrintConfig.cpp:1441 msgid "Slic3r can upload G-code files to a printer host. This field must contain the kind of the host." msgstr "Slic3r může nahrát soubory G-code do tiskového serveru. Toto pole musí obsahovat druh tiskového serveru." -#: src/libslic3r/PrintConfig.cpp:105 +#: src/libslic3r/PrintConfig.cpp:107 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:98 +#: 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:1299 +#: src/libslic3r/PrintConfig.cpp:1407 msgid "Slic3r will not scale speed down below this speed." msgstr "Slic3r nebude měnit rychlost pod tuto rychlost." -#: src/libslic3r/PrintConfig.cpp:3359 +#: src/libslic3r/PrintConfig.cpp:3558 msgid "Slice" msgstr "Slicovat" -#: src/slic3r/GUI/MainFrame.cpp:512 +#: src/slic3r/GUI/MainFrame.cpp:1113 msgid "Slice a file into a G-code" msgstr "Slicovat soubor do G-code" -#: src/slic3r/GUI/MainFrame.cpp:518 +#: src/slic3r/GUI/MainFrame.cpp:1119 msgid "Slice a file into a G-code, save as" msgstr "Slicovat soubor do G-code, uložit jako" -#: src/libslic3r/PrintConfig.cpp:87 +#: src/libslic3r/PrintConfig.cpp:89 msgid "Slice gap closing radius" msgstr "Poloměr uzavření mezery v tiskové vrstvě" -#: src/slic3r/GUI/Plater.cpp:892 src/slic3r/GUI/Plater.cpp:3121 -#: src/slic3r/GUI/Plater.cpp:5110 +#: src/slic3r/GUI/Plater.cpp:767 src/slic3r/GUI/Plater.cpp:2921 +#: src/slic3r/GUI/Plater.cpp:5237 msgid "Slice now" msgstr "Slicovat" -#: src/libslic3r/PrintConfig.cpp:3333 +#: src/libslic3r/PrintConfig.cpp:3526 msgid "Slice the model and export SLA printing layers as PNG." msgstr "Naslicuje model a exportuje SLA tiskové vrstvy jako PNG soubory." -#: src/libslic3r/PrintConfig.cpp:3354 +#: src/libslic3r/PrintConfig.cpp:3547 msgid "Slice the model and export toolpaths as G-code." msgstr "Naslicujte model a exportujte trasy jako G-code." -#: src/libslic3r/PrintConfig.cpp:3360 +#: src/libslic3r/PrintConfig.cpp:3559 msgid "Slice the model as FFF or SLA based on the printer_technology configuration value." msgstr "Slicovat model jako FFF nebo SLA tisk na základě konfigurační hodnoty printer_technology." -#: src/slic3r/GUI/Plater.cpp:216 +#: src/slic3r/GUI/Plater.cpp:222 msgid "Sliced Info" msgstr "Informace o slicování" -#: src/slic3r/GUI/MainFrame.cpp:847 src/slic3r/GUI/Plater.cpp:3121 -#: src/slic3r/GUI/Plater.cpp:5107 src/slic3r/GUI/Tab.cpp:1221 -#: src/slic3r/GUI/Tab.cpp:3662 +#: src/slic3r/GUI/MainFrame.cpp:1548 src/slic3r/GUI/Plater.cpp:2921 +#: src/slic3r/GUI/Plater.cpp:5234 src/slic3r/GUI/Tab.cpp:1551 +#: src/slic3r/GUI/Tab.cpp:4081 msgid "Slicing" msgstr "Slicování" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:134 -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:184 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:170 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:219 msgid "Slicing complete" msgstr "Slicování dokončeno" -#: src/libslic3r/SLAPrint.cpp:760 +#: src/libslic3r/SLAPrint.cpp:780 msgid "Slicing done" msgstr "Slicování dokončeno" -#: src/slic3r/GUI/MainFrame.cpp:874 +#: src/slic3r/GUI/MainFrame.cpp:1575 msgid "Slicing Done!" msgstr "Slicování dokončeno!" -#: src/libslic3r/SLAPrintSteps.cpp:245 +#: src/slic3r/GUI/NotificationManager.cpp:751 +msgid "Slicing finished." +msgstr "Slicování dokončeno." + +#: src/libslic3r/SLAPrintSteps.cpp:247 msgid "Slicing had to be stopped due to an internal error: Inconsistent slice index." msgstr "Slicování muselo být zastaveno kvůli vnitřní chybě: Nekonzistentní index řezů." -#: src/libslic3r/SLAPrintSteps.cpp:45 +#: src/libslic3r/SLAPrintSteps.cpp:46 msgid "Slicing model" msgstr "Slicuji model" -#: src/libslic3r/SLAPrintSteps.cpp:49 +#: src/libslic3r/SLAPrintSteps.cpp:50 msgid "Slicing supports" msgstr "Slicování podpěr" -#: src/libslic3r/PrintConfig.cpp:2414 +#: src/libslic3r/PrintConfig.cpp:2557 msgid "Slow" msgstr "Pomalý" -#: src/libslic3r/PrintConfig.cpp:1705 +#: src/libslic3r/PrintConfig.cpp:1820 msgid "Slow down if layer print time is below" msgstr "Zpomalit tisk pokud je doba tisku kratší než" -#: src/libslic3r/PrintConfig.cpp:2415 +#: src/libslic3r/PrintConfig.cpp:2558 msgid "Slow tilt" msgstr "Pomalý náklon" -#: src/libslic3r/PrintConfig.cpp:1715 +#: src/libslic3r/PrintConfig.cpp:1830 msgid "Small perimeters" msgstr "Malé perimetry" -#: src/slic3r/GUI/GLCanvas3D.cpp:288 +#: src/libslic3r/PrintConfig.cpp:2801 +msgid "Small pillar diameter percent" +msgstr "Procentní průměr malých pilířů" + +#: src/slic3r/GUI/GLCanvas3D.cpp:274 msgid "Smooth" msgstr "Vyhladit" -#: src/slic3r/GUI/GLCanvas3D.cpp:258 +#: src/slic3r/GUI/GLCanvas3D.cpp:247 msgid "Smoothing" msgstr "Vyhlazení" -#: src/slic3r/GUI/GUI_App.cpp:839 +#: src/slic3r/GUI/GUI_App.cpp:1540 msgid "Snapshot name" msgstr "Název zálohy" -#: src/slic3r/GUI/MainFrame.cpp:686 +#: src/slic3r/GUI/MainFrame.cpp:911 src/slic3r/GUI/MainFrame.cpp:1310 msgid "Software &Releases" msgstr "Vydané ve&rze" -#: src/slic3r/GUI/PresetHints.cpp:184 +#: src/slic3r/GUI/PresetHints.cpp:183 msgid "solid infill" msgstr "plná výplň" -#: src/slic3r/GUI/GUI_Preview.cpp:241 src/libslic3r/ExtrusionEntity.cpp:314 -#: src/libslic3r/PrintConfig.cpp:1756 src/libslic3r/PrintConfig.cpp:1767 +#: src/slic3r/GUI/GUI_Preview.cpp:305 src/libslic3r/ExtrusionEntity.cpp:318 +#: src/libslic3r/ExtrusionEntity.cpp:344 src/libslic3r/PrintConfig.cpp:1871 +#: src/libslic3r/PrintConfig.cpp:1882 msgid "Solid infill" msgstr "Plná výplň" -#: src/libslic3r/PrintConfig.cpp:1744 +#: src/libslic3r/PrintConfig.cpp:1859 msgid "Solid infill every" msgstr "Plná výplň každou" -#: src/libslic3r/PrintConfig.cpp:1736 +#: src/libslic3r/PrintConfig.cpp:1851 msgid "Solid infill extruder" msgstr "Extruder pro plnou výplň" -#: src/libslic3r/PrintConfig.cpp:1727 +#: src/libslic3r/PrintConfig.cpp:1842 msgid "Solid infill threshold area" msgstr "Prahová hodnota plochy pro plnou výplň" -#: src/slic3r/GUI/Tab.cpp:1065 src/libslic3r/PrintConfig.cpp:1780 +#: src/slic3r/GUI/Tab.cpp:1387 src/libslic3r/PrintConfig.cpp:1895 msgid "Solid layers" msgstr "Plných vrstev" -#: src/libslic3r/PrintConfig.cpp:754 +#: src/libslic3r/PrintConfig.cpp:790 msgid "Soluble material" msgstr "Rozpustný materiál" -#: src/libslic3r/PrintConfig.cpp:755 +#: src/libslic3r/PrintConfig.cpp:791 msgid "Soluble material is most likely used for a soluble support." msgstr "Rozpustný materiál je převážně používán pro tisk rozpustných podpěr." -#: src/libslic3r/PrintConfig.cpp:937 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:735 +msgid "Some fields are too long to fit. Right mouse click reveals the full text." +msgstr "Některá pole jsou příliš dlouhá a nevejdou se. Kliknutím pravým tlačítkem myši zobrazíte celý text." + +#: src/libslic3r/PrintConfig.cpp:981 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 output. The \"No extrusion\" flavor prevents PrusaSlicer from exporting any extrusion value at all." msgstr "Některé příkazy G/M-code, včetně řízení teplot a další, nejsou univerzální. Vyberte typ firmware, který používá vaše tiskárna pro dosažení kompatibilního výstupu. Příkazy typu \"No extrusion\" zabraňují PrusaSliceru zcela exportovat jakoukoliv hodnotu extruze." -#: src/slic3r/GUI/GLCanvas3D.cpp:688 -msgid "Some objects are not visible" -msgstr "Některé objekty nejsou vidět" +#: src/slic3r/GUI/Plater.cpp:2309 +#, 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 "" +"Některé objekty v souboru %s se zdá, že jsou uložené v palcích.\n" +"Mám je považovat za uložené v palcích a převést je?" -#: src/libslic3r/Print.cpp:1226 +#: src/slic3r/GUI/GLCanvas3D.cpp:636 +msgid "Some objects are not visible." +msgstr "Některé objekty nejsou viditelné." + +#: src/libslic3r/Print.cpp:1252 msgid "Some objects are too close; your extruder will collide with them." msgstr "Některé objekty jsou příliš blízko; Extruder do nich narazí." -#: src/libslic3r/Print.cpp:1228 +#: src/libslic3r/Print.cpp:1254 msgid "Some objects are too tall and cannot be printed without extruder collisions." msgstr "Některé objekty jsou příliš vysoké a nelze je tisknout bez kolizí extruderu." -#: src/libslic3r/PrintConfig.cpp:2824 +#: src/libslic3r/PrintConfig.cpp:2988 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 "Některé objekty mohou být na několika menších podložkách namísto jedné velké. Tento parametr definuje, jak daleko může být střed dvou menších podložek. Pokud budou blíže, budou sloučeny do jedné podložky." -#: src/libslic3r/PrintConfig.cpp:2187 +#: src/libslic3r/PrintConfig.cpp:2330 msgid "Some printers or printer setups may have difficulties printing with a variable layer height. Enabled by default." msgstr "Některé tiskárny nebo nastavení tiskárny mohou mít potíže s tiskem s proměnnou výškou vrstvy. Ve výchozím nastavení je zapnuto." -#: src/libslic3r/PrintConfig.cpp:1984 +#: src/libslic3r/PrintConfig.cpp:2126 msgid "Spacing between interface lines. Set zero to get a solid interface." msgstr "Rozteč linií kontaktních vrstev. Nastavte nulu pro získání plných kontaktních vrstev." -#: src/libslic3r/PrintConfig.cpp:2018 +#: src/libslic3r/PrintConfig.cpp:1155 +msgid "Spacing between ironing passes" +msgstr "Mezery mezi žehlicími tahy" + +#: src/libslic3r/PrintConfig.cpp:2160 msgid "Spacing between support material lines." msgstr "Rozteč linií podpěr." -#: src/slic3r/GUI/GUI_ObjectList.cpp:98 src/slic3r/GUI/GUI_ObjectList.cpp:616 -#: src/slic3r/GUI/GUI_Preview.cpp:224 src/slic3r/GUI/Tab.cpp:1145 -#: src/libslic3r/PrintConfig.cpp:235 src/libslic3r/PrintConfig.cpp:458 -#: src/libslic3r/PrintConfig.cpp:919 src/libslic3r/PrintConfig.cpp:1048 -#: src/libslic3r/PrintConfig.cpp:1431 src/libslic3r/PrintConfig.cpp:1668 -#: src/libslic3r/PrintConfig.cpp:1716 src/libslic3r/PrintConfig.cpp:1768 -#: src/libslic3r/PrintConfig.cpp:2118 +#: src/slic3r/GUI/GUI_ObjectList.cpp:96 src/slic3r/GUI/GUI_ObjectList.cpp:655 +#: src/slic3r/GUI/GUI_Preview.cpp:278 src/slic3r/GUI/Tab.cpp:1474 +#: src/libslic3r/PrintConfig.cpp:269 src/libslic3r/PrintConfig.cpp:494 +#: src/libslic3r/PrintConfig.cpp:963 src/libslic3r/PrintConfig.cpp:1092 +#: src/libslic3r/PrintConfig.cpp:1165 src/libslic3r/PrintConfig.cpp:1539 +#: src/libslic3r/PrintConfig.cpp:1776 src/libslic3r/PrintConfig.cpp:1831 +#: src/libslic3r/PrintConfig.cpp:1883 src/libslic3r/PrintConfig.cpp:2261 msgid "Speed" msgstr "Rychlost" -#: src/libslic3r/PrintConfig.cpp:1670 -msgid "Speed (baud) of USB/serial port for printer connection." -msgstr "Rychlost (baud) USB/sériového portu pro připojení tiskárny." - -#: src/libslic3r/GCode/PreviewData.cpp:351 +#: src/slic3r/GUI/GCodeViewer.cpp:2238 src/libslic3r/GCode/PreviewData.cpp:356 msgid "Speed (mm/s)" msgstr "Rychlost (mm/s)" -#: src/libslic3r/PrintConfig.cpp:920 +#: src/libslic3r/PrintConfig.cpp:964 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 "Rychlost plnění malých mezer pomocí krátkých cikcak pohybů. Udržujte tuto hodnotu poměrně nízkou, aby nedošlo k přílišným otřesům a problémům s rezonancí. Nastavte nulu pro vypnutí vyplnění mezery." -#: src/slic3r/GUI/Tab.cpp:1158 +#: src/slic3r/GUI/Tab.cpp:1488 msgid "Speed for non-print moves" msgstr "Netiskové rychlosti" -#: src/libslic3r/PrintConfig.cpp:1432 +#: src/libslic3r/PrintConfig.cpp:1540 msgid "Speed for perimeters (contours, aka vertical shells). Set to zero for auto." msgstr "Rychlost pro perimetry (obrysy, neboli svislé stěny). Zadejte nulu pro automatické nastavení." -#: src/slic3r/GUI/Tab.cpp:1146 +#: src/slic3r/GUI/Tab.cpp:1475 msgid "Speed for print moves" msgstr "Rychlosti pohybů tiskárny" -#: src/libslic3r/PrintConfig.cpp:236 +#: src/libslic3r/PrintConfig.cpp:270 msgid "Speed for printing bridges." msgstr "Rychlost pro vytváření mostů." -#: src/libslic3r/PrintConfig.cpp:1769 +#: src/libslic3r/PrintConfig.cpp:1884 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 "Rychlost tisku plných oblastí (vrchní / spodní / vnitřní vodorovné stěny). Může být vyjádřeno procenty (například: 80%) oproti výchozí rychlosti vyplnění. Pro automatické nastavení zadejte nulu." -#: src/libslic3r/PrintConfig.cpp:1993 +#: src/libslic3r/PrintConfig.cpp:2135 msgid "Speed for printing support material interface layers. If expressed as percentage (for example 50%) it will be calculated over support material speed." msgstr "Rychlost tisku podpěrných interface vrstev. Pokud je vyjádřen procentní podíl (například 50%), vypočítá se podle rychlosti tisku podpěr." -#: src/libslic3r/PrintConfig.cpp:2027 +#: src/libslic3r/PrintConfig.cpp:2169 msgid "Speed for printing support material." msgstr "Rychlost tisku podpěr." -#: src/libslic3r/PrintConfig.cpp:1049 +#: src/libslic3r/PrintConfig.cpp:1093 msgid "Speed for printing the internal fill. Set to zero for auto." msgstr "Rychlost tisku vnitřní výplně. Pro automatické nastavení zadejte nulu." -#: src/libslic3r/PrintConfig.cpp:2119 +#: src/libslic3r/PrintConfig.cpp:2262 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 slow down this to get a nicer surface finish. This can be expressed as a percentage (for example: 80%) over the solid infill speed above. Set to zero for auto." msgstr "Rychlost tisku vrchních plných vrstev (vztahuje se pouze na nejvyšší horní vrstvy a nikoli na jejich vnitřní plné vrstvy). Rychlost lze zpomalit, abyste získali hezčí povrchovou úpravu. Může být vyjádřena procenty (například: 80%) z rychlosti plné výplně materiálu výše. Pro automatické nastavení zadejte nulu." -#: src/libslic3r/PrintConfig.cpp:2153 +#: src/libslic3r/PrintConfig.cpp:2296 msgid "Speed for travel moves (jumps between distant extrusion points)." msgstr "Rychlost posunů (přejezdy mezi body extruze)." -#: src/libslic3r/PrintConfig.cpp:659 +#: src/libslic3r/PrintConfig.cpp:695 msgid "Speed of the first cooling move" msgstr "Rychlost prvního pohybu chlazení" -#: src/libslic3r/PrintConfig.cpp:678 +#: src/libslic3r/PrintConfig.cpp:714 msgid "Speed of the last cooling move" msgstr "Rychlost posledního pohybu chlazení" -#: src/libslic3r/PrintConfig.cpp:616 +#: src/libslic3r/PrintConfig.cpp:652 msgid "Speed used at the very beginning of loading phase." msgstr "Rychlost použitá na samém počátku zaváděcí fáze." -#: src/libslic3r/PrintConfig.cpp:608 +#: src/libslic3r/PrintConfig.cpp:644 msgid "Speed used for loading the filament on the wipe tower." msgstr "Rychlost použitá pro zavádění filamentu na čistící věž." -#: src/libslic3r/PrintConfig.cpp:624 +#: src/libslic3r/PrintConfig.cpp:660 msgid "Speed used for unloading the filament on the wipe tower (does not affect initial part of unloading just after ramming)." msgstr "Rychlost vysouvání filamentu při výměně na čistící věži (úvodní část vysunutí okamžitě po rapidní extruzi není ovlivněna)." -#: src/libslic3r/PrintConfig.cpp:633 +#: src/libslic3r/PrintConfig.cpp:669 msgid "Speed used for unloading the tip of the filament immediately after ramming." msgstr "Rychlost použitá při vysouvání špičky filamentu bezprostředně po rapidní extruzi." -#: src/slic3r/GUI/Mouse3DController.cpp:296 +#: src/slic3r/GUI/Mouse3DController.cpp:279 msgid "Speed:" msgstr "Rychlost:" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1432 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:54 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:37 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1563 msgid "Sphere" msgstr "Koule" -#: src/libslic3r/PrintConfig.cpp:1794 +#: src/libslic3r/PrintConfig.cpp:1909 msgid "Spiral vase" msgstr "Spirálová váza" -#: src/slic3r/GUI/ConfigManipulation.cpp:90 +#: src/slic3r/GUI/ConfigManipulation.cpp:89 msgid "Spiral Vase" msgstr "Spirálová Váza" -#: src/slic3r/GUI/Plater.cpp:4019 src/slic3r/GUI/Plater.cpp:4034 -#: src/slic3r/GUI/Plater.cpp:4048 src/libslic3r/PrintConfig.cpp:3471 +#: src/slic3r/GUI/Plater.cpp:3939 src/slic3r/GUI/Plater.cpp:3954 +#: src/slic3r/GUI/Plater.cpp:3972 src/libslic3r/PrintConfig.cpp:3670 msgid "Split" msgstr "Rozdělit" -#: src/slic3r/GUI/Plater.cpp:4019 +#: src/slic3r/GUI/Plater.cpp:3939 msgid "Split the selected object" msgstr "Rozdělit vybraný objekt" -#: src/slic3r/GUI/Plater.cpp:4014 src/slic3r/GUI/Plater.cpp:4034 +#: src/slic3r/GUI/Plater.cpp:3934 src/slic3r/GUI/Plater.cpp:3954 msgid "Split the selected object into individual objects" msgstr "Rozdělit vybraný objekt na jednotlivé objekty" -#: src/slic3r/GUI/Plater.cpp:4016 src/slic3r/GUI/Plater.cpp:4048 +#: src/slic3r/GUI/Plater.cpp:3936 src/slic3r/GUI/Plater.cpp:3972 msgid "Split the selected object into individual sub-parts" msgstr "Rozdělit vybraný objekt na jednotlivé dílčí části" -#: src/slic3r/GUI/GLCanvas3D.cpp:4550 +#: src/slic3r/GUI/GLCanvas3D.cpp:4916 msgid "Split to objects" msgstr "Rozdělit na objekty" -#: src/slic3r/GUI/Plater.cpp:2981 +#: src/slic3r/GUI/Plater.cpp:2774 msgid "Split to Objects" msgstr "Rozdělit na Objekty" -#: src/slic3r/GUI/GLCanvas3D.cpp:4560 src/slic3r/GUI/GUI_ObjectList.cpp:1487 +#: src/slic3r/GUI/GLCanvas3D.cpp:4926 src/slic3r/GUI/GUI_ObjectList.cpp:1618 msgid "Split to parts" msgstr "Rozdělit na části" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2274 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2440 msgid "Split to Parts" msgstr "Rozdělit na Části" -#: src/slic3r/GUI/ConfigWizard.cpp:289 +#: src/slic3r/GUI/ConfigWizard.cpp:307 msgid "Standard" msgstr "Běžné" -#: src/libslic3r/PrintConfig.cpp:846 +#: src/libslic3r/PrintConfig.cpp:884 msgid "Stars" msgstr "Hvězdy" -#: src/slic3r/GUI/MainFrame.cpp:405 +#: src/slic3r/GUI/MainFrame.cpp:986 msgid "Start a new project" msgstr "Vytvořit nový projekt" -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:27 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:29 msgid "Start at height" msgstr "Začít ve výšce" -#: src/slic3r/GUI/Tab.cpp:1528 src/slic3r/GUI/Tab.cpp:1976 -#: src/libslic3r/PrintConfig.cpp:1813 src/libslic3r/PrintConfig.cpp:1828 +#: src/slic3r/GUI/Tab.cpp:1873 src/slic3r/GUI/Tab.cpp:2161 +#: src/libslic3r/PrintConfig.cpp:1928 src/libslic3r/PrintConfig.cpp:1943 msgid "Start G-code" msgstr "Začátek G-code" -#: src/slic3r/GUI/MainFrame.cpp:532 +#: src/slic3r/GUI/MainFrame.cpp:1133 msgid "Start new slicing process" msgstr "Zahájit nový slicovací proces" @@ -7360,7 +8478,36 @@ msgstr "Zahájit nový slicovací proces" msgid "Start printing after upload" msgstr "Spustit tisk po nahrání" -#: src/slic3r/GUI/PrintHostDialogs.cpp:151 +#: src/slic3r/GUI/GUI_App.cpp:396 +msgid "Start the application" +msgstr "Spusťit aplikaci" + +#: src/slic3r/GUI/GUI_App.cpp:386 +msgid "" +"Starting with %1% 2.3, configuration directory on Linux has changed (according to XDG Base Directory Specification) to \n" +"%2%.\n" +"\n" +"This directory did not exist yet (maybe you run the new version for the first time).\n" +"However, an old %1% configuration directory was detected in \n" +"%3%.\n" +"\n" +"Consider moving the contents of the old directory to the new location in order to access your profiles, etc.\n" +"Note that if you decide to downgrade %1% in future, it will use the old location again.\n" +"\n" +"What do you want to do now?" +msgstr "" +"Počínaje %1% 2.3 se konfigurační adresář v systému Linux změnil (podle specifikace XDG Base Directory) na %2%.\n" +"\n" +"Tento adresář ještě neexistoval (možná používáte novou verzi poprvé).\n" +"Byl však zjištěn starý konfigurační adresář %1% v\n" +"%3%.\n" +"\n" +"Zvažte přesunutí obsahu starého adresáře do nového umístění za účelem přístupu k vašim profilům atd.\n" +"Pamatujte, že pokud se v budoucnu rozhodnete %1% downgradovat, použije znovu staré umístění.\n" +"\n" +"Co chcete udělat?" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:149 msgid "Status" msgstr "Stav" @@ -7368,166 +8515,160 @@ msgstr "Stav" msgid "Status:" msgstr "Stav:" -#: src/slic3r/GUI/Tab.cpp:2209 +#: src/slic3r/GUI/Search.cpp:77 src/slic3r/GUI/Tab.cpp:2378 msgid "Stealth" msgstr "Tichý" -#: src/slic3r/GUI/Plater.cpp:1291 +#: src/slic3r/GUI/Plater.cpp:1187 src/slic3r/GUI/Plater.cpp:1235 msgid "stealth mode" msgstr "tichý režim" -#: src/slic3r/GUI/Plater.cpp:4985 +#: src/slic3r/GUI/GCodeViewer.cpp:2557 +msgid "Stealth mode" +msgstr "Tichý režim" + +#: src/slic3r/GUI/Plater.cpp:5118 #, c-format msgid "STL file exported to %s" msgstr "Soubor STL exportován do %s" -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:27 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:29 msgid "Stop at height" msgstr "Skončit ve výšce" -#: src/slic3r/GUI/Tab.cpp:1693 src/slic3r/GUI/Tab.cpp:1928 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:295 msgid "Success!" msgstr "Úspěch!" -#: src/slic3r/GUI/PresetHints.cpp:203 +#: src/slic3r/GUI/Plater.cpp:2047 +#, c-format +msgid "Successfully unmounted. The device %s(%s) can now be safely removed from the computer." +msgstr "Odpojení proběhlo úspěšné. Zařízení %s(%s) lze nyní bezpečně odebrat z počítače." + +#: src/slic3r/GUI/PresetHints.cpp:202 msgid "support" msgstr "podpěry" -#: src/libslic3r/PrintConfig.cpp:2692 +#: src/libslic3r/PrintConfig.cpp:2856 msgid "Support base diameter" msgstr "Průměr podpěrné základny" -#: src/libslic3r/PrintConfig.cpp:2702 +#: src/libslic3r/PrintConfig.cpp:2866 msgid "Support base height" msgstr "Výška podpěrné základny" -#: src/libslic3r/PrintConfig.cpp:2711 +#: src/libslic3r/PrintConfig.cpp:2875 msgid "Support base safety distance" msgstr "Bezpečná vzdálenost podpěrné základny" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3551 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4014 msgid "Support Blocker" msgstr "Blokátor podpěr" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3551 +#: src/libslic3r/PrintConfig.cpp:895 +msgid "Support Cubic" +msgstr "Kubická podepíraná" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:4014 msgid "Support Enforcer" msgstr "Vynucení podpěr" -#: src/slic3r/GUI/ConfigManipulation.cpp:163 +#: src/slic3r/GUI/ConfigManipulation.cpp:162 msgid "Support Generator" msgstr "Generátor Podpěr" -#: src/slic3r/GUI/Tab.cpp:3608 +#: src/slic3r/GUI/Tab.cpp:4018 msgid "Support head" msgstr "Hrot podpěry" -#: src/libslic3r/PrintConfig.cpp:2620 -msgid "Support head front diameter" -msgstr "Průměr hrotu podpěry" - -#: src/libslic3r/PrintConfig.cpp:2629 -msgid "Support head penetration" -msgstr "Průnik podpěry do modelu" - -#: src/libslic3r/PrintConfig.cpp:2638 -msgid "Support head width" -msgstr "Tloušťka hrotu podpěry" - -#: src/slic3r/GUI/PresetHints.cpp:213 +#: src/slic3r/GUI/PresetHints.cpp:212 msgid "support interface" msgstr "kontaktní vrstva podpěr" -#: src/slic3r/GUI/GUI_ObjectList.cpp:36 src/slic3r/GUI/GUI_ObjectList.cpp:97 -#: src/slic3r/GUI/GUI_ObjectList.cpp:615 src/slic3r/GUI/GUI_Preview.cpp:246 -#: src/slic3r/GUI/Tab.cpp:1120 src/slic3r/GUI/Tab.cpp:1121 -#: src/libslic3r/ExtrusionEntity.cpp:319 src/libslic3r/PrintConfig.cpp:370 -#: src/libslic3r/PrintConfig.cpp:1502 src/libslic3r/PrintConfig.cpp:1866 -#: src/libslic3r/PrintConfig.cpp:1872 src/libslic3r/PrintConfig.cpp:1880 -#: src/libslic3r/PrintConfig.cpp:1892 src/libslic3r/PrintConfig.cpp:1902 -#: src/libslic3r/PrintConfig.cpp:1910 src/libslic3r/PrintConfig.cpp:1925 -#: src/libslic3r/PrintConfig.cpp:1946 src/libslic3r/PrintConfig.cpp:1958 -#: src/libslic3r/PrintConfig.cpp:1974 src/libslic3r/PrintConfig.cpp:1983 -#: src/libslic3r/PrintConfig.cpp:1992 src/libslic3r/PrintConfig.cpp:2003 -#: src/libslic3r/PrintConfig.cpp:2017 src/libslic3r/PrintConfig.cpp:2025 -#: src/libslic3r/PrintConfig.cpp:2026 src/libslic3r/PrintConfig.cpp:2035 -#: src/libslic3r/PrintConfig.cpp:2043 src/libslic3r/PrintConfig.cpp:2057 +#: 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:311 +#: src/slic3r/GUI/Tab.cpp:1449 src/slic3r/GUI/Tab.cpp:1450 +#: src/libslic3r/ExtrusionEntity.cpp:324 src/libslic3r/ExtrusionEntity.cpp:356 +#: src/libslic3r/PrintConfig.cpp:404 src/libslic3r/PrintConfig.cpp:1610 +#: src/libslic3r/PrintConfig.cpp:2008 src/libslic3r/PrintConfig.cpp:2014 +#: src/libslic3r/PrintConfig.cpp:2022 src/libslic3r/PrintConfig.cpp:2034 +#: src/libslic3r/PrintConfig.cpp:2044 src/libslic3r/PrintConfig.cpp:2052 +#: src/libslic3r/PrintConfig.cpp:2067 src/libslic3r/PrintConfig.cpp:2088 +#: src/libslic3r/PrintConfig.cpp:2100 src/libslic3r/PrintConfig.cpp:2116 +#: src/libslic3r/PrintConfig.cpp:2125 src/libslic3r/PrintConfig.cpp:2134 +#: src/libslic3r/PrintConfig.cpp:2145 src/libslic3r/PrintConfig.cpp:2159 +#: src/libslic3r/PrintConfig.cpp:2167 src/libslic3r/PrintConfig.cpp:2168 +#: src/libslic3r/PrintConfig.cpp:2177 src/libslic3r/PrintConfig.cpp:2185 +#: src/libslic3r/PrintConfig.cpp:2199 msgid "Support material" msgstr "Podpěry" -#: src/slic3r/GUI/GUI_Preview.cpp:247 src/libslic3r/ExtrusionEntity.cpp:320 -#: src/libslic3r/PrintConfig.cpp:1991 +#: src/slic3r/GUI/GUI_Preview.cpp:312 src/libslic3r/ExtrusionEntity.cpp:325 +#: src/libslic3r/ExtrusionEntity.cpp:358 src/libslic3r/PrintConfig.cpp:2133 msgid "Support material interface" msgstr "Kontaktní vrstvy podpěr" -#: src/libslic3r/PrintConfig.cpp:2044 +#: src/libslic3r/PrintConfig.cpp:2186 msgid "Support material will not be generated for overhangs whose slope angle (90° = vertical) is above the given threshold. In other words, this value represent the most horizontal slope (measured from the horizontal plane) that you can print without support material. Set to zero for automatic detection (recommended)." msgstr "Podpěry nebudou vytvořeny pro převisy, jejichž úhel sklonu (90° = vertikální) je nad danou prahovou hodnotou. Jinými slovy, tato hodnota představuje největší horizontální sklon (měřený od horizontální roviny), který můžete tisknout bez podpěrného materiálu. Nastavte na nulu pro automatickou detekci (doporučeno)." -#: src/libslic3r/PrintConfig.cpp:1964 +#: src/libslic3r/PrintConfig.cpp:2106 msgid "Support material/raft interface extruder" msgstr "Extruder pro kontaktní podpěry/raft" -#: src/libslic3r/PrintConfig.cpp:1937 +#: src/libslic3r/PrintConfig.cpp:2079 msgid "Support material/raft/skirt extruder" msgstr "Extruder pro podpěry/raft/obrys" -#: src/slic3r/GUI/Plater.cpp:500 src/libslic3r/PrintConfig.cpp:1901 -#: src/libslic3r/PrintConfig.cpp:2674 +#: src/slic3r/GUI/Plater.cpp:366 src/libslic3r/PrintConfig.cpp:2043 +#: src/libslic3r/PrintConfig.cpp:2838 msgid "Support on build plate only" msgstr "Pouze na tiskové podložce" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:888 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:762 msgid "Support parameter change" msgstr "Změna nastavení podpěr" -#: src/slic3r/GUI/Tab.cpp:3613 +#: src/slic3r/GUI/Tab.cpp:4023 msgid "Support pillar" msgstr "Podpěrný pilíř" -#: src/libslic3r/PrintConfig.cpp:2658 -msgid "Support pillar connection mode" -msgstr "Propojení podpěr" - -#: src/libslic3r/PrintConfig.cpp:2648 -msgid "Support pillar diameter" -msgstr "Tloušťka podpěry" - -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:55 -#: src/libslic3r/PrintConfig.cpp:2764 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:54 +#: src/libslic3r/PrintConfig.cpp:2928 msgid "Support points density" msgstr "Hustota podpěrných bodů" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1196 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1048 msgid "Support points edit" msgstr "Úprava podpěrných bodů" -#: src/slic3r/GUI/GUI_ObjectList.cpp:106 src/slic3r/GUI/GUI_ObjectList.cpp:624 -#: src/slic3r/GUI/Plater.cpp:495 src/slic3r/GUI/Tab.cpp:3604 -#: src/slic3r/GUI/Tab.cpp:3605 src/libslic3r/PrintConfig.cpp:2614 -#: src/libslic3r/PrintConfig.cpp:2621 src/libslic3r/PrintConfig.cpp:2630 -#: src/libslic3r/PrintConfig.cpp:2639 src/libslic3r/PrintConfig.cpp:2649 -#: src/libslic3r/PrintConfig.cpp:2675 src/libslic3r/PrintConfig.cpp:2682 -#: src/libslic3r/PrintConfig.cpp:2693 src/libslic3r/PrintConfig.cpp:2703 -#: src/libslic3r/PrintConfig.cpp:2712 src/libslic3r/PrintConfig.cpp:2725 -#: src/libslic3r/PrintConfig.cpp:2735 src/libslic3r/PrintConfig.cpp:2744 -#: src/libslic3r/PrintConfig.cpp:2754 src/libslic3r/PrintConfig.cpp:2765 -#: src/libslic3r/PrintConfig.cpp:2773 +#: src/slic3r/GUI/GUI_ObjectList.cpp:104 src/slic3r/GUI/GUI_ObjectList.cpp:663 +#: src/slic3r/GUI/Plater.cpp:361 src/slic3r/GUI/Tab.cpp:4014 +#: src/slic3r/GUI/Tab.cpp:4015 src/libslic3r/PrintConfig.cpp:2757 +#: src/libslic3r/PrintConfig.cpp:2764 src/libslic3r/PrintConfig.cpp:2773 +#: src/libslic3r/PrintConfig.cpp:2782 src/libslic3r/PrintConfig.cpp:2792 +#: src/libslic3r/PrintConfig.cpp:2802 src/libslic3r/PrintConfig.cpp:2839 +#: src/libslic3r/PrintConfig.cpp:2846 src/libslic3r/PrintConfig.cpp:2857 +#: src/libslic3r/PrintConfig.cpp:2867 src/libslic3r/PrintConfig.cpp:2876 +#: src/libslic3r/PrintConfig.cpp:2889 src/libslic3r/PrintConfig.cpp:2899 +#: src/libslic3r/PrintConfig.cpp:2908 src/libslic3r/PrintConfig.cpp:2918 +#: src/libslic3r/PrintConfig.cpp:2929 src/libslic3r/PrintConfig.cpp:2937 msgid "Supports" msgstr "Podpěry" -#: src/slic3r/GUI/Plater.cpp:1194 +#: src/slic3r/GUI/Plater.cpp:1103 msgid "supports and pad" msgstr "podpěry a podložka" -#: src/libslic3r/PrintConfig.cpp:1092 +#: src/libslic3r/PrintConfig.cpp:1185 msgid "Supports remaining times" msgstr "Podpora zbývajících tiskových časů" -#: src/libslic3r/PrintConfig.cpp:1101 +#: src/libslic3r/PrintConfig.cpp:1194 msgid "Supports stealth mode" msgstr "Podporuje tichý režim" -#: src/slic3r/GUI/ConfigManipulation.cpp:159 +#: src/slic3r/GUI/ConfigManipulation.cpp:158 msgid "" "Supports work better, if the following feature is enabled:\n" "- Detect bridging perimeters" @@ -7535,44 +8676,60 @@ msgstr "" "Podpěry fungují lépe, pokud je povolena funkce:\n" "- Detekovat perimetry přemostění" -#: src/slic3r/GUI/Preferences.cpp:87 +#: src/slic3r/GUI/Preferences.cpp:104 msgid "Suppress \" - default - \" presets" msgstr "Potlačit “ - výchozí - “ přednastavení" -#: src/slic3r/GUI/Preferences.cpp:89 +#: src/slic3r/GUI/Preferences.cpp:106 msgid "Suppress \" - default - \" presets in the Print / Filament / Printer selections once there are any other valid presets available." msgstr "Potlačit “ - výchozí - “ přednastavení v nabídkách Tisk / Filament / Tiskárna, jakmile budou k dispozici další platné předvolby." -#: src/slic3r/GUI/MainFrame.cpp:826 +#: src/slic3r/GUI/MainFrame.cpp:1527 msgid "SVG" msgstr "SVG" -#: src/slic3r/GUI/DoubleSlider.cpp:1144 +#: src/slic3r/GUI/Mouse3DController.cpp:318 +msgid "Swap Y/Z axes" +msgstr "Zaměnit osy Y/Z" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:179 +msgid "Switch between Editor/Preview" +msgstr "Přepínání mezi Editorem/Náhledem" + +#: src/slic3r/GUI/DoubleSlider.cpp:1273 msgid "Switch code to Change extruder" msgstr "Zaměnit za příkaz na Změnu extruderu" -#: src/slic3r/GUI/DoubleSlider.cpp:1179 +#: src/slic3r/GUI/DoubleSlider.cpp:1306 msgid "Switch code to Color change (%1%) for:" msgstr "Zaměnit za příkaz na Změnu barvy (%1%) pro:" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:140 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:136 msgid "Switch to 3D" msgstr "Přepnout do 3D" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1376 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1223 msgid "Switch to editing mode" msgstr "Přepnout do režimu editace" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:141 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:137 msgid "Switch to Preview" msgstr "Přepnout do náhledu" -#: src/slic3r/GUI/wxExtensions.cpp:703 +#: src/slic3r/GUI/GLCanvas3D.cpp:4302 src/slic3r/GUI/GLCanvas3D.cpp:4939 +msgid "Switch to Settings" +msgstr "Přepnout do Nastavení" + +#: src/slic3r/GUI/wxExtensions.cpp:623 #, c-format msgid "Switch to the %s mode" msgstr "Přepnout do režimu %s" -#: src/slic3r/GUI/GUI_App.cpp:882 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:542 +msgid "Switching Presets: Unsaved Changes" +msgstr "Přepnutí na jiné přednastavení: Neuložené změny" + +#: src/slic3r/GUI/GUI_App.cpp:1608 msgid "" "Switching the language will trigger application restart.\n" "You will lose content of the plater." @@ -7590,65 +8747,72 @@ msgstr "" "\n" "Opravdu chcete pokračovat?" -#: src/slic3r/GUI/Tab.cpp:1014 +#: src/slic3r/GUI/Tab.cpp:1332 msgid "symbolic profile name" msgstr "symbolické jméno profilu" -#: src/libslic3r/PrintConfig.cpp:2036 +#: src/libslic3r/PrintConfig.cpp:2178 msgid "Synchronize support layers with the object print layers. This is useful with multi-material printers, where the extruder switch is expensive." msgstr "Synchronizování vrstev podpěr s vrstvami objektu. Toto je velmi užitečné u multi-materiálových tiskáren, kde je přepínání extruderů drahé." -#: src/libslic3r/PrintConfig.cpp:2034 +#: src/libslic3r/PrintConfig.cpp:2176 msgid "Synchronize with object layers" msgstr "Synchronizovat s vrstvami objektu" -#: src/slic3r/GUI/MainFrame.cpp:699 +#: src/slic3r/GUI/MainFrame.cpp:924 src/slic3r/GUI/MainFrame.cpp:1323 msgid "System &Info" msgstr "&Informace o systému" -#: src/slic3r/GUI/SysInfoDialog.cpp:78 +#: src/slic3r/GUI/SysInfoDialog.cpp:90 src/slic3r/GUI/SysInfoDialog.cpp:92 msgid "System Information" msgstr "Systémové informace" -#: src/slic3r/GUI/Preset.cpp:1109 src/slic3r/GUI/Preset.cpp:1164 -#: src/slic3r/GUI/Preset.cpp:1242 src/slic3r/GUI/Preset.cpp:1284 -#: src/slic3r/GUI/PresetBundle.cpp:1583 src/slic3r/GUI/PresetBundle.cpp:1672 +#: src/slic3r/GUI/PresetComboBoxes.cpp:188 +#: src/slic3r/GUI/PresetComboBoxes.cpp:226 +#: src/slic3r/GUI/PresetComboBoxes.cpp:724 +#: src/slic3r/GUI/PresetComboBoxes.cpp:774 +#: src/slic3r/GUI/PresetComboBoxes.cpp:886 +#: src/slic3r/GUI/PresetComboBoxes.cpp:930 msgid "System presets" msgstr "Systémová přednastavení" -#: src/slic3r/GUI/GUI_App.cpp:801 +#: src/slic3r/GUI/GUI_App.cpp:1481 msgid "Take Configuration &Snapshot" msgstr "Prové&st Zálohu konfigurace" -#: src/slic3r/GUI/GUI_App.cpp:839 +#: src/slic3r/GUI/GUI_App.cpp:1540 msgid "Taking configuration snapshot" msgstr "Ukládání zálohy nastavení" -#: src/slic3r/GUI/Tab.cpp:1433 src/libslic3r/PrintConfig.cpp:2067 +#: src/slic3r/GUI/Tab.cpp:1779 msgid "Temperature" msgstr "Teplota" -#: src/libslic3r/PrintConfig.cpp:1804 +#: src/libslic3r/PrintConfig.cpp:1919 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 "Teplotní rozdíl, který se použije v případě, že extruder není aktivní. Umožňuje “obětní” obrysy v plné výšce objektu, na kterém jsou trysky periodicky očištěny." -#: src/libslic3r/PrintConfig.cpp:1803 +#: src/libslic3r/PrintConfig.cpp:1918 msgid "Temperature variation" msgstr "Kolísání teploty" -#: src/slic3r/GUI/ConfigWizard.cpp:1017 +#: src/slic3r/GUI/ConfigWizard.cpp:1383 msgid "Temperatures" msgstr "Teploty" -#: src/slic3r/GUI/Tab.cpp:1677 src/slic3r/GUI/Tab.cpp:1915 +#: src/slic3r/GUI/Tab.cpp:2215 +msgid "Template Custom G-code" +msgstr "Šablona s vlastním G-code" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:284 msgid "Test" msgstr "Test" -#: src/slic3r/GUI/BedShapeDialog.cpp:172 +#: src/slic3r/GUI/BedShapeDialog.cpp:315 msgid "Texture" msgstr "Textura" -#: src/slic3r/GUI/ConfigManipulation.cpp:208 +#: src/slic3r/GUI/ConfigManipulation.cpp:207 msgid "The %1% infill pattern is not supposed to work at 100%% density." msgstr "Vzor výplně %1% není určen pro 100%% hustotu výplně." @@ -7664,131 +8828,148 @@ msgid "" "If the device is connected, please press the Reset button next to the USB connector ..." msgstr "Zařízení %s nebylo nalezeno. Pokud je zařízení připojeno, stiskněte tlačítko Reset vedle USB konektoru ..." -#: src/slic3r/GUI/Tab.cpp:976 +#: src/slic3r/GUI/Tab.cpp:1238 msgid "The current custom preset will be detached from the parent system preset." msgstr "Aktuální vlastní přednastavení bude odděleno od rodičovského systémového přednastavení." -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:875 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:925 msgid "" "The currently manipulated object is tilted (rotation angles are not multiples of 90°).\n" "Non-uniform scaling of tilted objects is only possible in the World coordinate system,\n" "once the rotation is embedded into the object coordinates." msgstr "Momentálně upravovaný objekt je pootočený (rotační úhly nejsou násobky 90°). Nejednotné škálování nakloněných objektů je ve světových koordinátech možné pouze tehdy, když je informace o rotacích zapsána do koordinátů daného objektu." -#: src/libslic3r/PrintConfig.cpp:2726 +#: src/libslic3r/PrintConfig.cpp:2890 msgid "The default angle for connecting support sticks and junctions." msgstr "Výchozí úhel pro připojení nosných tyčí a spojek." -#: src/libslic3r/SLAPrint.cpp:631 +#: src/libslic3r/SLAPrint.cpp:645 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 "Konce podpěrných sloupů budou rozmístěny mezi předmět a podložku. Proto musí být „Bezpečná vzdálenost podpěrné základny“ větší než parametr „Mezera Podložka-Objekt“." -#: src/libslic3r/PrintConfig.cpp:489 +#: src/libslic3r/PrintConfig.cpp:525 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 "Extruder, který chcete použít (pokud nejsou zvoleny specifičtější nastavení extruderu). Tato hodnota přepíše nastavení perimetrového a výplňového exrtuderu, ale ne nastavení extruderu pro podpěry." -#: src/libslic3r/PrintConfig.cpp:1003 +#: src/libslic3r/PrintConfig.cpp:1047 msgid "The extruder to use when printing infill." msgstr "Extruder který se použije pro tisk výplní." -#: src/libslic3r/PrintConfig.cpp:1410 +#: src/libslic3r/PrintConfig.cpp:1518 msgid "The extruder to use when printing perimeters and brim. First extruder is 1." msgstr "Extruder, který se používá při tisku perimetrů a límce. První extruder je 1." -#: src/libslic3r/PrintConfig.cpp:1738 +#: src/libslic3r/PrintConfig.cpp:1853 msgid "The extruder to use when printing solid infill." msgstr "Extruder který bude použit při tisku plných výplní." -#: src/libslic3r/PrintConfig.cpp:1966 +#: src/libslic3r/PrintConfig.cpp:2108 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 "Extruder, který se použije při tisku kontaktních vrstev podpěr (1+, 0 pro použití aktuálního extruderu, aby se minimalizovaly změny nástroje). To ovlivňuje i raft." -#: src/libslic3r/PrintConfig.cpp:1939 +#: src/libslic3r/PrintConfig.cpp:2081 msgid "The extruder to use when printing support material, raft and skirt (1+, 0 to use the current extruder to minimize tool changes)." msgstr "Extruder, který se používá při tisku podpěr, raftu a obrysu (1+, 0 pro použití aktuálního extruderu pro co nejméně změn nástroje)." -#: src/libslic3r/PrintConfig.cpp:727 +#: src/libslic3r/PrintConfig.cpp:763 msgid "The filament material type for use in custom G-codes." msgstr "Typ filamentu pro použití ve vlastních G-code." -#: src/libslic3r/PrintConfig.cpp:3494 +#: src/libslic3r/PrintConfig.cpp:3693 msgid "The file where the output will be written (if not specified, it will be based on the input file)." msgstr "Soubor, do kterého bude zapisován výstup (pokud není zadán, bude vycházet ze vstupního souboru)." -#: src/libslic3r/PrintConfig.cpp:1102 +#: src/libslic3r/PrintConfig.cpp:1195 msgid "The firmware supports stealth mode" msgstr "Firmware podporuje tichý režim" -#: src/libslic3r/PrintConfig.cpp:120 +#: src/libslic3r/PrintConfig.cpp:122 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 "První vrstva bude v rovině XY zmenšena nakonfigurovanou hodnotou, která kompenzuje rozplácnutí první vrstvy." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3820 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3927 src/slic3r/GUI/Tab.cpp:3457 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4283 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4410 +#: src/slic3r/GUI/SavePresetDialog.cpp:117 msgid "the following characters are not allowed:" msgstr "následující znaky nejsou povolené:" -#: src/slic3r/GUI/ConfigWizard.cpp:1830 +#: src/slic3r/GUI/ConfigWizard.cpp:2257 msgid "The following FFF printer models have no filament selected:" msgstr "Následující modely FFF tiskáren nemají vybraný filament:" -#: src/slic3r/GUI/ConfigWizard.cpp:1848 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1004 +msgid "The following presets were modified:" +msgstr "Byla upravena následující přednastavení:" + +#: 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:" -#: src/slic3r/GUI/Tab.cpp:3461 +#: src/slic3r/GUI/SavePresetDialog.cpp:125 msgid "the following suffix is not allowed:" msgstr "následující přípona není povolená:" -#: src/libslic3r/PrintConfig.cpp:2871 +#: src/libslic3r/PrintConfig.cpp:3035 msgid "The gap between the object bottom and the generated pad in zero elevation mode." msgstr "Mezera mezi spodkem objektu a generovanou podložkou v režimu nulového nadzvednutí." -#: src/libslic3r/PrintConfig.cpp:2704 +#: src/libslic3r/PrintConfig.cpp:2868 msgid "The height of the pillar base cone" msgstr "Výška ukotvení podpěrného kužele" -#: src/slic3r/GUI/DoubleSlider.cpp:1922 +#: src/slic3r/GUI/DoubleSlider.cpp:2140 msgid "The last color change data was saved for a multi extruder printing with tool changes for whole print." msgstr "Poslední změny barev byly uloženy pro tisk s více extrudery se změnami nástrojů během celého tisku." -#: src/slic3r/GUI/DoubleSlider.cpp:1900 src/slic3r/GUI/DoubleSlider.cpp:1916 +#: src/slic3r/GUI/DoubleSlider.cpp:2119 src/slic3r/GUI/DoubleSlider.cpp:2134 msgid "The last color change data was saved for a multi extruder printing." msgstr "Poslední změny barev byly uloženy pro tisk s více extrudery." -#: src/slic3r/GUI/DoubleSlider.cpp:1899 +#: src/slic3r/GUI/DoubleSlider.cpp:2118 msgid "The last color change data was saved for a single extruder printing." msgstr "Poslední změny barev byly uloženy pro tisk s jedním extruderem." -#: src/libslic3r/PrintConfig.cpp:2745 +#: src/libslic3r/PrintConfig.cpp:2909 msgid "The max distance of two pillars to get linked with each other. A zero value will prohibit pillar cascading." msgstr "Maximální vzdálenost dvou podpůrných pilířů pro vzájemné provázání. Nulová hodnota zakáže provazování." -#: src/libslic3r/PrintConfig.cpp:2736 +#: src/libslic3r/PrintConfig.cpp:2900 msgid "The max length of a bridge" msgstr "Maximální délka přemostění" -#: src/libslic3r/PrintConfig.cpp:2714 +#: 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." -#: src/libslic3r/PrintConfig.cpp:185 +#: src/slic3r/GUI/SavePresetDialog.cpp:142 +msgid "The name cannot be empty." +msgstr "Název nesmí být prázdný." + +#: 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." -#: src/libslic3r/PrintConfig.cpp:2143 +#: src/libslic3r/PrintConfig.cpp:2286 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 "Počet vrchních plných vrstev je navýšen nad zadaný počet top_solid_layers, je-li to nutné k dosažení minimální tloušťky vrchní skořepiny. Zabrání se tak tzv. „pillowing“ efektu při tisku s proměnnou výškou vrstvy." -#: src/libslic3r/PrintConfig.cpp:2277 +#: src/slic3r/GUI/Plater.cpp:2326 +msgid "The object appears to be saved in inches" +msgstr "Objekt se zdá být uložen v palcích" + +#: src/libslic3r/PrintConfig.cpp:2420 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 "Objekt bude roztažen / smrštěn v rovině XY nastavenou hodnotou (negativní = směrem dovnitř, pozitivní = směrem ven). To může být užitečné pro jemné doladění otvorů." -#: src/libslic3r/PrintConfig.cpp:1503 +#: src/libslic3r/PrintConfig.cpp:1611 msgid "The object will be raised by this number of layers, and support material will be generated under it." msgstr "Objekt se zvýší tímto počtem vrstev a pod ním bude vytvořen podpůrný materiál." -#: src/libslic3r/PrintConfig.cpp:2424 +#: src/libslic3r/PrintConfig.cpp:2803 +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 "Procentuální velikost menších podpěrných pilířů oproti průměru normálních pilířů. Menší pilíře jsou použity v problematických místech, kam se normální nevejdou." + +#: src/libslic3r/PrintConfig.cpp:2567 msgid "" "The percentage of the bed area. \n" "If the print area exceeds the specified value, \n" @@ -7798,39 +8979,51 @@ msgstr "" "Pokud tisk zabere více než je zadaná hodnota,\n" "bude použit pomalý náklon. V ostatních případech bude použit rychlý náklon" -#: src/slic3r/GUI/GUI_App.cpp:932 -msgid "The presets on the following tabs were modified" -msgstr "Byla upravena přednastavení na následujících kartách" +#: src/slic3r/GUI/Tab.cpp:3430 +msgid "The physical printer(s) below is based on the preset, you are going to delete." +msgstr "Níže uvedené fyzické tiskárny(a) vycházejí z přednastavení, které chcete smazat." -#: src/libslic3r/PrintConfig.cpp:1846 +#: src/slic3r/GUI/Tab.cpp:3438 +msgid "The physical printer(s) below is based only on the preset, you are going to delete." +msgstr "Níže uvedená fyzická tiskárna(y) je založena pouze na přednastavení, které chcete smazat." + +#: src/slic3r/GUI/GUI_App.cpp:1676 +msgid "The preset(s) modifications are successfully saved" +msgstr "Změny v přednastavení byly úspěšně uloženy" + +#: src/libslic3r/PrintConfig.cpp:1988 msgid "The printer multiplexes filaments into a single hot end." msgstr "Tiskárna přepíná několik filamentů v jednou hot endu." -#: src/libslic3r/Format/3mf.cpp:1630 +#: src/libslic3r/Format/3mf.cpp:1667 msgid "The selected 3mf file has been saved with a newer version of %1% and is not compatible." msgstr "Vybraný 3mf soubor byl uložen s novější verzí %1% a není kompatibilní." -#: src/libslic3r/Format/AMF.cpp:934 +#: src/libslic3r/Format/AMF.cpp:955 msgid "The selected amf file has been saved with a newer version of %1% and is not compatible." msgstr "Vybraný amf soubor byl uložen s novější verzí %1% a není kompatibilní." -#: src/slic3r/GUI/BedShapeDialog.cpp:513 +#: src/slic3r/GUI/Plater.cpp:4751 +msgid "The selected file" +msgstr "Vybraný soubor" + +#: src/slic3r/GUI/BedShapeDialog.cpp:589 msgid "The selected file contains no geometry." msgstr "Vybraný soubor neobsahuje geometrii." -#: src/slic3r/GUI/BedShapeDialog.cpp:517 +#: src/slic3r/GUI/BedShapeDialog.cpp:593 msgid "The selected file contains several disjoint areas. This is not supported." msgstr "Vybraný soubor obsahuje několik nespojených ploch. Tato možnost není podporována." -#: src/slic3r/GUI/Plater.cpp:2970 +#: src/slic3r/GUI/Plater.cpp:2763 msgid "The selected object can't be split because it contains more than one volume/material." msgstr "Vybraný objekt nemůže být rozdělen, protože obsahuje více než jeden objem/materiál." -#: src/slic3r/GUI/GUI_ObjectList.cpp:2270 src/slic3r/GUI/Plater.cpp:2978 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2436 src/slic3r/GUI/Plater.cpp:2771 msgid "The selected object couldn't be split because it contains only one part." msgstr "Vybraný objekt nemůže být rozdělen, protože obsahuje pouze jednu část." -#: src/slic3r/GUI/MainFrame.cpp:461 +#: src/slic3r/GUI/MainFrame.cpp:1003 msgid "" "The selected project is no longer available.\n" "Do you want to remove it from the recent projects list?" @@ -7838,7 +9031,7 @@ msgstr "" "Vybraný projekt již není k dispozici.\n" "Chcete ho odstranit ze seznamu posledních projektů?" -#: src/slic3r/GUI/DoubleSlider.cpp:998 +#: src/slic3r/GUI/DoubleSlider.cpp:1121 msgid "" "The sequential print is on.\n" "It's impossible to apply any custom G-code for objects printing sequentually.\n" @@ -7848,20 +9041,24 @@ msgstr "" "Není možné použít jakýkoliv vlastní G-kód pro objekty tisknuté sekvenčně.\n" "Během generování G-kódu nebude tento kód zpracován." -#: src/libslic3r/PrintConfig.cpp:2846 +#: src/slic3r/GUI/ConfigWizard.cpp:1187 +msgid "The size of the object can be specified in inches" +msgstr "Velikost objektu lze určit v palcích" + +#: src/libslic3r/PrintConfig.cpp:3010 msgid "The slope of the pad wall relative to the bed plane. 90 degrees means straight walls." msgstr "Sklon bočnic vzhledem k podložce. 90 stupňů znamená kolmé stěny." -#: src/libslic3r/PrintConfig.cpp:1614 +#: src/libslic3r/PrintConfig.cpp:1722 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 "Rychlost vtlačení filamentu do extruderu po retrakci (vztahuje se pouze na motor extruderu). Pokud je ponecháno na nulu, použije se rychlost retrakce." -#: src/libslic3r/PrintConfig.cpp:1606 +#: src/libslic3r/PrintConfig.cpp:1714 msgid "The speed for retractions (it only applies to the extruder motor)." msgstr "Rychlost retrakce (toto nastavení platí pouze pro motor extruderu)." -#: src/slic3r/GUI/ConfigManipulation.cpp:81 -#, no-c-format +#: src/slic3r/GUI/ConfigManipulation.cpp:80 +#, c-format msgid "" "The Spiral Vase mode requires:\n" "- one perimeter\n" @@ -7879,41 +9076,42 @@ msgstr "" "- aktivní volbu „Zajistit tloušťku svislých stěn“\n" "- neaktivní volbu „Detekce tenkých stěn“" -#: src/libslic3r/Print.cpp:1237 +#: 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:1244 +#: 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." -#: src/slic3r/GUI/Tab.cpp:3068 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:464 msgid "The supplied name is empty. It can't be saved." msgstr "Název je prázdný. Nelze uložit." -#: src/slic3r/GUI/Tab.cpp:3465 +#: src/slic3r/GUI/SavePresetDialog.cpp:131 msgid "The supplied name is not available." msgstr "Zadaný název není dostupný." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3819 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3926 src/slic3r/GUI/Tab.cpp:3456 -#: src/slic3r/GUI/Tab.cpp:3460 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4282 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4409 +#: src/slic3r/GUI/SavePresetDialog.cpp:116 +#: src/slic3r/GUI/SavePresetDialog.cpp:124 msgid "The supplied name is not valid;" msgstr "Zadaný název není platný;" -#: src/libslic3r/Print.cpp:1222 +#: src/libslic3r/Print.cpp:1248 msgid "The supplied settings will cause an empty print." msgstr "Zadané nastavení způsobí prázdný tisk." -#: src/libslic3r/PrintConfig.cpp:2789 +#: src/libslic3r/PrintConfig.cpp:2953 msgid "The thickness of the pad and its optional cavity walls." msgstr "Tloušťka podložky a její volitelné duté stěny." -#: src/libslic3r/PrintConfig.cpp:1911 +#: 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." -#: src/slic3r/GUI/Tab.cpp:2575 +#: src/slic3r/GUI/Tab.cpp:2731 msgid "" "The Wipe option is not available when using the Firmware Retraction mode.\n" "\n" @@ -7923,11 +9121,11 @@ msgstr "" "\n" "Mám ji deaktivovat, aby bylo možné povolit retrakce z firmwaru?" -#: src/libslic3r/Print.cpp:1268 +#: src/libslic3r/Print.cpp:1294 msgid "The Wipe Tower currently does not support volumetric E (use_volumetric_e=0)." msgstr "Čistíví Věž v současné době nepodporuje volumetric E (use_volumetric_e = 0)." -#: src/slic3r/GUI/ConfigManipulation.cpp:115 +#: src/slic3r/GUI/ConfigManipulation.cpp:114 msgid "" "The Wipe Tower currently supports the non-soluble supports only\n" "if they are printed with the current extruder without triggering a tool change.\n" @@ -7937,54 +9135,58 @@ msgstr "" "pokud jsou vytištěny s aktuálním extrudérem bez spuštění výměny nástroje.\n" "(jak extruder pro tisk podpor tak extruder pro tisk kontaktních podpěr je třeba nastavit na 0)." -#: src/libslic3r/Print.cpp:1400 +#: src/libslic3r/Print.cpp:1426 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 support_material_extruder and support_material_interface_extruder need to be set to 0)." msgstr "" "Čistící věž v současné době podporuje pouze nerozpustné podpěry\n" "pokud jsou vytištěny s aktuálním extrudérem bez spuštění výměny nástroje.\n" "(jak extruder pro tisk podpor tak extruder pro tisk kontaktních podpěr je třeba nastavit na 0)." -#: src/libslic3r/Print.cpp:1270 +#: src/libslic3r/Print.cpp:1296 msgid "The Wipe Tower is currently not supported for multimaterial sequential prints." msgstr "Čistící věž není momentálně podporována pro multimateriálové sekvenční tisky." -#: src/libslic3r/Print.cpp:1262 -msgid "The Wipe Tower is currently only supported for the Marlin, RepRap/Sprinter and Repetier G-code flavors." -msgstr "Čistící věž je v současné době možná pouze pro G-cody určené pro Marlin, RepRap/Sprinter a Repetier." +#: src/libslic3r/Print.cpp:1290 +msgid "The Wipe Tower is currently only supported for the Marlin, RepRap/Sprinter, RepRapFirmware and Repetier G-code flavors." +msgstr "Čistící věž je v současné době možná pouze pro G-cody určené pro Marlin, RepRap/Sprinter, RepRapFirmware a Repetier." -#: src/libslic3r/Print.cpp:1264 +#: src/libslic3r/Print.cpp:1290 msgid "The Wipe Tower is currently only supported with the relative extruder addressing (use_relative_e_distances=1)." msgstr "Čistící věž je v současné době možná pouze v případě relativního adresování exruderu (use_relative_e_distances=1)." -#: src/libslic3r/Print.cpp:1293 +#: src/libslic3r/Print.cpp:1319 msgid "The Wipe Tower is only supported for multiple objects if they are printed over an equal number of raft layers" msgstr "Čistící věž pro více objektů je možná pouze v případě, že objekty mají stejný počet raft vrstev" -#: src/libslic3r/Print.cpp:1295 +#: src/libslic3r/Print.cpp:1321 msgid "The Wipe Tower is only supported for multiple objects if they are printed with the same support_material_contact_distance" msgstr "Čistící věž pro více objektů je možná pouze v případě, že objekty mají shodný parametr support_material_contact_distance" -#: src/libslic3r/Print.cpp:1297 +#: src/libslic3r/Print.cpp:1323 msgid "The Wipe Tower is only supported for multiple objects if they are sliced equally." msgstr "Čistící věž je při více objektech možná pouze v případě, že objekty jsou slicovány stejně." -#: src/libslic3r/Print.cpp:1291 +#: src/libslic3r/Print.cpp:1317 msgid "The Wipe Tower is only supported for multiple objects if they have equal layer heights" msgstr "Čistící věž je při více objektech možná pouze v případě, že objekty mají všechny vrstvy stejné výšky" -#: src/libslic3r/Print.cpp:1257 +#: src/libslic3r/Print.cpp:1283 msgid "The wipe tower is only supported if all extruders have the same nozzle diameter and use filaments of the same diameter." msgstr "Čistící věž je podporována pouze v případě, že všechny extrudery mají stejné průměry trysek a používají filamenty stejných průměrů." -#: src/libslic3r/Print.cpp:1339 +#: src/libslic3r/Print.cpp:1365 msgid "The Wipe tower is only supported if all objects have the same variable layer height" msgstr "Čistící věž je podporována pouze v případě, že všechny objekty mají stejnou variabilní výšku vrstvy" -#: src/libslic3r/SLAPrintSteps.cpp:621 +#: src/slic3r/GUI/Plater.cpp:3563 +msgid "There are active warnings concerning sliced models:" +msgstr "Varování týkající se slicovaných modelů:" + +#: src/libslic3r/SLAPrintSteps.cpp:619 msgid "There are unprintable objects. Try to adjust support settings to make the objects printable." msgstr "Nacházejí se zde netisknutelné objekty. Zkuste upravit nastavení podpěr tak, aby bylo možné objekty vytisknout." -#: src/slic3r/GUI/DoubleSlider.cpp:1030 +#: src/slic3r/GUI/DoubleSlider.cpp:1155 msgid "" "There is a color change for extruder that has not been used before.\n" "Check your settings to avoid redundant color changes." @@ -7992,7 +9194,7 @@ msgstr "" "Dochází zde ke změně barvy u extruderu, který dosud nebyl použit.\n" "Zkontrolujte nastavení, abyste se vyhnuli redundantním změnám barev." -#: src/slic3r/GUI/DoubleSlider.cpp:1024 +#: src/slic3r/GUI/DoubleSlider.cpp:1149 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." @@ -8000,7 +9202,7 @@ msgstr "" "Dochází zde ke změně barvy u extruderu, který již do konce tisku nebude použit.\n" "Tento kód nebude během generování G-kódu zpracován." -#: src/slic3r/GUI/DoubleSlider.cpp:1027 +#: src/slic3r/GUI/DoubleSlider.cpp:1152 msgid "" "There is an extruder change set to the same extruder.\n" "This code won't be processed during G-code generation." @@ -8008,12 +9210,16 @@ msgstr "" "Je zde změna extruderu na ten samý extruder.\n" "Během generování G-codu nebude tento kód zpracován." +#: src/libslic3r/GCode.cpp:604 +msgid "There is an object with no extrusions on the first layer." +msgstr "Je zde objekt, u kterého nedochází k extruzi v první vrstvě." + #: src/slic3r/GUI/UpdateDialogs.cpp:225 #, c-format msgid "This %s version: %s" msgstr "Tento %s verze: %s" -#: src/slic3r/GUI/Tab.cpp:982 +#: src/slic3r/GUI/Tab.cpp:1244 msgid "" "This action is not revertable.\n" "Do you want to proceed?" @@ -8021,79 +9227,79 @@ msgstr "" "Tato akce je nevratná.\n" "Chcete pokračovat?" -#: src/libslic3r/PrintConfig.cpp:165 +#: src/libslic3r/PrintConfig.cpp:199 msgid "This code is inserted between objects when using sequential printing. By default extruder and bed temperature are reset using non-wait command; however if M104, M109, M140 or M190 are detected in this custom code, Slic3r will not add temperature commands. Note that you can use placeholder variables for all Slic3r settings, so you can put a \"M109 S[first_layer_temperature]\" command wherever you want." msgstr "Tento kód je vložen mezi objekty, pokud je použit sekvenční tisk. Ve výchozím nastavení je resetován extruder a tisková podložka pomocí non-wait (nečekacím) příkazem; nicméně pokud jsou příkazy M104, M109, 140 nebo M190 detekovány v tomto vlastním kódu, Slic3r nebude přidávat teplotní příkazy. Můžete přidávat zástupné proměnné pro veškeré nastavení Slic3ru, takže můžete vložit příkaz “M109 S[first_layer_temperature]” kamkoliv chcete." -#: src/libslic3r/PrintConfig.cpp:1081 +#: src/libslic3r/PrintConfig.cpp:1174 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 use placeholder variables for all Slic3r settings as well as [layer_num] and [layer_z]." msgstr "Tento vlastní kód je vložen při každé změně vrstvy, hned po pohybu Z a předtím, než se extruder přesune na první bod vrstvy. Můžete přidávat zástupné proměnné pro veškeré nastavení Slic3ru, stejně tak jako [layer_num] a [layer_z]." -#: src/libslic3r/PrintConfig.cpp:154 +#: src/libslic3r/PrintConfig.cpp:188 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 "Tento vlastní kód je vložen pro každou změnu vrstvy, předtím než se pohne Z. Můžete přidávat zástupné proměnné pro veškeré nastavení Slic3ru stejně tak jako [layer_num] a [layer_z]." -#: src/libslic3r/PrintConfig.cpp:2094 +#: src/libslic3r/PrintConfig.cpp:2237 msgid "This custom code is inserted before every toolchange. Placeholder variables for all PrusaSlicer settings as well as {previous_extruder} and {next_extruder} can be used. When a tool-changing command which changes to the correct extruder is included (such as T{next_extruder}), PrusaSlicer will emit no other such command. It is therefore possible to script custom behaviour both before and after the toolchange." msgstr "Tento vlastní kód je vložen při každé změně nástroje (extruderu). Lze používat zástupné proměnné pro všechna nastavení PrusaSliceru stejně jako {previous_extruder} a {next_extruder}. Když je použit příkaz pro výměnu extruderu, který mění na požadovaný extruder (jako je T {next_extruder}), PrusaSlicer nevytvoří žádný jiný takový příkaz. Je tedy možné skriptovat vlastní chování před i po výměně nástroje." -#: src/libslic3r/PrintConfig.cpp:396 +#: src/libslic3r/PrintConfig.cpp:430 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 multimaterial printers). Note that you can use placeholder variables for all PrusaSlicer settings. If you have multiple extruders, the gcode is processed in extruder order." msgstr "Tento kód je vložen na konec výstupního souboru před tím, než tiskárna dokončí gcode (a před všechny změny extruderu z tohoto filamentu v případě multimateriálových tiskáren). Můžete přidávat zástupné proměnné pro veškeré nastavení PrusaSliceru. Pokud máte tiskárnu s více extrudery, G-code je zpracováván v pořadí extruderů." -#: src/libslic3r/PrintConfig.cpp:386 +#: src/libslic3r/PrintConfig.cpp:420 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 "Tento kód je vložen na konec výstupního souboru. Můžete také přidávat zástupné proměnné pro veškeré nastavení PrusaSliceru." -#: src/libslic3r/PrintConfig.cpp:1258 src/libslic3r/PrintConfig.cpp:1269 +#: src/libslic3r/PrintConfig.cpp:1366 src/libslic3r/PrintConfig.cpp:1377 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 of 1.8 mm³/s (0.45mm extrusion width, 0.2mm extrusion height, feedrate 20 mm/s) to 5.4 mm³/s (feedrate 60 mm/s) will take at least 2 seconds." msgstr "Toto experimentální nastavení se používá k omezení rychlosti změny objemového průtoku. Hodnota 1,8mm³/s² zajišťuje, že změna objemového průtoku z 1,8 mm³/s (šířka extruze 0,45 mm, výška extruze 0,2 mm, rychlost posuvu 20 mm/s) na 5,4 mm³/s (rychlost posuvu 60 mm/s) potrvá nejméně 2 sekundy." -#: src/libslic3r/PrintConfig.cpp:1248 +#: src/libslic3r/PrintConfig.cpp:1356 msgid "This experimental setting is used to set the maximum volumetric speed your extruder supports." msgstr "Toto experimentální nastavení slouží k nastavení maximální objemové rychlosti, kterou váš extruder podporuje." -#: src/libslic3r/PrintConfig.cpp:2162 +#: src/libslic3r/PrintConfig.cpp:2305 msgid "This experimental setting uses G10 and G11 commands to have the firmware handle the retraction. This is only supported in recent Marlin." msgstr "Toto experimentální nastavení používá příkazy G10 a G11, aby si firmware poradil s retrakcí. Toto je podporováno pouze v posledních verzích firmwaru Marlin." -#: src/libslic3r/PrintConfig.cpp:2176 +#: src/libslic3r/PrintConfig.cpp:2319 msgid "This experimental setting uses outputs the E values in cubic millimeters instead of linear millimeters. If your firmware doesn't already know filament diameter(s), you can put commands like 'M200 D[filament_diameter_0] T0' in your start G-code in order to turn volumetric mode on and use the filament diameter associated to the filament selected in Slic3r. This is only supported in recent Marlin." -msgstr "Toto experimentální nastavení používá výstupní hodnoty E v kubických milimetrech místo lineárních milimetrů. Pokud firmware dosud nezná průměr (průměry) filamentu, můžete v počátečním G-code zadat příkazy jako “M200 D [filament_diameter_0] T0”, pro se zapnutí volumetrického režimu a použití průměru filamentu přidruženého k vybranému filamentu ve Slic3ru. Toto je podporováno pouze v posledních verzích firmwaru Marlin." +msgstr "Toto experimentální nastavení používá výstupní hodnoty E v kubických milimetrech místo lineárních milimetrů. Pokud firmware dosud nezná průměr (průměry) filamentu, můžete v počátečním G-code zadat příkazy jako “M200 D [filament_diameter_0] T0”, pro zapnutí volumetrického režimu a použití průměru filamentu přidruženého k vybranému filamentu ve Slic3ru. Toto je podporováno pouze v posledních verzích firmwaru Marlin." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3972 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4459 msgid "This extruder will be set for selected items" msgstr "Tento extruder bude nastaven pro vybrané položky" -#: src/libslic3r/PrintConfig.cpp:224 +#: 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." -#: src/libslic3r/PrintConfig.cpp:546 +#: 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." -#: src/libslic3r/PrintConfig.cpp:214 +#: src/libslic3r/PrintConfig.cpp:248 msgid "This fan speed is enforced during all bridges and overhangs." msgstr "Nastavená rychlost ventilátoru je využita vždy při vytváření mostů a přesahů." -#: src/libslic3r/PrintConfig.cpp:992 +#: src/libslic3r/PrintConfig.cpp:1036 msgid "This feature allows to combine infill and speed up your print by extruding thicker infill layers while preserving thin perimeters, thus accuracy." msgstr "Tato funkce umožňuje kombinovat výplň a urychlit tisk pomocí extruzí silnějších výplňových vrstev při zachování tenkých obvodů, a tím i přesnosti." -#: src/libslic3r/PrintConfig.cpp:1746 +#: src/libslic3r/PrintConfig.cpp:1861 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:1795 +#: 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/slic3r/GUI/Plater.cpp:2367 +#: 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?" -#: src/slic3r/GUI/Plater.cpp:2357 +#: src/slic3r/GUI/Plater.cpp:2319 msgid "" "This file contains several objects positioned at multiple heights.\n" "Instead of considering them as multiple objects, should I consider\n" @@ -8119,84 +9325,96 @@ msgstr "" "Chcete i přesto pokračovat a nahrát do tiskárny hex soubor?\n" "Pokračujte prosím, pouze pokud jste si jisti, že je to správný soubor." -#: src/libslic3r/PrintConfig.cpp:314 +#: src/libslic3r/PrintConfig.cpp:348 msgid "This flag enables the automatic cooling logic that adjusts print speed and fan speed according to layer printing time." msgstr "Zapne výpočet automatického chlazení, který upravuje rychlost tisku a ventilátoru v závislosti na délce tisku jedné vrstvy." -#: src/slic3r/GUI/Plater.cpp:536 +#: src/slic3r/GUI/Plater.cpp:402 msgid "This flag enables the brim that will be printed around each object on the first layer." msgstr "Tato vlajka zapíná límec, který bude vytištěn kolem každého objektu při první vrstvě." -#: src/libslic3r/PrintConfig.cpp:1538 +#: src/libslic3r/PrintConfig.cpp:1646 msgid "This flag enforces a retraction whenever a Z move is done." msgstr "Tato možnost vyvolá retrakci, kdykoli je proveden pohyb Z." -#: src/libslic3r/PrintConfig.cpp:2194 +#: src/libslic3r/PrintConfig.cpp:2337 msgid "This flag will move the nozzle while retracting to minimize the possible blob on leaky extruders." msgstr "Toto nastavení přemístí trysku při retrakci, aby se minimalizovalo možné vytékání materiálu." -#: src/slic3r/GUI/Tab.cpp:953 +#: src/libslic3r/PrintConfig.cpp:1961 +msgid "This G-code will be used as a code for the color change" +msgstr "Tento G-code bude použit jako kód pro změnu barvy" + +#: src/libslic3r/PrintConfig.cpp:1970 +msgid "This G-code will be used as a code for the pause print" +msgstr "Tento G-code bude použit jako kód pro pozastavení tisku" + +#: src/libslic3r/PrintConfig.cpp:1979 +msgid "This G-code will be used as a custom code" +msgstr "Tento G-code bude použit jako vlastní kód" + +#: src/slic3r/GUI/Tab.cpp:1272 msgid "This is a default preset." msgstr "Toto je výchozí přednastavení." -#: src/libslic3r/PrintConfig.cpp:2766 +#: src/libslic3r/PrintConfig.cpp:2930 msgid "This is a relative measure of support points density." msgstr "Relativní míra hustoty podpěrných bodů." -#: src/slic3r/GUI/Tab.cpp:2338 +#: src/slic3r/GUI/Tab.cpp:2507 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 "Jedná se o multimateriálovou tiskárnu s jedním extruderem, průměry všech extruderů se nastaví na novou hodnotu. Chcete pokračovat?" -#: src/slic3r/GUI/Tab.cpp:955 +#: src/slic3r/GUI/Tab.cpp:1274 msgid "This is a system preset." msgstr "Toto je systémové přednastavení." -#: src/libslic3r/PrintConfig.cpp:523 src/libslic3r/PrintConfig.cpp:583 +#: src/libslic3r/PrintConfig.cpp:559 src/libslic3r/PrintConfig.cpp:619 msgid "This is only used in the Slic3r interface as a visual help." msgstr "Toto je v Slic3ru jako názorná pomoc." -#: src/libslic3r/PrintConfig.cpp:336 +#: src/libslic3r/PrintConfig.cpp:370 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 "Toto je hodnota akcelerace na kterou se tiskárna vrátí po specifických úpravách akcelerace například při tisku (perimetru/výplně). Nastavením na nulu zabráníte návratu rychlostí zcela." -#: src/libslic3r/PrintConfig.cpp:194 +#: src/libslic3r/PrintConfig.cpp:228 msgid "This is the acceleration your printer will use for bridges. Set zero to disable acceleration control for bridges." msgstr "Nastavení akcelerace tiskárny při vytváření mostů. Nastavením na nulu vypnete ovládání akcelerace pro mosty." -#: src/libslic3r/PrintConfig.cpp:860 +#: src/libslic3r/PrintConfig.cpp:900 msgid "This is the acceleration your printer will use for first layer. Set zero to disable acceleration control for first layer." msgstr "Toto je zrychlení, které vaše tiskárna použije pro první vrstvu. Nastavte nulu pro vypnutí řízení zrychlení pro první vrstvu." -#: src/libslic3r/PrintConfig.cpp:982 +#: src/libslic3r/PrintConfig.cpp:1026 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:1400 +#: 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:1327 +#: src/libslic3r/PrintConfig.cpp:1435 msgid "This is the diameter of your extruder nozzle (for example: 0.5, 0.35 etc.)" msgstr "Průměr trysky extruderu (například: 0.5, 0.35 atd.)" -#: src/libslic3r/PrintConfig.cpp:1227 -#, no-c-format +#: src/libslic3r/PrintConfig.cpp:1335 +#, c-format msgid "This is the highest printable layer height for this extruder, used to cap the variable layer height and support layer height. Maximum recommended layer height is 75% of the extrusion width to achieve reasonable inter-layer adhesion. If set to 0, layer height is limited to 75% of the nozzle diameter." msgstr "Toto je největší možná výška vrstvy pro tento extruder, který se používá k zakrytí výšky proměnné vrstvy a výšky podpůrné vrstvy. Maximální doporučená výška vrstvy činí 75% šířky vytlačování, aby se dosáhlo přiměřené přilnavosti mezi vrstvami. Pokud je nastavena hodnota 0, je výška vrstvy omezena na 75% průměru trysky." -#: src/libslic3r/PrintConfig.cpp:1290 +#: src/libslic3r/PrintConfig.cpp:1398 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 "Nejmenší tisknutelná výška vrstvy pro tento extruder. Omezuje rozlišení pro výšku proměnné vrstvy. Typické hodnoty jsou mezi 0,05 mm a 0,1 mm." -#: src/libslic3r/GCode.cpp:639 +#: src/libslic3r/GCode.cpp:624 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 "To je obvykle způsobeno zanedbatelně malým množstvím extrudovaného materiálu nebo chybným modelem. Zkuste model opravit nebo změnit jeho orientaci na podložce." -#: src/libslic3r/PrintConfig.cpp:2215 +#: src/libslic3r/PrintConfig.cpp:2358 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 "Tato matice popisuje objemy (v kubických milimetrech) nutné k vyčištění nového filamentu na čistící věži pro danou dvojici nástrojů." -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:878 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:928 msgid "" "This operation is irreversible.\n" "Do you want to proceed?" @@ -8204,31 +9422,35 @@ msgstr "" "Tato operace je nevratná.\n" "Chcete pokračovat?" -#: src/libslic3r/PrintConfig.cpp:1442 +#: src/libslic3r/PrintConfig.cpp:1550 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 surfaces which benefit from a higher number of perimeters if the Extra Perimeters option is enabled." msgstr "Tato volba nastavuje počet perimetrů, které je třeba vygenerovat pro každou vrstvu. Slic3r může toto číslo automaticky zvýšit, pokud detekuje šikmé plochy, které se tisknou lépe s vyšším počtem obvodů, pokud je zapnuta možnost Extra perimetry." -#: src/libslic3r/PrintConfig.cpp:1356 +#: src/libslic3r/PrintConfig.cpp:1464 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 "Tato volba sníží teplotu neaktivních extruderů, aby u nich nedošlo k vytékání." -#: src/libslic3r/PrintConfig.cpp:1029 +#: src/libslic3r/PrintConfig.cpp:1073 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 "Tato volba omezuje výplň na plochy skutečně potřebné pro podpěru stropů (bude se chovat jako vnitřní podpěrný materiál). Je-li tato volba zapnuta, zpomaluje generování G-code kvůli několikanásobným kontrolám." -#: src/libslic3r/PrintConfig.cpp:1022 +#: src/libslic3r/PrintConfig.cpp:1066 msgid "This option will switch the print order of perimeters and infill, making the latter first." msgstr "Tato volba obrátí pořadí tisku obvodů a výplní." -#: src/libslic3r/PrintConfig.cpp:459 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:85 +msgid "This printer will be shown in the presets list as" +msgstr "Tato tiskárna se v seznamu přednastavení zobrazí jako" + +#: src/libslic3r/PrintConfig.cpp:495 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 "Toto oddělené nastavení ovlivní rychlost tisku vnějších perimetrů (těch viditelných). Pokud je hodnota vyjádřena procenty (například: 80%), bude rychlost vypočítána z hodnoty rychlosti tisku perimetrů, nastavené výše. Nastavte nulu pro automatický výpočet." -#: src/libslic3r/PrintConfig.cpp:1717 +#: src/libslic3r/PrintConfig.cpp:1832 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 "Toto oddělené nastavení ovlivní rychlost perimetrů o poloměru <= 6,5 mm (obvykle díry). Pokud je vyjádřeno jako procentní podíl (například: 80%), vypočte se z výše uvedeného nastavení rychlosti perimetrů. Pro automatické nastavení zadejte nulu." -#: src/libslic3r/PrintConfig.cpp:1038 +#: src/libslic3r/PrintConfig.cpp:1082 msgid "This setting applies an additional overlap between infill and perimeters for better bonding. Theoretically this shouldn't be needed, but backlash might cause gaps. If expressed as percentage (example: 15%) it is calculated over perimeter extrusion width." msgstr "Toto nastavení uplatňuje dodatečné překrytí mezi výplní a obvodem pro lepší spojení. Teoreticky by to nemělo být potřeba, ale reakce by mohla způsobit mezery. Pokud je vyjádřeno procenty (například: 15%), vypočítá se z šířky extruze perimetrů." @@ -8236,31 +9458,31 @@ msgstr "Toto nastavení uplatňuje dodatečné překrytí mezi výplní a obvode 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 "Toto nastavení řídí výšku (a tedy výsledný počet) řezů/vrstev. Tenčí vrstva poskytuje lepší přesnost, ale tiskne se déle." -#: src/libslic3r/PrintConfig.cpp:1218 +#: src/libslic3r/PrintConfig.cpp:1326 msgid "This setting represents the maximum speed of your fan." msgstr "Toto nastavení vyjadřuje maximální rychlost ventilátoru." -#: src/libslic3r/PrintConfig.cpp:1281 +#: src/libslic3r/PrintConfig.cpp:1389 msgid "This setting represents the minimum PWM your fan needs to work." msgstr "Toto nastavení představuje minimální hodnotu PWM, kterou ventilátor potřebuje, aby pracoval." -#: src/libslic3r/PrintConfig.cpp:1829 +#: src/libslic3r/PrintConfig.cpp:1944 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 printers). This is used to override settings for a specific filament. If PrusaSlicer detects M104, M109, M140 or M190 in your custom codes, such commands will not be prepended automatically so you're free to customize the order of heating commands and other custom actions. Note that you can use placeholder variables for all PrusaSlicer settings, so you can put a \"M109 S[first_layer_temperature]\" command wherever you want. If you have multiple extruders, the gcode is processed in extruder order." msgstr "Tento kód je vložen na začátek tisku. Jakmile tiskárna začne zpracovávat gcode (a po jakékoliv změně extruderu na tento filament v případě multimateriálového tisku). Slouží k přepsání nastavení pro konkrétní filament. Pokud PrusaSlicer detekuje příkazy M104, M109, M140 nebo M190 v uživatelsky definovaném kódu, tyto příkazy nebudou automaticky připojeny, takže si můžete přizpůsobit pořadí příkazů předehřevu a dalších vlastních akcí. Také můžete přidávat zástupné proměnné pro veškeré nastavení PrusaSliceru, takže můžete vložit příkaz “M109 S[first_layer_temperature]” kamkoliv chcete. Pokud máte tiskárnu s více extrudery, G-code je zpracováván v pořadí extruderů." -#: src/libslic3r/PrintConfig.cpp:1814 +#: src/libslic3r/PrintConfig.cpp:1929 msgid "This start procedure is inserted at the beginning, after bed has reached the target temperature and extruder just started heating, and before extruder has finished heating. If PrusaSlicer detects M104 or M190 in your custom codes, such commands will not be prepended automatically so you're free to customize the order of heating commands and other custom actions. Note that you can use placeholder variables for all PrusaSlicer settings, so you can put a \"M109 S[first_layer_temperature]\" command wherever you want." msgstr "Tento kód je vložen na začátek tisku. Po okamžiku dosažení požadované teploty podložky a začátku nahřívání extruderu a před dokončení předehřevu trysky. Pokud PrusaSlicer detekuje příkazy M104, M190 v uživatelsky definovaném kódu, tyto příkazy nebudou automaticky připojeny, takže si můžete přizpůsobit pořadí příkazů předehřevu a dalších vlastních akcí. Také můžete přidávat zástupné proměnné pro veškeré nastavení PrusaSliceru, takže můžete vložit příkaz “M109 S[first_layer_temperature]” kamkoliv chcete." -#: src/libslic3r/PrintConfig.cpp:695 +#: src/libslic3r/PrintConfig.cpp:731 msgid "This string is edited by RammingDialog and contains ramming specific parameters." msgstr "This string is edited by RammingDialog and contains ramming specific parameters." -#: src/libslic3r/PrintConfig.cpp:2286 +#: src/libslic3r/PrintConfig.cpp:2429 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 example, if your endstop zero actually leaves the nozzle 0.3mm far from the print bed, set this to -0.3 (or fix your endstop)." msgstr "Tato hodnota bude přidána (nebo odečtena) ze všech souřadnic Z ve výstupním G-code. Používá se ke kompenzování špatné pozice endstopu Z. Například pokud endstop 0 skutečně ponechá trysku 0,3 mm daleko od tiskové podložky, nastavte hodnotu -0,3 (nebo dolaďte svůj koncový doraz)." -#: src/libslic3r/PrintConfig.cpp:2208 +#: src/libslic3r/PrintConfig.cpp:2351 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 "Tento vektor ukládá potřebné objemy pro změnu z/na každý extruder používaný na čistící věži. Tyto hodnoty jsou použity pro zjednodušení vytvoření celkových objemů čištění níže." @@ -8277,82 +9499,96 @@ msgstr "" "\n" "Můžete buď ukončit %s a zkusit to znovu s novou verzí, nebo můžete znovu spustit výchozí konfiguraci. Před instalací kompatibilního nastavení s touto verzí %s dojde k vytvoření zálohy současné konfigurace." -#: src/libslic3r/PrintConfig.cpp:2458 +#: src/libslic3r/PrintConfig.cpp:2601 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 "Aplikuje gamma korekci na rastrové 2D polygony. Hodnota nula znamená nastavení prahové hodnoty doprostřed. Toto chování eliminuje antialiasing bez ztráty otvorů v polygonech." -#: src/libslic3r/PrintConfig.cpp:2081 +#: src/libslic3r/PrintConfig.cpp:2224 msgid "Threads" msgstr "Vlákna" -#: src/libslic3r/PrintConfig.cpp:2082 +#: src/libslic3r/PrintConfig.cpp:2225 msgid "Threads are used to parallelize long-running tasks. Optimal threads number is slightly above the number of available cores/processors." msgstr "Vlákna jsou používána pro paralelizaci časově náročnějších úloh. Optimální počet vláken je mírně nad počtem dostupných jader/procesorů." -#: src/slic3r/GUI/Tab.cpp:2093 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:235 +msgid "Threshold:" +msgstr "Práh:" + +#: src/slic3r/GUI/Tab.cpp:2263 msgid "Tilt" msgstr "Náklon" -#: src/slic3r/GUI/Tab.cpp:2094 +#: src/slic3r/GUI/Tab.cpp:2264 msgid "Tilt time" msgstr "Doba náklonu" +#: src/slic3r/GUI/GCodeViewer.cpp:2225 src/slic3r/GUI/GCodeViewer.cpp:2233 #: src/slic3r/GUI/RammingChart.cpp:76 msgid "Time" msgstr "Čas" -#: src/libslic3r/PrintConfig.cpp:687 +#: src/libslic3r/PrintConfig.cpp:723 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 "Doba, po kterou firmware tiskárny (nebo jednotka Multi Material 2.0) zavádí nový filament během jeho výměny (při provádění kódu T). Tento čas je přidán k celkové době tisku pomocí G-code odhadovače tiskového času." -#: src/libslic3r/PrintConfig.cpp:702 +#: src/libslic3r/PrintConfig.cpp:738 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 "Doba, po kterou firmware tiskárny (nebo jednotka Multi Material 2.0) vysouvá filament během jeho výměny (při provádění kódu T). Tento čas je přidán k celkové době tisku pomocí G-code odhadovače tiskového času." -#: src/libslic3r/PrintConfig.cpp:2407 +#: src/libslic3r/PrintConfig.cpp:2550 msgid "Time of the fast tilt" msgstr "Doba trvání rychlého náklonu" -#: src/libslic3r/PrintConfig.cpp:2416 +#: src/libslic3r/PrintConfig.cpp:2559 msgid "Time of the slow tilt" msgstr "Doba trvání pomalého náklonu" -#: src/libslic3r/PrintConfig.cpp:641 +#: src/libslic3r/PrintConfig.cpp:677 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 "Doba čekání po vysunutí filamentu. Může pomoci ke spolehlivé změně extruderu s flexibilními materiály, které potřebují více času ke smrštění na původní rozměry." -#: src/slic3r/GUI/Tab.cpp:966 +#: src/slic3r/GUI/GCodeViewer.cpp:2197 +msgid "to" +msgstr "do" + +#: src/slic3r/GUI/Tab.cpp:1284 msgid "To do that please specify a new name for the preset." msgstr "Chcete-li akci provést, prosím nejdříve zadejte nový název přednastavení." -#: src/slic3r/GUI/Plater.cpp:4014 +#: src/slic3r/GUI/Plater.cpp:3934 msgid "To objects" msgstr "Na objekty" -#: src/slic3r/GUI/Plater.cpp:4016 +#: src/slic3r/GUI/Plater.cpp:3936 msgid "To parts" msgstr "Na části" -#: src/slic3r/GUI/Tab.cpp:1756 +#: src/slic3r/Utils/Http.cpp:82 +msgid "To specify the system certificate store manually, please set the %1% environment variable to the correct CA bundle and restart the application." +msgstr "Chcete-li zadat úložiště systémových certifikátů ručně, nastavte proměnnou prostředí %1% na správný CA balíček a restartujte aplikaci." + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:360 msgid "To use a custom CA file, please import your CA file into Certificate Store / Keychain." msgstr "Chcete-li použít vlastní soubor CA, importujte soubor CA do Certificate Store / Keychain." -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:263 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:271 #, c-format msgid "Toggle %c axis mirroring" msgstr "Přepnout zrcadlení podle osy %c" -#: src/libslic3r/Zipper.cpp:34 +#: src/libslic3r/miniz_extension.cpp:93 msgid "too many files" msgstr "příliš mnoho souborů" -#: src/libslic3r/SLAPrintSteps.cpp:190 -msgid "Too much overlapping holes." +#: src/libslic3r/SLAPrintSteps.cpp:192 +msgid "Too many overlapping holes." msgstr "Příliš mnoho překrývajících se otvorů." -#: src/slic3r/GUI/GUI_Preview.cpp:227 src/slic3r/GUI/GUI_Preview.cpp:335 -#: src/slic3r/GUI/GUI_Preview.cpp:519 src/slic3r/GUI/GUI_Preview.cpp:574 -#: src/slic3r/GUI/GUI_Preview.cpp:835 src/libslic3r/GCode/PreviewData.cpp:357 +#: src/slic3r/GUI/GCodeViewer.cpp:2241 src/slic3r/GUI/GUI_Preview.cpp:281 +#: src/slic3r/GUI/GUI_Preview.cpp:453 src/slic3r/GUI/GUI_Preview.cpp:693 +#: src/slic3r/GUI/GUI_Preview.cpp:786 src/slic3r/GUI/GUI_Preview.cpp:1270 +#: src/libslic3r/GCode/PreviewData.cpp:362 msgid "Tool" msgstr "Nástroj" @@ -8360,51 +9596,64 @@ msgstr "Nástroj" msgid "Tool #" msgstr "Nástroj #" -#: src/slic3r/GUI/Tab.cpp:2000 src/libslic3r/PrintConfig.cpp:2093 +#: src/slic3r/GUI/Tab.cpp:2189 src/libslic3r/PrintConfig.cpp:2236 msgid "Tool change G-code" msgstr "G-code pro výměnu nástroje" -#: src/slic3r/GUI/Tab.cpp:1491 +#: src/slic3r/GUI/GCodeViewer.cpp:2530 src/slic3r/GUI/GUI_Preview.cpp:1474 +msgid "Tool changes" +msgstr "Výměny nástroje" + +#: src/slic3r/GUI/GUI_Preview.cpp:1479 +msgid "Tool marker" +msgstr "Vizualizace nástroje" + +#: src/slic3r/GUI/GCodeViewer.cpp:223 +msgid "Tool position" +msgstr "Poloha nástroje" + +#: src/slic3r/GUI/Tab.cpp:1837 msgid "Toolchange parameters with single extruder MM printers" msgstr "Parametry při výměně (Multi Material s jedním extruderem)" #. 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:662 src/libslic3r/PrintConfig.cpp:2132 -#: src/libslic3r/PrintConfig.cpp:2141 +#: src/slic3r/GUI/MainFrame.cpp:959 src/slic3r/GUI/MainFrame.cpp:1279 +#: src/libslic3r/PrintConfig.cpp:2275 src/libslic3r/PrintConfig.cpp:2284 msgid "Top" msgstr "Shora" -#: src/slic3r/GUI/PresetHints.cpp:304 +#: src/slic3r/GUI/PresetHints.cpp:302 msgid "Top / bottom shell thickness hint: Not available due to invalid layer height." msgstr "Nápověda pro tloušťku vrchní / spodní skořepiny: Není k dipozici z důvodu neplatné výšky vrstvy." -#: src/libslic3r/PrintConfig.cpp:415 +#: src/libslic3r/PrintConfig.cpp:449 msgid "Top fill pattern" msgstr "Vzor výplně horní vrstvy" -#: src/slic3r/GUI/PresetHints.cpp:323 +#: src/slic3r/GUI/PresetHints.cpp:321 msgid "Top is open." msgstr "Horní část je otevřená." -#: src/slic3r/GUI/PresetHints.cpp:317 +#: src/slic3r/GUI/PresetHints.cpp:315 msgid "Top shell is %1% mm thick for layer height %2% mm." msgstr "Tloušťka vrchní skořepiny je %1% mm při výšce vrstvy %2% mm." -#: src/slic3r/GUI/PresetHints.cpp:192 +#: src/slic3r/GUI/PresetHints.cpp:191 msgid "top solid infill" msgstr "vrchní plná výplň" -#: src/slic3r/GUI/GUI_Preview.cpp:242 src/libslic3r/ExtrusionEntity.cpp:315 -#: src/libslic3r/PrintConfig.cpp:2105 src/libslic3r/PrintConfig.cpp:2117 +#: src/slic3r/GUI/GUI_Preview.cpp:306 src/libslic3r/ExtrusionEntity.cpp:319 +#: src/libslic3r/ExtrusionEntity.cpp:346 src/libslic3r/PrintConfig.cpp:2248 +#: src/libslic3r/PrintConfig.cpp:2260 msgid "Top solid infill" msgstr "Vrchní plné výplně" -#: src/libslic3r/PrintConfig.cpp:2135 +#: src/libslic3r/PrintConfig.cpp:2278 msgid "Top solid layers" msgstr "Vrchních plných vrstev" -#: src/slic3r/GUI/MainFrame.cpp:662 +#: src/slic3r/GUI/MainFrame.cpp:959 src/slic3r/GUI/MainFrame.cpp:1279 msgid "Top View" msgstr "Pohled svrchu" @@ -8420,49 +9669,82 @@ msgstr "Celkový objem rapidní extruze" msgid "Total ramming time" msgstr "Celkový čas rapidní extruze" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:516 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:640 +msgid "Transfer" +msgstr "Přenést" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:745 +msgid "Transfer the selected options to the newly selected preset \"%1%\"." +msgstr "Přenese vybrané nastavení do nově vybraného přednastavení \"%1%\"." + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:740 +msgid "Transfer the selected settings to the newly selected preset." +msgstr "Přenést vybraná nastavení do nově zvoleného přednastavení." + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:561 msgid "Translate" msgstr "Posunout" -#: src/slic3r/GUI/Mouse3DController.cpp:300 -#: src/slic3r/GUI/Mouse3DController.cpp:317 +#: src/slic3r/GUI/Mouse3DController.cpp:282 +#: src/slic3r/GUI/Mouse3DController.cpp:303 msgid "Translation" msgstr "Translace" -#: src/slic3r/GUI/GUI_Preview.cpp:253 src/libslic3r/PrintConfig.cpp:2152 +#: src/slic3r/GUI/GCodeViewer.cpp:2489 src/slic3r/GUI/GUI_Preview.cpp:335 +#: src/slic3r/GUI/GUI_Preview.cpp:1471 src/libslic3r/PrintConfig.cpp:2295 msgid "Travel" msgstr "Rychloposun" -#: src/libslic3r/PrintConfig.cpp:845 +#: src/libslic3r/PrintConfig.cpp:883 msgid "Triangles" msgstr "Trojúhelníky" -#: src/libslic3r/PrintConfig.cpp:3448 +#: src/libslic3r/PrintConfig.cpp:3647 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 "Pokuste se opravit nemanifoldní meshe (tato možnost je implicitně přidána vždy, když potřebujeme řezat model)." -#: src/libslic3r/PrintConfig.cpp:1467 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:165 +msgid "Type here the name of your printer device" +msgstr "Sem napište název pro vaší tiskárnu" + +#: src/libslic3r/PrintConfig.cpp:1575 msgid "Type of the printer." msgstr "Typ tiskárny." -#: src/slic3r/GUI/ConfigWizard.cpp:2013 src/slic3r/GUI/GUI_ObjectList.cpp:3553 +#: src/slic3r/GUI/ConfigWizard.cpp:2524 src/slic3r/GUI/ConfigWizard.cpp:2526 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4016 msgid "Type:" msgstr "Typ:" -#: src/slic3r/GUI/Plater.cpp:3428 +#: src/slic3r/GUI/OpenGLManager.cpp:275 +#, c-format +msgid "" +"Unable to load the following shaders:\n" +"%s" +msgstr "" +"Nelze načíst následující shadery: \n" +"%s" + +#: src/slic3r/GUI/Plater.cpp:3233 msgid "Unable to reload:" msgstr "Nelze znovu načíst:" -#: src/libslic3r/Zipper.cpp:32 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:137 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:146 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:845 +msgid "Undef" +msgstr "Nedefinováno" + +#: src/libslic3r/miniz_extension.cpp:91 msgid "undefined error" msgstr "nedefinovaná chyba" -#: src/slic3r/GUI/GLCanvas3D.cpp:4624 src/slic3r/GUI/KBShortcutsDialog.cpp:130 -#: src/slic3r/GUI/MainFrame.cpp:581 +#: src/slic3r/GUI/GLCanvas3D.cpp:5028 src/slic3r/GUI/KBShortcutsDialog.cpp:125 +#: src/slic3r/GUI/MainFrame.cpp:1187 msgid "Undo" msgstr "Zpět" -#: src/slic3r/GUI/GLCanvas3D.cpp:4065 +#: src/slic3r/GUI/GLCanvas3D.cpp:4382 #, c-format msgid "Undo %1$d Action" msgid_plural "Undo %1$d Actions" @@ -8470,47 +9752,52 @@ msgstr[0] "%1$d Akce Zpět" msgstr[1] "%1$d Akce Zpět" msgstr[2] "%1$d Akcí Zpět" -#: src/slic3r/GUI/GLCanvas3D.cpp:4047 +#: src/slic3r/GUI/GLCanvas3D.cpp:4361 msgid "Undo History" msgstr "Historie operací Zpět" -#: src/libslic3r/Zipper.cpp:56 +#: src/libslic3r/miniz_extension.cpp:115 msgid "unexpected decompressed size" msgstr "neočekávaná dekomprimovaná velikost" #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:27 +#: src/slic3r/GUI/GUI_Preview.cpp:299 src/libslic3r/ExtrusionEntity.cpp:310 msgid "Unknown" msgstr "Neznámý" -#: src/slic3r/Utils/Duet.cpp:82 src/slic3r/Utils/Duet.cpp:137 -#: src/slic3r/Utils/FlashAir.cpp:119 src/slic3r/Utils/FlashAir.cpp:140 -#: src/slic3r/Utils/FlashAir.cpp:156 +#: src/slic3r/Utils/Duet.cpp:84 src/slic3r/Utils/Duet.cpp:139 +#: src/slic3r/Utils/FlashAir.cpp:122 src/slic3r/Utils/FlashAir.cpp:143 +#: src/slic3r/Utils/FlashAir.cpp:159 msgid "Unknown error occured" msgstr "Došlo k neznámé chybě" +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:178 +msgid "Unknown error occured during exporting G-code." +msgstr "Během exportu G-codu došlo k neznámé chybě." + #: src/slic3r/GUI/WipeTowerDialog.cpp:263 msgid "unloaded" msgstr "vyjmuto" -#: src/libslic3r/PrintConfig.cpp:623 +#: src/libslic3r/PrintConfig.cpp:659 msgid "Unloading speed" msgstr "Rychlost vysunutí" -#: src/libslic3r/PrintConfig.cpp:632 +#: src/libslic3r/PrintConfig.cpp:668 msgid "Unloading speed at the start" msgstr "Počáteční rychlost vysouvání filamentu" -#: src/slic3r/GUI/Tab.cpp:3256 +#: src/slic3r/GUI/Tab.cpp:3693 msgid "UNLOCKED LOCK" msgstr "ODEMČENÝ ZÁMEK" -#: src/slic3r/GUI/Tab.cpp:3282 +#: src/slic3r/GUI/Tab.cpp:3719 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" "Click to reset all settings for current option group to the system (or default) values." msgstr "Ikona ODEMKNUTÉHO ZÁMKU indikuje, že některá nastavení byla změněna a nejsou shodná se systémovými (výchozími) hodnotami pro danou skupinu nastavení. Klikněte pro reset všech nastavení aktuální skupiny nastavení na systémové hodnoty." -#: src/slic3r/GUI/Tab.cpp:3297 +#: src/slic3r/GUI/Tab.cpp:3734 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." @@ -8518,56 +9805,43 @@ msgstr "" "Ikona ODEMKNUTÉHO ZÁMKU indikuje, že se hodnota změnila a není shodná se systémovou (nebo výchozí) hodnotou.\n" "Klikněte pro reset současné hodnoty na systémovou hodnotu." -#: src/slic3r/GUI/Plater.cpp:5203 -#, c-format -msgid "Unmounting successful. The device %s(%s) can now be safely removed from the computer." -msgstr "Odpojení proběhlo úspěšné. Zařízení %s(%s) lze nyní bezpečně odebrat z počítače." - -#: src/slic3r/GUI/GUI_Preview.cpp:255 -msgid "Unretractions" -msgstr "Deretrakce" - -#: src/slic3r/GUI/Tab.cpp:2947 -msgid "Unsaved Changes" -msgstr "Neuložené Změny" - -#: src/slic3r/GUI/GUI_App.cpp:935 -msgid "Unsaved Presets" -msgstr "Neuložená přednastavení" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:179 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:173 msgid "Unselect gizmo or clear selection" msgstr "Zrušit gizmo nebo zrušit výběr" -#: src/libslic3r/Zipper.cpp:60 +#: src/libslic3r/miniz_extension.cpp:119 msgid "unsupported central directory size" msgstr "nepodporovaná velikost centrálního adresáře" -#: src/libslic3r/Zipper.cpp:40 +#: src/libslic3r/miniz_extension.cpp:99 msgid "unsupported encryption" msgstr "nepodporované šifrování" -#: src/libslic3r/Zipper.cpp:42 +#: src/libslic3r/miniz_extension.cpp:101 msgid "unsupported feature" msgstr "nepodporovaná funkce" -#: src/libslic3r/Zipper.cpp:38 +#: src/libslic3r/miniz_extension.cpp:97 msgid "unsupported method" msgstr "nepodporovaná metoda" -#: src/libslic3r/Zipper.cpp:50 +#: src/libslic3r/miniz_extension.cpp:109 msgid "unsupported multidisk archive" msgstr "nepodporovaný multidisk archiv" -#: src/slic3r/GUI/GLCanvas3DManager.cpp:292 +#: src/slic3r/GUI/OpenGLManager.cpp:267 msgid "Unsupported OpenGL version" msgstr "Nepodporovaná verze OpenGL" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3420 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3883 msgid "Unsupported selection" msgstr "Nepodporovaný výběr" -#: src/slic3r/GUI/GLCanvas3D.cpp:955 +#: src/slic3r/GUI/GCodeViewer.cpp:2183 +msgid "up to" +msgstr "až do" + +#: src/slic3r/GUI/GLCanvas3D.cpp:961 #, c-format msgid "up to %.2f mm" msgstr "do % .2f mm" @@ -8576,15 +9850,15 @@ msgstr "do % .2f mm" msgid "Update available" msgstr "Je dostupná aktualizace" -#: src/slic3r/GUI/ConfigWizard.cpp:779 src/slic3r/GUI/Preferences.cpp:80 +#: src/slic3r/GUI/ConfigWizard.cpp:1138 src/slic3r/GUI/Preferences.cpp:97 msgid "Update built-in Presets automatically" msgstr "Aktualizovat vestavěné přednastavení automaticky" -#: src/slic3r/GUI/ConfigWizard.cpp:761 +#: src/slic3r/GUI/ConfigWizard.cpp:1120 msgid "Updates" msgstr "Aktualizace" -#: src/slic3r/GUI/ConfigWizard.cpp:786 +#: src/slic3r/GUI/ConfigWizard.cpp:1145 msgid "Updates are never applied without user's consent and never overwrite user's customized settings." msgstr "Aktualizace nejsou nikdy nainstalovány bez vědomí uživatele a nikdy nepřepíšou upravená uživatelská nastavení." @@ -8592,7 +9866,7 @@ msgstr "Aktualizace nejsou nikdy nainstalovány bez vědomí uživatele a nikdy msgid "Upgrade" msgstr "Aktualizovat" -#: src/slic3r/GUI/GUI_App.cpp:824 +#: src/slic3r/GUI/GUI_App.cpp:1522 msgid "Upload a firmware image into an Arduino based printer" msgstr "Nahrát firmware do tiskárny s Arduinem" @@ -8608,101 +9882,118 @@ msgstr "Nahrát soubor do tiskového serveru se jménem:" msgid "Uploading" msgstr "Nahrávání" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:204 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:206 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 msgid "Upper Layer" msgstr "Vyšší vrstva" -#: src/slic3r/GUI/Tab.cpp:1900 -msgid "USB/Serial connection" -msgstr "USB/Sériové připojení" - -#: src/libslic3r/PrintConfig.cpp:1662 -msgid "USB/serial port for printer connection." -msgstr "USB/sériový port pro připojení tiskárny." - -#: src/slic3r/GUI/DoubleSlider.cpp:1147 +#: src/slic3r/GUI/DoubleSlider.cpp:1276 msgid "Use another extruder" msgstr "Použít jiný extruder" -#: src/slic3r/GUI/Preferences.cpp:143 +#: src/slic3r/GUI/Preferences.cpp:220 msgid "Use custom size for toolbar icons" msgstr "Použít vlastní velikost ikon na panelu nástrojů" -#: src/libslic3r/PrintConfig.cpp:2161 +#: src/slic3r/GUI/Preferences.cpp:268 +msgid "Use environment map" +msgstr "Použít mapu prostředí" + +#: src/libslic3r/PrintConfig.cpp:2304 msgid "Use firmware retraction" msgstr "Použít retrakce z firmwaru" +#: src/slic3r/GUI/ImGuiWrapper.cpp:800 src/slic3r/GUI/Search.cpp:464 +msgid "Use for search" +msgstr "Použit pro vyhledávání" + +#: src/libslic3r/PrintConfig.cpp:1218 +msgid "Use for time estimate" +msgstr "Použít pro odhad času" + #: src/slic3r/GUI/PrintHostDialogs.cpp:42 msgid "Use forward slashes ( / ) as a directory separator if needed." msgstr "Pokud je to nutné, použijte pro oddělení složek lomítko ( / )." -#: src/slic3r/GUI/Preferences.cpp:126 +#: src/slic3r/GUI/Preferences.cpp:191 msgid "Use free camera" msgstr "Scéna v režimu „free camera“" -#: src/libslic3r/PrintConfig.cpp:2780 +#: src/slic3r/GUI/ConfigWizard.cpp:1188 +msgid "Use inches" +msgstr "Používat palce" + +#: src/libslic3r/PrintConfig.cpp:2944 msgid "Use pad" msgstr "Použít podložku" -#: src/slic3r/GUI/Preferences.cpp:119 +#: src/slic3r/GUI/Preferences.cpp:184 msgid "Use perspective camera" msgstr "Perspektivní zobrazení scény" -#: src/libslic3r/PrintConfig.cpp:2168 +#: src/libslic3r/PrintConfig.cpp:2311 msgid "Use relative E distances" msgstr "Použít relativní E vzdálenosti" -#: src/slic3r/GUI/Preferences.cpp:104 +#: src/slic3r/GUI/Preferences.cpp:135 msgid "Use Retina resolution for the 3D scene" msgstr "Pro 3D scénu použít rozlišení Retina" -#: src/libslic3r/PrintConfig.cpp:540 +#: src/libslic3r/PrintConfig.cpp:576 msgid "Use this option to set the axis letter associated to your printer's extruder (usually E but some printers use A)." msgstr "Touto volbou nastavíte písmeno osy přidružené k extruderu tiskárny (obvykle E, ale některé tiskárny používají A)." -#: src/libslic3r/PrintConfig.cpp:1893 +#: src/libslic3r/PrintConfig.cpp:2035 msgid "Use this setting to rotate the support material pattern on the horizontal plane." msgstr "Toto nastavení použijte pro horizontální otočení vzoru." -#: src/libslic3r/PrintConfig.cpp:2175 +#: src/libslic3r/PrintConfig.cpp:2318 msgid "Use volumetric E" msgstr "Použít volumetrickou hodnotu E" -#: src/slic3r/GUI/DoubleSlider.cpp:1171 +#: src/slic3r/GUI/DoubleSlider.cpp:1298 msgid "used" msgstr "použitý" -#: src/slic3r/GUI/Plater.cpp:237 +#: src/slic3r/GUI/Plater.cpp:243 msgid "Used Filament (g)" msgstr "Použito Filamentu (g)" -#: src/slic3r/GUI/Plater.cpp:235 src/slic3r/GUI/Plater.cpp:1229 +#: src/slic3r/GUI/Plater.cpp:1141 +msgid "Used Filament (in)" +msgstr "Použito Filamentu (in)" + +#: src/slic3r/GUI/Plater.cpp:1153 +msgid "Used Filament (in³)" +msgstr "Použito Filamentu (in³)" + +#: src/slic3r/GUI/Plater.cpp:241 src/slic3r/GUI/Plater.cpp:1141 msgid "Used Filament (m)" msgstr "Použito Filamentu (m)" -#: src/slic3r/GUI/Plater.cpp:236 +#: src/slic3r/GUI/Plater.cpp:242 src/slic3r/GUI/Plater.cpp:1153 msgid "Used Filament (mm³)" msgstr "Použito Filamentu (mm³)" -#: src/slic3r/GUI/Plater.cpp:1191 +#: src/slic3r/GUI/Plater.cpp:1100 msgid "Used Material (ml)" msgstr "Použitý materiál (ml)" -#: src/slic3r/GUI/Plater.cpp:238 +#: src/slic3r/GUI/Plater.cpp:244 msgid "Used Material (unit)" msgstr "Použito materiálu (jednotka)" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:24 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:24 src/libslic3r/PrintConfig.cpp:132 msgid "User" msgstr "Uživatel" -#: src/slic3r/GUI/Preset.cpp:1168 src/slic3r/GUI/Preset.cpp:1288 -#: src/slic3r/GUI/PresetBundle.cpp:1677 +#: src/slic3r/GUI/PresetComboBoxes.cpp:230 +#: src/slic3r/GUI/PresetComboBoxes.cpp:778 +#: src/slic3r/GUI/PresetComboBoxes.cpp:934 msgid "User presets" msgstr "Uživatelská přednastavení" -#: src/libslic3r/Zipper.cpp:90 +#: src/libslic3r/miniz_extension.cpp:149 msgid "validation failed" msgstr "validace selhala" @@ -8714,31 +10005,31 @@ msgstr "Hodnota je shodná se systémovou hodnotou" msgid "Value was changed and is not equal to the system value or the last saved preset" msgstr "Hodnota byla změněna a není shodná se systémovou hodnotou nebo naposled uloženým přednastavením" -#: src/slic3r/GUI/Tab.cpp:2202 +#: src/slic3r/GUI/Tab.cpp:2371 msgid "Values in this column are for Normal mode" msgstr "Hodnoty v tomto sloupci jsou pro Normální režim" -#: src/slic3r/GUI/Tab.cpp:2208 +#: src/slic3r/GUI/Tab.cpp:2377 msgid "Values in this column are for Stealth mode" msgstr "Hodnoty v tomto sloupci jsou pro Tichý režim" -#: src/slic3r/GUI/GLCanvas3D.cpp:234 src/slic3r/GUI/GLCanvas3D.cpp:4573 +#: src/slic3r/GUI/GLCanvas3D.cpp:231 src/slic3r/GUI/GLCanvas3D.cpp:4978 msgid "Variable layer height" msgstr "Variabilní výška vrstvy" -#: src/slic3r/GUI/GLCanvas3D.cpp:1709 +#: src/slic3r/GUI/GLCanvas3D.cpp:1786 msgid "Variable layer height - Adaptive" msgstr "Variabilní výška vrstev - Adaptivní" -#: src/slic3r/GUI/GLCanvas3D.cpp:599 +#: src/slic3r/GUI/GLCanvas3D.cpp:565 msgid "Variable layer height - Manual edit" msgstr "Variabilní výška vrstev - Ruční editace" -#: src/slic3r/GUI/GLCanvas3D.cpp:1701 +#: src/slic3r/GUI/GLCanvas3D.cpp:1778 msgid "Variable layer height - Reset" msgstr "Variabilní výška vrstev - Reset" -#: src/slic3r/GUI/GLCanvas3D.cpp:1717 +#: src/slic3r/GUI/GLCanvas3D.cpp:1794 msgid "Variable layer height - Smooth all" msgstr "Variabilní výška vrstev - Vyhladit vše" @@ -8746,19 +10037,20 @@ msgstr "Variabilní výška vrstev - Vyhladit vše" msgid "variants" msgstr "varianty" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:57 src/slic3r/GUI/Tab.cpp:971 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:57 src/slic3r/GUI/Tab.cpp:1289 msgid "vendor" msgstr "prodejce" -#: src/slic3r/GUI/ConfigWizard.cpp:565 +#: src/slic3r/GUI/ConfigWizard.cpp:589 msgid "Vendor:" msgstr "Prodejce:" -#: src/libslic3r/PrintConfig.cpp:928 +#: src/libslic3r/PrintConfig.cpp:972 msgid "Verbose G-code" msgstr "Komentáře do G-code" -#: src/slic3r/GUI/AboutDialog.cpp:231 src/slic3r/GUI/MainFrame.cpp:64 +#: src/slic3r/GUI/AboutDialog.cpp:256 src/slic3r/GUI/GUI_App.cpp:239 +#: src/slic3r/GUI/MainFrame.cpp:164 msgid "Version" msgstr "Verze" @@ -8766,24 +10058,34 @@ msgstr "Verze" msgid "version" msgstr "verze" -#: src/slic3r/GUI/Tab.cpp:1053 +#: src/slic3r/GUI/Tab.cpp:1375 msgid "Vertical shells" msgstr "Svislé stěny" -#: src/slic3r/GUI/GUI_Preview.cpp:218 +#: src/slic3r/GUI/GUI_Preview.cpp:265 src/slic3r/GUI/GUI_Preview.cpp:271 msgid "View" msgstr "Zobrazení" -#: src/slic3r/GUI/ConfigWizard.cpp:813 +#: src/slic3r/GUI/ConfigWizard.cpp:1172 msgid "View mode" msgstr "Režim zobrazení" -#: src/libslic3r/SLAPrintSteps.cpp:413 src/libslic3r/SLAPrintSteps.cpp:422 -#: src/libslic3r/SLAPrintSteps.cpp:461 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:666 +msgid "" +"Visit \"Preferences\" and check \"%1%\"\n" +"to be asked about unsaved changes again." +msgstr "Pro zrušení zapamatování jděte do Nastaneví a zaškrtněte \"%1%\"." + +#: src/libslic3r/PrintConfig.cpp:3553 +msgid "Visualize an already sliced and saved G-code" +msgstr "Vizualizuje již naslicovaný a uložený G-code" + +#: src/libslic3r/SLAPrintSteps.cpp:411 src/libslic3r/SLAPrintSteps.cpp:420 +#: src/libslic3r/SLAPrintSteps.cpp:459 msgid "Visualizing supports" msgstr "Vizualizace podpěr" -#: src/slic3r/GUI/Plater.cpp:161 +#: src/slic3r/GUI/Plater.cpp:167 msgid "Volume" msgstr "Obsah" @@ -8791,23 +10093,23 @@ msgstr "Obsah" msgid "Volume to purge (mm³) when the filament is being" msgstr "Objem k vyčištění (mm³) pokud je filament" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1106 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1230 msgid "Volumes in Object reordered" msgstr "Změna pořadí Těles v Objektu" -#: src/slic3r/GUI/PresetHints.cpp:219 +#: src/slic3r/GUI/PresetHints.cpp:218 msgid "Volumetric" msgstr "Volumetrický" -#: src/slic3r/GUI/Tab.cpp:1591 +#: src/slic3r/GUI/Tab.cpp:1930 msgid "Volumetric flow hints not available" msgstr "Doporučení pro objemový průtok nejsou k dispozici" -#: src/slic3r/GUI/GUI_Preview.cpp:226 +#: src/slic3r/GUI/GUI_Preview.cpp:280 msgid "Volumetric flow rate" msgstr "Objemový průtok" -#: src/libslic3r/GCode/PreviewData.cpp:355 +#: src/slic3r/GUI/GCodeViewer.cpp:2240 src/libslic3r/GCode/PreviewData.cpp:360 msgid "Volumetric flow rate (mm³/s)" msgstr "Objemový průtok (mm³/s)" @@ -8815,151 +10117,170 @@ msgstr "Objemový průtok (mm³/s)" msgid "Volumetric speed" msgstr "Objemová rychlost" -#: src/libslic3r/PrintConfig.cpp:2915 +#: src/libslic3r/PrintConfig.cpp:3079 msgid "Wall thickness" msgstr "Tloušťka stěny" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1270 src/slic3r/GUI/GUI.cpp:251 -#: src/slic3r/GUI/Tab.cpp:3084 src/slic3r/GUI/WipeTowerDialog.cpp:45 -#: src/slic3r/GUI/WipeTowerDialog.cpp:366 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1129 src/slic3r/GUI/GUI.cpp:256 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:478 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:502 +#: src/slic3r/GUI/WipeTowerDialog.cpp:45 src/slic3r/GUI/WipeTowerDialog.cpp:366 msgid "Warning" msgstr "Varování" -#: src/slic3r/GUI/ConfigWizard.cpp:431 +#: src/slic3r/GUI/NotificationManager.cpp:672 +#: src/slic3r/GUI/NotificationManager.cpp:687 +#: src/slic3r/GUI/NotificationManager.cpp:702 +msgid "WARNING:" +msgstr "VAROVÁNÍ:" + +#: src/slic3r/GUI/ConfigWizard.cpp:449 msgid "Welcome" msgstr "Vítejte" -#: src/slic3r/GUI/ConfigWizard.cpp:427 +#: src/slic3r/GUI/ConfigWizard.cpp:445 #, c-format msgid "Welcome to the %s Configuration Assistant" msgstr "Vítejte v %s Konfiguračním Asistentu" -#: src/slic3r/GUI/ConfigWizard.cpp:429 +#: src/slic3r/GUI/ConfigWizard.cpp:447 #, c-format msgid "Welcome to the %s Configuration Wizard" msgstr "Vítejte v %s Konfiguračním průvodci" -#: src/slic3r/GUI/Preferences.cpp:97 +#: src/slic3r/GUI/SavePresetDialog.cpp:310 +msgid "What would you like to do with \"%1%\" preset after saving?" +msgstr "Co chcete udělat s přednastavením „% 1%“ po uložení?" + +#: src/slic3r/GUI/Preferences.cpp:114 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 "Pokud je zaškrtnuto, přednastavení tisku a filamentu se zobrazují v editoru přednastavení, i když jsou označeny jako nekompatibilní s aktivní tiskárnou" -#: src/slic3r/GUI/PresetHints.cpp:224 +#: src/slic3r/GUI/Preferences.cpp:122 +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 "Je-li zaškrtnuto, při každém přetažení souboru s projektem do aplikace se zobrazí dialogové okno s výzvou k výběru akce, kterou se má soubor načíst." + +#: src/slic3r/GUI/Preferences.cpp:156 +msgid "When closing the application, always ask for unsaved changes" +msgstr "Při zavírání aplikace vždy ptát na neuložené změny" + +#: src/slic3r/GUI/PresetHints.cpp:223 msgid "when printing" msgstr "při tisku" -#: src/libslic3r/PrintConfig.cpp:253 +#: 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)." -#: src/libslic3r/PrintConfig.cpp:305 +#: 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." msgstr "Při tisku více objektů nebo kopií tiskárna kompletně dokončí jeden objekt, předtím než začne tisknout druhý (začíná od spodní vrstvy). Tato vlastnost je výhodná z důvodů snížení rizika zničených výtisků. Slic3r by měl varovat při možné kolizi extruderu s objektem a zabránit mu, přesto doporučujeme obezřetnost." -#: src/libslic3r/PrintConfig.cpp:891 +#: src/libslic3r/PrintConfig.cpp:933 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 plates. This can be expressed as an absolute value or as a percentage (for example: 150%) over the default layer height." msgstr "Při tisku s velmi nízkými výškami vrstev můžete stále vytisknout tlustší spodní vrstvu pro zlepšení přilnavosti a toleranci pro nedokonale zkalibrovanou tiskovou podložku. Může být vyjádřeno jako absolutní hodnota nebo jako procento (například: 150%) z výchozí výšky vrstvy." -#: src/libslic3r/PrintConfig.cpp:1553 +#: src/libslic3r/PrintConfig.cpp:1661 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 "Při výměně nástroje se spustí retrakce a filament se zatáhne zpět o zadané množství (délka se měří na surovém filamentu, než vstoupí do extruderu)." -#: src/libslic3r/PrintConfig.cpp:1545 +#: src/libslic3r/PrintConfig.cpp:1653 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 "Při spuštění retrakce se filament zatáhne zpět o zadané množství (délka se měří na surovém filamentu, než vstoupí do extruderu)." -#: src/libslic3r/PrintConfig.cpp:1391 +#: src/libslic3r/PrintConfig.cpp:1499 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 positive, it is loaded further, if negative, the loading move is shorter than unloading." msgstr "Když je hodnota nastavena na nulu, vzdálenost o kterou se filament posune během zavádění, je stejná, jako zpětný posun během vysouvání filamentu. Je-li hodnota kladná, je filament posunut více,. Je-li hodnota záporná, posun při zavádění je kratší než při vysouvání." -#: src/libslic3r/PrintConfig.cpp:1238 +#: src/libslic3r/PrintConfig.cpp:1346 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 "Pokud jsou všechna ostatní nastavení rychlosti na hodnotě nula, Slic3r automaticky vypočítá optimální rychlost pro udržení konstantního tlaku v extruderu. Toto experimentální nastavení slouží k nastavení nejvyšší rychlosti tisku, kterou chcete povolit." -#: src/libslic3r/PrintConfig.cpp:1597 +#: src/libslic3r/PrintConfig.cpp:1705 msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament." msgstr "Když je retrakce kompenzována po změně nástroje, extruder vytlačuje toto další množství filamentu." -#: src/libslic3r/PrintConfig.cpp:1589 +#: src/libslic3r/PrintConfig.cpp:1697 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 "Když je retrakce kompenzována po rychloposunu, extruder vytlačuje toto další množství filamentu. Toto nastavení je zřídkakdy potřeba." -#: src/slic3r/GUI/Tab.cpp:3263 +#: src/slic3r/GUI/Tab.cpp:3700 msgid "WHITE BULLET" msgstr "BÍLÁ TEČKA" -#: src/slic3r/GUI/Tab.cpp:3285 +#: src/slic3r/GUI/Tab.cpp:3722 msgid "WHITE BULLET icon indicates a non system (or non default) preset." msgstr "Ikona BÍLÉ TEČKY indikuje nesystémové (nebo jiné než výchozí) přednastavení." -#: src/slic3r/GUI/Tab.cpp:3288 +#: src/slic3r/GUI/Tab.cpp:3725 msgid "WHITE BULLET icon indicates that the settings are the same as in the last saved preset for the current option group." msgstr "Ikona BÍLÉ TEČKY indikuje, že nastavení jsou shodná s naposledy uloženým přednastavením pro danou skupinu nastavení." -#: src/slic3r/GUI/Tab.cpp:3303 +#: src/slic3r/GUI/Tab.cpp:3740 msgid "WHITE BULLET icon indicates that the value is the same as in the last saved preset." msgstr "Ikona BÍLÉ TEČKY indikuje, že je hodnota shodná s naposledy uloženým přednastavením." -#: src/slic3r/GUI/GUI_Preview.cpp:223 src/libslic3r/PrintConfig.cpp:2238 +#: src/slic3r/GUI/GUI_Preview.cpp:277 src/libslic3r/PrintConfig.cpp:2381 msgid "Width" msgstr "Šířka" -#: src/libslic3r/GCode/PreviewData.cpp:349 +#: src/slic3r/GUI/GCodeViewer.cpp:2237 src/libslic3r/GCode/PreviewData.cpp:354 msgid "Width (mm)" msgstr "Šířka (mm)" -#: src/libslic3r/PrintConfig.cpp:2640 +#: src/libslic3r/PrintConfig.cpp:2783 msgid "Width from the back sphere center to the front sphere center" msgstr "Šířka od středu zadní koule ke středu přední koule" -#: src/libslic3r/PrintConfig.cpp:2239 +#: src/libslic3r/PrintConfig.cpp:2382 msgid "Width of a wipe tower" msgstr "Šířka čistící věže" -#: src/libslic3r/PrintConfig.cpp:2891 +#: src/libslic3r/PrintConfig.cpp:3055 msgid "Width of the connector sticks which connect the object and the generated pad." msgstr "Šířka spojek, které spojují objekt s vygenerovanou podložkou." -#: src/libslic3r/PrintConfig.cpp:2354 +#: src/libslic3r/PrintConfig.cpp:2497 msgid "Width of the display" msgstr "Šířka displeje" -#: src/slic3r/GUI/PresetHints.cpp:48 +#: 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:55 +#: src/slic3r/GUI/PresetHints.cpp:54 msgid "will be turned off." msgstr "bude vypnut." -#: src/libslic3r/PrintConfig.cpp:2441 +#: 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ší." -#: src/libslic3r/PrintConfig.cpp:2261 +#: src/libslic3r/PrintConfig.cpp:2404 msgid "Wipe into this object" msgstr "Vyčistit do tohoto objektu" -#: src/libslic3r/PrintConfig.cpp:2253 +#: src/libslic3r/PrintConfig.cpp:2396 msgid "Wipe into this object's infill" msgstr "Vyčištění do výplně tohoto objektu" -#: src/slic3r/GUI/GUI_ObjectList.cpp:39 src/slic3r/GUI/GUI_ObjectList.cpp:101 -#: src/slic3r/GUI/GUI_ObjectList.cpp:619 src/libslic3r/PrintConfig.cpp:2252 -#: src/libslic3r/PrintConfig.cpp:2260 +#: 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:2395 +#: src/libslic3r/PrintConfig.cpp:2403 msgid "Wipe options" msgstr "Možnosti čištění" -#: src/slic3r/GUI/GUI_Preview.cpp:248 src/slic3r/GUI/Tab.cpp:1191 -#: src/libslic3r/ExtrusionEntity.cpp:321 +#: src/slic3r/GUI/GUI_Preview.cpp:313 src/slic3r/GUI/Tab.cpp:1521 +#: src/libslic3r/ExtrusionEntity.cpp:326 src/libslic3r/ExtrusionEntity.cpp:360 msgid "Wipe tower" msgstr "Čistící věž" -#: src/slic3r/GUI/Plater.cpp:1231 src/slic3r/GUI/Plater.cpp:1245 +#: src/slic3r/GUI/Plater.cpp:1143 src/slic3r/GUI/Plater.cpp:1160 msgid "wipe tower" msgstr "čistící věž" -#: src/slic3r/GUI/ConfigManipulation.cpp:120 -#: src/slic3r/GUI/ConfigManipulation.cpp:140 +#: src/slic3r/GUI/ConfigManipulation.cpp:119 +#: src/slic3r/GUI/ConfigManipulation.cpp:139 msgid "Wipe Tower" msgstr "Čistící Věž" @@ -8967,36 +10288,36 @@ msgstr "Čistící Věž" msgid "Wipe tower - Purging volume adjustment" msgstr "Čistící věž - Úprava objemu čištění" -#: src/slic3r/GUI/Tab.cpp:1488 +#: src/slic3r/GUI/Tab.cpp:1834 msgid "Wipe tower parameters" msgstr "Parametry čistící věže" -#: src/libslic3r/PrintConfig.cpp:2245 +#: src/libslic3r/PrintConfig.cpp:2388 msgid "Wipe tower rotation angle" msgstr "Úhel natočení čistící věže" -#: src/libslic3r/PrintConfig.cpp:2246 +#: src/libslic3r/PrintConfig.cpp:2389 msgid "Wipe tower rotation angle with respect to x-axis." msgstr "Úhel natočení čistící věže s ohledem na osu X." -#: src/libslic3r/PrintConfig.cpp:2193 +#: src/libslic3r/PrintConfig.cpp:2336 msgid "Wipe while retracting" msgstr "Očistit při retrakci" -#: src/slic3r/GUI/PresetHints.cpp:225 +#: src/slic3r/GUI/PresetHints.cpp:224 msgid "with a volumetric rate" msgstr "s objemovou rychlostí" -#: src/libslic3r/PrintConfig.cpp:1530 +#: src/libslic3r/PrintConfig.cpp:1638 msgid "With bowden extruders, it may be wise to do some amount of quick retract before doing the wipe movement." msgstr "U bowdenových extrudérů může být vhodné provést rychlé retrakce než se spustí očištění." -#: src/libslic3r/PrintConfig.cpp:2056 +#: src/libslic3r/PrintConfig.cpp:2198 msgid "With sheath around the support" msgstr "Pouzdro okolo podpěr" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:62 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:105 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:68 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:111 msgid "World coordinates" msgstr "Světové souřadnice" @@ -9014,84 +10335,100 @@ msgstr "" "\n" "Aktualizované balíčky nastavení:" -#: src/libslic3r/Zipper.cpp:92 +#: src/libslic3r/miniz_extension.cpp:151 msgid "write calledback failed" msgstr "zpětné volání se nezdařilo" -#: src/libslic3r/PrintConfig.cpp:3382 +#: src/libslic3r/PrintConfig.cpp:3581 msgid "Write information about the model to the console." msgstr "Vypsat informace o modelu do konsole." -#: src/slic3r/Utils/Duet.cpp:131 +#: src/slic3r/Utils/Duet.cpp:133 msgid "Wrong password" msgstr "Chybné heslo" -#: src/libslic3r/PrintConfig.cpp:2225 +#: src/libslic3r/PrintConfig.cpp:2368 msgid "X coordinate of the left front corner of a wipe tower" msgstr "X souřadnice levého předního rohu čistící věže" -#: src/libslic3r/PrintConfig.cpp:1879 +#: src/libslic3r/PrintConfig.cpp:2021 msgid "XY separation between an object and its support" msgstr "XY vzdálenost mezi objektem a podpěrami" -#: src/libslic3r/PrintConfig.cpp:1881 +#: src/libslic3r/PrintConfig.cpp:2023 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 "XY vzdálenost mezi objektem a podpěrami. Pokud je vyjádřeno procenty (například 50%), bude vypočítána z šířky perimetru." -#: src/libslic3r/PrintConfig.cpp:2275 +#: src/libslic3r/PrintConfig.cpp:2418 msgid "XY Size Compensation" msgstr "Kompenzace XY rozměrů" -#: src/libslic3r/PrintConfig.cpp:2232 +#: src/libslic3r/PrintConfig.cpp:2375 msgid "Y coordinate of the left front corner of a wipe tower" msgstr "Y souřadnice levého předního rohu čistící věže" -#: src/slic3r/GUI/Plater.cpp:1170 +#: src/slic3r/GUI/Plater.cpp:1079 msgid "Yes" msgstr "Ano" -#: src/libslic3r/PrintConfig.cpp:1317 +#: src/slic3r/GUI/Plater.cpp:1405 +msgid "You can open only one .gcode file at a time." +msgstr "Najednou můžete otevřít pouze jeden soubor .gcode." + +#: src/libslic3r/PrintConfig.cpp:1425 msgid "You can put here your personal notes. This text will be added to the G-code header comments." msgstr "Zde můžete zadat své osobní poznámky. Tento text bude přidán do komentáře záhlaví G code." -#: src/libslic3r/PrintConfig.cpp:589 +#: src/libslic3r/PrintConfig.cpp:625 msgid "You can put your notes regarding the filament here." msgstr "Zde můžete vložit poznámky týkající se filamentu." -#: src/libslic3r/PrintConfig.cpp:1473 +#: src/libslic3r/PrintConfig.cpp:1581 msgid "You can put your notes regarding the printer here." msgstr "Zde můžete uvést poznámky týkající se tiskárny." -#: src/libslic3r/PrintConfig.cpp:2579 +#: src/libslic3r/PrintConfig.cpp:2722 msgid "You can put your notes regarding the SLA print material here." msgstr "Zde můžete vkládat své poznámky týkající se tiskového materiálu SLA." -#: src/libslic3r/PrintConfig.cpp:360 +#: src/libslic3r/PrintConfig.cpp:394 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 "Nastavením počtu prvních vrstev s vypnutým chlazením pro nezhoršování přilnavosti." -#: src/libslic3r/PrintConfig.cpp:1364 +#: src/libslic3r/PrintConfig.cpp:1472 msgid "You can use all configuration options as variables inside this template. For example: [layer_height], [fill_density] etc. You can also use [timestamp], [year], [month], [day], [hour], [minute], [second], [version], [input_filename], [input_filename_base]." msgstr "V této šabloně můžete použít všechny možnosti konfigurace jako proměnné. Můžete například použít: [layer_height], [fill_density] etc. Také můžete použít [timestamp], [year], [month], [day], [hour], [minute], [second], [version], [input_filename], [input_filename_base]." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3546 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4009 msgid "You can't change a type of the last solid part of the object." msgstr "Nelze změnit typ poslední plné části objektu." -#: src/slic3r/GUI/Plater.cpp:2390 +#: src/slic3r/GUI/Plater.cpp:2352 #, 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 "Nemůžete přidat objekt(y) z %s, protože jeden nebo některé z nich je(jsou) vícedílné" -#: src/slic3r/GUI/Plater.cpp:2311 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:208 src/slic3r/GUI/Plater.cpp:2254 msgid "You cannot load SLA project with a multi-part object on the bed" msgstr "Nelze načíst SLA projekt s objektem na podložce, který je složený z více částí" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:578 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:625 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/GLCanvas3DManager.cpp:287 +#: src/slic3r/GUI/SavePresetDialog.cpp:277 +msgid "" +"You have selected physical printer \"%1%\" \n" +"with related printer preset \"%2%\"" +msgstr "" +"Vybrali jste fyzickou tiskárnu \"%1%\"\n" +"s tiskovým přednastavením \"%2%\"" + +#: src/slic3r/GUI/GUI_App.cpp:1078 +msgid "You have the following presets with saved options for \"Print Host upload\"" +msgstr "Následující přednastavení máte s uloženým nastavením pro „Nahrávání do tiskového serveru“" + +#: src/slic3r/GUI/OpenGLManager.cpp:262 msgid "You may need to update your graphics card driver." msgstr "Možná budete muset aktualizovat ovladač grafické karty." @@ -9099,37 +10436,49 @@ msgstr "Možná budete muset aktualizovat ovladač grafické karty." msgid "You must install a configuration update." msgstr "Je nutné nainstalovat aktualizaci konfigurace." -#: src/slic3r/GUI/Preferences.cpp:172 +#: src/slic3r/GUI/Preferences.cpp:299 #, c-format msgid "You need to restart %s to make the changes effective." msgstr "Chcete-li provést změny, musíte restartovat aplikaci %s." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3421 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:468 +msgid "You should to change a name of your printer device. It can't be saved." +msgstr "Měli byste změnit název tiskového zařízení. Nemůže být uloženo." + +#: src/slic3r/GUI/GUI_ObjectList.cpp:3884 #, c-format msgid "You started your selection with %s Item." msgstr "Začali jste výběr s položkou %s." -#: src/slic3r/GUI/DoubleSlider.cpp:1902 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:664 +msgid "You will not be asked about the unsaved changes the next time you close PrusaSlicer." +msgstr "Při příštím zavření aplikace PrusaSlice nebudete dotázáni na neuložené změny." + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:665 +msgid "You will not be asked about the unsaved changes the next time you switch a preset." +msgstr "Při příštím přepnutí přednasatvení nebudete dotázáni na neuložené změny." + +#: src/slic3r/GUI/DoubleSlider.cpp:2121 msgid "Your current changes will delete all saved color changes." msgstr "Vaše aktuálně provedené změny odstraní všechny uložené změny barev." -#: src/slic3r/GUI/DoubleSlider.cpp:1923 +#: src/slic3r/GUI/DoubleSlider.cpp:2141 msgid "Your current changes will delete all saved extruder (tool) changes." msgstr "Vaše aktuálně provedené změny odstraní všechny uložené změny extruderu (nástroje)." -#: src/slic3r/GUI/MainFrame.cpp:911 +#: src/slic3r/GUI/MainFrame.cpp:1612 msgid "Your file was repaired." msgstr "Váš soubor byl opraven." -#: src/slic3r/GUI/Plater.cpp:2528 +#: src/slic3r/GUI/Plater.cpp:2490 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/PrintConfig.cpp:2285 +#: src/libslic3r/PrintConfig.cpp:2428 msgid "Z offset" msgstr "Odsazení Z" -#: src/slic3r/GUI/ConfigManipulation.cpp:60 +#: src/slic3r/GUI/ConfigManipulation.cpp:59 msgid "" "Zero first layer height is not valid.\n" "\n" @@ -9139,7 +10488,7 @@ msgstr "" "\n" "Výška první vrstvy bude resetována na 0.01." -#: src/slic3r/GUI/ConfigManipulation.cpp:48 +#: src/slic3r/GUI/ConfigManipulation.cpp:47 msgid "" "Zero layer height is not valid.\n" "\n" @@ -9149,28 +10498,28 @@ msgstr "" "\n" "Výška vrstvy bude resetována na 0.01." -#: src/libslic3r/PrintConfig.cpp:2667 +#: src/libslic3r/PrintConfig.cpp:2831 msgid "Zig-Zag" msgstr "Zig-Zag" -#: src/slic3r/GUI/Mouse3DController.cpp:308 -#: src/slic3r/GUI/Mouse3DController.cpp:317 +#: src/slic3r/GUI/Mouse3DController.cpp:294 +#: src/slic3r/GUI/Mouse3DController.cpp:303 msgid "Zoom" msgstr "Zoom" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:183 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:177 msgid "Zoom in" msgstr "Přiblížit" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:184 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:178 msgid "Zoom out" msgstr "Oddálit" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:181 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:175 msgid "Zoom to Bed" msgstr "Pohled na tiskovou plochu" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:182 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:176 msgid "" "Zoom to selected object\n" "or all objects in scene, if none selected" @@ -9178,14 +10527,16 @@ msgstr "" "Pohled na označený objekt, nebo na všechny objekty ve scéně,\n" "pokud není vybraný žádný objekt" -#: src/libslic3r/PrintConfig.cpp:207 src/libslic3r/PrintConfig.cpp:780 -#: src/libslic3r/PrintConfig.cpp:1640 src/libslic3r/PrintConfig.cpp:1650 -#: src/libslic3r/PrintConfig.cpp:1894 src/libslic3r/PrintConfig.cpp:2049 -#: src/libslic3r/PrintConfig.cpp:2247 src/libslic3r/PrintConfig.cpp:2727 -#: src/libslic3r/PrintConfig.cpp:2848 +#: src/libslic3r/PrintConfig.cpp:241 src/libslic3r/PrintConfig.cpp:816 +#: src/libslic3r/PrintConfig.cpp:1748 src/libslic3r/PrintConfig.cpp:1758 +#: src/libslic3r/PrintConfig.cpp:2036 src/libslic3r/PrintConfig.cpp:2191 +#: src/libslic3r/PrintConfig.cpp:2390 src/libslic3r/PrintConfig.cpp:2891 +#: src/libslic3r/PrintConfig.cpp:3012 msgid "°" msgstr "°" -#: src/slic3r/GUI/ConfigWizard.cpp:1038 src/slic3r/GUI/ConfigWizard.cpp:1052 +#: src/slic3r/GUI/ConfigWizard.cpp:1404 src/slic3r/GUI/ConfigWizard.cpp:1418 +#: src/libslic3r/PrintConfig.cpp:180 src/libslic3r/PrintConfig.cpp:912 +#: src/libslic3r/PrintConfig.cpp:956 src/libslic3r/PrintConfig.cpp:2209 msgid "°C" msgstr "°C" diff --git a/resources/localization/de/PrusaSlicer.mo b/resources/localization/de/PrusaSlicer.mo index 7a3021c301..f2692af203 100644 Binary files a/resources/localization/de/PrusaSlicer.mo and b/resources/localization/de/PrusaSlicer.mo differ diff --git a/resources/localization/de/PrusaSlicer_de.po b/resources/localization/de/PrusaSlicer_de.po index e926a61459..97c615134b 100644 --- a/resources/localization/de/PrusaSlicer_de.po +++ b/resources/localization/de/PrusaSlicer_de.po @@ -5,82 +5,101 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 2.3\n" +"X-Generator: Poedit 2.4.2\n" "Project-Id-Version: \n" "POT-Creation-Date: \n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" -#: src/slic3r/GUI/MainFrame.cpp:66 -msgid " - Remember to check for updates at http://github.com/prusa3d/PrusaSlicer/releases" -msgstr " - Denken Sie an die Überprüfung auf Updates unter http://github.com/prusa3d/PrusaSlicer/releases" +#: src/slic3r/GUI/Tab.cpp:4124 +msgid "" +"\"%1%\" is disabled because \"%2%\" is on in \"%3%\" category.\n" +"To enable \"%1%\", please switch off \"%2%\"" +msgstr "" +"\"%1%\" ist deaktiviert, weil \"%2%\" in der Kategorie \"%3%\" eingeschaltet ist.\n" +"Um \"%1%\" zu aktivieren, schalten Sie bitte \"%2%\" aus." -#: src/slic3r/GUI/MainFrame.cpp:872 -msgid " was successfully sliced." -msgstr " wurde erfolgreich gesliced." - -#: src/libslic3r/PrintConfig.cpp:215 src/libslic3r/PrintConfig.cpp:792 -#: src/libslic3r/PrintConfig.cpp:1219 src/libslic3r/PrintConfig.cpp:1282 -#: src/libslic3r/PrintConfig.cpp:1532 src/libslic3r/PrintConfig.cpp:2425 -#: src/libslic3r/PrintConfig.cpp:2767 +#: src/libslic3r/PrintConfig.cpp:249 src/libslic3r/PrintConfig.cpp:828 +#: src/libslic3r/PrintConfig.cpp:1148 src/libslic3r/PrintConfig.cpp:1327 +#: src/libslic3r/PrintConfig.cpp:1390 src/libslic3r/PrintConfig.cpp:1640 +#: src/libslic3r/PrintConfig.cpp:2568 src/libslic3r/PrintConfig.cpp:2805 +#: src/libslic3r/PrintConfig.cpp:2931 msgid "%" msgstr "%" -#: src/slic3r/GUI/GLCanvas3D.cpp:963 +#: src/slic3r/GUI/GLCanvas3D.cpp:969 #, c-format msgid "%.2f - %.2f mm" msgstr "%.2f - %.2f mm" #. TRN Remove/Delete -#: src/slic3r/GUI/Tab.cpp:3126 +#: src/slic3r/GUI/Tab.cpp:3425 msgid "%1% Preset" msgstr "%1% Voreinstellung" -#: src/slic3r/GUI/Plater.cpp:4400 +#: src/slic3r/GUI/Plater.cpp:4423 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 "Der %1% Drucker war zum Zeitpunkt der Aufnahme des Ziel-Rückgängig-/Wiederherstellungs-Schnappschusses aktiv. Die Umstellung auf den %1%-Drucker erfordert ein Neuladen der %1%-Voreinstellungen." -#: src/libslic3r/Print.cpp:1374 +#: src/slic3r/GUI/MainFrame.cpp:1585 +msgid "%1% was successfully sliced." +msgstr "%1% wurde erfolgreich gesliced." + +#: src/libslic3r/Print.cpp:1400 msgid "%1%=%2% mm is too low to be printable at a layer height %3% mm" msgstr "%1%=%2% mm ist zu niedrig, um auf einer Schichthöhe von %3% mm druckbar zu sein" -#: src/slic3r/GUI/PresetHints.cpp:229 +#: src/slic3r/GUI/PresetHints.cpp:228 #, c-format msgid "%3.2f mm³/s at filament speed %3.2f mm/s." msgstr "%3.2f mm³/s mit einer Filamentgeschwindigkeit von %3.2f mm/s." -#: src/slic3r/GUI/Plater.cpp:1152 +#: src/slic3r/GUI/Plater.cpp:1061 #, c-format msgid "%d (%d shells)" msgstr "%d (%d Konturhüllen)" -#: src/slic3r/GUI/Plater.cpp:1160 +#: src/slic3r/GUI/Plater.cpp:1069 #, c-format msgid "%d degenerate facets, %d edges fixed, %d facets removed, %d facets added, %d facets reversed, %d backwards edges" msgstr "%d degenerierte Flächen, %d Kanten korrigiert, %d Flächen entfernt, %d Flächen hinzugefügt, %d Flächen umgekehrt, %d rückwärtige Kanten" -#: src/slic3r/GUI/PresetHints.cpp:270 +#: src/slic3r/GUI/PresetHints.cpp:269 #, c-format msgid "%d lines: %.2f mm" msgstr "%d Linien: %.2f mm" -#: src/slic3r/GUI/MainFrame.cpp:1027 +#: src/slic3r/GUI/MainFrame.cpp:1728 #, c-format msgid "%d presets successfully imported." msgstr "%d Voreinstellungen erfolgreich importiert." -#: src/slic3r/GUI/MainFrame.cpp:692 +#: src/slic3r/GUI/GUI_App.cpp:718 +#, c-format +msgid "" +"%s\n" +"Do you want to continue?" +msgstr "" +"%s\n" +"Möchten Sie fortfahren?" + +#: src/slic3r/GUI/MainFrame.cpp:917 src/slic3r/GUI/MainFrame.cpp:1316 #, c-format msgid "%s &Website" msgstr "%s &Webseite" +#: src/slic3r/GUI/GUI_App.cpp:394 +#, c-format +msgid "%s - BREAKING CHANGE" +msgstr "%s - BREAKING CHANGE" + #: src/slic3r/GUI/UpdateDialogs.cpp:211 #, c-format msgid "%s configuration is incompatible" msgstr "%s Konfiguration ist nicht kompatibel" -#: src/slic3r/GUI/Field.cpp:175 +#: src/slic3r/GUI/Field.cpp:223 #, c-format msgid "%s doesn't support percentage" msgstr "%s akzeptiert keine Prozentangaben" @@ -90,7 +109,7 @@ msgstr "%s akzeptiert keine Prozentangaben" msgid "%s error" msgstr "%s Fehler" -#: src/slic3r/GUI/ConfigWizard.cpp:481 +#: src/slic3r/GUI/ConfigWizard.cpp:499 #, c-format msgid "%s Family" msgstr "%s Familie" @@ -100,7 +119,7 @@ msgstr "%s Familie" msgid "%s has encountered an error" msgstr "%s ist auf einen Fehler gestoßen" -#: src/slic3r/GUI/GUI_App.cpp:138 +#: src/slic3r/GUI/GUI_App.cpp:528 #, c-format msgid "" "%s has encountered an error. It was likely caused by running out of memory. If you are sure you have enough RAM on your system, this may also be a bug and we would be glad if you reported it.\n" @@ -111,12 +130,12 @@ msgstr "" "\n" "Die Anwendung wird nun beendet." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:222 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:62 #, c-format msgid "%s has encountered an error. It was likely caused by running out of memory. If you are sure you have enough RAM on your system, this may also be a bug and we would be glad if you reported it." msgstr "%s ist auf einen Fehler gestoßen. Es wurde wahrscheinlich dadurch verursacht, dass der Speicher knapp wird. Wenn Sie sicher sind, dass Sie genügend RAM auf Ihrem System haben, kann dies auch ein Programmfehler sein, und wir würden uns freuen, wenn Sie ihn melden würden." -#: src/slic3r/GUI/UpdateDialogs.cpp:308 +#: src/slic3r/GUI/UpdateDialogs.cpp:309 #, c-format msgid "%s has no configuration updates available." msgstr "Für %s sind keine Konfigurationsaktualisierungen verfügbar." @@ -143,7 +162,7 @@ msgstr "" "\n" "Bitte fahren Sie fort mit '%s'. Dies folgt nun, um die neuen Einstellungen einzurichten sowie auszuwählen, ob Einstellungen automatisch aktualisiert werden dürfen." -#: src/slic3r/GUI/GUI_App.cpp:820 +#: src/slic3r/GUI/GUI_App.cpp:1512 #, c-format msgid "%s View Mode" msgstr "%s Anzeigemodus" @@ -163,218 +182,248 @@ msgstr "" "\n" "Aktualisierte Konfigurations-Bundles:" -#: src/slic3r/GUI/MainFrame.cpp:705 +#: src/slic3r/GUI/MainFrame.cpp:933 src/slic3r/GUI/MainFrame.cpp:937 +#: src/slic3r/GUI/MainFrame.cpp:1329 #, c-format msgid "&About %s" msgstr "Ü&ber %s" -#: src/slic3r/GUI/GUI_App.cpp:908 +#: src/slic3r/GUI/MainFrame.cpp:1297 +msgid "&Collapse sidebar" +msgstr "Seitenleiste zuklappen (&C)" + +#: src/slic3r/GUI/GUI_App.cpp:1645 msgid "&Configuration" msgstr "&Konfiguration" -#: src/slic3r/GUI/GUI_App.cpp:800 +#: src/slic3r/GUI/GUI_App.cpp:1480 msgid "&Configuration Snapshots" msgstr "Konfi&gurations-Momentaufnahmen" -#: src/slic3r/GUI/MainFrame.cpp:588 +#: src/slic3r/GUI/MainFrame.cpp:1194 msgid "&Copy" msgstr "&Kopieren" -#: src/slic3r/GUI/MainFrame.cpp:572 +#: src/slic3r/GUI/MainFrame.cpp:1178 msgid "&Delete selected" msgstr "Löschen aus&gewählt" -#: src/slic3r/GUI/MainFrame.cpp:722 +#: src/slic3r/GUI/MainFrame.cpp:1348 src/slic3r/GUI/MainFrame.cpp:1358 msgid "&Edit" msgstr "&Bearbeiten" -#: src/slic3r/GUI/MainFrame.cpp:506 +#: src/slic3r/GUI/MainFrame.cpp:1103 msgid "&Export" msgstr "&Export" -#: src/slic3r/GUI/MainFrame.cpp:617 src/slic3r/GUI/MainFrame.cpp:752 +#: src/slic3r/GUI/MainFrame.cpp:1224 src/slic3r/GUI/MainFrame.cpp:1451 msgid "&Filament Settings Tab" msgstr "&Filamenteinstellungen" -#: src/slic3r/GUI/MainFrame.cpp:721 +#: src/slic3r/GUI/MainFrame.cpp:1347 src/slic3r/GUI/MainFrame.cpp:1357 +#: src/slic3r/GUI/MainFrame.cpp:1417 msgid "&File" msgstr "&Datei" -#: src/slic3r/GUI/ConfigWizard.cpp:1981 +#: src/slic3r/GUI/ConfigWizard.cpp:2492 msgid "&Finish" msgstr "&Beenden" -#: src/slic3r/GUI/MainFrame.cpp:727 +#: src/slic3r/GUI/MainFrame.cpp:1141 +msgid "&G-code preview" +msgstr "&G-Code-Vorschau" + +#: src/slic3r/GUI/MainFrame.cpp:1353 src/slic3r/GUI/MainFrame.cpp:1363 +#: src/slic3r/GUI/MainFrame.cpp:1423 msgid "&Help" msgstr "&Hilfe" -#: src/slic3r/GUI/MainFrame.cpp:474 +#: src/slic3r/GUI/MainFrame.cpp:1065 msgid "&Import" msgstr "&Import" -#: src/slic3r/GUI/GUI_App.cpp:822 +#: src/slic3r/GUI/GUI_App.cpp:1517 msgid "&Language" msgstr "Sp&rache" -#: src/slic3r/GUI/MainFrame.cpp:405 +#: src/slic3r/GUI/MainFrame.cpp:986 msgid "&New Project" msgstr "&Neues Projekt" -#: src/slic3r/GUI/ConfigWizard.cpp:1980 +#: src/slic3r/GUI/ConfigWizard.cpp:2491 msgid "&Next >" msgstr "&Weiter >" -#: src/slic3r/GUI/MainFrame.cpp:408 +#: src/slic3r/GUI/MainFrame.cpp:1391 +msgid "&Open G-code" +msgstr "Öffne G-C&ode" + +#: src/slic3r/GUI/MainFrame.cpp:989 msgid "&Open Project" msgstr "Pr&ojekt öffnen" -#: src/slic3r/GUI/MainFrame.cpp:591 +#: src/slic3r/GUI/MainFrame.cpp:1197 msgid "&Paste" msgstr "Ei&nfügen" -#: src/slic3r/GUI/MainFrame.cpp:606 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "&Plater Tab" msgstr "Druck&platte" -#: src/slic3r/GUI/GUI_App.cpp:804 +#: src/slic3r/GUI/GUI_App.cpp:1487 msgid "&Preferences" msgstr "&Einstellungen" -#: src/slic3r/GUI/MainFrame.cpp:540 +#: src/slic3r/GUI/MainFrame.cpp:1144 src/slic3r/GUI/MainFrame.cpp:1402 msgid "&Quit" msgstr "&Beenden" -#: src/slic3r/GUI/MainFrame.cpp:583 +#: src/slic3r/GUI/MainFrame.cpp:1189 msgid "&Redo" msgstr "&Redo" -#: src/slic3r/GUI/MainFrame.cpp:536 +#: src/slic3r/GUI/MainFrame.cpp:1137 msgid "&Repair STL file" msgstr "STL-Datei &reparieren" -#: src/slic3r/GUI/MainFrame.cpp:446 +#: src/slic3r/GUI/MainFrame.cpp:1028 msgid "&Save Project" msgstr "Projekt &sichern" -#: src/slic3r/GUI/MainFrame.cpp:565 +#: src/slic3r/GUI/MainFrame.cpp:1171 msgid "&Select all" msgstr "Alle&s auswählen" -#: src/slic3r/GUI/MainFrame.cpp:580 +#: src/slic3r/GUI/MainFrame.cpp:1186 msgid "&Undo" msgstr "&Undo" -#: src/slic3r/GUI/MainFrame.cpp:724 +#: src/slic3r/GUI/MainFrame.cpp:1350 src/slic3r/GUI/MainFrame.cpp:1360 +#: src/slic3r/GUI/MainFrame.cpp:1418 msgid "&View" msgstr "&Anzeige" -#: src/slic3r/GUI/MainFrame.cpp:723 +#: src/slic3r/GUI/MainFrame.cpp:1349 src/slic3r/GUI/MainFrame.cpp:1359 msgid "&Window" msgstr "&Fenster" -#: src/slic3r/GUI/ConfigWizard.cpp:603 src/slic3r/GUI/ConfigWizard.cpp:631 +#: src/slic3r/GUI/ConfigWizard.cpp:662 src/slic3r/GUI/ConfigWizard.cpp:812 +#: src/slic3r/GUI/ConfigWizard.cpp:873 src/slic3r/GUI/ConfigWizard.cpp:1007 msgid "(All)" msgstr "(Alles)" -#: src/libslic3r/PrintConfig.cpp:1446 +#: src/libslic3r/PrintConfig.cpp:1554 msgid "(minimum)" msgstr "(Minimum)" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:116 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:109 msgid "(Re)slice" msgstr "(Re)Slice" -#: src/slic3r/GUI/MainFrame.cpp:532 +#: src/slic3r/GUI/MainFrame.cpp:1133 msgid "(Re)Slice No&w" msgstr "(Re)Slice jet&zt" -#: src/libslic3r/PrintConfig.cpp:771 src/libslic3r/PrintConfig.cpp:2587 +#: src/libslic3r/PrintConfig.cpp:807 src/libslic3r/PrintConfig.cpp:2730 msgid "(Unknown)" msgstr "(Unbekannt)" -#: src/slic3r/GUI/MainFrame.cpp:790 +#: src/slic3r/GUI/MainFrame.cpp:1491 msgid ") not found." msgstr ") nicht gefunden." -#: src/libslic3r/PrintConfig.cpp:1918 +#: src/libslic3r/PrintConfig.cpp:2060 msgid "0 (soluble)" msgstr "0 (löslich)" -#: src/libslic3r/PrintConfig.cpp:1919 +#: src/libslic3r/PrintConfig.cpp:2061 msgid "0.2 (detachable)" msgstr "0,2 (lösbar)" -#: src/slic3r/GUI/MainFrame.cpp:626 +#: src/slic3r/GUI/MainFrame.cpp:1234 msgid "3&D" msgstr "3&D" -#: src/slic3r/GUI/Plater.cpp:4097 +#: src/slic3r/GUI/Plater.cpp:4044 msgid "3D editor view" msgstr "3D Editiermodus" -#: src/libslic3r/PrintConfig.cpp:851 +#: src/libslic3r/PrintConfig.cpp:889 msgid "3D Honeycomb" msgstr "3D Bienenwabe" -#: src/slic3r/GUI/Mouse3DController.cpp:274 +#: src/slic3r/GUI/NotificationManager.hpp:318 +msgid "3D Mouse disconnected." +msgstr "3D-Maus nicht angeschlossen." + +#: src/slic3r/GUI/Mouse3DController.cpp:263 msgid "3Dconnexion settings" msgstr "3Dconnexion Einstellungen" -#: src/slic3r/GUI/Plater.cpp:5038 +#: src/slic3r/GUI/Plater.cpp:5167 #, c-format msgid "3MF file exported to %s" msgstr "3MF Datei exportiert nach %s" -#: src/slic3r/GUI/ConfigWizard.cpp:1979 +#: src/slic3r/GUI/ConfigWizard.cpp:2490 msgid "< &Back" msgstr "< &Zurück" -#: src/libslic3r/PrintConfig.cpp:287 +#: src/libslic3r/PrintConfig.cpp:321 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 "Ein boolescher Ausdruck, der die Konfigurationswerte eines aktiven Druckprofils verwendet. Wenn dieser Ausdruck als wahr bewertet wird, wird dieses Profil als kompatibel mit dem aktiven Druckprofil angesehen." -#: src/libslic3r/PrintConfig.cpp:272 +#: src/libslic3r/PrintConfig.cpp:306 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 "Ein boolescher Ausdruck, der die Konfigurationswerte eines aktiven Druckerprofils verwendet. Wenn dieser Ausdruck als wahr bewertet wird, wird dieses Profil als kompatibel mit dem aktiven Druckerprofil angesehen." -#: src/slic3r/GUI/Tab.cpp:975 +#: src/slic3r/GUI/Tab.cpp:1237 msgid "A copy of the current system preset will be created, which will be detached from the system preset." msgstr "Es wird eine Kopie der aktuellen Systemvoreinstellung erstellt, die von der Systemvoreinstellung gelöst wird." -#: src/slic3r/GUI/ConfigWizard.cpp:1034 +#: src/slic3r/GUI/ConfigWizard.cpp:1400 msgid "A rule of thumb is 160 to 230 °C for PLA, and 215 to 250 °C for ABS." msgstr "Ein Daumenwert ist 160 bis 230 °C für PLA, und 215 bis 250 °C für ABS." -#: src/slic3r/GUI/ConfigWizard.cpp:1048 +#: src/slic3r/GUI/ConfigWizard.cpp:1414 msgid "A rule of thumb is 60 °C for PLA and 110 °C for ABS. Leave zero if you have no heated bed." msgstr "Ein Daumenwert ist 60 °C für PLA und 110 °C für ABS. Auf 0 setzen, falls kein beheiztes Druckbett vorhanden ist." -#: src/slic3r/GUI/GLCanvas3D.cpp:686 -msgid "A toolpath outside the print area was detected" -msgstr "Ein Werkzeugweg außerhalb des Druckbereichs wurde erkannt" +#: src/slic3r/GUI/GLCanvas3D.cpp:634 +msgid "A toolpath outside the print area was detected." +msgstr "Es wurde ein Werkzeugweg außerhalb des Druckbereichs erkannt." -#: src/slic3r/GUI/AboutDialog.cpp:199 +#: src/slic3r/GUI/AboutDialog.cpp:212 src/slic3r/GUI/AboutDialog.cpp:215 #, c-format msgid "About %s" msgstr "Über %s" -#: src/slic3r/GUI/GLCanvas3D.cpp:959 +#: src/slic3r/GUI/GCodeViewer.cpp:2189 +msgid "above" +msgstr "über" + +#: src/slic3r/GUI/GLCanvas3D.cpp:965 #, c-format msgid "above %.2f mm" msgstr "oberhalb %.2f mm" -#: src/libslic3r/PrintConfig.cpp:1569 +#: src/libslic3r/PrintConfig.cpp:1677 msgid "Above Z" msgstr "Über Z" -#: src/slic3r/GUI/Tab.cpp:1164 +#: src/slic3r/GUI/Tab.cpp:1494 msgid "Acceleration control (advanced)" msgstr "Beschleunigungskontrolle (fortgeschritten)" -#: src/libslic3r/PrintConfig.cpp:2925 +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:221 +#: src/libslic3r/PrintConfig.cpp:3089 msgid "Accuracy" msgstr "Genauigkeit" +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:59 +msgid "Accurate" +msgstr "Akkurat" + #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:78 msgid "Activate" msgstr "Aktivieren" @@ -383,67 +432,75 @@ msgstr "Aktivieren" msgid "Active" msgstr "Aktiv" -#: src/slic3r/GUI/DoubleSlider.cpp:1135 src/slic3r/GUI/GUI_ObjectList.cpp:1705 +#: src/slic3r/GUI/DoubleSlider.cpp:1264 src/slic3r/GUI/GUI_ObjectList.cpp:1833 msgid "active" msgstr "aktiv" -#: src/slic3r/GUI/GLCanvas3D.cpp:267 +#: src/slic3r/GUI/GLCanvas3D.cpp:254 msgid "Adaptive" msgstr "Adaptiv" -#: src/slic3r/GUI/Tab.cpp:241 -msgid "Add a new printer" -msgstr "Neuen Drucker hinzufügen" +#: src/libslic3r/PrintConfig.cpp:894 +msgid "Adaptive Cubic" +msgstr "Adaptiv kubisch" -#: src/libslic3r/PrintConfig.cpp:2782 +#: src/slic3r/GUI/SavePresetDialog.cpp:314 +msgid "Add \"%1%\" as a next preset for the the physical printer \"%2%\"" +msgstr "\"%1%\" als nächste Voreinstellung für den physischen Drucker \"%2%\" hinzufügen" + +#: src/libslic3r/PrintConfig.cpp:2946 msgid "Add a pad underneath the supported model" msgstr "Fügt eine Grundschicht unter das gestützte Modell" -#: src/libslic3r/PrintConfig.cpp:2058 +#: src/libslic3r/PrintConfig.cpp:2200 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 "Fügen Sie eine Sheath (eine einzelne Druckkontur) um die Basisschicht herum hinzu. Das macht die Stützstrukturen zuverlässiger, aber auch schwieriger zu entfernen." -#: src/slic3r/GUI/DoubleSlider.cpp:991 +#: src/slic3r/GUI/DoubleSlider.cpp:1114 msgid "Add another code - Ctrl + Left click" msgstr "Weiteren Code hinzufügen - Strg + Linksklick" -#: src/slic3r/GUI/DoubleSlider.cpp:992 +#: src/slic3r/GUI/DoubleSlider.cpp:1115 msgid "Add another code - Right click" msgstr "Weiteren Code hinzufügen - Rechtsklick" -#: src/slic3r/GUI/DoubleSlider.cpp:1477 +#: src/slic3r/GUI/DoubleSlider.cpp:1665 msgid "Add color change" msgstr "Farbwechsel hinzufügen" -#: src/slic3r/GUI/DoubleSlider.cpp:1180 +#: src/slic3r/GUI/DoubleSlider.cpp:1307 msgid "Add color change (%1%) for:" msgstr "Farbwechsel (%1%) hinzufügen für:" -#: src/slic3r/GUI/DoubleSlider.cpp:988 +#: src/slic3r/GUI/DoubleSlider.cpp:1111 msgid "Add color change - Left click" msgstr "Farbwechsel hinzufügen - Linksklick" -#: src/slic3r/GUI/DoubleSlider.cpp:986 +#: src/slic3r/GUI/DoubleSlider.cpp:1109 msgid "Add color change - Left click for predefined color or Shift + Left click for custom color selection" msgstr "Farbwechsel hinzufügen - Linksklick für vordefinierte Farbe oder Shift + Linksklick für benutzerdefinierte Farbauswahl" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:218 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:219 msgid "Add color change marker for current layer" msgstr "Fügt einen Farbwechselmarker der aktuellen Schicht hinzu" -#: src/slic3r/GUI/DoubleSlider.cpp:1490 +#: src/slic3r/GUI/DoubleSlider.cpp:1682 msgid "Add custom G-code" msgstr "Benutzerdefinierten G-Code hinzufügen" -#: src/slic3r/GUI/GLCanvas3D.cpp:240 +#: src/slic3r/GUI/DoubleSlider.cpp:1679 +msgid "Add custom template" +msgstr "Benutzerdefinierte Vorlage hinzufügen" + +#: src/slic3r/GUI/GLCanvas3D.cpp:235 msgid "Add detail" msgstr "Detail hinzufügen" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:421 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:308 msgid "Add drainage hole" msgstr "Drainageloch hinzufügen" -#: src/slic3r/GUI/DoubleSlider.cpp:984 +#: src/slic3r/GUI/DoubleSlider.cpp:1107 msgid "Add extruder change - Left click" msgstr "Extruderwechsel hinzufügen - Linksklick" @@ -451,30 +508,30 @@ msgstr "Extruderwechsel hinzufügen - Linksklick" msgid "Add extruder to sequence" msgstr "Extruder zur Sequenz hinzufügen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1993 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2152 msgid "Add Generic Subobject" msgstr "Generische Subobjekt hinzufügen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2896 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2925 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2943 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3297 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3325 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3345 msgid "Add Height Range" msgstr "Höhenbereich hinzufügen" -#: src/slic3r/GUI/GLCanvas3D.cpp:4526 src/slic3r/GUI/Plater.cpp:3788 -#: src/slic3r/GUI/Plater.cpp:3800 src/slic3r/GUI/Plater.cpp:3940 +#: src/slic3r/GUI/GLCanvas3D.cpp:4892 src/slic3r/GUI/Plater.cpp:3708 +#: src/slic3r/GUI/Plater.cpp:3720 src/slic3r/GUI/Plater.cpp:3858 msgid "Add instance" msgstr "Kopie hinzufügen" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:159 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:153 msgid "Add Instance of the selected object" msgstr "Kopie des gewählten Objektes hinzufügen" -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:162 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:165 msgid "Add layer range" msgstr "Schichtbereich hinzufügen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2328 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2692 msgid "Add Layers" msgstr "Schichten hinzufügen" @@ -482,12 +539,12 @@ msgstr "Schichten hinzufügen" msgid "Add modifier" msgstr "Modifizierer hinzufügen" -#: src/libslic3r/PrintConfig.cpp:479 -#, no-c-format +#: src/libslic3r/PrintConfig.cpp:515 +#, c-format msgid "Add more perimeters when needed for avoiding gaps in sloping walls. Slic3r keeps adding perimeters, until more than 70% of the loop immediately above is supported." msgstr "Fügen Sie bei Bedarf weitere Perimeter hinzu, um Spalten in schrägen Wänden zu vermeiden. PrusaSlicer fügt immer wieder Perimeter hinzu, bis mehr als 70% der unmittelbar darüber liegenden Schleife unterstützt werden." -#: src/slic3r/GUI/Plater.cpp:3940 +#: src/slic3r/GUI/Plater.cpp:3858 msgid "Add one more instance of the selected object" msgstr "Eine weitere Kopie des gewählten Objekts hinzufügen" @@ -495,52 +552,61 @@ msgstr "Eine weitere Kopie des gewählten Objekts hinzufügen" msgid "Add part" msgstr "Teil hinzufügen" -#: src/slic3r/GUI/DoubleSlider.cpp:1487 +#: src/slic3r/GUI/DoubleSlider.cpp:1675 msgid "Add pause print" msgstr "Druckpause hinzufügen" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1363 +#: src/slic3r/GUI/PresetComboBoxes.cpp:627 +#: src/slic3r/GUI/PresetComboBoxes.cpp:674 +msgid "Add physical printer" +msgstr "Physischen Drucker hinzufügen" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1210 msgid "Add point" msgstr "Punkt hinzufügen" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1366 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1213 msgid "Add point to selection" msgstr "Punkt zur Auswahl hinzufügen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1509 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:180 +msgid "Add preset for this printer device" +msgstr "Voreinstellung für diesen Drucker hinzufügen" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1640 msgid "Add settings" msgstr "Einstellungen hinzufügen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1386 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1517 msgid "Add Settings Bundle for Height range" msgstr "Höhenbreich Einstellungsbündel hinzufügen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1388 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1519 msgid "Add Settings Bundle for Object" msgstr "Objekt Einstellungsbündel hinzufügen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1387 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1518 msgid "Add Settings Bundle for Sub-object" msgstr "Subobjekt Einstellungsbündel hinzufügen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1314 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1445 msgid "Add Settings for Layers" msgstr "Schichten Einstellungen hinzufügen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1316 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1447 msgid "Add Settings for Object" msgstr "Objekt Einstellungen hinzufügen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1315 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1446 msgid "Add Settings for Sub-object" msgstr "Subobjekt Einstellungen hinzufügen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1793 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2051 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1953 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2210 msgid "Add Shape" msgstr "Form hinzufügen" -#: src/libslic3r/PrintConfig.cpp:409 +#: src/libslic3r/PrintConfig.cpp:443 msgid "Add solid infill near sloping surfaces to guarantee the vertical shell thickness (top+bottom solid layers)." msgstr "Fügen Sie massives Infill in der Nähe von schrägen Flächen hinzu, um die vertikale Schalenstärke zu gewährleisten (obere und untere massive Schichten)." @@ -552,11 +618,19 @@ msgstr "Stützblocker hinzufügen" msgid "Add support enforcer" msgstr "Stützverstärker hinzufügen" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:494 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:374 msgid "Add support point" msgstr "Stützpunkt hinzufügen" -#: src/slic3r/GUI/GLCanvas3D.cpp:4467 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:371 +msgid "Add supports" +msgstr "Stützen hinzufügen" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:293 +msgid "Add supports by angle" +msgstr "Stützen nach Winkel hinzufügen" + +#: src/slic3r/GUI/GLCanvas3D.cpp:4833 msgid "Add..." msgstr "Hinzufügen..." @@ -564,23 +638,29 @@ msgstr "Hinzufügen..." msgid "Add/Remove filaments" msgstr "Filamente hinzufügen/entfernen" -#: src/slic3r/GUI/Preset.cpp:1201 +#: src/slic3r/GUI/PresetComboBoxes.cpp:813 msgid "Add/Remove materials" msgstr "Materialien hinzufügen/entfernen" -#: src/slic3r/GUI/Preset.cpp:1203 +#: src/slic3r/GUI/PresetComboBoxes.cpp:622 +#: src/slic3r/GUI/PresetComboBoxes.cpp:669 +msgid "Add/Remove presets" +msgstr "Voreinstellungen hinzufügen/entfernen" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:815 +#: src/slic3r/GUI/PresetComboBoxes.cpp:972 msgid "Add/Remove printers" msgstr "Drucker hinzufügen/entfernen" -#: src/slic3r/GUI/Tab.cpp:970 +#: src/slic3r/GUI/Tab.cpp:1288 msgid "Additional information:" msgstr "Weitere Informationen:" -#: src/slic3r/GUI/GUI_ObjectSettings.cpp:59 +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:62 msgid "Additional Settings" msgstr "Zusätzliche Einstellungen" -#: src/slic3r/GUI/ConfigWizard.cpp:791 +#: src/slic3r/GUI/ConfigWizard.cpp:1150 msgid "Additionally a backup snapshot of the whole configuration is created before an update is applied." msgstr "Zusätzlich wird eine Momentaufnahme der gesamten Konfiguration als Sicherung erstellt, bevor ein Update durchgeführt wird." @@ -588,23 +668,22 @@ msgstr "Zusätzlich wird eine Momentaufnahme der gesamten Konfiguration als Sich msgid "Address" msgstr "Adresse" -#: src/slic3r/GUI/GUI_App.cpp:814 src/slic3r/GUI/GUI_ObjectList.cpp:104 -#: src/slic3r/GUI/GUI_ObjectList.cpp:622 src/slic3r/GUI/Tab.cpp:1087 -#: src/slic3r/GUI/Tab.cpp:1102 src/slic3r/GUI/Tab.cpp:1201 -#: src/slic3r/GUI/Tab.cpp:1204 src/slic3r/GUI/Tab.cpp:1470 -#: src/slic3r/GUI/Tab.cpp:1967 src/slic3r/GUI/Tab.cpp:3661 -#: src/slic3r/GUI/wxExtensions.cpp:754 src/libslic3r/PrintConfig.cpp:88 -#: src/libslic3r/PrintConfig.cpp:119 src/libslic3r/PrintConfig.cpp:223 -#: src/libslic3r/PrintConfig.cpp:1037 src/libslic3r/PrintConfig.cpp:2276 -#: src/libslic3r/PrintConfig.cpp:2448 +#: src/slic3r/GUI/GUI_ObjectList.cpp:102 src/slic3r/GUI/GUI_ObjectList.cpp:661 +#: src/slic3r/GUI/Tab.cpp:1409 src/slic3r/GUI/Tab.cpp:1430 +#: src/slic3r/GUI/Tab.cpp:1531 src/slic3r/GUI/Tab.cpp:1534 +#: src/slic3r/GUI/Tab.cpp:1816 src/slic3r/GUI/Tab.cpp:2152 +#: src/slic3r/GUI/Tab.cpp:4080 src/libslic3r/PrintConfig.cpp:90 +#: src/libslic3r/PrintConfig.cpp:121 src/libslic3r/PrintConfig.cpp:257 +#: src/libslic3r/PrintConfig.cpp:1081 src/libslic3r/PrintConfig.cpp:2419 +#: src/libslic3r/PrintConfig.cpp:2591 msgid "Advanced" msgstr "Erweiterte Einstellungen" -#: src/slic3r/GUI/ConfigWizard.cpp:821 +#: src/slic3r/GUI/ConfigWizard.cpp:1180 msgid "Advanced mode" msgstr "Fortgeschrittener Modus" -#: src/slic3r/GUI/GUI_App.cpp:814 +#: src/slic3r/GUI/GUI_App.cpp:1506 msgid "Advanced View Mode" msgstr "Erweiterter Anzeigemodus" @@ -612,124 +691,140 @@ msgstr "Erweiterter Anzeigemodus" msgid "Advanced: Output log" msgstr "Fortgeschritten: Ausgabeprotokoll" -#: src/libslic3r/PrintConfig.cpp:668 +#: src/libslic3r/PrintConfig.cpp:704 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 stable. Before purging the print head into an infill or a sacrificial object, Slic3r will always prime this amount of material into the wipe tower to produce successive infill or sacrificial object extrusions reliably." msgstr "Nach einem Werkzeugwechsel ist die genaue Position des neu geladenen Filaments innerhalb der Düse möglicherweise nicht bekannt, und der Filamentdruck ist wahrscheinlich noch nicht stabil. Bevor der Druckkopf in eine Füllung oder ein Opferobjekt wischt, wird PrusaSlicer immer diese Materialmenge in den Wischturm leiten, um aufeinanderfolgende Füll- oder Opferobjekt-Extrusionen zuverlässig herzustellen." -#: src/slic3r/GUI/Tab.cpp:1994 src/libslic3r/PrintConfig.cpp:1080 +#: src/slic3r/GUI/Tab.cpp:2182 src/libslic3r/PrintConfig.cpp:1173 msgid "After layer change G-code" msgstr "G-Code am Schichtende" -#: src/libslic3r/PrintConfig.cpp:3398 +#: src/libslic3r/PrintConfig.cpp:3597 msgid "Align the model to the given point." msgstr "Das Modell auf den angegebenen Punkt ausrichten." -#: src/libslic3r/PrintConfig.cpp:3397 +#: src/libslic3r/PrintConfig.cpp:3596 msgid "Align XY" msgstr "Ausrichten von XY" -#: src/libslic3r/PrintConfig.cpp:1631 +#: src/libslic3r/PrintConfig.cpp:1739 msgid "Aligned" msgstr "Ausgerichtet" -#: src/slic3r/GUI/ConfigWizard.cpp:290 src/slic3r/GUI/ConfigWizard.cpp:573 -#: src/slic3r/GUI/Tab.cpp:3174 +#: src/slic3r/GUI/ConfigWizard.cpp:308 src/slic3r/GUI/ConfigWizard.cpp:598 +#: src/slic3r/GUI/Tab.cpp:3507 src/slic3r/GUI/UnsavedChangesDialog.cpp:921 msgid "All" msgstr "Alle" -#: src/libslic3r/Print.cpp:1219 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:197 +msgid "All gizmos: Rotate - left mouse button; Pan - right mouse button" +msgstr "Alles Gizmos: Drehen - linke Maustaste; Schwenken - rechte Maustaste" + +#: src/slic3r/GUI/ConfigWizard.cpp:694 +msgid "All installed printers are compatible with the selected filament." +msgstr "Alle installierten Drucker sind mit dem ausgewählten Filament kompatibel." + +#: src/libslic3r/Print.cpp:1245 msgid "All objects are outside of the print volume." msgstr "Alle Objekte befinden sich außerhalb des Druckraums." -#: src/slic3r/GUI/Plater.cpp:4669 +#: src/slic3r/GUI/Plater.cpp:4774 msgid "All objects will be removed, continue?" msgstr "Alle Objekte werden entfernt, fortfahren?" -#: src/slic3r/GUI/ConfigWizard.cpp:289 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:737 +msgid "All settings changes will be discarded." +msgstr "Alle Einstellungsänderungen werden verworfen." + +#: src/slic3r/GUI/ConfigWizard.cpp:307 msgid "All standard" msgstr "Alles standard" -#: src/libslic3r/Zipper.cpp:62 +#: src/libslic3r/miniz_extension.cpp:121 msgid "allocation failed" msgstr "Allokation fehlgeschlagen" -#: src/slic3r/GUI/Plater.cpp:3995 +#: src/slic3r/GUI/Plater.cpp:3915 msgid "Along X axis" msgstr "Entlang der X Achse" -#: src/slic3r/GUI/Plater.cpp:3997 +#: src/slic3r/GUI/Plater.cpp:3917 msgid "Along Y axis" msgstr "Entlang der Y Achse" -#: src/slic3r/GUI/Plater.cpp:3999 +#: src/slic3r/GUI/Plater.cpp:3919 msgid "Along Z axis" msgstr "Entlang der Z Achse" -#: src/slic3r/GUI/ConfigWizard.cpp:222 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:160 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:141 +msgid "Alt + Mouse wheel" +msgstr "Alt + Mausrad" + +#: src/slic3r/GUI/ConfigWizard.cpp:240 msgid "Alternate nozzles:" msgstr "Alternative Düsen:" -#: src/slic3r/GUI/Plater.cpp:5002 +#: src/slic3r/GUI/Preferences.cpp:163 +msgid "Always ask for unsaved changes when selecting new preset" +msgstr "Immer nach nicht gespeicherten Änderungen fragen, wenn eine neue Voreinstellung ausgewählt wird" + +#: src/slic3r/GUI/Plater.cpp:5135 #, c-format msgid "AMF file exported to %s" msgstr "AMF Datei exportiert nach %s" -#: src/slic3r/GUI/GLCanvas3D.cpp:690 +#: src/slic3r/GUI/GLCanvas3D.cpp:638 msgid "" -"An object outside the print area was detected\n" -"Resolve the current problem to continue slicing" +"An object outside the print area was detected.\n" +"Resolve the current problem to continue slicing." msgstr "" -"Ein Objekt außerhalb des Druckbereichs wurde erkannt.\n" -"Beheben Sie das aktuelle Problem, um mit dem Slicen fortzufahren" +"Es wurde ein Objekt außerhalb des Druckbereichs erkannt.\n" +"Das Problem lösen, um mit dem Slicen fortzufahren." -#: src/slic3r/GUI/GLCanvas3D.cpp:685 -msgid "An object outside the print area was detected" -msgstr "Ein Objekt außerhalb des Druckbereichs wurde erkannt" +#: src/slic3r/GUI/GLCanvas3D.cpp:633 +msgid "An object outside the print area was detected." +msgstr "Es wurde ein Objekt außerhalb des Druckbereichs erkannt." -#: src/slic3r/GUI/Tab.cpp:2943 -msgid "and it has the following unsaved changes:" -msgstr "und hat die folgenden ungesicherten Änderungen:" - -#: src/slic3r/GUI/Plater.cpp:3170 +#: src/slic3r/GUI/Plater.cpp:2972 msgid "Another export job is currently running." msgstr "Ein anderer Exportjob läuft zurzeit." -#: src/slic3r/GUI/KBShortcutsDialog.cpp:168 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:169 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:162 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:163 msgid "Any arrow" msgstr "Jeder Pfeil" -#: src/slic3r/GUI/Tab.cpp:965 +#: src/slic3r/GUI/Tab.cpp:1283 msgid "Any modifications should be saved as a new preset inherited from this one." msgstr "Alle Änderungen sollten als neue Voreinstellungen gespeichert werden, die von diesem vererbt wurden." -#: src/libslic3r/PrintConfig.cpp:104 +#: src/libslic3r/PrintConfig.cpp:106 msgid "API Key / Password" msgstr "API Key / Kennwort" -#: src/slic3r/GUI/GUI_App.cpp:810 +#: src/slic3r/GUI/GUI_App.cpp:1493 msgid "Application preferences" msgstr "Anwendungseinstellungen" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:52 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1374 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:51 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1221 msgid "Apply changes" msgstr "Änderungen anwenden" -#: src/libslic3r/PrintConfig.cpp:575 src/libslic3r/PrintConfig.cpp:1708 +#: src/libslic3r/PrintConfig.cpp:611 src/libslic3r/PrintConfig.cpp:1823 msgid "approximate seconds" msgstr "ungefähre Sekunden" -#: src/libslic3r/PrintConfig.cpp:428 src/libslic3r/PrintConfig.cpp:854 +#: src/libslic3r/PrintConfig.cpp:464 src/libslic3r/PrintConfig.cpp:892 msgid "Archimedean Chords" msgstr "Archimedische Bögen" -#: src/libslic3r/Zipper.cpp:88 +#: src/libslic3r/miniz_extension.cpp:147 msgid "archive is too large" msgstr "Archiv ist zu groß" -#. TRN remove/delete -#: src/slic3r/GUI/Tab.cpp:3123 +#: src/slic3r/GUI/Tab.cpp:3420 msgid "Are you sure you want to %1% the selected preset?" msgstr "Sind Sie sicher, dass Sie die gewählte Voreinstellung %1% möchten?" @@ -739,97 +834,125 @@ msgid "" "This could leave your printer in an unusable state!" msgstr "Sind Sie sicher, dass Sie das Flashen der Firmware abbrechen wollen? Dies könnte Ihren Drucker in einen unbrauchbaren Zustand versetzen!" -#: src/slic3r/GUI/DoubleSlider.cpp:1903 src/slic3r/GUI/DoubleSlider.cpp:1924 +#: src/slic3r/GUI/DoubleSlider.cpp:2122 src/slic3r/GUI/DoubleSlider.cpp:2142 msgid "Are you sure you want to continue?" msgstr "Sind Sie sicher, dass Sie weitermachen wollen?" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1269 +#: src/slic3r/GUI/Tab.cpp:3392 +msgid "Are you sure you want to delete \"%1%\" preset from the physical printer \"%2%\"?" +msgstr "Sind Sie sicher, dass Sie die Voreinstellung \"%1%\" des physischen Drucker \"%2%\" löschen möchten?" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:658 +msgid "Are you sure you want to delete \"%1%\" printer?" +msgstr "Sind Sie sicher, dass Sie den Drucker \"%1%\" löschen möchten?" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1128 msgid "Are you sure you want to do it?" msgstr "Sind Sie sicher, dass Sie es tun wollen?" -#: src/libslic3r/PrintConfig.cpp:2423 +#: src/libslic3r/PrintConfig.cpp:2566 msgid "Area fill" msgstr "Bereichsfüllung" -#: src/slic3r/GUI/Plater.cpp:641 +#: src/slic3r/GUI/Plater.cpp:507 msgid "Around object" msgstr "Um das Objekt" -#: src/slic3r/GUI/GLCanvas3D.cpp:4493 src/slic3r/GUI/KBShortcutsDialog.cpp:157 -#: src/slic3r/GUI/Plater.cpp:2754 +#: src/slic3r/GUI/GLCanvas3D.cpp:4859 src/slic3r/GUI/KBShortcutsDialog.cpp:151 +#: src/slic3r/GUI/Plater.cpp:1549 msgid "Arrange" msgstr "Anordnen" -#: src/slic3r/GUI/GLCanvas3D.cpp:4493 src/slic3r/GUI/KBShortcutsDialog.cpp:158 +#: src/slic3r/GUI/GLCanvas3D.cpp:4859 src/slic3r/GUI/KBShortcutsDialog.cpp:152 msgid "Arrange selection" msgstr "Auswahl anordnen" -#: src/libslic3r/PrintConfig.cpp:3443 +#: src/libslic3r/PrintConfig.cpp:3642 msgid "Arrange the supplied models in a plate and merge them in a single model in order to perform actions once." msgstr "Die zur Verfügung stehenden Modelle in einer Platte anordnen und zu einem einzigen Modell zusammenführen, um Aktionen zusammen durchführen zu können." -#: src/slic3r/GUI/Plater.cpp:2813 +#: src/slic3r/GUI/Jobs/ArrangeJob.cpp:149 msgid "Arranging" msgstr "Anordnen" -#: src/slic3r/GUI/Plater.cpp:2841 +#: src/slic3r/GUI/Jobs/ArrangeJob.cpp:182 msgid "Arranging canceled." msgstr "Anordnen abgebrochen." -#: src/slic3r/GUI/Plater.cpp:2842 +#: src/slic3r/GUI/Jobs/ArrangeJob.cpp:183 msgid "Arranging done." msgstr "Anordnung beendet." -#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:215 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:159 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:206 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 msgid "Arrow Down" msgstr "Pfeil runter" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:166 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:160 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:217 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:229 msgid "Arrow Left" msgstr "Pfeil links" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:167 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:217 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:161 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:218 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:230 msgid "Arrow Right" msgstr "Pfeil rechts" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:204 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:214 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:158 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:215 msgid "Arrow Up" msgstr "Pfeil hoch" -#: src/slic3r/GUI/GLCanvas3DManager.cpp:290 +#: src/slic3r/GUI/GUI_App.cpp:246 +msgid "Artwork model by Nora Al-Badri and Jan Nikolai Nelles" +msgstr "Artwork-Modell von Nora Al-Badri und Jan Nikolai Nelles" + +#: src/slic3r/GUI/OpenGLManager.cpp:265 msgid "As a workaround, you may run PrusaSlicer with a software rendered 3D graphics by running prusa-slicer.exe with the --sw_renderer parameter." msgstr "Als Workaround können Sie PrusaSlicer mit einer software-gerenderten 3D-Grafik ausführen, indem Sie prusa-slicer.exe mit dem Parameter --sw_renderer ausführen." -#: src/slic3r/GUI/GUI_App.cpp:1086 src/slic3r/GUI/Plater.cpp:2313 -#: src/slic3r/GUI/Tab.cpp:2960 +#: src/slic3r/GUI/Preferences.cpp:154 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:659 +msgid "Ask for unsaved changes when closing application" +msgstr "Beim Schließen der Anwendung nach ungespeicherten Änderungen fragen" + +#: src/slic3r/GUI/Preferences.cpp:161 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:660 +msgid "Ask for unsaved changes when selecting new preset" +msgstr "Nach nicht gespeicherten Änderungen fragen, wenn eine neue Voreinstellung ausgewählt wird" + +#: src/slic3r/GUI/GUI_App.cpp:1878 src/slic3r/GUI/Jobs/SLAImportJob.cpp:210 +#: src/slic3r/GUI/Plater.cpp:2256 src/slic3r/GUI/Tab.cpp:3189 msgid "Attention!" msgstr "Achtung!" -#: src/libslic3r/PrintConfig.cpp:1871 +#: src/libslic3r/PrintConfig.cpp:150 +msgid "Authorization Type" +msgstr "Autorisierungs-Typ" + +#: src/libslic3r/PrintConfig.cpp:2013 msgid "Auto generated supports" msgstr "Stützstrukturen automatisch generieren" -#: src/slic3r/GUI/Preferences.cpp:47 +#: src/slic3r/GUI/Preferences.cpp:64 msgid "Auto-center parts" msgstr "Teile automatisch zentrieren" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:56 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1377 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:55 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1224 msgid "Auto-generate points" msgstr "Punkte automatisch generieren" -#: src/slic3r/GUI/Plater.cpp:1157 +#: src/slic3r/GUI/Plater.cpp:1066 #, c-format msgid "Auto-repaired (%d errors)" msgstr "Auto-Reparatur (%d Fehler)" -#: src/slic3r/GUI/GUI_ObjectList.cpp:339 +#: src/slic3r/GUI/GUI_ObjectList.cpp:386 #, c-format msgid "Auto-repaired (%d errors):" msgstr "Auto-Reparatur (%d Fehler):" @@ -838,45 +961,53 @@ msgstr "Auto-Reparatur (%d Fehler):" msgid "Autodetected" msgstr "Automatisch erkannt" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1273 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1134 msgid "Autogenerate support points" msgstr "Stützpunkte automatisch generieren" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1268 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1127 msgid "Autogeneration will erase all manually edited points." msgstr "Die automatische Generierung löscht alle manuell bearbeiteten Punkte." -#: src/slic3r/GUI/Tab.cpp:3632 +#: src/slic3r/GUI/Tab.cpp:4051 msgid "Automatic generation" msgstr "Automatische Erzeugung" -#: src/slic3r/GUI/ConfigWizard.cpp:761 +#: src/slic3r/GUI/ConfigWizard.cpp:1120 msgid "Automatic updates" msgstr "Automatische Updates" -#: src/slic3r/GUI/MainFrame.cpp:536 +#: src/slic3r/GUI/MainFrame.cpp:1137 msgid "Automatically repair an STL file" msgstr "Repariere automatisch die STL Datei" -#: src/slic3r/GUI/Tab.cpp:1171 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:129 +msgid "Autoset by angle" +msgstr "Automatisch setzen nach Winkel" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:233 +msgid "Autoset custom supports" +msgstr "Automatische benutzerdefinierte Stützen" + +#: src/slic3r/GUI/Tab.cpp:1501 msgid "Autospeed (advanced)" msgstr "Automatische Geschwindigkeit (fortgeschritten)" -#: src/libslic3r/PrintConfig.cpp:136 +#: src/libslic3r/PrintConfig.cpp:169 msgid "Avoid crossing perimeters" msgstr "Kreuzen der Kontur vermeiden" -#: src/slic3r/GUI/Tab.cpp:3268 +#: src/slic3r/GUI/Tab.cpp:3705 msgid "BACK ARROW" msgstr "PFEIL ZURÜCK" -#: src/slic3r/GUI/Tab.cpp:3290 +#: src/slic3r/GUI/Tab.cpp:3727 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" "Click to reset all settings for the current option group to the last saved preset." msgstr "Das Symbol PFEIL ZURÜCK zeigt an, dass die Einstellungen geändert wurden und nicht mit dem zuletzt gespeicherten Preset für die aktuelle Optionsgruppe übereinstimmen. Klicken Sie hier, um alle Einstellungen für die aktuelle Optionsgruppe auf das zuletzt gespeicherte Preset zurückzusetzen." -#: src/slic3r/GUI/Tab.cpp:3304 +#: src/slic3r/GUI/Tab.cpp:3741 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." @@ -884,19 +1015,23 @@ msgstr "" "Das Symbol PFEIL ZURÜCK zeigt an, dass der Wert geändert wurde und nicht mit dem zuletzt gespeicherten Preset übereinstimmt. \n" "Klicken Sie, um den aktuellen Wert auf das zuletzt gespeicherte Preset zurückzusetzen." -#: src/slic3r/GUI/Preferences.cpp:55 +#: src/slic3r/GUI/Preferences.cpp:72 msgid "Background processing" msgstr "Hintergrundberechnung" -#: src/slic3r/GUI/GUI_ObjectList.cpp:351 +#: src/slic3r/GUI/GUI_ObjectList.cpp:398 msgid "backwards edges" msgstr "umgekehrte Kanten" -#: src/slic3r/GUI/MainFrame.cpp:174 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:60 +msgid "Balanced" +msgstr "Balanziert" + +#: src/slic3r/GUI/MainFrame.cpp:535 src/slic3r/GUI/MainFrame.cpp:537 msgid "based on Slic3r" msgstr "basiert auf Slic3r" -#: src/slic3r/GUI/Tab.cpp:1439 +#: src/slic3r/GUI/Tab.cpp:1785 msgid "Bed" msgstr "Druckbett" @@ -908,31 +1043,31 @@ msgstr "Druckbett individuelles Modell" msgid "Bed custom texture" msgstr "Druckbett individuelle Textur" -#: src/slic3r/GUI/BedShapeDialog.hpp:59 src/slic3r/GUI/ConfigWizard.cpp:929 +#: src/slic3r/GUI/BedShapeDialog.hpp:98 src/slic3r/GUI/ConfigWizard.cpp:1295 msgid "Bed Shape" -msgstr "Druckbrettprofil" +msgstr "Druckbettprofil" #: src/libslic3r/PrintConfig.cpp:51 msgid "Bed shape" msgstr "Druckbettkontur" -#: src/slic3r/GUI/ConfigWizard.cpp:929 +#: src/slic3r/GUI/ConfigWizard.cpp:1295 msgid "Bed Shape and Size" msgstr "Druckbettform und -größe" -#: src/libslic3r/PrintConfig.cpp:147 +#: src/libslic3r/PrintConfig.cpp:181 msgid "Bed temperature" msgstr "Druckbetttemperatur" -#: src/libslic3r/PrintConfig.cpp:145 +#: src/libslic3r/PrintConfig.cpp:178 msgid "Bed temperature for layers after the first one. Set this to zero to disable bed temperature control commands in the output." msgstr "Druckbetttemperatur für Schichten nach der ersten Schicht. Setzen Sie diesen Wert auf null, um die Befehle zur Steuerung der Betttemperatur im Output zu deaktivieren." -#: src/slic3r/GUI/ConfigWizard.cpp:1051 +#: src/slic3r/GUI/ConfigWizard.cpp:1417 msgid "Bed Temperature:" msgstr "Druckbetttemperatur:" -#: src/slic3r/GUI/Tab.cpp:1988 src/libslic3r/PrintConfig.cpp:153 +#: src/slic3r/GUI/Tab.cpp:2175 src/libslic3r/PrintConfig.cpp:187 msgid "Before layer change G-code" msgstr "G-Code vor dem Schichtwechsel" @@ -940,143 +1075,191 @@ msgstr "G-Code vor dem Schichtwechsel" msgid "Before roll back" msgstr "Vor dem Zurückwechseln" -#: src/slic3r/GUI/Plater.cpp:640 +#: src/slic3r/GUI/Plater.cpp:506 msgid "Below object" msgstr "Unter dem Objekt" -#: src/libslic3r/PrintConfig.cpp:1578 +#: src/libslic3r/PrintConfig.cpp:1686 msgid "Below Z" msgstr "Unter Z" -#: src/libslic3r/PrintConfig.cpp:164 +#: src/libslic3r/PrintConfig.cpp:198 msgid "Between objects G-code" msgstr "G-Code zwischen Objekten" -#: src/slic3r/GUI/Tab.cpp:2006 +#: src/slic3r/GUI/Tab.cpp:2196 msgid "Between objects G-code (for sequential printing)" msgstr "G-Code zwischen Objekten (Sequentielles Drucken)" -#: src/libslic3r/PrintConfig.cpp:2489 src/libslic3r/PrintConfig.cpp:2490 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:242 +msgid "Block" +msgstr "Blockieren" + +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:32 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:383 +msgid "Block seam" +msgstr "Naht blockieren" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:373 +msgid "Block supports" +msgstr "Stützen blockieren" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:292 +msgid "Block supports by angle" +msgstr "Stützen nach Winkel blockieren" + +#: src/libslic3r/PrintConfig.cpp:2632 src/libslic3r/PrintConfig.cpp:2633 msgid "Bottle volume" msgstr "Flaschenvolumen" -#: src/libslic3r/PrintConfig.cpp:2496 src/libslic3r/PrintConfig.cpp:2497 +#: src/libslic3r/PrintConfig.cpp:2639 src/libslic3r/PrintConfig.cpp:2640 msgid "Bottle weight" msgstr "Flaschengewicht" #. 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:665 src/libslic3r/PrintConfig.cpp:174 -#: src/libslic3r/PrintConfig.cpp:183 +#: src/slic3r/GUI/MainFrame.cpp:962 src/slic3r/GUI/MainFrame.cpp:1282 +#: src/libslic3r/PrintConfig.cpp:208 src/libslic3r/PrintConfig.cpp:217 msgid "Bottom" msgstr "Unten" -#: src/libslic3r/PrintConfig.cpp:435 +#: src/libslic3r/PrintConfig.cpp:471 msgid "Bottom fill pattern" msgstr "Bodenfüllmuster" -#: src/slic3r/GUI/PresetHints.cpp:342 +#: src/slic3r/GUI/PresetHints.cpp:340 msgid "Bottom is open." msgstr "Boden ist offen." -#: src/slic3r/GUI/PresetHints.cpp:336 +#: src/slic3r/GUI/PresetHints.cpp:334 msgid "Bottom shell is %1% mm thick for layer height %2% mm." msgstr "Die Bodenschale ist %1% mm stark für eine Schichthöhe von %2% mm." -#: src/libslic3r/PrintConfig.cpp:177 +#: src/libslic3r/PrintConfig.cpp:211 msgid "Bottom solid layers" msgstr "Massive Basisschichten" -#: src/slic3r/GUI/MainFrame.cpp:665 +#: src/slic3r/GUI/MainFrame.cpp:962 src/slic3r/GUI/MainFrame.cpp:1282 msgid "Bottom View" msgstr "Ansicht von unten" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1432 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1464 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1468 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1563 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1595 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1599 msgid "Box" msgstr "Kubus" -#: src/libslic3r/PrintConfig.cpp:193 +#: src/libslic3r/PrintConfig.cpp:227 msgid "Bridge" msgstr "Überbrückung" -#: src/libslic3r/PrintConfig.cpp:222 +#: src/libslic3r/PrintConfig.cpp:256 msgid "Bridge flow ratio" msgstr "Brückenflussverhältnis" -#: src/slic3r/GUI/GUI_Preview.cpp:243 src/libslic3r/ExtrusionEntity.cpp:316 +#: src/slic3r/GUI/GUI_Preview.cpp:308 src/libslic3r/ExtrusionEntity.cpp:321 +#: src/libslic3r/ExtrusionEntity.cpp:350 msgid "Bridge infill" msgstr "Überbrückungs-Infill" -#: src/libslic3r/PrintConfig.cpp:234 +#: src/libslic3r/PrintConfig.cpp:268 msgid "Bridges" msgstr "Überbrückungen" -#: src/libslic3r/PrintConfig.cpp:213 +#: src/libslic3r/PrintConfig.cpp:247 msgid "Bridges fan speed" msgstr "Brückenlüftergeschwindigkeit" -#: src/libslic3r/PrintConfig.cpp:202 +#: src/libslic3r/PrintConfig.cpp:236 msgid "Bridging angle" msgstr "Überbrückungswinkel" -#: src/libslic3r/PrintConfig.cpp:204 +#: 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 "Überbrückungswinkel Übersteuerung. Wird der Wert auf null gesetzt, wird der Überbrückungswinkel automatisch berechnet. Andernfalls wird der angegebene Winkel für alle Brücken verwendet. Verwenden Sie 180° für den Nullwinkel." -#: src/slic3r/GUI/PresetHints.cpp:219 +#: src/slic3r/GUI/PresetHints.cpp:218 msgid "Bridging volumetric" msgstr "Überbrückungvolumen" -#: src/slic3r/GUI/Plater.cpp:534 src/slic3r/GUI/Tab.cpp:1117 +#: src/slic3r/GUI/Plater.cpp:400 src/slic3r/GUI/Tab.cpp:1446 msgid "Brim" msgstr "Rand" -#: src/libslic3r/PrintConfig.cpp:244 +#: src/libslic3r/PrintConfig.cpp:278 msgid "Brim width" msgstr "Randbreite" -#: src/slic3r/GUI/FirmwareDialog.cpp:805 src/slic3r/GUI/Tab.cpp:1658 -#: src/slic3r/GUI/Tab.cpp:1721 +#: src/slic3r/GUI/FirmwareDialog.cpp:805 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:271 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:327 msgid "Browse" msgstr "Suchen" -#: src/libslic3r/Zipper.cpp:82 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:45 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:28 +msgid "Brush shape" +msgstr "Pinselform" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:44 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:27 +msgid "Brush size" +msgstr "Pinselgröße" + +#: src/libslic3r/miniz_extension.cpp:141 msgid "buffer too small" msgstr "Puffer zu klein" +#: src/slic3r/GUI/GUI_App.cpp:1152 +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 "" +"Seit dieser Version von PrusaSlicer zeigen wir diese Informationen nicht mehr in den Druckereinstellungen an.\n" +"Die Einstellungen sind in den Einstellungen für physische Drucker verfügbar." + #: src/slic3r/GUI/ButtonsDescription.cpp:16 msgid "Buttons And Text Colors Description" msgstr "Schaltflächen und Textfarben Beschreibung" -#: src/slic3r/GUI/PresetHints.cpp:223 +#: src/slic3r/GUI/GUI_App.cpp:1084 +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 "" +"Standardmäßig werden neue Drucker bei ihrer Erstellung als \"Drucker N\" bezeichnet.\n" +"Hinweis: Dieser Name kann später über die Einstellungen für physische Drucker geändert werden." + +#: src/slic3r/GUI/PresetHints.cpp:222 msgid "by the print profile maximum" msgstr "mit dem Maximum des Druckerprofils" -#: src/slic3r/GUI/Preferences.cpp:113 +#: src/slic3r/GUI/Preferences.cpp:178 msgid "Camera" msgstr "Kamera" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:144 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:140 msgid "Camera view" msgstr "Kameraansicht" -#: src/slic3r/GUI/ConfigWizard.cpp:1982 src/slic3r/GUI/FirmwareDialog.cpp:151 +#: src/slic3r/GUI/ConfigWizard.cpp:2493 src/slic3r/GUI/FirmwareDialog.cpp:151 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:245 #: src/slic3r/GUI/ProgressStatusBar.cpp:26 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:644 msgid "Cancel" msgstr "Abbrechen" -#: src/slic3r/GUI/PrintHostDialogs.cpp:157 +#: src/slic3r/GUI/PrintHostDialogs.cpp:155 msgid "Cancel selected" msgstr "Abbruch ausgewählt" -#: src/slic3r/GUI/Plater.cpp:3669 src/slic3r/GUI/PrintHostDialogs.cpp:233 +#: src/slic3r/GUI/Plater.cpp:3589 src/slic3r/GUI/PrintHostDialogs.cpp:233 msgid "Cancelled" msgstr "Abgebrochen" -#: src/slic3r/GUI/Plater.cpp:3153 src/slic3r/GUI/PrintHostDialogs.cpp:232 +#: src/slic3r/GUI/Plater.cpp:2953 src/slic3r/GUI/PrintHostDialogs.cpp:232 msgid "Cancelling" msgstr "Abbrechen" @@ -1088,7 +1271,7 @@ msgstr "Abbrechen..." msgid "Cannot calculate extrusion width for %1%: Variable \"%2%\" not accessible." msgstr "Kann die Extrusionsbreite für %1% nicht berechnen: Variable \"%2%\" nicht zugänglich." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3017 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3400 msgid "" "Cannot insert a new layer range after the current layer range.\n" "Current layer range overlaps with the next layer range." @@ -1096,7 +1279,7 @@ msgstr "" "Es kann kein neuer Schichtenbereich nach dem aktuellen Schichtenbereich eingefügt werden.\n" "Der aktuelle Schichtenbereich überschneidet sich mit dem nächsten Schichtenbereich." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3008 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3391 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" @@ -1105,7 +1288,7 @@ msgstr "" "Es kann kein neuer Schichtenbereich nach dem aktuellen Schichtenbereich eingefügt werden.\n" "Der nächste Schichtenbereich ist zu schmal, um auf zwei Schichten aufgeteilt zu werden ohne die Mindestschichthöhe zu verletzen." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3012 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3395 msgid "" "Cannot insert a new layer range between the current and the next layer range.\n" "The gap between the current layer range and the next layer range\n" @@ -1114,80 +1297,88 @@ msgstr "" "Es kann kein neuer Schichtenbereich zwischen dem aktuellen und dem nächsten Schichtenbereich eingefügt werden.\n" "Die Lücke zwischen dem aktuellen und dem nächsten Schichtenbereich ist ist schmaler als die minimal zulässige Schichthöhe." -#: src/slic3r/GUI/Tab.cpp:3073 +#: src/slic3r/GUI/SavePresetDialog.cpp:137 msgid "Cannot overwrite a system profile." msgstr "Systemprofil kann nicht überschrieben werden." -#: src/slic3r/GUI/Tab.cpp:3077 +#: src/slic3r/GUI/SavePresetDialog.cpp:142 msgid "Cannot overwrite an external profile." msgstr "Ein externes Profil kann nicht überschrieben werden." -#: src/libslic3r/SLAPrint.cpp:613 +#: src/libslic3r/SLAPrint.cpp:627 msgid "Cannot proceed without support points! Add support points or disable support generation." msgstr "Ohne Stützpunkte kann nicht weitergearbeitet werden! Fügen Sie Stützpunkte hinzu oder deaktivieren Sie die Stützstruktur-Generierung." -#: src/slic3r/GUI/Tab.cpp:1834 +#: src/slic3r/GUI/Tab.cpp:2068 src/slic3r/GUI/UnsavedChangesDialog.cpp:1066 msgid "Capabilities" msgstr "Fähigkeiten" -#: src/slic3r/GUI/GUI_App.cpp:801 +#: src/slic3r/GUI/GUI_App.cpp:1481 msgid "Capture a configuration snapshot" msgstr "Erfassen einer Konfigurations-Momentaufnahme" -#: src/libslic3r/PrintConfig.cpp:3424 +#: src/slic3r/GUI/ImGuiWrapper.cpp:801 src/slic3r/GUI/Search.cpp:458 +msgid "Category" +msgstr "Kategorie" + +#: src/libslic3r/PrintConfig.cpp:3623 msgid "Center" msgstr "Mitte" -#: src/libslic3r/PrintConfig.cpp:3425 +#: src/libslic3r/PrintConfig.cpp:3624 msgid "Center the print around the given center." msgstr "Zentriert den Druck um den angegebenen Mittelpunkt." -#: src/slic3r/GUI/Tab.cpp:1728 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:329 msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" msgstr "Zertifikatsdatei (*.crt, *.pem)|*.crt;*.pem|alle Dateien|*.*" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:180 +#: src/slic3r/GUI/SavePresetDialog.cpp:313 +msgid "Change \"%1%\" to \"%2%\" for this physical printer \"%3%\"" +msgstr "\"%1%\" in \"%2%\" für den physischen Drucker \"%3%\" ändern." + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:174 msgid "Change camera type (perspective, orthographic)" msgstr "Ändern des Kameratyps (perspektivisch, orthografisch)" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:885 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:693 msgid "Change drainage hole diameter" msgstr "Durchmesser des Drainagelochs ändern" -#: src/slic3r/GUI/DoubleSlider.cpp:1144 src/slic3r/GUI/GUI_ObjectList.cpp:1671 +#: src/slic3r/GUI/DoubleSlider.cpp:1273 src/slic3r/GUI/GUI_ObjectList.cpp:1800 msgid "Change extruder" msgstr "Wechsel Extruder" -#: src/slic3r/GUI/GUI_ObjectList.cpp:536 +#: src/slic3r/GUI/GUI_ObjectList.cpp:574 msgid "Change Extruder" msgstr "Wechsel Extruder" -#: src/slic3r/GUI/DoubleSlider.cpp:1145 +#: src/slic3r/GUI/DoubleSlider.cpp:1274 msgid "Change extruder (N/A)" msgstr "Extruder wechseln (nv)" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3997 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4484 msgid "Change Extruders" msgstr "Wechsel Extruder" -#: src/slic3r/GUI/GUI_ObjectSettings.cpp:152 +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:157 #, c-format msgid "Change Option %s" msgstr "Ändere Option %s" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3558 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4021 msgid "Change Part Type" msgstr "Teil Typ ändern" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:820 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:694 msgid "Change point head diameter" msgstr "Ändern des Stützpunkt-Kopfdurchmessers" -#: src/slic3r/GUI/Plater.cpp:3944 +#: src/slic3r/GUI/Plater.cpp:3862 msgid "Change the number of instances of the selected object" msgstr "Anzahl der Kopien des gewählten Objektes ändern" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1589 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1718 msgid "Change type" msgstr "Typ ändern" @@ -1195,125 +1386,172 @@ msgstr "Typ ändern" msgid "Changelog && Download" msgstr "Changelog && Download" -#: src/slic3r/GUI/GUI_App.cpp:442 +#: src/slic3r/GUI/GUI_App.cpp:1245 msgid "Changing of an application language" msgstr "Wechsele die Anwendungssprache" -#: src/slic3r/GUI/ConfigWizard.cpp:769 src/slic3r/GUI/Preferences.cpp:64 +#: src/slic3r/GUI/ConfigWizard.cpp:1128 src/slic3r/GUI/Preferences.cpp:81 msgid "Check for application updates" msgstr "Nach Updates suchen" -#: src/slic3r/GUI/GUI_App.cpp:802 +#: src/slic3r/GUI/GUI_App.cpp:1482 msgid "Check for configuration updates" msgstr "Suche nach Konfigurationsaktualisierungen" -#: src/slic3r/GUI/GUI_App.cpp:802 +#: src/slic3r/GUI/GUI_App.cpp:1482 msgid "Check for updates" msgstr "Nach &Updates suchen" -#: src/slic3r/GUI/BedShapeDialog.cpp:532 +#: 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):" -#: src/slic3r/GUI/MainFrame.cpp:773 +#: src/slic3r/GUI/MainFrame.cpp:1474 msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" msgstr "Wählen Sie eine Datei zum Slicen (STL/OBJ/AMF/3MF/PRUSA):" -#: src/slic3r/GUI/BedShapeDialog.cpp:555 +#: src/slic3r/GUI/BedShapeDialog.cpp:631 msgid "Choose an STL file to import bed model from:" msgstr "Wählen Sie eine STL-Datei aus, aus der Sie das Druckbettmodell importieren möchten:" -#: src/slic3r/GUI/BedShapeDialog.cpp:487 +#: src/slic3r/GUI/BedShapeDialog.cpp:563 msgid "Choose an STL file to import bed shape from:" msgstr "Wählen Sie eine STL-Datei aus, aus der Sie die Druckbettform importieren möchten:" -#: src/slic3r/GUI/GUI_App.cpp:555 +#: src/slic3r/GUI/GUI_App.cpp:1208 msgid "Choose one file (3MF/AMF):" msgstr "Wählen Sie eine Datei (3MF/AMF):" -#: src/slic3r/GUI/GUI_App.cpp:567 +#: src/slic3r/GUI/GUI_App.cpp:1233 +msgid "Choose one file (GCODE/.GCO/.G/.ngc/NGC):" +msgstr "Datei auswählen (GCODE/.GCO/.G/.ngc/NGC):" + +#: src/slic3r/GUI/GUI_App.cpp:1220 msgid "Choose one or more files (STL/OBJ/AMF/3MF/PRUSA):" msgstr "Wählen Sie eine oder mehrere Dateien (STL/OBJ/AMF/3MF/PRUSA):" -#: src/slic3r/GUI/ConfigWizard.cpp:895 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:35 +msgid "Choose SLA archive:" +msgstr "SLA Archiv wählen:" + +#: src/slic3r/GUI/ConfigWizard.cpp:1261 msgid "Choose the type of firmware used by your printer." msgstr "Wählen Sie den Typ der von Ihrem Drucker verwendeten Firmware." -#: src/slic3r/GUI/BedShapeDialog.cpp:89 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:53 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:36 +msgid "Circle" +msgstr "Kreis" + +#: src/slic3r/GUI/BedShapeDialog.cpp:142 msgid "Circular" msgstr "Kreisförmig" -#: src/slic3r/GUI/GLCanvas3D.cpp:4624 src/slic3r/GUI/GLCanvas3D.cpp:4657 -msgid "Click right mouse button to open History" -msgstr "Klicken Sie mit der rechten Maustaste, um den Verlauf zu öffnen" +#: 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" -#: src/slic3r/GUI/GUI_ObjectList.cpp:404 +#: src/slic3r/GUI/GUI_ObjectList.cpp:451 msgid "Click the icon to change the object printable property" msgstr "Klicken Sie auf das Symbol, um die Druckbar-Eigenschaft des Objekts zu ändern" -#: src/slic3r/GUI/GUI_ObjectList.cpp:398 +#: src/slic3r/GUI/GUI_ObjectList.cpp:445 msgid "Click the icon to change the object settings" msgstr "Klicken Sie auf das Symbol, um die Objekteinstellungen zu ändern" -#: src/slic3r/GUI/Plater.cpp:343 +#: src/slic3r/GUI/PresetComboBoxes.cpp:566 msgid "Click to edit preset" msgstr "Klicken zum Bearbeiten der Voreinstellung" -#: src/libslic3r/PrintConfig.cpp:252 +#: src/slic3r/GUI/GCodeViewer.cpp:2071 +msgid "Click to hide" +msgstr "Klicken zum Ausblenden" + +#: src/slic3r/GUI/GCodeViewer.cpp:2071 +msgid "Click to show" +msgstr "Klicken zum Anzeigen" + +#: src/libslic3r/PrintConfig.cpp:286 msgid "Clip multi-part objects" msgstr "Beschneiden von Objekten aus mehreren Teilen" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:50 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:58 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:42 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:25 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:57 msgid "Clipping of view" msgstr "Ausschnitt der Ansicht" #: src/slic3r/GUI/FirmwareDialog.cpp:852 -#: src/slic3r/GUI/Mouse3DController.cpp:364 -#: src/slic3r/GUI/PrintHostDialogs.cpp:161 +#: src/slic3r/GUI/Mouse3DController.cpp:353 +#: src/slic3r/GUI/PrintHostDialogs.cpp:159 msgid "Close" msgstr "Schließen" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:45 -#: src/libslic3r/PrintConfig.cpp:2934 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:44 +#: src/libslic3r/PrintConfig.cpp:3098 msgid "Closing distance" msgstr "Schliessabstand" -#: src/slic3r/GUI/Plater.cpp:1260 src/libslic3r/PrintConfig.cpp:582 +#: src/slic3r/GUI/MainFrame.cpp:1297 src/slic3r/GUI/Plater.cpp:2144 +msgid "Collapse sidebar" +msgstr "Seitenleiste zuklappen" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:180 +msgid "Collapse/Expand the sidebar" +msgstr "Seitenleiste zu-/ausklappen" + +#: src/slic3r/GUI/Plater.cpp:1198 src/libslic3r/PrintConfig.cpp:618 msgid "Color" msgstr "Farbe" -#: src/slic3r/GUI/DoubleSlider.cpp:1005 +#: src/slic3r/GUI/GCodeViewer.cpp:2410 src/slic3r/GUI/GCodeViewer.cpp:2438 +msgid "Color change" +msgstr "Farbwechsel" + +#: src/slic3r/GUI/DoubleSlider.cpp:1130 msgid "Color change (\"%1%\")" msgstr "Farbwechsel (\"%1%\")" -#: src/slic3r/GUI/DoubleSlider.cpp:1006 +#: src/slic3r/GUI/DoubleSlider.cpp:1131 msgid "Color change (\"%1%\") for Extruder %2%" msgstr "Farbwechsel (\"%1%\") für Extruder %2%" -#: src/slic3r/GUI/GLCanvas3D.cpp:995 +#: src/slic3r/GUI/GLCanvas3D.cpp:1001 #, c-format msgid "Color change for Extruder %d at %.2f mm" msgstr "Farbwechsel für Extruder %d bei %.2f mm" -#: src/slic3r/GUI/GUI_Preview.cpp:228 src/slic3r/GUI/GUI_Preview.cpp:572 -#: src/libslic3r/GCode/PreviewData.cpp:359 +#: src/slic3r/GUI/Tab.cpp:2203 +msgid "Color Change G-code" +msgstr "G-Code für Farbwechsel" + +#: src/libslic3r/PrintConfig.cpp:1960 +msgid "Color change G-code" +msgstr "G-Code für Farbwechsel" + +#: src/slic3r/GUI/GCodeViewer.cpp:2531 src/slic3r/GUI/GUI_Preview.cpp:1475 +msgid "Color changes" +msgstr "Farbwechsel" + +#: src/slic3r/GUI/GCodeViewer.cpp:2242 src/slic3r/GUI/GUI_Preview.cpp:282 +#: src/slic3r/GUI/GUI_Preview.cpp:784 src/libslic3r/GCode/PreviewData.cpp:364 msgid "Color Print" msgstr "Color Print" -#: src/libslic3r/PrintConfig.cpp:260 +#: src/libslic3r/PrintConfig.cpp:294 msgid "Colorprint height" msgstr "Colorprint Höhe" -#: src/libslic3r/PrintConfig.cpp:990 +#: src/libslic3r/PrintConfig.cpp:1034 msgid "Combine infill every" msgstr "Infill kombinieren alle" -#: src/libslic3r/PrintConfig.cpp:995 +#: src/libslic3r/PrintConfig.cpp:1039 msgid "Combine infill every n layers" msgstr "Kombiniere das Infill all n Schichten" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:154 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:148 msgid "Commands" msgstr "Befehle" @@ -1321,23 +1559,23 @@ msgstr "Befehle" msgid "Comment:" msgstr "Kommentar:" -#: src/slic3r/GUI/Tab.cpp:56 src/libslic3r/PrintConfig.cpp:280 +#: src/slic3r/GUI/Tab.cpp:107 src/libslic3r/PrintConfig.cpp:314 msgid "Compatible print profiles" msgstr "Kompatible Druckprofile" -#: src/libslic3r/PrintConfig.cpp:286 +#: src/libslic3r/PrintConfig.cpp:320 msgid "Compatible print profiles condition" msgstr "Kompatible Druckprofile Bedingung" -#: src/slic3r/GUI/Tab.cpp:50 src/libslic3r/PrintConfig.cpp:265 +#: src/slic3r/GUI/Tab.cpp:101 src/libslic3r/PrintConfig.cpp:299 msgid "Compatible printers" msgstr "Kompatible Drucker" -#: src/libslic3r/PrintConfig.cpp:271 +#: src/libslic3r/PrintConfig.cpp:305 msgid "Compatible printers condition" msgstr "Kompatible Druckerbedingung" -#: src/libslic3r/PrintConfig.cpp:304 +#: src/libslic3r/PrintConfig.cpp:338 msgid "Complete individual objects" msgstr "Kompatible Einzelobjekte" @@ -1345,27 +1583,27 @@ msgstr "Kompatible Einzelobjekte" msgid "Completed" msgstr "Fertig" -#: src/libslic3r/Zipper.cpp:54 +#: src/libslic3r/miniz_extension.cpp:113 msgid "compression failed" msgstr "Komprimierung fehlgeschlagen" -#: src/libslic3r/PrintConfig.cpp:426 src/libslic3r/PrintConfig.cpp:849 +#: src/libslic3r/PrintConfig.cpp:462 src/libslic3r/PrintConfig.cpp:887 msgid "Concentric" msgstr "Konzentrisch" -#: src/slic3r/GUI/ConfigWizard.cpp:2110 +#: src/slic3r/GUI/ConfigWizard.cpp:2625 msgid "Configuration &Assistant" msgstr "Konfigurations &Assistent" -#: src/slic3r/GUI/ConfigWizard.cpp:2113 +#: src/slic3r/GUI/ConfigWizard.cpp:2628 msgid "Configuration &Wizard" msgstr "&Konfigurations-Assistent" -#: src/slic3r/GUI/ConfigWizard.cpp:2109 +#: src/slic3r/GUI/ConfigWizard.cpp:2624 msgid "Configuration Assistant" msgstr "Konfigurations-Assistent" -#: src/libslic3r/PrintConfig.cpp:1316 +#: src/libslic3r/PrintConfig.cpp:1424 msgid "Configuration notes" msgstr "Konfigurationsnotizen" @@ -1381,11 +1619,15 @@ msgstr "Konfigurationsupdate" msgid "Configuration update is available" msgstr "Konfigurationsupdate ist verfügbar" -#: src/slic3r/GUI/UpdateDialogs.cpp:303 +#: src/slic3r/GUI/NotificationManager.hpp:321 +msgid "Configuration update is available." +msgstr "Konfigurationsupdate ist verfügbar." + +#: src/slic3r/GUI/UpdateDialogs.cpp:304 msgid "Configuration updates" msgstr "Konfigurationsupdates" -#: src/slic3r/GUI/ConfigWizard.cpp:2112 +#: src/slic3r/GUI/ConfigWizard.cpp:2627 msgid "Configuration Wizard" msgstr "Konfigurations-Assistent" @@ -1393,15 +1635,11 @@ msgstr "Konfigurations-Assistent" msgid "Confirmation" msgstr "Bestätigung" -#: src/slic3r/GUI/Tab.cpp:1931 -msgid "Connection failed." -msgstr "Verbindung ist fehlgeschlagen." - -#: src/slic3r/GUI/Tab.cpp:3627 +#: src/slic3r/GUI/Tab.cpp:4046 msgid "Connection of the support sticks and junctions" msgstr "Verbindung von Stützstäben und Verbindungen" -#: src/slic3r/Utils/AstroBox.cpp:83 +#: src/slic3r/Utils/AstroBox.cpp:84 msgid "Connection to AstroBox works correctly." msgstr "Die Verbindung zur AstroBox funktioniert korrekt." @@ -1417,124 +1655,136 @@ msgstr "Die Verbindung zu FlashAir funktioniert einwandfrei und der Upload ist a msgid "Connection to OctoPrint works correctly." msgstr "Verbindung zu OctoPrint funktioniert einwandfrei." -#: src/slic3r/GUI/Tab.cpp:1928 -msgid "Connection to printer works correctly." -msgstr "Verbindung zum Drucker funktioniert einwandfrei." +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:260 +msgid "Connection to printers connected via the print host failed." +msgstr "Die Verbindung zu Druckern, die über den Druck-Host angeschlossen sind, ist fehlgeschlagen." -#: src/slic3r/Utils/OctoPrint.cpp:176 +#: src/slic3r/Utils/OctoPrint.cpp:185 msgid "Connection to Prusa SL1 works correctly." msgstr "Verbindung zum Prusa SL1 funktioniert einwandfrei." -#: src/libslic3r/PrintConfig.cpp:1909 +#: src/libslic3r/PrintConfig.cpp:2051 msgid "Contact Z distance" msgstr "Kontakt Z-Abstand" -#: src/slic3r/GUI/AboutDialog.cpp:261 +#: src/slic3r/GUI/AboutDialog.cpp:286 msgid "Contributions by Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik and numerous others." msgstr "Beiträge von Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik und zahlreichen anderen." -#: src/libslic3r/PrintConfig.cpp:2659 +#: src/slic3r/GUI/GUI_App.cpp:245 +msgid "Contributions by Vojtech Bubnik, Enrico Turri, Oleksandra Iushchenko, Tamas Meszaros, Lukas Matena, Vojtech Kral, David Kocik and numerous others." +msgstr "Beiträge von Vojtech Bubnik, Enrico Turri, Oleksandra Iushchenko, Tamas Meszaros, Lukas Matena, Vojtech Kral, David Kocik und zahlreichen anderen." + +#: src/libslic3r/PrintConfig.cpp:2823 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 "Steuert den Brückentyp zwischen zwei benachbarten Säulen. Kann Zickzack, Kreuz (Doppelzickzack) oder dynamisch sein, das je nach Abstand der beiden Säulen automatisch zwischen den beiden erstgenannten umschaltet." -#: src/slic3r/GUI/Tab.cpp:1444 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1858 src/slic3r/GUI/Plater.cpp:4886 +msgid "Convert from imperial units" +msgstr "Von imperialen Einheiten umrechnen" + +#: src/slic3r/GUI/Tab.cpp:1790 msgid "Cooling" msgstr "Kühlung" -#: src/libslic3r/PrintConfig.cpp:660 +#: src/libslic3r/PrintConfig.cpp:696 msgid "Cooling moves are gradually accelerating beginning at this speed." msgstr "Kühlbewegungen beschleunigen von dieser Anfangsgeschwindigkeit aus." -#: src/libslic3r/PrintConfig.cpp:679 +#: src/libslic3r/PrintConfig.cpp:715 msgid "Cooling moves are gradually accelerating towards this speed." msgstr "Kühlbewegungen beschleunigen auf diese Geschwindigkeit hin." -#: src/slic3r/GUI/Tab.cpp:1465 +#: src/slic3r/GUI/Tab.cpp:1811 msgid "Cooling thresholds" msgstr "Kühlungsschwellwerte" -#: src/libslic3r/PrintConfig.cpp:327 +#: src/libslic3r/PrintConfig.cpp:361 msgid "Cooling tube length" msgstr "Länge des Kühlschlauchs" -#: src/libslic3r/PrintConfig.cpp:319 +#: src/libslic3r/PrintConfig.cpp:353 msgid "Cooling tube position" msgstr "Position des Kühlschlauchs" -#: src/slic3r/GUI/Plater.cpp:4752 +#: src/slic3r/GUI/Plater.cpp:4856 msgid "Copies of the selected object" msgstr "Kopien des ausgewählten Objekts" -#: src/slic3r/GUI/GLCanvas3D.cpp:4505 +#: src/slic3r/GUI/GLCanvas3D.cpp:4871 msgid "Copy" msgstr "Kopieren" -#: src/slic3r/GUI/MainFrame.cpp:589 +#: src/slic3r/GUI/MainFrame.cpp:1195 msgid "Copy selection to clipboard" msgstr "Auswahl in Zwischenablage kopieren" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:132 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:127 msgid "Copy to clipboard" msgstr "Zu Zwischenablage kopieren" -#: src/slic3r/GUI/SysInfoDialog.cpp:154 +#: src/slic3r/GUI/SysInfoDialog.cpp:177 msgid "Copy to Clipboard" msgstr "Zu Zwischenablage kopieren" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:121 +#: 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." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:118 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:153 msgid "Copying of the temporary G-code has finished but the original code at %1% couldn't be opened during copy check. The output G-code is at %2%.tmp." msgstr "Das Kopieren des temporären G-Codes ist abgeschlossen, aber der Originalcode aus %1% konnte während der Kopierprüfung nicht geöffnet werden. Der ausgegebene G-Code liegt in %2%.tmp." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:480 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:522 msgid "Copying of the temporary G-code to the output G-code failed" msgstr "Das Kopieren des temporären G-Codes auf den Ausgabe-G-Code ist fehlgeschlagen" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:109 -msgid "Copying of the temporary G-code to the output G-code failed. Maybe the SD card is write locked?" -msgstr "Das Kopieren des temporären G-Codes auf den Ausgabe-G-Code ist fehlgeschlagen. SD-Karte eventuell schreibgeschützt?" +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:163 +msgid "" +"Copying of the temporary G-code to the output G-code failed. Maybe the SD card is write locked?\n" +"Error message: %1%" +msgstr "" +"Das Kopieren des temporären G-Codes auf den Ausgabe-G-Code ist fehlgeschlagen. Vielleicht ist die SD-Karte schreibgeschützt?\n" +"Fehlermeldung: %1%" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:112 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:147 msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp." msgstr "Das Kopieren des temporären G-Codes auf den Ausgabe-G-Code ist fehlgeschlagen. Es könnte ein Problem mit dem Zielgerät vorliegen, bitte versuchen Sie erneut zu exportieren oder ein anderes Gerät zu verwenden. Der beschädigte Ausgabe-G-Code liegt in %1%.tmp." -#: src/slic3r/GUI/AboutDialog.cpp:127 src/slic3r/GUI/AboutDialog.cpp:256 +#: src/slic3r/GUI/AboutDialog.cpp:139 src/slic3r/GUI/AboutDialog.cpp:281 msgid "Copyright" msgstr "Urheberrecht" -#: src/libslic3r/PrintConfig.cpp:2571 src/libslic3r/PrintConfig.cpp:2572 +#: src/libslic3r/PrintConfig.cpp:2714 src/libslic3r/PrintConfig.cpp:2715 msgid "Correction for expansion" msgstr "Korrektur der Ausdehnung" -#: src/slic3r/GUI/Tab.cpp:2100 src/slic3r/GUI/Tab.cpp:3519 +#: src/slic3r/GUI/Tab.cpp:2270 src/slic3r/GUI/Tab.cpp:3935 msgid "Corrections" msgstr "Korrekturen" -#: src/slic3r/GUI/Plater.cpp:1243 src/libslic3r/PrintConfig.cpp:760 -#: src/libslic3r/PrintConfig.cpp:2510 src/libslic3r/PrintConfig.cpp:2511 +#: src/slic3r/GUI/Plater.cpp:1158 src/libslic3r/PrintConfig.cpp:796 +#: src/libslic3r/PrintConfig.cpp:2653 src/libslic3r/PrintConfig.cpp:2654 msgid "Cost" msgstr "Kosten" -#: src/slic3r/GUI/Plater.cpp:239 +#: src/slic3r/GUI/Plater.cpp:245 msgid "Cost (money)" msgstr "Kosten (Geld)" -#: src/slic3r/GUI/Plater.cpp:2835 +#: src/slic3r/GUI/Jobs/ArrangeJob.cpp:176 msgid "Could not arrange model objects! Some geometries may be invalid." msgstr "Modellobjekte konnten nicht angeordnet werden! Einige Geometrien können ungültig sein." -#: src/slic3r/Utils/AstroBox.cpp:89 +#: src/slic3r/Utils/AstroBox.cpp:90 msgid "Could not connect to AstroBox" msgstr "Konnte keine Verbindung zur AstroBox herstellen" -#: src/slic3r/Utils/Duet.cpp:54 +#: src/slic3r/Utils/Duet.cpp:55 msgid "Could not connect to Duet" msgstr "Ich konnte keine Verbindung zum Duet herstellen" -#: src/slic3r/Utils/FlashAir.cpp:73 +#: src/slic3r/Utils/FlashAir.cpp:74 msgid "Could not connect to FlashAir" msgstr "Die Verbindung zu FlashAir konnte nicht hergestellt werden" @@ -1542,56 +1792,69 @@ msgstr "Die Verbindung zu FlashAir konnte nicht hergestellt werden" msgid "Could not connect to OctoPrint" msgstr "Ich konnte keine Verbindung zu OctoPrint herstellen" -#: src/slic3r/Utils/OctoPrint.cpp:181 +#: src/slic3r/Utils/OctoPrint.cpp:191 msgid "Could not connect to Prusa SLA" msgstr "Ich konnte keine Verbindung zum Prusa SLA herstellen" -#: src/slic3r/GUI/Tab.cpp:1687 +#: src/slic3r/Utils/Http.cpp:73 +msgid "Could not detect system SSL certificate store. PrusaSlicer will be unable to establish secure network connections." +msgstr "Konnte den System-SSL-Zertifikatspeicher nicht erkennen. PrusaSlicer kann keine sicheren Netzwerkverbindungen herstellen." + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:289 msgid "Could not get a valid Printer Host reference" msgstr "Es konnte keine gültige Drucker-Host-Referenz ermittelt werden" -#: src/slic3r/Utils/Duet.cpp:134 +#: src/slic3r/Utils/Duet.cpp:136 msgid "Could not get resources to create a new connection" msgstr "Ressourcen zum Erstellen einer neuen Verbindung konnten nicht bezogen werden" -#: src/libslic3r/PrintConfig.cpp:1959 +#: src/libslic3r/PrintConfig.cpp:2101 msgid "Cover the top contact layer of the supports with loops. Disabled by default." msgstr "Deckt die obere Kontaktschicht der Stützstrukturen mit Schleifen ab. Standardmäßig deaktiviert." -#: src/libslic3r/PrintConfig.cpp:89 +#: src/libslic3r/PrintConfig.cpp:91 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 "Spalte, die kleiner als der doppelte Lückenschlussradius sind, werden während des Slicens des Dreiecksnetzes gefüllt. Der Lückenschluss kann die endgültige Druckauflösung verringern, daher ist es ratsam, den Wert relativ niedrig zu halten." -#: src/libslic3r/Zipper.cpp:58 +#: src/libslic3r/miniz_extension.cpp:117 msgid "CRC-32 check failed" msgstr "CRC-32 Check fehlgeschlagen" -#: src/libslic3r/PrintConfig.cpp:2857 +#: src/libslic3r/PrintConfig.cpp:3021 msgid "Create pad around object and ignore the support elevation" msgstr "Erstellt eine Grundschicht um das Objekt herum und ignoriert die Unterstützungshöhe" -#: src/libslic3r/PrintConfig.cpp:2724 +#: src/libslic3r/PrintConfig.cpp:2888 msgid "Critical angle" msgstr "Kritischer Winkel" -#: src/libslic3r/PrintConfig.cpp:2668 +#: src/libslic3r/PrintConfig.cpp:2832 msgid "Cross" msgstr "Kreuz" -#: src/libslic3r/PrintConfig.cpp:847 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:225 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:203 +msgid "Ctrl + Mouse wheel" +msgstr "Strg + Mausrad" + +#: src/libslic3r/PrintConfig.cpp:885 msgid "Cubic" msgstr "Kubisch" -#: src/slic3r/GUI/wxExtensions.cpp:704 +#: src/slic3r/Utils/Http.cpp:91 +msgid "CURL init has failed. PrusaSlicer will be unable to establish network connections. See logs for additional details." +msgstr "CURL Init ist fehlgeschlagen. PrusaSlicer ist nicht in der Lage, Netzwerkverbindungen herzustellen. Siehe Protokolle für weitere Details." + +#: src/slic3r/GUI/wxExtensions.cpp:624 #, c-format msgid "Current mode is %s" msgstr "Aktueller Modus ist %s" -#: src/slic3r/GUI/Tab.cpp:959 +#: src/slic3r/GUI/Tab.cpp:1278 msgid "Current preset is inherited from" msgstr "Aktuelle Voreinstellung ist abgeleitet von" -#: src/slic3r/GUI/Tab.cpp:957 +#: src/slic3r/GUI/Tab.cpp:1276 msgid "Current preset is inherited from the default preset." msgstr "Aktuelle Voreinstellung ist abgeleitet von der Standardvoreinstellung." @@ -1599,451 +1862,488 @@ msgstr "Aktuelle Voreinstellung ist abgeleitet von der Standardvoreinstellung." msgid "Current version:" msgstr "Aktuelle Version:" -#: src/slic3r/GUI/BedShapeDialog.cpp:98 src/slic3r/GUI/GUI_Preview.cpp:249 -#: src/libslic3r/ExtrusionEntity.cpp:322 +#: src/slic3r/GUI/BedShapeDialog.cpp:143 src/slic3r/GUI/GUI_Preview.cpp:314 +#: src/libslic3r/ExtrusionEntity.cpp:327 src/libslic3r/ExtrusionEntity.cpp:362 msgid "Custom" msgstr "Benutzerdefiniert" -#: src/libslic3r/PrintConfig.cpp:112 +#: src/libslic3r/PrintConfig.cpp:114 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 "Benutzerdefinierte CA-Zertifikatsdatei kann für HTTPS OctoPrint-Verbindungen im crt/pem-Format angegeben werden. Wenn das Feld leer bleibt, wird das standardmäßige Zertifikatsverzeichnis der Betriebssystem-Zertifizierungsstelle verwendet." -#: src/slic3r/GUI/Tab.cpp:1527 src/slic3r/GUI/Tab.cpp:1975 +#: src/slic3r/GUI/Tab.cpp:1872 src/slic3r/GUI/Tab.cpp:2160 +#: src/libslic3r/PrintConfig.cpp:1978 msgid "Custom G-code" msgstr "Benutzerdefinierter G-Code" -#: src/slic3r/GUI/DoubleSlider.cpp:1619 +#: src/slic3r/GUI/DoubleSlider.cpp:1815 msgid "Custom G-code on current layer (%1% mm)." msgstr "Benutzerdefinierter G-Code auf der aktuellen Ebene (%1% mm)." -#: src/slic3r/GUI/ConfigWizard.cpp:732 +#: src/slic3r/GUI/GCodeViewer.cpp:2580 src/slic3r/GUI/GUI_Preview.cpp:1477 +msgid "Custom G-codes" +msgstr "Benutzerdefinierte G-Codes" + +#: src/slic3r/GUI/ConfigWizard.cpp:1091 msgid "Custom Printer" msgstr "Benutzerdefinierter Drucker" -#: src/slic3r/GUI/ConfigWizard.cpp:732 +#: src/slic3r/GUI/ConfigWizard.cpp:1091 msgid "Custom Printer Setup" msgstr "Benutzerdefinierte Drucker-Einrichtung" -#: src/slic3r/GUI/ConfigWizard.cpp:736 +#: src/slic3r/GUI/ConfigWizard.cpp:1095 msgid "Custom profile name:" msgstr "Benutzerdefinierter Profilname:" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:42 -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:144 src/libslic3r/PrintConfig.cpp:3402 +#: src/slic3r/GUI/DoubleSlider.cpp:1135 +msgid "Custom template (\"%1%\")" +msgstr "Benutzerdefinierte Vorlage (\"%1%\")" + +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:146 src/libslic3r/PrintConfig.cpp:3601 msgid "Cut" msgstr "Schneiden" -#: src/slic3r/GUI/Plater.cpp:4786 +#: src/slic3r/GUI/Plater.cpp:4921 msgid "Cut by Plane" msgstr "Schneiden durch Ebene" -#: src/libslic3r/PrintConfig.cpp:3403 +#: src/libslic3r/PrintConfig.cpp:3602 msgid "Cut model at the given Z." msgstr "Schneidet Modell am gegebenen Z-Wert." -#: src/slic3r/GUI/GUI_ObjectList.cpp:1432 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1563 msgid "Cylinder" msgstr "Zylinder" -#: src/slic3r/GUI/MainFrame.cpp:568 +#: src/slic3r/GUI/MainFrame.cpp:1174 msgid "D&eselect all" msgstr "All&es Abwählen" -#: src/libslic3r/PrintConfig.cpp:3504 +#: src/libslic3r/PrintConfig.cpp:3709 msgid "Data directory" msgstr "Datenverzeichnis" -#: src/slic3r/GUI/Mouse3DController.cpp:313 +#: src/slic3r/GUI/Mouse3DController.cpp:300 msgid "Deadzone:" msgstr "Todeszone:" -#: src/libslic3r/Zipper.cpp:52 +#: src/libslic3r/miniz_extension.cpp:111 msgid "decompression failed or archive is corrupted" msgstr "Entpacken fehlgeschlagen oder Archiv defekt" -#: src/slic3r/GUI/Plater.cpp:4720 +#: src/slic3r/GUI/Plater.cpp:4824 msgid "Decrease Instances" msgstr "Kopien verringern" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1704 src/libslic3r/PrintConfig.cpp:335 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1832 src/libslic3r/PrintConfig.cpp:369 msgid "Default" msgstr "Standard" -#: src/slic3r/GUI/GUI_ObjectList.cpp:457 src/slic3r/GUI/GUI_ObjectList.cpp:469 -#: src/slic3r/GUI/GUI_ObjectList.cpp:917 src/slic3r/GUI/GUI_ObjectList.cpp:3967 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3977 -#: src/slic3r/GUI/GUI_ObjectList.cpp:4012 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:200 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:257 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:282 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:490 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:1753 +#: 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/ObjectDataViewModel.cpp:202 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:259 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:284 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:492 msgid "default" msgstr "Standard" -#: src/libslic3r/PrintConfig.cpp:777 +#: src/libslic3r/PrintConfig.cpp:813 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 "Standard-Grundwinkel für die Ausrichtung der Füllung. Hierfür werden Kreuzschraffuren verwendet. Brücken werden mit der besten Richtung gefüllt, die Slic3r erkennen kann, so dass diese Einstellung sie nicht beeinflusst." -#: src/libslic3r/PrintConfig.cpp:554 +#: src/slic3r/GUI/GCodeViewer.cpp:2289 +msgid "Default color" +msgstr "Standardfarbe" + +#: src/slic3r/GUI/GCodeViewer.cpp:2313 +msgid "default color" +msgstr "Standardfarbe" + +#: src/libslic3r/PrintConfig.cpp:590 msgid "Default extrusion width" msgstr "Standardextrusionsbreite" -#: src/slic3r/GUI/Tab.cpp:987 +#: src/slic3r/GUI/Tab.cpp:1305 msgid "default filament profile" msgstr "Standard-Filamentprofil" -#: src/libslic3r/PrintConfig.cpp:345 +#: src/libslic3r/PrintConfig.cpp:379 msgid "Default filament profile" msgstr "Standard-Filamentprofil" -#: src/libslic3r/PrintConfig.cpp:346 +#: src/libslic3r/PrintConfig.cpp:380 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/Tab.cpp:2919 -#, c-format -msgid "Default preset (%s)" -msgstr "Standard Voreinstellung(%s)" - -#: src/slic3r/GUI/GLCanvas3D.cpp:904 src/slic3r/GUI/GLCanvas3D.cpp:933 +#: src/slic3r/GUI/GLCanvas3D.cpp:910 src/slic3r/GUI/GLCanvas3D.cpp:939 msgid "Default print color" msgstr "Standard Druckfarbe" -#: src/slic3r/GUI/Tab.cpp:984 +#: src/slic3r/GUI/Tab.cpp:1302 msgid "default print profile" msgstr "Standard-Druckprofil" -#: src/libslic3r/PrintConfig.cpp:352 +#: src/libslic3r/PrintConfig.cpp:386 msgid "Default print profile" msgstr "Standard-Druckprofil" -#: src/libslic3r/PrintConfig.cpp:353 src/libslic3r/PrintConfig.cpp:2592 -#: src/libslic3r/PrintConfig.cpp:2603 +#: src/libslic3r/PrintConfig.cpp:387 src/libslic3r/PrintConfig.cpp:2735 +#: src/libslic3r/PrintConfig.cpp:2746 msgid "Default print profile associated with the current printer profile. On selection of the current printer profile, this print profile will be activated." msgstr "Standarddruckprofil, das dem aktuellen Druckerprofil zugeordnet ist. Bei Auswahl des aktuellen Druckerprofils wird dieses Druckprofil aktiviert." -#: src/slic3r/GUI/Tab.cpp:1001 +#: src/slic3r/GUI/Tab.cpp:1319 msgid "default SLA material profile" msgstr "Standard-SLA-Materialprofil" -#: src/libslic3r/PrintConfig.cpp:2591 src/libslic3r/PrintConfig.cpp:2602 +#: src/libslic3r/PrintConfig.cpp:2734 src/libslic3r/PrintConfig.cpp:2745 msgid "Default SLA material profile" msgstr "Standard-SLA-Materialprofil" -#: src/slic3r/GUI/Tab.cpp:1005 +#: src/slic3r/GUI/Tab.cpp:1323 msgid "default SLA print profile" msgstr "Standard-SLA-Druckprofil" -#: src/slic3r/GUI/Field.cpp:136 +#: src/slic3r/GUI/Field.cpp:184 msgid "default value" msgstr "Standardwert" -#: src/slic3r/GUI/ConfigWizard.cpp:734 +#: src/slic3r/GUI/ConfigWizard.cpp:1093 msgid "Define a custom printer profile" msgstr "Benutzerdefiniertes Druckerprofil definieren" -#: src/libslic3r/PrintConfig.cpp:2798 +#: src/libslic3r/PrintConfig.cpp:2962 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 effect inside the cavity, which makes peeling the print off the vat foil difficult." msgstr "Definiert die Tiefe des Grundschichthohlraums. Zum Deaktivieren der Aushöhlung auf null setzen. Seien Sie vorsichtig, wenn Sie diese Funktion aktivieren, da einige Harze einen extremen Saugeffekt im Hohlraum erzeugen können, der das Abziehen des Drucks von der Wannenfolie erschwert." -#: src/slic3r/GUI/GUI_ObjectList.cpp:346 +#: src/slic3r/GUI/GUI_ObjectList.cpp:393 msgid "degenerate facets" msgstr "entartete Facetten" -#: src/libslic3r/PrintConfig.cpp:640 +#: src/libslic3r/PrintConfig.cpp:676 msgid "Delay after unloading" msgstr "Verzögerung nach dem Entladen" -#: src/slic3r/GUI/Tab.cpp:3121 +#: src/slic3r/GUI/Tab.cpp:3386 msgid "delete" msgstr "löschen" -#: src/slic3r/GUI/GLCanvas3D.cpp:4475 src/slic3r/GUI/GUI_ObjectList.cpp:1718 -#: src/slic3r/GUI/Plater.cpp:3931 src/slic3r/GUI/Plater.cpp:3953 -#: src/slic3r/GUI/Tab.cpp:3124 +#: src/slic3r/GUI/GLCanvas3D.cpp:4841 src/slic3r/GUI/GUI_ObjectList.cpp:1846 +#: src/slic3r/GUI/Plater.cpp:3849 src/slic3r/GUI/Plater.cpp:3871 +#: src/slic3r/GUI/Tab.cpp:3423 msgid "Delete" msgstr "Löschen" -#: src/slic3r/GUI/MainFrame.cpp:575 +#: src/slic3r/GUI/MainFrame.cpp:1181 msgid "Delete &all" msgstr "&Alles löschen" -#: src/slic3r/GUI/GLCanvas3D.cpp:4484 src/slic3r/GUI/KBShortcutsDialog.cpp:129 -#: src/slic3r/GUI/Plater.cpp:4669 +#: src/slic3r/GUI/GLCanvas3D.cpp:4850 src/slic3r/GUI/KBShortcutsDialog.cpp:124 +#: src/slic3r/GUI/Plater.cpp:4774 msgid "Delete all" msgstr "Alle löschen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2176 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2341 msgid "Delete All Instances from Object" msgstr "Alle Kopien des Objektes löschen" -#: src/slic3r/GUI/DoubleSlider.cpp:1516 +#: src/slic3r/GUI/DoubleSlider.cpp:1708 msgid "Delete color change" msgstr "Farbwechsel löschen" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:219 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:220 msgid "Delete color change marker for current layer" msgstr "Löscht einen Farbwechselmarker der aktuellen Schicht" -#: src/slic3r/GUI/DoubleSlider.cpp:1519 +#: src/slic3r/GUI/DoubleSlider.cpp:1711 msgid "Delete custom G-code" msgstr "Benutzerdefinierten G-Code löschen" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:539 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:424 msgid "Delete drainage hole" msgstr "Drainageloch entfernen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2192 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2357 msgid "Delete Height Range" msgstr "Höhenbereich löschen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2246 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2412 msgid "Delete Instance" msgstr "Kopie löschen" -#: src/slic3r/GUI/Plater.cpp:2712 +#: src/slic3r/GUI/Plater.cpp:2673 msgid "Delete Object" msgstr "Objekt löschen" -#: src/slic3r/GUI/GUI_ObjectSettings.cpp:101 +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:104 #, c-format msgid "Delete Option %s" msgstr "Lösche Option %s" -#: src/slic3r/GUI/DoubleSlider.cpp:1518 +#: src/slic3r/GUI/DoubleSlider.cpp:1710 msgid "Delete pause print" msgstr "Druckpause löschen" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:128 +#: src/slic3r/GUI/PresetComboBoxes.cpp:652 +msgid "Delete physical printer" +msgstr "Physischen Drucker löschen" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:659 +msgid "Delete Physical Printer" +msgstr "Physischen Drucker löschen" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:123 msgid "Delete selected" msgstr "Löschen ausgewählt" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2830 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3221 msgid "Delete Selected" msgstr "Löschen ausgewählt" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2693 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3083 msgid "Delete Selected Item" msgstr "Gewähltes Element löschen" -#: src/slic3r/GUI/Plater.cpp:4677 +#: src/slic3r/GUI/Plater.cpp:4782 msgid "Delete Selected Objects" msgstr "Ausgewählte Objekte entfernen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2152 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2319 msgid "Delete Settings" msgstr "Einstellungen löschen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2227 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2393 msgid "Delete Subobject" msgstr "Subobjekt löschen" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:631 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:514 msgid "Delete support point" msgstr "Stützpunkt löschen" -#: src/slic3r/GUI/Tab.cpp:134 +#: src/slic3r/GUI/Tab.cpp:204 msgid "Delete this preset" msgstr "Lösche diese Voreinstellung" -#: src/slic3r/GUI/DoubleSlider.cpp:1035 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:55 +msgid "Delete this preset from this printer device" +msgstr "Voreinstellung dieses Druckers löschen" + +#: src/slic3r/GUI/DoubleSlider.cpp:1160 msgid "Delete tick mark - Left click or press \"-\" key" msgstr "Häkchen löschen - Linksklick oder Taste \"-\" drücken" -#: src/slic3r/GUI/DoubleSlider.cpp:1517 +#: src/slic3r/GUI/DoubleSlider.cpp:1709 msgid "Delete tool change" msgstr "Werkzeugwechsel löschen" -#: src/slic3r/GUI/MainFrame.cpp:576 +#: src/slic3r/GUI/MainFrame.cpp:1182 msgid "Deletes all objects" msgstr "Löscht alle Objekte" -#: src/slic3r/GUI/MainFrame.cpp:573 +#: src/slic3r/GUI/MainFrame.cpp:1179 msgid "Deletes the current selection" msgstr "Löscht die aktuelle Auswahl" -#: src/libslic3r/PrintConfig.cpp:717 src/libslic3r/PrintConfig.cpp:2503 -#: src/libslic3r/PrintConfig.cpp:2504 +#: src/libslic3r/PrintConfig.cpp:753 src/libslic3r/PrintConfig.cpp:2646 +#: src/libslic3r/PrintConfig.cpp:2647 msgid "Density" msgstr "Dichte" -#: src/libslic3r/PrintConfig.cpp:791 +#: src/libslic3r/PrintConfig.cpp:827 msgid "Density of internal infill, expressed in the range 0% - 100%." msgstr "Infilldichte. Als Prozentwert von 0% - 100% ausgedrückt." -#: src/slic3r/GUI/Tab.cpp:1258 src/slic3r/GUI/Tab.cpp:1548 -#: src/slic3r/GUI/Tab.cpp:2019 src/slic3r/GUI/Tab.cpp:2135 -#: src/slic3r/GUI/Tab.cpp:3543 src/slic3r/GUI/Tab.cpp:3671 +#: src/slic3r/GUI/Tab.cpp:1588 src/slic3r/GUI/Tab.cpp:1895 +#: src/slic3r/GUI/Tab.cpp:2228 src/slic3r/GUI/Tab.cpp:2304 +#: src/slic3r/GUI/Tab.cpp:3959 src/slic3r/GUI/Tab.cpp:4090 msgid "Dependencies" msgstr "Abhängigkeiten" -#: src/libslic3r/PrintConfig.cpp:1612 src/libslic3r/PrintConfig.cpp:1613 +#: src/libslic3r/PrintConfig.cpp:1720 src/libslic3r/PrintConfig.cpp:1721 msgid "Deretraction Speed" msgstr "Wiedereinzugsgeschwindigkeit" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:127 +#: src/slic3r/GUI/GCodeViewer.cpp:2529 src/slic3r/GUI/GUI_Preview.cpp:337 +#: src/slic3r/GUI/GUI_Preview.cpp:1473 +msgid "Deretractions" +msgstr "Wiedereinzüge" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:172 +msgid "Descriptive name for the printer" +msgstr "Beschreibender Name des Druckers" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:122 msgid "Deselect all" msgstr "Alles abwählen" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1369 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1216 msgid "Deselect by rectangle" msgstr "Abwahl über Rechteck" -#: src/slic3r/GUI/MainFrame.cpp:569 +#: src/slic3r/GUI/MainFrame.cpp:1175 msgid "Deselects all objects" msgstr "Alle Objekte abwählen" -#: src/slic3r/GUI/Tab.cpp:963 +#: src/slic3r/GUI/Tab.cpp:1224 msgid "Detach from system preset" msgstr "Lösen von der Systemvoreinstellung" -#: src/slic3r/GUI/Tab.cpp:984 +#: src/slic3r/GUI/Tab.cpp:1246 msgid "Detach preset" msgstr "Lösen der Voreinstellugen" -#: src/slic3r/GUI/Tab.cpp:3029 +#: src/slic3r/GUI/Tab.cpp:3323 msgid "Detached" msgstr "Losgelöst" -#: src/libslic3r/PrintConfig.cpp:1373 +#: src/libslic3r/PrintConfig.cpp:1481 msgid "Detect bridging perimeters" msgstr "Umfangbrücken entdecken" -#: src/libslic3r/PrintConfig.cpp:2075 +#: src/libslic3r/PrintConfig.cpp:2218 msgid "Detect single-width walls (parts where two extrusions don't fit and we need to collapse them into a single trace)." msgstr "Erkennen von Wänden mit einfacher Breite (Teile, bei denen zwei Extrusionen nicht passen und wir sie in eine einzige Druckspur zusammenfassen müssen)." -#: src/libslic3r/PrintConfig.cpp:2073 +#: src/libslic3r/PrintConfig.cpp:2216 msgid "Detect thin walls" msgstr "Dünne Wände erkennen" -#: src/libslic3r/PrintConfig.cpp:3472 +#: src/libslic3r/PrintConfig.cpp:3671 msgid "Detect unconnected parts in the given model(s) and split them into separate objects." msgstr "Erkennung nicht zusammenhängender Teile in den angegebenen Modellen und Aufteilung in einzelne Objekte." -#: src/slic3r/GUI/Plater.cpp:2368 +#: src/slic3r/GUI/Plater.cpp:2330 msgid "Detected advanced data" msgstr "Erweiterte Daten gefunden" -#: src/slic3r/GUI/Mouse3DController.cpp:289 +#: src/slic3r/GUI/Mouse3DController.cpp:274 msgid "Device:" msgstr "Gerät:" -#: src/slic3r/GUI/BedShapeDialog.cpp:93 src/libslic3r/PrintConfig.cpp:709 +#: src/slic3r/GUI/BedShapeDialog.cpp:95 src/libslic3r/PrintConfig.cpp:745 msgid "Diameter" msgstr "Durchmesser" -#: src/libslic3r/PrintConfig.cpp:2694 +#: src/libslic3r/PrintConfig.cpp:2858 msgid "Diameter in mm of the pillar base" msgstr "Durchmesser der Pfeilerbasis in mm" -#: src/libslic3r/PrintConfig.cpp:2650 +#: src/libslic3r/PrintConfig.cpp:2793 msgid "Diameter in mm of the support pillars" msgstr "Durchmesser der Stützpfeiler in mm" -#: src/libslic3r/PrintConfig.cpp:2622 +#: src/libslic3r/PrintConfig.cpp:2765 msgid "Diameter of the pointing side of the head" msgstr "Durchmesser der Spitzenseite des Kopfes" -#: src/slic3r/GUI/BedShapeDialog.cpp:94 +#: src/slic3r/GUI/BedShapeDialog.cpp:131 msgid "Diameter of the print bed. It is assumed that origin (0,0) is located in the center." msgstr "Durchmesser des Druckbettes. Es wird angenommen, dass der Ursprung (0,0) sich im Mittelpunkt befindet." -#: src/libslic3r/PrintConfig.cpp:1639 +#: src/libslic3r/PrintConfig.cpp:1747 msgid "Direction" msgstr "Richtung" -#: src/libslic3r/PrintConfig.cpp:359 +#: src/libslic3r/PrintConfig.cpp:393 msgid "Disable fan for the first" msgstr "Kein Lüfter für die ersten" -#: src/libslic3r/PrintConfig.cpp:1349 +#: src/libslic3r/PrintConfig.cpp:1457 msgid "Disables retraction when the travel path does not exceed the upper layer's perimeters (and thus any ooze will be probably invisible)." msgstr "Deaktiviert den Einzug, wenn der Verfahrweg die Perimeter der oberen Schicht nicht überschreitet (und somit ist der Auslauf wahrscheinlich unsichtbar)." -#: src/slic3r/GUI/DoubleSlider.cpp:952 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:641 +msgid "Discard" +msgstr "Verwerfen" + +#: src/slic3r/GUI/DoubleSlider.cpp:1066 msgid "Discard all custom changes" msgstr "Alle benutzerdefinierten Änderungen verwerfen" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:53 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1375 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:52 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1222 msgid "Discard changes" msgstr "Änderungen verwerfen" -#: src/slic3r/GUI/GUI_App.cpp:932 src/slic3r/GUI/Tab.cpp:2946 -msgid "Discard changes and continue anyway?" -msgstr "Änderungen verwerfen und fortfahren?" - -#: src/slic3r/GUI/Tab.cpp:2078 +#: src/slic3r/GUI/Tab.cpp:2248 msgid "Display" msgstr "Display" -#: src/libslic3r/PrintConfig.cpp:2359 +#: src/libslic3r/PrintConfig.cpp:2502 msgid "Display height" msgstr "Displayhöhe" -#: src/libslic3r/PrintConfig.cpp:2378 +#: src/libslic3r/PrintConfig.cpp:2521 msgid "Display horizontal mirroring" msgstr "Zeige horizontale Spiegelung" -#: src/libslic3r/PrintConfig.cpp:2392 +#: src/libslic3r/PrintConfig.cpp:2535 msgid "Display orientation" msgstr "Displayausrichtung" -#: src/slic3r/GUI/MainFrame.cpp:648 +#: src/slic3r/GUI/MainFrame.cpp:1258 msgid "Display the Print Host Upload Queue window" msgstr "Zeige das Druckhost Warteschlangenfenster" -#: src/libslic3r/PrintConfig.cpp:2385 +#: src/libslic3r/PrintConfig.cpp:2528 msgid "Display vertical mirroring" msgstr "Zeige vertikale Spiegelung" -#: src/libslic3r/PrintConfig.cpp:2353 +#: src/libslic3r/PrintConfig.cpp:2496 msgid "Display width" msgstr "Displaybreite" -#: src/libslic3r/PrintConfig.cpp:377 +#: src/libslic3r/PrintConfig.cpp:411 msgid "Distance between copies" msgstr "Abstand zwischen Kopien" -#: src/libslic3r/PrintConfig.cpp:1680 +#: src/libslic3r/PrintConfig.cpp:1157 +msgid "Distance between ironing lines" +msgstr "Abstand zwischen Bügellinien" + +#: src/libslic3r/PrintConfig.cpp:1788 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 "Distanz zwischen Schürze und Objekt. Auf null stellen um die Schürze an das Objekt zu verbinden und einen Rand für bessere Haftung zu generieren." -#: src/libslic3r/PrintConfig.cpp:2882 +#: src/libslic3r/PrintConfig.cpp:3046 msgid "Distance between two connector sticks which connect the object and the generated pad." msgstr "Abstand zwischen zwei Verbindungsstäben, die das Objekt mit der erzeugten Grundschicht verbinden." -#: src/libslic3r/PrintConfig.cpp:1679 +#: src/libslic3r/PrintConfig.cpp:1787 msgid "Distance from object" msgstr "Abstand vom Objekt" -#: src/slic3r/GUI/BedShapeDialog.cpp:85 +#: src/slic3r/GUI/BedShapeDialog.cpp:121 msgid "Distance of the 0,0 G-code coordinate from the front left corner of the rectangle." msgstr "Abstand der 0,0 G-Code-Koordinate von der linken vorderen Ecke des Rechtecks." -#: src/libslic3r/PrintConfig.cpp:320 +#: src/libslic3r/PrintConfig.cpp:354 msgid "Distance of the center-point of the cooling tube from the extruder tip." msgstr "Abstand des Mittelpunktes des Kühlrohres von der Extruderspitze." -#: src/libslic3r/PrintConfig.cpp:1382 +#: src/libslic3r/PrintConfig.cpp:1490 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 "Abstand der Extruderspitze von der Position, an der das Filament beim Entladen abgestellt wird. Dies sollte mit dem Wert in der Drucker-Firmware übereinstimmen." -#: src/libslic3r/PrintConfig.cpp:378 +#: src/libslic3r/PrintConfig.cpp:412 msgid "Distance used for the auto-arrange feature of the plater." msgstr "Abstand für die automatische Druckplattenbelegung." -#: src/libslic3r/PrintConfig.cpp:3486 +#: src/libslic3r/PrintConfig.cpp:3685 msgid "Do not fail if a file supplied to --load does not exist." msgstr "Nicht abbrechen, wenn eine an --load übergebene Datei nicht existiert." -#: src/libslic3r/PrintConfig.cpp:3430 +#: src/libslic3r/PrintConfig.cpp:3629 msgid "Do not rearrange the given models before merging and keep their original XY coordinates." msgstr "Die angegebenen Modelle werden vor dem Zusammenführen nicht neu angeordnet und behalten ihre ursprünglichen XY-Koordinaten." -#: src/slic3r/GUI/Field.cpp:240 +#: src/slic3r/GUI/Field.cpp:288 #, c-format msgid "" "Do you mean %s%% instead of %s %s?\n" @@ -2054,31 +2354,35 @@ msgstr "" "Wählen Sie JA, wenn Sie diesen Wert auf %s%% ändern möchten, \n" "oder NEIN, wenn Sie sicher sind, dass %s %s ein korrekter Wert ist." -#: src/slic3r/GUI/DoubleSlider.cpp:1920 +#: src/slic3r/GUI/DoubleSlider.cpp:2138 msgid "Do you want to delete all saved tool changes?" msgstr "Möchten Sie alle gespeicherten Werkzeugänderungen löschen?" -#: src/slic3r/GUI/GUI_App.cpp:884 +#: src/slic3r/GUI/GUI_App.cpp:1610 msgid "Do you want to proceed?" msgstr "Wollen Sie fortfahren?" -#: src/slic3r/GUI/Plater.cpp:3321 +#: src/slic3r/GUI/Plater.cpp:3124 msgid "Do you want to retry" msgstr "Möchten Sie es erneut versuchen" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1045 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:911 msgid "Do you want to save your manually edited support points?" msgstr "Möchten Sie Ihre manuell bearbeiteten Stützpunkte speichern?" -#: src/slic3r/GUI/ConfigWizard.cpp:1834 +#: src/slic3r/GUI/ConfigWizard.cpp:2261 msgid "Do you want to select default filaments for these FFF printer models?" msgstr "Möchten Sie Standardfilamente für diese FFF-Druckermodelle auswählen?" -#: src/slic3r/GUI/ConfigWizard.cpp:1852 +#: src/slic3r/GUI/ConfigWizard.cpp:2279 msgid "Do you want to select default SLA materials for these printer models?" msgstr "Möchten Sie Standard-SLA-Materialien für diese Druckermodelle auswählen?" -#: src/libslic3r/PrintConfig.cpp:3429 +#: src/slic3r/GUI/Plater.cpp:4751 +msgid "does not contain valid gcode." +msgstr "enthält keinen gültigen G-Code." + +#: src/libslic3r/PrintConfig.cpp:3628 msgid "Don't arrange" msgstr "Nicht Anordnen" @@ -2086,7 +2390,7 @@ msgstr "Nicht Anordnen" msgid "Don't notify about new releases any more" msgstr "Keine Benachrichtigung mehr über neue Releases" -#: src/libslic3r/PrintConfig.cpp:369 +#: src/libslic3r/PrintConfig.cpp:403 msgid "Don't support bridges" msgstr "Brücken nicht unterstützen" @@ -2094,234 +2398,296 @@ msgstr "Brücken nicht unterstützen" msgid "Downgrade" msgstr "Downgrade" -#: src/libslic3r/PrintConfig.cpp:1695 +#: src/libslic3r/PrintConfig.cpp:1803 msgid "Draft shield" msgstr "Windschutz" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1365 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1368 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1369 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1212 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1215 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1216 msgid "Drag" msgstr "Ziehen" -#: src/libslic3r/SLAPrintSteps.cpp:44 +#: src/slic3r/GUI/Plater.cpp:1406 +msgid "Drag and drop G-code file" +msgstr "G-Code-Datei ziehen und ablegen" + +#: src/libslic3r/SLAPrintSteps.cpp:45 msgid "Drilling holes into model." msgstr "Löcher in das Modell bohren." -#: src/libslic3r/SLAPrintSteps.cpp:199 +#: src/libslic3r/SLAPrintSteps.cpp:201 msgid "Drilling holes into the mesh failed. This is usually caused by broken model. Try to fix it first." msgstr "Das Bohren von Löchern in das Netz ist fehlgeschlagen. Dies wird normalerweise durch ein beschädigtes Modell verursacht. Versuchen Sie zuerst, es zu reparieren." -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:337 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:349 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:345 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:357 msgid "Drop to bed" msgstr "Auf das Druckbett fallen lassen" -#: src/libslic3r/PrintConfig.cpp:3433 +#: src/libslic3r/PrintConfig.cpp:3632 msgid "Duplicate" msgstr "Duplizieren" -#: src/libslic3r/PrintConfig.cpp:3438 +#: src/libslic3r/PrintConfig.cpp:3637 msgid "Duplicate by grid" msgstr "Duplizieren nach Raster" -#: src/slic3r/GUI/PresetHints.cpp:40 +#: src/slic3r/GUI/GCodeViewer.cpp:2445 +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/libslic3r/PrintConfig.cpp:2669 +#: src/libslic3r/PrintConfig.cpp:2833 msgid "Dynamic" msgstr "Dynamisch" -#: src/slic3r/GUI/MainFrame.cpp:749 +#: src/slic3r/GUI/MainFrame.cpp:1448 msgid "E&xport" msgstr "E&xport" -#: src/slic3r/GUI/GUI_ObjectList.cpp:347 +#: src/slic3r/GUI/GUI_ObjectList.cpp:394 msgid "edges fixed" msgstr "Kanten korrigiert" -#: src/slic3r/GUI/DoubleSlider.cpp:1508 +#: src/slic3r/GUI/DoubleSlider.cpp:1700 msgid "Edit color" msgstr "Farbe bearbeiten" -#: src/slic3r/GUI/DoubleSlider.cpp:960 +#: src/slic3r/GUI/DoubleSlider.cpp:1083 msgid "Edit current color - Right click the colored slider segment" msgstr "Aktuelle Farbe bearbeiten - Rechtsklick auf das farbige Schiebereglersegment" -#: src/slic3r/GUI/DoubleSlider.cpp:1510 +#: src/slic3r/GUI/DoubleSlider.cpp:1702 msgid "Edit custom G-code" msgstr "Benutzerdefinierten G-Code bearbeiten" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3003 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3459 msgid "Edit Height Range" msgstr "Höhenbereich bearbeiten" -#: src/slic3r/GUI/DoubleSlider.cpp:1509 +#: src/slic3r/GUI/DoubleSlider.cpp:1701 msgid "Edit pause print message" msgstr "Druckpausen-Mitteilung bearbeiten" -#: src/slic3r/GUI/DoubleSlider.cpp:1037 +#: src/slic3r/GUI/PresetComboBoxes.cpp:645 +msgid "Edit physical printer" +msgstr "Physischen Drucker bearbeiten" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:641 +msgid "Edit preset" +msgstr "Voreinstellung bearbeiten" + +#: src/slic3r/GUI/DoubleSlider.cpp:1162 msgid "Edit tick mark - Ctrl + Left click" msgstr "Häkchen bearbeiten - Strg + Linksklick" -#: src/slic3r/GUI/DoubleSlider.cpp:1038 +#: src/slic3r/GUI/DoubleSlider.cpp:1163 msgid "Edit tick mark - Right click" msgstr "Häkchen bearbeiten - Rechtsklick" -#: src/slic3r/GUI/GUI_ObjectList.cpp:282 src/slic3r/GUI/GUI_ObjectList.cpp:394 +#: src/slic3r/GUI/GUI_ObjectList.cpp:300 src/slic3r/GUI/GUI_ObjectList.cpp:441 msgid "Editing" msgstr "Bearbeitung" -#: src/slic3r/GUI/MainFrame.cpp:547 +#: src/slic3r/GUI/MainFrame.cpp:1105 msgid "Ejec&t SD card / Flash drive" msgstr "SD-Kar&te/Flash-Laufwerk auswerfen" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:126 +#: src/slic3r/GUI/NotificationManager.cpp:780 +msgid "Eject drive" +msgstr "Laufwerk auswerfen" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:119 msgid "Eject SD card / Flash drive" msgstr "SD-Karte/Flash-Laufwerk auswerfen" -#: src/slic3r/GUI/MainFrame.cpp:547 +#: src/slic3r/GUI/MainFrame.cpp:1105 msgid "Eject SD card / Flash drive after the G-code was exported to it." msgstr "SD-Karte / Flash-Laufwerk auswerfen, nachdem der G-Code dorthin exportiert wurde." -#: src/slic3r/GUI/Plater.cpp:2202 +#: src/slic3r/GUI/Plater.cpp:2034 #, c-format msgid "Ejecting of device %s(%s) has failed." msgstr "Das Auswerfen von Gerät %s(%s) ist fehlgeschlagen." -#: src/libslic3r/PrintConfig.cpp:118 +#: src/libslic3r/PrintConfig.cpp:120 msgid "Elephant foot compensation" msgstr "Elefantenfußkompensation" -#: src/libslic3r/PrintConfig.cpp:2447 +#: src/libslic3r/PrintConfig.cpp:2590 msgid "Elephant foot minimum width" msgstr "Elefantenfuß Mindestbreite" -#: src/libslic3r/SLAPrint.cpp:625 +#: src/libslic3r/SLAPrint.cpp:639 msgid "Elevation is too low for object. Use the \"Pad around object\" feature to print the object without elevation." msgstr "Die Erhöhung ist zu niedrig für das Objekt. Verwenden Sie die Funktion \"Grundschicht um Object\", um das Objekt ohne Erhöhung zu drucken." -#: src/libslic3r/PrintConfig.cpp:1093 +#: src/libslic3r/PrintConfig.cpp:1186 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. As of now only the Prusa i3 MK3 firmware recognizes M73. Also the i3 MK3 firmware supports M73 Qxx Sxx for the silent mode." msgstr "Schreibt M73 P[Prozent gedruckt] R[Restzeit in Minuten] im Abstand von 1 Minute in den G-Code, damit die Firmware die genaue Restzeit anzeigt. Ab sofort erkennt nur noch die Prusa i3 MK3 Firmware das M73. Die i3 MK3 Firmware unterstützt auch das M73 Qxx Sxx für den Silent Mode." -#: src/libslic3r/GCode.cpp:637 +#: src/libslic3r/PrintConfig.cpp:1217 +msgid "Emit to G-code" +msgstr "In G-Code ausgeben" + +#: src/libslic3r/GCode.cpp:622 msgid "Empty layers detected, the output would not be printable." msgstr "Leere Schichten erkannt, die Ausgabe wäre nicht druckbar." -#: src/slic3r/GUI/Tab.cpp:1445 src/libslic3r/PrintConfig.cpp:1355 -#: src/libslic3r/PrintConfig.cpp:2200 +#: src/slic3r/GUI/Tab.cpp:1791 src/libslic3r/PrintConfig.cpp:1463 +#: src/libslic3r/PrintConfig.cpp:2343 msgid "Enable" msgstr "Aktivieren" -#: src/libslic3r/PrintConfig.cpp:313 +#: src/libslic3r/PrintConfig.cpp:347 msgid "Enable auto cooling" msgstr "Automatische Kühlung aktivieren" -#: src/libslic3r/PrintConfig.cpp:572 +#: src/libslic3r/PrintConfig.cpp:608 msgid "Enable fan if layer print time is below" msgstr "Lüfter einschalten wenn die Schichtdruckzeit geringer ist als" -#: src/libslic3r/PrintConfig.cpp:2908 +#: src/libslic3r/PrintConfig.cpp:3072 msgid "Enable hollowing" msgstr "Aushöhlung aktivieren" -#: src/libslic3r/PrintConfig.cpp:2380 +#: src/libslic3r/PrintConfig.cpp:2523 msgid "Enable horizontal mirroring of output images" msgstr "Horizontale Spiegelung der Ausgabebilder aktivieren" -#: src/libslic3r/PrintConfig.cpp:1867 +#: src/libslic3r/PrintConfig.cpp:1124 +msgid "Enable ironing" +msgstr "Bügeln aktivieren" + +#: src/libslic3r/PrintConfig.cpp:1125 +msgid "Enable ironing of the top layers with the hot print head for smooth surface" +msgstr "Ermöglicht das Bügeln der oberen Schichten mit dem heißen Druckkopf für eine glatte Oberfläche" + +#: src/libslic3r/PrintConfig.cpp:2009 msgid "Enable support material generation." msgstr "Aktiviert Generierung von Stützstrukturen." -#: src/libslic3r/PrintConfig.cpp:966 +#: src/libslic3r/PrintConfig.cpp:1010 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 plugin. This settings is NOT compatible with Single Extruder Multi Material setup and Wipe into Object / Wipe into Infill." msgstr "Aktivieren Sie dies, um Kommentare in den G-Code einzufügen, die die Druckbewegungen beschriften zu welchem Objekt sie gehören, was für das OctoPrint CancelObject Plugin nützlich ist. Diese Einstellungen sind NICHT kompatibel mit der Einstellung Single Extruder Multi Material und Wischen ins Objekt / Wischen ins Infill." -#: src/libslic3r/PrintConfig.cpp:929 +#: src/libslic3r/PrintConfig.cpp:973 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 "Aktivieren Sie diese Option, um eine kommentierte G-Code-Datei zu erhalten, wobei jede Zeile durch einen beschreibenden Text erklärt wird. Wenn Sie von einer SD-Karte drucken, kann die zusätzliche Dateigröße dazu führen, dass Ihre Firmware langsamer wird." -#: src/libslic3r/PrintConfig.cpp:2186 +#: src/libslic3r/PrintConfig.cpp:2329 msgid "Enable variable layer height feature" msgstr "Variable Schichthöhen aktivieren" -#: src/libslic3r/PrintConfig.cpp:2387 +#: src/libslic3r/PrintConfig.cpp:2530 msgid "Enable vertical mirroring of output images" msgstr "Vertikale Spiegelung der Ausgabebilder aktivieren" -#: src/slic3r/GUI/Tab.cpp:1534 src/slic3r/GUI/Tab.cpp:1982 -#: src/libslic3r/PrintConfig.cpp:385 src/libslic3r/PrintConfig.cpp:395 +#: src/slic3r/GUI/Tab.cpp:1880 src/slic3r/GUI/Tab.cpp:2168 +#: src/libslic3r/PrintConfig.cpp:419 src/libslic3r/PrintConfig.cpp:429 msgid "End G-code" msgstr "G-Code am Ende" -#: src/libslic3r/PrintConfig.cpp:1924 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:239 +msgid "Enforce" +msgstr "Erzwinge" + +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:30 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:381 +msgid "Enforce seam" +msgstr "Naht erzwingen" + +#: src/libslic3r/PrintConfig.cpp:2066 msgid "Enforce support for the first" msgstr "Erzwinge Stützstrukturen bei den ersten" -#: src/libslic3r/PrintConfig.cpp:1931 +#: src/libslic3r/PrintConfig.cpp:2073 msgid "Enforce support for the first n layers" msgstr "Erzwinge Stützstrukturen bei den ersten n Schichten" +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:47 +msgid "Enforce supports" +msgstr "Stützen erzwingen" + #: src/slic3r/GUI/PrintHostDialogs.cpp:198 #: src/slic3r/GUI/PrintHostDialogs.cpp:229 msgid "Enqueued" msgstr "In der Warteschlange" -#: src/libslic3r/PrintConfig.cpp:407 +#: src/libslic3r/PrintConfig.cpp:441 msgid "Ensure vertical shell thickness" msgstr "Stelle die vertikale Hüllenstärke sicher" -#: src/slic3r/GUI/DoubleSlider.cpp:1618 +#: src/slic3r/GUI/GLCanvas3D.cpp:4402 src/slic3r/GUI/GLCanvas3D.cpp:4410 +#: src/slic3r/GUI/Search.cpp:433 +msgid "Enter a search term" +msgstr "Suchbegriff eingeben" + +#: src/slic3r/GUI/DoubleSlider.cpp:1814 msgid "Enter custom G-code used on current layer" msgstr "Benutzerdefinierten G-Code für die aktuelle Schicht eingeben" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3803 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4266 msgid "Enter new name" msgstr "Geben Sie den neuen Namen ein" -#: src/slic3r/GUI/DoubleSlider.cpp:1634 +#: src/slic3r/GUI/DoubleSlider.cpp:1830 msgid "Enter short message shown on Printer display when a print is paused" msgstr "Geben Sie eine kurze Nachricht ein, die auf dem Druckerdisplay angezeigt wird, wenn der Druck angehalten wird" -#: src/slic3r/GUI/ConfigWizard.cpp:1047 +#: src/slic3r/GUI/ConfigWizard.cpp:1413 msgid "Enter the bed temperature needed for getting your filament to stick to your heated bed." msgstr "Geben Sie die Druckbetttemperatur ein, die erforderlich ist, damit Ihr Filament an Ihrem beheizten Druckbett haftet." -#: src/slic3r/GUI/ConfigWizard.cpp:979 +#: src/slic3r/GUI/ConfigWizard.cpp:1345 msgid "Enter the diameter of your filament." msgstr "Geben Sie den Durchmesser des Filaments ein." -#: src/slic3r/GUI/ConfigWizard.cpp:966 +#: src/slic3r/GUI/ConfigWizard.cpp:1332 msgid "Enter the diameter of your printer's hot end nozzle." msgstr "Geben Sie den Durchmesser der Hotenddüse ein." -#: src/slic3r/GUI/DoubleSlider.cpp:1650 +#: src/slic3r/GUI/DoubleSlider.cpp:1851 src/slic3r/GUI/DoubleSlider.cpp:1855 msgid "Enter the height you want to jump to" msgstr "Geben Sie die Höhe ein, auf die Sie wechseln möchten" -#: src/slic3r/GUI/Plater.cpp:4751 +#: src/slic3r/GUI/DoubleSlider.cpp:1851 +msgid "Enter the move you want to jump to" +msgstr "Geben Sie die Bewegung ein, zu welcher Sie wechseln möchten" + +#: src/slic3r/GUI/Plater.cpp:4855 msgid "Enter the number of copies:" msgstr "Geben Sie die Anzahl der Kopien ein:" -#: src/slic3r/GUI/ConfigWizard.cpp:1033 +#: src/slic3r/GUI/ConfigWizard.cpp:1399 msgid "Enter the temperature needed for extruding your filament." msgstr "Geben Sie die Temperatur ein, die für die Extrusion Ihres Filaments benötigt wird." -#: src/libslic3r/PrintConfig.cpp:761 +#: src/libslic3r/PrintConfig.cpp:797 msgid "Enter your filament cost per kg here. This is only for statistical information." msgstr "Geben Sie hier Ihre Filamentkosten pro kg ein. Dies dient ausschließlich statistischen Zwecken." -#: src/libslic3r/PrintConfig.cpp:718 +#: src/libslic3r/PrintConfig.cpp:754 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 the length to volume. Better is to calculate the volume directly through displacement." msgstr "Geben Sie hier Ihre Filamentdichte ein. Dies dient ausschließlich statistischen Zwecken. Ein vernünftiger Weg ist es, eine bekannte Filamentlänge zu wiegen und das Verhältnis von Länge zu Volumen zu berechnen. Besser ist es, das Volumen direkt durch Verdrängung zu berechnen." -#: src/libslic3r/PrintConfig.cpp:710 +#: src/libslic3r/PrintConfig.cpp:746 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 "Geben Sie hier Ihren Filamentdurchmesser ein. Eine hohe Genauigkeit ist erforderlich, also verwenden Sie einen Messschieber und führen Sie mehrere Messungen entlang des Filaments durch, um dann den Mittelwert zu berechnen." -#: src/slic3r/GUI/MainFrame.cpp:422 src/slic3r/GUI/MainFrame.cpp:785 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:39 +msgid "Entering Paint-on supports" +msgstr "Beginne Aufmal-Stützen" + +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:40 +msgid "Entering Seam painting" +msgstr "Beginne Aufmal-Nähte" + +#: src/slic3r/GUI/MainFrame.cpp:1003 src/slic3r/GUI/MainFrame.cpp:1486 #: src/slic3r/GUI/PrintHostDialogs.cpp:231 msgid "Error" msgstr "Fehler" @@ -2331,25 +2697,33 @@ msgstr "Fehler" msgid "Error accessing port at %s: %s" msgstr "Fehler beim Zugriff auf Port bei %s:%s" -#: src/slic3r/GUI/Plater.cpp:3433 +#: src/slic3r/GUI/Plater.cpp:3238 msgid "Error during reload" msgstr "Fehler beim erneuten Laden" -#: src/slic3r/GUI/Plater.cpp:5043 +#: src/slic3r/GUI/Plater.cpp:5172 #, c-format msgid "Error exporting 3MF file %s" msgstr "Fehler beim Exportieren der 3MF Datei %s" -#: src/slic3r/GUI/Plater.cpp:5005 +#: src/slic3r/GUI/Plater.cpp:5138 #, c-format msgid "Error exporting AMF file %s" msgstr "Fehler beim Exportieren der AMF Datei %s" -#: src/slic3r/GUI/PrintHostDialogs.cpp:154 +#: src/slic3r/GUI/OpenGLManager.cpp:276 +msgid "Error loading shaders" +msgstr "Fehler beim Laden von Shadern" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:152 msgid "Error Message" msgstr "Fehlermeldung" -#: src/slic3r/GUI/AppConfig.cpp:114 +#: src/slic3r/GUI/GUI_App.cpp:661 +msgid "Error parsing PrusaGCodeViewer config file, it is probably corrupted. Try to manually delete the file to recover from the error." +msgstr "Fehler beim Parsen der PrusaGCodeViewer-Konfigurationsdatei, sie ist wahrscheinlich beschädigt. Versuchen Sie, die Datei manuell zu löschen, um den Fehler zu beheben." + +#: src/slic3r/GUI/GUI_App.cpp:655 src/slic3r/GUI/GUI_App.cpp:670 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 "Fehler beim Parsen der PrusaSlicer-Konfigurationsdatei, sie ist wahrscheinlich beschädigt. Versuchen Sie, die Datei manuell zu löschen, um den Fehler zu beheben. Ihre Benutzerprofile sind davon nicht betroffen." @@ -2357,45 +2731,60 @@ msgstr "Fehler beim Parsen der PrusaSlicer-Konfigurationsdatei, sie ist wahrsche msgid "Error uploading to print host:" msgstr "Fehler beim Hochloden zu Druckhost:" -#: src/libslic3r/Zipper.cpp:102 +#: src/slic3r/GUI/Plater.cpp:4752 +msgid "Error while loading .gcode file" +msgstr "Fehler beim Laden einer .gcode-Datei" + +#: src/libslic3r/Zipper.cpp:27 msgid "Error with zip archive" msgstr "Fehler beim ZIP-Archiv" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1918 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2077 msgid "Error!" msgstr "Fehler!" -#: src/slic3r/GUI/BedShapeDialog.cpp:505 +#: src/slic3r/GUI/BedShapeDialog.cpp:581 msgid "Error! Invalid model" msgstr "Fehler! Ungültiges Modell" +#: src/slic3r/GUI/NotificationManager.cpp:667 +#: src/slic3r/GUI/NotificationManager.cpp:683 +#: src/slic3r/GUI/NotificationManager.cpp:694 +msgid "ERROR:" +msgstr "FEHLER:" + #: src/slic3r/GUI/FirmwareDialog.cpp:647 #, c-format msgid "Error: %s" msgstr "Fehler: %s" -#: src/slic3r/GUI/Job.hpp:123 +#: src/slic3r/GUI/Jobs/Job.cpp:74 msgid "ERROR: not enough resources to execute a new job." msgstr "FEHLER: Nicht genügend Ressourcen, um einen neuen Job auszuführen." -#: src/slic3r/GUI/Plater.cpp:240 src/slic3r/GUI/Plater.cpp:1216 -#: src/slic3r/GUI/Plater.cpp:1258 +#: 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 msgid "Estimated printing time" msgstr "Erwartete Druckzeit" -#: src/slic3r/GUI/Plater.cpp:502 +#: src/slic3r/GUI/GCodeViewer.cpp:2442 src/slic3r/GUI/GCodeViewer.cpp:2445 +msgid "Event" +msgstr "Ereignis" + +#: src/slic3r/GUI/Plater.cpp:368 msgid "Everywhere" msgstr "Überall" -#: src/slic3r/GUI/PresetHints.cpp:51 +#: src/slic3r/GUI/PresetHints.cpp:50 msgid "except for the first %1% layers." msgstr "außer für die ersten %1% Schichten." -#: src/slic3r/GUI/PresetHints.cpp:53 +#: src/slic3r/GUI/PresetHints.cpp:52 msgid "except for the first layer." msgstr "außer für die erste Schicht." -#: src/libslic3r/Print.cpp:1377 +#: src/libslic3r/Print.cpp:1403 msgid "Excessive %1%=%2% mm to be printable with a nozzle diameter %3% mm" msgstr "Übermäßig %1%=%2% mm, um mit einem Düsendurchmesser von %3% mm druckbar zu sein" @@ -2404,116 +2793,129 @@ msgstr "Übermäßig %1%=%2% mm, um mit einem Düsendurchmesser von %3% mm druck msgid "Exit %s" msgstr "%s beenden" -#: src/libslic3r/PrintConfig.cpp:371 +#: src/slic3r/GUI/Plater.cpp:2143 +msgid "Expand sidebar" +msgstr "Seitenleiste aufklappen" + +#: src/libslic3r/PrintConfig.cpp:405 msgid "Experimental option for preventing support material from being generated under bridged areas." msgstr "Experimentelle Option zur Verhinderung der Bildung von Trägermaterial unter Überbrückungsflächen." -#: src/libslic3r/PrintConfig.cpp:1375 +#: src/libslic3r/PrintConfig.cpp:1483 msgid "Experimental option to adjust flow for overhangs (bridge flow will be used), to apply bridge speed to them and enable fan." msgstr "Experimentelle Option zur Anpassung des Durchflusses für Überhänge (Brückenvolumenfluss wird verwendet), zur Anwendung der Brückengeschwindigkeit und zur Aktivierung des Lüfters." -#: src/slic3r/GUI/GUI_App.cpp:815 src/slic3r/GUI/wxExtensions.cpp:755 +#: src/slic3r/GUI/GUI_App.cpp:1507 src/slic3r/GUI/wxExtensions.cpp:676 msgid "Expert" msgstr "Experte" -#: src/slic3r/GUI/ConfigWizard.cpp:822 +#: src/slic3r/GUI/ConfigWizard.cpp:1181 msgid "Expert mode" msgstr "Expertenmodus" -#: src/slic3r/GUI/GUI_App.cpp:815 +#: src/slic3r/GUI/GUI_App.cpp:1507 msgid "Expert View Mode" msgstr "Experten Anzeigemodus" -#: src/slic3r/GUI/Plater.cpp:5521 +#: src/slic3r/GUI/Plater.cpp:5706 msgid "Export" msgstr "Export" -#: src/slic3r/GUI/MainFrame.cpp:500 +#: src/slic3r/GUI/MainFrame.cpp:1094 msgid "Export &Config" msgstr "Export &Konfiguration" -#: src/slic3r/GUI/MainFrame.cpp:477 src/slic3r/GUI/MainFrame.cpp:749 +#: src/slic3r/GUI/MainFrame.cpp:1068 src/slic3r/GUI/MainFrame.cpp:1448 msgid "Export &G-code" msgstr "Export &G-Code" -#: src/slic3r/GUI/MainFrame.cpp:496 +#: src/slic3r/GUI/MainFrame.cpp:1090 src/slic3r/GUI/MainFrame.cpp:1395 msgid "Export &toolpaths as OBJ" -msgstr "&Werkzeugpfade als OBJ exportieren" +msgstr "&Werkzeugwege als OBJ exportieren" -#: src/libslic3r/PrintConfig.cpp:3338 +#: src/libslic3r/PrintConfig.cpp:3531 msgid "Export 3MF" msgstr "Export 3MF" -#: src/slic3r/GUI/MainFrame.cpp:503 +#: src/slic3r/GUI/MainFrame.cpp:1100 +msgid "Export all presets including physical printers to file" +msgstr "Alle Voreinstellungen einschließlich physischer Drucker in eine Datei exportieren" + +#: src/slic3r/GUI/MainFrame.cpp:1097 msgid "Export all presets to file" msgstr "Exportiere alle Voreinstellungen in eine Datei" -#: src/libslic3r/PrintConfig.cpp:3343 +#: src/libslic3r/PrintConfig.cpp:3536 msgid "Export AMF" msgstr "Exportiere AMF" -#: src/slic3r/GUI/Plater.cpp:2598 +#: src/slic3r/GUI/Plater.cpp:2560 msgid "Export AMF file:" msgstr "Exportiere AMF Datei:" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1657 src/slic3r/GUI/Plater.cpp:3966 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1786 src/slic3r/GUI/Plater.cpp:3884 msgid "Export as STL" msgstr "Exportiere als STL" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:124 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:117 msgid "Export config" msgstr "Konfiguration exportieren" -#: src/slic3r/GUI/MainFrame.cpp:503 +#: src/slic3r/GUI/MainFrame.cpp:1097 msgid "Export Config &Bundle" msgstr "Konfigurationssa&mlung exportieren" -#: src/slic3r/GUI/MainFrame.cpp:500 +#: src/slic3r/GUI/MainFrame.cpp:1100 +msgid "Export Config Bundle With Physical Printers" +msgstr "Konfigurations-Bundle mit physischen Druckern exportieren" + +#: src/slic3r/GUI/MainFrame.cpp:1094 msgid "Export current configuration to file" msgstr "Exportiere die aktuelle Konfiguration in eine Datei" -#: src/slic3r/GUI/MainFrame.cpp:492 +#: src/slic3r/GUI/MainFrame.cpp:1086 msgid "Export current plate as AMF" msgstr "Exportiere die aktuelle Plattenbelegung als AMF" -#: src/slic3r/GUI/MainFrame.cpp:477 +#: src/slic3r/GUI/MainFrame.cpp:1068 msgid "Export current plate as G-code" msgstr "Exportiere die aktuelle Plattenbelegung als G-Code" -#: src/slic3r/GUI/MainFrame.cpp:521 +#: src/slic3r/GUI/MainFrame.cpp:1076 msgid "Export current plate as G-code to SD card / Flash drive" msgstr "Aktuelle Druckplatte als G-Code auf SD-Karte/Flash-Laufwerk exportieren" -#: src/slic3r/GUI/MainFrame.cpp:486 +#: src/slic3r/GUI/MainFrame.cpp:1080 msgid "Export current plate as STL" msgstr "Exportiere die aktuelle Plattenbelegung als STL" -#: src/slic3r/GUI/MainFrame.cpp:489 +#: src/slic3r/GUI/MainFrame.cpp:1083 msgid "Export current plate as STL including supports" msgstr "Exportiert die aktuelle Plattenbelegung als STL einschließlich Stützstrukturen" -#: src/slic3r/GUI/Plater.cpp:3664 -msgid "Export failed" -msgstr "Export ist fehlgeschlagen" - -#: src/slic3r/GUI/ConfigWizard.cpp:801 +#: src/slic3r/GUI/ConfigWizard.cpp:1160 msgid "Export full pathnames of models and parts sources into 3mf and amf files" msgstr "Exportieren Sie die vollständigen Pfadnamen der Modelle und Teilequellen in 3mf- und amf-Dateien" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:122 src/slic3r/GUI/Plater.cpp:891 -#: src/slic3r/GUI/Plater.cpp:5521 src/libslic3r/PrintConfig.cpp:3353 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:115 src/slic3r/GUI/Plater.cpp:766 +#: src/slic3r/GUI/Plater.cpp:5706 src/libslic3r/PrintConfig.cpp:3546 msgid "Export G-code" msgstr "Export G-Code" -#: src/slic3r/GUI/MainFrame.cpp:521 +#: src/slic3r/GUI/MainFrame.cpp:1076 msgid "Export G-code to SD card / Flash drive" msgstr "G-Code auf SD-Karte/Flash-Laufwerk exportieren" -#: src/libslic3r/PrintConfig.cpp:3320 +#: src/slic3r/GUI/NotificationManager.cpp:631 +#: src/slic3r/GUI/NotificationManager.cpp:748 +msgid "Export G-Code." +msgstr "G-Code exportieren." + +#: src/libslic3r/PrintConfig.cpp:3513 msgid "Export OBJ" msgstr "Exportiere OBJ" -#: src/slic3r/GUI/Plater.cpp:2610 +#: src/slic3r/GUI/Plater.cpp:2572 msgid "Export OBJ file:" msgstr "Exportiere OBJ Datei:" @@ -2521,212 +2923,215 @@ msgstr "Exportiere OBJ Datei:" msgid "Export of a temporary 3mf file failed" msgstr "Export einer temporären 3MF Datei fehlgeschlagen" -#: src/slic3r/GUI/MainFrame.cpp:492 +#: src/slic3r/GUI/MainFrame.cpp:1086 msgid "Export plate as &AMF" msgstr "Exportiere die Plattenbelegung als &AMF" -#: src/slic3r/GUI/MainFrame.cpp:486 +#: src/slic3r/GUI/MainFrame.cpp:1080 msgid "Export plate as &STL" msgstr "Exportiere die Plattenbelegung als &STL" -#: src/slic3r/GUI/MainFrame.cpp:489 +#: src/slic3r/GUI/MainFrame.cpp:1083 msgid "Export plate as STL &including supports" msgstr "Export&iere Plattenbelegung als STL einschließlich Stützstrukturen" -#: src/libslic3r/PrintConfig.cpp:3332 +#: src/libslic3r/PrintConfig.cpp:3525 msgid "Export SLA" msgstr "Exportiere SLA" -#: src/slic3r/GUI/Preferences.cpp:72 +#: src/slic3r/GUI/Preferences.cpp:89 msgid "Export sources full pathnames to 3mf and amf" msgstr "Vollständige Pfadnamen der Quellen in 3mf und amf exportieren" -#: src/libslic3r/PrintConfig.cpp:3348 +#: src/libslic3r/PrintConfig.cpp:3541 msgid "Export STL" msgstr "Exportiere STL" -#: src/slic3r/GUI/Plater.cpp:2591 +#: src/slic3r/GUI/Plater.cpp:2553 msgid "Export STL file:" msgstr "Exportiere STL Datei:" -#: src/libslic3r/PrintConfig.cpp:3339 +#: src/libslic3r/PrintConfig.cpp:3532 msgid "Export the model(s) as 3MF." msgstr "Exportiert das/die Modell(e) als 3MF Datei." -#: src/libslic3r/PrintConfig.cpp:3344 +#: src/libslic3r/PrintConfig.cpp:3537 msgid "Export the model(s) as AMF." msgstr "Exportiert das/die Modell(e) als AMF Datei." -#: src/libslic3r/PrintConfig.cpp:3321 +#: src/libslic3r/PrintConfig.cpp:3514 msgid "Export the model(s) as OBJ." msgstr "Exportiert das/die Modell(e) als OBJ Datei." -#: src/libslic3r/PrintConfig.cpp:3349 +#: src/libslic3r/PrintConfig.cpp:3542 msgid "Export the model(s) as STL." msgstr "Exportiert das/die Modell(e) als STL Datei." -#: src/slic3r/GUI/Plater.cpp:3966 +#: src/slic3r/GUI/Plater.cpp:3884 msgid "Export the selected object as STL file" msgstr "Exportiere das gewählte Objekt als STL Datei" -#: src/slic3r/GUI/Plater.cpp:880 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:118 src/slic3r/GUI/Plater.cpp:755 msgid "Export to SD card / Flash drive" msgstr "Export auf SD-Karte/Flash-Laufwerk" -#: src/slic3r/GUI/MainFrame.cpp:496 +#: src/slic3r/GUI/MainFrame.cpp:1090 src/slic3r/GUI/MainFrame.cpp:1395 msgid "Export toolpaths as OBJ" -msgstr "Werkzeugpfad als OBJ exportieren" +msgstr "Werkzeugweg als OBJ exportieren" -#: src/libslic3r/Print.cpp:1638 +#: src/slic3r/GUI/NotificationManager.hpp:317 +msgid "Exporting finished." +msgstr "Exportieren beendet." + +#: src/libslic3r/Print.cpp:1676 msgid "Exporting G-code" msgstr "Exportiere G-Code" #: src/slic3r/Utils/FixModelByWin10.cpp:341 -msgid "Exporting model..." -msgstr "Exportiere Modell..." +msgid "Exporting model" +msgstr "Exportiere Modell" #: src/slic3r/Utils/FixModelByWin10.cpp:219 #: src/slic3r/Utils/FixModelByWin10.cpp:359 msgid "Exporting source model" msgstr "Exportieren des Quellmodells" -#: src/libslic3r/SLAPrint.cpp:646 +#: src/libslic3r/SLAPrint.cpp:660 msgid "Exposition time is out of printer profile bounds." msgstr "Belichtungszeit ist außerhalb der Druckerprofilgrenzen." -#: src/slic3r/GUI/Tab.cpp:2117 src/slic3r/GUI/Tab.cpp:3515 +#: src/slic3r/GUI/Tab.cpp:2287 src/slic3r/GUI/Tab.cpp:3931 msgid "Exposure" msgstr "Belichtung" -#: src/libslic3r/PrintConfig.cpp:2541 src/libslic3r/PrintConfig.cpp:2542 +#: src/libslic3r/PrintConfig.cpp:2684 src/libslic3r/PrintConfig.cpp:2685 msgid "Exposure time" msgstr "Belichtungszeit" -#: src/slic3r/GUI/GUI_Preview.cpp:238 src/libslic3r/ExtrusionEntity.cpp:311 +#: src/slic3r/GUI/GUI_Preview.cpp:302 src/libslic3r/ExtrusionEntity.cpp:315 +#: src/libslic3r/ExtrusionEntity.cpp:338 msgid "External perimeter" msgstr "Außenkontur" -#: src/slic3r/GUI/PresetHints.cpp:156 +#: src/slic3r/GUI/PresetHints.cpp:155 msgid "external perimeters" msgstr "Außenkonturen" -#: src/libslic3r/PrintConfig.cpp:446 src/libslic3r/PrintConfig.cpp:457 +#: src/libslic3r/PrintConfig.cpp:482 src/libslic3r/PrintConfig.cpp:493 msgid "External perimeters" msgstr "Außenkonturen" -#: src/libslic3r/PrintConfig.cpp:469 +#: src/libslic3r/PrintConfig.cpp:505 msgid "External perimeters first" msgstr "Außenkonturen zuerst drucken" -#: src/libslic3r/PrintConfig.cpp:1588 src/libslic3r/PrintConfig.cpp:1596 +#: src/libslic3r/PrintConfig.cpp:1696 src/libslic3r/PrintConfig.cpp:1704 msgid "Extra length on restart" msgstr "Extra Länge bei Neustart" -#: src/libslic3r/PrintConfig.cpp:1390 +#: src/libslic3r/PrintConfig.cpp:1498 msgid "Extra loading distance" msgstr "Zusätzliche Ladestrecke" -#: src/libslic3r/PrintConfig.cpp:477 +#: src/libslic3r/PrintConfig.cpp:513 msgid "Extra perimeters if needed" msgstr "Extra Konturen wenn notwendig" -#: src/slic3r/GUI/GUI_ObjectList.cpp:278 src/slic3r/GUI/Tab.cpp:1434 -#: src/slic3r/GUI/wxExtensions.cpp:598 src/libslic3r/PrintConfig.cpp:487 +#: src/slic3r/GUI/GCodeViewer.cpp:2277 src/slic3r/GUI/GCodeViewer.cpp:2313 +#: src/slic3r/GUI/GCodeViewer.cpp:2318 src/slic3r/GUI/GUI_ObjectList.cpp:296 +#: src/slic3r/GUI/Tab.cpp:1780 src/slic3r/GUI/wxExtensions.cpp:515 +#: src/libslic3r/PrintConfig.cpp:523 msgid "Extruder" msgstr "Extruder" -#: src/slic3r/GUI/DoubleSlider.cpp:1134 src/slic3r/GUI/DoubleSlider.cpp:1170 -#: src/slic3r/GUI/GLCanvas3D.cpp:977 src/slic3r/GUI/GUI_ObjectList.cpp:1704 -#: src/slic3r/GUI/Tab.cpp:2320 src/libslic3r/GCode/PreviewData.cpp:445 +#: src/slic3r/GUI/DoubleSlider.cpp:1263 src/slic3r/GUI/DoubleSlider.cpp:1297 +#: src/slic3r/GUI/GLCanvas3D.cpp:983 src/slic3r/GUI/GUI_ObjectList.cpp:1832 +#: src/slic3r/GUI/Tab.cpp:2489 src/libslic3r/GCode/PreviewData.cpp:450 #, c-format msgid "Extruder %d" msgstr "Extruder %d" -#: src/slic3r/GUI/DoubleSlider.cpp:1011 +#: src/slic3r/GUI/DoubleSlider.cpp:1137 msgid "Extruder (tool) is changed to Extruder \"%1%\"" msgstr "Extruder (Werkzeug) ist geändert auf Extruder \"%1%\"" -#: src/slic3r/GUI/ConfigWizard.cpp:1017 -msgid "Extruder and Bed Temperatures" -msgstr "Extruder- und Druckbetttemperatur" - #: src/slic3r/GUI/WipeTowerDialog.cpp:255 msgid "Extruder changed to" msgstr "Extruder geändert auf" -#: src/slic3r/GUI/Tab.cpp:1233 +#: src/slic3r/GUI/Tab.cpp:1563 msgid "Extruder clearance (mm)" msgstr "Extruder Abstand (mm)" -#: src/libslic3r/PrintConfig.cpp:522 +#: src/libslic3r/PrintConfig.cpp:558 msgid "Extruder Color" msgstr "Extruder Farbe" -#: src/libslic3r/PrintConfig.cpp:529 +#: src/libslic3r/PrintConfig.cpp:565 msgid "Extruder offset" msgstr "Extruder Offset" -#: src/libslic3r/PrintConfig.cpp:911 -msgid "Extruder temperature for first layer. If you want to control temperature manually during print, set this to zero to disable temperature control commands in the output file." -msgstr "Extrudertemperatur für die erste Schicht. Wenn Sie die Temperatur während des Druckvorgangs manuell regeln möchten, setzen Sie diesen Wert auf null, um die Temperatursteuerbefehle in der Ausgabedatei zu deaktivieren." - -#: src/libslic3r/PrintConfig.cpp:2065 -msgid "Extruder temperature for layers after the first one. Set this to zero to disable temperature control commands in the output." -msgstr "Extrudertemperatur für Schichten nach der ersten Schicht. Setzen Sie diesen Wert auf null, um die Temperaturregelbefehle in der Ausgabedatei zu deaktivieren." - -#: src/slic3r/GUI/GUI_ObjectList.cpp:99 src/slic3r/GUI/GUI_ObjectList.cpp:617 -#: src/slic3r/GUI/Tab.cpp:1180 src/slic3r/GUI/Tab.cpp:1838 -#: src/libslic3r/PrintConfig.cpp:488 src/libslic3r/PrintConfig.cpp:1002 -#: src/libslic3r/PrintConfig.cpp:1409 src/libslic3r/PrintConfig.cpp:1737 -#: src/libslic3r/PrintConfig.cpp:1938 src/libslic3r/PrintConfig.cpp:1965 +#: src/slic3r/GUI/GUI_ObjectList.cpp:97 src/slic3r/GUI/GUI_ObjectList.cpp:656 +#: src/slic3r/GUI/Tab.cpp:1510 src/slic3r/GUI/Tab.cpp:2072 +#: src/libslic3r/PrintConfig.cpp:524 src/libslic3r/PrintConfig.cpp:1046 +#: src/libslic3r/PrintConfig.cpp:1517 src/libslic3r/PrintConfig.cpp:1852 +#: src/libslic3r/PrintConfig.cpp:2080 src/libslic3r/PrintConfig.cpp:2107 msgid "Extruders" msgstr "Extruder" -#: src/libslic3r/PrintConfig.cpp:539 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1061 +msgid "Extruders count" +msgstr "Extruder Anzahl" + +#: src/slic3r/GUI/GCodeViewer.cpp:2493 +msgid "Extrusion" +msgstr "Extrusion" + +#: src/libslic3r/PrintConfig.cpp:575 msgid "Extrusion axis" msgstr "Extrusionsachse" -#: src/libslic3r/PrintConfig.cpp:545 +#: src/libslic3r/PrintConfig.cpp:581 msgid "Extrusion multiplier" msgstr "Extrusionsfaktor" -#: src/slic3r/GUI/ConfigWizard.cpp:1037 +#: src/slic3r/GUI/ConfigWizard.cpp:1403 msgid "Extrusion Temperature:" msgstr "Extrusionstemperatur:" -#: src/slic3r/GUI/Tab.cpp:1205 +#: src/slic3r/GUI/Tab.cpp:1535 msgid "Extrusion width" msgstr "Extrusionbreite" -#: src/slic3r/GUI/GUI_ObjectList.cpp:100 src/slic3r/GUI/GUI_ObjectList.cpp:618 -#: src/libslic3r/PrintConfig.cpp:447 src/libslic3r/PrintConfig.cpp:555 -#: src/libslic3r/PrintConfig.cpp:877 src/libslic3r/PrintConfig.cpp:1010 -#: src/libslic3r/PrintConfig.cpp:1418 src/libslic3r/PrintConfig.cpp:1757 -#: src/libslic3r/PrintConfig.cpp:1947 src/libslic3r/PrintConfig.cpp:2106 +#: src/slic3r/GUI/GUI_ObjectList.cpp:98 src/slic3r/GUI/GUI_ObjectList.cpp:657 +#: src/libslic3r/PrintConfig.cpp:483 src/libslic3r/PrintConfig.cpp:591 +#: src/libslic3r/PrintConfig.cpp:919 src/libslic3r/PrintConfig.cpp:1054 +#: src/libslic3r/PrintConfig.cpp:1526 src/libslic3r/PrintConfig.cpp:1872 +#: src/libslic3r/PrintConfig.cpp:2089 src/libslic3r/PrintConfig.cpp:2249 msgid "Extrusion Width" msgstr "Extrusionsbreite" -#: src/slic3r/GUI/Plater.cpp:162 +#: src/slic3r/GUI/Plater.cpp:168 msgid "Facets" msgstr "Flächen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:349 +#: src/slic3r/GUI/GUI_ObjectList.cpp:396 msgid "facets added" msgstr "Facetten hinzugefügt" -#: src/slic3r/GUI/GUI_ObjectList.cpp:348 +#: src/slic3r/GUI/GUI_ObjectList.cpp:395 msgid "facets removed" msgstr "Facetten enfernt" -#: src/slic3r/GUI/GUI_ObjectList.cpp:350 +#: src/slic3r/GUI/GUI_ObjectList.cpp:397 msgid "facets reversed" msgstr "Facetten umgekehrt" -#: src/libslic3r/PrintConfig.cpp:2517 +#: src/libslic3r/PrintConfig.cpp:2660 msgid "Faded layers" msgstr "Ausblendende Schichten" -#: src/libslic3r/Zipper.cpp:44 +#: src/libslic3r/miniz_extension.cpp:103 msgid "failed finding central directory" msgstr "Zentrales Verzeichnis nicht gefunden" @@ -2734,105 +3139,115 @@ msgstr "Zentrales Verzeichnis nicht gefunden" msgid "Failed loading the input model." msgstr "Das Laden des Inputmodells ist fehlgeschlagen." -#: src/libslic3r/PrintBase.cpp:71 +#: src/libslic3r/PrintBase.cpp:72 msgid "Failed processing of the output_filename_format template." msgstr "Die Verarbeitung der output_filename_format Vorlage ist fehlgeschlagen." -#: src/slic3r/GUI/PresetHints.cpp:42 +#: src/slic3r/GUI/PresetHints.cpp:41 msgid "Fan" msgstr "Kühllüfter" -#: src/slic3r/GUI/Tab.cpp:1456 +#: src/slic3r/GUI/Tab.cpp:1802 msgid "Fan settings" msgstr "Lüfter Einstellungen" -#: src/slic3r/GUI/GUI_Preview.cpp:225 src/slic3r/GUI/Tab.cpp:1457 +#: src/slic3r/GUI/GUI_Preview.cpp:279 src/slic3r/GUI/Tab.cpp:1803 msgid "Fan speed" msgstr "Lüftergeschwindigkeit" -#: src/libslic3r/GCode/PreviewData.cpp:353 +#: src/slic3r/GUI/GCodeViewer.cpp:2239 src/libslic3r/GCode/PreviewData.cpp:358 msgid "Fan Speed (%)" msgstr "Lüftergeschwindigkeit (%)" -#: src/libslic3r/PrintConfig.cpp:2405 +#: src/libslic3r/PrintConfig.cpp:2548 msgid "Fast" msgstr "Schnell" -#: src/libslic3r/PrintConfig.cpp:2406 +#: src/libslic3r/PrintConfig.cpp:2549 msgid "Fast tilt" msgstr "Schnelles Kippen" -#: src/slic3r/GUI/GUI_App.cpp:141 +#: src/slic3r/GUI/GUI_App.cpp:531 msgid "Fatal error" msgstr "Fataler Fehler" -#: src/slic3r/GUI/GUI_Preview.cpp:221 src/slic3r/GUI/GUI_Preview.cpp:575 -#: src/libslic3r/GCode/PreviewData.cpp:345 +#: src/slic3r/GUI/GUI_Init.cpp:88 +msgid "Fatal error, exception catched: %1%" +msgstr "Fataler Fehler, abgefangene Ausnahme: %1%" + +#: src/slic3r/GUI/GCodeViewer.cpp:2225 src/slic3r/GUI/GCodeViewer.cpp:2233 +#: src/slic3r/GUI/GUI_Preview.cpp:275 src/slic3r/GUI/GUI_Preview.cpp:787 +#: src/libslic3r/GCode/PreviewData.cpp:350 msgid "Feature type" msgstr "Merkmalstyp" -#: src/slic3r/GUI/GUI_Preview.cpp:234 src/slic3r/GUI/GUI_Preview.cpp:235 +#: src/slic3r/GUI/GUI_Preview.cpp:293 src/slic3r/GUI/GUI_Preview.cpp:295 +#: src/slic3r/GUI/GUI_Preview.cpp:316 msgid "Feature types" msgstr "Merkmalstypen" -#: src/slic3r/GUI/ConfigWizard.cpp:1525 +#: src/slic3r/GUI/ConfigWizard.cpp:1926 msgid "FFF Technology Printers" msgstr "FFF Technologie Drucker" -#: src/slic3r/GUI/Plater.cpp:816 src/slic3r/GUI/Tab.cpp:1425 -#: src/slic3r/GUI/Tab.cpp:1426 +#: src/slic3r/GUI/Plater.cpp:691 src/slic3r/GUI/Tab.cpp:1770 +#: src/slic3r/GUI/Tab.cpp:1771 msgid "Filament" msgstr "Filament" -#: src/slic3r/GUI/Preset.cpp:1522 +#: src/libslic3r/Preset.cpp:1301 msgid "filament" msgstr "Filament" -#: src/slic3r/GUI/ConfigWizard.cpp:952 +#: src/slic3r/GUI/ConfigWizard.cpp:1318 msgid "Filament and Nozzle Diameters" msgstr "Filament- und Düsendurchmesser" -#: src/slic3r/GUI/ConfigWizard.cpp:983 +#: src/slic3r/GUI/ConfigWizard.cpp:1349 msgid "Filament Diameter:" msgstr "Filamentdurchmesser:" -#: src/libslic3r/PrintConfig.cpp:651 +#: src/libslic3r/PrintConfig.cpp:687 msgid "Filament is cooled by being moved back and forth in the cooling tubes. Specify desired number of these moves." msgstr "Das Filament wird durch Hin- und Herbewegen in den Kühlschläuchen abgekühlt. Geben Sie die gewünschte Anzahl dieser Bewegungen an." -#: src/libslic3r/PrintConfig.cpp:686 +#: src/libslic3r/PrintConfig.cpp:722 msgid "Filament load time" msgstr "Filament Ladezeit" -#: src/libslic3r/PrintConfig.cpp:588 +#: src/libslic3r/PrintConfig.cpp:624 msgid "Filament notes" msgstr "Filament Bemerkungen" -#: src/slic3r/GUI/Tab.cpp:1323 src/slic3r/GUI/Tab.cpp:1378 +#: src/slic3r/GUI/Tab.cpp:1669 msgid "Filament Overrides" msgstr "Filament Übersteuerung" -#: src/libslic3r/PrintConfig.cpp:1381 +#: src/libslic3r/PrintConfig.cpp:1489 msgid "Filament parking position" msgstr "Filament Parkposition" -#: src/slic3r/GUI/ConfigWizard.cpp:2013 +#: src/slic3r/GUI/ConfigWizard.cpp:2524 msgid "Filament Profiles Selection" msgstr "Filament Profile Auswahl" -#: src/slic3r/GUI/Tab.cpp:1471 +#: src/slic3r/GUI/Tab.cpp:1817 msgid "Filament properties" msgstr "Filament Eigenschaften" -#: src/slic3r/GUI/Tab.hpp:355 +#: src/slic3r/GUI/Tab.hpp:409 msgid "Filament Settings" msgstr "Filamenteinstellungen" -#: src/libslic3r/PrintConfig.cpp:726 +#: src/slic3r/GUI/GLCanvas3D.cpp:4304 src/slic3r/GUI/GLCanvas3D.cpp:4940 +msgid "Filament Settings Tab" +msgstr "Filamenteinstellungsreiter" + +#: src/libslic3r/PrintConfig.cpp:762 msgid "Filament type" msgstr "Filament Typ" -#: src/libslic3r/PrintConfig.cpp:701 +#: src/libslic3r/PrintConfig.cpp:737 msgid "Filament unload time" msgstr "Filament Entladezeit" @@ -2840,75 +3255,79 @@ msgstr "Filament Entladezeit" msgid "filaments" msgstr "Filamente" -#: src/slic3r/GUI/ConfigWizard.cpp:1471 src/slic3r/GUI/ConfigWizard.cpp:2013 +#: src/slic3r/GUI/ConfigWizard.cpp:1872 src/slic3r/GUI/ConfigWizard.cpp:2524 msgid "Filaments" msgstr "Filamente" -#: src/libslic3r/Zipper.cpp:72 +#: src/slic3r/GUI/ConfigWizard.cpp:691 +msgid "Filaments marked with * are not compatible with some installed printers." +msgstr "Mit * markierte Filamente sind nicht kompatibel mit einigen installierten Druckern." + +#: src/libslic3r/miniz_extension.cpp:131 msgid "file close failed" msgstr "Dateischließen fehlgeschlagen" -#: src/libslic3r/Zipper.cpp:66 +#: src/libslic3r/miniz_extension.cpp:125 msgid "file create failed" msgstr "Dateierzeugen fehlgeschlagen" -#: src/slic3r/GUI/MainFrame.cpp:791 +#: src/slic3r/GUI/MainFrame.cpp:1492 msgid "File Not Found" msgstr "Datei nicht gefunden" -#: src/libslic3r/Zipper.cpp:86 +#: src/libslic3r/miniz_extension.cpp:145 msgid "file not found" msgstr "Datei nicht gefunden" -#: src/libslic3r/Zipper.cpp:64 +#: src/libslic3r/miniz_extension.cpp:123 msgid "file open failed" msgstr "Öffnen der Datei fehlgeschlagen" -#: src/libslic3r/Zipper.cpp:70 +#: src/libslic3r/miniz_extension.cpp:129 msgid "file read failed" msgstr "Dateilesen fehlgeschlagen" -#: src/libslic3r/Zipper.cpp:74 +#: src/libslic3r/miniz_extension.cpp:133 msgid "file seek failed" msgstr "Dateizugriff fehlgeschlagen" -#: src/libslic3r/Zipper.cpp:76 +#: src/libslic3r/miniz_extension.cpp:135 msgid "file stat failed" msgstr "Zugriff auf Dateieigenschaften fehlgeschlagen" -#: src/libslic3r/Zipper.cpp:36 +#: src/libslic3r/miniz_extension.cpp:95 msgid "file too large" msgstr "Datei zu groß" -#: src/libslic3r/Zipper.cpp:68 +#: src/libslic3r/miniz_extension.cpp:127 msgid "file write failed" msgstr "Schreiben der Datei fehlgeschlagen" -#: src/slic3r/GUI/PrintHostDialogs.cpp:153 +#: src/slic3r/GUI/PrintHostDialogs.cpp:151 msgid "Filename" msgstr "Dateiname" -#: src/libslic3r/PrintConfig.cpp:775 +#: src/libslic3r/PrintConfig.cpp:811 msgid "Fill angle" msgstr "Füllwinkel" -#: src/libslic3r/PrintConfig.cpp:789 +#: src/libslic3r/PrintConfig.cpp:825 msgid "Fill density" msgstr "Fülldichte" -#: src/libslic3r/PrintConfig.cpp:826 +#: src/libslic3r/PrintConfig.cpp:862 msgid "Fill pattern" msgstr "Füllmuster" -#: src/libslic3r/PrintConfig.cpp:437 +#: src/libslic3r/PrintConfig.cpp:473 msgid "Fill pattern for bottom infill. This only affects the bottom external visible layer, and not its adjacent solid shells." msgstr "Füllmuster für die Boden Füllung. Dies wirkt sich nur auf die äußere sichtbare Bodenschicht aus, nicht aber auf die angrenzenden massiven Konturen." -#: src/libslic3r/PrintConfig.cpp:828 +#: src/libslic3r/PrintConfig.cpp:864 msgid "Fill pattern for general low-density infill." msgstr "Füllmuster für allgemeines Infill mit niedriger Dichte." -#: src/libslic3r/PrintConfig.cpp:417 +#: src/libslic3r/PrintConfig.cpp:451 msgid "Fill pattern for top infill. This only affects the top visible layer, and not its adjacent solid shells." msgstr "Füllmuster für die obere Füllung. Dies betrifft nur die obere sichtbare Schicht und nicht die angrenzenden massiven Konturen." @@ -2916,7 +3335,7 @@ msgstr "Füllmuster für die obere Füllung. Dies betrifft nur die obere sichtba msgid "Finished" msgstr "Fertig" -#: src/slic3r/GUI/ConfigWizard.cpp:891 src/slic3r/GUI/Tab.cpp:1947 +#: src/slic3r/GUI/ConfigWizard.cpp:1257 src/slic3r/GUI/Tab.cpp:2132 msgid "Firmware" msgstr "Firmware" @@ -2928,44 +3347,52 @@ msgstr "Firmware Flasher" msgid "Firmware image:" msgstr "Firmware Image:" -#: src/slic3r/GUI/Tab.cpp:2577 +#: src/slic3r/GUI/Tab.cpp:2733 msgid "Firmware Retraction" msgstr "Firmware Einzug" -#: src/slic3r/GUI/ConfigWizard.cpp:891 +#: src/slic3r/GUI/ConfigWizard.cpp:1257 msgid "Firmware Type" msgstr "Firmware Typ" -#: src/libslic3r/PrintConfig.cpp:859 src/libslic3r/PrintConfig.cpp:868 -#: src/libslic3r/PrintConfig.cpp:876 src/libslic3r/PrintConfig.cpp:910 +#: src/libslic3r/PrintConfig.cpp:899 src/libslic3r/PrintConfig.cpp:908 +#: src/libslic3r/PrintConfig.cpp:918 src/libslic3r/PrintConfig.cpp:952 msgid "First layer" msgstr "Erste Schicht" -#: src/slic3r/GUI/ConfigManipulation.cpp:61 src/libslic3r/PrintConfig.cpp:889 +#: src/libslic3r/PrintConfig.cpp:909 +msgid "First layer bed temperature" +msgstr "Erste Schicht Bett-Temperatur" + +#: src/slic3r/GUI/ConfigManipulation.cpp:60 src/libslic3r/PrintConfig.cpp:931 msgid "First layer height" msgstr "Höhe der ersten Schicht" -#: src/libslic3r/Print.cpp:1422 +#: src/libslic3r/Print.cpp:1448 msgid "First layer height can't be greater than nozzle diameter" msgstr "Schichthöhe der ersten Schicht darf nicht größer sein als der Düsendurchmesser" -#: src/libslic3r/PrintConfig.cpp:900 +#: src/libslic3r/PrintConfig.cpp:960 +msgid "First layer nozzle temperature" +msgstr "Erste Schicht Düsentemperatur" + +#: src/libslic3r/PrintConfig.cpp:942 msgid "First layer speed" msgstr "Druckgeschwindigkeit der ersten Schicht" -#: src/slic3r/GUI/PresetHints.cpp:219 +#: src/slic3r/GUI/PresetHints.cpp:218 msgid "First layer volumetric" msgstr "Volumenparameter der ersten Schicht" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1647 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1776 msgid "Fix through the Netfabb" msgstr "Reparieren mittels Netfabb" -#: src/slic3r/GUI/Plater.cpp:3473 +#: src/slic3r/GUI/Plater.cpp:3278 msgid "Fix Throught NetFabb" msgstr "Reparieren mittels Netfabb" -#: src/slic3r/GUI/GUI_App.cpp:824 +#: src/slic3r/GUI/GUI_App.cpp:1522 msgid "Flash printer &firmware" msgstr "Flashe Drucker &Firmware" @@ -2993,24 +3420,32 @@ msgstr "Es wird geflashed. Bitte nicht den Drucker abklemmen!" msgid "Flashing succeeded!" msgstr "Flashen erfolgreich!" -#: src/slic3r/GUI/Tab.cpp:1218 +#: src/slic3r/GUI/Tab.cpp:1548 msgid "Flow" msgstr "Fluss" -#: src/slic3r/GUI/PresetHints.cpp:220 +#: src/libslic3r/PrintConfig.cpp:1145 +msgid "Flow rate" +msgstr "Flussrate" + +#: src/slic3r/GUI/PresetHints.cpp:219 msgid "flow rate is maximized" msgstr "die Durchflussmenge ist am Maximum" -#: src/slic3r/GUI/UpdateDialogs.cpp:286 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:555 +msgid "Following printer preset(s) is duplicated:%1%The above preset for printer \"%2%\" will be used just once." +msgstr "Folgende Druckervoreinstellung(en) wird (werden) dupliziert:%1% Die obige Voreinstellung für den Drucker \"%2%\" wird nur einmal verwendet." + +#: src/slic3r/GUI/UpdateDialogs.cpp:287 msgid "For more information please visit our wiki page:" msgstr "Für weitere Informationen besuchen Sie bitte unsere Wiki-Seite:" -#: src/slic3r/GUI/Plater.cpp:501 src/slic3r/GUI/Plater.cpp:624 +#: src/slic3r/GUI/Plater.cpp:367 src/slic3r/GUI/Plater.cpp:490 msgid "For support enforcers only" msgstr "Nur für Stützverstärker" #. TRN Description for "WHITE BULLET" -#: src/slic3r/GUI/Tab.cpp:3267 +#: src/slic3r/GUI/Tab.cpp:3702 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." @@ -3018,25 +3453,25 @@ msgstr "" "Beim linken Knopf: zeigt eine Nicht-System- (oder Nicht-Standard-) Einstellung an.\n" "Beim rechten Knopf: zeigt an, dass die Einstellung nicht geändert wurde." -#: src/slic3r/GUI/ConfigManipulation.cpp:136 +#: src/slic3r/GUI/ConfigManipulation.cpp:135 msgid "" "For the Wipe Tower to work with the soluble supports, the support layers\n" "need to be synchronized with the object layers." msgstr "Damit der Reinigungsturm mit den löslichen Trägermaterialien arbeiten kann, müssen die Stützschichten mit den Objektschichten synchronisiert sein." -#: src/libslic3r/Print.cpp:1396 +#: src/libslic3r/Print.cpp:1422 msgid "For the Wipe Tower to work with the soluble supports, the support layers need to be synchronized with the object layers." msgstr "Damit der Reinigungsturm mit den löslichen Trägermaterialien arbeiten kann, müssen die Stützschichten mit den Objektschichten synchronisiert sein." -#: src/libslic3r/PrintConfig.cpp:2864 +#: src/libslic3r/PrintConfig.cpp:3028 msgid "Force pad around object everywhere" msgstr "Grundschicht überall um Objekt erzwingen" -#: src/libslic3r/PrintConfig.cpp:1729 +#: src/libslic3r/PrintConfig.cpp:1844 msgid "Force solid infill for regions having a smaller area than the specified threshold." msgstr "Massives Infill für Bereiche, die eine kleinere Fläche als die angegebene Schwelle aufweisen." -#: src/libslic3r/PrintConfig.cpp:1072 +#: src/libslic3r/PrintConfig.cpp:1116 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 "Erzwingt die Erzeugung von massiven Schalen zwischen benachbarten Materialien/Volumina. Geeignet für Multiextruderdrucke mit transluzenten Materialien oder manuell löslichen Trägermaterialien." @@ -3044,27 +3479,31 @@ msgstr "Erzwingt die Erzeugung von massiven Schalen zwischen benachbarten Materi msgid "From" msgstr "Von" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2223 +#: src/slic3r/GUI/GCodeViewer.cpp:2197 +msgid "from" +msgstr "von" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2389 msgid "From Object List You can't delete the last solid part from object." msgstr "Sie können nicht das letzte solide Teil des Objekts von der Objektliste löschen." -#: src/slic3r/GUI/MainFrame.cpp:667 +#: src/slic3r/GUI/MainFrame.cpp:964 src/slic3r/GUI/MainFrame.cpp:1284 msgid "Front" msgstr "Front" -#: src/slic3r/GUI/MainFrame.cpp:667 +#: src/slic3r/GUI/MainFrame.cpp:964 src/slic3r/GUI/MainFrame.cpp:1284 msgid "Front View" msgstr "Frontalansicht" -#: src/slic3r/GUI/Tab.cpp:1013 +#: src/slic3r/GUI/Tab.cpp:1331 msgid "full profile name" msgstr "vollständiger Profilname" -#: src/slic3r/GUI/MainFrame.cpp:826 +#: src/slic3r/GUI/MainFrame.cpp:1527 msgid "G-code" msgstr "G-Code" -#: src/slic3r/GUI/DoubleSlider.cpp:1021 +#: src/slic3r/GUI/DoubleSlider.cpp:1146 msgid "" "G-code associated to this tick mark is in a conflict with print mode.\n" "Editing it will cause changes of Slider data." @@ -3072,220 +3511,273 @@ msgstr "" "Der mit diesem Häkchen verbundene G-Code steht in Konflikt mit dem Druckmodus.\n" "Seine Bearbeitung führt zu Änderungen der Slicer-Daten." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:130 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:165 msgid "G-code file exported to %1%" msgstr "G-Code Datei exportiert nach %1%" -#: src/libslic3r/PrintConfig.cpp:936 +#: src/libslic3r/PrintConfig.cpp:980 msgid "G-code flavor" msgstr "G-Code Typ" -#: src/libslic3r/PrintConfig.cpp:721 +#: src/slic3r/GUI/MainFrame.cpp:66 src/slic3r/GUI/MainFrame.cpp:79 +msgid "G-code preview" +msgstr "G-Code Vorschau" + +#: src/libslic3r/PrintConfig.cpp:3552 +msgid "G-code viewer" +msgstr "G-Code-Viewer" + +#: src/libslic3r/PrintConfig.cpp:757 msgid "g/cm³" msgstr "g/cm³" -#: src/libslic3r/PrintConfig.cpp:2505 +#: src/libslic3r/PrintConfig.cpp:2648 msgid "g/ml" msgstr "g/ml" -#: src/slic3r/GUI/GUI_Preview.cpp:244 src/libslic3r/ExtrusionEntity.cpp:317 -#: src/libslic3r/PrintConfig.cpp:918 +#: src/slic3r/GUI/GUI_Preview.cpp:309 src/libslic3r/ExtrusionEntity.cpp:322 +#: src/libslic3r/ExtrusionEntity.cpp:352 src/libslic3r/PrintConfig.cpp:962 msgid "Gap fill" msgstr "Lückenfüllung" -#: src/slic3r/GUI/Preferences.cpp:22 src/slic3r/GUI/Tab.cpp:1796 -#: src/slic3r/GUI/Tab.cpp:2040 +#: src/slic3r/GUI/Preferences.cpp:24 src/slic3r/GUI/Tab.cpp:2058 +#: src/slic3r/GUI/Tab.cpp:2240 src/slic3r/GUI/Tab.cpp:2348 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1066 msgid "General" msgstr "Allgemein" -#: src/libslic3r/PrintConfig.cpp:1307 +#: 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 "Erzeugt nicht weniger als die Anzahl der Schürzenschleifen, die benötigt wird, um die angegebene Menge an Filament auf der unteren Schicht zu verbrauchen. Bei Multiextruder-Maschinen gilt dieses Minimum für jeden Extruder." -#: src/libslic3r/PrintConfig.cpp:1865 +#: src/libslic3r/PrintConfig.cpp:2007 msgid "Generate support material" msgstr "Generiere Stützstrukturen" -#: src/libslic3r/PrintConfig.cpp:1926 +#: src/libslic3r/PrintConfig.cpp:2068 msgid "Generate support material for the specified number of layers counting from bottom, regardless of whether normal support material is enabled or not and regardless of any angle threshold. This is useful for getting more adhesion of objects having a very thin or poor footprint on the build plate." msgstr "Generiere Stützstrukturen für die angegebene Anzahl von Schichten, die von unten gezählt werden, unabhängig davon, ob normale Stützstrukturen aktiviert sind oder nicht und unabhängig von einer Winkelschwelle. Dies ist nützlich, um die Haftung von Objekten mit einem sehr dünnen oder schlechten Standfuß auf der Bauplatte zu erhöhen." -#: src/libslic3r/PrintConfig.cpp:2613 +#: src/libslic3r/PrintConfig.cpp:2756 msgid "Generate supports" msgstr "Stützstrukturen generieren" -#: src/libslic3r/PrintConfig.cpp:2615 +#: src/libslic3r/PrintConfig.cpp:2758 msgid "Generate supports for the models" msgstr "Erzeugt Stützstrukturen für die Modelle" -#: src/libslic3r/Print.cpp:1614 +#: src/slic3r/GUI/Plater.cpp:3554 +msgid "generated warnings" +msgstr "erzeugte Warnungen" + +#: src/libslic3r/Print.cpp:1645 msgid "Generating brim" msgstr "Generiere Rand" -#: src/libslic3r/Print.cpp:1642 +#: src/libslic3r/Print.cpp:1680 msgid "Generating G-code" msgstr "Generiere G-Code" -#: src/libslic3r/SLAPrintSteps.cpp:48 +#: src/slic3r/GUI/GCodeViewer.cpp:1392 +msgid "Generating index buffers" +msgstr "Generiere Indexpuffer" + +#: src/libslic3r/SLAPrintSteps.cpp:49 msgid "Generating pad" msgstr "Generiere Grundschicht" -#: src/libslic3r/PrintObject.cpp:152 +#: src/libslic3r/PrintObject.cpp:158 msgid "Generating perimeters" msgstr "Generiere Außenkonturen" -#: src/libslic3r/Print.cpp:1606 +#: src/libslic3r/Print.cpp:1636 msgid "Generating skirt" msgstr "Generiere Schürze" -#: src/libslic3r/PrintObject.cpp:395 +#: src/libslic3r/PrintObject.cpp:422 msgid "Generating support material" msgstr "Generiere Stützstrukturen" -#: src/libslic3r/SLAPrintSteps.cpp:46 src/libslic3r/SLAPrintSteps.cpp:356 +#: src/libslic3r/SLAPrintSteps.cpp:47 src/libslic3r/SLAPrintSteps.cpp:359 msgid "Generating support points" msgstr "Erzeuge Stützpunkte" -#: src/libslic3r/SLAPrintSteps.cpp:47 +#: src/libslic3r/SLAPrintSteps.cpp:48 msgid "Generating support tree" msgstr "Erzeuge Baumstützstruktur" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2022 +#: src/slic3r/GUI/GCodeViewer.cpp:933 +msgid "Generating toolpaths" +msgstr "Generiere Werkzeugwege" + +#: src/slic3r/GUI/GCodeViewer.cpp:1318 +msgid "Generating vertex buffer" +msgstr "Erzeuge den Vertex-Puffer" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2181 msgid "Generic" msgstr "Generisch" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:175 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:169 msgid "Gizmo cut" msgstr "Gizmo Schnitt" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:172 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:166 msgid "Gizmo move" msgstr "Gizmo Bewegung" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:176 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:198 +msgid "Gizmo move: Press to snap by 1mm" +msgstr "Gizmo Bewegung: Drücken um um 1 mm zu Rasten" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:170 msgid "Gizmo Place face on bed" msgstr "Gizmo auf Fläche platzieren" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:174 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:168 msgid "Gizmo rotate" msgstr "Gizmo Rotieren" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:173 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:203 +msgid "Gizmo rotate: Press to rotate selected objects around their own center" +msgstr "Gizmo Rotieren: Drücken, um ausgewählte Objekte um ihr eigenes Zentrum zu drehen" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:167 msgid "Gizmo scale" msgstr "Gizmo Skalieren" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:177 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:201 +msgid "Gizmo scale: Press to activate one direction scaling" +msgstr "Gizmo Skalieren: Drücken, um Eine-Richtung-Skalierung zu aktivieren" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:202 +msgid "Gizmo scale: Press to scale selected objects around their own center" +msgstr "Gizmo Skalieren: Drücken, um ausgewählte Objekte um ihr eigenes Zentrum zu skalieren" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:199 +msgid "Gizmo scale: Press to snap by 5%" +msgstr "Gizmo Skalieren: Drücken, um um 5% zu rasten" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:200 +msgid "Gizmo scale: Scale selection to fit print volume" +msgstr "Gizmo Skalieren: Auswahl skalieren, um in das Druckvolumen zu passen" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:171 msgid "Gizmo SLA hollow" msgstr "Gizmo SLA Aushöhlung" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:178 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:172 msgid "Gizmo SLA support points" msgstr "Gizmo SLA Stützpunkte" -#: src/slic3r/GUI/GLCanvas3D.cpp:2921 -#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:562 +#: src/slic3r/GUI/GLCanvas3D.cpp:3165 +#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:520 msgid "Gizmo-Move" msgstr "Gizmo Bewegen" -#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:489 +#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:639 msgid "Gizmo-Place on Face" msgstr "Gizmo Auf Fläche legen" -#: src/slic3r/GUI/GLCanvas3D.cpp:3001 -#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:564 +#: src/slic3r/GUI/GLCanvas3D.cpp:3249 +#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:522 msgid "Gizmo-Rotate" msgstr "Gizmo-Rotation" -#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:563 +#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:521 msgid "Gizmo-Scale" msgstr "Gizmo Skalierung" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:201 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:199 msgid "Gizmos" msgstr "Gizmos" -#: src/slic3r/GUI/AboutDialog.cpp:259 +#: src/slic3r/GUI/AboutDialog.cpp:284 src/slic3r/GUI/GUI_App.cpp:244 msgid "GNU Affero General Public License, version 3" msgstr "GNU Affero General Public License, Version 3" -#: src/slic3r/GUI/ConfigWizard.cpp:980 +#: src/slic3r/GUI/ConfigWizard.cpp:1346 msgid "Good precision is required, so use a caliper and do multiple measurements along the filament, then compute the average." msgstr "Eine hohe Genauigkeit ist erforderlich, also verwenden Sie einen Messschieber und führen Sie mehrere Messungen entlang des Filaments durch, um dann den Mittelwert zu berechnen." -#: src/libslic3r/PrintConfig.cpp:844 +#: src/libslic3r/PrintConfig.cpp:882 msgid "Grid" msgstr "Gitternetz" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2454 +#: src/slic3r/GUI/PrintHostDialogs.cpp:57 +msgid "Group" +msgstr "Gruppe" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2846 msgid "Group manipulation" msgstr "Gruppenbearbeitung" -#: src/slic3r/GUI/Preferences.cpp:133 +#: src/slic3r/GUI/Preferences.cpp:200 msgid "GUI" msgstr "GUI" -#: src/libslic3r/PrintConfig.cpp:852 +#: src/libslic3r/PrintConfig.cpp:890 msgid "Gyroid" msgstr "Gyroid" -#: src/slic3r/GUI/Tab.cpp:2937 -msgid "has the following unsaved changes:" -msgstr "hat die folgenden ungesicherten Änderungen:" - -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:47 msgid "Head diameter" msgstr "Kopfdurchmesser" -#: src/slic3r/GUI/ConfigManipulation.cpp:317 +#: src/libslic3r/PrintConfig.cpp:2772 +msgid "Head penetration" +msgstr "Kopfeindringung" + +#: src/slic3r/GUI/ConfigManipulation.cpp:322 msgid "Head penetration should not be greater than the head width." msgstr "Die Kopfeindringung sollte nicht größer als die Kopfbreite sein." -#: src/libslic3r/PrintConfig.cpp:869 +#: src/libslic3r/PrintConfig.cpp:910 msgid "Heated build plate temperature for the first layer. Set this to zero to disable bed temperature control commands in the output." msgstr "Druckbetttemperatur für die erste Schicht. Setzen Sie diesen Wert auf null, um die Befehle zur Steuerung der Betttemperatur im Ausgang zu deaktivieren." -#: src/slic3r/GUI/GUI_Preview.cpp:222 src/libslic3r/PrintConfig.cpp:500 +#: src/slic3r/GUI/GUI_Preview.cpp:276 src/libslic3r/PrintConfig.cpp:536 msgid "Height" msgstr "Höhe" -#: src/libslic3r/GCode/PreviewData.cpp:347 +#: src/slic3r/GUI/GCodeViewer.cpp:2236 src/libslic3r/GCode/PreviewData.cpp:352 msgid "Height (mm)" msgstr "Höhe (mm)" -#: src/libslic3r/PrintConfig.cpp:1688 +#: src/libslic3r/PrintConfig.cpp:1796 msgid "Height of skirt expressed in layers. Set this to a tall value to use skirt as a shield against drafts." msgstr "Höhe der Schürze in Schichten. Eine hohe Schürze kann gegen Zugluft schützen." -#: src/libslic3r/PrintConfig.cpp:2360 +#: src/libslic3r/PrintConfig.cpp:2503 msgid "Height of the display" msgstr "Displayhöhe" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1500 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1631 msgid "Height range Modifier" msgstr "Höhenbereich Modifizierer" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2507 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2899 msgid "Height ranges" msgstr "Höhenbereiche" -#: src/libslic3r/PrintConfig.cpp:261 +#: src/libslic3r/PrintConfig.cpp:295 msgid "Heights at which a filament change is to occur." msgstr "Höhen, bei denen eine Filamentwechsel stattfinden soll." -#: src/slic3r/GUI/ConfigWizard.cpp:433 +#: src/slic3r/GUI/ConfigWizard.cpp:451 #, 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 "Hallo, willkommen bei %s! Dieses %s hilft Ihnen bei der Erstkonfiguration; nur ein paar Einstellungen und Sie sind bereit zum Drucken." -#: src/libslic3r/PrintConfig.cpp:3365 +#: src/libslic3r/PrintConfig.cpp:3564 msgid "Help" msgstr "Hilfe" -#: src/libslic3r/PrintConfig.cpp:3371 +#: src/libslic3r/PrintConfig.cpp:3570 msgid "Help (FFF options)" msgstr "Hilfe (FFF Optionen)" -#: src/libslic3r/PrintConfig.cpp:3376 +#: src/libslic3r/PrintConfig.cpp:3575 msgid "Help (SLA options)" msgstr "Hilfe (SLA Optionen)" @@ -3293,96 +3785,80 @@ msgstr "Hilfe (SLA Optionen)" msgid "Here you can adjust required purging volume (mm³) for any given pair of tools." msgstr "Hier können Sie das erforderliche Reinigungsvolumen (mm³) für ein beliebiges Werkzeugpaar einstellen." -#: src/libslic3r/PrintConfig.cpp:973 +#: src/libslic3r/PrintConfig.cpp:1017 msgid "High extruder current on filament swap" msgstr "Hohe Extruderstromstärke beim Filamentwechsel" -#: src/slic3r/GUI/GLCanvas3D.cpp:277 +#: src/slic3r/GUI/GLCanvas3D.cpp:263 msgid "Higher print quality versus higher print speed." msgstr "Höhere Druckqualität versus höhere Druckgeschwindigkeit." -#: src/libslic3r/PrintConfig.cpp:427 src/libslic3r/PrintConfig.cpp:853 +#: src/libslic3r/PrintConfig.cpp:463 src/libslic3r/PrintConfig.cpp:891 msgid "Hilbert Curve" msgstr "HIlbertkurve" -#: src/slic3r/GUI/Plater.cpp:1042 +#: src/slic3r/GUI/Plater.cpp:916 msgid "Hold Shift to Slice & Export G-code" msgstr "Halten Sie die Umschalttaste gedrückt, um zu slicen und den G-Code zu exportieren" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:47 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:46 msgid "Hole depth" msgstr "Lochtiefe" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:46 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:45 msgid "Hole diameter" msgstr "Lochdurchmesser" -#: src/slic3r/GUI/Plater.cpp:2760 -msgid "Hollow" -msgstr "Aushöhlen" - -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:977 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:785 msgid "Hollow and drill" msgstr "Aushöhlen und Bohren" -#: src/libslic3r/PrintConfig.cpp:2910 +#: src/libslic3r/PrintConfig.cpp:3074 msgid "Hollow out a model to have an empty interior" msgstr "Ein Modell aushöhlen, um einen leeren Innenraum zu erhalten" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:41 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:40 msgid "Hollow this object" msgstr "Dieses Objekt aushöhlen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:108 src/slic3r/GUI/Tab.cpp:3654 -#: src/slic3r/GUI/Tab.cpp:3655 src/libslic3r/SLA/Hollowing.cpp:46 -#: src/libslic3r/SLA/Hollowing.cpp:58 src/libslic3r/SLA/Hollowing.cpp:67 -#: src/libslic3r/SLA/Hollowing.cpp:76 src/libslic3r/PrintConfig.cpp:2909 -#: src/libslic3r/PrintConfig.cpp:2916 src/libslic3r/PrintConfig.cpp:2926 -#: src/libslic3r/PrintConfig.cpp:2935 +#: src/slic3r/GUI/GUI_ObjectList.cpp:106 src/slic3r/GUI/Tab.cpp:4073 +#: src/slic3r/GUI/Tab.cpp:4074 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:3073 +#: src/libslic3r/PrintConfig.cpp:3080 src/libslic3r/PrintConfig.cpp:3090 +#: src/libslic3r/PrintConfig.cpp:3099 msgid "Hollowing" msgstr "Aushöhlen" -#: src/slic3r/GUI/Plater.cpp:2926 -msgid "Hollowing cancelled." -msgstr "Aushöhlen abgebrochen." - -#: src/slic3r/GUI/Plater.cpp:2927 -msgid "Hollowing done." -msgstr "Aushöhlung erledigt." - -#: src/slic3r/GUI/Plater.cpp:2929 -msgid "Hollowing failed." -msgstr "Das Aushöhlen ist fehlgeschlagen." - -#: src/libslic3r/PrintConfig.cpp:2937 +#: src/libslic3r/PrintConfig.cpp:3101 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 inflated back to the specified offset. A greater closing distance makes the interior more rounded. At zero, the interior will resemble the exterior the most." msgstr "Das Aushöhlen erfolgt in zwei Schritten: Zuerst wird ein imaginärer Innenraum tiefer (Versatz plus Schließabstand) in das Objekt hinein berechnet und dann wird es wieder auf den angegebenen Versatz aufgeblasen. Ein größerer Schließabstand macht den Innenraum runder. Bei Null wird der Innenraum dem Außenraum am ähnlichsten sein." -#: src/libslic3r/SLAPrintSteps.cpp:43 +#: src/libslic3r/SLAPrintSteps.cpp:44 msgid "Hollowing model" msgstr "Aushöhlen des Modells" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:813 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:624 msgid "Hollowing parameter change" msgstr "Änderung der Aushöhlungsparameter" -#: src/libslic3r/PrintConfig.cpp:850 src/libslic3r/PrintConfig.cpp:2011 +#: src/libslic3r/PrintConfig.cpp:888 src/libslic3r/PrintConfig.cpp:2153 msgid "Honeycomb" msgstr "Bienenwabe" -#: src/slic3r/GUI/Tab.cpp:1064 +#: src/slic3r/GUI/Tab.cpp:1386 msgid "Horizontal shells" msgstr "Horizontale Konturhüllen" -#: src/libslic3r/PrintConfig.cpp:245 +#: 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." -#: src/slic3r/GUI/PrintHostDialogs.cpp:152 +#: src/slic3r/GUI/PrintHostDialogs.cpp:150 msgid "Host" msgstr "Host" -#: src/libslic3r/PrintConfig.cpp:1332 +#: src/libslic3r/PrintConfig.cpp:1440 msgid "Host Type" msgstr "Host Typ" @@ -3390,11 +3866,11 @@ msgstr "Host Typ" msgid "Hostname" msgstr "Hostname" -#: src/libslic3r/PrintConfig.cpp:97 +#: src/libslic3r/PrintConfig.cpp:99 msgid "Hostname, IP or URL" msgstr "Hostname, IP oder URL" -#: src/slic3r/GUI/Tab.cpp:139 +#: src/slic3r/GUI/Tab.cpp:210 msgid "" "Hover the cursor over buttons to find more information \n" "or click this button." @@ -3402,57 +3878,66 @@ msgstr "" "Bewegen Sie den Mauszeiger über die Schaltflächen, um weitere Informationen zu erhalten,\n" "oder klicken Sie auf diese Schaltfläche." -#: src/libslic3r/PrintConfig.cpp:2812 +#: src/libslic3r/PrintConfig.cpp:2976 msgid "How far should the pad extend around the contained geometry" msgstr "Wie weit sich die Grundschicht um die enthaltene Geometrie erstrecken soll" -#: src/libslic3r/PrintConfig.cpp:2901 +#: src/libslic3r/PrintConfig.cpp:3065 msgid "How much should the tiny connectors penetrate into the model body." msgstr "Wie weit die kleinen Verbinder in den Modellkörper eindringen sollen." -#: src/libslic3r/PrintConfig.cpp:2631 +#: src/libslic3r/PrintConfig.cpp:2774 msgid "How much the pinhead has to penetrate the model surface" msgstr "Wie tief der Nadelkopf in die Modelloberfläche eindringt" -#: src/libslic3r/PrintConfig.cpp:2755 +#: src/libslic3r/PrintConfig.cpp:2919 msgid "How much the supports should lift up the supported object. If \"Pad around object\" is enabled, this value is ignored." msgstr "Wie viel die Stützen das unterstützte Objekt anheben sollen. Wenn \"Grundschicht um Objekt\" aktiviert ist, wird dieser Wert ignoriert." -#: src/libslic3r/PrintConfig.cpp:111 +#: src/libslic3r/PrintConfig.cpp:1209 +msgid "How to apply limits" +msgstr "Wie man Grenzen anwendet" + +#: src/libslic3r/PrintConfig.cpp:1203 +msgid "How to apply the Machine Limits" +msgstr "Wie man Maschinengrenzen anwendet" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:358 +#: src/libslic3r/PrintConfig.cpp:113 msgid "HTTPS CA File" msgstr "HTTPS CA Datei" -#: src/slic3r/GUI/Tab.cpp:1713 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:319 msgid "HTTPS CA file is optional. It is only needed if you use HTTPS with a self-signed certificate." msgstr "HTTPS-CA-Datei ist optional. Sie wird nur benötigt, wenn Sie HTTPS mit einem selbstsignierten Zertifikat verwenden." -#: src/slic3r/GUI/Preferences.cpp:222 +#: src/slic3r/GUI/Preferences.cpp:376 msgid "Icon size in a respect to the default size" msgstr "Symbolgröße in Bezug auf die Standardgröße" -#: src/slic3r/GUI/PrintHostDialogs.cpp:149 +#: src/slic3r/GUI/PrintHostDialogs.cpp:147 msgid "ID" msgstr "ID" -#: src/libslic3r/PrintConfig.cpp:1873 +#: src/libslic3r/PrintConfig.cpp:2015 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 "Wenn dieses Kontrollkästchen aktiviert ist, werden Stützstrukturen automatisch basierend auf dem Schwellenwert für den Überhang generiert. Wenn diese Option nicht aktiviert ist, werden Stützen nur innerhalb der Volumen der \"Stützverstärker\" generiert." -#: src/slic3r/GUI/ConfigWizard.cpp:773 +#: src/slic3r/GUI/ConfigWizard.cpp:1132 #, c-format msgid "If enabled, %s checks for new application versions online. When a new version becomes available, a notification is displayed at the next application startup (never during program usage). This is only a notification mechanisms, no automatic installation is done." msgstr "Falls aktiviert, sucht %s online nach neuen Versionen der Anwendung. Falls eine neue Version verfügbar ist, wird eine Mitteilung beim nächsten Programmstart angezeigt (aber nie während der Programmausführung). Dies dient nur der Mitteilung; es findet keine automatische Installation statt." -#: src/slic3r/GUI/ConfigWizard.cpp:783 +#: src/slic3r/GUI/ConfigWizard.cpp:1142 #, c-format msgid "If enabled, %s downloads updates of built-in system presets in the background.These updates are downloaded into a separate temporary location.When a new preset version becomes available it is offered at application startup." msgstr "Wenn aktiviert, lädt %s Updates der eingebauten Systemvoreinstellungen im Hintergrund herunter. Diese Updates werden in einen separaten temporären Speicherort heruntergeladen. Wenn eine neue Voreinstellungsversion verfügbar wird, wird sie beim Programmstart angeboten." -#: src/libslic3r/PrintConfig.cpp:1852 +#: src/libslic3r/PrintConfig.cpp:1994 msgid "If enabled, all printing extruders will be primed at the front edge of the print bed at the start of the print." msgstr "Wenn aktiviert, werden alle Druckextruder zu Beginn des Druckvorgangs an der Vorderkante des Druckbetts geprimt." -#: src/slic3r/GUI/ConfigWizard.cpp:805 +#: src/slic3r/GUI/ConfigWizard.cpp:1164 msgid "" "If enabled, allows the Reload from disk command to automatically find and load the files when invoked.\n" "If not enabled, the Reload from disk command will ask to select each file using an open file dialog." @@ -3460,127 +3945,172 @@ msgstr "" "Wenn diese Option aktiviert ist, ermöglicht der Befehl Von Festplatte neu laden das automatische Suchen und Laden der Dateien, wenn er aufgerufen wird.\n" "Wenn nicht aktiviert, fordert der Befehl Von der Festplatte neu laden jede Datei über ein Dialogfeld zum Öffnen von Dateien zur Auswahl auf." -#: src/slic3r/GUI/Preferences.cpp:74 +#: src/slic3r/GUI/Preferences.cpp:91 msgid "If enabled, allows the Reload from disk command to automatically find and load the files when invoked." msgstr "Wenn diese Option aktiviert ist, ermöglicht der Befehl \"Von Festplatte neu laden\" das automatische Suchen und Laden der Dateien, wenn er aufgerufen wird." -#: src/slic3r/GUI/Preferences.cpp:66 +#: src/slic3r/GUI/Preferences.cpp:238 +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 "Wenn diese Option aktiviert ist, gelten Änderungen, die mit dem sequentiellen Schieberegler in der Vorschau vorgenommen werden, nur für den G-Code der obersten Schicht. Wenn deaktiviert, werden Änderungen, die mit dem sequentiellen Schieberegler in der Vorschau vorgenommen werden, auf den gesamten G-Code angewendet." + +#: src/slic3r/GUI/Preferences.cpp:83 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 application startup (never during program usage). This is only a notification mechanisms, no automatic installation is done." msgstr "Wenn aktiviert, wird PrusaSlicer online nach den neuen Versionen von sich selbst suchen. Wenn eine neue Version verfügbar wird, wird beim nächsten Anwendungsstart (nie während der Programmnutzung) eine Benachrichtigung angezeigt. Dies ist nur ein Benachrichtigungsmechanismus, es erfolgt keine automatische Installation." -#: src/slic3r/GUI/Preferences.cpp:82 +#: src/slic3r/GUI/Preferences.cpp:270 +msgid "If enabled, renders object using the environment map." +msgstr "Wenn aktiviert, wird das Objekt mit Hilfe der Environment Map gerendert." + +#: src/slic3r/GUI/Preferences.cpp:200 +msgid "If enabled, reverses the direction of zoom with mouse wheel" +msgstr "Wenn aktiviert, wird die Richtung des Zooms mit dem Mausrad umgekehrt" + +#: src/slic3r/GUI/Preferences.cpp:99 msgid "If enabled, Slic3r downloads updates of built-in system presets in the background. These updates are downloaded into a separate temporary location. When a new preset version becomes available it is offered at application startup." msgstr "Wenn aktiviert, lädt Slic3r Updates der eingebauten Systemvoreinstellungen im Hintergrund herunter. Diese Updates werden in einen separaten temporären Speicherort heruntergeladen. Wenn eine neue Voreinstellungsversion verfügbar wird, wird sie beim Programmstart angeboten." -#: src/slic3r/GUI/Preferences.cpp:106 +#: src/slic3r/GUI/Preferences.cpp:137 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 "Wenn aktiviert, wird die 3D-Szene in Retina-Auflösung gerendert. Wenn Sie Probleme mit der 3D-Leistung haben, kann es hilfreich sein, diese Option zu deaktivieren." -#: src/libslic3r/PrintConfig.cpp:1696 +#: src/slic3r/GUI/Preferences.cpp:215 +msgid "If enabled, the button for the collapse sidebar will be appeared in top right corner of the 3D Scene" +msgstr "Wenn aktiviert, wird die Schaltfläche zum Zusammenklappen der Seitenleiste in der oberen rechten Ecke der 3D-Szene angezeigt" + +#: src/libslic3r/PrintConfig.cpp:3698 +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/libslic3r/PrintConfig.cpp:1804 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 "Wenn diese Option aktiviert ist, wird die Schürze so hoch wie das höchste gedruckte Objekt sein. Dies ist nützlich, um einen ABS- oder ASA-Druck vor dem Verziehen und Ablösen vom Druckbett aufgrund von Zugluft zu schützen." -#: src/libslic3r/PrintConfig.cpp:1858 +#: src/libslic3r/PrintConfig.cpp:2000 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 print the wipe tower. User is responsible for ensuring there is no collision with the print." msgstr "Wenn aktiviert, wird der Reinigungsturm nicht auf Schichten ohne Werkzeugwechsel gedruckt. Bei Schichten mit Werkzeugwechsel fährt der Extruder nach unten, um den Reinigungsturm zu drucken. Der Benutzer ist dafür verantwortlich, dass es nicht zu einer Kollision mit dem Druck kommt." -#: src/slic3r/GUI/Preferences.cpp:128 +#: src/slic3r/GUI/Preferences.cpp:193 msgid "If enabled, use free camera. If not enabled, use constrained camera." msgstr "Wenn aktiviert, verwenden Sie eine freie Kamera. Wenn nicht aktiviert, verwenden Sie eine beschränkte Kamera." -#: src/slic3r/GUI/Preferences.cpp:121 +#: src/slic3r/GUI/Preferences.cpp:186 msgid "If enabled, use perspective camera. If not enabled, use orthographic camera." msgstr "Wenn aktiviert, verwenden Sie eine perspektivische Kamera. Wenn nicht aktiviert, verwenden Sie eine orthographische Kamera." -#: src/slic3r/GUI/Preferences.cpp:145 +#: src/slic3r/GUI/Preferences.cpp:222 msgid "If enabled, you can change size of toolbar icons manually." msgstr "Wenn aktiviert, können Sie die Größe der Symbolleistensymbole manuell ändern." -#: src/slic3r/GUI/PresetHints.cpp:29 +#: src/slic3r/GUI/PresetHints.cpp:28 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 "Wenn die geschätzte Schichtzeit unter ~%1%s liegt, läuft der Lüfter mit %2%%% und die Druckgeschwindigkeit wird reduziert, so dass nicht weniger als %3%s für diese Schicht verwendet werden (die Geschwindigkeit wird jedoch nie unter %4%mm/s reduziert)." -#: src/slic3r/GUI/PresetHints.cpp:36 +#: src/slic3r/GUI/PresetHints.cpp:35 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 "Falls die erwartete Schichtdruckzeit größer, aber noch unterhalb von ~%1%s ist, wird der Lüfter mit einer sich proportional verringernden Geschwindigkeit zwischen %2%%% und %3%%% laufen." -#: src/libslic3r/PrintConfig.cpp:901 +#: src/libslic3r/PrintConfig.cpp:943 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 "Wird diese Geschwindigkeit als Absolutwert in mm/s angegeben, so wird sie auf alle Druckbewegungen der ersten Lage angewendet, unabhängig von ihrem Typ. In Prozent ausgedrückt (z.B. 40%) skaliert es die voreingestellten Geschwindigkeiten." -#: src/libslic3r/PrintConfig.cpp:573 +#: src/libslic3r/PrintConfig.cpp:609 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 "Wenn die Druckzeit der Ebenen unter dieser Anzahl von Sekunden liegt, wird der Lüfter aktiviert und seine Geschwindigkeit durch Interpolation der minimalen und maximalen Geschwindigkeiten berechnet." -#: src/libslic3r/PrintConfig.cpp:1706 +#: src/libslic3r/PrintConfig.cpp:1821 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 "Wenn die Druckzeit der Ebene unter dieser Anzahl von Sekunden liegt, wird die Geschwindigkeit des Druckvorgangs verringert, um die Zeitdauer auf diesen Wert zu verlängern." -#: src/libslic3r/PrintConfig.cpp:567 +#: src/libslic3r/PrintConfig.cpp:603 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 "Wenn diese Option aktiviert ist, wird der Lüfter niemals deaktiviert und läuft mindestens mit seiner Minimaldrehzahl weiter. Sinnvoll für PLA, ungeignet für ABS." -#: src/slic3r/GUI/Preferences.cpp:49 +#: src/slic3r/GUI/Preferences.cpp:66 msgid "If this is enabled, Slic3r will auto-center objects around the print bed center." msgstr "Wenn diese Option aktiviert ist, zentriert PrusaSlicer Objekte automatisch um die Mitte des Druckbettes." -#: src/slic3r/GUI/Preferences.cpp:57 +#: src/slic3r/GUI/Preferences.cpp:74 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 "Wenn diese Option aktiviert ist, wird PrusaSlicer Objekte vorverarbeiten, sobald sie geladen werden, um Zeit beim Export von G-Code zu sparen." -#: src/slic3r/GUI/Preferences.cpp:41 +#: src/slic3r/GUI/Preferences.cpp:54 msgid "If this is enabled, Slic3r will prompt the last output directory instead of the one containing the input files." msgstr "Wenn diese Option aktiviert ist, öffnet PrusaSlicer das letzte Ausgabeverzeichnis anstelle des Verzeichnisses, in dem sich die Eingabedateien befinden." -#: src/libslic3r/PrintConfig.cpp:1562 +#: src/slic3r/GUI/Preferences.cpp:125 +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 "Wenn dies aktiviert ist, wird beim Starten von PrusaSlicer, wenn bereits eine andere Instanz desselben PrusaSlicers läuft, diese Instanz stattdessen reaktiviert." + +#: src/libslic3r/PrintConfig.cpp:1670 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 "Wenn Sie diesen Wert auf einen positiven Wert setzen, wird Z bei jedem Auslösen eines Einzugs schnell angehoben. Bei Verwendung mehrerer Extruder wird nur die Einstellung für den ersten Extruder berücksichtigt." -#: src/libslic3r/PrintConfig.cpp:1571 +#: src/libslic3r/PrintConfig.cpp:1679 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 "Wenn Sie diesen Wert auf einen positiven Wert setzen, erfolgt der Z-Hub nur oberhalb des angegebenen absoluten Z-Wertes. Sie können diese Einstellung für das Auslassen von Z-Hüben auf den ersten Ebenen einstellen." -#: src/libslic3r/PrintConfig.cpp:1580 +#: src/libslic3r/PrintConfig.cpp:1688 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 "Wenn Sie diesen Wert auf einen positiven Wert setzen, erfolgt der Z-Hub nur unterhalb des angegebenen absoluten Z-Wertes. Sie können diese Einstellung so einstellen, dass der Z-Hub auf die ersten Lagen begrenzt wird." -#: src/libslic3r/PrintConfig.cpp:1454 +#: src/libslic3r/PrintConfig.cpp:1562 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. Scripts will be passed the absolute path to the G-code file as the first argument, and they can access the Slic3r config settings by reading environment variables." msgstr "Wenn Sie den Ausgabe-G-Code durch eigene Skripte verarbeiten wollen, geben Sie hier einfach die absoluten Pfade an. Trennen Sie mehrere Skripte durch ein Semikolon. Skripten wird als erstes Argument der absolute Pfad zur G-Code-Datei übergeben, und sie können auf die PrusaSlicer-Konfigurationseinstellungen zugreifen, indem sie Umgebungsvariablen lesen." -#: src/libslic3r/PrintConfig.cpp:530 +#: src/libslic3r/PrintConfig.cpp:566 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 of each extruder with respect to the first one. It expects positive coordinates (they will be subtracted from the XY coordinate)." msgstr "Wenn Ihre Firmware die Verschiebung des Extruders nicht beherrscht, benötigen Sie den G-Code, um sie zu berücksichtigen. Mit dieser Option können Sie die Verschiebung jedes Extruders in Bezug auf den ersten Extruder festlegen. Es erwartet positive Koordinaten (sie werden von der XY-Koordinate subtrahiert)." -#: src/libslic3r/PrintConfig.cpp:2169 +#: src/libslic3r/PrintConfig.cpp:2312 msgid "If your firmware requires relative E values, check this, otherwise leave it unchecked. Most firmwares use absolute values." msgstr "Wenn Ihre Firmware relative E-Werte benötigt, diese Option aktivieren, ansonsten lassen Sie sie unmarkiert. Die meisten Firmwares verwenden absolute Werte." -#: src/libslic3r/PrintConfig.cpp:3485 +#: src/libslic3r/PrintConfig.cpp:1219 +msgid "Ignore" +msgstr "Ignorieren" + +#: src/libslic3r/PrintConfig.cpp:3684 msgid "Ignore non-existent config files" msgstr "Ignoriere fehlende Konfigurationsdateien" -#: src/slic3r/GUI/MainFrame.cpp:464 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:192 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:173 +msgid "Ignores facets facing away from the camera." +msgstr "Ignoriert die von der Kamera abgewandten Flächen." + +#: src/slic3r/GUI/MainFrame.cpp:1055 msgid "Import &Config" msgstr "Importiere &Konfiguration" -#: src/slic3r/GUI/MainFrame.cpp:471 +#: src/slic3r/GUI/MainFrame.cpp:1062 msgid "Import Config &Bundle" msgstr "Importiere Konfi&gurationssamlung" -#: src/slic3r/GUI/MainFrame.cpp:467 +#: src/slic3r/GUI/MainFrame.cpp:1058 msgid "Import Config from &project" msgstr "Importiere Konfiguration von &Projekt" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:119 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:112 msgid "Import Config from ini/amf/3mf/gcode" msgstr "Konfiguration aus ini/amf/3mf/gcode importieren" -#: src/slic3r/GUI/Plater.cpp:4603 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:39 +msgid "Import file" +msgstr "Datei importieren" + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:46 +msgid "Import model and profile" +msgstr "Modell und Profil importieren" + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:48 +msgid "Import model only" +msgstr "Nur Modell importieren" + +#: src/slic3r/GUI/Plater.cpp:4655 msgid "Import Object" msgstr "Objekt importieren" -#: src/slic3r/GUI/Plater.cpp:4607 +#: src/slic3r/GUI/Plater.cpp:4659 msgid "Import Objects" msgstr "Objekte importieren" @@ -3588,15 +4118,50 @@ msgstr "Objekte importieren" msgid "Import of the repaired 3mf file failed" msgstr "Import einer reparierten 3MF Datei fehlgeschlagen" -#: src/slic3r/GUI/MainFrame.cpp:460 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:47 +msgid "Import profile only" +msgstr "Nur Profil importieren" + +#: src/slic3r/GUI/MainFrame.cpp:1050 +msgid "Import SL1 archive" +msgstr "SL1-Archiv importieren" + +#: src/slic3r/GUI/Plater.cpp:1561 +msgid "Import SLA archive" +msgstr "SLA-Archiv importieren" + +#: src/slic3r/GUI/MainFrame.cpp:1046 +msgid "Import STL (imperial units)" +msgstr "STL importieren (imperiale Einheiten)" + +#: src/slic3r/GUI/MainFrame.cpp:1042 msgid "Import STL/OBJ/AM&F/3MF" msgstr "Importiere STL/OBJ/AM&F/3MF" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:118 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:111 msgid "Import STL/OBJ/AMF/3MF without config, keep plater" msgstr "Importiere STL/OBJ/AMF/3MF mit Konfigurationsdaten, Druckplatte beibehalten" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3422 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:159 +msgid "Importing canceled." +msgstr "Importieren abgebrochen." + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:160 +msgid "Importing done." +msgstr "Importieren abgeschlossen." + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:135 +msgid "Importing SLA archive" +msgstr "Importiere SLA-Archiv" + +#: 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 "in" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:3885 #, c-format msgid "In this mode you can select only other %s Items%s" msgstr "In diesem Modus wählen Sie nur andere %s Elemente%s" @@ -3605,25 +4170,25 @@ msgstr "In diesem Modus wählen Sie nur andere %s Elemente%s" msgid "Incompatible bundles:" msgstr "Inkompatible Konfigurationssammlungen:" +#: src/slic3r/GUI/PresetComboBoxes.cpp:241 +msgid "Incompatible presets" +msgstr "Inkompatible Voreinstellungen" + #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:75 #, c-format msgid "Incompatible with this %s" msgstr "Nicht kompatibel mit diesem %s" -#: src/slic3r/GUI/Plater.cpp:4685 +#: src/slic3r/GUI/Plater.cpp:4790 msgid "Increase Instances" msgstr "Kopien erhöhen" -#: src/slic3r/GUI/GLCanvas3D.cpp:264 +#: src/slic3r/GUI/GLCanvas3D.cpp:251 msgid "Increase/decrease edit area" msgstr "Bearbeitungsbereich vergrößern/verkleinern" -#: src/slic3r/GUI/Plater.cpp:2922 -msgid "Indexing hollowed object" -msgstr "Indizierung ausgehöhlter Objekte" - #. TRN Description for "UNLOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:3258 +#: src/slic3r/GUI/Tab.cpp:3695 msgid "" "indicates that some settings were changed and are not equal to the system (or default) values for the current option group.\n" "Click the UNLOCKED LOCK icon to reset all settings for current option group to the system (or default) values." @@ -3632,12 +4197,12 @@ msgstr "" "Klicken Sie auf das Symbol GEÖFFNETES SCHLOSS, um alle Einstellungen für die aktuelle Optionsgruppe auf die System- (oder Standard-) Werte zurückzusetzen." #. TRN Description for "LOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:3254 +#: src/slic3r/GUI/Tab.cpp:3691 msgid "indicates that the settings are the same as the system (or default) values for the current option group" msgstr "zeigt an, dass die Einstellungen mit den System- (oder Standard-) Werten für die aktuelle Optionsgruppe übereinstimmen" #. TRN Description for "BACK ARROW" -#: src/slic3r/GUI/Tab.cpp:3270 +#: src/slic3r/GUI/Tab.cpp:3707 msgid "" "indicates that the settings were changed and are not equal to the last saved preset for the current option group.\n" "Click the BACK ARROW icon to reset all settings for the current option group to the last saved preset." @@ -3645,419 +4210,475 @@ msgstr "" "zeigt an, dass die Einstellungen geändert wurden und nicht mit dem zuletzt gespeicherten Preset für die aktuelle Optionsgruppe übereinstimmen.\n" "Klicken Sie auf das Symbol PFEIL ZURÜCK, um alle Einstellungen für die aktuelle Optionsgruppe auf das zuletzt gespeicherte Preset zurückzusetzen." -#: src/slic3r/GUI/ConfigManipulation.cpp:211 -#: src/slic3r/GUI/GUI_ObjectList.cpp:35 src/slic3r/GUI/GUI_ObjectList.cpp:96 -#: src/slic3r/GUI/GUI_ObjectList.cpp:614 src/slic3r/GUI/Plater.cpp:527 -#: src/slic3r/GUI/Tab.cpp:1091 src/slic3r/GUI/Tab.cpp:1092 -#: src/libslic3r/PrintConfig.cpp:203 src/libslic3r/PrintConfig.cpp:416 -#: src/libslic3r/PrintConfig.cpp:436 src/libslic3r/PrintConfig.cpp:776 -#: src/libslic3r/PrintConfig.cpp:790 src/libslic3r/PrintConfig.cpp:827 -#: src/libslic3r/PrintConfig.cpp:981 src/libslic3r/PrintConfig.cpp:991 -#: src/libslic3r/PrintConfig.cpp:1009 src/libslic3r/PrintConfig.cpp:1028 -#: src/libslic3r/PrintConfig.cpp:1047 src/libslic3r/PrintConfig.cpp:1728 -#: src/libslic3r/PrintConfig.cpp:1745 +#: src/slic3r/GUI/ConfigManipulation.cpp:210 +#: 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:393 +#: src/slic3r/GUI/Tab.cpp:1413 src/slic3r/GUI/Tab.cpp:1414 +#: src/libslic3r/PrintConfig.cpp:237 src/libslic3r/PrintConfig.cpp:450 +#: src/libslic3r/PrintConfig.cpp:472 src/libslic3r/PrintConfig.cpp:812 +#: src/libslic3r/PrintConfig.cpp:826 src/libslic3r/PrintConfig.cpp:863 +#: src/libslic3r/PrintConfig.cpp:1025 src/libslic3r/PrintConfig.cpp:1035 +#: src/libslic3r/PrintConfig.cpp:1053 src/libslic3r/PrintConfig.cpp:1072 +#: src/libslic3r/PrintConfig.cpp:1091 src/libslic3r/PrintConfig.cpp:1843 +#: src/libslic3r/PrintConfig.cpp:1860 msgid "Infill" msgstr "Infill" -#: src/slic3r/GUI/PresetHints.cpp:174 +#: src/slic3r/GUI/PresetHints.cpp:173 msgid "infill" msgstr "Infill" -#: src/libslic3r/PrintConfig.cpp:1021 +#: src/libslic3r/PrintConfig.cpp:1065 msgid "Infill before perimeters" msgstr "Infill vor Kontur" -#: src/libslic3r/PrintConfig.cpp:1001 +#: src/libslic3r/PrintConfig.cpp:1045 msgid "Infill extruder" msgstr "Infill Extruder" -#: src/libslic3r/PrintConfig.cpp:1036 +#: src/libslic3r/PrintConfig.cpp:1080 msgid "Infill/perimeters overlap" msgstr "Infill/Kontur Überlappung" -#: src/libslic3r/Print.cpp:1584 +#: src/libslic3r/Print.cpp:1610 msgid "Infilling layers" msgstr "Fülle Schichten" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3430 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3505 src/slic3r/GUI/Plater.cpp:141 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3893 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3968 src/slic3r/GUI/Plater.cpp:147 msgid "Info" msgstr "Info" -#: src/libslic3r/PrintConfig.cpp:1057 +#: src/slic3r/GUI/GUI_App.cpp:1087 src/slic3r/GUI/Tab.cpp:3435 +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" -#: src/libslic3r/SLAPrint.cpp:653 +#: src/libslic3r/SLAPrint.cpp:667 msgid "Initial exposition time is out of printer profile bounds." msgstr "Anfang-Belichtungszeit ist außerhalb der Druckerprofilgrenzen." -#: src/libslic3r/PrintConfig.cpp:2564 src/libslic3r/PrintConfig.cpp:2565 +#: src/libslic3r/PrintConfig.cpp:2707 src/libslic3r/PrintConfig.cpp:2708 msgid "Initial exposure time" msgstr "Anfang-Belichtungszeit" -#: src/libslic3r/PrintConfig.cpp:2482 src/libslic3r/PrintConfig.cpp:2483 +#: src/libslic3r/PrintConfig.cpp:2625 src/libslic3r/PrintConfig.cpp:2626 msgid "Initial layer height" msgstr "Anfangsschichthöhe" -#: src/slic3r/GUI/Field.cpp:204 +#: 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" -#: src/slic3r/GUI/GUI_App.cpp:800 +#: src/slic3r/GUI/GUI_App.cpp:1480 msgid "Inspect / activate configuration snapshots" msgstr "Inspiziere / aktiviere Konfigurations-Momentaufnahmen" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:60 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:216 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:62 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:218 #, c-format msgid "Instance %d" msgstr "Kopie %d" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2500 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2892 msgid "Instance manipulation" msgstr "Kopie Bearbeitung" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:56 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:58 msgid "Instances" msgstr "Kopien" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1091 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3781 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1215 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4244 msgid "Instances to Separated Objects" msgstr "Kopien in einzelne Objekte wandeln" -#: src/libslic3r/PrintConfig.cpp:1973 +#: src/libslic3r/PrintConfig.cpp:2115 msgid "Interface layers" msgstr "Schnittstellen Schichten" -#: src/libslic3r/PrintConfig.cpp:1957 +#: src/libslic3r/PrintConfig.cpp:2099 msgid "Interface loops" msgstr "Kontaktschleifen" -#: src/libslic3r/PrintConfig.cpp:1982 +#: src/libslic3r/PrintConfig.cpp:2124 msgid "Interface pattern spacing" msgstr "Schnittstellenmuster Abstand" -#: src/libslic3r/PrintConfig.cpp:1071 +#: src/libslic3r/PrintConfig.cpp:1115 msgid "Interface shells" msgstr "Schnittstellenshells" -#: src/libslic3r/Zipper.cpp:84 +#: src/libslic3r/miniz_extension.cpp:143 msgid "internal error" msgstr "interner Fehler" -#: src/slic3r/GUI/GUI_Preview.cpp:240 src/libslic3r/ExtrusionEntity.cpp:313 +#: src/slic3r/GUI/GUI_Preview.cpp:304 src/libslic3r/ExtrusionEntity.cpp:317 +#: src/libslic3r/ExtrusionEntity.cpp:342 msgid "Internal infill" msgstr "Internes Infill" -#: src/slic3r/GUI/Plater.cpp:3106 +#: src/slic3r/GUI/BedShapeDialog.cpp:145 +msgid "Invalid" +msgstr "Ungültig" + +#: src/slic3r/GUI/Plater.cpp:2906 src/slic3r/GUI/Plater.cpp:3583 msgid "Invalid data" msgstr "Ungültige Daten" -#: src/slic3r/GUI/BedShapeDialog.cpp:494 src/slic3r/GUI/BedShapeDialog.cpp:543 -#: src/slic3r/GUI/BedShapeDialog.cpp:566 +#: src/slic3r/GUI/BedShapeDialog.cpp:570 src/slic3r/GUI/BedShapeDialog.cpp:619 +#: src/slic3r/GUI/BedShapeDialog.cpp:642 msgid "Invalid file format." msgstr "Ungültiges Dateiformat." -#: src/libslic3r/Zipper.cpp:80 +#: src/libslic3r/miniz_extension.cpp:139 msgid "invalid filename" msgstr "ungültiger Dateiname" -#: src/slic3r/GUI/ConfigManipulation.cpp:319 +#: src/slic3r/GUI/ConfigManipulation.cpp:324 msgid "Invalid Head penetration" msgstr "Ungültige Eindringtiefe des Stützkopfes" -#: src/libslic3r/Zipper.cpp:48 +#: src/libslic3r/miniz_extension.cpp:107 msgid "invalid header or archive is corrupted" msgstr "ungültiger Dateiheader oder Archiv ist beschädigt" -#: src/slic3r/GUI/Field.cpp:195 src/slic3r/GUI/Field.cpp:226 -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:376 +#: 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." msgstr "Ungültige numerische Eingabe." -#: src/libslic3r/Zipper.cpp:78 +#: src/libslic3r/miniz_extension.cpp:137 msgid "invalid parameter" msgstr "ungültiger Parameter" -#: src/slic3r/GUI/ConfigManipulation.cpp:332 +#: src/slic3r/GUI/ConfigManipulation.cpp:337 msgid "Invalid pinhead diameter" msgstr "Ungültiger Nadelkopfdurchmesser" +#: src/slic3r/GUI/GUI_ObjectList.cpp:94 src/slic3r/GUI/GUI_ObjectList.cpp:653 +#: src/slic3r/GUI/GUI_Preview.cpp:307 src/slic3r/GUI/Tab.cpp:1420 +#: src/libslic3r/ExtrusionEntity.cpp:320 src/libslic3r/ExtrusionEntity.cpp:348 +#: src/libslic3r/PrintConfig.cpp:1126 src/libslic3r/PrintConfig.cpp:1132 +#: src/libslic3r/PrintConfig.cpp:1146 src/libslic3r/PrintConfig.cpp:1156 +msgid "Ironing" +msgstr "Bügeln" + +#: src/libslic3r/PrintConfig.cpp:1131 src/libslic3r/PrintConfig.cpp:1133 +msgid "Ironing Type" +msgstr "Bügeltyp" + +#: src/slic3r/GUI/GUI_App.cpp:243 +msgid "is based on Slic3r by Alessandro Ranellucci and the RepRap community." +msgstr "basiert auf Slic3r von Alessandro Ranellucci und der RepRap Community." + #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:258 +#: src/slic3r/GUI/AboutDialog.cpp:283 src/slic3r/GUI/GUI_App.cpp:244 msgid "is licensed under the" msgstr "ist unter der Lizenz der" -#: src/slic3r/GUI/Tab.cpp:2941 -msgid "is not compatible with print profile" -msgstr "ist mit dem Druckprofil nicht kompatibel" - -#: src/slic3r/GUI/Tab.cpp:2940 -msgid "is not compatible with printer" -msgstr "ist mit dem Drucker nicht kompatibel" - -#: src/slic3r/GUI/MainFrame.cpp:658 +#: src/slic3r/GUI/MainFrame.cpp:955 src/slic3r/GUI/MainFrame.cpp:1275 msgid "Iso" msgstr "Iso" -#: src/slic3r/GUI/MainFrame.cpp:658 +#: src/slic3r/GUI/MainFrame.cpp:955 src/slic3r/GUI/MainFrame.cpp:1275 msgid "Iso View" msgstr "Iso Ansicht" -#: src/slic3r/GUI/Tab.cpp:964 +#: src/slic3r/GUI/Tab.cpp:1282 msgid "It can't be deleted or modified." msgstr "Es ist keine Löschung oder Änderung möglich." -#: src/slic3r/GUI/Plater.cpp:3321 +#: src/slic3r/GUI/Plater.cpp:3124 msgid "It is not allowed to change the file to reload" msgstr "Es ist nicht erlaubt, die neu zu ladende Datei zu ändern" -#: src/libslic3r/PrintConfig.cpp:974 +#: src/libslic3r/PrintConfig.cpp:1018 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 "Es kann vorteilhaft sein, den Extrudermotorstrom während des Filamentwechselvorgangs zu erhöhen, um schnelle Rammvorschübe zu ermöglichen und den Widerstand beim Laden eines Filaments mit einer ungünstig geformten Spitze zu überwinden." -#: src/slic3r/GUI/GUI_App.cpp:1084 src/slic3r/GUI/Tab.cpp:2958 +#: src/slic3r/GUI/Tab.cpp:3413 +msgid "It's a last preset for this physical printer." +msgstr "Es handelt sich um die letzte Voreinstellung für diesen physischen Drucker." + +#: src/slic3r/GUI/GUI_App.cpp:1876 src/slic3r/GUI/Tab.cpp:3187 msgid "It's impossible to print multi-part object(s) with SLA technology." msgstr "Es ist nicht möglich mehrteilige Objekte mit dem SLA-Verfahren zu drucken." -#: src/slic3r/GUI/Tab.cpp:2229 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:601 +msgid "It's not possible to delete the last related preset for the printer." +msgstr "Es ist nicht möglich, die letzte zugehörige Voreinstellung für den Drucker zu löschen." + +#: src/slic3r/GUI/Tab.cpp:2398 msgid "Jerk limits" msgstr "Ruck-Begrenzungen" -#: src/libslic3r/PrintConfig.cpp:1649 +#: src/libslic3r/PrintConfig.cpp:1757 msgid "Jitter" msgstr "Jitter" -#: src/slic3r/GUI/DoubleSlider.cpp:957 src/slic3r/GUI/DoubleSlider.cpp:1529 -#: src/slic3r/GUI/DoubleSlider.cpp:1651 +#: src/slic3r/GUI/DoubleSlider.cpp:1077 src/slic3r/GUI/DoubleSlider.cpp:1721 +#: src/slic3r/GUI/DoubleSlider.cpp:1852 src/slic3r/GUI/DoubleSlider.cpp:1856 msgid "Jump to height" msgstr "Zur Höhe wechseln" -#: src/slic3r/GUI/DoubleSlider.cpp:955 +#: src/slic3r/GUI/DoubleSlider.cpp:1075 #, 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/libslic3r/PrintConfig.cpp:566 +#: src/slic3r/GUI/DoubleSlider.cpp:1071 src/slic3r/GUI/DoubleSlider.cpp:1852 +msgid "Jump to move" +msgstr "Zum Bewegen wechseln" + +#: src/slic3r/GUI/SavePresetDialog.cpp:315 +msgid "Just switch to \"%1%\" preset" +msgstr "Wechseln Sie einfach zur \"%1%\" Voreinstellung" + +#: src/libslic3r/PrintConfig.cpp:602 msgid "Keep fan always on" msgstr "Lüfter ständig laufen lassen" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:169 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:171 msgid "Keep lower part" msgstr "Unteren Teil behalten" -#: src/slic3r/GUI/GLCanvas3D.cpp:304 +#: src/slic3r/GUI/GLCanvas3D.cpp:290 msgid "Keep min" msgstr "Halte min" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:168 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:170 msgid "Keep upper part" msgstr "Oberen Teil behalten" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:41 src/slic3r/GUI/MainFrame.cpp:708 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:37 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:39 src/slic3r/GUI/MainFrame.cpp:941 +#: src/slic3r/GUI/MainFrame.cpp:1332 msgid "Keyboard Shortcuts" msgstr "Tastaturkürzel" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:245 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:259 msgid "Keyboard shortcuts" msgstr "Tastaturkürzel" -#: src/libslic3r/PrintConfig.cpp:2498 +#: src/libslic3r/PrintConfig.cpp:2641 msgid "kg" msgstr "kg" -#: src/libslic3r/PrintConfig.cpp:965 +#: src/libslic3r/PrintConfig.cpp:1009 msgid "Label objects" msgstr "Objekte benennen" -#: src/libslic3r/PrintConfig.cpp:2399 +#: src/libslic3r/PrintConfig.cpp:2542 msgid "Landscape" msgstr "Querformat" -#: src/slic3r/GUI/GUI_App.cpp:629 +#: src/slic3r/GUI/GUI_App.cpp:1295 msgid "Language" msgstr "Spache" -#: src/slic3r/GUI/GUI_App.cpp:885 +#: src/slic3r/GUI/GUI_App.cpp:1605 src/slic3r/GUI/GUI_App.cpp:1614 msgid "Language selection" msgstr "Sprachauswahl" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2140 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2242 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2307 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2408 msgid "Last instance of an object cannot be deleted." msgstr "Letzte Kopie eines Objektes kann nicht gelöscht werden." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3418 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3881 msgid "Layer" msgstr "Schicht" -#: src/slic3r/GUI/ConfigManipulation.cpp:49 -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:27 src/slic3r/GUI/Tab.cpp:1049 +#: src/slic3r/GUI/ConfigManipulation.cpp:48 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:29 src/slic3r/GUI/Tab.cpp:1371 #: src/libslic3r/PrintConfig.cpp:71 msgid "Layer height" msgstr "Schichthöhe" -#: src/libslic3r/Print.cpp:1427 +#: src/libslic3r/Print.cpp:1453 msgid "Layer height can't be greater than nozzle diameter" msgstr "Schichthöhe darf nicht größer sein als der Düsendurchmesser" -#: src/slic3r/GUI/Tab.cpp:2362 +#: src/slic3r/GUI/Tab.cpp:2531 msgid "Layer height limits" msgstr "Schichthöhen Grenzen" -#: src/slic3r/GUI/ConfigWizard.cpp:2015 -msgid "Layer height:" -msgstr "Schichthöhe:" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:2488 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2880 msgid "Layer range Settings to modify" msgstr "Schichtbereicheinstellungen zum Ändern" #: src/slic3r/GUI/ExtruderSequenceDialog.cpp:52 -#: src/libslic3r/PrintConfig.cpp:362 src/libslic3r/PrintConfig.cpp:994 -#: src/libslic3r/PrintConfig.cpp:1505 src/libslic3r/PrintConfig.cpp:1690 -#: src/libslic3r/PrintConfig.cpp:1750 src/libslic3r/PrintConfig.cpp:1930 -#: src/libslic3r/PrintConfig.cpp:1976 +#: src/libslic3r/PrintConfig.cpp:396 src/libslic3r/PrintConfig.cpp:1038 +#: src/libslic3r/PrintConfig.cpp:1613 src/libslic3r/PrintConfig.cpp:1798 +#: src/libslic3r/PrintConfig.cpp:1865 src/libslic3r/PrintConfig.cpp:2072 +#: src/libslic3r/PrintConfig.cpp:2118 msgid "layers" msgstr "Schichten" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:67 src/slic3r/GUI/Tab.cpp:3512 -#: src/slic3r/GUI/Tab.cpp:3600 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:69 src/slic3r/GUI/Tab.cpp:3928 +#: src/slic3r/GUI/Tab.cpp:4010 msgid "Layers" msgstr "Schichten" -#: src/slic3r/GUI/Tab.cpp:1048 src/slic3r/GUI/Tab.cpp:3598 +#: src/slic3r/GUI/Tab.cpp:1370 src/slic3r/GUI/Tab.cpp:4008 msgid "Layers and perimeters" msgstr "Schichten und Umfänge" -#: src/slic3r/GUI/GUI_ObjectList.cpp:34 src/slic3r/GUI/GUI_ObjectList.cpp:95 -#: src/slic3r/GUI/GUI_ObjectList.cpp:613 src/libslic3r/PrintConfig.cpp:72 -#: src/libslic3r/PrintConfig.cpp:175 src/libslic3r/PrintConfig.cpp:184 -#: src/libslic3r/PrintConfig.cpp:408 src/libslic3r/PrintConfig.cpp:470 -#: src/libslic3r/PrintConfig.cpp:478 src/libslic3r/PrintConfig.cpp:890 -#: src/libslic3r/PrintConfig.cpp:1075 src/libslic3r/PrintConfig.cpp:1374 -#: src/libslic3r/PrintConfig.cpp:1441 src/libslic3r/PrintConfig.cpp:1622 -#: src/libslic3r/PrintConfig.cpp:2074 src/libslic3r/PrintConfig.cpp:2133 -#: src/libslic3r/PrintConfig.cpp:2142 +#: 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:209 src/libslic3r/PrintConfig.cpp:218 +#: src/libslic3r/PrintConfig.cpp:442 src/libslic3r/PrintConfig.cpp:506 +#: src/libslic3r/PrintConfig.cpp:514 src/libslic3r/PrintConfig.cpp:932 +#: src/libslic3r/PrintConfig.cpp:1119 src/libslic3r/PrintConfig.cpp:1482 +#: src/libslic3r/PrintConfig.cpp:1549 src/libslic3r/PrintConfig.cpp:1730 +#: src/libslic3r/PrintConfig.cpp:2217 src/libslic3r/PrintConfig.cpp:2276 +#: src/libslic3r/PrintConfig.cpp:2285 msgid "Layers and Perimeters" msgstr "Schichten und Konturen" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:222 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:225 msgid "Layers Slider" msgstr "Schichtenschieber" -#: src/slic3r/GUI/OptionsGroup.cpp:258 +#: src/slic3r/GUI/OptionsGroup.cpp:293 msgctxt "Layers" msgid "Bottom" msgstr "Boden" -#: src/slic3r/GUI/OptionsGroup.cpp:258 +#: src/slic3r/GUI/OptionsGroup.cpp:293 msgctxt "Layers" msgid "Top" msgstr "Decke" -#: src/slic3r/GUI/MainFrame.cpp:671 +#: src/slic3r/GUI/Preferences.cpp:440 +msgid "Layout Options" +msgstr "Layout-Optionen" + +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:48 +msgid "Leaving Paint-on supports" +msgstr "Verlasse Aufmal-Stützen" + +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:47 +msgid "Leaving Seam painting" +msgstr "Verlasse Aufmal-Nähte" + +#: src/slic3r/GUI/MainFrame.cpp:968 src/slic3r/GUI/MainFrame.cpp:1288 msgid "Left" msgstr "Links" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1363 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1366 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1367 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1210 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1213 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1214 msgid "Left click" msgstr "Linker Mausklick" -#: src/slic3r/GUI/GLCanvas3D.cpp:237 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:46 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:29 +msgid "Left mouse button" +msgstr "Linke Maustaste" + +#: src/slic3r/GUI/GLCanvas3D.cpp:233 msgid "Left mouse button:" msgstr "Linke Maustaste:" -#: src/slic3r/GUI/MainFrame.cpp:671 +#: src/slic3r/GUI/MainFrame.cpp:968 src/slic3r/GUI/MainFrame.cpp:1288 msgid "Left View" msgstr "Anicht von Links" -#: src/slic3r/GUI/GUI_Preview.cpp:257 +#: src/slic3r/GUI/GUI_Preview.cpp:339 msgid "Legend" msgstr "Legende" -#: src/libslic3r/PrintConfig.cpp:1543 src/libslic3r/PrintConfig.cpp:1551 +#: src/slic3r/GUI/GUI_Preview.cpp:1480 +msgid "Legend/Estimated printing time" +msgstr "Legende/geschätzte Druckzeit" + +#: src/libslic3r/PrintConfig.cpp:1651 src/libslic3r/PrintConfig.cpp:1659 msgid "Length" msgstr "Länge" -#: src/libslic3r/PrintConfig.cpp:328 +#: src/libslic3r/PrintConfig.cpp:362 msgid "Length of the cooling tube to limit space for cooling moves inside it." msgstr "Länge des Kühlschlauchs, um den Raum für Kühlbewegungen im Inneren zu begrenzen." #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:129 +#: src/slic3r/GUI/AboutDialog.cpp:141 msgid "License agreements of all following programs (libraries) are part of application license agreement" msgstr "Lizenzvereinbarungen für alle folgenden Programme (Bibliotheken) sind Teil der Anwendungslizenzvereinbarung" -#: src/libslic3r/PrintConfig.cpp:1561 +#: src/libslic3r/PrintConfig.cpp:1669 msgid "Lift Z" msgstr "Z Hebung" -#: src/libslic3r/PrintConfig.cpp:848 +#: src/libslic3r/PrintConfig.cpp:886 msgid "Line" msgstr "Linie" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1427 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1558 msgid "Load" msgstr "Laden" -#: src/slic3r/GUI/MainFrame.cpp:460 +#: src/slic3r/GUI/MainFrame.cpp:1042 msgid "Load a model" msgstr "Lade ein Modell" -#: src/libslic3r/PrintConfig.cpp:3505 +#: src/slic3r/GUI/MainFrame.cpp:1046 +msgid "Load an model saved with imperial units" +msgstr "Laden eines mit imperialen Einheiten gespeicherten Modells" + +#: src/slic3r/GUI/MainFrame.cpp:1058 +msgid "Load an SL1 archive" +msgstr "SL1-Archiv laden" + +#: src/libslic3r/PrintConfig.cpp:3710 msgid "Load and store settings at the given directory. This is useful for maintaining different profiles or including configurations from a network storage." msgstr "Lädt und speichert Einstellungen im angegebenen Verzeichnis. Dies ist nützlich, um verschiedene Profile zu pflegen oder Konfigurationen aus einem Netzwerkspeicher zu übernehmen." -#: src/libslic3r/PrintConfig.cpp:3489 +#: src/libslic3r/PrintConfig.cpp:3688 msgid "Load config file" msgstr "Lade Konfigurationsdatei" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:120 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:113 msgid "Load Config from ini/amf/3mf/gcode and merge" msgstr "Lade und füge Konfiguration von ini/amf/3mf/gcode hinzu" -#: src/slic3r/GUI/MainFrame.cpp:467 +#: src/slic3r/GUI/MainFrame.cpp:1058 msgid "Load configuration from project file" msgstr "Lade Konfiguration aus Projektdatei" -#: src/libslic3r/PrintConfig.cpp:3490 +#: src/libslic3r/PrintConfig.cpp:3689 msgid "Load configuration from the specified file. It can be used more than once to load options from multiple files." msgstr "Lädt die Konfiguration aus der angegebenen Datei. Es kann mehr als einmal verwendet werden, um Optionen aus mehreren Dateien zu laden." -#: src/slic3r/GUI/MainFrame.cpp:464 +#: src/slic3r/GUI/MainFrame.cpp:1055 msgid "Load exported configuration file" msgstr "Laden einer exportierten Konfigurationsdatei" -#: src/slic3r/GUI/Plater.cpp:1395 -msgid "Load File" -msgstr "Datei laden" - -#: src/slic3r/GUI/Plater.cpp:1399 -msgid "Load Files" -msgstr "Dateien laden" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1879 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2038 msgid "Load Part" msgstr "Teil laden" -#: src/slic3r/GUI/MainFrame.cpp:471 +#: src/slic3r/GUI/MainFrame.cpp:1062 msgid "Load presets from a bundle" msgstr "Lade Voreinstellungen aus einer Sammlung" -#: src/slic3r/GUI/Plater.cpp:4575 +#: src/slic3r/GUI/Plater.cpp:4627 msgid "Load Project" msgstr "Projekt laden" -#: src/slic3r/GUI/BedShapeDialog.cpp:102 +#: src/slic3r/GUI/BedShapeDialog.cpp:243 msgid "Load shape from STL..." msgstr "Lade Umriß von STL..." -#: src/slic3r/GUI/BedShapeDialog.cpp:182 src/slic3r/GUI/BedShapeDialog.cpp:261 +#: src/slic3r/GUI/BedShapeDialog.cpp:325 src/slic3r/GUI/BedShapeDialog.cpp:405 msgid "Load..." msgstr "Laden..." @@ -4065,19 +4686,27 @@ msgstr "Laden..." msgid "loaded" msgstr "geladen wird" -#: src/slic3r/GUI/Plater.cpp:2426 +#: src/slic3r/GUI/Plater.cpp:2388 msgid "Loaded" msgstr "Geladen" -#: src/slic3r/GUI/Plater.cpp:2273 +#: src/slic3r/GUI/Plater.cpp:2216 msgid "Loading" msgstr "Lade" -#: src/slic3r/GUI/GUI_App.cpp:474 +#: src/slic3r/GUI/GUI_App.cpp:797 +msgid "Loading configuration" +msgstr "Lade Konfiguration" + +#: src/slic3r/GUI/Plater.cpp:2226 +msgid "Loading file" +msgstr "Lade Datei" + +#: src/slic3r/GUI/GUI_App.cpp:1125 msgid "Loading of a mode view" msgstr "Lade Anzeigemodus" -#: src/slic3r/GUI/GUI_App.cpp:466 +#: src/slic3r/GUI/GUI_App.cpp:1120 msgid "Loading of current presets" msgstr "Laden der aktuellen Voreinstellungen" @@ -4086,101 +4715,117 @@ msgstr "Laden der aktuellen Voreinstellungen" msgid "Loading repaired model" msgstr "Lade repariertes Modell" -#: src/libslic3r/PrintConfig.cpp:607 +#: src/libslic3r/PrintConfig.cpp:643 msgid "Loading speed" msgstr "Ladegeschwindigkeit" -#: src/libslic3r/PrintConfig.cpp:615 +#: src/libslic3r/PrintConfig.cpp:651 msgid "Loading speed at the start" msgstr "Ladegeschwindigkeit zu Beginn" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:63 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:106 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:69 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:112 msgid "Local coordinates" msgstr "Lokale Koordinaten" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:48 msgid "Lock supports under new islands" msgstr "Fixiere Stützen unter neuen Inseln" -#: src/slic3r/GUI/Tab.cpp:3252 +#: src/slic3r/GUI/Tab.cpp:3689 msgid "LOCKED LOCK" msgstr "GESCHLOSSENES SCHLOSS" -#: src/slic3r/GUI/Tab.cpp:3280 +#: src/slic3r/GUI/Tab.cpp:3717 msgid "LOCKED LOCK icon indicates that the settings are the same as the system (or default) values for the current option group" -msgstr "Das Symbol LOCKED LOCK zeigt an, dass die Einstellungen mit den System- (oder Standard-) Werten für die aktuelle Optionsgruppe übereinstimmen" +msgstr "Das Symbol GESCHLOSSENES SCHLOSS zeigt an, dass die Einstellungen mit den System- (oder Standard-) Werten für die aktuelle Optionsgruppe übereinstimmen" -#: src/slic3r/GUI/Tab.cpp:3296 +#: src/slic3r/GUI/Tab.cpp:3733 msgid "LOCKED LOCK icon indicates that the value is the same as the system (or default) value." -msgstr "Das Symbol LOCKED LOCK zeigt an, dass der Wert mit dem System- (oder Standard-) Wert übereinstimmt." +msgstr "Das Symbol GESCHLOSSENES SCHLOSS zeigt an, dass der Wert mit dem System- (oder Standard-) Wert übereinstimmt." -#: src/libslic3r/PrintConfig.cpp:3508 +#: src/libslic3r/PrintConfig.cpp:3713 msgid "Logging level" msgstr "Logging-Level" -#: src/libslic3r/PrintConfig.cpp:1695 +#: src/libslic3r/PrintConfig.cpp:1810 msgid "Loops (minimum)" msgstr "Schleifen (minimal)" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:206 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:208 msgid "Lower Layer" msgstr "Untere Schicht" -#: src/slic3r/GUI/Tab.cpp:2188 src/slic3r/GUI/Tab.cpp:2273 -#: src/libslic3r/PrintConfig.cpp:1129 src/libslic3r/PrintConfig.cpp:1146 -#: src/libslic3r/PrintConfig.cpp:1163 src/libslic3r/PrintConfig.cpp:1179 -#: src/libslic3r/PrintConfig.cpp:1189 src/libslic3r/PrintConfig.cpp:1199 -#: src/libslic3r/PrintConfig.cpp:1209 +#: src/slic3r/GUI/Tab.cpp:2346 src/slic3r/GUI/Tab.cpp:2442 +#: src/libslic3r/PrintConfig.cpp:1202 src/libslic3r/PrintConfig.cpp:1237 +#: src/libslic3r/PrintConfig.cpp:1254 src/libslic3r/PrintConfig.cpp:1271 +#: src/libslic3r/PrintConfig.cpp:1287 src/libslic3r/PrintConfig.cpp:1297 +#: src/libslic3r/PrintConfig.cpp:1307 src/libslic3r/PrintConfig.cpp:1317 msgid "Machine limits" msgstr "Maschinengrenzen" -#: src/slic3r/GUI/Plater.cpp:166 +#: src/slic3r/GUI/Tab.cpp:3667 +msgid "Machine limits are not set, therefore the print time estimate may not be accurate." +msgstr "Maschinengrenzen sind nicht gesetzt, daher ist die Schätzung der Druckzeit möglicherweise nicht genau." + +#: src/slic3r/GUI/Tab.cpp:3660 +msgid "Machine limits will be emitted to G-code and used to estimate print time." +msgstr "Maschinengrenzen werden im G-Code ausgegeben und zur Schätzung der Druckzeit verwendet." + +#: src/slic3r/GUI/Tab.cpp:3663 +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 "Maschinenlimits werden NICHT im G-Code ausgegeben, sie werden jedoch zur Schätzung der Druckzeit verwendet, die daher möglicherweise nicht genau ist, da der Drucker möglicherweise eine andere Reihe von Maschinenlimits anwendet." + +#: src/slic3r/GUI/Plater.cpp:172 msgid "Manifold" msgstr "Hülle ok" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:57 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:56 msgid "Manual editing" msgstr "Manuelle Bearbeitung" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:180 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:214 msgid "Masked SLA file exported to %1%" msgstr "Maskierte SLA-Datei exportiert nach %1%" -#: src/slic3r/GUI/MainFrame.cpp:752 +#: src/slic3r/GUI/MainFrame.cpp:1451 msgid "Mate&rial Settings Tab" msgstr "Mate&rial Einstellungen" -#: src/slic3r/GUI/Tab.cpp:3478 src/slic3r/GUI/Tab.cpp:3480 +#: src/slic3r/GUI/Tab.cpp:3894 src/slic3r/GUI/Tab.cpp:3896 msgid "Material" msgstr "Material" -#: src/slic3r/GUI/Tab.hpp:416 +#: src/slic3r/GUI/Tab.hpp:486 msgid "Material Settings" msgstr "Material Einstellungen" -#: src/slic3r/GUI/Plater.cpp:163 +#: src/slic3r/GUI/GLCanvas3D.cpp:4304 src/slic3r/GUI/GLCanvas3D.cpp:4940 +msgid "Material Settings Tab" +msgstr "Materialeinstellungsreiter" + +#: src/slic3r/GUI/Plater.cpp:169 msgid "Materials" msgstr "Material" -#: src/libslic3r/PrintConfig.cpp:1217 src/libslic3r/PrintConfig.cpp:1226 +#: src/libslic3r/PrintConfig.cpp:1325 src/libslic3r/PrintConfig.cpp:1334 msgid "Max" msgstr "Max" -#: src/libslic3r/PrintConfig.cpp:2734 +#: src/libslic3r/PrintConfig.cpp:2898 msgid "Max bridge length" msgstr "Max Überbrückungslänge" -#: src/libslic3r/PrintConfig.cpp:2658 +#: src/libslic3r/PrintConfig.cpp:2812 msgid "Max bridges on a pillar" msgstr "Max Brücken auf einem Pfeiler" -#: src/libslic3r/PrintConfig.cpp:2822 +#: src/libslic3r/PrintConfig.cpp:2986 msgid "Max merge distance" msgstr "Maximaler Zusammenfügeabstand" -#: src/libslic3r/PrintConfig.cpp:2743 +#: src/libslic3r/PrintConfig.cpp:2907 msgid "Max pillar linking distance" msgstr "Max. Pfeiler Verbindungsabstand" @@ -4188,7 +4833,7 @@ msgstr "Max. Pfeiler Verbindungsabstand" msgid "Max print height" msgstr "Max. Druckhöhe" -#: src/libslic3r/PrintConfig.cpp:1237 +#: src/libslic3r/PrintConfig.cpp:1345 msgid "Max print speed" msgstr "Maximale Druckgeschwindigkeit" @@ -4196,171 +4841,189 @@ msgstr "Maximale Druckgeschwindigkeit" msgid "max PrusaSlicer version" msgstr "max PrusaSlicer Version" -#: src/libslic3r/PrintConfig.cpp:1268 +#: src/libslic3r/PrintConfig.cpp:1376 msgid "Max volumetric slope negative" msgstr "Max. volumetrische Steigung negativ" -#: src/libslic3r/PrintConfig.cpp:1257 +#: src/libslic3r/PrintConfig.cpp:1365 msgid "Max volumetric slope positive" msgstr "Max. volumetrische Steigung positiv" -#: src/libslic3r/PrintConfig.cpp:597 src/libslic3r/PrintConfig.cpp:1247 +#: src/libslic3r/PrintConfig.cpp:633 src/libslic3r/PrintConfig.cpp:1355 msgid "Max volumetric speed" msgstr "Maximale Volumengeschwindigkeit" -#: src/libslic3r/PrintConfig.cpp:2268 +#: src/libslic3r/PrintConfig.cpp:2411 msgid "Maximal bridging distance" msgstr "Maximaler Überbrückungsabstand" -#: src/libslic3r/PrintConfig.cpp:2269 +#: src/libslic3r/PrintConfig.cpp:2412 msgid "Maximal distance between supports on sparse infill sections." msgstr "Maximalabstand zwischen Stützen auf spärlichen Infill-Abschnitten." -#: src/libslic3r/PrintConfig.cpp:1145 +#: src/libslic3r/PrintConfig.cpp:1253 msgid "Maximum acceleration E" msgstr "Maximale Beschleunigung E" -#: src/libslic3r/PrintConfig.cpp:1151 +#: src/libslic3r/PrintConfig.cpp:1259 msgid "Maximum acceleration of the E axis" msgstr "Maximale Beschleunigung der E-Achse" -#: src/libslic3r/PrintConfig.cpp:1148 +#: src/libslic3r/PrintConfig.cpp:1256 msgid "Maximum acceleration of the X axis" msgstr "Maximale Beschleunigung der X-Achse" -#: src/libslic3r/PrintConfig.cpp:1149 +#: src/libslic3r/PrintConfig.cpp:1257 msgid "Maximum acceleration of the Y axis" msgstr "Maximale Beschleunigung der Y-Achse" -#: src/libslic3r/PrintConfig.cpp:1150 +#: src/libslic3r/PrintConfig.cpp:1258 msgid "Maximum acceleration of the Z axis" msgstr "Maximale Beschleunigung der Z-Achse" -#: src/libslic3r/PrintConfig.cpp:1198 +#: src/libslic3r/PrintConfig.cpp:1306 msgid "Maximum acceleration when extruding" msgstr "Maximale Beschleunigung beim Extrudieren" -#: src/libslic3r/PrintConfig.cpp:1200 +#: src/libslic3r/PrintConfig.cpp:1308 msgid "Maximum acceleration when extruding (M204 S)" msgstr "Maximale Beschleunigung beim Extrudieren (M204 S)" -#: src/libslic3r/PrintConfig.cpp:1208 +#: src/libslic3r/PrintConfig.cpp:1316 msgid "Maximum acceleration when retracting" msgstr "Maximale Beschleunigung beim Einzug" -#: src/libslic3r/PrintConfig.cpp:1210 +#: src/libslic3r/PrintConfig.cpp:1318 msgid "Maximum acceleration when retracting (M204 T)" msgstr "Maximale Beschleunigung beim Einzug (M204 T)" -#: src/libslic3r/PrintConfig.cpp:1142 +#: src/libslic3r/PrintConfig.cpp:1250 msgid "Maximum acceleration X" msgstr "Maximale Beschleunigung X" -#: src/libslic3r/PrintConfig.cpp:1143 +#: src/libslic3r/PrintConfig.cpp:1251 msgid "Maximum acceleration Y" msgstr "Maximale Beschleunigung Y" -#: src/libslic3r/PrintConfig.cpp:1144 +#: src/libslic3r/PrintConfig.cpp:1252 msgid "Maximum acceleration Z" msgstr "Maximale Beschleunigung Z" -#: src/slic3r/GUI/Tab.cpp:2222 +#: src/slic3r/GUI/Tab.cpp:2391 msgid "Maximum accelerations" msgstr "Maximale Beschleunigungen" -#: src/libslic3r/PrintConfig.cpp:2533 src/libslic3r/PrintConfig.cpp:2534 +#: src/libslic3r/PrintConfig.cpp:2676 src/libslic3r/PrintConfig.cpp:2677 msgid "Maximum exposure time" msgstr "Maximale Belichtungszeit" -#: src/libslic3r/PrintConfig.cpp:1128 +#: src/libslic3r/PrintConfig.cpp:1236 msgid "Maximum feedrate E" msgstr "Maximaler Vorschub E" -#: src/libslic3r/PrintConfig.cpp:1134 +#: src/libslic3r/PrintConfig.cpp:1242 msgid "Maximum feedrate of the E axis" msgstr "Maximaler Vorschub auf der E-Achse" -#: src/libslic3r/PrintConfig.cpp:1131 +#: src/libslic3r/PrintConfig.cpp:1239 msgid "Maximum feedrate of the X axis" msgstr "Maximaler Vorschub auf der X-Achse" -#: src/libslic3r/PrintConfig.cpp:1132 +#: src/libslic3r/PrintConfig.cpp:1240 msgid "Maximum feedrate of the Y axis" msgstr "Maximaler Vorschub auf der Y-Achse" -#: src/libslic3r/PrintConfig.cpp:1133 +#: src/libslic3r/PrintConfig.cpp:1241 msgid "Maximum feedrate of the Z axis" msgstr "Maximaler Vorschub auf der Z-Achse" -#: src/libslic3r/PrintConfig.cpp:1125 +#: src/libslic3r/PrintConfig.cpp:1233 msgid "Maximum feedrate X" msgstr "Maximaler Vorschub X" -#: src/libslic3r/PrintConfig.cpp:1126 +#: src/libslic3r/PrintConfig.cpp:1234 msgid "Maximum feedrate Y" msgstr "Maximaler Vorschub Y" -#: src/libslic3r/PrintConfig.cpp:1127 +#: src/libslic3r/PrintConfig.cpp:1235 msgid "Maximum feedrate Z" msgstr "Maximaler Vorschub Z" -#: src/slic3r/GUI/Tab.cpp:2217 +#: src/slic3r/GUI/Tab.cpp:2386 msgid "Maximum feedrates" msgstr "Maximaler Vorschub" -#: src/libslic3r/PrintConfig.cpp:2556 src/libslic3r/PrintConfig.cpp:2557 +#: src/libslic3r/PrintConfig.cpp:2699 src/libslic3r/PrintConfig.cpp:2700 msgid "Maximum initial exposure time" msgstr "Maximale Anfang-Belichtungszeit" -#: src/libslic3r/PrintConfig.cpp:1162 +#: src/libslic3r/PrintConfig.cpp:1270 msgid "Maximum jerk E" msgstr "Maximaler Ruck E" -#: src/libslic3r/PrintConfig.cpp:1168 +#: src/libslic3r/PrintConfig.cpp:1276 msgid "Maximum jerk of the E axis" msgstr "Maximaler Ruck auf der E-Achse" -#: src/libslic3r/PrintConfig.cpp:1165 +#: src/libslic3r/PrintConfig.cpp:1273 msgid "Maximum jerk of the X axis" msgstr "Maximaler Ruck auf der X-Achse" -#: src/libslic3r/PrintConfig.cpp:1166 +#: src/libslic3r/PrintConfig.cpp:1274 msgid "Maximum jerk of the Y axis" msgstr "Maximaler Ruck auf der Y-Achse" -#: src/libslic3r/PrintConfig.cpp:1167 +#: src/libslic3r/PrintConfig.cpp:1275 msgid "Maximum jerk of the Z axis" msgstr "Maximaler Ruck auf der Z-Achse" -#: src/libslic3r/PrintConfig.cpp:1159 +#: src/libslic3r/PrintConfig.cpp:1267 msgid "Maximum jerk X" msgstr "Maximaler Ruck X" -#: src/libslic3r/PrintConfig.cpp:1160 +#: src/libslic3r/PrintConfig.cpp:1268 msgid "Maximum jerk Y" msgstr "Maximaler Ruck Y" -#: src/libslic3r/PrintConfig.cpp:1161 +#: src/libslic3r/PrintConfig.cpp:1269 msgid "Maximum jerk Z" msgstr "Maximaler Ruck Z" -#: src/libslic3r/PrintConfig.cpp:2660 +#: src/libslic3r/PrintConfig.cpp:2814 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 "Maximale Anzahl von Brücken, die auf einen Pfeiler gesetzt werden können. Brücken halten Stützpunkt-Nadelköpfe und verbinden sich als kleine Äste mit den Pfeilern." -#: src/libslic3r/PrintConfig.cpp:598 +#: src/libslic3r/PrintConfig.cpp:634 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 "Maximale volumetrische Geschwindigkeit, die für dieses Filament zulässig ist. Begrenzt die maximale volumetrische Geschwindigkeit eines Drucks auf das Minimum von Druck- und Filament-Volumengeschwindigkeit. Wird auf null gesetzt, wenn es keine Begrenzung gibt." -#: src/libslic3r/PrintConfig.cpp:3442 +#: 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:3641 msgid "Merge" msgstr "Zusammenfügen" -#: src/libslic3r/PrintConfig.cpp:2683 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2660 +msgid "Merge all parts to the one single object" +msgstr "Alle Teile zu einem einzigen Objekt zusammenfügen" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1868 +msgid "Merge objects to the one multipart object" +msgstr "Objekte zu einem mehrteiligen Objekt zusammenführen" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1876 +msgid "Merge objects to the one single object" +msgstr "Objekte zu einem einzigen Objekt zusammenführen" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2576 +msgid "Merged" +msgstr "Zusammengeführt" + +#: src/libslic3r/PrintConfig.cpp:2847 msgid "Merging bridges or pillars into another pillars can increase the radius. Zero means no increase, one means full increase." msgstr "Das Zusammenfügen von Brücken oder Säulen in andere Säulen kann den Radius vergrößern. Null bedeutet keine Erhöhung, eins bedeutet volle Erhöhung." -#: src/libslic3r/SLAPrintSteps.cpp:64 +#: src/libslic3r/SLAPrintSteps.cpp:65 msgid "Merging slices and calculating statistics" msgstr "Zusammenführung der Slices und Berechnung der Statistiken" @@ -4368,15 +5031,15 @@ msgstr "Zusammenführung der Slices und Berechnung der Statistiken" msgid "Mesh repair failed." msgstr "Netzreparatur fehlgeschlagen." -#: src/slic3r/GUI/DoubleSlider.cpp:1635 +#: src/slic3r/GUI/DoubleSlider.cpp:1831 msgid "Message for pause print on current layer (%1% mm)." msgstr "Meldung für die Druckpause auf der aktuellen Schicht (%1% mm)." -#: src/libslic3r/PrintConfig.cpp:1280 src/libslic3r/PrintConfig.cpp:1289 +#: src/libslic3r/PrintConfig.cpp:1388 src/libslic3r/PrintConfig.cpp:1397 msgid "Min" msgstr "Min" -#: src/libslic3r/PrintConfig.cpp:1298 +#: src/libslic3r/PrintConfig.cpp:1406 msgid "Min print speed" msgstr "Minimale Druckgeschwindigkeit" @@ -4384,232 +5047,237 @@ msgstr "Minimale Druckgeschwindigkeit" msgid "min PrusaSlicer version" msgstr "min PrusaSlicer Version" -#: src/libslic3r/PrintConfig.cpp:2772 +#: src/libslic3r/PrintConfig.cpp:2936 msgid "Minimal distance of the support points" msgstr "Minimaler Abstand der Stützpunkte" -#: src/libslic3r/PrintConfig.cpp:1306 +#: src/libslic3r/PrintConfig.cpp:1414 msgid "Minimal filament extrusion length" msgstr "Minimale Filament Extrusionlänge" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:54 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:53 msgid "Minimal points distance" msgstr "Minimaler Prunktabstand" -#: src/libslic3r/PrintConfig.cpp:667 +#: src/libslic3r/PrintConfig.cpp:703 msgid "Minimal purge on wipe tower" msgstr "Minimale Wischmenge im Wischturm" -#: src/libslic3r/PrintConfig.cpp:187 +#: src/libslic3r/PrintConfig.cpp:221 msgid "Minimum bottom shell thickness" msgstr "Minimale Stärke der Bodenschale" -#: src/slic3r/GUI/PresetHints.cpp:339 +#: src/slic3r/GUI/PresetHints.cpp:337 msgid "Minimum bottom shell thickness is %1% mm." msgstr "Die Mindeststärke der Bodenschale beträgt %1% mm." -#: src/libslic3r/PrintConfig.cpp:1512 +#: src/libslic3r/PrintConfig.cpp:1620 msgid "Minimum detail resolution, used to simplify the input file for speeding up the slicing job and reducing memory usage. High-resolution models often carry more detail than printers can render. Set to zero to disable any simplification and use full resolution from input." msgstr "Minimale Detailauflösung, die verwendet wird, um die Eingabedatei zu vereinfachen, um den Slicingjob zu beschleunigen und den Speicherverbrauch zu reduzieren. Hochauflösende Modelle weisen oft mehr Details auf, als der Drucker wiedergeben kann. Setzen Sie den Wert auf Null, um die Vereinfachung zu deaktivieren und die volle Auflösung des Eingangsdatei zu verwenden." -#: src/libslic3r/PrintConfig.cpp:2525 src/libslic3r/PrintConfig.cpp:2526 +#: src/libslic3r/PrintConfig.cpp:2668 src/libslic3r/PrintConfig.cpp:2669 msgid "Minimum exposure time" msgstr "Minimale Belichtungszeit" -#: src/libslic3r/PrintConfig.cpp:1178 +#: src/libslic3r/PrintConfig.cpp:1286 msgid "Minimum feedrate when extruding" msgstr "Maximaler Vorschub bei Extrusion" -#: src/libslic3r/PrintConfig.cpp:1180 +#: src/libslic3r/PrintConfig.cpp:1288 msgid "Minimum feedrate when extruding (M205 S)" msgstr "Minimaler Vorschub beim Extrudieren (M205 S)" -#: src/slic3r/GUI/Tab.cpp:2234 +#: src/slic3r/GUI/Tab.cpp:2403 msgid "Minimum feedrates" msgstr "Minimaler Vorschub" -#: src/libslic3r/PrintConfig.cpp:2548 src/libslic3r/PrintConfig.cpp:2549 +#: src/libslic3r/PrintConfig.cpp:2691 src/libslic3r/PrintConfig.cpp:2692 msgid "Minimum initial exposure time" msgstr "Minimale Anfang-Belichtungszeit" -#: src/slic3r/GUI/Tab.cpp:1069 +#: src/slic3r/GUI/Tab.cpp:1391 msgid "Minimum shell thickness" msgstr "Minimale Schalenstärke" -#: src/libslic3r/PrintConfig.cpp:1787 src/libslic3r/PrintConfig.cpp:1788 +#: src/libslic3r/PrintConfig.cpp:1902 src/libslic3r/PrintConfig.cpp:1903 msgid "Minimum thickness of a top / bottom shell" msgstr "Mindeststärke einer Ober-/Bodenschale" -#: src/libslic3r/PrintConfig.cpp:2146 +#: src/libslic3r/PrintConfig.cpp:2289 msgid "Minimum top shell thickness" msgstr "Mindeststärke der oberen Schale" -#: src/slic3r/GUI/PresetHints.cpp:320 +#: src/slic3r/GUI/PresetHints.cpp:318 msgid "Minimum top shell thickness is %1% mm." msgstr "Die Mindeststärke der Oberschale beträgt %1% mm." -#: src/libslic3r/PrintConfig.cpp:1522 +#: src/libslic3r/PrintConfig.cpp:1630 msgid "Minimum travel after retraction" msgstr "Minimalbewegung nach Einziehen" -#: src/libslic3r/PrintConfig.cpp:1188 +#: src/libslic3r/PrintConfig.cpp:1296 msgid "Minimum travel feedrate" msgstr "Minimaler Vorschub im Eilgang" -#: src/libslic3r/PrintConfig.cpp:1190 +#: src/libslic3r/PrintConfig.cpp:1298 msgid "Minimum travel feedrate (M205 T)" msgstr "Minimaler Vorschub im Eilgang (M205 T)" -#: src/libslic3r/PrintConfig.cpp:2917 +#: src/libslic3r/PrintConfig.cpp:3081 msgid "Minimum wall thickness of a hollowed model." msgstr "Mindestwandstärke eines ausgehöhlten Modells." -#: src/libslic3r/PrintConfig.cpp:2449 +#: src/libslic3r/PrintConfig.cpp:2592 msgid "Minimum width of features to maintain when doing elephant foot compensation." msgstr "Mindestbreite der Merkmale, die bei der Kompensation des Elefantenfußes einzuhalten sind." -#: src/slic3r/GUI/Plater.cpp:4002 +#: src/slic3r/GUI/Plater.cpp:3922 msgid "Mirror" msgstr "Spiegeln" -#: src/libslic3r/PrintConfig.cpp:2379 +#: src/libslic3r/PrintConfig.cpp:2522 msgid "Mirror horizontally" msgstr "Horizontal spiegeln" -#: src/slic3r/GUI/GLCanvas3D.cpp:2053 +#: src/slic3r/GUI/GLCanvas3D.cpp:2226 msgid "Mirror Object" msgstr "Objekt spiegeln" -#: src/slic3r/GUI/Plater.cpp:4002 +#: src/slic3r/GUI/Plater.cpp:3922 msgid "Mirror the selected object" msgstr "Ausgewähltes Objekt spiegeln" -#: src/slic3r/GUI/Plater.cpp:3995 +#: src/slic3r/GUI/Plater.cpp:3915 msgid "Mirror the selected object along the X axis" msgstr "Ausgewähltes Objekt entlang der X-Achse spiegeln" -#: src/slic3r/GUI/Plater.cpp:3997 +#: src/slic3r/GUI/Plater.cpp:3917 msgid "Mirror the selected object along the Y axis" msgstr "Ausgewähltes Objekt entlang der Y-Achse spiegeln" -#: src/slic3r/GUI/Plater.cpp:3999 +#: src/slic3r/GUI/Plater.cpp:3919 msgid "Mirror the selected object along the Z axis" msgstr "Ausgewähltes Objekt entlang der Z-Achse spiegeln" -#: src/libslic3r/PrintConfig.cpp:2386 +#: src/libslic3r/PrintConfig.cpp:2529 msgid "Mirror vertically" msgstr "Vertikal spiegeln" -#: src/slic3r/Utils/AstroBox.cpp:68 src/slic3r/Utils/OctoPrint.cpp:68 +#: src/slic3r/Utils/AstroBox.cpp:69 src/slic3r/Utils/OctoPrint.cpp:68 #, c-format msgid "Mismatched type of print host: %s" msgstr "Nicht übereinstimmender Typ des Druckhosts: %s" -#: src/libslic3r/ExtrusionEntity.cpp:323 +#: src/libslic3r/ExtrusionEntity.cpp:328 src/libslic3r/ExtrusionEntity.cpp:364 msgid "Mixed" msgstr "Gemischt" -#: src/libslic3r/PrintConfig.cpp:2491 +#: src/libslic3r/PrintConfig.cpp:2634 msgid "ml" msgstr "ml" -#: src/slic3r/GUI/BedShapeDialog.cpp:92 src/slic3r/GUI/ConfigWizard.cpp:218 -#: src/slic3r/GUI/ConfigWizard.cpp:970 src/slic3r/GUI/ConfigWizard.cpp:984 +#: src/slic3r/GUI/BedShapeDialog.cpp:129 src/slic3r/GUI/ConfigWizard.cpp:236 +#: src/slic3r/GUI/ConfigWizard.cpp:1336 src/slic3r/GUI/ConfigWizard.cpp:1350 #: src/slic3r/GUI/ExtruderSequenceDialog.cpp:87 -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:135 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:333 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:94 +#: src/slic3r/GUI/GCodeViewer.cpp:2183 src/slic3r/GUI/GCodeViewer.cpp:2189 +#: src/slic3r/GUI/GCodeViewer.cpp:2197 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:91 -#: src/libslic3r/PrintConfig.cpp:122 src/libslic3r/PrintConfig.cpp:188 -#: src/libslic3r/PrintConfig.cpp:246 src/libslic3r/PrintConfig.cpp:321 -#: src/libslic3r/PrintConfig.cpp:329 src/libslic3r/PrintConfig.cpp:379 -#: src/libslic3r/PrintConfig.cpp:505 src/libslic3r/PrintConfig.cpp:516 -#: src/libslic3r/PrintConfig.cpp:534 src/libslic3r/PrintConfig.cpp:712 -#: src/libslic3r/PrintConfig.cpp:1231 src/libslic3r/PrintConfig.cpp:1292 -#: src/libslic3r/PrintConfig.cpp:1310 src/libslic3r/PrintConfig.cpp:1328 -#: src/libslic3r/PrintConfig.cpp:1384 src/libslic3r/PrintConfig.cpp:1394 -#: src/libslic3r/PrintConfig.cpp:1516 src/libslic3r/PrintConfig.cpp:1524 -#: src/libslic3r/PrintConfig.cpp:1565 src/libslic3r/PrintConfig.cpp:1573 -#: src/libslic3r/PrintConfig.cpp:1583 src/libslic3r/PrintConfig.cpp:1591 -#: src/libslic3r/PrintConfig.cpp:1599 src/libslic3r/PrintConfig.cpp:1682 -#: src/libslic3r/PrintConfig.cpp:1914 src/libslic3r/PrintConfig.cpp:1985 -#: src/libslic3r/PrintConfig.cpp:2019 src/libslic3r/PrintConfig.cpp:2147 -#: src/libslic3r/PrintConfig.cpp:2226 src/libslic3r/PrintConfig.cpp:2233 -#: src/libslic3r/PrintConfig.cpp:2240 src/libslic3r/PrintConfig.cpp:2270 -#: src/libslic3r/PrintConfig.cpp:2280 src/libslic3r/PrintConfig.cpp:2290 -#: src/libslic3r/PrintConfig.cpp:2450 src/libslic3r/PrintConfig.cpp:2484 -#: src/libslic3r/PrintConfig.cpp:2623 src/libslic3r/PrintConfig.cpp:2632 -#: src/libslic3r/PrintConfig.cpp:2641 src/libslic3r/PrintConfig.cpp:2651 -#: src/libslic3r/PrintConfig.cpp:2695 src/libslic3r/PrintConfig.cpp:2705 -#: src/libslic3r/PrintConfig.cpp:2717 src/libslic3r/PrintConfig.cpp:2737 -#: src/libslic3r/PrintConfig.cpp:2747 src/libslic3r/PrintConfig.cpp:2757 -#: src/libslic3r/PrintConfig.cpp:2775 src/libslic3r/PrintConfig.cpp:2790 -#: src/libslic3r/PrintConfig.cpp:2804 src/libslic3r/PrintConfig.cpp:2815 -#: src/libslic3r/PrintConfig.cpp:2828 src/libslic3r/PrintConfig.cpp:2873 -#: src/libslic3r/PrintConfig.cpp:2883 src/libslic3r/PrintConfig.cpp:2892 -#: src/libslic3r/PrintConfig.cpp:2902 src/libslic3r/PrintConfig.cpp:2918 -#: src/libslic3r/PrintConfig.cpp:2942 +#: src/libslic3r/PrintConfig.cpp:82 src/libslic3r/PrintConfig.cpp:93 +#: src/libslic3r/PrintConfig.cpp:124 src/libslic3r/PrintConfig.cpp:222 +#: src/libslic3r/PrintConfig.cpp:280 src/libslic3r/PrintConfig.cpp:355 +#: src/libslic3r/PrintConfig.cpp:363 src/libslic3r/PrintConfig.cpp:413 +#: src/libslic3r/PrintConfig.cpp:541 src/libslic3r/PrintConfig.cpp:552 +#: src/libslic3r/PrintConfig.cpp:570 src/libslic3r/PrintConfig.cpp:748 +#: src/libslic3r/PrintConfig.cpp:1158 src/libslic3r/PrintConfig.cpp:1339 +#: src/libslic3r/PrintConfig.cpp:1400 src/libslic3r/PrintConfig.cpp:1418 +#: src/libslic3r/PrintConfig.cpp:1436 src/libslic3r/PrintConfig.cpp:1492 +#: src/libslic3r/PrintConfig.cpp:1502 src/libslic3r/PrintConfig.cpp:1624 +#: src/libslic3r/PrintConfig.cpp:1632 src/libslic3r/PrintConfig.cpp:1673 +#: src/libslic3r/PrintConfig.cpp:1681 src/libslic3r/PrintConfig.cpp:1691 +#: src/libslic3r/PrintConfig.cpp:1699 src/libslic3r/PrintConfig.cpp:1707 +#: src/libslic3r/PrintConfig.cpp:1790 src/libslic3r/PrintConfig.cpp:2056 +#: src/libslic3r/PrintConfig.cpp:2127 src/libslic3r/PrintConfig.cpp:2161 +#: src/libslic3r/PrintConfig.cpp:2290 src/libslic3r/PrintConfig.cpp:2369 +#: src/libslic3r/PrintConfig.cpp:2376 src/libslic3r/PrintConfig.cpp:2383 +#: src/libslic3r/PrintConfig.cpp:2413 src/libslic3r/PrintConfig.cpp:2423 +#: src/libslic3r/PrintConfig.cpp:2433 src/libslic3r/PrintConfig.cpp:2593 +#: src/libslic3r/PrintConfig.cpp:2627 src/libslic3r/PrintConfig.cpp:2766 +#: src/libslic3r/PrintConfig.cpp:2775 src/libslic3r/PrintConfig.cpp:2784 +#: src/libslic3r/PrintConfig.cpp:2794 src/libslic3r/PrintConfig.cpp:2859 +#: src/libslic3r/PrintConfig.cpp:2869 src/libslic3r/PrintConfig.cpp:2881 +#: src/libslic3r/PrintConfig.cpp:2901 src/libslic3r/PrintConfig.cpp:2911 +#: src/libslic3r/PrintConfig.cpp:2921 src/libslic3r/PrintConfig.cpp:2939 +#: src/libslic3r/PrintConfig.cpp:2954 src/libslic3r/PrintConfig.cpp:2968 +#: src/libslic3r/PrintConfig.cpp:2979 src/libslic3r/PrintConfig.cpp:2992 +#: src/libslic3r/PrintConfig.cpp:3037 src/libslic3r/PrintConfig.cpp:3047 +#: src/libslic3r/PrintConfig.cpp:3056 src/libslic3r/PrintConfig.cpp:3066 +#: src/libslic3r/PrintConfig.cpp:3082 src/libslic3r/PrintConfig.cpp:3106 msgid "mm" msgstr "mm" -#: src/libslic3r/PrintConfig.cpp:1547 src/libslic3r/PrintConfig.cpp:1556 +#: src/libslic3r/PrintConfig.cpp:1655 src/libslic3r/PrintConfig.cpp:1664 msgid "mm (zero to disable)" msgstr "mm (null eingeben zum Deaktivieren)" -#: src/libslic3r/PrintConfig.cpp:451 src/libslic3r/PrintConfig.cpp:560 -#: src/libslic3r/PrintConfig.cpp:882 src/libslic3r/PrintConfig.cpp:895 -#: src/libslic3r/PrintConfig.cpp:1015 src/libslic3r/PrintConfig.cpp:1041 -#: src/libslic3r/PrintConfig.cpp:1423 src/libslic3r/PrintConfig.cpp:1761 -#: src/libslic3r/PrintConfig.cpp:1883 src/libslic3r/PrintConfig.cpp:1951 -#: src/libslic3r/PrintConfig.cpp:2111 +#: src/libslic3r/PrintConfig.cpp:487 src/libslic3r/PrintConfig.cpp:596 +#: src/libslic3r/PrintConfig.cpp:924 src/libslic3r/PrintConfig.cpp:937 +#: src/libslic3r/PrintConfig.cpp:1059 src/libslic3r/PrintConfig.cpp:1085 +#: src/libslic3r/PrintConfig.cpp:1531 src/libslic3r/PrintConfig.cpp:1876 +#: src/libslic3r/PrintConfig.cpp:2025 src/libslic3r/PrintConfig.cpp:2093 +#: src/libslic3r/PrintConfig.cpp:2254 msgid "mm or %" msgstr "mm oder %" -#: src/libslic3r/PrintConfig.cpp:237 src/libslic3r/PrintConfig.cpp:609 -#: src/libslic3r/PrintConfig.cpp:617 src/libslic3r/PrintConfig.cpp:626 -#: src/libslic3r/PrintConfig.cpp:634 src/libslic3r/PrintConfig.cpp:661 -#: src/libslic3r/PrintConfig.cpp:680 src/libslic3r/PrintConfig.cpp:922 -#: src/libslic3r/PrintConfig.cpp:1050 src/libslic3r/PrintConfig.cpp:1135 -#: src/libslic3r/PrintConfig.cpp:1169 src/libslic3r/PrintConfig.cpp:1181 -#: src/libslic3r/PrintConfig.cpp:1191 src/libslic3r/PrintConfig.cpp:1241 -#: src/libslic3r/PrintConfig.cpp:1300 src/libslic3r/PrintConfig.cpp:1433 -#: src/libslic3r/PrintConfig.cpp:1607 src/libslic3r/PrintConfig.cpp:1616 -#: src/libslic3r/PrintConfig.cpp:2028 src/libslic3r/PrintConfig.cpp:2154 +#: 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 +#: src/libslic3r/PrintConfig.cpp:716 src/libslic3r/PrintConfig.cpp:966 +#: src/libslic3r/PrintConfig.cpp:1094 src/libslic3r/PrintConfig.cpp:1167 +#: src/libslic3r/PrintConfig.cpp:1243 src/libslic3r/PrintConfig.cpp:1277 +#: src/libslic3r/PrintConfig.cpp:1289 src/libslic3r/PrintConfig.cpp:1299 +#: src/libslic3r/PrintConfig.cpp:1349 src/libslic3r/PrintConfig.cpp:1408 +#: src/libslic3r/PrintConfig.cpp:1541 src/libslic3r/PrintConfig.cpp:1715 +#: src/libslic3r/PrintConfig.cpp:1724 src/libslic3r/PrintConfig.cpp:2170 +#: src/libslic3r/PrintConfig.cpp:2297 msgid "mm/s" msgstr "mm/s" -#: src/libslic3r/PrintConfig.cpp:462 src/libslic3r/PrintConfig.cpp:904 -#: src/libslic3r/PrintConfig.cpp:1720 src/libslic3r/PrintConfig.cpp:1772 -#: src/libslic3r/PrintConfig.cpp:1995 src/libslic3r/PrintConfig.cpp:2124 +#: src/libslic3r/PrintConfig.cpp:498 src/libslic3r/PrintConfig.cpp:946 +#: src/libslic3r/PrintConfig.cpp:1835 src/libslic3r/PrintConfig.cpp:1887 +#: src/libslic3r/PrintConfig.cpp:2137 src/libslic3r/PrintConfig.cpp:2267 msgid "mm/s or %" msgstr "mm/s oder %" -#: src/libslic3r/PrintConfig.cpp:196 src/libslic3r/PrintConfig.cpp:339 -#: src/libslic3r/PrintConfig.cpp:862 src/libslic3r/PrintConfig.cpp:984 -#: src/libslic3r/PrintConfig.cpp:1152 src/libslic3r/PrintConfig.cpp:1201 -#: src/libslic3r/PrintConfig.cpp:1211 src/libslic3r/PrintConfig.cpp:1403 +#: src/libslic3r/PrintConfig.cpp:230 src/libslic3r/PrintConfig.cpp:373 +#: src/libslic3r/PrintConfig.cpp:902 src/libslic3r/PrintConfig.cpp:1028 +#: src/libslic3r/PrintConfig.cpp:1260 src/libslic3r/PrintConfig.cpp:1309 +#: src/libslic3r/PrintConfig.cpp:1319 src/libslic3r/PrintConfig.cpp:1511 msgid "mm/s²" msgstr "mm/s²" -#: src/libslic3r/PrintConfig.cpp:1730 +#: src/libslic3r/PrintConfig.cpp:1845 msgid "mm²" msgstr "mm²" -#: src/libslic3r/PrintConfig.cpp:672 +#: src/libslic3r/PrintConfig.cpp:708 msgid "mm³" msgstr "mm³" -#: src/slic3r/GUI/RammingChart.cpp:81 src/libslic3r/PrintConfig.cpp:601 -#: src/libslic3r/PrintConfig.cpp:1250 +#: src/slic3r/GUI/RammingChart.cpp:81 src/libslic3r/PrintConfig.cpp:637 +#: src/libslic3r/PrintConfig.cpp:1358 msgid "mm³/s" msgstr "mm³/s" -#: src/libslic3r/PrintConfig.cpp:1262 src/libslic3r/PrintConfig.cpp:1273 +#: src/libslic3r/PrintConfig.cpp:1370 src/libslic3r/PrintConfig.cpp:1381 msgid "mm³/s²" msgstr "mm³/s²" -#: src/slic3r/GUI/GUI_App.cpp:820 +#: src/slic3r/GUI/GUI_App.cpp:1512 msgid "Mode" msgstr "&Modus" @@ -4617,7 +5285,7 @@ msgstr "&Modus" msgid "model" msgstr "Modell" -#: src/slic3r/GUI/BedShapeDialog.cpp:251 +#: src/slic3r/GUI/BedShapeDialog.cpp:395 msgid "Model" msgstr "Modell" @@ -4646,99 +5314,125 @@ msgstr "Modellreparatur beendet" msgid "Model repaired successfully" msgstr "Modellreparatur erfolgreich" -#: src/slic3r/GUI/Tab.cpp:979 +#: src/slic3r/GUI/GUI_App.cpp:1506 src/slic3r/GUI/wxExtensions.cpp:675 +msgctxt "Mode" +msgid "Advanced" +msgstr "Erweitert" + +#: src/slic3r/GUI/Tab.cpp:1241 msgid "Modifications to the current profile will be saved." msgstr "Änderungen am aktuellen Profil werden gespeichert." -#: src/slic3r/GUI/Preset.cpp:247 +#: src/slic3r/GUI/GUI_App.cpp:1425 msgid "modified" msgstr "geändert" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3551 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4014 msgid "Modifier" msgstr "Veränderer" -#: src/slic3r/GUI/Tab.cpp:1161 +#: src/slic3r/GUI/Tab.cpp:1491 msgid "Modifiers" msgstr "Veränderer" -#: src/libslic3r/PrintConfig.cpp:2512 +#: src/libslic3r/PrintConfig.cpp:2655 msgid "money/bottle" msgstr "Kosten/Flasche" -#: src/libslic3r/PrintConfig.cpp:762 +#: src/libslic3r/PrintConfig.cpp:798 msgid "money/kg" msgstr "Kosten/kg" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1372 +#: src/libslic3r/PrintConfig.cpp:461 +msgid "Monotonic" +msgstr "Monotonisch" + +#: src/slic3r/GUI/NotificationManager.cpp:305 +#: src/slic3r/GUI/NotificationManager.cpp:315 +msgid "More" +msgstr "Mehr" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1219 msgid "Mouse wheel" msgstr "Mausrad" -#: src/slic3r/GUI/GLCanvas3D.cpp:261 +#: src/slic3r/GUI/GLCanvas3D.cpp:249 msgid "Mouse wheel:" msgstr "Mausrad:" -#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:64 msgid "Move" msgstr "Bewegen" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1372 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1219 msgid "Move clipping plane" msgstr "Beschnittebene bewegen" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:215 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 msgid "Move current slider thumb Down" msgstr "Bewege aktuellen Schieberegler nach unten" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:214 +#: 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" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:1059 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:835 msgid "Move drainage hole" msgstr "Drainageloch bewegen" -#: src/slic3r/GUI/GLCanvas3D.cpp:3505 +#: src/slic3r/GUI/GLCanvas3D.cpp:3810 msgid "Move Object" msgstr "Objekt bewegen" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1365 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1212 msgid "Move point" msgstr "Punkt bewegen" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:166 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:160 msgid "Move selection 10 mm in negative X direction" msgstr "Auswahl 10 mm in negativer X-Richtung verschieben" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:159 msgid "Move selection 10 mm in negative Y direction" msgstr "Auswahl 10 mm in negativer Y-Richtung verschieben" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:167 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:161 msgid "Move selection 10 mm in positive X direction" msgstr "Auswahl 10 mm in positiver X-Richtung verschieben" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:158 msgid "Move selection 10 mm in positive Y direction" msgstr "Auswahl 10 mm in positiver Y-Richtung verschieben" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1097 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:955 msgid "Move support point" msgstr "Stützpunkt bewegen" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:169 +#: src/slic3r/GUI/GCodeViewer.cpp:2492 +msgid "Movement" +msgstr "Bewegung" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:163 msgid "Movement in camera space" msgstr "Bewegung im Kameraraum" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:168 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:162 msgid "Movement step set to 1 mm" msgstr "Bewegungsschritt auf 1 mm eingestellt" -#: src/libslic3r/PrintConfig.cpp:2201 +#: src/libslic3r/PrintConfig.cpp:2344 msgid "Multi material printers may need to prime or purge extruders on tool changes. Extrude the excess material into the wipe tower." msgstr "Multi-Material-Drucker müssen eventuell Extruder bei Werkzeugwechseln vor- oder nachspülen. Extrudieren Sie das überschüssige Material in den Reinigungsturm." -#: src/slic3r/GUI/Plater.cpp:2360 src/slic3r/GUI/Plater.cpp:2413 +#: src/slic3r/GUI/Plater.cpp:2322 src/slic3r/GUI/Plater.cpp:2375 msgid "Multi-part object detected" msgstr "Objekt mit mehreren Teilen erkannt" @@ -4747,11 +5441,11 @@ msgstr "Objekt mit mehreren Teilen erkannt" msgid "Multiple %s devices found. Please only connect one at a time for flashing." msgstr "Mehrere %s Geräte gefunden. Bitte immer nur eins zum Flashen anschließen." -#: src/slic3r/GUI/Tab.cpp:1179 +#: src/slic3r/GUI/Tab.cpp:1509 msgid "Multiple Extruders" msgstr "Mehrere Extruder" -#: src/slic3r/GUI/Plater.cpp:2410 +#: src/slic3r/GUI/Plater.cpp:2372 msgid "" "Multiple objects were loaded for a multi-material printer.\n" "Instead of considering them as multiple objects, should I consider\n" @@ -4761,36 +5455,41 @@ msgstr "" "Soll ich, anstatt sie als mehrere Objekte zu betrachten, \n" "diese Dateien als ein einzelnes Objekt mit mehreren Teilen behandeln?" -#: src/libslic3r/PrintConfig.cpp:3439 +#: src/libslic3r/PrintConfig.cpp:3638 msgid "Multiply copies by creating a grid." msgstr "Multiple Kopien durch Erstellen eines Rasters." -#: src/libslic3r/PrintConfig.cpp:3434 +#: src/libslic3r/PrintConfig.cpp:3633 msgid "Multiply copies by this factor." msgstr "Mehrfache Kopien mit diesem Faktor." -#: src/slic3r/GUI/Field.cpp:150 src/slic3r/GUI/OptionsGroup.cpp:580 +#: src/slic3r/GUI/Field.cpp:198 src/slic3r/GUI/OptionsGroup.cpp:715 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:874 msgid "N/A" msgstr "N.V." -#: src/slic3r/GUI/GUI_ObjectList.cpp:270 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:153 +#: src/slic3r/GUI/GUI_ObjectList.cpp:284 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:161 msgid "Name" msgstr "Name" -#: src/libslic3r/PrintConfig.cpp:1488 +#: src/libslic3r/PrintConfig.cpp:114 +msgid "Name of the printer" +msgstr "Name des Druckers" + +#: src/libslic3r/PrintConfig.cpp:1596 msgid "Name of the printer variant. For example, the printer variants may be differentiated by a nozzle diameter." msgstr "Name der Druckervariante. Beispielsweise können die Druckervarianten durch einen Düsendurchmesser unterschieden werden." -#: src/libslic3r/PrintConfig.cpp:1482 +#: src/libslic3r/PrintConfig.cpp:1590 msgid "Name of the printer vendor." msgstr "Name des Druckerherstellers." -#: src/libslic3r/PrintConfig.cpp:1058 +#: src/libslic3r/PrintConfig.cpp:1102 msgid "Name of the profile, from which this profile inherits." msgstr "Name des Profils, von dem dieses Profil abgeleitet wurde." -#: src/libslic3r/PrintConfig.cpp:1630 +#: src/libslic3r/PrintConfig.cpp:1738 msgid "Nearest" msgstr "Nächste" @@ -4798,14 +5497,30 @@ msgstr "Nächste" msgid "Network lookup" msgstr "Network Lookup" -#: src/slic3r/GUI/Plater.cpp:2151 +#: src/slic3r/GUI/Preferences.cpp:430 +msgid "New layout, access via settings button in the top menu" +msgstr "Neues Layout, Zugang über die Schaltfläche Einstellungen im oberen Menü" + +#: src/slic3r/GUI/Plater.cpp:2056 msgid "New Project" msgstr "Neues Projekt" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:112 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:105 msgid "New project, clear plater" msgstr "Neues Projekt, Druckplatte leeren" +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:609 +msgid "New Value" +msgstr "Neuer Wert" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1178 +msgid "New value" +msgstr "Neuer Wert" + +#: src/slic3r/GUI/NotificationManager.hpp:322 +msgid "New version is available." +msgstr "Eine neue Version ist verfügbar." + #: src/slic3r/GUI/UpdateDialogs.cpp:38 #, c-format msgid "New version of %s is available" @@ -4815,23 +5530,23 @@ msgstr "Eine neue Version von %s ist verfügbar" msgid "New version:" msgstr "Neue Version:" -#: src/slic3r/GUI/GLCanvas3D.cpp:4673 +#: src/slic3r/GUI/GLCanvas3D.cpp:5089 msgid "Next Redo action: %1%" msgstr "Nächste Redo Aktion: %1%" -#: src/slic3r/GUI/GLCanvas3D.cpp:4641 +#: src/slic3r/GUI/GLCanvas3D.cpp:5051 msgid "Next Undo action: %1%" msgstr "Nächste Undo-Aktion: %1%" -#: src/libslic3r/PrintConfig.cpp:960 +#: src/libslic3r/PrintConfig.cpp:1004 msgid "No extrusion" msgstr "Keine Extrusion" -#: src/libslic3r/SLAPrintSteps.cpp:453 +#: src/libslic3r/SLAPrintSteps.cpp:451 msgid "No pad can be generated for this model with the current configuration" msgstr "Für dieses Modell kann mit der aktuellen Konfiguration keine Grundschicht generiert werden" -#: src/slic3r/GUI/MainFrame.cpp:784 +#: src/slic3r/GUI/MainFrame.cpp:1485 msgid "No previously sliced file." msgstr "Keine vorher gesclicete Datei." @@ -4839,175 +5554,221 @@ msgstr "Keine vorher gesclicete Datei." msgid "NO RAMMING AT ALL" msgstr "ÜBERHAUPT KEIN RAMMEN" -#: src/libslic3r/PrintConfig.cpp:1857 +#: src/libslic3r/PrintConfig.cpp:1999 msgid "No sparse layers (EXPERIMENTAL)" msgstr "Keine spärlichen Schichten (EXPERIMENTELL)" -#: src/libslic3r/PrintConfig.cpp:2774 +#: src/libslic3r/PrintConfig.cpp:2938 msgid "No support points will be placed closer than this threshold." msgstr "Es werden keine Stützpunkte näher als dieser Schwellenwert platziert." -#: src/slic3r/GUI/UpdateDialogs.cpp:303 +#: src/slic3r/GUI/UpdateDialogs.cpp:304 msgid "No updates available" msgstr "Keine Updates verfügbar" -#: src/slic3r/GUI/ConfigWizard.cpp:291 src/slic3r/GUI/ConfigWizard.cpp:574 -#: src/slic3r/GUI/Plater.cpp:499 src/slic3r/GUI/Plater.cpp:639 -#: src/libslic3r/ExtrusionEntity.cpp:309 +#: src/slic3r/GUI/ConfigWizard.cpp:309 src/slic3r/GUI/ConfigWizard.cpp:599 +#: src/slic3r/GUI/Plater.cpp:365 src/slic3r/GUI/Plater.cpp:505 +#: src/libslic3r/ExtrusionEntity.cpp:312 msgid "None" msgstr "Kein" -#: src/slic3r/GUI/Tab.cpp:2203 +#: src/slic3r/GUI/Search.cpp:77 src/slic3r/GUI/Tab.cpp:2372 msgid "Normal" msgstr "Normal" -#: src/slic3r/GUI/Plater.cpp:1286 +#: src/slic3r/GUI/Plater.cpp:1177 src/slic3r/GUI/Plater.cpp:1224 msgid "normal mode" msgstr "Normaler Modus" -#: src/libslic3r/Zipper.cpp:46 +#: src/slic3r/GUI/GCodeViewer.cpp:2552 +msgid "Normal mode" +msgstr "Normaler Modus" + +#: src/libslic3r/miniz_extension.cpp:105 msgid "not a ZIP archive" msgstr "kein ZIP Archiv" -#: src/slic3r/GUI/BedShapeDialog.cpp:223 src/slic3r/GUI/BedShapeDialog.cpp:302 +#: src/slic3r/GUI/BedShapeDialog.cpp:366 src/slic3r/GUI/BedShapeDialog.cpp:446 msgid "Not found:" msgstr "Nicht gefunden:" -#: src/slic3r/GUI/DoubleSlider.cpp:1019 +#: src/slic3r/GUI/DoubleSlider.cpp:1144 msgid "Note" msgstr "Hinweis" -#: src/slic3r/Utils/AstroBox.cpp:89 +#: src/slic3r/GUI/Tab.cpp:3408 +msgid "Note, that selected preset will be deleted from this/those printer(s) too." +msgstr "Beachten Sie, dass die ausgewählte Voreinstellung auch von diesem/diesen Drucker(n) gelöscht wird." + +#: src/slic3r/GUI/Tab.cpp:3416 +msgid "Note, that this/those printer(s) will be deleted after deleting of the selected preset." +msgstr "Beachten Sie, dass dieser/diese Drucker nach dem Löschen der ausgewählten Voreinstellung gelöscht werden." + +#: src/slic3r/GUI/Tab.cpp:2039 +msgid "" +"Note: All parameters from this group are moved to the Physical Printer settings (see changelog).\n" +"\n" +"A new Physical Printer profile is created by clicking on the \"cog\" icon right of the Printer profiles combo box, by selecting the \"Add physical printer\" item in the Printer combo box. The Physical Printer profile editor opens also when clicking on the \"cog\" icon in the Printer settings tab. The Physical Printer profiles are being stored into PrusaSlicer/physical_printer directory." +msgstr "" +"Hinweis: Alle Parameter aus dieser Gruppe werden in die Einstellungen des physischen Druckers verschoben (siehe Changelog).\n" +"\n" +"Ein neues physisches Druckerprofil wird erstellt, indem man auf das \"Zahnrad\"-Symbol rechts vom Auswahlfeld \"Druckerprofile\" klickt, indem man den Punkt \"Physischen Drucker hinzufügen\" im Auswahlfeld \"Drucker\" auswählt. Der Profil-Editor für physische Drucker wird auch durch Klicken auf das \"Zahnrad\"-Symbol in der Registerkarte \"Druckereinstellungen\" geöffnet. Die Profile des physischen Druckers werden im Verzeichnis PrusaSlicer/physical_printer gespeichert." + +#: src/slic3r/Utils/AstroBox.cpp:92 msgid "Note: AstroBox version at least 1.1.0 is required." msgstr "Hinweis: Die AstroBox-Version 1.1.0 oder höher ist erforderlich." -#: src/slic3r/Utils/FlashAir.cpp:73 +#: src/slic3r/Utils/FlashAir.cpp:76 msgid "Note: FlashAir with firmware 2.00.02 or newer and activated upload function is required." msgstr "Hinweis: FlashAir mit Firmware 2.00.02 oder neuer und aktivierter Upload-Funktion ist erforderlich." -#: src/slic3r/Utils/OctoPrint.cpp:89 +#: src/slic3r/Utils/OctoPrint.cpp:91 msgid "Note: OctoPrint version at least 1.1.0 is required." msgstr "Hinweis: Es ist mindestens die OctoPrint-Version 1.1.0 erforderlich." -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1345 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1192 msgid "Note: some shortcuts work in (non)editing mode only." msgstr "Hinweis: Einige Tastenkombinationen funktionieren nur im (Nicht-)Bearbeitungsmodus." -#: src/slic3r/GUI/Tab.cpp:1251 src/slic3r/GUI/Tab.cpp:1252 -#: src/slic3r/GUI/Tab.cpp:1540 src/slic3r/GUI/Tab.cpp:1541 -#: src/slic3r/GUI/Tab.cpp:2012 src/slic3r/GUI/Tab.cpp:2013 -#: src/slic3r/GUI/Tab.cpp:2128 src/slic3r/GUI/Tab.cpp:2129 -#: src/slic3r/GUI/Tab.cpp:3535 src/slic3r/GUI/Tab.cpp:3536 +#: src/slic3r/GUI/SavePresetDialog.cpp:151 +msgid "Note: This preset will be replaced after saving" +msgstr "Hinweis: Diese Voreinstellung wird nach dem Speichern ersetzt" + +#: src/slic3r/GUI/Tab.cpp:1581 src/slic3r/GUI/Tab.cpp:1582 +#: src/slic3r/GUI/Tab.cpp:1887 src/slic3r/GUI/Tab.cpp:1888 +#: src/slic3r/GUI/Tab.cpp:2221 src/slic3r/GUI/Tab.cpp:2222 +#: src/slic3r/GUI/Tab.cpp:2297 src/slic3r/GUI/Tab.cpp:2298 +#: src/slic3r/GUI/Tab.cpp:3951 src/slic3r/GUI/Tab.cpp:3952 msgid "Notes" msgstr "Anmerkungen" -#: src/slic3r/GUI/ConfigWizard.cpp:1751 src/slic3r/GUI/DoubleSlider.cpp:1905 -#: src/slic3r/GUI/DoubleSlider.cpp:1926 src/slic3r/GUI/GUI.cpp:245 +#: src/slic3r/GUI/ConfigWizard.cpp:2237 src/slic3r/GUI/DoubleSlider.cpp:2124 +#: src/slic3r/GUI/DoubleSlider.cpp:2144 src/slic3r/GUI/GUI.cpp:244 msgid "Notice" msgstr "Hinweis" -#: src/slic3r/GUI/ConfigWizard.cpp:218 +#: src/slic3r/GUI/ConfigWizard.cpp:236 msgid "nozzle" msgstr "Düse" -#: src/slic3r/GUI/Tab.cpp:1870 src/slic3r/GUI/Tab.cpp:2340 -#: src/libslic3r/PrintConfig.cpp:1326 +#: src/slic3r/GUI/Tab.cpp:1790 +msgid "Nozzle" +msgstr "Düse" + +#: src/slic3r/GUI/ConfigWizard.cpp:1392 +msgid "Nozzle and Bed Temperatures" +msgstr "Düsen- und Bett-Temperaturen" + +#: src/slic3r/GUI/Tab.cpp:2104 src/slic3r/GUI/Tab.cpp:2509 +#: src/libslic3r/PrintConfig.cpp:1434 msgid "Nozzle diameter" msgstr "Düsendurchmesser" -#: src/slic3r/GUI/ConfigWizard.cpp:969 +#: src/slic3r/GUI/ConfigWizard.cpp:1335 msgid "Nozzle Diameter:" msgstr "Düsendurchmesser:" -#: src/libslic3r/PrintConfig.cpp:650 +#: src/libslic3r/PrintConfig.cpp:2201 +msgid "Nozzle temperature" +msgstr "Düsentemperatur" + +#: src/libslic3r/PrintConfig.cpp:2198 +msgid "Nozzle temperature for layers after the first one. Set this to zero to disable temperature control commands in the output G-code." +msgstr "Düsentemperatur für Schichten nach der ersten. Setzen Sie diesen Wert auf Null, um Temperatursteuerungsbefehle im ausgegebenen G-Code zu deaktivieren." + +#: src/libslic3r/PrintConfig.cpp:961 +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 "Düsentemperatur für die erste Schicht. Wenn Sie die Temperatur während des Drucks manuell steuern möchten, setzen Sie diesen Wert auf Null, um Temperatursteuerungsbefehle im ausgegebenen G-Code zu deaktivieren." + +#: src/libslic3r/PrintConfig.cpp:686 msgid "Number of cooling moves" msgstr "Anzahl der Kühlbewegungen" -#: src/slic3r/GUI/Tab.cpp:1839 +#: src/slic3r/GUI/Tab.cpp:2073 msgid "Number of extruders of the printer." msgstr "Anzahl der Extruder des Druckers." -#: src/libslic3r/PrintConfig.cpp:1975 +#: src/libslic3r/PrintConfig.cpp:2117 msgid "Number of interface layers to insert between the object(s) and support material." msgstr "Anzahl der Schnittstellenschichten, die zwischen Objekt(en) und Trägermaterial eingefügt werden sollen." -#: src/libslic3r/PrintConfig.cpp:1697 +#: src/libslic3r/PrintConfig.cpp:1812 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 "Anzahl der Schleifen für die Schürze. Wenn die Option Minimale Extrusionslänge gesetzt ist, kann die Anzahl der Schleifen größer sein als die hier konfigurierte. Setzen Sie diesen Wert auf null, um die Schürze komplett zu deaktivieren." -#: src/libslic3r/PrintConfig.cpp:2365 +#: src/libslic3r/PrintConfig.cpp:2508 msgid "Number of pixels in" msgstr "Anzahl an Pixeln in" -#: src/libslic3r/PrintConfig.cpp:2367 +#: src/libslic3r/PrintConfig.cpp:2510 msgid "Number of pixels in X" msgstr "Anzahl an Pixeln in X" -#: src/libslic3r/PrintConfig.cpp:2373 +#: src/libslic3r/PrintConfig.cpp:2516 msgid "Number of pixels in Y" msgstr "Anzahl an Pixeln in Y" -#: src/libslic3r/PrintConfig.cpp:176 +#: src/libslic3r/PrintConfig.cpp:210 msgid "Number of solid layers to generate on bottom surfaces." msgstr "Anzahl der zu erzeugenden massiven Schichten auf der Bodenfläche." -#: src/libslic3r/PrintConfig.cpp:1781 +#: src/libslic3r/PrintConfig.cpp:1896 msgid "Number of solid layers to generate on top and bottom surfaces." msgstr "Anzahl der zu erzeugenden massiven Schichten auf der Ober- und Unterseite." -#: src/libslic3r/PrintConfig.cpp:2134 +#: src/libslic3r/PrintConfig.cpp:2277 msgid "Number of solid layers to generate on top surfaces." msgstr "Anzahl der zu erzeugenden massiven Schichten auf der Oberseite." -#: src/libslic3r/PrintConfig.cpp:2518 +#: src/libslic3r/PrintConfig.cpp:2661 msgid "Number of the layers needed for the exposure time fade from initial exposure time to the exposure time" msgstr "Anzahl der für die Reduzierung der Belichtungszeit benötigten Schichten, von der anfänglichen bis zur Belichtungszeit" -#: src/slic3r/GUI/Plater.cpp:241 +#: src/slic3r/GUI/Plater.cpp:247 msgid "Number of tool changes" msgstr "Anzahl der Werkzeugwechsel" -#: src/libslic3r/PrintConfig.cpp:2753 +#: src/slic3r/GUI/Tab.cpp:4127 src/libslic3r/PrintConfig.cpp:2917 msgid "Object elevation" msgstr "Objekt-Hebung" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2466 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2858 msgid "Object manipulation" msgstr "Objektbearbeitung" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:155 src/libslic3r/GCode.cpp:638 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:163 src/libslic3r/GCode.cpp:623 msgid "Object name" msgstr "Objektname" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3417 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3880 msgid "Object or Instance" msgstr "Objekt oder Kopie" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1106 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1230 msgid "Object reordered" msgstr "Objekt neu angeordnet" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2479 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2871 msgid "Object Settings to modify" msgstr "Abweichende Objekteigenschaften" -#: src/slic3r/GUI/Plater.cpp:2529 +#: src/slic3r/GUI/Plater.cpp:2491 msgid "Object too large?" msgstr "Objekt zu groß?" -#: src/libslic3r/PrintConfig.cpp:2262 +#: src/libslic3r/PrintConfig.cpp:2405 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 "Objekt wird zum Reinigen der Düse nach einem Materialwechsel verwendet, um Material zu sparen, das sonst im Reinigungsturm landen und die Druckzeit verkürzen würde. Die Farben der Objekte werden dabei gemischt." -#: src/slic3r/GUI/Plater.cpp:1194 +#: src/slic3r/GUI/Plater.cpp:1103 msgid "object(s)" msgstr "Objekt(e)" -#: src/slic3r/GUI/Plater.cpp:1231 src/slic3r/GUI/Plater.cpp:1245 +#: src/slic3r/GUI/Plater.cpp:1143 src/slic3r/GUI/Plater.cpp:1160 msgid "objects" msgstr "Objekte" -#: src/libslic3r/PrintConfig.cpp:429 src/libslic3r/PrintConfig.cpp:855 +#: src/libslic3r/PrintConfig.cpp:465 src/libslic3r/PrintConfig.cpp:893 msgid "Octagram Spiral" msgstr "Achterstern-Spirale" @@ -5015,64 +5776,97 @@ msgstr "Achterstern-Spirale" msgid "OctoPrint version" msgstr "OctoPrint Version" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3425 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3888 msgid "of a current Object" msgstr "des aktuellen Objekts" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:43 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:42 msgid "Offset" msgstr "Offset" -#: src/slic3r/GUI/Tab.cpp:1755 +#: src/slic3r/GUI/Preferences.cpp:422 +msgid "Old regular layout with the tab bar" +msgstr "Altes reguläres Layout mit der Registerleiste" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:608 +msgid "Old Value" +msgstr "Alter Wert" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1177 +msgid "Old value" +msgstr "Alter Wert" + +#: src/slic3r/GUI/Preferences.cpp:123 +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 "Unter OSX wird standardmäßig immer nur eine Instanz der Anwendung ausgeführt. Es ist jedoch erlaubt, mehrere Instanzen derselben Anwendung von der Befehlszeile aus auszuführen. In einem solchen Fall erlauben diese Einstellungen nur eine Instanz." + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:359 #, c-format msgid "On this system, %s uses HTTPS certificates from the system Certificate Store or Keychain." msgstr "Auf diesem System verwendet %s HTTPS-Zertifikate aus dem System Zertifikatsspeicher oder Schlüsselbund." -#: src/slic3r/GUI/DoubleSlider.cpp:950 +#: src/slic3r/GUI/DoubleSlider.cpp:1064 msgid "One layer mode" msgstr "Eine Schicht Modus" -#: src/libslic3r/Print.cpp:1365 +#: src/libslic3r/Print.cpp:1391 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/libslic3r/PrintConfig.cpp:1903 src/libslic3r/PrintConfig.cpp:2676 +#: 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ützstrukturen, die auf dem Ausdruck gründen würden." -#: src/libslic3r/PrintConfig.cpp:1027 +#: src/libslic3r/PrintConfig.cpp:1071 msgid "Only infill where needed" msgstr "Infill nur wo es notwendig ist drucken" -#: src/slic3r/GUI/Tab.cpp:2373 +#: src/slic3r/GUI/Tab.cpp:2542 msgid "Only lift Z" msgstr "Nur Z anheben" -#: src/libslic3r/PrintConfig.cpp:1570 +#: src/libslic3r/PrintConfig.cpp:1678 msgid "Only lift Z above" msgstr "Z nur Anheben über" -#: src/libslic3r/PrintConfig.cpp:1579 +#: src/libslic3r/PrintConfig.cpp:1687 msgid "Only lift Z below" msgstr "Z anheben nur unter" -#: src/libslic3r/PrintConfig.cpp:1348 +#: src/libslic3r/PrintConfig.cpp:1456 msgid "Only retract when crossing perimeters" msgstr "Nur bei Umfangsüberquerungen einziehen" -#: src/slic3r/GUI/Tab.cpp:1187 +#: src/slic3r/GUI/ConfigWizard.cpp:714 +msgid "Only the following installed printers are compatible with the selected filament:" +msgstr "Nur die folgenden installierten Drucker sind mit dem ausgewählten Filament kompatibel:" + +#: src/slic3r/GUI/Tab.cpp:1517 msgid "Ooze prevention" msgstr "Vermeidung von Nachsickern (Ooze)" -#: src/libslic3r/Print.cpp:1266 +#: src/libslic3r/Print.cpp:1292 msgid "Ooze prevention is currently not supported with the wipe tower enabled." msgstr "Die Sickervermeidung wird derzeit nicht unterstützt, wenn der Wischturm aktiviert ist." -#: src/slic3r/GUI/MainFrame.cpp:408 +#: src/slic3r/GUI/MainFrame.cpp:1398 +msgid "Open &PrusaSlicer" +msgstr "Öffne &PrusaSlicer" + +#: src/slic3r/GUI/MainFrame.cpp:1391 +msgid "Open a G-code file" +msgstr "Öffne eine G-Code-Datei" + +#: src/slic3r/GUI/MainFrame.cpp:63 src/slic3r/GUI/MainFrame.cpp:77 +#: src/slic3r/GUI/MainFrame.cpp:1262 +msgid "Open a new PrusaSlicer instance" +msgstr "Öffne eine neue PrusaSlicer-Instanz" + +#: src/slic3r/GUI/MainFrame.cpp:989 msgid "Open a project file" msgstr "Öffne eine Projektdatei" -#: src/slic3r/GUI/Tab.cpp:1729 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:330 msgid "Open CA certificate file" msgstr "Open CA Zertifikat Datei" @@ -5085,116 +5879,150 @@ msgstr "Änderungsseite öffnen" msgid "Open download page" msgstr "Downloadseite öffnen" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:113 +#: src/slic3r/GUI/NotificationManager.cpp:742 +msgid "Open Folder." +msgstr "Öffne Ordner." + +#: src/slic3r/Utils/Process.cpp:151 +msgid "Open G-code file:" +msgstr "Öffne G-Code-Datei:" + +#: src/slic3r/GUI/MainFrame.cpp:66 src/slic3r/GUI/MainFrame.cpp:1141 +msgid "Open G-code viewer" +msgstr "G-Code-Viewer öffnen" + +#: src/slic3r/GUI/MainFrame.cpp:79 +msgid "Open new G-code viewer" +msgstr "Neuen G-Code-Viewer öffnen" + +#: src/slic3r/GUI/MainFrame.cpp:63 src/slic3r/GUI/MainFrame.cpp:1262 +msgid "Open new instance" +msgstr "Neue Instanz öffnen" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:106 msgid "Open project STL/OBJ/AMF/3MF with config, clear plater" msgstr "Öffne Projekt STL/OBJ/AMF/3MF mit Konfiguration, Druckplatte leeren" -#: src/slic3r/GUI/MainFrame.cpp:693 +#: src/slic3r/GUI/MainFrame.cpp:77 src/slic3r/GUI/MainFrame.cpp:1398 +msgid "Open PrusaSlicer" +msgstr "PrusaSlicer öffnen" + +#: src/slic3r/GUI/MainFrame.cpp:918 src/slic3r/GUI/MainFrame.cpp:1317 #, c-format msgid "Open the %s website in your browser" msgstr "%s-Website in Ihrem Browser öffnen" -#: src/slic3r/GUI/MainFrame.cpp:684 +#: src/slic3r/GUI/MainFrame.cpp:909 src/slic3r/GUI/MainFrame.cpp:1308 msgid "Open the Prusa3D drivers download page in your browser" msgstr "Download-Seite für die Prusa3D-Treiber in Ihrem Browser öffnen" -#: src/slic3r/GUI/MainFrame.cpp:686 +#: src/slic3r/GUI/MainFrame.cpp:911 src/slic3r/GUI/MainFrame.cpp:1310 msgid "Open the software releases page in your browser" msgstr "Seite mit Programmversionen in Ihrem Browser öffnen" -#: src/slic3r/GUI/Plater.cpp:4040 +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:220 src/slic3r/GUI/Plater.cpp:3961 msgid "Optimize orientation" msgstr "Optimiere Ausrichtung" -#: src/slic3r/GUI/Plater.cpp:2767 +#: src/slic3r/GUI/Plater.cpp:1555 msgid "Optimize Rotation" msgstr "Rotation optimieren" -#: src/slic3r/GUI/Plater.cpp:4040 +#: src/slic3r/GUI/Plater.cpp:3962 msgid "Optimize the rotation of the object for better print results." msgstr "Optimiere die Rotation des Objekts für ein besseres Druckergebnis." -#: src/libslic3r/PrintConfig.cpp:137 +#: src/libslic3r/PrintConfig.cpp:170 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 "Optimieren Sie die Verfahrbewegungen, um das Überschreiten von Konturen zu minimieren. Dies ist vor allem bei Bowdenextrudern nützlich, die unter sickerndem Material leiden. Diese Funktion verlangsamt sowohl den Druck als auch die Generierung des G-Codes." -#: src/slic3r/GUI/Tab.cpp:1131 +#: src/slic3r/GUI/GCodeViewer.cpp:2525 src/slic3r/GUI/GUI_Preview.cpp:320 +#: src/slic3r/GUI/GUI_Preview.cpp:333 +msgid "Options" +msgstr "Optionen" + +#: src/slic3r/GUI/Tab.cpp:1460 msgid "Options for support material and raft" msgstr "Optionen für Stützstrukturen und Raft" -#: src/slic3r/GUI/DoubleSlider.cpp:989 +#: src/slic3r/GUI/Mouse3DController.cpp:315 +msgid "Options:" +msgstr "Optionen:" + +#: src/slic3r/GUI/DoubleSlider.cpp:1112 msgid "or press \"+\" key" msgstr "oder drücken Sie die Taste \"+\"" -#: src/slic3r/GUI/Plater.cpp:2892 +#: src/slic3r/GUI/Jobs/RotoptimizeJob.cpp:74 msgid "Orientation found." msgstr "Ausrichtung gefunden." -#: src/slic3r/GUI/Plater.cpp:2891 +#: src/slic3r/GUI/Jobs/RotoptimizeJob.cpp:73 msgid "Orientation search canceled." msgstr "Ausrichtungssuche abgebrochen." -#: src/slic3r/GUI/BedShapeDialog.cpp:84 +#: src/slic3r/GUI/BedShapeDialog.cpp:94 msgid "Origin" msgstr "Nullpunkt" -#: src/slic3r/GUI/Tab.cpp:1227 +#: src/slic3r/GUI/Tab.cpp:1557 msgid "Other" msgstr "Sonstige" -#: src/libslic3r/PrintConfig.cpp:144 src/libslic3r/PrintConfig.cpp:2064 +#: src/libslic3r/PrintConfig.cpp:177 src/libslic3r/PrintConfig.cpp:2206 msgid "Other layers" msgstr "Andere Schichten" -#: src/slic3r/GUI/ConfigWizard.cpp:856 +#: src/slic3r/GUI/ConfigWizard.cpp:1222 msgid "Other Vendors" msgstr "Andere Hersteller" -#: src/slic3r/GUI/Tab.cpp:1238 src/slic3r/GUI/Tab.cpp:3666 +#: src/slic3r/GUI/Tab.cpp:1568 src/slic3r/GUI/Tab.cpp:4085 msgid "Output file" msgstr "Ausgabedatei" -#: src/libslic3r/PrintConfig.cpp:3493 +#: src/libslic3r/PrintConfig.cpp:3692 msgid "Output File" msgstr "Ausgabedatei" -#: src/libslic3r/PrintConfig.cpp:1363 +#: src/libslic3r/PrintConfig.cpp:1471 msgid "Output filename format" msgstr "Ausgabe Dateinamen Format" -#: src/libslic3r/PrintConfig.cpp:3381 +#: src/libslic3r/PrintConfig.cpp:3580 msgid "Output Model Info" msgstr "Ausgabe Modellinformationen" -#: src/slic3r/GUI/Tab.cpp:1230 src/slic3r/GUI/Tab.cpp:3665 +#: src/slic3r/GUI/Tab.cpp:1560 src/slic3r/GUI/Tab.cpp:4084 msgid "Output options" msgstr "Ausgabeoptionen" -#: src/slic3r/GUI/GUI_Preview.cpp:239 src/libslic3r/ExtrusionEntity.cpp:312 +#: src/slic3r/GUI/GUI_Preview.cpp:303 src/libslic3r/ExtrusionEntity.cpp:316 +#: src/libslic3r/ExtrusionEntity.cpp:340 msgid "Overhang perimeter" msgstr "Überhängende Außenkontur" -#: src/libslic3r/PrintConfig.cpp:2042 +#: src/libslic3r/PrintConfig.cpp:2184 msgid "Overhang threshold" msgstr "Überhangsschwellwert" -#: src/slic3r/GUI/Tab.cpp:1215 +#: src/slic3r/GUI/Tab.cpp:1545 msgid "Overlap" msgstr "Überlappung" -#: src/slic3r/GUI/MainFrame.cpp:614 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "P&rint Settings Tab" msgstr "D&ruckeinstellungen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:107 src/slic3r/GUI/GUI_ObjectList.cpp:625 -#: src/slic3r/GUI/Plater.cpp:635 src/slic3r/GUI/Tab.cpp:3636 -#: src/slic3r/GUI/Tab.cpp:3637 src/libslic3r/PrintConfig.cpp:2781 -#: src/libslic3r/PrintConfig.cpp:2788 src/libslic3r/PrintConfig.cpp:2802 -#: src/libslic3r/PrintConfig.cpp:2813 src/libslic3r/PrintConfig.cpp:2823 -#: src/libslic3r/PrintConfig.cpp:2845 src/libslic3r/PrintConfig.cpp:2856 -#: src/libslic3r/PrintConfig.cpp:2863 src/libslic3r/PrintConfig.cpp:2870 -#: src/libslic3r/PrintConfig.cpp:2881 src/libslic3r/PrintConfig.cpp:2890 -#: src/libslic3r/PrintConfig.cpp:2899 +#: src/slic3r/GUI/GUI_ObjectList.cpp:105 src/slic3r/GUI/GUI_ObjectList.cpp:664 +#: src/slic3r/GUI/Plater.cpp:501 src/slic3r/GUI/Tab.cpp:4055 +#: src/slic3r/GUI/Tab.cpp:4056 src/slic3r/GUI/Tab.cpp:4127 +#: src/libslic3r/PrintConfig.cpp:2945 src/libslic3r/PrintConfig.cpp:2952 +#: src/libslic3r/PrintConfig.cpp:2966 src/libslic3r/PrintConfig.cpp:2977 +#: src/libslic3r/PrintConfig.cpp:2987 src/libslic3r/PrintConfig.cpp:3009 +#: src/libslic3r/PrintConfig.cpp:3020 src/libslic3r/PrintConfig.cpp:3027 +#: src/libslic3r/PrintConfig.cpp:3034 src/libslic3r/PrintConfig.cpp:3045 +#: src/libslic3r/PrintConfig.cpp:3054 src/libslic3r/PrintConfig.cpp:3063 msgid "Pad" msgstr "Grundschicht (Pad)" @@ -5202,150 +6030,186 @@ msgstr "Grundschicht (Pad)" msgid "Pad and Support" msgstr "Grundschicht und Stützen" -#: src/libslic3r/PrintConfig.cpp:2855 +#: src/slic3r/GUI/Tab.cpp:4127 src/libslic3r/PrintConfig.cpp:3019 msgid "Pad around object" msgstr "Grundschicht um Objekt" -#: src/libslic3r/PrintConfig.cpp:2862 +#: src/libslic3r/PrintConfig.cpp:3026 msgid "Pad around object everywhere" msgstr "Grundschicht überall um Objekt" -#: src/libslic3r/PrintConfig.cpp:2811 +#: src/libslic3r/PrintConfig.cpp:2975 msgid "Pad brim size" msgstr "Grundschicht Randgröße" -#: src/libslic3r/SLA/Pad.cpp:691 +#: src/libslic3r/SLA/Pad.cpp:532 msgid "Pad brim size is too small for the current configuration." msgstr "Die Randgröße der Grundschicht ist für die aktuelle Konfiguration zu klein." -#: src/libslic3r/PrintConfig.cpp:2898 +#: src/libslic3r/PrintConfig.cpp:3062 msgid "Pad object connector penetration" msgstr "Objektgrundschicht Verbindungseindringtiefe" -#: src/libslic3r/PrintConfig.cpp:2880 +#: src/libslic3r/PrintConfig.cpp:3044 msgid "Pad object connector stride" msgstr "Objektgrundschicht Verbindungsschritte" -#: src/libslic3r/PrintConfig.cpp:2889 +#: src/libslic3r/PrintConfig.cpp:3053 msgid "Pad object connector width" msgstr "Objektgrundschicht Verbinderbreite" -#: src/libslic3r/PrintConfig.cpp:2869 +#: src/libslic3r/PrintConfig.cpp:3033 msgid "Pad object gap" msgstr "Grundschicht Objekt Abstand" -#: src/libslic3r/PrintConfig.cpp:2797 +#: src/libslic3r/PrintConfig.cpp:2961 msgid "Pad wall height" msgstr "Grundschicht Wandhöhe" -#: src/libslic3r/PrintConfig.cpp:2844 +#: src/libslic3r/PrintConfig.cpp:3008 msgid "Pad wall slope" msgstr "Grundschicht Wandneigung" -#: src/libslic3r/PrintConfig.cpp:2787 +#: src/libslic3r/PrintConfig.cpp:2951 msgid "Pad wall thickness" msgstr "Grundschicht Wandstärke" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:171 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 msgid "Page Down" msgstr "Page Down" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:170 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 msgid "Page Up" msgstr "Page Up" -#: src/slic3r/GUI/Field.cpp:139 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:33 +msgid "Paint-on supports" +msgstr "Aufmal-Stützen" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:178 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:159 +msgid "Paints all facets inside, regardless of their orientation." +msgstr "Bemalt alle umfassten Flächen, unabhängig von ihrer Ausrichtung." + +#: src/slic3r/GUI/Field.cpp:187 msgid "parameter name" msgstr "Parametername" -#: src/slic3r/GUI/Field.cpp:243 +#: src/slic3r/GUI/Field.cpp:291 msgid "Parameter validation" msgstr "Parameterüberprüfung" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3418 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3551 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3881 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4014 msgid "Part" msgstr "Teil" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2494 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2886 msgid "Part manipulation" msgstr "Teilbearbeitung" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2483 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2875 msgid "Part Settings to modify" msgstr "Abweichende Teileigenschaften" -#: src/slic3r/GUI/GLCanvas3D.cpp:4514 +#: src/libslic3r/PrintConfig.cpp:138 +msgid "Password" +msgstr "Kennwort" + +#: src/slic3r/GUI/GLCanvas3D.cpp:4880 msgid "Paste" msgstr "Einfügen" -#: src/slic3r/GUI/MainFrame.cpp:592 +#: src/slic3r/GUI/MainFrame.cpp:1198 msgid "Paste clipboard" msgstr "Aus Zwischenablage einfügen" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:133 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:128 msgid "Paste from clipboard" msgstr "Aus Zwischenablage einfügen" -#: src/slic3r/GUI/Plater.cpp:5606 +#: src/slic3r/GUI/Plater.cpp:5803 msgid "Paste From Clipboard" msgstr "Aus Zwischenablage einfügen" -#: src/libslic3r/PrintConfig.cpp:2002 +#: src/libslic3r/PrintConfig.cpp:2144 msgid "Pattern" msgstr "Muster" -#: src/libslic3r/PrintConfig.cpp:1891 +#: src/libslic3r/PrintConfig.cpp:2033 msgid "Pattern angle" msgstr "Muster Winkel" -#: src/libslic3r/PrintConfig.cpp:2016 +#: src/libslic3r/PrintConfig.cpp:2158 msgid "Pattern spacing" msgstr "Muster Abstand" -#: src/libslic3r/PrintConfig.cpp:2004 +#: src/libslic3r/PrintConfig.cpp:2146 msgid "Pattern used to generate support material." msgstr "Unterstützungsmaterialmuster." -#: src/slic3r/GUI/Plater.cpp:1261 +#: src/slic3r/GUI/GCodeViewer.cpp:2437 src/slic3r/GUI/GCodeViewer.cpp:2460 +#: src/slic3r/GUI/Plater.cpp:1199 msgid "Pause" msgstr "Pause" -#: src/slic3r/GUI/DoubleSlider.cpp:1009 +#: src/slic3r/GUI/DoubleSlider.cpp:1133 msgid "Pause print (\"%1%\")" msgstr "Druck pausieren (\"%1%\")" -#: src/slic3r/GUI/GLCanvas3D.cpp:934 src/slic3r/GUI/GLCanvas3D.cpp:943 -#: src/slic3r/GUI/GLCanvas3D.cpp:982 +#: src/slic3r/GUI/Tab.cpp:2209 src/libslic3r/PrintConfig.cpp:1969 +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/slic3r/GUI/Gizmos/GLGizmoCut.cpp:175 +#: 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." + +#: src/slic3r/GUI/GCodeViewer.cpp:2233 +msgid "Percentage" +msgstr "Prozent" + +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:177 msgid "Perform cut" msgstr "Schnitt ausführen" -#: src/libslic3r/PrintConfig.cpp:2927 +#: src/libslic3r/PrintConfig.cpp:3091 msgid "Performance vs accuracy of calculation. Lower values may produce unwanted artifacts." msgstr "Leistung vs. Genauigkeit der Berechnung. Niedrigere Werte können zu unerwünschten Artefakten führen." -#: src/slic3r/GUI/GUI_Preview.cpp:237 src/libslic3r/ExtrusionEntity.cpp:310 +#: src/slic3r/GUI/GUI_Preview.cpp:301 src/libslic3r/ExtrusionEntity.cpp:314 +#: src/libslic3r/ExtrusionEntity.cpp:336 msgid "Perimeter" msgstr "Außenkontur" -#: src/libslic3r/PrintConfig.cpp:1408 +#: src/libslic3r/PrintConfig.cpp:1516 msgid "Perimeter extruder" msgstr "Umfang Extruder" -#: src/slic3r/GUI/PresetHints.cpp:165 +#: src/slic3r/GUI/PresetHints.cpp:164 msgid "perimeters" msgstr "Außenkonturen" -#: src/libslic3r/PrintConfig.cpp:1399 src/libslic3r/PrintConfig.cpp:1417 -#: src/libslic3r/PrintConfig.cpp:1430 src/libslic3r/PrintConfig.cpp:1440 +#: src/libslic3r/PrintConfig.cpp:1507 src/libslic3r/PrintConfig.cpp:1525 +#: src/libslic3r/PrintConfig.cpp:1538 src/libslic3r/PrintConfig.cpp:1548 msgid "Perimeters" msgstr "Konturen" -#: src/slic3r/GUI/ConfigWizard.cpp:860 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:159 +msgid "Physical Printer" +msgstr "Physischer Drucker" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:789 +#: src/slic3r/GUI/PresetComboBoxes.cpp:948 +msgid "Physical printers" +msgstr "Physische Drucker" + +#: src/slic3r/GUI/ConfigWizard.cpp:1226 #, c-format msgid "Pick another vendor supported by %s" msgstr "Wählen Sie einen anderen Hersteller, der von %s unterstützt wird" @@ -5354,126 +6218,148 @@ msgstr "Wählen Sie einen anderen Hersteller, der von %s unterstützt wird" 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:2681 +#: src/libslic3r/PrintConfig.cpp:2822 +msgid "Pillar connection mode" +msgstr "Pfeiler-Verbindungsmodus" + +#: src/libslic3r/PrintConfig.cpp:2791 +msgid "Pillar diameter" +msgstr "Pfeiler-Durchmesser" + +#: src/libslic3r/PrintConfig.cpp:2845 msgid "Pillar widening factor" msgstr "Pfeilerverbreiterungsfaktor" -#: src/slic3r/GUI/ConfigManipulation.cpp:330 +#: src/slic3r/GUI/ConfigManipulation.cpp:335 msgid "Pinhead diameter should be smaller than the pillar diameter." msgstr "Der Nadelkopfdurchmesser sollte kleiner sein als der Säulendurchmesser." -#: src/slic3r/GUI/DoubleSlider.cpp:79 +#: src/libslic3r/PrintConfig.cpp:2763 +msgid "Pinhead front diameter" +msgstr "Nadelkopf vorderer Durchmesser" + +#: src/libslic3r/PrintConfig.cpp:2781 +msgid "Pinhead width" +msgstr "Nadelkopf Breite" + +#: src/slic3r/GUI/DoubleSlider.cpp:110 msgid "Place bearings in slots and resume printing" msgstr "Lager in Nuten einsetzen und Druck wieder aufnehmen" -#: src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp:45 +#: src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp:41 msgid "Place on face" msgstr "Auf Fläche legen" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:192 src/slic3r/GUI/MainFrame.cpp:204 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:190 src/slic3r/GUI/MainFrame.cpp:340 +#: src/slic3r/GUI/MainFrame.cpp:352 msgid "Plater" msgstr "Druckplatte" -#: src/slic3r/GUI/GUI_App.cpp:1085 +#: src/slic3r/GUI/GUI_App.cpp:1877 msgid "Please check and fix your object list." msgstr "Bitte überprüfen und korrigieren Sie Ihre Objektliste." -#: src/slic3r/GUI/Plater.cpp:2312 src/slic3r/GUI/Tab.cpp:2959 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:209 src/slic3r/GUI/Plater.cpp:2255 +#: src/slic3r/GUI/Tab.cpp:3188 msgid "Please check your object list before preset changing." msgstr "Bitte überprüfen Sie Ihre Objektliste, bevor Sie die Voreinstellungen ändern." -#: src/slic3r/GUI/Plater.cpp:3286 +#: src/slic3r/GUI/Plater.cpp:3089 msgid "Please select the file to reload" msgstr "Bitte wählen Sie die neu zu ladende Datei aus" -#: src/slic3r/GUI/AboutDialog.cpp:39 src/slic3r/GUI/AboutDialog.cpp:291 +#: src/slic3r/GUI/AboutDialog.cpp:43 src/slic3r/GUI/AboutDialog.cpp:48 +#: src/slic3r/GUI/AboutDialog.cpp:317 msgid "Portions copyright" msgstr "Teile des Urheberrechts" -#: src/libslic3r/PrintConfig.cpp:2400 +#: src/libslic3r/PrintConfig.cpp:2543 msgid "Portrait" msgstr "Hochformat" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:215 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:457 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:223 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:505 msgid "Position" msgstr "Position" -#: src/slic3r/GUI/Tab.cpp:2367 +#: src/slic3r/GUI/Tab.cpp:2536 msgid "Position (for multi-extruder printers)" msgstr "Position (für Multi-Extruder-Drucker)" -#: src/libslic3r/PrintConfig.cpp:1623 +#: src/libslic3r/PrintConfig.cpp:1731 msgid "Position of perimeters starting points." msgstr "Position des Startpunktes des Umfangs." -#: src/libslic3r/PrintConfig.cpp:2224 +#: src/libslic3r/PrintConfig.cpp:2367 msgid "Position X" msgstr "X-Position" -#: src/libslic3r/PrintConfig.cpp:2231 +#: src/libslic3r/PrintConfig.cpp:2374 msgid "Position Y" msgstr "Y-Position" -#: src/slic3r/GUI/Tab.cpp:1245 src/libslic3r/PrintConfig.cpp:1453 +#: src/slic3r/GUI/Tab.cpp:1575 src/libslic3r/PrintConfig.cpp:1561 msgid "Post-processing scripts" msgstr "Nachbearbeitungs Script" -#: src/slic3r/GUI/MainFrame.cpp:629 +#: src/slic3r/GUI/MainFrame.cpp:1237 msgid "Pre&view" msgstr "&Vorschau" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:149 src/slic3r/GUI/Preferences.cpp:10 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:143 src/slic3r/GUI/Preferences.cpp:12 msgid "Preferences" msgstr "Einstellungen" -#: src/libslic3r/PrintConfig.cpp:1641 +#: src/libslic3r/PrintConfig.cpp:1749 msgid "Preferred direction of the seam" msgstr "Bevorzugte Richtung für die Naht" -#: src/libslic3r/PrintConfig.cpp:1652 +#: src/libslic3r/PrintConfig.cpp:1760 msgid "Preferred direction of the seam - jitter" msgstr "Bevorzugte Zitterrichtung für die Naht" -#: src/libslic3r/PrintObject.cpp:255 +#: src/libslic3r/PrintObject.cpp:261 msgid "Preparing infill" msgstr "Infill wird vorbereitet" -#: src/slic3r/GUI/Tab.cpp:2920 -#, c-format -msgid "Preset (%s)" -msgstr "Voreinstellung (%s)" +#: src/slic3r/GUI/GUI_App.cpp:855 +msgid "Preparing settings tabs" +msgstr "Vorbereiten der Einstellungs-Registerkarten" -#: src/slic3r/GUI/Tab.cpp:3082 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1009 +msgid "Preset \"%1%\" has the following unsaved changes:" +msgstr "Die \"%1%\" Voreinstellung hat die folgenden ungespeicherten Änderungen:" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1014 +msgid "Preset \"%1%\" is not compatible with the new print profile and it has the following unsaved changes:" +msgstr "Die \"%1%\" Voreinstellung ist mit dem neuen Druckprofil nicht kompatibel und weist die folgenden ungespeicherten Änderungen auf:" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1013 +msgid "Preset \"%1%\" is not compatible with the new printer profile and it has the following unsaved changes:" +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:148 msgid "Preset with name \"%1%\" already exists." msgstr "Eine Voreinstellung mit dem Namen \"%1%\" existiert bereits." -#: src/slic3r/GUI/Tab.cpp:3029 +#: src/slic3r/GUI/SavePresetDialog.cpp:219 msgctxt "PresetName" msgid "Copy" msgstr "Kopieren" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:163 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:157 msgid "Press to activate deselection rectangle" msgstr "Drücken um das Abwahlrechteck zu aktivieren" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:197 -msgid "Press to activate one direction scaling in Gizmo scale" -msgstr "Drücken um Eine-Richtungs-Skalierung im Skalierungsgizmo zu aktivieren" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:162 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:156 msgid "Press to activate selection rectangle" msgstr "Drücken um das Auswahlrechteck zu aktivieren" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:198 -msgid "" -"Press to scale (in Gizmo scale) or rotate (in Gizmo rotate)\n" -"selected objects around their own center" -msgstr "" -"Zum Skalieren drücken (in Gizmo-Skalierung) oder drehen (in Gizmo-Rotation)\n" -"ausgewählter Objekte um ihr eigenes Zentrum herum" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:161 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:155 msgid "" "Press to select multiple objects\n" "or move multiple objects with mouse" @@ -5481,164 +6367,187 @@ msgstr "" "Drücken zum Auswählen des mehrteiligen Objekts \n" "oder Bewegen des mehrteiligen Objekts mit der Maus" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:195 -#, no-c-format +#: src/slic3r/GUI/KBShortcutsDialog.cpp:221 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:222 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:231 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:232 msgid "" -"Press to snap by 5% in Gizmo scale\n" -"or to snap by 1mm in Gizmo move" -msgstr "" -"Drücken um mit 5% bei der Gizmo Skalierung zu rasten\n" -"oder mit 1 mm bei der Gizmo Bewegung" +"Press to speed up 5 times while moving thumb\n" +"with arrow keys or mouse wheel" +msgstr "Drücken, um 5 Mal schneller zu werden, während der Regler mit Pfeiltasten oder Mausrad bewegt wird" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:211 src/slic3r/GUI/Plater.cpp:4105 -#: src/slic3r/GUI/Tab.cpp:2390 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:212 src/slic3r/GUI/Plater.cpp:4052 +#: src/slic3r/GUI/Tab.cpp:2559 msgid "Preview" msgstr "Vorschau" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:42 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:41 msgid "Preview hollowed and drilled model" msgstr "Vorschau des ausgehöhlten und aufgebohrten Modells" -#: src/slic3r/GUI/MainFrame.cpp:790 +#: src/slic3r/GUI/MainFrame.cpp:1491 msgid "Previously sliced file (" msgstr "Vorher geslicete Datei (" -#: src/libslic3r/PrintConfig.cpp:1851 +#: src/libslic3r/PrintConfig.cpp:1993 msgid "Prime all printing extruders" msgstr "Alle Druckextruder vorfüllen" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:51 src/slic3r/GUI/Preset.cpp:1521 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:51 src/libslic3r/Preset.cpp:1300 msgid "print" msgstr "Druck" -#: src/slic3r/GUI/MainFrame.cpp:648 +#: src/slic3r/GUI/GCodeViewer.cpp:2436 src/slic3r/GUI/GCodeViewer.cpp:2451 +msgid "Print" +msgstr "Druck" + +#: src/slic3r/GUI/MainFrame.cpp:1258 msgid "Print &Host Upload Queue" msgstr "Druck&host Warteschlange" -#: src/libslic3r/PrintConfig.cpp:471 +#: src/libslic3r/PrintConfig.cpp:507 msgid "Print contour perimeters from the outermost one to the innermost one instead of the default inverse order." msgstr "Drucken Sie Konturumfänge von der äußersten zur innersten Kontur anstatt der standardmäßigen umgekehrten Reihenfolge." -#: src/slic3r/GUI/ConfigWizard.cpp:952 +#: src/slic3r/GUI/ConfigWizard.cpp:1318 msgid "Print Diameters" msgstr "Druckdurchmesser" -#: src/slic3r/GUI/Tab.cpp:1944 src/slic3r/GUI/Tab.cpp:2123 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:209 src/slic3r/GUI/Tab.cpp:2024 msgid "Print Host upload" msgstr "Hochladen zum Druckhost" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:142 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:138 #: src/slic3r/GUI/PrintHostDialogs.cpp:136 msgid "Print host upload queue" msgstr "Druckhost Warteschlange" -#: src/slic3r/GUI/DoubleSlider.cpp:970 +#: src/slic3r/GUI/DoubleSlider.cpp:1093 msgid "Print mode" msgstr "Druckmodus" -#: src/slic3r/GUI/Tab.hpp:328 src/slic3r/GUI/Tab.hpp:431 +#: src/slic3r/GUI/GCodeViewer.cpp:2579 src/slic3r/GUI/GUI_Preview.cpp:1476 +msgid "Print pauses" +msgstr "Druckpausen" + +#: src/slic3r/GUI/Tab.hpp:378 src/slic3r/GUI/Tab.hpp:502 msgid "Print Settings" msgstr "Druckeinstellungen" -#: src/slic3r/GUI/Plater.cpp:815 +#: src/slic3r/GUI/Plater.cpp:690 msgid "Print settings" msgstr "Druckeinstellungen" -#: src/slic3r/GUI/Tab.cpp:1478 +#: src/slic3r/GUI/GLCanvas3D.cpp:4303 src/slic3r/GUI/GLCanvas3D.cpp:4939 +msgid "Print Settings Tab" +msgstr "Druckeinstellungsreiter" + +#: src/slic3r/GUI/Tab.cpp:1824 msgid "Print speed override" msgstr "Korrektur der Druckgeschwindigkeit" -#: src/libslic3r/GCode.cpp:638 +#: src/libslic3r/GCode.cpp:623 msgid "Print z" msgstr "Druck z" -#: src/slic3r/GUI/MainFrame.cpp:621 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Print&er Settings Tab" msgstr "Druck&ereinstellungen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1621 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1750 msgid "Printable" msgstr "Druckbar" -#: src/slic3r/GUI/Plater.cpp:819 +#: src/slic3r/GUI/Plater.cpp:694 msgid "Printer" msgstr "Drucker" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:53 src/slic3r/GUI/Preset.cpp:1525 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:53 src/libslic3r/Preset.cpp:1304 msgid "printer" msgstr "Drucker" -#: src/libslic3r/PrintConfig.cpp:2439 src/libslic3r/PrintConfig.cpp:2440 +#: src/libslic3r/PrintConfig.cpp:2582 src/libslic3r/PrintConfig.cpp:2583 msgid "Printer absolute correction" msgstr "Drucker absolute Korrektur" -#: src/libslic3r/PrintConfig.cpp:2456 src/libslic3r/PrintConfig.cpp:2457 +#: src/libslic3r/PrintConfig.cpp:2599 src/libslic3r/PrintConfig.cpp:2600 msgid "Printer gamma correction" msgstr "Drucker Gammakorrektur" -#: src/slic3r/GUI/Tab.cpp:976 +#: src/slic3r/GUI/Tab.cpp:1294 msgid "printer model" msgstr "Druckermodell" -#: src/libslic3r/PrintConfig.cpp:1472 +#: src/libslic3r/PrintConfig.cpp:1580 msgid "Printer notes" msgstr "Drucker Anmerkungen" -#: src/libslic3r/PrintConfig.cpp:2431 src/libslic3r/PrintConfig.cpp:2432 -#: src/libslic3r/PrintConfig.cpp:2433 +#: src/libslic3r/PrintConfig.cpp:144 +msgid "Printer preset name" +msgstr "Name der Druckervoreinstellung" + +#: src/libslic3r/PrintConfig.cpp:2574 src/libslic3r/PrintConfig.cpp:2575 +#: src/libslic3r/PrintConfig.cpp:2576 msgid "Printer scaling correction" msgstr "Drucker skalierte Korrektur" -#: src/slic3r/GUI/Tab.hpp:391 +#: src/slic3r/GUI/Tab.hpp:453 msgid "Printer Settings" msgstr "Druckereinstellungen" +#: src/slic3r/GUI/GLCanvas3D.cpp:4305 src/slic3r/GUI/GLCanvas3D.cpp:4941 +msgid "Printer Settings Tab" +msgstr "Druckereinstellungsreiter" + #: src/libslic3r/PrintConfig.cpp:43 src/libslic3r/PrintConfig.cpp:44 msgid "Printer technology" msgstr "Druckertechnologie" -#: src/libslic3r/PrintConfig.cpp:1466 +#: src/libslic3r/PrintConfig.cpp:1574 msgid "Printer type" msgstr "Druckertyp" -#: src/libslic3r/PrintConfig.cpp:1487 +#: src/libslic3r/PrintConfig.cpp:1595 msgid "Printer variant" msgstr "Druckervariante" -#: src/libslic3r/PrintConfig.cpp:1481 +#: src/libslic3r/PrintConfig.cpp:1589 msgid "Printer vendor" msgstr "Druckerhersteller" -#: src/libslic3r/Print.cpp:1388 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:476 +msgid "Printer with name \"%1%\" already exists." +msgstr "Drucker mit dem Namen \"%1%\" existiert bereits." + +#: src/slic3r/GUI/ConfigWizard.cpp:587 +msgid "Printer:" +msgstr "Drucker:" + +#: src/libslic3r/Print.cpp:1414 msgid "Printing with multiple extruders of differing nozzle diameters. If support is to be printed with the current extruder (support_material_extruder == 0 or support_material_interface_extruder == 0), all nozzles have to be of the same diameter." msgstr "Der Druck erfolgt mit mehreren Extrudern mit unterschiedlichen Düsendurchmessern. Falls Stützen mit dem aktuellen Extruder gedruckt werden sollen (support_material_extruder == 0 oder support_material_interface_extruder == 0), müssen alle Druckdüsen den gleichen Durchmesser aufweisen." #. TRN "Processing input_file_basename" -#: src/slic3r/GUI/MainFrame.cpp:849 +#: src/slic3r/GUI/MainFrame.cpp:1550 #, c-format msgid "Processing %s" msgstr "Berechne %s" -#: src/slic3r/GUI/Plater.cpp:2283 -#, c-format -msgid "Processing input file %s" -msgstr "Eingabe Datei %s wird verarbeitet" - -#: src/libslic3r/PrintObject.cpp:108 +#: src/libslic3r/PrintObject.cpp:114 msgid "Processing triangulated mesh" msgstr "Verarbeitung der dreieckigen Netze" -#: src/slic3r/GUI/Tab.cpp:1259 src/slic3r/GUI/Tab.cpp:1549 -#: src/slic3r/GUI/Tab.cpp:2020 src/slic3r/GUI/Tab.cpp:2136 -#: src/slic3r/GUI/Tab.cpp:3544 src/slic3r/GUI/Tab.cpp:3672 +#: src/slic3r/GUI/Tab.cpp:1589 src/slic3r/GUI/Tab.cpp:1896 +#: src/slic3r/GUI/Tab.cpp:2229 src/slic3r/GUI/Tab.cpp:2305 +#: src/slic3r/GUI/Tab.cpp:3960 src/slic3r/GUI/Tab.cpp:4091 msgid "Profile dependencies" msgstr "Profil Abhängigkeiten" -#: src/slic3r/GUI/ConfigWizard.cpp:566 +#: src/slic3r/GUI/ConfigWizard.cpp:590 msgid "Profile:" msgstr "Profil:" -#: src/slic3r/GUI/PrintHostDialogs.cpp:150 +#: src/slic3r/GUI/PrintHostDialogs.cpp:148 msgid "Progress" msgstr "Fortschritt" @@ -5646,23 +6555,35 @@ msgstr "Fortschritt" msgid "Progress:" msgstr "Fortschritt:" -#: src/slic3r/GUI/MainFrame.cpp:684 +#: src/slic3r/GUI/MainFrame.cpp:909 src/slic3r/GUI/MainFrame.cpp:1308 msgid "Prusa 3D &Drivers" msgstr "Prusa 3&D Treiber" -#: src/slic3r/GUI/ConfigWizard.cpp:1995 +#: src/slic3r/GUI/ConfigWizard.cpp:2506 msgid "Prusa FFF Technology Printers" msgstr "Prusa FFF Technologie Drucker" -#: src/slic3r/GUI/ConfigWizard.cpp:1998 +#: src/slic3r/GUI/ConfigWizard.cpp:2509 msgid "Prusa MSLA Technology Printers" msgstr "Prusa MSLA Technologie Drucker" -#: src/slic3r/GUI/AboutDialog.cpp:260 +#: src/slic3r/Utils/Http.cpp:78 +msgid "PrusaSlicer detected system SSL certificate store in: %1%" +msgstr "PrusaSlicer erkannte System-SSL-Zertifikatspeicher in: %1%" + +#: src/slic3r/GUI/GUI_Init.cpp:85 src/slic3r/GUI/GUI_Init.cpp:88 +msgid "PrusaSlicer GUI initialization failed" +msgstr "PrusaSlicer GUI-Initialisierung fehlgeschlagen" + +#: 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." -#: src/slic3r/GUI/GLCanvas3DManager.cpp:284 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:525 +msgid "PrusaSlicer is closing: Unsaved Changes" +msgstr "PrusaSlicer wird geschlossen: Nicht gespeicherte Änderungen" + +#: src/slic3r/GUI/OpenGLManager.cpp:259 #, c-format msgid "" "PrusaSlicer requires OpenGL 2.0 capable graphics driver to run correctly, \n" @@ -5673,7 +6594,11 @@ msgstr "PrusaSlicer benötigt einen OpenGL 2.0-fähigen Grafiktreiber, um korrek msgid "PrusaSlicer version" msgstr "PrusaSlicer Version" -#: src/slic3r/GUI/ConfigWizard.cpp:815 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:662 +msgid "PrusaSlicer will remember your action." +msgstr "PrusaSlicer wird sich an Ihre Aktion erinnern." + +#: src/slic3r/GUI/ConfigWizard.cpp:1174 msgid "" "PrusaSlicer's user interfaces comes in three variants:\n" "Simple, Advanced, and Expert.\n" @@ -5683,64 +6608,80 @@ msgstr "" "Einfach, Fortgeschritten und Experte.\n" "Der einfache Modus zeigt nur die am häufigsten verwendeten Einstellungen, die für den regulären 3D-Druck relevant sind. Die beiden anderen bieten eine immer anspruchsvollere Feinabstimmung, sie sind für fortgeschrittene bzw. erfahrene Anwender geeignet." -#: src/libslic3r/PrintConfig.cpp:2254 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:668 +msgid "PrusaSlicer: Don't ask me again" +msgstr "PrusaSlicer: Fragen Sie mich nicht noch einmal" + +#: src/libslic3r/PrintConfig.cpp:2397 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 "Das Reinigen nach dem Werkzeugwechsel erfolgt innerhalb der Füllungen dieses Objekts. Dies reduziert die Abfallquote, kann aber aufgrund zusätzlicher Verfahrwege zu einer längeren Druckzeit führen." -#: src/slic3r/GUI/Plater.cpp:544 +#: src/slic3r/GUI/Plater.cpp:410 msgid "Purging volumes" msgstr "Reinigungsvolumen" -#: src/libslic3r/PrintConfig.cpp:2207 +#: src/libslic3r/PrintConfig.cpp:2350 msgid "Purging volumes - load/unload volumes" msgstr "Reinigungsvolumen - Lade-/Entladevolumen" -#: src/libslic3r/PrintConfig.cpp:2214 +#: src/libslic3r/PrintConfig.cpp:2357 msgid "Purging volumes - matrix" msgstr "Reinigungsvolumen - Matrix" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:44 +#: src/libslic3r/PrintConfig.cpp:1201 +msgid "Purpose of Machine Limits" +msgstr "Zweck der Maschinengrenzen" + +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:43 msgid "Quality" msgstr "Qualität" -#: src/slic3r/GUI/Tab.cpp:1080 +#: src/slic3r/GUI/Tab.cpp:1402 msgid "Quality (slower slicing)" msgstr "Qualität (langsameres Slicen)" -#: src/slic3r/GUI/GLCanvas3D.cpp:273 +#: src/slic3r/GUI/GLCanvas3D.cpp:260 msgid "Quality / Speed" msgstr "Qualität / Geschwindigkeit" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1182 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1530 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1536 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1849 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:61 +msgid "Quick" +msgstr "Schnell" + +#: 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 #, c-format msgid "Quick Add Settings (%s)" msgstr "Schnelles Einstellen (%s)" -#: src/slic3r/GUI/MainFrame.cpp:512 +#: src/slic3r/GUI/MainFrame.cpp:1113 msgid "Quick Slice" msgstr "Quick Slice" -#: src/slic3r/GUI/MainFrame.cpp:518 +#: src/slic3r/GUI/MainFrame.cpp:1119 msgid "Quick Slice and Save As" msgstr "Quick Slice und Speichern unter" -#: src/slic3r/GUI/MainFrame.cpp:540 +#: src/slic3r/GUI/MainFrame.cpp:1144 src/slic3r/GUI/MainFrame.cpp:1402 #, c-format msgid "Quit %s" msgstr "%s verlassen" -#: src/slic3r/GUI/GLCanvas3D.cpp:294 src/libslic3r/PrintConfig.cpp:511 +#: src/slic3r/GUI/GUI_App.cpp:396 +msgid "Quit, I will move my data now" +msgstr "Beenden, ich werde meine Daten jetzt verschieben" + +#: src/slic3r/GUI/GLCanvas3D.cpp:280 src/libslic3r/PrintConfig.cpp:547 msgid "Radius" msgstr "Radius" -#: src/slic3r/GUI/Tab.cpp:1127 +#: src/slic3r/GUI/Tab.cpp:1456 msgid "Raft" msgstr "Raft" -#: src/libslic3r/PrintConfig.cpp:1501 +#: src/libslic3r/PrintConfig.cpp:1609 msgid "Raft layers" msgstr "Raftschichten" @@ -5766,27 +6707,27 @@ msgstr "Abstand der Rammlinien" msgid "Ramming line width" msgstr "Breite der Rammlinie" -#: src/libslic3r/PrintConfig.cpp:694 +#: src/libslic3r/PrintConfig.cpp:730 msgid "Ramming parameters" msgstr "Rammparameter" -#: src/slic3r/GUI/Tab.cpp:1505 +#: src/slic3r/GUI/Tab.cpp:1850 msgid "Ramming settings" msgstr "Einstellungen für das Rammen" -#: src/libslic3r/PrintConfig.cpp:1629 +#: src/libslic3r/PrintConfig.cpp:1737 msgid "Random" msgstr "Zufällig" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:94 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:96 msgid "Range" msgstr "Bereich" -#: src/libslic3r/SLAPrintSteps.cpp:65 +#: src/libslic3r/SLAPrintSteps.cpp:66 msgid "Rasterizing layers" msgstr "Schichten werden gerastert" -#: src/slic3r/GUI/MainFrame.cpp:596 +#: src/slic3r/GUI/MainFrame.cpp:1202 msgid "Re&load from disk" msgstr "Erneutes &Laden von der Festplatte" @@ -5798,210 +6739,243 @@ msgstr "Neu konfigurieren" msgid "Ready" msgstr "Fertig" -#: src/slic3r/GUI/Plater.cpp:3115 +#: src/slic3r/GUI/Plater.cpp:2915 msgid "Ready to slice" msgstr "Bereit zum Slicen" -#: src/slic3r/GUI/MainFrame.cpp:669 src/libslic3r/PrintConfig.cpp:1632 +#: src/slic3r/GUI/MainFrame.cpp:966 src/slic3r/GUI/MainFrame.cpp:1286 +#: src/libslic3r/PrintConfig.cpp:1740 msgid "Rear" msgstr "Hinten" -#: src/slic3r/GUI/MainFrame.cpp:669 +#: src/slic3r/GUI/MainFrame.cpp:966 src/slic3r/GUI/MainFrame.cpp:1286 msgid "Rear View" msgstr "Ansicht von Hinten" -#: src/slic3r/GUI/MainFrame.cpp:413 +#: src/slic3r/GUI/MainFrame.cpp:994 msgid "Recent projects" msgstr "L&etzte Projekte" -#: src/slic3r/GUI/PresetHints.cpp:263 +#: src/slic3r/GUI/PresetHints.cpp:262 #, c-format msgid "Recommended object thin wall thickness for layer height %.2f and" msgstr "Empfohlene Stärke der dünnen Wände des Objekts für die Schichthöhe %.2f und" -#: src/slic3r/GUI/PresetHints.cpp:274 +#: src/slic3r/GUI/PresetHints.cpp:273 msgid "Recommended object thin wall thickness: Not available due to excessively small extrusion width." msgstr "Empfohlene Stärke der dünnen Wände des Objekts: Nicht verfügbar wegen extrem geringer Extrusionsbreite." -#: src/slic3r/GUI/PresetHints.cpp:247 +#: src/slic3r/GUI/PresetHints.cpp:246 msgid "Recommended object thin wall thickness: Not available due to invalid layer height." msgstr "Empfohlene Stärke der dünnen Wände des Objekts: Nicht verfügbar wegen unzulässiger Schichthöhe." -#: src/slic3r/GUI/GUI_App.cpp:450 src/slic3r/GUI/GUI_App.cpp:459 +#: src/slic3r/GUI/GUI_App.cpp:1102 src/slic3r/GUI/GUI_App.cpp:1115 msgid "Recreating" msgstr "Neu Erzeugen" -#: src/slic3r/GUI/BedShapeDialog.cpp:73 +#: src/slic3r/GUI/BedShapeDialog.cpp:141 msgid "Rectangular" msgstr "Rechteckig" -#: src/libslic3r/PrintConfig.cpp:425 src/libslic3r/PrintConfig.cpp:843 -#: src/libslic3r/PrintConfig.cpp:2009 +#: src/libslic3r/PrintConfig.cpp:460 src/libslic3r/PrintConfig.cpp:881 +#: src/libslic3r/PrintConfig.cpp:2151 msgid "Rectilinear" msgstr "Geradlinig" -#: src/libslic3r/PrintConfig.cpp:2010 +#: src/libslic3r/PrintConfig.cpp:2152 msgid "Rectilinear grid" msgstr "Rechtwinkliges Gitter" -#: src/slic3r/GUI/GLCanvas3D.cpp:4657 src/slic3r/GUI/KBShortcutsDialog.cpp:131 -#: src/slic3r/GUI/MainFrame.cpp:584 +#: src/slic3r/GUI/GLCanvas3D.cpp:5067 src/slic3r/GUI/KBShortcutsDialog.cpp:126 +#: src/slic3r/GUI/MainFrame.cpp:1190 msgid "Redo" msgstr "Redo" -#: src/slic3r/GUI/GLCanvas3D.cpp:4065 +#: src/slic3r/GUI/GLCanvas3D.cpp:4382 #, c-format msgid "Redo %1$d Action" msgid_plural "Redo %1$d Actions" msgstr[0] "Redo %1$d Aktion" msgstr[1] "Redo %1$d Aktionen" -#: src/slic3r/GUI/GLCanvas3D.cpp:4047 +#: src/slic3r/GUI/GLCanvas3D.cpp:4361 msgid "Redo History" msgstr "Redo Verlauf" -#: src/slic3r/GUI/Tab.cpp:1098 +#: src/slic3r/GUI/Tab.cpp:1426 msgid "Reducing printing time" msgstr "Druckzeit wird verkürzt" -#: src/slic3r/GUI/Plater.cpp:3452 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:327 +msgid "Refresh Printers" +msgstr "Drucker aktualisieren" + +#: src/libslic3r/PrintConfig.cpp:145 +msgid "Related printer preset name" +msgstr "Zugehöriger Name der Druckervoreinstellung" + +#: src/slic3r/GUI/Plater.cpp:3257 msgid "Reload all from disk" msgstr "Alles von der Festplatte neu laden" -#: src/slic3r/GUI/ConfigWizard.cpp:798 src/slic3r/GUI/GUI_ObjectList.cpp:1664 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3956 src/slic3r/GUI/Plater.cpp:3225 -#: src/slic3r/GUI/Plater.cpp:3934 src/slic3r/GUI/Plater.cpp:3963 +#: src/slic3r/GUI/ConfigWizard.cpp:1157 src/slic3r/GUI/GUI_ObjectList.cpp:1793 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4439 src/slic3r/GUI/Plater.cpp:3028 +#: src/slic3r/GUI/Plater.cpp:3852 src/slic3r/GUI/Plater.cpp:3881 msgid "Reload from disk" msgstr "Neuladen von Festplatte" -#: src/slic3r/GUI/Plater.cpp:3339 +#: src/slic3r/GUI/Plater.cpp:3142 msgid "Reload from:" msgstr "Neuladen von:" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:134 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:129 msgid "Reload plater from disk" msgstr "Druckplatte neu von der Festplatte laden" -#: src/slic3r/GUI/MainFrame.cpp:597 +#: src/slic3r/GUI/MainFrame.cpp:1203 msgid "Reload the plater from disk" msgstr "Druckplatte neu von der Festplatte laden" -#: src/slic3r/GUI/Plater.cpp:3963 +#: src/slic3r/GUI/Plater.cpp:3881 msgid "Reload the selected object from disk" msgstr "Das ausgewählte Objekt von der Festplatte neu laden" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1664 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3956 src/slic3r/GUI/Plater.cpp:3934 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1793 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4439 src/slic3r/GUI/Plater.cpp:3852 msgid "Reload the selected volumes from disk" msgstr "Die ausgewählten Volumen von der Festplatte neu laden" -#: src/slic3r/GUI/Preferences.cpp:39 +#: src/slic3r/GUI/GCodeViewer.cpp:2442 src/slic3r/GUI/GCodeViewer.cpp:2445 +msgid "Remaining time" +msgstr "Restzeit" + +#: src/slic3r/GUI/GUI_App.cpp:720 src/slic3r/GUI/UnsavedChangesDialog.cpp:653 +msgid "Remember my choice" +msgstr "Auswahl merken" + +#: src/slic3r/GUI/Preferences.cpp:52 msgid "Remember output directory" msgstr "Ausgabeverzeichnis merken" -#: src/slic3r/GUI/Tab.cpp:3121 +#: src/slic3r/GUI/MainFrame.cpp:166 +msgid "Remember to check for updates at https://github.com/prusa3d/PrusaSlicer/releases" +msgstr "Denken Sie daran, nach Updates zu suchen unter https://github.com/prusa3d/PrusaSlicer/releases" + +#: src/slic3r/GUI/Tab.cpp:3386 msgid "remove" msgstr "Entfernen" -#: src/slic3r/GUI/BedShapeDialog.cpp:190 src/slic3r/GUI/BedShapeDialog.cpp:269 -#: src/slic3r/GUI/Tab.cpp:3124 +#: src/slic3r/GUI/BedShapeDialog.cpp:333 src/slic3r/GUI/BedShapeDialog.cpp:413 +#: src/slic3r/GUI/Tab.cpp:3423 msgid "Remove" msgstr "Entfernen" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:48 msgid "Remove all holes" msgstr "Alle Löcher entfernen" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:51 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:50 msgid "Remove all points" msgstr "Alle Punkte entfernen" -#: src/slic3r/GUI/GLCanvas3D.cpp:246 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:52 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:35 +msgid "Remove all selection" +msgstr "Gesamte Auswahl entfernen" + +#: src/slic3r/GUI/GLCanvas3D.cpp:239 msgid "Remove detail" msgstr "Detail entfernen" -#: src/slic3r/GUI/Plater.cpp:879 -msgid "Remove device" -msgstr "Gerät entfernen" - #: src/slic3r/GUI/ExtruderSequenceDialog.cpp:182 msgid "Remove extruder from sequence" msgstr "Extruder aus der Sequenz entfernen" -#: src/slic3r/GUI/GLCanvas3D.cpp:4537 src/slic3r/GUI/Plater.cpp:3942 +#: src/slic3r/GUI/GLCanvas3D.cpp:4903 src/slic3r/GUI/Plater.cpp:3860 msgid "Remove instance" msgstr "Kopie entfernen" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:160 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:154 msgid "Remove Instance of the selected object" msgstr "Entfernt Kopie des gewählten Objekts" -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:153 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:161 msgid "Remove layer range" msgstr "Schichtbereich entfernen" -#: src/slic3r/GUI/Plater.cpp:3942 +#: src/slic3r/GUI/Plater.cpp:3860 msgid "Remove one instance of the selected object" msgstr "Entferne eine Kopie des gewählten Objekts" -#: src/slic3r/GUI/GUI_ObjectSettings.cpp:95 +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:98 msgid "Remove parameter" msgstr "Parameter entfernen" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1364 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1211 msgid "Remove point" msgstr "Punkt entfernen" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1367 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1214 msgid "Remove point from selection" msgstr "Punkt von Auswahl entfernen" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:47 msgid "Remove selected holes" msgstr "Ausgewählte Löcher entfernen" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:50 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1371 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1218 msgid "Remove selected points" msgstr "Ausgewählte Punkte entfernen" -#: src/slic3r/GUI/Plater.cpp:3931 src/slic3r/GUI/Plater.cpp:3953 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:51 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:34 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:368 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:378 +msgid "Remove selection" +msgstr "Auswahl entfernen" + +#: src/slic3r/GUI/Plater.cpp:3849 src/slic3r/GUI/Plater.cpp:3871 msgid "Remove the selected object" msgstr "Ausgewähltes Objekt entfernen" -#: src/slic3r/GUI/ConfigWizard.cpp:453 +#: src/slic3r/GUI/ConfigWizard.cpp:456 msgid "Remove user profiles (a snapshot will be taken beforehand)" msgstr "Benutzerprofile entfernen (eine Momentaufnahme wird vorab erstellt)" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1636 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1765 msgid "Rename" msgstr "Umbenennen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:551 +#: src/slic3r/GUI/GUI_ObjectList.cpp:589 msgid "Rename Object" msgstr "Objekt umbenennen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:551 +#: src/slic3r/GUI/GUI_ObjectList.cpp:589 msgid "Rename Sub-object" msgstr "Subobjekt umbenennen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3803 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4266 msgid "Renaming" msgstr "Am Umbenennen" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:115 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:150 msgid "Renaming of the G-code after copying to the selected destination folder has failed. Current path is %1%.tmp. Please try exporting again." msgstr "Das Umbenennen des G-Codes nach dem Kopieren in den ausgewählten Zielordner ist fehlgeschlagen. Der aktuelle Pfad ist %1%.tmp. Bitte versuchen Sie erneut zu exportieren." -#: src/libslic3r/PrintConfig.cpp:3515 +#: src/slic3r/GUI/Preferences.cpp:255 +msgid "Render" +msgstr "Render" + +#: src/libslic3r/PrintConfig.cpp:3720 msgid "Render with a software renderer" msgstr "Rendern mit einem Software-Renderer" -#: src/libslic3r/PrintConfig.cpp:3516 +#: src/libslic3r/PrintConfig.cpp:3721 msgid "Render with a software renderer. The bundled MESA software renderer is loaded instead of the default OpenGL driver." msgstr "Rendern mit einem Software-Renderer. Der mitgelieferte MESA-Software-Renderer wird anstelle des standardmäßigen OpenGL-Treibers geladen." -#: src/slic3r/GUI/MainFrame.cpp:911 src/libslic3r/PrintConfig.cpp:3447 +#: src/slic3r/GUI/MainFrame.cpp:1612 src/libslic3r/PrintConfig.cpp:3646 msgid "Repair" msgstr "Reparieren" @@ -6025,38 +6999,38 @@ msgstr "Die reparierte 3MF Datei enhält keine Volumen" msgid "Repairing model by the Netfabb service" msgstr "Reparieren des Modells durch den Netfabb-Dienst" -#: src/slic3r/GUI/MainFrame.cpp:524 +#: src/slic3r/GUI/MainFrame.cpp:1125 msgid "Repeat last quick slice" msgstr "Letzten Quick Slice wiederholen" -#: src/slic3r/GUI/MainFrame.cpp:524 +#: src/slic3r/GUI/MainFrame.cpp:1125 msgid "Repeat Last Quick Slice" msgstr "Letzten Quick Slice wiederholen" -#: src/slic3r/GUI/Tab.cpp:3083 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:477 msgid "Replace?" msgstr "Ersetzen?" -#: src/slic3r/GUI/MainFrame.cpp:703 +#: src/slic3r/GUI/MainFrame.cpp:928 src/slic3r/GUI/MainFrame.cpp:1327 msgid "Report an I&ssue" msgstr "Ein &Problem melden" -#: src/slic3r/GUI/MainFrame.cpp:703 +#: src/slic3r/GUI/MainFrame.cpp:928 src/slic3r/GUI/MainFrame.cpp:1327 #, c-format msgid "Report an issue on %s" msgstr "Einen Problem melden über %s" -#: src/slic3r/Utils/PresetUpdater.cpp:713 +#: src/slic3r/Utils/PresetUpdater.cpp:733 #, c-format msgid "requires max. %s" msgstr "benötigt max. %s" -#: src/slic3r/Utils/PresetUpdater.cpp:710 +#: src/slic3r/Utils/PresetUpdater.cpp:730 #, c-format msgid "requires min. %s" msgstr "benötigt min. %s" -#: src/slic3r/Utils/PresetUpdater.cpp:705 +#: src/slic3r/Utils/PresetUpdater.cpp:726 #, c-format msgid "requires min. %s and max. %s" msgstr "benötigt min. %s und max. %s" @@ -6065,270 +7039,300 @@ msgstr "benötigt min. %s und max. %s" msgid "Rescan" msgstr "Rescan" -#: src/slic3r/GUI/Tab.cpp:1906 -msgid "Rescan serial ports" -msgstr "Serielle Schnittstellen nochmals abfragen" - -#: src/slic3r/GUI/GLCanvas3D.cpp:313 +#: src/slic3r/GUI/GLCanvas3D.cpp:299 msgid "Reset" msgstr "Rücksetzen" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1373 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1220 msgid "Reset clipping plane" msgstr "Beschnittebene zurücksetzen" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:51 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:59 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:43 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:50 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:26 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:58 msgid "Reset direction" msgstr "Richtung zurücksetzen" -#: src/slic3r/GUI/Plater.cpp:2723 +#: src/slic3r/GUI/Plater.cpp:2684 msgid "Reset Project" msgstr "Projekt zurücksetzen" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:363 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:372 msgid "Reset rotation" msgstr "Rotation zurücksetzen" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:385 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:394 msgid "Reset Rotation" msgstr "Rotation zurücksetzen" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:397 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:399 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:407 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:409 msgid "Reset scale" msgstr "Skalierung zurücksetzen" -#: src/slic3r/GUI/GLCanvas3D.cpp:252 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:136 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:118 +msgid "Reset selection" +msgstr "Auswahl zurücksetzen" + +#: src/slic3r/GUI/GLCanvas3D.cpp:243 msgid "Reset to base" msgstr "Zurücksetzen auf Basis" -#: src/slic3r/GUI/Tab.cpp:2394 +#: src/slic3r/GUI/Tab.cpp:2564 msgid "Reset to Filament Color" msgstr "Zurücksetzen auf Filamentfarbe" -#: src/libslic3r/PrintConfig.cpp:1511 +#: src/libslic3r/PrintConfig.cpp:1619 msgid "Resolution" msgstr "Auflösung" -#: src/libslic3r/PrintConfig.cpp:1529 +#: src/libslic3r/PrintConfig.cpp:1637 msgid "Retract amount before wipe" msgstr "Einzugslänge vor einer Reinigung" -#: src/libslic3r/PrintConfig.cpp:1537 +#: src/libslic3r/PrintConfig.cpp:1645 msgid "Retract on layer change" msgstr "Bei Schichtwechsel einziehen" -#: src/slic3r/GUI/Tab.cpp:1324 src/slic3r/GUI/Tab.cpp:1383 -#: src/slic3r/GUI/Tab.cpp:2370 +#: src/slic3r/GUI/GCodeViewer.cpp:2494 src/slic3r/GUI/Tab.cpp:1670 +#: src/slic3r/GUI/Tab.cpp:2539 msgid "Retraction" msgstr "Einzug" -#: src/libslic3r/PrintConfig.cpp:1523 +#: src/libslic3r/PrintConfig.cpp:1631 msgid "Retraction is not triggered when travel moves are shorter than this length." msgstr "Der Einzug wird nicht ausgelöst, wenn die Fahrbewegungen kürzer als diese Länge sind." -#: src/libslic3r/PrintConfig.cpp:1544 +#: src/libslic3r/PrintConfig.cpp:1652 msgid "Retraction Length" msgstr "Einzugslänge" -#: src/libslic3r/PrintConfig.cpp:1552 +#: src/libslic3r/PrintConfig.cpp:1660 msgid "Retraction Length (Toolchange)" msgstr "Einzugslänge (Werkzeugwechsel)" -#: src/libslic3r/PrintConfig.cpp:1604 src/libslic3r/PrintConfig.cpp:1605 +#: src/libslic3r/PrintConfig.cpp:1712 src/libslic3r/PrintConfig.cpp:1713 msgid "Retraction Speed" msgstr "Einzugsgeschwindigkeit" -#: src/slic3r/GUI/Tab.cpp:2386 +#: src/slic3r/GUI/Tab.cpp:2555 msgid "Retraction when tool is disabled (advanced settings for multi-extruder setups)" msgstr "Einzug, wenn das Werkzeug deaktiviert ist (weiterführende Einstellungen für Multi-Extruder-Einrichtungen)" -#: src/slic3r/GUI/GUI_Preview.cpp:254 +#: src/slic3r/GUI/GCodeViewer.cpp:2528 src/slic3r/GUI/GUI_Preview.cpp:336 +#: src/slic3r/GUI/GUI_Preview.cpp:1472 msgid "Retractions" msgstr "Einzüge" -#: src/slic3r/GUI/MainFrame.cpp:673 +#: src/slic3r/GUI/Preferences.cpp:198 +msgid "Reverse direction of zoom with mouse wheel" +msgstr "Umkehrung der Zoom-Richtung des Mausrads" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1861 src/slic3r/GUI/Plater.cpp:4886 +msgid "Revert conversion from imperial units" +msgstr "Umrechnung von imperialen Einheiten rückgängig machen" + +#: src/slic3r/GUI/MainFrame.cpp:970 src/slic3r/GUI/MainFrame.cpp:1290 msgid "Right" msgstr "Rechts" -#: src/slic3r/GUI/GUI_ObjectList.cpp:402 +#: src/slic3r/GUI/GUI_ObjectList.cpp:449 msgid "Right button click the icon to change the object printable property" msgstr "Klicken Sie mit der rechten Maustaste auf das Symbol, um die Druckbar-Eigenschaft des Objekts zu ändern" -#: src/slic3r/GUI/GUI_ObjectList.cpp:396 +#: src/slic3r/GUI/GUI_ObjectList.cpp:443 msgid "Right button click the icon to change the object settings" msgstr "Klicken Sie mit der rechten Maustaste auf das Symbol, um die Objekteinstellungen zu ändern" -#: src/slic3r/GUI/GUI_ObjectList.cpp:359 +#: src/slic3r/GUI/GUI_ObjectList.cpp:406 msgid "Right button click the icon to fix STL through Netfabb" msgstr "Klicken Sie mit der rechten Maustaste auf das Symbol, um die STL über Netfabb zu reparieren" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1364 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1211 msgid "Right click" msgstr "Rechter Mausklick" -#: src/slic3r/GUI/GLCanvas3D.cpp:243 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:31 +msgid "Right mouse button" +msgstr "Rechte Maustaste" + +#: src/slic3r/GUI/GLCanvas3D.cpp:237 msgid "Right mouse button:" msgstr "Rechte Maustaste:" -#: src/slic3r/GUI/MainFrame.cpp:673 +#: src/slic3r/GUI/MainFrame.cpp:970 src/slic3r/GUI/MainFrame.cpp:1290 msgid "Right View" msgstr "Ansicht von rechts" -#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:449 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:480 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:499 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:517 -#: src/libslic3r/PrintConfig.cpp:3451 +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:513 +#: 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:3650 msgid "Rotate" msgstr "Drehen" -#: src/libslic3r/PrintConfig.cpp:3456 +#: src/libslic3r/PrintConfig.cpp:3655 msgid "Rotate around X" msgstr "Rotiere um X" -#: src/libslic3r/PrintConfig.cpp:3461 +#: src/libslic3r/PrintConfig.cpp:3660 msgid "Rotate around Y" msgstr "Rotiere um Y" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:170 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:172 msgid "Rotate lower part upwards" msgstr "Unteren Teil umdrehen" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:170 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 msgid "Rotate selection 45 degrees CCW" msgstr "Auswahl um 45 Grad drehen gegen UZS" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:171 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 msgid "Rotate selection 45 degrees CW" msgstr "Auswahl um 45 Grad drehen im UZS" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:216 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:458 -#: src/slic3r/GUI/Mouse3DController.cpp:304 -#: src/slic3r/GUI/Mouse3DController.cpp:321 +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:210 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:224 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:506 +#: src/slic3r/GUI/Mouse3DController.cpp:288 +#: src/slic3r/GUI/Mouse3DController.cpp:309 msgid "Rotation" msgstr "Rotation" -#: src/libslic3r/PrintConfig.cpp:3457 +#: src/libslic3r/PrintConfig.cpp:3656 msgid "Rotation angle around the X axis in degrees." msgstr "Rotationswinkel um die X-Achse in Grad." -#: src/libslic3r/PrintConfig.cpp:3462 +#: src/libslic3r/PrintConfig.cpp:3661 msgid "Rotation angle around the Y axis in degrees." msgstr "Rotationswinkel um die Y-Achse in Grad." -#: src/libslic3r/PrintConfig.cpp:3452 +#: src/libslic3r/PrintConfig.cpp:3651 msgid "Rotation angle around the Z axis in degrees." msgstr "Rotationswinkel um die Z-Achse in Grad." -#: src/slic3r/GUI/GUI_App.cpp:797 +#: src/slic3r/GUI/GUI_App.cpp:1474 #, c-format msgid "Run %s" msgstr "%s ausführen" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:128 -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:478 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:163 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:520 msgid "Running post-processing scripts" msgstr "Post-Prozess Scripts werden ausgeführt" #: src/slic3r/GUI/RammingChart.cpp:76 src/slic3r/GUI/WipeTowerDialog.cpp:83 -#: src/libslic3r/PrintConfig.cpp:644 src/libslic3r/PrintConfig.cpp:688 -#: src/libslic3r/PrintConfig.cpp:703 src/libslic3r/PrintConfig.cpp:2408 -#: src/libslic3r/PrintConfig.cpp:2417 src/libslic3r/PrintConfig.cpp:2527 -#: src/libslic3r/PrintConfig.cpp:2535 src/libslic3r/PrintConfig.cpp:2543 -#: src/libslic3r/PrintConfig.cpp:2550 src/libslic3r/PrintConfig.cpp:2558 -#: src/libslic3r/PrintConfig.cpp:2566 +#: src/libslic3r/PrintConfig.cpp:680 src/libslic3r/PrintConfig.cpp:724 +#: src/libslic3r/PrintConfig.cpp:739 src/libslic3r/PrintConfig.cpp:2551 +#: src/libslic3r/PrintConfig.cpp:2560 src/libslic3r/PrintConfig.cpp:2670 +#: src/libslic3r/PrintConfig.cpp:2678 src/libslic3r/PrintConfig.cpp:2686 +#: src/libslic3r/PrintConfig.cpp:2693 src/libslic3r/PrintConfig.cpp:2701 +#: src/libslic3r/PrintConfig.cpp:2709 msgid "s" msgstr "s" -#: src/slic3r/GUI/MainFrame.cpp:481 src/slic3r/GUI/MainFrame.cpp:750 +#: src/slic3r/GUI/MainFrame.cpp:1072 src/slic3r/GUI/MainFrame.cpp:1449 msgid "S&end G-code" msgstr "S&ende G-code" -#: src/slic3r/GUI/MainFrame.cpp:750 +#: src/slic3r/GUI/MainFrame.cpp:1449 msgid "S&end to print" msgstr "Zum Drucken s&enden" -#. TRN Preset -#: src/slic3r/GUI/Tab.cpp:3417 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:642 +msgid "Save" +msgstr "Speichern" + +#: src/slic3r/GUI/SavePresetDialog.cpp:72 #, c-format msgid "Save %s as:" msgstr "Speichere %s als:" -#: src/slic3r/GUI/MainFrame.cpp:826 +#: src/slic3r/GUI/MainFrame.cpp:1527 #, c-format msgid "Save %s file as:" msgstr "Speichere %s Datei als:" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1046 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:912 msgid "Save changes?" msgstr "Änderungen speichern?" -#: src/libslic3r/PrintConfig.cpp:3386 +#: src/libslic3r/PrintConfig.cpp:3585 msgid "Save config file" msgstr "Speichere Konfigurationsdatei" -#: src/slic3r/GUI/MainFrame.cpp:925 +#: src/slic3r/GUI/MainFrame.cpp:1626 msgid "Save configuration as:" msgstr "Konfiguration speichern unter:" -#: src/libslic3r/PrintConfig.cpp:3387 +#: src/libslic3r/PrintConfig.cpp:3586 msgid "Save configuration to the specified file." msgstr "Sichert die Konfiguration in der angegebenen Datei." #. TRN "Save current Settings" -#: src/slic3r/GUI/Tab.cpp:133 +#: src/slic3r/GUI/Tab.cpp:203 #, c-format msgid "Save current %s" msgstr "Speichere aktuelle %s" -#: src/slic3r/GUI/MainFrame.cpp:446 +#: src/slic3r/GUI/MainFrame.cpp:1028 msgid "Save current project file" msgstr "Speichere aktuelle Projektdatei" -#: src/slic3r/GUI/MainFrame.cpp:450 src/slic3r/GUI/MainFrame.cpp:452 +#: src/slic3r/GUI/MainFrame.cpp:1032 src/slic3r/GUI/MainFrame.cpp:1034 msgid "Save current project file as" msgstr "Speichere aktuelle Projektdatei als" -#: src/slic3r/GUI/Plater.cpp:2604 +#: src/slic3r/GUI/Plater.cpp:2566 msgid "Save file as:" msgstr "Speichere Datei als:" -#: src/slic3r/GUI/Plater.cpp:4839 +#: src/slic3r/GUI/Plater.cpp:4975 msgid "Save G-code file as:" msgstr "Speichere G-Code Datei als:" -#: src/slic3r/GUI/MainFrame.cpp:899 +#: src/slic3r/GUI/MainFrame.cpp:1600 msgid "Save OBJ file (less prone to coordinate errors than STL) as:" msgstr "Speichern als OBJ-Datei (weniger anfällig für Koordinatenfehler als STL):" -#: src/slic3r/GUI/Tab.hpp:443 +#: src/slic3r/GUI/SavePresetDialog.cpp:190 +#: src/slic3r/GUI/SavePresetDialog.cpp:196 msgid "Save preset" msgstr "Sichern der Voreinstellung" -#: src/slic3r/GUI/MainFrame.cpp:980 +#: src/slic3r/GUI/MainFrame.cpp:1681 msgid "Save presets bundle as:" msgstr "Sichern der Voreinstellungssammlung unter:" -#: src/slic3r/GUI/MainFrame.cpp:450 src/slic3r/GUI/MainFrame.cpp:452 +#: src/slic3r/GUI/MainFrame.cpp:1032 src/slic3r/GUI/MainFrame.cpp:1034 msgid "Save Project &as" msgstr "Projekt sichern &als" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:114 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:107 msgid "Save project (3mf)" msgstr "Speichere Projekt (3mf)" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:115 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:108 msgid "Save project as (3mf)" msgstr "Speichere Projekt als (3mf)" -#: src/slic3r/GUI/Plater.cpp:4839 +#: src/slic3r/GUI/Plater.cpp:4975 msgid "Save SL1 file as:" msgstr "Speichere SL1 Datei als:" -#: src/slic3r/GUI/MainFrame.cpp:838 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:744 +msgid "Save the selected options to preset \"%1%\"." +msgstr "Speichern der ausgewählten Optionen unter der Voreinstellung \"%1%\"." + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:740 +msgid "Save the selected options." +msgstr "Speichern der ausgewählten Optionen." + +#: src/slic3r/GUI/MainFrame.cpp:1539 msgid "Save zip file as:" msgstr "Speichere Zip Datei als:" @@ -6338,157 +7342,184 @@ msgstr "Speichere Zip Datei als:" msgid "Saving mesh into the 3MF container failed." msgstr "Sichern des Netzes in einen 3MF-Container fehlgeschlagen." -#: src/slic3r/GUI/Gizmos/GLGizmoScale.cpp:47 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:230 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:500 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:518 -#: src/libslic3r/PrintConfig.cpp:3466 +#: src/slic3r/GUI/Gizmos/GLGizmoScale.cpp:78 +#: 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:3665 msgid "Scale" msgstr "Skalieren" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:459 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:507 msgid "Scale factors" msgstr "Skalierungsfaktoren" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:196 -msgid "" -"Scale selection to fit print volume\n" -"in Gizmo scale" -msgstr "Auswahl passend zum Druckvolumen in der Gizmo Skalierung anpassen" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1724 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1852 msgid "Scale the selected object to fit the print volume" msgstr "Skalieren des ausgewählten Objekts so, dass es in das Druckvolumen passt" -#: src/libslic3r/PrintConfig.cpp:3475 +#: src/libslic3r/PrintConfig.cpp:3674 msgid "Scale to Fit" msgstr "Passend skalieren" -#: src/slic3r/GUI/Selection.cpp:939 +#: src/slic3r/GUI/Selection.cpp:988 msgid "Scale To Fit" msgstr "Passend skalieren" -#: src/libslic3r/PrintConfig.cpp:3476 +#: src/libslic3r/PrintConfig.cpp:3675 msgid "Scale to fit the given volume." msgstr "Auf das gegebene Volumen skalieren." -#: src/slic3r/GUI/GUI_ObjectList.cpp:1724 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1852 msgid "Scale to print volume" msgstr "Auf Druckvolumen skalieren" -#: src/libslic3r/PrintConfig.cpp:3467 +#: src/libslic3r/PrintConfig.cpp:3666 msgid "Scaling factor or percentage." msgstr "Skalierungsfaktor oder Prozentsatz." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:505 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:545 msgid "Scheduling upload to `%1%`. See Window -> Print Host Upload Queue" msgstr "Geplante Hochladung auf `%1%`. Siehe Fenster -> Druck-Host Uploadwarteschlange" -#: src/libslic3r/PrintConfig.cpp:1621 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:46 +msgid "Seam painting" +msgstr "Aufmal-Nähte" + +#: src/libslic3r/PrintConfig.cpp:1729 msgid "Seam position" msgstr "Nahtposition" -#: src/libslic3r/PrintConfig.cpp:1642 +#: src/libslic3r/PrintConfig.cpp:1750 msgid "Seam preferred direction" msgstr "Bevorzugte Richtung für Nähte" -#: src/libslic3r/PrintConfig.cpp:1651 +#: src/libslic3r/PrintConfig.cpp:1759 msgid "Seam preferred direction jitter" msgstr "Bevorzugte Zitterrichtung für Nähte" +#: src/slic3r/GUI/MainFrame.cpp:1207 +msgid "Searc&h" +msgstr "Suc&hen" + +#: src/slic3r/GUI/GLCanvas3D.cpp:4402 src/slic3r/GUI/GLCanvas3D.cpp:4957 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:130 src/slic3r/GUI/Search.cpp:426 +msgid "Search" +msgstr "Suchen" + +#: src/slic3r/GUI/ImGuiWrapper.cpp:803 src/slic3r/GUI/Search.cpp:460 +msgid "Search in English" +msgstr "Suche in Englisch" + +#: src/slic3r/GUI/MainFrame.cpp:1216 +msgid "Search in settings" +msgstr "Suche in Einstellungen" + +#: src/slic3r/GUI/Tab.cpp:222 +msgid "Search in settings [%1%]" +msgstr "Suche in Einstellungen [%1%]" + #: src/slic3r/GUI/BonjourDialog.cpp:218 msgid "Searching for devices" msgstr "Es wird nach Geräten gesucht" -#: src/slic3r/GUI/Plater.cpp:2858 +#: src/slic3r/GUI/Jobs/RotoptimizeJob.cpp:41 msgid "Searching for optimal orientation" msgstr "Suche nach der optimalen Orientierung" -#: src/slic3r/GUI/GUI_App.cpp:1103 +#: src/slic3r/GUI/NotificationManager.hpp:321 +msgid "See more." +msgstr "Siehe mehr." + +#: src/slic3r/GUI/NotificationManager.hpp:322 +msgid "See Releases page." +msgstr "Siehe Releases-Seite." + +#: src/slic3r/GUI/GUI_App.cpp:1895 msgid "Select a gcode file:" msgstr "Gcode Datei auswählen:" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:126 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:121 msgid "Select all objects" msgstr "Alle Objekte auswählen" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1370 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1217 msgid "Select all points" msgstr "Alle Punkte auswählen" -#: src/slic3r/GUI/ConfigWizard.cpp:1976 +#: src/slic3r/GUI/ConfigWizard.cpp:2487 msgid "Select all standard printers" msgstr "Wähle alle Standarddrucker" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1368 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1215 msgid "Select by rectangle" msgstr "Auswahl über Rechteck" -#: src/slic3r/GUI/MainFrame.cpp:944 src/slic3r/GUI/MainFrame.cpp:1006 +#: src/slic3r/GUI/MainFrame.cpp:1645 src/slic3r/GUI/MainFrame.cpp:1707 msgid "Select configuration to load:" msgstr "Konfiguration zum Laden auswählen:" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:82 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:88 msgid "Select coordinate space, in which the transformation will be performed." msgstr "Koordinatenraum wählen, in dem die Transformation durchgeführt wird." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3971 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4458 msgid "Select extruder number:" msgstr "Wählen Sie die Extruder Nummer:" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:138 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:134 msgid "Select Filament Settings Tab" msgstr "Wählt Filamenteinstellungsreiter" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:136 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:132 msgid "Select Plater Tab" msgstr "Wählt Druckplattenreiter" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:137 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:133 msgid "Select Print Settings Tab" msgstr "Wählt Druckeinstellungsreiter" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:139 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:135 msgid "Select Printer Settings Tab" msgstr "Wählt Druckereinstellungsreiter" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1265 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1396 msgid "Select showing settings" msgstr "Wähle Anzeigeeinstellungen" -#: src/slic3r/GUI/GUI_App.cpp:629 +#: src/slic3r/GUI/GUI_App.cpp:1295 msgid "Select the language" msgstr "Wählen Sie die Sprache aus" -#: src/slic3r/GUI/Tab.cpp:57 +#: src/slic3r/GUI/Tab.cpp:108 msgid "Select the print profiles this profile is compatible with." msgstr "Wählt die Druckprofile, die mit diesem Profil kompatibel sind." -#: src/slic3r/GUI/Tab.cpp:51 +#: src/slic3r/GUI/Tab.cpp:102 msgid "Select the printers this profile is compatible with." msgstr "Wählen Sie die Drucker aus, die mit diesem Profil kompatibel sind." -#: src/slic3r/GUI/MainFrame.cpp:889 +#: src/slic3r/GUI/MainFrame.cpp:1590 msgid "Select the STL file to repair:" msgstr "Geben Sie die STL-Datei an, die repariert werden soll:" -#: src/slic3r/GUI/Preferences.cpp:237 +#: src/slic3r/GUI/Preferences.cpp:391 msgid "Select toolbar icon size in respect to the default one." msgstr "Wählen Sie die Symbolgröße der Symbolleiste in Bezug auf die Standardgröße." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3553 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4016 msgid "Select type of part" msgstr "Wählen Sie den Typ des Teils" -#: src/slic3r/GUI/Plater.cpp:638 +#: src/slic3r/GUI/Plater.cpp:504 msgid "Select what kind of pad do you need" msgstr "Wählen Sie aus, welche Art von Grundschicht Sie benötigen" -#: src/slic3r/GUI/Plater.cpp:498 +#: src/slic3r/GUI/Plater.cpp:364 msgid "Select what kind of support do you need" msgstr "Wählen Sie aus, welche Art von Unterstützung Sie benötigen" -#: src/slic3r/GUI/DoubleSlider.cpp:1917 +#: src/slic3r/GUI/DoubleSlider.cpp:2135 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" @@ -6498,59 +7529,59 @@ msgstr "" "NEIN, wenn Sie möchten, dass alle Werkzeugänderungen auf Farbwechsel umgestellt werden, \n" "oder ABBRECHEN, um sie unverändert zu lassen." -#: src/slic3r/GUI/Selection.cpp:146 +#: src/slic3r/GUI/Selection.cpp:191 msgid "Selection-Add" msgstr "Auswahl hinzufügen" -#: src/slic3r/GUI/Selection.cpp:376 +#: src/slic3r/GUI/Selection.cpp:421 msgid "Selection-Add All" msgstr "Auswahl Alles hinzufügen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3299 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3762 msgid "Selection-Add from list" msgstr "Auswahl aus Liste hinzufügen" -#: src/slic3r/GUI/GLCanvas3D.cpp:6598 +#: src/slic3r/GUI/GLCanvas3D.cpp:7193 msgid "Selection-Add from rectangle" msgstr "Auswahl über Rechteck hinzufügen" -#: src/slic3r/GUI/Selection.cpp:256 +#: src/slic3r/GUI/Selection.cpp:301 msgid "Selection-Add Instance" msgstr "Auswahl Kopie hinzufügen" -#: src/slic3r/GUI/Selection.cpp:219 +#: src/slic3r/GUI/Selection.cpp:264 msgid "Selection-Add Object" msgstr "Auswahl Objekt hinzufügen" -#: src/slic3r/GUI/Selection.cpp:187 +#: src/slic3r/GUI/Selection.cpp:232 msgid "Selection-Remove" msgstr "Auswahl entfernen" -#: src/slic3r/GUI/Selection.cpp:402 +#: src/slic3r/GUI/Selection.cpp:447 msgid "Selection-Remove All" msgstr "Auswahl Alles entfernen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3291 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3754 msgid "Selection-Remove from list" msgstr "Auswahl aus Liste entfernen" -#: src/slic3r/GUI/GLCanvas3D.cpp:6617 +#: src/slic3r/GUI/GLCanvas3D.cpp:7212 msgid "Selection-Remove from rectangle" msgstr "Auswahl über Rechteck entfernen" -#: src/slic3r/GUI/Selection.cpp:275 +#: src/slic3r/GUI/Selection.cpp:320 msgid "Selection-Remove Instance" msgstr "Auswahl Kopie entfernen" -#: src/slic3r/GUI/Selection.cpp:238 +#: src/slic3r/GUI/Selection.cpp:283 msgid "Selection-Remove Object" msgstr "Auswahl Objekt entfernen" -#: src/slic3r/GUI/MainFrame.cpp:566 +#: src/slic3r/GUI/MainFrame.cpp:1172 msgid "Selects all objects" msgstr "Alle Objekte auswählen" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:123 src/slic3r/GUI/Plater.cpp:5522 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:116 src/slic3r/GUI/Plater.cpp:5707 msgid "Send G-code" msgstr "Sende G-code" @@ -6558,29 +7589,29 @@ msgstr "Sende G-code" msgid "Send G-Code to printer host" msgstr "Sende G-Code zum Druckerhost" -#: src/slic3r/GUI/MainFrame.cpp:481 +#: src/slic3r/GUI/MainFrame.cpp:1072 msgid "Send to print current plate as G-code" msgstr "Sende die aktuelle Plattenbelegung als G-Code zum Drucken" -#: src/slic3r/GUI/Plater.cpp:878 src/slic3r/GUI/Plater.cpp:5522 +#: src/slic3r/GUI/Plater.cpp:753 src/slic3r/GUI/Plater.cpp:5707 msgid "Send to printer" msgstr "Zum Drucker senden" -#: src/slic3r/GUI/GLCanvas3D.cpp:1305 +#: src/slic3r/GUI/GLCanvas3D.cpp:1312 msgid "Seq." msgstr "Seq." -#: src/slic3r/GUI/Tab.cpp:1231 +#: src/slic3r/GUI/Tab.cpp:1561 msgid "Sequential printing" msgstr "Sequentielles Drucken" -#: src/slic3r/GUI/Tab.cpp:1901 src/libslic3r/PrintConfig.cpp:1661 -msgid "Serial port" -msgstr "Serieller Port" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:235 +msgid "Sequential Slider" +msgstr "Sequentieller Schieberegler" -#: src/libslic3r/PrintConfig.cpp:1669 -msgid "Serial port speed" -msgstr "Serielle Portgeschwindigkeit" +#: src/slic3r/GUI/Preferences.cpp:230 +msgid "Sequential slider applied only to top layer" +msgstr "Sequentieller Schieberegler wird nur auf die oberste Schicht angewendet" #: src/slic3r/GUI/FirmwareDialog.cpp:807 msgid "Serial port:" @@ -6590,17 +7621,16 @@ msgstr "Serieller Port:" msgid "Service name" msgstr "Name des Dienstes" -#: src/slic3r/GUI/Tab.cpp:1802 src/slic3r/GUI/Tab.cpp:2046 -#: src/slic3r/GUI/Tab.cpp:3176 +#: src/slic3r/GUI/Tab.cpp:3509 src/slic3r/GUI/Tab.cpp:3588 msgid "Set" msgstr "Setzen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1599 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1611 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1728 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1740 msgid "Set as a Separated Object" msgstr "Als separates Objekt festlegen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1611 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1740 msgid "Set as a Separated Objects" msgstr "Als separate Objekte festlegen" @@ -6608,7 +7638,7 @@ msgstr "Als separate Objekte festlegen" msgid "Set extruder change for every" msgstr "Extruderwechsel bei jedem" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1671 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1800 msgid "Set extruder for selected items" msgstr "Extruder für die gewählten Elemente wählen" @@ -6616,7 +7646,7 @@ msgstr "Extruder für die gewählten Elemente wählen" msgid "Set extruder sequence" msgstr "Extrudersequenz einstellen" -#: src/slic3r/GUI/DoubleSlider.cpp:1532 +#: src/slic3r/GUI/DoubleSlider.cpp:1728 msgid "Set extruder sequence for the entire print" msgstr "Extrudersequenz für den gesamten Druck einstellen" @@ -6624,84 +7654,84 @@ msgstr "Extrudersequenz für den gesamten Druck einstellen" msgid "Set extruder(tool) sequence" msgstr "Extruder(werkzeug)sequenz einstellen" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:217 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:218 msgid "Set lower thumb to current slider thumb" msgstr "Stelle den unteren Regler auf den aktuellen Schieberegler" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:297 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:305 msgid "Set Mirror" msgstr "Spiegel setzen" -#: src/slic3r/GUI/Plater.cpp:3944 +#: src/slic3r/GUI/Plater.cpp:3862 msgid "Set number of instances" msgstr "Setze Anzahl der Kopien" -#: src/slic3r/GUI/Plater.cpp:4756 +#: src/slic3r/GUI/Plater.cpp:4860 #, c-format msgid "Set numbers of copies to %d" msgstr "Setze Anzahl der Kopien auf %d" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:781 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:828 msgid "Set Orientation" msgstr "Orientierung setzen" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:750 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:797 msgid "Set Position" msgstr "Position setzen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:4094 src/slic3r/GUI/Selection.cpp:1474 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4581 src/slic3r/GUI/Selection.cpp:1513 msgid "Set Printable" msgstr "Setze Druckbar" -#: src/slic3r/GUI/Selection.cpp:1475 +#: src/slic3r/GUI/Selection.cpp:1515 msgid "Set Printable Instance" msgstr "Setze druckbare Kopie" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:846 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:893 msgid "Set Scale" msgstr "Setze Skalierung" -#: src/libslic3r/PrintConfig.cpp:2393 +#: src/libslic3r/PrintConfig.cpp:2536 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 "Setzt die aktuelle Ausrichtung der LCD-Anzeige im SLA-Drucker. Der Hochformatmodus kehrt die Bedeutung der Anzeigeparameter Breite und Höhe um und die Ausgabebilder werden um 90 Grad gedreht." -#: src/slic3r/GUI/ConfigWizard.cpp:932 +#: src/slic3r/GUI/ConfigWizard.cpp:1298 msgid "Set the shape of your printer's bed." msgstr "Stellen Sie die Konturen Ihres Druckerbettes ein." -#: src/libslic3r/PrintConfig.cpp:556 +#: 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 "Setzen Sie dies auf einen Nicht-Nullwert, um eine manuelle Extrusionsbreite zuzulassen. Falls auf null belassen, wird PrusaSlicer die Extrusionsbreiten vom Durchmesser der Druckdüse ableiten (siehe die Hilfstexte für die Extrusionsbreite für Außenkonturen, Infill usw.). Falls als Prozentwert (z.B. 230%) angegeben, wird dieser ausgehend von der Schichthöhe berechnet." -#: src/libslic3r/PrintConfig.cpp:448 +#: 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." msgstr "Setzen Sie dies auf einen Nicht-Nullwert, um eine manuelle Extrusionsbreite für externe Außenkonturen anzugeben. Falls auf null belassen, wird die Standard-Extrusionsbreite verwendet (falls angeben), ansonsten wird der Durchmesser der Druckdüse x 1,125 verwendet. Falls als Prozentwert (z.B. 200%) angegeben, wird dieser ausgehend von der Schichthöhe berechnet." -#: src/libslic3r/PrintConfig.cpp:878 +#: 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 "Setzen Sie dies auf einen Nicht-Nullwert, um eine manuelle Extrusionsbreite für die erste Druckschicht anzugeben. Sie können damit eine stärkere Extrusion für bessere Haftung erzwingen. Falls auf null belassen, wird die Standard-Extrusionsbreite verwendet. Falls als Prozentwert (z.B. 120%) angegeben, wird dieser ausgehend von der Schichthöhe berechnet." -#: src/libslic3r/PrintConfig.cpp:1758 +#: 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." msgstr "Setzen Sie dies auf einen Nicht-Nullwert, um eine manuelle Extrusionsbreite für den Infill bei massiven Flächen anzugeben. Falls auf null belassen, wird die Standard-Extrusionsbreite verwendet (falls angeben), ansonsten wird der Durchmesser der Druckdüse x 1,125 verwendet. Falls als Prozentwert (z.B. 90%) angegeben, wird dieser ausgehend von der Schichthöhe berechnet." -#: src/libslic3r/PrintConfig.cpp:2107 +#: src/libslic3r/PrintConfig.cpp:2250 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 regions and get a smoother finish. If left zero, default extrusion width will be used if set, otherwise nozzle diameter will be used. If expressed as percentage (for example 90%) it will be computed over layer height." msgstr "Setzen Sie dies auf einen Nicht-Nullwert, um eine manuelle Extrusionsbreite für die oberen Außenflächen anzugeben. Dünnere Extrusionsbreiten sind vorteilhaft, um Engstellen auszufüllen und um eine schönere Oberfläche zu erhalten. Falls auf null belassen, wird die Standard-Extrusionsbreite verwendet (falls angeben), ansonsten wird der Durchmesser der Druckdüse verwendet. Falls als Prozentwert (z.B. 90%) angegeben, wird dieser ausgehend von der Schichthöhe berechnet." -#: src/libslic3r/PrintConfig.cpp:1011 +#: 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 "Setzen Sie dies auf einen Nicht-Nullwert, um eine manuelle Extrusionsbreite für den Infill anzugeben. Falls auf null belassen, wird die Standard-Extrusionsbreite verwendet (falls angeben), ansonsten wird der Durchmesser der Druckdüse x 1,125 verwendet. Stärke Extrusionsbreiten sind vorteilhaft, um den Infill zu beschleunigen und um die Teile stärker zu machen. Falls als Prozentwert (z.B. 90%) angegeben, wird dieser ausgehend von der Schichthöhe berechnet." -#: src/libslic3r/PrintConfig.cpp:1419 +#: 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." msgstr "Setzen Sie dies auf einen Nicht-Nullwert, um eine manuelle Extrusionsbreite für Außenkonturen anzugeben. Dünnere Extrusionsbreiten sind vorteilhaft, um genauere Oberflächen zu erhalten. Falls auf null belassen, wird die Standard-Extrusionsbreite verwendet (falls angeben), ansonsten wird der Durchmesser der Druckdüse x 1,125 verwendet. Falls als Prozentwert (z.B. 200%) angegeben, wird dieser ausgehend von der Schichthöhe berechnet." -#: src/libslic3r/PrintConfig.cpp:1948 +#: src/libslic3r/PrintConfig.cpp:2090 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, otherwise nozzle diameter will be used. If expressed as percentage (for example 90%) it will be computed over layer height." msgstr "Setzen Sie dies auf einen Nicht-Nullwert, um eine manuelle Extrusionsbreite für die Stützstrukturen anzugeben. Falls auf null belassen, wird die Standard-Extrusionsbreite verwendet (falls angeben), ansonsten wird der Durchmesser der Druckdüse verwendet. Als Prozentwert (z.B. 90%) angegeben, wird dieser ausgehend von der Schichthöhe berechnet." -#: src/libslic3r/PrintConfig.cpp:512 +#: src/libslic3r/PrintConfig.cpp:548 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 "Stellen Sie dies auf den Freiraumradius um Ihren Extruder ein. Wenn der Extruder nicht zentriert ist, wählen Sie zur Sicherheit den größten Wert. Diese Einstellung wird verwendet, um Kollisionen zu prüfen und die grafische Vorschau auf der Druckplatte anzuzeigen." @@ -6709,23 +7739,23 @@ msgstr "Stellen Sie dies auf den Freiraumradius um Ihren Extruder ein. Wenn der msgid "Set this to the maximum height that can be reached by your extruder while printing." msgstr "Stellen Sie hier die maximale Höhe ein, die Ihr Extruder beim Drucken erreichen kann." -#: src/libslic3r/PrintConfig.cpp:501 +#: src/libslic3r/PrintConfig.cpp:537 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 cylinder around your extruder, and it represents the maximum depth the extruder can peek before colliding with other printed objects." msgstr "Stellen Sie dies auf den vertikalen Abstand zwischen Ihrer Düsenspitze und (in der Regel) den X-Wagenstangen ein. Mit anderen Worten, das ist die Höhe des Abstandszylinders um Ihren Extruder herum und stellt die maximale Tiefe dar, die der Extruder vor der Kollision mit anderen Druckobjekten sehen kann." -#: src/slic3r/GUI/GUI_ObjectList.cpp:4094 src/slic3r/GUI/Selection.cpp:1474 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4581 src/slic3r/GUI/Selection.cpp:1513 msgid "Set Unprintable" msgstr "Setze Undruckbar" -#: src/slic3r/GUI/Selection.cpp:1475 +#: src/slic3r/GUI/Selection.cpp:1515 msgid "Set Unprintable Instance" msgstr "Setze undruckbare Kopie" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:217 msgid "Set upper thumb to current slider thumb" msgstr "Stelle den oberen Regler auf den aktuellen Schieberegler" -#: src/libslic3r/PrintConfig.cpp:3509 +#: src/libslic3r/PrintConfig.cpp:3714 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." @@ -6733,63 +7763,74 @@ msgstr "" "Stellt die Empfindlichkeit der Protokollierung ein. 0:fatal, 1:Fehler, 2:Warnung, 3:Info, 4:Debug, 5: Trace.\n" "Zum Beispiel. loglevel=2 protokolliert fatale, Fehler- und Warnstufenmeldungen." -#: src/slic3r/GUI/BedShapeDialog.cpp:155 +#: src/slic3r/GUI/BedShapeDialog.cpp:292 src/slic3r/GUI/MainFrame.cpp:1969 msgid "Settings" msgstr "Einstellungen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2507 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2899 msgid "Settings for height range" msgstr "Einstellungen für Höhenbereich" -#: src/slic3r/GUI/ConfigManipulation.cpp:162 +#: src/slic3r/GUI/Preferences.cpp:431 +msgid "Settings in non-modal window" +msgstr "Einstellungen im nicht-modalen Fenster" + +#: src/slic3r/GUI/ConfigManipulation.cpp:161 msgid "Shall I adjust those settings for supports?" msgstr "Soll ich diese Einstellungen für Stützen anpassen?" -#: src/slic3r/GUI/ConfigManipulation.cpp:89 +#: src/slic3r/GUI/ConfigManipulation.cpp:88 msgid "Shall I adjust those settings in order to enable Spiral Vase?" msgstr "Soll ich diese Einstellungen anpassen, um die Spiralvase zu aktivieren?" -#: src/slic3r/GUI/ConfigManipulation.cpp:119 +#: src/slic3r/GUI/ConfigManipulation.cpp:118 msgid "Shall I adjust those settings in order to enable the Wipe Tower?" msgstr "Soll ich diese Einstellungen anpassen, um den Reinigungsturm zu aktivieren?" -#: src/slic3r/GUI/ConfigManipulation.cpp:210 +#: src/slic3r/GUI/ConfigManipulation.cpp:209 msgid "Shall I switch to rectilinear fill pattern?" msgstr "Soll ich auf geradliniges Füllmuster wechseln?" -#: src/slic3r/GUI/ConfigManipulation.cpp:139 +#: src/slic3r/GUI/ConfigManipulation.cpp:138 msgid "Shall I synchronize support layers in order to enable the Wipe Tower?" msgstr "Soll ich die Stützschichten synchronisieren, um den Reinigungsturm zu aktivieren?" -#: src/slic3r/GUI/BedShapeDialog.cpp:66 src/slic3r/GUI/GUI_ObjectList.cpp:2059 +#: src/slic3r/GUI/BedShapeDialog.cpp:156 src/slic3r/GUI/BedShapeDialog.cpp:222 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2215 msgid "Shape" msgstr "Form" -#: src/slic3r/GUI/GUI_Preview.cpp:256 +#: src/slic3r/GUI/GUI_Preview.cpp:338 src/slic3r/GUI/GUI_Preview.cpp:1478 msgid "Shells" msgstr "Konturhüllen" -#: src/slic3r/GUI/GLCanvas3D.cpp:249 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:50 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:33 +msgid "Shift + Left mouse button" +msgstr "Gross + Linke Maustaste" + +#: src/slic3r/GUI/GLCanvas3D.cpp:241 msgid "Shift + Left mouse button:" msgstr "Gross + Linke Maustaste:" -#: src/slic3r/GUI/GLCanvas3D.cpp:255 +#: src/slic3r/GUI/GLCanvas3D.cpp:245 msgid "Shift + Right mouse button:" msgstr "Gross + Rechte Maustaste:" -#: src/slic3r/GUI/GUI_Preview.cpp:231 +#: src/slic3r/GUI/GUI_Preview.cpp:286 src/slic3r/GUI/GUI_Preview.cpp:288 msgid "Show" msgstr "Anzeigen" -#: src/slic3r/GUI/MainFrame.cpp:701 +#: src/slic3r/GUI/MainFrame.cpp:926 src/slic3r/GUI/MainFrame.cpp:1325 msgid "Show &Configuration Folder" msgstr "Zeige &Konfigurationsordner" -#: src/slic3r/GUI/MainFrame.cpp:676 +#: src/slic3r/GUI/MainFrame.cpp:1294 msgid "Show &labels" msgstr "Anzeigen &Beschriftungen" -#: src/slic3r/GUI/MainFrame.cpp:705 +#: src/slic3r/GUI/MainFrame.cpp:933 src/slic3r/GUI/MainFrame.cpp:937 +#: src/slic3r/GUI/MainFrame.cpp:1329 msgid "Show about dialog" msgstr "\"Über\"-Dialog anzeigen" @@ -6797,111 +7838,127 @@ msgstr "\"Über\"-Dialog anzeigen" msgid "Show advanced settings" msgstr "Ausführliche Einstellungen anzeigen" -#: src/slic3r/GUI/PrintHostDialogs.cpp:159 +#: src/slic3r/GUI/PrintHostDialogs.cpp:157 msgid "Show error message" msgstr "Fehlermeldungen anzeigen" -#: src/slic3r/GUI/Preferences.cpp:95 +#: src/slic3r/GUI/Preferences.cpp:112 msgid "Show incompatible print and filament presets" msgstr "Inkompatible Druck- und Filamenteinstellungen anzeigen" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:151 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:145 msgid "Show keyboard shortcuts list" msgstr "Liste der Tastaturkürzel anzeigen" -#: src/slic3r/GUI/MainFrame.cpp:676 +#: src/slic3r/GUI/GCodeViewer.cpp:2591 +msgid "Show normal mode" +msgstr "Normalen Modus zeigen" + +#: src/slic3r/GUI/MainFrame.cpp:1294 msgid "Show object/instance labels in 3D scene" msgstr "Objekt-/Kopiebeschriftungen in der 3D-Szene anzeigen" +#: src/slic3r/GUI/Preferences.cpp:213 +msgid "Show sidebar collapse/expand button" +msgstr "Schaltfläche zum Zu-/Ausklappen der Seitenleiste zeigen" + #: src/slic3r/GUI/WipeTowerDialog.cpp:377 msgid "Show simplified settings" msgstr "Vereinfachte Einstellungen anzeigen" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:52 +#: src/slic3r/GUI/Preferences.cpp:169 src/slic3r/GUI/Preferences.cpp:171 +msgid "Show splash screen" +msgstr "Startbildschirm anzeigen" + +#: src/slic3r/GUI/GCodeViewer.cpp:2586 +msgid "Show stealth mode" +msgstr "Stealth Modus anzeigen" + +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:51 msgid "Show supports" msgstr "Stützen anzeigen" -#: src/slic3r/GUI/MainFrame.cpp:699 +#: src/slic3r/GUI/MainFrame.cpp:924 src/slic3r/GUI/MainFrame.cpp:1323 msgid "Show system information" msgstr "Systeminformationen anzeigen" -#: src/slic3r/GUI/MainFrame.cpp:626 +#: src/slic3r/GUI/MainFrame.cpp:1234 msgid "Show the 3D editing view" msgstr "Anzeigen des 3D Editiermodus" -#: src/slic3r/GUI/MainFrame.cpp:629 +#: src/slic3r/GUI/MainFrame.cpp:1237 msgid "Show the 3D slices preview" msgstr "Vorschau der 3D-Schnitte anzeigen" -#: src/slic3r/GUI/MainFrame.cpp:617 +#: src/slic3r/GUI/MainFrame.cpp:1224 msgid "Show the filament settings" msgstr "Filamenteinstellungen anzeigen" -#: src/libslic3r/PrintConfig.cpp:3372 +#: src/libslic3r/PrintConfig.cpp:3571 msgid "Show the full list of print/G-code configuration options." msgstr "Zeigt die vollständige Liste der Konfigurationsmöglichkeiten für Druck/GCode an." -#: src/libslic3r/PrintConfig.cpp:3377 +#: src/libslic3r/PrintConfig.cpp:3576 msgid "Show the full list of SLA print configuration options." msgstr "Zeigt die vollständige Liste der Konfigurationsmöglichkeiten für SLA Druck an." -#: src/slic3r/GUI/MainFrame.cpp:708 +#: src/slic3r/GUI/MainFrame.cpp:941 src/slic3r/GUI/MainFrame.cpp:1332 msgid "Show the list of the keyboard shortcuts" msgstr "Liste der Tastaturkürzel anzeigen" -#: src/slic3r/GUI/MainFrame.cpp:606 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "Show the plater" msgstr "Druckplatte anzeigen" -#: src/slic3r/GUI/MainFrame.cpp:614 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "Show the print settings" msgstr "Druckeinstellungen anzeigen" -#: src/slic3r/GUI/MainFrame.cpp:621 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Show the printer settings" msgstr "Druckereinstellungen anzeigen" -#: src/libslic3r/PrintConfig.cpp:3366 +#: src/libslic3r/PrintConfig.cpp:3565 msgid "Show this help." msgstr "Diese Hilfe zeigen." -#: src/slic3r/GUI/MainFrame.cpp:701 +#: src/slic3r/GUI/MainFrame.cpp:926 src/slic3r/GUI/MainFrame.cpp:1325 msgid "Show user configuration folder (datadir)" msgstr "Zeige Benutzerkonfigurationsordner (datadir)" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:185 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:182 msgid "Show/Hide 3Dconnexion devices settings dialog" msgstr "Einstellungsdialog für 3Dconnexion-Geräte ein-/ausblenden" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:208 -msgid "Show/Hide Legend" -msgstr "Zeige/Verberge Legende" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 +msgid "Show/Hide Legend & Estimated printing time" +msgstr "Legende & geschätzte Druckzeit anzeigen/verbergen" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:146 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:141 msgid "Show/Hide object/instance labels" msgstr "Objekt-/Kopiebeschriftungen ein-/ausblenden" -#: src/slic3r/GUI/GUI_App.cpp:813 src/slic3r/GUI/wxExtensions.cpp:753 +#: src/slic3r/GUI/GUI_App.cpp:1504 src/slic3r/GUI/wxExtensions.cpp:673 msgid "Simple" msgstr "Einfach" -#: src/slic3r/GUI/ConfigWizard.cpp:820 +#: src/slic3r/GUI/ConfigWizard.cpp:1179 msgid "Simple mode" msgstr "Einfacher Modus" -#: src/slic3r/GUI/GUI_App.cpp:813 +#: src/slic3r/GUI/GUI_App.cpp:1504 msgid "Simple View Mode" msgstr "EInfacher Anzeigemodus" -#: src/slic3r/GUI/Tab.cpp:2298 src/slic3r/GUI/Tab.cpp:2306 +#: src/slic3r/GUI/Tab.cpp:2467 src/slic3r/GUI/Tab.cpp:2475 msgid "Single extruder MM setup" msgstr "Einzelextruder MM Setup" -#: src/libslic3r/PrintConfig.cpp:1845 +#: src/libslic3r/PrintConfig.cpp:1987 msgid "Single Extruder Multi Material" msgstr "Einzelextruder mit Multi-Material" -#: src/slic3r/GUI/Tab.cpp:1867 +#: src/slic3r/GUI/Tab.cpp:2101 msgid "" "Single Extruder Multi Material is selected, \n" "and all extruders must have the same diameter.\n" @@ -6911,435 +7968,463 @@ msgstr "" "und alle Extruder müssen den gleichen Durchmesser haben.\n" "Möchten Sie den Durchmesser für alle Extruder auf den Wert des ersten Extruderdüsendurchmessers ändern?" -#: src/slic3r/GUI/Tab.cpp:2307 +#: src/slic3r/GUI/Tab.cpp:2476 msgid "Single extruder multimaterial parameters" msgstr "Einzelextruder Multimaterial Parameter" -#: src/slic3r/GUI/BedShapeDialog.cpp:77 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:232 src/slic3r/GUI/Plater.cpp:160 -#: src/slic3r/GUI/Tab.cpp:2324 +#: src/slic3r/GUI/Preferences.cpp:120 src/libslic3r/PrintConfig.cpp:3689 +msgid "Single instance mode" +msgstr "Einzelinstanz-Modus" + +#: src/slic3r/GUI/BedShapeDialog.cpp:93 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:240 src/slic3r/GUI/Plater.cpp:166 +#: src/slic3r/GUI/Tab.cpp:2493 msgid "Size" msgstr "Größe" -#: src/slic3r/GUI/Tab.cpp:1797 src/slic3r/GUI/Tab.cpp:2041 +#: src/slic3r/GUI/Tab.cpp:2059 src/slic3r/GUI/Tab.cpp:2241 msgid "Size and coordinates" msgstr "Größe und Koordinaten" -#: src/slic3r/GUI/BedShapeDialog.cpp:78 +#: src/slic3r/GUI/BedShapeDialog.cpp:110 msgid "Size in X and Y of the rectangular plate." msgstr "Größe der rechteckigen Platte in X und Y." -#: src/slic3r/GUI/GUI_Preview.cpp:245 src/slic3r/GUI/Tab.cpp:1111 -#: src/libslic3r/ExtrusionEntity.cpp:318 +#: src/slic3r/GUI/GUI_Preview.cpp:310 src/slic3r/GUI/Tab.cpp:1439 +#: src/libslic3r/ExtrusionEntity.cpp:323 src/libslic3r/ExtrusionEntity.cpp:354 msgid "Skirt" msgstr "Schürze" -#: src/slic3r/GUI/Tab.cpp:1110 +#: src/slic3r/GUI/Tab.cpp:1438 msgid "Skirt and brim" msgstr "Schürze und Rand" -#: src/libslic3r/PrintConfig.cpp:1687 +#: src/libslic3r/PrintConfig.cpp:1795 msgid "Skirt height" msgstr "Schürzenhöhe" -#: src/libslic3r/PrintConfig.cpp:1696 +#: src/libslic3r/PrintConfig.cpp:1811 msgid "Skirt Loops" msgstr "Schleifen für die Schürze" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1334 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1181 msgid "SLA gizmo keyboard shortcuts" msgstr "SLA Gizmo Tastaturkürzel" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1058 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:924 msgid "SLA gizmo turned off" msgstr "SLA Gizmo ausgeschaltet" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1017 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:897 msgid "SLA gizmo turned on" msgstr "SLA Gizmo eingeschaltet" -#: src/slic3r/GUI/Plater.cpp:818 src/slic3r/GUI/Preset.cpp:1524 +#: src/slic3r/GUI/Plater.cpp:693 src/libslic3r/Preset.cpp:1303 msgid "SLA material" msgstr "SLA Material" -#: src/slic3r/GUI/ConfigWizard.cpp:2015 +#: src/slic3r/GUI/ConfigWizard.cpp:2526 msgid "SLA Material Profiles Selection" msgstr "SLA Material Profile Auswahl" -#: src/libslic3r/PrintConfig.cpp:2470 src/libslic3r/PrintConfig.cpp:2471 +#: src/libslic3r/PrintConfig.cpp:2613 src/libslic3r/PrintConfig.cpp:2614 msgid "SLA material type" msgstr "SLA Materialtyp" -#: src/slic3r/GUI/ConfigWizard.cpp:1471 src/slic3r/GUI/ConfigWizard.cpp:2015 +#: src/slic3r/GUI/ConfigWizard.cpp:1872 src/slic3r/GUI/ConfigWizard.cpp:2526 msgid "SLA Materials" msgstr "SLA Materialien" -#: src/slic3r/GUI/Preset.cpp:1523 +#: src/libslic3r/Preset.cpp:1302 msgid "SLA print" msgstr "SLA Druck" -#: src/libslic3r/PrintConfig.cpp:2578 +#: src/libslic3r/PrintConfig.cpp:2721 msgid "SLA print material notes" msgstr "SLA Druckmaterial-Anmerkungen" -#: src/slic3r/GUI/Plater.cpp:817 +#: src/slic3r/GUI/Plater.cpp:692 msgid "SLA print settings" msgstr "SLA Druckeinstellungen" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:996 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:869 msgid "SLA Support Points" msgstr "SLA Stützpunkte" -#: src/slic3r/GUI/GLCanvas3D.cpp:687 -msgid "SLA supports outside the print area were detected" -msgstr "SLA Stützstrukturen außerhalb des Druckraums entdeckt" +#: src/slic3r/GUI/GLCanvas3D.cpp:635 +msgid "SLA supports outside the print area were detected." +msgstr "SLA-Stützen außerhalb des Druckbereichs wurden erkannt." -#: src/slic3r/GUI/ConfigWizard.cpp:1530 +#: src/slic3r/GUI/ConfigWizard.cpp:1931 msgid "SLA Technology Printers" msgstr "SLA Technologie Drucker" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1432 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1563 msgid "Slab" msgstr "Slab" -#: src/libslic3r/PrintConfig.cpp:1333 +#: src/libslic3r/PrintConfig.cpp:1441 msgid "Slic3r can upload G-code files to a printer host. This field must contain the kind of the host." msgstr "PrusaSlicer kann G-Code Dateien auf einen Drucker-Host hochladen. Dieses Feld sollte den Typ des Hosts enthalten." -#: src/libslic3r/PrintConfig.cpp:105 +#: src/libslic3r/PrintConfig.cpp:107 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:98 +#: 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:1299 +#: src/libslic3r/PrintConfig.cpp:1407 msgid "Slic3r will not scale speed down below this speed." msgstr "PrusaSlicer wird die Geschwindigkeit nicht unterhalb dieser Geschwindigkeit skalieren." -#: src/libslic3r/PrintConfig.cpp:3359 +#: src/libslic3r/PrintConfig.cpp:3558 msgid "Slice" msgstr "Slice" -#: src/slic3r/GUI/MainFrame.cpp:512 +#: src/slic3r/GUI/MainFrame.cpp:1113 msgid "Slice a file into a G-code" msgstr "Datei zu G-Code slicen" -#: src/slic3r/GUI/MainFrame.cpp:518 +#: src/slic3r/GUI/MainFrame.cpp:1119 msgid "Slice a file into a G-code, save as" msgstr "Datei zu G-Code slicen, speichern als" -#: src/libslic3r/PrintConfig.cpp:87 +#: src/libslic3r/PrintConfig.cpp:89 msgid "Slice gap closing radius" msgstr "Slice Lückenschlussradius" -#: src/slic3r/GUI/Plater.cpp:892 src/slic3r/GUI/Plater.cpp:3121 -#: src/slic3r/GUI/Plater.cpp:5110 +#: src/slic3r/GUI/Plater.cpp:767 src/slic3r/GUI/Plater.cpp:2921 +#: src/slic3r/GUI/Plater.cpp:5237 msgid "Slice now" msgstr "Jetzt slicen" -#: src/libslic3r/PrintConfig.cpp:3333 +#: src/libslic3r/PrintConfig.cpp:3526 msgid "Slice the model and export SLA printing layers as PNG." msgstr "Slice das Modell und Export von SLA-Druckschichten als PNG." -#: src/libslic3r/PrintConfig.cpp:3354 +#: src/libslic3r/PrintConfig.cpp:3547 msgid "Slice the model and export toolpaths as G-code." msgstr "Modell slicen und Werkzeugwege als G-Code exportieren." -#: src/libslic3r/PrintConfig.cpp:3360 +#: src/libslic3r/PrintConfig.cpp:3559 msgid "Slice the model as FFF or SLA based on the printer_technology configuration value." msgstr "Slice das Modell als FFF oder SLA basierend auf dem Konfigurationswert von printer_technology." -#: src/slic3r/GUI/Plater.cpp:216 +#: src/slic3r/GUI/Plater.cpp:222 msgid "Sliced Info" msgstr "Slice-Info" -#: src/slic3r/GUI/MainFrame.cpp:847 src/slic3r/GUI/Plater.cpp:3121 -#: src/slic3r/GUI/Plater.cpp:5107 src/slic3r/GUI/Tab.cpp:1221 -#: src/slic3r/GUI/Tab.cpp:3662 +#: src/slic3r/GUI/MainFrame.cpp:1548 src/slic3r/GUI/Plater.cpp:2921 +#: src/slic3r/GUI/Plater.cpp:5234 src/slic3r/GUI/Tab.cpp:1551 +#: src/slic3r/GUI/Tab.cpp:4081 msgid "Slicing" msgstr "Slice" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:134 -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:184 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:170 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:219 msgid "Slicing complete" msgstr "Slicing abgeschlossen" -#: src/libslic3r/SLAPrint.cpp:760 +#: src/libslic3r/SLAPrint.cpp:780 msgid "Slicing done" msgstr "Slicing abgeschlossen" -#: src/slic3r/GUI/MainFrame.cpp:874 +#: src/slic3r/GUI/MainFrame.cpp:1575 msgid "Slicing Done!" msgstr "Slicing abgeschlossen!" -#: src/libslic3r/SLAPrintSteps.cpp:245 +#: src/slic3r/GUI/NotificationManager.cpp:751 +msgid "Slicing finished." +msgstr "Slicing abgeschlossen." + +#: src/libslic3r/SLAPrintSteps.cpp:247 msgid "Slicing had to be stopped due to an internal error: Inconsistent slice index." msgstr "Das Slicen wurde wegen eines internen Fehlers gestoppt: Defekter Sliceindex." -#: src/libslic3r/SLAPrintSteps.cpp:45 +#: src/libslic3r/SLAPrintSteps.cpp:46 msgid "Slicing model" msgstr "Slice das Modell" -#: src/libslic3r/SLAPrintSteps.cpp:49 +#: src/libslic3r/SLAPrintSteps.cpp:50 msgid "Slicing supports" msgstr "Slice Stützstrukturen" -#: src/libslic3r/PrintConfig.cpp:2414 +#: src/libslic3r/PrintConfig.cpp:2557 msgid "Slow" msgstr "Langsam" -#: src/libslic3r/PrintConfig.cpp:1705 +#: src/libslic3r/PrintConfig.cpp:1820 msgid "Slow down if layer print time is below" msgstr "Langsamer drucken wenn die Schichtdruckzeit geringer ist als" -#: src/libslic3r/PrintConfig.cpp:2415 +#: src/libslic3r/PrintConfig.cpp:2558 msgid "Slow tilt" msgstr "Langsames Kippen" -#: src/libslic3r/PrintConfig.cpp:1715 +#: src/libslic3r/PrintConfig.cpp:1830 msgid "Small perimeters" msgstr "Dünne Außenkonturen" -#: src/slic3r/GUI/GLCanvas3D.cpp:288 +#: src/libslic3r/PrintConfig.cpp:2801 +msgid "Small pillar diameter percent" +msgstr "Kleiner Pfeilerdurchmesser in Prozent" + +#: src/slic3r/GUI/GLCanvas3D.cpp:274 msgid "Smooth" msgstr "Glätten" -#: src/slic3r/GUI/GLCanvas3D.cpp:258 +#: src/slic3r/GUI/GLCanvas3D.cpp:247 msgid "Smoothing" msgstr "Glätten" -#: src/slic3r/GUI/GUI_App.cpp:839 +#: src/slic3r/GUI/GUI_App.cpp:1540 msgid "Snapshot name" msgstr "Name der Momentaufnahme" -#: src/slic3r/GUI/MainFrame.cpp:686 +#: src/slic3r/GUI/MainFrame.cpp:911 src/slic3r/GUI/MainFrame.cpp:1310 msgid "Software &Releases" msgstr "Software &Release" -#: src/slic3r/GUI/PresetHints.cpp:184 +#: src/slic3r/GUI/PresetHints.cpp:183 msgid "solid infill" msgstr "Massives Infill" -#: src/slic3r/GUI/GUI_Preview.cpp:241 src/libslic3r/ExtrusionEntity.cpp:314 -#: src/libslic3r/PrintConfig.cpp:1756 src/libslic3r/PrintConfig.cpp:1767 +#: src/slic3r/GUI/GUI_Preview.cpp:305 src/libslic3r/ExtrusionEntity.cpp:318 +#: src/libslic3r/ExtrusionEntity.cpp:344 src/libslic3r/PrintConfig.cpp:1871 +#: src/libslic3r/PrintConfig.cpp:1882 msgid "Solid infill" msgstr "Massives Infill" -#: src/libslic3r/PrintConfig.cpp:1744 +#: src/libslic3r/PrintConfig.cpp:1859 msgid "Solid infill every" msgstr "Massives Infill alle" -#: src/libslic3r/PrintConfig.cpp:1736 +#: src/libslic3r/PrintConfig.cpp:1851 msgid "Solid infill extruder" msgstr "Massives Infill Extruder" -#: src/libslic3r/PrintConfig.cpp:1727 +#: src/libslic3r/PrintConfig.cpp:1842 msgid "Solid infill threshold area" msgstr "Massives Infill Flächen Schwellwert" -#: src/slic3r/GUI/Tab.cpp:1065 src/libslic3r/PrintConfig.cpp:1780 +#: src/slic3r/GUI/Tab.cpp:1387 src/libslic3r/PrintConfig.cpp:1895 msgid "Solid layers" msgstr "Massive Schichten" -#: src/libslic3r/PrintConfig.cpp:754 +#: src/libslic3r/PrintConfig.cpp:790 msgid "Soluble material" msgstr "Lösliches Material" -#: src/libslic3r/PrintConfig.cpp:755 +#: src/libslic3r/PrintConfig.cpp:791 msgid "Soluble material is most likely used for a soluble support." msgstr "Lösliches Material wird meistens für Stützstrukturen verwendet." -#: src/libslic3r/PrintConfig.cpp:937 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:735 +msgid "Some fields are too long to fit. Right mouse click reveals the full text." +msgstr "Einige Texte sind zu lang. Ein rechter Mausklick zeigt den vollständigen Text an." + +#: src/libslic3r/PrintConfig.cpp:981 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 output. The \"No extrusion\" flavor prevents PrusaSlicer from exporting any extrusion value at all." msgstr "Einige G/M-Code Befehle, einschließlich Temperaturregelung und andere, sind nicht universell einsetzbar. Stellen Sie diese Option auf die Firmware Ihres Druckers ein, um eine kompatible Ausgabe zu erhalten. Der Zusatz \"No Extrusion\" verhindert, dass PrusaSlicer überhaupt einen Extrusionswert exportiert." -#: src/slic3r/GUI/GLCanvas3D.cpp:688 -msgid "Some objects are not visible" -msgstr "Einige Objekte sind nicht sichtbar" +#: src/slic3r/GUI/Plater.cpp:2309 +#, 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 "" +"Einige Objekte in der Datei %s sehen aus wie in Zoll gespeichert.\n" +"Als in Zoll gespeicherte Objekte betrachten und konvertieren?" -#: src/libslic3r/Print.cpp:1226 +#: src/slic3r/GUI/GLCanvas3D.cpp:636 +msgid "Some objects are not visible." +msgstr "Einige Objekte sind nicht sichtbar." + +#: src/libslic3r/Print.cpp:1252 msgid "Some objects are too close; your extruder will collide with them." msgstr "Einige Objekte sind zu nahe; Ihr Extruder wird mit ihnen zusammenstoßen." -#: src/libslic3r/Print.cpp:1228 +#: src/libslic3r/Print.cpp:1254 msgid "Some objects are too tall and cannot be printed without extruder collisions." msgstr "Einige Objekte sind zu hoch und können nicht ohne Zusammenstoss mit dem Extruder gedruckt werden." -#: src/libslic3r/PrintConfig.cpp:2824 +#: src/libslic3r/PrintConfig.cpp:2988 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 "Einige Objekte können mit ein paar kleineren Grundschichten auskommen, anstatt mit einer einzigen großen. Dieser Parameter definiert, wie weit die Mittelpunkte von zwei kleineren Grundschichten entfernt sein soll. Wenn sie näher sind, werden sie zu einem Block zusammengeführt." -#: src/libslic3r/PrintConfig.cpp:2187 +#: src/libslic3r/PrintConfig.cpp:2330 msgid "Some printers or printer setups may have difficulties printing with a variable layer height. Enabled by default." msgstr "Mit einigen Druckern oder Druckerkonfigurationen ist es schwierig, mit einer variablen Schichthöhe zu drucken. Standardmässig aktiviert." -#: src/libslic3r/PrintConfig.cpp:1984 +#: src/libslic3r/PrintConfig.cpp:2126 msgid "Spacing between interface lines. Set zero to get a solid interface." msgstr "Abstand zwischen den Schnittstellenlinien. Auf null stellen, um ein massives Interface zu erhalten." -#: src/libslic3r/PrintConfig.cpp:2018 +#: src/libslic3r/PrintConfig.cpp:1155 +msgid "Spacing between ironing passes" +msgstr "Abstand zwischen Bügelwegen" + +#: src/libslic3r/PrintConfig.cpp:2160 msgid "Spacing between support material lines." msgstr "Abstand zwischen Stützstrukturlinien." -#: src/slic3r/GUI/GUI_ObjectList.cpp:98 src/slic3r/GUI/GUI_ObjectList.cpp:616 -#: src/slic3r/GUI/GUI_Preview.cpp:224 src/slic3r/GUI/Tab.cpp:1145 -#: src/libslic3r/PrintConfig.cpp:235 src/libslic3r/PrintConfig.cpp:458 -#: src/libslic3r/PrintConfig.cpp:919 src/libslic3r/PrintConfig.cpp:1048 -#: src/libslic3r/PrintConfig.cpp:1431 src/libslic3r/PrintConfig.cpp:1668 -#: src/libslic3r/PrintConfig.cpp:1716 src/libslic3r/PrintConfig.cpp:1768 -#: src/libslic3r/PrintConfig.cpp:2118 +#: src/slic3r/GUI/GUI_ObjectList.cpp:96 src/slic3r/GUI/GUI_ObjectList.cpp:655 +#: src/slic3r/GUI/GUI_Preview.cpp:278 src/slic3r/GUI/Tab.cpp:1474 +#: src/libslic3r/PrintConfig.cpp:269 src/libslic3r/PrintConfig.cpp:494 +#: src/libslic3r/PrintConfig.cpp:963 src/libslic3r/PrintConfig.cpp:1092 +#: src/libslic3r/PrintConfig.cpp:1165 src/libslic3r/PrintConfig.cpp:1539 +#: src/libslic3r/PrintConfig.cpp:1776 src/libslic3r/PrintConfig.cpp:1831 +#: src/libslic3r/PrintConfig.cpp:1883 src/libslic3r/PrintConfig.cpp:2261 msgid "Speed" msgstr "Geschwindigkeit" -#: src/libslic3r/PrintConfig.cpp:1670 -msgid "Speed (baud) of USB/serial port for printer connection." -msgstr "Geschwindigkeit (baud) des USB/seriellen Ports für den Drucker Anschluß." - -#: src/libslic3r/GCode/PreviewData.cpp:351 +#: src/slic3r/GUI/GCodeViewer.cpp:2238 src/libslic3r/GCode/PreviewData.cpp:356 msgid "Speed (mm/s)" msgstr "Geschwindigkeit (mm/s)" -#: src/libslic3r/PrintConfig.cpp:920 +#: src/libslic3r/PrintConfig.cpp:964 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 "Geschwindigkeit, mit der kleine Lücken mit kurzen Zickzackbewegungen gefüllt werden. Beschränken Sie diese auf einen mässigen Wert, um übermässiges Rütteln und Resonanzprobleme zu vermeiden. Auf null gesetzt, wird das Füllen kleiner Lücken deaktiviert." -#: src/slic3r/GUI/Tab.cpp:1158 +#: src/slic3r/GUI/Tab.cpp:1488 msgid "Speed for non-print moves" msgstr "Geschwindigkeit für Bewegungen zwischen den Druckvorgängen" -#: src/libslic3r/PrintConfig.cpp:1432 +#: src/libslic3r/PrintConfig.cpp:1540 msgid "Speed for perimeters (contours, aka vertical shells). Set to zero for auto." msgstr "Geschwindigkeit für Außenkonturen (Konturen, bzw. vertikale Hüllen). Für Automatik auf null setzen." -#: src/slic3r/GUI/Tab.cpp:1146 +#: src/slic3r/GUI/Tab.cpp:1475 msgid "Speed for print moves" msgstr "Geschwindigkeit für Druckbewegungen" -#: src/libslic3r/PrintConfig.cpp:236 +#: src/libslic3r/PrintConfig.cpp:270 msgid "Speed for printing bridges." msgstr "Brückendruckgeschwindigkeit." -#: src/libslic3r/PrintConfig.cpp:1769 +#: src/libslic3r/PrintConfig.cpp:1884 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 "Druckgeschwindigkeit für massive Bereiche (obere/untere/innenliegende waagrechte Hüllen). Sie kann als Prozentwert (z.B. 80%) der oben eingegebenen standardmässigen Infill-Geschwindigkeit angegeben werden. Für Automatik auf null setzen." -#: src/libslic3r/PrintConfig.cpp:1993 +#: src/libslic3r/PrintConfig.cpp:2135 msgid "Speed for printing support material interface layers. If expressed as percentage (for example 50%) it will be calculated over support material speed." msgstr "Geschwindigkeit für den Druck von Trägermaterial-Schnittstellenschichten. Wenn es als Prozentsatz (z.B. 50%) ausgedrückt wird, wird es über die Geschwindigkeit des Trägermaterials berechnet." -#: src/libslic3r/PrintConfig.cpp:2027 +#: src/libslic3r/PrintConfig.cpp:2169 msgid "Speed for printing support material." msgstr "Druckgeschwindigkeit der Stützstrukturen." -#: src/libslic3r/PrintConfig.cpp:1049 +#: src/libslic3r/PrintConfig.cpp:1093 msgid "Speed for printing the internal fill. Set to zero for auto." msgstr "Druckgeschwindigkeit für den Infill. Für Automatik auf null setzen." -#: src/libslic3r/PrintConfig.cpp:2119 +#: src/libslic3r/PrintConfig.cpp:2262 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 slow down this to get a nicer surface finish. This can be expressed as a percentage (for example: 80%) over the solid infill speed above. Set to zero for auto." msgstr "Druckgeschwindigkeit für die oberen massiven Schichten (betrifft nur die obersten Außenkonturen und nicht deren innenliegende massiven Schichten). Wir empfehlen, diesen Wert zu reduzieren, um eine schönere Oberfläche zu erhalten. Dies kann als Prozentwert (z.B. 80%) der oben eingegebenen Geschwindigkeit für massives Infill angegeben werden. Für Automatik auf null setzen." -#: src/libslic3r/PrintConfig.cpp:2153 +#: src/libslic3r/PrintConfig.cpp:2296 msgid "Speed for travel moves (jumps between distant extrusion points)." msgstr "Bewegungsgeschwindigkeit (zwischen weit entfernten Extrusionsorten)." -#: src/libslic3r/PrintConfig.cpp:659 +#: src/libslic3r/PrintConfig.cpp:695 msgid "Speed of the first cooling move" msgstr "Geschwindigkeit der ersten Kühlbewegung" -#: src/libslic3r/PrintConfig.cpp:678 +#: src/libslic3r/PrintConfig.cpp:714 msgid "Speed of the last cooling move" msgstr "Geschwindigkeit der letzten Kühlbewegung" -#: src/libslic3r/PrintConfig.cpp:616 +#: src/libslic3r/PrintConfig.cpp:652 msgid "Speed used at the very beginning of loading phase." msgstr "Geschwindigkeit, die zu Beginn der Ladephase verwendet wird." -#: src/libslic3r/PrintConfig.cpp:608 +#: src/libslic3r/PrintConfig.cpp:644 msgid "Speed used for loading the filament on the wipe tower." msgstr "Geschwindigkeit, mit der Filament auf dem Reinigungsturm geladen wird." -#: src/libslic3r/PrintConfig.cpp:624 +#: src/libslic3r/PrintConfig.cpp:660 msgid "Speed used for unloading the filament on the wipe tower (does not affect initial part of unloading just after ramming)." msgstr "Geschwindigkeit, mit der Filament auf dem Reinigungsturm entladen wird (betrifft nicht den ersten Teil des Entladens direkt nach dem Rammen)." -#: src/libslic3r/PrintConfig.cpp:633 +#: src/libslic3r/PrintConfig.cpp:669 msgid "Speed used for unloading the tip of the filament immediately after ramming." msgstr "Geschwindigkeit, mit der die Spitze des Filaments unmittelbar nach dem Rammen entladen wird." -#: src/slic3r/GUI/Mouse3DController.cpp:296 +#: src/slic3r/GUI/Mouse3DController.cpp:279 msgid "Speed:" msgstr "Geschwindigkeit:" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1432 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:54 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:37 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1563 msgid "Sphere" msgstr "Kugel" -#: src/libslic3r/PrintConfig.cpp:1794 +#: src/libslic3r/PrintConfig.cpp:1909 msgid "Spiral vase" msgstr "Spiralvasenmodus" -#: src/slic3r/GUI/ConfigManipulation.cpp:90 +#: src/slic3r/GUI/ConfigManipulation.cpp:89 msgid "Spiral Vase" msgstr "Spiralvasenmodus" -#: src/slic3r/GUI/Plater.cpp:4019 src/slic3r/GUI/Plater.cpp:4034 -#: src/slic3r/GUI/Plater.cpp:4048 src/libslic3r/PrintConfig.cpp:3471 +#: src/slic3r/GUI/Plater.cpp:3939 src/slic3r/GUI/Plater.cpp:3954 +#: src/slic3r/GUI/Plater.cpp:3972 src/libslic3r/PrintConfig.cpp:3670 msgid "Split" msgstr "Trennen" -#: src/slic3r/GUI/Plater.cpp:4019 +#: src/slic3r/GUI/Plater.cpp:3939 msgid "Split the selected object" msgstr "Teile das gewählte Objekt" -#: src/slic3r/GUI/Plater.cpp:4014 src/slic3r/GUI/Plater.cpp:4034 +#: src/slic3r/GUI/Plater.cpp:3934 src/slic3r/GUI/Plater.cpp:3954 msgid "Split the selected object into individual objects" msgstr "Ausgewähltes Objekt in Einzelobjekte trennen" -#: src/slic3r/GUI/Plater.cpp:4016 src/slic3r/GUI/Plater.cpp:4048 +#: src/slic3r/GUI/Plater.cpp:3936 src/slic3r/GUI/Plater.cpp:3972 msgid "Split the selected object into individual sub-parts" msgstr "Ausgewähltes Objekt in einzelne Unterteile trennen" -#: src/slic3r/GUI/GLCanvas3D.cpp:4550 +#: src/slic3r/GUI/GLCanvas3D.cpp:4916 msgid "Split to objects" msgstr "In Objekte trennen" -#: src/slic3r/GUI/Plater.cpp:2981 +#: src/slic3r/GUI/Plater.cpp:2774 msgid "Split to Objects" msgstr "In Objekte trennen" -#: src/slic3r/GUI/GLCanvas3D.cpp:4560 src/slic3r/GUI/GUI_ObjectList.cpp:1487 +#: src/slic3r/GUI/GLCanvas3D.cpp:4926 src/slic3r/GUI/GUI_ObjectList.cpp:1618 msgid "Split to parts" msgstr "In Teile trennen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2274 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2440 msgid "Split to Parts" msgstr "In Teile trennen" -#: src/slic3r/GUI/ConfigWizard.cpp:289 +#: src/slic3r/GUI/ConfigWizard.cpp:307 msgid "Standard" msgstr "Standard" -#: src/libslic3r/PrintConfig.cpp:846 +#: src/libslic3r/PrintConfig.cpp:884 msgid "Stars" msgstr "Sterne" -#: src/slic3r/GUI/MainFrame.cpp:405 +#: src/slic3r/GUI/MainFrame.cpp:986 msgid "Start a new project" msgstr "Ein neues Projekt beginnen" -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:27 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:29 msgid "Start at height" msgstr "Starte auf Höhe" -#: src/slic3r/GUI/Tab.cpp:1528 src/slic3r/GUI/Tab.cpp:1976 -#: src/libslic3r/PrintConfig.cpp:1813 src/libslic3r/PrintConfig.cpp:1828 +#: src/slic3r/GUI/Tab.cpp:1873 src/slic3r/GUI/Tab.cpp:2161 +#: src/libslic3r/PrintConfig.cpp:1928 src/libslic3r/PrintConfig.cpp:1943 msgid "Start G-code" msgstr "Start G-Code" -#: src/slic3r/GUI/MainFrame.cpp:532 +#: src/slic3r/GUI/MainFrame.cpp:1133 msgid "Start new slicing process" msgstr "Neuen Slicing-Prozess starten" @@ -7347,7 +8432,37 @@ msgstr "Neuen Slicing-Prozess starten" msgid "Start printing after upload" msgstr "Beginne den Druckjob nach dem Hochladen" -#: src/slic3r/GUI/PrintHostDialogs.cpp:151 +#: src/slic3r/GUI/GUI_App.cpp:396 +msgid "Start the application" +msgstr "Anwendung starten" + +#: src/slic3r/GUI/GUI_App.cpp:386 +msgid "" +"Starting with %1% 2.3, configuration directory on Linux has changed (according to XDG Base Directory Specification) to \n" +"%2%.\n" +"\n" +"This directory did not exist yet (maybe you run the new version for the first time).\n" +"However, an old %1% configuration directory was detected in \n" +"%3%.\n" +"\n" +"Consider moving the contents of the old directory to the new location in order to access your profiles, etc.\n" +"Note that if you decide to downgrade %1% in future, it will use the old location again.\n" +"\n" +"What do you want to do now?" +msgstr "" +"Beginnend mit %1% 2.3 hat sich das Konfigurationsverzeichnis unter Linux (gemäß XDG Base Directory Specification) geändert in \n" +"%2%.\n" +"\n" +"Dieses Verzeichnis existierte noch nicht (vielleicht führen Sie die neue Version zum ersten Mal aus).\n" +"Es wurde jedoch ein altes %1%-Konfigurationsverzeichnis entdeckt in \n" +"%3%.\n" +"\n" +"Ziehen Sie in Betracht, den Inhalt des alten Verzeichnisses an den neuen Ort zu verschieben, um auf Ihre Profile usw. zuzugreifen.\n" +"Beachten Sie, dass bei einem zukünftigen Downgrade von %1% wieder der alte Speicherort verwendet wird.\n" +"\n" +"Was möchten Sie jetzt tun?" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:149 msgid "Status" msgstr "Status" @@ -7355,166 +8470,160 @@ msgstr "Status" msgid "Status:" msgstr "Status:" -#: src/slic3r/GUI/Tab.cpp:2209 +#: src/slic3r/GUI/Search.cpp:77 src/slic3r/GUI/Tab.cpp:2378 msgid "Stealth" msgstr "Stealth" -#: src/slic3r/GUI/Plater.cpp:1291 +#: src/slic3r/GUI/Plater.cpp:1187 src/slic3r/GUI/Plater.cpp:1235 msgid "stealth mode" msgstr "Stealth Modus" -#: src/slic3r/GUI/Plater.cpp:4985 +#: src/slic3r/GUI/GCodeViewer.cpp:2557 +msgid "Stealth mode" +msgstr "Stealth Modus" + +#: src/slic3r/GUI/Plater.cpp:5118 #, c-format msgid "STL file exported to %s" msgstr "Die STL-Datei wurde exportiert zu %s" -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:27 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:29 msgid "Stop at height" msgstr "Stoppe auf Höhe" -#: src/slic3r/GUI/Tab.cpp:1693 src/slic3r/GUI/Tab.cpp:1928 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:295 msgid "Success!" msgstr "Erfolg!" -#: src/slic3r/GUI/PresetHints.cpp:203 +#: src/slic3r/GUI/Plater.cpp:2047 +#, c-format +msgid "Successfully unmounted. The device %s(%s) can now be safely removed from the computer." +msgstr "Erfolgreich ausgeworfen. Das Gerät %s(%s) kann nun sicher vom Computer entfernt werden." + +#: src/slic3r/GUI/PresetHints.cpp:202 msgid "support" msgstr "Stützen" -#: src/libslic3r/PrintConfig.cpp:2692 +#: src/libslic3r/PrintConfig.cpp:2856 msgid "Support base diameter" msgstr "Stützfuß Durchmesser" -#: src/libslic3r/PrintConfig.cpp:2702 +#: src/libslic3r/PrintConfig.cpp:2866 msgid "Support base height" msgstr "Stützfuß Höhe" -#: src/libslic3r/PrintConfig.cpp:2711 +#: src/libslic3r/PrintConfig.cpp:2875 msgid "Support base safety distance" msgstr "Sicherheitsabstand der Stützbasis" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3551 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4014 msgid "Support Blocker" msgstr "Stützblocker" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3551 +#: src/libslic3r/PrintConfig.cpp:895 +msgid "Support Cubic" +msgstr "Stütz-kubisch" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:4014 msgid "Support Enforcer" msgstr "Stützverstärker" -#: src/slic3r/GUI/ConfigManipulation.cpp:163 +#: src/slic3r/GUI/ConfigManipulation.cpp:162 msgid "Support Generator" msgstr "Stütz-Generator" -#: src/slic3r/GUI/Tab.cpp:3608 +#: src/slic3r/GUI/Tab.cpp:4018 msgid "Support head" msgstr "Stützkopf" -#: src/libslic3r/PrintConfig.cpp:2620 -msgid "Support head front diameter" -msgstr "Durchmesser des Stützkopfes vorne" - -#: src/libslic3r/PrintConfig.cpp:2629 -msgid "Support head penetration" -msgstr "Eindringtiefe des Stützkopfes" - -#: src/libslic3r/PrintConfig.cpp:2638 -msgid "Support head width" -msgstr "Stützkopfbreite" - -#: src/slic3r/GUI/PresetHints.cpp:213 +#: src/slic3r/GUI/PresetHints.cpp:212 msgid "support interface" msgstr "Schnittstelle zu den Stützen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:36 src/slic3r/GUI/GUI_ObjectList.cpp:97 -#: src/slic3r/GUI/GUI_ObjectList.cpp:615 src/slic3r/GUI/GUI_Preview.cpp:246 -#: src/slic3r/GUI/Tab.cpp:1120 src/slic3r/GUI/Tab.cpp:1121 -#: src/libslic3r/ExtrusionEntity.cpp:319 src/libslic3r/PrintConfig.cpp:370 -#: src/libslic3r/PrintConfig.cpp:1502 src/libslic3r/PrintConfig.cpp:1866 -#: src/libslic3r/PrintConfig.cpp:1872 src/libslic3r/PrintConfig.cpp:1880 -#: src/libslic3r/PrintConfig.cpp:1892 src/libslic3r/PrintConfig.cpp:1902 -#: src/libslic3r/PrintConfig.cpp:1910 src/libslic3r/PrintConfig.cpp:1925 -#: src/libslic3r/PrintConfig.cpp:1946 src/libslic3r/PrintConfig.cpp:1958 -#: src/libslic3r/PrintConfig.cpp:1974 src/libslic3r/PrintConfig.cpp:1983 -#: src/libslic3r/PrintConfig.cpp:1992 src/libslic3r/PrintConfig.cpp:2003 -#: src/libslic3r/PrintConfig.cpp:2017 src/libslic3r/PrintConfig.cpp:2025 -#: src/libslic3r/PrintConfig.cpp:2026 src/libslic3r/PrintConfig.cpp:2035 -#: src/libslic3r/PrintConfig.cpp:2043 src/libslic3r/PrintConfig.cpp:2057 +#: 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:311 +#: src/slic3r/GUI/Tab.cpp:1449 src/slic3r/GUI/Tab.cpp:1450 +#: src/libslic3r/ExtrusionEntity.cpp:324 src/libslic3r/ExtrusionEntity.cpp:356 +#: src/libslic3r/PrintConfig.cpp:404 src/libslic3r/PrintConfig.cpp:1610 +#: src/libslic3r/PrintConfig.cpp:2008 src/libslic3r/PrintConfig.cpp:2014 +#: src/libslic3r/PrintConfig.cpp:2022 src/libslic3r/PrintConfig.cpp:2034 +#: src/libslic3r/PrintConfig.cpp:2044 src/libslic3r/PrintConfig.cpp:2052 +#: src/libslic3r/PrintConfig.cpp:2067 src/libslic3r/PrintConfig.cpp:2088 +#: src/libslic3r/PrintConfig.cpp:2100 src/libslic3r/PrintConfig.cpp:2116 +#: src/libslic3r/PrintConfig.cpp:2125 src/libslic3r/PrintConfig.cpp:2134 +#: src/libslic3r/PrintConfig.cpp:2145 src/libslic3r/PrintConfig.cpp:2159 +#: src/libslic3r/PrintConfig.cpp:2167 src/libslic3r/PrintConfig.cpp:2168 +#: src/libslic3r/PrintConfig.cpp:2177 src/libslic3r/PrintConfig.cpp:2185 +#: src/libslic3r/PrintConfig.cpp:2199 msgid "Support material" msgstr "Stützstrukturen" -#: src/slic3r/GUI/GUI_Preview.cpp:247 src/libslic3r/ExtrusionEntity.cpp:320 -#: src/libslic3r/PrintConfig.cpp:1991 +#: src/slic3r/GUI/GUI_Preview.cpp:312 src/libslic3r/ExtrusionEntity.cpp:325 +#: src/libslic3r/ExtrusionEntity.cpp:358 src/libslic3r/PrintConfig.cpp:2133 msgid "Support material interface" msgstr "Schnittstellenmaterial zu den Stützstrukturen" -#: src/libslic3r/PrintConfig.cpp:2044 +#: src/libslic3r/PrintConfig.cpp:2186 msgid "Support material will not be generated for overhangs whose slope angle (90° = vertical) is above the given threshold. In other words, this value represent the most horizontal slope (measured from the horizontal plane) that you can print without support material. Set to zero for automatic detection (recommended)." msgstr "Für Überhänge, deren Neigungswinkel (90° = vertikal) oberhalb der vorgegebenen Schwelle liegt, wird keine Stützstruktur erzeugt. Mit anderen Worten, dieser Wert stellt die größte horizontale Steigung (gemessen von der horizontalen Ebene) dar, die Sie ohne Trägermaterial drucken können. Für die automatische Erkennung auf null setzen (empfohlen)." -#: src/libslic3r/PrintConfig.cpp:1964 +#: src/libslic3r/PrintConfig.cpp:2106 msgid "Support material/raft interface extruder" msgstr "Stützstrukturen/Raft Schnittstellen Extruder" -#: src/libslic3r/PrintConfig.cpp:1937 +#: src/libslic3r/PrintConfig.cpp:2079 msgid "Support material/raft/skirt extruder" msgstr "Stützstrukturen/Raft/Schürzen Extruder" -#: src/slic3r/GUI/Plater.cpp:500 src/libslic3r/PrintConfig.cpp:1901 -#: src/libslic3r/PrintConfig.cpp:2674 +#: src/slic3r/GUI/Plater.cpp:366 src/libslic3r/PrintConfig.cpp:2043 +#: src/libslic3r/PrintConfig.cpp:2838 msgid "Support on build plate only" -msgstr "Stützstrukturen nur auf dem Druckbrett" +msgstr "Stützstrukturen nur auf dem Druckbett" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:888 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:762 msgid "Support parameter change" msgstr "Stützparameter Änderung" -#: src/slic3r/GUI/Tab.cpp:3613 +#: src/slic3r/GUI/Tab.cpp:4023 msgid "Support pillar" msgstr "Stützpfeiler" -#: src/libslic3r/PrintConfig.cpp:2658 -msgid "Support pillar connection mode" -msgstr "Stützpfeiler Verbindungsmodus" - -#: src/libslic3r/PrintConfig.cpp:2648 -msgid "Support pillar diameter" -msgstr "Durchmesser der Stützpfeiler" - -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:55 -#: src/libslic3r/PrintConfig.cpp:2764 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:54 +#: src/libslic3r/PrintConfig.cpp:2928 msgid "Support points density" msgstr "Stützpunktdichte" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1196 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1048 msgid "Support points edit" msgstr "Stützpunkte editieren" -#: src/slic3r/GUI/GUI_ObjectList.cpp:106 src/slic3r/GUI/GUI_ObjectList.cpp:624 -#: src/slic3r/GUI/Plater.cpp:495 src/slic3r/GUI/Tab.cpp:3604 -#: src/slic3r/GUI/Tab.cpp:3605 src/libslic3r/PrintConfig.cpp:2614 -#: src/libslic3r/PrintConfig.cpp:2621 src/libslic3r/PrintConfig.cpp:2630 -#: src/libslic3r/PrintConfig.cpp:2639 src/libslic3r/PrintConfig.cpp:2649 -#: src/libslic3r/PrintConfig.cpp:2675 src/libslic3r/PrintConfig.cpp:2682 -#: src/libslic3r/PrintConfig.cpp:2693 src/libslic3r/PrintConfig.cpp:2703 -#: src/libslic3r/PrintConfig.cpp:2712 src/libslic3r/PrintConfig.cpp:2725 -#: src/libslic3r/PrintConfig.cpp:2735 src/libslic3r/PrintConfig.cpp:2744 -#: src/libslic3r/PrintConfig.cpp:2754 src/libslic3r/PrintConfig.cpp:2765 -#: src/libslic3r/PrintConfig.cpp:2773 +#: src/slic3r/GUI/GUI_ObjectList.cpp:104 src/slic3r/GUI/GUI_ObjectList.cpp:663 +#: src/slic3r/GUI/Plater.cpp:361 src/slic3r/GUI/Tab.cpp:4014 +#: src/slic3r/GUI/Tab.cpp:4015 src/libslic3r/PrintConfig.cpp:2757 +#: src/libslic3r/PrintConfig.cpp:2764 src/libslic3r/PrintConfig.cpp:2773 +#: src/libslic3r/PrintConfig.cpp:2782 src/libslic3r/PrintConfig.cpp:2792 +#: src/libslic3r/PrintConfig.cpp:2802 src/libslic3r/PrintConfig.cpp:2839 +#: src/libslic3r/PrintConfig.cpp:2846 src/libslic3r/PrintConfig.cpp:2857 +#: src/libslic3r/PrintConfig.cpp:2867 src/libslic3r/PrintConfig.cpp:2876 +#: src/libslic3r/PrintConfig.cpp:2889 src/libslic3r/PrintConfig.cpp:2899 +#: src/libslic3r/PrintConfig.cpp:2908 src/libslic3r/PrintConfig.cpp:2918 +#: src/libslic3r/PrintConfig.cpp:2929 src/libslic3r/PrintConfig.cpp:2937 msgid "Supports" msgstr "Stützen" -#: src/slic3r/GUI/Plater.cpp:1194 +#: src/slic3r/GUI/Plater.cpp:1103 msgid "supports and pad" msgstr "Stützen und Grundschicht" -#: src/libslic3r/PrintConfig.cpp:1092 +#: src/libslic3r/PrintConfig.cpp:1185 msgid "Supports remaining times" msgstr "Unterstützt Restzeit" -#: src/libslic3r/PrintConfig.cpp:1101 +#: src/libslic3r/PrintConfig.cpp:1194 msgid "Supports stealth mode" msgstr "Unterstützt Stealth Modus" -#: src/slic3r/GUI/ConfigManipulation.cpp:159 +#: src/slic3r/GUI/ConfigManipulation.cpp:158 msgid "" "Supports work better, if the following feature is enabled:\n" "- Detect bridging perimeters" @@ -7522,44 +8631,60 @@ msgstr "" "Stützen funktionieren besser, wenn die folgende Funktion aktiviert ist:\n" "- Erkennen von Umfangbrücken" -#: src/slic3r/GUI/Preferences.cpp:87 +#: src/slic3r/GUI/Preferences.cpp:104 msgid "Suppress \" - default - \" presets" msgstr "\"Standard\"-Einstellungen unterdrücken" -#: src/slic3r/GUI/Preferences.cpp:89 +#: src/slic3r/GUI/Preferences.cpp:106 msgid "Suppress \" - default - \" presets in the Print / Filament / Printer selections once there are any other valid presets available." msgstr "\"Standard\"-Einstellungen in den Auswahlen für Druck / Filament / Drucker unterdrücken, falls andere gültige Voreinstellungen vorhanden sind." -#: src/slic3r/GUI/MainFrame.cpp:826 +#: src/slic3r/GUI/MainFrame.cpp:1527 msgid "SVG" msgstr "SVG" -#: src/slic3r/GUI/DoubleSlider.cpp:1144 +#: src/slic3r/GUI/Mouse3DController.cpp:318 +msgid "Swap Y/Z axes" +msgstr "Y/Z-Achsen vertauschen" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:179 +msgid "Switch between Editor/Preview" +msgstr "Umschalten zwischen Editor/Vorschau" + +#: src/slic3r/GUI/DoubleSlider.cpp:1273 msgid "Switch code to Change extruder" msgstr "Code umschalten auf Extruder wechseln" -#: src/slic3r/GUI/DoubleSlider.cpp:1179 +#: src/slic3r/GUI/DoubleSlider.cpp:1306 msgid "Switch code to Color change (%1%) for:" msgstr "Umschalten des Codes auf Farbwechsel (%1%) für:" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:140 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:136 msgid "Switch to 3D" msgstr "Zeige 3D" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1376 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1223 msgid "Switch to editing mode" msgstr "Zum Bearbeitungsmodus umschalten" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:141 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:137 msgid "Switch to Preview" msgstr "Wechseln zur Vorschau" -#: src/slic3r/GUI/wxExtensions.cpp:703 +#: src/slic3r/GUI/GLCanvas3D.cpp:4302 src/slic3r/GUI/GLCanvas3D.cpp:4939 +msgid "Switch to Settings" +msgstr "Zu Einstellungen wechseln" + +#: src/slic3r/GUI/wxExtensions.cpp:623 #, c-format msgid "Switch to the %s mode" msgstr "Wechseln zum %s Modus" -#: src/slic3r/GUI/GUI_App.cpp:882 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:542 +msgid "Switching Presets: Unsaved Changes" +msgstr "Voreinstellungen umschalten: Nicht gespeicherte Änderungen" + +#: src/slic3r/GUI/GUI_App.cpp:1608 msgid "" "Switching the language will trigger application restart.\n" "You will lose content of the plater." @@ -7577,65 +8702,72 @@ msgstr "" "\n" "Wollen Sie fortfahren?" -#: src/slic3r/GUI/Tab.cpp:1014 +#: src/slic3r/GUI/Tab.cpp:1332 msgid "symbolic profile name" msgstr "symbolischer Profilname" -#: src/libslic3r/PrintConfig.cpp:2036 +#: src/libslic3r/PrintConfig.cpp:2178 msgid "Synchronize support layers with the object print layers. This is useful with multi-material printers, where the extruder switch is expensive." msgstr "Stützschichten mit den Druckschichten des Objekts synchronisieren. Dies ist nützlich bei Multi-Material-Druckern, bei denen der Wechsel des Extruders kostenaufwendig ist." -#: src/libslic3r/PrintConfig.cpp:2034 +#: src/libslic3r/PrintConfig.cpp:2176 msgid "Synchronize with object layers" msgstr "Mit Objektschichten synchronisieren" -#: src/slic3r/GUI/MainFrame.cpp:699 +#: src/slic3r/GUI/MainFrame.cpp:924 src/slic3r/GUI/MainFrame.cpp:1323 msgid "System &Info" msgstr "System&informationen" -#: src/slic3r/GUI/SysInfoDialog.cpp:78 +#: src/slic3r/GUI/SysInfoDialog.cpp:90 src/slic3r/GUI/SysInfoDialog.cpp:92 msgid "System Information" msgstr "Systeminformationen" -#: src/slic3r/GUI/Preset.cpp:1109 src/slic3r/GUI/Preset.cpp:1164 -#: src/slic3r/GUI/Preset.cpp:1242 src/slic3r/GUI/Preset.cpp:1284 -#: src/slic3r/GUI/PresetBundle.cpp:1583 src/slic3r/GUI/PresetBundle.cpp:1672 +#: src/slic3r/GUI/PresetComboBoxes.cpp:188 +#: src/slic3r/GUI/PresetComboBoxes.cpp:226 +#: src/slic3r/GUI/PresetComboBoxes.cpp:724 +#: src/slic3r/GUI/PresetComboBoxes.cpp:774 +#: src/slic3r/GUI/PresetComboBoxes.cpp:886 +#: src/slic3r/GUI/PresetComboBoxes.cpp:930 msgid "System presets" msgstr "Systemvoreinstellungen" -#: src/slic3r/GUI/GUI_App.cpp:801 +#: src/slic3r/GUI/GUI_App.cpp:1481 msgid "Take Configuration &Snapshot" msgstr "Erfa&ssen einer Konfigurations-Momentaufnahme" -#: src/slic3r/GUI/GUI_App.cpp:839 +#: src/slic3r/GUI/GUI_App.cpp:1540 msgid "Taking configuration snapshot" msgstr "Ich erfasse eine Momentaufnahme der Konfiguration" -#: src/slic3r/GUI/Tab.cpp:1433 src/libslic3r/PrintConfig.cpp:2067 +#: src/slic3r/GUI/Tab.cpp:1779 msgid "Temperature" msgstr "Temperatur" -#: src/libslic3r/PrintConfig.cpp:1804 +#: src/libslic3r/PrintConfig.cpp:1919 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 "Der anzuwendende Temperaturunterschied, wenn kein Extruder aktiv ist. Dies aktiviert eine \"Wegwerf-\"Schürze über die ganze Druckhöhe, auf der die Düsen periodisch gereinigt werden." -#: src/libslic3r/PrintConfig.cpp:1803 +#: src/libslic3r/PrintConfig.cpp:1918 msgid "Temperature variation" msgstr "Temperaturen" -#: src/slic3r/GUI/ConfigWizard.cpp:1017 +#: src/slic3r/GUI/ConfigWizard.cpp:1383 msgid "Temperatures" msgstr "Temperaturen" -#: src/slic3r/GUI/Tab.cpp:1677 src/slic3r/GUI/Tab.cpp:1915 +#: src/slic3r/GUI/Tab.cpp:2215 +msgid "Template Custom G-code" +msgstr "Vorlage Benutzerdefinierter G-Code" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:284 msgid "Test" msgstr "Test" -#: src/slic3r/GUI/BedShapeDialog.cpp:172 +#: src/slic3r/GUI/BedShapeDialog.cpp:315 msgid "Texture" msgstr "Textur" -#: src/slic3r/GUI/ConfigManipulation.cpp:208 +#: src/slic3r/GUI/ConfigManipulation.cpp:207 msgid "The %1% infill pattern is not supposed to work at 100%% density." msgstr "Das %1% Füllmuster ist nicht für die Arbeit mit 100%% Dichte vorgesehen." @@ -7653,11 +8785,11 @@ msgstr "" "Das %s-Gerät wurde nicht gefunden.\n" "Wenn das Gerät angeschlossen ist, drücken Sie bitte die Reset-Taste neben dem USB-Anschluss...." -#: src/slic3r/GUI/Tab.cpp:976 +#: src/slic3r/GUI/Tab.cpp:1238 msgid "The current custom preset will be detached from the parent system preset." msgstr "Die aktuelle benutzerdefinierte Voreinstellung wird von der Voreinstellung des übergeordneten Systems gelöst." -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:875 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:925 msgid "" "The currently manipulated object is tilted (rotation angles are not multiples of 90°).\n" "Non-uniform scaling of tilted objects is only possible in the World coordinate system,\n" @@ -7667,120 +8799,137 @@ msgstr "" "Eine ungleiche Skalierung von geschwenkten Objekten ist nur im Weltkoordinatensystem möglich,\n" "sobald die Drehung in die Objektkoordinaten eingearbeitet wurde." -#: src/libslic3r/PrintConfig.cpp:2726 +#: src/libslic3r/PrintConfig.cpp:2890 msgid "The default angle for connecting support sticks and junctions." msgstr "Der Standardwinkel für die Verbindung von Stützstäben und Verbindungen." -#: src/libslic3r/SLAPrint.cpp:631 +#: src/libslic3r/SLAPrint.cpp:645 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 "Die Enden der Stützpfeiler werden auf dem Spalt zwischen dem Objekt und der Grundschicht eingesetzt. Der \"Sicherheitsabstand der Stützbasis\" muss größer sein als der Parameter \"Objektabstand Grundschicht\", um dies zu vermeiden." -#: src/libslic3r/PrintConfig.cpp:489 +#: src/libslic3r/PrintConfig.cpp:525 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 "Der Extruder, der verwendet werden soll, falls keine sonstigen Extrudereinstellungen angegeben wurden. Dies übersteuert die Angaben für die Außenkontur- und Infill-Extruder, aber nicht die Angabe des Extruders für die Stützen." -#: src/libslic3r/PrintConfig.cpp:1003 +#: src/libslic3r/PrintConfig.cpp:1047 msgid "The extruder to use when printing infill." msgstr "Extruder der beim Infill benutzt wird." -#: src/libslic3r/PrintConfig.cpp:1410 +#: src/libslic3r/PrintConfig.cpp:1518 msgid "The extruder to use when printing perimeters and brim. First extruder is 1." msgstr "Extruder der beim Umfang und Rand Drucken benutzt werden soll. Der erste Extruder ist 1." -#: src/libslic3r/PrintConfig.cpp:1738 +#: src/libslic3r/PrintConfig.cpp:1853 msgid "The extruder to use when printing solid infill." msgstr "Der Extruder der beim Drucken von massivem Infill benutzt werden soll." -#: src/libslic3r/PrintConfig.cpp:1966 +#: src/libslic3r/PrintConfig.cpp:2108 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 "Der Extruder, der für den Druck von Schnittstellen zu den Stützstrukturen verwendet wird (1+, oder null um den aktuellen Extruder für die Minimierung von Werkzeugwechseln zu verwenden). Dies betrifft auch den Raft." -#: src/libslic3r/PrintConfig.cpp:1939 +#: src/libslic3r/PrintConfig.cpp:2081 msgid "The extruder to use when printing support material, raft and skirt (1+, 0 to use the current extruder to minimize tool changes)." msgstr "Der Extruder, der für den Druck von Stützstrukturen, Raft und Schürze verwendet wird (1+, oder null um den aktuellen Extruder für die Minimierung von Werkzeugwechseln zu verwenden)." -#: src/libslic3r/PrintConfig.cpp:727 +#: src/libslic3r/PrintConfig.cpp:763 msgid "The filament material type for use in custom G-codes." msgstr "Die Materialart des Filaments zur Verwendung in benutzerdefinierten G-Codes." -#: src/libslic3r/PrintConfig.cpp:3494 +#: src/libslic3r/PrintConfig.cpp:3693 msgid "The file where the output will be written (if not specified, it will be based on the input file)." msgstr "Die Datei, in die die Ausgabe geschrieben wird (falls nicht angegeben, basiert sie auf der Eingabedatei)." -#: src/libslic3r/PrintConfig.cpp:1102 +#: src/libslic3r/PrintConfig.cpp:1195 msgid "The firmware supports stealth mode" msgstr "Die Firmware unterstützt den Stealth Modus" -#: src/libslic3r/PrintConfig.cpp:120 +#: src/libslic3r/PrintConfig.cpp:122 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 "Die erste Schicht wird in der XY-Ebene um den vorgegebenen Wert verkleinert, um das Ausquetschen in der ersten Schicht (\"Elephant Foot\"-Effekt) zu kompensieren." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3820 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3927 src/slic3r/GUI/Tab.cpp:3457 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4283 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4410 +#: src/slic3r/GUI/SavePresetDialog.cpp:117 msgid "the following characters are not allowed:" msgstr "die folgenden Zeichen sind nicht erlaubt:" -#: src/slic3r/GUI/ConfigWizard.cpp:1830 +#: src/slic3r/GUI/ConfigWizard.cpp:2257 msgid "The following FFF printer models have no filament selected:" msgstr "Bei den folgenden FFF-Druckermodellen wurde kein Filament ausgewählt:" -#: src/slic3r/GUI/ConfigWizard.cpp:1848 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1004 +msgid "The following presets were modified:" +msgstr "Die folgenden Voreinstellungen wurden geändert:" + +#: 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:" -#: src/slic3r/GUI/Tab.cpp:3461 +#: src/slic3r/GUI/SavePresetDialog.cpp:125 msgid "the following suffix is not allowed:" msgstr "das folgenden Suffix ist nicht erlaubt:" -#: src/libslic3r/PrintConfig.cpp:2871 +#: src/libslic3r/PrintConfig.cpp:3035 msgid "The gap between the object bottom and the generated pad in zero elevation mode." msgstr "Der Abstand zwischen dem Objektboden und der erzeugten Grundschicht im Nullhöhenmodus." -#: src/libslic3r/PrintConfig.cpp:2704 +#: src/libslic3r/PrintConfig.cpp:2868 msgid "The height of the pillar base cone" msgstr "Die Höhe des Pfeilergrundkegels" -#: src/slic3r/GUI/DoubleSlider.cpp:1922 +#: src/slic3r/GUI/DoubleSlider.cpp:2140 msgid "The last color change data was saved for a multi extruder printing with tool changes for whole print." msgstr "Die letzten Farbwechsel-Daten wurden für einen Multi-Extruder-Druck mit Werkzeugwechsel für den gesamten Druck gespeichert." -#: src/slic3r/GUI/DoubleSlider.cpp:1900 src/slic3r/GUI/DoubleSlider.cpp:1916 +#: src/slic3r/GUI/DoubleSlider.cpp:2119 src/slic3r/GUI/DoubleSlider.cpp:2134 msgid "The last color change data was saved for a multi extruder printing." msgstr "Die letzten Farbwechsel-Daten wurden für einen Multi-Extruder-Druck gespeichert." -#: src/slic3r/GUI/DoubleSlider.cpp:1899 +#: src/slic3r/GUI/DoubleSlider.cpp:2118 msgid "The last color change data was saved for a single extruder printing." msgstr "Die letzten Farbwechsel-Daten wurden für einen Einzel-Extruder-Druck gespeichert." -#: src/libslic3r/PrintConfig.cpp:2745 +#: src/libslic3r/PrintConfig.cpp:2909 msgid "The max distance of two pillars to get linked with each other. A zero value will prohibit pillar cascading." msgstr "Der maximale Abstand zwischen 2 Pfeilern, die miteinander verbunden werden. Ein Wert von null verhindert die Kaskadierung von Pfeilern." -#: src/libslic3r/PrintConfig.cpp:2736 +#: src/libslic3r/PrintConfig.cpp:2900 msgid "The max length of a bridge" msgstr "Die maximale Länge einer Überbrückung" -#: src/libslic3r/PrintConfig.cpp:2714 +#: 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." -#: src/libslic3r/PrintConfig.cpp:185 +#: src/slic3r/GUI/SavePresetDialog.cpp:142 +msgid "The name cannot be empty." +msgstr "Name kann nicht leer sein." + +#: 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." -#: src/libslic3r/PrintConfig.cpp:2143 +#: src/libslic3r/PrintConfig.cpp:2286 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 "Die Anzahl der obersten Massivschichten wird über top_solid_layers erhöht, wenn es notwendig ist, um die Mindeststärke der Oberschale zu erfüllen. Dies ist nützlich, um einen Kisseneffekt beim Drucken mit variabler Lagenhöhe zu verhindern." -#: src/libslic3r/PrintConfig.cpp:2277 +#: src/slic3r/GUI/Plater.cpp:2326 +msgid "The object appears to be saved in inches" +msgstr "Das Objekt scheint in Zoll gespeichert zu sein" + +#: src/libslic3r/PrintConfig.cpp:2420 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 "Das Objekt wird in der XY-Ebene um den konfigurierten Wert (negativ = einwärts, positiv = auswärts) vergrößert/verkleinert. Dies kann bei der Feinabstimmung von Lochgrößen hilfreich sein." -#: src/libslic3r/PrintConfig.cpp:1503 +#: src/libslic3r/PrintConfig.cpp:1611 msgid "The object will be raised by this number of layers, and support material will be generated under it." msgstr "Das Objekt wird um diese Anzahl von Schichten angehoben, und darunter wird Trägermaterial erzeugt." -#: src/libslic3r/PrintConfig.cpp:2424 +#: src/libslic3r/PrintConfig.cpp:2803 +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 "Der Prozentsatz der im Vergleich zum normalen Pfeilerdurchmesser kleineren Pfeiler, die in problematischen Bereichen eingesetzt werden, in die ein normaler Pfeiler nicht passt." + +#: src/libslic3r/PrintConfig.cpp:2567 msgid "" "The percentage of the bed area. \n" "If the print area exceeds the specified value, \n" @@ -7790,39 +8939,51 @@ msgstr "" "Wenn der Druckbereich den angegebenen Wert überschreitet,\n" "wird eine langsame Verkippung verwendet, andernfalls - eine schnelle Verkippung" -#: src/slic3r/GUI/GUI_App.cpp:932 -msgid "The presets on the following tabs were modified" -msgstr "Die Voreinstellungen auf den folgenden Reitern wurden geändert" +#: src/slic3r/GUI/Tab.cpp:3430 +msgid "The physical printer(s) below is based on the preset, you are going to delete." +msgstr "Der (die) untenstehende(n) physische(n) Drucker basiert (basieren) auf der Voreinstellung, die Sie löschen möchten." -#: src/libslic3r/PrintConfig.cpp:1846 +#: src/slic3r/GUI/Tab.cpp:3438 +msgid "The physical printer(s) below is based only on the preset, you are going to delete." +msgstr "Der (die) untenstehende(n) physische(n) Drucker basiert (basieren) nur auf der Voreinstellung, die Sie löschen möchten." + +#: src/slic3r/GUI/GUI_App.cpp:1676 +msgid "The preset(s) modifications are successfully saved" +msgstr "Die Änderungen der Voreinstellung(en) wurden erfolgreich gespeichert" + +#: src/libslic3r/PrintConfig.cpp:1988 msgid "The printer multiplexes filaments into a single hot end." msgstr "Der Drucker multiplext mehrere Filamente in einem Hotend." -#: src/libslic3r/Format/3mf.cpp:1630 +#: src/libslic3r/Format/3mf.cpp:1667 msgid "The selected 3mf file has been saved with a newer version of %1% and is not compatible." msgstr "Die ausgewählte 3mf-Datei wurde mit einer neueren Version von %1% gespeichert und ist nicht kompatibel." -#: src/libslic3r/Format/AMF.cpp:934 +#: src/libslic3r/Format/AMF.cpp:955 msgid "The selected amf file has been saved with a newer version of %1% and is not compatible." msgstr "Die ausgewählte amf-Datei wurde mit einer neueren Version von %1% gespeichert und ist nicht kompatibel." -#: src/slic3r/GUI/BedShapeDialog.cpp:513 +#: src/slic3r/GUI/Plater.cpp:4751 +msgid "The selected file" +msgstr "Die gewählte Datei" + +#: src/slic3r/GUI/BedShapeDialog.cpp:589 msgid "The selected file contains no geometry." msgstr "Die ausgewählte Datei enthält keine Geometrie." -#: src/slic3r/GUI/BedShapeDialog.cpp:517 +#: src/slic3r/GUI/BedShapeDialog.cpp:593 msgid "The selected file contains several disjoint areas. This is not supported." msgstr "Die ausgewählte Datei enthält mehrere nicht zusammenhängende Bereiche. Dies wird nicht unterstützt." -#: src/slic3r/GUI/Plater.cpp:2970 +#: src/slic3r/GUI/Plater.cpp:2763 msgid "The selected object can't be split because it contains more than one volume/material." msgstr "Das ausgewählte Objekt konnte nicht getrennt werden, weil es aus mehr als einem Volumen/Material besteht." -#: src/slic3r/GUI/GUI_ObjectList.cpp:2270 src/slic3r/GUI/Plater.cpp:2978 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2436 src/slic3r/GUI/Plater.cpp:2771 msgid "The selected object couldn't be split because it contains only one part." msgstr "Das ausgewählte Objekt konnte nicht getrennt werden, da es nur aus einem Teil besteht." -#: src/slic3r/GUI/MainFrame.cpp:461 +#: src/slic3r/GUI/MainFrame.cpp:1003 msgid "" "The selected project is no longer available.\n" "Do you want to remove it from the recent projects list?" @@ -7830,7 +8991,7 @@ msgstr "" "Das ausgewählte Projekt ist nicht mehr verfügbar.\n" "Wollen Sie es aus der Liste der letzten Projekte entfernen?" -#: src/slic3r/GUI/DoubleSlider.cpp:998 +#: src/slic3r/GUI/DoubleSlider.cpp:1121 msgid "" "The sequential print is on.\n" "It's impossible to apply any custom G-code for objects printing sequentually.\n" @@ -7840,20 +9001,24 @@ msgstr "" "Es ist unmöglich, einen benutzerdefinierten G-Code für Objekte anzuwenden, die sequentiell gedruckt werden.\n" "Dieser Code wird bei der G-Code-Generierung nicht verarbeitet." -#: src/libslic3r/PrintConfig.cpp:2846 +#: src/slic3r/GUI/ConfigWizard.cpp:1187 +msgid "The size of the object can be specified in inches" +msgstr "Die Größe des Objekts kann in Zoll angegeben werden" + +#: src/libslic3r/PrintConfig.cpp:3010 msgid "The slope of the pad wall relative to the bed plane. 90 degrees means straight walls." msgstr "Die Neigung der Grundschichtwand in Bezug auf die Druckbettebene. 90 Grad bedeutet gerade Wände." -#: src/libslic3r/PrintConfig.cpp:1614 +#: src/libslic3r/PrintConfig.cpp:1722 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 "Die Geschwindigkeit, mit der ein Filament nach dem Einzug wieder in den Extruder vorgeschoben wird. Falls null, wird die Einzugsgeschwindigkeit verwendet." -#: src/libslic3r/PrintConfig.cpp:1606 +#: src/libslic3r/PrintConfig.cpp:1714 msgid "The speed for retractions (it only applies to the extruder motor)." msgstr "Die Einzugsgeschwindigkeit (sie betrifft nur den Extruderantrieb)." -#: src/slic3r/GUI/ConfigManipulation.cpp:81 -#, no-c-format +#: src/slic3r/GUI/ConfigManipulation.cpp:80 +#, c-format msgid "" "The Spiral Vase mode requires:\n" "- one perimeter\n" @@ -7871,41 +9036,42 @@ msgstr "" "- Vertikale Schalenstärke sicherstellen aktiv\n" "- Dünne Wände erkennen nicht aktiv" -#: src/libslic3r/Print.cpp:1237 +#: 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:1244 +#: 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." -#: src/slic3r/GUI/Tab.cpp:3068 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:464 msgid "The supplied name is empty. It can't be saved." msgstr "Der angegebene Name ist leer. Die Speicherung kann nicht erfolgen." -#: src/slic3r/GUI/Tab.cpp:3465 +#: src/slic3r/GUI/SavePresetDialog.cpp:131 msgid "The supplied name is not available." msgstr "Der angegebene Name ist nicht verfügbar." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3819 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3926 src/slic3r/GUI/Tab.cpp:3456 -#: src/slic3r/GUI/Tab.cpp:3460 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4282 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4409 +#: src/slic3r/GUI/SavePresetDialog.cpp:116 +#: src/slic3r/GUI/SavePresetDialog.cpp:124 msgid "The supplied name is not valid;" msgstr "Der angegebene Name ist ungültig;" -#: src/libslic3r/Print.cpp:1222 +#: src/libslic3r/Print.cpp:1248 msgid "The supplied settings will cause an empty print." msgstr "Die vorgenommenen Einstellungen führen zu einem leeren Druck." -#: src/libslic3r/PrintConfig.cpp:2789 +#: src/libslic3r/PrintConfig.cpp:2953 msgid "The thickness of the pad and its optional cavity walls." msgstr "Die Stärke der Grundschicht und seine optionalen Hohlraumwände." -#: src/libslic3r/PrintConfig.cpp:1911 +#: 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." -#: src/slic3r/GUI/Tab.cpp:2575 +#: src/slic3r/GUI/Tab.cpp:2731 msgid "" "The Wipe option is not available when using the Firmware Retraction mode.\n" "\n" @@ -7915,11 +9081,11 @@ msgstr "" "\n" "Soll ich sie ausschalten, um den Firmware-Einzug zu aktivieren?" -#: src/libslic3r/Print.cpp:1268 +#: src/libslic3r/Print.cpp:1294 msgid "The Wipe Tower currently does not support volumetric E (use_volumetric_e=0)." msgstr "Der Reinigungsturm unterstützt derzeit kein volumetrisches E (use_volumetric_e=0)." -#: src/slic3r/GUI/ConfigManipulation.cpp:115 +#: src/slic3r/GUI/ConfigManipulation.cpp:114 msgid "" "The Wipe Tower currently supports the non-soluble supports only\n" "if they are printed with the current extruder without triggering a tool change.\n" @@ -7928,51 +9094,55 @@ msgstr "" "Der Reinigungsturm unterstützt derzeit nur die unlöslichen Stützen, wenn sie mit dem aktuellen Extruder gedruckt werden, ohne einen Werkzeugwechsel auszulösen.\n" "(sowohl der Stützstruktur-Extruder als auch der Stützstruktur-Schnittstellen-Extruder müssen auf 0 eingestellt sein)" -#: src/libslic3r/Print.cpp:1400 +#: src/libslic3r/Print.cpp:1426 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 support_material_extruder and support_material_interface_extruder need to be set to 0)." msgstr "Der Reinigungsturm unterstützt zur Zeit nichtlösliche Stützen nur, falls sie mit dem aktuellen Extruder ohne einen Werkzeugwechsel gedruckt werden (sowohl support_material_extruder wie auch support_material_interface_extruder müssen auf null gesetzt werden)." -#: src/libslic3r/Print.cpp:1270 +#: src/libslic3r/Print.cpp:1296 msgid "The Wipe Tower is currently not supported for multimaterial sequential prints." msgstr "Der Wischturm wird derzeit nicht für sequentielle Multimaterialdrucke unterstützt." -#: src/libslic3r/Print.cpp:1262 -msgid "The Wipe Tower is currently only supported for the Marlin, RepRap/Sprinter and Repetier G-code flavors." -msgstr "Der Reinigungsturm wird derzeit nur für die Varianten Marlin und RepRap/Sprinter und Repetier G-Code unterstützt." +#: src/libslic3r/Print.cpp:1290 +msgid "The Wipe Tower is currently only supported for the Marlin, RepRap/Sprinter, RepRapFirmware and Repetier G-code flavors." +msgstr "Der Wischturm wird derzeit nur für die Varianten Marlin, RepRap/Sprinter, RepRapFirmware und Repetier-G-Code unterstützt." -#: src/libslic3r/Print.cpp:1264 +#: src/libslic3r/Print.cpp:1290 msgid "The Wipe Tower is currently only supported with the relative extruder addressing (use_relative_e_distances=1)." msgstr "Der Wischturm wird derzeit nur mit relativer Extruder-Adressierung unterstützt ((use_relative_e_distances=1)." -#: src/libslic3r/Print.cpp:1293 +#: src/libslic3r/Print.cpp:1319 msgid "The Wipe Tower is only supported for multiple objects if they are printed over an equal number of raft layers" msgstr "Der Wischturm wird nur für mehrere Objekte unterstützt, wenn diese mit der gleichen Anzahl von Raftschichten gedruckt werden" -#: src/libslic3r/Print.cpp:1295 +#: src/libslic3r/Print.cpp:1321 msgid "The Wipe Tower is only supported for multiple objects if they are printed with the same support_material_contact_distance" msgstr "Der Wischturm wird nur für mehrere Objekte unterstützt, wenn diese mit der gleichen support_material_contact_distance gedruckt werden" -#: src/libslic3r/Print.cpp:1297 +#: src/libslic3r/Print.cpp:1323 msgid "The Wipe Tower is only supported for multiple objects if they are sliced equally." msgstr "Der Wischturm wird nur für mehrere Objekte unterstützt, wenn diese gleich gesliced werden." -#: src/libslic3r/Print.cpp:1291 +#: src/libslic3r/Print.cpp:1317 msgid "The Wipe Tower is only supported for multiple objects if they have equal layer heights" msgstr "Der Wischturm wird nur für mehrere Objekte unterstützt, wenn diese die gleiche Schichthöhe haben" -#: src/libslic3r/Print.cpp:1257 +#: src/libslic3r/Print.cpp:1283 msgid "The wipe tower is only supported if all extruders have the same nozzle diameter and use filaments of the same diameter." msgstr "Der Wischturm wird nur unterstützt, wenn alle Extruder den gleichen Düsendurchmesser haben und Filamente mit dem gleichen Durchmesser verwenden." -#: src/libslic3r/Print.cpp:1339 +#: src/libslic3r/Print.cpp:1365 msgid "The Wipe tower is only supported if all objects have the same variable layer height" msgstr "Der Reinigungsturm wird nur unterstützt, wenn alle Objekte die gleiche variable Schichthöhe haben" -#: src/libslic3r/SLAPrintSteps.cpp:621 +#: src/slic3r/GUI/Plater.cpp:3563 +msgid "There are active warnings concerning sliced models:" +msgstr "Es gibt aktive Warnungen zu gesliceten Modellen:" + +#: src/libslic3r/SLAPrintSteps.cpp:619 msgid "There are unprintable objects. Try to adjust support settings to make the objects printable." msgstr "Es gibt nicht druckbare Objekte. Versuchen Sie, die Stützeinstellungen anzupassen, um die Objekte druckbar zu machen." -#: src/slic3r/GUI/DoubleSlider.cpp:1030 +#: src/slic3r/GUI/DoubleSlider.cpp:1155 msgid "" "There is a color change for extruder that has not been used before.\n" "Check your settings to avoid redundant color changes." @@ -7980,7 +9150,7 @@ msgstr "" "Es gibt einen Farbwechsel für den Extruder, der bisher noch nicht verwendet wurde.\n" "Überprüfen Sie Ihre Einstellungen, um überflüssige Farbwechsel zu vermeiden." -#: src/slic3r/GUI/DoubleSlider.cpp:1024 +#: src/slic3r/GUI/DoubleSlider.cpp:1149 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." @@ -7988,7 +9158,7 @@ msgstr "" "Es gibt einen Farbwechsel für den Extruder, der nicht vor dem Ende des Druckauftrags verwendet wird.\n" "Dieser Code wird bei der G-Code-Generierung nicht verarbeitet." -#: src/slic3r/GUI/DoubleSlider.cpp:1027 +#: src/slic3r/GUI/DoubleSlider.cpp:1152 msgid "" "There is an extruder change set to the same extruder.\n" "This code won't be processed during G-code generation." @@ -7996,12 +9166,16 @@ msgstr "" "Es gibt einen Extruderwechsel, der auf denselben Extruder eingestellt ist.\n" "Dieser Code wird während der G-Code-Generierung nicht verarbeitet." +#: src/libslic3r/GCode.cpp:604 +msgid "There is an object with no extrusions on the first layer." +msgstr "Es gibt ein Objekt ohne Extrusionen in der ersten Schicht." + #: src/slic3r/GUI/UpdateDialogs.cpp:225 #, c-format msgid "This %s version: %s" msgstr "Diese %s Version: %s" -#: src/slic3r/GUI/Tab.cpp:982 +#: src/slic3r/GUI/Tab.cpp:1244 msgid "" "This action is not revertable.\n" "Do you want to proceed?" @@ -8009,79 +9183,79 @@ msgstr "" "Diese Aktion ist nicht umkehrbar.\n" "Wollen Sie fortfahren?" -#: src/libslic3r/PrintConfig.cpp:165 +#: src/libslic3r/PrintConfig.cpp:199 msgid "This code is inserted between objects when using sequential printing. By default extruder and bed temperature are reset using non-wait command; however if M104, M109, M140 or M190 are detected in this custom code, Slic3r will not add temperature commands. Note that you can use placeholder variables for all Slic3r settings, so you can put a \"M109 S[first_layer_temperature]\" command wherever you want." msgstr "Dieser Code wird beim sequentiellen Drucken zwischen Objekten eingefügt. Standardmäßig werden Extruder- und Betttemperatur mit dem Befehl, der nicht auf die Änderung wartet, zurückgesetzt. Wenn jedoch M104, M109, M140 oder M190 in diesem benutzerdefinierten Code erkannt werden, fügt Slic3r keine Temperaturbefehle hinzu. Beachten Sie, dass Sie Platzhaltervariablen für alle PrusaSlicer-Einstellungen verwenden können, so dass Sie einen \"M109 S[first_layer_temperature]\"-Befehl an beliebiger Stelle platzieren können." -#: src/libslic3r/PrintConfig.cpp:1081 +#: src/libslic3r/PrintConfig.cpp:1174 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 use placeholder variables for all Slic3r settings as well as [layer_num] and [layer_z]." msgstr "Dieser benutzerdefinierte Code wird bei jedem Schichtwechsel eingefügt, direkt nach der Z-Bewegung und bevor der Extruder zum ersten Lagenpunkt fährt. Beachten Sie, dass Sie Platzhaltervariablen für alle Slic3r-Einstellungen sowie [layer_num] und [layer_z] verwenden können." -#: src/libslic3r/PrintConfig.cpp:154 +#: src/libslic3r/PrintConfig.cpp:188 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 "Dieser benutzerdefinierte Code wird bei jedem Lagenwechsel, unmittelbar vor der Z Bewegung, eingefügt. Beachten Sie, dass Sie Platzhaltervariablen für alle PrusaSlicer-Einstellungen sowie [layer_num] und [layer_z] verwenden können." -#: src/libslic3r/PrintConfig.cpp:2094 +#: src/libslic3r/PrintConfig.cpp:2237 msgid "This custom code is inserted before every toolchange. Placeholder variables for all PrusaSlicer settings as well as {previous_extruder} and {next_extruder} can be used. When a tool-changing command which changes to the correct extruder is included (such as T{next_extruder}), PrusaSlicer will emit no other such command. It is therefore possible to script custom behaviour both before and after the toolchange." msgstr "Dieser benutzerdefinierte Code wird vor jedem Werkzeugwechsel eingefügt. Platzhaltervariablen für alle PrusaSlicer-Einstellungen sowie {previous_extruder} und {next_extruder} können verwendet werden. Wenn ein Werkzeugwechselbefehl enthalten ist, der zum richtigen Extruder wechselt (z.B. T{next_extruder}), gibt PrusaSlicer keinen anderen solchen Befehl aus. Es ist daher möglich, benutzerdefiniertes Verhalten sowohl vor als auch nach dem Werkzeugwechsel zu skripten." -#: src/libslic3r/PrintConfig.cpp:396 +#: src/libslic3r/PrintConfig.cpp:430 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 multimaterial printers). Note that you can use placeholder variables for all PrusaSlicer settings. If you have multiple extruders, the gcode is processed in extruder order." msgstr "Dieser Endvorgang wird am Ende der Ausgabedatei, vor dem G-Code des Druckerendes (und vor jedem Werkzeugwechsel von diesem Filament bei Multimaterialdruckern) eingefügt. Beachten Sie, dass Sie Platzhaltervariablen für alle PrusaSlicer-Einstellungen verwenden können. Wenn Sie mehrere Extruder haben, wird der gcode in Extruderreihenfolge verarbeitet." -#: src/libslic3r/PrintConfig.cpp:386 +#: src/libslic3r/PrintConfig.cpp:420 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 "Diese Endprozedur wird am Ende der Ausgabedatei eingefügt. Beachten Sie, dass Sie Platzhaltervariablen für alle PrusaSlicer-Einstellungen verwenden können." -#: src/libslic3r/PrintConfig.cpp:1258 src/libslic3r/PrintConfig.cpp:1269 +#: src/libslic3r/PrintConfig.cpp:1366 src/libslic3r/PrintConfig.cpp:1377 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 of 1.8 mm³/s (0.45mm extrusion width, 0.2mm extrusion height, feedrate 20 mm/s) to 5.4 mm³/s (feedrate 60 mm/s) will take at least 2 seconds." msgstr "Diese experimentelle Einstellung beschränkt die Änderungsgeschwindigkeit der Extrusionsmenge. Ein Wert von 1.8 mm³/s² gewährleistet, dass eine Änderung der Extrusionsmenge von 1.8 mm³/s (0.45mm Extrusionsbreite, 0.2mm Extrusionshöhe, Vorschub 20 mm/s) zu 5.4 mm³/s (Vorschub 60 mm/s) mindestens 2 Sekunden dauern wird." -#: src/libslic3r/PrintConfig.cpp:1248 +#: src/libslic3r/PrintConfig.cpp:1356 msgid "This experimental setting is used to set the maximum volumetric speed your extruder supports." msgstr "Diese experimentelle Einstellung gibt die maximale volumetrische Geschwindigkeit an, die von Ihrem Extruder unterstützt wird." -#: src/libslic3r/PrintConfig.cpp:2162 +#: src/libslic3r/PrintConfig.cpp:2305 msgid "This experimental setting uses G10 and G11 commands to have the firmware handle the retraction. This is only supported in recent Marlin." msgstr "Diese experimentelle Einstellung benutzt G10 und G11 Befehle, damit die Druckerfirmware den Einzug übernimmt. Dies wird nur von neueren Marlin-Versionen unterstützt." -#: src/libslic3r/PrintConfig.cpp:2176 +#: src/libslic3r/PrintConfig.cpp:2319 msgid "This experimental setting uses outputs the E values in cubic millimeters instead of linear millimeters. If your firmware doesn't already know filament diameter(s), you can put commands like 'M200 D[filament_diameter_0] T0' in your start G-code in order to turn volumetric mode on and use the filament diameter associated to the filament selected in Slic3r. This is only supported in recent Marlin." msgstr "Diese experimentelle Einstellung generiert E-Koordinaten in Kubikmillimetern stat in linearen Millimetern. Wenn die Firmware den Filamentdurchmesser noch nicht kennt, können Sie Befehle wie 'M200 D[filament_diameter_0] T0' in den Start-G-Code eingeben, um den volumetrischen Modus zu aktivieren und den in PrusaSlicer angegebenen Filamentdurchmesser zu benutzen. Dies wird nur von neueren Marlin-Versionen unterstützt." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3972 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4459 msgid "This extruder will be set for selected items" msgstr "Dieser Extruder wird den gewählten Elementen zugeordnet" -#: src/libslic3r/PrintConfig.cpp:224 +#: 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 "Diese Einstellung beeinflusst den Materialausstoss bei Brücken. Sie können den Wert leicht verringern, um die Extrusionsfäden zu strecken und ein Durchhängen zu vermeiden. Die Standardwerte sind aber normalerweise ausreichend und Sie sollten zuerst mit der Lüftergeschwindigkeit experimentieren, bevor Sie diesen Wert verändern." -#: src/libslic3r/PrintConfig.cpp:546 +#: 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 "Dieser Faktor ändert die Extrusionsmenge proportional. Sie müssen diese Einstellung möglicherweise anpassen, um schöne Oberflächen und korrekte Hüllenstärken zu erhalten. Die üblichen Werte bewegen sich zwischen 0,9 und 1,1. Falls Sie größere Anpassungen eingeben müssen, kontrollieren Sie auch den Filamentdurchmesser und die E-Schritte in Ihrer Firmware." -#: src/libslic3r/PrintConfig.cpp:214 +#: src/libslic3r/PrintConfig.cpp:248 msgid "This fan speed is enforced during all bridges and overhangs." msgstr "Die Lüftergeschwindigkeit, die für Überbrückungen und Überhänge benutzt wird." -#: src/libslic3r/PrintConfig.cpp:992 +#: src/libslic3r/PrintConfig.cpp:1036 msgid "This feature allows to combine infill and speed up your print by extruding thicker infill layers while preserving thin perimeters, thus accuracy." msgstr "Diese Einstellung erlaubt es, Infill zu kombinieren und die Druckdauer zu verringern, indem stärkere Infill-Schichten gedruckt werden, während gleichzeitig dünne Außenkonturen und damit die Genauigkeit erhalten bleiben." -#: src/libslic3r/PrintConfig.cpp:1746 +#: src/libslic3r/PrintConfig.cpp:1861 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:1795 +#: 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/slic3r/GUI/Plater.cpp:2367 +#: 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 "Diese Datei kann nicht im einfachen Modus geladen werden. Möchten Sie in den fortgeschrittenen Modus wechseln?" -#: src/slic3r/GUI/Plater.cpp:2357 +#: src/slic3r/GUI/Plater.cpp:2319 msgid "" "This file contains several objects positioned at multiple heights.\n" "Instead of considering them as multiple objects, should I consider\n" @@ -8105,84 +9279,96 @@ msgstr "" "Möchtest Sie fortfahren und diese Hex-Datei trotzdem flashen?\n" "Bitte fahren Sie nur fort, wenn Sie der festen Überzeugung sind, dass dies das Richtige ist." -#: src/libslic3r/PrintConfig.cpp:314 +#: src/libslic3r/PrintConfig.cpp:348 msgid "This flag enables the automatic cooling logic that adjusts print speed and fan speed according to layer printing time." msgstr "Diese Einstellung aktiviert the Logik, die die Druckgeschwindigkeit und Lüftergeschwindigkeit automatisch gemäß der Schichtdruckdauer regelt." -#: src/slic3r/GUI/Plater.cpp:536 +#: src/slic3r/GUI/Plater.cpp:402 msgid "This flag enables the brim that will be printed around each object on the first layer." msgstr "Dieses Kontrollkästchen aktiviert den Rand (Brim), der um jedes Objekt auf der ersten Ebene gedruckt wird." -#: src/libslic3r/PrintConfig.cpp:1538 +#: src/libslic3r/PrintConfig.cpp:1646 msgid "This flag enforces a retraction whenever a Z move is done." msgstr "Diese Stellung erzwingt einen Einzug bei jeder Z-Bewegung." -#: src/libslic3r/PrintConfig.cpp:2194 +#: src/libslic3r/PrintConfig.cpp:2337 msgid "This flag will move the nozzle while retracting to minimize the possible blob on leaky extruders." msgstr "Diese Einstellung wird die Düse während dem Einzug bewegen, um mögliche Tropfen bei einem undichten Extruder zu minimieren." -#: src/slic3r/GUI/Tab.cpp:953 +#: src/libslic3r/PrintConfig.cpp:1961 +msgid "This G-code will be used as a code for the color change" +msgstr "Dieser G-Code wird als Code für den Farbwechsel verwendet" + +#: src/libslic3r/PrintConfig.cpp:1970 +msgid "This G-code will be used as a code for the pause print" +msgstr "Dieser G-Code wird als Code für die Druckpause verwendet" + +#: src/libslic3r/PrintConfig.cpp:1979 +msgid "This G-code will be used as a custom code" +msgstr "Dieser G-Code wird als benutzerdefinierter Code verwendet" + +#: src/slic3r/GUI/Tab.cpp:1272 msgid "This is a default preset." msgstr "Dies ist eine Standard-Voreinstellung." -#: src/libslic3r/PrintConfig.cpp:2766 +#: src/libslic3r/PrintConfig.cpp:2930 msgid "This is a relative measure of support points density." msgstr "Dies ist ein relatives Maß für die Dichte der Stützpunkte." -#: src/slic3r/GUI/Tab.cpp:2338 +#: src/slic3r/GUI/Tab.cpp:2507 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 "Dies ist ein Einzelextruder-Multimaterialdrucker, die Durchmesser aller Extruder werden auf den neuen Wert eingestellt. Möchten Sie fortfahren?" -#: src/slic3r/GUI/Tab.cpp:955 +#: src/slic3r/GUI/Tab.cpp:1274 msgid "This is a system preset." msgstr "Dies ist eine Systemvoreinstellung." -#: src/libslic3r/PrintConfig.cpp:523 src/libslic3r/PrintConfig.cpp:583 +#: src/libslic3r/PrintConfig.cpp:559 src/libslic3r/PrintConfig.cpp:619 msgid "This is only used in the Slic3r interface as a visual help." msgstr "Dies wird nur als visuelles Hilfsmittel in der PrusaSlicer-Benutzeroberfläche verwendet." -#: src/libslic3r/PrintConfig.cpp:336 +#: src/libslic3r/PrintConfig.cpp:370 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 "Dies ist der Beschleunigungswert, auf den Ihr Drucker zurückgesetzt wird, nachdem aufgabenspezifische Beschleunigungswerte (Außenkonturen/Infill) verwendet wurden. Setzen Sie dies auf null, um ein Zurückstellen der Beschleunigungswerte zu deaktivieren." -#: src/libslic3r/PrintConfig.cpp:194 +#: src/libslic3r/PrintConfig.cpp:228 msgid "This is the acceleration your printer will use for bridges. Set zero to disable acceleration control for bridges." msgstr "Die Beschleunigung, die Ihr Drucker für Brücken verwendet. Setzen Sie dies auf null, um die Beschleunigungskontrolle bei Brücken zu deaktivieren." -#: src/libslic3r/PrintConfig.cpp:860 +#: src/libslic3r/PrintConfig.cpp:900 msgid "This is the acceleration your printer will use for first layer. Set zero to disable acceleration control for first layer." msgstr "Die Beschleunigung, die Ihr Drucker für die erste Schicht verwendet. Setzen Sie dies auf null, um die Beschleunigungskontrolle bei der ersten Schicht zu deaktivieren." -#: src/libslic3r/PrintConfig.cpp:982 +#: src/libslic3r/PrintConfig.cpp:1026 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:1400 +#: 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:1327 +#: src/libslic3r/PrintConfig.cpp:1435 msgid "This is the diameter of your extruder nozzle (for example: 0.5, 0.35 etc.)" msgstr "Durchmesser der Extruderdüse (z.B.: 0.5, 0.35 usw.)" -#: src/libslic3r/PrintConfig.cpp:1227 -#, no-c-format +#: src/libslic3r/PrintConfig.cpp:1335 +#, c-format msgid "This is the highest printable layer height for this extruder, used to cap the variable layer height and support layer height. Maximum recommended layer height is 75% of the extrusion width to achieve reasonable inter-layer adhesion. If set to 0, layer height is limited to 75% of the nozzle diameter." msgstr "Dies ist die höchste druckbare Schichthöhe für diesen Extruder, mit der die variable Schichthöhe und Stützschichthöhe abgedeckt wird. Die maximale empfohlene Schichthöhe beträgt 75% der Extrusionsbreite, um eine angemessene Zwischenlagenhaftung zu erreichen. Bei Einstellung auf 0 ist die Lagenhöhe auf 75% des Düsendurchmessers begrenzt." -#: src/libslic3r/PrintConfig.cpp:1290 +#: src/libslic3r/PrintConfig.cpp:1398 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 "Dies ist die niedrigste druckbare Schichthöhe für diesen Extruder und begrenzt die Auflösung bei variabler Schichthöhe. Typische Werte liegen zwischen 0,05 mm und 0,1 mm." -#: src/libslic3r/GCode.cpp:639 +#: src/libslic3r/GCode.cpp:624 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 "Dies wird in der Regel durch vernachlässigbar kleine Extrusionen oder durch ein fehlerhaftes Modell verursacht. Versuchen Sie, das Modell zu reparieren oder seine Ausrichtung auf dem Druckbett zu ändern." -#: src/libslic3r/PrintConfig.cpp:2215 +#: src/libslic3r/PrintConfig.cpp:2358 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 "Diese Matrix beschreibt die Volumina (in Kubikmillimetern), die benötigt werden, um das neue Filament auf dem Reinigungsturm für ein bestimmtes Werkzeugpaar zu reinigen." -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:878 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:928 msgid "" "This operation is irreversible.\n" "Do you want to proceed?" @@ -8190,31 +9376,35 @@ msgstr "" "Dieser Vorgang ist nicht mehr rückgängig zu machen.\n" "Möchten Sie fortfahren?" -#: src/libslic3r/PrintConfig.cpp:1442 +#: src/libslic3r/PrintConfig.cpp:1550 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 surfaces which benefit from a higher number of perimeters if the Extra Perimeters option is enabled." msgstr "Diese Stellung bestimmt die Anzahl der Außenkonturen, die für jede Schicht erzeugt werden. PusaSlicer kann diese Zahl automatisch vergrößern, wenn es schräge Oberflächen erkennt, die sich mit einer höheren Zahl von Außenkonturen besser drucken lassen, wenn die \"Zusätzliche Außenkonturen falls notwendig\" Option aktiviert ist." -#: src/libslic3r/PrintConfig.cpp:1356 +#: src/libslic3r/PrintConfig.cpp:1464 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 "Mit dieser Option wird die Temperatur der inaktiven Extruder gesenkt, um ein Materialnachsickern zu verhindern. Es aktiviert automatisch eine hohe Schürze und bewegt die Extruder bei Temperaturänderungen außerhalb dieser Schürze." -#: src/libslic3r/PrintConfig.cpp:1029 +#: src/libslic3r/PrintConfig.cpp:1073 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 "Diese Einstellung beschränkt den Infill auf die Bereiche, die tatsächlich für das Stützen von Decken benötigt werden (der Infill dient hier als interne Stützstruktur). Falls aktiviert, kann dies die Erstellung des G-Codes wegen zusätzlichen Kontrollschritten verlangsamen." -#: src/libslic3r/PrintConfig.cpp:1022 +#: src/libslic3r/PrintConfig.cpp:1066 msgid "This option will switch the print order of perimeters and infill, making the latter first." msgstr "Diese Einstellungen kehrt die Druckreihenfolge von Außenkonturen und Infill um, sodass der Infill zuerst gedruckt wird." -#: src/libslic3r/PrintConfig.cpp:459 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:85 +msgid "This printer will be shown in the presets list as" +msgstr "Dieser Drucker wird in der Voreinstellungsliste angezeigt als" + +#: src/libslic3r/PrintConfig.cpp:495 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 "Diese separate Einstellung wirkt sich auf die Geschwindigkeit der äußeren (sichtbaren) Außenkonturen aus. Als Prozentwert eingegeben (z.B. 80%), wird sie ausgehend von der obigen Geschwindigkeitseinstellung für Außenkonturen berechnet. Für die automatische Berechnung auf null setzen." -#: src/libslic3r/PrintConfig.cpp:1717 +#: src/libslic3r/PrintConfig.cpp:1832 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 "Diese separate Einstellung wirkt sich auf die Geschwindigkeit von Außenkonturen mit einem Radius <= 6,5 mm (üblicherweise Bohrungen) aus. Als Prozentwert eingegeben (z.B. 80%), wird sie ausgehend von der obigen Geschwindigkeitseinstellung für Außenkonturen berechnet. Für eine automatische Berechnung setzen Sie dies auf null." -#: src/libslic3r/PrintConfig.cpp:1038 +#: src/libslic3r/PrintConfig.cpp:1082 msgid "This setting applies an additional overlap between infill and perimeters for better bonding. Theoretically this shouldn't be needed, but backlash might cause gaps. If expressed as percentage (example: 15%) it is calculated over perimeter extrusion width." msgstr "Diese Einstellung fügt eine zusätzliche Überlappung zwischen Außenkonturen und Infill ein, um die Haftung zu verbessern. Theoretisch sollte dies nicht notwendig sein, doch vorhandenes Getriebespiel könnte Lücken erzeugen. Als Prozentwert eingegeben (z.B. 15%) wird sie ausgehend von der Extrusionsbreite für die Außenkontur ausgerechnet." @@ -8222,31 +9412,31 @@ msgstr "Diese Einstellung fügt eine zusätzliche Überlappung zwischen Außenko 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 "Diese Einstellung bestimmt die Höhe (und damit die Gesamtanzahl) der Scheiben/Schichten. Dünnere Schichten ergeben eine bessere Genauigkeit, benötigen aber mehr Zeit zum Drucken." -#: src/libslic3r/PrintConfig.cpp:1218 +#: src/libslic3r/PrintConfig.cpp:1326 msgid "This setting represents the maximum speed of your fan." msgstr "Diese Einstellung bestimmt die maximale Geschwindigkeit Ihres Lüfters." -#: src/libslic3r/PrintConfig.cpp:1281 +#: src/libslic3r/PrintConfig.cpp:1389 msgid "This setting represents the minimum PWM your fan needs to work." msgstr "Diese Einstellung gibt den minimalen PWM-Wert an, den Ihr Lüfter für den Betrieb benötigt." -#: src/libslic3r/PrintConfig.cpp:1829 +#: src/libslic3r/PrintConfig.cpp:1944 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 printers). This is used to override settings for a specific filament. If PrusaSlicer detects M104, M109, M140 or M190 in your custom codes, such commands will not be prepended automatically so you're free to customize the order of heating commands and other custom actions. Note that you can use placeholder variables for all PrusaSlicer settings, so you can put a \"M109 S[first_layer_temperature]\" command wherever you want. If you have multiple extruders, the gcode is processed in extruder order." msgstr "Dieser Startvorgang wird am Anfang, nach jedem Drucker-Startgcode (und nach jedem Werkzeugwechsel zu diesem Filament bei Multi-Material-Druckern) eingefügt. Dies wird verwendet, um die Einstellungen für einen bestimmten Filament zu überschreiben. Wenn PrusaSlicer M104, M109, M140 oder M190 in Ihren benutzerdefinierten Codes erkennt, werden solche Befehle nicht automatisch vorangestellt, so dass Sie die Reihenfolge der Heizbefehle und andere benutzerdefinierte Aktionen anpassen können. Beachten Sie, dass Sie Platzhaltervariablen für alle PrusaSlicer-Einstellungen verwenden können, so dass Sie einen Befehl \"M109 S[first_layer_temperature]\" beliebig platzieren können. Wenn Sie mehrere Extruder haben, wird der gcode in Extruderreihenfolge verarbeitet." -#: src/libslic3r/PrintConfig.cpp:1814 +#: src/libslic3r/PrintConfig.cpp:1929 msgid "This start procedure is inserted at the beginning, after bed has reached the target temperature and extruder just started heating, and before extruder has finished heating. If PrusaSlicer detects M104 or M190 in your custom codes, such commands will not be prepended automatically so you're free to customize the order of heating commands and other custom actions. Note that you can use placeholder variables for all PrusaSlicer settings, so you can put a \"M109 S[first_layer_temperature]\" command wherever you want." msgstr "Dieser Startvorgang wird am Anfang eingefügt, nachdem das Bett die Solltemperatur erreicht hat und der Extruder gerade mit dem Erwärmen begonnen hat, und bevor der Extruder das Erwärmen beendet hat. Wenn PrusaSlicer M104 oder M190 in Ihren benutzerdefinierten Codes erkennt, werden solche Befehle nicht automatisch vorangestellt, so dass Sie die Reihenfolge der Heizbefehle und andere benutzerdefinierte Aktionen anpassen können. Beachten Sie, dass Sie Platzhaltervariablen für alle PrusaSlicer-Einstellungen verwenden können, so dass Sie einen Befehl \"M109 S[first_layer_temperature]\" beliebig platzieren können." -#: src/libslic3r/PrintConfig.cpp:695 +#: src/libslic3r/PrintConfig.cpp:731 msgid "This string is edited by RammingDialog and contains ramming specific parameters." msgstr "Diese Zeichenfolge wird vom RammDialog angepasst und enthält für das Rammen spezifische Parameter." -#: src/libslic3r/PrintConfig.cpp:2286 +#: src/libslic3r/PrintConfig.cpp:2429 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 example, if your endstop zero actually leaves the nozzle 0.3mm far from the print bed, set this to -0.3 (or fix your endstop)." msgstr "Dieser Wert wird zu allen Z-Koordinaten im ausgegebenen G-Code hinzuaddiert oder davon abgezogen. Damit kann eine fehlerhafte Z-Endanschlagsposition kompensiert werden: wenn z.B. bei Ihrem Nullwert die Druckdüse sich beim Endanschlag 0.3mm über der Druckplatte befindet, setzen Sie diesen Wert auf -0.3 (oder stellen Sie Ihren Endanschlag neu ein)." -#: src/libslic3r/PrintConfig.cpp:2208 +#: src/libslic3r/PrintConfig.cpp:2351 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 "Dieser Vektor speichert die erforderlichen Volumina für den Wechsel von/zu jedem am Reinigungsturm verwendeten Werkzeug. Diese Werte werden verwendet, um die Erstellung des vollen Reinigungsvolumens zu vereinfachen." @@ -8263,82 +9453,96 @@ msgstr "" "\n" "Sie können %s entweder beenden und es mit einer neueren Version nochmals versuchen, oder Sie können die erstmalige Startkonfiguration nochmals wiederholen. In diesem Fall wird eine Sicherungskopie der aktuellen Konfiguration erstellt, bevor die mit dieser %s-Version kompatiblen Dateien installiert werden." -#: src/libslic3r/PrintConfig.cpp:2458 +#: src/libslic3r/PrintConfig.cpp:2601 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 "Dadurch wird eine Gammakorrektur auf die gerasterten 2D-Polygone angewendet. Ein Gamma-Wert von null bedeutet Schwellenwertbildung mit dem Schwellenwert in der Mitte. Dieses Verhalten eliminiert Antialiasing, ohne Löcher in Polygonen zu verlieren." -#: src/libslic3r/PrintConfig.cpp:2081 +#: src/libslic3r/PrintConfig.cpp:2224 msgid "Threads" msgstr "Threads" -#: src/libslic3r/PrintConfig.cpp:2082 +#: src/libslic3r/PrintConfig.cpp:2225 msgid "Threads are used to parallelize long-running tasks. Optimal threads number is slightly above the number of available cores/processors." msgstr "Threads werden benutzt, um mehrere zeitaufwendige Berechnungen gleichzeitig auszuführen. Die optimale Anzahl beträgt etwas mehr als die Anzahl der verfügbaren Kerne/Prozessoren." -#: src/slic3r/GUI/Tab.cpp:2093 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:235 +msgid "Threshold:" +msgstr "Schwellwert:" + +#: src/slic3r/GUI/Tab.cpp:2263 msgid "Tilt" msgstr "Kippen" -#: src/slic3r/GUI/Tab.cpp:2094 +#: src/slic3r/GUI/Tab.cpp:2264 msgid "Tilt time" msgstr "Kippzeit" +#: src/slic3r/GUI/GCodeViewer.cpp:2225 src/slic3r/GUI/GCodeViewer.cpp:2233 #: src/slic3r/GUI/RammingChart.cpp:76 msgid "Time" msgstr "Zeit" -#: src/libslic3r/PrintConfig.cpp:687 +#: src/libslic3r/PrintConfig.cpp:723 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 "Zeit, in der die Druckerfirmware (oder die Multi-Material-Einheit 2.0) während eines Werkzeugwechsels (bei Ausführung des T-Codes) ein anderes Filament lädt. Diese Zeit wird vom G-Code Zeitschätzer zur Gesamtdruckzeit addiert." -#: src/libslic3r/PrintConfig.cpp:702 +#: src/libslic3r/PrintConfig.cpp:738 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 "Zeit, in der die Druckerfirmware (oder die Multi-Material-Einheit 2.0) während eines Werkzeugwechsels (bei Ausführung des T-Codes) ein Filament entlädt. Diese Zeit wird vom G-Code Zeitschätzer zur Gesamtdruckzeit addiert." -#: src/libslic3r/PrintConfig.cpp:2407 +#: src/libslic3r/PrintConfig.cpp:2550 msgid "Time of the fast tilt" msgstr "Dauer des schnellen Kippens" -#: src/libslic3r/PrintConfig.cpp:2416 +#: src/libslic3r/PrintConfig.cpp:2559 msgid "Time of the slow tilt" msgstr "Dauer des langsamen Kippens" -#: src/libslic3r/PrintConfig.cpp:641 +#: src/libslic3r/PrintConfig.cpp:677 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 "Wartezeit, nachdem das Filament entladen wurde. Dies kann zu zuverlässigeren Werkzeugwechseln beitragen bei flexiblen Materialien, die mehr Zeit zum Schrumpfen auf ihre ursprüngliche Größe brauchen." -#: src/slic3r/GUI/Tab.cpp:966 +#: src/slic3r/GUI/GCodeViewer.cpp:2197 +msgid "to" +msgstr "bis" + +#: src/slic3r/GUI/Tab.cpp:1284 msgid "To do that please specify a new name for the preset." msgstr "Zur Ausführung geben Sie bitte einen neuen Namen für die Voreinstellung ein." -#: src/slic3r/GUI/Plater.cpp:4014 +#: src/slic3r/GUI/Plater.cpp:3934 msgid "To objects" msgstr "Zu Objekten" -#: src/slic3r/GUI/Plater.cpp:4016 +#: src/slic3r/GUI/Plater.cpp:3936 msgid "To parts" msgstr "Zu Teilen" -#: src/slic3r/GUI/Tab.cpp:1756 +#: src/slic3r/Utils/Http.cpp:82 +msgid "To specify the system certificate store manually, please set the %1% environment variable to the correct CA bundle and restart the application." +msgstr "Um den System-Zertifikatspeicher manuell anzugeben, setzen Sie bitte die Umgebungsvariable %1% auf das richtige CA-Bundle und starten Sie die Anwendung neu." + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:360 msgid "To use a custom CA file, please import your CA file into Certificate Store / Keychain." msgstr "Um eine benutzerdefinierte CA-Datei zu verwenden, importieren Sie bitte Ihre CA-Datei in den Zertifikatsspeicher / Schlüsselbund." -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:263 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:271 #, c-format msgid "Toggle %c axis mirroring" msgstr "Umschalten der Spiegelung der %c-Achse" -#: src/libslic3r/Zipper.cpp:34 +#: src/libslic3r/miniz_extension.cpp:93 msgid "too many files" msgstr "zu viele Dateien" -#: src/libslic3r/SLAPrintSteps.cpp:190 -msgid "Too much overlapping holes." +#: src/libslic3r/SLAPrintSteps.cpp:192 +msgid "Too many overlapping holes." msgstr "Zu viele überlappende Löcher." -#: src/slic3r/GUI/GUI_Preview.cpp:227 src/slic3r/GUI/GUI_Preview.cpp:335 -#: src/slic3r/GUI/GUI_Preview.cpp:519 src/slic3r/GUI/GUI_Preview.cpp:574 -#: src/slic3r/GUI/GUI_Preview.cpp:835 src/libslic3r/GCode/PreviewData.cpp:357 +#: src/slic3r/GUI/GCodeViewer.cpp:2241 src/slic3r/GUI/GUI_Preview.cpp:281 +#: src/slic3r/GUI/GUI_Preview.cpp:453 src/slic3r/GUI/GUI_Preview.cpp:693 +#: src/slic3r/GUI/GUI_Preview.cpp:786 src/slic3r/GUI/GUI_Preview.cpp:1270 +#: src/libslic3r/GCode/PreviewData.cpp:362 msgid "Tool" msgstr "Werkzeug" @@ -8346,51 +9550,64 @@ msgstr "Werkzeug" msgid "Tool #" msgstr "Werkzeug #" -#: src/slic3r/GUI/Tab.cpp:2000 src/libslic3r/PrintConfig.cpp:2093 +#: src/slic3r/GUI/Tab.cpp:2189 src/libslic3r/PrintConfig.cpp:2236 msgid "Tool change G-code" msgstr "G-Code für Werkzeugwechsel" -#: src/slic3r/GUI/Tab.cpp:1491 +#: src/slic3r/GUI/GCodeViewer.cpp:2530 src/slic3r/GUI/GUI_Preview.cpp:1474 +msgid "Tool changes" +msgstr "Werkzeugwechsel" + +#: src/slic3r/GUI/GUI_Preview.cpp:1479 +msgid "Tool marker" +msgstr "Werkzeugposition" + +#: src/slic3r/GUI/GCodeViewer.cpp:223 +msgid "Tool position" +msgstr "Werkzeugposition" + +#: src/slic3r/GUI/Tab.cpp:1837 msgid "Toolchange parameters with single extruder MM printers" msgstr "Werkzeugwechsel-Parameter für MM-Drucker mit einem Extruder" #. 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:662 src/libslic3r/PrintConfig.cpp:2132 -#: src/libslic3r/PrintConfig.cpp:2141 +#: src/slic3r/GUI/MainFrame.cpp:959 src/slic3r/GUI/MainFrame.cpp:1279 +#: src/libslic3r/PrintConfig.cpp:2275 src/libslic3r/PrintConfig.cpp:2284 msgid "Top" msgstr "Decke" -#: src/slic3r/GUI/PresetHints.cpp:304 +#: src/slic3r/GUI/PresetHints.cpp:302 msgid "Top / bottom shell thickness hint: Not available due to invalid layer height." msgstr "Hinweis zur Ober-/Bodenschalestärke: Nicht verfügbar wegen ungültiger Schichthöhe." -#: src/libslic3r/PrintConfig.cpp:415 +#: src/libslic3r/PrintConfig.cpp:449 msgid "Top fill pattern" msgstr "Deckenfüllmuster" -#: src/slic3r/GUI/PresetHints.cpp:323 +#: src/slic3r/GUI/PresetHints.cpp:321 msgid "Top is open." msgstr "Oben ist offen." -#: src/slic3r/GUI/PresetHints.cpp:317 +#: src/slic3r/GUI/PresetHints.cpp:315 msgid "Top shell is %1% mm thick for layer height %2% mm." msgstr "Die obere Schale ist %1% mm stark für eine Schichthöhe von %2% mm." -#: src/slic3r/GUI/PresetHints.cpp:192 +#: src/slic3r/GUI/PresetHints.cpp:191 msgid "top solid infill" msgstr "Oberes massives Infill" -#: src/slic3r/GUI/GUI_Preview.cpp:242 src/libslic3r/ExtrusionEntity.cpp:315 -#: src/libslic3r/PrintConfig.cpp:2105 src/libslic3r/PrintConfig.cpp:2117 +#: src/slic3r/GUI/GUI_Preview.cpp:306 src/libslic3r/ExtrusionEntity.cpp:319 +#: src/libslic3r/ExtrusionEntity.cpp:346 src/libslic3r/PrintConfig.cpp:2248 +#: src/libslic3r/PrintConfig.cpp:2260 msgid "Top solid infill" msgstr "Oberes massives Infill" -#: src/libslic3r/PrintConfig.cpp:2135 +#: src/libslic3r/PrintConfig.cpp:2278 msgid "Top solid layers" msgstr "Obere massive Schichten" -#: src/slic3r/GUI/MainFrame.cpp:662 +#: src/slic3r/GUI/MainFrame.cpp:959 src/slic3r/GUI/MainFrame.cpp:1279 msgid "Top View" msgstr "Ansicht von oben" @@ -8406,90 +9623,128 @@ msgstr "Gesamtes Rammvolumen" msgid "Total ramming time" msgstr "Gesamte Rammdauer" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:516 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:640 +msgid "Transfer" +msgstr "Transfer" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:745 +msgid "Transfer the selected options to the newly selected preset \"%1%\"." +msgstr "Übertragen der ausgewählten Optionen auf die neu gewählte Voreinstellung \"%1%\"." + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:740 +msgid "Transfer the selected settings to the newly selected preset." +msgstr "Übertragen der gewählten Einstellungen auf die neu gewählte Voreinstellung." + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:561 msgid "Translate" -msgstr "Übersetzen" +msgstr "Versetzen" -#: src/slic3r/GUI/Mouse3DController.cpp:300 -#: src/slic3r/GUI/Mouse3DController.cpp:317 +#: src/slic3r/GUI/Mouse3DController.cpp:282 +#: src/slic3r/GUI/Mouse3DController.cpp:303 msgid "Translation" -msgstr "Übersetzung" +msgstr "Position" -#: src/slic3r/GUI/GUI_Preview.cpp:253 src/libslic3r/PrintConfig.cpp:2152 +#: src/slic3r/GUI/GCodeViewer.cpp:2489 src/slic3r/GUI/GUI_Preview.cpp:335 +#: src/slic3r/GUI/GUI_Preview.cpp:1471 src/libslic3r/PrintConfig.cpp:2295 msgid "Travel" msgstr "Eilgang" -#: src/libslic3r/PrintConfig.cpp:845 +#: src/libslic3r/PrintConfig.cpp:883 msgid "Triangles" msgstr "Dreiecke" -#: src/libslic3r/PrintConfig.cpp:3448 +#: src/libslic3r/PrintConfig.cpp:3647 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 "Repariere alle ungeschlossenen Netze (diese Option wird implizit hinzugefügt, wenn wir das Modell slicen müssen, um die gewünschte Aktion ausführen zu können)." -#: src/libslic3r/PrintConfig.cpp:1467 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:165 +msgid "Type here the name of your printer device" +msgstr "Geben Sie hier den Namen Ihres Druckers ein" + +#: src/libslic3r/PrintConfig.cpp:1575 msgid "Type of the printer." msgstr "Druckertyp." -#: src/slic3r/GUI/ConfigWizard.cpp:2013 src/slic3r/GUI/GUI_ObjectList.cpp:3553 +#: src/slic3r/GUI/ConfigWizard.cpp:2524 src/slic3r/GUI/ConfigWizard.cpp:2526 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4016 msgid "Type:" msgstr "Typ:" -#: src/slic3r/GUI/Plater.cpp:3428 +#: src/slic3r/GUI/OpenGLManager.cpp:275 +#, c-format +msgid "" +"Unable to load the following shaders:\n" +"%s" +msgstr "" +"Die folgenden Shader konnten nicht geladen werden:\n" +"%s" + +#: src/slic3r/GUI/Plater.cpp:3233 msgid "Unable to reload:" msgstr "Kann nicht nachgeladen werden:" -#: src/libslic3r/Zipper.cpp:32 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:137 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:146 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:845 +msgid "Undef" +msgstr "Undef" + +#: src/libslic3r/miniz_extension.cpp:91 msgid "undefined error" msgstr "unbekannter Fehler" -#: src/slic3r/GUI/GLCanvas3D.cpp:4624 src/slic3r/GUI/KBShortcutsDialog.cpp:130 -#: src/slic3r/GUI/MainFrame.cpp:581 +#: src/slic3r/GUI/GLCanvas3D.cpp:5028 src/slic3r/GUI/KBShortcutsDialog.cpp:125 +#: src/slic3r/GUI/MainFrame.cpp:1187 msgid "Undo" msgstr "Undo" -#: src/slic3r/GUI/GLCanvas3D.cpp:4065 +#: src/slic3r/GUI/GLCanvas3D.cpp:4382 #, c-format msgid "Undo %1$d Action" msgid_plural "Undo %1$d Actions" msgstr[0] "Undo %1$d Aktion" msgstr[1] "Undo %1$d Aktionen" -#: src/slic3r/GUI/GLCanvas3D.cpp:4047 +#: src/slic3r/GUI/GLCanvas3D.cpp:4361 msgid "Undo History" msgstr "Undo Verlauf" -#: src/libslic3r/Zipper.cpp:56 +#: src/libslic3r/miniz_extension.cpp:115 msgid "unexpected decompressed size" msgstr "unerwartete dekomprimierte Größe" #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:27 +#: src/slic3r/GUI/GUI_Preview.cpp:299 src/libslic3r/ExtrusionEntity.cpp:310 msgid "Unknown" msgstr "Unbekannt" -#: src/slic3r/Utils/Duet.cpp:82 src/slic3r/Utils/Duet.cpp:137 -#: src/slic3r/Utils/FlashAir.cpp:119 src/slic3r/Utils/FlashAir.cpp:140 -#: src/slic3r/Utils/FlashAir.cpp:156 +#: src/slic3r/Utils/Duet.cpp:84 src/slic3r/Utils/Duet.cpp:139 +#: src/slic3r/Utils/FlashAir.cpp:122 src/slic3r/Utils/FlashAir.cpp:143 +#: src/slic3r/Utils/FlashAir.cpp:159 msgid "Unknown error occured" msgstr "Unbekannter Fehler aufgetreten" +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:178 +msgid "Unknown error occured during exporting G-code." +msgstr "Unbekannter Fehler trat beim Exportieren von G-Code auf." + #: src/slic3r/GUI/WipeTowerDialog.cpp:263 msgid "unloaded" msgstr "entladen wird" -#: src/libslic3r/PrintConfig.cpp:623 +#: src/libslic3r/PrintConfig.cpp:659 msgid "Unloading speed" msgstr "Entladegeschwindigkeit" -#: src/libslic3r/PrintConfig.cpp:632 +#: src/libslic3r/PrintConfig.cpp:668 msgid "Unloading speed at the start" msgstr "Entladegeschwindigkeit zu Beginn" -#: src/slic3r/GUI/Tab.cpp:3256 +#: src/slic3r/GUI/Tab.cpp:3693 msgid "UNLOCKED LOCK" msgstr "OFFENES SCHLOSS" -#: src/slic3r/GUI/Tab.cpp:3282 +#: src/slic3r/GUI/Tab.cpp:3719 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" "Click to reset all settings for current option group to the system (or default) values." @@ -8497,7 +9752,7 @@ msgstr "" "Das Symbol GEÖFFNETES SCHLOSS zeigt an, dass einige Einstellungen geändert wurden und nicht mehr mit den System- (oder Standard-) Werte für die aktuelle Optionsgruppe identisch sind.\n" "Klicken Sie, um alle Einstellungen für die aktuelle Optionsgruppe auf die System- (oder Standard-) Werte zurückzusetzen." -#: src/slic3r/GUI/Tab.cpp:3297 +#: src/slic3r/GUI/Tab.cpp:3734 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." @@ -8505,56 +9760,43 @@ msgstr "" "Das Symbol GEÖFFNETES SCHLOSS zeigt an, dass der Wert geändert wurde und nicht mit der System- (oder Standard-) Einstellung identisch ist.\n" "Klicken Sie, um den aktuellen Wert auf die System- (oder Standard-) Einstellung zurückzusetzen." -#: src/slic3r/GUI/Plater.cpp:5203 -#, c-format -msgid "Unmounting successful. The device %s(%s) can now be safely removed from the computer." -msgstr "Aushängen erfolgreich. Das Gerät %s(%s) kann nun sicher vom Computer entfernt werden." - -#: src/slic3r/GUI/GUI_Preview.cpp:255 -msgid "Unretractions" -msgstr "Wiedereinzüge" - -#: src/slic3r/GUI/Tab.cpp:2947 -msgid "Unsaved Changes" -msgstr "Nicht abgespeicherte Änderungen" - -#: src/slic3r/GUI/GUI_App.cpp:935 -msgid "Unsaved Presets" -msgstr "Nicht abgespeicherte Voreinstellungen" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:179 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:173 msgid "Unselect gizmo or clear selection" msgstr "Gizmo abwählen oder Auswahl löschen" -#: src/libslic3r/Zipper.cpp:60 +#: src/libslic3r/miniz_extension.cpp:119 msgid "unsupported central directory size" msgstr "nicht unterstützte zentrale Verzeichnisgröße" -#: src/libslic3r/Zipper.cpp:40 +#: src/libslic3r/miniz_extension.cpp:99 msgid "unsupported encryption" msgstr "nicht unterstützte Verschlüsselung" -#: src/libslic3r/Zipper.cpp:42 +#: src/libslic3r/miniz_extension.cpp:101 msgid "unsupported feature" msgstr "nicht unterstützte Funktion" -#: src/libslic3r/Zipper.cpp:38 +#: src/libslic3r/miniz_extension.cpp:97 msgid "unsupported method" msgstr "nicht unterstützte Methode" -#: src/libslic3r/Zipper.cpp:50 +#: src/libslic3r/miniz_extension.cpp:109 msgid "unsupported multidisk archive" msgstr "nicht unterstütztes Multidisk-Archiv" -#: src/slic3r/GUI/GLCanvas3DManager.cpp:292 +#: src/slic3r/GUI/OpenGLManager.cpp:267 msgid "Unsupported OpenGL version" msgstr "Nicht unterstützte OpenGL Version" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3420 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3883 msgid "Unsupported selection" msgstr "Nicht unterstützte Auswahl" -#: src/slic3r/GUI/GLCanvas3D.cpp:955 +#: src/slic3r/GUI/GCodeViewer.cpp:2183 +msgid "up to" +msgstr "bis zu" + +#: src/slic3r/GUI/GLCanvas3D.cpp:961 #, c-format msgid "up to %.2f mm" msgstr "bis zu %.2f mm" @@ -8563,15 +9805,15 @@ msgstr "bis zu %.2f mm" msgid "Update available" msgstr "Ein Update ist verfügbar" -#: src/slic3r/GUI/ConfigWizard.cpp:779 src/slic3r/GUI/Preferences.cpp:80 +#: src/slic3r/GUI/ConfigWizard.cpp:1138 src/slic3r/GUI/Preferences.cpp:97 msgid "Update built-in Presets automatically" msgstr "Eingebaute Voreinstellungen automatisch aktualisieren" -#: src/slic3r/GUI/ConfigWizard.cpp:761 +#: src/slic3r/GUI/ConfigWizard.cpp:1120 msgid "Updates" msgstr "Updates" -#: src/slic3r/GUI/ConfigWizard.cpp:786 +#: src/slic3r/GUI/ConfigWizard.cpp:1145 msgid "Updates are never applied without user's consent and never overwrite user's customized settings." msgstr "Updates werden niemals ohne das Einverständnis des Benutzers ausgeführt, und werden niemals die vom Benutzer geänderten Einstellungen überschreiben." @@ -8579,7 +9821,7 @@ msgstr "Updates werden niemals ohne das Einverständnis des Benutzers ausgeführ msgid "Upgrade" msgstr "Aktualisieren" -#: src/slic3r/GUI/GUI_App.cpp:824 +#: src/slic3r/GUI/GUI_App.cpp:1522 msgid "Upload a firmware image into an Arduino based printer" msgstr "Lade ein Firmware Image zu einem Arduino-basierten Drucker hoch" @@ -8595,101 +9837,118 @@ msgstr "Transferiere zum Druckerhost mit dem Dateinamen:" msgid "Uploading" msgstr "Lade hoch" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:204 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:206 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 msgid "Upper Layer" msgstr "Obere Schicht" -#: src/slic3r/GUI/Tab.cpp:1900 -msgid "USB/Serial connection" -msgstr "USB/Serielle Verbindung" - -#: src/libslic3r/PrintConfig.cpp:1662 -msgid "USB/serial port for printer connection." -msgstr "USB-/serielle Schnittstelle für den Druckeranschluss." - -#: src/slic3r/GUI/DoubleSlider.cpp:1147 +#: src/slic3r/GUI/DoubleSlider.cpp:1276 msgid "Use another extruder" msgstr "Einen anderen Extruder verwenden" -#: src/slic3r/GUI/Preferences.cpp:143 +#: src/slic3r/GUI/Preferences.cpp:220 msgid "Use custom size for toolbar icons" msgstr "Benutzerdefinierte Größe für Symbolleistensymbole verwenden" -#: src/libslic3r/PrintConfig.cpp:2161 +#: src/slic3r/GUI/Preferences.cpp:268 +msgid "Use environment map" +msgstr "Environment Map verwenden" + +#: src/libslic3r/PrintConfig.cpp:2304 msgid "Use firmware retraction" msgstr "Firmware-Einzug aktivieren" +#: src/slic3r/GUI/ImGuiWrapper.cpp:800 src/slic3r/GUI/Search.cpp:464 +msgid "Use for search" +msgstr "Zur Suche verwenden" + +#: src/libslic3r/PrintConfig.cpp:1218 +msgid "Use for time estimate" +msgstr "Zur Zeitschätzung verwenden" + #: src/slic3r/GUI/PrintHostDialogs.cpp:42 msgid "Use forward slashes ( / ) as a directory separator if needed." msgstr "Benutzen Sie den Schrägstrich (/) als Verzeichnistrenner falls nötig." -#: src/slic3r/GUI/Preferences.cpp:126 +#: src/slic3r/GUI/Preferences.cpp:191 msgid "Use free camera" msgstr "Benutze freie Kamera" -#: src/libslic3r/PrintConfig.cpp:2780 +#: src/slic3r/GUI/ConfigWizard.cpp:1188 +msgid "Use inches" +msgstr "Zoll verwenden" + +#: src/libslic3r/PrintConfig.cpp:2944 msgid "Use pad" msgstr "Grundschicht benutzen" -#: src/slic3r/GUI/Preferences.cpp:119 +#: src/slic3r/GUI/Preferences.cpp:184 msgid "Use perspective camera" msgstr "Benutze perspektivische Kamera" -#: src/libslic3r/PrintConfig.cpp:2168 +#: src/libslic3r/PrintConfig.cpp:2311 msgid "Use relative E distances" msgstr "Relative Abstände für Extrusion benutzen" -#: src/slic3r/GUI/Preferences.cpp:104 +#: src/slic3r/GUI/Preferences.cpp:135 msgid "Use Retina resolution for the 3D scene" msgstr "Verwende Retina Auflösung für die 3D Anzeige" -#: src/libslic3r/PrintConfig.cpp:540 +#: src/libslic3r/PrintConfig.cpp:576 msgid "Use this option to set the axis letter associated to your printer's extruder (usually E but some printers use A)." msgstr "Verwenden Sie diese Einstellung, um den Buchstaben der Achse anzugeben, die mit Ihrem Extruder verknüpft ist (normalerweise E, aber bei manchen Druckern ist dies A)." -#: src/libslic3r/PrintConfig.cpp:1893 +#: src/libslic3r/PrintConfig.cpp:2035 msgid "Use this setting to rotate the support material pattern on the horizontal plane." msgstr "Verwenden Sie diese Einstellung, um das Muster für die Stützstrukturen auf der horizontalen Ebene zu drehen." -#: src/libslic3r/PrintConfig.cpp:2175 +#: src/libslic3r/PrintConfig.cpp:2318 msgid "Use volumetric E" msgstr "Volumetrisches E benutzen" -#: src/slic3r/GUI/DoubleSlider.cpp:1171 +#: src/slic3r/GUI/DoubleSlider.cpp:1298 msgid "used" msgstr "genutzt" -#: src/slic3r/GUI/Plater.cpp:237 +#: src/slic3r/GUI/Plater.cpp:243 msgid "Used Filament (g)" msgstr "Filamentbedarf (g)" -#: src/slic3r/GUI/Plater.cpp:235 src/slic3r/GUI/Plater.cpp:1229 +#: src/slic3r/GUI/Plater.cpp:1141 +msgid "Used Filament (in)" +msgstr "Filamentbedarf (Zoll)" + +#: src/slic3r/GUI/Plater.cpp:1153 +msgid "Used Filament (in³)" +msgstr "Filamentbedarf (Zoll³)" + +#: src/slic3r/GUI/Plater.cpp:241 src/slic3r/GUI/Plater.cpp:1141 msgid "Used Filament (m)" msgstr "Filamentbedarf (Meter)" -#: src/slic3r/GUI/Plater.cpp:236 +#: src/slic3r/GUI/Plater.cpp:242 src/slic3r/GUI/Plater.cpp:1153 msgid "Used Filament (mm³)" msgstr "Filamentbedarf (mm³)" -#: src/slic3r/GUI/Plater.cpp:1191 +#: src/slic3r/GUI/Plater.cpp:1100 msgid "Used Material (ml)" msgstr "Benutztes Material (ml)" -#: src/slic3r/GUI/Plater.cpp:238 +#: src/slic3r/GUI/Plater.cpp:244 msgid "Used Material (unit)" msgstr "Benutztes Material (Einheit)" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:24 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:24 src/libslic3r/PrintConfig.cpp:132 msgid "User" msgstr "Benutzer" -#: src/slic3r/GUI/Preset.cpp:1168 src/slic3r/GUI/Preset.cpp:1288 -#: src/slic3r/GUI/PresetBundle.cpp:1677 +#: src/slic3r/GUI/PresetComboBoxes.cpp:230 +#: src/slic3r/GUI/PresetComboBoxes.cpp:778 +#: src/slic3r/GUI/PresetComboBoxes.cpp:934 msgid "User presets" msgstr "Benutzerdefinierte Voreinstellungen" -#: src/libslic3r/Zipper.cpp:90 +#: src/libslic3r/miniz_extension.cpp:149 msgid "validation failed" msgstr "Überprüfung fehlgeschlagen" @@ -8701,31 +9960,31 @@ msgstr "Der Wert ist gleich wie die Systemeinstellung" msgid "Value was changed and is not equal to the system value or the last saved preset" msgstr "Der Wert wurde geändert und ist nicht gleich wie die Systemeinstellung oder die letzte abgespeicherte Voreinstellung" -#: src/slic3r/GUI/Tab.cpp:2202 +#: src/slic3r/GUI/Tab.cpp:2371 msgid "Values in this column are for Normal mode" msgstr "Werte in dieser Spalte sind für den normalen Modus" -#: src/slic3r/GUI/Tab.cpp:2208 +#: src/slic3r/GUI/Tab.cpp:2377 msgid "Values in this column are for Stealth mode" msgstr "Werte in dieser Spalte sind für den Stealth Modus" -#: src/slic3r/GUI/GLCanvas3D.cpp:234 src/slic3r/GUI/GLCanvas3D.cpp:4573 +#: src/slic3r/GUI/GLCanvas3D.cpp:231 src/slic3r/GUI/GLCanvas3D.cpp:4978 msgid "Variable layer height" msgstr "Variable Schichthöhe" -#: src/slic3r/GUI/GLCanvas3D.cpp:1709 +#: src/slic3r/GUI/GLCanvas3D.cpp:1786 msgid "Variable layer height - Adaptive" msgstr "Variable Schichthöhe - Adaptiv" -#: src/slic3r/GUI/GLCanvas3D.cpp:599 +#: src/slic3r/GUI/GLCanvas3D.cpp:565 msgid "Variable layer height - Manual edit" msgstr "Variable Schichthöhe - Manuell bearbeiten" -#: src/slic3r/GUI/GLCanvas3D.cpp:1701 +#: src/slic3r/GUI/GLCanvas3D.cpp:1778 msgid "Variable layer height - Reset" msgstr "Variable Schichthöhe - Zurücksetzen" -#: src/slic3r/GUI/GLCanvas3D.cpp:1717 +#: src/slic3r/GUI/GLCanvas3D.cpp:1794 msgid "Variable layer height - Smooth all" msgstr "Variable Schichthöhe - Alles glätten" @@ -8733,19 +9992,20 @@ msgstr "Variable Schichthöhe - Alles glätten" msgid "variants" msgstr "Varianten" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:57 src/slic3r/GUI/Tab.cpp:971 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:57 src/slic3r/GUI/Tab.cpp:1289 msgid "vendor" msgstr "Hersteller" -#: src/slic3r/GUI/ConfigWizard.cpp:565 +#: src/slic3r/GUI/ConfigWizard.cpp:589 msgid "Vendor:" msgstr "Hersteller:" -#: src/libslic3r/PrintConfig.cpp:928 +#: src/libslic3r/PrintConfig.cpp:972 msgid "Verbose G-code" msgstr "Ausführlicher G-Code" -#: src/slic3r/GUI/AboutDialog.cpp:231 src/slic3r/GUI/MainFrame.cpp:64 +#: src/slic3r/GUI/AboutDialog.cpp:256 src/slic3r/GUI/GUI_App.cpp:239 +#: src/slic3r/GUI/MainFrame.cpp:164 msgid "Version" msgstr "Version" @@ -8753,24 +10013,36 @@ msgstr "Version" msgid "version" msgstr "Version" -#: src/slic3r/GUI/Tab.cpp:1053 +#: src/slic3r/GUI/Tab.cpp:1375 msgid "Vertical shells" msgstr "Vertikale Konturhüllen" -#: src/slic3r/GUI/GUI_Preview.cpp:218 +#: src/slic3r/GUI/GUI_Preview.cpp:265 src/slic3r/GUI/GUI_Preview.cpp:271 msgid "View" msgstr "Ansicht" -#: src/slic3r/GUI/ConfigWizard.cpp:813 +#: src/slic3r/GUI/ConfigWizard.cpp:1172 msgid "View mode" msgstr "Anzeigemodus" -#: src/libslic3r/SLAPrintSteps.cpp:413 src/libslic3r/SLAPrintSteps.cpp:422 -#: src/libslic3r/SLAPrintSteps.cpp:461 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:666 +msgid "" +"Visit \"Preferences\" and check \"%1%\"\n" +"to be asked about unsaved changes again." +msgstr "" +"Besuchen Sie \"Präferenzen\" und überprüfen Sie \"%1%\",\n" +"um über nicht gespeicherte Änderungen wieder gefragt zu werden." + +#: src/libslic3r/PrintConfig.cpp:3553 +msgid "Visualize an already sliced and saved G-code" +msgstr "Visualisierung eines bereits gesliceten und gespeicherten G-Codes" + +#: src/libslic3r/SLAPrintSteps.cpp:411 src/libslic3r/SLAPrintSteps.cpp:420 +#: src/libslic3r/SLAPrintSteps.cpp:459 msgid "Visualizing supports" msgstr "Anzeigen der Stützstrukturen" -#: src/slic3r/GUI/Plater.cpp:161 +#: src/slic3r/GUI/Plater.cpp:167 msgid "Volume" msgstr "Volumen" @@ -8778,23 +10050,23 @@ msgstr "Volumen" msgid "Volume to purge (mm³) when the filament is being" msgstr "Volumen zum Reinigen (mm³) wenn das Filament ist" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1106 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1230 msgid "Volumes in Object reordered" msgstr "Volumen in Objekt neu angeordnet" -#: src/slic3r/GUI/PresetHints.cpp:219 +#: src/slic3r/GUI/PresetHints.cpp:218 msgid "Volumetric" msgstr "Volumetrisch" -#: src/slic3r/GUI/Tab.cpp:1591 +#: src/slic3r/GUI/Tab.cpp:1930 msgid "Volumetric flow hints not available" msgstr "Hinweise zum Volumenstrom nicht verfügbar" -#: src/slic3r/GUI/GUI_Preview.cpp:226 +#: src/slic3r/GUI/GUI_Preview.cpp:280 msgid "Volumetric flow rate" msgstr "Volumetrische Flussrate" -#: src/libslic3r/GCode/PreviewData.cpp:355 +#: src/slic3r/GUI/GCodeViewer.cpp:2240 src/libslic3r/GCode/PreviewData.cpp:360 msgid "Volumetric flow rate (mm³/s)" msgstr "Volumetrische Flussrate (mm³/s)" @@ -8802,151 +10074,166 @@ msgstr "Volumetrische Flussrate (mm³/s)" msgid "Volumetric speed" msgstr "Volumengeschwindigkeit" -#: src/libslic3r/PrintConfig.cpp:2915 +#: src/libslic3r/PrintConfig.cpp:3079 msgid "Wall thickness" msgstr "Wandstärke" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1270 src/slic3r/GUI/GUI.cpp:251 -#: src/slic3r/GUI/Tab.cpp:3084 src/slic3r/GUI/WipeTowerDialog.cpp:45 -#: src/slic3r/GUI/WipeTowerDialog.cpp:366 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1129 src/slic3r/GUI/GUI.cpp:256 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:478 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:502 +#: src/slic3r/GUI/WipeTowerDialog.cpp:45 src/slic3r/GUI/WipeTowerDialog.cpp:366 msgid "Warning" msgstr "Warnung" -#: src/slic3r/GUI/ConfigWizard.cpp:431 +#: src/slic3r/GUI/NotificationManager.cpp:672 +#: src/slic3r/GUI/NotificationManager.cpp:687 +#: src/slic3r/GUI/NotificationManager.cpp:702 +msgid "WARNING:" +msgstr "WARNUNG:" + +#: src/slic3r/GUI/ConfigWizard.cpp:449 msgid "Welcome" msgstr "Willkommen" -#: src/slic3r/GUI/ConfigWizard.cpp:427 +#: src/slic3r/GUI/ConfigWizard.cpp:445 #, c-format msgid "Welcome to the %s Configuration Assistant" msgstr "Willkommen zum %s Konfigurations-Assistent" -#: src/slic3r/GUI/ConfigWizard.cpp:429 +#: src/slic3r/GUI/ConfigWizard.cpp:447 #, c-format msgid "Welcome to the %s Configuration Wizard" msgstr "Willkommen zum %s Konfigurations-Assistent" -#: src/slic3r/GUI/Preferences.cpp:97 +#: src/slic3r/GUI/SavePresetDialog.cpp:310 +msgid "What would you like to do with \"%1%\" preset after saving?" +msgstr "Was möchten Sie mit der Voreinstellung \"%1%\" nach dem Speichern machen?" + +#: src/slic3r/GUI/Preferences.cpp:114 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 "Falls angekreuzt, werden Voreinstellungen für Druck und Filament im Voreinstellungseditor auch dann angezeigt, wenn sie als inkompatibel zum aktiven Drucker gekennzeichnet wurden" -#: src/slic3r/GUI/PresetHints.cpp:224 +#: src/slic3r/GUI/Preferences.cpp:156 +msgid "When closing the application, always ask for unsaved changes" +msgstr "Wenn Sie die Anwendung schließen, immer nach nicht gespeicherten Änderungen fragen" + +#: src/slic3r/GUI/PresetHints.cpp:223 msgid "when printing" msgstr "während dem Druck" -#: src/libslic3r/PrintConfig.cpp:253 +#: 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 "Wenn Multi-Material-Objekte gedruckt werden, wird Slic3r mit diesen Einstellungen einen überlappenden Teil des Objekts durch den anderen einschränken (zweiter Teil wird durch den ersten Teil eingeschränkt, dritter Teil wird durch den ersten und zweiten eingeschränkt usw.)." -#: src/libslic3r/PrintConfig.cpp:305 +#: 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." msgstr "Wenn mehrere Objekte oder Kopien gedruckt werden, wird bei dieser Einstellung jedes Objekt vollständig gedruckt, bevor das nächste (angefangen mit der Bodenschicht) begonnen wird. Diese Einstellung ist nützlich, um Fehldrucke zu vermeiden. PrusaSlicer sollte vor Extruderkollisionen warnen und diese verhindern, aber seien Sie trotzdem aufmerksam." -#: src/libslic3r/PrintConfig.cpp:891 +#: src/libslic3r/PrintConfig.cpp:933 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 plates. This can be expressed as an absolute value or as a percentage (for example: 150%) over the default layer height." msgstr "Wenn mit sehr kleinen Schichthöhen gedruckt wird, möchten Sie vielleicht trotzdem eine stärkere Bodenschicht drucken, um die Haftung sowie die Toleranz bei nicht perfekt ebenen Druckplatten zu verbessern. Dieser Wert kann als Absolutwert oder als Prozentwert (z.B. 150%) der Standardschichthöhe angegeben werden." -#: src/libslic3r/PrintConfig.cpp:1553 +#: src/libslic3r/PrintConfig.cpp:1661 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 "Wenn der Einzug vor dem Werkzeugwechsel ausgelöst wird, wird das Filament um diese Länge eingezogen. (Die Länge wird am unverarbeiteten Filament vor dem Extruder gemessen)." -#: src/libslic3r/PrintConfig.cpp:1545 +#: src/libslic3r/PrintConfig.cpp:1653 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 "Wenn der Einzug ausgelöst wird, wird das Filament um diese Länge eingezogen. (Die Länge wird am unverarbeiteten Filament vor dem Extruder gemessen)." -#: src/libslic3r/PrintConfig.cpp:1391 +#: src/libslic3r/PrintConfig.cpp:1499 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 positive, it is loaded further, if negative, the loading move is shorter than unloading." msgstr "Wenn auf null gesetzt, ist der Weg, den das Filament während der Beladung aus der Parkposition zurücklegt, genau der gleiche wie beim Entladen. Im positiven Fall wird sie weiter geladen, im negativen Fall ist die Ladebewegung kürzer als die Entladung." -#: src/libslic3r/PrintConfig.cpp:1238 +#: src/libslic3r/PrintConfig.cpp:1346 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 "Wenn andere Geschwindigkeitseinstellungen auf null gesetzt wurden, wird PrusaSlicer die optimale Geschwindigkeit automatisch berechnen, um den Extruderdruck konstant zu halten. Diese experimentelle Einstellung erlaubt Ihnen, die höchste zulässige Druckgeschwindigkeit anzugeben." -#: src/libslic3r/PrintConfig.cpp:1597 +#: src/libslic3r/PrintConfig.cpp:1705 msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament." msgstr "Wenn der Einzug nach dem Werkzeugwechsel kompensiert wurde, wird der Extruder diese zusätzliche Menge an Filament ausgeben." -#: src/libslic3r/PrintConfig.cpp:1589 +#: src/libslic3r/PrintConfig.cpp:1697 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 "Wenn der Einzug nach der Zwischenbewegung kompensiert wurde, wird der Extruder diese zusätzliche Menge an Filament ausgeben. Diese Einstellung wird selten benötigt." -#: src/slic3r/GUI/Tab.cpp:3263 +#: src/slic3r/GUI/Tab.cpp:3700 msgid "WHITE BULLET" msgstr "WEISSER PUNKT" -#: src/slic3r/GUI/Tab.cpp:3285 +#: src/slic3r/GUI/Tab.cpp:3722 msgid "WHITE BULLET icon indicates a non system (or non default) preset." msgstr "Das Symbol mit dem WEISSEN PUNKT zeigt eine Nicht-System- (oder nicht standardmäßige) Voreinstellung an." -#: src/slic3r/GUI/Tab.cpp:3288 +#: src/slic3r/GUI/Tab.cpp:3725 msgid "WHITE BULLET icon indicates that the settings are the same as in the last saved preset for the current option group." msgstr "Das Symbol WEISSER PUNKT zeigt an, dass die Einstellungen dieselben sind wie in der zuletzt gespeicherten Voreinstellung für die aktuelle Optionsgruppe." -#: src/slic3r/GUI/Tab.cpp:3303 +#: src/slic3r/GUI/Tab.cpp:3740 msgid "WHITE BULLET icon indicates that the value is the same as in the last saved preset." msgstr "Das Symbol WEISSER PUNKT zeigt an, dass der Wert identisch ist mit demjenigen in der zuletzt gespeicherten Voreinstellung." -#: src/slic3r/GUI/GUI_Preview.cpp:223 src/libslic3r/PrintConfig.cpp:2238 +#: src/slic3r/GUI/GUI_Preview.cpp:277 src/libslic3r/PrintConfig.cpp:2381 msgid "Width" msgstr "Breite" -#: src/libslic3r/GCode/PreviewData.cpp:349 +#: src/slic3r/GUI/GCodeViewer.cpp:2237 src/libslic3r/GCode/PreviewData.cpp:354 msgid "Width (mm)" msgstr "Breite (mm)" -#: src/libslic3r/PrintConfig.cpp:2640 +#: src/libslic3r/PrintConfig.cpp:2783 msgid "Width from the back sphere center to the front sphere center" msgstr "Abstand von der Mitte der hinteren Kugel bis zur Mitte der vorderen Kugel" -#: src/libslic3r/PrintConfig.cpp:2239 +#: src/libslic3r/PrintConfig.cpp:2382 msgid "Width of a wipe tower" msgstr "Breite des Reinigungsturms" -#: src/libslic3r/PrintConfig.cpp:2891 +#: src/libslic3r/PrintConfig.cpp:3055 msgid "Width of the connector sticks which connect the object and the generated pad." msgstr "Breite der Verbindungsstäbe, die das Objekt und die erzeugte Grundschicht verbinden." -#: src/libslic3r/PrintConfig.cpp:2354 +#: src/libslic3r/PrintConfig.cpp:2497 msgid "Width of the display" msgstr "Displaybreite" -#: src/slic3r/GUI/PresetHints.cpp:48 +#: src/slic3r/GUI/PresetHints.cpp:47 msgid "will always run at %1%%%" msgstr "wird immer mit %1%%% laufen" -#: src/slic3r/GUI/PresetHints.cpp:55 +#: src/slic3r/GUI/PresetHints.cpp:54 msgid "will be turned off." msgstr "wird abgeschaltet." -#: src/libslic3r/PrintConfig.cpp:2441 +#: 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." -#: src/libslic3r/PrintConfig.cpp:2261 +#: src/libslic3r/PrintConfig.cpp:2404 msgid "Wipe into this object" msgstr "Dieses Objekt zum Reinigen verwenden" -#: src/libslic3r/PrintConfig.cpp:2253 +#: src/libslic3r/PrintConfig.cpp:2396 msgid "Wipe into this object's infill" msgstr "Das Infill dieses Objekts zum Reinigen verwenden" -#: src/slic3r/GUI/GUI_ObjectList.cpp:39 src/slic3r/GUI/GUI_ObjectList.cpp:101 -#: src/slic3r/GUI/GUI_ObjectList.cpp:619 src/libslic3r/PrintConfig.cpp:2252 -#: src/libslic3r/PrintConfig.cpp:2260 +#: 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:2395 +#: src/libslic3r/PrintConfig.cpp:2403 msgid "Wipe options" msgstr "Wischoptionen" -#: src/slic3r/GUI/GUI_Preview.cpp:248 src/slic3r/GUI/Tab.cpp:1191 -#: src/libslic3r/ExtrusionEntity.cpp:321 +#: src/slic3r/GUI/GUI_Preview.cpp:313 src/slic3r/GUI/Tab.cpp:1521 +#: src/libslic3r/ExtrusionEntity.cpp:326 src/libslic3r/ExtrusionEntity.cpp:360 msgid "Wipe tower" msgstr "Reinigungsturm" -#: src/slic3r/GUI/Plater.cpp:1231 src/slic3r/GUI/Plater.cpp:1245 +#: src/slic3r/GUI/Plater.cpp:1143 src/slic3r/GUI/Plater.cpp:1160 msgid "wipe tower" msgstr "Reinigungsturm" -#: src/slic3r/GUI/ConfigManipulation.cpp:120 -#: src/slic3r/GUI/ConfigManipulation.cpp:140 +#: src/slic3r/GUI/ConfigManipulation.cpp:119 +#: src/slic3r/GUI/ConfigManipulation.cpp:139 msgid "Wipe Tower" msgstr "Reinigungsturm" @@ -8954,36 +10241,36 @@ msgstr "Reinigungsturm" msgid "Wipe tower - Purging volume adjustment" msgstr "Reinigungsturm - Anpassung des Reinigungsvolumens" -#: src/slic3r/GUI/Tab.cpp:1488 +#: src/slic3r/GUI/Tab.cpp:1834 msgid "Wipe tower parameters" msgstr "Reinigungsturm Parameter" -#: src/libslic3r/PrintConfig.cpp:2245 +#: src/libslic3r/PrintConfig.cpp:2388 msgid "Wipe tower rotation angle" msgstr "Rotationswinkel des Reinigungsturms" -#: src/libslic3r/PrintConfig.cpp:2246 +#: src/libslic3r/PrintConfig.cpp:2389 msgid "Wipe tower rotation angle with respect to x-axis." msgstr "Rotationswinkel des Reinigungsturms bezogen auf die X-Achse." -#: src/libslic3r/PrintConfig.cpp:2193 +#: src/libslic3r/PrintConfig.cpp:2336 msgid "Wipe while retracting" msgstr "Während Einzug reinigen" -#: src/slic3r/GUI/PresetHints.cpp:225 +#: src/slic3r/GUI/PresetHints.cpp:224 msgid "with a volumetric rate" msgstr "mit einer Volumenrate von" -#: src/libslic3r/PrintConfig.cpp:1530 +#: src/libslic3r/PrintConfig.cpp:1638 msgid "With bowden extruders, it may be wise to do some amount of quick retract before doing the wipe movement." msgstr "Bei Bowden-Extrudern kann es ratsam sein, vor der Reinigungsbewegung einen kurzen Einzug auszuführen." -#: src/libslic3r/PrintConfig.cpp:2056 +#: src/libslic3r/PrintConfig.cpp:2198 msgid "With sheath around the support" msgstr "Mit Umhüllung der Stützen" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:62 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:105 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:68 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:111 msgid "World coordinates" msgstr "Weltkoordinaten" @@ -9001,84 +10288,100 @@ msgstr "" "\n" "Aktualisierte Konfigurationssammlungen:" -#: src/libslic3r/Zipper.cpp:92 +#: src/libslic3r/miniz_extension.cpp:151 msgid "write calledback failed" msgstr "Schreibabruf fehlgeschlagen" -#: src/libslic3r/PrintConfig.cpp:3382 +#: src/libslic3r/PrintConfig.cpp:3581 msgid "Write information about the model to the console." msgstr "Schreibt Informationen über das Modell auf die Konsole." -#: src/slic3r/Utils/Duet.cpp:131 +#: src/slic3r/Utils/Duet.cpp:133 msgid "Wrong password" msgstr "Ungültiges Kennwort" -#: src/libslic3r/PrintConfig.cpp:2225 +#: src/libslic3r/PrintConfig.cpp:2368 msgid "X coordinate of the left front corner of a wipe tower" msgstr "X-Koordinate der linken vorderen Ecke des Reinigungsturms" -#: src/libslic3r/PrintConfig.cpp:1879 +#: src/libslic3r/PrintConfig.cpp:2021 msgid "XY separation between an object and its support" msgstr "XY-Abstand zwischen einem Objekt und seinen Stützen" -#: src/libslic3r/PrintConfig.cpp:1881 +#: src/libslic3r/PrintConfig.cpp:2023 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 "XY-Abstand zwischen einem Objekt und seinen Stützen. Falls in Prozenten angegeben (z.B. 50%), wird der Abstand von der Breite der Außenkontur ausgehend berechnet." -#: src/libslic3r/PrintConfig.cpp:2275 +#: src/libslic3r/PrintConfig.cpp:2418 msgid "XY Size Compensation" msgstr "XY-Größenausgleich" -#: src/libslic3r/PrintConfig.cpp:2232 +#: src/libslic3r/PrintConfig.cpp:2375 msgid "Y coordinate of the left front corner of a wipe tower" msgstr "Y-Koordinate der linken vorderen Ecke des Reinigungsturms" -#: src/slic3r/GUI/Plater.cpp:1170 +#: src/slic3r/GUI/Plater.cpp:1079 msgid "Yes" msgstr "Ja" -#: src/libslic3r/PrintConfig.cpp:1317 +#: src/slic3r/GUI/Plater.cpp:1405 +msgid "You can open only one .gcode file at a time." +msgstr "Sie können immer nur eine .gcode-Datei gleichzeitig öffnen." + +#: src/libslic3r/PrintConfig.cpp:1425 msgid "You can put here your personal notes. This text will be added to the G-code header comments." msgstr "Sie können hier Ihre persönlichen Notizen eingeben. Der Text wird dem Header vom G-Code hinzugefügt." -#: src/libslic3r/PrintConfig.cpp:589 +#: src/libslic3r/PrintConfig.cpp:625 msgid "You can put your notes regarding the filament here." msgstr "Sie können Ihre Notizen zum Filament hier eingeben." -#: src/libslic3r/PrintConfig.cpp:1473 +#: src/libslic3r/PrintConfig.cpp:1581 msgid "You can put your notes regarding the printer here." msgstr "Sie können Ihre Bemerkungen zum Drucker hier eingeben." -#: src/libslic3r/PrintConfig.cpp:2579 +#: src/libslic3r/PrintConfig.cpp:2722 msgid "You can put your notes regarding the SLA print material here." msgstr "Sie können Ihre Notizen zum SLA Druckmaterial hier eingeben." -#: src/libslic3r/PrintConfig.cpp:360 +#: src/libslic3r/PrintConfig.cpp:394 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 "Sie können einen positiven Wert eingeben, um den Lüfter vollständig für die ersten Schichten auszuschalten, damit er die Haftung nicht beeinträchtigt." -#: src/libslic3r/PrintConfig.cpp:1364 +#: src/libslic3r/PrintConfig.cpp:1472 msgid "You can use all configuration options as variables inside this template. For example: [layer_height], [fill_density] etc. You can also use [timestamp], [year], [month], [day], [hour], [minute], [second], [version], [input_filename], [input_filename_base]." msgstr "Sie können alle Konfigurationsoptionen als Variablen in dieser Vorlage benutzen. Zum Beispiel: [layer_height], [fill_density] usw. Sie können auch [timestamp], [year], [month], [day], [hour], [minute], [second], [version], [input_filename], und [input_filename_base] benutzen." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3546 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4009 msgid "You can't change a type of the last solid part of the object." msgstr "Sie können nicht die Art des letzten soliden Teils des Objektes ändern." -#: src/slic3r/GUI/Plater.cpp:2390 +#: src/slic3r/GUI/Plater.cpp:2352 #, 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 "Sie können die Objekte aus %s nicht hinzufügen, weil eines oder einige von ihnen mehrteilig ist (sind)" -#: src/slic3r/GUI/Plater.cpp:2311 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:208 src/slic3r/GUI/Plater.cpp:2254 msgid "You cannot load SLA project with a multi-part object on the bed" msgstr "Sie können kein SLA-Projekt mit einem mehrteiligen Objekt auf das Druckbett laden" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:578 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:625 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/GLCanvas3DManager.cpp:287 +#: src/slic3r/GUI/SavePresetDialog.cpp:277 +msgid "" +"You have selected physical printer \"%1%\" \n" +"with related printer preset \"%2%\"" +msgstr "" +"Sie haben den physischen Drucker \"%1%\" ausgewählt \n" +"mit der zugehörigen Druckervoreinstellung \"%2%\"." + +#: src/slic3r/GUI/GUI_App.cpp:1078 +msgid "You have the following presets with saved options for \"Print Host upload\"" +msgstr "Sie haben die folgenden Voreinstellungen mit gespeicherten Optionen für \"Hochladen zum Druckhost\"" + +#: src/slic3r/GUI/OpenGLManager.cpp:262 msgid "You may need to update your graphics card driver." msgstr "Möglicherweise müssen Sie Ihren Grafikkartentreiber aktualisieren." @@ -9086,37 +10389,49 @@ msgstr "Möglicherweise müssen Sie Ihren Grafikkartentreiber aktualisieren." msgid "You must install a configuration update." msgstr "Ein Konfigurations-Update muss installiert werden." -#: src/slic3r/GUI/Preferences.cpp:172 +#: src/slic3r/GUI/Preferences.cpp:299 #, c-format msgid "You need to restart %s to make the changes effective." msgstr "Sie müssen %s neu starten, damit die Änderungen wirksam werden." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3421 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:468 +msgid "You should to change a name of your printer device. It can't be saved." +msgstr "Sie sollten den Namen Ihres Druckers ändern. Er kann nicht gespeichert werden." + +#: src/slic3r/GUI/GUI_ObjectList.cpp:3884 #, c-format msgid "You started your selection with %s Item." msgstr "Sie haben Ihre Auswahl mit %s Elementen begonnen." -#: src/slic3r/GUI/DoubleSlider.cpp:1902 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:664 +msgid "You will not be asked about the unsaved changes the next time you close PrusaSlicer." +msgstr "Wenn Sie PrusaSlicer das nächste Mal schließen, werden Sie nicht nach den ungespeicherten Änderungen gefragt." + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:665 +msgid "You will not be asked about the unsaved changes the next time you switch a preset." +msgstr "Wenn Sie das nächste Mal eine Voreinstellung wechseln, werden Sie nicht nach den ungespeicherten Änderungen gefragt." + +#: src/slic3r/GUI/DoubleSlider.cpp:2121 msgid "Your current changes will delete all saved color changes." msgstr "Ihre aktuellen Änderungen löschen alle gespeicherten Farbwechsel." -#: src/slic3r/GUI/DoubleSlider.cpp:1923 +#: src/slic3r/GUI/DoubleSlider.cpp:2141 msgid "Your current changes will delete all saved extruder (tool) changes." msgstr "Ihre aktuellen Änderungen löschen alle gespeicherten Extruder-(Werkzeug-) Wechsel." -#: src/slic3r/GUI/MainFrame.cpp:911 +#: src/slic3r/GUI/MainFrame.cpp:1612 msgid "Your file was repaired." msgstr "Ihre Datei wurde repariert." -#: src/slic3r/GUI/Plater.cpp:2528 +#: src/slic3r/GUI/Plater.cpp:2490 msgid "Your object appears to be too large, so it was automatically scaled down to fit your print bed." msgstr "Ihr Objekt scheint zu groß zu sein. Es wurde deshalb automatisch verkleinert, um auf Ihre Druckplatte zu passen." -#: src/libslic3r/PrintConfig.cpp:2285 +#: src/libslic3r/PrintConfig.cpp:2428 msgid "Z offset" msgstr "Z-Abstand" -#: src/slic3r/GUI/ConfigManipulation.cpp:60 +#: src/slic3r/GUI/ConfigManipulation.cpp:59 msgid "" "Zero first layer height is not valid.\n" "\n" @@ -9126,7 +10441,7 @@ msgstr "" "\n" "Die erste Schichthöhe wird auf 0,01 zurückgesetzt." -#: src/slic3r/GUI/ConfigManipulation.cpp:48 +#: src/slic3r/GUI/ConfigManipulation.cpp:47 msgid "" "Zero layer height is not valid.\n" "\n" @@ -9136,28 +10451,28 @@ msgstr "" "\n" "Die Schichthöhe wird auf 0,01 zurückgesetzt." -#: src/libslic3r/PrintConfig.cpp:2667 +#: src/libslic3r/PrintConfig.cpp:2831 msgid "Zig-Zag" msgstr "Zickzack" -#: src/slic3r/GUI/Mouse3DController.cpp:308 -#: src/slic3r/GUI/Mouse3DController.cpp:317 +#: src/slic3r/GUI/Mouse3DController.cpp:294 +#: src/slic3r/GUI/Mouse3DController.cpp:303 msgid "Zoom" msgstr "Zoom" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:183 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:177 msgid "Zoom in" msgstr "Heranzoomen" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:184 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:178 msgid "Zoom out" msgstr "Herauszoomen" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:181 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:175 msgid "Zoom to Bed" msgstr "Zoom aufs Druckbett" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:182 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:176 msgid "" "Zoom to selected object\n" "or all objects in scene, if none selected" @@ -9165,14 +10480,16 @@ msgstr "" "Auf ausgewähltes Objekt zoomen\n" "oder alle Objekte in der Szene, wenn keines ausgewählt ist" -#: src/libslic3r/PrintConfig.cpp:207 src/libslic3r/PrintConfig.cpp:780 -#: src/libslic3r/PrintConfig.cpp:1640 src/libslic3r/PrintConfig.cpp:1650 -#: src/libslic3r/PrintConfig.cpp:1894 src/libslic3r/PrintConfig.cpp:2049 -#: src/libslic3r/PrintConfig.cpp:2247 src/libslic3r/PrintConfig.cpp:2727 -#: src/libslic3r/PrintConfig.cpp:2848 +#: src/libslic3r/PrintConfig.cpp:241 src/libslic3r/PrintConfig.cpp:816 +#: src/libslic3r/PrintConfig.cpp:1748 src/libslic3r/PrintConfig.cpp:1758 +#: src/libslic3r/PrintConfig.cpp:2036 src/libslic3r/PrintConfig.cpp:2191 +#: src/libslic3r/PrintConfig.cpp:2390 src/libslic3r/PrintConfig.cpp:2891 +#: src/libslic3r/PrintConfig.cpp:3012 msgid "°" msgstr "°" -#: src/slic3r/GUI/ConfigWizard.cpp:1038 src/slic3r/GUI/ConfigWizard.cpp:1052 +#: src/slic3r/GUI/ConfigWizard.cpp:1404 src/slic3r/GUI/ConfigWizard.cpp:1418 +#: src/libslic3r/PrintConfig.cpp:180 src/libslic3r/PrintConfig.cpp:912 +#: src/libslic3r/PrintConfig.cpp:956 src/libslic3r/PrintConfig.cpp:2209 msgid "°C" msgstr "°C" diff --git a/resources/localization/es/PrusaSlicer.mo b/resources/localization/es/PrusaSlicer.mo index 0da47d5b62..43aaac113a 100644 Binary files a/resources/localization/es/PrusaSlicer.mo and b/resources/localization/es/PrusaSlicer.mo differ diff --git a/resources/localization/es/PrusaSlicer_es.po b/resources/localization/es/PrusaSlicer_es.po index 0e69f373c4..2dbf8e8aaf 100644 --- a/resources/localization/es/PrusaSlicer_es.po +++ b/resources/localization/es/PrusaSlicer_es.po @@ -5,82 +5,106 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 2.3\n" +"X-Generator: Poedit 2.4.2\n" "Project-Id-Version: \n" "POT-Creation-Date: \n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" -#: src/slic3r/GUI/MainFrame.cpp:66 -msgid " - Remember to check for updates at http://github.com/prusa3d/PrusaSlicer/releases" -msgstr " - Recuerda comprobar las actualizaciones en http://github.com/prusa3d/PrusaSlicer/releases" +#: src/slic3r/GUI/Tab.cpp:4124 +msgid "" +"\"%1%\" is disabled because \"%2%\" is on in \"%3%\" category.\n" +"To enable \"%1%\", please switch off \"%2%\"" +msgstr "" +"\"%1%\" está desactivado porque \"%2%\" está en la categoría \"%3%\".\n" +"Para activar \"%1%\", por favor desactiva \"%2%\"" -#: src/slic3r/GUI/MainFrame.cpp:872 -msgid " was successfully sliced." -msgstr " fue laminado con éxito." - -#: src/libslic3r/PrintConfig.cpp:215 src/libslic3r/PrintConfig.cpp:792 -#: src/libslic3r/PrintConfig.cpp:1219 src/libslic3r/PrintConfig.cpp:1282 -#: src/libslic3r/PrintConfig.cpp:1532 src/libslic3r/PrintConfig.cpp:2425 -#: src/libslic3r/PrintConfig.cpp:2767 +#: src/libslic3r/PrintConfig.cpp:249 src/libslic3r/PrintConfig.cpp:828 +#: src/libslic3r/PrintConfig.cpp:1148 src/libslic3r/PrintConfig.cpp:1327 +#: src/libslic3r/PrintConfig.cpp:1390 src/libslic3r/PrintConfig.cpp:1640 +#: src/libslic3r/PrintConfig.cpp:2568 src/libslic3r/PrintConfig.cpp:2805 +#: src/libslic3r/PrintConfig.cpp:2931 msgid "%" msgstr "%" -#: src/slic3r/GUI/GLCanvas3D.cpp:963 +#: src/slic3r/GUI/GLCanvas3D.cpp:969 #, c-format msgid "%.2f - %.2f mm" msgstr "%.2f - %.2f mm" #. TRN Remove/Delete -#: src/slic3r/GUI/Tab.cpp:3126 +#: src/slic3r/GUI/Tab.cpp:3425 msgid "%1% Preset" msgstr "%1% Preset" -#: src/slic3r/GUI/Plater.cpp:4400 +#: src/slic3r/GUI/Plater.cpp:4423 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 "La impresora %1% esta activa mientras la captura del objetivo de Deshacer / Rehacer fue tomada. Cambiar a la impresora %1% requiere recargar los preajustes %1%." -#: src/libslic3r/Print.cpp:1374 +#: src/slic3r/GUI/MainFrame.cpp:1585 +msgid "%1% was successfully sliced." +msgstr "%1% fue laminado con éxito." + +#: src/libslic3r/Print.cpp:1400 msgid "%1%=%2% mm is too low to be printable at a layer height %3% mm" msgstr "%1%=%2% mm es demasiado bajo para ser impreso a una altura de capa de %3% mm" -#: src/slic3r/GUI/PresetHints.cpp:229 +#: src/slic3r/GUI/PresetHints.cpp:228 #, c-format msgid "%3.2f mm³/s at filament speed %3.2f mm/s." msgstr "%3.2f mm³/s a una velocidad de filamento de %3.2f mm/s." -#: src/slic3r/GUI/Plater.cpp:1152 +#: src/slic3r/GUI/Plater.cpp:1061 #, c-format msgid "%d (%d shells)" msgstr "%d (%d pieles)" -#: src/slic3r/GUI/Plater.cpp:1160 +#: src/slic3r/GUI/Plater.cpp:1069 #, c-format msgid "%d degenerate facets, %d edges fixed, %d facets removed, %d facets added, %d facets reversed, %d backwards edges" msgstr "%d facetas problemáticas, %d aristas corregidas, %d facetas eliminadas, %d facetas añadidas, %d facetas invertidas, %d aristas del revés" -#: src/slic3r/GUI/PresetHints.cpp:270 +#: src/slic3r/GUI/PresetHints.cpp:269 #, c-format msgid "%d lines: %.2f mm" msgstr "%d líneas: %.2f mm" -#: src/slic3r/GUI/MainFrame.cpp:1027 +#: src/slic3r/GUI/MainFrame.cpp:1728 #, c-format msgid "%d presets successfully imported." msgstr "%d ajustes iniciales importados con éxito." -#: src/slic3r/GUI/MainFrame.cpp:692 +#: src/slic3r/GUI/GUI_App.cpp:718 +#, c-format +msgid "" +"%s\n" +"Do you want to continue?" +msgstr "" +"%s\n" +"¿Quieres continuar?" + +#: src/slic3r/GUI/MainFrame.cpp:917 src/slic3r/GUI/MainFrame.cpp:1316 #, c-format msgid "%s &Website" msgstr "%s Sitio &Web" +#: src/slic3r/GUI/GUI_App.cpp:394 +#, c-format +msgid "%s - BREAKING CHANGE" +msgstr "%s - CAMBIO IMPORTANTE" + +#: src/slic3r/GUI/Plater.cpp:1410 +#, c-format +msgid "%s - Drop project file" +msgstr "%s - Soltar archivo de proyecto" + #: src/slic3r/GUI/UpdateDialogs.cpp:211 #, c-format msgid "%s configuration is incompatible" msgstr "%s la configuración es incompatible" -#: src/slic3r/GUI/Field.cpp:175 +#: src/slic3r/GUI/Field.cpp:223 #, c-format msgid "%s doesn't support percentage" msgstr "%s no permite porcentajes" @@ -90,7 +114,7 @@ msgstr "%s no permite porcentajes" msgid "%s error" msgstr "%s error" -#: src/slic3r/GUI/ConfigWizard.cpp:481 +#: src/slic3r/GUI/ConfigWizard.cpp:499 #, c-format msgid "%s Family" msgstr "%s Familia" @@ -100,7 +124,7 @@ msgstr "%s Familia" msgid "%s has encountered an error" msgstr "%s ha ocurrido un error" -#: src/slic3r/GUI/GUI_App.cpp:138 +#: src/slic3r/GUI/GUI_App.cpp:528 #, c-format msgid "" "%s has encountered an error. It was likely caused by running out of memory. If you are sure you have enough RAM on your system, this may also be a bug and we would be glad if you reported it.\n" @@ -111,12 +135,12 @@ msgstr "" "\n" "La aplicación se cerrará." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:222 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:62 #, c-format msgid "%s has encountered an error. It was likely caused by running out of memory. If you are sure you have enough RAM on your system, this may also be a bug and we would be glad if you reported it." msgstr "%s ha encontrado un error. Probablemente fue causado por quedarse sin memoria. Si estás seguro de tener suficiente RAM en su sistema, esto también puede ser un error y nos complacería que lo informaras." -#: src/slic3r/GUI/UpdateDialogs.cpp:308 +#: src/slic3r/GUI/UpdateDialogs.cpp:309 #, c-format msgid "%s has no configuration updates available." msgstr "%s no tiene actualizaciones de configuración disponibles." @@ -143,7 +167,7 @@ msgstr "" "\n" "Por favof, continúa con el %s que sigue para establecer los nuevos ajustes y seleccionar si quieres que estos se actualicen automáticamente." -#: src/slic3r/GUI/GUI_App.cpp:820 +#: src/slic3r/GUI/GUI_App.cpp:1512 #, c-format msgid "%s View Mode" msgstr "%s Tipo de vista" @@ -163,218 +187,252 @@ msgstr "" "\n" "Configuraciones actualizadas:" -#: src/slic3r/GUI/MainFrame.cpp:705 +#: src/slic3r/GUI/MainFrame.cpp:933 src/slic3r/GUI/MainFrame.cpp:937 +#: src/slic3r/GUI/MainFrame.cpp:1329 #, c-format msgid "&About %s" msgstr "&Acerca de %s" -#: src/slic3r/GUI/GUI_App.cpp:908 +#: src/slic3r/GUI/MainFrame.cpp:1297 +msgid "&Collapse sidebar" +msgstr "Barra lateral ocultable (&C)" + +#: src/slic3r/GUI/GUI_App.cpp:1645 msgid "&Configuration" msgstr "&Configuración" -#: src/slic3r/GUI/GUI_App.cpp:800 +#: src/slic3r/GUI/GUI_App.cpp:1480 msgid "&Configuration Snapshots" msgstr "Instantáneas de la &Configuración" -#: src/slic3r/GUI/MainFrame.cpp:588 +#: src/slic3r/GUI/MainFrame.cpp:1194 msgid "&Copy" msgstr "&Copiar" -#: src/slic3r/GUI/MainFrame.cpp:572 +#: src/slic3r/GUI/MainFrame.cpp:1178 msgid "&Delete selected" msgstr "Eli&minar selección" -#: src/slic3r/GUI/MainFrame.cpp:722 +#: src/slic3r/GUI/MainFrame.cpp:1348 src/slic3r/GUI/MainFrame.cpp:1358 msgid "&Edit" msgstr "&Editar" -#: src/slic3r/GUI/MainFrame.cpp:506 +#: src/slic3r/GUI/MainFrame.cpp:1103 msgid "&Export" msgstr "&Exportar" -#: src/slic3r/GUI/MainFrame.cpp:617 src/slic3r/GUI/MainFrame.cpp:752 +#: src/slic3r/GUI/MainFrame.cpp:1224 src/slic3r/GUI/MainFrame.cpp:1451 msgid "&Filament Settings Tab" msgstr "Pestaña de Ajustes de &filamento" -#: src/slic3r/GUI/MainFrame.cpp:721 +#: src/slic3r/GUI/MainFrame.cpp:1347 src/slic3r/GUI/MainFrame.cpp:1357 +#: src/slic3r/GUI/MainFrame.cpp:1417 msgid "&File" msgstr "&Archivo" -#: src/slic3r/GUI/ConfigWizard.cpp:1981 +#: src/slic3r/GUI/ConfigWizard.cpp:2492 msgid "&Finish" msgstr "&Terminar" -#: src/slic3r/GUI/MainFrame.cpp:727 +#: src/slic3r/GUI/MainFrame.cpp:1141 +msgid "&G-code preview" +msgstr "Previsualización código G (&G)" + +#: src/slic3r/GUI/MainFrame.cpp:1353 src/slic3r/GUI/MainFrame.cpp:1363 +#: src/slic3r/GUI/MainFrame.cpp:1423 msgid "&Help" msgstr "Ayu&da" -#: src/slic3r/GUI/MainFrame.cpp:474 +#: src/slic3r/GUI/MainFrame.cpp:1065 msgid "&Import" msgstr "&Importar" -#: src/slic3r/GUI/GUI_App.cpp:822 +#: src/slic3r/GUI/GUI_App.cpp:1517 msgid "&Language" msgstr "&Idioma" -#: src/slic3r/GUI/MainFrame.cpp:405 +#: src/slic3r/GUI/MainFrame.cpp:986 msgid "&New Project" msgstr "&Nuevo proyecto" -#: src/slic3r/GUI/ConfigWizard.cpp:1980 +#: src/slic3r/GUI/ConfigWizard.cpp:2491 msgid "&Next >" msgstr "&Siguiente >" -#: src/slic3r/GUI/MainFrame.cpp:408 +#: src/slic3r/GUI/MainFrame.cpp:1391 +msgid "&Open G-code" +msgstr "Abrir código G (&O)" + +#: src/slic3r/GUI/MainFrame.cpp:989 msgid "&Open Project" msgstr "Abrir pr&oyecto" -#: src/slic3r/GUI/MainFrame.cpp:591 +#: src/slic3r/GUI/MainFrame.cpp:1197 msgid "&Paste" msgstr "&Pegar" -#: src/slic3r/GUI/MainFrame.cpp:606 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "&Plater Tab" msgstr "&Pestaña Base de impresión" -#: src/slic3r/GUI/GUI_App.cpp:804 +#: src/slic3r/GUI/GUI_App.cpp:1487 msgid "&Preferences" msgstr "&Preferencias" -#: src/slic3r/GUI/MainFrame.cpp:540 +#: src/slic3r/GUI/MainFrame.cpp:1144 src/slic3r/GUI/MainFrame.cpp:1402 msgid "&Quit" msgstr "Sa&lir" -#: src/slic3r/GUI/MainFrame.cpp:583 +#: src/slic3r/GUI/MainFrame.cpp:1189 msgid "&Redo" msgstr "&Rehacer" -#: src/slic3r/GUI/MainFrame.cpp:536 +#: src/slic3r/GUI/MainFrame.cpp:1137 msgid "&Repair STL file" msgstr "&Reparar archivo STL" -#: src/slic3r/GUI/MainFrame.cpp:446 +#: src/slic3r/GUI/MainFrame.cpp:1028 msgid "&Save Project" msgstr "G&uardar proyecto" -#: src/slic3r/GUI/MainFrame.cpp:565 +#: src/slic3r/GUI/MainFrame.cpp:1171 msgid "&Select all" msgstr "&Seleccionar todo" -#: src/slic3r/GUI/MainFrame.cpp:580 +#: src/slic3r/GUI/MainFrame.cpp:1186 msgid "&Undo" msgstr "Des&hacer" -#: src/slic3r/GUI/MainFrame.cpp:724 +#: src/slic3r/GUI/MainFrame.cpp:1350 src/slic3r/GUI/MainFrame.cpp:1360 +#: src/slic3r/GUI/MainFrame.cpp:1418 msgid "&View" msgstr "Ve&r" -#: src/slic3r/GUI/MainFrame.cpp:723 +#: src/slic3r/GUI/MainFrame.cpp:1349 src/slic3r/GUI/MainFrame.cpp:1359 msgid "&Window" msgstr "&Ventana" -#: src/slic3r/GUI/ConfigWizard.cpp:603 src/slic3r/GUI/ConfigWizard.cpp:631 +#: src/slic3r/GUI/ConfigWizard.cpp:662 src/slic3r/GUI/ConfigWizard.cpp:812 +#: src/slic3r/GUI/ConfigWizard.cpp:873 src/slic3r/GUI/ConfigWizard.cpp:1007 msgid "(All)" msgstr "(Todo)" -#: src/libslic3r/PrintConfig.cpp:1446 +#: src/libslic3r/PrintConfig.cpp:1554 msgid "(minimum)" msgstr "(mínimo)" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:116 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:109 msgid "(Re)slice" msgstr "(Re)laminar" -#: src/slic3r/GUI/MainFrame.cpp:532 +#: src/slic3r/GUI/MainFrame.cpp:1133 msgid "(Re)Slice No&w" msgstr "(Re)Laminar A&hora" -#: src/libslic3r/PrintConfig.cpp:771 src/libslic3r/PrintConfig.cpp:2587 +#: src/libslic3r/PrintConfig.cpp:807 src/libslic3r/PrintConfig.cpp:2730 msgid "(Unknown)" msgstr "(Desconocido)" -#: src/slic3r/GUI/MainFrame.cpp:790 +#: src/slic3r/GUI/MainFrame.cpp:1491 msgid ") not found." msgstr ") no encontrado." -#: src/libslic3r/PrintConfig.cpp:1918 +#: src/libslic3r/PrintConfig.cpp:2060 msgid "0 (soluble)" msgstr "0 (soluble)" -#: src/libslic3r/PrintConfig.cpp:1919 +#: src/libslic3r/PrintConfig.cpp:2061 msgid "0.2 (detachable)" msgstr "0.2 (despegable)" -#: src/slic3r/GUI/MainFrame.cpp:626 +#: src/slic3r/GUI/MainFrame.cpp:1234 msgid "3&D" msgstr "3&D" -#: src/slic3r/GUI/Plater.cpp:4097 +#: src/slic3r/GUI/Plater.cpp:4044 msgid "3D editor view" msgstr "Vista editor 3D" -#: src/libslic3r/PrintConfig.cpp:851 +#: src/libslic3r/PrintConfig.cpp:889 msgid "3D Honeycomb" msgstr "Panal de abeja 3D" -#: src/slic3r/GUI/Mouse3DController.cpp:274 +#: src/slic3r/GUI/NotificationManager.hpp:318 +msgid "3D Mouse disconnected." +msgstr "Ratón 3D desconectado." + +#: src/slic3r/GUI/Mouse3DController.cpp:263 msgid "3Dconnexion settings" msgstr "Ajustes 3Dconnexion" -#: src/slic3r/GUI/Plater.cpp:5038 +#: src/slic3r/GUI/Plater.cpp:5167 #, c-format msgid "3MF file exported to %s" msgstr "Archivo 3MF exportado a %s" -#: src/slic3r/GUI/ConfigWizard.cpp:1979 +#: src/slic3r/GUI/ConfigWizard.cpp:2490 msgid "< &Back" msgstr "< &Anterior" -#: src/libslic3r/PrintConfig.cpp:287 +#: src/libslic3r/PrintConfig.cpp:321 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 "Una expresión booleana que utiliza los valores de configuración de un perfil de impresión activo. Si esta expresión se evalúa como verdadera, este perfil se considera compatible con el perfil de impresión activo." -#: src/libslic3r/PrintConfig.cpp:272 +#: src/libslic3r/PrintConfig.cpp:306 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 "Una expresión booleana utilizando valores de configuración de un perfil existente. Si esta expresión es verdadera, el perfil será considerado compatible con el perfil de impresión activo." -#: src/slic3r/GUI/Tab.cpp:975 +#: src/slic3r/GUI/Tab.cpp:1237 msgid "A copy of the current system preset will be created, which will be detached from the system preset." msgstr "Se creará una copia del preajuste del sistema actual, que se separará del preajuste del sistema." -#: src/slic3r/GUI/ConfigWizard.cpp:1034 +#: src/slic3r/GUI/ConfigWizard.cpp:1400 msgid "A rule of thumb is 160 to 230 °C for PLA, and 215 to 250 °C for ABS." msgstr "Una buena aproximación es de 160 a 230 °C para PLA y de 215 a 250 °C para ABS." -#: src/slic3r/GUI/ConfigWizard.cpp:1048 +#: src/slic3r/GUI/ConfigWizard.cpp:1414 msgid "A rule of thumb is 60 °C for PLA and 110 °C for ABS. Leave zero if you have no heated bed." msgstr "Una buena aproximación son unos 60 °C para PLA y 110 °C para ABS. Deja el valor a cero si no tienes base calefactable." -#: src/slic3r/GUI/GLCanvas3D.cpp:686 -msgid "A toolpath outside the print area was detected" -msgstr "Se detectó una trayectoria fuera del área de impresión" +#: src/slic3r/GUI/GLCanvas3D.cpp:634 +msgid "A toolpath outside the print area was detected." +msgstr "Ha sido detectada una trayectoria fuera del área de impresión." -#: src/slic3r/GUI/AboutDialog.cpp:199 +#: src/slic3r/GUI/AboutDialog.cpp:212 src/slic3r/GUI/AboutDialog.cpp:215 #, c-format msgid "About %s" msgstr "Acerca de %s" -#: src/slic3r/GUI/GLCanvas3D.cpp:959 +#: src/slic3r/GUI/GCodeViewer.cpp:2189 +msgid "above" +msgstr "sobre" + +#: src/slic3r/GUI/GLCanvas3D.cpp:965 #, c-format msgid "above %.2f mm" msgstr "sobre %.2f mm" -#: src/libslic3r/PrintConfig.cpp:1569 +#: src/libslic3r/PrintConfig.cpp:1677 msgid "Above Z" msgstr "Encima de Z" -#: src/slic3r/GUI/Tab.cpp:1164 +#: src/slic3r/GUI/Tab.cpp:1494 msgid "Acceleration control (advanced)" msgstr "Control de aceleración (avanzado)" -#: src/libslic3r/PrintConfig.cpp:2925 +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:221 +#: src/libslic3r/PrintConfig.cpp:3089 msgid "Accuracy" msgstr "Precisión" +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:59 +msgid "Accurate" +msgstr "Preciso" + +#: src/slic3r/GUI/Plater.cpp:1423 +msgid "Action" +msgstr "Acción" + #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:78 msgid "Activate" msgstr "Activar" @@ -383,67 +441,75 @@ msgstr "Activar" msgid "Active" msgstr "Activo" -#: src/slic3r/GUI/DoubleSlider.cpp:1135 src/slic3r/GUI/GUI_ObjectList.cpp:1705 +#: src/slic3r/GUI/DoubleSlider.cpp:1264 src/slic3r/GUI/GUI_ObjectList.cpp:1833 msgid "active" msgstr "activo" -#: src/slic3r/GUI/GLCanvas3D.cpp:267 +#: src/slic3r/GUI/GLCanvas3D.cpp:254 msgid "Adaptive" msgstr "Adaptativa" -#: src/slic3r/GUI/Tab.cpp:241 -msgid "Add a new printer" -msgstr "Añadir una impresora nueva" +#: src/libslic3r/PrintConfig.cpp:894 +msgid "Adaptive Cubic" +msgstr "Cúbico Adaptativo" -#: src/libslic3r/PrintConfig.cpp:2782 +#: src/slic3r/GUI/SavePresetDialog.cpp:314 +msgid "Add \"%1%\" as a next preset for the the physical printer \"%2%\"" +msgstr "Añade \"%1%\" como siguiente ajuste preestablecido para la impresora física \"%2%\"" + +#: src/libslic3r/PrintConfig.cpp:2946 msgid "Add a pad underneath the supported model" msgstr "Añade un pad debajo del modelo compatible" -#: src/libslic3r/PrintConfig.cpp:2058 +#: src/libslic3r/PrintConfig.cpp:2200 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 "Añadir una funda (una sola línea de perímetro) alrededor de la base del soporte. Esto hace el soporte más fiable pero también más difícil de retirar." -#: src/slic3r/GUI/DoubleSlider.cpp:991 +#: src/slic3r/GUI/DoubleSlider.cpp:1114 msgid "Add another code - Ctrl + Left click" msgstr "Añadir otro código - Ctrl + Click izquierdo" -#: src/slic3r/GUI/DoubleSlider.cpp:992 +#: src/slic3r/GUI/DoubleSlider.cpp:1115 msgid "Add another code - Right click" msgstr "Añadir otro código - Click derecho" -#: src/slic3r/GUI/DoubleSlider.cpp:1477 +#: src/slic3r/GUI/DoubleSlider.cpp:1665 msgid "Add color change" msgstr "Añadir cambio de color" -#: src/slic3r/GUI/DoubleSlider.cpp:1180 +#: src/slic3r/GUI/DoubleSlider.cpp:1307 msgid "Add color change (%1%) for:" msgstr "Añadir cambio de color (%1%) para:" -#: src/slic3r/GUI/DoubleSlider.cpp:988 +#: src/slic3r/GUI/DoubleSlider.cpp:1111 msgid "Add color change - Left click" msgstr "Añadir cambio de color - Click izquierdo" -#: src/slic3r/GUI/DoubleSlider.cpp:986 +#: src/slic3r/GUI/DoubleSlider.cpp:1109 msgid "Add color change - Left click for predefined color or Shift + Left click for custom color selection" msgstr "Añadir cambio de color - Click izquierdo para color preddefinido o Mayus + Click izquierdo para selección de color personalizada" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:218 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:219 msgid "Add color change marker for current layer" msgstr "Añadir marcador de cambio de color para la capa actual" -#: src/slic3r/GUI/DoubleSlider.cpp:1490 +#: src/slic3r/GUI/DoubleSlider.cpp:1682 msgid "Add custom G-code" msgstr "Añadir código G personalizado" -#: src/slic3r/GUI/GLCanvas3D.cpp:240 +#: src/slic3r/GUI/DoubleSlider.cpp:1679 +msgid "Add custom template" +msgstr "Añadir plantilla personalizada" + +#: src/slic3r/GUI/GLCanvas3D.cpp:235 msgid "Add detail" msgstr "Añadir detalle" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:421 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:308 msgid "Add drainage hole" msgstr "Añadir orificio de drenaje" -#: src/slic3r/GUI/DoubleSlider.cpp:984 +#: src/slic3r/GUI/DoubleSlider.cpp:1107 msgid "Add extruder change - Left click" msgstr "Añadir cambio de extrusor - Click izquierdo" @@ -451,30 +517,30 @@ msgstr "Añadir cambio de extrusor - Click izquierdo" msgid "Add extruder to sequence" msgstr "Añadir extrusor a la secuencia" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1993 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2152 msgid "Add Generic Subobject" msgstr "Añadir Subobjeto Genérico" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2896 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2925 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2943 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3297 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3325 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3345 msgid "Add Height Range" msgstr "Añadir Rango de Alturas" -#: src/slic3r/GUI/GLCanvas3D.cpp:4526 src/slic3r/GUI/Plater.cpp:3788 -#: src/slic3r/GUI/Plater.cpp:3800 src/slic3r/GUI/Plater.cpp:3940 +#: src/slic3r/GUI/GLCanvas3D.cpp:4892 src/slic3r/GUI/Plater.cpp:3708 +#: src/slic3r/GUI/Plater.cpp:3720 src/slic3r/GUI/Plater.cpp:3858 msgid "Add instance" msgstr "Añadir instancia" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:159 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:153 msgid "Add Instance of the selected object" msgstr "Añadir instancia del objeto seleccionado" -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:162 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:165 msgid "Add layer range" msgstr "Añadir rango de capas" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2328 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2692 msgid "Add Layers" msgstr "Añadir Capas" @@ -482,12 +548,12 @@ msgstr "Añadir Capas" msgid "Add modifier" msgstr "Añadir modificador" -#: src/libslic3r/PrintConfig.cpp:479 -#, no-c-format +#: src/libslic3r/PrintConfig.cpp:515 +#, c-format msgid "Add more perimeters when needed for avoiding gaps in sloping walls. Slic3r keeps adding perimeters, until more than 70% of the loop immediately above is supported." msgstr "Añadir más perímetros cuando se necesiten para evitar huecos en las paredes inclinadas. Slic3r sigue añadiendo perímetros hasta que más del 70% del perímetro superior sea soportado." -#: src/slic3r/GUI/Plater.cpp:3940 +#: src/slic3r/GUI/Plater.cpp:3858 msgid "Add one more instance of the selected object" msgstr "Añadir una instancia más del objeto seleccionado" @@ -495,52 +561,61 @@ msgstr "Añadir una instancia más del objeto seleccionado" msgid "Add part" msgstr "Añadir pieza" -#: src/slic3r/GUI/DoubleSlider.cpp:1487 +#: src/slic3r/GUI/DoubleSlider.cpp:1675 msgid "Add pause print" msgstr "Añadir pausa de impresión" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1363 +#: src/slic3r/GUI/PresetComboBoxes.cpp:627 +#: src/slic3r/GUI/PresetComboBoxes.cpp:674 +msgid "Add physical printer" +msgstr "Añadir impresora física" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1210 msgid "Add point" msgstr "Añadir punto" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1366 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1213 msgid "Add point to selection" msgstr "Añadir punto a selección" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1509 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:180 +msgid "Add preset for this printer device" +msgstr "Añadir ajuste preestablecido para este dispositivo de impresión" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1640 msgid "Add settings" msgstr "Añadir ajustes" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1386 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1517 msgid "Add Settings Bundle for Height range" msgstr "Añadir Conjunto de Ajustes para Rango de Alturas" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1388 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1519 msgid "Add Settings Bundle for Object" msgstr "Añadir Conjunto de Ajustes para Objeto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1387 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1518 msgid "Add Settings Bundle for Sub-object" msgstr "Añadir Conjunto de Ajustes para Sub-objeto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1314 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1445 msgid "Add Settings for Layers" msgstr "Añadir Ajustes para Capas" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1316 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1447 msgid "Add Settings for Object" msgstr "Agregar Ajustes para Objeto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1315 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1446 msgid "Add Settings for Sub-object" msgstr "Agregar Ajustes para Sub-objeto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1793 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2051 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1953 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2210 msgid "Add Shape" msgstr "Añadir forma" -#: src/libslic3r/PrintConfig.cpp:409 +#: src/libslic3r/PrintConfig.cpp:443 msgid "Add solid infill near sloping surfaces to guarantee the vertical shell thickness (top+bottom solid layers)." msgstr "Añade un relleno completo cerca de las superficies inclinadas para garantizar el ancho vertical solicitado(capas sólidas arriba+abajo)." @@ -552,11 +627,19 @@ msgstr "Añadir bloqueo soportes" msgid "Add support enforcer" msgstr "Añadir refuerzo soportes" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:494 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:374 msgid "Add support point" msgstr "Añadir punto de soporte" -#: src/slic3r/GUI/GLCanvas3D.cpp:4467 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:371 +msgid "Add supports" +msgstr "Añadir soportes" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:293 +msgid "Add supports by angle" +msgstr "Añadir soportes según ángulo" + +#: src/slic3r/GUI/GLCanvas3D.cpp:4833 msgid "Add..." msgstr "Añadir..." @@ -564,23 +647,29 @@ msgstr "Añadir..." msgid "Add/Remove filaments" msgstr "Añadir/Retirar filamentos" -#: src/slic3r/GUI/Preset.cpp:1201 +#: src/slic3r/GUI/PresetComboBoxes.cpp:813 msgid "Add/Remove materials" msgstr "Añadir/Retirar materiales" -#: src/slic3r/GUI/Preset.cpp:1203 +#: src/slic3r/GUI/PresetComboBoxes.cpp:622 +#: src/slic3r/GUI/PresetComboBoxes.cpp:669 +msgid "Add/Remove presets" +msgstr "Añadir/Quitar ajustes preestablecidos" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:815 +#: src/slic3r/GUI/PresetComboBoxes.cpp:972 msgid "Add/Remove printers" msgstr "Añade/Quita impresoras" -#: src/slic3r/GUI/Tab.cpp:970 +#: src/slic3r/GUI/Tab.cpp:1288 msgid "Additional information:" msgstr "Información adicional:" -#: src/slic3r/GUI/GUI_ObjectSettings.cpp:59 +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:62 msgid "Additional Settings" msgstr "Ajustes adiccionales" -#: src/slic3r/GUI/ConfigWizard.cpp:791 +#: src/slic3r/GUI/ConfigWizard.cpp:1150 msgid "Additionally a backup snapshot of the whole configuration is created before an update is applied." msgstr "Además se realizará una instantánea de toda la configuración antes de aplicar una actualización." @@ -588,23 +677,22 @@ msgstr "Además se realizará una instantánea de toda la configuración antes d msgid "Address" msgstr "Dirección" -#: src/slic3r/GUI/GUI_App.cpp:814 src/slic3r/GUI/GUI_ObjectList.cpp:104 -#: src/slic3r/GUI/GUI_ObjectList.cpp:622 src/slic3r/GUI/Tab.cpp:1087 -#: src/slic3r/GUI/Tab.cpp:1102 src/slic3r/GUI/Tab.cpp:1201 -#: src/slic3r/GUI/Tab.cpp:1204 src/slic3r/GUI/Tab.cpp:1470 -#: src/slic3r/GUI/Tab.cpp:1967 src/slic3r/GUI/Tab.cpp:3661 -#: src/slic3r/GUI/wxExtensions.cpp:754 src/libslic3r/PrintConfig.cpp:88 -#: src/libslic3r/PrintConfig.cpp:119 src/libslic3r/PrintConfig.cpp:223 -#: src/libslic3r/PrintConfig.cpp:1037 src/libslic3r/PrintConfig.cpp:2276 -#: src/libslic3r/PrintConfig.cpp:2448 +#: src/slic3r/GUI/GUI_ObjectList.cpp:102 src/slic3r/GUI/GUI_ObjectList.cpp:661 +#: src/slic3r/GUI/Tab.cpp:1409 src/slic3r/GUI/Tab.cpp:1430 +#: src/slic3r/GUI/Tab.cpp:1531 src/slic3r/GUI/Tab.cpp:1534 +#: src/slic3r/GUI/Tab.cpp:1816 src/slic3r/GUI/Tab.cpp:2152 +#: src/slic3r/GUI/Tab.cpp:4080 src/libslic3r/PrintConfig.cpp:90 +#: src/libslic3r/PrintConfig.cpp:121 src/libslic3r/PrintConfig.cpp:257 +#: src/libslic3r/PrintConfig.cpp:1081 src/libslic3r/PrintConfig.cpp:2419 +#: src/libslic3r/PrintConfig.cpp:2591 msgid "Advanced" msgstr "Avanzado" -#: src/slic3r/GUI/ConfigWizard.cpp:821 +#: src/slic3r/GUI/ConfigWizard.cpp:1180 msgid "Advanced mode" msgstr "Modo avanzado" -#: src/slic3r/GUI/GUI_App.cpp:814 +#: src/slic3r/GUI/GUI_App.cpp:1506 msgid "Advanced View Mode" msgstr "Modo vista avanzada" @@ -612,124 +700,140 @@ msgstr "Modo vista avanzada" msgid "Advanced: Output log" msgstr "Avanzado: Registro de salida" -#: src/libslic3r/PrintConfig.cpp:668 +#: src/libslic3r/PrintConfig.cpp:704 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 stable. Before purging the print head into an infill or a sacrificial object, Slic3r will always prime this amount of material into the wipe tower to produce successive infill or sacrificial object extrusions reliably." msgstr "Después de un cambio de herramienta, la posición exacta del filamento recién cargado dentro de la boquilla puede no ser conocida, y es probable que la presión del filamento aún no sea estable. Antes de purgar el cabezal de impresión en un relleno o en un objeto de sacrificio, Slic3r siempre purgará esta cantidad de material en la torre de limpieza para producir de forma fiable sucesivas rellenos u objetos de sacrificio." -#: src/slic3r/GUI/Tab.cpp:1994 src/libslic3r/PrintConfig.cpp:1080 +#: src/slic3r/GUI/Tab.cpp:2182 src/libslic3r/PrintConfig.cpp:1173 msgid "After layer change G-code" msgstr "Código G tras un cambio de capa" -#: src/libslic3r/PrintConfig.cpp:3398 +#: src/libslic3r/PrintConfig.cpp:3597 msgid "Align the model to the given point." msgstr "Alinear el modelo a un punto dado." -#: src/libslic3r/PrintConfig.cpp:3397 +#: src/libslic3r/PrintConfig.cpp:3596 msgid "Align XY" msgstr "Alinear XY" -#: src/libslic3r/PrintConfig.cpp:1631 +#: src/libslic3r/PrintConfig.cpp:1739 msgid "Aligned" msgstr "Alineado" -#: src/slic3r/GUI/ConfigWizard.cpp:290 src/slic3r/GUI/ConfigWizard.cpp:573 -#: src/slic3r/GUI/Tab.cpp:3174 +#: src/slic3r/GUI/ConfigWizard.cpp:308 src/slic3r/GUI/ConfigWizard.cpp:598 +#: src/slic3r/GUI/Tab.cpp:3507 src/slic3r/GUI/UnsavedChangesDialog.cpp:921 msgid "All" msgstr "Todo" -#: src/libslic3r/Print.cpp:1219 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:197 +msgid "All gizmos: Rotate - left mouse button; Pan - right mouse button" +msgstr "Todos los movimientos: Rotar - botón izquierdo ratón; Girar- botón derecho ratón" + +#: src/slic3r/GUI/ConfigWizard.cpp:694 +msgid "All installed printers are compatible with the selected filament." +msgstr "Todas las impresoras instaladas son compatibles con el filamento seleccionado." + +#: src/libslic3r/Print.cpp:1245 msgid "All objects are outside of the print volume." msgstr "Todos los objetos están fuera del volumen de impresión." -#: src/slic3r/GUI/Plater.cpp:4669 +#: src/slic3r/GUI/Plater.cpp:4774 msgid "All objects will be removed, continue?" msgstr "Todos los objetos serán eliminados, deseas continuar?" -#: src/slic3r/GUI/ConfigWizard.cpp:289 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:737 +msgid "All settings changes will be discarded." +msgstr "Todos los cambios de los ajustes serán descartados." + +#: src/slic3r/GUI/ConfigWizard.cpp:307 msgid "All standard" msgstr "Todo estandar" -#: src/libslic3r/Zipper.cpp:62 +#: src/libslic3r/miniz_extension.cpp:121 msgid "allocation failed" msgstr "asignación fallida" -#: src/slic3r/GUI/Plater.cpp:3995 +#: src/slic3r/GUI/Plater.cpp:3915 msgid "Along X axis" msgstr "A lo largo del eje X" -#: src/slic3r/GUI/Plater.cpp:3997 +#: src/slic3r/GUI/Plater.cpp:3917 msgid "Along Y axis" msgstr "A lo largo del eje Y" -#: src/slic3r/GUI/Plater.cpp:3999 +#: src/slic3r/GUI/Plater.cpp:3919 msgid "Along Z axis" msgstr "A lo largo del eje Z" -#: src/slic3r/GUI/ConfigWizard.cpp:222 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:160 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:141 +msgid "Alt + Mouse wheel" +msgstr "Alt + Rueda del ratón" + +#: src/slic3r/GUI/ConfigWizard.cpp:240 msgid "Alternate nozzles:" msgstr "Alternar nozzles:" -#: src/slic3r/GUI/Plater.cpp:5002 +#: src/slic3r/GUI/Preferences.cpp:163 +msgid "Always ask for unsaved changes when selecting new preset" +msgstr "Preguntar siempre por los cambios no guardados al seleccionar un nuevo ajuste preestablecido" + +#: src/slic3r/GUI/Plater.cpp:5135 #, c-format msgid "AMF file exported to %s" msgstr "Archivo AMF exportado a %s" -#: src/slic3r/GUI/GLCanvas3D.cpp:690 +#: src/slic3r/GUI/GLCanvas3D.cpp:638 msgid "" -"An object outside the print area was detected\n" -"Resolve the current problem to continue slicing" +"An object outside the print area was detected.\n" +"Resolve the current problem to continue slicing." msgstr "" -"Se ha detectado una pieza fuera del área de impresión\n" -"Soluciona el problema actual para continuar el laminado" +"Se detectó un objeto fuera del área de impresión.\n" +"Resuelve el problema actual para seguir laminando." -#: src/slic3r/GUI/GLCanvas3D.cpp:685 -msgid "An object outside the print area was detected" -msgstr "Se ha detectado una pieza fuera del área de impresión" +#: src/slic3r/GUI/GLCanvas3D.cpp:633 +msgid "An object outside the print area was detected." +msgstr "Se detectó un objeto fuera del área de impresión." -#: src/slic3r/GUI/Tab.cpp:2943 -msgid "and it has the following unsaved changes:" -msgstr "y tiene los siguientes cambios sin guardar:" - -#: src/slic3r/GUI/Plater.cpp:3170 +#: src/slic3r/GUI/Plater.cpp:2972 msgid "Another export job is currently running." msgstr "Otro trabajo de exportación está aún en marcha." -#: src/slic3r/GUI/KBShortcutsDialog.cpp:168 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:169 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:162 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:163 msgid "Any arrow" msgstr "Cualquier flecha" -#: src/slic3r/GUI/Tab.cpp:965 +#: src/slic3r/GUI/Tab.cpp:1283 msgid "Any modifications should be saved as a new preset inherited from this one." msgstr "Cualquier modificación debe guardarse como un nuevo preset heredado de este." -#: src/libslic3r/PrintConfig.cpp:104 +#: src/libslic3r/PrintConfig.cpp:106 msgid "API Key / Password" msgstr "Clave API / Contraseña" -#: src/slic3r/GUI/GUI_App.cpp:810 +#: src/slic3r/GUI/GUI_App.cpp:1493 msgid "Application preferences" msgstr "Preferencias de la aplicación" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:52 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1374 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:51 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1221 msgid "Apply changes" msgstr "Aplicar cambios" -#: src/libslic3r/PrintConfig.cpp:575 src/libslic3r/PrintConfig.cpp:1708 +#: src/libslic3r/PrintConfig.cpp:611 src/libslic3r/PrintConfig.cpp:1823 msgid "approximate seconds" msgstr "segundos aproximadamente" -#: src/libslic3r/PrintConfig.cpp:428 src/libslic3r/PrintConfig.cpp:854 +#: src/libslic3r/PrintConfig.cpp:464 src/libslic3r/PrintConfig.cpp:892 msgid "Archimedean Chords" msgstr "Acordes de Arquímedes" -#: src/libslic3r/Zipper.cpp:88 +#: src/libslic3r/miniz_extension.cpp:147 msgid "archive is too large" msgstr "el archivo es demasiado grande" -#. TRN remove/delete -#: src/slic3r/GUI/Tab.cpp:3123 +#: src/slic3r/GUI/Tab.cpp:3420 msgid "Are you sure you want to %1% the selected preset?" msgstr "¿Estás seguro de que deseas %1% el preset seleccionado?" @@ -741,97 +845,125 @@ msgstr "" "¿Estas seguro de cancelar el flaseo del firmware?\n" "¡Esto podría dejar tu impresora en un estado inusable!" -#: src/slic3r/GUI/DoubleSlider.cpp:1903 src/slic3r/GUI/DoubleSlider.cpp:1924 +#: src/slic3r/GUI/DoubleSlider.cpp:2122 src/slic3r/GUI/DoubleSlider.cpp:2142 msgid "Are you sure you want to continue?" msgstr "¿Estás seguro de que quieres continuar?" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1269 +#: src/slic3r/GUI/Tab.cpp:3392 +msgid "Are you sure you want to delete \"%1%\" preset from the physical printer \"%2%\"?" +msgstr "¿Está seguro de que desea eliminar el ajuste preestablecido \"%1%\" de la impresora física \"%2%\"?" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:658 +msgid "Are you sure you want to delete \"%1%\" printer?" +msgstr "¿Estás seguro de que quieres borrar la impresora \"%1%\"?" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1128 msgid "Are you sure you want to do it?" msgstr "¿Estás seguro de que quieres hacerlo?" -#: src/libslic3r/PrintConfig.cpp:2423 +#: src/libslic3r/PrintConfig.cpp:2566 msgid "Area fill" msgstr "Área de relleno" -#: src/slic3r/GUI/Plater.cpp:641 +#: src/slic3r/GUI/Plater.cpp:507 msgid "Around object" msgstr "Alrededor de objeto" -#: src/slic3r/GUI/GLCanvas3D.cpp:4493 src/slic3r/GUI/KBShortcutsDialog.cpp:157 -#: src/slic3r/GUI/Plater.cpp:2754 +#: src/slic3r/GUI/GLCanvas3D.cpp:4859 src/slic3r/GUI/KBShortcutsDialog.cpp:151 +#: src/slic3r/GUI/Plater.cpp:1549 msgid "Arrange" msgstr "Organiza" -#: src/slic3r/GUI/GLCanvas3D.cpp:4493 src/slic3r/GUI/KBShortcutsDialog.cpp:158 +#: src/slic3r/GUI/GLCanvas3D.cpp:4859 src/slic3r/GUI/KBShortcutsDialog.cpp:152 msgid "Arrange selection" msgstr "Ordenar selección" -#: src/libslic3r/PrintConfig.cpp:3443 +#: src/libslic3r/PrintConfig.cpp:3642 msgid "Arrange the supplied models in a plate and merge them in a single model in order to perform actions once." msgstr "Organizar los modelos suministrados en una base y combínarlos en un solo modelo para realizar acciones una vez." -#: src/slic3r/GUI/Plater.cpp:2813 +#: src/slic3r/GUI/Jobs/ArrangeJob.cpp:149 msgid "Arranging" msgstr "Organizando" -#: src/slic3r/GUI/Plater.cpp:2841 +#: src/slic3r/GUI/Jobs/ArrangeJob.cpp:182 msgid "Arranging canceled." msgstr "Ordenamiento cancelado." -#: src/slic3r/GUI/Plater.cpp:2842 +#: src/slic3r/GUI/Jobs/ArrangeJob.cpp:183 msgid "Arranging done." msgstr "Organización terminada." -#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:215 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:159 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:206 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 msgid "Arrow Down" msgstr "Flecha hacia abajo" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:166 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:160 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:217 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:229 msgid "Arrow Left" msgstr "Flecha hacia izquierda" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:167 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:217 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:161 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:218 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:230 msgid "Arrow Right" msgstr "Flecha hacia derecha" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:204 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:214 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:158 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:215 msgid "Arrow Up" msgstr "Flecha hacia arriba" -#: src/slic3r/GUI/GLCanvas3DManager.cpp:290 +#: src/slic3r/GUI/GUI_App.cpp:246 +msgid "Artwork model by Nora Al-Badri and Jan Nikolai Nelles" +msgstr "Modelo artístico realizado por Nora Al-Badri y Jan Nikolai Nelles" + +#: src/slic3r/GUI/OpenGLManager.cpp:265 msgid "As a workaround, you may run PrusaSlicer with a software rendered 3D graphics by running prusa-slicer.exe with the --sw_renderer parameter." msgstr "Como solución alternativa, puedes ejecutar PrusaSlicer con un software de gráficos en 3D ejecutando prusaslicer.exe con el parámetro --sw_renderer." -#: src/slic3r/GUI/GUI_App.cpp:1086 src/slic3r/GUI/Plater.cpp:2313 -#: src/slic3r/GUI/Tab.cpp:2960 +#: src/slic3r/GUI/Preferences.cpp:154 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:659 +msgid "Ask for unsaved changes when closing application" +msgstr "Preguntar por los cambios no guardados al cerrar la aplicación" + +#: src/slic3r/GUI/Preferences.cpp:161 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:660 +msgid "Ask for unsaved changes when selecting new preset" +msgstr "Preguntar por los cambios no guardados al seleccionar un nuevo ajuste preestablecido" + +#: src/slic3r/GUI/GUI_App.cpp:1878 src/slic3r/GUI/Jobs/SLAImportJob.cpp:210 +#: src/slic3r/GUI/Plater.cpp:2256 src/slic3r/GUI/Tab.cpp:3189 msgid "Attention!" msgstr "¡Atención!" -#: src/libslic3r/PrintConfig.cpp:1871 +#: src/libslic3r/PrintConfig.cpp:150 +msgid "Authorization Type" +msgstr "Tipo de Autorización" + +#: src/libslic3r/PrintConfig.cpp:2013 msgid "Auto generated supports" msgstr "Soportes generados automáticamente" -#: src/slic3r/GUI/Preferences.cpp:47 +#: src/slic3r/GUI/Preferences.cpp:64 msgid "Auto-center parts" msgstr "Piezas auto-centradas" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:56 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1377 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:55 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1224 msgid "Auto-generate points" msgstr "Auto-generar puntos" -#: src/slic3r/GUI/Plater.cpp:1157 +#: src/slic3r/GUI/Plater.cpp:1066 #, c-format msgid "Auto-repaired (%d errors)" msgstr "Reparados automáticamente (%d errores)" -#: src/slic3r/GUI/GUI_ObjectList.cpp:339 +#: src/slic3r/GUI/GUI_ObjectList.cpp:386 #, c-format msgid "Auto-repaired (%d errors):" msgstr "Reparado automáticamente (%d errores):" @@ -840,39 +972,47 @@ msgstr "Reparado automáticamente (%d errores):" msgid "Autodetected" msgstr "Detectado automáticamente" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1273 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1134 msgid "Autogenerate support points" msgstr "Genera los puntos de apoyo automáticamente" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1268 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1127 msgid "Autogeneration will erase all manually edited points." msgstr "La autogeneración borrará todos los puntos editados manualmente." -#: src/slic3r/GUI/Tab.cpp:3632 +#: src/slic3r/GUI/Tab.cpp:4051 msgid "Automatic generation" msgstr "Generación automática" -#: src/slic3r/GUI/ConfigWizard.cpp:761 +#: src/slic3r/GUI/ConfigWizard.cpp:1120 msgid "Automatic updates" msgstr "Actualizaciones automáticas" -#: src/slic3r/GUI/MainFrame.cpp:536 +#: src/slic3r/GUI/MainFrame.cpp:1137 msgid "Automatically repair an STL file" msgstr "Archivo STL reparado automáticamente" -#: src/slic3r/GUI/Tab.cpp:1171 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:129 +msgid "Autoset by angle" +msgstr "Establecer automáticamente según ángulo" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:233 +msgid "Autoset custom supports" +msgstr "Soportes personalizados automáticos" + +#: src/slic3r/GUI/Tab.cpp:1501 msgid "Autospeed (advanced)" msgstr "Velocidad automática (avanzado)" -#: src/libslic3r/PrintConfig.cpp:136 +#: src/libslic3r/PrintConfig.cpp:169 msgid "Avoid crossing perimeters" msgstr "Evita cruzar perímetros" -#: src/slic3r/GUI/Tab.cpp:3268 +#: src/slic3r/GUI/Tab.cpp:3705 msgid "BACK ARROW" msgstr "FLECHA HACIA ATRÁS" -#: src/slic3r/GUI/Tab.cpp:3290 +#: src/slic3r/GUI/Tab.cpp:3727 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" "Click to reset all settings for the current option group to the last saved preset." @@ -880,7 +1020,7 @@ msgstr "" "El símbolo de FLECHA ATRÁS indica que los ajustes cambiaron y que no son iguales a los que se guardaron para el grupo de opciones actual.\n" "Haz clic para devolver esos valores a los últimos guardados." -#: src/slic3r/GUI/Tab.cpp:3304 +#: src/slic3r/GUI/Tab.cpp:3741 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." @@ -888,19 +1028,23 @@ msgstr "" "La FLECHA ATRÁS indica que el valor ha cambiado y ya no es el mismo que el guardado la última vez.\n" "Haz clic para restaurar el valor al último ajuste guardado." -#: src/slic3r/GUI/Preferences.cpp:55 +#: src/slic3r/GUI/Preferences.cpp:72 msgid "Background processing" msgstr "Procesamiento en segundo plano" -#: src/slic3r/GUI/GUI_ObjectList.cpp:351 +#: src/slic3r/GUI/GUI_ObjectList.cpp:398 msgid "backwards edges" msgstr "bordes hacia atrás" -#: src/slic3r/GUI/MainFrame.cpp:174 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:60 +msgid "Balanced" +msgstr "Balanceado" + +#: src/slic3r/GUI/MainFrame.cpp:535 src/slic3r/GUI/MainFrame.cpp:537 msgid "based on Slic3r" msgstr "basado en Slic3r" -#: src/slic3r/GUI/Tab.cpp:1439 +#: src/slic3r/GUI/Tab.cpp:1785 msgid "Bed" msgstr "Base" @@ -912,7 +1056,7 @@ msgstr "Modelo de base personalizado" msgid "Bed custom texture" msgstr "Textura personalizada de la base" -#: src/slic3r/GUI/BedShapeDialog.hpp:59 src/slic3r/GUI/ConfigWizard.cpp:929 +#: src/slic3r/GUI/BedShapeDialog.hpp:98 src/slic3r/GUI/ConfigWizard.cpp:1295 msgid "Bed Shape" msgstr "Forma de la base de impresión" @@ -920,23 +1064,23 @@ msgstr "Forma de la base de impresión" msgid "Bed shape" msgstr "Forma de la base de impresión" -#: src/slic3r/GUI/ConfigWizard.cpp:929 +#: src/slic3r/GUI/ConfigWizard.cpp:1295 msgid "Bed Shape and Size" msgstr "Tamaño y forma de la base" -#: src/libslic3r/PrintConfig.cpp:147 +#: src/libslic3r/PrintConfig.cpp:181 msgid "Bed temperature" msgstr "Temperatura de la base" -#: src/libslic3r/PrintConfig.cpp:145 +#: src/libslic3r/PrintConfig.cpp:178 msgid "Bed temperature for layers after the first one. Set this to zero to disable bed temperature control commands in the output." -msgstr "Temperatura de la base calefactable para las capas después de la primera. Ajuste esto a cero para deshabilitar los comandos de control de temperatura de la base calefactable en la salida." +msgstr "Temperatura de la base calefactable para las capas después de la primera. Ajusta esto a cero para deshabilitar los comandos de control de temperatura de la base calefactable en la salida." -#: src/slic3r/GUI/ConfigWizard.cpp:1051 +#: src/slic3r/GUI/ConfigWizard.cpp:1417 msgid "Bed Temperature:" msgstr "Temperatura de la base:" -#: src/slic3r/GUI/Tab.cpp:1988 src/libslic3r/PrintConfig.cpp:153 +#: src/slic3r/GUI/Tab.cpp:2175 src/libslic3r/PrintConfig.cpp:187 msgid "Before layer change G-code" msgstr "Código G para antes del cambio de capa" @@ -944,143 +1088,191 @@ msgstr "Código G para antes del cambio de capa" msgid "Before roll back" msgstr "Antes de volver atrás" -#: src/slic3r/GUI/Plater.cpp:640 +#: src/slic3r/GUI/Plater.cpp:506 msgid "Below object" msgstr "Por debajo del objeto" -#: src/libslic3r/PrintConfig.cpp:1578 +#: src/libslic3r/PrintConfig.cpp:1686 msgid "Below Z" msgstr "Por debajo de Z" -#: src/libslic3r/PrintConfig.cpp:164 +#: src/libslic3r/PrintConfig.cpp:198 msgid "Between objects G-code" msgstr "Código G para entre objetos" -#: src/slic3r/GUI/Tab.cpp:2006 +#: src/slic3r/GUI/Tab.cpp:2196 msgid "Between objects G-code (for sequential printing)" msgstr "Código G para entre objetos (para impresión secuencial)" -#: src/libslic3r/PrintConfig.cpp:2489 src/libslic3r/PrintConfig.cpp:2490 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:242 +msgid "Block" +msgstr "Bloquear" + +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:32 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:383 +msgid "Block seam" +msgstr "Bloquear costura" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:373 +msgid "Block supports" +msgstr "Bloquear soportes" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:292 +msgid "Block supports by angle" +msgstr "Bloquear soportes según ángulo" + +#: src/libslic3r/PrintConfig.cpp:2632 src/libslic3r/PrintConfig.cpp:2633 msgid "Bottle volume" msgstr "Volumen de la botella" -#: src/libslic3r/PrintConfig.cpp:2496 src/libslic3r/PrintConfig.cpp:2497 +#: src/libslic3r/PrintConfig.cpp:2639 src/libslic3r/PrintConfig.cpp:2640 msgid "Bottle weight" msgstr "Peso botella" #. 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:665 src/libslic3r/PrintConfig.cpp:174 -#: src/libslic3r/PrintConfig.cpp:183 +#: src/slic3r/GUI/MainFrame.cpp:962 src/slic3r/GUI/MainFrame.cpp:1282 +#: src/libslic3r/PrintConfig.cpp:208 src/libslic3r/PrintConfig.cpp:217 msgid "Bottom" msgstr "Inferior" -#: src/libslic3r/PrintConfig.cpp:435 +#: src/libslic3r/PrintConfig.cpp:471 msgid "Bottom fill pattern" msgstr "Patrón de relleno inferior" -#: src/slic3r/GUI/PresetHints.cpp:342 +#: src/slic3r/GUI/PresetHints.cpp:340 msgid "Bottom is open." msgstr "La parte inferior está abierta." -#: src/slic3r/GUI/PresetHints.cpp:336 +#: src/slic3r/GUI/PresetHints.cpp:334 msgid "Bottom shell is %1% mm thick for layer height %2% mm." msgstr "La carcasa inferior es %1% mm más grueso para la altura de capa de %2% mm." -#: src/libslic3r/PrintConfig.cpp:177 +#: src/libslic3r/PrintConfig.cpp:211 msgid "Bottom solid layers" msgstr "Capas sólidas inferiores" -#: src/slic3r/GUI/MainFrame.cpp:665 +#: src/slic3r/GUI/MainFrame.cpp:962 src/slic3r/GUI/MainFrame.cpp:1282 msgid "Bottom View" msgstr "Vista inferior" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1432 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1464 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1468 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1563 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1595 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1599 msgid "Box" msgstr "Caja" -#: src/libslic3r/PrintConfig.cpp:193 +#: src/libslic3r/PrintConfig.cpp:227 msgid "Bridge" msgstr "Puente" -#: src/libslic3r/PrintConfig.cpp:222 +#: src/libslic3r/PrintConfig.cpp:256 msgid "Bridge flow ratio" msgstr "Relación de flujo del puente" -#: src/slic3r/GUI/GUI_Preview.cpp:243 src/libslic3r/ExtrusionEntity.cpp:316 +#: src/slic3r/GUI/GUI_Preview.cpp:308 src/libslic3r/ExtrusionEntity.cpp:321 +#: src/libslic3r/ExtrusionEntity.cpp:350 msgid "Bridge infill" msgstr "Relleno de puente" -#: src/libslic3r/PrintConfig.cpp:234 +#: src/libslic3r/PrintConfig.cpp:268 msgid "Bridges" msgstr "Puentes" -#: src/libslic3r/PrintConfig.cpp:213 +#: src/libslic3r/PrintConfig.cpp:247 msgid "Bridges fan speed" msgstr "Velocidad del ventilador para puentes" -#: src/libslic3r/PrintConfig.cpp:202 +#: src/libslic3r/PrintConfig.cpp:236 msgid "Bridging angle" msgstr "Ángulo de puente" -#: src/libslic3r/PrintConfig.cpp:204 +#: 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 "Anulación de ángulo de puente. Si se deja en cero, el ángulo de puente se calculará automáticamente. De lo contrario, el ángulo proporcionado se usará para todos los puentes. Use 180 ° para ángulo con cero grados." -#: src/slic3r/GUI/PresetHints.cpp:219 +#: src/slic3r/GUI/PresetHints.cpp:218 msgid "Bridging volumetric" msgstr "Puente volumétrico" -#: src/slic3r/GUI/Plater.cpp:534 src/slic3r/GUI/Tab.cpp:1117 +#: src/slic3r/GUI/Plater.cpp:400 src/slic3r/GUI/Tab.cpp:1446 msgid "Brim" msgstr "Balsa" -#: src/libslic3r/PrintConfig.cpp:244 +#: src/libslic3r/PrintConfig.cpp:278 msgid "Brim width" msgstr "Ancho de la balsa" -#: src/slic3r/GUI/FirmwareDialog.cpp:805 src/slic3r/GUI/Tab.cpp:1658 -#: src/slic3r/GUI/Tab.cpp:1721 +#: src/slic3r/GUI/FirmwareDialog.cpp:805 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:271 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:327 msgid "Browse" msgstr "Buscar" -#: src/libslic3r/Zipper.cpp:82 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:45 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:28 +msgid "Brush shape" +msgstr "Forma de pincel" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:44 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:27 +msgid "Brush size" +msgstr "Tamaño del pincel" + +#: src/libslic3r/miniz_extension.cpp:141 msgid "buffer too small" msgstr "buffer demasiado pequeño" +#: src/slic3r/GUI/GUI_App.cpp:1152 +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 "" +"Pero dado que a partir de esta versión de PrusaSlicer ya no mostramos esta información el los ajustes de impresora.\n" +"Los ajustes se mostrarán en la configuración de impresora física." + #: src/slic3r/GUI/ButtonsDescription.cpp:16 msgid "Buttons And Text Colors Description" msgstr "Descripción de los botones y de los colores del texto" -#: src/slic3r/GUI/PresetHints.cpp:223 +#: src/slic3r/GUI/GUI_App.cpp:1084 +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 "" +"Por defecto, los nuevos dispositivos de impresión se llamarán \"Impresora N\" durante su creación.\n" +"Nota: Este nombre se puede cambiar posteriormente en los ajustes de impresora física" + +#: src/slic3r/GUI/PresetHints.cpp:222 msgid "by the print profile maximum" msgstr "por el máximo perfil de impresión" -#: src/slic3r/GUI/Preferences.cpp:113 +#: src/slic3r/GUI/Preferences.cpp:178 msgid "Camera" msgstr "Cámara" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:144 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:140 msgid "Camera view" msgstr "Vista de cámara" -#: src/slic3r/GUI/ConfigWizard.cpp:1982 src/slic3r/GUI/FirmwareDialog.cpp:151 +#: src/slic3r/GUI/ConfigWizard.cpp:2493 src/slic3r/GUI/FirmwareDialog.cpp:151 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:245 #: src/slic3r/GUI/ProgressStatusBar.cpp:26 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:644 msgid "Cancel" msgstr "Cancelar" -#: src/slic3r/GUI/PrintHostDialogs.cpp:157 +#: src/slic3r/GUI/PrintHostDialogs.cpp:155 msgid "Cancel selected" msgstr "Cancelar selección" -#: src/slic3r/GUI/Plater.cpp:3669 src/slic3r/GUI/PrintHostDialogs.cpp:233 +#: src/slic3r/GUI/Plater.cpp:3589 src/slic3r/GUI/PrintHostDialogs.cpp:233 msgid "Cancelled" msgstr "Cancelado" -#: src/slic3r/GUI/Plater.cpp:3153 src/slic3r/GUI/PrintHostDialogs.cpp:232 +#: src/slic3r/GUI/Plater.cpp:2953 src/slic3r/GUI/PrintHostDialogs.cpp:232 msgid "Cancelling" msgstr "Cancelando" @@ -1092,7 +1284,7 @@ msgstr "Cancelando..." msgid "Cannot calculate extrusion width for %1%: Variable \"%2%\" not accessible." msgstr "No se puede calcular el ancho de extrusión para %1%: Variable \"%2%\" no accesible." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3017 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3400 msgid "" "Cannot insert a new layer range after the current layer range.\n" "Current layer range overlaps with the next layer range." @@ -1100,7 +1292,7 @@ msgstr "" "No se puede insertar un nuevo rango de capas después del rango de capa actual.\n" "El rango de capa actual se superpone con el siguiente rango de capa." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3008 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3391 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" @@ -1110,7 +1302,7 @@ msgstr "" "El siguiente rango de capa es demasiado delgado para dividirse en dos\n" "sin violar la altura mínima de la capa." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3012 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3395 msgid "" "Cannot insert a new layer range between the current and the next layer range.\n" "The gap between the current layer range and the next layer range\n" @@ -1120,80 +1312,88 @@ msgstr "" "La brecha entre el rango de capa actual y el siguiente rango de capa\n" "es más delgada que la altura mínima de capa permitida." -#: src/slic3r/GUI/Tab.cpp:3073 +#: src/slic3r/GUI/SavePresetDialog.cpp:137 msgid "Cannot overwrite a system profile." msgstr "No se puede sobre-escribir un perfil del sistema." -#: src/slic3r/GUI/Tab.cpp:3077 +#: src/slic3r/GUI/SavePresetDialog.cpp:142 msgid "Cannot overwrite an external profile." msgstr "No puedo sobre-escribir un valor externo." -#: src/libslic3r/SLAPrint.cpp:613 +#: src/libslic3r/SLAPrint.cpp:627 msgid "Cannot proceed without support points! Add support points or disable support generation." msgstr "No se puede proceder sin puntos de soporte! Añade puntos de soporte o desactiva la generación de soportes." -#: src/slic3r/GUI/Tab.cpp:1834 +#: src/slic3r/GUI/Tab.cpp:2068 src/slic3r/GUI/UnsavedChangesDialog.cpp:1066 msgid "Capabilities" msgstr "Capacidades" -#: src/slic3r/GUI/GUI_App.cpp:801 +#: src/slic3r/GUI/GUI_App.cpp:1481 msgid "Capture a configuration snapshot" msgstr "Captura una instantánea de configuración" -#: src/libslic3r/PrintConfig.cpp:3424 +#: src/slic3r/GUI/ImGuiWrapper.cpp:801 src/slic3r/GUI/Search.cpp:458 +msgid "Category" +msgstr "Categoría" + +#: src/libslic3r/PrintConfig.cpp:3623 msgid "Center" msgstr "Centro" -#: src/libslic3r/PrintConfig.cpp:3425 +#: src/libslic3r/PrintConfig.cpp:3624 msgid "Center the print around the given center." msgstr "Centrar la impresión alrededor del centro dado." -#: src/slic3r/GUI/Tab.cpp:1728 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:329 msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" msgstr "Archivos de certificados (*.crt, *.pem)|*.crt;*.pem|Todos|*.*" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:180 +#: src/slic3r/GUI/SavePresetDialog.cpp:313 +msgid "Change \"%1%\" to \"%2%\" for this physical printer \"%3%\"" +msgstr "Cambia \"%1%\" a \"%2%\" para esta impresora física \"%3%\"" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:174 msgid "Change camera type (perspective, orthographic)" msgstr "Cambiar tipo de cámara (perspectiva, ortográfica)" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:885 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:693 msgid "Change drainage hole diameter" msgstr "Cambiar diámetro orificio de drenaje" -#: src/slic3r/GUI/DoubleSlider.cpp:1144 src/slic3r/GUI/GUI_ObjectList.cpp:1671 +#: src/slic3r/GUI/DoubleSlider.cpp:1273 src/slic3r/GUI/GUI_ObjectList.cpp:1800 msgid "Change extruder" msgstr "Cambiar extrusor" -#: src/slic3r/GUI/GUI_ObjectList.cpp:536 +#: src/slic3r/GUI/GUI_ObjectList.cpp:574 msgid "Change Extruder" msgstr "Cambiar Extrusor" -#: src/slic3r/GUI/DoubleSlider.cpp:1145 +#: src/slic3r/GUI/DoubleSlider.cpp:1274 msgid "Change extruder (N/A)" msgstr "Cambiar extrusor (N/A)" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3997 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4484 msgid "Change Extruders" msgstr "Cambiar Extrusores" -#: src/slic3r/GUI/GUI_ObjectSettings.cpp:152 +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:157 #, c-format msgid "Change Option %s" msgstr "Cambiar opción %s" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3558 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4021 msgid "Change Part Type" msgstr "Cambiar Tipo de Pieza" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:820 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:694 msgid "Change point head diameter" msgstr "Cambiar diámetro de la cabeza de punta" -#: src/slic3r/GUI/Plater.cpp:3944 +#: src/slic3r/GUI/Plater.cpp:3862 msgid "Change the number of instances of the selected object" msgstr "Cambiar número de instancias al objeto seleccionado" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1589 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1718 msgid "Change type" msgstr "Cambiar tipo" @@ -1201,125 +1401,172 @@ msgstr "Cambiar tipo" msgid "Changelog && Download" msgstr "Registro de cambios && Descargar" -#: src/slic3r/GUI/GUI_App.cpp:442 +#: src/slic3r/GUI/GUI_App.cpp:1245 msgid "Changing of an application language" msgstr "Cambio de idioma de una aplicación" -#: src/slic3r/GUI/ConfigWizard.cpp:769 src/slic3r/GUI/Preferences.cpp:64 +#: src/slic3r/GUI/ConfigWizard.cpp:1128 src/slic3r/GUI/Preferences.cpp:81 msgid "Check for application updates" msgstr "Comprueba si hay actualizaciones de la aplicación" -#: src/slic3r/GUI/GUI_App.cpp:802 +#: src/slic3r/GUI/GUI_App.cpp:1482 msgid "Check for configuration updates" msgstr "Comprueba si hay actualizaciones de configuración" -#: src/slic3r/GUI/GUI_App.cpp:802 +#: src/slic3r/GUI/GUI_App.cpp:1482 msgid "Check for updates" msgstr "Comprueba si hay act&ualizaciones" -#: src/slic3r/GUI/BedShapeDialog.cpp:532 +#: 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):" -#: src/slic3r/GUI/MainFrame.cpp:773 +#: src/slic3r/GUI/MainFrame.cpp:1474 msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" msgstr "Elija un archivo para laminar (STL / OBJ / AMF / 3MF / PRUSA):" -#: src/slic3r/GUI/BedShapeDialog.cpp:555 +#: src/slic3r/GUI/BedShapeDialog.cpp:631 msgid "Choose an STL file to import bed model from:" msgstr "Escoge un archivo STL para importar el modelo de la base de impresión:" -#: src/slic3r/GUI/BedShapeDialog.cpp:487 +#: src/slic3r/GUI/BedShapeDialog.cpp:563 msgid "Choose an STL file to import bed shape from:" msgstr "Escoge un archivo STL para importar la forma de la base:" -#: src/slic3r/GUI/GUI_App.cpp:555 +#: src/slic3r/GUI/GUI_App.cpp:1208 msgid "Choose one file (3MF/AMF):" msgstr "Selecciona un archivo (3MF/AMF):" -#: src/slic3r/GUI/GUI_App.cpp:567 +#: src/slic3r/GUI/GUI_App.cpp:1233 +msgid "Choose one file (GCODE/.GCO/.G/.ngc/NGC):" +msgstr "Elige un archivo (GCODE/.GCO/.G/.ngc/NGC):" + +#: src/slic3r/GUI/GUI_App.cpp:1220 msgid "Choose one or more files (STL/OBJ/AMF/3MF/PRUSA):" msgstr "Escoja uno o mas archivos (STL/OBJ/AMF/3MF/PRUSA):" -#: src/slic3r/GUI/ConfigWizard.cpp:895 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:35 +msgid "Choose SLA archive:" +msgstr "Elegir archivo SLA:" + +#: src/slic3r/GUI/ConfigWizard.cpp:1261 msgid "Choose the type of firmware used by your printer." msgstr "Selecciona el tipo de firmware que usa tu impresora." -#: src/slic3r/GUI/BedShapeDialog.cpp:89 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:53 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:36 +msgid "Circle" +msgstr "Círculo" + +#: src/slic3r/GUI/BedShapeDialog.cpp:142 msgid "Circular" msgstr "Circular" -#: src/slic3r/GUI/GLCanvas3D.cpp:4624 src/slic3r/GUI/GLCanvas3D.cpp:4657 -msgid "Click right mouse button to open History" -msgstr "Click con botón derecho para abrir Historial" +#: 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" -#: src/slic3r/GUI/GUI_ObjectList.cpp:404 +#: src/slic3r/GUI/GUI_ObjectList.cpp:451 msgid "Click the icon to change the object printable property" msgstr "Click en el icono para cambiar las propiedades del objeto imprimible" -#: src/slic3r/GUI/GUI_ObjectList.cpp:398 +#: src/slic3r/GUI/GUI_ObjectList.cpp:445 msgid "Click the icon to change the object settings" msgstr "Click en el icono para cambiar los ajustes del objeto" -#: src/slic3r/GUI/Plater.cpp:343 +#: src/slic3r/GUI/PresetComboBoxes.cpp:566 msgid "Click to edit preset" msgstr "Clic para cambiar el ajuste inicial" -#: src/libslic3r/PrintConfig.cpp:252 +#: src/slic3r/GUI/GCodeViewer.cpp:2071 +msgid "Click to hide" +msgstr "Clic para ocultar" + +#: src/slic3r/GUI/GCodeViewer.cpp:2071 +msgid "Click to show" +msgstr "Clic para mostrar" + +#: src/libslic3r/PrintConfig.cpp:286 msgid "Clip multi-part objects" msgstr "Enlazaar objetos de varias partes" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:50 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:58 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:42 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:25 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:57 msgid "Clipping of view" msgstr "Recorte de la vista" #: src/slic3r/GUI/FirmwareDialog.cpp:852 -#: src/slic3r/GUI/Mouse3DController.cpp:364 -#: src/slic3r/GUI/PrintHostDialogs.cpp:161 +#: src/slic3r/GUI/Mouse3DController.cpp:353 +#: src/slic3r/GUI/PrintHostDialogs.cpp:159 msgid "Close" msgstr "Cerrar" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:45 -#: src/libslic3r/PrintConfig.cpp:2934 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:44 +#: src/libslic3r/PrintConfig.cpp:3098 msgid "Closing distance" msgstr "Distancia de cierre" -#: src/slic3r/GUI/Plater.cpp:1260 src/libslic3r/PrintConfig.cpp:582 +#: src/slic3r/GUI/MainFrame.cpp:1297 src/slic3r/GUI/Plater.cpp:2144 +msgid "Collapse sidebar" +msgstr "Ocultar barra lateral" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:180 +msgid "Collapse/Expand the sidebar" +msgstr "Ocultar/Expandir barra lateral" + +#: src/slic3r/GUI/Plater.cpp:1198 src/libslic3r/PrintConfig.cpp:618 msgid "Color" msgstr "Color" -#: src/slic3r/GUI/DoubleSlider.cpp:1005 +#: src/slic3r/GUI/GCodeViewer.cpp:2410 src/slic3r/GUI/GCodeViewer.cpp:2438 +msgid "Color change" +msgstr "Cambio de color" + +#: src/slic3r/GUI/DoubleSlider.cpp:1130 msgid "Color change (\"%1%\")" msgstr "Cambio de color (\"%1%\")" -#: src/slic3r/GUI/DoubleSlider.cpp:1006 +#: src/slic3r/GUI/DoubleSlider.cpp:1131 msgid "Color change (\"%1%\") for Extruder %2%" msgstr "Cambio de color (\"%1%\") para el Extrusor %2%" -#: src/slic3r/GUI/GLCanvas3D.cpp:995 +#: src/slic3r/GUI/GLCanvas3D.cpp:1001 #, c-format msgid "Color change for Extruder %d at %.2f mm" msgstr "Cambio de color para Extrusor %d en %.2f mm" -#: src/slic3r/GUI/GUI_Preview.cpp:228 src/slic3r/GUI/GUI_Preview.cpp:572 -#: src/libslic3r/GCode/PreviewData.cpp:359 +#: src/slic3r/GUI/Tab.cpp:2203 +msgid "Color Change G-code" +msgstr "Código G Cambio Color" + +#: src/libslic3r/PrintConfig.cpp:1960 +msgid "Color change G-code" +msgstr "Código G Cambio color" + +#: src/slic3r/GUI/GCodeViewer.cpp:2531 src/slic3r/GUI/GUI_Preview.cpp:1475 +msgid "Color changes" +msgstr "Cambios de color" + +#: src/slic3r/GUI/GCodeViewer.cpp:2242 src/slic3r/GUI/GUI_Preview.cpp:282 +#: src/slic3r/GUI/GUI_Preview.cpp:784 src/libslic3r/GCode/PreviewData.cpp:364 msgid "Color Print" msgstr "Color Print" -#: src/libslic3r/PrintConfig.cpp:260 +#: src/libslic3r/PrintConfig.cpp:294 msgid "Colorprint height" msgstr "Altura de Colorprint" -#: src/libslic3r/PrintConfig.cpp:990 +#: src/libslic3r/PrintConfig.cpp:1034 msgid "Combine infill every" msgstr "Combinar el relleno cada" -#: src/libslic3r/PrintConfig.cpp:995 +#: src/libslic3r/PrintConfig.cpp:1039 msgid "Combine infill every n layers" msgstr "Combinar el relleno cada n capas" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:154 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:148 msgid "Commands" msgstr "Comandos" @@ -1327,23 +1574,23 @@ msgstr "Comandos" msgid "Comment:" msgstr "Comentario:" -#: src/slic3r/GUI/Tab.cpp:56 src/libslic3r/PrintConfig.cpp:280 +#: src/slic3r/GUI/Tab.cpp:107 src/libslic3r/PrintConfig.cpp:314 msgid "Compatible print profiles" msgstr "Perfiles de impresión compatibles" -#: src/libslic3r/PrintConfig.cpp:286 +#: src/libslic3r/PrintConfig.cpp:320 msgid "Compatible print profiles condition" msgstr "Condición de perfiles de impresión compatibles" -#: src/slic3r/GUI/Tab.cpp:50 src/libslic3r/PrintConfig.cpp:265 +#: src/slic3r/GUI/Tab.cpp:101 src/libslic3r/PrintConfig.cpp:299 msgid "Compatible printers" msgstr "Impresoras compatibles" -#: src/libslic3r/PrintConfig.cpp:271 +#: src/libslic3r/PrintConfig.cpp:305 msgid "Compatible printers condition" msgstr "Condición de impresoras compatibles" -#: src/libslic3r/PrintConfig.cpp:304 +#: src/libslic3r/PrintConfig.cpp:338 msgid "Complete individual objects" msgstr "Completar objetos individuales" @@ -1351,27 +1598,27 @@ msgstr "Completar objetos individuales" msgid "Completed" msgstr "Completado" -#: src/libslic3r/Zipper.cpp:54 +#: src/libslic3r/miniz_extension.cpp:113 msgid "compression failed" msgstr "compresión fallida" -#: src/libslic3r/PrintConfig.cpp:426 src/libslic3r/PrintConfig.cpp:849 +#: src/libslic3r/PrintConfig.cpp:462 src/libslic3r/PrintConfig.cpp:887 msgid "Concentric" msgstr "Concentrico" -#: src/slic3r/GUI/ConfigWizard.cpp:2110 +#: src/slic3r/GUI/ConfigWizard.cpp:2625 msgid "Configuration &Assistant" msgstr "&Asistente de configuración" -#: src/slic3r/GUI/ConfigWizard.cpp:2113 +#: src/slic3r/GUI/ConfigWizard.cpp:2628 msgid "Configuration &Wizard" msgstr "Ayudante de co&nfiguración" -#: src/slic3r/GUI/ConfigWizard.cpp:2109 +#: src/slic3r/GUI/ConfigWizard.cpp:2624 msgid "Configuration Assistant" msgstr "Asistente de Configuración" -#: src/libslic3r/PrintConfig.cpp:1316 +#: src/libslic3r/PrintConfig.cpp:1424 msgid "Configuration notes" msgstr "Notas de configuración" @@ -1387,11 +1634,15 @@ msgstr "Actualización de configuración" msgid "Configuration update is available" msgstr "Hay disponible una actualización de la Configuración" -#: src/slic3r/GUI/UpdateDialogs.cpp:303 +#: src/slic3r/GUI/NotificationManager.hpp:321 +msgid "Configuration update is available." +msgstr "Disponible la actualización de la configuración." + +#: src/slic3r/GUI/UpdateDialogs.cpp:304 msgid "Configuration updates" msgstr "Actualizaciones de la configuración" -#: src/slic3r/GUI/ConfigWizard.cpp:2112 +#: src/slic3r/GUI/ConfigWizard.cpp:2627 msgid "Configuration Wizard" msgstr "Asistente de configuración" @@ -1399,15 +1650,11 @@ msgstr "Asistente de configuración" msgid "Confirmation" msgstr "Confirmación" -#: src/slic3r/GUI/Tab.cpp:1931 -msgid "Connection failed." -msgstr "Conexión fallida." - -#: src/slic3r/GUI/Tab.cpp:3627 +#: src/slic3r/GUI/Tab.cpp:4046 msgid "Connection of the support sticks and junctions" msgstr "Conexión de las varillas de soporte y uniones" -#: src/slic3r/Utils/AstroBox.cpp:83 +#: src/slic3r/Utils/AstroBox.cpp:84 msgid "Connection to AstroBox works correctly." msgstr "La conexión a Astrobox funciona correctamente." @@ -1423,124 +1670,136 @@ msgstr "La conexión a FlashAir funciona correctamente y la carga está habilita msgid "Connection to OctoPrint works correctly." msgstr "La conexión a OctoPrint funciona correctamente." -#: src/slic3r/GUI/Tab.cpp:1928 -msgid "Connection to printer works correctly." -msgstr "La conexión con la impresora funciona correctamente." +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:260 +msgid "Connection to printers connected via the print host failed." +msgstr "Falló la conexión a las impresoras conectadas a través del host de impresión." -#: src/slic3r/Utils/OctoPrint.cpp:176 +#: src/slic3r/Utils/OctoPrint.cpp:185 msgid "Connection to Prusa SL1 works correctly." msgstr "La conexión con la Prusa SL1 funciona correctamente." -#: src/libslic3r/PrintConfig.cpp:1909 +#: src/libslic3r/PrintConfig.cpp:2051 msgid "Contact Z distance" msgstr "Distancia Z de contacto" -#: src/slic3r/GUI/AboutDialog.cpp:261 +#: src/slic3r/GUI/AboutDialog.cpp:286 msgid "Contributions by Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik and numerous others." msgstr "Contribuciones de Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik y muchos otros." -#: src/libslic3r/PrintConfig.cpp:2659 +#: src/slic3r/GUI/GUI_App.cpp:245 +msgid "Contributions by Vojtech Bubnik, Enrico Turri, Oleksandra Iushchenko, Tamas Meszaros, Lukas Matena, Vojtech Kral, David Kocik and numerous others." +msgstr "Contribuciones de Vojtech Bubnik, Enrico Turri, Oleksandra Iushchenko, Tamas Meszaros, Lukas Matena, Vojtech Kral, David Kocik y muchos otros." + +#: src/libslic3r/PrintConfig.cpp:2823 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 "Controla el tipo de puente entre dos pilares adyacentes. Puede ser zig-zag, cruzado(doble zig-zag) o dinámico que cambiará automáticamente entre los dos primeros dependiendo de la distancia de los dos pilares." -#: src/slic3r/GUI/Tab.cpp:1444 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1858 src/slic3r/GUI/Plater.cpp:4886 +msgid "Convert from imperial units" +msgstr "Convertir de unidades imperiales" + +#: src/slic3r/GUI/Tab.cpp:1790 msgid "Cooling" msgstr "Enfriamiento" -#: src/libslic3r/PrintConfig.cpp:660 +#: src/libslic3r/PrintConfig.cpp:696 msgid "Cooling moves are gradually accelerating beginning at this speed." msgstr "Los movimientos de enfriamiento se están acelerando gradualmente comenzando a esta velocidad." -#: src/libslic3r/PrintConfig.cpp:679 +#: src/libslic3r/PrintConfig.cpp:715 msgid "Cooling moves are gradually accelerating towards this speed." msgstr "Los movimientos de enfriamiento se están acelerando gradualmente hacia esta velocidad." -#: src/slic3r/GUI/Tab.cpp:1465 +#: src/slic3r/GUI/Tab.cpp:1811 msgid "Cooling thresholds" msgstr "Umbrales de enfriamiento" -#: src/libslic3r/PrintConfig.cpp:327 +#: src/libslic3r/PrintConfig.cpp:361 msgid "Cooling tube length" msgstr "Longitud del tubo de enfriamiento" -#: src/libslic3r/PrintConfig.cpp:319 +#: src/libslic3r/PrintConfig.cpp:353 msgid "Cooling tube position" msgstr "Posición del tubo de refrigeración" -#: src/slic3r/GUI/Plater.cpp:4752 +#: src/slic3r/GUI/Plater.cpp:4856 msgid "Copies of the selected object" msgstr "Copias del objeto seleccionado" -#: src/slic3r/GUI/GLCanvas3D.cpp:4505 +#: src/slic3r/GUI/GLCanvas3D.cpp:4871 msgid "Copy" msgstr "Copiar" -#: src/slic3r/GUI/MainFrame.cpp:589 +#: src/slic3r/GUI/MainFrame.cpp:1195 msgid "Copy selection to clipboard" msgstr "Copiar selección al portapapeles" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:132 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:127 msgid "Copy to clipboard" msgstr "Copiar al portapapeles" -#: src/slic3r/GUI/SysInfoDialog.cpp:154 +#: src/slic3r/GUI/SysInfoDialog.cpp:177 msgid "Copy to Clipboard" msgstr "Copiar al portapapeles" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:121 +#: 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." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:118 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:153 msgid "Copying of the temporary G-code has finished but the original code at %1% couldn't be opened during copy check. The output G-code is at %2%.tmp." msgstr "La copia del código G temporal ha finalizado, pero el código original en %1% no se pudo abrir durante la verificación de copia. El código G de salida está en%2%.tmp." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:480 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:522 msgid "Copying of the temporary G-code to the output G-code failed" msgstr "Error al copiar el código G temporal al código G de salida" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:109 -msgid "Copying of the temporary G-code to the output G-code failed. Maybe the SD card is write locked?" -msgstr "La copia del código G tempolar al código G de salida falló. ¿Tal vez la tarjeta SD tiene la escritura bloqueada?" +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:163 +msgid "" +"Copying of the temporary G-code to the output G-code failed. Maybe the SD card is write locked?\n" +"Error message: %1%" +msgstr "" +"Error al copiar el código G temporal en el código G de salida. ¿Quizás la tarjeta SD está bloqueada contra escritura?\n" +"Mensaje de error: %1%" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:112 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:147 msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp." msgstr "La copia del código G temporal al código G de salida ha fallado. Puede haber un problema con el dispositivo de destino, intenta exportar nuevamente o usa un dispositivo diferente. El código G de salida dañado está en %1%.tmp." -#: src/slic3r/GUI/AboutDialog.cpp:127 src/slic3r/GUI/AboutDialog.cpp:256 +#: src/slic3r/GUI/AboutDialog.cpp:139 src/slic3r/GUI/AboutDialog.cpp:281 msgid "Copyright" msgstr "Copyright" -#: src/libslic3r/PrintConfig.cpp:2571 src/libslic3r/PrintConfig.cpp:2572 +#: src/libslic3r/PrintConfig.cpp:2714 src/libslic3r/PrintConfig.cpp:2715 msgid "Correction for expansion" msgstr "Corrección para la expansión" -#: src/slic3r/GUI/Tab.cpp:2100 src/slic3r/GUI/Tab.cpp:3519 +#: src/slic3r/GUI/Tab.cpp:2270 src/slic3r/GUI/Tab.cpp:3935 msgid "Corrections" msgstr "Correcciones" -#: src/slic3r/GUI/Plater.cpp:1243 src/libslic3r/PrintConfig.cpp:760 -#: src/libslic3r/PrintConfig.cpp:2510 src/libslic3r/PrintConfig.cpp:2511 +#: src/slic3r/GUI/Plater.cpp:1158 src/libslic3r/PrintConfig.cpp:796 +#: src/libslic3r/PrintConfig.cpp:2653 src/libslic3r/PrintConfig.cpp:2654 msgid "Cost" msgstr "Coste" -#: src/slic3r/GUI/Plater.cpp:239 +#: src/slic3r/GUI/Plater.cpp:245 msgid "Cost (money)" msgstr "Coste (dinero)" -#: src/slic3r/GUI/Plater.cpp:2835 +#: src/slic3r/GUI/Jobs/ArrangeJob.cpp:176 msgid "Could not arrange model objects! Some geometries may be invalid." msgstr "¡No se pudieron organizar los objetos modelo! Algunas geometrías pueden ser inválidas." -#: src/slic3r/Utils/AstroBox.cpp:89 +#: src/slic3r/Utils/AstroBox.cpp:90 msgid "Could not connect to AstroBox" msgstr "No se pudo conectar con Astrobox" -#: src/slic3r/Utils/Duet.cpp:54 +#: src/slic3r/Utils/Duet.cpp:55 msgid "Could not connect to Duet" msgstr "No se pudo conectar con la Duet" -#: src/slic3r/Utils/FlashAir.cpp:73 +#: src/slic3r/Utils/FlashAir.cpp:74 msgid "Could not connect to FlashAir" msgstr "No puedo conectar con FlashAir" @@ -1548,56 +1807,69 @@ msgstr "No puedo conectar con FlashAir" msgid "Could not connect to OctoPrint" msgstr "No puedo conectar con OctoPrint" -#: src/slic3r/Utils/OctoPrint.cpp:181 +#: src/slic3r/Utils/OctoPrint.cpp:191 msgid "Could not connect to Prusa SLA" msgstr "No se pudo conectar con la Prusa SLA" -#: src/slic3r/GUI/Tab.cpp:1687 +#: src/slic3r/Utils/Http.cpp:73 +msgid "Could not detect system SSL certificate store. PrusaSlicer will be unable to establish secure network connections." +msgstr "No se pudo detectar el almacén de certificados SSL del sistema. PrusaSlicer no podrá establecer conexiones de red seguras." + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:289 msgid "Could not get a valid Printer Host reference" msgstr "No pude conseguir una referencia válida de gestor de impresora" -#: src/slic3r/Utils/Duet.cpp:134 +#: src/slic3r/Utils/Duet.cpp:136 msgid "Could not get resources to create a new connection" msgstr "No se pudieron obtener recursos para crear una nueva conexión" -#: src/libslic3r/PrintConfig.cpp:1959 +#: src/libslic3r/PrintConfig.cpp:2101 msgid "Cover the top contact layer of the supports with loops. Disabled by default." msgstr "Cubrir la capa de contacto superior de los soportes con bucles. Desactivado por defecto." -#: src/libslic3r/PrintConfig.cpp:89 +#: src/libslic3r/PrintConfig.cpp:91 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 "Las ranuras de menos de dos veces el radio de cierre de huecos se rellenan durante el laminado de la malla triangular. La operación de cierre de huecos puede reducir la resolución de la impresión, por lo tanto es aconsejable mantener ese valor razonablemente bajo." -#: src/libslic3r/Zipper.cpp:58 +#: src/libslic3r/miniz_extension.cpp:117 msgid "CRC-32 check failed" msgstr "Comprobación con CRC-32 fallida" -#: src/libslic3r/PrintConfig.cpp:2857 +#: src/libslic3r/PrintConfig.cpp:3021 msgid "Create pad around object and ignore the support elevation" msgstr "Crear pad alrededor del objeto e ignorar la elevación del soporte" -#: src/libslic3r/PrintConfig.cpp:2724 +#: src/libslic3r/PrintConfig.cpp:2888 msgid "Critical angle" msgstr "Ángulo crítico" -#: src/libslic3r/PrintConfig.cpp:2668 +#: src/libslic3r/PrintConfig.cpp:2832 msgid "Cross" msgstr "Cruzado" -#: src/libslic3r/PrintConfig.cpp:847 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:225 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:203 +msgid "Ctrl + Mouse wheel" +msgstr "Ctrl + Rueda del ratón" + +#: src/libslic3r/PrintConfig.cpp:885 msgid "Cubic" msgstr "Cúbico" -#: src/slic3r/GUI/wxExtensions.cpp:704 +#: src/slic3r/Utils/Http.cpp:91 +msgid "CURL init has failed. PrusaSlicer will be unable to establish network connections. See logs for additional details." +msgstr "CURL init ha fallado. PrusaSlicer no podrá establecer conexiones de red. Consulta los registros para obtener detalles adicionales." + +#: src/slic3r/GUI/wxExtensions.cpp:624 #, c-format msgid "Current mode is %s" msgstr "El modo actual es %s" -#: src/slic3r/GUI/Tab.cpp:959 +#: src/slic3r/GUI/Tab.cpp:1278 msgid "Current preset is inherited from" msgstr "El preajuste fue heredado de" -#: src/slic3r/GUI/Tab.cpp:957 +#: src/slic3r/GUI/Tab.cpp:1276 msgid "Current preset is inherited from the default preset." msgstr "El preajuste fue heredado del preajuste predeterminado." @@ -1605,451 +1877,488 @@ msgstr "El preajuste fue heredado del preajuste predeterminado." msgid "Current version:" msgstr "Versión actual:" -#: src/slic3r/GUI/BedShapeDialog.cpp:98 src/slic3r/GUI/GUI_Preview.cpp:249 -#: src/libslic3r/ExtrusionEntity.cpp:322 +#: src/slic3r/GUI/BedShapeDialog.cpp:143 src/slic3r/GUI/GUI_Preview.cpp:314 +#: src/libslic3r/ExtrusionEntity.cpp:327 src/libslic3r/ExtrusionEntity.cpp:362 msgid "Custom" msgstr "Personalizado" -#: src/libslic3r/PrintConfig.cpp:112 +#: src/libslic3r/PrintConfig.cpp:114 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 "Un archivo de certificado CA personalizado puede ser especificado para conexiones HTTPS OctoPrint, en formato crt/pem. Si se deja en blanco, el repositorio de certificados OS CA será usado." -#: src/slic3r/GUI/Tab.cpp:1527 src/slic3r/GUI/Tab.cpp:1975 +#: src/slic3r/GUI/Tab.cpp:1872 src/slic3r/GUI/Tab.cpp:2160 +#: src/libslic3r/PrintConfig.cpp:1978 msgid "Custom G-code" msgstr "Código G personalizado" -#: src/slic3r/GUI/DoubleSlider.cpp:1619 +#: src/slic3r/GUI/DoubleSlider.cpp:1815 msgid "Custom G-code on current layer (%1% mm)." msgstr "Código G personalizado en la capa actual (%1% mm)." -#: src/slic3r/GUI/ConfigWizard.cpp:732 +#: src/slic3r/GUI/GCodeViewer.cpp:2580 src/slic3r/GUI/GUI_Preview.cpp:1477 +msgid "Custom G-codes" +msgstr "Códigos G personalizados" + +#: src/slic3r/GUI/ConfigWizard.cpp:1091 msgid "Custom Printer" msgstr "Impresora customizada" -#: src/slic3r/GUI/ConfigWizard.cpp:732 +#: src/slic3r/GUI/ConfigWizard.cpp:1091 msgid "Custom Printer Setup" msgstr "Configuración personalizada de impresora" -#: src/slic3r/GUI/ConfigWizard.cpp:736 +#: src/slic3r/GUI/ConfigWizard.cpp:1095 msgid "Custom profile name:" msgstr "Nombre impresora customizada:" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:42 -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:144 src/libslic3r/PrintConfig.cpp:3402 +#: src/slic3r/GUI/DoubleSlider.cpp:1135 +msgid "Custom template (\"%1%\")" +msgstr "Plantilla personalizada (\"%1%\")" + +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:146 src/libslic3r/PrintConfig.cpp:3601 msgid "Cut" msgstr "Cortar" -#: src/slic3r/GUI/Plater.cpp:4786 +#: src/slic3r/GUI/Plater.cpp:4921 msgid "Cut by Plane" msgstr "Cortar por el Plano" -#: src/libslic3r/PrintConfig.cpp:3403 +#: src/libslic3r/PrintConfig.cpp:3602 msgid "Cut model at the given Z." msgstr "Cortar modelo a una Z dada." -#: src/slic3r/GUI/GUI_ObjectList.cpp:1432 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1563 msgid "Cylinder" msgstr "Cilindro" -#: src/slic3r/GUI/MainFrame.cpp:568 +#: src/slic3r/GUI/MainFrame.cpp:1174 msgid "D&eselect all" msgstr "D&eseleccionar todo" -#: src/libslic3r/PrintConfig.cpp:3504 +#: src/libslic3r/PrintConfig.cpp:3709 msgid "Data directory" msgstr "Directorio de datos" -#: src/slic3r/GUI/Mouse3DController.cpp:313 +#: src/slic3r/GUI/Mouse3DController.cpp:300 msgid "Deadzone:" msgstr "Zona muerta:" -#: src/libslic3r/Zipper.cpp:52 +#: src/libslic3r/miniz_extension.cpp:111 msgid "decompression failed or archive is corrupted" msgstr "descompresión fallida o archivo está dañado" -#: src/slic3r/GUI/Plater.cpp:4720 +#: src/slic3r/GUI/Plater.cpp:4824 msgid "Decrease Instances" msgstr "Reducir Instancias" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1704 src/libslic3r/PrintConfig.cpp:335 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1832 src/libslic3r/PrintConfig.cpp:369 msgid "Default" msgstr "Por defecto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:457 src/slic3r/GUI/GUI_ObjectList.cpp:469 -#: src/slic3r/GUI/GUI_ObjectList.cpp:917 src/slic3r/GUI/GUI_ObjectList.cpp:3967 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3977 -#: src/slic3r/GUI/GUI_ObjectList.cpp:4012 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:200 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:257 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:282 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:490 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:1753 +#: 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/ObjectDataViewModel.cpp:202 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:259 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:284 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:492 msgid "default" msgstr "por defecto" -#: src/libslic3r/PrintConfig.cpp:777 +#: src/libslic3r/PrintConfig.cpp:813 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 "Ángulo base predeterminado para orientación de relleno. Se aplicará sombreado cruzado a esto. Los puentes se rellenarán utilizando la mejor dirección que Slic3r pueda detectar, por lo que esta configuración no los afecta." -#: src/libslic3r/PrintConfig.cpp:554 +#: src/slic3r/GUI/GCodeViewer.cpp:2289 +msgid "Default color" +msgstr "Color predeterminado" + +#: src/slic3r/GUI/GCodeViewer.cpp:2313 +msgid "default color" +msgstr "color predeterminado" + +#: src/libslic3r/PrintConfig.cpp:590 msgid "Default extrusion width" msgstr "Ancho de extrusión por defecto" -#: src/slic3r/GUI/Tab.cpp:987 +#: src/slic3r/GUI/Tab.cpp:1305 msgid "default filament profile" msgstr "perfil de filamento por defecto" -#: src/libslic3r/PrintConfig.cpp:345 +#: src/libslic3r/PrintConfig.cpp:379 msgid "Default filament profile" msgstr "Perfil de filamento por defecto" -#: src/libslic3r/PrintConfig.cpp:346 +#: src/libslic3r/PrintConfig.cpp:380 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/Tab.cpp:2919 -#, c-format -msgid "Default preset (%s)" -msgstr "Ajustes por defecto (%s)" - -#: src/slic3r/GUI/GLCanvas3D.cpp:904 src/slic3r/GUI/GLCanvas3D.cpp:933 +#: 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:984 +#: src/slic3r/GUI/Tab.cpp:1302 msgid "default print profile" msgstr "perfil de impresión por defecto" -#: src/libslic3r/PrintConfig.cpp:352 +#: src/libslic3r/PrintConfig.cpp:386 msgid "Default print profile" msgstr "Perfil de impresión por defecto" -#: src/libslic3r/PrintConfig.cpp:353 src/libslic3r/PrintConfig.cpp:2592 -#: src/libslic3r/PrintConfig.cpp:2603 +#: src/libslic3r/PrintConfig.cpp:387 src/libslic3r/PrintConfig.cpp:2735 +#: src/libslic3r/PrintConfig.cpp:2746 msgid "Default print profile associated with the current printer profile. On selection of the current printer profile, this print profile will be activated." msgstr "Perfil de impresión por defecto asociado con el perfil de impresora actual. Al seleccionar el perfil de impresora actual se activará este perfil de impresión." -#: src/slic3r/GUI/Tab.cpp:1001 +#: src/slic3r/GUI/Tab.cpp:1319 msgid "default SLA material profile" msgstr "perfil de material de SLA por defecto" -#: src/libslic3r/PrintConfig.cpp:2591 src/libslic3r/PrintConfig.cpp:2602 +#: src/libslic3r/PrintConfig.cpp:2734 src/libslic3r/PrintConfig.cpp:2745 msgid "Default SLA material profile" msgstr "Perfil de material de SLA predeterminado" -#: src/slic3r/GUI/Tab.cpp:1005 +#: src/slic3r/GUI/Tab.cpp:1323 msgid "default SLA print profile" msgstr "perfil de impresión de SLA por defecto" -#: src/slic3r/GUI/Field.cpp:136 +#: src/slic3r/GUI/Field.cpp:184 msgid "default value" msgstr "valor por defecto" -#: src/slic3r/GUI/ConfigWizard.cpp:734 +#: src/slic3r/GUI/ConfigWizard.cpp:1093 msgid "Define a custom printer profile" msgstr "Definir un perfil de impresora personalizado" -#: src/libslic3r/PrintConfig.cpp:2798 +#: src/libslic3r/PrintConfig.cpp:2962 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 effect inside the cavity, which makes peeling the print off the vat foil difficult." msgstr "Define la profundidad de la cavidad del pad. Establecerer a cero para deshabilitar la cavidad. Ten cuidado al habilitar esta función, ya que algunas resinas pueden producir un efecto de succión extremo dentro de la cavidad, lo que dificulta el despegado de la impresión de la lámina de la cuba." -#: src/slic3r/GUI/GUI_ObjectList.cpp:346 +#: src/slic3r/GUI/GUI_ObjectList.cpp:393 msgid "degenerate facets" msgstr "facetas degeneradas" -#: src/libslic3r/PrintConfig.cpp:640 +#: src/libslic3r/PrintConfig.cpp:676 msgid "Delay after unloading" msgstr "Retardo tras la descarga" -#: src/slic3r/GUI/Tab.cpp:3121 +#: src/slic3r/GUI/Tab.cpp:3386 msgid "delete" msgstr "borra" -#: src/slic3r/GUI/GLCanvas3D.cpp:4475 src/slic3r/GUI/GUI_ObjectList.cpp:1718 -#: src/slic3r/GUI/Plater.cpp:3931 src/slic3r/GUI/Plater.cpp:3953 -#: src/slic3r/GUI/Tab.cpp:3124 +#: src/slic3r/GUI/GLCanvas3D.cpp:4841 src/slic3r/GUI/GUI_ObjectList.cpp:1846 +#: src/slic3r/GUI/Plater.cpp:3849 src/slic3r/GUI/Plater.cpp:3871 +#: src/slic3r/GUI/Tab.cpp:3423 msgid "Delete" msgstr "Borra" -#: src/slic3r/GUI/MainFrame.cpp:575 +#: src/slic3r/GUI/MainFrame.cpp:1181 msgid "Delete &all" msgstr "Borr&ar todo" -#: src/slic3r/GUI/GLCanvas3D.cpp:4484 src/slic3r/GUI/KBShortcutsDialog.cpp:129 -#: src/slic3r/GUI/Plater.cpp:4669 +#: src/slic3r/GUI/GLCanvas3D.cpp:4850 src/slic3r/GUI/KBShortcutsDialog.cpp:124 +#: src/slic3r/GUI/Plater.cpp:4774 msgid "Delete all" msgstr "Eliminar todo" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2176 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2341 msgid "Delete All Instances from Object" msgstr "Eliminar todas las instancias del Objeto" -#: src/slic3r/GUI/DoubleSlider.cpp:1516 +#: src/slic3r/GUI/DoubleSlider.cpp:1708 msgid "Delete color change" msgstr "Eliminar cambio de color" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:219 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:220 msgid "Delete color change marker for current layer" msgstr "Eliminar marcador de cambio de color para la capa actual" -#: src/slic3r/GUI/DoubleSlider.cpp:1519 +#: src/slic3r/GUI/DoubleSlider.cpp:1711 msgid "Delete custom G-code" msgstr "Eliminar código G personalizado" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:539 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:424 msgid "Delete drainage hole" msgstr "Eliminar orificio de drenaje" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2192 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2357 msgid "Delete Height Range" msgstr "Eliminar Rango de Alturas" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2246 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2412 msgid "Delete Instance" msgstr "Eliminar Instancia" -#: src/slic3r/GUI/Plater.cpp:2712 +#: src/slic3r/GUI/Plater.cpp:2673 msgid "Delete Object" msgstr "Eliminar Objeto" -#: src/slic3r/GUI/GUI_ObjectSettings.cpp:101 +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:104 #, c-format msgid "Delete Option %s" msgstr "Eliminar Opción %s" -#: src/slic3r/GUI/DoubleSlider.cpp:1518 +#: src/slic3r/GUI/DoubleSlider.cpp:1710 msgid "Delete pause print" msgstr "Eliminar pausa de impresión" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:128 +#: src/slic3r/GUI/PresetComboBoxes.cpp:652 +msgid "Delete physical printer" +msgstr "Eliminar impresora física" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:659 +msgid "Delete Physical Printer" +msgstr "Eliminar Impresora Física" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:123 msgid "Delete selected" msgstr "Eliminar selección" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2830 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3221 msgid "Delete Selected" msgstr "Eliminar Selección" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2693 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3083 msgid "Delete Selected Item" msgstr "Eliminar Objeto Seleccionado" -#: src/slic3r/GUI/Plater.cpp:4677 +#: src/slic3r/GUI/Plater.cpp:4782 msgid "Delete Selected Objects" msgstr "Eliminar Objetos Seleccionados" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2152 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2319 msgid "Delete Settings" msgstr "Eliminar Ajustes" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2227 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2393 msgid "Delete Subobject" msgstr "Eliminar Subobjeto" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:631 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:514 msgid "Delete support point" msgstr "Borra punto de apoyo" -#: src/slic3r/GUI/Tab.cpp:134 +#: src/slic3r/GUI/Tab.cpp:204 msgid "Delete this preset" msgstr "Borra este ajuste" -#: src/slic3r/GUI/DoubleSlider.cpp:1035 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:55 +msgid "Delete this preset from this printer device" +msgstr "Eliminar este ajuste preestablecido para este dispositivo de impresión" + +#: src/slic3r/GUI/DoubleSlider.cpp:1160 msgid "Delete tick mark - Left click or press \"-\" key" msgstr "Eliminar marca de verificación - Click izquierdo o presionar tecla \"-\"" -#: src/slic3r/GUI/DoubleSlider.cpp:1517 +#: src/slic3r/GUI/DoubleSlider.cpp:1709 msgid "Delete tool change" msgstr "Eliminar cambio de herramienta" -#: src/slic3r/GUI/MainFrame.cpp:576 +#: src/slic3r/GUI/MainFrame.cpp:1182 msgid "Deletes all objects" msgstr "Borra todos los objetos" -#: src/slic3r/GUI/MainFrame.cpp:573 +#: src/slic3r/GUI/MainFrame.cpp:1179 msgid "Deletes the current selection" msgstr "Borrar la selección actual" -#: src/libslic3r/PrintConfig.cpp:717 src/libslic3r/PrintConfig.cpp:2503 -#: src/libslic3r/PrintConfig.cpp:2504 +#: src/libslic3r/PrintConfig.cpp:753 src/libslic3r/PrintConfig.cpp:2646 +#: src/libslic3r/PrintConfig.cpp:2647 msgid "Density" msgstr "Densidad" -#: src/libslic3r/PrintConfig.cpp:791 +#: src/libslic3r/PrintConfig.cpp:827 msgid "Density of internal infill, expressed in the range 0% - 100%." msgstr "Densidad de relleno interior, expresado en el rango 0% - 100%." -#: src/slic3r/GUI/Tab.cpp:1258 src/slic3r/GUI/Tab.cpp:1548 -#: src/slic3r/GUI/Tab.cpp:2019 src/slic3r/GUI/Tab.cpp:2135 -#: src/slic3r/GUI/Tab.cpp:3543 src/slic3r/GUI/Tab.cpp:3671 +#: src/slic3r/GUI/Tab.cpp:1588 src/slic3r/GUI/Tab.cpp:1895 +#: src/slic3r/GUI/Tab.cpp:2228 src/slic3r/GUI/Tab.cpp:2304 +#: src/slic3r/GUI/Tab.cpp:3959 src/slic3r/GUI/Tab.cpp:4090 msgid "Dependencies" msgstr "Dependencias" -#: src/libslic3r/PrintConfig.cpp:1612 src/libslic3r/PrintConfig.cpp:1613 +#: src/libslic3r/PrintConfig.cpp:1720 src/libslic3r/PrintConfig.cpp:1721 msgid "Deretraction Speed" msgstr "Velocidad de deretracción" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:127 +#: src/slic3r/GUI/GCodeViewer.cpp:2529 src/slic3r/GUI/GUI_Preview.cpp:337 +#: src/slic3r/GUI/GUI_Preview.cpp:1473 +msgid "Deretractions" +msgstr "Deretracciones" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:172 +msgid "Descriptive name for the printer" +msgstr "Un nombre descriptivo para la impresora" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:122 msgid "Deselect all" msgstr "Deseleccionar todo" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1369 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1216 msgid "Deselect by rectangle" msgstr "Deseleccionar mediante rectángulo" -#: src/slic3r/GUI/MainFrame.cpp:569 +#: src/slic3r/GUI/MainFrame.cpp:1175 msgid "Deselects all objects" msgstr "Deseleccionar todos los objetos" -#: src/slic3r/GUI/Tab.cpp:963 +#: src/slic3r/GUI/Tab.cpp:1224 msgid "Detach from system preset" msgstr "Separar del preajuste del sistema" -#: src/slic3r/GUI/Tab.cpp:984 +#: src/slic3r/GUI/Tab.cpp:1246 msgid "Detach preset" msgstr "Separar preajuste" -#: src/slic3r/GUI/Tab.cpp:3029 +#: src/slic3r/GUI/Tab.cpp:3323 msgid "Detached" msgstr "Separado" -#: src/libslic3r/PrintConfig.cpp:1373 +#: src/libslic3r/PrintConfig.cpp:1481 msgid "Detect bridging perimeters" msgstr "Detectar perímetros con puentes" -#: src/libslic3r/PrintConfig.cpp:2075 +#: src/libslic3r/PrintConfig.cpp:2218 msgid "Detect single-width walls (parts where two extrusions don't fit and we need to collapse them into a single trace)." msgstr "Detecta muros de ancho único (partes donde dos extrusiones no se ajustan y tenemos que colapsarlas en un solo rastro)." -#: src/libslic3r/PrintConfig.cpp:2073 +#: src/libslic3r/PrintConfig.cpp:2216 msgid "Detect thin walls" msgstr "Detecta paredes delgadas" -#: src/libslic3r/PrintConfig.cpp:3472 +#: src/libslic3r/PrintConfig.cpp:3671 msgid "Detect unconnected parts in the given model(s) and split them into separate objects." msgstr "Detectadas piezas desconectadas en el(los) modelo(s) dado(s) y divídido(s) en objetos separados." -#: src/slic3r/GUI/Plater.cpp:2368 +#: src/slic3r/GUI/Plater.cpp:2330 msgid "Detected advanced data" msgstr "Datos avanzados detectados" -#: src/slic3r/GUI/Mouse3DController.cpp:289 +#: src/slic3r/GUI/Mouse3DController.cpp:274 msgid "Device:" msgstr "Dispositivo:" -#: src/slic3r/GUI/BedShapeDialog.cpp:93 src/libslic3r/PrintConfig.cpp:709 +#: src/slic3r/GUI/BedShapeDialog.cpp:95 src/libslic3r/PrintConfig.cpp:745 msgid "Diameter" msgstr "Diámetro" -#: src/libslic3r/PrintConfig.cpp:2694 +#: src/libslic3r/PrintConfig.cpp:2858 msgid "Diameter in mm of the pillar base" msgstr "Diámetro en mm del pilar de la base" -#: src/libslic3r/PrintConfig.cpp:2650 +#: src/libslic3r/PrintConfig.cpp:2793 msgid "Diameter in mm of the support pillars" msgstr "Diámetro en mm de los pilares de soporte" -#: src/libslic3r/PrintConfig.cpp:2622 +#: src/libslic3r/PrintConfig.cpp:2765 msgid "Diameter of the pointing side of the head" msgstr "Diámetro de la parte en punta de la cabeza" -#: src/slic3r/GUI/BedShapeDialog.cpp:94 +#: src/slic3r/GUI/BedShapeDialog.cpp:131 msgid "Diameter of the print bed. It is assumed that origin (0,0) is located in the center." msgstr "Diámetro de la base de impresión. Se supone que el origen (0,0) está ubicado en el centro." -#: src/libslic3r/PrintConfig.cpp:1639 +#: src/libslic3r/PrintConfig.cpp:1747 msgid "Direction" msgstr "Dirección" -#: src/libslic3r/PrintConfig.cpp:359 +#: src/libslic3r/PrintConfig.cpp:393 msgid "Disable fan for the first" msgstr "Desactivar ventilador para la primera" -#: src/libslic3r/PrintConfig.cpp:1349 +#: src/libslic3r/PrintConfig.cpp:1457 msgid "Disables retraction when the travel path does not exceed the upper layer's perimeters (and thus any ooze will be probably invisible)." msgstr "Desactiva la retracción cuando la trayectoria de desplazamiento no supera los perímetros de la capa superior (y, por lo tanto, cualquier goteo probablemente será invisible)." -#: src/slic3r/GUI/DoubleSlider.cpp:952 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:641 +msgid "Discard" +msgstr "Descartar" + +#: src/slic3r/GUI/DoubleSlider.cpp:1066 msgid "Discard all custom changes" msgstr "Descartar todos los cambios personalizados" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:53 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1375 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:52 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1222 msgid "Discard changes" msgstr "Descartar los cambios" -#: src/slic3r/GUI/GUI_App.cpp:932 src/slic3r/GUI/Tab.cpp:2946 -msgid "Discard changes and continue anyway?" -msgstr "¿Descartar los cambios y continuar de todos modos?" - -#: src/slic3r/GUI/Tab.cpp:2078 +#: src/slic3r/GUI/Tab.cpp:2248 msgid "Display" msgstr "Pantalla" -#: src/libslic3r/PrintConfig.cpp:2359 +#: src/libslic3r/PrintConfig.cpp:2502 msgid "Display height" msgstr "Altura de la pantalla" -#: src/libslic3r/PrintConfig.cpp:2378 +#: src/libslic3r/PrintConfig.cpp:2521 msgid "Display horizontal mirroring" msgstr "Espejo horizontal de la pantalla" -#: src/libslic3r/PrintConfig.cpp:2392 +#: src/libslic3r/PrintConfig.cpp:2535 msgid "Display orientation" msgstr "Orientación de la pantalla" -#: src/slic3r/GUI/MainFrame.cpp:648 +#: src/slic3r/GUI/MainFrame.cpp:1258 msgid "Display the Print Host Upload Queue window" msgstr "Mostrar la ventana de la cola de carga del host de impresión" -#: src/libslic3r/PrintConfig.cpp:2385 +#: src/libslic3r/PrintConfig.cpp:2528 msgid "Display vertical mirroring" msgstr "Espejo vertical de la pantalla" -#: src/libslic3r/PrintConfig.cpp:2353 +#: src/libslic3r/PrintConfig.cpp:2496 msgid "Display width" msgstr "Anchura de la pantalla" -#: src/libslic3r/PrintConfig.cpp:377 +#: src/libslic3r/PrintConfig.cpp:411 msgid "Distance between copies" msgstr "Distancia entre copias" -#: src/libslic3r/PrintConfig.cpp:1680 +#: src/libslic3r/PrintConfig.cpp:1157 +msgid "Distance between ironing lines" +msgstr "Distancia entre las líneas alisadas" + +#: src/libslic3r/PrintConfig.cpp:1788 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 "Distancia entre falda y objeto(s). Ajuste esto a cero para unir la falda a los objetos y obtener un borde para una mejor adhesión." -#: src/libslic3r/PrintConfig.cpp:2882 +#: src/libslic3r/PrintConfig.cpp:3046 msgid "Distance between two connector sticks which connect the object and the generated pad." msgstr "Distancia entre dos palitos de apoyo entre la pieza y la base generada." -#: src/libslic3r/PrintConfig.cpp:1679 +#: src/libslic3r/PrintConfig.cpp:1787 msgid "Distance from object" msgstr "Distancia del objeto" -#: src/slic3r/GUI/BedShapeDialog.cpp:85 +#: src/slic3r/GUI/BedShapeDialog.cpp:121 msgid "Distance of the 0,0 G-code coordinate from the front left corner of the rectangle." msgstr "Distancia de la coordenada del código G de 0,0 de la esquina frontal izquierda del rectángulo." -#: src/libslic3r/PrintConfig.cpp:320 +#: src/libslic3r/PrintConfig.cpp:354 msgid "Distance of the center-point of the cooling tube from the extruder tip." msgstr "Distancia desde el centro del tubo de enfriado a la punta del extrusor." -#: src/libslic3r/PrintConfig.cpp:1382 +#: src/libslic3r/PrintConfig.cpp:1490 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 "Distancia de la punta del extrusor desde la posición donde el filamento es colocado cuando se descarga. Esto debería coincidir con el valor en el firmware de la impresora." -#: src/libslic3r/PrintConfig.cpp:378 +#: src/libslic3r/PrintConfig.cpp:412 msgid "Distance used for the auto-arrange feature of the plater." msgstr "Distancia utilizada para la función de organización automática de la base." -#: src/libslic3r/PrintConfig.cpp:3486 +#: src/libslic3r/PrintConfig.cpp:3685 msgid "Do not fail if a file supplied to --load does not exist." msgstr "No fallar si el archivo suministrado para --load no existe." -#: src/libslic3r/PrintConfig.cpp:3430 +#: src/libslic3r/PrintConfig.cpp:3629 msgid "Do not rearrange the given models before merging and keep their original XY coordinates." msgstr "No reorganizar los modelos dados antes de fusionar y mantener sus coordenadas XY originales." -#: src/slic3r/GUI/Field.cpp:240 +#: src/slic3r/GUI/Field.cpp:288 #, c-format msgid "" "Do you mean %s%% instead of %s %s?\n" @@ -2060,31 +2369,35 @@ msgstr "" "Escoge SI si deseas cambiar este valor a %s%%,\n" "o NO si estás seguro que %s %s es el valor correcto." -#: src/slic3r/GUI/DoubleSlider.cpp:1920 +#: src/slic3r/GUI/DoubleSlider.cpp:2138 msgid "Do you want to delete all saved tool changes?" msgstr "¿Desea eliminar todos los cambios de herramienta guardados?" -#: src/slic3r/GUI/GUI_App.cpp:884 +#: src/slic3r/GUI/GUI_App.cpp:1610 msgid "Do you want to proceed?" msgstr "¿Deseas continuar?" -#: src/slic3r/GUI/Plater.cpp:3321 +#: src/slic3r/GUI/Plater.cpp:3124 msgid "Do you want to retry" msgstr "Quieres volver a intentarlo" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1045 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:911 msgid "Do you want to save your manually edited support points?" msgstr "¿Deseas guardar tus puntos de soporte editados manualmente?" -#: src/slic3r/GUI/ConfigWizard.cpp:1834 +#: src/slic3r/GUI/ConfigWizard.cpp:2261 msgid "Do you want to select default filaments for these FFF printer models?" msgstr "¿Desea seleccionar filamentos predeterminados para estos modelos de impresoras FFF?" -#: src/slic3r/GUI/ConfigWizard.cpp:1852 +#: src/slic3r/GUI/ConfigWizard.cpp:2279 msgid "Do you want to select default SLA materials for these printer models?" msgstr "¿Desea seleccionar materiales SLA predeterminados para estos modelos de impresora?" -#: src/libslic3r/PrintConfig.cpp:3429 +#: src/slic3r/GUI/Plater.cpp:4751 +msgid "does not contain valid gcode." +msgstr "no contiene gcode válido." + +#: src/libslic3r/PrintConfig.cpp:3628 msgid "Don't arrange" msgstr "No organizar" @@ -2092,7 +2405,11 @@ msgstr "No organizar" msgid "Don't notify about new releases any more" msgstr "No quiero recibir avisos de nuevas versiones" -#: src/libslic3r/PrintConfig.cpp:369 +#: src/slic3r/GUI/Plater.cpp:1431 +msgid "Don't show again" +msgstr "No mostrar de nuevo" + +#: src/libslic3r/PrintConfig.cpp:403 msgid "Don't support bridges" msgstr "No soportar puentes" @@ -2100,234 +2417,296 @@ msgstr "No soportar puentes" msgid "Downgrade" msgstr "Volver a una versión anterior" -#: src/libslic3r/PrintConfig.cpp:1695 +#: src/libslic3r/PrintConfig.cpp:1803 msgid "Draft shield" msgstr "Escudo de protección" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1365 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1368 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1369 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1212 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1215 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1216 msgid "Drag" msgstr "Arrastra" -#: src/libslic3r/SLAPrintSteps.cpp:44 +#: src/slic3r/GUI/Plater.cpp:1406 +msgid "Drag and drop G-code file" +msgstr "Arrastra y suelta el archivo código G" + +#: src/libslic3r/SLAPrintSteps.cpp:45 msgid "Drilling holes into model." msgstr "Taladrando agujeros en el modelo." -#: src/libslic3r/SLAPrintSteps.cpp:199 +#: src/libslic3r/SLAPrintSteps.cpp:201 msgid "Drilling holes into the mesh failed. This is usually caused by broken model. Try to fix it first." msgstr "Perforación de agujeros en la malla fallida. Esto generalmente es causado por un modelo roto. Intenta arreglarlo primero." -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:337 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:349 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:345 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:357 msgid "Drop to bed" msgstr "Colocar en la Cama" -#: src/libslic3r/PrintConfig.cpp:3433 +#: src/libslic3r/PrintConfig.cpp:3632 msgid "Duplicate" msgstr "Duplicar" -#: src/libslic3r/PrintConfig.cpp:3438 +#: src/libslic3r/PrintConfig.cpp:3637 msgid "Duplicate by grid" msgstr "Duplicar por cuadrícula" -#: src/slic3r/GUI/PresetHints.cpp:40 +#: src/slic3r/GUI/GCodeViewer.cpp:2445 +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/libslic3r/PrintConfig.cpp:2669 +#: src/libslic3r/PrintConfig.cpp:2833 msgid "Dynamic" msgstr "Dinámico" -#: src/slic3r/GUI/MainFrame.cpp:749 +#: src/slic3r/GUI/MainFrame.cpp:1448 msgid "E&xport" msgstr "E&xportar" -#: src/slic3r/GUI/GUI_ObjectList.cpp:347 +#: src/slic3r/GUI/GUI_ObjectList.cpp:394 msgid "edges fixed" msgstr "esquimas reparadas" -#: src/slic3r/GUI/DoubleSlider.cpp:1508 +#: src/slic3r/GUI/DoubleSlider.cpp:1700 msgid "Edit color" msgstr "Editar color" -#: src/slic3r/GUI/DoubleSlider.cpp:960 +#: src/slic3r/GUI/DoubleSlider.cpp:1083 msgid "Edit current color - Right click the colored slider segment" msgstr "Editar color actual - Clic derecho en el segmento de color deslizante" -#: src/slic3r/GUI/DoubleSlider.cpp:1510 +#: src/slic3r/GUI/DoubleSlider.cpp:1702 msgid "Edit custom G-code" msgstr "Editar código G personalizado" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3003 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3459 msgid "Edit Height Range" msgstr "Editar Rango de Alturas" -#: src/slic3r/GUI/DoubleSlider.cpp:1509 +#: src/slic3r/GUI/DoubleSlider.cpp:1701 msgid "Edit pause print message" msgstr "Editar mensaje de pausa de impresión" -#: src/slic3r/GUI/DoubleSlider.cpp:1037 +#: src/slic3r/GUI/PresetComboBoxes.cpp:645 +msgid "Edit physical printer" +msgstr "Editar impresora física" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:641 +msgid "Edit preset" +msgstr "Editar ajuste preestablecido" + +#: src/slic3r/GUI/DoubleSlider.cpp:1162 msgid "Edit tick mark - Ctrl + Left click" msgstr "Editar la marca - Ctrl+ Click izquierdo" -#: src/slic3r/GUI/DoubleSlider.cpp:1038 +#: src/slic3r/GUI/DoubleSlider.cpp:1163 msgid "Edit tick mark - Right click" msgstr "Editar marca de verificación - Clic derecho" -#: src/slic3r/GUI/GUI_ObjectList.cpp:282 src/slic3r/GUI/GUI_ObjectList.cpp:394 +#: src/slic3r/GUI/GUI_ObjectList.cpp:300 src/slic3r/GUI/GUI_ObjectList.cpp:441 msgid "Editing" msgstr "Edición" -#: src/slic3r/GUI/MainFrame.cpp:547 +#: src/slic3r/GUI/MainFrame.cpp:1105 msgid "Ejec&t SD card / Flash drive" msgstr "Expul&sa tarjeta SD / disco USB" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:126 +#: src/slic3r/GUI/NotificationManager.cpp:780 +msgid "Eject drive" +msgstr "Expulsar la unidad" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:119 msgid "Eject SD card / Flash drive" msgstr "Expulsa la tarjeta SD / disco USB" -#: src/slic3r/GUI/MainFrame.cpp:547 +#: src/slic3r/GUI/MainFrame.cpp:1105 msgid "Eject SD card / Flash drive after the G-code was exported to it." msgstr "Expulsa la tarjeta SD / disco USB después de que se haya exportado a él." -#: src/slic3r/GUI/Plater.cpp:2202 +#: src/slic3r/GUI/Plater.cpp:2034 #, c-format msgid "Ejecting of device %s(%s) has failed." msgstr "La expulsión del dispositivo %s(%s) ha fallado." -#: src/libslic3r/PrintConfig.cpp:118 +#: src/libslic3r/PrintConfig.cpp:120 msgid "Elephant foot compensation" msgstr "Compensación del pie de elefante" -#: src/libslic3r/PrintConfig.cpp:2447 +#: src/libslic3r/PrintConfig.cpp:2590 msgid "Elephant foot minimum width" msgstr "Ancho mínimo del pie de elefante" -#: src/libslic3r/SLAPrint.cpp:625 +#: src/libslic3r/SLAPrint.cpp:639 msgid "Elevation is too low for object. Use the \"Pad around object\" feature to print the object without elevation." msgstr "Elevación demasiado baja para el objeto. Utiliza la característica \"Pad alrededor del objeto\" para imprimir el objeto sin elevación." -#: src/libslic3r/PrintConfig.cpp:1093 +#: src/libslic3r/PrintConfig.cpp:1186 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. As of now only the Prusa i3 MK3 firmware recognizes M73. Also the i3 MK3 firmware supports M73 Qxx Sxx for the silent mode." msgstr "Emitir M73 P[porcentaje impreso] R[tiempo restante en minutos] en intervalos de 1 minuto en el código G para permitir que el firmware muestre el tiempo restante preciso. A partir de ahora solo el firmware Prusa i3 MK3 reconoce M73. También el firmware i3 MK3 es compatible con M73 Qxx Sxx para el modo silencioso." -#: src/libslic3r/GCode.cpp:637 +#: src/libslic3r/PrintConfig.cpp:1217 +msgid "Emit to G-code" +msgstr "Emitir a código G" + +#: src/libslic3r/GCode.cpp:622 msgid "Empty layers detected, the output would not be printable." msgstr "Capas vacías detectadas, la salida no sería imprimible." -#: src/slic3r/GUI/Tab.cpp:1445 src/libslic3r/PrintConfig.cpp:1355 -#: src/libslic3r/PrintConfig.cpp:2200 +#: src/slic3r/GUI/Tab.cpp:1791 src/libslic3r/PrintConfig.cpp:1463 +#: src/libslic3r/PrintConfig.cpp:2343 msgid "Enable" msgstr "Habilitar" -#: src/libslic3r/PrintConfig.cpp:313 +#: src/libslic3r/PrintConfig.cpp:347 msgid "Enable auto cooling" msgstr "Habilitar el enfriamiento automático" -#: src/libslic3r/PrintConfig.cpp:572 +#: src/libslic3r/PrintConfig.cpp:608 msgid "Enable fan if layer print time is below" msgstr "Habilitar ventilador si el tiempo de impresión de la capa está por debajo" -#: src/libslic3r/PrintConfig.cpp:2908 +#: src/libslic3r/PrintConfig.cpp:3072 msgid "Enable hollowing" msgstr "Habilitar vaciado" -#: src/libslic3r/PrintConfig.cpp:2380 +#: src/libslic3r/PrintConfig.cpp:2523 msgid "Enable horizontal mirroring of output images" msgstr "Activar espejo horizontal de salida de imágenes" -#: src/libslic3r/PrintConfig.cpp:1867 +#: src/libslic3r/PrintConfig.cpp:1124 +msgid "Enable ironing" +msgstr "Activar alisado" + +#: src/libslic3r/PrintConfig.cpp:1125 +msgid "Enable ironing of the top layers with the hot print head for smooth surface" +msgstr "Habilitar el alisado de las capas superiores con el cabezal de impresión caliente para obtener una superficie lisa" + +#: src/libslic3r/PrintConfig.cpp:2009 msgid "Enable support material generation." msgstr "Habilite la generación de material de soporte." -#: src/libslic3r/PrintConfig.cpp:966 +#: src/libslic3r/PrintConfig.cpp:1010 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 plugin. This settings is NOT compatible with Single Extruder Multi Material setup and Wipe into Object / Wipe into Infill." msgstr "Habilita esto para añadir los comentarios al código G, etiquetando movimientos de impresión con el objeto al que pertenecen, lo que es útil para el plugin Octoprint CancelObject. Esta configuración NO es compatible con la configuración de Single Extruder Multi Material y Limpiar en Objeto / Limpiar en Relleno." -#: src/libslic3r/PrintConfig.cpp:929 +#: src/libslic3r/PrintConfig.cpp:973 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 "Habilítelo para obtener un archivo de código G comentado, con cada línea explicada por un texto descriptivo. Si imprime desde una tarjeta SD, el peso adicional del archivo podría ralentizar su firmware." -#: src/libslic3r/PrintConfig.cpp:2186 +#: src/libslic3r/PrintConfig.cpp:2329 msgid "Enable variable layer height feature" msgstr "Habilitar la función de altura de capa variable" -#: src/libslic3r/PrintConfig.cpp:2387 +#: src/libslic3r/PrintConfig.cpp:2530 msgid "Enable vertical mirroring of output images" msgstr "Activar espejo vertical de salida de imágenes" -#: src/slic3r/GUI/Tab.cpp:1534 src/slic3r/GUI/Tab.cpp:1982 -#: src/libslic3r/PrintConfig.cpp:385 src/libslic3r/PrintConfig.cpp:395 +#: src/slic3r/GUI/Tab.cpp:1880 src/slic3r/GUI/Tab.cpp:2168 +#: src/libslic3r/PrintConfig.cpp:419 src/libslic3r/PrintConfig.cpp:429 msgid "End G-code" msgstr "Código G final" -#: src/libslic3r/PrintConfig.cpp:1924 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:239 +msgid "Enforce" +msgstr "Imponer" + +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:30 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:381 +msgid "Enforce seam" +msgstr "Imponer costura" + +#: src/libslic3r/PrintConfig.cpp:2066 msgid "Enforce support for the first" msgstr "Forzar soportes para la primera" -#: src/libslic3r/PrintConfig.cpp:1931 +#: src/libslic3r/PrintConfig.cpp:2073 msgid "Enforce support for the first n layers" msgstr "Aplicar soportes para las primeras n capas" +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:47 +msgid "Enforce supports" +msgstr "Imponer soportes" + #: src/slic3r/GUI/PrintHostDialogs.cpp:198 #: src/slic3r/GUI/PrintHostDialogs.cpp:229 msgid "Enqueued" msgstr "En cola" -#: src/libslic3r/PrintConfig.cpp:407 +#: src/libslic3r/PrintConfig.cpp:441 msgid "Ensure vertical shell thickness" msgstr "Asegurar el espesor de la carcasa vertical" -#: src/slic3r/GUI/DoubleSlider.cpp:1618 +#: src/slic3r/GUI/GLCanvas3D.cpp:4402 src/slic3r/GUI/GLCanvas3D.cpp:4410 +#: src/slic3r/GUI/Search.cpp:433 +msgid "Enter a search term" +msgstr "Teclea un término de búsqueda" + +#: src/slic3r/GUI/DoubleSlider.cpp:1814 msgid "Enter custom G-code used on current layer" msgstr "Ingresa el código G personalizado utilizado en la capa actual" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3803 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4266 msgid "Enter new name" msgstr "Introduce un nuevo nombre" -#: src/slic3r/GUI/DoubleSlider.cpp:1634 +#: src/slic3r/GUI/DoubleSlider.cpp:1830 msgid "Enter short message shown on Printer display when a print is paused" msgstr "Introduce un mensaje corto a mostrar en la pantalla de la impresora cuando la impresión se ponga en pausa" -#: src/slic3r/GUI/ConfigWizard.cpp:1047 +#: src/slic3r/GUI/ConfigWizard.cpp:1413 msgid "Enter the bed temperature needed for getting your filament to stick to your heated bed." msgstr "Introduce la temperatura de la base necesaria para que adhiera el filamento a la base calefactable." -#: src/slic3r/GUI/ConfigWizard.cpp:979 +#: src/slic3r/GUI/ConfigWizard.cpp:1345 msgid "Enter the diameter of your filament." msgstr "Introduce el diámetro de tu filamento." -#: src/slic3r/GUI/ConfigWizard.cpp:966 +#: src/slic3r/GUI/ConfigWizard.cpp:1332 msgid "Enter the diameter of your printer's hot end nozzle." msgstr "Introduce el diámetro de la boquilla del fusor de tu impresora." -#: src/slic3r/GUI/DoubleSlider.cpp:1650 +#: src/slic3r/GUI/DoubleSlider.cpp:1851 src/slic3r/GUI/DoubleSlider.cpp:1855 msgid "Enter the height you want to jump to" msgstr "Introduce la altura a la que deseas saltar" -#: src/slic3r/GUI/Plater.cpp:4751 +#: src/slic3r/GUI/DoubleSlider.cpp:1851 +msgid "Enter the move you want to jump to" +msgstr "Introduce el movimiento al que desea saltar" + +#: src/slic3r/GUI/Plater.cpp:4855 msgid "Enter the number of copies:" msgstr "Introduce el número de copias:" -#: src/slic3r/GUI/ConfigWizard.cpp:1033 +#: src/slic3r/GUI/ConfigWizard.cpp:1399 msgid "Enter the temperature needed for extruding your filament." msgstr "Introduce la temperatura necesaria para extruir tu filamento." -#: src/libslic3r/PrintConfig.cpp:761 +#: src/libslic3r/PrintConfig.cpp:797 msgid "Enter your filament cost per kg here. This is only for statistical information." msgstr "Ingrese su coste del filamento por kg aquí. Esto es solo para información estadística." -#: src/libslic3r/PrintConfig.cpp:718 +#: src/libslic3r/PrintConfig.cpp:754 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 the length to volume. Better is to calculate the volume directly through displacement." msgstr "Ingrese su densidad de filamento aquí. Esto es solo para información estadística. Una forma decente es pesar una longitud conocida de filamento y calcular la relación entre la longitud y el volumen. Lo mejor es calcular el volumen directamente a través del desplazamiento." -#: src/libslic3r/PrintConfig.cpp:710 +#: src/libslic3r/PrintConfig.cpp:746 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 "Ingrese el diámetro de su fila aquí. Se requiere una buena precisión, por lo tanto, use un calibre y realice múltiples mediciones a lo largo del filamento, luego calcule el promedio." -#: src/slic3r/GUI/MainFrame.cpp:422 src/slic3r/GUI/MainFrame.cpp:785 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:39 +msgid "Entering Paint-on supports" +msgstr "Entrando al Pintado de soportes" + +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:40 +msgid "Entering Seam painting" +msgstr "Entrando al Pintado de costuras" + +#: src/slic3r/GUI/MainFrame.cpp:1003 src/slic3r/GUI/MainFrame.cpp:1486 #: src/slic3r/GUI/PrintHostDialogs.cpp:231 msgid "Error" msgstr "Error" @@ -2337,25 +2716,33 @@ msgstr "Error" msgid "Error accessing port at %s: %s" msgstr "Error al acceder al puerto en %s: %s" -#: src/slic3r/GUI/Plater.cpp:3433 +#: src/slic3r/GUI/Plater.cpp:3238 msgid "Error during reload" msgstr "Error al recargar" -#: src/slic3r/GUI/Plater.cpp:5043 +#: src/slic3r/GUI/Plater.cpp:5172 #, c-format msgid "Error exporting 3MF file %s" msgstr "Error al exportar archivo 3MF %s" -#: src/slic3r/GUI/Plater.cpp:5005 +#: src/slic3r/GUI/Plater.cpp:5138 #, c-format msgid "Error exporting AMF file %s" msgstr "Error exportando archivo AMF %s" -#: src/slic3r/GUI/PrintHostDialogs.cpp:154 +#: src/slic3r/GUI/OpenGLManager.cpp:276 +msgid "Error loading shaders" +msgstr "Error al cargar sombras" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:152 msgid "Error Message" msgstr "Mensaje de Error" -#: src/slic3r/GUI/AppConfig.cpp:114 +#: src/slic3r/GUI/GUI_App.cpp:661 +msgid "Error parsing PrusaGCodeViewer config file, it is probably corrupted. Try to manually delete the file to recover from the error." +msgstr "Error al analizar el archivo de configuración de PrusaGCodeViewer, probablemente esté dañado. Intenta eliminar manualmente el archivo para recuperarse del error." + +#: src/slic3r/GUI/GUI_App.cpp:655 src/slic3r/GUI/GUI_App.cpp:670 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 "Error al analizar el archivo de configuración de PrusaSlicer, probablemente está dañado. Intenta eliminar manualmente el archivo para recuperarse del error. Tus perfiles de usuario no se verán afectados." @@ -2363,45 +2750,60 @@ msgstr "Error al analizar el archivo de configuración de PrusaSlicer, probablem msgid "Error uploading to print host:" msgstr "Error al cargar a la impresora:" -#: src/libslic3r/Zipper.cpp:102 +#: src/slic3r/GUI/Plater.cpp:4752 +msgid "Error while loading .gcode file" +msgstr "Error al cargar el archivo .gcode" + +#: src/libslic3r/Zipper.cpp:27 msgid "Error with zip archive" msgstr "Error con el archivo ZIP" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1918 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2077 msgid "Error!" msgstr "¡Error!" -#: src/slic3r/GUI/BedShapeDialog.cpp:505 +#: src/slic3r/GUI/BedShapeDialog.cpp:581 msgid "Error! Invalid model" msgstr "Error! Modelo inválido" +#: src/slic3r/GUI/NotificationManager.cpp:667 +#: src/slic3r/GUI/NotificationManager.cpp:683 +#: src/slic3r/GUI/NotificationManager.cpp:694 +msgid "ERROR:" +msgstr "ERROR:" + #: src/slic3r/GUI/FirmwareDialog.cpp:647 #, c-format msgid "Error: %s" msgstr "Error: %s" -#: src/slic3r/GUI/Job.hpp:123 +#: src/slic3r/GUI/Jobs/Job.cpp:74 msgid "ERROR: not enough resources to execute a new job." msgstr "ERROR: no hay suficientes recursos para ejecutar el trabajo." -#: src/slic3r/GUI/Plater.cpp:240 src/slic3r/GUI/Plater.cpp:1216 -#: src/slic3r/GUI/Plater.cpp:1258 +#: 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 msgid "Estimated printing time" msgstr "Tiempo estimado de impresión" -#: src/slic3r/GUI/Plater.cpp:502 +#: src/slic3r/GUI/GCodeViewer.cpp:2442 src/slic3r/GUI/GCodeViewer.cpp:2445 +msgid "Event" +msgstr "Evento" + +#: src/slic3r/GUI/Plater.cpp:368 msgid "Everywhere" msgstr "En todos los sitios" -#: src/slic3r/GUI/PresetHints.cpp:51 +#: src/slic3r/GUI/PresetHints.cpp:50 msgid "except for the first %1% layers." msgstr "a excepción de las %1% primeras capas." -#: src/slic3r/GUI/PresetHints.cpp:53 +#: src/slic3r/GUI/PresetHints.cpp:52 msgid "except for the first layer." msgstr "a excepción de la primera capa." -#: src/libslic3r/Print.cpp:1377 +#: src/libslic3r/Print.cpp:1403 msgid "Excessive %1%=%2% mm to be printable with a nozzle diameter %3% mm" msgstr "%1%=%2% mm excesivos para ser imprimible con un nozzle de diámetro de %3% mm" @@ -2410,116 +2812,129 @@ msgstr "%1%=%2% mm excesivos para ser imprimible con un nozzle de diámetro de % msgid "Exit %s" msgstr "Salir %s" -#: src/libslic3r/PrintConfig.cpp:371 +#: src/slic3r/GUI/Plater.cpp:2143 +msgid "Expand sidebar" +msgstr "Expandir barra lateral" + +#: src/libslic3r/PrintConfig.cpp:405 msgid "Experimental option for preventing support material from being generated under bridged areas." msgstr "Opción experimental para evitar que se genere material de soporte debajo de las áreas con puente." -#: src/libslic3r/PrintConfig.cpp:1375 +#: src/libslic3r/PrintConfig.cpp:1483 msgid "Experimental option to adjust flow for overhangs (bridge flow will be used), to apply bridge speed to them and enable fan." msgstr "Opción experimental para ajustar el flujo para salientes (se usará el flujo del puente), para aplicar la velocidad del puente a ellos y habilitar el ventilador." -#: src/slic3r/GUI/GUI_App.cpp:815 src/slic3r/GUI/wxExtensions.cpp:755 +#: src/slic3r/GUI/GUI_App.cpp:1507 src/slic3r/GUI/wxExtensions.cpp:676 msgid "Expert" msgstr "Experto" -#: src/slic3r/GUI/ConfigWizard.cpp:822 +#: src/slic3r/GUI/ConfigWizard.cpp:1181 msgid "Expert mode" msgstr "Modo experto" -#: src/slic3r/GUI/GUI_App.cpp:815 +#: src/slic3r/GUI/GUI_App.cpp:1507 msgid "Expert View Mode" msgstr "Modo de visualización experto" -#: src/slic3r/GUI/Plater.cpp:5521 +#: src/slic3r/GUI/Plater.cpp:5706 msgid "Export" msgstr "Exportar" -#: src/slic3r/GUI/MainFrame.cpp:500 +#: src/slic3r/GUI/MainFrame.cpp:1094 msgid "Export &Config" msgstr "Exportar &Configuración" -#: src/slic3r/GUI/MainFrame.cpp:477 src/slic3r/GUI/MainFrame.cpp:749 +#: src/slic3r/GUI/MainFrame.cpp:1068 src/slic3r/GUI/MainFrame.cpp:1448 msgid "Export &G-code" msgstr "Exportar código &G" -#: src/slic3r/GUI/MainFrame.cpp:496 +#: src/slic3r/GUI/MainFrame.cpp:1090 src/slic3r/GUI/MainFrame.cpp:1395 msgid "Export &toolpaths as OBJ" msgstr "Exportar &trayectorias de herramientas como OBJ" -#: src/libslic3r/PrintConfig.cpp:3338 +#: src/libslic3r/PrintConfig.cpp:3531 msgid "Export 3MF" msgstr "Exportar 3MF" -#: src/slic3r/GUI/MainFrame.cpp:503 +#: src/slic3r/GUI/MainFrame.cpp:1100 +msgid "Export all presets including physical printers to file" +msgstr "Exportar todos los ajustes preestablecidos, incluidas las impresoras físicas, al archivo" + +#: src/slic3r/GUI/MainFrame.cpp:1097 msgid "Export all presets to file" msgstr "Exportar todos los preajustes al archivo" -#: src/libslic3r/PrintConfig.cpp:3343 +#: src/libslic3r/PrintConfig.cpp:3536 msgid "Export AMF" msgstr "Exportar AMF" -#: src/slic3r/GUI/Plater.cpp:2598 +#: src/slic3r/GUI/Plater.cpp:2560 msgid "Export AMF file:" msgstr "Exportar archivo AMF:" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1657 src/slic3r/GUI/Plater.cpp:3966 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1786 src/slic3r/GUI/Plater.cpp:3884 msgid "Export as STL" msgstr "Exportar como STL" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:124 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:117 msgid "Export config" msgstr "Exportar configuración" -#: src/slic3r/GUI/MainFrame.cpp:503 +#: src/slic3r/GUI/MainFrame.cpp:1097 msgid "Export Config &Bundle" msgstr "Exportar Conjunto de A&justes" -#: src/slic3r/GUI/MainFrame.cpp:500 +#: src/slic3r/GUI/MainFrame.cpp:1100 +msgid "Export Config Bundle With Physical Printers" +msgstr "Exportar Paquete de Configuración Con Impresoras Físicas" + +#: src/slic3r/GUI/MainFrame.cpp:1094 msgid "Export current configuration to file" msgstr "Exportar la configuración actual al archivo" -#: src/slic3r/GUI/MainFrame.cpp:492 +#: src/slic3r/GUI/MainFrame.cpp:1086 msgid "Export current plate as AMF" msgstr "Exportar plataforma actual como AMF" -#: src/slic3r/GUI/MainFrame.cpp:477 +#: src/slic3r/GUI/MainFrame.cpp:1068 msgid "Export current plate as G-code" msgstr "Exportar plataforma actual como código G" -#: src/slic3r/GUI/MainFrame.cpp:521 +#: src/slic3r/GUI/MainFrame.cpp:1076 msgid "Export current plate as G-code to SD card / Flash drive" msgstr "Exporta a G-code en la tarjeta SD / disco USB" -#: src/slic3r/GUI/MainFrame.cpp:486 +#: src/slic3r/GUI/MainFrame.cpp:1080 msgid "Export current plate as STL" msgstr "Exportar plataforma actual como STL" -#: src/slic3r/GUI/MainFrame.cpp:489 +#: src/slic3r/GUI/MainFrame.cpp:1083 msgid "Export current plate as STL including supports" msgstr "Exportar la plataforma actual como STL incluyendo soportes" -#: src/slic3r/GUI/Plater.cpp:3664 -msgid "Export failed" -msgstr "Error al exportar" - -#: src/slic3r/GUI/ConfigWizard.cpp:801 +#: src/slic3r/GUI/ConfigWizard.cpp:1160 msgid "Export full pathnames of models and parts sources into 3mf and amf files" msgstr "Exportar nombres de ruta completos de las fuentes de los modelos y de piezas a archivos 3mf y amf" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:122 src/slic3r/GUI/Plater.cpp:891 -#: src/slic3r/GUI/Plater.cpp:5521 src/libslic3r/PrintConfig.cpp:3353 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:115 src/slic3r/GUI/Plater.cpp:766 +#: src/slic3r/GUI/Plater.cpp:5706 src/libslic3r/PrintConfig.cpp:3546 msgid "Export G-code" msgstr "Exportar código G" -#: src/slic3r/GUI/MainFrame.cpp:521 +#: src/slic3r/GUI/MainFrame.cpp:1076 msgid "Export G-code to SD card / Flash drive" msgstr "Exporta G-code a la tarjeta SD / disco USB" -#: src/libslic3r/PrintConfig.cpp:3320 +#: src/slic3r/GUI/NotificationManager.cpp:631 +#: src/slic3r/GUI/NotificationManager.cpp:748 +msgid "Export G-Code." +msgstr "Exportar Código G." + +#: src/libslic3r/PrintConfig.cpp:3513 msgid "Export OBJ" msgstr "Exportar OBJ" -#: src/slic3r/GUI/Plater.cpp:2610 +#: src/slic3r/GUI/Plater.cpp:2572 msgid "Export OBJ file:" msgstr "Exportar archivo OBJ:" @@ -2527,212 +2942,215 @@ msgstr "Exportar archivo OBJ:" msgid "Export of a temporary 3mf file failed" msgstr "La exportación de un archivo temporal de 3mf falló" -#: src/slic3r/GUI/MainFrame.cpp:492 +#: src/slic3r/GUI/MainFrame.cpp:1086 msgid "Export plate as &AMF" msgstr "Exportar plataforma como &AMF" -#: src/slic3r/GUI/MainFrame.cpp:486 +#: src/slic3r/GUI/MainFrame.cpp:1080 msgid "Export plate as &STL" msgstr "Exportar plataforma como &STL" -#: src/slic3r/GUI/MainFrame.cpp:489 +#: src/slic3r/GUI/MainFrame.cpp:1083 msgid "Export plate as STL &including supports" msgstr "Exportar plataforma como STL &incluyendo soportes" -#: src/libslic3r/PrintConfig.cpp:3332 +#: src/libslic3r/PrintConfig.cpp:3525 msgid "Export SLA" msgstr "Exportar SLA" -#: src/slic3r/GUI/Preferences.cpp:72 +#: src/slic3r/GUI/Preferences.cpp:89 msgid "Export sources full pathnames to 3mf and amf" msgstr "Exportar nombres de ruta completos de las fuentes a 3mf y amf" -#: src/libslic3r/PrintConfig.cpp:3348 +#: src/libslic3r/PrintConfig.cpp:3541 msgid "Export STL" msgstr "Exportar STL" -#: src/slic3r/GUI/Plater.cpp:2591 +#: src/slic3r/GUI/Plater.cpp:2553 msgid "Export STL file:" msgstr "Exportar archivo STL:" -#: src/libslic3r/PrintConfig.cpp:3339 +#: src/libslic3r/PrintConfig.cpp:3532 msgid "Export the model(s) as 3MF." msgstr "Exportar el(los) objeto(s) como 3MF." -#: src/libslic3r/PrintConfig.cpp:3344 +#: src/libslic3r/PrintConfig.cpp:3537 msgid "Export the model(s) as AMF." msgstr "Exportar el(los) objeto(s) como AMF." -#: src/libslic3r/PrintConfig.cpp:3321 +#: src/libslic3r/PrintConfig.cpp:3514 msgid "Export the model(s) as OBJ." msgstr "Exportar el(los) objeto(s) como OBJ." -#: src/libslic3r/PrintConfig.cpp:3349 +#: src/libslic3r/PrintConfig.cpp:3542 msgid "Export the model(s) as STL." msgstr "Exportar el(los) objeto(s) como STL." -#: src/slic3r/GUI/Plater.cpp:3966 +#: src/slic3r/GUI/Plater.cpp:3884 msgid "Export the selected object as STL file" msgstr "Exportar el objeto seleccionado como archivo STL" -#: src/slic3r/GUI/Plater.cpp:880 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:118 src/slic3r/GUI/Plater.cpp:755 msgid "Export to SD card / Flash drive" msgstr "Exportar a tarjeta SD / tarjeta Flash" -#: src/slic3r/GUI/MainFrame.cpp:496 +#: src/slic3r/GUI/MainFrame.cpp:1090 src/slic3r/GUI/MainFrame.cpp:1395 msgid "Export toolpaths as OBJ" msgstr "Exportar trayectorias de herramientas como OBJ" -#: src/libslic3r/Print.cpp:1638 +#: src/slic3r/GUI/NotificationManager.hpp:317 +msgid "Exporting finished." +msgstr "Exportación finalizada." + +#: src/libslic3r/Print.cpp:1676 msgid "Exporting G-code" msgstr "Exportando código G" #: src/slic3r/Utils/FixModelByWin10.cpp:341 -msgid "Exporting model..." -msgstr "Exportando el modelo..." +msgid "Exporting model" +msgstr "Exportando modelo" #: src/slic3r/Utils/FixModelByWin10.cpp:219 #: src/slic3r/Utils/FixModelByWin10.cpp:359 msgid "Exporting source model" msgstr "Exportando el modelo original" -#: src/libslic3r/SLAPrint.cpp:646 +#: src/libslic3r/SLAPrint.cpp:660 msgid "Exposition time is out of printer profile bounds." msgstr "Tiempo de exposición inicial fuera de los límites del perfil de impresión." -#: src/slic3r/GUI/Tab.cpp:2117 src/slic3r/GUI/Tab.cpp:3515 +#: src/slic3r/GUI/Tab.cpp:2287 src/slic3r/GUI/Tab.cpp:3931 msgid "Exposure" msgstr "Exposición" -#: src/libslic3r/PrintConfig.cpp:2541 src/libslic3r/PrintConfig.cpp:2542 +#: src/libslic3r/PrintConfig.cpp:2684 src/libslic3r/PrintConfig.cpp:2685 msgid "Exposure time" msgstr "Tiempo de exposición" -#: src/slic3r/GUI/GUI_Preview.cpp:238 src/libslic3r/ExtrusionEntity.cpp:311 +#: src/slic3r/GUI/GUI_Preview.cpp:302 src/libslic3r/ExtrusionEntity.cpp:315 +#: src/libslic3r/ExtrusionEntity.cpp:338 msgid "External perimeter" msgstr "Perímetro externo" -#: src/slic3r/GUI/PresetHints.cpp:156 +#: src/slic3r/GUI/PresetHints.cpp:155 msgid "external perimeters" msgstr "perímetros externos" -#: src/libslic3r/PrintConfig.cpp:446 src/libslic3r/PrintConfig.cpp:457 +#: src/libslic3r/PrintConfig.cpp:482 src/libslic3r/PrintConfig.cpp:493 msgid "External perimeters" msgstr "Perímetros externos" -#: src/libslic3r/PrintConfig.cpp:469 +#: src/libslic3r/PrintConfig.cpp:505 msgid "External perimeters first" msgstr "Perímetros externos primero" -#: src/libslic3r/PrintConfig.cpp:1588 src/libslic3r/PrintConfig.cpp:1596 +#: src/libslic3r/PrintConfig.cpp:1696 src/libslic3r/PrintConfig.cpp:1704 msgid "Extra length on restart" msgstr "Longitud adicional en el reinicio" -#: src/libslic3r/PrintConfig.cpp:1390 +#: src/libslic3r/PrintConfig.cpp:1498 msgid "Extra loading distance" msgstr "Distancia de carga adicional" -#: src/libslic3r/PrintConfig.cpp:477 +#: src/libslic3r/PrintConfig.cpp:513 msgid "Extra perimeters if needed" msgstr "Perímetros adicionales si es necesario" -#: src/slic3r/GUI/GUI_ObjectList.cpp:278 src/slic3r/GUI/Tab.cpp:1434 -#: src/slic3r/GUI/wxExtensions.cpp:598 src/libslic3r/PrintConfig.cpp:487 +#: src/slic3r/GUI/GCodeViewer.cpp:2277 src/slic3r/GUI/GCodeViewer.cpp:2313 +#: src/slic3r/GUI/GCodeViewer.cpp:2318 src/slic3r/GUI/GUI_ObjectList.cpp:296 +#: src/slic3r/GUI/Tab.cpp:1780 src/slic3r/GUI/wxExtensions.cpp:515 +#: src/libslic3r/PrintConfig.cpp:523 msgid "Extruder" msgstr "Extrusor" -#: src/slic3r/GUI/DoubleSlider.cpp:1134 src/slic3r/GUI/DoubleSlider.cpp:1170 -#: src/slic3r/GUI/GLCanvas3D.cpp:977 src/slic3r/GUI/GUI_ObjectList.cpp:1704 -#: src/slic3r/GUI/Tab.cpp:2320 src/libslic3r/GCode/PreviewData.cpp:445 +#: src/slic3r/GUI/DoubleSlider.cpp:1263 src/slic3r/GUI/DoubleSlider.cpp:1297 +#: src/slic3r/GUI/GLCanvas3D.cpp:983 src/slic3r/GUI/GUI_ObjectList.cpp:1832 +#: src/slic3r/GUI/Tab.cpp:2489 src/libslic3r/GCode/PreviewData.cpp:450 #, c-format msgid "Extruder %d" msgstr "Extrusor %d" -#: src/slic3r/GUI/DoubleSlider.cpp:1011 +#: src/slic3r/GUI/DoubleSlider.cpp:1137 msgid "Extruder (tool) is changed to Extruder \"%1%\"" msgstr "El Extrusor (herramienta) se cambia al Extrusor \"%1%\"" -#: src/slic3r/GUI/ConfigWizard.cpp:1017 -msgid "Extruder and Bed Temperatures" -msgstr "Temperaturas del Extrusor y de la Base" - #: src/slic3r/GUI/WipeTowerDialog.cpp:255 msgid "Extruder changed to" msgstr "El extrusor cambia a" -#: src/slic3r/GUI/Tab.cpp:1233 +#: src/slic3r/GUI/Tab.cpp:1563 msgid "Extruder clearance (mm)" msgstr "Distancia libre del extrusor (mm)" -#: src/libslic3r/PrintConfig.cpp:522 +#: src/libslic3r/PrintConfig.cpp:558 msgid "Extruder Color" msgstr "Color del extrusor" -#: src/libslic3r/PrintConfig.cpp:529 +#: src/libslic3r/PrintConfig.cpp:565 msgid "Extruder offset" msgstr "Offset del extrusor" -#: src/libslic3r/PrintConfig.cpp:911 -msgid "Extruder temperature for first layer. If you want to control temperature manually during print, set this to zero to disable temperature control commands in the output file." -msgstr "Temperatura del extrusor para la primera capa. Si desea controlar la temperatura manualmente durante la impresión, configúrela en cero para desactivar los comandos de control de temperatura en el archivo de salida." - -#: src/libslic3r/PrintConfig.cpp:2065 -msgid "Extruder temperature for layers after the first one. Set this to zero to disable temperature control commands in the output." -msgstr "Temperatura del extrusor para capas después del primera. Ajuste esto a cero para desactivar los comandos de control de temperatura en la salida." - -#: src/slic3r/GUI/GUI_ObjectList.cpp:99 src/slic3r/GUI/GUI_ObjectList.cpp:617 -#: src/slic3r/GUI/Tab.cpp:1180 src/slic3r/GUI/Tab.cpp:1838 -#: src/libslic3r/PrintConfig.cpp:488 src/libslic3r/PrintConfig.cpp:1002 -#: src/libslic3r/PrintConfig.cpp:1409 src/libslic3r/PrintConfig.cpp:1737 -#: src/libslic3r/PrintConfig.cpp:1938 src/libslic3r/PrintConfig.cpp:1965 +#: src/slic3r/GUI/GUI_ObjectList.cpp:97 src/slic3r/GUI/GUI_ObjectList.cpp:656 +#: src/slic3r/GUI/Tab.cpp:1510 src/slic3r/GUI/Tab.cpp:2072 +#: src/libslic3r/PrintConfig.cpp:524 src/libslic3r/PrintConfig.cpp:1046 +#: src/libslic3r/PrintConfig.cpp:1517 src/libslic3r/PrintConfig.cpp:1852 +#: src/libslic3r/PrintConfig.cpp:2080 src/libslic3r/PrintConfig.cpp:2107 msgid "Extruders" msgstr "Extrusores" -#: src/libslic3r/PrintConfig.cpp:539 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1061 +msgid "Extruders count" +msgstr "Contador de extrusores" + +#: src/slic3r/GUI/GCodeViewer.cpp:2493 +msgid "Extrusion" +msgstr "Extrusión" + +#: src/libslic3r/PrintConfig.cpp:575 msgid "Extrusion axis" msgstr "Eje de extrusión" -#: src/libslic3r/PrintConfig.cpp:545 +#: src/libslic3r/PrintConfig.cpp:581 msgid "Extrusion multiplier" msgstr "Multiplicador de extrusión" -#: src/slic3r/GUI/ConfigWizard.cpp:1037 +#: src/slic3r/GUI/ConfigWizard.cpp:1403 msgid "Extrusion Temperature:" msgstr "Temperatura de Extrusión:" -#: src/slic3r/GUI/Tab.cpp:1205 +#: src/slic3r/GUI/Tab.cpp:1535 msgid "Extrusion width" msgstr "Ancho de extrusión" -#: src/slic3r/GUI/GUI_ObjectList.cpp:100 src/slic3r/GUI/GUI_ObjectList.cpp:618 -#: src/libslic3r/PrintConfig.cpp:447 src/libslic3r/PrintConfig.cpp:555 -#: src/libslic3r/PrintConfig.cpp:877 src/libslic3r/PrintConfig.cpp:1010 -#: src/libslic3r/PrintConfig.cpp:1418 src/libslic3r/PrintConfig.cpp:1757 -#: src/libslic3r/PrintConfig.cpp:1947 src/libslic3r/PrintConfig.cpp:2106 +#: src/slic3r/GUI/GUI_ObjectList.cpp:98 src/slic3r/GUI/GUI_ObjectList.cpp:657 +#: src/libslic3r/PrintConfig.cpp:483 src/libslic3r/PrintConfig.cpp:591 +#: src/libslic3r/PrintConfig.cpp:919 src/libslic3r/PrintConfig.cpp:1054 +#: src/libslic3r/PrintConfig.cpp:1526 src/libslic3r/PrintConfig.cpp:1872 +#: src/libslic3r/PrintConfig.cpp:2089 src/libslic3r/PrintConfig.cpp:2249 msgid "Extrusion Width" msgstr "Ancho de Extrusión" -#: src/slic3r/GUI/Plater.cpp:162 +#: src/slic3r/GUI/Plater.cpp:168 msgid "Facets" msgstr "Facetas" -#: src/slic3r/GUI/GUI_ObjectList.cpp:349 +#: src/slic3r/GUI/GUI_ObjectList.cpp:396 msgid "facets added" msgstr "facetas añadidas" -#: src/slic3r/GUI/GUI_ObjectList.cpp:348 +#: src/slic3r/GUI/GUI_ObjectList.cpp:395 msgid "facets removed" msgstr "facetas retiradas" -#: src/slic3r/GUI/GUI_ObjectList.cpp:350 +#: src/slic3r/GUI/GUI_ObjectList.cpp:397 msgid "facets reversed" msgstr "facetas invertidas" -#: src/libslic3r/PrintConfig.cpp:2517 +#: src/libslic3r/PrintConfig.cpp:2660 msgid "Faded layers" msgstr "Capas descoloridas" -#: src/libslic3r/Zipper.cpp:44 +#: src/libslic3r/miniz_extension.cpp:103 msgid "failed finding central directory" msgstr "búsqueda de directorio central fallida" @@ -2740,105 +3158,115 @@ msgstr "búsqueda de directorio central fallida" msgid "Failed loading the input model." msgstr "No se pudo cargar el modelo de entrada." -#: src/libslic3r/PrintBase.cpp:71 +#: src/libslic3r/PrintBase.cpp:72 msgid "Failed processing of the output_filename_format template." msgstr "Error al procesar la plantilla output_filename_format." -#: src/slic3r/GUI/PresetHints.cpp:42 +#: src/slic3r/GUI/PresetHints.cpp:41 msgid "Fan" msgstr "Ventilador" -#: src/slic3r/GUI/Tab.cpp:1456 +#: src/slic3r/GUI/Tab.cpp:1802 msgid "Fan settings" msgstr "Configuración del ventilador" -#: src/slic3r/GUI/GUI_Preview.cpp:225 src/slic3r/GUI/Tab.cpp:1457 +#: src/slic3r/GUI/GUI_Preview.cpp:279 src/slic3r/GUI/Tab.cpp:1803 msgid "Fan speed" msgstr "Velocidad del ventilador" -#: src/libslic3r/GCode/PreviewData.cpp:353 +#: src/slic3r/GUI/GCodeViewer.cpp:2239 src/libslic3r/GCode/PreviewData.cpp:358 msgid "Fan Speed (%)" msgstr "Velocidad Ventilador (%)" -#: src/libslic3r/PrintConfig.cpp:2405 +#: src/libslic3r/PrintConfig.cpp:2548 msgid "Fast" msgstr "Rápida" -#: src/libslic3r/PrintConfig.cpp:2406 +#: src/libslic3r/PrintConfig.cpp:2549 msgid "Fast tilt" msgstr "Inclinación rápida" -#: src/slic3r/GUI/GUI_App.cpp:141 +#: src/slic3r/GUI/GUI_App.cpp:531 msgid "Fatal error" msgstr "Error fatal" -#: src/slic3r/GUI/GUI_Preview.cpp:221 src/slic3r/GUI/GUI_Preview.cpp:575 -#: src/libslic3r/GCode/PreviewData.cpp:345 +#: src/slic3r/GUI/GUI_Init.cpp:88 +msgid "Fatal error, exception catched: %1%" +msgstr "Error fatal, excepción detectada: %1%" + +#: src/slic3r/GUI/GCodeViewer.cpp:2225 src/slic3r/GUI/GCodeViewer.cpp:2233 +#: src/slic3r/GUI/GUI_Preview.cpp:275 src/slic3r/GUI/GUI_Preview.cpp:787 +#: src/libslic3r/GCode/PreviewData.cpp:350 msgid "Feature type" msgstr "Tipo de función" -#: src/slic3r/GUI/GUI_Preview.cpp:234 src/slic3r/GUI/GUI_Preview.cpp:235 +#: src/slic3r/GUI/GUI_Preview.cpp:293 src/slic3r/GUI/GUI_Preview.cpp:295 +#: src/slic3r/GUI/GUI_Preview.cpp:316 msgid "Feature types" msgstr "Tipos de funciones" -#: src/slic3r/GUI/ConfigWizard.cpp:1525 +#: src/slic3r/GUI/ConfigWizard.cpp:1926 msgid "FFF Technology Printers" msgstr "Impresoras de Tecnología FFF" -#: src/slic3r/GUI/Plater.cpp:816 src/slic3r/GUI/Tab.cpp:1425 -#: src/slic3r/GUI/Tab.cpp:1426 +#: src/slic3r/GUI/Plater.cpp:691 src/slic3r/GUI/Tab.cpp:1770 +#: src/slic3r/GUI/Tab.cpp:1771 msgid "Filament" msgstr "Filamento" -#: src/slic3r/GUI/Preset.cpp:1522 +#: src/libslic3r/Preset.cpp:1301 msgid "filament" msgstr "filamento" -#: src/slic3r/GUI/ConfigWizard.cpp:952 +#: src/slic3r/GUI/ConfigWizard.cpp:1318 msgid "Filament and Nozzle Diameters" msgstr "Filamento y diámetros de boquilla" -#: src/slic3r/GUI/ConfigWizard.cpp:983 +#: src/slic3r/GUI/ConfigWizard.cpp:1349 msgid "Filament Diameter:" msgstr "Diámetro del filamento:" -#: src/libslic3r/PrintConfig.cpp:651 +#: src/libslic3r/PrintConfig.cpp:687 msgid "Filament is cooled by being moved back and forth in the cooling tubes. Specify desired number of these moves." msgstr "El filamento se enfría al ser movido hacia adelante y hacia atrás en los tubos de enfriamiento. Especifica el número deseado de estos movimientos." -#: src/libslic3r/PrintConfig.cpp:686 +#: src/libslic3r/PrintConfig.cpp:722 msgid "Filament load time" msgstr "Tiempo de carga de filamento" -#: src/libslic3r/PrintConfig.cpp:588 +#: src/libslic3r/PrintConfig.cpp:624 msgid "Filament notes" msgstr "Notas del filamento" -#: src/slic3r/GUI/Tab.cpp:1323 src/slic3r/GUI/Tab.cpp:1378 +#: src/slic3r/GUI/Tab.cpp:1669 msgid "Filament Overrides" msgstr "Anulaciones de filamentos" -#: src/libslic3r/PrintConfig.cpp:1381 +#: src/libslic3r/PrintConfig.cpp:1489 msgid "Filament parking position" msgstr "Posición de aparcar el filamento" -#: src/slic3r/GUI/ConfigWizard.cpp:2013 +#: src/slic3r/GUI/ConfigWizard.cpp:2524 msgid "Filament Profiles Selection" msgstr "Selección Perfiles de Filamento" -#: src/slic3r/GUI/Tab.cpp:1471 +#: src/slic3r/GUI/Tab.cpp:1817 msgid "Filament properties" msgstr "Propiedades del filamento" -#: src/slic3r/GUI/Tab.hpp:355 +#: src/slic3r/GUI/Tab.hpp:409 msgid "Filament Settings" msgstr "Configuración del filamento" -#: src/libslic3r/PrintConfig.cpp:726 +#: src/slic3r/GUI/GLCanvas3D.cpp:4304 src/slic3r/GUI/GLCanvas3D.cpp:4940 +msgid "Filament Settings Tab" +msgstr "Pestaña Ajustes Filamento" + +#: src/libslic3r/PrintConfig.cpp:762 msgid "Filament type" msgstr "Tipo de filamento" -#: src/libslic3r/PrintConfig.cpp:701 +#: src/libslic3r/PrintConfig.cpp:737 msgid "Filament unload time" msgstr "Tiempo de descarga del filamento" @@ -2846,75 +3274,79 @@ msgstr "Tiempo de descarga del filamento" msgid "filaments" msgstr "filamentos" -#: src/slic3r/GUI/ConfigWizard.cpp:1471 src/slic3r/GUI/ConfigWizard.cpp:2013 +#: src/slic3r/GUI/ConfigWizard.cpp:1872 src/slic3r/GUI/ConfigWizard.cpp:2524 msgid "Filaments" msgstr "Filamentos" -#: src/libslic3r/Zipper.cpp:72 +#: src/slic3r/GUI/ConfigWizard.cpp:691 +msgid "Filaments marked with * are not compatible with some installed printers." +msgstr "Los filamentos marcados con * y no son compatibles con algunas impresoras instaladas." + +#: src/libslic3r/miniz_extension.cpp:131 msgid "file close failed" msgstr "cierre del archivo fallido" -#: src/libslic3r/Zipper.cpp:66 +#: src/libslic3r/miniz_extension.cpp:125 msgid "file create failed" msgstr "creación del archivo fallida" -#: src/slic3r/GUI/MainFrame.cpp:791 +#: src/slic3r/GUI/MainFrame.cpp:1492 msgid "File Not Found" msgstr "Archivo no encontrado" -#: src/libslic3r/Zipper.cpp:86 +#: src/libslic3r/miniz_extension.cpp:145 msgid "file not found" msgstr "archivo no encontrado" -#: src/libslic3r/Zipper.cpp:64 +#: src/libslic3r/miniz_extension.cpp:123 msgid "file open failed" msgstr "apertura de archivo fallida" -#: src/libslic3r/Zipper.cpp:70 +#: src/libslic3r/miniz_extension.cpp:129 msgid "file read failed" msgstr "lectura del archivo fallida" -#: src/libslic3r/Zipper.cpp:74 +#: src/libslic3r/miniz_extension.cpp:133 msgid "file seek failed" msgstr "búsqueda de archivo fallida" -#: src/libslic3r/Zipper.cpp:76 +#: src/libslic3r/miniz_extension.cpp:135 msgid "file stat failed" msgstr "estadística de archivos fallida" -#: src/libslic3r/Zipper.cpp:36 +#: src/libslic3r/miniz_extension.cpp:95 msgid "file too large" msgstr "archivo demasiado grande" -#: src/libslic3r/Zipper.cpp:68 +#: src/libslic3r/miniz_extension.cpp:127 msgid "file write failed" msgstr "escritura del archivo fallida" -#: src/slic3r/GUI/PrintHostDialogs.cpp:153 +#: src/slic3r/GUI/PrintHostDialogs.cpp:151 msgid "Filename" msgstr "Nombre de archivo" -#: src/libslic3r/PrintConfig.cpp:775 +#: src/libslic3r/PrintConfig.cpp:811 msgid "Fill angle" msgstr "Ángulo de relleno" -#: src/libslic3r/PrintConfig.cpp:789 +#: src/libslic3r/PrintConfig.cpp:825 msgid "Fill density" msgstr "Densidad de relleno" -#: src/libslic3r/PrintConfig.cpp:826 +#: src/libslic3r/PrintConfig.cpp:862 msgid "Fill pattern" msgstr "Patrón de relleno" -#: src/libslic3r/PrintConfig.cpp:437 +#: src/libslic3r/PrintConfig.cpp:473 msgid "Fill pattern for bottom infill. This only affects the bottom external visible layer, and not its adjacent solid shells." msgstr "Patrón de relleno para la tapa inferior. Esto sólo afecta a la capa inferior externa visible, y no a las paredes adyacentes." -#: src/libslic3r/PrintConfig.cpp:828 +#: src/libslic3r/PrintConfig.cpp:864 msgid "Fill pattern for general low-density infill." msgstr "Patrón de relleno para el relleno general de baja densidad." -#: src/libslic3r/PrintConfig.cpp:417 +#: src/libslic3r/PrintConfig.cpp:451 msgid "Fill pattern for top infill. This only affects the top visible layer, and not its adjacent solid shells." msgstr "Patrón de relleno para el relleno superior. Esto solo afecta a la capa superior visible, y no a sus capas sólidas adyacentes." @@ -2922,7 +3354,7 @@ msgstr "Patrón de relleno para el relleno superior. Esto solo afecta a la capa msgid "Finished" msgstr "Terminado" -#: src/slic3r/GUI/ConfigWizard.cpp:891 src/slic3r/GUI/Tab.cpp:1947 +#: src/slic3r/GUI/ConfigWizard.cpp:1257 src/slic3r/GUI/Tab.cpp:2132 msgid "Firmware" msgstr "Firmware" @@ -2934,44 +3366,52 @@ msgstr "Flasheador de firmware" msgid "Firmware image:" msgstr "Imagen del firmware:" -#: src/slic3r/GUI/Tab.cpp:2577 +#: src/slic3r/GUI/Tab.cpp:2733 msgid "Firmware Retraction" msgstr "Retracción del firmware" -#: src/slic3r/GUI/ConfigWizard.cpp:891 +#: src/slic3r/GUI/ConfigWizard.cpp:1257 msgid "Firmware Type" msgstr "Tipo de Firmware" -#: src/libslic3r/PrintConfig.cpp:859 src/libslic3r/PrintConfig.cpp:868 -#: src/libslic3r/PrintConfig.cpp:876 src/libslic3r/PrintConfig.cpp:910 +#: src/libslic3r/PrintConfig.cpp:899 src/libslic3r/PrintConfig.cpp:908 +#: src/libslic3r/PrintConfig.cpp:918 src/libslic3r/PrintConfig.cpp:952 msgid "First layer" msgstr "Primera capa" -#: src/slic3r/GUI/ConfigManipulation.cpp:61 src/libslic3r/PrintConfig.cpp:889 +#: src/libslic3r/PrintConfig.cpp:909 +msgid "First layer bed temperature" +msgstr "Temperatura de la base calefable para la primera capa" + +#: src/slic3r/GUI/ConfigManipulation.cpp:60 src/libslic3r/PrintConfig.cpp:931 msgid "First layer height" msgstr "Altura de la primera capa" -#: src/libslic3r/Print.cpp:1422 +#: src/libslic3r/Print.cpp:1448 msgid "First layer height can't be greater than nozzle diameter" msgstr "La altura de primera capa no puede ser mayor que el diametro de la boquilla" -#: src/libslic3r/PrintConfig.cpp:900 +#: src/libslic3r/PrintConfig.cpp:960 +msgid "First layer nozzle temperature" +msgstr "Temperatura de la boquilla para la primera capa" + +#: src/libslic3r/PrintConfig.cpp:942 msgid "First layer speed" msgstr "Velocidad de la primera capa" -#: src/slic3r/GUI/PresetHints.cpp:219 +#: src/slic3r/GUI/PresetHints.cpp:218 msgid "First layer volumetric" msgstr "Primera capa volumétrica" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1647 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1776 msgid "Fix through the Netfabb" msgstr "Reparar mediante Netfabb" -#: src/slic3r/GUI/Plater.cpp:3473 +#: src/slic3r/GUI/Plater.cpp:3278 msgid "Fix Throught NetFabb" msgstr "Reparar mediante NetFabb" -#: src/slic3r/GUI/GUI_App.cpp:824 +#: src/slic3r/GUI/GUI_App.cpp:1522 msgid "Flash printer &firmware" msgstr "Grabar &firmware en la impresora" @@ -2999,24 +3439,32 @@ msgstr "Flasheo en curso. ¡Por favor no desconecte la impresora!" msgid "Flashing succeeded!" msgstr "¡Exito al flashear!" -#: src/slic3r/GUI/Tab.cpp:1218 +#: src/slic3r/GUI/Tab.cpp:1548 msgid "Flow" msgstr "Flujo" -#: src/slic3r/GUI/PresetHints.cpp:220 +#: src/libslic3r/PrintConfig.cpp:1145 +msgid "Flow rate" +msgstr "Tasa de flujo" + +#: src/slic3r/GUI/PresetHints.cpp:219 msgid "flow rate is maximized" msgstr "se maximiza el flujo de material" -#: src/slic3r/GUI/UpdateDialogs.cpp:286 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:555 +msgid "Following printer preset(s) is duplicated:%1%The above preset for printer \"%2%\" will be used just once." +msgstr "Los siguientes ajustes preestablecidos de la impresora están duplicados:%1%El preajuste anterior para impresora \"%2%\" se utilizará solo una vez." + +#: src/slic3r/GUI/UpdateDialogs.cpp:287 msgid "For more information please visit our wiki page:" msgstr "Para más información visite por favor la página de nuestra wiki:" -#: src/slic3r/GUI/Plater.cpp:501 src/slic3r/GUI/Plater.cpp:624 +#: src/slic3r/GUI/Plater.cpp:367 src/slic3r/GUI/Plater.cpp:490 msgid "For support enforcers only" msgstr "Sólo para modificadores de soportes" #. TRN Description for "WHITE BULLET" -#: src/slic3r/GUI/Tab.cpp:3267 +#: src/slic3r/GUI/Tab.cpp:3702 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." @@ -3024,7 +3472,7 @@ msgstr "" "para el botón izquierdo: indica un preajuste que no es del sistema (o no predeterminado),\n" "para el botón derecho: indica que la configuración no se ha modificado." -#: src/slic3r/GUI/ConfigManipulation.cpp:136 +#: src/slic3r/GUI/ConfigManipulation.cpp:135 msgid "" "For the Wipe Tower to work with the soluble supports, the support layers\n" "need to be synchronized with the object layers." @@ -3032,19 +3480,19 @@ msgstr "" "Para que la Torre de Limpieza funcione con los soportes solubles, las capas de soporte\n" "deben sincronizarse con las capas de objetos." -#: src/libslic3r/Print.cpp:1396 +#: src/libslic3r/Print.cpp:1422 msgid "For the Wipe Tower to work with the soluble supports, the support layers need to be synchronized with the object layers." msgstr "Para que la Torre de limpieza funcione con soportes solubles, las capas de soportes necesitan estar sincronizadas con las capas del objeto." -#: src/libslic3r/PrintConfig.cpp:2864 +#: src/libslic3r/PrintConfig.cpp:3028 msgid "Force pad around object everywhere" msgstr "Forzar el pad alrededor del objeto en todas partes" -#: src/libslic3r/PrintConfig.cpp:1729 +#: src/libslic3r/PrintConfig.cpp:1844 msgid "Force solid infill for regions having a smaller area than the specified threshold." msgstr "Forzar el relleno sólido para las regiones que tienen un área más pequeña que el umbral especificado." -#: src/libslic3r/PrintConfig.cpp:1072 +#: src/libslic3r/PrintConfig.cpp:1116 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 "Forzar la generación de carcasas sólidas entre materiales / volúmenes adyacentes. Útil para impresiones de múltiples extrusoras con materiales translúcidos o material de soporte soluble manual." @@ -3052,27 +3500,31 @@ msgstr "Forzar la generación de carcasas sólidas entre materiales / volúmenes msgid "From" msgstr "Desde" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2223 +#: src/slic3r/GUI/GCodeViewer.cpp:2197 +msgid "from" +msgstr "desde" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2389 msgid "From Object List You can't delete the last solid part from object." msgstr "Desde la Lista de Objetos no puedes eliminar la última parte sólida del objeto." -#: src/slic3r/GUI/MainFrame.cpp:667 +#: src/slic3r/GUI/MainFrame.cpp:964 src/slic3r/GUI/MainFrame.cpp:1284 msgid "Front" msgstr "Frontal" -#: src/slic3r/GUI/MainFrame.cpp:667 +#: src/slic3r/GUI/MainFrame.cpp:964 src/slic3r/GUI/MainFrame.cpp:1284 msgid "Front View" msgstr "Vista frontal" -#: src/slic3r/GUI/Tab.cpp:1013 +#: src/slic3r/GUI/Tab.cpp:1331 msgid "full profile name" msgstr "nombre completo perfil" -#: src/slic3r/GUI/MainFrame.cpp:826 +#: src/slic3r/GUI/MainFrame.cpp:1527 msgid "G-code" msgstr "Código G" -#: src/slic3r/GUI/DoubleSlider.cpp:1021 +#: src/slic3r/GUI/DoubleSlider.cpp:1146 msgid "" "G-code associated to this tick mark is in a conflict with print mode.\n" "Editing it will cause changes of Slider data." @@ -3080,220 +3532,273 @@ msgstr "" "El código G asociado a esta marca de verificación está en conflicto con el modo de impresión.\n" "Su edición provocará cambios en los datos del Slider." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:130 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:165 msgid "G-code file exported to %1%" msgstr "Archivo de código G exportado a %1%" -#: src/libslic3r/PrintConfig.cpp:936 +#: src/libslic3r/PrintConfig.cpp:980 msgid "G-code flavor" msgstr "Tipo de código G" -#: src/libslic3r/PrintConfig.cpp:721 +#: src/slic3r/GUI/MainFrame.cpp:66 src/slic3r/GUI/MainFrame.cpp:79 +msgid "G-code preview" +msgstr "Previsualización código G" + +#: src/libslic3r/PrintConfig.cpp:3552 +msgid "G-code viewer" +msgstr "Visor código G" + +#: src/libslic3r/PrintConfig.cpp:757 msgid "g/cm³" msgstr "g/cm³" -#: src/libslic3r/PrintConfig.cpp:2505 +#: src/libslic3r/PrintConfig.cpp:2648 msgid "g/ml" msgstr "g/ml" -#: src/slic3r/GUI/GUI_Preview.cpp:244 src/libslic3r/ExtrusionEntity.cpp:317 -#: src/libslic3r/PrintConfig.cpp:918 +#: src/slic3r/GUI/GUI_Preview.cpp:309 src/libslic3r/ExtrusionEntity.cpp:322 +#: src/libslic3r/ExtrusionEntity.cpp:352 src/libslic3r/PrintConfig.cpp:962 msgid "Gap fill" msgstr "Relleno" -#: src/slic3r/GUI/Preferences.cpp:22 src/slic3r/GUI/Tab.cpp:1796 -#: src/slic3r/GUI/Tab.cpp:2040 +#: src/slic3r/GUI/Preferences.cpp:24 src/slic3r/GUI/Tab.cpp:2058 +#: src/slic3r/GUI/Tab.cpp:2240 src/slic3r/GUI/Tab.cpp:2348 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1066 msgid "General" msgstr "General" -#: src/libslic3r/PrintConfig.cpp:1307 +#: 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 "Generar no menos que el número de bucles de falda requeridos para consumir la cantidad especificada de filamento en la capa inferior. Para máquinas multi-extrusoras, este mínimo se aplica a cada extrusora." -#: src/libslic3r/PrintConfig.cpp:1865 +#: src/libslic3r/PrintConfig.cpp:2007 msgid "Generate support material" msgstr "Generar material de soporte" -#: src/libslic3r/PrintConfig.cpp:1926 +#: src/libslic3r/PrintConfig.cpp:2068 msgid "Generate support material for the specified number of layers counting from bottom, regardless of whether normal support material is enabled or not and regardless of any angle threshold. This is useful for getting more adhesion of objects having a very thin or poor footprint on the build plate." msgstr "Generar material de soporte para la cantidad especificada de capas contando desde abajo, independientemente de si el material de soporte normal está habilitado o no e independientemente de cualquier umbral de ángulo. Es útil para obtener una mayor adhesión de los objetos que tienen una huella muy delgada o deficiente en la placa de construcción." -#: src/libslic3r/PrintConfig.cpp:2613 +#: src/libslic3r/PrintConfig.cpp:2756 msgid "Generate supports" msgstr "Generar soportes" -#: src/libslic3r/PrintConfig.cpp:2615 +#: src/libslic3r/PrintConfig.cpp:2758 msgid "Generate supports for the models" msgstr "Generar soportes para los modelos" -#: src/libslic3r/Print.cpp:1614 +#: src/slic3r/GUI/Plater.cpp:3554 +msgid "generated warnings" +msgstr "avisos generados" + +#: src/libslic3r/Print.cpp:1645 msgid "Generating brim" msgstr "Generando balsa" -#: src/libslic3r/Print.cpp:1642 +#: src/libslic3r/Print.cpp:1680 msgid "Generating G-code" msgstr "Generando G-code" -#: src/libslic3r/SLAPrintSteps.cpp:48 +#: src/slic3r/GUI/GCodeViewer.cpp:1392 +msgid "Generating index buffers" +msgstr "Generando buffers de índice" + +#: src/libslic3r/SLAPrintSteps.cpp:49 msgid "Generating pad" msgstr "Generando pad" -#: src/libslic3r/PrintObject.cpp:152 +#: src/libslic3r/PrintObject.cpp:158 msgid "Generating perimeters" msgstr "Generando perímetros" -#: src/libslic3r/Print.cpp:1606 +#: src/libslic3r/Print.cpp:1636 msgid "Generating skirt" msgstr "Generando falda" -#: src/libslic3r/PrintObject.cpp:395 +#: src/libslic3r/PrintObject.cpp:422 msgid "Generating support material" msgstr "Generando material de soporte" -#: src/libslic3r/SLAPrintSteps.cpp:46 src/libslic3r/SLAPrintSteps.cpp:356 +#: src/libslic3r/SLAPrintSteps.cpp:47 src/libslic3r/SLAPrintSteps.cpp:359 msgid "Generating support points" msgstr "Generando puntos de soporte" -#: src/libslic3r/SLAPrintSteps.cpp:47 +#: src/libslic3r/SLAPrintSteps.cpp:48 msgid "Generating support tree" msgstr "Generando soporte tipo árbol" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2022 +#: src/slic3r/GUI/GCodeViewer.cpp:933 +msgid "Generating toolpaths" +msgstr "Generando trayectorias" + +#: src/slic3r/GUI/GCodeViewer.cpp:1318 +msgid "Generating vertex buffer" +msgstr "Generando buffer de vértice" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2181 msgid "Generic" msgstr "Genérico" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:175 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:169 msgid "Gizmo cut" msgstr "Corte Gizmo" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:172 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:166 msgid "Gizmo move" msgstr "Movimiento Gizmo" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:176 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:198 +msgid "Gizmo move: Press to snap by 1mm" +msgstr "Herramienta de mover: Pulsa para ajustar en pasos de 1 mm" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:170 msgid "Gizmo Place face on bed" msgstr "Gizmo Colocar cara en la base" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:174 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:168 msgid "Gizmo rotate" msgstr "Rotación Gizmo" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:173 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:203 +msgid "Gizmo rotate: Press to rotate selected objects around their own center" +msgstr "Herramienta de rotación: Pulsa para girar la pieza sobre su propio centro" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:167 msgid "Gizmo scale" msgstr "Escala Gizmo" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:177 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:201 +msgid "Gizmo scale: Press to activate one direction scaling" +msgstr "Herramienta de escala: Pulsa para activar una dirección de escalado" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:202 +msgid "Gizmo scale: Press to scale selected objects around their own center" +msgstr "Herramienta de escala: Pulsa para escalar la pieza seleccionada alrededor de su propio centro" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:199 +msgid "Gizmo scale: Press to snap by 5%" +msgstr "Herramienta de Escala: pulsa para ajustar un 5%" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:200 +msgid "Gizmo scale: Scale selection to fit print volume" +msgstr "Herramienta de escala: Escala las piezas seleccionadas para ajustarse al volumen de impresión" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:171 msgid "Gizmo SLA hollow" msgstr "Gizmo SLA vaciado" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:178 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:172 msgid "Gizmo SLA support points" msgstr "Puntos de soporte SLA Gizmo" -#: src/slic3r/GUI/GLCanvas3D.cpp:2921 -#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:562 +#: src/slic3r/GUI/GLCanvas3D.cpp:3165 +#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:520 msgid "Gizmo-Move" msgstr "Gizmo-Mover" -#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:489 +#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:639 msgid "Gizmo-Place on Face" msgstr "Gizmo-Colocar en Cara" -#: src/slic3r/GUI/GLCanvas3D.cpp:3001 -#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:564 +#: src/slic3r/GUI/GLCanvas3D.cpp:3249 +#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:522 msgid "Gizmo-Rotate" msgstr "Gizmo-Rotar" -#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:563 +#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:521 msgid "Gizmo-Scale" msgstr "Gizmo-Escalar" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:201 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:199 msgid "Gizmos" msgstr "Gizmos" -#: src/slic3r/GUI/AboutDialog.cpp:259 +#: src/slic3r/GUI/AboutDialog.cpp:284 src/slic3r/GUI/GUI_App.cpp:244 msgid "GNU Affero General Public License, version 3" msgstr "GNU Affero General Public License, versión 3" -#: src/slic3r/GUI/ConfigWizard.cpp:980 +#: src/slic3r/GUI/ConfigWizard.cpp:1346 msgid "Good precision is required, so use a caliper and do multiple measurements along the filament, then compute the average." msgstr "Se necesita buena precisión, así que usa un calibre y realiza varias medidas a lo largo del filamento, luego calcula la media." -#: src/libslic3r/PrintConfig.cpp:844 +#: src/libslic3r/PrintConfig.cpp:882 msgid "Grid" msgstr "Rejilla" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2454 +#: src/slic3r/GUI/PrintHostDialogs.cpp:57 +msgid "Group" +msgstr "Agrupar" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2846 msgid "Group manipulation" msgstr "Manipulación de grupos" -#: src/slic3r/GUI/Preferences.cpp:133 +#: src/slic3r/GUI/Preferences.cpp:200 msgid "GUI" msgstr "IU" -#: src/libslic3r/PrintConfig.cpp:852 +#: src/libslic3r/PrintConfig.cpp:890 msgid "Gyroid" msgstr "Giroide" -#: src/slic3r/GUI/Tab.cpp:2937 -msgid "has the following unsaved changes:" -msgstr "tiene los siguientes cambios no guardados:" - -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:47 msgid "Head diameter" msgstr "Diámetro de la cabeza" -#: src/slic3r/GUI/ConfigManipulation.cpp:317 +#: src/libslic3r/PrintConfig.cpp:2772 +msgid "Head penetration" +msgstr "Penetración de la cabeza" + +#: src/slic3r/GUI/ConfigManipulation.cpp:322 msgid "Head penetration should not be greater than the head width." msgstr "La penetración de la cabeza no debaría ser mayor que el ancho de la cabeza." -#: src/libslic3r/PrintConfig.cpp:869 +#: src/libslic3r/PrintConfig.cpp:910 msgid "Heated build plate temperature for the first layer. Set this to zero to disable bed temperature control commands in the output." -msgstr "Temperatura de base calefactable para la primera capa. Ajuste esto a cero para deshabilitar los comandos de control de temperatura de la cama en la salida." +msgstr "Temperatura de base calefactable para la primera capa. Ajusta esto a cero para deshabilitar los comandos de control de temperatura de la cama en la salida." -#: src/slic3r/GUI/GUI_Preview.cpp:222 src/libslic3r/PrintConfig.cpp:500 +#: src/slic3r/GUI/GUI_Preview.cpp:276 src/libslic3r/PrintConfig.cpp:536 msgid "Height" msgstr "Altura" -#: src/libslic3r/GCode/PreviewData.cpp:347 +#: src/slic3r/GUI/GCodeViewer.cpp:2236 src/libslic3r/GCode/PreviewData.cpp:352 msgid "Height (mm)" msgstr "Altura (mm)" -#: src/libslic3r/PrintConfig.cpp:1688 +#: src/libslic3r/PrintConfig.cpp:1796 msgid "Height of skirt expressed in layers. Set this to a tall value to use skirt as a shield against drafts." msgstr "Altura de la falda expresada en capas. Establezca esto en un valor alto para usar la falda como escudo contra corrientes de aire." -#: src/libslic3r/PrintConfig.cpp:2360 +#: src/libslic3r/PrintConfig.cpp:2503 msgid "Height of the display" msgstr "Altura de la pantalla" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1500 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1631 msgid "Height range Modifier" msgstr "Modificador Rango de Alturas" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2507 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2899 msgid "Height ranges" msgstr "Rango de alturas" -#: src/libslic3r/PrintConfig.cpp:261 +#: src/libslic3r/PrintConfig.cpp:295 msgid "Heights at which a filament change is to occur." msgstr "Alturas en las que se producirá un cambio de filamento." -#: src/slic3r/GUI/ConfigWizard.cpp:433 +#: src/slic3r/GUI/ConfigWizard.cpp:451 #, 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 "Hola, bienvenido a %s! Este %s te ayuda con la configuración inicial; sólo unos pocos ajustes y estarás preparado para imprimir." -#: src/libslic3r/PrintConfig.cpp:3365 +#: src/libslic3r/PrintConfig.cpp:3564 msgid "Help" msgstr "Ayuda" -#: src/libslic3r/PrintConfig.cpp:3371 +#: src/libslic3r/PrintConfig.cpp:3570 msgid "Help (FFF options)" msgstr "Ayuda (opciones FFF)" -#: src/libslic3r/PrintConfig.cpp:3376 +#: src/libslic3r/PrintConfig.cpp:3575 msgid "Help (SLA options)" msgstr "Ayuda (opciones SLA)" @@ -3301,96 +3806,80 @@ msgstr "Ayuda (opciones SLA)" msgid "Here you can adjust required purging volume (mm³) for any given pair of tools." msgstr "Aquí puedes ajustar el volumende purga requerida (mm³) para cualquier par de herramientas." -#: src/libslic3r/PrintConfig.cpp:973 +#: src/libslic3r/PrintConfig.cpp:1017 msgid "High extruder current on filament swap" msgstr "Alta intensidad en el extrusor durante el cambio de filamento" -#: src/slic3r/GUI/GLCanvas3D.cpp:277 +#: src/slic3r/GUI/GLCanvas3D.cpp:263 msgid "Higher print quality versus higher print speed." msgstr "Mayor calidad de impresión contra mayor velocidad de impresión." -#: src/libslic3r/PrintConfig.cpp:427 src/libslic3r/PrintConfig.cpp:853 +#: src/libslic3r/PrintConfig.cpp:463 src/libslic3r/PrintConfig.cpp:891 msgid "Hilbert Curve" msgstr "Curva de Hilbert" -#: src/slic3r/GUI/Plater.cpp:1042 +#: src/slic3r/GUI/Plater.cpp:916 msgid "Hold Shift to Slice & Export G-code" msgstr "Mantén presionada la tecla Shift para laminar y exportar el código G" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:47 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:46 msgid "Hole depth" msgstr "Profundidad del orificio" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:46 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:45 msgid "Hole diameter" msgstr "Diámetro del orificio" -#: src/slic3r/GUI/Plater.cpp:2760 -msgid "Hollow" -msgstr "Vaciado" - -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:977 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:785 msgid "Hollow and drill" msgstr "Vaciado y taladrado" -#: src/libslic3r/PrintConfig.cpp:2910 +#: src/libslic3r/PrintConfig.cpp:3074 msgid "Hollow out a model to have an empty interior" msgstr "Vaciado de un modelo para tener un interior vacío" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:41 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:40 msgid "Hollow this object" msgstr "Vaciar este objeto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:108 src/slic3r/GUI/Tab.cpp:3654 -#: src/slic3r/GUI/Tab.cpp:3655 src/libslic3r/SLA/Hollowing.cpp:46 -#: src/libslic3r/SLA/Hollowing.cpp:58 src/libslic3r/SLA/Hollowing.cpp:67 -#: src/libslic3r/SLA/Hollowing.cpp:76 src/libslic3r/PrintConfig.cpp:2909 -#: src/libslic3r/PrintConfig.cpp:2916 src/libslic3r/PrintConfig.cpp:2926 -#: src/libslic3r/PrintConfig.cpp:2935 +#: src/slic3r/GUI/GUI_ObjectList.cpp:106 src/slic3r/GUI/Tab.cpp:4073 +#: src/slic3r/GUI/Tab.cpp:4074 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:3073 +#: src/libslic3r/PrintConfig.cpp:3080 src/libslic3r/PrintConfig.cpp:3090 +#: src/libslic3r/PrintConfig.cpp:3099 msgid "Hollowing" msgstr "Vaciando el interior" -#: src/slic3r/GUI/Plater.cpp:2926 -msgid "Hollowing cancelled." -msgstr "Vaciado cancelado." - -#: src/slic3r/GUI/Plater.cpp:2927 -msgid "Hollowing done." -msgstr "Vaciado acabado." - -#: src/slic3r/GUI/Plater.cpp:2929 -msgid "Hollowing failed." -msgstr "Vaciado fallido." - -#: src/libslic3r/PrintConfig.cpp:2937 +#: src/libslic3r/PrintConfig.cpp:3101 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 inflated back to the specified offset. A greater closing distance makes the interior more rounded. At zero, the interior will resemble the exterior the most." msgstr "El vaciado del interior se hace en dos pasos: primero, se calcula un interior imaginario (un desplazamiento más la distancia de cierre) en la pieza y luego, se hincha hasta alcanzar el desplazamiento especificado. Una distancia de cierre mayor hace que interior sea más redondeado. Si es cero, el interior se parecerá mucho al exterior." -#: src/libslic3r/SLAPrintSteps.cpp:43 +#: src/libslic3r/SLAPrintSteps.cpp:44 msgid "Hollowing model" msgstr "Vaciando modelo" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:813 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:624 msgid "Hollowing parameter change" msgstr "Cambio del parámetro de vaciar el interior" -#: src/libslic3r/PrintConfig.cpp:850 src/libslic3r/PrintConfig.cpp:2011 +#: src/libslic3r/PrintConfig.cpp:888 src/libslic3r/PrintConfig.cpp:2153 msgid "Honeycomb" msgstr "Panal de abeja" -#: src/slic3r/GUI/Tab.cpp:1064 +#: src/slic3r/GUI/Tab.cpp:1386 msgid "Horizontal shells" msgstr "Carcasas horizontales" -#: src/libslic3r/PrintConfig.cpp:245 +#: 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." -#: src/slic3r/GUI/PrintHostDialogs.cpp:152 +#: src/slic3r/GUI/PrintHostDialogs.cpp:150 msgid "Host" msgstr "Equipo" -#: src/libslic3r/PrintConfig.cpp:1332 +#: src/libslic3r/PrintConfig.cpp:1440 msgid "Host Type" msgstr "Tipo de host" @@ -3398,67 +3887,76 @@ msgstr "Tipo de host" msgid "Hostname" msgstr "Nombre del equipo" -#: src/libslic3r/PrintConfig.cpp:97 +#: src/libslic3r/PrintConfig.cpp:99 msgid "Hostname, IP or URL" msgstr "Nombre de equipo, IP o URL" -#: src/slic3r/GUI/Tab.cpp:139 +#: src/slic3r/GUI/Tab.cpp:210 msgid "" "Hover the cursor over buttons to find more information \n" "or click this button." msgstr "Sitúa el cursos sobre los botones para más información o haz clic en este botón." -#: src/libslic3r/PrintConfig.cpp:2812 +#: src/libslic3r/PrintConfig.cpp:2976 msgid "How far should the pad extend around the contained geometry" msgstr "¿Hasta dónde debe extenderse el pad alrededor de la geometría contenida" -#: src/libslic3r/PrintConfig.cpp:2901 +#: src/libslic3r/PrintConfig.cpp:3065 msgid "How much should the tiny connectors penetrate into the model body." msgstr "Cuanto deberían penetrar los conectores pequeños en el modelo del cuerpo." -#: src/libslic3r/PrintConfig.cpp:2631 +#: src/libslic3r/PrintConfig.cpp:2774 msgid "How much the pinhead has to penetrate the model surface" msgstr "Cuánto tiene que penetrar la cabeza del pin en la superficie del modelo" -#: src/libslic3r/PrintConfig.cpp:2755 +#: src/libslic3r/PrintConfig.cpp:2919 msgid "How much the supports should lift up the supported object. If \"Pad around object\" is enabled, this value is ignored." msgstr "Cuanto deberían los soportes deberían levantar el objeto soportado. Si \"Pad alrededor del objeto\" está activado, este valor será ignorado." -#: src/libslic3r/PrintConfig.cpp:111 +#: src/libslic3r/PrintConfig.cpp:1209 +msgid "How to apply limits" +msgstr "Cómo aplicar límites" + +#: src/libslic3r/PrintConfig.cpp:1203 +msgid "How to apply the Machine Limits" +msgstr "Cómo aplicar los Límites Máquina" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:358 +#: src/libslic3r/PrintConfig.cpp:113 msgid "HTTPS CA File" msgstr "Archivo HTTPS CA" -#: src/slic3r/GUI/Tab.cpp:1713 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:319 msgid "HTTPS CA file is optional. It is only needed if you use HTTPS with a self-signed certificate." msgstr "El archivo HTTPS CA es opcional. Sólo se necesita si vas a usar HTTPS con un certificado auto-firmado." -#: src/slic3r/GUI/Preferences.cpp:222 +#: src/slic3r/GUI/Preferences.cpp:376 msgid "Icon size in a respect to the default size" msgstr "Tamaño del icono respecto al tamaño original" -#: src/slic3r/GUI/PrintHostDialogs.cpp:149 +#: src/slic3r/GUI/PrintHostDialogs.cpp:147 msgid "ID" msgstr "ID" -#: src/libslic3r/PrintConfig.cpp:1873 +#: src/libslic3r/PrintConfig.cpp:2015 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 "Si se marca, los soportes se generarán automáticamente según el valor del umbral de voladizo. Si no se selecciona, los apoyos se generarán solo dentro de los volúmenes \"Forzar soportes\"." -#: src/slic3r/GUI/ConfigWizard.cpp:773 +#: src/slic3r/GUI/ConfigWizard.cpp:1132 #, c-format msgid "If enabled, %s checks for new application versions online. When a new version becomes available, a notification is displayed at the next application startup (never during program usage). This is only a notification mechanisms, no automatic installation is done." msgstr "Si está activado, %s comprueba si hay nuevas versiones de Slic3r PE en la red. Cuando hay disponible una nueva versión se muestra una notificación al iniciar la aplicación (nunca durante el uso del programa). Esto es sólo un mecanismo de notificación, sin que se realice una instalación automática." -#: src/slic3r/GUI/ConfigWizard.cpp:783 +#: src/slic3r/GUI/ConfigWizard.cpp:1142 #, c-format msgid "If enabled, %s downloads updates of built-in system presets in the background.These updates are downloaded into a separate temporary location.When a new preset version becomes available it is offered at application startup." msgstr "Si está activado, %s descargará actualizaciones de los ajustes del sistema mientras lo usamos. Estas actualizaciones se descargan a una ubicación temporal. Cuando hay un nuevo ajuste disponible, este se podrá incorporar y usar cuando la aplicación se vuelva a iniciar." -#: src/libslic3r/PrintConfig.cpp:1852 +#: src/libslic3r/PrintConfig.cpp:1994 msgid "If enabled, all printing extruders will be primed at the front edge of the print bed at the start of the print." msgstr "Si está habilitado, todos los extrusores de impresión estarán cebados en el borde frontal de la cama de impresión al comienzo de la impresión." -#: src/slic3r/GUI/ConfigWizard.cpp:805 +#: src/slic3r/GUI/ConfigWizard.cpp:1164 msgid "" "If enabled, allows the Reload from disk command to automatically find and load the files when invoked.\n" "If not enabled, the Reload from disk command will ask to select each file using an open file dialog." @@ -3466,127 +3964,180 @@ msgstr "" "Si está activado, permite que la orden de Recarga desde el disco encuentre y cargue los archivos al invocarla. \n" "Si no está activado, la orden de Recarga desde el disco te pedirá que selecciones cada archivo en un cuadro de abrir archivo." -#: src/slic3r/GUI/Preferences.cpp:74 +#: src/slic3r/GUI/Preferences.cpp:91 msgid "If enabled, allows the Reload from disk command to automatically find and load the files when invoked." msgstr "Si está activado, permite que la orden de Recarga desde el disco busque y cargue los ficheros cuando se invoque." -#: src/slic3r/GUI/Preferences.cpp:66 +#: src/slic3r/GUI/Preferences.cpp:238 +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 "Si está activado, los cambios realizados con el control deslizante secuencial, en la vista previa, se aplican solo a la capa superior del código G. Si está desactivado, los cambios realizados con el control deslizante secuencial, en la vista previa, se aplican a todo el código G." + +#: src/slic3r/GUI/Preferences.cpp:83 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 application startup (never during program usage). This is only a notification mechanisms, no automatic installation is done." msgstr "Si está habilitado, PrusaSlicer buscará las nuevas versiones de sí mismo en línea. Cuando una nueva versión esté disponible, se mostrará una notificación en el siguiente inicio de la aplicación (nunca durante el uso del programa). Esto es solo un mecanismo de notificación, no se realiza instalación automática." -#: src/slic3r/GUI/Preferences.cpp:82 +#: src/slic3r/GUI/Preferences.cpp:270 +msgid "If enabled, renders object using the environment map." +msgstr "Si está activado, visualiza el objeto usando el mapa del entorno." + +#: src/slic3r/GUI/Preferences.cpp:200 +msgid "If enabled, reverses the direction of zoom with mouse wheel" +msgstr "Si está habilitado, invierte la dirección del zoom con la rueda del mouse" + +#: src/slic3r/GUI/Preferences.cpp:99 msgid "If enabled, Slic3r downloads updates of built-in system presets in the background. These updates are downloaded into a separate temporary location. When a new preset version becomes available it is offered at application startup." msgstr "Si está activado, Slic3r descargará actualizaciones de los ajustes del sistema mientras lo usamos. Estas actualizaciones se descargan a una ubicación temporal. Cuando hay un nuevo ajuste disponible, este se podrá incorporar y usar cuando la aplicación se vuelva a iniciar." -#: src/slic3r/GUI/Preferences.cpp:106 +#: src/slic3r/GUI/Preferences.cpp:137 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 "Si está activado, la escena 3D se mostrará en resolución Retina. Si tienes problemas de prestaciones 3D, desactivar esta opción te puede ayudar." -#: src/libslic3r/PrintConfig.cpp:1696 +#: src/slic3r/GUI/Preferences.cpp:215 +msgid "If enabled, the button for the collapse sidebar will be appeared in top right corner of the 3D Scene" +msgstr "Si está habilitado, el botón de la barra lateral ocultable aparecerá en la esquina superior derecha de la escena 3D" + +#: src/libslic3r/PrintConfig.cpp:3698 +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/libslic3r/PrintConfig.cpp:1804 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 "Si está habilitado, la falda será tan alta como un objeto impreso más alto. Esto es útil para proteger una impresión ABS o ASA de la deformación y la separación de la cama de impresión debido al viento." -#: src/libslic3r/PrintConfig.cpp:1858 +#: src/libslic3r/PrintConfig.cpp:2000 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 print the wipe tower. User is responsible for ensuring there is no collision with the print." msgstr "Si está habilitado, laTorre de Limpieza no se imprimirá en capas sin cambios de herramientas. En capas con cambio de herramienta, el extrusor viajará hacia abajo para imprimir la torre de limpieza. El usuario es responsable de garantizar que no haya colisión con la impresión." -#: src/slic3r/GUI/Preferences.cpp:128 +#: src/slic3r/GUI/Preferences.cpp:193 msgid "If enabled, use free camera. If not enabled, use constrained camera." msgstr "Si está activado, usa la cámara libre. Si no está activado, usa la cámara restringida." -#: src/slic3r/GUI/Preferences.cpp:121 +#: src/slic3r/GUI/Preferences.cpp:186 msgid "If enabled, use perspective camera. If not enabled, use orthographic camera." msgstr "Si está activado, se usará una cámara en perspectiva. Si no está activo, se usará una cámara ortográfica." -#: src/slic3r/GUI/Preferences.cpp:145 +#: src/slic3r/GUI/Preferences.cpp:222 msgid "If enabled, you can change size of toolbar icons manually." msgstr "Si está activado, puedes cambiar el tamaño de la barra de herramientas manualmente." -#: src/slic3r/GUI/PresetHints.cpp:29 +#: src/slic3r/GUI/PresetHints.cpp:28 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 "Si el tiempo de capa estimado está por debajo de ~%1%s, el ventilador funcionará en %2%%% y la velocidad de impresión se reducirá de modo que no se gaste menos de %3%s en esa capa (sin embargo, la velocidad nunca se reducirá por debajo de %4%mm/s) ." -#: src/slic3r/GUI/PresetHints.cpp:36 +#: src/slic3r/GUI/PresetHints.cpp:35 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 "Si el tiempo estimado de la capa es mayor, pero todavía por debajo de ~%1%s, el ventilador funcionará a una velocidad proporcionalmente menor entre %2%%% y %3%%%." -#: src/libslic3r/PrintConfig.cpp:901 +#: src/libslic3r/PrintConfig.cpp:943 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 "Si se expresa como valor absoluto en mm / s, esta velocidad se aplicará a todos los movimientos de impresión de la primera capa, independientemente de su tipo. Si se expresa como un porcentaje (por ejemplo: 40%), escalará las velocidades predeterminadas." -#: src/libslic3r/PrintConfig.cpp:573 +#: src/libslic3r/PrintConfig.cpp:609 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 "Si el tiempo de impresión de capa se estima por debajo de este número de segundos, el ventilador se habilitará y su velocidad se calculará al interpolar las velocidades mínima y máxima." -#: src/libslic3r/PrintConfig.cpp:1706 +#: src/libslic3r/PrintConfig.cpp:1821 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 "Si el tiempo de impresión de la capa se estima por debajo de este número de segundos, la velocidad de los movimientos de impresión se reducirá para extender la duración a este valor." -#: src/libslic3r/PrintConfig.cpp:567 +#: src/libslic3r/PrintConfig.cpp:603 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 "Si esto está habilitado, el ventilador nunca se desactivará y se mantendrá funcionando al menos a su velocidad mínima. Útil para PLA, no recomendado para ABS." -#: src/slic3r/GUI/Preferences.cpp:49 +#: src/slic3r/GUI/Preferences.cpp:66 msgid "If this is enabled, Slic3r will auto-center objects around the print bed center." msgstr "Si esto está habilitado, Slic3r centrará automáticamente los objetos alrededor del centro de la base de impresión." -#: src/slic3r/GUI/Preferences.cpp:57 +#: src/slic3r/GUI/Preferences.cpp:74 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 "Si esto está habilitado, Slic3r preprocesará objetos tan pronto como se carguen para ahorrar tiempo al exportar el código G." -#: src/slic3r/GUI/Preferences.cpp:41 +#: src/slic3r/GUI/Preferences.cpp:54 msgid "If this is enabled, Slic3r will prompt the last output directory instead of the one containing the input files." msgstr "Si esto está habilitado, Slic3r solicitará el último directorio de salida en lugar del que contiene los archivos de entrada." -#: src/libslic3r/PrintConfig.cpp:1562 +#: src/slic3r/GUI/Preferences.cpp:125 +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 "Si está habilitado, al iniciar PrusaSlicer y ya se está ejecutando otra instancia del mismo PrusaSlicer, esa instancia se reactivará en su lugar." + +#: src/libslic3r/PrintConfig.cpp:1670 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 "Si establece esto en un valor positivo, Z se levantará rápidamente cada vez que se active una retracción. Cuando se usan múltiples extrusores , solo se considerará la configuración del primer extrusor." -#: src/libslic3r/PrintConfig.cpp:1571 +#: src/libslic3r/PrintConfig.cpp:1679 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 "Si establece esto en un valor positivo, la elevación de Z solo tendrá lugar por encima de la Z absoluta especificada. Puede ajustar esta configuración para omitir el levantamiento en las primeras capas." -#: src/libslic3r/PrintConfig.cpp:1580 +#: src/libslic3r/PrintConfig.cpp:1688 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 "Si configura esto en un valor positivo, la elevación Z solo tendrá lugar por debajo de la Z absoluta especificada. Puede ajustar esta configuración para limitar la elevación a las primeras capas." -#: src/libslic3r/PrintConfig.cpp:1454 +#: src/libslic3r/PrintConfig.cpp:1562 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. Scripts will be passed the absolute path to the G-code file as the first argument, and they can access the Slic3r config settings by reading environment variables." msgstr "Si desea procesar el código G de salida a través de scripts personalizados, simplemente haga una lista de sus rutas absolutas aquí. Separe los scripts múltiples con un punto y coma. Los scripts se pasarán por la ruta absoluta al archivo de código G como primer argumento, y pueden acceder a la configuración de configuración de Slic3r leyendo las variables de entorno." -#: src/libslic3r/PrintConfig.cpp:530 +#: src/libslic3r/PrintConfig.cpp:566 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 of each extruder with respect to the first one. It expects positive coordinates (they will be subtracted from the XY coordinate)." msgstr "Si su firmware no maneja el desplazamiento del extrusor, necesita el código G para tenerlo en cuenta. Esta opción le permite especificar el desplazamiento de cada extrusora con respecto a la primera. Se esperan coordenadas positivas (se restarán de la coordenada XY)." -#: src/libslic3r/PrintConfig.cpp:2169 +#: src/libslic3r/PrintConfig.cpp:2312 msgid "If your firmware requires relative E values, check this, otherwise leave it unchecked. Most firmwares use absolute values." msgstr "Si su firmware requiere valores E relativos, verifique esto, de lo contrario, deje sin marcar. La mayoría de los firmwares usan valores absolutos." -#: src/libslic3r/PrintConfig.cpp:3485 +#: src/libslic3r/PrintConfig.cpp:1219 +msgid "Ignore" +msgstr "Ignorar" + +#: src/libslic3r/PrintConfig.cpp:3684 msgid "Ignore non-existent config files" msgstr "Ignorar archivos de configuración inexistentes" -#: src/slic3r/GUI/MainFrame.cpp:464 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:192 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:173 +msgid "Ignores facets facing away from the camera." +msgstr "Ignora los lados que no están mirando hacia la cámara." + +#: src/slic3r/GUI/MainFrame.cpp:1055 msgid "Import &Config" msgstr "Importar &Configuración" -#: src/slic3r/GUI/MainFrame.cpp:471 +#: src/slic3r/GUI/MainFrame.cpp:1062 msgid "Import Config &Bundle" msgstr "Importar &Conjunto de Ajustes" -#: src/slic3r/GUI/MainFrame.cpp:467 +#: src/slic3r/GUI/MainFrame.cpp:1058 msgid "Import Config from &project" msgstr "Importar configuración desde un &proyecto" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:119 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:112 msgid "Import Config from ini/amf/3mf/gcode" msgstr "Importar Configuración desde ini/amf/3mf/gcode" -#: src/slic3r/GUI/Plater.cpp:4603 +#: src/slic3r/GUI/Plater.cpp:1419 +msgid "Import config only" +msgstr "Importar configuración solo" + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:39 +msgid "Import file" +msgstr "Importar archivo" + +#: src/slic3r/GUI/Plater.cpp:1418 +msgid "Import geometry only" +msgstr "Importar geometría solo" + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:46 +msgid "Import model and profile" +msgstr "Importar modelo y perfil" + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:48 +msgid "Import model only" +msgstr "Importar modelo únicamente" + +#: src/slic3r/GUI/Plater.cpp:4655 msgid "Import Object" msgstr "Importar Objeto" -#: src/slic3r/GUI/Plater.cpp:4607 +#: src/slic3r/GUI/Plater.cpp:4659 msgid "Import Objects" msgstr "Importar Objetos" @@ -3594,15 +4145,50 @@ msgstr "Importar Objetos" msgid "Import of the repaired 3mf file failed" msgstr "La importación del archivo 3mf reparado ha fallado" -#: src/slic3r/GUI/MainFrame.cpp:460 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:47 +msgid "Import profile only" +msgstr "Importar perfil únicamente" + +#: src/slic3r/GUI/MainFrame.cpp:1050 +msgid "Import SL1 archive" +msgstr "Importar archivo SL1" + +#: src/slic3r/GUI/Plater.cpp:1561 +msgid "Import SLA archive" +msgstr "Importar archivo SLA" + +#: src/slic3r/GUI/MainFrame.cpp:1046 +msgid "Import STL (imperial units)" +msgstr "Importar STL (unidades imperiales)" + +#: src/slic3r/GUI/MainFrame.cpp:1042 msgid "Import STL/OBJ/AM&F/3MF" msgstr "Importar STL/OBJ/AM&F/3MF" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:118 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:111 msgid "Import STL/OBJ/AMF/3MF without config, keep plater" msgstr "Importar STL/OBJ/AMF/3MF sin configuración, mantener la base" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3422 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:159 +msgid "Importing canceled." +msgstr "Importación cancelada." + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:160 +msgid "Importing done." +msgstr "Importación finalizada." + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:135 +msgid "Importing SLA archive" +msgstr "Importando archivo SLA" + +#: 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 "en" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:3885 #, c-format msgid "In this mode you can select only other %s Items%s" msgstr "En este modo, solo puede seleccionar otros %s Items %s" @@ -3611,25 +4197,25 @@ msgstr "En este modo, solo puede seleccionar otros %s Items %s" msgid "Incompatible bundles:" msgstr "Grupos incompatibles:" +#: src/slic3r/GUI/PresetComboBoxes.cpp:241 +msgid "Incompatible presets" +msgstr "Ajustes preestablecidos imcompatibles" + #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:75 #, c-format msgid "Incompatible with this %s" msgstr "Incompatible con este %s" -#: src/slic3r/GUI/Plater.cpp:4685 +#: src/slic3r/GUI/Plater.cpp:4790 msgid "Increase Instances" msgstr "Aumentar Instancias" -#: src/slic3r/GUI/GLCanvas3D.cpp:264 +#: src/slic3r/GUI/GLCanvas3D.cpp:251 msgid "Increase/decrease edit area" msgstr "Incrementar/reducir area edición" -#: src/slic3r/GUI/Plater.cpp:2922 -msgid "Indexing hollowed object" -msgstr "Indexando pieza vaciada" - #. TRN Description for "UNLOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:3258 +#: src/slic3r/GUI/Tab.cpp:3695 msgid "" "indicates that some settings were changed and are not equal to the system (or default) values for the current option group.\n" "Click the UNLOCKED LOCK icon to reset all settings for current option group to the system (or default) values." @@ -3638,12 +4224,12 @@ msgstr "" "Haz clic en el icono CANDADO DESBLOQUEADO para restablecer todos los ajustes del grupo de opciones actual a los valores del sistema (o predeterminados)." #. TRN Description for "LOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:3254 +#: src/slic3r/GUI/Tab.cpp:3691 msgid "indicates that the settings are the same as the system (or default) values for the current option group" msgstr "indica que los ajustes son los mismos que los valores del sistema (o por defecto) para el grupo de opciones actual" #. TRN Description for "BACK ARROW" -#: src/slic3r/GUI/Tab.cpp:3270 +#: src/slic3r/GUI/Tab.cpp:3707 msgid "" "indicates that the settings were changed and are not equal to the last saved preset for the current option group.\n" "Click the BACK ARROW icon to reset all settings for the current option group to the last saved preset." @@ -3651,419 +4237,475 @@ msgstr "" "indica que los ajustes cambiaron y no son iguales que los ajustes grabados la última vez para el grupo de opciones actual.\n" "Haz clic en el símbolo de FLECHA ATRÁS para resetear todos los ajustes del grupo de opciones actual a los grabados la vez anterior." -#: src/slic3r/GUI/ConfigManipulation.cpp:211 -#: src/slic3r/GUI/GUI_ObjectList.cpp:35 src/slic3r/GUI/GUI_ObjectList.cpp:96 -#: src/slic3r/GUI/GUI_ObjectList.cpp:614 src/slic3r/GUI/Plater.cpp:527 -#: src/slic3r/GUI/Tab.cpp:1091 src/slic3r/GUI/Tab.cpp:1092 -#: src/libslic3r/PrintConfig.cpp:203 src/libslic3r/PrintConfig.cpp:416 -#: src/libslic3r/PrintConfig.cpp:436 src/libslic3r/PrintConfig.cpp:776 -#: src/libslic3r/PrintConfig.cpp:790 src/libslic3r/PrintConfig.cpp:827 -#: src/libslic3r/PrintConfig.cpp:981 src/libslic3r/PrintConfig.cpp:991 -#: src/libslic3r/PrintConfig.cpp:1009 src/libslic3r/PrintConfig.cpp:1028 -#: src/libslic3r/PrintConfig.cpp:1047 src/libslic3r/PrintConfig.cpp:1728 -#: src/libslic3r/PrintConfig.cpp:1745 +#: src/slic3r/GUI/ConfigManipulation.cpp:210 +#: 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:393 +#: src/slic3r/GUI/Tab.cpp:1413 src/slic3r/GUI/Tab.cpp:1414 +#: src/libslic3r/PrintConfig.cpp:237 src/libslic3r/PrintConfig.cpp:450 +#: src/libslic3r/PrintConfig.cpp:472 src/libslic3r/PrintConfig.cpp:812 +#: src/libslic3r/PrintConfig.cpp:826 src/libslic3r/PrintConfig.cpp:863 +#: src/libslic3r/PrintConfig.cpp:1025 src/libslic3r/PrintConfig.cpp:1035 +#: src/libslic3r/PrintConfig.cpp:1053 src/libslic3r/PrintConfig.cpp:1072 +#: src/libslic3r/PrintConfig.cpp:1091 src/libslic3r/PrintConfig.cpp:1843 +#: src/libslic3r/PrintConfig.cpp:1860 msgid "Infill" msgstr "Relleno" -#: src/slic3r/GUI/PresetHints.cpp:174 +#: src/slic3r/GUI/PresetHints.cpp:173 msgid "infill" msgstr "relleno" -#: src/libslic3r/PrintConfig.cpp:1021 +#: src/libslic3r/PrintConfig.cpp:1065 msgid "Infill before perimeters" msgstr "Rellenar antes que los perímetros" -#: src/libslic3r/PrintConfig.cpp:1001 +#: src/libslic3r/PrintConfig.cpp:1045 msgid "Infill extruder" msgstr "Extrusor para el relleno" -#: src/libslic3r/PrintConfig.cpp:1036 +#: src/libslic3r/PrintConfig.cpp:1080 msgid "Infill/perimeters overlap" msgstr "Superposición de relleno/perímetros" -#: src/libslic3r/Print.cpp:1584 +#: src/libslic3r/Print.cpp:1610 msgid "Infilling layers" msgstr "Rellenando capas" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3430 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3505 src/slic3r/GUI/Plater.cpp:141 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3893 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3968 src/slic3r/GUI/Plater.cpp:147 msgid "Info" msgstr "Info" -#: src/libslic3r/PrintConfig.cpp:1057 +#: src/slic3r/GUI/GUI_App.cpp:1087 src/slic3r/GUI/Tab.cpp:3435 +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" -#: src/libslic3r/SLAPrint.cpp:653 +#: src/libslic3r/SLAPrint.cpp:667 msgid "Initial exposition time is out of printer profile bounds." msgstr "El tiempo de exposición inicial está fuera de los límites del perfil de impresión." -#: src/libslic3r/PrintConfig.cpp:2564 src/libslic3r/PrintConfig.cpp:2565 +#: src/libslic3r/PrintConfig.cpp:2707 src/libslic3r/PrintConfig.cpp:2708 msgid "Initial exposure time" msgstr "Tiempo de exposición inicial" -#: src/libslic3r/PrintConfig.cpp:2482 src/libslic3r/PrintConfig.cpp:2483 +#: src/libslic3r/PrintConfig.cpp:2625 src/libslic3r/PrintConfig.cpp:2626 msgid "Initial layer height" msgstr "Altura de la capa inicial" -#: src/slic3r/GUI/Field.cpp:204 +#: 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" -#: src/slic3r/GUI/GUI_App.cpp:800 +#: src/slic3r/GUI/GUI_App.cpp:1480 msgid "Inspect / activate configuration snapshots" msgstr "Inspeccionar / activar instantáneas de configuración" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:60 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:216 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:62 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:218 #, c-format msgid "Instance %d" msgstr "Instancia %d" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2500 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2892 msgid "Instance manipulation" msgstr "Manipulación de instancias" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:56 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:58 msgid "Instances" msgstr "Instancias" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1091 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3781 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1215 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4244 msgid "Instances to Separated Objects" msgstr "Instancias para Separar Objetos" -#: src/libslic3r/PrintConfig.cpp:1973 +#: src/libslic3r/PrintConfig.cpp:2115 msgid "Interface layers" msgstr "Capas de interfaz" -#: src/libslic3r/PrintConfig.cpp:1957 +#: src/libslic3r/PrintConfig.cpp:2099 msgid "Interface loops" msgstr "Bucles de interfaz" -#: src/libslic3r/PrintConfig.cpp:1982 +#: src/libslic3r/PrintConfig.cpp:2124 msgid "Interface pattern spacing" msgstr "Espaciado de patrón de interfaz" -#: src/libslic3r/PrintConfig.cpp:1071 +#: src/libslic3r/PrintConfig.cpp:1115 msgid "Interface shells" msgstr "Carcasas de interfaz" -#: src/libslic3r/Zipper.cpp:84 +#: src/libslic3r/miniz_extension.cpp:143 msgid "internal error" msgstr "error interno" -#: src/slic3r/GUI/GUI_Preview.cpp:240 src/libslic3r/ExtrusionEntity.cpp:313 +#: src/slic3r/GUI/GUI_Preview.cpp:304 src/libslic3r/ExtrusionEntity.cpp:317 +#: src/libslic3r/ExtrusionEntity.cpp:342 msgid "Internal infill" msgstr "Relleno interno" -#: src/slic3r/GUI/Plater.cpp:3106 +#: src/slic3r/GUI/BedShapeDialog.cpp:145 +msgid "Invalid" +msgstr "Inválido" + +#: src/slic3r/GUI/Plater.cpp:2906 src/slic3r/GUI/Plater.cpp:3583 msgid "Invalid data" msgstr "Datos inválidos" -#: src/slic3r/GUI/BedShapeDialog.cpp:494 src/slic3r/GUI/BedShapeDialog.cpp:543 -#: src/slic3r/GUI/BedShapeDialog.cpp:566 +#: src/slic3r/GUI/BedShapeDialog.cpp:570 src/slic3r/GUI/BedShapeDialog.cpp:619 +#: src/slic3r/GUI/BedShapeDialog.cpp:642 msgid "Invalid file format." msgstr "Formato inválido de archivo." -#: src/libslic3r/Zipper.cpp:80 +#: src/libslic3r/miniz_extension.cpp:139 msgid "invalid filename" msgstr "nombre de archivo inválido" -#: src/slic3r/GUI/ConfigManipulation.cpp:319 +#: src/slic3r/GUI/ConfigManipulation.cpp:324 msgid "Invalid Head penetration" msgstr "Penetración inválida de la cabeza" -#: src/libslic3r/Zipper.cpp:48 +#: src/libslic3r/miniz_extension.cpp:107 msgid "invalid header or archive is corrupted" msgstr "encabezado inválido o archivo está dañado" -#: src/slic3r/GUI/Field.cpp:195 src/slic3r/GUI/Field.cpp:226 -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:376 +#: 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." msgstr "Entrada numérica no válida." -#: src/libslic3r/Zipper.cpp:78 +#: src/libslic3r/miniz_extension.cpp:137 msgid "invalid parameter" msgstr "parámetro inválido" -#: src/slic3r/GUI/ConfigManipulation.cpp:332 +#: src/slic3r/GUI/ConfigManipulation.cpp:337 msgid "Invalid pinhead diameter" msgstr "Diámetro de la cabeza del pin inválido" +#: src/slic3r/GUI/GUI_ObjectList.cpp:94 src/slic3r/GUI/GUI_ObjectList.cpp:653 +#: src/slic3r/GUI/GUI_Preview.cpp:307 src/slic3r/GUI/Tab.cpp:1420 +#: src/libslic3r/ExtrusionEntity.cpp:320 src/libslic3r/ExtrusionEntity.cpp:348 +#: src/libslic3r/PrintConfig.cpp:1126 src/libslic3r/PrintConfig.cpp:1132 +#: src/libslic3r/PrintConfig.cpp:1146 src/libslic3r/PrintConfig.cpp:1156 +msgid "Ironing" +msgstr "Alisado" + +#: src/libslic3r/PrintConfig.cpp:1131 src/libslic3r/PrintConfig.cpp:1133 +msgid "Ironing Type" +msgstr "Tipo de alisado" + +#: src/slic3r/GUI/GUI_App.cpp:243 +msgid "is based on Slic3r by Alessandro Ranellucci and the RepRap community." +msgstr "está basado en Slic3r de Alessandro Ranellucci y la comunidad RepRap." + #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:258 +#: src/slic3r/GUI/AboutDialog.cpp:283 src/slic3r/GUI/GUI_App.cpp:244 msgid "is licensed under the" msgstr "está licenciado bajo el/los" -#: src/slic3r/GUI/Tab.cpp:2941 -msgid "is not compatible with print profile" -msgstr "no es compatible con el perfil de impresión" - -#: src/slic3r/GUI/Tab.cpp:2940 -msgid "is not compatible with printer" -msgstr "no es compatible con esta impresora" - -#: src/slic3r/GUI/MainFrame.cpp:658 +#: src/slic3r/GUI/MainFrame.cpp:955 src/slic3r/GUI/MainFrame.cpp:1275 msgid "Iso" msgstr "Iso" -#: src/slic3r/GUI/MainFrame.cpp:658 +#: src/slic3r/GUI/MainFrame.cpp:955 src/slic3r/GUI/MainFrame.cpp:1275 msgid "Iso View" msgstr "Vista Iso" -#: src/slic3r/GUI/Tab.cpp:964 +#: src/slic3r/GUI/Tab.cpp:1282 msgid "It can't be deleted or modified." msgstr "No puede ser borrado o modificado." -#: src/slic3r/GUI/Plater.cpp:3321 +#: src/slic3r/GUI/Plater.cpp:3124 msgid "It is not allowed to change the file to reload" msgstr "No está permitido cambiar el archivo a recargar" -#: src/libslic3r/PrintConfig.cpp:974 +#: src/libslic3r/PrintConfig.cpp:1018 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 "Puede ser beneficioso aumentar la corriente del motor del extrusor durante la secuencia de intercambio de filamentos para permitir velocidades de alimentación de rampa rápidas y superar la resistencia cuando se carga un filamento con una punta de forma fea." -#: src/slic3r/GUI/GUI_App.cpp:1084 src/slic3r/GUI/Tab.cpp:2958 +#: src/slic3r/GUI/Tab.cpp:3413 +msgid "It's a last preset for this physical printer." +msgstr "Es un último valor predeterminado para esta impresora." + +#: src/slic3r/GUI/GUI_App.cpp:1876 src/slic3r/GUI/Tab.cpp:3187 msgid "It's impossible to print multi-part object(s) with SLA technology." msgstr "Es imposible imprimir objetos de varias piezas con tecnología SLA." -#: src/slic3r/GUI/Tab.cpp:2229 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:601 +msgid "It's not possible to delete the last related preset for the printer." +msgstr "No es posible borrar el último ajuste preestablecido relacionado con la impresora." + +#: src/slic3r/GUI/Tab.cpp:2398 msgid "Jerk limits" msgstr "Límites del jerk" -#: src/libslic3r/PrintConfig.cpp:1649 +#: src/libslic3r/PrintConfig.cpp:1757 msgid "Jitter" msgstr "Jitter" -#: src/slic3r/GUI/DoubleSlider.cpp:957 src/slic3r/GUI/DoubleSlider.cpp:1529 -#: src/slic3r/GUI/DoubleSlider.cpp:1651 +#: src/slic3r/GUI/DoubleSlider.cpp:1077 src/slic3r/GUI/DoubleSlider.cpp:1721 +#: src/slic3r/GUI/DoubleSlider.cpp:1852 src/slic3r/GUI/DoubleSlider.cpp:1856 msgid "Jump to height" msgstr "Salta a la altura" -#: src/slic3r/GUI/DoubleSlider.cpp:955 +#: src/slic3r/GUI/DoubleSlider.cpp:1075 #, 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/libslic3r/PrintConfig.cpp:566 +#: src/slic3r/GUI/DoubleSlider.cpp:1071 src/slic3r/GUI/DoubleSlider.cpp:1852 +msgid "Jump to move" +msgstr "Saltar al movimiento" + +#: src/slic3r/GUI/SavePresetDialog.cpp:315 +msgid "Just switch to \"%1%\" preset" +msgstr "Simplemente cambiar al ajuste predeterminado \"%1%\"" + +#: src/libslic3r/PrintConfig.cpp:602 msgid "Keep fan always on" msgstr "Mantener el ventilador siempre encendido" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:169 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:171 msgid "Keep lower part" msgstr "Mantener la parte inferior" -#: src/slic3r/GUI/GLCanvas3D.cpp:304 +#: src/slic3r/GUI/GLCanvas3D.cpp:290 msgid "Keep min" msgstr "Mantener mínimo" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:168 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:170 msgid "Keep upper part" msgstr "Mantener la parte superior" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:41 src/slic3r/GUI/MainFrame.cpp:708 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:37 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:39 src/slic3r/GUI/MainFrame.cpp:941 +#: src/slic3r/GUI/MainFrame.cpp:1332 msgid "Keyboard Shortcuts" msgstr "Atajos de teclado" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:245 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:259 msgid "Keyboard shortcuts" msgstr "Atajos de teclado" -#: src/libslic3r/PrintConfig.cpp:2498 +#: src/libslic3r/PrintConfig.cpp:2641 msgid "kg" msgstr "kg" -#: src/libslic3r/PrintConfig.cpp:965 +#: src/libslic3r/PrintConfig.cpp:1009 msgid "Label objects" msgstr "Etiquetar objetos" -#: src/libslic3r/PrintConfig.cpp:2399 +#: src/libslic3r/PrintConfig.cpp:2542 msgid "Landscape" msgstr "Paisaje" -#: src/slic3r/GUI/GUI_App.cpp:629 +#: src/slic3r/GUI/GUI_App.cpp:1295 msgid "Language" msgstr "Idioma" -#: src/slic3r/GUI/GUI_App.cpp:885 +#: src/slic3r/GUI/GUI_App.cpp:1605 src/slic3r/GUI/GUI_App.cpp:1614 msgid "Language selection" msgstr "Selección de idiomas" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2140 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2242 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2307 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2408 msgid "Last instance of an object cannot be deleted." msgstr "La última instancia de un objeto no puede ser eliminada." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3418 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3881 msgid "Layer" msgstr "Capa" -#: src/slic3r/GUI/ConfigManipulation.cpp:49 -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:27 src/slic3r/GUI/Tab.cpp:1049 +#: src/slic3r/GUI/ConfigManipulation.cpp:48 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:29 src/slic3r/GUI/Tab.cpp:1371 #: src/libslic3r/PrintConfig.cpp:71 msgid "Layer height" msgstr "Altura de la capa" -#: src/libslic3r/Print.cpp:1427 +#: src/libslic3r/Print.cpp:1453 msgid "Layer height can't be greater than nozzle diameter" msgstr "La altura de la capa no puede ser mayor que diámetro de la boquilla" -#: src/slic3r/GUI/Tab.cpp:2362 +#: src/slic3r/GUI/Tab.cpp:2531 msgid "Layer height limits" msgstr "Límites de altura de la capa" -#: src/slic3r/GUI/ConfigWizard.cpp:2015 -msgid "Layer height:" -msgstr "Altura de la capa:" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:2488 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2880 msgid "Layer range Settings to modify" msgstr "Ajustes del Rango de capas a modificar" #: src/slic3r/GUI/ExtruderSequenceDialog.cpp:52 -#: src/libslic3r/PrintConfig.cpp:362 src/libslic3r/PrintConfig.cpp:994 -#: src/libslic3r/PrintConfig.cpp:1505 src/libslic3r/PrintConfig.cpp:1690 -#: src/libslic3r/PrintConfig.cpp:1750 src/libslic3r/PrintConfig.cpp:1930 -#: src/libslic3r/PrintConfig.cpp:1976 +#: src/libslic3r/PrintConfig.cpp:396 src/libslic3r/PrintConfig.cpp:1038 +#: src/libslic3r/PrintConfig.cpp:1613 src/libslic3r/PrintConfig.cpp:1798 +#: src/libslic3r/PrintConfig.cpp:1865 src/libslic3r/PrintConfig.cpp:2072 +#: src/libslic3r/PrintConfig.cpp:2118 msgid "layers" msgstr "capas" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:67 src/slic3r/GUI/Tab.cpp:3512 -#: src/slic3r/GUI/Tab.cpp:3600 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:69 src/slic3r/GUI/Tab.cpp:3928 +#: src/slic3r/GUI/Tab.cpp:4010 msgid "Layers" msgstr "Capas" -#: src/slic3r/GUI/Tab.cpp:1048 src/slic3r/GUI/Tab.cpp:3598 +#: src/slic3r/GUI/Tab.cpp:1370 src/slic3r/GUI/Tab.cpp:4008 msgid "Layers and perimeters" msgstr "Capas y perímetros" -#: src/slic3r/GUI/GUI_ObjectList.cpp:34 src/slic3r/GUI/GUI_ObjectList.cpp:95 -#: src/slic3r/GUI/GUI_ObjectList.cpp:613 src/libslic3r/PrintConfig.cpp:72 -#: src/libslic3r/PrintConfig.cpp:175 src/libslic3r/PrintConfig.cpp:184 -#: src/libslic3r/PrintConfig.cpp:408 src/libslic3r/PrintConfig.cpp:470 -#: src/libslic3r/PrintConfig.cpp:478 src/libslic3r/PrintConfig.cpp:890 -#: src/libslic3r/PrintConfig.cpp:1075 src/libslic3r/PrintConfig.cpp:1374 -#: src/libslic3r/PrintConfig.cpp:1441 src/libslic3r/PrintConfig.cpp:1622 -#: src/libslic3r/PrintConfig.cpp:2074 src/libslic3r/PrintConfig.cpp:2133 -#: src/libslic3r/PrintConfig.cpp:2142 +#: 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:209 src/libslic3r/PrintConfig.cpp:218 +#: src/libslic3r/PrintConfig.cpp:442 src/libslic3r/PrintConfig.cpp:506 +#: src/libslic3r/PrintConfig.cpp:514 src/libslic3r/PrintConfig.cpp:932 +#: src/libslic3r/PrintConfig.cpp:1119 src/libslic3r/PrintConfig.cpp:1482 +#: src/libslic3r/PrintConfig.cpp:1549 src/libslic3r/PrintConfig.cpp:1730 +#: src/libslic3r/PrintConfig.cpp:2217 src/libslic3r/PrintConfig.cpp:2276 +#: src/libslic3r/PrintConfig.cpp:2285 msgid "Layers and Perimeters" msgstr "Capas y Perímetros" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:222 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:225 msgid "Layers Slider" msgstr "Deslizador de Capas" -#: src/slic3r/GUI/OptionsGroup.cpp:258 +#: src/slic3r/GUI/OptionsGroup.cpp:293 msgctxt "Layers" msgid "Bottom" msgstr "Inferior" -#: src/slic3r/GUI/OptionsGroup.cpp:258 +#: src/slic3r/GUI/OptionsGroup.cpp:293 msgctxt "Layers" msgid "Top" msgstr "Superior" -#: src/slic3r/GUI/MainFrame.cpp:671 +#: src/slic3r/GUI/Preferences.cpp:440 +msgid "Layout Options" +msgstr "Opciones de diseño" + +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:48 +msgid "Leaving Paint-on supports" +msgstr "Saliendo del Pintado de soportes" + +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:47 +msgid "Leaving Seam painting" +msgstr "Saliendo del Pintado de costuras" + +#: src/slic3r/GUI/MainFrame.cpp:968 src/slic3r/GUI/MainFrame.cpp:1288 msgid "Left" msgstr "Izquierda" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1363 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1366 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1367 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1210 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1213 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1214 msgid "Left click" msgstr "Clic izquierdo" -#: src/slic3r/GUI/GLCanvas3D.cpp:237 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:46 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:29 +msgid "Left mouse button" +msgstr "Botón izquierdo del ratón" + +#: src/slic3r/GUI/GLCanvas3D.cpp:233 msgid "Left mouse button:" msgstr "Botón izquierdo del ratón:" -#: src/slic3r/GUI/MainFrame.cpp:671 +#: src/slic3r/GUI/MainFrame.cpp:968 src/slic3r/GUI/MainFrame.cpp:1288 msgid "Left View" msgstr "Vista izquierda" -#: src/slic3r/GUI/GUI_Preview.cpp:257 +#: src/slic3r/GUI/GUI_Preview.cpp:339 msgid "Legend" msgstr "Leyenda" -#: src/libslic3r/PrintConfig.cpp:1543 src/libslic3r/PrintConfig.cpp:1551 +#: src/slic3r/GUI/GUI_Preview.cpp:1480 +msgid "Legend/Estimated printing time" +msgstr "Leyenda/Tiempo de impresión estimado" + +#: src/libslic3r/PrintConfig.cpp:1651 src/libslic3r/PrintConfig.cpp:1659 msgid "Length" msgstr "Largo" -#: src/libslic3r/PrintConfig.cpp:328 +#: src/libslic3r/PrintConfig.cpp:362 msgid "Length of the cooling tube to limit space for cooling moves inside it." msgstr "Longitud del tubo de enfriado para limitar el espacio para movimientos de enfriamiento dentro del mismo." #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:129 +#: src/slic3r/GUI/AboutDialog.cpp:141 msgid "License agreements of all following programs (libraries) are part of application license agreement" msgstr "Los acuerdos de licencia de todos los programas (bibliotecas) siguientes forman parte del acuerdo de licencia de la aplicación" -#: src/libslic3r/PrintConfig.cpp:1561 +#: src/libslic3r/PrintConfig.cpp:1669 msgid "Lift Z" msgstr "Levantar Z" -#: src/libslic3r/PrintConfig.cpp:848 +#: src/libslic3r/PrintConfig.cpp:886 msgid "Line" msgstr "Lineal" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1427 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1558 msgid "Load" msgstr "Cargar" -#: src/slic3r/GUI/MainFrame.cpp:460 +#: src/slic3r/GUI/MainFrame.cpp:1042 msgid "Load a model" msgstr "Cargar un modelo" -#: src/libslic3r/PrintConfig.cpp:3505 +#: src/slic3r/GUI/MainFrame.cpp:1046 +msgid "Load an model saved with imperial units" +msgstr "Cargar un modelo guardado con unidades imperiales" + +#: src/slic3r/GUI/MainFrame.cpp:1058 +msgid "Load an SL1 archive" +msgstr "Cargar un archivo SL1" + +#: src/libslic3r/PrintConfig.cpp:3710 msgid "Load and store settings at the given directory. This is useful for maintaining different profiles or including configurations from a network storage." msgstr "Cargar y almacenar configuraciones en el directorio dado. Esto es útil para mantener diferentes perfiles o incluir configuraciones desde un almacenamiento de red." -#: src/libslic3r/PrintConfig.cpp:3489 +#: src/libslic3r/PrintConfig.cpp:3688 msgid "Load config file" msgstr "Cargar archivo de configuración" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:120 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:113 msgid "Load Config from ini/amf/3mf/gcode and merge" msgstr "Carga Configuración desde ini/amf/3mf/gcode y mezcla" -#: src/slic3r/GUI/MainFrame.cpp:467 +#: src/slic3r/GUI/MainFrame.cpp:1058 msgid "Load configuration from project file" msgstr "Cargar configuración desde archivo de proyecto" -#: src/libslic3r/PrintConfig.cpp:3490 +#: src/libslic3r/PrintConfig.cpp:3689 msgid "Load configuration from the specified file. It can be used more than once to load options from multiple files." msgstr "Cargar la configuración desde el archivo especificado. Se puede usar más de una vez para cargar opciones de varios archivos." -#: src/slic3r/GUI/MainFrame.cpp:464 +#: src/slic3r/GUI/MainFrame.cpp:1055 msgid "Load exported configuration file" msgstr "Cargar archivo de configuración exportado" -#: src/slic3r/GUI/Plater.cpp:1395 -msgid "Load File" -msgstr "Cargar Archivo" - -#: src/slic3r/GUI/Plater.cpp:1399 -msgid "Load Files" -msgstr "Cargar Archivos" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1879 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2038 msgid "Load Part" msgstr "Cargar pieza" -#: src/slic3r/GUI/MainFrame.cpp:471 +#: src/slic3r/GUI/MainFrame.cpp:1062 msgid "Load presets from a bundle" msgstr "Cargar preajustes de un paquete" -#: src/slic3r/GUI/Plater.cpp:4575 +#: src/slic3r/GUI/Plater.cpp:4627 msgid "Load Project" msgstr "Cargar Proyecto" -#: src/slic3r/GUI/BedShapeDialog.cpp:102 +#: src/slic3r/GUI/BedShapeDialog.cpp:243 msgid "Load shape from STL..." msgstr "Cargar forma desde STL..." -#: src/slic3r/GUI/BedShapeDialog.cpp:182 src/slic3r/GUI/BedShapeDialog.cpp:261 +#: src/slic3r/GUI/BedShapeDialog.cpp:325 src/slic3r/GUI/BedShapeDialog.cpp:405 msgid "Load..." msgstr "Cargar..." @@ -4071,19 +4713,27 @@ msgstr "Cargar..." msgid "loaded" msgstr "cargado" -#: src/slic3r/GUI/Plater.cpp:2426 +#: src/slic3r/GUI/Plater.cpp:2388 msgid "Loaded" msgstr "Cargado" -#: src/slic3r/GUI/Plater.cpp:2273 +#: src/slic3r/GUI/Plater.cpp:2216 msgid "Loading" msgstr "Carga" -#: src/slic3r/GUI/GUI_App.cpp:474 +#: src/slic3r/GUI/GUI_App.cpp:797 +msgid "Loading configuration" +msgstr "Cargando configuración" + +#: src/slic3r/GUI/Plater.cpp:2226 +msgid "Loading file" +msgstr "Cargando archivo" + +#: src/slic3r/GUI/GUI_App.cpp:1125 msgid "Loading of a mode view" msgstr "Carga de modo de vista" -#: src/slic3r/GUI/GUI_App.cpp:466 +#: src/slic3r/GUI/GUI_App.cpp:1120 msgid "Loading of current presets" msgstr "Cargando los preajustes actuales" @@ -4092,101 +4742,117 @@ msgstr "Cargando los preajustes actuales" msgid "Loading repaired model" msgstr "Cargando modelo reparado" -#: src/libslic3r/PrintConfig.cpp:607 +#: src/libslic3r/PrintConfig.cpp:643 msgid "Loading speed" msgstr "Velocidad de carga" -#: src/libslic3r/PrintConfig.cpp:615 +#: src/libslic3r/PrintConfig.cpp:651 msgid "Loading speed at the start" msgstr "Velocidad de carga al inicio" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:63 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:106 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:69 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:112 msgid "Local coordinates" msgstr "Coordenadas locales" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:48 msgid "Lock supports under new islands" msgstr "Bloquear soportes bajo nuevas islas" -#: src/slic3r/GUI/Tab.cpp:3252 +#: src/slic3r/GUI/Tab.cpp:3689 msgid "LOCKED LOCK" msgstr "CANDADO CERRADO" -#: src/slic3r/GUI/Tab.cpp:3280 +#: src/slic3r/GUI/Tab.cpp:3717 msgid "LOCKED LOCK icon indicates that the settings are the same as the system (or default) values for the current option group" msgstr "El icono de CANDADO BLOQUEADO indica que los ajustes son los mismos que los valores del sistema (por defecto) para el grupo de opciones actual" -#: src/slic3r/GUI/Tab.cpp:3296 +#: src/slic3r/GUI/Tab.cpp:3733 msgid "LOCKED LOCK icon indicates that the value is the same as the system (or default) value." msgstr "El icono de CANDADO BLOQUEADO indica que el valor es el mismo que el del sistema (por defecto)" -#: src/libslic3r/PrintConfig.cpp:3508 +#: src/libslic3r/PrintConfig.cpp:3713 msgid "Logging level" msgstr "Nivel de registro" -#: src/libslic3r/PrintConfig.cpp:1695 +#: src/libslic3r/PrintConfig.cpp:1810 msgid "Loops (minimum)" msgstr "Bucles (mínimo)" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:206 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:208 msgid "Lower Layer" msgstr "Capa inferior" -#: src/slic3r/GUI/Tab.cpp:2188 src/slic3r/GUI/Tab.cpp:2273 -#: src/libslic3r/PrintConfig.cpp:1129 src/libslic3r/PrintConfig.cpp:1146 -#: src/libslic3r/PrintConfig.cpp:1163 src/libslic3r/PrintConfig.cpp:1179 -#: src/libslic3r/PrintConfig.cpp:1189 src/libslic3r/PrintConfig.cpp:1199 -#: src/libslic3r/PrintConfig.cpp:1209 +#: src/slic3r/GUI/Tab.cpp:2346 src/slic3r/GUI/Tab.cpp:2442 +#: src/libslic3r/PrintConfig.cpp:1202 src/libslic3r/PrintConfig.cpp:1237 +#: src/libslic3r/PrintConfig.cpp:1254 src/libslic3r/PrintConfig.cpp:1271 +#: src/libslic3r/PrintConfig.cpp:1287 src/libslic3r/PrintConfig.cpp:1297 +#: src/libslic3r/PrintConfig.cpp:1307 src/libslic3r/PrintConfig.cpp:1317 msgid "Machine limits" msgstr "Límites de la máquina" -#: src/slic3r/GUI/Plater.cpp:166 +#: src/slic3r/GUI/Tab.cpp:3667 +msgid "Machine limits are not set, therefore the print time estimate may not be accurate." +msgstr "Los límites de la máquina no están establecidos, por lo tanto, el tiempo estimado de impresión puede no ser exacto." + +#: src/slic3r/GUI/Tab.cpp:3660 +msgid "Machine limits will be emitted to G-code and used to estimate print time." +msgstr "Los límites de la máquina se emitirán al código G y se utilizarán para calcular el tiempo de impresión." + +#: src/slic3r/GUI/Tab.cpp:3663 +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 "Los límites máquina NO se emitirán al código G, sin embargo, se utilizarán para estimar el tiempo de impresión, que por lo tanto puede no ser exacto ya que la impresora puede aplicar un conjunto diferente de límites de la máquina." + +#: src/slic3r/GUI/Plater.cpp:172 msgid "Manifold" msgstr "Manifold" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:57 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:56 msgid "Manual editing" msgstr "Edición manual" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:180 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:214 msgid "Masked SLA file exported to %1%" msgstr "Archivo SLA enmascarado exportado a %1%" -#: src/slic3r/GUI/MainFrame.cpp:752 +#: src/slic3r/GUI/MainFrame.cpp:1451 msgid "Mate&rial Settings Tab" msgstr "Pestaña Ajustes de Mate&rial" -#: src/slic3r/GUI/Tab.cpp:3478 src/slic3r/GUI/Tab.cpp:3480 +#: src/slic3r/GUI/Tab.cpp:3894 src/slic3r/GUI/Tab.cpp:3896 msgid "Material" msgstr "Material" -#: src/slic3r/GUI/Tab.hpp:416 +#: src/slic3r/GUI/Tab.hpp:486 msgid "Material Settings" msgstr "Configuraciones del material" -#: src/slic3r/GUI/Plater.cpp:163 +#: src/slic3r/GUI/GLCanvas3D.cpp:4304 src/slic3r/GUI/GLCanvas3D.cpp:4940 +msgid "Material Settings Tab" +msgstr "Pestaña Ajustes de Material" + +#: src/slic3r/GUI/Plater.cpp:169 msgid "Materials" msgstr "Materiales" -#: src/libslic3r/PrintConfig.cpp:1217 src/libslic3r/PrintConfig.cpp:1226 +#: src/libslic3r/PrintConfig.cpp:1325 src/libslic3r/PrintConfig.cpp:1334 msgid "Max" msgstr "Max" -#: src/libslic3r/PrintConfig.cpp:2734 +#: src/libslic3r/PrintConfig.cpp:2898 msgid "Max bridge length" msgstr "Distancia máxima de puentes" -#: src/libslic3r/PrintConfig.cpp:2658 +#: src/libslic3r/PrintConfig.cpp:2812 msgid "Max bridges on a pillar" msgstr "Puentes maximos en un pilar" -#: src/libslic3r/PrintConfig.cpp:2822 +#: src/libslic3r/PrintConfig.cpp:2986 msgid "Max merge distance" msgstr "Distancia máxima de combinación" -#: src/libslic3r/PrintConfig.cpp:2743 +#: src/libslic3r/PrintConfig.cpp:2907 msgid "Max pillar linking distance" msgstr "Distancia máxima de enlace del pilar" @@ -4194,7 +4860,7 @@ msgstr "Distancia máxima de enlace del pilar" msgid "Max print height" msgstr "Máxima altura de impresión" -#: src/libslic3r/PrintConfig.cpp:1237 +#: src/libslic3r/PrintConfig.cpp:1345 msgid "Max print speed" msgstr "Velocidad máxima de impresión" @@ -4202,171 +4868,189 @@ msgstr "Velocidad máxima de impresión" msgid "max PrusaSlicer version" msgstr "máxima versión PrusaSlicer" -#: src/libslic3r/PrintConfig.cpp:1268 +#: src/libslic3r/PrintConfig.cpp:1376 msgid "Max volumetric slope negative" msgstr "Máx. Pendiente volumétrica negativa" -#: src/libslic3r/PrintConfig.cpp:1257 +#: src/libslic3r/PrintConfig.cpp:1365 msgid "Max volumetric slope positive" msgstr "Máx. Pendiente volumétrica positiva" -#: src/libslic3r/PrintConfig.cpp:597 src/libslic3r/PrintConfig.cpp:1247 +#: src/libslic3r/PrintConfig.cpp:633 src/libslic3r/PrintConfig.cpp:1355 msgid "Max volumetric speed" msgstr "Velocidad volumétrica máxima" -#: src/libslic3r/PrintConfig.cpp:2268 +#: src/libslic3r/PrintConfig.cpp:2411 msgid "Maximal bridging distance" msgstr "Distancia máxima de puentes" -#: src/libslic3r/PrintConfig.cpp:2269 +#: src/libslic3r/PrintConfig.cpp:2412 msgid "Maximal distance between supports on sparse infill sections." msgstr "Distancia máxima entre soportes en las secciones con relleno ligero." -#: src/libslic3r/PrintConfig.cpp:1145 +#: src/libslic3r/PrintConfig.cpp:1253 msgid "Maximum acceleration E" msgstr "Máxima aceleración E" -#: src/libslic3r/PrintConfig.cpp:1151 +#: src/libslic3r/PrintConfig.cpp:1259 msgid "Maximum acceleration of the E axis" msgstr "Máxima aceleración en el eje E" -#: src/libslic3r/PrintConfig.cpp:1148 +#: src/libslic3r/PrintConfig.cpp:1256 msgid "Maximum acceleration of the X axis" msgstr "Máxima aceleración en el eje X" -#: src/libslic3r/PrintConfig.cpp:1149 +#: src/libslic3r/PrintConfig.cpp:1257 msgid "Maximum acceleration of the Y axis" msgstr "Máxima aceleración en el eje Y" -#: src/libslic3r/PrintConfig.cpp:1150 +#: src/libslic3r/PrintConfig.cpp:1258 msgid "Maximum acceleration of the Z axis" msgstr "Máxima aceleración en el eje Z" -#: src/libslic3r/PrintConfig.cpp:1198 +#: src/libslic3r/PrintConfig.cpp:1306 msgid "Maximum acceleration when extruding" msgstr "Aceleración máxima al extruir" -#: src/libslic3r/PrintConfig.cpp:1200 +#: src/libslic3r/PrintConfig.cpp:1308 msgid "Maximum acceleration when extruding (M204 S)" msgstr "Aceleración máxima con extrusión (M204 S)" -#: src/libslic3r/PrintConfig.cpp:1208 +#: src/libslic3r/PrintConfig.cpp:1316 msgid "Maximum acceleration when retracting" msgstr "Aceleración máxima al retraer" -#: src/libslic3r/PrintConfig.cpp:1210 +#: src/libslic3r/PrintConfig.cpp:1318 msgid "Maximum acceleration when retracting (M204 T)" msgstr "Aceleración máxima al retraer (M204 T)" -#: src/libslic3r/PrintConfig.cpp:1142 +#: src/libslic3r/PrintConfig.cpp:1250 msgid "Maximum acceleration X" msgstr "Máxima aceleración X" -#: src/libslic3r/PrintConfig.cpp:1143 +#: src/libslic3r/PrintConfig.cpp:1251 msgid "Maximum acceleration Y" msgstr "Máxima aceleración Y" -#: src/libslic3r/PrintConfig.cpp:1144 +#: src/libslic3r/PrintConfig.cpp:1252 msgid "Maximum acceleration Z" msgstr "Máxima aceleración Z" -#: src/slic3r/GUI/Tab.cpp:2222 +#: src/slic3r/GUI/Tab.cpp:2391 msgid "Maximum accelerations" msgstr "Aceleraciones máximas" -#: src/libslic3r/PrintConfig.cpp:2533 src/libslic3r/PrintConfig.cpp:2534 +#: src/libslic3r/PrintConfig.cpp:2676 src/libslic3r/PrintConfig.cpp:2677 msgid "Maximum exposure time" msgstr "Tiempo de exposición máximo" -#: src/libslic3r/PrintConfig.cpp:1128 +#: src/libslic3r/PrintConfig.cpp:1236 msgid "Maximum feedrate E" msgstr "Máximo avance E" -#: src/libslic3r/PrintConfig.cpp:1134 +#: src/libslic3r/PrintConfig.cpp:1242 msgid "Maximum feedrate of the E axis" msgstr "Máximo avance del eje E" -#: src/libslic3r/PrintConfig.cpp:1131 +#: src/libslic3r/PrintConfig.cpp:1239 msgid "Maximum feedrate of the X axis" msgstr "Máximo avance en el eje X" -#: src/libslic3r/PrintConfig.cpp:1132 +#: src/libslic3r/PrintConfig.cpp:1240 msgid "Maximum feedrate of the Y axis" msgstr "Máximo avance del eje Y" -#: src/libslic3r/PrintConfig.cpp:1133 +#: src/libslic3r/PrintConfig.cpp:1241 msgid "Maximum feedrate of the Z axis" msgstr "Máximo avance del eje Z" -#: src/libslic3r/PrintConfig.cpp:1125 +#: src/libslic3r/PrintConfig.cpp:1233 msgid "Maximum feedrate X" msgstr "Máxima velocidad en X" -#: src/libslic3r/PrintConfig.cpp:1126 +#: src/libslic3r/PrintConfig.cpp:1234 msgid "Maximum feedrate Y" msgstr "Máxima velocidad en Y" -#: src/libslic3r/PrintConfig.cpp:1127 +#: src/libslic3r/PrintConfig.cpp:1235 msgid "Maximum feedrate Z" msgstr "Máximo avance en Z" -#: src/slic3r/GUI/Tab.cpp:2217 +#: src/slic3r/GUI/Tab.cpp:2386 msgid "Maximum feedrates" msgstr "Avance máximo" -#: src/libslic3r/PrintConfig.cpp:2556 src/libslic3r/PrintConfig.cpp:2557 +#: src/libslic3r/PrintConfig.cpp:2699 src/libslic3r/PrintConfig.cpp:2700 msgid "Maximum initial exposure time" msgstr "Tiempo de exposición inicial máximo" -#: src/libslic3r/PrintConfig.cpp:1162 +#: src/libslic3r/PrintConfig.cpp:1270 msgid "Maximum jerk E" msgstr "Máximo jerk E" -#: src/libslic3r/PrintConfig.cpp:1168 +#: src/libslic3r/PrintConfig.cpp:1276 msgid "Maximum jerk of the E axis" msgstr "Maximo jerk del eje E" -#: src/libslic3r/PrintConfig.cpp:1165 +#: src/libslic3r/PrintConfig.cpp:1273 msgid "Maximum jerk of the X axis" msgstr "Maximo jerk del eje Y" -#: src/libslic3r/PrintConfig.cpp:1166 +#: src/libslic3r/PrintConfig.cpp:1274 msgid "Maximum jerk of the Y axis" msgstr "Maximo jerk del eje Y" -#: src/libslic3r/PrintConfig.cpp:1167 +#: src/libslic3r/PrintConfig.cpp:1275 msgid "Maximum jerk of the Z axis" msgstr "Maximo jerk del eje Z" -#: src/libslic3r/PrintConfig.cpp:1159 +#: src/libslic3r/PrintConfig.cpp:1267 msgid "Maximum jerk X" msgstr "Máximo jerk X" -#: src/libslic3r/PrintConfig.cpp:1160 +#: src/libslic3r/PrintConfig.cpp:1268 msgid "Maximum jerk Y" msgstr "Máximo jerk Y" -#: src/libslic3r/PrintConfig.cpp:1161 +#: src/libslic3r/PrintConfig.cpp:1269 msgid "Maximum jerk Z" msgstr "Máximo jerk Z" -#: src/libslic3r/PrintConfig.cpp:2660 +#: src/libslic3r/PrintConfig.cpp:2814 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 "Número máximo de puentes que se pueden colocar en un pilar. Los puentes sostienen cabezas de alfiler de puntos de apoyo y se conectan a los pilares como pequeñas ramas." -#: src/libslic3r/PrintConfig.cpp:598 +#: src/libslic3r/PrintConfig.cpp:634 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 "Velocidad volumétrica máxima permitida para este filamento. Limita la velocidad volumétrica máxima de una impresión al mínimo de velocidad volumétrica de impresión y filamento. Establecer en cero para usar sin límite." -#: src/libslic3r/PrintConfig.cpp:3442 +#: 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:3641 msgid "Merge" msgstr "Combinar" -#: src/libslic3r/PrintConfig.cpp:2683 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2660 +msgid "Merge all parts to the one single object" +msgstr "Juntar todas las piezas en un único objeto" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1868 +msgid "Merge objects to the one multipart object" +msgstr "Juntar objeto en un objeto multipieza" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1876 +msgid "Merge objects to the one single object" +msgstr "Juntar objetos en uno solo objeto" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2576 +msgid "Merged" +msgstr "Juntar" + +#: src/libslic3r/PrintConfig.cpp:2847 msgid "Merging bridges or pillars into another pillars can increase the radius. Zero means no increase, one means full increase." msgstr "La fusión de puentes o pilares en otros pilares puede aumentar el radio. Cero significa que no hay aumento, uno significa aumento total." -#: src/libslic3r/SLAPrintSteps.cpp:64 +#: src/libslic3r/SLAPrintSteps.cpp:65 msgid "Merging slices and calculating statistics" msgstr "Mezclando rebanadas y calculando estadísticas" @@ -4374,15 +5058,15 @@ msgstr "Mezclando rebanadas y calculando estadísticas" msgid "Mesh repair failed." msgstr "Reparación de la malla fallida." -#: src/slic3r/GUI/DoubleSlider.cpp:1635 +#: src/slic3r/GUI/DoubleSlider.cpp:1831 msgid "Message for pause print on current layer (%1% mm)." msgstr "Mensaje para pausa de impresión en la capa actual (%1% mm)." -#: src/libslic3r/PrintConfig.cpp:1280 src/libslic3r/PrintConfig.cpp:1289 +#: src/libslic3r/PrintConfig.cpp:1388 src/libslic3r/PrintConfig.cpp:1397 msgid "Min" msgstr "Min" -#: src/libslic3r/PrintConfig.cpp:1298 +#: src/libslic3r/PrintConfig.cpp:1406 msgid "Min print speed" msgstr "Velocidad de impresión mínima" @@ -4390,232 +5074,237 @@ msgstr "Velocidad de impresión mínima" msgid "min PrusaSlicer version" msgstr "mínima versión PrusaSlicer" -#: src/libslic3r/PrintConfig.cpp:2772 +#: src/libslic3r/PrintConfig.cpp:2936 msgid "Minimal distance of the support points" msgstr "Distancia mínima de los puntos de apoyo" -#: src/libslic3r/PrintConfig.cpp:1306 +#: src/libslic3r/PrintConfig.cpp:1414 msgid "Minimal filament extrusion length" msgstr "Longitud mínima de filamento extruido" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:54 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:53 msgid "Minimal points distance" msgstr "Distancia mínima de puntos" -#: src/libslic3r/PrintConfig.cpp:667 +#: src/libslic3r/PrintConfig.cpp:703 msgid "Minimal purge on wipe tower" msgstr "Purga mínima en la torre de limpieza" -#: src/libslic3r/PrintConfig.cpp:187 +#: src/libslic3r/PrintConfig.cpp:221 msgid "Minimum bottom shell thickness" msgstr "Espesor mínimo de la tapa inferior" -#: src/slic3r/GUI/PresetHints.cpp:339 +#: src/slic3r/GUI/PresetHints.cpp:337 msgid "Minimum bottom shell thickness is %1% mm." msgstr "El espesor mínimo de la carcasa inferior es %1% mm." -#: src/libslic3r/PrintConfig.cpp:1512 +#: src/libslic3r/PrintConfig.cpp:1620 msgid "Minimum detail resolution, used to simplify the input file for speeding up the slicing job and reducing memory usage. High-resolution models often carry more detail than printers can render. Set to zero to disable any simplification and use full resolution from input." msgstr "Resolución mínima de detalles, utilizada para simplificar el archivo de entrada para acelerar el trabajo de laminado y reducir el uso de memoria. Los modelos de alta resolución suelen llevar más detalles de los que las impresoras pueden ofrecer. Establézcalo en cero para desactivar cualquier simplificación y usar la resolución completa de la entrada." -#: src/libslic3r/PrintConfig.cpp:2525 src/libslic3r/PrintConfig.cpp:2526 +#: src/libslic3r/PrintConfig.cpp:2668 src/libslic3r/PrintConfig.cpp:2669 msgid "Minimum exposure time" msgstr "Tiempo de exposición mínimo" -#: src/libslic3r/PrintConfig.cpp:1178 +#: src/libslic3r/PrintConfig.cpp:1286 msgid "Minimum feedrate when extruding" msgstr "Avance mínimo al extruir" -#: src/libslic3r/PrintConfig.cpp:1180 +#: src/libslic3r/PrintConfig.cpp:1288 msgid "Minimum feedrate when extruding (M205 S)" msgstr "Avance mínimo al extruir (M205 S)" -#: src/slic3r/GUI/Tab.cpp:2234 +#: src/slic3r/GUI/Tab.cpp:2403 msgid "Minimum feedrates" msgstr "Avances míninos" -#: src/libslic3r/PrintConfig.cpp:2548 src/libslic3r/PrintConfig.cpp:2549 +#: src/libslic3r/PrintConfig.cpp:2691 src/libslic3r/PrintConfig.cpp:2692 msgid "Minimum initial exposure time" msgstr "Tiempo de exposición inicial mínimo" -#: src/slic3r/GUI/Tab.cpp:1069 +#: src/slic3r/GUI/Tab.cpp:1391 msgid "Minimum shell thickness" msgstr "Espesor mínimo de pared" -#: src/libslic3r/PrintConfig.cpp:1787 src/libslic3r/PrintConfig.cpp:1788 +#: src/libslic3r/PrintConfig.cpp:1902 src/libslic3r/PrintConfig.cpp:1903 msgid "Minimum thickness of a top / bottom shell" msgstr "Espesor mínimo de una carcasa superior / inferior" -#: src/libslic3r/PrintConfig.cpp:2146 +#: src/libslic3r/PrintConfig.cpp:2289 msgid "Minimum top shell thickness" msgstr "Espesor mínimo de la carcasa superior" -#: src/slic3r/GUI/PresetHints.cpp:320 +#: src/slic3r/GUI/PresetHints.cpp:318 msgid "Minimum top shell thickness is %1% mm." msgstr "El espesor mínimo de la carcasa superior es %1% mm." -#: src/libslic3r/PrintConfig.cpp:1522 +#: src/libslic3r/PrintConfig.cpp:1630 msgid "Minimum travel after retraction" msgstr "Distancia mínima después de la retracción" -#: src/libslic3r/PrintConfig.cpp:1188 +#: src/libslic3r/PrintConfig.cpp:1296 msgid "Minimum travel feedrate" msgstr "Avance mínimo de movimiento" -#: src/libslic3r/PrintConfig.cpp:1190 +#: src/libslic3r/PrintConfig.cpp:1298 msgid "Minimum travel feedrate (M205 T)" msgstr "Velocidad mínima sin extrusión (M205 T)" -#: src/libslic3r/PrintConfig.cpp:2917 +#: src/libslic3r/PrintConfig.cpp:3081 msgid "Minimum wall thickness of a hollowed model." msgstr "Mínimo de espesor de la pared de un modelo vaciado." -#: src/libslic3r/PrintConfig.cpp:2449 +#: src/libslic3r/PrintConfig.cpp:2592 msgid "Minimum width of features to maintain when doing elephant foot compensation." msgstr "Ancho mínimo característico para mantener al realizar la compensación de pie de elefante." -#: src/slic3r/GUI/Plater.cpp:4002 +#: src/slic3r/GUI/Plater.cpp:3922 msgid "Mirror" msgstr "Reflejar" -#: src/libslic3r/PrintConfig.cpp:2379 +#: src/libslic3r/PrintConfig.cpp:2522 msgid "Mirror horizontally" msgstr "Reflejar horizontalmente" -#: src/slic3r/GUI/GLCanvas3D.cpp:2053 +#: src/slic3r/GUI/GLCanvas3D.cpp:2226 msgid "Mirror Object" msgstr "Reflejar objeto" -#: src/slic3r/GUI/Plater.cpp:4002 +#: src/slic3r/GUI/Plater.cpp:3922 msgid "Mirror the selected object" msgstr "Duplicar el objeto seleccionado" -#: src/slic3r/GUI/Plater.cpp:3995 +#: src/slic3r/GUI/Plater.cpp:3915 msgid "Mirror the selected object along the X axis" msgstr "Duplicar el objeto seleccionado a lo largo del eje X" -#: src/slic3r/GUI/Plater.cpp:3997 +#: src/slic3r/GUI/Plater.cpp:3917 msgid "Mirror the selected object along the Y axis" msgstr "Duplicar el objeto seleccionado a lo largo del eje Y" -#: src/slic3r/GUI/Plater.cpp:3999 +#: src/slic3r/GUI/Plater.cpp:3919 msgid "Mirror the selected object along the Z axis" msgstr "Duplicar el objeto seleccionado a lo largo del eje Z" -#: src/libslic3r/PrintConfig.cpp:2386 +#: src/libslic3r/PrintConfig.cpp:2529 msgid "Mirror vertically" msgstr "Reflejar verticalmente" -#: src/slic3r/Utils/AstroBox.cpp:68 src/slic3r/Utils/OctoPrint.cpp:68 +#: src/slic3r/Utils/AstroBox.cpp:69 src/slic3r/Utils/OctoPrint.cpp:68 #, c-format msgid "Mismatched type of print host: %s" msgstr "Tipo de host de impresión no coincidente: %s" -#: src/libslic3r/ExtrusionEntity.cpp:323 +#: src/libslic3r/ExtrusionEntity.cpp:328 src/libslic3r/ExtrusionEntity.cpp:364 msgid "Mixed" msgstr "Mezclado" -#: src/libslic3r/PrintConfig.cpp:2491 +#: src/libslic3r/PrintConfig.cpp:2634 msgid "ml" msgstr "ml" -#: src/slic3r/GUI/BedShapeDialog.cpp:92 src/slic3r/GUI/ConfigWizard.cpp:218 -#: src/slic3r/GUI/ConfigWizard.cpp:970 src/slic3r/GUI/ConfigWizard.cpp:984 +#: src/slic3r/GUI/BedShapeDialog.cpp:129 src/slic3r/GUI/ConfigWizard.cpp:236 +#: src/slic3r/GUI/ConfigWizard.cpp:1336 src/slic3r/GUI/ConfigWizard.cpp:1350 #: src/slic3r/GUI/ExtruderSequenceDialog.cpp:87 -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:135 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:333 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:94 +#: src/slic3r/GUI/GCodeViewer.cpp:2183 src/slic3r/GUI/GCodeViewer.cpp:2189 +#: src/slic3r/GUI/GCodeViewer.cpp:2197 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:91 -#: src/libslic3r/PrintConfig.cpp:122 src/libslic3r/PrintConfig.cpp:188 -#: src/libslic3r/PrintConfig.cpp:246 src/libslic3r/PrintConfig.cpp:321 -#: src/libslic3r/PrintConfig.cpp:329 src/libslic3r/PrintConfig.cpp:379 -#: src/libslic3r/PrintConfig.cpp:505 src/libslic3r/PrintConfig.cpp:516 -#: src/libslic3r/PrintConfig.cpp:534 src/libslic3r/PrintConfig.cpp:712 -#: src/libslic3r/PrintConfig.cpp:1231 src/libslic3r/PrintConfig.cpp:1292 -#: src/libslic3r/PrintConfig.cpp:1310 src/libslic3r/PrintConfig.cpp:1328 -#: src/libslic3r/PrintConfig.cpp:1384 src/libslic3r/PrintConfig.cpp:1394 -#: src/libslic3r/PrintConfig.cpp:1516 src/libslic3r/PrintConfig.cpp:1524 -#: src/libslic3r/PrintConfig.cpp:1565 src/libslic3r/PrintConfig.cpp:1573 -#: src/libslic3r/PrintConfig.cpp:1583 src/libslic3r/PrintConfig.cpp:1591 -#: src/libslic3r/PrintConfig.cpp:1599 src/libslic3r/PrintConfig.cpp:1682 -#: src/libslic3r/PrintConfig.cpp:1914 src/libslic3r/PrintConfig.cpp:1985 -#: src/libslic3r/PrintConfig.cpp:2019 src/libslic3r/PrintConfig.cpp:2147 -#: src/libslic3r/PrintConfig.cpp:2226 src/libslic3r/PrintConfig.cpp:2233 -#: src/libslic3r/PrintConfig.cpp:2240 src/libslic3r/PrintConfig.cpp:2270 -#: src/libslic3r/PrintConfig.cpp:2280 src/libslic3r/PrintConfig.cpp:2290 -#: src/libslic3r/PrintConfig.cpp:2450 src/libslic3r/PrintConfig.cpp:2484 -#: src/libslic3r/PrintConfig.cpp:2623 src/libslic3r/PrintConfig.cpp:2632 -#: src/libslic3r/PrintConfig.cpp:2641 src/libslic3r/PrintConfig.cpp:2651 -#: src/libslic3r/PrintConfig.cpp:2695 src/libslic3r/PrintConfig.cpp:2705 -#: src/libslic3r/PrintConfig.cpp:2717 src/libslic3r/PrintConfig.cpp:2737 -#: src/libslic3r/PrintConfig.cpp:2747 src/libslic3r/PrintConfig.cpp:2757 -#: src/libslic3r/PrintConfig.cpp:2775 src/libslic3r/PrintConfig.cpp:2790 -#: src/libslic3r/PrintConfig.cpp:2804 src/libslic3r/PrintConfig.cpp:2815 -#: src/libslic3r/PrintConfig.cpp:2828 src/libslic3r/PrintConfig.cpp:2873 -#: src/libslic3r/PrintConfig.cpp:2883 src/libslic3r/PrintConfig.cpp:2892 -#: src/libslic3r/PrintConfig.cpp:2902 src/libslic3r/PrintConfig.cpp:2918 -#: src/libslic3r/PrintConfig.cpp:2942 +#: src/libslic3r/PrintConfig.cpp:82 src/libslic3r/PrintConfig.cpp:93 +#: src/libslic3r/PrintConfig.cpp:124 src/libslic3r/PrintConfig.cpp:222 +#: src/libslic3r/PrintConfig.cpp:280 src/libslic3r/PrintConfig.cpp:355 +#: src/libslic3r/PrintConfig.cpp:363 src/libslic3r/PrintConfig.cpp:413 +#: src/libslic3r/PrintConfig.cpp:541 src/libslic3r/PrintConfig.cpp:552 +#: src/libslic3r/PrintConfig.cpp:570 src/libslic3r/PrintConfig.cpp:748 +#: src/libslic3r/PrintConfig.cpp:1158 src/libslic3r/PrintConfig.cpp:1339 +#: src/libslic3r/PrintConfig.cpp:1400 src/libslic3r/PrintConfig.cpp:1418 +#: src/libslic3r/PrintConfig.cpp:1436 src/libslic3r/PrintConfig.cpp:1492 +#: src/libslic3r/PrintConfig.cpp:1502 src/libslic3r/PrintConfig.cpp:1624 +#: src/libslic3r/PrintConfig.cpp:1632 src/libslic3r/PrintConfig.cpp:1673 +#: src/libslic3r/PrintConfig.cpp:1681 src/libslic3r/PrintConfig.cpp:1691 +#: src/libslic3r/PrintConfig.cpp:1699 src/libslic3r/PrintConfig.cpp:1707 +#: src/libslic3r/PrintConfig.cpp:1790 src/libslic3r/PrintConfig.cpp:2056 +#: src/libslic3r/PrintConfig.cpp:2127 src/libslic3r/PrintConfig.cpp:2161 +#: src/libslic3r/PrintConfig.cpp:2290 src/libslic3r/PrintConfig.cpp:2369 +#: src/libslic3r/PrintConfig.cpp:2376 src/libslic3r/PrintConfig.cpp:2383 +#: src/libslic3r/PrintConfig.cpp:2413 src/libslic3r/PrintConfig.cpp:2423 +#: src/libslic3r/PrintConfig.cpp:2433 src/libslic3r/PrintConfig.cpp:2593 +#: src/libslic3r/PrintConfig.cpp:2627 src/libslic3r/PrintConfig.cpp:2766 +#: src/libslic3r/PrintConfig.cpp:2775 src/libslic3r/PrintConfig.cpp:2784 +#: src/libslic3r/PrintConfig.cpp:2794 src/libslic3r/PrintConfig.cpp:2859 +#: src/libslic3r/PrintConfig.cpp:2869 src/libslic3r/PrintConfig.cpp:2881 +#: src/libslic3r/PrintConfig.cpp:2901 src/libslic3r/PrintConfig.cpp:2911 +#: src/libslic3r/PrintConfig.cpp:2921 src/libslic3r/PrintConfig.cpp:2939 +#: src/libslic3r/PrintConfig.cpp:2954 src/libslic3r/PrintConfig.cpp:2968 +#: src/libslic3r/PrintConfig.cpp:2979 src/libslic3r/PrintConfig.cpp:2992 +#: src/libslic3r/PrintConfig.cpp:3037 src/libslic3r/PrintConfig.cpp:3047 +#: src/libslic3r/PrintConfig.cpp:3056 src/libslic3r/PrintConfig.cpp:3066 +#: src/libslic3r/PrintConfig.cpp:3082 src/libslic3r/PrintConfig.cpp:3106 msgid "mm" msgstr "mm" -#: src/libslic3r/PrintConfig.cpp:1547 src/libslic3r/PrintConfig.cpp:1556 +#: src/libslic3r/PrintConfig.cpp:1655 src/libslic3r/PrintConfig.cpp:1664 msgid "mm (zero to disable)" msgstr "mm (cero para deshabilitar)" -#: src/libslic3r/PrintConfig.cpp:451 src/libslic3r/PrintConfig.cpp:560 -#: src/libslic3r/PrintConfig.cpp:882 src/libslic3r/PrintConfig.cpp:895 -#: src/libslic3r/PrintConfig.cpp:1015 src/libslic3r/PrintConfig.cpp:1041 -#: src/libslic3r/PrintConfig.cpp:1423 src/libslic3r/PrintConfig.cpp:1761 -#: src/libslic3r/PrintConfig.cpp:1883 src/libslic3r/PrintConfig.cpp:1951 -#: src/libslic3r/PrintConfig.cpp:2111 +#: src/libslic3r/PrintConfig.cpp:487 src/libslic3r/PrintConfig.cpp:596 +#: src/libslic3r/PrintConfig.cpp:924 src/libslic3r/PrintConfig.cpp:937 +#: src/libslic3r/PrintConfig.cpp:1059 src/libslic3r/PrintConfig.cpp:1085 +#: src/libslic3r/PrintConfig.cpp:1531 src/libslic3r/PrintConfig.cpp:1876 +#: src/libslic3r/PrintConfig.cpp:2025 src/libslic3r/PrintConfig.cpp:2093 +#: src/libslic3r/PrintConfig.cpp:2254 msgid "mm or %" msgstr "mm o %" -#: src/libslic3r/PrintConfig.cpp:237 src/libslic3r/PrintConfig.cpp:609 -#: src/libslic3r/PrintConfig.cpp:617 src/libslic3r/PrintConfig.cpp:626 -#: src/libslic3r/PrintConfig.cpp:634 src/libslic3r/PrintConfig.cpp:661 -#: src/libslic3r/PrintConfig.cpp:680 src/libslic3r/PrintConfig.cpp:922 -#: src/libslic3r/PrintConfig.cpp:1050 src/libslic3r/PrintConfig.cpp:1135 -#: src/libslic3r/PrintConfig.cpp:1169 src/libslic3r/PrintConfig.cpp:1181 -#: src/libslic3r/PrintConfig.cpp:1191 src/libslic3r/PrintConfig.cpp:1241 -#: src/libslic3r/PrintConfig.cpp:1300 src/libslic3r/PrintConfig.cpp:1433 -#: src/libslic3r/PrintConfig.cpp:1607 src/libslic3r/PrintConfig.cpp:1616 -#: src/libslic3r/PrintConfig.cpp:2028 src/libslic3r/PrintConfig.cpp:2154 +#: 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 +#: src/libslic3r/PrintConfig.cpp:716 src/libslic3r/PrintConfig.cpp:966 +#: src/libslic3r/PrintConfig.cpp:1094 src/libslic3r/PrintConfig.cpp:1167 +#: src/libslic3r/PrintConfig.cpp:1243 src/libslic3r/PrintConfig.cpp:1277 +#: src/libslic3r/PrintConfig.cpp:1289 src/libslic3r/PrintConfig.cpp:1299 +#: src/libslic3r/PrintConfig.cpp:1349 src/libslic3r/PrintConfig.cpp:1408 +#: src/libslic3r/PrintConfig.cpp:1541 src/libslic3r/PrintConfig.cpp:1715 +#: src/libslic3r/PrintConfig.cpp:1724 src/libslic3r/PrintConfig.cpp:2170 +#: src/libslic3r/PrintConfig.cpp:2297 msgid "mm/s" msgstr "mm/s" -#: src/libslic3r/PrintConfig.cpp:462 src/libslic3r/PrintConfig.cpp:904 -#: src/libslic3r/PrintConfig.cpp:1720 src/libslic3r/PrintConfig.cpp:1772 -#: src/libslic3r/PrintConfig.cpp:1995 src/libslic3r/PrintConfig.cpp:2124 +#: src/libslic3r/PrintConfig.cpp:498 src/libslic3r/PrintConfig.cpp:946 +#: src/libslic3r/PrintConfig.cpp:1835 src/libslic3r/PrintConfig.cpp:1887 +#: src/libslic3r/PrintConfig.cpp:2137 src/libslic3r/PrintConfig.cpp:2267 msgid "mm/s or %" msgstr "mm/s o %" -#: src/libslic3r/PrintConfig.cpp:196 src/libslic3r/PrintConfig.cpp:339 -#: src/libslic3r/PrintConfig.cpp:862 src/libslic3r/PrintConfig.cpp:984 -#: src/libslic3r/PrintConfig.cpp:1152 src/libslic3r/PrintConfig.cpp:1201 -#: src/libslic3r/PrintConfig.cpp:1211 src/libslic3r/PrintConfig.cpp:1403 +#: src/libslic3r/PrintConfig.cpp:230 src/libslic3r/PrintConfig.cpp:373 +#: src/libslic3r/PrintConfig.cpp:902 src/libslic3r/PrintConfig.cpp:1028 +#: src/libslic3r/PrintConfig.cpp:1260 src/libslic3r/PrintConfig.cpp:1309 +#: src/libslic3r/PrintConfig.cpp:1319 src/libslic3r/PrintConfig.cpp:1511 msgid "mm/s²" msgstr "mm/s²" -#: src/libslic3r/PrintConfig.cpp:1730 +#: src/libslic3r/PrintConfig.cpp:1845 msgid "mm²" msgstr "mm²" -#: src/libslic3r/PrintConfig.cpp:672 +#: src/libslic3r/PrintConfig.cpp:708 msgid "mm³" msgstr "mm³" -#: src/slic3r/GUI/RammingChart.cpp:81 src/libslic3r/PrintConfig.cpp:601 -#: src/libslic3r/PrintConfig.cpp:1250 +#: src/slic3r/GUI/RammingChart.cpp:81 src/libslic3r/PrintConfig.cpp:637 +#: src/libslic3r/PrintConfig.cpp:1358 msgid "mm³/s" msgstr "mm³/s" -#: src/libslic3r/PrintConfig.cpp:1262 src/libslic3r/PrintConfig.cpp:1273 +#: src/libslic3r/PrintConfig.cpp:1370 src/libslic3r/PrintConfig.cpp:1381 msgid "mm³/s²" msgstr "mm³/s²" -#: src/slic3r/GUI/GUI_App.cpp:820 +#: src/slic3r/GUI/GUI_App.cpp:1512 msgid "Mode" msgstr "&Modo" @@ -4623,7 +5312,7 @@ msgstr "&Modo" msgid "model" msgstr "modelo" -#: src/slic3r/GUI/BedShapeDialog.cpp:251 +#: src/slic3r/GUI/BedShapeDialog.cpp:395 msgid "Model" msgstr "Modelo" @@ -4652,99 +5341,125 @@ msgstr "Reparación del modelo terminada" msgid "Model repaired successfully" msgstr "Modelo reparado exitosamente" -#: src/slic3r/GUI/Tab.cpp:979 +#: src/slic3r/GUI/GUI_App.cpp:1506 src/slic3r/GUI/wxExtensions.cpp:675 +msgctxt "Mode" +msgid "Advanced" +msgstr "Advanzado" + +#: src/slic3r/GUI/Tab.cpp:1241 msgid "Modifications to the current profile will be saved." msgstr "Se guardarán las modificaciones al perfil actual." -#: src/slic3r/GUI/Preset.cpp:247 +#: src/slic3r/GUI/GUI_App.cpp:1425 msgid "modified" msgstr "modificado" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3551 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4014 msgid "Modifier" msgstr "Modificador" -#: src/slic3r/GUI/Tab.cpp:1161 +#: src/slic3r/GUI/Tab.cpp:1491 msgid "Modifiers" msgstr "Modificadores" -#: src/libslic3r/PrintConfig.cpp:2512 +#: src/libslic3r/PrintConfig.cpp:2655 msgid "money/bottle" msgstr "dinero/botella" -#: src/libslic3r/PrintConfig.cpp:762 +#: src/libslic3r/PrintConfig.cpp:798 msgid "money/kg" msgstr "dinero/kg" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1372 +#: src/libslic3r/PrintConfig.cpp:461 +msgid "Monotonic" +msgstr "Monotónico" + +#: src/slic3r/GUI/NotificationManager.cpp:305 +#: src/slic3r/GUI/NotificationManager.cpp:315 +msgid "More" +msgstr "Más" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1219 msgid "Mouse wheel" msgstr "Rueda del ratón" -#: src/slic3r/GUI/GLCanvas3D.cpp:261 +#: src/slic3r/GUI/GLCanvas3D.cpp:249 msgid "Mouse wheel:" msgstr "Rueda del ratón:" -#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:64 msgid "Move" msgstr "Mover" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1372 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1219 msgid "Move clipping plane" msgstr "Mover plano de recorte" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:215 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 msgid "Move current slider thumb Down" msgstr "Mover el control deslizante actual hacia abajo" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:214 +#: 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" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:1059 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:835 msgid "Move drainage hole" msgstr "Mover orificio de drenaje" -#: src/slic3r/GUI/GLCanvas3D.cpp:3505 +#: src/slic3r/GUI/GLCanvas3D.cpp:3810 msgid "Move Object" msgstr "Mover Objeto" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1365 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1212 msgid "Move point" msgstr "Mover punto" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:166 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:160 msgid "Move selection 10 mm in negative X direction" msgstr "Mover la selección 10 mm en dirección X negativa" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:159 msgid "Move selection 10 mm in negative Y direction" msgstr "Mover la selección 10 mm en dirección Y negativa" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:167 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:161 msgid "Move selection 10 mm in positive X direction" msgstr "Mover la selección 10 mm en dirección X positiva" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:158 msgid "Move selection 10 mm in positive Y direction" msgstr "Mover la selección 10 mm en dirección Y positiva" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1097 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:955 msgid "Move support point" msgstr "Mover punto de soporte" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:169 +#: src/slic3r/GUI/GCodeViewer.cpp:2492 +msgid "Movement" +msgstr "Movimiento" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:163 msgid "Movement in camera space" msgstr "Movimiento en el espacio de la cámara" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:168 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:162 msgid "Movement step set to 1 mm" msgstr "Paso de movimiento configurado a 1 mm" -#: src/libslic3r/PrintConfig.cpp:2201 +#: src/libslic3r/PrintConfig.cpp:2344 msgid "Multi material printers may need to prime or purge extruders on tool changes. Extrude the excess material into the wipe tower." msgstr "Las impresoras de varios materiales pueden necesitar cebar o purgar extrusoras en los cambios de herramientas. Extruya el exceso de material en la torre de limpieza." -#: src/slic3r/GUI/Plater.cpp:2360 src/slic3r/GUI/Plater.cpp:2413 +#: src/slic3r/GUI/Plater.cpp:2322 src/slic3r/GUI/Plater.cpp:2375 msgid "Multi-part object detected" msgstr "Objeto de piezas múltiples detectado" @@ -4753,11 +5468,11 @@ msgstr "Objeto de piezas múltiples detectado" msgid "Multiple %s devices found. Please only connect one at a time for flashing." msgstr "Se encontraron múltiples dispositivos %s. Por favor, conecta solo uno a la vez para flashear." -#: src/slic3r/GUI/Tab.cpp:1179 +#: src/slic3r/GUI/Tab.cpp:1509 msgid "Multiple Extruders" msgstr "Múltiples Extrusores" -#: src/slic3r/GUI/Plater.cpp:2410 +#: src/slic3r/GUI/Plater.cpp:2372 msgid "" "Multiple objects were loaded for a multi-material printer.\n" "Instead of considering them as multiple objects, should I consider\n" @@ -4767,36 +5482,41 @@ msgstr "" "En lugar de considerarlos como objetos múltiples, ¿debería considerar\n" "estos archivos para formar un solo objeto que tiene varias partes?" -#: src/libslic3r/PrintConfig.cpp:3439 +#: src/libslic3r/PrintConfig.cpp:3638 msgid "Multiply copies by creating a grid." msgstr "Multiplicar copias creando una rejilla." -#: src/libslic3r/PrintConfig.cpp:3434 +#: src/libslic3r/PrintConfig.cpp:3633 msgid "Multiply copies by this factor." msgstr "Multiplicar las copias por este factor." -#: src/slic3r/GUI/Field.cpp:150 src/slic3r/GUI/OptionsGroup.cpp:580 +#: src/slic3r/GUI/Field.cpp:198 src/slic3r/GUI/OptionsGroup.cpp:715 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:874 msgid "N/A" msgstr "N/A" -#: src/slic3r/GUI/GUI_ObjectList.cpp:270 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:153 +#: src/slic3r/GUI/GUI_ObjectList.cpp:284 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:161 msgid "Name" msgstr "Nombre" -#: src/libslic3r/PrintConfig.cpp:1488 +#: src/libslic3r/PrintConfig.cpp:114 +msgid "Name of the printer" +msgstr "Nombre de la impresora" + +#: src/libslic3r/PrintConfig.cpp:1596 msgid "Name of the printer variant. For example, the printer variants may be differentiated by a nozzle diameter." msgstr "Nombre de la variante de impresora. Por ejemplo, las variantes pueden distinguir diferentes diámetros de boquilla." -#: src/libslic3r/PrintConfig.cpp:1482 +#: src/libslic3r/PrintConfig.cpp:1590 msgid "Name of the printer vendor." msgstr "Nombre del fabricante de la impresora." -#: src/libslic3r/PrintConfig.cpp:1058 +#: src/libslic3r/PrintConfig.cpp:1102 msgid "Name of the profile, from which this profile inherits." msgstr "Nombre del perfil desde que éste hereda." -#: src/libslic3r/PrintConfig.cpp:1630 +#: src/libslic3r/PrintConfig.cpp:1738 msgid "Nearest" msgstr "Más cercano" @@ -4804,14 +5524,30 @@ msgstr "Más cercano" msgid "Network lookup" msgstr "Búsqueda en la red" -#: src/slic3r/GUI/Plater.cpp:2151 +#: src/slic3r/GUI/Preferences.cpp:430 +msgid "New layout, access via settings button in the top menu" +msgstr "Nuevo diseño, acceso a través del botón de configuración en el menú superior" + +#: src/slic3r/GUI/Plater.cpp:2056 msgid "New Project" msgstr "Nuevo proyecto" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:112 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:105 msgid "New project, clear plater" msgstr "Nuevo proyecto, limpiar plataforma" +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:609 +msgid "New Value" +msgstr "Nuevo Valor" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1178 +msgid "New value" +msgstr "Nuevo valor" + +#: src/slic3r/GUI/NotificationManager.hpp:322 +msgid "New version is available." +msgstr "Una nueva versión está disponible." + #: src/slic3r/GUI/UpdateDialogs.cpp:38 #, c-format msgid "New version of %s is available" @@ -4821,23 +5557,23 @@ msgstr "Nueva versión de %s disponible" msgid "New version:" msgstr "Nueva versión:" -#: src/slic3r/GUI/GLCanvas3D.cpp:4673 +#: src/slic3r/GUI/GLCanvas3D.cpp:5089 msgid "Next Redo action: %1%" msgstr "Siguiente acción de Rehacer: %1%" -#: src/slic3r/GUI/GLCanvas3D.cpp:4641 +#: src/slic3r/GUI/GLCanvas3D.cpp:5051 msgid "Next Undo action: %1%" msgstr "Siguiente acción de Deshacer: %1%" -#: src/libslic3r/PrintConfig.cpp:960 +#: src/libslic3r/PrintConfig.cpp:1004 msgid "No extrusion" msgstr "Sin extrusión" -#: src/libslic3r/SLAPrintSteps.cpp:453 +#: src/libslic3r/SLAPrintSteps.cpp:451 msgid "No pad can be generated for this model with the current configuration" msgstr "No se puede generar el pad para este modelo con la configuración actual" -#: src/slic3r/GUI/MainFrame.cpp:784 +#: src/slic3r/GUI/MainFrame.cpp:1485 msgid "No previously sliced file." msgstr "Ningún archivo previamente laminado." @@ -4845,175 +5581,221 @@ msgstr "Ningún archivo previamente laminado." msgid "NO RAMMING AT ALL" msgstr "NO EMPUJAR EN ABSOLUTO" -#: src/libslic3r/PrintConfig.cpp:1857 +#: src/libslic3r/PrintConfig.cpp:1999 msgid "No sparse layers (EXPERIMENTAL)" msgstr "Sin capas dispersas (EXPERIMENTAL)" -#: src/libslic3r/PrintConfig.cpp:2774 +#: src/libslic3r/PrintConfig.cpp:2938 msgid "No support points will be placed closer than this threshold." msgstr "Ningún punto de soporte se colocará más cerca de este umbral." -#: src/slic3r/GUI/UpdateDialogs.cpp:303 +#: src/slic3r/GUI/UpdateDialogs.cpp:304 msgid "No updates available" msgstr "No hay actualizaciones disponibles" -#: src/slic3r/GUI/ConfigWizard.cpp:291 src/slic3r/GUI/ConfigWizard.cpp:574 -#: src/slic3r/GUI/Plater.cpp:499 src/slic3r/GUI/Plater.cpp:639 -#: src/libslic3r/ExtrusionEntity.cpp:309 +#: src/slic3r/GUI/ConfigWizard.cpp:309 src/slic3r/GUI/ConfigWizard.cpp:599 +#: src/slic3r/GUI/Plater.cpp:365 src/slic3r/GUI/Plater.cpp:505 +#: src/libslic3r/ExtrusionEntity.cpp:312 msgid "None" msgstr "Ninguno" -#: src/slic3r/GUI/Tab.cpp:2203 +#: src/slic3r/GUI/Search.cpp:77 src/slic3r/GUI/Tab.cpp:2372 msgid "Normal" msgstr "Normal" -#: src/slic3r/GUI/Plater.cpp:1286 +#: src/slic3r/GUI/Plater.cpp:1177 src/slic3r/GUI/Plater.cpp:1224 msgid "normal mode" msgstr "modo normal" -#: src/libslic3r/Zipper.cpp:46 +#: src/slic3r/GUI/GCodeViewer.cpp:2552 +msgid "Normal mode" +msgstr "Modo normal" + +#: src/libslic3r/miniz_extension.cpp:105 msgid "not a ZIP archive" msgstr "no es un archivo ZIP" -#: src/slic3r/GUI/BedShapeDialog.cpp:223 src/slic3r/GUI/BedShapeDialog.cpp:302 +#: src/slic3r/GUI/BedShapeDialog.cpp:366 src/slic3r/GUI/BedShapeDialog.cpp:446 msgid "Not found:" msgstr "No encontrado:" -#: src/slic3r/GUI/DoubleSlider.cpp:1019 +#: src/slic3r/GUI/DoubleSlider.cpp:1144 msgid "Note" msgstr "Nota" -#: src/slic3r/Utils/AstroBox.cpp:89 +#: src/slic3r/GUI/Tab.cpp:3408 +msgid "Note, that selected preset will be deleted from this/those printer(s) too." +msgstr "Tenga en cuenta que ese ajuste preestablecido seleccionado también se eliminará de esta/esas impresoras." + +#: src/slic3r/GUI/Tab.cpp:3416 +msgid "Note, that this/those printer(s) will be deleted after deleting of the selected preset." +msgstr "Tenga en cuenta que esta(s) impresora(s) se eliminarán después de eliminar el ajuste preestablecido seleccionado." + +#: src/slic3r/GUI/Tab.cpp:2039 +msgid "" +"Note: All parameters from this group are moved to the Physical Printer settings (see changelog).\n" +"\n" +"A new Physical Printer profile is created by clicking on the \"cog\" icon right of the Printer profiles combo box, by selecting the \"Add physical printer\" item in the Printer combo box. The Physical Printer profile editor opens also when clicking on the \"cog\" icon in the Printer settings tab. The Physical Printer profiles are being stored into PrusaSlicer/physical_printer directory." +msgstr "" +"Nota: Todos los parámetros de este grupo se han desplazado a la configuración de Impresora física (consulte el registro de cambios).\n" +"\n" +"Se crea un nuevo perfil de impresora física haciendo clic en el icono de \"engranaje\" a la derecha del cuadro combinado de perfiles de impresora, seleccionando el elemento \"Agregar impresora física\" en el cuadro combinado de impresora. El editor de perfil de Impresora física también se abre al hacer clic en el icono \"engranaje\" en la pestaña Configuración de impresora. Los perfiles de la impresora física se almacenan en el directorio PrusaSlicer/physical_printer." + +#: src/slic3r/Utils/AstroBox.cpp:92 msgid "Note: AstroBox version at least 1.1.0 is required." msgstr "Aviso: Se necesita la versión 1.1.0 o superior de AstroBox." -#: src/slic3r/Utils/FlashAir.cpp:73 +#: src/slic3r/Utils/FlashAir.cpp:76 msgid "Note: FlashAir with firmware 2.00.02 or newer and activated upload function is required." msgstr "Nota: Requiere FlashAir con firmware 2.00.02 o posterior y la función de carga activada." -#: src/slic3r/Utils/OctoPrint.cpp:89 +#: src/slic3r/Utils/OctoPrint.cpp:91 msgid "Note: OctoPrint version at least 1.1.0 is required." msgstr "Nota: Se necesita al menos la versión 1.1.0 de OctoPrint." -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1345 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1192 msgid "Note: some shortcuts work in (non)editing mode only." msgstr "Nota: algunos accesos directos funcionan solo en modo de (no)edición." -#: src/slic3r/GUI/Tab.cpp:1251 src/slic3r/GUI/Tab.cpp:1252 -#: src/slic3r/GUI/Tab.cpp:1540 src/slic3r/GUI/Tab.cpp:1541 -#: src/slic3r/GUI/Tab.cpp:2012 src/slic3r/GUI/Tab.cpp:2013 -#: src/slic3r/GUI/Tab.cpp:2128 src/slic3r/GUI/Tab.cpp:2129 -#: src/slic3r/GUI/Tab.cpp:3535 src/slic3r/GUI/Tab.cpp:3536 +#: src/slic3r/GUI/SavePresetDialog.cpp:151 +msgid "Note: This preset will be replaced after saving" +msgstr "Nota: Este ajuste se reemplazará tras guardar" + +#: src/slic3r/GUI/Tab.cpp:1581 src/slic3r/GUI/Tab.cpp:1582 +#: src/slic3r/GUI/Tab.cpp:1887 src/slic3r/GUI/Tab.cpp:1888 +#: src/slic3r/GUI/Tab.cpp:2221 src/slic3r/GUI/Tab.cpp:2222 +#: src/slic3r/GUI/Tab.cpp:2297 src/slic3r/GUI/Tab.cpp:2298 +#: src/slic3r/GUI/Tab.cpp:3951 src/slic3r/GUI/Tab.cpp:3952 msgid "Notes" msgstr "Notas" -#: src/slic3r/GUI/ConfigWizard.cpp:1751 src/slic3r/GUI/DoubleSlider.cpp:1905 -#: src/slic3r/GUI/DoubleSlider.cpp:1926 src/slic3r/GUI/GUI.cpp:245 +#: src/slic3r/GUI/ConfigWizard.cpp:2237 src/slic3r/GUI/DoubleSlider.cpp:2124 +#: src/slic3r/GUI/DoubleSlider.cpp:2144 src/slic3r/GUI/GUI.cpp:244 msgid "Notice" msgstr "Date cuenta" -#: src/slic3r/GUI/ConfigWizard.cpp:218 +#: src/slic3r/GUI/ConfigWizard.cpp:236 msgid "nozzle" msgstr "boquilla" -#: src/slic3r/GUI/Tab.cpp:1870 src/slic3r/GUI/Tab.cpp:2340 -#: src/libslic3r/PrintConfig.cpp:1326 +#: src/slic3r/GUI/Tab.cpp:1790 +msgid "Nozzle" +msgstr "Boquilla" + +#: src/slic3r/GUI/ConfigWizard.cpp:1392 +msgid "Nozzle and Bed Temperatures" +msgstr "Temperaturas de la Base y la Boquilla" + +#: src/slic3r/GUI/Tab.cpp:2104 src/slic3r/GUI/Tab.cpp:2509 +#: src/libslic3r/PrintConfig.cpp:1434 msgid "Nozzle diameter" msgstr "Diámetro de la boquilla" -#: src/slic3r/GUI/ConfigWizard.cpp:969 +#: src/slic3r/GUI/ConfigWizard.cpp:1335 msgid "Nozzle Diameter:" msgstr "Diámetro de la boquilla:" -#: src/libslic3r/PrintConfig.cpp:650 +#: src/libslic3r/PrintConfig.cpp:2201 +msgid "Nozzle temperature" +msgstr "Temperatura de la boquilla" + +#: src/libslic3r/PrintConfig.cpp:2198 +msgid "Nozzle temperature for layers after the first one. Set this to zero to disable temperature control commands in the output G-code." +msgstr "Temperatura de la boquilla para las capas después de la primera. Ajusta esto a cero para deshabilitar los comandos de control de temperatura en el código G de salida." + +#: src/libslic3r/PrintConfig.cpp:961 +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 "Temperatura de la boquilla para la primera capa. Si deseas controlar la temperatura manualmente durante la impresión, configúralo a cero para deshabilitar las órdenes de control de temperatura en el código G de salida." + +#: src/libslic3r/PrintConfig.cpp:686 msgid "Number of cooling moves" msgstr "Número de movimientos de enfriamiento" -#: src/slic3r/GUI/Tab.cpp:1839 +#: src/slic3r/GUI/Tab.cpp:2073 msgid "Number of extruders of the printer." msgstr "Número de extrusores de la impresora." -#: src/libslic3r/PrintConfig.cpp:1975 +#: src/libslic3r/PrintConfig.cpp:2117 msgid "Number of interface layers to insert between the object(s) and support material." msgstr "Número de capas de interfaz para insertar entre el (los) objeto(s) y el material de soporte." -#: src/libslic3r/PrintConfig.cpp:1697 +#: src/libslic3r/PrintConfig.cpp:1812 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 "Número de vueltas para la falda Si se establece la opción Longitud Mínima de Extrusión, el número de bucles puede ser mayor que el configurado aquí. Ajuste esto a cero para deshabilitar la falda por completo." -#: src/libslic3r/PrintConfig.cpp:2365 +#: src/libslic3r/PrintConfig.cpp:2508 msgid "Number of pixels in" msgstr "Número de píxeles en" -#: src/libslic3r/PrintConfig.cpp:2367 +#: src/libslic3r/PrintConfig.cpp:2510 msgid "Number of pixels in X" msgstr "Número de píxeles en X" -#: src/libslic3r/PrintConfig.cpp:2373 +#: src/libslic3r/PrintConfig.cpp:2516 msgid "Number of pixels in Y" msgstr "Número de píxeles en Y" -#: src/libslic3r/PrintConfig.cpp:176 +#: src/libslic3r/PrintConfig.cpp:210 msgid "Number of solid layers to generate on bottom surfaces." msgstr "Número de capas sólidas para generar en las superficies inferiores." -#: src/libslic3r/PrintConfig.cpp:1781 +#: src/libslic3r/PrintConfig.cpp:1896 msgid "Number of solid layers to generate on top and bottom surfaces." msgstr "Número de capas sólidas para generar en las superficies superior e inferior." -#: src/libslic3r/PrintConfig.cpp:2134 +#: src/libslic3r/PrintConfig.cpp:2277 msgid "Number of solid layers to generate on top surfaces." msgstr "Número de capas sólidas para generar en las superficies superiores." -#: src/libslic3r/PrintConfig.cpp:2518 +#: src/libslic3r/PrintConfig.cpp:2661 msgid "Number of the layers needed for the exposure time fade from initial exposure time to the exposure time" msgstr "El número de capas necesarias para el tiempo de exposición cambie desde el tiempo de exposición inicial hasta el tiempo de exposición" -#: src/slic3r/GUI/Plater.cpp:241 +#: src/slic3r/GUI/Plater.cpp:247 msgid "Number of tool changes" msgstr "Número de cambios de herramienta" -#: src/libslic3r/PrintConfig.cpp:2753 +#: src/slic3r/GUI/Tab.cpp:4127 src/libslic3r/PrintConfig.cpp:2917 msgid "Object elevation" msgstr "Elevación del objeto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2466 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2858 msgid "Object manipulation" msgstr "Manipulación de objetos" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:155 src/libslic3r/GCode.cpp:638 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:163 src/libslic3r/GCode.cpp:623 msgid "Object name" msgstr "Nombre del objeto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3417 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3880 msgid "Object or Instance" msgstr "Objeto o instancia" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1106 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1230 msgid "Object reordered" msgstr "Objetos reordenados" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2479 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2871 msgid "Object Settings to modify" msgstr "Configuraciones de objetos para modificar" -#: src/slic3r/GUI/Plater.cpp:2529 +#: src/slic3r/GUI/Plater.cpp:2491 msgid "Object too large?" msgstr "Objeto demasiado grande?" -#: src/libslic3r/PrintConfig.cpp:2262 +#: src/libslic3r/PrintConfig.cpp:2405 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 "El objeto se utilizará para purgar el nozzle después de un cambio de herramienta para guardar el material que de lo contrario terminaría en la torre de limpieza y disminuir el tiempo de impresión. Los colores de los objetos se mezclarán como resultado." -#: src/slic3r/GUI/Plater.cpp:1194 +#: src/slic3r/GUI/Plater.cpp:1103 msgid "object(s)" msgstr "objeto(s)" -#: src/slic3r/GUI/Plater.cpp:1231 src/slic3r/GUI/Plater.cpp:1245 +#: src/slic3r/GUI/Plater.cpp:1143 src/slic3r/GUI/Plater.cpp:1160 msgid "objects" msgstr "objetos" -#: src/libslic3r/PrintConfig.cpp:429 src/libslic3r/PrintConfig.cpp:855 +#: src/libslic3r/PrintConfig.cpp:465 src/libslic3r/PrintConfig.cpp:893 msgid "Octagram Spiral" msgstr "Octagram Spiral" @@ -5021,64 +5803,101 @@ msgstr "Octagram Spiral" msgid "OctoPrint version" msgstr "Versión de OctoPrint" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3425 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3888 msgid "of a current Object" msgstr "del Objeto actual" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:43 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:42 msgid "Offset" msgstr "Desplazamiento" -#: src/slic3r/GUI/Tab.cpp:1755 +#: src/slic3r/GUI/Preferences.cpp:422 +msgid "Old regular layout with the tab bar" +msgstr "Diseño regular antiguo con la barra de pestañas" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:608 +msgid "Old Value" +msgstr "Valor Antiguo" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1177 +msgid "Old value" +msgstr "Valor antiguo" + +#: src/slic3r/GUI/Preferences.cpp:123 +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 "En OSX, siempre hay una sola instancia de aplicación que se ejecuta de forma predeterminada. Sin embargo, está permitido ejecutar varias instancias de la misma aplicación desde la línea de comandos. En tal caso, esta configuración permitirá solo una instancia." + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:359 #, c-format msgid "On this system, %s uses HTTPS certificates from the system Certificate Store or Keychain." msgstr "En este sistema,%s usa certificados HTTPS del almacén de certificados o llavero." -#: src/slic3r/GUI/DoubleSlider.cpp:950 +#: src/slic3r/GUI/DoubleSlider.cpp:1064 msgid "One layer mode" msgstr "Modo de capa única" -#: src/libslic3r/Print.cpp:1365 +#: src/libslic3r/Print.cpp:1391 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/libslic3r/PrintConfig.cpp:1903 src/libslic3r/PrintConfig.cpp:2676 +#: 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." -#: src/libslic3r/PrintConfig.cpp:1027 +#: src/libslic3r/PrintConfig.cpp:1071 msgid "Only infill where needed" msgstr "Solo rellenar cuando sea necesario" -#: src/slic3r/GUI/Tab.cpp:2373 +#: src/slic3r/GUI/Tab.cpp:2542 msgid "Only lift Z" msgstr "Solo levantar Z" -#: src/libslic3r/PrintConfig.cpp:1570 +#: src/libslic3r/PrintConfig.cpp:1678 msgid "Only lift Z above" msgstr "Solo levantar Z mayor que" -#: src/libslic3r/PrintConfig.cpp:1579 +#: src/libslic3r/PrintConfig.cpp:1687 msgid "Only lift Z below" msgstr "Solo levantar Z menor que" -#: src/libslic3r/PrintConfig.cpp:1348 +#: src/libslic3r/PrintConfig.cpp:1456 msgid "Only retract when crossing perimeters" msgstr "Solo retraer al cruzar perímetros" -#: src/slic3r/GUI/Tab.cpp:1187 +#: src/slic3r/GUI/ConfigWizard.cpp:714 +msgid "Only the following installed printers are compatible with the selected filament:" +msgstr "Solo las siguientes impresoras instaladas son compatibles con el filamento seleccionado:" + +#: src/slic3r/GUI/Tab.cpp:1517 msgid "Ooze prevention" msgstr "Prevención de goteo" -#: src/libslic3r/Print.cpp:1266 +#: src/libslic3r/Print.cpp:1292 msgid "Ooze prevention is currently not supported with the wipe tower enabled." msgstr "La prevención de goteo actualmente no es compatible con la torre de limpieza activa." -#: src/slic3r/GUI/MainFrame.cpp:408 +#: src/slic3r/GUI/MainFrame.cpp:1398 +msgid "Open &PrusaSlicer" +msgstr "Abrir &PrusaSlicer" + +#: src/slic3r/GUI/MainFrame.cpp:1391 +msgid "Open a G-code file" +msgstr "Abrir un archivo código G" + +#: src/slic3r/GUI/MainFrame.cpp:63 src/slic3r/GUI/MainFrame.cpp:77 +#: src/slic3r/GUI/MainFrame.cpp:1262 +msgid "Open a new PrusaSlicer instance" +msgstr "Abrir instancia nueva de PrusaSlicer" + +#: src/slic3r/GUI/MainFrame.cpp:989 msgid "Open a project file" msgstr "Abrir un archivo de proyecto" -#: src/slic3r/GUI/Tab.cpp:1729 +#: src/slic3r/GUI/Plater.cpp:1417 +msgid "Open as project" +msgstr "Abrir como proyecto" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:330 msgid "Open CA certificate file" msgstr "Abrir archivo de certificado CA" @@ -5091,116 +5910,150 @@ msgstr "Abrir la página del registro de cambios" msgid "Open download page" msgstr "Abrir página de descarga" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:113 +#: src/slic3r/GUI/NotificationManager.cpp:742 +msgid "Open Folder." +msgstr "Abrir carpeta." + +#: src/slic3r/Utils/Process.cpp:151 +msgid "Open G-code file:" +msgstr "Abrir archivo código G:" + +#: src/slic3r/GUI/MainFrame.cpp:66 src/slic3r/GUI/MainFrame.cpp:1141 +msgid "Open G-code viewer" +msgstr "Abrir visor código G" + +#: src/slic3r/GUI/MainFrame.cpp:79 +msgid "Open new G-code viewer" +msgstr "Abrir visor código G nuevo" + +#: src/slic3r/GUI/MainFrame.cpp:63 src/slic3r/GUI/MainFrame.cpp:1262 +msgid "Open new instance" +msgstr "Abrir instancia nueva" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:106 msgid "Open project STL/OBJ/AMF/3MF with config, clear plater" msgstr "Abrir proyecto STL/OBJ/AMF/3MF con configuración, limpiar plataforma" -#: src/slic3r/GUI/MainFrame.cpp:693 +#: src/slic3r/GUI/MainFrame.cpp:77 src/slic3r/GUI/MainFrame.cpp:1398 +msgid "Open PrusaSlicer" +msgstr "Abrir PrusaSlicer" + +#: src/slic3r/GUI/MainFrame.cpp:918 src/slic3r/GUI/MainFrame.cpp:1317 #, c-format msgid "Open the %s website in your browser" msgstr "Abrir el sitio web de %s en su navegador" -#: src/slic3r/GUI/MainFrame.cpp:684 +#: src/slic3r/GUI/MainFrame.cpp:909 src/slic3r/GUI/MainFrame.cpp:1308 msgid "Open the Prusa3D drivers download page in your browser" msgstr "Abrir la página de descarga de los controladores Prusa3D en su navegador" -#: src/slic3r/GUI/MainFrame.cpp:686 +#: src/slic3r/GUI/MainFrame.cpp:911 src/slic3r/GUI/MainFrame.cpp:1310 msgid "Open the software releases page in your browser" msgstr "Abre la página de lanzamientos de software en tu navegador" -#: src/slic3r/GUI/Plater.cpp:4040 +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:220 src/slic3r/GUI/Plater.cpp:3961 msgid "Optimize orientation" msgstr "Optimizar la orientación" -#: src/slic3r/GUI/Plater.cpp:2767 +#: src/slic3r/GUI/Plater.cpp:1555 msgid "Optimize Rotation" msgstr "Optimizar Rotación" -#: src/slic3r/GUI/Plater.cpp:4040 +#: src/slic3r/GUI/Plater.cpp:3962 msgid "Optimize the rotation of the object for better print results." msgstr "Optimizar la rotación del objeto para obtener mejores resultados de impresión." -#: src/libslic3r/PrintConfig.cpp:137 +#: src/libslic3r/PrintConfig.cpp:170 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 "Optimiza los movimientos de desplazamiento para minimizar el cruce de perímetros. Esto es principalmente útil con extrusores Bowden que sufren goteo. Esta característica ralentiza tanto la impresión como la generación de código G." -#: src/slic3r/GUI/Tab.cpp:1131 +#: src/slic3r/GUI/GCodeViewer.cpp:2525 src/slic3r/GUI/GUI_Preview.cpp:320 +#: src/slic3r/GUI/GUI_Preview.cpp:333 +msgid "Options" +msgstr "Opciones" + +#: src/slic3r/GUI/Tab.cpp:1460 msgid "Options for support material and raft" msgstr "Opciones de material de soporte y balsa" -#: src/slic3r/GUI/DoubleSlider.cpp:989 +#: src/slic3r/GUI/Mouse3DController.cpp:315 +msgid "Options:" +msgstr "Opciones:" + +#: src/slic3r/GUI/DoubleSlider.cpp:1112 msgid "or press \"+\" key" msgstr "o presiona la tecla \"+\"" -#: src/slic3r/GUI/Plater.cpp:2892 +#: src/slic3r/GUI/Jobs/RotoptimizeJob.cpp:74 msgid "Orientation found." msgstr "Orientación encontrada." -#: src/slic3r/GUI/Plater.cpp:2891 +#: src/slic3r/GUI/Jobs/RotoptimizeJob.cpp:73 msgid "Orientation search canceled." msgstr "Búsqueda de orientación cancelada." -#: src/slic3r/GUI/BedShapeDialog.cpp:84 +#: src/slic3r/GUI/BedShapeDialog.cpp:94 msgid "Origin" msgstr "Origen" -#: src/slic3r/GUI/Tab.cpp:1227 +#: src/slic3r/GUI/Tab.cpp:1557 msgid "Other" msgstr "Otro" -#: src/libslic3r/PrintConfig.cpp:144 src/libslic3r/PrintConfig.cpp:2064 +#: src/libslic3r/PrintConfig.cpp:177 src/libslic3r/PrintConfig.cpp:2206 msgid "Other layers" msgstr "Otras capas" -#: src/slic3r/GUI/ConfigWizard.cpp:856 +#: src/slic3r/GUI/ConfigWizard.cpp:1222 msgid "Other Vendors" msgstr "Otras Marcas" -#: src/slic3r/GUI/Tab.cpp:1238 src/slic3r/GUI/Tab.cpp:3666 +#: src/slic3r/GUI/Tab.cpp:1568 src/slic3r/GUI/Tab.cpp:4085 msgid "Output file" msgstr "Archivo de salida" -#: src/libslic3r/PrintConfig.cpp:3493 +#: src/libslic3r/PrintConfig.cpp:3692 msgid "Output File" msgstr "Archivo de salida" -#: src/libslic3r/PrintConfig.cpp:1363 +#: src/libslic3r/PrintConfig.cpp:1471 msgid "Output filename format" msgstr "Formato de nombre de salida" -#: src/libslic3r/PrintConfig.cpp:3381 +#: src/libslic3r/PrintConfig.cpp:3580 msgid "Output Model Info" msgstr "Información del modelo de salida" -#: src/slic3r/GUI/Tab.cpp:1230 src/slic3r/GUI/Tab.cpp:3665 +#: src/slic3r/GUI/Tab.cpp:1560 src/slic3r/GUI/Tab.cpp:4084 msgid "Output options" msgstr "Opciones de salida" -#: src/slic3r/GUI/GUI_Preview.cpp:239 src/libslic3r/ExtrusionEntity.cpp:312 +#: src/slic3r/GUI/GUI_Preview.cpp:303 src/libslic3r/ExtrusionEntity.cpp:316 +#: src/libslic3r/ExtrusionEntity.cpp:340 msgid "Overhang perimeter" msgstr "Perímetro de voladizos" -#: src/libslic3r/PrintConfig.cpp:2042 +#: src/libslic3r/PrintConfig.cpp:2184 msgid "Overhang threshold" msgstr "Umbral de voladizos" -#: src/slic3r/GUI/Tab.cpp:1215 +#: src/slic3r/GUI/Tab.cpp:1545 msgid "Overlap" msgstr "Superposición" -#: src/slic3r/GUI/MainFrame.cpp:614 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "P&rint Settings Tab" msgstr "Configu&ración de Impresión" -#: src/slic3r/GUI/GUI_ObjectList.cpp:107 src/slic3r/GUI/GUI_ObjectList.cpp:625 -#: src/slic3r/GUI/Plater.cpp:635 src/slic3r/GUI/Tab.cpp:3636 -#: src/slic3r/GUI/Tab.cpp:3637 src/libslic3r/PrintConfig.cpp:2781 -#: src/libslic3r/PrintConfig.cpp:2788 src/libslic3r/PrintConfig.cpp:2802 -#: src/libslic3r/PrintConfig.cpp:2813 src/libslic3r/PrintConfig.cpp:2823 -#: src/libslic3r/PrintConfig.cpp:2845 src/libslic3r/PrintConfig.cpp:2856 -#: src/libslic3r/PrintConfig.cpp:2863 src/libslic3r/PrintConfig.cpp:2870 -#: src/libslic3r/PrintConfig.cpp:2881 src/libslic3r/PrintConfig.cpp:2890 -#: src/libslic3r/PrintConfig.cpp:2899 +#: src/slic3r/GUI/GUI_ObjectList.cpp:105 src/slic3r/GUI/GUI_ObjectList.cpp:664 +#: src/slic3r/GUI/Plater.cpp:501 src/slic3r/GUI/Tab.cpp:4055 +#: src/slic3r/GUI/Tab.cpp:4056 src/slic3r/GUI/Tab.cpp:4127 +#: src/libslic3r/PrintConfig.cpp:2945 src/libslic3r/PrintConfig.cpp:2952 +#: src/libslic3r/PrintConfig.cpp:2966 src/libslic3r/PrintConfig.cpp:2977 +#: src/libslic3r/PrintConfig.cpp:2987 src/libslic3r/PrintConfig.cpp:3009 +#: src/libslic3r/PrintConfig.cpp:3020 src/libslic3r/PrintConfig.cpp:3027 +#: src/libslic3r/PrintConfig.cpp:3034 src/libslic3r/PrintConfig.cpp:3045 +#: src/libslic3r/PrintConfig.cpp:3054 src/libslic3r/PrintConfig.cpp:3063 msgid "Pad" msgstr "Pad" @@ -5208,150 +6061,186 @@ msgstr "Pad" msgid "Pad and Support" msgstr "Pad y soportes" -#: src/libslic3r/PrintConfig.cpp:2855 +#: src/slic3r/GUI/Tab.cpp:4127 src/libslic3r/PrintConfig.cpp:3019 msgid "Pad around object" msgstr "Pad alrededor del objeto" -#: src/libslic3r/PrintConfig.cpp:2862 +#: src/libslic3r/PrintConfig.cpp:3026 msgid "Pad around object everywhere" msgstr "Pad alrededor del objeto en todos lados" -#: src/libslic3r/PrintConfig.cpp:2811 +#: src/libslic3r/PrintConfig.cpp:2975 msgid "Pad brim size" msgstr "Tamaño del borde del pad" -#: src/libslic3r/SLA/Pad.cpp:691 +#: src/libslic3r/SLA/Pad.cpp:532 msgid "Pad brim size is too small for the current configuration." msgstr "El tamaño del borde del pad es demasiado pequeño para la configuración actual." -#: src/libslic3r/PrintConfig.cpp:2898 +#: src/libslic3r/PrintConfig.cpp:3062 msgid "Pad object connector penetration" msgstr "Penetración del conector del objeto al Pad" -#: src/libslic3r/PrintConfig.cpp:2880 +#: src/libslic3r/PrintConfig.cpp:3044 msgid "Pad object connector stride" msgstr "Paso del conector del objeto al Pad" -#: src/libslic3r/PrintConfig.cpp:2889 +#: src/libslic3r/PrintConfig.cpp:3053 msgid "Pad object connector width" msgstr "Anchura del conector del pad al objeto" -#: src/libslic3r/PrintConfig.cpp:2869 +#: src/libslic3r/PrintConfig.cpp:3033 msgid "Pad object gap" msgstr "Espacio del pad con el objeto" -#: src/libslic3r/PrintConfig.cpp:2797 +#: src/libslic3r/PrintConfig.cpp:2961 msgid "Pad wall height" msgstr "Altura de la pared del pad" -#: src/libslic3r/PrintConfig.cpp:2844 +#: src/libslic3r/PrintConfig.cpp:3008 msgid "Pad wall slope" msgstr "Pendiente de la pared del pad" -#: src/libslic3r/PrintConfig.cpp:2787 +#: src/libslic3r/PrintConfig.cpp:2951 msgid "Pad wall thickness" msgstr "Espesor de la pared del pad" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:171 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 msgid "Page Down" msgstr "Page Down" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:170 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 msgid "Page Up" msgstr "Page Up" -#: src/slic3r/GUI/Field.cpp:139 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:33 +msgid "Paint-on supports" +msgstr "Soportes que se pintan" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:178 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:159 +msgid "Paints all facets inside, regardless of their orientation." +msgstr "Pinta todas las caras del interior, independientemente de su orientación." + +#: src/slic3r/GUI/Field.cpp:187 msgid "parameter name" msgstr "nombre del parámetro" -#: src/slic3r/GUI/Field.cpp:243 +#: src/slic3r/GUI/Field.cpp:291 msgid "Parameter validation" msgstr "Validación de parámetros" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3418 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3551 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3881 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4014 msgid "Part" msgstr "Pieza" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2494 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2886 msgid "Part manipulation" msgstr "Manipulación de piezas" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2483 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2875 msgid "Part Settings to modify" msgstr "Configuraciones de piezas para modificar" -#: src/slic3r/GUI/GLCanvas3D.cpp:4514 +#: src/libslic3r/PrintConfig.cpp:138 +msgid "Password" +msgstr "Contraseña" + +#: src/slic3r/GUI/GLCanvas3D.cpp:4880 msgid "Paste" msgstr "Pegar" -#: src/slic3r/GUI/MainFrame.cpp:592 +#: src/slic3r/GUI/MainFrame.cpp:1198 msgid "Paste clipboard" msgstr "Pegar portapapeles" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:133 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:128 msgid "Paste from clipboard" msgstr "Pegar desde el portapapeles" -#: src/slic3r/GUI/Plater.cpp:5606 +#: src/slic3r/GUI/Plater.cpp:5803 msgid "Paste From Clipboard" msgstr "Pegar Desde Portapapeles" -#: src/libslic3r/PrintConfig.cpp:2002 +#: src/libslic3r/PrintConfig.cpp:2144 msgid "Pattern" msgstr "Patrón" -#: src/libslic3r/PrintConfig.cpp:1891 +#: src/libslic3r/PrintConfig.cpp:2033 msgid "Pattern angle" msgstr "Ángulo del patrón" -#: src/libslic3r/PrintConfig.cpp:2016 +#: src/libslic3r/PrintConfig.cpp:2158 msgid "Pattern spacing" msgstr "Espaciado entre patrones" -#: src/libslic3r/PrintConfig.cpp:2004 +#: src/libslic3r/PrintConfig.cpp:2146 msgid "Pattern used to generate support material." msgstr "Patrón utilizado para generar material de soporte." -#: src/slic3r/GUI/Plater.cpp:1261 +#: src/slic3r/GUI/GCodeViewer.cpp:2437 src/slic3r/GUI/GCodeViewer.cpp:2460 +#: src/slic3r/GUI/Plater.cpp:1199 msgid "Pause" msgstr "Pausa" -#: src/slic3r/GUI/DoubleSlider.cpp:1009 +#: src/slic3r/GUI/DoubleSlider.cpp:1133 msgid "Pause print (\"%1%\")" msgstr "Pausar impresión (\"%1%\")" -#: src/slic3r/GUI/GLCanvas3D.cpp:934 src/slic3r/GUI/GLCanvas3D.cpp:943 -#: src/slic3r/GUI/GLCanvas3D.cpp:982 +#: src/slic3r/GUI/Tab.cpp:2209 src/libslic3r/PrintConfig.cpp:1969 +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/slic3r/GUI/Gizmos/GLGizmoCut.cpp:175 +#: 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." + +#: src/slic3r/GUI/GCodeViewer.cpp:2233 +msgid "Percentage" +msgstr "Porcentaje" + +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:177 msgid "Perform cut" msgstr "Realizar corte" -#: src/libslic3r/PrintConfig.cpp:2927 +#: src/libslic3r/PrintConfig.cpp:3091 msgid "Performance vs accuracy of calculation. Lower values may produce unwanted artifacts." msgstr "Rendimiento vs precisión de cálculo. Los valores más bajos pueden producir artefactos no deseados." -#: src/slic3r/GUI/GUI_Preview.cpp:237 src/libslic3r/ExtrusionEntity.cpp:310 +#: src/slic3r/GUI/GUI_Preview.cpp:301 src/libslic3r/ExtrusionEntity.cpp:314 +#: src/libslic3r/ExtrusionEntity.cpp:336 msgid "Perimeter" msgstr "Perímetro" -#: src/libslic3r/PrintConfig.cpp:1408 +#: src/libslic3r/PrintConfig.cpp:1516 msgid "Perimeter extruder" msgstr "Extrusor para perímetros" -#: src/slic3r/GUI/PresetHints.cpp:165 +#: src/slic3r/GUI/PresetHints.cpp:164 msgid "perimeters" msgstr "perímetros" -#: src/libslic3r/PrintConfig.cpp:1399 src/libslic3r/PrintConfig.cpp:1417 -#: src/libslic3r/PrintConfig.cpp:1430 src/libslic3r/PrintConfig.cpp:1440 +#: src/libslic3r/PrintConfig.cpp:1507 src/libslic3r/PrintConfig.cpp:1525 +#: src/libslic3r/PrintConfig.cpp:1538 src/libslic3r/PrintConfig.cpp:1548 msgid "Perimeters" msgstr "Perímetros" -#: src/slic3r/GUI/ConfigWizard.cpp:860 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:159 +msgid "Physical Printer" +msgstr "Impresora Física" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:789 +#: src/slic3r/GUI/PresetComboBoxes.cpp:948 +msgid "Physical printers" +msgstr "Impresoras físicas" + +#: src/slic3r/GUI/ConfigWizard.cpp:1226 #, c-format msgid "Pick another vendor supported by %s" msgstr "Elije otro proveedor compatible con% s" @@ -5360,126 +6249,148 @@ msgstr "Elije otro proveedor compatible con% s" 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:2681 +#: src/libslic3r/PrintConfig.cpp:2822 +msgid "Pillar connection mode" +msgstr "Modo de conexión del pilar" + +#: src/libslic3r/PrintConfig.cpp:2791 +msgid "Pillar diameter" +msgstr "Diámetro del pilar" + +#: src/libslic3r/PrintConfig.cpp:2845 msgid "Pillar widening factor" msgstr "Factor de ensanchamiento del pilar" -#: src/slic3r/GUI/ConfigManipulation.cpp:330 +#: src/slic3r/GUI/ConfigManipulation.cpp:335 msgid "Pinhead diameter should be smaller than the pillar diameter." msgstr "El diámetro de la cabeza del pin debe ser menor que el diámetro del pilar." -#: src/slic3r/GUI/DoubleSlider.cpp:79 +#: src/libslic3r/PrintConfig.cpp:2763 +msgid "Pinhead front diameter" +msgstr "Diámetro frontal de la cabeza" + +#: src/libslic3r/PrintConfig.cpp:2781 +msgid "Pinhead width" +msgstr "Ancho de la cabeza" + +#: src/slic3r/GUI/DoubleSlider.cpp:110 msgid "Place bearings in slots and resume printing" msgstr "Coloca los rodamientos en las ranuras y sigue imprimiendo" -#: src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp:45 +#: src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp:41 msgid "Place on face" msgstr "Colocar en la cara" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:192 src/slic3r/GUI/MainFrame.cpp:204 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:190 src/slic3r/GUI/MainFrame.cpp:340 +#: src/slic3r/GUI/MainFrame.cpp:352 msgid "Plater" msgstr "Plataforma" -#: src/slic3r/GUI/GUI_App.cpp:1085 +#: src/slic3r/GUI/GUI_App.cpp:1877 msgid "Please check and fix your object list." msgstr "Por favor comprueba y soluciona tu lista de objetos." -#: src/slic3r/GUI/Plater.cpp:2312 src/slic3r/GUI/Tab.cpp:2959 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:209 src/slic3r/GUI/Plater.cpp:2255 +#: src/slic3r/GUI/Tab.cpp:3188 msgid "Please check your object list before preset changing." msgstr "Por favor comprueba tu lista de objetos antes de cambiar los ajustes iniciales." -#: src/slic3r/GUI/Plater.cpp:3286 +#: src/slic3r/GUI/Plater.cpp:3089 msgid "Please select the file to reload" msgstr "Por favor selecciona el archivo a volver a cargar" -#: src/slic3r/GUI/AboutDialog.cpp:39 src/slic3r/GUI/AboutDialog.cpp:291 +#: src/slic3r/GUI/AboutDialog.cpp:43 src/slic3r/GUI/AboutDialog.cpp:48 +#: src/slic3r/GUI/AboutDialog.cpp:317 msgid "Portions copyright" msgstr "Porciones del copyright" -#: src/libslic3r/PrintConfig.cpp:2400 +#: src/libslic3r/PrintConfig.cpp:2543 msgid "Portrait" msgstr "Retrato" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:215 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:457 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:223 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:505 msgid "Position" msgstr "Posición" -#: src/slic3r/GUI/Tab.cpp:2367 +#: src/slic3r/GUI/Tab.cpp:2536 msgid "Position (for multi-extruder printers)" msgstr "Posición (para impresoras con múltiples extrusores )" -#: src/libslic3r/PrintConfig.cpp:1623 +#: src/libslic3r/PrintConfig.cpp:1731 msgid "Position of perimeters starting points." msgstr "Posición de los puntos de inicio del perímetro." -#: src/libslic3r/PrintConfig.cpp:2224 +#: src/libslic3r/PrintConfig.cpp:2367 msgid "Position X" msgstr "Posición X" -#: src/libslic3r/PrintConfig.cpp:2231 +#: src/libslic3r/PrintConfig.cpp:2374 msgid "Position Y" msgstr "Posición Y" -#: src/slic3r/GUI/Tab.cpp:1245 src/libslic3r/PrintConfig.cpp:1453 +#: src/slic3r/GUI/Tab.cpp:1575 src/libslic3r/PrintConfig.cpp:1561 msgid "Post-processing scripts" msgstr "Scripts de postprocesamiento" -#: src/slic3r/GUI/MainFrame.cpp:629 +#: src/slic3r/GUI/MainFrame.cpp:1237 msgid "Pre&view" msgstr "Pre&visualizar" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:149 src/slic3r/GUI/Preferences.cpp:10 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:143 src/slic3r/GUI/Preferences.cpp:12 msgid "Preferences" msgstr "Preferencias" -#: src/libslic3r/PrintConfig.cpp:1641 +#: src/libslic3r/PrintConfig.cpp:1749 msgid "Preferred direction of the seam" msgstr "Dirección preferida de la costura" -#: src/libslic3r/PrintConfig.cpp:1652 +#: src/libslic3r/PrintConfig.cpp:1760 msgid "Preferred direction of the seam - jitter" msgstr "Dirección preferida de la unión - jitter" -#: src/libslic3r/PrintObject.cpp:255 +#: src/libslic3r/PrintObject.cpp:261 msgid "Preparing infill" msgstr "Preparando relleno" -#: src/slic3r/GUI/Tab.cpp:2920 -#, c-format -msgid "Preset (%s)" -msgstr "Ajuste inicial (%s)" +#: src/slic3r/GUI/GUI_App.cpp:855 +msgid "Preparing settings tabs" +msgstr "Preparando pestañas de configuración" -#: src/slic3r/GUI/Tab.cpp:3082 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1009 +msgid "Preset \"%1%\" has the following unsaved changes:" +msgstr "El ajuste preestablecido \"%1%\" tiene los siguientes cambios sin guardar:" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1014 +msgid "Preset \"%1%\" is not compatible with the new print profile and it has the following unsaved changes:" +msgstr "El ajuste preestablecido \"%1%\" no es compatible con el nuevo perfil de impresión y tiene los siguientes cambios sin guardar:" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1013 +msgid "Preset \"%1%\" is not compatible with the new printer profile and it has the following unsaved changes:" +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:148 msgid "Preset with name \"%1%\" already exists." msgstr "Ya existe un preset con el nombre \"% 1%\"." -#: src/slic3r/GUI/Tab.cpp:3029 +#: src/slic3r/GUI/SavePresetDialog.cpp:219 msgctxt "PresetName" msgid "Copy" msgstr "Copiar" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:163 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:157 msgid "Press to activate deselection rectangle" msgstr "Presionar para activar el rectángulo de deselección" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:197 -msgid "Press to activate one direction scaling in Gizmo scale" -msgstr "Presiona para activar la escala de una dirección en la escala Gizmo" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:162 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:156 msgid "Press to activate selection rectangle" msgstr "Presionar para activar el rectángulo de selección" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:198 -msgid "" -"Press to scale (in Gizmo scale) or rotate (in Gizmo rotate)\n" -"selected objects around their own center" -msgstr "" -"Presionar para escalar (en escalar Gizmo) o rotar(en rotar Gizmo)\n" -"objetos seleccionados alrededor de su propio centro" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:161 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:155 msgid "" "Press to select multiple objects\n" "or move multiple objects with mouse" @@ -5487,164 +6398,189 @@ msgstr "" "Presiona para seleccionar objetos múltiples\n" "o mover objetos múltiples con el ratón" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:195 -#, no-c-format +#: src/slic3r/GUI/KBShortcutsDialog.cpp:221 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:222 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:231 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:232 msgid "" -"Press to snap by 5% in Gizmo scale\n" -"or to snap by 1mm in Gizmo move" +"Press to speed up 5 times while moving thumb\n" +"with arrow keys or mouse wheel" msgstr "" -"Presiona para ajustar un 5% en escala Gizmo\n" -"o para ajustar cada 1mm en mover Gizmo" +"Presiona para acelerar 5 veces mientras mueves el pulgar\n" +"con teclas de flecha o rueda del ratón" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:211 src/slic3r/GUI/Plater.cpp:4105 -#: src/slic3r/GUI/Tab.cpp:2390 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:212 src/slic3r/GUI/Plater.cpp:4052 +#: src/slic3r/GUI/Tab.cpp:2559 msgid "Preview" msgstr "Previsualización" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:42 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:41 msgid "Preview hollowed and drilled model" msgstr "Vista preliminar del modelo con su interior vaciado y taladrado" -#: src/slic3r/GUI/MainFrame.cpp:790 +#: src/slic3r/GUI/MainFrame.cpp:1491 msgid "Previously sliced file (" msgstr "Archivo anterior laminado (" -#: src/libslic3r/PrintConfig.cpp:1851 +#: src/libslic3r/PrintConfig.cpp:1993 msgid "Prime all printing extruders" msgstr "Cebar todos los extrusores de impresión" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:51 src/slic3r/GUI/Preset.cpp:1521 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:51 src/libslic3r/Preset.cpp:1300 msgid "print" msgstr "imprimir" -#: src/slic3r/GUI/MainFrame.cpp:648 +#: src/slic3r/GUI/GCodeViewer.cpp:2436 src/slic3r/GUI/GCodeViewer.cpp:2451 +msgid "Print" +msgstr "Imprimir" + +#: src/slic3r/GUI/MainFrame.cpp:1258 msgid "Print &Host Upload Queue" msgstr "Cola de subida al &host de impresión" -#: src/libslic3r/PrintConfig.cpp:471 +#: src/libslic3r/PrintConfig.cpp:507 msgid "Print contour perimeters from the outermost one to the innermost one instead of the default inverse order." msgstr "Imprimir perímetros de contorno desde el más externo hasta el más interno en lugar del orden inverso predeterminado." -#: src/slic3r/GUI/ConfigWizard.cpp:952 +#: src/slic3r/GUI/ConfigWizard.cpp:1318 msgid "Print Diameters" msgstr "Diámetros de impresión" -#: src/slic3r/GUI/Tab.cpp:1944 src/slic3r/GUI/Tab.cpp:2123 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:209 src/slic3r/GUI/Tab.cpp:2024 msgid "Print Host upload" msgstr "Subida al host de impresión" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:142 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:138 #: src/slic3r/GUI/PrintHostDialogs.cpp:136 msgid "Print host upload queue" msgstr "Cola de subida al host de impresión" -#: src/slic3r/GUI/DoubleSlider.cpp:970 +#: src/slic3r/GUI/DoubleSlider.cpp:1093 msgid "Print mode" msgstr "Modo de impresión" -#: src/slic3r/GUI/Tab.hpp:328 src/slic3r/GUI/Tab.hpp:431 +#: src/slic3r/GUI/GCodeViewer.cpp:2579 src/slic3r/GUI/GUI_Preview.cpp:1476 +msgid "Print pauses" +msgstr "Pausas de impresión" + +#: src/slic3r/GUI/Tab.hpp:378 src/slic3r/GUI/Tab.hpp:502 msgid "Print Settings" msgstr "Configuración de Impresión" -#: src/slic3r/GUI/Plater.cpp:815 +#: src/slic3r/GUI/Plater.cpp:690 msgid "Print settings" msgstr "Configuración de impresión" -#: src/slic3r/GUI/Tab.cpp:1478 +#: src/slic3r/GUI/GLCanvas3D.cpp:4303 src/slic3r/GUI/GLCanvas3D.cpp:4939 +msgid "Print Settings Tab" +msgstr "Pestaña Ajustes Impresión" + +#: src/slic3r/GUI/Tab.cpp:1824 msgid "Print speed override" msgstr "Anular la velocidad de impresión" -#: src/libslic3r/GCode.cpp:638 +#: src/libslic3r/GCode.cpp:623 msgid "Print z" msgstr "Imprimir z" -#: src/slic3r/GUI/MainFrame.cpp:621 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Print&er Settings Tab" msgstr "Configuración de Impr&esión" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1621 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1750 msgid "Printable" msgstr "Imprimible" -#: src/slic3r/GUI/Plater.cpp:819 +#: src/slic3r/GUI/Plater.cpp:694 msgid "Printer" msgstr "Impresora" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:53 src/slic3r/GUI/Preset.cpp:1525 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:53 src/libslic3r/Preset.cpp:1304 msgid "printer" msgstr "impresora" -#: src/libslic3r/PrintConfig.cpp:2439 src/libslic3r/PrintConfig.cpp:2440 +#: src/libslic3r/PrintConfig.cpp:2582 src/libslic3r/PrintConfig.cpp:2583 msgid "Printer absolute correction" msgstr "Corrección absoluta de la impresora" -#: src/libslic3r/PrintConfig.cpp:2456 src/libslic3r/PrintConfig.cpp:2457 +#: src/libslic3r/PrintConfig.cpp:2599 src/libslic3r/PrintConfig.cpp:2600 msgid "Printer gamma correction" msgstr "Corrección gamma de la impresora" -#: src/slic3r/GUI/Tab.cpp:976 +#: src/slic3r/GUI/Tab.cpp:1294 msgid "printer model" msgstr "modelo de impresora" -#: src/libslic3r/PrintConfig.cpp:1472 +#: src/libslic3r/PrintConfig.cpp:1580 msgid "Printer notes" msgstr "Notas de la impresora" -#: src/libslic3r/PrintConfig.cpp:2431 src/libslic3r/PrintConfig.cpp:2432 -#: src/libslic3r/PrintConfig.cpp:2433 +#: src/libslic3r/PrintConfig.cpp:144 +msgid "Printer preset name" +msgstr "Nombre predeterminado de la impresora" + +#: src/libslic3r/PrintConfig.cpp:2574 src/libslic3r/PrintConfig.cpp:2575 +#: src/libslic3r/PrintConfig.cpp:2576 msgid "Printer scaling correction" msgstr "Corrección de escala de la impresora" -#: src/slic3r/GUI/Tab.hpp:391 +#: src/slic3r/GUI/Tab.hpp:453 msgid "Printer Settings" msgstr "Configuración de la Impresora" +#: src/slic3r/GUI/GLCanvas3D.cpp:4305 src/slic3r/GUI/GLCanvas3D.cpp:4941 +msgid "Printer Settings Tab" +msgstr "Pestaña Ajustes Impresora" + #: src/libslic3r/PrintConfig.cpp:43 src/libslic3r/PrintConfig.cpp:44 msgid "Printer technology" msgstr "Tecnología de la impresora" -#: src/libslic3r/PrintConfig.cpp:1466 +#: src/libslic3r/PrintConfig.cpp:1574 msgid "Printer type" msgstr "Tipo de impresora" -#: src/libslic3r/PrintConfig.cpp:1487 +#: src/libslic3r/PrintConfig.cpp:1595 msgid "Printer variant" msgstr "Modelo de impresora" -#: src/libslic3r/PrintConfig.cpp:1481 +#: src/libslic3r/PrintConfig.cpp:1589 msgid "Printer vendor" msgstr "Fabricante de la impresora" -#: src/libslic3r/Print.cpp:1388 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:476 +msgid "Printer with name \"%1%\" already exists." +msgstr "La impresora con nombre \"%1%\" ya existe." + +#: src/slic3r/GUI/ConfigWizard.cpp:587 +msgid "Printer:" +msgstr "Impresora:" + +#: src/libslic3r/Print.cpp:1414 msgid "Printing with multiple extruders of differing nozzle diameters. If support is to be printed with the current extruder (support_material_extruder == 0 or support_material_interface_extruder == 0), all nozzles have to be of the same diameter." msgstr "Imprimir con múltiples extrusoras de diferentes diámetros de boquilla. Si el soporte debe imprimirse con la extrusora actual (support_material_extruder == 0 o support_material_interface_extruder == 0), todas las boquillas deben ser del mismo diámetro." #. TRN "Processing input_file_basename" -#: src/slic3r/GUI/MainFrame.cpp:849 +#: src/slic3r/GUI/MainFrame.cpp:1550 #, c-format msgid "Processing %s" msgstr "Procesando %s" -#: src/slic3r/GUI/Plater.cpp:2283 -#, c-format -msgid "Processing input file %s" -msgstr "Procesando el archivo de entrada %s" - -#: src/libslic3r/PrintObject.cpp:108 +#: src/libslic3r/PrintObject.cpp:114 msgid "Processing triangulated mesh" msgstr "Procesando malla triangulada" -#: src/slic3r/GUI/Tab.cpp:1259 src/slic3r/GUI/Tab.cpp:1549 -#: src/slic3r/GUI/Tab.cpp:2020 src/slic3r/GUI/Tab.cpp:2136 -#: src/slic3r/GUI/Tab.cpp:3544 src/slic3r/GUI/Tab.cpp:3672 +#: src/slic3r/GUI/Tab.cpp:1589 src/slic3r/GUI/Tab.cpp:1896 +#: src/slic3r/GUI/Tab.cpp:2229 src/slic3r/GUI/Tab.cpp:2305 +#: src/slic3r/GUI/Tab.cpp:3960 src/slic3r/GUI/Tab.cpp:4091 msgid "Profile dependencies" msgstr "Dependencias de perfil" -#: src/slic3r/GUI/ConfigWizard.cpp:566 +#: src/slic3r/GUI/ConfigWizard.cpp:590 msgid "Profile:" msgstr "Perfil:" -#: src/slic3r/GUI/PrintHostDialogs.cpp:150 +#: src/slic3r/GUI/PrintHostDialogs.cpp:148 msgid "Progress" msgstr "Progreso" @@ -5652,23 +6588,35 @@ msgstr "Progreso" msgid "Progress:" msgstr "Progreso:" -#: src/slic3r/GUI/MainFrame.cpp:684 +#: src/slic3r/GUI/MainFrame.cpp:909 src/slic3r/GUI/MainFrame.cpp:1308 msgid "Prusa 3D &Drivers" msgstr "Controladores de Prusa 3&D" -#: src/slic3r/GUI/ConfigWizard.cpp:1995 +#: src/slic3r/GUI/ConfigWizard.cpp:2506 msgid "Prusa FFF Technology Printers" msgstr "Impresoras Prusa de tecnología FFF" -#: src/slic3r/GUI/ConfigWizard.cpp:1998 +#: src/slic3r/GUI/ConfigWizard.cpp:2509 msgid "Prusa MSLA Technology Printers" msgstr "Impresoras Prusa de tecnología MSLA" -#: src/slic3r/GUI/AboutDialog.cpp:260 +#: src/slic3r/Utils/Http.cpp:78 +msgid "PrusaSlicer detected system SSL certificate store in: %1%" +msgstr "PrusaSlicer detectó el almacenamiento de certificados SSL del sistema en: %1%" + +#: src/slic3r/GUI/GUI_Init.cpp:85 src/slic3r/GUI/GUI_Init.cpp:88 +msgid "PrusaSlicer GUI initialization failed" +msgstr "Hubo un error al abrir el GUI de PrusaSlicer" + +#: 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." -#: src/slic3r/GUI/GLCanvas3DManager.cpp:284 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:525 +msgid "PrusaSlicer is closing: Unsaved Changes" +msgstr "PrusaSlicer se está cerrando: Cambios no guardados" + +#: src/slic3r/GUI/OpenGLManager.cpp:259 #, c-format msgid "" "PrusaSlicer requires OpenGL 2.0 capable graphics driver to run correctly, \n" @@ -5681,7 +6629,11 @@ msgstr "" msgid "PrusaSlicer version" msgstr "Versión PrusaSlicer" -#: src/slic3r/GUI/ConfigWizard.cpp:815 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:662 +msgid "PrusaSlicer will remember your action." +msgstr "PrusaSlicer recordará tu acción." + +#: src/slic3r/GUI/ConfigWizard.cpp:1174 msgid "" "PrusaSlicer's user interfaces comes in three variants:\n" "Simple, Advanced, and Expert.\n" @@ -5691,64 +6643,80 @@ msgstr "" "Simple, avanzado y experto.\n" "El modo Simple muestra solo las configuraciones usadas con más frecuencia relevantes para la impresión 3D normal. Los otros dos ofrecen ajustes progresivamente más sofisticados, son adecuados para usuarios avanzados y expertos, respectivamente." -#: src/libslic3r/PrintConfig.cpp:2254 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:668 +msgid "PrusaSlicer: Don't ask me again" +msgstr "PrusaSlicer: No me vuelvas a preguntar" + +#: src/libslic3r/PrintConfig.cpp:2397 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 "La purga después del cambio de herramientas se realizará dentro de los rellenos de este objeto. Esto reduce la cantidad de desperdicio, pero puede resultar en un tiempo de impresión más largo debido a movimientos de viaje adicionales." -#: src/slic3r/GUI/Plater.cpp:544 +#: src/slic3r/GUI/Plater.cpp:410 msgid "Purging volumes" msgstr "Volúmenes de purga" -#: src/libslic3r/PrintConfig.cpp:2207 +#: src/libslic3r/PrintConfig.cpp:2350 msgid "Purging volumes - load/unload volumes" msgstr "Volumen de purga - volumen de carga/descarga" -#: src/libslic3r/PrintConfig.cpp:2214 +#: src/libslic3r/PrintConfig.cpp:2357 msgid "Purging volumes - matrix" msgstr "Volúmenes de purga - matriz" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:44 +#: src/libslic3r/PrintConfig.cpp:1201 +msgid "Purpose of Machine Limits" +msgstr "Propósito de los Límites Máquina" + +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:43 msgid "Quality" msgstr "Calidad" -#: src/slic3r/GUI/Tab.cpp:1080 +#: src/slic3r/GUI/Tab.cpp:1402 msgid "Quality (slower slicing)" msgstr "Calidad (laminado más lento)" -#: src/slic3r/GUI/GLCanvas3D.cpp:273 +#: src/slic3r/GUI/GLCanvas3D.cpp:260 msgid "Quality / Speed" msgstr "Calidad / Velocidad" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1182 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1530 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1536 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1849 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:61 +msgid "Quick" +msgstr "Rápido" + +#: 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 #, c-format msgid "Quick Add Settings (%s)" msgstr "Añadir ajustes rápidos (%s)" -#: src/slic3r/GUI/MainFrame.cpp:512 +#: src/slic3r/GUI/MainFrame.cpp:1113 msgid "Quick Slice" msgstr "Laminado rápido" -#: src/slic3r/GUI/MainFrame.cpp:518 +#: src/slic3r/GUI/MainFrame.cpp:1119 msgid "Quick Slice and Save As" msgstr "Laminado rápido y Guardar como" -#: src/slic3r/GUI/MainFrame.cpp:540 +#: src/slic3r/GUI/MainFrame.cpp:1144 src/slic3r/GUI/MainFrame.cpp:1402 #, c-format msgid "Quit %s" msgstr "Cerrar %s" -#: src/slic3r/GUI/GLCanvas3D.cpp:294 src/libslic3r/PrintConfig.cpp:511 +#: src/slic3r/GUI/GUI_App.cpp:396 +msgid "Quit, I will move my data now" +msgstr "Termino, moveré mis datos ahora" + +#: src/slic3r/GUI/GLCanvas3D.cpp:280 src/libslic3r/PrintConfig.cpp:547 msgid "Radius" msgstr "Radio" -#: src/slic3r/GUI/Tab.cpp:1127 +#: src/slic3r/GUI/Tab.cpp:1456 msgid "Raft" msgstr "Balsa" -#: src/libslic3r/PrintConfig.cpp:1501 +#: src/libslic3r/PrintConfig.cpp:1609 msgid "Raft layers" msgstr "Capas de balsa" @@ -5774,27 +6742,27 @@ msgstr "Espaciado de la linea de empuje" msgid "Ramming line width" msgstr "Ancho de la linea de empuje" -#: src/libslic3r/PrintConfig.cpp:694 +#: src/libslic3r/PrintConfig.cpp:730 msgid "Ramming parameters" msgstr "Parámetros de empuje" -#: src/slic3r/GUI/Tab.cpp:1505 +#: src/slic3r/GUI/Tab.cpp:1850 msgid "Ramming settings" msgstr "Ajustes de empuje" -#: src/libslic3r/PrintConfig.cpp:1629 +#: src/libslic3r/PrintConfig.cpp:1737 msgid "Random" msgstr "Aleatorio" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:94 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:96 msgid "Range" msgstr "Rango" -#: src/libslic3r/SLAPrintSteps.cpp:65 +#: src/libslic3r/SLAPrintSteps.cpp:66 msgid "Rasterizing layers" msgstr "Rastrerizando capas" -#: src/slic3r/GUI/MainFrame.cpp:596 +#: src/slic3r/GUI/MainFrame.cpp:1202 msgid "Re&load from disk" msgstr "Recargar desde e&l disco" @@ -5806,210 +6774,243 @@ msgstr "Reconfigurar" msgid "Ready" msgstr "Listo" -#: src/slic3r/GUI/Plater.cpp:3115 +#: src/slic3r/GUI/Plater.cpp:2915 msgid "Ready to slice" msgstr "Preparado para laminar" -#: src/slic3r/GUI/MainFrame.cpp:669 src/libslic3r/PrintConfig.cpp:1632 +#: src/slic3r/GUI/MainFrame.cpp:966 src/slic3r/GUI/MainFrame.cpp:1286 +#: src/libslic3r/PrintConfig.cpp:1740 msgid "Rear" msgstr "Trasera" -#: src/slic3r/GUI/MainFrame.cpp:669 +#: src/slic3r/GUI/MainFrame.cpp:966 src/slic3r/GUI/MainFrame.cpp:1286 msgid "Rear View" msgstr "Vista trasera" -#: src/slic3r/GUI/MainFrame.cpp:413 +#: src/slic3r/GUI/MainFrame.cpp:994 msgid "Recent projects" msgstr "Proy&ectos recientes" -#: src/slic3r/GUI/PresetHints.cpp:263 +#: src/slic3r/GUI/PresetHints.cpp:262 #, c-format msgid "Recommended object thin wall thickness for layer height %.2f and" msgstr "Espesor de pared delgada del objeto recomendado para una altura de capa %.2f y" -#: src/slic3r/GUI/PresetHints.cpp:274 +#: src/slic3r/GUI/PresetHints.cpp:273 msgid "Recommended object thin wall thickness: Not available due to excessively small extrusion width." msgstr "Espesor de pared delgada del objeto recomendada: No disponible debido al ancho de extrusión excesivamente pequeño." -#: src/slic3r/GUI/PresetHints.cpp:247 +#: src/slic3r/GUI/PresetHints.cpp:246 msgid "Recommended object thin wall thickness: Not available due to invalid layer height." msgstr "Grosor recomendado de la pared del objeto recomendado: no disponible debido a la altura de capa no válida." -#: src/slic3r/GUI/GUI_App.cpp:450 src/slic3r/GUI/GUI_App.cpp:459 +#: src/slic3r/GUI/GUI_App.cpp:1102 src/slic3r/GUI/GUI_App.cpp:1115 msgid "Recreating" msgstr "Recreando" -#: src/slic3r/GUI/BedShapeDialog.cpp:73 +#: src/slic3r/GUI/BedShapeDialog.cpp:141 msgid "Rectangular" msgstr "Rectangular" -#: src/libslic3r/PrintConfig.cpp:425 src/libslic3r/PrintConfig.cpp:843 -#: src/libslic3r/PrintConfig.cpp:2009 +#: src/libslic3r/PrintConfig.cpp:460 src/libslic3r/PrintConfig.cpp:881 +#: src/libslic3r/PrintConfig.cpp:2151 msgid "Rectilinear" msgstr "Rectilíneo" -#: src/libslic3r/PrintConfig.cpp:2010 +#: src/libslic3r/PrintConfig.cpp:2152 msgid "Rectilinear grid" msgstr "Rejilla rectilínea" -#: src/slic3r/GUI/GLCanvas3D.cpp:4657 src/slic3r/GUI/KBShortcutsDialog.cpp:131 -#: src/slic3r/GUI/MainFrame.cpp:584 +#: src/slic3r/GUI/GLCanvas3D.cpp:5067 src/slic3r/GUI/KBShortcutsDialog.cpp:126 +#: src/slic3r/GUI/MainFrame.cpp:1190 msgid "Redo" msgstr "Rehacer" -#: src/slic3r/GUI/GLCanvas3D.cpp:4065 +#: src/slic3r/GUI/GLCanvas3D.cpp:4382 #, c-format msgid "Redo %1$d Action" msgid_plural "Redo %1$d Actions" msgstr[0] "Rehacer %1$d Acción" msgstr[1] "Rehacer %1$d Acciones" -#: src/slic3r/GUI/GLCanvas3D.cpp:4047 +#: src/slic3r/GUI/GLCanvas3D.cpp:4361 msgid "Redo History" msgstr "Rehacer Historia" -#: src/slic3r/GUI/Tab.cpp:1098 +#: src/slic3r/GUI/Tab.cpp:1426 msgid "Reducing printing time" msgstr "Reduciendo el tiempo de impresión" -#: src/slic3r/GUI/Plater.cpp:3452 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:327 +msgid "Refresh Printers" +msgstr "Actualizar lista de impresoras" + +#: src/libslic3r/PrintConfig.cpp:145 +msgid "Related printer preset name" +msgstr "Nombre predeterminado de la impresora relacionada" + +#: src/slic3r/GUI/Plater.cpp:3257 msgid "Reload all from disk" msgstr "Recargar todo desde el disco" -#: src/slic3r/GUI/ConfigWizard.cpp:798 src/slic3r/GUI/GUI_ObjectList.cpp:1664 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3956 src/slic3r/GUI/Plater.cpp:3225 -#: src/slic3r/GUI/Plater.cpp:3934 src/slic3r/GUI/Plater.cpp:3963 +#: src/slic3r/GUI/ConfigWizard.cpp:1157 src/slic3r/GUI/GUI_ObjectList.cpp:1793 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4439 src/slic3r/GUI/Plater.cpp:3028 +#: src/slic3r/GUI/Plater.cpp:3852 src/slic3r/GUI/Plater.cpp:3881 msgid "Reload from disk" msgstr "Recargar desde el disco" -#: src/slic3r/GUI/Plater.cpp:3339 +#: src/slic3r/GUI/Plater.cpp:3142 msgid "Reload from:" msgstr "Recargar desde:" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:134 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:129 msgid "Reload plater from disk" msgstr "Recargar la base desde el disco" -#: src/slic3r/GUI/MainFrame.cpp:597 +#: src/slic3r/GUI/MainFrame.cpp:1203 msgid "Reload the plater from disk" msgstr "Cargar la base del disco" -#: src/slic3r/GUI/Plater.cpp:3963 +#: src/slic3r/GUI/Plater.cpp:3881 msgid "Reload the selected object from disk" msgstr "Recargar el objeto seleccionado del disco" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1664 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3956 src/slic3r/GUI/Plater.cpp:3934 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1793 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4439 src/slic3r/GUI/Plater.cpp:3852 msgid "Reload the selected volumes from disk" msgstr "Vuelve a cargar los volúmenes seleccionados desde el disco" -#: src/slic3r/GUI/Preferences.cpp:39 +#: src/slic3r/GUI/GCodeViewer.cpp:2442 src/slic3r/GUI/GCodeViewer.cpp:2445 +msgid "Remaining time" +msgstr "Tiempo restante" + +#: src/slic3r/GUI/GUI_App.cpp:720 src/slic3r/GUI/UnsavedChangesDialog.cpp:653 +msgid "Remember my choice" +msgstr "Recordar mi elección" + +#: src/slic3r/GUI/Preferences.cpp:52 msgid "Remember output directory" msgstr "Recordar el directorio de salida" -#: src/slic3r/GUI/Tab.cpp:3121 +#: src/slic3r/GUI/MainFrame.cpp:166 +msgid "Remember to check for updates at https://github.com/prusa3d/PrusaSlicer/releases" +msgstr "Recuerda buscar actualizaciones en https://github.com/prusa3d/PrusaSlicer/releases" + +#: src/slic3r/GUI/Tab.cpp:3386 msgid "remove" msgstr "eliminar" -#: src/slic3r/GUI/BedShapeDialog.cpp:190 src/slic3r/GUI/BedShapeDialog.cpp:269 -#: src/slic3r/GUI/Tab.cpp:3124 +#: src/slic3r/GUI/BedShapeDialog.cpp:333 src/slic3r/GUI/BedShapeDialog.cpp:413 +#: src/slic3r/GUI/Tab.cpp:3423 msgid "Remove" msgstr "Eliminar" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:48 msgid "Remove all holes" msgstr "Elimina todos los huecos" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:51 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:50 msgid "Remove all points" msgstr "Eliminar todos los puntos" -#: src/slic3r/GUI/GLCanvas3D.cpp:246 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:52 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:35 +msgid "Remove all selection" +msgstr "Eliminar toda la selección" + +#: src/slic3r/GUI/GLCanvas3D.cpp:239 msgid "Remove detail" msgstr "Retirar detalle" -#: src/slic3r/GUI/Plater.cpp:879 -msgid "Remove device" -msgstr "Eliminar dispositivo" - #: src/slic3r/GUI/ExtruderSequenceDialog.cpp:182 msgid "Remove extruder from sequence" msgstr "Retirar extrusor de la secuencia" -#: src/slic3r/GUI/GLCanvas3D.cpp:4537 src/slic3r/GUI/Plater.cpp:3942 +#: src/slic3r/GUI/GLCanvas3D.cpp:4903 src/slic3r/GUI/Plater.cpp:3860 msgid "Remove instance" msgstr "Retirar una copia" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:160 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:154 msgid "Remove Instance of the selected object" msgstr "Retirar instancia del objeto seleccionado" -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:153 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:161 msgid "Remove layer range" msgstr "Retirar rango de capas" -#: src/slic3r/GUI/Plater.cpp:3942 +#: src/slic3r/GUI/Plater.cpp:3860 msgid "Remove one instance of the selected object" msgstr "Eliminar una instancia del objeto seleccionado" -#: src/slic3r/GUI/GUI_ObjectSettings.cpp:95 +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:98 msgid "Remove parameter" msgstr "Eliminar parámetro" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1364 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1211 msgid "Remove point" msgstr "Retirar punto" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1367 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1214 msgid "Remove point from selection" msgstr "Retirar punto de selección" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:47 msgid "Remove selected holes" msgstr "Elimina huecos seleccionados" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:50 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1371 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1218 msgid "Remove selected points" msgstr "Eliminar puntos seleccionados" -#: src/slic3r/GUI/Plater.cpp:3931 src/slic3r/GUI/Plater.cpp:3953 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:51 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:34 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:368 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:378 +msgid "Remove selection" +msgstr "Eliminar selección" + +#: src/slic3r/GUI/Plater.cpp:3849 src/slic3r/GUI/Plater.cpp:3871 msgid "Remove the selected object" msgstr "Eliminar el objeto seleccionado" -#: src/slic3r/GUI/ConfigWizard.cpp:453 +#: src/slic3r/GUI/ConfigWizard.cpp:456 msgid "Remove user profiles (a snapshot will be taken beforehand)" msgstr "Eliminar perfiles de usuario (se tomará una instantánea de antemano)" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1636 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1765 msgid "Rename" msgstr "Renombrar" -#: src/slic3r/GUI/GUI_ObjectList.cpp:551 +#: src/slic3r/GUI/GUI_ObjectList.cpp:589 msgid "Rename Object" msgstr "Renombrar Objeto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:551 +#: src/slic3r/GUI/GUI_ObjectList.cpp:589 msgid "Rename Sub-object" msgstr "Renombrar Sub-Objeto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3803 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4266 msgid "Renaming" msgstr "Renombrar" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:115 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:150 msgid "Renaming of the G-code after copying to the selected destination folder has failed. Current path is %1%.tmp. Please try exporting again." msgstr "El cambio de nombre del código G después de copiar en la carpeta de destino seleccionada ha fallado. La ruta actual es %1%.tmp. Intenta exportar de nuevo." -#: src/libslic3r/PrintConfig.cpp:3515 +#: src/slic3r/GUI/Preferences.cpp:255 +msgid "Render" +msgstr "Renderizar" + +#: src/libslic3r/PrintConfig.cpp:3720 msgid "Render with a software renderer" msgstr "Renderizar con un software renderizador" -#: src/libslic3r/PrintConfig.cpp:3516 +#: src/libslic3r/PrintConfig.cpp:3721 msgid "Render with a software renderer. The bundled MESA software renderer is loaded instead of the default OpenGL driver." msgstr "Render con un software de renderizado. El procesador de software MESA incluido se carga en lugar del controlador OpenGL predeterminado." -#: src/slic3r/GUI/MainFrame.cpp:911 src/libslic3r/PrintConfig.cpp:3447 +#: src/slic3r/GUI/MainFrame.cpp:1612 src/libslic3r/PrintConfig.cpp:3646 msgid "Repair" msgstr "Reparar" @@ -6033,38 +7034,38 @@ msgstr "El archivo 3MF reparado no contiene ningún volumen" msgid "Repairing model by the Netfabb service" msgstr "Reparar el modelo mediante el servicio de Netfabb" -#: src/slic3r/GUI/MainFrame.cpp:524 +#: src/slic3r/GUI/MainFrame.cpp:1125 msgid "Repeat last quick slice" msgstr "Repetir el último laminado rápido" -#: src/slic3r/GUI/MainFrame.cpp:524 +#: src/slic3r/GUI/MainFrame.cpp:1125 msgid "Repeat Last Quick Slice" msgstr "Repetir el último laminado rápido" -#: src/slic3r/GUI/Tab.cpp:3083 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:477 msgid "Replace?" msgstr "¿Reemplazar?" -#: src/slic3r/GUI/MainFrame.cpp:703 +#: src/slic3r/GUI/MainFrame.cpp:928 src/slic3r/GUI/MainFrame.cpp:1327 msgid "Report an I&ssue" msgstr "Informar de un &problema" -#: src/slic3r/GUI/MainFrame.cpp:703 +#: src/slic3r/GUI/MainFrame.cpp:928 src/slic3r/GUI/MainFrame.cpp:1327 #, c-format msgid "Report an issue on %s" msgstr "Reportar un problema a %s" -#: src/slic3r/Utils/PresetUpdater.cpp:713 +#: src/slic3r/Utils/PresetUpdater.cpp:733 #, c-format msgid "requires max. %s" msgstr "requiere max. %s" -#: src/slic3r/Utils/PresetUpdater.cpp:710 +#: src/slic3r/Utils/PresetUpdater.cpp:730 #, c-format msgid "requires min. %s" msgstr "requiere min. %s" -#: src/slic3r/Utils/PresetUpdater.cpp:705 +#: src/slic3r/Utils/PresetUpdater.cpp:726 #, c-format msgid "requires min. %s and max. %s" msgstr "requiere un min. %s y un max. %s" @@ -6073,270 +7074,300 @@ msgstr "requiere un min. %s y un max. %s" msgid "Rescan" msgstr "Rescanear" -#: src/slic3r/GUI/Tab.cpp:1906 -msgid "Rescan serial ports" -msgstr "Vuelver a examinar los puertos serie" - -#: src/slic3r/GUI/GLCanvas3D.cpp:313 +#: src/slic3r/GUI/GLCanvas3D.cpp:299 msgid "Reset" msgstr "Reset" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1373 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1220 msgid "Reset clipping plane" msgstr "Restablecer plano de recorte" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:51 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:59 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:43 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:50 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:26 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:58 msgid "Reset direction" msgstr "Restablecer dirección" -#: src/slic3r/GUI/Plater.cpp:2723 +#: src/slic3r/GUI/Plater.cpp:2684 msgid "Reset Project" msgstr "Reiniciar Proyecto" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:363 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:372 msgid "Reset rotation" msgstr "Reiniciar rotación" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:385 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:394 msgid "Reset Rotation" msgstr "Reiniciar rotación" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:397 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:399 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:407 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:409 msgid "Reset scale" msgstr "Reiniciar escala" -#: src/slic3r/GUI/GLCanvas3D.cpp:252 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:136 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:118 +msgid "Reset selection" +msgstr "Reiniciar selección" + +#: src/slic3r/GUI/GLCanvas3D.cpp:243 msgid "Reset to base" msgstr "Reiniciar a la base" -#: src/slic3r/GUI/Tab.cpp:2394 +#: src/slic3r/GUI/Tab.cpp:2564 msgid "Reset to Filament Color" msgstr "Reiniciar Filament Color" -#: src/libslic3r/PrintConfig.cpp:1511 +#: src/libslic3r/PrintConfig.cpp:1619 msgid "Resolution" msgstr "Resolución" -#: src/libslic3r/PrintConfig.cpp:1529 +#: src/libslic3r/PrintConfig.cpp:1637 msgid "Retract amount before wipe" msgstr "Retracta cantidad antes de limpiar" -#: src/libslic3r/PrintConfig.cpp:1537 +#: src/libslic3r/PrintConfig.cpp:1645 msgid "Retract on layer change" msgstr "Retraer en el cambio de capa" -#: src/slic3r/GUI/Tab.cpp:1324 src/slic3r/GUI/Tab.cpp:1383 -#: src/slic3r/GUI/Tab.cpp:2370 +#: src/slic3r/GUI/GCodeViewer.cpp:2494 src/slic3r/GUI/Tab.cpp:1670 +#: src/slic3r/GUI/Tab.cpp:2539 msgid "Retraction" msgstr "Retracción" -#: src/libslic3r/PrintConfig.cpp:1523 +#: src/libslic3r/PrintConfig.cpp:1631 msgid "Retraction is not triggered when travel moves are shorter than this length." msgstr "La retracción no se activa cuando los movimientos de desplazamiento son más cortos que esta longitud." -#: src/libslic3r/PrintConfig.cpp:1544 +#: src/libslic3r/PrintConfig.cpp:1652 msgid "Retraction Length" msgstr "Longitud de retracción" -#: src/libslic3r/PrintConfig.cpp:1552 +#: src/libslic3r/PrintConfig.cpp:1660 msgid "Retraction Length (Toolchange)" msgstr "Longitud de retracción (cambio de herramienta)" -#: src/libslic3r/PrintConfig.cpp:1604 src/libslic3r/PrintConfig.cpp:1605 +#: src/libslic3r/PrintConfig.cpp:1712 src/libslic3r/PrintConfig.cpp:1713 msgid "Retraction Speed" msgstr "Velocidad de retracción" -#: src/slic3r/GUI/Tab.cpp:2386 +#: src/slic3r/GUI/Tab.cpp:2555 msgid "Retraction when tool is disabled (advanced settings for multi-extruder setups)" msgstr "Retracción cuando la herramienta está desactivada (configuraciones avanzadas para configuraciones de extrusores múltiples )" -#: src/slic3r/GUI/GUI_Preview.cpp:254 +#: src/slic3r/GUI/GCodeViewer.cpp:2528 src/slic3r/GUI/GUI_Preview.cpp:336 +#: src/slic3r/GUI/GUI_Preview.cpp:1472 msgid "Retractions" msgstr "Retracciones" -#: src/slic3r/GUI/MainFrame.cpp:673 +#: src/slic3r/GUI/Preferences.cpp:198 +msgid "Reverse direction of zoom with mouse wheel" +msgstr "Revertir zoom con la rueda del ratón" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1861 src/slic3r/GUI/Plater.cpp:4886 +msgid "Revert conversion from imperial units" +msgstr "Revertir la conversión de unidades imperiales" + +#: src/slic3r/GUI/MainFrame.cpp:970 src/slic3r/GUI/MainFrame.cpp:1290 msgid "Right" msgstr "Derecha" -#: src/slic3r/GUI/GUI_ObjectList.cpp:402 +#: src/slic3r/GUI/GUI_ObjectList.cpp:449 msgid "Right button click the icon to change the object printable property" msgstr "Clic con el botón derecho en el icono para cambiar la propiedad imprimible del objeto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:396 +#: src/slic3r/GUI/GUI_ObjectList.cpp:443 msgid "Right button click the icon to change the object settings" msgstr "Clic del botón derecho en el ícono para cambiar los ajustes del objeto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:359 +#: src/slic3r/GUI/GUI_ObjectList.cpp:406 msgid "Right button click the icon to fix STL through Netfabb" msgstr "Clic del botón derecho en el ícono para arreglar el STL a través de Netfabb" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1364 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1211 msgid "Right click" msgstr "Click derecho" -#: src/slic3r/GUI/GLCanvas3D.cpp:243 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:31 +msgid "Right mouse button" +msgstr "Botón derecho del ratón" + +#: src/slic3r/GUI/GLCanvas3D.cpp:237 msgid "Right mouse button:" msgstr "Botón derecho del ratón:" -#: src/slic3r/GUI/MainFrame.cpp:673 +#: src/slic3r/GUI/MainFrame.cpp:970 src/slic3r/GUI/MainFrame.cpp:1290 msgid "Right View" msgstr "Vista derecha" -#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:449 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:480 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:499 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:517 -#: src/libslic3r/PrintConfig.cpp:3451 +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:513 +#: 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:3650 msgid "Rotate" msgstr "Girar" -#: src/libslic3r/PrintConfig.cpp:3456 +#: src/libslic3r/PrintConfig.cpp:3655 msgid "Rotate around X" msgstr "Rotar alrededor del eje X" -#: src/libslic3r/PrintConfig.cpp:3461 +#: src/libslic3r/PrintConfig.cpp:3660 msgid "Rotate around Y" msgstr "Rotar alrededor del eje Y" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:170 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:172 msgid "Rotate lower part upwards" msgstr "Poner patas arriba" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:170 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 msgid "Rotate selection 45 degrees CCW" msgstr "Gira la selección 45 grados en sentido antihorario" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:171 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 msgid "Rotate selection 45 degrees CW" msgstr "Gira la selección 45 grados en sentido horario" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:216 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:458 -#: src/slic3r/GUI/Mouse3DController.cpp:304 -#: src/slic3r/GUI/Mouse3DController.cpp:321 +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:210 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:224 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:506 +#: src/slic3r/GUI/Mouse3DController.cpp:288 +#: src/slic3r/GUI/Mouse3DController.cpp:309 msgid "Rotation" msgstr "Rotación" -#: src/libslic3r/PrintConfig.cpp:3457 +#: src/libslic3r/PrintConfig.cpp:3656 msgid "Rotation angle around the X axis in degrees." msgstr "Ángulo de rotación alrededor del eje X en grados." -#: src/libslic3r/PrintConfig.cpp:3462 +#: src/libslic3r/PrintConfig.cpp:3661 msgid "Rotation angle around the Y axis in degrees." msgstr "Ángulo de rotación alrededor del eje Y en grados." -#: src/libslic3r/PrintConfig.cpp:3452 +#: src/libslic3r/PrintConfig.cpp:3651 msgid "Rotation angle around the Z axis in degrees." msgstr "Ángulo de rotación alrededor del eje Z en grados." -#: src/slic3r/GUI/GUI_App.cpp:797 +#: src/slic3r/GUI/GUI_App.cpp:1474 #, c-format msgid "Run %s" msgstr "Ejecutar %s" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:128 -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:478 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:163 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:520 msgid "Running post-processing scripts" msgstr "Ejecutando scripts de post-procesamiento" #: src/slic3r/GUI/RammingChart.cpp:76 src/slic3r/GUI/WipeTowerDialog.cpp:83 -#: src/libslic3r/PrintConfig.cpp:644 src/libslic3r/PrintConfig.cpp:688 -#: src/libslic3r/PrintConfig.cpp:703 src/libslic3r/PrintConfig.cpp:2408 -#: src/libslic3r/PrintConfig.cpp:2417 src/libslic3r/PrintConfig.cpp:2527 -#: src/libslic3r/PrintConfig.cpp:2535 src/libslic3r/PrintConfig.cpp:2543 -#: src/libslic3r/PrintConfig.cpp:2550 src/libslic3r/PrintConfig.cpp:2558 -#: src/libslic3r/PrintConfig.cpp:2566 +#: src/libslic3r/PrintConfig.cpp:680 src/libslic3r/PrintConfig.cpp:724 +#: src/libslic3r/PrintConfig.cpp:739 src/libslic3r/PrintConfig.cpp:2551 +#: src/libslic3r/PrintConfig.cpp:2560 src/libslic3r/PrintConfig.cpp:2670 +#: src/libslic3r/PrintConfig.cpp:2678 src/libslic3r/PrintConfig.cpp:2686 +#: src/libslic3r/PrintConfig.cpp:2693 src/libslic3r/PrintConfig.cpp:2701 +#: src/libslic3r/PrintConfig.cpp:2709 msgid "s" msgstr "$" -#: src/slic3r/GUI/MainFrame.cpp:481 src/slic3r/GUI/MainFrame.cpp:750 +#: src/slic3r/GUI/MainFrame.cpp:1072 src/slic3r/GUI/MainFrame.cpp:1449 msgid "S&end G-code" msgstr "&Enviar código G" -#: src/slic3r/GUI/MainFrame.cpp:750 +#: src/slic3r/GUI/MainFrame.cpp:1449 msgid "S&end to print" msgstr "E&nviar para imprimir" -#. TRN Preset -#: src/slic3r/GUI/Tab.cpp:3417 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:642 +msgid "Save" +msgstr "Guardar" + +#: src/slic3r/GUI/SavePresetDialog.cpp:72 #, c-format msgid "Save %s as:" msgstr "Guardar %s como:" -#: src/slic3r/GUI/MainFrame.cpp:826 +#: src/slic3r/GUI/MainFrame.cpp:1527 #, c-format msgid "Save %s file as:" msgstr "Guardar archivo %s como:" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1046 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:912 msgid "Save changes?" msgstr "¿Guardar cambios?" -#: src/libslic3r/PrintConfig.cpp:3386 +#: src/libslic3r/PrintConfig.cpp:3585 msgid "Save config file" msgstr "Guardar archivo de configuración" -#: src/slic3r/GUI/MainFrame.cpp:925 +#: src/slic3r/GUI/MainFrame.cpp:1626 msgid "Save configuration as:" msgstr "Guardar la configuración como:" -#: src/libslic3r/PrintConfig.cpp:3387 +#: src/libslic3r/PrintConfig.cpp:3586 msgid "Save configuration to the specified file." msgstr "Guarda la configuración al archivo especificado." #. TRN "Save current Settings" -#: src/slic3r/GUI/Tab.cpp:133 +#: src/slic3r/GUI/Tab.cpp:203 #, c-format msgid "Save current %s" msgstr "Guardar lo actual %s" -#: src/slic3r/GUI/MainFrame.cpp:446 +#: src/slic3r/GUI/MainFrame.cpp:1028 msgid "Save current project file" msgstr "Guardar el proyecto actual como" -#: src/slic3r/GUI/MainFrame.cpp:450 src/slic3r/GUI/MainFrame.cpp:452 +#: src/slic3r/GUI/MainFrame.cpp:1032 src/slic3r/GUI/MainFrame.cpp:1034 msgid "Save current project file as" msgstr "Guardar archivo de proyecto actual como" -#: src/slic3r/GUI/Plater.cpp:2604 +#: src/slic3r/GUI/Plater.cpp:2566 msgid "Save file as:" msgstr "Guardar archivo como:" -#: src/slic3r/GUI/Plater.cpp:4839 +#: src/slic3r/GUI/Plater.cpp:4975 msgid "Save G-code file as:" msgstr "Guardar archivo Código G como:" -#: src/slic3r/GUI/MainFrame.cpp:899 +#: src/slic3r/GUI/MainFrame.cpp:1600 msgid "Save OBJ file (less prone to coordinate errors than STL) as:" msgstr "Guardar archivo OBJ (menos propenso a errores de coordinación que STL) como:" -#: src/slic3r/GUI/Tab.hpp:443 +#: src/slic3r/GUI/SavePresetDialog.cpp:190 +#: src/slic3r/GUI/SavePresetDialog.cpp:196 msgid "Save preset" msgstr "Guardar ajuste inicial" -#: src/slic3r/GUI/MainFrame.cpp:980 +#: src/slic3r/GUI/MainFrame.cpp:1681 msgid "Save presets bundle as:" msgstr "Guarde el conjunto de ajustes iniciales como:" -#: src/slic3r/GUI/MainFrame.cpp:450 src/slic3r/GUI/MainFrame.cpp:452 +#: src/slic3r/GUI/MainFrame.cpp:1032 src/slic3r/GUI/MainFrame.cpp:1034 msgid "Save Project &as" msgstr "Gu&ardar proyecto como" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:114 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:107 msgid "Save project (3mf)" msgstr "Guardar proyecto (3mf)" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:115 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:108 msgid "Save project as (3mf)" msgstr "Guarda el proyecto como (3mf)" -#: src/slic3r/GUI/Plater.cpp:4839 +#: src/slic3r/GUI/Plater.cpp:4975 msgid "Save SL1 file as:" msgstr "Guardar archivo SL1 como:" -#: src/slic3r/GUI/MainFrame.cpp:838 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:744 +msgid "Save the selected options to preset \"%1%\"." +msgstr "Guardar las opciones seleccionadas al ajuste \"%1%\"." + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:740 +msgid "Save the selected options." +msgstr "Guardar las opciones seleccionadas." + +#: src/slic3r/GUI/MainFrame.cpp:1539 msgid "Save zip file as:" msgstr "Guardar archivo zip como:" @@ -6346,159 +7377,188 @@ msgstr "Guardar archivo zip como:" msgid "Saving mesh into the 3MF container failed." msgstr "Error al guardar la malla en el contenedor 3MF." -#: src/slic3r/GUI/Gizmos/GLGizmoScale.cpp:47 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:230 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:500 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:518 -#: src/libslic3r/PrintConfig.cpp:3466 +#: src/slic3r/GUI/Gizmos/GLGizmoScale.cpp:78 +#: 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:3665 msgid "Scale" msgstr "Escalar" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:459 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:507 msgid "Scale factors" msgstr "Factores de escala" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:196 -msgid "" -"Scale selection to fit print volume\n" -"in Gizmo scale" -msgstr "" -"Redimensiona para ajustar el volumen de impresión\n" -"en escala Gizmo" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1724 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1852 msgid "Scale the selected object to fit the print volume" msgstr "Escala los objetos seleccionados para ajustarse al volumen de impresión" -#: src/libslic3r/PrintConfig.cpp:3475 +#: src/libslic3r/PrintConfig.cpp:3674 msgid "Scale to Fit" msgstr "Escalar para Adaptarse" -#: src/slic3r/GUI/Selection.cpp:939 +#: src/slic3r/GUI/Selection.cpp:988 msgid "Scale To Fit" msgstr "Escalar para Adaptarse" -#: src/libslic3r/PrintConfig.cpp:3476 +#: src/libslic3r/PrintConfig.cpp:3675 msgid "Scale to fit the given volume." msgstr "Escalar para ajustarse al volumen dado." -#: src/slic3r/GUI/GUI_ObjectList.cpp:1724 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1852 msgid "Scale to print volume" msgstr "Escalar al volumen de impresión" -#: src/libslic3r/PrintConfig.cpp:3467 +#: src/libslic3r/PrintConfig.cpp:3666 msgid "Scaling factor or percentage." msgstr "Factor de escalado o porcentaje." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:505 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:545 msgid "Scheduling upload to `%1%`. See Window -> Print Host Upload Queue" msgstr "Subida planificada a `%1%`. Mira Ventana -> Sube a la cola del gestor de impresión" -#: src/libslic3r/PrintConfig.cpp:1621 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:46 +msgid "Seam painting" +msgstr "Pintado de la costura" + +#: src/libslic3r/PrintConfig.cpp:1729 msgid "Seam position" msgstr "Posición de la costura" -#: src/libslic3r/PrintConfig.cpp:1642 +#: src/libslic3r/PrintConfig.cpp:1750 msgid "Seam preferred direction" msgstr "Dirección de la costura" -#: src/libslic3r/PrintConfig.cpp:1651 +#: src/libslic3r/PrintConfig.cpp:1759 msgid "Seam preferred direction jitter" msgstr "Dirección preferida de unión jitter" +#: src/slic3r/GUI/MainFrame.cpp:1207 +msgid "Searc&h" +msgstr "Busca&r" + +#: src/slic3r/GUI/GLCanvas3D.cpp:4402 src/slic3r/GUI/GLCanvas3D.cpp:4957 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:130 src/slic3r/GUI/Search.cpp:426 +msgid "Search" +msgstr "Buscar" + +#: src/slic3r/GUI/ImGuiWrapper.cpp:803 src/slic3r/GUI/Search.cpp:460 +msgid "Search in English" +msgstr "Buscar en Inglés" + +#: src/slic3r/GUI/MainFrame.cpp:1216 +msgid "Search in settings" +msgstr "Buscar en los ajustes" + +#: src/slic3r/GUI/Tab.cpp:222 +msgid "Search in settings [%1%]" +msgstr "Buscar en ajustes [%1%]" + #: src/slic3r/GUI/BonjourDialog.cpp:218 msgid "Searching for devices" msgstr "Buscando dispositivos" -#: src/slic3r/GUI/Plater.cpp:2858 +#: src/slic3r/GUI/Jobs/RotoptimizeJob.cpp:41 msgid "Searching for optimal orientation" msgstr "Buscando la orientación óptima" -#: src/slic3r/GUI/GUI_App.cpp:1103 +#: src/slic3r/GUI/NotificationManager.hpp:321 +msgid "See more." +msgstr "Ver más." + +#: src/slic3r/GUI/NotificationManager.hpp:322 +msgid "See Releases page." +msgstr "Consultar página de lanzamientos." + +#: src/slic3r/GUI/GUI_App.cpp:1895 msgid "Select a gcode file:" msgstr "Seleccione un archivo gcode:" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:126 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:121 msgid "Select all objects" msgstr "Seleccionar todos los objetos" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1370 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1217 msgid "Select all points" msgstr "Seleccionar todos los puntos" -#: src/slic3r/GUI/ConfigWizard.cpp:1976 +#: src/slic3r/GUI/ConfigWizard.cpp:2487 msgid "Select all standard printers" msgstr "Selecciona todas las impresoras estándar" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1368 +#: src/slic3r/GUI/Plater.cpp:1422 +msgid "Select an action to apply to the file" +msgstr "Selecciona una acción para aplicar al archivo" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1215 msgid "Select by rectangle" msgstr "Seleccionar mediante rectángulo" -#: src/slic3r/GUI/MainFrame.cpp:944 src/slic3r/GUI/MainFrame.cpp:1006 +#: src/slic3r/GUI/MainFrame.cpp:1645 src/slic3r/GUI/MainFrame.cpp:1707 msgid "Select configuration to load:" msgstr "Seleccione la configuración para cargar:" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:82 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:88 msgid "Select coordinate space, in which the transformation will be performed." msgstr "Escoge el espacio de coordenadas en el que se realizará la transformación." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3971 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4458 msgid "Select extruder number:" msgstr "Selecciona el número de extrusores:" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:138 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:134 msgid "Select Filament Settings Tab" msgstr "Seleccionar pestaña de configuración de filamento" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:136 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:132 msgid "Select Plater Tab" msgstr "Seleccionar pestaña de la Base de impresión" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:137 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:133 msgid "Select Print Settings Tab" msgstr "Seleccione la pestaña Configuración de impresión" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:139 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:135 msgid "Select Printer Settings Tab" msgstr "Selecciona pestaña de ajustes de impresora" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1265 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1396 msgid "Select showing settings" msgstr "Seleccionar los ajustes mostrados" -#: src/slic3r/GUI/GUI_App.cpp:629 +#: src/slic3r/GUI/GUI_App.cpp:1295 msgid "Select the language" msgstr "Seleccione el idioma" -#: src/slic3r/GUI/Tab.cpp:57 +#: src/slic3r/GUI/Tab.cpp:108 msgid "Select the print profiles this profile is compatible with." msgstr "Seleccione los perfiles de impresión con las que este perfil es compatible." -#: src/slic3r/GUI/Tab.cpp:51 +#: src/slic3r/GUI/Tab.cpp:102 msgid "Select the printers this profile is compatible with." msgstr "Seleccione las impresoras con las que este perfil es compatible." -#: src/slic3r/GUI/MainFrame.cpp:889 +#: src/slic3r/GUI/MainFrame.cpp:1590 msgid "Select the STL file to repair:" msgstr "Seleccione el archivo STL para reparar:" -#: src/slic3r/GUI/Preferences.cpp:237 +#: src/slic3r/GUI/Preferences.cpp:391 msgid "Select toolbar icon size in respect to the default one." msgstr "Selecciona el tamaño del icono de la barra de herramientas con respecto al predeterminado." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3553 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4016 msgid "Select type of part" msgstr "Selecciona el tipo de pieza" -#: src/slic3r/GUI/Plater.cpp:638 +#: src/slic3r/GUI/Plater.cpp:504 msgid "Select what kind of pad do you need" msgstr "Selecciona que tipo de pad necesitas" -#: src/slic3r/GUI/Plater.cpp:498 +#: src/slic3r/GUI/Plater.cpp:364 msgid "Select what kind of support do you need" msgstr "Selecciona qué clase de soporte necesitas" -#: src/slic3r/GUI/DoubleSlider.cpp:1917 +#: src/slic3r/GUI/DoubleSlider.cpp:2135 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" @@ -6508,59 +7568,59 @@ msgstr "" "NO si deseas que los cambios de herramienta sean cambios de color,\n" "o CANCELAR para no hacer cambios." -#: src/slic3r/GUI/Selection.cpp:146 +#: src/slic3r/GUI/Selection.cpp:191 msgid "Selection-Add" msgstr "Selección-Añadir" -#: src/slic3r/GUI/Selection.cpp:376 +#: src/slic3r/GUI/Selection.cpp:421 msgid "Selection-Add All" msgstr "Selección-Añadir todos" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3299 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3762 msgid "Selection-Add from list" msgstr "Selección-Añadir de la lista" -#: src/slic3r/GUI/GLCanvas3D.cpp:6598 +#: src/slic3r/GUI/GLCanvas3D.cpp:7193 msgid "Selection-Add from rectangle" msgstr "Selección-Añadir del rectángulo" -#: src/slic3r/GUI/Selection.cpp:256 +#: src/slic3r/GUI/Selection.cpp:301 msgid "Selection-Add Instance" msgstr "Selección-Añadir Instancia" -#: src/slic3r/GUI/Selection.cpp:219 +#: src/slic3r/GUI/Selection.cpp:264 msgid "Selection-Add Object" msgstr "Selección-Añadir Objeto" -#: src/slic3r/GUI/Selection.cpp:187 +#: src/slic3r/GUI/Selection.cpp:232 msgid "Selection-Remove" msgstr "Selección-Retirar" -#: src/slic3r/GUI/Selection.cpp:402 +#: src/slic3r/GUI/Selection.cpp:447 msgid "Selection-Remove All" msgstr "Selección-Retirar todo" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3291 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3754 msgid "Selection-Remove from list" msgstr "Selección-Retirar de la lista" -#: src/slic3r/GUI/GLCanvas3D.cpp:6617 +#: src/slic3r/GUI/GLCanvas3D.cpp:7212 msgid "Selection-Remove from rectangle" msgstr "Selección-Retirar del rectángulo" -#: src/slic3r/GUI/Selection.cpp:275 +#: src/slic3r/GUI/Selection.cpp:320 msgid "Selection-Remove Instance" msgstr "Selección-Retirar Instancia" -#: src/slic3r/GUI/Selection.cpp:238 +#: src/slic3r/GUI/Selection.cpp:283 msgid "Selection-Remove Object" msgstr "Selección-Retirar Objeto" -#: src/slic3r/GUI/MainFrame.cpp:566 +#: src/slic3r/GUI/MainFrame.cpp:1172 msgid "Selects all objects" msgstr "Seleccionar todos los objetos" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:123 src/slic3r/GUI/Plater.cpp:5522 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:116 src/slic3r/GUI/Plater.cpp:5707 msgid "Send G-code" msgstr "Enviar código G" @@ -6568,29 +7628,29 @@ msgstr "Enviar código G" msgid "Send G-Code to printer host" msgstr "Enviar el código G al host de impresión" -#: src/slic3r/GUI/MainFrame.cpp:481 +#: src/slic3r/GUI/MainFrame.cpp:1072 msgid "Send to print current plate as G-code" msgstr "Enviar para imprimir la plataforma actual como código G" -#: src/slic3r/GUI/Plater.cpp:878 src/slic3r/GUI/Plater.cpp:5522 +#: src/slic3r/GUI/Plater.cpp:753 src/slic3r/GUI/Plater.cpp:5707 msgid "Send to printer" msgstr "Enviar a la impresora" -#: src/slic3r/GUI/GLCanvas3D.cpp:1305 +#: src/slic3r/GUI/GLCanvas3D.cpp:1312 msgid "Seq." msgstr "Sec." -#: src/slic3r/GUI/Tab.cpp:1231 +#: src/slic3r/GUI/Tab.cpp:1561 msgid "Sequential printing" msgstr "Impresión secuencial" -#: src/slic3r/GUI/Tab.cpp:1901 src/libslic3r/PrintConfig.cpp:1661 -msgid "Serial port" -msgstr "Puerto serial" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:235 +msgid "Sequential Slider" +msgstr "Deslizador secuencial" -#: src/libslic3r/PrintConfig.cpp:1669 -msgid "Serial port speed" -msgstr "Velocidad del puerto serial" +#: src/slic3r/GUI/Preferences.cpp:230 +msgid "Sequential slider applied only to top layer" +msgstr "Deslizador secuencial aplicado solo a la capa superior" #: src/slic3r/GUI/FirmwareDialog.cpp:807 msgid "Serial port:" @@ -6600,17 +7660,16 @@ msgstr "Puerto serie:" msgid "Service name" msgstr "Nombre del servicio" -#: src/slic3r/GUI/Tab.cpp:1802 src/slic3r/GUI/Tab.cpp:2046 -#: src/slic3r/GUI/Tab.cpp:3176 +#: src/slic3r/GUI/Tab.cpp:3509 src/slic3r/GUI/Tab.cpp:3588 msgid "Set" msgstr "Ajuste" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1599 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1611 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1728 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1740 msgid "Set as a Separated Object" msgstr "Establecer como Objeto Separado" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1611 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1740 msgid "Set as a Separated Objects" msgstr "Establecer como Objetos Separados" @@ -6618,7 +7677,7 @@ msgstr "Establecer como Objetos Separados" msgid "Set extruder change for every" msgstr "Establecer cambio de extrusor para cada" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1671 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1800 msgid "Set extruder for selected items" msgstr "Establecer el extrusor para elementos seleccionados" @@ -6626,7 +7685,7 @@ msgstr "Establecer el extrusor para elementos seleccionados" msgid "Set extruder sequence" msgstr "Establecer secuencia extrusor" -#: src/slic3r/GUI/DoubleSlider.cpp:1532 +#: src/slic3r/GUI/DoubleSlider.cpp:1728 msgid "Set extruder sequence for the entire print" msgstr "Fija la secuencia del extrusor para toda la impresión" @@ -6634,84 +7693,84 @@ 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:217 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:218 msgid "Set lower thumb to current slider thumb" msgstr "Coloca el pulgar inferior en el control deslizante actual" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:297 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:305 msgid "Set Mirror" msgstr "Establecer Reflejo" -#: src/slic3r/GUI/Plater.cpp:3944 +#: src/slic3r/GUI/Plater.cpp:3862 msgid "Set number of instances" msgstr "Establecer número de instancias" -#: src/slic3r/GUI/Plater.cpp:4756 +#: src/slic3r/GUI/Plater.cpp:4860 #, c-format msgid "Set numbers of copies to %d" msgstr "Establecer el número de copias a %d" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:781 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:828 msgid "Set Orientation" msgstr "Establecer Orientación" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:750 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:797 msgid "Set Position" msgstr "Establecer Posición" -#: src/slic3r/GUI/GUI_ObjectList.cpp:4094 src/slic3r/GUI/Selection.cpp:1474 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4581 src/slic3r/GUI/Selection.cpp:1513 msgid "Set Printable" msgstr "Establecer Imprimible" -#: src/slic3r/GUI/Selection.cpp:1475 +#: src/slic3r/GUI/Selection.cpp:1515 msgid "Set Printable Instance" msgstr "Establecer Instancia imprimible" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:846 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:893 msgid "Set Scale" msgstr "Establecer Escala" -#: src/libslic3r/PrintConfig.cpp:2393 +#: src/libslic3r/PrintConfig.cpp:2536 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 "Establece la orientación real de la pantalla LCD dentro de la impresora SLA. El modo retrato cambiará el significado de los parámetros de ancho y alto de la pantalla y las imágenes de salida girarán 90 grados." -#: src/slic3r/GUI/ConfigWizard.cpp:932 +#: src/slic3r/GUI/ConfigWizard.cpp:1298 msgid "Set the shape of your printer's bed." msgstr "Define la forma de la base de impresión de tu impresora." -#: src/libslic3r/PrintConfig.cpp:556 +#: 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 "Ajuste este valor distinto de cero para permitir un ancho de extrusión manual. Si se deja a cero, Slic3r obtiene anchuras de extrusión del diámetro de la boquilla (consulte la información sobre herramientas para conocer el ancho de extrusión, el ancho de extrusión de relleno, etc.). Si se expresa como porcentaje (por ejemplo: 230%), se computará sobre la altura de la capa." -#: src/libslic3r/PrintConfig.cpp:448 +#: 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." msgstr "Ajuste este valor distinto de cero para establecer un ancho de extrusión manual para perímetros externos. Si se deja en cero, se usará el ancho de extrusión por defecto si se establece, de lo contrario se usará 1.125 x diámetro de la boquilla. Si se expresa como porcentaje (por ejemplo, 200%), se computará sobre la altura de la capa." -#: src/libslic3r/PrintConfig.cpp:878 +#: 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 "Ajuste este valor distinto de cero para establecer un ancho de extrusión manual para la primera capa. Puede usar esto para forzar extrusiones más gordas para una mejor adhesión. Si se expresa como porcentaje (por ejemplo, 120%), se calculará sobre la altura de la primera capa. Si se establece en cero, usará el ancho de extrusión predeterminado." -#: src/libslic3r/PrintConfig.cpp:1758 +#: 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." msgstr "Ajuste este valor distinto de cero para establecer un ancho de extrusión manual para el relleno de superficies sólidas. Si se deja en cero, se usará el ancho de extrusión por defecto si se establece, de lo contrario se usará 1.125 x diámetro de la boquilla. Si se expresa como porcentaje (por ejemplo, 90%), se calculará sobre la altura de la capa." -#: src/libslic3r/PrintConfig.cpp:2107 +#: src/libslic3r/PrintConfig.cpp:2250 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 regions and get a smoother finish. If left zero, default extrusion width will be used if set, otherwise nozzle diameter will be used. If expressed as percentage (for example 90%) it will be computed over layer height." msgstr "Ajuste este valor distinto de cero para establecer un ancho de extrusión manual para el relleno de las superficies superiores. Es posible que desee utilizar extrusiones más delgadas para llenar todas las regiones estrechas y obtener un acabado más suave. Si se deja en cero, se usará el ancho de extrusión por defecto si se establece, de lo contrario se usará el diámetro de la boquilla. Si se expresa como porcentaje (por ejemplo, 90%), se calculará sobre la altura de la capa." -#: src/libslic3r/PrintConfig.cpp:1011 +#: 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 "Ajuste este valor distinto de cero para establecer un ancho de extrusión manual para relleno. Si se deja en cero, se usará el ancho de extrusión por defecto si se establece, de lo contrario se usará 1.125 x diámetro de la boquilla. Es posible que desee extrusiones más gordas para acelerar el relleno y fortalecer sus partes. Si se expresa como porcentaje (por ejemplo, 90%), se calculará sobre la altura de la capa." -#: src/libslic3r/PrintConfig.cpp:1419 +#: 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." msgstr "Ajuste este valor distinto de cero para establecer un ancho de extrusión manual para los perímetros. Es posible que desee utilizar extrusiones más delgadas para obtener superficies más precisas. Si se deja en cero, se usará el ancho de extrusión por defecto si se establece, de lo contrario se usará 1.125 x diámetro de la boquilla. Si se expresa como porcentaje (por ejemplo, 200%), se calculará sobre la altura de la capa." -#: src/libslic3r/PrintConfig.cpp:1948 +#: src/libslic3r/PrintConfig.cpp:2090 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, otherwise nozzle diameter will be used. If expressed as percentage (for example 90%) it will be computed over layer height." msgstr "Ajuste este valor distinto de cero para establecer un ancho de extrusión manual para el material de soporte. Si se deja en cero, se usará el ancho de extrusión por defecto si se establece, de lo contrario se usará el diámetro de la boquilla. Si se expresa como porcentaje (por ejemplo, 90%), se calculará sobre la altura de la capa." -#: src/libslic3r/PrintConfig.cpp:512 +#: src/libslic3r/PrintConfig.cpp:548 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 "Ajuste este parámetro según el radio de espacio libre alrededor de su extrusor. Si el extrusor no está centrado, elija el valor más grande para seguridad. Esta configuración se utiliza para verificar colisiones y mostrar la vista previa gráfica en la bandeja." @@ -6719,23 +7778,23 @@ msgstr "Ajuste este parámetro según el radio de espacio libre alrededor de su msgid "Set this to the maximum height that can be reached by your extruder while printing." msgstr "Ajusta este valor a la altura máxima que puede alcanzar el extrusor mientras imprime." -#: src/libslic3r/PrintConfig.cpp:501 +#: src/libslic3r/PrintConfig.cpp:537 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 cylinder around your extruder, and it represents the maximum depth the extruder can peek before colliding with other printed objects." msgstr "Ajuste este valor según la distancia vertical entre la punta de la boquilla y (generalmente) las barras X del carro. En otras palabras, esta es la altura del cilindro de holgura alrededor de su extrusor, y representa la profundidad máxima que el extrusor puede asomar antes de colisionar con otros objetos impresos." -#: src/slic3r/GUI/GUI_ObjectList.cpp:4094 src/slic3r/GUI/Selection.cpp:1474 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4581 src/slic3r/GUI/Selection.cpp:1513 msgid "Set Unprintable" msgstr "Establecer No imprimible" -#: src/slic3r/GUI/Selection.cpp:1475 +#: src/slic3r/GUI/Selection.cpp:1515 msgid "Set Unprintable Instance" msgstr "Establecer Instancia No Imprimible" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:217 msgid "Set upper thumb to current slider thumb" msgstr "Coloca el pulgar superior en el control deslizante actual" -#: src/libslic3r/PrintConfig.cpp:3509 +#: src/libslic3r/PrintConfig.cpp:3714 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." @@ -6743,63 +7802,74 @@ msgstr "" "Ajusta el nivel de avisos: 0:fallo, 1:error, 2:peligro, 3:info, 4:depuración, 5:traza\n" "Por ejemplo. loglevel=2 registrará mensajes de fallo, error y peligro." -#: src/slic3r/GUI/BedShapeDialog.cpp:155 +#: src/slic3r/GUI/BedShapeDialog.cpp:292 src/slic3r/GUI/MainFrame.cpp:1969 msgid "Settings" msgstr "Ajustes" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2507 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2899 msgid "Settings for height range" msgstr "Ajustes para rango de alturas" -#: src/slic3r/GUI/ConfigManipulation.cpp:162 +#: src/slic3r/GUI/Preferences.cpp:431 +msgid "Settings in non-modal window" +msgstr "Configuración en ventana no modal" + +#: src/slic3r/GUI/ConfigManipulation.cpp:161 msgid "Shall I adjust those settings for supports?" msgstr "¿Debo ajustar esa configuración para los soportes?" -#: src/slic3r/GUI/ConfigManipulation.cpp:89 +#: src/slic3r/GUI/ConfigManipulation.cpp:88 msgid "Shall I adjust those settings in order to enable Spiral Vase?" msgstr "¿Debo ajustar esa configuración para habilitar el modo Vaso Espiral?" -#: src/slic3r/GUI/ConfigManipulation.cpp:119 +#: src/slic3r/GUI/ConfigManipulation.cpp:118 msgid "Shall I adjust those settings in order to enable the Wipe Tower?" msgstr "¿Debo ajustar esa configuración para habilitar la Torre de Limpieza?" -#: src/slic3r/GUI/ConfigManipulation.cpp:210 +#: src/slic3r/GUI/ConfigManipulation.cpp:209 msgid "Shall I switch to rectilinear fill pattern?" msgstr "¿Debo cambiar al patrón de relleno rectilíneo?" -#: src/slic3r/GUI/ConfigManipulation.cpp:139 +#: src/slic3r/GUI/ConfigManipulation.cpp:138 msgid "Shall I synchronize support layers in order to enable the Wipe Tower?" msgstr "¿Debo sincronizar las capas de soporte para habilitar la Torre de Limpieza?" -#: src/slic3r/GUI/BedShapeDialog.cpp:66 src/slic3r/GUI/GUI_ObjectList.cpp:2059 +#: src/slic3r/GUI/BedShapeDialog.cpp:156 src/slic3r/GUI/BedShapeDialog.cpp:222 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2215 msgid "Shape" msgstr "Aspecto" -#: src/slic3r/GUI/GUI_Preview.cpp:256 +#: src/slic3r/GUI/GUI_Preview.cpp:338 src/slic3r/GUI/GUI_Preview.cpp:1478 msgid "Shells" msgstr "Carcasas" -#: src/slic3r/GUI/GLCanvas3D.cpp:249 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:50 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:33 +msgid "Shift + Left mouse button" +msgstr "Mayús + botón izquierdo del ratón" + +#: src/slic3r/GUI/GLCanvas3D.cpp:241 msgid "Shift + Left mouse button:" msgstr "Mayús + botón izquierdo del ratón:" -#: src/slic3r/GUI/GLCanvas3D.cpp:255 +#: src/slic3r/GUI/GLCanvas3D.cpp:245 msgid "Shift + Right mouse button:" msgstr "Mayús + botón derecho del ratón:" -#: src/slic3r/GUI/GUI_Preview.cpp:231 +#: src/slic3r/GUI/GUI_Preview.cpp:286 src/slic3r/GUI/GUI_Preview.cpp:288 msgid "Show" msgstr "Mostrar" -#: src/slic3r/GUI/MainFrame.cpp:701 +#: src/slic3r/GUI/MainFrame.cpp:926 src/slic3r/GUI/MainFrame.cpp:1325 msgid "Show &Configuration Folder" msgstr "Mostrar carpeta &Configuración" -#: src/slic3r/GUI/MainFrame.cpp:676 +#: src/slic3r/GUI/MainFrame.cpp:1294 msgid "Show &labels" msgstr "Muestra &etiquetas" -#: src/slic3r/GUI/MainFrame.cpp:705 +#: src/slic3r/GUI/MainFrame.cpp:933 src/slic3r/GUI/MainFrame.cpp:937 +#: src/slic3r/GUI/MainFrame.cpp:1329 msgid "Show about dialog" msgstr "Mostrar Acerca de" @@ -6807,111 +7877,131 @@ msgstr "Mostrar Acerca de" msgid "Show advanced settings" msgstr "Mostrar ajustes avanzados" -#: src/slic3r/GUI/PrintHostDialogs.cpp:159 +#: src/slic3r/GUI/Preferences.cpp:120 +msgid "Show drop project dialog" +msgstr "Mostrar cuadro de diálogo al soltar proyecto" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:157 msgid "Show error message" msgstr "Muestra mensaje de error" -#: src/slic3r/GUI/Preferences.cpp:95 +#: src/slic3r/GUI/Preferences.cpp:112 msgid "Show incompatible print and filament presets" msgstr "Mostrar impresiones incompatibles y ajustes iniciales de filamentos" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:151 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:145 msgid "Show keyboard shortcuts list" msgstr "Muestra lista de atajos de teclado" -#: src/slic3r/GUI/MainFrame.cpp:676 +#: src/slic3r/GUI/GCodeViewer.cpp:2591 +msgid "Show normal mode" +msgstr "Mostrar modo normal" + +#: src/slic3r/GUI/MainFrame.cpp:1294 msgid "Show object/instance labels in 3D scene" msgstr "Muestra etiquetas de pieza/repetición en vista 3D" +#: src/slic3r/GUI/Preferences.cpp:213 +msgid "Show sidebar collapse/expand button" +msgstr "Mostrar botón ocultar/expandir barra lateral" + #: src/slic3r/GUI/WipeTowerDialog.cpp:377 msgid "Show simplified settings" msgstr "Muestra los ajustes simplificados" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:52 +#: src/slic3r/GUI/Preferences.cpp:169 src/slic3r/GUI/Preferences.cpp:171 +msgid "Show splash screen" +msgstr "Mostrar pantalla splash" + +#: src/slic3r/GUI/GCodeViewer.cpp:2586 +msgid "Show stealth mode" +msgstr "Mostrar modo silencioso" + +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:51 msgid "Show supports" msgstr "Muestra soportes" -#: src/slic3r/GUI/MainFrame.cpp:699 +#: src/slic3r/GUI/MainFrame.cpp:924 src/slic3r/GUI/MainFrame.cpp:1323 msgid "Show system information" msgstr "Mostrar la información del sistema" -#: src/slic3r/GUI/MainFrame.cpp:626 +#: src/slic3r/GUI/MainFrame.cpp:1234 msgid "Show the 3D editing view" msgstr "Muestra la vista de edición 3D" -#: src/slic3r/GUI/MainFrame.cpp:629 +#: src/slic3r/GUI/MainFrame.cpp:1237 msgid "Show the 3D slices preview" msgstr "Muestra la vista 3D preliminar de las rebanadas" -#: src/slic3r/GUI/MainFrame.cpp:617 +#: src/slic3r/GUI/MainFrame.cpp:1224 msgid "Show the filament settings" msgstr "Mostrar los ajustes de filamento" -#: src/libslic3r/PrintConfig.cpp:3372 +#: src/libslic3r/PrintConfig.cpp:3571 msgid "Show the full list of print/G-code configuration options." msgstr "Muestra la lista completa de opciones de configuración de impresión/G-code." -#: src/libslic3r/PrintConfig.cpp:3377 +#: src/libslic3r/PrintConfig.cpp:3576 msgid "Show the full list of SLA print configuration options." msgstr "Muestra la lista completa de opciones de configuración de impresión SLA." -#: src/slic3r/GUI/MainFrame.cpp:708 +#: src/slic3r/GUI/MainFrame.cpp:941 src/slic3r/GUI/MainFrame.cpp:1332 msgid "Show the list of the keyboard shortcuts" msgstr "Mostrar la lista de los atajos de teclado" -#: src/slic3r/GUI/MainFrame.cpp:606 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "Show the plater" msgstr "Mostrar la base" -#: src/slic3r/GUI/MainFrame.cpp:614 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "Show the print settings" msgstr "Mostrar los ajustes de impresión" -#: src/slic3r/GUI/MainFrame.cpp:621 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Show the printer settings" msgstr "Mostrar la configuración de la impresora" -#: src/libslic3r/PrintConfig.cpp:3366 +#: src/libslic3r/PrintConfig.cpp:3565 msgid "Show this help." msgstr "Mostrar esta ayuda." -#: src/slic3r/GUI/MainFrame.cpp:701 +#: src/slic3r/GUI/MainFrame.cpp:926 src/slic3r/GUI/MainFrame.cpp:1325 msgid "Show user configuration folder (datadir)" msgstr "Mostrar carpeta de configuración de usuario (datadir)" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:185 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:182 msgid "Show/Hide 3Dconnexion devices settings dialog" msgstr "Mostrar/Ocultar cuadro de ajustes dispositivos 3Dconnexion" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:208 -msgid "Show/Hide Legend" -msgstr "Muestra/Oculta Leyenda" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 +msgid "Show/Hide Legend & Estimated printing time" +msgstr "Mostrar / Ocultar leyenda y tiempo de impresión estimado" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:146 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:141 msgid "Show/Hide object/instance labels" msgstr "Muestra/Oculta etiquetas de pieza/repetición" -#: src/slic3r/GUI/GUI_App.cpp:813 src/slic3r/GUI/wxExtensions.cpp:753 +#: src/slic3r/GUI/GUI_App.cpp:1504 src/slic3r/GUI/wxExtensions.cpp:673 msgid "Simple" msgstr "Sencillo" -#: src/slic3r/GUI/ConfigWizard.cpp:820 +#: src/slic3r/GUI/ConfigWizard.cpp:1179 msgid "Simple mode" msgstr "Modo Simple" -#: src/slic3r/GUI/GUI_App.cpp:813 +#: src/slic3r/GUI/GUI_App.cpp:1504 msgid "Simple View Mode" msgstr "Modo de visualización sencillo" -#: src/slic3r/GUI/Tab.cpp:2298 src/slic3r/GUI/Tab.cpp:2306 +#: src/slic3r/GUI/Tab.cpp:2467 src/slic3r/GUI/Tab.cpp:2475 msgid "Single extruder MM setup" msgstr "Ajuste para MM con un solo extrusor" -#: src/libslic3r/PrintConfig.cpp:1845 +#: src/libslic3r/PrintConfig.cpp:1987 msgid "Single Extruder Multi Material" msgstr "Extrusor único de múltiples materiales" -#: src/slic3r/GUI/Tab.cpp:1867 +#: src/slic3r/GUI/Tab.cpp:2101 msgid "" "Single Extruder Multi Material is selected, \n" "and all extruders must have the same diameter.\n" @@ -6921,435 +8011,463 @@ msgstr "" "y todos los extrusores deben tener el mismo diámetro.\n" "¿Deseas cambiar el diámetro de todos los extrusores al valor del diámetro del nozzle del primer extrusor?" -#: src/slic3r/GUI/Tab.cpp:2307 +#: src/slic3r/GUI/Tab.cpp:2476 msgid "Single extruder multimaterial parameters" msgstr "Parámetros multimaterial para un sólo extrusor" -#: src/slic3r/GUI/BedShapeDialog.cpp:77 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:232 src/slic3r/GUI/Plater.cpp:160 -#: src/slic3r/GUI/Tab.cpp:2324 +#: src/slic3r/GUI/Preferences.cpp:120 src/libslic3r/PrintConfig.cpp:3689 +msgid "Single instance mode" +msgstr "Modo de instancia única" + +#: src/slic3r/GUI/BedShapeDialog.cpp:93 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:240 src/slic3r/GUI/Plater.cpp:166 +#: src/slic3r/GUI/Tab.cpp:2493 msgid "Size" msgstr "Tamaño" -#: src/slic3r/GUI/Tab.cpp:1797 src/slic3r/GUI/Tab.cpp:2041 +#: src/slic3r/GUI/Tab.cpp:2059 src/slic3r/GUI/Tab.cpp:2241 msgid "Size and coordinates" msgstr "Tamaño y coordenadas" -#: src/slic3r/GUI/BedShapeDialog.cpp:78 +#: src/slic3r/GUI/BedShapeDialog.cpp:110 msgid "Size in X and Y of the rectangular plate." msgstr "Tamaño en X e Y de la placa rectangular." -#: src/slic3r/GUI/GUI_Preview.cpp:245 src/slic3r/GUI/Tab.cpp:1111 -#: src/libslic3r/ExtrusionEntity.cpp:318 +#: src/slic3r/GUI/GUI_Preview.cpp:310 src/slic3r/GUI/Tab.cpp:1439 +#: src/libslic3r/ExtrusionEntity.cpp:323 src/libslic3r/ExtrusionEntity.cpp:354 msgid "Skirt" msgstr "Falda" -#: src/slic3r/GUI/Tab.cpp:1110 +#: src/slic3r/GUI/Tab.cpp:1438 msgid "Skirt and brim" msgstr "Falda y balsa" -#: src/libslic3r/PrintConfig.cpp:1687 +#: src/libslic3r/PrintConfig.cpp:1795 msgid "Skirt height" msgstr "Altura de la falda" -#: src/libslic3r/PrintConfig.cpp:1696 +#: src/libslic3r/PrintConfig.cpp:1811 msgid "Skirt Loops" msgstr "Vueltas de la falda" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1334 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1181 msgid "SLA gizmo keyboard shortcuts" msgstr "SLA gizmo atajos de teclado" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1058 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:924 msgid "SLA gizmo turned off" msgstr "Gizmo SLA apagado" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1017 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:897 msgid "SLA gizmo turned on" msgstr "Gizmo SLA encendido" -#: src/slic3r/GUI/Plater.cpp:818 src/slic3r/GUI/Preset.cpp:1524 +#: src/slic3r/GUI/Plater.cpp:693 src/libslic3r/Preset.cpp:1303 msgid "SLA material" msgstr "Material SLA" -#: src/slic3r/GUI/ConfigWizard.cpp:2015 +#: src/slic3r/GUI/ConfigWizard.cpp:2526 msgid "SLA Material Profiles Selection" msgstr "Selección Perfiles de Material SLA" -#: src/libslic3r/PrintConfig.cpp:2470 src/libslic3r/PrintConfig.cpp:2471 +#: src/libslic3r/PrintConfig.cpp:2613 src/libslic3r/PrintConfig.cpp:2614 msgid "SLA material type" msgstr "Tipo Material SLA" -#: src/slic3r/GUI/ConfigWizard.cpp:1471 src/slic3r/GUI/ConfigWizard.cpp:2015 +#: src/slic3r/GUI/ConfigWizard.cpp:1872 src/slic3r/GUI/ConfigWizard.cpp:2526 msgid "SLA Materials" msgstr "Materiales SLA" -#: src/slic3r/GUI/Preset.cpp:1523 +#: src/libslic3r/Preset.cpp:1302 msgid "SLA print" msgstr "Impresión SLA" -#: src/libslic3r/PrintConfig.cpp:2578 +#: src/libslic3r/PrintConfig.cpp:2721 msgid "SLA print material notes" msgstr "Notas del material de impresión de SLA" -#: src/slic3r/GUI/Plater.cpp:817 +#: src/slic3r/GUI/Plater.cpp:692 msgid "SLA print settings" msgstr "Ajustes de impresión SLA" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:996 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:869 msgid "SLA Support Points" msgstr "Puntos de soporte SLA" -#: src/slic3r/GUI/GLCanvas3D.cpp:687 -msgid "SLA supports outside the print area were detected" -msgstr "Se detectaron soportes SLA fuera del área de impresión" +#: src/slic3r/GUI/GLCanvas3D.cpp:635 +msgid "SLA supports outside the print area were detected." +msgstr "Se detectaron soportes SLA fuera del área de impresión." -#: src/slic3r/GUI/ConfigWizard.cpp:1530 +#: src/slic3r/GUI/ConfigWizard.cpp:1931 msgid "SLA Technology Printers" msgstr "Impresoras de tecnología SLA" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1432 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1563 msgid "Slab" msgstr "Rebanada" -#: src/libslic3r/PrintConfig.cpp:1333 +#: src/libslic3r/PrintConfig.cpp:1441 msgid "Slic3r can upload G-code files to a printer host. This field must contain the kind of the host." msgstr "Slic3r puede subir archivos de código G a un host de impresión. Este campo debe contener el tipo de host." -#: src/libslic3r/PrintConfig.cpp:105 +#: src/libslic3r/PrintConfig.cpp:107 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:98 +#: 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:1299 +#: src/libslic3r/PrintConfig.cpp:1407 msgid "Slic3r will not scale speed down below this speed." msgstr "Slic3r no escalará la velocidad por debajo de esta velocidad." -#: src/libslic3r/PrintConfig.cpp:3359 +#: src/libslic3r/PrintConfig.cpp:3558 msgid "Slice" msgstr "Laminar" -#: src/slic3r/GUI/MainFrame.cpp:512 +#: src/slic3r/GUI/MainFrame.cpp:1113 msgid "Slice a file into a G-code" msgstr "Laminar un archivo en un código G" -#: src/slic3r/GUI/MainFrame.cpp:518 +#: src/slic3r/GUI/MainFrame.cpp:1119 msgid "Slice a file into a G-code, save as" msgstr "Laminar un archivo en un código G, guárdar como" -#: src/libslic3r/PrintConfig.cpp:87 +#: src/libslic3r/PrintConfig.cpp:89 msgid "Slice gap closing radius" msgstr "Radio de cierre de los huecos al laminar" -#: src/slic3r/GUI/Plater.cpp:892 src/slic3r/GUI/Plater.cpp:3121 -#: src/slic3r/GUI/Plater.cpp:5110 +#: src/slic3r/GUI/Plater.cpp:767 src/slic3r/GUI/Plater.cpp:2921 +#: src/slic3r/GUI/Plater.cpp:5237 msgid "Slice now" msgstr "Laminar ahora" -#: src/libslic3r/PrintConfig.cpp:3333 +#: src/libslic3r/PrintConfig.cpp:3526 msgid "Slice the model and export SLA printing layers as PNG." msgstr "Laminar el modelo y exportar las capas de impresión de SLA como PNG." -#: src/libslic3r/PrintConfig.cpp:3354 +#: src/libslic3r/PrintConfig.cpp:3547 msgid "Slice the model and export toolpaths as G-code." msgstr "Laminar el modelo y exportar las trayectorias como código G." -#: src/libslic3r/PrintConfig.cpp:3360 +#: src/libslic3r/PrintConfig.cpp:3559 msgid "Slice the model as FFF or SLA based on the printer_technology configuration value." msgstr "Laminar el modelo como FFF o SLA basado en el valor de configuración de printer_technology." -#: src/slic3r/GUI/Plater.cpp:216 +#: src/slic3r/GUI/Plater.cpp:222 msgid "Sliced Info" msgstr "Información del laminado" -#: src/slic3r/GUI/MainFrame.cpp:847 src/slic3r/GUI/Plater.cpp:3121 -#: src/slic3r/GUI/Plater.cpp:5107 src/slic3r/GUI/Tab.cpp:1221 -#: src/slic3r/GUI/Tab.cpp:3662 +#: src/slic3r/GUI/MainFrame.cpp:1548 src/slic3r/GUI/Plater.cpp:2921 +#: src/slic3r/GUI/Plater.cpp:5234 src/slic3r/GUI/Tab.cpp:1551 +#: src/slic3r/GUI/Tab.cpp:4081 msgid "Slicing" msgstr "Rebanando" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:134 -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:184 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:170 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:219 msgid "Slicing complete" msgstr "Laminado terminado" -#: src/libslic3r/SLAPrint.cpp:760 +#: src/libslic3r/SLAPrint.cpp:780 msgid "Slicing done" msgstr "Laminado terminado" -#: src/slic3r/GUI/MainFrame.cpp:874 +#: src/slic3r/GUI/MainFrame.cpp:1575 msgid "Slicing Done!" msgstr "¡Laminado realizado!" -#: src/libslic3r/SLAPrintSteps.cpp:245 +#: src/slic3r/GUI/NotificationManager.cpp:751 +msgid "Slicing finished." +msgstr "Laminado finalizado." + +#: src/libslic3r/SLAPrintSteps.cpp:247 msgid "Slicing had to be stopped due to an internal error: Inconsistent slice index." msgstr "El laminado se ha tenido que parar debido a un error interno: Índice de laminado inconsistente." -#: src/libslic3r/SLAPrintSteps.cpp:45 +#: src/libslic3r/SLAPrintSteps.cpp:46 msgid "Slicing model" msgstr "Rebanando modelo" -#: src/libslic3r/SLAPrintSteps.cpp:49 +#: src/libslic3r/SLAPrintSteps.cpp:50 msgid "Slicing supports" msgstr "Soportes para el laminado" -#: src/libslic3r/PrintConfig.cpp:2414 +#: src/libslic3r/PrintConfig.cpp:2557 msgid "Slow" msgstr "Lenta" -#: src/libslic3r/PrintConfig.cpp:1705 +#: src/libslic3r/PrintConfig.cpp:1820 msgid "Slow down if layer print time is below" msgstr "Disminuya la velocidad si el tiempo de impresión de la capa está por debajo" -#: src/libslic3r/PrintConfig.cpp:2415 +#: src/libslic3r/PrintConfig.cpp:2558 msgid "Slow tilt" msgstr "Inclinación lenta" -#: src/libslic3r/PrintConfig.cpp:1715 +#: src/libslic3r/PrintConfig.cpp:1830 msgid "Small perimeters" msgstr "Perímetros pequeños" -#: src/slic3r/GUI/GLCanvas3D.cpp:288 +#: src/libslic3r/PrintConfig.cpp:2801 +msgid "Small pillar diameter percent" +msgstr "Porcentaje de diámetro de pilar pequeño" + +#: src/slic3r/GUI/GLCanvas3D.cpp:274 msgid "Smooth" msgstr "Suave" -#: src/slic3r/GUI/GLCanvas3D.cpp:258 +#: src/slic3r/GUI/GLCanvas3D.cpp:247 msgid "Smoothing" msgstr "Suavizado" -#: src/slic3r/GUI/GUI_App.cpp:839 +#: src/slic3r/GUI/GUI_App.cpp:1540 msgid "Snapshot name" msgstr "Nombre de la instantánea" -#: src/slic3r/GUI/MainFrame.cpp:686 +#: src/slic3r/GUI/MainFrame.cpp:911 src/slic3r/GUI/MainFrame.cpp:1310 msgid "Software &Releases" msgstr "Lanzamientos de Softwa&re" -#: src/slic3r/GUI/PresetHints.cpp:184 +#: src/slic3r/GUI/PresetHints.cpp:183 msgid "solid infill" msgstr "relleno sólido" -#: src/slic3r/GUI/GUI_Preview.cpp:241 src/libslic3r/ExtrusionEntity.cpp:314 -#: src/libslic3r/PrintConfig.cpp:1756 src/libslic3r/PrintConfig.cpp:1767 +#: src/slic3r/GUI/GUI_Preview.cpp:305 src/libslic3r/ExtrusionEntity.cpp:318 +#: src/libslic3r/ExtrusionEntity.cpp:344 src/libslic3r/PrintConfig.cpp:1871 +#: src/libslic3r/PrintConfig.cpp:1882 msgid "Solid infill" msgstr "Relleno sólido" -#: src/libslic3r/PrintConfig.cpp:1744 +#: src/libslic3r/PrintConfig.cpp:1859 msgid "Solid infill every" msgstr "Relleno sólido cada" -#: src/libslic3r/PrintConfig.cpp:1736 +#: src/libslic3r/PrintConfig.cpp:1851 msgid "Solid infill extruder" msgstr "Extrusor para el relleno sólido" -#: src/libslic3r/PrintConfig.cpp:1727 +#: src/libslic3r/PrintConfig.cpp:1842 msgid "Solid infill threshold area" msgstr "Área del umbral de relleno sólido" -#: src/slic3r/GUI/Tab.cpp:1065 src/libslic3r/PrintConfig.cpp:1780 +#: src/slic3r/GUI/Tab.cpp:1387 src/libslic3r/PrintConfig.cpp:1895 msgid "Solid layers" msgstr "Capas sólidas" -#: src/libslic3r/PrintConfig.cpp:754 +#: src/libslic3r/PrintConfig.cpp:790 msgid "Soluble material" msgstr "Material soluble" -#: src/libslic3r/PrintConfig.cpp:755 +#: src/libslic3r/PrintConfig.cpp:791 msgid "Soluble material is most likely used for a soluble support." msgstr "El material soluble se usa muy probablemente para un soporte soluble." -#: src/libslic3r/PrintConfig.cpp:937 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:735 +msgid "Some fields are too long to fit. Right mouse click reveals the full text." +msgstr "Algunos campos son demasiado largos para caber. El clic derecho del mouse muestra el texto completo." + +#: src/libslic3r/PrintConfig.cpp:981 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 output. The \"No extrusion\" flavor prevents PrusaSlicer from exporting any extrusion value at all." msgstr "Algunos comandos de códigos G/M, incluidos el control de temperatura y otros, no son universales. Configura esta opción en el firmware de tu impresora para obtener una salida compatible. El tipo \"Sin extrusión\" evita que PrusaSlicer exporte ningún valor de extrusión." -#: src/slic3r/GUI/GLCanvas3D.cpp:688 -msgid "Some objects are not visible" -msgstr "Algunas piezas no son visibles" +#: src/slic3r/GUI/Plater.cpp:2309 +#, 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 "" +"Alguno(s) objetos del archivo %s parecen estar guardados en pulgadas.\n" +"¿Debería considerarlos como guardados en pulgadas y convertirlos?" -#: src/libslic3r/Print.cpp:1226 +#: src/slic3r/GUI/GLCanvas3D.cpp:636 +msgid "Some objects are not visible." +msgstr "Algunos objetos no son visibles." + +#: src/libslic3r/Print.cpp:1252 msgid "Some objects are too close; your extruder will collide with them." msgstr "Algunos objetos están demasiado cerca; el extrusor colisionará con ellos." -#: src/libslic3r/Print.cpp:1228 +#: src/libslic3r/Print.cpp:1254 msgid "Some objects are too tall and cannot be printed without extruder collisions." msgstr "Algunos objetos son demasiado altos y no se pueden imprimir sin que colisione el extrusor." -#: src/libslic3r/PrintConfig.cpp:2824 +#: src/libslic3r/PrintConfig.cpp:2988 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 "Algunos objetos pueden llevarse bien con unas pocas pads más pequeñas en lugar de una sola grande. Este parámetro define a qué distancia debe estar el centro de dos pads más pequeñas. Si están más cerca, se fusionarán en una sola pad." -#: src/libslic3r/PrintConfig.cpp:2187 +#: src/libslic3r/PrintConfig.cpp:2330 msgid "Some printers or printer setups may have difficulties printing with a variable layer height. Enabled by default." msgstr "Algunas impresoras o configuraciones de impresora pueden tener dificultades para imprimir con una altura de capa variable. Habilitado por defecto." -#: src/libslic3r/PrintConfig.cpp:1984 +#: src/libslic3r/PrintConfig.cpp:2126 msgid "Spacing between interface lines. Set zero to get a solid interface." msgstr "Espaciado entre líneas de interfaz. Establezca cero para obtener una interfaz sólida." -#: src/libslic3r/PrintConfig.cpp:2018 +#: src/libslic3r/PrintConfig.cpp:1155 +msgid "Spacing between ironing passes" +msgstr "Separación entre pasadas de alisado" + +#: src/libslic3r/PrintConfig.cpp:2160 msgid "Spacing between support material lines." msgstr "Espaciado entre las líneas de material de soporte." -#: src/slic3r/GUI/GUI_ObjectList.cpp:98 src/slic3r/GUI/GUI_ObjectList.cpp:616 -#: src/slic3r/GUI/GUI_Preview.cpp:224 src/slic3r/GUI/Tab.cpp:1145 -#: src/libslic3r/PrintConfig.cpp:235 src/libslic3r/PrintConfig.cpp:458 -#: src/libslic3r/PrintConfig.cpp:919 src/libslic3r/PrintConfig.cpp:1048 -#: src/libslic3r/PrintConfig.cpp:1431 src/libslic3r/PrintConfig.cpp:1668 -#: src/libslic3r/PrintConfig.cpp:1716 src/libslic3r/PrintConfig.cpp:1768 -#: src/libslic3r/PrintConfig.cpp:2118 +#: src/slic3r/GUI/GUI_ObjectList.cpp:96 src/slic3r/GUI/GUI_ObjectList.cpp:655 +#: src/slic3r/GUI/GUI_Preview.cpp:278 src/slic3r/GUI/Tab.cpp:1474 +#: src/libslic3r/PrintConfig.cpp:269 src/libslic3r/PrintConfig.cpp:494 +#: src/libslic3r/PrintConfig.cpp:963 src/libslic3r/PrintConfig.cpp:1092 +#: src/libslic3r/PrintConfig.cpp:1165 src/libslic3r/PrintConfig.cpp:1539 +#: src/libslic3r/PrintConfig.cpp:1776 src/libslic3r/PrintConfig.cpp:1831 +#: src/libslic3r/PrintConfig.cpp:1883 src/libslic3r/PrintConfig.cpp:2261 msgid "Speed" msgstr "Velocidad" -#: src/libslic3r/PrintConfig.cpp:1670 -msgid "Speed (baud) of USB/serial port for printer connection." -msgstr "Velocidad (baudios) del puerto USB / serie para la conexión de la impresora." - -#: src/libslic3r/GCode/PreviewData.cpp:351 +#: src/slic3r/GUI/GCodeViewer.cpp:2238 src/libslic3r/GCode/PreviewData.cpp:356 msgid "Speed (mm/s)" msgstr "Velocidad (mm/s)" -#: src/libslic3r/PrintConfig.cpp:920 +#: src/libslic3r/PrintConfig.cpp:964 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 "Velocidad para llenar pequeños espacios usando movimientos cortos de zigzag. Mantenga esto razonablemente bajo para evitar demasiados problemas de vibración y sacudidas. Establezca cero para desactivar el llenado de huecos." -#: src/slic3r/GUI/Tab.cpp:1158 +#: src/slic3r/GUI/Tab.cpp:1488 msgid "Speed for non-print moves" msgstr "Velocidad para movimientos sin impresión" -#: src/libslic3r/PrintConfig.cpp:1432 +#: src/libslic3r/PrintConfig.cpp:1540 msgid "Speed for perimeters (contours, aka vertical shells). Set to zero for auto." msgstr "Velocidad para perímetros (contornos, también conocidos como conchas verticales). Establecer a cero para auto." -#: src/slic3r/GUI/Tab.cpp:1146 +#: src/slic3r/GUI/Tab.cpp:1475 msgid "Speed for print moves" msgstr "Velocidad para movimientos de impresión" -#: src/libslic3r/PrintConfig.cpp:236 +#: src/libslic3r/PrintConfig.cpp:270 msgid "Speed for printing bridges." msgstr "Velocidad para imprimir puentes." -#: src/libslic3r/PrintConfig.cpp:1769 +#: src/libslic3r/PrintConfig.cpp:1884 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 "Velocidad para imprimir regiones sólidas (superior / inferior / conchas horizontales internas). Esto se puede expresar como un porcentaje (por ejemplo: 80%) sobre la velocidad de relleno predeterminada anterior. Establecer a cero para auto." -#: src/libslic3r/PrintConfig.cpp:1993 +#: src/libslic3r/PrintConfig.cpp:2135 msgid "Speed for printing support material interface layers. If expressed as percentage (for example 50%) it will be calculated over support material speed." msgstr "Velocidad para imprimir capas de interfaz de material de soporte. Si se expresa como porcentaje (por ejemplo, 50%), se calculará sobre la velocidad del material de soporte." -#: src/libslic3r/PrintConfig.cpp:2027 +#: src/libslic3r/PrintConfig.cpp:2169 msgid "Speed for printing support material." msgstr "Velocidad para imprimir material de soporte." -#: src/libslic3r/PrintConfig.cpp:1049 +#: src/libslic3r/PrintConfig.cpp:1093 msgid "Speed for printing the internal fill. Set to zero for auto." msgstr "Velocidad para imprimir el relleno interno. Establecer a cero para auto." -#: src/libslic3r/PrintConfig.cpp:2119 +#: src/libslic3r/PrintConfig.cpp:2262 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 slow down this to get a nicer surface finish. This can be expressed as a percentage (for example: 80%) over the solid infill speed above. Set to zero for auto." msgstr "Velocidad para imprimir capas sólidas superiores (solo se aplica a las capas externas superiores y no a sus capas sólidas internas). Es posible que desee reducir la velocidad para obtener un acabado de superficie más agradable. Esto se puede expresar como un porcentaje (por ejemplo: 80%) sobre la velocidad de relleno sólido anterior. Establecer a cero para auto." -#: src/libslic3r/PrintConfig.cpp:2153 +#: src/libslic3r/PrintConfig.cpp:2296 msgid "Speed for travel moves (jumps between distant extrusion points)." msgstr "Velocidad para movimientos (saltos entre puntos de extrusión distantes)." -#: src/libslic3r/PrintConfig.cpp:659 +#: src/libslic3r/PrintConfig.cpp:695 msgid "Speed of the first cooling move" msgstr "Velocidad del primer movimiento de enfriamiento" -#: src/libslic3r/PrintConfig.cpp:678 +#: src/libslic3r/PrintConfig.cpp:714 msgid "Speed of the last cooling move" msgstr "Velocidad del último movimiento de enfriamiento" -#: src/libslic3r/PrintConfig.cpp:616 +#: src/libslic3r/PrintConfig.cpp:652 msgid "Speed used at the very beginning of loading phase." msgstr "Velocidad utilizada al inicio de la fase de carga." -#: src/libslic3r/PrintConfig.cpp:608 +#: src/libslic3r/PrintConfig.cpp:644 msgid "Speed used for loading the filament on the wipe tower." msgstr "Velocidad empleada para cargar el filamento en la torre de limpieza." -#: src/libslic3r/PrintConfig.cpp:624 +#: src/libslic3r/PrintConfig.cpp:660 msgid "Speed used for unloading the filament on the wipe tower (does not affect initial part of unloading just after ramming)." msgstr "Velocidad empleada para descargar el filamento en la torre de limpieza (no afecta a la fase inicial de la descarga, sólo después de empujar)." -#: src/libslic3r/PrintConfig.cpp:633 +#: src/libslic3r/PrintConfig.cpp:669 msgid "Speed used for unloading the tip of the filament immediately after ramming." msgstr "Velocidad utilizada para descargar la punta del filamento inmediatamente después del ramming." -#: src/slic3r/GUI/Mouse3DController.cpp:296 +#: src/slic3r/GUI/Mouse3DController.cpp:279 msgid "Speed:" msgstr "Velocidad:" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1432 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:54 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:37 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1563 msgid "Sphere" msgstr "Esfera" -#: src/libslic3r/PrintConfig.cpp:1794 +#: src/libslic3r/PrintConfig.cpp:1909 msgid "Spiral vase" msgstr "Modo vaso" -#: src/slic3r/GUI/ConfigManipulation.cpp:90 +#: src/slic3r/GUI/ConfigManipulation.cpp:89 msgid "Spiral Vase" msgstr "Modo Vaso Espiral" -#: src/slic3r/GUI/Plater.cpp:4019 src/slic3r/GUI/Plater.cpp:4034 -#: src/slic3r/GUI/Plater.cpp:4048 src/libslic3r/PrintConfig.cpp:3471 +#: src/slic3r/GUI/Plater.cpp:3939 src/slic3r/GUI/Plater.cpp:3954 +#: src/slic3r/GUI/Plater.cpp:3972 src/libslic3r/PrintConfig.cpp:3670 msgid "Split" msgstr "Dividir" -#: src/slic3r/GUI/Plater.cpp:4019 +#: src/slic3r/GUI/Plater.cpp:3939 msgid "Split the selected object" msgstr "Dividir el objeto seleccionado" -#: src/slic3r/GUI/Plater.cpp:4014 src/slic3r/GUI/Plater.cpp:4034 +#: src/slic3r/GUI/Plater.cpp:3934 src/slic3r/GUI/Plater.cpp:3954 msgid "Split the selected object into individual objects" msgstr "Dividir el objeto seleccionado en objetos individuales" -#: src/slic3r/GUI/Plater.cpp:4016 src/slic3r/GUI/Plater.cpp:4048 +#: src/slic3r/GUI/Plater.cpp:3936 src/slic3r/GUI/Plater.cpp:3972 msgid "Split the selected object into individual sub-parts" msgstr "Dividir el objeto seleccionado en subpartes individuales" -#: src/slic3r/GUI/GLCanvas3D.cpp:4550 +#: src/slic3r/GUI/GLCanvas3D.cpp:4916 msgid "Split to objects" msgstr "Partir en varias piezas" -#: src/slic3r/GUI/Plater.cpp:2981 +#: src/slic3r/GUI/Plater.cpp:2774 msgid "Split to Objects" msgstr "Partir en Varias Piezas" -#: src/slic3r/GUI/GLCanvas3D.cpp:4560 src/slic3r/GUI/GUI_ObjectList.cpp:1487 +#: src/slic3r/GUI/GLCanvas3D.cpp:4926 src/slic3r/GUI/GUI_ObjectList.cpp:1618 msgid "Split to parts" msgstr "Separar en piezas" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2274 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2440 msgid "Split to Parts" msgstr "Separar en Piezas" -#: src/slic3r/GUI/ConfigWizard.cpp:289 +#: src/slic3r/GUI/ConfigWizard.cpp:307 msgid "Standard" msgstr "Estándar" -#: src/libslic3r/PrintConfig.cpp:846 +#: src/libslic3r/PrintConfig.cpp:884 msgid "Stars" msgstr "Estrellas" -#: src/slic3r/GUI/MainFrame.cpp:405 +#: src/slic3r/GUI/MainFrame.cpp:986 msgid "Start a new project" msgstr "Empezar un nuevo proyecto" -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:27 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:29 msgid "Start at height" msgstr "Comenzar en altura" -#: src/slic3r/GUI/Tab.cpp:1528 src/slic3r/GUI/Tab.cpp:1976 -#: src/libslic3r/PrintConfig.cpp:1813 src/libslic3r/PrintConfig.cpp:1828 +#: src/slic3r/GUI/Tab.cpp:1873 src/slic3r/GUI/Tab.cpp:2161 +#: src/libslic3r/PrintConfig.cpp:1928 src/libslic3r/PrintConfig.cpp:1943 msgid "Start G-code" msgstr "Comenzar el código G" -#: src/slic3r/GUI/MainFrame.cpp:532 +#: src/slic3r/GUI/MainFrame.cpp:1133 msgid "Start new slicing process" msgstr "Comenzar un nuevo proceso de laminado" @@ -7357,7 +8475,37 @@ msgstr "Comenzar un nuevo proceso de laminado" msgid "Start printing after upload" msgstr "Empezar a imprimir después de subir" -#: src/slic3r/GUI/PrintHostDialogs.cpp:151 +#: src/slic3r/GUI/GUI_App.cpp:396 +msgid "Start the application" +msgstr "Inicia el programa" + +#: src/slic3r/GUI/GUI_App.cpp:386 +msgid "" +"Starting with %1% 2.3, configuration directory on Linux has changed (according to XDG Base Directory Specification) to \n" +"%2%.\n" +"\n" +"This directory did not exist yet (maybe you run the new version for the first time).\n" +"However, an old %1% configuration directory was detected in \n" +"%3%.\n" +"\n" +"Consider moving the contents of the old directory to the new location in order to access your profiles, etc.\n" +"Note that if you decide to downgrade %1% in future, it will use the old location again.\n" +"\n" +"What do you want to do now?" +msgstr "" +"Comenzando con %1% 2.3, el directorio de configuración en Linux ha cambiado (de acuerdo con la Especificación de directorio base de XDG) a\n" +"%2%.\n" +"\n" +"Este directorio aún no existía (tal vez ejecutes la nueva versión por primera vez).\n" +"Sin embargo, se detectó un directorio de configuración antiguo %1% en\n" +"%3%.\n" +"\n" +"Puedes mover el contenido del directorio antiguo a la nueva ubicación para acceder a tus perfiles, etc.\n" +"Ten en cuenta que si decides retroceder de versión %1% en el futuro, volverás a utilizar la ubicación anterior.\n" +"\n" +"¿Qué quieres hacer ahora?" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:149 msgid "Status" msgstr "Estado" @@ -7365,166 +8513,160 @@ msgstr "Estado" msgid "Status:" msgstr "Estado:" -#: src/slic3r/GUI/Tab.cpp:2209 +#: src/slic3r/GUI/Search.cpp:77 src/slic3r/GUI/Tab.cpp:2378 msgid "Stealth" msgstr "Silencio" -#: src/slic3r/GUI/Plater.cpp:1291 +#: src/slic3r/GUI/Plater.cpp:1187 src/slic3r/GUI/Plater.cpp:1235 msgid "stealth mode" msgstr "modo silencioso" -#: src/slic3r/GUI/Plater.cpp:4985 +#: src/slic3r/GUI/GCodeViewer.cpp:2557 +msgid "Stealth mode" +msgstr "Modo silencioso" + +#: src/slic3r/GUI/Plater.cpp:5118 #, c-format msgid "STL file exported to %s" msgstr "Archivo STL exportado a %s" -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:27 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:29 msgid "Stop at height" msgstr "Parar en altura" -#: src/slic3r/GUI/Tab.cpp:1693 src/slic3r/GUI/Tab.cpp:1928 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:295 msgid "Success!" msgstr "¡Éxito!" -#: src/slic3r/GUI/PresetHints.cpp:203 +#: src/slic3r/GUI/Plater.cpp:2047 +#, c-format +msgid "Successfully unmounted. The device %s(%s) can now be safely removed from the computer." +msgstr "Desmontado con éxito. El dispositivo %s (%s) ahora se puede retirar de forma segura del ordenador." + +#: src/slic3r/GUI/PresetHints.cpp:202 msgid "support" msgstr "soporte" -#: src/libslic3r/PrintConfig.cpp:2692 +#: src/libslic3r/PrintConfig.cpp:2856 msgid "Support base diameter" msgstr "Diámetro de la base del soporte" -#: src/libslic3r/PrintConfig.cpp:2702 +#: src/libslic3r/PrintConfig.cpp:2866 msgid "Support base height" msgstr "Altura de la base del soporte" -#: src/libslic3r/PrintConfig.cpp:2711 +#: src/libslic3r/PrintConfig.cpp:2875 msgid "Support base safety distance" msgstr "Distancia de seguridad de la base de soportes" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3551 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4014 msgid "Support Blocker" msgstr "Bloqueo de soporte" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3551 +#: src/libslic3r/PrintConfig.cpp:895 +msgid "Support Cubic" +msgstr "Soporte Cúbico" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:4014 msgid "Support Enforcer" msgstr "Refuerzo de soporte" -#: src/slic3r/GUI/ConfigManipulation.cpp:163 +#: src/slic3r/GUI/ConfigManipulation.cpp:162 msgid "Support Generator" msgstr "Generador de Soportes" -#: src/slic3r/GUI/Tab.cpp:3608 +#: src/slic3r/GUI/Tab.cpp:4018 msgid "Support head" msgstr "Cabeza del soporte" -#: src/libslic3r/PrintConfig.cpp:2620 -msgid "Support head front diameter" -msgstr "Diámetro del frontal de la cabeza del soporte" - -#: src/libslic3r/PrintConfig.cpp:2629 -msgid "Support head penetration" -msgstr "Penetración de la cabeza del soporte" - -#: src/libslic3r/PrintConfig.cpp:2638 -msgid "Support head width" -msgstr "Ancho de la cabeza del soporte" - -#: src/slic3r/GUI/PresetHints.cpp:213 +#: src/slic3r/GUI/PresetHints.cpp:212 msgid "support interface" msgstr "interfaz de soporte" -#: src/slic3r/GUI/GUI_ObjectList.cpp:36 src/slic3r/GUI/GUI_ObjectList.cpp:97 -#: src/slic3r/GUI/GUI_ObjectList.cpp:615 src/slic3r/GUI/GUI_Preview.cpp:246 -#: src/slic3r/GUI/Tab.cpp:1120 src/slic3r/GUI/Tab.cpp:1121 -#: src/libslic3r/ExtrusionEntity.cpp:319 src/libslic3r/PrintConfig.cpp:370 -#: src/libslic3r/PrintConfig.cpp:1502 src/libslic3r/PrintConfig.cpp:1866 -#: src/libslic3r/PrintConfig.cpp:1872 src/libslic3r/PrintConfig.cpp:1880 -#: src/libslic3r/PrintConfig.cpp:1892 src/libslic3r/PrintConfig.cpp:1902 -#: src/libslic3r/PrintConfig.cpp:1910 src/libslic3r/PrintConfig.cpp:1925 -#: src/libslic3r/PrintConfig.cpp:1946 src/libslic3r/PrintConfig.cpp:1958 -#: src/libslic3r/PrintConfig.cpp:1974 src/libslic3r/PrintConfig.cpp:1983 -#: src/libslic3r/PrintConfig.cpp:1992 src/libslic3r/PrintConfig.cpp:2003 -#: src/libslic3r/PrintConfig.cpp:2017 src/libslic3r/PrintConfig.cpp:2025 -#: src/libslic3r/PrintConfig.cpp:2026 src/libslic3r/PrintConfig.cpp:2035 -#: src/libslic3r/PrintConfig.cpp:2043 src/libslic3r/PrintConfig.cpp:2057 +#: 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:311 +#: src/slic3r/GUI/Tab.cpp:1449 src/slic3r/GUI/Tab.cpp:1450 +#: src/libslic3r/ExtrusionEntity.cpp:324 src/libslic3r/ExtrusionEntity.cpp:356 +#: src/libslic3r/PrintConfig.cpp:404 src/libslic3r/PrintConfig.cpp:1610 +#: src/libslic3r/PrintConfig.cpp:2008 src/libslic3r/PrintConfig.cpp:2014 +#: src/libslic3r/PrintConfig.cpp:2022 src/libslic3r/PrintConfig.cpp:2034 +#: src/libslic3r/PrintConfig.cpp:2044 src/libslic3r/PrintConfig.cpp:2052 +#: src/libslic3r/PrintConfig.cpp:2067 src/libslic3r/PrintConfig.cpp:2088 +#: src/libslic3r/PrintConfig.cpp:2100 src/libslic3r/PrintConfig.cpp:2116 +#: src/libslic3r/PrintConfig.cpp:2125 src/libslic3r/PrintConfig.cpp:2134 +#: src/libslic3r/PrintConfig.cpp:2145 src/libslic3r/PrintConfig.cpp:2159 +#: src/libslic3r/PrintConfig.cpp:2167 src/libslic3r/PrintConfig.cpp:2168 +#: src/libslic3r/PrintConfig.cpp:2177 src/libslic3r/PrintConfig.cpp:2185 +#: src/libslic3r/PrintConfig.cpp:2199 msgid "Support material" msgstr "Material de soporte" -#: src/slic3r/GUI/GUI_Preview.cpp:247 src/libslic3r/ExtrusionEntity.cpp:320 -#: src/libslic3r/PrintConfig.cpp:1991 +#: src/slic3r/GUI/GUI_Preview.cpp:312 src/libslic3r/ExtrusionEntity.cpp:325 +#: src/libslic3r/ExtrusionEntity.cpp:358 src/libslic3r/PrintConfig.cpp:2133 msgid "Support material interface" msgstr "Interfaz del material de soporte" -#: src/libslic3r/PrintConfig.cpp:2044 +#: src/libslic3r/PrintConfig.cpp:2186 msgid "Support material will not be generated for overhangs whose slope angle (90° = vertical) is above the given threshold. In other words, this value represent the most horizontal slope (measured from the horizontal plane) that you can print without support material. Set to zero for automatic detection (recommended)." msgstr "El material de soporte no se generará para voladizos cuyo ángulo de inclinación (90 ° = vertical) esté por encima del umbral dado. En otras palabras, este valor representa la pendiente más horizontal (medida desde el plano horizontal) que puede imprimir sin material de soporte. Ajuste a cero para la detección automática (recomendado)." -#: src/libslic3r/PrintConfig.cpp:1964 +#: src/libslic3r/PrintConfig.cpp:2106 msgid "Support material/raft interface extruder" msgstr "Extrusor para el material de soporte o balsa" -#: src/libslic3r/PrintConfig.cpp:1937 +#: src/libslic3r/PrintConfig.cpp:2079 msgid "Support material/raft/skirt extruder" msgstr "Extrusor para el material de soporte/falda/balsa" -#: src/slic3r/GUI/Plater.cpp:500 src/libslic3r/PrintConfig.cpp:1901 -#: src/libslic3r/PrintConfig.cpp:2674 +#: src/slic3r/GUI/Plater.cpp:366 src/libslic3r/PrintConfig.cpp:2043 +#: src/libslic3r/PrintConfig.cpp:2838 msgid "Support on build plate only" msgstr "Soporte en la base solamente" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:888 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:762 msgid "Support parameter change" msgstr "Cambio de parámetros de soporte" -#: src/slic3r/GUI/Tab.cpp:3613 +#: src/slic3r/GUI/Tab.cpp:4023 msgid "Support pillar" msgstr "Pilares de soporte" -#: src/libslic3r/PrintConfig.cpp:2658 -msgid "Support pillar connection mode" -msgstr "Modo de conexión de los pilares de soporte" - -#: src/libslic3r/PrintConfig.cpp:2648 -msgid "Support pillar diameter" -msgstr "Diámetro de los puntos de soporte" - -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:55 -#: src/libslic3r/PrintConfig.cpp:2764 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:54 +#: src/libslic3r/PrintConfig.cpp:2928 msgid "Support points density" msgstr "Densidad de los puntos de soporte" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1196 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1048 msgid "Support points edit" msgstr "Edición de puntos de soporte" -#: src/slic3r/GUI/GUI_ObjectList.cpp:106 src/slic3r/GUI/GUI_ObjectList.cpp:624 -#: src/slic3r/GUI/Plater.cpp:495 src/slic3r/GUI/Tab.cpp:3604 -#: src/slic3r/GUI/Tab.cpp:3605 src/libslic3r/PrintConfig.cpp:2614 -#: src/libslic3r/PrintConfig.cpp:2621 src/libslic3r/PrintConfig.cpp:2630 -#: src/libslic3r/PrintConfig.cpp:2639 src/libslic3r/PrintConfig.cpp:2649 -#: src/libslic3r/PrintConfig.cpp:2675 src/libslic3r/PrintConfig.cpp:2682 -#: src/libslic3r/PrintConfig.cpp:2693 src/libslic3r/PrintConfig.cpp:2703 -#: src/libslic3r/PrintConfig.cpp:2712 src/libslic3r/PrintConfig.cpp:2725 -#: src/libslic3r/PrintConfig.cpp:2735 src/libslic3r/PrintConfig.cpp:2744 -#: src/libslic3r/PrintConfig.cpp:2754 src/libslic3r/PrintConfig.cpp:2765 -#: src/libslic3r/PrintConfig.cpp:2773 +#: src/slic3r/GUI/GUI_ObjectList.cpp:104 src/slic3r/GUI/GUI_ObjectList.cpp:663 +#: src/slic3r/GUI/Plater.cpp:361 src/slic3r/GUI/Tab.cpp:4014 +#: src/slic3r/GUI/Tab.cpp:4015 src/libslic3r/PrintConfig.cpp:2757 +#: src/libslic3r/PrintConfig.cpp:2764 src/libslic3r/PrintConfig.cpp:2773 +#: src/libslic3r/PrintConfig.cpp:2782 src/libslic3r/PrintConfig.cpp:2792 +#: src/libslic3r/PrintConfig.cpp:2802 src/libslic3r/PrintConfig.cpp:2839 +#: src/libslic3r/PrintConfig.cpp:2846 src/libslic3r/PrintConfig.cpp:2857 +#: src/libslic3r/PrintConfig.cpp:2867 src/libslic3r/PrintConfig.cpp:2876 +#: src/libslic3r/PrintConfig.cpp:2889 src/libslic3r/PrintConfig.cpp:2899 +#: src/libslic3r/PrintConfig.cpp:2908 src/libslic3r/PrintConfig.cpp:2918 +#: src/libslic3r/PrintConfig.cpp:2929 src/libslic3r/PrintConfig.cpp:2937 msgid "Supports" msgstr "Soportes" -#: src/slic3r/GUI/Plater.cpp:1194 +#: src/slic3r/GUI/Plater.cpp:1103 msgid "supports and pad" msgstr "soportes y pad" -#: src/libslic3r/PrintConfig.cpp:1092 +#: src/libslic3r/PrintConfig.cpp:1185 msgid "Supports remaining times" msgstr "Compatible con tiempos restantes" -#: src/libslic3r/PrintConfig.cpp:1101 +#: src/libslic3r/PrintConfig.cpp:1194 msgid "Supports stealth mode" msgstr "Soporta modo silencioso" -#: src/slic3r/GUI/ConfigManipulation.cpp:159 +#: src/slic3r/GUI/ConfigManipulation.cpp:158 msgid "" "Supports work better, if the following feature is enabled:\n" "- Detect bridging perimeters" @@ -7532,44 +8674,60 @@ msgstr "" "Los soportes funcionan mejor si la siguiente característica está habilitada:\n" "- Detectar perímetros con puentes" -#: src/slic3r/GUI/Preferences.cpp:87 +#: src/slic3r/GUI/Preferences.cpp:104 msgid "Suppress \" - default - \" presets" msgstr "Suprima los ajustes iniciales \"- predeterminado -\"" -#: src/slic3r/GUI/Preferences.cpp:89 +#: src/slic3r/GUI/Preferences.cpp:106 msgid "Suppress \" - default - \" presets in the Print / Filament / Printer selections once there are any other valid presets available." msgstr "Suprima los ajustes iniciales \"- predeterminado -\" en las selecciones Imprimir / Filamento / Impresora una vez que haya otros ajustes preestablecidos disponibles." -#: src/slic3r/GUI/MainFrame.cpp:826 +#: src/slic3r/GUI/MainFrame.cpp:1527 msgid "SVG" msgstr "SVG" -#: src/slic3r/GUI/DoubleSlider.cpp:1144 +#: src/slic3r/GUI/Mouse3DController.cpp:318 +msgid "Swap Y/Z axes" +msgstr "Alternar ejes Y/Z" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:179 +msgid "Switch between Editor/Preview" +msgstr "Cambiar entre Editor/Previsualización" + +#: src/slic3r/GUI/DoubleSlider.cpp:1273 msgid "Switch code to Change extruder" msgstr "Cambiar código para cambiar extrusor" -#: src/slic3r/GUI/DoubleSlider.cpp:1179 +#: src/slic3r/GUI/DoubleSlider.cpp:1306 msgid "Switch code to Color change (%1%) for:" msgstr "Código para cambiar de color (%1%) para:" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:140 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:136 msgid "Switch to 3D" msgstr "Cambiar a 3D" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1376 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1223 msgid "Switch to editing mode" msgstr "Cambiar al modo edición" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:141 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:137 msgid "Switch to Preview" msgstr "Cambiar a Previsualización" -#: src/slic3r/GUI/wxExtensions.cpp:703 +#: src/slic3r/GUI/GLCanvas3D.cpp:4302 src/slic3r/GUI/GLCanvas3D.cpp:4939 +msgid "Switch to Settings" +msgstr "Cambiar a Ajustes" + +#: src/slic3r/GUI/wxExtensions.cpp:623 #, c-format msgid "Switch to the %s mode" msgstr "Cambiar al modo %s" -#: src/slic3r/GUI/GUI_App.cpp:882 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:542 +msgid "Switching Presets: Unsaved Changes" +msgstr "Cambio de ajustes preestablecidos: Cambios No guardados" + +#: src/slic3r/GUI/GUI_App.cpp:1608 msgid "" "Switching the language will trigger application restart.\n" "You will lose content of the plater." @@ -7587,65 +8745,72 @@ msgstr "" "\n" "¿Quiere continuar?" -#: src/slic3r/GUI/Tab.cpp:1014 +#: src/slic3r/GUI/Tab.cpp:1332 msgid "symbolic profile name" msgstr "nombre perfil simbólico" -#: src/libslic3r/PrintConfig.cpp:2036 +#: src/libslic3r/PrintConfig.cpp:2178 msgid "Synchronize support layers with the object print layers. This is useful with multi-material printers, where the extruder switch is expensive." msgstr "Sincronizar las capas de soporte con las capas de impresión del objeto. Esto es útil con impresoras de múltiples materiales, donde el cambio de el extrusor es costoso." -#: src/libslic3r/PrintConfig.cpp:2034 +#: src/libslic3r/PrintConfig.cpp:2176 msgid "Synchronize with object layers" msgstr "Sincronizar con capas las del objeto" -#: src/slic3r/GUI/MainFrame.cpp:699 +#: src/slic3r/GUI/MainFrame.cpp:924 src/slic3r/GUI/MainFrame.cpp:1323 msgid "System &Info" msgstr "&Información del Sistema" -#: src/slic3r/GUI/SysInfoDialog.cpp:78 +#: src/slic3r/GUI/SysInfoDialog.cpp:90 src/slic3r/GUI/SysInfoDialog.cpp:92 msgid "System Information" msgstr "Información del sistema" -#: src/slic3r/GUI/Preset.cpp:1109 src/slic3r/GUI/Preset.cpp:1164 -#: src/slic3r/GUI/Preset.cpp:1242 src/slic3r/GUI/Preset.cpp:1284 -#: src/slic3r/GUI/PresetBundle.cpp:1583 src/slic3r/GUI/PresetBundle.cpp:1672 +#: src/slic3r/GUI/PresetComboBoxes.cpp:188 +#: src/slic3r/GUI/PresetComboBoxes.cpp:226 +#: src/slic3r/GUI/PresetComboBoxes.cpp:724 +#: src/slic3r/GUI/PresetComboBoxes.cpp:774 +#: src/slic3r/GUI/PresetComboBoxes.cpp:886 +#: src/slic3r/GUI/PresetComboBoxes.cpp:930 msgid "System presets" msgstr "Ajustes del sistema" -#: src/slic3r/GUI/GUI_App.cpp:801 +#: src/slic3r/GUI/GUI_App.cpp:1481 msgid "Take Configuration &Snapshot" msgstr "&Tomar una Captura de la configuración" -#: src/slic3r/GUI/GUI_App.cpp:839 +#: src/slic3r/GUI/GUI_App.cpp:1540 msgid "Taking configuration snapshot" msgstr "Haciendo una instantánea de la configuración" -#: src/slic3r/GUI/Tab.cpp:1433 src/libslic3r/PrintConfig.cpp:2067 +#: src/slic3r/GUI/Tab.cpp:1779 msgid "Temperature" msgstr "Temperatura" -#: src/libslic3r/PrintConfig.cpp:1804 +#: src/libslic3r/PrintConfig.cpp:1919 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 "Diferencia de temperatura que se aplicará cuando un extrusor no esté activo. ACtiva una falda \"de sacrificio\" de altura completa en la que las boquillas se limpian periódicamente." -#: src/libslic3r/PrintConfig.cpp:1803 +#: src/libslic3r/PrintConfig.cpp:1918 msgid "Temperature variation" msgstr "Variación de temperatura" -#: src/slic3r/GUI/ConfigWizard.cpp:1017 +#: src/slic3r/GUI/ConfigWizard.cpp:1383 msgid "Temperatures" msgstr "Temperaturas" -#: src/slic3r/GUI/Tab.cpp:1677 src/slic3r/GUI/Tab.cpp:1915 +#: src/slic3r/GUI/Tab.cpp:2215 +msgid "Template Custom G-code" +msgstr "Plantilla Código G Personalizado" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:284 msgid "Test" msgstr "Test" -#: src/slic3r/GUI/BedShapeDialog.cpp:172 +#: src/slic3r/GUI/BedShapeDialog.cpp:315 msgid "Texture" msgstr "Textura" -#: src/slic3r/GUI/ConfigManipulation.cpp:208 +#: src/slic3r/GUI/ConfigManipulation.cpp:207 msgid "The %1% infill pattern is not supposed to work at 100%% density." msgstr "Se supone que el patrón de relleno %1% no funciona a una densidad del 100%%." @@ -7663,131 +8828,148 @@ msgstr "" "No se encontró el dispositivo %s. \n" "Si el dispositivo está conectado, presione el botón Reset al lado del conector USB ..." -#: src/slic3r/GUI/Tab.cpp:976 +#: src/slic3r/GUI/Tab.cpp:1238 msgid "The current custom preset will be detached from the parent system preset." msgstr "El preajuste personalizado actual se separará del preajuste del sistema principal." -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:875 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:925 msgid "" "The currently manipulated object is tilted (rotation angles are not multiples of 90°).\n" "Non-uniform scaling of tilted objects is only possible in the World coordinate system,\n" "once the rotation is embedded into the object coordinates." msgstr "El objeto que está manipulando está inclinado (los ángulos de rotación no son múltiplos de 90º). El escalado no uniforme de objetos inclinados sólo es posible en sistema de coordenadas Mundo, una vez que la rotación se ha aplicado a las coordenadas del objeto." -#: src/libslic3r/PrintConfig.cpp:2726 +#: src/libslic3r/PrintConfig.cpp:2890 msgid "The default angle for connecting support sticks and junctions." msgstr "El ángulo por defecto para la conexión de sticks y uniones de soporte." -#: src/libslic3r/SLAPrint.cpp:631 +#: src/libslic3r/SLAPrint.cpp:645 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 "Las terminaciones de los pilares de soporte se desplegarán en el espacio entre el objeto y el pad. La 'distancia de seguridad de la base de soporte' debe ser mayor que el parámetro 'Distancia entre objetos de relleno' para evitar esto." -#: src/libslic3r/PrintConfig.cpp:489 +#: src/libslic3r/PrintConfig.cpp:525 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 "La extrusora que se usa (a menos que se especifiquen configuraciones de extrusión más específicas). Este valor anula los extrusores de perímetro y relleno, pero no los extrusores de soporte." -#: src/libslic3r/PrintConfig.cpp:1003 +#: src/libslic3r/PrintConfig.cpp:1047 msgid "The extruder to use when printing infill." msgstr "El extrusor que se usa cuando se imprime relleno." -#: src/libslic3r/PrintConfig.cpp:1410 +#: src/libslic3r/PrintConfig.cpp:1518 msgid "The extruder to use when printing perimeters and brim. First extruder is 1." msgstr "El extrusor que se usa al imprimir perímetros y borde. El primer extrusor es 1." -#: src/libslic3r/PrintConfig.cpp:1738 +#: src/libslic3r/PrintConfig.cpp:1853 msgid "The extruder to use when printing solid infill." msgstr "El extrusor que se usa al imprimir relleno sólido." -#: src/libslic3r/PrintConfig.cpp:1966 +#: src/libslic3r/PrintConfig.cpp:2108 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 "La extrusora que se usa al imprimir la interfaz de material de soporte (1+, 0 para usar la extrusora actual para minimizar los cambios de herramientas). Esto también afecta a la balsa." -#: src/libslic3r/PrintConfig.cpp:1939 +#: src/libslic3r/PrintConfig.cpp:2081 msgid "The extruder to use when printing support material, raft and skirt (1+, 0 to use the current extruder to minimize tool changes)." msgstr "El extrusor que se usa al imprimir material de soporte, balsa y falda (1+, 0 para usar la extrusora actual para minimizar los cambios de herramientas)." -#: src/libslic3r/PrintConfig.cpp:727 +#: src/libslic3r/PrintConfig.cpp:763 msgid "The filament material type for use in custom G-codes." msgstr "El tipo de material de filamento para uso en códigos G personalizados." -#: src/libslic3r/PrintConfig.cpp:3494 +#: src/libslic3r/PrintConfig.cpp:3693 msgid "The file where the output will be written (if not specified, it will be based on the input file)." msgstr "El archivo donde se escribirá el resultado (si no se especifica, se basará en en archivo de entrada)." -#: src/libslic3r/PrintConfig.cpp:1102 +#: src/libslic3r/PrintConfig.cpp:1195 msgid "The firmware supports stealth mode" msgstr "El firmware soporta el modo silencioso" -#: src/libslic3r/PrintConfig.cpp:120 +#: src/libslic3r/PrintConfig.cpp:122 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 "La primera capa se contraerá en el plano XY por el valor configurado para compensar el aplatamiento de la 1ª capa, también conocido como efecto Pie de Elefante." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3820 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3927 src/slic3r/GUI/Tab.cpp:3457 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4283 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4410 +#: src/slic3r/GUI/SavePresetDialog.cpp:117 msgid "the following characters are not allowed:" msgstr "los siguientes caracteres no están permitidos:" -#: src/slic3r/GUI/ConfigWizard.cpp:1830 +#: src/slic3r/GUI/ConfigWizard.cpp:2257 msgid "The following FFF printer models have no filament selected:" msgstr "Los siguientes modelos de impresoras FFF no tienen filamento seleccionado:" -#: src/slic3r/GUI/ConfigWizard.cpp:1848 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1004 +msgid "The following presets were modified:" +msgstr "Los siguientes ajustes fueron modificados:" + +#: 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:" -#: src/slic3r/GUI/Tab.cpp:3461 +#: src/slic3r/GUI/SavePresetDialog.cpp:125 msgid "the following suffix is not allowed:" msgstr "el siguiente sufijo no está permitido:" -#: src/libslic3r/PrintConfig.cpp:2871 +#: src/libslic3r/PrintConfig.cpp:3035 msgid "The gap between the object bottom and the generated pad in zero elevation mode." msgstr "El espacio entre la parte de debajo del objeto y el pad generado en el modo de cero elevación." -#: src/libslic3r/PrintConfig.cpp:2704 +#: src/libslic3r/PrintConfig.cpp:2868 msgid "The height of the pillar base cone" msgstr "La altura del cono de la base de un pilar" -#: src/slic3r/GUI/DoubleSlider.cpp:1922 +#: src/slic3r/GUI/DoubleSlider.cpp:2140 msgid "The last color change data was saved for a multi extruder printing with tool changes for whole print." msgstr "La información del último cambio de color se guardó para impresión con múltiples extrusores mediante cambios de herramienta para toda la impresión." -#: src/slic3r/GUI/DoubleSlider.cpp:1900 src/slic3r/GUI/DoubleSlider.cpp:1916 +#: src/slic3r/GUI/DoubleSlider.cpp:2119 src/slic3r/GUI/DoubleSlider.cpp:2134 msgid "The last color change data was saved for a multi extruder printing." msgstr "La información del último cambio de color se guardó para la impresión multi-extrusor." -#: src/slic3r/GUI/DoubleSlider.cpp:1899 +#: src/slic3r/GUI/DoubleSlider.cpp:2118 msgid "The last color change data was saved for a single extruder printing." msgstr "La información del último cambio de color se ha guardado para impresión con un solo extrusor." -#: src/libslic3r/PrintConfig.cpp:2745 +#: src/libslic3r/PrintConfig.cpp:2909 msgid "The max distance of two pillars to get linked with each other. A zero value will prohibit pillar cascading." msgstr "La distancia máxima entre dos pilares par que se unan entre si. Un valor cero prohibirá el encadenamiento de pilares." -#: src/libslic3r/PrintConfig.cpp:2736 +#: src/libslic3r/PrintConfig.cpp:2900 msgid "The max length of a bridge" msgstr "La longitud máxima de un puente" -#: src/libslic3r/PrintConfig.cpp:2714 +#: 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." -#: src/libslic3r/PrintConfig.cpp:185 +#: src/slic3r/GUI/SavePresetDialog.cpp:142 +msgid "The name cannot be empty." +msgstr "El nombre no puede estar vacío." + +#: 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." -#: src/libslic3r/PrintConfig.cpp:2143 +#: src/libslic3r/PrintConfig.cpp:2286 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 "El número de capas sólidas en la parte superior se incrementa sobre top_solid_layers si es necesario para satisfacer la altura mínima de la tapa superior. Esto es útil para prevenir el efecto de achatado cuando se imprime con altura de capa variable." -#: src/libslic3r/PrintConfig.cpp:2277 +#: src/slic3r/GUI/Plater.cpp:2326 +msgid "The object appears to be saved in inches" +msgstr "La pieza parece que se guardó en pulgadas" + +#: src/libslic3r/PrintConfig.cpp:2420 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 "El objeto se crecerá / reducirá en el plano XY por el valor configurado (negativo = hacia adentro, positivo = hacia afuera). Esto podría ser útil para ajustar el tamaño de los orificios." -#: src/libslic3r/PrintConfig.cpp:1503 +#: src/libslic3r/PrintConfig.cpp:1611 msgid "The object will be raised by this number of layers, and support material will be generated under it." msgstr "El objeto será elevado por este número de capas y se generará material de soporte debajo de él." -#: src/libslic3r/PrintConfig.cpp:2424 +#: src/libslic3r/PrintConfig.cpp:2803 +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 "El porcentaje de pilares más pequeños en comparación con el diámetro de pilar normal que se utilizan en áreas problemáticas donde no cabe un pilar normal." + +#: src/libslic3r/PrintConfig.cpp:2567 msgid "" "The percentage of the bed area. \n" "If the print area exceeds the specified value, \n" @@ -7797,39 +8979,51 @@ msgstr "" "Si el área de impresión excede el valor especificado, \n" "entonces se utilizará una inclinación lenta, de lo contrario - una inclinación rápida" -#: src/slic3r/GUI/GUI_App.cpp:932 -msgid "The presets on the following tabs were modified" -msgstr "Los presets en las siguientes pestañas fueron modificados" +#: src/slic3r/GUI/Tab.cpp:3430 +msgid "The physical printer(s) below is based on the preset, you are going to delete." +msgstr "Las siguientes impresoras físicas se basan en el ajuste preestablecido que va a eliminar." -#: src/libslic3r/PrintConfig.cpp:1846 +#: src/slic3r/GUI/Tab.cpp:3438 +msgid "The physical printer(s) below is based only on the preset, you are going to delete." +msgstr "Las siguientes impresoras están basadas en el mismo ajuste que vas a borrar." + +#: src/slic3r/GUI/GUI_App.cpp:1676 +msgid "The preset(s) modifications are successfully saved" +msgstr "Las modificaciones de los ajustes preestablecidos se guardaron correctamente" + +#: src/libslic3r/PrintConfig.cpp:1988 msgid "The printer multiplexes filaments into a single hot end." msgstr "La impresora multiplexa los filamentos en un solo fusor." -#: src/libslic3r/Format/3mf.cpp:1630 +#: src/libslic3r/Format/3mf.cpp:1667 msgid "The selected 3mf file has been saved with a newer version of %1% and is not compatible." msgstr "El archivo 3mf seleccionado se ha guardado con una versión más reciente de %1% y no es compatible." -#: src/libslic3r/Format/AMF.cpp:934 +#: src/libslic3r/Format/AMF.cpp:955 msgid "The selected amf file has been saved with a newer version of %1% and is not compatible." msgstr "El archivo amf seleccionado se ha guardado con una versión más reciente de %1% y no es compatible." -#: src/slic3r/GUI/BedShapeDialog.cpp:513 +#: src/slic3r/GUI/Plater.cpp:4751 +msgid "The selected file" +msgstr "El archivo seleccionado" + +#: src/slic3r/GUI/BedShapeDialog.cpp:589 msgid "The selected file contains no geometry." msgstr "El archivo seleccionado no contiene geometría." -#: src/slic3r/GUI/BedShapeDialog.cpp:517 +#: src/slic3r/GUI/BedShapeDialog.cpp:593 msgid "The selected file contains several disjoint areas. This is not supported." msgstr "El archivo seleccionado contiene varias áreas disjuntas. Esto no es compatible." -#: src/slic3r/GUI/Plater.cpp:2970 +#: src/slic3r/GUI/Plater.cpp:2763 msgid "The selected object can't be split because it contains more than one volume/material." msgstr "El objeto seleccionado no se puede dividir porque contiene más de un volumen / material." -#: src/slic3r/GUI/GUI_ObjectList.cpp:2270 src/slic3r/GUI/Plater.cpp:2978 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2436 src/slic3r/GUI/Plater.cpp:2771 msgid "The selected object couldn't be split because it contains only one part." msgstr "El objeto seleccionado no se pudo dividir porque contiene solo una parte." -#: src/slic3r/GUI/MainFrame.cpp:461 +#: src/slic3r/GUI/MainFrame.cpp:1003 msgid "" "The selected project is no longer available.\n" "Do you want to remove it from the recent projects list?" @@ -7837,7 +9031,7 @@ msgstr "" "El proyecto seleccionado no está disponible.\n" "¿Desea eliminarlo de la lista de proyectos recientes?" -#: src/slic3r/GUI/DoubleSlider.cpp:998 +#: src/slic3r/GUI/DoubleSlider.cpp:1121 msgid "" "The sequential print is on.\n" "It's impossible to apply any custom G-code for objects printing sequentually.\n" @@ -7847,20 +9041,24 @@ msgstr "" "Es imposible incluir G-code personalizado para piezas que se imprimen secuencialmente.\n" "Este código no se procesará durante la generación del G-code." -#: src/libslic3r/PrintConfig.cpp:2846 +#: src/slic3r/GUI/ConfigWizard.cpp:1187 +msgid "The size of the object can be specified in inches" +msgstr "El tamaño del objeto puede ser especificado en pulgadas" + +#: src/libslic3r/PrintConfig.cpp:3010 msgid "The slope of the pad wall relative to the bed plane. 90 degrees means straight walls." msgstr "La pendiente de la pared del pad en relación con el plano de la cama. 90 grados significa paredes rectas." -#: src/libslic3r/PrintConfig.cpp:1614 +#: src/libslic3r/PrintConfig.cpp:1722 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 "La velocidad de carga de un filamento en la extrusora después de la retracción (solo se aplica al motor del extrusor). Si se deja a cero, se usa la velocidad de retracción." -#: src/libslic3r/PrintConfig.cpp:1606 +#: src/libslic3r/PrintConfig.cpp:1714 msgid "The speed for retractions (it only applies to the extruder motor)." msgstr "La velocidad para las retracciones (solo se aplica al motor del extrusor)." -#: src/slic3r/GUI/ConfigManipulation.cpp:81 -#, no-c-format +#: src/slic3r/GUI/ConfigManipulation.cpp:80 +#, c-format msgid "" "The Spiral Vase mode requires:\n" "- one perimeter\n" @@ -7878,52 +9076,53 @@ msgstr "" "-Comprueba que está activado el espesor de pared vertical\n" "-Desactiva la detección de paredes finas" -#: src/libslic3r/Print.cpp:1237 +#: 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:1244 +#: 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." -#: src/slic3r/GUI/Tab.cpp:3068 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:464 msgid "The supplied name is empty. It can't be saved." msgstr "El nombre proporcionado está vacío. No se puede guardar." -#: src/slic3r/GUI/Tab.cpp:3465 +#: src/slic3r/GUI/SavePresetDialog.cpp:131 msgid "The supplied name is not available." msgstr "El nombre proporcionado no está disponible." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3819 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3926 src/slic3r/GUI/Tab.cpp:3456 -#: src/slic3r/GUI/Tab.cpp:3460 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4282 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4409 +#: src/slic3r/GUI/SavePresetDialog.cpp:116 +#: src/slic3r/GUI/SavePresetDialog.cpp:124 msgid "The supplied name is not valid;" msgstr "El nombre proporcionado no es válido;" -#: src/libslic3r/Print.cpp:1222 +#: src/libslic3r/Print.cpp:1248 msgid "The supplied settings will cause an empty print." msgstr "Los ajustes proporcionados causarán una impresión vacía." -#: src/libslic3r/PrintConfig.cpp:2789 +#: src/libslic3r/PrintConfig.cpp:2953 msgid "The thickness of the pad and its optional cavity walls." msgstr "El grosor de las pads y sus paredes de cavidad opcionales." -#: src/libslic3r/PrintConfig.cpp:1911 +#: 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." -#: src/slic3r/GUI/Tab.cpp:2575 +#: src/slic3r/GUI/Tab.cpp:2731 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 "La opción Limpiar no está disponible cuando se usa el modo Retracción de firmware. ¿Lo inhabilito para habilitar la Retracción de firmware?" -#: src/libslic3r/Print.cpp:1268 +#: src/libslic3r/Print.cpp:1294 msgid "The Wipe Tower currently does not support volumetric E (use_volumetric_e=0)." msgstr "La Torre de Limpieza actualmente no es compatible con E volumétrico (use_volumetric_e=0)." -#: src/slic3r/GUI/ConfigManipulation.cpp:115 +#: src/slic3r/GUI/ConfigManipulation.cpp:114 msgid "" "The Wipe Tower currently supports the non-soluble supports only\n" "if they are printed with the current extruder without triggering a tool change.\n" @@ -7932,51 +9131,55 @@ msgstr "" "La Torre de Limpieza actualmente admite los soportes no solubles solo si están impresos con el extrusor actual sin activar un cambio de herramienta. \n" "(tanto support_material_extruder como support_material_interface_extruder deben configurarse en 0)." -#: src/libslic3r/Print.cpp:1400 +#: src/libslic3r/Print.cpp:1426 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 support_material_extruder and support_material_interface_extruder need to be set to 0)." msgstr "La Torre de Limpieza actualmente admite los soportes no solubles solo si están impresos con el extrusor actual sin activar un cambio de herramienta. (Tanto support_material_extruder como support_material_interface_extruder deben configurarse en 0)." -#: src/libslic3r/Print.cpp:1270 +#: src/libslic3r/Print.cpp:1296 msgid "The Wipe Tower is currently not supported for multimaterial sequential prints." msgstr "La Torre de Limpieza no se permite ahora para impresiones secuenciales multimaterial." -#: src/libslic3r/Print.cpp:1262 -msgid "The Wipe Tower is currently only supported for the Marlin, RepRap/Sprinter and Repetier G-code flavors." -msgstr "Actualmente, La Torre de Limpieza solo es compatible con los tipos de código G de Marlin, RepRap/Sprinter y Repetier." +#: src/libslic3r/Print.cpp:1290 +msgid "The Wipe Tower is currently only supported for the Marlin, RepRap/Sprinter, RepRapFirmware and Repetier G-code flavors." +msgstr "La Torre de Limpieza solo es compatible con las variantes de código G usadas por Marlin, RepRap/Sprinter, RepRapFirmware y Repetier." -#: src/libslic3r/Print.cpp:1264 +#: src/libslic3r/Print.cpp:1290 msgid "The Wipe Tower is currently only supported with the relative extruder addressing (use_relative_e_distances=1)." msgstr "En la actualidad, Wipe Tower solo es compatible con el direccionamiento relativo del extrusor (use_relative_e_distances=1)." -#: src/libslic3r/Print.cpp:1293 +#: src/libslic3r/Print.cpp:1319 msgid "The Wipe Tower is only supported for multiple objects if they are printed over an equal number of raft layers" msgstr "La torre de limpieza sólo se permite para varios objetos si se imprimen sobre un número igual de capas de balsa" -#: src/libslic3r/Print.cpp:1295 +#: src/libslic3r/Print.cpp:1321 msgid "The Wipe Tower is only supported for multiple objects if they are printed with the same support_material_contact_distance" msgstr "La torre de limpieza sólo es compatible con varios objetos si se imprimen con la misma support_material_contact_distance" -#: src/libslic3r/Print.cpp:1297 +#: src/libslic3r/Print.cpp:1323 msgid "The Wipe Tower is only supported for multiple objects if they are sliced equally." msgstr "La torre de limpieza sólo es compatible con varios objetos si se cortan por igual." -#: src/libslic3r/Print.cpp:1291 +#: src/libslic3r/Print.cpp:1317 msgid "The Wipe Tower is only supported for multiple objects if they have equal layer heights" msgstr "La torre de limpieza sólo es compatible con varios objetos si tienen alturas de capas iguales" -#: src/libslic3r/Print.cpp:1257 +#: src/libslic3r/Print.cpp:1283 msgid "The wipe tower is only supported if all extruders have the same nozzle diameter and use filaments of the same diameter." msgstr "La torre de limpieza solo es compatible si todos los extrusores tienen el mismo diámetro del nozzle y usan filamento del mismo diámetro." -#: src/libslic3r/Print.cpp:1339 +#: src/libslic3r/Print.cpp:1365 msgid "The Wipe tower is only supported if all objects have the same variable layer height" msgstr "La Torre de Limpieza solo es compatible si todos los objetos tienen la misma altura de capa variable" -#: src/libslic3r/SLAPrintSteps.cpp:621 +#: src/slic3r/GUI/Plater.cpp:3563 +msgid "There are active warnings concerning sliced models:" +msgstr "Hay avisos activos respecto a los modelos laminados:" + +#: src/libslic3r/SLAPrintSteps.cpp:619 msgid "There are unprintable objects. Try to adjust support settings to make the objects printable." msgstr "Hay objetos no imprimibles. Intenta ajustar la configuración de soportes para que los objetos se puedan imprimir." -#: src/slic3r/GUI/DoubleSlider.cpp:1030 +#: src/slic3r/GUI/DoubleSlider.cpp:1155 msgid "" "There is a color change for extruder that has not been used before.\n" "Check your settings to avoid redundant color changes." @@ -7984,13 +9187,13 @@ msgstr "" "Hay un cambio de color para el extrusor que no se ha usado antes. \n" "Comprueba tus ajustes para evitar cambios de color innecesarios." -#: src/slic3r/GUI/DoubleSlider.cpp:1024 +#: src/slic3r/GUI/DoubleSlider.cpp:1149 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 "Hay un cambio de color para el extrusor que no será usado hasta el final del trabajo de impresión. Este código no será procesado durante la generación del G-code." -#: src/slic3r/GUI/DoubleSlider.cpp:1027 +#: src/slic3r/GUI/DoubleSlider.cpp:1152 msgid "" "There is an extruder change set to the same extruder.\n" "This code won't be processed during G-code generation." @@ -7998,12 +9201,16 @@ msgstr "" "Hay un cambio de extrusor establecido en el mismo extrusor.\n" "Este código no se procesará durante la generación del código G." +#: src/libslic3r/GCode.cpp:604 +msgid "There is an object with no extrusions on the first layer." +msgstr "Hay un objeto sin extrusiones en la primera capa." + #: src/slic3r/GUI/UpdateDialogs.cpp:225 #, c-format msgid "This %s version: %s" msgstr "Esta %s versión: %s" -#: src/slic3r/GUI/Tab.cpp:982 +#: src/slic3r/GUI/Tab.cpp:1244 msgid "" "This action is not revertable.\n" "Do you want to proceed?" @@ -8011,79 +9218,79 @@ msgstr "" "Esta acción no es reversible.\n" "¿Deseas continuar?" -#: src/libslic3r/PrintConfig.cpp:165 +#: src/libslic3r/PrintConfig.cpp:199 msgid "This code is inserted between objects when using sequential printing. By default extruder and bed temperature are reset using non-wait command; however if M104, M109, M140 or M190 are detected in this custom code, Slic3r will not add temperature commands. Note that you can use placeholder variables for all Slic3r settings, so you can put a \"M109 S[first_layer_temperature]\" command wherever you want." msgstr "Este código se inserta entre los objetos cuando se utiliza la impresión secuencial. Por defecto, el extrusor y la temperatura de la cama se reinician utilizando un comando de no espera; sin embargo, si se detectan M104, M109, M140 o M190 en este código personalizado, Slic3r no agregará comandos de temperatura. Tenga en cuenta que puede usar variables de marcador de posición para todas las configuraciones de Slic3r, por lo que puede poner un comando \"M109 S [first_layer_temperature]\" donde lo desee." -#: src/libslic3r/PrintConfig.cpp:1081 +#: src/libslic3r/PrintConfig.cpp:1174 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 use placeholder variables for all Slic3r settings as well as [layer_num] and [layer_z]." msgstr "Este código personalizado se inserta en cada cambio de capa, justo después del movimiento Z y antes de que el extrusor se mueva al primer punto de capa. Tenga en cuenta que puede usar variables de marcador de posición para todos los ajustes de Slic3r, así como [layer_num] y [layer_z]." -#: src/libslic3r/PrintConfig.cpp:154 +#: src/libslic3r/PrintConfig.cpp:188 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 "Este código personalizado se inserta en cada cambio de capa, justo antes del movimiento Z. Tenga en cuenta que puede usar variables de marcador de posición para todos los ajustes de Slic3r, así como [layer_num] y [layer_z]." -#: src/libslic3r/PrintConfig.cpp:2094 +#: src/libslic3r/PrintConfig.cpp:2237 msgid "This custom code is inserted before every toolchange. Placeholder variables for all PrusaSlicer settings as well as {previous_extruder} and {next_extruder} can be used. When a tool-changing command which changes to the correct extruder is included (such as T{next_extruder}), PrusaSlicer will emit no other such command. It is therefore possible to script custom behaviour both before and after the toolchange." msgstr "Este código personalizado se inserta antes de cada cambio de herramienta. Se pueden utilizar variables de marcador de posición para todas las configuraciones de PrusaSlicer, así como {previous_extruder} y {next_extruder}. Cuando se incluye un comando de cambio de herramienta que cambia al extrusor correcto (como T{next_extruder}), PrusaSlicer no emitirá ningún otro comando. Por lo tanto, es posible escribir un comportamiento personalizado antes y después del cambio de herramienta." -#: src/libslic3r/PrintConfig.cpp:396 +#: src/libslic3r/PrintConfig.cpp:430 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 multimaterial printers). Note that you can use placeholder variables for all PrusaSlicer settings. If you have multiple extruders, the gcode is processed in extruder order." msgstr "Este procedimiento final se inserta al final del archivo de salida, antes del código G final de la impresora (y antes de cualquier cambio de herramienta desde este filamento en el caso de impresoras multimateriales). Ten en cuenta que puede usar variables de marcador de posición para todas las configuraciones de PrusaSlicer. Si tienes varios extrusores, el código G se procesa en orden de extrusor." -#: src/libslic3r/PrintConfig.cpp:386 +#: src/libslic3r/PrintConfig.cpp:420 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 "Este procedimiento final se inserta al final del archivo de salida. Ten en cuenta que puedes usar variables de marcador de posición para todas las configuraciones de PrusaSlicer." -#: src/libslic3r/PrintConfig.cpp:1258 src/libslic3r/PrintConfig.cpp:1269 +#: src/libslic3r/PrintConfig.cpp:1366 src/libslic3r/PrintConfig.cpp:1377 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 of 1.8 mm³/s (0.45mm extrusion width, 0.2mm extrusion height, feedrate 20 mm/s) to 5.4 mm³/s (feedrate 60 mm/s) will take at least 2 seconds." msgstr "Esta configuración experimental se usa para limitar la velocidad de cambio en la velocidad de extrusión. Un valor de 1,8 mm³ / s² asegura que se cambia la velocidad de extrusión de 1,8 mm³ / s (ancho de extrusión de 0,45 mm, altura de extrusión de 0,2 mm, avance de 20 mm / s) a 5,4 mm³ / s (avance de 60 mm / s) durará al menos 2 segundos." -#: src/libslic3r/PrintConfig.cpp:1248 +#: src/libslic3r/PrintConfig.cpp:1356 msgid "This experimental setting is used to set the maximum volumetric speed your extruder supports." msgstr "Esta configuración experimental se usa para establecer la velocidad volumétrica máxima que admite el extrusor." -#: src/libslic3r/PrintConfig.cpp:2162 +#: src/libslic3r/PrintConfig.cpp:2305 msgid "This experimental setting uses G10 and G11 commands to have the firmware handle the retraction. This is only supported in recent Marlin." msgstr "Esta configuración experimental utiliza comandos G10 y G11 para que el firmware maneje la retracción. Esto solo se admite en Marlin reciente." -#: src/libslic3r/PrintConfig.cpp:2176 +#: src/libslic3r/PrintConfig.cpp:2319 msgid "This experimental setting uses outputs the E values in cubic millimeters instead of linear millimeters. If your firmware doesn't already know filament diameter(s), you can put commands like 'M200 D[filament_diameter_0] T0' in your start G-code in order to turn volumetric mode on and use the filament diameter associated to the filament selected in Slic3r. This is only supported in recent Marlin." msgstr "Este ajuste experimental utiliza como salida del E valores en milímetros cúbicos en lugar de milímetros lineales. Si su firmware aún no conoce el (los) diámetro (s) del filamento, puede poner comandos como 'M200 D [filament_diameter_0] T0' en su código G inicial para activar el modo volumétrico y usar el diámetro del filamento asociado al filamento seleccionado. en Slic3r. Esto solo se admite en Marlin reciente." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3972 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4459 msgid "This extruder will be set for selected items" msgstr "Este extrusor se aplicará a los objetos seleccionados" -#: src/libslic3r/PrintConfig.cpp:224 +#: 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 "Este factor afecta la cantidad de plástico para formar puentes. Puede disminuirlo ligeramente para extraer los extruidos y evitar el combado, aunque la configuración predeterminada suele ser buena y debe experimentar con la refrigeración (usar un ventilador) antes de ajustar esto." -#: src/libslic3r/PrintConfig.cpp:546 +#: 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 "Este factor cambia la cantidad de flujo proporcionalmente. Es posible que necesite ajustar esta configuración para obtener un buen acabado superficial y corregir el ancho de una sola pared. Los valores usuales están entre 0.9 y 1.1. Si cree que necesita cambiar esto más, verifique el diámetro del filamento y los pasos del E en el firmware." -#: src/libslic3r/PrintConfig.cpp:214 +#: src/libslic3r/PrintConfig.cpp:248 msgid "This fan speed is enforced during all bridges and overhangs." msgstr "La velocidad de este ventilador se aplica durante todos los puentes y voladizos." -#: src/libslic3r/PrintConfig.cpp:992 +#: src/libslic3r/PrintConfig.cpp:1036 msgid "This feature allows to combine infill and speed up your print by extruding thicker infill layers while preserving thin perimeters, thus accuracy." msgstr "Esta característica permite combinar el relleno y acelerar la impresión mediante la extrusión de capas de relleno más gruesas a la vez que se preservan los finos perímetros y, por lo tanto, la precisión." -#: src/libslic3r/PrintConfig.cpp:1746 +#: src/libslic3r/PrintConfig.cpp:1861 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:1795 +#: 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/slic3r/GUI/Plater.cpp:2367 +#: 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 "Este archivo no puede ser cargado en un modo sencillo. ¿Quieres cambiar al modo experto?" -#: src/slic3r/GUI/Plater.cpp:2357 +#: src/slic3r/GUI/Plater.cpp:2319 msgid "" "This file contains several objects positioned at multiple heights.\n" "Instead of considering them as multiple objects, should I consider\n" @@ -8108,84 +9315,96 @@ msgstr "" "¿Quieres continuar y grabar este archivo hex de todos modos?\n" "Por favor continúa solo si estás seguro de que es lo correcto." -#: src/libslic3r/PrintConfig.cpp:314 +#: src/libslic3r/PrintConfig.cpp:348 msgid "This flag enables the automatic cooling logic that adjusts print speed and fan speed according to layer printing time." msgstr "Este indicador habilita la lógica de enfriamiento automático que ajusta la velocidad de impresión y la velocidad del ventilador según el tiempo de impresión de la capa." -#: src/slic3r/GUI/Plater.cpp:536 +#: src/slic3r/GUI/Plater.cpp:402 msgid "This flag enables the brim that will be printed around each object on the first layer." msgstr "Esta opción activa la balsa que se imprimirá alrededor del objeto en la primera capa." -#: src/libslic3r/PrintConfig.cpp:1538 +#: src/libslic3r/PrintConfig.cpp:1646 msgid "This flag enforces a retraction whenever a Z move is done." msgstr "Esta bandera impone una retractación cada vez que se realiza un movimiento Z." -#: src/libslic3r/PrintConfig.cpp:2194 +#: src/libslic3r/PrintConfig.cpp:2337 msgid "This flag will move the nozzle while retracting to minimize the possible blob on leaky extruders." msgstr "Esta bandera moverá la boquilla mientras se retrae para minimizar la posible mancha en los extrusores con fugas." -#: src/slic3r/GUI/Tab.cpp:953 +#: src/libslic3r/PrintConfig.cpp:1961 +msgid "This G-code will be used as a code for the color change" +msgstr "Este código G se utilizará como código para el cambio de color" + +#: src/libslic3r/PrintConfig.cpp:1970 +msgid "This G-code will be used as a code for the pause print" +msgstr "Este código G se utilizará como código para la pausa de impresión" + +#: src/libslic3r/PrintConfig.cpp:1979 +msgid "This G-code will be used as a custom code" +msgstr "Este código G se utilizará como código personalizado" + +#: src/slic3r/GUI/Tab.cpp:1272 msgid "This is a default preset." msgstr "Este es un preajuste preestablecido." -#: src/libslic3r/PrintConfig.cpp:2766 +#: src/libslic3r/PrintConfig.cpp:2930 msgid "This is a relative measure of support points density." msgstr "Esta es una medida relativa de la densidad de los puntos de soporte." -#: src/slic3r/GUI/Tab.cpp:2338 +#: src/slic3r/GUI/Tab.cpp:2507 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 "Esta es una impresora multimaterial de extrusor único, los diámetros de todas los extrusores se establecerán según el nuevo valor. ¿Quieres proceder?" -#: src/slic3r/GUI/Tab.cpp:955 +#: src/slic3r/GUI/Tab.cpp:1274 msgid "This is a system preset." msgstr "Este es un preajuste del sistema." -#: src/libslic3r/PrintConfig.cpp:523 src/libslic3r/PrintConfig.cpp:583 +#: src/libslic3r/PrintConfig.cpp:559 src/libslic3r/PrintConfig.cpp:619 msgid "This is only used in the Slic3r interface as a visual help." msgstr "Esto solo se usa en la interfaz de Slic3r como ayuda visual." -#: src/libslic3r/PrintConfig.cpp:336 +#: src/libslic3r/PrintConfig.cpp:370 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 "Esta es la aceleración después de que se usen los valores de aceleración específicos de cada función (perímetro / relleno). Establezca cero para evitar restablecer la aceleración." -#: src/libslic3r/PrintConfig.cpp:194 +#: src/libslic3r/PrintConfig.cpp:228 msgid "This is the acceleration your printer will use for bridges. Set zero to disable acceleration control for bridges." msgstr "Esta es la aceleración que su impresora usará para los puentes. Establezca cero para deshabilitar el control de aceleración para puentes." -#: src/libslic3r/PrintConfig.cpp:860 +#: src/libslic3r/PrintConfig.cpp:900 msgid "This is the acceleration your printer will use for first layer. Set zero to disable acceleration control for first layer." msgstr "Esta es la aceleración que su impresora usará para la primera capa. Establezca cero para deshabilitar el control de aceleración para la primera capa." -#: src/libslic3r/PrintConfig.cpp:982 +#: src/libslic3r/PrintConfig.cpp:1026 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 cero para deshabilitar el control de aceleración para el relleno." -#: src/libslic3r/PrintConfig.cpp:1400 +#: 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 cero para deshabilitar el control de aceleración para los perímetros." -#: src/libslic3r/PrintConfig.cpp:1327 +#: src/libslic3r/PrintConfig.cpp:1435 msgid "This is the diameter of your extruder nozzle (for example: 0.5, 0.35 etc.)" msgstr "Este es el diámetro de la boquilla de su extrusor (por ejemplo: 0.5, 0.35, etc.)" -#: src/libslic3r/PrintConfig.cpp:1227 -#, no-c-format +#: src/libslic3r/PrintConfig.cpp:1335 +#, c-format msgid "This is the highest printable layer height for this extruder, used to cap the variable layer height and support layer height. Maximum recommended layer height is 75% of the extrusion width to achieve reasonable inter-layer adhesion. If set to 0, layer height is limited to 75% of the nozzle diameter." msgstr "Esta es la altura más alta imprimible de capa para este extrusor, que se utiliza para cubrir la altura de la capa variable y la altura de la capa de soporte. La altura máxima recomendada de la capa es del 75% del ancho de extrusión para lograr una adhesión razonable entre capas. Si se establece en 0, la altura de la capa se limita al 75% del diámetro de la boquilla." -#: src/libslic3r/PrintConfig.cpp:1290 +#: src/libslic3r/PrintConfig.cpp:1398 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 "Esta es la altura más baja de la capa imprimible para este extrusor y limita la resolución para la altura de la capa variable. Los valores típicos están entre 0.05 mm y 0.1 mm." -#: src/libslic3r/GCode.cpp:639 +#: src/libslic3r/GCode.cpp:624 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 "Esto generalmente es causado por extrusiones insignificantemente pequeñas o por un modelo defectuoso. Intenta reparar el modelo o cambia su orientación en la cama." -#: src/libslic3r/PrintConfig.cpp:2215 +#: src/libslic3r/PrintConfig.cpp:2358 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 "Esta matriz detalla los volúmenes (en milímetros cúbicos) necesarios para purgar el nuevo filamento en la torre de limpieza para cualquier par de filamentos." -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:878 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:928 msgid "" "This operation is irreversible.\n" "Do you want to proceed?" @@ -8193,31 +9412,35 @@ msgstr "" "Esta operación es irreversible. \n" "¿Deseas continuar?" -#: src/libslic3r/PrintConfig.cpp:1442 +#: src/libslic3r/PrintConfig.cpp:1550 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 surfaces which benefit from a higher number of perimeters if the Extra Perimeters option is enabled." msgstr "Esta opción establece la cantidad de perímetros que se generarán para cada capa. Tenga en cuenta que Slic3r puede aumentar este número automáticamente cuando detecta superficies inclinadas que se benefician de un mayor número de perímetros si la opción Perímetros adicionales está habilitada." -#: src/libslic3r/PrintConfig.cpp:1356 +#: src/libslic3r/PrintConfig.cpp:1464 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 "Esta opción reducirá la temperatura de las extrusoras inactivas para evitar el goteo. Permitirá una falda alta automáticamente y moverá los extrusores fuera de dicha falda cuando cambie la temperatura." -#: src/libslic3r/PrintConfig.cpp:1029 +#: src/libslic3r/PrintConfig.cpp:1073 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 "Esta opción limitará el relleno a las áreas realmente necesarias para soportar techos (actuará como material de soporte interno). Si está habilitado, ralentiza la generación del código G debido a las múltiples comprobaciones involucradas." -#: src/libslic3r/PrintConfig.cpp:1022 +#: src/libslic3r/PrintConfig.cpp:1066 msgid "This option will switch the print order of perimeters and infill, making the latter first." msgstr "Esta opción cambiará el orden de impresión de los perímetros y el relleno, haciendo que el último sea el primero." -#: src/libslic3r/PrintConfig.cpp:459 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:85 +msgid "This printer will be shown in the presets list as" +msgstr "Esta impresora se mostrará en la lista de ajustes preestablecidos como" + +#: src/libslic3r/PrintConfig.cpp:495 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 "Esta configuración independiente afectará la velocidad de los perímetros externos (los visibles). Si se expresa como porcentaje (por ejemplo: 80%), se calculará en la configuración de velocidad de perímetros anterior. Establecer a cero para auto." -#: src/libslic3r/PrintConfig.cpp:1717 +#: src/libslic3r/PrintConfig.cpp:1832 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 "Esta configuración por separado afectará la velocidad de los perímetros con un radio <= 6,5 mm (generalmente agujeros). Si se expresa como porcentaje (por ejemplo: 80%), se calculará en la configuración de velocidad de perímetros anterior. Establecer a cero para auto." -#: src/libslic3r/PrintConfig.cpp:1038 +#: src/libslic3r/PrintConfig.cpp:1082 msgid "This setting applies an additional overlap between infill and perimeters for better bonding. Theoretically this shouldn't be needed, but backlash might cause gaps. If expressed as percentage (example: 15%) it is calculated over perimeter extrusion width." msgstr "Esta configuración aplica una superposición adicional entre relleno y perímetros para una mejor unión. Teóricamente, esto no debería ser necesario, pero la reacción puede causar huecos. Si se expresa como porcentaje (ejemplo: 15%), se calcula sobre el ancho de extrusión del perímetro." @@ -8225,31 +9448,31 @@ msgstr "Esta configuración aplica una superposición adicional entre relleno y 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 "Esta configuración controla la altura (y, por tanto, el número total) de las láminas / capas. Las capas más delgadas brindan una mayor precisión pero requieren más tiempo para imprimir." -#: src/libslic3r/PrintConfig.cpp:1218 +#: src/libslic3r/PrintConfig.cpp:1326 msgid "This setting represents the maximum speed of your fan." msgstr "Esta configuración representa la velocidad máxima de su ventilador." -#: src/libslic3r/PrintConfig.cpp:1281 +#: src/libslic3r/PrintConfig.cpp:1389 msgid "This setting represents the minimum PWM your fan needs to work." msgstr "Este ajuste representa el PWM mínimo que el ventilador necesita para funcionar." -#: src/libslic3r/PrintConfig.cpp:1829 +#: src/libslic3r/PrintConfig.cpp:1944 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 printers). This is used to override settings for a specific filament. If PrusaSlicer detects M104, M109, M140 or M190 in your custom codes, such commands will not be prepended automatically so you're free to customize the order of heating commands and other custom actions. Note that you can use placeholder variables for all PrusaSlicer settings, so you can put a \"M109 S[first_layer_temperature]\" command wherever you want. If you have multiple extruders, the gcode is processed in extruder order." msgstr "Este procedimiento de inicio se inserta al principio, después de que cualquier impresora inicie un código G(y después de cualquier cambio de herramienta a este filamento en el caso de impresoras de materiales múltiples). Esto se utiliza para anular la configuración de un filamento específico. Si PrusaSlicer detecta un M104, M109, M140 o M190 en tus códigos personalizados, dichos comandos no se agregarán automáticamente, por lo que puede personalizar el orden de los comandos de calentamiento y otras acciones personalizadas. Ten en cuenta que puedes usar variables de marcador de posición para todas las configuraciones de PrusaSlicer, por lo que puedes colocar un comando \"M109 S [first_layer_temperature]\" donde lo desees. Si tienes varias extrusorrs, el código G se procesa en el orden del extrusor." -#: src/libslic3r/PrintConfig.cpp:1814 +#: src/libslic3r/PrintConfig.cpp:1929 msgid "This start procedure is inserted at the beginning, after bed has reached the target temperature and extruder just started heating, and before extruder has finished heating. If PrusaSlicer detects M104 or M190 in your custom codes, such commands will not be prepended automatically so you're free to customize the order of heating commands and other custom actions. Note that you can use placeholder variables for all PrusaSlicer settings, so you can put a \"M109 S[first_layer_temperature]\" command wherever you want." msgstr "Este procedimiento de inicio se inserta al principio, después de que la bse ha alcanzado la temperatura objetivo y el extrusor acaba de comenzar a calentar, y antes de que el extrusor haya terminado de calentar. Si PrusaSlicer detecta un M104 o M190 en tus códigos personalizados, dichos comandos no se agregarán automáticamente, por lo que se puede personalizar el orden de los comandos de calentamiento y otras acciones personalizadas. Ten en cuenta que puedes usar variables de marcador de posición para todas las configuraciones de PrusaSlicer, por lo que puedes colocar un comando \"M109 S [first_layer_temperature]\" donde lo desees." -#: src/libslic3r/PrintConfig.cpp:695 +#: src/libslic3r/PrintConfig.cpp:731 msgid "This string is edited by RammingDialog and contains ramming specific parameters." msgstr "Esta cadena se modifica con el Diálogo de Empuje y contiene parámetros específicos de empuje." -#: src/libslic3r/PrintConfig.cpp:2286 +#: src/libslic3r/PrintConfig.cpp:2429 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 example, if your endstop zero actually leaves the nozzle 0.3mm far from the print bed, set this to -0.3 (or fix your endstop)." msgstr "Este valor será añadido (o eliminado) de todas las coordenadas Z en el G-code de salida. Se usa para compensar una mala posición del final de carrera Z: por ejemplo, si tu interruptor deja la boquilla a 0.3mm de la base de impresión, ajustalo a -0.3 (o arregla tu interruptor)." -#: src/libslic3r/PrintConfig.cpp:2208 +#: src/libslic3r/PrintConfig.cpp:2351 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 "Este vector guarda los volúmenes necesarios para cambiar desde/hasta cada herramienta usada en la torre de limpieza. Estos valores se emplean para simplificar la creación de los volúmenes totales de purga más abajo." @@ -8265,82 +9488,96 @@ msgstr "" "\n" "Puedes salir de %s e intentarlo de nuevo con una versión más reciente, o puedes volver a ejecutar la configuración inicial. Al hacerlo se creará una copia de respaldo de la configuración existente antes de instalar la nueva compatible con esta versión de %s." -#: src/libslic3r/PrintConfig.cpp:2458 +#: src/libslic3r/PrintConfig.cpp:2601 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 "Esto aplicará una corrección gamma a los polígonos 2D rasterizados. Un valor gamma de cero significa que el umbral se encuentra en el medio. Este comportamiento elimina el antialiasing sin perder agujeros en los polígonos." -#: src/libslic3r/PrintConfig.cpp:2081 +#: src/libslic3r/PrintConfig.cpp:2224 msgid "Threads" msgstr "Núcleos" -#: src/libslic3r/PrintConfig.cpp:2082 +#: src/libslic3r/PrintConfig.cpp:2225 msgid "Threads are used to parallelize long-running tasks. Optimal threads number is slightly above the number of available cores/processors." msgstr "Núcleos usados para tareas multi-recurso. Número óptimo de núcleos es ligeramente sobre el numero de núcleos/procesadores disponibles." -#: src/slic3r/GUI/Tab.cpp:2093 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:235 +msgid "Threshold:" +msgstr "Umbral:" + +#: src/slic3r/GUI/Tab.cpp:2263 msgid "Tilt" msgstr "Inclinación" -#: src/slic3r/GUI/Tab.cpp:2094 +#: src/slic3r/GUI/Tab.cpp:2264 msgid "Tilt time" msgstr "Tiempo de inclinación" +#: src/slic3r/GUI/GCodeViewer.cpp:2225 src/slic3r/GUI/GCodeViewer.cpp:2233 #: src/slic3r/GUI/RammingChart.cpp:76 msgid "Time" msgstr "Tiempo" -#: src/libslic3r/PrintConfig.cpp:687 +#: src/libslic3r/PrintConfig.cpp:723 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 "Tiempo para que el firmware de la impresora (o la Unidad Multi Material 2.0) cargue un filamento durante un cambio de herramienta (al ejecutar el código T). Este tiempo se añade al tiempo total de impresión mediante el estimador de tiempo del código G." -#: src/libslic3r/PrintConfig.cpp:702 +#: src/libslic3r/PrintConfig.cpp:738 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 "Tiempo para que el firmware de la impresora (o la Unidad Multi Material 2.0) descargue un filamento durante un cambio de herramienta (al ejecutar el código T). Este tiempo se añade al tiempo total de impresión mediante el estimador de tiempo del código G." -#: src/libslic3r/PrintConfig.cpp:2407 +#: src/libslic3r/PrintConfig.cpp:2550 msgid "Time of the fast tilt" msgstr "Tiempo de la inclinación rápida" -#: src/libslic3r/PrintConfig.cpp:2416 +#: src/libslic3r/PrintConfig.cpp:2559 msgid "Time of the slow tilt" msgstr "Tiempo de la inclinación lenta" -#: src/libslic3r/PrintConfig.cpp:641 +#: src/libslic3r/PrintConfig.cpp:677 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 "Tiempo de espera después de que se ha descargado el filamento. Puede ayudar para conseguir cambios de herramienta fiables con materiales flexibles que pueden necesitar más tiempo para encogerse a su tamaño original." -#: src/slic3r/GUI/Tab.cpp:966 +#: src/slic3r/GUI/GCodeViewer.cpp:2197 +msgid "to" +msgstr "a" + +#: src/slic3r/GUI/Tab.cpp:1284 msgid "To do that please specify a new name for the preset." msgstr "Para hacerlo por favor especifique un nuevo nombre para esos ajustes." -#: src/slic3r/GUI/Plater.cpp:4014 +#: src/slic3r/GUI/Plater.cpp:3934 msgid "To objects" msgstr "A los objetos" -#: src/slic3r/GUI/Plater.cpp:4016 +#: src/slic3r/GUI/Plater.cpp:3936 msgid "To parts" msgstr "A las piezas" -#: src/slic3r/GUI/Tab.cpp:1756 +#: src/slic3r/Utils/Http.cpp:82 +msgid "To specify the system certificate store manually, please set the %1% environment variable to the correct CA bundle and restart the application." +msgstr "Para especificar el almacén de certificados del sistema manualmente, configure la variable de entorno %1% en el paquete CA correcto y reinicia la aplicación." + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:360 msgid "To use a custom CA file, please import your CA file into Certificate Store / Keychain." msgstr "Para usar un archivo CA personalizado, importa tu archivo CA al Almacén de Certificados/Llavero." -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:263 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:271 #, c-format msgid "Toggle %c axis mirroring" msgstr "Activar reflejo del eje %c" -#: src/libslic3r/Zipper.cpp:34 +#: src/libslic3r/miniz_extension.cpp:93 msgid "too many files" msgstr "demasiados archivos" -#: src/libslic3r/SLAPrintSteps.cpp:190 -msgid "Too much overlapping holes." +#: src/libslic3r/SLAPrintSteps.cpp:192 +msgid "Too many overlapping holes." msgstr "Demasiados agujeros superpuestos." -#: src/slic3r/GUI/GUI_Preview.cpp:227 src/slic3r/GUI/GUI_Preview.cpp:335 -#: src/slic3r/GUI/GUI_Preview.cpp:519 src/slic3r/GUI/GUI_Preview.cpp:574 -#: src/slic3r/GUI/GUI_Preview.cpp:835 src/libslic3r/GCode/PreviewData.cpp:357 +#: src/slic3r/GUI/GCodeViewer.cpp:2241 src/slic3r/GUI/GUI_Preview.cpp:281 +#: src/slic3r/GUI/GUI_Preview.cpp:453 src/slic3r/GUI/GUI_Preview.cpp:693 +#: src/slic3r/GUI/GUI_Preview.cpp:786 src/slic3r/GUI/GUI_Preview.cpp:1270 +#: src/libslic3r/GCode/PreviewData.cpp:362 msgid "Tool" msgstr "Herramienta" @@ -8348,51 +9585,64 @@ msgstr "Herramienta" msgid "Tool #" msgstr "Herramienta nº" -#: src/slic3r/GUI/Tab.cpp:2000 src/libslic3r/PrintConfig.cpp:2093 +#: src/slic3r/GUI/Tab.cpp:2189 src/libslic3r/PrintConfig.cpp:2236 msgid "Tool change G-code" msgstr "Código G de cambio de herramienta" -#: src/slic3r/GUI/Tab.cpp:1491 +#: src/slic3r/GUI/GCodeViewer.cpp:2530 src/slic3r/GUI/GUI_Preview.cpp:1474 +msgid "Tool changes" +msgstr "Cambios de herramienta" + +#: src/slic3r/GUI/GUI_Preview.cpp:1479 +msgid "Tool marker" +msgstr "Marcador de herramienta" + +#: src/slic3r/GUI/GCodeViewer.cpp:223 +msgid "Tool position" +msgstr "Posición de herramienta" + +#: src/slic3r/GUI/Tab.cpp:1837 msgid "Toolchange parameters with single extruder MM printers" msgstr "Parámetros del cambio de herramienta para impresoras de un único extrusor MM" #. 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:662 src/libslic3r/PrintConfig.cpp:2132 -#: src/libslic3r/PrintConfig.cpp:2141 +#: src/slic3r/GUI/MainFrame.cpp:959 src/slic3r/GUI/MainFrame.cpp:1279 +#: src/libslic3r/PrintConfig.cpp:2275 src/libslic3r/PrintConfig.cpp:2284 msgid "Top" msgstr "Superior" -#: src/slic3r/GUI/PresetHints.cpp:304 +#: src/slic3r/GUI/PresetHints.cpp:302 msgid "Top / bottom shell thickness hint: Not available due to invalid layer height." msgstr "Sugerencia de grosor de la carcasa superior / inferior: no disponible debido a una altura de capa inválida." -#: src/libslic3r/PrintConfig.cpp:415 +#: src/libslic3r/PrintConfig.cpp:449 msgid "Top fill pattern" msgstr "Patrón de relleno superior" -#: src/slic3r/GUI/PresetHints.cpp:323 +#: src/slic3r/GUI/PresetHints.cpp:321 msgid "Top is open." msgstr "La parte superior está abierta." -#: src/slic3r/GUI/PresetHints.cpp:317 +#: src/slic3r/GUI/PresetHints.cpp:315 msgid "Top shell is %1% mm thick for layer height %2% mm." msgstr "La tapa superior es de %1% mm de espesor con una altura de capa de %2% mm." -#: src/slic3r/GUI/PresetHints.cpp:192 +#: src/slic3r/GUI/PresetHints.cpp:191 msgid "top solid infill" msgstr "relleno sólido superior" -#: src/slic3r/GUI/GUI_Preview.cpp:242 src/libslic3r/ExtrusionEntity.cpp:315 -#: src/libslic3r/PrintConfig.cpp:2105 src/libslic3r/PrintConfig.cpp:2117 +#: src/slic3r/GUI/GUI_Preview.cpp:306 src/libslic3r/ExtrusionEntity.cpp:319 +#: src/libslic3r/ExtrusionEntity.cpp:346 src/libslic3r/PrintConfig.cpp:2248 +#: src/libslic3r/PrintConfig.cpp:2260 msgid "Top solid infill" msgstr "Relleno sólido superior" -#: src/libslic3r/PrintConfig.cpp:2135 +#: src/libslic3r/PrintConfig.cpp:2278 msgid "Top solid layers" msgstr "Capas solidas superiores" -#: src/slic3r/GUI/MainFrame.cpp:662 +#: src/slic3r/GUI/MainFrame.cpp:959 src/slic3r/GUI/MainFrame.cpp:1279 msgid "Top View" msgstr "Vista superior" @@ -8408,90 +9658,128 @@ msgstr "Volumen total empujado" msgid "Total ramming time" msgstr "Tiempo de empuje total" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:516 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:640 +msgid "Transfer" +msgstr "Transferir" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:745 +msgid "Transfer the selected options to the newly selected preset \"%1%\"." +msgstr "Transferir las opciones seleccionadas al nuevo ajuste seleccionado \"%1%\"." + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:740 +msgid "Transfer the selected settings to the newly selected preset." +msgstr "Transfiera los ajustes seleccionados al preajuste recién seleccionado." + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:561 msgid "Translate" msgstr "Traducir" -#: src/slic3r/GUI/Mouse3DController.cpp:300 -#: src/slic3r/GUI/Mouse3DController.cpp:317 +#: src/slic3r/GUI/Mouse3DController.cpp:282 +#: src/slic3r/GUI/Mouse3DController.cpp:303 msgid "Translation" msgstr "Translación" -#: src/slic3r/GUI/GUI_Preview.cpp:253 src/libslic3r/PrintConfig.cpp:2152 +#: src/slic3r/GUI/GCodeViewer.cpp:2489 src/slic3r/GUI/GUI_Preview.cpp:335 +#: src/slic3r/GUI/GUI_Preview.cpp:1471 src/libslic3r/PrintConfig.cpp:2295 msgid "Travel" msgstr "Recorrido" -#: src/libslic3r/PrintConfig.cpp:845 +#: src/libslic3r/PrintConfig.cpp:883 msgid "Triangles" msgstr "Triángulos" -#: src/libslic3r/PrintConfig.cpp:3448 +#: src/libslic3r/PrintConfig.cpp:3647 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 "Intenta reparar cualquier malla no múltiple (esta opción se agrega implícitamente cada vez que necesitamos laminar el modelo para realizar la acción solicitada)." -#: src/libslic3r/PrintConfig.cpp:1467 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:165 +msgid "Type here the name of your printer device" +msgstr "Escribe aquí el nombre de tu dispositivo de impresión" + +#: src/libslic3r/PrintConfig.cpp:1575 msgid "Type of the printer." msgstr "Tipo de impresora." -#: src/slic3r/GUI/ConfigWizard.cpp:2013 src/slic3r/GUI/GUI_ObjectList.cpp:3553 +#: src/slic3r/GUI/ConfigWizard.cpp:2524 src/slic3r/GUI/ConfigWizard.cpp:2526 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4016 msgid "Type:" msgstr "Tipo:" -#: src/slic3r/GUI/Plater.cpp:3428 +#: src/slic3r/GUI/OpenGLManager.cpp:275 +#, c-format +msgid "" +"Unable to load the following shaders:\n" +"%s" +msgstr "" +"No se pueden cargar las siguientes sombras:\n" +"%s" + +#: src/slic3r/GUI/Plater.cpp:3233 msgid "Unable to reload:" msgstr "Incapaz de recargar:" -#: src/libslic3r/Zipper.cpp:32 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:137 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:146 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:845 +msgid "Undef" +msgstr "Undef" + +#: src/libslic3r/miniz_extension.cpp:91 msgid "undefined error" msgstr "error no definido" -#: src/slic3r/GUI/GLCanvas3D.cpp:4624 src/slic3r/GUI/KBShortcutsDialog.cpp:130 -#: src/slic3r/GUI/MainFrame.cpp:581 +#: src/slic3r/GUI/GLCanvas3D.cpp:5028 src/slic3r/GUI/KBShortcutsDialog.cpp:125 +#: src/slic3r/GUI/MainFrame.cpp:1187 msgid "Undo" msgstr "Deshacer" -#: src/slic3r/GUI/GLCanvas3D.cpp:4065 +#: src/slic3r/GUI/GLCanvas3D.cpp:4382 #, c-format msgid "Undo %1$d Action" msgid_plural "Undo %1$d Actions" msgstr[0] "Deshacer %1$d Acción" msgstr[1] "Deshacer %1$d Acciones" -#: src/slic3r/GUI/GLCanvas3D.cpp:4047 +#: src/slic3r/GUI/GLCanvas3D.cpp:4361 msgid "Undo History" msgstr "Deshacer Historia" -#: src/libslic3r/Zipper.cpp:56 +#: src/libslic3r/miniz_extension.cpp:115 msgid "unexpected decompressed size" msgstr "tamaño de descompresión inesperado" #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:27 +#: src/slic3r/GUI/GUI_Preview.cpp:299 src/libslic3r/ExtrusionEntity.cpp:310 msgid "Unknown" msgstr "Desconocido" -#: src/slic3r/Utils/Duet.cpp:82 src/slic3r/Utils/Duet.cpp:137 -#: src/slic3r/Utils/FlashAir.cpp:119 src/slic3r/Utils/FlashAir.cpp:140 -#: src/slic3r/Utils/FlashAir.cpp:156 +#: src/slic3r/Utils/Duet.cpp:84 src/slic3r/Utils/Duet.cpp:139 +#: src/slic3r/Utils/FlashAir.cpp:122 src/slic3r/Utils/FlashAir.cpp:143 +#: src/slic3r/Utils/FlashAir.cpp:159 msgid "Unknown error occured" msgstr "Ha ocurrido un error desconocido" +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:178 +msgid "Unknown error occured during exporting G-code." +msgstr "Se produjo un error desconocido durante la exportación del código G." + #: src/slic3r/GUI/WipeTowerDialog.cpp:263 msgid "unloaded" msgstr "descargado" -#: src/libslic3r/PrintConfig.cpp:623 +#: src/libslic3r/PrintConfig.cpp:659 msgid "Unloading speed" msgstr "Velocidad de descarga" -#: src/libslic3r/PrintConfig.cpp:632 +#: src/libslic3r/PrintConfig.cpp:668 msgid "Unloading speed at the start" msgstr "Velocidad de descarga al inicio" -#: src/slic3r/GUI/Tab.cpp:3256 +#: src/slic3r/GUI/Tab.cpp:3693 msgid "UNLOCKED LOCK" msgstr "CANDADO ABIERTO" -#: src/slic3r/GUI/Tab.cpp:3282 +#: src/slic3r/GUI/Tab.cpp:3719 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" "Click to reset all settings for current option group to the system (or default) values." @@ -8499,7 +9787,7 @@ msgstr "" "El icono de CANDADO DESBLOQUEADO indica que se cambiaron algunas configuraciones y no son iguales a los valores del sistema (o predeterminados) para el grupo de opciones actual.\n" "Haz clic para restablecer todas las configuraciones para el grupo de opciones actual a los valores del sistema (o predeterminados)." -#: src/slic3r/GUI/Tab.cpp:3297 +#: src/slic3r/GUI/Tab.cpp:3734 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." @@ -8507,56 +9795,43 @@ msgstr "" "El icono de CANDADO DESBLOQUEADO indica que se cambiaron algunas configuraciones y no son iguales a los valores del sistema (o predeterminados).\n" "Haz clic para reiniciar el valor actual a los del sistema (o predeterminados)" -#: src/slic3r/GUI/Plater.cpp:5203 -#, c-format -msgid "Unmounting successful. The device %s(%s) can now be safely removed from the computer." -msgstr "Expulsión exitosa. El dispositivo %s (%s) puede desconectarse del ordenador de forma segura." - -#: src/slic3r/GUI/GUI_Preview.cpp:255 -msgid "Unretractions" -msgstr "Desretracciones" - -#: src/slic3r/GUI/Tab.cpp:2947 -msgid "Unsaved Changes" -msgstr "Cambios no guardados" - -#: src/slic3r/GUI/GUI_App.cpp:935 -msgid "Unsaved Presets" -msgstr "Ajustes iniciales no guardados" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:179 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:173 msgid "Unselect gizmo or clear selection" msgstr "Deseleccionar gizmo o borrar selección" -#: src/libslic3r/Zipper.cpp:60 +#: src/libslic3r/miniz_extension.cpp:119 msgid "unsupported central directory size" msgstr "tamaño del directorio central no compatible" -#: src/libslic3r/Zipper.cpp:40 +#: src/libslic3r/miniz_extension.cpp:99 msgid "unsupported encryption" msgstr "encriptación no compatible" -#: src/libslic3r/Zipper.cpp:42 +#: src/libslic3r/miniz_extension.cpp:101 msgid "unsupported feature" msgstr "característica no compatible" -#: src/libslic3r/Zipper.cpp:38 +#: src/libslic3r/miniz_extension.cpp:97 msgid "unsupported method" msgstr "método no compatible" -#: src/libslic3r/Zipper.cpp:50 +#: src/libslic3r/miniz_extension.cpp:109 msgid "unsupported multidisk archive" msgstr "archivo multidisk no compatible" -#: src/slic3r/GUI/GLCanvas3DManager.cpp:292 +#: src/slic3r/GUI/OpenGLManager.cpp:267 msgid "Unsupported OpenGL version" msgstr "Versión de OpenGL no soportada" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3420 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3883 msgid "Unsupported selection" msgstr "Selección no soportada" -#: src/slic3r/GUI/GLCanvas3D.cpp:955 +#: src/slic3r/GUI/GCodeViewer.cpp:2183 +msgid "up to" +msgstr "hasta" + +#: src/slic3r/GUI/GLCanvas3D.cpp:961 #, c-format msgid "up to %.2f mm" msgstr "hasta %.2f mm" @@ -8565,15 +9840,15 @@ msgstr "hasta %.2f mm" msgid "Update available" msgstr "Actualización disponible" -#: src/slic3r/GUI/ConfigWizard.cpp:779 src/slic3r/GUI/Preferences.cpp:80 +#: src/slic3r/GUI/ConfigWizard.cpp:1138 src/slic3r/GUI/Preferences.cpp:97 msgid "Update built-in Presets automatically" msgstr "Actualiza los ajustes de fábrica automáticamente" -#: src/slic3r/GUI/ConfigWizard.cpp:761 +#: src/slic3r/GUI/ConfigWizard.cpp:1120 msgid "Updates" msgstr "Actualizaciones" -#: src/slic3r/GUI/ConfigWizard.cpp:786 +#: src/slic3r/GUI/ConfigWizard.cpp:1145 msgid "Updates are never applied without user's consent and never overwrite user's customized settings." msgstr "Las actualizaciones nunca se realizan sin el consentimiento del usuario y nunca sobre-escriben ajustes personalizados del usuario." @@ -8581,7 +9856,7 @@ msgstr "Las actualizaciones nunca se realizan sin el consentimiento del usuario msgid "Upgrade" msgstr "Actualización" -#: src/slic3r/GUI/GUI_App.cpp:824 +#: src/slic3r/GUI/GUI_App.cpp:1522 msgid "Upload a firmware image into an Arduino based printer" msgstr "Cargar una imagen de firmware a una impresora basada en Arduino" @@ -8597,101 +9872,118 @@ msgstr "Cargar el host de impresión con el siguiente nombre de archivo:" msgid "Uploading" msgstr "Subiendo" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:204 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:206 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 msgid "Upper Layer" msgstr "Capa superior" -#: src/slic3r/GUI/Tab.cpp:1900 -msgid "USB/Serial connection" -msgstr "Conexión USB/Serial" - -#: src/libslic3r/PrintConfig.cpp:1662 -msgid "USB/serial port for printer connection." -msgstr "Puerto USB/serial para la conexión con la impresora." - -#: src/slic3r/GUI/DoubleSlider.cpp:1147 +#: src/slic3r/GUI/DoubleSlider.cpp:1276 msgid "Use another extruder" msgstr "Usar otro extrusor" -#: src/slic3r/GUI/Preferences.cpp:143 +#: 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" -#: src/libslic3r/PrintConfig.cpp:2161 +#: src/slic3r/GUI/Preferences.cpp:268 +msgid "Use environment map" +msgstr "Usar mapa ambiental" + +#: src/libslic3r/PrintConfig.cpp:2304 msgid "Use firmware retraction" msgstr "Usar la retracción del firmware" +#: src/slic3r/GUI/ImGuiWrapper.cpp:800 src/slic3r/GUI/Search.cpp:464 +msgid "Use for search" +msgstr "Usar para buscar" + +#: src/libslic3r/PrintConfig.cpp:1218 +msgid "Use for time estimate" +msgstr "Usar para la estimación de tiempo" + #: src/slic3r/GUI/PrintHostDialogs.cpp:42 msgid "Use forward slashes ( / ) as a directory separator if needed." msgstr "Use barras diagonales ( / ) como separadores de directorios si fuese necesario." -#: src/slic3r/GUI/Preferences.cpp:126 +#: src/slic3r/GUI/Preferences.cpp:191 msgid "Use free camera" msgstr "Usar la cámara libre" -#: src/libslic3r/PrintConfig.cpp:2780 +#: src/slic3r/GUI/ConfigWizard.cpp:1188 +msgid "Use inches" +msgstr "Usar pulgadas" + +#: src/libslic3r/PrintConfig.cpp:2944 msgid "Use pad" msgstr "Usar pad" -#: src/slic3r/GUI/Preferences.cpp:119 +#: src/slic3r/GUI/Preferences.cpp:184 msgid "Use perspective camera" msgstr "Usar cámara en perspectiva" -#: src/libslic3r/PrintConfig.cpp:2168 +#: src/libslic3r/PrintConfig.cpp:2311 msgid "Use relative E distances" msgstr "Usar las distancias relativas en E" -#: src/slic3r/GUI/Preferences.cpp:104 +#: src/slic3r/GUI/Preferences.cpp:135 msgid "Use Retina resolution for the 3D scene" msgstr "Usa la resolución de Retina para la escena 3D" -#: src/libslic3r/PrintConfig.cpp:540 +#: src/libslic3r/PrintConfig.cpp:576 msgid "Use this option to set the axis letter associated to your printer's extruder (usually E but some printers use A)." msgstr "Utiliza esta opción para ajustar la letra asociada al extrusor de tu impresora (normalmente se usa E pero otras usan A)." -#: src/libslic3r/PrintConfig.cpp:1893 +#: src/libslic3r/PrintConfig.cpp:2035 msgid "Use this setting to rotate the support material pattern on the horizontal plane." msgstr "Use esta configuración para rotar el patrón de material de soporte en el plano horizontal." -#: src/libslic3r/PrintConfig.cpp:2175 +#: src/libslic3r/PrintConfig.cpp:2318 msgid "Use volumetric E" msgstr "Usar E volumétrico" -#: src/slic3r/GUI/DoubleSlider.cpp:1171 +#: src/slic3r/GUI/DoubleSlider.cpp:1298 msgid "used" msgstr "usado" -#: src/slic3r/GUI/Plater.cpp:237 +#: src/slic3r/GUI/Plater.cpp:243 msgid "Used Filament (g)" -msgstr "Filamento usado (g)" +msgstr "Filamento Usado (g)" -#: src/slic3r/GUI/Plater.cpp:235 src/slic3r/GUI/Plater.cpp:1229 +#: src/slic3r/GUI/Plater.cpp:1141 +msgid "Used Filament (in)" +msgstr "Filamento Usado (in)" + +#: src/slic3r/GUI/Plater.cpp:1153 +msgid "Used Filament (in³)" +msgstr "Filamento Usado (in³)" + +#: src/slic3r/GUI/Plater.cpp:241 src/slic3r/GUI/Plater.cpp:1141 msgid "Used Filament (m)" -msgstr "Filamento usado (m)" +msgstr "Filamento Usado (m)" -#: src/slic3r/GUI/Plater.cpp:236 +#: src/slic3r/GUI/Plater.cpp:242 src/slic3r/GUI/Plater.cpp:1153 msgid "Used Filament (mm³)" -msgstr "Filamento usado (mm³)" +msgstr "Filamento Usado (mm³)" -#: src/slic3r/GUI/Plater.cpp:1191 +#: src/slic3r/GUI/Plater.cpp:1100 msgid "Used Material (ml)" msgstr "Material usado (ml)" -#: src/slic3r/GUI/Plater.cpp:238 +#: src/slic3r/GUI/Plater.cpp:244 msgid "Used Material (unit)" msgstr "Material usado (unidades)" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:24 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:24 src/libslic3r/PrintConfig.cpp:132 msgid "User" msgstr "Usuario" -#: src/slic3r/GUI/Preset.cpp:1168 src/slic3r/GUI/Preset.cpp:1288 -#: src/slic3r/GUI/PresetBundle.cpp:1677 +#: src/slic3r/GUI/PresetComboBoxes.cpp:230 +#: src/slic3r/GUI/PresetComboBoxes.cpp:778 +#: src/slic3r/GUI/PresetComboBoxes.cpp:934 msgid "User presets" msgstr "Ajustes de usuario" -#: src/libslic3r/Zipper.cpp:90 +#: src/libslic3r/miniz_extension.cpp:149 msgid "validation failed" msgstr "validación fallida" @@ -8703,31 +9995,31 @@ msgstr "El valor es el mismo que el del sistema" msgid "Value was changed and is not equal to the system value or the last saved preset" msgstr "El valor ha cambiado y ya no es igual al valor del sistema o al último valor guardado" -#: src/slic3r/GUI/Tab.cpp:2202 +#: src/slic3r/GUI/Tab.cpp:2371 msgid "Values in this column are for Normal mode" msgstr "Los valores en esta columna son para el modo Normal" -#: src/slic3r/GUI/Tab.cpp:2208 +#: src/slic3r/GUI/Tab.cpp:2377 msgid "Values in this column are for Stealth mode" msgstr "Los valores en esta columna son para el modo Silencioso" -#: src/slic3r/GUI/GLCanvas3D.cpp:234 src/slic3r/GUI/GLCanvas3D.cpp:4573 +#: src/slic3r/GUI/GLCanvas3D.cpp:231 src/slic3r/GUI/GLCanvas3D.cpp:4978 msgid "Variable layer height" msgstr "Altura de capa variable" -#: src/slic3r/GUI/GLCanvas3D.cpp:1709 +#: src/slic3r/GUI/GLCanvas3D.cpp:1786 msgid "Variable layer height - Adaptive" msgstr "Altura de capa variable - Adaptativa" -#: src/slic3r/GUI/GLCanvas3D.cpp:599 +#: src/slic3r/GUI/GLCanvas3D.cpp:565 msgid "Variable layer height - Manual edit" msgstr "Altura de capa variable - Edicción manual" -#: src/slic3r/GUI/GLCanvas3D.cpp:1701 +#: src/slic3r/GUI/GLCanvas3D.cpp:1778 msgid "Variable layer height - Reset" msgstr "Altura de capa variable - Reiniciar" -#: src/slic3r/GUI/GLCanvas3D.cpp:1717 +#: src/slic3r/GUI/GLCanvas3D.cpp:1794 msgid "Variable layer height - Smooth all" msgstr "Altura de capa variable - Suavizar todo" @@ -8735,19 +10027,20 @@ msgstr "Altura de capa variable - Suavizar todo" msgid "variants" msgstr "variantes" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:57 src/slic3r/GUI/Tab.cpp:971 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:57 src/slic3r/GUI/Tab.cpp:1289 msgid "vendor" msgstr "fabricante" -#: src/slic3r/GUI/ConfigWizard.cpp:565 +#: src/slic3r/GUI/ConfigWizard.cpp:589 msgid "Vendor:" msgstr "Vendedor:" -#: src/libslic3r/PrintConfig.cpp:928 +#: src/libslic3r/PrintConfig.cpp:972 msgid "Verbose G-code" msgstr "Código G detallado" -#: src/slic3r/GUI/AboutDialog.cpp:231 src/slic3r/GUI/MainFrame.cpp:64 +#: src/slic3r/GUI/AboutDialog.cpp:256 src/slic3r/GUI/GUI_App.cpp:239 +#: src/slic3r/GUI/MainFrame.cpp:164 msgid "Version" msgstr "Versión" @@ -8755,24 +10048,36 @@ msgstr "Versión" msgid "version" msgstr "versión" -#: src/slic3r/GUI/Tab.cpp:1053 +#: src/slic3r/GUI/Tab.cpp:1375 msgid "Vertical shells" msgstr "Carcasas verticales" -#: src/slic3r/GUI/GUI_Preview.cpp:218 +#: src/slic3r/GUI/GUI_Preview.cpp:265 src/slic3r/GUI/GUI_Preview.cpp:271 msgid "View" msgstr "Vista" -#: src/slic3r/GUI/ConfigWizard.cpp:813 +#: src/slic3r/GUI/ConfigWizard.cpp:1172 msgid "View mode" msgstr "Modo de vista" -#: src/libslic3r/SLAPrintSteps.cpp:413 src/libslic3r/SLAPrintSteps.cpp:422 -#: src/libslic3r/SLAPrintSteps.cpp:461 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:666 +msgid "" +"Visit \"Preferences\" and check \"%1%\"\n" +"to be asked about unsaved changes again." +msgstr "" +"Visita \"Preferencias\" y marca\"%1%\"\n" +"para que se le pregunte sobre los cambios no guardados nuevamente." + +#: src/libslic3r/PrintConfig.cpp:3553 +msgid "Visualize an already sliced and saved G-code" +msgstr "Visualizar un código G ya laminado y guardado" + +#: src/libslic3r/SLAPrintSteps.cpp:411 src/libslic3r/SLAPrintSteps.cpp:420 +#: src/libslic3r/SLAPrintSteps.cpp:459 msgid "Visualizing supports" msgstr "Visualizar soportes" -#: src/slic3r/GUI/Plater.cpp:161 +#: src/slic3r/GUI/Plater.cpp:167 msgid "Volume" msgstr "Volumen" @@ -8780,23 +10085,23 @@ msgstr "Volumen" msgid "Volume to purge (mm³) when the filament is being" msgstr "Volumen a purgar (mm³) cuando el filamento está siendo" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1106 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1230 msgid "Volumes in Object reordered" msgstr "Volúmenes en Objetos reordenados" -#: src/slic3r/GUI/PresetHints.cpp:219 +#: src/slic3r/GUI/PresetHints.cpp:218 msgid "Volumetric" msgstr "Volumétrico" -#: src/slic3r/GUI/Tab.cpp:1591 +#: src/slic3r/GUI/Tab.cpp:1930 msgid "Volumetric flow hints not available" msgstr "Sugerencias de flujo volumétrico no disponibles" -#: src/slic3r/GUI/GUI_Preview.cpp:226 +#: src/slic3r/GUI/GUI_Preview.cpp:280 msgid "Volumetric flow rate" msgstr "Tasa de caudal volumétrico" -#: src/libslic3r/GCode/PreviewData.cpp:355 +#: src/slic3r/GUI/GCodeViewer.cpp:2240 src/libslic3r/GCode/PreviewData.cpp:360 msgid "Volumetric flow rate (mm³/s)" msgstr "Tasa de flujo volumétrico (mm³/seg)" @@ -8804,151 +10109,170 @@ msgstr "Tasa de flujo volumétrico (mm³/seg)" msgid "Volumetric speed" msgstr "Velocidad volumétrica" -#: src/libslic3r/PrintConfig.cpp:2915 +#: src/libslic3r/PrintConfig.cpp:3079 msgid "Wall thickness" msgstr "Espesor de pared" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1270 src/slic3r/GUI/GUI.cpp:251 -#: src/slic3r/GUI/Tab.cpp:3084 src/slic3r/GUI/WipeTowerDialog.cpp:45 -#: src/slic3r/GUI/WipeTowerDialog.cpp:366 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1129 src/slic3r/GUI/GUI.cpp:256 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:478 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:502 +#: src/slic3r/GUI/WipeTowerDialog.cpp:45 src/slic3r/GUI/WipeTowerDialog.cpp:366 msgid "Warning" msgstr "Peligro" -#: src/slic3r/GUI/ConfigWizard.cpp:431 +#: src/slic3r/GUI/NotificationManager.cpp:672 +#: src/slic3r/GUI/NotificationManager.cpp:687 +#: src/slic3r/GUI/NotificationManager.cpp:702 +msgid "WARNING:" +msgstr "AVISO:" + +#: src/slic3r/GUI/ConfigWizard.cpp:449 msgid "Welcome" msgstr "Bienvenido" -#: src/slic3r/GUI/ConfigWizard.cpp:427 +#: src/slic3r/GUI/ConfigWizard.cpp:445 #, c-format msgid "Welcome to the %s Configuration Assistant" msgstr "Bienvenido al %s Asistente de Configuración" -#: src/slic3r/GUI/ConfigWizard.cpp:429 +#: src/slic3r/GUI/ConfigWizard.cpp:447 #, c-format msgid "Welcome to the %s Configuration Wizard" msgstr "Bienvenido al %s Ayudante de Configuración" -#: src/slic3r/GUI/Preferences.cpp:97 +#: src/slic3r/GUI/SavePresetDialog.cpp:310 +msgid "What would you like to do with \"%1%\" preset after saving?" +msgstr "¿Qué te gustaría hacer con el ajuste preestablecido \"%1%\" después de guardar?" + +#: src/slic3r/GUI/Preferences.cpp:114 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 "Cuando está marcada, los ajustes preestablecidos de impresión y filamento se muestran en el editor de ajustes preestablecidos, incluso si están marcados como incompatibles con la impresora activa" -#: src/slic3r/GUI/PresetHints.cpp:224 +#: src/slic3r/GUI/Preferences.cpp:122 +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 "Cuando está marcada, cada vez que se arrastra y suelta un archivo de proyecto en la aplicación, muestra un cuadro de diálogo que solicita seleccionar la acción a realizar en el archivo a cargar." + +#: src/slic3r/GUI/Preferences.cpp:156 +msgid "When closing the application, always ask for unsaved changes" +msgstr "Al cerrar la aplicación, siempre preguntar por los cambios no guardados" + +#: src/slic3r/GUI/PresetHints.cpp:223 msgid "when printing" msgstr "al imprimir" -#: src/libslic3r/PrintConfig.cpp:253 +#: 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 "Al imprimir objetos multi-material, esta configuración hará que slic3r recorte las partes del objeto superpuestas una por la otra (la 2da parte será recortada por la 1ra, la 3ra parte será recortada por la 1ra y 2da, etc.)." -#: src/libslic3r/PrintConfig.cpp:305 +#: 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." msgstr "Al imprimir múltiples objetos o copias, esta característica completará cada objeto antes de pasar al siguiente (y comenzará desde la capa inferior). Esta función es útil para evitar el riesgo de impresiones arruinadas. Slic3r debería advertirte y evitar las colisiones del extrusor, pero ten cuidado." -#: src/libslic3r/PrintConfig.cpp:891 +#: src/libslic3r/PrintConfig.cpp:933 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 plates. This can be expressed as an absolute value or as a percentage (for example: 150%) over the default layer height." msgstr "Al imprimir con alturas de capa muy bajas, es posible que desee imprimir una capa inferior más gruesa para mejorar la adhesión y la tolerancia de las placas de construcción no perfectas. Esto se puede expresar como un valor absoluto o como un porcentaje (por ejemplo: 150%) sobre la altura de capa predeterminada." -#: src/libslic3r/PrintConfig.cpp:1553 +#: src/libslic3r/PrintConfig.cpp:1661 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 "Cuando se desencadena la retracción antes de cambiar la herramienta, el filamento se retira en la cantidad especificada (la longitud se mide en el filamento sin procesar, antes de que entre en el extrusor)." -#: src/libslic3r/PrintConfig.cpp:1545 +#: src/libslic3r/PrintConfig.cpp:1653 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 "Cuando se activa la retracción, el filamento se retira en la cantidad especificada (la longitud se mide en el filamento sin procesar, antes de que entre en el extrusor)." -#: src/libslic3r/PrintConfig.cpp:1391 +#: src/libslic3r/PrintConfig.cpp:1499 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 positive, it is loaded further, if negative, the loading move is shorter than unloading." msgstr "Cuando se establece en cero, la distancia que el filamento se mueve desde la posición de estacionamiento durante la carga es exactamente la misma que se usó durante la descarga. Cuando es positivo, se carga más lejos, si es negativo, el movimiento de carga es más corto que el de descarga." -#: src/libslic3r/PrintConfig.cpp:1238 +#: src/libslic3r/PrintConfig.cpp:1346 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 "Al establecer otras configuraciones de velocidad en 0, Slic3r calculará automáticamente la velocidad óptima para mantener constante la presión en el extrusor. Esta configuración experimental se utiliza para establecer la velocidad de impresión más alta que desea permitir." -#: src/libslic3r/PrintConfig.cpp:1597 +#: src/libslic3r/PrintConfig.cpp:1705 msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament." msgstr "Cuando la retracción se compensa después de cambiar la herramienta, el extrusor empujará esta cantidad adicional de filamento." -#: src/libslic3r/PrintConfig.cpp:1589 +#: src/libslic3r/PrintConfig.cpp:1697 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 "Cuando la retracción se compensa después de un movimiento, el extrusor necesitará introducir más filamento. Este ajuste raramente se necesita." -#: src/slic3r/GUI/Tab.cpp:3263 +#: src/slic3r/GUI/Tab.cpp:3700 msgid "WHITE BULLET" msgstr "VIÑETA BLANCA" -#: src/slic3r/GUI/Tab.cpp:3285 +#: src/slic3r/GUI/Tab.cpp:3722 msgid "WHITE BULLET icon indicates a non system (or non default) preset." msgstr "El icono de VIÑETA BLANCA un ajuste no del sistema (o no por defecto)" -#: src/slic3r/GUI/Tab.cpp:3288 +#: src/slic3r/GUI/Tab.cpp:3725 msgid "WHITE BULLET icon indicates that the settings are the same as in the last saved preset for the current option group." msgstr "El símbolo de VIÑETA BLANCA indica que los ajustes son los mismos que los de la última vez que salvaste los ajustes para el grupo de opciones actual." -#: src/slic3r/GUI/Tab.cpp:3303 +#: src/slic3r/GUI/Tab.cpp:3740 msgid "WHITE BULLET icon indicates that the value is the same as in the last saved preset." msgstr "El símbolo de VIÑETA BLANCA indica que los valores son los mismos que los de los ajustes guardados la última vez." -#: src/slic3r/GUI/GUI_Preview.cpp:223 src/libslic3r/PrintConfig.cpp:2238 +#: src/slic3r/GUI/GUI_Preview.cpp:277 src/libslic3r/PrintConfig.cpp:2381 msgid "Width" msgstr "Ancho" -#: src/libslic3r/GCode/PreviewData.cpp:349 +#: src/slic3r/GUI/GCodeViewer.cpp:2237 src/libslic3r/GCode/PreviewData.cpp:354 msgid "Width (mm)" msgstr "Ancho (mm)" -#: src/libslic3r/PrintConfig.cpp:2640 +#: src/libslic3r/PrintConfig.cpp:2783 msgid "Width from the back sphere center to the front sphere center" msgstr "Ancho desde el centro de la esfera trasera al centro de la esfera delantera" -#: src/libslic3r/PrintConfig.cpp:2239 +#: src/libslic3r/PrintConfig.cpp:2382 msgid "Width of a wipe tower" msgstr "Ancho de la torre de limpieza" -#: src/libslic3r/PrintConfig.cpp:2891 +#: src/libslic3r/PrintConfig.cpp:3055 msgid "Width of the connector sticks which connect the object and the generated pad." msgstr "Ancho de los palitos de apoyo que conectan la pieza y la base generada." -#: src/libslic3r/PrintConfig.cpp:2354 +#: src/libslic3r/PrintConfig.cpp:2497 msgid "Width of the display" msgstr "Ancho de la pantalla" -#: src/slic3r/GUI/PresetHints.cpp:48 +#: src/slic3r/GUI/PresetHints.cpp:47 msgid "will always run at %1%%%" msgstr "siempre funcionará al %1%%%" -#: src/slic3r/GUI/PresetHints.cpp:55 +#: src/slic3r/GUI/PresetHints.cpp:54 msgid "will be turned off." msgstr "será apagada." -#: src/libslic3r/PrintConfig.cpp:2441 +#: 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." -#: src/libslic3r/PrintConfig.cpp:2261 +#: src/libslic3r/PrintConfig.cpp:2404 msgid "Wipe into this object" msgstr "Limpiar en el objeto" -#: src/libslic3r/PrintConfig.cpp:2253 +#: src/libslic3r/PrintConfig.cpp:2396 msgid "Wipe into this object's infill" msgstr "Limpiar en el relleno del objeto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:39 src/slic3r/GUI/GUI_ObjectList.cpp:101 -#: src/slic3r/GUI/GUI_ObjectList.cpp:619 src/libslic3r/PrintConfig.cpp:2252 -#: src/libslic3r/PrintConfig.cpp:2260 +#: 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:2395 +#: src/libslic3r/PrintConfig.cpp:2403 msgid "Wipe options" msgstr "Opciones de limpieza" -#: src/slic3r/GUI/GUI_Preview.cpp:248 src/slic3r/GUI/Tab.cpp:1191 -#: src/libslic3r/ExtrusionEntity.cpp:321 +#: src/slic3r/GUI/GUI_Preview.cpp:313 src/slic3r/GUI/Tab.cpp:1521 +#: src/libslic3r/ExtrusionEntity.cpp:326 src/libslic3r/ExtrusionEntity.cpp:360 msgid "Wipe tower" msgstr "Torre de limpieza" -#: src/slic3r/GUI/Plater.cpp:1231 src/slic3r/GUI/Plater.cpp:1245 +#: src/slic3r/GUI/Plater.cpp:1143 src/slic3r/GUI/Plater.cpp:1160 msgid "wipe tower" msgstr "torre de limpieza" -#: src/slic3r/GUI/ConfigManipulation.cpp:120 -#: src/slic3r/GUI/ConfigManipulation.cpp:140 +#: src/slic3r/GUI/ConfigManipulation.cpp:119 +#: src/slic3r/GUI/ConfigManipulation.cpp:139 msgid "Wipe Tower" msgstr "Torre de limpieza" @@ -8956,36 +10280,36 @@ msgstr "Torre de limpieza" msgid "Wipe tower - Purging volume adjustment" msgstr "Torre de limpieza - Ajuste del volumen de purga" -#: src/slic3r/GUI/Tab.cpp:1488 +#: src/slic3r/GUI/Tab.cpp:1834 msgid "Wipe tower parameters" msgstr "Parámetros de la torre de limpieza" -#: src/libslic3r/PrintConfig.cpp:2245 +#: src/libslic3r/PrintConfig.cpp:2388 msgid "Wipe tower rotation angle" msgstr "Ángulo de rotación de la torre de limpieza" -#: src/libslic3r/PrintConfig.cpp:2246 +#: src/libslic3r/PrintConfig.cpp:2389 msgid "Wipe tower rotation angle with respect to x-axis." msgstr "Ángulo de rotación de la torre de limpieza con respecto al eje X." -#: src/libslic3r/PrintConfig.cpp:2193 +#: src/libslic3r/PrintConfig.cpp:2336 msgid "Wipe while retracting" msgstr "Limpiar mientras se retrae" -#: src/slic3r/GUI/PresetHints.cpp:225 +#: src/slic3r/GUI/PresetHints.cpp:224 msgid "with a volumetric rate" msgstr "con una tasa volumétrica" -#: src/libslic3r/PrintConfig.cpp:1530 +#: src/libslic3r/PrintConfig.cpp:1638 msgid "With bowden extruders, it may be wise to do some amount of quick retract before doing the wipe movement." msgstr "Con extrusores bowden, puede ser recomendable realizar una retracción rápida antes de realizar el movimiento de limpiar." -#: src/libslic3r/PrintConfig.cpp:2056 +#: src/libslic3r/PrintConfig.cpp:2198 msgid "With sheath around the support" msgstr "Con protección alrededor del soporte" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:62 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:105 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:68 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:111 msgid "World coordinates" msgstr "Coordenadas mundiales" @@ -9002,84 +10326,100 @@ msgstr "" "Ten en cuenta que primero se creará una instantánea de la configuración. Así que se puede recuperar en cualquier momento en caso de que hubiera algún problema con la nueva versión.\n" "Updated configuration bundles:" -#: src/libslic3r/Zipper.cpp:92 +#: src/libslic3r/miniz_extension.cpp:151 msgid "write calledback failed" msgstr "fallo write calledback" -#: src/libslic3r/PrintConfig.cpp:3382 +#: src/libslic3r/PrintConfig.cpp:3581 msgid "Write information about the model to the console." msgstr "Escribir información sobre el modelo en la consola." -#: src/slic3r/Utils/Duet.cpp:131 +#: src/slic3r/Utils/Duet.cpp:133 msgid "Wrong password" msgstr "Contraseña incorrecta" -#: src/libslic3r/PrintConfig.cpp:2225 +#: src/libslic3r/PrintConfig.cpp:2368 msgid "X coordinate of the left front corner of a wipe tower" msgstr "Coordenada X de la esquina frontal izquierda de la torre de limpieza" -#: src/libslic3r/PrintConfig.cpp:1879 +#: src/libslic3r/PrintConfig.cpp:2021 msgid "XY separation between an object and its support" msgstr "Separación XY entre un objeto y su soporte" -#: src/libslic3r/PrintConfig.cpp:1881 +#: src/libslic3r/PrintConfig.cpp:2023 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 "Separación XY entre un objeto y su soporte. Si se expresa como porcentaje (por ejemplo 50%), se calculará sobre el ancho del perímetro externo." -#: src/libslic3r/PrintConfig.cpp:2275 +#: src/libslic3r/PrintConfig.cpp:2418 msgid "XY Size Compensation" msgstr "Compensación de tamaño XY" -#: src/libslic3r/PrintConfig.cpp:2232 +#: src/libslic3r/PrintConfig.cpp:2375 msgid "Y coordinate of the left front corner of a wipe tower" msgstr "Coordenada Y de la esquina delantera izquierda de la torre de limpieza" -#: src/slic3r/GUI/Plater.cpp:1170 +#: src/slic3r/GUI/Plater.cpp:1079 msgid "Yes" msgstr "Sí" -#: src/libslic3r/PrintConfig.cpp:1317 +#: src/slic3r/GUI/Plater.cpp:1405 +msgid "You can open only one .gcode file at a time." +msgstr "Solo puedes abrir un archivo .gcode a la vez." + +#: src/libslic3r/PrintConfig.cpp:1425 msgid "You can put here your personal notes. This text will be added to the G-code header comments." msgstr "Puede poner sus notas personales aquí. Este texto se añadirá al código G como comentarios." -#: src/libslic3r/PrintConfig.cpp:589 +#: src/libslic3r/PrintConfig.cpp:625 msgid "You can put your notes regarding the filament here." msgstr "Puede poner sus notas con respecto al filamento aquí." -#: src/libslic3r/PrintConfig.cpp:1473 +#: src/libslic3r/PrintConfig.cpp:1581 msgid "You can put your notes regarding the printer here." msgstr "Puede poner sus notas con respecto a la impresora aquí." -#: src/libslic3r/PrintConfig.cpp:2579 +#: src/libslic3r/PrintConfig.cpp:2722 msgid "You can put your notes regarding the SLA print material here." msgstr "Puede poner tus notas sobre el material de impresión de SLA aquí." -#: src/libslic3r/PrintConfig.cpp:360 +#: src/libslic3r/PrintConfig.cpp:394 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 "Puedes configurarlo como un valor positivo para desactivar el ventilador durante todas las capas iniciales, de manera que no empeora la adhesión." -#: src/libslic3r/PrintConfig.cpp:1364 +#: src/libslic3r/PrintConfig.cpp:1472 msgid "You can use all configuration options as variables inside this template. For example: [layer_height], [fill_density] etc. You can also use [timestamp], [year], [month], [day], [hour], [minute], [second], [version], [input_filename], [input_filename_base]." msgstr "Puedes usar todas las opciones de configuración como las variables dentro de esta muestra. Por ejemplo [layer_height], [fill_density] etc.También puedes usar [timestamp], [year], [month], [day], [hour], [minute], [second], [version], [input_filename], [input_filename_base]." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3546 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4009 msgid "You can't change a type of the last solid part of the object." msgstr "No puede cambiar un tipo de la última parte sólida del objeto." -#: src/slic3r/GUI/Plater.cpp:2390 +#: src/slic3r/GUI/Plater.cpp:2352 #, 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 "No puede agregar el(los) objeto(s) desde % s porque uno o algunos de ellos son de varias piezas" -#: src/slic3r/GUI/Plater.cpp:2311 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:208 src/slic3r/GUI/Plater.cpp:2254 msgid "You cannot load SLA project with a multi-part object on the bed" msgstr "No puedes cargar un proyecto SLA con varias piezas en la base" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:578 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:625 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/GLCanvas3DManager.cpp:287 +#: src/slic3r/GUI/SavePresetDialog.cpp:277 +msgid "" +"You have selected physical printer \"%1%\" \n" +"with related printer preset \"%2%\"" +msgstr "" +"Ha seleccionado una impresora física \"%1%\" \n" +"con preajuste de impresora relacionado \"%2%\"" + +#: src/slic3r/GUI/GUI_App.cpp:1078 +msgid "You have the following presets with saved options for \"Print Host upload\"" +msgstr "Tiene los siguientes ajustes preestablecidos con opciones guardadas para \"Subida del host de impresión\"" + +#: src/slic3r/GUI/OpenGLManager.cpp:262 msgid "You may need to update your graphics card driver." msgstr "Puede que necesites actualizar tu tarjeta de gráficos." @@ -9087,37 +10427,49 @@ msgstr "Puede que necesites actualizar tu tarjeta de gráficos." msgid "You must install a configuration update." msgstr "Es necesario instalar una actualización de la configuración." -#: src/slic3r/GUI/Preferences.cpp:172 +#: src/slic3r/GUI/Preferences.cpp:299 #, c-format msgid "You need to restart %s to make the changes effective." msgstr "Es necesario reiniciar %s para hacer los cambios efectivos." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3421 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:468 +msgid "You should to change a name of your printer device. It can't be saved." +msgstr "Debería cambiar el nombre de su dispositivo de impresión. No se puede guardar." + +#: src/slic3r/GUI/GUI_ObjectList.cpp:3884 #, c-format msgid "You started your selection with %s Item." msgstr "Has empezado la selección con %s Items." -#: src/slic3r/GUI/DoubleSlider.cpp:1902 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:664 +msgid "You will not be asked about the unsaved changes the next time you close PrusaSlicer." +msgstr "No se le preguntará acerca de los cambios no guardados la próxima vez que cierre PrusaSlicer." + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:665 +msgid "You will not be asked about the unsaved changes the next time you switch a preset." +msgstr "No se le preguntará acerca de los cambios no guardados la próxima vez que cambie un ajuste preestablecido." + +#: src/slic3r/GUI/DoubleSlider.cpp:2121 msgid "Your current changes will delete all saved color changes." msgstr "Tus nuevos cambios borrarán todos los cambios de color." -#: src/slic3r/GUI/DoubleSlider.cpp:1923 +#: src/slic3r/GUI/DoubleSlider.cpp:2141 msgid "Your current changes will delete all saved extruder (tool) changes." msgstr "Tus cambios actuales eliminarán todos los cambios guardados del extrusor (herramienta)." -#: src/slic3r/GUI/MainFrame.cpp:911 +#: src/slic3r/GUI/MainFrame.cpp:1612 msgid "Your file was repaired." msgstr "Tu fichero fue reparado." -#: src/slic3r/GUI/Plater.cpp:2528 +#: src/slic3r/GUI/Plater.cpp:2490 msgid "Your object appears to be too large, so it was automatically scaled down to fit your print bed." msgstr "Tu pieza parece demasiado grande, así que se ha escalado automáticamente para que pueda caber en la base de impresión." -#: src/libslic3r/PrintConfig.cpp:2285 +#: src/libslic3r/PrintConfig.cpp:2428 msgid "Z offset" msgstr "Ajuste en altura Z" -#: src/slic3r/GUI/ConfigManipulation.cpp:60 +#: src/slic3r/GUI/ConfigManipulation.cpp:59 msgid "" "Zero first layer height is not valid.\n" "\n" @@ -9127,7 +10479,7 @@ msgstr "" "\n" "La altura de la primera capa se restablecerá a 0.01." -#: src/slic3r/GUI/ConfigManipulation.cpp:48 +#: src/slic3r/GUI/ConfigManipulation.cpp:47 msgid "" "Zero layer height is not valid.\n" "\n" @@ -9137,28 +10489,28 @@ msgstr "" "\n" "La altura de capa se restablecerá a 0.01." -#: src/libslic3r/PrintConfig.cpp:2667 +#: src/libslic3r/PrintConfig.cpp:2831 msgid "Zig-Zag" msgstr "Zig-Zag" -#: src/slic3r/GUI/Mouse3DController.cpp:308 -#: src/slic3r/GUI/Mouse3DController.cpp:317 +#: src/slic3r/GUI/Mouse3DController.cpp:294 +#: src/slic3r/GUI/Mouse3DController.cpp:303 msgid "Zoom" msgstr "Zoom" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:183 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:177 msgid "Zoom in" msgstr "Aumentar zoom" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:184 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:178 msgid "Zoom out" msgstr "Reducir zoom" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:181 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:175 msgid "Zoom to Bed" msgstr "Zoom a la Cama" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:182 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:176 msgid "" "Zoom to selected object\n" "or all objects in scene, if none selected" @@ -9166,14 +10518,16 @@ msgstr "" "Zoom a objetos seleccionados\n" "o a todos los objetos en escena, si no se seleccionó ninguno" -#: src/libslic3r/PrintConfig.cpp:207 src/libslic3r/PrintConfig.cpp:780 -#: src/libslic3r/PrintConfig.cpp:1640 src/libslic3r/PrintConfig.cpp:1650 -#: src/libslic3r/PrintConfig.cpp:1894 src/libslic3r/PrintConfig.cpp:2049 -#: src/libslic3r/PrintConfig.cpp:2247 src/libslic3r/PrintConfig.cpp:2727 -#: src/libslic3r/PrintConfig.cpp:2848 +#: src/libslic3r/PrintConfig.cpp:241 src/libslic3r/PrintConfig.cpp:816 +#: src/libslic3r/PrintConfig.cpp:1748 src/libslic3r/PrintConfig.cpp:1758 +#: src/libslic3r/PrintConfig.cpp:2036 src/libslic3r/PrintConfig.cpp:2191 +#: src/libslic3r/PrintConfig.cpp:2390 src/libslic3r/PrintConfig.cpp:2891 +#: src/libslic3r/PrintConfig.cpp:3012 msgid "°" msgstr "°" -#: src/slic3r/GUI/ConfigWizard.cpp:1038 src/slic3r/GUI/ConfigWizard.cpp:1052 +#: src/slic3r/GUI/ConfigWizard.cpp:1404 src/slic3r/GUI/ConfigWizard.cpp:1418 +#: src/libslic3r/PrintConfig.cpp:180 src/libslic3r/PrintConfig.cpp:912 +#: src/libslic3r/PrintConfig.cpp:956 src/libslic3r/PrintConfig.cpp:2209 msgid "°C" msgstr "°C" diff --git a/resources/localization/fr/PrusaSlicer.mo b/resources/localization/fr/PrusaSlicer.mo index 5a4620fca1..0f66ed2264 100644 Binary files a/resources/localization/fr/PrusaSlicer.mo and b/resources/localization/fr/PrusaSlicer.mo differ diff --git a/resources/localization/fr/PrusaSlicer_fr.po b/resources/localization/fr/PrusaSlicer_fr.po index e6b8515f39..1f5cdc29c3 100644 --- a/resources/localization/fr/PrusaSlicer_fr.po +++ b/resources/localization/fr/PrusaSlicer_fr.po @@ -5,82 +5,101 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Poedit 2.3\n" +"X-Generator: Poedit 2.4.2\n" "Project-Id-Version: \n" "POT-Creation-Date: \n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" -#: src/slic3r/GUI/MainFrame.cpp:66 -msgid " - Remember to check for updates at http://github.com/prusa3d/PrusaSlicer/releases" -msgstr " - Pensez à vérifier les mises à jour sur http://github.com/prusa3d/PrusaSlicer/releases" +#: src/slic3r/GUI/Tab.cpp:4124 +msgid "" +"\"%1%\" is disabled because \"%2%\" is on in \"%3%\" category.\n" +"To enable \"%1%\", please switch off \"%2%\"" +msgstr "" +"\"%1%\" est désactivé car \"%2%\" est activé dans la catégorie \"%3%\".\n" +"Pour activer \"%1%\", veuillez désactiver \"%2%\"" -#: src/slic3r/GUI/MainFrame.cpp:872 -msgid " was successfully sliced." -msgstr " a été découpé avec succès." - -#: src/libslic3r/PrintConfig.cpp:215 src/libslic3r/PrintConfig.cpp:792 -#: src/libslic3r/PrintConfig.cpp:1219 src/libslic3r/PrintConfig.cpp:1282 -#: src/libslic3r/PrintConfig.cpp:1532 src/libslic3r/PrintConfig.cpp:2425 -#: src/libslic3r/PrintConfig.cpp:2767 +#: src/libslic3r/PrintConfig.cpp:249 src/libslic3r/PrintConfig.cpp:828 +#: src/libslic3r/PrintConfig.cpp:1148 src/libslic3r/PrintConfig.cpp:1327 +#: src/libslic3r/PrintConfig.cpp:1390 src/libslic3r/PrintConfig.cpp:1640 +#: src/libslic3r/PrintConfig.cpp:2568 src/libslic3r/PrintConfig.cpp:2805 +#: src/libslic3r/PrintConfig.cpp:2931 msgid "%" msgstr "%" -#: src/slic3r/GUI/GLCanvas3D.cpp:963 +#: src/slic3r/GUI/GLCanvas3D.cpp:969 #, c-format msgid "%.2f - %.2f mm" msgstr "%.2f - %.2f mm" #. TRN Remove/Delete -#: src/slic3r/GUI/Tab.cpp:3126 +#: src/slic3r/GUI/Tab.cpp:3425 msgid "%1% Preset" msgstr "%1% Préréglage" -#: src/slic3r/GUI/Plater.cpp:4400 +#: src/slic3r/GUI/Plater.cpp:4423 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 "L'imprimante %1% était active au moment où l'instantané cible Annuler / Refaire a été pris. Basculer vers l'imprimante %1% requiert de recharger les préréglages de %1%." -#: src/libslic3r/Print.cpp:1374 +#: src/slic3r/GUI/MainFrame.cpp:1585 +msgid "%1% was successfully sliced." +msgstr "%1% a été découpé avec succès." + +#: src/libslic3r/Print.cpp:1400 msgid "%1%=%2% mm is too low to be printable at a layer height %3% mm" msgstr "%1%=%2% mm est trop bas pour être imprimable avec une hauteur de couche de %3% mm" -#: src/slic3r/GUI/PresetHints.cpp:229 +#: src/slic3r/GUI/PresetHints.cpp:228 #, c-format msgid "%3.2f mm³/s at filament speed %3.2f mm/s." msgstr "%3.2f mm³/s à une vitesse de filament de %3.2f mm/s." -#: src/slic3r/GUI/Plater.cpp:1152 +#: src/slic3r/GUI/Plater.cpp:1061 #, c-format msgid "%d (%d shells)" msgstr "%d (%d coques)" -#: src/slic3r/GUI/Plater.cpp:1160 +#: src/slic3r/GUI/Plater.cpp:1069 #, c-format msgid "%d degenerate facets, %d edges fixed, %d facets removed, %d facets added, %d facets reversed, %d backwards edges" msgstr "%d faces invalides, %d arrêtes corrigées, %d faces retirées, %d faces ajoutées, %d faces inversées, %d arrêtes à l'envers" -#: src/slic3r/GUI/PresetHints.cpp:270 +#: src/slic3r/GUI/PresetHints.cpp:269 #, c-format msgid "%d lines: %.2f mm" msgstr "%d lignes : %.2f mm" -#: src/slic3r/GUI/MainFrame.cpp:1027 +#: src/slic3r/GUI/MainFrame.cpp:1728 #, c-format msgid "%d presets successfully imported." msgstr "%d préréglages importés avec succès." -#: src/slic3r/GUI/MainFrame.cpp:692 +#: src/slic3r/GUI/GUI_App.cpp:718 +#, c-format +msgid "" +"%s\n" +"Do you want to continue?" +msgstr "" +"%s\n" +"Voulez-vous continuer ?" + +#: src/slic3r/GUI/MainFrame.cpp:917 src/slic3r/GUI/MainFrame.cpp:1316 #, c-format msgid "%s &Website" msgstr "Site &Web de %s" +#: src/slic3r/GUI/GUI_App.cpp:394 +#, c-format +msgid "%s - BREAKING CHANGE" +msgstr "%s - MODIFICATION IMPACTANTE" + #: src/slic3r/GUI/UpdateDialogs.cpp:211 #, c-format msgid "%s configuration is incompatible" msgstr "La configuration de %s n'est pas compatible" -#: src/slic3r/GUI/Field.cpp:175 +#: src/slic3r/GUI/Field.cpp:223 #, c-format msgid "%s doesn't support percentage" msgstr "%s ne supporte pas un pourcentage" @@ -90,7 +109,7 @@ msgstr "%s ne supporte pas un pourcentage" msgid "%s error" msgstr "Erreur %s" -#: src/slic3r/GUI/ConfigWizard.cpp:481 +#: src/slic3r/GUI/ConfigWizard.cpp:499 #, c-format msgid "%s Family" msgstr "%s Famille" @@ -100,7 +119,7 @@ msgstr "%s Famille" msgid "%s has encountered an error" msgstr "%s a rencontré une erreur" -#: src/slic3r/GUI/GUI_App.cpp:138 +#: src/slic3r/GUI/GUI_App.cpp:528 #, c-format msgid "" "%s has encountered an error. It was likely caused by running out of memory. If you are sure you have enough RAM on your system, this may also be a bug and we would be glad if you reported it.\n" @@ -111,12 +130,12 @@ msgstr "" "\n" "L'application va maintenant fermer." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:222 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:62 #, c-format msgid "%s has encountered an error. It was likely caused by running out of memory. If you are sure you have enough RAM on your system, this may also be a bug and we would be glad if you reported it." msgstr "%s a rencontré une erreur. Elle a apparemment été provoquée par un manque de mémoire. Si vous êtes certain d'avoir assez de RAM sur votre système, cela peut également être un bug et nous aimerions que vous le signaliez." -#: src/slic3r/GUI/UpdateDialogs.cpp:308 +#: src/slic3r/GUI/UpdateDialogs.cpp:309 #, c-format msgid "%s has no configuration updates available." msgstr "%s n'a aucunes mises à jour de configuration disponibles." @@ -143,7 +162,7 @@ msgstr "" "\n" "Veuillez utiliser les %s qui suivent pour paramétrer les nouveaux réglages et éventuellement accepter les mises à jour de réglage automatiques." -#: src/slic3r/GUI/GUI_App.cpp:820 +#: src/slic3r/GUI/GUI_App.cpp:1512 #, c-format msgid "%s View Mode" msgstr "Mode de Vue de %s" @@ -163,218 +182,248 @@ msgstr "" "\n" "Lots de configuration mis à jour :" -#: src/slic3r/GUI/MainFrame.cpp:705 +#: src/slic3r/GUI/MainFrame.cpp:933 src/slic3r/GUI/MainFrame.cpp:937 +#: src/slic3r/GUI/MainFrame.cpp:1329 #, c-format msgid "&About %s" msgstr "&Au sujet de %s" -#: src/slic3r/GUI/GUI_App.cpp:908 +#: src/slic3r/GUI/MainFrame.cpp:1297 +msgid "&Collapse sidebar" +msgstr "&Réduire la barre latérale" + +#: src/slic3r/GUI/GUI_App.cpp:1645 msgid "&Configuration" msgstr "&Configuration" -#: src/slic3r/GUI/GUI_App.cpp:800 +#: src/slic3r/GUI/GUI_App.cpp:1480 msgid "&Configuration Snapshots" msgstr "Instantanés de &Configuration" -#: src/slic3r/GUI/MainFrame.cpp:588 +#: src/slic3r/GUI/MainFrame.cpp:1194 msgid "&Copy" msgstr "&Copier" -#: src/slic3r/GUI/MainFrame.cpp:572 +#: src/slic3r/GUI/MainFrame.cpp:1178 msgid "&Delete selected" msgstr "Suppri&mer la sélection" -#: src/slic3r/GUI/MainFrame.cpp:722 +#: src/slic3r/GUI/MainFrame.cpp:1348 src/slic3r/GUI/MainFrame.cpp:1358 msgid "&Edit" msgstr "&Editer" -#: src/slic3r/GUI/MainFrame.cpp:506 +#: src/slic3r/GUI/MainFrame.cpp:1103 msgid "&Export" msgstr "&Exporter" -#: src/slic3r/GUI/MainFrame.cpp:617 src/slic3r/GUI/MainFrame.cpp:752 +#: src/slic3r/GUI/MainFrame.cpp:1224 src/slic3r/GUI/MainFrame.cpp:1451 msgid "&Filament Settings Tab" msgstr "Onglet des Réglages du &Filament" -#: src/slic3r/GUI/MainFrame.cpp:721 +#: src/slic3r/GUI/MainFrame.cpp:1347 src/slic3r/GUI/MainFrame.cpp:1357 +#: src/slic3r/GUI/MainFrame.cpp:1417 msgid "&File" msgstr "&Fichier" -#: src/slic3r/GUI/ConfigWizard.cpp:1981 +#: src/slic3r/GUI/ConfigWizard.cpp:2492 msgid "&Finish" msgstr "&Fin" -#: src/slic3r/GUI/MainFrame.cpp:727 +#: src/slic3r/GUI/MainFrame.cpp:1141 +msgid "&G-code preview" +msgstr "&Aperçu du G-code" + +#: src/slic3r/GUI/MainFrame.cpp:1353 src/slic3r/GUI/MainFrame.cpp:1363 +#: src/slic3r/GUI/MainFrame.cpp:1423 msgid "&Help" msgstr "&Aide" -#: src/slic3r/GUI/MainFrame.cpp:474 +#: src/slic3r/GUI/MainFrame.cpp:1065 msgid "&Import" msgstr "&Importer" -#: src/slic3r/GUI/GUI_App.cpp:822 +#: src/slic3r/GUI/GUI_App.cpp:1517 msgid "&Language" msgstr "&Langue" -#: src/slic3r/GUI/MainFrame.cpp:405 +#: src/slic3r/GUI/MainFrame.cpp:986 msgid "&New Project" msgstr "&Nouveau Projet" -#: src/slic3r/GUI/ConfigWizard.cpp:1980 +#: src/slic3r/GUI/ConfigWizard.cpp:2491 msgid "&Next >" msgstr "&Suivant >" -#: src/slic3r/GUI/MainFrame.cpp:408 +#: src/slic3r/GUI/MainFrame.cpp:1391 +msgid "&Open G-code" +msgstr "&Ouvrir le G-code" + +#: src/slic3r/GUI/MainFrame.cpp:989 msgid "&Open Project" msgstr "&Ouvrir Projet" -#: src/slic3r/GUI/MainFrame.cpp:591 +#: src/slic3r/GUI/MainFrame.cpp:1197 msgid "&Paste" msgstr "C&oller" -#: src/slic3r/GUI/MainFrame.cpp:606 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "&Plater Tab" msgstr "Onglet du &Plateau" -#: src/slic3r/GUI/GUI_App.cpp:804 +#: src/slic3r/GUI/GUI_App.cpp:1487 msgid "&Preferences" msgstr "&Préférences" -#: src/slic3r/GUI/MainFrame.cpp:540 +#: src/slic3r/GUI/MainFrame.cpp:1144 src/slic3r/GUI/MainFrame.cpp:1402 msgid "&Quit" msgstr "&Quitter" -#: src/slic3r/GUI/MainFrame.cpp:583 +#: src/slic3r/GUI/MainFrame.cpp:1189 msgid "&Redo" msgstr "&Refaire" -#: src/slic3r/GUI/MainFrame.cpp:536 +#: src/slic3r/GUI/MainFrame.cpp:1137 msgid "&Repair STL file" msgstr "&Réparer le fichier STL" -#: src/slic3r/GUI/MainFrame.cpp:446 +#: src/slic3r/GUI/MainFrame.cpp:1028 msgid "&Save Project" msgstr "&Sauvegarder Projet" -#: src/slic3r/GUI/MainFrame.cpp:565 +#: src/slic3r/GUI/MainFrame.cpp:1171 msgid "&Select all" msgstr "Tout &Sélectionner" -#: src/slic3r/GUI/MainFrame.cpp:580 +#: src/slic3r/GUI/MainFrame.cpp:1186 msgid "&Undo" msgstr "Ann&uler" -#: src/slic3r/GUI/MainFrame.cpp:724 +#: src/slic3r/GUI/MainFrame.cpp:1350 src/slic3r/GUI/MainFrame.cpp:1360 +#: src/slic3r/GUI/MainFrame.cpp:1418 msgid "&View" msgstr "&Vue" -#: src/slic3r/GUI/MainFrame.cpp:723 +#: src/slic3r/GUI/MainFrame.cpp:1349 src/slic3r/GUI/MainFrame.cpp:1359 msgid "&Window" msgstr "Fenê&tre" -#: src/slic3r/GUI/ConfigWizard.cpp:603 src/slic3r/GUI/ConfigWizard.cpp:631 +#: src/slic3r/GUI/ConfigWizard.cpp:662 src/slic3r/GUI/ConfigWizard.cpp:812 +#: src/slic3r/GUI/ConfigWizard.cpp:873 src/slic3r/GUI/ConfigWizard.cpp:1007 msgid "(All)" msgstr "(Tout)" -#: src/libslic3r/PrintConfig.cpp:1446 +#: src/libslic3r/PrintConfig.cpp:1554 msgid "(minimum)" msgstr "(minimum)" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:116 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:109 msgid "(Re)slice" msgstr "(Re)découper" -#: src/slic3r/GUI/MainFrame.cpp:532 +#: src/slic3r/GUI/MainFrame.cpp:1133 msgid "(Re)Slice No&w" msgstr "(Re)Découper Main&tenant" -#: src/libslic3r/PrintConfig.cpp:771 src/libslic3r/PrintConfig.cpp:2587 +#: src/libslic3r/PrintConfig.cpp:807 src/libslic3r/PrintConfig.cpp:2730 msgid "(Unknown)" msgstr "(Inconnu)" -#: src/slic3r/GUI/MainFrame.cpp:790 +#: src/slic3r/GUI/MainFrame.cpp:1491 msgid ") not found." msgstr ") non trouvé." -#: src/libslic3r/PrintConfig.cpp:1918 +#: src/libslic3r/PrintConfig.cpp:2060 msgid "0 (soluble)" msgstr "0 (soluble)" -#: src/libslic3r/PrintConfig.cpp:1919 +#: src/libslic3r/PrintConfig.cpp:2061 msgid "0.2 (detachable)" msgstr "0.2 (détachable)" -#: src/slic3r/GUI/MainFrame.cpp:626 +#: src/slic3r/GUI/MainFrame.cpp:1234 msgid "3&D" msgstr "3&D" -#: src/slic3r/GUI/Plater.cpp:4097 +#: src/slic3r/GUI/Plater.cpp:4044 msgid "3D editor view" msgstr "Vue d'éditeur 3D" -#: src/libslic3r/PrintConfig.cpp:851 +#: src/libslic3r/PrintConfig.cpp:889 msgid "3D Honeycomb" msgstr "Nid d'abeille 3D" -#: src/slic3r/GUI/Mouse3DController.cpp:274 +#: src/slic3r/GUI/NotificationManager.hpp:318 +msgid "3D Mouse disconnected." +msgstr "Souris 3D déconnectée." + +#: src/slic3r/GUI/Mouse3DController.cpp:263 msgid "3Dconnexion settings" msgstr "Paramètres 3Dconnexion" -#: src/slic3r/GUI/Plater.cpp:5038 +#: src/slic3r/GUI/Plater.cpp:5167 #, c-format msgid "3MF file exported to %s" msgstr "Fichier 3MF exporté vers %s" -#: src/slic3r/GUI/ConfigWizard.cpp:1979 +#: src/slic3r/GUI/ConfigWizard.cpp:2490 msgid "< &Back" msgstr "< &Précédent" -#: src/libslic3r/PrintConfig.cpp:287 +#: src/libslic3r/PrintConfig.cpp:321 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 "Une expression booléenne utilisant les valeurs de configuration d'un profil d'imprimante actif. Si cette expression est évaluée comme vraie, ce profil est considéré comme compatible avec le profil d'imprimante actif." -#: src/libslic3r/PrintConfig.cpp:272 +#: src/libslic3r/PrintConfig.cpp:306 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 "Une expression booléenne utilisant les valeurs de configuration d'un profil d'imprimante actif. Si cette expression est évaluée comme vraie, ce profil est considéré comme compatible avec le profil d'imprimante actif." -#: src/slic3r/GUI/Tab.cpp:975 +#: src/slic3r/GUI/Tab.cpp:1237 msgid "A copy of the current system preset will be created, which will be detached from the system preset." msgstr "Une copie du préréglage système actuel sera créé, et il sera détaché du préréglage système." -#: src/slic3r/GUI/ConfigWizard.cpp:1034 +#: src/slic3r/GUI/ConfigWizard.cpp:1400 msgid "A rule of thumb is 160 to 230 °C for PLA, and 215 to 250 °C for ABS." msgstr "La règle générale est 160 à 230 °C pour le PLA et 215 à 250 °C pour l'ABS." -#: src/slic3r/GUI/ConfigWizard.cpp:1048 +#: src/slic3r/GUI/ConfigWizard.cpp:1414 msgid "A rule of thumb is 60 °C for PLA and 110 °C for ABS. Leave zero if you have no heated bed." msgstr "La règle générale est 60 °C pour le PLA et 110 °C pour l'ABS. Laissez à zéro si vous n'avez pas de lit chauffant." -#: src/slic3r/GUI/GLCanvas3D.cpp:686 -msgid "A toolpath outside the print area was detected" -msgstr "Parcours détecté en dehors de la zone d'impression" +#: src/slic3r/GUI/GLCanvas3D.cpp:634 +msgid "A toolpath outside the print area was detected." +msgstr "Un parcours d'outil en dehors de la zone d'impression a été détecté." -#: src/slic3r/GUI/AboutDialog.cpp:199 +#: src/slic3r/GUI/AboutDialog.cpp:212 src/slic3r/GUI/AboutDialog.cpp:215 #, c-format msgid "About %s" msgstr "Au sujet de %s" -#: src/slic3r/GUI/GLCanvas3D.cpp:959 +#: src/slic3r/GUI/GCodeViewer.cpp:2189 +msgid "above" +msgstr "au-dessus" + +#: src/slic3r/GUI/GLCanvas3D.cpp:965 #, c-format msgid "above %.2f mm" msgstr "au dessus de %.2f mm" -#: src/libslic3r/PrintConfig.cpp:1569 +#: src/libslic3r/PrintConfig.cpp:1677 msgid "Above Z" msgstr "Au-delà de Z" -#: src/slic3r/GUI/Tab.cpp:1164 +#: src/slic3r/GUI/Tab.cpp:1494 msgid "Acceleration control (advanced)" msgstr "Contrôle de l'accélération (avancé)" -#: src/libslic3r/PrintConfig.cpp:2925 +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:221 +#: src/libslic3r/PrintConfig.cpp:3089 msgid "Accuracy" msgstr "Précision" +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:59 +msgid "Accurate" +msgstr "Précis" + #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:78 msgid "Activate" msgstr "Activer" @@ -383,67 +432,75 @@ msgstr "Activer" msgid "Active" msgstr "Actif" -#: src/slic3r/GUI/DoubleSlider.cpp:1135 src/slic3r/GUI/GUI_ObjectList.cpp:1705 +#: src/slic3r/GUI/DoubleSlider.cpp:1264 src/slic3r/GUI/GUI_ObjectList.cpp:1833 msgid "active" msgstr "actif" -#: src/slic3r/GUI/GLCanvas3D.cpp:267 +#: src/slic3r/GUI/GLCanvas3D.cpp:254 msgid "Adaptive" msgstr "Adaptatif" -#: src/slic3r/GUI/Tab.cpp:241 -msgid "Add a new printer" -msgstr "Ajouter une nouvelle imprimante" +#: src/libslic3r/PrintConfig.cpp:894 +msgid "Adaptive Cubic" +msgstr "Cubique adaptatif" -#: src/libslic3r/PrintConfig.cpp:2782 +#: src/slic3r/GUI/SavePresetDialog.cpp:314 +msgid "Add \"%1%\" as a next preset for the the physical printer \"%2%\"" +msgstr "Ajouter \"%1%\" comme préréglage suivant pour l'imprimante physique \"%2%\"" + +#: src/libslic3r/PrintConfig.cpp:2946 msgid "Add a pad underneath the supported model" msgstr "Ajouter une base sous le modèle supporté" -#: src/libslic3r/PrintConfig.cpp:2058 +#: src/libslic3r/PrintConfig.cpp:2200 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 "Ajouter une enveloppe (une ligne unique de périmètre) autour de la base du support. Ceci rend le support plus fiable, mais aussi plus difficile à retirer." -#: src/slic3r/GUI/DoubleSlider.cpp:991 +#: src/slic3r/GUI/DoubleSlider.cpp:1114 msgid "Add another code - Ctrl + Left click" msgstr "Ajouter un autre code - Ctr + Clic gauche" -#: src/slic3r/GUI/DoubleSlider.cpp:992 +#: src/slic3r/GUI/DoubleSlider.cpp:1115 msgid "Add another code - Right click" msgstr "Ajouter un autre code - Clic droit" -#: src/slic3r/GUI/DoubleSlider.cpp:1477 +#: src/slic3r/GUI/DoubleSlider.cpp:1665 msgid "Add color change" msgstr "Ajouter un changement de couleur" -#: src/slic3r/GUI/DoubleSlider.cpp:1180 +#: src/slic3r/GUI/DoubleSlider.cpp:1307 msgid "Add color change (%1%) for:" msgstr "Ajouter le changement de couleur (%1%) pour :" -#: src/slic3r/GUI/DoubleSlider.cpp:988 +#: src/slic3r/GUI/DoubleSlider.cpp:1111 msgid "Add color change - Left click" msgstr "Ajouter un changement de couleur - Clic gauche" -#: src/slic3r/GUI/DoubleSlider.cpp:986 +#: src/slic3r/GUI/DoubleSlider.cpp:1109 msgid "Add color change - Left click for predefined color or Shift + Left click for custom color selection" msgstr "Ajouter un changement de couleur - Clic gauche pour la couleur prédéfinie ou Maj + Clic gauche pour la sélection d'une couleur personnalisée" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:218 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:219 msgid "Add color change marker for current layer" msgstr "Ajouter un repère de changement de couleur pour la couche en cours" -#: src/slic3r/GUI/DoubleSlider.cpp:1490 +#: src/slic3r/GUI/DoubleSlider.cpp:1682 msgid "Add custom G-code" msgstr "Ajouter un G-code personnalisé" -#: src/slic3r/GUI/GLCanvas3D.cpp:240 +#: src/slic3r/GUI/DoubleSlider.cpp:1679 +msgid "Add custom template" +msgstr "Ajouter un modèle personnalisé" + +#: src/slic3r/GUI/GLCanvas3D.cpp:235 msgid "Add detail" msgstr "Ajouter des détails" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:421 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:308 msgid "Add drainage hole" msgstr "Ajouter un trou de drainage" -#: src/slic3r/GUI/DoubleSlider.cpp:984 +#: src/slic3r/GUI/DoubleSlider.cpp:1107 msgid "Add extruder change - Left click" msgstr "Ajouter un changement d'extrudeur - Clic gauche" @@ -451,30 +508,30 @@ msgstr "Ajouter un changement d'extrudeur - Clic gauche" msgid "Add extruder to sequence" msgstr "Ajouter l'extrudeur à la séquence" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1993 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2152 msgid "Add Generic Subobject" msgstr "Ajouter un Sous-objet Générique" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2896 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2925 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2943 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3297 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3325 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3345 msgid "Add Height Range" msgstr "Ajouter une Zone de Hauteur" -#: src/slic3r/GUI/GLCanvas3D.cpp:4526 src/slic3r/GUI/Plater.cpp:3788 -#: src/slic3r/GUI/Plater.cpp:3800 src/slic3r/GUI/Plater.cpp:3940 +#: src/slic3r/GUI/GLCanvas3D.cpp:4892 src/slic3r/GUI/Plater.cpp:3708 +#: src/slic3r/GUI/Plater.cpp:3720 src/slic3r/GUI/Plater.cpp:3858 msgid "Add instance" msgstr "Ajouter l'instance" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:159 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:153 msgid "Add Instance of the selected object" msgstr "Ajouter une Instance à l'objet sélectionné" -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:162 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:165 msgid "Add layer range" msgstr "Ajouter une zone de couche" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2328 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2692 msgid "Add Layers" msgstr "Ajouter des couches" @@ -482,12 +539,12 @@ msgstr "Ajouter des couches" msgid "Add modifier" msgstr "Ajouter un modificateur" -#: src/libslic3r/PrintConfig.cpp:479 -#, no-c-format +#: src/libslic3r/PrintConfig.cpp:515 +#, c-format msgid "Add more perimeters when needed for avoiding gaps in sloping walls. Slic3r keeps adding perimeters, until more than 70% of the loop immediately above is supported." msgstr "Ajouter plus de périmètres si nécessaire pour éviter des trous dans les parois inclinées. Slic3r ajoute des périmètres, jusqu'à ce que plus de 70% de la boucle immédiatement au-dessus soit supportée." -#: src/slic3r/GUI/Plater.cpp:3940 +#: src/slic3r/GUI/Plater.cpp:3858 msgid "Add one more instance of the selected object" msgstr "Ajouter une instance supplémentaire de l'objet sélectionné" @@ -495,52 +552,61 @@ msgstr "Ajouter une instance supplémentaire de l'objet sélectionné" msgid "Add part" msgstr "Ajouter une pièce" -#: src/slic3r/GUI/DoubleSlider.cpp:1487 +#: src/slic3r/GUI/DoubleSlider.cpp:1675 msgid "Add pause print" msgstr "Ajouter une pause d'impression" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1363 +#: src/slic3r/GUI/PresetComboBoxes.cpp:627 +#: src/slic3r/GUI/PresetComboBoxes.cpp:674 +msgid "Add physical printer" +msgstr "Ajouter une imprimante physique" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1210 msgid "Add point" msgstr "Ajouter un point" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1366 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1213 msgid "Add point to selection" msgstr "Ajouter un point à la sélection" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1509 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:180 +msgid "Add preset for this printer device" +msgstr "Ajouter un préréglage pour cette imprimante" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1640 msgid "Add settings" msgstr "Ajouter des réglages" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1386 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1517 msgid "Add Settings Bundle for Height range" msgstr "Ajouter une Combinaison de Réglages pour la zone de Hauteur" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1388 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1519 msgid "Add Settings Bundle for Object" msgstr "Ajouter une Combinaison de Réglages pour l'Objet" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1387 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1518 msgid "Add Settings Bundle for Sub-object" msgstr "Ajouter une Combinaison de Réglages pour le Sous-objet" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1314 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1445 msgid "Add Settings for Layers" msgstr "Ajouter des Réglages pour les Couches" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1316 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1447 msgid "Add Settings for Object" msgstr "Ajouter des Réglages pour un Objet" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1315 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1446 msgid "Add Settings for Sub-object" msgstr "Ajouter des Réglages pour un Sous-objet" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1793 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2051 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1953 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2210 msgid "Add Shape" msgstr "Ajouter une Forme" -#: src/libslic3r/PrintConfig.cpp:409 +#: src/libslic3r/PrintConfig.cpp:443 msgid "Add solid infill near sloping surfaces to guarantee the vertical shell thickness (top+bottom solid layers)." msgstr "Ajouter un remplissage plein à proximité des surfaces inclinées pour garantir une épaisseur de coque verticale (couches solides supérieures+inférieures)." @@ -552,11 +618,19 @@ msgstr "Ajouter un bloqueur de support" msgid "Add support enforcer" msgstr "Ajouter un générateur de supports" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:494 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:374 msgid "Add support point" msgstr "Ajouter un point de support" -#: src/slic3r/GUI/GLCanvas3D.cpp:4467 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:371 +msgid "Add supports" +msgstr "Ajouter des supports" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:293 +msgid "Add supports by angle" +msgstr "Ajouter des supports par angle" + +#: src/slic3r/GUI/GLCanvas3D.cpp:4833 msgid "Add..." msgstr "Ajouter..." @@ -564,23 +638,29 @@ msgstr "Ajouter..." msgid "Add/Remove filaments" msgstr "Ajouter/Enlever des filaments" -#: src/slic3r/GUI/Preset.cpp:1201 +#: src/slic3r/GUI/PresetComboBoxes.cpp:813 msgid "Add/Remove materials" msgstr "Ajouter/Enlever des matériaux" -#: src/slic3r/GUI/Preset.cpp:1203 +#: src/slic3r/GUI/PresetComboBoxes.cpp:622 +#: src/slic3r/GUI/PresetComboBoxes.cpp:669 +msgid "Add/Remove presets" +msgstr "Ajouter/Supprimer des préréglages" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:815 +#: src/slic3r/GUI/PresetComboBoxes.cpp:972 msgid "Add/Remove printers" msgstr "Ajouter/Supprimer des imprimantes" -#: src/slic3r/GUI/Tab.cpp:970 +#: src/slic3r/GUI/Tab.cpp:1288 msgid "Additional information:" msgstr "Informations complémentaires :" -#: src/slic3r/GUI/GUI_ObjectSettings.cpp:59 +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:62 msgid "Additional Settings" msgstr "Réglages Additionnels" -#: src/slic3r/GUI/ConfigWizard.cpp:791 +#: src/slic3r/GUI/ConfigWizard.cpp:1150 msgid "Additionally a backup snapshot of the whole configuration is created before an update is applied." msgstr "De plus, un instantané de sauvegarde de l'ensemble de la configuration est créé avant qu'une mise à jour ne soit appliquée." @@ -588,23 +668,22 @@ msgstr "De plus, un instantané de sauvegarde de l'ensemble de la configuration msgid "Address" msgstr "Adresse" -#: src/slic3r/GUI/GUI_App.cpp:814 src/slic3r/GUI/GUI_ObjectList.cpp:104 -#: src/slic3r/GUI/GUI_ObjectList.cpp:622 src/slic3r/GUI/Tab.cpp:1087 -#: src/slic3r/GUI/Tab.cpp:1102 src/slic3r/GUI/Tab.cpp:1201 -#: src/slic3r/GUI/Tab.cpp:1204 src/slic3r/GUI/Tab.cpp:1470 -#: src/slic3r/GUI/Tab.cpp:1967 src/slic3r/GUI/Tab.cpp:3661 -#: src/slic3r/GUI/wxExtensions.cpp:754 src/libslic3r/PrintConfig.cpp:88 -#: src/libslic3r/PrintConfig.cpp:119 src/libslic3r/PrintConfig.cpp:223 -#: src/libslic3r/PrintConfig.cpp:1037 src/libslic3r/PrintConfig.cpp:2276 -#: src/libslic3r/PrintConfig.cpp:2448 +#: src/slic3r/GUI/GUI_ObjectList.cpp:102 src/slic3r/GUI/GUI_ObjectList.cpp:661 +#: src/slic3r/GUI/Tab.cpp:1409 src/slic3r/GUI/Tab.cpp:1430 +#: src/slic3r/GUI/Tab.cpp:1531 src/slic3r/GUI/Tab.cpp:1534 +#: src/slic3r/GUI/Tab.cpp:1816 src/slic3r/GUI/Tab.cpp:2152 +#: src/slic3r/GUI/Tab.cpp:4080 src/libslic3r/PrintConfig.cpp:90 +#: src/libslic3r/PrintConfig.cpp:121 src/libslic3r/PrintConfig.cpp:257 +#: src/libslic3r/PrintConfig.cpp:1081 src/libslic3r/PrintConfig.cpp:2419 +#: src/libslic3r/PrintConfig.cpp:2591 msgid "Advanced" msgstr "Avancé" -#: src/slic3r/GUI/ConfigWizard.cpp:821 +#: src/slic3r/GUI/ConfigWizard.cpp:1180 msgid "Advanced mode" msgstr "Mode avancé" -#: src/slic3r/GUI/GUI_App.cpp:814 +#: src/slic3r/GUI/GUI_App.cpp:1506 msgid "Advanced View Mode" msgstr "Vue en Mode Avancé" @@ -612,124 +691,140 @@ msgstr "Vue en Mode Avancé" msgid "Advanced: Output log" msgstr "Avancé : journal de Sortie" -#: src/libslic3r/PrintConfig.cpp:668 +#: src/libslic3r/PrintConfig.cpp:704 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 stable. Before purging the print head into an infill or a sacrificial object, Slic3r will always prime this amount of material into the wipe tower to produce successive infill or sacrificial object extrusions reliably." msgstr "Après un changement d'outil, la position exacte dans la buse du filament qui vient d'être chargé peut ne pas être connue, et la pression du filament n'est probablement pas encore stable. Avant de purger la tête d'impression dans un remplissage ou un objet sacrificiel, Slic3r va toujours utiliser cette quantité de matériau dans la tour de nettoyage pour produire un remplissage successif ou des extrusions d'objet sacrificiel de façon fiable." -#: src/slic3r/GUI/Tab.cpp:1994 src/libslic3r/PrintConfig.cpp:1080 +#: src/slic3r/GUI/Tab.cpp:2182 src/libslic3r/PrintConfig.cpp:1173 msgid "After layer change G-code" msgstr "G-Code après changement de couche" -#: src/libslic3r/PrintConfig.cpp:3398 +#: src/libslic3r/PrintConfig.cpp:3597 msgid "Align the model to the given point." msgstr "Aligner le modèle sur le point défini." -#: src/libslic3r/PrintConfig.cpp:3397 +#: src/libslic3r/PrintConfig.cpp:3596 msgid "Align XY" msgstr "Aligner XY" -#: src/libslic3r/PrintConfig.cpp:1631 +#: src/libslic3r/PrintConfig.cpp:1739 msgid "Aligned" msgstr "Aligné" -#: src/slic3r/GUI/ConfigWizard.cpp:290 src/slic3r/GUI/ConfigWizard.cpp:573 -#: src/slic3r/GUI/Tab.cpp:3174 +#: src/slic3r/GUI/ConfigWizard.cpp:308 src/slic3r/GUI/ConfigWizard.cpp:598 +#: src/slic3r/GUI/Tab.cpp:3507 src/slic3r/GUI/UnsavedChangesDialog.cpp:921 msgid "All" msgstr "Tous" -#: src/libslic3r/Print.cpp:1219 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:197 +msgid "All gizmos: Rotate - left mouse button; Pan - right mouse button" +msgstr "Tous les gizmos : Rotation - bouton gauche de la souris ; Panoramique - bouton droit de la souris" + +#: src/slic3r/GUI/ConfigWizard.cpp:694 +msgid "All installed printers are compatible with the selected filament." +msgstr "Toutes les imprimantes installées sont compatibles avec le filament sélectionné." + +#: src/libslic3r/Print.cpp:1245 msgid "All objects are outside of the print volume." msgstr "Tous les objets sont en dehors du volume d'impression." -#: src/slic3r/GUI/Plater.cpp:4669 +#: src/slic3r/GUI/Plater.cpp:4774 msgid "All objects will be removed, continue?" msgstr "Tous les objets seront supprimés, continuer ?" -#: src/slic3r/GUI/ConfigWizard.cpp:289 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:737 +msgid "All settings changes will be discarded." +msgstr "Tous les changements de réglages seront perdus." + +#: src/slic3r/GUI/ConfigWizard.cpp:307 msgid "All standard" msgstr "Tout en standard" -#: src/libslic3r/Zipper.cpp:62 +#: src/libslic3r/miniz_extension.cpp:121 msgid "allocation failed" msgstr "échec de l'allocation" -#: src/slic3r/GUI/Plater.cpp:3995 +#: src/slic3r/GUI/Plater.cpp:3915 msgid "Along X axis" msgstr "Le long de l'axe X" -#: src/slic3r/GUI/Plater.cpp:3997 +#: src/slic3r/GUI/Plater.cpp:3917 msgid "Along Y axis" msgstr "Le long de l'axe Y" -#: src/slic3r/GUI/Plater.cpp:3999 +#: src/slic3r/GUI/Plater.cpp:3919 msgid "Along Z axis" msgstr "Le long de l'axe Z" -#: src/slic3r/GUI/ConfigWizard.cpp:222 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:160 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:141 +msgid "Alt + Mouse wheel" +msgstr "Alt + molette de la souris" + +#: src/slic3r/GUI/ConfigWizard.cpp:240 msgid "Alternate nozzles:" msgstr "Buses alternatives :" -#: src/slic3r/GUI/Plater.cpp:5002 +#: src/slic3r/GUI/Preferences.cpp:163 +msgid "Always ask for unsaved changes when selecting new preset" +msgstr "Toujours demander pour les modifications non enregistrées lors de la sélection d'un nouveau préréglage" + +#: src/slic3r/GUI/Plater.cpp:5135 #, c-format msgid "AMF file exported to %s" msgstr "Fichier AMF exporté vers %s" -#: src/slic3r/GUI/GLCanvas3D.cpp:690 +#: src/slic3r/GUI/GLCanvas3D.cpp:638 msgid "" -"An object outside the print area was detected\n" -"Resolve the current problem to continue slicing" +"An object outside the print area was detected.\n" +"Resolve the current problem to continue slicing." msgstr "" -"Objet détecté en dehors de la zone d'impression\n" -"Résolvez ce problème pour poursuivre le processus de découpage" +"Un objet en dehors de la zone d'impression a été détecté.\n" +"Résolvez le problème actuel pour continuer le découpage." -#: src/slic3r/GUI/GLCanvas3D.cpp:685 -msgid "An object outside the print area was detected" -msgstr "Objet détecté en dehors de la zone d'impression" +#: src/slic3r/GUI/GLCanvas3D.cpp:633 +msgid "An object outside the print area was detected." +msgstr "Un objet en dehors de la zone d'impression a été détecté." -#: src/slic3r/GUI/Tab.cpp:2943 -msgid "and it has the following unsaved changes:" -msgstr "et il y a les changements non sauvegardés suivants :" - -#: src/slic3r/GUI/Plater.cpp:3170 +#: src/slic3r/GUI/Plater.cpp:2972 msgid "Another export job is currently running." msgstr "Une autre tâche d'export est actuellement en cours." -#: src/slic3r/GUI/KBShortcutsDialog.cpp:168 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:169 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:162 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:163 msgid "Any arrow" msgstr "N'importe quelle flèche" -#: src/slic3r/GUI/Tab.cpp:965 +#: src/slic3r/GUI/Tab.cpp:1283 msgid "Any modifications should be saved as a new preset inherited from this one." msgstr "Toute modification doit être enregistrée comme un nouveau préréglage hérité de celui-ci." -#: src/libslic3r/PrintConfig.cpp:104 +#: src/libslic3r/PrintConfig.cpp:106 msgid "API Key / Password" msgstr "Clé API / Mot de Passe" -#: src/slic3r/GUI/GUI_App.cpp:810 +#: src/slic3r/GUI/GUI_App.cpp:1493 msgid "Application preferences" msgstr "Préférences de l'application" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:52 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1374 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:51 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1221 msgid "Apply changes" msgstr "Appliquer les modifications" -#: src/libslic3r/PrintConfig.cpp:575 src/libslic3r/PrintConfig.cpp:1708 +#: src/libslic3r/PrintConfig.cpp:611 src/libslic3r/PrintConfig.cpp:1823 msgid "approximate seconds" msgstr "secondes approximatives" -#: src/libslic3r/PrintConfig.cpp:428 src/libslic3r/PrintConfig.cpp:854 +#: src/libslic3r/PrintConfig.cpp:464 src/libslic3r/PrintConfig.cpp:892 msgid "Archimedean Chords" msgstr "Accords archimédiens" -#: src/libslic3r/Zipper.cpp:88 +#: src/libslic3r/miniz_extension.cpp:147 msgid "archive is too large" msgstr "l'archive est trop volumineuse" -#. TRN remove/delete -#: src/slic3r/GUI/Tab.cpp:3123 +#: src/slic3r/GUI/Tab.cpp:3420 msgid "Are you sure you want to %1% the selected preset?" msgstr "Êtes-vous sûr de vouloir %1% le préréglage sélectionné ?" @@ -741,97 +836,125 @@ msgstr "" "Êtes-vous certain de vouloir annuler le processus de flash du firmware ?\n" "Cela pourrait rendre votre imprimante inutilisable !" -#: src/slic3r/GUI/DoubleSlider.cpp:1903 src/slic3r/GUI/DoubleSlider.cpp:1924 +#: src/slic3r/GUI/DoubleSlider.cpp:2122 src/slic3r/GUI/DoubleSlider.cpp:2142 msgid "Are you sure you want to continue?" msgstr "Êtes-vous sûr de vouloir continuer ?" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1269 +#: src/slic3r/GUI/Tab.cpp:3392 +msgid "Are you sure you want to delete \"%1%\" preset from the physical printer \"%2%\"?" +msgstr "Voulez-vous vraiment supprimer le préréglage \"%1%\" de l'imprimante physique \"%2%\" ?" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:658 +msgid "Are you sure you want to delete \"%1%\" printer?" +msgstr "Voulez-vous vraiment supprimer l'imprimante \"%1%\" ?" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1128 msgid "Are you sure you want to do it?" msgstr "Êtes-vous certain de vouloir le faire ?" -#: src/libslic3r/PrintConfig.cpp:2423 +#: src/libslic3r/PrintConfig.cpp:2566 msgid "Area fill" msgstr "Remplissage de zone" -#: src/slic3r/GUI/Plater.cpp:641 +#: src/slic3r/GUI/Plater.cpp:507 msgid "Around object" msgstr "Autour de l'objet" -#: src/slic3r/GUI/GLCanvas3D.cpp:4493 src/slic3r/GUI/KBShortcutsDialog.cpp:157 -#: src/slic3r/GUI/Plater.cpp:2754 +#: src/slic3r/GUI/GLCanvas3D.cpp:4859 src/slic3r/GUI/KBShortcutsDialog.cpp:151 +#: src/slic3r/GUI/Plater.cpp:1549 msgid "Arrange" msgstr "Agencer" -#: src/slic3r/GUI/GLCanvas3D.cpp:4493 src/slic3r/GUI/KBShortcutsDialog.cpp:158 +#: src/slic3r/GUI/GLCanvas3D.cpp:4859 src/slic3r/GUI/KBShortcutsDialog.cpp:152 msgid "Arrange selection" msgstr "Agencer la sélection" -#: src/libslic3r/PrintConfig.cpp:3443 +#: src/libslic3r/PrintConfig.cpp:3642 msgid "Arrange the supplied models in a plate and merge them in a single model in order to perform actions once." msgstr "Agencer les modèles fournis sur un plateau et les fusionner en un seul modèle afin de ne réaliser les actions qu'une seule fois." -#: src/slic3r/GUI/Plater.cpp:2813 +#: src/slic3r/GUI/Jobs/ArrangeJob.cpp:149 msgid "Arranging" msgstr "Agencement en cours" -#: src/slic3r/GUI/Plater.cpp:2841 +#: src/slic3r/GUI/Jobs/ArrangeJob.cpp:182 msgid "Arranging canceled." msgstr "Agencement annulé." -#: src/slic3r/GUI/Plater.cpp:2842 +#: src/slic3r/GUI/Jobs/ArrangeJob.cpp:183 msgid "Arranging done." msgstr "Agencement terminé." -#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:215 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:159 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:206 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 msgid "Arrow Down" msgstr "Flèche Bas" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:166 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:160 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:217 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:229 msgid "Arrow Left" msgstr "Flèche Gauche" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:167 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:217 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:161 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:218 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:230 msgid "Arrow Right" msgstr "Flèche Droite" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:204 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:214 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:158 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:215 msgid "Arrow Up" msgstr "Flèche Haut" -#: src/slic3r/GUI/GLCanvas3DManager.cpp:290 +#: src/slic3r/GUI/GUI_App.cpp:246 +msgid "Artwork model by Nora Al-Badri and Jan Nikolai Nelles" +msgstr "Modèle d'illustration par Nora Al-Badri et Jan Nikolai Nelles" + +#: src/slic3r/GUI/OpenGLManager.cpp:265 msgid "As a workaround, you may run PrusaSlicer with a software rendered 3D graphics by running prusa-slicer.exe with the --sw_renderer parameter." msgstr "Une solution consiste à lancer PrusaSlicer avec des graphismes 3D rendus par un logiciel en lançant prusa-slicer.exe avec le paramètre --sw_renderer." -#: src/slic3r/GUI/GUI_App.cpp:1086 src/slic3r/GUI/Plater.cpp:2313 -#: src/slic3r/GUI/Tab.cpp:2960 +#: src/slic3r/GUI/Preferences.cpp:154 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:659 +msgid "Ask for unsaved changes when closing application" +msgstr "Demander pour les modifications non enregistrées lors de la fermeture de l'application" + +#: src/slic3r/GUI/Preferences.cpp:161 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:660 +msgid "Ask for unsaved changes when selecting new preset" +msgstr "Demander pour les modifications non enregistrées lors de la sélection d'un nouveau préréglage" + +#: src/slic3r/GUI/GUI_App.cpp:1878 src/slic3r/GUI/Jobs/SLAImportJob.cpp:210 +#: src/slic3r/GUI/Plater.cpp:2256 src/slic3r/GUI/Tab.cpp:3189 msgid "Attention!" msgstr "Attention !" -#: src/libslic3r/PrintConfig.cpp:1871 +#: src/libslic3r/PrintConfig.cpp:150 +msgid "Authorization Type" +msgstr "Type d'autorisation" + +#: src/libslic3r/PrintConfig.cpp:2013 msgid "Auto generated supports" msgstr "Supports générés automatiquement" -#: src/slic3r/GUI/Preferences.cpp:47 +#: src/slic3r/GUI/Preferences.cpp:64 msgid "Auto-center parts" msgstr "Centrer automatiquement les pièces" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:56 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1377 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:55 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1224 msgid "Auto-generate points" msgstr "Générer automatiquement les points" -#: src/slic3r/GUI/Plater.cpp:1157 +#: src/slic3r/GUI/Plater.cpp:1066 #, c-format msgid "Auto-repaired (%d errors)" msgstr "Réparé automatiquement (%d erreurs)" -#: src/slic3r/GUI/GUI_ObjectList.cpp:339 +#: src/slic3r/GUI/GUI_ObjectList.cpp:386 #, c-format msgid "Auto-repaired (%d errors):" msgstr "Réparé automatiquement (%d erreurs):" @@ -840,39 +963,47 @@ msgstr "Réparé automatiquement (%d erreurs):" msgid "Autodetected" msgstr "Autodétecté" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1273 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1134 msgid "Autogenerate support points" msgstr "Autogénérer les points de support" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1268 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1127 msgid "Autogeneration will erase all manually edited points." msgstr "L'autogénération va effacer tous les points édités manuellement." -#: src/slic3r/GUI/Tab.cpp:3632 +#: src/slic3r/GUI/Tab.cpp:4051 msgid "Automatic generation" msgstr "Génération automatique" -#: src/slic3r/GUI/ConfigWizard.cpp:761 +#: src/slic3r/GUI/ConfigWizard.cpp:1120 msgid "Automatic updates" msgstr "Mises à jour automatiques" -#: src/slic3r/GUI/MainFrame.cpp:536 +#: src/slic3r/GUI/MainFrame.cpp:1137 msgid "Automatically repair an STL file" msgstr "Réparer automatiquement un fichier STL" -#: src/slic3r/GUI/Tab.cpp:1171 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:129 +msgid "Autoset by angle" +msgstr "Autoset par angle" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:233 +msgid "Autoset custom supports" +msgstr "Supports personnalisés Autoset" + +#: src/slic3r/GUI/Tab.cpp:1501 msgid "Autospeed (advanced)" msgstr "Vitesse automatique (avancé)" -#: src/libslic3r/PrintConfig.cpp:136 +#: src/libslic3r/PrintConfig.cpp:169 msgid "Avoid crossing perimeters" msgstr "Éviter de traverser les périmètres" -#: src/slic3r/GUI/Tab.cpp:3268 +#: src/slic3r/GUI/Tab.cpp:3705 msgid "BACK ARROW" msgstr "FLÈCHE ARRIÈRE" -#: src/slic3r/GUI/Tab.cpp:3290 +#: src/slic3r/GUI/Tab.cpp:3727 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" "Click to reset all settings for the current option group to the last saved preset." @@ -880,7 +1011,7 @@ msgstr "" "L'icône FLÈCHE ARRIÈRE indique que les paramètres ont été changés et qu'ils ne sont pas identiques au dernier préréglage enregistré du groupe d'options en cours.\n" "Cliquez pour restaurer tous les paramètres du groupe d'options en cours avec les valeurs du dernier préréglage enregistré." -#: src/slic3r/GUI/Tab.cpp:3304 +#: src/slic3r/GUI/Tab.cpp:3741 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." @@ -888,19 +1019,23 @@ msgstr "" "L'icône FLÈCHE ARRIÈRE indique que la valeur a été changée et qu'elle n'est pas identique au dernier préréglage enregistré.\n" "Cliquez pour restaurer la valeur à celle du dernier préréglage enregistré." -#: src/slic3r/GUI/Preferences.cpp:55 +#: src/slic3r/GUI/Preferences.cpp:72 msgid "Background processing" msgstr "Tâche en arrière plan" -#: src/slic3r/GUI/GUI_ObjectList.cpp:351 +#: src/slic3r/GUI/GUI_ObjectList.cpp:398 msgid "backwards edges" msgstr "arrêtes à l'envers" -#: src/slic3r/GUI/MainFrame.cpp:174 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:60 +msgid "Balanced" +msgstr "Équilibré" + +#: src/slic3r/GUI/MainFrame.cpp:535 src/slic3r/GUI/MainFrame.cpp:537 msgid "based on Slic3r" msgstr "basé sur Slic3r" -#: src/slic3r/GUI/Tab.cpp:1439 +#: src/slic3r/GUI/Tab.cpp:1785 msgid "Bed" msgstr "Plateau" @@ -912,7 +1047,7 @@ msgstr "Modèle personnalisé de lit" msgid "Bed custom texture" msgstr "Texture du plateau personnalisée" -#: src/slic3r/GUI/BedShapeDialog.hpp:59 src/slic3r/GUI/ConfigWizard.cpp:929 +#: src/slic3r/GUI/BedShapeDialog.hpp:98 src/slic3r/GUI/ConfigWizard.cpp:1295 msgid "Bed Shape" msgstr "Forme du plateau" @@ -920,23 +1055,23 @@ msgstr "Forme du plateau" msgid "Bed shape" msgstr "Forme du plateau" -#: src/slic3r/GUI/ConfigWizard.cpp:929 +#: src/slic3r/GUI/ConfigWizard.cpp:1295 msgid "Bed Shape and Size" msgstr "Forme du Plateau et Taille" -#: src/libslic3r/PrintConfig.cpp:147 +#: src/libslic3r/PrintConfig.cpp:181 msgid "Bed temperature" msgstr "Température du plateau" -#: src/libslic3r/PrintConfig.cpp:145 +#: src/libslic3r/PrintConfig.cpp:178 msgid "Bed temperature for layers after the first one. Set this to zero to disable bed temperature control commands in the output." msgstr "Température du plateau pour les couches après la première. Mettez ceci à zéro pour désactiver les commandes de contrôle de température du plateau dans la sortie." -#: src/slic3r/GUI/ConfigWizard.cpp:1051 +#: src/slic3r/GUI/ConfigWizard.cpp:1417 msgid "Bed Temperature:" msgstr "Température du Plateau :" -#: src/slic3r/GUI/Tab.cpp:1988 src/libslic3r/PrintConfig.cpp:153 +#: src/slic3r/GUI/Tab.cpp:2175 src/libslic3r/PrintConfig.cpp:187 msgid "Before layer change G-code" msgstr "G-Code avant changement de couche" @@ -944,143 +1079,191 @@ msgstr "G-Code avant changement de couche" msgid "Before roll back" msgstr "Avant le retour en arrière" -#: src/slic3r/GUI/Plater.cpp:640 +#: src/slic3r/GUI/Plater.cpp:506 msgid "Below object" msgstr "Sous l'objet" -#: src/libslic3r/PrintConfig.cpp:1578 +#: src/libslic3r/PrintConfig.cpp:1686 msgid "Below Z" msgstr "En-deçà de Z" -#: src/libslic3r/PrintConfig.cpp:164 +#: src/libslic3r/PrintConfig.cpp:198 msgid "Between objects G-code" msgstr "Entre le G-code des objets" -#: src/slic3r/GUI/Tab.cpp:2006 +#: src/slic3r/GUI/Tab.cpp:2196 msgid "Between objects G-code (for sequential printing)" msgstr "Entre le G-code des objets (pour une impression séquentielle)" -#: src/libslic3r/PrintConfig.cpp:2489 src/libslic3r/PrintConfig.cpp:2490 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:242 +msgid "Block" +msgstr "Bloquer" + +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:32 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:383 +msgid "Block seam" +msgstr "Bloquer la jointure" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:373 +msgid "Block supports" +msgstr "Bloquer les supports" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:292 +msgid "Block supports by angle" +msgstr "Bloquer les supports par angle" + +#: src/libslic3r/PrintConfig.cpp:2632 src/libslic3r/PrintConfig.cpp:2633 msgid "Bottle volume" msgstr "Volume de la bouteille" -#: src/libslic3r/PrintConfig.cpp:2496 src/libslic3r/PrintConfig.cpp:2497 +#: src/libslic3r/PrintConfig.cpp:2639 src/libslic3r/PrintConfig.cpp:2640 msgid "Bottle weight" msgstr "Poids de la bouteille" #. 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:665 src/libslic3r/PrintConfig.cpp:174 -#: src/libslic3r/PrintConfig.cpp:183 +#: src/slic3r/GUI/MainFrame.cpp:962 src/slic3r/GUI/MainFrame.cpp:1282 +#: src/libslic3r/PrintConfig.cpp:208 src/libslic3r/PrintConfig.cpp:217 msgid "Bottom" msgstr "Dessous" -#: src/libslic3r/PrintConfig.cpp:435 +#: src/libslic3r/PrintConfig.cpp:471 msgid "Bottom fill pattern" msgstr "Motif de remplissage du dessous" -#: src/slic3r/GUI/PresetHints.cpp:342 +#: src/slic3r/GUI/PresetHints.cpp:340 msgid "Bottom is open." msgstr "Le fond est ouvert." -#: src/slic3r/GUI/PresetHints.cpp:336 +#: src/slic3r/GUI/PresetHints.cpp:334 msgid "Bottom shell is %1% mm thick for layer height %2% mm." msgstr "La coque inférieure a une épaisseur de %1% mm pour une hauteur de couche %2% mm." -#: src/libslic3r/PrintConfig.cpp:177 +#: src/libslic3r/PrintConfig.cpp:211 msgid "Bottom solid layers" msgstr "Couches solides inférieures" -#: src/slic3r/GUI/MainFrame.cpp:665 +#: src/slic3r/GUI/MainFrame.cpp:962 src/slic3r/GUI/MainFrame.cpp:1282 msgid "Bottom View" msgstr "Vue du Dessous" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1432 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1464 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1468 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1563 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1595 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1599 msgid "Box" msgstr "Case" -#: src/libslic3r/PrintConfig.cpp:193 +#: src/libslic3r/PrintConfig.cpp:227 msgid "Bridge" msgstr "Pont" -#: src/libslic3r/PrintConfig.cpp:222 +#: src/libslic3r/PrintConfig.cpp:256 msgid "Bridge flow ratio" msgstr "Ratio de flux pour les ponts" -#: src/slic3r/GUI/GUI_Preview.cpp:243 src/libslic3r/ExtrusionEntity.cpp:316 +#: src/slic3r/GUI/GUI_Preview.cpp:308 src/libslic3r/ExtrusionEntity.cpp:321 +#: src/libslic3r/ExtrusionEntity.cpp:350 msgid "Bridge infill" msgstr "Remplissage du pont" -#: src/libslic3r/PrintConfig.cpp:234 +#: src/libslic3r/PrintConfig.cpp:268 msgid "Bridges" msgstr "Ponts" -#: src/libslic3r/PrintConfig.cpp:213 +#: src/libslic3r/PrintConfig.cpp:247 msgid "Bridges fan speed" msgstr "Vitesse du ventilateur pour les ponts" -#: src/libslic3r/PrintConfig.cpp:202 +#: src/libslic3r/PrintConfig.cpp:236 msgid "Bridging angle" msgstr "Angle du pont" -#: src/libslic3r/PrintConfig.cpp:204 +#: 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 "Contournement de l'angle du pont. Si laissé à zéro, l'angle du pont sera calculé automatiquement. Sinon, l'angle fourni sera utilisé pour tous les ponts. Utilisez 180° pour un angle nul." -#: src/slic3r/GUI/PresetHints.cpp:219 +#: src/slic3r/GUI/PresetHints.cpp:218 msgid "Bridging volumetric" msgstr "Volumétrie des ponts" -#: src/slic3r/GUI/Plater.cpp:534 src/slic3r/GUI/Tab.cpp:1117 +#: src/slic3r/GUI/Plater.cpp:400 src/slic3r/GUI/Tab.cpp:1446 msgid "Brim" msgstr "Bordure" -#: src/libslic3r/PrintConfig.cpp:244 +#: src/libslic3r/PrintConfig.cpp:278 msgid "Brim width" msgstr "Largeur de la bordure" -#: src/slic3r/GUI/FirmwareDialog.cpp:805 src/slic3r/GUI/Tab.cpp:1658 -#: src/slic3r/GUI/Tab.cpp:1721 +#: src/slic3r/GUI/FirmwareDialog.cpp:805 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:271 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:327 msgid "Browse" msgstr "Parcourir" -#: src/libslic3r/Zipper.cpp:82 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:45 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:28 +msgid "Brush shape" +msgstr "Forme du pinceau" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:44 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:27 +msgid "Brush size" +msgstr "Taille du pinceau" + +#: src/libslic3r/miniz_extension.cpp:141 msgid "buffer too small" msgstr "buffer trop petit" +#: src/slic3r/GUI/GUI_App.cpp:1152 +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 "" +"Mais depuis cette version de PrusaSlicer, nous ne montrons plus ces informations dans les Réglages de l'imprimante.\n" +"Les réglages seront disponibles dans les réglages des imprimantes physiques." + #: src/slic3r/GUI/ButtonsDescription.cpp:16 msgid "Buttons And Text Colors Description" msgstr "Description des Boutons et des Couleurs de Texte" -#: src/slic3r/GUI/PresetHints.cpp:223 +#: src/slic3r/GUI/GUI_App.cpp:1084 +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 "" +"Par défaut, les nouvelles imprimantes seront nommées \"Imprimante N\" lors de leur création.\n" +"Remarque : ce nom peut être modifié ultérieurement dans les réglages des imprimantes physiques" + +#: src/slic3r/GUI/PresetHints.cpp:222 msgid "by the print profile maximum" msgstr "par le maximum du profil de l'imprimante" -#: src/slic3r/GUI/Preferences.cpp:113 +#: src/slic3r/GUI/Preferences.cpp:178 msgid "Camera" msgstr "Caméra" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:144 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:140 msgid "Camera view" msgstr "Vue caméra" -#: src/slic3r/GUI/ConfigWizard.cpp:1982 src/slic3r/GUI/FirmwareDialog.cpp:151 +#: src/slic3r/GUI/ConfigWizard.cpp:2493 src/slic3r/GUI/FirmwareDialog.cpp:151 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:245 #: src/slic3r/GUI/ProgressStatusBar.cpp:26 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:644 msgid "Cancel" msgstr "Annuler" -#: src/slic3r/GUI/PrintHostDialogs.cpp:157 +#: src/slic3r/GUI/PrintHostDialogs.cpp:155 msgid "Cancel selected" msgstr "Annuler la sélection" -#: src/slic3r/GUI/Plater.cpp:3669 src/slic3r/GUI/PrintHostDialogs.cpp:233 +#: src/slic3r/GUI/Plater.cpp:3589 src/slic3r/GUI/PrintHostDialogs.cpp:233 msgid "Cancelled" msgstr "Annulé" -#: src/slic3r/GUI/Plater.cpp:3153 src/slic3r/GUI/PrintHostDialogs.cpp:232 +#: src/slic3r/GUI/Plater.cpp:2953 src/slic3r/GUI/PrintHostDialogs.cpp:232 msgid "Cancelling" msgstr "Annulation" @@ -1092,7 +1275,7 @@ msgstr "Annulation..." msgid "Cannot calculate extrusion width for %1%: Variable \"%2%\" not accessible." msgstr "Impossible de calculer la largeur d'extrusion pour %1% : la variable \"%2%\" n'est pas accessible." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3017 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3400 msgid "" "Cannot insert a new layer range after the current layer range.\n" "Current layer range overlaps with the next layer range." @@ -1100,7 +1283,7 @@ msgstr "" "Impossible d'insérer une nouvelle zone de couche après la zone de couche actuelle.\n" "La zone de couche actuelle chevauche la prochaine zone de couche." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3008 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3391 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" @@ -1109,7 +1292,7 @@ msgstr "" "Impossible d'insérer une nouvelle zone de couche après la zone de couche actuelle.\n" "La zone de couche suivante est trop fine pour être séparée en deux sans enfreindre la hauteur de couche minimum." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3012 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3395 msgid "" "Cannot insert a new layer range between the current and the next layer range.\n" "The gap between the current layer range and the next layer range\n" @@ -1118,80 +1301,88 @@ msgstr "" "Impossible d'insérer une nouvelle zone de couche entre l'actuelle et la prochaine.\n" "L'espace entre la zone de couche actuelle et la prochaine est inférieur à la hauteur de couche minimum autorisée." -#: src/slic3r/GUI/Tab.cpp:3073 +#: src/slic3r/GUI/SavePresetDialog.cpp:137 msgid "Cannot overwrite a system profile." msgstr "Impossible d'écraser un profil système." -#: src/slic3r/GUI/Tab.cpp:3077 +#: src/slic3r/GUI/SavePresetDialog.cpp:142 msgid "Cannot overwrite an external profile." msgstr "Impossible d'écraser un profil externe." -#: src/libslic3r/SLAPrint.cpp:613 +#: src/libslic3r/SLAPrint.cpp:627 msgid "Cannot proceed without support points! Add support points or disable support generation." msgstr "Il n'est pas possible de continuer sans ajouter des points de support ! Ajoutez des points de support ou désactivez la génération de support." -#: src/slic3r/GUI/Tab.cpp:1834 +#: src/slic3r/GUI/Tab.cpp:2068 src/slic3r/GUI/UnsavedChangesDialog.cpp:1066 msgid "Capabilities" msgstr "Fonctionnalités" -#: src/slic3r/GUI/GUI_App.cpp:801 +#: src/slic3r/GUI/GUI_App.cpp:1481 msgid "Capture a configuration snapshot" msgstr "Capturer un instantané de la configuration" -#: src/libslic3r/PrintConfig.cpp:3424 +#: src/slic3r/GUI/ImGuiWrapper.cpp:801 src/slic3r/GUI/Search.cpp:458 +msgid "Category" +msgstr "Catégorie" + +#: src/libslic3r/PrintConfig.cpp:3623 msgid "Center" msgstr "Centrer" -#: src/libslic3r/PrintConfig.cpp:3425 +#: src/libslic3r/PrintConfig.cpp:3624 msgid "Center the print around the given center." msgstr "Centrer l'impression autour d'un point donné." -#: src/slic3r/GUI/Tab.cpp:1728 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:329 msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" msgstr "Fichiers de certificat (*.crt, *.pem)|*.crt;*.pem|Tous les fichiers|*.*" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:180 +#: src/slic3r/GUI/SavePresetDialog.cpp:313 +msgid "Change \"%1%\" to \"%2%\" for this physical printer \"%3%\"" +msgstr "Changer \"%1%\" par \"%2%\" pour cette imprimante physique \"%3%\"" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:174 msgid "Change camera type (perspective, orthographic)" msgstr "Changer le type d'appareil photo (perspective, orthographique)" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:885 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:693 msgid "Change drainage hole diameter" msgstr "Changer le diamètre du trou de drainage" -#: src/slic3r/GUI/DoubleSlider.cpp:1144 src/slic3r/GUI/GUI_ObjectList.cpp:1671 +#: src/slic3r/GUI/DoubleSlider.cpp:1273 src/slic3r/GUI/GUI_ObjectList.cpp:1800 msgid "Change extruder" msgstr "Changer l'extrudeur" -#: src/slic3r/GUI/GUI_ObjectList.cpp:536 +#: src/slic3r/GUI/GUI_ObjectList.cpp:574 msgid "Change Extruder" msgstr "Changer d'Extrudeur" -#: src/slic3r/GUI/DoubleSlider.cpp:1145 +#: src/slic3r/GUI/DoubleSlider.cpp:1274 msgid "Change extruder (N/A)" msgstr "Changer l'extrudeur (N/A)" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3997 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4484 msgid "Change Extruders" msgstr "Changer les Extrudeurs" -#: src/slic3r/GUI/GUI_ObjectSettings.cpp:152 +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:157 #, c-format msgid "Change Option %s" msgstr "Modifier l'Option %s" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3558 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4021 msgid "Change Part Type" msgstr "Changer le Type de Partie" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:820 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:694 msgid "Change point head diameter" msgstr "Changer le diamètre de la tête de la pointe" -#: src/slic3r/GUI/Plater.cpp:3944 +#: src/slic3r/GUI/Plater.cpp:3862 msgid "Change the number of instances of the selected object" msgstr "Modifie le nombre d'instances de l'objet sélectionné" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1589 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1718 msgid "Change type" msgstr "Changer le type" @@ -1199,125 +1390,172 @@ msgstr "Changer le type" msgid "Changelog && Download" msgstr "Téléchargement du Journal des Modifications" -#: src/slic3r/GUI/GUI_App.cpp:442 +#: src/slic3r/GUI/GUI_App.cpp:1245 msgid "Changing of an application language" msgstr "Changer la langue d'une application" -#: src/slic3r/GUI/ConfigWizard.cpp:769 src/slic3r/GUI/Preferences.cpp:64 +#: src/slic3r/GUI/ConfigWizard.cpp:1128 src/slic3r/GUI/Preferences.cpp:81 msgid "Check for application updates" msgstr "Vérifier les mises à jour de l'application" -#: src/slic3r/GUI/GUI_App.cpp:802 +#: src/slic3r/GUI/GUI_App.cpp:1482 msgid "Check for configuration updates" msgstr "Vérifier les mises à jour de configuration" -#: src/slic3r/GUI/GUI_App.cpp:802 +#: src/slic3r/GUI/GUI_App.cpp:1482 msgid "Check for updates" msgstr "Vérifier les mises à jo&ur" -#: src/slic3r/GUI/BedShapeDialog.cpp:532 +#: src/slic3r/GUI/BedShapeDialog.cpp:608 msgid "Choose a file to import bed texture from (PNG/SVG):" msgstr "Choisir un fichier à partir duquel importer la texture du plateau (PNG/SVG) :" -#: src/slic3r/GUI/MainFrame.cpp:773 +#: src/slic3r/GUI/MainFrame.cpp:1474 msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" msgstr "Choisir un fichier à découper (STL/OBJ/AMF/3MF/PRUSA) :" -#: src/slic3r/GUI/BedShapeDialog.cpp:555 +#: src/slic3r/GUI/BedShapeDialog.cpp:631 msgid "Choose an STL file to import bed model from:" msgstr "Choisissez un fichier STL à partir duquel importer le modèle de lit :" -#: src/slic3r/GUI/BedShapeDialog.cpp:487 +#: src/slic3r/GUI/BedShapeDialog.cpp:563 msgid "Choose an STL file to import bed shape from:" msgstr "Choisissez un fichier STL à partir duquel importer la forme du plateau :" -#: src/slic3r/GUI/GUI_App.cpp:555 +#: src/slic3r/GUI/GUI_App.cpp:1208 msgid "Choose one file (3MF/AMF):" msgstr "Choisir un fichier (3MF/AMF) :" -#: src/slic3r/GUI/GUI_App.cpp:567 +#: src/slic3r/GUI/GUI_App.cpp:1233 +msgid "Choose one file (GCODE/.GCO/.G/.ngc/NGC):" +msgstr "Choisir un fichier (GCODE/.GCO/.G/.ngc/NGC) :" + +#: src/slic3r/GUI/GUI_App.cpp:1220 msgid "Choose one or more files (STL/OBJ/AMF/3MF/PRUSA):" msgstr "Choisir un ou plusieurs fichiers (STL/OBJ/AMF/3MF/PRUSA) :" -#: src/slic3r/GUI/ConfigWizard.cpp:895 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:35 +msgid "Choose SLA archive:" +msgstr "Choisir l'archive SLA :" + +#: src/slic3r/GUI/ConfigWizard.cpp:1261 msgid "Choose the type of firmware used by your printer." msgstr "Choisissez le type de firmware utilisé par votre imprimante." -#: src/slic3r/GUI/BedShapeDialog.cpp:89 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:53 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:36 +msgid "Circle" +msgstr "Cercle" + +#: src/slic3r/GUI/BedShapeDialog.cpp:142 msgid "Circular" msgstr "Circulaire" -#: src/slic3r/GUI/GLCanvas3D.cpp:4624 src/slic3r/GUI/GLCanvas3D.cpp:4657 -msgid "Click right mouse button to open History" -msgstr "Faites un clic droit sur la souris pour ouvrir l'Historique" +#: src/slic3r/GUI/GLCanvas3D.cpp:5028 src/slic3r/GUI/GLCanvas3D.cpp:5067 +msgid "Click right mouse button to open/close History" +msgstr "Cliquez avec le bouton droit de la souris pour ouvrir/fermer l'historique" -#: src/slic3r/GUI/GUI_ObjectList.cpp:404 +#: src/slic3r/GUI/GUI_ObjectList.cpp:451 msgid "Click the icon to change the object printable property" msgstr "Cliquez sur l'icône pour changer les propriétés imprimables de l'objet" -#: src/slic3r/GUI/GUI_ObjectList.cpp:398 +#: src/slic3r/GUI/GUI_ObjectList.cpp:445 msgid "Click the icon to change the object settings" msgstr "Cliquez sur l'icône pour modifier les réglages de l'objet" -#: src/slic3r/GUI/Plater.cpp:343 +#: src/slic3r/GUI/PresetComboBoxes.cpp:566 msgid "Click to edit preset" msgstr "Cliquez pour éditer le préréglage" -#: src/libslic3r/PrintConfig.cpp:252 +#: src/slic3r/GUI/GCodeViewer.cpp:2071 +msgid "Click to hide" +msgstr "Cliquez pour cacher" + +#: src/slic3r/GUI/GCodeViewer.cpp:2071 +msgid "Click to show" +msgstr "Cliquez pour afficher" + +#: src/libslic3r/PrintConfig.cpp:286 msgid "Clip multi-part objects" msgstr "Dissocier les objets multi-pièces" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:50 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:58 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:42 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:25 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:57 msgid "Clipping of view" msgstr "Le plan de découpage" #: src/slic3r/GUI/FirmwareDialog.cpp:852 -#: src/slic3r/GUI/Mouse3DController.cpp:364 -#: src/slic3r/GUI/PrintHostDialogs.cpp:161 +#: src/slic3r/GUI/Mouse3DController.cpp:353 +#: src/slic3r/GUI/PrintHostDialogs.cpp:159 msgid "Close" msgstr "Fermer" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:45 -#: src/libslic3r/PrintConfig.cpp:2934 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:44 +#: src/libslic3r/PrintConfig.cpp:3098 msgid "Closing distance" -msgstr "Distance de fermeture" +msgstr "Intervalle d'espacement" -#: src/slic3r/GUI/Plater.cpp:1260 src/libslic3r/PrintConfig.cpp:582 +#: src/slic3r/GUI/MainFrame.cpp:1297 src/slic3r/GUI/Plater.cpp:2144 +msgid "Collapse sidebar" +msgstr "Réduire la barre latérale" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:180 +msgid "Collapse/Expand the sidebar" +msgstr "Réduire/développer la barre latérale" + +#: src/slic3r/GUI/Plater.cpp:1198 src/libslic3r/PrintConfig.cpp:618 msgid "Color" msgstr "Couleur" -#: src/slic3r/GUI/DoubleSlider.cpp:1005 +#: src/slic3r/GUI/GCodeViewer.cpp:2410 src/slic3r/GUI/GCodeViewer.cpp:2438 +msgid "Color change" +msgstr "Changement de couleur" + +#: src/slic3r/GUI/DoubleSlider.cpp:1130 msgid "Color change (\"%1%\")" msgstr "Changement de couleur (\"%1%\")" -#: src/slic3r/GUI/DoubleSlider.cpp:1006 +#: src/slic3r/GUI/DoubleSlider.cpp:1131 msgid "Color change (\"%1%\") for Extruder %2%" msgstr "Changement de couleur (\"%1%\") pour l'extrudeur %2%" -#: src/slic3r/GUI/GLCanvas3D.cpp:995 +#: src/slic3r/GUI/GLCanvas3D.cpp:1001 #, c-format msgid "Color change for Extruder %d at %.2f mm" msgstr "Changement de couleur pour l'Extrudeur %d à %.2f mm" -#: src/slic3r/GUI/GUI_Preview.cpp:228 src/slic3r/GUI/GUI_Preview.cpp:572 -#: src/libslic3r/GCode/PreviewData.cpp:359 +#: src/slic3r/GUI/Tab.cpp:2203 +msgid "Color Change G-code" +msgstr "G-code de changement de couleur" + +#: src/libslic3r/PrintConfig.cpp:1960 +msgid "Color change G-code" +msgstr "G-code de changement de couleur" + +#: src/slic3r/GUI/GCodeViewer.cpp:2531 src/slic3r/GUI/GUI_Preview.cpp:1475 +msgid "Color changes" +msgstr "Changements de couleur" + +#: src/slic3r/GUI/GCodeViewer.cpp:2242 src/slic3r/GUI/GUI_Preview.cpp:282 +#: src/slic3r/GUI/GUI_Preview.cpp:784 src/libslic3r/GCode/PreviewData.cpp:364 msgid "Color Print" msgstr "Couleur d'Impression" -#: src/libslic3r/PrintConfig.cpp:260 +#: src/libslic3r/PrintConfig.cpp:294 msgid "Colorprint height" msgstr "Hauteur du Colorprint" -#: src/libslic3r/PrintConfig.cpp:990 +#: src/libslic3r/PrintConfig.cpp:1034 msgid "Combine infill every" msgstr "Combiner le remplissage toutes les" -#: src/libslic3r/PrintConfig.cpp:995 +#: src/libslic3r/PrintConfig.cpp:1039 msgid "Combine infill every n layers" msgstr "Combiner le remplissage toutes les n couches" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:154 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:148 msgid "Commands" msgstr "Commandes" @@ -1325,23 +1563,23 @@ msgstr "Commandes" msgid "Comment:" msgstr "Commentaire :" -#: src/slic3r/GUI/Tab.cpp:56 src/libslic3r/PrintConfig.cpp:280 +#: src/slic3r/GUI/Tab.cpp:107 src/libslic3r/PrintConfig.cpp:314 msgid "Compatible print profiles" msgstr "Profils d'impression compatibles" -#: src/libslic3r/PrintConfig.cpp:286 +#: src/libslic3r/PrintConfig.cpp:320 msgid "Compatible print profiles condition" msgstr "Condition des profils d'impression compatibles" -#: src/slic3r/GUI/Tab.cpp:50 src/libslic3r/PrintConfig.cpp:265 +#: src/slic3r/GUI/Tab.cpp:101 src/libslic3r/PrintConfig.cpp:299 msgid "Compatible printers" msgstr "Imprimantes compatibles" -#: src/libslic3r/PrintConfig.cpp:271 +#: src/libslic3r/PrintConfig.cpp:305 msgid "Compatible printers condition" msgstr "Condition de compatibilité des imprimantes" -#: src/libslic3r/PrintConfig.cpp:304 +#: src/libslic3r/PrintConfig.cpp:338 msgid "Complete individual objects" msgstr "Compléter les objets individuels" @@ -1349,27 +1587,27 @@ msgstr "Compléter les objets individuels" msgid "Completed" msgstr "Terminé" -#: src/libslic3r/Zipper.cpp:54 +#: src/libslic3r/miniz_extension.cpp:113 msgid "compression failed" msgstr "échec de la compression" -#: src/libslic3r/PrintConfig.cpp:426 src/libslic3r/PrintConfig.cpp:849 +#: src/libslic3r/PrintConfig.cpp:462 src/libslic3r/PrintConfig.cpp:887 msgid "Concentric" msgstr "Concentrique" -#: src/slic3r/GUI/ConfigWizard.cpp:2110 +#: src/slic3r/GUI/ConfigWizard.cpp:2625 msgid "Configuration &Assistant" msgstr "&Assistant de Configuration" -#: src/slic3r/GUI/ConfigWizard.cpp:2113 +#: src/slic3r/GUI/ConfigWizard.cpp:2628 msgid "Configuration &Wizard" msgstr "Assistant de Co&nfiguration" -#: src/slic3r/GUI/ConfigWizard.cpp:2109 +#: src/slic3r/GUI/ConfigWizard.cpp:2624 msgid "Configuration Assistant" msgstr "Assistant de Configuration" -#: src/libslic3r/PrintConfig.cpp:1316 +#: src/libslic3r/PrintConfig.cpp:1424 msgid "Configuration notes" msgstr "Notes de configuration" @@ -1385,11 +1623,15 @@ msgstr "Mise à jour de la configuration" msgid "Configuration update is available" msgstr "Une mise à jour de la configuration est disponible" -#: src/slic3r/GUI/UpdateDialogs.cpp:303 +#: src/slic3r/GUI/NotificationManager.hpp:321 +msgid "Configuration update is available." +msgstr "Une mise à jour de la configuration est disponible." + +#: src/slic3r/GUI/UpdateDialogs.cpp:304 msgid "Configuration updates" msgstr "Mises à jour de la configuration" -#: src/slic3r/GUI/ConfigWizard.cpp:2112 +#: src/slic3r/GUI/ConfigWizard.cpp:2627 msgid "Configuration Wizard" msgstr "Assistant de Configuration" @@ -1397,15 +1639,11 @@ msgstr "Assistant de Configuration" msgid "Confirmation" msgstr "Confirmation" -#: src/slic3r/GUI/Tab.cpp:1931 -msgid "Connection failed." -msgstr "La connexion a échoué." - -#: src/slic3r/GUI/Tab.cpp:3627 +#: src/slic3r/GUI/Tab.cpp:4046 msgid "Connection of the support sticks and junctions" msgstr "Connexion des tiges de support et jonctions" -#: src/slic3r/Utils/AstroBox.cpp:83 +#: src/slic3r/Utils/AstroBox.cpp:84 msgid "Connection to AstroBox works correctly." msgstr "La connexion à AstroBox fonctionne correctement." @@ -1421,124 +1659,136 @@ msgstr "La connexion à FlashAir fonctionne correctement et le téléchargement msgid "Connection to OctoPrint works correctly." msgstr "La connexion avec OctoPrint fonctionne correctement." -#: src/slic3r/GUI/Tab.cpp:1928 -msgid "Connection to printer works correctly." -msgstr "La connexion avec l'imprimante fonctionne correctement." +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:260 +msgid "Connection to printers connected via the print host failed." +msgstr "La connexion aux imprimantes connectées via l'hôte d'impression a échoué." -#: src/slic3r/Utils/OctoPrint.cpp:176 +#: src/slic3r/Utils/OctoPrint.cpp:185 msgid "Connection to Prusa SL1 works correctly." msgstr "La connexion avec Prusa SL1 fonctionne correctement." -#: src/libslic3r/PrintConfig.cpp:1909 +#: src/libslic3r/PrintConfig.cpp:2051 msgid "Contact Z distance" msgstr "Distance de contact Z" -#: src/slic3r/GUI/AboutDialog.cpp:261 +#: src/slic3r/GUI/AboutDialog.cpp:286 msgid "Contributions by Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik and numerous others." msgstr "Contributions par Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik et de nombreux autres personnes." -#: src/libslic3r/PrintConfig.cpp:2659 +#: src/slic3r/GUI/GUI_App.cpp:245 +msgid "Contributions by Vojtech Bubnik, Enrico Turri, Oleksandra Iushchenko, Tamas Meszaros, Lukas Matena, Vojtech Kral, David Kocik and numerous others." +msgstr "Contributions de Vojtech Bubnik, Enrico Turri, Oleksandra Iushchenko, Tamas Meszaros, Lukas Matena, Vojtech Kral, David Kocik et bien d'autres." + +#: src/libslic3r/PrintConfig.cpp:2823 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 "Contrôle le type de pont entre deux piliers voisins. Peut-être en zig-zag, en croisement (double zig-zag) ou dynamique auquel cas il alternera automatiquement entre les deux premiers en fonction de la distance entre les deux piliers." -#: src/slic3r/GUI/Tab.cpp:1444 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1858 src/slic3r/GUI/Plater.cpp:4886 +msgid "Convert from imperial units" +msgstr "Convertir à partir des unités impériales" + +#: src/slic3r/GUI/Tab.cpp:1790 msgid "Cooling" msgstr "Refroidissement" -#: src/libslic3r/PrintConfig.cpp:660 +#: src/libslic3r/PrintConfig.cpp:696 msgid "Cooling moves are gradually accelerating beginning at this speed." msgstr "Les mouvements de refroidissement accélèrent progressivement à partir de cette vitesse." -#: src/libslic3r/PrintConfig.cpp:679 +#: src/libslic3r/PrintConfig.cpp:715 msgid "Cooling moves are gradually accelerating towards this speed." msgstr "Les mouvements de refroidissement accélèrent progressivement jusqu'à cette vitesse." -#: src/slic3r/GUI/Tab.cpp:1465 +#: src/slic3r/GUI/Tab.cpp:1811 msgid "Cooling thresholds" msgstr "Seuils de refroidissement" -#: src/libslic3r/PrintConfig.cpp:327 +#: src/libslic3r/PrintConfig.cpp:361 msgid "Cooling tube length" msgstr "Longueur du tube de refroidissement" -#: src/libslic3r/PrintConfig.cpp:319 +#: src/libslic3r/PrintConfig.cpp:353 msgid "Cooling tube position" msgstr "Position du tube de refroidissement" -#: src/slic3r/GUI/Plater.cpp:4752 +#: src/slic3r/GUI/Plater.cpp:4856 msgid "Copies of the selected object" msgstr "Copies de l'objet sélectionné" -#: src/slic3r/GUI/GLCanvas3D.cpp:4505 +#: src/slic3r/GUI/GLCanvas3D.cpp:4871 msgid "Copy" msgstr "Copier" -#: src/slic3r/GUI/MainFrame.cpp:589 +#: src/slic3r/GUI/MainFrame.cpp:1195 msgid "Copy selection to clipboard" msgstr "Copier la sélection dans le presse-papier" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:132 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:127 msgid "Copy to clipboard" msgstr "Copier dans le presse-papier" -#: src/slic3r/GUI/SysInfoDialog.cpp:154 +#: src/slic3r/GUI/SysInfoDialog.cpp:177 msgid "Copy to Clipboard" msgstr "Copier dans le Presse-Papier" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:121 +#: 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 copie du G-code temporaire est terminée mais le code exporté n'a pas pu être ouvert au cours de la vérification de copie. Le G-code de sortie se trouve en %1%.tmp." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:118 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:153 msgid "Copying of the temporary G-code has finished but the original code at %1% couldn't be opened during copy check. The output G-code is at %2%.tmp." msgstr "La copie du G-code temporaire est terminée mais le code localisé en %1% n'a pas pu être ouvert au cours de la vérification de copie. Le G-code de sortie se trouve en %2%.tmp." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:480 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:522 msgid "Copying of the temporary G-code to the output G-code failed" msgstr "La copie du G-code provisoire dans le G-code final a échoué" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:109 -msgid "Copying of the temporary G-code to the output G-code failed. Maybe the SD card is write locked?" -msgstr "La copie du G-code provisoire dans le G-code final a échoué. Peut-être que la carte SD est protégée en écriture ?" +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:163 +msgid "" +"Copying of the temporary G-code to the output G-code failed. Maybe the SD card is write locked?\n" +"Error message: %1%" +msgstr "" +"La copie du G-code temporaire vers le G-code de sortie a échoué. Peut-être que la carte SD est verrouillée en écriture ?\n" +"Message d'erreur : %1%" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:112 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:147 msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp." msgstr "La copie du G-code temporaire vers le G-code de sortie a échoué. Il est possible qu'il y ait un problème avec le matériel cible, veuillez tenter à nouveau l'export ou utilisez un matériel différent. Le G-code de sortie corrompu se trouve en %1%.tmp." -#: src/slic3r/GUI/AboutDialog.cpp:127 src/slic3r/GUI/AboutDialog.cpp:256 +#: src/slic3r/GUI/AboutDialog.cpp:139 src/slic3r/GUI/AboutDialog.cpp:281 msgid "Copyright" msgstr "Droits d'auteur" -#: src/libslic3r/PrintConfig.cpp:2571 src/libslic3r/PrintConfig.cpp:2572 +#: src/libslic3r/PrintConfig.cpp:2714 src/libslic3r/PrintConfig.cpp:2715 msgid "Correction for expansion" msgstr "Correction avant expansion" -#: src/slic3r/GUI/Tab.cpp:2100 src/slic3r/GUI/Tab.cpp:3519 +#: src/slic3r/GUI/Tab.cpp:2270 src/slic3r/GUI/Tab.cpp:3935 msgid "Corrections" msgstr "Corrections" -#: src/slic3r/GUI/Plater.cpp:1243 src/libslic3r/PrintConfig.cpp:760 -#: src/libslic3r/PrintConfig.cpp:2510 src/libslic3r/PrintConfig.cpp:2511 +#: src/slic3r/GUI/Plater.cpp:1158 src/libslic3r/PrintConfig.cpp:796 +#: src/libslic3r/PrintConfig.cpp:2653 src/libslic3r/PrintConfig.cpp:2654 msgid "Cost" msgstr "Coût" -#: src/slic3r/GUI/Plater.cpp:239 +#: src/slic3r/GUI/Plater.cpp:245 msgid "Cost (money)" msgstr "Coût (argent)" -#: src/slic3r/GUI/Plater.cpp:2835 +#: src/slic3r/GUI/Jobs/ArrangeJob.cpp:176 msgid "Could not arrange model objects! Some geometries may be invalid." msgstr "Impossible d'agencer les objets du modèle ! Certaines géométries sont peut-être non-valides." -#: src/slic3r/Utils/AstroBox.cpp:89 +#: src/slic3r/Utils/AstroBox.cpp:90 msgid "Could not connect to AstroBox" msgstr "Impossible de se connecter à AstroBox" -#: src/slic3r/Utils/Duet.cpp:54 +#: src/slic3r/Utils/Duet.cpp:55 msgid "Could not connect to Duet" msgstr "Impossible de se connecter à Duet" -#: src/slic3r/Utils/FlashAir.cpp:73 +#: src/slic3r/Utils/FlashAir.cpp:74 msgid "Could not connect to FlashAir" msgstr "Impossible de se connecter à FlashAir" @@ -1546,56 +1796,69 @@ msgstr "Impossible de se connecter à FlashAir" msgid "Could not connect to OctoPrint" msgstr "Impossible de se connecter à OctoPrint" -#: src/slic3r/Utils/OctoPrint.cpp:181 +#: src/slic3r/Utils/OctoPrint.cpp:191 msgid "Could not connect to Prusa SLA" msgstr "Impossible de se connecter à Prusa SLA" -#: src/slic3r/GUI/Tab.cpp:1687 +#: src/slic3r/Utils/Http.cpp:73 +msgid "Could not detect system SSL certificate store. PrusaSlicer will be unable to establish secure network connections." +msgstr "Impossible de détecter le stockage de certificats SSL du système. PrusaSlicer ne pourra pas établir de connexions réseau sécurisées." + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:289 msgid "Could not get a valid Printer Host reference" msgstr "Impossible d'obtenir une référence d'Hôte d'Imprimante valide" -#: src/slic3r/Utils/Duet.cpp:134 +#: src/slic3r/Utils/Duet.cpp:136 msgid "Could not get resources to create a new connection" msgstr "Impossible d'obtenir les ressources pour créer une nouvelle connexion" -#: src/libslic3r/PrintConfig.cpp:1959 +#: src/libslic3r/PrintConfig.cpp:2101 msgid "Cover the top contact layer of the supports with loops. Disabled by default." msgstr "Recouvrir la couche de contact supérieure des supports avec des boucles. Désactivé par défaut." -#: src/libslic3r/PrintConfig.cpp:89 +#: src/libslic3r/PrintConfig.cpp:91 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 "Les fentes d'une taille inférieure à 2x le rayon de fermeture de l'espacement sont remplies au cours du tranchage par maillage triangulaire. L'opération de fermeture de l'espacement peut réduire la résolution de l'impression finale, aussi est-il conseillé de conserver une valeur relativement basse." +msgstr "Les fentes d'une taille inférieure à 2x le rayon de l'espacement sont remplies au cours du tranchage par maillage triangulaire. L'opération de fermeture de l'espacement peut réduire la résolution de l'impression finale, aussi est-il conseillé de conserver une valeur relativement basse." -#: src/libslic3r/Zipper.cpp:58 +#: src/libslic3r/miniz_extension.cpp:117 msgid "CRC-32 check failed" msgstr "Échec du test CRC-32" -#: src/libslic3r/PrintConfig.cpp:2857 +#: src/libslic3r/PrintConfig.cpp:3021 msgid "Create pad around object and ignore the support elevation" msgstr "Créer un socle autour de l'objet et ignorer l'élévation du support" -#: src/libslic3r/PrintConfig.cpp:2724 +#: src/libslic3r/PrintConfig.cpp:2888 msgid "Critical angle" msgstr "Angle critique" -#: src/libslic3r/PrintConfig.cpp:2668 +#: src/libslic3r/PrintConfig.cpp:2832 msgid "Cross" msgstr "Croiser" -#: src/libslic3r/PrintConfig.cpp:847 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:225 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:203 +msgid "Ctrl + Mouse wheel" +msgstr "Ctrl + molette de la souris" + +#: src/libslic3r/PrintConfig.cpp:885 msgid "Cubic" msgstr "Cubique" -#: src/slic3r/GUI/wxExtensions.cpp:704 +#: src/slic3r/Utils/Http.cpp:91 +msgid "CURL init has failed. PrusaSlicer will be unable to establish network connections. See logs for additional details." +msgstr "L'initialisation de CURL a échoué. PrusaSlicer ne pourra pas établir de connexions réseau. Voir les journaux pour plus de détails." + +#: src/slic3r/GUI/wxExtensions.cpp:624 #, c-format msgid "Current mode is %s" msgstr "Le mode actuel est %s" -#: src/slic3r/GUI/Tab.cpp:959 +#: src/slic3r/GUI/Tab.cpp:1278 msgid "Current preset is inherited from" msgstr "Le préréglage actuel est hérité de" -#: src/slic3r/GUI/Tab.cpp:957 +#: src/slic3r/GUI/Tab.cpp:1276 msgid "Current preset is inherited from the default preset." msgstr "Le préréglage actuel est hérité du préréglage par défaut." @@ -1603,451 +1866,488 @@ msgstr "Le préréglage actuel est hérité du préréglage par défaut." msgid "Current version:" msgstr "Version actuelle :" -#: src/slic3r/GUI/BedShapeDialog.cpp:98 src/slic3r/GUI/GUI_Preview.cpp:249 -#: src/libslic3r/ExtrusionEntity.cpp:322 +#: src/slic3r/GUI/BedShapeDialog.cpp:143 src/slic3r/GUI/GUI_Preview.cpp:314 +#: src/libslic3r/ExtrusionEntity.cpp:327 src/libslic3r/ExtrusionEntity.cpp:362 msgid "Custom" msgstr "Personnalisé" -#: src/libslic3r/PrintConfig.cpp:112 +#: src/libslic3r/PrintConfig.cpp:114 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 "Un fichier de certificat CA personnalisé peut être spécifié pour les connexions HTTPS OctoPrint, au format crt / pem. Si ce champ est vide, le certificat par défaut OS CA certificate repository est utilisé." -#: src/slic3r/GUI/Tab.cpp:1527 src/slic3r/GUI/Tab.cpp:1975 +#: src/slic3r/GUI/Tab.cpp:1872 src/slic3r/GUI/Tab.cpp:2160 +#: src/libslic3r/PrintConfig.cpp:1978 msgid "Custom G-code" msgstr "G-code personnalisé" -#: src/slic3r/GUI/DoubleSlider.cpp:1619 +#: src/slic3r/GUI/DoubleSlider.cpp:1815 msgid "Custom G-code on current layer (%1% mm)." msgstr "G-code personnalisé sur la couche actuelle actuel (%1% mm)." -#: src/slic3r/GUI/ConfigWizard.cpp:732 +#: src/slic3r/GUI/GCodeViewer.cpp:2580 src/slic3r/GUI/GUI_Preview.cpp:1477 +msgid "Custom G-codes" +msgstr "G-codes personnalisés" + +#: src/slic3r/GUI/ConfigWizard.cpp:1091 msgid "Custom Printer" msgstr "Imprimante Personnalisée" -#: src/slic3r/GUI/ConfigWizard.cpp:732 +#: src/slic3r/GUI/ConfigWizard.cpp:1091 msgid "Custom Printer Setup" msgstr "Configuration d'une Imprimante Personnalisée" -#: src/slic3r/GUI/ConfigWizard.cpp:736 +#: src/slic3r/GUI/ConfigWizard.cpp:1095 msgid "Custom profile name:" msgstr "Nom de profil personnalisé :" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:42 -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:144 src/libslic3r/PrintConfig.cpp:3402 +#: src/slic3r/GUI/DoubleSlider.cpp:1135 +msgid "Custom template (\"%1%\")" +msgstr "Modèle personnalisé (\"%1%\")" + +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:146 src/libslic3r/PrintConfig.cpp:3601 msgid "Cut" msgstr "Couper" -#: src/slic3r/GUI/Plater.cpp:4786 +#: src/slic3r/GUI/Plater.cpp:4921 msgid "Cut by Plane" msgstr "Couper selon un Plan" -#: src/libslic3r/PrintConfig.cpp:3403 +#: src/libslic3r/PrintConfig.cpp:3602 msgid "Cut model at the given Z." msgstr "Couper le modèle au Z donné." -#: src/slic3r/GUI/GUI_ObjectList.cpp:1432 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1563 msgid "Cylinder" msgstr "Cylindre" -#: src/slic3r/GUI/MainFrame.cpp:568 +#: src/slic3r/GUI/MainFrame.cpp:1174 msgid "D&eselect all" msgstr "Tout désél&ectionner" -#: src/libslic3r/PrintConfig.cpp:3504 +#: src/libslic3r/PrintConfig.cpp:3709 msgid "Data directory" msgstr "Répertoire de données" -#: src/slic3r/GUI/Mouse3DController.cpp:313 +#: src/slic3r/GUI/Mouse3DController.cpp:300 msgid "Deadzone:" msgstr "Zone morte :" -#: src/libslic3r/Zipper.cpp:52 +#: src/libslic3r/miniz_extension.cpp:111 msgid "decompression failed or archive is corrupted" msgstr "la décompression a échoué ou l'archive est corrompue" -#: src/slic3r/GUI/Plater.cpp:4720 +#: src/slic3r/GUI/Plater.cpp:4824 msgid "Decrease Instances" msgstr "Diminuer les Instances" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1704 src/libslic3r/PrintConfig.cpp:335 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1832 src/libslic3r/PrintConfig.cpp:369 msgid "Default" msgstr "Défaut" -#: src/slic3r/GUI/GUI_ObjectList.cpp:457 src/slic3r/GUI/GUI_ObjectList.cpp:469 -#: src/slic3r/GUI/GUI_ObjectList.cpp:917 src/slic3r/GUI/GUI_ObjectList.cpp:3967 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3977 -#: src/slic3r/GUI/GUI_ObjectList.cpp:4012 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:200 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:257 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:282 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:490 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:1753 +#: 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/ObjectDataViewModel.cpp:202 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:259 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:284 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:492 msgid "default" msgstr "défaut" -#: src/libslic3r/PrintConfig.cpp:777 +#: src/libslic3r/PrintConfig.cpp:813 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 "Angle de base par défaut pour l'orientation du remplissage. Des croisements seront appliqués à cette valeur. Les ponts seront remplis avec la meilleure direction que Slic3r peut détecter, ce réglage ne les affecteront donc pas." +msgstr "Angle de base par défaut pour l'orientation du remplissage. Des croisements seront appliqués à cette valeur. Les ponts seront remplis avec la meilleure direction que Slic3r peut détecter,ce réglage de les affectera donc pas." -#: src/libslic3r/PrintConfig.cpp:554 +#: src/slic3r/GUI/GCodeViewer.cpp:2289 +msgid "Default color" +msgstr "Couleur par défaut" + +#: src/slic3r/GUI/GCodeViewer.cpp:2313 +msgid "default color" +msgstr "couleur par défaut" + +#: src/libslic3r/PrintConfig.cpp:590 msgid "Default extrusion width" msgstr "Largeur d'extrusion par défaut" -#: src/slic3r/GUI/Tab.cpp:987 +#: src/slic3r/GUI/Tab.cpp:1305 msgid "default filament profile" msgstr "profil du filament par défaut" -#: src/libslic3r/PrintConfig.cpp:345 +#: src/libslic3r/PrintConfig.cpp:379 msgid "Default filament profile" msgstr "Profil de filament par défaut" -#: src/libslic3r/PrintConfig.cpp:346 +#: src/libslic3r/PrintConfig.cpp:380 msgid "Default filament profile associated with the current printer profile. On selection of the current printer profile, this filament profile will be activated." msgstr "Profil de filament par défaut associé au profil d'imprimante courant. En sélectionnant le profil d'imprimante courant, ce profil de filament sera activé." -#: src/slic3r/GUI/Tab.cpp:2919 -#, c-format -msgid "Default preset (%s)" -msgstr "Préréglage par défaut (%s)" - -#: src/slic3r/GUI/GLCanvas3D.cpp:904 src/slic3r/GUI/GLCanvas3D.cpp:933 +#: src/slic3r/GUI/GLCanvas3D.cpp:910 src/slic3r/GUI/GLCanvas3D.cpp:939 msgid "Default print color" msgstr "Couleur d'impression par défaut" -#: src/slic3r/GUI/Tab.cpp:984 +#: src/slic3r/GUI/Tab.cpp:1302 msgid "default print profile" msgstr "profil d'impression par défaut" -#: src/libslic3r/PrintConfig.cpp:352 +#: src/libslic3r/PrintConfig.cpp:386 msgid "Default print profile" msgstr "Profil de filament par défaut" -#: src/libslic3r/PrintConfig.cpp:353 src/libslic3r/PrintConfig.cpp:2592 -#: src/libslic3r/PrintConfig.cpp:2603 +#: src/libslic3r/PrintConfig.cpp:387 src/libslic3r/PrintConfig.cpp:2735 +#: src/libslic3r/PrintConfig.cpp:2746 msgid "Default print profile associated with the current printer profile. On selection of the current printer profile, this print profile will be activated." msgstr "Profil de filament par défaut associé au profil d'imprimante courant. En sélectionnant le profil d'imprimante courant, ce profil de filament sera activé." -#: src/slic3r/GUI/Tab.cpp:1001 +#: src/slic3r/GUI/Tab.cpp:1319 msgid "default SLA material profile" msgstr "profil par défaut du matériau SLA" -#: src/libslic3r/PrintConfig.cpp:2591 src/libslic3r/PrintConfig.cpp:2602 +#: src/libslic3r/PrintConfig.cpp:2734 src/libslic3r/PrintConfig.cpp:2745 msgid "Default SLA material profile" msgstr "Profil par défaut du matériau SLA" -#: src/slic3r/GUI/Tab.cpp:1005 +#: src/slic3r/GUI/Tab.cpp:1323 msgid "default SLA print profile" msgstr "profil d'impression SLA par défaut" -#: src/slic3r/GUI/Field.cpp:136 +#: src/slic3r/GUI/Field.cpp:184 msgid "default value" msgstr "valeur par défaut" -#: src/slic3r/GUI/ConfigWizard.cpp:734 +#: src/slic3r/GUI/ConfigWizard.cpp:1093 msgid "Define a custom printer profile" msgstr "Définissez un profil d'imprimante personnalisée" -#: src/libslic3r/PrintConfig.cpp:2798 +#: src/libslic3r/PrintConfig.cpp:2962 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 effect inside the cavity, which makes peeling the print off the vat foil difficult." msgstr "Définit la profondeur de la cavité du socle. Réglez sur zéro pour désactiver la cavité. Faites bien attention lorsque vous activez cette fonctionnalité, car certaines résines génèrent un effet de succion extrême dans la cavité, et il est alors difficile de retirer l'impression de la feuille de la cuve." -#: src/slic3r/GUI/GUI_ObjectList.cpp:346 +#: src/slic3r/GUI/GUI_ObjectList.cpp:393 msgid "degenerate facets" msgstr "faces défectueuses" -#: src/libslic3r/PrintConfig.cpp:640 +#: src/libslic3r/PrintConfig.cpp:676 msgid "Delay after unloading" msgstr "Délai après le déchargement" -#: src/slic3r/GUI/Tab.cpp:3121 +#: src/slic3r/GUI/Tab.cpp:3386 msgid "delete" msgstr "supprimer" -#: src/slic3r/GUI/GLCanvas3D.cpp:4475 src/slic3r/GUI/GUI_ObjectList.cpp:1718 -#: src/slic3r/GUI/Plater.cpp:3931 src/slic3r/GUI/Plater.cpp:3953 -#: src/slic3r/GUI/Tab.cpp:3124 +#: src/slic3r/GUI/GLCanvas3D.cpp:4841 src/slic3r/GUI/GUI_ObjectList.cpp:1846 +#: src/slic3r/GUI/Plater.cpp:3849 src/slic3r/GUI/Plater.cpp:3871 +#: src/slic3r/GUI/Tab.cpp:3423 msgid "Delete" msgstr "Supprimer" -#: src/slic3r/GUI/MainFrame.cpp:575 +#: src/slic3r/GUI/MainFrame.cpp:1181 msgid "Delete &all" msgstr "Tout eff&acer" -#: src/slic3r/GUI/GLCanvas3D.cpp:4484 src/slic3r/GUI/KBShortcutsDialog.cpp:129 -#: src/slic3r/GUI/Plater.cpp:4669 +#: src/slic3r/GUI/GLCanvas3D.cpp:4850 src/slic3r/GUI/KBShortcutsDialog.cpp:124 +#: src/slic3r/GUI/Plater.cpp:4774 msgid "Delete all" msgstr "Tout Supprimer" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2176 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2341 msgid "Delete All Instances from Object" msgstr "Supprimer Toutes les Instances depuis l'Objet" -#: src/slic3r/GUI/DoubleSlider.cpp:1516 +#: src/slic3r/GUI/DoubleSlider.cpp:1708 msgid "Delete color change" msgstr "Supprimer le changement de couleur" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:219 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:220 msgid "Delete color change marker for current layer" msgstr "Retirer le repère de changement de couleur pour la couche en cours" -#: src/slic3r/GUI/DoubleSlider.cpp:1519 +#: src/slic3r/GUI/DoubleSlider.cpp:1711 msgid "Delete custom G-code" msgstr "Supprimer le G-code personnalisé" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:539 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:424 msgid "Delete drainage hole" msgstr "Supprimer le trou de drainage" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2192 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2357 msgid "Delete Height Range" msgstr "Supprimer la Zone de Hauteur" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2246 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2412 msgid "Delete Instance" msgstr "Supprimer l'Instance" -#: src/slic3r/GUI/Plater.cpp:2712 +#: src/slic3r/GUI/Plater.cpp:2673 msgid "Delete Object" msgstr "Supprimer l'Objet" -#: src/slic3r/GUI/GUI_ObjectSettings.cpp:101 +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:104 #, c-format msgid "Delete Option %s" msgstr "Supprimer l'Option %s" -#: src/slic3r/GUI/DoubleSlider.cpp:1518 +#: src/slic3r/GUI/DoubleSlider.cpp:1710 msgid "Delete pause print" msgstr "Supprimer la pause d'impression" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:128 +#: src/slic3r/GUI/PresetComboBoxes.cpp:652 +msgid "Delete physical printer" +msgstr "Supprimer l'imprimante physique" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:659 +msgid "Delete Physical Printer" +msgstr "Supprimer l'imprimante physique" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:123 msgid "Delete selected" msgstr "Supprimer la sélection" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2830 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3221 msgid "Delete Selected" msgstr "Supprimer la Sélection" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2693 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3083 msgid "Delete Selected Item" msgstr "Supprimer l'Item Sélectionné" -#: src/slic3r/GUI/Plater.cpp:4677 +#: src/slic3r/GUI/Plater.cpp:4782 msgid "Delete Selected Objects" msgstr "Supprimer les Objets Sélectionnés" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2152 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2319 msgid "Delete Settings" msgstr "Supprimer les Réglages" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2227 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2393 msgid "Delete Subobject" msgstr "Supprimer le sous-objet" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:631 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:514 msgid "Delete support point" msgstr "Supprimer un point de support" -#: src/slic3r/GUI/Tab.cpp:134 +#: src/slic3r/GUI/Tab.cpp:204 msgid "Delete this preset" msgstr "Supprimer ce préréglage" -#: src/slic3r/GUI/DoubleSlider.cpp:1035 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:55 +msgid "Delete this preset from this printer device" +msgstr "Supprimer ce préréglage de cette imprimante" + +#: src/slic3r/GUI/DoubleSlider.cpp:1160 msgid "Delete tick mark - Left click or press \"-\" key" msgstr "Supprimer la coche - Faites un clic gauche ou appuyez sur la touche \"-\"" -#: src/slic3r/GUI/DoubleSlider.cpp:1517 +#: src/slic3r/GUI/DoubleSlider.cpp:1709 msgid "Delete tool change" msgstr "Supprimer le changement d'outil" -#: src/slic3r/GUI/MainFrame.cpp:576 +#: src/slic3r/GUI/MainFrame.cpp:1182 msgid "Deletes all objects" msgstr "Supprimer tous les objets" -#: src/slic3r/GUI/MainFrame.cpp:573 +#: src/slic3r/GUI/MainFrame.cpp:1179 msgid "Deletes the current selection" msgstr "Supprime la sélection en cours" -#: src/libslic3r/PrintConfig.cpp:717 src/libslic3r/PrintConfig.cpp:2503 -#: src/libslic3r/PrintConfig.cpp:2504 +#: src/libslic3r/PrintConfig.cpp:753 src/libslic3r/PrintConfig.cpp:2646 +#: src/libslic3r/PrintConfig.cpp:2647 msgid "Density" msgstr "Densité" -#: src/libslic3r/PrintConfig.cpp:791 +#: src/libslic3r/PrintConfig.cpp:827 msgid "Density of internal infill, expressed in the range 0% - 100%." msgstr "Densité du remplissage interne, exprimée en pourcentage de 0% à 100%." -#: src/slic3r/GUI/Tab.cpp:1258 src/slic3r/GUI/Tab.cpp:1548 -#: src/slic3r/GUI/Tab.cpp:2019 src/slic3r/GUI/Tab.cpp:2135 -#: src/slic3r/GUI/Tab.cpp:3543 src/slic3r/GUI/Tab.cpp:3671 +#: src/slic3r/GUI/Tab.cpp:1588 src/slic3r/GUI/Tab.cpp:1895 +#: src/slic3r/GUI/Tab.cpp:2228 src/slic3r/GUI/Tab.cpp:2304 +#: src/slic3r/GUI/Tab.cpp:3959 src/slic3r/GUI/Tab.cpp:4090 msgid "Dependencies" msgstr "Dépendances" -#: src/libslic3r/PrintConfig.cpp:1612 src/libslic3r/PrintConfig.cpp:1613 +#: src/libslic3r/PrintConfig.cpp:1720 src/libslic3r/PrintConfig.cpp:1721 msgid "Deretraction Speed" msgstr "Vitesse de réinsertion" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:127 +#: src/slic3r/GUI/GCodeViewer.cpp:2529 src/slic3r/GUI/GUI_Preview.cpp:337 +#: src/slic3r/GUI/GUI_Preview.cpp:1473 +msgid "Deretractions" +msgstr "Réinsertions" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:172 +msgid "Descriptive name for the printer" +msgstr "Nom descriptif de l'imprimante" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:122 msgid "Deselect all" msgstr "Désélectionner tout" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1369 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1216 msgid "Deselect by rectangle" msgstr "Désélectionner par rectangle" -#: src/slic3r/GUI/MainFrame.cpp:569 +#: src/slic3r/GUI/MainFrame.cpp:1175 msgid "Deselects all objects" msgstr "Désélectionner tous les objets" -#: src/slic3r/GUI/Tab.cpp:963 +#: src/slic3r/GUI/Tab.cpp:1224 msgid "Detach from system preset" msgstr "Détacher du préréglage système" -#: src/slic3r/GUI/Tab.cpp:984 +#: src/slic3r/GUI/Tab.cpp:1246 msgid "Detach preset" msgstr "Détacher le préréglage" -#: src/slic3r/GUI/Tab.cpp:3029 +#: src/slic3r/GUI/Tab.cpp:3323 msgid "Detached" msgstr "Détaché" -#: src/libslic3r/PrintConfig.cpp:1373 +#: src/libslic3r/PrintConfig.cpp:1481 msgid "Detect bridging perimeters" msgstr "Détecter les périmètres faisant des ponts" -#: src/libslic3r/PrintConfig.cpp:2075 +#: src/libslic3r/PrintConfig.cpp:2218 msgid "Detect single-width walls (parts where two extrusions don't fit and we need to collapse them into a single trace)." msgstr "Détecter les parois de largeur unique (où deux extrusions côte à côte ne rentrent pas et doivent êtres fusionnées en un seul trait)." -#: src/libslic3r/PrintConfig.cpp:2073 +#: src/libslic3r/PrintConfig.cpp:2216 msgid "Detect thin walls" msgstr "Détecter les parois fines" -#: src/libslic3r/PrintConfig.cpp:3472 +#: src/libslic3r/PrintConfig.cpp:3671 msgid "Detect unconnected parts in the given model(s) and split them into separate objects." -msgstr "Détecter les parties non-connectées sur un modèle donné (ou plusieurs) et les scinder en objets séparés." +msgstr "Détecter les pièces non-connectées sur un modèle donné (ou plusieurs) et les scinder en objets séparés." -#: src/slic3r/GUI/Plater.cpp:2368 +#: src/slic3r/GUI/Plater.cpp:2330 msgid "Detected advanced data" msgstr "Données avancées détectées" -#: src/slic3r/GUI/Mouse3DController.cpp:289 +#: src/slic3r/GUI/Mouse3DController.cpp:274 msgid "Device:" msgstr "Appareil :" -#: src/slic3r/GUI/BedShapeDialog.cpp:93 src/libslic3r/PrintConfig.cpp:709 +#: src/slic3r/GUI/BedShapeDialog.cpp:95 src/libslic3r/PrintConfig.cpp:745 msgid "Diameter" msgstr "Diamètre" -#: src/libslic3r/PrintConfig.cpp:2694 +#: src/libslic3r/PrintConfig.cpp:2858 msgid "Diameter in mm of the pillar base" msgstr "Diamètre en mm de la base du pilier" -#: src/libslic3r/PrintConfig.cpp:2650 +#: src/libslic3r/PrintConfig.cpp:2793 msgid "Diameter in mm of the support pillars" msgstr "Diamètre en mm des piliers de support" -#: src/libslic3r/PrintConfig.cpp:2622 +#: src/libslic3r/PrintConfig.cpp:2765 msgid "Diameter of the pointing side of the head" msgstr "Diamètre du côté de pointage de la tête" -#: src/slic3r/GUI/BedShapeDialog.cpp:94 +#: src/slic3r/GUI/BedShapeDialog.cpp:131 msgid "Diameter of the print bed. It is assumed that origin (0,0) is located in the center." msgstr "Diamètre du plateau d'impression. Il est supposé que l'origine (0,0) est située au centre." -#: src/libslic3r/PrintConfig.cpp:1639 +#: src/libslic3r/PrintConfig.cpp:1747 msgid "Direction" msgstr "Direction" -#: src/libslic3r/PrintConfig.cpp:359 +#: src/libslic3r/PrintConfig.cpp:393 msgid "Disable fan for the first" msgstr "Désactiver le ventilateur pour le(s) première(s)" -#: src/libslic3r/PrintConfig.cpp:1349 +#: src/libslic3r/PrintConfig.cpp:1457 msgid "Disables retraction when the travel path does not exceed the upper layer's perimeters (and thus any ooze will be probably invisible)." msgstr "Désactiver la rétraction lorsque le chemin de déplacement ne franchit pas les périmètres des couches supérieures (et donc les coulures seront probablement invisibles)." -#: src/slic3r/GUI/DoubleSlider.cpp:952 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:641 +msgid "Discard" +msgstr "Ignorer" + +#: src/slic3r/GUI/DoubleSlider.cpp:1066 msgid "Discard all custom changes" msgstr "Éliminer toutes les modifications personnalisées" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:53 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1375 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:52 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1222 msgid "Discard changes" msgstr "Annuler les modifications" -#: src/slic3r/GUI/GUI_App.cpp:932 src/slic3r/GUI/Tab.cpp:2946 -msgid "Discard changes and continue anyway?" -msgstr "Annuler les changements et continuer malgré tout ?" - -#: src/slic3r/GUI/Tab.cpp:2078 +#: src/slic3r/GUI/Tab.cpp:2248 msgid "Display" msgstr "Afficher" -#: src/libslic3r/PrintConfig.cpp:2359 +#: src/libslic3r/PrintConfig.cpp:2502 msgid "Display height" msgstr "Hauteur de l'affichage" -#: src/libslic3r/PrintConfig.cpp:2378 +#: src/libslic3r/PrintConfig.cpp:2521 msgid "Display horizontal mirroring" msgstr "Afficher la symétrie horizontale" -#: src/libslic3r/PrintConfig.cpp:2392 +#: src/libslic3r/PrintConfig.cpp:2535 msgid "Display orientation" msgstr "Orientation de l'affichage" -#: src/slic3r/GUI/MainFrame.cpp:648 +#: src/slic3r/GUI/MainFrame.cpp:1258 msgid "Display the Print Host Upload Queue window" msgstr "Afficher la fenêtre de la File d'Attente de Téléchargement de l'Hôte d'Impression" -#: src/libslic3r/PrintConfig.cpp:2385 +#: src/libslic3r/PrintConfig.cpp:2528 msgid "Display vertical mirroring" msgstr "Afficher la symétrie verticale" -#: src/libslic3r/PrintConfig.cpp:2353 +#: src/libslic3r/PrintConfig.cpp:2496 msgid "Display width" msgstr "Largeur de l'affichage" -#: src/libslic3r/PrintConfig.cpp:377 +#: src/libslic3r/PrintConfig.cpp:411 msgid "Distance between copies" msgstr "Distance entre les copies" -#: src/libslic3r/PrintConfig.cpp:1680 +#: src/libslic3r/PrintConfig.cpp:1157 +msgid "Distance between ironing lines" +msgstr "Distance entre les lignes de lissage" + +#: src/libslic3r/PrintConfig.cpp:1788 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 "Distance entre le ou les objet(s) et la jupe. Mettez zéro pour attacher la jupe a(ux) objet(s) et obtenir une bordure pour une meilleure adhésion." -#: src/libslic3r/PrintConfig.cpp:2882 +#: src/libslic3r/PrintConfig.cpp:3046 msgid "Distance between two connector sticks which connect the object and the generated pad." msgstr "La distance entre deux bâtonnets de connexion qui connectent l'objet et le socle généré." -#: src/libslic3r/PrintConfig.cpp:1679 +#: src/libslic3r/PrintConfig.cpp:1787 msgid "Distance from object" msgstr "Distance de l'objet" -#: src/slic3r/GUI/BedShapeDialog.cpp:85 +#: src/slic3r/GUI/BedShapeDialog.cpp:121 msgid "Distance of the 0,0 G-code coordinate from the front left corner of the rectangle." msgstr "Distance des coordonnées 0,0 du G-code depuis le coin avant gauche du rectangle." -#: src/libslic3r/PrintConfig.cpp:320 +#: src/libslic3r/PrintConfig.cpp:354 msgid "Distance of the center-point of the cooling tube from the extruder tip." msgstr "Distance entre le point central du tube de refroidissement et la pointe de l'extrudeur." -#: src/libslic3r/PrintConfig.cpp:1382 +#: src/libslic3r/PrintConfig.cpp:1490 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 "Distance entre la pointe de l'extrudeur et la position où le filament est positionné en attente lorsqu'il est déchargé. Cela doit correspondre à la valeur dans le firmware de l'imprimante." -#: src/libslic3r/PrintConfig.cpp:378 +#: src/libslic3r/PrintConfig.cpp:412 msgid "Distance used for the auto-arrange feature of the plater." msgstr "Distance utilisée par la fonction d'agencement automatique du plateau." -#: src/libslic3r/PrintConfig.cpp:3486 +#: src/libslic3r/PrintConfig.cpp:3685 msgid "Do not fail if a file supplied to --load does not exist." msgstr "Ne pas obtenir d'échec si un fichier fourni pour --télécharger n'existe pas." -#: src/libslic3r/PrintConfig.cpp:3430 +#: src/libslic3r/PrintConfig.cpp:3629 msgid "Do not rearrange the given models before merging and keep their original XY coordinates." msgstr "Ne pas ré-agencer les modèles donnés avant la fusion et conserver leurs coordonnées XY originales." -#: src/slic3r/GUI/Field.cpp:240 +#: src/slic3r/GUI/Field.cpp:288 #, c-format msgid "" "Do you mean %s%% instead of %s %s?\n" @@ -2058,31 +2358,35 @@ msgstr "" "Sélectionnez OUI si vous voulez changer cette valeur pour %s%%,\n" "ou NON si vous êtes certain que %s%s est une valeur correcte." -#: src/slic3r/GUI/DoubleSlider.cpp:1920 +#: src/slic3r/GUI/DoubleSlider.cpp:2138 msgid "Do you want to delete all saved tool changes?" msgstr "Voulez-vous supprimer tous les changements d'outils enregistrés ?" -#: src/slic3r/GUI/GUI_App.cpp:884 +#: src/slic3r/GUI/GUI_App.cpp:1610 msgid "Do you want to proceed?" msgstr "Voulez-vous poursuivre?" -#: src/slic3r/GUI/Plater.cpp:3321 +#: src/slic3r/GUI/Plater.cpp:3124 msgid "Do you want to retry" msgstr "Voulez-vous réessayer" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1045 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:911 msgid "Do you want to save your manually edited support points?" msgstr "Voulez-vous sauvegarder vos points de support édités manuellement ?" -#: src/slic3r/GUI/ConfigWizard.cpp:1834 +#: src/slic3r/GUI/ConfigWizard.cpp:2261 msgid "Do you want to select default filaments for these FFF printer models?" msgstr "Voulez-vous sélectionner les filaments par défaut pour ces modèles d'imprimantes FFF ?" -#: src/slic3r/GUI/ConfigWizard.cpp:1852 +#: src/slic3r/GUI/ConfigWizard.cpp:2279 msgid "Do you want to select default SLA materials for these printer models?" msgstr "Voulez-vous sélectionner les matériaux SLA par défaut pour ces modèles d'imprimantes ?" -#: src/libslic3r/PrintConfig.cpp:3429 +#: src/slic3r/GUI/Plater.cpp:4751 +msgid "does not contain valid gcode." +msgstr "ne contient pas de gcode valide." + +#: src/libslic3r/PrintConfig.cpp:3628 msgid "Don't arrange" msgstr "Ne pas agencer" @@ -2090,7 +2394,7 @@ msgstr "Ne pas agencer" msgid "Don't notify about new releases any more" msgstr "Ne plus me notifier au sujet des nouvelles publications" -#: src/libslic3r/PrintConfig.cpp:369 +#: src/libslic3r/PrintConfig.cpp:403 msgid "Don't support bridges" msgstr "Ne pas supporter les ponts" @@ -2098,234 +2402,296 @@ msgstr "Ne pas supporter les ponts" msgid "Downgrade" msgstr "Rétrograder" -#: src/libslic3r/PrintConfig.cpp:1695 +#: src/libslic3r/PrintConfig.cpp:1803 msgid "Draft shield" msgstr "Bouclier contre les flux d'air" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1365 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1368 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1369 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1212 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1215 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1216 msgid "Drag" msgstr "Faites glisser" -#: src/libslic3r/SLAPrintSteps.cpp:44 +#: src/slic3r/GUI/Plater.cpp:1406 +msgid "Drag and drop G-code file" +msgstr "Glisser et déposer un fichier G-code" + +#: src/libslic3r/SLAPrintSteps.cpp:45 msgid "Drilling holes into model." msgstr "Perçage de trous dans le modèle." -#: src/libslic3r/SLAPrintSteps.cpp:199 +#: src/libslic3r/SLAPrintSteps.cpp:201 msgid "Drilling holes into the mesh failed. This is usually caused by broken model. Try to fix it first." msgstr "Le perçage des trous dans le maillage a échoué. Cela est généralement dû à un modèle cassé. Essayez de le réparer en premier." -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:337 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:349 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:345 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:357 msgid "Drop to bed" msgstr "Déposer sur le lit" -#: src/libslic3r/PrintConfig.cpp:3433 +#: src/libslic3r/PrintConfig.cpp:3632 msgid "Duplicate" msgstr "Dupliquer" -#: src/libslic3r/PrintConfig.cpp:3438 +#: src/libslic3r/PrintConfig.cpp:3637 msgid "Duplicate by grid" msgstr "Dupliquer par grille" -#: src/slic3r/GUI/PresetHints.cpp:40 +#: src/slic3r/GUI/GCodeViewer.cpp:2445 +msgid "Duration" +msgstr "Durée" + +#: src/slic3r/GUI/PresetHints.cpp:39 msgid "During the other layers, fan" msgstr "Pendant les autres couches, le ventilateur" -#: src/libslic3r/PrintConfig.cpp:2669 +#: src/libslic3r/PrintConfig.cpp:2833 msgid "Dynamic" msgstr "Dynamique" -#: src/slic3r/GUI/MainFrame.cpp:749 +#: src/slic3r/GUI/MainFrame.cpp:1448 msgid "E&xport" msgstr "E&xporter" -#: src/slic3r/GUI/GUI_ObjectList.cpp:347 +#: src/slic3r/GUI/GUI_ObjectList.cpp:394 msgid "edges fixed" msgstr "arrêtes corrigées" -#: src/slic3r/GUI/DoubleSlider.cpp:1508 +#: src/slic3r/GUI/DoubleSlider.cpp:1700 msgid "Edit color" msgstr "Éditer la couleur" -#: src/slic3r/GUI/DoubleSlider.cpp:960 +#: src/slic3r/GUI/DoubleSlider.cpp:1083 msgid "Edit current color - Right click the colored slider segment" msgstr "Modifier la couleur actuelle - Cliquez avec le bouton droit sur le segment de curseur de couleur" -#: src/slic3r/GUI/DoubleSlider.cpp:1510 +#: src/slic3r/GUI/DoubleSlider.cpp:1702 msgid "Edit custom G-code" msgstr "Éditer un G-code personnalisé" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3003 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3459 msgid "Edit Height Range" msgstr "Éditer la Zone de Hauteur" -#: src/slic3r/GUI/DoubleSlider.cpp:1509 +#: src/slic3r/GUI/DoubleSlider.cpp:1701 msgid "Edit pause print message" msgstr "Modifier le message de pause d'impression" -#: src/slic3r/GUI/DoubleSlider.cpp:1037 +#: src/slic3r/GUI/PresetComboBoxes.cpp:645 +msgid "Edit physical printer" +msgstr "Modifier l'imprimante physique" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:641 +msgid "Edit preset" +msgstr "Modifier le préréglage" + +#: src/slic3r/GUI/DoubleSlider.cpp:1162 msgid "Edit tick mark - Ctrl + Left click" msgstr "Modifier la coche - Ctrl + Clic gauche" -#: src/slic3r/GUI/DoubleSlider.cpp:1038 +#: src/slic3r/GUI/DoubleSlider.cpp:1163 msgid "Edit tick mark - Right click" msgstr "Modifier la coche - Clic droit" -#: src/slic3r/GUI/GUI_ObjectList.cpp:282 src/slic3r/GUI/GUI_ObjectList.cpp:394 +#: src/slic3r/GUI/GUI_ObjectList.cpp:300 src/slic3r/GUI/GUI_ObjectList.cpp:441 msgid "Editing" msgstr "Édition" -#: src/slic3r/GUI/MainFrame.cpp:547 +#: src/slic3r/GUI/MainFrame.cpp:1105 msgid "Ejec&t SD card / Flash drive" msgstr "Éjec&ter la carte SD / la clef USB" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:126 +#: src/slic3r/GUI/NotificationManager.cpp:780 +msgid "Eject drive" +msgstr "Éjecter le lecteur" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:119 msgid "Eject SD card / Flash drive" msgstr "Éjecter la carte SD / la clef USB" -#: src/slic3r/GUI/MainFrame.cpp:547 +#: src/slic3r/GUI/MainFrame.cpp:1105 msgid "Eject SD card / Flash drive after the G-code was exported to it." msgstr "Éjecter la carte SD / la clef USB une fois que la G-code y a été exporté." -#: src/slic3r/GUI/Plater.cpp:2202 +#: src/slic3r/GUI/Plater.cpp:2034 #, c-format msgid "Ejecting of device %s(%s) has failed." msgstr "L'éjection de l'appareil %s(%s) a échoué." -#: src/libslic3r/PrintConfig.cpp:118 +#: src/libslic3r/PrintConfig.cpp:120 msgid "Elephant foot compensation" msgstr "Compensation de l'effet patte d'éléphant" -#: src/libslic3r/PrintConfig.cpp:2447 +#: src/libslic3r/PrintConfig.cpp:2590 msgid "Elephant foot minimum width" msgstr "Largeur minimum du pied d'éléphant" -#: src/libslic3r/SLAPrint.cpp:625 +#: src/libslic3r/SLAPrint.cpp:639 msgid "Elevation is too low for object. Use the \"Pad around object\" feature to print the object without elevation." msgstr "L'Élévation est trop basse pour cet objet. utilisez la fonction \"Socle autour de l'objet\" pour imprimer l'objet sans élévation." -#: src/libslic3r/PrintConfig.cpp:1093 +#: src/libslic3r/PrintConfig.cpp:1186 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. As of now only the Prusa i3 MK3 firmware recognizes M73. Also the i3 MK3 firmware supports M73 Qxx Sxx for the silent mode." msgstr "Émet M73 P[pourcentage imprimé] R[temps restant en minutes] à 1 minute d'intervalle dans le G-code afin que le firmware puisse indiquer précisément le temps restant. Jusqu'à présent seul le firmware Prusa i3 MK3 reconnait M73. Par ailleurs le firmware i3 MK3 supporte M73 Qxx Sxx pour le mode silencieux." -#: src/libslic3r/GCode.cpp:637 +#: src/libslic3r/PrintConfig.cpp:1217 +msgid "Emit to G-code" +msgstr "Émettre en G-code" + +#: src/libslic3r/GCode.cpp:622 msgid "Empty layers detected, the output would not be printable." msgstr "Couches vides détectées, la sortie ne serait pas imprimable." -#: src/slic3r/GUI/Tab.cpp:1445 src/libslic3r/PrintConfig.cpp:1355 -#: src/libslic3r/PrintConfig.cpp:2200 +#: src/slic3r/GUI/Tab.cpp:1791 src/libslic3r/PrintConfig.cpp:1463 +#: src/libslic3r/PrintConfig.cpp:2343 msgid "Enable" msgstr "Activer" -#: src/libslic3r/PrintConfig.cpp:313 +#: src/libslic3r/PrintConfig.cpp:347 msgid "Enable auto cooling" msgstr "Activer le refroidissement automatique" -#: src/libslic3r/PrintConfig.cpp:572 +#: src/libslic3r/PrintConfig.cpp:608 msgid "Enable fan if layer print time is below" msgstr "Activer le ventilateur si le temps d'impression de la couche est inférieur à" -#: src/libslic3r/PrintConfig.cpp:2908 +#: src/libslic3r/PrintConfig.cpp:3072 msgid "Enable hollowing" msgstr "Activer l'évidement" -#: src/libslic3r/PrintConfig.cpp:2380 +#: src/libslic3r/PrintConfig.cpp:2523 msgid "Enable horizontal mirroring of output images" msgstr "Active la symétrie horizontale des images de sortie" -#: src/libslic3r/PrintConfig.cpp:1867 +#: src/libslic3r/PrintConfig.cpp:1124 +msgid "Enable ironing" +msgstr "Activer le lissage" + +#: src/libslic3r/PrintConfig.cpp:1125 +msgid "Enable ironing of the top layers with the hot print head for smooth surface" +msgstr "Activer le lissage des couches supérieures avec la tête d'impression chaude pour une surface lisse" + +#: src/libslic3r/PrintConfig.cpp:2009 msgid "Enable support material generation." msgstr "Activer la génération des supports." -#: src/libslic3r/PrintConfig.cpp:966 +#: src/libslic3r/PrintConfig.cpp:1010 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 plugin. This settings is NOT compatible with Single Extruder Multi Material setup and Wipe into Object / Wipe into Infill." msgstr "Activez cette option pour ajouter des commentaires dans le G-code afin d'identifier les mouvements d'impression avec l'objet concerné. Cela est utile pour le plugin Octoprint CancelObject. Ce paramètre n'est PAS compatible avec la configuration mono-extrudeur multi-matériaux ni avec la configuration Nettoyer dans l'objet ou Nettoyer dans le remplissage." -#: src/libslic3r/PrintConfig.cpp:929 +#: src/libslic3r/PrintConfig.cpp:973 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 "Activez ceci pour obtenir un fichier G-code commenté, avec chaque ligne expliquée par un texte descriptif. Si vous imprimez depuis une carte SD, le poids supplémentaire du fichier pourrait ralentir le firmware de votre imprimante." -#: src/libslic3r/PrintConfig.cpp:2186 +#: src/libslic3r/PrintConfig.cpp:2329 msgid "Enable variable layer height feature" msgstr "Activer la fonction de hauteur de couche variable" -#: src/libslic3r/PrintConfig.cpp:2387 +#: src/libslic3r/PrintConfig.cpp:2530 msgid "Enable vertical mirroring of output images" msgstr "Activer la symétrie verticale des images de sortie" -#: src/slic3r/GUI/Tab.cpp:1534 src/slic3r/GUI/Tab.cpp:1982 -#: src/libslic3r/PrintConfig.cpp:385 src/libslic3r/PrintConfig.cpp:395 +#: src/slic3r/GUI/Tab.cpp:1880 src/slic3r/GUI/Tab.cpp:2168 +#: src/libslic3r/PrintConfig.cpp:419 src/libslic3r/PrintConfig.cpp:429 msgid "End G-code" msgstr "G-code de fin" -#: src/libslic3r/PrintConfig.cpp:1924 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:239 +msgid "Enforce" +msgstr "Forcer" + +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:30 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:381 +msgid "Enforce seam" +msgstr "Forcer la jointure" + +#: src/libslic3r/PrintConfig.cpp:2066 msgid "Enforce support for the first" msgstr "Générer des supports sur le(s) première(s)" -#: src/libslic3r/PrintConfig.cpp:1931 +#: src/libslic3r/PrintConfig.cpp:2073 msgid "Enforce support for the first n layers" msgstr "Générer des supports sur les n premières couches" +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:47 +msgid "Enforce supports" +msgstr "Forcer les supports" + #: src/slic3r/GUI/PrintHostDialogs.cpp:198 #: src/slic3r/GUI/PrintHostDialogs.cpp:229 msgid "Enqueued" msgstr "Placé dans la file d'attente" -#: src/libslic3r/PrintConfig.cpp:407 +#: src/libslic3r/PrintConfig.cpp:441 msgid "Ensure vertical shell thickness" msgstr "S'assurer de l'épaisseur de la coque verticale" -#: src/slic3r/GUI/DoubleSlider.cpp:1618 +#: src/slic3r/GUI/GLCanvas3D.cpp:4402 src/slic3r/GUI/GLCanvas3D.cpp:4410 +#: src/slic3r/GUI/Search.cpp:433 +msgid "Enter a search term" +msgstr "Entrer un terme de recherche" + +#: src/slic3r/GUI/DoubleSlider.cpp:1814 msgid "Enter custom G-code used on current layer" msgstr "Entrez le G-code personnalisé utilisé sur la couche actuelle" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3803 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4266 msgid "Enter new name" msgstr "Entrer de nouveaux noms" -#: src/slic3r/GUI/DoubleSlider.cpp:1634 +#: src/slic3r/GUI/DoubleSlider.cpp:1830 msgid "Enter short message shown on Printer display when a print is paused" msgstr "Entrez un court message affiché sur l'écran de l'imprimante lorsqu'une impression est mise en pause" -#: src/slic3r/GUI/ConfigWizard.cpp:1047 +#: src/slic3r/GUI/ConfigWizard.cpp:1413 msgid "Enter the bed temperature needed for getting your filament to stick to your heated bed." msgstr "Entrez la température du lit nécessaire pour que votre filament colle à votre lit chauffant." -#: src/slic3r/GUI/ConfigWizard.cpp:979 +#: src/slic3r/GUI/ConfigWizard.cpp:1345 msgid "Enter the diameter of your filament." msgstr "Entrez le diamètre de votre filament." -#: src/slic3r/GUI/ConfigWizard.cpp:966 +#: src/slic3r/GUI/ConfigWizard.cpp:1332 msgid "Enter the diameter of your printer's hot end nozzle." msgstr "Entrez le diamètre de la buse de la tête d'impression de votre imprimante." -#: src/slic3r/GUI/DoubleSlider.cpp:1650 +#: src/slic3r/GUI/DoubleSlider.cpp:1851 src/slic3r/GUI/DoubleSlider.cpp:1855 msgid "Enter the height you want to jump to" msgstr "Entrez la hauteur à laquelle vous souhaitez sauter" -#: src/slic3r/GUI/Plater.cpp:4751 +#: src/slic3r/GUI/DoubleSlider.cpp:1851 +msgid "Enter the move you want to jump to" +msgstr "Entrez le mouvement auquel vous souhaitez accéder" + +#: src/slic3r/GUI/Plater.cpp:4855 msgid "Enter the number of copies:" msgstr "Saisissez le nombre de copies :" -#: src/slic3r/GUI/ConfigWizard.cpp:1033 +#: src/slic3r/GUI/ConfigWizard.cpp:1399 msgid "Enter the temperature needed for extruding your filament." msgstr "Entrez la température nécessaire pour extruder votre filament." -#: src/libslic3r/PrintConfig.cpp:761 +#: src/libslic3r/PrintConfig.cpp:797 msgid "Enter your filament cost per kg here. This is only for statistical information." msgstr "Entrez le coût par Kg de votre filament. Ceci est uniquement pour l'information statistique." -#: src/libslic3r/PrintConfig.cpp:718 +#: src/libslic3r/PrintConfig.cpp:754 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 the length to volume. Better is to calculate the volume directly through displacement." msgstr "Entrez ici la densité de votre filament. Ceci est uniquement pour des informations statistiques. Un bon moyen d'obtenir cette valeur est de peser un morceau de filament d'une longueur connue et de calculer le rapport de sa longueur par son poids. Le mieux est de calculer le volume directement par déplacement." -#: src/libslic3r/PrintConfig.cpp:710 +#: src/libslic3r/PrintConfig.cpp:746 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 "Entrez le diamètre de votre filament ici. Une bonne précision est requise, utilisez un pied à coulisse et calculez la moyenne de plusieurs mesures le long du filament." -#: src/slic3r/GUI/MainFrame.cpp:422 src/slic3r/GUI/MainFrame.cpp:785 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:39 +msgid "Entering Paint-on supports" +msgstr "Accès aux Supports peints" + +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:40 +msgid "Entering Seam painting" +msgstr "Accès à la peinture de jointure" + +#: src/slic3r/GUI/MainFrame.cpp:1003 src/slic3r/GUI/MainFrame.cpp:1486 #: src/slic3r/GUI/PrintHostDialogs.cpp:231 msgid "Error" msgstr "Erreur" @@ -2335,25 +2701,33 @@ msgstr "Erreur" msgid "Error accessing port at %s: %s" msgstr "Erreur d'accès au port sur %s : %s" -#: src/slic3r/GUI/Plater.cpp:3433 +#: src/slic3r/GUI/Plater.cpp:3238 msgid "Error during reload" msgstr "Erreur lors du rechargement" -#: src/slic3r/GUI/Plater.cpp:5043 +#: src/slic3r/GUI/Plater.cpp:5172 #, c-format msgid "Error exporting 3MF file %s" msgstr "Erreur d'export du fichier 3MF %s" -#: src/slic3r/GUI/Plater.cpp:5005 +#: src/slic3r/GUI/Plater.cpp:5138 #, c-format msgid "Error exporting AMF file %s" msgstr "Erreur d'export du fichier AMF %s" -#: src/slic3r/GUI/PrintHostDialogs.cpp:154 +#: src/slic3r/GUI/OpenGLManager.cpp:276 +msgid "Error loading shaders" +msgstr "Erreur lors du chargement des shaders" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:152 msgid "Error Message" msgstr "Message d'erreur" -#: src/slic3r/GUI/AppConfig.cpp:114 +#: src/slic3r/GUI/GUI_App.cpp:661 +msgid "Error parsing PrusaGCodeViewer config file, it is probably corrupted. Try to manually delete the file to recover from the error." +msgstr "Erreur lors de l'analyse du fichier de configuration de PrusaGCodeViewer, il est probablement corrompu. Essayez de supprimer manuellement le fichier pour corriger l'erreur." + +#: src/slic3r/GUI/GUI_App.cpp:655 src/slic3r/GUI/GUI_App.cpp:670 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 "Erreur d'analyse du fichier config PrusaSlicer, il est probablement corrompu. Essayez de supprimer manuellement le fichier pour récupérer après cette erreur. Vos profils d'utilisateurs ne seront pas affectés." @@ -2361,45 +2735,60 @@ msgstr "Erreur d'analyse du fichier config PrusaSlicer, il est probablement corr msgid "Error uploading to print host:" msgstr "Erreur lors du téléchargement vers l'hôte d'impression :" -#: src/libslic3r/Zipper.cpp:102 +#: src/slic3r/GUI/Plater.cpp:4752 +msgid "Error while loading .gcode file" +msgstr "Erreur lors du chargement du fichier .gcode" + +#: src/libslic3r/Zipper.cpp:27 msgid "Error with zip archive" msgstr "Erreur liée à l'archive zip" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1918 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2077 msgid "Error!" msgstr "Erreur!" -#: src/slic3r/GUI/BedShapeDialog.cpp:505 +#: src/slic3r/GUI/BedShapeDialog.cpp:581 msgid "Error! Invalid model" msgstr "Erreur ! Modèle invalide" +#: src/slic3r/GUI/NotificationManager.cpp:667 +#: src/slic3r/GUI/NotificationManager.cpp:683 +#: src/slic3r/GUI/NotificationManager.cpp:694 +msgid "ERROR:" +msgstr "ERREUR :" + #: src/slic3r/GUI/FirmwareDialog.cpp:647 #, c-format msgid "Error: %s" msgstr "Erreur : %s" -#: src/slic3r/GUI/Job.hpp:123 +#: src/slic3r/GUI/Jobs/Job.cpp:74 msgid "ERROR: not enough resources to execute a new job." msgstr "ERREUR : il n'y a pas assez de ressources pour exécuter une nouvelle tâche." -#: src/slic3r/GUI/Plater.cpp:240 src/slic3r/GUI/Plater.cpp:1216 -#: src/slic3r/GUI/Plater.cpp:1258 +#: 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 msgid "Estimated printing time" msgstr "Temps d'impression estimé" -#: src/slic3r/GUI/Plater.cpp:502 +#: src/slic3r/GUI/GCodeViewer.cpp:2442 src/slic3r/GUI/GCodeViewer.cpp:2445 +msgid "Event" +msgstr "Événement" + +#: src/slic3r/GUI/Plater.cpp:368 msgid "Everywhere" msgstr "Partout" -#: src/slic3r/GUI/PresetHints.cpp:51 +#: src/slic3r/GUI/PresetHints.cpp:50 msgid "except for the first %1% layers." msgstr "sauf pour les %1% première couches." -#: src/slic3r/GUI/PresetHints.cpp:53 +#: src/slic3r/GUI/PresetHints.cpp:52 msgid "except for the first layer." msgstr "sauf pour la première couche." -#: src/libslic3r/Print.cpp:1377 +#: src/libslic3r/Print.cpp:1403 msgid "Excessive %1%=%2% mm to be printable with a nozzle diameter %3% mm" msgstr "Dépasse de %1%=%2% mm pour être imprimable avec une buse de diamètre %3% mm" @@ -2408,116 +2797,129 @@ msgstr "Dépasse de %1%=%2% mm pour être imprimable avec une buse de diamètre msgid "Exit %s" msgstr "Sortir de %s" -#: src/libslic3r/PrintConfig.cpp:371 +#: src/slic3r/GUI/Plater.cpp:2143 +msgid "Expand sidebar" +msgstr "Développer la barre latérale" + +#: src/libslic3r/PrintConfig.cpp:405 msgid "Experimental option for preventing support material from being generated under bridged areas." msgstr "Option expérimentale pour empêcher la génération de support sous les ponts." -#: src/libslic3r/PrintConfig.cpp:1375 +#: src/libslic3r/PrintConfig.cpp:1483 msgid "Experimental option to adjust flow for overhangs (bridge flow will be used), to apply bridge speed to them and enable fan." msgstr "Option expérimentale qui ajuste le flux pour les surplombs (le flux pour les ponts sera utilisé), leur applique la vitesse pour les ponts et active le ventilateur." -#: src/slic3r/GUI/GUI_App.cpp:815 src/slic3r/GUI/wxExtensions.cpp:755 +#: src/slic3r/GUI/GUI_App.cpp:1507 src/slic3r/GUI/wxExtensions.cpp:676 msgid "Expert" msgstr "Expert" -#: src/slic3r/GUI/ConfigWizard.cpp:822 +#: src/slic3r/GUI/ConfigWizard.cpp:1181 msgid "Expert mode" msgstr "Mode expert" -#: src/slic3r/GUI/GUI_App.cpp:815 +#: src/slic3r/GUI/GUI_App.cpp:1507 msgid "Expert View Mode" msgstr "Mode de Vue Expert" -#: src/slic3r/GUI/Plater.cpp:5521 +#: src/slic3r/GUI/Plater.cpp:5706 msgid "Export" msgstr "Exporter" -#: src/slic3r/GUI/MainFrame.cpp:500 +#: src/slic3r/GUI/MainFrame.cpp:1094 msgid "Export &Config" msgstr "Exporter la &Configuration" -#: src/slic3r/GUI/MainFrame.cpp:477 src/slic3r/GUI/MainFrame.cpp:749 +#: src/slic3r/GUI/MainFrame.cpp:1068 src/slic3r/GUI/MainFrame.cpp:1448 msgid "Export &G-code" msgstr "Exporter le &G-code" -#: src/slic3r/GUI/MainFrame.cpp:496 +#: src/slic3r/GUI/MainFrame.cpp:1090 src/slic3r/GUI/MainFrame.cpp:1395 msgid "Export &toolpaths as OBJ" msgstr "Exporter les parcours en &tant que OBJ" -#: src/libslic3r/PrintConfig.cpp:3338 +#: src/libslic3r/PrintConfig.cpp:3531 msgid "Export 3MF" msgstr "Exporter 3MF" -#: src/slic3r/GUI/MainFrame.cpp:503 +#: src/slic3r/GUI/MainFrame.cpp:1100 +msgid "Export all presets including physical printers to file" +msgstr "Exporter tous les préréglage y compris les imprimantes physiques vers un fichier" + +#: src/slic3r/GUI/MainFrame.cpp:1097 msgid "Export all presets to file" msgstr "Exporter tous les préréglage vers un fichier" -#: src/libslic3r/PrintConfig.cpp:3343 +#: src/libslic3r/PrintConfig.cpp:3536 msgid "Export AMF" msgstr "Exporter AMF" -#: src/slic3r/GUI/Plater.cpp:2598 +#: src/slic3r/GUI/Plater.cpp:2560 msgid "Export AMF file:" msgstr "Exporter le fichier AMF :" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1657 src/slic3r/GUI/Plater.cpp:3966 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1786 src/slic3r/GUI/Plater.cpp:3884 msgid "Export as STL" msgstr "Exporter en tant que STL" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:124 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:117 msgid "Export config" msgstr "Exporter la configuration" -#: src/slic3r/GUI/MainFrame.cpp:503 +#: src/slic3r/GUI/MainFrame.cpp:1097 msgid "Export Config &Bundle" msgstr "Exporter le &Lot de Configuration" -#: src/slic3r/GUI/MainFrame.cpp:500 +#: src/slic3r/GUI/MainFrame.cpp:1100 +msgid "Export Config Bundle With Physical Printers" +msgstr "Exporter le Lot de Configurations Avec les Imprimantes Physiques" + +#: src/slic3r/GUI/MainFrame.cpp:1094 msgid "Export current configuration to file" msgstr "Exporter la configuration actuelle vers un fichier" -#: src/slic3r/GUI/MainFrame.cpp:492 +#: src/slic3r/GUI/MainFrame.cpp:1086 msgid "Export current plate as AMF" msgstr "Exporter le plateau courant en AMF" -#: src/slic3r/GUI/MainFrame.cpp:477 +#: src/slic3r/GUI/MainFrame.cpp:1068 msgid "Export current plate as G-code" msgstr "Exporter le plateau courant en G-code" -#: src/slic3r/GUI/MainFrame.cpp:521 +#: src/slic3r/GUI/MainFrame.cpp:1076 msgid "Export current plate as G-code to SD card / Flash drive" msgstr "Exporter le plateau actuel en tant que G-code vers la carte SD / la clef USB" -#: src/slic3r/GUI/MainFrame.cpp:486 +#: src/slic3r/GUI/MainFrame.cpp:1080 msgid "Export current plate as STL" msgstr "Exporter le plateau courant en STL" -#: src/slic3r/GUI/MainFrame.cpp:489 +#: src/slic3r/GUI/MainFrame.cpp:1083 msgid "Export current plate as STL including supports" msgstr "Exporter le contenu du plateau en STL, supports inclus" -#: src/slic3r/GUI/Plater.cpp:3664 -msgid "Export failed" -msgstr "L'export a échoué" - -#: src/slic3r/GUI/ConfigWizard.cpp:801 +#: src/slic3r/GUI/ConfigWizard.cpp:1160 msgid "Export full pathnames of models and parts sources into 3mf and amf files" msgstr "Exportez les chemins d'accès complets des modèles et des sources de pièces dans des fichiers 3mf et amf" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:122 src/slic3r/GUI/Plater.cpp:891 -#: src/slic3r/GUI/Plater.cpp:5521 src/libslic3r/PrintConfig.cpp:3353 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:115 src/slic3r/GUI/Plater.cpp:766 +#: src/slic3r/GUI/Plater.cpp:5706 src/libslic3r/PrintConfig.cpp:3546 msgid "Export G-code" msgstr "Exporter le G-code" -#: src/slic3r/GUI/MainFrame.cpp:521 +#: src/slic3r/GUI/MainFrame.cpp:1076 msgid "Export G-code to SD card / Flash drive" msgstr "Exporter le G-code vers la carte SD / la clef USB" -#: src/libslic3r/PrintConfig.cpp:3320 +#: src/slic3r/GUI/NotificationManager.cpp:631 +#: src/slic3r/GUI/NotificationManager.cpp:748 +msgid "Export G-Code." +msgstr "Exporter le G-code." + +#: src/libslic3r/PrintConfig.cpp:3513 msgid "Export OBJ" msgstr "Exporter OBJ" -#: src/slic3r/GUI/Plater.cpp:2610 +#: src/slic3r/GUI/Plater.cpp:2572 msgid "Export OBJ file:" msgstr "Exporter le fichier OBJ :" @@ -2525,212 +2927,215 @@ msgstr "Exporter le fichier OBJ :" msgid "Export of a temporary 3mf file failed" msgstr "Exporter un fichier temporaire 3mf qui a échoué" -#: src/slic3r/GUI/MainFrame.cpp:492 +#: src/slic3r/GUI/MainFrame.cpp:1086 msgid "Export plate as &AMF" msgstr "Exporter le plateau en tant que &AMF" -#: src/slic3r/GUI/MainFrame.cpp:486 +#: src/slic3r/GUI/MainFrame.cpp:1080 msgid "Export plate as &STL" -msgstr "Exporter le plateau en tant que &STL" +msgstr "Exporter le plateau au format &STL" -#: src/slic3r/GUI/MainFrame.cpp:489 +#: src/slic3r/GUI/MainFrame.cpp:1083 msgid "Export plate as STL &including supports" msgstr "Exporter le plateau en STL en &incluant les supports" -#: src/libslic3r/PrintConfig.cpp:3332 +#: src/libslic3r/PrintConfig.cpp:3525 msgid "Export SLA" msgstr "Exporter SLA" -#: src/slic3r/GUI/Preferences.cpp:72 +#: src/slic3r/GUI/Preferences.cpp:89 msgid "Export sources full pathnames to 3mf and amf" msgstr "Exporter les noms de chemins complets des sources vers 3mf et amf" -#: src/libslic3r/PrintConfig.cpp:3348 +#: src/libslic3r/PrintConfig.cpp:3541 msgid "Export STL" msgstr "Exporter STL" -#: src/slic3r/GUI/Plater.cpp:2591 +#: src/slic3r/GUI/Plater.cpp:2553 msgid "Export STL file:" msgstr "Exporter le fichier STL :" -#: src/libslic3r/PrintConfig.cpp:3339 +#: src/libslic3r/PrintConfig.cpp:3532 msgid "Export the model(s) as 3MF." msgstr "Exporter le(s) modèle(s) en tant que 3MF." -#: src/libslic3r/PrintConfig.cpp:3344 +#: src/libslic3r/PrintConfig.cpp:3537 msgid "Export the model(s) as AMF." msgstr "Exporter le(s) modèle(s) en tant que AMF." -#: src/libslic3r/PrintConfig.cpp:3321 +#: src/libslic3r/PrintConfig.cpp:3514 msgid "Export the model(s) as OBJ." msgstr "Exporter le(s) modèle(s) en tant que OBJ." -#: src/libslic3r/PrintConfig.cpp:3349 +#: src/libslic3r/PrintConfig.cpp:3542 msgid "Export the model(s) as STL." msgstr "Exporter le(s) modèle(s) en tant que STL." -#: src/slic3r/GUI/Plater.cpp:3966 +#: src/slic3r/GUI/Plater.cpp:3884 msgid "Export the selected object as STL file" msgstr "Exporter l'objet sélectionné en tant que fichier STL" -#: src/slic3r/GUI/Plater.cpp:880 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:118 src/slic3r/GUI/Plater.cpp:755 msgid "Export to SD card / Flash drive" msgstr "Exporter vers une carte SD / une clé USB" -#: src/slic3r/GUI/MainFrame.cpp:496 +#: src/slic3r/GUI/MainFrame.cpp:1090 src/slic3r/GUI/MainFrame.cpp:1395 msgid "Export toolpaths as OBJ" msgstr "Exporter le parcours en tant que OBJ" -#: src/libslic3r/Print.cpp:1638 +#: src/slic3r/GUI/NotificationManager.hpp:317 +msgid "Exporting finished." +msgstr "Exportation terminée." + +#: src/libslic3r/Print.cpp:1676 msgid "Exporting G-code" msgstr "Exportation du G-code" #: src/slic3r/Utils/FixModelByWin10.cpp:341 -msgid "Exporting model..." -msgstr "Exportation du modèle ..." +msgid "Exporting model" +msgstr "Exportation du modèle" #: src/slic3r/Utils/FixModelByWin10.cpp:219 #: src/slic3r/Utils/FixModelByWin10.cpp:359 msgid "Exporting source model" msgstr "Exportation du modèle source" -#: src/libslic3r/SLAPrint.cpp:646 +#: src/libslic3r/SLAPrint.cpp:660 msgid "Exposition time is out of printer profile bounds." msgstr "Le temps d'exposition dépasse les limites du profil d'imprimante." -#: src/slic3r/GUI/Tab.cpp:2117 src/slic3r/GUI/Tab.cpp:3515 +#: src/slic3r/GUI/Tab.cpp:2287 src/slic3r/GUI/Tab.cpp:3931 msgid "Exposure" msgstr "Exposition" -#: src/libslic3r/PrintConfig.cpp:2541 src/libslic3r/PrintConfig.cpp:2542 +#: src/libslic3r/PrintConfig.cpp:2684 src/libslic3r/PrintConfig.cpp:2685 msgid "Exposure time" msgstr "Temps d'exposition" -#: src/slic3r/GUI/GUI_Preview.cpp:238 src/libslic3r/ExtrusionEntity.cpp:311 +#: src/slic3r/GUI/GUI_Preview.cpp:302 src/libslic3r/ExtrusionEntity.cpp:315 +#: src/libslic3r/ExtrusionEntity.cpp:338 msgid "External perimeter" msgstr "Périmètre externe" -#: src/slic3r/GUI/PresetHints.cpp:156 +#: src/slic3r/GUI/PresetHints.cpp:155 msgid "external perimeters" msgstr "périmètres externes" -#: src/libslic3r/PrintConfig.cpp:446 src/libslic3r/PrintConfig.cpp:457 +#: src/libslic3r/PrintConfig.cpp:482 src/libslic3r/PrintConfig.cpp:493 msgid "External perimeters" msgstr "Périmètres externes" -#: src/libslic3r/PrintConfig.cpp:469 +#: src/libslic3r/PrintConfig.cpp:505 msgid "External perimeters first" msgstr "Périmètres externes en premier" -#: src/libslic3r/PrintConfig.cpp:1588 src/libslic3r/PrintConfig.cpp:1596 +#: src/libslic3r/PrintConfig.cpp:1696 src/libslic3r/PrintConfig.cpp:1704 msgid "Extra length on restart" msgstr "Longueur supplémentaire à la reprise" -#: src/libslic3r/PrintConfig.cpp:1390 +#: src/libslic3r/PrintConfig.cpp:1498 msgid "Extra loading distance" msgstr "Distance de chargement supplémentaire" -#: src/libslic3r/PrintConfig.cpp:477 +#: src/libslic3r/PrintConfig.cpp:513 msgid "Extra perimeters if needed" msgstr "Périmètres supplémentaires si nécessaire" -#: src/slic3r/GUI/GUI_ObjectList.cpp:278 src/slic3r/GUI/Tab.cpp:1434 -#: src/slic3r/GUI/wxExtensions.cpp:598 src/libslic3r/PrintConfig.cpp:487 +#: src/slic3r/GUI/GCodeViewer.cpp:2277 src/slic3r/GUI/GCodeViewer.cpp:2313 +#: src/slic3r/GUI/GCodeViewer.cpp:2318 src/slic3r/GUI/GUI_ObjectList.cpp:296 +#: src/slic3r/GUI/Tab.cpp:1780 src/slic3r/GUI/wxExtensions.cpp:515 +#: src/libslic3r/PrintConfig.cpp:523 msgid "Extruder" msgstr "Extrudeur" -#: src/slic3r/GUI/DoubleSlider.cpp:1134 src/slic3r/GUI/DoubleSlider.cpp:1170 -#: src/slic3r/GUI/GLCanvas3D.cpp:977 src/slic3r/GUI/GUI_ObjectList.cpp:1704 -#: src/slic3r/GUI/Tab.cpp:2320 src/libslic3r/GCode/PreviewData.cpp:445 +#: src/slic3r/GUI/DoubleSlider.cpp:1263 src/slic3r/GUI/DoubleSlider.cpp:1297 +#: src/slic3r/GUI/GLCanvas3D.cpp:983 src/slic3r/GUI/GUI_ObjectList.cpp:1832 +#: src/slic3r/GUI/Tab.cpp:2489 src/libslic3r/GCode/PreviewData.cpp:450 #, c-format msgid "Extruder %d" msgstr "Extrudeur %d" -#: src/slic3r/GUI/DoubleSlider.cpp:1011 +#: src/slic3r/GUI/DoubleSlider.cpp:1137 msgid "Extruder (tool) is changed to Extruder \"%1%\"" msgstr "L'extrudeur (outil) est remplacée par l'extrudeur \"%1%\"" -#: src/slic3r/GUI/ConfigWizard.cpp:1017 -msgid "Extruder and Bed Temperatures" -msgstr "Températures de l'Extrudeur et du Lit" - #: src/slic3r/GUI/WipeTowerDialog.cpp:255 msgid "Extruder changed to" msgstr "Extrudeur changé à" -#: src/slic3r/GUI/Tab.cpp:1233 +#: src/slic3r/GUI/Tab.cpp:1563 msgid "Extruder clearance (mm)" msgstr "Dégagement de l'extrudeur (mm)" -#: src/libslic3r/PrintConfig.cpp:522 +#: src/libslic3r/PrintConfig.cpp:558 msgid "Extruder Color" msgstr "Couleur de l'extrudeur" -#: src/libslic3r/PrintConfig.cpp:529 +#: src/libslic3r/PrintConfig.cpp:565 msgid "Extruder offset" msgstr "Décalage de l'extrudeur" -#: src/libslic3r/PrintConfig.cpp:911 -msgid "Extruder temperature for first layer. If you want to control temperature manually during print, set this to zero to disable temperature control commands in the output file." -msgstr "Température de l’extrudeur pour la première couche. Si vous voulez contrôler manuellement la température au cours de l’impression, mettez à zéro pour désactiver les commandes de contrôle de température dans le fichier de sortie." - -#: src/libslic3r/PrintConfig.cpp:2065 -msgid "Extruder temperature for layers after the first one. Set this to zero to disable temperature control commands in the output." -msgstr "Température de l'extrudeur pour les couches après la première. Mettez zéro pour désactiver les commandes de contrôle de la température dans le fichier de sortie." - -#: src/slic3r/GUI/GUI_ObjectList.cpp:99 src/slic3r/GUI/GUI_ObjectList.cpp:617 -#: src/slic3r/GUI/Tab.cpp:1180 src/slic3r/GUI/Tab.cpp:1838 -#: src/libslic3r/PrintConfig.cpp:488 src/libslic3r/PrintConfig.cpp:1002 -#: src/libslic3r/PrintConfig.cpp:1409 src/libslic3r/PrintConfig.cpp:1737 -#: src/libslic3r/PrintConfig.cpp:1938 src/libslic3r/PrintConfig.cpp:1965 +#: src/slic3r/GUI/GUI_ObjectList.cpp:97 src/slic3r/GUI/GUI_ObjectList.cpp:656 +#: src/slic3r/GUI/Tab.cpp:1510 src/slic3r/GUI/Tab.cpp:2072 +#: src/libslic3r/PrintConfig.cpp:524 src/libslic3r/PrintConfig.cpp:1046 +#: src/libslic3r/PrintConfig.cpp:1517 src/libslic3r/PrintConfig.cpp:1852 +#: src/libslic3r/PrintConfig.cpp:2080 src/libslic3r/PrintConfig.cpp:2107 msgid "Extruders" msgstr "Extrudeurs" -#: src/libslic3r/PrintConfig.cpp:539 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1061 +msgid "Extruders count" +msgstr "Nombre d'extrudeurs" + +#: src/slic3r/GUI/GCodeViewer.cpp:2493 +msgid "Extrusion" +msgstr "Extrusion" + +#: src/libslic3r/PrintConfig.cpp:575 msgid "Extrusion axis" msgstr "Axe d'extrusion" -#: src/libslic3r/PrintConfig.cpp:545 +#: src/libslic3r/PrintConfig.cpp:581 msgid "Extrusion multiplier" msgstr "Multiplicateur d'extrusion" -#: src/slic3r/GUI/ConfigWizard.cpp:1037 +#: src/slic3r/GUI/ConfigWizard.cpp:1403 msgid "Extrusion Temperature:" msgstr "Température d'Extrusion :" -#: src/slic3r/GUI/Tab.cpp:1205 +#: src/slic3r/GUI/Tab.cpp:1535 msgid "Extrusion width" msgstr "Largeur d'extrusion" -#: src/slic3r/GUI/GUI_ObjectList.cpp:100 src/slic3r/GUI/GUI_ObjectList.cpp:618 -#: src/libslic3r/PrintConfig.cpp:447 src/libslic3r/PrintConfig.cpp:555 -#: src/libslic3r/PrintConfig.cpp:877 src/libslic3r/PrintConfig.cpp:1010 -#: src/libslic3r/PrintConfig.cpp:1418 src/libslic3r/PrintConfig.cpp:1757 -#: src/libslic3r/PrintConfig.cpp:1947 src/libslic3r/PrintConfig.cpp:2106 +#: src/slic3r/GUI/GUI_ObjectList.cpp:98 src/slic3r/GUI/GUI_ObjectList.cpp:657 +#: src/libslic3r/PrintConfig.cpp:483 src/libslic3r/PrintConfig.cpp:591 +#: src/libslic3r/PrintConfig.cpp:919 src/libslic3r/PrintConfig.cpp:1054 +#: src/libslic3r/PrintConfig.cpp:1526 src/libslic3r/PrintConfig.cpp:1872 +#: src/libslic3r/PrintConfig.cpp:2089 src/libslic3r/PrintConfig.cpp:2249 msgid "Extrusion Width" msgstr "Largeur d'Extrusion" -#: src/slic3r/GUI/Plater.cpp:162 +#: src/slic3r/GUI/Plater.cpp:168 msgid "Facets" msgstr "Faces" -#: src/slic3r/GUI/GUI_ObjectList.cpp:349 +#: src/slic3r/GUI/GUI_ObjectList.cpp:396 msgid "facets added" msgstr "faces ajoutées" -#: src/slic3r/GUI/GUI_ObjectList.cpp:348 +#: src/slic3r/GUI/GUI_ObjectList.cpp:395 msgid "facets removed" msgstr "faces supprimées" -#: src/slic3r/GUI/GUI_ObjectList.cpp:350 +#: src/slic3r/GUI/GUI_ObjectList.cpp:397 msgid "facets reversed" msgstr "faces inversées" -#: src/libslic3r/PrintConfig.cpp:2517 +#: src/libslic3r/PrintConfig.cpp:2660 msgid "Faded layers" msgstr "Couches estompées" -#: src/libslic3r/Zipper.cpp:44 +#: src/libslic3r/miniz_extension.cpp:103 msgid "failed finding central directory" msgstr "impossible de trouver le répertoire central" @@ -2738,105 +3143,115 @@ msgstr "impossible de trouver le répertoire central" msgid "Failed loading the input model." msgstr "Échec du chargement du modèle d'entrée." -#: src/libslic3r/PrintBase.cpp:71 +#: src/libslic3r/PrintBase.cpp:72 msgid "Failed processing of the output_filename_format template." msgstr "Échec du traitement du modèle output_filename_format." -#: src/slic3r/GUI/PresetHints.cpp:42 +#: src/slic3r/GUI/PresetHints.cpp:41 msgid "Fan" msgstr "Ventilateur" -#: src/slic3r/GUI/Tab.cpp:1456 +#: src/slic3r/GUI/Tab.cpp:1802 msgid "Fan settings" msgstr "Réglages du ventilateur" -#: src/slic3r/GUI/GUI_Preview.cpp:225 src/slic3r/GUI/Tab.cpp:1457 +#: src/slic3r/GUI/GUI_Preview.cpp:279 src/slic3r/GUI/Tab.cpp:1803 msgid "Fan speed" msgstr "Vitesse du ventilateur" -#: src/libslic3r/GCode/PreviewData.cpp:353 +#: src/slic3r/GUI/GCodeViewer.cpp:2239 src/libslic3r/GCode/PreviewData.cpp:358 msgid "Fan Speed (%)" msgstr "Vitesse du ventilateur (%)" -#: src/libslic3r/PrintConfig.cpp:2405 +#: src/libslic3r/PrintConfig.cpp:2548 msgid "Fast" msgstr "Rapide" -#: src/libslic3r/PrintConfig.cpp:2406 +#: src/libslic3r/PrintConfig.cpp:2549 msgid "Fast tilt" msgstr "Inclinaison rapide" -#: src/slic3r/GUI/GUI_App.cpp:141 +#: src/slic3r/GUI/GUI_App.cpp:531 msgid "Fatal error" msgstr "Erreur fatale" -#: src/slic3r/GUI/GUI_Preview.cpp:221 src/slic3r/GUI/GUI_Preview.cpp:575 -#: src/libslic3r/GCode/PreviewData.cpp:345 +#: src/slic3r/GUI/GUI_Init.cpp:88 +msgid "Fatal error, exception catched: %1%" +msgstr "Erreur fatale, exception interceptée : %1%" + +#: src/slic3r/GUI/GCodeViewer.cpp:2225 src/slic3r/GUI/GCodeViewer.cpp:2233 +#: src/slic3r/GUI/GUI_Preview.cpp:275 src/slic3r/GUI/GUI_Preview.cpp:787 +#: src/libslic3r/GCode/PreviewData.cpp:350 msgid "Feature type" msgstr "Type de fonctionnalité" -#: src/slic3r/GUI/GUI_Preview.cpp:234 src/slic3r/GUI/GUI_Preview.cpp:235 +#: src/slic3r/GUI/GUI_Preview.cpp:293 src/slic3r/GUI/GUI_Preview.cpp:295 +#: src/slic3r/GUI/GUI_Preview.cpp:316 msgid "Feature types" msgstr "Types de fonctionnalité" -#: src/slic3r/GUI/ConfigWizard.cpp:1525 +#: src/slic3r/GUI/ConfigWizard.cpp:1926 msgid "FFF Technology Printers" msgstr "Imprimantes Technologie FFF" -#: src/slic3r/GUI/Plater.cpp:816 src/slic3r/GUI/Tab.cpp:1425 -#: src/slic3r/GUI/Tab.cpp:1426 +#: src/slic3r/GUI/Plater.cpp:691 src/slic3r/GUI/Tab.cpp:1770 +#: src/slic3r/GUI/Tab.cpp:1771 msgid "Filament" msgstr "Filament" -#: src/slic3r/GUI/Preset.cpp:1522 +#: src/libslic3r/Preset.cpp:1301 msgid "filament" msgstr "filament" -#: src/slic3r/GUI/ConfigWizard.cpp:952 +#: src/slic3r/GUI/ConfigWizard.cpp:1318 msgid "Filament and Nozzle Diameters" msgstr "Diamètres du Filament et de la Buse" -#: src/slic3r/GUI/ConfigWizard.cpp:983 +#: src/slic3r/GUI/ConfigWizard.cpp:1349 msgid "Filament Diameter:" msgstr "Diamètre du Filament :" -#: src/libslic3r/PrintConfig.cpp:651 +#: src/libslic3r/PrintConfig.cpp:687 msgid "Filament is cooled by being moved back and forth in the cooling tubes. Specify desired number of these moves." msgstr "Le filament est refroidi en étant déplacé d'avant en arrière dans les tubes de refroidissement. Spécifiez le nombre souhaité de ces mouvements." -#: src/libslic3r/PrintConfig.cpp:686 +#: src/libslic3r/PrintConfig.cpp:722 msgid "Filament load time" msgstr "Temps de chargement du filament" -#: src/libslic3r/PrintConfig.cpp:588 +#: src/libslic3r/PrintConfig.cpp:624 msgid "Filament notes" msgstr "Notes du filament" -#: src/slic3r/GUI/Tab.cpp:1323 src/slic3r/GUI/Tab.cpp:1378 +#: src/slic3r/GUI/Tab.cpp:1669 msgid "Filament Overrides" msgstr "Annulations de Filament" -#: src/libslic3r/PrintConfig.cpp:1381 +#: src/libslic3r/PrintConfig.cpp:1489 msgid "Filament parking position" msgstr "Position d'attente du filament" -#: src/slic3r/GUI/ConfigWizard.cpp:2013 +#: src/slic3r/GUI/ConfigWizard.cpp:2524 msgid "Filament Profiles Selection" msgstr "Sélection des Profils de Filament" -#: src/slic3r/GUI/Tab.cpp:1471 +#: src/slic3r/GUI/Tab.cpp:1817 msgid "Filament properties" msgstr "Propriétés du filament" -#: src/slic3r/GUI/Tab.hpp:355 +#: src/slic3r/GUI/Tab.hpp:409 msgid "Filament Settings" msgstr "Réglages du filament" -#: src/libslic3r/PrintConfig.cpp:726 +#: src/slic3r/GUI/GLCanvas3D.cpp:4304 src/slic3r/GUI/GLCanvas3D.cpp:4940 +msgid "Filament Settings Tab" +msgstr "Onglet de réglages du filament" + +#: src/libslic3r/PrintConfig.cpp:762 msgid "Filament type" msgstr "Type de filament" -#: src/libslic3r/PrintConfig.cpp:701 +#: src/libslic3r/PrintConfig.cpp:737 msgid "Filament unload time" msgstr "Temps de déchargement du filament" @@ -2844,75 +3259,79 @@ msgstr "Temps de déchargement du filament" msgid "filaments" msgstr "filaments" -#: src/slic3r/GUI/ConfigWizard.cpp:1471 src/slic3r/GUI/ConfigWizard.cpp:2013 +#: src/slic3r/GUI/ConfigWizard.cpp:1872 src/slic3r/GUI/ConfigWizard.cpp:2524 msgid "Filaments" msgstr "Filaments" -#: src/libslic3r/Zipper.cpp:72 +#: src/slic3r/GUI/ConfigWizard.cpp:691 +msgid "Filaments marked with * are not compatible with some installed printers." +msgstr "Les filaments marqués d'une * ne sont pas compatibles avec certaines imprimantes installées." + +#: src/libslic3r/miniz_extension.cpp:131 msgid "file close failed" msgstr "échec de la fermeture du fichier" -#: src/libslic3r/Zipper.cpp:66 +#: src/libslic3r/miniz_extension.cpp:125 msgid "file create failed" msgstr "échec de création du fichier" -#: src/slic3r/GUI/MainFrame.cpp:791 +#: src/slic3r/GUI/MainFrame.cpp:1492 msgid "File Not Found" msgstr "Fichier non trouvé" -#: src/libslic3r/Zipper.cpp:86 +#: src/libslic3r/miniz_extension.cpp:145 msgid "file not found" msgstr "fichier non trouvé" -#: src/libslic3r/Zipper.cpp:64 +#: src/libslic3r/miniz_extension.cpp:123 msgid "file open failed" msgstr "échec de l'ouverture du fichier" -#: src/libslic3r/Zipper.cpp:70 +#: src/libslic3r/miniz_extension.cpp:129 msgid "file read failed" msgstr "échec de lecture du fichier" -#: src/libslic3r/Zipper.cpp:74 +#: src/libslic3r/miniz_extension.cpp:133 msgid "file seek failed" msgstr "impossible de trouver le fichier" -#: src/libslic3r/Zipper.cpp:76 +#: src/libslic3r/miniz_extension.cpp:135 msgid "file stat failed" msgstr "impossible d'établir des statistiques pour ce fichier" -#: src/libslic3r/Zipper.cpp:36 +#: src/libslic3r/miniz_extension.cpp:95 msgid "file too large" msgstr "fichier trop volumineux" -#: src/libslic3r/Zipper.cpp:68 +#: src/libslic3r/miniz_extension.cpp:127 msgid "file write failed" msgstr "échec d'écriture du fichier" -#: src/slic3r/GUI/PrintHostDialogs.cpp:153 +#: src/slic3r/GUI/PrintHostDialogs.cpp:151 msgid "Filename" msgstr "Nom de fichier" -#: src/libslic3r/PrintConfig.cpp:775 +#: src/libslic3r/PrintConfig.cpp:811 msgid "Fill angle" msgstr "Angle du remplissage" -#: src/libslic3r/PrintConfig.cpp:789 +#: src/libslic3r/PrintConfig.cpp:825 msgid "Fill density" msgstr "Densité de remplissage" -#: src/libslic3r/PrintConfig.cpp:826 +#: src/libslic3r/PrintConfig.cpp:862 msgid "Fill pattern" msgstr "Motif de remplissage" -#: src/libslic3r/PrintConfig.cpp:437 +#: src/libslic3r/PrintConfig.cpp:473 msgid "Fill pattern for bottom infill. This only affects the bottom external visible layer, and not its adjacent solid shells." msgstr "Motif pour les remplissages pour le remplissage du bas. Ceci affecte seulement la couche externe visible en bas, et non les coques solides adjacentes." -#: src/libslic3r/PrintConfig.cpp:828 +#: src/libslic3r/PrintConfig.cpp:864 msgid "Fill pattern for general low-density infill." msgstr "Motif pour les remplissages de faible densité." -#: src/libslic3r/PrintConfig.cpp:417 +#: src/libslic3r/PrintConfig.cpp:451 msgid "Fill pattern for top infill. This only affects the top visible layer, and not its adjacent solid shells." msgstr "Motif pour les remplissages pour le remplissage du haut. Ceci affecte seulement la couche externe visible en haut, et non les coques solides adjacentes." @@ -2920,7 +3339,7 @@ msgstr "Motif pour les remplissages pour le remplissage du haut. Ceci affecte se msgid "Finished" msgstr "Terminé" -#: src/slic3r/GUI/ConfigWizard.cpp:891 src/slic3r/GUI/Tab.cpp:1947 +#: src/slic3r/GUI/ConfigWizard.cpp:1257 src/slic3r/GUI/Tab.cpp:2132 msgid "Firmware" msgstr "Firmware" @@ -2932,50 +3351,58 @@ msgstr "Outil de flash du firmware" msgid "Firmware image:" msgstr "Image du firmware :" -#: src/slic3r/GUI/Tab.cpp:2577 +#: src/slic3r/GUI/Tab.cpp:2733 msgid "Firmware Retraction" msgstr "Rétraction du Firmware" -#: src/slic3r/GUI/ConfigWizard.cpp:891 +#: src/slic3r/GUI/ConfigWizard.cpp:1257 msgid "Firmware Type" msgstr "Type de Firmware" -#: src/libslic3r/PrintConfig.cpp:859 src/libslic3r/PrintConfig.cpp:868 -#: src/libslic3r/PrintConfig.cpp:876 src/libslic3r/PrintConfig.cpp:910 +#: src/libslic3r/PrintConfig.cpp:899 src/libslic3r/PrintConfig.cpp:908 +#: src/libslic3r/PrintConfig.cpp:918 src/libslic3r/PrintConfig.cpp:952 msgid "First layer" msgstr "Première couche" -#: src/slic3r/GUI/ConfigManipulation.cpp:61 src/libslic3r/PrintConfig.cpp:889 +#: src/libslic3r/PrintConfig.cpp:909 +msgid "First layer bed temperature" +msgstr "Température du plateau de la première couche" + +#: src/slic3r/GUI/ConfigManipulation.cpp:60 src/libslic3r/PrintConfig.cpp:931 msgid "First layer height" msgstr "Hauteur de la première couche" -#: src/libslic3r/Print.cpp:1422 +#: src/libslic3r/Print.cpp:1448 msgid "First layer height can't be greater than nozzle diameter" msgstr "La hauteur de la première couche ne peut pas être supérieure au diamètre de la buse" -#: src/libslic3r/PrintConfig.cpp:900 +#: src/libslic3r/PrintConfig.cpp:960 +msgid "First layer nozzle temperature" +msgstr "Température de la buse de la première couche" + +#: src/libslic3r/PrintConfig.cpp:942 msgid "First layer speed" msgstr "Vitesse de la première couche" -#: src/slic3r/GUI/PresetHints.cpp:219 +#: src/slic3r/GUI/PresetHints.cpp:218 msgid "First layer volumetric" msgstr "Volume de la première couche" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1647 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1776 msgid "Fix through the Netfabb" msgstr "Corriger avec Netfabb" -#: src/slic3r/GUI/Plater.cpp:3473 +#: src/slic3r/GUI/Plater.cpp:3278 msgid "Fix Throught NetFabb" msgstr "Corriger Avec NetFabb" -#: src/slic3r/GUI/GUI_App.cpp:824 +#: src/slic3r/GUI/GUI_App.cpp:1522 msgid "Flash printer &firmware" msgstr "Flasher le &firmware de l'imprimante" #: src/slic3r/GUI/FirmwareDialog.cpp:150 msgid "Flash!" -msgstr "Flash !" +msgstr "Flasher !" #: src/slic3r/GUI/FirmwareDialog.cpp:284 msgid "Flashing cancelled." @@ -2997,24 +3424,32 @@ msgstr "Processus de flash en cours. Veuillez ne pas déconnecter l'imprimante ! msgid "Flashing succeeded!" msgstr "Flash effectué avec succès !" -#: src/slic3r/GUI/Tab.cpp:1218 +#: src/slic3r/GUI/Tab.cpp:1548 msgid "Flow" msgstr "Flux" -#: src/slic3r/GUI/PresetHints.cpp:220 +#: src/libslic3r/PrintConfig.cpp:1145 +msgid "Flow rate" +msgstr "Débit" + +#: src/slic3r/GUI/PresetHints.cpp:219 msgid "flow rate is maximized" msgstr "le débit est maximisé" -#: src/slic3r/GUI/UpdateDialogs.cpp:286 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:555 +msgid "Following printer preset(s) is duplicated:%1%The above preset for printer \"%2%\" will be used just once." +msgstr "Le ou les préréglages d'imprimante suivants sont dupliqués :%1% Le préréglage ci-dessus pour l'imprimante \"%2%\" sera utilisé une seule fois." + +#: src/slic3r/GUI/UpdateDialogs.cpp:287 msgid "For more information please visit our wiki page:" msgstr "Pour plus d'informations, merci de visiter notre page wiki :" -#: src/slic3r/GUI/Plater.cpp:501 src/slic3r/GUI/Plater.cpp:624 +#: src/slic3r/GUI/Plater.cpp:367 src/slic3r/GUI/Plater.cpp:490 msgid "For support enforcers only" msgstr "Seulement pour les générateur de supports" #. TRN Description for "WHITE BULLET" -#: src/slic3r/GUI/Tab.cpp:3267 +#: src/slic3r/GUI/Tab.cpp:3702 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." @@ -3022,7 +3457,7 @@ msgstr "" "pour le bouton gauche : indique un préréglage non-système (ou non par défaut),\n" "pour le bouton droit : indique que le réglage n'a pas été modifié." -#: src/slic3r/GUI/ConfigManipulation.cpp:136 +#: src/slic3r/GUI/ConfigManipulation.cpp:135 msgid "" "For the Wipe Tower to work with the soluble supports, the support layers\n" "need to be synchronized with the object layers." @@ -3030,21 +3465,21 @@ msgstr "" "Pour que la tour de nettoyage fonctionne avec les supports solubles, les couches du support\n" "doivent être synchronisées avec les couches d'objets." -#: src/libslic3r/Print.cpp:1396 +#: src/libslic3r/Print.cpp:1422 msgid "For the Wipe Tower to work with the soluble supports, the support layers need to be synchronized with the object layers." msgstr "" "Pour que la Tour de Nettoyage fonctionne avec des supports solubles, les couches de support\n" "doivent être synchronisées avec les couches de l'objet." -#: src/libslic3r/PrintConfig.cpp:2864 +#: src/libslic3r/PrintConfig.cpp:3028 msgid "Force pad around object everywhere" msgstr "Forcer le socle partout autour de l'objet" -#: src/libslic3r/PrintConfig.cpp:1729 +#: src/libslic3r/PrintConfig.cpp:1844 msgid "Force solid infill for regions having a smaller area than the specified threshold." msgstr "Forcer un remplissage solide pour les zones ayant une surface plus petite que la valeur indiquée." -#: src/libslic3r/PrintConfig.cpp:1072 +#: src/libslic3r/PrintConfig.cpp:1116 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 "Force la génération de coques solides entre des volumes/matériaux adjacents. Utile pour des impressions multi-extrudeurs avec des matériaux translucides ou avec un support manuel soluble." @@ -3052,27 +3487,31 @@ msgstr "Force la génération de coques solides entre des volumes/matériaux adj msgid "From" msgstr "De" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2223 +#: src/slic3r/GUI/GCodeViewer.cpp:2197 +msgid "from" +msgstr "de" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2389 msgid "From Object List You can't delete the last solid part from object." msgstr "Depuis la Liste d'Objet Vous ne pouvez pas supprimer la dernière partie solide de l'objet." -#: src/slic3r/GUI/MainFrame.cpp:667 +#: src/slic3r/GUI/MainFrame.cpp:964 src/slic3r/GUI/MainFrame.cpp:1284 msgid "Front" msgstr "Avant" -#: src/slic3r/GUI/MainFrame.cpp:667 +#: src/slic3r/GUI/MainFrame.cpp:964 src/slic3r/GUI/MainFrame.cpp:1284 msgid "Front View" msgstr "Vue Avant" -#: src/slic3r/GUI/Tab.cpp:1013 +#: src/slic3r/GUI/Tab.cpp:1331 msgid "full profile name" msgstr "nom de profil complet" -#: src/slic3r/GUI/MainFrame.cpp:826 +#: src/slic3r/GUI/MainFrame.cpp:1527 msgid "G-code" msgstr "G-code" -#: src/slic3r/GUI/DoubleSlider.cpp:1021 +#: src/slic3r/GUI/DoubleSlider.cpp:1146 msgid "" "G-code associated to this tick mark is in a conflict with print mode.\n" "Editing it will cause changes of Slider data." @@ -3080,220 +3519,273 @@ msgstr "" "Le G-code associé à cette coche est en conflit avec le mode d'impression.\n" "Le modifier entraînera des modifications des données du curseur." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:130 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:165 msgid "G-code file exported to %1%" msgstr "Fichier G-code exporté vers %1%" -#: src/libslic3r/PrintConfig.cpp:936 +#: src/libslic3r/PrintConfig.cpp:980 msgid "G-code flavor" msgstr "Version du G-code" -#: src/libslic3r/PrintConfig.cpp:721 +#: src/slic3r/GUI/MainFrame.cpp:66 src/slic3r/GUI/MainFrame.cpp:79 +msgid "G-code preview" +msgstr "Aperçu du G-code" + +#: src/libslic3r/PrintConfig.cpp:3552 +msgid "G-code viewer" +msgstr "Visionneuse de G-code" + +#: src/libslic3r/PrintConfig.cpp:757 msgid "g/cm³" msgstr "g/cm³" -#: src/libslic3r/PrintConfig.cpp:2505 +#: src/libslic3r/PrintConfig.cpp:2648 msgid "g/ml" msgstr "g/ml" -#: src/slic3r/GUI/GUI_Preview.cpp:244 src/libslic3r/ExtrusionEntity.cpp:317 -#: src/libslic3r/PrintConfig.cpp:918 +#: src/slic3r/GUI/GUI_Preview.cpp:309 src/libslic3r/ExtrusionEntity.cpp:322 +#: src/libslic3r/ExtrusionEntity.cpp:352 src/libslic3r/PrintConfig.cpp:962 msgid "Gap fill" msgstr "Remplissage des trous" -#: src/slic3r/GUI/Preferences.cpp:22 src/slic3r/GUI/Tab.cpp:1796 -#: src/slic3r/GUI/Tab.cpp:2040 +#: src/slic3r/GUI/Preferences.cpp:24 src/slic3r/GUI/Tab.cpp:2058 +#: src/slic3r/GUI/Tab.cpp:2240 src/slic3r/GUI/Tab.cpp:2348 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1066 msgid "General" msgstr "Général" -#: src/libslic3r/PrintConfig.cpp:1307 +#: 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 "Nombre minimum de contours à générer afin de consommer la quantité de filament spécifiée sur la couche inférieure. Pour les machines multi-extrudeurs, ce minimum s'applique à chaque extrudeur." -#: src/libslic3r/PrintConfig.cpp:1865 +#: src/libslic3r/PrintConfig.cpp:2007 msgid "Generate support material" msgstr "Générer des supports" -#: src/libslic3r/PrintConfig.cpp:1926 +#: src/libslic3r/PrintConfig.cpp:2068 msgid "Generate support material for the specified number of layers counting from bottom, regardless of whether normal support material is enabled or not and regardless of any angle threshold. This is useful for getting more adhesion of objects having a very thin or poor footprint on the build plate." msgstr "Générer des supports pour le nombre de couches spécifié à partir du bas, que les supports normaux soient activés ou non et sans tenir compte des seuils d'inclinaison. Ceci est utile pour obtenir une meilleure adhérence pour des objets ayant une surface de contact très fine ou limitée sur le plateau." -#: src/libslic3r/PrintConfig.cpp:2613 +#: src/libslic3r/PrintConfig.cpp:2756 msgid "Generate supports" msgstr "Générer des supports" -#: src/libslic3r/PrintConfig.cpp:2615 +#: src/libslic3r/PrintConfig.cpp:2758 msgid "Generate supports for the models" msgstr "Générer des supports pour les modèles" -#: src/libslic3r/Print.cpp:1614 +#: src/slic3r/GUI/Plater.cpp:3554 +msgid "generated warnings" +msgstr "avertissements générés" + +#: src/libslic3r/Print.cpp:1645 msgid "Generating brim" msgstr "Génération de la bordure" -#: src/libslic3r/Print.cpp:1642 +#: src/libslic3r/Print.cpp:1680 msgid "Generating G-code" msgstr "Génération du G-code" -#: src/libslic3r/SLAPrintSteps.cpp:48 +#: src/slic3r/GUI/GCodeViewer.cpp:1392 +msgid "Generating index buffers" +msgstr "Génération des tampons d'index" + +#: src/libslic3r/SLAPrintSteps.cpp:49 msgid "Generating pad" msgstr "Génération du socle" -#: src/libslic3r/PrintObject.cpp:152 +#: src/libslic3r/PrintObject.cpp:158 msgid "Generating perimeters" msgstr "Génération des périmètres" -#: src/libslic3r/Print.cpp:1606 +#: src/libslic3r/Print.cpp:1636 msgid "Generating skirt" msgstr "Génération de la jupe" -#: src/libslic3r/PrintObject.cpp:395 +#: src/libslic3r/PrintObject.cpp:422 msgid "Generating support material" msgstr "Génération des supports" -#: src/libslic3r/SLAPrintSteps.cpp:46 src/libslic3r/SLAPrintSteps.cpp:356 +#: src/libslic3r/SLAPrintSteps.cpp:47 src/libslic3r/SLAPrintSteps.cpp:359 msgid "Generating support points" msgstr "Génération des points de support" -#: src/libslic3r/SLAPrintSteps.cpp:47 +#: src/libslic3r/SLAPrintSteps.cpp:48 msgid "Generating support tree" msgstr "Génération de l'arbre de support" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2022 +#: src/slic3r/GUI/GCodeViewer.cpp:933 +msgid "Generating toolpaths" +msgstr "Génération des parcours d'outils" + +#: src/slic3r/GUI/GCodeViewer.cpp:1318 +msgid "Generating vertex buffer" +msgstr "Génération du tampon de vertex" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2181 msgid "Generic" msgstr "Générique" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:175 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:169 msgid "Gizmo cut" msgstr "Couper le Gizmo" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:172 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:166 msgid "Gizmo move" msgstr "Déplacer le Gizmo" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:176 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:198 +msgid "Gizmo move: Press to snap by 1mm" +msgstr "Déplacement du gizmo : appuyez pour des pas de 1 mm" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:170 msgid "Gizmo Place face on bed" msgstr "Emplacement du Gizmo face au lit" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:174 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:168 msgid "Gizmo rotate" msgstr "Pivoter le Gizmo" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:173 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:203 +msgid "Gizmo rotate: Press to rotate selected objects around their own center" +msgstr "Rotation du gizmo : appuyez pour faire pivoter les objets sélectionnés autour de leur propre centre" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:167 msgid "Gizmo scale" msgstr "Échelle du Gizmo" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:177 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:201 +msgid "Gizmo scale: Press to activate one direction scaling" +msgstr "Redimensionnement du gizmo : appuyez pour activer le redimensionnement dans une direction" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:202 +msgid "Gizmo scale: Press to scale selected objects around their own center" +msgstr "Redimensionnement du gizmo : appuyez pour mettre redimensionner les objets sélectionnés autour de leur propre centre" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:199 +msgid "Gizmo scale: Press to snap by 5%" +msgstr "Redimensionnement du gizmo : appuyez pour des pas de 5%" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:200 +msgid "Gizmo scale: Scale selection to fit print volume" +msgstr "Redimensionnement du gizmo : redimensionner la sélection pour remplir le volume d'impression" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:171 msgid "Gizmo SLA hollow" msgstr "Gizmo SLA évidé" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:178 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:172 msgid "Gizmo SLA support points" msgstr "Points de support SLA du Gizmo" -#: src/slic3r/GUI/GLCanvas3D.cpp:2921 -#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:562 +#: src/slic3r/GUI/GLCanvas3D.cpp:3165 +#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:520 msgid "Gizmo-Move" msgstr "Gizmo-Déplacement" -#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:489 +#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:639 msgid "Gizmo-Place on Face" msgstr "Gizmo-Positionner sur la surface" -#: src/slic3r/GUI/GLCanvas3D.cpp:3001 -#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:564 +#: src/slic3r/GUI/GLCanvas3D.cpp:3249 +#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:522 msgid "Gizmo-Rotate" msgstr "Gizmo-Rotation" -#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:563 +#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:521 msgid "Gizmo-Scale" msgstr "Gizmo-Échelle" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:201 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:199 msgid "Gizmos" msgstr "Gizmos" -#: src/slic3r/GUI/AboutDialog.cpp:259 +#: src/slic3r/GUI/AboutDialog.cpp:284 src/slic3r/GUI/GUI_App.cpp:244 msgid "GNU Affero General Public License, version 3" msgstr "GNU Affero Licence Publique Générale, version 3" -#: src/slic3r/GUI/ConfigWizard.cpp:980 +#: src/slic3r/GUI/ConfigWizard.cpp:1346 msgid "Good precision is required, so use a caliper and do multiple measurements along the filament, then compute the average." msgstr "Une bonne précision est requise, utilisez un pied à coulisse et calculez la moyenne de plusieurs mesures le long du filament." -#: src/libslic3r/PrintConfig.cpp:844 +#: src/libslic3r/PrintConfig.cpp:882 msgid "Grid" msgstr "Grille" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2454 +#: src/slic3r/GUI/PrintHostDialogs.cpp:57 +msgid "Group" +msgstr "Grouper" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2846 msgid "Group manipulation" msgstr "Manipulation d'un groupe" -#: src/slic3r/GUI/Preferences.cpp:133 +#: src/slic3r/GUI/Preferences.cpp:200 msgid "GUI" msgstr "GUI" -#: src/libslic3r/PrintConfig.cpp:852 +#: src/libslic3r/PrintConfig.cpp:890 msgid "Gyroid" msgstr "Gyroïde" -#: src/slic3r/GUI/Tab.cpp:2937 -msgid "has the following unsaved changes:" -msgstr "a les changements suivants non-enregistrés :" - -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:47 msgid "Head diameter" msgstr "Diamètre de la tête" -#: src/slic3r/GUI/ConfigManipulation.cpp:317 +#: src/libslic3r/PrintConfig.cpp:2772 +msgid "Head penetration" +msgstr "Pénétration de la tête" + +#: src/slic3r/GUI/ConfigManipulation.cpp:322 msgid "Head penetration should not be greater than the head width." msgstr "La pénétration de la tête ne doit pas être supérieure à la largeur de la tête." -#: src/libslic3r/PrintConfig.cpp:869 +#: src/libslic3r/PrintConfig.cpp:910 msgid "Heated build plate temperature for the first layer. Set this to zero to disable bed temperature control commands in the output." msgstr "Température du plateau chauffant pour la première couche. Mettez ceci à zéro pour désactiver les commandes de contrôle de température du plateau dans la sortie." -#: src/slic3r/GUI/GUI_Preview.cpp:222 src/libslic3r/PrintConfig.cpp:500 +#: src/slic3r/GUI/GUI_Preview.cpp:276 src/libslic3r/PrintConfig.cpp:536 msgid "Height" msgstr "Hauteur" -#: src/libslic3r/GCode/PreviewData.cpp:347 +#: src/slic3r/GUI/GCodeViewer.cpp:2236 src/libslic3r/GCode/PreviewData.cpp:352 msgid "Height (mm)" msgstr "Hauteur (mm)" -#: src/libslic3r/PrintConfig.cpp:1688 +#: src/libslic3r/PrintConfig.cpp:1796 msgid "Height of skirt expressed in layers. Set this to a tall value to use skirt as a shield against drafts." msgstr "Hauteur de la jupe exprimée en couches. Mettez une valeur élevée pour utiliser la jupe comme un bouclier contre les flux d'airs." -#: src/libslic3r/PrintConfig.cpp:2360 +#: src/libslic3r/PrintConfig.cpp:2503 msgid "Height of the display" msgstr "Hauteur de l'affichage" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1500 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1631 msgid "Height range Modifier" -msgstr "Modificateur de la zone de hauteur" +msgstr "Modificateur de plage de hauteur" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2507 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2899 msgid "Height ranges" -msgstr "Zones de hauteur" +msgstr "Plages de hauteur" -#: src/libslic3r/PrintConfig.cpp:261 +#: src/libslic3r/PrintConfig.cpp:295 msgid "Heights at which a filament change is to occur." msgstr "Hauteurs auxquelles le changement de filament doit se produire." -#: src/slic3r/GUI/ConfigWizard.cpp:433 +#: src/slic3r/GUI/ConfigWizard.cpp:451 #, 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 "Bonjour, bienvenu dans %s ! Ce %s vous aide à la configuration initiale ; juste quelques paramètres et vous serez prêt à imprimer." -#: src/libslic3r/PrintConfig.cpp:3365 +#: src/libslic3r/PrintConfig.cpp:3564 msgid "Help" msgstr "Aide" -#: src/libslic3r/PrintConfig.cpp:3371 +#: src/libslic3r/PrintConfig.cpp:3570 msgid "Help (FFF options)" msgstr "Aide (options FFF)" -#: src/libslic3r/PrintConfig.cpp:3376 +#: src/libslic3r/PrintConfig.cpp:3575 msgid "Help (SLA options)" msgstr "Aide (options SLA)" @@ -3301,96 +3793,80 @@ msgstr "Aide (options SLA)" msgid "Here you can adjust required purging volume (mm³) for any given pair of tools." msgstr "Ici vous pouvez ajuster le volume de purge nécessaire (mm³) pour une paire d'outils donnée." -#: src/libslic3r/PrintConfig.cpp:973 +#: src/libslic3r/PrintConfig.cpp:1017 msgid "High extruder current on filament swap" msgstr "Courant de l'extrudeur élevé lors du changement de filament" -#: src/slic3r/GUI/GLCanvas3D.cpp:277 +#: src/slic3r/GUI/GLCanvas3D.cpp:263 msgid "Higher print quality versus higher print speed." msgstr "Meilleure qualité d'impression par rapport à une vitesse d'impression plus élevée." -#: src/libslic3r/PrintConfig.cpp:427 src/libslic3r/PrintConfig.cpp:853 +#: src/libslic3r/PrintConfig.cpp:463 src/libslic3r/PrintConfig.cpp:891 msgid "Hilbert Curve" msgstr "Courbe de Hilbert" -#: src/slic3r/GUI/Plater.cpp:1042 +#: src/slic3r/GUI/Plater.cpp:916 msgid "Hold Shift to Slice & Export G-code" msgstr "Maintenez la touche Majuscule pour Trancher et Exporter le G-code" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:47 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:46 msgid "Hole depth" msgstr "Profondeur du trou" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:46 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:45 msgid "Hole diameter" msgstr "Diamètre du trou" -#: src/slic3r/GUI/Plater.cpp:2760 -msgid "Hollow" -msgstr "Évider" - -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:977 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:785 msgid "Hollow and drill" msgstr "Évider et percer" -#: src/libslic3r/PrintConfig.cpp:2910 +#: src/libslic3r/PrintConfig.cpp:3074 msgid "Hollow out a model to have an empty interior" msgstr "Évider un modèle pour avoir un intérieur vide" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:41 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:40 msgid "Hollow this object" msgstr "Évider cet objet" -#: src/slic3r/GUI/GUI_ObjectList.cpp:108 src/slic3r/GUI/Tab.cpp:3654 -#: src/slic3r/GUI/Tab.cpp:3655 src/libslic3r/SLA/Hollowing.cpp:46 -#: src/libslic3r/SLA/Hollowing.cpp:58 src/libslic3r/SLA/Hollowing.cpp:67 -#: src/libslic3r/SLA/Hollowing.cpp:76 src/libslic3r/PrintConfig.cpp:2909 -#: src/libslic3r/PrintConfig.cpp:2916 src/libslic3r/PrintConfig.cpp:2926 -#: src/libslic3r/PrintConfig.cpp:2935 +#: src/slic3r/GUI/GUI_ObjectList.cpp:106 src/slic3r/GUI/Tab.cpp:4073 +#: src/slic3r/GUI/Tab.cpp:4074 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:3073 +#: src/libslic3r/PrintConfig.cpp:3080 src/libslic3r/PrintConfig.cpp:3090 +#: src/libslic3r/PrintConfig.cpp:3099 msgid "Hollowing" msgstr "Évidement" -#: src/slic3r/GUI/Plater.cpp:2926 -msgid "Hollowing cancelled." -msgstr "Évidement annulé." - -#: src/slic3r/GUI/Plater.cpp:2927 -msgid "Hollowing done." -msgstr "Évidement terminé." - -#: src/slic3r/GUI/Plater.cpp:2929 -msgid "Hollowing failed." -msgstr "L'évidement a échoué." - -#: src/libslic3r/PrintConfig.cpp:2937 +#: src/libslic3r/PrintConfig.cpp:3101 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 inflated back to the specified offset. A greater closing distance makes the interior more rounded. At zero, the interior will resemble the exterior the most." -msgstr "L'Évidement se fait en deux temps : tout d'abord, un intérieur fictif est calculé plus profondément (décalage plus distance de fermeture) dans l'objet puis il est ré-augmenté jusqu'au décalage spécifié. Une distance de fermeture plus importante rend l'intérieur plus rond. À zéro, l'intérieur sera très semblable à l'extérieur." +msgstr "L'Évidement se fait en deux temps : tout d'abord, un intérieur fictif est calculé plus profondément (décalage plus intervalle d'espacement) dans l'objet puis il est ré-augmenté jusqu'au décalage spécifié. Une distance de fermeture plus importante rend l'intérieur plus rond. À zéro, l'intérieur sera très semblable à l'extérieur." -#: src/libslic3r/SLAPrintSteps.cpp:43 +#: src/libslic3r/SLAPrintSteps.cpp:44 msgid "Hollowing model" msgstr "Évidement du modèle" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:813 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:624 msgid "Hollowing parameter change" msgstr "Modification des paramètres d'évidement" -#: src/libslic3r/PrintConfig.cpp:850 src/libslic3r/PrintConfig.cpp:2011 +#: src/libslic3r/PrintConfig.cpp:888 src/libslic3r/PrintConfig.cpp:2153 msgid "Honeycomb" msgstr "Nid d'abeille" -#: src/slic3r/GUI/Tab.cpp:1064 +#: src/slic3r/GUI/Tab.cpp:1386 msgid "Horizontal shells" msgstr "Coques horizontales" -#: src/libslic3r/PrintConfig.cpp:245 +#: src/libslic3r/PrintConfig.cpp:279 msgid "Horizontal width of the brim that will be printed around each object on the first layer." msgstr "Largeur horizontale de la bordure qui sera imprimée autour de chaque objet sur la première couche." -#: src/slic3r/GUI/PrintHostDialogs.cpp:152 +#: src/slic3r/GUI/PrintHostDialogs.cpp:150 msgid "Host" msgstr "L'Hôte" -#: src/libslic3r/PrintConfig.cpp:1332 +#: src/libslic3r/PrintConfig.cpp:1440 msgid "Host Type" msgstr "Type d'hôte" @@ -3398,11 +3874,11 @@ msgstr "Type d'hôte" msgid "Hostname" msgstr "Nom d'hôte" -#: src/libslic3r/PrintConfig.cpp:97 +#: src/libslic3r/PrintConfig.cpp:99 msgid "Hostname, IP or URL" msgstr "Nom d'hôte, IP ou URL" -#: src/slic3r/GUI/Tab.cpp:139 +#: src/slic3r/GUI/Tab.cpp:210 msgid "" "Hover the cursor over buttons to find more information \n" "or click this button." @@ -3410,57 +3886,66 @@ msgstr "" "Passez le curseur au dessus des boutons pour obtenir plus d'informations\n" "ou cliquez sur ce bouton." -#: src/libslic3r/PrintConfig.cpp:2812 +#: src/libslic3r/PrintConfig.cpp:2976 msgid "How far should the pad extend around the contained geometry" msgstr "Jusqu'où le socle doit-il s'étendre autour de la géométrie contenue" -#: src/libslic3r/PrintConfig.cpp:2901 +#: src/libslic3r/PrintConfig.cpp:3065 msgid "How much should the tiny connectors penetrate into the model body." msgstr "À quelle profondeur les petits connecteurs doivent-ils pénétrer dans le corps du modèle." -#: src/libslic3r/PrintConfig.cpp:2631 +#: src/libslic3r/PrintConfig.cpp:2774 msgid "How much the pinhead has to penetrate the model surface" msgstr "Niveau de pénétration de l'épingle dans la surface du modèle" -#: src/libslic3r/PrintConfig.cpp:2755 +#: src/libslic3r/PrintConfig.cpp:2919 msgid "How much the supports should lift up the supported object. If \"Pad around object\" is enabled, this value is ignored." msgstr "A quel point les supports devraient soutenir l'objet supporté. Si la fonction \"Socle autour de l'objet\" est activée, cette valeur est ignorée." -#: src/libslic3r/PrintConfig.cpp:111 +#: src/libslic3r/PrintConfig.cpp:1209 +msgid "How to apply limits" +msgstr "Comment appliquer des limites" + +#: src/libslic3r/PrintConfig.cpp:1203 +msgid "How to apply the Machine Limits" +msgstr "Comment appliquer les limites de la machine" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:358 +#: src/libslic3r/PrintConfig.cpp:113 msgid "HTTPS CA File" msgstr "HTTPS CA Fichier" -#: src/slic3r/GUI/Tab.cpp:1713 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:319 msgid "HTTPS CA file is optional. It is only needed if you use HTTPS with a self-signed certificate." msgstr "Le fichier HTTPS CA est optionnel. Il est uniquement requis si vous utilisez le HTTPS avec un certificat auto-signé." -#: src/slic3r/GUI/Preferences.cpp:222 +#: src/slic3r/GUI/Preferences.cpp:376 msgid "Icon size in a respect to the default size" msgstr "Taille de l'icône par rapport à la taille par défaut" -#: src/slic3r/GUI/PrintHostDialogs.cpp:149 +#: src/slic3r/GUI/PrintHostDialogs.cpp:147 msgid "ID" msgstr "ID" -#: src/libslic3r/PrintConfig.cpp:1873 +#: src/libslic3r/PrintConfig.cpp:2015 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 "Si cette case est cochée, les supports seront générés automatiquement en fonction de la valeur seuil de surplomb. Si cette case n'est pas cochée, les supports seront générés uniquement dans les volumes \"Générateur de supports\"." -#: src/slic3r/GUI/ConfigWizard.cpp:773 +#: src/slic3r/GUI/ConfigWizard.cpp:1132 #, c-format msgid "If enabled, %s checks for new application versions online. When a new version becomes available, a notification is displayed at the next application startup (never during program usage). This is only a notification mechanisms, no automatic installation is done." msgstr "Si activé, %s vérifie en ligne l'existence de nouvelles versions de Slic3r PE. Lorsqu'une nouvelle version est disponible, une notification est affichée au démarrage suivant de l'application (jamais pendant l'utilisation du programme). Ceci est uniquement un mécanisme de notification, aucune installation automatique n'est faite." -#: src/slic3r/GUI/ConfigWizard.cpp:783 +#: src/slic3r/GUI/ConfigWizard.cpp:1142 #, c-format msgid "If enabled, %s downloads updates of built-in system presets in the background.These updates are downloaded into a separate temporary location.When a new preset version becomes available it is offered at application startup." msgstr "Si activé, %s télécharge les mises à jours des préréglages système intégrés en arrière-plan. Ces mises à jour sont téléchargées dans un répertoire temporaire séparé. Lorsqu'une nouvelle version de préréglages est disponible, elle est proposée au démarrage de l'application." -#: src/libslic3r/PrintConfig.cpp:1852 +#: src/libslic3r/PrintConfig.cpp:1994 msgid "If enabled, all printing extruders will be primed at the front edge of the print bed at the start of the print." msgstr "Si ceci est activé, tous les extrudeurs qui impriment seront positionnés sur la bordure avant du lit d'impression au début de l'impression." -#: src/slic3r/GUI/ConfigWizard.cpp:805 +#: src/slic3r/GUI/ConfigWizard.cpp:1164 msgid "" "If enabled, allows the Reload from disk command to automatically find and load the files when invoked.\n" "If not enabled, the Reload from disk command will ask to select each file using an open file dialog." @@ -3468,127 +3953,172 @@ msgstr "" "Si activé, permet à la commande Recharger à partir du disque de rechercher et de charger automatiquement les fichiers lorsqu'elle est invoquée.\n" "Si non activée, la commande Recharger à partir du disque demandera de sélectionner chaque fichier à l'aide d'une boîte de dialogue d'ouverture de fichier." -#: src/slic3r/GUI/Preferences.cpp:74 +#: src/slic3r/GUI/Preferences.cpp:91 msgid "If enabled, allows the Reload from disk command to automatically find and load the files when invoked." msgstr "Si activé, permet à la commande Recharger à partir du disque de rechercher et de charger automatiquement les fichiers lorsqu'elle est invoquée." -#: src/slic3r/GUI/Preferences.cpp:66 +#: src/slic3r/GUI/Preferences.cpp:238 +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 "Si activé, les modifications apportées à l'aide du curseur séquentiel, dans l'aperçu, s'appliquent uniquement à la couche supérieure du gcode. Si désactivé, les modifications effectuées à l'aide du curseur séquentiel, dans l'aperçu, s'appliquent à l'ensemble du gcode." + +#: src/slic3r/GUI/Preferences.cpp:83 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 application startup (never during program usage). This is only a notification mechanisms, no automatic installation is done." msgstr "Si activé, PrusaSlicer vérifie l'existence de ses nouvelles versions en ligne . Lorsqu'une nouvelle version est disponible, une notification est affichée au prochain démarrage de l'application (jamais pendant l'utilisation du programme). Ceci est uniquement un mécanisme de notification, aucune installation automatique n'est faite." -#: src/slic3r/GUI/Preferences.cpp:82 +#: src/slic3r/GUI/Preferences.cpp:270 +msgid "If enabled, renders object using the environment map." +msgstr "Si activé, rend l'objet à l'aide de la carte d'environnement." + +#: src/slic3r/GUI/Preferences.cpp:200 +msgid "If enabled, reverses the direction of zoom with mouse wheel" +msgstr "Si activé, inverse la direction du zoom avec la molette de la souris" + +#: src/slic3r/GUI/Preferences.cpp:99 msgid "If enabled, Slic3r downloads updates of built-in system presets in the background. These updates are downloaded into a separate temporary location. When a new preset version becomes available it is offered at application startup." msgstr "Si activé, Slic3r télécharge les mises à jours des préréglages système intégrés en arrière-plan. Ces mises à jour sont téléchargées dans un répertoire temporaire séparé. Lorsqu'une nouvelle version de préréglages est disponible, elle est proposée au démarrage de l'application." -#: src/slic3r/GUI/Preferences.cpp:106 +#: src/slic3r/GUI/Preferences.cpp:137 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 "Si ceci est activé, la scène 3D sera affichée avec la résolution Retina. Si vous rencontrez des problèmes de performance 3D, le fait de désactiver cette option vous aidera peut-être." -#: src/libslic3r/PrintConfig.cpp:1696 +#: src/slic3r/GUI/Preferences.cpp:215 +msgid "If enabled, the button for the collapse sidebar will be appeared in top right corner of the 3D Scene" +msgstr "Si activé, le bouton de réduction de la barre latérale apparaîtra dans le coin supérieur droit de la scène 3D" + +#: src/libslic3r/PrintConfig.cpp:3698 +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 activé, les arguments de ligne de commande sont envoyés à une instance existante de la GUI de PrusaSlicer, ou une fenêtre existante de PrusaSlicer est activée. Remplace la valeur de configuration \"single_instance\" des préférences de l'application." + +#: src/libslic3r/PrintConfig.cpp:1804 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 "Si elle est activée, la jupe sera aussi haute que l'objet imprimé le plus haut. Cela sert à protéger les impressions ABS ou ASA des phénomènes de déformation ou de décollement du plateau d'impression liés au flux d'air." -#: src/libslic3r/PrintConfig.cpp:1858 +#: src/libslic3r/PrintConfig.cpp:2000 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 print the wipe tower. User is responsible for ensuring there is no collision with the print." msgstr "Si elle est activée, la tour de nettoyage ne sera pas imprimée sur des couches sans changement d'outil. Sur les couches avec un changement d'outil, l'extrudeur se déplacera vers le bas pour imprimer la tour de nettoyage. C'est à l'utilisateur de s'assurer qu'il n'y a pas de collision avec l'impression." -#: src/slic3r/GUI/Preferences.cpp:128 +#: src/slic3r/GUI/Preferences.cpp:193 msgid "If enabled, use free camera. If not enabled, use constrained camera." msgstr "Si activé, utilise la caméra libre. Si non activé, utilise la caméra contrainte." -#: src/slic3r/GUI/Preferences.cpp:121 +#: src/slic3r/GUI/Preferences.cpp:186 msgid "If enabled, use perspective camera. If not enabled, use orthographic camera." msgstr "Si activé, utilise la l'appareil photo en perspective. Si n'est pas activé, utilise l'appareil photo en vue orthographique." -#: src/slic3r/GUI/Preferences.cpp:145 +#: src/slic3r/GUI/Preferences.cpp:222 msgid "If enabled, you can change size of toolbar icons manually." msgstr "Si activé, vous pouvez changer la taille des icônes de la barre d'outils manuellement." -#: src/slic3r/GUI/PresetHints.cpp:29 +#: src/slic3r/GUI/PresetHints.cpp:28 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 "Si le temps de couche estimé est inférieur à ~%1%s, le ventilateur tournera à %2%%% et la vitesse d'impression sera réduite pour qu'au moins %3%s soient passées sur cette couche (cependant, la vitesse ne sera jamais réduite en-dessous de %4%mm/s)." -#: src/slic3r/GUI/PresetHints.cpp:36 +#: src/slic3r/GUI/PresetHints.cpp:35 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 "Si le temps estimé pour la couche est supérieur, mais cependant inférieur à ~%1%s, le ventilateur tournera à une vitesse proportionnellement décroissante entre %2%%% et %3%%%." -#: src/libslic3r/PrintConfig.cpp:901 +#: src/libslic3r/PrintConfig.cpp:943 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 "Si exprimée avec une valeur absolue en mm/s, cette vitesse sera appliquée à tous les déplacements d'impression de la première couche, quel que soit leur type. Si exprimée comme un pourcentage (par exemple 40%), cela modulera la vitesse par défaut." -#: src/libslic3r/PrintConfig.cpp:573 +#: src/libslic3r/PrintConfig.cpp:609 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 "Si le temps d'impression estimé de la couche est inférieur à ce nombre de secondes, le ventilateur sera activé et sa vitesse calculée par interpolation des vitesses minimum et maximum." -#: src/libslic3r/PrintConfig.cpp:1706 +#: src/libslic3r/PrintConfig.cpp:1821 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 "Si le temps d'impression estimé de la couche est inférieur à ce nombre de secondes, la vitesse des déplacements d'impression sera réduite afin d'atteindre cette valeur." -#: src/libslic3r/PrintConfig.cpp:567 +#: src/libslic3r/PrintConfig.cpp:603 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 "Si ceci est activé, le ventilateur ne sera jamais désactivé et sera maintenu au moins à sa vitesse minimum. Utile pour le PLA, mais risqué pour l'ABS." -#: src/slic3r/GUI/Preferences.cpp:49 +#: src/slic3r/GUI/Preferences.cpp:66 msgid "If this is enabled, Slic3r will auto-center objects around the print bed center." msgstr "Si ceci est activé, Slic3r centrera automatique les objets autour du centre du plateau d'impression." -#: src/slic3r/GUI/Preferences.cpp:57 +#: src/slic3r/GUI/Preferences.cpp:74 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 "Si ceci est activé, Slic3r va pré-calculer les objets dès qu'ils sont chargés pour gagner du temps lors de l'export du G-code." -#: src/slic3r/GUI/Preferences.cpp:41 +#: src/slic3r/GUI/Preferences.cpp:54 msgid "If this is enabled, Slic3r will prompt the last output directory instead of the one containing the input files." msgstr "Si ceci est activé, Slic3r affichera le dernier répertoire de sortie au lieu de celui contenant les fichiers d'entrée." -#: src/libslic3r/PrintConfig.cpp:1562 +#: src/slic3r/GUI/Preferences.cpp:125 +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 "Si cela est activé, lors du démarrage de PrusaSlicer et si une autre instance du même PrusaSlicer est déjà en cours d'exécution, cette instance sera réactivée à la place." + +#: src/libslic3r/PrintConfig.cpp:1670 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 "Si vous indiquez une valeur positive, l'axe Z est rapidement élevé à chaque rétraction. Lorsque vous utilisez plusieurs extrudeurs, seul le réglage du premier extrudeur sera pris en compte." -#: src/libslic3r/PrintConfig.cpp:1571 +#: src/libslic3r/PrintConfig.cpp:1679 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 "Si vous indiquez une valeur positive, le levage de l'axe Z ne sera déclenché qu'à partir de la valeur absolue indiquée pour l'axe Z. Vous pouvez modifier ce réglage pour éviter le levage de l'axe Z sur les premières couches." -#: src/libslic3r/PrintConfig.cpp:1580 +#: src/libslic3r/PrintConfig.cpp:1688 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 "Si vous indiquez une valeur positive, le levage de l'axe Z ne sera déclenché que jusqu'à la valeur absolue indiquée pour l'axe Z. Vous pouvez modifier ce réglage pour limiter le levage de l'axe Z aux premières couches." -#: src/libslic3r/PrintConfig.cpp:1454 +#: src/libslic3r/PrintConfig.cpp:1562 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. Scripts will be passed the absolute path to the G-code file as the first argument, and they can access the Slic3r config settings by reading environment variables." msgstr "Si vous voulez traiter le G-code de sortie à l'aide de scripts personnalisés, listez simplement leurs chemins absolus ici. Séparez les divers scripts avec un point virgule. Les scripts vont recevoir en premier argument le chemin absolu du fichier G-code, et ils peuvent accéder aux réglages de configuration de Slic3r en lisant des variables d'environnement." -#: src/libslic3r/PrintConfig.cpp:530 +#: src/libslic3r/PrintConfig.cpp:566 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 of each extruder with respect to the first one. It expects positive coordinates (they will be subtracted from the XY coordinate)." msgstr "Si le firmware de votre imprimante ne gère pas le décalage de l'extrudeur, c'est au G-code d'en tenir compte. Cette option vous permet de spécifier le décalage de chaque extrudeur par rapport au premier. Des valeurs positives sont attendues (elles seront soustraites des coordonnées XY)." -#: src/libslic3r/PrintConfig.cpp:2169 +#: src/libslic3r/PrintConfig.cpp:2312 msgid "If your firmware requires relative E values, check this, otherwise leave it unchecked. Most firmwares use absolute values." msgstr "Si votre firmware requiert des valeurs relatives pour E, cochez cette case, sinon laissez-la décochée. La plupart des firmwares utilisent des valeurs absolues." -#: src/libslic3r/PrintConfig.cpp:3485 +#: src/libslic3r/PrintConfig.cpp:1219 +msgid "Ignore" +msgstr "Ignorer" + +#: src/libslic3r/PrintConfig.cpp:3684 msgid "Ignore non-existent config files" msgstr "Ignorer les fichiers de configuration non-existants" -#: src/slic3r/GUI/MainFrame.cpp:464 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:192 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:173 +msgid "Ignores facets facing away from the camera." +msgstr "Ignore les facettes opposées à la caméra." + +#: src/slic3r/GUI/MainFrame.cpp:1055 msgid "Import &Config" msgstr "Importer la &Configuration" -#: src/slic3r/GUI/MainFrame.cpp:471 +#: src/slic3r/GUI/MainFrame.cpp:1062 msgid "Import Config &Bundle" msgstr "Importer le &Lot de Configuration" -#: src/slic3r/GUI/MainFrame.cpp:467 +#: src/slic3r/GUI/MainFrame.cpp:1058 msgid "Import Config from &project" msgstr "Importer la Configuration depuis le &projet" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:119 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:112 msgid "Import Config from ini/amf/3mf/gcode" msgstr "Importer une Configuration depuis ini/amf/3mf/gcode" -#: src/slic3r/GUI/Plater.cpp:4603 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:39 +msgid "Import file" +msgstr "Importer le fichier" + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:46 +msgid "Import model and profile" +msgstr "Importer le modèle et le profil" + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:48 +msgid "Import model only" +msgstr "Importer le modèle uniquement" + +#: src/slic3r/GUI/Plater.cpp:4655 msgid "Import Object" msgstr "Importer l'Objet" -#: src/slic3r/GUI/Plater.cpp:4607 +#: src/slic3r/GUI/Plater.cpp:4659 msgid "Import Objects" msgstr "Importer les Objets" @@ -3596,15 +4126,50 @@ msgstr "Importer les Objets" msgid "Import of the repaired 3mf file failed" msgstr "Échec de l'import du fichier 3mf réparé" -#: src/slic3r/GUI/MainFrame.cpp:460 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:47 +msgid "Import profile only" +msgstr "Importer le profil uniquement" + +#: src/slic3r/GUI/MainFrame.cpp:1050 +msgid "Import SL1 archive" +msgstr "Importer l'archive SL1" + +#: src/slic3r/GUI/Plater.cpp:1561 +msgid "Import SLA archive" +msgstr "Importer l'archive SLA" + +#: src/slic3r/GUI/MainFrame.cpp:1046 +msgid "Import STL (imperial units)" +msgstr "Importer le STL (unités impériales)" + +#: src/slic3r/GUI/MainFrame.cpp:1042 msgid "Import STL/OBJ/AM&F/3MF" msgstr "Importer STL/OBJ/AM&F/3MF" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:118 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:111 msgid "Import STL/OBJ/AMF/3MF without config, keep plater" msgstr "Importer un STL/OBJ/AMF/3MF sans configuration, conserver le plateau" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3422 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:159 +msgid "Importing canceled." +msgstr "Importation annulée." + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:160 +msgid "Importing done." +msgstr "Importation terminée." + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:135 +msgid "Importing SLA archive" +msgstr "Importation de l'archive SLA" + +#: 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 "in" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:3885 #, c-format msgid "In this mode you can select only other %s Items%s" msgstr "Dans ce mode vous ne pouvez sélectionner que d'autres %s Items %s" @@ -3613,25 +4178,25 @@ msgstr "Dans ce mode vous ne pouvez sélectionner que d'autres %s Items %s" msgid "Incompatible bundles:" msgstr "Lots incompatibles :" +#: src/slic3r/GUI/PresetComboBoxes.cpp:241 +msgid "Incompatible presets" +msgstr "Préréglages incompatibles" + #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:75 #, c-format msgid "Incompatible with this %s" msgstr "Incompatible avec ce %s" -#: src/slic3r/GUI/Plater.cpp:4685 +#: src/slic3r/GUI/Plater.cpp:4790 msgid "Increase Instances" msgstr "Augmenter les Instances" -#: src/slic3r/GUI/GLCanvas3D.cpp:264 +#: src/slic3r/GUI/GLCanvas3D.cpp:251 msgid "Increase/decrease edit area" msgstr "Augmenter/diminuer la zone d'édition" -#: src/slic3r/GUI/Plater.cpp:2922 -msgid "Indexing hollowed object" -msgstr "Indexation de l'objet évidé" - #. TRN Description for "UNLOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:3258 +#: src/slic3r/GUI/Tab.cpp:3695 msgid "" "indicates that some settings were changed and are not equal to the system (or default) values for the current option group.\n" "Click the UNLOCKED LOCK icon to reset all settings for current option group to the system (or default) values." @@ -3640,12 +4205,12 @@ msgstr "" "Cliquez sur l'icône CADENAS OUVERT pour régler tous les paramètres pour le groupe d'options actuel sur les valeurs du système (ou par défaut)." #. TRN Description for "LOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:3254 +#: src/slic3r/GUI/Tab.cpp:3691 msgid "indicates that the settings are the same as the system (or default) values for the current option group" msgstr "indique que les paramètres sont les mêmes que les valeurs système (ou par défaut) pour le groupe d'options en cours" #. TRN Description for "BACK ARROW" -#: src/slic3r/GUI/Tab.cpp:3270 +#: src/slic3r/GUI/Tab.cpp:3707 msgid "" "indicates that the settings were changed and are not equal to the last saved preset for the current option group.\n" "Click the BACK ARROW icon to reset all settings for the current option group to the last saved preset." @@ -3653,419 +4218,475 @@ msgstr "" "indique que les paramètres ont été changés et qu'ils ne sont pas identiques au dernier préréglage enregistré du groupe d'options en cours.\n" "Cliquez sur l'icône FLÈCHE ARRIÈRE pour restaurer tous les paramètres du groupe d'options en cours avec les valeurs du dernier préréglage enregistré." -#: src/slic3r/GUI/ConfigManipulation.cpp:211 -#: src/slic3r/GUI/GUI_ObjectList.cpp:35 src/slic3r/GUI/GUI_ObjectList.cpp:96 -#: src/slic3r/GUI/GUI_ObjectList.cpp:614 src/slic3r/GUI/Plater.cpp:527 -#: src/slic3r/GUI/Tab.cpp:1091 src/slic3r/GUI/Tab.cpp:1092 -#: src/libslic3r/PrintConfig.cpp:203 src/libslic3r/PrintConfig.cpp:416 -#: src/libslic3r/PrintConfig.cpp:436 src/libslic3r/PrintConfig.cpp:776 -#: src/libslic3r/PrintConfig.cpp:790 src/libslic3r/PrintConfig.cpp:827 -#: src/libslic3r/PrintConfig.cpp:981 src/libslic3r/PrintConfig.cpp:991 -#: src/libslic3r/PrintConfig.cpp:1009 src/libslic3r/PrintConfig.cpp:1028 -#: src/libslic3r/PrintConfig.cpp:1047 src/libslic3r/PrintConfig.cpp:1728 -#: src/libslic3r/PrintConfig.cpp:1745 +#: src/slic3r/GUI/ConfigManipulation.cpp:210 +#: 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:393 +#: src/slic3r/GUI/Tab.cpp:1413 src/slic3r/GUI/Tab.cpp:1414 +#: src/libslic3r/PrintConfig.cpp:237 src/libslic3r/PrintConfig.cpp:450 +#: src/libslic3r/PrintConfig.cpp:472 src/libslic3r/PrintConfig.cpp:812 +#: src/libslic3r/PrintConfig.cpp:826 src/libslic3r/PrintConfig.cpp:863 +#: src/libslic3r/PrintConfig.cpp:1025 src/libslic3r/PrintConfig.cpp:1035 +#: src/libslic3r/PrintConfig.cpp:1053 src/libslic3r/PrintConfig.cpp:1072 +#: src/libslic3r/PrintConfig.cpp:1091 src/libslic3r/PrintConfig.cpp:1843 +#: src/libslic3r/PrintConfig.cpp:1860 msgid "Infill" msgstr "Remplissage" -#: src/slic3r/GUI/PresetHints.cpp:174 +#: src/slic3r/GUI/PresetHints.cpp:173 msgid "infill" msgstr "remplissage" -#: src/libslic3r/PrintConfig.cpp:1021 +#: src/libslic3r/PrintConfig.cpp:1065 msgid "Infill before perimeters" msgstr "Remplissage avant les périmètres" -#: src/libslic3r/PrintConfig.cpp:1001 +#: src/libslic3r/PrintConfig.cpp:1045 msgid "Infill extruder" msgstr "Extrudeur pour le remplissage" -#: src/libslic3r/PrintConfig.cpp:1036 +#: src/libslic3r/PrintConfig.cpp:1080 msgid "Infill/perimeters overlap" msgstr "Chevauchement remplissage/périmètres" -#: src/libslic3r/Print.cpp:1584 +#: src/libslic3r/Print.cpp:1610 msgid "Infilling layers" msgstr "Remplissage des couches" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3430 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3505 src/slic3r/GUI/Plater.cpp:141 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3893 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3968 src/slic3r/GUI/Plater.cpp:147 msgid "Info" msgstr "Info" -#: src/libslic3r/PrintConfig.cpp:1057 +#: src/slic3r/GUI/GUI_App.cpp:1087 src/slic3r/GUI/Tab.cpp:3435 +msgid "Information" +msgstr "Information" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:547 +msgid "Infornation" +msgstr "Information" + +#: src/libslic3r/PrintConfig.cpp:1101 msgid "Inherits profile" msgstr "Hérite du profil" -#: src/libslic3r/SLAPrint.cpp:653 +#: src/libslic3r/SLAPrint.cpp:667 msgid "Initial exposition time is out of printer profile bounds." msgstr "Le temps d'exposition initial est en dehors des limites du profil d'imprimante." -#: src/libslic3r/PrintConfig.cpp:2564 src/libslic3r/PrintConfig.cpp:2565 +#: src/libslic3r/PrintConfig.cpp:2707 src/libslic3r/PrintConfig.cpp:2708 msgid "Initial exposure time" msgstr "Temps d'exposition initial" -#: src/libslic3r/PrintConfig.cpp:2482 src/libslic3r/PrintConfig.cpp:2483 +#: src/libslic3r/PrintConfig.cpp:2625 src/libslic3r/PrintConfig.cpp:2626 msgid "Initial layer height" msgstr "Hauteur de couche initiale" -#: src/slic3r/GUI/Field.cpp:204 +#: src/slic3r/GUI/Field.cpp:252 src/slic3r/GUI/Field.cpp:1370 msgid "Input value is out of range" msgstr "La valeur entrée est hors plage" -#: src/slic3r/GUI/GUI_App.cpp:800 +#: src/slic3r/GUI/GUI_App.cpp:1480 msgid "Inspect / activate configuration snapshots" msgstr "Inspecter / activer les instantanés de configuration" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:60 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:216 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:62 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:218 #, c-format msgid "Instance %d" msgstr "Instance %d" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2500 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2892 msgid "Instance manipulation" msgstr "Manipulation d'instance" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:56 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:58 msgid "Instances" msgstr "Instances" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1091 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3781 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1215 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4244 msgid "Instances to Separated Objects" msgstr "Instances vers les Objets Séparés" -#: src/libslic3r/PrintConfig.cpp:1973 +#: src/libslic3r/PrintConfig.cpp:2115 msgid "Interface layers" msgstr "Couches d'interface" -#: src/libslic3r/PrintConfig.cpp:1957 +#: src/libslic3r/PrintConfig.cpp:2099 msgid "Interface loops" msgstr "Boucles d'interface" -#: src/libslic3r/PrintConfig.cpp:1982 +#: src/libslic3r/PrintConfig.cpp:2124 msgid "Interface pattern spacing" msgstr "Espacement du motif d'interface" -#: src/libslic3r/PrintConfig.cpp:1071 +#: src/libslic3r/PrintConfig.cpp:1115 msgid "Interface shells" msgstr "Coques d'interface" -#: src/libslic3r/Zipper.cpp:84 +#: src/libslic3r/miniz_extension.cpp:143 msgid "internal error" msgstr "erreur interne" -#: src/slic3r/GUI/GUI_Preview.cpp:240 src/libslic3r/ExtrusionEntity.cpp:313 +#: src/slic3r/GUI/GUI_Preview.cpp:304 src/libslic3r/ExtrusionEntity.cpp:317 +#: src/libslic3r/ExtrusionEntity.cpp:342 msgid "Internal infill" msgstr "Remplissage interne" -#: src/slic3r/GUI/Plater.cpp:3106 +#: src/slic3r/GUI/BedShapeDialog.cpp:145 +msgid "Invalid" +msgstr "Invalide" + +#: src/slic3r/GUI/Plater.cpp:2906 src/slic3r/GUI/Plater.cpp:3583 msgid "Invalid data" msgstr "Donnée non valide" -#: src/slic3r/GUI/BedShapeDialog.cpp:494 src/slic3r/GUI/BedShapeDialog.cpp:543 -#: src/slic3r/GUI/BedShapeDialog.cpp:566 +#: src/slic3r/GUI/BedShapeDialog.cpp:570 src/slic3r/GUI/BedShapeDialog.cpp:619 +#: src/slic3r/GUI/BedShapeDialog.cpp:642 msgid "Invalid file format." msgstr "Format de fichier non valide." -#: src/libslic3r/Zipper.cpp:80 +#: src/libslic3r/miniz_extension.cpp:139 msgid "invalid filename" msgstr "nom de fichier non valide" -#: src/slic3r/GUI/ConfigManipulation.cpp:319 +#: src/slic3r/GUI/ConfigManipulation.cpp:324 msgid "Invalid Head penetration" msgstr "Pénétration de Tête invalide" -#: src/libslic3r/Zipper.cpp:48 +#: src/libslic3r/miniz_extension.cpp:107 msgid "invalid header or archive is corrupted" msgstr "entête non valide ou archive corrompue" -#: src/slic3r/GUI/Field.cpp:195 src/slic3r/GUI/Field.cpp:226 -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:376 +#: 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." msgstr "Entrée numérique non valide." -#: src/libslic3r/Zipper.cpp:78 +#: src/libslic3r/miniz_extension.cpp:137 msgid "invalid parameter" msgstr "paramètre non valide" -#: src/slic3r/GUI/ConfigManipulation.cpp:332 +#: src/slic3r/GUI/ConfigManipulation.cpp:337 msgid "Invalid pinhead diameter" msgstr "Diamètre de tête d'épingle non valide" +#: src/slic3r/GUI/GUI_ObjectList.cpp:94 src/slic3r/GUI/GUI_ObjectList.cpp:653 +#: src/slic3r/GUI/GUI_Preview.cpp:307 src/slic3r/GUI/Tab.cpp:1420 +#: src/libslic3r/ExtrusionEntity.cpp:320 src/libslic3r/ExtrusionEntity.cpp:348 +#: src/libslic3r/PrintConfig.cpp:1126 src/libslic3r/PrintConfig.cpp:1132 +#: src/libslic3r/PrintConfig.cpp:1146 src/libslic3r/PrintConfig.cpp:1156 +msgid "Ironing" +msgstr "Lissage" + +#: src/libslic3r/PrintConfig.cpp:1131 src/libslic3r/PrintConfig.cpp:1133 +msgid "Ironing Type" +msgstr "Type de lissage" + +#: src/slic3r/GUI/GUI_App.cpp:243 +msgid "is based on Slic3r by Alessandro Ranellucci and the RepRap community." +msgstr "est basé sur Slic3r par Alessandro Ranellucci et la communauté RepRap." + #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:258 +#: src/slic3r/GUI/AboutDialog.cpp:283 src/slic3r/GUI/GUI_App.cpp:244 msgid "is licensed under the" msgstr "est sous licence" -#: src/slic3r/GUI/Tab.cpp:2941 -msgid "is not compatible with print profile" -msgstr "n'est pas compatible avec le profil d'impression" - -#: src/slic3r/GUI/Tab.cpp:2940 -msgid "is not compatible with printer" -msgstr "n'est pas compatible avec l'imprimante" - -#: src/slic3r/GUI/MainFrame.cpp:658 +#: src/slic3r/GUI/MainFrame.cpp:955 src/slic3r/GUI/MainFrame.cpp:1275 msgid "Iso" msgstr "Isométrique" -#: src/slic3r/GUI/MainFrame.cpp:658 +#: src/slic3r/GUI/MainFrame.cpp:955 src/slic3r/GUI/MainFrame.cpp:1275 msgid "Iso View" msgstr "Vue Isométrique" -#: src/slic3r/GUI/Tab.cpp:964 +#: src/slic3r/GUI/Tab.cpp:1282 msgid "It can't be deleted or modified." msgstr "Il ne peut être supprimé ou modifié." -#: src/slic3r/GUI/Plater.cpp:3321 +#: src/slic3r/GUI/Plater.cpp:3124 msgid "It is not allowed to change the file to reload" msgstr "Il n'est pas autorisé de modifier le fichier à recharger" -#: src/libslic3r/PrintConfig.cpp:974 +#: src/libslic3r/PrintConfig.cpp:1018 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 "Il peut être intéressant d'augmenter le courant du moteur de l'extrudeur pendant la séquence d'échange de filament pour permettre un débit d'expulsion rapide et pour compenser la résistance lors du chargement d'un filament avec une pointe mal taillée." -#: src/slic3r/GUI/GUI_App.cpp:1084 src/slic3r/GUI/Tab.cpp:2958 +#: src/slic3r/GUI/Tab.cpp:3413 +msgid "It's a last preset for this physical printer." +msgstr "C'est le dernier préréglage pour cette imprimante physique." + +#: src/slic3r/GUI/GUI_App.cpp:1876 src/slic3r/GUI/Tab.cpp:3187 msgid "It's impossible to print multi-part object(s) with SLA technology." msgstr "Il est impossible d'imprimer un (des) objet(s) en plusieurs parties avec la technologie SLA." -#: src/slic3r/GUI/Tab.cpp:2229 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:601 +msgid "It's not possible to delete the last related preset for the printer." +msgstr "Il n'est pas possible de supprimer le dernier préréglage associé pour l'imprimante." + +#: src/slic3r/GUI/Tab.cpp:2398 msgid "Jerk limits" msgstr "Limites de mouvements brusques" -#: src/libslic3r/PrintConfig.cpp:1649 +#: src/libslic3r/PrintConfig.cpp:1757 msgid "Jitter" msgstr "Gigue" -#: src/slic3r/GUI/DoubleSlider.cpp:957 src/slic3r/GUI/DoubleSlider.cpp:1529 -#: src/slic3r/GUI/DoubleSlider.cpp:1651 +#: src/slic3r/GUI/DoubleSlider.cpp:1077 src/slic3r/GUI/DoubleSlider.cpp:1721 +#: src/slic3r/GUI/DoubleSlider.cpp:1852 src/slic3r/GUI/DoubleSlider.cpp:1856 msgid "Jump to height" msgstr "Sauter à la hauteur" -#: src/slic3r/GUI/DoubleSlider.cpp:955 +#: src/slic3r/GUI/DoubleSlider.cpp:1075 #, c-format msgid "Jump to height %s or Set extruder sequence for the entire print" msgstr "Sauter à la hauteur %s ou Définir la séquence d'extrusion pour toute l'impression" -#: src/libslic3r/PrintConfig.cpp:566 +#: src/slic3r/GUI/DoubleSlider.cpp:1071 src/slic3r/GUI/DoubleSlider.cpp:1852 +msgid "Jump to move" +msgstr "Sauter pour bouger" + +#: src/slic3r/GUI/SavePresetDialog.cpp:315 +msgid "Just switch to \"%1%\" preset" +msgstr "Passez simplement au préréglage \"%1%\"" + +#: src/libslic3r/PrintConfig.cpp:602 msgid "Keep fan always on" msgstr "Garder le ventilateur toujours actif" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:169 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:171 msgid "Keep lower part" msgstr "Garder la partie du bas" -#: src/slic3r/GUI/GLCanvas3D.cpp:304 +#: src/slic3r/GUI/GLCanvas3D.cpp:290 msgid "Keep min" -msgstr "Garder au minimum" +msgstr "Conserver min" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:168 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:170 msgid "Keep upper part" msgstr "Garder la partie du haut" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:41 src/slic3r/GUI/MainFrame.cpp:708 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:37 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:39 src/slic3r/GUI/MainFrame.cpp:941 +#: src/slic3r/GUI/MainFrame.cpp:1332 msgid "Keyboard Shortcuts" msgstr "Raccourcis Clavier" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:245 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:259 msgid "Keyboard shortcuts" msgstr "Raccourcis clavier" -#: src/libslic3r/PrintConfig.cpp:2498 +#: src/libslic3r/PrintConfig.cpp:2641 msgid "kg" msgstr "kg" -#: src/libslic3r/PrintConfig.cpp:965 +#: src/libslic3r/PrintConfig.cpp:1009 msgid "Label objects" msgstr "Marquer les objets" -#: src/libslic3r/PrintConfig.cpp:2399 +#: src/libslic3r/PrintConfig.cpp:2542 msgid "Landscape" msgstr "Paysage" -#: src/slic3r/GUI/GUI_App.cpp:629 +#: src/slic3r/GUI/GUI_App.cpp:1295 msgid "Language" msgstr "Langue" -#: src/slic3r/GUI/GUI_App.cpp:885 +#: src/slic3r/GUI/GUI_App.cpp:1605 src/slic3r/GUI/GUI_App.cpp:1614 msgid "Language selection" msgstr "Sélection de la langue" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2140 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2242 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2307 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2408 msgid "Last instance of an object cannot be deleted." msgstr "La dernière instance d'un objet ne peut être supprimée." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3418 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3881 msgid "Layer" msgstr "Couche" -#: src/slic3r/GUI/ConfigManipulation.cpp:49 -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:27 src/slic3r/GUI/Tab.cpp:1049 +#: src/slic3r/GUI/ConfigManipulation.cpp:48 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:29 src/slic3r/GUI/Tab.cpp:1371 #: src/libslic3r/PrintConfig.cpp:71 msgid "Layer height" msgstr "Hauteur de couche" -#: src/libslic3r/Print.cpp:1427 +#: src/libslic3r/Print.cpp:1453 msgid "Layer height can't be greater than nozzle diameter" msgstr "La hauteur de couche ne peut pas être supérieure au diamètre de la buse" -#: src/slic3r/GUI/Tab.cpp:2362 +#: src/slic3r/GUI/Tab.cpp:2531 msgid "Layer height limits" msgstr "Limites de hauteur de couche" -#: src/slic3r/GUI/ConfigWizard.cpp:2015 -msgid "Layer height:" -msgstr "Hauteur de couche :" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:2488 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2880 msgid "Layer range Settings to modify" msgstr "Réglages de zone de Couche à modifier" #: src/slic3r/GUI/ExtruderSequenceDialog.cpp:52 -#: src/libslic3r/PrintConfig.cpp:362 src/libslic3r/PrintConfig.cpp:994 -#: src/libslic3r/PrintConfig.cpp:1505 src/libslic3r/PrintConfig.cpp:1690 -#: src/libslic3r/PrintConfig.cpp:1750 src/libslic3r/PrintConfig.cpp:1930 -#: src/libslic3r/PrintConfig.cpp:1976 +#: src/libslic3r/PrintConfig.cpp:396 src/libslic3r/PrintConfig.cpp:1038 +#: src/libslic3r/PrintConfig.cpp:1613 src/libslic3r/PrintConfig.cpp:1798 +#: src/libslic3r/PrintConfig.cpp:1865 src/libslic3r/PrintConfig.cpp:2072 +#: src/libslic3r/PrintConfig.cpp:2118 msgid "layers" msgstr "couches" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:67 src/slic3r/GUI/Tab.cpp:3512 -#: src/slic3r/GUI/Tab.cpp:3600 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:69 src/slic3r/GUI/Tab.cpp:3928 +#: src/slic3r/GUI/Tab.cpp:4010 msgid "Layers" msgstr "Couches" -#: src/slic3r/GUI/Tab.cpp:1048 src/slic3r/GUI/Tab.cpp:3598 +#: src/slic3r/GUI/Tab.cpp:1370 src/slic3r/GUI/Tab.cpp:4008 msgid "Layers and perimeters" msgstr "Couches et périmètres" -#: src/slic3r/GUI/GUI_ObjectList.cpp:34 src/slic3r/GUI/GUI_ObjectList.cpp:95 -#: src/slic3r/GUI/GUI_ObjectList.cpp:613 src/libslic3r/PrintConfig.cpp:72 -#: src/libslic3r/PrintConfig.cpp:175 src/libslic3r/PrintConfig.cpp:184 -#: src/libslic3r/PrintConfig.cpp:408 src/libslic3r/PrintConfig.cpp:470 -#: src/libslic3r/PrintConfig.cpp:478 src/libslic3r/PrintConfig.cpp:890 -#: src/libslic3r/PrintConfig.cpp:1075 src/libslic3r/PrintConfig.cpp:1374 -#: src/libslic3r/PrintConfig.cpp:1441 src/libslic3r/PrintConfig.cpp:1622 -#: src/libslic3r/PrintConfig.cpp:2074 src/libslic3r/PrintConfig.cpp:2133 -#: src/libslic3r/PrintConfig.cpp:2142 +#: 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:209 src/libslic3r/PrintConfig.cpp:218 +#: src/libslic3r/PrintConfig.cpp:442 src/libslic3r/PrintConfig.cpp:506 +#: src/libslic3r/PrintConfig.cpp:514 src/libslic3r/PrintConfig.cpp:932 +#: src/libslic3r/PrintConfig.cpp:1119 src/libslic3r/PrintConfig.cpp:1482 +#: src/libslic3r/PrintConfig.cpp:1549 src/libslic3r/PrintConfig.cpp:1730 +#: src/libslic3r/PrintConfig.cpp:2217 src/libslic3r/PrintConfig.cpp:2276 +#: src/libslic3r/PrintConfig.cpp:2285 msgid "Layers and Perimeters" msgstr "Couches et Périmètres" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:222 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:225 msgid "Layers Slider" msgstr "Barre de défilement des couches" -#: src/slic3r/GUI/OptionsGroup.cpp:258 +#: src/slic3r/GUI/OptionsGroup.cpp:293 msgctxt "Layers" msgid "Bottom" msgstr "Du bas" -#: src/slic3r/GUI/OptionsGroup.cpp:258 +#: src/slic3r/GUI/OptionsGroup.cpp:293 msgctxt "Layers" msgid "Top" msgstr "Du haut" -#: src/slic3r/GUI/MainFrame.cpp:671 +#: src/slic3r/GUI/Preferences.cpp:440 +msgid "Layout Options" +msgstr "Options de disposition" + +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:48 +msgid "Leaving Paint-on supports" +msgstr "Laisser les Supports peints" + +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:47 +msgid "Leaving Seam painting" +msgstr "Laisser la Peinture de jointure" + +#: src/slic3r/GUI/MainFrame.cpp:968 src/slic3r/GUI/MainFrame.cpp:1288 msgid "Left" msgstr "Gauche" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1363 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1366 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1367 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1210 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1213 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1214 msgid "Left click" msgstr "Clic gauche" -#: src/slic3r/GUI/GLCanvas3D.cpp:237 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:46 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:29 +msgid "Left mouse button" +msgstr "Bouton gauche de la souris" + +#: src/slic3r/GUI/GLCanvas3D.cpp:233 msgid "Left mouse button:" msgstr "Bouton gauche de souris :" -#: src/slic3r/GUI/MainFrame.cpp:671 +#: src/slic3r/GUI/MainFrame.cpp:968 src/slic3r/GUI/MainFrame.cpp:1288 msgid "Left View" msgstr "Vue Gauche" -#: src/slic3r/GUI/GUI_Preview.cpp:257 +#: src/slic3r/GUI/GUI_Preview.cpp:339 msgid "Legend" msgstr "Légende" -#: src/libslic3r/PrintConfig.cpp:1543 src/libslic3r/PrintConfig.cpp:1551 +#: src/slic3r/GUI/GUI_Preview.cpp:1480 +msgid "Legend/Estimated printing time" +msgstr "Légende/Temps d'impression estimé" + +#: src/libslic3r/PrintConfig.cpp:1651 src/libslic3r/PrintConfig.cpp:1659 msgid "Length" msgstr "Longueur" -#: src/libslic3r/PrintConfig.cpp:328 +#: src/libslic3r/PrintConfig.cpp:362 msgid "Length of the cooling tube to limit space for cooling moves inside it." msgstr "Longueur du tube de refroidissement pour limiter l'espace pour les déplacements de refroidissement à l'intérieur de celui-ci." #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:129 +#: src/slic3r/GUI/AboutDialog.cpp:141 msgid "License agreements of all following programs (libraries) are part of application license agreement" msgstr "Les contrats de licence de tous les programmes suivants (bibliothèques) font partie de la mise en oeuvre du contrat de licence" -#: src/libslic3r/PrintConfig.cpp:1561 +#: src/libslic3r/PrintConfig.cpp:1669 msgid "Lift Z" msgstr "Levage de l'axe Z" -#: src/libslic3r/PrintConfig.cpp:848 +#: src/libslic3r/PrintConfig.cpp:886 msgid "Line" msgstr "Ligne" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1427 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1558 msgid "Load" msgstr "Charger" -#: src/slic3r/GUI/MainFrame.cpp:460 +#: src/slic3r/GUI/MainFrame.cpp:1042 msgid "Load a model" msgstr "Charger un modèle" -#: src/libslic3r/PrintConfig.cpp:3505 +#: src/slic3r/GUI/MainFrame.cpp:1046 +msgid "Load an model saved with imperial units" +msgstr "Charger un modèle enregistré avec des unités impériales" + +#: src/slic3r/GUI/MainFrame.cpp:1058 +msgid "Load an SL1 archive" +msgstr "Charger une archive SL1" + +#: src/libslic3r/PrintConfig.cpp:3710 msgid "Load and store settings at the given directory. This is useful for maintaining different profiles or including configurations from a network storage." msgstr "Charger et stocker les réglages dans le répertoire donné. Ceci est utile pour conserver différents profils ou inclure des configurations depuis un stockage réseau." -#: src/libslic3r/PrintConfig.cpp:3489 +#: src/libslic3r/PrintConfig.cpp:3688 msgid "Load config file" msgstr "Charger le fichier de configuration" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:120 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:113 msgid "Load Config from ini/amf/3mf/gcode and merge" msgstr "Charger une configuration à partir d'un ini/amf/3mf/gcode et fusionner" -#: src/slic3r/GUI/MainFrame.cpp:467 +#: src/slic3r/GUI/MainFrame.cpp:1058 msgid "Load configuration from project file" msgstr "Charger la configuration depuis le fichier du projet" -#: src/libslic3r/PrintConfig.cpp:3490 +#: src/libslic3r/PrintConfig.cpp:3689 msgid "Load configuration from the specified file. It can be used more than once to load options from multiple files." msgstr "Charger la configuration depuis le fichier spécifié. Ceci peut être utilisé plusieurs fois afin de charger des options depuis plusieurs fichiers." -#: src/slic3r/GUI/MainFrame.cpp:464 +#: src/slic3r/GUI/MainFrame.cpp:1055 msgid "Load exported configuration file" msgstr "Charger le fichier de configuration exporté" -#: src/slic3r/GUI/Plater.cpp:1395 -msgid "Load File" -msgstr "Charger le Fichier" - -#: src/slic3r/GUI/Plater.cpp:1399 -msgid "Load Files" -msgstr "Charger les Fichiers" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1879 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2038 msgid "Load Part" msgstr "Charger une Partie" -#: src/slic3r/GUI/MainFrame.cpp:471 +#: src/slic3r/GUI/MainFrame.cpp:1062 msgid "Load presets from a bundle" msgstr "Charger les préréglages à partir d'un lot" -#: src/slic3r/GUI/Plater.cpp:4575 +#: src/slic3r/GUI/Plater.cpp:4627 msgid "Load Project" msgstr "Charger le Projet" -#: src/slic3r/GUI/BedShapeDialog.cpp:102 +#: src/slic3r/GUI/BedShapeDialog.cpp:243 msgid "Load shape from STL..." msgstr "Charger une forme depuis un STL..." -#: src/slic3r/GUI/BedShapeDialog.cpp:182 src/slic3r/GUI/BedShapeDialog.cpp:261 +#: src/slic3r/GUI/BedShapeDialog.cpp:325 src/slic3r/GUI/BedShapeDialog.cpp:405 msgid "Load..." msgstr "Charger..." @@ -4073,19 +4694,27 @@ msgstr "Charger..." msgid "loaded" msgstr "chargé" -#: src/slic3r/GUI/Plater.cpp:2426 +#: src/slic3r/GUI/Plater.cpp:2388 msgid "Loaded" msgstr "Chargé" -#: src/slic3r/GUI/Plater.cpp:2273 +#: src/slic3r/GUI/Plater.cpp:2216 msgid "Loading" msgstr "Chargement" -#: src/slic3r/GUI/GUI_App.cpp:474 +#: src/slic3r/GUI/GUI_App.cpp:797 +msgid "Loading configuration" +msgstr "Chargement de la configuration" + +#: src/slic3r/GUI/Plater.cpp:2226 +msgid "Loading file" +msgstr "Chargement du fichier" + +#: src/slic3r/GUI/GUI_App.cpp:1125 msgid "Loading of a mode view" msgstr "Chargement d'un mode de vue" -#: src/slic3r/GUI/GUI_App.cpp:466 +#: src/slic3r/GUI/GUI_App.cpp:1120 msgid "Loading of current presets" msgstr "Chargement de préréglages actuels" @@ -4094,101 +4723,117 @@ msgstr "Chargement de préréglages actuels" msgid "Loading repaired model" msgstr "Chargement du modèle réparé" -#: src/libslic3r/PrintConfig.cpp:607 +#: src/libslic3r/PrintConfig.cpp:643 msgid "Loading speed" msgstr "Vitesse de chargement" -#: src/libslic3r/PrintConfig.cpp:615 +#: src/libslic3r/PrintConfig.cpp:651 msgid "Loading speed at the start" msgstr "Vitesse de chargement au départ" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:63 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:106 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:69 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:112 msgid "Local coordinates" msgstr "Coordonnées locaux" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:48 msgid "Lock supports under new islands" msgstr "Verrouiller les supports sous de nouveaux îlots" -#: src/slic3r/GUI/Tab.cpp:3252 +#: src/slic3r/GUI/Tab.cpp:3689 msgid "LOCKED LOCK" msgstr "CADENAS FERMÉ" -#: src/slic3r/GUI/Tab.cpp:3280 +#: src/slic3r/GUI/Tab.cpp:3717 msgid "LOCKED LOCK icon indicates that the settings are the same as the system (or default) values for the current option group" msgstr "L'icône CADENAS FERMÉ indique que les réglages sont les mêmes que les valeurs système (ou par défaut) pour le groupe d'options actuel" -#: src/slic3r/GUI/Tab.cpp:3296 +#: src/slic3r/GUI/Tab.cpp:3733 msgid "LOCKED LOCK icon indicates that the value is the same as the system (or default) value." msgstr "L'icône CADENAS FERMÉ indique que la valeur est la même que la valeur système (ou par défaut)." -#: src/libslic3r/PrintConfig.cpp:3508 +#: src/libslic3r/PrintConfig.cpp:3713 msgid "Logging level" msgstr "Niveau d'enregistrement" -#: src/libslic3r/PrintConfig.cpp:1695 +#: src/libslic3r/PrintConfig.cpp:1810 msgid "Loops (minimum)" msgstr "Boucles (minimum)" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:206 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:208 msgid "Lower Layer" msgstr "Couche Inférieure" -#: src/slic3r/GUI/Tab.cpp:2188 src/slic3r/GUI/Tab.cpp:2273 -#: src/libslic3r/PrintConfig.cpp:1129 src/libslic3r/PrintConfig.cpp:1146 -#: src/libslic3r/PrintConfig.cpp:1163 src/libslic3r/PrintConfig.cpp:1179 -#: src/libslic3r/PrintConfig.cpp:1189 src/libslic3r/PrintConfig.cpp:1199 -#: src/libslic3r/PrintConfig.cpp:1209 +#: src/slic3r/GUI/Tab.cpp:2346 src/slic3r/GUI/Tab.cpp:2442 +#: src/libslic3r/PrintConfig.cpp:1202 src/libslic3r/PrintConfig.cpp:1237 +#: src/libslic3r/PrintConfig.cpp:1254 src/libslic3r/PrintConfig.cpp:1271 +#: src/libslic3r/PrintConfig.cpp:1287 src/libslic3r/PrintConfig.cpp:1297 +#: src/libslic3r/PrintConfig.cpp:1307 src/libslic3r/PrintConfig.cpp:1317 msgid "Machine limits" msgstr "Limites de la machine" -#: src/slic3r/GUI/Plater.cpp:166 +#: src/slic3r/GUI/Tab.cpp:3667 +msgid "Machine limits are not set, therefore the print time estimate may not be accurate." +msgstr "Les limites de la machine ne sont pas définies, par conséquent l'estimation du temps d'impression peut ne pas être précise." + +#: src/slic3r/GUI/Tab.cpp:3660 +msgid "Machine limits will be emitted to G-code and used to estimate print time." +msgstr "Les limites de la machine seront émises dans le G-code et utilisées pour estimer le temps d'impression." + +#: src/slic3r/GUI/Tab.cpp:3663 +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 "Les limites de la machine NE seront PAS émises dans le G-code, mais elles seront utilisées pour estimer le temps d'impression, ce qui peut donc ne pas être précis car l'imprimante peut appliquer un ensemble différent de limites de la machine." + +#: src/slic3r/GUI/Plater.cpp:172 msgid "Manifold" msgstr "Variété" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:57 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:56 msgid "Manual editing" msgstr "Édition manuelle" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:180 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:214 msgid "Masked SLA file exported to %1%" msgstr "Fichier SLA masqué exporté vers %1%" -#: src/slic3r/GUI/MainFrame.cpp:752 +#: src/slic3r/GUI/MainFrame.cpp:1451 msgid "Mate&rial Settings Tab" msgstr "Onglet Réglage&s Matériau" -#: src/slic3r/GUI/Tab.cpp:3478 src/slic3r/GUI/Tab.cpp:3480 +#: src/slic3r/GUI/Tab.cpp:3894 src/slic3r/GUI/Tab.cpp:3896 msgid "Material" msgstr "Matériau" -#: src/slic3r/GUI/Tab.hpp:416 +#: src/slic3r/GUI/Tab.hpp:486 msgid "Material Settings" msgstr "Réglages Matériau" -#: src/slic3r/GUI/Plater.cpp:163 +#: src/slic3r/GUI/GLCanvas3D.cpp:4304 src/slic3r/GUI/GLCanvas3D.cpp:4940 +msgid "Material Settings Tab" +msgstr "Onglet de réglages du matériau" + +#: src/slic3r/GUI/Plater.cpp:169 msgid "Materials" msgstr "Matériaux" -#: src/libslic3r/PrintConfig.cpp:1217 src/libslic3r/PrintConfig.cpp:1226 +#: src/libslic3r/PrintConfig.cpp:1325 src/libslic3r/PrintConfig.cpp:1334 msgid "Max" msgstr "Maximum" -#: src/libslic3r/PrintConfig.cpp:2734 +#: src/libslic3r/PrintConfig.cpp:2898 msgid "Max bridge length" msgstr "Longueur maximum de pont" -#: src/libslic3r/PrintConfig.cpp:2658 +#: src/libslic3r/PrintConfig.cpp:2812 msgid "Max bridges on a pillar" msgstr "Nombre de ponts maximum par pilier" -#: src/libslic3r/PrintConfig.cpp:2822 +#: src/libslic3r/PrintConfig.cpp:2986 msgid "Max merge distance" msgstr "Distance maximum de fusion" -#: src/libslic3r/PrintConfig.cpp:2743 +#: src/libslic3r/PrintConfig.cpp:2907 msgid "Max pillar linking distance" msgstr "Distance maximum de jonction de pilier" @@ -4196,7 +4841,7 @@ msgstr "Distance maximum de jonction de pilier" msgid "Max print height" msgstr "Hauteur maximale d'impression" -#: src/libslic3r/PrintConfig.cpp:1237 +#: src/libslic3r/PrintConfig.cpp:1345 msgid "Max print speed" msgstr "Vitesse d'impression maximale" @@ -4204,171 +4849,189 @@ msgstr "Vitesse d'impression maximale" msgid "max PrusaSlicer version" msgstr "Version maximum de PrusaSlicer" -#: src/libslic3r/PrintConfig.cpp:1268 +#: src/libslic3r/PrintConfig.cpp:1376 msgid "Max volumetric slope negative" msgstr "Pente volumétrique négative maximum" -#: src/libslic3r/PrintConfig.cpp:1257 +#: src/libslic3r/PrintConfig.cpp:1365 msgid "Max volumetric slope positive" msgstr "Pente volumétrique positive maximum" -#: src/libslic3r/PrintConfig.cpp:597 src/libslic3r/PrintConfig.cpp:1247 +#: src/libslic3r/PrintConfig.cpp:633 src/libslic3r/PrintConfig.cpp:1355 msgid "Max volumetric speed" msgstr "Vitesse volumétrique maximale" -#: src/libslic3r/PrintConfig.cpp:2268 +#: src/libslic3r/PrintConfig.cpp:2411 msgid "Maximal bridging distance" msgstr "Distance maximale de pont" -#: src/libslic3r/PrintConfig.cpp:2269 +#: src/libslic3r/PrintConfig.cpp:2412 msgid "Maximal distance between supports on sparse infill sections." msgstr "Distance maximale entre les supports sur les sections de remplissage épars." -#: src/libslic3r/PrintConfig.cpp:1145 +#: src/libslic3r/PrintConfig.cpp:1253 msgid "Maximum acceleration E" msgstr "Accélérations maximum E" -#: src/libslic3r/PrintConfig.cpp:1151 +#: src/libslic3r/PrintConfig.cpp:1259 msgid "Maximum acceleration of the E axis" msgstr "Accélération maximum de l'axe E" -#: src/libslic3r/PrintConfig.cpp:1148 +#: src/libslic3r/PrintConfig.cpp:1256 msgid "Maximum acceleration of the X axis" msgstr "Accélération maximum de l'axe X" -#: src/libslic3r/PrintConfig.cpp:1149 +#: src/libslic3r/PrintConfig.cpp:1257 msgid "Maximum acceleration of the Y axis" msgstr "Accélération maximum de l'axe Y" -#: src/libslic3r/PrintConfig.cpp:1150 +#: src/libslic3r/PrintConfig.cpp:1258 msgid "Maximum acceleration of the Z axis" msgstr "Accélération maximum de l'axe Z" -#: src/libslic3r/PrintConfig.cpp:1198 +#: src/libslic3r/PrintConfig.cpp:1306 msgid "Maximum acceleration when extruding" msgstr "Accélération maximum lors de l'extrusion" -#: src/libslic3r/PrintConfig.cpp:1200 +#: src/libslic3r/PrintConfig.cpp:1308 msgid "Maximum acceleration when extruding (M204 S)" msgstr "Accélération maximum lors de l'extrusion (M204 S)" -#: src/libslic3r/PrintConfig.cpp:1208 +#: src/libslic3r/PrintConfig.cpp:1316 msgid "Maximum acceleration when retracting" msgstr "Accélération maximum lors de la rétraction" -#: src/libslic3r/PrintConfig.cpp:1210 +#: src/libslic3r/PrintConfig.cpp:1318 msgid "Maximum acceleration when retracting (M204 T)" msgstr "Accélération maximum lors de la rétraction (M204 T)" -#: src/libslic3r/PrintConfig.cpp:1142 +#: src/libslic3r/PrintConfig.cpp:1250 msgid "Maximum acceleration X" msgstr "Accélérations maximum X" -#: src/libslic3r/PrintConfig.cpp:1143 +#: src/libslic3r/PrintConfig.cpp:1251 msgid "Maximum acceleration Y" msgstr "Accélérations maximum Y" -#: src/libslic3r/PrintConfig.cpp:1144 +#: src/libslic3r/PrintConfig.cpp:1252 msgid "Maximum acceleration Z" msgstr "Accélérations maximum Z" -#: src/slic3r/GUI/Tab.cpp:2222 +#: src/slic3r/GUI/Tab.cpp:2391 msgid "Maximum accelerations" msgstr "Accélérations maximum" -#: src/libslic3r/PrintConfig.cpp:2533 src/libslic3r/PrintConfig.cpp:2534 +#: src/libslic3r/PrintConfig.cpp:2676 src/libslic3r/PrintConfig.cpp:2677 msgid "Maximum exposure time" msgstr "Temps d'exposition maximum" -#: src/libslic3r/PrintConfig.cpp:1128 +#: src/libslic3r/PrintConfig.cpp:1236 msgid "Maximum feedrate E" msgstr "Vitesse d'avance maximum en E" -#: src/libslic3r/PrintConfig.cpp:1134 +#: src/libslic3r/PrintConfig.cpp:1242 msgid "Maximum feedrate of the E axis" msgstr "Vitesse d'avance maximum de l'axe E" -#: src/libslic3r/PrintConfig.cpp:1131 +#: src/libslic3r/PrintConfig.cpp:1239 msgid "Maximum feedrate of the X axis" msgstr "Vitesse d'avance maximum de l'axe X" -#: src/libslic3r/PrintConfig.cpp:1132 +#: src/libslic3r/PrintConfig.cpp:1240 msgid "Maximum feedrate of the Y axis" msgstr "Vitesse d'avance maximum de l'axe Y" -#: src/libslic3r/PrintConfig.cpp:1133 +#: src/libslic3r/PrintConfig.cpp:1241 msgid "Maximum feedrate of the Z axis" msgstr "Vitesse d'avance maximum de l'axe Z" -#: src/libslic3r/PrintConfig.cpp:1125 +#: src/libslic3r/PrintConfig.cpp:1233 msgid "Maximum feedrate X" msgstr "Vitesse d'avance maximum en X" -#: src/libslic3r/PrintConfig.cpp:1126 +#: src/libslic3r/PrintConfig.cpp:1234 msgid "Maximum feedrate Y" msgstr "Vitesse d'avance maximum en Y" -#: src/libslic3r/PrintConfig.cpp:1127 +#: src/libslic3r/PrintConfig.cpp:1235 msgid "Maximum feedrate Z" msgstr "Vitesse d'avance maximum en Z" -#: src/slic3r/GUI/Tab.cpp:2217 +#: src/slic3r/GUI/Tab.cpp:2386 msgid "Maximum feedrates" msgstr "Vitesses d'avance maximum" -#: src/libslic3r/PrintConfig.cpp:2556 src/libslic3r/PrintConfig.cpp:2557 +#: src/libslic3r/PrintConfig.cpp:2699 src/libslic3r/PrintConfig.cpp:2700 msgid "Maximum initial exposure time" msgstr "Temps d'exposition initiale Maximum" -#: src/libslic3r/PrintConfig.cpp:1162 +#: src/libslic3r/PrintConfig.cpp:1270 msgid "Maximum jerk E" msgstr "Mouvement brusque maximum E" -#: src/libslic3r/PrintConfig.cpp:1168 +#: src/libslic3r/PrintConfig.cpp:1276 msgid "Maximum jerk of the E axis" msgstr "Mouvement brusque maximum de l'axe E" -#: src/libslic3r/PrintConfig.cpp:1165 +#: src/libslic3r/PrintConfig.cpp:1273 msgid "Maximum jerk of the X axis" msgstr "Mouvement brusque maximum de l'axe X" -#: src/libslic3r/PrintConfig.cpp:1166 +#: src/libslic3r/PrintConfig.cpp:1274 msgid "Maximum jerk of the Y axis" msgstr "Mouvement brusque maximum de l'axe Y" -#: src/libslic3r/PrintConfig.cpp:1167 +#: src/libslic3r/PrintConfig.cpp:1275 msgid "Maximum jerk of the Z axis" msgstr "Mouvement brusque maximum de l'axe Z" -#: src/libslic3r/PrintConfig.cpp:1159 +#: src/libslic3r/PrintConfig.cpp:1267 msgid "Maximum jerk X" msgstr "Mouvement brusque maximum X" -#: src/libslic3r/PrintConfig.cpp:1160 +#: src/libslic3r/PrintConfig.cpp:1268 msgid "Maximum jerk Y" msgstr "Mouvement brusque maximum Y" -#: src/libslic3r/PrintConfig.cpp:1161 +#: src/libslic3r/PrintConfig.cpp:1269 msgid "Maximum jerk Z" msgstr "Mouvement brusque maximum Z" -#: src/libslic3r/PrintConfig.cpp:2660 +#: src/libslic3r/PrintConfig.cpp:2814 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 "Le nombre de ponts maximum pouvant être placés sur un pilier. Les ponts soutiennent les têtes des points de support et sont connectés aux piliers comme de petites branches." -#: src/libslic3r/PrintConfig.cpp:598 +#: src/libslic3r/PrintConfig.cpp:634 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 "Vitesse volumétrique maximale autorisée pour ce filament. Limite la vitesse volumétrique d'une impression au minimum des vitesses volumétriques d'impression et de filament. Mettez à zéro pour enlever la limite." -#: src/libslic3r/PrintConfig.cpp:3442 +#: 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:3641 msgid "Merge" msgstr "Fusionner" -#: src/libslic3r/PrintConfig.cpp:2683 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2660 +msgid "Merge all parts to the one single object" +msgstr "Fusionner toutes les pièces en un seul objet" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1868 +msgid "Merge objects to the one multipart object" +msgstr "Fusionner des objets en un seul objet multi-pièces" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1876 +msgid "Merge objects to the one single object" +msgstr "Fusionner des objets en un seul objet" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2576 +msgid "Merged" +msgstr "Fusionné" + +#: src/libslic3r/PrintConfig.cpp:2847 msgid "Merging bridges or pillars into another pillars can increase the radius. Zero means no increase, one means full increase." msgstr "Le fait de fusionner des ponts ou des piliers avec d'autres piliers peut augmenter le rayon. Zéro signifie aucune augmentation, un signifie augmentation totale." -#: src/libslic3r/SLAPrintSteps.cpp:64 +#: src/libslic3r/SLAPrintSteps.cpp:65 msgid "Merging slices and calculating statistics" msgstr "Fusion des tranches et calcul des statistiques" @@ -4376,15 +5039,15 @@ msgstr "Fusion des tranches et calcul des statistiques" msgid "Mesh repair failed." msgstr "Échec de la réparation du maillage." -#: src/slic3r/GUI/DoubleSlider.cpp:1635 +#: src/slic3r/GUI/DoubleSlider.cpp:1831 msgid "Message for pause print on current layer (%1% mm)." msgstr "Message pour mettre en pause l'impression sur la couche en cours (%1% mm)." -#: src/libslic3r/PrintConfig.cpp:1280 src/libslic3r/PrintConfig.cpp:1289 +#: src/libslic3r/PrintConfig.cpp:1388 src/libslic3r/PrintConfig.cpp:1397 msgid "Min" msgstr "Minimum" -#: src/libslic3r/PrintConfig.cpp:1298 +#: src/libslic3r/PrintConfig.cpp:1406 msgid "Min print speed" msgstr "Vitesse d'impression minimale" @@ -4392,232 +5055,237 @@ msgstr "Vitesse d'impression minimale" msgid "min PrusaSlicer version" msgstr "Version minimum de PrusaSlicer" -#: src/libslic3r/PrintConfig.cpp:2772 +#: src/libslic3r/PrintConfig.cpp:2936 msgid "Minimal distance of the support points" msgstr "Distance minimale des points de support" -#: src/libslic3r/PrintConfig.cpp:1306 +#: src/libslic3r/PrintConfig.cpp:1414 msgid "Minimal filament extrusion length" msgstr "Longueur minimale d'extrusion de filament" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:54 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:53 msgid "Minimal points distance" msgstr "Distance minimale des points" -#: src/libslic3r/PrintConfig.cpp:667 +#: src/libslic3r/PrintConfig.cpp:703 msgid "Minimal purge on wipe tower" msgstr "Purge minimale sur la tour de nettoyage" -#: src/libslic3r/PrintConfig.cpp:187 +#: src/libslic3r/PrintConfig.cpp:221 msgid "Minimum bottom shell thickness" msgstr "Épaisseur minimale de la coque inférieure" -#: src/slic3r/GUI/PresetHints.cpp:339 +#: src/slic3r/GUI/PresetHints.cpp:337 msgid "Minimum bottom shell thickness is %1% mm." msgstr "L'épaisseur minimale de la coque inférieure est de %1% mm." -#: src/libslic3r/PrintConfig.cpp:1512 +#: src/libslic3r/PrintConfig.cpp:1620 msgid "Minimum detail resolution, used to simplify the input file for speeding up the slicing job and reducing memory usage. High-resolution models often carry more detail than printers can render. Set to zero to disable any simplification and use full resolution from input." msgstr "Résolution minimale pour les détails, utilisée pour simplifier le fichier d'entrée afin d'accélérer le découpage et de réduire l'utilisation de la mémoire. Les modèles haute-résolution possèdent souvent plus de détails que ce que les imprimantes peuvent produire. Mettez à zéro pour désactiver toute simplification et utiliser la résolution complète de l'entrée." -#: src/libslic3r/PrintConfig.cpp:2525 src/libslic3r/PrintConfig.cpp:2526 +#: src/libslic3r/PrintConfig.cpp:2668 src/libslic3r/PrintConfig.cpp:2669 msgid "Minimum exposure time" msgstr "Temps d'exposition minimum" -#: src/libslic3r/PrintConfig.cpp:1178 +#: src/libslic3r/PrintConfig.cpp:1286 msgid "Minimum feedrate when extruding" msgstr "Vitesse d'avance minimum lors de l'extrusion" -#: src/libslic3r/PrintConfig.cpp:1180 +#: src/libslic3r/PrintConfig.cpp:1288 msgid "Minimum feedrate when extruding (M205 S)" msgstr "Vitesse d'avance minimum lors de l'extrusion (M205 S)" -#: src/slic3r/GUI/Tab.cpp:2234 +#: src/slic3r/GUI/Tab.cpp:2403 msgid "Minimum feedrates" msgstr "Vitesses d'avance minimum" -#: src/libslic3r/PrintConfig.cpp:2548 src/libslic3r/PrintConfig.cpp:2549 +#: src/libslic3r/PrintConfig.cpp:2691 src/libslic3r/PrintConfig.cpp:2692 msgid "Minimum initial exposure time" msgstr "Temps d'exposition initiale minimum" -#: src/slic3r/GUI/Tab.cpp:1069 +#: src/slic3r/GUI/Tab.cpp:1391 msgid "Minimum shell thickness" msgstr "Épaisseur de coque minimale" -#: src/libslic3r/PrintConfig.cpp:1787 src/libslic3r/PrintConfig.cpp:1788 +#: src/libslic3r/PrintConfig.cpp:1902 src/libslic3r/PrintConfig.cpp:1903 msgid "Minimum thickness of a top / bottom shell" msgstr "Épaisseur minimale d'une coque supérieure/inférieure" -#: src/libslic3r/PrintConfig.cpp:2146 +#: src/libslic3r/PrintConfig.cpp:2289 msgid "Minimum top shell thickness" msgstr "Épaisseur minimale de la coque supérieure" -#: src/slic3r/GUI/PresetHints.cpp:320 +#: src/slic3r/GUI/PresetHints.cpp:318 msgid "Minimum top shell thickness is %1% mm." msgstr "L'épaisseur minimale de la coque supérieure est de %1% mm." -#: src/libslic3r/PrintConfig.cpp:1522 +#: src/libslic3r/PrintConfig.cpp:1630 msgid "Minimum travel after retraction" msgstr "Trajet minimal après une rétraction" -#: src/libslic3r/PrintConfig.cpp:1188 +#: src/libslic3r/PrintConfig.cpp:1296 msgid "Minimum travel feedrate" msgstr "Vitesse d'avance minimum en déplacement" -#: src/libslic3r/PrintConfig.cpp:1190 +#: src/libslic3r/PrintConfig.cpp:1298 msgid "Minimum travel feedrate (M205 T)" msgstr "Vitesse d'avance minimum en déplacement (M205 T)" -#: src/libslic3r/PrintConfig.cpp:2917 +#: src/libslic3r/PrintConfig.cpp:3081 msgid "Minimum wall thickness of a hollowed model." msgstr "Épaisseur de paroi minimale d'un modèle évidé." -#: src/libslic3r/PrintConfig.cpp:2449 +#: src/libslic3r/PrintConfig.cpp:2592 msgid "Minimum width of features to maintain when doing elephant foot compensation." msgstr "Largeur minimum des caractéristiques à maintenir lorsque vous pratiquez une compensation de pied d'éléphant." -#: src/slic3r/GUI/Plater.cpp:4002 +#: src/slic3r/GUI/Plater.cpp:3922 msgid "Mirror" msgstr "Symétrie" -#: src/libslic3r/PrintConfig.cpp:2379 +#: src/libslic3r/PrintConfig.cpp:2522 msgid "Mirror horizontally" msgstr "Symétriser horizontalement" -#: src/slic3r/GUI/GLCanvas3D.cpp:2053 +#: src/slic3r/GUI/GLCanvas3D.cpp:2226 msgid "Mirror Object" msgstr "Symétriser l'Objet" -#: src/slic3r/GUI/Plater.cpp:4002 +#: src/slic3r/GUI/Plater.cpp:3922 msgid "Mirror the selected object" msgstr "Symétriser l'objet sélectionné" -#: src/slic3r/GUI/Plater.cpp:3995 +#: src/slic3r/GUI/Plater.cpp:3915 msgid "Mirror the selected object along the X axis" msgstr "Symétriser l'objet sélectionné selon l'axe X" -#: src/slic3r/GUI/Plater.cpp:3997 +#: src/slic3r/GUI/Plater.cpp:3917 msgid "Mirror the selected object along the Y axis" msgstr "Symétriser l'objet sélectionné selon l'axe Y" -#: src/slic3r/GUI/Plater.cpp:3999 +#: src/slic3r/GUI/Plater.cpp:3919 msgid "Mirror the selected object along the Z axis" msgstr "Symétriser l'objet sélectionné selon l'axe Z" -#: src/libslic3r/PrintConfig.cpp:2386 +#: src/libslic3r/PrintConfig.cpp:2529 msgid "Mirror vertically" msgstr "Symétriser verticalement" -#: src/slic3r/Utils/AstroBox.cpp:68 src/slic3r/Utils/OctoPrint.cpp:68 +#: src/slic3r/Utils/AstroBox.cpp:69 src/slic3r/Utils/OctoPrint.cpp:68 #, c-format msgid "Mismatched type of print host: %s" msgstr "Mauvais appariement de l'hôte d'impression : %s" -#: src/libslic3r/ExtrusionEntity.cpp:323 +#: src/libslic3r/ExtrusionEntity.cpp:328 src/libslic3r/ExtrusionEntity.cpp:364 msgid "Mixed" msgstr "Mélangé" -#: src/libslic3r/PrintConfig.cpp:2491 +#: src/libslic3r/PrintConfig.cpp:2634 msgid "ml" msgstr "ml" -#: src/slic3r/GUI/BedShapeDialog.cpp:92 src/slic3r/GUI/ConfigWizard.cpp:218 -#: src/slic3r/GUI/ConfigWizard.cpp:970 src/slic3r/GUI/ConfigWizard.cpp:984 +#: src/slic3r/GUI/BedShapeDialog.cpp:129 src/slic3r/GUI/ConfigWizard.cpp:236 +#: src/slic3r/GUI/ConfigWizard.cpp:1336 src/slic3r/GUI/ConfigWizard.cpp:1350 #: src/slic3r/GUI/ExtruderSequenceDialog.cpp:87 -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:135 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:333 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:94 +#: src/slic3r/GUI/GCodeViewer.cpp:2183 src/slic3r/GUI/GCodeViewer.cpp:2189 +#: src/slic3r/GUI/GCodeViewer.cpp:2197 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:91 -#: src/libslic3r/PrintConfig.cpp:122 src/libslic3r/PrintConfig.cpp:188 -#: src/libslic3r/PrintConfig.cpp:246 src/libslic3r/PrintConfig.cpp:321 -#: src/libslic3r/PrintConfig.cpp:329 src/libslic3r/PrintConfig.cpp:379 -#: src/libslic3r/PrintConfig.cpp:505 src/libslic3r/PrintConfig.cpp:516 -#: src/libslic3r/PrintConfig.cpp:534 src/libslic3r/PrintConfig.cpp:712 -#: src/libslic3r/PrintConfig.cpp:1231 src/libslic3r/PrintConfig.cpp:1292 -#: src/libslic3r/PrintConfig.cpp:1310 src/libslic3r/PrintConfig.cpp:1328 -#: src/libslic3r/PrintConfig.cpp:1384 src/libslic3r/PrintConfig.cpp:1394 -#: src/libslic3r/PrintConfig.cpp:1516 src/libslic3r/PrintConfig.cpp:1524 -#: src/libslic3r/PrintConfig.cpp:1565 src/libslic3r/PrintConfig.cpp:1573 -#: src/libslic3r/PrintConfig.cpp:1583 src/libslic3r/PrintConfig.cpp:1591 -#: src/libslic3r/PrintConfig.cpp:1599 src/libslic3r/PrintConfig.cpp:1682 -#: src/libslic3r/PrintConfig.cpp:1914 src/libslic3r/PrintConfig.cpp:1985 -#: src/libslic3r/PrintConfig.cpp:2019 src/libslic3r/PrintConfig.cpp:2147 -#: src/libslic3r/PrintConfig.cpp:2226 src/libslic3r/PrintConfig.cpp:2233 -#: src/libslic3r/PrintConfig.cpp:2240 src/libslic3r/PrintConfig.cpp:2270 -#: src/libslic3r/PrintConfig.cpp:2280 src/libslic3r/PrintConfig.cpp:2290 -#: src/libslic3r/PrintConfig.cpp:2450 src/libslic3r/PrintConfig.cpp:2484 -#: src/libslic3r/PrintConfig.cpp:2623 src/libslic3r/PrintConfig.cpp:2632 -#: src/libslic3r/PrintConfig.cpp:2641 src/libslic3r/PrintConfig.cpp:2651 -#: src/libslic3r/PrintConfig.cpp:2695 src/libslic3r/PrintConfig.cpp:2705 -#: src/libslic3r/PrintConfig.cpp:2717 src/libslic3r/PrintConfig.cpp:2737 -#: src/libslic3r/PrintConfig.cpp:2747 src/libslic3r/PrintConfig.cpp:2757 -#: src/libslic3r/PrintConfig.cpp:2775 src/libslic3r/PrintConfig.cpp:2790 -#: src/libslic3r/PrintConfig.cpp:2804 src/libslic3r/PrintConfig.cpp:2815 -#: src/libslic3r/PrintConfig.cpp:2828 src/libslic3r/PrintConfig.cpp:2873 -#: src/libslic3r/PrintConfig.cpp:2883 src/libslic3r/PrintConfig.cpp:2892 -#: src/libslic3r/PrintConfig.cpp:2902 src/libslic3r/PrintConfig.cpp:2918 -#: src/libslic3r/PrintConfig.cpp:2942 +#: src/libslic3r/PrintConfig.cpp:82 src/libslic3r/PrintConfig.cpp:93 +#: src/libslic3r/PrintConfig.cpp:124 src/libslic3r/PrintConfig.cpp:222 +#: src/libslic3r/PrintConfig.cpp:280 src/libslic3r/PrintConfig.cpp:355 +#: src/libslic3r/PrintConfig.cpp:363 src/libslic3r/PrintConfig.cpp:413 +#: src/libslic3r/PrintConfig.cpp:541 src/libslic3r/PrintConfig.cpp:552 +#: src/libslic3r/PrintConfig.cpp:570 src/libslic3r/PrintConfig.cpp:748 +#: src/libslic3r/PrintConfig.cpp:1158 src/libslic3r/PrintConfig.cpp:1339 +#: src/libslic3r/PrintConfig.cpp:1400 src/libslic3r/PrintConfig.cpp:1418 +#: src/libslic3r/PrintConfig.cpp:1436 src/libslic3r/PrintConfig.cpp:1492 +#: src/libslic3r/PrintConfig.cpp:1502 src/libslic3r/PrintConfig.cpp:1624 +#: src/libslic3r/PrintConfig.cpp:1632 src/libslic3r/PrintConfig.cpp:1673 +#: src/libslic3r/PrintConfig.cpp:1681 src/libslic3r/PrintConfig.cpp:1691 +#: src/libslic3r/PrintConfig.cpp:1699 src/libslic3r/PrintConfig.cpp:1707 +#: src/libslic3r/PrintConfig.cpp:1790 src/libslic3r/PrintConfig.cpp:2056 +#: src/libslic3r/PrintConfig.cpp:2127 src/libslic3r/PrintConfig.cpp:2161 +#: src/libslic3r/PrintConfig.cpp:2290 src/libslic3r/PrintConfig.cpp:2369 +#: src/libslic3r/PrintConfig.cpp:2376 src/libslic3r/PrintConfig.cpp:2383 +#: src/libslic3r/PrintConfig.cpp:2413 src/libslic3r/PrintConfig.cpp:2423 +#: src/libslic3r/PrintConfig.cpp:2433 src/libslic3r/PrintConfig.cpp:2593 +#: src/libslic3r/PrintConfig.cpp:2627 src/libslic3r/PrintConfig.cpp:2766 +#: src/libslic3r/PrintConfig.cpp:2775 src/libslic3r/PrintConfig.cpp:2784 +#: src/libslic3r/PrintConfig.cpp:2794 src/libslic3r/PrintConfig.cpp:2859 +#: src/libslic3r/PrintConfig.cpp:2869 src/libslic3r/PrintConfig.cpp:2881 +#: src/libslic3r/PrintConfig.cpp:2901 src/libslic3r/PrintConfig.cpp:2911 +#: src/libslic3r/PrintConfig.cpp:2921 src/libslic3r/PrintConfig.cpp:2939 +#: src/libslic3r/PrintConfig.cpp:2954 src/libslic3r/PrintConfig.cpp:2968 +#: src/libslic3r/PrintConfig.cpp:2979 src/libslic3r/PrintConfig.cpp:2992 +#: src/libslic3r/PrintConfig.cpp:3037 src/libslic3r/PrintConfig.cpp:3047 +#: src/libslic3r/PrintConfig.cpp:3056 src/libslic3r/PrintConfig.cpp:3066 +#: src/libslic3r/PrintConfig.cpp:3082 src/libslic3r/PrintConfig.cpp:3106 msgid "mm" msgstr "mm" -#: src/libslic3r/PrintConfig.cpp:1547 src/libslic3r/PrintConfig.cpp:1556 +#: src/libslic3r/PrintConfig.cpp:1655 src/libslic3r/PrintConfig.cpp:1664 msgid "mm (zero to disable)" msgstr "mm (zéro pour désactiver)" -#: src/libslic3r/PrintConfig.cpp:451 src/libslic3r/PrintConfig.cpp:560 -#: src/libslic3r/PrintConfig.cpp:882 src/libslic3r/PrintConfig.cpp:895 -#: src/libslic3r/PrintConfig.cpp:1015 src/libslic3r/PrintConfig.cpp:1041 -#: src/libslic3r/PrintConfig.cpp:1423 src/libslic3r/PrintConfig.cpp:1761 -#: src/libslic3r/PrintConfig.cpp:1883 src/libslic3r/PrintConfig.cpp:1951 -#: src/libslic3r/PrintConfig.cpp:2111 +#: src/libslic3r/PrintConfig.cpp:487 src/libslic3r/PrintConfig.cpp:596 +#: src/libslic3r/PrintConfig.cpp:924 src/libslic3r/PrintConfig.cpp:937 +#: src/libslic3r/PrintConfig.cpp:1059 src/libslic3r/PrintConfig.cpp:1085 +#: src/libslic3r/PrintConfig.cpp:1531 src/libslic3r/PrintConfig.cpp:1876 +#: src/libslic3r/PrintConfig.cpp:2025 src/libslic3r/PrintConfig.cpp:2093 +#: src/libslic3r/PrintConfig.cpp:2254 msgid "mm or %" msgstr "mm ou %" -#: src/libslic3r/PrintConfig.cpp:237 src/libslic3r/PrintConfig.cpp:609 -#: src/libslic3r/PrintConfig.cpp:617 src/libslic3r/PrintConfig.cpp:626 -#: src/libslic3r/PrintConfig.cpp:634 src/libslic3r/PrintConfig.cpp:661 -#: src/libslic3r/PrintConfig.cpp:680 src/libslic3r/PrintConfig.cpp:922 -#: src/libslic3r/PrintConfig.cpp:1050 src/libslic3r/PrintConfig.cpp:1135 -#: src/libslic3r/PrintConfig.cpp:1169 src/libslic3r/PrintConfig.cpp:1181 -#: src/libslic3r/PrintConfig.cpp:1191 src/libslic3r/PrintConfig.cpp:1241 -#: src/libslic3r/PrintConfig.cpp:1300 src/libslic3r/PrintConfig.cpp:1433 -#: src/libslic3r/PrintConfig.cpp:1607 src/libslic3r/PrintConfig.cpp:1616 -#: src/libslic3r/PrintConfig.cpp:2028 src/libslic3r/PrintConfig.cpp:2154 +#: 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 +#: src/libslic3r/PrintConfig.cpp:716 src/libslic3r/PrintConfig.cpp:966 +#: src/libslic3r/PrintConfig.cpp:1094 src/libslic3r/PrintConfig.cpp:1167 +#: src/libslic3r/PrintConfig.cpp:1243 src/libslic3r/PrintConfig.cpp:1277 +#: src/libslic3r/PrintConfig.cpp:1289 src/libslic3r/PrintConfig.cpp:1299 +#: src/libslic3r/PrintConfig.cpp:1349 src/libslic3r/PrintConfig.cpp:1408 +#: src/libslic3r/PrintConfig.cpp:1541 src/libslic3r/PrintConfig.cpp:1715 +#: src/libslic3r/PrintConfig.cpp:1724 src/libslic3r/PrintConfig.cpp:2170 +#: src/libslic3r/PrintConfig.cpp:2297 msgid "mm/s" msgstr "mm/s" -#: src/libslic3r/PrintConfig.cpp:462 src/libslic3r/PrintConfig.cpp:904 -#: src/libslic3r/PrintConfig.cpp:1720 src/libslic3r/PrintConfig.cpp:1772 -#: src/libslic3r/PrintConfig.cpp:1995 src/libslic3r/PrintConfig.cpp:2124 +#: src/libslic3r/PrintConfig.cpp:498 src/libslic3r/PrintConfig.cpp:946 +#: src/libslic3r/PrintConfig.cpp:1835 src/libslic3r/PrintConfig.cpp:1887 +#: src/libslic3r/PrintConfig.cpp:2137 src/libslic3r/PrintConfig.cpp:2267 msgid "mm/s or %" msgstr "mm/s ou %" -#: src/libslic3r/PrintConfig.cpp:196 src/libslic3r/PrintConfig.cpp:339 -#: src/libslic3r/PrintConfig.cpp:862 src/libslic3r/PrintConfig.cpp:984 -#: src/libslic3r/PrintConfig.cpp:1152 src/libslic3r/PrintConfig.cpp:1201 -#: src/libslic3r/PrintConfig.cpp:1211 src/libslic3r/PrintConfig.cpp:1403 +#: src/libslic3r/PrintConfig.cpp:230 src/libslic3r/PrintConfig.cpp:373 +#: src/libslic3r/PrintConfig.cpp:902 src/libslic3r/PrintConfig.cpp:1028 +#: src/libslic3r/PrintConfig.cpp:1260 src/libslic3r/PrintConfig.cpp:1309 +#: src/libslic3r/PrintConfig.cpp:1319 src/libslic3r/PrintConfig.cpp:1511 msgid "mm/s²" msgstr "mm/s²" -#: src/libslic3r/PrintConfig.cpp:1730 +#: src/libslic3r/PrintConfig.cpp:1845 msgid "mm²" msgstr "mm²" -#: src/libslic3r/PrintConfig.cpp:672 +#: src/libslic3r/PrintConfig.cpp:708 msgid "mm³" msgstr "mm³" -#: src/slic3r/GUI/RammingChart.cpp:81 src/libslic3r/PrintConfig.cpp:601 -#: src/libslic3r/PrintConfig.cpp:1250 +#: src/slic3r/GUI/RammingChart.cpp:81 src/libslic3r/PrintConfig.cpp:637 +#: src/libslic3r/PrintConfig.cpp:1358 msgid "mm³/s" msgstr "mm³/s" -#: src/libslic3r/PrintConfig.cpp:1262 src/libslic3r/PrintConfig.cpp:1273 +#: src/libslic3r/PrintConfig.cpp:1370 src/libslic3r/PrintConfig.cpp:1381 msgid "mm³/s²" msgstr "mm³/s²" -#: src/slic3r/GUI/GUI_App.cpp:820 +#: src/slic3r/GUI/GUI_App.cpp:1512 msgid "Mode" msgstr "&Mode" @@ -4625,7 +5293,7 @@ msgstr "&Mode" msgid "model" msgstr "modèle" -#: src/slic3r/GUI/BedShapeDialog.cpp:251 +#: src/slic3r/GUI/BedShapeDialog.cpp:395 msgid "Model" msgstr "Modèle" @@ -4654,99 +5322,125 @@ msgstr "Réparation du modèle terminée" msgid "Model repaired successfully" msgstr "Réparation du modèle réussie" -#: src/slic3r/GUI/Tab.cpp:979 +#: src/slic3r/GUI/GUI_App.cpp:1506 src/slic3r/GUI/wxExtensions.cpp:675 +msgctxt "Mode" +msgid "Advanced" +msgstr "Avancé" + +#: src/slic3r/GUI/Tab.cpp:1241 msgid "Modifications to the current profile will be saved." msgstr "Les modifications du profil actuel vont être sauvegardées." -#: src/slic3r/GUI/Preset.cpp:247 +#: src/slic3r/GUI/GUI_App.cpp:1425 msgid "modified" msgstr "modifié" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3551 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4014 msgid "Modifier" msgstr "Modificateur" -#: src/slic3r/GUI/Tab.cpp:1161 +#: src/slic3r/GUI/Tab.cpp:1491 msgid "Modifiers" msgstr "Modificateurs" -#: src/libslic3r/PrintConfig.cpp:2512 +#: src/libslic3r/PrintConfig.cpp:2655 msgid "money/bottle" msgstr "prix/bouteille" -#: src/libslic3r/PrintConfig.cpp:762 +#: src/libslic3r/PrintConfig.cpp:798 msgid "money/kg" msgstr "€/kg" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1372 +#: src/libslic3r/PrintConfig.cpp:461 +msgid "Monotonic" +msgstr "Monotone" + +#: src/slic3r/GUI/NotificationManager.cpp:305 +#: src/slic3r/GUI/NotificationManager.cpp:315 +msgid "More" +msgstr "Plus" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1219 msgid "Mouse wheel" msgstr "Roulette de la souris" -#: src/slic3r/GUI/GLCanvas3D.cpp:261 +#: src/slic3r/GUI/GLCanvas3D.cpp:249 msgid "Mouse wheel:" msgstr "Roulette de la souris:" -#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:64 msgid "Move" msgstr "Déplacer" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1372 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1219 msgid "Move clipping plane" msgstr "Déplacer le plan de coupe" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:215 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 msgid "Move current slider thumb Down" msgstr "Déplacer le curseur actuel vers le bas" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:214 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:229 +msgid "Move current slider thumb Left" +msgstr "Déplacer le curseur actuel vers la gauche" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:230 +msgid "Move current slider thumb Right" +msgstr "Déplacer le curseur actuel vers la droite" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:215 msgid "Move current slider thumb Up" msgstr "Déplacer le curseur actuel vers le haut" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:1059 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:835 msgid "Move drainage hole" msgstr "Déplacer le trou de drainage" -#: src/slic3r/GUI/GLCanvas3D.cpp:3505 +#: src/slic3r/GUI/GLCanvas3D.cpp:3810 msgid "Move Object" msgstr "Déplacer l'Objet" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1365 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1212 msgid "Move point" msgstr "Déplacer le point" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:166 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:160 msgid "Move selection 10 mm in negative X direction" msgstr "Déplacer la sélection de 10 mm dans la direction négative X" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:159 msgid "Move selection 10 mm in negative Y direction" msgstr "Déplacer la sélection de 10 mm dans la direction négative Y" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:167 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:161 msgid "Move selection 10 mm in positive X direction" msgstr "Déplacer la sélection de 10 mm dans la direction positive X" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:158 msgid "Move selection 10 mm in positive Y direction" msgstr "Déplacer la sélection de 10 mm dans la direction positive Y" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1097 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:955 msgid "Move support point" msgstr "Déplacer un point de support" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:169 +#: src/slic3r/GUI/GCodeViewer.cpp:2492 +msgid "Movement" +msgstr "Mouvement" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:163 msgid "Movement in camera space" msgstr "Mouvement dans l'espace de la caméra" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:168 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:162 msgid "Movement step set to 1 mm" msgstr "Pas du mouvement réglé sur 1 mm" -#: src/libslic3r/PrintConfig.cpp:2201 +#: src/libslic3r/PrintConfig.cpp:2344 msgid "Multi material printers may need to prime or purge extruders on tool changes. Extrude the excess material into the wipe tower." msgstr "Les imprimantes multi-matériaux peuvent avoir besoin de préparer ou de purger leurs extrudeurs lors d'un changement d'outil. Extruder le matériau en excès dans la tour de nettoyage." -#: src/slic3r/GUI/Plater.cpp:2360 src/slic3r/GUI/Plater.cpp:2413 +#: src/slic3r/GUI/Plater.cpp:2322 src/slic3r/GUI/Plater.cpp:2375 msgid "Multi-part object detected" msgstr "Objet multi-pièces détecté" @@ -4755,11 +5449,11 @@ msgstr "Objet multi-pièces détecté" msgid "Multiple %s devices found. Please only connect one at a time for flashing." msgstr "Plusieurs %s équipements ont été détectés. Veuillez n'en connecter qu'un seul à la fois pour le processus de flash." -#: src/slic3r/GUI/Tab.cpp:1179 +#: src/slic3r/GUI/Tab.cpp:1509 msgid "Multiple Extruders" msgstr "Extrudeurs Multiples" -#: src/slic3r/GUI/Plater.cpp:2410 +#: src/slic3r/GUI/Plater.cpp:2372 msgid "" "Multiple objects were loaded for a multi-material printer.\n" "Instead of considering them as multiple objects, should I consider\n" @@ -4769,36 +5463,41 @@ msgstr "" "Au lieu de les considérer en tant que plusieurs objets, dois-je considérer\n" "ces fichiers en tant que un seul objet ayant plusieurs pièces ?" -#: src/libslic3r/PrintConfig.cpp:3439 +#: src/libslic3r/PrintConfig.cpp:3638 msgid "Multiply copies by creating a grid." msgstr "Multiplier les copies en créant une grille." -#: src/libslic3r/PrintConfig.cpp:3434 +#: src/libslic3r/PrintConfig.cpp:3633 msgid "Multiply copies by this factor." msgstr "Multiplier les copies par ce facteur." -#: src/slic3r/GUI/Field.cpp:150 src/slic3r/GUI/OptionsGroup.cpp:580 +#: src/slic3r/GUI/Field.cpp:198 src/slic3r/GUI/OptionsGroup.cpp:715 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:874 msgid "N/A" msgstr "N/A" -#: src/slic3r/GUI/GUI_ObjectList.cpp:270 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:153 +#: src/slic3r/GUI/GUI_ObjectList.cpp:284 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:161 msgid "Name" msgstr "Nom" -#: src/libslic3r/PrintConfig.cpp:1488 +#: src/libslic3r/PrintConfig.cpp:114 +msgid "Name of the printer" +msgstr "Nom de l'imprimante" + +#: src/libslic3r/PrintConfig.cpp:1596 msgid "Name of the printer variant. For example, the printer variants may be differentiated by a nozzle diameter." msgstr "Nom de la variante d'imprimante. Par exemple, la variante d'imprimante peut être différenciée par un diamètre de buse." -#: src/libslic3r/PrintConfig.cpp:1482 +#: src/libslic3r/PrintConfig.cpp:1590 msgid "Name of the printer vendor." msgstr "Nom du fabriquant de l'imprimante." -#: src/libslic3r/PrintConfig.cpp:1058 +#: src/libslic3r/PrintConfig.cpp:1102 msgid "Name of the profile, from which this profile inherits." msgstr "Nom du profil, duquel hérite ce profil." -#: src/libslic3r/PrintConfig.cpp:1630 +#: src/libslic3r/PrintConfig.cpp:1738 msgid "Nearest" msgstr "Le plus proche" @@ -4806,14 +5505,30 @@ msgstr "Le plus proche" msgid "Network lookup" msgstr "Recherche réseau" -#: src/slic3r/GUI/Plater.cpp:2151 +#: src/slic3r/GUI/Preferences.cpp:430 +msgid "New layout, access via settings button in the top menu" +msgstr "Nouvelle disposition, accès via le bouton des réglages dans le menu supérieur" + +#: src/slic3r/GUI/Plater.cpp:2056 msgid "New Project" msgstr "Nouveau Projet" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:112 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:105 msgid "New project, clear plater" msgstr "Nouveau projet, libérer le plateau" +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:609 +msgid "New Value" +msgstr "Nouvelle Valeur" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1178 +msgid "New value" +msgstr "Nouvelle valeur" + +#: src/slic3r/GUI/NotificationManager.hpp:322 +msgid "New version is available." +msgstr "Une nouvelle version est disponible." + #: src/slic3r/GUI/UpdateDialogs.cpp:38 #, c-format msgid "New version of %s is available" @@ -4823,23 +5538,23 @@ msgstr "Une nouvelle version de %s est disponible" msgid "New version:" msgstr "Nouvelle version :" -#: src/slic3r/GUI/GLCanvas3D.cpp:4673 +#: src/slic3r/GUI/GLCanvas3D.cpp:5089 msgid "Next Redo action: %1%" msgstr "Prochaine action Répéter : %1%" -#: src/slic3r/GUI/GLCanvas3D.cpp:4641 +#: src/slic3r/GUI/GLCanvas3D.cpp:5051 msgid "Next Undo action: %1%" msgstr "Prochaine action Annuler : %1%" -#: src/libslic3r/PrintConfig.cpp:960 +#: src/libslic3r/PrintConfig.cpp:1004 msgid "No extrusion" msgstr "Aucune extrusion" -#: src/libslic3r/SLAPrintSteps.cpp:453 +#: src/libslic3r/SLAPrintSteps.cpp:451 msgid "No pad can be generated for this model with the current configuration" msgstr "Aucun socle ne peut être généré pour ce modèle avec la configuration actuelle" -#: src/slic3r/GUI/MainFrame.cpp:784 +#: src/slic3r/GUI/MainFrame.cpp:1485 msgid "No previously sliced file." msgstr "Aucun fichier précédemment découpé." @@ -4847,175 +5562,221 @@ msgstr "Aucun fichier précédemment découpé." msgid "NO RAMMING AT ALL" msgstr "PAS D'EXPULSION DU TOUT" -#: src/libslic3r/PrintConfig.cpp:1857 +#: src/libslic3r/PrintConfig.cpp:1999 msgid "No sparse layers (EXPERIMENTAL)" msgstr "Sans couches dispersées (EXPERIMENTAL)" -#: src/libslic3r/PrintConfig.cpp:2774 +#: src/libslic3r/PrintConfig.cpp:2938 msgid "No support points will be placed closer than this threshold." msgstr "Aucun point de support ne sera positionné plus près que ce seuil." -#: src/slic3r/GUI/UpdateDialogs.cpp:303 +#: src/slic3r/GUI/UpdateDialogs.cpp:304 msgid "No updates available" msgstr "Aucune mise à jour disponible" -#: src/slic3r/GUI/ConfigWizard.cpp:291 src/slic3r/GUI/ConfigWizard.cpp:574 -#: src/slic3r/GUI/Plater.cpp:499 src/slic3r/GUI/Plater.cpp:639 -#: src/libslic3r/ExtrusionEntity.cpp:309 +#: src/slic3r/GUI/ConfigWizard.cpp:309 src/slic3r/GUI/ConfigWizard.cpp:599 +#: src/slic3r/GUI/Plater.cpp:365 src/slic3r/GUI/Plater.cpp:505 +#: src/libslic3r/ExtrusionEntity.cpp:312 msgid "None" msgstr "Aucun" -#: src/slic3r/GUI/Tab.cpp:2203 +#: src/slic3r/GUI/Search.cpp:77 src/slic3r/GUI/Tab.cpp:2372 msgid "Normal" msgstr "Normal" -#: src/slic3r/GUI/Plater.cpp:1286 +#: src/slic3r/GUI/Plater.cpp:1177 src/slic3r/GUI/Plater.cpp:1224 msgid "normal mode" msgstr "mode normal" -#: src/libslic3r/Zipper.cpp:46 +#: src/slic3r/GUI/GCodeViewer.cpp:2552 +msgid "Normal mode" +msgstr "Mode normal" + +#: src/libslic3r/miniz_extension.cpp:105 msgid "not a ZIP archive" msgstr "n'est pas une archive ZIP" -#: src/slic3r/GUI/BedShapeDialog.cpp:223 src/slic3r/GUI/BedShapeDialog.cpp:302 +#: src/slic3r/GUI/BedShapeDialog.cpp:366 src/slic3r/GUI/BedShapeDialog.cpp:446 msgid "Not found:" msgstr "Introuvable:" -#: src/slic3r/GUI/DoubleSlider.cpp:1019 +#: src/slic3r/GUI/DoubleSlider.cpp:1144 msgid "Note" msgstr "Remarque" -#: src/slic3r/Utils/AstroBox.cpp:89 +#: src/slic3r/GUI/Tab.cpp:3408 +msgid "Note, that selected preset will be deleted from this/those printer(s) too." +msgstr "Notez que ce préréglage sélectionné sera également supprimé pour cette/ces imprimante(s)." + +#: src/slic3r/GUI/Tab.cpp:3416 +msgid "Note, that this/those printer(s) will be deleted after deleting of the selected preset." +msgstr "Notez que cette/ces imprimante(s) seront supprimées après la suppression du préréglage sélectionné." + +#: src/slic3r/GUI/Tab.cpp:2039 +msgid "" +"Note: All parameters from this group are moved to the Physical Printer settings (see changelog).\n" +"\n" +"A new Physical Printer profile is created by clicking on the \"cog\" icon right of the Printer profiles combo box, by selecting the \"Add physical printer\" item in the Printer combo box. The Physical Printer profile editor opens also when clicking on the \"cog\" icon in the Printer settings tab. The Physical Printer profiles are being stored into PrusaSlicer/physical_printer directory." +msgstr "" +"Remarque : Tous les paramètres de ce groupe sont déplacés vers les paramètres de l'imprimante physique (voir le journal des modifications).\n" +"\n" +"Un nouveau profil d'imprimante physique est créé en cliquant sur l'icône \"rouage\" à droite de la zone de liste déroulante de Profils d'imprimante, en sélectionnant l'élément \"Ajouter une imprimante physique\" dans la zone de liste déroulante Imprimante. L'éditeur de profil d'imprimante physique s'ouvre également en cliquant sur l'icône \"rouage\" dans l'onglet Réglages de l'imprimante. Les profils d'imprimante physique sont stockés dans le répertoire PrusaSlicer/physical_printer." + +#: src/slic3r/Utils/AstroBox.cpp:92 msgid "Note: AstroBox version at least 1.1.0 is required." msgstr "Remarque : AstroBox en version 1.1.0 minimum est requis." -#: src/slic3r/Utils/FlashAir.cpp:73 +#: src/slic3r/Utils/FlashAir.cpp:76 msgid "Note: FlashAir with firmware 2.00.02 or newer and activated upload function is required." msgstr "Remarque : FlashAir avec firmware 2.00.02 ou plus récent avec une fonction de téléchargement activée est nécessaire." -#: src/slic3r/Utils/OctoPrint.cpp:89 +#: src/slic3r/Utils/OctoPrint.cpp:91 msgid "Note: OctoPrint version at least 1.1.0 is required." msgstr "Note : une version d'Octoprint supérieure ou égale à 1.1.0 est requise." -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1345 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1192 msgid "Note: some shortcuts work in (non)editing mode only." msgstr "Remarque: certains raccourcis ne fonctionnent qu'en mode de (non-)édition." -#: src/slic3r/GUI/Tab.cpp:1251 src/slic3r/GUI/Tab.cpp:1252 -#: src/slic3r/GUI/Tab.cpp:1540 src/slic3r/GUI/Tab.cpp:1541 -#: src/slic3r/GUI/Tab.cpp:2012 src/slic3r/GUI/Tab.cpp:2013 -#: src/slic3r/GUI/Tab.cpp:2128 src/slic3r/GUI/Tab.cpp:2129 -#: src/slic3r/GUI/Tab.cpp:3535 src/slic3r/GUI/Tab.cpp:3536 +#: src/slic3r/GUI/SavePresetDialog.cpp:151 +msgid "Note: This preset will be replaced after saving" +msgstr "Remarque : ce préréglage sera remplacé après l'enregistrement" + +#: src/slic3r/GUI/Tab.cpp:1581 src/slic3r/GUI/Tab.cpp:1582 +#: src/slic3r/GUI/Tab.cpp:1887 src/slic3r/GUI/Tab.cpp:1888 +#: src/slic3r/GUI/Tab.cpp:2221 src/slic3r/GUI/Tab.cpp:2222 +#: src/slic3r/GUI/Tab.cpp:2297 src/slic3r/GUI/Tab.cpp:2298 +#: src/slic3r/GUI/Tab.cpp:3951 src/slic3r/GUI/Tab.cpp:3952 msgid "Notes" msgstr "Notes" -#: src/slic3r/GUI/ConfigWizard.cpp:1751 src/slic3r/GUI/DoubleSlider.cpp:1905 -#: src/slic3r/GUI/DoubleSlider.cpp:1926 src/slic3r/GUI/GUI.cpp:245 +#: src/slic3r/GUI/ConfigWizard.cpp:2237 src/slic3r/GUI/DoubleSlider.cpp:2124 +#: src/slic3r/GUI/DoubleSlider.cpp:2144 src/slic3r/GUI/GUI.cpp:244 msgid "Notice" msgstr "Remarque" -#: src/slic3r/GUI/ConfigWizard.cpp:218 +#: src/slic3r/GUI/ConfigWizard.cpp:236 msgid "nozzle" msgstr "buse" -#: src/slic3r/GUI/Tab.cpp:1870 src/slic3r/GUI/Tab.cpp:2340 -#: src/libslic3r/PrintConfig.cpp:1326 +#: src/slic3r/GUI/Tab.cpp:1790 +msgid "Nozzle" +msgstr "Buse" + +#: src/slic3r/GUI/ConfigWizard.cpp:1392 +msgid "Nozzle and Bed Temperatures" +msgstr "Températures de la buse et du plateau" + +#: src/slic3r/GUI/Tab.cpp:2104 src/slic3r/GUI/Tab.cpp:2509 +#: src/libslic3r/PrintConfig.cpp:1434 msgid "Nozzle diameter" msgstr "Diamètre de la buse" -#: src/slic3r/GUI/ConfigWizard.cpp:969 +#: src/slic3r/GUI/ConfigWizard.cpp:1335 msgid "Nozzle Diameter:" msgstr "Diamètre de la Buse :" -#: src/libslic3r/PrintConfig.cpp:650 +#: src/libslic3r/PrintConfig.cpp:2201 +msgid "Nozzle temperature" +msgstr "Température de la buse" + +#: src/libslic3r/PrintConfig.cpp:2198 +msgid "Nozzle temperature for layers after the first one. Set this to zero to disable temperature control commands in the output G-code." +msgstr "Température de la buse pour les couches après la première. Réglez ceci sur zéro pour désactiver les commandes de contrôle de température dans le G-code de sortie." + +#: src/libslic3r/PrintConfig.cpp:961 +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 "Température de la buse pour la première couche. Si vous souhaitez contrôler la température manuellement pendant l'impression, réglez ce paramètre sur zéro pour désactiver les commandes de contrôle de la température dans le G-code de sortie." + +#: src/libslic3r/PrintConfig.cpp:686 msgid "Number of cooling moves" msgstr "Nombres de mouvements de refroidissement" -#: src/slic3r/GUI/Tab.cpp:1839 +#: src/slic3r/GUI/Tab.cpp:2073 msgid "Number of extruders of the printer." msgstr "Nombre d'extrudeurs de l'imprimante." -#: src/libslic3r/PrintConfig.cpp:1975 +#: src/libslic3r/PrintConfig.cpp:2117 msgid "Number of interface layers to insert between the object(s) and support material." msgstr "Nombre de couches d'interface à insérer entre le(s) objet(s) et les supports." -#: src/libslic3r/PrintConfig.cpp:1697 +#: src/libslic3r/PrintConfig.cpp:1812 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 "Nombre de boucles pour la jupe. Si la Longueur Minimale d'Extrusion est paramétrée, le nombre de boucles minimal sera plus grand que celui configuré ici. Mettez à zéro pour désactiver complètement la jupe." -#: src/libslic3r/PrintConfig.cpp:2365 +#: src/libslic3r/PrintConfig.cpp:2508 msgid "Number of pixels in" msgstr "Nombre de pixels présents" -#: src/libslic3r/PrintConfig.cpp:2367 +#: src/libslic3r/PrintConfig.cpp:2510 msgid "Number of pixels in X" msgstr "Nombre de pixels présents dans X" -#: src/libslic3r/PrintConfig.cpp:2373 +#: src/libslic3r/PrintConfig.cpp:2516 msgid "Number of pixels in Y" msgstr "Nombre de pixels présents dans Y" -#: src/libslic3r/PrintConfig.cpp:176 +#: src/libslic3r/PrintConfig.cpp:210 msgid "Number of solid layers to generate on bottom surfaces." msgstr "Nombre de couches solides à générer sur les surfaces inférieures." -#: src/libslic3r/PrintConfig.cpp:1781 +#: src/libslic3r/PrintConfig.cpp:1896 msgid "Number of solid layers to generate on top and bottom surfaces." msgstr "Nombre de couches solides à générer sur les surfaces supérieures et inférieures." -#: src/libslic3r/PrintConfig.cpp:2134 +#: src/libslic3r/PrintConfig.cpp:2277 msgid "Number of solid layers to generate on top surfaces." msgstr "Nombre de couches solides à générer sur les surfaces supérieures." -#: src/libslic3r/PrintConfig.cpp:2518 +#: src/libslic3r/PrintConfig.cpp:2661 msgid "Number of the layers needed for the exposure time fade from initial exposure time to the exposure time" msgstr "Nombre de couches nécessaires pour que le temps d'exposition passe du temps d'exposition initial au temps d'exposition normal" -#: src/slic3r/GUI/Plater.cpp:241 +#: src/slic3r/GUI/Plater.cpp:247 msgid "Number of tool changes" msgstr "Nombre de changements d'outil" -#: src/libslic3r/PrintConfig.cpp:2753 +#: src/slic3r/GUI/Tab.cpp:4127 src/libslic3r/PrintConfig.cpp:2917 msgid "Object elevation" msgstr "Élévation de l'objet" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2466 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2858 msgid "Object manipulation" msgstr "Manipulation de l'Objet" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:155 src/libslic3r/GCode.cpp:638 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:163 src/libslic3r/GCode.cpp:623 msgid "Object name" msgstr "Nom de l'objet" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3417 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3880 msgid "Object or Instance" msgstr "Objet ou Instance" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1106 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1230 msgid "Object reordered" msgstr "Objet réorganisé" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2479 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2871 msgid "Object Settings to modify" msgstr "Réglages de l'Objet à modifier" -#: src/slic3r/GUI/Plater.cpp:2529 +#: src/slic3r/GUI/Plater.cpp:2491 msgid "Object too large?" msgstr "Objet trop grand ?" -#: src/libslic3r/PrintConfig.cpp:2262 +#: src/libslic3r/PrintConfig.cpp:2405 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 "L'objet sera utilisé pour purger la buse après un changement d'outil pour économiser du matériau qui finirait normalement dans la tour de nettoyage et raccourcirait le temps d'impression. Par conséquent, les couleurs de l'objet seront mélangées." -#: src/slic3r/GUI/Plater.cpp:1194 +#: src/slic3r/GUI/Plater.cpp:1103 msgid "object(s)" msgstr "objet(s)" -#: src/slic3r/GUI/Plater.cpp:1231 src/slic3r/GUI/Plater.cpp:1245 +#: src/slic3r/GUI/Plater.cpp:1143 src/slic3r/GUI/Plater.cpp:1160 msgid "objects" msgstr "objets" -#: src/libslic3r/PrintConfig.cpp:429 src/libslic3r/PrintConfig.cpp:855 +#: src/libslic3r/PrintConfig.cpp:465 src/libslic3r/PrintConfig.cpp:893 msgid "Octagram Spiral" msgstr "Spirale Octagramme" @@ -5023,64 +5784,97 @@ msgstr "Spirale Octagramme" msgid "OctoPrint version" msgstr "Version d'OctoPrint" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3425 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3888 msgid "of a current Object" msgstr "d'un Objet en cours" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:43 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:42 msgid "Offset" msgstr "Décalage" -#: src/slic3r/GUI/Tab.cpp:1755 +#: src/slic3r/GUI/Preferences.cpp:422 +msgid "Old regular layout with the tab bar" +msgstr "Ancienne disposition avec la barre d'onglets" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:608 +msgid "Old Value" +msgstr "Ancienne valeur" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1177 +msgid "Old value" +msgstr "Ancienne valeur" + +#: src/slic3r/GUI/Preferences.cpp:123 +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 "Sur OSX, il n'y a toujours qu'une seule instance d'application en cours d'exécution par défaut. Cependant, il est permis d'exécuter plusieurs instances de la même application à partir de la ligne de commande. Dans ce cas, ces paramètres n'autoriseront qu'une seule instance." + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:359 #, c-format msgid "On this system, %s uses HTTPS certificates from the system Certificate Store or Keychain." msgstr "Dans ce système, %s utilise des certificats HTTPS issus du système Magasin de Certificats ou Trousseau." -#: src/slic3r/GUI/DoubleSlider.cpp:950 +#: src/slic3r/GUI/DoubleSlider.cpp:1064 msgid "One layer mode" msgstr "Mode couche unique" -#: src/libslic3r/Print.cpp:1365 +#: src/libslic3r/Print.cpp:1391 msgid "One or more object were assigned an extruder that the printer does not have." msgstr "Un ou plusieurs objets ont été affectés à un extrudeur que l'imprimante ne possède pas." -#: src/libslic3r/PrintConfig.cpp:1903 src/libslic3r/PrintConfig.cpp:2676 +#: 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 "Créer uniquement des supports reposant sur le plateau. Ne pas créer pas de supports sur une impression." -#: src/libslic3r/PrintConfig.cpp:1027 +#: src/libslic3r/PrintConfig.cpp:1071 msgid "Only infill where needed" msgstr "Faire remplissage seulement où cela est nécessaire" -#: src/slic3r/GUI/Tab.cpp:2373 +#: src/slic3r/GUI/Tab.cpp:2542 msgid "Only lift Z" msgstr "Lever Z seulement" -#: src/libslic3r/PrintConfig.cpp:1570 +#: src/libslic3r/PrintConfig.cpp:1678 msgid "Only lift Z above" msgstr "Lever Z seulement au-dessus de" -#: src/libslic3r/PrintConfig.cpp:1579 +#: src/libslic3r/PrintConfig.cpp:1687 msgid "Only lift Z below" msgstr "Lever Z seulement en-dessous de" -#: src/libslic3r/PrintConfig.cpp:1348 +#: src/libslic3r/PrintConfig.cpp:1456 msgid "Only retract when crossing perimeters" msgstr "Rétracter uniquement lors du franchissement de périmètres" -#: src/slic3r/GUI/Tab.cpp:1187 +#: src/slic3r/GUI/ConfigWizard.cpp:714 +msgid "Only the following installed printers are compatible with the selected filament:" +msgstr "Seules les imprimantes installées suivantes sont compatibles avec le filament sélectionné :" + +#: src/slic3r/GUI/Tab.cpp:1517 msgid "Ooze prevention" msgstr "Prévention des coulures" -#: src/libslic3r/Print.cpp:1266 +#: src/libslic3r/Print.cpp:1292 msgid "Ooze prevention is currently not supported with the wipe tower enabled." msgstr "La prévention des écoulements n'est actuellement pas supportée lorsque la tour de nettoyage est activée." -#: src/slic3r/GUI/MainFrame.cpp:408 +#: src/slic3r/GUI/MainFrame.cpp:1398 +msgid "Open &PrusaSlicer" +msgstr "Ouvrir &PrusaSlicer" + +#: src/slic3r/GUI/MainFrame.cpp:1391 +msgid "Open a G-code file" +msgstr "Ouvrir un fichier G-code" + +#: src/slic3r/GUI/MainFrame.cpp:63 src/slic3r/GUI/MainFrame.cpp:77 +#: src/slic3r/GUI/MainFrame.cpp:1262 +msgid "Open a new PrusaSlicer instance" +msgstr "Ouvrir une nouvelle instance de PrusaSlicer" + +#: src/slic3r/GUI/MainFrame.cpp:989 msgid "Open a project file" msgstr "Ouvrir un fichier de projet" -#: src/slic3r/GUI/Tab.cpp:1729 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:330 msgid "Open CA certificate file" msgstr "Ouvrir le fichier de certificat CA" @@ -5093,116 +5887,150 @@ msgstr "Ouvrir la page du journal des modifications" msgid "Open download page" msgstr "Ouvrir la page de téléchargement" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:113 +#: src/slic3r/GUI/NotificationManager.cpp:742 +msgid "Open Folder." +msgstr "Ouvrir un répertoire." + +#: src/slic3r/Utils/Process.cpp:151 +msgid "Open G-code file:" +msgstr "Ouvrir un fichier G-code :" + +#: src/slic3r/GUI/MainFrame.cpp:66 src/slic3r/GUI/MainFrame.cpp:1141 +msgid "Open G-code viewer" +msgstr "Ouvrir la visionneuse de G-code" + +#: src/slic3r/GUI/MainFrame.cpp:79 +msgid "Open new G-code viewer" +msgstr "Ouvrir une nouvelle visionneuse de G-code" + +#: src/slic3r/GUI/MainFrame.cpp:63 src/slic3r/GUI/MainFrame.cpp:1262 +msgid "Open new instance" +msgstr "Ouvrir une nouvelle instance" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:106 msgid "Open project STL/OBJ/AMF/3MF with config, clear plater" msgstr "Ouvrir un projet STL/OBJ/AMF/3MF avec configuration, libérer le plateau" -#: src/slic3r/GUI/MainFrame.cpp:693 +#: src/slic3r/GUI/MainFrame.cpp:77 src/slic3r/GUI/MainFrame.cpp:1398 +msgid "Open PrusaSlicer" +msgstr "Ouvrir PrusaSlicer" + +#: src/slic3r/GUI/MainFrame.cpp:918 src/slic3r/GUI/MainFrame.cpp:1317 #, c-format msgid "Open the %s website in your browser" msgstr "Ouvrir le site web de %s dans votre navigateur" -#: src/slic3r/GUI/MainFrame.cpp:684 +#: src/slic3r/GUI/MainFrame.cpp:909 src/slic3r/GUI/MainFrame.cpp:1308 msgid "Open the Prusa3D drivers download page in your browser" msgstr "Ouvrir la page de téléchargement des drivers Prusa3D dans votre navigateur" -#: src/slic3r/GUI/MainFrame.cpp:686 +#: src/slic3r/GUI/MainFrame.cpp:911 src/slic3r/GUI/MainFrame.cpp:1310 msgid "Open the software releases page in your browser" msgstr "Ouvrir la page des publications du logiciel dans votre navigateur" -#: src/slic3r/GUI/Plater.cpp:4040 +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:220 src/slic3r/GUI/Plater.cpp:3961 msgid "Optimize orientation" msgstr "Optimiser l'orientation" -#: src/slic3r/GUI/Plater.cpp:2767 +#: src/slic3r/GUI/Plater.cpp:1555 msgid "Optimize Rotation" msgstr "Optimiser la Rotation" -#: src/slic3r/GUI/Plater.cpp:4040 +#: src/slic3r/GUI/Plater.cpp:3962 msgid "Optimize the rotation of the object for better print results." msgstr "Optimiser la rotation de l'objet pour un meilleur résultat d'impression." -#: src/libslic3r/PrintConfig.cpp:137 +#: src/libslic3r/PrintConfig.cpp:170 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 "Optimiser les déplacements afin de minimiser le franchissement de périmètres. Ceci est surtout utile avec les extruder Bowden qui sont sujets aux coulures. Cette fonctionnalité ralentit l'impression et la génération du G-code." -#: src/slic3r/GUI/Tab.cpp:1131 +#: src/slic3r/GUI/GCodeViewer.cpp:2525 src/slic3r/GUI/GUI_Preview.cpp:320 +#: src/slic3r/GUI/GUI_Preview.cpp:333 +msgid "Options" +msgstr "Options" + +#: src/slic3r/GUI/Tab.cpp:1460 msgid "Options for support material and raft" msgstr "Options pour le matériau de support et le radeau" -#: src/slic3r/GUI/DoubleSlider.cpp:989 +#: src/slic3r/GUI/Mouse3DController.cpp:315 +msgid "Options:" +msgstr "Options :" + +#: src/slic3r/GUI/DoubleSlider.cpp:1112 msgid "or press \"+\" key" msgstr "ou appuyez sur la touche \"+\"" -#: src/slic3r/GUI/Plater.cpp:2892 +#: src/slic3r/GUI/Jobs/RotoptimizeJob.cpp:74 msgid "Orientation found." msgstr "Orientation trouvée." -#: src/slic3r/GUI/Plater.cpp:2891 +#: src/slic3r/GUI/Jobs/RotoptimizeJob.cpp:73 msgid "Orientation search canceled." msgstr "Recherche de l'orientation annulée." -#: src/slic3r/GUI/BedShapeDialog.cpp:84 +#: src/slic3r/GUI/BedShapeDialog.cpp:94 msgid "Origin" msgstr "Origine" -#: src/slic3r/GUI/Tab.cpp:1227 +#: src/slic3r/GUI/Tab.cpp:1557 msgid "Other" msgstr "Autre" -#: src/libslic3r/PrintConfig.cpp:144 src/libslic3r/PrintConfig.cpp:2064 +#: src/libslic3r/PrintConfig.cpp:177 src/libslic3r/PrintConfig.cpp:2206 msgid "Other layers" msgstr "Autres couches" -#: src/slic3r/GUI/ConfigWizard.cpp:856 +#: src/slic3r/GUI/ConfigWizard.cpp:1222 msgid "Other Vendors" msgstr "Autres Fabriquants" -#: src/slic3r/GUI/Tab.cpp:1238 src/slic3r/GUI/Tab.cpp:3666 +#: src/slic3r/GUI/Tab.cpp:1568 src/slic3r/GUI/Tab.cpp:4085 msgid "Output file" msgstr "Fichier de sortie" -#: src/libslic3r/PrintConfig.cpp:3493 +#: src/libslic3r/PrintConfig.cpp:3692 msgid "Output File" msgstr "Fichier de Sortie" -#: src/libslic3r/PrintConfig.cpp:1363 +#: src/libslic3r/PrintConfig.cpp:1471 msgid "Output filename format" msgstr "Format du nom de fichier de sortie" -#: src/libslic3r/PrintConfig.cpp:3381 +#: src/libslic3r/PrintConfig.cpp:3580 msgid "Output Model Info" msgstr "Information du Modèle de Sortie" -#: src/slic3r/GUI/Tab.cpp:1230 src/slic3r/GUI/Tab.cpp:3665 +#: src/slic3r/GUI/Tab.cpp:1560 src/slic3r/GUI/Tab.cpp:4084 msgid "Output options" msgstr "Options de sortie" -#: src/slic3r/GUI/GUI_Preview.cpp:239 src/libslic3r/ExtrusionEntity.cpp:312 +#: src/slic3r/GUI/GUI_Preview.cpp:303 src/libslic3r/ExtrusionEntity.cpp:316 +#: src/libslic3r/ExtrusionEntity.cpp:340 msgid "Overhang perimeter" msgstr "Périmètre en surplomb" -#: src/libslic3r/PrintConfig.cpp:2042 +#: src/libslic3r/PrintConfig.cpp:2184 msgid "Overhang threshold" msgstr "Seuil de surplomb" -#: src/slic3r/GUI/Tab.cpp:1215 +#: src/slic3r/GUI/Tab.cpp:1545 msgid "Overlap" msgstr "Chevauchement" -#: src/slic3r/GUI/MainFrame.cpp:614 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "P&rint Settings Tab" msgstr "Onglet des &Réglages d'Impression" -#: src/slic3r/GUI/GUI_ObjectList.cpp:107 src/slic3r/GUI/GUI_ObjectList.cpp:625 -#: src/slic3r/GUI/Plater.cpp:635 src/slic3r/GUI/Tab.cpp:3636 -#: src/slic3r/GUI/Tab.cpp:3637 src/libslic3r/PrintConfig.cpp:2781 -#: src/libslic3r/PrintConfig.cpp:2788 src/libslic3r/PrintConfig.cpp:2802 -#: src/libslic3r/PrintConfig.cpp:2813 src/libslic3r/PrintConfig.cpp:2823 -#: src/libslic3r/PrintConfig.cpp:2845 src/libslic3r/PrintConfig.cpp:2856 -#: src/libslic3r/PrintConfig.cpp:2863 src/libslic3r/PrintConfig.cpp:2870 -#: src/libslic3r/PrintConfig.cpp:2881 src/libslic3r/PrintConfig.cpp:2890 -#: src/libslic3r/PrintConfig.cpp:2899 +#: src/slic3r/GUI/GUI_ObjectList.cpp:105 src/slic3r/GUI/GUI_ObjectList.cpp:664 +#: src/slic3r/GUI/Plater.cpp:501 src/slic3r/GUI/Tab.cpp:4055 +#: src/slic3r/GUI/Tab.cpp:4056 src/slic3r/GUI/Tab.cpp:4127 +#: src/libslic3r/PrintConfig.cpp:2945 src/libslic3r/PrintConfig.cpp:2952 +#: src/libslic3r/PrintConfig.cpp:2966 src/libslic3r/PrintConfig.cpp:2977 +#: src/libslic3r/PrintConfig.cpp:2987 src/libslic3r/PrintConfig.cpp:3009 +#: src/libslic3r/PrintConfig.cpp:3020 src/libslic3r/PrintConfig.cpp:3027 +#: src/libslic3r/PrintConfig.cpp:3034 src/libslic3r/PrintConfig.cpp:3045 +#: src/libslic3r/PrintConfig.cpp:3054 src/libslic3r/PrintConfig.cpp:3063 msgid "Pad" msgstr "Socle" @@ -5210,150 +6038,186 @@ msgstr "Socle" msgid "Pad and Support" msgstr "Socle et Support" -#: src/libslic3r/PrintConfig.cpp:2855 +#: src/slic3r/GUI/Tab.cpp:4127 src/libslic3r/PrintConfig.cpp:3019 msgid "Pad around object" msgstr "Socle autour de l'objet" -#: src/libslic3r/PrintConfig.cpp:2862 +#: src/libslic3r/PrintConfig.cpp:3026 msgid "Pad around object everywhere" msgstr "Socle partout autour de l'objet" -#: src/libslic3r/PrintConfig.cpp:2811 +#: src/libslic3r/PrintConfig.cpp:2975 msgid "Pad brim size" msgstr "Taille du bord de socle" -#: src/libslic3r/SLA/Pad.cpp:691 +#: src/libslic3r/SLA/Pad.cpp:532 msgid "Pad brim size is too small for the current configuration." msgstr "La taille du bord de socle est trop petite pour la configuration actuelle." -#: src/libslic3r/PrintConfig.cpp:2898 +#: src/libslic3r/PrintConfig.cpp:3062 msgid "Pad object connector penetration" msgstr "Pénétration du connecteur de l'objet socle" -#: src/libslic3r/PrintConfig.cpp:2880 +#: src/libslic3r/PrintConfig.cpp:3044 msgid "Pad object connector stride" msgstr "Pas du connecteur de l'objet socle" -#: src/libslic3r/PrintConfig.cpp:2889 +#: src/libslic3r/PrintConfig.cpp:3053 msgid "Pad object connector width" msgstr "Largeur du connecteur de l'objet socle" -#: src/libslic3r/PrintConfig.cpp:2869 +#: src/libslic3r/PrintConfig.cpp:3033 msgid "Pad object gap" msgstr "Espace entre l'objet et le socle" -#: src/libslic3r/PrintConfig.cpp:2797 +#: src/libslic3r/PrintConfig.cpp:2961 msgid "Pad wall height" msgstr "Hauteur de la paroi du socle" -#: src/libslic3r/PrintConfig.cpp:2844 +#: src/libslic3r/PrintConfig.cpp:3008 msgid "Pad wall slope" msgstr "Inclinaison de la paroi du socle" -#: src/libslic3r/PrintConfig.cpp:2787 +#: src/libslic3r/PrintConfig.cpp:2951 msgid "Pad wall thickness" msgstr "Épaisseur de la paroi du socle" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:171 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 msgid "Page Down" msgstr "Page Down" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:170 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 msgid "Page Up" msgstr "Page Up" -#: src/slic3r/GUI/Field.cpp:139 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:33 +msgid "Paint-on supports" +msgstr "Supports peints" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:178 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:159 +msgid "Paints all facets inside, regardless of their orientation." +msgstr "Peint toutes les facettes à l'intérieur, quelle que soit leur orientation." + +#: src/slic3r/GUI/Field.cpp:187 msgid "parameter name" msgstr "nom du paramètre" -#: src/slic3r/GUI/Field.cpp:243 +#: src/slic3r/GUI/Field.cpp:291 msgid "Parameter validation" msgstr "Validation du paramètre" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3418 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3551 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3881 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4014 msgid "Part" msgstr "Pièce" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2494 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2886 msgid "Part manipulation" msgstr "Manipulation d'une pièce" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2483 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2875 msgid "Part Settings to modify" msgstr "Réglages de la pièce à modifier" -#: src/slic3r/GUI/GLCanvas3D.cpp:4514 +#: src/libslic3r/PrintConfig.cpp:138 +msgid "Password" +msgstr "Mot de passe" + +#: src/slic3r/GUI/GLCanvas3D.cpp:4880 msgid "Paste" msgstr "Coller" -#: src/slic3r/GUI/MainFrame.cpp:592 +#: src/slic3r/GUI/MainFrame.cpp:1198 msgid "Paste clipboard" msgstr "Coller le presse-papier" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:133 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:128 msgid "Paste from clipboard" msgstr "Coller depuis le presse-papier" -#: src/slic3r/GUI/Plater.cpp:5606 +#: src/slic3r/GUI/Plater.cpp:5803 msgid "Paste From Clipboard" msgstr "Coller Depuis le Presse-Papier" -#: src/libslic3r/PrintConfig.cpp:2002 +#: src/libslic3r/PrintConfig.cpp:2144 msgid "Pattern" msgstr "Motif" -#: src/libslic3r/PrintConfig.cpp:1891 +#: src/libslic3r/PrintConfig.cpp:2033 msgid "Pattern angle" msgstr "Angle du motif" -#: src/libslic3r/PrintConfig.cpp:2016 +#: src/libslic3r/PrintConfig.cpp:2158 msgid "Pattern spacing" msgstr "Espacement du motif" -#: src/libslic3r/PrintConfig.cpp:2004 +#: src/libslic3r/PrintConfig.cpp:2146 msgid "Pattern used to generate support material." msgstr "Motif utilisé pour générer les supports." -#: src/slic3r/GUI/Plater.cpp:1261 +#: src/slic3r/GUI/GCodeViewer.cpp:2437 src/slic3r/GUI/GCodeViewer.cpp:2460 +#: src/slic3r/GUI/Plater.cpp:1199 msgid "Pause" msgstr "Pause" -#: src/slic3r/GUI/DoubleSlider.cpp:1009 +#: src/slic3r/GUI/DoubleSlider.cpp:1133 msgid "Pause print (\"%1%\")" msgstr "Mettre en pause l'impression (\"%1%\")" -#: src/slic3r/GUI/GLCanvas3D.cpp:934 src/slic3r/GUI/GLCanvas3D.cpp:943 -#: src/slic3r/GUI/GLCanvas3D.cpp:982 +#: src/slic3r/GUI/Tab.cpp:2209 src/libslic3r/PrintConfig.cpp:1969 +msgid "Pause Print G-code" +msgstr "G-code de pause de l'impression" + +#: 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 "Pause d'impression ou G-code personnalisé" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:175 +#: src/libslic3r/PrintConfig.cpp:1147 +msgid "Percent of a flow rate relative to object's normal layer height." +msgstr "Pourcentage d'un débit par rapport à la hauteur de couche normale de l'objet." + +#: src/slic3r/GUI/GCodeViewer.cpp:2233 +msgid "Percentage" +msgstr "Pourcentage" + +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:177 msgid "Perform cut" msgstr "Effectuer la coupe" -#: src/libslic3r/PrintConfig.cpp:2927 +#: src/libslic3r/PrintConfig.cpp:3091 msgid "Performance vs accuracy of calculation. Lower values may produce unwanted artifacts." msgstr "Performance vs précision du calcul. Des valeurs plus faibles peuvent produire des artefacts indésirables." -#: src/slic3r/GUI/GUI_Preview.cpp:237 src/libslic3r/ExtrusionEntity.cpp:310 +#: src/slic3r/GUI/GUI_Preview.cpp:301 src/libslic3r/ExtrusionEntity.cpp:314 +#: src/libslic3r/ExtrusionEntity.cpp:336 msgid "Perimeter" msgstr "Périmètre" -#: src/libslic3r/PrintConfig.cpp:1408 +#: src/libslic3r/PrintConfig.cpp:1516 msgid "Perimeter extruder" msgstr "Extrudeur pour les périmètres" -#: src/slic3r/GUI/PresetHints.cpp:165 +#: src/slic3r/GUI/PresetHints.cpp:164 msgid "perimeters" msgstr "périmètres" -#: src/libslic3r/PrintConfig.cpp:1399 src/libslic3r/PrintConfig.cpp:1417 -#: src/libslic3r/PrintConfig.cpp:1430 src/libslic3r/PrintConfig.cpp:1440 +#: src/libslic3r/PrintConfig.cpp:1507 src/libslic3r/PrintConfig.cpp:1525 +#: src/libslic3r/PrintConfig.cpp:1538 src/libslic3r/PrintConfig.cpp:1548 msgid "Perimeters" msgstr "Périmètres" -#: src/slic3r/GUI/ConfigWizard.cpp:860 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:159 +msgid "Physical Printer" +msgstr "Imprimante physique" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:789 +#: src/slic3r/GUI/PresetComboBoxes.cpp:948 +msgid "Physical printers" +msgstr "Imprimantes physiques" + +#: src/slic3r/GUI/ConfigWizard.cpp:1226 #, c-format msgid "Pick another vendor supported by %s" msgstr "Choisissez un autre fournisseur pris en charge par %s" @@ -5362,128 +6226,148 @@ msgstr "Choisissez un autre fournisseur pris en charge par %s" msgid "Picture sizes to be stored into a .gcode and .sl1 files" msgstr "Tailles d'image devant être stockées dans des fichiers .gcode et .sl1" -#: src/libslic3r/PrintConfig.cpp:2681 +#: src/libslic3r/PrintConfig.cpp:2822 +msgid "Pillar connection mode" +msgstr "Mode de connexion par pilier" + +#: src/libslic3r/PrintConfig.cpp:2791 +msgid "Pillar diameter" +msgstr "Diamètre du pilier" + +#: src/libslic3r/PrintConfig.cpp:2845 msgid "Pillar widening factor" msgstr "Facteur d'élargissement du pilier" -#: src/slic3r/GUI/ConfigManipulation.cpp:330 +#: src/slic3r/GUI/ConfigManipulation.cpp:335 msgid "Pinhead diameter should be smaller than the pillar diameter." msgstr "Le diamètre de la tête d'épingle doit être plus petit que le diamètre du pilier." -#: src/slic3r/GUI/DoubleSlider.cpp:79 +#: src/libslic3r/PrintConfig.cpp:2763 +msgid "Pinhead front diameter" +msgstr "Diamètre avant de la tête d'épingle" + +#: src/libslic3r/PrintConfig.cpp:2781 +msgid "Pinhead width" +msgstr "Largeur de la tête d'épingle" + +#: src/slic3r/GUI/DoubleSlider.cpp:110 msgid "Place bearings in slots and resume printing" msgstr "Placer les roulements dans les fentes et reprendre l'impression" -#: src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp:45 +#: src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp:41 msgid "Place on face" msgstr "Positionner sur la surface" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:192 src/slic3r/GUI/MainFrame.cpp:204 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:190 src/slic3r/GUI/MainFrame.cpp:340 +#: src/slic3r/GUI/MainFrame.cpp:352 msgid "Plater" msgstr "Plateau" -#: src/slic3r/GUI/GUI_App.cpp:1085 +#: src/slic3r/GUI/GUI_App.cpp:1877 msgid "Please check and fix your object list." msgstr "Veuillez vérifier et réparer votre liste d'objet." -#: src/slic3r/GUI/Plater.cpp:2312 src/slic3r/GUI/Tab.cpp:2959 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:209 src/slic3r/GUI/Plater.cpp:2255 +#: src/slic3r/GUI/Tab.cpp:3188 msgid "Please check your object list before preset changing." msgstr "Veuillez vérifier votre liste d'objet avant le changement de préréglage." -#: src/slic3r/GUI/Plater.cpp:3286 +#: src/slic3r/GUI/Plater.cpp:3089 msgid "Please select the file to reload" msgstr "Veuillez sélectionner le fichier à recharger" -#: src/slic3r/GUI/AboutDialog.cpp:39 src/slic3r/GUI/AboutDialog.cpp:291 +#: src/slic3r/GUI/AboutDialog.cpp:43 src/slic3r/GUI/AboutDialog.cpp:48 +#: src/slic3r/GUI/AboutDialog.cpp:317 msgid "Portions copyright" msgstr "Copyright des sections" -#: src/libslic3r/PrintConfig.cpp:2400 +#: src/libslic3r/PrintConfig.cpp:2543 msgid "Portrait" msgstr "Portrait" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:215 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:457 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:223 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:505 msgid "Position" msgstr "Position" -#: src/slic3r/GUI/Tab.cpp:2367 +#: src/slic3r/GUI/Tab.cpp:2536 msgid "Position (for multi-extruder printers)" msgstr "Position (pour les imprimantes multi-extrudeurs)" -#: src/libslic3r/PrintConfig.cpp:1623 +#: src/libslic3r/PrintConfig.cpp:1731 msgid "Position of perimeters starting points." msgstr "Position des points de départ des périmètres." -#: src/libslic3r/PrintConfig.cpp:2224 +#: src/libslic3r/PrintConfig.cpp:2367 msgid "Position X" msgstr "Position X" -#: src/libslic3r/PrintConfig.cpp:2231 +#: src/libslic3r/PrintConfig.cpp:2374 msgid "Position Y" msgstr "Position Y" -#: src/slic3r/GUI/Tab.cpp:1245 src/libslic3r/PrintConfig.cpp:1453 +#: src/slic3r/GUI/Tab.cpp:1575 src/libslic3r/PrintConfig.cpp:1561 msgid "Post-processing scripts" msgstr "Scripts de post-traitement" -#: src/slic3r/GUI/MainFrame.cpp:629 +#: src/slic3r/GUI/MainFrame.cpp:1237 msgid "Pre&view" msgstr "Pré&visualisation" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:149 src/slic3r/GUI/Preferences.cpp:10 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:143 src/slic3r/GUI/Preferences.cpp:12 msgid "Preferences" msgstr "Préférences" -#: src/libslic3r/PrintConfig.cpp:1641 +#: src/libslic3r/PrintConfig.cpp:1749 msgid "Preferred direction of the seam" msgstr "Direction préférée de la jointure" -#: src/libslic3r/PrintConfig.cpp:1652 +#: src/libslic3r/PrintConfig.cpp:1760 msgid "Preferred direction of the seam - jitter" msgstr "Direction préférée de la jointure - gigue" -#: src/libslic3r/PrintObject.cpp:255 +#: src/libslic3r/PrintObject.cpp:261 msgid "Preparing infill" msgstr "Préparation du remplissage" -#: src/slic3r/GUI/Tab.cpp:2920 -#, c-format -msgid "Preset (%s)" -msgstr "Préréglage (%s)" +#: src/slic3r/GUI/GUI_App.cpp:855 +msgid "Preparing settings tabs" +msgstr "Préparation des onglets de réglage" -#: src/slic3r/GUI/Tab.cpp:3082 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1009 +msgid "Preset \"%1%\" has the following unsaved changes:" +msgstr "Le préréglage \"%1%\" comporte les modifications non enregistrées suivantes :" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1014 +msgid "Preset \"%1%\" is not compatible with the new print profile and it has the following unsaved changes:" +msgstr "Le préréglage \"%1%\" n’est pas compatible avec le nouveau profil d’impression et comporte les modifications non enregistrées suivantes :" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1013 +msgid "Preset \"%1%\" is not compatible with the new printer profile and it has the following unsaved changes:" +msgstr "Le préréglage \"%1%\" n’est pas compatible avec le nouveau profil d’imprimante et comporte les modifications non enregistrées suivantes :" + +#: src/slic3r/GUI/SavePresetDialog.cpp:136 +msgid "Preset with name \"%1%\" already exists and is imcopatible with selected printer." +msgstr "Le préréglage avec le nom \"%1%\" existe déjà et est incompatible avec l'imprimante sélectionnée." + +#: src/slic3r/GUI/SavePresetDialog.cpp:148 msgid "Preset with name \"%1%\" already exists." msgstr "Un préréglage avec le nom \"%1%\" existe déjà." -#: src/slic3r/GUI/Tab.cpp:3029 +#: src/slic3r/GUI/SavePresetDialog.cpp:219 msgctxt "PresetName" msgid "Copy" msgstr "Copie" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:163 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:157 msgid "Press to activate deselection rectangle" msgstr "Appuyer pour activer le rectangle de déselection" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:197 -msgid "Press to activate one direction scaling in Gizmo scale" -msgstr "" -"Appuyez pour activer le redimensionnement\n" -"dans une direction pour le Gizmo" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:162 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:156 msgid "Press to activate selection rectangle" msgstr "Appuyer pour activer le rectangle de sélection" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:198 -msgid "" -"Press to scale (in Gizmo scale) or rotate (in Gizmo rotate)\n" -"selected objects around their own center" -msgstr "" -"Appuyer pour redimensionner (à l'échelle du Gizmo) ou faire pivoter (rotation du Gizmo)\n" -"les objets sélectionnés autour de leur propre centre" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:161 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:155 msgid "" "Press to select multiple objects\n" "or move multiple objects with mouse" @@ -5491,164 +6375,189 @@ msgstr "" "Clicquez pour sélectionner plusieurs objets\n" "ou pour déplacer plusieurs objets avec la souris" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:195 -#, no-c-format +#: src/slic3r/GUI/KBShortcutsDialog.cpp:221 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:222 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:231 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:232 msgid "" -"Press to snap by 5% in Gizmo scale\n" -"or to snap by 1mm in Gizmo move" +"Press to speed up 5 times while moving thumb\n" +"with arrow keys or mouse wheel" msgstr "" -"Appuyer pour modifier de 5% à l'échelle du Gizmo\n" -"ou pour modifier d'1 mm le mouvement du Gizmo" +"Appuyez pour accélérer 5 fois tout en déplaçant le pouce\n" +"avec les touches fléchées ou la molette de la souris" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:211 src/slic3r/GUI/Plater.cpp:4105 -#: src/slic3r/GUI/Tab.cpp:2390 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:212 src/slic3r/GUI/Plater.cpp:4052 +#: src/slic3r/GUI/Tab.cpp:2559 msgid "Preview" msgstr "Aperçu" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:42 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:41 msgid "Preview hollowed and drilled model" msgstr "Aperçu du modèle évidé et percé" -#: src/slic3r/GUI/MainFrame.cpp:790 +#: src/slic3r/GUI/MainFrame.cpp:1491 msgid "Previously sliced file (" msgstr "Fichier précédemment découpé (" -#: src/libslic3r/PrintConfig.cpp:1851 +#: src/libslic3r/PrintConfig.cpp:1993 msgid "Prime all printing extruders" msgstr "Préparer tous les extrudeurs d'impression" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:51 src/slic3r/GUI/Preset.cpp:1521 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:51 src/libslic3r/Preset.cpp:1300 msgid "print" msgstr "imprimer" -#: src/slic3r/GUI/MainFrame.cpp:648 +#: src/slic3r/GUI/GCodeViewer.cpp:2436 src/slic3r/GUI/GCodeViewer.cpp:2451 +msgid "Print" +msgstr "Imprimer" + +#: src/slic3r/GUI/MainFrame.cpp:1258 msgid "Print &Host Upload Queue" msgstr "File d'Attente de Téléchargement de l'&Hôte d'Impression" -#: src/libslic3r/PrintConfig.cpp:471 +#: src/libslic3r/PrintConfig.cpp:507 msgid "Print contour perimeters from the outermost one to the innermost one instead of the default inverse order." msgstr "Imprimer les périmètres de l'extérieur vers l'intérieur au lieu de l'ordre par défaut qui est inversé." -#: src/slic3r/GUI/ConfigWizard.cpp:952 +#: src/slic3r/GUI/ConfigWizard.cpp:1318 msgid "Print Diameters" msgstr "Diamètres d'Impression" -#: src/slic3r/GUI/Tab.cpp:1944 src/slic3r/GUI/Tab.cpp:2123 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:209 src/slic3r/GUI/Tab.cpp:2024 msgid "Print Host upload" msgstr "Téléchargement de l'Hôte d'Impression" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:142 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:138 #: src/slic3r/GUI/PrintHostDialogs.cpp:136 msgid "Print host upload queue" msgstr "File d'Attente de téléchargement de l'hôte d'impression" -#: src/slic3r/GUI/DoubleSlider.cpp:970 +#: src/slic3r/GUI/DoubleSlider.cpp:1093 msgid "Print mode" msgstr "Mode d'impression" -#: src/slic3r/GUI/Tab.hpp:328 src/slic3r/GUI/Tab.hpp:431 +#: src/slic3r/GUI/GCodeViewer.cpp:2579 src/slic3r/GUI/GUI_Preview.cpp:1476 +msgid "Print pauses" +msgstr "Pauses d'impression" + +#: src/slic3r/GUI/Tab.hpp:378 src/slic3r/GUI/Tab.hpp:502 msgid "Print Settings" msgstr "Réglages d'Impression" -#: src/slic3r/GUI/Plater.cpp:815 +#: src/slic3r/GUI/Plater.cpp:690 msgid "Print settings" msgstr "Réglages d'impression" -#: src/slic3r/GUI/Tab.cpp:1478 +#: src/slic3r/GUI/GLCanvas3D.cpp:4303 src/slic3r/GUI/GLCanvas3D.cpp:4939 +msgid "Print Settings Tab" +msgstr "Onglet Réglages d'impression" + +#: src/slic3r/GUI/Tab.cpp:1824 msgid "Print speed override" msgstr "Contournement de la vitesse d'impression" -#: src/libslic3r/GCode.cpp:638 +#: src/libslic3r/GCode.cpp:623 msgid "Print z" msgstr "Imprimer z" -#: src/slic3r/GUI/MainFrame.cpp:621 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Print&er Settings Tab" msgstr "Onglet des Réglages de l'Imprimant&e" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1621 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1750 msgid "Printable" msgstr "Imprimable" -#: src/slic3r/GUI/Plater.cpp:819 +#: src/slic3r/GUI/Plater.cpp:694 msgid "Printer" msgstr "Imprimante" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:53 src/slic3r/GUI/Preset.cpp:1525 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:53 src/libslic3r/Preset.cpp:1304 msgid "printer" msgstr "imprimer" -#: src/libslic3r/PrintConfig.cpp:2439 src/libslic3r/PrintConfig.cpp:2440 +#: src/libslic3r/PrintConfig.cpp:2582 src/libslic3r/PrintConfig.cpp:2583 msgid "Printer absolute correction" msgstr "Correction absolue de l'imprimante" -#: src/libslic3r/PrintConfig.cpp:2456 src/libslic3r/PrintConfig.cpp:2457 +#: src/libslic3r/PrintConfig.cpp:2599 src/libslic3r/PrintConfig.cpp:2600 msgid "Printer gamma correction" msgstr "Correction gamma de l'imprimante" -#: src/slic3r/GUI/Tab.cpp:976 +#: src/slic3r/GUI/Tab.cpp:1294 msgid "printer model" msgstr "modèle de l'imprimante" -#: src/libslic3r/PrintConfig.cpp:1472 +#: src/libslic3r/PrintConfig.cpp:1580 msgid "Printer notes" msgstr "Notes de l'imprimante" -#: src/libslic3r/PrintConfig.cpp:2431 src/libslic3r/PrintConfig.cpp:2432 -#: src/libslic3r/PrintConfig.cpp:2433 +#: src/libslic3r/PrintConfig.cpp:144 +msgid "Printer preset name" +msgstr "Nom du préréglage de l'imprimante" + +#: src/libslic3r/PrintConfig.cpp:2574 src/libslic3r/PrintConfig.cpp:2575 +#: src/libslic3r/PrintConfig.cpp:2576 msgid "Printer scaling correction" msgstr "Correction de redimensionnement de l'imprimante" -#: src/slic3r/GUI/Tab.hpp:391 +#: src/slic3r/GUI/Tab.hpp:453 msgid "Printer Settings" msgstr "Réglages de l'Imprimante" +#: src/slic3r/GUI/GLCanvas3D.cpp:4305 src/slic3r/GUI/GLCanvas3D.cpp:4941 +msgid "Printer Settings Tab" +msgstr "Onglet Réglages de l'imprimante" + #: src/libslic3r/PrintConfig.cpp:43 src/libslic3r/PrintConfig.cpp:44 msgid "Printer technology" msgstr "Technologie de l'imprimante" -#: src/libslic3r/PrintConfig.cpp:1466 +#: src/libslic3r/PrintConfig.cpp:1574 msgid "Printer type" msgstr "Type d'imprimante" -#: src/libslic3r/PrintConfig.cpp:1487 +#: src/libslic3r/PrintConfig.cpp:1595 msgid "Printer variant" msgstr "Variante d'imprimante" -#: src/libslic3r/PrintConfig.cpp:1481 +#: src/libslic3r/PrintConfig.cpp:1589 msgid "Printer vendor" msgstr "Fabriquant de l'imprimante" -#: src/libslic3r/Print.cpp:1388 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:476 +msgid "Printer with name \"%1%\" already exists." +msgstr "L'imprimante avec le nom \"%1%\" existe déjà." + +#: src/slic3r/GUI/ConfigWizard.cpp:587 +msgid "Printer:" +msgstr "Imprimante :" + +#: src/libslic3r/Print.cpp:1414 msgid "Printing with multiple extruders of differing nozzle diameters. If support is to be printed with the current extruder (support_material_extruder == 0 or support_material_interface_extruder == 0), all nozzles have to be of the same diameter." msgstr "Impression avec plusieurs extrudeurs de différents diamètres de buse. Si le support doit être imprimé avec l'extrudeur courant (support_material_extruder == 0 ou support_material_interface_extruder == 0), toutes les buses doivent avoir le même diamètre." #. TRN "Processing input_file_basename" -#: src/slic3r/GUI/MainFrame.cpp:849 +#: src/slic3r/GUI/MainFrame.cpp:1550 #, c-format msgid "Processing %s" msgstr "Traitement %s" -#: src/slic3r/GUI/Plater.cpp:2283 -#, c-format -msgid "Processing input file %s" -msgstr "Traitement du fichier d'entrée %s" - -#: src/libslic3r/PrintObject.cpp:108 +#: src/libslic3r/PrintObject.cpp:114 msgid "Processing triangulated mesh" msgstr "Traitement de maillage triangulé" -#: src/slic3r/GUI/Tab.cpp:1259 src/slic3r/GUI/Tab.cpp:1549 -#: src/slic3r/GUI/Tab.cpp:2020 src/slic3r/GUI/Tab.cpp:2136 -#: src/slic3r/GUI/Tab.cpp:3544 src/slic3r/GUI/Tab.cpp:3672 +#: src/slic3r/GUI/Tab.cpp:1589 src/slic3r/GUI/Tab.cpp:1896 +#: src/slic3r/GUI/Tab.cpp:2229 src/slic3r/GUI/Tab.cpp:2305 +#: src/slic3r/GUI/Tab.cpp:3960 src/slic3r/GUI/Tab.cpp:4091 msgid "Profile dependencies" msgstr "Dépendances du profil" -#: src/slic3r/GUI/ConfigWizard.cpp:566 +#: src/slic3r/GUI/ConfigWizard.cpp:590 msgid "Profile:" msgstr "Profil :" -#: src/slic3r/GUI/PrintHostDialogs.cpp:150 +#: src/slic3r/GUI/PrintHostDialogs.cpp:148 msgid "Progress" msgstr "Progression" @@ -5656,23 +6565,35 @@ msgstr "Progression" msgid "Progress:" msgstr "Progression :" -#: src/slic3r/GUI/MainFrame.cpp:684 +#: src/slic3r/GUI/MainFrame.cpp:909 src/slic3r/GUI/MainFrame.cpp:1308 msgid "Prusa 3D &Drivers" msgstr "&Drivers Prusa 3D" -#: src/slic3r/GUI/ConfigWizard.cpp:1995 +#: src/slic3r/GUI/ConfigWizard.cpp:2506 msgid "Prusa FFF Technology Printers" msgstr "Imprimantes à Technologie FFF Prusa" -#: src/slic3r/GUI/ConfigWizard.cpp:1998 +#: src/slic3r/GUI/ConfigWizard.cpp:2509 msgid "Prusa MSLA Technology Printers" msgstr "Imprimantes à Technologie MSLA Prusa" -#: src/slic3r/GUI/AboutDialog.cpp:260 +#: src/slic3r/Utils/Http.cpp:78 +msgid "PrusaSlicer detected system SSL certificate store in: %1%" +msgstr "PrusaSlicer a détecté un stockage de certificats SSL système dans : %1%" + +#: src/slic3r/GUI/GUI_Init.cpp:85 src/slic3r/GUI/GUI_Init.cpp:88 +msgid "PrusaSlicer GUI initialization failed" +msgstr "L'initialisation de la GUI de PrusaSlicer a échoué" + +#: src/slic3r/GUI/AboutDialog.cpp:285 msgid "PrusaSlicer is based on Slic3r by Alessandro Ranellucci and the RepRap community." msgstr "PrusaSlicer est basé sur Slic3r par Alessandro Ranellucci et la communauté RepRap." -#: src/slic3r/GUI/GLCanvas3DManager.cpp:284 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:525 +msgid "PrusaSlicer is closing: Unsaved Changes" +msgstr "PrusaSlicer se ferme : modifications non enregistrées" + +#: src/slic3r/GUI/OpenGLManager.cpp:259 #, c-format msgid "" "PrusaSlicer requires OpenGL 2.0 capable graphics driver to run correctly, \n" @@ -5685,7 +6606,11 @@ msgstr "" msgid "PrusaSlicer version" msgstr "Version de PrusaSlicer" -#: src/slic3r/GUI/ConfigWizard.cpp:815 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:662 +msgid "PrusaSlicer will remember your action." +msgstr "PrusaSlicer se souviendra de votre action." + +#: src/slic3r/GUI/ConfigWizard.cpp:1174 msgid "" "PrusaSlicer's user interfaces comes in three variants:\n" "Simple, Advanced, and Expert.\n" @@ -5695,64 +6620,80 @@ msgstr "" "Simple, Avancé et Expert.\n" "Le mode Simple affiche uniquement les paramètres les plus fréquemment utilisés pertinents pour l'impression 3D régulière. Les deux autres offrent des réglages fins de plus en plus sophistiqués, ils conviennent respectivement aux utilisateurs avancés et experts." -#: src/libslic3r/PrintConfig.cpp:2254 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:668 +msgid "PrusaSlicer: Don't ask me again" +msgstr "PrusaSlicer : Ne me demandez plus" + +#: src/libslic3r/PrintConfig.cpp:2397 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 "La purge après le changement d'outil sera faite dans le remplissage de l'objet. Cela diminue le gaspillage mais peut rallonger le temps d'impression à cause des mouvements supplémentaires." -#: src/slic3r/GUI/Plater.cpp:544 +#: src/slic3r/GUI/Plater.cpp:410 msgid "Purging volumes" msgstr "Volumes de purge" -#: src/libslic3r/PrintConfig.cpp:2207 +#: src/libslic3r/PrintConfig.cpp:2350 msgid "Purging volumes - load/unload volumes" msgstr "Volumes de purge - volumes de chargement/déchargement" -#: src/libslic3r/PrintConfig.cpp:2214 +#: src/libslic3r/PrintConfig.cpp:2357 msgid "Purging volumes - matrix" msgstr "Volumes de purge - matrice" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:44 +#: src/libslic3r/PrintConfig.cpp:1201 +msgid "Purpose of Machine Limits" +msgstr "Objectif des limites de la machine" + +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:43 msgid "Quality" msgstr "Qualité" -#: src/slic3r/GUI/Tab.cpp:1080 +#: src/slic3r/GUI/Tab.cpp:1402 msgid "Quality (slower slicing)" msgstr "Qualité (découpage plus lent)" -#: src/slic3r/GUI/GLCanvas3D.cpp:273 +#: src/slic3r/GUI/GLCanvas3D.cpp:260 msgid "Quality / Speed" msgstr "Qualité / Vitesse" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1182 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1530 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1536 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1849 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:61 +msgid "Quick" +msgstr "Rapide" + +#: 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 #, c-format msgid "Quick Add Settings (%s)" msgstr "Ajout de Réglages Rapide (%s)" -#: src/slic3r/GUI/MainFrame.cpp:512 +#: src/slic3r/GUI/MainFrame.cpp:1113 msgid "Quick Slice" msgstr "Découpage Rapide" -#: src/slic3r/GUI/MainFrame.cpp:518 +#: src/slic3r/GUI/MainFrame.cpp:1119 msgid "Quick Slice and Save As" msgstr "Découpage Rapide et Enregistrer Sous" -#: src/slic3r/GUI/MainFrame.cpp:540 +#: src/slic3r/GUI/MainFrame.cpp:1144 src/slic3r/GUI/MainFrame.cpp:1402 #, c-format msgid "Quit %s" msgstr "Quitter %s" -#: src/slic3r/GUI/GLCanvas3D.cpp:294 src/libslic3r/PrintConfig.cpp:511 +#: src/slic3r/GUI/GUI_App.cpp:396 +msgid "Quit, I will move my data now" +msgstr "Quitter, je vais déplacer mes données maintenant" + +#: src/slic3r/GUI/GLCanvas3D.cpp:280 src/libslic3r/PrintConfig.cpp:547 msgid "Radius" msgstr "Rayon" -#: src/slic3r/GUI/Tab.cpp:1127 +#: src/slic3r/GUI/Tab.cpp:1456 msgid "Raft" msgstr "Radeau" -#: src/libslic3r/PrintConfig.cpp:1501 +#: src/libslic3r/PrintConfig.cpp:1609 msgid "Raft layers" msgstr "Couches du radeau" @@ -5778,27 +6719,27 @@ msgstr "Espacement de la ligne de ramming" msgid "Ramming line width" msgstr "Largeur de la ligne d'expulsion" -#: src/libslic3r/PrintConfig.cpp:694 +#: src/libslic3r/PrintConfig.cpp:730 msgid "Ramming parameters" msgstr "Paramètres de l'expulsion" -#: src/slic3r/GUI/Tab.cpp:1505 +#: src/slic3r/GUI/Tab.cpp:1850 msgid "Ramming settings" msgstr "Réglages de l'expulsion" -#: src/libslic3r/PrintConfig.cpp:1629 +#: src/libslic3r/PrintConfig.cpp:1737 msgid "Random" msgstr "Aléatoire" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:94 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:96 msgid "Range" msgstr "Zone" -#: src/libslic3r/SLAPrintSteps.cpp:65 +#: src/libslic3r/SLAPrintSteps.cpp:66 msgid "Rasterizing layers" msgstr "Tramage des couches" -#: src/slic3r/GUI/MainFrame.cpp:596 +#: src/slic3r/GUI/MainFrame.cpp:1202 msgid "Re&load from disk" msgstr "Recharger à partir du dis&que" @@ -5810,210 +6751,243 @@ msgstr "Reconfigurer" msgid "Ready" msgstr "Prêt" -#: src/slic3r/GUI/Plater.cpp:3115 +#: src/slic3r/GUI/Plater.cpp:2915 msgid "Ready to slice" msgstr "Prêt à découper" -#: src/slic3r/GUI/MainFrame.cpp:669 src/libslic3r/PrintConfig.cpp:1632 +#: src/slic3r/GUI/MainFrame.cpp:966 src/slic3r/GUI/MainFrame.cpp:1286 +#: src/libslic3r/PrintConfig.cpp:1740 msgid "Rear" msgstr "Arrière" -#: src/slic3r/GUI/MainFrame.cpp:669 +#: src/slic3r/GUI/MainFrame.cpp:966 src/slic3r/GUI/MainFrame.cpp:1286 msgid "Rear View" msgstr "Vue Arrière" -#: src/slic3r/GUI/MainFrame.cpp:413 +#: src/slic3r/GUI/MainFrame.cpp:994 msgid "Recent projects" msgstr "Proj&ets récents" -#: src/slic3r/GUI/PresetHints.cpp:263 +#: src/slic3r/GUI/PresetHints.cpp:262 #, c-format msgid "Recommended object thin wall thickness for layer height %.2f and" msgstr "Épaisseur des parois fines de l'objet recommandée pour la hauteur de couche %.2f et" -#: src/slic3r/GUI/PresetHints.cpp:274 +#: src/slic3r/GUI/PresetHints.cpp:273 msgid "Recommended object thin wall thickness: Not available due to excessively small extrusion width." msgstr "Épaisseur recommandée pour la paroi mince de l'objet : Non disponible en raison de la largeur d'extrusion excessivement petite." -#: src/slic3r/GUI/PresetHints.cpp:247 +#: src/slic3r/GUI/PresetHints.cpp:246 msgid "Recommended object thin wall thickness: Not available due to invalid layer height." msgstr "Épaisseur des parois fines de l'objet recommandée : Non disponible car la hauteur de couche est invalide." -#: src/slic3r/GUI/GUI_App.cpp:450 src/slic3r/GUI/GUI_App.cpp:459 +#: src/slic3r/GUI/GUI_App.cpp:1102 src/slic3r/GUI/GUI_App.cpp:1115 msgid "Recreating" msgstr "Re-création" -#: src/slic3r/GUI/BedShapeDialog.cpp:73 +#: src/slic3r/GUI/BedShapeDialog.cpp:141 msgid "Rectangular" msgstr "Rectangle" -#: src/libslic3r/PrintConfig.cpp:425 src/libslic3r/PrintConfig.cpp:843 -#: src/libslic3r/PrintConfig.cpp:2009 +#: src/libslic3r/PrintConfig.cpp:460 src/libslic3r/PrintConfig.cpp:881 +#: src/libslic3r/PrintConfig.cpp:2151 msgid "Rectilinear" msgstr "Rectiligne" -#: src/libslic3r/PrintConfig.cpp:2010 +#: src/libslic3r/PrintConfig.cpp:2152 msgid "Rectilinear grid" msgstr "Grille rectiligne" -#: src/slic3r/GUI/GLCanvas3D.cpp:4657 src/slic3r/GUI/KBShortcutsDialog.cpp:131 -#: src/slic3r/GUI/MainFrame.cpp:584 +#: src/slic3r/GUI/GLCanvas3D.cpp:5067 src/slic3r/GUI/KBShortcutsDialog.cpp:126 +#: src/slic3r/GUI/MainFrame.cpp:1190 msgid "Redo" msgstr "Recommencer" -#: src/slic3r/GUI/GLCanvas3D.cpp:4065 +#: src/slic3r/GUI/GLCanvas3D.cpp:4382 #, c-format msgid "Redo %1$d Action" msgid_plural "Redo %1$d Actions" msgstr[0] "Répéter %1$d Action" msgstr[1] "Répéter %1$d Actions" -#: src/slic3r/GUI/GLCanvas3D.cpp:4047 +#: src/slic3r/GUI/GLCanvas3D.cpp:4361 msgid "Redo History" msgstr "Répéter Historique" -#: src/slic3r/GUI/Tab.cpp:1098 +#: src/slic3r/GUI/Tab.cpp:1426 msgid "Reducing printing time" msgstr "Réduction du temps d'impression" -#: src/slic3r/GUI/Plater.cpp:3452 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:327 +msgid "Refresh Printers" +msgstr "Actualiser les imprimantes" + +#: src/libslic3r/PrintConfig.cpp:145 +msgid "Related printer preset name" +msgstr "Nom du préréglage d'imprimante associé" + +#: src/slic3r/GUI/Plater.cpp:3257 msgid "Reload all from disk" msgstr "Tout recharger à partir du disque" -#: src/slic3r/GUI/ConfigWizard.cpp:798 src/slic3r/GUI/GUI_ObjectList.cpp:1664 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3956 src/slic3r/GUI/Plater.cpp:3225 -#: src/slic3r/GUI/Plater.cpp:3934 src/slic3r/GUI/Plater.cpp:3963 +#: src/slic3r/GUI/ConfigWizard.cpp:1157 src/slic3r/GUI/GUI_ObjectList.cpp:1793 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4439 src/slic3r/GUI/Plater.cpp:3028 +#: src/slic3r/GUI/Plater.cpp:3852 src/slic3r/GUI/Plater.cpp:3881 msgid "Reload from disk" msgstr "Recharger à partir du disque" -#: src/slic3r/GUI/Plater.cpp:3339 +#: src/slic3r/GUI/Plater.cpp:3142 msgid "Reload from:" msgstr "Recharger depuis :" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:134 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:129 msgid "Reload plater from disk" msgstr "Recharger le plateau depuis le disque" -#: src/slic3r/GUI/MainFrame.cpp:597 +#: src/slic3r/GUI/MainFrame.cpp:1203 msgid "Reload the plater from disk" msgstr "Recharger le plateau à partir du disque" -#: src/slic3r/GUI/Plater.cpp:3963 +#: src/slic3r/GUI/Plater.cpp:3881 msgid "Reload the selected object from disk" msgstr "Recharger l'objet sélectionné à partir du disque" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1664 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3956 src/slic3r/GUI/Plater.cpp:3934 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1793 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4439 src/slic3r/GUI/Plater.cpp:3852 msgid "Reload the selected volumes from disk" msgstr "Recharger les volumes sélectionnés à partir du disque" -#: src/slic3r/GUI/Preferences.cpp:39 +#: src/slic3r/GUI/GCodeViewer.cpp:2442 src/slic3r/GUI/GCodeViewer.cpp:2445 +msgid "Remaining time" +msgstr "Temps restant" + +#: src/slic3r/GUI/GUI_App.cpp:720 src/slic3r/GUI/UnsavedChangesDialog.cpp:653 +msgid "Remember my choice" +msgstr "Se souvenir de mon choix" + +#: src/slic3r/GUI/Preferences.cpp:52 msgid "Remember output directory" msgstr "Se souvenir du répertoire de sortie" -#: src/slic3r/GUI/Tab.cpp:3121 +#: src/slic3r/GUI/MainFrame.cpp:166 +msgid "Remember to check for updates at https://github.com/prusa3d/PrusaSlicer/releases" +msgstr "Pensez à vérifier les mises à jours sur https://github.com/prusa3d/PrusaSlicer/releases" + +#: src/slic3r/GUI/Tab.cpp:3386 msgid "remove" msgstr "retirer" -#: src/slic3r/GUI/BedShapeDialog.cpp:190 src/slic3r/GUI/BedShapeDialog.cpp:269 -#: src/slic3r/GUI/Tab.cpp:3124 +#: src/slic3r/GUI/BedShapeDialog.cpp:333 src/slic3r/GUI/BedShapeDialog.cpp:413 +#: src/slic3r/GUI/Tab.cpp:3423 msgid "Remove" msgstr "Retirer" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:48 msgid "Remove all holes" msgstr "Supprimer tous les trous" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:51 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:50 msgid "Remove all points" msgstr "Retirer tous les points" -#: src/slic3r/GUI/GLCanvas3D.cpp:246 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:52 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:35 +msgid "Remove all selection" +msgstr "Supprimer toute la sélection" + +#: src/slic3r/GUI/GLCanvas3D.cpp:239 msgid "Remove detail" msgstr "Supprimer les détails" -#: src/slic3r/GUI/Plater.cpp:879 -msgid "Remove device" -msgstr "Supprimer l'appareil" - #: src/slic3r/GUI/ExtruderSequenceDialog.cpp:182 msgid "Remove extruder from sequence" msgstr "Supprimer l'extrudeur de la séquence" -#: src/slic3r/GUI/GLCanvas3D.cpp:4537 src/slic3r/GUI/Plater.cpp:3942 +#: src/slic3r/GUI/GLCanvas3D.cpp:4903 src/slic3r/GUI/Plater.cpp:3860 msgid "Remove instance" msgstr "Supprimer l'instance" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:160 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:154 msgid "Remove Instance of the selected object" msgstr "Supprimer l'instance de l'objet sélectionné" -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:153 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:161 msgid "Remove layer range" msgstr "Supprimer la zone de couche" -#: src/slic3r/GUI/Plater.cpp:3942 +#: src/slic3r/GUI/Plater.cpp:3860 msgid "Remove one instance of the selected object" msgstr "Supprime une instance de l'objet sélectionné" -#: src/slic3r/GUI/GUI_ObjectSettings.cpp:95 +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:98 msgid "Remove parameter" msgstr "Supprimer le paramètre" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1364 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1211 msgid "Remove point" msgstr "Supprimer le point" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1367 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1214 msgid "Remove point from selection" msgstr "Supprimer le point de la sélection" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:47 msgid "Remove selected holes" msgstr "Supprimer les trous sélectionnés" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:50 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1371 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1218 msgid "Remove selected points" msgstr "Retirer les points sélectionnés" -#: src/slic3r/GUI/Plater.cpp:3931 src/slic3r/GUI/Plater.cpp:3953 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:51 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:34 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:368 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:378 +msgid "Remove selection" +msgstr "Supprimer la sélection" + +#: src/slic3r/GUI/Plater.cpp:3849 src/slic3r/GUI/Plater.cpp:3871 msgid "Remove the selected object" msgstr "Retirer l'objet sélectionné" -#: src/slic3r/GUI/ConfigWizard.cpp:453 +#: src/slic3r/GUI/ConfigWizard.cpp:456 msgid "Remove user profiles (a snapshot will be taken beforehand)" msgstr "Supprimer les profils utilisateurs (un instantané sera pris au préalable)" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1636 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1765 msgid "Rename" msgstr "Renommer" -#: src/slic3r/GUI/GUI_ObjectList.cpp:551 +#: src/slic3r/GUI/GUI_ObjectList.cpp:589 msgid "Rename Object" msgstr "Renommer l'Objet" -#: src/slic3r/GUI/GUI_ObjectList.cpp:551 +#: src/slic3r/GUI/GUI_ObjectList.cpp:589 msgid "Rename Sub-object" msgstr "Renommer le Sous-objet" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3803 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4266 msgid "Renaming" msgstr "Renommage" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:115 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:150 msgid "Renaming of the G-code after copying to the selected destination folder has failed. Current path is %1%.tmp. Please try exporting again." msgstr "La tentative pour renommer le G-code après l'avoir copié dans le dossier sélectionné a échoué. Le chemin actuel est %1%.tmp. Veuillez tenter à nouveau l'export." -#: src/libslic3r/PrintConfig.cpp:3515 +#: src/slic3r/GUI/Preferences.cpp:255 +msgid "Render" +msgstr "Rendre" + +#: src/libslic3r/PrintConfig.cpp:3720 msgid "Render with a software renderer" msgstr "Rendu avec avec un logiciel de rendu" -#: src/libslic3r/PrintConfig.cpp:3516 +#: src/libslic3r/PrintConfig.cpp:3721 msgid "Render with a software renderer. The bundled MESA software renderer is loaded instead of the default OpenGL driver." msgstr "Appliquer un rendu avec un logiciel de rendu. Le logiciel de rendu MESA qui est fourni est chargé à la place du pilote OpenGL présent par défaut." -#: src/slic3r/GUI/MainFrame.cpp:911 src/libslic3r/PrintConfig.cpp:3447 +#: src/slic3r/GUI/MainFrame.cpp:1612 src/libslic3r/PrintConfig.cpp:3646 msgid "Repair" msgstr "Réparer" @@ -6037,38 +7011,38 @@ msgstr "Le fichier 3MF réparé ne contient aucun volume" msgid "Repairing model by the Netfabb service" msgstr "Réparation d'un modèle par le service Netfabb" -#: src/slic3r/GUI/MainFrame.cpp:524 +#: src/slic3r/GUI/MainFrame.cpp:1125 msgid "Repeat last quick slice" msgstr "Répéter le dernier découpage rapide" -#: src/slic3r/GUI/MainFrame.cpp:524 +#: src/slic3r/GUI/MainFrame.cpp:1125 msgid "Repeat Last Quick Slice" msgstr "Répéter le Dernier Découpage Rapide" -#: src/slic3r/GUI/Tab.cpp:3083 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:477 msgid "Replace?" msgstr "Remplacer ?" -#: src/slic3r/GUI/MainFrame.cpp:703 +#: src/slic3r/GUI/MainFrame.cpp:928 src/slic3r/GUI/MainFrame.cpp:1327 msgid "Report an I&ssue" msgstr "S&ignaler un Problème" -#: src/slic3r/GUI/MainFrame.cpp:703 +#: src/slic3r/GUI/MainFrame.cpp:928 src/slic3r/GUI/MainFrame.cpp:1327 #, c-format msgid "Report an issue on %s" msgstr "Signaler un problème sur %s" -#: src/slic3r/Utils/PresetUpdater.cpp:713 +#: src/slic3r/Utils/PresetUpdater.cpp:733 #, c-format msgid "requires max. %s" msgstr "nécessite max. %s" -#: src/slic3r/Utils/PresetUpdater.cpp:710 +#: src/slic3r/Utils/PresetUpdater.cpp:730 #, c-format msgid "requires min. %s" msgstr "nécessite min. %s" -#: src/slic3r/Utils/PresetUpdater.cpp:705 +#: src/slic3r/Utils/PresetUpdater.cpp:726 #, c-format msgid "requires min. %s and max. %s" msgstr "nécessite min. %s et max. %s" @@ -6077,270 +7051,300 @@ msgstr "nécessite min. %s et max. %s" msgid "Rescan" msgstr "Scanner à nouveau" -#: src/slic3r/GUI/Tab.cpp:1906 -msgid "Rescan serial ports" -msgstr "Rescanner les ports série" - -#: src/slic3r/GUI/GLCanvas3D.cpp:313 +#: src/slic3r/GUI/GLCanvas3D.cpp:299 msgid "Reset" msgstr "Réinitialiser" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1373 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1220 msgid "Reset clipping plane" msgstr "Réinitialiser le plan de coupe" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:51 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:59 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:43 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:50 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:26 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:58 msgid "Reset direction" msgstr "Réinitialiser la direction" -#: src/slic3r/GUI/Plater.cpp:2723 +#: src/slic3r/GUI/Plater.cpp:2684 msgid "Reset Project" msgstr "Réinitialiser le Projet" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:363 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:372 msgid "Reset rotation" msgstr "Réinitialiser la rotation" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:385 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:394 msgid "Reset Rotation" msgstr "Réinitialiser la Rotation" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:397 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:399 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:407 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:409 msgid "Reset scale" msgstr "Réinitialiser l'échelle" -#: src/slic3r/GUI/GLCanvas3D.cpp:252 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:136 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:118 +msgid "Reset selection" +msgstr "Réinitialiser la sélection" + +#: src/slic3r/GUI/GLCanvas3D.cpp:243 msgid "Reset to base" msgstr "Réinitialiser à la base" -#: src/slic3r/GUI/Tab.cpp:2394 +#: src/slic3r/GUI/Tab.cpp:2564 msgid "Reset to Filament Color" msgstr "Réinitialiser la Couleur du Filament" -#: src/libslic3r/PrintConfig.cpp:1511 +#: src/libslic3r/PrintConfig.cpp:1619 msgid "Resolution" msgstr "Résolution" -#: src/libslic3r/PrintConfig.cpp:1529 +#: src/libslic3r/PrintConfig.cpp:1637 msgid "Retract amount before wipe" msgstr "Quantité de rétractation avant essuyage" -#: src/libslic3r/PrintConfig.cpp:1537 +#: src/libslic3r/PrintConfig.cpp:1645 msgid "Retract on layer change" msgstr "Rétracter lors des changements de couche" -#: src/slic3r/GUI/Tab.cpp:1324 src/slic3r/GUI/Tab.cpp:1383 -#: src/slic3r/GUI/Tab.cpp:2370 +#: src/slic3r/GUI/GCodeViewer.cpp:2494 src/slic3r/GUI/Tab.cpp:1670 +#: src/slic3r/GUI/Tab.cpp:2539 msgid "Retraction" msgstr "Rétraction" -#: src/libslic3r/PrintConfig.cpp:1523 +#: src/libslic3r/PrintConfig.cpp:1631 msgid "Retraction is not triggered when travel moves are shorter than this length." msgstr "La rétraction n'est pas déclenchée lorsque les déplacements sont plus courts que cette distance." -#: src/libslic3r/PrintConfig.cpp:1544 +#: src/libslic3r/PrintConfig.cpp:1652 msgid "Retraction Length" msgstr "Longueur de Rétractation" -#: src/libslic3r/PrintConfig.cpp:1552 +#: src/libslic3r/PrintConfig.cpp:1660 msgid "Retraction Length (Toolchange)" msgstr "Longueur de Rétractation (changement d'outil)" -#: src/libslic3r/PrintConfig.cpp:1604 src/libslic3r/PrintConfig.cpp:1605 +#: src/libslic3r/PrintConfig.cpp:1712 src/libslic3r/PrintConfig.cpp:1713 msgid "Retraction Speed" msgstr "Vitesse de Rétractation" -#: src/slic3r/GUI/Tab.cpp:2386 +#: src/slic3r/GUI/Tab.cpp:2555 msgid "Retraction when tool is disabled (advanced settings for multi-extruder setups)" msgstr "Rétractation lorsque l'outil est désactivé (réglages avancés pour les configurations multi-extrudeurs)" -#: src/slic3r/GUI/GUI_Preview.cpp:254 +#: src/slic3r/GUI/GCodeViewer.cpp:2528 src/slic3r/GUI/GUI_Preview.cpp:336 +#: src/slic3r/GUI/GUI_Preview.cpp:1472 msgid "Retractions" msgstr "Rétractions" -#: src/slic3r/GUI/MainFrame.cpp:673 +#: src/slic3r/GUI/Preferences.cpp:198 +msgid "Reverse direction of zoom with mouse wheel" +msgstr "Inverser la direction du zoom avec la molette de la souris" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1861 src/slic3r/GUI/Plater.cpp:4886 +msgid "Revert conversion from imperial units" +msgstr "Annuler la conversion des unités impériales" + +#: src/slic3r/GUI/MainFrame.cpp:970 src/slic3r/GUI/MainFrame.cpp:1290 msgid "Right" msgstr "Droite" -#: src/slic3r/GUI/GUI_ObjectList.cpp:402 +#: src/slic3r/GUI/GUI_ObjectList.cpp:449 msgid "Right button click the icon to change the object printable property" msgstr "Clic droit sur l'icône pour changer les propriétés imprimables de l'objet" -#: src/slic3r/GUI/GUI_ObjectList.cpp:396 +#: src/slic3r/GUI/GUI_ObjectList.cpp:443 msgid "Right button click the icon to change the object settings" msgstr "Clic droit sur l'icône pour changer les réglages de l'objet" -#: src/slic3r/GUI/GUI_ObjectList.cpp:359 +#: src/slic3r/GUI/GUI_ObjectList.cpp:406 msgid "Right button click the icon to fix STL through Netfabb" msgstr "Clic droit sur l'icône pour réparer le STL avec Netfabb" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1364 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1211 msgid "Right click" msgstr "Clic droit" -#: src/slic3r/GUI/GLCanvas3D.cpp:243 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:31 +msgid "Right mouse button" +msgstr "Bouton droit de la souris" + +#: src/slic3r/GUI/GLCanvas3D.cpp:237 msgid "Right mouse button:" msgstr "Clic droit souris :" -#: src/slic3r/GUI/MainFrame.cpp:673 +#: src/slic3r/GUI/MainFrame.cpp:970 src/slic3r/GUI/MainFrame.cpp:1290 msgid "Right View" msgstr "Vue Droite" -#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:449 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:480 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:499 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:517 -#: src/libslic3r/PrintConfig.cpp:3451 +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:513 +#: 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:3650 msgid "Rotate" msgstr "Pivoter" -#: src/libslic3r/PrintConfig.cpp:3456 +#: src/libslic3r/PrintConfig.cpp:3655 msgid "Rotate around X" msgstr "Pivoter autour de X" -#: src/libslic3r/PrintConfig.cpp:3461 +#: src/libslic3r/PrintConfig.cpp:3660 msgid "Rotate around Y" msgstr "Pivoter autour de Y" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:170 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:172 msgid "Rotate lower part upwards" msgstr "Pivoter la partie basse vers le haut" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:170 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 msgid "Rotate selection 45 degrees CCW" msgstr "Faire pivoter la sélection de 45 degrés dans le sens inverse des aiguilles d'une montre" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:171 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 msgid "Rotate selection 45 degrees CW" msgstr "Faire pivoter la sélection de 45 degrés dans le sens des aiguilles d'une montre" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:216 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:458 -#: src/slic3r/GUI/Mouse3DController.cpp:304 -#: src/slic3r/GUI/Mouse3DController.cpp:321 +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:210 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:224 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:506 +#: src/slic3r/GUI/Mouse3DController.cpp:288 +#: src/slic3r/GUI/Mouse3DController.cpp:309 msgid "Rotation" msgstr "Rotation" -#: src/libslic3r/PrintConfig.cpp:3457 +#: src/libslic3r/PrintConfig.cpp:3656 msgid "Rotation angle around the X axis in degrees." msgstr "Angle de rotation autour de l'axe X en degrés." -#: src/libslic3r/PrintConfig.cpp:3462 +#: src/libslic3r/PrintConfig.cpp:3661 msgid "Rotation angle around the Y axis in degrees." msgstr "Angle de rotation autour de l'axe Y en degrés." -#: src/libslic3r/PrintConfig.cpp:3452 +#: src/libslic3r/PrintConfig.cpp:3651 msgid "Rotation angle around the Z axis in degrees." msgstr "Angle de rotation autour de l'axe Z en degrés." -#: src/slic3r/GUI/GUI_App.cpp:797 +#: src/slic3r/GUI/GUI_App.cpp:1474 #, c-format msgid "Run %s" msgstr "Run %s" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:128 -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:478 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:163 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:520 msgid "Running post-processing scripts" msgstr "Exécuter des scripts de post-traitement" #: src/slic3r/GUI/RammingChart.cpp:76 src/slic3r/GUI/WipeTowerDialog.cpp:83 -#: src/libslic3r/PrintConfig.cpp:644 src/libslic3r/PrintConfig.cpp:688 -#: src/libslic3r/PrintConfig.cpp:703 src/libslic3r/PrintConfig.cpp:2408 -#: src/libslic3r/PrintConfig.cpp:2417 src/libslic3r/PrintConfig.cpp:2527 -#: src/libslic3r/PrintConfig.cpp:2535 src/libslic3r/PrintConfig.cpp:2543 -#: src/libslic3r/PrintConfig.cpp:2550 src/libslic3r/PrintConfig.cpp:2558 -#: src/libslic3r/PrintConfig.cpp:2566 +#: src/libslic3r/PrintConfig.cpp:680 src/libslic3r/PrintConfig.cpp:724 +#: src/libslic3r/PrintConfig.cpp:739 src/libslic3r/PrintConfig.cpp:2551 +#: src/libslic3r/PrintConfig.cpp:2560 src/libslic3r/PrintConfig.cpp:2670 +#: src/libslic3r/PrintConfig.cpp:2678 src/libslic3r/PrintConfig.cpp:2686 +#: src/libslic3r/PrintConfig.cpp:2693 src/libslic3r/PrintConfig.cpp:2701 +#: src/libslic3r/PrintConfig.cpp:2709 msgid "s" msgstr "s" -#: src/slic3r/GUI/MainFrame.cpp:481 src/slic3r/GUI/MainFrame.cpp:750 +#: src/slic3r/GUI/MainFrame.cpp:1072 src/slic3r/GUI/MainFrame.cpp:1449 msgid "S&end G-code" msgstr "&Envoyer le G-code" -#: src/slic3r/GUI/MainFrame.cpp:750 +#: src/slic3r/GUI/MainFrame.cpp:1449 msgid "S&end to print" msgstr "Envoyer pour imprimer" -#. TRN Preset -#: src/slic3r/GUI/Tab.cpp:3417 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:642 +msgid "Save" +msgstr "Enregistrer" + +#: src/slic3r/GUI/SavePresetDialog.cpp:72 #, c-format msgid "Save %s as:" msgstr "Enregistrer %s sous :" -#: src/slic3r/GUI/MainFrame.cpp:826 +#: src/slic3r/GUI/MainFrame.cpp:1527 #, c-format msgid "Save %s file as:" msgstr "Enregistrer le fichier %s sous :" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1046 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:912 msgid "Save changes?" msgstr "Enregistrer les modifications ?" -#: src/libslic3r/PrintConfig.cpp:3386 +#: src/libslic3r/PrintConfig.cpp:3585 msgid "Save config file" msgstr "Sauvegarder le fichier de configuration" -#: src/slic3r/GUI/MainFrame.cpp:925 +#: src/slic3r/GUI/MainFrame.cpp:1626 msgid "Save configuration as:" msgstr "Enregistrer la configuration sous :" -#: src/libslic3r/PrintConfig.cpp:3387 +#: src/libslic3r/PrintConfig.cpp:3586 msgid "Save configuration to the specified file." msgstr "Enregistrer la configuration dans le fichier spécifié." #. TRN "Save current Settings" -#: src/slic3r/GUI/Tab.cpp:133 +#: src/slic3r/GUI/Tab.cpp:203 #, c-format msgid "Save current %s" msgstr "Enregistrer l'état actuel %s" -#: src/slic3r/GUI/MainFrame.cpp:446 +#: src/slic3r/GUI/MainFrame.cpp:1028 msgid "Save current project file" msgstr "Sauvegarder le fichier du projet en cours" -#: src/slic3r/GUI/MainFrame.cpp:450 src/slic3r/GUI/MainFrame.cpp:452 +#: src/slic3r/GUI/MainFrame.cpp:1032 src/slic3r/GUI/MainFrame.cpp:1034 msgid "Save current project file as" msgstr "Sauvegarder le fichier du projet en cours sous" -#: src/slic3r/GUI/Plater.cpp:2604 +#: src/slic3r/GUI/Plater.cpp:2566 msgid "Save file as:" msgstr "Enregistrer le fichier sous :" -#: src/slic3r/GUI/Plater.cpp:4839 +#: src/slic3r/GUI/Plater.cpp:4975 msgid "Save G-code file as:" msgstr "Sauvegarder le fichier G-code en tant que :" -#: src/slic3r/GUI/MainFrame.cpp:899 +#: src/slic3r/GUI/MainFrame.cpp:1600 msgid "Save OBJ file (less prone to coordinate errors than STL) as:" msgstr "Enregistrer le fichier OBJ (moins enclin aux erreurs de coordonnées que le STL) sous :" -#: src/slic3r/GUI/Tab.hpp:443 +#: src/slic3r/GUI/SavePresetDialog.cpp:190 +#: src/slic3r/GUI/SavePresetDialog.cpp:196 msgid "Save preset" msgstr "Enregistrer le préréglage" -#: src/slic3r/GUI/MainFrame.cpp:980 +#: src/slic3r/GUI/MainFrame.cpp:1681 msgid "Save presets bundle as:" msgstr "Enregistrer le lot de préréglages sous :" -#: src/slic3r/GUI/MainFrame.cpp:450 src/slic3r/GUI/MainFrame.cpp:452 +#: src/slic3r/GUI/MainFrame.cpp:1032 src/slic3r/GUI/MainFrame.cpp:1034 msgid "Save Project &as" msgstr "Sauveg&arder le Projet &sous" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:114 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:107 msgid "Save project (3mf)" msgstr "Sauvegarder le projet (3mf)" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:115 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:108 msgid "Save project as (3mf)" msgstr "Sauvegarder le projet en tant que (3mf)" -#: src/slic3r/GUI/Plater.cpp:4839 +#: src/slic3r/GUI/Plater.cpp:4975 msgid "Save SL1 file as:" msgstr "Sauvegarder le fichier SL1 sous :" -#: src/slic3r/GUI/MainFrame.cpp:838 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:744 +msgid "Save the selected options to preset \"%1%\"." +msgstr "Enregistrer les options sélectionnées dans le préréglage \"%1%\"." + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:740 +msgid "Save the selected options." +msgstr "Enregistrer les options sélectionnées." + +#: src/slic3r/GUI/MainFrame.cpp:1539 msgid "Save zip file as:" msgstr "Sauvegarder le fichier zip sous :" @@ -6350,159 +7354,184 @@ msgstr "Sauvegarder le fichier zip sous :" msgid "Saving mesh into the 3MF container failed." msgstr "Échec de la sauvegarde du maillage dans le contenant 3MF." -#: src/slic3r/GUI/Gizmos/GLGizmoScale.cpp:47 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:230 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:500 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:518 -#: src/libslic3r/PrintConfig.cpp:3466 +#: src/slic3r/GUI/Gizmos/GLGizmoScale.cpp:78 +#: 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:3665 msgid "Scale" msgstr "Redimensionner" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:459 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:507 msgid "Scale factors" msgstr "Échelle" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:196 -msgid "" -"Scale selection to fit print volume\n" -"in Gizmo scale" -msgstr "" -"Redimensionner la sélection pour l'adapter au volume d'impression\n" -"à l'échelle du Gizmo" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1724 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1852 msgid "Scale the selected object to fit the print volume" msgstr "Redimensionner l'objet sélectionné pour qu'il s'ajuste au volume d'impression" -#: src/libslic3r/PrintConfig.cpp:3475 +#: src/libslic3r/PrintConfig.cpp:3674 msgid "Scale to Fit" msgstr "Redimensionner pour Ajuster" -#: src/slic3r/GUI/Selection.cpp:939 +#: src/slic3r/GUI/Selection.cpp:988 msgid "Scale To Fit" msgstr "Redimensionner pour Ajuster" -#: src/libslic3r/PrintConfig.cpp:3476 +#: src/libslic3r/PrintConfig.cpp:3675 msgid "Scale to fit the given volume." msgstr "Redimensionner pour ajuster à un volume donné." -#: src/slic3r/GUI/GUI_ObjectList.cpp:1724 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1852 msgid "Scale to print volume" msgstr "Redimensionner pour ajuster au volume d'impression" -#: src/libslic3r/PrintConfig.cpp:3467 +#: src/libslic3r/PrintConfig.cpp:3666 msgid "Scaling factor or percentage." msgstr "Facteur ou pourcentage de redimensionnement." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:505 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:545 msgid "Scheduling upload to `%1%`. See Window -> Print Host Upload Queue" msgstr "Planification du téléchargement dans `%1%`. Voir : Imprimer la file d'attente de téléchargement de l'hôte" -#: src/libslic3r/PrintConfig.cpp:1621 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:46 +msgid "Seam painting" +msgstr "Peinture de jointure" + +#: src/libslic3r/PrintConfig.cpp:1729 msgid "Seam position" msgstr "Position de la jointure" -#: src/libslic3r/PrintConfig.cpp:1642 +#: src/libslic3r/PrintConfig.cpp:1750 msgid "Seam preferred direction" msgstr "Direction préférée de la jointure" -#: src/libslic3r/PrintConfig.cpp:1651 +#: src/libslic3r/PrintConfig.cpp:1759 msgid "Seam preferred direction jitter" msgstr "Gigue de la direction préférée de la jointure" +#: src/slic3r/GUI/MainFrame.cpp:1207 +msgid "Searc&h" +msgstr "Recherc&her" + +#: src/slic3r/GUI/GLCanvas3D.cpp:4402 src/slic3r/GUI/GLCanvas3D.cpp:4957 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:130 src/slic3r/GUI/Search.cpp:426 +msgid "Search" +msgstr "Rechercher" + +#: src/slic3r/GUI/ImGuiWrapper.cpp:803 src/slic3r/GUI/Search.cpp:460 +msgid "Search in English" +msgstr "Rechercher en anglais" + +#: src/slic3r/GUI/MainFrame.cpp:1216 +msgid "Search in settings" +msgstr "Rechercher dans les réglages" + +#: src/slic3r/GUI/Tab.cpp:222 +msgid "Search in settings [%1%]" +msgstr "Rechercher dans les réglages [%1%]" + #: src/slic3r/GUI/BonjourDialog.cpp:218 msgid "Searching for devices" msgstr "Recherche des dispositifs" -#: src/slic3r/GUI/Plater.cpp:2858 +#: src/slic3r/GUI/Jobs/RotoptimizeJob.cpp:41 msgid "Searching for optimal orientation" msgstr "Recherche de l'orientation optimale" -#: src/slic3r/GUI/GUI_App.cpp:1103 +#: src/slic3r/GUI/NotificationManager.hpp:321 +msgid "See more." +msgstr "Voir plus." + +#: src/slic3r/GUI/NotificationManager.hpp:322 +msgid "See Releases page." +msgstr "Voir la page des versions." + +#: src/slic3r/GUI/GUI_App.cpp:1895 msgid "Select a gcode file:" msgstr "Sélectionnez un fichier gcode :" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:126 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:121 msgid "Select all objects" msgstr "Sélectionner tous les objets" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1370 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1217 msgid "Select all points" msgstr "Sélectionner tous les points" -#: src/slic3r/GUI/ConfigWizard.cpp:1976 +#: src/slic3r/GUI/ConfigWizard.cpp:2487 msgid "Select all standard printers" msgstr "Sélectionner toutes les imprimantes standard" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1368 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1215 msgid "Select by rectangle" msgstr "Sélectionner par rectangle" -#: src/slic3r/GUI/MainFrame.cpp:944 src/slic3r/GUI/MainFrame.cpp:1006 +#: src/slic3r/GUI/MainFrame.cpp:1645 src/slic3r/GUI/MainFrame.cpp:1707 msgid "Select configuration to load:" msgstr "Sélectionner la configuration à charger :" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:82 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:88 msgid "Select coordinate space, in which the transformation will be performed." msgstr "Sélectionnez un espace de coordonnées dans lequel la transformation sera effectuée." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3971 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4458 msgid "Select extruder number:" msgstr "Sélectionner le numéro de l'extrudeur :" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:138 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:134 msgid "Select Filament Settings Tab" msgstr "Sélectionner l'Onglet des Réglages du Filament" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:136 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:132 msgid "Select Plater Tab" msgstr "Sélectionner l'Onglet du Plateau" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:137 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:133 msgid "Select Print Settings Tab" msgstr "Sélectionner l'Onglet des Réglages d'Impression" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:139 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:135 msgid "Select Printer Settings Tab" msgstr "Sélectionner l'Onglet des Réglages de l'Imprimante" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1265 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1396 msgid "Select showing settings" msgstr "Sélectionner les réglages d'affichage" -#: src/slic3r/GUI/GUI_App.cpp:629 +#: src/slic3r/GUI/GUI_App.cpp:1295 msgid "Select the language" msgstr "Sélectionner la langue" -#: src/slic3r/GUI/Tab.cpp:57 +#: src/slic3r/GUI/Tab.cpp:108 msgid "Select the print profiles this profile is compatible with." msgstr "Sélectionner les profils d'impression avec lesquels ce profil est compatible." -#: src/slic3r/GUI/Tab.cpp:51 +#: src/slic3r/GUI/Tab.cpp:102 msgid "Select the printers this profile is compatible with." msgstr "Sélectionner les imprimantes avec lesquelles ce profil est compatible." -#: src/slic3r/GUI/MainFrame.cpp:889 +#: src/slic3r/GUI/MainFrame.cpp:1590 msgid "Select the STL file to repair:" msgstr "Sélectionner le fichier STL à réparer :" -#: src/slic3r/GUI/Preferences.cpp:237 +#: src/slic3r/GUI/Preferences.cpp:391 msgid "Select toolbar icon size in respect to the default one." msgstr "Sélectionner la taille de l'icône de la barre d'outil par rapport à la taille par défaut." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3553 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4016 msgid "Select type of part" msgstr "Sélectionner le type de pièce" -#: src/slic3r/GUI/Plater.cpp:638 +#: src/slic3r/GUI/Plater.cpp:504 msgid "Select what kind of pad do you need" msgstr "Choisissez le type de socle dont vous avez besoin" -#: src/slic3r/GUI/Plater.cpp:498 +#: src/slic3r/GUI/Plater.cpp:364 msgid "Select what kind of support do you need" msgstr "Choisissez le type de support dont vous avez besoin" -#: src/slic3r/GUI/DoubleSlider.cpp:1917 +#: src/slic3r/GUI/DoubleSlider.cpp:2135 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" @@ -6512,59 +7541,59 @@ msgstr "" "NON si vous souhaitez que tous les changements d'outil soient remplacés par des modifications de couleur, \n" "ou ANNULER pour ne pas les modifier." -#: src/slic3r/GUI/Selection.cpp:146 +#: src/slic3r/GUI/Selection.cpp:191 msgid "Selection-Add" msgstr "Sélection-Ajouter" -#: src/slic3r/GUI/Selection.cpp:376 +#: src/slic3r/GUI/Selection.cpp:421 msgid "Selection-Add All" msgstr "Sélection-Ajouter Tout" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3299 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3762 msgid "Selection-Add from list" msgstr "Sélection-Ajouter depuis la liste" -#: src/slic3r/GUI/GLCanvas3D.cpp:6598 +#: src/slic3r/GUI/GLCanvas3D.cpp:7193 msgid "Selection-Add from rectangle" msgstr "Sélection-Ajouter depuis le rectangle" -#: src/slic3r/GUI/Selection.cpp:256 +#: src/slic3r/GUI/Selection.cpp:301 msgid "Selection-Add Instance" msgstr "Sélection-Ajouter Instance" -#: src/slic3r/GUI/Selection.cpp:219 +#: src/slic3r/GUI/Selection.cpp:264 msgid "Selection-Add Object" msgstr "Sélection-Ajouter Objet" -#: src/slic3r/GUI/Selection.cpp:187 +#: src/slic3r/GUI/Selection.cpp:232 msgid "Selection-Remove" msgstr "Sélection-Retirer" -#: src/slic3r/GUI/Selection.cpp:402 +#: src/slic3r/GUI/Selection.cpp:447 msgid "Selection-Remove All" msgstr "Sélection-Retirer Tout" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3291 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3754 msgid "Selection-Remove from list" msgstr "Sélection-Retirer de la liste" -#: src/slic3r/GUI/GLCanvas3D.cpp:6617 +#: src/slic3r/GUI/GLCanvas3D.cpp:7212 msgid "Selection-Remove from rectangle" msgstr "Sélection-Retirer du rectangle" -#: src/slic3r/GUI/Selection.cpp:275 +#: src/slic3r/GUI/Selection.cpp:320 msgid "Selection-Remove Instance" msgstr "Sélection-Supprimer l'Instance" -#: src/slic3r/GUI/Selection.cpp:238 +#: src/slic3r/GUI/Selection.cpp:283 msgid "Selection-Remove Object" msgstr "Sélection-Supprimer l'Objet" -#: src/slic3r/GUI/MainFrame.cpp:566 +#: src/slic3r/GUI/MainFrame.cpp:1172 msgid "Selects all objects" msgstr "Sélectionner tous les objets" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:123 src/slic3r/GUI/Plater.cpp:5522 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:116 src/slic3r/GUI/Plater.cpp:5707 msgid "Send G-code" msgstr "Envoyer le G-code" @@ -6572,29 +7601,29 @@ msgstr "Envoyer le G-code" msgid "Send G-Code to printer host" msgstr "Envoyer le G-Code à l'hôte d'imprimante" -#: src/slic3r/GUI/MainFrame.cpp:481 +#: src/slic3r/GUI/MainFrame.cpp:1072 msgid "Send to print current plate as G-code" msgstr "Envoyer pour imprimer le plateau actuel en tant que G-code" -#: src/slic3r/GUI/Plater.cpp:878 src/slic3r/GUI/Plater.cpp:5522 +#: src/slic3r/GUI/Plater.cpp:753 src/slic3r/GUI/Plater.cpp:5707 msgid "Send to printer" msgstr "Envoyer à l'imprimante" -#: src/slic3r/GUI/GLCanvas3D.cpp:1305 +#: src/slic3r/GUI/GLCanvas3D.cpp:1312 msgid "Seq." msgstr "Seq." -#: src/slic3r/GUI/Tab.cpp:1231 +#: src/slic3r/GUI/Tab.cpp:1561 msgid "Sequential printing" msgstr "Impression séquentielle" -#: src/slic3r/GUI/Tab.cpp:1901 src/libslic3r/PrintConfig.cpp:1661 -msgid "Serial port" -msgstr "Port série" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:235 +msgid "Sequential Slider" +msgstr "Curseur séquentiel" -#: src/libslic3r/PrintConfig.cpp:1669 -msgid "Serial port speed" -msgstr "Vitesse du port série" +#: src/slic3r/GUI/Preferences.cpp:230 +msgid "Sequential slider applied only to top layer" +msgstr "Curseur séquentiel appliqué uniquement à la couche supérieur" #: src/slic3r/GUI/FirmwareDialog.cpp:807 msgid "Serial port:" @@ -6604,17 +7633,16 @@ msgstr "Port série :" msgid "Service name" msgstr "Nom du service" -#: src/slic3r/GUI/Tab.cpp:1802 src/slic3r/GUI/Tab.cpp:2046 -#: src/slic3r/GUI/Tab.cpp:3176 +#: src/slic3r/GUI/Tab.cpp:3509 src/slic3r/GUI/Tab.cpp:3588 msgid "Set" msgstr "Appliquer" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1599 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1611 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1728 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1740 msgid "Set as a Separated Object" msgstr "Définir comme Objet Séparé" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1611 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1740 msgid "Set as a Separated Objects" msgstr "Définir comme Objets Séparés" @@ -6622,7 +7650,7 @@ msgstr "Définir comme Objets Séparés" msgid "Set extruder change for every" msgstr "Définir le changement d'extrudeur pour chaque" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1671 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1800 msgid "Set extruder for selected items" msgstr "Définir l'extrudeur pour les items sélectionnés" @@ -6630,7 +7658,7 @@ msgstr "Définir l'extrudeur pour les items sélectionnés" msgid "Set extruder sequence" msgstr "Définir la séquence d'extrudeur" -#: src/slic3r/GUI/DoubleSlider.cpp:1532 +#: src/slic3r/GUI/DoubleSlider.cpp:1728 msgid "Set extruder sequence for the entire print" msgstr "Définir la séquence d'extrusion pour l'ensemble de l'impression" @@ -6638,84 +7666,84 @@ msgstr "Définir la séquence d'extrusion pour l'ensemble de l'impression" msgid "Set extruder(tool) sequence" msgstr "Définir la séquence d'extrudeur (outil)" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:217 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:218 msgid "Set lower thumb to current slider thumb" msgstr "Définir le curseur inférieur sur le curseur actuel" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:297 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:305 msgid "Set Mirror" msgstr "Appliquer la Symétrie" -#: src/slic3r/GUI/Plater.cpp:3944 +#: src/slic3r/GUI/Plater.cpp:3862 msgid "Set number of instances" msgstr "Définir le nombre d'instances" -#: src/slic3r/GUI/Plater.cpp:4756 +#: src/slic3r/GUI/Plater.cpp:4860 #, c-format msgid "Set numbers of copies to %d" msgstr "Régler le nombre de copies sur %d" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:781 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:828 msgid "Set Orientation" msgstr "Définir l'Orientation" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:750 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:797 msgid "Set Position" msgstr "Définir la Position" -#: src/slic3r/GUI/GUI_ObjectList.cpp:4094 src/slic3r/GUI/Selection.cpp:1474 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4581 src/slic3r/GUI/Selection.cpp:1513 msgid "Set Printable" msgstr "Définir Imprimable" -#: src/slic3r/GUI/Selection.cpp:1475 +#: src/slic3r/GUI/Selection.cpp:1515 msgid "Set Printable Instance" msgstr "Définir une Instance Imprimable" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:846 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:893 msgid "Set Scale" msgstr "Définir l'Échelle" -#: src/libslic3r/PrintConfig.cpp:2393 +#: src/libslic3r/PrintConfig.cpp:2536 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 "Définit l'orientation de l'affichage LCD dans l'imprimante SLA. Le mode portrait échangera la signification des paramètres de hauteurs et de largeur et les images de sortie seront pivotées de 90 degrés." -#: src/slic3r/GUI/ConfigWizard.cpp:932 +#: src/slic3r/GUI/ConfigWizard.cpp:1298 msgid "Set the shape of your printer's bed." msgstr "Réglez la forme du plateau de votre imprimante." -#: src/libslic3r/PrintConfig.cpp:556 +#: 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 "Réglez ce paramètre sur une valeur non-nulle pour définir manuellement la largeur d’extrusion. Si la valeur reste sur zéro, Slic3r calcule la largeur d’extrusion en se basant sur le diamètre de la buse (voir l’info-bulle concernant la largeur d’extrusion du périmètre, la largeur d’extrusion du remplissage, etc…). Si la valeur est exprimée en pourcentage (par exemple : 230%), elle sera calculée par rapport à la hauteur de couche." -#: src/libslic3r/PrintConfig.cpp:448 +#: 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." msgstr "Réglez ce paramètre sur une valeur non-nulle pour définir manuellement la largeur d’extrusion pour les périmètres extérieurs. Si la valeur reste sur zéro, la largeur d’extrusion par défaut sera utilisée si définie, sinon la valeur 1.125 x diamètre de la buse sera utilisée. Si la valeur est exprimée en pourcentage (par exemple : 200%), elle sera calculée par rapport à la hauteur de couche." -#: src/libslic3r/PrintConfig.cpp:878 +#: 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 "Réglez ce paramètre sur une valeur non-nulle pour définir manuellement la largeur d’extrusion pour la première couche. Vous pouvez procéder ainsi pour obtenir des extrudats plus épais afin d’avoir une meilleure adhérence. Si la valeur est exprimée en pourcentage (par exemple : 120%), elle sera calculée par rapport à la hauteur de la première couche. Si elle est réglée sur zéro, elle utilisera la largeur d’extrusion par défaut." -#: src/libslic3r/PrintConfig.cpp:1758 +#: 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." msgstr "Réglez ce paramètre sur une valeur non-nulle pour définir manuellement la largeur d’extrusion pour le remplissage ou les surfaces solides. Si la valeur reste sur zéro, la largeur d’extrusion par défaut sera utilisée si définie, sinon la valeur 1.125 x diamètre de la buse sera utilisée. Si la valeur est exprimée en pourcentage (par exemple : 90%), elle sera calculée par rapport à la hauteur de couche." -#: src/libslic3r/PrintConfig.cpp:2107 +#: src/libslic3r/PrintConfig.cpp:2250 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 regions and get a smoother finish. If left zero, default extrusion width will be used if set, otherwise nozzle diameter will be used. If expressed as percentage (for example 90%) it will be computed over layer height." msgstr "Réglez ce paramètre sur une valeur non-nulle pour définir manuellement la largeur d’extrusion pour le remplissage ou les surfaces supérieures. Vous voudrez peut-être utiliser des extrudats plus fins pour remplir les zones les plus étroites et obtenir des finitions plus lisses. Si la valeur reste sur zéro, la largeur d’extrusion par défaut sera utilisée si définie, sinon le diamètre de la buse sera utilisé. Si la valeur est exprimée en pourcentage (par exemple : 90%), elle sera calculée par rapport à la hauteur de couche." -#: src/libslic3r/PrintConfig.cpp:1011 +#: 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 "Réglez ce paramètre sur une valeur non-nulle pour définir manuellement la largeur d’extrusion pour le remplissage. Si la valeur reste sur zéro, la largeur d’extrusion par défaut sera utilisée si définie, sinon la valeur 1.125 x diamètre de la buse sera utilisée. Vous voudrez peut-être utiliser des extrudats plus épais pour accélérer le remplissage et rendre vos pièces plus solides. Si la valeur est exprimée en pourcentage (par exemple : 90%), elle sera calculée par rapport à la hauteur de couche." -#: src/libslic3r/PrintConfig.cpp:1419 +#: 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." msgstr "Réglez ce paramètre sur une valeur non-nulle pour définir manuellement une largeur d’extrusion pour les périmètres. Vous voudrez peut-être utiliser des extrudats plus fin pour obtenir des surfaces plus nettes. Si la valeur reste sur zéro, la largeur d’extrusion par défaut sera utilisée si définie, sinon la valeur 1.125 x diamètre de la buse sera utilisée. Si la valeur est exprimée en pourcentage (par exemple : 200%), elle sera calculée par rapport à la hauteur de couche." -#: src/libslic3r/PrintConfig.cpp:1948 +#: src/libslic3r/PrintConfig.cpp:2090 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, otherwise nozzle diameter will be used. If expressed as percentage (for example 90%) it will be computed over layer height." msgstr "Réglez ce paramètre sur une valeur non-nulle pour définir manuellement la largeur d’extrusion pour les supports. Si la valeur reste sur zéro, la largeur d’extrusion par défaut sera utilisée si définie, sinon le diamètre de la buse sera utilisée. Si la valeur est exprimée en pourcentage (par exemple : 90%), elle sera calculée par rapport à la hauteur de couche." -#: src/libslic3r/PrintConfig.cpp:512 +#: src/libslic3r/PrintConfig.cpp:548 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 "Paramétrez ceci avec le rayon de dégagement autour de l'extrudeur. Si l'extrudeur n'est pas centré, choisissez la plus grande valeur par sécurité. Ce réglage est utilisé pour vérifier les collisions et afficher l'aperçu graphique sur le plateau." @@ -6723,23 +7751,23 @@ msgstr "Paramétrez ceci avec le rayon de dégagement autour de l'extrudeur. Si msgid "Set this to the maximum height that can be reached by your extruder while printing." msgstr "Réglez cette valeur sur la hauteur maximum que peut atteindre votre extrudeur au cours de l'impression." -#: src/libslic3r/PrintConfig.cpp:501 +#: src/libslic3r/PrintConfig.cpp:537 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 cylinder around your extruder, and it represents the maximum depth the extruder can peek before colliding with other printed objects." msgstr "Paramétrez ceci avec la distance verticale entre la pointe de la buse et (habituellement) les tiges du chariot de l'axe X. En d'autres termes, il s'agit de la hauteur du cylindre de dégagement autour de l'extrudeur, et elle représente la profondeur maximum à laquelle peut descendre l'extrudeur avant d'entrer en collision avec d'autres objets imprimés." -#: src/slic3r/GUI/GUI_ObjectList.cpp:4094 src/slic3r/GUI/Selection.cpp:1474 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4581 src/slic3r/GUI/Selection.cpp:1513 msgid "Set Unprintable" msgstr "Définir non-Imprimable" -#: src/slic3r/GUI/Selection.cpp:1475 +#: src/slic3r/GUI/Selection.cpp:1515 msgid "Set Unprintable Instance" msgstr "Définir une Instance non-Imprimable" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:217 msgid "Set upper thumb to current slider thumb" msgstr "Définir le curseur supérieur sur le curseur actuel" -#: src/libslic3r/PrintConfig.cpp:3509 +#: src/libslic3r/PrintConfig.cpp:3714 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." @@ -6747,63 +7775,74 @@ msgstr "" "Définit la sensibilité de journalisation. 0 : fatal, 1: erreur, 2 : avertissement, 3 : info, 4 : débogage, 5 : trace\n" "Par exemple. loglevel = 2 enregistre les messages d'erreur et d'avertissement de niveau fatal." -#: src/slic3r/GUI/BedShapeDialog.cpp:155 +#: src/slic3r/GUI/BedShapeDialog.cpp:292 src/slic3r/GUI/MainFrame.cpp:1969 msgid "Settings" msgstr "Réglages" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2507 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2899 msgid "Settings for height range" msgstr "Réglages pour la zone de hauteur" -#: src/slic3r/GUI/ConfigManipulation.cpp:162 +#: src/slic3r/GUI/Preferences.cpp:431 +msgid "Settings in non-modal window" +msgstr "Réglages dans une fenêtre non modale" + +#: src/slic3r/GUI/ConfigManipulation.cpp:161 msgid "Shall I adjust those settings for supports?" msgstr "Dois-je ajuster ces paramètres pour les supports ?" -#: src/slic3r/GUI/ConfigManipulation.cpp:89 +#: src/slic3r/GUI/ConfigManipulation.cpp:88 msgid "Shall I adjust those settings in order to enable Spiral Vase?" msgstr "Dois-je ajuster ces réglages afin d'activer le Vase Spirale ?" -#: src/slic3r/GUI/ConfigManipulation.cpp:119 +#: src/slic3r/GUI/ConfigManipulation.cpp:118 msgid "Shall I adjust those settings in order to enable the Wipe Tower?" msgstr "Dois-je ajuster ces réglages afin d'activer la tour de Nettoyage ?" -#: src/slic3r/GUI/ConfigManipulation.cpp:210 +#: src/slic3r/GUI/ConfigManipulation.cpp:209 msgid "Shall I switch to rectilinear fill pattern?" msgstr "Dois-je passer au motif de remplissage rectiligne?" -#: src/slic3r/GUI/ConfigManipulation.cpp:139 +#: src/slic3r/GUI/ConfigManipulation.cpp:138 msgid "Shall I synchronize support layers in order to enable the Wipe Tower?" msgstr "Dois-je synchroniser les couches de support afin d'activer la Tour de Nettoyage ?" -#: src/slic3r/GUI/BedShapeDialog.cpp:66 src/slic3r/GUI/GUI_ObjectList.cpp:2059 +#: src/slic3r/GUI/BedShapeDialog.cpp:156 src/slic3r/GUI/BedShapeDialog.cpp:222 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2215 msgid "Shape" msgstr "Forme" -#: src/slic3r/GUI/GUI_Preview.cpp:256 +#: src/slic3r/GUI/GUI_Preview.cpp:338 src/slic3r/GUI/GUI_Preview.cpp:1478 msgid "Shells" msgstr "Coques" -#: src/slic3r/GUI/GLCanvas3D.cpp:249 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:50 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:33 +msgid "Shift + Left mouse button" +msgstr "Maj + bouton gauche de la souris" + +#: src/slic3r/GUI/GLCanvas3D.cpp:241 msgid "Shift + Left mouse button:" msgstr "Maj + Clic gauche souris :" -#: src/slic3r/GUI/GLCanvas3D.cpp:255 +#: src/slic3r/GUI/GLCanvas3D.cpp:245 msgid "Shift + Right mouse button:" msgstr "Maj + Clic droit souris :" -#: src/slic3r/GUI/GUI_Preview.cpp:231 +#: src/slic3r/GUI/GUI_Preview.cpp:286 src/slic3r/GUI/GUI_Preview.cpp:288 msgid "Show" msgstr "Afficher" -#: src/slic3r/GUI/MainFrame.cpp:701 +#: src/slic3r/GUI/MainFrame.cpp:926 src/slic3r/GUI/MainFrame.cpp:1325 msgid "Show &Configuration Folder" msgstr "Afficher le Répertoire de &Configuration" -#: src/slic3r/GUI/MainFrame.cpp:676 +#: src/slic3r/GUI/MainFrame.cpp:1294 msgid "Show &labels" msgstr "Afficher les &labels" -#: src/slic3r/GUI/MainFrame.cpp:705 +#: src/slic3r/GUI/MainFrame.cpp:933 src/slic3r/GUI/MainFrame.cpp:937 +#: src/slic3r/GUI/MainFrame.cpp:1329 msgid "Show about dialog" msgstr "Afficher la boîte de dialogue à propos" @@ -6811,111 +7850,127 @@ msgstr "Afficher la boîte de dialogue à propos" msgid "Show advanced settings" msgstr "Afficher les réglages avancés" -#: src/slic3r/GUI/PrintHostDialogs.cpp:159 +#: src/slic3r/GUI/PrintHostDialogs.cpp:157 msgid "Show error message" msgstr "Afficher le message d'erreur" -#: src/slic3r/GUI/Preferences.cpp:95 +#: src/slic3r/GUI/Preferences.cpp:112 msgid "Show incompatible print and filament presets" msgstr "Afficher les préréglages d'impression et de filament incompatibles" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:151 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:145 msgid "Show keyboard shortcuts list" msgstr "Afficher la liste des raccourcis clavier" -#: src/slic3r/GUI/MainFrame.cpp:676 +#: src/slic3r/GUI/GCodeViewer.cpp:2591 +msgid "Show normal mode" +msgstr "Afficher le mode normal" + +#: src/slic3r/GUI/MainFrame.cpp:1294 msgid "Show object/instance labels in 3D scene" msgstr "Afficher les labels de l'objet /instance dans la scène 3D" +#: src/slic3r/GUI/Preferences.cpp:213 +msgid "Show sidebar collapse/expand button" +msgstr "Afficher le bouton Réduire/Développer de la barre latérale" + #: src/slic3r/GUI/WipeTowerDialog.cpp:377 msgid "Show simplified settings" msgstr "Afficher les réglages simplifiés" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:52 +#: src/slic3r/GUI/Preferences.cpp:169 src/slic3r/GUI/Preferences.cpp:171 +msgid "Show splash screen" +msgstr "Afficher l'écran de démarrage" + +#: src/slic3r/GUI/GCodeViewer.cpp:2586 +msgid "Show stealth mode" +msgstr "Afficher le mode furtif" + +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:51 msgid "Show supports" msgstr "Afficher les supports" -#: src/slic3r/GUI/MainFrame.cpp:699 +#: src/slic3r/GUI/MainFrame.cpp:924 src/slic3r/GUI/MainFrame.cpp:1323 msgid "Show system information" msgstr "Afficher les informations système" -#: src/slic3r/GUI/MainFrame.cpp:626 +#: src/slic3r/GUI/MainFrame.cpp:1234 msgid "Show the 3D editing view" msgstr "Afficher la vue d'édition 3D" -#: src/slic3r/GUI/MainFrame.cpp:629 +#: src/slic3r/GUI/MainFrame.cpp:1237 msgid "Show the 3D slices preview" msgstr "Afficher la prévisualisation des tranches 3D" -#: src/slic3r/GUI/MainFrame.cpp:617 +#: src/slic3r/GUI/MainFrame.cpp:1224 msgid "Show the filament settings" msgstr "Afficher les réglages de filament" -#: src/libslic3r/PrintConfig.cpp:3372 +#: src/libslic3r/PrintConfig.cpp:3571 msgid "Show the full list of print/G-code configuration options." msgstr "Afficher la liste complète des options de configuration d'impression/G-code." -#: src/libslic3r/PrintConfig.cpp:3377 +#: src/libslic3r/PrintConfig.cpp:3576 msgid "Show the full list of SLA print configuration options." msgstr "Afficher la liste complète des options de configuration d'impression SLA." -#: src/slic3r/GUI/MainFrame.cpp:708 +#: src/slic3r/GUI/MainFrame.cpp:941 src/slic3r/GUI/MainFrame.cpp:1332 msgid "Show the list of the keyboard shortcuts" msgstr "Afficher la liste des raccourcis clavier" -#: src/slic3r/GUI/MainFrame.cpp:606 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "Show the plater" msgstr "Afficher le plateau" -#: src/slic3r/GUI/MainFrame.cpp:614 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "Show the print settings" msgstr "Afficher les réglages d'impression" -#: src/slic3r/GUI/MainFrame.cpp:621 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Show the printer settings" msgstr "Afficher les réglages de l'imprimante" -#: src/libslic3r/PrintConfig.cpp:3366 +#: src/libslic3r/PrintConfig.cpp:3565 msgid "Show this help." msgstr "Afficher cette aide." -#: src/slic3r/GUI/MainFrame.cpp:701 +#: src/slic3r/GUI/MainFrame.cpp:926 src/slic3r/GUI/MainFrame.cpp:1325 msgid "Show user configuration folder (datadir)" msgstr "Afficher le répertoire de configuration utilisateur (datadir)" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:185 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:182 msgid "Show/Hide 3Dconnexion devices settings dialog" msgstr "Afficher/Masquer le dialogue des paramètres des périphériques 3Dconnexion" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:208 -msgid "Show/Hide Legend" -msgstr "Afficher/Cacher la Légende" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 +msgid "Show/Hide Legend & Estimated printing time" +msgstr "Afficher/Masquer la légende et le temps d'impression estimé" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:146 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:141 msgid "Show/Hide object/instance labels" msgstr "Afficher/Masquer les labels de l'objet/instance" -#: src/slic3r/GUI/GUI_App.cpp:813 src/slic3r/GUI/wxExtensions.cpp:753 +#: src/slic3r/GUI/GUI_App.cpp:1504 src/slic3r/GUI/wxExtensions.cpp:673 msgid "Simple" msgstr "Simple" -#: src/slic3r/GUI/ConfigWizard.cpp:820 +#: src/slic3r/GUI/ConfigWizard.cpp:1179 msgid "Simple mode" msgstr "Mode simple" -#: src/slic3r/GUI/GUI_App.cpp:813 +#: src/slic3r/GUI/GUI_App.cpp:1504 msgid "Simple View Mode" msgstr "Mode de Vue Simple" -#: src/slic3r/GUI/Tab.cpp:2298 src/slic3r/GUI/Tab.cpp:2306 +#: src/slic3r/GUI/Tab.cpp:2467 src/slic3r/GUI/Tab.cpp:2475 msgid "Single extruder MM setup" msgstr "Réglage MM pour extrudeur unique" -#: src/libslic3r/PrintConfig.cpp:1845 +#: src/libslic3r/PrintConfig.cpp:1987 msgid "Single Extruder Multi Material" msgstr "Multi Material à extrudeur unique" -#: src/slic3r/GUI/Tab.cpp:1867 +#: src/slic3r/GUI/Tab.cpp:2101 msgid "" "Single Extruder Multi Material is selected, \n" "and all extruders must have the same diameter.\n" @@ -6926,435 +7981,463 @@ msgstr "" "Voulez-vous modifier le diamètre pour tous les extrudeurs\n" "en utilisant la valeur du diamètre de la buse du premier extrudeur ?" -#: src/slic3r/GUI/Tab.cpp:2307 +#: src/slic3r/GUI/Tab.cpp:2476 msgid "Single extruder multimaterial parameters" msgstr "Paramètres multimatériaux pour extrudeur unique" -#: src/slic3r/GUI/BedShapeDialog.cpp:77 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:232 src/slic3r/GUI/Plater.cpp:160 -#: src/slic3r/GUI/Tab.cpp:2324 +#: src/slic3r/GUI/Preferences.cpp:120 src/libslic3r/PrintConfig.cpp:3689 +msgid "Single instance mode" +msgstr "Mode d'instance unique" + +#: src/slic3r/GUI/BedShapeDialog.cpp:93 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:240 src/slic3r/GUI/Plater.cpp:166 +#: src/slic3r/GUI/Tab.cpp:2493 msgid "Size" msgstr "Taille" -#: src/slic3r/GUI/Tab.cpp:1797 src/slic3r/GUI/Tab.cpp:2041 +#: src/slic3r/GUI/Tab.cpp:2059 src/slic3r/GUI/Tab.cpp:2241 msgid "Size and coordinates" msgstr "Taille et coordonnées" -#: src/slic3r/GUI/BedShapeDialog.cpp:78 +#: src/slic3r/GUI/BedShapeDialog.cpp:110 msgid "Size in X and Y of the rectangular plate." msgstr "Taille en X et Y du plateau rectangulaire." -#: src/slic3r/GUI/GUI_Preview.cpp:245 src/slic3r/GUI/Tab.cpp:1111 -#: src/libslic3r/ExtrusionEntity.cpp:318 +#: src/slic3r/GUI/GUI_Preview.cpp:310 src/slic3r/GUI/Tab.cpp:1439 +#: src/libslic3r/ExtrusionEntity.cpp:323 src/libslic3r/ExtrusionEntity.cpp:354 msgid "Skirt" msgstr "Jupe" -#: src/slic3r/GUI/Tab.cpp:1110 +#: src/slic3r/GUI/Tab.cpp:1438 msgid "Skirt and brim" msgstr "Jupe et bordure" -#: src/libslic3r/PrintConfig.cpp:1687 +#: src/libslic3r/PrintConfig.cpp:1795 msgid "Skirt height" msgstr "Hauteur de la jupe" -#: src/libslic3r/PrintConfig.cpp:1696 +#: src/libslic3r/PrintConfig.cpp:1811 msgid "Skirt Loops" msgstr "Boucles de la Jupe" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1334 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1181 msgid "SLA gizmo keyboard shortcuts" msgstr "Raccourcis clavier pour le gizmo SLA" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1058 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:924 msgid "SLA gizmo turned off" msgstr "Gizmo SLA désactivé" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1017 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:897 msgid "SLA gizmo turned on" msgstr "Gizmo SLA activé" -#: src/slic3r/GUI/Plater.cpp:818 src/slic3r/GUI/Preset.cpp:1524 +#: src/slic3r/GUI/Plater.cpp:693 src/libslic3r/Preset.cpp:1303 msgid "SLA material" msgstr "Matériau SLA" -#: src/slic3r/GUI/ConfigWizard.cpp:2015 +#: src/slic3r/GUI/ConfigWizard.cpp:2526 msgid "SLA Material Profiles Selection" msgstr "Sélection des Profils Matériaux SLA" -#: src/libslic3r/PrintConfig.cpp:2470 src/libslic3r/PrintConfig.cpp:2471 +#: src/libslic3r/PrintConfig.cpp:2613 src/libslic3r/PrintConfig.cpp:2614 msgid "SLA material type" msgstr "Type de matériau SLA" -#: src/slic3r/GUI/ConfigWizard.cpp:1471 src/slic3r/GUI/ConfigWizard.cpp:2015 +#: src/slic3r/GUI/ConfigWizard.cpp:1872 src/slic3r/GUI/ConfigWizard.cpp:2526 msgid "SLA Materials" msgstr "Matériaux SLA" -#: src/slic3r/GUI/Preset.cpp:1523 +#: src/libslic3r/Preset.cpp:1302 msgid "SLA print" msgstr "Impression SLA" -#: src/libslic3r/PrintConfig.cpp:2578 +#: src/libslic3r/PrintConfig.cpp:2721 msgid "SLA print material notes" msgstr "Notes concernant le matériau d'impression SLA" -#: src/slic3r/GUI/Plater.cpp:817 +#: src/slic3r/GUI/Plater.cpp:692 msgid "SLA print settings" msgstr "Réglages d'impression SLA" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:996 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:869 msgid "SLA Support Points" msgstr "Points de Support SLA" -#: src/slic3r/GUI/GLCanvas3D.cpp:687 -msgid "SLA supports outside the print area were detected" -msgstr "SLA supports détectés en dehors de la zone d'impression" +#: src/slic3r/GUI/GLCanvas3D.cpp:635 +msgid "SLA supports outside the print area were detected." +msgstr "Des supports SLA en dehors de la zone d'impression ont été détectés." -#: src/slic3r/GUI/ConfigWizard.cpp:1530 +#: src/slic3r/GUI/ConfigWizard.cpp:1931 msgid "SLA Technology Printers" msgstr "Imprimantes Technologie SLA" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1432 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1563 msgid "Slab" -msgstr "Slab" +msgstr "Pavé" -#: src/libslic3r/PrintConfig.cpp:1333 +#: src/libslic3r/PrintConfig.cpp:1441 msgid "Slic3r can upload G-code files to a printer host. This field must contain the kind of the host." msgstr "Slic3r peut envoyer des fichiers G-codes vers un hôte d'imprimante. Ce champ doit contenir le type d'hôte." -#: src/libslic3r/PrintConfig.cpp:105 +#: src/libslic3r/PrintConfig.cpp:107 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 peut envoyer des fichiers G-code à un hôte d'impression. Ce champ doit contenir la clé d'API ou le mot de passe requis pour l'authentification." -#: src/libslic3r/PrintConfig.cpp:98 +#: 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 peut télécharger des fichiers G-code vers un hôte d'impression. Ce champ doit contenir le nom d'hôte, l'adresse IP ou l'URL de l'instance hôte d'impression." -#: src/libslic3r/PrintConfig.cpp:1299 +#: src/libslic3r/PrintConfig.cpp:1407 msgid "Slic3r will not scale speed down below this speed." msgstr "Slic3r ne descendra pas en-dessous de cette vitesse." -#: src/libslic3r/PrintConfig.cpp:3359 +#: src/libslic3r/PrintConfig.cpp:3558 msgid "Slice" msgstr "Découper" -#: src/slic3r/GUI/MainFrame.cpp:512 +#: src/slic3r/GUI/MainFrame.cpp:1113 msgid "Slice a file into a G-code" msgstr "Découper un fichier en G-code" -#: src/slic3r/GUI/MainFrame.cpp:518 +#: src/slic3r/GUI/MainFrame.cpp:1119 msgid "Slice a file into a G-code, save as" msgstr "Découper un fichier en G-code, enregistrer sous" -#: src/libslic3r/PrintConfig.cpp:87 +#: src/libslic3r/PrintConfig.cpp:89 msgid "Slice gap closing radius" msgstr "Découper le rayon de fermeture de l'espacement" -#: src/slic3r/GUI/Plater.cpp:892 src/slic3r/GUI/Plater.cpp:3121 -#: src/slic3r/GUI/Plater.cpp:5110 +#: src/slic3r/GUI/Plater.cpp:767 src/slic3r/GUI/Plater.cpp:2921 +#: src/slic3r/GUI/Plater.cpp:5237 msgid "Slice now" msgstr "Découper maintenant" -#: src/libslic3r/PrintConfig.cpp:3333 +#: src/libslic3r/PrintConfig.cpp:3526 msgid "Slice the model and export SLA printing layers as PNG." msgstr "Découper le modèle et exporter les couches d'impression SLA en tant que PNG." -#: src/libslic3r/PrintConfig.cpp:3354 +#: src/libslic3r/PrintConfig.cpp:3547 msgid "Slice the model and export toolpaths as G-code." msgstr "Découper le modèle et exporter les parcours en tant que G-code." -#: src/libslic3r/PrintConfig.cpp:3360 +#: src/libslic3r/PrintConfig.cpp:3559 msgid "Slice the model as FFF or SLA based on the printer_technology configuration value." msgstr "Découper le modèle en tant que FFF ou SLA en fonction de la valeur de configuration de la printer_technology." -#: src/slic3r/GUI/Plater.cpp:216 +#: src/slic3r/GUI/Plater.cpp:222 msgid "Sliced Info" msgstr "Informations de découpage" -#: src/slic3r/GUI/MainFrame.cpp:847 src/slic3r/GUI/Plater.cpp:3121 -#: src/slic3r/GUI/Plater.cpp:5107 src/slic3r/GUI/Tab.cpp:1221 -#: src/slic3r/GUI/Tab.cpp:3662 +#: src/slic3r/GUI/MainFrame.cpp:1548 src/slic3r/GUI/Plater.cpp:2921 +#: src/slic3r/GUI/Plater.cpp:5234 src/slic3r/GUI/Tab.cpp:1551 +#: src/slic3r/GUI/Tab.cpp:4081 msgid "Slicing" msgstr "Découpe" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:134 -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:184 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:170 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:219 msgid "Slicing complete" -msgstr "Découpe annulée" +msgstr "Découpe terminée" -#: src/libslic3r/SLAPrint.cpp:760 +#: src/libslic3r/SLAPrint.cpp:780 msgid "Slicing done" msgstr "Découpe effectuée" -#: src/slic3r/GUI/MainFrame.cpp:874 +#: src/slic3r/GUI/MainFrame.cpp:1575 msgid "Slicing Done!" msgstr "Découpe Effectuée !" -#: src/libslic3r/SLAPrintSteps.cpp:245 +#: src/slic3r/GUI/NotificationManager.cpp:751 +msgid "Slicing finished." +msgstr "Découpage terminé." + +#: src/libslic3r/SLAPrintSteps.cpp:247 msgid "Slicing had to be stopped due to an internal error: Inconsistent slice index." msgstr "La découpe a du être interrompue du fait d'une erreur interne : index de découpage inconsistant." -#: src/libslic3r/SLAPrintSteps.cpp:45 +#: src/libslic3r/SLAPrintSteps.cpp:46 msgid "Slicing model" msgstr "Découpe du modèle" -#: src/libslic3r/SLAPrintSteps.cpp:49 +#: src/libslic3r/SLAPrintSteps.cpp:50 msgid "Slicing supports" msgstr "Découpe des supports" -#: src/libslic3r/PrintConfig.cpp:2414 +#: src/libslic3r/PrintConfig.cpp:2557 msgid "Slow" msgstr "Lent" -#: src/libslic3r/PrintConfig.cpp:1705 +#: src/libslic3r/PrintConfig.cpp:1820 msgid "Slow down if layer print time is below" msgstr "Ralentir si le temps d'impression de la couche est inférieur à" -#: src/libslic3r/PrintConfig.cpp:2415 +#: src/libslic3r/PrintConfig.cpp:2558 msgid "Slow tilt" msgstr "Inclinaison lente" -#: src/libslic3r/PrintConfig.cpp:1715 +#: src/libslic3r/PrintConfig.cpp:1830 msgid "Small perimeters" msgstr "Périmètres courts" -#: src/slic3r/GUI/GLCanvas3D.cpp:288 +#: src/libslic3r/PrintConfig.cpp:2801 +msgid "Small pillar diameter percent" +msgstr "Pourcentage de pilier petit diamètre" + +#: src/slic3r/GUI/GLCanvas3D.cpp:274 msgid "Smooth" msgstr "Lisse" -#: src/slic3r/GUI/GLCanvas3D.cpp:258 +#: src/slic3r/GUI/GLCanvas3D.cpp:247 msgid "Smoothing" msgstr "Lissage" -#: src/slic3r/GUI/GUI_App.cpp:839 +#: src/slic3r/GUI/GUI_App.cpp:1540 msgid "Snapshot name" msgstr "Nom de l'instantané" -#: src/slic3r/GUI/MainFrame.cpp:686 +#: src/slic3r/GUI/MainFrame.cpp:911 src/slic3r/GUI/MainFrame.cpp:1310 msgid "Software &Releases" msgstr "Softwa&re Publications" -#: src/slic3r/GUI/PresetHints.cpp:184 +#: src/slic3r/GUI/PresetHints.cpp:183 msgid "solid infill" msgstr "remplissage solide" -#: src/slic3r/GUI/GUI_Preview.cpp:241 src/libslic3r/ExtrusionEntity.cpp:314 -#: src/libslic3r/PrintConfig.cpp:1756 src/libslic3r/PrintConfig.cpp:1767 +#: src/slic3r/GUI/GUI_Preview.cpp:305 src/libslic3r/ExtrusionEntity.cpp:318 +#: src/libslic3r/ExtrusionEntity.cpp:344 src/libslic3r/PrintConfig.cpp:1871 +#: src/libslic3r/PrintConfig.cpp:1882 msgid "Solid infill" msgstr "Remplissage solide" -#: src/libslic3r/PrintConfig.cpp:1744 +#: src/libslic3r/PrintConfig.cpp:1859 msgid "Solid infill every" msgstr "Remplissage solide toutes les" -#: src/libslic3r/PrintConfig.cpp:1736 +#: src/libslic3r/PrintConfig.cpp:1851 msgid "Solid infill extruder" msgstr "Extrudeur pour le remplissage solide" -#: src/libslic3r/PrintConfig.cpp:1727 +#: src/libslic3r/PrintConfig.cpp:1842 msgid "Solid infill threshold area" msgstr "Surface de seuil pour le remplissage solide" -#: src/slic3r/GUI/Tab.cpp:1065 src/libslic3r/PrintConfig.cpp:1780 +#: src/slic3r/GUI/Tab.cpp:1387 src/libslic3r/PrintConfig.cpp:1895 msgid "Solid layers" msgstr "Couches solides" -#: src/libslic3r/PrintConfig.cpp:754 +#: src/libslic3r/PrintConfig.cpp:790 msgid "Soluble material" msgstr "Matériau soluble" -#: src/libslic3r/PrintConfig.cpp:755 +#: src/libslic3r/PrintConfig.cpp:791 msgid "Soluble material is most likely used for a soluble support." msgstr "Il est probable qu'un matériau soluble soit utilisé pour un support soluble." -#: src/libslic3r/PrintConfig.cpp:937 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:735 +msgid "Some fields are too long to fit. Right mouse click reveals the full text." +msgstr "Certains champs sont trop longs pour s'afficher. Un clic droit de la souris révèle le texte intégral." + +#: src/libslic3r/PrintConfig.cpp:981 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 output. The \"No extrusion\" flavor prevents PrusaSlicer from exporting any extrusion value at all." msgstr "Certaines commandes G/M-code, y compris le contrôle de la température ainsi que d'autres, ne sont pas universelles. Paramétrez cette option dans le firmware de votre imprimante pour obtenir une sortie compatible. L'option \"Pas d'extrusion\" empêche complètement PrusaSlicer d'exporter toute valeur d'extrusion." -#: src/slic3r/GUI/GLCanvas3D.cpp:688 -msgid "Some objects are not visible" -msgstr "Certains objets ne sont pas visibles" +#: src/slic3r/GUI/Plater.cpp:2309 +#, 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 "" +"Certains objets du fichier %s semblent être enregistrés en pouces.\n" +"Dois-je les considérer comme enregistrés en pouces et les convertir ?" -#: src/libslic3r/Print.cpp:1226 +#: src/slic3r/GUI/GLCanvas3D.cpp:636 +msgid "Some objects are not visible." +msgstr "Certains objets ne sont pas visibles." + +#: src/libslic3r/Print.cpp:1252 msgid "Some objects are too close; your extruder will collide with them." msgstr "Certains objets sont trop proches ; votre extrudeur va entrer en collision avec eux." -#: src/libslic3r/Print.cpp:1228 +#: src/libslic3r/Print.cpp:1254 msgid "Some objects are too tall and cannot be printed without extruder collisions." msgstr "Certains objets sont trop grands et ne peuvent pas être imprimés sans collision avec l'extrudeur." -#: src/libslic3r/PrintConfig.cpp:2824 +#: src/libslic3r/PrintConfig.cpp:2988 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 "Certains objets peuvent s'accommoder de quelques petits socles au lieu d'un seul grand. Ce paramètre définit à quelle distance le centre de deux petits socles devrait se trouver. S'ils sont proches, ils seront fusionnés en un seul socle." -#: src/libslic3r/PrintConfig.cpp:2187 +#: src/libslic3r/PrintConfig.cpp:2330 msgid "Some printers or printer setups may have difficulties printing with a variable layer height. Enabled by default." msgstr "Certaines imprimantes ou certains réglages d'imprimante peuvent rencontrer des difficultés pour imprimer avec une hauteur de couche variable. Activé par défaut." -#: src/libslic3r/PrintConfig.cpp:1984 +#: src/libslic3r/PrintConfig.cpp:2126 msgid "Spacing between interface lines. Set zero to get a solid interface." msgstr "Espacement entre les lignes d'interface. Mettez à zéro pour obtenir une interface solide." -#: src/libslic3r/PrintConfig.cpp:2018 +#: src/libslic3r/PrintConfig.cpp:1155 +msgid "Spacing between ironing passes" +msgstr "Espacement entre les passes de lissage" + +#: src/libslic3r/PrintConfig.cpp:2160 msgid "Spacing between support material lines." msgstr "Espacement entre les lignes des supports." -#: src/slic3r/GUI/GUI_ObjectList.cpp:98 src/slic3r/GUI/GUI_ObjectList.cpp:616 -#: src/slic3r/GUI/GUI_Preview.cpp:224 src/slic3r/GUI/Tab.cpp:1145 -#: src/libslic3r/PrintConfig.cpp:235 src/libslic3r/PrintConfig.cpp:458 -#: src/libslic3r/PrintConfig.cpp:919 src/libslic3r/PrintConfig.cpp:1048 -#: src/libslic3r/PrintConfig.cpp:1431 src/libslic3r/PrintConfig.cpp:1668 -#: src/libslic3r/PrintConfig.cpp:1716 src/libslic3r/PrintConfig.cpp:1768 -#: src/libslic3r/PrintConfig.cpp:2118 +#: src/slic3r/GUI/GUI_ObjectList.cpp:96 src/slic3r/GUI/GUI_ObjectList.cpp:655 +#: src/slic3r/GUI/GUI_Preview.cpp:278 src/slic3r/GUI/Tab.cpp:1474 +#: src/libslic3r/PrintConfig.cpp:269 src/libslic3r/PrintConfig.cpp:494 +#: src/libslic3r/PrintConfig.cpp:963 src/libslic3r/PrintConfig.cpp:1092 +#: src/libslic3r/PrintConfig.cpp:1165 src/libslic3r/PrintConfig.cpp:1539 +#: src/libslic3r/PrintConfig.cpp:1776 src/libslic3r/PrintConfig.cpp:1831 +#: src/libslic3r/PrintConfig.cpp:1883 src/libslic3r/PrintConfig.cpp:2261 msgid "Speed" msgstr "Vitesse" -#: src/libslic3r/PrintConfig.cpp:1670 -msgid "Speed (baud) of USB/serial port for printer connection." -msgstr "Vitesse (baud) du port USB/série pour la connexion à l'imprimante." - -#: src/libslic3r/GCode/PreviewData.cpp:351 +#: src/slic3r/GUI/GCodeViewer.cpp:2238 src/libslic3r/GCode/PreviewData.cpp:356 msgid "Speed (mm/s)" msgstr "Vitesse (mm/s)" -#: src/libslic3r/PrintConfig.cpp:920 +#: src/libslic3r/PrintConfig.cpp:964 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 "Vitesse pour combler de petits interstices avec de courts mouvements en zigzag. Gardez un réglage relativement lent afin d'éviter les problèmes de vibration et de résonance. Réglez sur zéro pour désactiver le remplissage d'interstices." -#: src/slic3r/GUI/Tab.cpp:1158 +#: src/slic3r/GUI/Tab.cpp:1488 msgid "Speed for non-print moves" msgstr "Vitesse pour les déplacements sans impression" -#: src/libslic3r/PrintConfig.cpp:1432 +#: src/libslic3r/PrintConfig.cpp:1540 msgid "Speed for perimeters (contours, aka vertical shells). Set to zero for auto." msgstr "Vitesse pour les périmètres (contours, parois verticales). Réglez sur zéro pour un ajustement automatique." -#: src/slic3r/GUI/Tab.cpp:1146 +#: src/slic3r/GUI/Tab.cpp:1475 msgid "Speed for print moves" msgstr "Vitesse pour les déplacements d'impression" -#: src/libslic3r/PrintConfig.cpp:236 +#: src/libslic3r/PrintConfig.cpp:270 msgid "Speed for printing bridges." msgstr "Vitesse d'impression des ponts." -#: src/libslic3r/PrintConfig.cpp:1769 +#: src/libslic3r/PrintConfig.cpp:1884 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 "Vitesse pour imprimer des zones solides (supérieures/inférieures/parois horizontales internes). Peut être exprimée en pourcentage (par exemple: 80%) de la vitesse de remplissage par défaut susmentionnée. Réglez sur zéro pour un ajustement automatique." -#: src/libslic3r/PrintConfig.cpp:1993 +#: src/libslic3r/PrintConfig.cpp:2135 msgid "Speed for printing support material interface layers. If expressed as percentage (for example 50%) it will be calculated over support material speed." msgstr "Vitesse d'impression des couches d'interface des supports. Si exprimée en pourcentage (par exemple 50%), elle sera calculée à partir de la vitesse d'impression des supports." -#: src/libslic3r/PrintConfig.cpp:2027 +#: src/libslic3r/PrintConfig.cpp:2169 msgid "Speed for printing support material." msgstr "Vitesse d'impression du support." -#: src/libslic3r/PrintConfig.cpp:1049 +#: src/libslic3r/PrintConfig.cpp:1093 msgid "Speed for printing the internal fill. Set to zero for auto." msgstr "Vitesse pour imprimer le remplissage interne. Réglez sur zéro pour un ajustement automatique." -#: src/libslic3r/PrintConfig.cpp:2119 +#: src/libslic3r/PrintConfig.cpp:2262 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 slow down this to get a nicer surface finish. This can be expressed as a percentage (for example: 80%) over the solid infill speed above. Set to zero for auto." msgstr "Vitesse pour imprimer les couches solides supérieures (ne s'applique qu'aux couches externes les plus hautes et pas aux couches internes solides). Vous voudrez peut-être abaisser cette vitesse afin d'avoir une finition de surface plus nette. Peut être exprimé en pourcentage (par exemple: 80%) de la vitesse de remplissage solide susmentionnée. Réglez sur zéro pour un ajustement automatique." -#: src/libslic3r/PrintConfig.cpp:2153 +#: src/libslic3r/PrintConfig.cpp:2296 msgid "Speed for travel moves (jumps between distant extrusion points)." msgstr "Vitesse pour les déplacements (trajet entre deux points d'extrusion distants)." -#: src/libslic3r/PrintConfig.cpp:659 +#: src/libslic3r/PrintConfig.cpp:695 msgid "Speed of the first cooling move" msgstr "Vitesse du premier mouvement de refroidissement" -#: src/libslic3r/PrintConfig.cpp:678 +#: src/libslic3r/PrintConfig.cpp:714 msgid "Speed of the last cooling move" msgstr "Vitesse du dernier mouvement de refroidissement" -#: src/libslic3r/PrintConfig.cpp:616 +#: src/libslic3r/PrintConfig.cpp:652 msgid "Speed used at the very beginning of loading phase." msgstr "Vitesse utilisée au tout début de la phase de chargement." -#: src/libslic3r/PrintConfig.cpp:608 +#: src/libslic3r/PrintConfig.cpp:644 msgid "Speed used for loading the filament on the wipe tower." msgstr "Vitesse utilisée pour charger le filament sur la tour de nettoyage." -#: src/libslic3r/PrintConfig.cpp:624 +#: src/libslic3r/PrintConfig.cpp:660 msgid "Speed used for unloading the filament on the wipe tower (does not affect initial part of unloading just after ramming)." msgstr "Vitesse utilisée pour décharger le filament sur la tour de nettoyage (n'affecte pas l'étape initiale de déchargement juste après l'expulsion)." -#: src/libslic3r/PrintConfig.cpp:633 +#: src/libslic3r/PrintConfig.cpp:669 msgid "Speed used for unloading the tip of the filament immediately after ramming." msgstr "Vitesse utilisée pour décharger l'extrémité du filament juste après l'expulsion." -#: src/slic3r/GUI/Mouse3DController.cpp:296 +#: src/slic3r/GUI/Mouse3DController.cpp:279 msgid "Speed:" msgstr "Vitesse:" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1432 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:54 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:37 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1563 msgid "Sphere" msgstr "Sphère" -#: src/libslic3r/PrintConfig.cpp:1794 +#: src/libslic3r/PrintConfig.cpp:1909 msgid "Spiral vase" msgstr "Mode de vase spirale" -#: src/slic3r/GUI/ConfigManipulation.cpp:90 +#: src/slic3r/GUI/ConfigManipulation.cpp:89 msgid "Spiral Vase" msgstr "Vase Spirale" -#: src/slic3r/GUI/Plater.cpp:4019 src/slic3r/GUI/Plater.cpp:4034 -#: src/slic3r/GUI/Plater.cpp:4048 src/libslic3r/PrintConfig.cpp:3471 +#: src/slic3r/GUI/Plater.cpp:3939 src/slic3r/GUI/Plater.cpp:3954 +#: src/slic3r/GUI/Plater.cpp:3972 src/libslic3r/PrintConfig.cpp:3670 msgid "Split" msgstr "Scinder" -#: src/slic3r/GUI/Plater.cpp:4019 +#: src/slic3r/GUI/Plater.cpp:3939 msgid "Split the selected object" msgstr "Scinder l'objet sélectionné" -#: src/slic3r/GUI/Plater.cpp:4014 src/slic3r/GUI/Plater.cpp:4034 +#: src/slic3r/GUI/Plater.cpp:3934 src/slic3r/GUI/Plater.cpp:3954 msgid "Split the selected object into individual objects" msgstr "Scinder l'objet sélectionné en objets individuels" -#: src/slic3r/GUI/Plater.cpp:4016 src/slic3r/GUI/Plater.cpp:4048 +#: src/slic3r/GUI/Plater.cpp:3936 src/slic3r/GUI/Plater.cpp:3972 msgid "Split the selected object into individual sub-parts" -msgstr "Scinder l'objet sélectionné en sous-parties individuelles" +msgstr "Scinder l'objet sélectionné en sous-pièces individuelles" -#: src/slic3r/GUI/GLCanvas3D.cpp:4550 +#: src/slic3r/GUI/GLCanvas3D.cpp:4916 msgid "Split to objects" msgstr "Diviser en objets individuels" -#: src/slic3r/GUI/Plater.cpp:2981 +#: src/slic3r/GUI/Plater.cpp:2774 msgid "Split to Objects" msgstr "Diviser en Objets" -#: src/slic3r/GUI/GLCanvas3D.cpp:4560 src/slic3r/GUI/GUI_ObjectList.cpp:1487 +#: src/slic3r/GUI/GLCanvas3D.cpp:4926 src/slic3r/GUI/GUI_ObjectList.cpp:1618 msgid "Split to parts" -msgstr "Scinder en parties" +msgstr "Scinder en pièces" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2274 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2440 msgid "Split to Parts" -msgstr "Scinder en Parties" +msgstr "Scinder en Pièces" -#: src/slic3r/GUI/ConfigWizard.cpp:289 +#: src/slic3r/GUI/ConfigWizard.cpp:307 msgid "Standard" msgstr "Standard" -#: src/libslic3r/PrintConfig.cpp:846 +#: src/libslic3r/PrintConfig.cpp:884 msgid "Stars" msgstr "Étoiles" -#: src/slic3r/GUI/MainFrame.cpp:405 +#: src/slic3r/GUI/MainFrame.cpp:986 msgid "Start a new project" msgstr "Démarrer un nouveau projet" -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:27 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:29 msgid "Start at height" msgstr "Hauteur de début" -#: src/slic3r/GUI/Tab.cpp:1528 src/slic3r/GUI/Tab.cpp:1976 -#: src/libslic3r/PrintConfig.cpp:1813 src/libslic3r/PrintConfig.cpp:1828 +#: src/slic3r/GUI/Tab.cpp:1873 src/slic3r/GUI/Tab.cpp:2161 +#: src/libslic3r/PrintConfig.cpp:1928 src/libslic3r/PrintConfig.cpp:1943 msgid "Start G-code" msgstr "G-code de début" -#: src/slic3r/GUI/MainFrame.cpp:532 +#: src/slic3r/GUI/MainFrame.cpp:1133 msgid "Start new slicing process" msgstr "Démarrer un nouveau processus de découpe" @@ -7362,7 +8445,35 @@ msgstr "Démarrer un nouveau processus de découpe" msgid "Start printing after upload" msgstr "Lancer l'impression après le téléchargement" -#: src/slic3r/GUI/PrintHostDialogs.cpp:151 +#: src/slic3r/GUI/GUI_App.cpp:396 +msgid "Start the application" +msgstr "Démarrer l'application" + +#: src/slic3r/GUI/GUI_App.cpp:386 +msgid "" +"Starting with %1% 2.3, configuration directory on Linux has changed (according to XDG Base Directory Specification) to \n" +"%2%.\n" +"\n" +"This directory did not exist yet (maybe you run the new version for the first time).\n" +"However, an old %1% configuration directory was detected in \n" +"%3%.\n" +"\n" +"Consider moving the contents of the old directory to the new location in order to access your profiles, etc.\n" +"Note that if you decide to downgrade %1% in future, it will use the old location again.\n" +"\n" +"What do you want to do now?" +msgstr "" +"À partir de %1% 2.3, le répertoire de configuration sous Linux a été modifié (selon la XDG Base Directory Specification) en %2%.\n" +"\n" +"Ce répertoire n'existait pas encore (peut-être que vous exécutez la nouvelle version pour la première fois).\n" +"Cependant, un ancien répertoire de configuration %1% a été détecté dans %3%.\n" +"\n" +"Envisagez de déplacer le contenu de l'ancien répertoire vers le nouvel emplacement afin d'accéder à vos profils, etc.\n" +"Notez que si vous décidez de rétrograder %1% à l'avenir, il utilisera à nouveau l'ancien emplacement.\n" +"\n" +"Que voulez-vous faire maintenant ?" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:149 msgid "Status" msgstr "État" @@ -7370,166 +8481,160 @@ msgstr "État" msgid "Status:" msgstr "État :" -#: src/slic3r/GUI/Tab.cpp:2209 +#: src/slic3r/GUI/Search.cpp:77 src/slic3r/GUI/Tab.cpp:2378 msgid "Stealth" msgstr "Mode silencieux" -#: src/slic3r/GUI/Plater.cpp:1291 +#: src/slic3r/GUI/Plater.cpp:1187 src/slic3r/GUI/Plater.cpp:1235 msgid "stealth mode" msgstr "mode silencieux" -#: src/slic3r/GUI/Plater.cpp:4985 +#: src/slic3r/GUI/GCodeViewer.cpp:2557 +msgid "Stealth mode" +msgstr "Mode furtif" + +#: src/slic3r/GUI/Plater.cpp:5118 #, c-format msgid "STL file exported to %s" msgstr "Fichier STL exporté vers %s" -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:27 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:29 msgid "Stop at height" msgstr "Hauteur d'arrêt" -#: src/slic3r/GUI/Tab.cpp:1693 src/slic3r/GUI/Tab.cpp:1928 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:295 msgid "Success!" msgstr "Réussi !" -#: src/slic3r/GUI/PresetHints.cpp:203 +#: src/slic3r/GUI/Plater.cpp:2047 +#, c-format +msgid "Successfully unmounted. The device %s(%s) can now be safely removed from the computer." +msgstr "Démonté avec succès. Le périphérique %s(% s) peut maintenant être retiré en toute sécurité de l'ordinateur." + +#: src/slic3r/GUI/PresetHints.cpp:202 msgid "support" msgstr "support" -#: src/libslic3r/PrintConfig.cpp:2692 +#: src/libslic3r/PrintConfig.cpp:2856 msgid "Support base diameter" msgstr "Diamètre de la base du support" -#: src/libslic3r/PrintConfig.cpp:2702 +#: src/libslic3r/PrintConfig.cpp:2866 msgid "Support base height" msgstr "Hauteur de la base du support" -#: src/libslic3r/PrintConfig.cpp:2711 +#: src/libslic3r/PrintConfig.cpp:2875 msgid "Support base safety distance" msgstr "Distance de sécurité de la base du support" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3551 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4014 msgid "Support Blocker" msgstr "Bloqueur de Support" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3551 +#: src/libslic3r/PrintConfig.cpp:895 +msgid "Support Cubic" +msgstr "Support Cubique" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:4014 msgid "Support Enforcer" msgstr "Générateur de Support" -#: src/slic3r/GUI/ConfigManipulation.cpp:163 +#: src/slic3r/GUI/ConfigManipulation.cpp:162 msgid "Support Generator" msgstr "Générateur de support" -#: src/slic3r/GUI/Tab.cpp:3608 +#: src/slic3r/GUI/Tab.cpp:4018 msgid "Support head" msgstr "Tête du support" -#: src/libslic3r/PrintConfig.cpp:2620 -msgid "Support head front diameter" -msgstr "Diamètre avant de la tête du support" - -#: src/libslic3r/PrintConfig.cpp:2629 -msgid "Support head penetration" -msgstr "Pénétration de la tête du support" - -#: src/libslic3r/PrintConfig.cpp:2638 -msgid "Support head width" -msgstr "Largeur de la tête du support" - -#: src/slic3r/GUI/PresetHints.cpp:213 +#: src/slic3r/GUI/PresetHints.cpp:212 msgid "support interface" msgstr "interface du support" -#: src/slic3r/GUI/GUI_ObjectList.cpp:36 src/slic3r/GUI/GUI_ObjectList.cpp:97 -#: src/slic3r/GUI/GUI_ObjectList.cpp:615 src/slic3r/GUI/GUI_Preview.cpp:246 -#: src/slic3r/GUI/Tab.cpp:1120 src/slic3r/GUI/Tab.cpp:1121 -#: src/libslic3r/ExtrusionEntity.cpp:319 src/libslic3r/PrintConfig.cpp:370 -#: src/libslic3r/PrintConfig.cpp:1502 src/libslic3r/PrintConfig.cpp:1866 -#: src/libslic3r/PrintConfig.cpp:1872 src/libslic3r/PrintConfig.cpp:1880 -#: src/libslic3r/PrintConfig.cpp:1892 src/libslic3r/PrintConfig.cpp:1902 -#: src/libslic3r/PrintConfig.cpp:1910 src/libslic3r/PrintConfig.cpp:1925 -#: src/libslic3r/PrintConfig.cpp:1946 src/libslic3r/PrintConfig.cpp:1958 -#: src/libslic3r/PrintConfig.cpp:1974 src/libslic3r/PrintConfig.cpp:1983 -#: src/libslic3r/PrintConfig.cpp:1992 src/libslic3r/PrintConfig.cpp:2003 -#: src/libslic3r/PrintConfig.cpp:2017 src/libslic3r/PrintConfig.cpp:2025 -#: src/libslic3r/PrintConfig.cpp:2026 src/libslic3r/PrintConfig.cpp:2035 -#: src/libslic3r/PrintConfig.cpp:2043 src/libslic3r/PrintConfig.cpp:2057 +#: 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:311 +#: src/slic3r/GUI/Tab.cpp:1449 src/slic3r/GUI/Tab.cpp:1450 +#: src/libslic3r/ExtrusionEntity.cpp:324 src/libslic3r/ExtrusionEntity.cpp:356 +#: src/libslic3r/PrintConfig.cpp:404 src/libslic3r/PrintConfig.cpp:1610 +#: src/libslic3r/PrintConfig.cpp:2008 src/libslic3r/PrintConfig.cpp:2014 +#: src/libslic3r/PrintConfig.cpp:2022 src/libslic3r/PrintConfig.cpp:2034 +#: src/libslic3r/PrintConfig.cpp:2044 src/libslic3r/PrintConfig.cpp:2052 +#: src/libslic3r/PrintConfig.cpp:2067 src/libslic3r/PrintConfig.cpp:2088 +#: src/libslic3r/PrintConfig.cpp:2100 src/libslic3r/PrintConfig.cpp:2116 +#: src/libslic3r/PrintConfig.cpp:2125 src/libslic3r/PrintConfig.cpp:2134 +#: src/libslic3r/PrintConfig.cpp:2145 src/libslic3r/PrintConfig.cpp:2159 +#: src/libslic3r/PrintConfig.cpp:2167 src/libslic3r/PrintConfig.cpp:2168 +#: src/libslic3r/PrintConfig.cpp:2177 src/libslic3r/PrintConfig.cpp:2185 +#: src/libslic3r/PrintConfig.cpp:2199 msgid "Support material" msgstr "Supports" -#: src/slic3r/GUI/GUI_Preview.cpp:247 src/libslic3r/ExtrusionEntity.cpp:320 -#: src/libslic3r/PrintConfig.cpp:1991 +#: src/slic3r/GUI/GUI_Preview.cpp:312 src/libslic3r/ExtrusionEntity.cpp:325 +#: src/libslic3r/ExtrusionEntity.cpp:358 src/libslic3r/PrintConfig.cpp:2133 msgid "Support material interface" msgstr "Interface des supports" -#: src/libslic3r/PrintConfig.cpp:2044 +#: src/libslic3r/PrintConfig.cpp:2186 msgid "Support material will not be generated for overhangs whose slope angle (90° = vertical) is above the given threshold. In other words, this value represent the most horizontal slope (measured from the horizontal plane) that you can print without support material. Set to zero for automatic detection (recommended)." msgstr "Le support ne sera pas généré pour les surplombs dont l'inclinaison (90° = vertical) dépasse le seuil défini. Autrement dit, cette valeur représente l'inclinaison horizontale maximum (mesurée à partir du plan horizontal) que vous pouvez imprimer sans support. Réglez sur zéro pour une détection automatique (recommandé)." -#: src/libslic3r/PrintConfig.cpp:1964 +#: src/libslic3r/PrintConfig.cpp:2106 msgid "Support material/raft interface extruder" msgstr "Extrudeur pour l'interface des supports/du radeau" -#: src/libslic3r/PrintConfig.cpp:1937 +#: src/libslic3r/PrintConfig.cpp:2079 msgid "Support material/raft/skirt extruder" msgstr "Extrudeur pour support/raft/jupe" -#: src/slic3r/GUI/Plater.cpp:500 src/libslic3r/PrintConfig.cpp:1901 -#: src/libslic3r/PrintConfig.cpp:2674 +#: src/slic3r/GUI/Plater.cpp:366 src/libslic3r/PrintConfig.cpp:2043 +#: src/libslic3r/PrintConfig.cpp:2838 msgid "Support on build plate only" msgstr "Support sur le plateau uniquement" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:888 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:762 msgid "Support parameter change" msgstr "Changement des paramètres de support" -#: src/slic3r/GUI/Tab.cpp:3613 +#: src/slic3r/GUI/Tab.cpp:4023 msgid "Support pillar" msgstr "Pilier de support" -#: src/libslic3r/PrintConfig.cpp:2658 -msgid "Support pillar connection mode" -msgstr "Mode de connexion du pilier de support" - -#: src/libslic3r/PrintConfig.cpp:2648 -msgid "Support pillar diameter" -msgstr "Diamètre du pilier de support" - -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:55 -#: src/libslic3r/PrintConfig.cpp:2764 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:54 +#: src/libslic3r/PrintConfig.cpp:2928 msgid "Support points density" msgstr "Densité des points de support" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1196 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1048 msgid "Support points edit" msgstr "Éditer les points de support" -#: src/slic3r/GUI/GUI_ObjectList.cpp:106 src/slic3r/GUI/GUI_ObjectList.cpp:624 -#: src/slic3r/GUI/Plater.cpp:495 src/slic3r/GUI/Tab.cpp:3604 -#: src/slic3r/GUI/Tab.cpp:3605 src/libslic3r/PrintConfig.cpp:2614 -#: src/libslic3r/PrintConfig.cpp:2621 src/libslic3r/PrintConfig.cpp:2630 -#: src/libslic3r/PrintConfig.cpp:2639 src/libslic3r/PrintConfig.cpp:2649 -#: src/libslic3r/PrintConfig.cpp:2675 src/libslic3r/PrintConfig.cpp:2682 -#: src/libslic3r/PrintConfig.cpp:2693 src/libslic3r/PrintConfig.cpp:2703 -#: src/libslic3r/PrintConfig.cpp:2712 src/libslic3r/PrintConfig.cpp:2725 -#: src/libslic3r/PrintConfig.cpp:2735 src/libslic3r/PrintConfig.cpp:2744 -#: src/libslic3r/PrintConfig.cpp:2754 src/libslic3r/PrintConfig.cpp:2765 -#: src/libslic3r/PrintConfig.cpp:2773 +#: src/slic3r/GUI/GUI_ObjectList.cpp:104 src/slic3r/GUI/GUI_ObjectList.cpp:663 +#: src/slic3r/GUI/Plater.cpp:361 src/slic3r/GUI/Tab.cpp:4014 +#: src/slic3r/GUI/Tab.cpp:4015 src/libslic3r/PrintConfig.cpp:2757 +#: src/libslic3r/PrintConfig.cpp:2764 src/libslic3r/PrintConfig.cpp:2773 +#: src/libslic3r/PrintConfig.cpp:2782 src/libslic3r/PrintConfig.cpp:2792 +#: src/libslic3r/PrintConfig.cpp:2802 src/libslic3r/PrintConfig.cpp:2839 +#: src/libslic3r/PrintConfig.cpp:2846 src/libslic3r/PrintConfig.cpp:2857 +#: src/libslic3r/PrintConfig.cpp:2867 src/libslic3r/PrintConfig.cpp:2876 +#: src/libslic3r/PrintConfig.cpp:2889 src/libslic3r/PrintConfig.cpp:2899 +#: src/libslic3r/PrintConfig.cpp:2908 src/libslic3r/PrintConfig.cpp:2918 +#: src/libslic3r/PrintConfig.cpp:2929 src/libslic3r/PrintConfig.cpp:2937 msgid "Supports" msgstr "Supports" -#: src/slic3r/GUI/Plater.cpp:1194 +#: src/slic3r/GUI/Plater.cpp:1103 msgid "supports and pad" msgstr "supports et socle" -#: src/libslic3r/PrintConfig.cpp:1092 +#: src/libslic3r/PrintConfig.cpp:1185 msgid "Supports remaining times" msgstr "Temps de support restant" -#: src/libslic3r/PrintConfig.cpp:1101 +#: src/libslic3r/PrintConfig.cpp:1194 msgid "Supports stealth mode" msgstr "Supporte le mode silencieux" -#: src/slic3r/GUI/ConfigManipulation.cpp:159 +#: src/slic3r/GUI/ConfigManipulation.cpp:158 msgid "" "Supports work better, if the following feature is enabled:\n" "- Detect bridging perimeters" @@ -7537,44 +8642,60 @@ msgstr "" "Les supports fonctionnent mieux, si la fonctionnalité suivante est activée :\n" "- Détecter les périmètres de pontage" -#: src/slic3r/GUI/Preferences.cpp:87 +#: src/slic3r/GUI/Preferences.cpp:104 msgid "Suppress \" - default - \" presets" msgstr "Supprimer les préréglages \" - par défaut - \"" -#: src/slic3r/GUI/Preferences.cpp:89 +#: src/slic3r/GUI/Preferences.cpp:106 msgid "Suppress \" - default - \" presets in the Print / Filament / Printer selections once there are any other valid presets available." msgstr "Supprimer les préréglages \" - par défaut - \" dans les choix Impression / Filament / Imprimante une fois qu'il y a d'autres préréglages valides disponibles." -#: src/slic3r/GUI/MainFrame.cpp:826 +#: src/slic3r/GUI/MainFrame.cpp:1527 msgid "SVG" msgstr "SVG" -#: src/slic3r/GUI/DoubleSlider.cpp:1144 +#: src/slic3r/GUI/Mouse3DController.cpp:318 +msgid "Swap Y/Z axes" +msgstr "Permuter les axes Y/Z" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:179 +msgid "Switch between Editor/Preview" +msgstr "Basculer entre l'éditeur/l'aperçu" + +#: src/slic3r/GUI/DoubleSlider.cpp:1273 msgid "Switch code to Change extruder" msgstr "Code de changement pour Changer l'extrudeur" -#: src/slic3r/GUI/DoubleSlider.cpp:1179 +#: src/slic3r/GUI/DoubleSlider.cpp:1306 msgid "Switch code to Color change (%1%) for:" msgstr "Code de changement pour Changer de couleur (%1%) pour :" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:140 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:136 msgid "Switch to 3D" msgstr "Basculer vers la 3D" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1376 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1223 msgid "Switch to editing mode" msgstr "Basculer vers le mode édition" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:141 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:137 msgid "Switch to Preview" msgstr "Basculer vers la Prévisualisation" -#: src/slic3r/GUI/wxExtensions.cpp:703 +#: src/slic3r/GUI/GLCanvas3D.cpp:4302 src/slic3r/GUI/GLCanvas3D.cpp:4939 +msgid "Switch to Settings" +msgstr "Basculer dans le Réglages" + +#: src/slic3r/GUI/wxExtensions.cpp:623 #, c-format msgid "Switch to the %s mode" msgstr "Basculer vers le mode %s" -#: src/slic3r/GUI/GUI_App.cpp:882 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:542 +msgid "Switching Presets: Unsaved Changes" +msgstr "Changement de préréglages : modifications non enregistrées" + +#: src/slic3r/GUI/GUI_App.cpp:1608 msgid "" "Switching the language will trigger application restart.\n" "You will lose content of the plater." @@ -7590,65 +8711,72 @@ msgstr "" "\n" "Voulez-vous continuer ?" -#: src/slic3r/GUI/Tab.cpp:1014 +#: src/slic3r/GUI/Tab.cpp:1332 msgid "symbolic profile name" msgstr "nom de profil symbolique" -#: src/libslic3r/PrintConfig.cpp:2036 +#: src/libslic3r/PrintConfig.cpp:2178 msgid "Synchronize support layers with the object print layers. This is useful with multi-material printers, where the extruder switch is expensive." msgstr "Synchroniser les couches du support avec les couches d'impression de l'objet. Cela est utile pour les imprimantes multi-matériaux, pour lesquelles le changement d'extrudeur est onéreux." -#: src/libslic3r/PrintConfig.cpp:2034 +#: src/libslic3r/PrintConfig.cpp:2176 msgid "Synchronize with object layers" msgstr "Synchroniser avec les couches de l'objet" -#: src/slic3r/GUI/MainFrame.cpp:699 +#: src/slic3r/GUI/MainFrame.cpp:924 src/slic3r/GUI/MainFrame.cpp:1323 msgid "System &Info" msgstr "&Informations sur le Système" -#: src/slic3r/GUI/SysInfoDialog.cpp:78 +#: src/slic3r/GUI/SysInfoDialog.cpp:90 src/slic3r/GUI/SysInfoDialog.cpp:92 msgid "System Information" msgstr "Informations sur le Système" -#: src/slic3r/GUI/Preset.cpp:1109 src/slic3r/GUI/Preset.cpp:1164 -#: src/slic3r/GUI/Preset.cpp:1242 src/slic3r/GUI/Preset.cpp:1284 -#: src/slic3r/GUI/PresetBundle.cpp:1583 src/slic3r/GUI/PresetBundle.cpp:1672 +#: src/slic3r/GUI/PresetComboBoxes.cpp:188 +#: src/slic3r/GUI/PresetComboBoxes.cpp:226 +#: src/slic3r/GUI/PresetComboBoxes.cpp:724 +#: src/slic3r/GUI/PresetComboBoxes.cpp:774 +#: src/slic3r/GUI/PresetComboBoxes.cpp:886 +#: src/slic3r/GUI/PresetComboBoxes.cpp:930 msgid "System presets" msgstr "Préréglages système" -#: src/slic3r/GUI/GUI_App.cpp:801 +#: src/slic3r/GUI/GUI_App.cpp:1481 msgid "Take Configuration &Snapshot" msgstr "Capturer un in&stantané de la configuration" -#: src/slic3r/GUI/GUI_App.cpp:839 +#: src/slic3r/GUI/GUI_App.cpp:1540 msgid "Taking configuration snapshot" msgstr "Instantané de la configuration en cours" -#: src/slic3r/GUI/Tab.cpp:1433 src/libslic3r/PrintConfig.cpp:2067 +#: src/slic3r/GUI/Tab.cpp:1779 msgid "Temperature" msgstr "Température" -#: src/libslic3r/PrintConfig.cpp:1804 +#: src/libslic3r/PrintConfig.cpp:1919 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 "Différence de température devant être appliquée quand un extrudeur n'est pas actif. Permet la génération d'un contour complet \"sacrificiel\" sur lequel les buses sont nettoyées régulièrement." -#: src/libslic3r/PrintConfig.cpp:1803 +#: src/libslic3r/PrintConfig.cpp:1918 msgid "Temperature variation" msgstr "Variation de température" -#: src/slic3r/GUI/ConfigWizard.cpp:1017 +#: src/slic3r/GUI/ConfigWizard.cpp:1383 msgid "Temperatures" msgstr "Températures" -#: src/slic3r/GUI/Tab.cpp:1677 src/slic3r/GUI/Tab.cpp:1915 +#: src/slic3r/GUI/Tab.cpp:2215 +msgid "Template Custom G-code" +msgstr "G-code de modèle personnalisé" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:284 msgid "Test" msgstr "Test" -#: src/slic3r/GUI/BedShapeDialog.cpp:172 +#: src/slic3r/GUI/BedShapeDialog.cpp:315 msgid "Texture" msgstr "Texture" -#: src/slic3r/GUI/ConfigManipulation.cpp:208 +#: src/slic3r/GUI/ConfigManipulation.cpp:207 msgid "The %1% infill pattern is not supposed to work at 100%% density." msgstr "Le modèle de remplissage %1% n'est pas censé fonctionner avec une densité de 100%%." @@ -7666,131 +8794,148 @@ msgstr "" "L'équipement %s n'a pas été trouvé.\n" "Si l'équipement est connecté, veuillez appuyer sur le bouton Reset à côté du connecteur USB ..." -#: src/slic3r/GUI/Tab.cpp:976 +#: src/slic3r/GUI/Tab.cpp:1238 msgid "The current custom preset will be detached from the parent system preset." msgstr "Le préréglage personnalisé actuel sera détaché du préréglage système parent." -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:875 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:925 msgid "" "The currently manipulated object is tilted (rotation angles are not multiples of 90°).\n" "Non-uniform scaling of tilted objects is only possible in the World coordinate system,\n" "once the rotation is embedded into the object coordinates." msgstr "L'objet actuel est incliné (les angles de rotation ne sont pas des multiples de 90 °). La mise à l'échelle non uniforme des objets inclinés est possible dans le système de coordonnées seulement quand la rotation est incorporée aux coordonnées de l'objet." -#: src/libslic3r/PrintConfig.cpp:2726 +#: src/libslic3r/PrintConfig.cpp:2890 msgid "The default angle for connecting support sticks and junctions." msgstr "L'angle par défaut pour connecter les tiges de support et les jonctions." -#: src/libslic3r/SLAPrint.cpp:631 +#: src/libslic3r/SLAPrint.cpp:645 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 "Les extrémités des piliers de support seront déployées dans l'espace entre l'objet et le socle. La 'Distance de sécurité de base du support' doit être plus grande que le paramètre 'Espace de l'objet socle' pour éviter cela." -#: src/libslic3r/PrintConfig.cpp:489 +#: src/libslic3r/PrintConfig.cpp:525 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 "L'extrudeur à utiliser (à moins que d'autres réglages d'extrudeur plus spécifiques soient spécifiés). Cette valeur se substitue aux extrudeurs de périmètre et de remplissage, mais pas aux extrudeurs de support." -#: src/libslic3r/PrintConfig.cpp:1003 +#: src/libslic3r/PrintConfig.cpp:1047 msgid "The extruder to use when printing infill." msgstr "L'extrudeur à utiliser pour imprimer le remplissage." -#: src/libslic3r/PrintConfig.cpp:1410 +#: src/libslic3r/PrintConfig.cpp:1518 msgid "The extruder to use when printing perimeters and brim. First extruder is 1." msgstr "L'extrudeur à utiliser pour imprimer les périmètres et la bordure. Le premier extrudeur a le numéro 1." -#: src/libslic3r/PrintConfig.cpp:1738 +#: src/libslic3r/PrintConfig.cpp:1853 msgid "The extruder to use when printing solid infill." msgstr "L'extrudeur à utiliser pour imprimer les remplissages solides." -#: src/libslic3r/PrintConfig.cpp:1966 +#: src/libslic3r/PrintConfig.cpp:2108 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 "L'extrudeur à utiliser pour imprimer les intercalaires du support (1+,0 pour utiliser l'extrudeur actuel et limiter les changements d'outil). Cela affecte également le raft." -#: src/libslic3r/PrintConfig.cpp:1939 +#: src/libslic3r/PrintConfig.cpp:2081 msgid "The extruder to use when printing support material, raft and skirt (1+, 0 to use the current extruder to minimize tool changes)." msgstr "L'extrudeur à utiliser pour imprimer des supports, du raft ou des contours (1+,0 pour utiliser l'extrudeur actuel et limiter les changements d'outil)." -#: src/libslic3r/PrintConfig.cpp:727 +#: src/libslic3r/PrintConfig.cpp:763 msgid "The filament material type for use in custom G-codes." msgstr "Le type de matériau de filament à utiliser dans les G-codes personnalisés." -#: src/libslic3r/PrintConfig.cpp:3494 +#: src/libslic3r/PrintConfig.cpp:3693 msgid "The file where the output will be written (if not specified, it will be based on the input file)." msgstr "Le fichier dans lequel la sortie sera écrite (si rien n'est spécifié, il sera basé sur le fichier d'entrée)" -#: src/libslic3r/PrintConfig.cpp:1102 +#: src/libslic3r/PrintConfig.cpp:1195 msgid "The firmware supports stealth mode" msgstr "Le firmware est compatible avec le mode silencieux" -#: src/libslic3r/PrintConfig.cpp:120 +#: src/libslic3r/PrintConfig.cpp:122 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 "La première couche sera réduite sur le plan XY selon la valeur configurée afin de compenser l'écrasement de la première couche également connu sous le nom d'effet Pied d'Éléphant." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3820 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3927 src/slic3r/GUI/Tab.cpp:3457 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4283 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4410 +#: src/slic3r/GUI/SavePresetDialog.cpp:117 msgid "the following characters are not allowed:" msgstr "les caractères suivant ne sont pas autorisés :" -#: src/slic3r/GUI/ConfigWizard.cpp:1830 +#: src/slic3r/GUI/ConfigWizard.cpp:2257 msgid "The following FFF printer models have no filament selected:" msgstr "Les modèles d'imprimantes FFF suivants n'ont aucun filament sélectionné :" -#: src/slic3r/GUI/ConfigWizard.cpp:1848 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1004 +msgid "The following presets were modified:" +msgstr "Les préréglages suivants ont été modifiés :" + +#: src/slic3r/GUI/ConfigWizard.cpp:2275 msgid "The following SLA printer models have no materials selected:" msgstr "Les modèles d'imprimantes SLA suivants n'ont aucun matériau sélectionné :" -#: src/slic3r/GUI/Tab.cpp:3461 +#: src/slic3r/GUI/SavePresetDialog.cpp:125 msgid "the following suffix is not allowed:" msgstr "le suffixe suivant n'est pas autorisé :" -#: src/libslic3r/PrintConfig.cpp:2871 +#: src/libslic3r/PrintConfig.cpp:3035 msgid "The gap between the object bottom and the generated pad in zero elevation mode." msgstr "Espace entre le bas de l'objet et le socle généré en mode élévation zéro." -#: src/libslic3r/PrintConfig.cpp:2704 +#: src/libslic3r/PrintConfig.cpp:2868 msgid "The height of the pillar base cone" msgstr "La hauteur du cône de la base du pilier" -#: src/slic3r/GUI/DoubleSlider.cpp:1922 +#: src/slic3r/GUI/DoubleSlider.cpp:2140 msgid "The last color change data was saved for a multi extruder printing with tool changes for whole print." msgstr "Les dernières données de changement de couleur ont été enregistrées pour une impression multi-extrudeur avec des changements d'outils pour l'impression entière." -#: src/slic3r/GUI/DoubleSlider.cpp:1900 src/slic3r/GUI/DoubleSlider.cpp:1916 +#: src/slic3r/GUI/DoubleSlider.cpp:2119 src/slic3r/GUI/DoubleSlider.cpp:2134 msgid "The last color change data was saved for a multi extruder printing." msgstr "Les dernières données de changement de couleur ont été enregistrées pour une impression multi-extrudeur." -#: src/slic3r/GUI/DoubleSlider.cpp:1899 +#: src/slic3r/GUI/DoubleSlider.cpp:2118 msgid "The last color change data was saved for a single extruder printing." msgstr "Les dernières données de changement de couleur ont été sauvegardées une vue d'une impression avec extrudeur simple." -#: src/libslic3r/PrintConfig.cpp:2745 +#: src/libslic3r/PrintConfig.cpp:2909 msgid "The max distance of two pillars to get linked with each other. A zero value will prohibit pillar cascading." msgstr "La distance maximum entre deux piliers pour qu'ils soient reliés. Une valeur de zéro empêchera les piliers en cascade." -#: src/libslic3r/PrintConfig.cpp:2736 +#: src/libslic3r/PrintConfig.cpp:2900 msgid "The max length of a bridge" msgstr "La longueur maximum d'un pont" -#: src/libslic3r/PrintConfig.cpp:2714 +#: 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 "Distance minimum entre la base du pilier et le modèle en mm. Utile en mode élévation zéro où un espace correspondant à ce paramètre est inséré entre le modèle et le socle." -#: src/libslic3r/PrintConfig.cpp:185 +#: src/slic3r/GUI/SavePresetDialog.cpp:142 +msgid "The name cannot be empty." +msgstr "Le nom ne peut pas être vide." + +#: 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 "Le nombre de couches solides inférieures est augmenté au-dessus de bottom_solid_layers si nécessaire pour satisfaire l'épaisseur minimale de la coque inférieure." -#: src/libslic3r/PrintConfig.cpp:2143 +#: src/libslic3r/PrintConfig.cpp:2286 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 "Le nombre de couches solides supérieures est augmenté au-dessus de top_solid_layers si nécessaire pour satisfaire l'épaisseur minimale de la coque supérieure. Ceci est utile pour éviter l'effet de capitonnage lors de l'impression avec une hauteur de couche variable." -#: src/libslic3r/PrintConfig.cpp:2277 +#: src/slic3r/GUI/Plater.cpp:2326 +msgid "The object appears to be saved in inches" +msgstr "L'objet semble être enregistré en pouces" + +#: src/libslic3r/PrintConfig.cpp:2420 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 "L'objet sera agrandi/réduit sur les plans XY selon la valeur indiquée (négatif = réduit, positif = agrandi). Ce réglage peut être utile pour un réglage fin des tailles de trous." -#: src/libslic3r/PrintConfig.cpp:1503 +#: src/libslic3r/PrintConfig.cpp:1611 msgid "The object will be raised by this number of layers, and support material will be generated under it." msgstr "L'objet sera surélevé de ce nombre de couches, et du support sera généré en dessous." -#: src/libslic3r/PrintConfig.cpp:2424 +#: src/libslic3r/PrintConfig.cpp:2803 +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 "Le pourcentage de piliers plus petits par rapport au diamètre de pilier normal qui sont utilisés dans les zones problématiques où un pilier normal ne peut pas rentrer." + +#: src/libslic3r/PrintConfig.cpp:2567 msgid "" "The percentage of the bed area. \n" "If the print area exceeds the specified value, \n" @@ -7800,39 +8945,51 @@ msgstr "" "Si la zone d'impression excède la valeur spécifiée,\n" "alors une inclinaison lente sera appliquée, sinon - une inclinaison rapide" -#: src/slic3r/GUI/GUI_App.cpp:932 -msgid "The presets on the following tabs were modified" -msgstr "Les préréglages des onglets suivants ont été modifiés" +#: src/slic3r/GUI/Tab.cpp:3430 +msgid "The physical printer(s) below is based on the preset, you are going to delete." +msgstr "La/les imprimante(s) physique(s) ci-dessous sont basées sur le préréglage que vous allez supprimer." -#: src/libslic3r/PrintConfig.cpp:1846 +#: src/slic3r/GUI/Tab.cpp:3438 +msgid "The physical printer(s) below is based only on the preset, you are going to delete." +msgstr "Les imprimantes physiques ci-dessous sont basées uniquement sur le préréglage que vous allez supprimer." + +#: src/slic3r/GUI/GUI_App.cpp:1676 +msgid "The preset(s) modifications are successfully saved" +msgstr "Les modifications des préréglages sont enregistrées avec succès" + +#: src/libslic3r/PrintConfig.cpp:1988 msgid "The printer multiplexes filaments into a single hot end." msgstr "L'imprimante multiplexe les filaments vers une seule tête d'extrusion." -#: src/libslic3r/Format/3mf.cpp:1630 +#: src/libslic3r/Format/3mf.cpp:1667 msgid "The selected 3mf file has been saved with a newer version of %1% and is not compatible." msgstr "Le fichier 3mf sélectionné a été enregistré avec une version plus récente de %1% et n'est pas compatible." -#: src/libslic3r/Format/AMF.cpp:934 +#: src/libslic3r/Format/AMF.cpp:955 msgid "The selected amf file has been saved with a newer version of %1% and is not compatible." msgstr "Le fichier amf sélectionné a été enregistré avec une version plus récente de %1% et n'est pas compatible." -#: src/slic3r/GUI/BedShapeDialog.cpp:513 +#: src/slic3r/GUI/Plater.cpp:4751 +msgid "The selected file" +msgstr "Le fichier sélectionné" + +#: src/slic3r/GUI/BedShapeDialog.cpp:589 msgid "The selected file contains no geometry." msgstr "Le fichier sélectionné ne contient aucune géométrie." -#: src/slic3r/GUI/BedShapeDialog.cpp:517 +#: src/slic3r/GUI/BedShapeDialog.cpp:593 msgid "The selected file contains several disjoint areas. This is not supported." msgstr "Le fichier sélectionné contient plusieurs zones disjointes. Cela n'est pas utilisable." -#: src/slic3r/GUI/Plater.cpp:2970 +#: src/slic3r/GUI/Plater.cpp:2763 msgid "The selected object can't be split because it contains more than one volume/material." msgstr "L'objet sélectionné ne peut être scindé car il contient plus d'un volume/matériau." -#: src/slic3r/GUI/GUI_ObjectList.cpp:2270 src/slic3r/GUI/Plater.cpp:2978 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2436 src/slic3r/GUI/Plater.cpp:2771 msgid "The selected object couldn't be split because it contains only one part." msgstr "L'objet sélectionné n'a pu être scindé car il ne contient qu'une seule pièce." -#: src/slic3r/GUI/MainFrame.cpp:461 +#: src/slic3r/GUI/MainFrame.cpp:1003 msgid "" "The selected project is no longer available.\n" "Do you want to remove it from the recent projects list?" @@ -7840,7 +8997,7 @@ msgstr "" "Le projet sélectionné n'est plus disponible.\n" "Voulez-vous le retirer de la liste des projets récents?" -#: src/slic3r/GUI/DoubleSlider.cpp:998 +#: src/slic3r/GUI/DoubleSlider.cpp:1121 msgid "" "The sequential print is on.\n" "It's impossible to apply any custom G-code for objects printing sequentually.\n" @@ -7850,20 +9007,24 @@ msgstr "" "Il est impossible d'appliquer un G-code personnalisé pour des objets en impression séquentielle.\n" "Ce code ne sera pas traité au cours de la génération du G-code." -#: src/libslic3r/PrintConfig.cpp:2846 +#: src/slic3r/GUI/ConfigWizard.cpp:1187 +msgid "The size of the object can be specified in inches" +msgstr "La taille de l'objet peut être spécifiée en pouces" + +#: src/libslic3r/PrintConfig.cpp:3010 msgid "The slope of the pad wall relative to the bed plane. 90 degrees means straight walls." msgstr "La pente de la paroi du socle par rapport au plan du lit. 90 degrés donne des murs droits." -#: src/libslic3r/PrintConfig.cpp:1614 +#: src/libslic3r/PrintConfig.cpp:1722 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 "La vitesse de chargement d'un filament dans l'extrudeur après une rétractation (ne s'applique qu'au moteur de l'extrudeur). Si cette valeur reste sur zéro, la vitesse de rétraction est utilisée." -#: src/libslic3r/PrintConfig.cpp:1606 +#: src/libslic3r/PrintConfig.cpp:1714 msgid "The speed for retractions (it only applies to the extruder motor)." msgstr "La vitesse des rétractations (ne s'applique qu'au moteur de l'extrudeur)." -#: src/slic3r/GUI/ConfigManipulation.cpp:81 -#, no-c-format +#: src/slic3r/GUI/ConfigManipulation.cpp:80 +#, c-format msgid "" "The Spiral Vase mode requires:\n" "- one perimeter\n" @@ -7881,41 +9042,42 @@ msgstr "" "-Vérifier que l'épaisseur de coque verticale est activée\n" "-La détection de parois fines doit être désactivée" -#: src/libslic3r/Print.cpp:1237 +#: src/libslic3r/Print.cpp:1263 msgid "The Spiral Vase option can only be used when printing a single object." msgstr "L'option Vase Spirale ne peut être utilisé que lors de l'impression d'un seul objet." -#: src/libslic3r/Print.cpp:1244 +#: src/libslic3r/Print.cpp:1270 msgid "The Spiral Vase option can only be used when printing single material objects." msgstr "L'option Vase Spirale ne peut être utilisé que lors de l'impression d'objets mono-matériau." -#: src/slic3r/GUI/Tab.cpp:3068 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:464 msgid "The supplied name is empty. It can't be saved." msgstr "Le nom proposé est vide. Sauvegarde impossible." -#: src/slic3r/GUI/Tab.cpp:3465 +#: src/slic3r/GUI/SavePresetDialog.cpp:131 msgid "The supplied name is not available." msgstr "Le nom proposé n'est pas disponible." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3819 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3926 src/slic3r/GUI/Tab.cpp:3456 -#: src/slic3r/GUI/Tab.cpp:3460 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4282 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4409 +#: src/slic3r/GUI/SavePresetDialog.cpp:116 +#: src/slic3r/GUI/SavePresetDialog.cpp:124 msgid "The supplied name is not valid;" msgstr "Le nom fourni n'est pas valide ;" -#: src/libslic3r/Print.cpp:1222 +#: src/libslic3r/Print.cpp:1248 msgid "The supplied settings will cause an empty print." msgstr "Les réglages fournis vont entraîner une impression vide." -#: src/libslic3r/PrintConfig.cpp:2789 +#: src/libslic3r/PrintConfig.cpp:2953 msgid "The thickness of the pad and its optional cavity walls." msgstr "L'épaisseur du socle et de ses parois de cavité optionnelles." -#: src/libslic3r/PrintConfig.cpp:1911 +#: 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 "Distance verticale entre l'objet et l'intercalaire du support. Régler cette valeur sur zéro empêchera Slic3r d'utiliser la vitesse et le débit des ponts pour la première couche de l'objet." -#: src/slic3r/GUI/Tab.cpp:2575 +#: src/slic3r/GUI/Tab.cpp:2731 msgid "" "The Wipe option is not available when using the Firmware Retraction mode.\n" "\n" @@ -7925,11 +9087,11 @@ msgstr "" "\n" "Voulez-vous que je la désactive pour permettre la Rétractation du Firmware ?" -#: src/libslic3r/Print.cpp:1268 +#: src/libslic3r/Print.cpp:1294 msgid "The Wipe Tower currently does not support volumetric E (use_volumetric_e=0)." msgstr "À l'heure actuelle, la Tour de Nettoyage ne prend pas en charge l'E volumétrique (use_volumetric_e-0)." -#: src/slic3r/GUI/ConfigManipulation.cpp:115 +#: src/slic3r/GUI/ConfigManipulation.cpp:114 msgid "" "The Wipe Tower currently supports the non-soluble supports only\n" "if they are printed with the current extruder without triggering a tool change.\n" @@ -7939,51 +9101,55 @@ msgstr "" "si ils sont imprimés avec l'extrudeur actuel sans déclencher un changement d'outil.\n" "(support_material_extruder et support_material_interface_extruder doivent être réglés sur 0)." -#: src/libslic3r/Print.cpp:1400 +#: src/libslic3r/Print.cpp:1426 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 support_material_extruder and support_material_interface_extruder need to be set to 0)." msgstr "A l'heure actuelle la Tour de Nettoyage ne tolère les supports non-solubles que s'ils sont imprimés avec l'extrudeur en cours d'utilisation sans déclencher un changement d'outil. (support_material_extruder de même que support_material_interface_extruder doivent être réglés sur 0)." -#: src/libslic3r/Print.cpp:1270 +#: src/libslic3r/Print.cpp:1296 msgid "The Wipe Tower is currently not supported for multimaterial sequential prints." msgstr "La tour de nettoyage n'est actuellement pas prise en charge pour les impressions séquentielles multimatériaux." -#: src/libslic3r/Print.cpp:1262 -msgid "The Wipe Tower is currently only supported for the Marlin, RepRap/Sprinter and Repetier G-code flavors." -msgstr "La tour de nettoyage est actuellement supportée uniquement pour les versions de G-Code de Marlin, RepRap/Sprinter et Repetier." +#: src/libslic3r/Print.cpp:1290 +msgid "The Wipe Tower is currently only supported for the Marlin, RepRap/Sprinter, RepRapFirmware and Repetier G-code flavors." +msgstr "La tour de nettoyage n'est actuellement prise en charge que pour les versions du G-code Marlin, RepRap / Sprinter, RepRapFirmware et Repetier." -#: src/libslic3r/Print.cpp:1264 +#: src/libslic3r/Print.cpp:1290 msgid "The Wipe Tower is currently only supported with the relative extruder addressing (use_relative_e_distances=1)." msgstr "La tour de nettoyage est actuellement supportée uniquement avec l'adressage relatif de l'extrudeur (use_relative_e_distances=1)." -#: src/libslic3r/Print.cpp:1293 +#: src/libslic3r/Print.cpp:1319 msgid "The Wipe Tower is only supported for multiple objects if they are printed over an equal number of raft layers" msgstr "La tour de nettoyage est uniquement supportées pour plusieurs objets s'ils sont imprimés avec un nombre égal de couche de radeau" -#: src/libslic3r/Print.cpp:1295 +#: src/libslic3r/Print.cpp:1321 msgid "The Wipe Tower is only supported for multiple objects if they are printed with the same support_material_contact_distance" msgstr "La tour de nettoyage est uniquement supportée pour plusieurs objets s'ils sont imprimés avec la même support_material_contact_distance" -#: src/libslic3r/Print.cpp:1297 +#: src/libslic3r/Print.cpp:1323 msgid "The Wipe Tower is only supported for multiple objects if they are sliced equally." msgstr "La tour de nettoyage est uniquement supportée pour plusieurs objets s'ils découpés de la même façon." -#: src/libslic3r/Print.cpp:1291 +#: src/libslic3r/Print.cpp:1317 msgid "The Wipe Tower is only supported for multiple objects if they have equal layer heights" msgstr "La tour de nettoyage est uniquement supportée pour plusieurs objets s'ils ont une même hauteur de couche" -#: src/libslic3r/Print.cpp:1257 +#: src/libslic3r/Print.cpp:1283 msgid "The wipe tower is only supported if all extruders have the same nozzle diameter and use filaments of the same diameter." msgstr "La tour de nettoyage n'est supportée que si tous les extrudeurs ont le même diamètre de buse et utilisent un filament de même diamètre." -#: src/libslic3r/Print.cpp:1339 +#: src/libslic3r/Print.cpp:1365 msgid "The Wipe tower is only supported if all objects have the same variable layer height" msgstr "La tour de Nettoyage n'est prise en charge que si tous les objets ont la même hauteur de couche variable" -#: src/libslic3r/SLAPrintSteps.cpp:621 +#: src/slic3r/GUI/Plater.cpp:3563 +msgid "There are active warnings concerning sliced models:" +msgstr "Il existe des avertissements actifs concernant les modèles découpés :" + +#: src/libslic3r/SLAPrintSteps.cpp:619 msgid "There are unprintable objects. Try to adjust support settings to make the objects printable." msgstr "Il y a des objets non imprimables. Essayez d'ajuster les paramètres de support pour rendre les objets imprimables." -#: src/slic3r/GUI/DoubleSlider.cpp:1030 +#: src/slic3r/GUI/DoubleSlider.cpp:1155 msgid "" "There is a color change for extruder that has not been used before.\n" "Check your settings to avoid redundant color changes." @@ -7991,7 +9157,7 @@ msgstr "" "Il y a un changement de couleur pour un extrudeur qui n'a pas été utilisé auparavant.\n" "Vérifiez vos paramètres pour éviter les changements de couleur redondants." -#: src/slic3r/GUI/DoubleSlider.cpp:1024 +#: src/slic3r/GUI/DoubleSlider.cpp:1149 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." @@ -7999,7 +9165,7 @@ msgstr "" "Il y a un changement de couleur pour un extrudeur qui ne sera pas utilisé avant la fin du travail d'impression.\n" "Ce code ne sera pas traité lors de la génération du G-code." -#: src/slic3r/GUI/DoubleSlider.cpp:1027 +#: src/slic3r/GUI/DoubleSlider.cpp:1152 msgid "" "There is an extruder change set to the same extruder.\n" "This code won't be processed during G-code generation." @@ -8007,12 +9173,16 @@ msgstr "" "Une modification d'extrudeur est défini sur le même extrudeur.\n" "Ce code ne sera pas traité lors de la génération du G-code." +#: src/libslic3r/GCode.cpp:604 +msgid "There is an object with no extrusions on the first layer." +msgstr "Il y a un objet sans extrusion sur la première couche." + #: src/slic3r/GUI/UpdateDialogs.cpp:225 #, c-format msgid "This %s version: %s" msgstr "Version de ce %s : %s" -#: src/slic3r/GUI/Tab.cpp:982 +#: src/slic3r/GUI/Tab.cpp:1244 msgid "" "This action is not revertable.\n" "Do you want to proceed?" @@ -8020,79 +9190,79 @@ msgstr "" "Cette action n'est pas réversible.\n" "Voulez-vous continuer ?" -#: src/libslic3r/PrintConfig.cpp:165 +#: src/libslic3r/PrintConfig.cpp:199 msgid "This code is inserted between objects when using sequential printing. By default extruder and bed temperature are reset using non-wait command; however if M104, M109, M140 or M190 are detected in this custom code, Slic3r will not add temperature commands. Note that you can use placeholder variables for all Slic3r settings, so you can put a \"M109 S[first_layer_temperature]\" command wherever you want." msgstr "Ce code est inséré entre des objets lorsque vous utilisez l'impression séquentielle. Par défaut la température de l'extrudeur et du plateau est réinitialisée et utilise la commande sans-attente ; toutefois si des commandes M104, M109, M140 ou M190 sont détectées dans ce code personnalisé, Slic3r n'ajoutera pas de commandes de température. Notez que vous pouvez utiliser des variables génériques pour tous les réglages de Slic3r, donc vous pouvez entrer une commande \"M109S[first_layer_temperature]\" où vous le souhaitez." -#: src/libslic3r/PrintConfig.cpp:1081 +#: src/libslic3r/PrintConfig.cpp:1174 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 use placeholder variables for all Slic3r settings as well as [layer_num] and [layer_z]." msgstr "Ce code personnalisé est inséré à chaque changement de couche, juste après le mouvement Z et avant le déplacement de l'extrudeur au point de départ de la couche suivante. Notez que vous pouvez utiliser des variables génériques pour tous les réglages de Slic3r de même que [layer_num] et [layer_z]." -#: src/libslic3r/PrintConfig.cpp:154 +#: src/libslic3r/PrintConfig.cpp:188 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 "Ce code personnalisé est inséré à chaque changement de couche, juste avant le mouvement en Z. Notez que vous pouvez utiliser des variables génériques pour tous les réglages de Slic3r de même que [layer_num] et [layer_z]." -#: src/libslic3r/PrintConfig.cpp:2094 +#: src/libslic3r/PrintConfig.cpp:2237 msgid "This custom code is inserted before every toolchange. Placeholder variables for all PrusaSlicer settings as well as {previous_extruder} and {next_extruder} can be used. When a tool-changing command which changes to the correct extruder is included (such as T{next_extruder}), PrusaSlicer will emit no other such command. It is therefore possible to script custom behaviour both before and after the toolchange." msgstr "Ce code personnalisé est inséré avant chaque changement d'outil. Des variables génériques pour n'importe quels réglages PrusaSlicer ainsi que {previous_extruder} et {next_extruder} peuvent être utilisées. Lorsqu'une commande de changement d'outil qui occasionne un changement concernant le bon extrudeur est incluse (comme T{next_extruder}), PrusaSlicer n'émettra pas d'autres commandes de ce type. Il est donc possible de rédiger le script d'un comportement personnalisé à la fois avant et après le changement d'outil." -#: src/libslic3r/PrintConfig.cpp:396 +#: src/libslic3r/PrintConfig.cpp:430 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 multimaterial printers). Note that you can use placeholder variables for all PrusaSlicer settings. If you have multiple extruders, the gcode is processed in extruder order." msgstr "Cette procédure de fin est insérée à la fin d'un fichier de sortie, avant le gcode de fin de l'imprimante (et avant tout changement d'outil de ce filament dans le cas des imprimantes multimatériaux). Notez que vous pouvez utiliser des variables génériques pour tous les réglages PrusaSlicer. Si vous avez des extrudeurs multiples, le gcode est traité dans l'ordre des extrudeurs." -#: src/libslic3r/PrintConfig.cpp:386 +#: src/libslic3r/PrintConfig.cpp:420 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 "Cette procédure de fin est insérée à la fin d'un fichier de sortie. Notez que vous pouvez utiliser des variables génériques pour tous les paramètres PrusaSlicer." -#: src/libslic3r/PrintConfig.cpp:1258 src/libslic3r/PrintConfig.cpp:1269 +#: src/libslic3r/PrintConfig.cpp:1366 src/libslic3r/PrintConfig.cpp:1377 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 of 1.8 mm³/s (0.45mm extrusion width, 0.2mm extrusion height, feedrate 20 mm/s) to 5.4 mm³/s (feedrate 60 mm/s) will take at least 2 seconds." msgstr "Ce réglage expérimental sert à limiter la vitesse de changement dans le flux d'extrusion. Une valeur de 1.8 mm³/s² garantit qu'un changement de flux d'extrusion de 1.8 mm³/s (largeur d'extrusion 0.45mm, hauteur d'extrusion 0.2mm, vitesse d'avance de 20 mm/s) à 5.4 mm³/s (vitesse d'avance de 60 mm/s) prendra au moins 2 secondes." -#: src/libslic3r/PrintConfig.cpp:1248 +#: src/libslic3r/PrintConfig.cpp:1356 msgid "This experimental setting is used to set the maximum volumetric speed your extruder supports." msgstr "Ce réglage expérimental est utilisé pour paramétrer la vitesse volumétrique maximum tolérée par votre extrudeur." -#: src/libslic3r/PrintConfig.cpp:2162 +#: src/libslic3r/PrintConfig.cpp:2305 msgid "This experimental setting uses G10 and G11 commands to have the firmware handle the retraction. This is only supported in recent Marlin." msgstr "Ce réglage expérimental utilise les commandes G10 et G11 pour laisser le firmware gérer la rétractation. Utilisable seulement par les versions récentes de Marlin." -#: src/libslic3r/PrintConfig.cpp:2176 +#: src/libslic3r/PrintConfig.cpp:2319 msgid "This experimental setting uses outputs the E values in cubic millimeters instead of linear millimeters. If your firmware doesn't already know filament diameter(s), you can put commands like 'M200 D[filament_diameter_0] T0' in your start G-code in order to turn volumetric mode on and use the filament diameter associated to the filament selected in Slic3r. This is only supported in recent Marlin." msgstr "Cette fonction expérimentale génère des valeurs de E en millimètres cubiques au lieu de millimètres linéaires. Si votre firmware ne connait pas déjà le diamètre du filament, vous pouvez saisir une commande comme 'M200 D[filament_diameter_0] T0' dans votre G-Code de début pour activer le mode volumétrique, et utiliser le diamètre de filament associé au filament choisi dans Slic3r. Cette fonction n'est utilisable que dans les versions récentes de Marlin." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3972 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4459 msgid "This extruder will be set for selected items" msgstr "Cet extrudeur sera défini pour les items sélectionnés" -#: src/libslic3r/PrintConfig.cpp:224 +#: 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 "Ce facteur affecte la quantité de plastique utilisée pour les ponts. Vous pouvez le diminuer légèrement pour éviter l'affaissement. La valeur par défaut est généralement suffisante et vous devriez expérimenter le refroidissement (utiliser un ventilateur) avant de modifier ceci." -#: src/libslic3r/PrintConfig.cpp:546 +#: 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 "Ce facteur modifie proportionnellement le flux d'extrusion. Vous pouvez avoir besoin de modifier ceci afin d'obtenir un rendu de surface net et une largeur correcte pour les murs uniques. Les valeurs habituelles vont de 0.9 à 1.1. Si vous pensez devoir changer davantage cette valeur, vérifiez le diamètre de votre filament et les E Steps dans le firmware." -#: src/libslic3r/PrintConfig.cpp:214 +#: src/libslic3r/PrintConfig.cpp:248 msgid "This fan speed is enforced during all bridges and overhangs." msgstr "Cette vitesse de ventilateur sera utilisée pour les ponts et les surplombs." -#: src/libslic3r/PrintConfig.cpp:992 +#: src/libslic3r/PrintConfig.cpp:1036 msgid "This feature allows to combine infill and speed up your print by extruding thicker infill layers while preserving thin perimeters, thus accuracy." msgstr "Cette fonction permet de combiner le remplissage afin d'accélérer l'impression en extrudant des couches de remplissage plus épaisses tout en conservant des périmètres fins, avec plus de précision." -#: src/libslic3r/PrintConfig.cpp:1746 +#: src/libslic3r/PrintConfig.cpp:1861 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 "Cette fonction permet de forcer l'impression d'une couche solide après le nombre de couches indiqué. Réglez sur zéro pour la désactiver. Vous pouvez indiquer n'importe quelle valeur (par exemple 9999); Slic3r choisira automatiquement le nombre maximum de couches a combiner en fonction du diamètre de la buse et de l'épaisseur des couches." -#: src/libslic3r/PrintConfig.cpp:1795 +#: 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 "Cette fonction élèvera le Z graduellement en cas d'impression d'un objet à paroi unique, afin de rendre invisibles les jointures. Cette option nécessite de n'avoir qu'un seul périmètre, de ne pas avoir de remplissage, ni de surface solide supérieure, ni de support. Vous pouvez toujours choisir le nombre de surface solides inférieures de même que les boucles des jupes et des bordures. Cela ne fonctionnera pas si vous imprimez plus d'un objet." -#: src/slic3r/GUI/Plater.cpp:2367 +#: 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 "Ce fichier ne peut être chargé en mode simple. Voulez-vous basculer en mode avancé ?" -#: src/slic3r/GUI/Plater.cpp:2357 +#: src/slic3r/GUI/Plater.cpp:2319 msgid "" "This file contains several objects positioned at multiple heights.\n" "Instead of considering them as multiple objects, should I consider\n" @@ -8118,84 +9288,96 @@ msgstr "" "Voulez-vous continuer et flasher ce fichier hex quand même ?\n" "S'il vous plait, ne continuez que si vous êtes certain de faire le bon choix." -#: src/libslic3r/PrintConfig.cpp:314 +#: src/libslic3r/PrintConfig.cpp:348 msgid "This flag enables the automatic cooling logic that adjusts print speed and fan speed according to layer printing time." msgstr "Cette option active la logique de refroidissement automatique, qui ajuste la vitesse d'impression et celle du ventilateur en fonction du temps d'impression de la couche." -#: src/slic3r/GUI/Plater.cpp:536 +#: src/slic3r/GUI/Plater.cpp:402 msgid "This flag enables the brim that will be printed around each object on the first layer." msgstr "Cette option permet l'impression de la bordure qui entoure chaque objet lors de la première couche." -#: src/libslic3r/PrintConfig.cpp:1538 +#: src/libslic3r/PrintConfig.cpp:1646 msgid "This flag enforces a retraction whenever a Z move is done." msgstr "Cette option active la rétractation lors d'un déplacement sur l'axe Z." -#: src/libslic3r/PrintConfig.cpp:2194 +#: src/libslic3r/PrintConfig.cpp:2337 msgid "This flag will move the nozzle while retracting to minimize the possible blob on leaky extruders." msgstr "Cette option déplace la buse lors des rétractations, limitant ainsi l'apparition d'amas sur les extrudeurs ayant tendance à couler." -#: src/slic3r/GUI/Tab.cpp:953 +#: src/libslic3r/PrintConfig.cpp:1961 +msgid "This G-code will be used as a code for the color change" +msgstr "Ce G-code sera utilisé comme code pour le changement de couleur" + +#: src/libslic3r/PrintConfig.cpp:1970 +msgid "This G-code will be used as a code for the pause print" +msgstr "Ce G-code sera utilisé comme code pour la pause de l'impression" + +#: src/libslic3r/PrintConfig.cpp:1979 +msgid "This G-code will be used as a custom code" +msgstr "Ce G-code sera utilisé comme code personnalisé" + +#: src/slic3r/GUI/Tab.cpp:1272 msgid "This is a default preset." msgstr "Ceci est un préréglage par défaut." -#: src/libslic3r/PrintConfig.cpp:2766 +#: src/libslic3r/PrintConfig.cpp:2930 msgid "This is a relative measure of support points density." msgstr "Ceci est une mesure relative de la densité des points de support." -#: src/slic3r/GUI/Tab.cpp:2338 +#: src/slic3r/GUI/Tab.cpp:2507 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 "Ceci est une imprimante multimatériaux à extrudeur unique, les diamètres de tous les extrudeurs seront réglés sur la nouvelle valeur. Voulez-vous continuer ?" -#: src/slic3r/GUI/Tab.cpp:955 +#: src/slic3r/GUI/Tab.cpp:1274 msgid "This is a system preset." msgstr "Ceci est un préréglage système." -#: src/libslic3r/PrintConfig.cpp:523 src/libslic3r/PrintConfig.cpp:583 +#: src/libslic3r/PrintConfig.cpp:559 src/libslic3r/PrintConfig.cpp:619 msgid "This is only used in the Slic3r interface as a visual help." msgstr "Ceci est utilisé dans l'interface de Slic3r uniquement en tant que indication visuelle." -#: src/libslic3r/PrintConfig.cpp:336 +#: src/libslic3r/PrintConfig.cpp:370 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 "Accélération à laquelle votre imprimante sera réinitialisée suite à une modification de l'accélération des fonctions spécifiques (périmètre/remplissage). Régler sur zéro pour ne pas réinitialiser l'accélération." -#: src/libslic3r/PrintConfig.cpp:194 +#: src/libslic3r/PrintConfig.cpp:228 msgid "This is the acceleration your printer will use for bridges. Set zero to disable acceleration control for bridges." msgstr "L'accélération qui sera utilisée par votre imprimante pour les ponts. Régler sur zéro pour désactiver l'accélération pour les ponts." -#: src/libslic3r/PrintConfig.cpp:860 +#: src/libslic3r/PrintConfig.cpp:900 msgid "This is the acceleration your printer will use for first layer. Set zero to disable acceleration control for first layer." msgstr "L'accélération que l'imprimante utilisera pour la première couche. Régler sur zéro afin de désactiver le contrôle de l'accélération pour la première couche." -#: src/libslic3r/PrintConfig.cpp:982 +#: src/libslic3r/PrintConfig.cpp:1026 msgid "This is the acceleration your printer will use for infill. Set zero to disable acceleration control for infill." msgstr "Il s'agit de l'accélération que votre imprimante utilisera pour le remplissage. Régler sur zéro afin de désactiver le contrôle de l'accélération pour le remplissage." -#: src/libslic3r/PrintConfig.cpp:1400 +#: 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 "L'accélération que votre imprimante utilisera pour les périmètres. Une valeur élevée comme 9000 donne généralement de bons résultats si votre matériel le permet. Régler sur zéro afin de désactiver le contrôle de l'accélération pour les périmètres." -#: src/libslic3r/PrintConfig.cpp:1327 +#: src/libslic3r/PrintConfig.cpp:1435 msgid "This is the diameter of your extruder nozzle (for example: 0.5, 0.35 etc.)" msgstr "Il s'agit du diamètre de la buse de votre extrudeur (par exemple: 0.5, 0.35, etc.)" -#: src/libslic3r/PrintConfig.cpp:1227 -#, no-c-format +#: src/libslic3r/PrintConfig.cpp:1335 +#, c-format msgid "This is the highest printable layer height for this extruder, used to cap the variable layer height and support layer height. Maximum recommended layer height is 75% of the extrusion width to achieve reasonable inter-layer adhesion. If set to 0, layer height is limited to 75% of the nozzle diameter." msgstr "Ceci est la hauteur de couche imprimable maximum pour cet extrudeur, utilisée pour plafonner la hauteur de couche variable et la hauteur de couche des supports. La hauteur de couche maximum recommandée est 75% de la largeur d'extrusion afin d'obtenir une adhésion inter-couches correcte. Si réglée sur 0, la hauteur de couche est limitée à 75% du diamètre de la buse." -#: src/libslic3r/PrintConfig.cpp:1290 +#: src/libslic3r/PrintConfig.cpp:1398 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 "Cette valeur est la hauteur de couche imprimable minimum pour cet extrudeur et elle limite la résolution pour la hauteur de couche variable. Les valeurs type se situent entre 0.05 mm et 0.1 mm." -#: src/libslic3r/GCode.cpp:639 +#: src/libslic3r/GCode.cpp:624 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 "Ceci est généralement provoqué par de petites extrusions négligeables ou par un modèle défectueux. Essayez de réparer le modèle ou de changer son orientation sur le lit." -#: src/libslic3r/PrintConfig.cpp:2215 +#: src/libslic3r/PrintConfig.cpp:2358 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 "Cette matrice décrit les volumes (en millimètres cube) nécessaires pour purger le nouveau filament dans la tour de nettoyage pour une paire d'outils donnée." -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:878 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:928 msgid "" "This operation is irreversible.\n" "Do you want to proceed?" @@ -8203,31 +9385,35 @@ msgstr "" "Cette opération est irréversible.\n" "Voulez-vous continuer?" -#: src/libslic3r/PrintConfig.cpp:1442 +#: src/libslic3r/PrintConfig.cpp:1550 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 surfaces which benefit from a higher number of perimeters if the Extra Perimeters option is enabled." msgstr "Cette option définit le nombre de périmètres à générer pour chaque couche. Notez que Slic3r peut augmenter cette valeur automatiquement si il détecte une surface inclinée qui nécessite un plus grand nombre de périmètres, si l'option \"Périmètres supplémentaires\" est sélectionnée." -#: src/libslic3r/PrintConfig.cpp:1356 +#: src/libslic3r/PrintConfig.cpp:1464 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 "Cette option abaissera la température des extrudeurs inutilisés pour prévenir le oozing (suintement). Cela active automatiquement la génération d'une grande jupe et le déplacement des extrudeurs hors de cette jupe lors des changements de température." -#: src/libslic3r/PrintConfig.cpp:1029 +#: src/libslic3r/PrintConfig.cpp:1073 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 "Cette option limitera le remplissage aux zones nécessaires pour soutenir les couches supérieures (cela agira comme un support interne). Si activé, la génération du G-Code prendra plus de temps à cause des calculs supplémentaires requis." -#: src/libslic3r/PrintConfig.cpp:1022 +#: src/libslic3r/PrintConfig.cpp:1066 msgid "This option will switch the print order of perimeters and infill, making the latter first." msgstr "Cette option inverse l'ordre d'impression des périmètres et du remplissage, ce dernier étant alors imprimé en premier." -#: src/libslic3r/PrintConfig.cpp:459 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:85 +msgid "This printer will be shown in the presets list as" +msgstr "Cette imprimante sera affichée dans la liste des préréglages comme" + +#: src/libslic3r/PrintConfig.cpp:495 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 "Ce réglage distinct affectera la vitesse des périmètres extérieurs (ceux qui sont visibles). Si cette valeur est exprimée en pourcentage (par exemple: 80%) elle sera calculée d'après le réglage de la vitesse de périmètre susmentionnée. Réglez sur zéro pour un ajustement automatique." -#: src/libslic3r/PrintConfig.cpp:1717 +#: src/libslic3r/PrintConfig.cpp:1832 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 "Ce réglage distinct affectera la vitesse des périmètre ayant un rayon <= 6.5mm (les trous habituellement). Si cette valeur est exprimée en pourcentage (par exemple: 80%) elle sera calculée d'après le réglage de la vitesse de périmètre susmentionnée. Réglez sur zéro pour un ajustement automatique." -#: src/libslic3r/PrintConfig.cpp:1038 +#: src/libslic3r/PrintConfig.cpp:1082 msgid "This setting applies an additional overlap between infill and perimeters for better bonding. Theoretically this shouldn't be needed, but backlash might cause gaps. If expressed as percentage (example: 15%) it is calculated over perimeter extrusion width." msgstr "Cette option applique un chevauchement supplémentaire entre les périmètres et le remplissage pour une meilleur fusion. En théorie, cela ne devrait pas être nécessaire, mais le jeu mécanique peut générer des espacements. Si exprimé en pourcentage (par exemple 15%), la valeur sera calculée en fonction de la largeur d'extrusion du périmètre." @@ -8235,31 +9421,31 @@ msgstr "Cette option applique un chevauchement supplémentaire entre les périm 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 "Cette option contrôle l'épaisseur (et donc le nombre total) des couches. Des couches plus fines donneront une meilleure précision mais l'impression sera plus longue." -#: src/libslic3r/PrintConfig.cpp:1218 +#: src/libslic3r/PrintConfig.cpp:1326 msgid "This setting represents the maximum speed of your fan." msgstr "Cette option représente la vitesse maximum du ventilateur." -#: src/libslic3r/PrintConfig.cpp:1281 +#: src/libslic3r/PrintConfig.cpp:1389 msgid "This setting represents the minimum PWM your fan needs to work." msgstr "Cette option représente le PWM minimum dont votre ventilateur a besoin pour tourner." -#: src/libslic3r/PrintConfig.cpp:1829 +#: src/libslic3r/PrintConfig.cpp:1944 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 printers). This is used to override settings for a specific filament. If PrusaSlicer detects M104, M109, M140 or M190 in your custom codes, such commands will not be prepended automatically so you're free to customize the order of heating commands and other custom actions. Note that you can use placeholder variables for all PrusaSlicer settings, so you can put a \"M109 S[first_layer_temperature]\" command wherever you want. If you have multiple extruders, the gcode is processed in extruder order." msgstr "Cette procédure de départ est insérée au début, après n'importe quel gcode de départ de l'imprimante (et après n'importe quel changement d'outil pour ce filament dans le cas des imprimantes multi-matériaux). Ceci est utilisé pour supplanter les réglages d'un filament spécifique. Si PrusaSlicer détecte M104, M109, M140 ou M190 dans vos codes personnalisés, de telles commandes ne seront pas ajoutées automatiquement de sorte que vous restez libre de personnaliser l'ordre des commandes de chauffe et autres actions personnalisées. Notez que vous pouvez utiliser des variables génériques pour les tous les paramètres PrusaSlicer, donc vous pouvez utiliser une commande \"M109 S[first_layer_temperature]\" où vous voulez." -#: src/libslic3r/PrintConfig.cpp:1814 +#: src/libslic3r/PrintConfig.cpp:1929 msgid "This start procedure is inserted at the beginning, after bed has reached the target temperature and extruder just started heating, and before extruder has finished heating. If PrusaSlicer detects M104 or M190 in your custom codes, such commands will not be prepended automatically so you're free to customize the order of heating commands and other custom actions. Note that you can use placeholder variables for all PrusaSlicer settings, so you can put a \"M109 S[first_layer_temperature]\" command wherever you want." msgstr "Cette procédure de départ est insérée au début, après que le lit a atteint la température ciblée et que l'extrudeur vient de commencer à chauffer, et avant que l'extrudeur ait terminé de chauffer. Si PrusaSlicer détecte M104 ou M190 dans votre code personnalisé, de telles commandes ne seront pas ajoutées automatiquement de sorte que vous restez libre de personnaliser l'ordre des commandes de chauffe et autres actions personnalisées. Notez que vous pouvez utiliser des variables génériques pour les tous les paramètres PrusaSlicer, donc vous pouvez utiliser une commande \"M109 S[first_layer_temperature]\" où vous voulez." -#: src/libslic3r/PrintConfig.cpp:695 +#: src/libslic3r/PrintConfig.cpp:731 msgid "This string is edited by RammingDialog and contains ramming specific parameters." msgstr "Cette chaine est éditée par RammingDialog et contient les paramètres spécifiques d'expulsion." -#: src/libslic3r/PrintConfig.cpp:2286 +#: src/libslic3r/PrintConfig.cpp:2429 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 example, if your endstop zero actually leaves the nozzle 0.3mm far from the print bed, set this to -0.3 (or fix your endstop)." msgstr "Cette valeur sera ajoutée (ou soustraite) de toutes les coordonnées Z dans le G-Code de sortie. Elle est utilisée pour compenser une mauvaise position de fin de course Z: par exemple si votre fin de course place votre buse à 0.3mm au dessus du plateau, réglez cette valeur sur -0.3 (ou corrigez votre fin de course)." -#: src/libslic3r/PrintConfig.cpp:2208 +#: src/libslic3r/PrintConfig.cpp:2351 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 "Ce vecteur enregistre les volumes requis pour changer l'outil utilisé pour la tour de nettoyage. Ces valeurs sont utilisées pour simplifier la création des volumes de purge complets ci-dessous." @@ -8276,82 +9462,96 @@ msgstr "" "\n" "Vous pouvez soit quitter %s et essayer à nouveau avec une version plus récente, ou vous pouvez relancer la configuration initiale. Procéder ainsi permettra de créer une sauvegarde de la configuration existante avant d'installer les fichiers compatibles avec ce %s." -#: src/libslic3r/PrintConfig.cpp:2458 +#: src/libslic3r/PrintConfig.cpp:2601 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 "Cela appliquera une correction gamma aux polygones 2D tramés. Une valeur gamma de zéro signifie un seuillage avec le seuil au milieu. Ce comportement élimine l'anti-alias sans perdre de trous dans le polygone." -#: src/libslic3r/PrintConfig.cpp:2081 +#: src/libslic3r/PrintConfig.cpp:2224 msgid "Threads" msgstr "Threads" -#: src/libslic3r/PrintConfig.cpp:2082 +#: src/libslic3r/PrintConfig.cpp:2225 msgid "Threads are used to parallelize long-running tasks. Optimal threads number is slightly above the number of available cores/processors." msgstr "Les threads sont utilisés pour paralléliser les calculs longs. Le nombre optimal de threads est légèrement supérieur au nombre de coeurs/processeurs disponibles." -#: src/slic3r/GUI/Tab.cpp:2093 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:235 +msgid "Threshold:" +msgstr "Seuil :" + +#: src/slic3r/GUI/Tab.cpp:2263 msgid "Tilt" msgstr "Incliner" -#: src/slic3r/GUI/Tab.cpp:2094 +#: src/slic3r/GUI/Tab.cpp:2264 msgid "Tilt time" msgstr "Durée de l'inclinaison" +#: src/slic3r/GUI/GCodeViewer.cpp:2225 src/slic3r/GUI/GCodeViewer.cpp:2233 #: src/slic3r/GUI/RammingChart.cpp:76 msgid "Time" msgstr "Durée" -#: src/libslic3r/PrintConfig.cpp:687 +#: src/libslic3r/PrintConfig.cpp:723 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 "Temps nécessaire pour que le Firmware de l'imprimante (ou la Multi Material Unit 2.0) charge un filament au cours d'un changement d'outils (lorsqu'il exécute le T code). Ce temps est ajouté au temps total d'impression par l'estimateur de temps du G-code." -#: src/libslic3r/PrintConfig.cpp:702 +#: src/libslic3r/PrintConfig.cpp:738 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 "Temps nécessaire pour que le Firmware de l'imprimante (ou la Multi Material Unit 2.0) décharge un filament au cours d'un changement d'outils (lorsqu'il exécute le T code). Ce temps est ajouté au temps total d'impression par l'estimateur de temps du G-code." -#: src/libslic3r/PrintConfig.cpp:2407 +#: src/libslic3r/PrintConfig.cpp:2550 msgid "Time of the fast tilt" msgstr "Durée de l'inclinaison rapide" -#: src/libslic3r/PrintConfig.cpp:2416 +#: src/libslic3r/PrintConfig.cpp:2559 msgid "Time of the slow tilt" msgstr "Durée de l'inclinaison lente" -#: src/libslic3r/PrintConfig.cpp:641 +#: src/libslic3r/PrintConfig.cpp:677 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 "Temps d'attente nécessaire après que le filament ait été déchargé. Peut aider à obtenir des changements d'outils fiables avec des matériaux flexible qui ont besoin de plus de temps pour revenir à leurs dimensions originales." -#: src/slic3r/GUI/Tab.cpp:966 +#: src/slic3r/GUI/GCodeViewer.cpp:2197 +msgid "to" +msgstr "à" + +#: src/slic3r/GUI/Tab.cpp:1284 msgid "To do that please specify a new name for the preset." msgstr "Pour faire cela veuillez spécifier un nouveau nom pour le préréglage." -#: src/slic3r/GUI/Plater.cpp:4014 +#: src/slic3r/GUI/Plater.cpp:3934 msgid "To objects" msgstr "Vers les objets" -#: src/slic3r/GUI/Plater.cpp:4016 +#: src/slic3r/GUI/Plater.cpp:3936 msgid "To parts" msgstr "Vers les parties" -#: src/slic3r/GUI/Tab.cpp:1756 +#: src/slic3r/Utils/Http.cpp:82 +msgid "To specify the system certificate store manually, please set the %1% environment variable to the correct CA bundle and restart the application." +msgstr "Pour spécifier manuellement le stockage de certificats système, définissez la variable d'environnement %1% sur le bon groupe d'autorité de certification et redémarrez l'application." + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:360 msgid "To use a custom CA file, please import your CA file into Certificate Store / Keychain." msgstr "Pour utiliser un fichier CA personnalisé, veuillez importer votre fichier CA dans le Magasin de Certificats / Trousseau." -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:263 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:271 #, c-format msgid "Toggle %c axis mirroring" msgstr "Activer la symétrie sur l'axe %c" -#: src/libslic3r/Zipper.cpp:34 +#: src/libslic3r/miniz_extension.cpp:93 msgid "too many files" msgstr "trop de fichiers" -#: src/libslic3r/SLAPrintSteps.cpp:190 -msgid "Too much overlapping holes." +#: src/libslic3r/SLAPrintSteps.cpp:192 +msgid "Too many overlapping holes." msgstr "Trop de trous qui se chevauchent." -#: src/slic3r/GUI/GUI_Preview.cpp:227 src/slic3r/GUI/GUI_Preview.cpp:335 -#: src/slic3r/GUI/GUI_Preview.cpp:519 src/slic3r/GUI/GUI_Preview.cpp:574 -#: src/slic3r/GUI/GUI_Preview.cpp:835 src/libslic3r/GCode/PreviewData.cpp:357 +#: src/slic3r/GUI/GCodeViewer.cpp:2241 src/slic3r/GUI/GUI_Preview.cpp:281 +#: src/slic3r/GUI/GUI_Preview.cpp:453 src/slic3r/GUI/GUI_Preview.cpp:693 +#: src/slic3r/GUI/GUI_Preview.cpp:786 src/slic3r/GUI/GUI_Preview.cpp:1270 +#: src/libslic3r/GCode/PreviewData.cpp:362 msgid "Tool" msgstr "Outil" @@ -8359,51 +9559,64 @@ msgstr "Outil" msgid "Tool #" msgstr "Outil #" -#: src/slic3r/GUI/Tab.cpp:2000 src/libslic3r/PrintConfig.cpp:2093 +#: src/slic3r/GUI/Tab.cpp:2189 src/libslic3r/PrintConfig.cpp:2236 msgid "Tool change G-code" msgstr "G-code de changement d'outil" -#: src/slic3r/GUI/Tab.cpp:1491 +#: src/slic3r/GUI/GCodeViewer.cpp:2530 src/slic3r/GUI/GUI_Preview.cpp:1474 +msgid "Tool changes" +msgstr "Changements d'outils" + +#: src/slic3r/GUI/GUI_Preview.cpp:1479 +msgid "Tool marker" +msgstr "Marqueur d'outil" + +#: src/slic3r/GUI/GCodeViewer.cpp:223 +msgid "Tool position" +msgstr "Position de l'outil" + +#: src/slic3r/GUI/Tab.cpp:1837 msgid "Toolchange parameters with single extruder MM printers" msgstr "Paramètres de changement d'outil pour les imprimantes multi-matériaux mono-extrudeur" #. 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:662 src/libslic3r/PrintConfig.cpp:2132 -#: src/libslic3r/PrintConfig.cpp:2141 +#: src/slic3r/GUI/MainFrame.cpp:959 src/slic3r/GUI/MainFrame.cpp:1279 +#: src/libslic3r/PrintConfig.cpp:2275 src/libslic3r/PrintConfig.cpp:2284 msgid "Top" msgstr "Haut" -#: src/slic3r/GUI/PresetHints.cpp:304 +#: src/slic3r/GUI/PresetHints.cpp:302 msgid "Top / bottom shell thickness hint: Not available due to invalid layer height." msgstr "Indice d'épaisseur de coque supérieure / inférieure : non disponible en raison de la hauteur de couche non valide." -#: src/libslic3r/PrintConfig.cpp:415 +#: src/libslic3r/PrintConfig.cpp:449 msgid "Top fill pattern" msgstr "Motif de remplissage du dessus" -#: src/slic3r/GUI/PresetHints.cpp:323 +#: src/slic3r/GUI/PresetHints.cpp:321 msgid "Top is open." msgstr "Le haut est ouvert." -#: src/slic3r/GUI/PresetHints.cpp:317 +#: src/slic3r/GUI/PresetHints.cpp:315 msgid "Top shell is %1% mm thick for layer height %2% mm." msgstr "La coque supérieure a une épaisseur de %1% mm pour une hauteur de couche %2% mm." -#: src/slic3r/GUI/PresetHints.cpp:192 +#: src/slic3r/GUI/PresetHints.cpp:191 msgid "top solid infill" msgstr "remplissage solide supérieur" -#: src/slic3r/GUI/GUI_Preview.cpp:242 src/libslic3r/ExtrusionEntity.cpp:315 -#: src/libslic3r/PrintConfig.cpp:2105 src/libslic3r/PrintConfig.cpp:2117 +#: src/slic3r/GUI/GUI_Preview.cpp:306 src/libslic3r/ExtrusionEntity.cpp:319 +#: src/libslic3r/ExtrusionEntity.cpp:346 src/libslic3r/PrintConfig.cpp:2248 +#: src/libslic3r/PrintConfig.cpp:2260 msgid "Top solid infill" msgstr "Remplissage solide supérieur" -#: src/libslic3r/PrintConfig.cpp:2135 +#: src/libslic3r/PrintConfig.cpp:2278 msgid "Top solid layers" msgstr "Couches supérieures solides" -#: src/slic3r/GUI/MainFrame.cpp:662 +#: src/slic3r/GUI/MainFrame.cpp:959 src/slic3r/GUI/MainFrame.cpp:1279 msgid "Top View" msgstr "Vue du Dessus" @@ -8419,90 +9632,128 @@ msgstr "Volume total expulsé" msgid "Total ramming time" msgstr "Durée totale de l'expulsion" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:516 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:640 +msgid "Transfer" +msgstr "Transférer" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:745 +msgid "Transfer the selected options to the newly selected preset \"%1%\"." +msgstr "Transférer les options sélectionnées vers le nouveau préréglage \"%1%\"." + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:740 +msgid "Transfer the selected settings to the newly selected preset." +msgstr "Transférez les réglages sélectionnés vers le nouveau préréglage sélectionné." + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:561 msgid "Translate" msgstr "Traduire" -#: src/slic3r/GUI/Mouse3DController.cpp:300 -#: src/slic3r/GUI/Mouse3DController.cpp:317 +#: src/slic3r/GUI/Mouse3DController.cpp:282 +#: src/slic3r/GUI/Mouse3DController.cpp:303 msgid "Translation" msgstr "Translation" -#: src/slic3r/GUI/GUI_Preview.cpp:253 src/libslic3r/PrintConfig.cpp:2152 +#: src/slic3r/GUI/GCodeViewer.cpp:2489 src/slic3r/GUI/GUI_Preview.cpp:335 +#: src/slic3r/GUI/GUI_Preview.cpp:1471 src/libslic3r/PrintConfig.cpp:2295 msgid "Travel" msgstr "Déplacement" -#: src/libslic3r/PrintConfig.cpp:845 +#: src/libslic3r/PrintConfig.cpp:883 msgid "Triangles" msgstr "Triangles" -#: src/libslic3r/PrintConfig.cpp:3448 +#: src/libslic3r/PrintConfig.cpp:3647 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 "Essayer de réparer tout maillage non-multiple (cette option est ajoutée implicitement dès que nous devons découper le modèle pour accomplir l'action demandée)." -#: src/libslic3r/PrintConfig.cpp:1467 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:165 +msgid "Type here the name of your printer device" +msgstr "Tapez ici le nom de votre imprimante" + +#: src/libslic3r/PrintConfig.cpp:1575 msgid "Type of the printer." msgstr "Type d'imprimante." -#: src/slic3r/GUI/ConfigWizard.cpp:2013 src/slic3r/GUI/GUI_ObjectList.cpp:3553 +#: src/slic3r/GUI/ConfigWizard.cpp:2524 src/slic3r/GUI/ConfigWizard.cpp:2526 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4016 msgid "Type:" msgstr "Type :" -#: src/slic3r/GUI/Plater.cpp:3428 +#: src/slic3r/GUI/OpenGLManager.cpp:275 +#, c-format +msgid "" +"Unable to load the following shaders:\n" +"%s" +msgstr "" +"Impossible de charger les shaders suivants :\n" +"%s" + +#: src/slic3r/GUI/Plater.cpp:3233 msgid "Unable to reload:" msgstr "Impossible de recharger :" -#: src/libslic3r/Zipper.cpp:32 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:137 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:146 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:845 +msgid "Undef" +msgstr "Undef" + +#: src/libslic3r/miniz_extension.cpp:91 msgid "undefined error" msgstr "erreur non définie" -#: src/slic3r/GUI/GLCanvas3D.cpp:4624 src/slic3r/GUI/KBShortcutsDialog.cpp:130 -#: src/slic3r/GUI/MainFrame.cpp:581 +#: src/slic3r/GUI/GLCanvas3D.cpp:5028 src/slic3r/GUI/KBShortcutsDialog.cpp:125 +#: src/slic3r/GUI/MainFrame.cpp:1187 msgid "Undo" msgstr "Annuler" -#: src/slic3r/GUI/GLCanvas3D.cpp:4065 +#: src/slic3r/GUI/GLCanvas3D.cpp:4382 #, c-format msgid "Undo %1$d Action" msgid_plural "Undo %1$d Actions" msgstr[0] "Annuler %1$d Action" msgstr[1] "Annuler %1$d Actions" -#: src/slic3r/GUI/GLCanvas3D.cpp:4047 +#: src/slic3r/GUI/GLCanvas3D.cpp:4361 msgid "Undo History" msgstr "Annuler Historique" -#: src/libslic3r/Zipper.cpp:56 +#: src/libslic3r/miniz_extension.cpp:115 msgid "unexpected decompressed size" msgstr "volume de décompression inattendu" #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:27 +#: src/slic3r/GUI/GUI_Preview.cpp:299 src/libslic3r/ExtrusionEntity.cpp:310 msgid "Unknown" msgstr "Inconnu" -#: src/slic3r/Utils/Duet.cpp:82 src/slic3r/Utils/Duet.cpp:137 -#: src/slic3r/Utils/FlashAir.cpp:119 src/slic3r/Utils/FlashAir.cpp:140 -#: src/slic3r/Utils/FlashAir.cpp:156 +#: src/slic3r/Utils/Duet.cpp:84 src/slic3r/Utils/Duet.cpp:139 +#: src/slic3r/Utils/FlashAir.cpp:122 src/slic3r/Utils/FlashAir.cpp:143 +#: src/slic3r/Utils/FlashAir.cpp:159 msgid "Unknown error occured" msgstr "Une erreur inconnue s'est produite" +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:178 +msgid "Unknown error occured during exporting G-code." +msgstr "Une erreur inconnue s'est produite lors de l'exportation du G-code." + #: src/slic3r/GUI/WipeTowerDialog.cpp:263 msgid "unloaded" msgstr "déchargé" -#: src/libslic3r/PrintConfig.cpp:623 +#: src/libslic3r/PrintConfig.cpp:659 msgid "Unloading speed" msgstr "Vitesse de déchargement" -#: src/libslic3r/PrintConfig.cpp:632 +#: src/libslic3r/PrintConfig.cpp:668 msgid "Unloading speed at the start" msgstr "Vitesse de déchargement au démarrage" -#: src/slic3r/GUI/Tab.cpp:3256 +#: src/slic3r/GUI/Tab.cpp:3693 msgid "UNLOCKED LOCK" msgstr "CADENAS OUVERT" -#: src/slic3r/GUI/Tab.cpp:3282 +#: src/slic3r/GUI/Tab.cpp:3719 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" "Click to reset all settings for current option group to the system (or default) values." @@ -8510,7 +9761,7 @@ msgstr "" "L'icône CADENAS OUVERT indique que certains paramètres ont été modifiés et ne sont pas égaux aux valeurs du système (ou par défaut) pour le groupe d'options actuel.\n" "Cliquez pour régler tous les paramètres pour le groupe d'options actuel sur les valeurs du système (ou par défaut)." -#: src/slic3r/GUI/Tab.cpp:3297 +#: src/slic3r/GUI/Tab.cpp:3734 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." @@ -8518,56 +9769,43 @@ msgstr "" "L'icône CADENAS OUVERT indique que la valeur a été changée et n'est pas égale à la valeur du système (ou par défaut).\n" "Cliquez pour réinitialiser la valeur actuelle sur les valeurs du système (ou par défaut)." -#: src/slic3r/GUI/Plater.cpp:5203 -#, c-format -msgid "Unmounting successful. The device %s(%s) can now be safely removed from the computer." -msgstr "Démontage réussi. Le matériel %s(%s) peut maintenant être déconnecté de l'ordinateur en toute sécurité." - -#: src/slic3r/GUI/GUI_Preview.cpp:255 -msgid "Unretractions" -msgstr "Dérétractation" - -#: src/slic3r/GUI/Tab.cpp:2947 -msgid "Unsaved Changes" -msgstr "Modifications Non Sauvegardés" - -#: src/slic3r/GUI/GUI_App.cpp:935 -msgid "Unsaved Presets" -msgstr "Préréglages Non Sauvegardés" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:179 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:173 msgid "Unselect gizmo or clear selection" msgstr "Désélectionner le Gizmo ou supprimer la sélection" -#: src/libslic3r/Zipper.cpp:60 +#: src/libslic3r/miniz_extension.cpp:119 msgid "unsupported central directory size" msgstr "volume du répertoire central non supporté" -#: src/libslic3r/Zipper.cpp:40 +#: src/libslic3r/miniz_extension.cpp:99 msgid "unsupported encryption" msgstr "cryptage non supporté" -#: src/libslic3r/Zipper.cpp:42 +#: src/libslic3r/miniz_extension.cpp:101 msgid "unsupported feature" msgstr "fonction non supportée" -#: src/libslic3r/Zipper.cpp:38 +#: src/libslic3r/miniz_extension.cpp:97 msgid "unsupported method" msgstr "méthode non supportée" -#: src/libslic3r/Zipper.cpp:50 +#: src/libslic3r/miniz_extension.cpp:109 msgid "unsupported multidisk archive" msgstr "archive multidisque non supportée" -#: src/slic3r/GUI/GLCanvas3DManager.cpp:292 +#: src/slic3r/GUI/OpenGLManager.cpp:267 msgid "Unsupported OpenGL version" msgstr "Version d'OpenGL non supportée" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3420 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3883 msgid "Unsupported selection" msgstr "Sélection non supportée" -#: src/slic3r/GUI/GLCanvas3D.cpp:955 +#: src/slic3r/GUI/GCodeViewer.cpp:2183 +msgid "up to" +msgstr "jusqu'à" + +#: src/slic3r/GUI/GLCanvas3D.cpp:961 #, c-format msgid "up to %.2f mm" msgstr "jusqu'à %.2f mm" @@ -8576,15 +9814,15 @@ msgstr "jusqu'à %.2f mm" msgid "Update available" msgstr "Mise à jour disponible" -#: src/slic3r/GUI/ConfigWizard.cpp:779 src/slic3r/GUI/Preferences.cpp:80 +#: src/slic3r/GUI/ConfigWizard.cpp:1138 src/slic3r/GUI/Preferences.cpp:97 msgid "Update built-in Presets automatically" msgstr "Mettre à jour automatiquement les Préréglages intégrés" -#: src/slic3r/GUI/ConfigWizard.cpp:761 +#: src/slic3r/GUI/ConfigWizard.cpp:1120 msgid "Updates" msgstr "Mises à jour" -#: src/slic3r/GUI/ConfigWizard.cpp:786 +#: src/slic3r/GUI/ConfigWizard.cpp:1145 msgid "Updates are never applied without user's consent and never overwrite user's customized settings." msgstr "Les mises à jour ne sont jamais appliquées sans l'accord de l'utilisateur et n'annulent jamais les réglages personnalisés de l'utilisateur." @@ -8592,7 +9830,7 @@ msgstr "Les mises à jour ne sont jamais appliquées sans l'accord de l'utilisat msgid "Upgrade" msgstr "Mise à jour" -#: src/slic3r/GUI/GUI_App.cpp:824 +#: src/slic3r/GUI/GUI_App.cpp:1522 msgid "Upload a firmware image into an Arduino based printer" msgstr "Charger un firmware dans une imprimante basée sur un Arduino" @@ -8608,101 +9846,118 @@ msgstr "Envoyer vers l'Hôte d'Imprimante avec le nom de fichier suivant :" msgid "Uploading" msgstr "Téléchargement" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:204 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:206 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 msgid "Upper Layer" msgstr "Couche du Haut" -#: src/slic3r/GUI/Tab.cpp:1900 -msgid "USB/Serial connection" -msgstr "Connexion USB/Série" - -#: src/libslic3r/PrintConfig.cpp:1662 -msgid "USB/serial port for printer connection." -msgstr "Port USB/Série pour la connexion de l'imprimante." - -#: src/slic3r/GUI/DoubleSlider.cpp:1147 +#: src/slic3r/GUI/DoubleSlider.cpp:1276 msgid "Use another extruder" msgstr "Utiliser un autre extrudeur" -#: src/slic3r/GUI/Preferences.cpp:143 +#: src/slic3r/GUI/Preferences.cpp:220 msgid "Use custom size for toolbar icons" msgstr "Utiliser une taille personnalisée pour les icônes de la barre d'outils" -#: src/libslic3r/PrintConfig.cpp:2161 +#: src/slic3r/GUI/Preferences.cpp:268 +msgid "Use environment map" +msgstr "Utiliser la carte d'environnement" + +#: src/libslic3r/PrintConfig.cpp:2304 msgid "Use firmware retraction" msgstr "Utiliser la rétraction du firmware" +#: src/slic3r/GUI/ImGuiWrapper.cpp:800 src/slic3r/GUI/Search.cpp:464 +msgid "Use for search" +msgstr "Utiliser pour la recherche" + +#: src/libslic3r/PrintConfig.cpp:1218 +msgid "Use for time estimate" +msgstr "Utiliser pour l'estimation du temps" + #: src/slic3r/GUI/PrintHostDialogs.cpp:42 msgid "Use forward slashes ( / ) as a directory separator if needed." msgstr "Utilisez des barres obliques (/) comme séparateur de répertoire si nécessaire." -#: src/slic3r/GUI/Preferences.cpp:126 +#: src/slic3r/GUI/Preferences.cpp:191 msgid "Use free camera" msgstr "Utiliser la caméra libre" -#: src/libslic3r/PrintConfig.cpp:2780 +#: src/slic3r/GUI/ConfigWizard.cpp:1188 +msgid "Use inches" +msgstr "Utiliser les pouces" + +#: src/libslic3r/PrintConfig.cpp:2944 msgid "Use pad" msgstr "Utiliser un socle" -#: src/slic3r/GUI/Preferences.cpp:119 +#: src/slic3r/GUI/Preferences.cpp:184 msgid "Use perspective camera" msgstr "Utiliser l'appareil photo en perspective" -#: src/libslic3r/PrintConfig.cpp:2168 +#: src/libslic3r/PrintConfig.cpp:2311 msgid "Use relative E distances" msgstr "Utiliser des valeurs E relatives" -#: src/slic3r/GUI/Preferences.cpp:104 +#: src/slic3r/GUI/Preferences.cpp:135 msgid "Use Retina resolution for the 3D scene" msgstr "Utiliser la résolution Retina pour la scène 3D" -#: src/libslic3r/PrintConfig.cpp:540 +#: src/libslic3r/PrintConfig.cpp:576 msgid "Use this option to set the axis letter associated to your printer's extruder (usually E but some printers use A)." msgstr "Utiliser cette option pour indiquer la lettre utilisée par l'extrudeur de votre imprimante (habituellement E, mais certaines imprimantes utilisent A)." -#: src/libslic3r/PrintConfig.cpp:1893 +#: src/libslic3r/PrintConfig.cpp:2035 msgid "Use this setting to rotate the support material pattern on the horizontal plane." msgstr "Utiliser ce réglage pour orienter le motif du support sur le plan horizontal." -#: src/libslic3r/PrintConfig.cpp:2175 +#: src/libslic3r/PrintConfig.cpp:2318 msgid "Use volumetric E" msgstr "E Volumétrique" -#: src/slic3r/GUI/DoubleSlider.cpp:1171 +#: src/slic3r/GUI/DoubleSlider.cpp:1298 msgid "used" msgstr "utilisé" -#: src/slic3r/GUI/Plater.cpp:237 +#: src/slic3r/GUI/Plater.cpp:243 msgid "Used Filament (g)" msgstr "Filament Utilisé (g)" -#: src/slic3r/GUI/Plater.cpp:235 src/slic3r/GUI/Plater.cpp:1229 +#: src/slic3r/GUI/Plater.cpp:1141 +msgid "Used Filament (in)" +msgstr "Filament utilisé (in)" + +#: src/slic3r/GUI/Plater.cpp:1153 +msgid "Used Filament (in³)" +msgstr "Filament utilisé (in³)" + +#: src/slic3r/GUI/Plater.cpp:241 src/slic3r/GUI/Plater.cpp:1141 msgid "Used Filament (m)" msgstr "Filament Utilisé (m)" -#: src/slic3r/GUI/Plater.cpp:236 +#: src/slic3r/GUI/Plater.cpp:242 src/slic3r/GUI/Plater.cpp:1153 msgid "Used Filament (mm³)" msgstr "Filament Utilisé (mm³)" -#: src/slic3r/GUI/Plater.cpp:1191 +#: src/slic3r/GUI/Plater.cpp:1100 msgid "Used Material (ml)" msgstr "Matériau Utilisé (ml)" -#: src/slic3r/GUI/Plater.cpp:238 +#: src/slic3r/GUI/Plater.cpp:244 msgid "Used Material (unit)" msgstr "Matériau Utilisé (unité)" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:24 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:24 src/libslic3r/PrintConfig.cpp:132 msgid "User" msgstr "Utilisateur" -#: src/slic3r/GUI/Preset.cpp:1168 src/slic3r/GUI/Preset.cpp:1288 -#: src/slic3r/GUI/PresetBundle.cpp:1677 +#: src/slic3r/GUI/PresetComboBoxes.cpp:230 +#: src/slic3r/GUI/PresetComboBoxes.cpp:778 +#: src/slic3r/GUI/PresetComboBoxes.cpp:934 msgid "User presets" msgstr "Préréglages utilisateur" -#: src/libslic3r/Zipper.cpp:90 +#: src/libslic3r/miniz_extension.cpp:149 msgid "validation failed" msgstr "échec de la validation" @@ -8714,31 +9969,31 @@ msgstr "La valeur est identique à la valeur du système" msgid "Value was changed and is not equal to the system value or the last saved preset" msgstr "La valeur a été changée et n'est pas égale à la valeur du système ou au dernier préréglage sauvegardé" -#: src/slic3r/GUI/Tab.cpp:2202 +#: src/slic3r/GUI/Tab.cpp:2371 msgid "Values in this column are for Normal mode" msgstr "Les valeurs de cette colonne sont pour le mode Normal" -#: src/slic3r/GUI/Tab.cpp:2208 +#: src/slic3r/GUI/Tab.cpp:2377 msgid "Values in this column are for Stealth mode" msgstr "Les valeurs de cette colonne sont pour le mode Silencieux" -#: src/slic3r/GUI/GLCanvas3D.cpp:234 src/slic3r/GUI/GLCanvas3D.cpp:4573 +#: src/slic3r/GUI/GLCanvas3D.cpp:231 src/slic3r/GUI/GLCanvas3D.cpp:4978 msgid "Variable layer height" msgstr "Hauteur de couche variable" -#: src/slic3r/GUI/GLCanvas3D.cpp:1709 +#: src/slic3r/GUI/GLCanvas3D.cpp:1786 msgid "Variable layer height - Adaptive" msgstr "Hauteur de couche variable - Adaptatif" -#: src/slic3r/GUI/GLCanvas3D.cpp:599 +#: src/slic3r/GUI/GLCanvas3D.cpp:565 msgid "Variable layer height - Manual edit" msgstr "Hauteur de couche variable - Modification manuelle" -#: src/slic3r/GUI/GLCanvas3D.cpp:1701 +#: src/slic3r/GUI/GLCanvas3D.cpp:1778 msgid "Variable layer height - Reset" msgstr "Hauteur de couche variable - Réinitialisation" -#: src/slic3r/GUI/GLCanvas3D.cpp:1717 +#: src/slic3r/GUI/GLCanvas3D.cpp:1794 msgid "Variable layer height - Smooth all" msgstr "Hauteur de couche variable - Tout lisser" @@ -8746,19 +10001,20 @@ msgstr "Hauteur de couche variable - Tout lisser" msgid "variants" msgstr "variantes" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:57 src/slic3r/GUI/Tab.cpp:971 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:57 src/slic3r/GUI/Tab.cpp:1289 msgid "vendor" msgstr "fabriquant" -#: src/slic3r/GUI/ConfigWizard.cpp:565 +#: src/slic3r/GUI/ConfigWizard.cpp:589 msgid "Vendor:" msgstr "Fournisseur :" -#: src/libslic3r/PrintConfig.cpp:928 +#: src/libslic3r/PrintConfig.cpp:972 msgid "Verbose G-code" msgstr "G-code commenté" -#: src/slic3r/GUI/AboutDialog.cpp:231 src/slic3r/GUI/MainFrame.cpp:64 +#: src/slic3r/GUI/AboutDialog.cpp:256 src/slic3r/GUI/GUI_App.cpp:239 +#: src/slic3r/GUI/MainFrame.cpp:164 msgid "Version" msgstr "Version" @@ -8766,24 +10022,36 @@ msgstr "Version" msgid "version" msgstr "version" -#: src/slic3r/GUI/Tab.cpp:1053 +#: src/slic3r/GUI/Tab.cpp:1375 msgid "Vertical shells" msgstr "Parois verticales" -#: src/slic3r/GUI/GUI_Preview.cpp:218 +#: src/slic3r/GUI/GUI_Preview.cpp:265 src/slic3r/GUI/GUI_Preview.cpp:271 msgid "View" msgstr "Vue" -#: src/slic3r/GUI/ConfigWizard.cpp:813 +#: src/slic3r/GUI/ConfigWizard.cpp:1172 msgid "View mode" msgstr "Mode de vue" -#: src/libslic3r/SLAPrintSteps.cpp:413 src/libslic3r/SLAPrintSteps.cpp:422 -#: src/libslic3r/SLAPrintSteps.cpp:461 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:666 +msgid "" +"Visit \"Preferences\" and check \"%1%\"\n" +"to be asked about unsaved changes again." +msgstr "" +"Accédez aux \"Préférences\" et cochez \"%1%\"\n" +"pour être à nouveau interrogé sur les modifications non enregistrées." + +#: src/libslic3r/PrintConfig.cpp:3553 +msgid "Visualize an already sliced and saved G-code" +msgstr "Visualisez un G-code déjà découpé et enregistré" + +#: src/libslic3r/SLAPrintSteps.cpp:411 src/libslic3r/SLAPrintSteps.cpp:420 +#: src/libslic3r/SLAPrintSteps.cpp:459 msgid "Visualizing supports" msgstr "Visualisation des supports" -#: src/slic3r/GUI/Plater.cpp:161 +#: src/slic3r/GUI/Plater.cpp:167 msgid "Volume" msgstr "Volume" @@ -8791,23 +10059,23 @@ msgstr "Volume" msgid "Volume to purge (mm³) when the filament is being" msgstr "Volume à purger (mm³) lorsque le filament est" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1106 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1230 msgid "Volumes in Object reordered" msgstr "Volumes dans l'Objet réorganisés" -#: src/slic3r/GUI/PresetHints.cpp:219 +#: src/slic3r/GUI/PresetHints.cpp:218 msgid "Volumetric" msgstr "Volumétrique" -#: src/slic3r/GUI/Tab.cpp:1591 +#: src/slic3r/GUI/Tab.cpp:1930 msgid "Volumetric flow hints not available" msgstr "Indications du débit volumétrique non disponible" -#: src/slic3r/GUI/GUI_Preview.cpp:226 +#: src/slic3r/GUI/GUI_Preview.cpp:280 msgid "Volumetric flow rate" msgstr "Débit volumétrique" -#: src/libslic3r/GCode/PreviewData.cpp:355 +#: src/slic3r/GUI/GCodeViewer.cpp:2240 src/libslic3r/GCode/PreviewData.cpp:360 msgid "Volumetric flow rate (mm³/s)" msgstr "Débit volumétrique (mm³/s)" @@ -8815,151 +10083,166 @@ msgstr "Débit volumétrique (mm³/s)" msgid "Volumetric speed" msgstr "Vitesse volumétrique" -#: src/libslic3r/PrintConfig.cpp:2915 +#: src/libslic3r/PrintConfig.cpp:3079 msgid "Wall thickness" msgstr "Épaisseur de la paroi" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1270 src/slic3r/GUI/GUI.cpp:251 -#: src/slic3r/GUI/Tab.cpp:3084 src/slic3r/GUI/WipeTowerDialog.cpp:45 -#: src/slic3r/GUI/WipeTowerDialog.cpp:366 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1129 src/slic3r/GUI/GUI.cpp:256 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:478 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:502 +#: src/slic3r/GUI/WipeTowerDialog.cpp:45 src/slic3r/GUI/WipeTowerDialog.cpp:366 msgid "Warning" msgstr "Alerte" -#: src/slic3r/GUI/ConfigWizard.cpp:431 +#: src/slic3r/GUI/NotificationManager.cpp:672 +#: src/slic3r/GUI/NotificationManager.cpp:687 +#: src/slic3r/GUI/NotificationManager.cpp:702 +msgid "WARNING:" +msgstr "ATTENTION :" + +#: src/slic3r/GUI/ConfigWizard.cpp:449 msgid "Welcome" msgstr "Bienvenue" -#: src/slic3r/GUI/ConfigWizard.cpp:427 +#: src/slic3r/GUI/ConfigWizard.cpp:445 #, c-format msgid "Welcome to the %s Configuration Assistant" msgstr "Bienvenue dans l'Assistant de Configuration de %s" -#: src/slic3r/GUI/ConfigWizard.cpp:429 +#: src/slic3r/GUI/ConfigWizard.cpp:447 #, c-format msgid "Welcome to the %s Configuration Wizard" msgstr "Bienvenue dans l'Assistant de Configuration de %s" -#: src/slic3r/GUI/Preferences.cpp:97 +#: src/slic3r/GUI/SavePresetDialog.cpp:310 +msgid "What would you like to do with \"%1%\" preset after saving?" +msgstr "Que souhaitez-vous faire avec le préréglage de \"%1%\" après l'enregistrement ?" + +#: src/slic3r/GUI/Preferences.cpp:114 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 "Lorsqu'ils sont sélectionnés, les préréglages de l'imprimante et du filament sont visibles dans l'éditeur de préréglage même s'ils sont désignés comme incompatibles avec l'imprimante en cours d'utilisation" -#: src/slic3r/GUI/PresetHints.cpp:224 +#: src/slic3r/GUI/Preferences.cpp:156 +msgid "When closing the application, always ask for unsaved changes" +msgstr "Lors de la fermeture de l'application, toujours demander pour les modifications non enregistrées" + +#: src/slic3r/GUI/PresetHints.cpp:223 msgid "when printing" msgstr "pendant l'impression des" -#: src/libslic3r/PrintConfig.cpp:253 +#: 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 "Lorsque vous imprimez des objets multi-matériaux, ce réglage fera en sorte que Slic3r rattache ensemble les parties de l'objet qui se superposent (la 2e partie sera rattachée à la 1ere, la 3e partie sera rattachée à la 1ere et la 2e, etc...)." -#: src/libslic3r/PrintConfig.cpp:305 +#: 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." msgstr "Lorsque vous imprimez plusieurs objets ou copies, ce réglage permet de terminer un objet avant de passer au suivant (en repartant de sa première couche). Cette fonction est utile pour éviter les risques d'impressions gâchées. Slic3r doit vous avertir et éviter les collisions entre les objets et l'extrudeur, mais soyez vigilant." -#: src/libslic3r/PrintConfig.cpp:891 +#: src/libslic3r/PrintConfig.cpp:933 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 plates. This can be expressed as an absolute value or as a percentage (for example: 150%) over the default layer height." msgstr "Lors d'une impression avec de très faibles épaisseurs de couche, vous pouvez choisir d'imprimer une première couche plus épaisse pour améliorer l'adhérence et la tolérance aux plateaux imparfaits. Ce réglage peut être exprimé comme une valeur absolue ou un pourcentage (par exemple 150%) par rapport à l'épaisseur de couche par défaut." -#: src/libslic3r/PrintConfig.cpp:1553 +#: src/libslic3r/PrintConfig.cpp:1661 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 "Lorsque la rétractation est déclenchée avant un changement d'outil, le filament est retiré de la longueur indiquée (la longueur est mesurée sur le filament brut, avant qu'il entre dans l'extrudeur)." -#: src/libslic3r/PrintConfig.cpp:1545 +#: src/libslic3r/PrintConfig.cpp:1653 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 "Lorsque la rétractation est déclenchée, le filament est tiré en arrière de la longueur indiquée (la longueur est mesurée sur le filament brut, avant qu'il entre dans l'extrudeur)." -#: src/libslic3r/PrintConfig.cpp:1391 +#: src/libslic3r/PrintConfig.cpp:1499 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 positive, it is loaded further, if negative, the loading move is shorter than unloading." msgstr "Lorsqu'elle est réglée sur zéro, la distance de laquelle le filament est déplacé depuis la position d'attente pendant le chargement est exactement la même que lors de son déchargement. Lorsqu'elle est positive, il est chargé davantage, si elle est négative, le déplacement de chargement est plus court que le déchargement." -#: src/libslic3r/PrintConfig.cpp:1238 +#: src/libslic3r/PrintConfig.cpp:1346 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 "Lorsque vous réglez les autres vitesses à 0, Slic3r calculera automatiquement la vitesse optimale de façon à garder une pression constante dans l'extrudeur. Cette fonction expérimentale est utilisée pour régler la plus haute vitesse que vous souhaitez autoriser." -#: src/libslic3r/PrintConfig.cpp:1597 +#: src/libslic3r/PrintConfig.cpp:1705 msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament." msgstr "Lorsque la rétractation est compensée après un changement d'outil, l'extrudeur exprimera cette quantité de filament en plus." -#: src/libslic3r/PrintConfig.cpp:1589 +#: src/libslic3r/PrintConfig.cpp:1697 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 "Lorsque la rétractation est compensée après un déplacement, l'extruder exprimera cette quantité de filament en plus. Ce réglage est rarement nécessaire." -#: src/slic3r/GUI/Tab.cpp:3263 +#: src/slic3r/GUI/Tab.cpp:3700 msgid "WHITE BULLET" msgstr "PUCE BLANCHE" -#: src/slic3r/GUI/Tab.cpp:3285 +#: src/slic3r/GUI/Tab.cpp:3722 msgid "WHITE BULLET icon indicates a non system (or non default) preset." msgstr "L'icône en forme de PUCE BLANCHE indique un préréglage non-système (ou non par défaut)." -#: src/slic3r/GUI/Tab.cpp:3288 +#: src/slic3r/GUI/Tab.cpp:3725 msgid "WHITE BULLET icon indicates that the settings are the same as in the last saved preset for the current option group." msgstr "L'icône en forme de PUCE BLANCHE indique que les réglages sont identiques au dernier préréglage sauvegardé pour le groupe d'options actuel." -#: src/slic3r/GUI/Tab.cpp:3303 +#: src/slic3r/GUI/Tab.cpp:3740 msgid "WHITE BULLET icon indicates that the value is the same as in the last saved preset." msgstr "L'icône PUCE BLANCHE indique que la valeur est la même que pour le dernier préréglage sauvegardé." -#: src/slic3r/GUI/GUI_Preview.cpp:223 src/libslic3r/PrintConfig.cpp:2238 +#: src/slic3r/GUI/GUI_Preview.cpp:277 src/libslic3r/PrintConfig.cpp:2381 msgid "Width" msgstr "Largeur" -#: src/libslic3r/GCode/PreviewData.cpp:349 +#: src/slic3r/GUI/GCodeViewer.cpp:2237 src/libslic3r/GCode/PreviewData.cpp:354 msgid "Width (mm)" msgstr "Largeur (mm)" -#: src/libslic3r/PrintConfig.cpp:2640 +#: src/libslic3r/PrintConfig.cpp:2783 msgid "Width from the back sphere center to the front sphere center" msgstr "Largeur depuis le centre arrière de la sphère jusqu'au centre avant de la sphère" -#: src/libslic3r/PrintConfig.cpp:2239 +#: src/libslic3r/PrintConfig.cpp:2382 msgid "Width of a wipe tower" msgstr "Largeur d'une tour de nettoyage" -#: src/libslic3r/PrintConfig.cpp:2891 +#: src/libslic3r/PrintConfig.cpp:3055 msgid "Width of the connector sticks which connect the object and the generated pad." msgstr "Largeur des bâtonnets de connexion qui connectent l'objet et le socle généré." -#: src/libslic3r/PrintConfig.cpp:2354 +#: src/libslic3r/PrintConfig.cpp:2497 msgid "Width of the display" msgstr "Largeur de l'affichage" -#: src/slic3r/GUI/PresetHints.cpp:48 +#: src/slic3r/GUI/PresetHints.cpp:47 msgid "will always run at %1%%%" msgstr "fonctionnera toujours à %1%%%" -#: src/slic3r/GUI/PresetHints.cpp:55 +#: src/slic3r/GUI/PresetHints.cpp:54 msgid "will be turned off." msgstr "sera désactivé." -#: src/libslic3r/PrintConfig.cpp:2441 +#: src/libslic3r/PrintConfig.cpp:2584 msgid "Will inflate or deflate the sliced 2D polygons according to the sign of the correction." msgstr "Va augmenter ou diminuer les polygones 2D découpés en fonction du signe de la correction." -#: src/libslic3r/PrintConfig.cpp:2261 +#: src/libslic3r/PrintConfig.cpp:2404 msgid "Wipe into this object" msgstr "Nettoyer dans cet objet" -#: src/libslic3r/PrintConfig.cpp:2253 +#: src/libslic3r/PrintConfig.cpp:2396 msgid "Wipe into this object's infill" msgstr "Nettoyer dans le remplissage de cet objet" -#: src/slic3r/GUI/GUI_ObjectList.cpp:39 src/slic3r/GUI/GUI_ObjectList.cpp:101 -#: src/slic3r/GUI/GUI_ObjectList.cpp:619 src/libslic3r/PrintConfig.cpp:2252 -#: src/libslic3r/PrintConfig.cpp:2260 +#: 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:2395 +#: src/libslic3r/PrintConfig.cpp:2403 msgid "Wipe options" msgstr "Options de nettoyage" -#: src/slic3r/GUI/GUI_Preview.cpp:248 src/slic3r/GUI/Tab.cpp:1191 -#: src/libslic3r/ExtrusionEntity.cpp:321 +#: src/slic3r/GUI/GUI_Preview.cpp:313 src/slic3r/GUI/Tab.cpp:1521 +#: src/libslic3r/ExtrusionEntity.cpp:326 src/libslic3r/ExtrusionEntity.cpp:360 msgid "Wipe tower" msgstr "Tour de nettoyage" -#: src/slic3r/GUI/Plater.cpp:1231 src/slic3r/GUI/Plater.cpp:1245 +#: src/slic3r/GUI/Plater.cpp:1143 src/slic3r/GUI/Plater.cpp:1160 msgid "wipe tower" msgstr "tour de nettoyage" -#: src/slic3r/GUI/ConfigManipulation.cpp:120 -#: src/slic3r/GUI/ConfigManipulation.cpp:140 +#: src/slic3r/GUI/ConfigManipulation.cpp:119 +#: src/slic3r/GUI/ConfigManipulation.cpp:139 msgid "Wipe Tower" msgstr "Tour de Nettoyage" @@ -8967,36 +10250,36 @@ msgstr "Tour de Nettoyage" msgid "Wipe tower - Purging volume adjustment" msgstr "Tour de nettoyage - Ajustement du volume de purge" -#: src/slic3r/GUI/Tab.cpp:1488 +#: src/slic3r/GUI/Tab.cpp:1834 msgid "Wipe tower parameters" msgstr "Paramètres de la tour de nettoyage" -#: src/libslic3r/PrintConfig.cpp:2245 +#: src/libslic3r/PrintConfig.cpp:2388 msgid "Wipe tower rotation angle" msgstr "Angle de rotation de la tour de nettoyage" -#: src/libslic3r/PrintConfig.cpp:2246 +#: src/libslic3r/PrintConfig.cpp:2389 msgid "Wipe tower rotation angle with respect to x-axis." msgstr "Angle de rotation de la tour de nettoyage par rapport à l'axe X." -#: src/libslic3r/PrintConfig.cpp:2193 +#: src/libslic3r/PrintConfig.cpp:2336 msgid "Wipe while retracting" msgstr "Nettoyer lors des rétractions" -#: src/slic3r/GUI/PresetHints.cpp:225 +#: src/slic3r/GUI/PresetHints.cpp:224 msgid "with a volumetric rate" msgstr "avec un débit volumétrique" -#: src/libslic3r/PrintConfig.cpp:1530 +#: src/libslic3r/PrintConfig.cpp:1638 msgid "With bowden extruders, it may be wise to do some amount of quick retract before doing the wipe movement." msgstr "Avec les extrudeurs bowden, il est conseillé d'effectuer une rétractation rapide avant de réaliser le mouvement de nettoyage." -#: src/libslic3r/PrintConfig.cpp:2056 +#: src/libslic3r/PrintConfig.cpp:2198 msgid "With sheath around the support" msgstr "Avec une enveloppe autour du support" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:62 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:105 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:68 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:111 msgid "World coordinates" msgstr "Les coordonnées mondiales" @@ -9014,84 +10297,100 @@ msgstr "" "\n" "Ensembles de configuration mis à jour :" -#: src/libslic3r/Zipper.cpp:92 +#: src/libslic3r/miniz_extension.cpp:151 msgid "write calledback failed" msgstr "échec de l'écriture du rappel" -#: src/libslic3r/PrintConfig.cpp:3382 +#: src/libslic3r/PrintConfig.cpp:3581 msgid "Write information about the model to the console." msgstr "Rédiger des informations au sujet du modèle en direction de la console." -#: src/slic3r/Utils/Duet.cpp:131 +#: src/slic3r/Utils/Duet.cpp:133 msgid "Wrong password" msgstr "Mauvais mot de passe" -#: src/libslic3r/PrintConfig.cpp:2225 +#: src/libslic3r/PrintConfig.cpp:2368 msgid "X coordinate of the left front corner of a wipe tower" msgstr "Coordonnée X du coin avant gauche d'une tour de nettoyage" -#: src/libslic3r/PrintConfig.cpp:1879 +#: src/libslic3r/PrintConfig.cpp:2021 msgid "XY separation between an object and its support" msgstr "Séparation XY entre un objet et ses supports" -#: src/libslic3r/PrintConfig.cpp:1881 +#: src/libslic3r/PrintConfig.cpp:2023 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 "Séparation XY entre un objet et ses supports. Si la valeur est exprimée en pourcentage (par exemple 50%), elle sera calculée à partir de la largeur du périmètre extérieur." -#: src/libslic3r/PrintConfig.cpp:2275 +#: src/libslic3r/PrintConfig.cpp:2418 msgid "XY Size Compensation" msgstr "Compensation de Taille XY" -#: src/libslic3r/PrintConfig.cpp:2232 +#: src/libslic3r/PrintConfig.cpp:2375 msgid "Y coordinate of the left front corner of a wipe tower" msgstr "Coordonnée Y du coin avant gauche d'une tour de nettoyage" -#: src/slic3r/GUI/Plater.cpp:1170 +#: src/slic3r/GUI/Plater.cpp:1079 msgid "Yes" msgstr "Oui" -#: src/libslic3r/PrintConfig.cpp:1317 +#: src/slic3r/GUI/Plater.cpp:1405 +msgid "You can open only one .gcode file at a time." +msgstr "Vous ne pouvez ouvrir qu'un seul fichier .gcode à la fois." + +#: src/libslic3r/PrintConfig.cpp:1425 msgid "You can put here your personal notes. This text will be added to the G-code header comments." msgstr "Vous pouvez inscrire ici vos commentaires personnels. Ce texte sera ajouté au commentaire en entête du G-Code." -#: src/libslic3r/PrintConfig.cpp:589 +#: src/libslic3r/PrintConfig.cpp:625 msgid "You can put your notes regarding the filament here." msgstr "Vous pouvez saisir vos remarques concernant le filament ici." -#: src/libslic3r/PrintConfig.cpp:1473 +#: src/libslic3r/PrintConfig.cpp:1581 msgid "You can put your notes regarding the printer here." msgstr "Vous pouvez saisir ici vos observations concernant l'imprimante." -#: src/libslic3r/PrintConfig.cpp:2579 +#: src/libslic3r/PrintConfig.cpp:2722 msgid "You can put your notes regarding the SLA print material here." msgstr "Vous pouvez mettre ici vos annotations concernant le matériau d'impression SLA." -#: src/libslic3r/PrintConfig.cpp:360 +#: src/libslic3r/PrintConfig.cpp:394 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 "Vous pouvez régler ce paramètre sur une valeur positive pour désactiver complètement le ventilateur pendant les premières couches, afin de ne pas rendre l'adhérence plus difficile." -#: src/libslic3r/PrintConfig.cpp:1364 +#: src/libslic3r/PrintConfig.cpp:1472 msgid "You can use all configuration options as variables inside this template. For example: [layer_height], [fill_density] etc. You can also use [timestamp], [year], [month], [day], [hour], [minute], [second], [version], [input_filename], [input_filename_base]." msgstr "Vous pouvez utiliser toutes les options de configuration comme variables dans ce modèle. Par exemple : [layer_height], [fill_density] etc. Vous pouvez aussi utiliser [timestamp], [year], [month], [day], [hour], [minute], [second], [version], [input_filename], [input_filename_base]." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3546 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4009 msgid "You can't change a type of the last solid part of the object." msgstr "Vous ne pouvez pas changer un type de la dernière partie solide de l'objet." -#: src/slic3r/GUI/Plater.cpp:2390 +#: src/slic3r/GUI/Plater.cpp:2352 #, 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 "Vous ne pouvez pas ajouter l'objet (les objets) depuis %s car l'un d'entre eux est en plusieurs parties" -#: src/slic3r/GUI/Plater.cpp:2311 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:208 src/slic3r/GUI/Plater.cpp:2254 msgid "You cannot load SLA project with a multi-part object on the bed" msgstr "Vous ne pouvez pas charger un projet SLA avec un objet en plusieurs parties sur le plateau" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:578 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:625 msgid "You cannot use non-uniform scaling mode for multiple objects/parts selection" msgstr "Vous ne pouvez pas utiliser un mode de redimensionnement non-uniforme pour une sélection d'objets/de parties multiples" -#: src/slic3r/GUI/GLCanvas3DManager.cpp:287 +#: src/slic3r/GUI/SavePresetDialog.cpp:277 +msgid "" +"You have selected physical printer \"%1%\" \n" +"with related printer preset \"%2%\"" +msgstr "" +"Vous avez sélectionné l'imprimante physique \"%1%\"\n" +"avec le préréglage d'imprimante associé \"%2%\"" + +#: src/slic3r/GUI/GUI_App.cpp:1078 +msgid "You have the following presets with saved options for \"Print Host upload\"" +msgstr "Vous disposez des préréglages suivants avec des options enregistrées pour le \"Téléchargement vers l'hôte d'impression\"" + +#: src/slic3r/GUI/OpenGLManager.cpp:262 msgid "You may need to update your graphics card driver." msgstr "Vous avez peut-être besoin de mettre à jour le pilote de votre carte graphique." @@ -9099,37 +10398,49 @@ msgstr "Vous avez peut-être besoin de mettre à jour le pilote de votre carte g msgid "You must install a configuration update." msgstr "Il est nécessaire d'installer une mise à niveau de configuration." -#: src/slic3r/GUI/Preferences.cpp:172 +#: src/slic3r/GUI/Preferences.cpp:299 #, c-format msgid "You need to restart %s to make the changes effective." msgstr "Vous devez redémarrer %s afin que les modifications soient appliquées." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3421 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:468 +msgid "You should to change a name of your printer device. It can't be saved." +msgstr "Vous devez changer le nom de votre imprimante. Il ne peut pas être enregistré." + +#: src/slic3r/GUI/GUI_ObjectList.cpp:3884 #, c-format msgid "You started your selection with %s Item." msgstr "Vous avez commencé votre sélection avec l'item %s." -#: src/slic3r/GUI/DoubleSlider.cpp:1902 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:664 +msgid "You will not be asked about the unsaved changes the next time you close PrusaSlicer." +msgstr "Vous ne serez pas interrogé sur les modifications non enregistrées la prochaine fois que vous fermerez PrusaSlicer." + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:665 +msgid "You will not be asked about the unsaved changes the next time you switch a preset." +msgstr "Vous ne serez pas interrogé sur les modifications non enregistrées la prochaine fois que vous changerez de préréglage." + +#: src/slic3r/GUI/DoubleSlider.cpp:2121 msgid "Your current changes will delete all saved color changes." msgstr "Vos changements actuels supprimeront toutes les changements de couleur enregistrés." -#: src/slic3r/GUI/DoubleSlider.cpp:1923 +#: src/slic3r/GUI/DoubleSlider.cpp:2141 msgid "Your current changes will delete all saved extruder (tool) changes." msgstr "Vos changements actuels supprimeront toutes les changement enregistrés de l'extrudeur (outil)." -#: src/slic3r/GUI/MainFrame.cpp:911 +#: src/slic3r/GUI/MainFrame.cpp:1612 msgid "Your file was repaired." msgstr "Votre fichier a été réparé." -#: src/slic3r/GUI/Plater.cpp:2528 +#: src/slic3r/GUI/Plater.cpp:2490 msgid "Your object appears to be too large, so it was automatically scaled down to fit your print bed." msgstr "Votre objet semble être trop grand, il a donc été automatiquement réduit afin de l'adapter à votre plateau d'impression." -#: src/libslic3r/PrintConfig.cpp:2285 +#: src/libslic3r/PrintConfig.cpp:2428 msgid "Z offset" msgstr "Décalage Z" -#: src/slic3r/GUI/ConfigManipulation.cpp:60 +#: src/slic3r/GUI/ConfigManipulation.cpp:59 msgid "" "Zero first layer height is not valid.\n" "\n" @@ -9139,7 +10450,7 @@ msgstr "" "\n" "La hauteur de la première couche sera réinitialisée à 0,01." -#: src/slic3r/GUI/ConfigManipulation.cpp:48 +#: src/slic3r/GUI/ConfigManipulation.cpp:47 msgid "" "Zero layer height is not valid.\n" "\n" @@ -9149,28 +10460,28 @@ msgstr "" "\n" "La hauteur de la couche sera réinitialisée à 0,01." -#: src/libslic3r/PrintConfig.cpp:2667 +#: src/libslic3r/PrintConfig.cpp:2831 msgid "Zig-Zag" msgstr "Zig-Zag" -#: src/slic3r/GUI/Mouse3DController.cpp:308 -#: src/slic3r/GUI/Mouse3DController.cpp:317 +#: src/slic3r/GUI/Mouse3DController.cpp:294 +#: src/slic3r/GUI/Mouse3DController.cpp:303 msgid "Zoom" msgstr "Zoom" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:183 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:177 msgid "Zoom in" msgstr "Zoom avant" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:184 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:178 msgid "Zoom out" msgstr "Zoom arrière" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:181 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:175 msgid "Zoom to Bed" msgstr "Zoomer sur le Lit" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:182 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:176 msgid "" "Zoom to selected object\n" "or all objects in scene, if none selected" @@ -9178,14 +10489,16 @@ msgstr "" "Zoomer sur l'objet sélectionné\n" "ou sur tous les objets sur la scène, si aucun n'est sélectionné" -#: src/libslic3r/PrintConfig.cpp:207 src/libslic3r/PrintConfig.cpp:780 -#: src/libslic3r/PrintConfig.cpp:1640 src/libslic3r/PrintConfig.cpp:1650 -#: src/libslic3r/PrintConfig.cpp:1894 src/libslic3r/PrintConfig.cpp:2049 -#: src/libslic3r/PrintConfig.cpp:2247 src/libslic3r/PrintConfig.cpp:2727 -#: src/libslic3r/PrintConfig.cpp:2848 +#: src/libslic3r/PrintConfig.cpp:241 src/libslic3r/PrintConfig.cpp:816 +#: src/libslic3r/PrintConfig.cpp:1748 src/libslic3r/PrintConfig.cpp:1758 +#: src/libslic3r/PrintConfig.cpp:2036 src/libslic3r/PrintConfig.cpp:2191 +#: src/libslic3r/PrintConfig.cpp:2390 src/libslic3r/PrintConfig.cpp:2891 +#: src/libslic3r/PrintConfig.cpp:3012 msgid "°" msgstr "°" -#: src/slic3r/GUI/ConfigWizard.cpp:1038 src/slic3r/GUI/ConfigWizard.cpp:1052 +#: src/slic3r/GUI/ConfigWizard.cpp:1404 src/slic3r/GUI/ConfigWizard.cpp:1418 +#: src/libslic3r/PrintConfig.cpp:180 src/libslic3r/PrintConfig.cpp:912 +#: src/libslic3r/PrintConfig.cpp:956 src/libslic3r/PrintConfig.cpp:2209 msgid "°C" msgstr "°C" diff --git a/resources/localization/it/PrusaSlicer.mo b/resources/localization/it/PrusaSlicer.mo index cb07f0949b..b8903a0f61 100644 Binary files a/resources/localization/it/PrusaSlicer.mo and b/resources/localization/it/PrusaSlicer.mo differ diff --git a/resources/localization/it/PrusaSlicer_it.po b/resources/localization/it/PrusaSlicer_it.po index 9cb5960b97..bebc6ef5b5 100644 --- a/resources/localization/it/PrusaSlicer_it.po +++ b/resources/localization/it/PrusaSlicer_it.po @@ -5,343 +5,425 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: PhraseApp (phraseapp.com)\n" +"X-Generator: Poedit 2.4.2\n" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" -#: src/slic3r/GUI/MainFrame.cpp:66 -msgid " - Remember to check for updates at http://github.com/prusa3d/PrusaSlicer/releases" -msgstr " - Ricordati di controllare gli aggiornamenti su http://github.com/prusa3d/PrusaSlicer/releases" +#: src/slic3r/GUI/Tab.cpp:4124 +msgid "" +"\"%1%\" is disabled because \"%2%\" is on in \"%3%\" category.\n" +"To enable \"%1%\", please switch off \"%2%\"" +msgstr "" +"\"%1%\" è disattivato perchè \"%2%\" è nella categoria \"%3%\".\n" +"Per attivare \"%1%\", si prega di spegnere \"%2%\"" -#: src/slic3r/GUI/MainFrame.cpp:872 -msgid " was successfully sliced." -msgstr " generato con successo." - -#: src/libslic3r/PrintConfig.cpp:215 src/libslic3r/PrintConfig.cpp:792 -#: src/libslic3r/PrintConfig.cpp:1219 src/libslic3r/PrintConfig.cpp:1282 -#: src/libslic3r/PrintConfig.cpp:1532 src/libslic3r/PrintConfig.cpp:2425 -#: src/libslic3r/PrintConfig.cpp:2767 +#: src/libslic3r/PrintConfig.cpp:249 src/libslic3r/PrintConfig.cpp:828 +#: src/libslic3r/PrintConfig.cpp:1148 src/libslic3r/PrintConfig.cpp:1327 +#: src/libslic3r/PrintConfig.cpp:1390 src/libslic3r/PrintConfig.cpp:1640 +#: src/libslic3r/PrintConfig.cpp:2568 src/libslic3r/PrintConfig.cpp:2805 +#: src/libslic3r/PrintConfig.cpp:2931 msgid "%" msgstr "%" -#: src/slic3r/GUI/GLCanvas3D.cpp:963 -#, possible-c-format +#: src/slic3r/GUI/GLCanvas3D.cpp:969 +#, c-format msgid "%.2f - %.2f mm" msgstr "%.2f - %.2f mm" #. TRN Remove/Delete -#: src/slic3r/GUI/Tab.cpp:3126 +#: src/slic3r/GUI/Tab.cpp:3425 msgid "%1% Preset" msgstr "%1% Preset" -#: src/slic3r/GUI/Plater.cpp:4400 +#: src/slic3r/GUI/Plater.cpp:4423 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 "La stampante %1% era attiva nel momento in cui è stata creata l'istantanea di Annulla / Ripeti dell'oggetto. Passare alla stampante %1% richiede il ricaricamento dei preset %1%." -#: src/libslic3r/Print.cpp:1374 +#: src/slic3r/GUI/MainFrame.cpp:1585 +msgid "%1% was successfully sliced." +msgstr "%1% generato con successo." + +#: src/libslic3r/Print.cpp:1400 msgid "%1%=%2% mm is too low to be printable at a layer height %3% mm" msgstr "%1%=%2% mm è troppo basso per essere un altezza layer stampabile %3% mm" -#: src/slic3r/GUI/PresetHints.cpp:229 -#, possible-c-format +#: src/slic3r/GUI/PresetHints.cpp:228 +#, c-format msgid "%3.2f mm³/s at filament speed %3.2f mm/s." msgstr "%3.2f mm³/s alla velocità del filamento di %3.2f mm/s." -#: src/slic3r/GUI/Plater.cpp:1152 -#, possible-c-format +#: src/slic3r/GUI/Plater.cpp:1061 +#, c-format msgid "%d (%d shells)" msgstr "%d (%d di perimetri)" -#: src/slic3r/GUI/Plater.cpp:1160 -#, possible-c-format +#: src/slic3r/GUI/Plater.cpp:1069 +#, c-format msgid "%d degenerate facets, %d edges fixed, %d facets removed, %d facets added, %d facets reversed, %d backwards edges" msgstr "%d facce degenerate, %d spigoli riparati, %d facce rimosse, %d faccee aggiunte, %d facce invertite, %d spigoli inversi" -#: src/slic3r/GUI/PresetHints.cpp:270 -#, possible-c-format +#: src/slic3r/GUI/PresetHints.cpp:269 +#, c-format msgid "%d lines: %.2f mm" msgstr "%d linee: %.2f mm" -#: src/slic3r/GUI/MainFrame.cpp:1027 -#, possible-c-format +#: src/slic3r/GUI/MainFrame.cpp:1728 +#, c-format msgid "%d presets successfully imported." msgstr "%d preset importati correttamente." -#: src/slic3r/GUI/MainFrame.cpp:692 -#, possible-c-format +#: src/slic3r/GUI/GUI_App.cpp:718 +#, c-format +msgid "" +"%s\n" +"Do you want to continue?" +msgstr "" +"%s\n" +"Vuoi continuare?" + +#: src/slic3r/GUI/MainFrame.cpp:917 src/slic3r/GUI/MainFrame.cpp:1316 +#, c-format msgid "%s &Website" -msgstr "%s Sito &Web" +msgstr "Sito &Web %s" + +#: src/slic3r/GUI/GUI_App.cpp:394 +#, c-format +msgid "%s - BREAKING CHANGE" +msgstr "%s - BREAKING CHANGE" #: src/slic3r/GUI/UpdateDialogs.cpp:211 -#, possible-c-format +#, c-format msgid "%s configuration is incompatible" msgstr "configurazione %s non compatibile" -#: src/slic3r/GUI/Field.cpp:175 -#, possible-c-format +#: src/slic3r/GUI/Field.cpp:223 +#, c-format msgid "%s doesn't support percentage" msgstr "%s non supporta la percentuale" #: src/slic3r/GUI/MsgDialog.cpp:73 -#, possible-c-format +#, c-format msgid "%s error" msgstr "errore %s" -#: src/slic3r/GUI/ConfigWizard.cpp:481 -#, possible-c-format +#: src/slic3r/GUI/ConfigWizard.cpp:499 +#, c-format msgid "%s Family" msgstr "Famiglia %s" #: src/slic3r/GUI/MsgDialog.cpp:74 -#, possible-c-format +#, c-format msgid "%s has encountered an error" msgstr "%s ha riscontrato un errore" -#: src/slic3r/GUI/GUI_App.cpp:138 -#, possible-c-format -msgid "%s has encountered an error. It was likely caused by running out of memory. If you are sure you have enough RAM on your system, this may also be a bug and we would be glad if you reported it.\n\nThe application will now terminate." -msgstr "%s ha riscontrato un errore. Probabilmente è stato causato dalla memoria piena. Se sei sicuro di avere abbastanza RAM nel sistema, questo potrebbe essere un bug e te ne saremmo grati se potessi informarci.\n\nL'applicazione verrà chiusa." +#: src/slic3r/GUI/GUI_App.cpp:528 +#, c-format +msgid "" +"%s has encountered an error. It was likely caused by running out of memory. If you are sure you have enough RAM on your system, this may also be a bug and we would be glad if you reported it.\n" +"\n" +"The application will now terminate." +msgstr "" +"%s ha riscontrato un errore. Probabilmente è stato causato dalla memoria piena. Se sei sicuro di avere abbastanza RAM nel sistema, questo potrebbe essere un bug e te ne saremmo grati se potessi informarci.\n" +"\n" +"L'applicazione verrà chiusa." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:222 -#, possible-c-format +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:62 +#, c-format msgid "%s has encountered an error. It was likely caused by running out of memory. If you are sure you have enough RAM on your system, this may also be a bug and we would be glad if you reported it." msgstr "%s ha riscontrato un errore. Probabilmente è stato causato dalla memoria piena. Se sei sicuro di avere abbastanza RAM nel sistema, questo potrebbe essere un bug e te ne saremmo grati se potessi informarci." -#: src/slic3r/GUI/UpdateDialogs.cpp:308 -#, possible-c-format +#: src/slic3r/GUI/UpdateDialogs.cpp:309 +#, c-format msgid "%s has no configuration updates available." msgstr "Non sono disponibili aggiornamenti di configurazione per %s." #: src/slic3r/GUI/UpdateDialogs.cpp:148 src/slic3r/GUI/UpdateDialogs.cpp:210 -#, possible-c-format +#, c-format msgid "%s incompatibility" msgstr "incompatibilità %s" #: src/slic3r/GUI/UpdateDialogs.cpp:270 -#, possible-c-format -msgid "%s now uses an updated configuration structure.\n\nSo called 'System presets' have been introduced, which hold the built-in default settings for various printers. These System presets cannot be modified, instead, users now may create their own presets inheriting settings from one of the System presets.\nAn inheriting preset may either inherit a particular value from its parent or override it with a customized value.\n\nPlease proceed with the %s that follows to set up the new presets and to choose whether to enable automatic preset updates." -msgstr "%s adesso utilizza uno schema aggiornato di configurazioni.\n\nSono stati introdotti i così detti 'Preset di sistema', che contengono i settaggi integrati predefiniti per varie stampanti. Questi preset di sistema non possono essere modificati, però l'utente può creare i propri preset ereditando le impostazioni da quelli di sistema.\nUn preset ereditato può sia ereditare un valore particolare dal genitore, o sovrascriverlo con un valore personalizzato.\n\nSi prega di procedere con il %s che segue per impostare i nuovi preset e scegliere se abilitare gli aggiornamenti automatici del preset." +#, c-format +msgid "" +"%s now uses an updated configuration structure.\n" +"\n" +"So called 'System presets' have been introduced, which hold the built-in default settings for various printers. These System presets cannot be modified, instead, users now may create their own presets inheriting settings from one of the System presets.\n" +"An inheriting preset may either inherit a particular value from its parent or override it with a customized value.\n" +"\n" +"Please proceed with the %s that follows to set up the new presets and to choose whether to enable automatic preset updates." +msgstr "" +"%s adesso utilizza uno schema aggiornato di configurazioni.\n" +"\n" +"Sono stati introdotti i così detti 'Preset di sistema', che contengono i settaggi integrati predefiniti per varie stampanti. Questi preset di sistema non possono essere modificati, però l'utente può creare i propri preset ereditando le impostazioni da quelli di sistema.\n" +"Un preset ereditato può sia ereditare un valore particolare dal genitore, o sovrascriverlo con un valore personalizzato.\n" +"\n" +"Si prega di procedere con il %s che segue per impostare i nuovi preset e scegliere se abilitare gli aggiornamenti automatici del preset." -#: src/slic3r/GUI/GUI_App.cpp:820 -#, possible-c-format +#: src/slic3r/GUI/GUI_App.cpp:1512 +#, c-format msgid "%s View Mode" msgstr "%s Modalità Visualizzazione" #: src/slic3r/GUI/UpdateDialogs.cpp:151 -#, possible-c-format -msgid "%s will now start updates. Otherwise it won't be able to start.\n\nNote that a full configuration snapshot will be created first. It can then be restored at any time should there be a problem with the new version.\n\nUpdated configuration bundles:" -msgstr "%s avvierà gli aggiornamenti. In caso contrario non sarà in grado di avviarsi.\n\nSi fa noto che prima verrà creata un'istantanea della configurazione completa. Questa potrà essere ripristinata in qualunque momento se dovesse esserci un problema con la nuova versione.\n\nPacchetti di configurazione aggiornati:" +#, c-format +msgid "" +"%s will now start updates. Otherwise it won't be able to start.\n" +"\n" +"Note that a full configuration snapshot will be created first. It can then be restored at any time should there be a problem with the new version.\n" +"\n" +"Updated configuration bundles:" +msgstr "" +"%s avvierà gli aggiornamenti. In caso contrario non sarà in grado di avviarsi.\n" +"\n" +"Si fa noto che prima verrà creata un'istantanea della configurazione completa. Questa potrà essere ripristinata in qualunque momento se dovesse esserci un problema con la nuova versione.\n" +"\n" +"Pacchetti di configurazione aggiornati:" -#: src/slic3r/GUI/MainFrame.cpp:705 -#, possible-c-format +#: src/slic3r/GUI/MainFrame.cpp:933 src/slic3r/GUI/MainFrame.cpp:937 +#: src/slic3r/GUI/MainFrame.cpp:1329 +#, c-format msgid "&About %s" msgstr "Inform&azioni su %s" -#: src/slic3r/GUI/GUI_App.cpp:908 +#: src/slic3r/GUI/MainFrame.cpp:1297 +msgid "&Collapse sidebar" +msgstr "Ridu&ci barra laterale" + +#: src/slic3r/GUI/GUI_App.cpp:1645 msgid "&Configuration" msgstr "&Configurazione" -#: src/slic3r/GUI/GUI_App.cpp:800 +#: src/slic3r/GUI/GUI_App.cpp:1480 msgid "&Configuration Snapshots" msgstr "Istantanee di &Configurazione" -#: src/slic3r/GUI/MainFrame.cpp:588 +#: src/slic3r/GUI/MainFrame.cpp:1194 msgid "&Copy" msgstr "&Copia" -#: src/slic3r/GUI/MainFrame.cpp:572 +#: src/slic3r/GUI/MainFrame.cpp:1178 msgid "&Delete selected" msgstr "Eli&mina selezionati" -#: src/slic3r/GUI/MainFrame.cpp:722 +#: src/slic3r/GUI/MainFrame.cpp:1348 src/slic3r/GUI/MainFrame.cpp:1358 msgid "&Edit" msgstr "&Modifiche" -#: src/slic3r/GUI/MainFrame.cpp:506 +#: src/slic3r/GUI/MainFrame.cpp:1103 msgid "&Export" msgstr "&Esporta" -#: src/slic3r/GUI/MainFrame.cpp:617 src/slic3r/GUI/MainFrame.cpp:752 +#: src/slic3r/GUI/MainFrame.cpp:1224 src/slic3r/GUI/MainFrame.cpp:1451 msgid "&Filament Settings Tab" msgstr "Impostazioni &Filamento" -#: src/slic3r/GUI/MainFrame.cpp:721 +#: src/slic3r/GUI/MainFrame.cpp:1347 src/slic3r/GUI/MainFrame.cpp:1357 +#: src/slic3r/GUI/MainFrame.cpp:1417 msgid "&File" msgstr "&File" -#: src/slic3r/GUI/ConfigWizard.cpp:1981 +#: src/slic3r/GUI/ConfigWizard.cpp:2492 msgid "&Finish" msgstr "&Completa" -#: src/slic3r/GUI/MainFrame.cpp:727 +#: src/slic3r/GUI/MainFrame.cpp:1141 +msgid "&G-code preview" +msgstr "Anteprima &G-code" + +#: src/slic3r/GUI/MainFrame.cpp:1353 src/slic3r/GUI/MainFrame.cpp:1363 +#: src/slic3r/GUI/MainFrame.cpp:1423 msgid "&Help" msgstr "&Aiuto" -#: src/slic3r/GUI/MainFrame.cpp:474 +#: src/slic3r/GUI/MainFrame.cpp:1065 msgid "&Import" msgstr "&Importa" -#: src/slic3r/GUI/GUI_App.cpp:822 +#: src/slic3r/GUI/GUI_App.cpp:1517 msgid "&Language" msgstr "&Lingua" -#: src/slic3r/GUI/MainFrame.cpp:405 +#: src/slic3r/GUI/MainFrame.cpp:986 msgid "&New Project" msgstr "&Nuovo progetto" -#: src/slic3r/GUI/ConfigWizard.cpp:1980 +#: src/slic3r/GUI/ConfigWizard.cpp:2491 msgid "&Next >" msgstr "&Successivo>" -#: src/slic3r/GUI/MainFrame.cpp:408 +#: src/slic3r/GUI/MainFrame.cpp:1391 +msgid "&Open G-code" +msgstr "Apri G-code" + +#: src/slic3r/GUI/MainFrame.cpp:989 msgid "&Open Project" msgstr "Apri Pr&ogetto" -#: src/slic3r/GUI/MainFrame.cpp:591 +#: src/slic3r/GUI/MainFrame.cpp:1197 msgid "&Paste" msgstr "I&ncolla" -#: src/slic3r/GUI/MainFrame.cpp:606 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "&Plater Tab" msgstr "&Piano" -#: src/slic3r/GUI/GUI_App.cpp:804 +#: src/slic3r/GUI/GUI_App.cpp:1487 msgid "&Preferences" msgstr "&Preferenze" -#: src/slic3r/GUI/MainFrame.cpp:540 +#: src/slic3r/GUI/MainFrame.cpp:1144 src/slic3r/GUI/MainFrame.cpp:1402 msgid "&Quit" msgstr "Es&ci" -#: src/slic3r/GUI/MainFrame.cpp:583 +#: src/slic3r/GUI/MainFrame.cpp:1189 msgid "&Redo" msgstr "&Ripeti" -#: src/slic3r/GUI/MainFrame.cpp:536 +#: src/slic3r/GUI/MainFrame.cpp:1137 msgid "&Repair STL file" msgstr "&Ripara file STL" -#: src/slic3r/GUI/MainFrame.cpp:446 +#: src/slic3r/GUI/MainFrame.cpp:1028 msgid "&Save Project" msgstr "&Salva Progetto" -#: src/slic3r/GUI/MainFrame.cpp:565 +#: src/slic3r/GUI/MainFrame.cpp:1171 msgid "&Select all" msgstr "&Seleziona tutto" -#: src/slic3r/GUI/MainFrame.cpp:580 +#: src/slic3r/GUI/MainFrame.cpp:1186 msgid "&Undo" msgstr "Ann&ulla" -#: src/slic3r/GUI/MainFrame.cpp:724 +#: src/slic3r/GUI/MainFrame.cpp:1350 src/slic3r/GUI/MainFrame.cpp:1360 +#: src/slic3r/GUI/MainFrame.cpp:1418 msgid "&View" msgstr "&Vista" -#: src/slic3r/GUI/MainFrame.cpp:723 +#: src/slic3r/GUI/MainFrame.cpp:1349 src/slic3r/GUI/MainFrame.cpp:1359 msgid "&Window" msgstr "Fines&tra" -#: src/slic3r/GUI/ConfigWizard.cpp:603 src/slic3r/GUI/ConfigWizard.cpp:631 +#: src/slic3r/GUI/ConfigWizard.cpp:662 src/slic3r/GUI/ConfigWizard.cpp:812 +#: src/slic3r/GUI/ConfigWizard.cpp:873 src/slic3r/GUI/ConfigWizard.cpp:1007 msgid "(All)" msgstr "(Tutto)" -#: src/libslic3r/PrintConfig.cpp:1446 +#: src/libslic3r/PrintConfig.cpp:1554 msgid "(minimum)" msgstr "(minimo)" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:116 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:109 msgid "(Re)slice" msgstr "(Ri)processa" -#: src/slic3r/GUI/MainFrame.cpp:532 +#: src/slic3r/GUI/MainFrame.cpp:1133 msgid "(Re)Slice No&w" msgstr "(Re)Sli&ce Ora" -#: src/libslic3r/PrintConfig.cpp:771 src/libslic3r/PrintConfig.cpp:2587 +#: src/libslic3r/PrintConfig.cpp:807 src/libslic3r/PrintConfig.cpp:2730 msgid "(Unknown)" msgstr "(Sconosciuto)" -#: src/slic3r/GUI/MainFrame.cpp:790 +#: src/slic3r/GUI/MainFrame.cpp:1491 msgid ") not found." msgstr ") non trovato." -#: src/libslic3r/PrintConfig.cpp:1918 +#: src/libslic3r/PrintConfig.cpp:2060 msgid "0 (soluble)" msgstr "0 (solubile)" -#: src/libslic3r/PrintConfig.cpp:1919 +#: src/libslic3r/PrintConfig.cpp:2061 msgid "0.2 (detachable)" msgstr "0.2 (rimovibile)" -#: src/slic3r/GUI/MainFrame.cpp:626 +#: src/slic3r/GUI/MainFrame.cpp:1234 msgid "3&D" msgstr "3&D" -#: src/slic3r/GUI/Plater.cpp:4097 +#: src/slic3r/GUI/Plater.cpp:4044 msgid "3D editor view" msgstr "Vista modifica 3D" -#: src/libslic3r/PrintConfig.cpp:851 +#: src/libslic3r/PrintConfig.cpp:889 msgid "3D Honeycomb" msgstr "Nido d'ape 3D" -#: src/slic3r/GUI/Mouse3DController.cpp:274 +#: src/slic3r/GUI/NotificationManager.hpp:318 +msgid "3D Mouse disconnected." +msgstr "Mouse 3D disconnesso." + +#: src/slic3r/GUI/Mouse3DController.cpp:263 msgid "3Dconnexion settings" msgstr "Impostazioni 3Dconnexion" -#: src/slic3r/GUI/Plater.cpp:5038 -#, possible-c-format +#: src/slic3r/GUI/Plater.cpp:5167 +#, c-format msgid "3MF file exported to %s" msgstr "File 3MF esportato in %s" -#: src/slic3r/GUI/ConfigWizard.cpp:1979 +#: src/slic3r/GUI/ConfigWizard.cpp:2490 msgid "< &Back" msgstr "< &Precedente" -#: src/libslic3r/PrintConfig.cpp:287 +#: src/libslic3r/PrintConfig.cpp:321 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 "Un'espressione booleana che usa i valori di configurazione di un profilo di stampa attivo. Se questa espressione produce un risultato vero, questo profilo si considera compatibile con il profilo stampante attivo." -#: src/libslic3r/PrintConfig.cpp:272 +#: src/libslic3r/PrintConfig.cpp:306 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 "Un'espressione booleana che usa i valori di configurazione di un profilo stampante attivo. Se questa espressione produce un risultato vero, questo profilo si considera compatibile con il profilo stampante attivo." -#: src/slic3r/GUI/Tab.cpp:975 +#: src/slic3r/GUI/Tab.cpp:1237 msgid "A copy of the current system preset will be created, which will be detached from the system preset." msgstr "Verrà creata una copia del preset di sistema corrente, e verrà distaccata dal preset di sistema." -#: src/slic3r/GUI/ConfigWizard.cpp:1034 +#: src/slic3r/GUI/ConfigWizard.cpp:1400 msgid "A rule of thumb is 160 to 230 °C for PLA, and 215 to 250 °C for ABS." msgstr "Una regola generale è da 160 a 230°C per il PLA, e da 215 a 250°C per l'ABS." -#: src/slic3r/GUI/ConfigWizard.cpp:1048 +#: src/slic3r/GUI/ConfigWizard.cpp:1414 msgid "A rule of thumb is 60 °C for PLA and 110 °C for ABS. Leave zero if you have no heated bed." msgstr "Una regola generale è 60°C per il PLA e 110°C per l'ABS. Lascia a zero se non hai un piano riscaldato." -#: src/slic3r/GUI/GLCanvas3D.cpp:686 -msgid "A toolpath outside the print area was detected" -msgstr "È stato rilevato un percorso al di fuori dell'area di stampa" +#: src/slic3r/GUI/GLCanvas3D.cpp:634 +msgid "A toolpath outside the print area was detected." +msgstr "È stato rilevato un percorso fuori dall'area di stampa." -#: src/slic3r/GUI/AboutDialog.cpp:199 -#, possible-c-format +#: src/slic3r/GUI/AboutDialog.cpp:212 src/slic3r/GUI/AboutDialog.cpp:215 +#, c-format msgid "About %s" msgstr "Informazioni su %s" -#: src/slic3r/GUI/GLCanvas3D.cpp:959 -#, possible-c-format +#: src/slic3r/GUI/GCodeViewer.cpp:2189 +msgid "above" +msgstr "sopra" + +#: src/slic3r/GUI/GLCanvas3D.cpp:965 +#, c-format msgid "above %.2f mm" msgstr "sopra %.2f mm" -#: src/libslic3r/PrintConfig.cpp:1569 +#: src/libslic3r/PrintConfig.cpp:1677 msgid "Above Z" msgstr "Z Sopra" -#: src/slic3r/GUI/Tab.cpp:1164 +#: src/slic3r/GUI/Tab.cpp:1494 msgid "Acceleration control (advanced)" msgstr "Controllo Accelerazione (avanzato)" -#: src/libslic3r/PrintConfig.cpp:2925 +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:221 +#: src/libslic3r/PrintConfig.cpp:3089 msgid "Accuracy" msgstr "Precisione" +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:59 +msgid "Accurate" +msgstr "Precisa" + #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:78 msgid "Activate" msgstr "Attiva" @@ -350,67 +432,75 @@ msgstr "Attiva" msgid "Active" msgstr "Attivo" -#: src/slic3r/GUI/DoubleSlider.cpp:1135 src/slic3r/GUI/GUI_ObjectList.cpp:1705 +#: src/slic3r/GUI/DoubleSlider.cpp:1264 src/slic3r/GUI/GUI_ObjectList.cpp:1833 msgid "active" msgstr "attivo" -#: src/slic3r/GUI/GLCanvas3D.cpp:267 +#: src/slic3r/GUI/GLCanvas3D.cpp:254 msgid "Adaptive" msgstr "Adattivo" -#: src/slic3r/GUI/Tab.cpp:241 -msgid "Add a new printer" -msgstr "Aggiungi una nuova stampante" +#: src/libslic3r/PrintConfig.cpp:894 +msgid "Adaptive Cubic" +msgstr "Adattivo Cubico" -#: src/libslic3r/PrintConfig.cpp:2782 +#: src/slic3r/GUI/SavePresetDialog.cpp:314 +msgid "Add \"%1%\" as a next preset for the the physical printer \"%2%\"" +msgstr "Aggiunge \"%1%\" come prossimo preset per la stampante fisica \"%2%\"" + +#: src/libslic3r/PrintConfig.cpp:2946 msgid "Add a pad underneath the supported model" msgstr "Aggiungi un pad sotto il modello supportato" -#: src/libslic3r/PrintConfig.cpp:2058 +#: src/libslic3r/PrintConfig.cpp:2200 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 "Aggiunge un contorno (una singola linea di perimetro) attorno alla base del supporto. Questo rende il supporto più affidabile, ma anche più difficile da rimuovere." -#: src/slic3r/GUI/DoubleSlider.cpp:991 +#: src/slic3r/GUI/DoubleSlider.cpp:1114 msgid "Add another code - Ctrl + Left click" msgstr "Aggiungi altro codice - Ctrl + Clic sinistro" -#: src/slic3r/GUI/DoubleSlider.cpp:992 +#: src/slic3r/GUI/DoubleSlider.cpp:1115 msgid "Add another code - Right click" msgstr "Aggiungi un altro codice - Clic destro" -#: src/slic3r/GUI/DoubleSlider.cpp:1477 +#: src/slic3r/GUI/DoubleSlider.cpp:1665 msgid "Add color change" msgstr "Aggiungi cambio colore" -#: src/slic3r/GUI/DoubleSlider.cpp:1180 +#: src/slic3r/GUI/DoubleSlider.cpp:1307 msgid "Add color change (%1%) for:" msgstr "Aggiungi cambio colore (%1%) per:" -#: src/slic3r/GUI/DoubleSlider.cpp:988 +#: src/slic3r/GUI/DoubleSlider.cpp:1111 msgid "Add color change - Left click" msgstr "Aggiungi cambio colore - Clic sinistro" -#: src/slic3r/GUI/DoubleSlider.cpp:986 +#: src/slic3r/GUI/DoubleSlider.cpp:1109 msgid "Add color change - Left click for predefined color or Shift + Left click for custom color selection" msgstr "Aggiungi cambio colore - Clic sinistro per colore predefinito o Maiusc + Clic sinistro per selezione personalizzata del colore" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:218 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:219 msgid "Add color change marker for current layer" msgstr "Aggiungi un segnale di cambio colore al layer corrente" -#: src/slic3r/GUI/DoubleSlider.cpp:1490 +#: src/slic3r/GUI/DoubleSlider.cpp:1682 msgid "Add custom G-code" msgstr "Aggiungi un G-code personalizzato" -#: src/slic3r/GUI/GLCanvas3D.cpp:240 +#: src/slic3r/GUI/DoubleSlider.cpp:1679 +msgid "Add custom template" +msgstr "Aggiungi un modello personalizzato" + +#: src/slic3r/GUI/GLCanvas3D.cpp:235 msgid "Add detail" msgstr "Aggiungi dettagli" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:421 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:308 msgid "Add drainage hole" msgstr "Aggiungi foro di drenaggio" -#: src/slic3r/GUI/DoubleSlider.cpp:984 +#: src/slic3r/GUI/DoubleSlider.cpp:1107 msgid "Add extruder change - Left click" msgstr "Aggiungi cambio estrusore - Clic sinistro" @@ -418,30 +508,30 @@ msgstr "Aggiungi cambio estrusore - Clic sinistro" msgid "Add extruder to sequence" msgstr "Aggiungi estrusore alla sequenza" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1993 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2152 msgid "Add Generic Subobject" msgstr "Aggiungi sotto-oggetto generico" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2896 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2925 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2943 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3297 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3325 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3345 msgid "Add Height Range" msgstr "Aggiungi Intervallo Altezza" -#: src/slic3r/GUI/GLCanvas3D.cpp:4526 src/slic3r/GUI/Plater.cpp:3788 -#: src/slic3r/GUI/Plater.cpp:3800 src/slic3r/GUI/Plater.cpp:3940 +#: src/slic3r/GUI/GLCanvas3D.cpp:4892 src/slic3r/GUI/Plater.cpp:3708 +#: src/slic3r/GUI/Plater.cpp:3720 src/slic3r/GUI/Plater.cpp:3858 msgid "Add instance" msgstr "Aggiungi istanza" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:159 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:153 msgid "Add Instance of the selected object" msgstr "Aggiungi istanza all'oggetto selezionato" -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:162 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:165 msgid "Add layer range" msgstr "Aggiungi intervallo layer" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2328 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2692 msgid "Add Layers" msgstr "Aggiungi layer" @@ -449,12 +539,12 @@ msgstr "Aggiungi layer" msgid "Add modifier" msgstr "Aggiungi modificatore" -#: src/libslic3r/PrintConfig.cpp:479 -#, no-c-format +#: src/libslic3r/PrintConfig.cpp:515 +#, c-format msgid "Add more perimeters when needed for avoiding gaps in sloping walls. Slic3r keeps adding perimeters, until more than 70% of the loop immediately above is supported." msgstr "Aggiunge più perimetri quando necessario per evitare spazi tra i perimetri inclinati. Slic3r continua ad aggiungere perimetri fino a quando almeno il 70% del giro immediatamente sopra sarà supportato." -#: src/slic3r/GUI/Plater.cpp:3940 +#: src/slic3r/GUI/Plater.cpp:3858 msgid "Add one more instance of the selected object" msgstr "Aggiungi un'altra istanza dell'oggetto selezionato" @@ -462,52 +552,61 @@ msgstr "Aggiungi un'altra istanza dell'oggetto selezionato" msgid "Add part" msgstr "Aggiungi parte" -#: src/slic3r/GUI/DoubleSlider.cpp:1487 +#: src/slic3r/GUI/DoubleSlider.cpp:1675 msgid "Add pause print" msgstr "Aggiungi pausa di stampa" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1363 +#: src/slic3r/GUI/PresetComboBoxes.cpp:627 +#: src/slic3r/GUI/PresetComboBoxes.cpp:674 +msgid "Add physical printer" +msgstr "Aggiungi stampante fisica" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1210 msgid "Add point" msgstr "Aggiungi punto" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1366 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1213 msgid "Add point to selection" msgstr "Aggiungi punto alla selezione" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1509 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:180 +msgid "Add preset for this printer device" +msgstr "Aggiungi preset per questa stampante" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1640 msgid "Add settings" msgstr "Aggiungi impostazioni" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1386 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1517 msgid "Add Settings Bundle for Height range" msgstr "Aggiungi Gruppo impostazioni per intervallo Altezza" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1388 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1519 msgid "Add Settings Bundle for Object" msgstr "Aggiungi gruppo di impostazioni per l'oggetto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1387 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1518 msgid "Add Settings Bundle for Sub-object" msgstr "Aggiungi Gruppi di Impostazioni per il sotto-progetto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1314 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1445 msgid "Add Settings for Layers" msgstr "Aggiungi impostazioni per i layer" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1316 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1447 msgid "Add Settings for Object" msgstr "Aggiungi impostazioni per l'oggetto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1315 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1446 msgid "Add Settings for Sub-object" msgstr "Aggiungi impostazioni per il sotto-oggetto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1793 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2051 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1953 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2210 msgid "Add Shape" msgstr "Aggiungi Forma" -#: src/libslic3r/PrintConfig.cpp:409 +#: src/libslic3r/PrintConfig.cpp:443 msgid "Add solid infill near sloping surfaces to guarantee the vertical shell thickness (top+bottom solid layers)." msgstr "Aggiunge un riempimento solido vicino le superfici inclinate per garantire lo spessore verticale (layer solidi superiore + inferiore)" @@ -519,11 +618,19 @@ msgstr "Aggiungi blocco supporto" msgid "Add support enforcer" msgstr "Aggiungi rinforzo supporto" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:494 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:374 msgid "Add support point" msgstr "Aggiungi punto di supporto" -#: src/slic3r/GUI/GLCanvas3D.cpp:4467 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:371 +msgid "Add supports" +msgstr "Aggiungi supporti" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:293 +msgid "Add supports by angle" +msgstr "Aggiungi supporti all'angolo" + +#: src/slic3r/GUI/GLCanvas3D.cpp:4833 msgid "Add..." msgstr "Aggiungi..." @@ -531,23 +638,29 @@ msgstr "Aggiungi..." msgid "Add/Remove filaments" msgstr "Aggiungi/Rimuovi filamenti" -#: src/slic3r/GUI/Preset.cpp:1201 +#: src/slic3r/GUI/PresetComboBoxes.cpp:813 msgid "Add/Remove materials" msgstr "Aggiungi/Rimuovi materiali" -#: src/slic3r/GUI/Preset.cpp:1203 +#: src/slic3r/GUI/PresetComboBoxes.cpp:622 +#: src/slic3r/GUI/PresetComboBoxes.cpp:669 +msgid "Add/Remove presets" +msgstr "Aggiungi/Rimuovi preset" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:815 +#: src/slic3r/GUI/PresetComboBoxes.cpp:972 msgid "Add/Remove printers" msgstr "Aggiungi/Rimuovi stampanti" -#: src/slic3r/GUI/Tab.cpp:970 +#: src/slic3r/GUI/Tab.cpp:1288 msgid "Additional information:" msgstr "Informazioni aggiuntive:" -#: src/slic3r/GUI/GUI_ObjectSettings.cpp:59 +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:62 msgid "Additional Settings" msgstr "Impostazioni Aggiuntive" -#: src/slic3r/GUI/ConfigWizard.cpp:791 +#: src/slic3r/GUI/ConfigWizard.cpp:1150 msgid "Additionally a backup snapshot of the whole configuration is created before an update is applied." msgstr "Inoltre viene generata una copia di backup dei preset prima di applicare un aggiornamento." @@ -555,23 +668,22 @@ msgstr "Inoltre viene generata una copia di backup dei preset prima di applicare msgid "Address" msgstr "Indirizzo" -#: src/slic3r/GUI/GUI_App.cpp:814 src/slic3r/GUI/GUI_ObjectList.cpp:104 -#: src/slic3r/GUI/GUI_ObjectList.cpp:622 src/slic3r/GUI/Tab.cpp:1087 -#: src/slic3r/GUI/Tab.cpp:1102 src/slic3r/GUI/Tab.cpp:1201 -#: src/slic3r/GUI/Tab.cpp:1204 src/slic3r/GUI/Tab.cpp:1470 -#: src/slic3r/GUI/Tab.cpp:1967 src/slic3r/GUI/Tab.cpp:3661 -#: src/slic3r/GUI/wxExtensions.cpp:754 src/libslic3r/PrintConfig.cpp:88 -#: src/libslic3r/PrintConfig.cpp:119 src/libslic3r/PrintConfig.cpp:223 -#: src/libslic3r/PrintConfig.cpp:1037 src/libslic3r/PrintConfig.cpp:2276 -#: src/libslic3r/PrintConfig.cpp:2448 +#: src/slic3r/GUI/GUI_ObjectList.cpp:102 src/slic3r/GUI/GUI_ObjectList.cpp:661 +#: src/slic3r/GUI/Tab.cpp:1409 src/slic3r/GUI/Tab.cpp:1430 +#: src/slic3r/GUI/Tab.cpp:1531 src/slic3r/GUI/Tab.cpp:1534 +#: src/slic3r/GUI/Tab.cpp:1816 src/slic3r/GUI/Tab.cpp:2152 +#: src/slic3r/GUI/Tab.cpp:4080 src/libslic3r/PrintConfig.cpp:90 +#: src/libslic3r/PrintConfig.cpp:121 src/libslic3r/PrintConfig.cpp:257 +#: src/libslic3r/PrintConfig.cpp:1081 src/libslic3r/PrintConfig.cpp:2419 +#: src/libslic3r/PrintConfig.cpp:2591 msgid "Advanced" msgstr "Avanzate" -#: src/slic3r/GUI/ConfigWizard.cpp:821 +#: src/slic3r/GUI/ConfigWizard.cpp:1180 msgid "Advanced mode" msgstr "Modalità Avanzata" -#: src/slic3r/GUI/GUI_App.cpp:814 +#: src/slic3r/GUI/GUI_App.cpp:1506 msgid "Advanced View Mode" msgstr "Modalità Visualizzazione Avanzata" @@ -579,219 +691,271 @@ msgstr "Modalità Visualizzazione Avanzata" msgid "Advanced: Output log" msgstr "Avanzato: Log di output" -#: src/libslic3r/PrintConfig.cpp:668 +#: src/libslic3r/PrintConfig.cpp:704 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 stable. Before purging the print head into an infill or a sacrificial object, Slic3r will always prime this amount of material into the wipe tower to produce successive infill or sacrificial object extrusions reliably." msgstr "Dopo un cambio di attrezzo, l'esatta posizione del filamento appena caricato dentro l'ugello potrebbe essere sconosciuta, e la pressione del filamento probabilmente non è ancora stabile. Prima di spurgare la testina di stampa nel riempimento o in un oggetto sacrificale, Slic3r posizionerà questo materiale in una torre di spurgo al fine di ottenere una successiva estrusione affidabile su oggetto sacrificale o riempimento." -#: src/slic3r/GUI/Tab.cpp:1994 src/libslic3r/PrintConfig.cpp:1080 +#: src/slic3r/GUI/Tab.cpp:2182 src/libslic3r/PrintConfig.cpp:1173 msgid "After layer change G-code" msgstr "G-code dopo il cambio layer" -#: src/libslic3r/PrintConfig.cpp:3398 +#: src/libslic3r/PrintConfig.cpp:3597 msgid "Align the model to the given point." msgstr "Allinea il modello al punto dato." -#: src/libslic3r/PrintConfig.cpp:3397 +#: src/libslic3r/PrintConfig.cpp:3596 msgid "Align XY" msgstr "Allinea XY" -#: src/libslic3r/PrintConfig.cpp:1631 +#: src/libslic3r/PrintConfig.cpp:1739 msgid "Aligned" msgstr "Allineato" -#: src/slic3r/GUI/ConfigWizard.cpp:290 src/slic3r/GUI/ConfigWizard.cpp:573 -#: src/slic3r/GUI/Tab.cpp:3174 +#: src/slic3r/GUI/ConfigWizard.cpp:308 src/slic3r/GUI/ConfigWizard.cpp:598 +#: src/slic3r/GUI/Tab.cpp:3507 src/slic3r/GUI/UnsavedChangesDialog.cpp:921 msgid "All" msgstr "Tutto" -#: src/libslic3r/Print.cpp:1219 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:197 +msgid "All gizmos: Rotate - left mouse button; Pan - right mouse button" +msgstr "Tutti i gizmos: Ruota - tasto destro del mouse; Panoramica - tasto destro del mouse" + +#: src/slic3r/GUI/ConfigWizard.cpp:694 +msgid "All installed printers are compatible with the selected filament." +msgstr "Tutte le stampanti installate sono compatibili con il filamento selezionato." + +#: src/libslic3r/Print.cpp:1245 msgid "All objects are outside of the print volume." msgstr "Tutti gli oggetti sono fuori dal volume di stampa." -#: src/slic3r/GUI/Plater.cpp:4669 +#: src/slic3r/GUI/Plater.cpp:4774 msgid "All objects will be removed, continue?" msgstr "Saranno rimossi tutti gli oggetti, continuare?" -#: src/slic3r/GUI/ConfigWizard.cpp:289 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:737 +msgid "All settings changes will be discarded." +msgstr "Tutte le modifiche alle impostazioni verranno eliminate." + +#: src/slic3r/GUI/ConfigWizard.cpp:307 msgid "All standard" msgstr "Tutto standard" -#: src/libslic3r/Zipper.cpp:62 +#: src/libslic3r/miniz_extension.cpp:121 msgid "allocation failed" msgstr "allocazione fallita" -#: src/slic3r/GUI/Plater.cpp:3995 +#: src/slic3r/GUI/Plater.cpp:3915 msgid "Along X axis" msgstr "Lungo asse X" -#: src/slic3r/GUI/Plater.cpp:3997 +#: src/slic3r/GUI/Plater.cpp:3917 msgid "Along Y axis" msgstr "Lungo asse Y" -#: src/slic3r/GUI/Plater.cpp:3999 +#: src/slic3r/GUI/Plater.cpp:3919 msgid "Along Z axis" msgstr "Lungo l'asse Z" -#: src/slic3r/GUI/ConfigWizard.cpp:222 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:160 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:141 +msgid "Alt + Mouse wheel" +msgstr "Alt + Rotella del mouse" + +#: src/slic3r/GUI/ConfigWizard.cpp:240 msgid "Alternate nozzles:" msgstr "Ugelli alternativi:" -#: src/slic3r/GUI/Plater.cpp:5002 -#, possible-c-format +#: src/slic3r/GUI/Preferences.cpp:163 +msgid "Always ask for unsaved changes when selecting new preset" +msgstr "Chiedere sempre riguardo le modifiche non salvate quando si seleziona un nuovo preset" + +#: src/slic3r/GUI/Plater.cpp:5135 +#, c-format msgid "AMF file exported to %s" msgstr "File AMF esportato in %s" -#: src/slic3r/GUI/GLCanvas3D.cpp:690 -msgid "An object outside the print area was detected\nResolve the current problem to continue slicing" -msgstr "È stato rilevato un oggetto al di fuori dell'area di stampa\nRisolvere il problema per continuare lo slicing" +#: src/slic3r/GUI/GLCanvas3D.cpp:638 +msgid "" +"An object outside the print area was detected.\n" +"Resolve the current problem to continue slicing." +msgstr "" +"È stato rilevato un oggetto al di fuori dell'area di stampa.\n" +"Risolvere il problema per continuare lo slicing." -#: src/slic3r/GUI/GLCanvas3D.cpp:685 -msgid "An object outside the print area was detected" -msgstr "È stato rilevato un oggetto al di fuori dell'area di stampa" +#: src/slic3r/GUI/GLCanvas3D.cpp:633 +msgid "An object outside the print area was detected." +msgstr "È stato rilevato un oggetto al di fuori dell'area di stampa." -#: src/slic3r/GUI/Tab.cpp:2943 -msgid "and it has the following unsaved changes:" -msgstr "e ha i seguenti cambiamenti non salvati:" - -#: src/slic3r/GUI/Plater.cpp:3170 +#: src/slic3r/GUI/Plater.cpp:2972 msgid "Another export job is currently running." msgstr "Un altro processo di esportazione è in corso." -#: src/slic3r/GUI/KBShortcutsDialog.cpp:168 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:169 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:162 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:163 msgid "Any arrow" msgstr "Qualunque freccia" -#: src/slic3r/GUI/Tab.cpp:965 +#: src/slic3r/GUI/Tab.cpp:1283 msgid "Any modifications should be saved as a new preset inherited from this one." msgstr "Qualunque modifica deve essere salvata come un nuovo preset ereditato da questo." -#: src/libslic3r/PrintConfig.cpp:104 +#: src/libslic3r/PrintConfig.cpp:106 msgid "API Key / Password" msgstr "Chiave API / Password" -#: src/slic3r/GUI/GUI_App.cpp:810 +#: src/slic3r/GUI/GUI_App.cpp:1493 msgid "Application preferences" msgstr "Preferenze applicazione" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:52 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1374 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:51 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1221 msgid "Apply changes" msgstr "Applica cambiamenti" -#: src/libslic3r/PrintConfig.cpp:575 src/libslic3r/PrintConfig.cpp:1708 +#: src/libslic3r/PrintConfig.cpp:611 src/libslic3r/PrintConfig.cpp:1823 msgid "approximate seconds" msgstr "secondi approssimativi" -#: src/libslic3r/PrintConfig.cpp:428 src/libslic3r/PrintConfig.cpp:854 +#: src/libslic3r/PrintConfig.cpp:464 src/libslic3r/PrintConfig.cpp:892 msgid "Archimedean Chords" msgstr "Corde di Archimede" -#: src/libslic3r/Zipper.cpp:88 +#: src/libslic3r/miniz_extension.cpp:147 msgid "archive is too large" msgstr "l'archivio è troppo grande" -#. TRN remove/delete -#: src/slic3r/GUI/Tab.cpp:3123 +#: src/slic3r/GUI/Tab.cpp:3420 msgid "Are you sure you want to %1% the selected preset?" msgstr "Sei sicuro di voler %1% il preset selezionato?" #: src/slic3r/GUI/FirmwareDialog.cpp:902 -msgid "Are you sure you want to cancel firmware flashing?\nThis could leave your printer in an unusable state!" -msgstr "Sei sicuro di voler annullare il flash del firmware?\nQuesto potrebbe lasciare la tua stampante in una condizione inutilizzabile!" +msgid "" +"Are you sure you want to cancel firmware flashing?\n" +"This could leave your printer in an unusable state!" +msgstr "" +"Sei sicuro di voler annullare il flash del firmware?\n" +"Questo potrebbe lasciare la tua stampante in una condizione inutilizzabile!" -#: src/slic3r/GUI/DoubleSlider.cpp:1903 src/slic3r/GUI/DoubleSlider.cpp:1924 +#: src/slic3r/GUI/DoubleSlider.cpp:2122 src/slic3r/GUI/DoubleSlider.cpp:2142 msgid "Are you sure you want to continue?" msgstr "Sei sicuro di voler continuare?" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1269 +#: src/slic3r/GUI/Tab.cpp:3392 +msgid "Are you sure you want to delete \"%1%\" preset from the physical printer \"%2%\"?" +msgstr "Sei sicuro di voler eliminare il preset \"%1%\" dalla stampante fisica \"%2%\"?" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:658 +msgid "Are you sure you want to delete \"%1%\" printer?" +msgstr "Sicuro di voler eliminare la stampante \"%1%\"?" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1128 msgid "Are you sure you want to do it?" msgstr "Sei sicuro di voler procedere?" -#: src/libslic3r/PrintConfig.cpp:2423 +#: src/libslic3r/PrintConfig.cpp:2566 msgid "Area fill" msgstr "Riempimento area" -#: src/slic3r/GUI/Plater.cpp:641 +#: src/slic3r/GUI/Plater.cpp:507 msgid "Around object" msgstr "Intorno all'oggetto" -#: src/slic3r/GUI/GLCanvas3D.cpp:4493 src/slic3r/GUI/KBShortcutsDialog.cpp:157 -#: src/slic3r/GUI/Plater.cpp:2754 +#: src/slic3r/GUI/GLCanvas3D.cpp:4859 src/slic3r/GUI/KBShortcutsDialog.cpp:151 +#: src/slic3r/GUI/Plater.cpp:1549 msgid "Arrange" msgstr "Disponi" -#: src/slic3r/GUI/GLCanvas3D.cpp:4493 src/slic3r/GUI/KBShortcutsDialog.cpp:158 +#: src/slic3r/GUI/GLCanvas3D.cpp:4859 src/slic3r/GUI/KBShortcutsDialog.cpp:152 msgid "Arrange selection" msgstr "Disponi selezione" -#: src/libslic3r/PrintConfig.cpp:3443 +#: src/libslic3r/PrintConfig.cpp:3642 msgid "Arrange the supplied models in a plate and merge them in a single model in order to perform actions once." msgstr "Disponi i modelli su un piano e uniscili in un singolo modello al fine di effettuare le operazioni una singola volta." -#: src/slic3r/GUI/Plater.cpp:2813 +#: src/slic3r/GUI/Jobs/ArrangeJob.cpp:149 msgid "Arranging" msgstr "Disponendo" -#: src/slic3r/GUI/Plater.cpp:2841 +#: src/slic3r/GUI/Jobs/ArrangeJob.cpp:182 msgid "Arranging canceled." msgstr "Disposizione annullata." -#: src/slic3r/GUI/Plater.cpp:2842 +#: src/slic3r/GUI/Jobs/ArrangeJob.cpp:183 msgid "Arranging done." msgstr "Disposizione completata." -#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:215 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:159 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:206 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 msgid "Arrow Down" msgstr "Freccia giù" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:166 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:160 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:217 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:229 msgid "Arrow Left" msgstr "Freccia sinistra" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:167 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:217 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:161 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:218 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:230 msgid "Arrow Right" msgstr "Freccia Destra" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:204 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:214 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:158 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:215 msgid "Arrow Up" msgstr "Freccia Su" -#: src/slic3r/GUI/GLCanvas3DManager.cpp:290 +#: src/slic3r/GUI/GUI_App.cpp:246 +msgid "Artwork model by Nora Al-Badri and Jan Nikolai Nelles" +msgstr "Modello grafico di Nora Al-Badri e Jan Nikolai Nelles" + +#: src/slic3r/GUI/OpenGLManager.cpp:265 msgid "As a workaround, you may run PrusaSlicer with a software rendered 3D graphics by running prusa-slicer.exe with the --sw_renderer parameter." msgstr "Come soluzione alternativa, è possibile eseguire PrusaSlicer con una grafica 3D di rendering software eseguendo prusa-slicer.exe con il parametro --sw_renderer." -#: src/slic3r/GUI/GUI_App.cpp:1086 src/slic3r/GUI/Plater.cpp:2313 -#: src/slic3r/GUI/Tab.cpp:2960 +#: src/slic3r/GUI/Preferences.cpp:154 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:659 +msgid "Ask for unsaved changes when closing application" +msgstr "Chiedere riguardo le modifiche non salvate alla chiusura del programma" + +#: src/slic3r/GUI/Preferences.cpp:161 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:660 +msgid "Ask for unsaved changes when selecting new preset" +msgstr "Chiedere riguardo le modifiche non salvate quando si seleziona un nuovo preset" + +#: src/slic3r/GUI/GUI_App.cpp:1878 src/slic3r/GUI/Jobs/SLAImportJob.cpp:210 +#: src/slic3r/GUI/Plater.cpp:2256 src/slic3r/GUI/Tab.cpp:3189 msgid "Attention!" msgstr "Attenzione!" -#: src/libslic3r/PrintConfig.cpp:1871 +#: src/libslic3r/PrintConfig.cpp:150 +msgid "Authorization Type" +msgstr "Tipo di autorizzazione" + +#: src/libslic3r/PrintConfig.cpp:2013 msgid "Auto generated supports" msgstr "Supporti generati automaticamente" -#: src/slic3r/GUI/Preferences.cpp:47 +#: src/slic3r/GUI/Preferences.cpp:64 msgid "Auto-center parts" msgstr "Centra automaticamente le parti" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:56 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1377 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:55 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1224 msgid "Auto-generate points" msgstr "Genera punti automaticamente" -#: src/slic3r/GUI/Plater.cpp:1157 -#, possible-c-format +#: src/slic3r/GUI/Plater.cpp:1066 +#, c-format msgid "Auto-repaired (%d errors)" msgstr "Auto-riparati (%d errori)" -#: src/slic3r/GUI/GUI_ObjectList.cpp:339 -#, possible-c-format +#: src/slic3r/GUI/GUI_ObjectList.cpp:386 +#, c-format msgid "Auto-repaired (%d errors):" msgstr "Auto-riparati (%d errori):" @@ -799,59 +963,79 @@ msgstr "Auto-riparati (%d errori):" msgid "Autodetected" msgstr "Autorilevato" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1273 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1134 msgid "Autogenerate support points" msgstr "Genera automaticamente punti di supporto" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1268 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1127 msgid "Autogeneration will erase all manually edited points." msgstr "La generazione automatica cancellerà tutti i punti editati manualmente." -#: src/slic3r/GUI/Tab.cpp:3632 +#: src/slic3r/GUI/Tab.cpp:4051 msgid "Automatic generation" msgstr "Generazione automatica" -#: src/slic3r/GUI/ConfigWizard.cpp:761 +#: src/slic3r/GUI/ConfigWizard.cpp:1120 msgid "Automatic updates" msgstr "Aggiornamenti automatici" -#: src/slic3r/GUI/MainFrame.cpp:536 +#: src/slic3r/GUI/MainFrame.cpp:1137 msgid "Automatically repair an STL file" msgstr "Ripara automaticamente un file STL" -#: src/slic3r/GUI/Tab.cpp:1171 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:129 +msgid "Autoset by angle" +msgstr "Autoset ad angolo" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:233 +msgid "Autoset custom supports" +msgstr "Autoset supporti personalizzati" + +#: src/slic3r/GUI/Tab.cpp:1501 msgid "Autospeed (advanced)" msgstr "Autovelocità (avanzato)" -#: src/libslic3r/PrintConfig.cpp:136 +#: src/libslic3r/PrintConfig.cpp:169 msgid "Avoid crossing perimeters" msgstr "Evita incrocio perimetri" -#: src/slic3r/GUI/Tab.cpp:3268 +#: src/slic3r/GUI/Tab.cpp:3705 msgid "BACK ARROW" msgstr "FRECCIA INDIETRO" -#: src/slic3r/GUI/Tab.cpp:3290 -msgid "BACK ARROW icon indicates that the settings were changed and are not equal to the last saved preset for the current option group.\nClick to reset all settings for the current option group to the last saved preset." -msgstr "L'icona FRECCIA INDIETRO indica che le impostazioni sono state cambiate e non corrispondono all'ultimo preset salvato per il seguente gruppo di opzioni.\nClicca per reimpostare all'ultimo preset salvato tutte le impostazioni per il seguente gruppo di opzioni." +#: src/slic3r/GUI/Tab.cpp:3727 +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" +"Click to reset all settings for the current option group to the last saved preset." +msgstr "" +"L'icona FRECCIA INDIETRO indica che le impostazioni sono state cambiate e non corrispondono all'ultimo preset salvato per il seguente gruppo di opzioni.\n" +"Clicca per reimpostare all'ultimo preset salvato tutte le impostazioni per il seguente gruppo di opzioni." -#: src/slic3r/GUI/Tab.cpp:3304 -msgid "BACK ARROW icon indicates that the value was changed and is not equal to the last saved preset.\nClick to reset current value to the last saved preset." -msgstr "L'icona FRECCIA ALL'INDIETRO indica che il valore è stato cambiato e non corrisponde all'ultimo preset salvato.\nCliccare per reimpostare il valore corrente all'ultimo preset salvato." +#: src/slic3r/GUI/Tab.cpp:3741 +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 "" +"L'icona FRECCIA ALL'INDIETRO indica che il valore è stato cambiato e non corrisponde all'ultimo preset salvato.\n" +"Cliccare per reimpostare il valore corrente all'ultimo preset salvato." -#: src/slic3r/GUI/Preferences.cpp:55 +#: src/slic3r/GUI/Preferences.cpp:72 msgid "Background processing" msgstr "Elaborazione in background" -#: src/slic3r/GUI/GUI_ObjectList.cpp:351 +#: src/slic3r/GUI/GUI_ObjectList.cpp:398 msgid "backwards edges" msgstr "spigoli invertiti" -#: src/slic3r/GUI/MainFrame.cpp:174 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:60 +msgid "Balanced" +msgstr "Bilanciato" + +#: src/slic3r/GUI/MainFrame.cpp:535 src/slic3r/GUI/MainFrame.cpp:537 msgid "based on Slic3r" msgstr "basato su Slic3r" -#: src/slic3r/GUI/Tab.cpp:1439 +#: src/slic3r/GUI/Tab.cpp:1785 msgid "Bed" msgstr "Piano" @@ -863,7 +1047,7 @@ msgstr "Modello piano personalizzato" msgid "Bed custom texture" msgstr "Forma piano personalizzata" -#: src/slic3r/GUI/BedShapeDialog.hpp:59 src/slic3r/GUI/ConfigWizard.cpp:929 +#: src/slic3r/GUI/BedShapeDialog.hpp:98 src/slic3r/GUI/ConfigWizard.cpp:1295 msgid "Bed Shape" msgstr "Forma Piano" @@ -871,23 +1055,23 @@ msgstr "Forma Piano" msgid "Bed shape" msgstr "Forma piano" -#: src/slic3r/GUI/ConfigWizard.cpp:929 +#: src/slic3r/GUI/ConfigWizard.cpp:1295 msgid "Bed Shape and Size" msgstr "Forma e dimensioni del piano di stampa" -#: src/libslic3r/PrintConfig.cpp:147 +#: src/libslic3r/PrintConfig.cpp:181 msgid "Bed temperature" msgstr "Temperatura piano" -#: src/libslic3r/PrintConfig.cpp:145 +#: src/libslic3r/PrintConfig.cpp:178 msgid "Bed temperature for layers after the first one. Set this to zero to disable bed temperature control commands in the output." msgstr "Temperatura per i layer dopo il primo. Imposta a zero per disattivare i comandi di controllo della temperatura del piano di stampa in output." -#: src/slic3r/GUI/ConfigWizard.cpp:1051 +#: src/slic3r/GUI/ConfigWizard.cpp:1417 msgid "Bed Temperature:" msgstr "Temperatura piano di stampa:" -#: src/slic3r/GUI/Tab.cpp:1988 src/libslic3r/PrintConfig.cpp:153 +#: src/slic3r/GUI/Tab.cpp:2175 src/libslic3r/PrintConfig.cpp:187 msgid "Before layer change G-code" msgstr "G-code prima del cambio layer" @@ -895,143 +1079,191 @@ msgstr "G-code prima del cambio layer" msgid "Before roll back" msgstr "Prima di tornare indietro" -#: src/slic3r/GUI/Plater.cpp:640 +#: src/slic3r/GUI/Plater.cpp:506 msgid "Below object" msgstr "Sotto l'oggetto" -#: src/libslic3r/PrintConfig.cpp:1578 +#: src/libslic3r/PrintConfig.cpp:1686 msgid "Below Z" msgstr "Z Sotto" -#: src/libslic3r/PrintConfig.cpp:164 +#: src/libslic3r/PrintConfig.cpp:198 msgid "Between objects G-code" msgstr "G-code tra gli oggetti" -#: src/slic3r/GUI/Tab.cpp:2006 +#: src/slic3r/GUI/Tab.cpp:2196 msgid "Between objects G-code (for sequential printing)" msgstr "G-code tra gli oggetti (per stampa sequenziale)" -#: src/libslic3r/PrintConfig.cpp:2489 src/libslic3r/PrintConfig.cpp:2490 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:242 +msgid "Block" +msgstr "Blocco" + +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:32 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:383 +msgid "Block seam" +msgstr "Blocca giunzione" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:373 +msgid "Block supports" +msgstr "Blocca supporti" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:292 +msgid "Block supports by angle" +msgstr "Blocca supporti all'angolo" + +#: src/libslic3r/PrintConfig.cpp:2632 src/libslic3r/PrintConfig.cpp:2633 msgid "Bottle volume" msgstr "Volume bottiglia" -#: src/libslic3r/PrintConfig.cpp:2496 src/libslic3r/PrintConfig.cpp:2497 +#: src/libslic3r/PrintConfig.cpp:2639 src/libslic3r/PrintConfig.cpp:2640 msgid "Bottle weight" msgstr "Peso bottiglia" #. 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:665 src/libslic3r/PrintConfig.cpp:174 -#: src/libslic3r/PrintConfig.cpp:183 +#: src/slic3r/GUI/MainFrame.cpp:962 src/slic3r/GUI/MainFrame.cpp:1282 +#: src/libslic3r/PrintConfig.cpp:208 src/libslic3r/PrintConfig.cpp:217 msgid "Bottom" msgstr "Inferiore" -#: src/libslic3r/PrintConfig.cpp:435 +#: src/libslic3r/PrintConfig.cpp:471 msgid "Bottom fill pattern" msgstr "Trama riempimento inferiore" -#: src/slic3r/GUI/PresetHints.cpp:342 +#: src/slic3r/GUI/PresetHints.cpp:340 msgid "Bottom is open." msgstr "La parte inferiore è aperta." -#: src/slic3r/GUI/PresetHints.cpp:336 +#: src/slic3r/GUI/PresetHints.cpp:334 msgid "Bottom shell is %1% mm thick for layer height %2% mm." msgstr "Il guscio inferiore è spesso %1% mm per l'altezza layer %2% mm." -#: src/libslic3r/PrintConfig.cpp:177 +#: src/libslic3r/PrintConfig.cpp:211 msgid "Bottom solid layers" msgstr "Layer solidi sul fondo" -#: src/slic3r/GUI/MainFrame.cpp:665 +#: src/slic3r/GUI/MainFrame.cpp:962 src/slic3r/GUI/MainFrame.cpp:1282 msgid "Bottom View" msgstr "Vista inferiore" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1432 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1464 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1468 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1563 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1595 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1599 msgid "Box" msgstr "Cubo" -#: src/libslic3r/PrintConfig.cpp:193 +#: src/libslic3r/PrintConfig.cpp:227 msgid "Bridge" msgstr "Bridge" -#: src/libslic3r/PrintConfig.cpp:222 +#: src/libslic3r/PrintConfig.cpp:256 msgid "Bridge flow ratio" msgstr "Rapporto flusso Bridge" -#: src/slic3r/GUI/GUI_Preview.cpp:243 src/libslic3r/ExtrusionEntity.cpp:316 +#: src/slic3r/GUI/GUI_Preview.cpp:308 src/libslic3r/ExtrusionEntity.cpp:321 +#: src/libslic3r/ExtrusionEntity.cpp:350 msgid "Bridge infill" msgstr "Riempimento Bridge" -#: src/libslic3r/PrintConfig.cpp:234 +#: src/libslic3r/PrintConfig.cpp:268 msgid "Bridges" msgstr "Bridge" -#: src/libslic3r/PrintConfig.cpp:213 +#: src/libslic3r/PrintConfig.cpp:247 msgid "Bridges fan speed" msgstr "Velocità ventola Bridge" -#: src/libslic3r/PrintConfig.cpp:202 +#: src/libslic3r/PrintConfig.cpp:236 msgid "Bridging angle" msgstr "Angolo Bridge" -#: src/libslic3r/PrintConfig.cpp:204 +#: 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 "Ignora angolo Bridging. Se lasciato a zero, l'angolo di bridging verrà calcolato automaticamente. Altrimenti l'angolo fornito sarà utilizzato per tutti i bridge. Usa 180° per l'angolo zero." -#: src/slic3r/GUI/PresetHints.cpp:219 +#: src/slic3r/GUI/PresetHints.cpp:218 msgid "Bridging volumetric" msgstr "Bridging volumetrico" -#: src/slic3r/GUI/Plater.cpp:534 src/slic3r/GUI/Tab.cpp:1117 +#: src/slic3r/GUI/Plater.cpp:400 src/slic3r/GUI/Tab.cpp:1446 msgid "Brim" msgstr "Brim" -#: src/libslic3r/PrintConfig.cpp:244 +#: src/libslic3r/PrintConfig.cpp:278 msgid "Brim width" msgstr "Larghezza brim" -#: src/slic3r/GUI/FirmwareDialog.cpp:805 src/slic3r/GUI/Tab.cpp:1658 -#: src/slic3r/GUI/Tab.cpp:1721 +#: src/slic3r/GUI/FirmwareDialog.cpp:805 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:271 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:327 msgid "Browse" msgstr "Naviga" -#: src/libslic3r/Zipper.cpp:82 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:45 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:28 +msgid "Brush shape" +msgstr "Forma Pennello" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:44 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:27 +msgid "Brush size" +msgstr "Dimensione Pennello" + +#: src/libslic3r/miniz_extension.cpp:141 msgid "buffer too small" msgstr "buffer troppo piccolo" +#: src/slic3r/GUI/GUI_App.cpp:1152 +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 "" +"Ma da questa versione di PrusaSlicer non mostriamo più queste informazioni nelle impostazioni della stampante.\n" +"Le impostazioni saranno disponibili nelle impostazioni delle stampanti fisiche." + #: src/slic3r/GUI/ButtonsDescription.cpp:16 msgid "Buttons And Text Colors Description" msgstr "Descrizione colori testo e pulsanti" -#: src/slic3r/GUI/PresetHints.cpp:223 +#: src/slic3r/GUI/GUI_App.cpp:1084 +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 "" +"Per impostazione predefinita le nuove stampanti saranno denominate \"Printer N\" durante la loro creazione.\n" +"Nota: Questo nome può essere cambiato in seguito dalle impostazioni delle stampanti fisiche" + +#: src/slic3r/GUI/PresetHints.cpp:222 msgid "by the print profile maximum" msgstr "secondo il massimo del profilo di stampa" -#: src/slic3r/GUI/Preferences.cpp:113 +#: src/slic3r/GUI/Preferences.cpp:178 msgid "Camera" msgstr "Camera" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:144 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:140 msgid "Camera view" msgstr "Vista camera" -#: src/slic3r/GUI/ConfigWizard.cpp:1982 src/slic3r/GUI/FirmwareDialog.cpp:151 +#: src/slic3r/GUI/ConfigWizard.cpp:2493 src/slic3r/GUI/FirmwareDialog.cpp:151 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:245 #: src/slic3r/GUI/ProgressStatusBar.cpp:26 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:644 msgid "Cancel" msgstr "Annulla" -#: src/slic3r/GUI/PrintHostDialogs.cpp:157 +#: src/slic3r/GUI/PrintHostDialogs.cpp:155 msgid "Cancel selected" msgstr "Cancella selezione" -#: src/slic3r/GUI/Plater.cpp:3669 src/slic3r/GUI/PrintHostDialogs.cpp:233 +#: src/slic3r/GUI/Plater.cpp:3589 src/slic3r/GUI/PrintHostDialogs.cpp:233 msgid "Cancelled" msgstr "Annullato" -#: src/slic3r/GUI/Plater.cpp:3153 src/slic3r/GUI/PrintHostDialogs.cpp:232 +#: src/slic3r/GUI/Plater.cpp:2953 src/slic3r/GUI/PrintHostDialogs.cpp:232 msgid "Cancelling" msgstr "Annullamento" @@ -1043,92 +1275,116 @@ msgstr "Annullo in corso..." msgid "Cannot calculate extrusion width for %1%: Variable \"%2%\" not accessible." msgstr "Non è possibile calcolare la larghezza di estrusione per %1%: Variabile \"%2%\" non accessibile." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3017 -msgid "Cannot insert a new layer range after the current layer range.\nCurrent layer range overlaps with the next layer range." -msgstr "Non è possibile inserire un nuovo intervallo layer dopo quello attuale.\nL'intervallo layer attuale si sovrappone alla quello successivo." +#: src/slic3r/GUI/GUI_ObjectList.cpp:3400 +msgid "" +"Cannot insert a new layer range after the current layer range.\n" +"Current layer range overlaps with the next layer range." +msgstr "" +"Non è possibile inserire un nuovo intervallo layer dopo quello attuale.\n" +"L'intervallo layer attuale si sovrappone alla quello successivo." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3008 -msgid "Cannot insert a new layer range after the current layer range.\nThe next layer range is too thin to be split to two\nwithout violating the minimum layer height." -msgstr "Non è possibile inserire un nuovo intervallo layer dopo quello attuale.\nL'intervallo layer successivo è troppo sottile per essere diviso in due\nsenza violare l'altezza layer minima." +#: src/slic3r/GUI/GUI_ObjectList.cpp:3391 +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 "" +"Non è possibile inserire un nuovo intervallo layer dopo quello attuale.\n" +"L'intervallo layer successivo è troppo sottile per essere diviso in due\n" +"senza violare l'altezza layer minima." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3012 -msgid "Cannot insert a new layer range between the current and the next layer range.\nThe gap between the current layer range and the next layer range\nis thinner than the minimum layer height allowed." -msgstr "Non è possibile inserire un nuovo intervallo layer tra quello attuale e quello successivo.\nLo spazio tra l'intervallo layer corrente e quello successivo\nè più sottile dell'altezza layer minima consentita." +#: src/slic3r/GUI/GUI_ObjectList.cpp:3395 +msgid "" +"Cannot insert a new layer range between the current and the next layer range.\n" +"The gap between the current layer range and the next layer range\n" +"is thinner than the minimum layer height allowed." +msgstr "" +"Non è possibile inserire un nuovo intervallo layer tra quello attuale e quello successivo.\n" +"Lo spazio tra l'intervallo layer corrente e quello successivo\n" +"è più sottile dell'altezza layer minima consentita." -#: src/slic3r/GUI/Tab.cpp:3073 +#: src/slic3r/GUI/SavePresetDialog.cpp:137 msgid "Cannot overwrite a system profile." msgstr "Impossibile sovrascrivere un profilo di sistema." -#: src/slic3r/GUI/Tab.cpp:3077 +#: src/slic3r/GUI/SavePresetDialog.cpp:142 msgid "Cannot overwrite an external profile." msgstr "Impossibile sovrascrivere un profilo esterno." -#: src/libslic3r/SLAPrint.cpp:613 +#: src/libslic3r/SLAPrint.cpp:627 msgid "Cannot proceed without support points! Add support points or disable support generation." msgstr "Impossibile procedere senza punti di supporto! Aggiungi i punti di supporto o disattiva la generazione supporti." -#: src/slic3r/GUI/Tab.cpp:1834 +#: src/slic3r/GUI/Tab.cpp:2068 src/slic3r/GUI/UnsavedChangesDialog.cpp:1066 msgid "Capabilities" msgstr "Caratteristiche" -#: src/slic3r/GUI/GUI_App.cpp:801 +#: src/slic3r/GUI/GUI_App.cpp:1481 msgid "Capture a configuration snapshot" msgstr "Cattura un'istantanea della configurazione" -#: src/libslic3r/PrintConfig.cpp:3424 +#: src/slic3r/GUI/ImGuiWrapper.cpp:801 src/slic3r/GUI/Search.cpp:458 +msgid "Category" +msgstr "Categoria" + +#: src/libslic3r/PrintConfig.cpp:3623 msgid "Center" msgstr "Centro" -#: src/libslic3r/PrintConfig.cpp:3425 +#: src/libslic3r/PrintConfig.cpp:3624 msgid "Center the print around the given center." msgstr "Centra la stampa sul centro dato." -#: src/slic3r/GUI/Tab.cpp:1728 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:329 msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" msgstr "File di certificato (*.crt, *.pem)|*.crt;*.pem|All files|*.*" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:180 +#: src/slic3r/GUI/SavePresetDialog.cpp:313 +msgid "Change \"%1%\" to \"%2%\" for this physical printer \"%3%\"" +msgstr "Cambia \"%1%\" a \"%2%\" per questa stampante fisica \"%3%\"" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:174 msgid "Change camera type (perspective, orthographic)" msgstr "Cambia tipo di visuale (prospettica, ortografica)" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:885 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:693 msgid "Change drainage hole diameter" msgstr "Modifica il diametro dei fori di drenaggio" -#: src/slic3r/GUI/DoubleSlider.cpp:1144 src/slic3r/GUI/GUI_ObjectList.cpp:1671 +#: src/slic3r/GUI/DoubleSlider.cpp:1273 src/slic3r/GUI/GUI_ObjectList.cpp:1800 msgid "Change extruder" msgstr "Cambia estrusore" -#: src/slic3r/GUI/GUI_ObjectList.cpp:536 +#: src/slic3r/GUI/GUI_ObjectList.cpp:574 msgid "Change Extruder" msgstr "Cambio estrusore" -#: src/slic3r/GUI/DoubleSlider.cpp:1145 +#: src/slic3r/GUI/DoubleSlider.cpp:1274 msgid "Change extruder (N/A)" msgstr "Cambio estrusore (N/A)" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3997 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4484 msgid "Change Extruders" msgstr "Cambio Estrusori" -#: src/slic3r/GUI/GUI_ObjectSettings.cpp:152 -#, possible-c-format +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:157 +#, c-format msgid "Change Option %s" msgstr "Modifica Opzione %s" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3558 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4021 msgid "Change Part Type" msgstr "Modifica il tipo di Parte" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:820 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:694 msgid "Change point head diameter" msgstr "Modifica diametro punta della testa" -#: src/slic3r/GUI/Plater.cpp:3944 +#: src/slic3r/GUI/Plater.cpp:3862 msgid "Change the number of instances of the selected object" msgstr "Cambia il numero di istanze dell'oggetto selezionato" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1589 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1718 msgid "Change type" msgstr "Cambia tipo" @@ -1136,125 +1392,172 @@ msgstr "Cambia tipo" msgid "Changelog && Download" msgstr "Changelog && Download" -#: src/slic3r/GUI/GUI_App.cpp:442 +#: src/slic3r/GUI/GUI_App.cpp:1245 msgid "Changing of an application language" msgstr "Cambio lingua applicazione" -#: src/slic3r/GUI/ConfigWizard.cpp:769 src/slic3r/GUI/Preferences.cpp:64 +#: src/slic3r/GUI/ConfigWizard.cpp:1128 src/slic3r/GUI/Preferences.cpp:81 msgid "Check for application updates" msgstr "Verifica la presenza di aggiornamenti" -#: src/slic3r/GUI/GUI_App.cpp:802 +#: src/slic3r/GUI/GUI_App.cpp:1482 msgid "Check for configuration updates" msgstr "Controlla aggiornamenti di configurazione" -#: src/slic3r/GUI/GUI_App.cpp:802 +#: src/slic3r/GUI/GUI_App.cpp:1482 msgid "Check for updates" msgstr "Cerca aggiorna&menti" -#: src/slic3r/GUI/BedShapeDialog.cpp:532 +#: 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):" -#: src/slic3r/GUI/MainFrame.cpp:773 +#: src/slic3r/GUI/MainFrame.cpp:1474 msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" msgstr "Scegli un file da processare (STL/OBJ/AMF/3MF/PRUSA):" -#: src/slic3r/GUI/BedShapeDialog.cpp:555 +#: src/slic3r/GUI/BedShapeDialog.cpp:631 msgid "Choose an STL file to import bed model from:" msgstr "Scegli un file STL da cui importare il modello del piano:" -#: src/slic3r/GUI/BedShapeDialog.cpp:487 +#: src/slic3r/GUI/BedShapeDialog.cpp:563 msgid "Choose an STL file to import bed shape from:" msgstr "Scegli un file STL da cui importare la forma del piano:" -#: src/slic3r/GUI/GUI_App.cpp:555 +#: src/slic3r/GUI/GUI_App.cpp:1208 msgid "Choose one file (3MF/AMF):" msgstr "Seleziona un file (3MF/AMF):" -#: src/slic3r/GUI/GUI_App.cpp:567 +#: src/slic3r/GUI/GUI_App.cpp:1233 +msgid "Choose one file (GCODE/.GCO/.G/.ngc/NGC):" +msgstr "Scegliere un file (GCODE/.GCO/.G/.ngc/NGC):" + +#: src/slic3r/GUI/GUI_App.cpp:1220 msgid "Choose one or more files (STL/OBJ/AMF/3MF/PRUSA):" msgstr "Seleziona uno o più file (STL/OBJ/AMF/3MF/PRUSA):" -#: src/slic3r/GUI/ConfigWizard.cpp:895 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:35 +msgid "Choose SLA archive:" +msgstr "Scegliere l'archivio SLA:" + +#: src/slic3r/GUI/ConfigWizard.cpp:1261 msgid "Choose the type of firmware used by your printer." msgstr "Indica il firmware usato dalla tua stampante." -#: src/slic3r/GUI/BedShapeDialog.cpp:89 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:53 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:36 +msgid "Circle" +msgstr "Cerchio" + +#: src/slic3r/GUI/BedShapeDialog.cpp:142 msgid "Circular" msgstr "Circolare" -#: src/slic3r/GUI/GLCanvas3D.cpp:4624 src/slic3r/GUI/GLCanvas3D.cpp:4657 -msgid "Click right mouse button to open History" -msgstr "Fai click destro per aprire la Storia" +#: 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" -#: src/slic3r/GUI/GUI_ObjectList.cpp:404 +#: src/slic3r/GUI/GUI_ObjectList.cpp:451 msgid "Click the icon to change the object printable property" msgstr "Clicca l'icona per cambiare le proprietà di stampa dell'oggetto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:398 +#: src/slic3r/GUI/GUI_ObjectList.cpp:445 msgid "Click the icon to change the object settings" msgstr "Fare clic sull'icona per modificare le impostazioni dell'oggetto" -#: src/slic3r/GUI/Plater.cpp:343 +#: src/slic3r/GUI/PresetComboBoxes.cpp:566 msgid "Click to edit preset" msgstr "Clicca per modificare il preset" -#: src/libslic3r/PrintConfig.cpp:252 +#: src/slic3r/GUI/GCodeViewer.cpp:2071 +msgid "Click to hide" +msgstr "Fare clic per nascondere" + +#: src/slic3r/GUI/GCodeViewer.cpp:2071 +msgid "Click to show" +msgstr "Clic per mostrare" + +#: src/libslic3r/PrintConfig.cpp:286 msgid "Clip multi-part objects" msgstr "Collega oggetti multi-part" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:50 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:58 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:42 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:25 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:57 msgid "Clipping of view" -msgstr "Ritaglio della vista" +msgstr "Vista in sezione" #: src/slic3r/GUI/FirmwareDialog.cpp:852 -#: src/slic3r/GUI/Mouse3DController.cpp:364 -#: src/slic3r/GUI/PrintHostDialogs.cpp:161 +#: src/slic3r/GUI/Mouse3DController.cpp:353 +#: src/slic3r/GUI/PrintHostDialogs.cpp:159 msgid "Close" msgstr "Chiudi" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:45 -#: src/libslic3r/PrintConfig.cpp:2934 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:44 +#: src/libslic3r/PrintConfig.cpp:3098 msgid "Closing distance" msgstr "Distanza di chiusura" -#: src/slic3r/GUI/Plater.cpp:1260 src/libslic3r/PrintConfig.cpp:582 +#: src/slic3r/GUI/MainFrame.cpp:1297 src/slic3r/GUI/Plater.cpp:2144 +msgid "Collapse sidebar" +msgstr "Riduci barra laterale" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:180 +msgid "Collapse/Expand the sidebar" +msgstr "Riduci/Espandi barra laterale" + +#: src/slic3r/GUI/Plater.cpp:1198 src/libslic3r/PrintConfig.cpp:618 msgid "Color" msgstr "Colore" -#: src/slic3r/GUI/DoubleSlider.cpp:1005 +#: src/slic3r/GUI/GCodeViewer.cpp:2410 src/slic3r/GUI/GCodeViewer.cpp:2438 +msgid "Color change" +msgstr "Cambio colore" + +#: src/slic3r/GUI/DoubleSlider.cpp:1130 msgid "Color change (\"%1%\")" msgstr "Cambio colore (\"%1%\")" -#: src/slic3r/GUI/DoubleSlider.cpp:1006 +#: src/slic3r/GUI/DoubleSlider.cpp:1131 msgid "Color change (\"%1%\") for Extruder %2%" msgstr "Cambio colore (\"%1%\") per Estrusore %2%" -#: src/slic3r/GUI/GLCanvas3D.cpp:995 -#, possible-c-format +#: src/slic3r/GUI/GLCanvas3D.cpp:1001 +#, c-format msgid "Color change for Extruder %d at %.2f mm" msgstr "Cambio colore per Estrusore %d a %.2f mm" -#: src/slic3r/GUI/GUI_Preview.cpp:228 src/slic3r/GUI/GUI_Preview.cpp:572 -#: src/libslic3r/GCode/PreviewData.cpp:359 +#: src/slic3r/GUI/Tab.cpp:2203 +msgid "Color Change G-code" +msgstr "G-code cambio colore" + +#: src/libslic3r/PrintConfig.cpp:1960 +msgid "Color change G-code" +msgstr "G-code cambio colore" + +#: src/slic3r/GUI/GCodeViewer.cpp:2531 src/slic3r/GUI/GUI_Preview.cpp:1475 +msgid "Color changes" +msgstr "Cambi colore" + +#: src/slic3r/GUI/GCodeViewer.cpp:2242 src/slic3r/GUI/GUI_Preview.cpp:282 +#: src/slic3r/GUI/GUI_Preview.cpp:784 src/libslic3r/GCode/PreviewData.cpp:364 msgid "Color Print" msgstr "Color Print (Stampa a Colori)" -#: src/libslic3r/PrintConfig.cpp:260 +#: src/libslic3r/PrintConfig.cpp:294 msgid "Colorprint height" msgstr "Altezza Colorprint" -#: src/libslic3r/PrintConfig.cpp:990 +#: src/libslic3r/PrintConfig.cpp:1034 msgid "Combine infill every" msgstr "Combina riempimento ogni" -#: src/libslic3r/PrintConfig.cpp:995 +#: src/libslic3r/PrintConfig.cpp:1039 msgid "Combine infill every n layers" msgstr "Combina riempimento ogni n layer" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:154 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:148 msgid "Commands" msgstr "Comandi" @@ -1262,23 +1565,23 @@ msgstr "Comandi" msgid "Comment:" msgstr "Commento:" -#: src/slic3r/GUI/Tab.cpp:56 src/libslic3r/PrintConfig.cpp:280 +#: src/slic3r/GUI/Tab.cpp:107 src/libslic3r/PrintConfig.cpp:314 msgid "Compatible print profiles" msgstr "Profili di stampa compatibili" -#: src/libslic3r/PrintConfig.cpp:286 +#: src/libslic3r/PrintConfig.cpp:320 msgid "Compatible print profiles condition" msgstr "Condizioni profili di stampa compatibili" -#: src/slic3r/GUI/Tab.cpp:50 src/libslic3r/PrintConfig.cpp:265 +#: src/slic3r/GUI/Tab.cpp:101 src/libslic3r/PrintConfig.cpp:299 msgid "Compatible printers" msgstr "Stampanti compatibili" -#: src/libslic3r/PrintConfig.cpp:271 +#: src/libslic3r/PrintConfig.cpp:305 msgid "Compatible printers condition" msgstr "Condizioni di stampante compatibile" -#: src/libslic3r/PrintConfig.cpp:304 +#: src/libslic3r/PrintConfig.cpp:338 msgid "Complete individual objects" msgstr "Completa singoli oggetti" @@ -1286,27 +1589,27 @@ msgstr "Completa singoli oggetti" msgid "Completed" msgstr "Completato" -#: src/libslic3r/Zipper.cpp:54 +#: src/libslic3r/miniz_extension.cpp:113 msgid "compression failed" msgstr "compressione fallita" -#: src/libslic3r/PrintConfig.cpp:426 src/libslic3r/PrintConfig.cpp:849 +#: src/libslic3r/PrintConfig.cpp:462 src/libslic3r/PrintConfig.cpp:887 msgid "Concentric" msgstr "Concentrico" -#: src/slic3r/GUI/ConfigWizard.cpp:2110 +#: src/slic3r/GUI/ConfigWizard.cpp:2625 msgid "Configuration &Assistant" msgstr "&Assistente Configurazione" -#: src/slic3r/GUI/ConfigWizard.cpp:2113 +#: src/slic3r/GUI/ConfigWizard.cpp:2628 msgid "Configuration &Wizard" msgstr "Co&nfigurazione guidata" -#: src/slic3r/GUI/ConfigWizard.cpp:2109 +#: src/slic3r/GUI/ConfigWizard.cpp:2624 msgid "Configuration Assistant" msgstr "Assistente configurazione" -#: src/libslic3r/PrintConfig.cpp:1316 +#: src/libslic3r/PrintConfig.cpp:1424 msgid "Configuration notes" msgstr "Note di configurazione" @@ -1322,11 +1625,15 @@ msgstr "Aggiornamento di configurazione" msgid "Configuration update is available" msgstr "Aggiornamento di configurazione disponibile" -#: src/slic3r/GUI/UpdateDialogs.cpp:303 +#: src/slic3r/GUI/NotificationManager.hpp:321 +msgid "Configuration update is available." +msgstr "Aggiornamento di configurazione disponibile." + +#: src/slic3r/GUI/UpdateDialogs.cpp:304 msgid "Configuration updates" msgstr "Aggiornamenti di configurazione" -#: src/slic3r/GUI/ConfigWizard.cpp:2112 +#: src/slic3r/GUI/ConfigWizard.cpp:2627 msgid "Configuration Wizard" msgstr "Configurazione Guidata" @@ -1334,15 +1641,11 @@ msgstr "Configurazione Guidata" msgid "Confirmation" msgstr "Conferma" -#: src/slic3r/GUI/Tab.cpp:1931 -msgid "Connection failed." -msgstr "Connessione fallita." - -#: src/slic3r/GUI/Tab.cpp:3627 +#: src/slic3r/GUI/Tab.cpp:4046 msgid "Connection of the support sticks and junctions" msgstr "Connessione delle barre di supporto e giunzioni" -#: src/slic3r/Utils/AstroBox.cpp:83 +#: src/slic3r/Utils/AstroBox.cpp:84 msgid "Connection to AstroBox works correctly." msgstr "La connessione ad AstroBox funziona correttamente." @@ -1358,124 +1661,136 @@ msgstr "Connessione a FlashAir correttamente funzionante e caricamento abilitato msgid "Connection to OctoPrint works correctly." msgstr "Connessione con OctoPrint funzionante." -#: src/slic3r/GUI/Tab.cpp:1928 -msgid "Connection to printer works correctly." -msgstr "Connessione con la stampante funzionante." +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:260 +msgid "Connection to printers connected via the print host failed." +msgstr "Collegamento alle stampanti collegate tramite l'host di stampa fallito." -#: src/slic3r/Utils/OctoPrint.cpp:176 +#: src/slic3r/Utils/OctoPrint.cpp:185 msgid "Connection to Prusa SL1 works correctly." msgstr "La connessione a Prusa SL1 funziona correttamente." -#: src/libslic3r/PrintConfig.cpp:1909 +#: src/libslic3r/PrintConfig.cpp:2051 msgid "Contact Z distance" msgstr "Distanza di contatto Z" -#: src/slic3r/GUI/AboutDialog.cpp:261 +#: src/slic3r/GUI/AboutDialog.cpp:286 msgid "Contributions by Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik and numerous others." msgstr "Con il contributo di Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik e molti altri." -#: src/libslic3r/PrintConfig.cpp:2659 +#: src/slic3r/GUI/GUI_App.cpp:245 +msgid "Contributions by Vojtech Bubnik, Enrico Turri, Oleksandra Iushchenko, Tamas Meszaros, Lukas Matena, Vojtech Kral, David Kocik and numerous others." +msgstr "Contributi di Vojtech Bubnik, Enrico Turri, Oleksandra Iushchenko, Tamas Meszaros, Lukas Matena, Vojtech Kral, David Kocik e molti altri." + +#: src/libslic3r/PrintConfig.cpp:2823 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 "Controlla il tipo di bridge tra due pilastri adiacenti. Può essere zig-zag, croce (doppio zig-zag) o dinamico, che passerà automaticamente tra i due a seconda della distanza tra i due pilastri." -#: src/slic3r/GUI/Tab.cpp:1444 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1858 src/slic3r/GUI/Plater.cpp:4886 +msgid "Convert from imperial units" +msgstr "Convertire da unità imperiali" + +#: src/slic3r/GUI/Tab.cpp:1790 msgid "Cooling" msgstr "Raffreddamento" -#: src/libslic3r/PrintConfig.cpp:660 +#: src/libslic3r/PrintConfig.cpp:696 msgid "Cooling moves are gradually accelerating beginning at this speed." msgstr "I movimenti di raffreddamento accelerano gradualmente partendo da questa velocità." -#: src/libslic3r/PrintConfig.cpp:679 +#: src/libslic3r/PrintConfig.cpp:715 msgid "Cooling moves are gradually accelerating towards this speed." msgstr "I movimenti di raffreddamento accelerano gradualmente verso questa velocità." -#: src/slic3r/GUI/Tab.cpp:1465 +#: src/slic3r/GUI/Tab.cpp:1811 msgid "Cooling thresholds" msgstr "Soglie di raffreddamento" -#: src/libslic3r/PrintConfig.cpp:327 +#: src/libslic3r/PrintConfig.cpp:361 msgid "Cooling tube length" msgstr "Lunghezza del tubo di raffreddamento" -#: src/libslic3r/PrintConfig.cpp:319 +#: src/libslic3r/PrintConfig.cpp:353 msgid "Cooling tube position" msgstr "Posizione tubo di raffreddamento" -#: src/slic3r/GUI/Plater.cpp:4752 +#: src/slic3r/GUI/Plater.cpp:4856 msgid "Copies of the selected object" msgstr "Copie dell'oggetto selezionato" -#: src/slic3r/GUI/GLCanvas3D.cpp:4505 +#: src/slic3r/GUI/GLCanvas3D.cpp:4871 msgid "Copy" msgstr "Copia" -#: src/slic3r/GUI/MainFrame.cpp:589 +#: src/slic3r/GUI/MainFrame.cpp:1195 msgid "Copy selection to clipboard" msgstr "Copia selezione negli appunti" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:132 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:127 msgid "Copy to clipboard" msgstr "Copia negli appunti" -#: src/slic3r/GUI/SysInfoDialog.cpp:154 +#: src/slic3r/GUI/SysInfoDialog.cpp:177 msgid "Copy to Clipboard" msgstr "Copia negli appunti" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:121 +#: 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." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:118 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:153 msgid "Copying of the temporary G-code has finished but the original code at %1% couldn't be opened during copy check. The output G-code is at %2%.tmp." msgstr "Copia del G-code temporaneo completata ma non è stato possibile aprire il codice originale su %1% durante il controllo copia. Il G-code di output è su %2%.tmp." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:480 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:522 msgid "Copying of the temporary G-code to the output G-code failed" msgstr "Copia del G-code temporaneo nel G-code di output non riuscita" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:109 -msgid "Copying of the temporary G-code to the output G-code failed. Maybe the SD card is write locked?" -msgstr "Copia del G-code temporaneo nel G-code di output non riuscita. Forse la scheda SD ha la sicura per la scrittura?" +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:163 +msgid "" +"Copying of the temporary G-code to the output G-code failed. Maybe the SD card is write locked?\n" +"Error message: %1%" +msgstr "" +"Copia del G-code temporaneo sul G-code di uscita non riuscita. Forse la scheda SD è bloccata in scrittura?\n" +"Messaggio di errore: %1%" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:112 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:147 msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp." msgstr "Copia del G-code temporaneo nel G-code di output non riuscita. Potrebbe esserci un problema nel dispositivo di destinazione, prova una nuova esportazione con un dispositivo diverso. Il file G-code corrotto è su %1%.tmp." -#: src/slic3r/GUI/AboutDialog.cpp:127 src/slic3r/GUI/AboutDialog.cpp:256 +#: src/slic3r/GUI/AboutDialog.cpp:139 src/slic3r/GUI/AboutDialog.cpp:281 msgid "Copyright" msgstr "Copyright" -#: src/libslic3r/PrintConfig.cpp:2571 src/libslic3r/PrintConfig.cpp:2572 +#: src/libslic3r/PrintConfig.cpp:2714 src/libslic3r/PrintConfig.cpp:2715 msgid "Correction for expansion" msgstr "Correzione dell'espansione" -#: src/slic3r/GUI/Tab.cpp:2100 src/slic3r/GUI/Tab.cpp:3519 +#: src/slic3r/GUI/Tab.cpp:2270 src/slic3r/GUI/Tab.cpp:3935 msgid "Corrections" msgstr "Correzioni" -#: src/slic3r/GUI/Plater.cpp:1243 src/libslic3r/PrintConfig.cpp:760 -#: src/libslic3r/PrintConfig.cpp:2510 src/libslic3r/PrintConfig.cpp:2511 +#: src/slic3r/GUI/Plater.cpp:1158 src/libslic3r/PrintConfig.cpp:796 +#: src/libslic3r/PrintConfig.cpp:2653 src/libslic3r/PrintConfig.cpp:2654 msgid "Cost" msgstr "Costo" -#: src/slic3r/GUI/Plater.cpp:239 +#: src/slic3r/GUI/Plater.cpp:245 msgid "Cost (money)" msgstr "Costo (soldi)" -#: src/slic3r/GUI/Plater.cpp:2835 +#: src/slic3r/GUI/Jobs/ArrangeJob.cpp:176 msgid "Could not arrange model objects! Some geometries may be invalid." msgstr "Non è stato possibile disporre gli oggetti! Alcune geometrie potrebbero essere non valide." -#: src/slic3r/Utils/AstroBox.cpp:89 +#: src/slic3r/Utils/AstroBox.cpp:90 msgid "Could not connect to AstroBox" msgstr "Impossibile connettere ad AstroBox" -#: src/slic3r/Utils/Duet.cpp:54 +#: src/slic3r/Utils/Duet.cpp:55 msgid "Could not connect to Duet" msgstr "Connessione a Duet fallita" -#: src/slic3r/Utils/FlashAir.cpp:73 +#: src/slic3r/Utils/FlashAir.cpp:74 msgid "Could not connect to FlashAir" msgstr "Impossibile connettersi a FlashAir" @@ -1483,56 +1798,69 @@ msgstr "Impossibile connettersi a FlashAir" msgid "Could not connect to OctoPrint" msgstr "Impossibile connettersi ad OctoPrint" -#: src/slic3r/Utils/OctoPrint.cpp:181 +#: src/slic3r/Utils/OctoPrint.cpp:191 msgid "Could not connect to Prusa SLA" msgstr "Connessione a Prusa SLA fallita" -#: src/slic3r/GUI/Tab.cpp:1687 +#: src/slic3r/Utils/Http.cpp:73 +msgid "Could not detect system SSL certificate store. PrusaSlicer will be unable to establish secure network connections." +msgstr "Impossibile rilevare archivio di certificati SSL di sistema. PrusaSlicer non sarà in grado di stabilire connessioni di rete sicure." + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:289 msgid "Could not get a valid Printer Host reference" msgstr "Impossibile ottenere un riferimento Host Stampante valido" -#: src/slic3r/Utils/Duet.cpp:134 +#: src/slic3r/Utils/Duet.cpp:136 msgid "Could not get resources to create a new connection" msgstr "Non sono state trovate le risorse per stabilire una nuova connessione" -#: src/libslic3r/PrintConfig.cpp:1959 +#: src/libslic3r/PrintConfig.cpp:2101 msgid "Cover the top contact layer of the supports with loops. Disabled by default." msgstr "Copre con anelli il layer superiore del supporto a contatto. Disattivato per impostazione predefinita." -#: src/libslic3r/PrintConfig.cpp:89 +#: src/libslic3r/PrintConfig.cpp:91 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 "Le fratture più piccole di 2 volte il gap closing radius vengono riempite durante lo slicing del mesh triangolare. L'operazione potrebbe ridurre la risoluzione finale di stampa, dunque è preferibile settare il valore ragionevolmente basso." -#: src/libslic3r/Zipper.cpp:58 +#: src/libslic3r/miniz_extension.cpp:117 msgid "CRC-32 check failed" msgstr "verifica CRC-32 fallita" -#: src/libslic3r/PrintConfig.cpp:2857 +#: src/libslic3r/PrintConfig.cpp:3021 msgid "Create pad around object and ignore the support elevation" msgstr "Genera Pad intorno all'oggetto ed ignora l'elevazione del supporto" -#: src/libslic3r/PrintConfig.cpp:2724 +#: src/libslic3r/PrintConfig.cpp:2888 msgid "Critical angle" msgstr "Angolo critico" -#: src/libslic3r/PrintConfig.cpp:2668 +#: src/libslic3r/PrintConfig.cpp:2832 msgid "Cross" msgstr "Croce" -#: src/libslic3r/PrintConfig.cpp:847 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:225 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:203 +msgid "Ctrl + Mouse wheel" +msgstr "Ctrl + Rotella del mouse" + +#: src/libslic3r/PrintConfig.cpp:885 msgid "Cubic" msgstr "Cubico" -#: src/slic3r/GUI/wxExtensions.cpp:704 -#, possible-c-format +#: src/slic3r/Utils/Http.cpp:91 +msgid "CURL init has failed. PrusaSlicer will be unable to establish network connections. See logs for additional details." +msgstr "CURL init non riuscito. PrusaSlicer non sarà in grado di stabilire connessioni di rete. Vedere i log per ulteriori dettagli." + +#: src/slic3r/GUI/wxExtensions.cpp:624 +#, c-format msgid "Current mode is %s" msgstr "La modalità corrente è %s" -#: src/slic3r/GUI/Tab.cpp:959 +#: src/slic3r/GUI/Tab.cpp:1278 msgid "Current preset is inherited from" msgstr "Il preset corrente è ereditato da" -#: src/slic3r/GUI/Tab.cpp:957 +#: src/slic3r/GUI/Tab.cpp:1276 msgid "Current preset is inherited from the default preset." msgstr "Il preset attuale è stato ereditato dal preset predefinito." @@ -1540,480 +1868,527 @@ msgstr "Il preset attuale è stato ereditato dal preset predefinito." msgid "Current version:" msgstr "Versione corrente:" -#: src/slic3r/GUI/BedShapeDialog.cpp:98 src/slic3r/GUI/GUI_Preview.cpp:249 -#: src/libslic3r/ExtrusionEntity.cpp:322 +#: src/slic3r/GUI/BedShapeDialog.cpp:143 src/slic3r/GUI/GUI_Preview.cpp:314 +#: src/libslic3r/ExtrusionEntity.cpp:327 src/libslic3r/ExtrusionEntity.cpp:362 msgid "Custom" msgstr "Personalizzato" -#: src/libslic3r/PrintConfig.cpp:112 +#: src/libslic3r/PrintConfig.cpp:114 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 "Può essere specificato il file del certificato CA personalizzato per le connessioni OctoPrint HTTPS, in formato crt/pem. Se lasciato in bianco, verrà utilizzato lo OS CA certificate repository predefinito." -#: src/slic3r/GUI/Tab.cpp:1527 src/slic3r/GUI/Tab.cpp:1975 +#: src/slic3r/GUI/Tab.cpp:1872 src/slic3r/GUI/Tab.cpp:2160 +#: src/libslic3r/PrintConfig.cpp:1978 msgid "Custom G-code" msgstr "G-code personalizzato" -#: src/slic3r/GUI/DoubleSlider.cpp:1619 +#: src/slic3r/GUI/DoubleSlider.cpp:1815 msgid "Custom G-code on current layer (%1% mm)." msgstr "G-code personalizzato al layer attuale (%1% mm)." -#: src/slic3r/GUI/ConfigWizard.cpp:732 +#: src/slic3r/GUI/GCodeViewer.cpp:2580 src/slic3r/GUI/GUI_Preview.cpp:1477 +msgid "Custom G-codes" +msgstr "G-code personalizzati" + +#: src/slic3r/GUI/ConfigWizard.cpp:1091 msgid "Custom Printer" msgstr "Stampante Personalizzata" -#: src/slic3r/GUI/ConfigWizard.cpp:732 +#: src/slic3r/GUI/ConfigWizard.cpp:1091 msgid "Custom Printer Setup" msgstr "Setup Stampante Personalizzata" -#: src/slic3r/GUI/ConfigWizard.cpp:736 +#: src/slic3r/GUI/ConfigWizard.cpp:1095 msgid "Custom profile name:" msgstr "Nome profilo personalizzato:" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:42 -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:144 src/libslic3r/PrintConfig.cpp:3402 +#: src/slic3r/GUI/DoubleSlider.cpp:1135 +msgid "Custom template (\"%1%\")" +msgstr "Modello personalizzato (\"%1%\")" + +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:146 src/libslic3r/PrintConfig.cpp:3601 msgid "Cut" msgstr "Taglia" -#: src/slic3r/GUI/Plater.cpp:4786 +#: src/slic3r/GUI/Plater.cpp:4921 msgid "Cut by Plane" msgstr "Taglia sul Piano" -#: src/libslic3r/PrintConfig.cpp:3403 +#: src/libslic3r/PrintConfig.cpp:3602 msgid "Cut model at the given Z." msgstr "Taglia il modello al dato Z." -#: src/slic3r/GUI/GUI_ObjectList.cpp:1432 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1563 msgid "Cylinder" msgstr "Cilindro" -#: src/slic3r/GUI/MainFrame.cpp:568 +#: src/slic3r/GUI/MainFrame.cpp:1174 msgid "D&eselect all" msgstr "D&eseleziona tutto" -#: src/libslic3r/PrintConfig.cpp:3504 +#: src/libslic3r/PrintConfig.cpp:3709 msgid "Data directory" msgstr "Directory dati" -#: src/slic3r/GUI/Mouse3DController.cpp:313 +#: src/slic3r/GUI/Mouse3DController.cpp:300 msgid "Deadzone:" msgstr "Zona morta:" -#: src/libslic3r/Zipper.cpp:52 +#: src/libslic3r/miniz_extension.cpp:111 msgid "decompression failed or archive is corrupted" msgstr "decompressione non riuscita o archivio corrotto" -#: src/slic3r/GUI/Plater.cpp:4720 +#: src/slic3r/GUI/Plater.cpp:4824 msgid "Decrease Instances" msgstr "Diminuisci Istanze" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1704 src/libslic3r/PrintConfig.cpp:335 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1832 src/libslic3r/PrintConfig.cpp:369 msgid "Default" msgstr "Predefinito" -#: src/slic3r/GUI/GUI_ObjectList.cpp:457 src/slic3r/GUI/GUI_ObjectList.cpp:469 -#: src/slic3r/GUI/GUI_ObjectList.cpp:917 src/slic3r/GUI/GUI_ObjectList.cpp:3967 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3977 -#: src/slic3r/GUI/GUI_ObjectList.cpp:4012 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:200 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:257 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:282 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:490 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:1753 +#: 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/ObjectDataViewModel.cpp:202 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:259 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:284 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:492 msgid "default" msgstr "predefinito" -#: src/libslic3r/PrintConfig.cpp:777 +#: src/libslic3r/PrintConfig.cpp:813 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 "Angolo base predefinito per l'orientamento del riempimento. Su questo verrà applicato il tratteggio. I bridge saranno riempiti utilizzando la migliore direzione che Slic3r riesce a determinare, quindi questa impostazione non influisce sui bridge." -#: src/libslic3r/PrintConfig.cpp:554 +#: src/slic3r/GUI/GCodeViewer.cpp:2289 +msgid "Default color" +msgstr "Colore predefinito" + +#: src/slic3r/GUI/GCodeViewer.cpp:2313 +msgid "default color" +msgstr "colore predefinito" + +#: src/libslic3r/PrintConfig.cpp:590 msgid "Default extrusion width" msgstr "Larghezza estrusione predefinita" -#: src/slic3r/GUI/Tab.cpp:987 +#: src/slic3r/GUI/Tab.cpp:1305 msgid "default filament profile" msgstr "profilo filamento predefinito" -#: src/libslic3r/PrintConfig.cpp:345 +#: src/libslic3r/PrintConfig.cpp:379 msgid "Default filament profile" msgstr "Profilo filamento predefinito" -#: src/libslic3r/PrintConfig.cpp:346 +#: src/libslic3r/PrintConfig.cpp:380 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/Tab.cpp:2919 -#, possible-c-format -msgid "Default preset (%s)" -msgstr "Preset predefinito (%s)" - -#: src/slic3r/GUI/GLCanvas3D.cpp:904 src/slic3r/GUI/GLCanvas3D.cpp:933 +#: 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:984 +#: src/slic3r/GUI/Tab.cpp:1302 msgid "default print profile" msgstr "profilo di stampa predefinito" -#: src/libslic3r/PrintConfig.cpp:352 +#: src/libslic3r/PrintConfig.cpp:386 msgid "Default print profile" msgstr "Profilo di stampa predefinito" -#: src/libslic3r/PrintConfig.cpp:353 src/libslic3r/PrintConfig.cpp:2592 -#: src/libslic3r/PrintConfig.cpp:2603 +#: src/libslic3r/PrintConfig.cpp:387 src/libslic3r/PrintConfig.cpp:2735 +#: src/libslic3r/PrintConfig.cpp:2746 msgid "Default print profile associated with the current printer profile. On selection of the current printer profile, this print profile will be activated." msgstr "Profilo di stampa predefinito associato al profilo stampante corrente. Alla selezione del profilo stampante corrente, questo profilo di stampa verrà attivato." -#: src/slic3r/GUI/Tab.cpp:1001 +#: src/slic3r/GUI/Tab.cpp:1319 msgid "default SLA material profile" msgstr "profilo materiale SLA predefinito" -#: src/libslic3r/PrintConfig.cpp:2591 src/libslic3r/PrintConfig.cpp:2602 +#: src/libslic3r/PrintConfig.cpp:2734 src/libslic3r/PrintConfig.cpp:2745 msgid "Default SLA material profile" msgstr "Profilo materiale SLA predefinito" -#: src/slic3r/GUI/Tab.cpp:1005 +#: src/slic3r/GUI/Tab.cpp:1323 msgid "default SLA print profile" msgstr "profilo di stampa SLA predefinito" -#: src/slic3r/GUI/Field.cpp:136 +#: src/slic3r/GUI/Field.cpp:184 msgid "default value" msgstr "valore predefinito" -#: src/slic3r/GUI/ConfigWizard.cpp:734 +#: src/slic3r/GUI/ConfigWizard.cpp:1093 msgid "Define a custom printer profile" msgstr "Inserisci un profilo stampante personalizzato" -#: src/libslic3r/PrintConfig.cpp:2798 +#: src/libslic3r/PrintConfig.cpp:2962 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 effect inside the cavity, which makes peeling the print off the vat foil difficult." msgstr "Definisce la profondità della cavità nel pad. Imposta a zero per disattivare la cavità. Fai attenzione ad attivare questa funzione in quanto alcune resine possono causare un effetto ventosa dentro la cavità il che renderà difficile il distacco della stampa dal foglio del vat." -#: src/slic3r/GUI/GUI_ObjectList.cpp:346 +#: src/slic3r/GUI/GUI_ObjectList.cpp:393 msgid "degenerate facets" msgstr "facce degenerate" -#: src/libslic3r/PrintConfig.cpp:640 +#: src/libslic3r/PrintConfig.cpp:676 msgid "Delay after unloading" msgstr "Ritardo dopo lo scarico" -#: src/slic3r/GUI/Tab.cpp:3121 +#: src/slic3r/GUI/Tab.cpp:3386 msgid "delete" msgstr "elimina" -#: src/slic3r/GUI/GLCanvas3D.cpp:4475 src/slic3r/GUI/GUI_ObjectList.cpp:1718 -#: src/slic3r/GUI/Plater.cpp:3931 src/slic3r/GUI/Plater.cpp:3953 -#: src/slic3r/GUI/Tab.cpp:3124 +#: src/slic3r/GUI/GLCanvas3D.cpp:4841 src/slic3r/GUI/GUI_ObjectList.cpp:1846 +#: src/slic3r/GUI/Plater.cpp:3849 src/slic3r/GUI/Plater.cpp:3871 +#: src/slic3r/GUI/Tab.cpp:3423 msgid "Delete" msgstr "Elimina" -#: src/slic3r/GUI/MainFrame.cpp:575 +#: src/slic3r/GUI/MainFrame.cpp:1181 msgid "Delete &all" msgstr "Elimin&a tutto" -#: src/slic3r/GUI/GLCanvas3D.cpp:4484 src/slic3r/GUI/KBShortcutsDialog.cpp:129 -#: src/slic3r/GUI/Plater.cpp:4669 +#: src/slic3r/GUI/GLCanvas3D.cpp:4850 src/slic3r/GUI/KBShortcutsDialog.cpp:124 +#: src/slic3r/GUI/Plater.cpp:4774 msgid "Delete all" msgstr "Elimina tutto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2176 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2341 msgid "Delete All Instances from Object" msgstr "Elimina Tutte le Istanze dall'Oggetto" -#: src/slic3r/GUI/DoubleSlider.cpp:1516 +#: src/slic3r/GUI/DoubleSlider.cpp:1708 msgid "Delete color change" msgstr "Elimina il cambio colore" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:219 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:220 msgid "Delete color change marker for current layer" msgstr "Elimina il segnale di cambio colore per il layer corrente" -#: src/slic3r/GUI/DoubleSlider.cpp:1519 +#: src/slic3r/GUI/DoubleSlider.cpp:1711 msgid "Delete custom G-code" msgstr "Elimina G-code personalizzato" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:539 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:424 msgid "Delete drainage hole" msgstr "Elimina foro di drenaggio" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2192 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2357 msgid "Delete Height Range" msgstr "Elimina Intervallo Altezza" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2246 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2412 msgid "Delete Instance" msgstr "Elimina Istanza" -#: src/slic3r/GUI/Plater.cpp:2712 +#: src/slic3r/GUI/Plater.cpp:2673 msgid "Delete Object" msgstr "Elimina Oggetto" -#: src/slic3r/GUI/GUI_ObjectSettings.cpp:101 -#, possible-c-format +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:104 +#, c-format msgid "Delete Option %s" msgstr "Elimina Opzione %s" -#: src/slic3r/GUI/DoubleSlider.cpp:1518 +#: src/slic3r/GUI/DoubleSlider.cpp:1710 msgid "Delete pause print" msgstr "Elimina pausa stampa" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:128 +#: src/slic3r/GUI/PresetComboBoxes.cpp:652 +msgid "Delete physical printer" +msgstr "Elimina stampante fisica" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:659 +msgid "Delete Physical Printer" +msgstr "Elimina stampante fisica" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:123 msgid "Delete selected" msgstr "Elimina selezionato" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2830 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3221 msgid "Delete Selected" msgstr "Elimina Selezionati" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2693 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3083 msgid "Delete Selected Item" msgstr "Elimina l'elemento selezionato" -#: src/slic3r/GUI/Plater.cpp:4677 +#: src/slic3r/GUI/Plater.cpp:4782 msgid "Delete Selected Objects" msgstr "Elimina Oggetti Selezionati" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2152 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2319 msgid "Delete Settings" msgstr "Elimina Impostazioni" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2227 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2393 msgid "Delete Subobject" msgstr "Elimina Sotto-oggetto" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:631 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:514 msgid "Delete support point" msgstr "Elimina punto di supporto" -#: src/slic3r/GUI/Tab.cpp:134 +#: src/slic3r/GUI/Tab.cpp:204 msgid "Delete this preset" msgstr "Elimina questo preset" -#: src/slic3r/GUI/DoubleSlider.cpp:1035 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:55 +msgid "Delete this preset from this printer device" +msgstr "Elimina questo preset da questa stampante" + +#: src/slic3r/GUI/DoubleSlider.cpp:1160 msgid "Delete tick mark - Left click or press \"-\" key" msgstr "Elimina il segno di spunta - Clic sinistro o premi il tasto \"-\"" -#: src/slic3r/GUI/DoubleSlider.cpp:1517 +#: src/slic3r/GUI/DoubleSlider.cpp:1709 msgid "Delete tool change" msgstr "Elimina cambio attrezzo" -#: src/slic3r/GUI/MainFrame.cpp:576 +#: src/slic3r/GUI/MainFrame.cpp:1182 msgid "Deletes all objects" msgstr "Elimina tutti gli oggetti" -#: src/slic3r/GUI/MainFrame.cpp:573 +#: src/slic3r/GUI/MainFrame.cpp:1179 msgid "Deletes the current selection" msgstr "Elimina la selezione corrente" -#: src/libslic3r/PrintConfig.cpp:717 src/libslic3r/PrintConfig.cpp:2503 -#: src/libslic3r/PrintConfig.cpp:2504 +#: src/libslic3r/PrintConfig.cpp:753 src/libslic3r/PrintConfig.cpp:2646 +#: src/libslic3r/PrintConfig.cpp:2647 msgid "Density" msgstr "Densità" -#: src/libslic3r/PrintConfig.cpp:791 +#: src/libslic3r/PrintConfig.cpp:827 msgid "Density of internal infill, expressed in the range 0% - 100%." msgstr "Densità del riempimento interno, espresso nell'intervallo 0% - 100%." -#: src/slic3r/GUI/Tab.cpp:1258 src/slic3r/GUI/Tab.cpp:1548 -#: src/slic3r/GUI/Tab.cpp:2019 src/slic3r/GUI/Tab.cpp:2135 -#: src/slic3r/GUI/Tab.cpp:3543 src/slic3r/GUI/Tab.cpp:3671 +#: src/slic3r/GUI/Tab.cpp:1588 src/slic3r/GUI/Tab.cpp:1895 +#: src/slic3r/GUI/Tab.cpp:2228 src/slic3r/GUI/Tab.cpp:2304 +#: src/slic3r/GUI/Tab.cpp:3959 src/slic3r/GUI/Tab.cpp:4090 msgid "Dependencies" msgstr "Dipendenze" -#: src/libslic3r/PrintConfig.cpp:1612 src/libslic3r/PrintConfig.cpp:1613 +#: src/libslic3r/PrintConfig.cpp:1720 src/libslic3r/PrintConfig.cpp:1721 msgid "Deretraction Speed" msgstr "Velocità di deretrazione" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:127 +#: src/slic3r/GUI/GCodeViewer.cpp:2529 src/slic3r/GUI/GUI_Preview.cpp:337 +#: src/slic3r/GUI/GUI_Preview.cpp:1473 +msgid "Deretractions" +msgstr "De-retrazioni" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:172 +msgid "Descriptive name for the printer" +msgstr "Nome descrittivo della stampante" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:122 msgid "Deselect all" msgstr "Deseleziona tutto" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1369 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1216 msgid "Deselect by rectangle" msgstr "Deseleziona con rettangolo" -#: src/slic3r/GUI/MainFrame.cpp:569 +#: src/slic3r/GUI/MainFrame.cpp:1175 msgid "Deselects all objects" msgstr "Deseleziona tutti gli oggetti" -#: src/slic3r/GUI/Tab.cpp:963 +#: src/slic3r/GUI/Tab.cpp:1224 msgid "Detach from system preset" msgstr "Distacco dal preset di sistema" -#: src/slic3r/GUI/Tab.cpp:984 +#: src/slic3r/GUI/Tab.cpp:1246 msgid "Detach preset" msgstr "Preset distacco" -#: src/slic3r/GUI/Tab.cpp:3029 +#: src/slic3r/GUI/Tab.cpp:3323 msgid "Detached" msgstr "Distaccato" -#: src/libslic3r/PrintConfig.cpp:1373 +#: src/libslic3r/PrintConfig.cpp:1481 msgid "Detect bridging perimeters" msgstr "Rileva perimetri ponte (bridge)" -#: src/libslic3r/PrintConfig.cpp:2075 +#: src/libslic3r/PrintConfig.cpp:2218 msgid "Detect single-width walls (parts where two extrusions don't fit and we need to collapse them into a single trace)." msgstr "Rileva pareti a spessore singolo (parti in cui non entrano due estrusioni ed è necessario comprimerle in una singola traccia)." -#: src/libslic3r/PrintConfig.cpp:2073 +#: src/libslic3r/PrintConfig.cpp:2216 msgid "Detect thin walls" msgstr "Rileva perimetri sottili" -#: src/libslic3r/PrintConfig.cpp:3472 +#: src/libslic3r/PrintConfig.cpp:3671 msgid "Detect unconnected parts in the given model(s) and split them into separate objects." msgstr "Rileva parti non connesse nel modello(i) dato e le divide in oggetti separati." -#: src/slic3r/GUI/Plater.cpp:2368 +#: src/slic3r/GUI/Plater.cpp:2330 msgid "Detected advanced data" msgstr "Rilevati dati avanzati" -#: src/slic3r/GUI/Mouse3DController.cpp:289 +#: src/slic3r/GUI/Mouse3DController.cpp:274 msgid "Device:" msgstr "Dispositivo:" -#: src/slic3r/GUI/BedShapeDialog.cpp:93 src/libslic3r/PrintConfig.cpp:709 +#: src/slic3r/GUI/BedShapeDialog.cpp:95 src/libslic3r/PrintConfig.cpp:745 msgid "Diameter" msgstr "Diametro" -#: src/libslic3r/PrintConfig.cpp:2694 +#: src/libslic3r/PrintConfig.cpp:2858 msgid "Diameter in mm of the pillar base" msgstr "Diametro in mm della base del pilastro" -#: src/libslic3r/PrintConfig.cpp:2650 +#: src/libslic3r/PrintConfig.cpp:2793 msgid "Diameter in mm of the support pillars" msgstr "Diametro in mm dei pilastri di supporto" -#: src/libslic3r/PrintConfig.cpp:2622 +#: src/libslic3r/PrintConfig.cpp:2765 msgid "Diameter of the pointing side of the head" msgstr "Diametro del lato di puntamento della testa" -#: src/slic3r/GUI/BedShapeDialog.cpp:94 +#: src/slic3r/GUI/BedShapeDialog.cpp:131 msgid "Diameter of the print bed. It is assumed that origin (0,0) is located in the center." msgstr "Diametro del piano di stampa. Si presume che l'origine (0,0) si trovi al centro." -#: src/libslic3r/PrintConfig.cpp:1639 +#: src/libslic3r/PrintConfig.cpp:1747 msgid "Direction" msgstr "Direzione" -#: src/libslic3r/PrintConfig.cpp:359 +#: src/libslic3r/PrintConfig.cpp:393 msgid "Disable fan for the first" msgstr "Disattiva ventola per i primi" -#: src/libslic3r/PrintConfig.cpp:1349 +#: src/libslic3r/PrintConfig.cpp:1457 msgid "Disables retraction when the travel path does not exceed the upper layer's perimeters (and thus any ooze will be probably invisible)." msgstr "Disabilita la retrazione quando la traiettoria del movimento non oltrepassa i perimetri del layer superiore (pertanto qualunque scolatura sarà probabilmente invisibile)." -#: src/slic3r/GUI/DoubleSlider.cpp:952 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:641 +msgid "Discard" +msgstr "Annulla" + +#: src/slic3r/GUI/DoubleSlider.cpp:1066 msgid "Discard all custom changes" msgstr "Elimina tutte le modifiche personalizzate" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:53 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1375 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:52 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1222 msgid "Discard changes" msgstr "Annulla modifiche" -#: src/slic3r/GUI/GUI_App.cpp:932 src/slic3r/GUI/Tab.cpp:2946 -msgid "Discard changes and continue anyway?" -msgstr "Eliminare le modifiche e continuare comunque?" - -#: src/slic3r/GUI/Tab.cpp:2078 +#: src/slic3r/GUI/Tab.cpp:2248 msgid "Display" msgstr "Display" -#: src/libslic3r/PrintConfig.cpp:2359 +#: src/libslic3r/PrintConfig.cpp:2502 msgid "Display height" msgstr "Altezza display" -#: src/libslic3r/PrintConfig.cpp:2378 +#: src/libslic3r/PrintConfig.cpp:2521 msgid "Display horizontal mirroring" msgstr "Mostra mirroring orizzontale" -#: src/libslic3r/PrintConfig.cpp:2392 +#: src/libslic3r/PrintConfig.cpp:2535 msgid "Display orientation" msgstr "Orientamento display" -#: src/slic3r/GUI/MainFrame.cpp:648 +#: src/slic3r/GUI/MainFrame.cpp:1258 msgid "Display the Print Host Upload Queue window" msgstr "Mostra la finestra della fila di caricamento all'host di stampa" -#: src/libslic3r/PrintConfig.cpp:2385 +#: src/libslic3r/PrintConfig.cpp:2528 msgid "Display vertical mirroring" msgstr "Mostra mirroring verticale" -#: src/libslic3r/PrintConfig.cpp:2353 +#: src/libslic3r/PrintConfig.cpp:2496 msgid "Display width" msgstr "Larghezza display" -#: src/libslic3r/PrintConfig.cpp:377 +#: src/libslic3r/PrintConfig.cpp:411 msgid "Distance between copies" msgstr "Distanza tra le copie" -#: src/libslic3r/PrintConfig.cpp:1680 +#: src/libslic3r/PrintConfig.cpp:1157 +msgid "Distance between ironing lines" +msgstr "Distanza tra le linee di stiratura" + +#: src/libslic3r/PrintConfig.cpp:1788 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 "La distanza tra skirt e oggetto(i). Imposta questo valore a zero per unire lo skirt all'oggetto(i) e ottenere un brim per una migliore adesione." -#: src/libslic3r/PrintConfig.cpp:2882 +#: src/libslic3r/PrintConfig.cpp:3046 msgid "Distance between two connector sticks which connect the object and the generated pad." msgstr "Distanza tra due barre di connessione che collegano l'oggetto e il pad generato." -#: src/libslic3r/PrintConfig.cpp:1679 +#: src/libslic3r/PrintConfig.cpp:1787 msgid "Distance from object" msgstr "Distanza dall'oggetto" -#: src/slic3r/GUI/BedShapeDialog.cpp:85 +#: src/slic3r/GUI/BedShapeDialog.cpp:121 msgid "Distance of the 0,0 G-code coordinate from the front left corner of the rectangle." msgstr "Distanza della coordinata 0,0 del G-code dall'angolo frontale sinistro del rettangolo." -#: src/libslic3r/PrintConfig.cpp:320 +#: src/libslic3r/PrintConfig.cpp:354 msgid "Distance of the center-point of the cooling tube from the extruder tip." msgstr "Distanza del centro del tubo di raffreddamento dalla punta dell'estrusore." -#: src/libslic3r/PrintConfig.cpp:1382 +#: src/libslic3r/PrintConfig.cpp:1490 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 "Distanza della punta dell'estrusore dalla posizione dove il filamento viene posto mentre viene scaricato. Dovrebbe essere uguale al valore nel firmware della stampante." -#: src/libslic3r/PrintConfig.cpp:378 +#: src/libslic3r/PrintConfig.cpp:412 msgid "Distance used for the auto-arrange feature of the plater." msgstr "Distanza usata per la funzione disposizione automatica del piano." -#: src/libslic3r/PrintConfig.cpp:3486 +#: src/libslic3r/PrintConfig.cpp:3685 msgid "Do not fail if a file supplied to --load does not exist." msgstr "Non fallire se un file fornito a --load non esiste." -#: src/libslic3r/PrintConfig.cpp:3430 +#: src/libslic3r/PrintConfig.cpp:3629 msgid "Do not rearrange the given models before merging and keep their original XY coordinates." msgstr "Non disporre i modelli prima dell’unione e mantieni le coordinate XY originali." -#: src/slic3r/GUI/Field.cpp:240 -#, possible-c-format -msgid "Do you mean %s%% instead of %s %s?\nSelect YES if you want to change this value to %s%%, \nor NO if you are sure that %s %s is a correct value." -msgstr "Intendevi %s invece di %s %s?\nSeleziona SI se vuoi cambiare il valore a %s %%,\no NO se sei sicuro che %s %s è il valore corretto." +#: src/slic3r/GUI/Field.cpp:288 +#, c-format +msgid "" +"Do you mean %s%% instead of %s %s?\n" +"Select YES if you want to change this value to %s%%, \n" +"or NO if you are sure that %s %s is a correct value." +msgstr "" +"Intendevi %s invece di %s %s?\n" +"Seleziona SI se vuoi cambiare il valore a %s %%,\n" +"o NO se sei sicuro che %s %s è il valore corretto." -#: src/slic3r/GUI/DoubleSlider.cpp:1920 +#: src/slic3r/GUI/DoubleSlider.cpp:2138 msgid "Do you want to delete all saved tool changes?" msgstr "Vuoi cancellare tutti i cambi attrezzo salvati?" -#: src/slic3r/GUI/GUI_App.cpp:884 +#: src/slic3r/GUI/GUI_App.cpp:1610 msgid "Do you want to proceed?" msgstr "Vuoi continuare?" -#: src/slic3r/GUI/Plater.cpp:3321 +#: src/slic3r/GUI/Plater.cpp:3124 msgid "Do you want to retry" msgstr "Vuoi riprovare" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1045 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:911 msgid "Do you want to save your manually edited support points?" msgstr "Vuoi salvare i punti di supporto modificati manualmente?" -#: src/slic3r/GUI/ConfigWizard.cpp:1834 +#: src/slic3r/GUI/ConfigWizard.cpp:2261 msgid "Do you want to select default filaments for these FFF printer models?" msgstr "Vuoi selezionare i filamenti predefiniti per questi modelli di stampante FFF?" -#: src/slic3r/GUI/ConfigWizard.cpp:1852 +#: src/slic3r/GUI/ConfigWizard.cpp:2279 msgid "Do you want to select default SLA materials for these printer models?" msgstr "Vuoi selezionare i materiali SLA predefiniti per questi modelli di stampante?" -#: src/libslic3r/PrintConfig.cpp:3429 +#: src/slic3r/GUI/Plater.cpp:4751 +msgid "does not contain valid gcode." +msgstr "non contiene un g-code valido." + +#: src/libslic3r/PrintConfig.cpp:3628 msgid "Don't arrange" msgstr "Non disporre" @@ -2021,7 +2396,7 @@ msgstr "Non disporre" msgid "Don't notify about new releases any more" msgstr "Non notificare più i nuovi rilasci" -#: src/libslic3r/PrintConfig.cpp:369 +#: src/libslic3r/PrintConfig.cpp:403 msgid "Don't support bridges" msgstr "Non supportare i bridge" @@ -2029,262 +2404,332 @@ msgstr "Non supportare i bridge" msgid "Downgrade" msgstr "Downgrade" -#: src/libslic3r/PrintConfig.cpp:1695 +#: src/libslic3r/PrintConfig.cpp:1803 msgid "Draft shield" msgstr "Scudo di protezione" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1365 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1368 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1369 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1212 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1215 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1216 msgid "Drag" msgstr "Trascina" -#: src/libslic3r/SLAPrintSteps.cpp:44 -msgid "Drilling holes into model." -msgstr "Praticare fori nel modello." +#: src/slic3r/GUI/Plater.cpp:1406 +msgid "Drag and drop G-code file" +msgstr "Trascina e rilascia un file G-code" -#: src/libslic3r/SLAPrintSteps.cpp:199 +#: src/libslic3r/SLAPrintSteps.cpp:45 +msgid "Drilling holes into model." +msgstr "Eseguendo i fori nel modello." + +#: src/libslic3r/SLAPrintSteps.cpp:201 msgid "Drilling holes into the mesh failed. This is usually caused by broken model. Try to fix it first." msgstr "Applicazione dei fori nella mesh non riuscita. Questo solitamente è causato da un modello corrotto. Prova prima a sistemarlo." -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:337 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:349 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:345 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:357 msgid "Drop to bed" msgstr "Poggia sul piano" -#: src/libslic3r/PrintConfig.cpp:3433 +#: src/libslic3r/PrintConfig.cpp:3632 msgid "Duplicate" msgstr "Duplica" -#: src/libslic3r/PrintConfig.cpp:3438 +#: src/libslic3r/PrintConfig.cpp:3637 msgid "Duplicate by grid" msgstr "Duplica per griglia" -#: src/slic3r/GUI/PresetHints.cpp:40 +#: src/slic3r/GUI/GCodeViewer.cpp:2445 +msgid "Duration" +msgstr "Durata" + +#: src/slic3r/GUI/PresetHints.cpp:39 msgid "During the other layers, fan" msgstr "Durante gli altri layer, la ventola" -#: src/libslic3r/PrintConfig.cpp:2669 +#: src/libslic3r/PrintConfig.cpp:2833 msgid "Dynamic" msgstr "Dinamico" -#: src/slic3r/GUI/MainFrame.cpp:749 +#: src/slic3r/GUI/MainFrame.cpp:1448 msgid "E&xport" msgstr "Esporta" -#: src/slic3r/GUI/GUI_ObjectList.cpp:347 +#: src/slic3r/GUI/GUI_ObjectList.cpp:394 msgid "edges fixed" msgstr "spigoli riparati" -#: src/slic3r/GUI/DoubleSlider.cpp:1508 +#: src/slic3r/GUI/DoubleSlider.cpp:1700 msgid "Edit color" msgstr "Modifica colore" -#: src/slic3r/GUI/DoubleSlider.cpp:960 +#: src/slic3r/GUI/DoubleSlider.cpp:1083 msgid "Edit current color - Right click the colored slider segment" msgstr "Modifica colore attuale - Clic destro sul segmento colorato della barra di scorrimento" -#: src/slic3r/GUI/DoubleSlider.cpp:1510 +#: src/slic3r/GUI/DoubleSlider.cpp:1702 msgid "Edit custom G-code" msgstr "Modifica G-code personalizzato" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3003 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3459 msgid "Edit Height Range" msgstr "Modifica Intervallo Altezza" -#: src/slic3r/GUI/DoubleSlider.cpp:1509 +#: src/slic3r/GUI/DoubleSlider.cpp:1701 msgid "Edit pause print message" msgstr "Modifica messaggio pausa di stampa" -#: src/slic3r/GUI/DoubleSlider.cpp:1037 +#: src/slic3r/GUI/PresetComboBoxes.cpp:645 +msgid "Edit physical printer" +msgstr "Modifica stampante fisica" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:641 +msgid "Edit preset" +msgstr "Modifica preset" + +#: src/slic3r/GUI/DoubleSlider.cpp:1162 msgid "Edit tick mark - Ctrl + Left click" msgstr "Modifica segno di spunta - Ctrl + Clic Sinistro" -#: src/slic3r/GUI/DoubleSlider.cpp:1038 +#: src/slic3r/GUI/DoubleSlider.cpp:1163 msgid "Edit tick mark - Right click" msgstr "Modifica segno di spunta - Clic destro" -#: src/slic3r/GUI/GUI_ObjectList.cpp:282 src/slic3r/GUI/GUI_ObjectList.cpp:394 +#: src/slic3r/GUI/GUI_ObjectList.cpp:300 src/slic3r/GUI/GUI_ObjectList.cpp:441 msgid "Editing" msgstr "Modifica" -#: src/slic3r/GUI/MainFrame.cpp:547 +#: src/slic3r/GUI/MainFrame.cpp:1105 msgid "Ejec&t SD card / Flash drive" msgstr "Espelli Scheda SD / Memoria flash &t" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:126 +#: src/slic3r/GUI/NotificationManager.cpp:780 +msgid "Eject drive" +msgstr "Espelli dispositivo" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:119 msgid "Eject SD card / Flash drive" msgstr "Espelli scheda SD / Memoria flash" -#: src/slic3r/GUI/MainFrame.cpp:547 +#: src/slic3r/GUI/MainFrame.cpp:1105 msgid "Eject SD card / Flash drive after the G-code was exported to it." msgstr "Espelli scheda SD / Memoria flash dopo l'esportazione del G-code in essa." -#: src/slic3r/GUI/Plater.cpp:2202 -#, possible-c-format +#: src/slic3r/GUI/Plater.cpp:2034 +#, c-format msgid "Ejecting of device %s(%s) has failed." msgstr "Espulsione del dispositivo %s(%s) non riuscita." -#: src/libslic3r/PrintConfig.cpp:118 +#: src/libslic3r/PrintConfig.cpp:120 msgid "Elephant foot compensation" msgstr "Compensazione zampa d'elefante" -#: src/libslic3r/PrintConfig.cpp:2447 +#: src/libslic3r/PrintConfig.cpp:2590 msgid "Elephant foot minimum width" msgstr "Larghezza minima zampa d'elefante" -#: src/libslic3r/SLAPrint.cpp:625 +#: src/libslic3r/SLAPrint.cpp:639 msgid "Elevation is too low for object. Use the \"Pad around object\" feature to print the object without elevation." msgstr "L'elevazione è troppo bassa per l'oggetto. Utilizza la funzione \"Pad intorno all'oggetto\" per stampare l'oggetto senza elevazione." -#: src/libslic3r/PrintConfig.cpp:1093 +#: src/libslic3r/PrintConfig.cpp:1186 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. As of now only the Prusa i3 MK3 firmware recognizes M73. Also the i3 MK3 firmware supports M73 Qxx Sxx for the silent mode." msgstr "Inserisce M73 P[percent printed] R[remaining time in minutes] ad intervalli di un minuto nel G-code per permettere al firmware di mostrare un tempo residuo accurato. Al momento solo il firmware della Prusa i3 MK3 riconosce M73. Il firmware della i3 MK3 supporta il codice M73 Qxx Sxx anche per la modalità silenziosa." -#: src/libslic3r/GCode.cpp:637 +#: src/libslic3r/PrintConfig.cpp:1217 +msgid "Emit to G-code" +msgstr "Invia a G-code" + +#: src/libslic3r/GCode.cpp:622 msgid "Empty layers detected, the output would not be printable." msgstr "Rilevati layer vuoti, il file non sarà stampabile." -#: src/slic3r/GUI/Tab.cpp:1445 src/libslic3r/PrintConfig.cpp:1355 -#: src/libslic3r/PrintConfig.cpp:2200 +#: src/slic3r/GUI/Tab.cpp:1791 src/libslic3r/PrintConfig.cpp:1463 +#: src/libslic3r/PrintConfig.cpp:2343 msgid "Enable" msgstr "Abilita" -#: src/libslic3r/PrintConfig.cpp:313 +#: src/libslic3r/PrintConfig.cpp:347 msgid "Enable auto cooling" msgstr "Abilita raffreddamento automatico" -#: src/libslic3r/PrintConfig.cpp:572 +#: src/libslic3r/PrintConfig.cpp:608 msgid "Enable fan if layer print time is below" -msgstr "Attiva ventola se la stampa del layer impiega meno di" +msgstr "Attiva ventola se il tempo di stampa del layer è inferiore a" -#: src/libslic3r/PrintConfig.cpp:2908 +#: src/libslic3r/PrintConfig.cpp:3072 msgid "Enable hollowing" msgstr "Attiva svuotamento" -#: src/libslic3r/PrintConfig.cpp:2380 +#: src/libslic3r/PrintConfig.cpp:2523 msgid "Enable horizontal mirroring of output images" msgstr "Attiva il mirroring orizzontale per le immagini di output" -#: src/libslic3r/PrintConfig.cpp:1867 +#: src/libslic3r/PrintConfig.cpp:1124 +msgid "Enable ironing" +msgstr "Attiva stiratura" + +#: src/libslic3r/PrintConfig.cpp:1125 +msgid "Enable ironing of the top layers with the hot print head for smooth surface" +msgstr "Abilitare la stiratura degli strati superiori con la testina di stampa a caldo per una superficie liscia" + +#: src/libslic3r/PrintConfig.cpp:2009 msgid "Enable support material generation." msgstr "Abilita la generazione di materiale di supporto." -#: src/libslic3r/PrintConfig.cpp:966 +#: src/libslic3r/PrintConfig.cpp:1010 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 plugin. This settings is NOT compatible with Single Extruder Multi Material setup and Wipe into Object / Wipe into Infill." msgstr "Attivalo per aggiungere commenti nel G-Code etichettando i movimenti di stampa secondo l'appartenenza, utile per il plugin Octoprint CancelObject. Questa impostazione NON è compatibile con una configurazione Multi Material ad estrusore singolo e con Spurgo nell'oggetto / Spurgo nel riempimento." -#: src/libslic3r/PrintConfig.cpp:929 +#: src/libslic3r/PrintConfig.cpp:973 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 "Abilita per ottenere un file G-code commentato, con un testo descrittivo per ciascuna linea. Se stampi da memoria SD, il peso aggiuntivo del file potrebbe rallentare il firmware." -#: src/libslic3r/PrintConfig.cpp:2186 +#: src/libslic3r/PrintConfig.cpp:2329 msgid "Enable variable layer height feature" msgstr "Abilita layer ad altezza variabile" -#: src/libslic3r/PrintConfig.cpp:2387 +#: src/libslic3r/PrintConfig.cpp:2530 msgid "Enable vertical mirroring of output images" msgstr "Attiva mirroring verticale per le immagini di output" -#: src/slic3r/GUI/Tab.cpp:1534 src/slic3r/GUI/Tab.cpp:1982 -#: src/libslic3r/PrintConfig.cpp:385 src/libslic3r/PrintConfig.cpp:395 +#: src/slic3r/GUI/Tab.cpp:1880 src/slic3r/GUI/Tab.cpp:2168 +#: src/libslic3r/PrintConfig.cpp:419 src/libslic3r/PrintConfig.cpp:429 msgid "End G-code" msgstr "G-code finale" -#: src/libslic3r/PrintConfig.cpp:1924 -msgid "Enforce support for the first" -msgstr "Applica il supporto per i primi" +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:239 +msgid "Enforce" +msgstr "Rinforzo" -#: src/libslic3r/PrintConfig.cpp:1931 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:30 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:381 +msgid "Enforce seam" +msgstr "Rinforzo giunzione" + +#: src/libslic3r/PrintConfig.cpp:2066 +msgid "Enforce support for the first" +msgstr "Rinforza il supporto per i primi" + +#: src/libslic3r/PrintConfig.cpp:2073 msgid "Enforce support for the first n layers" msgstr "Applica il supporto per i primi n layer" +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:47 +msgid "Enforce supports" +msgstr "Rinforzi supporti" + #: src/slic3r/GUI/PrintHostDialogs.cpp:198 #: src/slic3r/GUI/PrintHostDialogs.cpp:229 msgid "Enqueued" msgstr "Messo in coda" -#: src/libslic3r/PrintConfig.cpp:407 +#: src/libslic3r/PrintConfig.cpp:441 msgid "Ensure vertical shell thickness" msgstr "Mantieni spessore guscio verticale" -#: src/slic3r/GUI/DoubleSlider.cpp:1618 +#: src/slic3r/GUI/GLCanvas3D.cpp:4402 src/slic3r/GUI/GLCanvas3D.cpp:4410 +#: src/slic3r/GUI/Search.cpp:433 +msgid "Enter a search term" +msgstr "Inserire un termine di ricerca" + +#: src/slic3r/GUI/DoubleSlider.cpp:1814 msgid "Enter custom G-code used on current layer" msgstr "Inserisci il G-code personalizzato da usare al layer corrente" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3803 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4266 msgid "Enter new name" msgstr "Inserisci un nuovo nome" -#: src/slic3r/GUI/DoubleSlider.cpp:1634 +#: src/slic3r/GUI/DoubleSlider.cpp:1830 msgid "Enter short message shown on Printer display when a print is paused" msgstr "Inserisci un breve messaggio da mostrare sul display della stampante quando una stampa è in pausa" -#: src/slic3r/GUI/ConfigWizard.cpp:1047 +#: src/slic3r/GUI/ConfigWizard.cpp:1413 msgid "Enter the bed temperature needed for getting your filament to stick to your heated bed." msgstr "Inserisci la temperatura del piano necessaria per l'adesione del filamento al piano riscaldato." -#: src/slic3r/GUI/ConfigWizard.cpp:979 +#: src/slic3r/GUI/ConfigWizard.cpp:1345 msgid "Enter the diameter of your filament." msgstr "Inserisci il diametro del filamento." -#: src/slic3r/GUI/ConfigWizard.cpp:966 +#: src/slic3r/GUI/ConfigWizard.cpp:1332 msgid "Enter the diameter of your printer's hot end nozzle." msgstr "Inserisci il diametro dell'ugello dell'estrusore della stampante." -#: src/slic3r/GUI/DoubleSlider.cpp:1650 +#: src/slic3r/GUI/DoubleSlider.cpp:1851 src/slic3r/GUI/DoubleSlider.cpp:1855 msgid "Enter the height you want to jump to" msgstr "Inserisci l'altezza a cui si vuole saltare" -#: src/slic3r/GUI/Plater.cpp:4751 +#: src/slic3r/GUI/DoubleSlider.cpp:1851 +msgid "Enter the move you want to jump to" +msgstr "Inserisci lo spostamento a cui vuoi saltare" + +#: src/slic3r/GUI/Plater.cpp:4855 msgid "Enter the number of copies:" msgstr "Inserisci il numero di copie:" -#: src/slic3r/GUI/ConfigWizard.cpp:1033 +#: src/slic3r/GUI/ConfigWizard.cpp:1399 msgid "Enter the temperature needed for extruding your filament." msgstr "Inserisci la temperatura necessaria per estrudere il filamento." -#: src/libslic3r/PrintConfig.cpp:761 +#: src/libslic3r/PrintConfig.cpp:797 msgid "Enter your filament cost per kg here. This is only for statistical information." msgstr "Inserisci qui il costo del filamento per kg. È solo un'informazione statistica." -#: src/libslic3r/PrintConfig.cpp:718 +#: src/libslic3r/PrintConfig.cpp:754 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 the length to volume. Better is to calculate the volume directly through displacement." msgstr "Inserisci qui la densità del filamento. È solo un'informazione statistica. Un metodo di calcolo approssimativo consiste nel pesare un pezzo di filamento di lunghezza nota, e calcolare il rapporto tra lunghezza e volume. È meglio calcolare il volume direttamente attraverso il dislocamento." -#: src/libslic3r/PrintConfig.cpp:710 +#: src/libslic3r/PrintConfig.cpp:746 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 "Inserisci qui il diametro del filamento. È richiesta una buona precisione, pertanto usa un calibro ed esegui misurazioni multiple lungo il filamento, per poi ricavare una media." -#: src/slic3r/GUI/MainFrame.cpp:422 src/slic3r/GUI/MainFrame.cpp:785 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:39 +msgid "Entering Paint-on supports" +msgstr "Inserimento supporti Paint-on" + +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:40 +msgid "Entering Seam painting" +msgstr "Inserimento pittura giunzione" + +#: src/slic3r/GUI/MainFrame.cpp:1003 src/slic3r/GUI/MainFrame.cpp:1486 #: src/slic3r/GUI/PrintHostDialogs.cpp:231 msgid "Error" msgstr "Errore" #: src/slic3r/GUI/FirmwareDialog.cpp:645 -#, possible-c-format +#, c-format msgid "Error accessing port at %s: %s" msgstr "Errore nell'accedere alla porta a%s: %s" -#: src/slic3r/GUI/Plater.cpp:3433 +#: src/slic3r/GUI/Plater.cpp:3238 msgid "Error during reload" msgstr "Errore durante il ri-caricamento" -#: src/slic3r/GUI/Plater.cpp:5043 -#, possible-c-format +#: src/slic3r/GUI/Plater.cpp:5172 +#, c-format msgid "Error exporting 3MF file %s" msgstr "Errore nell'esportazione del file 3MF %s" -#: src/slic3r/GUI/Plater.cpp:5005 -#, possible-c-format +#: src/slic3r/GUI/Plater.cpp:5138 +#, c-format msgid "Error exporting AMF file %s" msgstr "Errore nell'esportazione del file AMF %s" -#: src/slic3r/GUI/PrintHostDialogs.cpp:154 +#: src/slic3r/GUI/OpenGLManager.cpp:276 +msgid "Error loading shaders" +msgstr "Errore caricamento shader" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:152 msgid "Error Message" msgstr "Messaggio d'errore" -#: src/slic3r/GUI/AppConfig.cpp:114 +#: src/slic3r/GUI/GUI_App.cpp:661 +msgid "Error parsing PrusaGCodeViewer config file, it is probably corrupted. Try to manually delete the file to recover from the error." +msgstr "Errore nell'analisi del file di configurazione di PrusaGCodeViewer, probabilmente è corrotto. Provare a cancellare manualmente il file per risolvere l'errore." + +#: src/slic3r/GUI/GUI_App.cpp:655 src/slic3r/GUI/GUI_App.cpp:670 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 "Errore nell'analisi del file config di PrusaSlicer, probabilmente è corrotto. Per risolvere questo problema prova ad eliminare manualmente il file. Il tuoi profili utente non verranno toccati." @@ -2292,163 +2737,191 @@ msgstr "Errore nell'analisi del file config di PrusaSlicer, probabilmente è cor msgid "Error uploading to print host:" msgstr "Errore durante il caricamento dell'host di stampa:" -#: src/libslic3r/Zipper.cpp:102 +#: src/slic3r/GUI/Plater.cpp:4752 +msgid "Error while loading .gcode file" +msgstr "Errore durante il caricamento del file .gcode" + +#: src/libslic3r/Zipper.cpp:27 msgid "Error with zip archive" msgstr "Errore con archivio zip" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1918 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2077 msgid "Error!" msgstr "Errore!" -#: src/slic3r/GUI/BedShapeDialog.cpp:505 +#: src/slic3r/GUI/BedShapeDialog.cpp:581 msgid "Error! Invalid model" msgstr "Errore! Modello non valido" +#: src/slic3r/GUI/NotificationManager.cpp:667 +#: src/slic3r/GUI/NotificationManager.cpp:683 +#: src/slic3r/GUI/NotificationManager.cpp:694 +msgid "ERROR:" +msgstr "ERRORE:" + #: src/slic3r/GUI/FirmwareDialog.cpp:647 -#, possible-c-format +#, c-format msgid "Error: %s" msgstr "Errore: %s" -#: src/slic3r/GUI/Job.hpp:123 +#: src/slic3r/GUI/Jobs/Job.cpp:74 msgid "ERROR: not enough resources to execute a new job." msgstr "ERRORE: risorse non sufficienti per eseguire un nuovo lavoro." -#: src/slic3r/GUI/Plater.cpp:240 src/slic3r/GUI/Plater.cpp:1216 -#: src/slic3r/GUI/Plater.cpp:1258 +#: 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 msgid "Estimated printing time" msgstr "Tempo di stampa stimato" -#: src/slic3r/GUI/Plater.cpp:502 +#: src/slic3r/GUI/GCodeViewer.cpp:2442 src/slic3r/GUI/GCodeViewer.cpp:2445 +msgid "Event" +msgstr "Evento" + +#: src/slic3r/GUI/Plater.cpp:368 msgid "Everywhere" msgstr "Ovunque" -#: src/slic3r/GUI/PresetHints.cpp:51 +#: src/slic3r/GUI/PresetHints.cpp:50 msgid "except for the first %1% layers." msgstr "ad eccezione dei primi %1% layer." -#: src/slic3r/GUI/PresetHints.cpp:53 +#: src/slic3r/GUI/PresetHints.cpp:52 msgid "except for the first layer." msgstr "ad eccezione del primo layer." -#: src/libslic3r/Print.cpp:1377 +#: src/libslic3r/Print.cpp:1403 msgid "Excessive %1%=%2% mm to be printable with a nozzle diameter %3% mm" msgstr "%1% %2% mm eccessivi per essere stampabili con un diametro ugello di %3% mm" #: src/slic3r/GUI/UpdateDialogs.cpp:191 src/slic3r/GUI/UpdateDialogs.cpp:246 -#, possible-c-format +#, c-format msgid "Exit %s" msgstr "Chiudi %s" -#: src/libslic3r/PrintConfig.cpp:371 +#: src/slic3r/GUI/Plater.cpp:2143 +msgid "Expand sidebar" +msgstr "Espandi barra laterale" + +#: src/libslic3r/PrintConfig.cpp:405 msgid "Experimental option for preventing support material from being generated under bridged areas." msgstr "Opzione sperimentale per prevenire la formazione di supporti sotto i bridge." -#: src/libslic3r/PrintConfig.cpp:1375 +#: src/libslic3r/PrintConfig.cpp:1483 msgid "Experimental option to adjust flow for overhangs (bridge flow will be used), to apply bridge speed to them and enable fan." msgstr "Opzione sperimentale per regolare il flusso delle sporgenze (sarà utilizzato il flusso dei bridge), applicare la velocità del bridge e attivare la ventola." -#: src/slic3r/GUI/GUI_App.cpp:815 src/slic3r/GUI/wxExtensions.cpp:755 +#: src/slic3r/GUI/GUI_App.cpp:1507 src/slic3r/GUI/wxExtensions.cpp:676 msgid "Expert" msgstr "Esperto" -#: src/slic3r/GUI/ConfigWizard.cpp:822 +#: src/slic3r/GUI/ConfigWizard.cpp:1181 msgid "Expert mode" msgstr "Modalità Esperto" -#: src/slic3r/GUI/GUI_App.cpp:815 +#: src/slic3r/GUI/GUI_App.cpp:1507 msgid "Expert View Mode" msgstr "Modalità Visualizzazione Esperto" -#: src/slic3r/GUI/Plater.cpp:5521 +#: src/slic3r/GUI/Plater.cpp:5706 msgid "Export" msgstr "Esporta" -#: src/slic3r/GUI/MainFrame.cpp:500 +#: src/slic3r/GUI/MainFrame.cpp:1094 msgid "Export &Config" msgstr "Esporta &Configurazione" -#: src/slic3r/GUI/MainFrame.cpp:477 src/slic3r/GUI/MainFrame.cpp:749 +#: src/slic3r/GUI/MainFrame.cpp:1068 src/slic3r/GUI/MainFrame.cpp:1448 msgid "Export &G-code" msgstr "Esporta &G-code" -#: src/slic3r/GUI/MainFrame.cpp:496 +#: src/slic3r/GUI/MainFrame.cpp:1090 src/slic3r/GUI/MainFrame.cpp:1395 msgid "Export &toolpaths as OBJ" msgstr "Esporta percorso a&ttrezzo come OBJ" -#: src/libslic3r/PrintConfig.cpp:3338 +#: src/libslic3r/PrintConfig.cpp:3531 msgid "Export 3MF" msgstr "Esporta 3MF" -#: src/slic3r/GUI/MainFrame.cpp:503 +#: src/slic3r/GUI/MainFrame.cpp:1100 +msgid "Export all presets including physical printers to file" +msgstr "Esportazione di tutti i preset, incluse le stampanti fisiche, su file" + +#: src/slic3r/GUI/MainFrame.cpp:1097 msgid "Export all presets to file" msgstr "Esporta tutti i preset su file" -#: src/libslic3r/PrintConfig.cpp:3343 +#: src/libslic3r/PrintConfig.cpp:3536 msgid "Export AMF" msgstr "Esporta AMF" -#: src/slic3r/GUI/Plater.cpp:2598 +#: src/slic3r/GUI/Plater.cpp:2560 msgid "Export AMF file:" msgstr "Esporta file AMF:" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1657 src/slic3r/GUI/Plater.cpp:3966 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1786 src/slic3r/GUI/Plater.cpp:3884 msgid "Export as STL" msgstr "Esporta come STL" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:124 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:117 msgid "Export config" msgstr "Esporta config" -#: src/slic3r/GUI/MainFrame.cpp:503 +#: src/slic3r/GUI/MainFrame.cpp:1097 msgid "Export Config &Bundle" -msgstr "Esporta Configurazione da &Bundle" +msgstr "Esporta Configurazione in &Bundle" -#: src/slic3r/GUI/MainFrame.cpp:500 +#: src/slic3r/GUI/MainFrame.cpp:1100 +msgid "Export Config Bundle With Physical Printers" +msgstr "Esportazione Config Bundle con stampanti fisiche" + +#: src/slic3r/GUI/MainFrame.cpp:1094 msgid "Export current configuration to file" msgstr "Esporta la configurazione corrente su file" -#: src/slic3r/GUI/MainFrame.cpp:492 +#: src/slic3r/GUI/MainFrame.cpp:1086 msgid "Export current plate as AMF" msgstr "Esporta il piano corrente come AMF" -#: src/slic3r/GUI/MainFrame.cpp:477 +#: src/slic3r/GUI/MainFrame.cpp:1068 msgid "Export current plate as G-code" msgstr "Esporta il piano corrente come G-code" -#: src/slic3r/GUI/MainFrame.cpp:521 +#: src/slic3r/GUI/MainFrame.cpp:1076 msgid "Export current plate as G-code to SD card / Flash drive" msgstr "Esporta il piano corrente come G-code su scheda SD / Memoria flash" -#: src/slic3r/GUI/MainFrame.cpp:486 +#: src/slic3r/GUI/MainFrame.cpp:1080 msgid "Export current plate as STL" msgstr "Esporta il piano corrente come STL" -#: src/slic3r/GUI/MainFrame.cpp:489 +#: src/slic3r/GUI/MainFrame.cpp:1083 msgid "Export current plate as STL including supports" msgstr "Esporta piano corrente come STL includendo i supporti" -#: src/slic3r/GUI/Plater.cpp:3664 -msgid "Export failed" -msgstr "Esportazione fallita" - -#: src/slic3r/GUI/ConfigWizard.cpp:801 +#: src/slic3r/GUI/ConfigWizard.cpp:1160 msgid "Export full pathnames of models and parts sources into 3mf and amf files" msgstr "Esporta il percorso completo dei modelli e fonti delle parti nei file 3mf e amf" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:122 src/slic3r/GUI/Plater.cpp:891 -#: src/slic3r/GUI/Plater.cpp:5521 src/libslic3r/PrintConfig.cpp:3353 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:115 src/slic3r/GUI/Plater.cpp:766 +#: src/slic3r/GUI/Plater.cpp:5706 src/libslic3r/PrintConfig.cpp:3546 msgid "Export G-code" msgstr "Esporta G-code" -#: src/slic3r/GUI/MainFrame.cpp:521 +#: src/slic3r/GUI/MainFrame.cpp:1076 msgid "Export G-code to SD card / Flash drive" msgstr "Esporta G-code su Scheda SD / Memoria flash" -#: src/libslic3r/PrintConfig.cpp:3320 +#: src/slic3r/GUI/NotificationManager.cpp:631 +#: src/slic3r/GUI/NotificationManager.cpp:748 +msgid "Export G-Code." +msgstr "Esporta G-code." + +#: src/libslic3r/PrintConfig.cpp:3513 msgid "Export OBJ" msgstr "Esporta OBJ" -#: src/slic3r/GUI/Plater.cpp:2610 +#: src/slic3r/GUI/Plater.cpp:2572 msgid "Export OBJ file:" msgstr "Esporta file OBJ:" @@ -2456,212 +2929,215 @@ msgstr "Esporta file OBJ:" msgid "Export of a temporary 3mf file failed" msgstr "L'esportazione di un file 3mf non è riuscita" -#: src/slic3r/GUI/MainFrame.cpp:492 +#: src/slic3r/GUI/MainFrame.cpp:1086 msgid "Export plate as &AMF" msgstr "Esporta piano come &AMF" -#: src/slic3r/GUI/MainFrame.cpp:486 +#: src/slic3r/GUI/MainFrame.cpp:1080 msgid "Export plate as &STL" msgstr "Esporta piano come &STL" -#: src/slic3r/GUI/MainFrame.cpp:489 +#: src/slic3r/GUI/MainFrame.cpp:1083 msgid "Export plate as STL &including supports" msgstr "Esporta piano come STL &includendo i supporti" -#: src/libslic3r/PrintConfig.cpp:3332 +#: src/libslic3r/PrintConfig.cpp:3525 msgid "Export SLA" msgstr "Esporta SLA" -#: src/slic3r/GUI/Preferences.cpp:72 +#: src/slic3r/GUI/Preferences.cpp:89 msgid "Export sources full pathnames to 3mf and amf" msgstr "Esporta il percorso completo delle fonti su 3mf e amf" -#: src/libslic3r/PrintConfig.cpp:3348 +#: src/libslic3r/PrintConfig.cpp:3541 msgid "Export STL" msgstr "Esporta STL" -#: src/slic3r/GUI/Plater.cpp:2591 +#: src/slic3r/GUI/Plater.cpp:2553 msgid "Export STL file:" msgstr "Esporta file STL:" -#: src/libslic3r/PrintConfig.cpp:3339 +#: src/libslic3r/PrintConfig.cpp:3532 msgid "Export the model(s) as 3MF." msgstr "Esporta modello/i come 3MF." -#: src/libslic3r/PrintConfig.cpp:3344 +#: src/libslic3r/PrintConfig.cpp:3537 msgid "Export the model(s) as AMF." msgstr "Esporta il modello(i) come AMF." -#: src/libslic3r/PrintConfig.cpp:3321 +#: src/libslic3r/PrintConfig.cpp:3514 msgid "Export the model(s) as OBJ." msgstr "Esporta il modello(i) come OBJ." -#: src/libslic3r/PrintConfig.cpp:3349 +#: src/libslic3r/PrintConfig.cpp:3542 msgid "Export the model(s) as STL." msgstr "Esporta il modello(i) come STL." -#: src/slic3r/GUI/Plater.cpp:3966 +#: src/slic3r/GUI/Plater.cpp:3884 msgid "Export the selected object as STL file" msgstr "Esporta l'oggetto selezionato come file STL" -#: src/slic3r/GUI/Plater.cpp:880 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:118 src/slic3r/GUI/Plater.cpp:755 msgid "Export to SD card / Flash drive" msgstr "Esporta su scheda SD / memoria Flash" -#: src/slic3r/GUI/MainFrame.cpp:496 +#: src/slic3r/GUI/MainFrame.cpp:1090 src/slic3r/GUI/MainFrame.cpp:1395 msgid "Export toolpaths as OBJ" msgstr "Esporta percorso attrezzo come OBJ" -#: src/libslic3r/Print.cpp:1638 +#: src/slic3r/GUI/NotificationManager.hpp:317 +msgid "Exporting finished." +msgstr "Esportazione completata." + +#: src/libslic3r/Print.cpp:1676 msgid "Exporting G-code" msgstr "Esportando il G-code" #: src/slic3r/Utils/FixModelByWin10.cpp:341 -msgid "Exporting model..." -msgstr "Esportazione modello..." +msgid "Exporting model" +msgstr "Esportazione modello" #: src/slic3r/Utils/FixModelByWin10.cpp:219 #: src/slic3r/Utils/FixModelByWin10.cpp:359 msgid "Exporting source model" msgstr "Esportazione modello sorgente" -#: src/libslic3r/SLAPrint.cpp:646 +#: src/libslic3r/SLAPrint.cpp:660 msgid "Exposition time is out of printer profile bounds." msgstr "Il tempo di esposizione è fuori dai limiti del profilo stampante." -#: src/slic3r/GUI/Tab.cpp:2117 src/slic3r/GUI/Tab.cpp:3515 +#: src/slic3r/GUI/Tab.cpp:2287 src/slic3r/GUI/Tab.cpp:3931 msgid "Exposure" msgstr "Esposizione" -#: src/libslic3r/PrintConfig.cpp:2541 src/libslic3r/PrintConfig.cpp:2542 +#: src/libslic3r/PrintConfig.cpp:2684 src/libslic3r/PrintConfig.cpp:2685 msgid "Exposure time" msgstr "Tempo di esposizione" -#: src/slic3r/GUI/GUI_Preview.cpp:238 src/libslic3r/ExtrusionEntity.cpp:311 +#: src/slic3r/GUI/GUI_Preview.cpp:302 src/libslic3r/ExtrusionEntity.cpp:315 +#: src/libslic3r/ExtrusionEntity.cpp:338 msgid "External perimeter" msgstr "Perimetro esterno" -#: src/slic3r/GUI/PresetHints.cpp:156 +#: src/slic3r/GUI/PresetHints.cpp:155 msgid "external perimeters" msgstr "perimetri esterni" -#: src/libslic3r/PrintConfig.cpp:446 src/libslic3r/PrintConfig.cpp:457 +#: src/libslic3r/PrintConfig.cpp:482 src/libslic3r/PrintConfig.cpp:493 msgid "External perimeters" msgstr "Perimetri esterni" -#: src/libslic3r/PrintConfig.cpp:469 +#: src/libslic3r/PrintConfig.cpp:505 msgid "External perimeters first" msgstr "Perimetri esterni per primi" -#: src/libslic3r/PrintConfig.cpp:1588 src/libslic3r/PrintConfig.cpp:1596 +#: src/libslic3r/PrintConfig.cpp:1696 src/libslic3r/PrintConfig.cpp:1704 msgid "Extra length on restart" msgstr "Lunghezza extra in ripresa" -#: src/libslic3r/PrintConfig.cpp:1390 +#: src/libslic3r/PrintConfig.cpp:1498 msgid "Extra loading distance" msgstr "Distanza di caricamento aggiuntiva" -#: src/libslic3r/PrintConfig.cpp:477 +#: src/libslic3r/PrintConfig.cpp:513 msgid "Extra perimeters if needed" msgstr "Perimetro aggiuntivo se necessario" -#: src/slic3r/GUI/GUI_ObjectList.cpp:278 src/slic3r/GUI/Tab.cpp:1434 -#: src/slic3r/GUI/wxExtensions.cpp:598 src/libslic3r/PrintConfig.cpp:487 +#: src/slic3r/GUI/GCodeViewer.cpp:2277 src/slic3r/GUI/GCodeViewer.cpp:2313 +#: src/slic3r/GUI/GCodeViewer.cpp:2318 src/slic3r/GUI/GUI_ObjectList.cpp:296 +#: src/slic3r/GUI/Tab.cpp:1780 src/slic3r/GUI/wxExtensions.cpp:515 +#: src/libslic3r/PrintConfig.cpp:523 msgid "Extruder" msgstr "Estrusore" -#: src/slic3r/GUI/DoubleSlider.cpp:1134 src/slic3r/GUI/DoubleSlider.cpp:1170 -#: src/slic3r/GUI/GLCanvas3D.cpp:977 src/slic3r/GUI/GUI_ObjectList.cpp:1704 -#: src/slic3r/GUI/Tab.cpp:2320 src/libslic3r/GCode/PreviewData.cpp:445 -#, possible-c-format +#: src/slic3r/GUI/DoubleSlider.cpp:1263 src/slic3r/GUI/DoubleSlider.cpp:1297 +#: src/slic3r/GUI/GLCanvas3D.cpp:983 src/slic3r/GUI/GUI_ObjectList.cpp:1832 +#: src/slic3r/GUI/Tab.cpp:2489 src/libslic3r/GCode/PreviewData.cpp:450 +#, c-format msgid "Extruder %d" msgstr "Estrusore %d" -#: src/slic3r/GUI/DoubleSlider.cpp:1011 +#: src/slic3r/GUI/DoubleSlider.cpp:1137 msgid "Extruder (tool) is changed to Extruder \"%1%\"" msgstr "Estrusore (attrezzo) viene cambiato a Estrusore \"%1%\"" -#: src/slic3r/GUI/ConfigWizard.cpp:1017 -msgid "Extruder and Bed Temperatures" -msgstr "Temperature dell'estrusore e del piano" - #: src/slic3r/GUI/WipeTowerDialog.cpp:255 msgid "Extruder changed to" msgstr "Cambia estrusore a" -#: src/slic3r/GUI/Tab.cpp:1233 +#: src/slic3r/GUI/Tab.cpp:1563 msgid "Extruder clearance (mm)" msgstr "Spazio libero per l'estrusore (mm)" -#: src/libslic3r/PrintConfig.cpp:522 +#: src/libslic3r/PrintConfig.cpp:558 msgid "Extruder Color" msgstr "Colore estrusore" -#: src/libslic3r/PrintConfig.cpp:529 +#: src/libslic3r/PrintConfig.cpp:565 msgid "Extruder offset" msgstr "Offset estrusore" -#: src/libslic3r/PrintConfig.cpp:911 -msgid "Extruder temperature for first layer. If you want to control temperature manually during print, set this to zero to disable temperature control commands in the output file." -msgstr "Temperatura estrusore per il primo layer. Se vuoi controllare manualmente la temperatura durante la stampa, imposta questo a zero per disattivare i comandi di controllo temperatura nel file di output." - -#: src/libslic3r/PrintConfig.cpp:2065 -msgid "Extruder temperature for layers after the first one. Set this to zero to disable temperature control commands in the output." -msgstr "Temperatura estrusore per i layer successivi al primo. Imposta questo a zero per disattivare i comandi di controllo temperatura nell'output." - -#: src/slic3r/GUI/GUI_ObjectList.cpp:99 src/slic3r/GUI/GUI_ObjectList.cpp:617 -#: src/slic3r/GUI/Tab.cpp:1180 src/slic3r/GUI/Tab.cpp:1838 -#: src/libslic3r/PrintConfig.cpp:488 src/libslic3r/PrintConfig.cpp:1002 -#: src/libslic3r/PrintConfig.cpp:1409 src/libslic3r/PrintConfig.cpp:1737 -#: src/libslic3r/PrintConfig.cpp:1938 src/libslic3r/PrintConfig.cpp:1965 +#: src/slic3r/GUI/GUI_ObjectList.cpp:97 src/slic3r/GUI/GUI_ObjectList.cpp:656 +#: src/slic3r/GUI/Tab.cpp:1510 src/slic3r/GUI/Tab.cpp:2072 +#: src/libslic3r/PrintConfig.cpp:524 src/libslic3r/PrintConfig.cpp:1046 +#: src/libslic3r/PrintConfig.cpp:1517 src/libslic3r/PrintConfig.cpp:1852 +#: src/libslic3r/PrintConfig.cpp:2080 src/libslic3r/PrintConfig.cpp:2107 msgid "Extruders" msgstr "Estrusori" -#: src/libslic3r/PrintConfig.cpp:539 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1061 +msgid "Extruders count" +msgstr "Conteggio estrusori" + +#: src/slic3r/GUI/GCodeViewer.cpp:2493 +msgid "Extrusion" +msgstr "Estrusione" + +#: src/libslic3r/PrintConfig.cpp:575 msgid "Extrusion axis" msgstr "Asse estrusore" -#: src/libslic3r/PrintConfig.cpp:545 +#: src/libslic3r/PrintConfig.cpp:581 msgid "Extrusion multiplier" msgstr "Moltiplicatore estrusione" -#: src/slic3r/GUI/ConfigWizard.cpp:1037 +#: src/slic3r/GUI/ConfigWizard.cpp:1403 msgid "Extrusion Temperature:" msgstr "Temperatura di estrusione:" -#: src/slic3r/GUI/Tab.cpp:1205 +#: src/slic3r/GUI/Tab.cpp:1535 msgid "Extrusion width" msgstr "Larghezza estrusione" -#: src/slic3r/GUI/GUI_ObjectList.cpp:100 src/slic3r/GUI/GUI_ObjectList.cpp:618 -#: src/libslic3r/PrintConfig.cpp:447 src/libslic3r/PrintConfig.cpp:555 -#: src/libslic3r/PrintConfig.cpp:877 src/libslic3r/PrintConfig.cpp:1010 -#: src/libslic3r/PrintConfig.cpp:1418 src/libslic3r/PrintConfig.cpp:1757 -#: src/libslic3r/PrintConfig.cpp:1947 src/libslic3r/PrintConfig.cpp:2106 +#: src/slic3r/GUI/GUI_ObjectList.cpp:98 src/slic3r/GUI/GUI_ObjectList.cpp:657 +#: src/libslic3r/PrintConfig.cpp:483 src/libslic3r/PrintConfig.cpp:591 +#: src/libslic3r/PrintConfig.cpp:919 src/libslic3r/PrintConfig.cpp:1054 +#: src/libslic3r/PrintConfig.cpp:1526 src/libslic3r/PrintConfig.cpp:1872 +#: src/libslic3r/PrintConfig.cpp:2089 src/libslic3r/PrintConfig.cpp:2249 msgid "Extrusion Width" msgstr "Larghezza Estrusione" -#: src/slic3r/GUI/Plater.cpp:162 +#: src/slic3r/GUI/Plater.cpp:168 msgid "Facets" msgstr "Facce" -#: src/slic3r/GUI/GUI_ObjectList.cpp:349 +#: src/slic3r/GUI/GUI_ObjectList.cpp:396 msgid "facets added" msgstr "aggiunte facce" -#: src/slic3r/GUI/GUI_ObjectList.cpp:348 +#: src/slic3r/GUI/GUI_ObjectList.cpp:395 msgid "facets removed" msgstr "rimosse facce" -#: src/slic3r/GUI/GUI_ObjectList.cpp:350 +#: src/slic3r/GUI/GUI_ObjectList.cpp:397 msgid "facets reversed" msgstr "facce invertite" -#: src/libslic3r/PrintConfig.cpp:2517 +#: src/libslic3r/PrintConfig.cpp:2660 msgid "Faded layers" msgstr "Layer sfumati" -#: src/libslic3r/Zipper.cpp:44 +#: src/libslic3r/miniz_extension.cpp:103 msgid "failed finding central directory" msgstr "directory centrale non trovata" @@ -2669,105 +3145,115 @@ msgstr "directory centrale non trovata" msgid "Failed loading the input model." msgstr "Caricamento modello input fallito." -#: src/libslic3r/PrintBase.cpp:71 +#: src/libslic3r/PrintBase.cpp:72 msgid "Failed processing of the output_filename_format template." msgstr "Elaborazione fallita del modello output_filename_format." -#: src/slic3r/GUI/PresetHints.cpp:42 +#: src/slic3r/GUI/PresetHints.cpp:41 msgid "Fan" msgstr "Ventola" -#: src/slic3r/GUI/Tab.cpp:1456 +#: src/slic3r/GUI/Tab.cpp:1802 msgid "Fan settings" msgstr "Impostazioni ventola" -#: src/slic3r/GUI/GUI_Preview.cpp:225 src/slic3r/GUI/Tab.cpp:1457 +#: src/slic3r/GUI/GUI_Preview.cpp:279 src/slic3r/GUI/Tab.cpp:1803 msgid "Fan speed" msgstr "Velocità ventola" -#: src/libslic3r/GCode/PreviewData.cpp:353 +#: src/slic3r/GUI/GCodeViewer.cpp:2239 src/libslic3r/GCode/PreviewData.cpp:358 msgid "Fan Speed (%)" msgstr "Velocità ventola (%)" -#: src/libslic3r/PrintConfig.cpp:2405 +#: src/libslic3r/PrintConfig.cpp:2548 msgid "Fast" msgstr "Veloce" -#: src/libslic3r/PrintConfig.cpp:2406 +#: src/libslic3r/PrintConfig.cpp:2549 msgid "Fast tilt" msgstr "Tilt veloce" -#: src/slic3r/GUI/GUI_App.cpp:141 +#: src/slic3r/GUI/GUI_App.cpp:531 msgid "Fatal error" msgstr "Errore irreversibile" -#: src/slic3r/GUI/GUI_Preview.cpp:221 src/slic3r/GUI/GUI_Preview.cpp:575 -#: src/libslic3r/GCode/PreviewData.cpp:345 +#: src/slic3r/GUI/GUI_Init.cpp:88 +msgid "Fatal error, exception catched: %1%" +msgstr "Fatal error, eccezione registrata: %1%" + +#: src/slic3r/GUI/GCodeViewer.cpp:2225 src/slic3r/GUI/GCodeViewer.cpp:2233 +#: src/slic3r/GUI/GUI_Preview.cpp:275 src/slic3r/GUI/GUI_Preview.cpp:787 +#: src/libslic3r/GCode/PreviewData.cpp:350 msgid "Feature type" msgstr "Tipo di caratteristica" -#: src/slic3r/GUI/GUI_Preview.cpp:234 src/slic3r/GUI/GUI_Preview.cpp:235 +#: src/slic3r/GUI/GUI_Preview.cpp:293 src/slic3r/GUI/GUI_Preview.cpp:295 +#: src/slic3r/GUI/GUI_Preview.cpp:316 msgid "Feature types" msgstr "Tipi di caratteristica" -#: src/slic3r/GUI/ConfigWizard.cpp:1525 +#: src/slic3r/GUI/ConfigWizard.cpp:1926 msgid "FFF Technology Printers" msgstr "Stampanti con tecnologia FFF" -#: src/slic3r/GUI/Plater.cpp:816 src/slic3r/GUI/Tab.cpp:1425 -#: src/slic3r/GUI/Tab.cpp:1426 +#: src/slic3r/GUI/Plater.cpp:691 src/slic3r/GUI/Tab.cpp:1770 +#: src/slic3r/GUI/Tab.cpp:1771 msgid "Filament" msgstr "Filamento" -#: src/slic3r/GUI/Preset.cpp:1522 +#: src/libslic3r/Preset.cpp:1301 msgid "filament" msgstr "filamento" -#: src/slic3r/GUI/ConfigWizard.cpp:952 +#: src/slic3r/GUI/ConfigWizard.cpp:1318 msgid "Filament and Nozzle Diameters" msgstr "Diametro filamento e ugello" -#: src/slic3r/GUI/ConfigWizard.cpp:983 +#: src/slic3r/GUI/ConfigWizard.cpp:1349 msgid "Filament Diameter:" msgstr "Diametro del filamento:" -#: src/libslic3r/PrintConfig.cpp:651 +#: src/libslic3r/PrintConfig.cpp:687 msgid "Filament is cooled by being moved back and forth in the cooling tubes. Specify desired number of these moves." msgstr "Il filamento è raffreddato venendo spostato avanti e indietro nei tubi di raffreddamento. Specificare il numero desiderato di questi movimenti." -#: src/libslic3r/PrintConfig.cpp:686 +#: src/libslic3r/PrintConfig.cpp:722 msgid "Filament load time" msgstr "Durata caricamento filamento" -#: src/libslic3r/PrintConfig.cpp:588 +#: src/libslic3r/PrintConfig.cpp:624 msgid "Filament notes" msgstr "Note filamento" -#: src/slic3r/GUI/Tab.cpp:1323 src/slic3r/GUI/Tab.cpp:1378 +#: src/slic3r/GUI/Tab.cpp:1669 msgid "Filament Overrides" msgstr "Sovrascrittura filamento" -#: src/libslic3r/PrintConfig.cpp:1381 +#: src/libslic3r/PrintConfig.cpp:1489 msgid "Filament parking position" msgstr "Posizione di parcheggio del filamento" -#: src/slic3r/GUI/ConfigWizard.cpp:2013 +#: src/slic3r/GUI/ConfigWizard.cpp:2524 msgid "Filament Profiles Selection" msgstr "Selezione Profili Filamento" -#: src/slic3r/GUI/Tab.cpp:1471 +#: src/slic3r/GUI/Tab.cpp:1817 msgid "Filament properties" msgstr "Proprietà filamento" -#: src/slic3r/GUI/Tab.hpp:355 +#: src/slic3r/GUI/Tab.hpp:409 msgid "Filament Settings" msgstr "Impostazioni Filamento" -#: src/libslic3r/PrintConfig.cpp:726 +#: src/slic3r/GUI/GLCanvas3D.cpp:4304 src/slic3r/GUI/GLCanvas3D.cpp:4940 +msgid "Filament Settings Tab" +msgstr "Scheda Impostazioni Filamento" + +#: src/libslic3r/PrintConfig.cpp:762 msgid "Filament type" msgstr "Tipo filamento" -#: src/libslic3r/PrintConfig.cpp:701 +#: src/libslic3r/PrintConfig.cpp:737 msgid "Filament unload time" msgstr "Durata scaricamento filamento" @@ -2775,75 +3261,79 @@ msgstr "Durata scaricamento filamento" msgid "filaments" msgstr "filamenti" -#: src/slic3r/GUI/ConfigWizard.cpp:1471 src/slic3r/GUI/ConfigWizard.cpp:2013 +#: src/slic3r/GUI/ConfigWizard.cpp:1872 src/slic3r/GUI/ConfigWizard.cpp:2524 msgid "Filaments" msgstr "Filamenti" -#: src/libslic3r/Zipper.cpp:72 +#: src/slic3r/GUI/ConfigWizard.cpp:691 +msgid "Filaments marked with * are not compatible with some installed printers." +msgstr "I filamenti segnati con * non sono compatibili con alcune stampanti installate." + +#: src/libslic3r/miniz_extension.cpp:131 msgid "file close failed" msgstr "chiusura del file fallita" -#: src/libslic3r/Zipper.cpp:66 +#: src/libslic3r/miniz_extension.cpp:125 msgid "file create failed" msgstr "generazione del file non riuscita" -#: src/slic3r/GUI/MainFrame.cpp:791 +#: src/slic3r/GUI/MainFrame.cpp:1492 msgid "File Not Found" msgstr "file non trovato" -#: src/libslic3r/Zipper.cpp:86 +#: src/libslic3r/miniz_extension.cpp:145 msgid "file not found" msgstr "file non trovato" -#: src/libslic3r/Zipper.cpp:64 +#: src/libslic3r/miniz_extension.cpp:123 msgid "file open failed" msgstr "apertura file non riuscita" -#: src/libslic3r/Zipper.cpp:70 +#: src/libslic3r/miniz_extension.cpp:129 msgid "file read failed" msgstr "lettura del file non riuscita" -#: src/libslic3r/Zipper.cpp:74 +#: src/libslic3r/miniz_extension.cpp:133 msgid "file seek failed" msgstr "ricerca file fallita" -#: src/libslic3r/Zipper.cpp:76 +#: src/libslic3r/miniz_extension.cpp:135 msgid "file stat failed" msgstr "statistica file non riuscita" -#: src/libslic3r/Zipper.cpp:36 +#: src/libslic3r/miniz_extension.cpp:95 msgid "file too large" msgstr "file troppo grande" -#: src/libslic3r/Zipper.cpp:68 +#: src/libslic3r/miniz_extension.cpp:127 msgid "file write failed" msgstr "scrittura file fallita" -#: src/slic3r/GUI/PrintHostDialogs.cpp:153 +#: src/slic3r/GUI/PrintHostDialogs.cpp:151 msgid "Filename" msgstr "Nome file" -#: src/libslic3r/PrintConfig.cpp:775 +#: src/libslic3r/PrintConfig.cpp:811 msgid "Fill angle" msgstr "Angolo riempimento" -#: src/libslic3r/PrintConfig.cpp:789 +#: src/libslic3r/PrintConfig.cpp:825 msgid "Fill density" msgstr "Densità riempimento" -#: src/libslic3r/PrintConfig.cpp:826 +#: src/libslic3r/PrintConfig.cpp:862 msgid "Fill pattern" msgstr "Trama riempimento" -#: src/libslic3r/PrintConfig.cpp:437 +#: src/libslic3r/PrintConfig.cpp:473 msgid "Fill pattern for bottom infill. This only affects the bottom external visible layer, and not its adjacent solid shells." msgstr "Trama per riempimento inferiore. Questo influenza solamente il layer inferiore esterno visibile, e non i gusci solidi adiacenti." -#: src/libslic3r/PrintConfig.cpp:828 +#: src/libslic3r/PrintConfig.cpp:864 msgid "Fill pattern for general low-density infill." msgstr "Trama riempimento generale a bassa densità." -#: src/libslic3r/PrintConfig.cpp:417 +#: src/libslic3r/PrintConfig.cpp:451 msgid "Fill pattern for top infill. This only affects the top visible layer, and not its adjacent solid shells." msgstr "Trama per riempimento superiore. Questo influenza solamente il layer superiore esterno visibile, e non i gusci solidi adiacenti." @@ -2851,7 +3341,7 @@ msgstr "Trama per riempimento superiore. Questo influenza solamente il layer sup msgid "Finished" msgstr "Finito" -#: src/slic3r/GUI/ConfigWizard.cpp:891 src/slic3r/GUI/Tab.cpp:1947 +#: src/slic3r/GUI/ConfigWizard.cpp:1257 src/slic3r/GUI/Tab.cpp:2132 msgid "Firmware" msgstr "Firmware" @@ -2863,44 +3353,52 @@ msgstr "Firmware flasher" msgid "Firmware image:" msgstr "Immagine firmware:" -#: src/slic3r/GUI/Tab.cpp:2577 +#: src/slic3r/GUI/Tab.cpp:2733 msgid "Firmware Retraction" msgstr "Retrazione Firmware" -#: src/slic3r/GUI/ConfigWizard.cpp:891 +#: src/slic3r/GUI/ConfigWizard.cpp:1257 msgid "Firmware Type" msgstr "Tipo Firmware" -#: src/libslic3r/PrintConfig.cpp:859 src/libslic3r/PrintConfig.cpp:868 -#: src/libslic3r/PrintConfig.cpp:876 src/libslic3r/PrintConfig.cpp:910 +#: src/libslic3r/PrintConfig.cpp:899 src/libslic3r/PrintConfig.cpp:908 +#: src/libslic3r/PrintConfig.cpp:918 src/libslic3r/PrintConfig.cpp:952 msgid "First layer" msgstr "Primo layer" -#: src/slic3r/GUI/ConfigManipulation.cpp:61 src/libslic3r/PrintConfig.cpp:889 +#: src/libslic3r/PrintConfig.cpp:909 +msgid "First layer bed temperature" +msgstr "Temperatura del piano del primo layer" + +#: src/slic3r/GUI/ConfigManipulation.cpp:60 src/libslic3r/PrintConfig.cpp:931 msgid "First layer height" msgstr "Altezza del primo layer" -#: src/libslic3r/Print.cpp:1422 +#: src/libslic3r/Print.cpp:1448 msgid "First layer height can't be greater than nozzle diameter" msgstr "L'altezza del primo layer non può essere più grande del diametro dell'ugello" -#: src/libslic3r/PrintConfig.cpp:900 +#: src/libslic3r/PrintConfig.cpp:960 +msgid "First layer nozzle temperature" +msgstr "Temperatura dell'ugello del primo layer" + +#: src/libslic3r/PrintConfig.cpp:942 msgid "First layer speed" msgstr "Velocità del primo layer" -#: src/slic3r/GUI/PresetHints.cpp:219 +#: src/slic3r/GUI/PresetHints.cpp:218 msgid "First layer volumetric" msgstr "Volumetrica primo layer" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1647 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1776 msgid "Fix through the Netfabb" msgstr "Ripara tramite Netfabb" -#: src/slic3r/GUI/Plater.cpp:3473 +#: src/slic3r/GUI/Plater.cpp:3278 msgid "Fix Throught NetFabb" msgstr "Ripara tramite NetFabb" -#: src/slic3r/GUI/GUI_App.cpp:824 +#: src/slic3r/GUI/GUI_App.cpp:1522 msgid "Flash printer &firmware" msgstr "Installa &firmware stampante" @@ -2928,44 +3426,58 @@ msgstr "Flash in corso. Non disconnettere la stampante!" msgid "Flashing succeeded!" msgstr "Flash completato con successo!" -#: src/slic3r/GUI/Tab.cpp:1218 +#: src/slic3r/GUI/Tab.cpp:1548 msgid "Flow" msgstr "Flusso" -#: src/slic3r/GUI/PresetHints.cpp:220 +#: src/libslic3r/PrintConfig.cpp:1145 +msgid "Flow rate" +msgstr "Flusso" + +#: src/slic3r/GUI/PresetHints.cpp:219 msgid "flow rate is maximized" msgstr "il flusso viene massimizzato" -#: src/slic3r/GUI/UpdateDialogs.cpp:286 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:555 +msgid "Following printer preset(s) is duplicated:%1%The above preset for printer \"%2%\" will be used just once." +msgstr "Il seguente(i) preset della stampante è duplicato:%1% Il preset sopra per la stampante \"%2%\" verrà usato solo una volta." + +#: src/slic3r/GUI/UpdateDialogs.cpp:287 msgid "For more information please visit our wiki page:" msgstr "Per maggiori informazioni visita la nostra pagina wiki:" -#: src/slic3r/GUI/Plater.cpp:501 src/slic3r/GUI/Plater.cpp:624 +#: src/slic3r/GUI/Plater.cpp:367 src/slic3r/GUI/Plater.cpp:490 msgid "For support enforcers only" msgstr "Solo per rinforzi supporto" #. TRN Description for "WHITE BULLET" -#: src/slic3r/GUI/Tab.cpp:3267 -msgid "for the left button: indicates a non-system (or non-default) preset,\nfor the right button: indicates that the settings hasn't been modified." -msgstr "per il tasto sinistro: indica un preset non di sistema (o non-predefinito),\nper il tasto destro: indica che le impostazioni non sono state modificate." +#: src/slic3r/GUI/Tab.cpp:3702 +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 "" +"per il tasto sinistro: indica un preset non di sistema (o non-predefinito),\n" +"per il tasto destro: indica che le impostazioni non sono state modificate." -#: src/slic3r/GUI/ConfigManipulation.cpp:136 -msgid "For the Wipe Tower to work with the soluble supports, the support layers\nneed to be synchronized with the object layers." +#: src/slic3r/GUI/ConfigManipulation.cpp:135 +msgid "" +"For the Wipe Tower to work with the soluble supports, the support layers\n" +"need to be synchronized with the object layers." msgstr "Per far sì che la torre di spurgo funzioni con i supporti solubili, i layer dei supporti devono essere sincronizzati con quelli del modello." -#: src/libslic3r/Print.cpp:1396 +#: src/libslic3r/Print.cpp:1422 msgid "For the Wipe Tower to work with the soluble supports, the support layers need to be synchronized with the object layers." msgstr "Per far sì che la torre di spurgo funzioni con i supporti solubili, i layer dei supporti devono essere sincronizzati con quelli del modello." -#: src/libslic3r/PrintConfig.cpp:2864 +#: src/libslic3r/PrintConfig.cpp:3028 msgid "Force pad around object everywhere" msgstr "Forza il Pad ovunque intorno all'oggetto" -#: src/libslic3r/PrintConfig.cpp:1729 +#: src/libslic3r/PrintConfig.cpp:1844 msgid "Force solid infill for regions having a smaller area than the specified threshold." msgstr "Forza riempimento solido per le regioni con un'area inferiore al limite specificato." -#: src/libslic3r/PrintConfig.cpp:1072 +#: src/libslic3r/PrintConfig.cpp:1116 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 "Forza la generazione di perimetri solidi tra volumi o materiali adiacenti. Utile per stampe multi estrusore con materiali traslucidi o supporti solubili manuali." @@ -2973,244 +3485,305 @@ msgstr "Forza la generazione di perimetri solidi tra volumi o materiali adiacent msgid "From" msgstr "Da" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2223 +#: src/slic3r/GUI/GCodeViewer.cpp:2197 +msgid "from" +msgstr "da" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2389 msgid "From Object List You can't delete the last solid part from object." msgstr "Non è possibile eliminare l'ultima parte solida dall'oggetto nell'elenco Oggetti." -#: src/slic3r/GUI/MainFrame.cpp:667 +#: src/slic3r/GUI/MainFrame.cpp:964 src/slic3r/GUI/MainFrame.cpp:1284 msgid "Front" msgstr "Frontale" -#: src/slic3r/GUI/MainFrame.cpp:667 +#: src/slic3r/GUI/MainFrame.cpp:964 src/slic3r/GUI/MainFrame.cpp:1284 msgid "Front View" msgstr "Vista anteriore" -#: src/slic3r/GUI/Tab.cpp:1013 +#: src/slic3r/GUI/Tab.cpp:1331 msgid "full profile name" msgstr "nome completo profilo" -#: src/slic3r/GUI/MainFrame.cpp:826 +#: src/slic3r/GUI/MainFrame.cpp:1527 msgid "G-code" msgstr "G-code" -#: src/slic3r/GUI/DoubleSlider.cpp:1021 -msgid "G-code associated to this tick mark is in a conflict with print mode.\nEditing it will cause changes of Slider data." -msgstr "Il G-code associato a questo segno di spunta è in conflitto con la modalità di stampa.\nLa modifica causerà cambiamenti nei dati della barra di scorrimento." +#: src/slic3r/GUI/DoubleSlider.cpp:1146 +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 "" +"Il G-code associato a questo segno di spunta è in conflitto con la modalità di stampa.\n" +"La modifica causerà cambiamenti nei dati della barra di scorrimento." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:130 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:165 msgid "G-code file exported to %1%" msgstr "G-code esportato in %1%" -#: src/libslic3r/PrintConfig.cpp:936 +#: src/libslic3r/PrintConfig.cpp:980 msgid "G-code flavor" msgstr "Formato G-code" -#: src/libslic3r/PrintConfig.cpp:721 +#: src/slic3r/GUI/MainFrame.cpp:66 src/slic3r/GUI/MainFrame.cpp:79 +msgid "G-code preview" +msgstr "Anteprima G-code" + +#: src/libslic3r/PrintConfig.cpp:3552 +msgid "G-code viewer" +msgstr "Visualizzatore G-code" + +#: src/libslic3r/PrintConfig.cpp:757 msgid "g/cm³" msgstr "g/cm³" -#: src/libslic3r/PrintConfig.cpp:2505 +#: src/libslic3r/PrintConfig.cpp:2648 msgid "g/ml" msgstr "g/ml" -#: src/slic3r/GUI/GUI_Preview.cpp:244 src/libslic3r/ExtrusionEntity.cpp:317 -#: src/libslic3r/PrintConfig.cpp:918 +#: src/slic3r/GUI/GUI_Preview.cpp:309 src/libslic3r/ExtrusionEntity.cpp:322 +#: src/libslic3r/ExtrusionEntity.cpp:352 src/libslic3r/PrintConfig.cpp:962 msgid "Gap fill" msgstr "Riempimento spazi" -#: src/slic3r/GUI/Preferences.cpp:22 src/slic3r/GUI/Tab.cpp:1796 -#: src/slic3r/GUI/Tab.cpp:2040 +#: src/slic3r/GUI/Preferences.cpp:24 src/slic3r/GUI/Tab.cpp:2058 +#: src/slic3r/GUI/Tab.cpp:2240 src/slic3r/GUI/Tab.cpp:2348 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1066 msgid "General" msgstr "Generale" -#: src/libslic3r/PrintConfig.cpp:1307 +#: 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 "Genera almeno il numero di skirt necessari per consumare la quantità di filamento specificata per il primo layer. Per le macchine multi estrusore, questo minimo riguarda ciascun estrusore." -#: src/libslic3r/PrintConfig.cpp:1865 +#: src/libslic3r/PrintConfig.cpp:2007 msgid "Generate support material" msgstr "Genera materiale di supporto" -#: src/libslic3r/PrintConfig.cpp:1926 +#: src/libslic3r/PrintConfig.cpp:2068 msgid "Generate support material for the specified number of layers counting from bottom, regardless of whether normal support material is enabled or not and regardless of any angle threshold. This is useful for getting more adhesion of objects having a very thin or poor footprint on the build plate." msgstr "Genera materiale di supporto per il numero di layer specificati partendo dal basso, a prescindere che sia abilitato il materiale di supporto normale o meno, e indipendentemente dall'angolo limite. Questo è utile per ottenere più adesione negli oggetti con un appoggio sul piano molto sottile o fragile." -#: src/libslic3r/PrintConfig.cpp:2613 +#: src/libslic3r/PrintConfig.cpp:2756 msgid "Generate supports" msgstr "Genera supporti" -#: src/libslic3r/PrintConfig.cpp:2615 +#: src/libslic3r/PrintConfig.cpp:2758 msgid "Generate supports for the models" msgstr "Genera supporti per i modelli" -#: src/libslic3r/Print.cpp:1614 +#: src/slic3r/GUI/Plater.cpp:3554 +msgid "generated warnings" +msgstr "ha generato avvisi" + +#: src/libslic3r/Print.cpp:1645 msgid "Generating brim" msgstr "Generazione brim" -#: src/libslic3r/Print.cpp:1642 +#: src/libslic3r/Print.cpp:1680 msgid "Generating G-code" msgstr "Generazione G-code" -#: src/libslic3r/SLAPrintSteps.cpp:48 +#: src/slic3r/GUI/GCodeViewer.cpp:1392 +msgid "Generating index buffers" +msgstr "Generazione indici buffer" + +#: src/libslic3r/SLAPrintSteps.cpp:49 msgid "Generating pad" msgstr "Generazione pad" -#: src/libslic3r/PrintObject.cpp:152 +#: src/libslic3r/PrintObject.cpp:158 msgid "Generating perimeters" msgstr "Generazione perimetri" -#: src/libslic3r/Print.cpp:1606 +#: src/libslic3r/Print.cpp:1636 msgid "Generating skirt" msgstr "Generando skirt" -#: src/libslic3r/PrintObject.cpp:395 +#: src/libslic3r/PrintObject.cpp:422 msgid "Generating support material" msgstr "Generazione materiale di supporto" -#: src/libslic3r/SLAPrintSteps.cpp:46 src/libslic3r/SLAPrintSteps.cpp:356 +#: src/libslic3r/SLAPrintSteps.cpp:47 src/libslic3r/SLAPrintSteps.cpp:359 msgid "Generating support points" msgstr "Generazione punti di supporto" -#: src/libslic3r/SLAPrintSteps.cpp:47 +#: src/libslic3r/SLAPrintSteps.cpp:48 msgid "Generating support tree" msgstr "Generazione albero di supporto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2022 +#: src/slic3r/GUI/GCodeViewer.cpp:933 +msgid "Generating toolpaths" +msgstr "Generazione percorsi" + +#: src/slic3r/GUI/GCodeViewer.cpp:1318 +msgid "Generating vertex buffer" +msgstr "Generazione buffer vertici" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2181 msgid "Generic" msgstr "Generico" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:175 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:169 msgid "Gizmo cut" msgstr "Gizmo Taglia" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:172 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:166 msgid "Gizmo move" msgstr "Gizmo Sposta" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:176 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:198 +msgid "Gizmo move: Press to snap by 1mm" +msgstr "Gizmo Sposta: Premere per scatti di 1mm" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:170 msgid "Gizmo Place face on bed" msgstr "Gizmo Posiziona faccia sul piano" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:174 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:168 msgid "Gizmo rotate" msgstr "Gizmo Ruota" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:173 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:203 +msgid "Gizmo rotate: Press to rotate selected objects around their own center" +msgstr "Gizmo ruota: Premi per ruotare gli oggetti attorno al loro centro" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:167 msgid "Gizmo scale" msgstr "Gizmo Ridimensiona" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:177 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:201 +msgid "Gizmo scale: Press to activate one direction scaling" +msgstr "Gizmo ridimensiona: Premi per attivare il ridimensionamento su una direzione" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:202 +msgid "Gizmo scale: Press to scale selected objects around their own center" +msgstr "Gizmo ridimensiona: Premi per ridimensionare gli oggetti attorno al loro centro" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:199 +msgid "Gizmo scale: Press to snap by 5%" +msgstr "Gizmo Ridimensiona: Premere per salti del 5%" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:200 +msgid "Gizmo scale: Scale selection to fit print volume" +msgstr "Gizmo ridimensiona: Ridimensiona la selezione per riempire il volume di stampa" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:171 msgid "Gizmo SLA hollow" msgstr "Gizmo SLA Svuota" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:178 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:172 msgid "Gizmo SLA support points" msgstr "Gizmo Punti supporto SLA" -#: src/slic3r/GUI/GLCanvas3D.cpp:2921 -#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:562 +#: src/slic3r/GUI/GLCanvas3D.cpp:3165 +#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:520 msgid "Gizmo-Move" msgstr "Gizmo-Sposta" -#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:489 +#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:639 msgid "Gizmo-Place on Face" msgstr "Gizmo-Posiziona su faccia" -#: src/slic3r/GUI/GLCanvas3D.cpp:3001 -#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:564 +#: src/slic3r/GUI/GLCanvas3D.cpp:3249 +#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:522 msgid "Gizmo-Rotate" msgstr "Gizmo-Ruota" -#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:563 +#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:521 msgid "Gizmo-Scale" msgstr "Gizmo-Ridimensiona" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:201 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:199 msgid "Gizmos" msgstr "Gizmo" -#: src/slic3r/GUI/AboutDialog.cpp:259 +#: src/slic3r/GUI/AboutDialog.cpp:284 src/slic3r/GUI/GUI_App.cpp:244 msgid "GNU Affero General Public License, version 3" msgstr "GNU Affero General Public License, versione 3" -#: src/slic3r/GUI/ConfigWizard.cpp:980 +#: src/slic3r/GUI/ConfigWizard.cpp:1346 msgid "Good precision is required, so use a caliper and do multiple measurements along the filament, then compute the average." msgstr "È necessaria una buona precisione, quindi utilizza un calibro ed effettua diverse misurazioni lungo il filamento, quindi calcola la media." -#: src/libslic3r/PrintConfig.cpp:844 +#: src/libslic3r/PrintConfig.cpp:882 msgid "Grid" msgstr "Griglia" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2454 +#: src/slic3r/GUI/PrintHostDialogs.cpp:57 +msgid "Group" +msgstr "Gruppo" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2846 msgid "Group manipulation" msgstr "Manipolazione gruppo" -#: src/slic3r/GUI/Preferences.cpp:133 +#: src/slic3r/GUI/Preferences.cpp:200 msgid "GUI" msgstr "GUI" -#: src/libslic3r/PrintConfig.cpp:852 +#: src/libslic3r/PrintConfig.cpp:890 msgid "Gyroid" msgstr "Giroide" -#: src/slic3r/GUI/Tab.cpp:2937 -msgid "has the following unsaved changes:" -msgstr "ha le seguenti modifiche non salvate:" - -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:47 msgid "Head diameter" msgstr "Diametro testa" -#: src/slic3r/GUI/ConfigManipulation.cpp:317 -msgid "Head penetration should not be greater than the head width." -msgstr "L'inserimento della capocchia non deve essere più grande della sua larghezza." +#: src/libslic3r/PrintConfig.cpp:2772 +msgid "Head penetration" +msgstr "Penetrazione testa" -#: src/libslic3r/PrintConfig.cpp:869 +#: src/slic3r/GUI/ConfigManipulation.cpp:322 +msgid "Head penetration should not be greater than the head width." +msgstr "L'inserimento della testa non deve essere più grande della sua larghezza." + +#: src/libslic3r/PrintConfig.cpp:910 msgid "Heated build plate temperature for the first layer. Set this to zero to disable bed temperature control commands in the output." msgstr "Temperatura piano riscaldato per il primo layer. Imposta a zero per disattivare i comandi di controllo temperatura nell'output." -#: src/slic3r/GUI/GUI_Preview.cpp:222 src/libslic3r/PrintConfig.cpp:500 +#: src/slic3r/GUI/GUI_Preview.cpp:276 src/libslic3r/PrintConfig.cpp:536 msgid "Height" msgstr "Altezza" -#: src/libslic3r/GCode/PreviewData.cpp:347 +#: src/slic3r/GUI/GCodeViewer.cpp:2236 src/libslic3r/GCode/PreviewData.cpp:352 msgid "Height (mm)" msgstr "Altezza (mm)" -#: src/libslic3r/PrintConfig.cpp:1688 +#: src/libslic3r/PrintConfig.cpp:1796 msgid "Height of skirt expressed in layers. Set this to a tall value to use skirt as a shield against drafts." msgstr "Altezza dello skirt espresso in layer. Imposta un valore alto per utilizzare lo skirt come scudo contro le scolature." -#: src/libslic3r/PrintConfig.cpp:2360 +#: src/libslic3r/PrintConfig.cpp:2503 msgid "Height of the display" msgstr "Altezza del display" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1500 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1631 msgid "Height range Modifier" -msgstr "Modificatore intervallo Altezza" +msgstr "Modificatore intervallo altezza" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2507 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2899 msgid "Height ranges" msgstr "Intervalli Altezza" -#: src/libslic3r/PrintConfig.cpp:261 +#: src/libslic3r/PrintConfig.cpp:295 msgid "Heights at which a filament change is to occur." msgstr "Altezze alle quali i cambi di filamento devono avvenire." -#: src/slic3r/GUI/ConfigWizard.cpp:433 -#, possible-c-format +#: src/slic3r/GUI/ConfigWizard.cpp:451 +#, 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 "Ciao, benvenuto su %s! La %s ti aiuterà con la configurazione iniziale; giusto qualche impostazione e sarai pronto a stampare." -#: src/libslic3r/PrintConfig.cpp:3365 +#: src/libslic3r/PrintConfig.cpp:3564 msgid "Help" msgstr "Aiuto" -#: src/libslic3r/PrintConfig.cpp:3371 +#: src/libslic3r/PrintConfig.cpp:3570 msgid "Help (FFF options)" msgstr "Aiuto (opzioni FFF)" -#: src/libslic3r/PrintConfig.cpp:3376 +#: src/libslic3r/PrintConfig.cpp:3575 msgid "Help (SLA options)" msgstr "Aiuto (opzioni SLA)" @@ -3218,96 +3791,80 @@ msgstr "Aiuto (opzioni SLA)" msgid "Here you can adjust required purging volume (mm³) for any given pair of tools." msgstr "Qui è possibile regolare il volume di spurgo necessario (mm³) per ogni coppia di attrezzi." -#: src/libslic3r/PrintConfig.cpp:973 +#: src/libslic3r/PrintConfig.cpp:1017 msgid "High extruder current on filament swap" msgstr "Alta corrente estrusore al cambio filamento" -#: src/slic3r/GUI/GLCanvas3D.cpp:277 +#: src/slic3r/GUI/GLCanvas3D.cpp:263 msgid "Higher print quality versus higher print speed." msgstr "Qualità di stampa più alta contro velocità di stampa più alta." -#: src/libslic3r/PrintConfig.cpp:427 src/libslic3r/PrintConfig.cpp:853 +#: src/libslic3r/PrintConfig.cpp:463 src/libslic3r/PrintConfig.cpp:891 msgid "Hilbert Curve" msgstr "Curva di Hilbert" -#: src/slic3r/GUI/Plater.cpp:1042 +#: src/slic3r/GUI/Plater.cpp:916 msgid "Hold Shift to Slice & Export G-code" msgstr "Tieni premuto Shift per fare lo Slice & Esportare il G-code" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:47 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:46 msgid "Hole depth" msgstr "Profondità foro" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:46 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:45 msgid "Hole diameter" msgstr "Diametro foro" -#: src/slic3r/GUI/Plater.cpp:2760 -msgid "Hollow" -msgstr "Svuota" - -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:977 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:785 msgid "Hollow and drill" msgstr "Svuota e perfora" -#: src/libslic3r/PrintConfig.cpp:2910 +#: src/libslic3r/PrintConfig.cpp:3074 msgid "Hollow out a model to have an empty interior" msgstr "Svuota un modello per avere l'interno vuoto" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:41 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:40 msgid "Hollow this object" msgstr "Svuota questo oggetto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:108 src/slic3r/GUI/Tab.cpp:3654 -#: src/slic3r/GUI/Tab.cpp:3655 src/libslic3r/SLA/Hollowing.cpp:46 -#: src/libslic3r/SLA/Hollowing.cpp:58 src/libslic3r/SLA/Hollowing.cpp:67 -#: src/libslic3r/SLA/Hollowing.cpp:76 src/libslic3r/PrintConfig.cpp:2909 -#: src/libslic3r/PrintConfig.cpp:2916 src/libslic3r/PrintConfig.cpp:2926 -#: src/libslic3r/PrintConfig.cpp:2935 +#: src/slic3r/GUI/GUI_ObjectList.cpp:106 src/slic3r/GUI/Tab.cpp:4073 +#: src/slic3r/GUI/Tab.cpp:4074 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:3073 +#: src/libslic3r/PrintConfig.cpp:3080 src/libslic3r/PrintConfig.cpp:3090 +#: src/libslic3r/PrintConfig.cpp:3099 msgid "Hollowing" msgstr "Svuotamento" -#: src/slic3r/GUI/Plater.cpp:2926 -msgid "Hollowing cancelled." -msgstr "Svuotamento annullato." - -#: src/slic3r/GUI/Plater.cpp:2927 -msgid "Hollowing done." -msgstr "Svuotamento completato." - -#: src/slic3r/GUI/Plater.cpp:2929 -msgid "Hollowing failed." -msgstr "Svuotamento non riuscito." - -#: src/libslic3r/PrintConfig.cpp:2937 +#: src/libslic3r/PrintConfig.cpp:3101 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 inflated back to the specified offset. A greater closing distance makes the interior more rounded. At zero, the interior will resemble the exterior the most." msgstr "Lo svuotamento avviene in due passaggi: prima, viene calcolato un interno immaginario (offset più la distanza di chiusura) nell'oggetto e viene quindi riportato all'offset specificato. Una distanza di chiusura più grande rende l'interno più arrotondato. A zero, l'interno sarà più somigliante all'esterno." -#: src/libslic3r/SLAPrintSteps.cpp:43 +#: src/libslic3r/SLAPrintSteps.cpp:44 msgid "Hollowing model" msgstr "Svuotamento modello" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:813 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:624 msgid "Hollowing parameter change" msgstr "Cambio parametro svuotamento" -#: src/libslic3r/PrintConfig.cpp:850 src/libslic3r/PrintConfig.cpp:2011 +#: src/libslic3r/PrintConfig.cpp:888 src/libslic3r/PrintConfig.cpp:2153 msgid "Honeycomb" msgstr "Nido d'ape" -#: src/slic3r/GUI/Tab.cpp:1064 +#: src/slic3r/GUI/Tab.cpp:1386 msgid "Horizontal shells" msgstr "Gusci orizzontali" -#: src/libslic3r/PrintConfig.cpp:245 +#: 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." -#: src/slic3r/GUI/PrintHostDialogs.cpp:152 +#: src/slic3r/GUI/PrintHostDialogs.cpp:150 msgid "Host" msgstr "Host" -#: src/libslic3r/PrintConfig.cpp:1332 +#: src/libslic3r/PrintConfig.cpp:1440 msgid "Host Type" msgstr "Tipo di Host" @@ -3315,189 +3872,249 @@ msgstr "Tipo di Host" msgid "Hostname" msgstr "Nome Host" -#: src/libslic3r/PrintConfig.cpp:97 +#: src/libslic3r/PrintConfig.cpp:99 msgid "Hostname, IP or URL" msgstr "Nome Host, IP o URL" -#: src/slic3r/GUI/Tab.cpp:139 -msgid "Hover the cursor over buttons to find more information \nor click this button." +#: src/slic3r/GUI/Tab.cpp:210 +msgid "" +"Hover the cursor over buttons to find more information \n" +"or click this button." msgstr "Scorri il cursore sui bottoni per ottenere maggiori informazioni o clicca su questo bottone." -#: src/libslic3r/PrintConfig.cpp:2812 +#: src/libslic3r/PrintConfig.cpp:2976 msgid "How far should the pad extend around the contained geometry" msgstr "Quanto deve estendersi il Pad attorno la geometria contenuta" -#: src/libslic3r/PrintConfig.cpp:2901 +#: src/libslic3r/PrintConfig.cpp:3065 msgid "How much should the tiny connectors penetrate into the model body." msgstr "Quanto devono penetrare i piccoli connettori nel corpo del modello." -#: src/libslic3r/PrintConfig.cpp:2631 +#: src/libslic3r/PrintConfig.cpp:2774 msgid "How much the pinhead has to penetrate the model surface" msgstr "Quanto deve penetrare l'apice nella superficie del modello" -#: src/libslic3r/PrintConfig.cpp:2755 +#: src/libslic3r/PrintConfig.cpp:2919 msgid "How much the supports should lift up the supported object. If \"Pad around object\" is enabled, this value is ignored." msgstr "Quanto deve sollevarsi il supporto fino all'oggetto supportato. Se \"Pad intorno all'oggetto\" è attivo, questo valore è ignorato." -#: src/libslic3r/PrintConfig.cpp:111 +#: src/libslic3r/PrintConfig.cpp:1209 +msgid "How to apply limits" +msgstr "Come applicare i limiti" + +#: src/libslic3r/PrintConfig.cpp:1203 +msgid "How to apply the Machine Limits" +msgstr "Come applicare i Limiti Macchina" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:358 +#: src/libslic3r/PrintConfig.cpp:113 msgid "HTTPS CA File" msgstr "File HTTPS CA" -#: src/slic3r/GUI/Tab.cpp:1713 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:319 msgid "HTTPS CA file is optional. It is only needed if you use HTTPS with a self-signed certificate." msgstr "File HTTPS CA opzionale. È necessario solo se si intende usare un HTTPS con certificato autofirmato." -#: src/slic3r/GUI/Preferences.cpp:222 +#: src/slic3r/GUI/Preferences.cpp:376 msgid "Icon size in a respect to the default size" msgstr "Dimensioni icona rispetto alla dimensione predefinita" -#: src/slic3r/GUI/PrintHostDialogs.cpp:149 +#: src/slic3r/GUI/PrintHostDialogs.cpp:147 msgid "ID" msgstr "ID" -#: src/libslic3r/PrintConfig.cpp:1873 +#: src/libslic3r/PrintConfig.cpp:2015 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 "Se attivo, verranno automaticamente generati i supporti in base al valore soglia di sporgenza. Se disattivato, i supporti verranno generati solamente all'interno dei volumi di \"Rinforzo Supporto\"." -#: src/slic3r/GUI/ConfigWizard.cpp:773 -#, possible-c-format +#: src/slic3r/GUI/ConfigWizard.cpp:1132 +#, c-format msgid "If enabled, %s checks for new application versions online. When a new version becomes available, a notification is displayed at the next application startup (never during program usage). This is only a notification mechanisms, no automatic installation is done." msgstr "Se attivato, %s verifica la presenza di nuove versioni online. Quando è disponibile una nuova versione, viene mostrata una notifica al successivo avvio dell'applicazione (mai durante l'uso del programma). È solo un meccanismo di notifica, non viene effettuato nessun aggiornamento automatico." -#: src/slic3r/GUI/ConfigWizard.cpp:783 -#, possible-c-format +#: src/slic3r/GUI/ConfigWizard.cpp:1142 +#, c-format msgid "If enabled, %s downloads updates of built-in system presets in the background.These updates are downloaded into a separate temporary location.When a new preset version becomes available it is offered at application startup." msgstr "Se attivo, %s scarica in background gli aggiornamenti dei preset integrati nel sistema. Questi aggiornamenti vengono scaricati in una cartella temporanea separata. Quando è disponibile una nuova versione del preset, questa viene proposta all'avvio." -#: src/libslic3r/PrintConfig.cpp:1852 +#: src/libslic3r/PrintConfig.cpp:1994 msgid "If enabled, all printing extruders will be primed at the front edge of the print bed at the start of the print." msgstr "Se attivata, tutti gli estrusori di stampa verranno preparati nel bordo frontale del piano di stampa all'inizio della stampa." -#: src/slic3r/GUI/ConfigWizard.cpp:805 -msgid "If enabled, allows the Reload from disk command to automatically find and load the files when invoked.\nIf not enabled, the Reload from disk command will ask to select each file using an open file dialog." -msgstr "Se attivo, permette al comando di Ricarica da disco di trovare e caricare automaticamente i file quando richiesti.\nSe non attivo, il comando Ricarica da disco chiederà di selezionare ciascun file tramite finestra di apertura file." +#: src/slic3r/GUI/ConfigWizard.cpp:1164 +msgid "" +"If enabled, allows the Reload from disk command to automatically find and load the files when invoked.\n" +"If not enabled, the Reload from disk command will ask to select each file using an open file dialog." +msgstr "" +"Se attivo, permette al comando di Ricarica da disco di trovare e caricare automaticamente i file quando richiesti.\n" +"Se non attivo, il comando Ricarica da disco chiederà di selezionare ciascun file tramite finestra di apertura file." -#: src/slic3r/GUI/Preferences.cpp:74 +#: src/slic3r/GUI/Preferences.cpp:91 msgid "If enabled, allows the Reload from disk command to automatically find and load the files when invoked." msgstr "Se attivo, permette il comando Ricarica da disco per trovare e caricare automaticamente i file quando richiesto." -#: src/slic3r/GUI/Preferences.cpp:66 +#: src/slic3r/GUI/Preferences.cpp:238 +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 "Se abilitato, le modifiche effettuate utilizzando il cursore sequenziale, in anteprima, si applicano solo al livello superiore del gcode. Se disabilitato, le modifiche effettuate utilizzando il cursore sequenziale, in anteprima, si applicano all'intero gcode." + +#: src/slic3r/GUI/Preferences.cpp:83 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 application startup (never during program usage). This is only a notification mechanisms, no automatic installation is done." msgstr "Se attivato, PrusaSlicer verifica la presenza di nuove versioni online. Quando una nuova versione è disponibile, viene mostrata una notifica al successivo avvio dell'applicazione (mai durante l'uso del programma). Questo è solo un meccanismo di notifica, non viene effettuato nessun aggiornamento automatico." -#: src/slic3r/GUI/Preferences.cpp:82 +#: src/slic3r/GUI/Preferences.cpp:270 +msgid "If enabled, renders object using the environment map." +msgstr "Se abilitato, renderizza l'oggetto utilizzando la mappa ambientale." + +#: src/slic3r/GUI/Preferences.cpp:200 +msgid "If enabled, reverses the direction of zoom with mouse wheel" +msgstr "Se abilitato, inverte la direzione dello zoom con la rotella del mouse" + +#: src/slic3r/GUI/Preferences.cpp:99 msgid "If enabled, Slic3r downloads updates of built-in system presets in the background. These updates are downloaded into a separate temporary location. When a new preset version becomes available it is offered at application startup." msgstr "Se abilitato, Slic3r scarica gli aggiornamenti dei preset inclusi in background. Questi aggiornamenti sono scaricati in una posizione temporanea. Quando una nuova versione dei preset diventa disponibile, viene offerta all'avvio." -#: src/slic3r/GUI/Preferences.cpp:106 +#: src/slic3r/GUI/Preferences.cpp:137 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 "Se attivo, la scena 3D verrà renderizzata con la risoluzione Retina. Se si riscontrano problemi di prestazioni 3D, disattivare questa opzione potrebbe essere d'aiuto." -#: src/libslic3r/PrintConfig.cpp:1696 +#: src/slic3r/GUI/Preferences.cpp:215 +msgid "If enabled, the button for the collapse sidebar will be appeared in top right corner of the 3D Scene" +msgstr "Se abilitato, il pulsante per ridurre la barra di scorrimento laterale apparirà nell'angolo in alto a destra della scena 3D" + +#: src/libslic3r/PrintConfig.cpp:3698 +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/libslic3r/PrintConfig.cpp:1804 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 "Se abilitata, lo skirt sarà alto quanto l'oggetto stampato più alto. Questo è utile per evitare che una stampa ABS o ASA si deformi e si stacchi dal piano di stampa a causa di correnti d'aria." -#: src/libslic3r/PrintConfig.cpp:1858 +#: src/libslic3r/PrintConfig.cpp:2000 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 print the wipe tower. User is responsible for ensuring there is no collision with the print." msgstr "Se attiva, la torre di spurgo non verrà stampata sui layer con cambio attrezzo. Sui layer con un cambio attrezzo, l'estrusore si sposterà verso il basso per stampare la torre di spurgo. L'utente è responsabile nell'accertarsi che non avvengano collisioni durante la stampa." -#: src/slic3r/GUI/Preferences.cpp:128 +#: src/slic3r/GUI/Preferences.cpp:193 msgid "If enabled, use free camera. If not enabled, use constrained camera." msgstr "Se attivo, usa la visuale libera. Se non attivo, usa la visuale vincolata." -#: src/slic3r/GUI/Preferences.cpp:121 +#: src/slic3r/GUI/Preferences.cpp:186 msgid "If enabled, use perspective camera. If not enabled, use orthographic camera." msgstr "Se attivo, usa la visuale in prospettiva. Se non attivo, usa la visuale ortografica." -#: src/slic3r/GUI/Preferences.cpp:145 +#: src/slic3r/GUI/Preferences.cpp:222 msgid "If enabled, you can change size of toolbar icons manually." msgstr "Se attivo, è possibile modificare manualmente la dimensione delle icone degli strumenti." -#: src/slic3r/GUI/PresetHints.cpp:29 +#: src/slic3r/GUI/PresetHints.cpp:28 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 "Se il tempo previsto per il layer è inferiore a ~%1%s, la ventola girerà al %2%%% e la velocità di stampa sarà ridotta così da impiegare non meno di %3%s su quel layer (in ogni caso, la velocità non sarà mai ridotta sotto %4%mm/s)." -#: src/slic3r/GUI/PresetHints.cpp:36 +#: src/slic3r/GUI/PresetHints.cpp:35 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 "Se la durata di stampa prevista per il layer è più lunga, ma comunque inferiore a ~%1%s, la ventola girerà ad una velocità proporzionalmente decrescente compresa tra %2%%% e %3%%%." -#: src/libslic3r/PrintConfig.cpp:901 +#: src/libslic3r/PrintConfig.cpp:943 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 "Se espresso in valore assoluto in mm/s, questa velocità sarà applicata a tutti i movimenti di stampa del primo layer, a prescindere dal tipo di movimento. Se espresso in percentuale (per esempio: 40%) verranno scalate le velocità predefinite." -#: src/libslic3r/PrintConfig.cpp:573 +#: src/libslic3r/PrintConfig.cpp:609 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 "Se il tempo stimato di stampa del layer è al di sotto di questo numero di secondi, la ventola sarà attivata e la sua velocità sarà calcolata interpolando la velocità minima e massima." -#: src/libslic3r/PrintConfig.cpp:1706 +#: src/libslic3r/PrintConfig.cpp:1821 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 "Se il tempo stimato di stampa del layer è al di sotto di questo numero di secondi, la velocità dei movimenti di stampa sarà ridotta per estendere la durata di questo valore." -#: src/libslic3r/PrintConfig.cpp:567 +#: src/libslic3r/PrintConfig.cpp:603 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 "Se questo è attivo, la ventola non verrà mai disattiva e verrà mantenuta attiva almeno alla velocità minima. Utile per il PLA, dannosa per l'ABS." -#: src/slic3r/GUI/Preferences.cpp:49 +#: src/slic3r/GUI/Preferences.cpp:66 msgid "If this is enabled, Slic3r will auto-center objects around the print bed center." msgstr "Se attivo, Slic3r posizionerà automaticamente gli oggetti al centro del piano di stampa." -#: src/slic3r/GUI/Preferences.cpp:57 +#: src/slic3r/GUI/Preferences.cpp:74 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 "Se attivo, Slic3r processerà in anticipo gli oggetti non appena saranno caricati, così da risparmiare tempo durante l'esportazione del G-code." -#: src/slic3r/GUI/Preferences.cpp:41 +#: src/slic3r/GUI/Preferences.cpp:54 msgid "If this is enabled, Slic3r will prompt the last output directory instead of the one containing the input files." msgstr "Se attivo, Slic3r suggerirà l'ultima cartella di destinazione invece della cartella contenente il file di ricezione." -#: src/libslic3r/PrintConfig.cpp:1562 +#: src/slic3r/GUI/Preferences.cpp:125 +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 "Se questo è abilitato, quando si avvia PrusaSlicer e un'altra istanza della stessa PrusaSlicer è già in esecuzione, quell'istanza verrà invece riattivata." + +#: src/libslic3r/PrintConfig.cpp:1670 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 "Se inserisci un valore positivo, Z verrà alzato velocemente ogni volta che si innesca una retrazione. Quando si utilizzano diversi estrusori, verrà considerato solamente l'impostazione del primo estrusore." -#: src/libslic3r/PrintConfig.cpp:1571 +#: src/libslic3r/PrintConfig.cpp:1679 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 "Se inserisci un valore positivo, il sollevamento Z avverrà solamente sopra un certo specifico valore assoluto Z. Puoi regolare questa impostazione per evitare il sollevamento nei primi layer." -#: src/libslic3r/PrintConfig.cpp:1580 +#: src/libslic3r/PrintConfig.cpp:1688 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 "Se inserisci un valore positivo, il sollevamento Z avverrà solamente sotto un certo specifico valore assoluto Z. Puoi regolare questa impostazione per limitare il sollevamento ai primi layer." -#: src/libslic3r/PrintConfig.cpp:1454 +#: src/libslic3r/PrintConfig.cpp:1562 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. Scripts will be passed the absolute path to the G-code file as the first argument, and they can access the Slic3r config settings by reading environment variables." msgstr "Se vuoi processare il G-code in uscita con script personalizzati, basta elencare qui il loro percorso assoluto. Separa i diversi script con un punto e virgola. Gli script passeranno il percorso assoluto nel G-code come primo argomento, e potranno accedere alle impostazioni di configurazione di Slic3r leggendo le variabili di ambiente." -#: src/libslic3r/PrintConfig.cpp:530 +#: src/libslic3r/PrintConfig.cpp:566 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 of each extruder with respect to the first one. It expects positive coordinates (they will be subtracted from the XY coordinate)." msgstr "Se il firmware non gestisce lo spostamento dell'estrusore, è necessario che il G-code ne tenga conto. Questa opzione permette di specificare lo spostamento di ciascun estrusore rispetto al primo. Si aspetta delle coordinate positive (che saranno sottratte dalle coordinate XY)." -#: src/libslic3r/PrintConfig.cpp:2169 +#: src/libslic3r/PrintConfig.cpp:2312 msgid "If your firmware requires relative E values, check this, otherwise leave it unchecked. Most firmwares use absolute values." msgstr "Se il firmware richiede valori E relativi, selezionalo, altrimenti mantienilo deselezionato. Molti firmware utilizzano valori assoluti." -#: src/libslic3r/PrintConfig.cpp:3485 +#: src/libslic3r/PrintConfig.cpp:1219 +msgid "Ignore" +msgstr "Ignora" + +#: src/libslic3r/PrintConfig.cpp:3684 msgid "Ignore non-existent config files" msgstr "Ignora file di configurazione non esistenti" -#: src/slic3r/GUI/MainFrame.cpp:464 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:192 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:173 +msgid "Ignores facets facing away from the camera." +msgstr "Ignora le faccette rivolte verso l'esterno." + +#: src/slic3r/GUI/MainFrame.cpp:1055 msgid "Import &Config" msgstr "Importa &Configurazione" -#: src/slic3r/GUI/MainFrame.cpp:471 +#: src/slic3r/GUI/MainFrame.cpp:1062 msgid "Import Config &Bundle" -msgstr "Importa Configurazione da &Bundle" +msgstr "Importa Configurazione in &Bundle" -#: src/slic3r/GUI/MainFrame.cpp:467 +#: src/slic3r/GUI/MainFrame.cpp:1058 msgid "Import Config from &project" msgstr "Importa Configurazione da &progetto" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:119 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:112 msgid "Import Config from ini/amf/3mf/gcode" msgstr "Importa Config da ini/amf/3mf/gcode" -#: src/slic3r/GUI/Plater.cpp:4603 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:39 +msgid "Import file" +msgstr "Importa file" + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:46 +msgid "Import model and profile" +msgstr "Importa modello e profilo" + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:48 +msgid "Import model only" +msgstr "Importa solo il modello" + +#: src/slic3r/GUI/Plater.cpp:4655 msgid "Import Object" msgstr "Importa Oggetto" -#: src/slic3r/GUI/Plater.cpp:4607 +#: src/slic3r/GUI/Plater.cpp:4659 msgid "Import Objects" msgstr "Importa Oggetti" @@ -3505,16 +4122,51 @@ msgstr "Importa Oggetti" msgid "Import of the repaired 3mf file failed" msgstr "Importazione del file 3mf riparato non riuscita" -#: src/slic3r/GUI/MainFrame.cpp:460 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:47 +msgid "Import profile only" +msgstr "Solo profilo di importazione" + +#: src/slic3r/GUI/MainFrame.cpp:1050 +msgid "Import SL1 archive" +msgstr "Importa archivio SL1" + +#: src/slic3r/GUI/Plater.cpp:1561 +msgid "Import SLA archive" +msgstr "Importa archivio SLA" + +#: src/slic3r/GUI/MainFrame.cpp:1046 +msgid "Import STL (imperial units)" +msgstr "Importa STL (unità imperiali)" + +#: src/slic3r/GUI/MainFrame.cpp:1042 msgid "Import STL/OBJ/AM&F/3MF" msgstr "Importa STL/OBJ/AM&F/3MF" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:118 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:111 msgid "Import STL/OBJ/AMF/3MF without config, keep plater" msgstr "Importa STL/OBJ/AMF/3MF senza configurazione, mantieni piano" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3422 -#, possible-c-format +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:159 +msgid "Importing canceled." +msgstr "Importazione annullata." + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:160 +msgid "Importing done." +msgstr "Importazione completata." + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:135 +msgid "Importing SLA archive" +msgstr "Importazione archivio SLA" + +#: 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 "in" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:3885 +#, c-format msgid "In this mode you can select only other %s Items%s" msgstr "In questa modalità puoi selezionare solo altri %s oggetti %s" @@ -3522,451 +4174,515 @@ msgstr "In questa modalità puoi selezionare solo altri %s oggetti %s" msgid "Incompatible bundles:" msgstr "Gruppi incompatibili:" +#: src/slic3r/GUI/PresetComboBoxes.cpp:241 +msgid "Incompatible presets" +msgstr "Preset incompatibili" + #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:75 -#, possible-c-format +#, c-format msgid "Incompatible with this %s" msgstr "Incompatibile con questo %s" -#: src/slic3r/GUI/Plater.cpp:4685 +#: src/slic3r/GUI/Plater.cpp:4790 msgid "Increase Instances" msgstr "Aumenta Istanze" -#: src/slic3r/GUI/GLCanvas3D.cpp:264 +#: src/slic3r/GUI/GLCanvas3D.cpp:251 msgid "Increase/decrease edit area" msgstr "Aumenta/diminuisci l'area di modifica" -#: src/slic3r/GUI/Plater.cpp:2922 -msgid "Indexing hollowed object" -msgstr "Indicizzazione di un oggetto svuotato" - #. TRN Description for "UNLOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:3258 -msgid "indicates that some settings were changed and are not equal to the system (or default) values for the current option group.\nClick the UNLOCKED LOCK icon to reset all settings for current option group to the system (or default) values." -msgstr "indica che è stata modificata qualche impostazione e non è uguale ai valori di sistema (o predefiniti) del corrente gruppo di opzioni.\nClicca l'icona LUCCHETTO APERTO per reimpostare tutte le impostazioni del corrente gruppo di opzioni ai valori di sistema (o predefiniti)." +#: src/slic3r/GUI/Tab.cpp:3695 +msgid "" +"indicates that some settings were changed and are not equal to the system (or default) values for the current option group.\n" +"Click the UNLOCKED LOCK icon to reset all settings for current option group to the system (or default) values." +msgstr "" +"indica che è stata modificata qualche impostazione e non è uguale ai valori di sistema (o predefiniti) del corrente gruppo di opzioni.\n" +"Clicca l'icona LUCCHETTO APERTO per reimpostare tutte le impostazioni del corrente gruppo di opzioni ai valori di sistema (o predefiniti)." #. TRN Description for "LOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:3254 +#: src/slic3r/GUI/Tab.cpp:3691 msgid "indicates that the settings are the same as the system (or default) values for the current option group" msgstr "indica che le impostazioni sono uguali ai valori di sistema (o predefiniti) per l'attuale gruppo di opzioni" #. TRN Description for "BACK ARROW" -#: src/slic3r/GUI/Tab.cpp:3270 -msgid "indicates that the settings were changed and are not equal to the last saved preset for the current option group.\nClick the BACK ARROW icon to reset all settings for the current option group to the last saved preset." -msgstr "indica che le impostazioni sono state modificate e non corrispondono all'ultimo preset salvato per l'attuale gruppo opzioni.\nClicca l'icona FRECCIA INDIETRO per reimpostare all'ultimo preset salvato tutte le impostazioni per il seguente gruppo di opzioni." +#: src/slic3r/GUI/Tab.cpp:3707 +msgid "" +"indicates that the settings were changed and are not equal to the last saved preset for the current option group.\n" +"Click the BACK ARROW icon to reset all settings for the current option group to the last saved preset." +msgstr "" +"indica che le impostazioni sono state modificate e non corrispondono all'ultimo preset salvato per l'attuale gruppo opzioni.\n" +"Clicca l'icona FRECCIA INDIETRO per reimpostare all'ultimo preset salvato tutte le impostazioni per il seguente gruppo di opzioni." -#: src/slic3r/GUI/ConfigManipulation.cpp:211 -#: src/slic3r/GUI/GUI_ObjectList.cpp:35 src/slic3r/GUI/GUI_ObjectList.cpp:96 -#: src/slic3r/GUI/GUI_ObjectList.cpp:614 src/slic3r/GUI/Plater.cpp:527 -#: src/slic3r/GUI/Tab.cpp:1091 src/slic3r/GUI/Tab.cpp:1092 -#: src/libslic3r/PrintConfig.cpp:203 src/libslic3r/PrintConfig.cpp:416 -#: src/libslic3r/PrintConfig.cpp:436 src/libslic3r/PrintConfig.cpp:776 -#: src/libslic3r/PrintConfig.cpp:790 src/libslic3r/PrintConfig.cpp:827 -#: src/libslic3r/PrintConfig.cpp:981 src/libslic3r/PrintConfig.cpp:991 -#: src/libslic3r/PrintConfig.cpp:1009 src/libslic3r/PrintConfig.cpp:1028 -#: src/libslic3r/PrintConfig.cpp:1047 src/libslic3r/PrintConfig.cpp:1728 -#: src/libslic3r/PrintConfig.cpp:1745 +#: src/slic3r/GUI/ConfigManipulation.cpp:210 +#: 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:393 +#: src/slic3r/GUI/Tab.cpp:1413 src/slic3r/GUI/Tab.cpp:1414 +#: src/libslic3r/PrintConfig.cpp:237 src/libslic3r/PrintConfig.cpp:450 +#: src/libslic3r/PrintConfig.cpp:472 src/libslic3r/PrintConfig.cpp:812 +#: src/libslic3r/PrintConfig.cpp:826 src/libslic3r/PrintConfig.cpp:863 +#: src/libslic3r/PrintConfig.cpp:1025 src/libslic3r/PrintConfig.cpp:1035 +#: src/libslic3r/PrintConfig.cpp:1053 src/libslic3r/PrintConfig.cpp:1072 +#: src/libslic3r/PrintConfig.cpp:1091 src/libslic3r/PrintConfig.cpp:1843 +#: src/libslic3r/PrintConfig.cpp:1860 msgid "Infill" msgstr "Riempimento" -#: src/slic3r/GUI/PresetHints.cpp:174 +#: src/slic3r/GUI/PresetHints.cpp:173 msgid "infill" msgstr "riempimento" -#: src/libslic3r/PrintConfig.cpp:1021 +#: src/libslic3r/PrintConfig.cpp:1065 msgid "Infill before perimeters" msgstr "Riempimento prima dei perimetri" -#: src/libslic3r/PrintConfig.cpp:1001 +#: src/libslic3r/PrintConfig.cpp:1045 msgid "Infill extruder" msgstr "Estrusore riempimento" -#: src/libslic3r/PrintConfig.cpp:1036 +#: src/libslic3r/PrintConfig.cpp:1080 msgid "Infill/perimeters overlap" msgstr "Sovrapposizione riempimento/perimetri" -#: src/libslic3r/Print.cpp:1584 +#: src/libslic3r/Print.cpp:1610 msgid "Infilling layers" msgstr "Layer di riempimento" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3430 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3505 src/slic3r/GUI/Plater.cpp:141 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3893 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3968 src/slic3r/GUI/Plater.cpp:147 msgid "Info" msgstr "Info" -#: src/libslic3r/PrintConfig.cpp:1057 +#: src/slic3r/GUI/GUI_App.cpp:1087 src/slic3r/GUI/Tab.cpp:3435 +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" -#: src/libslic3r/SLAPrint.cpp:653 +#: src/libslic3r/SLAPrint.cpp:667 msgid "Initial exposition time is out of printer profile bounds." msgstr "Il tempo di esposizione iniziale è fuori dai limiti del profilo stampante." -#: src/libslic3r/PrintConfig.cpp:2564 src/libslic3r/PrintConfig.cpp:2565 +#: src/libslic3r/PrintConfig.cpp:2707 src/libslic3r/PrintConfig.cpp:2708 msgid "Initial exposure time" msgstr "Tempo di esposizione iniziale" -#: src/libslic3r/PrintConfig.cpp:2482 src/libslic3r/PrintConfig.cpp:2483 +#: src/libslic3r/PrintConfig.cpp:2625 src/libslic3r/PrintConfig.cpp:2626 msgid "Initial layer height" msgstr "Altezza layer iniziale" -#: src/slic3r/GUI/Field.cpp:204 +#: src/slic3r/GUI/Field.cpp:252 src/slic3r/GUI/Field.cpp:1370 msgid "Input value is out of range" msgstr "Valore input fuori portata" -#: src/slic3r/GUI/GUI_App.cpp:800 +#: src/slic3r/GUI/GUI_App.cpp:1480 msgid "Inspect / activate configuration snapshots" msgstr "Ispeziona / attiva istantanee di configurazione" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:60 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:216 -#, possible-c-format +#: src/slic3r/GUI/ObjectDataViewModel.cpp:62 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:218 +#, c-format msgid "Instance %d" msgstr "Istanza %d" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2500 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2892 msgid "Instance manipulation" msgstr "Manipolazione istanza" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:56 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:58 msgid "Instances" msgstr "Istanze" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1091 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3781 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1215 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4244 msgid "Instances to Separated Objects" msgstr "Istanze in Oggetti Separati" -#: src/libslic3r/PrintConfig.cpp:1973 +#: src/libslic3r/PrintConfig.cpp:2115 msgid "Interface layers" msgstr "Layer interfaccia" -#: src/libslic3r/PrintConfig.cpp:1957 +#: src/libslic3r/PrintConfig.cpp:2099 msgid "Interface loops" msgstr "Giri interfaccia" -#: src/libslic3r/PrintConfig.cpp:1982 +#: src/libslic3r/PrintConfig.cpp:2124 msgid "Interface pattern spacing" msgstr "Spaziatura trama interfaccia" -#: src/libslic3r/PrintConfig.cpp:1071 +#: src/libslic3r/PrintConfig.cpp:1115 msgid "Interface shells" msgstr "Gusci interfaccia" -#: src/libslic3r/Zipper.cpp:84 +#: src/libslic3r/miniz_extension.cpp:143 msgid "internal error" msgstr "errore interno" -#: src/slic3r/GUI/GUI_Preview.cpp:240 src/libslic3r/ExtrusionEntity.cpp:313 +#: src/slic3r/GUI/GUI_Preview.cpp:304 src/libslic3r/ExtrusionEntity.cpp:317 +#: src/libslic3r/ExtrusionEntity.cpp:342 msgid "Internal infill" msgstr "Riempimento interno" -#: src/slic3r/GUI/Plater.cpp:3106 +#: src/slic3r/GUI/BedShapeDialog.cpp:145 +msgid "Invalid" +msgstr "Non valido" + +#: src/slic3r/GUI/Plater.cpp:2906 src/slic3r/GUI/Plater.cpp:3583 msgid "Invalid data" msgstr "Dati non validi" -#: src/slic3r/GUI/BedShapeDialog.cpp:494 src/slic3r/GUI/BedShapeDialog.cpp:543 -#: src/slic3r/GUI/BedShapeDialog.cpp:566 +#: src/slic3r/GUI/BedShapeDialog.cpp:570 src/slic3r/GUI/BedShapeDialog.cpp:619 +#: src/slic3r/GUI/BedShapeDialog.cpp:642 msgid "Invalid file format." msgstr "Formato file non valido." -#: src/libslic3r/Zipper.cpp:80 +#: src/libslic3r/miniz_extension.cpp:139 msgid "invalid filename" msgstr "nome file non valido" -#: src/slic3r/GUI/ConfigManipulation.cpp:319 +#: src/slic3r/GUI/ConfigManipulation.cpp:324 msgid "Invalid Head penetration" -msgstr "Inserimento Capocchia non valido" +msgstr "Penetrazione della testa non valida" -#: src/libslic3r/Zipper.cpp:48 +#: src/libslic3r/miniz_extension.cpp:107 msgid "invalid header or archive is corrupted" msgstr "titolo non valido o archivio corrotto" -#: src/slic3r/GUI/Field.cpp:195 src/slic3r/GUI/Field.cpp:226 -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:376 +#: 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." msgstr "Input numerico non valido." -#: src/libslic3r/Zipper.cpp:78 +#: src/libslic3r/miniz_extension.cpp:137 msgid "invalid parameter" msgstr "parametro non valido" -#: src/slic3r/GUI/ConfigManipulation.cpp:332 +#: src/slic3r/GUI/ConfigManipulation.cpp:337 msgid "Invalid pinhead diameter" msgstr "Diametro apice non valido" +#: src/slic3r/GUI/GUI_ObjectList.cpp:94 src/slic3r/GUI/GUI_ObjectList.cpp:653 +#: src/slic3r/GUI/GUI_Preview.cpp:307 src/slic3r/GUI/Tab.cpp:1420 +#: src/libslic3r/ExtrusionEntity.cpp:320 src/libslic3r/ExtrusionEntity.cpp:348 +#: src/libslic3r/PrintConfig.cpp:1126 src/libslic3r/PrintConfig.cpp:1132 +#: src/libslic3r/PrintConfig.cpp:1146 src/libslic3r/PrintConfig.cpp:1156 +msgid "Ironing" +msgstr "Stiratura" + +#: src/libslic3r/PrintConfig.cpp:1131 src/libslic3r/PrintConfig.cpp:1133 +msgid "Ironing Type" +msgstr "Tipo di stiratura" + +#: src/slic3r/GUI/GUI_App.cpp:243 +msgid "is based on Slic3r by Alessandro Ranellucci and the RepRap community." +msgstr "è basato su Slic3r di Alessandro Ranellucci e la comunità RepRap." + #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:258 +#: src/slic3r/GUI/AboutDialog.cpp:283 src/slic3r/GUI/GUI_App.cpp:244 msgid "is licensed under the" msgstr "è concesso in licenza ai sensi" -#: src/slic3r/GUI/Tab.cpp:2941 -msgid "is not compatible with print profile" -msgstr "non è compatibile con il profilo di stampa" - -#: src/slic3r/GUI/Tab.cpp:2940 -msgid "is not compatible with printer" -msgstr "non è compatibile con la stampante" - -#: src/slic3r/GUI/MainFrame.cpp:658 +#: src/slic3r/GUI/MainFrame.cpp:955 src/slic3r/GUI/MainFrame.cpp:1275 msgid "Iso" msgstr "Iso" -#: src/slic3r/GUI/MainFrame.cpp:658 +#: src/slic3r/GUI/MainFrame.cpp:955 src/slic3r/GUI/MainFrame.cpp:1275 msgid "Iso View" msgstr "Vista isometrica" -#: src/slic3r/GUI/Tab.cpp:964 +#: src/slic3r/GUI/Tab.cpp:1282 msgid "It can't be deleted or modified." msgstr "Non può essere eliminato o modificato." -#: src/slic3r/GUI/Plater.cpp:3321 +#: src/slic3r/GUI/Plater.cpp:3124 msgid "It is not allowed to change the file to reload" msgstr "Non è permesso modificare il file da ricaricare" -#: src/libslic3r/PrintConfig.cpp:974 +#: src/libslic3r/PrintConfig.cpp:1018 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 "Potrebbe essere utile aumentare la corrente del motore estrusore durante la sequenza di cambio filamento per permettere un avanzamento rapido del ramming e per superare la resistenza durante il caricamento di un filamento con una punta deformata." -#: src/slic3r/GUI/GUI_App.cpp:1084 src/slic3r/GUI/Tab.cpp:2958 +#: src/slic3r/GUI/Tab.cpp:3413 +msgid "It's a last preset for this physical printer." +msgstr "È l'ultimo preset per questa stampante fisica." + +#: src/slic3r/GUI/GUI_App.cpp:1876 src/slic3r/GUI/Tab.cpp:3187 msgid "It's impossible to print multi-part object(s) with SLA technology." msgstr "Non è possibile stampare oggetti multi-parte con tecnologia SLA." -#: src/slic3r/GUI/Tab.cpp:2229 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:601 +msgid "It's not possible to delete the last related preset for the printer." +msgstr "Non è possibile cancellare l'ultimo preset relativo alla stampante." + +#: src/slic3r/GUI/Tab.cpp:2398 msgid "Jerk limits" msgstr "Limiti Jerk" -#: src/libslic3r/PrintConfig.cpp:1649 +#: src/libslic3r/PrintConfig.cpp:1757 msgid "Jitter" msgstr "Jitter" -#: src/slic3r/GUI/DoubleSlider.cpp:957 src/slic3r/GUI/DoubleSlider.cpp:1529 -#: src/slic3r/GUI/DoubleSlider.cpp:1651 +#: src/slic3r/GUI/DoubleSlider.cpp:1077 src/slic3r/GUI/DoubleSlider.cpp:1721 +#: src/slic3r/GUI/DoubleSlider.cpp:1852 src/slic3r/GUI/DoubleSlider.cpp:1856 msgid "Jump to height" msgstr "Salta all'altezza" -#: src/slic3r/GUI/DoubleSlider.cpp:955 -#, possible-c-format +#: src/slic3r/GUI/DoubleSlider.cpp:1075 +#, c-format msgid "Jump to height %s or Set extruder sequence for the entire print" msgstr "Salta all'altezza %s o Imposta sequenza estrusore per l'intera stampa" -#: src/libslic3r/PrintConfig.cpp:566 +#: src/slic3r/GUI/DoubleSlider.cpp:1071 src/slic3r/GUI/DoubleSlider.cpp:1852 +msgid "Jump to move" +msgstr "Salta per spostare" + +#: src/slic3r/GUI/SavePresetDialog.cpp:315 +msgid "Just switch to \"%1%\" preset" +msgstr "Passa solo al preset \"%1%\"" + +#: src/libslic3r/PrintConfig.cpp:602 msgid "Keep fan always on" msgstr "Mantieni la ventola sempre accesa" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:169 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:171 msgid "Keep lower part" msgstr "Mantieni parte inferiore" -#: src/slic3r/GUI/GLCanvas3D.cpp:304 +#: src/slic3r/GUI/GLCanvas3D.cpp:290 msgid "Keep min" msgstr "Mantieni min" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:168 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:170 msgid "Keep upper part" msgstr "Mantieni parte superiore" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:41 src/slic3r/GUI/MainFrame.cpp:708 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:37 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:39 src/slic3r/GUI/MainFrame.cpp:941 +#: src/slic3r/GUI/MainFrame.cpp:1332 msgid "Keyboard Shortcuts" msgstr "Scorciatoie Tastiera" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:245 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:259 msgid "Keyboard shortcuts" msgstr "Scorciatoie tastiera" -#: src/libslic3r/PrintConfig.cpp:2498 +#: src/libslic3r/PrintConfig.cpp:2641 msgid "kg" msgstr "kg" -#: src/libslic3r/PrintConfig.cpp:965 +#: src/libslic3r/PrintConfig.cpp:1009 msgid "Label objects" msgstr "Etichetta oggetti" -#: src/libslic3r/PrintConfig.cpp:2399 +#: src/libslic3r/PrintConfig.cpp:2542 msgid "Landscape" msgstr "Landscape" -#: src/slic3r/GUI/GUI_App.cpp:629 +#: src/slic3r/GUI/GUI_App.cpp:1295 msgid "Language" msgstr "Lingua" -#: src/slic3r/GUI/GUI_App.cpp:885 +#: src/slic3r/GUI/GUI_App.cpp:1605 src/slic3r/GUI/GUI_App.cpp:1614 msgid "Language selection" msgstr "Selezione lingua" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2140 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2242 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2307 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2408 msgid "Last instance of an object cannot be deleted." msgstr "Non è possibile eliminare l'ultima istanza di un oggetto." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3418 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3881 msgid "Layer" msgstr "Layer" -#: src/slic3r/GUI/ConfigManipulation.cpp:49 -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:27 src/slic3r/GUI/Tab.cpp:1049 +#: src/slic3r/GUI/ConfigManipulation.cpp:48 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:29 src/slic3r/GUI/Tab.cpp:1371 #: src/libslic3r/PrintConfig.cpp:71 msgid "Layer height" msgstr "Altezza layer" -#: src/libslic3r/Print.cpp:1427 +#: src/libslic3r/Print.cpp:1453 msgid "Layer height can't be greater than nozzle diameter" msgstr "L'altezza layer non può essere più grande del diametro dell'ugello" -#: src/slic3r/GUI/Tab.cpp:2362 +#: src/slic3r/GUI/Tab.cpp:2531 msgid "Layer height limits" msgstr "Limiti altezza layer" -#: src/slic3r/GUI/ConfigWizard.cpp:2015 -msgid "Layer height:" -msgstr "Altezza layer:" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:2488 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2880 msgid "Layer range Settings to modify" msgstr "Impostazioni da modificare in Intervallo Layer" #: src/slic3r/GUI/ExtruderSequenceDialog.cpp:52 -#: src/libslic3r/PrintConfig.cpp:362 src/libslic3r/PrintConfig.cpp:994 -#: src/libslic3r/PrintConfig.cpp:1505 src/libslic3r/PrintConfig.cpp:1690 -#: src/libslic3r/PrintConfig.cpp:1750 src/libslic3r/PrintConfig.cpp:1930 -#: src/libslic3r/PrintConfig.cpp:1976 +#: src/libslic3r/PrintConfig.cpp:396 src/libslic3r/PrintConfig.cpp:1038 +#: src/libslic3r/PrintConfig.cpp:1613 src/libslic3r/PrintConfig.cpp:1798 +#: src/libslic3r/PrintConfig.cpp:1865 src/libslic3r/PrintConfig.cpp:2072 +#: src/libslic3r/PrintConfig.cpp:2118 msgid "layers" msgstr "layer" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:67 src/slic3r/GUI/Tab.cpp:3512 -#: src/slic3r/GUI/Tab.cpp:3600 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:69 src/slic3r/GUI/Tab.cpp:3928 +#: src/slic3r/GUI/Tab.cpp:4010 msgid "Layers" msgstr "Layer" -#: src/slic3r/GUI/Tab.cpp:1048 src/slic3r/GUI/Tab.cpp:3598 +#: src/slic3r/GUI/Tab.cpp:1370 src/slic3r/GUI/Tab.cpp:4008 msgid "Layers and perimeters" msgstr "Layer e perimetri" -#: src/slic3r/GUI/GUI_ObjectList.cpp:34 src/slic3r/GUI/GUI_ObjectList.cpp:95 -#: src/slic3r/GUI/GUI_ObjectList.cpp:613 src/libslic3r/PrintConfig.cpp:72 -#: src/libslic3r/PrintConfig.cpp:175 src/libslic3r/PrintConfig.cpp:184 -#: src/libslic3r/PrintConfig.cpp:408 src/libslic3r/PrintConfig.cpp:470 -#: src/libslic3r/PrintConfig.cpp:478 src/libslic3r/PrintConfig.cpp:890 -#: src/libslic3r/PrintConfig.cpp:1075 src/libslic3r/PrintConfig.cpp:1374 -#: src/libslic3r/PrintConfig.cpp:1441 src/libslic3r/PrintConfig.cpp:1622 -#: src/libslic3r/PrintConfig.cpp:2074 src/libslic3r/PrintConfig.cpp:2133 -#: src/libslic3r/PrintConfig.cpp:2142 +#: 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:209 src/libslic3r/PrintConfig.cpp:218 +#: src/libslic3r/PrintConfig.cpp:442 src/libslic3r/PrintConfig.cpp:506 +#: src/libslic3r/PrintConfig.cpp:514 src/libslic3r/PrintConfig.cpp:932 +#: src/libslic3r/PrintConfig.cpp:1119 src/libslic3r/PrintConfig.cpp:1482 +#: src/libslic3r/PrintConfig.cpp:1549 src/libslic3r/PrintConfig.cpp:1730 +#: src/libslic3r/PrintConfig.cpp:2217 src/libslic3r/PrintConfig.cpp:2276 +#: src/libslic3r/PrintConfig.cpp:2285 msgid "Layers and Perimeters" msgstr "Layer e Perimetri" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:222 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:225 msgid "Layers Slider" msgstr "Barra di scorrimento Layer" -#: src/slic3r/GUI/OptionsGroup.cpp:258 +#: src/slic3r/GUI/OptionsGroup.cpp:293 msgctxt "Layers" msgid "Bottom" msgstr "Inferiore" -#: src/slic3r/GUI/OptionsGroup.cpp:258 +#: src/slic3r/GUI/OptionsGroup.cpp:293 msgctxt "Layers" msgid "Top" msgstr "Superiore" -#: src/slic3r/GUI/MainFrame.cpp:671 +#: src/slic3r/GUI/Preferences.cpp:440 +msgid "Layout Options" +msgstr "Opzioni di layout" + +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:48 +msgid "Leaving Paint-on supports" +msgstr "Chiusura supporti Paint-on" + +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:47 +msgid "Leaving Seam painting" +msgstr "Lasciare pittura Giunzione" + +#: src/slic3r/GUI/MainFrame.cpp:968 src/slic3r/GUI/MainFrame.cpp:1288 msgid "Left" msgstr "Sinistra" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1363 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1366 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1367 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1210 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1213 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1214 msgid "Left click" msgstr "Click sinistro" -#: src/slic3r/GUI/GLCanvas3D.cpp:237 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:46 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:29 +msgid "Left mouse button" +msgstr "Tasto sinistro mouse" + +#: src/slic3r/GUI/GLCanvas3D.cpp:233 msgid "Left mouse button:" msgstr "Tasto sinistro mouse:" -#: src/slic3r/GUI/MainFrame.cpp:671 +#: src/slic3r/GUI/MainFrame.cpp:968 src/slic3r/GUI/MainFrame.cpp:1288 msgid "Left View" msgstr "Vista sinistra" -#: src/slic3r/GUI/GUI_Preview.cpp:257 +#: src/slic3r/GUI/GUI_Preview.cpp:339 msgid "Legend" msgstr "Legenda" -#: src/libslic3r/PrintConfig.cpp:1543 src/libslic3r/PrintConfig.cpp:1551 +#: src/slic3r/GUI/GUI_Preview.cpp:1480 +msgid "Legend/Estimated printing time" +msgstr "Legenda/Stima del tempo di stampa" + +#: src/libslic3r/PrintConfig.cpp:1651 src/libslic3r/PrintConfig.cpp:1659 msgid "Length" msgstr "Lunghezza" -#: src/libslic3r/PrintConfig.cpp:328 +#: src/libslic3r/PrintConfig.cpp:362 msgid "Length of the cooling tube to limit space for cooling moves inside it." msgstr "Lunghezza del tubo di raffreddamento per limitare lo spazio delle mosse di raffreddamento al suo interno." #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:129 +#: src/slic3r/GUI/AboutDialog.cpp:141 msgid "License agreements of all following programs (libraries) are part of application license agreement" msgstr "Gli accordi di licenza di tutti i programmi seguenti (librerie) fanno parte del contratto di licenza dell'applicazione" -#: src/libslic3r/PrintConfig.cpp:1561 +#: src/libslic3r/PrintConfig.cpp:1669 msgid "Lift Z" msgstr "Solleva Z" -#: src/libslic3r/PrintConfig.cpp:848 +#: src/libslic3r/PrintConfig.cpp:886 msgid "Line" msgstr "Linea" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1427 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1558 msgid "Load" msgstr "Carica" -#: src/slic3r/GUI/MainFrame.cpp:460 +#: src/slic3r/GUI/MainFrame.cpp:1042 msgid "Load a model" msgstr "Carica modello" -#: src/libslic3r/PrintConfig.cpp:3505 +#: src/slic3r/GUI/MainFrame.cpp:1046 +msgid "Load an model saved with imperial units" +msgstr "Carica un modello salvato con unità imperiali" + +#: src/slic3r/GUI/MainFrame.cpp:1058 +msgid "Load an SL1 archive" +msgstr "Carica un archivio SL1" + +#: src/libslic3r/PrintConfig.cpp:3710 msgid "Load and store settings at the given directory. This is useful for maintaining different profiles or including configurations from a network storage." msgstr "Carica e archivia le impostazione in una data cartella. Questo è utile per mantenere diversi profili o aggiungere configurazioni da un archivio di rete." -#: src/libslic3r/PrintConfig.cpp:3489 +#: src/libslic3r/PrintConfig.cpp:3688 msgid "Load config file" msgstr "Carica file di configurazione" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:120 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:113 msgid "Load Config from ini/amf/3mf/gcode and merge" msgstr "Carica Config da ini/amf/3mf/gcode e unisci" -#: src/slic3r/GUI/MainFrame.cpp:467 +#: src/slic3r/GUI/MainFrame.cpp:1058 msgid "Load configuration from project file" msgstr "Carica configurazione dal file di progetto" -#: src/libslic3r/PrintConfig.cpp:3490 +#: src/libslic3r/PrintConfig.cpp:3689 msgid "Load configuration from the specified file. It can be used more than once to load options from multiple files." msgstr "Carica configurazione dal file specificato. Può essere usato più di una volta per caricare opzioni da vari file." -#: src/slic3r/GUI/MainFrame.cpp:464 +#: src/slic3r/GUI/MainFrame.cpp:1055 msgid "Load exported configuration file" msgstr "Carica un file di configurazione esportato" -#: src/slic3r/GUI/Plater.cpp:1395 -msgid "Load File" -msgstr "Carica file" - -#: src/slic3r/GUI/Plater.cpp:1399 -msgid "Load Files" -msgstr "Carica file" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1879 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2038 msgid "Load Part" msgstr "Carica Parte" -#: src/slic3r/GUI/MainFrame.cpp:471 +#: src/slic3r/GUI/MainFrame.cpp:1062 msgid "Load presets from a bundle" msgstr "Carica i preset da un gruppo" -#: src/slic3r/GUI/Plater.cpp:4575 +#: src/slic3r/GUI/Plater.cpp:4627 msgid "Load Project" msgstr "Carica Progetto" -#: src/slic3r/GUI/BedShapeDialog.cpp:102 +#: src/slic3r/GUI/BedShapeDialog.cpp:243 msgid "Load shape from STL..." msgstr "Carica forma da STL..." -#: src/slic3r/GUI/BedShapeDialog.cpp:182 src/slic3r/GUI/BedShapeDialog.cpp:261 +#: src/slic3r/GUI/BedShapeDialog.cpp:325 src/slic3r/GUI/BedShapeDialog.cpp:405 msgid "Load..." msgstr "Caricamento..." @@ -3974,19 +4690,27 @@ msgstr "Caricamento..." msgid "loaded" msgstr "caricato" -#: src/slic3r/GUI/Plater.cpp:2426 +#: src/slic3r/GUI/Plater.cpp:2388 msgid "Loaded" msgstr "Caricato" -#: src/slic3r/GUI/Plater.cpp:2273 +#: src/slic3r/GUI/Plater.cpp:2216 msgid "Loading" msgstr "Caricamento" -#: src/slic3r/GUI/GUI_App.cpp:474 +#: src/slic3r/GUI/GUI_App.cpp:797 +msgid "Loading configuration" +msgstr "Caricamento configurazione" + +#: src/slic3r/GUI/Plater.cpp:2226 +msgid "Loading file" +msgstr "Caricamento file" + +#: src/slic3r/GUI/GUI_App.cpp:1125 msgid "Loading of a mode view" msgstr "Caricamento di una modalità di vista" -#: src/slic3r/GUI/GUI_App.cpp:466 +#: src/slic3r/GUI/GUI_App.cpp:1120 msgid "Loading of current presets" msgstr "Caricamento dei preset correnti" @@ -3995,101 +4719,117 @@ msgstr "Caricamento dei preset correnti" msgid "Loading repaired model" msgstr "Caricamento modello riparato" -#: src/libslic3r/PrintConfig.cpp:607 +#: src/libslic3r/PrintConfig.cpp:643 msgid "Loading speed" msgstr "Velocità di caricamento" -#: src/libslic3r/PrintConfig.cpp:615 +#: src/libslic3r/PrintConfig.cpp:651 msgid "Loading speed at the start" msgstr "Velocità iniziale di caricamento" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:63 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:106 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:69 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:112 msgid "Local coordinates" msgstr "Coordinate locali" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:48 msgid "Lock supports under new islands" msgstr "Fissa i supporti sotto le nuove isole" -#: src/slic3r/GUI/Tab.cpp:3252 +#: src/slic3r/GUI/Tab.cpp:3689 msgid "LOCKED LOCK" msgstr "LUCCHETTO CHIUSO" -#: src/slic3r/GUI/Tab.cpp:3280 +#: src/slic3r/GUI/Tab.cpp:3717 msgid "LOCKED LOCK icon indicates that the settings are the same as the system (or default) values for the current option group" msgstr "L'icona LUCCHETTO CHIUSO indica che le impostazioni corrispondono ai valori di sistema (o predefiniti) per il seguente gruppo di opzioni" -#: src/slic3r/GUI/Tab.cpp:3296 +#: src/slic3r/GUI/Tab.cpp:3733 msgid "LOCKED LOCK icon indicates that the value is the same as the system (or default) value." msgstr "L'icona LUCCHETTO CHIUSO indica che il valore è uguale a quello di sistema (o predefinito)." -#: src/libslic3r/PrintConfig.cpp:3508 +#: src/libslic3r/PrintConfig.cpp:3713 msgid "Logging level" msgstr "Livello di logging" -#: src/libslic3r/PrintConfig.cpp:1695 +#: src/libslic3r/PrintConfig.cpp:1810 msgid "Loops (minimum)" msgstr "Giri (minimo)" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:206 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:208 msgid "Lower Layer" msgstr "Layer Inferiore" -#: src/slic3r/GUI/Tab.cpp:2188 src/slic3r/GUI/Tab.cpp:2273 -#: src/libslic3r/PrintConfig.cpp:1129 src/libslic3r/PrintConfig.cpp:1146 -#: src/libslic3r/PrintConfig.cpp:1163 src/libslic3r/PrintConfig.cpp:1179 -#: src/libslic3r/PrintConfig.cpp:1189 src/libslic3r/PrintConfig.cpp:1199 -#: src/libslic3r/PrintConfig.cpp:1209 +#: src/slic3r/GUI/Tab.cpp:2346 src/slic3r/GUI/Tab.cpp:2442 +#: src/libslic3r/PrintConfig.cpp:1202 src/libslic3r/PrintConfig.cpp:1237 +#: src/libslic3r/PrintConfig.cpp:1254 src/libslic3r/PrintConfig.cpp:1271 +#: src/libslic3r/PrintConfig.cpp:1287 src/libslic3r/PrintConfig.cpp:1297 +#: src/libslic3r/PrintConfig.cpp:1307 src/libslic3r/PrintConfig.cpp:1317 msgid "Machine limits" msgstr "Limiti macchina" -#: src/slic3r/GUI/Plater.cpp:166 +#: src/slic3r/GUI/Tab.cpp:3667 +msgid "Machine limits are not set, therefore the print time estimate may not be accurate." +msgstr "I limiti della macchina non sono impostati, quindi la stima del tempo di stampa potrebbe non essere accurata." + +#: src/slic3r/GUI/Tab.cpp:3660 +msgid "Machine limits will be emitted to G-code and used to estimate print time." +msgstr "I limiti della macchina verranno emessi in G-code e utilizzati per stimare il tempo di stampa." + +#: src/slic3r/GUI/Tab.cpp:3663 +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 "I limiti della macchina NON saranno emessi nel G-code, tuttavia saranno utilizzati per stimare il tempo di stampa, che potrebbe quindi non essere accurato in quanto la stampante potrebbe applicare un diverso set di limiti della macchina." + +#: src/slic3r/GUI/Plater.cpp:172 msgid "Manifold" msgstr "Manifold" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:57 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:56 msgid "Manual editing" msgstr "Modifica manuale" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:180 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:214 msgid "Masked SLA file exported to %1%" msgstr "File SLA mascherato esportato su %1%" -#: src/slic3r/GUI/MainFrame.cpp:752 +#: src/slic3r/GUI/MainFrame.cpp:1451 msgid "Mate&rial Settings Tab" msgstr "Scheda Impostazioni Mate&riale" -#: src/slic3r/GUI/Tab.cpp:3478 src/slic3r/GUI/Tab.cpp:3480 +#: src/slic3r/GUI/Tab.cpp:3894 src/slic3r/GUI/Tab.cpp:3896 msgid "Material" msgstr "Materiale" -#: src/slic3r/GUI/Tab.hpp:416 +#: src/slic3r/GUI/Tab.hpp:486 msgid "Material Settings" msgstr "Impostazioni Materiali" -#: src/slic3r/GUI/Plater.cpp:163 +#: src/slic3r/GUI/GLCanvas3D.cpp:4304 src/slic3r/GUI/GLCanvas3D.cpp:4940 +msgid "Material Settings Tab" +msgstr "Scheda Impostazioni Materiali" + +#: src/slic3r/GUI/Plater.cpp:169 msgid "Materials" msgstr "Materiali" -#: src/libslic3r/PrintConfig.cpp:1217 src/libslic3r/PrintConfig.cpp:1226 +#: src/libslic3r/PrintConfig.cpp:1325 src/libslic3r/PrintConfig.cpp:1334 msgid "Max" msgstr "Massimo" -#: src/libslic3r/PrintConfig.cpp:2734 +#: src/libslic3r/PrintConfig.cpp:2898 msgid "Max bridge length" msgstr "Lunghezza massima Bridge" -#: src/libslic3r/PrintConfig.cpp:2658 +#: src/libslic3r/PrintConfig.cpp:2812 msgid "Max bridges on a pillar" msgstr "Ponteggi massimi su un pilastro" -#: src/libslic3r/PrintConfig.cpp:2822 +#: src/libslic3r/PrintConfig.cpp:2986 msgid "Max merge distance" msgstr "Massima distanza di unione" -#: src/libslic3r/PrintConfig.cpp:2743 +#: src/libslic3r/PrintConfig.cpp:2907 msgid "Max pillar linking distance" msgstr "Distanza massima collegamento pilastri" @@ -4097,7 +4837,7 @@ msgstr "Distanza massima collegamento pilastri" msgid "Max print height" msgstr "Altezza massima di stampa" -#: src/libslic3r/PrintConfig.cpp:1237 +#: src/libslic3r/PrintConfig.cpp:1345 msgid "Max print speed" msgstr "Massima velocità di stampa" @@ -4105,171 +4845,189 @@ msgstr "Massima velocità di stampa" msgid "max PrusaSlicer version" msgstr "versione PrusaSlicer massima" -#: src/libslic3r/PrintConfig.cpp:1268 +#: src/libslic3r/PrintConfig.cpp:1376 msgid "Max volumetric slope negative" msgstr "Massima pendenza volumetrica negativa" -#: src/libslic3r/PrintConfig.cpp:1257 +#: src/libslic3r/PrintConfig.cpp:1365 msgid "Max volumetric slope positive" msgstr "Massima pendenza volumetrica positiva" -#: src/libslic3r/PrintConfig.cpp:597 src/libslic3r/PrintConfig.cpp:1247 +#: src/libslic3r/PrintConfig.cpp:633 src/libslic3r/PrintConfig.cpp:1355 msgid "Max volumetric speed" msgstr "Massima velocità volumetrica" -#: src/libslic3r/PrintConfig.cpp:2268 +#: src/libslic3r/PrintConfig.cpp:2411 msgid "Maximal bridging distance" msgstr "Distanza massima bridging" -#: src/libslic3r/PrintConfig.cpp:2269 +#: src/libslic3r/PrintConfig.cpp:2412 msgid "Maximal distance between supports on sparse infill sections." msgstr "Distanza massima tra supporti in sezioni a riempimento sparso." -#: src/libslic3r/PrintConfig.cpp:1145 +#: src/libslic3r/PrintConfig.cpp:1253 msgid "Maximum acceleration E" msgstr "Accelerazione massima E" -#: src/libslic3r/PrintConfig.cpp:1151 +#: src/libslic3r/PrintConfig.cpp:1259 msgid "Maximum acceleration of the E axis" msgstr "Accelerazione massima dell'asse E" -#: src/libslic3r/PrintConfig.cpp:1148 +#: src/libslic3r/PrintConfig.cpp:1256 msgid "Maximum acceleration of the X axis" msgstr "Accelerazione massima dell'asse X" -#: src/libslic3r/PrintConfig.cpp:1149 +#: src/libslic3r/PrintConfig.cpp:1257 msgid "Maximum acceleration of the Y axis" msgstr "Accelerazione massima dell'asse Y" -#: src/libslic3r/PrintConfig.cpp:1150 +#: src/libslic3r/PrintConfig.cpp:1258 msgid "Maximum acceleration of the Z axis" msgstr "Accelerazione massima dell'asse Z" -#: src/libslic3r/PrintConfig.cpp:1198 +#: src/libslic3r/PrintConfig.cpp:1306 msgid "Maximum acceleration when extruding" msgstr "Accelerazione massima durante l'estrusione" -#: src/libslic3r/PrintConfig.cpp:1200 +#: src/libslic3r/PrintConfig.cpp:1308 msgid "Maximum acceleration when extruding (M204 S)" msgstr "Accelerazione massima durante l'estrusione (M204 S)" -#: src/libslic3r/PrintConfig.cpp:1208 +#: src/libslic3r/PrintConfig.cpp:1316 msgid "Maximum acceleration when retracting" msgstr "Accelerazione massima durante la retrazione" -#: src/libslic3r/PrintConfig.cpp:1210 +#: src/libslic3r/PrintConfig.cpp:1318 msgid "Maximum acceleration when retracting (M204 T)" msgstr "Accelerazione massima durante la retrazione (M204 T)" -#: src/libslic3r/PrintConfig.cpp:1142 +#: src/libslic3r/PrintConfig.cpp:1250 msgid "Maximum acceleration X" msgstr "Accelerazione massima X" -#: src/libslic3r/PrintConfig.cpp:1143 +#: src/libslic3r/PrintConfig.cpp:1251 msgid "Maximum acceleration Y" msgstr "Accelerazione massima Y" -#: src/libslic3r/PrintConfig.cpp:1144 +#: src/libslic3r/PrintConfig.cpp:1252 msgid "Maximum acceleration Z" msgstr "Accelerazione massima Z" -#: src/slic3r/GUI/Tab.cpp:2222 +#: src/slic3r/GUI/Tab.cpp:2391 msgid "Maximum accelerations" msgstr "Accelerazioni massime" -#: src/libslic3r/PrintConfig.cpp:2533 src/libslic3r/PrintConfig.cpp:2534 +#: src/libslic3r/PrintConfig.cpp:2676 src/libslic3r/PrintConfig.cpp:2677 msgid "Maximum exposure time" msgstr "Tempo massimo di esposizione" -#: src/libslic3r/PrintConfig.cpp:1128 +#: src/libslic3r/PrintConfig.cpp:1236 msgid "Maximum feedrate E" msgstr "Avanzamento massimo E" -#: src/libslic3r/PrintConfig.cpp:1134 +#: src/libslic3r/PrintConfig.cpp:1242 msgid "Maximum feedrate of the E axis" msgstr "Avanzamento massimo dell'asse E" -#: src/libslic3r/PrintConfig.cpp:1131 +#: src/libslic3r/PrintConfig.cpp:1239 msgid "Maximum feedrate of the X axis" msgstr "Avanzamento massimo dell'asse X" -#: src/libslic3r/PrintConfig.cpp:1132 +#: src/libslic3r/PrintConfig.cpp:1240 msgid "Maximum feedrate of the Y axis" msgstr "Avanzamento massimo dell'asse Y" -#: src/libslic3r/PrintConfig.cpp:1133 +#: src/libslic3r/PrintConfig.cpp:1241 msgid "Maximum feedrate of the Z axis" msgstr "Avanzamento massimo dell'asse Z" -#: src/libslic3r/PrintConfig.cpp:1125 +#: src/libslic3r/PrintConfig.cpp:1233 msgid "Maximum feedrate X" msgstr "Avanzamento massimo X" -#: src/libslic3r/PrintConfig.cpp:1126 +#: src/libslic3r/PrintConfig.cpp:1234 msgid "Maximum feedrate Y" msgstr "Avanzamento massimo Y" -#: src/libslic3r/PrintConfig.cpp:1127 +#: src/libslic3r/PrintConfig.cpp:1235 msgid "Maximum feedrate Z" msgstr "Avanzamento massimo Z" -#: src/slic3r/GUI/Tab.cpp:2217 +#: src/slic3r/GUI/Tab.cpp:2386 msgid "Maximum feedrates" msgstr "Avanzamenti massimi" -#: src/libslic3r/PrintConfig.cpp:2556 src/libslic3r/PrintConfig.cpp:2557 +#: src/libslic3r/PrintConfig.cpp:2699 src/libslic3r/PrintConfig.cpp:2700 msgid "Maximum initial exposure time" msgstr "Tempo massimo di esposizione iniziale" -#: src/libslic3r/PrintConfig.cpp:1162 +#: src/libslic3r/PrintConfig.cpp:1270 msgid "Maximum jerk E" msgstr "Jerk massimo E" -#: src/libslic3r/PrintConfig.cpp:1168 +#: src/libslic3r/PrintConfig.cpp:1276 msgid "Maximum jerk of the E axis" msgstr "Jerk massimo dell'asse E" -#: src/libslic3r/PrintConfig.cpp:1165 +#: src/libslic3r/PrintConfig.cpp:1273 msgid "Maximum jerk of the X axis" msgstr "Jerk massimo dell'asse X" -#: src/libslic3r/PrintConfig.cpp:1166 +#: src/libslic3r/PrintConfig.cpp:1274 msgid "Maximum jerk of the Y axis" msgstr "Jerk massimo dell'asse Y" -#: src/libslic3r/PrintConfig.cpp:1167 +#: src/libslic3r/PrintConfig.cpp:1275 msgid "Maximum jerk of the Z axis" msgstr "Jerk massimo dell'asse Z" -#: src/libslic3r/PrintConfig.cpp:1159 +#: src/libslic3r/PrintConfig.cpp:1267 msgid "Maximum jerk X" msgstr "Jerk massimo X" -#: src/libslic3r/PrintConfig.cpp:1160 +#: src/libslic3r/PrintConfig.cpp:1268 msgid "Maximum jerk Y" msgstr "Jerk massimo Y" -#: src/libslic3r/PrintConfig.cpp:1161 +#: src/libslic3r/PrintConfig.cpp:1269 msgid "Maximum jerk Z" msgstr "Jerk massimo Z" -#: src/libslic3r/PrintConfig.cpp:2660 +#: src/libslic3r/PrintConfig.cpp:2814 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 "Numero massimo di ponteggi che può essere posizionato su un pilastro. I ponteggi mantengono le capocchie dei punti di supporto e si collegano ai pilastri come piccoli rami." -#: src/libslic3r/PrintConfig.cpp:598 +#: src/libslic3r/PrintConfig.cpp:634 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 "Massima velocità volumetrica consentita per questo filamento. Limita la velocità volumetrica massima di una stampa alla velocità volumetrica minima del filamento e di stampa. Imposta a zero per non avere limite." -#: src/libslic3r/PrintConfig.cpp:3442 +#: 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:3641 msgid "Merge" msgstr "Unisci" -#: src/libslic3r/PrintConfig.cpp:2683 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2660 +msgid "Merge all parts to the one single object" +msgstr "Unisci tutte le parti in un unico oggetto" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1868 +msgid "Merge objects to the one multipart object" +msgstr "Unisci oggetti in un unico oggetto multiparte" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1876 +msgid "Merge objects to the one single object" +msgstr "Unisci oggetti in un singolo oggetto" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2576 +msgid "Merged" +msgstr "Unito" + +#: src/libslic3r/PrintConfig.cpp:2847 msgid "Merging bridges or pillars into another pillars can increase the radius. Zero means no increase, one means full increase." msgstr "L'unione di bridge o pilastri con altri pilastri può aumentarne il raggio. Zero significa nessun incremento, uno significa incremento pieno." -#: src/libslic3r/SLAPrintSteps.cpp:64 +#: src/libslic3r/SLAPrintSteps.cpp:65 msgid "Merging slices and calculating statistics" msgstr "Unendo gli slice e calcolando le statistiche" @@ -4277,15 +5035,15 @@ msgstr "Unendo gli slice e calcolando le statistiche" msgid "Mesh repair failed." msgstr "Riparazione mesh fallita." -#: src/slic3r/GUI/DoubleSlider.cpp:1635 +#: src/slic3r/GUI/DoubleSlider.cpp:1831 msgid "Message for pause print on current layer (%1% mm)." msgstr "Messaggio per pausa stampa al corrente layer (%1% mm)." -#: src/libslic3r/PrintConfig.cpp:1280 src/libslic3r/PrintConfig.cpp:1289 +#: src/libslic3r/PrintConfig.cpp:1388 src/libslic3r/PrintConfig.cpp:1397 msgid "Min" msgstr "Minimo" -#: src/libslic3r/PrintConfig.cpp:1298 +#: src/libslic3r/PrintConfig.cpp:1406 msgid "Min print speed" msgstr "Velocità minima di stampa" @@ -4293,232 +5051,237 @@ msgstr "Velocità minima di stampa" msgid "min PrusaSlicer version" msgstr "versione PrusaSlicer minima" -#: src/libslic3r/PrintConfig.cpp:2772 +#: src/libslic3r/PrintConfig.cpp:2936 msgid "Minimal distance of the support points" msgstr "Distanza minima dei punti di supporto" -#: src/libslic3r/PrintConfig.cpp:1306 +#: src/libslic3r/PrintConfig.cpp:1414 msgid "Minimal filament extrusion length" msgstr "Lunghezza di estrusione minima del filamento" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:54 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:53 msgid "Minimal points distance" msgstr "Distanza minima punti" -#: src/libslic3r/PrintConfig.cpp:667 +#: src/libslic3r/PrintConfig.cpp:703 msgid "Minimal purge on wipe tower" msgstr "Spurgo minimo sulla torre di spurgo" -#: src/libslic3r/PrintConfig.cpp:187 +#: src/libslic3r/PrintConfig.cpp:221 msgid "Minimum bottom shell thickness" msgstr "Spessore minimo guscio inferiore" -#: src/slic3r/GUI/PresetHints.cpp:339 +#: src/slic3r/GUI/PresetHints.cpp:337 msgid "Minimum bottom shell thickness is %1% mm." msgstr "Spessore minimo guscio inferiore è %1% mm." -#: src/libslic3r/PrintConfig.cpp:1512 +#: src/libslic3r/PrintConfig.cpp:1620 msgid "Minimum detail resolution, used to simplify the input file for speeding up the slicing job and reducing memory usage. High-resolution models often carry more detail than printers can render. Set to zero to disable any simplification and use full resolution from input." msgstr "Risoluzione minima dettaglio, utilizzato per semplificare il file input accelerando lo slicing e riducendo l'utilizzo di memoria. I file ad alta risoluzione spesso hanno più dettaglio di quanto la stampante possa generare. Impostate a zero per disabilitare la semplificazione e utilizzare la risoluzione completa." -#: src/libslic3r/PrintConfig.cpp:2525 src/libslic3r/PrintConfig.cpp:2526 +#: src/libslic3r/PrintConfig.cpp:2668 src/libslic3r/PrintConfig.cpp:2669 msgid "Minimum exposure time" msgstr "Tempo minimo di esposizione" -#: src/libslic3r/PrintConfig.cpp:1178 +#: src/libslic3r/PrintConfig.cpp:1286 msgid "Minimum feedrate when extruding" msgstr "Avanzamento minimo durante estrusione" -#: src/libslic3r/PrintConfig.cpp:1180 +#: src/libslic3r/PrintConfig.cpp:1288 msgid "Minimum feedrate when extruding (M205 S)" msgstr "Avanzamento minimo durante estrusione (M205 S)" -#: src/slic3r/GUI/Tab.cpp:2234 +#: src/slic3r/GUI/Tab.cpp:2403 msgid "Minimum feedrates" msgstr "Avanzamento minimo" -#: src/libslic3r/PrintConfig.cpp:2548 src/libslic3r/PrintConfig.cpp:2549 +#: src/libslic3r/PrintConfig.cpp:2691 src/libslic3r/PrintConfig.cpp:2692 msgid "Minimum initial exposure time" msgstr "Tempo minimo di esposizione iniziale" -#: src/slic3r/GUI/Tab.cpp:1069 +#: src/slic3r/GUI/Tab.cpp:1391 msgid "Minimum shell thickness" msgstr "Spessore minimo guscio" -#: src/libslic3r/PrintConfig.cpp:1787 src/libslic3r/PrintConfig.cpp:1788 +#: src/libslic3r/PrintConfig.cpp:1902 src/libslic3r/PrintConfig.cpp:1903 msgid "Minimum thickness of a top / bottom shell" msgstr "Spessore minimo guscio superiore / inferiore" -#: src/libslic3r/PrintConfig.cpp:2146 +#: src/libslic3r/PrintConfig.cpp:2289 msgid "Minimum top shell thickness" msgstr "Spessore minimo guscio superiore" -#: src/slic3r/GUI/PresetHints.cpp:320 +#: src/slic3r/GUI/PresetHints.cpp:318 msgid "Minimum top shell thickness is %1% mm." msgstr "Spessore minimo guscio superiore è %1% mm." -#: src/libslic3r/PrintConfig.cpp:1522 +#: src/libslic3r/PrintConfig.cpp:1630 msgid "Minimum travel after retraction" msgstr "Spostamento minimo dopo una retrazione" -#: src/libslic3r/PrintConfig.cpp:1188 +#: src/libslic3r/PrintConfig.cpp:1296 msgid "Minimum travel feedrate" msgstr "Avanzamento minimo di spostamento" -#: src/libslic3r/PrintConfig.cpp:1190 +#: src/libslic3r/PrintConfig.cpp:1298 msgid "Minimum travel feedrate (M205 T)" msgstr "Avanzamento minimo di spostamento (M205 T)" -#: src/libslic3r/PrintConfig.cpp:2917 +#: src/libslic3r/PrintConfig.cpp:3081 msgid "Minimum wall thickness of a hollowed model." msgstr "Spessore minimo parete di un modello svuotato." -#: src/libslic3r/PrintConfig.cpp:2449 +#: src/libslic3r/PrintConfig.cpp:2592 msgid "Minimum width of features to maintain when doing elephant foot compensation." msgstr "Larghezza minima della funzione da mantenere durante la compensazione della zampa d'elefante." -#: src/slic3r/GUI/Plater.cpp:4002 +#: src/slic3r/GUI/Plater.cpp:3922 msgid "Mirror" msgstr "Specchia" -#: src/libslic3r/PrintConfig.cpp:2379 +#: src/libslic3r/PrintConfig.cpp:2522 msgid "Mirror horizontally" msgstr "Specchia orizzontalmente" -#: src/slic3r/GUI/GLCanvas3D.cpp:2053 +#: src/slic3r/GUI/GLCanvas3D.cpp:2226 msgid "Mirror Object" msgstr "Specchia Oggetto" -#: src/slic3r/GUI/Plater.cpp:4002 +#: src/slic3r/GUI/Plater.cpp:3922 msgid "Mirror the selected object" msgstr "Specchia l'oggetto selezionato" -#: src/slic3r/GUI/Plater.cpp:3995 +#: src/slic3r/GUI/Plater.cpp:3915 msgid "Mirror the selected object along the X axis" msgstr "Specchia l'oggetto selezionato sull'asse X" -#: src/slic3r/GUI/Plater.cpp:3997 +#: src/slic3r/GUI/Plater.cpp:3917 msgid "Mirror the selected object along the Y axis" msgstr "Specchia l'oggetto selezionato sull'asse y" -#: src/slic3r/GUI/Plater.cpp:3999 +#: src/slic3r/GUI/Plater.cpp:3919 msgid "Mirror the selected object along the Z axis" msgstr "Specchia l'oggetto selezionato sull'asse Z" -#: src/libslic3r/PrintConfig.cpp:2386 +#: src/libslic3r/PrintConfig.cpp:2529 msgid "Mirror vertically" msgstr "Specchia verticalmente" -#: src/slic3r/Utils/AstroBox.cpp:68 src/slic3r/Utils/OctoPrint.cpp:68 -#, possible-c-format +#: src/slic3r/Utils/AstroBox.cpp:69 src/slic3r/Utils/OctoPrint.cpp:68 +#, c-format msgid "Mismatched type of print host: %s" msgstr "Tipo di Host di stampa non corrispondente: %s" -#: src/libslic3r/ExtrusionEntity.cpp:323 +#: src/libslic3r/ExtrusionEntity.cpp:328 src/libslic3r/ExtrusionEntity.cpp:364 msgid "Mixed" msgstr "Mischiate" -#: src/libslic3r/PrintConfig.cpp:2491 +#: src/libslic3r/PrintConfig.cpp:2634 msgid "ml" msgstr "ml" -#: src/slic3r/GUI/BedShapeDialog.cpp:92 src/slic3r/GUI/ConfigWizard.cpp:218 -#: src/slic3r/GUI/ConfigWizard.cpp:970 src/slic3r/GUI/ConfigWizard.cpp:984 +#: src/slic3r/GUI/BedShapeDialog.cpp:129 src/slic3r/GUI/ConfigWizard.cpp:236 +#: src/slic3r/GUI/ConfigWizard.cpp:1336 src/slic3r/GUI/ConfigWizard.cpp:1350 #: src/slic3r/GUI/ExtruderSequenceDialog.cpp:87 -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:135 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:333 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:94 +#: src/slic3r/GUI/GCodeViewer.cpp:2183 src/slic3r/GUI/GCodeViewer.cpp:2189 +#: src/slic3r/GUI/GCodeViewer.cpp:2197 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:91 -#: src/libslic3r/PrintConfig.cpp:122 src/libslic3r/PrintConfig.cpp:188 -#: src/libslic3r/PrintConfig.cpp:246 src/libslic3r/PrintConfig.cpp:321 -#: src/libslic3r/PrintConfig.cpp:329 src/libslic3r/PrintConfig.cpp:379 -#: src/libslic3r/PrintConfig.cpp:505 src/libslic3r/PrintConfig.cpp:516 -#: src/libslic3r/PrintConfig.cpp:534 src/libslic3r/PrintConfig.cpp:712 -#: src/libslic3r/PrintConfig.cpp:1231 src/libslic3r/PrintConfig.cpp:1292 -#: src/libslic3r/PrintConfig.cpp:1310 src/libslic3r/PrintConfig.cpp:1328 -#: src/libslic3r/PrintConfig.cpp:1384 src/libslic3r/PrintConfig.cpp:1394 -#: src/libslic3r/PrintConfig.cpp:1516 src/libslic3r/PrintConfig.cpp:1524 -#: src/libslic3r/PrintConfig.cpp:1565 src/libslic3r/PrintConfig.cpp:1573 -#: src/libslic3r/PrintConfig.cpp:1583 src/libslic3r/PrintConfig.cpp:1591 -#: src/libslic3r/PrintConfig.cpp:1599 src/libslic3r/PrintConfig.cpp:1682 -#: src/libslic3r/PrintConfig.cpp:1914 src/libslic3r/PrintConfig.cpp:1985 -#: src/libslic3r/PrintConfig.cpp:2019 src/libslic3r/PrintConfig.cpp:2147 -#: src/libslic3r/PrintConfig.cpp:2226 src/libslic3r/PrintConfig.cpp:2233 -#: src/libslic3r/PrintConfig.cpp:2240 src/libslic3r/PrintConfig.cpp:2270 -#: src/libslic3r/PrintConfig.cpp:2280 src/libslic3r/PrintConfig.cpp:2290 -#: src/libslic3r/PrintConfig.cpp:2450 src/libslic3r/PrintConfig.cpp:2484 -#: src/libslic3r/PrintConfig.cpp:2623 src/libslic3r/PrintConfig.cpp:2632 -#: src/libslic3r/PrintConfig.cpp:2641 src/libslic3r/PrintConfig.cpp:2651 -#: src/libslic3r/PrintConfig.cpp:2695 src/libslic3r/PrintConfig.cpp:2705 -#: src/libslic3r/PrintConfig.cpp:2717 src/libslic3r/PrintConfig.cpp:2737 -#: src/libslic3r/PrintConfig.cpp:2747 src/libslic3r/PrintConfig.cpp:2757 -#: src/libslic3r/PrintConfig.cpp:2775 src/libslic3r/PrintConfig.cpp:2790 -#: src/libslic3r/PrintConfig.cpp:2804 src/libslic3r/PrintConfig.cpp:2815 -#: src/libslic3r/PrintConfig.cpp:2828 src/libslic3r/PrintConfig.cpp:2873 -#: src/libslic3r/PrintConfig.cpp:2883 src/libslic3r/PrintConfig.cpp:2892 -#: src/libslic3r/PrintConfig.cpp:2902 src/libslic3r/PrintConfig.cpp:2918 -#: src/libslic3r/PrintConfig.cpp:2942 +#: src/libslic3r/PrintConfig.cpp:82 src/libslic3r/PrintConfig.cpp:93 +#: src/libslic3r/PrintConfig.cpp:124 src/libslic3r/PrintConfig.cpp:222 +#: src/libslic3r/PrintConfig.cpp:280 src/libslic3r/PrintConfig.cpp:355 +#: src/libslic3r/PrintConfig.cpp:363 src/libslic3r/PrintConfig.cpp:413 +#: src/libslic3r/PrintConfig.cpp:541 src/libslic3r/PrintConfig.cpp:552 +#: src/libslic3r/PrintConfig.cpp:570 src/libslic3r/PrintConfig.cpp:748 +#: src/libslic3r/PrintConfig.cpp:1158 src/libslic3r/PrintConfig.cpp:1339 +#: src/libslic3r/PrintConfig.cpp:1400 src/libslic3r/PrintConfig.cpp:1418 +#: src/libslic3r/PrintConfig.cpp:1436 src/libslic3r/PrintConfig.cpp:1492 +#: src/libslic3r/PrintConfig.cpp:1502 src/libslic3r/PrintConfig.cpp:1624 +#: src/libslic3r/PrintConfig.cpp:1632 src/libslic3r/PrintConfig.cpp:1673 +#: src/libslic3r/PrintConfig.cpp:1681 src/libslic3r/PrintConfig.cpp:1691 +#: src/libslic3r/PrintConfig.cpp:1699 src/libslic3r/PrintConfig.cpp:1707 +#: src/libslic3r/PrintConfig.cpp:1790 src/libslic3r/PrintConfig.cpp:2056 +#: src/libslic3r/PrintConfig.cpp:2127 src/libslic3r/PrintConfig.cpp:2161 +#: src/libslic3r/PrintConfig.cpp:2290 src/libslic3r/PrintConfig.cpp:2369 +#: src/libslic3r/PrintConfig.cpp:2376 src/libslic3r/PrintConfig.cpp:2383 +#: src/libslic3r/PrintConfig.cpp:2413 src/libslic3r/PrintConfig.cpp:2423 +#: src/libslic3r/PrintConfig.cpp:2433 src/libslic3r/PrintConfig.cpp:2593 +#: src/libslic3r/PrintConfig.cpp:2627 src/libslic3r/PrintConfig.cpp:2766 +#: src/libslic3r/PrintConfig.cpp:2775 src/libslic3r/PrintConfig.cpp:2784 +#: src/libslic3r/PrintConfig.cpp:2794 src/libslic3r/PrintConfig.cpp:2859 +#: src/libslic3r/PrintConfig.cpp:2869 src/libslic3r/PrintConfig.cpp:2881 +#: src/libslic3r/PrintConfig.cpp:2901 src/libslic3r/PrintConfig.cpp:2911 +#: src/libslic3r/PrintConfig.cpp:2921 src/libslic3r/PrintConfig.cpp:2939 +#: src/libslic3r/PrintConfig.cpp:2954 src/libslic3r/PrintConfig.cpp:2968 +#: src/libslic3r/PrintConfig.cpp:2979 src/libslic3r/PrintConfig.cpp:2992 +#: src/libslic3r/PrintConfig.cpp:3037 src/libslic3r/PrintConfig.cpp:3047 +#: src/libslic3r/PrintConfig.cpp:3056 src/libslic3r/PrintConfig.cpp:3066 +#: src/libslic3r/PrintConfig.cpp:3082 src/libslic3r/PrintConfig.cpp:3106 msgid "mm" msgstr "mm" -#: src/libslic3r/PrintConfig.cpp:1547 src/libslic3r/PrintConfig.cpp:1556 +#: src/libslic3r/PrintConfig.cpp:1655 src/libslic3r/PrintConfig.cpp:1664 msgid "mm (zero to disable)" msgstr "mm (imposta a zero per disabilitare)" -#: src/libslic3r/PrintConfig.cpp:451 src/libslic3r/PrintConfig.cpp:560 -#: src/libslic3r/PrintConfig.cpp:882 src/libslic3r/PrintConfig.cpp:895 -#: src/libslic3r/PrintConfig.cpp:1015 src/libslic3r/PrintConfig.cpp:1041 -#: src/libslic3r/PrintConfig.cpp:1423 src/libslic3r/PrintConfig.cpp:1761 -#: src/libslic3r/PrintConfig.cpp:1883 src/libslic3r/PrintConfig.cpp:1951 -#: src/libslic3r/PrintConfig.cpp:2111 +#: src/libslic3r/PrintConfig.cpp:487 src/libslic3r/PrintConfig.cpp:596 +#: src/libslic3r/PrintConfig.cpp:924 src/libslic3r/PrintConfig.cpp:937 +#: src/libslic3r/PrintConfig.cpp:1059 src/libslic3r/PrintConfig.cpp:1085 +#: src/libslic3r/PrintConfig.cpp:1531 src/libslic3r/PrintConfig.cpp:1876 +#: src/libslic3r/PrintConfig.cpp:2025 src/libslic3r/PrintConfig.cpp:2093 +#: src/libslic3r/PrintConfig.cpp:2254 msgid "mm or %" msgstr "mm o %" -#: src/libslic3r/PrintConfig.cpp:237 src/libslic3r/PrintConfig.cpp:609 -#: src/libslic3r/PrintConfig.cpp:617 src/libslic3r/PrintConfig.cpp:626 -#: src/libslic3r/PrintConfig.cpp:634 src/libslic3r/PrintConfig.cpp:661 -#: src/libslic3r/PrintConfig.cpp:680 src/libslic3r/PrintConfig.cpp:922 -#: src/libslic3r/PrintConfig.cpp:1050 src/libslic3r/PrintConfig.cpp:1135 -#: src/libslic3r/PrintConfig.cpp:1169 src/libslic3r/PrintConfig.cpp:1181 -#: src/libslic3r/PrintConfig.cpp:1191 src/libslic3r/PrintConfig.cpp:1241 -#: src/libslic3r/PrintConfig.cpp:1300 src/libslic3r/PrintConfig.cpp:1433 -#: src/libslic3r/PrintConfig.cpp:1607 src/libslic3r/PrintConfig.cpp:1616 -#: src/libslic3r/PrintConfig.cpp:2028 src/libslic3r/PrintConfig.cpp:2154 +#: 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 +#: src/libslic3r/PrintConfig.cpp:716 src/libslic3r/PrintConfig.cpp:966 +#: src/libslic3r/PrintConfig.cpp:1094 src/libslic3r/PrintConfig.cpp:1167 +#: src/libslic3r/PrintConfig.cpp:1243 src/libslic3r/PrintConfig.cpp:1277 +#: src/libslic3r/PrintConfig.cpp:1289 src/libslic3r/PrintConfig.cpp:1299 +#: src/libslic3r/PrintConfig.cpp:1349 src/libslic3r/PrintConfig.cpp:1408 +#: src/libslic3r/PrintConfig.cpp:1541 src/libslic3r/PrintConfig.cpp:1715 +#: src/libslic3r/PrintConfig.cpp:1724 src/libslic3r/PrintConfig.cpp:2170 +#: src/libslic3r/PrintConfig.cpp:2297 msgid "mm/s" msgstr "mm/s" -#: src/libslic3r/PrintConfig.cpp:462 src/libslic3r/PrintConfig.cpp:904 -#: src/libslic3r/PrintConfig.cpp:1720 src/libslic3r/PrintConfig.cpp:1772 -#: src/libslic3r/PrintConfig.cpp:1995 src/libslic3r/PrintConfig.cpp:2124 +#: src/libslic3r/PrintConfig.cpp:498 src/libslic3r/PrintConfig.cpp:946 +#: src/libslic3r/PrintConfig.cpp:1835 src/libslic3r/PrintConfig.cpp:1887 +#: src/libslic3r/PrintConfig.cpp:2137 src/libslic3r/PrintConfig.cpp:2267 msgid "mm/s or %" msgstr "mm/s o %" -#: src/libslic3r/PrintConfig.cpp:196 src/libslic3r/PrintConfig.cpp:339 -#: src/libslic3r/PrintConfig.cpp:862 src/libslic3r/PrintConfig.cpp:984 -#: src/libslic3r/PrintConfig.cpp:1152 src/libslic3r/PrintConfig.cpp:1201 -#: src/libslic3r/PrintConfig.cpp:1211 src/libslic3r/PrintConfig.cpp:1403 +#: src/libslic3r/PrintConfig.cpp:230 src/libslic3r/PrintConfig.cpp:373 +#: src/libslic3r/PrintConfig.cpp:902 src/libslic3r/PrintConfig.cpp:1028 +#: src/libslic3r/PrintConfig.cpp:1260 src/libslic3r/PrintConfig.cpp:1309 +#: src/libslic3r/PrintConfig.cpp:1319 src/libslic3r/PrintConfig.cpp:1511 msgid "mm/s²" msgstr "mm/s²" -#: src/libslic3r/PrintConfig.cpp:1730 +#: src/libslic3r/PrintConfig.cpp:1845 msgid "mm²" msgstr "mm²" -#: src/libslic3r/PrintConfig.cpp:672 +#: src/libslic3r/PrintConfig.cpp:708 msgid "mm³" msgstr "mm³" -#: src/slic3r/GUI/RammingChart.cpp:81 src/libslic3r/PrintConfig.cpp:601 -#: src/libslic3r/PrintConfig.cpp:1250 +#: src/slic3r/GUI/RammingChart.cpp:81 src/libslic3r/PrintConfig.cpp:637 +#: src/libslic3r/PrintConfig.cpp:1358 msgid "mm³/s" msgstr "mm³/s" -#: src/libslic3r/PrintConfig.cpp:1262 src/libslic3r/PrintConfig.cpp:1273 +#: src/libslic3r/PrintConfig.cpp:1370 src/libslic3r/PrintConfig.cpp:1381 msgid "mm³/s²" msgstr "mm³/s²" -#: src/slic3r/GUI/GUI_App.cpp:820 +#: src/slic3r/GUI/GUI_App.cpp:1512 msgid "Mode" msgstr "&Modalità" @@ -4526,7 +5289,7 @@ msgstr "&Modalità" msgid "model" msgstr "modello" -#: src/slic3r/GUI/BedShapeDialog.cpp:251 +#: src/slic3r/GUI/BedShapeDialog.cpp:395 msgid "Model" msgstr "Modello" @@ -4555,145 +5318,181 @@ msgstr "Riparazione modello terminata" msgid "Model repaired successfully" msgstr "Modello riparato con successo" -#: src/slic3r/GUI/Tab.cpp:979 +#: src/slic3r/GUI/GUI_App.cpp:1506 src/slic3r/GUI/wxExtensions.cpp:675 +msgctxt "Mode" +msgid "Advanced" +msgstr "Avanzata" + +#: src/slic3r/GUI/Tab.cpp:1241 msgid "Modifications to the current profile will be saved." msgstr "Verranno salvate le modifiche al profilo attuale." -#: src/slic3r/GUI/Preset.cpp:247 +#: src/slic3r/GUI/GUI_App.cpp:1425 msgid "modified" msgstr "modificato" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3551 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4014 msgid "Modifier" msgstr "Modificatore" -#: src/slic3r/GUI/Tab.cpp:1161 +#: src/slic3r/GUI/Tab.cpp:1491 msgid "Modifiers" msgstr "Modificatori" -#: src/libslic3r/PrintConfig.cpp:2512 +#: src/libslic3r/PrintConfig.cpp:2655 msgid "money/bottle" msgstr "soldi/bottiglia" -#: src/libslic3r/PrintConfig.cpp:762 +#: src/libslic3r/PrintConfig.cpp:798 msgid "money/kg" msgstr "soldi/kg" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1372 +#: src/libslic3r/PrintConfig.cpp:461 +msgid "Monotonic" +msgstr "Monotonico" + +#: src/slic3r/GUI/NotificationManager.cpp:305 +#: src/slic3r/GUI/NotificationManager.cpp:315 +msgid "More" +msgstr "Altro" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1219 msgid "Mouse wheel" msgstr "Rotella del mouse" -#: src/slic3r/GUI/GLCanvas3D.cpp:261 +#: src/slic3r/GUI/GLCanvas3D.cpp:249 msgid "Mouse wheel:" msgstr "Rotella del mouse:" -#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:64 msgid "Move" msgstr "Sposta" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1372 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1219 msgid "Move clipping plane" -msgstr "Sposta piano di ritaglio" +msgstr "Sposta piano sezione" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:215 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 msgid "Move current slider thumb Down" msgstr "Abbassa la barra di scorrimento attuale" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:214 +#: 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" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:1059 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:835 msgid "Move drainage hole" msgstr "Sposta foro di drenaggio" -#: src/slic3r/GUI/GLCanvas3D.cpp:3505 +#: src/slic3r/GUI/GLCanvas3D.cpp:3810 msgid "Move Object" msgstr "Sposta oggetto" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1365 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1212 msgid "Move point" msgstr "Sposta punto" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:166 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:160 msgid "Move selection 10 mm in negative X direction" msgstr "Sposta selezione 10 mm in direzione X negativa" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:159 msgid "Move selection 10 mm in negative Y direction" msgstr "Sposta selezione 10 mm in direzione Y negativa" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:167 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:161 msgid "Move selection 10 mm in positive X direction" msgstr "Sposta selezione 10 mm in direzione X positiva" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:158 msgid "Move selection 10 mm in positive Y direction" msgstr "Sposta selezione 10 mm in direzione Y positiva" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1097 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:955 msgid "Move support point" msgstr "Sposta punto di supporto" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:169 +#: src/slic3r/GUI/GCodeViewer.cpp:2492 +msgid "Movement" +msgstr "Movimento" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:163 msgid "Movement in camera space" msgstr "Movimento nello spazio della camera" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:168 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:162 msgid "Movement step set to 1 mm" msgstr "Passo del movimento impostato a 1 mm" -#: src/libslic3r/PrintConfig.cpp:2201 +#: src/libslic3r/PrintConfig.cpp:2344 msgid "Multi material printers may need to prime or purge extruders on tool changes. Extrude the excess material into the wipe tower." msgstr "Le stampanti multi-material potrebbero necessitare di caricare o spurgare l'estrusore al cambio di attrezzo. Estrude il materiale in eccesso in una torre di spurgo." -#: src/slic3r/GUI/Plater.cpp:2360 src/slic3r/GUI/Plater.cpp:2413 +#: src/slic3r/GUI/Plater.cpp:2322 src/slic3r/GUI/Plater.cpp:2375 msgid "Multi-part object detected" msgstr "Rilevato oggetto in parti multiple" #: src/slic3r/GUI/FirmwareDialog.cpp:419 src/slic3r/GUI/FirmwareDialog.cpp:454 -#, possible-c-format +#, c-format msgid "Multiple %s devices found. Please only connect one at a time for flashing." msgstr "Trovati molteplici %s dispositivi. Per favore connettine uno alla volta per il flashing." -#: src/slic3r/GUI/Tab.cpp:1179 +#: src/slic3r/GUI/Tab.cpp:1509 msgid "Multiple Extruders" msgstr "Estrusori multipli" -#: src/slic3r/GUI/Plater.cpp:2410 -msgid "Multiple objects were loaded for a multi-material printer.\nInstead of considering them as multiple objects, should I consider\nthese files to represent a single object having multiple parts?" -msgstr "Sono stati caricati oggetti multipli per stampante multi-material.\nInvece di considerarli come oggetti multipli, devo considerarli come parte di un singolo oggetto avente parti multiple?" +#: src/slic3r/GUI/Plater.cpp:2372 +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 "" +"Sono stati caricati oggetti multipli per stampante multi-material.\n" +"Invece di considerarli come oggetti multipli, devo considerarli come parte di un singolo oggetto avente parti multiple?" -#: src/libslic3r/PrintConfig.cpp:3439 +#: src/libslic3r/PrintConfig.cpp:3638 msgid "Multiply copies by creating a grid." msgstr "Moltiplica le copie creando una griglia." -#: src/libslic3r/PrintConfig.cpp:3434 +#: src/libslic3r/PrintConfig.cpp:3633 msgid "Multiply copies by this factor." msgstr "Moltiplica le copie per questo valore." -#: src/slic3r/GUI/Field.cpp:150 src/slic3r/GUI/OptionsGroup.cpp:580 +#: src/slic3r/GUI/Field.cpp:198 src/slic3r/GUI/OptionsGroup.cpp:715 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:874 msgid "N/A" msgstr "N/A" -#: src/slic3r/GUI/GUI_ObjectList.cpp:270 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:153 +#: src/slic3r/GUI/GUI_ObjectList.cpp:284 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:161 msgid "Name" msgstr "Nome" -#: src/libslic3r/PrintConfig.cpp:1488 +#: src/libslic3r/PrintConfig.cpp:114 +msgid "Name of the printer" +msgstr "Nome della stampante" + +#: src/libslic3r/PrintConfig.cpp:1596 msgid "Name of the printer variant. For example, the printer variants may be differentiated by a nozzle diameter." msgstr "Nome della variante di stampante. Per esempio le varianti di una stampante potrebbero differire per diametro dell'ugello." -#: src/libslic3r/PrintConfig.cpp:1482 +#: src/libslic3r/PrintConfig.cpp:1590 msgid "Name of the printer vendor." msgstr "Nome del venditore della stampante." -#: src/libslic3r/PrintConfig.cpp:1058 +#: src/libslic3r/PrintConfig.cpp:1102 msgid "Name of the profile, from which this profile inherits." msgstr "Nome del profilo da cui questo profilo eredita." -#: src/libslic3r/PrintConfig.cpp:1630 +#: src/libslic3r/PrintConfig.cpp:1738 msgid "Nearest" msgstr "Più vicino" @@ -4701,16 +5500,32 @@ msgstr "Più vicino" msgid "Network lookup" msgstr "Ricerca network" -#: src/slic3r/GUI/Plater.cpp:2151 +#: src/slic3r/GUI/Preferences.cpp:430 +msgid "New layout, access via settings button in the top menu" +msgstr "Nuovo layout, accesso tramite pulsante impostazioni dal menù superiore" + +#: src/slic3r/GUI/Plater.cpp:2056 msgid "New Project" msgstr "Nuovo progetto" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:112 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:105 msgid "New project, clear plater" msgstr "Nuovo progetto, pulisci piano" +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:609 +msgid "New Value" +msgstr "Nuovo Valore" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1178 +msgid "New value" +msgstr "Nuovo valore" + +#: src/slic3r/GUI/NotificationManager.hpp:322 +msgid "New version is available." +msgstr "È disponibile una nuova versione." + #: src/slic3r/GUI/UpdateDialogs.cpp:38 -#, possible-c-format +#, c-format msgid "New version of %s is available" msgstr "È disponibile una nuova versione di %s" @@ -4718,23 +5533,23 @@ msgstr "È disponibile una nuova versione di %s" msgid "New version:" msgstr "Nuova versione:" -#: src/slic3r/GUI/GLCanvas3D.cpp:4673 +#: src/slic3r/GUI/GLCanvas3D.cpp:5089 msgid "Next Redo action: %1%" msgstr "Ripeti Prossima azione: %1%" -#: src/slic3r/GUI/GLCanvas3D.cpp:4641 +#: src/slic3r/GUI/GLCanvas3D.cpp:5051 msgid "Next Undo action: %1%" msgstr "Annulla Prossima azione: %1%" -#: src/libslic3r/PrintConfig.cpp:960 +#: src/libslic3r/PrintConfig.cpp:1004 msgid "No extrusion" msgstr "No estrusione" -#: src/libslic3r/SLAPrintSteps.cpp:453 +#: src/libslic3r/SLAPrintSteps.cpp:451 msgid "No pad can be generated for this model with the current configuration" msgstr "Non può essere generato nessun Pad per questo modello con la configurazione corrente" -#: src/slic3r/GUI/MainFrame.cpp:784 +#: src/slic3r/GUI/MainFrame.cpp:1485 msgid "No previously sliced file." msgstr "File non processato precedentemente." @@ -4742,175 +5557,221 @@ msgstr "File non processato precedentemente." msgid "NO RAMMING AT ALL" msgstr "NESSUN RAMMING" -#: src/libslic3r/PrintConfig.cpp:1857 +#: src/libslic3r/PrintConfig.cpp:1999 msgid "No sparse layers (EXPERIMENTAL)" msgstr "Nessun layer sparso (SPERIMENTALE)" -#: src/libslic3r/PrintConfig.cpp:2774 +#: src/libslic3r/PrintConfig.cpp:2938 msgid "No support points will be placed closer than this threshold." msgstr "Non verranno posizionati punti di supporto più vicini di questa soglia." -#: src/slic3r/GUI/UpdateDialogs.cpp:303 +#: src/slic3r/GUI/UpdateDialogs.cpp:304 msgid "No updates available" msgstr "Nessun aggiornamento disponibile" -#: src/slic3r/GUI/ConfigWizard.cpp:291 src/slic3r/GUI/ConfigWizard.cpp:574 -#: src/slic3r/GUI/Plater.cpp:499 src/slic3r/GUI/Plater.cpp:639 -#: src/libslic3r/ExtrusionEntity.cpp:309 +#: src/slic3r/GUI/ConfigWizard.cpp:309 src/slic3r/GUI/ConfigWizard.cpp:599 +#: src/slic3r/GUI/Plater.cpp:365 src/slic3r/GUI/Plater.cpp:505 +#: src/libslic3r/ExtrusionEntity.cpp:312 msgid "None" msgstr "Nessuno" -#: src/slic3r/GUI/Tab.cpp:2203 +#: src/slic3r/GUI/Search.cpp:77 src/slic3r/GUI/Tab.cpp:2372 msgid "Normal" msgstr "Normale" -#: src/slic3r/GUI/Plater.cpp:1286 +#: src/slic3r/GUI/Plater.cpp:1177 src/slic3r/GUI/Plater.cpp:1224 msgid "normal mode" msgstr "modalità normale" -#: src/libslic3r/Zipper.cpp:46 +#: src/slic3r/GUI/GCodeViewer.cpp:2552 +msgid "Normal mode" +msgstr "Modalità normale" + +#: src/libslic3r/miniz_extension.cpp:105 msgid "not a ZIP archive" msgstr "non un archivio ZIP" -#: src/slic3r/GUI/BedShapeDialog.cpp:223 src/slic3r/GUI/BedShapeDialog.cpp:302 +#: src/slic3r/GUI/BedShapeDialog.cpp:366 src/slic3r/GUI/BedShapeDialog.cpp:446 msgid "Not found:" msgstr "Non trovato:" -#: src/slic3r/GUI/DoubleSlider.cpp:1019 +#: src/slic3r/GUI/DoubleSlider.cpp:1144 msgid "Note" msgstr "Nota" -#: src/slic3r/Utils/AstroBox.cpp:89 +#: src/slic3r/GUI/Tab.cpp:3408 +msgid "Note, that selected preset will be deleted from this/those printer(s) too." +msgstr "Nota: il preset selezionato verrà eliminato anche da questa/e stampante/i." + +#: src/slic3r/GUI/Tab.cpp:3416 +msgid "Note, that this/those printer(s) will be deleted after deleting of the selected preset." +msgstr "Nota: questa/e stampante/i saranno cancellate dopo aver cancellato il preset selezionato." + +#: src/slic3r/GUI/Tab.cpp:2039 +msgid "" +"Note: All parameters from this group are moved to the Physical Printer settings (see changelog).\n" +"\n" +"A new Physical Printer profile is created by clicking on the \"cog\" icon right of the Printer profiles combo box, by selecting the \"Add physical printer\" item in the Printer combo box. The Physical Printer profile editor opens also when clicking on the \"cog\" icon in the Printer settings tab. The Physical Printer profiles are being stored into PrusaSlicer/physical_printer directory." +msgstr "" +"Nota: Tutti i parametri di questo gruppo vengono spostati nelle impostazioni della stampante fisica (vedi changelog).\n" +"\n" +"Un nuovo profilo di stampante fisica viene creato cliccando sull'icona \"ingranaggio\" a destra della casella combinata dei profili della stampante, selezionando la voce \"Aggiungi stampante fisica\" nella casella combinata della stampante. L'editor dei profili della stampante fisica si apre anche cliccando sull'icona \"ingranaggio\" nella scheda Impostazioni della stampante. I profili della stampante fisica vengono memorizzati nella directory PrusaSlicer/physical_printer." + +#: src/slic3r/Utils/AstroBox.cpp:92 msgid "Note: AstroBox version at least 1.1.0 is required." msgstr "Nota: è richiesta una versione di AstroBox 1.1.0 o successiva." -#: src/slic3r/Utils/FlashAir.cpp:73 +#: src/slic3r/Utils/FlashAir.cpp:76 msgid "Note: FlashAir with firmware 2.00.02 or newer and activated upload function is required." msgstr "Nota: è necessaria FlashAir con firmware 2.00.02 o successivo e funzione di caricamento attiva." -#: src/slic3r/Utils/OctoPrint.cpp:89 +#: src/slic3r/Utils/OctoPrint.cpp:91 msgid "Note: OctoPrint version at least 1.1.0 is required." msgstr "Nota: è richiesta una versione di OctoPrint 1.1.0 o successiva." -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1345 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1192 msgid "Note: some shortcuts work in (non)editing mode only." msgstr "Nota: alcune scorciatoie funzionano solo in modalità (non)modifica." -#: src/slic3r/GUI/Tab.cpp:1251 src/slic3r/GUI/Tab.cpp:1252 -#: src/slic3r/GUI/Tab.cpp:1540 src/slic3r/GUI/Tab.cpp:1541 -#: src/slic3r/GUI/Tab.cpp:2012 src/slic3r/GUI/Tab.cpp:2013 -#: src/slic3r/GUI/Tab.cpp:2128 src/slic3r/GUI/Tab.cpp:2129 -#: src/slic3r/GUI/Tab.cpp:3535 src/slic3r/GUI/Tab.cpp:3536 +#: src/slic3r/GUI/SavePresetDialog.cpp:151 +msgid "Note: This preset will be replaced after saving" +msgstr "Nota: Questo preset sarà sostituito dopo il salvataggio" + +#: src/slic3r/GUI/Tab.cpp:1581 src/slic3r/GUI/Tab.cpp:1582 +#: src/slic3r/GUI/Tab.cpp:1887 src/slic3r/GUI/Tab.cpp:1888 +#: src/slic3r/GUI/Tab.cpp:2221 src/slic3r/GUI/Tab.cpp:2222 +#: src/slic3r/GUI/Tab.cpp:2297 src/slic3r/GUI/Tab.cpp:2298 +#: src/slic3r/GUI/Tab.cpp:3951 src/slic3r/GUI/Tab.cpp:3952 msgid "Notes" msgstr "Note" -#: src/slic3r/GUI/ConfigWizard.cpp:1751 src/slic3r/GUI/DoubleSlider.cpp:1905 -#: src/slic3r/GUI/DoubleSlider.cpp:1926 src/slic3r/GUI/GUI.cpp:245 +#: src/slic3r/GUI/ConfigWizard.cpp:2237 src/slic3r/GUI/DoubleSlider.cpp:2124 +#: src/slic3r/GUI/DoubleSlider.cpp:2144 src/slic3r/GUI/GUI.cpp:244 msgid "Notice" msgstr "Avvertenza" -#: src/slic3r/GUI/ConfigWizard.cpp:218 +#: src/slic3r/GUI/ConfigWizard.cpp:236 msgid "nozzle" msgstr "ugello" -#: src/slic3r/GUI/Tab.cpp:1870 src/slic3r/GUI/Tab.cpp:2340 -#: src/libslic3r/PrintConfig.cpp:1326 +#: src/slic3r/GUI/Tab.cpp:1790 +msgid "Nozzle" +msgstr "Ugello" + +#: src/slic3r/GUI/ConfigWizard.cpp:1392 +msgid "Nozzle and Bed Temperatures" +msgstr "Temperatura ugello e piano" + +#: src/slic3r/GUI/Tab.cpp:2104 src/slic3r/GUI/Tab.cpp:2509 +#: src/libslic3r/PrintConfig.cpp:1434 msgid "Nozzle diameter" msgstr "Diametro ugello" -#: src/slic3r/GUI/ConfigWizard.cpp:969 +#: src/slic3r/GUI/ConfigWizard.cpp:1335 msgid "Nozzle Diameter:" msgstr "Diametro ugello:" -#: src/libslic3r/PrintConfig.cpp:650 +#: src/libslic3r/PrintConfig.cpp:2201 +msgid "Nozzle temperature" +msgstr "Temperatura ugello" + +#: src/libslic3r/PrintConfig.cpp:2198 +msgid "Nozzle temperature for layers after the first one. Set this to zero to disable temperature control commands in the output G-code." +msgstr "Temperatura dell'ugello per i layer dopo il primo. Impostarlo a zero per disabilitare i comandi di controllo della temperatura nel G-code di uscita." + +#: src/libslic3r/PrintConfig.cpp:961 +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 "Temperatura dell'ugello per il primo strato. Se si desidera controllare la temperatura manualmente durante la stampa, impostarla a zero per disabilitare i comandi di controllo della temperatura nel G-code di uscita." + +#: src/libslic3r/PrintConfig.cpp:686 msgid "Number of cooling moves" msgstr "Numero di movimenti di raffreddamento" -#: src/slic3r/GUI/Tab.cpp:1839 +#: src/slic3r/GUI/Tab.cpp:2073 msgid "Number of extruders of the printer." msgstr "Numero estrusori della stampante." -#: src/libslic3r/PrintConfig.cpp:1975 +#: src/libslic3r/PrintConfig.cpp:2117 msgid "Number of interface layers to insert between the object(s) and support material." msgstr "Numero di layer interfaccia da inserire tra l'oggetto(i) e il materiale di supporto." -#: src/libslic3r/PrintConfig.cpp:1697 +#: src/libslic3r/PrintConfig.cpp:1812 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 "Numero di giri per lo skirt. Se è impostata l'opzione per la lunghezza minima di estrusione, il numero dei giri potrebbe essere più grande di quello configurato qui. Imposta questo valore a zero per disattivare completamente lo skirt." -#: src/libslic3r/PrintConfig.cpp:2365 +#: src/libslic3r/PrintConfig.cpp:2508 msgid "Number of pixels in" msgstr "Numero di pixel su" -#: src/libslic3r/PrintConfig.cpp:2367 +#: src/libslic3r/PrintConfig.cpp:2510 msgid "Number of pixels in X" msgstr "Numero di pixel su X" -#: src/libslic3r/PrintConfig.cpp:2373 +#: src/libslic3r/PrintConfig.cpp:2516 msgid "Number of pixels in Y" msgstr "Numero di pixel su Y" -#: src/libslic3r/PrintConfig.cpp:176 +#: src/libslic3r/PrintConfig.cpp:210 msgid "Number of solid layers to generate on bottom surfaces." msgstr "Numero di layer solidi da generare sulle superfici inferiori." -#: src/libslic3r/PrintConfig.cpp:1781 +#: src/libslic3r/PrintConfig.cpp:1896 msgid "Number of solid layers to generate on top and bottom surfaces." msgstr "Numero di layer solidi da generare sulle superfici superiori e inferiori." -#: src/libslic3r/PrintConfig.cpp:2134 +#: src/libslic3r/PrintConfig.cpp:2277 msgid "Number of solid layers to generate on top surfaces." msgstr "Numero di layer solidi da generare sulle superfici superiori." -#: src/libslic3r/PrintConfig.cpp:2518 +#: src/libslic3r/PrintConfig.cpp:2661 msgid "Number of the layers needed for the exposure time fade from initial exposure time to the exposure time" msgstr "Numero di layer necessari per la sfumatura del tempo di esposizione dal tempo di esposizione iniziale al tempo di esposizione" -#: src/slic3r/GUI/Plater.cpp:241 +#: src/slic3r/GUI/Plater.cpp:247 msgid "Number of tool changes" msgstr "Numero di cambi attrezzo" -#: src/libslic3r/PrintConfig.cpp:2753 +#: src/slic3r/GUI/Tab.cpp:4127 src/libslic3r/PrintConfig.cpp:2917 msgid "Object elevation" msgstr "Elevazione oggetto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2466 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2858 msgid "Object manipulation" msgstr "Manipolazione oggetto" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:155 src/libslic3r/GCode.cpp:638 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:163 src/libslic3r/GCode.cpp:623 msgid "Object name" msgstr "Nome oggetto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3417 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3880 msgid "Object or Instance" msgstr "Oggetto o Istanza" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1106 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1230 msgid "Object reordered" msgstr "Oggetto riordinato" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2479 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2871 msgid "Object Settings to modify" msgstr "Impostazioni Oggetto da modificare" -#: src/slic3r/GUI/Plater.cpp:2529 +#: src/slic3r/GUI/Plater.cpp:2491 msgid "Object too large?" msgstr "Oggetto troppo grande?" -#: src/libslic3r/PrintConfig.cpp:2262 +#: src/libslic3r/PrintConfig.cpp:2405 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 "L'oggetto sarà utilizzato per spurgare l'ugello dopo un cambio di attrezzo per ridurre il tempo di stampa e risparmiare materiale che finirebbe altrimenti nella torre di spurgo. Come risultato, i colori dell'oggetto saranno mischiati." -#: src/slic3r/GUI/Plater.cpp:1194 +#: src/slic3r/GUI/Plater.cpp:1103 msgid "object(s)" msgstr "oggetto(i)" -#: src/slic3r/GUI/Plater.cpp:1231 src/slic3r/GUI/Plater.cpp:1245 +#: src/slic3r/GUI/Plater.cpp:1143 src/slic3r/GUI/Plater.cpp:1160 msgid "objects" msgstr "oggetti" -#: src/libslic3r/PrintConfig.cpp:429 src/libslic3r/PrintConfig.cpp:855 +#: src/libslic3r/PrintConfig.cpp:465 src/libslic3r/PrintConfig.cpp:893 msgid "Octagram Spiral" msgstr "Spirale a Ottagramma" @@ -4918,64 +5779,97 @@ msgstr "Spirale a Ottagramma" msgid "OctoPrint version" msgstr "Versione OctoPrint" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3425 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3888 msgid "of a current Object" msgstr "di un Oggetto corrente" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:43 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:42 msgid "Offset" msgstr "Offset" -#: src/slic3r/GUI/Tab.cpp:1755 -#, possible-c-format +#: src/slic3r/GUI/Preferences.cpp:422 +msgid "Old regular layout with the tab bar" +msgstr "Precedente layout normale con la barra delle schede" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:608 +msgid "Old Value" +msgstr "Valore precedente" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1177 +msgid "Old value" +msgstr "Vecchio valore" + +#: src/slic3r/GUI/Preferences.cpp:123 +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 "Su OSX per impostazione predefinita c'è sempre una sola istanza di applicazione in esecuzione. Tuttavia è possibile eseguire più istanze della stessa app dalla riga di comando. In tal caso questa impostazione consentirà una sola istanza." + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:359 +#, c-format msgid "On this system, %s uses HTTPS certificates from the system Certificate Store or Keychain." msgstr "Su questo sistema, %s utilizza certificati HTTPS provenienti dal sistema Certificate Store o da Keychain." -#: src/slic3r/GUI/DoubleSlider.cpp:950 +#: src/slic3r/GUI/DoubleSlider.cpp:1064 msgid "One layer mode" msgstr "Modalità Un Layer" -#: src/libslic3r/Print.cpp:1365 +#: src/libslic3r/Print.cpp:1391 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/libslic3r/PrintConfig.cpp:1903 src/libslic3r/PrintConfig.cpp:2676 +#: 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." -#: src/libslic3r/PrintConfig.cpp:1027 +#: src/libslic3r/PrintConfig.cpp:1071 msgid "Only infill where needed" msgstr "Riempimento solo quando necessario" -#: src/slic3r/GUI/Tab.cpp:2373 +#: src/slic3r/GUI/Tab.cpp:2542 msgid "Only lift Z" msgstr "Solleva Z solamente" -#: src/libslic3r/PrintConfig.cpp:1570 +#: src/libslic3r/PrintConfig.cpp:1678 msgid "Only lift Z above" msgstr "Solleva Z solo al di sopra" -#: src/libslic3r/PrintConfig.cpp:1579 +#: src/libslic3r/PrintConfig.cpp:1687 msgid "Only lift Z below" msgstr "Solleva Z solo al di sotto" -#: src/libslic3r/PrintConfig.cpp:1348 +#: src/libslic3r/PrintConfig.cpp:1456 msgid "Only retract when crossing perimeters" msgstr "Retrai solo se si attraversa un perimetro" -#: src/slic3r/GUI/Tab.cpp:1187 +#: src/slic3r/GUI/ConfigWizard.cpp:714 +msgid "Only the following installed printers are compatible with the selected filament:" +msgstr "Il filamento selezionato è compatibile solo con le seguenti stampanti installate:" + +#: src/slic3r/GUI/Tab.cpp:1517 msgid "Ooze prevention" msgstr "Prevenzione delle fuoriuscite" -#: src/libslic3r/Print.cpp:1266 +#: src/libslic3r/Print.cpp:1292 msgid "Ooze prevention is currently not supported with the wipe tower enabled." msgstr "Prevenzione sgocciolamento non è al momento supportata con la torre di spurgo attiva." -#: src/slic3r/GUI/MainFrame.cpp:408 +#: src/slic3r/GUI/MainFrame.cpp:1398 +msgid "Open &PrusaSlicer" +msgstr "Apri &PrusaSlicer" + +#: src/slic3r/GUI/MainFrame.cpp:1391 +msgid "Open a G-code file" +msgstr "Apri un file G-code" + +#: src/slic3r/GUI/MainFrame.cpp:63 src/slic3r/GUI/MainFrame.cpp:77 +#: src/slic3r/GUI/MainFrame.cpp:1262 +msgid "Open a new PrusaSlicer instance" +msgstr "Apri una nuova istanza PrusaSlicer" + +#: src/slic3r/GUI/MainFrame.cpp:989 msgid "Open a project file" msgstr "Apri un file progetto" -#: src/slic3r/GUI/Tab.cpp:1729 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:330 msgid "Open CA certificate file" msgstr "Apri file di certificato CA" @@ -4988,116 +5882,150 @@ msgstr "Apri la pagina del registro delle modifiche" msgid "Open download page" msgstr "Apri la pagina di Download" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:113 +#: src/slic3r/GUI/NotificationManager.cpp:742 +msgid "Open Folder." +msgstr "Apri Cartella." + +#: src/slic3r/Utils/Process.cpp:151 +msgid "Open G-code file:" +msgstr "Apri un file G-code:" + +#: src/slic3r/GUI/MainFrame.cpp:66 src/slic3r/GUI/MainFrame.cpp:1141 +msgid "Open G-code viewer" +msgstr "Apri visualizzatore G-code" + +#: src/slic3r/GUI/MainFrame.cpp:79 +msgid "Open new G-code viewer" +msgstr "Apri nuovo visualizzatore G-code" + +#: src/slic3r/GUI/MainFrame.cpp:63 src/slic3r/GUI/MainFrame.cpp:1262 +msgid "Open new instance" +msgstr "Apri una nuova istanza" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:106 msgid "Open project STL/OBJ/AMF/3MF with config, clear plater" msgstr "Apri progetto STL/OBJ/AMF/3MF con configurazione, pulisci piano" -#: src/slic3r/GUI/MainFrame.cpp:693 -#, possible-c-format +#: src/slic3r/GUI/MainFrame.cpp:77 src/slic3r/GUI/MainFrame.cpp:1398 +msgid "Open PrusaSlicer" +msgstr "Apri PrusaSlicer" + +#: src/slic3r/GUI/MainFrame.cpp:918 src/slic3r/GUI/MainFrame.cpp:1317 +#, c-format msgid "Open the %s website in your browser" msgstr "Apri il sito web di %s nel browser" -#: src/slic3r/GUI/MainFrame.cpp:684 +#: src/slic3r/GUI/MainFrame.cpp:909 src/slic3r/GUI/MainFrame.cpp:1308 msgid "Open the Prusa3D drivers download page in your browser" msgstr "Apri la pagina di download dei driver Prusa3D sul browser" -#: src/slic3r/GUI/MainFrame.cpp:686 +#: src/slic3r/GUI/MainFrame.cpp:911 src/slic3r/GUI/MainFrame.cpp:1310 msgid "Open the software releases page in your browser" msgstr "Apri la pagina delle versioni software sul browser" -#: src/slic3r/GUI/Plater.cpp:4040 +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:220 src/slic3r/GUI/Plater.cpp:3961 msgid "Optimize orientation" msgstr "Ottimizza orientamento" -#: src/slic3r/GUI/Plater.cpp:2767 +#: src/slic3r/GUI/Plater.cpp:1555 msgid "Optimize Rotation" msgstr "Ottimizza Rotazione" -#: src/slic3r/GUI/Plater.cpp:4040 +#: src/slic3r/GUI/Plater.cpp:3962 msgid "Optimize the rotation of the object for better print results." msgstr "Ottimizza la rotazione dell'oggetto per risultati di stampa migliori." -#: src/libslic3r/PrintConfig.cpp:137 +#: src/libslic3r/PrintConfig.cpp:170 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 "Ottimizza il movimenti di spostamento per minimizzare l'incrocio di perimetri. È comunemente usato con estrusori Bowden che soffrono di oozing (trasudazione). Questa caratteristica rallenta sia la stampa che la generazione del G-code." -#: src/slic3r/GUI/Tab.cpp:1131 +#: src/slic3r/GUI/GCodeViewer.cpp:2525 src/slic3r/GUI/GUI_Preview.cpp:320 +#: src/slic3r/GUI/GUI_Preview.cpp:333 +msgid "Options" +msgstr "Opzioni" + +#: src/slic3r/GUI/Tab.cpp:1460 msgid "Options for support material and raft" msgstr "Opzioni per materiale di supporto e raft" -#: src/slic3r/GUI/DoubleSlider.cpp:989 +#: src/slic3r/GUI/Mouse3DController.cpp:315 +msgid "Options:" +msgstr "Opzioni:" + +#: src/slic3r/GUI/DoubleSlider.cpp:1112 msgid "or press \"+\" key" msgstr "o premi il tasto \"+\"" -#: src/slic3r/GUI/Plater.cpp:2892 +#: src/slic3r/GUI/Jobs/RotoptimizeJob.cpp:74 msgid "Orientation found." msgstr "Trovato orientamento." -#: src/slic3r/GUI/Plater.cpp:2891 +#: src/slic3r/GUI/Jobs/RotoptimizeJob.cpp:73 msgid "Orientation search canceled." msgstr "Ricerca orientamento annullata." -#: src/slic3r/GUI/BedShapeDialog.cpp:84 +#: src/slic3r/GUI/BedShapeDialog.cpp:94 msgid "Origin" msgstr "Origine" -#: src/slic3r/GUI/Tab.cpp:1227 +#: src/slic3r/GUI/Tab.cpp:1557 msgid "Other" msgstr "Altro" -#: src/libslic3r/PrintConfig.cpp:144 src/libslic3r/PrintConfig.cpp:2064 +#: src/libslic3r/PrintConfig.cpp:177 src/libslic3r/PrintConfig.cpp:2206 msgid "Other layers" msgstr "Altri layer" -#: src/slic3r/GUI/ConfigWizard.cpp:856 +#: src/slic3r/GUI/ConfigWizard.cpp:1222 msgid "Other Vendors" msgstr "Altri Fornitori" -#: src/slic3r/GUI/Tab.cpp:1238 src/slic3r/GUI/Tab.cpp:3666 +#: src/slic3r/GUI/Tab.cpp:1568 src/slic3r/GUI/Tab.cpp:4085 msgid "Output file" msgstr "File di output" -#: src/libslic3r/PrintConfig.cpp:3493 +#: src/libslic3r/PrintConfig.cpp:3692 msgid "Output File" msgstr "File di output" -#: src/libslic3r/PrintConfig.cpp:1363 +#: src/libslic3r/PrintConfig.cpp:1471 msgid "Output filename format" msgstr "Formato del file di output" -#: src/libslic3r/PrintConfig.cpp:3381 +#: src/libslic3r/PrintConfig.cpp:3580 msgid "Output Model Info" msgstr "Info Modello di output" -#: src/slic3r/GUI/Tab.cpp:1230 src/slic3r/GUI/Tab.cpp:3665 +#: src/slic3r/GUI/Tab.cpp:1560 src/slic3r/GUI/Tab.cpp:4084 msgid "Output options" msgstr "Opzioni output" -#: src/slic3r/GUI/GUI_Preview.cpp:239 src/libslic3r/ExtrusionEntity.cpp:312 +#: src/slic3r/GUI/GUI_Preview.cpp:303 src/libslic3r/ExtrusionEntity.cpp:316 +#: src/libslic3r/ExtrusionEntity.cpp:340 msgid "Overhang perimeter" msgstr "Perimetro sporgente" -#: src/libslic3r/PrintConfig.cpp:2042 +#: src/libslic3r/PrintConfig.cpp:2184 msgid "Overhang threshold" msgstr "Soglia sporgenza" -#: src/slic3r/GUI/Tab.cpp:1215 +#: src/slic3r/GUI/Tab.cpp:1545 msgid "Overlap" msgstr "Sovrapposizione" -#: src/slic3r/GUI/MainFrame.cpp:614 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "P&rint Settings Tab" msgstr "Impos&tazioni Stampa" -#: src/slic3r/GUI/GUI_ObjectList.cpp:107 src/slic3r/GUI/GUI_ObjectList.cpp:625 -#: src/slic3r/GUI/Plater.cpp:635 src/slic3r/GUI/Tab.cpp:3636 -#: src/slic3r/GUI/Tab.cpp:3637 src/libslic3r/PrintConfig.cpp:2781 -#: src/libslic3r/PrintConfig.cpp:2788 src/libslic3r/PrintConfig.cpp:2802 -#: src/libslic3r/PrintConfig.cpp:2813 src/libslic3r/PrintConfig.cpp:2823 -#: src/libslic3r/PrintConfig.cpp:2845 src/libslic3r/PrintConfig.cpp:2856 -#: src/libslic3r/PrintConfig.cpp:2863 src/libslic3r/PrintConfig.cpp:2870 -#: src/libslic3r/PrintConfig.cpp:2881 src/libslic3r/PrintConfig.cpp:2890 -#: src/libslic3r/PrintConfig.cpp:2899 +#: src/slic3r/GUI/GUI_ObjectList.cpp:105 src/slic3r/GUI/GUI_ObjectList.cpp:664 +#: src/slic3r/GUI/Plater.cpp:501 src/slic3r/GUI/Tab.cpp:4055 +#: src/slic3r/GUI/Tab.cpp:4056 src/slic3r/GUI/Tab.cpp:4127 +#: src/libslic3r/PrintConfig.cpp:2945 src/libslic3r/PrintConfig.cpp:2952 +#: src/libslic3r/PrintConfig.cpp:2966 src/libslic3r/PrintConfig.cpp:2977 +#: src/libslic3r/PrintConfig.cpp:2987 src/libslic3r/PrintConfig.cpp:3009 +#: src/libslic3r/PrintConfig.cpp:3020 src/libslic3r/PrintConfig.cpp:3027 +#: src/libslic3r/PrintConfig.cpp:3034 src/libslic3r/PrintConfig.cpp:3045 +#: src/libslic3r/PrintConfig.cpp:3054 src/libslic3r/PrintConfig.cpp:3063 msgid "Pad" msgstr "Pad" @@ -5105,151 +6033,187 @@ msgstr "Pad" msgid "Pad and Support" msgstr "Pad e Supporto" -#: src/libslic3r/PrintConfig.cpp:2855 +#: src/slic3r/GUI/Tab.cpp:4127 src/libslic3r/PrintConfig.cpp:3019 msgid "Pad around object" msgstr "Pad Intorno all'oggetto" -#: src/libslic3r/PrintConfig.cpp:2862 +#: src/libslic3r/PrintConfig.cpp:3026 msgid "Pad around object everywhere" msgstr "Pad ovunque intorno all'oggetto" -#: src/libslic3r/PrintConfig.cpp:2811 +#: src/libslic3r/PrintConfig.cpp:2975 msgid "Pad brim size" msgstr "Dimensioni brim del Pad" -#: src/libslic3r/SLA/Pad.cpp:691 +#: src/libslic3r/SLA/Pad.cpp:532 msgid "Pad brim size is too small for the current configuration." msgstr "La dimensione del brim del Pad è troppo piccola per la configurazione attuale." -#: src/libslic3r/PrintConfig.cpp:2898 +#: src/libslic3r/PrintConfig.cpp:3062 msgid "Pad object connector penetration" msgstr "Inserimento connettore Pad dell'oggetto" -#: src/libslic3r/PrintConfig.cpp:2880 +#: src/libslic3r/PrintConfig.cpp:3044 msgid "Pad object connector stride" msgstr "Passo del connettore del pad dell'oggetto" -#: src/libslic3r/PrintConfig.cpp:2889 +#: src/libslic3r/PrintConfig.cpp:3053 msgid "Pad object connector width" msgstr "Lunghezza connettore Pad dell'oggetto" -#: src/libslic3r/PrintConfig.cpp:2869 +#: src/libslic3r/PrintConfig.cpp:3033 msgid "Pad object gap" msgstr "Spazio Pad oggetto" -#: src/libslic3r/PrintConfig.cpp:2797 +#: src/libslic3r/PrintConfig.cpp:2961 msgid "Pad wall height" msgstr "Altezza parete Pad" -#: src/libslic3r/PrintConfig.cpp:2844 +#: src/libslic3r/PrintConfig.cpp:3008 msgid "Pad wall slope" msgstr "Inclinazione della parete del pad" -#: src/libslic3r/PrintConfig.cpp:2787 +#: src/libslic3r/PrintConfig.cpp:2951 msgid "Pad wall thickness" msgstr "Spessore parete Pad" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:171 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 msgid "Page Down" msgstr "Page Down" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:170 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 msgid "Page Up" msgstr "Page Up" -#: src/slic3r/GUI/Field.cpp:139 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:33 +msgid "Paint-on supports" +msgstr "Supporti Paint-on" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:178 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:159 +msgid "Paints all facets inside, regardless of their orientation." +msgstr "Dipinge tutte le faccette all'interno, indipendentemente dal loro orientamento." + +#: src/slic3r/GUI/Field.cpp:187 msgid "parameter name" msgstr "nome parametro" -#: src/slic3r/GUI/Field.cpp:243 +#: src/slic3r/GUI/Field.cpp:291 msgid "Parameter validation" msgstr "Validazione parametri" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3418 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3551 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3881 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4014 msgid "Part" msgstr "Parte" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2494 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2886 msgid "Part manipulation" msgstr "Manipolazione parti" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2483 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2875 msgid "Part Settings to modify" msgstr "Impostazioni parte da modificare" -#: src/slic3r/GUI/GLCanvas3D.cpp:4514 +#: src/libslic3r/PrintConfig.cpp:138 +msgid "Password" +msgstr "Password" + +#: src/slic3r/GUI/GLCanvas3D.cpp:4880 msgid "Paste" msgstr "Incolla" -#: src/slic3r/GUI/MainFrame.cpp:592 +#: src/slic3r/GUI/MainFrame.cpp:1198 msgid "Paste clipboard" msgstr "Incolla appunti" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:133 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:128 msgid "Paste from clipboard" msgstr "Incolla dagli appunti" -#: src/slic3r/GUI/Plater.cpp:5606 +#: src/slic3r/GUI/Plater.cpp:5803 msgid "Paste From Clipboard" msgstr "Incolla dagli appunti" -#: src/libslic3r/PrintConfig.cpp:2002 +#: src/libslic3r/PrintConfig.cpp:2144 msgid "Pattern" msgstr "Trama" -#: src/libslic3r/PrintConfig.cpp:1891 +#: src/libslic3r/PrintConfig.cpp:2033 msgid "Pattern angle" msgstr "Angolo trama" -#: src/libslic3r/PrintConfig.cpp:2016 +#: src/libslic3r/PrintConfig.cpp:2158 msgid "Pattern spacing" msgstr "Spaziatura trama" -#: src/libslic3r/PrintConfig.cpp:2004 +#: src/libslic3r/PrintConfig.cpp:2146 msgid "Pattern used to generate support material." msgstr "Trama usata per generare il materiale di supporto." -#: src/slic3r/GUI/Plater.cpp:1261 +#: src/slic3r/GUI/GCodeViewer.cpp:2437 src/slic3r/GUI/GCodeViewer.cpp:2460 +#: src/slic3r/GUI/Plater.cpp:1199 msgid "Pause" msgstr "Pausa" -#: src/slic3r/GUI/DoubleSlider.cpp:1009 +#: src/slic3r/GUI/DoubleSlider.cpp:1133 msgid "Pause print (\"%1%\")" msgstr "Metti in pausa (\"%1%\")" -#: src/slic3r/GUI/GLCanvas3D.cpp:934 src/slic3r/GUI/GLCanvas3D.cpp:943 -#: src/slic3r/GUI/GLCanvas3D.cpp:982 +#: src/slic3r/GUI/Tab.cpp:2209 src/libslic3r/PrintConfig.cpp:1969 +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/slic3r/GUI/Gizmos/GLGizmoCut.cpp:175 +#: 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." + +#: src/slic3r/GUI/GCodeViewer.cpp:2233 +msgid "Percentage" +msgstr "Percentuale" + +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:177 msgid "Perform cut" msgstr "Effettua taglio" -#: src/libslic3r/PrintConfig.cpp:2927 +#: src/libslic3r/PrintConfig.cpp:3091 msgid "Performance vs accuracy of calculation. Lower values may produce unwanted artifacts." msgstr "Prestazioni vs Precisione di calcolo. Valori più bassi possono produrre artefatti non voluti." -#: src/slic3r/GUI/GUI_Preview.cpp:237 src/libslic3r/ExtrusionEntity.cpp:310 +#: src/slic3r/GUI/GUI_Preview.cpp:301 src/libslic3r/ExtrusionEntity.cpp:314 +#: src/libslic3r/ExtrusionEntity.cpp:336 msgid "Perimeter" msgstr "Perimetro" -#: src/libslic3r/PrintConfig.cpp:1408 +#: src/libslic3r/PrintConfig.cpp:1516 msgid "Perimeter extruder" msgstr "Estrusore perimetro" -#: src/slic3r/GUI/PresetHints.cpp:165 +#: src/slic3r/GUI/PresetHints.cpp:164 msgid "perimeters" msgstr "perimetri" -#: src/libslic3r/PrintConfig.cpp:1399 src/libslic3r/PrintConfig.cpp:1417 -#: src/libslic3r/PrintConfig.cpp:1430 src/libslic3r/PrintConfig.cpp:1440 +#: src/libslic3r/PrintConfig.cpp:1507 src/libslic3r/PrintConfig.cpp:1525 +#: src/libslic3r/PrintConfig.cpp:1538 src/libslic3r/PrintConfig.cpp:1548 msgid "Perimeters" msgstr "Perimetri" -#: src/slic3r/GUI/ConfigWizard.cpp:860 -#, possible-c-format +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:159 +msgid "Physical Printer" +msgstr "Stampante Fisica" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:789 +#: src/slic3r/GUI/PresetComboBoxes.cpp:948 +msgid "Physical printers" +msgstr "Stampanti fisiche" + +#: src/slic3r/GUI/ConfigWizard.cpp:1226 +#, c-format msgid "Pick another vendor supported by %s" msgstr "Scegli un altro distributore supportato da %s" @@ -5257,279 +6221,338 @@ msgstr "Scegli un altro distributore supportato da %s" 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:2681 +#: src/libslic3r/PrintConfig.cpp:2822 +msgid "Pillar connection mode" +msgstr "Modo di collegamento al pilastro" + +#: src/libslic3r/PrintConfig.cpp:2791 +msgid "Pillar diameter" +msgstr "Diametro pilastro" + +#: src/libslic3r/PrintConfig.cpp:2845 msgid "Pillar widening factor" msgstr "Fattore di espansione pilastro" -#: src/slic3r/GUI/ConfigManipulation.cpp:330 +#: src/slic3r/GUI/ConfigManipulation.cpp:335 msgid "Pinhead diameter should be smaller than the pillar diameter." msgstr "Il diametro dell'apice dovrebbe essere più piccolo rispetto al diametro del pilastro." -#: src/slic3r/GUI/DoubleSlider.cpp:79 +#: src/libslic3r/PrintConfig.cpp:2763 +msgid "Pinhead front diameter" +msgstr "Diametro anteriore apice" + +#: src/libslic3r/PrintConfig.cpp:2781 +msgid "Pinhead width" +msgstr "Larghezza apice" + +#: src/slic3r/GUI/DoubleSlider.cpp:110 msgid "Place bearings in slots and resume printing" msgstr "Posiziona i cuscinetti negli alloggi e riprendi a stampare" -#: src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp:45 +#: src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp:41 msgid "Place on face" msgstr "Posiziona su faccia" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:192 src/slic3r/GUI/MainFrame.cpp:204 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:190 src/slic3r/GUI/MainFrame.cpp:340 +#: src/slic3r/GUI/MainFrame.cpp:352 msgid "Plater" msgstr "Piano" -#: src/slic3r/GUI/GUI_App.cpp:1085 +#: src/slic3r/GUI/GUI_App.cpp:1877 msgid "Please check and fix your object list." msgstr "Per favore controlla e correggi la tua lista oggetti." -#: src/slic3r/GUI/Plater.cpp:2312 src/slic3r/GUI/Tab.cpp:2959 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:209 src/slic3r/GUI/Plater.cpp:2255 +#: src/slic3r/GUI/Tab.cpp:3188 msgid "Please check your object list before preset changing." msgstr "Per favore verifica la tua lista di oggetti prima di cambiare i preset." -#: src/slic3r/GUI/Plater.cpp:3286 +#: src/slic3r/GUI/Plater.cpp:3089 msgid "Please select the file to reload" msgstr "Seleziona il file da ricaricare" -#: src/slic3r/GUI/AboutDialog.cpp:39 src/slic3r/GUI/AboutDialog.cpp:291 +#: src/slic3r/GUI/AboutDialog.cpp:43 src/slic3r/GUI/AboutDialog.cpp:48 +#: src/slic3r/GUI/AboutDialog.cpp:317 msgid "Portions copyright" -msgstr "Parti di copyright" +msgstr "Porzioni di copyright" -#: src/libslic3r/PrintConfig.cpp:2400 +#: src/libslic3r/PrintConfig.cpp:2543 msgid "Portrait" msgstr "Ritratto" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:215 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:457 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:223 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:505 msgid "Position" msgstr "Posizione" -#: src/slic3r/GUI/Tab.cpp:2367 +#: src/slic3r/GUI/Tab.cpp:2536 msgid "Position (for multi-extruder printers)" msgstr "Posizione (per stampanti multi-estrusore)" -#: src/libslic3r/PrintConfig.cpp:1623 +#: src/libslic3r/PrintConfig.cpp:1731 msgid "Position of perimeters starting points." msgstr "Posizione dei punti iniziali dei perimetri." -#: src/libslic3r/PrintConfig.cpp:2224 +#: src/libslic3r/PrintConfig.cpp:2367 msgid "Position X" msgstr "Posizione X" -#: src/libslic3r/PrintConfig.cpp:2231 +#: src/libslic3r/PrintConfig.cpp:2374 msgid "Position Y" msgstr "Posizione Y" -#: src/slic3r/GUI/Tab.cpp:1245 src/libslic3r/PrintConfig.cpp:1453 +#: src/slic3r/GUI/Tab.cpp:1575 src/libslic3r/PrintConfig.cpp:1561 msgid "Post-processing scripts" msgstr "Script di post produzione" -#: src/slic3r/GUI/MainFrame.cpp:629 +#: src/slic3r/GUI/MainFrame.cpp:1237 msgid "Pre&view" msgstr "&Visualizza anteprima" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:149 src/slic3r/GUI/Preferences.cpp:10 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:143 src/slic3r/GUI/Preferences.cpp:12 msgid "Preferences" msgstr "Preferenze" -#: src/libslic3r/PrintConfig.cpp:1641 +#: src/libslic3r/PrintConfig.cpp:1749 msgid "Preferred direction of the seam" msgstr "Direzione preferita della giunzione" -#: src/libslic3r/PrintConfig.cpp:1652 +#: src/libslic3r/PrintConfig.cpp:1760 msgid "Preferred direction of the seam - jitter" msgstr "Direzione preferita della giunzione - jitter" -#: src/libslic3r/PrintObject.cpp:255 +#: src/libslic3r/PrintObject.cpp:261 msgid "Preparing infill" msgstr "Preparazione infill" -#: src/slic3r/GUI/Tab.cpp:2920 -#, possible-c-format -msgid "Preset (%s)" -msgstr "Preset (%s)" +#: src/slic3r/GUI/GUI_App.cpp:855 +msgid "Preparing settings tabs" +msgstr "Preparazione schede impostazioni" -#: src/slic3r/GUI/Tab.cpp:3082 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1009 +msgid "Preset \"%1%\" has the following unsaved changes:" +msgstr "Il preset \"%1%\" ha le seguenti modifiche non salvate:" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1014 +msgid "Preset \"%1%\" is not compatible with the new print profile and it has the following unsaved changes:" +msgstr "Il preset \"%1%\" non è compatibile con il nuovo profilo di stampa e possiede le seguenti modifiche non salvate:" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1013 +msgid "Preset \"%1%\" is not compatible with the new printer profile and it has the following unsaved changes:" +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:148 msgid "Preset with name \"%1%\" already exists." msgstr "Preset con il nome \"%1%\" già esistente." -#: src/slic3r/GUI/Tab.cpp:3029 +#: src/slic3r/GUI/SavePresetDialog.cpp:219 msgctxt "PresetName" msgid "Copy" msgstr "Copia" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:163 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:157 msgid "Press to activate deselection rectangle" msgstr "Premi per attivare il rettangolo di deselezione" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:197 -msgid "Press to activate one direction scaling in Gizmo scale" -msgstr "Premere per attivare una direzione di ridimensionamento nel Gizmo ridimensiona" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:162 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:156 msgid "Press to activate selection rectangle" msgstr "Premi per attivare il rettangolo di selezione" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:198 -msgid "Press to scale (in Gizmo scale) or rotate (in Gizmo rotate)\nselected objects around their own center" -msgstr "Premi per ridimensionare (nel Gizmo ridimensiona) o ruotare (nel Gizmo ruota)\nl'oggetto selezionato attorno al proprio centro" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:155 +msgid "" +"Press to select multiple objects\n" +"or move multiple objects with mouse" +msgstr "" +"Premi per selezionare o spostare\n" +"oggetti multipli con il mouse" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:161 -msgid "Press to select multiple objects\nor move multiple objects with mouse" -msgstr "Premi per selezionare o spostare\noggetti multipli con il mouse" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:221 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:222 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:231 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:232 +msgid "" +"Press to speed up 5 times while moving thumb\n" +"with arrow keys or mouse wheel" +msgstr "" +"Premere per accelerare di 5 volte durante il movimento del cursore\n" +"con i tasti freccia o la rotella del mouse" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:195 -#, no-c-format -msgid "Press to snap by 5% in Gizmo scale\nor to snap by 1mm in Gizmo move" -msgstr "Premi per scatti del 5% nel Gizmo ridimensiona\no per scatti di 1mm nel Gizmo sposta" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:211 src/slic3r/GUI/Plater.cpp:4105 -#: src/slic3r/GUI/Tab.cpp:2390 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:212 src/slic3r/GUI/Plater.cpp:4052 +#: src/slic3r/GUI/Tab.cpp:2559 msgid "Preview" msgstr "Anteprima" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:42 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:41 msgid "Preview hollowed and drilled model" msgstr "Anteprima del modello svuotato e forato" -#: src/slic3r/GUI/MainFrame.cpp:790 +#: src/slic3r/GUI/MainFrame.cpp:1491 msgid "Previously sliced file (" msgstr "File precedentemente processato (" -#: src/libslic3r/PrintConfig.cpp:1851 +#: src/libslic3r/PrintConfig.cpp:1993 msgid "Prime all printing extruders" msgstr "Prepara tutti gli estrusori di stampa" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:51 src/slic3r/GUI/Preset.cpp:1521 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:51 src/libslic3r/Preset.cpp:1300 msgid "print" msgstr "stampa" -#: src/slic3r/GUI/MainFrame.cpp:648 +#: src/slic3r/GUI/GCodeViewer.cpp:2436 src/slic3r/GUI/GCodeViewer.cpp:2451 +msgid "Print" +msgstr "Stampa" + +#: src/slic3r/GUI/MainFrame.cpp:1258 msgid "Print &Host Upload Queue" msgstr "Coda di caricamento &Host di stampa" -#: src/libslic3r/PrintConfig.cpp:471 +#: src/libslic3r/PrintConfig.cpp:507 msgid "Print contour perimeters from the outermost one to the innermost one instead of the default inverse order." msgstr "Stampa i perimetri di contorno dal più esterno al più interno invece dell'ordine predefinito inverso." -#: src/slic3r/GUI/ConfigWizard.cpp:952 +#: src/slic3r/GUI/ConfigWizard.cpp:1318 msgid "Print Diameters" msgstr "Diametro di stampa" -#: src/slic3r/GUI/Tab.cpp:1944 src/slic3r/GUI/Tab.cpp:2123 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:209 src/slic3r/GUI/Tab.cpp:2024 msgid "Print Host upload" msgstr "Caricamento Host di stampa" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:142 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:138 #: src/slic3r/GUI/PrintHostDialogs.cpp:136 msgid "Print host upload queue" msgstr "Coda di caricamento Host di stampa" -#: src/slic3r/GUI/DoubleSlider.cpp:970 +#: src/slic3r/GUI/DoubleSlider.cpp:1093 msgid "Print mode" msgstr "Modalità di stampa" -#: src/slic3r/GUI/Tab.hpp:328 src/slic3r/GUI/Tab.hpp:431 +#: src/slic3r/GUI/GCodeViewer.cpp:2579 src/slic3r/GUI/GUI_Preview.cpp:1476 +msgid "Print pauses" +msgstr "Pause di stampa" + +#: src/slic3r/GUI/Tab.hpp:378 src/slic3r/GUI/Tab.hpp:502 msgid "Print Settings" msgstr "Impostazioni Stampa" -#: src/slic3r/GUI/Plater.cpp:815 +#: src/slic3r/GUI/Plater.cpp:690 msgid "Print settings" msgstr "Impostazioni di stampa" -#: src/slic3r/GUI/Tab.cpp:1478 +#: src/slic3r/GUI/GLCanvas3D.cpp:4303 src/slic3r/GUI/GLCanvas3D.cpp:4939 +msgid "Print Settings Tab" +msgstr "Scheda Impostazioni Stampa" + +#: src/slic3r/GUI/Tab.cpp:1824 msgid "Print speed override" msgstr "Scavalca velocità di stampa" -#: src/libslic3r/GCode.cpp:638 +#: src/libslic3r/GCode.cpp:623 msgid "Print z" msgstr "Stampa z" -#: src/slic3r/GUI/MainFrame.cpp:621 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Print&er Settings Tab" msgstr "Impostazioni Stampant&e" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1621 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1750 msgid "Printable" msgstr "Stampabile" -#: src/slic3r/GUI/Plater.cpp:819 +#: src/slic3r/GUI/Plater.cpp:694 msgid "Printer" msgstr "Stampante" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:53 src/slic3r/GUI/Preset.cpp:1525 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:53 src/libslic3r/Preset.cpp:1304 msgid "printer" msgstr "stampante" -#: src/libslic3r/PrintConfig.cpp:2439 src/libslic3r/PrintConfig.cpp:2440 +#: src/libslic3r/PrintConfig.cpp:2582 src/libslic3r/PrintConfig.cpp:2583 msgid "Printer absolute correction" msgstr "Correzione assoluta stampante" -#: src/libslic3r/PrintConfig.cpp:2456 src/libslic3r/PrintConfig.cpp:2457 +#: src/libslic3r/PrintConfig.cpp:2599 src/libslic3r/PrintConfig.cpp:2600 msgid "Printer gamma correction" msgstr "Correzione gamma della stampante" -#: src/slic3r/GUI/Tab.cpp:976 +#: src/slic3r/GUI/Tab.cpp:1294 msgid "printer model" msgstr "modello stampante" -#: src/libslic3r/PrintConfig.cpp:1472 +#: src/libslic3r/PrintConfig.cpp:1580 msgid "Printer notes" msgstr "Note stampante" -#: src/libslic3r/PrintConfig.cpp:2431 src/libslic3r/PrintConfig.cpp:2432 -#: src/libslic3r/PrintConfig.cpp:2433 +#: src/libslic3r/PrintConfig.cpp:144 +msgid "Printer preset name" +msgstr "Nome del preset della stampante" + +#: src/libslic3r/PrintConfig.cpp:2574 src/libslic3r/PrintConfig.cpp:2575 +#: src/libslic3r/PrintConfig.cpp:2576 msgid "Printer scaling correction" msgstr "Correzione di scala stampante" -#: src/slic3r/GUI/Tab.hpp:391 +#: src/slic3r/GUI/Tab.hpp:453 msgid "Printer Settings" msgstr "Impostazioni stampante" +#: src/slic3r/GUI/GLCanvas3D.cpp:4305 src/slic3r/GUI/GLCanvas3D.cpp:4941 +msgid "Printer Settings Tab" +msgstr "Scheda Impostazioni Stampante" + #: src/libslic3r/PrintConfig.cpp:43 src/libslic3r/PrintConfig.cpp:44 msgid "Printer technology" msgstr "Tecnologia stampante" -#: src/libslic3r/PrintConfig.cpp:1466 +#: src/libslic3r/PrintConfig.cpp:1574 msgid "Printer type" msgstr "Tipo stampante" -#: src/libslic3r/PrintConfig.cpp:1487 +#: src/libslic3r/PrintConfig.cpp:1595 msgid "Printer variant" msgstr "Variante della stampante" -#: src/libslic3r/PrintConfig.cpp:1481 +#: src/libslic3r/PrintConfig.cpp:1589 msgid "Printer vendor" msgstr "Venditore della stampante" -#: src/libslic3r/Print.cpp:1388 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:476 +msgid "Printer with name \"%1%\" already exists." +msgstr "Stampante con nome \"%1%\" già esistente." + +#: src/slic3r/GUI/ConfigWizard.cpp:587 +msgid "Printer:" +msgstr "Stampante:" + +#: src/libslic3r/Print.cpp:1414 msgid "Printing with multiple extruders of differing nozzle diameters. If support is to be printed with the current extruder (support_material_extruder == 0 or support_material_interface_extruder == 0), all nozzles have to be of the same diameter." msgstr "Stampa con più estrusori con ugelli di di diametro diverso. Se il supporto deve essere stampato con l'estrusore corrente (support_material_extruder = = 0 o support_material_interface_extruder = = 0), tutti gli ugelli devono avere lo stesso diametro." #. TRN "Processing input_file_basename" -#: src/slic3r/GUI/MainFrame.cpp:849 -#, possible-c-format +#: src/slic3r/GUI/MainFrame.cpp:1550 +#, c-format msgid "Processing %s" msgstr "Elaborando %s" -#: src/slic3r/GUI/Plater.cpp:2283 -#, possible-c-format -msgid "Processing input file %s" -msgstr "Processando il file di input %s" - -#: src/libslic3r/PrintObject.cpp:108 +#: src/libslic3r/PrintObject.cpp:114 msgid "Processing triangulated mesh" msgstr "Elaborando la mesh triangolata" -#: src/slic3r/GUI/Tab.cpp:1259 src/slic3r/GUI/Tab.cpp:1549 -#: src/slic3r/GUI/Tab.cpp:2020 src/slic3r/GUI/Tab.cpp:2136 -#: src/slic3r/GUI/Tab.cpp:3544 src/slic3r/GUI/Tab.cpp:3672 +#: src/slic3r/GUI/Tab.cpp:1589 src/slic3r/GUI/Tab.cpp:1896 +#: src/slic3r/GUI/Tab.cpp:2229 src/slic3r/GUI/Tab.cpp:2305 +#: src/slic3r/GUI/Tab.cpp:3960 src/slic3r/GUI/Tab.cpp:4091 msgid "Profile dependencies" msgstr "Dipendenze profilo" -#: src/slic3r/GUI/ConfigWizard.cpp:566 +#: src/slic3r/GUI/ConfigWizard.cpp:590 msgid "Profile:" msgstr "Profilo:" -#: src/slic3r/GUI/PrintHostDialogs.cpp:150 +#: src/slic3r/GUI/PrintHostDialogs.cpp:148 msgid "Progress" msgstr "Progresso" @@ -5537,93 +6560,133 @@ msgstr "Progresso" msgid "Progress:" msgstr "Progresso:" -#: src/slic3r/GUI/MainFrame.cpp:684 +#: src/slic3r/GUI/MainFrame.cpp:909 src/slic3r/GUI/MainFrame.cpp:1308 msgid "Prusa 3D &Drivers" msgstr "Prusa 3D &Drivers" -#: src/slic3r/GUI/ConfigWizard.cpp:1995 +#: src/slic3r/GUI/ConfigWizard.cpp:2506 msgid "Prusa FFF Technology Printers" msgstr "Stampanti Prusa con tecnologia FFF" -#: src/slic3r/GUI/ConfigWizard.cpp:1998 +#: src/slic3r/GUI/ConfigWizard.cpp:2509 msgid "Prusa MSLA Technology Printers" msgstr "Stampanti Prusa con tecnologia MSLA" -#: src/slic3r/GUI/AboutDialog.cpp:260 +#: src/slic3r/Utils/Http.cpp:78 +msgid "PrusaSlicer detected system SSL certificate store in: %1%" +msgstr "PrusaSlicer ha rilevato l'archivio dei certificati SSL di sistema: %1%" + +#: src/slic3r/GUI/GUI_Init.cpp:85 src/slic3r/GUI/GUI_Init.cpp:88 +msgid "PrusaSlicer GUI initialization failed" +msgstr "Inizializzazione GUI PrusaSlicer non riuscita" + +#: 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." -#: src/slic3r/GUI/GLCanvas3DManager.cpp:284 -#, possible-c-format -msgid "PrusaSlicer requires OpenGL 2.0 capable graphics driver to run correctly, \nwhile OpenGL version %s, render %s, vendor %s was detected." +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:525 +msgid "PrusaSlicer is closing: Unsaved Changes" +msgstr "Chiusura PrusaSlicer: Modifiche non salvate" + +#: src/slic3r/GUI/OpenGLManager.cpp:259 +#, c-format +msgid "" +"PrusaSlicer requires OpenGL 2.0 capable graphics driver to run correctly, \n" +"while OpenGL version %s, render %s, vendor %s was detected." msgstr "PrusaSlicer richiede un driver video con supporto OpenGL 2.0 per funzionare correttamente, mentre è stata rilevata la versione %s OpenGL, render %s, distributore %s." #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:50 msgid "PrusaSlicer version" msgstr "versione PrusaSlicer" -#: src/slic3r/GUI/ConfigWizard.cpp:815 -msgid "PrusaSlicer's user interfaces comes in three variants:\nSimple, Advanced, and Expert.\nThe Simple mode shows only the most frequently used settings relevant for regular 3D printing. The other two offer progressively more sophisticated fine-tuning, they are suitable for advanced and expert users, respectively." -msgstr "L'interfaccia utente di PrusaSlicer è disponibile in tre varianti:\nSemplice, Avanzata ed Esperto.\nLa modalità Semplice mostra solo le impostazioni rilevanti utilizzate più spesso per una semplice stampa 3D. Le altre due offrono progressivamente ottimizzazioni più sofisticate, sono adatte ad utenti avanzati ed esperti, rispettivamente." +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:662 +msgid "PrusaSlicer will remember your action." +msgstr "PrusaSlicer ricorderà la tua azione." -#: src/libslic3r/PrintConfig.cpp:2254 +#: src/slic3r/GUI/ConfigWizard.cpp:1174 +msgid "" +"PrusaSlicer's user interfaces comes in three variants:\n" +"Simple, Advanced, and Expert.\n" +"The Simple mode shows only the most frequently used settings relevant for regular 3D printing. The other two offer progressively more sophisticated fine-tuning, they are suitable for advanced and expert users, respectively." +msgstr "" +"L'interfaccia utente di PrusaSlicer è disponibile in tre varianti:\n" +"Semplice, Avanzata ed Esperto.\n" +"La modalità Semplice mostra solo le impostazioni rilevanti utilizzate più spesso per una semplice stampa 3D. Le altre due offrono progressivamente ottimizzazioni più sofisticate, sono adatte ad utenti avanzati ed esperti, rispettivamente." + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:668 +msgid "PrusaSlicer: Don't ask me again" +msgstr "PrusaSlicer: Non chiedermelo più" + +#: src/libslic3r/PrintConfig.cpp:2397 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 "Lo spurgo dopo un cambio di attrezzo verrà effettuato dentro il riempimento di questo oggetto. Questo diminuisce la quantità di scarto ma potrebbe prolungare il tempo di stampa a causa di spostamenti aggiuntivi." -#: src/slic3r/GUI/Plater.cpp:544 +#: src/slic3r/GUI/Plater.cpp:410 msgid "Purging volumes" msgstr "Volumi di spurgo" -#: src/libslic3r/PrintConfig.cpp:2207 +#: src/libslic3r/PrintConfig.cpp:2350 msgid "Purging volumes - load/unload volumes" msgstr "Volumi di spurgo - volumi di carico/scarico" -#: src/libslic3r/PrintConfig.cpp:2214 +#: src/libslic3r/PrintConfig.cpp:2357 msgid "Purging volumes - matrix" msgstr "Volumi di spurgo - matrice" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:44 +#: src/libslic3r/PrintConfig.cpp:1201 +msgid "Purpose of Machine Limits" +msgstr "Scopo dei limiti della macchina" + +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:43 msgid "Quality" msgstr "Qualità" -#: src/slic3r/GUI/Tab.cpp:1080 +#: src/slic3r/GUI/Tab.cpp:1402 msgid "Quality (slower slicing)" msgstr "Qualità (slicing più lento)" -#: src/slic3r/GUI/GLCanvas3D.cpp:273 +#: src/slic3r/GUI/GLCanvas3D.cpp:260 msgid "Quality / Speed" msgstr "Qualità / Velocità" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1182 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1530 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1536 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1849 -#, possible-c-format +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:61 +msgid "Quick" +msgstr "Veloce" + +#: 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 +#, c-format msgid "Quick Add Settings (%s)" msgstr "Aggiungere Impostazioni Rapide (%s)" -#: src/slic3r/GUI/MainFrame.cpp:512 +#: src/slic3r/GUI/MainFrame.cpp:1113 msgid "Quick Slice" msgstr "Slice veloce" -#: src/slic3r/GUI/MainFrame.cpp:518 +#: src/slic3r/GUI/MainFrame.cpp:1119 msgid "Quick Slice and Save As" msgstr "Slice veloce e Salva Come" -#: src/slic3r/GUI/MainFrame.cpp:540 -#, possible-c-format +#: src/slic3r/GUI/MainFrame.cpp:1144 src/slic3r/GUI/MainFrame.cpp:1402 +#, c-format msgid "Quit %s" msgstr "Chiudi %s" -#: src/slic3r/GUI/GLCanvas3D.cpp:294 src/libslic3r/PrintConfig.cpp:511 +#: src/slic3r/GUI/GUI_App.cpp:396 +msgid "Quit, I will move my data now" +msgstr "Chiudi, sposterò i miei dati adesso" + +#: src/slic3r/GUI/GLCanvas3D.cpp:280 src/libslic3r/PrintConfig.cpp:547 msgid "Radius" msgstr "Raggio" -#: src/slic3r/GUI/Tab.cpp:1127 +#: src/slic3r/GUI/Tab.cpp:1456 msgid "Raft" msgstr "Raft" -#: src/libslic3r/PrintConfig.cpp:1501 +#: src/libslic3r/PrintConfig.cpp:1609 msgid "Raft layers" msgstr "Layer raft" @@ -5632,8 +6695,14 @@ msgid "Ramming customization" msgstr "Personalizzazione del ramming" #: src/slic3r/GUI/WipeTowerDialog.cpp:41 -msgid "Ramming denotes the rapid extrusion just before a tool change in a single-extruder MM printer. Its purpose is to properly shape the end of the unloaded filament so it does not prevent insertion of the new filament and can itself be reinserted later. This phase is important and different materials can require different extrusion speeds to get the good shape. For this reason, the extrusion rates during ramming are adjustable.\n\nThis is an expert-level setting, incorrect adjustment will likely lead to jams, extruder wheel grinding into filament etc." -msgstr "Il ramming è la rapida estrusione appena prima di un cambio di attrezzo in una stampante MM ad estrusore singolo. Lo scopo è di dare la forma corretta al capo del filamento scaricato cosicché non prevenga l'inserzione del nuovo filamento e perché possa essere inserito più facilmente esso stesso. Questa fase è importante e materiali diversi possono richiedere velocità diverse per ottenere la forma corretta. Per questo motivo le velocità di estrusione del ramming possono essere modificate.\n\nQuesta è un'impostazione per esperti, valori scorretti produrranno facilmente dei blocchi, o porteranno l'ingranaggio di estrusione a macinare il filamento etc." +msgid "" +"Ramming denotes the rapid extrusion just before a tool change in a single-extruder MM printer. Its purpose is to properly shape the end of the unloaded filament so it does not prevent insertion of the new filament and can itself be reinserted later. This phase is important and different materials can require different extrusion speeds to get the good shape. For this reason, the extrusion rates during ramming are adjustable.\n" +"\n" +"This is an expert-level setting, incorrect adjustment will likely lead to jams, extruder wheel grinding into filament etc." +msgstr "" +"Il ramming è la rapida estrusione appena prima di un cambio di attrezzo in una stampante MM ad estrusore singolo. Lo scopo è di dare la forma corretta al capo del filamento scaricato cosicché non prevenga l'inserzione del nuovo filamento e perché possa essere inserito più facilmente esso stesso. Questa fase è importante e materiali diversi possono richiedere velocità diverse per ottenere la forma corretta. Per questo motivo le velocità di estrusione del ramming possono essere modificate.\n" +"\n" +"Questa è un'impostazione per esperti, valori scorretti produrranno facilmente dei blocchi, o porteranno l'ingranaggio di estrusione a macinare il filamento etc." #: src/slic3r/GUI/WipeTowerDialog.cpp:91 msgid "Ramming line spacing" @@ -5643,27 +6712,27 @@ msgstr "Spaziatura tra linee di ramming" msgid "Ramming line width" msgstr "Larghezza della linea di Ramming" -#: src/libslic3r/PrintConfig.cpp:694 +#: src/libslic3r/PrintConfig.cpp:730 msgid "Ramming parameters" msgstr "Parametri del ramming" -#: src/slic3r/GUI/Tab.cpp:1505 +#: src/slic3r/GUI/Tab.cpp:1850 msgid "Ramming settings" msgstr "Impostazioni del ramming" -#: src/libslic3r/PrintConfig.cpp:1629 +#: src/libslic3r/PrintConfig.cpp:1737 msgid "Random" msgstr "Casuale" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:94 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:96 msgid "Range" msgstr "Intervallo" -#: src/libslic3r/SLAPrintSteps.cpp:65 +#: src/libslic3r/SLAPrintSteps.cpp:66 msgid "Rasterizing layers" msgstr "Rasterizzazione dei layer" -#: src/slic3r/GUI/MainFrame.cpp:596 +#: src/slic3r/GUI/MainFrame.cpp:1202 msgid "Re&load from disk" msgstr "R&icarica da disco" @@ -5675,210 +6744,243 @@ msgstr "Ri-configura" msgid "Ready" msgstr "Pronto" -#: src/slic3r/GUI/Plater.cpp:3115 +#: src/slic3r/GUI/Plater.cpp:2915 msgid "Ready to slice" msgstr "Pronto a processare" -#: src/slic3r/GUI/MainFrame.cpp:669 src/libslic3r/PrintConfig.cpp:1632 +#: src/slic3r/GUI/MainFrame.cpp:966 src/slic3r/GUI/MainFrame.cpp:1286 +#: src/libslic3r/PrintConfig.cpp:1740 msgid "Rear" msgstr "Posteriore" -#: src/slic3r/GUI/MainFrame.cpp:669 +#: src/slic3r/GUI/MainFrame.cpp:966 src/slic3r/GUI/MainFrame.cpp:1286 msgid "Rear View" msgstr "Vista posteriore" -#: src/slic3r/GUI/MainFrame.cpp:413 +#: src/slic3r/GUI/MainFrame.cpp:994 msgid "Recent projects" msgstr "Prog&etti recenti" -#: src/slic3r/GUI/PresetHints.cpp:263 -#, possible-c-format +#: src/slic3r/GUI/PresetHints.cpp:262 +#, c-format msgid "Recommended object thin wall thickness for layer height %.2f and" msgstr "Spessore raccomandato per oggetto con parete sottile per altezza layer %.2f e" -#: src/slic3r/GUI/PresetHints.cpp:274 +#: src/slic3r/GUI/PresetHints.cpp:273 msgid "Recommended object thin wall thickness: Not available due to excessively small extrusion width." msgstr "Spessore raccomandato per oggetto con parete sottile: Non disponibile a causa di una larghezza di estrusione eccessivamente piccola." -#: src/slic3r/GUI/PresetHints.cpp:247 +#: src/slic3r/GUI/PresetHints.cpp:246 msgid "Recommended object thin wall thickness: Not available due to invalid layer height." msgstr "Spessore raccomandato per oggetto con parete sottile: Non disponibile a causa di un'altezza layer non valida." -#: src/slic3r/GUI/GUI_App.cpp:450 src/slic3r/GUI/GUI_App.cpp:459 +#: src/slic3r/GUI/GUI_App.cpp:1102 src/slic3r/GUI/GUI_App.cpp:1115 msgid "Recreating" msgstr "Rigenerando" -#: src/slic3r/GUI/BedShapeDialog.cpp:73 +#: src/slic3r/GUI/BedShapeDialog.cpp:141 msgid "Rectangular" msgstr "Rettangolare" -#: src/libslic3r/PrintConfig.cpp:425 src/libslic3r/PrintConfig.cpp:843 -#: src/libslic3r/PrintConfig.cpp:2009 +#: src/libslic3r/PrintConfig.cpp:460 src/libslic3r/PrintConfig.cpp:881 +#: src/libslic3r/PrintConfig.cpp:2151 msgid "Rectilinear" msgstr "Rettilineo" -#: src/libslic3r/PrintConfig.cpp:2010 +#: src/libslic3r/PrintConfig.cpp:2152 msgid "Rectilinear grid" msgstr "Griglia rettilinea" -#: src/slic3r/GUI/GLCanvas3D.cpp:4657 src/slic3r/GUI/KBShortcutsDialog.cpp:131 -#: src/slic3r/GUI/MainFrame.cpp:584 +#: src/slic3r/GUI/GLCanvas3D.cpp:5067 src/slic3r/GUI/KBShortcutsDialog.cpp:126 +#: src/slic3r/GUI/MainFrame.cpp:1190 msgid "Redo" msgstr "Ripeti" -#: src/slic3r/GUI/GLCanvas3D.cpp:4065 -#, possible-c-format +#: src/slic3r/GUI/GLCanvas3D.cpp:4382 +#, c-format msgid "Redo %1$d Action" msgid_plural "Redo %1$d Actions" msgstr[0] "Ripeti %1$d Azione" msgstr[1] "Ripeti %1$d Azioni" -#: src/slic3r/GUI/GLCanvas3D.cpp:4047 +#: src/slic3r/GUI/GLCanvas3D.cpp:4361 msgid "Redo History" -msgstr "Storia Ripeti" +msgstr "Cronologia Ripeti" -#: src/slic3r/GUI/Tab.cpp:1098 +#: src/slic3r/GUI/Tab.cpp:1426 msgid "Reducing printing time" msgstr "Riduzione tempo di stampa" -#: src/slic3r/GUI/Plater.cpp:3452 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:327 +msgid "Refresh Printers" +msgstr "Aggiorna Stampanti" + +#: src/libslic3r/PrintConfig.cpp:145 +msgid "Related printer preset name" +msgstr "Nome del preset della stampante correlato" + +#: src/slic3r/GUI/Plater.cpp:3257 msgid "Reload all from disk" msgstr "Ricarica tutto da disco" -#: src/slic3r/GUI/ConfigWizard.cpp:798 src/slic3r/GUI/GUI_ObjectList.cpp:1664 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3956 src/slic3r/GUI/Plater.cpp:3225 -#: src/slic3r/GUI/Plater.cpp:3934 src/slic3r/GUI/Plater.cpp:3963 +#: src/slic3r/GUI/ConfigWizard.cpp:1157 src/slic3r/GUI/GUI_ObjectList.cpp:1793 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4439 src/slic3r/GUI/Plater.cpp:3028 +#: src/slic3r/GUI/Plater.cpp:3852 src/slic3r/GUI/Plater.cpp:3881 msgid "Reload from disk" msgstr "Ricarica da Disco" -#: src/slic3r/GUI/Plater.cpp:3339 +#: src/slic3r/GUI/Plater.cpp:3142 msgid "Reload from:" msgstr "Ricarica da:" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:134 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:129 msgid "Reload plater from disk" msgstr "Ricarica piano da disco" -#: src/slic3r/GUI/MainFrame.cpp:597 +#: src/slic3r/GUI/MainFrame.cpp:1203 msgid "Reload the plater from disk" msgstr "Ricarica piano da disco" -#: src/slic3r/GUI/Plater.cpp:3963 +#: src/slic3r/GUI/Plater.cpp:3881 msgid "Reload the selected object from disk" msgstr "Ricarica l'oggetto selezionato dal disco" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1664 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3956 src/slic3r/GUI/Plater.cpp:3934 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1793 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4439 src/slic3r/GUI/Plater.cpp:3852 msgid "Reload the selected volumes from disk" msgstr "Ricarica i volumi selezionati dal disco" -#: src/slic3r/GUI/Preferences.cpp:39 +#: src/slic3r/GUI/GCodeViewer.cpp:2442 src/slic3r/GUI/GCodeViewer.cpp:2445 +msgid "Remaining time" +msgstr "Tempo rimanente" + +#: src/slic3r/GUI/GUI_App.cpp:720 src/slic3r/GUI/UnsavedChangesDialog.cpp:653 +msgid "Remember my choice" +msgstr "Ricorda la mia scelta" + +#: src/slic3r/GUI/Preferences.cpp:52 msgid "Remember output directory" msgstr "Ricorda la directory di output" -#: src/slic3r/GUI/Tab.cpp:3121 +#: src/slic3r/GUI/MainFrame.cpp:166 +msgid "Remember to check for updates at https://github.com/prusa3d/PrusaSlicer/releases" +msgstr "Ricorda di controllare la presenza di aggiornamenti su https://github.com/prusa3d/PrusaSlicer/releases" + +#: src/slic3r/GUI/Tab.cpp:3386 msgid "remove" msgstr "rimuovi" -#: src/slic3r/GUI/BedShapeDialog.cpp:190 src/slic3r/GUI/BedShapeDialog.cpp:269 -#: src/slic3r/GUI/Tab.cpp:3124 +#: src/slic3r/GUI/BedShapeDialog.cpp:333 src/slic3r/GUI/BedShapeDialog.cpp:413 +#: src/slic3r/GUI/Tab.cpp:3423 msgid "Remove" msgstr "Rimuovi" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:48 msgid "Remove all holes" msgstr "Rimuovi tutti i fori" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:51 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:50 msgid "Remove all points" msgstr "Rimuovi tutti i punti" -#: src/slic3r/GUI/GLCanvas3D.cpp:246 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:52 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:35 +msgid "Remove all selection" +msgstr "Elimina tutte le selezioni" + +#: src/slic3r/GUI/GLCanvas3D.cpp:239 msgid "Remove detail" msgstr "Rimuovi dettagli" -#: src/slic3r/GUI/Plater.cpp:879 -msgid "Remove device" -msgstr "Rimuovi dispositivo" - #: src/slic3r/GUI/ExtruderSequenceDialog.cpp:182 msgid "Remove extruder from sequence" msgstr "Rimuovi estrusore dalla sequenza" -#: src/slic3r/GUI/GLCanvas3D.cpp:4537 src/slic3r/GUI/Plater.cpp:3942 +#: src/slic3r/GUI/GLCanvas3D.cpp:4903 src/slic3r/GUI/Plater.cpp:3860 msgid "Remove instance" msgstr "Rimuovi istanza" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:160 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:154 msgid "Remove Instance of the selected object" msgstr "Rimuovi Istanza dell'oggetto selezionato" -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:153 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:161 msgid "Remove layer range" msgstr "Rimuovi intervallo layer" -#: src/slic3r/GUI/Plater.cpp:3942 +#: src/slic3r/GUI/Plater.cpp:3860 msgid "Remove one instance of the selected object" msgstr "Rimuovi una istanza dell'oggetto selezionato" -#: src/slic3r/GUI/GUI_ObjectSettings.cpp:95 +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:98 msgid "Remove parameter" msgstr "Rimuovi parametro" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1364 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1211 msgid "Remove point" msgstr "Rimuovi punto" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1367 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1214 msgid "Remove point from selection" msgstr "Rimuovi punto dalla selezione" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:47 msgid "Remove selected holes" msgstr "Rimuovi i fori selezionati" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:50 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1371 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1218 msgid "Remove selected points" msgstr "Rimuovi punti selezionati" -#: src/slic3r/GUI/Plater.cpp:3931 src/slic3r/GUI/Plater.cpp:3953 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:51 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:34 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:368 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:378 +msgid "Remove selection" +msgstr "Elimina selezione" + +#: src/slic3r/GUI/Plater.cpp:3849 src/slic3r/GUI/Plater.cpp:3871 msgid "Remove the selected object" msgstr "Rimuovi l'oggetto selezionato" -#: src/slic3r/GUI/ConfigWizard.cpp:453 +#: src/slic3r/GUI/ConfigWizard.cpp:456 msgid "Remove user profiles (a snapshot will be taken beforehand)" msgstr "Rimuovere i profili utente (verrà effettuata un'istantanea prima di procedere)" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1636 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1765 msgid "Rename" msgstr "Rinomina" -#: src/slic3r/GUI/GUI_ObjectList.cpp:551 +#: src/slic3r/GUI/GUI_ObjectList.cpp:589 msgid "Rename Object" msgstr "Rinomina oggetto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:551 +#: src/slic3r/GUI/GUI_ObjectList.cpp:589 msgid "Rename Sub-object" msgstr "Rinomina sotto-oggetto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3803 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4266 msgid "Renaming" msgstr "Rinomina" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:115 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:150 msgid "Renaming of the G-code after copying to the selected destination folder has failed. Current path is %1%.tmp. Please try exporting again." msgstr "Non è stato possibile rinominare il G-code dopo la copia nella cartella di destinazione selezionata. Il percorso corrente è %1%.tmp. Prova a esportare di nuovo." -#: src/libslic3r/PrintConfig.cpp:3515 +#: src/slic3r/GUI/Preferences.cpp:255 +msgid "Render" +msgstr "Render" + +#: src/libslic3r/PrintConfig.cpp:3720 msgid "Render with a software renderer" msgstr "Eseguire il rendering con un software redender" -#: src/libslic3r/PrintConfig.cpp:3516 +#: src/libslic3r/PrintConfig.cpp:3721 msgid "Render with a software renderer. The bundled MESA software renderer is loaded instead of the default OpenGL driver." msgstr "Eseguire il rendering con un software redender. Viene caricato il software di rendering MESA integrato al posto del driver OpenGL predefinito ." -#: src/slic3r/GUI/MainFrame.cpp:911 src/libslic3r/PrintConfig.cpp:3447 +#: src/slic3r/GUI/MainFrame.cpp:1612 src/libslic3r/PrintConfig.cpp:3646 msgid "Repair" msgstr "Ripara" @@ -5902,39 +7004,39 @@ msgstr "Il file 3MF non contiene alcun volume" msgid "Repairing model by the Netfabb service" msgstr "Riparare modello tramite servizio Netfabb" -#: src/slic3r/GUI/MainFrame.cpp:524 +#: src/slic3r/GUI/MainFrame.cpp:1125 msgid "Repeat last quick slice" msgstr "Ripeti l'ultimo slice veloce" -#: src/slic3r/GUI/MainFrame.cpp:524 +#: src/slic3r/GUI/MainFrame.cpp:1125 msgid "Repeat Last Quick Slice" msgstr "Ripeti l'ultimo slice veloce" -#: src/slic3r/GUI/Tab.cpp:3083 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:477 msgid "Replace?" msgstr "Sostituire?" -#: src/slic3r/GUI/MainFrame.cpp:703 +#: src/slic3r/GUI/MainFrame.cpp:928 src/slic3r/GUI/MainFrame.cpp:1327 msgid "Report an I&ssue" msgstr "&Segnala un problema" -#: src/slic3r/GUI/MainFrame.cpp:703 -#, possible-c-format +#: src/slic3r/GUI/MainFrame.cpp:928 src/slic3r/GUI/MainFrame.cpp:1327 +#, c-format msgid "Report an issue on %s" msgstr "Segnala un problema su %s" -#: src/slic3r/Utils/PresetUpdater.cpp:713 -#, possible-c-format +#: src/slic3r/Utils/PresetUpdater.cpp:733 +#, c-format msgid "requires max. %s" msgstr "richiede max. %s" -#: src/slic3r/Utils/PresetUpdater.cpp:710 -#, possible-c-format +#: src/slic3r/Utils/PresetUpdater.cpp:730 +#, c-format msgid "requires min. %s" msgstr "richiede min. %s" -#: src/slic3r/Utils/PresetUpdater.cpp:705 -#, possible-c-format +#: src/slic3r/Utils/PresetUpdater.cpp:726 +#, c-format msgid "requires min. %s and max. %s" msgstr "richiede min. %s e max. %s" @@ -5942,270 +7044,300 @@ msgstr "richiede min. %s e max. %s" msgid "Rescan" msgstr "Ri-scansiona" -#: src/slic3r/GUI/Tab.cpp:1906 -msgid "Rescan serial ports" -msgstr "Scansiona nuovamente porte seriali" - -#: src/slic3r/GUI/GLCanvas3D.cpp:313 +#: src/slic3r/GUI/GLCanvas3D.cpp:299 msgid "Reset" msgstr "Reimposta" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1373 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1220 msgid "Reset clipping plane" -msgstr "Ripristina piano di ritaglio" +msgstr "Ripristina piano sezione" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:51 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:59 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:43 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:50 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:26 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:58 msgid "Reset direction" msgstr "Reset direzione" -#: src/slic3r/GUI/Plater.cpp:2723 +#: src/slic3r/GUI/Plater.cpp:2684 msgid "Reset Project" msgstr "Reimposta Progetto" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:363 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:372 msgid "Reset rotation" msgstr "Reimposta rotazione" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:385 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:394 msgid "Reset Rotation" msgstr "Reimposta rotazione" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:397 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:399 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:407 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:409 msgid "Reset scale" msgstr "Reimposta scala" -#: src/slic3r/GUI/GLCanvas3D.cpp:252 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:136 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:118 +msgid "Reset selection" +msgstr "Reset selezione" + +#: src/slic3r/GUI/GLCanvas3D.cpp:243 msgid "Reset to base" msgstr "Ripristina alla base" -#: src/slic3r/GUI/Tab.cpp:2394 +#: src/slic3r/GUI/Tab.cpp:2564 msgid "Reset to Filament Color" msgstr "Ripristina colore Filamento" -#: src/libslic3r/PrintConfig.cpp:1511 +#: src/libslic3r/PrintConfig.cpp:1619 msgid "Resolution" msgstr "Risoluzione" -#: src/libslic3r/PrintConfig.cpp:1529 +#: src/libslic3r/PrintConfig.cpp:1637 msgid "Retract amount before wipe" msgstr "Retrai la quantità prima di pulire" -#: src/libslic3r/PrintConfig.cpp:1537 +#: src/libslic3r/PrintConfig.cpp:1645 msgid "Retract on layer change" msgstr "Retrai al cambio layer" -#: src/slic3r/GUI/Tab.cpp:1324 src/slic3r/GUI/Tab.cpp:1383 -#: src/slic3r/GUI/Tab.cpp:2370 +#: src/slic3r/GUI/GCodeViewer.cpp:2494 src/slic3r/GUI/Tab.cpp:1670 +#: src/slic3r/GUI/Tab.cpp:2539 msgid "Retraction" msgstr "Retrazione" -#: src/libslic3r/PrintConfig.cpp:1523 +#: src/libslic3r/PrintConfig.cpp:1631 msgid "Retraction is not triggered when travel moves are shorter than this length." msgstr "La retrazione non è attivata quando i movimenti di spostamento sono più brevi di questa lunghezza." -#: src/libslic3r/PrintConfig.cpp:1544 +#: src/libslic3r/PrintConfig.cpp:1652 msgid "Retraction Length" msgstr "Lunghezza Retrazione" -#: src/libslic3r/PrintConfig.cpp:1552 +#: src/libslic3r/PrintConfig.cpp:1660 msgid "Retraction Length (Toolchange)" msgstr "Lunghezza Retrazione (cambio attrezzo)" -#: src/libslic3r/PrintConfig.cpp:1604 src/libslic3r/PrintConfig.cpp:1605 +#: src/libslic3r/PrintConfig.cpp:1712 src/libslic3r/PrintConfig.cpp:1713 msgid "Retraction Speed" msgstr "Velocità di retrazione" -#: src/slic3r/GUI/Tab.cpp:2386 +#: src/slic3r/GUI/Tab.cpp:2555 msgid "Retraction when tool is disabled (advanced settings for multi-extruder setups)" msgstr "Retrazione quando l'attrezzo è disabilitato (impostazioni avanzate per setup multi-estrusore)" -#: src/slic3r/GUI/GUI_Preview.cpp:254 +#: src/slic3r/GUI/GCodeViewer.cpp:2528 src/slic3r/GUI/GUI_Preview.cpp:336 +#: src/slic3r/GUI/GUI_Preview.cpp:1472 msgid "Retractions" msgstr "Retrazioni" -#: src/slic3r/GUI/MainFrame.cpp:673 +#: src/slic3r/GUI/Preferences.cpp:198 +msgid "Reverse direction of zoom with mouse wheel" +msgstr "Inversione della direzione dello zoom con la rotella del mouse" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1861 src/slic3r/GUI/Plater.cpp:4886 +msgid "Revert conversion from imperial units" +msgstr "Invertire la conversione dalle unità imperiali" + +#: src/slic3r/GUI/MainFrame.cpp:970 src/slic3r/GUI/MainFrame.cpp:1290 msgid "Right" msgstr "Destra" -#: src/slic3r/GUI/GUI_ObjectList.cpp:402 +#: src/slic3r/GUI/GUI_ObjectList.cpp:449 msgid "Right button click the icon to change the object printable property" msgstr "Fare clic con il pulsante destro del mouse sull'icona per modificare le proprietà dell'oggetto stampabile" -#: src/slic3r/GUI/GUI_ObjectList.cpp:396 +#: src/slic3r/GUI/GUI_ObjectList.cpp:443 msgid "Right button click the icon to change the object settings" msgstr "Click destro sull'icona per cambiare le impostazioni dell'oggetto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:359 +#: src/slic3r/GUI/GUI_ObjectList.cpp:406 msgid "Right button click the icon to fix STL through Netfabb" msgstr "Click destro sull'icona per riparare il file STL tramite Netfabb" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1364 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1211 msgid "Right click" msgstr "Click destro" -#: src/slic3r/GUI/GLCanvas3D.cpp:243 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:31 +msgid "Right mouse button" +msgstr "Tasto destro mouse" + +#: src/slic3r/GUI/GLCanvas3D.cpp:237 msgid "Right mouse button:" msgstr "Tasto destro mouse:" -#: src/slic3r/GUI/MainFrame.cpp:673 +#: src/slic3r/GUI/MainFrame.cpp:970 src/slic3r/GUI/MainFrame.cpp:1290 msgid "Right View" msgstr "Vista destra" -#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:449 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:480 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:499 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:517 -#: src/libslic3r/PrintConfig.cpp:3451 +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:513 +#: 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:3650 msgid "Rotate" msgstr "Ruota" -#: src/libslic3r/PrintConfig.cpp:3456 +#: src/libslic3r/PrintConfig.cpp:3655 msgid "Rotate around X" msgstr "Ruota attorno ad X" -#: src/libslic3r/PrintConfig.cpp:3461 +#: src/libslic3r/PrintConfig.cpp:3660 msgid "Rotate around Y" msgstr "Ruota attorno ad Y" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:170 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:172 msgid "Rotate lower part upwards" msgstr "Capovolgi la parte inferiore" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:170 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 msgid "Rotate selection 45 degrees CCW" msgstr "Ruota la selezione di 45° in senso antiorario" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:171 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 msgid "Rotate selection 45 degrees CW" msgstr "Ruota la selezione di 45° in senso orario" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:216 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:458 -#: src/slic3r/GUI/Mouse3DController.cpp:304 -#: src/slic3r/GUI/Mouse3DController.cpp:321 +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:210 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:224 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:506 +#: src/slic3r/GUI/Mouse3DController.cpp:288 +#: src/slic3r/GUI/Mouse3DController.cpp:309 msgid "Rotation" msgstr "Rotazione" -#: src/libslic3r/PrintConfig.cpp:3457 +#: src/libslic3r/PrintConfig.cpp:3656 msgid "Rotation angle around the X axis in degrees." msgstr "Angolo di rotazione attorno all'asse X in gradi." -#: src/libslic3r/PrintConfig.cpp:3462 +#: src/libslic3r/PrintConfig.cpp:3661 msgid "Rotation angle around the Y axis in degrees." msgstr "Angolo di rotazione sull'asse Y in gradi." -#: src/libslic3r/PrintConfig.cpp:3452 +#: src/libslic3r/PrintConfig.cpp:3651 msgid "Rotation angle around the Z axis in degrees." msgstr "Angolo di rotazione attorno all'asse Z in gradi." -#: src/slic3r/GUI/GUI_App.cpp:797 -#, possible-c-format +#: src/slic3r/GUI/GUI_App.cpp:1474 +#, c-format msgid "Run %s" msgstr "Run %s" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:128 -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:478 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:163 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:520 msgid "Running post-processing scripts" msgstr "Esecuzione script di post produzione" #: src/slic3r/GUI/RammingChart.cpp:76 src/slic3r/GUI/WipeTowerDialog.cpp:83 -#: src/libslic3r/PrintConfig.cpp:644 src/libslic3r/PrintConfig.cpp:688 -#: src/libslic3r/PrintConfig.cpp:703 src/libslic3r/PrintConfig.cpp:2408 -#: src/libslic3r/PrintConfig.cpp:2417 src/libslic3r/PrintConfig.cpp:2527 -#: src/libslic3r/PrintConfig.cpp:2535 src/libslic3r/PrintConfig.cpp:2543 -#: src/libslic3r/PrintConfig.cpp:2550 src/libslic3r/PrintConfig.cpp:2558 -#: src/libslic3r/PrintConfig.cpp:2566 +#: src/libslic3r/PrintConfig.cpp:680 src/libslic3r/PrintConfig.cpp:724 +#: src/libslic3r/PrintConfig.cpp:739 src/libslic3r/PrintConfig.cpp:2551 +#: src/libslic3r/PrintConfig.cpp:2560 src/libslic3r/PrintConfig.cpp:2670 +#: src/libslic3r/PrintConfig.cpp:2678 src/libslic3r/PrintConfig.cpp:2686 +#: src/libslic3r/PrintConfig.cpp:2693 src/libslic3r/PrintConfig.cpp:2701 +#: src/libslic3r/PrintConfig.cpp:2709 msgid "s" msgstr "s" -#: src/slic3r/GUI/MainFrame.cpp:481 src/slic3r/GUI/MainFrame.cpp:750 +#: src/slic3r/GUI/MainFrame.cpp:1072 src/slic3r/GUI/MainFrame.cpp:1449 msgid "S&end G-code" msgstr "Invia G-cod&e" -#: src/slic3r/GUI/MainFrame.cpp:750 +#: src/slic3r/GUI/MainFrame.cpp:1449 msgid "S&end to print" msgstr "Manda in stampa" -#. TRN Preset -#: src/slic3r/GUI/Tab.cpp:3417 -#, possible-c-format +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:642 +msgid "Save" +msgstr "Salva" + +#: src/slic3r/GUI/SavePresetDialog.cpp:72 +#, c-format msgid "Save %s as:" msgstr "Salva %s come:" -#: src/slic3r/GUI/MainFrame.cpp:826 -#, possible-c-format +#: src/slic3r/GUI/MainFrame.cpp:1527 +#, c-format msgid "Save %s file as:" msgstr "Salva file %s come:" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1046 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:912 msgid "Save changes?" msgstr "Salvare modifiche?" -#: src/libslic3r/PrintConfig.cpp:3386 +#: src/libslic3r/PrintConfig.cpp:3585 msgid "Save config file" msgstr "Salva file config" -#: src/slic3r/GUI/MainFrame.cpp:925 +#: src/slic3r/GUI/MainFrame.cpp:1626 msgid "Save configuration as:" msgstr "Salva configurazione come:" -#: src/libslic3r/PrintConfig.cpp:3387 +#: src/libslic3r/PrintConfig.cpp:3586 msgid "Save configuration to the specified file." msgstr "Salva configurazione nel file specificato." #. TRN "Save current Settings" -#: src/slic3r/GUI/Tab.cpp:133 -#, possible-c-format +#: src/slic3r/GUI/Tab.cpp:203 +#, c-format msgid "Save current %s" msgstr "Salva le %s attuali" -#: src/slic3r/GUI/MainFrame.cpp:446 +#: src/slic3r/GUI/MainFrame.cpp:1028 msgid "Save current project file" msgstr "Salva progetto corrente" -#: src/slic3r/GUI/MainFrame.cpp:450 src/slic3r/GUI/MainFrame.cpp:452 +#: src/slic3r/GUI/MainFrame.cpp:1032 src/slic3r/GUI/MainFrame.cpp:1034 msgid "Save current project file as" msgstr "Salvare il file del progetto corrente come" -#: src/slic3r/GUI/Plater.cpp:2604 +#: src/slic3r/GUI/Plater.cpp:2566 msgid "Save file as:" msgstr "Salva come:" -#: src/slic3r/GUI/Plater.cpp:4839 +#: src/slic3r/GUI/Plater.cpp:4975 msgid "Save G-code file as:" msgstr "Salva il file G-code come:" -#: src/slic3r/GUI/MainFrame.cpp:899 +#: src/slic3r/GUI/MainFrame.cpp:1600 msgid "Save OBJ file (less prone to coordinate errors than STL) as:" msgstr "Salva il file OBJ (meno soggetto a errori di coordinate dell'STL) come:" -#: src/slic3r/GUI/Tab.hpp:443 +#: src/slic3r/GUI/SavePresetDialog.cpp:190 +#: src/slic3r/GUI/SavePresetDialog.cpp:196 msgid "Save preset" msgstr "Salva preset" -#: src/slic3r/GUI/MainFrame.cpp:980 +#: src/slic3r/GUI/MainFrame.cpp:1681 msgid "Save presets bundle as:" msgstr "Salva il gruppo di preset come:" -#: src/slic3r/GUI/MainFrame.cpp:450 src/slic3r/GUI/MainFrame.cpp:452 +#: src/slic3r/GUI/MainFrame.cpp:1032 src/slic3r/GUI/MainFrame.cpp:1034 msgid "Save Project &as" msgstr "Salv&a Progetto come" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:114 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:107 msgid "Save project (3mf)" msgstr "Salva progetto (3mf)" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:115 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:108 msgid "Save project as (3mf)" msgstr "Salva progetto come (3mf)" -#: src/slic3r/GUI/Plater.cpp:4839 +#: src/slic3r/GUI/Plater.cpp:4975 msgid "Save SL1 file as:" msgstr "Salva file SL1 come:" -#: src/slic3r/GUI/MainFrame.cpp:838 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:744 +msgid "Save the selected options to preset \"%1%\"." +msgstr "Salva le opzioni selezionate nel preset \"%1%\"." + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:740 +msgid "Save the selected options." +msgstr "Salvare le opzioni selezionate." + +#: src/slic3r/GUI/MainFrame.cpp:1539 msgid "Save zip file as:" msgstr "Salva file zip come:" @@ -6215,211 +7347,246 @@ msgstr "Salva file zip come:" msgid "Saving mesh into the 3MF container failed." msgstr "Il salvataggio della rete nel contenitore 3MF non è riuscito." -#: src/slic3r/GUI/Gizmos/GLGizmoScale.cpp:47 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:230 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:500 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:518 -#: src/libslic3r/PrintConfig.cpp:3466 +#: src/slic3r/GUI/Gizmos/GLGizmoScale.cpp:78 +#: 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:3665 msgid "Scale" msgstr "Ridimensiona" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:459 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:507 msgid "Scale factors" msgstr "Fattore di scala" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:196 -msgid "Scale selection to fit print volume\nin Gizmo scale" -msgstr "Ridimensiona la selezione per riempire il volume di stampa\nnel Gizmo Ridimensiona" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1724 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1852 msgid "Scale the selected object to fit the print volume" msgstr "Ridimensiona l'oggetto selezionato per entrare nel volume di stampa" -#: src/libslic3r/PrintConfig.cpp:3475 +#: src/libslic3r/PrintConfig.cpp:3674 msgid "Scale to Fit" msgstr "Ridimensiona per riempire" -#: src/slic3r/GUI/Selection.cpp:939 +#: src/slic3r/GUI/Selection.cpp:988 msgid "Scale To Fit" msgstr "Ridimensiona per adattare" -#: src/libslic3r/PrintConfig.cpp:3476 +#: src/libslic3r/PrintConfig.cpp:3675 msgid "Scale to fit the given volume." msgstr "Ridimensiona per adattare al volume dato." -#: src/slic3r/GUI/GUI_ObjectList.cpp:1724 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1852 msgid "Scale to print volume" msgstr "Ridimensiona a volume di stampa" -#: src/libslic3r/PrintConfig.cpp:3467 +#: src/libslic3r/PrintConfig.cpp:3666 msgid "Scaling factor or percentage." msgstr "Fattore di scala o percentuale." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:505 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:545 msgid "Scheduling upload to `%1%`. See Window -> Print Host Upload Queue" msgstr "Programmazione del caricamento su `%1%`. Vedere finestra -> Coda di caricamento Host di Stampa" -#: src/libslic3r/PrintConfig.cpp:1621 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:46 +msgid "Seam painting" +msgstr "Pittura giunzione" + +#: src/libslic3r/PrintConfig.cpp:1729 msgid "Seam position" msgstr "Posizione giunzioni" -#: src/libslic3r/PrintConfig.cpp:1642 +#: src/libslic3r/PrintConfig.cpp:1750 msgid "Seam preferred direction" msgstr "Direzione preferita giunzione" -#: src/libslic3r/PrintConfig.cpp:1651 +#: src/libslic3r/PrintConfig.cpp:1759 msgid "Seam preferred direction jitter" msgstr "Direzione preferita giunzione jitter" +#: src/slic3r/GUI/MainFrame.cpp:1207 +msgid "Searc&h" +msgstr "Cerca" + +#: src/slic3r/GUI/GLCanvas3D.cpp:4402 src/slic3r/GUI/GLCanvas3D.cpp:4957 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:130 src/slic3r/GUI/Search.cpp:426 +msgid "Search" +msgstr "Cerca" + +#: src/slic3r/GUI/ImGuiWrapper.cpp:803 src/slic3r/GUI/Search.cpp:460 +msgid "Search in English" +msgstr "Cerca in inglese" + +#: src/slic3r/GUI/MainFrame.cpp:1216 +msgid "Search in settings" +msgstr "Cerca nelle impostazioni" + +#: src/slic3r/GUI/Tab.cpp:222 +msgid "Search in settings [%1%]" +msgstr "Cerca nelle impostazioni [%1%]" + #: src/slic3r/GUI/BonjourDialog.cpp:218 msgid "Searching for devices" msgstr "Ricerca dispositivi" -#: src/slic3r/GUI/Plater.cpp:2858 +#: src/slic3r/GUI/Jobs/RotoptimizeJob.cpp:41 msgid "Searching for optimal orientation" msgstr "Ricerca orientamento ottimale" -#: src/slic3r/GUI/GUI_App.cpp:1103 +#: src/slic3r/GUI/NotificationManager.hpp:321 +msgid "See more." +msgstr "Vedi altro." + +#: src/slic3r/GUI/NotificationManager.hpp:322 +msgid "See Releases page." +msgstr "Vedi la pagina dei rilasci." + +#: src/slic3r/GUI/GUI_App.cpp:1895 msgid "Select a gcode file:" msgstr "Seleziona un file gcode:" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:126 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:121 msgid "Select all objects" msgstr "Seleziona tutti gli oggetti" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1370 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1217 msgid "Select all points" msgstr "Seleziona tutti i punti" -#: src/slic3r/GUI/ConfigWizard.cpp:1976 +#: src/slic3r/GUI/ConfigWizard.cpp:2487 msgid "Select all standard printers" msgstr "Seleziona tutte le stampanti standard" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1368 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1215 msgid "Select by rectangle" msgstr "Seleziona con rettangolo" -#: src/slic3r/GUI/MainFrame.cpp:944 src/slic3r/GUI/MainFrame.cpp:1006 +#: src/slic3r/GUI/MainFrame.cpp:1645 src/slic3r/GUI/MainFrame.cpp:1707 msgid "Select configuration to load:" msgstr "Seleziona configurazione da caricare:" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:82 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:88 msgid "Select coordinate space, in which the transformation will be performed." msgstr "Seleziona le coordinate spaziali in cui verrà eseguita la trasformazione." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3971 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4458 msgid "Select extruder number:" msgstr "Seleziona l'estrusore numero:" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:138 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:134 msgid "Select Filament Settings Tab" msgstr "Attiva Scheda impostazioni di Filamento" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:136 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:132 msgid "Select Plater Tab" msgstr "Seleziona scheda piano" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:137 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:133 msgid "Select Print Settings Tab" msgstr "Attiva Scheda Impostazioni di Stampa" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:139 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:135 msgid "Select Printer Settings Tab" msgstr "Attiva Scheda Impostazioni Stampante" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1265 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1396 msgid "Select showing settings" msgstr "Seleziona le impostazioni mostrate" -#: src/slic3r/GUI/GUI_App.cpp:629 +#: src/slic3r/GUI/GUI_App.cpp:1295 msgid "Select the language" msgstr "Seleziona la lingua" -#: src/slic3r/GUI/Tab.cpp:57 +#: src/slic3r/GUI/Tab.cpp:108 msgid "Select the print profiles this profile is compatible with." msgstr "Seleziona i profili di stampa compatibili con questo profilo." -#: src/slic3r/GUI/Tab.cpp:51 +#: src/slic3r/GUI/Tab.cpp:102 msgid "Select the printers this profile is compatible with." msgstr "Seleziona le stampanti compatibili con questo profilo." -#: src/slic3r/GUI/MainFrame.cpp:889 +#: src/slic3r/GUI/MainFrame.cpp:1590 msgid "Select the STL file to repair:" msgstr "Seleziona il file STL da riparare:" -#: src/slic3r/GUI/Preferences.cpp:237 +#: src/slic3r/GUI/Preferences.cpp:391 msgid "Select toolbar icon size in respect to the default one." msgstr "Seleziona la dimensione delle icone della barra degli strumenti rispetto a quella predefinita." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3553 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4016 msgid "Select type of part" msgstr "Seleziona il tipo di parte" -#: src/slic3r/GUI/Plater.cpp:638 +#: src/slic3r/GUI/Plater.cpp:504 msgid "Select what kind of pad do you need" msgstr "Seleziona il tipo di Pad richiesto" -#: src/slic3r/GUI/Plater.cpp:498 +#: src/slic3r/GUI/Plater.cpp:364 msgid "Select what kind of support do you need" msgstr "Seleziona il tipo di supporto richiesto" -#: src/slic3r/GUI/DoubleSlider.cpp:1917 -msgid "Select YES if you want to delete all saved tool changes, \nNO if you want all tool changes switch to color changes, \nor CANCEL to leave it unchanged." -msgstr "Seleziona SI se vuoi cancellare tutti i cambi attrezzo salvati,\nNO se vuoi che tutti i cambi attrezzo passino a cambi colore,\no ANNULLA per lasciarlo invariato." +#: src/slic3r/GUI/DoubleSlider.cpp:2135 +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 "" +"Seleziona SI se vuoi cancellare tutti i cambi attrezzo salvati,\n" +"NO se vuoi che tutti i cambi attrezzo passino a cambi colore,\n" +"o ANNULLA per lasciarlo invariato." -#: src/slic3r/GUI/Selection.cpp:146 +#: src/slic3r/GUI/Selection.cpp:191 msgid "Selection-Add" msgstr "Selezione-Aggiungi" -#: src/slic3r/GUI/Selection.cpp:376 +#: src/slic3r/GUI/Selection.cpp:421 msgid "Selection-Add All" msgstr "Selezione-Aggiungi tutti" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3299 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3762 msgid "Selection-Add from list" msgstr "Aggiungi selezione da elenco" -#: src/slic3r/GUI/GLCanvas3D.cpp:6598 +#: src/slic3r/GUI/GLCanvas3D.cpp:7193 msgid "Selection-Add from rectangle" msgstr "Aggiungi Selezione da rettangolo" -#: src/slic3r/GUI/Selection.cpp:256 +#: src/slic3r/GUI/Selection.cpp:301 msgid "Selection-Add Instance" msgstr "Selezione-Aggiungi istanza" -#: src/slic3r/GUI/Selection.cpp:219 +#: src/slic3r/GUI/Selection.cpp:264 msgid "Selection-Add Object" msgstr "Selezione-Aggiungi Oggetto" -#: src/slic3r/GUI/Selection.cpp:187 +#: src/slic3r/GUI/Selection.cpp:232 msgid "Selection-Remove" msgstr "Selezione-Rimuovi" -#: src/slic3r/GUI/Selection.cpp:402 +#: src/slic3r/GUI/Selection.cpp:447 msgid "Selection-Remove All" msgstr "Selezione-Rimuovi tutti" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3291 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3754 msgid "Selection-Remove from list" msgstr "Rimozione Selezione dall'elenco" -#: src/slic3r/GUI/GLCanvas3D.cpp:6617 +#: src/slic3r/GUI/GLCanvas3D.cpp:7212 msgid "Selection-Remove from rectangle" msgstr "Rimuovi selezione da rettangolo" -#: src/slic3r/GUI/Selection.cpp:275 +#: src/slic3r/GUI/Selection.cpp:320 msgid "Selection-Remove Instance" msgstr "Selezione-Rimuovi istanza" -#: src/slic3r/GUI/Selection.cpp:238 +#: src/slic3r/GUI/Selection.cpp:283 msgid "Selection-Remove Object" msgstr "Selezione-Rimuovi oggetto" -#: src/slic3r/GUI/MainFrame.cpp:566 +#: src/slic3r/GUI/MainFrame.cpp:1172 msgid "Selects all objects" msgstr "Seleziona tutti gli oggetti" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:123 src/slic3r/GUI/Plater.cpp:5522 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:116 src/slic3r/GUI/Plater.cpp:5707 msgid "Send G-code" msgstr "Invia G-code" @@ -6427,29 +7594,29 @@ msgstr "Invia G-code" msgid "Send G-Code to printer host" msgstr "Invia G-code all’host stampante" -#: src/slic3r/GUI/MainFrame.cpp:481 +#: src/slic3r/GUI/MainFrame.cpp:1072 msgid "Send to print current plate as G-code" msgstr "Manda alla stampante il piano corrente come G-Code" -#: src/slic3r/GUI/Plater.cpp:878 src/slic3r/GUI/Plater.cpp:5522 +#: src/slic3r/GUI/Plater.cpp:753 src/slic3r/GUI/Plater.cpp:5707 msgid "Send to printer" msgstr "Manda alla stampante" -#: src/slic3r/GUI/GLCanvas3D.cpp:1305 +#: src/slic3r/GUI/GLCanvas3D.cpp:1312 msgid "Seq." msgstr "Seq." -#: src/slic3r/GUI/Tab.cpp:1231 +#: src/slic3r/GUI/Tab.cpp:1561 msgid "Sequential printing" msgstr "Stampa sequenziale" -#: src/slic3r/GUI/Tab.cpp:1901 src/libslic3r/PrintConfig.cpp:1661 -msgid "Serial port" -msgstr "Porta seriale" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:235 +msgid "Sequential Slider" +msgstr "Slider Sequenziale" -#: src/libslic3r/PrintConfig.cpp:1669 -msgid "Serial port speed" -msgstr "Velocità porta seriale" +#: src/slic3r/GUI/Preferences.cpp:230 +msgid "Sequential slider applied only to top layer" +msgstr "Cursore sequenziale applicato solo sullo strato superiore" #: src/slic3r/GUI/FirmwareDialog.cpp:807 msgid "Serial port:" @@ -6459,17 +7626,16 @@ msgstr "Porta seriale:" msgid "Service name" msgstr "Nome servizio" -#: src/slic3r/GUI/Tab.cpp:1802 src/slic3r/GUI/Tab.cpp:2046 -#: src/slic3r/GUI/Tab.cpp:3176 +#: src/slic3r/GUI/Tab.cpp:3509 src/slic3r/GUI/Tab.cpp:3588 msgid "Set" msgstr "Imposta" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1599 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1611 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1728 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1740 msgid "Set as a Separated Object" msgstr "Imposta come Oggetto Separato" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1611 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1740 msgid "Set as a Separated Objects" msgstr "Imposta come Oggetti Separati" @@ -6477,7 +7643,7 @@ msgstr "Imposta come Oggetti Separati" msgid "Set extruder change for every" msgstr "Imposta il cambio estrusore per ogni" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1671 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1800 msgid "Set extruder for selected items" msgstr "Imposta estrusore per gli elementi selezionati" @@ -6485,7 +7651,7 @@ msgstr "Imposta estrusore per gli elementi selezionati" msgid "Set extruder sequence" msgstr "Imposta sequenza estrusore" -#: src/slic3r/GUI/DoubleSlider.cpp:1532 +#: src/slic3r/GUI/DoubleSlider.cpp:1728 msgid "Set extruder sequence for the entire print" msgstr "Imposta sequenza estrusore per l'intera stampa" @@ -6493,84 +7659,84 @@ msgstr "Imposta sequenza estrusore per l'intera stampa" msgid "Set extruder(tool) sequence" msgstr "Imposta sequenza estrusore(attrezzo)" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:217 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:218 msgid "Set lower thumb to current slider thumb" msgstr "Imposta il cursore inferiore alla barra di scorrimento attuale" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:297 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:305 msgid "Set Mirror" msgstr "Imposta specchio" -#: src/slic3r/GUI/Plater.cpp:3944 +#: src/slic3r/GUI/Plater.cpp:3862 msgid "Set number of instances" msgstr "Imposta numero di istanze" -#: src/slic3r/GUI/Plater.cpp:4756 -#, possible-c-format +#: src/slic3r/GUI/Plater.cpp:4860 +#, c-format msgid "Set numbers of copies to %d" msgstr "Imposta il numero di copie a %d" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:781 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:828 msgid "Set Orientation" msgstr "Imposta orientamento" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:750 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:797 msgid "Set Position" msgstr "Imposta posizione" -#: src/slic3r/GUI/GUI_ObjectList.cpp:4094 src/slic3r/GUI/Selection.cpp:1474 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4581 src/slic3r/GUI/Selection.cpp:1513 msgid "Set Printable" msgstr "Imposta stampabile" -#: src/slic3r/GUI/Selection.cpp:1475 +#: src/slic3r/GUI/Selection.cpp:1515 msgid "Set Printable Instance" msgstr "Imposta Istanza Stampabile" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:846 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:893 msgid "Set Scale" msgstr "Imposta scala" -#: src/libslic3r/PrintConfig.cpp:2393 +#: src/libslic3r/PrintConfig.cpp:2536 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 "Imposta l'orientamento effettivo del display LCD nella stampante SLA. La modalità Ritratto invertirà i valori di altezza e larghezza del display, e le immagini di output saranno ruotate di 90 gradi." -#: src/slic3r/GUI/ConfigWizard.cpp:932 +#: src/slic3r/GUI/ConfigWizard.cpp:1298 msgid "Set the shape of your printer's bed." msgstr "Imposta la dimensione del piano della stampante." -#: src/libslic3r/PrintConfig.cpp:556 +#: 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 "Imposta questo valore diverso da zero per permettere la larghezza estrusione manuale. Se lasciato a zero, Slic3r ricava la larghezza d'estrusione dal diametro dell'ugello (vedi il suggerimento per la larghezza di estrusione perimetro,larghezza estrusione riempimento ecc.). Se espresso in percentuale (ad esempio 230%), sarà calcolato sull'altezza del layer." -#: src/libslic3r/PrintConfig.cpp:448 +#: 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." msgstr "Imposta questo valore diverso da zero per impostare una larghezza d'estrusione manuale per i perimetri esterni. Se lasciato a zero, verrà utilizzata la larghezza predefinita se impostata; diversamente verrà utilizzato il valore 1.125 x il diametro dell'ugello. Se espresso in percentuale (per esempio 200%), sarà calcolato sull'altezza del layer." -#: src/libslic3r/PrintConfig.cpp:878 +#: 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 "Imposta questo valore diverso da zero per impostare la larghezza di estrusione manuale per il primo layer. Puoi usarlo per forzare un'estrusione più grossa per avere un'adesione migliore. Se espresso in percentuale (per esempio 120%) sarà calcolato sull'altezza del primo layer. Se impostato a zero, sarà utilizzata la larghezza di estrusione predefinita." -#: src/libslic3r/PrintConfig.cpp:1758 +#: 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." msgstr "Imposta questo valore diverso da zero per impostare una larghezza d'estrusione manuale per il riempimento delle superfici solide. Se lasciato a zero, verrà usata la larghezza d'estrusione predefinita, altrimenti verrà utilizzato il valore 1.125 x il diametro dell'ugello. Se espresso in percentuale (per esempio 90%) verrà calcolato sull'altezza del layer." -#: src/libslic3r/PrintConfig.cpp:2107 +#: src/libslic3r/PrintConfig.cpp:2250 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 regions and get a smoother finish. If left zero, default extrusion width will be used if set, otherwise nozzle diameter will be used. If expressed as percentage (for example 90%) it will be computed over layer height." msgstr "Imposta questo valore diverso da zero per impostare una larghezza d'estrusione manuale per il riempimento delle superfici superiori. Dovresti scegliere un'estrusione più sottile per riempire gli spazi stretti ed ottenere una finitura più liscia. Se lasciato a zero, verrà usata la larghezza d'estrusione predefinita, altrimenti verrà utilizzato il valore 1.125 x il diametro dell'ugello. Se espresso in percentuale (per esempio 90%) verrà calcolato sull'altezza del layer." -#: src/libslic3r/PrintConfig.cpp:1011 +#: 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 "Imposta questo valore diverso da zero per impostare una larghezza d'estrusione manuale per il riempimento. Se lasciato a zero, verrà usata la larghezza d'estrusione predefinita, altrimenti verrà utilizzato il valore 1.125 x il diametro dell'ugello. Dovresti usare un estrusione più grossa per velocizzare la stampa del riempimento e rendere le tue parti più robuste. Se espresso in percentuale (per esempio 90%) verrà calcolato sull'altezza del layer." -#: src/libslic3r/PrintConfig.cpp:1419 +#: 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." msgstr "Imposta questo valore diverso da zero per impostare una larghezza d'estrusione manuale per i perimetri. Dovresti scegliere un'estrusione più sottile per ottenere superfici più precise. Se lasciato a zero, verrà usata la larghezza d'estrusione predefinita, altrimenti verrà utilizzato il valore 1.125 x il diametro dell'ugello. Se espresso in percentuale (per esempio 200%) verrà calcolato sull'altezza del layer." -#: src/libslic3r/PrintConfig.cpp:1948 +#: src/libslic3r/PrintConfig.cpp:2090 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, otherwise nozzle diameter will be used. If expressed as percentage (for example 90%) it will be computed over layer height." msgstr "Imposta questo valore diverso da zero per impostare una larghezza d'estrusione manuale per il supporto. Se lasciato a zero, verrà usata la larghezza d'estrusione predefinita., altrimenti verrà utilizzato il valore del diametro dell'ugello. Se espresso in percentuale (per esempio 90%) verrà calcolato sull'altezza del layer." -#: src/libslic3r/PrintConfig.cpp:512 +#: src/libslic3r/PrintConfig.cpp:548 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 "Imposta il raggio di spazio attorno all'estrusore. Se l'estrusore non è centrato, scegli il valore più grande per sicurezza. Questa impostazione è usata per controllare le collisioni e per mostrare l'anteprima grafica nel piano." @@ -6578,83 +7744,98 @@ msgstr "Imposta il raggio di spazio attorno all'estrusore. Se l'estrusore non è msgid "Set this to the maximum height that can be reached by your extruder while printing." msgstr "Impostate alla massima altezza che può essere raggiunta dal vostro estrusore durante la stampa." -#: src/libslic3r/PrintConfig.cpp:501 +#: src/libslic3r/PrintConfig.cpp:537 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 cylinder around your extruder, and it represents the maximum depth the extruder can peek before colliding with other printed objects." msgstr "Imposta la distanza verticale tra la punta dell'ugello e (solitamente) le barre del carrello X. In altre parole, questa è l'altezza dello spazio cilindrico attorno l'estrusore, e indica la profondità massima che l'estrusore può affacciarsi prima di sbattere con altri oggetti stampati." -#: src/slic3r/GUI/GUI_ObjectList.cpp:4094 src/slic3r/GUI/Selection.cpp:1474 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4581 src/slic3r/GUI/Selection.cpp:1513 msgid "Set Unprintable" msgstr "Imposta non stampabile" -#: src/slic3r/GUI/Selection.cpp:1475 +#: src/slic3r/GUI/Selection.cpp:1515 msgid "Set Unprintable Instance" msgstr "Imposta Istanza non stampabile" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:217 msgid "Set upper thumb to current slider thumb" msgstr "Imposta il cursore superiore alla barra di scorrimento attuale" -#: src/libslic3r/PrintConfig.cpp:3509 -msgid "Sets logging sensitivity. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:trace\nFor example. loglevel=2 logs fatal, error and warning level messages." -msgstr "Imposta la sensibilità di log. 0:fatale, 1:errore, 2:avviso, 3:informazioni, 4:debug, 5:traccia\nPer esempio. loglevel=2 registra messaggi fatali, di errore e di avviso." +#: src/libslic3r/PrintConfig.cpp:3714 +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 "" +"Imposta la sensibilità di log. 0:fatale, 1:errore, 2:avviso, 3:informazioni, 4:debug, 5:traccia\n" +"Per esempio. loglevel=2 registra messaggi fatali, di errore e di avviso." -#: src/slic3r/GUI/BedShapeDialog.cpp:155 +#: src/slic3r/GUI/BedShapeDialog.cpp:292 src/slic3r/GUI/MainFrame.cpp:1969 msgid "Settings" msgstr "Impostazioni" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2507 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2899 msgid "Settings for height range" msgstr "Impostazioni per intervallo altezza" -#: src/slic3r/GUI/ConfigManipulation.cpp:162 +#: src/slic3r/GUI/Preferences.cpp:431 +msgid "Settings in non-modal window" +msgstr "Impostazioni nella finestra non modale" + +#: src/slic3r/GUI/ConfigManipulation.cpp:161 msgid "Shall I adjust those settings for supports?" msgstr "Vuoi che regoli queste impostazioni per i supporti?" -#: src/slic3r/GUI/ConfigManipulation.cpp:89 +#: src/slic3r/GUI/ConfigManipulation.cpp:88 msgid "Shall I adjust those settings in order to enable Spiral Vase?" msgstr "Vuoi che modifichi queste impostazioni per poter attivare il Vaso a Spirale?" -#: src/slic3r/GUI/ConfigManipulation.cpp:119 +#: src/slic3r/GUI/ConfigManipulation.cpp:118 msgid "Shall I adjust those settings in order to enable the Wipe Tower?" msgstr "Vuoi che modifichi queste impostazioni per poter attivare la Torre di Spurgo?" -#: src/slic3r/GUI/ConfigManipulation.cpp:210 +#: src/slic3r/GUI/ConfigManipulation.cpp:209 msgid "Shall I switch to rectilinear fill pattern?" msgstr "Devo passare alla trama di riempimento rettilinea?" -#: src/slic3r/GUI/ConfigManipulation.cpp:139 +#: src/slic3r/GUI/ConfigManipulation.cpp:138 msgid "Shall I synchronize support layers in order to enable the Wipe Tower?" msgstr "Devo sincronizzare i supporti layer in modo da poter attivare la Torre di Spurgo?" -#: src/slic3r/GUI/BedShapeDialog.cpp:66 src/slic3r/GUI/GUI_ObjectList.cpp:2059 +#: src/slic3r/GUI/BedShapeDialog.cpp:156 src/slic3r/GUI/BedShapeDialog.cpp:222 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2215 msgid "Shape" msgstr "Forma" -#: src/slic3r/GUI/GUI_Preview.cpp:256 +#: src/slic3r/GUI/GUI_Preview.cpp:338 src/slic3r/GUI/GUI_Preview.cpp:1478 msgid "Shells" msgstr "Gusci" -#: src/slic3r/GUI/GLCanvas3D.cpp:249 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:50 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:33 +msgid "Shift + Left mouse button" +msgstr "Shift + Tasto sinistro mouse" + +#: src/slic3r/GUI/GLCanvas3D.cpp:241 msgid "Shift + Left mouse button:" msgstr "Shift + Tasto sinistro mouse:" -#: src/slic3r/GUI/GLCanvas3D.cpp:255 +#: src/slic3r/GUI/GLCanvas3D.cpp:245 msgid "Shift + Right mouse button:" msgstr "Shift + Tasto destro mouse:" -#: src/slic3r/GUI/GUI_Preview.cpp:231 +#: src/slic3r/GUI/GUI_Preview.cpp:286 src/slic3r/GUI/GUI_Preview.cpp:288 msgid "Show" msgstr "Mostra" -#: src/slic3r/GUI/MainFrame.cpp:701 +#: src/slic3r/GUI/MainFrame.cpp:926 src/slic3r/GUI/MainFrame.cpp:1325 msgid "Show &Configuration Folder" msgstr "Mostra Cartella &Configurazione" -#: src/slic3r/GUI/MainFrame.cpp:676 +#: src/slic3r/GUI/MainFrame.cpp:1294 msgid "Show &labels" msgstr "Mostra &etichette" -#: src/slic3r/GUI/MainFrame.cpp:705 +#: src/slic3r/GUI/MainFrame.cpp:933 src/slic3r/GUI/MainFrame.cpp:937 +#: src/slic3r/GUI/MainFrame.cpp:1329 msgid "Show about dialog" msgstr "Mostra la finestra di informazioni" @@ -6662,543 +7843,593 @@ msgstr "Mostra la finestra di informazioni" msgid "Show advanced settings" msgstr "Mostra impostazioni avanzate" -#: src/slic3r/GUI/PrintHostDialogs.cpp:159 +#: src/slic3r/GUI/PrintHostDialogs.cpp:157 msgid "Show error message" msgstr "Mostra messaggio d'errore" -#: src/slic3r/GUI/Preferences.cpp:95 +#: src/slic3r/GUI/Preferences.cpp:112 msgid "Show incompatible print and filament presets" msgstr "Mostra preset di stampa e di filamento incompatibili" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:151 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:145 msgid "Show keyboard shortcuts list" msgstr "Mostra elenco scorciatoie di tastiera" -#: src/slic3r/GUI/MainFrame.cpp:676 +#: src/slic3r/GUI/GCodeViewer.cpp:2591 +msgid "Show normal mode" +msgstr "Mostra modalità normale" + +#: src/slic3r/GUI/MainFrame.cpp:1294 msgid "Show object/instance labels in 3D scene" msgstr "Mostra nella scena 3D le etichette dell'oggetto/istanza" +#: src/slic3r/GUI/Preferences.cpp:213 +msgid "Show sidebar collapse/expand button" +msgstr "Mostra il pulsante di riduci/espandi barra laterale" + #: src/slic3r/GUI/WipeTowerDialog.cpp:377 msgid "Show simplified settings" msgstr "Mostra impostazioni semplificate" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:52 +#: src/slic3r/GUI/Preferences.cpp:169 src/slic3r/GUI/Preferences.cpp:171 +msgid "Show splash screen" +msgstr "Mostra splash screen" + +#: src/slic3r/GUI/GCodeViewer.cpp:2586 +msgid "Show stealth mode" +msgstr "Mostra modalità silenziosa" + +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:51 msgid "Show supports" msgstr "Mostra supporti" -#: src/slic3r/GUI/MainFrame.cpp:699 +#: src/slic3r/GUI/MainFrame.cpp:924 src/slic3r/GUI/MainFrame.cpp:1323 msgid "Show system information" msgstr "Mostra informazioni di sistema" -#: src/slic3r/GUI/MainFrame.cpp:626 +#: src/slic3r/GUI/MainFrame.cpp:1234 msgid "Show the 3D editing view" msgstr "Mostra la Vista modifica 3D" -#: src/slic3r/GUI/MainFrame.cpp:629 +#: src/slic3r/GUI/MainFrame.cpp:1237 msgid "Show the 3D slices preview" msgstr "Mostra anteprima slice 3D" -#: src/slic3r/GUI/MainFrame.cpp:617 +#: src/slic3r/GUI/MainFrame.cpp:1224 msgid "Show the filament settings" msgstr "Mostra impostazioni filamento" -#: src/libslic3r/PrintConfig.cpp:3372 +#: src/libslic3r/PrintConfig.cpp:3571 msgid "Show the full list of print/G-code configuration options." msgstr "Mostra l'elenco completo delle opzioni di configurazione stampa/G-code." -#: src/libslic3r/PrintConfig.cpp:3377 +#: src/libslic3r/PrintConfig.cpp:3576 msgid "Show the full list of SLA print configuration options." msgstr "Mostra la lista completa delle opzioni di configurazione di stampa SLA." -#: src/slic3r/GUI/MainFrame.cpp:708 +#: src/slic3r/GUI/MainFrame.cpp:941 src/slic3r/GUI/MainFrame.cpp:1332 msgid "Show the list of the keyboard shortcuts" msgstr "Mostra l'elenco delle scorciatoie di tastiera" -#: src/slic3r/GUI/MainFrame.cpp:606 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "Show the plater" msgstr "Mostra il piano" -#: src/slic3r/GUI/MainFrame.cpp:614 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "Show the print settings" msgstr "Mostra impostazioni di stampa" -#: src/slic3r/GUI/MainFrame.cpp:621 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Show the printer settings" msgstr "Mostra impostazioni della stampante" -#: src/libslic3r/PrintConfig.cpp:3366 +#: src/libslic3r/PrintConfig.cpp:3565 msgid "Show this help." msgstr "Mostra questo aiuto." -#: src/slic3r/GUI/MainFrame.cpp:701 +#: src/slic3r/GUI/MainFrame.cpp:926 src/slic3r/GUI/MainFrame.cpp:1325 msgid "Show user configuration folder (datadir)" msgstr "Mostra cartella configurazione utente (datadir)" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:185 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:182 msgid "Show/Hide 3Dconnexion devices settings dialog" msgstr "Mostra/Nascondi finestra delle impostazioni dei dispositivi 3Dconnexion" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:208 -msgid "Show/Hide Legend" -msgstr "Mostra/Nascondi Legenda" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 +msgid "Show/Hide Legend & Estimated printing time" +msgstr "Mostra/Nascondi Legenda & Stima del tempo di stampa" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:146 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:141 msgid "Show/Hide object/instance labels" msgstr "Mostra/Nascondi etichette dell'oggetto/istanza" -#: src/slic3r/GUI/GUI_App.cpp:813 src/slic3r/GUI/wxExtensions.cpp:753 +#: src/slic3r/GUI/GUI_App.cpp:1504 src/slic3r/GUI/wxExtensions.cpp:673 msgid "Simple" msgstr "Semplice" -#: src/slic3r/GUI/ConfigWizard.cpp:820 +#: src/slic3r/GUI/ConfigWizard.cpp:1179 msgid "Simple mode" msgstr "Modalità Semplice" -#: src/slic3r/GUI/GUI_App.cpp:813 +#: src/slic3r/GUI/GUI_App.cpp:1504 msgid "Simple View Mode" msgstr "Modalità di visualizzazione semplice" -#: src/slic3r/GUI/Tab.cpp:2298 src/slic3r/GUI/Tab.cpp:2306 +#: src/slic3r/GUI/Tab.cpp:2467 src/slic3r/GUI/Tab.cpp:2475 msgid "Single extruder MM setup" msgstr "Setup Estrusore singolo MM" -#: src/libslic3r/PrintConfig.cpp:1845 +#: src/libslic3r/PrintConfig.cpp:1987 msgid "Single Extruder Multi Material" msgstr "Estrusore singolo Multi Material" -#: src/slic3r/GUI/Tab.cpp:1867 -msgid "Single Extruder Multi Material is selected, \nand all extruders must have the same diameter.\nDo you want to change the diameter for all extruders to first extruder nozzle diameter value?" -msgstr "Materiale multiplo a singolo estrusore selezionato,\ntutti gli estrusori devono avere lo stesso diametro.\nVuoi modificare il diametro di tutti gli estrusori al valore del diametro dell'ugello del primo estrusore?" +#: src/slic3r/GUI/Tab.cpp:2101 +msgid "" +"Single Extruder Multi Material is selected, \n" +"and all extruders must have the same diameter.\n" +"Do you want to change the diameter for all extruders to first extruder nozzle diameter value?" +msgstr "" +"Materiale multiplo a singolo estrusore selezionato,\n" +"tutti gli estrusori devono avere lo stesso diametro.\n" +"Vuoi modificare il diametro di tutti gli estrusori al valore del diametro dell'ugello del primo estrusore?" -#: src/slic3r/GUI/Tab.cpp:2307 +#: src/slic3r/GUI/Tab.cpp:2476 msgid "Single extruder multimaterial parameters" msgstr "Parametri estrusore singolo materiale multiplo" -#: src/slic3r/GUI/BedShapeDialog.cpp:77 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:232 src/slic3r/GUI/Plater.cpp:160 -#: src/slic3r/GUI/Tab.cpp:2324 +#: src/slic3r/GUI/Preferences.cpp:120 src/libslic3r/PrintConfig.cpp:3689 +msgid "Single instance mode" +msgstr "Modalità a istanza singola" + +#: src/slic3r/GUI/BedShapeDialog.cpp:93 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:240 src/slic3r/GUI/Plater.cpp:166 +#: src/slic3r/GUI/Tab.cpp:2493 msgid "Size" msgstr "Dimensioni" -#: src/slic3r/GUI/Tab.cpp:1797 src/slic3r/GUI/Tab.cpp:2041 +#: src/slic3r/GUI/Tab.cpp:2059 src/slic3r/GUI/Tab.cpp:2241 msgid "Size and coordinates" msgstr "Dimensione e coordinate" -#: src/slic3r/GUI/BedShapeDialog.cpp:78 +#: src/slic3r/GUI/BedShapeDialog.cpp:110 msgid "Size in X and Y of the rectangular plate." msgstr "Dimensioni X e Y del piano rettangolare." -#: src/slic3r/GUI/GUI_Preview.cpp:245 src/slic3r/GUI/Tab.cpp:1111 -#: src/libslic3r/ExtrusionEntity.cpp:318 +#: src/slic3r/GUI/GUI_Preview.cpp:310 src/slic3r/GUI/Tab.cpp:1439 +#: src/libslic3r/ExtrusionEntity.cpp:323 src/libslic3r/ExtrusionEntity.cpp:354 msgid "Skirt" msgstr "Skirt" -#: src/slic3r/GUI/Tab.cpp:1110 +#: src/slic3r/GUI/Tab.cpp:1438 msgid "Skirt and brim" msgstr "Skirt e brim" -#: src/libslic3r/PrintConfig.cpp:1687 +#: src/libslic3r/PrintConfig.cpp:1795 msgid "Skirt height" msgstr "Altezza skirt" -#: src/libslic3r/PrintConfig.cpp:1696 +#: src/libslic3r/PrintConfig.cpp:1811 msgid "Skirt Loops" msgstr "Giri skirt" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1334 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1181 msgid "SLA gizmo keyboard shortcuts" msgstr "Scorciatoie di tastiera gizmo SLA" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1058 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:924 msgid "SLA gizmo turned off" msgstr "Gizmo SLA disattivato" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1017 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:897 msgid "SLA gizmo turned on" msgstr "Gizmo SLA attivato" -#: src/slic3r/GUI/Plater.cpp:818 src/slic3r/GUI/Preset.cpp:1524 +#: src/slic3r/GUI/Plater.cpp:693 src/libslic3r/Preset.cpp:1303 msgid "SLA material" msgstr "Materiale SLA" -#: src/slic3r/GUI/ConfigWizard.cpp:2015 +#: src/slic3r/GUI/ConfigWizard.cpp:2526 msgid "SLA Material Profiles Selection" msgstr "Selezione Profili Materiale SLA" -#: src/libslic3r/PrintConfig.cpp:2470 src/libslic3r/PrintConfig.cpp:2471 +#: src/libslic3r/PrintConfig.cpp:2613 src/libslic3r/PrintConfig.cpp:2614 msgid "SLA material type" msgstr "Tipo materiale SLA" -#: src/slic3r/GUI/ConfigWizard.cpp:1471 src/slic3r/GUI/ConfigWizard.cpp:2015 +#: src/slic3r/GUI/ConfigWizard.cpp:1872 src/slic3r/GUI/ConfigWizard.cpp:2526 msgid "SLA Materials" msgstr "Materiali SLA" -#: src/slic3r/GUI/Preset.cpp:1523 +#: src/libslic3r/Preset.cpp:1302 msgid "SLA print" msgstr "Stampa SLA" -#: src/libslic3r/PrintConfig.cpp:2578 +#: src/libslic3r/PrintConfig.cpp:2721 msgid "SLA print material notes" msgstr "Note sul materiale di stampa SLA" -#: src/slic3r/GUI/Plater.cpp:817 +#: src/slic3r/GUI/Plater.cpp:692 msgid "SLA print settings" msgstr "Impostazioni di stampa SLA" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:996 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:869 msgid "SLA Support Points" msgstr "Punti di Supporto SLA" -#: src/slic3r/GUI/GLCanvas3D.cpp:687 -msgid "SLA supports outside the print area were detected" -msgstr "Sono stati rilevati supporti SLA al di fuori dell'area di stampa" +#: src/slic3r/GUI/GLCanvas3D.cpp:635 +msgid "SLA supports outside the print area were detected." +msgstr "Sono stati rilevati supporti SLA al di fuori dell'area di stampa ." -#: src/slic3r/GUI/ConfigWizard.cpp:1530 +#: src/slic3r/GUI/ConfigWizard.cpp:1931 msgid "SLA Technology Printers" msgstr "Stampanti con tecnologia SLA" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1432 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1563 msgid "Slab" msgstr "Lastra" -#: src/libslic3r/PrintConfig.cpp:1333 +#: src/libslic3r/PrintConfig.cpp:1441 msgid "Slic3r can upload G-code files to a printer host. This field must contain the kind of the host." msgstr "Slic3r può caricare il file G-code ad un host stampante. Questo campo deve contenere il tipo di host." -#: src/libslic3r/PrintConfig.cpp:105 +#: src/libslic3r/PrintConfig.cpp:107 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:98 +#: 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:1299 +#: src/libslic3r/PrintConfig.cpp:1407 msgid "Slic3r will not scale speed down below this speed." msgstr "Slic3r non rallenterà la velocità al di sotto di questa." -#: src/libslic3r/PrintConfig.cpp:3359 +#: src/libslic3r/PrintConfig.cpp:3558 msgid "Slice" msgstr "Processa" -#: src/slic3r/GUI/MainFrame.cpp:512 +#: src/slic3r/GUI/MainFrame.cpp:1113 msgid "Slice a file into a G-code" msgstr "Processa un file in G-code" -#: src/slic3r/GUI/MainFrame.cpp:518 +#: src/slic3r/GUI/MainFrame.cpp:1119 msgid "Slice a file into a G-code, save as" msgstr "Processa un file in G-code, salva come" -#: src/libslic3r/PrintConfig.cpp:87 +#: src/libslic3r/PrintConfig.cpp:89 msgid "Slice gap closing radius" msgstr "Gap closing radius per slicing" -#: src/slic3r/GUI/Plater.cpp:892 src/slic3r/GUI/Plater.cpp:3121 -#: src/slic3r/GUI/Plater.cpp:5110 +#: src/slic3r/GUI/Plater.cpp:767 src/slic3r/GUI/Plater.cpp:2921 +#: src/slic3r/GUI/Plater.cpp:5237 msgid "Slice now" msgstr "Processa ora" -#: src/libslic3r/PrintConfig.cpp:3333 +#: src/libslic3r/PrintConfig.cpp:3526 msgid "Slice the model and export SLA printing layers as PNG." msgstr "Effettua lo slice del modello ed esporta i layer di stampa SLA come PNG." -#: src/libslic3r/PrintConfig.cpp:3354 +#: src/libslic3r/PrintConfig.cpp:3547 msgid "Slice the model and export toolpaths as G-code." msgstr "Effettua slice del modello ed esporta il percorso come G-code." -#: src/libslic3r/PrintConfig.cpp:3360 +#: src/libslic3r/PrintConfig.cpp:3559 msgid "Slice the model as FFF or SLA based on the printer_technology configuration value." msgstr "Effettua lo slice del modello come FFF o SLA in base al valore di configurazione di printer_technology." -#: src/slic3r/GUI/Plater.cpp:216 +#: src/slic3r/GUI/Plater.cpp:222 msgid "Sliced Info" msgstr "Informazioni processo" -#: src/slic3r/GUI/MainFrame.cpp:847 src/slic3r/GUI/Plater.cpp:3121 -#: src/slic3r/GUI/Plater.cpp:5107 src/slic3r/GUI/Tab.cpp:1221 -#: src/slic3r/GUI/Tab.cpp:3662 +#: src/slic3r/GUI/MainFrame.cpp:1548 src/slic3r/GUI/Plater.cpp:2921 +#: src/slic3r/GUI/Plater.cpp:5234 src/slic3r/GUI/Tab.cpp:1551 +#: src/slic3r/GUI/Tab.cpp:4081 msgid "Slicing" msgstr "Slicing" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:134 -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:184 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:170 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:219 msgid "Slicing complete" msgstr "Slicing completato" -#: src/libslic3r/SLAPrint.cpp:760 +#: src/libslic3r/SLAPrint.cpp:780 msgid "Slicing done" msgstr "Slicing completato" -#: src/slic3r/GUI/MainFrame.cpp:874 +#: src/slic3r/GUI/MainFrame.cpp:1575 msgid "Slicing Done!" msgstr "Slicing Completato!" -#: src/libslic3r/SLAPrintSteps.cpp:245 +#: src/slic3r/GUI/NotificationManager.cpp:751 +msgid "Slicing finished." +msgstr "Slicing completato." + +#: src/libslic3r/SLAPrintSteps.cpp:247 msgid "Slicing had to be stopped due to an internal error: Inconsistent slice index." msgstr "Lo slicing è stato interrotto a causa di un errore interno: Indice di slice inconsistente." -#: src/libslic3r/SLAPrintSteps.cpp:45 +#: src/libslic3r/SLAPrintSteps.cpp:46 msgid "Slicing model" -msgstr "Slice modello" +msgstr "Slicing del modello" -#: src/libslic3r/SLAPrintSteps.cpp:49 +#: src/libslic3r/SLAPrintSteps.cpp:50 msgid "Slicing supports" msgstr "Supporti di Slicing" -#: src/libslic3r/PrintConfig.cpp:2414 +#: src/libslic3r/PrintConfig.cpp:2557 msgid "Slow" msgstr "Lento" -#: src/libslic3r/PrintConfig.cpp:1705 +#: src/libslic3r/PrintConfig.cpp:1820 msgid "Slow down if layer print time is below" -msgstr "Rallenta se il tempo di stampa del layer è inferiore" +msgstr "Rallenta se il tempo di stampa del layer è inferiore a" -#: src/libslic3r/PrintConfig.cpp:2415 +#: src/libslic3r/PrintConfig.cpp:2558 msgid "Slow tilt" msgstr "Inclinazione lenta" -#: src/libslic3r/PrintConfig.cpp:1715 +#: src/libslic3r/PrintConfig.cpp:1830 msgid "Small perimeters" msgstr "Perimetri piccoli" -#: src/slic3r/GUI/GLCanvas3D.cpp:288 +#: src/libslic3r/PrintConfig.cpp:2801 +msgid "Small pillar diameter percent" +msgstr "Percentuale di diametro del pilastro piccolo" + +#: src/slic3r/GUI/GLCanvas3D.cpp:274 msgid "Smooth" msgstr "Leviga" -#: src/slic3r/GUI/GLCanvas3D.cpp:258 +#: src/slic3r/GUI/GLCanvas3D.cpp:247 msgid "Smoothing" msgstr "Levigatura" -#: src/slic3r/GUI/GUI_App.cpp:839 +#: src/slic3r/GUI/GUI_App.cpp:1540 msgid "Snapshot name" msgstr "Nome istantanea" -#: src/slic3r/GUI/MainFrame.cpp:686 +#: src/slic3r/GUI/MainFrame.cpp:911 src/slic3r/GUI/MainFrame.cpp:1310 msgid "Software &Releases" msgstr "Ve&rsioni Software" -#: src/slic3r/GUI/PresetHints.cpp:184 +#: src/slic3r/GUI/PresetHints.cpp:183 msgid "solid infill" msgstr "riempimento solido" -#: src/slic3r/GUI/GUI_Preview.cpp:241 src/libslic3r/ExtrusionEntity.cpp:314 -#: src/libslic3r/PrintConfig.cpp:1756 src/libslic3r/PrintConfig.cpp:1767 +#: src/slic3r/GUI/GUI_Preview.cpp:305 src/libslic3r/ExtrusionEntity.cpp:318 +#: src/libslic3r/ExtrusionEntity.cpp:344 src/libslic3r/PrintConfig.cpp:1871 +#: src/libslic3r/PrintConfig.cpp:1882 msgid "Solid infill" msgstr "Riempimento solido" -#: src/libslic3r/PrintConfig.cpp:1744 +#: src/libslic3r/PrintConfig.cpp:1859 msgid "Solid infill every" msgstr "Riempimento solido ogni" -#: src/libslic3r/PrintConfig.cpp:1736 +#: src/libslic3r/PrintConfig.cpp:1851 msgid "Solid infill extruder" msgstr "Estrusore riempimento solido" -#: src/libslic3r/PrintConfig.cpp:1727 +#: src/libslic3r/PrintConfig.cpp:1842 msgid "Solid infill threshold area" msgstr "Area soglia riempimento solido" -#: src/slic3r/GUI/Tab.cpp:1065 src/libslic3r/PrintConfig.cpp:1780 +#: src/slic3r/GUI/Tab.cpp:1387 src/libslic3r/PrintConfig.cpp:1895 msgid "Solid layers" msgstr "Layer solidi" -#: src/libslic3r/PrintConfig.cpp:754 +#: src/libslic3r/PrintConfig.cpp:790 msgid "Soluble material" msgstr "Materiale solubile" -#: src/libslic3r/PrintConfig.cpp:755 +#: src/libslic3r/PrintConfig.cpp:791 msgid "Soluble material is most likely used for a soluble support." msgstr "Il materiale solubile è comunemente usato per un supporto solubile." -#: src/libslic3r/PrintConfig.cpp:937 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:735 +msgid "Some fields are too long to fit. Right mouse click reveals the full text." +msgstr "Alcuni campi sono troppo lunghi per adattarsi. Cliccando con il tasto destro del mouse si visualizza il testo completo." + +#: src/libslic3r/PrintConfig.cpp:981 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 output. The \"No extrusion\" flavor prevents PrusaSlicer from exporting any extrusion value at all." msgstr "Alcuni comandi G/M-code, incluso il controllo di temperatura e altri, non sono universali. Imposta questa opzione nel firmware della tua stampante per ottenere un output compatibile. La versione \"No extrusion\" evita che PrusaSlicer non esporti alcun valore." -#: src/slic3r/GUI/GLCanvas3D.cpp:688 -msgid "Some objects are not visible" -msgstr "Alcuni oggetti non sono visibili" +#: src/slic3r/GUI/Plater.cpp:2309 +#, 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 "" +"Alcuni oggetti nel file %s sembrano salvati in pollici.\n" +"Devo considerarli come salvati in pollici e convertirli?" -#: src/libslic3r/Print.cpp:1226 +#: src/slic3r/GUI/GLCanvas3D.cpp:636 +msgid "Some objects are not visible." +msgstr "Alcuni oggetti non sono visibili." + +#: src/libslic3r/Print.cpp:1252 msgid "Some objects are too close; your extruder will collide with them." msgstr "Alcuni oggetti sono troppo vicini; l'estrusore li colpirà." -#: src/libslic3r/Print.cpp:1228 +#: src/libslic3r/Print.cpp:1254 msgid "Some objects are too tall and cannot be printed without extruder collisions." msgstr "Alcuni oggetti sono troppo alti e non possono essere stampati senza essere colpiti dall'estrusore." -#: src/libslic3r/PrintConfig.cpp:2824 +#: src/libslic3r/PrintConfig.cpp:2988 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 "Per alcuni oggetti possono bastare pochi piccoli pad invece che un singolo pad grande. Questo parametro definisce quanto può essere lontano il centro di due pad. Se questi sono più vicini, si fonderanno in un unico pad." -#: src/libslic3r/PrintConfig.cpp:2187 +#: src/libslic3r/PrintConfig.cpp:2330 msgid "Some printers or printer setups may have difficulties printing with a variable layer height. Enabled by default." msgstr "Alcune stampanti o setup di stampanti possono riscontrare difficoltà a stampare con l'altezza layer variabile. Attivato come predefinito." -#: src/libslic3r/PrintConfig.cpp:1984 +#: src/libslic3r/PrintConfig.cpp:2126 msgid "Spacing between interface lines. Set zero to get a solid interface." msgstr "Spaziatura tra le linee di interfaccia. Imposta a zero per ottenere un'interfaccia solida." -#: src/libslic3r/PrintConfig.cpp:2018 +#: src/libslic3r/PrintConfig.cpp:1155 +msgid "Spacing between ironing passes" +msgstr "Spaziatura tra i passaggi di stiratura" + +#: src/libslic3r/PrintConfig.cpp:2160 msgid "Spacing between support material lines." msgstr "Spaziatura tra le linee del materiale di supporto." -#: src/slic3r/GUI/GUI_ObjectList.cpp:98 src/slic3r/GUI/GUI_ObjectList.cpp:616 -#: src/slic3r/GUI/GUI_Preview.cpp:224 src/slic3r/GUI/Tab.cpp:1145 -#: src/libslic3r/PrintConfig.cpp:235 src/libslic3r/PrintConfig.cpp:458 -#: src/libslic3r/PrintConfig.cpp:919 src/libslic3r/PrintConfig.cpp:1048 -#: src/libslic3r/PrintConfig.cpp:1431 src/libslic3r/PrintConfig.cpp:1668 -#: src/libslic3r/PrintConfig.cpp:1716 src/libslic3r/PrintConfig.cpp:1768 -#: src/libslic3r/PrintConfig.cpp:2118 +#: src/slic3r/GUI/GUI_ObjectList.cpp:96 src/slic3r/GUI/GUI_ObjectList.cpp:655 +#: src/slic3r/GUI/GUI_Preview.cpp:278 src/slic3r/GUI/Tab.cpp:1474 +#: src/libslic3r/PrintConfig.cpp:269 src/libslic3r/PrintConfig.cpp:494 +#: src/libslic3r/PrintConfig.cpp:963 src/libslic3r/PrintConfig.cpp:1092 +#: src/libslic3r/PrintConfig.cpp:1165 src/libslic3r/PrintConfig.cpp:1539 +#: src/libslic3r/PrintConfig.cpp:1776 src/libslic3r/PrintConfig.cpp:1831 +#: src/libslic3r/PrintConfig.cpp:1883 src/libslic3r/PrintConfig.cpp:2261 msgid "Speed" msgstr "Velocità" -#: src/libslic3r/PrintConfig.cpp:1670 -msgid "Speed (baud) of USB/serial port for printer connection." -msgstr "Velocità (baud) USB/Seriale per la connessione stampante." - -#: src/libslic3r/GCode/PreviewData.cpp:351 +#: src/slic3r/GUI/GCodeViewer.cpp:2238 src/libslic3r/GCode/PreviewData.cpp:356 msgid "Speed (mm/s)" msgstr "Velocità (mm/s)" -#: src/libslic3r/PrintConfig.cpp:920 +#: src/libslic3r/PrintConfig.cpp:964 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 "Velocità per il riempimento degli spazi stretti utilizzando brevi movimenti a zig-zag. Mantieni questa velocità ragionevolmente bassa per evitare problemi di oscillazione e risonanza. Imposta a zero per disabilitare il riempimento degli spazi." -#: src/slic3r/GUI/Tab.cpp:1158 +#: src/slic3r/GUI/Tab.cpp:1488 msgid "Speed for non-print moves" msgstr "Velocità per i movimenti non di stampa" -#: src/libslic3r/PrintConfig.cpp:1432 +#: src/libslic3r/PrintConfig.cpp:1540 msgid "Speed for perimeters (contours, aka vertical shells). Set to zero for auto." msgstr "Velocità per i perimetri (contorni, conosciuti anche come gusci verticali). Imposta a zero per automatizzare." -#: src/slic3r/GUI/Tab.cpp:1146 +#: src/slic3r/GUI/Tab.cpp:1475 msgid "Speed for print moves" msgstr "Velocità per i movimenti di stampa" -#: src/libslic3r/PrintConfig.cpp:236 +#: src/libslic3r/PrintConfig.cpp:270 msgid "Speed for printing bridges." msgstr "Velocità di stampa Bridge." -#: src/libslic3r/PrintConfig.cpp:1769 +#: src/libslic3r/PrintConfig.cpp:1884 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 "La velocità per le regioni di stampa solide (superiore/inferiore/gusci interni orizzontali). Questo valore può essere espresso in percentuale (per esempio: 80%) sulla velocità del riempimento predefinita qui sopra. Imposta a zero per automatizzare." -#: src/libslic3r/PrintConfig.cpp:1993 +#: src/libslic3r/PrintConfig.cpp:2135 msgid "Speed for printing support material interface layers. If expressed as percentage (for example 50%) it will be calculated over support material speed." msgstr "Velocità per la stampa dei layer di interfaccia del materiale di supporto. Se espresso in percentuale (per esempio 50%) sarà calcolato sulla velocità del materiale di supporto." -#: src/libslic3r/PrintConfig.cpp:2027 +#: src/libslic3r/PrintConfig.cpp:2169 msgid "Speed for printing support material." msgstr "Velocità per la stampa del materiale di supporto." -#: src/libslic3r/PrintConfig.cpp:1049 +#: src/libslic3r/PrintConfig.cpp:1093 msgid "Speed for printing the internal fill. Set to zero for auto." msgstr "Velocità per la stampa del riempimento interno. Imposta a zero per auto." -#: src/libslic3r/PrintConfig.cpp:2119 +#: src/libslic3r/PrintConfig.cpp:2262 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 slow down this to get a nicer surface finish. This can be expressed as a percentage (for example: 80%) over the solid infill speed above. Set to zero for auto." msgstr "Velocità di stampa dei layer solidi superiori (si applica solamente al layer solido esterno più in alto e non ai layer solidi interni). Rallenta questa impostazione per ottenere una superficie più rifinita. Questo valore può essere espresso in percentuale (per esempio: 80%) della velocità del riempimento solido qui sopra. Imposta a zero per auto." -#: src/libslic3r/PrintConfig.cpp:2153 +#: src/libslic3r/PrintConfig.cpp:2296 msgid "Speed for travel moves (jumps between distant extrusion points)." msgstr "Velocità per movimenti di spostamento (salti tra punti di estrusione distanti)." -#: src/libslic3r/PrintConfig.cpp:659 +#: src/libslic3r/PrintConfig.cpp:695 msgid "Speed of the first cooling move" msgstr "Velocità del primo movimento di raffreddamento" -#: src/libslic3r/PrintConfig.cpp:678 +#: src/libslic3r/PrintConfig.cpp:714 msgid "Speed of the last cooling move" msgstr "Velocità dell'ultimo movimento di raffreddamento" -#: src/libslic3r/PrintConfig.cpp:616 +#: src/libslic3r/PrintConfig.cpp:652 msgid "Speed used at the very beginning of loading phase." msgstr "Velocità utilizzata all'inizio della fase di caricamento." -#: src/libslic3r/PrintConfig.cpp:608 +#: src/libslic3r/PrintConfig.cpp:644 msgid "Speed used for loading the filament on the wipe tower." msgstr "Velocità utilizzata per caricare il filamento sulla torre di spurgo." -#: src/libslic3r/PrintConfig.cpp:624 +#: src/libslic3r/PrintConfig.cpp:660 msgid "Speed used for unloading the filament on the wipe tower (does not affect initial part of unloading just after ramming)." msgstr "Velocità usata per scaricare il filamento sulla wipe tower (non influisce sulla parte iniziale dello scaricamento dopo il ramming)." -#: src/libslic3r/PrintConfig.cpp:633 +#: src/libslic3r/PrintConfig.cpp:669 msgid "Speed used for unloading the tip of the filament immediately after ramming." msgstr "Velocità utilizzata per scaricare la punta del filamento immediatamente dopo il ramming." -#: src/slic3r/GUI/Mouse3DController.cpp:296 +#: src/slic3r/GUI/Mouse3DController.cpp:279 msgid "Speed:" msgstr "Velocità:" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1432 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:54 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:37 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1563 msgid "Sphere" msgstr "Sfera" -#: src/libslic3r/PrintConfig.cpp:1794 +#: src/libslic3r/PrintConfig.cpp:1909 msgid "Spiral vase" msgstr "Vaso a spirale" -#: src/slic3r/GUI/ConfigManipulation.cpp:90 +#: src/slic3r/GUI/ConfigManipulation.cpp:89 msgid "Spiral Vase" msgstr "Vaso a spirale" -#: src/slic3r/GUI/Plater.cpp:4019 src/slic3r/GUI/Plater.cpp:4034 -#: src/slic3r/GUI/Plater.cpp:4048 src/libslic3r/PrintConfig.cpp:3471 +#: src/slic3r/GUI/Plater.cpp:3939 src/slic3r/GUI/Plater.cpp:3954 +#: src/slic3r/GUI/Plater.cpp:3972 src/libslic3r/PrintConfig.cpp:3670 msgid "Split" msgstr "Dividi" -#: src/slic3r/GUI/Plater.cpp:4019 +#: src/slic3r/GUI/Plater.cpp:3939 msgid "Split the selected object" msgstr "Dividi l'oggetto selezionato" -#: src/slic3r/GUI/Plater.cpp:4014 src/slic3r/GUI/Plater.cpp:4034 +#: src/slic3r/GUI/Plater.cpp:3934 src/slic3r/GUI/Plater.cpp:3954 msgid "Split the selected object into individual objects" msgstr "Dividi l'oggetto selezionato in singoli oggetti" -#: src/slic3r/GUI/Plater.cpp:4016 src/slic3r/GUI/Plater.cpp:4048 +#: src/slic3r/GUI/Plater.cpp:3936 src/slic3r/GUI/Plater.cpp:3972 msgid "Split the selected object into individual sub-parts" msgstr "Dividi l'oggetto selezionato in singole sotto parti" -#: src/slic3r/GUI/GLCanvas3D.cpp:4550 +#: src/slic3r/GUI/GLCanvas3D.cpp:4916 msgid "Split to objects" -msgstr "Separa in oggetti" +msgstr "Dividi in oggetti" -#: src/slic3r/GUI/Plater.cpp:2981 +#: src/slic3r/GUI/Plater.cpp:2774 msgid "Split to Objects" -msgstr "Separa in oggetti" +msgstr "Dividi in oggetti" -#: src/slic3r/GUI/GLCanvas3D.cpp:4560 src/slic3r/GUI/GUI_ObjectList.cpp:1487 +#: src/slic3r/GUI/GLCanvas3D.cpp:4926 src/slic3r/GUI/GUI_ObjectList.cpp:1618 msgid "Split to parts" msgstr "Dividi in parti" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2274 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2440 msgid "Split to Parts" msgstr "Dividi in parti" -#: src/slic3r/GUI/ConfigWizard.cpp:289 +#: src/slic3r/GUI/ConfigWizard.cpp:307 msgid "Standard" msgstr "Standard" -#: src/libslic3r/PrintConfig.cpp:846 +#: src/libslic3r/PrintConfig.cpp:884 msgid "Stars" msgstr "Stelle" -#: src/slic3r/GUI/MainFrame.cpp:405 +#: src/slic3r/GUI/MainFrame.cpp:986 msgid "Start a new project" msgstr "Inizia un nuovo progetto" -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:27 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:29 msgid "Start at height" msgstr "Inizia all'altezza" -#: src/slic3r/GUI/Tab.cpp:1528 src/slic3r/GUI/Tab.cpp:1976 -#: src/libslic3r/PrintConfig.cpp:1813 src/libslic3r/PrintConfig.cpp:1828 +#: src/slic3r/GUI/Tab.cpp:1873 src/slic3r/GUI/Tab.cpp:2161 +#: src/libslic3r/PrintConfig.cpp:1928 src/libslic3r/PrintConfig.cpp:1943 msgid "Start G-code" msgstr "G-code iniziale" -#: src/slic3r/GUI/MainFrame.cpp:532 +#: src/slic3r/GUI/MainFrame.cpp:1133 msgid "Start new slicing process" msgstr "Avvia un nuovo processo di slicing" @@ -7206,7 +8437,37 @@ msgstr "Avvia un nuovo processo di slicing" msgid "Start printing after upload" msgstr "Avvia la stampa dopo il caricamento" -#: src/slic3r/GUI/PrintHostDialogs.cpp:151 +#: src/slic3r/GUI/GUI_App.cpp:396 +msgid "Start the application" +msgstr "Avvia l'applicazione" + +#: src/slic3r/GUI/GUI_App.cpp:386 +msgid "" +"Starting with %1% 2.3, configuration directory on Linux has changed (according to XDG Base Directory Specification) to \n" +"%2%.\n" +"\n" +"This directory did not exist yet (maybe you run the new version for the first time).\n" +"However, an old %1% configuration directory was detected in \n" +"%3%.\n" +"\n" +"Consider moving the contents of the old directory to the new location in order to access your profiles, etc.\n" +"Note that if you decide to downgrade %1% in future, it will use the old location again.\n" +"\n" +"What do you want to do now?" +msgstr "" +"A partire da %1% 2.3, la directory di configurazione su Linux è cambiata (secondo la XDG Base Directory Specification) in \n" +"%2%.\n" +"\n" +"Questa directory non esiste ancora (forse stai usando la nuova versione per la prima volta).\n" +"Tuttavia, è stata rilevata una vecchia directory di configurazione %1% in \n" +"%3%.\n" +"\n" +"Prendere in considerazione la possibilità di spostare il contenuto della vecchia directory nella nuova posizione per accedere ai propri profili, ecc.\n" +"Notare che se si decide di fare un downgrade di %1% in futuro, si utilizzerà di nuovo la vecchia posizione.\n" +"\n" +"Cosa vuoi fare adesso?" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:149 msgid "Status" msgstr "Stato" @@ -7214,766 +8475,940 @@ msgstr "Stato" msgid "Status:" msgstr "Stato:" -#: src/slic3r/GUI/Tab.cpp:2209 +#: src/slic3r/GUI/Search.cpp:77 src/slic3r/GUI/Tab.cpp:2378 msgid "Stealth" msgstr "Silenzioso" -#: src/slic3r/GUI/Plater.cpp:1291 +#: src/slic3r/GUI/Plater.cpp:1187 src/slic3r/GUI/Plater.cpp:1235 msgid "stealth mode" msgstr "modalità silenziosa" -#: src/slic3r/GUI/Plater.cpp:4985 -#, possible-c-format +#: src/slic3r/GUI/GCodeViewer.cpp:2557 +msgid "Stealth mode" +msgstr "Modalità silenziosa" + +#: src/slic3r/GUI/Plater.cpp:5118 +#, c-format msgid "STL file exported to %s" msgstr "File STL esportato in %s" -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:27 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:29 msgid "Stop at height" msgstr "Ferma all'altezza" -#: src/slic3r/GUI/Tab.cpp:1693 src/slic3r/GUI/Tab.cpp:1928 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:295 msgid "Success!" msgstr "Successo!" -#: src/slic3r/GUI/PresetHints.cpp:203 +#: src/slic3r/GUI/Plater.cpp:2047 +#, c-format +msgid "Successfully unmounted. The device %s(%s) can now be safely removed from the computer." +msgstr "Smontato correttamente. Il dispositivo %s(%s) può ora essere rimosso dal computer in sicurezza." + +#: src/slic3r/GUI/PresetHints.cpp:202 msgid "support" msgstr "supporto" -#: src/libslic3r/PrintConfig.cpp:2692 +#: src/libslic3r/PrintConfig.cpp:2856 msgid "Support base diameter" msgstr "Diametro della base del supporto" -#: src/libslic3r/PrintConfig.cpp:2702 +#: src/libslic3r/PrintConfig.cpp:2866 msgid "Support base height" msgstr "Altezza della base del supporto" -#: src/libslic3r/PrintConfig.cpp:2711 +#: src/libslic3r/PrintConfig.cpp:2875 msgid "Support base safety distance" msgstr "Distanza di sicurezza base supporto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3551 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4014 msgid "Support Blocker" msgstr "Blocco Supporto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3551 +#: src/libslic3r/PrintConfig.cpp:895 +msgid "Support Cubic" +msgstr "Supporto Cubico" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:4014 msgid "Support Enforcer" msgstr "Rinforzo Supporto" -#: src/slic3r/GUI/ConfigManipulation.cpp:163 +#: src/slic3r/GUI/ConfigManipulation.cpp:162 msgid "Support Generator" msgstr "Generatore Supporti" -#: src/slic3r/GUI/Tab.cpp:3608 +#: src/slic3r/GUI/Tab.cpp:4018 msgid "Support head" msgstr "Testa supporto" -#: src/libslic3r/PrintConfig.cpp:2620 -msgid "Support head front diameter" -msgstr "Diametro anteriore della testa del supporto" - -#: src/libslic3r/PrintConfig.cpp:2629 -msgid "Support head penetration" -msgstr "Inserimento testa del supporto" - -#: src/libslic3r/PrintConfig.cpp:2638 -msgid "Support head width" -msgstr "Larghezza testa del supporto" - -#: src/slic3r/GUI/PresetHints.cpp:213 +#: src/slic3r/GUI/PresetHints.cpp:212 msgid "support interface" msgstr "interfaccia supporto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:36 src/slic3r/GUI/GUI_ObjectList.cpp:97 -#: src/slic3r/GUI/GUI_ObjectList.cpp:615 src/slic3r/GUI/GUI_Preview.cpp:246 -#: src/slic3r/GUI/Tab.cpp:1120 src/slic3r/GUI/Tab.cpp:1121 -#: src/libslic3r/ExtrusionEntity.cpp:319 src/libslic3r/PrintConfig.cpp:370 -#: src/libslic3r/PrintConfig.cpp:1502 src/libslic3r/PrintConfig.cpp:1866 -#: src/libslic3r/PrintConfig.cpp:1872 src/libslic3r/PrintConfig.cpp:1880 -#: src/libslic3r/PrintConfig.cpp:1892 src/libslic3r/PrintConfig.cpp:1902 -#: src/libslic3r/PrintConfig.cpp:1910 src/libslic3r/PrintConfig.cpp:1925 -#: src/libslic3r/PrintConfig.cpp:1946 src/libslic3r/PrintConfig.cpp:1958 -#: src/libslic3r/PrintConfig.cpp:1974 src/libslic3r/PrintConfig.cpp:1983 -#: src/libslic3r/PrintConfig.cpp:1992 src/libslic3r/PrintConfig.cpp:2003 -#: src/libslic3r/PrintConfig.cpp:2017 src/libslic3r/PrintConfig.cpp:2025 -#: src/libslic3r/PrintConfig.cpp:2026 src/libslic3r/PrintConfig.cpp:2035 -#: src/libslic3r/PrintConfig.cpp:2043 src/libslic3r/PrintConfig.cpp:2057 +#: 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:311 +#: src/slic3r/GUI/Tab.cpp:1449 src/slic3r/GUI/Tab.cpp:1450 +#: src/libslic3r/ExtrusionEntity.cpp:324 src/libslic3r/ExtrusionEntity.cpp:356 +#: src/libslic3r/PrintConfig.cpp:404 src/libslic3r/PrintConfig.cpp:1610 +#: src/libslic3r/PrintConfig.cpp:2008 src/libslic3r/PrintConfig.cpp:2014 +#: src/libslic3r/PrintConfig.cpp:2022 src/libslic3r/PrintConfig.cpp:2034 +#: src/libslic3r/PrintConfig.cpp:2044 src/libslic3r/PrintConfig.cpp:2052 +#: src/libslic3r/PrintConfig.cpp:2067 src/libslic3r/PrintConfig.cpp:2088 +#: src/libslic3r/PrintConfig.cpp:2100 src/libslic3r/PrintConfig.cpp:2116 +#: src/libslic3r/PrintConfig.cpp:2125 src/libslic3r/PrintConfig.cpp:2134 +#: src/libslic3r/PrintConfig.cpp:2145 src/libslic3r/PrintConfig.cpp:2159 +#: src/libslic3r/PrintConfig.cpp:2167 src/libslic3r/PrintConfig.cpp:2168 +#: src/libslic3r/PrintConfig.cpp:2177 src/libslic3r/PrintConfig.cpp:2185 +#: src/libslic3r/PrintConfig.cpp:2199 msgid "Support material" msgstr "Materiale di supporto" -#: src/slic3r/GUI/GUI_Preview.cpp:247 src/libslic3r/ExtrusionEntity.cpp:320 -#: src/libslic3r/PrintConfig.cpp:1991 +#: src/slic3r/GUI/GUI_Preview.cpp:312 src/libslic3r/ExtrusionEntity.cpp:325 +#: src/libslic3r/ExtrusionEntity.cpp:358 src/libslic3r/PrintConfig.cpp:2133 msgid "Support material interface" msgstr "Interfaccia materiale di supporto" -#: src/libslic3r/PrintConfig.cpp:2044 +#: src/libslic3r/PrintConfig.cpp:2186 msgid "Support material will not be generated for overhangs whose slope angle (90° = vertical) is above the given threshold. In other words, this value represent the most horizontal slope (measured from the horizontal plane) that you can print without support material. Set to zero for automatic detection (recommended)." msgstr "Il materiale di supporto non sarà generato per sporgenze con angolo di inclinazione (90°=verticale) superiore al limite impostato. In altre parole, questo valore rappresenta l'inclinazione orizzontale massima (misurata dal piano orizzontale) che puoi stampare senza materiale di supporto. Imposta a zero per un rilevamento automatico (raccomandato)." -#: src/libslic3r/PrintConfig.cpp:1964 +#: src/libslic3r/PrintConfig.cpp:2106 msgid "Support material/raft interface extruder" msgstr "Estrusore materiale di supporto/intefaccia raft" -#: src/libslic3r/PrintConfig.cpp:1937 +#: src/libslic3r/PrintConfig.cpp:2079 msgid "Support material/raft/skirt extruder" msgstr "Estrusore materiale di supporto/raft/skirt" -#: src/slic3r/GUI/Plater.cpp:500 src/libslic3r/PrintConfig.cpp:1901 -#: src/libslic3r/PrintConfig.cpp:2674 +#: src/slic3r/GUI/Plater.cpp:366 src/libslic3r/PrintConfig.cpp:2043 +#: src/libslic3r/PrintConfig.cpp:2838 msgid "Support on build plate only" msgstr "Supporti solo dal piano di stampa" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:888 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:762 msgid "Support parameter change" msgstr "Modifica parametro del Supporto" -#: src/slic3r/GUI/Tab.cpp:3613 +#: src/slic3r/GUI/Tab.cpp:4023 msgid "Support pillar" msgstr "Pilastro di supporto" -#: src/libslic3r/PrintConfig.cpp:2658 -msgid "Support pillar connection mode" -msgstr "Modalità di connessione dei pilastri di supporto" - -#: src/libslic3r/PrintConfig.cpp:2648 -msgid "Support pillar diameter" -msgstr "Diametro pilastro di supporto" - -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:55 -#: src/libslic3r/PrintConfig.cpp:2764 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:54 +#: src/libslic3r/PrintConfig.cpp:2928 msgid "Support points density" msgstr "Densità punti di supporto" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1196 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1048 msgid "Support points edit" msgstr "Edita punti di supporto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:106 src/slic3r/GUI/GUI_ObjectList.cpp:624 -#: src/slic3r/GUI/Plater.cpp:495 src/slic3r/GUI/Tab.cpp:3604 -#: src/slic3r/GUI/Tab.cpp:3605 src/libslic3r/PrintConfig.cpp:2614 -#: src/libslic3r/PrintConfig.cpp:2621 src/libslic3r/PrintConfig.cpp:2630 -#: src/libslic3r/PrintConfig.cpp:2639 src/libslic3r/PrintConfig.cpp:2649 -#: src/libslic3r/PrintConfig.cpp:2675 src/libslic3r/PrintConfig.cpp:2682 -#: src/libslic3r/PrintConfig.cpp:2693 src/libslic3r/PrintConfig.cpp:2703 -#: src/libslic3r/PrintConfig.cpp:2712 src/libslic3r/PrintConfig.cpp:2725 -#: src/libslic3r/PrintConfig.cpp:2735 src/libslic3r/PrintConfig.cpp:2744 -#: src/libslic3r/PrintConfig.cpp:2754 src/libslic3r/PrintConfig.cpp:2765 -#: src/libslic3r/PrintConfig.cpp:2773 +#: src/slic3r/GUI/GUI_ObjectList.cpp:104 src/slic3r/GUI/GUI_ObjectList.cpp:663 +#: src/slic3r/GUI/Plater.cpp:361 src/slic3r/GUI/Tab.cpp:4014 +#: src/slic3r/GUI/Tab.cpp:4015 src/libslic3r/PrintConfig.cpp:2757 +#: src/libslic3r/PrintConfig.cpp:2764 src/libslic3r/PrintConfig.cpp:2773 +#: src/libslic3r/PrintConfig.cpp:2782 src/libslic3r/PrintConfig.cpp:2792 +#: src/libslic3r/PrintConfig.cpp:2802 src/libslic3r/PrintConfig.cpp:2839 +#: src/libslic3r/PrintConfig.cpp:2846 src/libslic3r/PrintConfig.cpp:2857 +#: src/libslic3r/PrintConfig.cpp:2867 src/libslic3r/PrintConfig.cpp:2876 +#: src/libslic3r/PrintConfig.cpp:2889 src/libslic3r/PrintConfig.cpp:2899 +#: src/libslic3r/PrintConfig.cpp:2908 src/libslic3r/PrintConfig.cpp:2918 +#: src/libslic3r/PrintConfig.cpp:2929 src/libslic3r/PrintConfig.cpp:2937 msgid "Supports" msgstr "Supporti" -#: src/slic3r/GUI/Plater.cpp:1194 +#: src/slic3r/GUI/Plater.cpp:1103 msgid "supports and pad" msgstr "supporti e pad" -#: src/libslic3r/PrintConfig.cpp:1092 +#: src/libslic3r/PrintConfig.cpp:1185 msgid "Supports remaining times" msgstr "Supporto Tempo residuo" -#: src/libslic3r/PrintConfig.cpp:1101 +#: src/libslic3r/PrintConfig.cpp:1194 msgid "Supports stealth mode" msgstr "Supporto modalità silenziosa" -#: src/slic3r/GUI/ConfigManipulation.cpp:159 -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/ConfigManipulation.cpp:158 +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/Preferences.cpp:87 +#: src/slic3r/GUI/Preferences.cpp:104 msgid "Suppress \" - default - \" presets" msgstr "Nascondi i preset \" - default - \"" -#: src/slic3r/GUI/Preferences.cpp:89 +#: src/slic3r/GUI/Preferences.cpp:106 msgid "Suppress \" - default - \" presets in the Print / Filament / Printer selections once there are any other valid presets available." msgstr "Nascondi i preset \" - default - \" nelle selezioni Stampa / Filamento / Stampante non appena sono disponibili altri preset validi." -#: src/slic3r/GUI/MainFrame.cpp:826 +#: src/slic3r/GUI/MainFrame.cpp:1527 msgid "SVG" msgstr "SVG" -#: src/slic3r/GUI/DoubleSlider.cpp:1144 +#: src/slic3r/GUI/Mouse3DController.cpp:318 +msgid "Swap Y/Z axes" +msgstr "Inverti assi Y/Z" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:179 +msgid "Switch between Editor/Preview" +msgstr "Passare da Editor/Anteprima" + +#: src/slic3r/GUI/DoubleSlider.cpp:1273 msgid "Switch code to Change extruder" msgstr "Passa il codice a Cambio estrusore" -#: src/slic3r/GUI/DoubleSlider.cpp:1179 +#: src/slic3r/GUI/DoubleSlider.cpp:1306 msgid "Switch code to Color change (%1%) for:" msgstr "Passa il codice a Cambio colore (%1%) per:" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:140 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:136 msgid "Switch to 3D" msgstr "Passa a 3D" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1376 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1223 msgid "Switch to editing mode" msgstr "Passa alla modalità modifica" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:141 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:137 msgid "Switch to Preview" msgstr "Passa ad Anteprima" -#: src/slic3r/GUI/wxExtensions.cpp:703 -#, possible-c-format +#: src/slic3r/GUI/GLCanvas3D.cpp:4302 src/slic3r/GUI/GLCanvas3D.cpp:4939 +msgid "Switch to Settings" +msgstr "Passa a Impostazioni" + +#: src/slic3r/GUI/wxExtensions.cpp:623 +#, c-format msgid "Switch to the %s mode" msgstr "Passa alla modalità %s" -#: src/slic3r/GUI/GUI_App.cpp:882 -msgid "Switching the language will trigger application restart.\nYou will lose content of the plater." -msgstr "Il cambio della lingua necessita il riavvio dell'applicazione.\nVerrà cancellato il contenuto del piano." +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:542 +msgid "Switching Presets: Unsaved Changes" +msgstr "Cambio di preset: Modifiche non salvate" + +#: src/slic3r/GUI/GUI_App.cpp:1608 +msgid "" +"Switching the language will trigger application restart.\n" +"You will lose content of the plater." +msgstr "" +"Il cambio della lingua necessita il riavvio dell'applicazione.\n" +"Verrà cancellato il contenuto del piano." #: src/slic3r/GUI/WipeTowerDialog.cpp:365 -msgid "Switching to simple settings will discard changes done in the advanced mode!\n\nDo you want to proceed?" -msgstr "Cambiare alle impostazioni semplici eliminerà tutte le modifiche fatte alle impostazioni complesse!\n\nProcedere?" +msgid "" +"Switching to simple settings will discard changes done in the advanced mode!\n" +"\n" +"Do you want to proceed?" +msgstr "" +"Cambiare alle impostazioni semplici eliminerà tutte le modifiche fatte alle impostazioni complesse!\n" +"\n" +"Procedere?" -#: src/slic3r/GUI/Tab.cpp:1014 +#: src/slic3r/GUI/Tab.cpp:1332 msgid "symbolic profile name" msgstr "nome simbolico profilo" -#: src/libslic3r/PrintConfig.cpp:2036 +#: src/libslic3r/PrintConfig.cpp:2178 msgid "Synchronize support layers with the object print layers. This is useful with multi-material printers, where the extruder switch is expensive." msgstr "Sincronizza i layer di supporto con i layer dell'oggetto stampato. È utile con le stampanti multi-material, dove il cambio estrusore è costoso." -#: src/libslic3r/PrintConfig.cpp:2034 +#: src/libslic3r/PrintConfig.cpp:2176 msgid "Synchronize with object layers" msgstr "Sincronizza con i layer dell'oggetto" -#: src/slic3r/GUI/MainFrame.cpp:699 +#: src/slic3r/GUI/MainFrame.cpp:924 src/slic3r/GUI/MainFrame.cpp:1323 msgid "System &Info" msgstr "&Info di Sistema" -#: src/slic3r/GUI/SysInfoDialog.cpp:78 +#: src/slic3r/GUI/SysInfoDialog.cpp:90 src/slic3r/GUI/SysInfoDialog.cpp:92 msgid "System Information" msgstr "Informazioni di sistema" -#: src/slic3r/GUI/Preset.cpp:1109 src/slic3r/GUI/Preset.cpp:1164 -#: src/slic3r/GUI/Preset.cpp:1242 src/slic3r/GUI/Preset.cpp:1284 -#: src/slic3r/GUI/PresetBundle.cpp:1583 src/slic3r/GUI/PresetBundle.cpp:1672 +#: src/slic3r/GUI/PresetComboBoxes.cpp:188 +#: src/slic3r/GUI/PresetComboBoxes.cpp:226 +#: src/slic3r/GUI/PresetComboBoxes.cpp:724 +#: src/slic3r/GUI/PresetComboBoxes.cpp:774 +#: src/slic3r/GUI/PresetComboBoxes.cpp:886 +#: src/slic3r/GUI/PresetComboBoxes.cpp:930 msgid "System presets" msgstr "Preset di sistema" -#: src/slic3r/GUI/GUI_App.cpp:801 +#: src/slic3r/GUI/GUI_App.cpp:1481 msgid "Take Configuration &Snapshot" msgstr "Cattura I&stantanea di Configurazione" -#: src/slic3r/GUI/GUI_App.cpp:839 +#: src/slic3r/GUI/GUI_App.cpp:1540 msgid "Taking configuration snapshot" msgstr "Cattura istantanea della configurazione" -#: src/slic3r/GUI/Tab.cpp:1433 src/libslic3r/PrintConfig.cpp:2067 +#: src/slic3r/GUI/Tab.cpp:1779 msgid "Temperature" msgstr "Temperatura" -#: src/libslic3r/PrintConfig.cpp:1804 +#: src/libslic3r/PrintConfig.cpp:1919 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 "La differenza di temperatura da applicare quando un estrusore non è attivo. Abilita uno skirt \"sacrificale\" a piena altezza su cui l'ugello verrà pulito periodicamente." -#: src/libslic3r/PrintConfig.cpp:1803 +#: src/libslic3r/PrintConfig.cpp:1918 msgid "Temperature variation" msgstr "Variazione di temperatura" -#: src/slic3r/GUI/ConfigWizard.cpp:1017 +#: src/slic3r/GUI/ConfigWizard.cpp:1383 msgid "Temperatures" msgstr "Temperature" -#: src/slic3r/GUI/Tab.cpp:1677 src/slic3r/GUI/Tab.cpp:1915 +#: src/slic3r/GUI/Tab.cpp:2215 +msgid "Template Custom G-code" +msgstr "Template G-code personalizzato" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:284 msgid "Test" msgstr "Test" -#: src/slic3r/GUI/BedShapeDialog.cpp:172 +#: src/slic3r/GUI/BedShapeDialog.cpp:315 msgid "Texture" msgstr "Texture" -#: src/slic3r/GUI/ConfigManipulation.cpp:208 +#: src/slic3r/GUI/ConfigManipulation.cpp:207 msgid "The %1% infill pattern is not supposed to work at 100%% density." msgstr "La trama di riempimento %1% non è fatta per lavorare con densità al 100%%." #: src/slic3r/GUI/FirmwareDialog.cpp:548 -#, possible-c-format +#, c-format msgid "The %s device could not have been found" msgstr "Il dispositivo %s non è stato trovato" #: src/slic3r/GUI/FirmwareDialog.cpp:436 -#, possible-c-format -msgid "The %s device was not found.\nIf the device is connected, please press the Reset button next to the USB connector ..." -msgstr "Il dispositivo %s non è stato trovato.\nSe il dispositivo è connesso, premi il pulsante Reset vicino al connettore USB ..." +#, c-format +msgid "" +"The %s device was not found.\n" +"If the device is connected, please press the Reset button next to the USB connector ..." +msgstr "" +"Il dispositivo %s non è stato trovato.\n" +"Se il dispositivo è connesso, premi il pulsante Reset vicino al connettore USB ..." -#: src/slic3r/GUI/Tab.cpp:976 +#: src/slic3r/GUI/Tab.cpp:1238 msgid "The current custom preset will be detached from the parent system preset." msgstr "Il preset personalizzato corrente sarà staccato dal preset del sistema padre." -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:875 -msgid "The currently manipulated object is tilted (rotation angles are not multiples of 90°).\nNon-uniform scaling of tilted objects is only possible in the World coordinate system,\nonce the rotation is embedded into the object coordinates." -msgstr "L'oggetto modificato corrente è inclinato (angoli di rotazione non multipli di 90°).\nUn ridimensionamento non uniforme di un oggetto inclinato è possibile solamente su un sistema di coordinate reali, non appena la rotazione è inclusa nelle coordinate dell'oggetto." +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:925 +msgid "" +"The currently manipulated object is tilted (rotation angles are not multiples of 90°).\n" +"Non-uniform scaling of tilted objects is only possible in the World coordinate system,\n" +"once the rotation is embedded into the object coordinates." +msgstr "" +"L'oggetto modificato corrente è inclinato (angoli di rotazione non multipli di 90°).\n" +"Un ridimensionamento non uniforme di un oggetto inclinato è possibile solamente su un sistema di coordinate reali, non appena la rotazione è inclusa nelle coordinate dell'oggetto." -#: src/libslic3r/PrintConfig.cpp:2726 +#: src/libslic3r/PrintConfig.cpp:2890 msgid "The default angle for connecting support sticks and junctions." msgstr "Angolo predefinito per la connessione delle barre di supporto e le giunzioni." -#: src/libslic3r/SLAPrint.cpp:631 +#: src/libslic3r/SLAPrint.cpp:645 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 "La fine del pilastro di supporto si svilupperà nello spazio tra l'oggetto e il pad. La 'Distanza di sicurezza base di supporto' deve essere più grande del parametro 'Distanza Pad oggetto' per evitare questo." -#: src/libslic3r/PrintConfig.cpp:489 +#: src/libslic3r/PrintConfig.cpp:525 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 "Estrusore da utilizzare (a meno che non siano specificate impostazioni d'estrusore più specifiche). Questo valore scavalca l'estrusore dei perimetri e di riempimento, ma non l'estrusore dei supporti." -#: src/libslic3r/PrintConfig.cpp:1003 +#: src/libslic3r/PrintConfig.cpp:1047 msgid "The extruder to use when printing infill." msgstr "L'estrusore da utilizzare per la stampa del riempimento." -#: src/libslic3r/PrintConfig.cpp:1410 +#: src/libslic3r/PrintConfig.cpp:1518 msgid "The extruder to use when printing perimeters and brim. First extruder is 1." msgstr "L'estrusore da utilizzare per la stampa dei perimetri e del brim. Il primo estrusore è 1." -#: src/libslic3r/PrintConfig.cpp:1738 +#: src/libslic3r/PrintConfig.cpp:1853 msgid "The extruder to use when printing solid infill." msgstr "L'estrusore da utilizzare per la stampa del riempimento solido." -#: src/libslic3r/PrintConfig.cpp:1966 +#: src/libslic3r/PrintConfig.cpp:2108 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 "L'estrusore da utilizzare per la stampa dell'interfaccia del materiale di supporto (1+, 0 per usare l'estrusore attuale per minimizzare il cambio di attrezzo). Questo influenza anche il raft." -#: src/libslic3r/PrintConfig.cpp:1939 +#: src/libslic3r/PrintConfig.cpp:2081 msgid "The extruder to use when printing support material, raft and skirt (1+, 0 to use the current extruder to minimize tool changes)." msgstr "L'estrusore da utilizzare per la stampa del materiale di supporto, raft e skirt (1+, 0 per utilizzare l'estrusore attuale per minimizzare i cambi di attrezzo)." -#: src/libslic3r/PrintConfig.cpp:727 +#: src/libslic3r/PrintConfig.cpp:763 msgid "The filament material type for use in custom G-codes." msgstr "Tipo di materiale da usare nei G-code personalizzati." -#: src/libslic3r/PrintConfig.cpp:3494 +#: src/libslic3r/PrintConfig.cpp:3693 msgid "The file where the output will be written (if not specified, it will be based on the input file)." msgstr "Il file dove verrà scritto l'output (se non specificato, sarà basato sul file di input)." -#: src/libslic3r/PrintConfig.cpp:1102 +#: src/libslic3r/PrintConfig.cpp:1195 msgid "The firmware supports stealth mode" msgstr "Il firmware supporta la modalità silenziosa" -#: src/libslic3r/PrintConfig.cpp:120 +#: src/libslic3r/PrintConfig.cpp:122 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 "Il primo layer verrà ristretto sul piano XY dal valore configurato, così da compensare per lo schiacciamento del 1° layer, anche noto come effetto Zampa d'elefante." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3820 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3927 src/slic3r/GUI/Tab.cpp:3457 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4283 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4410 +#: src/slic3r/GUI/SavePresetDialog.cpp:117 msgid "the following characters are not allowed:" msgstr "non sono permessi i seguenti caratteri:" -#: src/slic3r/GUI/ConfigWizard.cpp:1830 +#: src/slic3r/GUI/ConfigWizard.cpp:2257 msgid "The following FFF printer models have no filament selected:" msgstr "I seguenti modelli di stampante FFF non hanno nessun filamento selezionato:" -#: src/slic3r/GUI/ConfigWizard.cpp:1848 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1004 +msgid "The following presets were modified:" +msgstr "I preset seguenti sono stati modificati:" + +#: 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:" -#: src/slic3r/GUI/Tab.cpp:3461 +#: src/slic3r/GUI/SavePresetDialog.cpp:125 msgid "the following suffix is not allowed:" msgstr "il seguente suffisso non è permesso:" -#: src/libslic3r/PrintConfig.cpp:2871 +#: src/libslic3r/PrintConfig.cpp:3035 msgid "The gap between the object bottom and the generated pad in zero elevation mode." msgstr "Lo spazio tra la parte inferiore dell'oggetto e il pad generato nella modalità ad elevazione zero." -#: src/libslic3r/PrintConfig.cpp:2704 +#: src/libslic3r/PrintConfig.cpp:2868 msgid "The height of the pillar base cone" msgstr "Altezza del cono alla base del pilastro" -#: src/slic3r/GUI/DoubleSlider.cpp:1922 +#: src/slic3r/GUI/DoubleSlider.cpp:2140 msgid "The last color change data was saved for a multi extruder printing with tool changes for whole print." msgstr "Gli ultimi dati del cambio colore sono stati salvati per una stampa a estrusore multiplo con cambi di attrezzo per l'intera stampa." -#: src/slic3r/GUI/DoubleSlider.cpp:1900 src/slic3r/GUI/DoubleSlider.cpp:1916 +#: src/slic3r/GUI/DoubleSlider.cpp:2119 src/slic3r/GUI/DoubleSlider.cpp:2134 msgid "The last color change data was saved for a multi extruder printing." msgstr "Gli ultimi dati del cambio colore sono stati salvati per una stampa a estrusore multiplo." -#: src/slic3r/GUI/DoubleSlider.cpp:1899 +#: src/slic3r/GUI/DoubleSlider.cpp:2118 msgid "The last color change data was saved for a single extruder printing." msgstr "I dati dell'ultimo cambio colore sono stati salvati per la stampa ad estrusore singolo." -#: src/libslic3r/PrintConfig.cpp:2745 +#: src/libslic3r/PrintConfig.cpp:2909 msgid "The max distance of two pillars to get linked with each other. A zero value will prohibit pillar cascading." msgstr "La distanza massima tra due pilastri per collegarsi gli uni agli altri. Un valore di zero impedisce i pilastri a cascata." -#: src/libslic3r/PrintConfig.cpp:2736 +#: src/libslic3r/PrintConfig.cpp:2900 msgid "The max length of a bridge" msgstr "La lunghezza massima di un bridge" -#: src/libslic3r/PrintConfig.cpp:2714 +#: 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." -#: src/libslic3r/PrintConfig.cpp:185 +#: src/slic3r/GUI/SavePresetDialog.cpp:142 +msgid "The name cannot be empty." +msgstr "Il nome non può essere vuoto." + +#: 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." -#: src/libslic3r/PrintConfig.cpp:2143 +#: src/libslic3r/PrintConfig.cpp:2286 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 "Il numero di layer solidi superiori è aumentato al di sopra di top_solid_layers se necessario per soddisfare lo spessore minimo del guscio superiore. Questo è utile a prevenire l'effetto cuscinetto con la stampa ad altezza layer variabile." -#: src/libslic3r/PrintConfig.cpp:2277 +#: src/slic3r/GUI/Plater.cpp:2326 +msgid "The object appears to be saved in inches" +msgstr "L'oggetto sembra essere stato salvato in pollici" + +#: src/libslic3r/PrintConfig.cpp:2420 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 "L'oggetto verrà allargato/ristretto sul piano XY dal valore configurato (negativo = verso l'interno, positivo = verso l'esterno). Questo può essere utile per regolare la grandezza dei fori." -#: src/libslic3r/PrintConfig.cpp:1503 +#: src/libslic3r/PrintConfig.cpp:1611 msgid "The object will be raised by this number of layers, and support material will be generated under it." msgstr "L'oggetto verrà sollevato per questo numero di layer e verrà generato il materiale di supporto al di sotto di esso." -#: src/libslic3r/PrintConfig.cpp:2424 -msgid "The percentage of the bed area. \nIf the print area exceeds the specified value, \nthen a slow tilt will be used, otherwise - a fast tilt" -msgstr "La percentuale dell'area del piano.\nSe l'area di stampa supera un determinato valore,\nverrà utilizzata l'inclinazione lenta, in caso contrario - l'inclinazione veloce" +#: src/libslic3r/PrintConfig.cpp:2803 +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 "La percentuale di pilastri più piccoli rispetto al diametro normale dei pilastri che vengono utilizzati in aree problematiche in cui un normale pilastro non può adattarsi." -#: src/slic3r/GUI/GUI_App.cpp:932 -msgid "The presets on the following tabs were modified" -msgstr "Sono stati modificati i preset nelle seguenti schede" +#: src/libslic3r/PrintConfig.cpp:2567 +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 "" +"La percentuale dell'area del piano.\n" +"Se l'area di stampa supera un determinato valore,\n" +"verrà utilizzata l'inclinazione lenta, in caso contrario - l'inclinazione veloce" -#: src/libslic3r/PrintConfig.cpp:1846 +#: src/slic3r/GUI/Tab.cpp:3430 +msgid "The physical printer(s) below is based on the preset, you are going to delete." +msgstr "La(e) stampante(e) fisica(e) sottostante(i) si basa(no) solo sul preset che si intende cancellare." + +#: src/slic3r/GUI/Tab.cpp:3438 +msgid "The physical printer(s) below is based only on the preset, you are going to delete." +msgstr "La(e) stampante(e) fisica(e) sottostante(i) si basa(no) solo sul preset che si intende cancellare." + +#: src/slic3r/GUI/GUI_App.cpp:1676 +msgid "The preset(s) modifications are successfully saved" +msgstr "Le modifiche dei preset sono state salvate correttamente" + +#: src/libslic3r/PrintConfig.cpp:1988 msgid "The printer multiplexes filaments into a single hot end." msgstr "La stampante processa diversi filamenti in un singolo hotend." -#: src/libslic3r/Format/3mf.cpp:1630 +#: src/libslic3r/Format/3mf.cpp:1667 msgid "The selected 3mf file has been saved with a newer version of %1% and is not compatible." msgstr "Il file 3mf selezionato è stato salvato con una versione più recente di %1% e non è compatibile." -#: src/libslic3r/Format/AMF.cpp:934 +#: src/libslic3r/Format/AMF.cpp:955 msgid "The selected amf file has been saved with a newer version of %1% and is not compatible." msgstr "Il file amf selezionato è stato salvato con una versione più recente di %1% e non è compatibile." -#: src/slic3r/GUI/BedShapeDialog.cpp:513 +#: src/slic3r/GUI/Plater.cpp:4751 +msgid "The selected file" +msgstr "Il file selezionato" + +#: src/slic3r/GUI/BedShapeDialog.cpp:589 msgid "The selected file contains no geometry." msgstr "Il file selezionato non contiene geometrie." -#: src/slic3r/GUI/BedShapeDialog.cpp:517 +#: src/slic3r/GUI/BedShapeDialog.cpp:593 msgid "The selected file contains several disjoint areas. This is not supported." msgstr "Il file selezionato contiene molteplici aree disgiunte. Non è supportato." -#: src/slic3r/GUI/Plater.cpp:2970 +#: src/slic3r/GUI/Plater.cpp:2763 msgid "The selected object can't be split because it contains more than one volume/material." msgstr "L'oggetto selezionato non può essere diviso perché contiene più di un volume/materiale." -#: src/slic3r/GUI/GUI_ObjectList.cpp:2270 src/slic3r/GUI/Plater.cpp:2978 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2436 src/slic3r/GUI/Plater.cpp:2771 msgid "The selected object couldn't be split because it contains only one part." msgstr "L'oggetto selezionato non può essere diviso perché contiene solo una parte." -#: src/slic3r/GUI/MainFrame.cpp:461 -msgid "The selected project is no longer available.\nDo you want to remove it from the recent projects list?" -msgstr "Il progetto selezionato non è più disponibile.\nVuoi rimuoverlo dall'elenco dei progetti recenti?" +#: src/slic3r/GUI/MainFrame.cpp:1003 +msgid "" +"The selected project is no longer available.\n" +"Do you want to remove it from the recent projects list?" +msgstr "" +"Il progetto selezionato non è più disponibile.\n" +"Vuoi rimuoverlo dall'elenco dei progetti recenti?" -#: src/slic3r/GUI/DoubleSlider.cpp:998 -msgid "The sequential print is on.\nIt's impossible to apply any custom G-code for objects printing sequentually.\nThis code won't be processed during G-code generation." -msgstr "La stampa sequenziale è attiva.\nNon è possibile applicare alcun G-code personalizzato per oggetti con stampa sequenziale.\nQuesto codice non sarà processato durante la generazione del G-code." +#: src/slic3r/GUI/DoubleSlider.cpp:1121 +msgid "" +"The sequential print is on.\n" +"It's impossible to apply any custom G-code for objects printing sequentually.\n" +"This code won't be processed during G-code generation." +msgstr "" +"La stampa sequenziale è attiva.\n" +"Non è possibile applicare alcun G-code personalizzato per oggetti con stampa sequenziale.\n" +"Questo codice non sarà processato durante la generazione del G-code." -#: src/libslic3r/PrintConfig.cpp:2846 +#: src/slic3r/GUI/ConfigWizard.cpp:1187 +msgid "The size of the object can be specified in inches" +msgstr "La dimensione dell'oggetto può essere specificata in pollici" + +#: src/libslic3r/PrintConfig.cpp:3010 msgid "The slope of the pad wall relative to the bed plane. 90 degrees means straight walls." msgstr "Inclinazione della parete del pad relativa al piano. 90 gradi equivale a pareti dritte." -#: src/libslic3r/PrintConfig.cpp:1614 +#: src/libslic3r/PrintConfig.cpp:1722 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 "La velocità di caricamento di un filamento nell'estrusore dopo la retrazione (si applica solamente al motore dell'estrusore). Se lasciato a zero, verrà utilizzata la velocità di retrazione." -#: src/libslic3r/PrintConfig.cpp:1606 +#: src/libslic3r/PrintConfig.cpp:1714 msgid "The speed for retractions (it only applies to the extruder motor)." msgstr "Velocità delle retrazioni (si applica solamente al motore dell'estrusore)." -#: src/slic3r/GUI/ConfigManipulation.cpp:81 -#, no-c-format -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/slic3r/GUI/ConfigManipulation.cpp:80 +#, c-format +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:1237 +#: 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:1244 +#: 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." -#: src/slic3r/GUI/Tab.cpp:3068 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:464 msgid "The supplied name is empty. It can't be saved." msgstr "Il nome fornito è vuoto. Non può essere salvato." -#: src/slic3r/GUI/Tab.cpp:3465 +#: src/slic3r/GUI/SavePresetDialog.cpp:131 msgid "The supplied name is not available." msgstr "Il nome fornito non è disponibile." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3819 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3926 src/slic3r/GUI/Tab.cpp:3456 -#: src/slic3r/GUI/Tab.cpp:3460 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4282 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4409 +#: src/slic3r/GUI/SavePresetDialog.cpp:116 +#: src/slic3r/GUI/SavePresetDialog.cpp:124 msgid "The supplied name is not valid;" msgstr "Il nome fornito non è valido;" -#: src/libslic3r/Print.cpp:1222 +#: src/libslic3r/Print.cpp:1248 msgid "The supplied settings will cause an empty print." msgstr "Le configurazioni fornite causeranno una stampa vuota." -#: src/libslic3r/PrintConfig.cpp:2789 +#: src/libslic3r/PrintConfig.cpp:2953 msgid "The thickness of the pad and its optional cavity walls." msgstr "Lo spessore del pad e delle intercapedini opzionali." -#: src/libslic3r/PrintConfig.cpp:1911 +#: 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." -#: src/slic3r/GUI/Tab.cpp:2575 -msgid "The Wipe option is not available when using the Firmware Retraction mode.\n\nShall I disable it in order to enable Firmware Retraction?" -msgstr "La funzione Wipe non è disponibile quando si usa la modalità Retrazione Firmware.\n\nDevo disattivarla per poter abilitare la Retrazione Firmware?" +#: src/slic3r/GUI/Tab.cpp:2731 +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 "" +"La funzione Wipe non è disponibile quando si usa la modalità Retrazione Firmware.\n" +"\n" +"Devo disattivarla per poter abilitare la Retrazione Firmware?" -#: src/libslic3r/Print.cpp:1268 +#: src/libslic3r/Print.cpp:1294 msgid "The Wipe Tower currently does not support volumetric E (use_volumetric_e=0)." msgstr "La Torre di Spurgo attualmente non supporta la volumetrica E (use_volumetric_e=0)." -#: src/slic3r/GUI/ConfigManipulation.cpp:115 -msgid "The Wipe Tower currently supports the non-soluble supports only\nif they are printed with the current extruder without triggering a tool change.\n(both support_material_extruder and support_material_interface_extruder need to be set to 0)." +#: src/slic3r/GUI/ConfigManipulation.cpp:114 +msgid "" +"The Wipe Tower currently supports the non-soluble supports only\n" +"if they are printed with the current extruder without triggering a tool change.\n" +"(both support_material_extruder and support_material_interface_extruder need to be set to 0)." msgstr "La Torre di Spurgo attualmente è compatibile con i supporti non solubili solamente se questi sono stampati con l'attuale estrusore senza l'innesco di un cambio attrezzo. (entrambi support_material_extruder e support_material_interface_extruder devono essere impostati a 0)." -#: src/libslic3r/Print.cpp:1400 +#: src/libslic3r/Print.cpp:1426 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 support_material_extruder and support_material_interface_extruder need to be set to 0)." msgstr "La Torre di Spurgo attualmente è compatibile con i supporti non solubili solamente se questi sono stampati con l'attuale estrusore senza l'innesco di un cambio attrezzo. (entrambi support_material_extruder e support_material_interface_extruder devono essere impostati a 0)." -#: src/libslic3r/Print.cpp:1270 +#: src/libslic3r/Print.cpp:1296 msgid "The Wipe Tower is currently not supported for multimaterial sequential prints." msgstr "La Torre di spurgo non è al momento supportata per stampe multi-material sequenziali." -#: src/libslic3r/Print.cpp:1262 -msgid "The Wipe Tower is currently only supported for the Marlin, RepRap/Sprinter and Repetier G-code flavors." -msgstr "La torre di spurgo al momento è supportata solo nelle versioni G-code per Marlin, RepRap/Sprinter e Repetier." +#: src/libslic3r/Print.cpp:1290 +msgid "The Wipe Tower is currently only supported for the Marlin, RepRap/Sprinter, RepRapFirmware and Repetier G-code flavors." +msgstr "La Torre di spurgo è al momento supportata solo da varianti G-code Marlin, RepRap/Sprinter, RepRapFirmware e Repetier." -#: src/libslic3r/Print.cpp:1264 +#: src/libslic3r/Print.cpp:1290 msgid "The Wipe Tower is currently only supported with the relative extruder addressing (use_relative_e_distances=1)." msgstr "Attualmente la Torre di spurgo è supportata solo con l'indirizzamento relativo dell'estrusore (use_relative_e_distances = 1)." -#: src/libslic3r/Print.cpp:1293 +#: src/libslic3r/Print.cpp:1319 msgid "The Wipe Tower is only supported for multiple objects if they are printed over an equal number of raft layers" msgstr "La Torre di spurgo è supportata con oggetti multipli solo se questi vengono stampati sullo stesso numero di layer di raft" -#: src/libslic3r/Print.cpp:1295 +#: src/libslic3r/Print.cpp:1321 msgid "The Wipe Tower is only supported for multiple objects if they are printed with the same support_material_contact_distance" msgstr "La Torre di spurgo è supportata con oggetti multipli solo se questi vengono stampati sullo stesso support_material_contact_distance" -#: src/libslic3r/Print.cpp:1297 +#: src/libslic3r/Print.cpp:1323 msgid "The Wipe Tower is only supported for multiple objects if they are sliced equally." msgstr "La Torre di spurgo è supportata con oggetti multipli solo se questi sono processati allo stesso modo." -#: src/libslic3r/Print.cpp:1291 +#: src/libslic3r/Print.cpp:1317 msgid "The Wipe Tower is only supported for multiple objects if they have equal layer heights" msgstr "La Torre di spurgo è supportata con oggetti multipli solo se questi hanno la stessa altezza layer" -#: src/libslic3r/Print.cpp:1257 +#: src/libslic3r/Print.cpp:1283 msgid "The wipe tower is only supported if all extruders have the same nozzle diameter and use filaments of the same diameter." msgstr "La torre di spurgo è supportata solo se tutti gli estrusori hanno l'ugello con lo stesso diametro ed utilizzano filamenti con lo stesso diametro." -#: src/libslic3r/Print.cpp:1339 +#: src/libslic3r/Print.cpp:1365 msgid "The Wipe tower is only supported if all objects have the same variable layer height" msgstr "La Torre di spurgo è supportata solo se tutti gli oggetti hanno la stessa altezza layer variabile" -#: src/libslic3r/SLAPrintSteps.cpp:621 +#: src/slic3r/GUI/Plater.cpp:3563 +msgid "There are active warnings concerning sliced models:" +msgstr "Sono presenti avvisi attivi relativi ai modelli processati:" + +#: src/libslic3r/SLAPrintSteps.cpp:619 msgid "There are unprintable objects. Try to adjust support settings to make the objects printable." msgstr "Sono presenti oggetti non stampabili. Prova a regolare le impostazioni dei supporti per rendere gli oggetti stampabili." -#: src/slic3r/GUI/DoubleSlider.cpp:1030 -msgid "There is a color change for extruder that has not been used before.\nCheck your settings to avoid redundant color changes." -msgstr "È presente un cambio colore per l'estrusore che non è stato usato prima.\nControlla le impostazioni per evitare cambi colore ridondanti." +#: src/slic3r/GUI/DoubleSlider.cpp:1155 +msgid "" +"There is a color change for extruder that has not been used before.\n" +"Check your settings to avoid redundant color changes." +msgstr "" +"È presente un cambio colore per l'estrusore che non è stato usato prima.\n" +"Controlla le impostazioni per evitare cambi colore ridondanti." -#: src/slic3r/GUI/DoubleSlider.cpp:1024 -msgid "There is a color change for extruder that won't be used till the end of print job.\nThis code won't be processed during G-code generation." -msgstr "È presente un cambio colore per l'estrusore che non sarà utilizzato fino alla fine del lavoro di stampa.\nQuesto codice non sarà processato durante la generazione del G-code." +#: src/slic3r/GUI/DoubleSlider.cpp:1149 +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 "" +"È presente un cambio colore per l'estrusore che non sarà utilizzato fino alla fine del lavoro di stampa.\n" +"Questo codice non sarà processato durante la generazione del G-code." -#: src/slic3r/GUI/DoubleSlider.cpp:1027 -msgid "There is an extruder change set to the same extruder.\nThis code won't be processed during G-code generation." -msgstr "È presente un cambio estrusore impostato nello stesso estrusore.\nQuesto codice non verrà processato durante la generazione del G-code." +#: src/slic3r/GUI/DoubleSlider.cpp:1152 +msgid "" +"There is an extruder change set to the same extruder.\n" +"This code won't be processed during G-code generation." +msgstr "" +"È presente un cambio estrusore impostato nello stesso estrusore.\n" +"Questo codice non verrà processato durante la generazione del G-code." + +#: src/libslic3r/GCode.cpp:604 +msgid "There is an object with no extrusions on the first layer." +msgstr "C'è un oggetto senza estrusioni sul primo layer." #: src/slic3r/GUI/UpdateDialogs.cpp:225 -#, possible-c-format +#, c-format msgid "This %s version: %s" msgstr "%s versione: %s" -#: src/slic3r/GUI/Tab.cpp:982 -msgid "This action is not revertable.\nDo you want to proceed?" -msgstr "Questa azione non è reversibile.\nVuoi continuare?" +#: src/slic3r/GUI/Tab.cpp:1244 +msgid "" +"This action is not revertable.\n" +"Do you want to proceed?" +msgstr "" +"Questa azione non è reversibile.\n" +"Vuoi continuare?" -#: src/libslic3r/PrintConfig.cpp:165 +#: src/libslic3r/PrintConfig.cpp:199 msgid "This code is inserted between objects when using sequential printing. By default extruder and bed temperature are reset using non-wait command; however if M104, M109, M140 or M190 are detected in this custom code, Slic3r will not add temperature commands. Note that you can use placeholder variables for all Slic3r settings, so you can put a \"M109 S[first_layer_temperature]\" command wherever you want." msgstr "Questo codice è inserito tra gli oggetti quando si utilizza una stampa sequenziale. Come predefinito, la temperatura di estrusione e del piano sono resettate con il comando non-attesa; in ogni caso se nel codice personalizzato vengono rilevati i comandi M104,M109,M140 o M190, Slic3r non aggiungerà i comandi di temperatura. Si fa presente che puoi usare variabili sostitutive per tutte le impostazioni di Slic3r, quindi puoi inserire un comando \"M109 S[first_layer_temperature]\" quando preferisci." -#: src/libslic3r/PrintConfig.cpp:1081 +#: src/libslic3r/PrintConfig.cpp:1174 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 use placeholder variables for all Slic3r settings as well as [layer_num] and [layer_z]." msgstr "Questo codice personalizzato è inserito ad ogni cambio layer, subito dopo il movimento Z e prima che l'estrusore si sposti al punto del primo layer. Si fa presente che puoi usare variabili sostitutive per tutte le impostazioni di Slic3r sia per [layer_num] che per [layer_z]." -#: src/libslic3r/PrintConfig.cpp:154 +#: src/libslic3r/PrintConfig.cpp:188 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 "Questo codice personalizzato è inserito ad ogni cambio layer, subito prima del movimento Z. Si fa presente che puoi usare variabili sostitutive per tutte le impostazioni di Slic3r sia per [layer_num] che per [layer_z]." -#: src/libslic3r/PrintConfig.cpp:2094 +#: src/libslic3r/PrintConfig.cpp:2237 msgid "This custom code is inserted before every toolchange. Placeholder variables for all PrusaSlicer settings as well as {previous_extruder} and {next_extruder} can be used. When a tool-changing command which changes to the correct extruder is included (such as T{next_extruder}), PrusaSlicer will emit no other such command. It is therefore possible to script custom behaviour both before and after the toolchange." msgstr "Questo codice personalizzato è inserito prima di ogni cambio attrezzo. Possono essere usate delle variabili segnaposto per tutte le impostazioni di PrusaSlicer come {previous_extruder} e {next_extruder}. Quando viene incluso un comando di cambio attrezzo che cambia all'estrusore corretto (come T{next_extruder}), PrusaSlicer non emetterà altri comandi simili. È per tanto possibile elaborare un comportamento personalizzato sia prima che dopo il cambio attrezzo." -#: src/libslic3r/PrintConfig.cpp:396 +#: src/libslic3r/PrintConfig.cpp:430 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 multimaterial printers). Note that you can use placeholder variables for all PrusaSlicer settings. If you have multiple extruders, the gcode is processed in extruder order." msgstr "Questa procedura finale è inserita alla fine del file di output, prima che la stampante completi il gcode (e prima di qualunque cambio attrezzo da questo filamento in caso di stampanti multi-material). Da notare che è possibile inserire variabili segnaposto per tutte le impostazioni di PrusaSlicer. Se hai estrusori multipli, il gcode è processato nell'ordine degli estrusori." -#: src/libslic3r/PrintConfig.cpp:386 +#: src/libslic3r/PrintConfig.cpp:420 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 "Questa procedura finale è inserita alla fine del file di output. Da notare che è possibile usare variabili segnaposto per tutte le impostazioni di PrusaSlicer." -#: src/libslic3r/PrintConfig.cpp:1258 src/libslic3r/PrintConfig.cpp:1269 +#: src/libslic3r/PrintConfig.cpp:1366 src/libslic3r/PrintConfig.cpp:1377 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 of 1.8 mm³/s (0.45mm extrusion width, 0.2mm extrusion height, feedrate 20 mm/s) to 5.4 mm³/s (feedrate 60 mm/s) will take at least 2 seconds." msgstr "Questa impostazione sperimentale è utilizzata per limitare la velocità del cambio nel fattore di estrusione. Un valore di 1.8 mm³/s² assicura che un cambio dal fattore di estrusione di 1.8 mm³/s (larghezza estrusione 0.45mm, altezza estrusione di 0.2mm, avanzamento 20 mm/s) a 5.4 mm³/s (avanzamento a 60 mm/s) impiegherà almeno 2 secondi." -#: src/libslic3r/PrintConfig.cpp:1248 +#: src/libslic3r/PrintConfig.cpp:1356 msgid "This experimental setting is used to set the maximum volumetric speed your extruder supports." msgstr "Questa impostazione sperimentale è utilizzata per impostare la massima velocità volumetrica supportata dal tuo estrusore." -#: src/libslic3r/PrintConfig.cpp:2162 +#: src/libslic3r/PrintConfig.cpp:2305 msgid "This experimental setting uses G10 and G11 commands to have the firmware handle the retraction. This is only supported in recent Marlin." msgstr "Questa funziona sperimentale utilizza i comandi G10 e G11 per permettere al firmware la gestione della retrazione. È supportata solo nel Marlin recente." -#: src/libslic3r/PrintConfig.cpp:2176 +#: src/libslic3r/PrintConfig.cpp:2319 msgid "This experimental setting uses outputs the E values in cubic millimeters instead of linear millimeters. If your firmware doesn't already know filament diameter(s), you can put commands like 'M200 D[filament_diameter_0] T0' in your start G-code in order to turn volumetric mode on and use the filament diameter associated to the filament selected in Slic3r. This is only supported in recent Marlin." msgstr "Questa impostazione sperimentale produce un valore in uscita di E in millimetri cubici anziché in millimetri lineari. Se il tuo firmware non sa ancora qual'è il diametro del filamento, puoi inserire un comando tipo 'M200 D[filament_diameter_0] T0' nel tuo G-code iniziale in modo da attivare la funzione volumetrica e usare il diametro associato al filamento selezionato su Slic3r. Questa funziona è supportata solo nel Marlin più recente." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3972 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4459 msgid "This extruder will be set for selected items" msgstr "L'estrusore sarà impostato per gli elementi selezionati" -#: src/libslic3r/PrintConfig.cpp:224 +#: 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 "Questo valore influenza la quantità di plastica per il bridging. Puoi diminuirlo leggermente per tendere il materiale estruso ed evitare che si afflosci, sebbene le impostazioni predefinite sono generalmente buone ed è consigliabile sperimentare con il raffreddamento (usare la ventola) prima di modificare questo valore." -#: src/libslic3r/PrintConfig.cpp:546 +#: 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 "Questo valore modifica proporzionalmente il valore del flusso. Dovrai modificare questa impostazione per ottenere una buona finitura superficiale e correggere la larghezza delle pareti singole. Normalmente i valori sono tra 0.9 e 1.1. Se ritieni di dover modificare questo valore ulteriormente, controlla il diametro del filamento e i passi E del tuo firmware." -#: src/libslic3r/PrintConfig.cpp:214 +#: src/libslic3r/PrintConfig.cpp:248 msgid "This fan speed is enforced during all bridges and overhangs." msgstr "Questa velocità della ventola verrà forzata durante tutti i bridge e overhang." -#: src/libslic3r/PrintConfig.cpp:992 +#: src/libslic3r/PrintConfig.cpp:1036 msgid "This feature allows to combine infill and speed up your print by extruding thicker infill layers while preserving thin perimeters, thus accuracy." msgstr "Questa funzione permette di combinare il riempimento e velocizza il tempo di stampa estrudendo layer di infill più spessi conservando tuttavia i perimetri sottili, e quindi l'accuratezza." -#: src/libslic3r/PrintConfig.cpp:1746 +#: src/libslic3r/PrintConfig.cpp:1861 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:1795 +#: 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/slic3r/GUI/Plater.cpp:2367 +#: 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 "Non è possibile caricare questo file in modalità semplice. Si desidera passare alla modalità avanzata?" -#: src/slic3r/GUI/Plater.cpp:2357 -msgid "This file contains several objects positioned at multiple heights.\nInstead of considering them as multiple objects, should I consider\nthis file as a single object having multiple parts?" -msgstr "Questo file contiene numerosi oggetti posizionati ad altezze multiple. Invece di considerarli come oggetti multipli, devo considerare \nquesto file come un oggetto singolo con parti multiple?" +#: src/slic3r/GUI/Plater.cpp:2319 +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 "" +"Questo file contiene numerosi oggetti posizionati ad altezze multiple. Invece di considerarli come oggetti multipli, devo considerare \n" +"questo file come un oggetto singolo con parti multiple?" #: src/slic3r/GUI/FirmwareDialog.cpp:332 -#, possible-c-format -msgid "This firmware hex file does not match the printer model.\nThe hex file is intended for: %s\nPrinter reported: %s\n\nDo you want to continue and flash this hex file anyway?\nPlease only continue if you are sure this is the right thing to do." -msgstr "Questo file hex di firmware non è corretto per il modello della stampante. \nIl file hex è per: %s\nLa stampante è: %s\n\nVuoi continuare ed installare il firmware comunque?\nContinua solo se sei certo che sia la cosa giusta da fare." +#, c-format +msgid "" +"This firmware hex file does not match the printer model.\n" +"The hex file is intended for: %s\n" +"Printer reported: %s\n" +"\n" +"Do you want to continue and flash this hex file anyway?\n" +"Please only continue if you are sure this is the right thing to do." +msgstr "" +"Questo file hex di firmware non è corretto per il modello della stampante. \n" +"Il file hex è per: %s\n" +"La stampante è: %s\n" +"\n" +"Vuoi continuare ed installare il firmware comunque?\n" +"Continua solo se sei certo che sia la cosa giusta da fare." -#: src/libslic3r/PrintConfig.cpp:314 +#: src/libslic3r/PrintConfig.cpp:348 msgid "This flag enables the automatic cooling logic that adjusts print speed and fan speed according to layer printing time." msgstr "Questa funzione abilita il raffreddamento automatico che regola la velocità di stampa e la velocità della ventola in base al tempo di stampa del layer." -#: src/slic3r/GUI/Plater.cpp:536 +#: src/slic3r/GUI/Plater.cpp:402 msgid "This flag enables the brim that will be printed around each object on the first layer." msgstr "La spunta su questa opzione abilita il brim che verrà stampato attorno ad ogni oggetto nel primo layer." -#: src/libslic3r/PrintConfig.cpp:1538 +#: src/libslic3r/PrintConfig.cpp:1646 msgid "This flag enforces a retraction whenever a Z move is done." msgstr "Questo contrassegno forza una retrazione ogni volta che viene effettuato un movimento di Z." -#: src/libslic3r/PrintConfig.cpp:2194 +#: src/libslic3r/PrintConfig.cpp:2337 msgid "This flag will move the nozzle while retracting to minimize the possible blob on leaky extruders." msgstr "Questo contrassegno farà spostare l'ugello durante la retrazione in modo da minimizzare il possibile grumo con estrusori che trasudano." -#: src/slic3r/GUI/Tab.cpp:953 +#: src/libslic3r/PrintConfig.cpp:1961 +msgid "This G-code will be used as a code for the color change" +msgstr "Questo G-code verrà utilizzato come codice per il cambio colore" + +#: src/libslic3r/PrintConfig.cpp:1970 +msgid "This G-code will be used as a code for the pause print" +msgstr "Questo G-code sarà usato come codice per la pausa di stampa" + +#: src/libslic3r/PrintConfig.cpp:1979 +msgid "This G-code will be used as a custom code" +msgstr "Questo G-code verrà utilizzato come codice personalizzato" + +#: src/slic3r/GUI/Tab.cpp:1272 msgid "This is a default preset." msgstr "Questo è un preset predefinito." -#: src/libslic3r/PrintConfig.cpp:2766 +#: src/libslic3r/PrintConfig.cpp:2930 msgid "This is a relative measure of support points density." msgstr "Questa è una misura relativa della densità dei punti di supporto." -#: src/slic3r/GUI/Tab.cpp:2338 +#: src/slic3r/GUI/Tab.cpp:2507 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 "Questa è una stampante multi-material ad estrusore singolo, i diametri di tutti gli estrusori verranno impostati al nuovo valore. Vuoi continuare?" -#: src/slic3r/GUI/Tab.cpp:955 +#: src/slic3r/GUI/Tab.cpp:1274 msgid "This is a system preset." msgstr "Questo è un preset di sistema." -#: src/libslic3r/PrintConfig.cpp:523 src/libslic3r/PrintConfig.cpp:583 +#: src/libslic3r/PrintConfig.cpp:559 src/libslic3r/PrintConfig.cpp:619 msgid "This is only used in the Slic3r interface as a visual help." msgstr "Utilizzato solo nell'interfaccia di Slic3r come aiuto visivo." -#: src/libslic3r/PrintConfig.cpp:336 +#: src/libslic3r/PrintConfig.cpp:370 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 "Questa è l'accelerazione a cui la stampante sarà reimpostata dopo aver utilizzato un valore di accelerazione per un ruolo specifico (perimetro/riempimento). Imposta a zero per evitare del tutto la reimpostazione dell'accelerazione." -#: src/libslic3r/PrintConfig.cpp:194 +#: src/libslic3r/PrintConfig.cpp:228 msgid "This is the acceleration your printer will use for bridges. Set zero to disable acceleration control for bridges." msgstr "Questa è l'accelerazione che la tua stampante utilizzerà per i bridge. Impostala a zero per disattivare il controllo dell'accelerazione per i bridge." -#: src/libslic3r/PrintConfig.cpp:860 +#: src/libslic3r/PrintConfig.cpp:900 msgid "This is the acceleration your printer will use for first layer. Set zero to disable acceleration control for first layer." msgstr "Questa è l'accelerazione che la stampante utilizzerà per il primo layer. Imposta a zero per disattivare il controllo dell'accelerazione per il primo layer." -#: src/libslic3r/PrintConfig.cpp:982 +#: src/libslic3r/PrintConfig.cpp:1026 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:1400 +#: 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:1327 +#: src/libslic3r/PrintConfig.cpp:1435 msgid "This is the diameter of your extruder nozzle (for example: 0.5, 0.35 etc.)" msgstr "Questo è il diametro dell'ugello dell'estrusore (per esempio: 0.5, 0.35 ecc.)" -#: src/libslic3r/PrintConfig.cpp:1227 -#, no-c-format +#: src/libslic3r/PrintConfig.cpp:1335 +#, c-format msgid "This is the highest printable layer height for this extruder, used to cap the variable layer height and support layer height. Maximum recommended layer height is 75% of the extrusion width to achieve reasonable inter-layer adhesion. If set to 0, layer height is limited to 75% of the nozzle diameter." msgstr "Questa è la massima altezza layer stampabile per questo estrusore, usata come limite per l'altezza variabile dei layer e l'altezza dei layer di supporto. L'altezza layer massima raccomandata è il 75% della larghezza di estrusione, in modo da ottenere una buona adesione tra i layer. Se impostato a 0, l'altezza layer è limitata al 75% del diametro dell'ugello." -#: src/libslic3r/PrintConfig.cpp:1290 +#: src/libslic3r/PrintConfig.cpp:1398 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 "Questa è l'altezza minima stampabile per questo estrusore e limita la risoluzione per l'altezza variabile dei layer. Valori tipici sono compresi tra 0.05 mm e 0.1 mm." -#: src/libslic3r/GCode.cpp:639 +#: src/libslic3r/GCode.cpp:624 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 "Questo solitamente è causato da estrusioni molto piccole o da un modello difettoso. Provare a riparare il modello o cambiare il suo orientamento sul piano." -#: src/libslic3r/PrintConfig.cpp:2215 +#: src/libslic3r/PrintConfig.cpp:2358 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 "Questa matrice descrive il volume (in millimetri cubici) necessario per spurgare il filamento nella torre di spurgo per una qualunque coppia di attrezzi." -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:878 -msgid "This operation is irreversible.\nDo you want to proceed?" -msgstr "Questa operazione è irreversibile.\nVuoi continuare?" +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:928 +msgid "" +"This operation is irreversible.\n" +"Do you want to proceed?" +msgstr "" +"Questa operazione è irreversibile.\n" +"Vuoi continuare?" -#: src/libslic3r/PrintConfig.cpp:1442 +#: src/libslic3r/PrintConfig.cpp:1550 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 surfaces which benefit from a higher number of perimeters if the Extra Perimeters option is enabled." msgstr "Questa opzione imposta il numero di perimetri da generare per ogni layer. Da notare che Slic3r aumenta questo numero automaticamente quando rileva superfici inclinate che potrebbero beneficiare di un aumento del numero dei perimetri se l'opzione Perimetri aggiuntivi è attiva." -#: src/libslic3r/PrintConfig.cpp:1356 +#: src/libslic3r/PrintConfig.cpp:1464 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 "Questa opzione abbasserà la temperatura degli estrusori inattivi per prevenire oozing (trasudazione). Attiverà automaticamente uno skirt alto e muoverà l'estrusore al di fuori di questo skirt al cambiamento di temperature." -#: src/libslic3r/PrintConfig.cpp:1029 +#: src/libslic3r/PrintConfig.cpp:1073 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 "Questa opzione limiterà il riempimento alle aree che effettivamente hanno bisogno di un supporto per i soffitti (si comporterà come un materiale di supporto interno). Se attivato, rallenterà la generazione del G-code a causa dei molteplici controlli necessari." -#: src/libslic3r/PrintConfig.cpp:1022 +#: src/libslic3r/PrintConfig.cpp:1066 msgid "This option will switch the print order of perimeters and infill, making the latter first." msgstr "Questa opzione sostituirà l'ordine di stampa dei perimetri e del riempimento, realizzando per primo il secondo." -#: src/libslic3r/PrintConfig.cpp:459 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:85 +msgid "This printer will be shown in the presets list as" +msgstr "La stampante verrà mostrata nell'elenco dei preset come" + +#: src/libslic3r/PrintConfig.cpp:495 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 "Questa impostazione separata avrà effetto sulla velocità dei perimetri esterni (quelli visibili). Se espresso in percentuale (per esempio: 80%) verrà calcolato sull'impostazione della velocità dei perimetri qui sopra. Imposta a zero per automatico." -#: src/libslic3r/PrintConfig.cpp:1717 +#: src/libslic3r/PrintConfig.cpp:1832 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 "Questa impostazione separata influenzerà la velocità dei perimetri con raggio <=6.5mm (solitamente i buchi). Se espresso in percentuale (per esempio: 80%) sarà calcolato sulla velocità dei perimetri qui sopra. Imposta a zero per automatico." -#: src/libslic3r/PrintConfig.cpp:1038 +#: src/libslic3r/PrintConfig.cpp:1082 msgid "This setting applies an additional overlap between infill and perimeters for better bonding. Theoretically this shouldn't be needed, but backlash might cause gaps. If expressed as percentage (example: 15%) it is calculated over perimeter extrusion width." msgstr "Questa impostazione applica una sovrapposizione aggiuntiva tra perimetri e riempimento per una migliore unione. Teoricamente non sarebbe necessario, ma i contraccolpi possono causare spazi vuoi. Se espresso in percentuale (per esempio: 15%) viene calcolato sulla larghezza d'estrusione del perimetro." @@ -7981,167 +9416,202 @@ msgstr "Questa impostazione applica una sovrapposizione aggiuntiva tra perimetri 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 "Questa impostazione controlla l'altezza (e quindi il numero totale) degli strati/layer. Un layer più sottile sarà più preciso ma sarà necessario più tempo per stampare." -#: src/libslic3r/PrintConfig.cpp:1218 +#: src/libslic3r/PrintConfig.cpp:1326 msgid "This setting represents the maximum speed of your fan." msgstr "Questa impostazione rappresenta la velocità massima della ventola." -#: src/libslic3r/PrintConfig.cpp:1281 +#: src/libslic3r/PrintConfig.cpp:1389 msgid "This setting represents the minimum PWM your fan needs to work." msgstr "Questa impostazione rappresenta la PWM minima (modulazione di larghezza di impulso) che la ventola necessita per lavorare." -#: src/libslic3r/PrintConfig.cpp:1829 +#: src/libslic3r/PrintConfig.cpp:1944 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 printers). This is used to override settings for a specific filament. If PrusaSlicer detects M104, M109, M140 or M190 in your custom codes, such commands will not be prepended automatically so you're free to customize the order of heating commands and other custom actions. Note that you can use placeholder variables for all PrusaSlicer settings, so you can put a \"M109 S[first_layer_temperature]\" command wherever you want. If you have multiple extruders, the gcode is processed in extruder order." msgstr "Questa procedura di inizio è inserita all'inizio, dopo un qualsiasi gcode iniziale (e dopo un qualunque cambio attrezzo per questo filamento nel caso di stampanti multi-material). Viene utilizzato per scavalcare le impostazioni per un filamento specifico. Se PrusaSlicer rileva M104, M109, M140 o M190 nei codici personalizzati, questi comandi non vengono anteposti automaticamente così si è liberi di personalizzare liberamente l'ordine dei comandi di riscaldamento e altre azioni personalizzate. Da notare che è possibile utilizzare delle variabili segnaposto per tutte le impostazioni di PrusaSlicer, così è possibile inserire un comando \"M109 S[first_layer_temperature]\" ovunque lo si desideri. Se hai estrusori multipli, il gcode è processato nell'ordine degli estrusori." -#: src/libslic3r/PrintConfig.cpp:1814 +#: src/libslic3r/PrintConfig.cpp:1929 msgid "This start procedure is inserted at the beginning, after bed has reached the target temperature and extruder just started heating, and before extruder has finished heating. If PrusaSlicer detects M104 or M190 in your custom codes, such commands will not be prepended automatically so you're free to customize the order of heating commands and other custom actions. Note that you can use placeholder variables for all PrusaSlicer settings, so you can put a \"M109 S[first_layer_temperature]\" command wherever you want." msgstr "Questa procedura di inizio è inserita all'inizio, dopo che il piano ha raggiunto la temperatura impostata e appena l'estrusore inizia il riscaldamento, e prima che l'estrusore completi il riscaldamento. Se PrusaSlicer rileva M104 o M190 nel tuo codice personalizzato, questi comandi non vengono anteposti automaticamente così si è liberi di personalizzare l'ordine dei comandi di riscaldamento e altre azioni personalizzate. Da notare che è possibile utilizzare delle variabili segnaposto per tutte le impostazioni di PrusaSlicer, così è possibile inserire un comando \"M109 S[first_layer_temperature]\" ovunque si desideri." -#: src/libslic3r/PrintConfig.cpp:695 +#: src/libslic3r/PrintConfig.cpp:731 msgid "This string is edited by RammingDialog and contains ramming specific parameters." msgstr "Questa stringa viene controllata da RammingDialog e contiene parametri specifici del ramming." -#: src/libslic3r/PrintConfig.cpp:2286 +#: src/libslic3r/PrintConfig.cpp:2429 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 example, if your endstop zero actually leaves the nozzle 0.3mm far from the print bed, set this to -0.3 (or fix your endstop)." msgstr "Questo valore sarà aggiunto (o sottratto) da tutte le coordinate Z nel G-code di output. Viene utilizzato per compensare una posizione di finecorsa Z errata: per esempio, se la posizione minima del finecorsa rimane in realtà 0.3mm lontano dal piano, imposta questo valore a -0.3 (o sistema il finecorsa)." -#: src/libslic3r/PrintConfig.cpp:2208 +#: src/libslic3r/PrintConfig.cpp:2351 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 "Questo vettore salva il volume necessario per cambiare da/a ogni attrezzo usato per la torre di spurgo. Questi valori vengono usati per semplificare la creazione dei volumi di spurgo completi." #: src/slic3r/GUI/UpdateDialogs.cpp:216 -#, possible-c-format -msgid "This version of %s is not compatible with currently installed configuration bundles.\nThis probably happened as a result of running an older %s after using a newer one.\n\nYou may either exit %s and try again with a newer version, or you may re-run the initial configuration. Doing so will create a backup snapshot of the existing configuration before installing files compatible with this %s." -msgstr "Questa versione di %s non è compatibile con gli attuali gruppi di configurazioni installati.\nProbabilmente è causato dall'esecuzione di una vecchia versione di %s dopo averne utilizzata una più recente.\n\nProva a chiudere %s e riprovare con una versione più recente, o prova ad effettuare nuovamente la configurazione iniziale. Così facendo creerai un'istantanea di backup della configurazione esistente prima di istallare i file compatibili con questo %s." +#, c-format +msgid "" +"This version of %s is not compatible with currently installed configuration bundles.\n" +"This probably happened as a result of running an older %s after using a newer one.\n" +"\n" +"You may either exit %s and try again with a newer version, or you may re-run the initial configuration. Doing so will create a backup snapshot of the existing configuration before installing files compatible with this %s." +msgstr "" +"Questa versione di %s non è compatibile con gli attuali gruppi di configurazioni installati.\n" +"Probabilmente è causato dall'esecuzione di una vecchia versione di %s dopo averne utilizzata una più recente.\n" +"\n" +"Prova a chiudere %s e riprovare con una versione più recente, o prova ad effettuare nuovamente la configurazione iniziale. Così facendo creerai un'istantanea di backup della configurazione esistente prima di istallare i file compatibili con questo %s." -#: src/libslic3r/PrintConfig.cpp:2458 +#: src/libslic3r/PrintConfig.cpp:2601 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 "Questo applicherà una correzione gamma ai poligoni 2D rasterizzati. Un valore gamma di zero comporta una calcolo della soglia nel mezzo. Questo comportamento elimina l'antialiasing senza perdere i fori nei poligoni." -#: src/libslic3r/PrintConfig.cpp:2081 +#: src/libslic3r/PrintConfig.cpp:2224 msgid "Threads" msgstr "Thread" -#: src/libslic3r/PrintConfig.cpp:2082 +#: src/libslic3r/PrintConfig.cpp:2225 msgid "Threads are used to parallelize long-running tasks. Optimal threads number is slightly above the number of available cores/processors." msgstr "I thread sono utilizzati per parallelizzare operazioni di lunga durata. Il numero di thread ottimali è leggermente superiore al numero di core / processori disponibili." -#: src/slic3r/GUI/Tab.cpp:2093 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:235 +msgid "Threshold:" +msgstr "Soglia:" + +#: src/slic3r/GUI/Tab.cpp:2263 msgid "Tilt" msgstr "Inclina" -#: src/slic3r/GUI/Tab.cpp:2094 +#: src/slic3r/GUI/Tab.cpp:2264 msgid "Tilt time" msgstr "Tempo di tilt" +#: src/slic3r/GUI/GCodeViewer.cpp:2225 src/slic3r/GUI/GCodeViewer.cpp:2233 #: src/slic3r/GUI/RammingChart.cpp:76 msgid "Time" msgstr "Tempo" -#: src/libslic3r/PrintConfig.cpp:687 +#: src/libslic3r/PrintConfig.cpp:723 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 "Tempo per il firmware della stampante (o per l'unità Multi Material 2.0) per il caricamento del nuovo filamento durante il cambio attrezzo (quando viene eseguito il T code). Questa durata viene aggiunta alla stima del tempo totale di stampa del G-code." -#: src/libslic3r/PrintConfig.cpp:702 +#: src/libslic3r/PrintConfig.cpp:738 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 "Tempo per il firmware della stampante (o per l'unità Multi Material 2.0) per lo scaricamento del nuovo filamento durante il cambio attrezzo (quando viene eseguito il T code). Questa durata viene aggiunta alla stima del tempo totale di stampa del G-code." -#: src/libslic3r/PrintConfig.cpp:2407 +#: src/libslic3r/PrintConfig.cpp:2550 msgid "Time of the fast tilt" msgstr "Tempo di inclinazione veloce" -#: src/libslic3r/PrintConfig.cpp:2416 +#: src/libslic3r/PrintConfig.cpp:2559 msgid "Time of the slow tilt" msgstr "Tempo di inclinazione lenta" -#: src/libslic3r/PrintConfig.cpp:641 +#: src/libslic3r/PrintConfig.cpp:677 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 "Tempo di attesa dopo lo scarico del filamento. Può aiutare ad ottenere cambi affidabili con materiali flessibili che potrebbero richiedere più tempo per tornare alle dimensioni originali." -#: src/slic3r/GUI/Tab.cpp:966 +#: src/slic3r/GUI/GCodeViewer.cpp:2197 +msgid "to" +msgstr "a" + +#: src/slic3r/GUI/Tab.cpp:1284 msgid "To do that please specify a new name for the preset." msgstr "Per favore specifica un nuovo nome per il preset per effettuare l'operazione." -#: src/slic3r/GUI/Plater.cpp:4014 +#: src/slic3r/GUI/Plater.cpp:3934 msgid "To objects" msgstr "In oggetti" -#: src/slic3r/GUI/Plater.cpp:4016 +#: src/slic3r/GUI/Plater.cpp:3936 msgid "To parts" msgstr "In parti" -#: src/slic3r/GUI/Tab.cpp:1756 +#: src/slic3r/Utils/Http.cpp:82 +msgid "To specify the system certificate store manually, please set the %1% environment variable to the correct CA bundle and restart the application." +msgstr "Per specificare manualmente l'archivio dei certificati di sistema, impostare la variabile di ambiente %1% sul pacchetto CA corretto e riavviare l'applicazione." + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:360 msgid "To use a custom CA file, please import your CA file into Certificate Store / Keychain." msgstr "Per utilizzare un file CA personalizzato, importa il tuo file CA sul Certificate Store / Keychain." -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:263 -#, possible-c-format +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:271 +#, c-format msgid "Toggle %c axis mirroring" msgstr "Attiva / disattiva il mirroring dell'asse %c" -#: src/libslic3r/Zipper.cpp:34 +#: src/libslic3r/miniz_extension.cpp:93 msgid "too many files" msgstr "troppi file" -#: src/libslic3r/SLAPrintSteps.cpp:190 -msgid "Too much overlapping holes." +#: src/libslic3r/SLAPrintSteps.cpp:192 +msgid "Too many overlapping holes." msgstr "Troppi fori sovrapposti." -#: src/slic3r/GUI/GUI_Preview.cpp:227 src/slic3r/GUI/GUI_Preview.cpp:335 -#: src/slic3r/GUI/GUI_Preview.cpp:519 src/slic3r/GUI/GUI_Preview.cpp:574 -#: src/slic3r/GUI/GUI_Preview.cpp:835 src/libslic3r/GCode/PreviewData.cpp:357 +#: src/slic3r/GUI/GCodeViewer.cpp:2241 src/slic3r/GUI/GUI_Preview.cpp:281 +#: src/slic3r/GUI/GUI_Preview.cpp:453 src/slic3r/GUI/GUI_Preview.cpp:693 +#: src/slic3r/GUI/GUI_Preview.cpp:786 src/slic3r/GUI/GUI_Preview.cpp:1270 +#: src/libslic3r/GCode/PreviewData.cpp:362 msgid "Tool" msgstr "Attrezzo" #: src/slic3r/GUI/WipeTowerDialog.cpp:276 msgid "Tool #" -msgstr "Utensile #" +msgstr "Attrezzo #" -#: src/slic3r/GUI/Tab.cpp:2000 src/libslic3r/PrintConfig.cpp:2093 +#: src/slic3r/GUI/Tab.cpp:2189 src/libslic3r/PrintConfig.cpp:2236 msgid "Tool change G-code" msgstr "G-code cambio attrezzo" -#: src/slic3r/GUI/Tab.cpp:1491 +#: src/slic3r/GUI/GCodeViewer.cpp:2530 src/slic3r/GUI/GUI_Preview.cpp:1474 +msgid "Tool changes" +msgstr "Cambi attrezzo" + +#: src/slic3r/GUI/GUI_Preview.cpp:1479 +msgid "Tool marker" +msgstr "Indicatore attrezzo" + +#: src/slic3r/GUI/GCodeViewer.cpp:223 +msgid "Tool position" +msgstr "Posizione attrezzo" + +#: src/slic3r/GUI/Tab.cpp:1837 msgid "Toolchange parameters with single extruder MM printers" msgstr "Parametri di cambio attrezzo per stampanti MM con estrusore singolo" #. 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:662 src/libslic3r/PrintConfig.cpp:2132 -#: src/libslic3r/PrintConfig.cpp:2141 +#: src/slic3r/GUI/MainFrame.cpp:959 src/slic3r/GUI/MainFrame.cpp:1279 +#: src/libslic3r/PrintConfig.cpp:2275 src/libslic3r/PrintConfig.cpp:2284 msgid "Top" msgstr "Superiore" -#: src/slic3r/GUI/PresetHints.cpp:304 +#: src/slic3r/GUI/PresetHints.cpp:302 msgid "Top / bottom shell thickness hint: Not available due to invalid layer height." msgstr "Suggerimento per lo spessore del guscio Superiore / Inferiore: non disponibile a causa di un'altezza dello strato non valida." -#: src/libslic3r/PrintConfig.cpp:415 +#: src/libslic3r/PrintConfig.cpp:449 msgid "Top fill pattern" msgstr "Trama riempimento superiore" -#: src/slic3r/GUI/PresetHints.cpp:323 +#: src/slic3r/GUI/PresetHints.cpp:321 msgid "Top is open." msgstr "La parte superiore è aperta." -#: src/slic3r/GUI/PresetHints.cpp:317 +#: src/slic3r/GUI/PresetHints.cpp:315 msgid "Top shell is %1% mm thick for layer height %2% mm." msgstr "Il guscio superiore è spesso %1% mm per l'altezza layer %2% mm." -#: src/slic3r/GUI/PresetHints.cpp:192 +#: src/slic3r/GUI/PresetHints.cpp:191 msgid "top solid infill" msgstr "riempimento solido superiore" -#: src/slic3r/GUI/GUI_Preview.cpp:242 src/libslic3r/ExtrusionEntity.cpp:315 -#: src/libslic3r/PrintConfig.cpp:2105 src/libslic3r/PrintConfig.cpp:2117 +#: src/slic3r/GUI/GUI_Preview.cpp:306 src/libslic3r/ExtrusionEntity.cpp:319 +#: src/libslic3r/ExtrusionEntity.cpp:346 src/libslic3r/PrintConfig.cpp:2248 +#: src/libslic3r/PrintConfig.cpp:2260 msgid "Top solid infill" msgstr "Riempimento solido superiore" -#: src/libslic3r/PrintConfig.cpp:2135 +#: src/libslic3r/PrintConfig.cpp:2278 msgid "Top solid layers" msgstr "Layer solidi superiori" -#: src/slic3r/GUI/MainFrame.cpp:662 +#: src/slic3r/GUI/MainFrame.cpp:959 src/slic3r/GUI/MainFrame.cpp:1279 msgid "Top View" msgstr "Vista superiore" @@ -8157,148 +9627,179 @@ msgstr "Volume totale di ramming" msgid "Total ramming time" msgstr "Durata totale di ramming" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:516 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:640 +msgid "Transfer" +msgstr "Trasferisci" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:745 +msgid "Transfer the selected options to the newly selected preset \"%1%\"." +msgstr "Trasferire le opzioni selezionate nel nuovo preset selezionato \"%1%\"." + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:740 +msgid "Transfer the selected settings to the newly selected preset." +msgstr "Trasferisci le impostazioni selezionate nel nuovo preset selezionato." + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:561 msgid "Translate" msgstr "Traduci" -#: src/slic3r/GUI/Mouse3DController.cpp:300 -#: src/slic3r/GUI/Mouse3DController.cpp:317 +#: src/slic3r/GUI/Mouse3DController.cpp:282 +#: src/slic3r/GUI/Mouse3DController.cpp:303 msgid "Translation" msgstr "Traduzione" -#: src/slic3r/GUI/GUI_Preview.cpp:253 src/libslic3r/PrintConfig.cpp:2152 +#: src/slic3r/GUI/GCodeViewer.cpp:2489 src/slic3r/GUI/GUI_Preview.cpp:335 +#: src/slic3r/GUI/GUI_Preview.cpp:1471 src/libslic3r/PrintConfig.cpp:2295 msgid "Travel" msgstr "Spostamento" -#: src/libslic3r/PrintConfig.cpp:845 +#: src/libslic3r/PrintConfig.cpp:883 msgid "Triangles" msgstr "Triangoli" -#: src/libslic3r/PrintConfig.cpp:3448 +#: src/libslic3r/PrintConfig.cpp:3647 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 "Prova a riparare mesh non-manifold (questa opzione viene aggiunta implicitamente ogni volta che effettuiamo uno slice sul modello per effettuare l'azione richiesta)." -#: src/libslic3r/PrintConfig.cpp:1467 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:165 +msgid "Type here the name of your printer device" +msgstr "Inserisci qui il nome della tua stampante" + +#: src/libslic3r/PrintConfig.cpp:1575 msgid "Type of the printer." msgstr "Tipologia stampante." -#: src/slic3r/GUI/ConfigWizard.cpp:2013 src/slic3r/GUI/GUI_ObjectList.cpp:3553 +#: src/slic3r/GUI/ConfigWizard.cpp:2524 src/slic3r/GUI/ConfigWizard.cpp:2526 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4016 msgid "Type:" msgstr "Tipo:" -#: src/slic3r/GUI/Plater.cpp:3428 +#: src/slic3r/GUI/OpenGLManager.cpp:275 +#, c-format +msgid "" +"Unable to load the following shaders:\n" +"%s" +msgstr "" +"Impossibile caricare i seguenti shader:\n" +"%s" + +#: src/slic3r/GUI/Plater.cpp:3233 msgid "Unable to reload:" msgstr "Impossibile ricaricare:" -#: src/libslic3r/Zipper.cpp:32 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:137 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:146 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:845 +msgid "Undef" +msgstr "Undef" + +#: src/libslic3r/miniz_extension.cpp:91 msgid "undefined error" msgstr "errore non definito" -#: src/slic3r/GUI/GLCanvas3D.cpp:4624 src/slic3r/GUI/KBShortcutsDialog.cpp:130 -#: src/slic3r/GUI/MainFrame.cpp:581 +#: src/slic3r/GUI/GLCanvas3D.cpp:5028 src/slic3r/GUI/KBShortcutsDialog.cpp:125 +#: src/slic3r/GUI/MainFrame.cpp:1187 msgid "Undo" msgstr "Annulla" -#: src/slic3r/GUI/GLCanvas3D.cpp:4065 -#, possible-c-format +#: src/slic3r/GUI/GLCanvas3D.cpp:4382 +#, c-format msgid "Undo %1$d Action" msgid_plural "Undo %1$d Actions" msgstr[0] "Annulla %1$d Azione" msgstr[1] "Annulla %1$d Azioni" -#: src/slic3r/GUI/GLCanvas3D.cpp:4047 +#: src/slic3r/GUI/GLCanvas3D.cpp:4361 msgid "Undo History" -msgstr "Storia Annulla" +msgstr "Cronologia Annulla" -#: src/libslic3r/Zipper.cpp:56 +#: src/libslic3r/miniz_extension.cpp:115 msgid "unexpected decompressed size" msgstr "dimensione decompressa imprevista" #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:27 +#: src/slic3r/GUI/GUI_Preview.cpp:299 src/libslic3r/ExtrusionEntity.cpp:310 msgid "Unknown" msgstr "Sconosciuto" -#: src/slic3r/Utils/Duet.cpp:82 src/slic3r/Utils/Duet.cpp:137 -#: src/slic3r/Utils/FlashAir.cpp:119 src/slic3r/Utils/FlashAir.cpp:140 -#: src/slic3r/Utils/FlashAir.cpp:156 +#: src/slic3r/Utils/Duet.cpp:84 src/slic3r/Utils/Duet.cpp:139 +#: src/slic3r/Utils/FlashAir.cpp:122 src/slic3r/Utils/FlashAir.cpp:143 +#: src/slic3r/Utils/FlashAir.cpp:159 msgid "Unknown error occured" msgstr "Si è verificato un errore sconosciuto" +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:178 +msgid "Unknown error occured during exporting G-code." +msgstr "Si è verificato un errore sconosciuto durante l'esportazione del G-code." + #: src/slic3r/GUI/WipeTowerDialog.cpp:263 msgid "unloaded" msgstr "scaricato" -#: src/libslic3r/PrintConfig.cpp:623 +#: src/libslic3r/PrintConfig.cpp:659 msgid "Unloading speed" msgstr "Velocità di scaricamento" -#: src/libslic3r/PrintConfig.cpp:632 +#: src/libslic3r/PrintConfig.cpp:668 msgid "Unloading speed at the start" msgstr "Velocità iniziale di scaricamento" -#: src/slic3r/GUI/Tab.cpp:3256 +#: src/slic3r/GUI/Tab.cpp:3693 msgid "UNLOCKED LOCK" msgstr "LUCCHETTO APERTO" -#: src/slic3r/GUI/Tab.cpp:3282 -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.\nClick to reset all settings for current option group to the system (or default) values." -msgstr "L'icona del LUCCHETTO APERTO indica che alcune impostazioni sono state modificate e non sono uguali ai valori di sistema (o predefinite) per il gruppo di opzioni corrente.\nClicca qui per reimpostare tutte le impostazioni del gruppo corrente ai valori di sistema (o predefiniti)." +#: src/slic3r/GUI/Tab.cpp:3719 +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" +"Click to reset all settings for current option group to the system (or default) values." +msgstr "" +"L'icona del LUCCHETTO APERTO indica che alcune impostazioni sono state modificate e non sono uguali ai valori di sistema (o predefinite) per il gruppo di opzioni corrente.\n" +"Clicca qui per reimpostare tutte le impostazioni del gruppo corrente ai valori di sistema (o predefiniti)." -#: src/slic3r/GUI/Tab.cpp:3297 -msgid "UNLOCKED LOCK icon indicates that the value was changed and is not equal to the system (or default) value.\nClick to reset current value to the system (or default) value." +#: src/slic3r/GUI/Tab.cpp:3734 +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 "L'icona del LUCCHETTO APERTO indica che il valore è stato cambiato e non è uguale al valore di sistema (o predefinito). Clicca per reimpostare il valore corrente al valore di sistema (o predefinito)." -#: src/slic3r/GUI/Plater.cpp:5203 -#, possible-c-format -msgid "Unmounting successful. The device %s(%s) can now be safely removed from the computer." -msgstr "Espulsione riuscita. Il dispositivo %s(%s) adesso può essere rimosso in sicurezza dal computer." - -#: src/slic3r/GUI/GUI_Preview.cpp:255 -msgid "Unretractions" -msgstr "De-retrazioni" - -#: src/slic3r/GUI/Tab.cpp:2947 -msgid "Unsaved Changes" -msgstr "Modifiche non salvate" - -#: src/slic3r/GUI/GUI_App.cpp:935 -msgid "Unsaved Presets" -msgstr "Preset non salvati" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:179 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:173 msgid "Unselect gizmo or clear selection" msgstr "Deseleziona gizmo o pulisci selezione" -#: src/libslic3r/Zipper.cpp:60 +#: src/libslic3r/miniz_extension.cpp:119 msgid "unsupported central directory size" msgstr "dimensione della directory centrale non supportata" -#: src/libslic3r/Zipper.cpp:40 +#: src/libslic3r/miniz_extension.cpp:99 msgid "unsupported encryption" msgstr "criptaggio non supportato" -#: src/libslic3r/Zipper.cpp:42 +#: src/libslic3r/miniz_extension.cpp:101 msgid "unsupported feature" msgstr "caratteristica non supportata" -#: src/libslic3r/Zipper.cpp:38 +#: src/libslic3r/miniz_extension.cpp:97 msgid "unsupported method" msgstr "metodo non supportato" -#: src/libslic3r/Zipper.cpp:50 +#: src/libslic3r/miniz_extension.cpp:109 msgid "unsupported multidisk archive" msgstr "archivio multidisk non supportato" -#: src/slic3r/GUI/GLCanvas3DManager.cpp:292 +#: src/slic3r/GUI/OpenGLManager.cpp:267 msgid "Unsupported OpenGL version" msgstr "Versione OpenGL non supportata" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3420 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3883 msgid "Unsupported selection" msgstr "Selezione non supportata" -#: src/slic3r/GUI/GLCanvas3D.cpp:955 -#, possible-c-format +#: src/slic3r/GUI/GCodeViewer.cpp:2183 +msgid "up to" +msgstr "fino a" + +#: src/slic3r/GUI/GLCanvas3D.cpp:961 +#, c-format msgid "up to %.2f mm" msgstr "fino a %.2f mm" @@ -8306,15 +9807,15 @@ msgstr "fino a %.2f mm" msgid "Update available" msgstr "Aggiornamento disponibile" -#: src/slic3r/GUI/ConfigWizard.cpp:779 src/slic3r/GUI/Preferences.cpp:80 +#: src/slic3r/GUI/ConfigWizard.cpp:1138 src/slic3r/GUI/Preferences.cpp:97 msgid "Update built-in Presets automatically" msgstr "Aggiorna automaticamente i Preset integrati" -#: src/slic3r/GUI/ConfigWizard.cpp:761 +#: src/slic3r/GUI/ConfigWizard.cpp:1120 msgid "Updates" msgstr "Aggiornamenti" -#: src/slic3r/GUI/ConfigWizard.cpp:786 +#: src/slic3r/GUI/ConfigWizard.cpp:1145 msgid "Updates are never applied without user's consent and never overwrite user's customized settings." msgstr "Gli aggiornamenti non vengono mai applicati senza il consenso dell'utente e non sovrascrivono mai i settaggi personalizzati dell'utente." @@ -8322,7 +9823,7 @@ msgstr "Gli aggiornamenti non vengono mai applicati senza il consenso dell'utent msgid "Upgrade" msgstr "Aggiorna" -#: src/slic3r/GUI/GUI_App.cpp:824 +#: src/slic3r/GUI/GUI_App.cpp:1522 msgid "Upload a firmware image into an Arduino based printer" msgstr "Carica un'immagine del firmware su una stampante basata su Arduino" @@ -8338,101 +9839,118 @@ msgstr "Carica all'Host di stampa con il seguente nome file:" msgid "Uploading" msgstr "Caricamento" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:204 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:206 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 msgid "Upper Layer" msgstr "Layer superiore" -#: src/slic3r/GUI/Tab.cpp:1900 -msgid "USB/Serial connection" -msgstr "Connessione USB/Seriale" - -#: src/libslic3r/PrintConfig.cpp:1662 -msgid "USB/serial port for printer connection." -msgstr "Porta USB/Seriale per connessione stampante." - -#: src/slic3r/GUI/DoubleSlider.cpp:1147 +#: src/slic3r/GUI/DoubleSlider.cpp:1276 msgid "Use another extruder" msgstr "Usa un altro estrusore" -#: src/slic3r/GUI/Preferences.cpp:143 +#: src/slic3r/GUI/Preferences.cpp:220 msgid "Use custom size for toolbar icons" msgstr "Utilizza dimensione personalizzata per le icone degli strumenti" -#: src/libslic3r/PrintConfig.cpp:2161 +#: src/slic3r/GUI/Preferences.cpp:268 +msgid "Use environment map" +msgstr "Utilizza mappa ambientale" + +#: src/libslic3r/PrintConfig.cpp:2304 msgid "Use firmware retraction" msgstr "Usa retrazione firmware" +#: src/slic3r/GUI/ImGuiWrapper.cpp:800 src/slic3r/GUI/Search.cpp:464 +msgid "Use for search" +msgstr "Usa per cercare" + +#: src/libslic3r/PrintConfig.cpp:1218 +msgid "Use for time estimate" +msgstr "Utilizza per la stima del tempo" + #: src/slic3r/GUI/PrintHostDialogs.cpp:42 msgid "Use forward slashes ( / ) as a directory separator if needed." msgstr "Usa la barra ( / ) come separatore di cartella se necessario." -#: src/slic3r/GUI/Preferences.cpp:126 +#: src/slic3r/GUI/Preferences.cpp:191 msgid "Use free camera" msgstr "Usa l'inquadratura libera" -#: src/libslic3r/PrintConfig.cpp:2780 +#: src/slic3r/GUI/ConfigWizard.cpp:1188 +msgid "Use inches" +msgstr "Usa pollici" + +#: src/libslic3r/PrintConfig.cpp:2944 msgid "Use pad" msgstr "Utilizza pad" -#: src/slic3r/GUI/Preferences.cpp:119 +#: src/slic3r/GUI/Preferences.cpp:184 msgid "Use perspective camera" msgstr "Usa la visuale prospettica" -#: src/libslic3r/PrintConfig.cpp:2168 +#: src/libslic3r/PrintConfig.cpp:2311 msgid "Use relative E distances" msgstr "Usa distanze E relative" -#: src/slic3r/GUI/Preferences.cpp:104 +#: src/slic3r/GUI/Preferences.cpp:135 msgid "Use Retina resolution for the 3D scene" msgstr "Usa risoluzione Retina per la scena 3D" -#: src/libslic3r/PrintConfig.cpp:540 +#: src/libslic3r/PrintConfig.cpp:576 msgid "Use this option to set the axis letter associated to your printer's extruder (usually E but some printers use A)." msgstr "Usa questa opzione per impostare la lettera dell'asse associato all'estrusore della tua stampante (solitamente E, ma alcune stampanti utilizzano A)." -#: src/libslic3r/PrintConfig.cpp:1893 +#: src/libslic3r/PrintConfig.cpp:2035 msgid "Use this setting to rotate the support material pattern on the horizontal plane." msgstr "Usa questa impostazione per ruotare la trama del materiale di supporto sul piano orizzontale." -#: src/libslic3r/PrintConfig.cpp:2175 +#: src/libslic3r/PrintConfig.cpp:2318 msgid "Use volumetric E" msgstr "Utilizza E volumetrico" -#: src/slic3r/GUI/DoubleSlider.cpp:1171 +#: src/slic3r/GUI/DoubleSlider.cpp:1298 msgid "used" msgstr "usato" -#: src/slic3r/GUI/Plater.cpp:237 +#: src/slic3r/GUI/Plater.cpp:243 msgid "Used Filament (g)" msgstr "Filamento usato (g)" -#: src/slic3r/GUI/Plater.cpp:235 src/slic3r/GUI/Plater.cpp:1229 +#: src/slic3r/GUI/Plater.cpp:1141 +msgid "Used Filament (in)" +msgstr "Filamento usato (in)" + +#: src/slic3r/GUI/Plater.cpp:1153 +msgid "Used Filament (in³)" +msgstr "Filamento usato (in³)" + +#: src/slic3r/GUI/Plater.cpp:241 src/slic3r/GUI/Plater.cpp:1141 msgid "Used Filament (m)" msgstr "Filamento usato (m)" -#: src/slic3r/GUI/Plater.cpp:236 +#: src/slic3r/GUI/Plater.cpp:242 src/slic3r/GUI/Plater.cpp:1153 msgid "Used Filament (mm³)" msgstr "Filamento usato (mm³)" -#: src/slic3r/GUI/Plater.cpp:1191 +#: src/slic3r/GUI/Plater.cpp:1100 msgid "Used Material (ml)" msgstr "Materiale Usato (ml)" -#: src/slic3r/GUI/Plater.cpp:238 +#: src/slic3r/GUI/Plater.cpp:244 msgid "Used Material (unit)" msgstr "Materiale usato (unità)" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:24 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:24 src/libslic3r/PrintConfig.cpp:132 msgid "User" msgstr "Utente" -#: src/slic3r/GUI/Preset.cpp:1168 src/slic3r/GUI/Preset.cpp:1288 -#: src/slic3r/GUI/PresetBundle.cpp:1677 +#: src/slic3r/GUI/PresetComboBoxes.cpp:230 +#: src/slic3r/GUI/PresetComboBoxes.cpp:778 +#: src/slic3r/GUI/PresetComboBoxes.cpp:934 msgid "User presets" msgstr "Preset utente" -#: src/libslic3r/Zipper.cpp:90 +#: src/libslic3r/miniz_extension.cpp:149 msgid "validation failed" msgstr "convalida non riuscita" @@ -8444,31 +9962,31 @@ msgstr "Valore uguale a quello di sistema" msgid "Value was changed and is not equal to the system value or the last saved preset" msgstr "Il valore è stato modificato e non è uguale al valore di sistema o all'ultimo preset salvato" -#: src/slic3r/GUI/Tab.cpp:2202 +#: src/slic3r/GUI/Tab.cpp:2371 msgid "Values in this column are for Normal mode" msgstr "I valori in questa colonna sono per la modalità Normale" -#: src/slic3r/GUI/Tab.cpp:2208 +#: src/slic3r/GUI/Tab.cpp:2377 msgid "Values in this column are for Stealth mode" msgstr "I valori in questa colonna sono per la modalità Silenziosa" -#: src/slic3r/GUI/GLCanvas3D.cpp:234 src/slic3r/GUI/GLCanvas3D.cpp:4573 +#: src/slic3r/GUI/GLCanvas3D.cpp:231 src/slic3r/GUI/GLCanvas3D.cpp:4978 msgid "Variable layer height" msgstr "Altezza layer variabile" -#: src/slic3r/GUI/GLCanvas3D.cpp:1709 +#: src/slic3r/GUI/GLCanvas3D.cpp:1786 msgid "Variable layer height - Adaptive" msgstr "Altezza layer variabile - Adattivo" -#: src/slic3r/GUI/GLCanvas3D.cpp:599 +#: src/slic3r/GUI/GLCanvas3D.cpp:565 msgid "Variable layer height - Manual edit" msgstr "Altezza layer variabile - Modifica manuale" -#: src/slic3r/GUI/GLCanvas3D.cpp:1701 +#: src/slic3r/GUI/GLCanvas3D.cpp:1778 msgid "Variable layer height - Reset" msgstr "Altezza layer variabile - Ripristina" -#: src/slic3r/GUI/GLCanvas3D.cpp:1717 +#: src/slic3r/GUI/GLCanvas3D.cpp:1794 msgid "Variable layer height - Smooth all" msgstr "Altezza layer variabile - Leviga tutto" @@ -8476,19 +9994,20 @@ msgstr "Altezza layer variabile - Leviga tutto" msgid "variants" msgstr "varianti" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:57 src/slic3r/GUI/Tab.cpp:971 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:57 src/slic3r/GUI/Tab.cpp:1289 msgid "vendor" msgstr "produttore" -#: src/slic3r/GUI/ConfigWizard.cpp:565 +#: src/slic3r/GUI/ConfigWizard.cpp:589 msgid "Vendor:" msgstr "Fornitore:" -#: src/libslic3r/PrintConfig.cpp:928 +#: src/libslic3r/PrintConfig.cpp:972 msgid "Verbose G-code" msgstr "G-code verboso" -#: src/slic3r/GUI/AboutDialog.cpp:231 src/slic3r/GUI/MainFrame.cpp:64 +#: src/slic3r/GUI/AboutDialog.cpp:256 src/slic3r/GUI/GUI_App.cpp:239 +#: src/slic3r/GUI/MainFrame.cpp:164 msgid "Version" msgstr "Versione" @@ -8496,24 +10015,36 @@ msgstr "Versione" msgid "version" msgstr "versione" -#: src/slic3r/GUI/Tab.cpp:1053 +#: src/slic3r/GUI/Tab.cpp:1375 msgid "Vertical shells" msgstr "Gusci verticali" -#: src/slic3r/GUI/GUI_Preview.cpp:218 +#: src/slic3r/GUI/GUI_Preview.cpp:265 src/slic3r/GUI/GUI_Preview.cpp:271 msgid "View" msgstr "Vista" -#: src/slic3r/GUI/ConfigWizard.cpp:813 +#: src/slic3r/GUI/ConfigWizard.cpp:1172 msgid "View mode" msgstr "Modalità Visualizzazione" -#: src/libslic3r/SLAPrintSteps.cpp:413 src/libslic3r/SLAPrintSteps.cpp:422 -#: src/libslic3r/SLAPrintSteps.cpp:461 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:666 +msgid "" +"Visit \"Preferences\" and check \"%1%\"\n" +"to be asked about unsaved changes again." +msgstr "" +"Visita \"Prefereze\" e controlla \"%1%\"\n" +"per ricevere nuovamente informazioni sui cambiamenti non salvati." + +#: src/libslic3r/PrintConfig.cpp:3553 +msgid "Visualize an already sliced and saved G-code" +msgstr "Visualizza un G-code già processato e salvato" + +#: src/libslic3r/SLAPrintSteps.cpp:411 src/libslic3r/SLAPrintSteps.cpp:420 +#: src/libslic3r/SLAPrintSteps.cpp:459 msgid "Visualizing supports" msgstr "Visualizzazione supporti" -#: src/slic3r/GUI/Plater.cpp:161 +#: src/slic3r/GUI/Plater.cpp:167 msgid "Volume" msgstr "Volume" @@ -8521,23 +10052,23 @@ msgstr "Volume" msgid "Volume to purge (mm³) when the filament is being" msgstr "Il volume di spurgo (mm³) quando il filamento viene" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1106 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1230 msgid "Volumes in Object reordered" msgstr "Volumi in Oggetto riordinati" -#: src/slic3r/GUI/PresetHints.cpp:219 +#: src/slic3r/GUI/PresetHints.cpp:218 msgid "Volumetric" msgstr "Volumetrico" -#: src/slic3r/GUI/Tab.cpp:1591 +#: src/slic3r/GUI/Tab.cpp:1930 msgid "Volumetric flow hints not available" msgstr "Suggerimenti sul flusso volumetrico non disponibili" -#: src/slic3r/GUI/GUI_Preview.cpp:226 +#: src/slic3r/GUI/GUI_Preview.cpp:280 msgid "Volumetric flow rate" msgstr "Flusso volumetrico" -#: src/libslic3r/GCode/PreviewData.cpp:355 +#: src/slic3r/GUI/GCodeViewer.cpp:2240 src/libslic3r/GCode/PreviewData.cpp:360 msgid "Volumetric flow rate (mm³/s)" msgstr "Flusso volumetrico (mm³/s)" @@ -8545,151 +10076,166 @@ msgstr "Flusso volumetrico (mm³/s)" msgid "Volumetric speed" msgstr "Velocità volumetrica" -#: src/libslic3r/PrintConfig.cpp:2915 +#: src/libslic3r/PrintConfig.cpp:3079 msgid "Wall thickness" msgstr "Spessore parete" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1270 src/slic3r/GUI/GUI.cpp:251 -#: src/slic3r/GUI/Tab.cpp:3084 src/slic3r/GUI/WipeTowerDialog.cpp:45 -#: src/slic3r/GUI/WipeTowerDialog.cpp:366 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1129 src/slic3r/GUI/GUI.cpp:256 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:478 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:502 +#: src/slic3r/GUI/WipeTowerDialog.cpp:45 src/slic3r/GUI/WipeTowerDialog.cpp:366 msgid "Warning" msgstr "Attenzione" -#: src/slic3r/GUI/ConfigWizard.cpp:431 +#: src/slic3r/GUI/NotificationManager.cpp:672 +#: src/slic3r/GUI/NotificationManager.cpp:687 +#: src/slic3r/GUI/NotificationManager.cpp:702 +msgid "WARNING:" +msgstr "ATTENZIONE:" + +#: src/slic3r/GUI/ConfigWizard.cpp:449 msgid "Welcome" msgstr "Benvenuto" -#: src/slic3r/GUI/ConfigWizard.cpp:427 -#, possible-c-format +#: src/slic3r/GUI/ConfigWizard.cpp:445 +#, c-format msgid "Welcome to the %s Configuration Assistant" msgstr "Benvenuto nell'Assistente di Configurazione di %s" -#: src/slic3r/GUI/ConfigWizard.cpp:429 -#, possible-c-format +#: src/slic3r/GUI/ConfigWizard.cpp:447 +#, c-format msgid "Welcome to the %s Configuration Wizard" msgstr "Benvenuto nella Configurazione Guidata di %s" -#: src/slic3r/GUI/Preferences.cpp:97 +#: src/slic3r/GUI/SavePresetDialog.cpp:310 +msgid "What would you like to do with \"%1%\" preset after saving?" +msgstr "Cosa desideri fare con il preset \"%1%\" dopo il salvataggio?" + +#: src/slic3r/GUI/Preferences.cpp:114 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 "Quando attivato, i preset di stampa e di filamento vengono mostrati nell'editor dei preset anche se sono segnati come incompatibili con la stampante attiva" -#: src/slic3r/GUI/PresetHints.cpp:224 +#: src/slic3r/GUI/Preferences.cpp:156 +msgid "When closing the application, always ask for unsaved changes" +msgstr "Alla chiusura dell'applicazione, chiedere sempre riguardo le modifiche non salvate" + +#: src/slic3r/GUI/PresetHints.cpp:223 msgid "when printing" msgstr "durante la stampa" -#: src/libslic3r/PrintConfig.cpp:253 +#: 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 "Durante la stampa di oggetti multi-materiali, questa impostazione farà si che Slic3r unisca le parti sovrapposte dell'oggetto (la seconda sarà collegata con la prima, la terza parte sarà collegata con la prima e la seconda ecc..)." -#: src/libslic3r/PrintConfig.cpp:305 +#: 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." msgstr "Durante la stampa di oggetti multipli o copie, questa funzione completerà ciascun oggetto prima di spostarsi al prossimo (e iniziando la stampa dal primo layer). Questa funzione è utile per evitare il rischio di stampe rovinate. Slic3r dovrebbe avvisarti e prevenire collisioni con l'estrusore, ma fai attenzione." -#: src/libslic3r/PrintConfig.cpp:891 +#: src/libslic3r/PrintConfig.cpp:933 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 plates. This can be expressed as an absolute value or as a percentage (for example: 150%) over the default layer height." msgstr "Durante la stampa di layer molto bassi, potresti comunque aver bisogno di stampare layer inferiori più spessi per migliorare l'adesione e la tolleranza per piani di stampa non perfetti. Questo può essere espresso in valore assoluto o in percentuale (per esempio: 150%) sull'altezza layer predefinita." -#: src/libslic3r/PrintConfig.cpp:1553 +#: src/libslic3r/PrintConfig.cpp:1661 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 "Quando viene attivata la retrazione prima del cambio attrezzo, il filamento è ritirato per la quantità specificata (la lunghezza è misurata sul filamento grezzo, prima che questo entri dentro l'estrusore)." -#: src/libslic3r/PrintConfig.cpp:1545 +#: src/libslic3r/PrintConfig.cpp:1653 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 "Quando viene attivata la retrazione, il filamento viene ritirato per la quantità specificata (la lunghezza è misurata sul filamento grezzo, prima che questo entri dentro l'estrusore)." -#: src/libslic3r/PrintConfig.cpp:1391 +#: src/libslic3r/PrintConfig.cpp:1499 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 positive, it is loaded further, if negative, the loading move is shorter than unloading." msgstr "Quando impostato a zero, la distanza percorsa dal filamento in posizione di parcheggio durante il caricamento è esattamente uguale a quella contraria durante lo scaricamento. Quando il valore è positivo, viene caricato maggiormente, se il valore è negativo il movimento di caricamento è più corto dello scaricamento." -#: src/libslic3r/PrintConfig.cpp:1238 +#: src/libslic3r/PrintConfig.cpp:1346 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 "Quando le altre velocità sono impostate a 0, Slic3r calcolerà automaticamente la velocità ottimale in modo da mantenere costante la pressione dell'estrusore. Questa impostazione sperimentale è utilizzata per impostare la velocità massima di stampa che vuoi permettere." -#: src/libslic3r/PrintConfig.cpp:1597 +#: src/libslic3r/PrintConfig.cpp:1705 msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament." msgstr "Quando la retrazione è compensata dopo un cambio di attrezzo, l'estrusore spingerà questa quantità addizionale di filamento." -#: src/libslic3r/PrintConfig.cpp:1589 +#: src/libslic3r/PrintConfig.cpp:1697 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 "Quando la retrazione è compensata dopo un movimento di spostamento, l'estrusore spingerà questa quantità addizionale di filamento. Questa impostazione è raramente necessaria." -#: src/slic3r/GUI/Tab.cpp:3263 +#: src/slic3r/GUI/Tab.cpp:3700 msgid "WHITE BULLET" msgstr "PALLINO BIANCO" -#: src/slic3r/GUI/Tab.cpp:3285 +#: src/slic3r/GUI/Tab.cpp:3722 msgid "WHITE BULLET icon indicates a non system (or non default) preset." msgstr "L'icona a forma di PALLINO BIANCO indica un preset non di sistema (o non predefinito)." -#: src/slic3r/GUI/Tab.cpp:3288 +#: src/slic3r/GUI/Tab.cpp:3725 msgid "WHITE BULLET icon indicates that the settings are the same as in the last saved preset for the current option group." msgstr "L'icona a forma di PALLINO BIANCO indica che le impostazioni corrispondono agli ultimi preset salvati per il gruppo di opzioni corrente." -#: src/slic3r/GUI/Tab.cpp:3303 +#: src/slic3r/GUI/Tab.cpp:3740 msgid "WHITE BULLET icon indicates that the value is the same as in the last saved preset." msgstr "L'icona a forma di PALLINO BIANCO indica che il valore è lo stesso dell'ultimo preset salvato." -#: src/slic3r/GUI/GUI_Preview.cpp:223 src/libslic3r/PrintConfig.cpp:2238 +#: src/slic3r/GUI/GUI_Preview.cpp:277 src/libslic3r/PrintConfig.cpp:2381 msgid "Width" msgstr "Larghezza" -#: src/libslic3r/GCode/PreviewData.cpp:349 +#: src/slic3r/GUI/GCodeViewer.cpp:2237 src/libslic3r/GCode/PreviewData.cpp:354 msgid "Width (mm)" msgstr "Larghezza (mm)" -#: src/libslic3r/PrintConfig.cpp:2640 +#: src/libslic3r/PrintConfig.cpp:2783 msgid "Width from the back sphere center to the front sphere center" msgstr "Spessore dal centro della sfera posteriore al centro della sfera anteriore" -#: src/libslic3r/PrintConfig.cpp:2239 +#: src/libslic3r/PrintConfig.cpp:2382 msgid "Width of a wipe tower" msgstr "Larghezza della torre di spurgo" -#: src/libslic3r/PrintConfig.cpp:2891 +#: src/libslic3r/PrintConfig.cpp:3055 msgid "Width of the connector sticks which connect the object and the generated pad." msgstr "Larghezza delle barre di connessione che collegano l'oggetto e il pad generato." -#: src/libslic3r/PrintConfig.cpp:2354 +#: src/libslic3r/PrintConfig.cpp:2497 msgid "Width of the display" msgstr "Larghezza del display" -#: src/slic3r/GUI/PresetHints.cpp:48 +#: src/slic3r/GUI/PresetHints.cpp:47 msgid "will always run at %1%%%" msgstr "lavorerà sempre a %1%%%" -#: src/slic3r/GUI/PresetHints.cpp:55 +#: src/slic3r/GUI/PresetHints.cpp:54 msgid "will be turned off." msgstr "rimarrà spenta." -#: src/libslic3r/PrintConfig.cpp:2441 +#: 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." -#: src/libslic3r/PrintConfig.cpp:2261 +#: src/libslic3r/PrintConfig.cpp:2404 msgid "Wipe into this object" msgstr "Spurgo in questo oggetto" -#: src/libslic3r/PrintConfig.cpp:2253 +#: src/libslic3r/PrintConfig.cpp:2396 msgid "Wipe into this object's infill" msgstr "Spurgo nel riempimento di questo oggetto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:39 src/slic3r/GUI/GUI_ObjectList.cpp:101 -#: src/slic3r/GUI/GUI_ObjectList.cpp:619 src/libslic3r/PrintConfig.cpp:2252 -#: src/libslic3r/PrintConfig.cpp:2260 +#: 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:2395 +#: src/libslic3r/PrintConfig.cpp:2403 msgid "Wipe options" msgstr "Opzioni pulizia" -#: src/slic3r/GUI/GUI_Preview.cpp:248 src/slic3r/GUI/Tab.cpp:1191 -#: src/libslic3r/ExtrusionEntity.cpp:321 +#: src/slic3r/GUI/GUI_Preview.cpp:313 src/slic3r/GUI/Tab.cpp:1521 +#: src/libslic3r/ExtrusionEntity.cpp:326 src/libslic3r/ExtrusionEntity.cpp:360 msgid "Wipe tower" msgstr "Torre di spurgo" -#: src/slic3r/GUI/Plater.cpp:1231 src/slic3r/GUI/Plater.cpp:1245 +#: src/slic3r/GUI/Plater.cpp:1143 src/slic3r/GUI/Plater.cpp:1160 msgid "wipe tower" msgstr "torre di spurgo" -#: src/slic3r/GUI/ConfigManipulation.cpp:120 -#: src/slic3r/GUI/ConfigManipulation.cpp:140 +#: src/slic3r/GUI/ConfigManipulation.cpp:119 +#: src/slic3r/GUI/ConfigManipulation.cpp:139 msgid "Wipe Tower" msgstr "Torre di spurgo" @@ -8697,121 +10243,147 @@ msgstr "Torre di spurgo" msgid "Wipe tower - Purging volume adjustment" msgstr "Torre di spurgo - Regolazione volume di spurgo" -#: src/slic3r/GUI/Tab.cpp:1488 +#: src/slic3r/GUI/Tab.cpp:1834 msgid "Wipe tower parameters" msgstr "Parametri torre di spurgo" -#: src/libslic3r/PrintConfig.cpp:2245 +#: src/libslic3r/PrintConfig.cpp:2388 msgid "Wipe tower rotation angle" msgstr "Angolo di rotazione della torre di spurgo" -#: src/libslic3r/PrintConfig.cpp:2246 +#: src/libslic3r/PrintConfig.cpp:2389 msgid "Wipe tower rotation angle with respect to x-axis." msgstr "Angolo di rotazione della torre di spurgo rispetto all'asse X." -#: src/libslic3r/PrintConfig.cpp:2193 +#: src/libslic3r/PrintConfig.cpp:2336 msgid "Wipe while retracting" msgstr "Pulisci durante la retrazione" -#: src/slic3r/GUI/PresetHints.cpp:225 +#: src/slic3r/GUI/PresetHints.cpp:224 msgid "with a volumetric rate" msgstr "con una portata volumetrica" -#: src/libslic3r/PrintConfig.cpp:1530 +#: src/libslic3r/PrintConfig.cpp:1638 msgid "With bowden extruders, it may be wise to do some amount of quick retract before doing the wipe movement." msgstr "Con estrusori bowden, potrebbe essere conveniente effettuare una certa retrazione veloce prima di effettuare un movimento di pulizia." -#: src/libslic3r/PrintConfig.cpp:2056 +#: src/libslic3r/PrintConfig.cpp:2198 msgid "With sheath around the support" msgstr "Con guaina attorno al supporto" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:62 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:105 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:68 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:111 msgid "World coordinates" msgstr "Coordinate reali" #: src/slic3r/GUI/UpdateDialogs.cpp:92 -msgid "Would you like to install it?\n\nNote that a full configuration snapshot will be created first. It can then be restored at any time should there be a problem with the new version.\n\nUpdated configuration bundles:" -msgstr "Vuoi installarlo?\n\nNota: verrà prima creata un'istantanea della configurazione completa. Potrà essere ripristinata in qualunque momento se dovessero presentarsi problemi con la nuova versione.\n\nGruppo di configurazioni aggiornate:" +msgid "" +"Would you like to install it?\n" +"\n" +"Note that a full configuration snapshot will be created first. It can then be restored at any time should there be a problem with the new version.\n" +"\n" +"Updated configuration bundles:" +msgstr "" +"Vuoi installarlo?\n" +"\n" +"Nota: verrà prima creata un'istantanea della configurazione completa. Potrà essere ripristinata in qualunque momento se dovessero presentarsi problemi con la nuova versione.\n" +"\n" +"Gruppo di configurazioni aggiornate:" -#: src/libslic3r/Zipper.cpp:92 +#: src/libslic3r/miniz_extension.cpp:151 msgid "write calledback failed" msgstr "scrittura richiamo non riuscita" -#: src/libslic3r/PrintConfig.cpp:3382 +#: src/libslic3r/PrintConfig.cpp:3581 msgid "Write information about the model to the console." msgstr "Scrivi informazioni sul modello alla console." -#: src/slic3r/Utils/Duet.cpp:131 +#: src/slic3r/Utils/Duet.cpp:133 msgid "Wrong password" msgstr "Password errata" -#: src/libslic3r/PrintConfig.cpp:2225 +#: src/libslic3r/PrintConfig.cpp:2368 msgid "X coordinate of the left front corner of a wipe tower" msgstr "Coordinata X dell'angolo frontale sinistro di una torre di spurgo" -#: src/libslic3r/PrintConfig.cpp:1879 +#: src/libslic3r/PrintConfig.cpp:2021 msgid "XY separation between an object and its support" msgstr "Separazione XY tra un oggetto e il suo supporto" -#: src/libslic3r/PrintConfig.cpp:1881 +#: src/libslic3r/PrintConfig.cpp:2023 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 "La separazione XY tra l'oggetto e il suo supporto. Se espresso in percentuale (ad esempio 50%), verrà calcolato sulla larghezza del perimetro esterno." -#: src/libslic3r/PrintConfig.cpp:2275 +#: src/libslic3r/PrintConfig.cpp:2418 msgid "XY Size Compensation" msgstr "Compensazione dimensione XY" -#: src/libslic3r/PrintConfig.cpp:2232 +#: src/libslic3r/PrintConfig.cpp:2375 msgid "Y coordinate of the left front corner of a wipe tower" msgstr "Coordinata Y dell'angolo frontale sinistro di una torre di spurgo" -#: src/slic3r/GUI/Plater.cpp:1170 +#: src/slic3r/GUI/Plater.cpp:1079 msgid "Yes" msgstr "Si" -#: src/libslic3r/PrintConfig.cpp:1317 +#: src/slic3r/GUI/Plater.cpp:1405 +msgid "You can open only one .gcode file at a time." +msgstr "È possibile aprire un solo file .gcode alla volta." + +#: src/libslic3r/PrintConfig.cpp:1425 msgid "You can put here your personal notes. This text will be added to the G-code header comments." msgstr "È possibile inserire qui le note personali. Questo testo verrà aggiunto nei commenti iniziali del G-code." -#: src/libslic3r/PrintConfig.cpp:589 +#: src/libslic3r/PrintConfig.cpp:625 msgid "You can put your notes regarding the filament here." msgstr "È possibile inserire qui le note riguardanti il filamento." -#: src/libslic3r/PrintConfig.cpp:1473 +#: src/libslic3r/PrintConfig.cpp:1581 msgid "You can put your notes regarding the printer here." msgstr "È possibile inserire qui le note riguardanti la stampante." -#: src/libslic3r/PrintConfig.cpp:2579 +#: src/libslic3r/PrintConfig.cpp:2722 msgid "You can put your notes regarding the SLA print material here." msgstr "È possibile inserire qui le proprie note riguardo il materiale di stampa SLA." -#: src/libslic3r/PrintConfig.cpp:360 +#: src/libslic3r/PrintConfig.cpp:394 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 "È possibile impostare un valore positivo per disattivare completamente la ventola durante i primi layer, così da non peggiorare l'adesione." -#: src/libslic3r/PrintConfig.cpp:1364 +#: src/libslic3r/PrintConfig.cpp:1472 msgid "You can use all configuration options as variables inside this template. For example: [layer_height], [fill_density] etc. You can also use [timestamp], [year], [month], [day], [hour], [minute], [second], [version], [input_filename], [input_filename_base]." msgstr "È possibile utilizzare tutte le opzioni di configurazione come variabili all'interno di questo modello. Ad esempio: [layer_height], [fill_density] ecc. Puoi anche usare [timestamp], [year], [month], [day], [hour], [minute], [second], [version], [input_filename ], [nome_filename_input]." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3546 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4009 msgid "You can't change a type of the last solid part of the object." msgstr "Non è possibile modificare il tipo dell'ultima parte solida dell'oggetto." -#: src/slic3r/GUI/Plater.cpp:2390 -#, possible-c-format +#: src/slic3r/GUI/Plater.cpp:2352 +#, 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 "Non è possibile aggiungere oggetti da %s perché uno o più sono multi-parte" -#: src/slic3r/GUI/Plater.cpp:2311 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:208 src/slic3r/GUI/Plater.cpp:2254 msgid "You cannot load SLA project with a multi-part object on the bed" msgstr "Non è possibile caricare un progetto SLA con un oggetto multi-parte sul piano" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:578 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:625 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/GLCanvas3DManager.cpp:287 +#: src/slic3r/GUI/SavePresetDialog.cpp:277 +msgid "" +"You have selected physical printer \"%1%\" \n" +"with related printer preset \"%2%\"" +msgstr "" +"Hai selezionato la stampante fisica \"%1%\" \n" +"con il relativo preset stampante \"%2%\"" + +#: src/slic3r/GUI/GUI_App.cpp:1078 +msgid "You have the following presets with saved options for \"Print Host upload\"" +msgstr "Sono disponibili i seguenti preset con le opzioni salvate per \"Caricamento Host di stampa\"" + +#: src/slic3r/GUI/OpenGLManager.cpp:262 msgid "You may need to update your graphics card driver." msgstr "Dovresti aggiornare i driver della scheda video." @@ -8819,77 +10391,107 @@ msgstr "Dovresti aggiornare i driver della scheda video." msgid "You must install a configuration update." msgstr "È necessario installare un aggiornamento della configurazione." -#: src/slic3r/GUI/Preferences.cpp:172 -#, possible-c-format +#: src/slic3r/GUI/Preferences.cpp:299 +#, c-format msgid "You need to restart %s to make the changes effective." msgstr "È necessario riavviare %s per rendere effettive le modifiche." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3421 -#, possible-c-format +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:468 +msgid "You should to change a name of your printer device. It can't be saved." +msgstr "Devi cambiare il nome del dispositivo di stampa. Non può essere salvato." + +#: src/slic3r/GUI/GUI_ObjectList.cpp:3884 +#, c-format msgid "You started your selection with %s Item." msgstr "Hai iniziato la selezione con %s elementi." -#: src/slic3r/GUI/DoubleSlider.cpp:1902 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:664 +msgid "You will not be asked about the unsaved changes the next time you close PrusaSlicer." +msgstr "La prossima volta che chiuderai PrusaSlicer non ti verrà chiesto nulla sulle modifiche non salvate." + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:665 +msgid "You will not be asked about the unsaved changes the next time you switch a preset." +msgstr "La prossima volta che si passa ad un preset non verrà chiesto nulla sulle modifiche non salvate." + +#: src/slic3r/GUI/DoubleSlider.cpp:2121 msgid "Your current changes will delete all saved color changes." msgstr "Le modifiche attuali cancelleranno tutti i cambi colore salvati." -#: src/slic3r/GUI/DoubleSlider.cpp:1923 +#: src/slic3r/GUI/DoubleSlider.cpp:2141 msgid "Your current changes will delete all saved extruder (tool) changes." msgstr "Le modifiche attuali cancelleranno tutti i cambi estrusore (attrezzo) salvati." -#: src/slic3r/GUI/MainFrame.cpp:911 +#: src/slic3r/GUI/MainFrame.cpp:1612 msgid "Your file was repaired." msgstr "Il file è stato riparato." -#: src/slic3r/GUI/Plater.cpp:2528 +#: src/slic3r/GUI/Plater.cpp:2490 msgid "Your object appears to be too large, so it was automatically scaled down to fit your print bed." msgstr "L'oggetto sembra essere troppo grande, è stato quindi ridimensionato automaticamente per entrare nel piano di stampa." -#: src/libslic3r/PrintConfig.cpp:2285 +#: src/libslic3r/PrintConfig.cpp:2428 msgid "Z offset" msgstr "Offset Z" -#: src/slic3r/GUI/ConfigManipulation.cpp:60 -msgid "Zero first layer height is not valid.\n\nThe first layer height will be reset to 0.01." -msgstr "Altezza primo layer a zero non è valida.\n\nL'altezza del primo layer verrà reimpostata a 0.01." +#: src/slic3r/GUI/ConfigManipulation.cpp:59 +msgid "" +"Zero first layer height is not valid.\n" +"\n" +"The first layer height will be reset to 0.01." +msgstr "" +"Altezza primo layer a zero non è valida.\n" +"\n" +"L'altezza del primo layer verrà reimpostata a 0.01." -#: src/slic3r/GUI/ConfigManipulation.cpp:48 -msgid "Zero layer height is not valid.\n\nThe layer height will be reset to 0.01." -msgstr "Altezza layer zero non valida.\n\nL'altezza layer verrà reimpostata a 0.01." +#: src/slic3r/GUI/ConfigManipulation.cpp:47 +msgid "" +"Zero layer height is not valid.\n" +"\n" +"The layer height will be reset to 0.01." +msgstr "" +"Altezza layer zero non valida.\n" +"\n" +"L'altezza layer verrà reimpostata a 0.01." -#: src/libslic3r/PrintConfig.cpp:2667 +#: src/libslic3r/PrintConfig.cpp:2831 msgid "Zig-Zag" msgstr "Zig-Zag" -#: src/slic3r/GUI/Mouse3DController.cpp:308 -#: src/slic3r/GUI/Mouse3DController.cpp:317 +#: src/slic3r/GUI/Mouse3DController.cpp:294 +#: src/slic3r/GUI/Mouse3DController.cpp:303 msgid "Zoom" msgstr "Zoom" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:183 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:177 msgid "Zoom in" msgstr "Zoom in" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:184 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:178 msgid "Zoom out" msgstr "Zoom out" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:181 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:175 msgid "Zoom to Bed" msgstr "Zoom sul piano" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:182 -msgid "Zoom to selected object\nor all objects in scene, if none selected" -msgstr "Zoom sull'oggetto selezionato\no tutti gli oggetti in scena, se nessuno è selezionato" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:176 +msgid "" +"Zoom to selected object\n" +"or all objects in scene, if none selected" +msgstr "" +"Zoom sull'oggetto selezionato\n" +"o tutti gli oggetti in scena, se nessuno è selezionato" -#: src/libslic3r/PrintConfig.cpp:207 src/libslic3r/PrintConfig.cpp:780 -#: src/libslic3r/PrintConfig.cpp:1640 src/libslic3r/PrintConfig.cpp:1650 -#: src/libslic3r/PrintConfig.cpp:1894 src/libslic3r/PrintConfig.cpp:2049 -#: src/libslic3r/PrintConfig.cpp:2247 src/libslic3r/PrintConfig.cpp:2727 -#: src/libslic3r/PrintConfig.cpp:2848 +#: src/libslic3r/PrintConfig.cpp:241 src/libslic3r/PrintConfig.cpp:816 +#: src/libslic3r/PrintConfig.cpp:1748 src/libslic3r/PrintConfig.cpp:1758 +#: src/libslic3r/PrintConfig.cpp:2036 src/libslic3r/PrintConfig.cpp:2191 +#: src/libslic3r/PrintConfig.cpp:2390 src/libslic3r/PrintConfig.cpp:2891 +#: src/libslic3r/PrintConfig.cpp:3012 msgid "°" msgstr "°" -#: src/slic3r/GUI/ConfigWizard.cpp:1038 src/slic3r/GUI/ConfigWizard.cpp:1052 +#: src/slic3r/GUI/ConfigWizard.cpp:1404 src/slic3r/GUI/ConfigWizard.cpp:1418 +#: src/libslic3r/PrintConfig.cpp:180 src/libslic3r/PrintConfig.cpp:912 +#: src/libslic3r/PrintConfig.cpp:956 src/libslic3r/PrintConfig.cpp:2209 msgid "°C" msgstr "°C" diff --git a/resources/localization/list.txt b/resources/localization/list.txt index 6950dc7098..64d50591a7 100644 --- a/resources/localization/list.txt +++ b/resources/localization/list.txt @@ -78,7 +78,6 @@ src/libslic3r/ExtrusionEntity.cpp src/libslic3r/Flow.cpp src/libslic3r/Format/3mf.cpp src/libslic3r/Format/AMF.cpp -src/libslic3r/GCode/PreviewData.cpp src/libslic3r/miniz_extension.cpp src/libslic3r/Preset.cpp src/libslic3r/Print.cpp diff --git a/resources/localization/pl/PrusaSlicer.mo b/resources/localization/pl/PrusaSlicer.mo index b81f880a1b..ec53d51df0 100644 Binary files a/resources/localization/pl/PrusaSlicer.mo and b/resources/localization/pl/PrusaSlicer.mo differ diff --git a/resources/localization/pl/PrusaSlicer_pl.po b/resources/localization/pl/PrusaSlicer_pl.po index d360128fcc..0daecee824 100644 --- a/resources/localization/pl/PrusaSlicer_pl.po +++ b/resources/localization/pl/PrusaSlicer_pl.po @@ -5,82 +5,101 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=(n == 1) ? 0 : ((n%10 >= 2 && n%10 <=4 && (n%100 < 12 || n%100 > 14)) ? 1 : ((n%10 == 0 || n%10 == 1 || (n%10 >= 5 && n%10 <=9)) || (n%100 >= 12 && n%100 <= 14)) ? 2 : 3);\n" -"X-Generator: Poedit 2.3\n" +"X-Generator: Poedit 2.4.2\n" "Project-Id-Version: \n" "POT-Creation-Date: \n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" -#: src/slic3r/GUI/MainFrame.cpp:66 -msgid " - Remember to check for updates at http://github.com/prusa3d/PrusaSlicer/releases" -msgstr " - Pamiętaj, aby sprawdzać aktualizacje na http://github.com/prusa3d/PrusaSlicer/releases" +#: src/slic3r/GUI/Tab.cpp:4124 +msgid "" +"\"%1%\" is disabled because \"%2%\" is on in \"%3%\" category.\n" +"To enable \"%1%\", please switch off \"%2%\"" +msgstr "" +"\"%1%\" jest wyłączony ponieważ \"%2%\" znajduje się w kategorii \"%3%\".\n" +"Aby włączyć \"%1%\", wyłącz \"%2%\"." -#: src/slic3r/GUI/MainFrame.cpp:872 -msgid " was successfully sliced." -msgstr " został pomyślnie pocięty." - -#: src/libslic3r/PrintConfig.cpp:215 src/libslic3r/PrintConfig.cpp:792 -#: src/libslic3r/PrintConfig.cpp:1219 src/libslic3r/PrintConfig.cpp:1282 -#: src/libslic3r/PrintConfig.cpp:1532 src/libslic3r/PrintConfig.cpp:2425 -#: src/libslic3r/PrintConfig.cpp:2767 +#: src/libslic3r/PrintConfig.cpp:249 src/libslic3r/PrintConfig.cpp:828 +#: src/libslic3r/PrintConfig.cpp:1148 src/libslic3r/PrintConfig.cpp:1327 +#: src/libslic3r/PrintConfig.cpp:1390 src/libslic3r/PrintConfig.cpp:1640 +#: src/libslic3r/PrintConfig.cpp:2568 src/libslic3r/PrintConfig.cpp:2805 +#: src/libslic3r/PrintConfig.cpp:2931 msgid "%" msgstr "%" -#: src/slic3r/GUI/GLCanvas3D.cpp:963 +#: src/slic3r/GUI/GLCanvas3D.cpp:969 #, c-format msgid "%.2f - %.2f mm" msgstr "%.2f - %.2f mm" #. TRN Remove/Delete -#: src/slic3r/GUI/Tab.cpp:3126 +#: src/slic3r/GUI/Tab.cpp:3425 msgid "%1% Preset" msgstr "%1% Zestaw ustawień" -#: src/slic3r/GUI/Plater.cpp:4400 +#: src/slic3r/GUI/Plater.cpp:4423 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 "Drukarka %1% była aktywna podczas Cofnięcia / Powtórzenia zrzutu. Zmiana drukarki na %1% wymaga załadowania zestawów ustawień %1%." -#: src/libslic3r/Print.cpp:1374 +#: src/slic3r/GUI/MainFrame.cpp:1585 +msgid "%1% was successfully sliced." +msgstr "%1% został pomyślnie pocięty." + +#: src/libslic3r/Print.cpp:1400 msgid "%1%=%2% mm is too low to be printable at a layer height %3% mm" msgstr "%1%=%2% mm to zbyt mała wartość, żeby była możliwa do wydrukowania na wysokości warstwy %3% mm" -#: src/slic3r/GUI/PresetHints.cpp:229 +#: src/slic3r/GUI/PresetHints.cpp:228 #, c-format msgid "%3.2f mm³/s at filament speed %3.2f mm/s." msgstr "%3.2f mm³/s z prędkością filamentu %3.2f mm/s." -#: src/slic3r/GUI/Plater.cpp:1152 +#: src/slic3r/GUI/Plater.cpp:1061 #, c-format msgid "%d (%d shells)" msgstr "%d (%d obrysów)" -#: src/slic3r/GUI/Plater.cpp:1160 +#: src/slic3r/GUI/Plater.cpp:1069 #, c-format msgid "%d degenerate facets, %d edges fixed, %d facets removed, %d facets added, %d facets reversed, %d backwards edges" msgstr "%d nieprawidłowych powierzchni, %d naprawionych krawędzi, %d powierzchni usunięto, %d powierzchni dodano, %d powierzchni odwrócono, %d odwróconych krawędzi" -#: src/slic3r/GUI/PresetHints.cpp:270 +#: src/slic3r/GUI/PresetHints.cpp:269 #, c-format msgid "%d lines: %.2f mm" msgstr "%d linii: %.2f mm" -#: src/slic3r/GUI/MainFrame.cpp:1027 +#: src/slic3r/GUI/MainFrame.cpp:1728 #, c-format msgid "%d presets successfully imported." msgstr "pomyślnie zaimportowano %d zestawów ustawień." -#: src/slic3r/GUI/MainFrame.cpp:692 +#: src/slic3r/GUI/GUI_App.cpp:718 +#, c-format +msgid "" +"%s\n" +"Do you want to continue?" +msgstr "" +"%s\n" +"Kontynuować?" + +#: src/slic3r/GUI/MainFrame.cpp:917 src/slic3r/GUI/MainFrame.cpp:1316 #, c-format msgid "%s &Website" msgstr "Strona &WWW %s" +#: src/slic3r/GUI/GUI_App.cpp:394 +#, c-format +msgid "%s - BREAKING CHANGE" +msgstr "%s - BREAKING CHANGE" + #: src/slic3r/GUI/UpdateDialogs.cpp:211 #, c-format msgid "%s configuration is incompatible" msgstr "Konfiguracja niekompatybilna: %s" -#: src/slic3r/GUI/Field.cpp:175 +#: src/slic3r/GUI/Field.cpp:223 #, c-format msgid "%s doesn't support percentage" msgstr "%s nie może być wartością procentową" @@ -90,7 +109,7 @@ msgstr "%s nie może być wartością procentową" msgid "%s error" msgstr "błąd %s" -#: src/slic3r/GUI/ConfigWizard.cpp:481 +#: src/slic3r/GUI/ConfigWizard.cpp:499 #, c-format msgid "%s Family" msgstr "Rodzina %s" @@ -100,7 +119,7 @@ msgstr "Rodzina %s" msgid "%s has encountered an error" msgstr "%s napotkał błąd" -#: src/slic3r/GUI/GUI_App.cpp:138 +#: src/slic3r/GUI/GUI_App.cpp:528 #, c-format msgid "" "%s has encountered an error. It was likely caused by running out of memory. If you are sure you have enough RAM on your system, this may also be a bug and we would be glad if you reported it.\n" @@ -111,12 +130,12 @@ msgstr "" "\n" "Aplikacja zostanie zamknięta." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:222 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:62 #, c-format msgid "%s has encountered an error. It was likely caused by running out of memory. If you are sure you have enough RAM on your system, this may also be a bug and we would be glad if you reported it." msgstr "Błąd %s . Prawdopodobnie wystąpił przez brak pamięci. Jeśli masz pewność, że ilość RAMu jest wystarczająca, to może to być bug, a którego zgłoszenie będziemy wdzięczni." -#: src/slic3r/GUI/UpdateDialogs.cpp:308 +#: src/slic3r/GUI/UpdateDialogs.cpp:309 #, c-format msgid "%s has no configuration updates available." msgstr "%s nie ma dostępnych aktualizacji konfiguracji." @@ -143,7 +162,7 @@ msgstr "" "\n" "Kontynuuj do %s , które pozwoli ustawić nowe Zestawy i wybrać automatyczną aktualizację wbudowanych Zestawów." -#: src/slic3r/GUI/GUI_App.cpp:820 +#: src/slic3r/GUI/GUI_App.cpp:1512 #, c-format msgid "%s View Mode" msgstr "Tryb %s" @@ -163,218 +182,248 @@ msgstr "" "\n" "Zaktualizowane zestawy ustawień:" -#: src/slic3r/GUI/MainFrame.cpp:705 +#: src/slic3r/GUI/MainFrame.cpp:933 src/slic3r/GUI/MainFrame.cpp:937 +#: src/slic3r/GUI/MainFrame.cpp:1329 #, c-format msgid "&About %s" msgstr "&O %s" -#: src/slic3r/GUI/GUI_App.cpp:908 +#: src/slic3r/GUI/MainFrame.cpp:1297 +msgid "&Collapse sidebar" +msgstr "S&chowaj pasek narzędzi" + +#: src/slic3r/GUI/GUI_App.cpp:1645 msgid "&Configuration" msgstr "&Konfiguracja" -#: src/slic3r/GUI/GUI_App.cpp:800 +#: src/slic3r/GUI/GUI_App.cpp:1480 msgid "&Configuration Snapshots" msgstr "Zrzuty Konfigura&cji" -#: src/slic3r/GUI/MainFrame.cpp:588 +#: src/slic3r/GUI/MainFrame.cpp:1194 msgid "&Copy" msgstr "&Kopiuj" -#: src/slic3r/GUI/MainFrame.cpp:572 +#: src/slic3r/GUI/MainFrame.cpp:1178 msgid "&Delete selected" msgstr "Usuń &zaznaczone" -#: src/slic3r/GUI/MainFrame.cpp:722 +#: src/slic3r/GUI/MainFrame.cpp:1348 src/slic3r/GUI/MainFrame.cpp:1358 msgid "&Edit" msgstr "&Edytuj" -#: src/slic3r/GUI/MainFrame.cpp:506 +#: src/slic3r/GUI/MainFrame.cpp:1103 msgid "&Export" msgstr "&Eksport" -#: src/slic3r/GUI/MainFrame.cpp:617 src/slic3r/GUI/MainFrame.cpp:752 +#: src/slic3r/GUI/MainFrame.cpp:1224 src/slic3r/GUI/MainFrame.cpp:1451 msgid "&Filament Settings Tab" -msgstr "Ustawienia &Filamentu" +msgstr "Ustawienia &filamentu" -#: src/slic3r/GUI/MainFrame.cpp:721 +#: src/slic3r/GUI/MainFrame.cpp:1347 src/slic3r/GUI/MainFrame.cpp:1357 +#: src/slic3r/GUI/MainFrame.cpp:1417 msgid "&File" msgstr "&Plik" -#: src/slic3r/GUI/ConfigWizard.cpp:1981 +#: src/slic3r/GUI/ConfigWizard.cpp:2492 msgid "&Finish" msgstr "&Zakończ" -#: src/slic3r/GUI/MainFrame.cpp:727 +#: src/slic3r/GUI/MainFrame.cpp:1141 +msgid "&G-code preview" +msgstr "Podgląd &G-code" + +#: src/slic3r/GUI/MainFrame.cpp:1353 src/slic3r/GUI/MainFrame.cpp:1363 +#: src/slic3r/GUI/MainFrame.cpp:1423 msgid "&Help" msgstr "Pomo&c" -#: src/slic3r/GUI/MainFrame.cpp:474 +#: src/slic3r/GUI/MainFrame.cpp:1065 msgid "&Import" msgstr "&Import" -#: src/slic3r/GUI/GUI_App.cpp:822 +#: src/slic3r/GUI/GUI_App.cpp:1517 msgid "&Language" msgstr "Język ap&likacji" -#: src/slic3r/GUI/MainFrame.cpp:405 +#: src/slic3r/GUI/MainFrame.cpp:986 msgid "&New Project" msgstr "&Nowy Projekt" -#: src/slic3r/GUI/ConfigWizard.cpp:1980 +#: src/slic3r/GUI/ConfigWizard.cpp:2491 msgid "&Next >" msgstr "&Dalej>" -#: src/slic3r/GUI/MainFrame.cpp:408 +#: src/slic3r/GUI/MainFrame.cpp:1391 +msgid "&Open G-code" +msgstr "&Otwórz G-code" + +#: src/slic3r/GUI/MainFrame.cpp:989 msgid "&Open Project" msgstr "&Otwórz Projekt" -#: src/slic3r/GUI/MainFrame.cpp:591 +#: src/slic3r/GUI/MainFrame.cpp:1197 msgid "&Paste" msgstr "Wkle&j" -#: src/slic3r/GUI/MainFrame.cpp:606 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "&Plater Tab" msgstr "&Podgląd Stołu" -#: src/slic3r/GUI/GUI_App.cpp:804 +#: src/slic3r/GUI/GUI_App.cpp:1487 msgid "&Preferences" msgstr "&Preferencje" -#: src/slic3r/GUI/MainFrame.cpp:540 +#: src/slic3r/GUI/MainFrame.cpp:1144 src/slic3r/GUI/MainFrame.cpp:1402 msgid "&Quit" msgstr "Wyjś&cie" -#: src/slic3r/GUI/MainFrame.cpp:583 +#: src/slic3r/GUI/MainFrame.cpp:1189 msgid "&Redo" msgstr "Powtó&rz" -#: src/slic3r/GUI/MainFrame.cpp:536 +#: src/slic3r/GUI/MainFrame.cpp:1137 msgid "&Repair STL file" msgstr "Nap&rawa pliku STL" -#: src/slic3r/GUI/MainFrame.cpp:446 +#: src/slic3r/GUI/MainFrame.cpp:1028 msgid "&Save Project" msgstr "Zapi&sz Projekt" -#: src/slic3r/GUI/MainFrame.cpp:565 +#: src/slic3r/GUI/MainFrame.cpp:1171 msgid "&Select all" msgstr "Zaznacz w&szystko" -#: src/slic3r/GUI/MainFrame.cpp:580 +#: src/slic3r/GUI/MainFrame.cpp:1186 msgid "&Undo" msgstr "Co&fnij" -#: src/slic3r/GUI/MainFrame.cpp:724 +#: src/slic3r/GUI/MainFrame.cpp:1350 src/slic3r/GUI/MainFrame.cpp:1360 +#: src/slic3r/GUI/MainFrame.cpp:1418 msgid "&View" msgstr "&Widok" -#: src/slic3r/GUI/MainFrame.cpp:723 +#: src/slic3r/GUI/MainFrame.cpp:1349 src/slic3r/GUI/MainFrame.cpp:1359 msgid "&Window" msgstr "&Okno" -#: src/slic3r/GUI/ConfigWizard.cpp:603 src/slic3r/GUI/ConfigWizard.cpp:631 +#: src/slic3r/GUI/ConfigWizard.cpp:662 src/slic3r/GUI/ConfigWizard.cpp:812 +#: src/slic3r/GUI/ConfigWizard.cpp:873 src/slic3r/GUI/ConfigWizard.cpp:1007 msgid "(All)" msgstr "(Wszystko)" -#: src/libslic3r/PrintConfig.cpp:1446 +#: src/libslic3r/PrintConfig.cpp:1554 msgid "(minimum)" msgstr "(minimum)" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:116 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:109 msgid "(Re)slice" msgstr "(Ponowne) Cięcie" -#: src/slic3r/GUI/MainFrame.cpp:532 +#: src/slic3r/GUI/MainFrame.cpp:1133 msgid "(Re)Slice No&w" msgstr "(Pono&wne) Cięcie" -#: src/libslic3r/PrintConfig.cpp:771 src/libslic3r/PrintConfig.cpp:2587 +#: src/libslic3r/PrintConfig.cpp:807 src/libslic3r/PrintConfig.cpp:2730 msgid "(Unknown)" msgstr "(Nieznane)" -#: src/slic3r/GUI/MainFrame.cpp:790 +#: src/slic3r/GUI/MainFrame.cpp:1491 msgid ") not found." msgstr ") nie znaleziono." -#: src/libslic3r/PrintConfig.cpp:1918 +#: src/libslic3r/PrintConfig.cpp:2060 msgid "0 (soluble)" msgstr "0 (rozpuszczalne)" -#: src/libslic3r/PrintConfig.cpp:1919 +#: src/libslic3r/PrintConfig.cpp:2061 msgid "0.2 (detachable)" msgstr "0.2 (odłączane)" -#: src/slic3r/GUI/MainFrame.cpp:626 +#: src/slic3r/GUI/MainFrame.cpp:1234 msgid "3&D" msgstr "3&D" -#: src/slic3r/GUI/Plater.cpp:4097 +#: src/slic3r/GUI/Plater.cpp:4044 msgid "3D editor view" msgstr "Edytowanie 3D" -#: src/libslic3r/PrintConfig.cpp:851 +#: src/libslic3r/PrintConfig.cpp:889 msgid "3D Honeycomb" msgstr "Plaster miodu 3D" -#: src/slic3r/GUI/Mouse3DController.cpp:274 +#: src/slic3r/GUI/NotificationManager.hpp:318 +msgid "3D Mouse disconnected." +msgstr "Odłączono 3D Mouse." + +#: src/slic3r/GUI/Mouse3DController.cpp:263 msgid "3Dconnexion settings" msgstr "Ustawienia 3Dconnexion" -#: src/slic3r/GUI/Plater.cpp:5038 +#: src/slic3r/GUI/Plater.cpp:5167 #, c-format msgid "3MF file exported to %s" msgstr "Plik 3MF wyeksportowany do %s" -#: src/slic3r/GUI/ConfigWizard.cpp:1979 +#: src/slic3r/GUI/ConfigWizard.cpp:2490 msgid "< &Back" msgstr "<&Wstecz" -#: src/libslic3r/PrintConfig.cpp:287 +#: src/libslic3r/PrintConfig.cpp:321 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 "Wyrażenie logiczne (Boole'owskie) używające wartości konfiguracji aktywnego profilu druku. Jeśli to wyrażenie jest prawdziwe to znaczy, że aktywny profil jest kompatybilny z aktywnym profilem druku." -#: src/libslic3r/PrintConfig.cpp:272 +#: src/libslic3r/PrintConfig.cpp:306 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 "Wyrażenie logiczne (Boole'owskie) używające wartości konfiguracji aktywnego profilu drukarki. Jeśli to wyrażenie jest prawdziwe to znaczy, że aktywny profil jest kompatybilny z drukarką." -#: src/slic3r/GUI/Tab.cpp:975 +#: src/slic3r/GUI/Tab.cpp:1237 msgid "A copy of the current system preset will be created, which will be detached from the system preset." msgstr "Zostanie utworzona kopia obecnego zestawu ustawień i odłączona od ustawień systemowych." -#: src/slic3r/GUI/ConfigWizard.cpp:1034 +#: src/slic3r/GUI/ConfigWizard.cpp:1400 msgid "A rule of thumb is 160 to 230 °C for PLA, and 215 to 250 °C for ABS." msgstr "Generalną zasadą jest 160 do 230 °C dla PLA i 215 do 250 °C dla ABS." -#: src/slic3r/GUI/ConfigWizard.cpp:1048 +#: src/slic3r/GUI/ConfigWizard.cpp:1414 msgid "A rule of thumb is 60 °C for PLA and 110 °C for ABS. Leave zero if you have no heated bed." msgstr "Generalną zasadą jest 60 °C dla PLA i 110 °C dla ABS. Ustaw zero jeśli nie masz podgrzewanego stołu." -#: src/slic3r/GUI/GLCanvas3D.cpp:686 -msgid "A toolpath outside the print area was detected" -msgstr "Wykryto ścieżkę narzędzia poza obszarem roboczym" +#: src/slic3r/GUI/GLCanvas3D.cpp:634 +msgid "A toolpath outside the print area was detected." +msgstr "Wykryto ścieżkę narzędzia poza obszarem roboczym." -#: src/slic3r/GUI/AboutDialog.cpp:199 +#: src/slic3r/GUI/AboutDialog.cpp:212 src/slic3r/GUI/AboutDialog.cpp:215 #, c-format msgid "About %s" msgstr "O %s" -#: src/slic3r/GUI/GLCanvas3D.cpp:959 +#: src/slic3r/GUI/GCodeViewer.cpp:2189 +msgid "above" +msgstr "ponad" + +#: src/slic3r/GUI/GLCanvas3D.cpp:965 #, c-format msgid "above %.2f mm" msgstr "powyżej %.2f mm" -#: src/libslic3r/PrintConfig.cpp:1569 +#: src/libslic3r/PrintConfig.cpp:1677 msgid "Above Z" msgstr "Powyżej Z" -#: src/slic3r/GUI/Tab.cpp:1164 +#: src/slic3r/GUI/Tab.cpp:1494 msgid "Acceleration control (advanced)" msgstr "Ustawienia przyspieszeń (zaawansowane)" -#: src/libslic3r/PrintConfig.cpp:2925 +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:221 +#: src/libslic3r/PrintConfig.cpp:3089 msgid "Accuracy" msgstr "Dokładność" +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:59 +msgid "Accurate" +msgstr "Dokładna" + #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:78 msgid "Activate" msgstr "Aktywacja" @@ -383,67 +432,75 @@ msgstr "Aktywacja" msgid "Active" msgstr "Aktywny" -#: src/slic3r/GUI/DoubleSlider.cpp:1135 src/slic3r/GUI/GUI_ObjectList.cpp:1705 +#: src/slic3r/GUI/DoubleSlider.cpp:1264 src/slic3r/GUI/GUI_ObjectList.cpp:1833 msgid "active" msgstr "aktywny" -#: src/slic3r/GUI/GLCanvas3D.cpp:267 +#: src/slic3r/GUI/GLCanvas3D.cpp:254 msgid "Adaptive" msgstr "Adaptacyjny" -#: src/slic3r/GUI/Tab.cpp:241 -msgid "Add a new printer" -msgstr "Dodaj nową drukarkę" +#: src/libslic3r/PrintConfig.cpp:894 +msgid "Adaptive Cubic" +msgstr "Sześcienny adaptacyjny" -#: src/libslic3r/PrintConfig.cpp:2782 +#: src/slic3r/GUI/SavePresetDialog.cpp:314 +msgid "Add \"%1%\" as a next preset for the the physical printer \"%2%\"" +msgstr "Dodaj \"%1%\" jako kolejny zestaw ustawień dla fizycznej drukarki \"%2%\"" + +#: src/libslic3r/PrintConfig.cpp:2946 msgid "Add a pad underneath the supported model" msgstr "Dodaj podkładkę pod podporami modelu" -#: src/libslic3r/PrintConfig.cpp:2058 +#: src/libslic3r/PrintConfig.cpp:2200 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 "Dodaj osłonę (pojedynczą linię) wokół podpory bazowej. Sprawi to, że podpory będą stabilniejsze, ale też trudniejsze do usunięcia." -#: src/slic3r/GUI/DoubleSlider.cpp:991 +#: src/slic3r/GUI/DoubleSlider.cpp:1114 msgid "Add another code - Ctrl + Left click" msgstr "Dodaj kolejny kod - Ctrl + kliknij lewym przyciskiem" -#: src/slic3r/GUI/DoubleSlider.cpp:992 +#: src/slic3r/GUI/DoubleSlider.cpp:1115 msgid "Add another code - Right click" msgstr "Dodaj kolejny kod - kliknij prawym przyciskiem" -#: src/slic3r/GUI/DoubleSlider.cpp:1477 +#: src/slic3r/GUI/DoubleSlider.cpp:1665 msgid "Add color change" msgstr "Dodaj zmianę koloru" -#: src/slic3r/GUI/DoubleSlider.cpp:1180 +#: src/slic3r/GUI/DoubleSlider.cpp:1307 msgid "Add color change (%1%) for:" msgstr "Dodaj zmianę koloru (%1%) dla:" -#: src/slic3r/GUI/DoubleSlider.cpp:988 +#: src/slic3r/GUI/DoubleSlider.cpp:1111 msgid "Add color change - Left click" msgstr "Dodaj zmianę koloru - kliknij lewym przyciskiem" -#: src/slic3r/GUI/DoubleSlider.cpp:986 +#: src/slic3r/GUI/DoubleSlider.cpp:1109 msgid "Add color change - Left click for predefined color or Shift + Left click for custom color selection" msgstr "Dodaj zmianę koloru - kliknij lewym przyciskiem dla predefiniowanego koloru lub wciśnij Shift + lewy przycisk dla wyboru własnego koloru" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:218 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:219 msgid "Add color change marker for current layer" msgstr "Dodaj punkt zmiany filamentu na obecnej warstwie" -#: src/slic3r/GUI/DoubleSlider.cpp:1490 +#: src/slic3r/GUI/DoubleSlider.cpp:1682 msgid "Add custom G-code" msgstr "Dodaj własny G-code" -#: src/slic3r/GUI/GLCanvas3D.cpp:240 +#: src/slic3r/GUI/DoubleSlider.cpp:1679 +msgid "Add custom template" +msgstr "Dodaj własny szablon" + +#: src/slic3r/GUI/GLCanvas3D.cpp:235 msgid "Add detail" msgstr "Wyższa szczegółowość" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:421 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:308 msgid "Add drainage hole" msgstr "Dodaj otwór odpływowy" -#: src/slic3r/GUI/DoubleSlider.cpp:984 +#: src/slic3r/GUI/DoubleSlider.cpp:1107 msgid "Add extruder change - Left click" msgstr "Dodaj zmianę ekstrudera - kliknij lewym przyciskiem" @@ -451,30 +508,30 @@ msgstr "Dodaj zmianę ekstrudera - kliknij lewym przyciskiem" msgid "Add extruder to sequence" msgstr "Dodaj ekstruder do sekwencji" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1993 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2152 msgid "Add Generic Subobject" msgstr "Dodaj Standardowy Model Podrzędny" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2896 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2925 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2943 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3297 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3325 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3345 msgid "Add Height Range" msgstr "Dodaj zakres wysokości" -#: src/slic3r/GUI/GLCanvas3D.cpp:4526 src/slic3r/GUI/Plater.cpp:3788 -#: src/slic3r/GUI/Plater.cpp:3800 src/slic3r/GUI/Plater.cpp:3940 +#: src/slic3r/GUI/GLCanvas3D.cpp:4892 src/slic3r/GUI/Plater.cpp:3708 +#: src/slic3r/GUI/Plater.cpp:3720 src/slic3r/GUI/Plater.cpp:3858 msgid "Add instance" msgstr "Dodaj instancję" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:159 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:153 msgid "Add Instance of the selected object" msgstr "Dodaj instancję wybranego modelu" -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:162 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:165 msgid "Add layer range" msgstr "Dodaj zakres warstw" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2328 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2692 msgid "Add Layers" msgstr "Dodaj Warstwy" @@ -482,12 +539,12 @@ msgstr "Dodaj Warstwy" msgid "Add modifier" msgstr "Dodaj modyfikator" -#: src/libslic3r/PrintConfig.cpp:479 -#, no-c-format +#: src/libslic3r/PrintConfig.cpp:515 +#, c-format msgid "Add more perimeters when needed for avoiding gaps in sloping walls. Slic3r keeps adding perimeters, until more than 70% of the loop immediately above is supported." -msgstr "Dodaj więcej obrysów, aby uniknąć przerw przy pochyłych ścianach. Slic3r będzie dodawał tyle obrysów, ile jest potrzebne aby podeprzeć co najmniej 70% grubości ściany kolejnej warstwy." +msgstr "Dodaj więcej obrysów, aby uniknąć przerw przy pochyłych ścianach. PrusaSlicer będzie dodawał tyle obrysów, ile jest potrzebne aby podeprzeć co najmniej 70% grubości ściany kolejnej warstwy." -#: src/slic3r/GUI/Plater.cpp:3940 +#: src/slic3r/GUI/Plater.cpp:3858 msgid "Add one more instance of the selected object" msgstr "Dodaj kolejną instancję wybranego modelu" @@ -495,54 +552,63 @@ msgstr "Dodaj kolejną instancję wybranego modelu" msgid "Add part" msgstr "Dodaj część" -#: src/slic3r/GUI/DoubleSlider.cpp:1487 +#: src/slic3r/GUI/DoubleSlider.cpp:1675 msgid "Add pause print" -msgstr "Dodaj pauzę podczas druku" +msgstr "Dodaj pauzę" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1363 +#: src/slic3r/GUI/PresetComboBoxes.cpp:627 +#: src/slic3r/GUI/PresetComboBoxes.cpp:674 +msgid "Add physical printer" +msgstr "Dodaj fizyczną drukarkę" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1210 msgid "Add point" msgstr "Dodaj punkt" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1366 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1213 msgid "Add point to selection" msgstr "Dodaj punkt do zaznaczenia" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1509 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:180 +msgid "Add preset for this printer device" +msgstr "Dodaj zestaw ustawień do tej drukarki" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1640 msgid "Add settings" msgstr "Dodaj ustawienia" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1386 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1517 msgid "Add Settings Bundle for Height range" -msgstr "Dodaj Paczkę Ustawień dla Zakresu Wysokości" +msgstr "Dodaj paczkę ustawień dla zakresu wysokości" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1388 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1519 msgid "Add Settings Bundle for Object" -msgstr "Dodaj Paczkę Ustawień dla Modelu" +msgstr "Dodaj paczkę ustawień dla modelu" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1387 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1518 msgid "Add Settings Bundle for Sub-object" -msgstr "Dodaj Paczkę Ustawień dla Modelu Podrzędnego" +msgstr "Dodaj paczkę ustawień dla modelu podrzędnego" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1314 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1445 msgid "Add Settings for Layers" -msgstr "Dodaj Ustawienia dla Warstw" +msgstr "Dodaj ustawienia dla warstw" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1316 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1447 msgid "Add Settings for Object" -msgstr "Dodaj Ustawienia dla Modelu" +msgstr "Dodaj ustawienia dla modelu" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1315 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1446 msgid "Add Settings for Sub-object" -msgstr "Dodaj Ustawienia dla Modelu Podrzędnego" +msgstr "Dodaj ustawienia dla modelu podrzędnego" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1793 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2051 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1953 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2210 msgid "Add Shape" msgstr "Dodaj kształt" -#: src/libslic3r/PrintConfig.cpp:409 +#: src/libslic3r/PrintConfig.cpp:443 msgid "Add solid infill near sloping surfaces to guarantee the vertical shell thickness (top+bottom solid layers)." -msgstr "Dodaj zwarte wypełnienie przy pochyłych powierzchniach aby zagwarantować odpowiednią grubość warstwy (suma górnych i dolnych zwartych warstw)." +msgstr "Dodaj zwarte wypełnienie przy pochyłych powierzchniach, aby zagwarantować odpowiednią grubość warstwy (suma górnych i dolnych zwartych warstw)." #: src/slic3r/GUI/GUI_ObjectList.cpp:54 msgid "Add support blocker" @@ -552,11 +618,19 @@ msgstr "Dodaj blokadę podpór" msgid "Add support enforcer" msgstr "Dodaj wymuszenie podpór" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:494 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:374 msgid "Add support point" msgstr "Dodaj punkt podpory" -#: src/slic3r/GUI/GLCanvas3D.cpp:4467 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:371 +msgid "Add supports" +msgstr "Dodaj podpory" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:293 +msgid "Add supports by angle" +msgstr "Dodaj podpory wg kąta" + +#: src/slic3r/GUI/GLCanvas3D.cpp:4833 msgid "Add..." msgstr "Dodaj..." @@ -564,23 +638,29 @@ msgstr "Dodaj..." msgid "Add/Remove filaments" msgstr "Dodaj/usuń filamenty" -#: src/slic3r/GUI/Preset.cpp:1201 +#: src/slic3r/GUI/PresetComboBoxes.cpp:813 msgid "Add/Remove materials" msgstr "Dodaj/usuń materiały" -#: src/slic3r/GUI/Preset.cpp:1203 +#: src/slic3r/GUI/PresetComboBoxes.cpp:622 +#: src/slic3r/GUI/PresetComboBoxes.cpp:669 +msgid "Add/Remove presets" +msgstr "Dodaj/usuń zestawy ustawień" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:815 +#: src/slic3r/GUI/PresetComboBoxes.cpp:972 msgid "Add/Remove printers" msgstr "Dodaj/usuń drukarki" -#: src/slic3r/GUI/Tab.cpp:970 +#: src/slic3r/GUI/Tab.cpp:1288 msgid "Additional information:" msgstr "Dodatkowe informacje:" -#: src/slic3r/GUI/GUI_ObjectSettings.cpp:59 +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:62 msgid "Additional Settings" -msgstr "Ustawienia Dodatkowe" +msgstr "Ustawienia dodatkowe" -#: src/slic3r/GUI/ConfigWizard.cpp:791 +#: src/slic3r/GUI/ConfigWizard.cpp:1150 msgid "Additionally a backup snapshot of the whole configuration is created before an update is applied." msgstr "Dodatkowa kopia zrzutu całej konfiguracji jest tworzona przed zainstalowaniem aktualizacji." @@ -588,23 +668,22 @@ msgstr "Dodatkowa kopia zrzutu całej konfiguracji jest tworzona przed zainstalo msgid "Address" msgstr "Adres" -#: src/slic3r/GUI/GUI_App.cpp:814 src/slic3r/GUI/GUI_ObjectList.cpp:104 -#: src/slic3r/GUI/GUI_ObjectList.cpp:622 src/slic3r/GUI/Tab.cpp:1087 -#: src/slic3r/GUI/Tab.cpp:1102 src/slic3r/GUI/Tab.cpp:1201 -#: src/slic3r/GUI/Tab.cpp:1204 src/slic3r/GUI/Tab.cpp:1470 -#: src/slic3r/GUI/Tab.cpp:1967 src/slic3r/GUI/Tab.cpp:3661 -#: src/slic3r/GUI/wxExtensions.cpp:754 src/libslic3r/PrintConfig.cpp:88 -#: src/libslic3r/PrintConfig.cpp:119 src/libslic3r/PrintConfig.cpp:223 -#: src/libslic3r/PrintConfig.cpp:1037 src/libslic3r/PrintConfig.cpp:2276 -#: src/libslic3r/PrintConfig.cpp:2448 +#: src/slic3r/GUI/GUI_ObjectList.cpp:102 src/slic3r/GUI/GUI_ObjectList.cpp:661 +#: src/slic3r/GUI/Tab.cpp:1409 src/slic3r/GUI/Tab.cpp:1430 +#: src/slic3r/GUI/Tab.cpp:1531 src/slic3r/GUI/Tab.cpp:1534 +#: src/slic3r/GUI/Tab.cpp:1816 src/slic3r/GUI/Tab.cpp:2152 +#: src/slic3r/GUI/Tab.cpp:4080 src/libslic3r/PrintConfig.cpp:90 +#: src/libslic3r/PrintConfig.cpp:121 src/libslic3r/PrintConfig.cpp:257 +#: src/libslic3r/PrintConfig.cpp:1081 src/libslic3r/PrintConfig.cpp:2419 +#: src/libslic3r/PrintConfig.cpp:2591 msgid "Advanced" -msgstr "Zaawansowany" +msgstr "Zaawansowane" -#: src/slic3r/GUI/ConfigWizard.cpp:821 +#: src/slic3r/GUI/ConfigWizard.cpp:1180 msgid "Advanced mode" msgstr "Tryb Zaawansowany" -#: src/slic3r/GUI/GUI_App.cpp:814 +#: src/slic3r/GUI/GUI_App.cpp:1506 msgid "Advanced View Mode" msgstr "Widok Zaawansowany" @@ -612,124 +691,140 @@ msgstr "Widok Zaawansowany" msgid "Advanced: Output log" msgstr "Zaawansowane: log wyjściowy" -#: src/libslic3r/PrintConfig.cpp:668 +#: src/libslic3r/PrintConfig.cpp:704 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 stable. Before purging the print head into an infill or a sacrificial object, Slic3r will always prime this amount of material into the wipe tower to produce successive infill or sacrificial object extrusions reliably." -msgstr "Po zmianie narzędzia (filamentu), dokładna pozycja końcówki nowo załadowanego filamentu nie jest znana i najprawdopodobniej ciśnienie w ekstruderze nie jest jeszcze ustabilizowane. Przed czyszczeniem dyszy na wypełnieniu lub zbędnym modelu, Slic3r spowoduje wytłoczenie tej ilości filamentu na wieży czyszczącej, aby wydrukować dobre wypełnienie lub zbędny model." +msgstr "Po zmianie narzędzia (filamentu), dokładna pozycja końcówki nowo załadowanego filamentu nie jest znana i najprawdopodobniej ciśnienie w ekstruderze nie jest jeszcze ustabilizowane. Przed czyszczeniem dyszy na wypełnieniu lub zbędnym modelu, PrusaSlicer spowoduje wytłoczenie tej ilości filamentu na wieży czyszczącej, aby wydrukować dobre wypełnienie lub zbędny model." -#: src/slic3r/GUI/Tab.cpp:1994 src/libslic3r/PrintConfig.cpp:1080 +#: src/slic3r/GUI/Tab.cpp:2182 src/libslic3r/PrintConfig.cpp:1173 msgid "After layer change G-code" msgstr "G-code wykonywany po zmianie warstwy" -#: src/libslic3r/PrintConfig.cpp:3398 +#: src/libslic3r/PrintConfig.cpp:3597 msgid "Align the model to the given point." msgstr "Wyrównaj model z danym punktem." -#: src/libslic3r/PrintConfig.cpp:3397 +#: src/libslic3r/PrintConfig.cpp:3596 msgid "Align XY" msgstr "Wyrównaj XY" -#: src/libslic3r/PrintConfig.cpp:1631 +#: src/libslic3r/PrintConfig.cpp:1739 msgid "Aligned" msgstr "Wyrównany" -#: src/slic3r/GUI/ConfigWizard.cpp:290 src/slic3r/GUI/ConfigWizard.cpp:573 -#: src/slic3r/GUI/Tab.cpp:3174 +#: src/slic3r/GUI/ConfigWizard.cpp:308 src/slic3r/GUI/ConfigWizard.cpp:598 +#: src/slic3r/GUI/Tab.cpp:3507 src/slic3r/GUI/UnsavedChangesDialog.cpp:921 msgid "All" msgstr "Wszystko" -#: src/libslic3r/Print.cpp:1219 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:197 +msgid "All gizmos: Rotate - left mouse button; Pan - right mouse button" +msgstr "Wszystkie uchwyty: obróć - lewy przycisk, przesuń - prawy przycisk" + +#: src/slic3r/GUI/ConfigWizard.cpp:694 +msgid "All installed printers are compatible with the selected filament." +msgstr "Wszystkie zainstalowane drukarki są kompatybilne z wybranym filamentem." + +#: src/libslic3r/Print.cpp:1245 msgid "All objects are outside of the print volume." msgstr "Wszystkie modele znajdują się poza obszarem roboczym." -#: src/slic3r/GUI/Plater.cpp:4669 +#: src/slic3r/GUI/Plater.cpp:4774 msgid "All objects will be removed, continue?" msgstr "Wszystkie modele zostaną usunięte. Kontynuować?" -#: src/slic3r/GUI/ConfigWizard.cpp:289 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:737 +msgid "All settings changes will be discarded." +msgstr "Wszystkie zmiany ustawień zostaną odrzucone." + +#: src/slic3r/GUI/ConfigWizard.cpp:307 msgid "All standard" msgstr "Wszystkie podstawowe" -#: src/libslic3r/Zipper.cpp:62 +#: src/libslic3r/miniz_extension.cpp:121 msgid "allocation failed" msgstr "niepowodzenie alokacji" -#: src/slic3r/GUI/Plater.cpp:3995 +#: src/slic3r/GUI/Plater.cpp:3915 msgid "Along X axis" msgstr "Wzdłuż osi X" -#: src/slic3r/GUI/Plater.cpp:3997 +#: src/slic3r/GUI/Plater.cpp:3917 msgid "Along Y axis" msgstr "Wzdłuż osi Y" -#: src/slic3r/GUI/Plater.cpp:3999 +#: src/slic3r/GUI/Plater.cpp:3919 msgid "Along Z axis" msgstr "Wzdłuż osi Z" -#: src/slic3r/GUI/ConfigWizard.cpp:222 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:160 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:141 +msgid "Alt + Mouse wheel" +msgstr "Alt + kółko myszy" + +#: src/slic3r/GUI/ConfigWizard.cpp:240 msgid "Alternate nozzles:" msgstr "Inne rozmiary dysz:" -#: src/slic3r/GUI/Plater.cpp:5002 +#: src/slic3r/GUI/Preferences.cpp:163 +msgid "Always ask for unsaved changes when selecting new preset" +msgstr "Zawsze pytaj o niezapisane zmiany przy wyborze nowego zestawu ustawień" + +#: src/slic3r/GUI/Plater.cpp:5135 #, c-format msgid "AMF file exported to %s" msgstr "Plik AMF wyeksportowany do %s" -#: src/slic3r/GUI/GLCanvas3D.cpp:690 +#: src/slic3r/GUI/GLCanvas3D.cpp:638 msgid "" -"An object outside the print area was detected\n" -"Resolve the current problem to continue slicing" +"An object outside the print area was detected.\n" +"Resolve the current problem to continue slicing." msgstr "" -"Wykryto model poza obszarem roboczym\n" -"Usuń problem, aby kontynuować cięcie" +"Wykryto model poza obszarem roboczym.\n" +"Rozwiąż problem, aby kontynuować cięcie." -#: src/slic3r/GUI/GLCanvas3D.cpp:685 -msgid "An object outside the print area was detected" -msgstr "Wykryto model poza obszarem roboczym" +#: src/slic3r/GUI/GLCanvas3D.cpp:633 +msgid "An object outside the print area was detected." +msgstr "Wykryto model poza obszarem roboczym." -#: src/slic3r/GUI/Tab.cpp:2943 -msgid "and it has the following unsaved changes:" -msgstr "i ma następujące niezapisane zmiany:" - -#: src/slic3r/GUI/Plater.cpp:3170 +#: src/slic3r/GUI/Plater.cpp:2972 msgid "Another export job is currently running." msgstr "W tej chwili trwa inny proces eksportu." -#: src/slic3r/GUI/KBShortcutsDialog.cpp:168 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:169 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:162 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:163 msgid "Any arrow" msgstr "Jakakolwiek strzałka" -#: src/slic3r/GUI/Tab.cpp:965 +#: src/slic3r/GUI/Tab.cpp:1283 msgid "Any modifications should be saved as a new preset inherited from this one." msgstr "Każda modyfikacja powinna zostać zapisana jako nowy zestaw ustawień dziedziczony z obecnego." -#: src/libslic3r/PrintConfig.cpp:104 +#: src/libslic3r/PrintConfig.cpp:106 msgid "API Key / Password" msgstr "Klucz API / hasło" -#: src/slic3r/GUI/GUI_App.cpp:810 +#: src/slic3r/GUI/GUI_App.cpp:1493 msgid "Application preferences" msgstr "Preferencje aplikacji" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:52 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1374 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:51 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1221 msgid "Apply changes" msgstr "Zastosuj zmiany" -#: src/libslic3r/PrintConfig.cpp:575 src/libslic3r/PrintConfig.cpp:1708 +#: src/libslic3r/PrintConfig.cpp:611 src/libslic3r/PrintConfig.cpp:1823 msgid "approximate seconds" msgstr "szacowane sekundy" -#: src/libslic3r/PrintConfig.cpp:428 src/libslic3r/PrintConfig.cpp:854 +#: src/libslic3r/PrintConfig.cpp:464 src/libslic3r/PrintConfig.cpp:892 msgid "Archimedean Chords" msgstr "Spirala Archimedesa" -#: src/libslic3r/Zipper.cpp:88 +#: src/libslic3r/miniz_extension.cpp:147 msgid "archive is too large" msgstr "archiwum jest zbyt duże" -#. TRN remove/delete -#: src/slic3r/GUI/Tab.cpp:3123 +#: src/slic3r/GUI/Tab.cpp:3420 msgid "Are you sure you want to %1% the selected preset?" msgstr "Czy na pewno chcesz %1% ten zestaw ustawień?" @@ -741,97 +836,125 @@ msgstr "" "Czy na pewno chcesz przerwać flashowanie firmware?\n" "Może to spowodować nieprzewidziane problemy z drukarką!" -#: src/slic3r/GUI/DoubleSlider.cpp:1903 src/slic3r/GUI/DoubleSlider.cpp:1924 +#: src/slic3r/GUI/DoubleSlider.cpp:2122 src/slic3r/GUI/DoubleSlider.cpp:2142 msgid "Are you sure you want to continue?" msgstr "Czy na pewno chcesz kontynuować?" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1269 +#: src/slic3r/GUI/Tab.cpp:3392 +msgid "Are you sure you want to delete \"%1%\" preset from the physical printer \"%2%\"?" +msgstr "Czy na pewno chcesz usunąć zestaw ustawień \"%1%\" z fizycznej drukarki \"%2%\"?" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:658 +msgid "Are you sure you want to delete \"%1%\" printer?" +msgstr "Czy na pewno chcesz usunąć drukarkę \"%1%\"?" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1128 msgid "Are you sure you want to do it?" msgstr "Czy na pewno chcesz to zrobić?" -#: src/libslic3r/PrintConfig.cpp:2423 +#: src/libslic3r/PrintConfig.cpp:2566 msgid "Area fill" msgstr "Wypełnienie obszaru" -#: src/slic3r/GUI/Plater.cpp:641 +#: src/slic3r/GUI/Plater.cpp:507 msgid "Around object" msgstr "Wokół modelu" -#: src/slic3r/GUI/GLCanvas3D.cpp:4493 src/slic3r/GUI/KBShortcutsDialog.cpp:157 -#: src/slic3r/GUI/Plater.cpp:2754 +#: src/slic3r/GUI/GLCanvas3D.cpp:4859 src/slic3r/GUI/KBShortcutsDialog.cpp:151 +#: src/slic3r/GUI/Plater.cpp:1549 msgid "Arrange" msgstr "Rozmieść" -#: src/slic3r/GUI/GLCanvas3D.cpp:4493 src/slic3r/GUI/KBShortcutsDialog.cpp:158 +#: src/slic3r/GUI/GLCanvas3D.cpp:4859 src/slic3r/GUI/KBShortcutsDialog.cpp:152 msgid "Arrange selection" msgstr "Rozmieść zaznaczone" -#: src/libslic3r/PrintConfig.cpp:3443 +#: src/libslic3r/PrintConfig.cpp:3642 msgid "Arrange the supplied models in a plate and merge them in a single model in order to perform actions once." msgstr "Ułóż modele na stole i połącz je w jedną grupę, aby zastosować ustawienia do wszystkich na raz." -#: src/slic3r/GUI/Plater.cpp:2813 +#: src/slic3r/GUI/Jobs/ArrangeJob.cpp:149 msgid "Arranging" msgstr "Układanie" -#: src/slic3r/GUI/Plater.cpp:2841 +#: src/slic3r/GUI/Jobs/ArrangeJob.cpp:182 msgid "Arranging canceled." msgstr "Układanie anulowane." -#: src/slic3r/GUI/Plater.cpp:2842 +#: src/slic3r/GUI/Jobs/ArrangeJob.cpp:183 msgid "Arranging done." msgstr "Układanie zakończone." -#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:215 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:159 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:206 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 msgid "Arrow Down" msgstr "Strzałka w dół" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:166 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:160 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:217 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:229 msgid "Arrow Left" msgstr "Strzałka w lewo" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:167 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:217 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:161 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:218 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:230 msgid "Arrow Right" msgstr "Strzałka w prawo" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:204 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:214 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:158 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:215 msgid "Arrow Up" msgstr "Strzałka w górę" -#: src/slic3r/GUI/GLCanvas3DManager.cpp:290 +#: src/slic3r/GUI/GUI_App.cpp:246 +msgid "Artwork model by Nora Al-Badri and Jan Nikolai Nelles" +msgstr "Autorzy modelu: Nora Al-Badri oraz Jan Nikolai Nelles" + +#: src/slic3r/GUI/OpenGLManager.cpp:265 msgid "As a workaround, you may run PrusaSlicer with a software rendered 3D graphics by running prusa-slicer.exe with the --sw_renderer parameter." msgstr "Jako obejście, możesz uruchomić PrusaSlicer z grafiką 3D renderowaną przez oprogramowanie, dodając parametr --sw_renderer do prusa-slicer.exe." -#: src/slic3r/GUI/GUI_App.cpp:1086 src/slic3r/GUI/Plater.cpp:2313 -#: src/slic3r/GUI/Tab.cpp:2960 +#: src/slic3r/GUI/Preferences.cpp:154 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:659 +msgid "Ask for unsaved changes when closing application" +msgstr "Pytaj o niezapisane zmiany podczas zamykania programu" + +#: src/slic3r/GUI/Preferences.cpp:161 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:660 +msgid "Ask for unsaved changes when selecting new preset" +msgstr "Pytaj o niezapisane zmiany przy wyborze nowego zestawu ustawień" + +#: src/slic3r/GUI/GUI_App.cpp:1878 src/slic3r/GUI/Jobs/SLAImportJob.cpp:210 +#: src/slic3r/GUI/Plater.cpp:2256 src/slic3r/GUI/Tab.cpp:3189 msgid "Attention!" msgstr "Uwaga!" -#: src/libslic3r/PrintConfig.cpp:1871 +#: src/libslic3r/PrintConfig.cpp:150 +msgid "Authorization Type" +msgstr "Rodzaj autoryzacji" + +#: src/libslic3r/PrintConfig.cpp:2013 msgid "Auto generated supports" msgstr "Automatyczne generowanie podpór" -#: src/slic3r/GUI/Preferences.cpp:47 +#: src/slic3r/GUI/Preferences.cpp:64 msgid "Auto-center parts" msgstr "Rozmieść modele automatycznie" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:56 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1377 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:55 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1224 msgid "Auto-generate points" msgstr "Generuj punkty automatycznie" -#: src/slic3r/GUI/Plater.cpp:1157 +#: src/slic3r/GUI/Plater.cpp:1066 #, c-format msgid "Auto-repaired (%d errors)" msgstr "Naprawiono automatycznie (%d błędów)" -#: src/slic3r/GUI/GUI_ObjectList.cpp:339 +#: src/slic3r/GUI/GUI_ObjectList.cpp:386 #, c-format msgid "Auto-repaired (%d errors):" msgstr "Naprawiono automatycznie (%d błędów):" @@ -840,67 +963,79 @@ msgstr "Naprawiono automatycznie (%d błędów):" msgid "Autodetected" msgstr "Wykryto automatycznie" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1273 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1134 msgid "Autogenerate support points" msgstr "Automatycznie generuj punkty podpór" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1268 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1127 msgid "Autogeneration will erase all manually edited points." msgstr "Generowanie automatyczne usunie wszystkie ręcznie ustawione punkty." -#: src/slic3r/GUI/Tab.cpp:3632 +#: src/slic3r/GUI/Tab.cpp:4051 msgid "Automatic generation" msgstr "Generowanie automatyczne" -#: src/slic3r/GUI/ConfigWizard.cpp:761 +#: src/slic3r/GUI/ConfigWizard.cpp:1120 msgid "Automatic updates" msgstr "Automatyczne aktualizacje" -#: src/slic3r/GUI/MainFrame.cpp:536 +#: src/slic3r/GUI/MainFrame.cpp:1137 msgid "Automatically repair an STL file" msgstr "Automatyczna naprawa pliku STL" -#: src/slic3r/GUI/Tab.cpp:1171 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:129 +msgid "Autoset by angle" +msgstr "Ustaw automatycznie wg kąta" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:233 +msgid "Autoset custom supports" +msgstr "Automatyczne ustawienie podpór" + +#: src/slic3r/GUI/Tab.cpp:1501 msgid "Autospeed (advanced)" msgstr "Automatyczne dostosowanie prędkości (zaawansowane)" -#: src/libslic3r/PrintConfig.cpp:136 +#: src/libslic3r/PrintConfig.cpp:169 msgid "Avoid crossing perimeters" msgstr "Unikaj ruchów nad obrysami" -#: src/slic3r/GUI/Tab.cpp:3268 +#: src/slic3r/GUI/Tab.cpp:3705 msgid "BACK ARROW" msgstr "STRZAŁKA W TYŁ" -#: src/slic3r/GUI/Tab.cpp:3290 +#: src/slic3r/GUI/Tab.cpp:3727 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" "Click to reset all settings for the current option group to the last saved preset." msgstr "" "STRZAŁKA W TYŁ oznacza, że ustawienia zostały zmodyfikowane i nie odpowiadają tym z ostatnio zapisanego zestawu ustawień dla obecnej grupy opcji.\n" -"Kliknij aby zresetować wszystkie ustawienia w obecnej grupie opcji do tych z ostatnio zapisanego zestawu ustawień." +"Kliknij, aby zresetować wszystkie ustawienia w obecnej grupie opcji do tych z ostatnio zapisanego zestawu ustawień." -#: src/slic3r/GUI/Tab.cpp:3304 +#: src/slic3r/GUI/Tab.cpp:3741 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 "" "STRZAŁKA W TYŁ oznacza, że ustawienia zostały zmodyfikowane i nie odpowiadają tym z ostatnio zapisanego zestawu ustawień.\n" -"Kliknij aby zresetować wszystkie ustawienia do tych z ostatnio zapisanego zestawu ustawień." +"Kliknij, aby zresetować wszystkie ustawienia do tych z ostatnio zapisanego zestawu ustawień." -#: src/slic3r/GUI/Preferences.cpp:55 +#: src/slic3r/GUI/Preferences.cpp:72 msgid "Background processing" msgstr "Przetwarzanie w tle" -#: src/slic3r/GUI/GUI_ObjectList.cpp:351 +#: src/slic3r/GUI/GUI_ObjectList.cpp:398 msgid "backwards edges" msgstr "odwrócone krawędzie" -#: src/slic3r/GUI/MainFrame.cpp:174 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:60 +msgid "Balanced" +msgstr "Zbalansowana" + +#: src/slic3r/GUI/MainFrame.cpp:535 src/slic3r/GUI/MainFrame.cpp:537 msgid "based on Slic3r" msgstr "bazuje na projekcie Slic3r" -#: src/slic3r/GUI/Tab.cpp:1439 +#: src/slic3r/GUI/Tab.cpp:1785 msgid "Bed" msgstr "Stół" @@ -912,7 +1047,7 @@ msgstr "Własny model stołu" msgid "Bed custom texture" msgstr "Własna tekstura stołu" -#: src/slic3r/GUI/BedShapeDialog.hpp:59 src/slic3r/GUI/ConfigWizard.cpp:929 +#: src/slic3r/GUI/BedShapeDialog.hpp:98 src/slic3r/GUI/ConfigWizard.cpp:1295 msgid "Bed Shape" msgstr "Kształt stołu" @@ -920,23 +1055,23 @@ msgstr "Kształt stołu" msgid "Bed shape" msgstr "Kształt stołu" -#: src/slic3r/GUI/ConfigWizard.cpp:929 +#: src/slic3r/GUI/ConfigWizard.cpp:1295 msgid "Bed Shape and Size" msgstr "Kształt i rozmiar stołu roboczego" -#: src/libslic3r/PrintConfig.cpp:147 +#: src/libslic3r/PrintConfig.cpp:181 msgid "Bed temperature" msgstr "Temperatura stołu" -#: src/libslic3r/PrintConfig.cpp:145 +#: src/libslic3r/PrintConfig.cpp:178 msgid "Bed temperature for layers after the first one. Set this to zero to disable bed temperature control commands in the output." -msgstr "Temperatura stołu dla warstw powyżej pierwszej. Ustaw 0 aby wyłączyć kontrolowanie temperatury w pliku wyjściowym." +msgstr "Temperatura stołu dla warstw powyżej pierwszej. Ustaw 0, aby wyłączyć kontrolowanie temperatury w pliku wyjściowym." -#: src/slic3r/GUI/ConfigWizard.cpp:1051 +#: src/slic3r/GUI/ConfigWizard.cpp:1417 msgid "Bed Temperature:" msgstr "Temperatura stołu:" -#: src/slic3r/GUI/Tab.cpp:1988 src/libslic3r/PrintConfig.cpp:153 +#: src/slic3r/GUI/Tab.cpp:2175 src/libslic3r/PrintConfig.cpp:187 msgid "Before layer change G-code" msgstr "G-code wykonywany przed zmianą warstwy" @@ -944,143 +1079,191 @@ msgstr "G-code wykonywany przed zmianą warstwy" msgid "Before roll back" msgstr "Przez zmianą" -#: src/slic3r/GUI/Plater.cpp:640 +#: src/slic3r/GUI/Plater.cpp:506 msgid "Below object" msgstr "Pod modelem" -#: src/libslic3r/PrintConfig.cpp:1578 +#: src/libslic3r/PrintConfig.cpp:1686 msgid "Below Z" msgstr "Poniżej Z" -#: src/libslic3r/PrintConfig.cpp:164 +#: src/libslic3r/PrintConfig.cpp:198 msgid "Between objects G-code" msgstr "G-code wykonywany przy przejściach pomiędzy modelami" -#: src/slic3r/GUI/Tab.cpp:2006 +#: src/slic3r/GUI/Tab.cpp:2196 msgid "Between objects G-code (for sequential printing)" msgstr "G-code wykonywany przy przejściach pomiędzy modelami (druk sekwencyjny)" -#: src/libslic3r/PrintConfig.cpp:2489 src/libslic3r/PrintConfig.cpp:2490 -msgid "Bottle volume" -msgstr "Objętość butelki" +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:242 +msgid "Block" +msgstr "Blokuj" -#: src/libslic3r/PrintConfig.cpp:2496 src/libslic3r/PrintConfig.cpp:2497 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:32 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:383 +msgid "Block seam" +msgstr "Blokuj szew" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:373 +msgid "Block supports" +msgstr "Blokuj podpory" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:292 +msgid "Block supports by angle" +msgstr "Blokuj podpory wg kąta" + +#: src/libslic3r/PrintConfig.cpp:2632 src/libslic3r/PrintConfig.cpp:2633 +msgid "Bottle volume" +msgstr "Pojemność butelki" + +#: src/libslic3r/PrintConfig.cpp:2639 src/libslic3r/PrintConfig.cpp:2640 msgid "Bottle weight" msgstr "Waga butelki" #. 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:665 src/libslic3r/PrintConfig.cpp:174 -#: src/libslic3r/PrintConfig.cpp:183 +#: src/slic3r/GUI/MainFrame.cpp:962 src/slic3r/GUI/MainFrame.cpp:1282 +#: src/libslic3r/PrintConfig.cpp:208 src/libslic3r/PrintConfig.cpp:217 msgid "Bottom" msgstr "Dolne" -#: src/libslic3r/PrintConfig.cpp:435 +#: src/libslic3r/PrintConfig.cpp:471 msgid "Bottom fill pattern" msgstr "Wzór wypełnienia dolnej warstwy" -#: src/slic3r/GUI/PresetHints.cpp:342 +#: src/slic3r/GUI/PresetHints.cpp:340 msgid "Bottom is open." msgstr "Dół jest otwarty." -#: src/slic3r/GUI/PresetHints.cpp:336 +#: src/slic3r/GUI/PresetHints.cpp:334 msgid "Bottom shell is %1% mm thick for layer height %2% mm." msgstr "Dolna powłoka ma %1% mm grubości dla warstwy o wysokości %2% mm." -#: src/libslic3r/PrintConfig.cpp:177 +#: src/libslic3r/PrintConfig.cpp:211 msgid "Bottom solid layers" msgstr "Zwarte warstwy dolne" -#: src/slic3r/GUI/MainFrame.cpp:665 +#: src/slic3r/GUI/MainFrame.cpp:962 src/slic3r/GUI/MainFrame.cpp:1282 msgid "Bottom View" msgstr "Widok od dołu" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1432 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1464 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1468 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1563 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1595 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1599 msgid "Box" msgstr "Sześcian" -#: src/libslic3r/PrintConfig.cpp:193 +#: src/libslic3r/PrintConfig.cpp:227 msgid "Bridge" msgstr "Most" -#: src/libslic3r/PrintConfig.cpp:222 +#: src/libslic3r/PrintConfig.cpp:256 msgid "Bridge flow ratio" msgstr "Współczynnik przepływu przy mostach" -#: src/slic3r/GUI/GUI_Preview.cpp:243 src/libslic3r/ExtrusionEntity.cpp:316 +#: src/slic3r/GUI/GUI_Preview.cpp:308 src/libslic3r/ExtrusionEntity.cpp:321 +#: src/libslic3r/ExtrusionEntity.cpp:350 msgid "Bridge infill" msgstr "Wypełnienie mostu" -#: src/libslic3r/PrintConfig.cpp:234 +#: src/libslic3r/PrintConfig.cpp:268 msgid "Bridges" msgstr "Mosty" -#: src/libslic3r/PrintConfig.cpp:213 +#: src/libslic3r/PrintConfig.cpp:247 msgid "Bridges fan speed" msgstr "Prędkość wentylatora przy mostach" -#: src/libslic3r/PrintConfig.cpp:202 +#: src/libslic3r/PrintConfig.cpp:236 msgid "Bridging angle" msgstr "Kąt linii mostów" -#: src/libslic3r/PrintConfig.cpp:204 +#: 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 "Nadpisanie kąta linii mostów. Jeśli zostanie 0 to kąt zostanie obliczony automatycznie. W innym przypadku ustawiony kąt będzie dotyczył wszystkich mostów. Ustaw 180° dla kąta zerowego." -#: src/slic3r/GUI/PresetHints.cpp:219 +#: src/slic3r/GUI/PresetHints.cpp:218 msgid "Bridging volumetric" -msgstr "Mosty objętościowe" +msgstr "Mosty objętościowo" -#: src/slic3r/GUI/Plater.cpp:534 src/slic3r/GUI/Tab.cpp:1117 +#: src/slic3r/GUI/Plater.cpp:400 src/slic3r/GUI/Tab.cpp:1446 msgid "Brim" msgstr "Brim" -#: src/libslic3r/PrintConfig.cpp:244 +#: src/libslic3r/PrintConfig.cpp:278 msgid "Brim width" msgstr "Szerokość brim" -#: src/slic3r/GUI/FirmwareDialog.cpp:805 src/slic3r/GUI/Tab.cpp:1658 -#: src/slic3r/GUI/Tab.cpp:1721 +#: src/slic3r/GUI/FirmwareDialog.cpp:805 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:271 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:327 msgid "Browse" msgstr "Przeglądaj" -#: src/libslic3r/Zipper.cpp:82 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:45 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:28 +msgid "Brush shape" +msgstr "Kształt pędzla" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:44 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:27 +msgid "Brush size" +msgstr "Rozmiar pędzla" + +#: src/libslic3r/miniz_extension.cpp:141 msgid "buffer too small" msgstr "niewystarczający bufor" +#: src/slic3r/GUI/GUI_App.cpp:1152 +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 "" +"Od tej wersji PrusaSlicer nie pokazujemy już tej informacji w Ustawieniach drukarki.\n" +"Ustawienia będą dostępne w ustawieniach fizycznej drukarki." + #: src/slic3r/GUI/ButtonsDescription.cpp:16 msgid "Buttons And Text Colors Description" msgstr "Opis Przycisków i Kolorów Tekstu" -#: src/slic3r/GUI/PresetHints.cpp:223 +#: src/slic3r/GUI/GUI_App.cpp:1084 +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 "" +"Domyślnie nowe drukarki będą nazywane \"Printer N\" podczas tworzenia.\n" +"Uwaga: można to zmienić później w ustawieniach fizycznych drukarki." + +#: src/slic3r/GUI/PresetHints.cpp:222 msgid "by the print profile maximum" msgstr "maksimum zależny od profilu wydruku" -#: src/slic3r/GUI/Preferences.cpp:113 +#: src/slic3r/GUI/Preferences.cpp:178 msgid "Camera" msgstr "Widok" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:144 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:140 msgid "Camera view" msgstr "Widok kamery" -#: src/slic3r/GUI/ConfigWizard.cpp:1982 src/slic3r/GUI/FirmwareDialog.cpp:151 +#: src/slic3r/GUI/ConfigWizard.cpp:2493 src/slic3r/GUI/FirmwareDialog.cpp:151 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:245 #: src/slic3r/GUI/ProgressStatusBar.cpp:26 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:644 msgid "Cancel" msgstr "Anuluj" -#: src/slic3r/GUI/PrintHostDialogs.cpp:157 +#: src/slic3r/GUI/PrintHostDialogs.cpp:155 msgid "Cancel selected" msgstr "Anuluj wybrane" -#: src/slic3r/GUI/Plater.cpp:3669 src/slic3r/GUI/PrintHostDialogs.cpp:233 +#: src/slic3r/GUI/Plater.cpp:3589 src/slic3r/GUI/PrintHostDialogs.cpp:233 msgid "Cancelled" msgstr "Anulowano" -#: src/slic3r/GUI/Plater.cpp:3153 src/slic3r/GUI/PrintHostDialogs.cpp:232 +#: src/slic3r/GUI/Plater.cpp:2953 src/slic3r/GUI/PrintHostDialogs.cpp:232 msgid "Cancelling" msgstr "Anulowanie" @@ -1092,7 +1275,7 @@ msgstr "Anulowanie..." msgid "Cannot calculate extrusion width for %1%: Variable \"%2%\" not accessible." msgstr "Nie można przeliczyć szerokości ekstruzji dla %1%: zmienna \"%2%\" jest niedostępna." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3017 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3400 msgid "" "Cannot insert a new layer range after the current layer range.\n" "Current layer range overlaps with the next layer range." @@ -1100,7 +1283,7 @@ msgstr "" "Nie można wstawić nowego zakresu wysokości po obecnym.\n" "Zakres pokrywałby się z kolejnym." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3008 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3391 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" @@ -1110,7 +1293,7 @@ msgstr "" "Kolejny zakres jest zbyt niski, aby można było go podzielić\n" "z powodu minimalnej grubości warstwy." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3012 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3395 msgid "" "Cannot insert a new layer range between the current and the next layer range.\n" "The gap between the current layer range and the next layer range\n" @@ -1120,80 +1303,88 @@ msgstr "" "Odstęp pomiędzy zakresami jest niższy \n" "niż dozwolona minimalna wysokość warstwy." -#: src/slic3r/GUI/Tab.cpp:3073 +#: src/slic3r/GUI/SavePresetDialog.cpp:137 msgid "Cannot overwrite a system profile." msgstr "Nie można nadpisać profilu systemowego." -#: src/slic3r/GUI/Tab.cpp:3077 +#: src/slic3r/GUI/SavePresetDialog.cpp:142 msgid "Cannot overwrite an external profile." msgstr "Nie można nadpisać profilu zewnętrznego." -#: src/libslic3r/SLAPrint.cpp:613 +#: src/libslic3r/SLAPrint.cpp:627 msgid "Cannot proceed without support points! Add support points or disable support generation." msgstr "Nie można kontynuować bez punktów podpór! Dodaj punkty podpór lub wyłącz ich generowanie." -#: src/slic3r/GUI/Tab.cpp:1834 +#: src/slic3r/GUI/Tab.cpp:2068 src/slic3r/GUI/UnsavedChangesDialog.cpp:1066 msgid "Capabilities" msgstr "Możliwości" -#: src/slic3r/GUI/GUI_App.cpp:801 +#: src/slic3r/GUI/GUI_App.cpp:1481 msgid "Capture a configuration snapshot" msgstr "Zapisz zrzut konfiguracji" -#: src/libslic3r/PrintConfig.cpp:3424 +#: src/slic3r/GUI/ImGuiWrapper.cpp:801 src/slic3r/GUI/Search.cpp:458 +msgid "Category" +msgstr "Kategoria" + +#: src/libslic3r/PrintConfig.cpp:3623 msgid "Center" msgstr "Punkt centralny" -#: src/libslic3r/PrintConfig.cpp:3425 +#: src/libslic3r/PrintConfig.cpp:3624 msgid "Center the print around the given center." msgstr "Wyśrodkuj model wokół podanego punktu centralnego." -#: src/slic3r/GUI/Tab.cpp:1728 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:329 msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" msgstr "Pliki certyfikatów (*.crt, *.pem)|*.crt;*.pem|Wszystkie pliki|*.*" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:180 +#: src/slic3r/GUI/SavePresetDialog.cpp:313 +msgid "Change \"%1%\" to \"%2%\" for this physical printer \"%3%\"" +msgstr "Zmień \"%1%\" na \"%2%\" dla fizycznej drukarki \"%3%\"" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:174 msgid "Change camera type (perspective, orthographic)" msgstr "Zmień rodzaj widoku (perspektywiczny/ortograficzny)" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:885 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:693 msgid "Change drainage hole diameter" msgstr "Zmień średnicę otworu odpływowego" -#: src/slic3r/GUI/DoubleSlider.cpp:1144 src/slic3r/GUI/GUI_ObjectList.cpp:1671 +#: src/slic3r/GUI/DoubleSlider.cpp:1273 src/slic3r/GUI/GUI_ObjectList.cpp:1800 msgid "Change extruder" msgstr "Zmiana ekstrudera" -#: src/slic3r/GUI/GUI_ObjectList.cpp:536 +#: src/slic3r/GUI/GUI_ObjectList.cpp:574 msgid "Change Extruder" msgstr "Zmień Ekstruder" -#: src/slic3r/GUI/DoubleSlider.cpp:1145 +#: src/slic3r/GUI/DoubleSlider.cpp:1274 msgid "Change extruder (N/A)" msgstr "Zmień ekstruder (N/A)" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3997 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4484 msgid "Change Extruders" msgstr "Zmień Ekstrudery" -#: src/slic3r/GUI/GUI_ObjectSettings.cpp:152 +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:157 #, c-format msgid "Change Option %s" msgstr "Zmień Opcję %s" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3558 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4021 msgid "Change Part Type" msgstr "Zmień Rodzaj Elementu" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:820 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:694 msgid "Change point head diameter" msgstr "Zmień średnicę łącznika" -#: src/slic3r/GUI/Plater.cpp:3944 +#: src/slic3r/GUI/Plater.cpp:3862 msgid "Change the number of instances of the selected object" msgstr "Zmień liczbę kopii wybranego modelu" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1589 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1718 msgid "Change type" msgstr "Zmiana rodzaju" @@ -1201,125 +1392,172 @@ msgstr "Zmiana rodzaju" msgid "Changelog && Download" msgstr "Pobierz && Listę Zmian" -#: src/slic3r/GUI/GUI_App.cpp:442 +#: src/slic3r/GUI/GUI_App.cpp:1245 msgid "Changing of an application language" msgstr "Zmiana języka aplikacji" -#: src/slic3r/GUI/ConfigWizard.cpp:769 src/slic3r/GUI/Preferences.cpp:64 +#: src/slic3r/GUI/ConfigWizard.cpp:1128 src/slic3r/GUI/Preferences.cpp:81 msgid "Check for application updates" msgstr "Sprawdź aktualizacje aplikacji" -#: src/slic3r/GUI/GUI_App.cpp:802 +#: src/slic3r/GUI/GUI_App.cpp:1482 msgid "Check for configuration updates" msgstr "Sprawdzaj aktualizacje konfiguracji" -#: src/slic3r/GUI/GUI_App.cpp:802 +#: src/slic3r/GUI/GUI_App.cpp:1482 msgid "Check for updates" msgstr "Sprawdź akt&ualizacje" -#: src/slic3r/GUI/BedShapeDialog.cpp:532 +#: src/slic3r/GUI/BedShapeDialog.cpp:608 msgid "Choose a file to import bed texture from (PNG/SVG):" msgstr "Wybierz plik, z którego ma być zaimportowana tekstura stołu (PNG/SVG):" -#: src/slic3r/GUI/MainFrame.cpp:773 +#: src/slic3r/GUI/MainFrame.cpp:1474 msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" msgstr "Wybierz plik do pocięcia (STL/OBJ/AMF/3MF/PRUSA):" -#: src/slic3r/GUI/BedShapeDialog.cpp:555 +#: src/slic3r/GUI/BedShapeDialog.cpp:631 msgid "Choose an STL file to import bed model from:" msgstr "Wybierz plik STL, z którego ma być zaimportowany model stołu:" -#: src/slic3r/GUI/BedShapeDialog.cpp:487 +#: src/slic3r/GUI/BedShapeDialog.cpp:563 msgid "Choose an STL file to import bed shape from:" msgstr "Wybierz plik STL, z którego ma być zaimportowany kształt stołu:" -#: src/slic3r/GUI/GUI_App.cpp:555 +#: src/slic3r/GUI/GUI_App.cpp:1208 msgid "Choose one file (3MF/AMF):" msgstr "Wybierz jeden plik (3MF/AMF):" -#: src/slic3r/GUI/GUI_App.cpp:567 +#: src/slic3r/GUI/GUI_App.cpp:1233 +msgid "Choose one file (GCODE/.GCO/.G/.ngc/NGC):" +msgstr "Wybierz jeden plik (GCODE/.GCO/.G/.ngc/NGC):" + +#: src/slic3r/GUI/GUI_App.cpp:1220 msgid "Choose one or more files (STL/OBJ/AMF/3MF/PRUSA):" msgstr "Wybierz jeden lub więcej plików (STL/OBJ/AMF/3MF/PRUSA):" -#: src/slic3r/GUI/ConfigWizard.cpp:895 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:35 +msgid "Choose SLA archive:" +msgstr "Wybierz archiwum SLA:" + +#: src/slic3r/GUI/ConfigWizard.cpp:1261 msgid "Choose the type of firmware used by your printer." msgstr "Wybierz rodzaj firmware używanego przez Twoją drukarkę." -#: src/slic3r/GUI/BedShapeDialog.cpp:89 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:53 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:36 +msgid "Circle" +msgstr "Koło" + +#: src/slic3r/GUI/BedShapeDialog.cpp:142 msgid "Circular" msgstr "Okrągły" -#: src/slic3r/GUI/GLCanvas3D.cpp:4624 src/slic3r/GUI/GLCanvas3D.cpp:4657 -msgid "Click right mouse button to open History" -msgstr "Kliknij prawym przyciskiem myszy, aby otworzyć Historię" +#: src/slic3r/GUI/GLCanvas3D.cpp:5028 src/slic3r/GUI/GLCanvas3D.cpp:5067 +msgid "Click right mouse button to open/close History" +msgstr "Kliknij prawym przyciskiem myszy, aby otworzyć/zamknąć historię" -#: src/slic3r/GUI/GUI_ObjectList.cpp:404 +#: src/slic3r/GUI/GUI_ObjectList.cpp:451 msgid "Click the icon to change the object printable property" msgstr "Kliknij na ikonę, aby włączyć/wyłączyć drukowanie modelu" -#: src/slic3r/GUI/GUI_ObjectList.cpp:398 +#: src/slic3r/GUI/GUI_ObjectList.cpp:445 msgid "Click the icon to change the object settings" msgstr "Kliknij na ikonę, aby zmienić ustawienia modelu" -#: src/slic3r/GUI/Plater.cpp:343 +#: src/slic3r/GUI/PresetComboBoxes.cpp:566 msgid "Click to edit preset" -msgstr "Kliknij aby edytować zestaw ustawień" +msgstr "Kliknij, aby edytować zestaw ustawień" -#: src/libslic3r/PrintConfig.cpp:252 +#: src/slic3r/GUI/GCodeViewer.cpp:2071 +msgid "Click to hide" +msgstr "Kliknij, aby ukryć" + +#: src/slic3r/GUI/GCodeViewer.cpp:2071 +msgid "Click to show" +msgstr "Kliknij, aby pokazać" + +#: src/libslic3r/PrintConfig.cpp:286 msgid "Clip multi-part objects" msgstr "Przycinaj modele kilkuczęściowe" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:50 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:58 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:42 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:25 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:57 msgid "Clipping of view" msgstr "Widok przecinania" #: src/slic3r/GUI/FirmwareDialog.cpp:852 -#: src/slic3r/GUI/Mouse3DController.cpp:364 -#: src/slic3r/GUI/PrintHostDialogs.cpp:161 +#: src/slic3r/GUI/Mouse3DController.cpp:353 +#: src/slic3r/GUI/PrintHostDialogs.cpp:159 msgid "Close" msgstr "Zamknij" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:45 -#: src/libslic3r/PrintConfig.cpp:2934 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:44 +#: src/libslic3r/PrintConfig.cpp:3098 msgid "Closing distance" msgstr "Dystans domykania" -#: src/slic3r/GUI/Plater.cpp:1260 src/libslic3r/PrintConfig.cpp:582 +#: src/slic3r/GUI/MainFrame.cpp:1297 src/slic3r/GUI/Plater.cpp:2144 +msgid "Collapse sidebar" +msgstr "Zwiń pasek narzędzi" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:180 +msgid "Collapse/Expand the sidebar" +msgstr "Zwiń/rozwiń pasek narzędzi" + +#: src/slic3r/GUI/Plater.cpp:1198 src/libslic3r/PrintConfig.cpp:618 msgid "Color" msgstr "Kolor" -#: src/slic3r/GUI/DoubleSlider.cpp:1005 +#: src/slic3r/GUI/GCodeViewer.cpp:2410 src/slic3r/GUI/GCodeViewer.cpp:2438 +msgid "Color change" +msgstr "Zmiana koloru" + +#: src/slic3r/GUI/DoubleSlider.cpp:1130 msgid "Color change (\"%1%\")" msgstr "Zmiana koloru (\"%1%\")" -#: src/slic3r/GUI/DoubleSlider.cpp:1006 +#: src/slic3r/GUI/DoubleSlider.cpp:1131 msgid "Color change (\"%1%\") for Extruder %2%" msgstr "Zmiana koloru (\"%1%\") dla ekstrudera %2%" -#: src/slic3r/GUI/GLCanvas3D.cpp:995 +#: src/slic3r/GUI/GLCanvas3D.cpp:1001 #, c-format msgid "Color change for Extruder %d at %.2f mm" msgstr "Zmiana koloru dla ekstrudera %d na wysokości %.2f mm" -#: src/slic3r/GUI/GUI_Preview.cpp:228 src/slic3r/GUI/GUI_Preview.cpp:572 -#: src/libslic3r/GCode/PreviewData.cpp:359 +#: src/slic3r/GUI/Tab.cpp:2203 +msgid "Color Change G-code" +msgstr "G-code ze zmianą koloru" + +#: src/libslic3r/PrintConfig.cpp:1960 +msgid "Color change G-code" +msgstr "G-code ze zmianą koloru" + +#: src/slic3r/GUI/GCodeViewer.cpp:2531 src/slic3r/GUI/GUI_Preview.cpp:1475 +msgid "Color changes" +msgstr "Zmiany koloru" + +#: src/slic3r/GUI/GCodeViewer.cpp:2242 src/slic3r/GUI/GUI_Preview.cpp:282 +#: src/slic3r/GUI/GUI_Preview.cpp:784 src/libslic3r/GCode/PreviewData.cpp:364 msgid "Color Print" msgstr "Zmiana Koloru" -#: src/libslic3r/PrintConfig.cpp:260 +#: src/libslic3r/PrintConfig.cpp:294 msgid "Colorprint height" msgstr "Wysokość (warstwa) zmiany koloru" -#: src/libslic3r/PrintConfig.cpp:990 +#: src/libslic3r/PrintConfig.cpp:1034 msgid "Combine infill every" msgstr "Scalaj wypełnienie co" -#: src/libslic3r/PrintConfig.cpp:995 +#: src/libslic3r/PrintConfig.cpp:1039 msgid "Combine infill every n layers" msgstr "Scalaj wypełnienie co n warstw" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:154 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:148 msgid "Commands" msgstr "Komendy" @@ -1327,23 +1565,23 @@ msgstr "Komendy" msgid "Comment:" msgstr "Komentarz:" -#: src/slic3r/GUI/Tab.cpp:56 src/libslic3r/PrintConfig.cpp:280 +#: src/slic3r/GUI/Tab.cpp:107 src/libslic3r/PrintConfig.cpp:314 msgid "Compatible print profiles" msgstr "Kompatybilne profile druku" -#: src/libslic3r/PrintConfig.cpp:286 +#: src/libslic3r/PrintConfig.cpp:320 msgid "Compatible print profiles condition" msgstr "Warunki kompatybilności profili druku" -#: src/slic3r/GUI/Tab.cpp:50 src/libslic3r/PrintConfig.cpp:265 +#: src/slic3r/GUI/Tab.cpp:101 src/libslic3r/PrintConfig.cpp:299 msgid "Compatible printers" msgstr "Kompatybilne drukarki" -#: src/libslic3r/PrintConfig.cpp:271 +#: src/libslic3r/PrintConfig.cpp:305 msgid "Compatible printers condition" msgstr "Warunki kompatybilności z drukarką" -#: src/libslic3r/PrintConfig.cpp:304 +#: src/libslic3r/PrintConfig.cpp:338 msgid "Complete individual objects" msgstr "Druk sekwencyjny (model po modelu)" @@ -1351,27 +1589,27 @@ msgstr "Druk sekwencyjny (model po modelu)" msgid "Completed" msgstr "Zakończono" -#: src/libslic3r/Zipper.cpp:54 +#: src/libslic3r/miniz_extension.cpp:113 msgid "compression failed" msgstr "niepowodzenie kompresji" -#: src/libslic3r/PrintConfig.cpp:426 src/libslic3r/PrintConfig.cpp:849 +#: src/libslic3r/PrintConfig.cpp:462 src/libslic3r/PrintConfig.cpp:887 msgid "Concentric" msgstr "Koncentryczny" -#: src/slic3r/GUI/ConfigWizard.cpp:2110 +#: src/slic3r/GUI/ConfigWizard.cpp:2625 msgid "Configuration &Assistant" msgstr "&Asystent Konfiguracji" -#: src/slic3r/GUI/ConfigWizard.cpp:2113 +#: src/slic3r/GUI/ConfigWizard.cpp:2628 msgid "Configuration &Wizard" msgstr "Asystent Ko&nfiguracji" -#: src/slic3r/GUI/ConfigWizard.cpp:2109 +#: src/slic3r/GUI/ConfigWizard.cpp:2624 msgid "Configuration Assistant" msgstr "Asystent konfiguracji" -#: src/libslic3r/PrintConfig.cpp:1316 +#: src/libslic3r/PrintConfig.cpp:1424 msgid "Configuration notes" msgstr "Notatki konfiguracyjne" @@ -1387,11 +1625,15 @@ msgstr "Aktualizacja konfiguracji" msgid "Configuration update is available" msgstr "Dostępna jest aktualizacja konfiguracji" -#: src/slic3r/GUI/UpdateDialogs.cpp:303 +#: src/slic3r/GUI/NotificationManager.hpp:321 +msgid "Configuration update is available." +msgstr "Dostępna jest aktualizacja konfiguracji." + +#: src/slic3r/GUI/UpdateDialogs.cpp:304 msgid "Configuration updates" msgstr "Aktualizacje konfiguracji" -#: src/slic3r/GUI/ConfigWizard.cpp:2112 +#: src/slic3r/GUI/ConfigWizard.cpp:2627 msgid "Configuration Wizard" msgstr "Asystent Konfiguracji" @@ -1399,15 +1641,11 @@ msgstr "Asystent Konfiguracji" msgid "Confirmation" msgstr "Potwierdzenie" -#: src/slic3r/GUI/Tab.cpp:1931 -msgid "Connection failed." -msgstr "Błąd połączenia." - -#: src/slic3r/GUI/Tab.cpp:3627 +#: src/slic3r/GUI/Tab.cpp:4046 msgid "Connection of the support sticks and junctions" msgstr "Łączenia słupków i skrzyżowań podpór" -#: src/slic3r/Utils/AstroBox.cpp:83 +#: src/slic3r/Utils/AstroBox.cpp:84 msgid "Connection to AstroBox works correctly." msgstr "Połączenie z AstroBox pomyślne." @@ -1423,124 +1661,136 @@ msgstr "Połączenie z FlashAir działa poprawnie a przesyłanie jest włączone msgid "Connection to OctoPrint works correctly." msgstr "Połączenie z OctoPrint pomyślne." -#: src/slic3r/GUI/Tab.cpp:1928 -msgid "Connection to printer works correctly." -msgstr "Połączenie z drukarką pomyślne." +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:260 +msgid "Connection to printers connected via the print host failed." +msgstr "Niepowodzenie połączenia z drukarką podłączoną do serwera druku." -#: src/slic3r/Utils/OctoPrint.cpp:176 +#: src/slic3r/Utils/OctoPrint.cpp:185 msgid "Connection to Prusa SL1 works correctly." msgstr "Połączenie z Prusa SL1 działa prawidłowo." -#: src/libslic3r/PrintConfig.cpp:1909 +#: src/libslic3r/PrintConfig.cpp:2051 msgid "Contact Z distance" msgstr "Odstęp w osi Z" -#: src/slic3r/GUI/AboutDialog.cpp:261 +#: src/slic3r/GUI/AboutDialog.cpp:286 msgid "Contributions by Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik and numerous others." msgstr "Wkład: Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik i wielu innych." -#: src/libslic3r/PrintConfig.cpp:2659 +#: src/slic3r/GUI/GUI_App.cpp:245 +msgid "Contributions by Vojtech Bubnik, Enrico Turri, Oleksandra Iushchenko, Tamas Meszaros, Lukas Matena, Vojtech Kral, David Kocik and numerous others." +msgstr "Swój wkład mają: Vojtech Bubnik, Enrico Turri, Oleksandra Iushchenko, Tamas Meszaros, Lukas Matena, Vojtech Kral, David Kocik oraz wielu innych." + +#: src/libslic3r/PrintConfig.cpp:2823 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 "Kontroluje typ mostu pomiędzy sąsiadującymi słupkami. Może być zyg-zagowy, krzyżowy (podwójny zyg-zag) lub dynamiczny, który oznacza automatyczne przełączanie się pomiędzy pierwszymi dwoma, w zależności od odstępu pomiędzy słupkami." -#: src/slic3r/GUI/Tab.cpp:1444 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1858 src/slic3r/GUI/Plater.cpp:4886 +msgid "Convert from imperial units" +msgstr "Konwertuj z jednostek imperialnych" + +#: src/slic3r/GUI/Tab.cpp:1790 msgid "Cooling" msgstr "Chłodzenie" -#: src/libslic3r/PrintConfig.cpp:660 +#: src/libslic3r/PrintConfig.cpp:696 msgid "Cooling moves are gradually accelerating beginning at this speed." msgstr "Ruchy chłodzące przyspieszają zaczynając od tej prędkości." -#: src/libslic3r/PrintConfig.cpp:679 +#: src/libslic3r/PrintConfig.cpp:715 msgid "Cooling moves are gradually accelerating towards this speed." msgstr "Ruchy chłodzące przyspieszają kończąc z tą prędkością." -#: src/slic3r/GUI/Tab.cpp:1465 +#: src/slic3r/GUI/Tab.cpp:1811 msgid "Cooling thresholds" msgstr "Progi chłodzenia" -#: src/libslic3r/PrintConfig.cpp:327 +#: src/libslic3r/PrintConfig.cpp:361 msgid "Cooling tube length" msgstr "Długość rurki chłodzącej" -#: src/libslic3r/PrintConfig.cpp:319 +#: src/libslic3r/PrintConfig.cpp:353 msgid "Cooling tube position" msgstr "Pozycja rurki chłodzącej" -#: src/slic3r/GUI/Plater.cpp:4752 +#: src/slic3r/GUI/Plater.cpp:4856 msgid "Copies of the selected object" msgstr "Kopie wybranego modelu" -#: src/slic3r/GUI/GLCanvas3D.cpp:4505 +#: src/slic3r/GUI/GLCanvas3D.cpp:4871 msgid "Copy" msgstr "Kopiuj" -#: src/slic3r/GUI/MainFrame.cpp:589 +#: src/slic3r/GUI/MainFrame.cpp:1195 msgid "Copy selection to clipboard" msgstr "Skopiuj zaznaczenie do schowka" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:132 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:127 msgid "Copy to clipboard" msgstr "Skopiuj do schowka" -#: src/slic3r/GUI/SysInfoDialog.cpp:154 +#: src/slic3r/GUI/SysInfoDialog.cpp:177 msgid "Copy to Clipboard" msgstr "Kopiuj do Schowka" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:121 +#: 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 "Kopiowanie tymczasowego pliku G-code zostało zakończone, ale nie można otworzyć wyeksportowanego pliku w celu weryfikacji kopiowania. Wynikowy G-code znajduje się w lokalizacji %2%.tmp." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:118 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:153 msgid "Copying of the temporary G-code has finished but the original code at %1% couldn't be opened during copy check. The output G-code is at %2%.tmp." msgstr "Kopiowanie tymczasowego pliku G-code zostało zakończone, ale nie można otworzyć oryginalnego pliku w lokalizacji %1% w celu weryfikacji kopiowania. Wynikowy G-code znajduje się w lokalizacji %2%.tmp." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:480 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:522 msgid "Copying of the temporary G-code to the output G-code failed" msgstr "Kopiowanie tymczasowego G-code do wyjściowego nie powiodło się" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:109 -msgid "Copying of the temporary G-code to the output G-code failed. Maybe the SD card is write locked?" -msgstr "Kopiowanie tymczasowego G-code do wyjściowego nie powiodło się. Sprawdź, czy karta nie jest zabezpieczona przed zapisem." +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:163 +msgid "" +"Copying of the temporary G-code to the output G-code failed. Maybe the SD card is write locked?\n" +"Error message: %1%" +msgstr "" +"Niepowodzenie kopiowania tymczasowego G-code do pliku wyjściowego G-code. Karta SD zabezpieczona przed zapisem? \n" +"Kod błędu: %1%" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:112 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:147 msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp." msgstr "Niepowodzenie kopiowania tymczasowego pliku G-code do pliku docelowego. Może być to spowodowane problemem z urządzeniem docelowym. Spróbuj wyeksportować G-code ponownie lub użyj innego urządzenia. Uszkodzony plik wynikowy G-code znajduje się w lokalizacji %1%.tmp." -#: src/slic3r/GUI/AboutDialog.cpp:127 src/slic3r/GUI/AboutDialog.cpp:256 +#: src/slic3r/GUI/AboutDialog.cpp:139 src/slic3r/GUI/AboutDialog.cpp:281 msgid "Copyright" msgstr "Prawa autorskie" -#: src/libslic3r/PrintConfig.cpp:2571 src/libslic3r/PrintConfig.cpp:2572 +#: src/libslic3r/PrintConfig.cpp:2714 src/libslic3r/PrintConfig.cpp:2715 msgid "Correction for expansion" msgstr "Korekcja rozszerzania" -#: src/slic3r/GUI/Tab.cpp:2100 src/slic3r/GUI/Tab.cpp:3519 +#: src/slic3r/GUI/Tab.cpp:2270 src/slic3r/GUI/Tab.cpp:3935 msgid "Corrections" msgstr "Korekcje" -#: src/slic3r/GUI/Plater.cpp:1243 src/libslic3r/PrintConfig.cpp:760 -#: src/libslic3r/PrintConfig.cpp:2510 src/libslic3r/PrintConfig.cpp:2511 +#: src/slic3r/GUI/Plater.cpp:1158 src/libslic3r/PrintConfig.cpp:796 +#: src/libslic3r/PrintConfig.cpp:2653 src/libslic3r/PrintConfig.cpp:2654 msgid "Cost" msgstr "Koszt" -#: src/slic3r/GUI/Plater.cpp:239 +#: src/slic3r/GUI/Plater.cpp:245 msgid "Cost (money)" msgstr "Koszt (pieniędzy)" -#: src/slic3r/GUI/Plater.cpp:2835 +#: src/slic3r/GUI/Jobs/ArrangeJob.cpp:176 msgid "Could not arrange model objects! Some geometries may be invalid." msgstr "Nie można ułożyć modeli! Niektóre geometrie mogą być nieprawidłowe." -#: src/slic3r/Utils/AstroBox.cpp:89 +#: src/slic3r/Utils/AstroBox.cpp:90 msgid "Could not connect to AstroBox" msgstr "Nie można połączyć się z AstroBox" -#: src/slic3r/Utils/Duet.cpp:54 +#: src/slic3r/Utils/Duet.cpp:55 msgid "Could not connect to Duet" msgstr "Nie można połączyć się z Duet" -#: src/slic3r/Utils/FlashAir.cpp:73 +#: src/slic3r/Utils/FlashAir.cpp:74 msgid "Could not connect to FlashAir" msgstr "Nie można połączyć z FlashAir" @@ -1548,56 +1798,69 @@ msgstr "Nie można połączyć z FlashAir" msgid "Could not connect to OctoPrint" msgstr "Nie można połączyć się z OctoPrint" -#: src/slic3r/Utils/OctoPrint.cpp:181 +#: src/slic3r/Utils/OctoPrint.cpp:191 msgid "Could not connect to Prusa SLA" msgstr "Nie można połączyć się z Prusa SLA" -#: src/slic3r/GUI/Tab.cpp:1687 +#: src/slic3r/Utils/Http.cpp:73 +msgid "Could not detect system SSL certificate store. PrusaSlicer will be unable to establish secure network connections." +msgstr "Nie mogę wykryć magazynu certyfikatów SSL. PrusaSlicer nie będzie w stanie nawiązać bezpiecznego połączenia z siecią." + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:289 msgid "Could not get a valid Printer Host reference" msgstr "Brak prawidłowego odwołania do serwera druku" -#: src/slic3r/Utils/Duet.cpp:134 +#: src/slic3r/Utils/Duet.cpp:136 msgid "Could not get resources to create a new connection" msgstr "Brak zasobów do utworzenia nowego połączenia" -#: src/libslic3r/PrintConfig.cpp:1959 +#: src/libslic3r/PrintConfig.cpp:2101 msgid "Cover the top contact layer of the supports with loops. Disabled by default." msgstr "Pokryj pętlą górną warstwę podpór. Domyślnie wyłączone." -#: src/libslic3r/PrintConfig.cpp:89 +#: src/libslic3r/PrintConfig.cpp:91 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 "Szpary mniejsze niż dwukrotność wartości parametru \"promień zamykania szpar\" zostaną zamknięte przy cięciu. Operacja zamykania szpar może zmniejszyć finalną rozdzielczość wydruku, więc zalecane jest ustawienie tej wartości na rozsądnie niskim poziomie." -#: src/libslic3r/Zipper.cpp:58 +#: src/libslic3r/miniz_extension.cpp:117 msgid "CRC-32 check failed" msgstr "Weryfikacja CRC-32 nie powiodła się" -#: src/libslic3r/PrintConfig.cpp:2857 +#: src/libslic3r/PrintConfig.cpp:3021 msgid "Create pad around object and ignore the support elevation" msgstr "Dodaj podkładkę wokół modelu i zignoruj podniesienie na podporach" -#: src/libslic3r/PrintConfig.cpp:2724 +#: src/libslic3r/PrintConfig.cpp:2888 msgid "Critical angle" msgstr "Kąt krytyczny" -#: src/libslic3r/PrintConfig.cpp:2668 +#: src/libslic3r/PrintConfig.cpp:2832 msgid "Cross" msgstr "Krzyżowy" -#: src/libslic3r/PrintConfig.cpp:847 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:225 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:203 +msgid "Ctrl + Mouse wheel" +msgstr "Ctrl + kółko myszy" + +#: src/libslic3r/PrintConfig.cpp:885 msgid "Cubic" msgstr "Sześcienny" -#: src/slic3r/GUI/wxExtensions.cpp:704 +#: src/slic3r/Utils/Http.cpp:91 +msgid "CURL init has failed. PrusaSlicer will be unable to establish network connections. See logs for additional details." +msgstr "Niepowodzenie inicjalizacji CURL. PrusaSlicer nie będzie w stanie nawiązać połączenia przez sieć. Szczegóły w logach." + +#: src/slic3r/GUI/wxExtensions.cpp:624 #, c-format msgid "Current mode is %s" msgstr "Obecny tryb to %s" -#: src/slic3r/GUI/Tab.cpp:959 +#: src/slic3r/GUI/Tab.cpp:1278 msgid "Current preset is inherited from" msgstr "Obecny zestaw ustawień jest dziedziczony z" -#: src/slic3r/GUI/Tab.cpp:957 +#: src/slic3r/GUI/Tab.cpp:1276 msgid "Current preset is inherited from the default preset." msgstr "Obecny zestaw ustawień jest dziedziczony z zestawu domyślnego." @@ -1605,451 +1868,488 @@ msgstr "Obecny zestaw ustawień jest dziedziczony z zestawu domyślnego." msgid "Current version:" msgstr "Obecna wersja:" -#: src/slic3r/GUI/BedShapeDialog.cpp:98 src/slic3r/GUI/GUI_Preview.cpp:249 -#: src/libslic3r/ExtrusionEntity.cpp:322 +#: src/slic3r/GUI/BedShapeDialog.cpp:143 src/slic3r/GUI/GUI_Preview.cpp:314 +#: src/libslic3r/ExtrusionEntity.cpp:327 src/libslic3r/ExtrusionEntity.cpp:362 msgid "Custom" msgstr "Własny" -#: src/libslic3r/PrintConfig.cpp:112 +#: src/libslic3r/PrintConfig.cpp:114 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 "Dla połączeń HTTPS z OctoPrint może zostać użyty własny plik certyfikatu CA w formacie crt/pem. Jeśli pole zostanie puste, to zostanie użyty plik z systemowego repozytorium CA." -#: src/slic3r/GUI/Tab.cpp:1527 src/slic3r/GUI/Tab.cpp:1975 +#: src/slic3r/GUI/Tab.cpp:1872 src/slic3r/GUI/Tab.cpp:2160 +#: src/libslic3r/PrintConfig.cpp:1978 msgid "Custom G-code" msgstr "Własny G-code" -#: src/slic3r/GUI/DoubleSlider.cpp:1619 +#: src/slic3r/GUI/DoubleSlider.cpp:1815 msgid "Custom G-code on current layer (%1% mm)." msgstr "Własny G-code na obecnej warstwie (%1% mm)." -#: src/slic3r/GUI/ConfigWizard.cpp:732 +#: src/slic3r/GUI/GCodeViewer.cpp:2580 src/slic3r/GUI/GUI_Preview.cpp:1477 +msgid "Custom G-codes" +msgstr "Własny G-code" + +#: src/slic3r/GUI/ConfigWizard.cpp:1091 msgid "Custom Printer" msgstr "Własna Drukarka" -#: src/slic3r/GUI/ConfigWizard.cpp:732 +#: src/slic3r/GUI/ConfigWizard.cpp:1091 msgid "Custom Printer Setup" msgstr "Ustawienie Własnej Drukarki" -#: src/slic3r/GUI/ConfigWizard.cpp:736 +#: src/slic3r/GUI/ConfigWizard.cpp:1095 msgid "Custom profile name:" msgstr "Nazwa własnego profilu:" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:42 -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:144 src/libslic3r/PrintConfig.cpp:3402 +#: src/slic3r/GUI/DoubleSlider.cpp:1135 +msgid "Custom template (\"%1%\")" +msgstr "Własny szablon (\"%1%\")" + +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:146 src/libslic3r/PrintConfig.cpp:3601 msgid "Cut" msgstr "Przetnij" -#: src/slic3r/GUI/Plater.cpp:4786 +#: src/slic3r/GUI/Plater.cpp:4921 msgid "Cut by Plane" msgstr "Tnij Płaszczyzną" -#: src/libslic3r/PrintConfig.cpp:3403 +#: src/libslic3r/PrintConfig.cpp:3602 msgid "Cut model at the given Z." msgstr "Przetnij model na wysokości Z." -#: src/slic3r/GUI/GUI_ObjectList.cpp:1432 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1563 msgid "Cylinder" msgstr "Cylinder" -#: src/slic3r/GUI/MainFrame.cpp:568 +#: src/slic3r/GUI/MainFrame.cpp:1174 msgid "D&eselect all" msgstr "&Odznacz wszystko" -#: src/libslic3r/PrintConfig.cpp:3504 +#: src/libslic3r/PrintConfig.cpp:3709 msgid "Data directory" msgstr "Katalog danych" -#: src/slic3r/GUI/Mouse3DController.cpp:313 +#: src/slic3r/GUI/Mouse3DController.cpp:300 msgid "Deadzone:" msgstr "Martwa strefa:" -#: src/libslic3r/Zipper.cpp:52 +#: src/libslic3r/miniz_extension.cpp:111 msgid "decompression failed or archive is corrupted" msgstr "niepowodzenie rozpakowywania lub uszkodzone archiwum" -#: src/slic3r/GUI/Plater.cpp:4720 +#: src/slic3r/GUI/Plater.cpp:4824 msgid "Decrease Instances" msgstr "Zmniejsz ilość instancji" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1704 src/libslic3r/PrintConfig.cpp:335 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1832 src/libslic3r/PrintConfig.cpp:369 msgid "Default" msgstr "Domyślnie" -#: src/slic3r/GUI/GUI_ObjectList.cpp:457 src/slic3r/GUI/GUI_ObjectList.cpp:469 -#: src/slic3r/GUI/GUI_ObjectList.cpp:917 src/slic3r/GUI/GUI_ObjectList.cpp:3967 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3977 -#: src/slic3r/GUI/GUI_ObjectList.cpp:4012 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:200 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:257 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:282 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:490 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:1753 +#: 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/ObjectDataViewModel.cpp:202 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:259 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:284 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:492 msgid "default" msgstr "domyślnie" -#: src/libslic3r/PrintConfig.cpp:777 +#: src/libslic3r/PrintConfig.cpp:813 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 "Domyślny kąt linii wypełnienia. Mosty będą wypełniane z użyciem najlepszego kierunku obliczonego przez Slic3r, więc to ustawienie ich nie dotyczy." -#: src/libslic3r/PrintConfig.cpp:554 +#: src/slic3r/GUI/GCodeViewer.cpp:2289 +msgid "Default color" +msgstr "Domyślny kolor" + +#: src/slic3r/GUI/GCodeViewer.cpp:2313 +msgid "default color" +msgstr "domyślny kolor" + +#: src/libslic3r/PrintConfig.cpp:590 msgid "Default extrusion width" msgstr "Domyślna szerokość linii" -#: src/slic3r/GUI/Tab.cpp:987 +#: src/slic3r/GUI/Tab.cpp:1305 msgid "default filament profile" msgstr "domyślny profil filamentu" -#: src/libslic3r/PrintConfig.cpp:345 +#: src/libslic3r/PrintConfig.cpp:379 msgid "Default filament profile" msgstr "Domyślny profil filamentu" -#: src/libslic3r/PrintConfig.cpp:346 +#: src/libslic3r/PrintConfig.cpp:380 msgid "Default filament profile associated with the current printer profile. On selection of the current printer profile, this filament profile will be activated." msgstr "Domyślny profil filamentu powiązany z obecnym profilem drukarki. Przy wybraniu obecnego profilu drukarki automatycznie zostanie wybrany ten profil filamentu." -#: src/slic3r/GUI/Tab.cpp:2919 -#, c-format -msgid "Default preset (%s)" -msgstr "Domyślny zestaw ustawień (%s)" - -#: src/slic3r/GUI/GLCanvas3D.cpp:904 src/slic3r/GUI/GLCanvas3D.cpp:933 +#: src/slic3r/GUI/GLCanvas3D.cpp:910 src/slic3r/GUI/GLCanvas3D.cpp:939 msgid "Default print color" msgstr "Domyślny kolor druku" -#: src/slic3r/GUI/Tab.cpp:984 +#: src/slic3r/GUI/Tab.cpp:1302 msgid "default print profile" msgstr "domyślny profil druku" -#: src/libslic3r/PrintConfig.cpp:352 +#: src/libslic3r/PrintConfig.cpp:386 msgid "Default print profile" msgstr "Domyślny profil druku" -#: src/libslic3r/PrintConfig.cpp:353 src/libslic3r/PrintConfig.cpp:2592 -#: src/libslic3r/PrintConfig.cpp:2603 +#: src/libslic3r/PrintConfig.cpp:387 src/libslic3r/PrintConfig.cpp:2735 +#: src/libslic3r/PrintConfig.cpp:2746 msgid "Default print profile associated with the current printer profile. On selection of the current printer profile, this print profile will be activated." msgstr "Domyślny profil druku powiązany z obecnym profilem drukarki. Przy wybraniu obecnego profilu drukarki automatycznie zostanie wybrany ten profil filamentu." -#: src/slic3r/GUI/Tab.cpp:1001 +#: src/slic3r/GUI/Tab.cpp:1319 msgid "default SLA material profile" msgstr "domyślny profil materiału SLA" -#: src/libslic3r/PrintConfig.cpp:2591 src/libslic3r/PrintConfig.cpp:2602 +#: src/libslic3r/PrintConfig.cpp:2734 src/libslic3r/PrintConfig.cpp:2745 msgid "Default SLA material profile" msgstr "Domyślny profil materiału SLA" -#: src/slic3r/GUI/Tab.cpp:1005 +#: src/slic3r/GUI/Tab.cpp:1323 msgid "default SLA print profile" msgstr "domyślny profil druku SLA" -#: src/slic3r/GUI/Field.cpp:136 +#: src/slic3r/GUI/Field.cpp:184 msgid "default value" msgstr "wartość domyślna" -#: src/slic3r/GUI/ConfigWizard.cpp:734 +#: src/slic3r/GUI/ConfigWizard.cpp:1093 msgid "Define a custom printer profile" msgstr "Zdefiniuj własny profil drukarki" -#: src/libslic3r/PrintConfig.cpp:2798 +#: src/libslic3r/PrintConfig.cpp:2962 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 effect inside the cavity, which makes peeling the print off the vat foil difficult." -msgstr "Definiuje wgłębienie podkładki. Ustaw 0 aby je wyłączyć. Zachowaj ostrożność przy ustawianiu wgłębienia, ponieważ niektóre żywice mogą powodować bardzo silny efekt zasysania wewnątrz wgłębienia, co może powodować trudności z oddzieleniem wydruku od folii zbiornika." +msgstr "Definiuje wgłębienie podkładki. Ustaw 0, aby je wyłączyć. Zachowaj ostrożność przy ustawianiu wgłębienia, ponieważ niektóre żywice mogą powodować bardzo silny efekt zasysania wewnątrz wgłębienia, co może powodować trudności z oddzieleniem wydruku od dna zbiornika." -#: src/slic3r/GUI/GUI_ObjectList.cpp:346 +#: src/slic3r/GUI/GUI_ObjectList.cpp:393 msgid "degenerate facets" msgstr "ponowne generowanie ścianek" -#: src/libslic3r/PrintConfig.cpp:640 +#: src/libslic3r/PrintConfig.cpp:676 msgid "Delay after unloading" msgstr "Opóźnienie po rozładowaniu" -#: src/slic3r/GUI/Tab.cpp:3121 +#: src/slic3r/GUI/Tab.cpp:3386 msgid "delete" msgstr "usuń" -#: src/slic3r/GUI/GLCanvas3D.cpp:4475 src/slic3r/GUI/GUI_ObjectList.cpp:1718 -#: src/slic3r/GUI/Plater.cpp:3931 src/slic3r/GUI/Plater.cpp:3953 -#: src/slic3r/GUI/Tab.cpp:3124 +#: src/slic3r/GUI/GLCanvas3D.cpp:4841 src/slic3r/GUI/GUI_ObjectList.cpp:1846 +#: src/slic3r/GUI/Plater.cpp:3849 src/slic3r/GUI/Plater.cpp:3871 +#: src/slic3r/GUI/Tab.cpp:3423 msgid "Delete" msgstr "Usuń" -#: src/slic3r/GUI/MainFrame.cpp:575 +#: src/slic3r/GUI/MainFrame.cpp:1181 msgid "Delete &all" msgstr "Usuń &wszystko" -#: src/slic3r/GUI/GLCanvas3D.cpp:4484 src/slic3r/GUI/KBShortcutsDialog.cpp:129 -#: src/slic3r/GUI/Plater.cpp:4669 +#: src/slic3r/GUI/GLCanvas3D.cpp:4850 src/slic3r/GUI/KBShortcutsDialog.cpp:124 +#: src/slic3r/GUI/Plater.cpp:4774 msgid "Delete all" msgstr "Usuń wszystko" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2176 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2341 msgid "Delete All Instances from Object" msgstr "Usuń wszystkie kopie modelu" -#: src/slic3r/GUI/DoubleSlider.cpp:1516 +#: src/slic3r/GUI/DoubleSlider.cpp:1708 msgid "Delete color change" msgstr "Usuń zmianę koloru" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:219 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:220 msgid "Delete color change marker for current layer" msgstr "Usuń punkt zmiany filamentu na obecnej warstwie" -#: src/slic3r/GUI/DoubleSlider.cpp:1519 +#: src/slic3r/GUI/DoubleSlider.cpp:1711 msgid "Delete custom G-code" msgstr "Usuń własny G-code" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:539 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:424 msgid "Delete drainage hole" msgstr "Usuń otwór odpływowy" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2192 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2357 msgid "Delete Height Range" msgstr "Usuń zakres wysokości" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2246 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2412 msgid "Delete Instance" msgstr "Usuń instancję" -#: src/slic3r/GUI/Plater.cpp:2712 +#: src/slic3r/GUI/Plater.cpp:2673 msgid "Delete Object" msgstr "Usuń Model" -#: src/slic3r/GUI/GUI_ObjectSettings.cpp:101 +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:104 #, c-format msgid "Delete Option %s" msgstr "Usuń Opcję %s" -#: src/slic3r/GUI/DoubleSlider.cpp:1518 +#: src/slic3r/GUI/DoubleSlider.cpp:1710 msgid "Delete pause print" -msgstr "Usuń pauzę wydruku" +msgstr "Usuń pauzę" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:128 +#: src/slic3r/GUI/PresetComboBoxes.cpp:652 +msgid "Delete physical printer" +msgstr "Usuń fizyczną drukarkę" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:659 +msgid "Delete Physical Printer" +msgstr "Usuń fizyczną drukarkę" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:123 msgid "Delete selected" msgstr "Usuń zaznaczone" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2830 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3221 msgid "Delete Selected" msgstr "Usuń Zaznaczone" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2693 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3083 msgid "Delete Selected Item" msgstr "Usuń Wybrany Obiekt" -#: src/slic3r/GUI/Plater.cpp:4677 +#: src/slic3r/GUI/Plater.cpp:4782 msgid "Delete Selected Objects" msgstr "Usuń Zaznaczone Modele" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2152 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2319 msgid "Delete Settings" -msgstr "Usuń Ustawienia" +msgstr "Usuń ustawienia" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2227 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2393 msgid "Delete Subobject" msgstr "Usuń Model Podrzędny" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:631 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:514 msgid "Delete support point" msgstr "Usuń punkt podpory" -#: src/slic3r/GUI/Tab.cpp:134 +#: src/slic3r/GUI/Tab.cpp:204 msgid "Delete this preset" msgstr "Usuń ten zestaw ustawień" -#: src/slic3r/GUI/DoubleSlider.cpp:1035 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:55 +msgid "Delete this preset from this printer device" +msgstr "Usuń ten zestaw ustawień z tej drukarki" + +#: src/slic3r/GUI/DoubleSlider.cpp:1160 msgid "Delete tick mark - Left click or press \"-\" key" msgstr "Usuń zaznaczenie - kliknij lewym przyciskiem lub wciśnij klawisz \"-\"" -#: src/slic3r/GUI/DoubleSlider.cpp:1517 +#: src/slic3r/GUI/DoubleSlider.cpp:1709 msgid "Delete tool change" msgstr "Usuń zmianę narzędzia" -#: src/slic3r/GUI/MainFrame.cpp:576 +#: src/slic3r/GUI/MainFrame.cpp:1182 msgid "Deletes all objects" msgstr "Usuwa wszystkie modele" -#: src/slic3r/GUI/MainFrame.cpp:573 +#: src/slic3r/GUI/MainFrame.cpp:1179 msgid "Deletes the current selection" msgstr "Usuwa zaznaczenie" -#: src/libslic3r/PrintConfig.cpp:717 src/libslic3r/PrintConfig.cpp:2503 -#: src/libslic3r/PrintConfig.cpp:2504 +#: src/libslic3r/PrintConfig.cpp:753 src/libslic3r/PrintConfig.cpp:2646 +#: src/libslic3r/PrintConfig.cpp:2647 msgid "Density" msgstr "Gęstość" -#: src/libslic3r/PrintConfig.cpp:791 +#: src/libslic3r/PrintConfig.cpp:827 msgid "Density of internal infill, expressed in the range 0% - 100%." msgstr "Gęstość wypełnienia wewnętrznego, wyrażana w zakresie 0% - 100%." -#: src/slic3r/GUI/Tab.cpp:1258 src/slic3r/GUI/Tab.cpp:1548 -#: src/slic3r/GUI/Tab.cpp:2019 src/slic3r/GUI/Tab.cpp:2135 -#: src/slic3r/GUI/Tab.cpp:3543 src/slic3r/GUI/Tab.cpp:3671 +#: src/slic3r/GUI/Tab.cpp:1588 src/slic3r/GUI/Tab.cpp:1895 +#: src/slic3r/GUI/Tab.cpp:2228 src/slic3r/GUI/Tab.cpp:2304 +#: src/slic3r/GUI/Tab.cpp:3959 src/slic3r/GUI/Tab.cpp:4090 msgid "Dependencies" msgstr "Zależności" -#: src/libslic3r/PrintConfig.cpp:1612 src/libslic3r/PrintConfig.cpp:1613 +#: src/libslic3r/PrintConfig.cpp:1720 src/libslic3r/PrintConfig.cpp:1721 msgid "Deretraction Speed" msgstr "Prędkość powrotu retrakcji" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:127 +#: src/slic3r/GUI/GCodeViewer.cpp:2529 src/slic3r/GUI/GUI_Preview.cpp:337 +#: src/slic3r/GUI/GUI_Preview.cpp:1473 +msgid "Deretractions" +msgstr "Powroty retrakcji" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:172 +msgid "Descriptive name for the printer" +msgstr "Opisowa nazwa drukarki" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:122 msgid "Deselect all" msgstr "Odznacz wszystko" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1369 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1216 msgid "Deselect by rectangle" msgstr "Odznaczenie prostokątem" -#: src/slic3r/GUI/MainFrame.cpp:569 +#: src/slic3r/GUI/MainFrame.cpp:1175 msgid "Deselects all objects" msgstr "Odznacza wszystkie modele" -#: src/slic3r/GUI/Tab.cpp:963 +#: src/slic3r/GUI/Tab.cpp:1224 msgid "Detach from system preset" msgstr "Odłącz od ustawień systemowych" -#: src/slic3r/GUI/Tab.cpp:984 +#: src/slic3r/GUI/Tab.cpp:1246 msgid "Detach preset" msgstr "Odłącz zestaw ustawień" -#: src/slic3r/GUI/Tab.cpp:3029 +#: src/slic3r/GUI/Tab.cpp:3323 msgid "Detached" msgstr "Odłączono" -#: src/libslic3r/PrintConfig.cpp:1373 +#: src/libslic3r/PrintConfig.cpp:1481 msgid "Detect bridging perimeters" msgstr "Wykrywanie mostów przy obrysach" -#: src/libslic3r/PrintConfig.cpp:2075 +#: src/libslic3r/PrintConfig.cpp:2218 msgid "Detect single-width walls (parts where two extrusions don't fit and we need to collapse them into a single trace)." msgstr "Wykrywaj ściany o grubości jednego obrysu (obszary, gdzie 2 obrysy nie zmieszczą się i trzeba będzie połączyć je w jedną linię)." -#: src/libslic3r/PrintConfig.cpp:2073 +#: src/libslic3r/PrintConfig.cpp:2216 msgid "Detect thin walls" msgstr "Wykrywanie cienkich ścian" -#: src/libslic3r/PrintConfig.cpp:3472 +#: src/libslic3r/PrintConfig.cpp:3671 msgid "Detect unconnected parts in the given model(s) and split them into separate objects." msgstr "Wykryj niepołączone elementy załadowanych modelu i odłącz je, tworząc osobne modele." -#: src/slic3r/GUI/Plater.cpp:2368 +#: src/slic3r/GUI/Plater.cpp:2330 msgid "Detected advanced data" msgstr "Wykryto zaawansowane dane" -#: src/slic3r/GUI/Mouse3DController.cpp:289 +#: src/slic3r/GUI/Mouse3DController.cpp:274 msgid "Device:" msgstr "Urządzenie:" -#: src/slic3r/GUI/BedShapeDialog.cpp:93 src/libslic3r/PrintConfig.cpp:709 +#: src/slic3r/GUI/BedShapeDialog.cpp:95 src/libslic3r/PrintConfig.cpp:745 msgid "Diameter" msgstr "Średnica" -#: src/libslic3r/PrintConfig.cpp:2694 +#: src/libslic3r/PrintConfig.cpp:2858 msgid "Diameter in mm of the pillar base" msgstr "Średnica podstawy słupka w mm" -#: src/libslic3r/PrintConfig.cpp:2650 +#: src/libslic3r/PrintConfig.cpp:2793 msgid "Diameter in mm of the support pillars" msgstr "Średnica słupków podpór w mm" -#: src/libslic3r/PrintConfig.cpp:2622 +#: src/libslic3r/PrintConfig.cpp:2765 msgid "Diameter of the pointing side of the head" msgstr "Średnica spiczastej części łącznika" -#: src/slic3r/GUI/BedShapeDialog.cpp:94 +#: src/slic3r/GUI/BedShapeDialog.cpp:131 msgid "Diameter of the print bed. It is assumed that origin (0,0) is located in the center." msgstr "Średnica stołu. Z założenia punkt bazowy (0, 0) jest zlokalizowany na środku." -#: src/libslic3r/PrintConfig.cpp:1639 +#: src/libslic3r/PrintConfig.cpp:1747 msgid "Direction" msgstr "Kierunek" -#: src/libslic3r/PrintConfig.cpp:359 +#: src/libslic3r/PrintConfig.cpp:393 msgid "Disable fan for the first" msgstr "Wyłącz wentylator przy pierwszych" -#: src/libslic3r/PrintConfig.cpp:1349 +#: src/libslic3r/PrintConfig.cpp:1457 msgid "Disables retraction when the travel path does not exceed the upper layer's perimeters (and thus any ooze will be probably invisible)." msgstr "Wyłącza retrakcję gdy ruch jałowy nie wykracza poza zewnętrzny obrys górnej warstwy (więc jakiekolwiek wycieki z dyszy prawdopodobnie i tak nie będą widoczne)." -#: src/slic3r/GUI/DoubleSlider.cpp:952 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:641 +msgid "Discard" +msgstr "Odrzuć" + +#: src/slic3r/GUI/DoubleSlider.cpp:1066 msgid "Discard all custom changes" msgstr "Odrzuć wszystkie własne zmiany" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:53 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1375 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:52 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1222 msgid "Discard changes" msgstr "Odrzuć zmiany" -#: src/slic3r/GUI/GUI_App.cpp:932 src/slic3r/GUI/Tab.cpp:2946 -msgid "Discard changes and continue anyway?" -msgstr "Odrzucić zmiany i kontynuować?" - -#: src/slic3r/GUI/Tab.cpp:2078 +#: src/slic3r/GUI/Tab.cpp:2248 msgid "Display" msgstr "Wyświetlacz" -#: src/libslic3r/PrintConfig.cpp:2359 +#: src/libslic3r/PrintConfig.cpp:2502 msgid "Display height" msgstr "Wysokość wyświetlacza" -#: src/libslic3r/PrintConfig.cpp:2378 +#: src/libslic3r/PrintConfig.cpp:2521 msgid "Display horizontal mirroring" msgstr "Pokaż odbicie poziome" -#: src/libslic3r/PrintConfig.cpp:2392 +#: src/libslic3r/PrintConfig.cpp:2535 msgid "Display orientation" msgstr "Pokaż orientację" -#: src/slic3r/GUI/MainFrame.cpp:648 +#: src/slic3r/GUI/MainFrame.cpp:1258 msgid "Display the Print Host Upload Queue window" msgstr "Wyświetl okno kolejki serwera druku" -#: src/libslic3r/PrintConfig.cpp:2385 +#: src/libslic3r/PrintConfig.cpp:2528 msgid "Display vertical mirroring" msgstr "Pokaż odbicie pionowe" -#: src/libslic3r/PrintConfig.cpp:2353 +#: src/libslic3r/PrintConfig.cpp:2496 msgid "Display width" msgstr "Orientacja wyświetlacza" -#: src/libslic3r/PrintConfig.cpp:377 +#: src/libslic3r/PrintConfig.cpp:411 msgid "Distance between copies" msgstr "Odstęp pomiędzy kopiami" -#: src/libslic3r/PrintConfig.cpp:1680 -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 "Odległość skirtu od modelu. Ustaw zero aby dołączyć do modelu i uzyskać obramowanie dla lepszej przyczepności." +#: src/libslic3r/PrintConfig.cpp:1157 +msgid "Distance between ironing lines" +msgstr "Odstęp między liniami prasowania" -#: src/libslic3r/PrintConfig.cpp:2882 +#: src/libslic3r/PrintConfig.cpp:1788 +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 "Odległość skirtu od modelu. Ustaw zero, aby dołączyć do modelu i uzyskać obramowanie dla lepszej przyczepności." + +#: src/libslic3r/PrintConfig.cpp:3046 msgid "Distance between two connector sticks which connect the object and the generated pad." msgstr "Odstęp pomiędzy dwoma słupkami łączącymi model z wygenerowaną podkładką." -#: src/libslic3r/PrintConfig.cpp:1679 +#: src/libslic3r/PrintConfig.cpp:1787 msgid "Distance from object" msgstr "Odstęp od modelu" -#: src/slic3r/GUI/BedShapeDialog.cpp:85 +#: src/slic3r/GUI/BedShapeDialog.cpp:121 msgid "Distance of the 0,0 G-code coordinate from the front left corner of the rectangle." msgstr "Odległość koordynaty punktu zerowego od przedniego lewego rogu prostokąta." -#: src/libslic3r/PrintConfig.cpp:320 +#: src/libslic3r/PrintConfig.cpp:354 msgid "Distance of the center-point of the cooling tube from the extruder tip." msgstr "Odległość punktu centralnego rurki chłodzącej od końcówki ekstrudera." -#: src/libslic3r/PrintConfig.cpp:1382 +#: src/libslic3r/PrintConfig.cpp:1490 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 "Odległość końcówki ekstrudera do miejsca zatrzymania filamentu po rozładowaniu. Ta wartość powinna odpowiadać tej ustawionej w firmware drukarki." -#: src/libslic3r/PrintConfig.cpp:378 +#: src/libslic3r/PrintConfig.cpp:412 msgid "Distance used for the auto-arrange feature of the plater." msgstr "Odstęp używany przy automatycznym rozmieszczaniu modeli na stole." -#: src/libslic3r/PrintConfig.cpp:3486 +#: src/libslic3r/PrintConfig.cpp:3685 msgid "Do not fail if a file supplied to --load does not exist." msgstr "Nie przerywaj jeśli plik dołączony do --load nie istnieje." -#: src/libslic3r/PrintConfig.cpp:3430 +#: src/libslic3r/PrintConfig.cpp:3629 msgid "Do not rearrange the given models before merging and keep their original XY coordinates." msgstr "Nie przestawiaj modeli przed łączeniem i zachowaj ich początkowe koordynaty XY." -#: src/slic3r/GUI/Field.cpp:240 +#: src/slic3r/GUI/Field.cpp:288 #, c-format msgid "" "Do you mean %s%% instead of %s %s?\n" @@ -2060,31 +2360,35 @@ msgstr "" "Kliknij TAK, jeśli chcesz zmienić wartość na %s %%,\n" "lub NIE, jeśli masz pewność, że %s %s jest prawidłową wartością." -#: src/slic3r/GUI/DoubleSlider.cpp:1920 +#: src/slic3r/GUI/DoubleSlider.cpp:2138 msgid "Do you want to delete all saved tool changes?" msgstr "Czy chcesz usunąć wszystkie zmiany narzędzi?" -#: src/slic3r/GUI/GUI_App.cpp:884 +#: src/slic3r/GUI/GUI_App.cpp:1610 msgid "Do you want to proceed?" msgstr "Czy chcesz kontynuować?" -#: src/slic3r/GUI/Plater.cpp:3321 +#: src/slic3r/GUI/Plater.cpp:3124 msgid "Do you want to retry" msgstr "Czy chcesz spróbować ponownie" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1045 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:911 msgid "Do you want to save your manually edited support points?" msgstr "Czy chcesz zapisać ręcznie edytowane punkty podpór?" -#: src/slic3r/GUI/ConfigWizard.cpp:1834 +#: src/slic3r/GUI/ConfigWizard.cpp:2261 msgid "Do you want to select default filaments for these FFF printer models?" msgstr "Czy chcesz ustawić domyślne filamenty dla tych modeli drukarek FFF?" -#: src/slic3r/GUI/ConfigWizard.cpp:1852 +#: src/slic3r/GUI/ConfigWizard.cpp:2279 msgid "Do you want to select default SLA materials for these printer models?" msgstr "Czy chcesz ustawić domyślne materiały SLA dla tych modeli drukarek?" -#: src/libslic3r/PrintConfig.cpp:3429 +#: src/slic3r/GUI/Plater.cpp:4751 +msgid "does not contain valid gcode." +msgstr "nie zawiera prawidłowego g-code." + +#: src/libslic3r/PrintConfig.cpp:3628 msgid "Don't arrange" msgstr "Nie układaj" @@ -2092,7 +2396,7 @@ msgstr "Nie układaj" msgid "Don't notify about new releases any more" msgstr "Nie powiadamiaj o nowych wersjach" -#: src/libslic3r/PrintConfig.cpp:369 +#: src/libslic3r/PrintConfig.cpp:403 msgid "Don't support bridges" msgstr "Nie używaj podpór pod mostami" @@ -2100,234 +2404,296 @@ msgstr "Nie używaj podpór pod mostami" msgid "Downgrade" msgstr "Deaktualizacja" -#: src/libslic3r/PrintConfig.cpp:1695 +#: src/libslic3r/PrintConfig.cpp:1803 msgid "Draft shield" msgstr "Draft shield" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1365 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1368 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1369 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1212 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1215 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1216 msgid "Drag" msgstr "Przeciągnij" -#: src/libslic3r/SLAPrintSteps.cpp:44 +#: src/slic3r/GUI/Plater.cpp:1406 +msgid "Drag and drop G-code file" +msgstr "Przeciągnij i upuść plik G-code" + +#: src/libslic3r/SLAPrintSteps.cpp:45 msgid "Drilling holes into model." msgstr "Wiercenie otworów odpływowych w modelu." -#: src/libslic3r/SLAPrintSteps.cpp:199 +#: src/libslic3r/SLAPrintSteps.cpp:201 msgid "Drilling holes into the mesh failed. This is usually caused by broken model. Try to fix it first." msgstr "Niepowodzenie wiercenia otworów w siatce. Zazwyczaj dzieje się tak przez błędy w modelu. Spróbuj najpierw go naprawić." -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:337 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:349 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:345 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:357 msgid "Drop to bed" msgstr "Upuść na stół" -#: src/libslic3r/PrintConfig.cpp:3433 +#: src/libslic3r/PrintConfig.cpp:3632 msgid "Duplicate" msgstr "Duplikuj" -#: src/libslic3r/PrintConfig.cpp:3438 +#: src/libslic3r/PrintConfig.cpp:3637 msgid "Duplicate by grid" msgstr "Duplikuj wg siatki" -#: src/slic3r/GUI/PresetHints.cpp:40 +#: src/slic3r/GUI/GCodeViewer.cpp:2445 +msgid "Duration" +msgstr "Czas trwania" + +#: src/slic3r/GUI/PresetHints.cpp:39 msgid "During the other layers, fan" msgstr "Na pozostałych warstwach, wentylator" -#: src/libslic3r/PrintConfig.cpp:2669 +#: src/libslic3r/PrintConfig.cpp:2833 msgid "Dynamic" msgstr "Dynamicznie" -#: src/slic3r/GUI/MainFrame.cpp:749 +#: src/slic3r/GUI/MainFrame.cpp:1448 msgid "E&xport" msgstr "&Eksport" -#: src/slic3r/GUI/GUI_ObjectList.cpp:347 +#: src/slic3r/GUI/GUI_ObjectList.cpp:394 msgid "edges fixed" msgstr "naprawiono krawędzie" -#: src/slic3r/GUI/DoubleSlider.cpp:1508 +#: src/slic3r/GUI/DoubleSlider.cpp:1700 msgid "Edit color" msgstr "Edytuj kolor" -#: src/slic3r/GUI/DoubleSlider.cpp:960 +#: src/slic3r/GUI/DoubleSlider.cpp:1083 msgid "Edit current color - Right click the colored slider segment" msgstr "Edytuj kolor - kliknij prawym przyciskiem na kolorowy segment suwaka" -#: src/slic3r/GUI/DoubleSlider.cpp:1510 +#: src/slic3r/GUI/DoubleSlider.cpp:1702 msgid "Edit custom G-code" msgstr "Edytuj własny G-code" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3003 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3459 msgid "Edit Height Range" msgstr "Edytuj Zakres Wysokości" -#: src/slic3r/GUI/DoubleSlider.cpp:1509 +#: src/slic3r/GUI/DoubleSlider.cpp:1701 msgid "Edit pause print message" msgstr "Edytuj komunikat wstrzymania wydruku" -#: src/slic3r/GUI/DoubleSlider.cpp:1037 +#: src/slic3r/GUI/PresetComboBoxes.cpp:645 +msgid "Edit physical printer" +msgstr "Edytuj fizyczną drukarkę" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:641 +msgid "Edit preset" +msgstr "Edytuj zestaw ustawień" + +#: src/slic3r/GUI/DoubleSlider.cpp:1162 msgid "Edit tick mark - Ctrl + Left click" msgstr "Edytuj zaznaczenie - Ctrl + Klik lewym przyciskiem" -#: src/slic3r/GUI/DoubleSlider.cpp:1038 +#: src/slic3r/GUI/DoubleSlider.cpp:1163 msgid "Edit tick mark - Right click" msgstr "Edytuj zaznaczenie - kliknij prawym przyciskiem" -#: src/slic3r/GUI/GUI_ObjectList.cpp:282 src/slic3r/GUI/GUI_ObjectList.cpp:394 +#: src/slic3r/GUI/GUI_ObjectList.cpp:300 src/slic3r/GUI/GUI_ObjectList.cpp:441 msgid "Editing" msgstr "Edytowanie" -#: src/slic3r/GUI/MainFrame.cpp:547 +#: src/slic3r/GUI/MainFrame.cpp:1105 msgid "Ejec&t SD card / Flash drive" msgstr "Wysuń kar&tę SD / pamięć flash" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:126 +#: src/slic3r/GUI/NotificationManager.cpp:780 +msgid "Eject drive" +msgstr "Wysuń nośnik" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:119 msgid "Eject SD card / Flash drive" msgstr "Wysuń kartę SD / pamięć flash" -#: src/slic3r/GUI/MainFrame.cpp:547 +#: src/slic3r/GUI/MainFrame.cpp:1105 msgid "Eject SD card / Flash drive after the G-code was exported to it." msgstr "Wysuń kartę SD / pamięć flash po wyeksportowaniu na nią G-code." -#: src/slic3r/GUI/Plater.cpp:2202 +#: src/slic3r/GUI/Plater.cpp:2034 #, c-format msgid "Ejecting of device %s(%s) has failed." msgstr "Wysuwanie urządzenia %s(%s) nie powiodło się." -#: src/libslic3r/PrintConfig.cpp:118 +#: src/libslic3r/PrintConfig.cpp:120 msgid "Elephant foot compensation" msgstr "Kompensacja \"stopy słonia\"" -#: src/libslic3r/PrintConfig.cpp:2447 +#: src/libslic3r/PrintConfig.cpp:2590 msgid "Elephant foot minimum width" msgstr "Minimalna szerokość stopy słonia" -#: src/libslic3r/SLAPrint.cpp:625 +#: src/libslic3r/SLAPrint.cpp:639 msgid "Elevation is too low for object. Use the \"Pad around object\" feature to print the object without elevation." msgstr "Podniesienie zbyt małe dla modelu. Użyj funkcji \"Podkładka wokół modelu\", aby wydrukować model bez podniesienia." -#: src/libslic3r/PrintConfig.cpp:1093 +#: src/libslic3r/PrintConfig.cpp:1186 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. As of now only the Prusa i3 MK3 firmware recognizes M73. Also the i3 MK3 firmware supports M73 Qxx Sxx for the silent mode." msgstr "Umieść M73 P[postęp w procentach] R[pozostały czas w minutach] co 1 minutę w G-code, aby pozwolić firmware na wyświetlanie dokładnego pozostałego czasu. Na ten moment jedynie firmware drukarki Prusa i3 MK3 rozpoznaje komendę M73. Firmware i3 MK3 wspiera również M73 Qxx Sxx dla trybu Stealth." -#: src/libslic3r/GCode.cpp:637 +#: src/libslic3r/PrintConfig.cpp:1217 +msgid "Emit to G-code" +msgstr "Przekaż do G-code" + +#: src/libslic3r/GCode.cpp:622 msgid "Empty layers detected, the output would not be printable." msgstr "Wykryto puste warstwy - plik wynikowy nie będzie możliwy do wydrukowania." -#: src/slic3r/GUI/Tab.cpp:1445 src/libslic3r/PrintConfig.cpp:1355 -#: src/libslic3r/PrintConfig.cpp:2200 +#: src/slic3r/GUI/Tab.cpp:1791 src/libslic3r/PrintConfig.cpp:1463 +#: src/libslic3r/PrintConfig.cpp:2343 msgid "Enable" msgstr "Włącz" -#: src/libslic3r/PrintConfig.cpp:313 +#: src/libslic3r/PrintConfig.cpp:347 msgid "Enable auto cooling" msgstr "Włącz automatyczne chłodzenie" -#: src/libslic3r/PrintConfig.cpp:572 +#: src/libslic3r/PrintConfig.cpp:608 msgid "Enable fan if layer print time is below" msgstr "Włącz chłodzenie jeśli czas druku warstwy wynosi poniżej" -#: src/libslic3r/PrintConfig.cpp:2908 +#: src/libslic3r/PrintConfig.cpp:3072 msgid "Enable hollowing" msgstr "Włącz drążenie" -#: src/libslic3r/PrintConfig.cpp:2380 +#: src/libslic3r/PrintConfig.cpp:2523 msgid "Enable horizontal mirroring of output images" msgstr "Włącz odbicie poziome dla obrazów wyjściowych" -#: src/libslic3r/PrintConfig.cpp:1867 +#: src/libslic3r/PrintConfig.cpp:1124 +msgid "Enable ironing" +msgstr "Włącz prasowanie" + +#: src/libslic3r/PrintConfig.cpp:1125 +msgid "Enable ironing of the top layers with the hot print head for smooth surface" +msgstr "Włącz prasowanie górnych warstw gorącą dyszą dla uzyskania gładkiej powierzchni" + +#: src/libslic3r/PrintConfig.cpp:2009 msgid "Enable support material generation." msgstr "Włącz generowanie materiału podporowego." -#: src/libslic3r/PrintConfig.cpp:966 +#: src/libslic3r/PrintConfig.cpp:1010 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 plugin. This settings is NOT compatible with Single Extruder Multi Material setup and Wipe into Object / Wipe into Infill." -msgstr "Włącz tę opcję, aby dodawać komentarze do pliku G-code, przypisujące ruchy drukujące do konkretnych modeli, co pozwala współpracować z wtyczką CancelObject do OctoPrint. To ustawienie NIE jest kompatybilne z trybem Pojedynczym Multi Material i z ustawieniami Czyszczenia na wypełnieniu / modelu." +msgstr "Włącz tę opcję, aby dodawać komentarze do pliku G-code, przypisujące ruchy drukujące do konkretnych modeli, co pozwala współpracować z wtyczką CancelObject w OctoPrint. To ustawienie NIE jest kompatybilne z trybem Pojedynczym Multi Material i z ustawieniami Czyszczenia na wypełnieniu / modelu." -#: src/libslic3r/PrintConfig.cpp:929 +#: src/libslic3r/PrintConfig.cpp:973 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 "Włącz tą opcję aby dodawać komentarz opsiujący do każdej liniki pliku G-code. Przy druku z karty SD dodatkowy rozmiar pliku może sprawiać, że firmware będzie reagować wolniej." +msgstr "Włącz tą opcję, aby dodawać komentarz opisujący do każdej linijki pliku G-code. Przy druku z karty SD dodatkowy rozmiar pliku może sprawiać, że firmware będzie reagować wolniej." -#: src/libslic3r/PrintConfig.cpp:2186 +#: src/libslic3r/PrintConfig.cpp:2329 msgid "Enable variable layer height feature" msgstr "Zmienna wysokość warstwy" -#: src/libslic3r/PrintConfig.cpp:2387 +#: src/libslic3r/PrintConfig.cpp:2530 msgid "Enable vertical mirroring of output images" msgstr "Włącz odbicie pionowe dla obrazów wyjściowych" -#: src/slic3r/GUI/Tab.cpp:1534 src/slic3r/GUI/Tab.cpp:1982 -#: src/libslic3r/PrintConfig.cpp:385 src/libslic3r/PrintConfig.cpp:395 +#: src/slic3r/GUI/Tab.cpp:1880 src/slic3r/GUI/Tab.cpp:2168 +#: src/libslic3r/PrintConfig.cpp:419 src/libslic3r/PrintConfig.cpp:429 msgid "End G-code" msgstr "G-code końcowy" -#: src/libslic3r/PrintConfig.cpp:1924 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:239 +msgid "Enforce" +msgstr "Wymuś" + +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:30 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:381 +msgid "Enforce seam" +msgstr "Wymuś szew" + +#: src/libslic3r/PrintConfig.cpp:2066 msgid "Enforce support for the first" msgstr "Wymuś podpory dla pierwszych" -#: src/libslic3r/PrintConfig.cpp:1931 +#: src/libslic3r/PrintConfig.cpp:2073 msgid "Enforce support for the first n layers" msgstr "Wymuś podpory dla pierwszych n warstw" +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:47 +msgid "Enforce supports" +msgstr "Wymuś podpory" + #: src/slic3r/GUI/PrintHostDialogs.cpp:198 #: src/slic3r/GUI/PrintHostDialogs.cpp:229 msgid "Enqueued" msgstr "Zakolejkowano" -#: src/libslic3r/PrintConfig.cpp:407 +#: src/libslic3r/PrintConfig.cpp:441 msgid "Ensure vertical shell thickness" msgstr "Zagwarantuj odpowiednią grubość ścianki" -#: src/slic3r/GUI/DoubleSlider.cpp:1618 +#: src/slic3r/GUI/GLCanvas3D.cpp:4402 src/slic3r/GUI/GLCanvas3D.cpp:4410 +#: src/slic3r/GUI/Search.cpp:433 +msgid "Enter a search term" +msgstr "Wpisz wyszukiwaną frazę" + +#: src/slic3r/GUI/DoubleSlider.cpp:1814 msgid "Enter custom G-code used on current layer" msgstr "Wprowadź własny G-code do wykonania na tej warstwie" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3803 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4266 msgid "Enter new name" msgstr "Wprowadź nową nazwę" -#: src/slic3r/GUI/DoubleSlider.cpp:1634 +#: src/slic3r/GUI/DoubleSlider.cpp:1830 msgid "Enter short message shown on Printer display when a print is paused" msgstr "Wpisz krótką wiadomość wyświetlaną na ekranie drukarki, gdy druk jest wstrzymany" -#: src/slic3r/GUI/ConfigWizard.cpp:1047 +#: src/slic3r/GUI/ConfigWizard.cpp:1413 msgid "Enter the bed temperature needed for getting your filament to stick to your heated bed." msgstr "Wprowadź temperaturę potrzebną do dobrego przylegania filamentu do powierzchni podgrzewanego stołu." -#: src/slic3r/GUI/ConfigWizard.cpp:979 +#: src/slic3r/GUI/ConfigWizard.cpp:1345 msgid "Enter the diameter of your filament." msgstr "Wprowadź średnicę filamentu." -#: src/slic3r/GUI/ConfigWizard.cpp:966 +#: src/slic3r/GUI/ConfigWizard.cpp:1332 msgid "Enter the diameter of your printer's hot end nozzle." msgstr "Wprowadź średnicę dyszy hotendu." -#: src/slic3r/GUI/DoubleSlider.cpp:1650 +#: src/slic3r/GUI/DoubleSlider.cpp:1851 src/slic3r/GUI/DoubleSlider.cpp:1855 msgid "Enter the height you want to jump to" msgstr "Wprowadź wysokość, do której chcesz przejść" -#: src/slic3r/GUI/Plater.cpp:4751 +#: src/slic3r/GUI/DoubleSlider.cpp:1851 +msgid "Enter the move you want to jump to" +msgstr "Wpisz ruch, do którego chcesz przejść" + +#: src/slic3r/GUI/Plater.cpp:4855 msgid "Enter the number of copies:" msgstr "Wpisz liczbę kopii:" -#: src/slic3r/GUI/ConfigWizard.cpp:1033 +#: src/slic3r/GUI/ConfigWizard.cpp:1399 msgid "Enter the temperature needed for extruding your filament." msgstr "Wprowadź temperaturę potrzebną do ekstruzji filamentu." -#: src/libslic3r/PrintConfig.cpp:761 +#: src/libslic3r/PrintConfig.cpp:797 msgid "Enter your filament cost per kg here. This is only for statistical information." msgstr "Wprowadź koszt filamentu za kilogram. Służy tylko statystykom." -#: src/libslic3r/PrintConfig.cpp:718 +#: src/libslic3r/PrintConfig.cpp:754 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 the length to volume. Better is to calculate the volume directly through displacement." msgstr "Wprowadź gęstość filamentu. Służy tylko statystykom. Dobrą metodą jest zważenie filamentu o zmierzonej długości i przeliczenie stosunku wagi do objętości." -#: src/libslic3r/PrintConfig.cpp:710 +#: src/libslic3r/PrintConfig.cpp:746 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 "Wprowadź średnicę filamentu. Wymagana jest precyzja, więc użyj suwmiarki i zmierz filament w kilku miejscach, potem oblicz średnią." -#: src/slic3r/GUI/MainFrame.cpp:422 src/slic3r/GUI/MainFrame.cpp:785 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:39 +msgid "Entering Paint-on supports" +msgstr "Otwieram malowanie podpór" + +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:40 +msgid "Entering Seam painting" +msgstr "Otwieram malowanie szwu" + +#: src/slic3r/GUI/MainFrame.cpp:1003 src/slic3r/GUI/MainFrame.cpp:1486 #: src/slic3r/GUI/PrintHostDialogs.cpp:231 msgid "Error" msgstr "Błąd" @@ -2337,25 +2703,33 @@ msgstr "Błąd" msgid "Error accessing port at %s: %s" msgstr "Brak dostępu do portu %s: %s" -#: src/slic3r/GUI/Plater.cpp:3433 +#: src/slic3r/GUI/Plater.cpp:3238 msgid "Error during reload" msgstr "Błąd podczas przeładowywania" -#: src/slic3r/GUI/Plater.cpp:5043 +#: src/slic3r/GUI/Plater.cpp:5172 #, c-format msgid "Error exporting 3MF file %s" msgstr "Błąd eksportowania pliku 3MF %s" -#: src/slic3r/GUI/Plater.cpp:5005 +#: src/slic3r/GUI/Plater.cpp:5138 #, c-format msgid "Error exporting AMF file %s" msgstr "Błąd eksportu pliku AMF %s" -#: src/slic3r/GUI/PrintHostDialogs.cpp:154 +#: src/slic3r/GUI/OpenGLManager.cpp:276 +msgid "Error loading shaders" +msgstr "Błąd ładowania modułów cieniujących" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:152 msgid "Error Message" msgstr "Komunikat o błędzie" -#: src/slic3r/GUI/AppConfig.cpp:114 +#: src/slic3r/GUI/GUI_App.cpp:661 +msgid "Error parsing PrusaGCodeViewer config file, it is probably corrupted. Try to manually delete the file to recover from the error." +msgstr "Błąd przetwarzania pliku konfiguracyjnego PrusaGCodeViewer. Prawdopodobnie jest uszkodzony. Spróbuj ręcznie usunąć plik, aby pozbyć się błędu." + +#: src/slic3r/GUI/GUI_App.cpp:655 src/slic3r/GUI/GUI_App.cpp:670 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 "Błąd przetwarzania pliku konfiguracyjnego PrusaSlicer. Prawdopodobnie jest uszkodzony. Spróbuj ręcznie usunąć plik, aby pozbyć się błędu. Nie wpłynie to na Twoje profile." @@ -2363,45 +2737,60 @@ msgstr "Błąd przetwarzania pliku konfiguracyjnego PrusaSlicer. Prawdopodobnie msgid "Error uploading to print host:" msgstr "Błąd wysyłania do serwera druku:" -#: src/libslic3r/Zipper.cpp:102 +#: src/slic3r/GUI/Plater.cpp:4752 +msgid "Error while loading .gcode file" +msgstr "Błąd wczytywania pliku .gcode" + +#: src/libslic3r/Zipper.cpp:27 msgid "Error with zip archive" msgstr "Błąd archiwum .zip" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1918 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2077 msgid "Error!" msgstr "Błąd!" -#: src/slic3r/GUI/BedShapeDialog.cpp:505 +#: src/slic3r/GUI/BedShapeDialog.cpp:581 msgid "Error! Invalid model" msgstr "Błąd! Nieprawidłowy model" +#: src/slic3r/GUI/NotificationManager.cpp:667 +#: src/slic3r/GUI/NotificationManager.cpp:683 +#: src/slic3r/GUI/NotificationManager.cpp:694 +msgid "ERROR:" +msgstr "BŁĄD:" + #: src/slic3r/GUI/FirmwareDialog.cpp:647 #, c-format msgid "Error: %s" msgstr "Błąd: %s" -#: src/slic3r/GUI/Job.hpp:123 +#: src/slic3r/GUI/Jobs/Job.cpp:74 msgid "ERROR: not enough resources to execute a new job." msgstr "BŁĄD: brak zasobów do wykonania nowego zadania." -#: src/slic3r/GUI/Plater.cpp:240 src/slic3r/GUI/Plater.cpp:1216 -#: src/slic3r/GUI/Plater.cpp:1258 +#: 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 msgid "Estimated printing time" msgstr "Szacowany czas druku" -#: src/slic3r/GUI/Plater.cpp:502 +#: src/slic3r/GUI/GCodeViewer.cpp:2442 src/slic3r/GUI/GCodeViewer.cpp:2445 +msgid "Event" +msgstr "Wydarzenie" + +#: src/slic3r/GUI/Plater.cpp:368 msgid "Everywhere" msgstr "Wszędzie" -#: src/slic3r/GUI/PresetHints.cpp:51 +#: src/slic3r/GUI/PresetHints.cpp:50 msgid "except for the first %1% layers." msgstr "za wyjątkiem pierwszych %1% warstw." -#: src/slic3r/GUI/PresetHints.cpp:53 +#: src/slic3r/GUI/PresetHints.cpp:52 msgid "except for the first layer." msgstr "za wyjątkiem pierwszej warstwy." -#: src/libslic3r/Print.cpp:1377 +#: src/libslic3r/Print.cpp:1403 msgid "Excessive %1%=%2% mm to be printable with a nozzle diameter %3% mm" msgstr "Wartość %1%=%2% mm jest zbyt duża, żeby mogła być wydrukowana z dyszą o średnicy %3% mm" @@ -2410,116 +2799,129 @@ msgstr "Wartość %1%=%2% mm jest zbyt duża, żeby mogła być wydrukowana z dy msgid "Exit %s" msgstr "Wyjście %s" -#: src/libslic3r/PrintConfig.cpp:371 +#: src/slic3r/GUI/Plater.cpp:2143 +msgid "Expand sidebar" +msgstr "Rozwiń pasek narzędzi" + +#: src/libslic3r/PrintConfig.cpp:405 msgid "Experimental option for preventing support material from being generated under bridged areas." msgstr "Funkcja eksperymentalna mająca zapobiegać tworzeniu podpór pod mostami." -#: src/libslic3r/PrintConfig.cpp:1375 +#: src/libslic3r/PrintConfig.cpp:1483 msgid "Experimental option to adjust flow for overhangs (bridge flow will be used), to apply bridge speed to them and enable fan." msgstr "Opcja eksperymentalna dostosowująca przepływ przy zwisach (zostanie zastosowany przepływ taki jak dla mostów), zastosuje również prędkość i chłodzenie takie jak dla mostów." -#: src/slic3r/GUI/GUI_App.cpp:815 src/slic3r/GUI/wxExtensions.cpp:755 +#: src/slic3r/GUI/GUI_App.cpp:1507 src/slic3r/GUI/wxExtensions.cpp:676 msgid "Expert" msgstr "Ekspert" -#: src/slic3r/GUI/ConfigWizard.cpp:822 +#: src/slic3r/GUI/ConfigWizard.cpp:1181 msgid "Expert mode" msgstr "Tryb Eksperta" -#: src/slic3r/GUI/GUI_App.cpp:815 +#: src/slic3r/GUI/GUI_App.cpp:1507 msgid "Expert View Mode" msgstr "Tryb Widoku Eksperta" -#: src/slic3r/GUI/Plater.cpp:5521 +#: src/slic3r/GUI/Plater.cpp:5706 msgid "Export" msgstr "Eksport" -#: src/slic3r/GUI/MainFrame.cpp:500 +#: src/slic3r/GUI/MainFrame.cpp:1094 msgid "Export &Config" msgstr "Eksport Konfigura&cji" -#: src/slic3r/GUI/MainFrame.cpp:477 src/slic3r/GUI/MainFrame.cpp:749 +#: src/slic3r/GUI/MainFrame.cpp:1068 src/slic3r/GUI/MainFrame.cpp:1448 msgid "Export &G-code" msgstr "Eksport &G-code" -#: src/slic3r/GUI/MainFrame.cpp:496 +#: src/slic3r/GUI/MainFrame.cpp:1090 src/slic3r/GUI/MainFrame.cpp:1395 msgid "Export &toolpaths as OBJ" msgstr "Ekspor&t ścieżek narzędzi jako OBJ" -#: src/libslic3r/PrintConfig.cpp:3338 +#: src/libslic3r/PrintConfig.cpp:3531 msgid "Export 3MF" msgstr "Eksport 3MF" -#: src/slic3r/GUI/MainFrame.cpp:503 +#: src/slic3r/GUI/MainFrame.cpp:1100 +msgid "Export all presets including physical printers to file" +msgstr "Eksport do pliku wszystkich zestawów ustawień wraz z fizycznymi drukarkami" + +#: src/slic3r/GUI/MainFrame.cpp:1097 msgid "Export all presets to file" msgstr "Eksport wszystkich zestawów ustawień do pliku" -#: src/libslic3r/PrintConfig.cpp:3343 +#: src/libslic3r/PrintConfig.cpp:3536 msgid "Export AMF" msgstr "Eksport AMF" -#: src/slic3r/GUI/Plater.cpp:2598 +#: src/slic3r/GUI/Plater.cpp:2560 msgid "Export AMF file:" msgstr "Eksport pliku AMF:" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1657 src/slic3r/GUI/Plater.cpp:3966 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1786 src/slic3r/GUI/Plater.cpp:3884 msgid "Export as STL" msgstr "Eksport jako STL" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:124 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:117 msgid "Export config" msgstr "Eksport konfiguracji" -#: src/slic3r/GUI/MainFrame.cpp:503 +#: src/slic3r/GUI/MainFrame.cpp:1097 msgid "Export Config &Bundle" msgstr "Eks&port Paczki Konfiguracyjnej" -#: src/slic3r/GUI/MainFrame.cpp:500 +#: src/slic3r/GUI/MainFrame.cpp:1100 +msgid "Export Config Bundle With Physical Printers" +msgstr "Eksport paczki konfiguracyjnej z drukarkami fizycznymi" + +#: src/slic3r/GUI/MainFrame.cpp:1094 msgid "Export current configuration to file" msgstr "Eksport obecnej konfiguracji do pliku" -#: src/slic3r/GUI/MainFrame.cpp:492 +#: src/slic3r/GUI/MainFrame.cpp:1086 msgid "Export current plate as AMF" msgstr "Eksport zawartości stołu jako AMF" -#: src/slic3r/GUI/MainFrame.cpp:477 +#: src/slic3r/GUI/MainFrame.cpp:1068 msgid "Export current plate as G-code" msgstr "Eksport zawartości stołu jako G-code" -#: src/slic3r/GUI/MainFrame.cpp:521 +#: src/slic3r/GUI/MainFrame.cpp:1076 msgid "Export current plate as G-code to SD card / Flash drive" msgstr "Eksport zawartości stołu jako G-gode na kartę SD / pamięć flash" -#: src/slic3r/GUI/MainFrame.cpp:486 +#: src/slic3r/GUI/MainFrame.cpp:1080 msgid "Export current plate as STL" msgstr "Eksport zawartości stołu jako STL" -#: src/slic3r/GUI/MainFrame.cpp:489 +#: src/slic3r/GUI/MainFrame.cpp:1083 msgid "Export current plate as STL including supports" msgstr "Eksport zawartości stołu jako STL wraz z podporami" -#: src/slic3r/GUI/Plater.cpp:3664 -msgid "Export failed" -msgstr "Niepowodzenie eksportu" - -#: src/slic3r/GUI/ConfigWizard.cpp:801 +#: src/slic3r/GUI/ConfigWizard.cpp:1160 msgid "Export full pathnames of models and parts sources into 3mf and amf files" msgstr "Eksport pełnych ścieżek źródłowych modeli i części do plików 3MF i AMF" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:122 src/slic3r/GUI/Plater.cpp:891 -#: src/slic3r/GUI/Plater.cpp:5521 src/libslic3r/PrintConfig.cpp:3353 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:115 src/slic3r/GUI/Plater.cpp:766 +#: src/slic3r/GUI/Plater.cpp:5706 src/libslic3r/PrintConfig.cpp:3546 msgid "Export G-code" msgstr "Eksport G-code" -#: src/slic3r/GUI/MainFrame.cpp:521 +#: src/slic3r/GUI/MainFrame.cpp:1076 msgid "Export G-code to SD card / Flash drive" msgstr "Eksport G-gode na kartę SD / pamięć flash" -#: src/libslic3r/PrintConfig.cpp:3320 +#: src/slic3r/GUI/NotificationManager.cpp:631 +#: src/slic3r/GUI/NotificationManager.cpp:748 +msgid "Export G-Code." +msgstr "Eksport G-code." + +#: src/libslic3r/PrintConfig.cpp:3513 msgid "Export OBJ" msgstr "Eksport OBJ" -#: src/slic3r/GUI/Plater.cpp:2610 +#: src/slic3r/GUI/Plater.cpp:2572 msgid "Export OBJ file:" msgstr "Eksport pliku OBJ:" @@ -2527,212 +2929,215 @@ msgstr "Eksport pliku OBJ:" msgid "Export of a temporary 3mf file failed" msgstr "Niepowodzenie eksportu tymczasowego pliku 3MF" -#: src/slic3r/GUI/MainFrame.cpp:492 +#: src/slic3r/GUI/MainFrame.cpp:1086 msgid "Export plate as &AMF" msgstr "Eksport zawartości stołu jako &AMF" -#: src/slic3r/GUI/MainFrame.cpp:486 +#: src/slic3r/GUI/MainFrame.cpp:1080 msgid "Export plate as &STL" msgstr "Eksport zawartości stołu jako &STL" -#: src/slic3r/GUI/MainFrame.cpp:489 +#: src/slic3r/GUI/MainFrame.cpp:1083 msgid "Export plate as STL &including supports" msgstr "Eksport zawartośc&i stołu z podporami do STL" -#: src/libslic3r/PrintConfig.cpp:3332 +#: src/libslic3r/PrintConfig.cpp:3525 msgid "Export SLA" msgstr "Eksport SLA" -#: src/slic3r/GUI/Preferences.cpp:72 +#: src/slic3r/GUI/Preferences.cpp:89 msgid "Export sources full pathnames to 3mf and amf" msgstr "Eksport pełnych ścieżek do 3MF i AMF" -#: src/libslic3r/PrintConfig.cpp:3348 +#: src/libslic3r/PrintConfig.cpp:3541 msgid "Export STL" msgstr "Eksport STL" -#: src/slic3r/GUI/Plater.cpp:2591 +#: src/slic3r/GUI/Plater.cpp:2553 msgid "Export STL file:" msgstr "Eksport pliku STL:" -#: src/libslic3r/PrintConfig.cpp:3339 +#: src/libslic3r/PrintConfig.cpp:3532 msgid "Export the model(s) as 3MF." msgstr "Eksport model(i) jako 3MF." -#: src/libslic3r/PrintConfig.cpp:3344 +#: src/libslic3r/PrintConfig.cpp:3537 msgid "Export the model(s) as AMF." msgstr "Eksport model(i) jako AMF." -#: src/libslic3r/PrintConfig.cpp:3321 +#: src/libslic3r/PrintConfig.cpp:3514 msgid "Export the model(s) as OBJ." msgstr "Eksport model(i) jako OBJ." -#: src/libslic3r/PrintConfig.cpp:3349 +#: src/libslic3r/PrintConfig.cpp:3542 msgid "Export the model(s) as STL." msgstr "Eksport modeli jako STL." -#: src/slic3r/GUI/Plater.cpp:3966 +#: src/slic3r/GUI/Plater.cpp:3884 msgid "Export the selected object as STL file" msgstr "Eksport wybranego modelu jako plik STL" -#: src/slic3r/GUI/Plater.cpp:880 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:118 src/slic3r/GUI/Plater.cpp:755 msgid "Export to SD card / Flash drive" msgstr "Eksport na kartę SD / pamięć flash" -#: src/slic3r/GUI/MainFrame.cpp:496 +#: src/slic3r/GUI/MainFrame.cpp:1090 src/slic3r/GUI/MainFrame.cpp:1395 msgid "Export toolpaths as OBJ" msgstr "Eksport ścieżek narzędzi jako OBJ" -#: src/libslic3r/Print.cpp:1638 +#: src/slic3r/GUI/NotificationManager.hpp:317 +msgid "Exporting finished." +msgstr "Eksport zakończony." + +#: src/libslic3r/Print.cpp:1676 msgid "Exporting G-code" msgstr "Eksportowanie G-code" #: src/slic3r/Utils/FixModelByWin10.cpp:341 -msgid "Exporting model..." -msgstr "Eksportowanie modelu..." +msgid "Exporting model" +msgstr "Eksportowanie modelu" #: src/slic3r/Utils/FixModelByWin10.cpp:219 #: src/slic3r/Utils/FixModelByWin10.cpp:359 msgid "Exporting source model" msgstr "Eksport modelu źródłowego" -#: src/libslic3r/SLAPrint.cpp:646 +#: src/libslic3r/SLAPrint.cpp:660 msgid "Exposition time is out of printer profile bounds." msgstr "Czas naświetlania jest poza zakresem profilu drukarki." -#: src/slic3r/GUI/Tab.cpp:2117 src/slic3r/GUI/Tab.cpp:3515 +#: src/slic3r/GUI/Tab.cpp:2287 src/slic3r/GUI/Tab.cpp:3931 msgid "Exposure" msgstr "Naświetlanie" -#: src/libslic3r/PrintConfig.cpp:2541 src/libslic3r/PrintConfig.cpp:2542 +#: src/libslic3r/PrintConfig.cpp:2684 src/libslic3r/PrintConfig.cpp:2685 msgid "Exposure time" msgstr "Czas naświetlania" -#: src/slic3r/GUI/GUI_Preview.cpp:238 src/libslic3r/ExtrusionEntity.cpp:311 +#: src/slic3r/GUI/GUI_Preview.cpp:302 src/libslic3r/ExtrusionEntity.cpp:315 +#: src/libslic3r/ExtrusionEntity.cpp:338 msgid "External perimeter" msgstr "Obrys zewnętrzny" -#: src/slic3r/GUI/PresetHints.cpp:156 +#: src/slic3r/GUI/PresetHints.cpp:155 msgid "external perimeters" msgstr "obrysów zewnętrznych" -#: src/libslic3r/PrintConfig.cpp:446 src/libslic3r/PrintConfig.cpp:457 +#: src/libslic3r/PrintConfig.cpp:482 src/libslic3r/PrintConfig.cpp:493 msgid "External perimeters" msgstr "Obrysy zewnętrzne" -#: src/libslic3r/PrintConfig.cpp:469 +#: src/libslic3r/PrintConfig.cpp:505 msgid "External perimeters first" msgstr "Najpierw obrysy zewnętrzne" -#: src/libslic3r/PrintConfig.cpp:1588 src/libslic3r/PrintConfig.cpp:1596 +#: src/libslic3r/PrintConfig.cpp:1696 src/libslic3r/PrintConfig.cpp:1704 msgid "Extra length on restart" msgstr "Dodatkowa ilość dla powrotu" -#: src/libslic3r/PrintConfig.cpp:1390 +#: src/libslic3r/PrintConfig.cpp:1498 msgid "Extra loading distance" msgstr "Dodatkowa długość ładowania" -#: src/libslic3r/PrintConfig.cpp:477 +#: src/libslic3r/PrintConfig.cpp:513 msgid "Extra perimeters if needed" msgstr "Dodatkowe obrysy jeśli potrzebne" -#: src/slic3r/GUI/GUI_ObjectList.cpp:278 src/slic3r/GUI/Tab.cpp:1434 -#: src/slic3r/GUI/wxExtensions.cpp:598 src/libslic3r/PrintConfig.cpp:487 +#: src/slic3r/GUI/GCodeViewer.cpp:2277 src/slic3r/GUI/GCodeViewer.cpp:2313 +#: src/slic3r/GUI/GCodeViewer.cpp:2318 src/slic3r/GUI/GUI_ObjectList.cpp:296 +#: src/slic3r/GUI/Tab.cpp:1780 src/slic3r/GUI/wxExtensions.cpp:515 +#: src/libslic3r/PrintConfig.cpp:523 msgid "Extruder" msgstr "Ekstruder" -#: src/slic3r/GUI/DoubleSlider.cpp:1134 src/slic3r/GUI/DoubleSlider.cpp:1170 -#: src/slic3r/GUI/GLCanvas3D.cpp:977 src/slic3r/GUI/GUI_ObjectList.cpp:1704 -#: src/slic3r/GUI/Tab.cpp:2320 src/libslic3r/GCode/PreviewData.cpp:445 +#: src/slic3r/GUI/DoubleSlider.cpp:1263 src/slic3r/GUI/DoubleSlider.cpp:1297 +#: src/slic3r/GUI/GLCanvas3D.cpp:983 src/slic3r/GUI/GUI_ObjectList.cpp:1832 +#: src/slic3r/GUI/Tab.cpp:2489 src/libslic3r/GCode/PreviewData.cpp:450 #, c-format msgid "Extruder %d" msgstr "Ekstruder %d" -#: src/slic3r/GUI/DoubleSlider.cpp:1011 +#: src/slic3r/GUI/DoubleSlider.cpp:1137 msgid "Extruder (tool) is changed to Extruder \"%1%\"" msgstr "Ekstruder został zmieniony na ekstruder \"%1%\"" -#: src/slic3r/GUI/ConfigWizard.cpp:1017 -msgid "Extruder and Bed Temperatures" -msgstr "Temperatury ekstrudera i stołu" - #: src/slic3r/GUI/WipeTowerDialog.cpp:255 msgid "Extruder changed to" msgstr "Ekstruder zmieniony na" -#: src/slic3r/GUI/Tab.cpp:1233 +#: src/slic3r/GUI/Tab.cpp:1563 msgid "Extruder clearance (mm)" msgstr "Odstęp od ekstrudera (mm)" -#: src/libslic3r/PrintConfig.cpp:522 +#: src/libslic3r/PrintConfig.cpp:558 msgid "Extruder Color" msgstr "Kolor ekstrudera" -#: src/libslic3r/PrintConfig.cpp:529 +#: src/libslic3r/PrintConfig.cpp:565 msgid "Extruder offset" msgstr "Margines ekstrudera" -#: src/libslic3r/PrintConfig.cpp:911 -msgid "Extruder temperature for first layer. If you want to control temperature manually during print, set this to zero to disable temperature control commands in the output file." -msgstr "Temperatura ekstrudera dla pierwszej warstwy. Jeśli chcesz ręcznie kontrolować temperaturę podczas druku to ustaw zero aby wyłączyć komendy kontrolujące temperaturę w pliku wyjściowym." - -#: src/libslic3r/PrintConfig.cpp:2065 -msgid "Extruder temperature for layers after the first one. Set this to zero to disable temperature control commands in the output." -msgstr "Temperatura ekstrudera dla warstw powyżej pierwszej. Ustaw zero aby wyłączyć komendy kontrolujące temperaturę w pliku wyjściowym." - -#: src/slic3r/GUI/GUI_ObjectList.cpp:99 src/slic3r/GUI/GUI_ObjectList.cpp:617 -#: src/slic3r/GUI/Tab.cpp:1180 src/slic3r/GUI/Tab.cpp:1838 -#: src/libslic3r/PrintConfig.cpp:488 src/libslic3r/PrintConfig.cpp:1002 -#: src/libslic3r/PrintConfig.cpp:1409 src/libslic3r/PrintConfig.cpp:1737 -#: src/libslic3r/PrintConfig.cpp:1938 src/libslic3r/PrintConfig.cpp:1965 +#: src/slic3r/GUI/GUI_ObjectList.cpp:97 src/slic3r/GUI/GUI_ObjectList.cpp:656 +#: src/slic3r/GUI/Tab.cpp:1510 src/slic3r/GUI/Tab.cpp:2072 +#: src/libslic3r/PrintConfig.cpp:524 src/libslic3r/PrintConfig.cpp:1046 +#: src/libslic3r/PrintConfig.cpp:1517 src/libslic3r/PrintConfig.cpp:1852 +#: src/libslic3r/PrintConfig.cpp:2080 src/libslic3r/PrintConfig.cpp:2107 msgid "Extruders" msgstr "Ekstrudery" -#: src/libslic3r/PrintConfig.cpp:539 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1061 +msgid "Extruders count" +msgstr "Liczba ekstruderów" + +#: src/slic3r/GUI/GCodeViewer.cpp:2493 +msgid "Extrusion" +msgstr "Ekstruzja" + +#: src/libslic3r/PrintConfig.cpp:575 msgid "Extrusion axis" msgstr "Oś ekstruzji" -#: src/libslic3r/PrintConfig.cpp:545 +#: src/libslic3r/PrintConfig.cpp:581 msgid "Extrusion multiplier" msgstr "Współczynnik ekstruzji" -#: src/slic3r/GUI/ConfigWizard.cpp:1037 +#: src/slic3r/GUI/ConfigWizard.cpp:1403 msgid "Extrusion Temperature:" msgstr "Temperatura ekstrudera:" -#: src/slic3r/GUI/Tab.cpp:1205 +#: src/slic3r/GUI/Tab.cpp:1535 msgid "Extrusion width" msgstr "Szerokość ekstruzji" -#: src/slic3r/GUI/GUI_ObjectList.cpp:100 src/slic3r/GUI/GUI_ObjectList.cpp:618 -#: src/libslic3r/PrintConfig.cpp:447 src/libslic3r/PrintConfig.cpp:555 -#: src/libslic3r/PrintConfig.cpp:877 src/libslic3r/PrintConfig.cpp:1010 -#: src/libslic3r/PrintConfig.cpp:1418 src/libslic3r/PrintConfig.cpp:1757 -#: src/libslic3r/PrintConfig.cpp:1947 src/libslic3r/PrintConfig.cpp:2106 +#: src/slic3r/GUI/GUI_ObjectList.cpp:98 src/slic3r/GUI/GUI_ObjectList.cpp:657 +#: src/libslic3r/PrintConfig.cpp:483 src/libslic3r/PrintConfig.cpp:591 +#: src/libslic3r/PrintConfig.cpp:919 src/libslic3r/PrintConfig.cpp:1054 +#: src/libslic3r/PrintConfig.cpp:1526 src/libslic3r/PrintConfig.cpp:1872 +#: src/libslic3r/PrintConfig.cpp:2089 src/libslic3r/PrintConfig.cpp:2249 msgid "Extrusion Width" msgstr "Szerokość Ekstruzji" -#: src/slic3r/GUI/Plater.cpp:162 +#: src/slic3r/GUI/Plater.cpp:168 msgid "Facets" msgstr "Powierzchnie" -#: src/slic3r/GUI/GUI_ObjectList.cpp:349 +#: src/slic3r/GUI/GUI_ObjectList.cpp:396 msgid "facets added" msgstr "dodano powierzchnie" -#: src/slic3r/GUI/GUI_ObjectList.cpp:348 +#: src/slic3r/GUI/GUI_ObjectList.cpp:395 msgid "facets removed" msgstr "usunięto powierzchnie" -#: src/slic3r/GUI/GUI_ObjectList.cpp:350 +#: src/slic3r/GUI/GUI_ObjectList.cpp:397 msgid "facets reversed" msgstr "odwrócono powierzchnie" -#: src/libslic3r/PrintConfig.cpp:2517 +#: src/libslic3r/PrintConfig.cpp:2660 msgid "Faded layers" msgstr "Warstwy przejściowe" -#: src/libslic3r/Zipper.cpp:44 +#: src/libslic3r/miniz_extension.cpp:103 msgid "failed finding central directory" msgstr "nie odnaleziono katalogu centralnego" @@ -2740,105 +3145,115 @@ msgstr "nie odnaleziono katalogu centralnego" msgid "Failed loading the input model." msgstr "Niepowodzenie ładowania modelu wejściowego." -#: src/libslic3r/PrintBase.cpp:71 +#: src/libslic3r/PrintBase.cpp:72 msgid "Failed processing of the output_filename_format template." msgstr "Błąd przetwarzania wzoru output_filename_format (format nazwy pliku wyjściowego)." -#: src/slic3r/GUI/PresetHints.cpp:42 +#: src/slic3r/GUI/PresetHints.cpp:41 msgid "Fan" msgstr "Wentylator" -#: src/slic3r/GUI/Tab.cpp:1456 +#: src/slic3r/GUI/Tab.cpp:1802 msgid "Fan settings" msgstr "Ustawienia wentylatora" -#: src/slic3r/GUI/GUI_Preview.cpp:225 src/slic3r/GUI/Tab.cpp:1457 +#: src/slic3r/GUI/GUI_Preview.cpp:279 src/slic3r/GUI/Tab.cpp:1803 msgid "Fan speed" msgstr "Prędkość wentylatora" -#: src/libslic3r/GCode/PreviewData.cpp:353 +#: src/slic3r/GUI/GCodeViewer.cpp:2239 src/libslic3r/GCode/PreviewData.cpp:358 msgid "Fan Speed (%)" msgstr "Prędkość wentylatora (%)" -#: src/libslic3r/PrintConfig.cpp:2405 +#: src/libslic3r/PrintConfig.cpp:2548 msgid "Fast" msgstr "Szybkie" -#: src/libslic3r/PrintConfig.cpp:2406 +#: src/libslic3r/PrintConfig.cpp:2549 msgid "Fast tilt" msgstr "Szybkie przechylanie" -#: src/slic3r/GUI/GUI_App.cpp:141 +#: src/slic3r/GUI/GUI_App.cpp:531 msgid "Fatal error" msgstr "Błąd krytyczny" -#: src/slic3r/GUI/GUI_Preview.cpp:221 src/slic3r/GUI/GUI_Preview.cpp:575 -#: src/libslic3r/GCode/PreviewData.cpp:345 +#: src/slic3r/GUI/GUI_Init.cpp:88 +msgid "Fatal error, exception catched: %1%" +msgstr "Błąd krytyczny, wyjątek wychwycony: %1%" + +#: src/slic3r/GUI/GCodeViewer.cpp:2225 src/slic3r/GUI/GCodeViewer.cpp:2233 +#: src/slic3r/GUI/GUI_Preview.cpp:275 src/slic3r/GUI/GUI_Preview.cpp:787 +#: src/libslic3r/GCode/PreviewData.cpp:350 msgid "Feature type" msgstr "Rodzaj funkcji" -#: src/slic3r/GUI/GUI_Preview.cpp:234 src/slic3r/GUI/GUI_Preview.cpp:235 +#: src/slic3r/GUI/GUI_Preview.cpp:293 src/slic3r/GUI/GUI_Preview.cpp:295 +#: src/slic3r/GUI/GUI_Preview.cpp:316 msgid "Feature types" msgstr "Rodzaje funkcji" -#: src/slic3r/GUI/ConfigWizard.cpp:1525 +#: src/slic3r/GUI/ConfigWizard.cpp:1926 msgid "FFF Technology Printers" msgstr "Drukarki FFF" -#: src/slic3r/GUI/Plater.cpp:816 src/slic3r/GUI/Tab.cpp:1425 -#: src/slic3r/GUI/Tab.cpp:1426 +#: src/slic3r/GUI/Plater.cpp:691 src/slic3r/GUI/Tab.cpp:1770 +#: src/slic3r/GUI/Tab.cpp:1771 msgid "Filament" msgstr "Filament" -#: src/slic3r/GUI/Preset.cpp:1522 +#: src/libslic3r/Preset.cpp:1301 msgid "filament" msgstr "filament" -#: src/slic3r/GUI/ConfigWizard.cpp:952 +#: src/slic3r/GUI/ConfigWizard.cpp:1318 msgid "Filament and Nozzle Diameters" msgstr "Średnice filamentu i dyszy" -#: src/slic3r/GUI/ConfigWizard.cpp:983 +#: src/slic3r/GUI/ConfigWizard.cpp:1349 msgid "Filament Diameter:" msgstr "Średnica Filamentu:" -#: src/libslic3r/PrintConfig.cpp:651 +#: src/libslic3r/PrintConfig.cpp:687 msgid "Filament is cooled by being moved back and forth in the cooling tubes. Specify desired number of these moves." msgstr "Filament jest chłodzony przez ruch w tę i z powrotem wewnątrz rurek chłodzących. Określ ilość tych ruchów." -#: src/libslic3r/PrintConfig.cpp:686 +#: src/libslic3r/PrintConfig.cpp:722 msgid "Filament load time" msgstr "Czas ładowania filamentu" -#: src/libslic3r/PrintConfig.cpp:588 +#: src/libslic3r/PrintConfig.cpp:624 msgid "Filament notes" msgstr "Notatki do filamentu" -#: src/slic3r/GUI/Tab.cpp:1323 src/slic3r/GUI/Tab.cpp:1378 +#: src/slic3r/GUI/Tab.cpp:1669 msgid "Filament Overrides" msgstr "Nadpisywane Ustawienia" -#: src/libslic3r/PrintConfig.cpp:1381 +#: src/libslic3r/PrintConfig.cpp:1489 msgid "Filament parking position" msgstr "Pozycja zatrzymania filamentu" -#: src/slic3r/GUI/ConfigWizard.cpp:2013 +#: src/slic3r/GUI/ConfigWizard.cpp:2524 msgid "Filament Profiles Selection" msgstr "Wybór profili filamentu" -#: src/slic3r/GUI/Tab.cpp:1471 +#: src/slic3r/GUI/Tab.cpp:1817 msgid "Filament properties" msgstr "Właściwości filamentu" -#: src/slic3r/GUI/Tab.hpp:355 +#: src/slic3r/GUI/Tab.hpp:409 msgid "Filament Settings" msgstr "Ustawienia Filamentu" -#: src/libslic3r/PrintConfig.cpp:726 +#: src/slic3r/GUI/GLCanvas3D.cpp:4304 src/slic3r/GUI/GLCanvas3D.cpp:4940 +msgid "Filament Settings Tab" +msgstr "Ustawienia filamentu" + +#: src/libslic3r/PrintConfig.cpp:762 msgid "Filament type" msgstr "Typ filamentu" -#: src/libslic3r/PrintConfig.cpp:701 +#: src/libslic3r/PrintConfig.cpp:737 msgid "Filament unload time" msgstr "Czas rozładowania filamentu" @@ -2846,75 +3261,79 @@ msgstr "Czas rozładowania filamentu" msgid "filaments" msgstr "filamenty" -#: src/slic3r/GUI/ConfigWizard.cpp:1471 src/slic3r/GUI/ConfigWizard.cpp:2013 +#: src/slic3r/GUI/ConfigWizard.cpp:1872 src/slic3r/GUI/ConfigWizard.cpp:2524 msgid "Filaments" msgstr "Filamenty" -#: src/libslic3r/Zipper.cpp:72 +#: src/slic3r/GUI/ConfigWizard.cpp:691 +msgid "Filaments marked with * are not compatible with some installed printers." +msgstr "Filamenty oznaczone * nie są kompatybilne z niektórymi z zainstalowanych drukarek." + +#: src/libslic3r/miniz_extension.cpp:131 msgid "file close failed" msgstr "niepowodzenia zamykania pliku" -#: src/libslic3r/Zipper.cpp:66 +#: src/libslic3r/miniz_extension.cpp:125 msgid "file create failed" msgstr "niepowodzenie tworzenia pliku" -#: src/slic3r/GUI/MainFrame.cpp:791 +#: src/slic3r/GUI/MainFrame.cpp:1492 msgid "File Not Found" msgstr "Nie znaleziono pliku" -#: src/libslic3r/Zipper.cpp:86 +#: src/libslic3r/miniz_extension.cpp:145 msgid "file not found" msgstr "nie znaleziono pliku" -#: src/libslic3r/Zipper.cpp:64 +#: src/libslic3r/miniz_extension.cpp:123 msgid "file open failed" msgstr "niepowodzenie otwierania pliku" -#: src/libslic3r/Zipper.cpp:70 +#: src/libslic3r/miniz_extension.cpp:129 msgid "file read failed" msgstr "niepowodzenie odczytu pliku" -#: src/libslic3r/Zipper.cpp:74 +#: src/libslic3r/miniz_extension.cpp:133 msgid "file seek failed" msgstr "niepowodzenie szukania pliku" -#: src/libslic3r/Zipper.cpp:76 +#: src/libslic3r/miniz_extension.cpp:135 msgid "file stat failed" msgstr "niepowodzenie odczytu statystyk pliku" -#: src/libslic3r/Zipper.cpp:36 +#: src/libslic3r/miniz_extension.cpp:95 msgid "file too large" msgstr "plik jest zbyt duży" -#: src/libslic3r/Zipper.cpp:68 +#: src/libslic3r/miniz_extension.cpp:127 msgid "file write failed" msgstr "niepowodzenie zapisywania do pliku" -#: src/slic3r/GUI/PrintHostDialogs.cpp:153 +#: src/slic3r/GUI/PrintHostDialogs.cpp:151 msgid "Filename" msgstr "Nazwa pliku" -#: src/libslic3r/PrintConfig.cpp:775 +#: src/libslic3r/PrintConfig.cpp:811 msgid "Fill angle" msgstr "Kąt wypełnienia" -#: src/libslic3r/PrintConfig.cpp:789 +#: src/libslic3r/PrintConfig.cpp:825 msgid "Fill density" msgstr "Gęstość wypełnienia" -#: src/libslic3r/PrintConfig.cpp:826 +#: src/libslic3r/PrintConfig.cpp:862 msgid "Fill pattern" msgstr "Wzór wypełnienia" -#: src/libslic3r/PrintConfig.cpp:437 +#: src/libslic3r/PrintConfig.cpp:473 msgid "Fill pattern for bottom infill. This only affects the bottom external visible layer, and not its adjacent solid shells." msgstr "Wzór wypełnienia dolnej warstwy. Ma wpływ jedynie na zewnętrzną widoczną warstwę, nie ma wpływu na przylegające do nich wewnętrzne, zwarte warstwy." -#: src/libslic3r/PrintConfig.cpp:828 +#: src/libslic3r/PrintConfig.cpp:864 msgid "Fill pattern for general low-density infill." msgstr "Wzór dla ogólnego wypełnienia o niskiej gęstości." -#: src/libslic3r/PrintConfig.cpp:417 +#: src/libslic3r/PrintConfig.cpp:451 msgid "Fill pattern for top infill. This only affects the top visible layer, and not its adjacent solid shells." msgstr "Wzór wypełnienia górnej warstwy. Ma wpływ jedynie na zewnętrzne widoczne warstwy, nie ma wpływu na przylegające do nich powłoki zwartego wypełnienia." @@ -2922,7 +3341,7 @@ msgstr "Wzór wypełnienia górnej warstwy. Ma wpływ jedynie na zewnętrzne wid msgid "Finished" msgstr "Zakończono" -#: src/slic3r/GUI/ConfigWizard.cpp:891 src/slic3r/GUI/Tab.cpp:1947 +#: src/slic3r/GUI/ConfigWizard.cpp:1257 src/slic3r/GUI/Tab.cpp:2132 msgid "Firmware" msgstr "Firmware" @@ -2934,44 +3353,52 @@ msgstr "Flasher firmware" msgid "Firmware image:" msgstr "Obraz firmware:" -#: src/slic3r/GUI/Tab.cpp:2577 +#: src/slic3r/GUI/Tab.cpp:2733 msgid "Firmware Retraction" msgstr "Retrakcja z firmware" -#: src/slic3r/GUI/ConfigWizard.cpp:891 +#: src/slic3r/GUI/ConfigWizard.cpp:1257 msgid "Firmware Type" msgstr "Typ firmware" -#: src/libslic3r/PrintConfig.cpp:859 src/libslic3r/PrintConfig.cpp:868 -#: src/libslic3r/PrintConfig.cpp:876 src/libslic3r/PrintConfig.cpp:910 +#: src/libslic3r/PrintConfig.cpp:899 src/libslic3r/PrintConfig.cpp:908 +#: src/libslic3r/PrintConfig.cpp:918 src/libslic3r/PrintConfig.cpp:952 msgid "First layer" msgstr "Pierwsza warstwa" -#: src/slic3r/GUI/ConfigManipulation.cpp:61 src/libslic3r/PrintConfig.cpp:889 +#: src/libslic3r/PrintConfig.cpp:909 +msgid "First layer bed temperature" +msgstr "Temperatura stołu dla pierwszej warstwy" + +#: src/slic3r/GUI/ConfigManipulation.cpp:60 src/libslic3r/PrintConfig.cpp:931 msgid "First layer height" msgstr "Wysokość pierwszej warstwy" -#: src/libslic3r/Print.cpp:1422 +#: src/libslic3r/Print.cpp:1448 msgid "First layer height can't be greater than nozzle diameter" msgstr "Wysokość pierwszej warstwy nie może być większa od średnicy dyszy" -#: src/libslic3r/PrintConfig.cpp:900 +#: src/libslic3r/PrintConfig.cpp:960 +msgid "First layer nozzle temperature" +msgstr "Temperatura dyszy dla pierwszej warstwy" + +#: src/libslic3r/PrintConfig.cpp:942 msgid "First layer speed" msgstr "Prędkość pierwszej warstwy" -#: src/slic3r/GUI/PresetHints.cpp:219 +#: src/slic3r/GUI/PresetHints.cpp:218 msgid "First layer volumetric" msgstr "Na pierwszej warstwie" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1647 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1776 msgid "Fix through the Netfabb" msgstr "Napraw używając Netfabb" -#: src/slic3r/GUI/Plater.cpp:3473 +#: src/slic3r/GUI/Plater.cpp:3278 msgid "Fix Throught NetFabb" msgstr "Napraw przez NetFabb" -#: src/slic3r/GUI/GUI_App.cpp:824 +#: src/slic3r/GUI/GUI_App.cpp:1522 msgid "Flash printer &firmware" msgstr "Flash &firmware drukarki" @@ -2999,24 +3426,34 @@ msgstr "Flashowanie w toku. Proszę nie odłączać drukarki!" msgid "Flashing succeeded!" msgstr "Flashowanie pomyślne!" -#: src/slic3r/GUI/Tab.cpp:1218 +#: src/slic3r/GUI/Tab.cpp:1548 msgid "Flow" msgstr "Przepływ" -#: src/slic3r/GUI/PresetHints.cpp:220 +#: src/libslic3r/PrintConfig.cpp:1145 +msgid "Flow rate" +msgstr "Przepływ" + +#: src/slic3r/GUI/PresetHints.cpp:219 msgid "flow rate is maximized" msgstr "przepływ osiąga wartości szczytowe" -#: src/slic3r/GUI/UpdateDialogs.cpp:286 -msgid "For more information please visit our wiki page:" -msgstr "Aby uzyskać więcej informacji odwiedź naszą wiki:" +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:555 +msgid "Following printer preset(s) is duplicated:%1%The above preset for printer \"%2%\" will be used just once." +msgstr "" +"Następujący zestaw ustawień drukarki jest zduplikowany: %1% \n" +"Powyższy zestaw ustawień dla drukarki \"%2%\" zostanie użyty tylko raz." -#: src/slic3r/GUI/Plater.cpp:501 src/slic3r/GUI/Plater.cpp:624 +#: src/slic3r/GUI/UpdateDialogs.cpp:287 +msgid "For more information please visit our wiki page:" +msgstr "Aby uzyskać więcej informacji, odwiedź naszą wiki:" + +#: src/slic3r/GUI/Plater.cpp:367 src/slic3r/GUI/Plater.cpp:490 msgid "For support enforcers only" msgstr "Tylko dla wymuszania podpór" #. TRN Description for "WHITE BULLET" -#: src/slic3r/GUI/Tab.cpp:3267 +#: src/slic3r/GUI/Tab.cpp:3702 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." @@ -3024,25 +3461,25 @@ msgstr "" "dla lewego przycisku: wskazuje na niesystemowy (lub inny niż domyślny) zestaw ustawień,\n" "dla prawego przycisku: wskazuje, że ustawienia nie zostały zmodyfikowane." -#: src/slic3r/GUI/ConfigManipulation.cpp:136 +#: src/slic3r/GUI/ConfigManipulation.cpp:135 msgid "" "For the Wipe Tower to work with the soluble supports, the support layers\n" "need to be synchronized with the object layers." msgstr "Do działania wieży czyszczącej z podporami rozpuszczalnymi konieczna jest synchronizacja wysokości warstw modelu i podpór." -#: src/libslic3r/Print.cpp:1396 +#: src/libslic3r/Print.cpp:1422 msgid "For the Wipe Tower to work with the soluble supports, the support layers need to be synchronized with the object layers." msgstr "Do działania wieży czyszczącej z podporami rozpuszczalnymi konieczna jest synchronizacja wysokości warstw modelu i podpór." -#: src/libslic3r/PrintConfig.cpp:2864 +#: src/libslic3r/PrintConfig.cpp:3028 msgid "Force pad around object everywhere" msgstr "Wymuś podkładkę wokół wszystkich modeli, wszędzie" -#: src/libslic3r/PrintConfig.cpp:1729 +#: src/libslic3r/PrintConfig.cpp:1844 msgid "Force solid infill for regions having a smaller area than the specified threshold." msgstr "Wymuś zwarte wypełnienie dla obszarów mniejszych niż zadany próg." -#: src/libslic3r/PrintConfig.cpp:1072 +#: src/libslic3r/PrintConfig.cpp:1116 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 "Wymuś generowanie zwartych powłok pomiędzy przylegającymi do siebie materiałami. Przydatne przy druku materiałami przejrzystymi lub przy ręcznych podporach rozpuszczalnych." @@ -3050,27 +3487,31 @@ msgstr "Wymuś generowanie zwartych powłok pomiędzy przylegającymi do siebie msgid "From" msgstr "Od" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2223 +#: src/slic3r/GUI/GCodeViewer.cpp:2197 +msgid "from" +msgstr "z" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2389 msgid "From Object List You can't delete the last solid part from object." msgstr "Nie możesz usunąć ostatniej bryły modelu z Listy Modeli." -#: src/slic3r/GUI/MainFrame.cpp:667 +#: src/slic3r/GUI/MainFrame.cpp:964 src/slic3r/GUI/MainFrame.cpp:1284 msgid "Front" msgstr "Przód" -#: src/slic3r/GUI/MainFrame.cpp:667 +#: src/slic3r/GUI/MainFrame.cpp:964 src/slic3r/GUI/MainFrame.cpp:1284 msgid "Front View" msgstr "Widok przodu" -#: src/slic3r/GUI/Tab.cpp:1013 +#: src/slic3r/GUI/Tab.cpp:1331 msgid "full profile name" msgstr "pełna nazwa profilu" -#: src/slic3r/GUI/MainFrame.cpp:826 +#: src/slic3r/GUI/MainFrame.cpp:1527 msgid "G-code" msgstr "G-code" -#: src/slic3r/GUI/DoubleSlider.cpp:1021 +#: src/slic3r/GUI/DoubleSlider.cpp:1146 msgid "" "G-code associated to this tick mark is in a conflict with print mode.\n" "Editing it will cause changes of Slider data." @@ -3078,220 +3519,273 @@ msgstr "" "G-code powiązany z tym zaznaczeniem powoduje konflikt z obecnym trybem drukowania.\n" "Edytowanie go spowoduje zmianę danych suwaka." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:130 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:165 msgid "G-code file exported to %1%" msgstr "Plik G-code wyeksportowany do %1%" -#: src/libslic3r/PrintConfig.cpp:936 +#: src/libslic3r/PrintConfig.cpp:980 msgid "G-code flavor" msgstr "Rodzaj G-code" -#: src/libslic3r/PrintConfig.cpp:721 +#: src/slic3r/GUI/MainFrame.cpp:66 src/slic3r/GUI/MainFrame.cpp:79 +msgid "G-code preview" +msgstr "Podgląd G-code" + +#: src/libslic3r/PrintConfig.cpp:3552 +msgid "G-code viewer" +msgstr "Przeglądarka G-code" + +#: src/libslic3r/PrintConfig.cpp:757 msgid "g/cm³" msgstr "g/cm³" -#: src/libslic3r/PrintConfig.cpp:2505 +#: src/libslic3r/PrintConfig.cpp:2648 msgid "g/ml" msgstr "g/ml" -#: src/slic3r/GUI/GUI_Preview.cpp:244 src/libslic3r/ExtrusionEntity.cpp:317 -#: src/libslic3r/PrintConfig.cpp:918 +#: src/slic3r/GUI/GUI_Preview.cpp:309 src/libslic3r/ExtrusionEntity.cpp:322 +#: src/libslic3r/ExtrusionEntity.cpp:352 src/libslic3r/PrintConfig.cpp:962 msgid "Gap fill" msgstr "Wypełnienie szpar" -#: src/slic3r/GUI/Preferences.cpp:22 src/slic3r/GUI/Tab.cpp:1796 -#: src/slic3r/GUI/Tab.cpp:2040 +#: src/slic3r/GUI/Preferences.cpp:24 src/slic3r/GUI/Tab.cpp:2058 +#: src/slic3r/GUI/Tab.cpp:2240 src/slic3r/GUI/Tab.cpp:2348 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1066 msgid "General" msgstr "Ogólne" -#: src/libslic3r/PrintConfig.cpp:1307 +#: 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 "Generuj ilość pętli skirtu nie mniejszą niż określona aby zużyć taką ilość filamentu na dolnej warstwie. Dla drukarek z kilkoma ekstuderami ta wartość jest stosowana dla każdego z nich." +msgstr "Generuj ilość pętli skirtu nie mniejszą niż określona, aby zużyć taką ilość filamentu na dolnej warstwie. Dla drukarek z kilkoma ekstruderami ta wartość jest stosowana dla każdego z nich." -#: src/libslic3r/PrintConfig.cpp:1865 +#: src/libslic3r/PrintConfig.cpp:2007 msgid "Generate support material" msgstr "Generuj materiał podporowy" -#: src/libslic3r/PrintConfig.cpp:1926 +#: src/libslic3r/PrintConfig.cpp:2068 msgid "Generate support material for the specified number of layers counting from bottom, regardless of whether normal support material is enabled or not and regardless of any angle threshold. This is useful for getting more adhesion of objects having a very thin or poor footprint on the build plate." -msgstr "Generuj materiał podporowy dla określonej liczby warstw licząc od dołu, niezależnie od tego czy normalny materiał podporowy jest włączony i niezależnie od progu kąta. Przydaje się aby uzyskać lepszą przyczepność modelu, które mają bardzo małą powierzchnię kontaktu z powierzchnią druku." +msgstr "Generuj materiał podporowy dla określonej liczby warstw licząc od dołu, niezależnie od tego czy normalny materiał podporowy jest włączony i niezależnie od progu kąta. Przydaje się, aby uzyskać lepszą przyczepność modelu, które mają bardzo małą powierzchnię kontaktu z powierzchnią druku." -#: src/libslic3r/PrintConfig.cpp:2613 +#: src/libslic3r/PrintConfig.cpp:2756 msgid "Generate supports" msgstr "Generowanie podpór" -#: src/libslic3r/PrintConfig.cpp:2615 +#: src/libslic3r/PrintConfig.cpp:2758 msgid "Generate supports for the models" msgstr "Generowanie podpór dla modeli" -#: src/libslic3r/Print.cpp:1614 +#: src/slic3r/GUI/Plater.cpp:3554 +msgid "generated warnings" +msgstr "wygenerowane ostrzeżenia" + +#: src/libslic3r/Print.cpp:1645 msgid "Generating brim" msgstr "Generowanie obramowania (brim)" -#: src/libslic3r/Print.cpp:1642 +#: src/libslic3r/Print.cpp:1680 msgid "Generating G-code" msgstr "Generowanie G-code" -#: src/libslic3r/SLAPrintSteps.cpp:48 +#: src/slic3r/GUI/GCodeViewer.cpp:1392 +msgid "Generating index buffers" +msgstr "Generowanie buforów indeksujących" + +#: src/libslic3r/SLAPrintSteps.cpp:49 msgid "Generating pad" msgstr "Generowanie podkładki" -#: src/libslic3r/PrintObject.cpp:152 +#: src/libslic3r/PrintObject.cpp:158 msgid "Generating perimeters" msgstr "Generowanie obrysów" -#: src/libslic3r/Print.cpp:1606 +#: src/libslic3r/Print.cpp:1636 msgid "Generating skirt" msgstr "Generowanie skirtu" -#: src/libslic3r/PrintObject.cpp:395 +#: src/libslic3r/PrintObject.cpp:422 msgid "Generating support material" msgstr "Generowanie materiału podporowego" -#: src/libslic3r/SLAPrintSteps.cpp:46 src/libslic3r/SLAPrintSteps.cpp:356 +#: src/libslic3r/SLAPrintSteps.cpp:47 src/libslic3r/SLAPrintSteps.cpp:359 msgid "Generating support points" msgstr "Generowanie punktów podpór" -#: src/libslic3r/SLAPrintSteps.cpp:47 +#: src/libslic3r/SLAPrintSteps.cpp:48 msgid "Generating support tree" msgstr "Generowanie drzewa podpór" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2022 +#: src/slic3r/GUI/GCodeViewer.cpp:933 +msgid "Generating toolpaths" +msgstr "Generowanie ścieżek narzędzi" + +#: src/slic3r/GUI/GCodeViewer.cpp:1318 +msgid "Generating vertex buffer" +msgstr "Generowanie bufora wierzchołków" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2181 msgid "Generic" msgstr "Źródłowy" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:175 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:169 msgid "Gizmo cut" msgstr "Cięcie przy pomocy \"uchwytów\"" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:172 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:166 msgid "Gizmo move" msgstr "Przemieszczanie przy pomocy \"uchwytów\"" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:176 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:198 +msgid "Gizmo move: Press to snap by 1mm" +msgstr "Przesuwanie uchwytem: naciśnij, aby przyciągać co 1 mm" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:170 msgid "Gizmo Place face on bed" msgstr "Położenie na płaszczyźnie przy pomocy \"uchwytów\"" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:174 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:168 msgid "Gizmo rotate" msgstr "Obracanie przy pomocy \"uchwytów\"" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:173 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:203 +msgid "Gizmo rotate: Press to rotate selected objects around their own center" +msgstr "Obracanie uchwytem: naciśnij, aby obrócić wybrane obiekty wokół ich środków" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:167 msgid "Gizmo scale" msgstr "Skalowanie przy pomocy \"uchwytów\"" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:177 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:201 +msgid "Gizmo scale: Press to activate one direction scaling" +msgstr "Skalowanie uchwytem: naciśnij, aby aktywować skalowanie w jednym kierunku" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:202 +msgid "Gizmo scale: Press to scale selected objects around their own center" +msgstr "Skalowanie uchwytem: naciśnij, aby skalować wybrane obiekty względem ich środków" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:199 +msgid "Gizmo scale: Press to snap by 5%" +msgstr "Skalowanie uchwytem: naciśnij, aby przyciągać co 5%" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:200 +msgid "Gizmo scale: Scale selection to fit print volume" +msgstr "Skalowanie uchwytem: skaluj wybrane do rozmiarów obszaru roboczego" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:171 msgid "Gizmo SLA hollow" msgstr "Drążenie SLA z uchwytem" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:178 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:172 msgid "Gizmo SLA support points" msgstr "Punkty podpór SLA przy pomocy \"uchwytów\"" -#: src/slic3r/GUI/GLCanvas3D.cpp:2921 -#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:562 +#: src/slic3r/GUI/GLCanvas3D.cpp:3165 +#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:520 msgid "Gizmo-Move" msgstr "Uchwyt-Przesuń" -#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:489 +#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:639 msgid "Gizmo-Place on Face" msgstr "Uchwyt-Połóż na Płaszczyźnie" -#: src/slic3r/GUI/GLCanvas3D.cpp:3001 -#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:564 +#: src/slic3r/GUI/GLCanvas3D.cpp:3249 +#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:522 msgid "Gizmo-Rotate" msgstr "Uchwyt-Obróć" -#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:563 +#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:521 msgid "Gizmo-Scale" msgstr "Uchwyt-Skaluj" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:201 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:199 msgid "Gizmos" msgstr "Uchwyty" -#: src/slic3r/GUI/AboutDialog.cpp:259 +#: src/slic3r/GUI/AboutDialog.cpp:284 src/slic3r/GUI/GUI_App.cpp:244 msgid "GNU Affero General Public License, version 3" msgstr "Ogólna Licencja Publiczna (GPL) GNU Affero, wersja 3" -#: src/slic3r/GUI/ConfigWizard.cpp:980 +#: src/slic3r/GUI/ConfigWizard.cpp:1346 msgid "Good precision is required, so use a caliper and do multiple measurements along the filament, then compute the average." -msgstr "Wymagana jest spora precyzja, użyj więc suwmiarki i przeprowadź kilka pomiarów w sporych odstępach od siebie i oblicz średnią." +msgstr "Wymagana jest spora precyzja, użyj więc suwmiarki, przeprowadź kilka pomiarów w sporych odstępach od siebie i oblicz średnią." -#: src/libslic3r/PrintConfig.cpp:844 +#: src/libslic3r/PrintConfig.cpp:882 msgid "Grid" msgstr "Kratka" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2454 +#: src/slic3r/GUI/PrintHostDialogs.cpp:57 +msgid "Group" +msgstr "Grupa" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2846 msgid "Group manipulation" msgstr "Manipulacja grupą" -#: src/slic3r/GUI/Preferences.cpp:133 +#: src/slic3r/GUI/Preferences.cpp:200 msgid "GUI" msgstr "GUI" -#: src/libslic3r/PrintConfig.cpp:852 +#: src/libslic3r/PrintConfig.cpp:890 msgid "Gyroid" msgstr "Gyroidalny" -#: src/slic3r/GUI/Tab.cpp:2937 -msgid "has the following unsaved changes:" -msgstr "ma następujące niezapisane zmiany:" - -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:47 msgid "Head diameter" msgstr "Średnica łącznika" -#: src/slic3r/GUI/ConfigManipulation.cpp:317 +#: src/libslic3r/PrintConfig.cpp:2772 +msgid "Head penetration" +msgstr "Przenikanie łączników" + +#: src/slic3r/GUI/ConfigManipulation.cpp:322 msgid "Head penetration should not be greater than the head width." msgstr "Przenikanie łączników nie powinno być większe niż ich średnica." -#: src/libslic3r/PrintConfig.cpp:869 +#: src/libslic3r/PrintConfig.cpp:910 msgid "Heated build plate temperature for the first layer. Set this to zero to disable bed temperature control commands in the output." -msgstr "Temperatura podgrzewanego stołu dla pierwszej warstwy. Ustaw zero aby wyłączyć komendy kontrolujące temperaturę stołu w pliku wyjściowym." +msgstr "Temperatura podgrzewanego stołu dla pierwszej warstwy. Ustaw zero, aby wyłączyć komendy kontrolujące temperaturę stołu w pliku wyjściowym." -#: src/slic3r/GUI/GUI_Preview.cpp:222 src/libslic3r/PrintConfig.cpp:500 +#: src/slic3r/GUI/GUI_Preview.cpp:276 src/libslic3r/PrintConfig.cpp:536 msgid "Height" msgstr "Wysokość" -#: src/libslic3r/GCode/PreviewData.cpp:347 +#: src/slic3r/GUI/GCodeViewer.cpp:2236 src/libslic3r/GCode/PreviewData.cpp:352 msgid "Height (mm)" msgstr "Wysokość (mm)" -#: src/libslic3r/PrintConfig.cpp:1688 +#: src/libslic3r/PrintConfig.cpp:1796 msgid "Height of skirt expressed in layers. Set this to a tall value to use skirt as a shield against drafts." msgstr "Wysokość skirtu wyrażona w warstwach. Ustawienie wysokiej wartości spowoduje stworzenie osłony chroniącej przed przeciągami." -#: src/libslic3r/PrintConfig.cpp:2360 +#: src/libslic3r/PrintConfig.cpp:2503 msgid "Height of the display" msgstr "Wysokość wyświetlacza" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1500 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1631 msgid "Height range Modifier" msgstr "Modyfikator zakresu wysokości" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2507 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2899 msgid "Height ranges" msgstr "Zakres wysokości" -#: src/libslic3r/PrintConfig.cpp:261 +#: src/libslic3r/PrintConfig.cpp:295 msgid "Heights at which a filament change is to occur." msgstr "Wysokość w osi Z, na której ma nastąpić zmiana filamentu." -#: src/slic3r/GUI/ConfigWizard.cpp:433 +#: src/slic3r/GUI/ConfigWizard.cpp:451 #, 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 "Witaj w %s! Ten %s pomoże Ci z konfiguracją początkową - wszystko będzie gotowe do drukowania po zaledwie kilku kliknięciach." -#: src/libslic3r/PrintConfig.cpp:3365 +#: src/libslic3r/PrintConfig.cpp:3564 msgid "Help" msgstr "Pomoc" -#: src/libslic3r/PrintConfig.cpp:3371 +#: src/libslic3r/PrintConfig.cpp:3570 msgid "Help (FFF options)" msgstr "Pomoc (opcje FFF)" -#: src/libslic3r/PrintConfig.cpp:3376 +#: src/libslic3r/PrintConfig.cpp:3575 msgid "Help (SLA options)" msgstr "Pomoc (opcje SLA)" @@ -3299,96 +3793,80 @@ msgstr "Pomoc (opcje SLA)" msgid "Here you can adjust required purging volume (mm³) for any given pair of tools." msgstr "To ustawienie odpowiada za objętość czyszczonego filamentu w (mm³) dla danej pary ekstruderów." -#: src/libslic3r/PrintConfig.cpp:973 +#: src/libslic3r/PrintConfig.cpp:1017 msgid "High extruder current on filament swap" msgstr "Zwiększenie prądu ekstrudera przy zmianie filamentu" -#: src/slic3r/GUI/GLCanvas3D.cpp:277 +#: src/slic3r/GUI/GLCanvas3D.cpp:263 msgid "Higher print quality versus higher print speed." msgstr "Wyższa jakość druku vs wyższa prędkość." -#: src/libslic3r/PrintConfig.cpp:427 src/libslic3r/PrintConfig.cpp:853 +#: src/libslic3r/PrintConfig.cpp:463 src/libslic3r/PrintConfig.cpp:891 msgid "Hilbert Curve" msgstr "Krzywa Hilberta" -#: src/slic3r/GUI/Plater.cpp:1042 +#: src/slic3r/GUI/Plater.cpp:916 msgid "Hold Shift to Slice & Export G-code" -msgstr "Przytrzymaj Shift aby Pociąć i Wyeksportować G-code" +msgstr "Przytrzymaj Shift, aby pociąć i wyeksportować G-code" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:47 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:46 msgid "Hole depth" msgstr "Głębokość otworu" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:46 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:45 msgid "Hole diameter" msgstr "Średnica otworu" -#: src/slic3r/GUI/Plater.cpp:2760 -msgid "Hollow" -msgstr "Drążenie" - -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:977 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:785 msgid "Hollow and drill" msgstr "Drążenie i wiercenie" -#: src/libslic3r/PrintConfig.cpp:2910 +#: src/libslic3r/PrintConfig.cpp:3074 msgid "Hollow out a model to have an empty interior" msgstr "Wydrąż model, aby uzyskać puste wnętrze" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:41 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:40 msgid "Hollow this object" msgstr "Wydrąż ten model" -#: src/slic3r/GUI/GUI_ObjectList.cpp:108 src/slic3r/GUI/Tab.cpp:3654 -#: src/slic3r/GUI/Tab.cpp:3655 src/libslic3r/SLA/Hollowing.cpp:46 -#: src/libslic3r/SLA/Hollowing.cpp:58 src/libslic3r/SLA/Hollowing.cpp:67 -#: src/libslic3r/SLA/Hollowing.cpp:76 src/libslic3r/PrintConfig.cpp:2909 -#: src/libslic3r/PrintConfig.cpp:2916 src/libslic3r/PrintConfig.cpp:2926 -#: src/libslic3r/PrintConfig.cpp:2935 +#: src/slic3r/GUI/GUI_ObjectList.cpp:106 src/slic3r/GUI/Tab.cpp:4073 +#: src/slic3r/GUI/Tab.cpp:4074 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:3073 +#: src/libslic3r/PrintConfig.cpp:3080 src/libslic3r/PrintConfig.cpp:3090 +#: src/libslic3r/PrintConfig.cpp:3099 msgid "Hollowing" msgstr "Drążenie" -#: src/slic3r/GUI/Plater.cpp:2926 -msgid "Hollowing cancelled." -msgstr "Drążenie anulowane." - -#: src/slic3r/GUI/Plater.cpp:2927 -msgid "Hollowing done." -msgstr "Drążenie zakończone." - -#: src/slic3r/GUI/Plater.cpp:2929 -msgid "Hollowing failed." -msgstr "Drążenie nie powiodło się." - -#: src/libslic3r/PrintConfig.cpp:2937 +#: src/libslic3r/PrintConfig.cpp:3101 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 inflated back to the specified offset. A greater closing distance makes the interior more rounded. At zero, the interior will resemble the exterior the most." msgstr "Drążenie wnętrza odbywa się w dwóch etapach: w pierwszym obliczana jest wewnątrz pusta przestrzeń o rozmiarach równych sumie grubości powłoki i dystansu domykania, a w kolejnym jest \"nadmuchiwane\" z powrotem do zadanej grubości. Większy dystans zamykania tworzy większe promienie we wnętrzu. Wartość \"0\" odda wnętrze najbardziej zbliżone do zewnętrznej powłoki." -#: src/libslic3r/SLAPrintSteps.cpp:43 +#: src/libslic3r/SLAPrintSteps.cpp:44 msgid "Hollowing model" msgstr "Drążenie modelu" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:813 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:624 msgid "Hollowing parameter change" msgstr "Zmiana parametrów drążenia" -#: src/libslic3r/PrintConfig.cpp:850 src/libslic3r/PrintConfig.cpp:2011 +#: src/libslic3r/PrintConfig.cpp:888 src/libslic3r/PrintConfig.cpp:2153 msgid "Honeycomb" msgstr "Plaster miodu" -#: src/slic3r/GUI/Tab.cpp:1064 +#: src/slic3r/GUI/Tab.cpp:1386 msgid "Horizontal shells" msgstr "Powłoka pozioma" -#: src/libslic3r/PrintConfig.cpp:245 +#: src/libslic3r/PrintConfig.cpp:279 msgid "Horizontal width of the brim that will be printed around each object on the first layer." msgstr "Szerokość brim (obramowania), drukowanego wokół każdego z modeli na pierwszej warstwie." -#: src/slic3r/GUI/PrintHostDialogs.cpp:152 +#: src/slic3r/GUI/PrintHostDialogs.cpp:150 msgid "Host" msgstr "Host" -#: src/libslic3r/PrintConfig.cpp:1332 +#: src/libslic3r/PrintConfig.cpp:1440 msgid "Host Type" msgstr "Rodzaj serwera" @@ -3396,69 +3874,78 @@ msgstr "Rodzaj serwera" msgid "Hostname" msgstr "Nazwa hosta" -#: src/libslic3r/PrintConfig.cpp:97 +#: src/libslic3r/PrintConfig.cpp:99 msgid "Hostname, IP or URL" msgstr "Nazwa hosta, IP lub URL" -#: src/slic3r/GUI/Tab.cpp:139 +#: src/slic3r/GUI/Tab.cpp:210 msgid "" "Hover the cursor over buttons to find more information \n" "or click this button." msgstr "" -"Umieść kursor nad przyciskiem aby uzyskać więcej informacji\n" +"Umieść kursor nad przyciskiem, aby uzyskać więcej informacji\n" "lub kliknij ten przycisk." -#: src/libslic3r/PrintConfig.cpp:2812 +#: src/libslic3r/PrintConfig.cpp:2976 msgid "How far should the pad extend around the contained geometry" msgstr "Jak daleko poza kształt powinna sięgać podkładka" -#: src/libslic3r/PrintConfig.cpp:2901 +#: src/libslic3r/PrintConfig.cpp:3065 msgid "How much should the tiny connectors penetrate into the model body." msgstr "Głębokość, na którą malutkie łączniki podpór powinny wnikać w powłokę modelu." -#: src/libslic3r/PrintConfig.cpp:2631 +#: src/libslic3r/PrintConfig.cpp:2774 msgid "How much the pinhead has to penetrate the model surface" msgstr "Głębokość, na którą łącznik podpory powinien wnikać w powłokę modelu" -#: src/libslic3r/PrintConfig.cpp:2755 +#: src/libslic3r/PrintConfig.cpp:2919 msgid "How much the supports should lift up the supported object. If \"Pad around object\" is enabled, this value is ignored." msgstr "Odległość, na którą model zostanie podniesiony na podporach. Jeśli opcja \"Podkładka wokół modelu\" jest włączona, to ten parametr zostanie zignorowany." -#: src/libslic3r/PrintConfig.cpp:111 +#: src/libslic3r/PrintConfig.cpp:1209 +msgid "How to apply limits" +msgstr "Jak stosować limity" + +#: src/libslic3r/PrintConfig.cpp:1203 +msgid "How to apply the Machine Limits" +msgstr "Jak stosować limity maszynowe" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:358 +#: src/libslic3r/PrintConfig.cpp:113 msgid "HTTPS CA File" msgstr "Plik certyfikatu HTTPS CA" -#: src/slic3r/GUI/Tab.cpp:1713 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:319 msgid "HTTPS CA file is optional. It is only needed if you use HTTPS with a self-signed certificate." msgstr "Plik HTTPS CA jest opcjonalny. Jest potrzebny jedynie w sytuacji, gdy używasz HTTPS z certyfikatem samopodpisanym." -#: src/slic3r/GUI/Preferences.cpp:222 +#: src/slic3r/GUI/Preferences.cpp:376 msgid "Icon size in a respect to the default size" msgstr "Rozmiar ikon w odniesieniu do domyślnego" -#: src/slic3r/GUI/PrintHostDialogs.cpp:149 +#: src/slic3r/GUI/PrintHostDialogs.cpp:147 msgid "ID" msgstr "ID" -#: src/libslic3r/PrintConfig.cpp:1873 +#: src/libslic3r/PrintConfig.cpp:2015 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 "Jeśli ta opcja będzie zaznaczona, to podpory zostaną wygenerowane automatycznie, na podstawie ustawionego progu zwisu. Jeśli ją odznaczysz, to podpory będą generowane jedynie w środku modyfikatora wymuszającego podpory." -#: src/slic3r/GUI/ConfigWizard.cpp:773 +#: src/slic3r/GUI/ConfigWizard.cpp:1132 #, c-format msgid "If enabled, %s checks for new application versions online. When a new version becomes available, a notification is displayed at the next application startup (never during program usage). This is only a notification mechanisms, no automatic installation is done." msgstr "To ustawienie spowoduje wyszukiwanie nowych wersji aplikacji %s online. Po pojawieniu się nowej wersji, przy kolejnym uruchomieniu zostanie wyświetlone powiadomienie (nie pojawi się, gdy aplikacja będzie uruchomiona). Jest to tylko mechanizm powiadamiania - nie instaluje aktualizacji automatycznie." -#: src/slic3r/GUI/ConfigWizard.cpp:783 +#: src/slic3r/GUI/ConfigWizard.cpp:1142 #, c-format msgid "If enabled, %s downloads updates of built-in system presets in the background.These updates are downloaded into a separate temporary location.When a new preset version becomes available it is offered at application startup." msgstr "Jeśli aktywna, to %s będzie pobierać aktualizacje wbudowanych zestawów ustawień w tle. Będą one pobierane do folderu tymczasowego. Opcja aktualizacji ustawień będzie oferowana przy starcie aplikacji." -#: src/libslic3r/PrintConfig.cpp:1852 +#: src/libslic3r/PrintConfig.cpp:1994 msgid "If enabled, all printing extruders will be primed at the front edge of the print bed at the start of the print." msgstr "Jeśli ta opcja będzie aktywna, to wszystkie ekstrudery będą czyszczone na przedniej krawędzi stołu na początku wydruku." -#: src/slic3r/GUI/ConfigWizard.cpp:805 +#: src/slic3r/GUI/ConfigWizard.cpp:1164 msgid "" "If enabled, allows the Reload from disk command to automatically find and load the files when invoked.\n" "If not enabled, the Reload from disk command will ask to select each file using an open file dialog." @@ -3466,127 +3953,174 @@ msgstr "" "Jeśli włączone, pozwala poleceniu \"Wczytaj ponownie z dysku\" automatycznie odnaleźć i wczytać pliki.\n" "Jeśli wyłączone, to polecenie będzie otwierać okno dialogowe, w którym wskażesz plik źródłowy." -#: src/slic3r/GUI/Preferences.cpp:74 +#: src/slic3r/GUI/Preferences.cpp:91 msgid "If enabled, allows the Reload from disk command to automatically find and load the files when invoked." msgstr "Jeśli włączone, pozwala poleceniu Wczytaj ponownie z dysku automatycznie odnaleźć i wczytać pliki." -#: src/slic3r/GUI/Preferences.cpp:66 +#: src/slic3r/GUI/Preferences.cpp:238 +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 "" +"Jeśli włączone, zmiany stosowane suwakiem sekwencyjnym w podglądzie zostaną zastosowane do górnej warstwy G-code.\n" +"Jeśli wyłączone, zmiany stosowane suwakiem sekwencyjnym w podglądzie zostaną zastosowane do całego G-code." + +#: src/slic3r/GUI/Preferences.cpp:83 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 application startup (never during program usage). This is only a notification mechanisms, no automatic installation is done." msgstr "Włączenie automatycznego sprawdzania dostępności nowych wersji PrusaSlicer online. Pojawienie się nowej wersji spowoduje wyświetlenie powiadomienia przy starcie aplikacji (nigdy podczas jej pracy). Ta funkcja służy tylko powiadamianiu, nie instaluje aktualizacji automatycznie." -#: src/slic3r/GUI/Preferences.cpp:82 +#: src/slic3r/GUI/Preferences.cpp:270 +msgid "If enabled, renders object using the environment map." +msgstr "Jeśli włączone, obiekty będą renderowane przy pomocy mapy środowiskowej." + +#: src/slic3r/GUI/Preferences.cpp:200 +msgid "If enabled, reverses the direction of zoom with mouse wheel" +msgstr "Jeśli włączone, kierunek kółka myszy zostanie odwrócony." + +#: src/slic3r/GUI/Preferences.cpp:99 msgid "If enabled, Slic3r downloads updates of built-in system presets in the background. These updates are downloaded into a separate temporary location. When a new preset version becomes available it is offered at application startup." msgstr "Włączenie powoduje pobieranie wbudowanych systemowych zestawów ustawień w tle. Te ustawienia są pobierane do oddzielnej lokalizacji tymczasowej. Jeśli pojawi się nowa wersja to opcja jej instalacji pojawi się przy starcie aplikacji." -#: src/slic3r/GUI/Preferences.cpp:106 +#: src/slic3r/GUI/Preferences.cpp:137 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 "Po włączeniu podgląd 3D będzie renderowany w rozdzielczości Retina. Wyłącz tę opcję w przypadku wystąpienia problemów z wydajnością 3D." -#: src/libslic3r/PrintConfig.cpp:1696 +#: src/slic3r/GUI/Preferences.cpp:215 +msgid "If enabled, the button for the collapse sidebar will be appeared in top right corner of the 3D Scene" +msgstr "Jeśli włączone, na górze podglądu 3D będzie wyświetlany przycisk zwijania bocznego panelu" + +#: src/libslic3r/PrintConfig.cpp:3698 +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 "Jeśli włączone, argumenty linii komend zostaną wysłane do istniejącego GUI PrusaSlicer lub aktywnego okna PrusaSlicer. Nadpisuje parametr konfiguracji \"single_instance\" z preferencji aplikacji." + +#: src/libslic3r/PrintConfig.cpp:1804 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 "Po włączeniu, wysokość skirt będzie taka sama, jak najwyższego modelu. Przydaje się podczas druku z ABS lub ASA - chroni wydruk przed podwijaniem się i odklejaniem od stołu przez przeciąg." -#: src/libslic3r/PrintConfig.cpp:1858 +#: src/libslic3r/PrintConfig.cpp:2000 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 print the wipe tower. User is responsible for ensuring there is no collision with the print." msgstr "Po włączeniu wieża czyszcząca nie będzie drukowana na warstwach, na których nie ma zmian koloru. Na kolejnych warstwach ze zmianami koloru ekstruder zjedzie w dół, aby kontynuować czyszczenie na wieży. Użytkownik musi upewnić się, że nie nastąpi kolizja głowicy z wydrukiem." -#: src/slic3r/GUI/Preferences.cpp:128 +#: src/slic3r/GUI/Preferences.cpp:193 msgid "If enabled, use free camera. If not enabled, use constrained camera." msgstr "Jeśli włączone, to używany będę wolny widok. Jeśli wyłączone, to widok będzie ograniczony." -#: src/slic3r/GUI/Preferences.cpp:121 +#: src/slic3r/GUI/Preferences.cpp:186 msgid "If enabled, use perspective camera. If not enabled, use orthographic camera." msgstr "Po włączeniu będzie wyświetlony widok perspektywiczny. Po wyłączeniu, ortograficzny." -#: src/slic3r/GUI/Preferences.cpp:145 +#: src/slic3r/GUI/Preferences.cpp:222 msgid "If enabled, you can change size of toolbar icons manually." msgstr "Włączenie umożliwi ręczną zmianę rozmiaru ikon pasków narzędzi." -#: src/slic3r/GUI/PresetHints.cpp:29 +#: src/slic3r/GUI/PresetHints.cpp:28 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 "Jeśli szacowany czas druku warstwy jest niższy niż ~%1%s, wentylator będzie pracował na %2%%% a prędkość druku zostanie obniżona tak, aby warstwa była drukowana przez nie mniej niż %3%s (jednakże prędkość nie zejdzie poniżej %4%mm/s)." -#: src/slic3r/GUI/PresetHints.cpp:36 +#: src/slic3r/GUI/PresetHints.cpp:35 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 "Jeśli szacowany czas jest wyższy, ale poniżej ~%1%s, wentylator będzie pracował z proporcjonalnie zmniejszaną prędkością poniędzy %2%%% a %3%%%." -#: src/libslic3r/PrintConfig.cpp:901 +#: src/libslic3r/PrintConfig.cpp:943 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 "Jeśli ustawisz wartość bezwzględną wyrażoną w mm/s, taka prędkość będzie zastosowana dla wszystkich ruchów drukujących dla pierwszej warstwy, nie zależnie od ich rodzajów. Jeśli ustawisz wartość procentową (np. 40%), będzie ona skalowana wg domyślnej prędkości." -#: src/libslic3r/PrintConfig.cpp:573 +#: src/libslic3r/PrintConfig.cpp:609 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 "Jeśli szacowany czas druku warstwy będzie niższy niż ta wartość to wentylator będzie włączony a jego prędkość będzie interpolowana na podstawie górnego i dolnego limitu prędkości." -#: src/libslic3r/PrintConfig.cpp:1706 +#: src/libslic3r/PrintConfig.cpp:1821 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 "Jeśli szacowany czas druku warstwy będzie niższy niż ta wartość to prędkość ruchów drukujących będzie zmniejszona aby wydłużyć czas druku." +msgstr "Jeśli szacowany czas druku warstwy będzie niższy niż ta wartość to prędkość ruchów drukujących będzie zmniejszona, aby wydłużyć czas druku." -#: src/libslic3r/PrintConfig.cpp:567 +#: src/libslic3r/PrintConfig.cpp:603 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 "Ta opcja spowoduje, że wentylator nie wyłączy się podczas druku, tzn. zawsze będzie pracował z przynajmniej minimalną prędkością. Przydatne dla PLA, może szkodzić przy ABS." -#: src/slic3r/GUI/Preferences.cpp:49 +#: src/slic3r/GUI/Preferences.cpp:66 msgid "If this is enabled, Slic3r will auto-center objects around the print bed center." -msgstr "Spowoduje, że Slic3r będzie automatycznie umieszczał modele wokół centrum stołu." +msgstr "Spowoduje, że PrusaSlicer będzie automatycznie umieszczał modele wokół centrum stołu." -#: src/slic3r/GUI/Preferences.cpp:57 +#: src/slic3r/GUI/Preferences.cpp:74 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 "Spowoduje, że Slic3r będzie automatycznie procesował modele jak tylko zostaną załadowane aby zmniejszyć czas eksportu G-code." +msgstr "Spowoduje, że Slic3r będzie automatycznie procesował modele jak tylko zostaną załadowane, aby zmniejszyć czas eksportu G-code." -#: src/slic3r/GUI/Preferences.cpp:41 +#: src/slic3r/GUI/Preferences.cpp:54 msgid "If this is enabled, Slic3r will prompt the last output directory instead of the one containing the input files." msgstr "Włączenie spowoduje, że Slic3r będzie za każdym razem pytał gdzie wyeksportować plik zamiast używać katalogu z plikami wejściowymi." -#: src/libslic3r/PrintConfig.cpp:1562 +#: src/slic3r/GUI/Preferences.cpp:125 +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 "Jeśli włączone, uruchomienie PrusaSlicer, gdy uruchomiona jest ta sama wersja PrusaSlicer, spowoduje reaktywację tej instancji." + +#: src/libslic3r/PrintConfig.cpp:1670 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 "Jeśli ustawisz tu wartość dodatnią to oś Z wykona szybki ruch w górę przy każdej retrakcji. Przy używaniu kilku ekstruderów tylko ustawienia pierwszego z nich będą brane pod uwagę." -#: src/libslic3r/PrintConfig.cpp:1571 +#: src/libslic3r/PrintConfig.cpp:1679 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 "Jeśli ustawisz wartość dodatnią, to oś Z (z-hop) będzie podnosić się tylko powyżej ustawionej wartości. Możesz w ten sposób wyłączyć z-hop na pierwszej warstwie." -#: src/libslic3r/PrintConfig.cpp:1580 +#: src/libslic3r/PrintConfig.cpp:1688 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 "Jeśli ustawisz wartość dodatnią, to z-hop będzie odbywał się tylko poniżej ustawionej wartości. Możesz w ten sposób ograniczyć działanie funkcji np. tylko dla pierwszych warstw." -#: src/libslic3r/PrintConfig.cpp:1454 +#: src/libslic3r/PrintConfig.cpp:1562 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. Scripts will be passed the absolute path to the G-code file as the first argument, and they can access the Slic3r config settings by reading environment variables." msgstr "Wprowadź ścieżki do własnych skryptów jeśli chcesz dodać je do wyjściowego pliku G-code. Możesz dodać wiele skryptów, rozdzielając je średnikiem ( ; ). Skrypty będą przetwarzane jako pierwsze w kolejności i mają dostęp do ustawień konfiguracyjnych Slic3ra przez zmienne środowiskowe." -#: src/libslic3r/PrintConfig.cpp:530 +#: src/libslic3r/PrintConfig.cpp:566 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 of each extruder with respect to the first one. It expects positive coordinates (they will be subtracted from the XY coordinate)." msgstr "Jeśli oprogramowanie układowe (firmware) Twojej drukarki nie obsługuje rozmieszczenia ekstruderów to trzeba to określić w G-code. Ta opcja pozwala ustawić rozmieszczenie każdego ekstrudera w relacji do pierwszego. Oczekuje koordynat dodatnich (będą odejmowane od koordynat XY)." -#: src/libslic3r/PrintConfig.cpp:2169 +#: src/libslic3r/PrintConfig.cpp:2312 msgid "If your firmware requires relative E values, check this, otherwise leave it unchecked. Most firmwares use absolute values." msgstr "Jeśli Twój firmware wymaga względnych wartości E, zaznacz to pole. W innym przypadku zostaw puste. Większość układów obsługuje wartości absolutne." -#: src/libslic3r/PrintConfig.cpp:3485 +#: src/libslic3r/PrintConfig.cpp:1219 +msgid "Ignore" +msgstr "Ignoruj" + +#: src/libslic3r/PrintConfig.cpp:3684 msgid "Ignore non-existent config files" msgstr "Ignoruj nieistniejące pliki konfiguracyjne" -#: src/slic3r/GUI/MainFrame.cpp:464 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:192 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:173 +msgid "Ignores facets facing away from the camera." +msgstr "Ignoruje powierzchnie skierowane w przeciwną stronę względem widoku." + +#: src/slic3r/GUI/MainFrame.cpp:1055 msgid "Import &Config" msgstr "Import Konfigura&cji" -#: src/slic3r/GUI/MainFrame.cpp:471 +#: src/slic3r/GUI/MainFrame.cpp:1062 msgid "Import Config &Bundle" msgstr "Import Paczki Konfi&guracyjnej" -#: src/slic3r/GUI/MainFrame.cpp:467 +#: src/slic3r/GUI/MainFrame.cpp:1058 msgid "Import Config from &project" msgstr "Import Konfiguracji z &projektu" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:119 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:112 msgid "Import Config from ini/amf/3mf/gcode" msgstr "Importuj konfigurację z ini/amf/3mf/gcode" -#: src/slic3r/GUI/Plater.cpp:4603 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:39 +msgid "Import file" +msgstr "Import pliku" + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:46 +msgid "Import model and profile" +msgstr "Import modelu i profilu" + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:48 +msgid "Import model only" +msgstr "Import tylko modelu" + +#: src/slic3r/GUI/Plater.cpp:4655 msgid "Import Object" msgstr "Import Modelu" -#: src/slic3r/GUI/Plater.cpp:4607 +#: src/slic3r/GUI/Plater.cpp:4659 msgid "Import Objects" msgstr "Importuj Modele" @@ -3594,15 +4128,50 @@ msgstr "Importuj Modele" msgid "Import of the repaired 3mf file failed" msgstr "Niepowodzenie importu naprawionego pliku 3MF" -#: src/slic3r/GUI/MainFrame.cpp:460 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:47 +msgid "Import profile only" +msgstr "Import tylko profilu" + +#: src/slic3r/GUI/MainFrame.cpp:1050 +msgid "Import SL1 archive" +msgstr "Import archiwum SL1" + +#: src/slic3r/GUI/Plater.cpp:1561 +msgid "Import SLA archive" +msgstr "Import archiwum SLA" + +#: src/slic3r/GUI/MainFrame.cpp:1046 +msgid "Import STL (imperial units)" +msgstr "Import STL (jednostki imperialne)" + +#: src/slic3r/GUI/MainFrame.cpp:1042 msgid "Import STL/OBJ/AM&F/3MF" msgstr "Import STL/OBJ/AM&F/3MF" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:118 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:111 msgid "Import STL/OBJ/AMF/3MF without config, keep plater" msgstr "Otwórz STL/OBJ/AMF/3MF bez konfiguracji, zachowaj zawartość stołu" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3422 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:159 +msgid "Importing canceled." +msgstr "Importowanie anulowane." + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:160 +msgid "Importing done." +msgstr "Importowanie zakończone." + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:135 +msgid "Importing SLA archive" +msgstr "Importowanie archiwum SLA" + +#: 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 "cale" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:3885 #, c-format msgid "In this mode you can select only other %s Items%s" msgstr "W tym trybie możesz wybrać jedynie %s elementów %s" @@ -3611,25 +4180,25 @@ msgstr "W tym trybie możesz wybrać jedynie %s elementów %s" msgid "Incompatible bundles:" msgstr "Niekompatybilne zestawy ustawień:" +#: src/slic3r/GUI/PresetComboBoxes.cpp:241 +msgid "Incompatible presets" +msgstr "Niekompatybilne zestawy ustawień" + #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:75 #, c-format msgid "Incompatible with this %s" msgstr "Brak kompatybilności z %s" -#: src/slic3r/GUI/Plater.cpp:4685 +#: src/slic3r/GUI/Plater.cpp:4790 msgid "Increase Instances" msgstr "Zwiększ ilość instancji" -#: src/slic3r/GUI/GLCanvas3D.cpp:264 +#: src/slic3r/GUI/GLCanvas3D.cpp:251 msgid "Increase/decrease edit area" msgstr "Zmniejsz/zwiększ obszar edycji" -#: src/slic3r/GUI/Plater.cpp:2922 -msgid "Indexing hollowed object" -msgstr "Indeksowanie wydrążonego obiektu" - #. TRN Description for "UNLOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:3258 +#: src/slic3r/GUI/Tab.cpp:3695 msgid "" "indicates that some settings were changed and are not equal to the system (or default) values for the current option group.\n" "Click the UNLOCKED LOCK icon to reset all settings for current option group to the system (or default) values." @@ -3638,432 +4207,488 @@ msgstr "" "Kliknij ikonę OTWARTEJ KŁÓDKI, aby zresetować wszystkie ustawienia obecnej grupy ustawień do wartości systemowych (lub domyślnych)." #. TRN Description for "LOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:3254 +#: src/slic3r/GUI/Tab.cpp:3691 msgid "indicates that the settings are the same as the system (or default) values for the current option group" msgstr "wskazuje na to, że ustawienia są takie same jak systemowe (lub domyślne) wartości dla danej grupy opcji" #. TRN Description for "BACK ARROW" -#: src/slic3r/GUI/Tab.cpp:3270 +#: src/slic3r/GUI/Tab.cpp:3707 msgid "" "indicates that the settings were changed and are not equal to the last saved preset for the current option group.\n" "Click the BACK ARROW icon to reset all settings for the current option group to the last saved preset." msgstr "" "oznacza, że ustawienia zostały zmodyfikowane i nie odpowiadają tym z ostatnio zapisanego zestawu ustawień dla obecnej grupy opcji.\n" -"Kliknij ikonę STRZAŁKI W TYŁ aby zresetować wszystkie ustawienia w obecnej grupie opcji do tych z ostatnio zapisanego zestawu ustawień." +"Kliknij ikonę STRZAŁKI W TYŁ, aby zresetować wszystkie ustawienia w obecnej grupie opcji do tych z ostatnio zapisanego zestawu ustawień." -#: src/slic3r/GUI/ConfigManipulation.cpp:211 -#: src/slic3r/GUI/GUI_ObjectList.cpp:35 src/slic3r/GUI/GUI_ObjectList.cpp:96 -#: src/slic3r/GUI/GUI_ObjectList.cpp:614 src/slic3r/GUI/Plater.cpp:527 -#: src/slic3r/GUI/Tab.cpp:1091 src/slic3r/GUI/Tab.cpp:1092 -#: src/libslic3r/PrintConfig.cpp:203 src/libslic3r/PrintConfig.cpp:416 -#: src/libslic3r/PrintConfig.cpp:436 src/libslic3r/PrintConfig.cpp:776 -#: src/libslic3r/PrintConfig.cpp:790 src/libslic3r/PrintConfig.cpp:827 -#: src/libslic3r/PrintConfig.cpp:981 src/libslic3r/PrintConfig.cpp:991 -#: src/libslic3r/PrintConfig.cpp:1009 src/libslic3r/PrintConfig.cpp:1028 -#: src/libslic3r/PrintConfig.cpp:1047 src/libslic3r/PrintConfig.cpp:1728 -#: src/libslic3r/PrintConfig.cpp:1745 +#: src/slic3r/GUI/ConfigManipulation.cpp:210 +#: 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:393 +#: src/slic3r/GUI/Tab.cpp:1413 src/slic3r/GUI/Tab.cpp:1414 +#: src/libslic3r/PrintConfig.cpp:237 src/libslic3r/PrintConfig.cpp:450 +#: src/libslic3r/PrintConfig.cpp:472 src/libslic3r/PrintConfig.cpp:812 +#: src/libslic3r/PrintConfig.cpp:826 src/libslic3r/PrintConfig.cpp:863 +#: src/libslic3r/PrintConfig.cpp:1025 src/libslic3r/PrintConfig.cpp:1035 +#: src/libslic3r/PrintConfig.cpp:1053 src/libslic3r/PrintConfig.cpp:1072 +#: src/libslic3r/PrintConfig.cpp:1091 src/libslic3r/PrintConfig.cpp:1843 +#: src/libslic3r/PrintConfig.cpp:1860 msgid "Infill" msgstr "Wypełnienie" -#: src/slic3r/GUI/PresetHints.cpp:174 +#: src/slic3r/GUI/PresetHints.cpp:173 msgid "infill" msgstr "wypełnienia" -#: src/libslic3r/PrintConfig.cpp:1021 +#: src/libslic3r/PrintConfig.cpp:1065 msgid "Infill before perimeters" msgstr "Wypełnienie przed obrysami" -#: src/libslic3r/PrintConfig.cpp:1001 +#: src/libslic3r/PrintConfig.cpp:1045 msgid "Infill extruder" msgstr "Ekstruder dla wypełnienia" -#: src/libslic3r/PrintConfig.cpp:1036 +#: src/libslic3r/PrintConfig.cpp:1080 msgid "Infill/perimeters overlap" msgstr "Nakładanie wypełnienia na obrysy" -#: src/libslic3r/Print.cpp:1584 +#: src/libslic3r/Print.cpp:1610 msgid "Infilling layers" msgstr "Warstwy wypełniające" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3430 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3505 src/slic3r/GUI/Plater.cpp:141 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3893 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3968 src/slic3r/GUI/Plater.cpp:147 msgid "Info" msgstr "Info" -#: src/libslic3r/PrintConfig.cpp:1057 +#: src/slic3r/GUI/GUI_App.cpp:1087 src/slic3r/GUI/Tab.cpp:3435 +msgid "Information" +msgstr "Informacje" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:547 +msgid "Infornation" +msgstr "Informacje" + +#: src/libslic3r/PrintConfig.cpp:1101 msgid "Inherits profile" msgstr "Dziedziczy profil" -#: src/libslic3r/SLAPrint.cpp:653 +#: src/libslic3r/SLAPrint.cpp:667 msgid "Initial exposition time is out of printer profile bounds." msgstr "Początkowy czas naświetlania jest poza zakresem profilu drukarki." -#: src/libslic3r/PrintConfig.cpp:2564 src/libslic3r/PrintConfig.cpp:2565 +#: src/libslic3r/PrintConfig.cpp:2707 src/libslic3r/PrintConfig.cpp:2708 msgid "Initial exposure time" msgstr "Początkowy czas naświetlania" -#: src/libslic3r/PrintConfig.cpp:2482 src/libslic3r/PrintConfig.cpp:2483 +#: src/libslic3r/PrintConfig.cpp:2625 src/libslic3r/PrintConfig.cpp:2626 msgid "Initial layer height" msgstr "Wysokość pierwszej warstwy" -#: src/slic3r/GUI/Field.cpp:204 +#: src/slic3r/GUI/Field.cpp:252 src/slic3r/GUI/Field.cpp:1370 msgid "Input value is out of range" msgstr "Wartość poza zakresem" -#: src/slic3r/GUI/GUI_App.cpp:800 +#: src/slic3r/GUI/GUI_App.cpp:1480 msgid "Inspect / activate configuration snapshots" msgstr "Sprawdzenie / aktywacja zrzutów konfiguracji" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:60 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:216 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:62 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:218 #, c-format msgid "Instance %d" msgstr "Kopia %d" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2500 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2892 msgid "Instance manipulation" msgstr "Manipulacja kopią modelu" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:56 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:58 msgid "Instances" msgstr "Instancje (kopie)" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1091 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3781 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1215 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4244 msgid "Instances to Separated Objects" msgstr "Kopie jako Osobne Modele" -#: src/libslic3r/PrintConfig.cpp:1973 +#: src/libslic3r/PrintConfig.cpp:2115 msgid "Interface layers" msgstr "Warstwy łączące" -#: src/libslic3r/PrintConfig.cpp:1957 +#: src/libslic3r/PrintConfig.cpp:2099 msgid "Interface loops" msgstr "Warstwy łączące (pętle)" -#: src/libslic3r/PrintConfig.cpp:1982 +#: src/libslic3r/PrintConfig.cpp:2124 msgid "Interface pattern spacing" msgstr "Rozstaw wzoru warstw łączących" -#: src/libslic3r/PrintConfig.cpp:1071 +#: src/libslic3r/PrintConfig.cpp:1115 msgid "Interface shells" msgstr "Powłoki łączące" -#: src/libslic3r/Zipper.cpp:84 +#: src/libslic3r/miniz_extension.cpp:143 msgid "internal error" msgstr "błąd wewnętrzny" -#: src/slic3r/GUI/GUI_Preview.cpp:240 src/libslic3r/ExtrusionEntity.cpp:313 +#: src/slic3r/GUI/GUI_Preview.cpp:304 src/libslic3r/ExtrusionEntity.cpp:317 +#: src/libslic3r/ExtrusionEntity.cpp:342 msgid "Internal infill" msgstr "Wypełnienie wewnętrzne" -#: src/slic3r/GUI/Plater.cpp:3106 +#: src/slic3r/GUI/BedShapeDialog.cpp:145 +msgid "Invalid" +msgstr "Nieprawidłowy" + +#: src/slic3r/GUI/Plater.cpp:2906 src/slic3r/GUI/Plater.cpp:3583 msgid "Invalid data" msgstr "Nieprawidłowe dane" -#: src/slic3r/GUI/BedShapeDialog.cpp:494 src/slic3r/GUI/BedShapeDialog.cpp:543 -#: src/slic3r/GUI/BedShapeDialog.cpp:566 +#: src/slic3r/GUI/BedShapeDialog.cpp:570 src/slic3r/GUI/BedShapeDialog.cpp:619 +#: src/slic3r/GUI/BedShapeDialog.cpp:642 msgid "Invalid file format." msgstr "Nieprawidłowy format pliku." -#: src/libslic3r/Zipper.cpp:80 +#: src/libslic3r/miniz_extension.cpp:139 msgid "invalid filename" msgstr "nieprawidłowa nazwa" -#: src/slic3r/GUI/ConfigManipulation.cpp:319 +#: src/slic3r/GUI/ConfigManipulation.cpp:324 msgid "Invalid Head penetration" msgstr "Nieprawidłowe przenikanie łączników podpór" -#: src/libslic3r/Zipper.cpp:48 +#: src/libslic3r/miniz_extension.cpp:107 msgid "invalid header or archive is corrupted" msgstr "niewłaściwy nagłówek lub uszkodzone archiwum" -#: src/slic3r/GUI/Field.cpp:195 src/slic3r/GUI/Field.cpp:226 -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:376 +#: 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." msgstr "Nieprawidłowa wartość numeryczna." -#: src/libslic3r/Zipper.cpp:78 +#: src/libslic3r/miniz_extension.cpp:137 msgid "invalid parameter" msgstr "nieprawidłowy parametr" -#: src/slic3r/GUI/ConfigManipulation.cpp:332 +#: src/slic3r/GUI/ConfigManipulation.cpp:337 msgid "Invalid pinhead diameter" msgstr "Błędna średnica łącznika" +#: src/slic3r/GUI/GUI_ObjectList.cpp:94 src/slic3r/GUI/GUI_ObjectList.cpp:653 +#: src/slic3r/GUI/GUI_Preview.cpp:307 src/slic3r/GUI/Tab.cpp:1420 +#: src/libslic3r/ExtrusionEntity.cpp:320 src/libslic3r/ExtrusionEntity.cpp:348 +#: src/libslic3r/PrintConfig.cpp:1126 src/libslic3r/PrintConfig.cpp:1132 +#: src/libslic3r/PrintConfig.cpp:1146 src/libslic3r/PrintConfig.cpp:1156 +msgid "Ironing" +msgstr "Prasowanie" + +#: src/libslic3r/PrintConfig.cpp:1131 src/libslic3r/PrintConfig.cpp:1133 +msgid "Ironing Type" +msgstr "Rodzaj prasowania" + +#: src/slic3r/GUI/GUI_App.cpp:243 +msgid "is based on Slic3r by Alessandro Ranellucci and the RepRap community." +msgstr "bazuje na projekcie Slic3r autorstwa Alessandro Ranellucciego i społeczności RepRap." + #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:258 +#: src/slic3r/GUI/AboutDialog.cpp:283 src/slic3r/GUI/GUI_App.cpp:244 msgid "is licensed under the" msgstr "ma licencję na warunkach" -#: src/slic3r/GUI/Tab.cpp:2941 -msgid "is not compatible with print profile" -msgstr "nie jest kompatybilne z profilem druku" - -#: src/slic3r/GUI/Tab.cpp:2940 -msgid "is not compatible with printer" -msgstr "nie jest kompatybilne z drukarką" - -#: src/slic3r/GUI/MainFrame.cpp:658 +#: src/slic3r/GUI/MainFrame.cpp:955 src/slic3r/GUI/MainFrame.cpp:1275 msgid "Iso" msgstr "Izometryczny" -#: src/slic3r/GUI/MainFrame.cpp:658 +#: src/slic3r/GUI/MainFrame.cpp:955 src/slic3r/GUI/MainFrame.cpp:1275 msgid "Iso View" msgstr "Widok izometryczny" -#: src/slic3r/GUI/Tab.cpp:964 +#: src/slic3r/GUI/Tab.cpp:1282 msgid "It can't be deleted or modified." msgstr "Nie można usunąć ani zmodyfikować." -#: src/slic3r/GUI/Plater.cpp:3321 +#: src/slic3r/GUI/Plater.cpp:3124 msgid "It is not allowed to change the file to reload" msgstr "Zmiana modelu do ponownego wczytania jest niemożliwa" -#: src/libslic3r/PrintConfig.cpp:974 +#: src/libslic3r/PrintConfig.cpp:1018 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 "Zwiększenie prądu podawanego do silnika ekstrudera może mieć pozytywny wpływ podczas zmiany filamentu, pomagając kształtować końcówkę przez wyciskanie oraz przepychać filament z nieprawidłowo ukształtowaną końcówką." -#: src/slic3r/GUI/GUI_App.cpp:1084 src/slic3r/GUI/Tab.cpp:2958 +#: src/slic3r/GUI/Tab.cpp:3413 +msgid "It's a last preset for this physical printer." +msgstr "Jest to ostatni zestaw ustawień dla fizycznej drukarki." + +#: src/slic3r/GUI/GUI_App.cpp:1876 src/slic3r/GUI/Tab.cpp:3187 msgid "It's impossible to print multi-part object(s) with SLA technology." msgstr "Drukowanie modeli złożonych z wielu elementów jest niemożliwe w technologii SLA." -#: src/slic3r/GUI/Tab.cpp:2229 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:601 +msgid "It's not possible to delete the last related preset for the printer." +msgstr "Nie ma możliwości usunięcia ostatniego zestawu ustawień dla drukarki." + +#: src/slic3r/GUI/Tab.cpp:2398 msgid "Jerk limits" msgstr "Limity jerku" -#: src/libslic3r/PrintConfig.cpp:1649 +#: src/libslic3r/PrintConfig.cpp:1757 msgid "Jitter" msgstr "Jitter" -#: src/slic3r/GUI/DoubleSlider.cpp:957 src/slic3r/GUI/DoubleSlider.cpp:1529 -#: src/slic3r/GUI/DoubleSlider.cpp:1651 +#: src/slic3r/GUI/DoubleSlider.cpp:1077 src/slic3r/GUI/DoubleSlider.cpp:1721 +#: src/slic3r/GUI/DoubleSlider.cpp:1852 src/slic3r/GUI/DoubleSlider.cpp:1856 msgid "Jump to height" msgstr "Przejdź do wysokości" -#: src/slic3r/GUI/DoubleSlider.cpp:955 +#: src/slic3r/GUI/DoubleSlider.cpp:1075 #, c-format msgid "Jump to height %s or Set extruder sequence for the entire print" msgstr "Przejdź na wysokość %s lub ustaw sekwencję ekstruderów dla całego wydruku" -#: src/libslic3r/PrintConfig.cpp:566 +#: src/slic3r/GUI/DoubleSlider.cpp:1071 src/slic3r/GUI/DoubleSlider.cpp:1852 +msgid "Jump to move" +msgstr "Przeskocz do ruchu" + +#: src/slic3r/GUI/SavePresetDialog.cpp:315 +msgid "Just switch to \"%1%\" preset" +msgstr "Przełącz na zestaw ustawień \"%1%\"" + +#: src/libslic3r/PrintConfig.cpp:602 msgid "Keep fan always on" msgstr "Wentylator zawsze włączony" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:169 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:171 msgid "Keep lower part" msgstr "Zachowaj dolną część" -#: src/slic3r/GUI/GLCanvas3D.cpp:304 +#: src/slic3r/GUI/GLCanvas3D.cpp:290 msgid "Keep min" msgstr "Zachowaj min" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:168 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:170 msgid "Keep upper part" msgstr "Zachowaj górną część" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:41 src/slic3r/GUI/MainFrame.cpp:708 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:37 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:39 src/slic3r/GUI/MainFrame.cpp:941 +#: src/slic3r/GUI/MainFrame.cpp:1332 msgid "Keyboard Shortcuts" msgstr "Skróty klawiszowe" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:245 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:259 msgid "Keyboard shortcuts" msgstr "Skróty klawiszowe" -#: src/libslic3r/PrintConfig.cpp:2498 +#: src/libslic3r/PrintConfig.cpp:2641 msgid "kg" msgstr "kg" -#: src/libslic3r/PrintConfig.cpp:965 +#: src/libslic3r/PrintConfig.cpp:1009 msgid "Label objects" msgstr "Oznacz modele" -#: src/libslic3r/PrintConfig.cpp:2399 +#: src/libslic3r/PrintConfig.cpp:2542 msgid "Landscape" msgstr "Tryb krajobrazu" -#: src/slic3r/GUI/GUI_App.cpp:629 +#: src/slic3r/GUI/GUI_App.cpp:1295 msgid "Language" msgstr "Język" -#: src/slic3r/GUI/GUI_App.cpp:885 +#: src/slic3r/GUI/GUI_App.cpp:1605 src/slic3r/GUI/GUI_App.cpp:1614 msgid "Language selection" msgstr "Wybór języka" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2140 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2242 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2307 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2408 msgid "Last instance of an object cannot be deleted." msgstr "Ostatnia kopia modelu nie może zostać usunięta." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3418 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3881 msgid "Layer" msgstr "Warstwa" -#: src/slic3r/GUI/ConfigManipulation.cpp:49 -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:27 src/slic3r/GUI/Tab.cpp:1049 +#: src/slic3r/GUI/ConfigManipulation.cpp:48 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:29 src/slic3r/GUI/Tab.cpp:1371 #: src/libslic3r/PrintConfig.cpp:71 msgid "Layer height" msgstr "Wysokość warstwy" -#: src/libslic3r/Print.cpp:1427 +#: src/libslic3r/Print.cpp:1453 msgid "Layer height can't be greater than nozzle diameter" msgstr "Wysokość pierwszej warstwy nie może być większa od średnicy dyszy" -#: src/slic3r/GUI/Tab.cpp:2362 +#: src/slic3r/GUI/Tab.cpp:2531 msgid "Layer height limits" msgstr "Limit wysokości warstw" -#: src/slic3r/GUI/ConfigWizard.cpp:2015 -msgid "Layer height:" -msgstr "Wysokość warstwy:" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:2488 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2880 msgid "Layer range Settings to modify" msgstr "Zakres warstw dla modyfikacji ustawień" #: src/slic3r/GUI/ExtruderSequenceDialog.cpp:52 -#: src/libslic3r/PrintConfig.cpp:362 src/libslic3r/PrintConfig.cpp:994 -#: src/libslic3r/PrintConfig.cpp:1505 src/libslic3r/PrintConfig.cpp:1690 -#: src/libslic3r/PrintConfig.cpp:1750 src/libslic3r/PrintConfig.cpp:1930 -#: src/libslic3r/PrintConfig.cpp:1976 +#: src/libslic3r/PrintConfig.cpp:396 src/libslic3r/PrintConfig.cpp:1038 +#: src/libslic3r/PrintConfig.cpp:1613 src/libslic3r/PrintConfig.cpp:1798 +#: src/libslic3r/PrintConfig.cpp:1865 src/libslic3r/PrintConfig.cpp:2072 +#: src/libslic3r/PrintConfig.cpp:2118 msgid "layers" msgstr "warstwy" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:67 src/slic3r/GUI/Tab.cpp:3512 -#: src/slic3r/GUI/Tab.cpp:3600 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:69 src/slic3r/GUI/Tab.cpp:3928 +#: src/slic3r/GUI/Tab.cpp:4010 msgid "Layers" msgstr "Warstwy" -#: src/slic3r/GUI/Tab.cpp:1048 src/slic3r/GUI/Tab.cpp:3598 +#: src/slic3r/GUI/Tab.cpp:1370 src/slic3r/GUI/Tab.cpp:4008 msgid "Layers and perimeters" msgstr "Warstwy i obrysy" -#: src/slic3r/GUI/GUI_ObjectList.cpp:34 src/slic3r/GUI/GUI_ObjectList.cpp:95 -#: src/slic3r/GUI/GUI_ObjectList.cpp:613 src/libslic3r/PrintConfig.cpp:72 -#: src/libslic3r/PrintConfig.cpp:175 src/libslic3r/PrintConfig.cpp:184 -#: src/libslic3r/PrintConfig.cpp:408 src/libslic3r/PrintConfig.cpp:470 -#: src/libslic3r/PrintConfig.cpp:478 src/libslic3r/PrintConfig.cpp:890 -#: src/libslic3r/PrintConfig.cpp:1075 src/libslic3r/PrintConfig.cpp:1374 -#: src/libslic3r/PrintConfig.cpp:1441 src/libslic3r/PrintConfig.cpp:1622 -#: src/libslic3r/PrintConfig.cpp:2074 src/libslic3r/PrintConfig.cpp:2133 -#: src/libslic3r/PrintConfig.cpp:2142 +#: 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:209 src/libslic3r/PrintConfig.cpp:218 +#: src/libslic3r/PrintConfig.cpp:442 src/libslic3r/PrintConfig.cpp:506 +#: src/libslic3r/PrintConfig.cpp:514 src/libslic3r/PrintConfig.cpp:932 +#: src/libslic3r/PrintConfig.cpp:1119 src/libslic3r/PrintConfig.cpp:1482 +#: src/libslic3r/PrintConfig.cpp:1549 src/libslic3r/PrintConfig.cpp:1730 +#: src/libslic3r/PrintConfig.cpp:2217 src/libslic3r/PrintConfig.cpp:2276 +#: src/libslic3r/PrintConfig.cpp:2285 msgid "Layers and Perimeters" msgstr "Warstwy i Obrysy" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:222 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:225 msgid "Layers Slider" msgstr "Suwak warstw" -#: src/slic3r/GUI/OptionsGroup.cpp:258 +#: src/slic3r/GUI/OptionsGroup.cpp:293 msgctxt "Layers" msgid "Bottom" msgstr "Spód" -#: src/slic3r/GUI/OptionsGroup.cpp:258 +#: src/slic3r/GUI/OptionsGroup.cpp:293 msgctxt "Layers" msgid "Top" msgstr "Góra" -#: src/slic3r/GUI/MainFrame.cpp:671 +#: src/slic3r/GUI/Preferences.cpp:440 +msgid "Layout Options" +msgstr "Opcje układu" + +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:48 +msgid "Leaving Paint-on supports" +msgstr "Zamykam malowanie podpór" + +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:47 +msgid "Leaving Seam painting" +msgstr "Zamykam malowanie szwu" + +#: src/slic3r/GUI/MainFrame.cpp:968 src/slic3r/GUI/MainFrame.cpp:1288 msgid "Left" msgstr "Lewo" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1363 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1366 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1367 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1210 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1213 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1214 msgid "Left click" msgstr "Lewy przycisk" -#: src/slic3r/GUI/GLCanvas3D.cpp:237 -msgid "Left mouse button:" -msgstr "Lewy przycisk myszki:" +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:46 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:29 +msgid "Left mouse button" +msgstr "Lewy przycisk myszy" -#: src/slic3r/GUI/MainFrame.cpp:671 +#: src/slic3r/GUI/GLCanvas3D.cpp:233 +msgid "Left mouse button:" +msgstr "Lewy przycisk myszy:" + +#: src/slic3r/GUI/MainFrame.cpp:968 src/slic3r/GUI/MainFrame.cpp:1288 msgid "Left View" msgstr "Widok lewy" -#: src/slic3r/GUI/GUI_Preview.cpp:257 +#: src/slic3r/GUI/GUI_Preview.cpp:339 msgid "Legend" msgstr "Legenda" -#: src/libslic3r/PrintConfig.cpp:1543 src/libslic3r/PrintConfig.cpp:1551 +#: src/slic3r/GUI/GUI_Preview.cpp:1480 +msgid "Legend/Estimated printing time" +msgstr "Legenda/szacowany czas drukowania" + +#: src/libslic3r/PrintConfig.cpp:1651 src/libslic3r/PrintConfig.cpp:1659 msgid "Length" msgstr "Długość" -#: src/libslic3r/PrintConfig.cpp:328 +#: src/libslic3r/PrintConfig.cpp:362 msgid "Length of the cooling tube to limit space for cooling moves inside it." msgstr "Długość rurki chłodzącej ograniczająca ruchy chłodzące do jej zakresu." #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:129 +#: src/slic3r/GUI/AboutDialog.cpp:141 msgid "License agreements of all following programs (libraries) are part of application license agreement" msgstr "Umowy licencyjne dla wszystkich części programu (bibliotek) są częścią umowy licencyjnej programu" -#: src/libslic3r/PrintConfig.cpp:1561 +#: src/libslic3r/PrintConfig.cpp:1669 msgid "Lift Z" msgstr "Z-hop" -#: src/libslic3r/PrintConfig.cpp:848 +#: src/libslic3r/PrintConfig.cpp:886 msgid "Line" msgstr "Linia" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1427 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1558 msgid "Load" msgstr "Załaduj" -#: src/slic3r/GUI/MainFrame.cpp:460 +#: src/slic3r/GUI/MainFrame.cpp:1042 msgid "Load a model" msgstr "Wczytaj model" -#: src/libslic3r/PrintConfig.cpp:3505 +#: src/slic3r/GUI/MainFrame.cpp:1046 +msgid "Load an model saved with imperial units" +msgstr "Wczytaj model zapisany w jednostkach imperialnych" + +#: src/slic3r/GUI/MainFrame.cpp:1058 +msgid "Load an SL1 archive" +msgstr "Wczytaj archiwum SL1" + +#: src/libslic3r/PrintConfig.cpp:3710 msgid "Load and store settings at the given directory. This is useful for maintaining different profiles or including configurations from a network storage." msgstr "Załaduj i przechowuj ustawienia w podanej lokalizacji. Jest to przydatne przy używaniu wielu profili lub konfiguracji z lokalizacji sieciowej." -#: src/libslic3r/PrintConfig.cpp:3489 +#: src/libslic3r/PrintConfig.cpp:3688 msgid "Load config file" msgstr "Wczytaj plik konfiguracyjny" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:120 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:113 msgid "Load Config from ini/amf/3mf/gcode and merge" msgstr "Wczytaj Konfigurację z ini/amf/3mf/gcode i złącz" -#: src/slic3r/GUI/MainFrame.cpp:467 +#: src/slic3r/GUI/MainFrame.cpp:1058 msgid "Load configuration from project file" msgstr "Wczytaj konfigurację z pliku projektu" -#: src/libslic3r/PrintConfig.cpp:3490 +#: src/libslic3r/PrintConfig.cpp:3689 msgid "Load configuration from the specified file. It can be used more than once to load options from multiple files." msgstr "Wczytaj konfigurację z określonego pliku. Może być użyte więcej niż raz, aby wczytać opcje z wielu plików." -#: src/slic3r/GUI/MainFrame.cpp:464 +#: src/slic3r/GUI/MainFrame.cpp:1055 msgid "Load exported configuration file" msgstr "Wczytaj wyeksportowany plik konfiguracyjny" -#: src/slic3r/GUI/Plater.cpp:1395 -msgid "Load File" -msgstr "Wczytaj Plik" - -#: src/slic3r/GUI/Plater.cpp:1399 -msgid "Load Files" -msgstr "Wczytaj Pliki" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1879 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2038 msgid "Load Part" msgstr "Wczytaj Element" -#: src/slic3r/GUI/MainFrame.cpp:471 +#: src/slic3r/GUI/MainFrame.cpp:1062 msgid "Load presets from a bundle" msgstr "Wczytaj zestaw ustawień" -#: src/slic3r/GUI/Plater.cpp:4575 +#: src/slic3r/GUI/Plater.cpp:4627 msgid "Load Project" msgstr "Wczytaj Projekt" -#: src/slic3r/GUI/BedShapeDialog.cpp:102 +#: src/slic3r/GUI/BedShapeDialog.cpp:243 msgid "Load shape from STL..." msgstr "Wczytaj kształt z STL..." -#: src/slic3r/GUI/BedShapeDialog.cpp:182 src/slic3r/GUI/BedShapeDialog.cpp:261 +#: src/slic3r/GUI/BedShapeDialog.cpp:325 src/slic3r/GUI/BedShapeDialog.cpp:405 msgid "Load..." msgstr "Otwórz..." @@ -4071,19 +4696,27 @@ msgstr "Otwórz..." msgid "loaded" msgstr "załadowano" -#: src/slic3r/GUI/Plater.cpp:2426 +#: src/slic3r/GUI/Plater.cpp:2388 msgid "Loaded" msgstr "Wczytano" -#: src/slic3r/GUI/Plater.cpp:2273 +#: src/slic3r/GUI/Plater.cpp:2216 msgid "Loading" msgstr "Ładowanie" -#: src/slic3r/GUI/GUI_App.cpp:474 +#: src/slic3r/GUI/GUI_App.cpp:797 +msgid "Loading configuration" +msgstr "Wczytywanie konfiguracji" + +#: src/slic3r/GUI/Plater.cpp:2226 +msgid "Loading file" +msgstr "Wczytywanie pliku" + +#: src/slic3r/GUI/GUI_App.cpp:1125 msgid "Loading of a mode view" msgstr "Ładowanie trybu wyświetlania" -#: src/slic3r/GUI/GUI_App.cpp:466 +#: src/slic3r/GUI/GUI_App.cpp:1120 msgid "Loading of current presets" msgstr "Wczytywanie aktualnych zestawów ustawień" @@ -4092,101 +4725,117 @@ msgstr "Wczytywanie aktualnych zestawów ustawień" msgid "Loading repaired model" msgstr "Ładowanie naprawionego modelu" -#: src/libslic3r/PrintConfig.cpp:607 +#: src/libslic3r/PrintConfig.cpp:643 msgid "Loading speed" msgstr "Prędkość ładowania" -#: src/libslic3r/PrintConfig.cpp:615 +#: src/libslic3r/PrintConfig.cpp:651 msgid "Loading speed at the start" msgstr "Początkowa prędkość ładowania" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:63 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:106 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:69 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:112 msgid "Local coordinates" msgstr "Lokalny układ współrzędnych" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:48 msgid "Lock supports under new islands" msgstr "Zablokuj podpory pod nowymi wyspami" -#: src/slic3r/GUI/Tab.cpp:3252 +#: src/slic3r/GUI/Tab.cpp:3689 msgid "LOCKED LOCK" msgstr "ZAMKNIĘTA KŁÓDKA" -#: src/slic3r/GUI/Tab.cpp:3280 +#: src/slic3r/GUI/Tab.cpp:3717 msgid "LOCKED LOCK icon indicates that the settings are the same as the system (or default) values for the current option group" msgstr "ZAMKNIĘTA KŁÓDKA oznacza, że ustawienia są takie same jak wartości systemowe (lub domyślne) w obecnej grupie ustawień" -#: src/slic3r/GUI/Tab.cpp:3296 +#: src/slic3r/GUI/Tab.cpp:3733 msgid "LOCKED LOCK icon indicates that the value is the same as the system (or default) value." msgstr "ZAMKNIĘTA KŁÓDKA oznacza, że wartości są takie same jak systemowe (lub domyślne)." -#: src/libslic3r/PrintConfig.cpp:3508 +#: src/libslic3r/PrintConfig.cpp:3713 msgid "Logging level" msgstr "Poziom logowania" -#: src/libslic3r/PrintConfig.cpp:1695 +#: src/libslic3r/PrintConfig.cpp:1810 msgid "Loops (minimum)" msgstr "Pętle (minimum)" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:206 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:208 msgid "Lower Layer" msgstr "Dolna Warstwa" -#: src/slic3r/GUI/Tab.cpp:2188 src/slic3r/GUI/Tab.cpp:2273 -#: src/libslic3r/PrintConfig.cpp:1129 src/libslic3r/PrintConfig.cpp:1146 -#: src/libslic3r/PrintConfig.cpp:1163 src/libslic3r/PrintConfig.cpp:1179 -#: src/libslic3r/PrintConfig.cpp:1189 src/libslic3r/PrintConfig.cpp:1199 -#: src/libslic3r/PrintConfig.cpp:1209 +#: src/slic3r/GUI/Tab.cpp:2346 src/slic3r/GUI/Tab.cpp:2442 +#: src/libslic3r/PrintConfig.cpp:1202 src/libslic3r/PrintConfig.cpp:1237 +#: src/libslic3r/PrintConfig.cpp:1254 src/libslic3r/PrintConfig.cpp:1271 +#: src/libslic3r/PrintConfig.cpp:1287 src/libslic3r/PrintConfig.cpp:1297 +#: src/libslic3r/PrintConfig.cpp:1307 src/libslic3r/PrintConfig.cpp:1317 msgid "Machine limits" msgstr "Limity maszynowe" -#: src/slic3r/GUI/Plater.cpp:166 +#: src/slic3r/GUI/Tab.cpp:3667 +msgid "Machine limits are not set, therefore the print time estimate may not be accurate." +msgstr "Limity maszynowe nie zostały ustawione, dlatego szacowany czas druku może odbiegać od rzeczywistości." + +#: src/slic3r/GUI/Tab.cpp:3660 +msgid "Machine limits will be emitted to G-code and used to estimate print time." +msgstr "Limity maszynowe zostaną przekazane do G-code i użyte do obliczenia czasu drukowania." + +#: src/slic3r/GUI/Tab.cpp:3663 +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 "Limity maszynowe NIE będą przekazywane do G-code, jednak zostaną użyte do obliczenia czasu drukowania, który może okazać się niedokładny, ponieważ drukarka może zastosować inne." + +#: src/slic3r/GUI/Plater.cpp:172 msgid "Manifold" msgstr "Model zamknięty" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:57 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:56 msgid "Manual editing" msgstr "Edycja ręczna" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:180 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:214 msgid "Masked SLA file exported to %1%" msgstr "Maskowany plik SLA wyeksportowany do %1%" -#: src/slic3r/GUI/MainFrame.cpp:752 +#: src/slic3r/GUI/MainFrame.cpp:1451 msgid "Mate&rial Settings Tab" -msgstr "Ustawienia Mate&riału" +msgstr "Ustawienia mate&riału" -#: src/slic3r/GUI/Tab.cpp:3478 src/slic3r/GUI/Tab.cpp:3480 +#: src/slic3r/GUI/Tab.cpp:3894 src/slic3r/GUI/Tab.cpp:3896 msgid "Material" msgstr "Materiał" -#: src/slic3r/GUI/Tab.hpp:416 +#: src/slic3r/GUI/Tab.hpp:486 msgid "Material Settings" -msgstr "Ustawienia Materiału" +msgstr "Ustawienia materiału" -#: src/slic3r/GUI/Plater.cpp:163 +#: src/slic3r/GUI/GLCanvas3D.cpp:4304 src/slic3r/GUI/GLCanvas3D.cpp:4940 +msgid "Material Settings Tab" +msgstr "Ustawienia materiału" + +#: src/slic3r/GUI/Plater.cpp:169 msgid "Materials" msgstr "Materiały" -#: src/libslic3r/PrintConfig.cpp:1217 src/libslic3r/PrintConfig.cpp:1226 +#: src/libslic3r/PrintConfig.cpp:1325 src/libslic3r/PrintConfig.cpp:1334 msgid "Max" msgstr "Max" -#: src/libslic3r/PrintConfig.cpp:2734 +#: src/libslic3r/PrintConfig.cpp:2898 msgid "Max bridge length" msgstr "Maksymalna długość mostu" -#: src/libslic3r/PrintConfig.cpp:2658 +#: src/libslic3r/PrintConfig.cpp:2812 msgid "Max bridges on a pillar" msgstr "Maks. liczba mostków na słupku" -#: src/libslic3r/PrintConfig.cpp:2822 +#: src/libslic3r/PrintConfig.cpp:2986 msgid "Max merge distance" msgstr "Maksymalny dystans łączenia" -#: src/libslic3r/PrintConfig.cpp:2743 +#: src/libslic3r/PrintConfig.cpp:2907 msgid "Max pillar linking distance" msgstr "Maksymalny dystans łączenia słupków" @@ -4194,7 +4843,7 @@ msgstr "Maksymalny dystans łączenia słupków" msgid "Max print height" msgstr "Maksymalna wysokość wydruku" -#: src/libslic3r/PrintConfig.cpp:1237 +#: src/libslic3r/PrintConfig.cpp:1345 msgid "Max print speed" msgstr "Maksymalna prędkość druku" @@ -4202,171 +4851,189 @@ msgstr "Maksymalna prędkość druku" msgid "max PrusaSlicer version" msgstr "max wersja PrusaSlicer" -#: src/libslic3r/PrintConfig.cpp:1268 +#: src/libslic3r/PrintConfig.cpp:1376 msgid "Max volumetric slope negative" msgstr "Maksymalny negatywny kąt zwisu" -#: src/libslic3r/PrintConfig.cpp:1257 +#: src/libslic3r/PrintConfig.cpp:1365 msgid "Max volumetric slope positive" -msgstr "Maksymalny objętościowo kąt pozytywny" +msgstr "Pozytywna krzywa natężenia przepływu" -#: src/libslic3r/PrintConfig.cpp:597 src/libslic3r/PrintConfig.cpp:1247 +#: src/libslic3r/PrintConfig.cpp:633 src/libslic3r/PrintConfig.cpp:1355 msgid "Max volumetric speed" msgstr "Maksymalny przepływ" -#: src/libslic3r/PrintConfig.cpp:2268 +#: src/libslic3r/PrintConfig.cpp:2411 msgid "Maximal bridging distance" msgstr "Maksymalna odległość drukowania mostów" -#: src/libslic3r/PrintConfig.cpp:2269 +#: src/libslic3r/PrintConfig.cpp:2412 msgid "Maximal distance between supports on sparse infill sections." msgstr "Minimalny odstęp pomiędzy podporami w sekcjach rzadkiego wypełnienia." -#: src/libslic3r/PrintConfig.cpp:1145 +#: src/libslic3r/PrintConfig.cpp:1253 msgid "Maximum acceleration E" msgstr "Maksymalne przyspieszenie E" -#: src/libslic3r/PrintConfig.cpp:1151 +#: src/libslic3r/PrintConfig.cpp:1259 msgid "Maximum acceleration of the E axis" msgstr "Maksymalne przyspieszenie osi E (ekstrudera)" -#: src/libslic3r/PrintConfig.cpp:1148 +#: src/libslic3r/PrintConfig.cpp:1256 msgid "Maximum acceleration of the X axis" msgstr "Maksymalne przyspieszenie osi X" -#: src/libslic3r/PrintConfig.cpp:1149 +#: src/libslic3r/PrintConfig.cpp:1257 msgid "Maximum acceleration of the Y axis" msgstr "Maksymalne przyspieszenie osi Y" -#: src/libslic3r/PrintConfig.cpp:1150 +#: src/libslic3r/PrintConfig.cpp:1258 msgid "Maximum acceleration of the Z axis" msgstr "Maksymalne przyspieszenie osi Z" -#: src/libslic3r/PrintConfig.cpp:1198 +#: src/libslic3r/PrintConfig.cpp:1306 msgid "Maximum acceleration when extruding" msgstr "Maksymalne przyspieszenie podczas ekstruzji" -#: src/libslic3r/PrintConfig.cpp:1200 +#: src/libslic3r/PrintConfig.cpp:1308 msgid "Maximum acceleration when extruding (M204 S)" msgstr "Maksymalne przyspieszenie podczas ekstrudowania (M204 S)" -#: src/libslic3r/PrintConfig.cpp:1208 +#: src/libslic3r/PrintConfig.cpp:1316 msgid "Maximum acceleration when retracting" msgstr "Maksymalne przyspieszenie podczas retrakcji" -#: src/libslic3r/PrintConfig.cpp:1210 +#: src/libslic3r/PrintConfig.cpp:1318 msgid "Maximum acceleration when retracting (M204 T)" msgstr "Maksymalne przyspieszenie podczas retrakcji (M204 T)" -#: src/libslic3r/PrintConfig.cpp:1142 +#: src/libslic3r/PrintConfig.cpp:1250 msgid "Maximum acceleration X" msgstr "Maksymalne przyspieszenie X" -#: src/libslic3r/PrintConfig.cpp:1143 +#: src/libslic3r/PrintConfig.cpp:1251 msgid "Maximum acceleration Y" msgstr "Maksymalne przyspieszenie Y" -#: src/libslic3r/PrintConfig.cpp:1144 +#: src/libslic3r/PrintConfig.cpp:1252 msgid "Maximum acceleration Z" msgstr "Maksymalne przyspieszenie Z" -#: src/slic3r/GUI/Tab.cpp:2222 +#: src/slic3r/GUI/Tab.cpp:2391 msgid "Maximum accelerations" msgstr "Maksymalne przyspieszenia" -#: src/libslic3r/PrintConfig.cpp:2533 src/libslic3r/PrintConfig.cpp:2534 +#: src/libslic3r/PrintConfig.cpp:2676 src/libslic3r/PrintConfig.cpp:2677 msgid "Maximum exposure time" msgstr "Maksymalny czas naświetlania" -#: src/libslic3r/PrintConfig.cpp:1128 +#: src/libslic3r/PrintConfig.cpp:1236 msgid "Maximum feedrate E" msgstr "Maksymalny posuw E" -#: src/libslic3r/PrintConfig.cpp:1134 +#: src/libslic3r/PrintConfig.cpp:1242 msgid "Maximum feedrate of the E axis" msgstr "Maksymalny posuw (prędkość ruchu) osi E (ekstrudera)" -#: src/libslic3r/PrintConfig.cpp:1131 +#: src/libslic3r/PrintConfig.cpp:1239 msgid "Maximum feedrate of the X axis" msgstr "Maksymalny posuw (prędkość ruchu) osi X" -#: src/libslic3r/PrintConfig.cpp:1132 +#: src/libslic3r/PrintConfig.cpp:1240 msgid "Maximum feedrate of the Y axis" msgstr "Maksymalny posuw (prędkość ruchu) osi Y" -#: src/libslic3r/PrintConfig.cpp:1133 +#: src/libslic3r/PrintConfig.cpp:1241 msgid "Maximum feedrate of the Z axis" msgstr "Maksymalny posuw (prędkość ruchu) osi Z" -#: src/libslic3r/PrintConfig.cpp:1125 +#: src/libslic3r/PrintConfig.cpp:1233 msgid "Maximum feedrate X" msgstr "Maksymalny posuw osi X" -#: src/libslic3r/PrintConfig.cpp:1126 +#: src/libslic3r/PrintConfig.cpp:1234 msgid "Maximum feedrate Y" msgstr "Maksymalny posuw Y" -#: src/libslic3r/PrintConfig.cpp:1127 +#: src/libslic3r/PrintConfig.cpp:1235 msgid "Maximum feedrate Z" msgstr "Maksymalny posuw Z" -#: src/slic3r/GUI/Tab.cpp:2217 +#: src/slic3r/GUI/Tab.cpp:2386 msgid "Maximum feedrates" msgstr "Maksymalne prędkości posuwu" -#: src/libslic3r/PrintConfig.cpp:2556 src/libslic3r/PrintConfig.cpp:2557 +#: src/libslic3r/PrintConfig.cpp:2699 src/libslic3r/PrintConfig.cpp:2700 msgid "Maximum initial exposure time" msgstr "Maksymalny początkowy czas naświetlania" -#: src/libslic3r/PrintConfig.cpp:1162 +#: src/libslic3r/PrintConfig.cpp:1270 msgid "Maximum jerk E" msgstr "Maksymalny jerk E" -#: src/libslic3r/PrintConfig.cpp:1168 +#: src/libslic3r/PrintConfig.cpp:1276 msgid "Maximum jerk of the E axis" msgstr "Maksymalny jerk dla osi E (ekstrudera)" -#: src/libslic3r/PrintConfig.cpp:1165 +#: src/libslic3r/PrintConfig.cpp:1273 msgid "Maximum jerk of the X axis" msgstr "Maksymalny jerk osi X" -#: src/libslic3r/PrintConfig.cpp:1166 +#: src/libslic3r/PrintConfig.cpp:1274 msgid "Maximum jerk of the Y axis" msgstr "Maksymalny jerk osi Y" -#: src/libslic3r/PrintConfig.cpp:1167 +#: src/libslic3r/PrintConfig.cpp:1275 msgid "Maximum jerk of the Z axis" msgstr "Maksymalny jerk dla osi Z" -#: src/libslic3r/PrintConfig.cpp:1159 +#: src/libslic3r/PrintConfig.cpp:1267 msgid "Maximum jerk X" msgstr "Maksymalny jerk X" -#: src/libslic3r/PrintConfig.cpp:1160 +#: src/libslic3r/PrintConfig.cpp:1268 msgid "Maximum jerk Y" msgstr "Maksymalny jerk Y" -#: src/libslic3r/PrintConfig.cpp:1161 +#: src/libslic3r/PrintConfig.cpp:1269 msgid "Maximum jerk Z" msgstr "Maksymalny jerk Z" -#: src/libslic3r/PrintConfig.cpp:2660 +#: src/libslic3r/PrintConfig.cpp:2814 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 "Maksymalna liczba mostków, która zostanie umieszczona na słupku podpory. Mostki wspierają łączniki podpór i łączą słupki podpór." -#: src/libslic3r/PrintConfig.cpp:598 +#: src/libslic3r/PrintConfig.cpp:634 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 "Maksymalna prędkość objętościowa dla tego filamentu. Ogranicza maksymalną prędkość objętościową do minimum objętościowej prędkości druku i filamentu. Ustaw zero aby usunąć ograniczenie." +msgstr "Maksymalne objętościowe natężenie przepływu dla tego filamentu. Ogranicza maksymalne natężenie przepływu do minimum objętościowej prędkości druku i filamentu. Ustaw zero aby usunąć ograniczenie." -#: src/libslic3r/PrintConfig.cpp:3442 +#: 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:3641 msgid "Merge" msgstr "Łączenie" -#: src/libslic3r/PrintConfig.cpp:2683 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2660 +msgid "Merge all parts to the one single object" +msgstr "Scal wszystkie części w jeden model" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1868 +msgid "Merge objects to the one multipart object" +msgstr "Scal modele w jeden model wieloczęściowy" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1876 +msgid "Merge objects to the one single object" +msgstr "Scal modele w jeden model pojedynczy" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2576 +msgid "Merged" +msgstr "Scalono" + +#: src/libslic3r/PrintConfig.cpp:2847 msgid "Merging bridges or pillars into another pillars can increase the radius. Zero means no increase, one means full increase." msgstr "Łączenie mostów lub słupków podpór z innymi może zwiększyć ich promień. 0 oznacza brak zmiany, 1 oznacza zmianę w całości." -#: src/libslic3r/SLAPrintSteps.cpp:64 +#: src/libslic3r/SLAPrintSteps.cpp:65 msgid "Merging slices and calculating statistics" msgstr "Łączenie cięć i obliczanie statystyk" @@ -4374,15 +5041,15 @@ msgstr "Łączenie cięć i obliczanie statystyk" msgid "Mesh repair failed." msgstr "Niepowodzenie naprawy siatki." -#: src/slic3r/GUI/DoubleSlider.cpp:1635 +#: src/slic3r/GUI/DoubleSlider.cpp:1831 msgid "Message for pause print on current layer (%1% mm)." msgstr "Komenda pauzująca wydruk na danej warstwie (%1% mm)." -#: src/libslic3r/PrintConfig.cpp:1280 src/libslic3r/PrintConfig.cpp:1289 +#: src/libslic3r/PrintConfig.cpp:1388 src/libslic3r/PrintConfig.cpp:1397 msgid "Min" msgstr "Min" -#: src/libslic3r/PrintConfig.cpp:1298 +#: src/libslic3r/PrintConfig.cpp:1406 msgid "Min print speed" msgstr "Minimalna prędkość druku" @@ -4390,232 +5057,237 @@ msgstr "Minimalna prędkość druku" msgid "min PrusaSlicer version" msgstr "min wersja PrusaSlicer" -#: src/libslic3r/PrintConfig.cpp:2772 +#: src/libslic3r/PrintConfig.cpp:2936 msgid "Minimal distance of the support points" msgstr "Minimalne rozmieszczenie punktów podpór" -#: src/libslic3r/PrintConfig.cpp:1306 +#: src/libslic3r/PrintConfig.cpp:1414 msgid "Minimal filament extrusion length" msgstr "Minimalna długość ekstruzji" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:54 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:53 msgid "Minimal points distance" msgstr "Minimalny dystans pomiędzy punktami" -#: src/libslic3r/PrintConfig.cpp:667 +#: src/libslic3r/PrintConfig.cpp:703 msgid "Minimal purge on wipe tower" msgstr "Minimalna objętość czyszczenia" -#: src/libslic3r/PrintConfig.cpp:187 +#: src/libslic3r/PrintConfig.cpp:221 msgid "Minimum bottom shell thickness" msgstr "Minimalna grubość dolnej powłoki" -#: src/slic3r/GUI/PresetHints.cpp:339 +#: src/slic3r/GUI/PresetHints.cpp:337 msgid "Minimum bottom shell thickness is %1% mm." msgstr "Minimalna grubość dolnej powłoki to %1% mm." -#: src/libslic3r/PrintConfig.cpp:1512 +#: src/libslic3r/PrintConfig.cpp:1620 msgid "Minimum detail resolution, used to simplify the input file for speeding up the slicing job and reducing memory usage. High-resolution models often carry more detail than printers can render. Set to zero to disable any simplification and use full resolution from input." -msgstr "Minimalna rozdzielczość, używana do uproszczenia modelu wejściowego, co prowadzi do przyspieszenia procesu cięcia. Modele w wysokiej rozdzielczości mogą zawierać więcej szczegółów niż drukarka jest w stanie przetworzyć. Ustaw zero aby wyłączyć upraszczanie i użyć pełnej rozdzielczości pliku wejściowego." +msgstr "Minimalna rozdzielczość, używana do uproszczenia modelu wejściowego, co prowadzi do przyspieszenia procesu cięcia. Modele w wysokiej rozdzielczości mogą zawierać więcej szczegółów niż drukarka jest w stanie przetworzyć. Ustaw zero, aby wyłączyć upraszczanie i użyć pełnej rozdzielczości pliku wejściowego." -#: src/libslic3r/PrintConfig.cpp:2525 src/libslic3r/PrintConfig.cpp:2526 +#: src/libslic3r/PrintConfig.cpp:2668 src/libslic3r/PrintConfig.cpp:2669 msgid "Minimum exposure time" msgstr "Minimalny czas naświetlania" -#: src/libslic3r/PrintConfig.cpp:1178 +#: src/libslic3r/PrintConfig.cpp:1286 msgid "Minimum feedrate when extruding" msgstr "Minimalna prędkość posuwu z ekstruzją" -#: src/libslic3r/PrintConfig.cpp:1180 +#: src/libslic3r/PrintConfig.cpp:1288 msgid "Minimum feedrate when extruding (M205 S)" msgstr "Minimalna prędkość posuwu z ekstruzją (M205 S)" -#: src/slic3r/GUI/Tab.cpp:2234 +#: src/slic3r/GUI/Tab.cpp:2403 msgid "Minimum feedrates" msgstr "Minimalna prędkość posuwu" -#: src/libslic3r/PrintConfig.cpp:2548 src/libslic3r/PrintConfig.cpp:2549 +#: src/libslic3r/PrintConfig.cpp:2691 src/libslic3r/PrintConfig.cpp:2692 msgid "Minimum initial exposure time" msgstr "Minimalny początkowy czas naświetlania" -#: src/slic3r/GUI/Tab.cpp:1069 +#: src/slic3r/GUI/Tab.cpp:1391 msgid "Minimum shell thickness" msgstr "Minimalna grubość powłoki" -#: src/libslic3r/PrintConfig.cpp:1787 src/libslic3r/PrintConfig.cpp:1788 +#: src/libslic3r/PrintConfig.cpp:1902 src/libslic3r/PrintConfig.cpp:1903 msgid "Minimum thickness of a top / bottom shell" msgstr "Minimalna grubość górnej/dolnej powłoki" -#: src/libslic3r/PrintConfig.cpp:2146 +#: src/libslic3r/PrintConfig.cpp:2289 msgid "Minimum top shell thickness" msgstr "Minimalna grubość górnej powłoki" -#: src/slic3r/GUI/PresetHints.cpp:320 +#: src/slic3r/GUI/PresetHints.cpp:318 msgid "Minimum top shell thickness is %1% mm." msgstr "Minimalna grubość górnej powłoki to %1% mm." -#: src/libslic3r/PrintConfig.cpp:1522 +#: src/libslic3r/PrintConfig.cpp:1630 msgid "Minimum travel after retraction" msgstr "Minimalny ruch jałowy po retrakcji" -#: src/libslic3r/PrintConfig.cpp:1188 +#: src/libslic3r/PrintConfig.cpp:1296 msgid "Minimum travel feedrate" msgstr "Minimalna prędkość posuwu ruchu jałowego" -#: src/libslic3r/PrintConfig.cpp:1190 +#: src/libslic3r/PrintConfig.cpp:1298 msgid "Minimum travel feedrate (M205 T)" msgstr "Minimalna prędkość posuwu ruchu jałowego (M205 T)" -#: src/libslic3r/PrintConfig.cpp:2917 +#: src/libslic3r/PrintConfig.cpp:3081 msgid "Minimum wall thickness of a hollowed model." msgstr "Minimalna grubość ścianki drążonego modelu." -#: src/libslic3r/PrintConfig.cpp:2449 +#: src/libslic3r/PrintConfig.cpp:2592 msgid "Minimum width of features to maintain when doing elephant foot compensation." msgstr "Minimalna szerokość detali do zachowania podczas kompensacji stopy słonia." -#: src/slic3r/GUI/Plater.cpp:4002 +#: src/slic3r/GUI/Plater.cpp:3922 msgid "Mirror" msgstr "Lustrzane" -#: src/libslic3r/PrintConfig.cpp:2379 +#: src/libslic3r/PrintConfig.cpp:2522 msgid "Mirror horizontally" msgstr "Odbij w poziomie" -#: src/slic3r/GUI/GLCanvas3D.cpp:2053 +#: src/slic3r/GUI/GLCanvas3D.cpp:2226 msgid "Mirror Object" msgstr "Odbicie Lustrzane" -#: src/slic3r/GUI/Plater.cpp:4002 +#: src/slic3r/GUI/Plater.cpp:3922 msgid "Mirror the selected object" msgstr "Odbicie lustrzane wybranego modelu" -#: src/slic3r/GUI/Plater.cpp:3995 +#: src/slic3r/GUI/Plater.cpp:3915 msgid "Mirror the selected object along the X axis" msgstr "Odbicie lustrzane wybranego modelu w osi X" -#: src/slic3r/GUI/Plater.cpp:3997 +#: src/slic3r/GUI/Plater.cpp:3917 msgid "Mirror the selected object along the Y axis" msgstr "Odbicie lustrzane wybranego modelu w osi Y" -#: src/slic3r/GUI/Plater.cpp:3999 +#: src/slic3r/GUI/Plater.cpp:3919 msgid "Mirror the selected object along the Z axis" msgstr "Odbicie lustrzane wybranego modelu w osi Z" -#: src/libslic3r/PrintConfig.cpp:2386 +#: src/libslic3r/PrintConfig.cpp:2529 msgid "Mirror vertically" msgstr "Odbij w poziomie" -#: src/slic3r/Utils/AstroBox.cpp:68 src/slic3r/Utils/OctoPrint.cpp:68 +#: src/slic3r/Utils/AstroBox.cpp:69 src/slic3r/Utils/OctoPrint.cpp:68 #, c-format msgid "Mismatched type of print host: %s" msgstr "Niepasujący typ serwera wydruku: %s" -#: src/libslic3r/ExtrusionEntity.cpp:323 +#: src/libslic3r/ExtrusionEntity.cpp:328 src/libslic3r/ExtrusionEntity.cpp:364 msgid "Mixed" msgstr "Mieszane" -#: src/libslic3r/PrintConfig.cpp:2491 +#: src/libslic3r/PrintConfig.cpp:2634 msgid "ml" msgstr "ml" -#: src/slic3r/GUI/BedShapeDialog.cpp:92 src/slic3r/GUI/ConfigWizard.cpp:218 -#: src/slic3r/GUI/ConfigWizard.cpp:970 src/slic3r/GUI/ConfigWizard.cpp:984 +#: src/slic3r/GUI/BedShapeDialog.cpp:129 src/slic3r/GUI/ConfigWizard.cpp:236 +#: src/slic3r/GUI/ConfigWizard.cpp:1336 src/slic3r/GUI/ConfigWizard.cpp:1350 #: src/slic3r/GUI/ExtruderSequenceDialog.cpp:87 -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:135 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:333 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:94 +#: src/slic3r/GUI/GCodeViewer.cpp:2183 src/slic3r/GUI/GCodeViewer.cpp:2189 +#: src/slic3r/GUI/GCodeViewer.cpp:2197 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:91 -#: src/libslic3r/PrintConfig.cpp:122 src/libslic3r/PrintConfig.cpp:188 -#: src/libslic3r/PrintConfig.cpp:246 src/libslic3r/PrintConfig.cpp:321 -#: src/libslic3r/PrintConfig.cpp:329 src/libslic3r/PrintConfig.cpp:379 -#: src/libslic3r/PrintConfig.cpp:505 src/libslic3r/PrintConfig.cpp:516 -#: src/libslic3r/PrintConfig.cpp:534 src/libslic3r/PrintConfig.cpp:712 -#: src/libslic3r/PrintConfig.cpp:1231 src/libslic3r/PrintConfig.cpp:1292 -#: src/libslic3r/PrintConfig.cpp:1310 src/libslic3r/PrintConfig.cpp:1328 -#: src/libslic3r/PrintConfig.cpp:1384 src/libslic3r/PrintConfig.cpp:1394 -#: src/libslic3r/PrintConfig.cpp:1516 src/libslic3r/PrintConfig.cpp:1524 -#: src/libslic3r/PrintConfig.cpp:1565 src/libslic3r/PrintConfig.cpp:1573 -#: src/libslic3r/PrintConfig.cpp:1583 src/libslic3r/PrintConfig.cpp:1591 -#: src/libslic3r/PrintConfig.cpp:1599 src/libslic3r/PrintConfig.cpp:1682 -#: src/libslic3r/PrintConfig.cpp:1914 src/libslic3r/PrintConfig.cpp:1985 -#: src/libslic3r/PrintConfig.cpp:2019 src/libslic3r/PrintConfig.cpp:2147 -#: src/libslic3r/PrintConfig.cpp:2226 src/libslic3r/PrintConfig.cpp:2233 -#: src/libslic3r/PrintConfig.cpp:2240 src/libslic3r/PrintConfig.cpp:2270 -#: src/libslic3r/PrintConfig.cpp:2280 src/libslic3r/PrintConfig.cpp:2290 -#: src/libslic3r/PrintConfig.cpp:2450 src/libslic3r/PrintConfig.cpp:2484 -#: src/libslic3r/PrintConfig.cpp:2623 src/libslic3r/PrintConfig.cpp:2632 -#: src/libslic3r/PrintConfig.cpp:2641 src/libslic3r/PrintConfig.cpp:2651 -#: src/libslic3r/PrintConfig.cpp:2695 src/libslic3r/PrintConfig.cpp:2705 -#: src/libslic3r/PrintConfig.cpp:2717 src/libslic3r/PrintConfig.cpp:2737 -#: src/libslic3r/PrintConfig.cpp:2747 src/libslic3r/PrintConfig.cpp:2757 -#: src/libslic3r/PrintConfig.cpp:2775 src/libslic3r/PrintConfig.cpp:2790 -#: src/libslic3r/PrintConfig.cpp:2804 src/libslic3r/PrintConfig.cpp:2815 -#: src/libslic3r/PrintConfig.cpp:2828 src/libslic3r/PrintConfig.cpp:2873 -#: src/libslic3r/PrintConfig.cpp:2883 src/libslic3r/PrintConfig.cpp:2892 -#: src/libslic3r/PrintConfig.cpp:2902 src/libslic3r/PrintConfig.cpp:2918 -#: src/libslic3r/PrintConfig.cpp:2942 +#: src/libslic3r/PrintConfig.cpp:82 src/libslic3r/PrintConfig.cpp:93 +#: src/libslic3r/PrintConfig.cpp:124 src/libslic3r/PrintConfig.cpp:222 +#: src/libslic3r/PrintConfig.cpp:280 src/libslic3r/PrintConfig.cpp:355 +#: src/libslic3r/PrintConfig.cpp:363 src/libslic3r/PrintConfig.cpp:413 +#: src/libslic3r/PrintConfig.cpp:541 src/libslic3r/PrintConfig.cpp:552 +#: src/libslic3r/PrintConfig.cpp:570 src/libslic3r/PrintConfig.cpp:748 +#: src/libslic3r/PrintConfig.cpp:1158 src/libslic3r/PrintConfig.cpp:1339 +#: src/libslic3r/PrintConfig.cpp:1400 src/libslic3r/PrintConfig.cpp:1418 +#: src/libslic3r/PrintConfig.cpp:1436 src/libslic3r/PrintConfig.cpp:1492 +#: src/libslic3r/PrintConfig.cpp:1502 src/libslic3r/PrintConfig.cpp:1624 +#: src/libslic3r/PrintConfig.cpp:1632 src/libslic3r/PrintConfig.cpp:1673 +#: src/libslic3r/PrintConfig.cpp:1681 src/libslic3r/PrintConfig.cpp:1691 +#: src/libslic3r/PrintConfig.cpp:1699 src/libslic3r/PrintConfig.cpp:1707 +#: src/libslic3r/PrintConfig.cpp:1790 src/libslic3r/PrintConfig.cpp:2056 +#: src/libslic3r/PrintConfig.cpp:2127 src/libslic3r/PrintConfig.cpp:2161 +#: src/libslic3r/PrintConfig.cpp:2290 src/libslic3r/PrintConfig.cpp:2369 +#: src/libslic3r/PrintConfig.cpp:2376 src/libslic3r/PrintConfig.cpp:2383 +#: src/libslic3r/PrintConfig.cpp:2413 src/libslic3r/PrintConfig.cpp:2423 +#: src/libslic3r/PrintConfig.cpp:2433 src/libslic3r/PrintConfig.cpp:2593 +#: src/libslic3r/PrintConfig.cpp:2627 src/libslic3r/PrintConfig.cpp:2766 +#: src/libslic3r/PrintConfig.cpp:2775 src/libslic3r/PrintConfig.cpp:2784 +#: src/libslic3r/PrintConfig.cpp:2794 src/libslic3r/PrintConfig.cpp:2859 +#: src/libslic3r/PrintConfig.cpp:2869 src/libslic3r/PrintConfig.cpp:2881 +#: src/libslic3r/PrintConfig.cpp:2901 src/libslic3r/PrintConfig.cpp:2911 +#: src/libslic3r/PrintConfig.cpp:2921 src/libslic3r/PrintConfig.cpp:2939 +#: src/libslic3r/PrintConfig.cpp:2954 src/libslic3r/PrintConfig.cpp:2968 +#: src/libslic3r/PrintConfig.cpp:2979 src/libslic3r/PrintConfig.cpp:2992 +#: src/libslic3r/PrintConfig.cpp:3037 src/libslic3r/PrintConfig.cpp:3047 +#: src/libslic3r/PrintConfig.cpp:3056 src/libslic3r/PrintConfig.cpp:3066 +#: src/libslic3r/PrintConfig.cpp:3082 src/libslic3r/PrintConfig.cpp:3106 msgid "mm" msgstr "mm" -#: src/libslic3r/PrintConfig.cpp:1547 src/libslic3r/PrintConfig.cpp:1556 +#: src/libslic3r/PrintConfig.cpp:1655 src/libslic3r/PrintConfig.cpp:1664 msgid "mm (zero to disable)" -msgstr "mm (zero aby wyłączyć)" +msgstr "mm (zero, aby wyłączyć)" -#: src/libslic3r/PrintConfig.cpp:451 src/libslic3r/PrintConfig.cpp:560 -#: src/libslic3r/PrintConfig.cpp:882 src/libslic3r/PrintConfig.cpp:895 -#: src/libslic3r/PrintConfig.cpp:1015 src/libslic3r/PrintConfig.cpp:1041 -#: src/libslic3r/PrintConfig.cpp:1423 src/libslic3r/PrintConfig.cpp:1761 -#: src/libslic3r/PrintConfig.cpp:1883 src/libslic3r/PrintConfig.cpp:1951 -#: src/libslic3r/PrintConfig.cpp:2111 +#: src/libslic3r/PrintConfig.cpp:487 src/libslic3r/PrintConfig.cpp:596 +#: src/libslic3r/PrintConfig.cpp:924 src/libslic3r/PrintConfig.cpp:937 +#: src/libslic3r/PrintConfig.cpp:1059 src/libslic3r/PrintConfig.cpp:1085 +#: src/libslic3r/PrintConfig.cpp:1531 src/libslic3r/PrintConfig.cpp:1876 +#: src/libslic3r/PrintConfig.cpp:2025 src/libslic3r/PrintConfig.cpp:2093 +#: src/libslic3r/PrintConfig.cpp:2254 msgid "mm or %" msgstr "mm lub %" -#: src/libslic3r/PrintConfig.cpp:237 src/libslic3r/PrintConfig.cpp:609 -#: src/libslic3r/PrintConfig.cpp:617 src/libslic3r/PrintConfig.cpp:626 -#: src/libslic3r/PrintConfig.cpp:634 src/libslic3r/PrintConfig.cpp:661 -#: src/libslic3r/PrintConfig.cpp:680 src/libslic3r/PrintConfig.cpp:922 -#: src/libslic3r/PrintConfig.cpp:1050 src/libslic3r/PrintConfig.cpp:1135 -#: src/libslic3r/PrintConfig.cpp:1169 src/libslic3r/PrintConfig.cpp:1181 -#: src/libslic3r/PrintConfig.cpp:1191 src/libslic3r/PrintConfig.cpp:1241 -#: src/libslic3r/PrintConfig.cpp:1300 src/libslic3r/PrintConfig.cpp:1433 -#: src/libslic3r/PrintConfig.cpp:1607 src/libslic3r/PrintConfig.cpp:1616 -#: src/libslic3r/PrintConfig.cpp:2028 src/libslic3r/PrintConfig.cpp:2154 +#: 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 +#: src/libslic3r/PrintConfig.cpp:716 src/libslic3r/PrintConfig.cpp:966 +#: src/libslic3r/PrintConfig.cpp:1094 src/libslic3r/PrintConfig.cpp:1167 +#: src/libslic3r/PrintConfig.cpp:1243 src/libslic3r/PrintConfig.cpp:1277 +#: src/libslic3r/PrintConfig.cpp:1289 src/libslic3r/PrintConfig.cpp:1299 +#: src/libslic3r/PrintConfig.cpp:1349 src/libslic3r/PrintConfig.cpp:1408 +#: src/libslic3r/PrintConfig.cpp:1541 src/libslic3r/PrintConfig.cpp:1715 +#: src/libslic3r/PrintConfig.cpp:1724 src/libslic3r/PrintConfig.cpp:2170 +#: src/libslic3r/PrintConfig.cpp:2297 msgid "mm/s" msgstr "mm/s" -#: src/libslic3r/PrintConfig.cpp:462 src/libslic3r/PrintConfig.cpp:904 -#: src/libslic3r/PrintConfig.cpp:1720 src/libslic3r/PrintConfig.cpp:1772 -#: src/libslic3r/PrintConfig.cpp:1995 src/libslic3r/PrintConfig.cpp:2124 +#: src/libslic3r/PrintConfig.cpp:498 src/libslic3r/PrintConfig.cpp:946 +#: src/libslic3r/PrintConfig.cpp:1835 src/libslic3r/PrintConfig.cpp:1887 +#: src/libslic3r/PrintConfig.cpp:2137 src/libslic3r/PrintConfig.cpp:2267 msgid "mm/s or %" msgstr "mm/s lub %" -#: src/libslic3r/PrintConfig.cpp:196 src/libslic3r/PrintConfig.cpp:339 -#: src/libslic3r/PrintConfig.cpp:862 src/libslic3r/PrintConfig.cpp:984 -#: src/libslic3r/PrintConfig.cpp:1152 src/libslic3r/PrintConfig.cpp:1201 -#: src/libslic3r/PrintConfig.cpp:1211 src/libslic3r/PrintConfig.cpp:1403 +#: src/libslic3r/PrintConfig.cpp:230 src/libslic3r/PrintConfig.cpp:373 +#: src/libslic3r/PrintConfig.cpp:902 src/libslic3r/PrintConfig.cpp:1028 +#: src/libslic3r/PrintConfig.cpp:1260 src/libslic3r/PrintConfig.cpp:1309 +#: src/libslic3r/PrintConfig.cpp:1319 src/libslic3r/PrintConfig.cpp:1511 msgid "mm/s²" msgstr "mm/s²" -#: src/libslic3r/PrintConfig.cpp:1730 +#: src/libslic3r/PrintConfig.cpp:1845 msgid "mm²" msgstr "mm²" -#: src/libslic3r/PrintConfig.cpp:672 +#: src/libslic3r/PrintConfig.cpp:708 msgid "mm³" msgstr "mm³" -#: src/slic3r/GUI/RammingChart.cpp:81 src/libslic3r/PrintConfig.cpp:601 -#: src/libslic3r/PrintConfig.cpp:1250 +#: src/slic3r/GUI/RammingChart.cpp:81 src/libslic3r/PrintConfig.cpp:637 +#: src/libslic3r/PrintConfig.cpp:1358 msgid "mm³/s" msgstr "mm³/s" -#: src/libslic3r/PrintConfig.cpp:1262 src/libslic3r/PrintConfig.cpp:1273 +#: src/libslic3r/PrintConfig.cpp:1370 src/libslic3r/PrintConfig.cpp:1381 msgid "mm³/s²" msgstr "mm³/s²" -#: src/slic3r/GUI/GUI_App.cpp:820 +#: src/slic3r/GUI/GUI_App.cpp:1512 msgid "Mode" msgstr "&Tryb" @@ -4623,7 +5295,7 @@ msgstr "&Tryb" msgid "model" msgstr "model" -#: src/slic3r/GUI/BedShapeDialog.cpp:251 +#: src/slic3r/GUI/BedShapeDialog.cpp:395 msgid "Model" msgstr "Model" @@ -4652,99 +5324,125 @@ msgstr "Ukończono naprawę modelu" msgid "Model repaired successfully" msgstr "Model naprawiono pomyślnie" -#: src/slic3r/GUI/Tab.cpp:979 +#: src/slic3r/GUI/GUI_App.cpp:1506 src/slic3r/GUI/wxExtensions.cpp:675 +msgctxt "Mode" +msgid "Advanced" +msgstr "Zaawansowany" + +#: src/slic3r/GUI/Tab.cpp:1241 msgid "Modifications to the current profile will be saved." msgstr "Modyfikacje zostaną zapisane na obecnym profilu." -#: src/slic3r/GUI/Preset.cpp:247 +#: src/slic3r/GUI/GUI_App.cpp:1425 msgid "modified" msgstr "zmodyfikowano" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3551 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4014 msgid "Modifier" msgstr "Modyfikator" -#: src/slic3r/GUI/Tab.cpp:1161 +#: src/slic3r/GUI/Tab.cpp:1491 msgid "Modifiers" msgstr "Modyfikatory" -#: src/libslic3r/PrintConfig.cpp:2512 +#: src/libslic3r/PrintConfig.cpp:2655 msgid "money/bottle" msgstr "pieniędzy/butelkę" -#: src/libslic3r/PrintConfig.cpp:762 +#: src/libslic3r/PrintConfig.cpp:798 msgid "money/kg" msgstr "pieniędzy/kg" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1372 +#: src/libslic3r/PrintConfig.cpp:461 +msgid "Monotonic" +msgstr "Monotoniczny" + +#: src/slic3r/GUI/NotificationManager.cpp:305 +#: src/slic3r/GUI/NotificationManager.cpp:315 +msgid "More" +msgstr "Więcej" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1219 msgid "Mouse wheel" msgstr "Kółko myszy" -#: src/slic3r/GUI/GLCanvas3D.cpp:261 +#: src/slic3r/GUI/GLCanvas3D.cpp:249 msgid "Mouse wheel:" msgstr "Kółko myszy:" -#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:64 msgid "Move" msgstr "Przesuń" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1372 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1219 msgid "Move clipping plane" msgstr "Przesunięcie płaszczyzny przecinania" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:215 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 msgid "Move current slider thumb Down" msgstr "Przesuń suwak w dół" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:214 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:229 +msgid "Move current slider thumb Left" +msgstr "Przesuń suwak w lewo" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:230 +msgid "Move current slider thumb Right" +msgstr "Przesuń suwak w prawo" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:215 msgid "Move current slider thumb Up" msgstr "Przesuń suwak w górę" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:1059 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:835 msgid "Move drainage hole" msgstr "Przesuń otwór odpływowy" -#: src/slic3r/GUI/GLCanvas3D.cpp:3505 +#: src/slic3r/GUI/GLCanvas3D.cpp:3810 msgid "Move Object" msgstr "Przesuń Model" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1365 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1212 msgid "Move point" msgstr "Przesuń punkt" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:166 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:160 msgid "Move selection 10 mm in negative X direction" msgstr "Przesuń zaznaczenie o -10 mm w osi X" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:159 msgid "Move selection 10 mm in negative Y direction" msgstr "Przesuń zaznaczenie o -10 mm w osi Y" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:167 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:161 msgid "Move selection 10 mm in positive X direction" msgstr "Przesuń zaznaczenie o +10 mm w osi X" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:158 msgid "Move selection 10 mm in positive Y direction" msgstr "Przesuń zaznaczenie o +10 mm w osi Y" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1097 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:955 msgid "Move support point" msgstr "Przenieś plik podpory" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:169 +#: src/slic3r/GUI/GCodeViewer.cpp:2492 +msgid "Movement" +msgstr "Ruch" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:163 msgid "Movement in camera space" msgstr "Ruch w przestrzeni widoku" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:168 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:162 msgid "Movement step set to 1 mm" msgstr "Krok przesunięcia ustawiony na 1 mm" -#: src/libslic3r/PrintConfig.cpp:2201 +#: src/libslic3r/PrintConfig.cpp:2344 msgid "Multi material printers may need to prime or purge extruders on tool changes. Extrude the excess material into the wipe tower." msgstr "Drukarki pracujące z kilkoma filamentami na raz (multi-material) mogą wymagać czyszczenia głowicy przy zmianie filamentu. Nadmiar materiału jest wytłaczany w formie wieży czyszczącej." -#: src/slic3r/GUI/Plater.cpp:2360 src/slic3r/GUI/Plater.cpp:2413 +#: src/slic3r/GUI/Plater.cpp:2322 src/slic3r/GUI/Plater.cpp:2375 msgid "Multi-part object detected" msgstr "Wykryto obiekt wieloczęściowy" @@ -4753,11 +5451,11 @@ msgstr "Wykryto obiekt wieloczęściowy" msgid "Multiple %s devices found. Please only connect one at a time for flashing." msgstr "Wiele urządzeń %s znaleziono. Proszę zostawić tylko jedno podłączone podczas flashowania." -#: src/slic3r/GUI/Tab.cpp:1179 +#: src/slic3r/GUI/Tab.cpp:1509 msgid "Multiple Extruders" msgstr "Kilka ekstruderów" -#: src/slic3r/GUI/Plater.cpp:2410 +#: src/slic3r/GUI/Plater.cpp:2372 msgid "" "Multiple objects were loaded for a multi-material printer.\n" "Instead of considering them as multiple objects, should I consider\n" @@ -4766,36 +5464,41 @@ msgstr "" "Kilka obiektów zostało załadowanych dla drukarki typu multi-material.\n" "Traktować je jako jeden model zawierający kilka części?" -#: src/libslic3r/PrintConfig.cpp:3439 +#: src/libslic3r/PrintConfig.cpp:3638 msgid "Multiply copies by creating a grid." msgstr "Pomnóż ilość kopii przez stworzenie siatki." -#: src/libslic3r/PrintConfig.cpp:3434 +#: src/libslic3r/PrintConfig.cpp:3633 msgid "Multiply copies by this factor." msgstr "Pomnóż ilość kopii przez tę wartość." -#: src/slic3r/GUI/Field.cpp:150 src/slic3r/GUI/OptionsGroup.cpp:580 +#: src/slic3r/GUI/Field.cpp:198 src/slic3r/GUI/OptionsGroup.cpp:715 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:874 msgid "N/A" msgstr "N/D" -#: src/slic3r/GUI/GUI_ObjectList.cpp:270 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:153 +#: src/slic3r/GUI/GUI_ObjectList.cpp:284 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:161 msgid "Name" msgstr "Nazwa" -#: src/libslic3r/PrintConfig.cpp:1488 +#: src/libslic3r/PrintConfig.cpp:114 +msgid "Name of the printer" +msgstr "Nazwa drukarki" + +#: src/libslic3r/PrintConfig.cpp:1596 msgid "Name of the printer variant. For example, the printer variants may be differentiated by a nozzle diameter." msgstr "Nazwa wersji drukarki. Możesz np. tworzyć warianty wg średnicy dyszy." -#: src/libslic3r/PrintConfig.cpp:1482 +#: src/libslic3r/PrintConfig.cpp:1590 msgid "Name of the printer vendor." msgstr "Nazwa dostawcy drukarki." -#: src/libslic3r/PrintConfig.cpp:1058 +#: src/libslic3r/PrintConfig.cpp:1102 msgid "Name of the profile, from which this profile inherits." msgstr "Nazwa profilu, z którego dziedziczy ten profil." -#: src/libslic3r/PrintConfig.cpp:1630 +#: src/libslic3r/PrintConfig.cpp:1738 msgid "Nearest" msgstr "Najbliższy" @@ -4803,14 +5506,30 @@ msgstr "Najbliższy" msgid "Network lookup" msgstr "Podgląd sieci" -#: src/slic3r/GUI/Plater.cpp:2151 +#: src/slic3r/GUI/Preferences.cpp:430 +msgid "New layout, access via settings button in the top menu" +msgstr "Nowy układ z dostępem przez przycisk ustawień w górnym menu" + +#: src/slic3r/GUI/Plater.cpp:2056 msgid "New Project" msgstr "Nowy Projekt" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:112 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:105 msgid "New project, clear plater" msgstr "Nowy projekt, wyczyść stół" +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:609 +msgid "New Value" +msgstr "Nowa wartość" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1178 +msgid "New value" +msgstr "Nowa wartość" + +#: src/slic3r/GUI/NotificationManager.hpp:322 +msgid "New version is available." +msgstr "Dostępna jest nowa wersja." + #: src/slic3r/GUI/UpdateDialogs.cpp:38 #, c-format msgid "New version of %s is available" @@ -4820,23 +5539,23 @@ msgstr "Dostępna jest nowa wersja: %s" msgid "New version:" msgstr "Nowa wersja:" -#: src/slic3r/GUI/GLCanvas3D.cpp:4673 +#: src/slic3r/GUI/GLCanvas3D.cpp:5089 msgid "Next Redo action: %1%" msgstr "Następna akcja do powtórzenia: %1%" -#: src/slic3r/GUI/GLCanvas3D.cpp:4641 +#: src/slic3r/GUI/GLCanvas3D.cpp:5051 msgid "Next Undo action: %1%" msgstr "Następna akcja do cofnięcia: %1%" -#: src/libslic3r/PrintConfig.cpp:960 +#: src/libslic3r/PrintConfig.cpp:1004 msgid "No extrusion" msgstr "Brak ekstruzji" -#: src/libslic3r/SLAPrintSteps.cpp:453 +#: src/libslic3r/SLAPrintSteps.cpp:451 msgid "No pad can be generated for this model with the current configuration" msgstr "Nie ma możliwości wygenerowania podkładki dla tego modelu przy obecnych ustawieniach" -#: src/slic3r/GUI/MainFrame.cpp:784 +#: src/slic3r/GUI/MainFrame.cpp:1485 msgid "No previously sliced file." msgstr "Brak poprzednio pociętych plików." @@ -4844,175 +5563,221 @@ msgstr "Brak poprzednio pociętych plików." msgid "NO RAMMING AT ALL" msgstr "BRAK WYCISKANIA" -#: src/libslic3r/PrintConfig.cpp:1857 +#: src/libslic3r/PrintConfig.cpp:1999 msgid "No sparse layers (EXPERIMENTAL)" msgstr "Brak warstw bez czyszczenia (EKSPERYMENTALNE)" -#: src/libslic3r/PrintConfig.cpp:2774 +#: src/libslic3r/PrintConfig.cpp:2938 msgid "No support points will be placed closer than this threshold." msgstr "Punkty nie zostaną umieszczone bliżej siebie niż ustawiona wartość." -#: src/slic3r/GUI/UpdateDialogs.cpp:303 +#: src/slic3r/GUI/UpdateDialogs.cpp:304 msgid "No updates available" msgstr "Brak dostępnych aktualizacji" -#: src/slic3r/GUI/ConfigWizard.cpp:291 src/slic3r/GUI/ConfigWizard.cpp:574 -#: src/slic3r/GUI/Plater.cpp:499 src/slic3r/GUI/Plater.cpp:639 -#: src/libslic3r/ExtrusionEntity.cpp:309 +#: src/slic3r/GUI/ConfigWizard.cpp:309 src/slic3r/GUI/ConfigWizard.cpp:599 +#: src/slic3r/GUI/Plater.cpp:365 src/slic3r/GUI/Plater.cpp:505 +#: src/libslic3r/ExtrusionEntity.cpp:312 msgid "None" msgstr "Brak" -#: src/slic3r/GUI/Tab.cpp:2203 +#: src/slic3r/GUI/Search.cpp:77 src/slic3r/GUI/Tab.cpp:2372 msgid "Normal" msgstr "Normalny" -#: src/slic3r/GUI/Plater.cpp:1286 +#: src/slic3r/GUI/Plater.cpp:1177 src/slic3r/GUI/Plater.cpp:1224 msgid "normal mode" msgstr "tryb normalny" -#: src/libslic3r/Zipper.cpp:46 +#: src/slic3r/GUI/GCodeViewer.cpp:2552 +msgid "Normal mode" +msgstr "Tryb normalny" + +#: src/libslic3r/miniz_extension.cpp:105 msgid "not a ZIP archive" msgstr "nie jest archiwum ZIP" -#: src/slic3r/GUI/BedShapeDialog.cpp:223 src/slic3r/GUI/BedShapeDialog.cpp:302 +#: src/slic3r/GUI/BedShapeDialog.cpp:366 src/slic3r/GUI/BedShapeDialog.cpp:446 msgid "Not found:" msgstr "Nie znaleziono:" -#: src/slic3r/GUI/DoubleSlider.cpp:1019 +#: src/slic3r/GUI/DoubleSlider.cpp:1144 msgid "Note" msgstr "Uwaga" -#: src/slic3r/Utils/AstroBox.cpp:89 +#: src/slic3r/GUI/Tab.cpp:3408 +msgid "Note, that selected preset will be deleted from this/those printer(s) too." +msgstr "Zwróć uwagę, że wybrany zestaw ustawień zostanie również usunięty z tej drukarki (lub tych drukarek)." + +#: src/slic3r/GUI/Tab.cpp:3416 +msgid "Note, that this/those printer(s) will be deleted after deleting of the selected preset." +msgstr "Zwróć uwagę, że usunięcie wybranego zestawu ustawień spowoduje również usunięcie tej drukarki (lub drukarek)." + +#: src/slic3r/GUI/Tab.cpp:2039 +msgid "" +"Note: All parameters from this group are moved to the Physical Printer settings (see changelog).\n" +"\n" +"A new Physical Printer profile is created by clicking on the \"cog\" icon right of the Printer profiles combo box, by selecting the \"Add physical printer\" item in the Printer combo box. The Physical Printer profile editor opens also when clicking on the \"cog\" icon in the Printer settings tab. The Physical Printer profiles are being stored into PrusaSlicer/physical_printer directory." +msgstr "" +"Uwaga: wszystkie parametry z tej grupy zostały przeniesione do ustawień fizycznej drukarki (szczegóły na liście zmian).\n" +"\n" +"Nowy profil fizycznej drukarki tworzysz klikając ikonkę \"koła zębatego\" na liście rozwijanej z profilami drukarek lub wybierając \"Dodaj fizyczną drukarkę\" na tej samej liście. Edytor profilu fizycznej drukarki pojawi się również po kliknięciu na ikonkę \"koła zębatego\" w zakładce \"Ustawienia drukarki\". Profile fizycznych drukarek są przechowywane w katalogu PrusaSlicer/physical_printer." + +#: src/slic3r/Utils/AstroBox.cpp:92 msgid "Note: AstroBox version at least 1.1.0 is required." msgstr "Uwaga: Wymagany jest AstroBox w wersji co najmniej 1.1.0." -#: src/slic3r/Utils/FlashAir.cpp:73 +#: src/slic3r/Utils/FlashAir.cpp:76 msgid "Note: FlashAir with firmware 2.00.02 or newer and activated upload function is required." msgstr "Uwaga: Wymagana jest karta FlashAir z FW 2.00.02 lub nowszym z włączoną funkcją przesyłania." -#: src/slic3r/Utils/OctoPrint.cpp:89 +#: src/slic3r/Utils/OctoPrint.cpp:91 msgid "Note: OctoPrint version at least 1.1.0 is required." msgstr "Uwaga: wymagany jest OctoPrint w wersji 1.1.0 lub wyższej." -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1345 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1192 msgid "Note: some shortcuts work in (non)editing mode only." msgstr "Uwaga: niektóre skróty działają tylko poza trybem edycji." -#: src/slic3r/GUI/Tab.cpp:1251 src/slic3r/GUI/Tab.cpp:1252 -#: src/slic3r/GUI/Tab.cpp:1540 src/slic3r/GUI/Tab.cpp:1541 -#: src/slic3r/GUI/Tab.cpp:2012 src/slic3r/GUI/Tab.cpp:2013 -#: src/slic3r/GUI/Tab.cpp:2128 src/slic3r/GUI/Tab.cpp:2129 -#: src/slic3r/GUI/Tab.cpp:3535 src/slic3r/GUI/Tab.cpp:3536 +#: src/slic3r/GUI/SavePresetDialog.cpp:151 +msgid "Note: This preset will be replaced after saving" +msgstr "Uwaga: ten zestaw ustawień zostanie zastąpiony po zapisaniu" + +#: src/slic3r/GUI/Tab.cpp:1581 src/slic3r/GUI/Tab.cpp:1582 +#: src/slic3r/GUI/Tab.cpp:1887 src/slic3r/GUI/Tab.cpp:1888 +#: src/slic3r/GUI/Tab.cpp:2221 src/slic3r/GUI/Tab.cpp:2222 +#: src/slic3r/GUI/Tab.cpp:2297 src/slic3r/GUI/Tab.cpp:2298 +#: src/slic3r/GUI/Tab.cpp:3951 src/slic3r/GUI/Tab.cpp:3952 msgid "Notes" msgstr "Notatki" -#: src/slic3r/GUI/ConfigWizard.cpp:1751 src/slic3r/GUI/DoubleSlider.cpp:1905 -#: src/slic3r/GUI/DoubleSlider.cpp:1926 src/slic3r/GUI/GUI.cpp:245 +#: src/slic3r/GUI/ConfigWizard.cpp:2237 src/slic3r/GUI/DoubleSlider.cpp:2124 +#: src/slic3r/GUI/DoubleSlider.cpp:2144 src/slic3r/GUI/GUI.cpp:244 msgid "Notice" msgstr "Uwaga" -#: src/slic3r/GUI/ConfigWizard.cpp:218 +#: src/slic3r/GUI/ConfigWizard.cpp:236 msgid "nozzle" msgstr "dysza" -#: src/slic3r/GUI/Tab.cpp:1870 src/slic3r/GUI/Tab.cpp:2340 -#: src/libslic3r/PrintConfig.cpp:1326 +#: src/slic3r/GUI/Tab.cpp:1790 +msgid "Nozzle" +msgstr "Dysza" + +#: src/slic3r/GUI/ConfigWizard.cpp:1392 +msgid "Nozzle and Bed Temperatures" +msgstr "Temperatury dyszy oraz stołu" + +#: src/slic3r/GUI/Tab.cpp:2104 src/slic3r/GUI/Tab.cpp:2509 +#: src/libslic3r/PrintConfig.cpp:1434 msgid "Nozzle diameter" msgstr "Średnica dyszy" -#: src/slic3r/GUI/ConfigWizard.cpp:969 +#: src/slic3r/GUI/ConfigWizard.cpp:1335 msgid "Nozzle Diameter:" msgstr "Średnica dyszy:" -#: src/libslic3r/PrintConfig.cpp:650 +#: src/libslic3r/PrintConfig.cpp:2201 +msgid "Nozzle temperature" +msgstr "Temperatura dyszy" + +#: src/libslic3r/PrintConfig.cpp:2198 +msgid "Nozzle temperature for layers after the first one. Set this to zero to disable temperature control commands in the output G-code." +msgstr "Temperatura dyszy dla warstw powyżej pierwszej. Ustaw 0, aby wyłączyć kontrolowanie temperatury w pliku G-code." + +#: src/libslic3r/PrintConfig.cpp:961 +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 "Temperatura dyszy dla pierwszej warstwy. Jeśli chcesz kontrolować temperaturę ręcznie podczas drukowania, ustaw 0, aby wyłączyć kontrolowanie temperatury w pliku G-code." + +#: src/libslic3r/PrintConfig.cpp:686 msgid "Number of cooling moves" msgstr "Ilość ruchów chłodzących" -#: src/slic3r/GUI/Tab.cpp:1839 +#: src/slic3r/GUI/Tab.cpp:2073 msgid "Number of extruders of the printer." msgstr "Liczba ekstruderów drukarki." -#: src/libslic3r/PrintConfig.cpp:1975 +#: src/libslic3r/PrintConfig.cpp:2117 msgid "Number of interface layers to insert between the object(s) and support material." msgstr "Liczba warstw łączących materiał podporowy z modelem właściwym." -#: src/libslic3r/PrintConfig.cpp:1697 +#: src/libslic3r/PrintConfig.cpp:1812 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 "Liczba pętli skirt. Jeśli włączona jest opcja \"Minimalna długość ekstruzji\", to może ona nadpisać wartość wprowadzoną w tym polu. Ustaw zero aby całkowicie wyłączyć skirt." +msgstr "Liczba pętli skirt. Jeśli włączona jest opcja \"Minimalna długość ekstruzji\", to może ona nadpisać wartość wprowadzoną w tym polu. Ustaw zero, aby całkowicie wyłączyć skirt." -#: src/libslic3r/PrintConfig.cpp:2365 +#: src/libslic3r/PrintConfig.cpp:2508 msgid "Number of pixels in" msgstr "Liczba pikseli" -#: src/libslic3r/PrintConfig.cpp:2367 +#: src/libslic3r/PrintConfig.cpp:2510 msgid "Number of pixels in X" msgstr "Liczba pikseli w osi X" -#: src/libslic3r/PrintConfig.cpp:2373 +#: src/libslic3r/PrintConfig.cpp:2516 msgid "Number of pixels in Y" msgstr "Liczba pikseli w osi Y" -#: src/libslic3r/PrintConfig.cpp:176 +#: src/libslic3r/PrintConfig.cpp:210 msgid "Number of solid layers to generate on bottom surfaces." msgstr "Liczba zwartych warstw dolnych." -#: src/libslic3r/PrintConfig.cpp:1781 +#: src/libslic3r/PrintConfig.cpp:1896 msgid "Number of solid layers to generate on top and bottom surfaces." msgstr "Liczba zwartych warstw górnych i dolnych." -#: src/libslic3r/PrintConfig.cpp:2134 +#: src/libslic3r/PrintConfig.cpp:2277 msgid "Number of solid layers to generate on top surfaces." msgstr "Liczba zwartych warstw górnych." -#: src/libslic3r/PrintConfig.cpp:2518 +#: src/libslic3r/PrintConfig.cpp:2661 msgid "Number of the layers needed for the exposure time fade from initial exposure time to the exposure time" msgstr "Liczba warstw potrzebnych, aby zmienić czas naświetlania z początkowego do stałego" -#: src/slic3r/GUI/Plater.cpp:241 +#: src/slic3r/GUI/Plater.cpp:247 msgid "Number of tool changes" msgstr "Ilość zmian narzędzi" -#: src/libslic3r/PrintConfig.cpp:2753 +#: src/slic3r/GUI/Tab.cpp:4127 src/libslic3r/PrintConfig.cpp:2917 msgid "Object elevation" msgstr "Podniesienie modelu" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2466 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2858 msgid "Object manipulation" msgstr "Manipulowanie modelem" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:155 src/libslic3r/GCode.cpp:638 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:163 src/libslic3r/GCode.cpp:623 msgid "Object name" msgstr "Nazwa modelu" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3417 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3880 msgid "Object or Instance" msgstr "Model lub Kopia" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1106 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1230 msgid "Object reordered" msgstr "Model przeorganizowany" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2479 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2871 msgid "Object Settings to modify" -msgstr "Ustawienia Modelu do modyfikacji" +msgstr "Ustawienia modelu do modyfikacji" -#: src/slic3r/GUI/Plater.cpp:2529 +#: src/slic3r/GUI/Plater.cpp:2491 msgid "Object too large?" msgstr "Model zbyt duży?" -#: src/libslic3r/PrintConfig.cpp:2262 +#: src/libslic3r/PrintConfig.cpp:2405 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 "Modele zostaną użyte do czyszczenia dyszy po zmianie narzędzia (filamentu) aby oszczędzić materiał, który inaczej zostałby wyekstrudowany do wieży czyszczącej i aby skrócić czas wydruku. W rezultacie kolor tego modelu będzie niejednolity." +msgstr "Modele zostaną użyte do czyszczenia dyszy po zmianie narzędzia (filamentu), aby oszczędzić materiał, który inaczej zostałby wyekstrudowany do wieży czyszczącej i aby skrócić czas wydruku. W rezultacie kolor tego modelu będzie niejednolity." -#: src/slic3r/GUI/Plater.cpp:1194 +#: src/slic3r/GUI/Plater.cpp:1103 msgid "object(s)" msgstr "model(e)" -#: src/slic3r/GUI/Plater.cpp:1231 src/slic3r/GUI/Plater.cpp:1245 +#: src/slic3r/GUI/Plater.cpp:1143 src/slic3r/GUI/Plater.cpp:1160 msgid "objects" msgstr "modele" -#: src/libslic3r/PrintConfig.cpp:429 src/libslic3r/PrintConfig.cpp:855 +#: src/libslic3r/PrintConfig.cpp:465 src/libslic3r/PrintConfig.cpp:893 msgid "Octagram Spiral" msgstr "Spirala ośmiokątna" @@ -5020,64 +5785,97 @@ msgstr "Spirala ośmiokątna" msgid "OctoPrint version" msgstr "Wersja OctoPrint" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3425 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3888 msgid "of a current Object" msgstr "obecnego Modelu" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:43 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:42 msgid "Offset" msgstr "Offset" -#: src/slic3r/GUI/Tab.cpp:1755 +#: src/slic3r/GUI/Preferences.cpp:422 +msgid "Old regular layout with the tab bar" +msgstr "Poprzedni układ z paskiem kart" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:608 +msgid "Old Value" +msgstr "Poprzednia wartość" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1177 +msgid "Old value" +msgstr "Poprzednia wartość" + +#: src/slic3r/GUI/Preferences.cpp:123 +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 "Na OSX domyślnie zawsze jest uruchomiona jedna instancja aplikacji. Dozwolone jest jednak uruchomienie wielu instancji tej samej aplikacji z linii komend. Ustawienie to spowoduje dopuszczenie tylko jednej instancji do działania." + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:359 #, c-format msgid "On this system, %s uses HTTPS certificates from the system Certificate Store or Keychain." msgstr "W tym systemie, %s używa certyfikatu HTTPS z magazynu systemowego (Certificate Store) lub Keychain." -#: src/slic3r/GUI/DoubleSlider.cpp:950 +#: src/slic3r/GUI/DoubleSlider.cpp:1064 msgid "One layer mode" msgstr "Tryb jednej warstwy" -#: src/libslic3r/Print.cpp:1365 +#: src/libslic3r/Print.cpp:1391 msgid "One or more object were assigned an extruder that the printer does not have." msgstr "Jeden lub więcej modeli zostało przypisanych do ekstrudera, którego drukarka nie posiada." -#: src/libslic3r/PrintConfig.cpp:1903 src/libslic3r/PrintConfig.cpp:2676 +#: 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 "Tworzenie podpór tylko na stole. Nie będą tworzone na wydruku." -#: src/libslic3r/PrintConfig.cpp:1027 +#: src/libslic3r/PrintConfig.cpp:1071 msgid "Only infill where needed" msgstr "Tylko potrzebne wypełnienie" -#: src/slic3r/GUI/Tab.cpp:2373 +#: src/slic3r/GUI/Tab.cpp:2542 msgid "Only lift Z" msgstr "Z-hop tylko" -#: src/libslic3r/PrintConfig.cpp:1570 +#: src/libslic3r/PrintConfig.cpp:1678 msgid "Only lift Z above" msgstr "Z-hop tylko powyżej" -#: src/libslic3r/PrintConfig.cpp:1579 +#: src/libslic3r/PrintConfig.cpp:1687 msgid "Only lift Z below" msgstr "Z-hop tylko poniżej" -#: src/libslic3r/PrintConfig.cpp:1348 +#: src/libslic3r/PrintConfig.cpp:1456 msgid "Only retract when crossing perimeters" msgstr "Retrakcja tylko przy przechodzeniu nad obrysami" -#: src/slic3r/GUI/Tab.cpp:1187 +#: src/slic3r/GUI/ConfigWizard.cpp:714 +msgid "Only the following installed printers are compatible with the selected filament:" +msgstr "Tylko te zainstalowane drukarki są kompatybilne z wybranym filamentem:" + +#: src/slic3r/GUI/Tab.cpp:1517 msgid "Ooze prevention" msgstr "Zapobieganie wyciekom (ooze)" -#: src/libslic3r/Print.cpp:1266 +#: src/libslic3r/Print.cpp:1292 msgid "Ooze prevention is currently not supported with the wipe tower enabled." msgstr "Zapobieganie wyciekom jest obecnie niedostępne przy włączonej wieży czyszczącej." -#: src/slic3r/GUI/MainFrame.cpp:408 +#: src/slic3r/GUI/MainFrame.cpp:1398 +msgid "Open &PrusaSlicer" +msgstr "Otwórz &PrusaSlicer" + +#: src/slic3r/GUI/MainFrame.cpp:1391 +msgid "Open a G-code file" +msgstr "Otwórz plik G-code" + +#: src/slic3r/GUI/MainFrame.cpp:63 src/slic3r/GUI/MainFrame.cpp:77 +#: src/slic3r/GUI/MainFrame.cpp:1262 +msgid "Open a new PrusaSlicer instance" +msgstr "Otwórz nową instancję PrusaSlicer" + +#: src/slic3r/GUI/MainFrame.cpp:989 msgid "Open a project file" msgstr "Otwórz plik projektu" -#: src/slic3r/GUI/Tab.cpp:1729 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:330 msgid "Open CA certificate file" msgstr "Otwórz plik certyfikatu CA" @@ -5090,116 +5888,150 @@ msgstr "Otwórz stronę z listami zmian" msgid "Open download page" msgstr "Otwórz stronę pobierania" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:113 +#: src/slic3r/GUI/NotificationManager.cpp:742 +msgid "Open Folder." +msgstr "Otwórz folder." + +#: src/slic3r/Utils/Process.cpp:151 +msgid "Open G-code file:" +msgstr "Otwórz plik G-code:" + +#: src/slic3r/GUI/MainFrame.cpp:66 src/slic3r/GUI/MainFrame.cpp:1141 +msgid "Open G-code viewer" +msgstr "Otwórz przeglądarkę G-code" + +#: src/slic3r/GUI/MainFrame.cpp:79 +msgid "Open new G-code viewer" +msgstr "Otwórz nową przeglądarkę G-code" + +#: src/slic3r/GUI/MainFrame.cpp:63 src/slic3r/GUI/MainFrame.cpp:1262 +msgid "Open new instance" +msgstr "Otwórz nową instancję" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:106 msgid "Open project STL/OBJ/AMF/3MF with config, clear plater" msgstr "Otwórz projekt STL/OBJ/AMF/3MF z konfiguracją, wyczyść stół" -#: src/slic3r/GUI/MainFrame.cpp:693 +#: src/slic3r/GUI/MainFrame.cpp:77 src/slic3r/GUI/MainFrame.cpp:1398 +msgid "Open PrusaSlicer" +msgstr "Otwórz PrusaSlicer " + +#: src/slic3r/GUI/MainFrame.cpp:918 src/slic3r/GUI/MainFrame.cpp:1317 #, c-format msgid "Open the %s website in your browser" msgstr "Otwórz stronę %s w przeglądarce" -#: src/slic3r/GUI/MainFrame.cpp:684 +#: src/slic3r/GUI/MainFrame.cpp:909 src/slic3r/GUI/MainFrame.cpp:1308 msgid "Open the Prusa3D drivers download page in your browser" msgstr "Otwórz stronę Prusa3D ze sterownikami w przeglądarce" -#: src/slic3r/GUI/MainFrame.cpp:686 +#: src/slic3r/GUI/MainFrame.cpp:911 src/slic3r/GUI/MainFrame.cpp:1310 msgid "Open the software releases page in your browser" msgstr "Otwórz stronę z wersjami oprogramowania w przeglądarce" -#: src/slic3r/GUI/Plater.cpp:4040 +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:220 src/slic3r/GUI/Plater.cpp:3961 msgid "Optimize orientation" msgstr "Optymalizuj orientację" -#: src/slic3r/GUI/Plater.cpp:2767 +#: src/slic3r/GUI/Plater.cpp:1555 msgid "Optimize Rotation" msgstr "Optymalizuj obrót" -#: src/slic3r/GUI/Plater.cpp:4040 +#: src/slic3r/GUI/Plater.cpp:3962 msgid "Optimize the rotation of the object for better print results." msgstr "Optymalizuj obrót modelu dla lepszych efektów." -#: src/libslic3r/PrintConfig.cpp:137 +#: src/libslic3r/PrintConfig.cpp:170 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 "Optymalizuj ruchy jałowe aby zminimalizować przejeżdżanie nad obrysami. Ta funkcja jest przydatna szczególne przy ekstruderach typu bowden, podatnych na wyciekanie filamentu z dyszy. Włączenie tej funkcji wydłuża zarówno czas druku jak i czas generowania G-code." +msgstr "Optymalizuj ruchy jałowe, aby zminimalizować przejeżdżanie nad obrysami. Ta funkcja jest przydatna szczególne przy ekstruderach typu Bowden, podatnych na wyciekanie filamentu z dyszy. Włączenie tej funkcji wydłuża zarówno czas druku, jak i czas generowania G-code." -#: src/slic3r/GUI/Tab.cpp:1131 +#: src/slic3r/GUI/GCodeViewer.cpp:2525 src/slic3r/GUI/GUI_Preview.cpp:320 +#: src/slic3r/GUI/GUI_Preview.cpp:333 +msgid "Options" +msgstr "Opcje" + +#: src/slic3r/GUI/Tab.cpp:1460 msgid "Options for support material and raft" msgstr "Opcje materiału podporowego i tratwy (raft)" -#: src/slic3r/GUI/DoubleSlider.cpp:989 +#: src/slic3r/GUI/Mouse3DController.cpp:315 +msgid "Options:" +msgstr "Opcje:" + +#: src/slic3r/GUI/DoubleSlider.cpp:1112 msgid "or press \"+\" key" msgstr "lub naciśnij klawisz \"+\"" -#: src/slic3r/GUI/Plater.cpp:2892 +#: src/slic3r/GUI/Jobs/RotoptimizeJob.cpp:74 msgid "Orientation found." msgstr "Znaleziono orientację." -#: src/slic3r/GUI/Plater.cpp:2891 +#: src/slic3r/GUI/Jobs/RotoptimizeJob.cpp:73 msgid "Orientation search canceled." msgstr "Anulowano ustawianie orientacji." -#: src/slic3r/GUI/BedShapeDialog.cpp:84 +#: src/slic3r/GUI/BedShapeDialog.cpp:94 msgid "Origin" msgstr "Punkt zerowy" -#: src/slic3r/GUI/Tab.cpp:1227 +#: src/slic3r/GUI/Tab.cpp:1557 msgid "Other" msgstr "Inne" -#: src/libslic3r/PrintConfig.cpp:144 src/libslic3r/PrintConfig.cpp:2064 +#: src/libslic3r/PrintConfig.cpp:177 src/libslic3r/PrintConfig.cpp:2206 msgid "Other layers" msgstr "Inne warstwy" -#: src/slic3r/GUI/ConfigWizard.cpp:856 +#: src/slic3r/GUI/ConfigWizard.cpp:1222 msgid "Other Vendors" msgstr "Inni dostawcy" -#: src/slic3r/GUI/Tab.cpp:1238 src/slic3r/GUI/Tab.cpp:3666 +#: src/slic3r/GUI/Tab.cpp:1568 src/slic3r/GUI/Tab.cpp:4085 msgid "Output file" msgstr "Plik wyjściowy" -#: src/libslic3r/PrintConfig.cpp:3493 +#: src/libslic3r/PrintConfig.cpp:3692 msgid "Output File" msgstr "Plik Wyjściowy" -#: src/libslic3r/PrintConfig.cpp:1363 +#: src/libslic3r/PrintConfig.cpp:1471 msgid "Output filename format" msgstr "Format pliku wyjściowego" -#: src/libslic3r/PrintConfig.cpp:3381 +#: src/libslic3r/PrintConfig.cpp:3580 msgid "Output Model Info" msgstr "Informacje o Modelu wyjściowym" -#: src/slic3r/GUI/Tab.cpp:1230 src/slic3r/GUI/Tab.cpp:3665 +#: src/slic3r/GUI/Tab.cpp:1560 src/slic3r/GUI/Tab.cpp:4084 msgid "Output options" msgstr "Opcje wyjściowe" -#: src/slic3r/GUI/GUI_Preview.cpp:239 src/libslic3r/ExtrusionEntity.cpp:312 +#: src/slic3r/GUI/GUI_Preview.cpp:303 src/libslic3r/ExtrusionEntity.cpp:316 +#: src/libslic3r/ExtrusionEntity.cpp:340 msgid "Overhang perimeter" msgstr "Obrys zwisu" -#: src/libslic3r/PrintConfig.cpp:2042 +#: src/libslic3r/PrintConfig.cpp:2184 msgid "Overhang threshold" msgstr "Próg zwisu" -#: src/slic3r/GUI/Tab.cpp:1215 +#: src/slic3r/GUI/Tab.cpp:1545 msgid "Overlap" msgstr "Nakładanie" -#: src/slic3r/GUI/MainFrame.cpp:614 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "P&rint Settings Tab" -msgstr "Ustawienia D&ruku" +msgstr "Ustawienia d&ruku" -#: src/slic3r/GUI/GUI_ObjectList.cpp:107 src/slic3r/GUI/GUI_ObjectList.cpp:625 -#: src/slic3r/GUI/Plater.cpp:635 src/slic3r/GUI/Tab.cpp:3636 -#: src/slic3r/GUI/Tab.cpp:3637 src/libslic3r/PrintConfig.cpp:2781 -#: src/libslic3r/PrintConfig.cpp:2788 src/libslic3r/PrintConfig.cpp:2802 -#: src/libslic3r/PrintConfig.cpp:2813 src/libslic3r/PrintConfig.cpp:2823 -#: src/libslic3r/PrintConfig.cpp:2845 src/libslic3r/PrintConfig.cpp:2856 -#: src/libslic3r/PrintConfig.cpp:2863 src/libslic3r/PrintConfig.cpp:2870 -#: src/libslic3r/PrintConfig.cpp:2881 src/libslic3r/PrintConfig.cpp:2890 -#: src/libslic3r/PrintConfig.cpp:2899 +#: src/slic3r/GUI/GUI_ObjectList.cpp:105 src/slic3r/GUI/GUI_ObjectList.cpp:664 +#: src/slic3r/GUI/Plater.cpp:501 src/slic3r/GUI/Tab.cpp:4055 +#: src/slic3r/GUI/Tab.cpp:4056 src/slic3r/GUI/Tab.cpp:4127 +#: src/libslic3r/PrintConfig.cpp:2945 src/libslic3r/PrintConfig.cpp:2952 +#: src/libslic3r/PrintConfig.cpp:2966 src/libslic3r/PrintConfig.cpp:2977 +#: src/libslic3r/PrintConfig.cpp:2987 src/libslic3r/PrintConfig.cpp:3009 +#: src/libslic3r/PrintConfig.cpp:3020 src/libslic3r/PrintConfig.cpp:3027 +#: src/libslic3r/PrintConfig.cpp:3034 src/libslic3r/PrintConfig.cpp:3045 +#: src/libslic3r/PrintConfig.cpp:3054 src/libslic3r/PrintConfig.cpp:3063 msgid "Pad" msgstr "Podkładka" @@ -5207,150 +6039,186 @@ msgstr "Podkładka" msgid "Pad and Support" msgstr "Podkładka i Podpory" -#: src/libslic3r/PrintConfig.cpp:2855 +#: src/slic3r/GUI/Tab.cpp:4127 src/libslic3r/PrintConfig.cpp:3019 msgid "Pad around object" msgstr "Podkładka wokół modelu" -#: src/libslic3r/PrintConfig.cpp:2862 +#: src/libslic3r/PrintConfig.cpp:3026 msgid "Pad around object everywhere" msgstr "Podkładka wokół wszystkich modeli" -#: src/libslic3r/PrintConfig.cpp:2811 +#: src/libslic3r/PrintConfig.cpp:2975 msgid "Pad brim size" msgstr "Rozmiar brimu dla podkładki" -#: src/libslic3r/SLA/Pad.cpp:691 +#: src/libslic3r/SLA/Pad.cpp:532 msgid "Pad brim size is too small for the current configuration." msgstr "Rozmiar brimu podkładki jest zbyt mały dla obecnej konfiguracji." -#: src/libslic3r/PrintConfig.cpp:2898 +#: src/libslic3r/PrintConfig.cpp:3062 msgid "Pad object connector penetration" msgstr "Przenikanie łącznika podkładki z modelem" -#: src/libslic3r/PrintConfig.cpp:2880 +#: src/libslic3r/PrintConfig.cpp:3044 msgid "Pad object connector stride" msgstr "Rozmieszczenie łączników podkładki z modelem" -#: src/libslic3r/PrintConfig.cpp:2889 +#: src/libslic3r/PrintConfig.cpp:3053 msgid "Pad object connector width" msgstr "Szerokość łącznika podkładki z modelem" -#: src/libslic3r/PrintConfig.cpp:2869 +#: src/libslic3r/PrintConfig.cpp:3033 msgid "Pad object gap" msgstr "Odstęp modelu od podkładki" -#: src/libslic3r/PrintConfig.cpp:2797 +#: src/libslic3r/PrintConfig.cpp:2961 msgid "Pad wall height" msgstr "Wysokość ścianki podkładki" -#: src/libslic3r/PrintConfig.cpp:2844 +#: src/libslic3r/PrintConfig.cpp:3008 msgid "Pad wall slope" msgstr "Kąt pochylenia ścianki podkładki" -#: src/libslic3r/PrintConfig.cpp:2787 +#: src/libslic3r/PrintConfig.cpp:2951 msgid "Pad wall thickness" msgstr "Grubość ścianki podkładki" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:171 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 msgid "Page Down" msgstr "Page Down" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:170 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 msgid "Page Up" msgstr "Page Up" -#: src/slic3r/GUI/Field.cpp:139 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:33 +msgid "Paint-on supports" +msgstr "Malowanie podpór" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:178 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:159 +msgid "Paints all facets inside, regardless of their orientation." +msgstr "Maluje wszystkie powierzchnie wewnątrz, bez względu na ich kierunek." + +#: src/slic3r/GUI/Field.cpp:187 msgid "parameter name" msgstr "nazwa parametru" -#: src/slic3r/GUI/Field.cpp:243 +#: src/slic3r/GUI/Field.cpp:291 msgid "Parameter validation" msgstr "Weryfikacja parametru" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3418 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3551 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3881 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4014 msgid "Part" msgstr "Część" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2494 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2886 msgid "Part manipulation" msgstr "Manipulacja częścią" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2483 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2875 msgid "Part Settings to modify" -msgstr "Ustawienia Części do modyfikacji" +msgstr "Ustawienia części do modyfikacji" -#: src/slic3r/GUI/GLCanvas3D.cpp:4514 +#: src/libslic3r/PrintConfig.cpp:138 +msgid "Password" +msgstr "Hasło" + +#: src/slic3r/GUI/GLCanvas3D.cpp:4880 msgid "Paste" msgstr "Wklej" -#: src/slic3r/GUI/MainFrame.cpp:592 +#: src/slic3r/GUI/MainFrame.cpp:1198 msgid "Paste clipboard" msgstr "Wklej zawartość schowka" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:133 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:128 msgid "Paste from clipboard" msgstr "Wklej ze schowka" -#: src/slic3r/GUI/Plater.cpp:5606 +#: src/slic3r/GUI/Plater.cpp:5803 msgid "Paste From Clipboard" msgstr "Wklej Ze Schowka" -#: src/libslic3r/PrintConfig.cpp:2002 +#: src/libslic3r/PrintConfig.cpp:2144 msgid "Pattern" msgstr "Wzór" -#: src/libslic3r/PrintConfig.cpp:1891 +#: src/libslic3r/PrintConfig.cpp:2033 msgid "Pattern angle" msgstr "Kąt wzoru" -#: src/libslic3r/PrintConfig.cpp:2016 +#: src/libslic3r/PrintConfig.cpp:2158 msgid "Pattern spacing" msgstr "Rozstaw wzoru" -#: src/libslic3r/PrintConfig.cpp:2004 +#: src/libslic3r/PrintConfig.cpp:2146 msgid "Pattern used to generate support material." msgstr "Wzór podpór." -#: src/slic3r/GUI/Plater.cpp:1261 +#: src/slic3r/GUI/GCodeViewer.cpp:2437 src/slic3r/GUI/GCodeViewer.cpp:2460 +#: src/slic3r/GUI/Plater.cpp:1199 msgid "Pause" msgstr "Pauza" -#: src/slic3r/GUI/DoubleSlider.cpp:1009 +#: src/slic3r/GUI/DoubleSlider.cpp:1133 msgid "Pause print (\"%1%\")" msgstr "Wstrzymaj wydruk (\"%1%\")" -#: src/slic3r/GUI/GLCanvas3D.cpp:934 src/slic3r/GUI/GLCanvas3D.cpp:943 -#: src/slic3r/GUI/GLCanvas3D.cpp:982 +#: src/slic3r/GUI/Tab.cpp:2209 src/libslic3r/PrintConfig.cpp:1969 +msgid "Pause Print G-code" +msgstr "G-code dla pauzy drukowania" + +#: 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 "Pauza wydruku lub własny G-code" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:175 +#: src/libslic3r/PrintConfig.cpp:1147 +msgid "Percent of a flow rate relative to object's normal layer height." +msgstr "Procentowy udział przepływu w stosunku do normalnej wysokości warstwy modelu." + +#: src/slic3r/GUI/GCodeViewer.cpp:2233 +msgid "Percentage" +msgstr "Procentowo" + +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:177 msgid "Perform cut" msgstr "Przetnij" -#: src/libslic3r/PrintConfig.cpp:2927 +#: src/libslic3r/PrintConfig.cpp:3091 msgid "Performance vs accuracy of calculation. Lower values may produce unwanted artifacts." msgstr "Kalkulacja prędkości względem dokładności. Niższe wartości mogą powodować artefakty." -#: src/slic3r/GUI/GUI_Preview.cpp:237 src/libslic3r/ExtrusionEntity.cpp:310 +#: src/slic3r/GUI/GUI_Preview.cpp:301 src/libslic3r/ExtrusionEntity.cpp:314 +#: src/libslic3r/ExtrusionEntity.cpp:336 msgid "Perimeter" msgstr "Obrys" -#: src/libslic3r/PrintConfig.cpp:1408 +#: src/libslic3r/PrintConfig.cpp:1516 msgid "Perimeter extruder" msgstr "Ekstruder dla obrysów" -#: src/slic3r/GUI/PresetHints.cpp:165 +#: src/slic3r/GUI/PresetHints.cpp:164 msgid "perimeters" msgstr "obrysy" -#: src/libslic3r/PrintConfig.cpp:1399 src/libslic3r/PrintConfig.cpp:1417 -#: src/libslic3r/PrintConfig.cpp:1430 src/libslic3r/PrintConfig.cpp:1440 +#: src/libslic3r/PrintConfig.cpp:1507 src/libslic3r/PrintConfig.cpp:1525 +#: src/libslic3r/PrintConfig.cpp:1538 src/libslic3r/PrintConfig.cpp:1548 msgid "Perimeters" msgstr "Obrysy" -#: src/slic3r/GUI/ConfigWizard.cpp:860 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:159 +msgid "Physical Printer" +msgstr "Drukarka fizyczna" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:789 +#: src/slic3r/GUI/PresetComboBoxes.cpp:948 +msgid "Physical printers" +msgstr "Drukarki fizyczne" + +#: src/slic3r/GUI/ConfigWizard.cpp:1226 #, c-format msgid "Pick another vendor supported by %s" msgstr "Wybierz innego producenta obsługiwanego przez %s" @@ -5359,291 +6227,338 @@ msgstr "Wybierz innego producenta obsługiwanego przez %s" msgid "Picture sizes to be stored into a .gcode and .sl1 files" msgstr "Rozmiary obrazów będą przechowywane w plikach .gcode i .sl1" -#: src/libslic3r/PrintConfig.cpp:2681 +#: src/libslic3r/PrintConfig.cpp:2822 +msgid "Pillar connection mode" +msgstr "Tryb łączenia słupków" + +#: src/libslic3r/PrintConfig.cpp:2791 +msgid "Pillar diameter" +msgstr "Średnica słupka" + +#: src/libslic3r/PrintConfig.cpp:2845 msgid "Pillar widening factor" msgstr "Współczynnik rozszerzania słupka" -#: src/slic3r/GUI/ConfigManipulation.cpp:330 +#: src/slic3r/GUI/ConfigManipulation.cpp:335 msgid "Pinhead diameter should be smaller than the pillar diameter." msgstr "Średnica łączników podpór powinna być mniejsza niż średnica słupków." -#: src/slic3r/GUI/DoubleSlider.cpp:79 +#: src/libslic3r/PrintConfig.cpp:2763 +msgid "Pinhead front diameter" +msgstr "Przednia średnica łącznika" + +#: src/libslic3r/PrintConfig.cpp:2781 +msgid "Pinhead width" +msgstr "Szerokość łącznika" + +#: src/slic3r/GUI/DoubleSlider.cpp:110 msgid "Place bearings in slots and resume printing" msgstr "Umieść łożyska w gniazdach i wznów drukowanie" -#: src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp:45 +#: src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp:41 msgid "Place on face" msgstr "Połóż na płaszczyźnie" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:192 src/slic3r/GUI/MainFrame.cpp:204 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:190 src/slic3r/GUI/MainFrame.cpp:340 +#: src/slic3r/GUI/MainFrame.cpp:352 msgid "Plater" msgstr "Zawartość Stołu" -#: src/slic3r/GUI/GUI_App.cpp:1085 +#: src/slic3r/GUI/GUI_App.cpp:1877 msgid "Please check and fix your object list." msgstr "Sprawdź i popraw listę modeli." -#: src/slic3r/GUI/Plater.cpp:2312 src/slic3r/GUI/Tab.cpp:2959 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:209 src/slic3r/GUI/Plater.cpp:2255 +#: src/slic3r/GUI/Tab.cpp:3188 msgid "Please check your object list before preset changing." msgstr "Sprawdź listę modeli przed zmianą zestawu ustawień." -#: src/slic3r/GUI/Plater.cpp:3286 +#: src/slic3r/GUI/Plater.cpp:3089 msgid "Please select the file to reload" msgstr "Wybierz plik do przeładowania" -#: src/slic3r/GUI/AboutDialog.cpp:39 src/slic3r/GUI/AboutDialog.cpp:291 +#: src/slic3r/GUI/AboutDialog.cpp:43 src/slic3r/GUI/AboutDialog.cpp:48 +#: src/slic3r/GUI/AboutDialog.cpp:317 msgid "Portions copyright" msgstr "Częściowe prawa autorskie" -#: src/libslic3r/PrintConfig.cpp:2400 +#: src/libslic3r/PrintConfig.cpp:2543 msgid "Portrait" msgstr "Tryb Portretowy" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:215 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:457 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:223 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:505 msgid "Position" msgstr "Pozycja" -#: src/slic3r/GUI/Tab.cpp:2367 +#: src/slic3r/GUI/Tab.cpp:2536 msgid "Position (for multi-extruder printers)" msgstr "Pozycja (dla drukarek z kilkoma ekstruderami)" -#: src/libslic3r/PrintConfig.cpp:1623 +#: src/libslic3r/PrintConfig.cpp:1731 msgid "Position of perimeters starting points." msgstr "Pozycja startowa druku obrysów." -#: src/libslic3r/PrintConfig.cpp:2224 +#: src/libslic3r/PrintConfig.cpp:2367 msgid "Position X" msgstr "Pozycja X" -#: src/libslic3r/PrintConfig.cpp:2231 +#: src/libslic3r/PrintConfig.cpp:2374 msgid "Position Y" msgstr "Pozycja Y" -#: src/slic3r/GUI/Tab.cpp:1245 src/libslic3r/PrintConfig.cpp:1453 +#: src/slic3r/GUI/Tab.cpp:1575 src/libslic3r/PrintConfig.cpp:1561 msgid "Post-processing scripts" msgstr "Skrypty do przetwarzania końcowego" -#: src/slic3r/GUI/MainFrame.cpp:629 +#: src/slic3r/GUI/MainFrame.cpp:1237 msgid "Pre&view" msgstr "Pod&gląd" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:149 src/slic3r/GUI/Preferences.cpp:10 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:143 src/slic3r/GUI/Preferences.cpp:12 msgid "Preferences" msgstr "Preferencje" -#: src/libslic3r/PrintConfig.cpp:1641 +#: src/libslic3r/PrintConfig.cpp:1749 msgid "Preferred direction of the seam" msgstr "Preferowane ustawienie szwu" -#: src/libslic3r/PrintConfig.cpp:1652 +#: src/libslic3r/PrintConfig.cpp:1760 msgid "Preferred direction of the seam - jitter" msgstr "Preferowany kierunek szwu - jitter" -#: src/libslic3r/PrintObject.cpp:255 +#: src/libslic3r/PrintObject.cpp:261 msgid "Preparing infill" msgstr "Przygotowywanie wypełnienia" -#: src/slic3r/GUI/Tab.cpp:2920 -#, c-format -msgid "Preset (%s)" -msgstr "Zestaw ustawień (%s)" +#: src/slic3r/GUI/GUI_App.cpp:855 +msgid "Preparing settings tabs" +msgstr "Przygotowuję zakładkę ustawień" -#: src/slic3r/GUI/Tab.cpp:3082 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1009 +msgid "Preset \"%1%\" has the following unsaved changes:" +msgstr "Zestaw ustawień \"%1%\" ma następujące niezapisane zmiany:" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1014 +msgid "Preset \"%1%\" is not compatible with the new print profile and it has the following unsaved changes:" +msgstr "Zestaw ustawień \"%1%\" jest niekompatybilny z nowym profilem druku i ma następujące niezapisane zmiany:" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1013 +msgid "Preset \"%1%\" is not compatible with the new printer profile and it has the following unsaved changes:" +msgstr "Zestaw ustawień \"%1%\" jest niekompatybilny z nowym profilem drukarki i ma następujące niezapisane zmiany:" + +#: src/slic3r/GUI/SavePresetDialog.cpp:136 +msgid "Preset with name \"%1%\" already exists and is imcopatible with selected printer." +msgstr "Zestaw ustawień o nazwie \"%1%\" już istnieje i jest niekompatybilny z wybraną drukarką." + +#: src/slic3r/GUI/SavePresetDialog.cpp:148 msgid "Preset with name \"%1%\" already exists." msgstr "Zestaw ustawień o nazwie \"%1%\" już istnieje." -#: src/slic3r/GUI/Tab.cpp:3029 +#: src/slic3r/GUI/SavePresetDialog.cpp:219 msgctxt "PresetName" msgid "Copy" msgstr "Kopia" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:163 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:157 msgid "Press to activate deselection rectangle" -msgstr "Naciśnij aby aktywować prostokąt odznaczający" +msgstr "Naciśnij, aby aktywować prostokąt odznaczający" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:197 -msgid "Press to activate one direction scaling in Gizmo scale" -msgstr "Naciśnij aby aktywować skalowanie uchwytem w jednym kierunku" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:162 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:156 msgid "Press to activate selection rectangle" msgstr "Naciśnij, aby aktywować prostokąt zaznaczający" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:198 -msgid "" -"Press to scale (in Gizmo scale) or rotate (in Gizmo rotate)\n" -"selected objects around their own center" -msgstr "" -"Naciśnij, aby skalować (z uchwytem) lub obracać (z uchwytem)\n" -"zaznaczone modele wokół ich środków" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:161 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:155 msgid "" "Press to select multiple objects\n" "or move multiple objects with mouse" msgstr "" -"Kliknij aby wybrać wiele modeli\n" -"lub przesunąć je przy pomocy myszki" +"Kliknij, aby wybrać wiele modeli\n" +"lub przesunąć je przy pomocy myszy" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:195 -#, no-c-format +#: src/slic3r/GUI/KBShortcutsDialog.cpp:221 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:222 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:231 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:232 msgid "" -"Press to snap by 5% in Gizmo scale\n" -"or to snap by 1mm in Gizmo move" +"Press to speed up 5 times while moving thumb\n" +"with arrow keys or mouse wheel" msgstr "" -"Naciśnij, aby a przyciągać co 5% podczas skalowania z uchwytem\n" -"lub przyciągać co 1 mm podczas przemieszczania z uchwytem" +"Naciśnij, aby przyspieszyć suwak 5-krotnie\n" +"podczas ruchu strzałkami lub kółkiem myszy" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:211 src/slic3r/GUI/Plater.cpp:4105 -#: src/slic3r/GUI/Tab.cpp:2390 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:212 src/slic3r/GUI/Plater.cpp:4052 +#: src/slic3r/GUI/Tab.cpp:2559 msgid "Preview" msgstr "Podgląd cięcia" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:42 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:41 msgid "Preview hollowed and drilled model" -msgstr "Podgląd wydrążonego modelu z otworem" +msgstr "Podgląd drążenia/wiercenia" -#: src/slic3r/GUI/MainFrame.cpp:790 +#: src/slic3r/GUI/MainFrame.cpp:1491 msgid "Previously sliced file (" msgstr "Poprzednio pocięty plik (" -#: src/libslic3r/PrintConfig.cpp:1851 +#: src/libslic3r/PrintConfig.cpp:1993 msgid "Prime all printing extruders" msgstr "Wyczyść wszystkie używane ekstrudery" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:51 src/slic3r/GUI/Preset.cpp:1521 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:51 src/libslic3r/Preset.cpp:1300 msgid "print" msgstr "druk" -#: src/slic3r/GUI/MainFrame.cpp:648 +#: src/slic3r/GUI/GCodeViewer.cpp:2436 src/slic3r/GUI/GCodeViewer.cpp:2451 +msgid "Print" +msgstr "Druk" + +#: src/slic3r/GUI/MainFrame.cpp:1258 msgid "Print &Host Upload Queue" msgstr "Kolej&ka zadań serwera druku" -#: src/libslic3r/PrintConfig.cpp:471 +#: src/libslic3r/PrintConfig.cpp:507 msgid "Print contour perimeters from the outermost one to the innermost one instead of the default inverse order." msgstr "Drukuj obrysy od zewnątrz do wewnątrz zamiast domyślnego ustawienia węwnątrz-zewnątrz." -#: src/slic3r/GUI/ConfigWizard.cpp:952 +#: src/slic3r/GUI/ConfigWizard.cpp:1318 msgid "Print Diameters" -msgstr "Średnice wydruku" +msgstr "Średnice" -#: src/slic3r/GUI/Tab.cpp:1944 src/slic3r/GUI/Tab.cpp:2123 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:209 src/slic3r/GUI/Tab.cpp:2024 msgid "Print Host upload" msgstr "Wysyłanie do serwera druku" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:142 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:138 #: src/slic3r/GUI/PrintHostDialogs.cpp:136 msgid "Print host upload queue" msgstr "Kolejka serwera druku" -#: src/slic3r/GUI/DoubleSlider.cpp:970 +#: src/slic3r/GUI/DoubleSlider.cpp:1093 msgid "Print mode" msgstr "Tryb drukowania" -#: src/slic3r/GUI/Tab.hpp:328 src/slic3r/GUI/Tab.hpp:431 +#: src/slic3r/GUI/GCodeViewer.cpp:2579 src/slic3r/GUI/GUI_Preview.cpp:1476 +msgid "Print pauses" +msgstr "Pauzuje wydruk" + +#: src/slic3r/GUI/Tab.hpp:378 src/slic3r/GUI/Tab.hpp:502 msgid "Print Settings" msgstr "Ustawienia Druku" -#: src/slic3r/GUI/Plater.cpp:815 +#: src/slic3r/GUI/Plater.cpp:690 msgid "Print settings" msgstr "Ustawienia druku" -#: src/slic3r/GUI/Tab.cpp:1478 +#: src/slic3r/GUI/GLCanvas3D.cpp:4303 src/slic3r/GUI/GLCanvas3D.cpp:4939 +msgid "Print Settings Tab" +msgstr "Ustawienia druku" + +#: src/slic3r/GUI/Tab.cpp:1824 msgid "Print speed override" msgstr "Nadpisanie prędkości druku" -#: src/libslic3r/GCode.cpp:638 +#: src/libslic3r/GCode.cpp:623 msgid "Print z" msgstr "Druk z" -#: src/slic3r/GUI/MainFrame.cpp:621 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Print&er Settings Tab" -msgstr "Ustawi&enia Drukarki" +msgstr "Ustawi&enia drukarki" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1621 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1750 msgid "Printable" msgstr "Do druku" -#: src/slic3r/GUI/Plater.cpp:819 +#: src/slic3r/GUI/Plater.cpp:694 msgid "Printer" msgstr "Drukarka" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:53 src/slic3r/GUI/Preset.cpp:1525 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:53 src/libslic3r/Preset.cpp:1304 msgid "printer" msgstr "drukarka" -#: src/libslic3r/PrintConfig.cpp:2439 src/libslic3r/PrintConfig.cpp:2440 +#: src/libslic3r/PrintConfig.cpp:2582 src/libslic3r/PrintConfig.cpp:2583 msgid "Printer absolute correction" msgstr "Korekcje bezwzględne drukarki" -#: src/libslic3r/PrintConfig.cpp:2456 src/libslic3r/PrintConfig.cpp:2457 +#: src/libslic3r/PrintConfig.cpp:2599 src/libslic3r/PrintConfig.cpp:2600 msgid "Printer gamma correction" msgstr "Korekcja gamma drukarki" -#: src/slic3r/GUI/Tab.cpp:976 +#: src/slic3r/GUI/Tab.cpp:1294 msgid "printer model" msgstr "model drukarki" -#: src/libslic3r/PrintConfig.cpp:1472 +#: src/libslic3r/PrintConfig.cpp:1580 msgid "Printer notes" msgstr "Notatki o drukarce" -#: src/libslic3r/PrintConfig.cpp:2431 src/libslic3r/PrintConfig.cpp:2432 -#: src/libslic3r/PrintConfig.cpp:2433 +#: src/libslic3r/PrintConfig.cpp:144 +msgid "Printer preset name" +msgstr "Nazwa zestawu ustawień drukarki" + +#: src/libslic3r/PrintConfig.cpp:2574 src/libslic3r/PrintConfig.cpp:2575 +#: src/libslic3r/PrintConfig.cpp:2576 msgid "Printer scaling correction" msgstr "Korekcja skalowania drukarki" -#: src/slic3r/GUI/Tab.hpp:391 +#: src/slic3r/GUI/Tab.hpp:453 msgid "Printer Settings" msgstr "Ustawienia Drukarki" +#: src/slic3r/GUI/GLCanvas3D.cpp:4305 src/slic3r/GUI/GLCanvas3D.cpp:4941 +msgid "Printer Settings Tab" +msgstr "Ustawienia drukarki" + #: src/libslic3r/PrintConfig.cpp:43 src/libslic3r/PrintConfig.cpp:44 msgid "Printer technology" msgstr "Technologia druku" -#: src/libslic3r/PrintConfig.cpp:1466 +#: src/libslic3r/PrintConfig.cpp:1574 msgid "Printer type" msgstr "Rodzaj drukarki" -#: src/libslic3r/PrintConfig.cpp:1487 +#: src/libslic3r/PrintConfig.cpp:1595 msgid "Printer variant" msgstr "Wariant drukarki" -#: src/libslic3r/PrintConfig.cpp:1481 +#: src/libslic3r/PrintConfig.cpp:1589 msgid "Printer vendor" msgstr "Dostawca drukarki" -#: src/libslic3r/Print.cpp:1388 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:476 +msgid "Printer with name \"%1%\" already exists." +msgstr "Drukarka o nazwie \"%1%\" już istnieje." + +#: src/slic3r/GUI/ConfigWizard.cpp:587 +msgid "Printer:" +msgstr "Drukarka:" + +#: src/libslic3r/Print.cpp:1414 msgid "Printing with multiple extruders of differing nozzle diameters. If support is to be printed with the current extruder (support_material_extruder == 0 or support_material_interface_extruder == 0), all nozzles have to be of the same diameter." msgstr "Druk ekstruderami o różnych średnicach dysz. Jeśli podpory mają być drukowane obecnie ustawionym ekstruderem (support_material_extruder == 0 lub support_material_interface_extruder == 0) to wszystkie dysze muszą mieć taką samą średnicę." #. TRN "Processing input_file_basename" -#: src/slic3r/GUI/MainFrame.cpp:849 +#: src/slic3r/GUI/MainFrame.cpp:1550 #, c-format msgid "Processing %s" msgstr "Przetwarzanie %s" -#: src/slic3r/GUI/Plater.cpp:2283 -#, c-format -msgid "Processing input file %s" -msgstr "Przetwarzanie pliku wejściowego %s" - -#: src/libslic3r/PrintObject.cpp:108 +#: src/libslic3r/PrintObject.cpp:114 msgid "Processing triangulated mesh" msgstr "Przetwarzanie siatki trójkątów" -#: src/slic3r/GUI/Tab.cpp:1259 src/slic3r/GUI/Tab.cpp:1549 -#: src/slic3r/GUI/Tab.cpp:2020 src/slic3r/GUI/Tab.cpp:2136 -#: src/slic3r/GUI/Tab.cpp:3544 src/slic3r/GUI/Tab.cpp:3672 +#: src/slic3r/GUI/Tab.cpp:1589 src/slic3r/GUI/Tab.cpp:1896 +#: src/slic3r/GUI/Tab.cpp:2229 src/slic3r/GUI/Tab.cpp:2305 +#: src/slic3r/GUI/Tab.cpp:3960 src/slic3r/GUI/Tab.cpp:4091 msgid "Profile dependencies" msgstr "Zależności profilowe" -#: src/slic3r/GUI/ConfigWizard.cpp:566 +#: src/slic3r/GUI/ConfigWizard.cpp:590 msgid "Profile:" msgstr "Profil:" -#: src/slic3r/GUI/PrintHostDialogs.cpp:150 +#: src/slic3r/GUI/PrintHostDialogs.cpp:148 msgid "Progress" msgstr "Postęp" @@ -5651,23 +6566,35 @@ msgstr "Postęp" msgid "Progress:" msgstr "Postęp:" -#: src/slic3r/GUI/MainFrame.cpp:684 +#: src/slic3r/GUI/MainFrame.cpp:909 src/slic3r/GUI/MainFrame.cpp:1308 msgid "Prusa 3D &Drivers" msgstr "Sterowniki Prusa 3&D" -#: src/slic3r/GUI/ConfigWizard.cpp:1995 +#: src/slic3r/GUI/ConfigWizard.cpp:2506 msgid "Prusa FFF Technology Printers" msgstr "Drukarki Prusa w technologii FFF" -#: src/slic3r/GUI/ConfigWizard.cpp:1998 +#: src/slic3r/GUI/ConfigWizard.cpp:2509 msgid "Prusa MSLA Technology Printers" msgstr "Drukarki Prusa w technologii MSLA" -#: src/slic3r/GUI/AboutDialog.cpp:260 -msgid "PrusaSlicer is based on Slic3r by Alessandro Ranellucci and the RepRap community." -msgstr "PrusaSlicer bazuje na projekcie Slic3r autorstwa Alessandro Ranelucciego i społeczności RepRap." +#: src/slic3r/Utils/Http.cpp:78 +msgid "PrusaSlicer detected system SSL certificate store in: %1%" +msgstr "PrusaSlicer wykrył systemowy magazyn certyfikatów SSL w: %1%" -#: src/slic3r/GUI/GLCanvas3DManager.cpp:284 +#: src/slic3r/GUI/GUI_Init.cpp:85 src/slic3r/GUI/GUI_Init.cpp:88 +msgid "PrusaSlicer GUI initialization failed" +msgstr "Niepowodzenie inicjalizacji PrusaSlicer GUI" + +#: src/slic3r/GUI/AboutDialog.cpp:285 +msgid "PrusaSlicer is based on Slic3r by Alessandro Ranellucci and the RepRap community." +msgstr "PrusaSlicer bazuje na projekcie Slic3r autorstwa Alessandro Ranellucciego i społeczności RepRap." + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:525 +msgid "PrusaSlicer is closing: Unsaved Changes" +msgstr "Zamykanie PrusaSlicer: niezapisane zmiany" + +#: src/slic3r/GUI/OpenGLManager.cpp:259 #, c-format msgid "" "PrusaSlicer requires OpenGL 2.0 capable graphics driver to run correctly, \n" @@ -5680,7 +6607,11 @@ msgstr "" msgid "PrusaSlicer version" msgstr "wersja PrusaSlicer" -#: src/slic3r/GUI/ConfigWizard.cpp:815 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:662 +msgid "PrusaSlicer will remember your action." +msgstr "PrusaSlicer zapamięta tą czynność." + +#: src/slic3r/GUI/ConfigWizard.cpp:1174 msgid "" "PrusaSlicer's user interfaces comes in three variants:\n" "Simple, Advanced, and Expert.\n" @@ -5690,64 +6621,80 @@ msgstr "" "Prosty, Zaawansowany i Ekspercki.\n" "Tryb Prosty wyświetla tylko najczęściej używane ustawienia potrzebne w codziennym druku 3D. Pozostałe dwa oferują coraz większe możliwości konfiguracji i są przeznaczone odpowiednio dla użytkowników zaawansowanych i ekspertów." -#: src/libslic3r/PrintConfig.cpp:2254 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:668 +msgid "PrusaSlicer: Don't ask me again" +msgstr "PrusaSlicer: nie pytaj ponownie" + +#: src/libslic3r/PrintConfig.cpp:2397 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 "Czyszczenie po zmianie filamentu następować wewnątrz wypełnienia tego modelu. Obniża to ilość zużywanego materiału, jednak może skutkować wydłużeniem czasu druku przez dodatkowe ruchy jałowe." -#: src/slic3r/GUI/Plater.cpp:544 +#: src/slic3r/GUI/Plater.cpp:410 msgid "Purging volumes" msgstr "Objętości czyszczenia" -#: src/libslic3r/PrintConfig.cpp:2207 +#: src/libslic3r/PrintConfig.cpp:2350 msgid "Purging volumes - load/unload volumes" msgstr "Objętość czyszczenia - objętość ładowania/rozładowania" -#: src/libslic3r/PrintConfig.cpp:2214 +#: src/libslic3r/PrintConfig.cpp:2357 msgid "Purging volumes - matrix" msgstr "Objętości czyszczenia - formuła" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:44 +#: src/libslic3r/PrintConfig.cpp:1201 +msgid "Purpose of Machine Limits" +msgstr "Cel limitów maszynowych" + +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:43 msgid "Quality" msgstr "Jakość" -#: src/slic3r/GUI/Tab.cpp:1080 +#: src/slic3r/GUI/Tab.cpp:1402 msgid "Quality (slower slicing)" msgstr "Jakość (wolniejsze cięcie)" -#: src/slic3r/GUI/GLCanvas3D.cpp:273 +#: src/slic3r/GUI/GLCanvas3D.cpp:260 msgid "Quality / Speed" msgstr "Jakość / Prędkość" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1182 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1530 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1536 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1849 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:61 +msgid "Quick" +msgstr "Szybka" + +#: 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 #, c-format msgid "Quick Add Settings (%s)" -msgstr "Szybkie Dodanie Ustawień (%s)" +msgstr "Szybkie dodanie ustawień (%s)" -#: src/slic3r/GUI/MainFrame.cpp:512 +#: src/slic3r/GUI/MainFrame.cpp:1113 msgid "Quick Slice" msgstr "Szybkie Cięcie" -#: src/slic3r/GUI/MainFrame.cpp:518 +#: src/slic3r/GUI/MainFrame.cpp:1119 msgid "Quick Slice and Save As" msgstr "Szybkie cięcie i Zapis jako" -#: src/slic3r/GUI/MainFrame.cpp:540 +#: src/slic3r/GUI/MainFrame.cpp:1144 src/slic3r/GUI/MainFrame.cpp:1402 #, c-format msgid "Quit %s" msgstr "Wyjście z %s" -#: src/slic3r/GUI/GLCanvas3D.cpp:294 src/libslic3r/PrintConfig.cpp:511 +#: src/slic3r/GUI/GUI_App.cpp:396 +msgid "Quit, I will move my data now" +msgstr "Zamknij, przeniosę teraz swoje dane" + +#: src/slic3r/GUI/GLCanvas3D.cpp:280 src/libslic3r/PrintConfig.cpp:547 msgid "Radius" msgstr "Promień" -#: src/slic3r/GUI/Tab.cpp:1127 +#: src/slic3r/GUI/Tab.cpp:1456 msgid "Raft" msgstr "Tratwa (raft)" -#: src/libslic3r/PrintConfig.cpp:1501 +#: src/libslic3r/PrintConfig.cpp:1609 msgid "Raft layers" msgstr "Warstwy tratwy" @@ -5761,7 +6708,7 @@ msgid "" "\n" "This is an expert-level setting, incorrect adjustment will likely lead to jams, extruder wheel grinding into filament etc." msgstr "" -"Wyciskanie oznacza szybką ekstruzję bezpośrednio przed zmianą narzędzia w drukarce typu MultiMaterial z jednym ekstruderem (narzędzie w tym przypadku oznacza filament). Jego zadaniem jest odpowiednie ukształtowanie końcówki rozładowywanego filamentu, aby jego ponowne załadowanie mogło odbyć się bez przeszkód. Ta faza procesu zmiany filamentu jest bardzo ważna a różne filamenty mogą potrzebować różnej prędkości wyciskania aby uzyskać odpowiedni kształt końcówki. Z tego powodu można edytować jego parametry.\n" +"Wyciskanie oznacza szybką ekstruzję bezpośrednio przed zmianą narzędzia w drukarce typu MultiMaterial z jednym ekstruderem (narzędzie w tym przypadku oznacza filament). Jego zadaniem jest odpowiednie ukształtowanie końcówki rozładowywanego filamentu, aby jego ponowne załadowanie mogło odbyć się bez przeszkód. Ta faza procesu zmiany filamentu jest bardzo ważna, a różne filamenty mogą potrzebować różnej prędkości wyciskania aby uzyskać odpowiedni kształt końcówki. Z tego powodu można edytować jego parametry.\n" "\n" "To jest ustawienie dla zaawansowanych użytkowników. Nieprawidłowe wartości mogą powodować blokady, ścieranie filamentu przez radełko itp." @@ -5773,27 +6720,27 @@ msgstr "Rozstaw linii wyciskania" msgid "Ramming line width" msgstr "Szerokość linii wyciskania" -#: src/libslic3r/PrintConfig.cpp:694 +#: src/libslic3r/PrintConfig.cpp:730 msgid "Ramming parameters" msgstr "Parametry wyciskania" -#: src/slic3r/GUI/Tab.cpp:1505 +#: src/slic3r/GUI/Tab.cpp:1850 msgid "Ramming settings" msgstr "Ustawienia wyciskania" -#: src/libslic3r/PrintConfig.cpp:1629 +#: src/libslic3r/PrintConfig.cpp:1737 msgid "Random" msgstr "Dowolny" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:94 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:96 msgid "Range" msgstr "Zakres" -#: src/libslic3r/SLAPrintSteps.cpp:65 +#: src/libslic3r/SLAPrintSteps.cpp:66 msgid "Rasterizing layers" msgstr "Rasteryzowanie warstw" -#: src/slic3r/GUI/MainFrame.cpp:596 +#: src/slic3r/GUI/MainFrame.cpp:1202 msgid "Re&load from disk" msgstr "Wczytaj ponownie z d&ysku" @@ -5805,58 +6752,59 @@ msgstr "Ponowna konfiguracja" msgid "Ready" msgstr "Gotowe" -#: src/slic3r/GUI/Plater.cpp:3115 +#: src/slic3r/GUI/Plater.cpp:2915 msgid "Ready to slice" msgstr "Gotowość do cięcia" -#: src/slic3r/GUI/MainFrame.cpp:669 src/libslic3r/PrintConfig.cpp:1632 +#: src/slic3r/GUI/MainFrame.cpp:966 src/slic3r/GUI/MainFrame.cpp:1286 +#: src/libslic3r/PrintConfig.cpp:1740 msgid "Rear" msgstr "Tył" -#: src/slic3r/GUI/MainFrame.cpp:669 +#: src/slic3r/GUI/MainFrame.cpp:966 src/slic3r/GUI/MainFrame.cpp:1286 msgid "Rear View" msgstr "Widok z tyłu" -#: src/slic3r/GUI/MainFrame.cpp:413 +#: src/slic3r/GUI/MainFrame.cpp:994 msgid "Recent projects" msgstr "Ostatni&e projekty" -#: src/slic3r/GUI/PresetHints.cpp:263 +#: src/slic3r/GUI/PresetHints.cpp:262 #, c-format msgid "Recommended object thin wall thickness for layer height %.2f and" msgstr "Zalecana grubość ściany modelu dla wysokości warstwy %.2f i" -#: src/slic3r/GUI/PresetHints.cpp:274 +#: src/slic3r/GUI/PresetHints.cpp:273 msgid "Recommended object thin wall thickness: Not available due to excessively small extrusion width." msgstr "Zalecana grubość ścian dla modelu: niedostępna ze względu na zbyt małą szerokość ścieżki." -#: src/slic3r/GUI/PresetHints.cpp:247 +#: src/slic3r/GUI/PresetHints.cpp:246 msgid "Recommended object thin wall thickness: Not available due to invalid layer height." msgstr "Zalecana grubość ścian dla modelu: niedostępna ze względu na niewłaściwą wysokość warstwy." -#: src/slic3r/GUI/GUI_App.cpp:450 src/slic3r/GUI/GUI_App.cpp:459 +#: src/slic3r/GUI/GUI_App.cpp:1102 src/slic3r/GUI/GUI_App.cpp:1115 msgid "Recreating" msgstr "Odtwarzanie" -#: src/slic3r/GUI/BedShapeDialog.cpp:73 +#: src/slic3r/GUI/BedShapeDialog.cpp:141 msgid "Rectangular" msgstr "Prostokątny" -#: src/libslic3r/PrintConfig.cpp:425 src/libslic3r/PrintConfig.cpp:843 -#: src/libslic3r/PrintConfig.cpp:2009 +#: src/libslic3r/PrintConfig.cpp:460 src/libslic3r/PrintConfig.cpp:881 +#: src/libslic3r/PrintConfig.cpp:2151 msgid "Rectilinear" msgstr "Linie równoległe" -#: src/libslic3r/PrintConfig.cpp:2010 +#: src/libslic3r/PrintConfig.cpp:2152 msgid "Rectilinear grid" msgstr "Linie równoległe - kratka" -#: src/slic3r/GUI/GLCanvas3D.cpp:4657 src/slic3r/GUI/KBShortcutsDialog.cpp:131 -#: src/slic3r/GUI/MainFrame.cpp:584 +#: src/slic3r/GUI/GLCanvas3D.cpp:5067 src/slic3r/GUI/KBShortcutsDialog.cpp:126 +#: src/slic3r/GUI/MainFrame.cpp:1190 msgid "Redo" msgstr "Powtórz" -#: src/slic3r/GUI/GLCanvas3D.cpp:4065 +#: src/slic3r/GUI/GLCanvas3D.cpp:4382 #, c-format msgid "Redo %1$d Action" msgid_plural "Redo %1$d Actions" @@ -5865,152 +6813,184 @@ msgstr[1] "Powtórz %1$d akcje" msgstr[2] "Powtórz %1$d akcji" msgstr[3] "Powtórz %1$d akcji" -#: src/slic3r/GUI/GLCanvas3D.cpp:4047 +#: src/slic3r/GUI/GLCanvas3D.cpp:4361 msgid "Redo History" msgstr "Historia Powtórzeń" -#: src/slic3r/GUI/Tab.cpp:1098 +#: src/slic3r/GUI/Tab.cpp:1426 msgid "Reducing printing time" msgstr "Obniżanie czasu wydruku" -#: src/slic3r/GUI/Plater.cpp:3452 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:327 +msgid "Refresh Printers" +msgstr "Odśwież drukarki" + +#: src/libslic3r/PrintConfig.cpp:145 +msgid "Related printer preset name" +msgstr "Nazwa powiązanego zestawu ustawień drukarki" + +#: src/slic3r/GUI/Plater.cpp:3257 msgid "Reload all from disk" msgstr "Wczytaj ponownie wszystko z dysku" -#: src/slic3r/GUI/ConfigWizard.cpp:798 src/slic3r/GUI/GUI_ObjectList.cpp:1664 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3956 src/slic3r/GUI/Plater.cpp:3225 -#: src/slic3r/GUI/Plater.cpp:3934 src/slic3r/GUI/Plater.cpp:3963 +#: src/slic3r/GUI/ConfigWizard.cpp:1157 src/slic3r/GUI/GUI_ObjectList.cpp:1793 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4439 src/slic3r/GUI/Plater.cpp:3028 +#: src/slic3r/GUI/Plater.cpp:3852 src/slic3r/GUI/Plater.cpp:3881 msgid "Reload from disk" msgstr "Wczytaj ponownie z dysku" -#: src/slic3r/GUI/Plater.cpp:3339 +#: src/slic3r/GUI/Plater.cpp:3142 msgid "Reload from:" msgstr "Wczytaj z:" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:134 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:129 msgid "Reload plater from disk" msgstr "Przeładuj wirtualny stół z dysku" -#: src/slic3r/GUI/MainFrame.cpp:597 +#: src/slic3r/GUI/MainFrame.cpp:1203 msgid "Reload the plater from disk" msgstr "Przeładuj wirtualny stół z dysku" -#: src/slic3r/GUI/Plater.cpp:3963 +#: src/slic3r/GUI/Plater.cpp:3881 msgid "Reload the selected object from disk" msgstr "Wczytaj wybrany model ponownie z dysku" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1664 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3956 src/slic3r/GUI/Plater.cpp:3934 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1793 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4439 src/slic3r/GUI/Plater.cpp:3852 msgid "Reload the selected volumes from disk" msgstr "Wczytaj wybrane kształty ponownie z dysku" -#: src/slic3r/GUI/Preferences.cpp:39 +#: src/slic3r/GUI/GCodeViewer.cpp:2442 src/slic3r/GUI/GCodeViewer.cpp:2445 +msgid "Remaining time" +msgstr "Pozostały czas" + +#: src/slic3r/GUI/GUI_App.cpp:720 src/slic3r/GUI/UnsavedChangesDialog.cpp:653 +msgid "Remember my choice" +msgstr "Zapamiętaj mój wybór" + +#: src/slic3r/GUI/Preferences.cpp:52 msgid "Remember output directory" msgstr "Zapamiętaj katalog wyjściowy" -#: src/slic3r/GUI/Tab.cpp:3121 +#: src/slic3r/GUI/MainFrame.cpp:166 +msgid "Remember to check for updates at https://github.com/prusa3d/PrusaSlicer/releases" +msgstr "Pamiętaj, aby sprawdzać aktualizacje na https://github.com/prusa3d/PrusaSlicer/releases" + +#: src/slic3r/GUI/Tab.cpp:3386 msgid "remove" msgstr "usuń" -#: src/slic3r/GUI/BedShapeDialog.cpp:190 src/slic3r/GUI/BedShapeDialog.cpp:269 -#: src/slic3r/GUI/Tab.cpp:3124 +#: src/slic3r/GUI/BedShapeDialog.cpp:333 src/slic3r/GUI/BedShapeDialog.cpp:413 +#: src/slic3r/GUI/Tab.cpp:3423 msgid "Remove" msgstr "Usuń" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:48 msgid "Remove all holes" msgstr "Usuń wszystkie otwory" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:51 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:50 msgid "Remove all points" msgstr "Usuń wszystkie punkty" -#: src/slic3r/GUI/GLCanvas3D.cpp:246 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:52 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:35 +msgid "Remove all selection" +msgstr "Usuń całe zaznaczenie" + +#: src/slic3r/GUI/GLCanvas3D.cpp:239 msgid "Remove detail" msgstr "Niższa szczegółowość" -#: src/slic3r/GUI/Plater.cpp:879 -msgid "Remove device" -msgstr "Odłącz urządzenie" - #: src/slic3r/GUI/ExtruderSequenceDialog.cpp:182 msgid "Remove extruder from sequence" msgstr "Usuń ekstruder z sekwencji" -#: src/slic3r/GUI/GLCanvas3D.cpp:4537 src/slic3r/GUI/Plater.cpp:3942 +#: src/slic3r/GUI/GLCanvas3D.cpp:4903 src/slic3r/GUI/Plater.cpp:3860 msgid "Remove instance" msgstr "Usuń instancję" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:160 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:154 msgid "Remove Instance of the selected object" msgstr "Usuń instancję zaznaczonego modelu" -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:153 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:161 msgid "Remove layer range" msgstr "Usuń zakres warstw" -#: src/slic3r/GUI/Plater.cpp:3942 +#: src/slic3r/GUI/Plater.cpp:3860 msgid "Remove one instance of the selected object" msgstr "Usuń jedną instancję zaznaczonego modelu" -#: src/slic3r/GUI/GUI_ObjectSettings.cpp:95 +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:98 msgid "Remove parameter" msgstr "Usuń parametr" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1364 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1211 msgid "Remove point" msgstr "Usuń punkt" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1367 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1214 msgid "Remove point from selection" msgstr "Usuń punkt z zaznaczenia" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:47 msgid "Remove selected holes" msgstr "Usuń zaznaczone otwory" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:50 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1371 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1218 msgid "Remove selected points" msgstr "Usuń zaznaczone punkty" -#: src/slic3r/GUI/Plater.cpp:3931 src/slic3r/GUI/Plater.cpp:3953 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:51 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:34 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:368 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:378 +msgid "Remove selection" +msgstr "Usuń zaznaczenie" + +#: src/slic3r/GUI/Plater.cpp:3849 src/slic3r/GUI/Plater.cpp:3871 msgid "Remove the selected object" msgstr "Usuń wybrany model" -#: src/slic3r/GUI/ConfigWizard.cpp:453 +#: src/slic3r/GUI/ConfigWizard.cpp:456 msgid "Remove user profiles (a snapshot will be taken beforehand)" msgstr "Usuń profile użytkownika (zostanie wykonany zrzut)" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1636 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1765 msgid "Rename" msgstr "Zmień nazwę" -#: src/slic3r/GUI/GUI_ObjectList.cpp:551 +#: src/slic3r/GUI/GUI_ObjectList.cpp:589 msgid "Rename Object" msgstr "Zmień Nazwę Modelu" -#: src/slic3r/GUI/GUI_ObjectList.cpp:551 +#: src/slic3r/GUI/GUI_ObjectList.cpp:589 msgid "Rename Sub-object" msgstr "Zmień Nazwę Modelu Podrzędnego" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3803 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4266 msgid "Renaming" msgstr "Zmiana nazwy" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:115 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:150 msgid "Renaming of the G-code after copying to the selected destination folder has failed. Current path is %1%.tmp. Please try exporting again." msgstr "Niepowodzenie zmiany nazwy pliku G-code po skopiowaniu do folderu docelowego. Obecna ścieżka to %1%.tmp. Spróbuj wyeksportować G-code ponownie." -#: src/libslic3r/PrintConfig.cpp:3515 +#: src/slic3r/GUI/Preferences.cpp:255 +msgid "Render" +msgstr "Render" + +#: src/libslic3r/PrintConfig.cpp:3720 msgid "Render with a software renderer" msgstr "Renderuj programowo" -#: src/libslic3r/PrintConfig.cpp:3516 +#: src/libslic3r/PrintConfig.cpp:3721 msgid "Render with a software renderer. The bundled MESA software renderer is loaded instead of the default OpenGL driver." msgstr "Renderowanie software'owe. Dołączony silnik MESA zostanie użyty zamiast domyślnego OpenGL." -#: src/slic3r/GUI/MainFrame.cpp:911 src/libslic3r/PrintConfig.cpp:3447 +#: src/slic3r/GUI/MainFrame.cpp:1612 src/libslic3r/PrintConfig.cpp:3646 msgid "Repair" msgstr "Naprawa" @@ -6034,38 +7014,38 @@ msgstr "Naprawiony plik 3MF nie zawiera żadnej objętości" msgid "Repairing model by the Netfabb service" msgstr "Naprawianie modelu przez usługę Netfabb" -#: src/slic3r/GUI/MainFrame.cpp:524 +#: src/slic3r/GUI/MainFrame.cpp:1125 msgid "Repeat last quick slice" msgstr "Powtórz ostatnie szybkie cięcie" -#: src/slic3r/GUI/MainFrame.cpp:524 +#: src/slic3r/GUI/MainFrame.cpp:1125 msgid "Repeat Last Quick Slice" msgstr "Powtórz Ostatnie Szybkie Cięcie" -#: src/slic3r/GUI/Tab.cpp:3083 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:477 msgid "Replace?" msgstr "Zamienić?" -#: src/slic3r/GUI/MainFrame.cpp:703 +#: src/slic3r/GUI/MainFrame.cpp:928 src/slic3r/GUI/MainFrame.cpp:1327 msgid "Report an I&ssue" msgstr "Zgło&szenie problemu" -#: src/slic3r/GUI/MainFrame.cpp:703 +#: src/slic3r/GUI/MainFrame.cpp:928 src/slic3r/GUI/MainFrame.cpp:1327 #, c-format msgid "Report an issue on %s" msgstr "Zgłoś problem z %s" -#: src/slic3r/Utils/PresetUpdater.cpp:713 +#: src/slic3r/Utils/PresetUpdater.cpp:733 #, c-format msgid "requires max. %s" msgstr "wymaga max %s" -#: src/slic3r/Utils/PresetUpdater.cpp:710 +#: src/slic3r/Utils/PresetUpdater.cpp:730 #, c-format msgid "requires min. %s" msgstr "wymaga min. %s" -#: src/slic3r/Utils/PresetUpdater.cpp:705 +#: src/slic3r/Utils/PresetUpdater.cpp:726 #, c-format msgid "requires min. %s and max. %s" msgstr "wymaga min. %s i max. %s" @@ -6074,270 +7054,300 @@ msgstr "wymaga min. %s i max. %s" msgid "Rescan" msgstr "Skanuj ponownie" -#: src/slic3r/GUI/Tab.cpp:1906 -msgid "Rescan serial ports" -msgstr "Przeskanuj porty szeregowe" - -#: src/slic3r/GUI/GLCanvas3D.cpp:313 +#: src/slic3r/GUI/GLCanvas3D.cpp:299 msgid "Reset" msgstr "Reset" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1373 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1220 msgid "Reset clipping plane" msgstr "Reset płaszczyzny przecinania" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:51 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:59 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:43 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:50 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:26 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:58 msgid "Reset direction" msgstr "Reset kierunku" -#: src/slic3r/GUI/Plater.cpp:2723 +#: src/slic3r/GUI/Plater.cpp:2684 msgid "Reset Project" msgstr "Resetuj Projekt" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:363 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:372 msgid "Reset rotation" msgstr "Resetuj obrót" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:385 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:394 msgid "Reset Rotation" msgstr "Resetuj Obrót" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:397 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:399 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:407 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:409 msgid "Reset scale" msgstr "Resetuj skalę" -#: src/slic3r/GUI/GLCanvas3D.cpp:252 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:136 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:118 +msgid "Reset selection" +msgstr "Reset zaznaczenia" + +#: src/slic3r/GUI/GLCanvas3D.cpp:243 msgid "Reset to base" msgstr "Resetuj do bazowego ust" -#: src/slic3r/GUI/Tab.cpp:2394 +#: src/slic3r/GUI/Tab.cpp:2564 msgid "Reset to Filament Color" msgstr "Zresetuj do koloru filamentu" -#: src/libslic3r/PrintConfig.cpp:1511 +#: src/libslic3r/PrintConfig.cpp:1619 msgid "Resolution" msgstr "Rozdzielczość" -#: src/libslic3r/PrintConfig.cpp:1529 +#: src/libslic3r/PrintConfig.cpp:1637 msgid "Retract amount before wipe" msgstr "Długość retrakcji przed ruchem czyszczącym" -#: src/libslic3r/PrintConfig.cpp:1537 +#: src/libslic3r/PrintConfig.cpp:1645 msgid "Retract on layer change" msgstr "Retrakcja przy zmianie warstwy" -#: src/slic3r/GUI/Tab.cpp:1324 src/slic3r/GUI/Tab.cpp:1383 -#: src/slic3r/GUI/Tab.cpp:2370 +#: src/slic3r/GUI/GCodeViewer.cpp:2494 src/slic3r/GUI/Tab.cpp:1670 +#: src/slic3r/GUI/Tab.cpp:2539 msgid "Retraction" msgstr "Retrakcja" -#: src/libslic3r/PrintConfig.cpp:1523 +#: src/libslic3r/PrintConfig.cpp:1631 msgid "Retraction is not triggered when travel moves are shorter than this length." msgstr "Retrakcja nie zostanie wykonana przy ruchu jałowym krótszym niż ta wartość." -#: src/libslic3r/PrintConfig.cpp:1544 +#: src/libslic3r/PrintConfig.cpp:1652 msgid "Retraction Length" msgstr "Długość retrakcji" -#: src/libslic3r/PrintConfig.cpp:1552 +#: src/libslic3r/PrintConfig.cpp:1660 msgid "Retraction Length (Toolchange)" msgstr "Długość Retrakcji (zmiana narzędzia)" -#: src/libslic3r/PrintConfig.cpp:1604 src/libslic3r/PrintConfig.cpp:1605 +#: src/libslic3r/PrintConfig.cpp:1712 src/libslic3r/PrintConfig.cpp:1713 msgid "Retraction Speed" msgstr "Prędkość retrakcji" -#: src/slic3r/GUI/Tab.cpp:2386 +#: src/slic3r/GUI/Tab.cpp:2555 msgid "Retraction when tool is disabled (advanced settings for multi-extruder setups)" msgstr "Retrakcja gdy dany ekstruder nie jest w użyciu (funkcja zaawansowana dla drukarek z kilkoma ekstruderami)" -#: src/slic3r/GUI/GUI_Preview.cpp:254 +#: src/slic3r/GUI/GCodeViewer.cpp:2528 src/slic3r/GUI/GUI_Preview.cpp:336 +#: src/slic3r/GUI/GUI_Preview.cpp:1472 msgid "Retractions" msgstr "Retrakcje" -#: src/slic3r/GUI/MainFrame.cpp:673 +#: src/slic3r/GUI/Preferences.cpp:198 +msgid "Reverse direction of zoom with mouse wheel" +msgstr "Odwróć kierunek zoomu kółkiem myszy" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1861 src/slic3r/GUI/Plater.cpp:4886 +msgid "Revert conversion from imperial units" +msgstr "Odwróć konwersję z jednostek imperialnych" + +#: src/slic3r/GUI/MainFrame.cpp:970 src/slic3r/GUI/MainFrame.cpp:1290 msgid "Right" msgstr "Prawo" -#: src/slic3r/GUI/GUI_ObjectList.cpp:402 +#: src/slic3r/GUI/GUI_ObjectList.cpp:449 msgid "Right button click the icon to change the object printable property" msgstr "Kliknij na ikonę prawym przyciskiem, aby włączyć/wyłączyć drukowanie modelu" -#: src/slic3r/GUI/GUI_ObjectList.cpp:396 +#: src/slic3r/GUI/GUI_ObjectList.cpp:443 msgid "Right button click the icon to change the object settings" msgstr "Kliknij na ikonę prawym przyciskiem, aby zmienić ustawienia modelu" -#: src/slic3r/GUI/GUI_ObjectList.cpp:359 +#: src/slic3r/GUI/GUI_ObjectList.cpp:406 msgid "Right button click the icon to fix STL through Netfabb" msgstr "Kliknij prawym przyciskiem myszy na ikonę, aby naprawić plik STL przez serwis Netfabb" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1364 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1211 msgid "Right click" msgstr "Prawy przycisk" -#: src/slic3r/GUI/GLCanvas3D.cpp:243 -msgid "Right mouse button:" -msgstr "Prawy przycisk myszki:" +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:31 +msgid "Right mouse button" +msgstr "Prawy przycisk myszy" -#: src/slic3r/GUI/MainFrame.cpp:673 +#: src/slic3r/GUI/GLCanvas3D.cpp:237 +msgid "Right mouse button:" +msgstr "Prawy przycisk myszy:" + +#: src/slic3r/GUI/MainFrame.cpp:970 src/slic3r/GUI/MainFrame.cpp:1290 msgid "Right View" msgstr "Widok prawy" -#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:449 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:480 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:499 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:517 -#: src/libslic3r/PrintConfig.cpp:3451 +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:513 +#: 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:3650 msgid "Rotate" msgstr "Obróć" -#: src/libslic3r/PrintConfig.cpp:3456 +#: src/libslic3r/PrintConfig.cpp:3655 msgid "Rotate around X" msgstr "Obróć wokół osi X" -#: src/libslic3r/PrintConfig.cpp:3461 +#: src/libslic3r/PrintConfig.cpp:3660 msgid "Rotate around Y" msgstr "Obróć wokół osi Y" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:170 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:172 msgid "Rotate lower part upwards" msgstr "Obróć dolną część do góry nogami" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:170 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 msgid "Rotate selection 45 degrees CCW" msgstr "Obróć zaznaczone o 45 stopni w lewo" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:171 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 msgid "Rotate selection 45 degrees CW" msgstr "Obróć zaznaczone o 45 stopni w prawo" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:216 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:458 -#: src/slic3r/GUI/Mouse3DController.cpp:304 -#: src/slic3r/GUI/Mouse3DController.cpp:321 +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:210 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:224 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:506 +#: src/slic3r/GUI/Mouse3DController.cpp:288 +#: src/slic3r/GUI/Mouse3DController.cpp:309 msgid "Rotation" msgstr "Obrót" -#: src/libslic3r/PrintConfig.cpp:3457 +#: src/libslic3r/PrintConfig.cpp:3656 msgid "Rotation angle around the X axis in degrees." msgstr "Kąt obrotu w stopniach wokół osi X." -#: src/libslic3r/PrintConfig.cpp:3462 +#: src/libslic3r/PrintConfig.cpp:3661 msgid "Rotation angle around the Y axis in degrees." msgstr "Kąt obrotu w stopniach wokół osi Y." -#: src/libslic3r/PrintConfig.cpp:3452 +#: src/libslic3r/PrintConfig.cpp:3651 msgid "Rotation angle around the Z axis in degrees." msgstr "Kąt obrotu w stopniach wokół osi Z." -#: src/slic3r/GUI/GUI_App.cpp:797 +#: src/slic3r/GUI/GUI_App.cpp:1474 #, c-format msgid "Run %s" msgstr "Uruchom %s" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:128 -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:478 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:163 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:520 msgid "Running post-processing scripts" msgstr "Wykonywanie skryptów przetwarzania końcowego (post-processing)" #: src/slic3r/GUI/RammingChart.cpp:76 src/slic3r/GUI/WipeTowerDialog.cpp:83 -#: src/libslic3r/PrintConfig.cpp:644 src/libslic3r/PrintConfig.cpp:688 -#: src/libslic3r/PrintConfig.cpp:703 src/libslic3r/PrintConfig.cpp:2408 -#: src/libslic3r/PrintConfig.cpp:2417 src/libslic3r/PrintConfig.cpp:2527 -#: src/libslic3r/PrintConfig.cpp:2535 src/libslic3r/PrintConfig.cpp:2543 -#: src/libslic3r/PrintConfig.cpp:2550 src/libslic3r/PrintConfig.cpp:2558 -#: src/libslic3r/PrintConfig.cpp:2566 +#: src/libslic3r/PrintConfig.cpp:680 src/libslic3r/PrintConfig.cpp:724 +#: src/libslic3r/PrintConfig.cpp:739 src/libslic3r/PrintConfig.cpp:2551 +#: src/libslic3r/PrintConfig.cpp:2560 src/libslic3r/PrintConfig.cpp:2670 +#: src/libslic3r/PrintConfig.cpp:2678 src/libslic3r/PrintConfig.cpp:2686 +#: src/libslic3r/PrintConfig.cpp:2693 src/libslic3r/PrintConfig.cpp:2701 +#: src/libslic3r/PrintConfig.cpp:2709 msgid "s" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:481 src/slic3r/GUI/MainFrame.cpp:750 +#: src/slic3r/GUI/MainFrame.cpp:1072 src/slic3r/GUI/MainFrame.cpp:1449 msgid "S&end G-code" msgstr "Wyślij G-cod&e" -#: src/slic3r/GUI/MainFrame.cpp:750 +#: src/slic3r/GUI/MainFrame.cpp:1449 msgid "S&end to print" msgstr "W&yślij do druku" -#. TRN Preset -#: src/slic3r/GUI/Tab.cpp:3417 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:642 +msgid "Save" +msgstr "Zapisz" + +#: src/slic3r/GUI/SavePresetDialog.cpp:72 #, c-format msgid "Save %s as:" msgstr "Zapisz %s jako:" -#: src/slic3r/GUI/MainFrame.cpp:826 +#: src/slic3r/GUI/MainFrame.cpp:1527 #, c-format msgid "Save %s file as:" msgstr "Zapisz plik %s jako:" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1046 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:912 msgid "Save changes?" msgstr "Zapisać zmiany?" -#: src/libslic3r/PrintConfig.cpp:3386 +#: src/libslic3r/PrintConfig.cpp:3585 msgid "Save config file" msgstr "Zapisz plik konfiguracyjny" -#: src/slic3r/GUI/MainFrame.cpp:925 +#: src/slic3r/GUI/MainFrame.cpp:1626 msgid "Save configuration as:" msgstr "Zapisz konfigurację jako:" -#: src/libslic3r/PrintConfig.cpp:3387 +#: src/libslic3r/PrintConfig.cpp:3586 msgid "Save configuration to the specified file." msgstr "Zapisz konfigurację jako wskazany plik." #. TRN "Save current Settings" -#: src/slic3r/GUI/Tab.cpp:133 +#: src/slic3r/GUI/Tab.cpp:203 #, c-format msgid "Save current %s" msgstr "Zapisz bieżące %s" -#: src/slic3r/GUI/MainFrame.cpp:446 +#: src/slic3r/GUI/MainFrame.cpp:1028 msgid "Save current project file" msgstr "Zapisz obecny projekt" -#: src/slic3r/GUI/MainFrame.cpp:450 src/slic3r/GUI/MainFrame.cpp:452 +#: src/slic3r/GUI/MainFrame.cpp:1032 src/slic3r/GUI/MainFrame.cpp:1034 msgid "Save current project file as" msgstr "Zapisz obecny projekt jako" -#: src/slic3r/GUI/Plater.cpp:2604 +#: src/slic3r/GUI/Plater.cpp:2566 msgid "Save file as:" msgstr "Zapisz plik jako:" -#: src/slic3r/GUI/Plater.cpp:4839 +#: src/slic3r/GUI/Plater.cpp:4975 msgid "Save G-code file as:" msgstr "Zapisz plik G-code jako:" -#: src/slic3r/GUI/MainFrame.cpp:899 +#: src/slic3r/GUI/MainFrame.cpp:1600 msgid "Save OBJ file (less prone to coordinate errors than STL) as:" msgstr "Zapisz plik OBJ (mniej podatny na błędy współrzędnych niż STL) jako:" -#: src/slic3r/GUI/Tab.hpp:443 +#: src/slic3r/GUI/SavePresetDialog.cpp:190 +#: src/slic3r/GUI/SavePresetDialog.cpp:196 msgid "Save preset" msgstr "Zapisz zestaw ustawień" -#: src/slic3r/GUI/MainFrame.cpp:980 +#: src/slic3r/GUI/MainFrame.cpp:1681 msgid "Save presets bundle as:" msgstr "Zapisz paczkę ustawień jako:" -#: src/slic3r/GUI/MainFrame.cpp:450 src/slic3r/GUI/MainFrame.cpp:452 +#: src/slic3r/GUI/MainFrame.cpp:1032 src/slic3r/GUI/MainFrame.cpp:1034 msgid "Save Project &as" msgstr "Zapisz Projekt j&ako" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:114 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:107 msgid "Save project (3mf)" msgstr "Zapisz Projekt (3mf)" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:115 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:108 msgid "Save project as (3mf)" msgstr "Zapisz Projekt jako (3mf)" -#: src/slic3r/GUI/Plater.cpp:4839 +#: src/slic3r/GUI/Plater.cpp:4975 msgid "Save SL1 file as:" msgstr "Zapisz plik SL1 jako:" -#: src/slic3r/GUI/MainFrame.cpp:838 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:744 +msgid "Save the selected options to preset \"%1%\"." +msgstr "Zapisz wybrane opcje w zestawie ustawień \"%1%\"." + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:740 +msgid "Save the selected options." +msgstr "Zapisz wybrane opcje." + +#: src/slic3r/GUI/MainFrame.cpp:1539 msgid "Save zip file as:" msgstr "Zapisz plik .zip jako:" @@ -6347,159 +7357,184 @@ msgstr "Zapisz plik .zip jako:" msgid "Saving mesh into the 3MF container failed." msgstr "Niepowodzenie zapisywania siatki jako 3MF." -#: src/slic3r/GUI/Gizmos/GLGizmoScale.cpp:47 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:230 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:500 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:518 -#: src/libslic3r/PrintConfig.cpp:3466 +#: src/slic3r/GUI/Gizmos/GLGizmoScale.cpp:78 +#: 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:3665 msgid "Scale" msgstr "Skaluj" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:459 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:507 msgid "Scale factors" msgstr "Współczynnik skalowania" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:196 -msgid "" -"Scale selection to fit print volume\n" -"in Gizmo scale" -msgstr "" -"Skaluj zaznaczenie do wielkości przestrzeni roboczej\n" -"w skalowaniu z uchwytem" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1724 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1852 msgid "Scale the selected object to fit the print volume" msgstr "Skaluj wybrany model, aby zmieścił się w przestrzeni roboczej" -#: src/libslic3r/PrintConfig.cpp:3475 +#: src/libslic3r/PrintConfig.cpp:3674 msgid "Scale to Fit" msgstr "Skaluj, aby dopasować" -#: src/slic3r/GUI/Selection.cpp:939 +#: src/slic3r/GUI/Selection.cpp:988 msgid "Scale To Fit" -msgstr "Skaluj aby zmieścić" +msgstr "Skaluj, aby zmieścić" -#: src/libslic3r/PrintConfig.cpp:3476 +#: src/libslic3r/PrintConfig.cpp:3675 msgid "Scale to fit the given volume." msgstr "Skaluj, aby wypełnić zadaną objętość." -#: src/slic3r/GUI/GUI_ObjectList.cpp:1724 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1852 msgid "Scale to print volume" msgstr "Skaluj do obszaru roboczego" -#: src/libslic3r/PrintConfig.cpp:3467 +#: src/libslic3r/PrintConfig.cpp:3666 msgid "Scaling factor or percentage." msgstr "Współczynnik lub procent skalowania." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:505 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:545 msgid "Scheduling upload to `%1%`. See Window -> Print Host Upload Queue" msgstr "Ustawianie harmonogramu przesyłania do `%1%`. Zobacz okno -> Kolejka serwera druku" -#: src/libslic3r/PrintConfig.cpp:1621 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:46 +msgid "Seam painting" +msgstr "Malowanie szwu" + +#: src/libslic3r/PrintConfig.cpp:1729 msgid "Seam position" msgstr "Pozycja szwu" -#: src/libslic3r/PrintConfig.cpp:1642 +#: src/libslic3r/PrintConfig.cpp:1750 msgid "Seam preferred direction" msgstr "Preferowany kierunek szwu" -#: src/libslic3r/PrintConfig.cpp:1651 +#: src/libslic3r/PrintConfig.cpp:1759 msgid "Seam preferred direction jitter" msgstr "Kierunek jitter wyznaczany przez szew" +#: src/slic3r/GUI/MainFrame.cpp:1207 +msgid "Searc&h" +msgstr "Szu&kaj" + +#: src/slic3r/GUI/GLCanvas3D.cpp:4402 src/slic3r/GUI/GLCanvas3D.cpp:4957 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:130 src/slic3r/GUI/Search.cpp:426 +msgid "Search" +msgstr "Szukaj" + +#: src/slic3r/GUI/ImGuiWrapper.cpp:803 src/slic3r/GUI/Search.cpp:460 +msgid "Search in English" +msgstr "Szukaj po angielsku" + +#: src/slic3r/GUI/MainFrame.cpp:1216 +msgid "Search in settings" +msgstr "Szukaj w ustawieniach" + +#: src/slic3r/GUI/Tab.cpp:222 +msgid "Search in settings [%1%]" +msgstr "Szukaj w ustawieniach [%1%]" + #: src/slic3r/GUI/BonjourDialog.cpp:218 msgid "Searching for devices" msgstr "Wyszukiwanie urządzeń" -#: src/slic3r/GUI/Plater.cpp:2858 +#: src/slic3r/GUI/Jobs/RotoptimizeJob.cpp:41 msgid "Searching for optimal orientation" msgstr "Wyszukiwanie optymalnej orientacji" -#: src/slic3r/GUI/GUI_App.cpp:1103 +#: src/slic3r/GUI/NotificationManager.hpp:321 +msgid "See more." +msgstr "Zobacz więcej." + +#: src/slic3r/GUI/NotificationManager.hpp:322 +msgid "See Releases page." +msgstr "Zobacz stronę z wydaniami (\"Releases\")." + +#: src/slic3r/GUI/GUI_App.cpp:1895 msgid "Select a gcode file:" msgstr "Wybierz plik gcode:" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:126 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:121 msgid "Select all objects" msgstr "Zaznacz wszystkie modele" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1370 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1217 msgid "Select all points" msgstr "Zaznacz wszystkie punkty" -#: src/slic3r/GUI/ConfigWizard.cpp:1976 +#: src/slic3r/GUI/ConfigWizard.cpp:2487 msgid "Select all standard printers" msgstr "Zaznacz wszystkie podstawowe drukarki" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1368 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1215 msgid "Select by rectangle" msgstr "Zaznaczenie prostokątem" -#: src/slic3r/GUI/MainFrame.cpp:944 src/slic3r/GUI/MainFrame.cpp:1006 +#: src/slic3r/GUI/MainFrame.cpp:1645 src/slic3r/GUI/MainFrame.cpp:1707 msgid "Select configuration to load:" msgstr "Wybierz konfigurację do wczytania:" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:82 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:88 msgid "Select coordinate space, in which the transformation will be performed." msgstr "Wybierz płaszczyznę, w której ma nastąpić przekształcenie." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3971 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4458 msgid "Select extruder number:" msgstr "Wybierz numer ekstrudera:" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:138 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:134 msgid "Select Filament Settings Tab" -msgstr "Wybierz Zakładkę Ustawień Filamentu" +msgstr "Wybierz ustawienia filamentu" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:136 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:132 msgid "Select Plater Tab" msgstr "Wybierz Zakładkę Podglądu Stołu" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:137 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:133 msgid "Select Print Settings Tab" -msgstr "Wybierz Zakładkę Ustawień Druku" +msgstr "Wybierz ustawienia druku" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:139 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:135 msgid "Select Printer Settings Tab" -msgstr "Wybierz Zakładkę Ustawień Drukarki" +msgstr "Wybierz ustawienia drukarki" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1265 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1396 msgid "Select showing settings" msgstr "Wybierz widok ustawień" -#: src/slic3r/GUI/GUI_App.cpp:629 +#: src/slic3r/GUI/GUI_App.cpp:1295 msgid "Select the language" msgstr "Wybierz język" -#: src/slic3r/GUI/Tab.cpp:57 +#: src/slic3r/GUI/Tab.cpp:108 msgid "Select the print profiles this profile is compatible with." msgstr "Wybierz profile druku, z którymi kompatybilny jest ten profil." -#: src/slic3r/GUI/Tab.cpp:51 +#: src/slic3r/GUI/Tab.cpp:102 msgid "Select the printers this profile is compatible with." msgstr "Wybierz drukarki kompatybilne z tym profilem." -#: src/slic3r/GUI/MainFrame.cpp:889 +#: src/slic3r/GUI/MainFrame.cpp:1590 msgid "Select the STL file to repair:" msgstr "Wybierz plik STL do naprawy:" -#: src/slic3r/GUI/Preferences.cpp:237 +#: src/slic3r/GUI/Preferences.cpp:391 msgid "Select toolbar icon size in respect to the default one." msgstr "Wybierz rozmiar ikon w odniesieniu do domyślnego." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3553 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4016 msgid "Select type of part" msgstr "Wybierz rodzaj części" -#: src/slic3r/GUI/Plater.cpp:638 +#: src/slic3r/GUI/Plater.cpp:504 msgid "Select what kind of pad do you need" msgstr "Wybierz rodzaj wymaganej podkładki" -#: src/slic3r/GUI/Plater.cpp:498 +#: src/slic3r/GUI/Plater.cpp:364 msgid "Select what kind of support do you need" msgstr "Wybierz rodzaj potrzebnych podpór" -#: src/slic3r/GUI/DoubleSlider.cpp:1917 +#: src/slic3r/GUI/DoubleSlider.cpp:2135 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" @@ -6509,59 +7544,59 @@ msgstr "" "NIE, jeśli chcesz przełączyć zmiany narzędzi na zmiany koloru lub\n" "ANULUJ, aby pozostawić bez zmian." -#: src/slic3r/GUI/Selection.cpp:146 +#: src/slic3r/GUI/Selection.cpp:191 msgid "Selection-Add" msgstr "Zaznaczenie-Dodaj" -#: src/slic3r/GUI/Selection.cpp:376 +#: src/slic3r/GUI/Selection.cpp:421 msgid "Selection-Add All" msgstr "Zaznaczenie-Dodaj wszystko" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3299 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3762 msgid "Selection-Add from list" msgstr "Zaznaczenie-Dodaj z listy" -#: src/slic3r/GUI/GLCanvas3D.cpp:6598 +#: src/slic3r/GUI/GLCanvas3D.cpp:7193 msgid "Selection-Add from rectangle" msgstr "Zaznaczenie-Dodaj z prostokąta" -#: src/slic3r/GUI/Selection.cpp:256 +#: src/slic3r/GUI/Selection.cpp:301 msgid "Selection-Add Instance" msgstr "Zaznaczenie-Dodaj instancję" -#: src/slic3r/GUI/Selection.cpp:219 +#: src/slic3r/GUI/Selection.cpp:264 msgid "Selection-Add Object" msgstr "Zaznaczenie-Dodaj Model" -#: src/slic3r/GUI/Selection.cpp:187 +#: src/slic3r/GUI/Selection.cpp:232 msgid "Selection-Remove" msgstr "Zaznaczenie-Usuń" -#: src/slic3r/GUI/Selection.cpp:402 +#: src/slic3r/GUI/Selection.cpp:447 msgid "Selection-Remove All" msgstr "Zaznaczenie-Usuń Wszystko" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3291 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3754 msgid "Selection-Remove from list" msgstr "Zaznaczenie-Usunięcie z listy" -#: src/slic3r/GUI/GLCanvas3D.cpp:6617 +#: src/slic3r/GUI/GLCanvas3D.cpp:7212 msgid "Selection-Remove from rectangle" msgstr "Zaznaczenie-Usuń z prostokąta" -#: src/slic3r/GUI/Selection.cpp:275 +#: src/slic3r/GUI/Selection.cpp:320 msgid "Selection-Remove Instance" msgstr "Zaznaczenie-Usuń kopię" -#: src/slic3r/GUI/Selection.cpp:238 +#: src/slic3r/GUI/Selection.cpp:283 msgid "Selection-Remove Object" msgstr "Zaznaczenie-Usuń model" -#: src/slic3r/GUI/MainFrame.cpp:566 +#: src/slic3r/GUI/MainFrame.cpp:1172 msgid "Selects all objects" msgstr "Zaznacza wszystkie modele" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:123 src/slic3r/GUI/Plater.cpp:5522 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:116 src/slic3r/GUI/Plater.cpp:5707 msgid "Send G-code" msgstr "Wyślij G-code" @@ -6569,29 +7604,29 @@ msgstr "Wyślij G-code" msgid "Send G-Code to printer host" msgstr "Wyślij G-code do serwera druku" -#: src/slic3r/GUI/MainFrame.cpp:481 +#: src/slic3r/GUI/MainFrame.cpp:1072 msgid "Send to print current plate as G-code" msgstr "Wyślij zawartość stołu do druku jako G-code" -#: src/slic3r/GUI/Plater.cpp:878 src/slic3r/GUI/Plater.cpp:5522 +#: src/slic3r/GUI/Plater.cpp:753 src/slic3r/GUI/Plater.cpp:5707 msgid "Send to printer" msgstr "Wyślij do drukarki" -#: src/slic3r/GUI/GLCanvas3D.cpp:1305 +#: src/slic3r/GUI/GLCanvas3D.cpp:1312 msgid "Seq." msgstr "Sekw." -#: src/slic3r/GUI/Tab.cpp:1231 +#: src/slic3r/GUI/Tab.cpp:1561 msgid "Sequential printing" msgstr "Drukowanie sekwencyjne (model po modelu)" -#: src/slic3r/GUI/Tab.cpp:1901 src/libslic3r/PrintConfig.cpp:1661 -msgid "Serial port" -msgstr "Port szeregowy" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:235 +msgid "Sequential Slider" +msgstr "Suwak sekwencyjny" -#: src/libslic3r/PrintConfig.cpp:1669 -msgid "Serial port speed" -msgstr "Szybkość portu szeregowego" +#: src/slic3r/GUI/Preferences.cpp:230 +msgid "Sequential slider applied only to top layer" +msgstr "Suwak sekwencyjny stosowany tylko do górnej warstwy" #: src/slic3r/GUI/FirmwareDialog.cpp:807 msgid "Serial port:" @@ -6601,17 +7636,16 @@ msgstr "Port szeregowy:" msgid "Service name" msgstr "Nazwa usługi" -#: src/slic3r/GUI/Tab.cpp:1802 src/slic3r/GUI/Tab.cpp:2046 -#: src/slic3r/GUI/Tab.cpp:3176 +#: src/slic3r/GUI/Tab.cpp:3509 src/slic3r/GUI/Tab.cpp:3588 msgid "Set" msgstr "Ustaw" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1599 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1611 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1728 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1740 msgid "Set as a Separated Object" msgstr "Ustaw jako osobny model" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1611 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1740 msgid "Set as a Separated Objects" msgstr "Ustaw jako Osobne Modele" @@ -6619,7 +7653,7 @@ msgstr "Ustaw jako Osobne Modele" msgid "Set extruder change for every" msgstr "Ustaw zmianę ekstrudera dla każdej" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1671 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1800 msgid "Set extruder for selected items" msgstr "Ustaw ekstruder dla wybranych elementów" @@ -6627,7 +7661,7 @@ msgstr "Ustaw ekstruder dla wybranych elementów" msgid "Set extruder sequence" msgstr "Ustaw sekwencję ekstruderów" -#: src/slic3r/GUI/DoubleSlider.cpp:1532 +#: src/slic3r/GUI/DoubleSlider.cpp:1728 msgid "Set extruder sequence for the entire print" msgstr "Ustaw sekwencję ekstruderów dla całego wydruku" @@ -6635,84 +7669,84 @@ msgstr "Ustaw sekwencję ekstruderów dla całego wydruku" msgid "Set extruder(tool) sequence" msgstr "Ustaw sekwencję ekstruderów (narzędzi)" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:217 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:218 msgid "Set lower thumb to current slider thumb" msgstr "Ustaw punkt zmiany koloru na poziomie dolnego suwaka" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:297 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:305 msgid "Set Mirror" msgstr "Ustaw Odbicie" -#: src/slic3r/GUI/Plater.cpp:3944 +#: src/slic3r/GUI/Plater.cpp:3862 msgid "Set number of instances" msgstr "Ustaw liczbę kopii" -#: src/slic3r/GUI/Plater.cpp:4756 +#: src/slic3r/GUI/Plater.cpp:4860 #, c-format msgid "Set numbers of copies to %d" msgstr "Ustaw ilość instancji na %d" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:781 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:828 msgid "Set Orientation" msgstr "Ustaw Orientację" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:750 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:797 msgid "Set Position" msgstr "Ustaw Pozycję" -#: src/slic3r/GUI/GUI_ObjectList.cpp:4094 src/slic3r/GUI/Selection.cpp:1474 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4581 src/slic3r/GUI/Selection.cpp:1513 msgid "Set Printable" msgstr "Zaznacz do drukowania" -#: src/slic3r/GUI/Selection.cpp:1475 +#: src/slic3r/GUI/Selection.cpp:1515 msgid "Set Printable Instance" msgstr "Włącz drukowanie kopii" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:846 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:893 msgid "Set Scale" msgstr "Ustaw Skalę" -#: src/libslic3r/PrintConfig.cpp:2393 +#: src/libslic3r/PrintConfig.cpp:2536 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 "Ustaw właściwą orientację ekranu LCD wewnątrz drukarki SLA. Tryb portretowy spowoduje zamianę parametrów szerokości i wysokości a obrazek wyjściowy będzie obrócony o 90 stopni." -#: src/slic3r/GUI/ConfigWizard.cpp:932 +#: src/slic3r/GUI/ConfigWizard.cpp:1298 msgid "Set the shape of your printer's bed." msgstr "Ustaw kształt stołu roboczego drukarki." -#: src/libslic3r/PrintConfig.cpp:556 +#: 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 "Ustaw tą wartość jako niezerową aby pozwolić na ręczne ustawienie szerokości ekstrudowanej linii. Jeśli ustawisz zero, Slic3r obliczy szerokość ekstruzji na podstawie średnicy dyszy (zobacz wskazówki dla szerokości ekstruzji obrysów, wypełnienia itp). Jeśli ustawisz wartość procentową (np. 230%) to zostanie obliczona z wysokości warstwy." +msgstr "Ustaw tą wartość jako niezerową, aby pozwolić na ręczne ustawienie szerokości ekstrudowanej linii. Jeśli ustawisz zero, PrusaSlicer obliczy szerokość ekstruzji na podstawie średnicy dyszy (zobacz wskazówki dla szerokości ekstruzji obrysów, wypełnienia itp). Jeśli ustawisz wartość procentową (np. 230%) to zostanie obliczona z wysokości warstwy." -#: src/libslic3r/PrintConfig.cpp:448 +#: 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." -msgstr "Ustaw tą wartość jako niezerową aby pozwolić na ręczne ustawienie szerokości ekstruzji obrysów zewnętrznych. Jeśli ustawisz zero, szerokość będzie miała wartość domyślną, czyli 1.125x średnicy dyszy. Jeśli ustawisz wartość procentową (np. 200%) to zostanie obliczona z wysokości warstwy." +msgstr "Ustaw tą wartość jako niezerową, aby pozwolić na ręczne ustawienie szerokości ekstruzji obrysów zewnętrznych. Jeśli ustawisz zero, szerokość będzie miała wartość domyślną, czyli 1.125x średnicy dyszy. Jeśli ustawisz wartość procentową (np. 200%) to zostanie obliczona z wysokości warstwy." -#: src/libslic3r/PrintConfig.cpp:878 +#: 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 "Ustaw tą wartość jako niezerową aby pozwolić na ręczne ustawienie szerokości ekstruzji pierwszej warstwy. Dzięki tej funkcji możesz wymusić grubsze linie dla lepszej przyczepności. Jeśli ustawisz wartość procentową (np. 120%) to będzie oliczona z wysokości pierwszej warstwy. Ustaw zero dla wartości domyślnej." +msgstr "Ustaw tą wartość jako niezerową, aby pozwolić na ręczne ustawienie szerokości ekstruzji pierwszej warstwy. Dzięki tej funkcji możesz wymusić grubsze linie dla lepszej przyczepności. Jeśli ustawisz wartość procentową (np. 120%), to będzie obliczona z wysokości pierwszej warstwy. Ustaw zero dla wartości domyślnej." -#: src/libslic3r/PrintConfig.cpp:1758 +#: 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." -msgstr "Ustaw tą wartość jako niezerową aby pozwolić na ręczne ustawienie szerokości ekstruzji wypełnienia powierzchni zwartych. Jeśli ustawisz zero, szerokość będzie miała wartość domyślną, czyli 1.125x średnicy dyszy. Jeśli ustawisz wartość procentową (np. 90%) to zostanie obliczona z wysokości warstwy." +msgstr "Ustaw tą wartość jako niezerową, aby pozwolić na ręczne ustawienie szerokości ekstruzji wypełnienia powierzchni zwartych. Jeśli ustawisz zero, szerokość będzie miała wartość domyślną, czyli 1.125x średnicy dyszy. Jeśli ustawisz wartość procentową (np. 90%), to zostanie obliczona z wysokości warstwy." -#: src/libslic3r/PrintConfig.cpp:2107 +#: src/libslic3r/PrintConfig.cpp:2250 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 regions and get a smoother finish. If left zero, default extrusion width will be used if set, otherwise nozzle diameter will be used. If expressed as percentage (for example 90%) it will be computed over layer height." -msgstr "Ustaw tą wartość jako niezerową aby pozwolić na ręczne ustawienie szerokości ekstruzji zwartego wypełnienia górnych warstw. Możesz ustawić mniejszą szerokość aby wypełnić szczeliny i uzyskać gładsze wykończenie. Jeśli ustawisz zero, szerokość będzie miała wartość domyślną, czyli będzie równa średnicy dyszy. Jeśli ustawisz wartość procentową (np. 90%) to zostanie obliczona z wysokości warstwy." +msgstr "Ustaw tą wartość jako niezerową, aby pozwolić na ręczne ustawienie szerokości ekstruzji zwartego wypełnienia górnych warstw. Możesz ustawić mniejszą szerokość, aby wypełnić szczeliny i uzyskać gładsze wykończenie. Jeśli ustawisz zero, szerokość będzie miała wartość domyślną, czyli będzie równa średnicy dyszy. Jeśli ustawisz wartość procentową (np. 90%), to zostanie obliczona z wysokości warstwy." -#: src/libslic3r/PrintConfig.cpp:1011 +#: 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 "Ustaw tą wartość jako niezerową aby pozwolić na ręczne ustawienie szerokości ekstruzji wypełnienia. Jeśli ustawisz zero to szerokość będzie miała wartość domyślną, czyli 1.125x średnicy dyszy. Możesz ustawić większą szerokość aby przyspieszyć druk wypełnienia i zwiększyć wytrzymałość wydruków. Jeśli ustawisz wartość procentową (np. 90%) to zostanie obliczona z wysokości warstwy." +msgstr "Ustaw tą wartość jako niezerową, aby pozwolić na ręczne ustawienie szerokości ekstruzji wypełnienia. Jeśli ustawisz zero, to szerokość będzie miała wartość domyślną, czyli 1.125x średnicy dyszy. Możesz ustawić większą szerokość, aby przyspieszyć druk wypełnienia i zwiększyć wytrzymałość wydruków. Jeśli ustawisz wartość procentową (np. 90%), to zostanie obliczona z wysokości warstwy." -#: src/libslic3r/PrintConfig.cpp:1419 +#: 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." -msgstr "Ustaw tą wartość jako niezerową aby pozwolić na ręczne ustawienie szerokości ekstruzji obrysów. Możesz ustawić większą szerokość aby uzyskać dokładniejsze wykończenie powierzchni. Jeśli ustawisz zero to szerokość będzie miała wartość domyślną, czyli 1.125x średnicy dyszy. Jeśli ustawisz wartość procentową (np. 200%) to zostanie obliczona z wysokości warstwy." +msgstr "Ustaw tą wartość jako niezerową, aby pozwolić na ręczne ustawienie szerokości ekstruzji obrysów. Możesz ustawić większą szerokość, aby uzyskać dokładniejsze wykończenie powierzchni. Jeśli ustawisz zero to szerokość będzie miała wartość domyślną, czyli 1.125x średnicy dyszy. Jeśli ustawisz wartość procentową (np. 200%), to zostanie obliczona z wysokości warstwy." -#: src/libslic3r/PrintConfig.cpp:1948 +#: src/libslic3r/PrintConfig.cpp:2090 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, otherwise nozzle diameter will be used. If expressed as percentage (for example 90%) it will be computed over layer height." -msgstr "Ustaw tą wartość jako niezerową aby pozwolić na ręczne ustawienie szerokości ekstruzji materiału podporowego. Jeśli ustawisz zero to szerokość będzie miała wartość domyślną, czyli będzie równa średnicy dyszy. Jeśli ustawisz wartość procentową (np. 90%) to zostanie obliczona z wysokości warstwy." +msgstr "Ustaw tą wartość jako niezerową, aby pozwolić na ręczne ustawienie szerokości ekstruzji materiału podporowego. Jeśli ustawisz zero, to szerokość będzie miała wartość domyślną, czyli będzie równa średnicy dyszy. Jeśli ustawisz wartość procentową (np. 90%), to zostanie obliczona z wysokości warstwy." -#: src/libslic3r/PrintConfig.cpp:512 +#: src/libslic3r/PrintConfig.cpp:548 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 "Określa promień okręgu opisanego na całym zespole ekstrudera (matematycznie - wyobraź sobie, że chcesz narysować okrąg opisany na zespole ekstrudera patrząc na niego z góry). Jeśli sam ekstruder nie jest dokładnie na środku, użyj największego promienia. Ta wartość jest używana do wykrywania możliwych kolizji z wydrukowanymi modelami i jako graficzna reprezentacja na wirtualnym stole." @@ -6720,23 +7754,23 @@ msgstr "Określa promień okręgu opisanego na całym zespole ekstrudera (matema msgid "Set this to the maximum height that can be reached by your extruder while printing." msgstr "Ustaw tutaj maksymalną wysokość, jaką może osiągnąć Twój ekstruder podczas drukowania." -#: src/libslic3r/PrintConfig.cpp:501 +#: src/libslic3r/PrintConfig.cpp:537 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 cylinder around your extruder, and it represents the maximum depth the extruder can peek before colliding with other printed objects." -msgstr "Określa pionową odległość końcówki dyszy od (zazwyczaj) prętów osi X. Inaczej mówiąc (matematycznie), jest to wysokość cylindra opisanego na zespole ekstrudera i określa maksymalną głębokość, na którą może opuścić się ekstruder aby nie uderzyć w obiekt znajdujący się bezpośrednio pod prętami osi X." +msgstr "Określa pionową odległość końcówki dyszy od (zazwyczaj) prętów osi X. Inaczej mówiąc (matematycznie), jest to wysokość cylindra opisanego na zespole ekstrudera i określa maksymalną głębokość, na którą może opuścić się ekstruder, aby nie uderzyć w obiekt znajdujący się bezpośrednio pod prętami osi X." -#: src/slic3r/GUI/GUI_ObjectList.cpp:4094 src/slic3r/GUI/Selection.cpp:1474 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4581 src/slic3r/GUI/Selection.cpp:1513 msgid "Set Unprintable" msgstr "Zaznacz do ignorowania przy drukowaniu" -#: src/slic3r/GUI/Selection.cpp:1475 +#: src/slic3r/GUI/Selection.cpp:1515 msgid "Set Unprintable Instance" msgstr "Ignoruj drukowanie kopii" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:217 msgid "Set upper thumb to current slider thumb" msgstr "Ustaw punkt zmiany koloru na poziomie górnego suwaka" -#: src/libslic3r/PrintConfig.cpp:3509 +#: src/libslic3r/PrintConfig.cpp:3714 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." @@ -6744,63 +7778,74 @@ msgstr "" "Ustawia czułość logowania. 0:krytyczne, 1:błędy, 2:ostrzeżenia, 3:info, 4:debug, 5:trace\n" "Np: loglevel=2 loguje krytyczne, błędy i ostrzeżenia." -#: src/slic3r/GUI/BedShapeDialog.cpp:155 +#: src/slic3r/GUI/BedShapeDialog.cpp:292 src/slic3r/GUI/MainFrame.cpp:1969 msgid "Settings" msgstr "Ustawienia" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2507 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2899 msgid "Settings for height range" msgstr "Ustawienie zakresu wysokości" -#: src/slic3r/GUI/ConfigManipulation.cpp:162 +#: src/slic3r/GUI/Preferences.cpp:431 +msgid "Settings in non-modal window" +msgstr "Ustawienia w osobnym okienku" + +#: src/slic3r/GUI/ConfigManipulation.cpp:161 msgid "Shall I adjust those settings for supports?" msgstr "Czy chcesz zmienić te ustawienia dla podpór?" -#: src/slic3r/GUI/ConfigManipulation.cpp:89 +#: src/slic3r/GUI/ConfigManipulation.cpp:88 msgid "Shall I adjust those settings in order to enable Spiral Vase?" msgstr "Czy chcesz zmienić te ustawienia, aby włączyć tryb wazy?" -#: src/slic3r/GUI/ConfigManipulation.cpp:119 +#: src/slic3r/GUI/ConfigManipulation.cpp:118 msgid "Shall I adjust those settings in order to enable the Wipe Tower?" msgstr "Czy chcesz zmienić te ustawienia, aby włączyć wieżę czyszczącą?" -#: src/slic3r/GUI/ConfigManipulation.cpp:210 +#: src/slic3r/GUI/ConfigManipulation.cpp:209 msgid "Shall I switch to rectilinear fill pattern?" msgstr "Czy chcesz zmienić wzór wypełnienia na linie równoległe?" -#: src/slic3r/GUI/ConfigManipulation.cpp:139 +#: src/slic3r/GUI/ConfigManipulation.cpp:138 msgid "Shall I synchronize support layers in order to enable the Wipe Tower?" msgstr "Czy chcesz zsynchronizować warstwy podporowe, aby włączyć wieżę czyszczącą?" -#: src/slic3r/GUI/BedShapeDialog.cpp:66 src/slic3r/GUI/GUI_ObjectList.cpp:2059 +#: src/slic3r/GUI/BedShapeDialog.cpp:156 src/slic3r/GUI/BedShapeDialog.cpp:222 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2215 msgid "Shape" msgstr "Kształt" -#: src/slic3r/GUI/GUI_Preview.cpp:256 +#: src/slic3r/GUI/GUI_Preview.cpp:338 src/slic3r/GUI/GUI_Preview.cpp:1478 msgid "Shells" msgstr "Powłoki" -#: src/slic3r/GUI/GLCanvas3D.cpp:249 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:50 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:33 +msgid "Shift + Left mouse button" +msgstr "Shift + lewy przycisk myszy" + +#: src/slic3r/GUI/GLCanvas3D.cpp:241 msgid "Shift + Left mouse button:" -msgstr "Shift + lewy przycisk myszki:" +msgstr "Shift + lewy przycisk myszy:" -#: src/slic3r/GUI/GLCanvas3D.cpp:255 +#: src/slic3r/GUI/GLCanvas3D.cpp:245 msgid "Shift + Right mouse button:" -msgstr "Shift + Prawy przycisk myszki:" +msgstr "Shift + Prawy przycisk myszy:" -#: src/slic3r/GUI/GUI_Preview.cpp:231 +#: src/slic3r/GUI/GUI_Preview.cpp:286 src/slic3r/GUI/GUI_Preview.cpp:288 msgid "Show" msgstr "Pokaż" -#: src/slic3r/GUI/MainFrame.cpp:701 +#: src/slic3r/GUI/MainFrame.cpp:926 src/slic3r/GUI/MainFrame.cpp:1325 msgid "Show &Configuration Folder" msgstr "Pokaż folder Konfigura&cyjny" -#: src/slic3r/GUI/MainFrame.cpp:676 +#: src/slic3r/GUI/MainFrame.cpp:1294 msgid "Show &labels" msgstr "Pokaż &etykiety" -#: src/slic3r/GUI/MainFrame.cpp:705 +#: src/slic3r/GUI/MainFrame.cpp:933 src/slic3r/GUI/MainFrame.cpp:937 +#: src/slic3r/GUI/MainFrame.cpp:1329 msgid "Show about dialog" msgstr "Pokaż okienko" @@ -6808,111 +7853,127 @@ msgstr "Pokaż okienko" msgid "Show advanced settings" msgstr "Pokaż ustawienia zaawansowane" -#: src/slic3r/GUI/PrintHostDialogs.cpp:159 +#: src/slic3r/GUI/PrintHostDialogs.cpp:157 msgid "Show error message" msgstr "Pokaż komunikat błędu" -#: src/slic3r/GUI/Preferences.cpp:95 +#: src/slic3r/GUI/Preferences.cpp:112 msgid "Show incompatible print and filament presets" msgstr "Pokaż niekompatybilne ustawienia druku i filamentów" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:151 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:145 msgid "Show keyboard shortcuts list" msgstr "Pokaż listę skrótów klawiszowych" -#: src/slic3r/GUI/MainFrame.cpp:676 +#: src/slic3r/GUI/GCodeViewer.cpp:2591 +msgid "Show normal mode" +msgstr "Pokaż tryb normalny" + +#: src/slic3r/GUI/MainFrame.cpp:1294 msgid "Show object/instance labels in 3D scene" msgstr "Pokaż etykiety modelu/kopii w widoku edycji 3D" +#: src/slic3r/GUI/Preferences.cpp:213 +msgid "Show sidebar collapse/expand button" +msgstr "Pokaż przycisk zwijania/rozwijania bocznego panelu" + #: src/slic3r/GUI/WipeTowerDialog.cpp:377 msgid "Show simplified settings" msgstr "Pokaż ustawienia uproszczone" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:52 +#: src/slic3r/GUI/Preferences.cpp:169 src/slic3r/GUI/Preferences.cpp:171 +msgid "Show splash screen" +msgstr "Pokaż ekran startowy" + +#: src/slic3r/GUI/GCodeViewer.cpp:2586 +msgid "Show stealth mode" +msgstr "Pokaż dla trybu stealth" + +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:51 msgid "Show supports" msgstr "Pokaż podpory" -#: src/slic3r/GUI/MainFrame.cpp:699 +#: src/slic3r/GUI/MainFrame.cpp:924 src/slic3r/GUI/MainFrame.cpp:1323 msgid "Show system information" msgstr "Pokaż informacje o systemie" -#: src/slic3r/GUI/MainFrame.cpp:626 +#: src/slic3r/GUI/MainFrame.cpp:1234 msgid "Show the 3D editing view" msgstr "Pokaż widok edycji 3D" -#: src/slic3r/GUI/MainFrame.cpp:629 +#: src/slic3r/GUI/MainFrame.cpp:1237 msgid "Show the 3D slices preview" msgstr "Pokaż podgląd cięcia 3D" -#: src/slic3r/GUI/MainFrame.cpp:617 +#: src/slic3r/GUI/MainFrame.cpp:1224 msgid "Show the filament settings" msgstr "Pokaż ustawienia filamentu" -#: src/libslic3r/PrintConfig.cpp:3372 +#: src/libslic3r/PrintConfig.cpp:3571 msgid "Show the full list of print/G-code configuration options." msgstr "Pokaż pełną listę opcji konfiguracji druku/G-code." -#: src/libslic3r/PrintConfig.cpp:3377 +#: src/libslic3r/PrintConfig.cpp:3576 msgid "Show the full list of SLA print configuration options." msgstr "Pokaż pełną listę opcji konfiguracji druku SLA." -#: src/slic3r/GUI/MainFrame.cpp:708 +#: src/slic3r/GUI/MainFrame.cpp:941 src/slic3r/GUI/MainFrame.cpp:1332 msgid "Show the list of the keyboard shortcuts" msgstr "Pokaż listę skrótów klawiszowych" -#: src/slic3r/GUI/MainFrame.cpp:606 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "Show the plater" msgstr "Pokaż zawartość stołu" -#: src/slic3r/GUI/MainFrame.cpp:614 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "Show the print settings" msgstr "Pokaż ustawienia druku" -#: src/slic3r/GUI/MainFrame.cpp:621 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Show the printer settings" msgstr "Pokaż ustawienia drukarki" -#: src/libslic3r/PrintConfig.cpp:3366 +#: src/libslic3r/PrintConfig.cpp:3565 msgid "Show this help." msgstr "Pokaż tą wskazówkę pomocy." -#: src/slic3r/GUI/MainFrame.cpp:701 +#: src/slic3r/GUI/MainFrame.cpp:926 src/slic3r/GUI/MainFrame.cpp:1325 msgid "Show user configuration folder (datadir)" msgstr "Pokaż folder z konfiguracjami użytkownika (datadir)" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:185 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:182 msgid "Show/Hide 3Dconnexion devices settings dialog" msgstr "Pokaż/ukryj ustawienia urządzeń 3Dconnexion" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:208 -msgid "Show/Hide Legend" -msgstr "Pokaż/ukryj legendę" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 +msgid "Show/Hide Legend & Estimated printing time" +msgstr "Pokaż/ukryj legendę i szacowany czas druku" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:146 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:141 msgid "Show/Hide object/instance labels" msgstr "Ukryj/pokaż etykiety modelu/kopii" -#: src/slic3r/GUI/GUI_App.cpp:813 src/slic3r/GUI/wxExtensions.cpp:753 +#: src/slic3r/GUI/GUI_App.cpp:1504 src/slic3r/GUI/wxExtensions.cpp:673 msgid "Simple" msgstr "Prosty" -#: src/slic3r/GUI/ConfigWizard.cpp:820 +#: src/slic3r/GUI/ConfigWizard.cpp:1179 msgid "Simple mode" msgstr "Tryb Prosty" -#: src/slic3r/GUI/GUI_App.cpp:813 +#: src/slic3r/GUI/GUI_App.cpp:1504 msgid "Simple View Mode" msgstr "Tryb Widoku Prostego" -#: src/slic3r/GUI/Tab.cpp:2298 src/slic3r/GUI/Tab.cpp:2306 +#: src/slic3r/GUI/Tab.cpp:2467 src/slic3r/GUI/Tab.cpp:2475 msgid "Single extruder MM setup" msgstr "Ustawienia MM dla jednego ekstrudera" -#: src/libslic3r/PrintConfig.cpp:1845 +#: src/libslic3r/PrintConfig.cpp:1987 msgid "Single Extruder Multi Material" msgstr "Multi Material z jednym ekstruderem" -#: src/slic3r/GUI/Tab.cpp:1867 +#: src/slic3r/GUI/Tab.cpp:2101 msgid "" "Single Extruder Multi Material is selected, \n" "and all extruders must have the same diameter.\n" @@ -6922,435 +7983,463 @@ msgstr "" "więc wszystkie ekstrudery muszą mieć taką samą średnicę dyszy.\n" "Czy chcesz zmienić średnicę dyszy dla wszystkich ekstruderów na wartość z pierwszego?" -#: src/slic3r/GUI/Tab.cpp:2307 +#: src/slic3r/GUI/Tab.cpp:2476 msgid "Single extruder multimaterial parameters" msgstr "Parametry multimaterial przy jednym ekstruderze" -#: src/slic3r/GUI/BedShapeDialog.cpp:77 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:232 src/slic3r/GUI/Plater.cpp:160 -#: src/slic3r/GUI/Tab.cpp:2324 +#: src/slic3r/GUI/Preferences.cpp:120 src/libslic3r/PrintConfig.cpp:3689 +msgid "Single instance mode" +msgstr "Tryb jednej instancji" + +#: src/slic3r/GUI/BedShapeDialog.cpp:93 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:240 src/slic3r/GUI/Plater.cpp:166 +#: src/slic3r/GUI/Tab.cpp:2493 msgid "Size" msgstr "Rozmiar" -#: src/slic3r/GUI/Tab.cpp:1797 src/slic3r/GUI/Tab.cpp:2041 +#: src/slic3r/GUI/Tab.cpp:2059 src/slic3r/GUI/Tab.cpp:2241 msgid "Size and coordinates" msgstr "Rozmiar i koordynaty" -#: src/slic3r/GUI/BedShapeDialog.cpp:78 +#: src/slic3r/GUI/BedShapeDialog.cpp:110 msgid "Size in X and Y of the rectangular plate." msgstr "Rozmiar X i Y stołu prostokątnego." -#: src/slic3r/GUI/GUI_Preview.cpp:245 src/slic3r/GUI/Tab.cpp:1111 -#: src/libslic3r/ExtrusionEntity.cpp:318 +#: src/slic3r/GUI/GUI_Preview.cpp:310 src/slic3r/GUI/Tab.cpp:1439 +#: src/libslic3r/ExtrusionEntity.cpp:323 src/libslic3r/ExtrusionEntity.cpp:354 msgid "Skirt" msgstr "Skirt" -#: src/slic3r/GUI/Tab.cpp:1110 +#: src/slic3r/GUI/Tab.cpp:1438 msgid "Skirt and brim" msgstr "Skirt i brim" -#: src/libslic3r/PrintConfig.cpp:1687 +#: src/libslic3r/PrintConfig.cpp:1795 msgid "Skirt height" msgstr "Wysokość skirt" -#: src/libslic3r/PrintConfig.cpp:1696 +#: src/libslic3r/PrintConfig.cpp:1811 msgid "Skirt Loops" msgstr "Liczba obrysów skirt" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1334 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1181 msgid "SLA gizmo keyboard shortcuts" msgstr "Skróty klawiszowe \"uchwytów\" SLA" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1058 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:924 msgid "SLA gizmo turned off" msgstr "Uchwyt SLA wyłączony" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1017 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:897 msgid "SLA gizmo turned on" msgstr "Uchwyt SLA włączony" -#: src/slic3r/GUI/Plater.cpp:818 src/slic3r/GUI/Preset.cpp:1524 +#: src/slic3r/GUI/Plater.cpp:693 src/libslic3r/Preset.cpp:1303 msgid "SLA material" msgstr "Materiał SLA" -#: src/slic3r/GUI/ConfigWizard.cpp:2015 +#: src/slic3r/GUI/ConfigWizard.cpp:2526 msgid "SLA Material Profiles Selection" msgstr "Wybór profili materiałów SLA" -#: src/libslic3r/PrintConfig.cpp:2470 src/libslic3r/PrintConfig.cpp:2471 +#: src/libslic3r/PrintConfig.cpp:2613 src/libslic3r/PrintConfig.cpp:2614 msgid "SLA material type" msgstr "Rodzaj materiału SLA" -#: src/slic3r/GUI/ConfigWizard.cpp:1471 src/slic3r/GUI/ConfigWizard.cpp:2015 +#: src/slic3r/GUI/ConfigWizard.cpp:1872 src/slic3r/GUI/ConfigWizard.cpp:2526 msgid "SLA Materials" msgstr "Materiały SLA" -#: src/slic3r/GUI/Preset.cpp:1523 +#: src/libslic3r/Preset.cpp:1302 msgid "SLA print" msgstr "Druk SLA" -#: src/libslic3r/PrintConfig.cpp:2578 +#: src/libslic3r/PrintConfig.cpp:2721 msgid "SLA print material notes" msgstr "Notatki dla materiału SLA" -#: src/slic3r/GUI/Plater.cpp:817 +#: src/slic3r/GUI/Plater.cpp:692 msgid "SLA print settings" -msgstr "Ustawienia Druku SLA" +msgstr "Ustawienia druku SLA" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:996 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:869 msgid "SLA Support Points" msgstr "Punkty podpór SLA" -#: src/slic3r/GUI/GLCanvas3D.cpp:687 -msgid "SLA supports outside the print area were detected" -msgstr "Wykryto podpory SLA poza obszarem roboczym" +#: src/slic3r/GUI/GLCanvas3D.cpp:635 +msgid "SLA supports outside the print area were detected." +msgstr "Wykryto podpory SLA poza obszarem roboczym." -#: src/slic3r/GUI/ConfigWizard.cpp:1530 +#: src/slic3r/GUI/ConfigWizard.cpp:1931 msgid "SLA Technology Printers" msgstr "Drukarki SLA" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1432 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1563 msgid "Slab" msgstr "Tafla" -#: src/libslic3r/PrintConfig.cpp:1333 +#: src/libslic3r/PrintConfig.cpp:1441 msgid "Slic3r can upload G-code files to a printer host. This field must contain the kind of the host." -msgstr "Slic3r może przesyłać pliki G-code do serwera druku. To pole powinno zawierać rodzaj serwera." +msgstr "PrusaSlicer może przesyłać pliki G-code do serwera druku. To pole powinno zawierać rodzaj serwera." -#: src/libslic3r/PrintConfig.cpp:105 +#: src/libslic3r/PrintConfig.cpp:107 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 może przesyłać pliki G-code do serwera druku. To pole powinno zawierać klucz API lub hasło niezbędne do uwierzytelnienia." -#: src/libslic3r/PrintConfig.cpp:98 +#: 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 może przesyłać pliki G-code do serwera druku. Ta sekcja powinna zawierać nazwę hosta, adres IP lub adres URL serwera." -#: src/libslic3r/PrintConfig.cpp:1299 +#: src/libslic3r/PrintConfig.cpp:1407 msgid "Slic3r will not scale speed down below this speed." -msgstr "Slic3r nie będzie skalował prędkości poniżej tej wartości." +msgstr "PrusaSlicer nie będzie skalował prędkości poniżej tej wartości." -#: src/libslic3r/PrintConfig.cpp:3359 +#: src/libslic3r/PrintConfig.cpp:3558 msgid "Slice" msgstr "Cięcie" -#: src/slic3r/GUI/MainFrame.cpp:512 +#: src/slic3r/GUI/MainFrame.cpp:1113 msgid "Slice a file into a G-code" msgstr "Cięcie jako G-code" -#: src/slic3r/GUI/MainFrame.cpp:518 +#: src/slic3r/GUI/MainFrame.cpp:1119 msgid "Slice a file into a G-code, save as" msgstr "Cięcie jako G-code, zapisz jako" -#: src/libslic3r/PrintConfig.cpp:87 +#: src/libslic3r/PrintConfig.cpp:89 msgid "Slice gap closing radius" msgstr "Promień zamykania szpar" -#: src/slic3r/GUI/Plater.cpp:892 src/slic3r/GUI/Plater.cpp:3121 -#: src/slic3r/GUI/Plater.cpp:5110 +#: src/slic3r/GUI/Plater.cpp:767 src/slic3r/GUI/Plater.cpp:2921 +#: src/slic3r/GUI/Plater.cpp:5237 msgid "Slice now" msgstr "Cięcie" -#: src/libslic3r/PrintConfig.cpp:3333 +#: src/libslic3r/PrintConfig.cpp:3526 msgid "Slice the model and export SLA printing layers as PNG." msgstr "Cięcie modelu i eksport warstw SLA jako PNG." -#: src/libslic3r/PrintConfig.cpp:3354 +#: src/libslic3r/PrintConfig.cpp:3547 msgid "Slice the model and export toolpaths as G-code." msgstr "Cięcie modelu i eksport ścieżek narzędzi jako G-code." -#: src/libslic3r/PrintConfig.cpp:3360 +#: src/libslic3r/PrintConfig.cpp:3559 msgid "Slice the model as FFF or SLA based on the printer_technology configuration value." msgstr "Cięcie modelu jako FFF lub SLA oparte o ustawienie konfiguracji printer_technology." -#: src/slic3r/GUI/Plater.cpp:216 +#: src/slic3r/GUI/Plater.cpp:222 msgid "Sliced Info" msgstr "Informacje o cięciu" -#: src/slic3r/GUI/MainFrame.cpp:847 src/slic3r/GUI/Plater.cpp:3121 -#: src/slic3r/GUI/Plater.cpp:5107 src/slic3r/GUI/Tab.cpp:1221 -#: src/slic3r/GUI/Tab.cpp:3662 +#: src/slic3r/GUI/MainFrame.cpp:1548 src/slic3r/GUI/Plater.cpp:2921 +#: src/slic3r/GUI/Plater.cpp:5234 src/slic3r/GUI/Tab.cpp:1551 +#: src/slic3r/GUI/Tab.cpp:4081 msgid "Slicing" msgstr "Cięcie" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:134 -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:184 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:170 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:219 msgid "Slicing complete" msgstr "Cięcie zakończone" -#: src/libslic3r/SLAPrint.cpp:760 +#: src/libslic3r/SLAPrint.cpp:780 msgid "Slicing done" msgstr "Cięcie zakończone" -#: src/slic3r/GUI/MainFrame.cpp:874 +#: src/slic3r/GUI/MainFrame.cpp:1575 msgid "Slicing Done!" msgstr "Cięcie zakończone!" -#: src/libslic3r/SLAPrintSteps.cpp:245 +#: src/slic3r/GUI/NotificationManager.cpp:751 +msgid "Slicing finished." +msgstr "Cięcie zakończone." + +#: src/libslic3r/SLAPrintSteps.cpp:247 msgid "Slicing had to be stopped due to an internal error: Inconsistent slice index." msgstr "Cięcie zostało zatrzymane z powodu błędu wewnętrznego: nieciągły indeks cięcia." -#: src/libslic3r/SLAPrintSteps.cpp:45 +#: src/libslic3r/SLAPrintSteps.cpp:46 msgid "Slicing model" msgstr "Cięcie modelu" -#: src/libslic3r/SLAPrintSteps.cpp:49 +#: src/libslic3r/SLAPrintSteps.cpp:50 msgid "Slicing supports" msgstr "Cięcie podpór" -#: src/libslic3r/PrintConfig.cpp:2414 +#: src/libslic3r/PrintConfig.cpp:2557 msgid "Slow" msgstr "Wolne" -#: src/libslic3r/PrintConfig.cpp:1705 +#: src/libslic3r/PrintConfig.cpp:1820 msgid "Slow down if layer print time is below" msgstr "Zwolnij jeśli czas warstwy wynosi mniej niż" -#: src/libslic3r/PrintConfig.cpp:2415 +#: src/libslic3r/PrintConfig.cpp:2558 msgid "Slow tilt" msgstr "Wolne przechylanie" -#: src/libslic3r/PrintConfig.cpp:1715 +#: src/libslic3r/PrintConfig.cpp:1830 msgid "Small perimeters" msgstr "Małe obrysy" -#: src/slic3r/GUI/GLCanvas3D.cpp:288 -msgid "Smooth" -msgstr "Gładki" +#: src/libslic3r/PrintConfig.cpp:2801 +msgid "Small pillar diameter percent" +msgstr "Procent średnicy małego słupka" -#: src/slic3r/GUI/GLCanvas3D.cpp:258 +#: src/slic3r/GUI/GLCanvas3D.cpp:274 +msgid "Smooth" +msgstr "Wygładzanie" + +#: src/slic3r/GUI/GLCanvas3D.cpp:247 msgid "Smoothing" msgstr "Wygładzanie" -#: src/slic3r/GUI/GUI_App.cpp:839 +#: src/slic3r/GUI/GUI_App.cpp:1540 msgid "Snapshot name" msgstr "Nazwa zrzutu" -#: src/slic3r/GUI/MainFrame.cpp:686 +#: src/slic3r/GUI/MainFrame.cpp:911 src/slic3r/GUI/MainFrame.cpp:1310 msgid "Software &Releases" msgstr "Wersje oprog&ramowania" -#: src/slic3r/GUI/PresetHints.cpp:184 +#: src/slic3r/GUI/PresetHints.cpp:183 msgid "solid infill" msgstr "zwarte wypełnienie" -#: src/slic3r/GUI/GUI_Preview.cpp:241 src/libslic3r/ExtrusionEntity.cpp:314 -#: src/libslic3r/PrintConfig.cpp:1756 src/libslic3r/PrintConfig.cpp:1767 +#: src/slic3r/GUI/GUI_Preview.cpp:305 src/libslic3r/ExtrusionEntity.cpp:318 +#: src/libslic3r/ExtrusionEntity.cpp:344 src/libslic3r/PrintConfig.cpp:1871 +#: src/libslic3r/PrintConfig.cpp:1882 msgid "Solid infill" msgstr "Zwarte wypełnienie" -#: src/libslic3r/PrintConfig.cpp:1744 +#: src/libslic3r/PrintConfig.cpp:1859 msgid "Solid infill every" msgstr "Zwarte wypełnienie co" -#: src/libslic3r/PrintConfig.cpp:1736 +#: src/libslic3r/PrintConfig.cpp:1851 msgid "Solid infill extruder" msgstr "Ekstruder do zwartego wypełnienia" -#: src/libslic3r/PrintConfig.cpp:1727 +#: src/libslic3r/PrintConfig.cpp:1842 msgid "Solid infill threshold area" msgstr "Min. powierzchnia zwartego wypełnienia" -#: src/slic3r/GUI/Tab.cpp:1065 src/libslic3r/PrintConfig.cpp:1780 +#: src/slic3r/GUI/Tab.cpp:1387 src/libslic3r/PrintConfig.cpp:1895 msgid "Solid layers" msgstr "Zwarte warstwy" -#: src/libslic3r/PrintConfig.cpp:754 +#: src/libslic3r/PrintConfig.cpp:790 msgid "Soluble material" msgstr "Materiał rozpuszczalny" -#: src/libslic3r/PrintConfig.cpp:755 +#: src/libslic3r/PrintConfig.cpp:791 msgid "Soluble material is most likely used for a soluble support." msgstr "Materiał rozpuszczalny jest używany zazwyczaj do rozpuszczalnych podpór." -#: src/libslic3r/PrintConfig.cpp:937 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:735 +msgid "Some fields are too long to fit. Right mouse click reveals the full text." +msgstr "Niektóre opisy są zbyt długie, aby mogły się zmieścić. Kliknij prawym przyciskiem, aby pokazać cały tekst." + +#: src/libslic3r/PrintConfig.cpp:981 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 output. The \"No extrusion\" flavor prevents PrusaSlicer from exporting any extrusion value at all." msgstr "Niektóre komendy kodu G/M, wliczając kontrolę temperatury i inne, nie są uniwersalne. Ustaw tą opcję w firmware Twojej drukarki, aby uzyskać kompatybilny plik wyjściowy. Wariant \"no extrusion\" wyłączy generowanie jakichkolwiek wartości ekstruzji." -#: src/slic3r/GUI/GLCanvas3D.cpp:688 -msgid "Some objects are not visible" -msgstr "Niektóre obiekty są niewidoczne" +#: src/slic3r/GUI/Plater.cpp:2309 +#, 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 "" +"Niektóre modele w pliku %s wyglądają, jak zapisane w calach.\n" +"Czy traktować je jako zapisane w calach i przekonwertować?" -#: src/libslic3r/Print.cpp:1226 +#: src/slic3r/GUI/GLCanvas3D.cpp:636 +msgid "Some objects are not visible." +msgstr "Niektóre modele są niewidoczne." + +#: src/libslic3r/Print.cpp:1252 msgid "Some objects are too close; your extruder will collide with them." msgstr "Niektóre modele są zbyt blisko; ekstruder zderzy się z którymś z nich." -#: src/libslic3r/Print.cpp:1228 +#: src/libslic3r/Print.cpp:1254 msgid "Some objects are too tall and cannot be printed without extruder collisions." -msgstr "Niektóre modele są zbyt wysokie aby można było wydrukować je bez kolizji." +msgstr "Niektóre modele są zbyt wysokie, aby można było wydrukować je bez kolizji." -#: src/libslic3r/PrintConfig.cpp:2824 +#: src/libslic3r/PrintConfig.cpp:2988 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 "Niektóre modele można wydrukować z kilkoma mniejszymi podkładkami, zamiast jednej dużej. Ten parametr określa jak daleko od siebie powinny znajdować się dwie mniejsze podkładki. Jeśli znajdą się zbyt blisko, to zostaną złączone w jedną, dużą podkładkę." -#: src/libslic3r/PrintConfig.cpp:2187 +#: src/libslic3r/PrintConfig.cpp:2330 msgid "Some printers or printer setups may have difficulties printing with a variable layer height. Enabled by default." msgstr "Niektóre drukarki mogą mieć trudności z drukiem ze zmienną wysokością warstwy. Domyślnie włączone." -#: src/libslic3r/PrintConfig.cpp:1984 +#: src/libslic3r/PrintConfig.cpp:2126 msgid "Spacing between interface lines. Set zero to get a solid interface." msgstr "Rozstaw linii warstwy łączącej. Ustaw zero dla zwartej warstwy łączącej." -#: src/libslic3r/PrintConfig.cpp:2018 +#: src/libslic3r/PrintConfig.cpp:1155 +msgid "Spacing between ironing passes" +msgstr "Odstęp między ścieżkami prasowania" + +#: src/libslic3r/PrintConfig.cpp:2160 msgid "Spacing between support material lines." msgstr "Rozstaw linii materiału podporowego." -#: src/slic3r/GUI/GUI_ObjectList.cpp:98 src/slic3r/GUI/GUI_ObjectList.cpp:616 -#: src/slic3r/GUI/GUI_Preview.cpp:224 src/slic3r/GUI/Tab.cpp:1145 -#: src/libslic3r/PrintConfig.cpp:235 src/libslic3r/PrintConfig.cpp:458 -#: src/libslic3r/PrintConfig.cpp:919 src/libslic3r/PrintConfig.cpp:1048 -#: src/libslic3r/PrintConfig.cpp:1431 src/libslic3r/PrintConfig.cpp:1668 -#: src/libslic3r/PrintConfig.cpp:1716 src/libslic3r/PrintConfig.cpp:1768 -#: src/libslic3r/PrintConfig.cpp:2118 +#: src/slic3r/GUI/GUI_ObjectList.cpp:96 src/slic3r/GUI/GUI_ObjectList.cpp:655 +#: src/slic3r/GUI/GUI_Preview.cpp:278 src/slic3r/GUI/Tab.cpp:1474 +#: src/libslic3r/PrintConfig.cpp:269 src/libslic3r/PrintConfig.cpp:494 +#: src/libslic3r/PrintConfig.cpp:963 src/libslic3r/PrintConfig.cpp:1092 +#: src/libslic3r/PrintConfig.cpp:1165 src/libslic3r/PrintConfig.cpp:1539 +#: src/libslic3r/PrintConfig.cpp:1776 src/libslic3r/PrintConfig.cpp:1831 +#: src/libslic3r/PrintConfig.cpp:1883 src/libslic3r/PrintConfig.cpp:2261 msgid "Speed" msgstr "Prędkość" -#: src/libslic3r/PrintConfig.cpp:1670 -msgid "Speed (baud) of USB/serial port for printer connection." -msgstr "Szybkość transmisji portu USB/portu szeregowego do połączenia z drukarką." - -#: src/libslic3r/GCode/PreviewData.cpp:351 +#: src/slic3r/GUI/GCodeViewer.cpp:2238 src/libslic3r/GCode/PreviewData.cpp:356 msgid "Speed (mm/s)" msgstr "Prędkość (mm/s)" -#: src/libslic3r/PrintConfig.cpp:920 +#: src/libslic3r/PrintConfig.cpp:964 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 "Prędkość wypełniania szczelin krótkimi ruchami typu zygzak. Ustaw tą wartość na tyle nisko aby uniknąć wibracji i rezonansu. Ustaw 0 aby wyłączyć wypełnianie szczelin." +msgstr "Prędkość wypełniania szczelin krótkimi ruchami typu zygzak. Ustaw tą wartość na tyle nisko, aby uniknąć wibracji i rezonansu. Ustaw 0, aby wyłączyć wypełnianie szczelin." -#: src/slic3r/GUI/Tab.cpp:1158 +#: src/slic3r/GUI/Tab.cpp:1488 msgid "Speed for non-print moves" msgstr "Prędkość ruchów jałowych" -#: src/libslic3r/PrintConfig.cpp:1432 +#: src/libslic3r/PrintConfig.cpp:1540 msgid "Speed for perimeters (contours, aka vertical shells). Set to zero for auto." msgstr "Prędkość obrysów (inaczej powłoki pionowej). Ustaw 0 dla prędkości automatycznej." -#: src/slic3r/GUI/Tab.cpp:1146 +#: src/slic3r/GUI/Tab.cpp:1475 msgid "Speed for print moves" msgstr "Prędkość ruchów drukujących" -#: src/libslic3r/PrintConfig.cpp:236 +#: src/libslic3r/PrintConfig.cpp:270 msgid "Speed for printing bridges." msgstr "Prędkość drukowania mostów." -#: src/libslic3r/PrintConfig.cpp:1769 +#: src/libslic3r/PrintConfig.cpp:1884 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 "Prędkość druku zwartych obszarów (góra/dół/poziome powłoki wewnętrzne). Może być wyrażona procentowo (np. 80%) ponad domyślną prędkość wypełnienia. Wpisz zero dla automatycznego ustawienia." -#: src/libslic3r/PrintConfig.cpp:1993 +#: src/libslic3r/PrintConfig.cpp:2135 msgid "Speed for printing support material interface layers. If expressed as percentage (for example 50%) it will be calculated over support material speed." msgstr "Prędkość druku warstw łączących materiału podporowego. Jeśli ustawisz wartość procentową (np. 50%) to zostanie obliczona z prędkości druku materiału podporowego." -#: src/libslic3r/PrintConfig.cpp:2027 +#: src/libslic3r/PrintConfig.cpp:2169 msgid "Speed for printing support material." msgstr "Prędkość druku materiału podporowego." -#: src/libslic3r/PrintConfig.cpp:1049 +#: src/libslic3r/PrintConfig.cpp:1093 msgid "Speed for printing the internal fill. Set to zero for auto." msgstr "Prędkość druku wewnętrznego wypełnienia. Ustaw 0 dla prędkości automatycznej." -#: src/libslic3r/PrintConfig.cpp:2119 +#: src/libslic3r/PrintConfig.cpp:2262 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 slow down this to get a nicer surface finish. This can be expressed as a percentage (for example: 80%) over the solid infill speed above. Set to zero for auto." msgstr "Prędkość druku najwyższych warstw zwartych (dotyczy tylko najwyższych, zewnętrznych warstw i nie obejmuje zwartych warstw umieszczonych niżej). Warto obniżyć tą wartość dla ładniejszego wykończenia powierzchni. Jeśli ustawisz wartość procentową (np. 80%) to zosttanie obliczona z prędkości druku zwartego wypełnienia. Ustaw zero dla prędkości automatycznej." -#: src/libslic3r/PrintConfig.cpp:2153 +#: src/libslic3r/PrintConfig.cpp:2296 msgid "Speed for travel moves (jumps between distant extrusion points)." msgstr "Prędkość ruchów jałowych (przeskoków pomiędzy punktami ekstruzji)." -#: src/libslic3r/PrintConfig.cpp:659 +#: src/libslic3r/PrintConfig.cpp:695 msgid "Speed of the first cooling move" msgstr "Prędkość pierwszego ruchu chłodzącego" -#: src/libslic3r/PrintConfig.cpp:678 +#: src/libslic3r/PrintConfig.cpp:714 msgid "Speed of the last cooling move" msgstr "Prędkość ostatniego ruchu chłodzącego" -#: src/libslic3r/PrintConfig.cpp:616 +#: src/libslic3r/PrintConfig.cpp:652 msgid "Speed used at the very beginning of loading phase." msgstr "Prędkość używana podczas początkowej fazy ładowania filamentu." -#: src/libslic3r/PrintConfig.cpp:608 +#: src/libslic3r/PrintConfig.cpp:644 msgid "Speed used for loading the filament on the wipe tower." msgstr "Prędkość ładowania filamentu podczas drukowania wieży czyszczącej." -#: src/libslic3r/PrintConfig.cpp:624 +#: src/libslic3r/PrintConfig.cpp:660 msgid "Speed used for unloading the filament on the wipe tower (does not affect initial part of unloading just after ramming)." msgstr "Prędkość rozładowywania filamentu dla wieży czyszczącej (nie wpływa na początkową fazę rozładowywania zaraz po wyciskaniu)." -#: src/libslic3r/PrintConfig.cpp:633 +#: src/libslic3r/PrintConfig.cpp:669 msgid "Speed used for unloading the tip of the filament immediately after ramming." msgstr "Prędkość wycofywania (rozładowywania) końcówki filamentu bezpośrednio po wyciskaniu." -#: src/slic3r/GUI/Mouse3DController.cpp:296 +#: src/slic3r/GUI/Mouse3DController.cpp:279 msgid "Speed:" msgstr "Prędkość:" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1432 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:54 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:37 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1563 msgid "Sphere" msgstr "Kula" -#: src/libslic3r/PrintConfig.cpp:1794 +#: src/libslic3r/PrintConfig.cpp:1909 msgid "Spiral vase" msgstr "Tryb wazy" -#: src/slic3r/GUI/ConfigManipulation.cpp:90 +#: src/slic3r/GUI/ConfigManipulation.cpp:89 msgid "Spiral Vase" msgstr "Tryb wazy" -#: src/slic3r/GUI/Plater.cpp:4019 src/slic3r/GUI/Plater.cpp:4034 -#: src/slic3r/GUI/Plater.cpp:4048 src/libslic3r/PrintConfig.cpp:3471 +#: src/slic3r/GUI/Plater.cpp:3939 src/slic3r/GUI/Plater.cpp:3954 +#: src/slic3r/GUI/Plater.cpp:3972 src/libslic3r/PrintConfig.cpp:3670 msgid "Split" msgstr "Podziel" -#: src/slic3r/GUI/Plater.cpp:4019 +#: src/slic3r/GUI/Plater.cpp:3939 msgid "Split the selected object" msgstr "Podziel zaznaczony model" -#: src/slic3r/GUI/Plater.cpp:4014 src/slic3r/GUI/Plater.cpp:4034 +#: src/slic3r/GUI/Plater.cpp:3934 src/slic3r/GUI/Plater.cpp:3954 msgid "Split the selected object into individual objects" msgstr "Podziel wybrany model na osobne modele" -#: src/slic3r/GUI/Plater.cpp:4016 src/slic3r/GUI/Plater.cpp:4048 +#: src/slic3r/GUI/Plater.cpp:3936 src/slic3r/GUI/Plater.cpp:3972 msgid "Split the selected object into individual sub-parts" msgstr "Podziel wybrany model na części" -#: src/slic3r/GUI/GLCanvas3D.cpp:4550 +#: src/slic3r/GUI/GLCanvas3D.cpp:4916 msgid "Split to objects" msgstr "Podziel na osobne modele" -#: src/slic3r/GUI/Plater.cpp:2981 +#: src/slic3r/GUI/Plater.cpp:2774 msgid "Split to Objects" msgstr "Podziel na modele" -#: src/slic3r/GUI/GLCanvas3D.cpp:4560 src/slic3r/GUI/GUI_ObjectList.cpp:1487 +#: src/slic3r/GUI/GLCanvas3D.cpp:4926 src/slic3r/GUI/GUI_ObjectList.cpp:1618 msgid "Split to parts" msgstr "Podziel na części" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2274 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2440 msgid "Split to Parts" msgstr "Podziel na części" -#: src/slic3r/GUI/ConfigWizard.cpp:289 +#: src/slic3r/GUI/ConfigWizard.cpp:307 msgid "Standard" msgstr "Standard" -#: src/libslic3r/PrintConfig.cpp:846 +#: src/libslic3r/PrintConfig.cpp:884 msgid "Stars" msgstr "Gwiazdki" -#: src/slic3r/GUI/MainFrame.cpp:405 +#: src/slic3r/GUI/MainFrame.cpp:986 msgid "Start a new project" msgstr "Rozpocznij nowy projekt" -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:27 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:29 msgid "Start at height" msgstr "Zakres od" -#: src/slic3r/GUI/Tab.cpp:1528 src/slic3r/GUI/Tab.cpp:1976 -#: src/libslic3r/PrintConfig.cpp:1813 src/libslic3r/PrintConfig.cpp:1828 +#: src/slic3r/GUI/Tab.cpp:1873 src/slic3r/GUI/Tab.cpp:2161 +#: src/libslic3r/PrintConfig.cpp:1928 src/libslic3r/PrintConfig.cpp:1943 msgid "Start G-code" msgstr "G-code startowy" -#: src/slic3r/GUI/MainFrame.cpp:532 +#: src/slic3r/GUI/MainFrame.cpp:1133 msgid "Start new slicing process" msgstr "Uruchom nowy proces cięcia" @@ -7358,7 +8447,37 @@ msgstr "Uruchom nowy proces cięcia" msgid "Start printing after upload" msgstr "Zacznij druk po przesłaniu" -#: src/slic3r/GUI/PrintHostDialogs.cpp:151 +#: src/slic3r/GUI/GUI_App.cpp:396 +msgid "Start the application" +msgstr "Uruchom aplikację" + +#: src/slic3r/GUI/GUI_App.cpp:386 +msgid "" +"Starting with %1% 2.3, configuration directory on Linux has changed (according to XDG Base Directory Specification) to \n" +"%2%.\n" +"\n" +"This directory did not exist yet (maybe you run the new version for the first time).\n" +"However, an old %1% configuration directory was detected in \n" +"%3%.\n" +"\n" +"Consider moving the contents of the old directory to the new location in order to access your profiles, etc.\n" +"Note that if you decide to downgrade %1% in future, it will use the old location again.\n" +"\n" +"What do you want to do now?" +msgstr "" +"Zaczynając od %1% 2.3, konfiguracje na Linuxie zostały przeniesione (zgodnie ze specyfikacją XDG Base Directory) do\n" +"%2%.\n" +"\n" +"Ten katalog jeszcze nie istnieje (powodem może być pierwsze uruchomienie nowej wersji).\n" +"Jednak poprzedni katalog konfiguracji %1% został wykryty w\n" +"%3%.\n" +"\n" +"Rozważ przeniesienie zawartości poprzedniego katalogu do nowej lokalizacji, aby mieć dostęp do swoich profili itd.\n" +"Weź pod uwagę, że jeśli zdecyduje się w przyszłości zainstalować starszą wersję %1%, z powrotem zostanie użyty poprzedni katalog.\n" +"\n" +"Czy chcesz to teraz zrobić?" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:149 msgid "Status" msgstr "Stan" @@ -7366,166 +8485,160 @@ msgstr "Stan" msgid "Status:" msgstr "Stan:" -#: src/slic3r/GUI/Tab.cpp:2209 +#: src/slic3r/GUI/Search.cpp:77 src/slic3r/GUI/Tab.cpp:2378 msgid "Stealth" msgstr "Stealth" -#: src/slic3r/GUI/Plater.cpp:1291 +#: src/slic3r/GUI/Plater.cpp:1187 src/slic3r/GUI/Plater.cpp:1235 msgid "stealth mode" msgstr "tryb stealth" -#: src/slic3r/GUI/Plater.cpp:4985 +#: src/slic3r/GUI/GCodeViewer.cpp:2557 +msgid "Stealth mode" +msgstr "Tryb stealth" + +#: src/slic3r/GUI/Plater.cpp:5118 #, c-format msgid "STL file exported to %s" msgstr "Plik STL wyeksportowany do %s" -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:27 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:29 msgid "Stop at height" msgstr "Zakres do" -#: src/slic3r/GUI/Tab.cpp:1693 src/slic3r/GUI/Tab.cpp:1928 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:295 msgid "Success!" msgstr "Powodzenie!" -#: src/slic3r/GUI/PresetHints.cpp:203 +#: src/slic3r/GUI/Plater.cpp:2047 +#, c-format +msgid "Successfully unmounted. The device %s(%s) can now be safely removed from the computer." +msgstr "Wysunięto pomyślnie. Urządzenie %s(%s) można teraz bezpiecznie odłączyć od komputera." + +#: src/slic3r/GUI/PresetHints.cpp:202 msgid "support" msgstr "podpora" -#: src/libslic3r/PrintConfig.cpp:2692 +#: src/libslic3r/PrintConfig.cpp:2856 msgid "Support base diameter" msgstr "Średnica stopy podpory" -#: src/libslic3r/PrintConfig.cpp:2702 +#: src/libslic3r/PrintConfig.cpp:2866 msgid "Support base height" msgstr "Wysokość stopy podpory" -#: src/libslic3r/PrintConfig.cpp:2711 +#: src/libslic3r/PrintConfig.cpp:2875 msgid "Support base safety distance" msgstr "Bezpieczna odległość stopy podpory" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3551 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4014 msgid "Support Blocker" msgstr "Blokada podpór" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3551 +#: src/libslic3r/PrintConfig.cpp:895 +msgid "Support Cubic" +msgstr "Sześcienny podpierający" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:4014 msgid "Support Enforcer" msgstr "Wymuszenie podpór" -#: src/slic3r/GUI/ConfigManipulation.cpp:163 +#: src/slic3r/GUI/ConfigManipulation.cpp:162 msgid "Support Generator" msgstr "Generator podpór" -#: src/slic3r/GUI/Tab.cpp:3608 +#: src/slic3r/GUI/Tab.cpp:4018 msgid "Support head" msgstr "Łącznik podpory" -#: src/libslic3r/PrintConfig.cpp:2620 -msgid "Support head front diameter" -msgstr "Średnica początku łącznika" - -#: src/libslic3r/PrintConfig.cpp:2629 -msgid "Support head penetration" -msgstr "Przenikanie łączników podpór" - -#: src/libslic3r/PrintConfig.cpp:2638 -msgid "Support head width" -msgstr "Szerokość łączników podpór" - -#: src/slic3r/GUI/PresetHints.cpp:213 +#: src/slic3r/GUI/PresetHints.cpp:212 msgid "support interface" msgstr "warstwa łącząca podpory z modelem" -#: src/slic3r/GUI/GUI_ObjectList.cpp:36 src/slic3r/GUI/GUI_ObjectList.cpp:97 -#: src/slic3r/GUI/GUI_ObjectList.cpp:615 src/slic3r/GUI/GUI_Preview.cpp:246 -#: src/slic3r/GUI/Tab.cpp:1120 src/slic3r/GUI/Tab.cpp:1121 -#: src/libslic3r/ExtrusionEntity.cpp:319 src/libslic3r/PrintConfig.cpp:370 -#: src/libslic3r/PrintConfig.cpp:1502 src/libslic3r/PrintConfig.cpp:1866 -#: src/libslic3r/PrintConfig.cpp:1872 src/libslic3r/PrintConfig.cpp:1880 -#: src/libslic3r/PrintConfig.cpp:1892 src/libslic3r/PrintConfig.cpp:1902 -#: src/libslic3r/PrintConfig.cpp:1910 src/libslic3r/PrintConfig.cpp:1925 -#: src/libslic3r/PrintConfig.cpp:1946 src/libslic3r/PrintConfig.cpp:1958 -#: src/libslic3r/PrintConfig.cpp:1974 src/libslic3r/PrintConfig.cpp:1983 -#: src/libslic3r/PrintConfig.cpp:1992 src/libslic3r/PrintConfig.cpp:2003 -#: src/libslic3r/PrintConfig.cpp:2017 src/libslic3r/PrintConfig.cpp:2025 -#: src/libslic3r/PrintConfig.cpp:2026 src/libslic3r/PrintConfig.cpp:2035 -#: src/libslic3r/PrintConfig.cpp:2043 src/libslic3r/PrintConfig.cpp:2057 +#: 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:311 +#: src/slic3r/GUI/Tab.cpp:1449 src/slic3r/GUI/Tab.cpp:1450 +#: src/libslic3r/ExtrusionEntity.cpp:324 src/libslic3r/ExtrusionEntity.cpp:356 +#: src/libslic3r/PrintConfig.cpp:404 src/libslic3r/PrintConfig.cpp:1610 +#: src/libslic3r/PrintConfig.cpp:2008 src/libslic3r/PrintConfig.cpp:2014 +#: src/libslic3r/PrintConfig.cpp:2022 src/libslic3r/PrintConfig.cpp:2034 +#: src/libslic3r/PrintConfig.cpp:2044 src/libslic3r/PrintConfig.cpp:2052 +#: src/libslic3r/PrintConfig.cpp:2067 src/libslic3r/PrintConfig.cpp:2088 +#: src/libslic3r/PrintConfig.cpp:2100 src/libslic3r/PrintConfig.cpp:2116 +#: src/libslic3r/PrintConfig.cpp:2125 src/libslic3r/PrintConfig.cpp:2134 +#: src/libslic3r/PrintConfig.cpp:2145 src/libslic3r/PrintConfig.cpp:2159 +#: src/libslic3r/PrintConfig.cpp:2167 src/libslic3r/PrintConfig.cpp:2168 +#: src/libslic3r/PrintConfig.cpp:2177 src/libslic3r/PrintConfig.cpp:2185 +#: src/libslic3r/PrintConfig.cpp:2199 msgid "Support material" msgstr "Materiał podporowy" -#: src/slic3r/GUI/GUI_Preview.cpp:247 src/libslic3r/ExtrusionEntity.cpp:320 -#: src/libslic3r/PrintConfig.cpp:1991 +#: src/slic3r/GUI/GUI_Preview.cpp:312 src/libslic3r/ExtrusionEntity.cpp:325 +#: src/libslic3r/ExtrusionEntity.cpp:358 src/libslic3r/PrintConfig.cpp:2133 msgid "Support material interface" msgstr "Warstwa łącząca podpory z modelem" -#: src/libslic3r/PrintConfig.cpp:2044 +#: src/libslic3r/PrintConfig.cpp:2186 msgid "Support material will not be generated for overhangs whose slope angle (90° = vertical) is above the given threshold. In other words, this value represent the most horizontal slope (measured from the horizontal plane) that you can print without support material. Set to zero for automatic detection (recommended)." msgstr "Podpory nie będą generowane dla zwisów, których kąt przekracza zadany próg (90° = pion). Inaczej mówiąc, ta wartość określa największy kąt od poziomu (kąt mierzony od płaszczyzny poziomej), który będzie drukowany bez podpór." -#: src/libslic3r/PrintConfig.cpp:1964 +#: src/libslic3r/PrintConfig.cpp:2106 msgid "Support material/raft interface extruder" msgstr "Ekstruder dla podpór/warstw łączących raft z modelem" -#: src/libslic3r/PrintConfig.cpp:1937 +#: src/libslic3r/PrintConfig.cpp:2079 msgid "Support material/raft/skirt extruder" msgstr "Ekstruder dla podpór/tratwy (raft)/skirtu" -#: src/slic3r/GUI/Plater.cpp:500 src/libslic3r/PrintConfig.cpp:1901 -#: src/libslic3r/PrintConfig.cpp:2674 +#: src/slic3r/GUI/Plater.cpp:366 src/libslic3r/PrintConfig.cpp:2043 +#: src/libslic3r/PrintConfig.cpp:2838 msgid "Support on build plate only" msgstr "Podpory tylko na stole" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:888 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:762 msgid "Support parameter change" msgstr "Zmiana parametrów podpór" -#: src/slic3r/GUI/Tab.cpp:3613 +#: src/slic3r/GUI/Tab.cpp:4023 msgid "Support pillar" msgstr "Słupek podpory" -#: src/libslic3r/PrintConfig.cpp:2658 -msgid "Support pillar connection mode" -msgstr "Tryb łączenia słupków podpór" - -#: src/libslic3r/PrintConfig.cpp:2648 -msgid "Support pillar diameter" -msgstr "Średnica słupków podpór" - -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:55 -#: src/libslic3r/PrintConfig.cpp:2764 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:54 +#: src/libslic3r/PrintConfig.cpp:2928 msgid "Support points density" msgstr "Gęstość punktów podpór" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1196 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1048 msgid "Support points edit" msgstr "Edycja punktów podpór" -#: src/slic3r/GUI/GUI_ObjectList.cpp:106 src/slic3r/GUI/GUI_ObjectList.cpp:624 -#: src/slic3r/GUI/Plater.cpp:495 src/slic3r/GUI/Tab.cpp:3604 -#: src/slic3r/GUI/Tab.cpp:3605 src/libslic3r/PrintConfig.cpp:2614 -#: src/libslic3r/PrintConfig.cpp:2621 src/libslic3r/PrintConfig.cpp:2630 -#: src/libslic3r/PrintConfig.cpp:2639 src/libslic3r/PrintConfig.cpp:2649 -#: src/libslic3r/PrintConfig.cpp:2675 src/libslic3r/PrintConfig.cpp:2682 -#: src/libslic3r/PrintConfig.cpp:2693 src/libslic3r/PrintConfig.cpp:2703 -#: src/libslic3r/PrintConfig.cpp:2712 src/libslic3r/PrintConfig.cpp:2725 -#: src/libslic3r/PrintConfig.cpp:2735 src/libslic3r/PrintConfig.cpp:2744 -#: src/libslic3r/PrintConfig.cpp:2754 src/libslic3r/PrintConfig.cpp:2765 -#: src/libslic3r/PrintConfig.cpp:2773 +#: src/slic3r/GUI/GUI_ObjectList.cpp:104 src/slic3r/GUI/GUI_ObjectList.cpp:663 +#: src/slic3r/GUI/Plater.cpp:361 src/slic3r/GUI/Tab.cpp:4014 +#: src/slic3r/GUI/Tab.cpp:4015 src/libslic3r/PrintConfig.cpp:2757 +#: src/libslic3r/PrintConfig.cpp:2764 src/libslic3r/PrintConfig.cpp:2773 +#: src/libslic3r/PrintConfig.cpp:2782 src/libslic3r/PrintConfig.cpp:2792 +#: src/libslic3r/PrintConfig.cpp:2802 src/libslic3r/PrintConfig.cpp:2839 +#: src/libslic3r/PrintConfig.cpp:2846 src/libslic3r/PrintConfig.cpp:2857 +#: src/libslic3r/PrintConfig.cpp:2867 src/libslic3r/PrintConfig.cpp:2876 +#: src/libslic3r/PrintConfig.cpp:2889 src/libslic3r/PrintConfig.cpp:2899 +#: src/libslic3r/PrintConfig.cpp:2908 src/libslic3r/PrintConfig.cpp:2918 +#: src/libslic3r/PrintConfig.cpp:2929 src/libslic3r/PrintConfig.cpp:2937 msgid "Supports" msgstr "Podpory" -#: src/slic3r/GUI/Plater.cpp:1194 +#: src/slic3r/GUI/Plater.cpp:1103 msgid "supports and pad" msgstr "podpory i podkładka" -#: src/libslic3r/PrintConfig.cpp:1092 +#: src/libslic3r/PrintConfig.cpp:1185 msgid "Supports remaining times" msgstr "Obsługa pozostałego czasu druku" -#: src/libslic3r/PrintConfig.cpp:1101 +#: src/libslic3r/PrintConfig.cpp:1194 msgid "Supports stealth mode" msgstr "Wspiera tryb Stealth" -#: src/slic3r/GUI/ConfigManipulation.cpp:159 +#: src/slic3r/GUI/ConfigManipulation.cpp:158 msgid "" "Supports work better, if the following feature is enabled:\n" "- Detect bridging perimeters" @@ -7533,44 +8646,60 @@ msgstr "" "Podpory działają lepiej, jeśli włączone jest poniższe ustawienie:\n" "- Wykrywanie mostów przy obrysach" -#: src/slic3r/GUI/Preferences.cpp:87 +#: src/slic3r/GUI/Preferences.cpp:104 msgid "Suppress \" - default - \" presets" msgstr "Ukryj \" - domyślne - \" zestawy ustawień" -#: src/slic3r/GUI/Preferences.cpp:89 +#: src/slic3r/GUI/Preferences.cpp:106 msgid "Suppress \" - default - \" presets in the Print / Filament / Printer selections once there are any other valid presets available." msgstr "Ukryj \" - domyślne - \" zestawy ustawień w zakładkach Druk / Filament / Drukarka gdy dostępne są inne kompatybilne ustawienia." -#: src/slic3r/GUI/MainFrame.cpp:826 +#: src/slic3r/GUI/MainFrame.cpp:1527 msgid "SVG" msgstr "SVG" -#: src/slic3r/GUI/DoubleSlider.cpp:1144 +#: src/slic3r/GUI/Mouse3DController.cpp:318 +msgid "Swap Y/Z axes" +msgstr "Zamień osie Y/Z" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:179 +msgid "Switch between Editor/Preview" +msgstr "Przełącz między edytorem/podglądem" + +#: src/slic3r/GUI/DoubleSlider.cpp:1273 msgid "Switch code to Change extruder" msgstr "Przełącz kod na zmianę ekstrudera" -#: src/slic3r/GUI/DoubleSlider.cpp:1179 +#: src/slic3r/GUI/DoubleSlider.cpp:1306 msgid "Switch code to Color change (%1%) for:" msgstr "Zmień kod na zmianę koloru (%1%) dla:" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:140 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:136 msgid "Switch to 3D" msgstr "Przełącz na 3D" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1376 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1223 msgid "Switch to editing mode" msgstr "Tryb edycji" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:141 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:137 msgid "Switch to Preview" msgstr "Przełącz na Podgląd cięcia" -#: src/slic3r/GUI/wxExtensions.cpp:703 +#: src/slic3r/GUI/GLCanvas3D.cpp:4302 src/slic3r/GUI/GLCanvas3D.cpp:4939 +msgid "Switch to Settings" +msgstr "Przełącz na ustawienia" + +#: src/slic3r/GUI/wxExtensions.cpp:623 #, c-format msgid "Switch to the %s mode" msgstr "Przełącz na tryb %s" -#: src/slic3r/GUI/GUI_App.cpp:882 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:542 +msgid "Switching Presets: Unsaved Changes" +msgstr "Przełączanie zestawu ustawień: niezapisane zmiany" + +#: src/slic3r/GUI/GUI_App.cpp:1608 msgid "" "Switching the language will trigger application restart.\n" "You will lose content of the plater." @@ -7585,65 +8714,72 @@ msgid "" "Do you want to proceed?" msgstr "Włączenie trybu prostego spowoduje odrzucenie zmian wprowadzonych w trybie zaawansowanym! Czy chcesz kontynować?" -#: src/slic3r/GUI/Tab.cpp:1014 +#: src/slic3r/GUI/Tab.cpp:1332 msgid "symbolic profile name" msgstr "skrócona nazwa profilu" -#: src/libslic3r/PrintConfig.cpp:2036 +#: src/libslic3r/PrintConfig.cpp:2178 msgid "Synchronize support layers with the object print layers. This is useful with multi-material printers, where the extruder switch is expensive." msgstr "Synchronizuj warstwy podporowe z warstwami modelu. Przydaje się przy drukarkach typu multi-material gdy zmiana używanego materiału jest kosztowna." -#: src/libslic3r/PrintConfig.cpp:2034 +#: src/libslic3r/PrintConfig.cpp:2176 msgid "Synchronize with object layers" msgstr "Synchronizuj z warstwami modelu" -#: src/slic3r/GUI/MainFrame.cpp:699 +#: src/slic3r/GUI/MainFrame.cpp:924 src/slic3r/GUI/MainFrame.cpp:1323 msgid "System &Info" msgstr "&Informacje o Systemie" -#: src/slic3r/GUI/SysInfoDialog.cpp:78 +#: src/slic3r/GUI/SysInfoDialog.cpp:90 src/slic3r/GUI/SysInfoDialog.cpp:92 msgid "System Information" msgstr "Informacje o systemie" -#: src/slic3r/GUI/Preset.cpp:1109 src/slic3r/GUI/Preset.cpp:1164 -#: src/slic3r/GUI/Preset.cpp:1242 src/slic3r/GUI/Preset.cpp:1284 -#: src/slic3r/GUI/PresetBundle.cpp:1583 src/slic3r/GUI/PresetBundle.cpp:1672 +#: src/slic3r/GUI/PresetComboBoxes.cpp:188 +#: src/slic3r/GUI/PresetComboBoxes.cpp:226 +#: src/slic3r/GUI/PresetComboBoxes.cpp:724 +#: src/slic3r/GUI/PresetComboBoxes.cpp:774 +#: src/slic3r/GUI/PresetComboBoxes.cpp:886 +#: src/slic3r/GUI/PresetComboBoxes.cpp:930 msgid "System presets" msgstr "Ustawienia systemowe" -#: src/slic3r/GUI/GUI_App.cpp:801 +#: src/slic3r/GUI/GUI_App.cpp:1481 msgid "Take Configuration &Snapshot" msgstr "Wykonaj Zrzu&t Konfiguracji" -#: src/slic3r/GUI/GUI_App.cpp:839 +#: src/slic3r/GUI/GUI_App.cpp:1540 msgid "Taking configuration snapshot" msgstr "Zrzucanie konfiguracji" -#: src/slic3r/GUI/Tab.cpp:1433 src/libslic3r/PrintConfig.cpp:2067 +#: src/slic3r/GUI/Tab.cpp:1779 msgid "Temperature" msgstr "Temperatura" -#: src/libslic3r/PrintConfig.cpp:1804 +#: src/libslic3r/PrintConfig.cpp:1919 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 "Różnica temperatur mająca zastosowanie gdy ekstruder nie jest używany. Włącza druk skirtu o wysokości równej wysokości modelu, dzięki której dysze będą co jakiś czas czyszczone." -#: src/libslic3r/PrintConfig.cpp:1803 +#: src/libslic3r/PrintConfig.cpp:1918 msgid "Temperature variation" msgstr "Zmiana temperatury" -#: src/slic3r/GUI/ConfigWizard.cpp:1017 +#: src/slic3r/GUI/ConfigWizard.cpp:1383 msgid "Temperatures" msgstr "Temperatury" -#: src/slic3r/GUI/Tab.cpp:1677 src/slic3r/GUI/Tab.cpp:1915 +#: src/slic3r/GUI/Tab.cpp:2215 +msgid "Template Custom G-code" +msgstr "Szablon niestandardowego G-code" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:284 msgid "Test" msgstr "Test" -#: src/slic3r/GUI/BedShapeDialog.cpp:172 +#: src/slic3r/GUI/BedShapeDialog.cpp:315 msgid "Texture" msgstr "Tekstura" -#: src/slic3r/GUI/ConfigManipulation.cpp:208 +#: src/slic3r/GUI/ConfigManipulation.cpp:207 msgid "The %1% infill pattern is not supposed to work at 100%% density." msgstr "Wzór wypełnienia %1% nie działa z gęstością ustawioną na 100%%." @@ -7661,11 +8797,11 @@ msgstr "" "Nie znaleziono urządzenia %s .\n" "Jeśli urządzenie jest podłączone, to naciśnij przycisk Reset obok złącza USB ..." -#: src/slic3r/GUI/Tab.cpp:976 +#: src/slic3r/GUI/Tab.cpp:1238 msgid "The current custom preset will be detached from the parent system preset." msgstr "Obecny niestandardowy zestaw ustawień zostanie odłączony od dziedziczącego zestawu systemowego." -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:875 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:925 msgid "" "The currently manipulated object is tilted (rotation angles are not multiples of 90°).\n" "Non-uniform scaling of tilted objects is only possible in the World coordinate system,\n" @@ -7674,120 +8810,137 @@ msgstr "" "Obecnie przekształcany model jest przechylony (kąty obrotu nie są wielokrotnością 90°).\n" "Nierównomierne skalowanie przechylonych modeli jest możliwe tylko w globalnym systemie koordynat, po osadzeniu kątów obrotu w koordynatach modelu." -#: src/libslic3r/PrintConfig.cpp:2726 +#: src/libslic3r/PrintConfig.cpp:2890 msgid "The default angle for connecting support sticks and junctions." msgstr "Domyślny kąt łączenia słupków i \"skrzyżowań\" podpór." -#: src/libslic3r/SLAPrint.cpp:631 +#: src/libslic3r/SLAPrint.cpp:645 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 "Końcówki słupków podpór będą rozmieszczone w przestrzeni pomiędzy modelem a podkładką. Aby tego uniknąć, parametr \"Bezpieczna odległość stopy podpory\" powinien być większy niż \"Odstęp modelu od podkładki\"." +msgstr "Końcówki słupków podpór będą rozmieszczone w przestrzeni pomiędzy modelem, a podkładką. Aby tego uniknąć, parametr \"Bezpieczna odległość stopy podpory\" powinien być większy niż \"Odstęp modelu od podkładki\"." -#: src/libslic3r/PrintConfig.cpp:489 +#: src/libslic3r/PrintConfig.cpp:525 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 "Używany ekstruder (jeśli nie są określone dokładniejsze ustawienia ekstuderów). To ustawienie nadpisuje ustawienia ekstruderów dla obrysów i wypełnienia, ale nie tych dla podpór." -#: src/libslic3r/PrintConfig.cpp:1003 +#: src/libslic3r/PrintConfig.cpp:1047 msgid "The extruder to use when printing infill." msgstr "Ekstruder używany do druku wypełnienia." -#: src/libslic3r/PrintConfig.cpp:1410 +#: src/libslic3r/PrintConfig.cpp:1518 msgid "The extruder to use when printing perimeters and brim. First extruder is 1." msgstr "Ekstruder używany przy druku obrysów i brim. Pierwszy ekstruder ma nr 1." -#: src/libslic3r/PrintConfig.cpp:1738 +#: src/libslic3r/PrintConfig.cpp:1853 msgid "The extruder to use when printing solid infill." msgstr "Ekstruder używany do druku zwartego wypełnienia." -#: src/libslic3r/PrintConfig.cpp:1966 +#: src/libslic3r/PrintConfig.cpp:2108 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 "Ekstruder używany przy druku warstw łączących podpory z modelem (1+, zero aby użyć obecnie wybranego ekstrudera i zminimalizować zmiany filamentu). Ma wpływ również na druk tratwy (raftu)." +msgstr "Ekstruder używany przy druku warstw łączących podpory z modelem (1+, zero, aby użyć obecnie wybranego ekstrudera i zminimalizować zmiany filamentu). Ma wpływ również na druk tratwy (raftu)." -#: src/libslic3r/PrintConfig.cpp:1939 +#: src/libslic3r/PrintConfig.cpp:2081 msgid "The extruder to use when printing support material, raft and skirt (1+, 0 to use the current extruder to minimize tool changes)." msgstr "Ekstruder używany przy druku podpór, tratwy (raft) i skirtu (1+, zero aby użyć obecnie wybranego ekstrudera i zminimalizować zmiany filamentu)." -#: src/libslic3r/PrintConfig.cpp:727 +#: src/libslic3r/PrintConfig.cpp:763 msgid "The filament material type for use in custom G-codes." msgstr "Rodzaj filamentu używanego przy własnym G-code." -#: src/libslic3r/PrintConfig.cpp:3494 +#: src/libslic3r/PrintConfig.cpp:3693 msgid "The file where the output will be written (if not specified, it will be based on the input file)." msgstr "Plik, w którym będzie zapisany efekt wyjściowy (jeśli nie zostanie określony, to będzie bazować na pliku wejściowym)." -#: src/libslic3r/PrintConfig.cpp:1102 +#: src/libslic3r/PrintConfig.cpp:1195 msgid "The firmware supports stealth mode" msgstr "Firmware wspiera tryb Stealth" -#: src/libslic3r/PrintConfig.cpp:120 +#: src/libslic3r/PrintConfig.cpp:122 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 "Pierwsza warstwa zostanie zmniejszona o tą wartość w osiach X i Y aby zniwelować efekt stopy słonia (Elephant Foot - gdy pierwsza warstwa \"rozjeżdża\" się na boki)." +msgstr "Pierwsza warstwa zostanie zmniejszona o tą wartość w osiach X i Y, aby zniwelować efekt stopy słonia (Elephant Foot - gdy pierwsza warstwa \"rozjeżdża\" się na boki)." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3820 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3927 src/slic3r/GUI/Tab.cpp:3457 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4283 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4410 +#: src/slic3r/GUI/SavePresetDialog.cpp:117 msgid "the following characters are not allowed:" msgstr "następujące znaki nie są dozwolone:" -#: src/slic3r/GUI/ConfigWizard.cpp:1830 +#: src/slic3r/GUI/ConfigWizard.cpp:2257 msgid "The following FFF printer models have no filament selected:" msgstr "Następujące modele drukarek FFF nie mają przypisanych filamentów:" -#: src/slic3r/GUI/ConfigWizard.cpp:1848 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1004 +msgid "The following presets were modified:" +msgstr "Następujące zestawy ustawień zostały zmodyfikowane:" + +#: src/slic3r/GUI/ConfigWizard.cpp:2275 msgid "The following SLA printer models have no materials selected:" msgstr "Następujące modele drukarek SLA nie mają przypisanych materiałów:" -#: src/slic3r/GUI/Tab.cpp:3461 +#: src/slic3r/GUI/SavePresetDialog.cpp:125 msgid "the following suffix is not allowed:" msgstr "następujący sufiks nie jest dozwolony:" -#: src/libslic3r/PrintConfig.cpp:2871 +#: src/libslic3r/PrintConfig.cpp:3035 msgid "The gap between the object bottom and the generated pad in zero elevation mode." msgstr "Odstęp między najniższą częścią modelu a wygenerowaną podkładką w trybie zerowego podniesienia." -#: src/libslic3r/PrintConfig.cpp:2704 +#: src/libslic3r/PrintConfig.cpp:2868 msgid "The height of the pillar base cone" msgstr "Wysokość stożka bazowego podpory" -#: src/slic3r/GUI/DoubleSlider.cpp:1922 +#: src/slic3r/GUI/DoubleSlider.cpp:2140 msgid "The last color change data was saved for a multi extruder printing with tool changes for whole print." msgstr "Dane ostatniej zmiany koloru zostały zapisane dla drukarki wielomateriałowej ze zmianami narzędzi dla całego wydruku." -#: src/slic3r/GUI/DoubleSlider.cpp:1900 src/slic3r/GUI/DoubleSlider.cpp:1916 +#: src/slic3r/GUI/DoubleSlider.cpp:2119 src/slic3r/GUI/DoubleSlider.cpp:2134 msgid "The last color change data was saved for a multi extruder printing." msgstr "Dane ostatniej zmiany koloru zostały zapisane dla druku wielomateriałowego." -#: src/slic3r/GUI/DoubleSlider.cpp:1899 +#: src/slic3r/GUI/DoubleSlider.cpp:2118 msgid "The last color change data was saved for a single extruder printing." msgstr "Dane ostatniej zmiany koloru zostały zapisane dla druku z jednym ekstruderem." -#: src/libslic3r/PrintConfig.cpp:2745 +#: src/libslic3r/PrintConfig.cpp:2909 msgid "The max distance of two pillars to get linked with each other. A zero value will prohibit pillar cascading." msgstr "Maksymalny dystans pomiędzy słupkami podpór, które powinny zostać połączone. Wartość 0 zapobiegnie łączeniu słupków podpór." -#: src/libslic3r/PrintConfig.cpp:2736 +#: src/libslic3r/PrintConfig.cpp:2900 msgid "The max length of a bridge" msgstr "Maksymalna długość mostu" -#: src/libslic3r/PrintConfig.cpp:2714 +#: 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 "Minimalny odstęp stopy słupka od modelu, wyrażony w mm. Ma zastosowanie w trybie zerowego podniesienia, gdy odstęp określony tym parametrem będzie oddzielał model od podkładki." -#: src/libslic3r/PrintConfig.cpp:185 +#: src/slic3r/GUI/SavePresetDialog.cpp:142 +msgid "The name cannot be empty." +msgstr "Nazwa nie może być pusta." + +#: 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 "Liczba dolnych warstw jest zwiększona ponad bottom_solid_layers, jeśli to konieczne, aby spełnić warunek minimalnej grubości powłoki." -#: src/libslic3r/PrintConfig.cpp:2143 +#: src/libslic3r/PrintConfig.cpp:2286 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 "Liczba górnych warstw jest zwiększona ponad top_solid_layers, jeśli to konieczne, aby spełnić warunek minimalnej grubości powłoki. Przydaje się do uniknięcia efektu \"pillowingu\" (wypychania górnych warstw) podczas drukowania ze zmienną wysokością warstwy." -#: src/libslic3r/PrintConfig.cpp:2277 +#: src/slic3r/GUI/Plater.cpp:2326 +msgid "The object appears to be saved in inches" +msgstr "Model wygląda na zapisany w calach" + +#: src/libslic3r/PrintConfig.cpp:2420 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 "Model zostanie zmniejszony lub zwiększony w osiach X i Y o zadaną wartość (ujemna = zmniejszenie, dotatnia = zwiększenie). Może być przydatne przy kalibracji średnic otworów." -#: src/libslic3r/PrintConfig.cpp:1503 +#: src/libslic3r/PrintConfig.cpp:1611 msgid "The object will be raised by this number of layers, and support material will be generated under it." msgstr "Model zostanie podniesiony o zadaną ilość warstw i umieszczony na podporach." -#: src/libslic3r/PrintConfig.cpp:2424 +#: src/libslic3r/PrintConfig.cpp:2803 +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 "Udział procentowy mniejszych słupków w stosunku do normalnych w problematycznych obszarach, gdzie normalne słupki nie mieszczą się." + +#: src/libslic3r/PrintConfig.cpp:2567 msgid "" "The percentage of the bed area. \n" "If the print area exceeds the specified value, \n" @@ -7797,39 +8950,51 @@ msgstr "" "Jeśli gabaryty wydruku przekraczają zadaną wartość,\n" "to zostanie użyte wolne przechylanie, w innym przypadku - szybkie" -#: src/slic3r/GUI/GUI_App.cpp:932 -msgid "The presets on the following tabs were modified" -msgstr "Ustawienia na następujących kartach zostały zmodyfikowane" +#: src/slic3r/GUI/Tab.cpp:3430 +msgid "The physical printer(s) below is based on the preset, you are going to delete." +msgstr "Na zestawie ustawień, który chcesz usunąć, bazuje poniższa fizyczna drukarka (lub fizyczne drukarki)." -#: src/libslic3r/PrintConfig.cpp:1846 +#: src/slic3r/GUI/Tab.cpp:3438 +msgid "The physical printer(s) below is based only on the preset, you are going to delete." +msgstr "Tylko na zestawie ustawień, który chcesz usunąć, bazuje poniższa fizyczna drukarka (lub fizyczne drukarki)." + +#: src/slic3r/GUI/GUI_App.cpp:1676 +msgid "The preset(s) modifications are successfully saved" +msgstr "Modyfikacje zestawu (lub zestawów) ustawień zapisane pomyślnie" + +#: src/libslic3r/PrintConfig.cpp:1988 msgid "The printer multiplexes filaments into a single hot end." msgstr "Drukarka przechodzi pomiędzy filamentami używając jednego hotendu." -#: src/libslic3r/Format/3mf.cpp:1630 +#: src/libslic3r/Format/3mf.cpp:1667 msgid "The selected 3mf file has been saved with a newer version of %1% and is not compatible." msgstr "Wybrany plik 3mf został zapisany przy pomocy nowszej wersji %1% i nie jest kompatybilny." -#: src/libslic3r/Format/AMF.cpp:934 +#: src/libslic3r/Format/AMF.cpp:955 msgid "The selected amf file has been saved with a newer version of %1% and is not compatible." msgstr "Wybrany plik amf został zapisany przy pomocy nowszej wersji %1% i nie jest kompatybilny." -#: src/slic3r/GUI/BedShapeDialog.cpp:513 +#: src/slic3r/GUI/Plater.cpp:4751 +msgid "The selected file" +msgstr "Wybrany plik" + +#: src/slic3r/GUI/BedShapeDialog.cpp:589 msgid "The selected file contains no geometry." msgstr "Wybrany plik nie zawiera żadnego kształtu." -#: src/slic3r/GUI/BedShapeDialog.cpp:517 +#: src/slic3r/GUI/BedShapeDialog.cpp:593 msgid "The selected file contains several disjoint areas. This is not supported." msgstr "Wybrany plik zawiera kilka rozłączonych obszarów. Taki plik nie jest obsługiwany." -#: src/slic3r/GUI/Plater.cpp:2970 +#: src/slic3r/GUI/Plater.cpp:2763 msgid "The selected object can't be split because it contains more than one volume/material." msgstr "Wybrany model nie może być podzielony ponieważ składa się z więcej niż jednej części lub zawiera więcej niż jeden materiał." -#: src/slic3r/GUI/GUI_ObjectList.cpp:2270 src/slic3r/GUI/Plater.cpp:2978 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2436 src/slic3r/GUI/Plater.cpp:2771 msgid "The selected object couldn't be split because it contains only one part." msgstr "Wybrany model nie może być rozdzielony ponieważ zawiera tylko jedną część." -#: src/slic3r/GUI/MainFrame.cpp:461 +#: src/slic3r/GUI/MainFrame.cpp:1003 msgid "" "The selected project is no longer available.\n" "Do you want to remove it from the recent projects list?" @@ -7837,7 +9002,7 @@ msgstr "" "Wybrany obiekt nie jest już dostępny.\n" "Czy chcesz usunąć go z listy niedawno używanych projektów?" -#: src/slic3r/GUI/DoubleSlider.cpp:998 +#: src/slic3r/GUI/DoubleSlider.cpp:1121 msgid "" "The sequential print is on.\n" "It's impossible to apply any custom G-code for objects printing sequentually.\n" @@ -7847,20 +9012,24 @@ msgstr "" "Niemożliwe jest dodawanie własnego G-code do modeli drukowanych sekwencyjnie.\n" "Ten kod nie będzie przetwarzany podczas generowania pliku G-code." -#: src/libslic3r/PrintConfig.cpp:2846 +#: src/slic3r/GUI/ConfigWizard.cpp:1187 +msgid "The size of the object can be specified in inches" +msgstr "Rozmiar modelu może być wyrażony w calach" + +#: src/libslic3r/PrintConfig.cpp:3010 msgid "The slope of the pad wall relative to the bed plane. 90 degrees means straight walls." msgstr "Kąt pochylenia ścian podkładki względem powierzchni stołu. 90 stopni oznacza proste ściany." -#: src/libslic3r/PrintConfig.cpp:1614 +#: src/libslic3r/PrintConfig.cpp:1722 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 "Prędkość powrotu filamentu do ekstrudera po retrakcji (dotyczy tylko silnika ekstrudera). Ustaw zero aby użyć prędkości retrakcji." +msgstr "Prędkość powrotu filamentu do ekstrudera po retrakcji (dotyczy tylko silnika ekstrudera). Ustaw zero, aby użyć prędkości retrakcji." -#: src/libslic3r/PrintConfig.cpp:1606 +#: src/libslic3r/PrintConfig.cpp:1714 msgid "The speed for retractions (it only applies to the extruder motor)." msgstr "Prędkość retrakcji (stosowana tylko dla silnika ekstrudera)." -#: src/slic3r/GUI/ConfigManipulation.cpp:81 -#, no-c-format +#: src/slic3r/GUI/ConfigManipulation.cpp:80 +#, c-format msgid "" "The Spiral Vase mode requires:\n" "- one perimeter\n" @@ -7878,106 +9047,111 @@ msgstr "" "- wyłączone ustawienie \"Zagwarantuj grubość ścianki\"\n" "- wyłączone wykrywanie cienkich ścian" -#: src/libslic3r/Print.cpp:1237 +#: src/libslic3r/Print.cpp:1263 msgid "The Spiral Vase option can only be used when printing a single object." msgstr "Tryb Wazy może być aktywny tylko podczas druku pojedynczego modelu." -#: src/libslic3r/Print.cpp:1244 +#: src/libslic3r/Print.cpp:1270 msgid "The Spiral Vase option can only be used when printing single material objects." msgstr "Tryb Wazy może być używany jedynie podczas druku z jednego materiału." -#: src/slic3r/GUI/Tab.cpp:3068 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:464 msgid "The supplied name is empty. It can't be saved." msgstr "Podana nazwa jest pusta. Nie można zapisać." -#: src/slic3r/GUI/Tab.cpp:3465 +#: src/slic3r/GUI/SavePresetDialog.cpp:131 msgid "The supplied name is not available." msgstr "Podana nazwa jest niedostępna." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3819 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3926 src/slic3r/GUI/Tab.cpp:3456 -#: src/slic3r/GUI/Tab.cpp:3460 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4282 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4409 +#: src/slic3r/GUI/SavePresetDialog.cpp:116 +#: src/slic3r/GUI/SavePresetDialog.cpp:124 msgid "The supplied name is not valid;" msgstr "Podana nazwa nie jest prawidłowa;" -#: src/libslic3r/Print.cpp:1222 +#: src/libslic3r/Print.cpp:1248 msgid "The supplied settings will cause an empty print." msgstr "Wprowadzone ustawienia spowodują pusty wydruk." -#: src/libslic3r/PrintConfig.cpp:2789 +#: src/libslic3r/PrintConfig.cpp:2953 msgid "The thickness of the pad and its optional cavity walls." msgstr "Grubość podkładki i opcjonalnie wydrążenie ścianek." -#: src/libslic3r/PrintConfig.cpp:1911 +#: 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 "Dystans w pionie między modelem a warstwą łączącą materiału podporowego. Ustawienie na 0 wyłączy ustawienie mostu (prędkości i przepływu) dla pierwszej warstwy modelu nad warstwą łączącą." -#: src/slic3r/GUI/Tab.cpp:2575 +#: src/slic3r/GUI/Tab.cpp:2731 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 "" -"Opcja czyszczenia dyszy nie jest dostępna z funkcją Retrakcji w Firmware (Firmware Retraction).\n" +"Opcja czyszczenia dyszy nie jest dostępna z funkcją retrakcji w firmware (Firmware Retraction).\n" "\n" -"Wyłączyć ją aby włączyć Firmware Retraction?" +"Wyłączyć ją, aby włączyć Firmware Retraction?" -#: src/libslic3r/Print.cpp:1268 +#: src/libslic3r/Print.cpp:1294 msgid "The Wipe Tower currently does not support volumetric E (use_volumetric_e=0)." msgstr "Wieża czyszcząca obecnie nie obsługuje wolumetrycznego parametru E (use_volumetric_e=0)." -#: src/slic3r/GUI/ConfigManipulation.cpp:115 +#: src/slic3r/GUI/ConfigManipulation.cpp:114 msgid "" "The Wipe Tower currently supports the non-soluble supports only\n" "if they are printed with the current extruder without triggering a tool change.\n" "(both support_material_extruder and support_material_interface_extruder need to be set to 0)." msgstr "Wieża czyszcząca obsługuje podpory nierozpuszczalne jedynie, gdy są drukowane tym samym ekstruderem - bez wywoływania zmiany narzędzia (zarówno support_material_extruder i support_material_interface_extruder muszą być ustawione na 0)." -#: src/libslic3r/Print.cpp:1400 +#: src/libslic3r/Print.cpp:1426 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 support_material_extruder and support_material_interface_extruder need to be set to 0)." msgstr "Wieża Czyszcząca obsługuje podpory nierozpuszczalne jedynie, gdy są drukowane tym samym ekstruderem - bez wywoływania zmiany narzędzia (zarówno support_material_extruder i support_material_interface_extruder muszą być ustawione na 0)." -#: src/libslic3r/Print.cpp:1270 +#: src/libslic3r/Print.cpp:1296 msgid "The Wipe Tower is currently not supported for multimaterial sequential prints." msgstr "Wieża czyszcząca jest obecnie niedostępna dla wielomateriałowego druku sekwencyjnego." -#: src/libslic3r/Print.cpp:1262 -msgid "The Wipe Tower is currently only supported for the Marlin, RepRap/Sprinter and Repetier G-code flavors." -msgstr "Wieża Czyszcząca jest obecnie dostępna tylko dla G-code w stylu Marlin, RepRap/Sprinter i Repetier." +#: src/libslic3r/Print.cpp:1290 +msgid "The Wipe Tower is currently only supported for the Marlin, RepRap/Sprinter, RepRapFirmware and Repetier G-code flavors." +msgstr "Wieża czyszcząca jest obecnie wspierana tylko dla G-code w stylu Marlin, RepRap/Sprinter, RepRapFirmware oraz Repetier." -#: src/libslic3r/Print.cpp:1264 +#: src/libslic3r/Print.cpp:1290 msgid "The Wipe Tower is currently only supported with the relative extruder addressing (use_relative_e_distances=1)." msgstr "Wieża Czyszcząca jest obecnie dostępna tylko przy relatywnym adresowaniu ekstrudera (use_relative_e_distances=1)." -#: src/libslic3r/Print.cpp:1293 +#: src/libslic3r/Print.cpp:1319 msgid "The Wipe Tower is only supported for multiple objects if they are printed over an equal number of raft layers" msgstr "Wieża Czyszcząca jest dostępna dla wielu modeli tylko gdy są drukowane na takiej samej ilości warstw tratwy (raft)" -#: src/libslic3r/Print.cpp:1295 +#: src/libslic3r/Print.cpp:1321 msgid "The Wipe Tower is only supported for multiple objects if they are printed with the same support_material_contact_distance" msgstr "Wieża czyszcząca jest dostępna dla wielu modeli pod warunkiem, że ustawienie support_material_contact_distance jest jednakowe dla każdego z nich" -#: src/libslic3r/Print.cpp:1297 +#: src/libslic3r/Print.cpp:1323 msgid "The Wipe Tower is only supported for multiple objects if they are sliced equally." msgstr "Wieża Czyszcząca jest dostępna dla kilku modeli tylko jeśli są cięte z taką samą wysokością warstwy." -#: src/libslic3r/Print.cpp:1291 +#: src/libslic3r/Print.cpp:1317 msgid "The Wipe Tower is only supported for multiple objects if they have equal layer heights" msgstr "Wieża czyszcząca jest dostępna dla wielu modeli pod warunkiem, że mają one równą wysokość warstwy" -#: src/libslic3r/Print.cpp:1257 +#: src/libslic3r/Print.cpp:1283 msgid "The wipe tower is only supported if all extruders have the same nozzle diameter and use filaments of the same diameter." msgstr "Wieża Czyszcząca jest dostępna tylko, gdy wszystkie ekstrudery mają taką samą średnicę dyszy i używają filamentów i takiej samej średnicy." -#: src/libslic3r/Print.cpp:1339 +#: src/libslic3r/Print.cpp:1365 msgid "The Wipe tower is only supported if all objects have the same variable layer height" msgstr "Wieża czyszcząca jest dostępna dla wielu modeli pod warunkiem, że mają one taką samą wysokość warstwy" -#: src/libslic3r/SLAPrintSteps.cpp:621 +#: src/slic3r/GUI/Plater.cpp:3563 +msgid "There are active warnings concerning sliced models:" +msgstr "Istnieją aktywne ostrzeżenia dotyczące ciętych modeli:" + +#: src/libslic3r/SLAPrintSteps.cpp:619 msgid "There are unprintable objects. Try to adjust support settings to make the objects printable." msgstr "Na stole są modele niemożliwe do wydrukowania. Spróbuj zmienić ustawienia podpór, aby możliwe było ich drukowanie." -#: src/slic3r/GUI/DoubleSlider.cpp:1030 +#: src/slic3r/GUI/DoubleSlider.cpp:1155 msgid "" "There is a color change for extruder that has not been used before.\n" "Check your settings to avoid redundant color changes." @@ -7985,7 +9159,7 @@ msgstr "" "Występuje zmiana koloru dla ekstrudera, który nie był jeszcze używany.\n" "Sprawdź ustawienia, aby uniknąć niepotrzebnych zmian koloru." -#: src/slic3r/GUI/DoubleSlider.cpp:1024 +#: src/slic3r/GUI/DoubleSlider.cpp:1149 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." @@ -7993,7 +9167,7 @@ msgstr "" "Występuje zmiana koloru dla ekstrudera, który nie będzie używany do końca tego wydruku.\n" "Ten kod nie będzie przetwarzany podczas generowania G-code." -#: src/slic3r/GUI/DoubleSlider.cpp:1027 +#: src/slic3r/GUI/DoubleSlider.cpp:1152 msgid "" "There is an extruder change set to the same extruder.\n" "This code won't be processed during G-code generation." @@ -8001,12 +9175,16 @@ msgstr "" "Występuje zmiana koloru na używany przez ten sam ekstruder.\n" "Ten kod nie będzie przetwarzany podczas generowania G-code." +#: src/libslic3r/GCode.cpp:604 +msgid "There is an object with no extrusions on the first layer." +msgstr "Istnieje model bez ekstruzji na pierwszej warstwie." + #: src/slic3r/GUI/UpdateDialogs.cpp:225 #, c-format msgid "This %s version: %s" msgstr "%s wersja: %s" -#: src/slic3r/GUI/Tab.cpp:982 +#: src/slic3r/GUI/Tab.cpp:1244 msgid "" "This action is not revertable.\n" "Do you want to proceed?" @@ -8014,79 +9192,79 @@ msgstr "" "Tej czynności nie można odwrócić.\n" "Czy chcesz kontynuować?" -#: src/libslic3r/PrintConfig.cpp:165 +#: src/libslic3r/PrintConfig.cpp:199 msgid "This code is inserted between objects when using sequential printing. By default extruder and bed temperature are reset using non-wait command; however if M104, M109, M140 or M190 are detected in this custom code, Slic3r will not add temperature commands. Note that you can use placeholder variables for all Slic3r settings, so you can put a \"M109 S[first_layer_temperature]\" command wherever you want." msgstr "Ten kod jest wykonywany pomiędzy drukiem poszczególnych modeli w trybie druku sekwencyjnego. Domyślnie przy komendzie non-wait temperatury dyszy i stołu są resetowane; jednakże jeśli przy tej opcji zostaną użyte komendy M104, M109, M140 lub M190 to Slic3r nie doda własnych komend do kontroli temperatury. Pamiętaj, że możesz używać zmiennych typu placeholder, więc np. komendę \"M109 S[first_layer_temperature]\" (temperatura pierwszej warstwy) możesz umieścić gdzie chcesz." -#: src/libslic3r/PrintConfig.cpp:1081 +#: src/libslic3r/PrintConfig.cpp:1174 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 use placeholder variables for all Slic3r settings as well as [layer_num] and [layer_z]." msgstr "Ten kod jest wykonywany przy każdej zmianie warstwy - zaraz po podniesieniu głowicy na wysokość kolejnej warstwy ale zanim ekstruder przejdzie do pierwszego punktu nowej warstwy. Pamiętaj, że możesz użyć zmiennych typu placeholder dla wszystkich ustawień Slic3r, jak np. [layer_num] (numer warstwy) i [layer_z] (położenie warstwy w osi Z)." -#: src/libslic3r/PrintConfig.cpp:154 +#: src/libslic3r/PrintConfig.cpp:188 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 "Ten kod jest wykonywany przy każdej zmianie warstwy, zaraz przed podniesieniem ekstrudera na wysokość nowej warstwy. Pamiętaj, że możesz użyć zmiennych typu placeholder dla wszystkich ustawień PrusaSlicer, jak np. [layer_num] (numer warstwy) i [layer_z] (położenie warstwy w osi Z)." -#: src/libslic3r/PrintConfig.cpp:2094 +#: src/libslic3r/PrintConfig.cpp:2237 msgid "This custom code is inserted before every toolchange. Placeholder variables for all PrusaSlicer settings as well as {previous_extruder} and {next_extruder} can be used. When a tool-changing command which changes to the correct extruder is included (such as T{next_extruder}), PrusaSlicer will emit no other such command. It is therefore possible to script custom behaviour both before and after the toolchange." msgstr "Ten kod jest wykonywany przy każdej zmianie narzędzia (filamentu). Możesz użyć zmiennych dla wszystkich ustawień PrusaSlicer, jak i również {previous_extruder} i {next_extruder}. Po wysłaniu komendy zmiany narzędzia, która zmienia obecny ekstruder (np. T{next_extruder}), PrusaSlicer nie powtórzy tej komendy. Możliwe jest więc zdefiniowanie własnego zachowania zarówno przed jak i po zmianie narzędzia." -#: src/libslic3r/PrintConfig.cpp:396 +#: src/libslic3r/PrintConfig.cpp:430 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 multimaterial printers). Note that you can use placeholder variables for all PrusaSlicer settings. If you have multiple extruders, the gcode is processed in extruder order." msgstr "Ta procedura końcowa jest dodawana na końcu pliku wyjściowego, przed kodem końcowym (jak i również przed każdą zmianą z tego filamentu na kolejny w przypadku drukarek wielomateriałowych). Zauważ, że możesz używać zmiennych dla wszystkich ustawień PrusaSlicer. Jeśli masz kilka ekstruderów, to G-code jest wykonywany w ich kolejności." -#: src/libslic3r/PrintConfig.cpp:386 +#: src/libslic3r/PrintConfig.cpp:420 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 "Ta procedura końcowa jest dodawana na końcu pliku wyjściowego. Zauważ, że możesz używać zmiennych dla wszystkich ustawień PrusaSlicer." -#: src/libslic3r/PrintConfig.cpp:1258 src/libslic3r/PrintConfig.cpp:1269 +#: src/libslic3r/PrintConfig.cpp:1366 src/libslic3r/PrintConfig.cpp:1377 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 of 1.8 mm³/s (0.45mm extrusion width, 0.2mm extrusion height, feedrate 20 mm/s) to 5.4 mm³/s (feedrate 60 mm/s) will take at least 2 seconds." msgstr "To ustawienie eksperymentalne jest używane do ograniczania szybkości zmian ilości ekstrudowanego materiału. Wartość 1.8 mm³/s² oznacza, że zmiana z ilości ekstrudowanego materiału z poziomu 1.8 mm³/s (czyli 0.45 mm szerokości ekstruzji, 0.2 mm wysokości warstwy przy prędkości 20 mm/s) na 5.4 mm³/s (prędkość 60 mm/s) zajmie co najmniej 2 sekundy." -#: src/libslic3r/PrintConfig.cpp:1248 +#: src/libslic3r/PrintConfig.cpp:1356 msgid "This experimental setting is used to set the maximum volumetric speed your extruder supports." -msgstr "Ta eksperymentalna funkcja określa maksymalną prędkość objętościową, którą jest w stanie wytłoczyć Twój ekstruder." +msgstr "Ta eksperymentalna funkcja określa maksymalne natężenie przepływu (strumień objętości), które jest w stanie wytłoczyć Twój ekstruder." -#: src/libslic3r/PrintConfig.cpp:2162 +#: src/libslic3r/PrintConfig.cpp:2305 msgid "This experimental setting uses G10 and G11 commands to have the firmware handle the retraction. This is only supported in recent Marlin." -msgstr "Ta eksperymentalna funkcja używa komend G10 i G11 aby przerzucić kontrolę retrakcji na firmware. Jest wspierana jedynie przez najnowsze wersje Marlina." +msgstr "Ta eksperymentalna funkcja używa komend G10 i G11, aby przerzucić kontrolę retrakcji na firmware. Jest wspierana jedynie przez najnowsze wersje Marlina." -#: src/libslic3r/PrintConfig.cpp:2176 +#: src/libslic3r/PrintConfig.cpp:2319 msgid "This experimental setting uses outputs the E values in cubic millimeters instead of linear millimeters. If your firmware doesn't already know filament diameter(s), you can put commands like 'M200 D[filament_diameter_0] T0' in your start G-code in order to turn volumetric mode on and use the filament diameter associated to the filament selected in Slic3r. This is only supported in recent Marlin." -msgstr "Ta eksperymentalna funkcja określa wyjściowe dane E (ilość ekstruzji) w milimetrach sześciennych zamiast długości. Jeśli średnica filamentu nie została jeszcze ustawiona w firmware, możesz użyć komendy \"M200 D[filament_diameter_0] T0\" w skrypcie startowym aby włączyć tryb objętościowy i użyć filamentu powiązanego z ustawionym w Slic3r. Ta funkcja jest wspierana jedynie przez najnowsze wersje Marlina." +msgstr "Ta eksperymentalna funkcja określa wyjściowe dane E (ilość ekstruzji) w milimetrach sześciennych zamiast długości. Jeśli średnica filamentu nie została jeszcze ustawiona w firmware, możesz użyć komendy \"M200 D[filament_diameter_0] T0\" w skrypcie startowym, aby włączyć tryb objętościowy i użyć filamentu powiązanego z ustawionym w Slic3r. Ta funkcja jest wspierana jedynie przez najnowsze wersje Marlina." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3972 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4459 msgid "This extruder will be set for selected items" msgstr "Ten ekstruder zostanie ustawiony dla wybranych elementów" -#: src/libslic3r/PrintConfig.cpp:224 +#: 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 "Ten współczynnik określa ilość plastiku wytłaczaną przy drukowaniu mostów. Możesz delikatnie zmniejszyć tą wartość aby zapobiec opadaniu drukowanej linii, jednakże standardowe ustawienia są zazwyczaj dobrze dobrane i najpierw poeksperymentuj z chłodzeniem wydruku." +msgstr "Ten współczynnik określa ilość plastiku wytłaczaną przy drukowaniu mostów. Możesz delikatnie zmniejszyć tą wartość, aby zapobiec opadaniu drukowanej linii, jednakże standardowe ustawienia są zazwyczaj dobrze dobrane i najpierw poeksperymentuj z chłodzeniem wydruku." -#: src/libslic3r/PrintConfig.cpp:546 +#: 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 "Ten współczynnik określa proporcjonalną ilość przepływu plastiku. Możesz zmienić tą wartość aby uzyskać gładsze powierzchnie i poprawną szerokość ścian drukowanych z 1 linii. Ten współczynnik waha się zazwyczaj od 0.9 do 1.1. Jeśli musisz wykroczyć poza ten zakres to najpierw zmierz średnicę filamentu i kroki ekstrudera (E steps)." +msgstr "Ten współczynnik określa proporcjonalną ilość przepływu plastiku. Możesz zmienić tą wartość, aby uzyskać gładsze powierzchnie i poprawną szerokość ścian drukowanych z 1 linii. Ten współczynnik waha się zazwyczaj od 0.9 do 1.1. Jeśli musisz wykroczyć poza ten zakres to najpierw zmierz średnicę filamentu i kroki ekstrudera (E steps)." -#: src/libslic3r/PrintConfig.cpp:214 +#: src/libslic3r/PrintConfig.cpp:248 msgid "This fan speed is enforced during all bridges and overhangs." msgstr "Ta prędkość wentylatora zostanie zastosowana przy druku mostów i zwisów." -#: src/libslic3r/PrintConfig.cpp:992 +#: src/libslic3r/PrintConfig.cpp:1036 msgid "This feature allows to combine infill and speed up your print by extruding thicker infill layers while preserving thin perimeters, thus accuracy." msgstr "Ta funkcja pozwala ustawić oddzielne wysokości dla wypełnienia i obrysów modelu i przyspieszyć wydruk ustawiając np. wyższą warstwę wypełnienia zachowując nominalną wysokość obrysów, co pozwoli zachować wysoką jakość i dokładność wydruku." -#: src/libslic3r/PrintConfig.cpp:1746 +#: src/libslic3r/PrintConfig.cpp:1861 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 "Ta funkcja pozwoli wstawić zwartą warstwę wypełnienia pomiędzy określoną liczbą warstw. Ustaw zero aby wyłączyć. Możesz ustawić tu dowolną wartość (np. 9999) a Slic3r automatycznie wybierze maksymalną możliwą liczbę warstw biorąc pod uwagę średnicę dyszy i wysokość warstwy." +msgstr "Ta funkcja pozwoli wstawić zwartą warstwę wypełnienia pomiędzy określoną liczbą warstw. Ustaw zero, aby wyłączyć. Możesz ustawić tu dowolną wartość (np. 9999) a PrusaSlicer automatycznie wybierze maksymalną możliwą liczbę warstw biorąc pod uwagę średnicę dyszy i wysokość warstwy." -#: src/libslic3r/PrintConfig.cpp:1795 +#: 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 "Ta funkcja pozwala drukować modele z 1 zewnętrzną ścianką z ciągłym podnoszeniem Z, aby uniknąć widocznego szwu (czyli ekstruder nie będzie drukował po 1 warstwie na 1 wysokości, lecz będzie podnosił się płynnie w formie spirali). Wymaga użycia 1 obrysu, zerowego wypełnienia, braku warstw górnych i braku podpór. Możesz ustawić dowolną ilość dolnych warstw jak i obrysów skirt/brim. Nie zadziała przy druku więcej niż jednego modelu." -#: src/slic3r/GUI/Plater.cpp:2367 +#: 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 "Ten plik nie może zostać wczytany w Trybie Prostym. Czy chcesz przełączyć na Tryb Zaawansowany?" -#: src/slic3r/GUI/Plater.cpp:2357 +#: src/slic3r/GUI/Plater.cpp:2319 msgid "" "This file contains several objects positioned at multiple heights.\n" "Instead of considering them as multiple objects, should I consider\n" @@ -8113,84 +9291,96 @@ msgstr "" "Czy chcesz kontynuować i mimo wszystko wgrać ten plik .hex?\n" "Kontynuuj tylko, jeśli wiesz, że tak powinno być." -#: src/libslic3r/PrintConfig.cpp:314 +#: src/libslic3r/PrintConfig.cpp:348 msgid "This flag enables the automatic cooling logic that adjusts print speed and fan speed according to layer printing time." msgstr "Ta flaga umożliwia automatyczne sterowanie chłodzeniem przez zmianę prędkości druku i wentylatora względem czasu druku jednej warstwy." -#: src/slic3r/GUI/Plater.cpp:536 +#: src/slic3r/GUI/Plater.cpp:402 msgid "This flag enables the brim that will be printed around each object on the first layer." msgstr "Ta flaga włącza brim, który zostanie wydrukowany na pierwszej warstwie wokół każdego modelu." -#: src/libslic3r/PrintConfig.cpp:1538 +#: src/libslic3r/PrintConfig.cpp:1646 msgid "This flag enforces a retraction whenever a Z move is done." msgstr "Ta flaga wymusza retrakcję przy każdej zmianie wysokości Z." -#: src/libslic3r/PrintConfig.cpp:2194 +#: src/libslic3r/PrintConfig.cpp:2337 msgid "This flag will move the nozzle while retracting to minimize the possible blob on leaky extruders." -msgstr "Ta flaga włączy ruch dyszy przy retrakcji aby zminimalizować formowanie się kropli filamentu wokół końcówki dyszy przy ekstruderach, które mają tendencję do wyciekania filamentu." +msgstr "Ta flaga włączy ruch dyszy przy retrakcji, aby zminimalizować formowanie się kropli filamentu wokół końcówki dyszy przy ekstruderach, które mają tendencję do wyciekania filamentu." -#: src/slic3r/GUI/Tab.cpp:953 +#: src/libslic3r/PrintConfig.cpp:1961 +msgid "This G-code will be used as a code for the color change" +msgstr "Ten G-code zostanie użyty przy zmianie koloru" + +#: src/libslic3r/PrintConfig.cpp:1970 +msgid "This G-code will be used as a code for the pause print" +msgstr "Ten G-code zostanie użyty przy pauzie wydruku" + +#: src/libslic3r/PrintConfig.cpp:1979 +msgid "This G-code will be used as a custom code" +msgstr "Ten G-code zostanie użyty jako niestandardowy" + +#: src/slic3r/GUI/Tab.cpp:1272 msgid "This is a default preset." msgstr "To jest domyślny zestaw ustawień." -#: src/libslic3r/PrintConfig.cpp:2766 +#: src/libslic3r/PrintConfig.cpp:2930 msgid "This is a relative measure of support points density." msgstr "To jest względna miara gęstości punktów podpór." -#: src/slic3r/GUI/Tab.cpp:2338 +#: src/slic3r/GUI/Tab.cpp:2507 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 "To jest drukarka wielomateriałowa z jednym ekstruderem, więc średnice wszystkich ekstruderów zostaną zastąpione nową wartością. Kontynuować?" -#: src/slic3r/GUI/Tab.cpp:955 +#: src/slic3r/GUI/Tab.cpp:1274 msgid "This is a system preset." msgstr "To jest systemowy zestaw ustawień." -#: src/libslic3r/PrintConfig.cpp:523 src/libslic3r/PrintConfig.cpp:583 +#: src/libslic3r/PrintConfig.cpp:559 src/libslic3r/PrintConfig.cpp:619 msgid "This is only used in the Slic3r interface as a visual help." -msgstr "Ta funkcja jest używana jedynie w interfejsie Slic3ra jako pomoc wizualna." +msgstr "Ta funkcja jest używana jedynie w interfejsie PrusaSlicer jako pomoc wizualna." -#: src/libslic3r/PrintConfig.cpp:336 +#: src/libslic3r/PrintConfig.cpp:370 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 "Do tej wartości przyspieszenia drukarka wróci gdy ustawione zostaną przyspieszenia dla określonych ruchów (obrysy/wypełnienie). Ustaw zero aby wyłączyć resetowanie przyspieszeń." +msgstr "Do tej wartości przyspieszenia drukarka wróci gdy ustawione zostaną przyspieszenia dla określonych ruchów (obrysy/wypełnienie). Ustaw zero, aby wyłączyć resetowanie przyspieszeń." -#: src/libslic3r/PrintConfig.cpp:194 +#: src/libslic3r/PrintConfig.cpp:228 msgid "This is the acceleration your printer will use for bridges. Set zero to disable acceleration control for bridges." -msgstr "To jest przyspieszenie stosowane przy druku mostów. Ustaw zero aby wyłączyć osobne ustawienia przyspieszenia dla mostów." +msgstr "To jest przyspieszenie stosowane przy druku mostów. Ustaw zero, aby wyłączyć osobne ustawienia przyspieszenia dla mostów." -#: src/libslic3r/PrintConfig.cpp:860 +#: src/libslic3r/PrintConfig.cpp:900 msgid "This is the acceleration your printer will use for first layer. Set zero to disable acceleration control for first layer." -msgstr "To jest przyspieszenie stosowane przy druku pierwszej warstwy. Ustaw zero aby wyłączyć osobne ustawienia przyspieszenia dla pierwszej warstwy." +msgstr "To jest przyspieszenie stosowane przy druku pierwszej warstwy. Ustaw zero, aby wyłączyć osobne ustawienia przyspieszenia dla pierwszej warstwy." -#: src/libslic3r/PrintConfig.cpp:982 +#: src/libslic3r/PrintConfig.cpp:1026 msgid "This is the acceleration your printer will use for infill. Set zero to disable acceleration control for infill." -msgstr "To jest przyspieszenie stosowane przy druku wypełnienia. Ustaw zero aby wyłączyć osobne ustawienia przyspieszenia dla wypełnienia." +msgstr "To jest przyspieszenie stosowane przy druku wypełnienia. Ustaw zero aby, wyłączyć osobne ustawienia przyspieszenia dla wypełnienia." -#: src/libslic3r/PrintConfig.cpp:1400 +#: 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 "To jest przyspieszenie stosowane przy druku obrysów. Wysoka wartość, np. 9000 zazwyczaj daje dobre rezultaty - pod warunkiem, że Twój sprzęt się do tego nadaje. Ustaw zero aby wyłączyć osobne ustawienia przyspieszenia dla obrysów." +msgstr "To jest przyspieszenie stosowane przy druku obrysów. Wysoka wartość, np. 9000 zazwyczaj daje dobre rezultaty - pod warunkiem, że Twój sprzęt się do tego nadaje. Ustaw zero, aby wyłączyć osobne ustawienia przyspieszenia dla obrysów." -#: src/libslic3r/PrintConfig.cpp:1327 +#: src/libslic3r/PrintConfig.cpp:1435 msgid "This is the diameter of your extruder nozzle (for example: 0.5, 0.35 etc.)" msgstr "To jest średnica dyszy ekstrudera (np. 0.5, 0.35 itp.)" -#: src/libslic3r/PrintConfig.cpp:1227 -#, no-c-format +#: src/libslic3r/PrintConfig.cpp:1335 +#, c-format msgid "This is the highest printable layer height for this extruder, used to cap the variable layer height and support layer height. Maximum recommended layer height is 75% of the extrusion width to achieve reasonable inter-layer adhesion. If set to 0, layer height is limited to 75% of the nozzle diameter." -msgstr "To jest najwyższa możliwa do wydrukowania wysokość warstwy dla tego ekstrudera i jednocześnie górny limit dla funkcji zmiennej wysokości warstwy i materiału podporowego. Zalecana jest wartość nie większa niż 75% szerokości ekstruzji aby zapewnić dobrą przyczepność warstw do siebie. Jeśli ustawisz zero, wysokość warstwy zostanie ograniczona do 75% średnicy dyszy." +msgstr "To jest najwyższa możliwa do wydrukowania wysokość warstwy dla tego ekstrudera i jednocześnie górny limit dla funkcji zmiennej wysokości warstwy i materiału podporowego. Zalecana jest wartość nie większa niż 75% szerokości ekstruzji, aby zapewnić dobrą przyczepność warstw do siebie. Jeśli ustawisz zero, wysokość warstwy zostanie ograniczona do 75% średnicy dyszy." -#: src/libslic3r/PrintConfig.cpp:1290 +#: src/libslic3r/PrintConfig.cpp:1398 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 "To jest najniższa możliwa do wydrukowania wysokość warstwy dla tego ekstrudera i jednocześnie dolny limit dla funkcji zmiennej wysokości warstwy. Zazwyczaj jest to 0.05 lub 0.1 mm." -#: src/libslic3r/GCode.cpp:639 +#: src/libslic3r/GCode.cpp:624 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 "Dzieje się to zazwyczaj z powodu zbyt małych odcinków ekstruzji (są one pomijane) lub uszkodzenia modelu. Spróbuj naprawić model lub zmienić jego orientację na stole." -#: src/libslic3r/PrintConfig.cpp:2215 +#: src/libslic3r/PrintConfig.cpp:2358 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 "Ta formuła określa objętość (w milimetrach sześciennych) wymaganą do wyczyszczenia filamentu na wieży czyszczącej dla danej pary narzędzi (filamentów)." -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:878 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:928 msgid "" "This operation is irreversible.\n" "Do you want to proceed?" @@ -8198,31 +9388,35 @@ msgstr "" "Tej czynności nie można cofnąć.\n" "Czy chcesz kontynuować?" -#: src/libslic3r/PrintConfig.cpp:1442 +#: src/libslic3r/PrintConfig.cpp:1550 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 surfaces which benefit from a higher number of perimeters if the Extra Perimeters option is enabled." msgstr "To ustawienie określa ilość obrysów, które będą generowane dla każdej warstwy. Weź po uwagę, że Slic3r może zwiększyć tą liczbę automatycznie gdy wykryje zwisy, w których wydruku pomoże dodatkowa ilość obrysów przy jednocześnie włączonej opcji \"Dodatkowe obrysy jeśli potrzebne\"." -#: src/libslic3r/PrintConfig.cpp:1356 +#: src/libslic3r/PrintConfig.cpp:1464 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 "Ta funkcja obniży temperatury nieużywanych ekstruderów aby zapobiec wyciekaniu filamentu z dyszy. Równocześnie włączy wysoki skirt i przesunie ekstrudery poza jego obrys przy zmianie temperatury." -#: src/libslic3r/PrintConfig.cpp:1029 +#: src/libslic3r/PrintConfig.cpp:1073 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 "Ta opcja wygeneruje wypełnienie jedynie w miejscach, gdzie jest potrzebne do podparcia górnych warstw (zadziała na zasadzie wewnętrznych podpór). Włączenie jej spowolni generowanie G-code ze względu na konieczność kilkukrotnej weryfikacji." -#: src/libslic3r/PrintConfig.cpp:1022 +#: src/libslic3r/PrintConfig.cpp:1066 msgid "This option will switch the print order of perimeters and infill, making the latter first." msgstr "Ta opcja zamieni kolejność druku obrysów i wypełnienia, aby te drugie były drukowane jako pierwsze." -#: src/libslic3r/PrintConfig.cpp:459 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:85 +msgid "This printer will be shown in the presets list as" +msgstr "Ta drukarka będzie widnieć na liście zestawów ustawień jako" + +#: src/libslic3r/PrintConfig.cpp:495 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 "To ustawienie steruje prędkością zewnętrznych (widocznych) obrysów. Jeśli ustawisz wartość procentową (np. 80%) to zostanie obliczona z prędkości obrysów ustawionej powyżej. Ustaw zero aby pozwolić na sterowanie automatyczne." +msgstr "To ustawienie steruje prędkością zewnętrznych (widocznych) obrysów. Jeśli ustawisz wartość procentową (np. 80%) to zostanie obliczona z prędkości obrysów ustawionej powyżej. Ustaw zero, aby pozwolić na sterowanie automatyczne." -#: src/libslic3r/PrintConfig.cpp:1717 +#: src/libslic3r/PrintConfig.cpp:1832 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 "To ustawienie reguluje prędkość obrysów posiadających promień mniejszy lub równy 6.5 mm (zazwyczaj chodzi o otwory). Jeśli ustawisz wartość procentową (np. 80%) to zostanie obliczona z prędkości obrysów ustawionej powyżej. Ustaw zero aby użyć nastawów automatycznych." +msgstr "To ustawienie reguluje prędkość obrysów posiadających promień mniejszy lub równy 6.5 mm (zazwyczaj chodzi o otwory). Jeśli ustawisz wartość procentową (np. 80%) to zostanie obliczona z prędkości obrysów ustawionej powyżej. Ustaw zero, aby użyć ustawień automatycznych." -#: src/libslic3r/PrintConfig.cpp:1038 +#: src/libslic3r/PrintConfig.cpp:1082 msgid "This setting applies an additional overlap between infill and perimeters for better bonding. Theoretically this shouldn't be needed, but backlash might cause gaps. If expressed as percentage (example: 15%) it is calculated over perimeter extrusion width." msgstr "To ustawienie odpowiada za dodatkowe nakładanie na siebie linii obrysów i wypełnienia dla lepszego spojenia. Teoretycznie nie powinno być potrzebne ale luz może powodować szczeliny. Jeśli ustawisz wartość procentową (np. 15%) to zostanie obliczona z szerokości ekstruzji obrysów." @@ -8230,31 +9424,31 @@ msgstr "To ustawienie odpowiada za dodatkowe nakładanie na siebie linii obrysó 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 "To ustawienie odpowiada za wysokość warstwy (czyli cięcia), a w konsekwencji za ich liczbę. Niższe warstwy zapewniają lepszą dokładność i jakość, ale wydłużają ogólny czas wydruku." -#: src/libslic3r/PrintConfig.cpp:1218 +#: src/libslic3r/PrintConfig.cpp:1326 msgid "This setting represents the maximum speed of your fan." msgstr "To ustawienie odpowiada za maksymalną prędkość wentylatora." -#: src/libslic3r/PrintConfig.cpp:1281 +#: src/libslic3r/PrintConfig.cpp:1389 msgid "This setting represents the minimum PWM your fan needs to work." msgstr "To ustawienie wyraża minimalny PWM (Pulse Width Modulation), który jest niezbędny dla wentylatora." -#: src/libslic3r/PrintConfig.cpp:1829 +#: src/libslic3r/PrintConfig.cpp:1944 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 printers). This is used to override settings for a specific filament. If PrusaSlicer detects M104, M109, M140 or M190 in your custom codes, such commands will not be prepended automatically so you're free to customize the order of heating commands and other custom actions. Note that you can use placeholder variables for all PrusaSlicer settings, so you can put a \"M109 S[first_layer_temperature]\" command wherever you want. If you have multiple extruders, the gcode is processed in extruder order." msgstr "Ta procedura startowa jest dodawana po kodzie startowym drukarki (i po zmianie filamentu w przypadku drukarek wielomateriałowych). Jest używana, aby nadpisać ustawienia dla konkretnego filamentu. Jeśli PrusaSlicer wykryje M104, M109, M140 lub M190 w Twoich kodach, to takie komendy nie będą automatycznie poprzedzane, więc możesz dowolnie ustawić kolejność nagrzewania i inne skonfigurowane przez siebie akcje. Zauważ, że możesz używać zmiennych dla wszystkich ustawień PrusaSlicer, więc możesz umieścić komendę \"M109 S[first_layer_temperature]\" gdzie tylko zechcesz. Jeśli masz kilka ekstruderów, to ten G-code jest wykonywany zgodnie z kolejnością ekstruderów." -#: src/libslic3r/PrintConfig.cpp:1814 +#: src/libslic3r/PrintConfig.cpp:1929 msgid "This start procedure is inserted at the beginning, after bed has reached the target temperature and extruder just started heating, and before extruder has finished heating. If PrusaSlicer detects M104 or M190 in your custom codes, such commands will not be prepended automatically so you're free to customize the order of heating commands and other custom actions. Note that you can use placeholder variables for all PrusaSlicer settings, so you can put a \"M109 S[first_layer_temperature]\" command wherever you want." msgstr "Ta procedura startowa jest dodawana na początku, po osiągnięciu przez stół zadanej temperatury i rozpoczęciu nagrzewania ekstrudera, ale przed zakończeniem tego procesu. Jeśli PrusaSlicer wykryje M140 lub M190 w Twoich kodach, to takie komendy nie będą automatycznie poprzedzane, więc możesz dowolnie ustawić kolejność nagrzewania i inne skonfigurowane przez siebie akcje. Zauważ, że możesz używać zmiennych dla wszystkich ustawień PrusaSlicer, więc możesz umieścić komendę \"M109 S[first_layer_temperature]\" gdzie tylko zechcesz." -#: src/libslic3r/PrintConfig.cpp:695 +#: src/libslic3r/PrintConfig.cpp:731 msgid "This string is edited by RammingDialog and contains ramming specific parameters." msgstr "Ten ciąg jest edytowany przez RammingDialog i zawiera parametry właściwe dla wyciskania." -#: src/libslic3r/PrintConfig.cpp:2286 +#: src/libslic3r/PrintConfig.cpp:2429 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 example, if your endstop zero actually leaves the nozzle 0.3mm far from the print bed, set this to -0.3 (or fix your endstop)." msgstr "Wartość tego ustawienia zostanie dodana (lub odjęta) od wszystkich koordynat w osi Z w pliku wyjściowym G-code. Jest używana dla korekcji złego położenia wyłącznika krańcowego osi Z. Np. jeśli końcówka dyszy znajduje się 0.3 mm ponad położeniem zerowym, ustaw tutaj -0.3 (lub napraw krańcówkę)." -#: src/libslic3r/PrintConfig.cpp:2208 +#: src/libslic3r/PrintConfig.cpp:2351 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 "To ustawienie określa wymaganą objętość wieży czyszczącej przy zmianie danego narzędzia. Te wartości używane są do uproszczenia określenia pełnych wartości czyszczenia poniżej." @@ -8271,82 +9465,96 @@ msgstr "" "\n" "Możesz zamknąć %s i spróbować ponownie z nowszą wersją, lub możesz też uruchomić ponownie konfigurację początkową. Spowoduje to stworzenie kopii istniejącej konfiguracji przed zainstalowaniem plików kompatybilnych z %s ." -#: src/libslic3r/PrintConfig.cpp:2458 +#: src/libslic3r/PrintConfig.cpp:2601 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 "To ustawienie zastosuje korekcję gamma do zrasteryzowanych wielokątów 2D. Wartość 0 oznacza ustawienie progu w środku zakresu. Spowoduje to wyeliminowanie antaliasing bez utraty otworów w wielokątach." -#: src/libslic3r/PrintConfig.cpp:2081 +#: src/libslic3r/PrintConfig.cpp:2224 msgid "Threads" msgstr "Wątki" -#: src/libslic3r/PrintConfig.cpp:2082 +#: src/libslic3r/PrintConfig.cpp:2225 msgid "Threads are used to parallelize long-running tasks. Optimal threads number is slightly above the number of available cores/processors." msgstr "Wątki są używane do równoległego przetwarzania zadań wymagających używa wielu zasobów. Optymalna liczba wątków powinna być odrobinę większa od dostępnej liczby rdzeni lub procesorów." -#: src/slic3r/GUI/Tab.cpp:2093 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:235 +msgid "Threshold:" +msgstr "Próg:" + +#: src/slic3r/GUI/Tab.cpp:2263 msgid "Tilt" msgstr "Przechylanie" -#: src/slic3r/GUI/Tab.cpp:2094 +#: src/slic3r/GUI/Tab.cpp:2264 msgid "Tilt time" msgstr "Czas przechylania" +#: src/slic3r/GUI/GCodeViewer.cpp:2225 src/slic3r/GUI/GCodeViewer.cpp:2233 #: src/slic3r/GUI/RammingChart.cpp:76 msgid "Time" msgstr "Czas" -#: src/libslic3r/PrintConfig.cpp:687 +#: src/libslic3r/PrintConfig.cpp:723 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 "Czas, który drukarka (lub dodatek Multi Material 2.0) poświęca na ładowanie nowego filamentu podczas zmiany narzędzia (przy wykonywaniu kodu T). Ten czas jest dodawany do szacowanego czasu druku." -#: src/libslic3r/PrintConfig.cpp:702 +#: src/libslic3r/PrintConfig.cpp:738 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 "Czas, który drukarka (lub dodatek Multi Material 2.0) poświęca na rozładowanie nowego filamentu podczas zmiany narzędzia (przy wykonywaniu kodu T). Ten czas jest dodawany do szacowanego czasu druku." -#: src/libslic3r/PrintConfig.cpp:2407 +#: src/libslic3r/PrintConfig.cpp:2550 msgid "Time of the fast tilt" msgstr "Czas szybkiego przechylania" -#: src/libslic3r/PrintConfig.cpp:2416 +#: src/libslic3r/PrintConfig.cpp:2559 msgid "Time of the slow tilt" msgstr "Czas wolnego przechylania" -#: src/libslic3r/PrintConfig.cpp:641 +#: src/libslic3r/PrintConfig.cpp:677 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 "Czas bezczynności po rozładowaniu filamentu. Może pomóc w bezproblemowej zmianie narzędzia podczas druku z materiałami elastycznymi, które mogą potrzebować więcej czasu na skurcz termiczny wracając do nominalnego rozmiaru." -#: src/slic3r/GUI/Tab.cpp:966 -msgid "To do that please specify a new name for the preset." -msgstr "Aby to zrobić ustaw nową nazwę zestawu ustawień." +#: src/slic3r/GUI/GCodeViewer.cpp:2197 +msgid "to" +msgstr "do" -#: src/slic3r/GUI/Plater.cpp:4014 +#: src/slic3r/GUI/Tab.cpp:1284 +msgid "To do that please specify a new name for the preset." +msgstr "Aby to zrobić, ustaw nową nazwę zestawu ustawień." + +#: src/slic3r/GUI/Plater.cpp:3934 msgid "To objects" msgstr "Do modeli" -#: src/slic3r/GUI/Plater.cpp:4016 +#: src/slic3r/GUI/Plater.cpp:3936 msgid "To parts" msgstr "Na części" -#: src/slic3r/GUI/Tab.cpp:1756 -msgid "To use a custom CA file, please import your CA file into Certificate Store / Keychain." -msgstr "Aby użyć własnego certyfikatu, zaimportuj plik do Certificate Store / Keychain." +#: src/slic3r/Utils/Http.cpp:82 +msgid "To specify the system certificate store manually, please set the %1% environment variable to the correct CA bundle and restart the application." +msgstr "Aby ręcznie ustawić systemowy magazyn certyfikatów, ustaw %1% jako zmienną środowiskową pakietu i zrestartuj aplikację." -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:263 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:360 +msgid "To use a custom CA file, please import your CA file into Certificate Store / Keychain." +msgstr "Aby użyć własnego certyfikatu, zaimportuj plik do magazynu (Certificate Store / Keychain)." + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:271 #, c-format msgid "Toggle %c axis mirroring" msgstr "Włącz odbicie w osi %c" -#: src/libslic3r/Zipper.cpp:34 +#: src/libslic3r/miniz_extension.cpp:93 msgid "too many files" msgstr "zbyt wiele plików" -#: src/libslic3r/SLAPrintSteps.cpp:190 -msgid "Too much overlapping holes." +#: src/libslic3r/SLAPrintSteps.cpp:192 +msgid "Too many overlapping holes." msgstr "Zbyt wiele nakładających się otworów." -#: src/slic3r/GUI/GUI_Preview.cpp:227 src/slic3r/GUI/GUI_Preview.cpp:335 -#: src/slic3r/GUI/GUI_Preview.cpp:519 src/slic3r/GUI/GUI_Preview.cpp:574 -#: src/slic3r/GUI/GUI_Preview.cpp:835 src/libslic3r/GCode/PreviewData.cpp:357 +#: src/slic3r/GUI/GCodeViewer.cpp:2241 src/slic3r/GUI/GUI_Preview.cpp:281 +#: src/slic3r/GUI/GUI_Preview.cpp:453 src/slic3r/GUI/GUI_Preview.cpp:693 +#: src/slic3r/GUI/GUI_Preview.cpp:786 src/slic3r/GUI/GUI_Preview.cpp:1270 +#: src/libslic3r/GCode/PreviewData.cpp:362 msgid "Tool" msgstr "Narzędzie" @@ -8354,51 +9562,64 @@ msgstr "Narzędzie" msgid "Tool #" msgstr "Narzędzie #" -#: src/slic3r/GUI/Tab.cpp:2000 src/libslic3r/PrintConfig.cpp:2093 +#: src/slic3r/GUI/Tab.cpp:2189 src/libslic3r/PrintConfig.cpp:2236 msgid "Tool change G-code" msgstr "G-code wykonywany przy zmianie narzędzia" -#: src/slic3r/GUI/Tab.cpp:1491 +#: src/slic3r/GUI/GCodeViewer.cpp:2530 src/slic3r/GUI/GUI_Preview.cpp:1474 +msgid "Tool changes" +msgstr "Zmiany narzędzi" + +#: src/slic3r/GUI/GUI_Preview.cpp:1479 +msgid "Tool marker" +msgstr "Oznaczenie narzędzia" + +#: src/slic3r/GUI/GCodeViewer.cpp:223 +msgid "Tool position" +msgstr "Pozycja narzędzia" + +#: src/slic3r/GUI/Tab.cpp:1837 msgid "Toolchange parameters with single extruder MM printers" msgstr "Parametry zmiany narzędzia dla drukarek MM z jednym ekstruderem" #. 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:662 src/libslic3r/PrintConfig.cpp:2132 -#: src/libslic3r/PrintConfig.cpp:2141 +#: src/slic3r/GUI/MainFrame.cpp:959 src/slic3r/GUI/MainFrame.cpp:1279 +#: src/libslic3r/PrintConfig.cpp:2275 src/libslic3r/PrintConfig.cpp:2284 msgid "Top" msgstr "Górne" -#: src/slic3r/GUI/PresetHints.cpp:304 +#: src/slic3r/GUI/PresetHints.cpp:302 msgid "Top / bottom shell thickness hint: Not available due to invalid layer height." msgstr "Porada dot. grubości dolnej / górnej powłoki: niedostępne z powodu nieprawidłowej wysokości warstwy." -#: src/libslic3r/PrintConfig.cpp:415 +#: src/libslic3r/PrintConfig.cpp:449 msgid "Top fill pattern" msgstr "Wzór wypełnienia górnej warstwy" -#: src/slic3r/GUI/PresetHints.cpp:323 +#: src/slic3r/GUI/PresetHints.cpp:321 msgid "Top is open." msgstr "Góra jest otwarta." -#: src/slic3r/GUI/PresetHints.cpp:317 +#: src/slic3r/GUI/PresetHints.cpp:315 msgid "Top shell is %1% mm thick for layer height %2% mm." msgstr "Górna powłoka ma %1% mm grubości dla warstwy o wysokości %2% mm." -#: src/slic3r/GUI/PresetHints.cpp:192 +#: src/slic3r/GUI/PresetHints.cpp:191 msgid "top solid infill" msgstr "zwarte wypełnienie na szczycie" -#: src/slic3r/GUI/GUI_Preview.cpp:242 src/libslic3r/ExtrusionEntity.cpp:315 -#: src/libslic3r/PrintConfig.cpp:2105 src/libslic3r/PrintConfig.cpp:2117 +#: src/slic3r/GUI/GUI_Preview.cpp:306 src/libslic3r/ExtrusionEntity.cpp:319 +#: src/libslic3r/ExtrusionEntity.cpp:346 src/libslic3r/PrintConfig.cpp:2248 +#: src/libslic3r/PrintConfig.cpp:2260 msgid "Top solid infill" msgstr "Zwarte wypełnienie górne" -#: src/libslic3r/PrintConfig.cpp:2135 +#: src/libslic3r/PrintConfig.cpp:2278 msgid "Top solid layers" msgstr "Zwarte warstwy górne" -#: src/slic3r/GUI/MainFrame.cpp:662 +#: src/slic3r/GUI/MainFrame.cpp:959 src/slic3r/GUI/MainFrame.cpp:1279 msgid "Top View" msgstr "Widok z góry" @@ -8414,49 +9635,82 @@ msgstr "Całkowita objętość wyciskania" msgid "Total ramming time" msgstr "Całkowity czas wyciskania" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:516 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:640 +msgid "Transfer" +msgstr "Transfer" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:745 +msgid "Transfer the selected options to the newly selected preset \"%1%\"." +msgstr "Przenieś wybrane opcje do nowo wybranego zestawu ustawień \"%1%\"." + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:740 +msgid "Transfer the selected settings to the newly selected preset." +msgstr "Przenieś wybrane ustawienia do nowo wybranego zestawu ustawień." + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:561 msgid "Translate" msgstr "Konwersja" -#: src/slic3r/GUI/Mouse3DController.cpp:300 -#: src/slic3r/GUI/Mouse3DController.cpp:317 +#: src/slic3r/GUI/Mouse3DController.cpp:282 +#: src/slic3r/GUI/Mouse3DController.cpp:303 msgid "Translation" msgstr "Tłumaczenie" -#: src/slic3r/GUI/GUI_Preview.cpp:253 src/libslic3r/PrintConfig.cpp:2152 +#: src/slic3r/GUI/GCodeViewer.cpp:2489 src/slic3r/GUI/GUI_Preview.cpp:335 +#: src/slic3r/GUI/GUI_Preview.cpp:1471 src/libslic3r/PrintConfig.cpp:2295 msgid "Travel" msgstr "Jałowy" -#: src/libslic3r/PrintConfig.cpp:845 +#: src/libslic3r/PrintConfig.cpp:883 msgid "Triangles" msgstr "Trójkąty" -#: src/libslic3r/PrintConfig.cpp:3448 +#: src/libslic3r/PrintConfig.cpp:3647 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 "Podejmij próbę naprawienia wszystkich niezamkniętych obszarów siatki (ta opcja jest dodana w przypadku, w którym potrzebujemy pociąć model, aby przeprowadzić jakieś zadanie)." -#: src/libslic3r/PrintConfig.cpp:1467 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:165 +msgid "Type here the name of your printer device" +msgstr "Wpisz tutaj nazwę drukarki" + +#: src/libslic3r/PrintConfig.cpp:1575 msgid "Type of the printer." msgstr "Rodzaj drukarki." -#: src/slic3r/GUI/ConfigWizard.cpp:2013 src/slic3r/GUI/GUI_ObjectList.cpp:3553 +#: src/slic3r/GUI/ConfigWizard.cpp:2524 src/slic3r/GUI/ConfigWizard.cpp:2526 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4016 msgid "Type:" msgstr "Typ:" -#: src/slic3r/GUI/Plater.cpp:3428 +#: src/slic3r/GUI/OpenGLManager.cpp:275 +#, c-format +msgid "" +"Unable to load the following shaders:\n" +"%s" +msgstr "" +"Niepowodzenie wczytywania następujących modułów cieniujących:\n" +"%s" + +#: src/slic3r/GUI/Plater.cpp:3233 msgid "Unable to reload:" msgstr "Nie można wczytać:" -#: src/libslic3r/Zipper.cpp:32 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:137 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:146 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:845 +msgid "Undef" +msgstr "Undef" + +#: src/libslic3r/miniz_extension.cpp:91 msgid "undefined error" msgstr "nieznany błąd" -#: src/slic3r/GUI/GLCanvas3D.cpp:4624 src/slic3r/GUI/KBShortcutsDialog.cpp:130 -#: src/slic3r/GUI/MainFrame.cpp:581 +#: src/slic3r/GUI/GLCanvas3D.cpp:5028 src/slic3r/GUI/KBShortcutsDialog.cpp:125 +#: src/slic3r/GUI/MainFrame.cpp:1187 msgid "Undo" msgstr "Cofnij" -#: src/slic3r/GUI/GLCanvas3D.cpp:4065 +#: src/slic3r/GUI/GLCanvas3D.cpp:4382 #, c-format msgid "Undo %1$d Action" msgid_plural "Undo %1$d Actions" @@ -8465,106 +9719,98 @@ msgstr[1] "Cofnij %1$d akcji" msgstr[2] "Cofnij %1$d akcji" msgstr[3] "Cofnij %1$d akcji" -#: src/slic3r/GUI/GLCanvas3D.cpp:4047 +#: src/slic3r/GUI/GLCanvas3D.cpp:4361 msgid "Undo History" msgstr "Historia Cofnięć" -#: src/libslic3r/Zipper.cpp:56 +#: src/libslic3r/miniz_extension.cpp:115 msgid "unexpected decompressed size" msgstr "nieoczekiwany rozmiar po rozpakowaniu" #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:27 +#: src/slic3r/GUI/GUI_Preview.cpp:299 src/libslic3r/ExtrusionEntity.cpp:310 msgid "Unknown" msgstr "Nieznane" -#: src/slic3r/Utils/Duet.cpp:82 src/slic3r/Utils/Duet.cpp:137 -#: src/slic3r/Utils/FlashAir.cpp:119 src/slic3r/Utils/FlashAir.cpp:140 -#: src/slic3r/Utils/FlashAir.cpp:156 +#: src/slic3r/Utils/Duet.cpp:84 src/slic3r/Utils/Duet.cpp:139 +#: src/slic3r/Utils/FlashAir.cpp:122 src/slic3r/Utils/FlashAir.cpp:143 +#: src/slic3r/Utils/FlashAir.cpp:159 msgid "Unknown error occured" msgstr "Wystąpił nieznany błąd" +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:178 +msgid "Unknown error occured during exporting G-code." +msgstr "Wystąpił nieznany błąd podczas eksportowania G-code." + #: src/slic3r/GUI/WipeTowerDialog.cpp:263 msgid "unloaded" msgstr "rozładowano" -#: src/libslic3r/PrintConfig.cpp:623 +#: src/libslic3r/PrintConfig.cpp:659 msgid "Unloading speed" msgstr "Prędkość rozładowania" -#: src/libslic3r/PrintConfig.cpp:632 +#: src/libslic3r/PrintConfig.cpp:668 msgid "Unloading speed at the start" msgstr "Początkowa prędkość rozładowania" -#: src/slic3r/GUI/Tab.cpp:3256 +#: src/slic3r/GUI/Tab.cpp:3693 msgid "UNLOCKED LOCK" msgstr "OTWARTA KŁÓDKA" -#: src/slic3r/GUI/Tab.cpp:3282 +#: src/slic3r/GUI/Tab.cpp:3719 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" "Click to reset all settings for current option group to the system (or default) values." msgstr "" "OTWARTA KŁÓDKA oznacza, że niektóre ustawienia zostały zmodyfikowane i nie odpowiadają wartościom systemowym (lub domyślnym) w obecnej grupie opcji.\n" -"Kliknij aby zresetować wszystkie ustawienia obecnej grupy ustawień do wartości systemowych (lub domyślnych)." +"Kliknij, aby zresetować wszystkie ustawienia obecnej grupy ustawień do wartości systemowych (lub domyślnych)." -#: src/slic3r/GUI/Tab.cpp:3297 +#: src/slic3r/GUI/Tab.cpp:3734 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 "" "OTWARTA KŁÓDKA oznacza, że niektóre wartości zostały zmodyfikowane i nie odpowiadają systemowym (lub domyślnym).\n" -"Kliknij ikonę aby zresetować do wartości systemowej (lub domyślnej)." +"Kliknij ikonę, aby zresetować do wartości systemowej (lub domyślnej)." -#: src/slic3r/GUI/Plater.cpp:5203 -#, c-format -msgid "Unmounting successful. The device %s(%s) can now be safely removed from the computer." -msgstr "Wysuwanie nośnika zakończone. Urządzenie %s (%s) może być teraz bezpiecznie odłączone od komputera." - -#: src/slic3r/GUI/GUI_Preview.cpp:255 -msgid "Unretractions" -msgstr "Powrót retrakcji" - -#: src/slic3r/GUI/Tab.cpp:2947 -msgid "Unsaved Changes" -msgstr "Niezapisane zmiany" - -#: src/slic3r/GUI/GUI_App.cpp:935 -msgid "Unsaved Presets" -msgstr "Niezapisane zestawy ustawień" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:179 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:173 msgid "Unselect gizmo or clear selection" msgstr "Odznacz uchwyt lub wyczyść zaznaczenie" -#: src/libslic3r/Zipper.cpp:60 +#: src/libslic3r/miniz_extension.cpp:119 msgid "unsupported central directory size" msgstr "nieobsługiwany rozmiar katalogu centralnego" -#: src/libslic3r/Zipper.cpp:40 +#: src/libslic3r/miniz_extension.cpp:99 msgid "unsupported encryption" msgstr "nieobsługiwane szyfrowanie" -#: src/libslic3r/Zipper.cpp:42 +#: src/libslic3r/miniz_extension.cpp:101 msgid "unsupported feature" msgstr "nieobsługiwana funkcja" -#: src/libslic3r/Zipper.cpp:38 +#: src/libslic3r/miniz_extension.cpp:97 msgid "unsupported method" msgstr "nieobsługiwana metoda" -#: src/libslic3r/Zipper.cpp:50 +#: src/libslic3r/miniz_extension.cpp:109 msgid "unsupported multidisk archive" msgstr "nieobsługiwane archiwum wielodyskowe" -#: src/slic3r/GUI/GLCanvas3DManager.cpp:292 +#: src/slic3r/GUI/OpenGLManager.cpp:267 msgid "Unsupported OpenGL version" msgstr "Nieobsługiwana wersja OpenGL" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3420 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3883 msgid "Unsupported selection" msgstr "Niewłaściwy wybór" -#: src/slic3r/GUI/GLCanvas3D.cpp:955 +#: src/slic3r/GUI/GCodeViewer.cpp:2183 +msgid "up to" +msgstr "do" + +#: src/slic3r/GUI/GLCanvas3D.cpp:961 #, c-format msgid "up to %.2f mm" msgstr "do %.2f mm" @@ -8573,15 +9819,15 @@ msgstr "do %.2f mm" msgid "Update available" msgstr "Dostępna jest aktualizacja" -#: src/slic3r/GUI/ConfigWizard.cpp:779 src/slic3r/GUI/Preferences.cpp:80 +#: src/slic3r/GUI/ConfigWizard.cpp:1138 src/slic3r/GUI/Preferences.cpp:97 msgid "Update built-in Presets automatically" msgstr "Automatyczna aktualizacja wbudowanych zestawów ustawień" -#: src/slic3r/GUI/ConfigWizard.cpp:761 +#: src/slic3r/GUI/ConfigWizard.cpp:1120 msgid "Updates" msgstr "Aktualizacje" -#: src/slic3r/GUI/ConfigWizard.cpp:786 +#: src/slic3r/GUI/ConfigWizard.cpp:1145 msgid "Updates are never applied without user's consent and never overwrite user's customized settings." msgstr "Aktualizacje nie są stosowane bez wiedzy użytkownika i nigdy nie nadpisują zapisanych ustawień własnych." @@ -8589,7 +9835,7 @@ msgstr "Aktualizacje nie są stosowane bez wiedzy użytkownika i nigdy nie nadpi msgid "Upgrade" msgstr "Aktualizacja" -#: src/slic3r/GUI/GUI_App.cpp:824 +#: src/slic3r/GUI/GUI_App.cpp:1522 msgid "Upload a firmware image into an Arduino based printer" msgstr "Wgraj obraz firmware do drukarki opartej na Adruino" @@ -8605,101 +9851,118 @@ msgstr "Prześlij do serwera druku z następującą nazwą pliku:" msgid "Uploading" msgstr "Przesyłanie" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:204 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:206 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 msgid "Upper Layer" msgstr "Górna Warstwa" -#: src/slic3r/GUI/Tab.cpp:1900 -msgid "USB/Serial connection" -msgstr "Połączenie USB/szeregowe" - -#: src/libslic3r/PrintConfig.cpp:1662 -msgid "USB/serial port for printer connection." -msgstr "Port USB/szeregowy do połączenia z drukarką." - -#: src/slic3r/GUI/DoubleSlider.cpp:1147 +#: src/slic3r/GUI/DoubleSlider.cpp:1276 msgid "Use another extruder" msgstr "Użyj innego ekstrudera" -#: src/slic3r/GUI/Preferences.cpp:143 +#: src/slic3r/GUI/Preferences.cpp:220 msgid "Use custom size for toolbar icons" msgstr "Użyj własnego rozmiaru ikon pasków narzędzi" -#: src/libslic3r/PrintConfig.cpp:2161 +#: src/slic3r/GUI/Preferences.cpp:268 +msgid "Use environment map" +msgstr "Użyj mapy środowiskowej" + +#: src/libslic3r/PrintConfig.cpp:2304 msgid "Use firmware retraction" msgstr "Użyj retrakcji z firmware" +#: src/slic3r/GUI/ImGuiWrapper.cpp:800 src/slic3r/GUI/Search.cpp:464 +msgid "Use for search" +msgstr "Użyj do wyszukiwania" + +#: src/libslic3r/PrintConfig.cpp:1218 +msgid "Use for time estimate" +msgstr "Użyj do obliczenia czasu" + #: src/slic3r/GUI/PrintHostDialogs.cpp:42 msgid "Use forward slashes ( / ) as a directory separator if needed." msgstr "Użyj prawego ukośnika ( / ) jako separatora katalogu w razie potrzeby." -#: src/slic3r/GUI/Preferences.cpp:126 +#: src/slic3r/GUI/Preferences.cpp:191 msgid "Use free camera" msgstr "Użyj wolnego widoku" -#: src/libslic3r/PrintConfig.cpp:2780 +#: src/slic3r/GUI/ConfigWizard.cpp:1188 +msgid "Use inches" +msgstr "Użyj cali" + +#: src/libslic3r/PrintConfig.cpp:2944 msgid "Use pad" msgstr "Użyj podkładki" -#: src/slic3r/GUI/Preferences.cpp:119 +#: src/slic3r/GUI/Preferences.cpp:184 msgid "Use perspective camera" msgstr "Użyj widoku perspektywicznego" -#: src/libslic3r/PrintConfig.cpp:2168 +#: src/libslic3r/PrintConfig.cpp:2311 msgid "Use relative E distances" msgstr "Użyj względnych wartości E (ekstruzji)" -#: src/slic3r/GUI/Preferences.cpp:104 +#: src/slic3r/GUI/Preferences.cpp:135 msgid "Use Retina resolution for the 3D scene" msgstr "Użyj rozdzielczości Retina dla generowania podglądu 3D" -#: src/libslic3r/PrintConfig.cpp:540 +#: src/libslic3r/PrintConfig.cpp:576 msgid "Use this option to set the axis letter associated to your printer's extruder (usually E but some printers use A)." msgstr "Ta opcja określa literę, którą Twoja drukarka opisuje oś ekstrudera (zazwyczaj jest to E ale niektóre drukarki używają A)." -#: src/libslic3r/PrintConfig.cpp:1893 +#: src/libslic3r/PrintConfig.cpp:2035 msgid "Use this setting to rotate the support material pattern on the horizontal plane." msgstr "To ustawienie odpowiada za obrót materiału podporowego w płaszczyźnie poziomej." -#: src/libslic3r/PrintConfig.cpp:2175 +#: src/libslic3r/PrintConfig.cpp:2318 msgid "Use volumetric E" msgstr "Użyj wolumetrycznej wartości E" -#: src/slic3r/GUI/DoubleSlider.cpp:1171 +#: src/slic3r/GUI/DoubleSlider.cpp:1298 msgid "used" msgstr "używany" -#: src/slic3r/GUI/Plater.cpp:237 +#: src/slic3r/GUI/Plater.cpp:243 msgid "Used Filament (g)" msgstr "Użyty filament (g)" -#: src/slic3r/GUI/Plater.cpp:235 src/slic3r/GUI/Plater.cpp:1229 +#: src/slic3r/GUI/Plater.cpp:1141 +msgid "Used Filament (in)" +msgstr "Użyty filament (cale)" + +#: src/slic3r/GUI/Plater.cpp:1153 +msgid "Used Filament (in³)" +msgstr "Użyty filament (cale³)" + +#: src/slic3r/GUI/Plater.cpp:241 src/slic3r/GUI/Plater.cpp:1141 msgid "Used Filament (m)" msgstr "Użyty filament (m)" -#: src/slic3r/GUI/Plater.cpp:236 +#: src/slic3r/GUI/Plater.cpp:242 src/slic3r/GUI/Plater.cpp:1153 msgid "Used Filament (mm³)" msgstr "Użyty filament (mm³)" -#: src/slic3r/GUI/Plater.cpp:1191 +#: src/slic3r/GUI/Plater.cpp:1100 msgid "Used Material (ml)" msgstr "Używany materiał (ml)" -#: src/slic3r/GUI/Plater.cpp:238 +#: src/slic3r/GUI/Plater.cpp:244 msgid "Used Material (unit)" msgstr "Używany materiał (jednostka)" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:24 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:24 src/libslic3r/PrintConfig.cpp:132 msgid "User" msgstr "Użytkownik" -#: src/slic3r/GUI/Preset.cpp:1168 src/slic3r/GUI/Preset.cpp:1288 -#: src/slic3r/GUI/PresetBundle.cpp:1677 +#: src/slic3r/GUI/PresetComboBoxes.cpp:230 +#: src/slic3r/GUI/PresetComboBoxes.cpp:778 +#: src/slic3r/GUI/PresetComboBoxes.cpp:934 msgid "User presets" msgstr "Zestawy użytkownika" -#: src/libslic3r/Zipper.cpp:90 +#: src/libslic3r/miniz_extension.cpp:149 msgid "validation failed" msgstr "niepowodzenie weryfikacji" @@ -8711,31 +9974,31 @@ msgstr "Wartość jest taka sama jak systemowa" msgid "Value was changed and is not equal to the system value or the last saved preset" msgstr "Wartość została zmieniona i nie równa się wartości systemowej lub tej z ostatnio zapisanego zestawu ustawień" -#: src/slic3r/GUI/Tab.cpp:2202 +#: src/slic3r/GUI/Tab.cpp:2371 msgid "Values in this column are for Normal mode" msgstr "Wartości w tej kolumnie dotyczą trybu Normal" -#: src/slic3r/GUI/Tab.cpp:2208 +#: src/slic3r/GUI/Tab.cpp:2377 msgid "Values in this column are for Stealth mode" msgstr "Wartości w tej kolumnie dotyczą trybu Stealth" -#: src/slic3r/GUI/GLCanvas3D.cpp:234 src/slic3r/GUI/GLCanvas3D.cpp:4573 +#: src/slic3r/GUI/GLCanvas3D.cpp:231 src/slic3r/GUI/GLCanvas3D.cpp:4978 msgid "Variable layer height" msgstr "Zmienna wysokość warstwy" -#: src/slic3r/GUI/GLCanvas3D.cpp:1709 +#: src/slic3r/GUI/GLCanvas3D.cpp:1786 msgid "Variable layer height - Adaptive" msgstr "Zmienna wysokość warstwy - Adaptacyjna" -#: src/slic3r/GUI/GLCanvas3D.cpp:599 +#: src/slic3r/GUI/GLCanvas3D.cpp:565 msgid "Variable layer height - Manual edit" msgstr "Zmienna wysokość warstwy - ręczna edycja" -#: src/slic3r/GUI/GLCanvas3D.cpp:1701 +#: src/slic3r/GUI/GLCanvas3D.cpp:1778 msgid "Variable layer height - Reset" msgstr "Zmienna wysokość warstwy - Reset" -#: src/slic3r/GUI/GLCanvas3D.cpp:1717 +#: src/slic3r/GUI/GLCanvas3D.cpp:1794 msgid "Variable layer height - Smooth all" msgstr "Zmienna wysokość warstwy - Wygładź wszystko" @@ -8743,19 +10006,20 @@ msgstr "Zmienna wysokość warstwy - Wygładź wszystko" msgid "variants" msgstr "warianty" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:57 src/slic3r/GUI/Tab.cpp:971 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:57 src/slic3r/GUI/Tab.cpp:1289 msgid "vendor" msgstr "dostawca" -#: src/slic3r/GUI/ConfigWizard.cpp:565 +#: src/slic3r/GUI/ConfigWizard.cpp:589 msgid "Vendor:" msgstr "Producent:" -#: src/libslic3r/PrintConfig.cpp:928 +#: src/libslic3r/PrintConfig.cpp:972 msgid "Verbose G-code" msgstr "G-code rozszerzony" -#: src/slic3r/GUI/AboutDialog.cpp:231 src/slic3r/GUI/MainFrame.cpp:64 +#: src/slic3r/GUI/AboutDialog.cpp:256 src/slic3r/GUI/GUI_App.cpp:239 +#: src/slic3r/GUI/MainFrame.cpp:164 msgid "Version" msgstr "Wersja" @@ -8763,24 +10027,36 @@ msgstr "Wersja" msgid "version" msgstr "wersja" -#: src/slic3r/GUI/Tab.cpp:1053 +#: src/slic3r/GUI/Tab.cpp:1375 msgid "Vertical shells" msgstr "Powłoka pionowa" -#: src/slic3r/GUI/GUI_Preview.cpp:218 +#: src/slic3r/GUI/GUI_Preview.cpp:265 src/slic3r/GUI/GUI_Preview.cpp:271 msgid "View" msgstr "Widok" -#: src/slic3r/GUI/ConfigWizard.cpp:813 +#: src/slic3r/GUI/ConfigWizard.cpp:1172 msgid "View mode" msgstr "Widok" -#: src/libslic3r/SLAPrintSteps.cpp:413 src/libslic3r/SLAPrintSteps.cpp:422 -#: src/libslic3r/SLAPrintSteps.cpp:461 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:666 +msgid "" +"Visit \"Preferences\" and check \"%1%\"\n" +"to be asked about unsaved changes again." +msgstr "" +"Otwórz Preferencje i sprawdź \"%1%\",\n" +"aby włączyć potwierdzanie niezapisanych zmian." + +#: src/libslic3r/PrintConfig.cpp:3553 +msgid "Visualize an already sliced and saved G-code" +msgstr "Wizualizacja pociętego i zapisanego G-code" + +#: src/libslic3r/SLAPrintSteps.cpp:411 src/libslic3r/SLAPrintSteps.cpp:420 +#: src/libslic3r/SLAPrintSteps.cpp:459 msgid "Visualizing supports" msgstr "Wizualizacja podpór" -#: src/slic3r/GUI/Plater.cpp:161 +#: src/slic3r/GUI/Plater.cpp:167 msgid "Volume" msgstr "Objętość" @@ -8788,175 +10064,190 @@ msgstr "Objętość" msgid "Volume to purge (mm³) when the filament is being" msgstr "Objętość do wyczyszczenia (mm³), gdy filament jest" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1106 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1230 msgid "Volumes in Object reordered" msgstr "Części modelu przeorganizowane" -#: src/slic3r/GUI/PresetHints.cpp:219 +#: src/slic3r/GUI/PresetHints.cpp:218 msgid "Volumetric" msgstr "Objętościowy" -#: src/slic3r/GUI/Tab.cpp:1591 +#: src/slic3r/GUI/Tab.cpp:1930 msgid "Volumetric flow hints not available" msgstr "Podpowiedzi dot. objętości przepływu są niedostępne" -#: src/slic3r/GUI/GUI_Preview.cpp:226 +#: src/slic3r/GUI/GUI_Preview.cpp:280 msgid "Volumetric flow rate" -msgstr "Objętościowa wartość przepływu" +msgstr "Objętościowe natężenie przepływu" -#: src/libslic3r/GCode/PreviewData.cpp:355 +#: src/slic3r/GUI/GCodeViewer.cpp:2240 src/libslic3r/GCode/PreviewData.cpp:360 msgid "Volumetric flow rate (mm³/s)" -msgstr "Objętościowy współczynnik przepływu (mm³/s)" +msgstr "Natężenie przepływu (mm³/s)" #: src/slic3r/GUI/RammingChart.cpp:81 msgid "Volumetric speed" -msgstr "Prędkość objętościowa" +msgstr "Natężenie przepływu" -#: src/libslic3r/PrintConfig.cpp:2915 +#: src/libslic3r/PrintConfig.cpp:3079 msgid "Wall thickness" msgstr "Grubość ścianki" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1270 src/slic3r/GUI/GUI.cpp:251 -#: src/slic3r/GUI/Tab.cpp:3084 src/slic3r/GUI/WipeTowerDialog.cpp:45 -#: src/slic3r/GUI/WipeTowerDialog.cpp:366 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1129 src/slic3r/GUI/GUI.cpp:256 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:478 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:502 +#: src/slic3r/GUI/WipeTowerDialog.cpp:45 src/slic3r/GUI/WipeTowerDialog.cpp:366 msgid "Warning" msgstr "Ostrzeżenie" -#: src/slic3r/GUI/ConfigWizard.cpp:431 +#: src/slic3r/GUI/NotificationManager.cpp:672 +#: src/slic3r/GUI/NotificationManager.cpp:687 +#: src/slic3r/GUI/NotificationManager.cpp:702 +msgid "WARNING:" +msgstr "OSTRZEŻENIE:" + +#: src/slic3r/GUI/ConfigWizard.cpp:449 msgid "Welcome" msgstr "Witaj" -#: src/slic3r/GUI/ConfigWizard.cpp:427 +#: src/slic3r/GUI/ConfigWizard.cpp:445 #, c-format msgid "Welcome to the %s Configuration Assistant" msgstr "Witamy w Asystencie Konfiguracji %s" -#: src/slic3r/GUI/ConfigWizard.cpp:429 +#: src/slic3r/GUI/ConfigWizard.cpp:447 #, c-format msgid "Welcome to the %s Configuration Wizard" msgstr "Witamy w Asystencie Konfiguracji %s" -#: src/slic3r/GUI/Preferences.cpp:97 +#: src/slic3r/GUI/SavePresetDialog.cpp:310 +msgid "What would you like to do with \"%1%\" preset after saving?" +msgstr "Co chcesz zrobić z zestawem ustawień \"%1%\" po zapisaniu?" + +#: src/slic3r/GUI/Preferences.cpp:114 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 "Zaznaczenie tej opcji spowoduje wyświetlanie wszystkich ustawień druku i filamentów w edytorze zestawów ustawień, nawet jeśli są oznaczone jak niekompatybilne z wybraną drukarką" -#: src/slic3r/GUI/PresetHints.cpp:224 +#: src/slic3r/GUI/Preferences.cpp:156 +msgid "When closing the application, always ask for unsaved changes" +msgstr "Zawsze pytaj o niezapisane zmiany podczas zamykania aplikacji" + +#: src/slic3r/GUI/PresetHints.cpp:223 msgid "when printing" msgstr "podczas druku" -#: src/libslic3r/PrintConfig.cpp:253 +#: 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 "To ustawienie sprawi, że podczas druku modeli z wielu materiałów, PrusaSlicer przytnie nachodzące na siebie części (druga część zostanie przycięta przez pierwszą, trzecia przez pierwszą i drugą itd.)" -#: src/libslic3r/PrintConfig.cpp:305 +#: 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." -msgstr "Włączenie tej opcji sprawi, że przy druku kilku modeli drukarka wydrukuje jeden model w całości zanim przejdzie do następnego (zaczynając od najniższej warstwy). Przydaje się aby uniknąć ryzyka niepowodzenia wydruku kilku części. Slic3r powinien ostrzec przed możliwością kolizji z ekstruderem, ale zachowaj ostrożność." +msgstr "Włączenie tej opcji sprawi, że przy druku kilku modeli drukarka wydrukuje jeden model w całości zanim przejdzie do następnego (zaczynając od najniższej warstwy). Przydaje się, aby uniknąć ryzyka niepowodzenia wydruku kilku części. PrusaSlicer powinien ostrzec przed możliwością kolizji z ekstruderem, ale zachowaj ostrożność." -#: src/libslic3r/PrintConfig.cpp:891 +#: src/libslic3r/PrintConfig.cpp:933 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 plates. This can be expressed as an absolute value or as a percentage (for example: 150%) over the default layer height." -msgstr "Podczas druku z bardzo małą wysokością warstwy warto mimo wszystko wydrukować najniższą warstwę o większej wysokości aby zwiększyć przyczepność i tolerancję na niedoskonałości powierzchni druki. Może być wyrażona jako wartość bezwzględna lub procentowa (np. 150%) nominalnej wysokości warstwy." +msgstr "Podczas druku z bardzo małą wysokością warstwy warto mimo wszystko wydrukować najniższą warstwę o większej wysokości, aby zwiększyć przyczepność i tolerancję na niedoskonałości powierzchni druki. Może być wyrażona jako wartość bezwzględna lub procentowa (np. 150%) nominalnej wysokości warstwy." -#: src/libslic3r/PrintConfig.cpp:1553 +#: src/libslic3r/PrintConfig.cpp:1661 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 "Kiedy retrakcja zostaje wykonana przed zmianą ekstrudera, filament o określonej długości jest wciągany z powrotem (mierzona jest długość nieprzetworzonego filamentu, zanim wejdzie do ekstrudera)." -#: src/libslic3r/PrintConfig.cpp:1545 +#: src/libslic3r/PrintConfig.cpp:1653 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 "Kiedy zostaje wykonana retrakcja to filament o określonej długości jest wciągany z powrotem (mierzona jest długość nieprzetworzonego filamentu, zanim wejdzie do ekstrudera)." -#: src/libslic3r/PrintConfig.cpp:1391 +#: src/libslic3r/PrintConfig.cpp:1499 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 positive, it is loaded further, if negative, the loading move is shorter than unloading." msgstr "Gdy ta wartość wynosi zero, to długość ładowania filamentu z pozycji zaparkowanej jest dokładnie taka sama, jak podczas rozładowywania. Jeśli jest dodatnia to jest większa (więcej filamentu zostanie załadowane), jeśli ujemna to jest mniejsza niż przy rozładowywaniu." -#: src/libslic3r/PrintConfig.cpp:1238 +#: src/libslic3r/PrintConfig.cpp:1346 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 "Ustawienie pozostałych prędkości na 0 spowoduje, ze Slic3r będzie automatycznie przeliczał optymalną prędkość dla utrzymania stałego ciśnienia materiału w ekstruderze. To eksperymentalne ustawienie określa maksymalną dozwoloną prędkość druku." -#: src/libslic3r/PrintConfig.cpp:1597 +#: src/libslic3r/PrintConfig.cpp:1705 msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament." msgstr "Jeśli retrakcja jest korygowana po zmianie narzędzia, ekstruder przepchnie taką dodatkową ilość filamentu." -#: src/libslic3r/PrintConfig.cpp:1589 +#: src/libslic3r/PrintConfig.cpp:1697 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 "Jeśli retrakcja jest korygowana po ruchu jałowym, ekstruder przepchnie taką dodatkową ilość filamentu. Ta opcja jest rzadko potrzebna." -#: src/slic3r/GUI/Tab.cpp:3263 +#: src/slic3r/GUI/Tab.cpp:3700 msgid "WHITE BULLET" msgstr "BIAŁA KROPKA" -#: src/slic3r/GUI/Tab.cpp:3285 +#: src/slic3r/GUI/Tab.cpp:3722 msgid "WHITE BULLET icon indicates a non system (or non default) preset." msgstr "BIAŁA KROPKA oznacza niesystemowy (lub inny niż domyślny) zestaw ustawień." -#: src/slic3r/GUI/Tab.cpp:3288 +#: src/slic3r/GUI/Tab.cpp:3725 msgid "WHITE BULLET icon indicates that the settings are the same as in the last saved preset for the current option group." msgstr "BIAŁA KROPKA oznacza, że ustawienia są takie same jak w ostatnio zapisanym zestawie ustawień dla obecnej grupy opcji." -#: src/slic3r/GUI/Tab.cpp:3303 +#: src/slic3r/GUI/Tab.cpp:3740 msgid "WHITE BULLET icon indicates that the value is the same as in the last saved preset." msgstr "BIAŁA KROPKA oznacza, że wartość jest taka sama jak w ostatnio zapisanym zestawie ustawień." -#: src/slic3r/GUI/GUI_Preview.cpp:223 src/libslic3r/PrintConfig.cpp:2238 +#: src/slic3r/GUI/GUI_Preview.cpp:277 src/libslic3r/PrintConfig.cpp:2381 msgid "Width" msgstr "Szerokość" -#: src/libslic3r/GCode/PreviewData.cpp:349 +#: src/slic3r/GUI/GCodeViewer.cpp:2237 src/libslic3r/GCode/PreviewData.cpp:354 msgid "Width (mm)" msgstr "Szerokość (mm)" -#: src/libslic3r/PrintConfig.cpp:2640 +#: src/libslic3r/PrintConfig.cpp:2783 msgid "Width from the back sphere center to the front sphere center" msgstr "Odstęp pomiędzy środkami przedniej i tylnej części łącznika podpory" -#: src/libslic3r/PrintConfig.cpp:2239 +#: src/libslic3r/PrintConfig.cpp:2382 msgid "Width of a wipe tower" msgstr "Szerokość wieży czyszczącej" -#: src/libslic3r/PrintConfig.cpp:2891 +#: src/libslic3r/PrintConfig.cpp:3055 msgid "Width of the connector sticks which connect the object and the generated pad." msgstr "Średnica słupków łączących model z wygenerowaną podkładką." -#: src/libslic3r/PrintConfig.cpp:2354 +#: src/libslic3r/PrintConfig.cpp:2497 msgid "Width of the display" msgstr "Szerokość wyświetlacza" -#: src/slic3r/GUI/PresetHints.cpp:48 +#: src/slic3r/GUI/PresetHints.cpp:47 msgid "will always run at %1%%%" msgstr "będzie zawsze pracować w %1%%%" -#: src/slic3r/GUI/PresetHints.cpp:55 +#: src/slic3r/GUI/PresetHints.cpp:54 msgid "will be turned off." msgstr "będzie wyłączony." -#: src/libslic3r/PrintConfig.cpp:2441 +#: src/libslic3r/PrintConfig.cpp:2584 msgid "Will inflate or deflate the sliced 2D polygons according to the sign of the correction." msgstr "Trójkąty 2D zostaną rozciągnięte lub ściśnięte zgodnie z kierunkiem korekcji." -#: src/libslic3r/PrintConfig.cpp:2261 +#: src/libslic3r/PrintConfig.cpp:2404 msgid "Wipe into this object" msgstr "Czyszczenie na tym modelu" -#: src/libslic3r/PrintConfig.cpp:2253 +#: src/libslic3r/PrintConfig.cpp:2396 msgid "Wipe into this object's infill" msgstr "Czyszczenie na wypełnieniu modelu" -#: src/slic3r/GUI/GUI_ObjectList.cpp:39 src/slic3r/GUI/GUI_ObjectList.cpp:101 -#: src/slic3r/GUI/GUI_ObjectList.cpp:619 src/libslic3r/PrintConfig.cpp:2252 -#: src/libslic3r/PrintConfig.cpp:2260 +#: 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:2395 +#: src/libslic3r/PrintConfig.cpp:2403 msgid "Wipe options" msgstr "Opcje czyszczenia" -#: src/slic3r/GUI/GUI_Preview.cpp:248 src/slic3r/GUI/Tab.cpp:1191 -#: src/libslic3r/ExtrusionEntity.cpp:321 +#: src/slic3r/GUI/GUI_Preview.cpp:313 src/slic3r/GUI/Tab.cpp:1521 +#: src/libslic3r/ExtrusionEntity.cpp:326 src/libslic3r/ExtrusionEntity.cpp:360 msgid "Wipe tower" msgstr "Wieża czyszcząca" -#: src/slic3r/GUI/Plater.cpp:1231 src/slic3r/GUI/Plater.cpp:1245 +#: src/slic3r/GUI/Plater.cpp:1143 src/slic3r/GUI/Plater.cpp:1160 msgid "wipe tower" msgstr "wieża czyszcząca" -#: src/slic3r/GUI/ConfigManipulation.cpp:120 -#: src/slic3r/GUI/ConfigManipulation.cpp:140 +#: src/slic3r/GUI/ConfigManipulation.cpp:119 +#: src/slic3r/GUI/ConfigManipulation.cpp:139 msgid "Wipe Tower" msgstr "Wieża czyszcząca" @@ -8964,36 +10255,36 @@ msgstr "Wieża czyszcząca" msgid "Wipe tower - Purging volume adjustment" msgstr "Wieża czyszcząca - dostosowanie objętości czyszczenia" -#: src/slic3r/GUI/Tab.cpp:1488 +#: src/slic3r/GUI/Tab.cpp:1834 msgid "Wipe tower parameters" msgstr "Parametry wieży czyszczącej" -#: src/libslic3r/PrintConfig.cpp:2245 +#: src/libslic3r/PrintConfig.cpp:2388 msgid "Wipe tower rotation angle" msgstr "Kąt obrotu wieży czyszczącej" -#: src/libslic3r/PrintConfig.cpp:2246 +#: src/libslic3r/PrintConfig.cpp:2389 msgid "Wipe tower rotation angle with respect to x-axis." msgstr "Obrót wieży czyszczącej względem osi X." -#: src/libslic3r/PrintConfig.cpp:2193 +#: src/libslic3r/PrintConfig.cpp:2336 msgid "Wipe while retracting" msgstr "Czyszczenie przy retrakcji" -#: src/slic3r/GUI/PresetHints.cpp:225 +#: src/slic3r/GUI/PresetHints.cpp:224 msgid "with a volumetric rate" msgstr "ze współczynnikiem objętościowym" -#: src/libslic3r/PrintConfig.cpp:1530 +#: src/libslic3r/PrintConfig.cpp:1638 msgid "With bowden extruders, it may be wise to do some amount of quick retract before doing the wipe movement." msgstr "Przy ekstruderze typu bowden warto wykonać szybką retrakcję przed ruchem czyszczącym." -#: src/libslic3r/PrintConfig.cpp:2056 +#: src/libslic3r/PrintConfig.cpp:2198 msgid "With sheath around the support" msgstr "Osłona wokół podpór" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:62 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:105 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:68 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:111 msgid "World coordinates" msgstr "Globalny układ współrzędnych" @@ -9011,84 +10302,100 @@ msgstr "" "\n" "Zaktualizowane paczki konfiguracyjne:" -#: src/libslic3r/Zipper.cpp:92 +#: src/libslic3r/miniz_extension.cpp:151 msgid "write calledback failed" msgstr "błąd write calledback" -#: src/libslic3r/PrintConfig.cpp:3382 +#: src/libslic3r/PrintConfig.cpp:3581 msgid "Write information about the model to the console." msgstr "Zapis informacji o modelu do konsoli." -#: src/slic3r/Utils/Duet.cpp:131 +#: src/slic3r/Utils/Duet.cpp:133 msgid "Wrong password" msgstr "Nieprawidłowe hasło" -#: src/libslic3r/PrintConfig.cpp:2225 +#: src/libslic3r/PrintConfig.cpp:2368 msgid "X coordinate of the left front corner of a wipe tower" msgstr "Koordynata X wieży czyszczącej od przedniego lewego narożnika" -#: src/libslic3r/PrintConfig.cpp:1879 +#: src/libslic3r/PrintConfig.cpp:2021 msgid "XY separation between an object and its support" msgstr "Odstęp materiału podporowego od modelu w osiach XY" -#: src/libslic3r/PrintConfig.cpp:1881 +#: src/libslic3r/PrintConfig.cpp:2023 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 "Odstęp materiału podporowego od modelu w osiach XY. Jeśli ustawisz wartość procentową (np. 15%) to zostanie obliczona z szerokości ekstruzji obrysów zewnętrznych." -#: src/libslic3r/PrintConfig.cpp:2275 +#: src/libslic3r/PrintConfig.cpp:2418 msgid "XY Size Compensation" msgstr "Korekta wymiarów XY" -#: src/libslic3r/PrintConfig.cpp:2232 +#: src/libslic3r/PrintConfig.cpp:2375 msgid "Y coordinate of the left front corner of a wipe tower" msgstr "Koordynata wieży czyszczącej w osi Y od przedniego lewego narożnika" -#: src/slic3r/GUI/Plater.cpp:1170 +#: src/slic3r/GUI/Plater.cpp:1079 msgid "Yes" msgstr "Tak" -#: src/libslic3r/PrintConfig.cpp:1317 +#: src/slic3r/GUI/Plater.cpp:1405 +msgid "You can open only one .gcode file at a time." +msgstr "Możesz mieć otwarty tylko jeden plik .gcode w tym samym czasie." + +#: src/libslic3r/PrintConfig.cpp:1425 msgid "You can put here your personal notes. This text will be added to the G-code header comments." msgstr "Tutaj możesz umieścić notatki, które zostaną dodane do nagłówka pliku G-code." -#: src/libslic3r/PrintConfig.cpp:589 +#: src/libslic3r/PrintConfig.cpp:625 msgid "You can put your notes regarding the filament here." msgstr "Tutaj możesz umieścić notatki dotyczące filamentu." -#: src/libslic3r/PrintConfig.cpp:1473 +#: src/libslic3r/PrintConfig.cpp:1581 msgid "You can put your notes regarding the printer here." msgstr "Tutaj możesz umieścić notatki dotyczące drukarki." -#: src/libslic3r/PrintConfig.cpp:2579 +#: src/libslic3r/PrintConfig.cpp:2722 msgid "You can put your notes regarding the SLA print material here." msgstr "Tutaj możesz umieścić notatki dotyczące materiału druku SLA." -#: src/libslic3r/PrintConfig.cpp:360 +#: src/libslic3r/PrintConfig.cpp:394 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 "Wpisując tutaj wartość dodatnią możesz wyłączyć wentylator podczas druku pierwszych warstw, aby nie pogarszać przyczepności do stołu." -#: src/libslic3r/PrintConfig.cpp:1364 +#: src/libslic3r/PrintConfig.cpp:1472 msgid "You can use all configuration options as variables inside this template. For example: [layer_height], [fill_density] etc. You can also use [timestamp], [year], [month], [day], [hour], [minute], [second], [version], [input_filename], [input_filename_base]." msgstr "Możesz użyć wszystkich opcji konfiguracjnych jako zmiennych w tym szablonie, takich jak np: [layer_height] - wysokość warstwy, [fill_density] - gęstość wypełnienia, itp. Możesz również użyć [timestamp] - czas, [year] - rok, [month] - miesiąc, [day] - dzień, [hour] - godzina, [minute] - minuta, [second] - sekunda, [version] - wersja, [input_filename] - pełna nazwa pliku wejściowego, [input_filename_base] - nazwa pliku wejściowego bez rozszerzenia." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3546 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4009 msgid "You can't change a type of the last solid part of the object." msgstr "Nie możesz zmienić typu ostatniej zwartej części modelu." -#: src/slic3r/GUI/Plater.cpp:2390 +#: src/slic3r/GUI/Plater.cpp:2352 #, 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 "Nie możesz dodać obiektu/ów z %s, ponieważ jeden lub więcej modeli składa się z wielu części" -#: src/slic3r/GUI/Plater.cpp:2311 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:208 src/slic3r/GUI/Plater.cpp:2254 msgid "You cannot load SLA project with a multi-part object on the bed" msgstr "Nie możesz wczytać projektu SLA mając na stole wieloczęściowy model" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:578 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:625 msgid "You cannot use non-uniform scaling mode for multiple objects/parts selection" msgstr "Nie możesz używać skalowania nierównomiernego dla kliku modeli/części" -#: src/slic3r/GUI/GLCanvas3DManager.cpp:287 +#: src/slic3r/GUI/SavePresetDialog.cpp:277 +msgid "" +"You have selected physical printer \"%1%\" \n" +"with related printer preset \"%2%\"" +msgstr "" +"Wybrana została fizyczna drukarka \"%1%\"\n" +"z powiązanym zestawem ustawień drukarki \"%2%\"" + +#: src/slic3r/GUI/GUI_App.cpp:1078 +msgid "You have the following presets with saved options for \"Print Host upload\"" +msgstr "Masz następujące zestawy ustawień z zapisaną opcją \"Wysyłania do serwera druku\"" + +#: src/slic3r/GUI/OpenGLManager.cpp:262 msgid "You may need to update your graphics card driver." msgstr "Może być wymagana aktualizacja sterowników karty graficznej." @@ -9096,37 +10403,49 @@ msgstr "Może być wymagana aktualizacja sterowników karty graficznej." msgid "You must install a configuration update." msgstr "Do instalacji jest wymagana aktualizacja konfiguracji." -#: src/slic3r/GUI/Preferences.cpp:172 +#: src/slic3r/GUI/Preferences.cpp:299 #, c-format msgid "You need to restart %s to make the changes effective." msgstr "Wymagany jest restart %s, aby wprowadzić zmiany." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3421 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:468 +msgid "You should to change a name of your printer device. It can't be saved." +msgstr "Należy zmienić nazwę drukarki. Nie można jej zapisać." + +#: src/slic3r/GUI/GUI_ObjectList.cpp:3884 #, c-format msgid "You started your selection with %s Item." msgstr "Wybór rozpoczęty przez %s." -#: src/slic3r/GUI/DoubleSlider.cpp:1902 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:664 +msgid "You will not be asked about the unsaved changes the next time you close PrusaSlicer." +msgstr "Podczas kolejnego zamknięcia PrusaSlicer nie dostaniesz pytania o niezapisane zmiany." + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:665 +msgid "You will not be asked about the unsaved changes the next time you switch a preset." +msgstr "Podczas kolejnej zmiany zestawu ustawień nie dostaniesz pytania o niezapisane zmiany." + +#: src/slic3r/GUI/DoubleSlider.cpp:2121 msgid "Your current changes will delete all saved color changes." msgstr "Wprowadzane zmiany usuną wszystkie zmiany kolorów." -#: src/slic3r/GUI/DoubleSlider.cpp:1923 +#: src/slic3r/GUI/DoubleSlider.cpp:2141 msgid "Your current changes will delete all saved extruder (tool) changes." msgstr "Obecne zmiany spowodują usunięcie wszystkich zapisanych zmian ekstruderów (narzędzi)." -#: src/slic3r/GUI/MainFrame.cpp:911 +#: src/slic3r/GUI/MainFrame.cpp:1612 msgid "Your file was repaired." msgstr "Twój plik został naprawiony." -#: src/slic3r/GUI/Plater.cpp:2528 +#: src/slic3r/GUI/Plater.cpp:2490 msgid "Your object appears to be too large, so it was automatically scaled down to fit your print bed." msgstr "Importowany model przekracza wymiary przestrzeni roboczej i został przeskalowany do odpowiednich rozmiarów." -#: src/libslic3r/PrintConfig.cpp:2285 +#: src/libslic3r/PrintConfig.cpp:2428 msgid "Z offset" msgstr "Z offset" -#: src/slic3r/GUI/ConfigManipulation.cpp:60 +#: src/slic3r/GUI/ConfigManipulation.cpp:59 msgid "" "Zero first layer height is not valid.\n" "\n" @@ -9136,7 +10455,7 @@ msgstr "" "\n" "Wysokość pierwszej warstwy zostanie ustawiona na 0,01." -#: src/slic3r/GUI/ConfigManipulation.cpp:48 +#: src/slic3r/GUI/ConfigManipulation.cpp:47 msgid "" "Zero layer height is not valid.\n" "\n" @@ -9146,28 +10465,28 @@ msgstr "" "\n" "Wysokość warstwy zostanie ustawiona na 0,01." -#: src/libslic3r/PrintConfig.cpp:2667 +#: src/libslic3r/PrintConfig.cpp:2831 msgid "Zig-Zag" msgstr "Zig-Zag" -#: src/slic3r/GUI/Mouse3DController.cpp:308 -#: src/slic3r/GUI/Mouse3DController.cpp:317 +#: src/slic3r/GUI/Mouse3DController.cpp:294 +#: src/slic3r/GUI/Mouse3DController.cpp:303 msgid "Zoom" msgstr "Zoom" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:183 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:177 msgid "Zoom in" msgstr "Przybliżenie" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:184 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:178 msgid "Zoom out" msgstr "Oddalenie" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:181 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:175 msgid "Zoom to Bed" msgstr "Zbliżenie na Stół" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:182 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:176 msgid "" "Zoom to selected object\n" "or all objects in scene, if none selected" @@ -9175,14 +10494,16 @@ msgstr "" "Ustaw zbliżenie na wybrany model\n" "lub wszystkie na stole, jeśli żaden nie został wybrany" -#: src/libslic3r/PrintConfig.cpp:207 src/libslic3r/PrintConfig.cpp:780 -#: src/libslic3r/PrintConfig.cpp:1640 src/libslic3r/PrintConfig.cpp:1650 -#: src/libslic3r/PrintConfig.cpp:1894 src/libslic3r/PrintConfig.cpp:2049 -#: src/libslic3r/PrintConfig.cpp:2247 src/libslic3r/PrintConfig.cpp:2727 -#: src/libslic3r/PrintConfig.cpp:2848 +#: src/libslic3r/PrintConfig.cpp:241 src/libslic3r/PrintConfig.cpp:816 +#: src/libslic3r/PrintConfig.cpp:1748 src/libslic3r/PrintConfig.cpp:1758 +#: src/libslic3r/PrintConfig.cpp:2036 src/libslic3r/PrintConfig.cpp:2191 +#: src/libslic3r/PrintConfig.cpp:2390 src/libslic3r/PrintConfig.cpp:2891 +#: src/libslic3r/PrintConfig.cpp:3012 msgid "°" msgstr "°" -#: src/slic3r/GUI/ConfigWizard.cpp:1038 src/slic3r/GUI/ConfigWizard.cpp:1052 +#: src/slic3r/GUI/ConfigWizard.cpp:1404 src/slic3r/GUI/ConfigWizard.cpp:1418 +#: src/libslic3r/PrintConfig.cpp:180 src/libslic3r/PrintConfig.cpp:912 +#: src/libslic3r/PrintConfig.cpp:956 src/libslic3r/PrintConfig.cpp:2209 msgid "°C" msgstr "°C" diff --git a/resources/profiles/Anycubic.idx b/resources/profiles/Anycubic.idx index 01a6c8f7e9..a376daba5b 100644 --- a/resources/profiles/Anycubic.idx +++ b/resources/profiles/Anycubic.idx @@ -1,2 +1,6 @@ +min_slic3r_version = 2.3.0-alpha2 +0.0.4 Fixed predator output filaname format, infill overlap. +0.0.3 Fixed infill_overlap, start_gcode, end_gcode for Anycubic Predator +0.0.2 Added Anycubic Predator min_slic3r_version = 2.3.0-alpha0 0.0.1 Initial Version diff --git a/resources/profiles/Anycubic.ini b/resources/profiles/Anycubic.ini index 69abb525a8..904926463c 100644 --- a/resources/profiles/Anycubic.ini +++ b/resources/profiles/Anycubic.ini @@ -5,10 +5,10 @@ name = Anycubic # 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.1 +config_version = 0.0.4 # Where to get the updates from? -config_update_url = http://files.prusa3d.com/wp-content/uploads/repository/PrusaSlicer-settings-master/live/Anycubic/ -# changelog_url = http://files.prusa3d.com/?latest=slicer-profiles&lng=%1% +config_update_url = https://files.prusa3d.com/wp-content/uploads/repository/PrusaSlicer-settings-master/live/Anycubic/ +# changelog_url = https://files.prusa3d.com/?latest=slicer-profiles&lng=%1% # The printer models will be shown by the Configuration Wizard in this order, # also the first model installed & the first nozzle installed will be activated after install. @@ -53,6 +53,13 @@ variants = 0.4 technology = FFF family = MEGA +[printer_model:PREDATOR] +name = Anycubic Predator +variants = 0.4; 0.6; 0.8 +technology = FFF +family = PREDATOR +default_materials = Generic PLA @PREDATOR; Generic PETG @PREDATOR; Generic ABS @PREDATOR + # All presets starting with asterisk, for example *common*, are intermediate and they will # not make it into the user interface. @@ -398,8 +405,6 @@ max_layer_height = 0.3 min_layer_height = 0.08 max_print_height = 300 nozzle_diameter = 0.4 -octoprint_apikey = -octoprint_host = printer_notes = printer_settings_id = retract_before_travel = 2 @@ -413,8 +418,6 @@ retract_lift_below = 0 retract_restart_extra = 0 retract_restart_extra_toolchange = 0 retract_speed = 60 -serial_port = -serial_speed = 250000 single_extruder_multi_material = 0 start_gcode = end_gcode = M104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\n{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+10, max_print_height)} F600{endif} ; Move print head up\nG1 X0 Y100 F3000 ; present print\nM84 ; disable motors @@ -748,8 +751,6 @@ max_layer_height = 0.3 min_layer_height = 0.1 max_print_height = 200 nozzle_diameter = 0.4 -octoprint_apikey = -octoprint_host = printer_notes = printer_settings_id = retract_before_travel = 1 @@ -763,8 +764,6 @@ retract_lift_below = 0 retract_restart_extra = 0 retract_restart_extra_toolchange = 0 retract_speed = 30 -serial_port = -serial_speed = 115200 single_extruder_multi_material = 0 start_gcode = G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nM117 Homing X/Y ...\nG28 X0 Y0 ;move X/Y to min endstops\nM117 Homing Z ...\nG28 Z0 ;move Z to min endstops\nG1 Z15.0 F240 ;move the platform down 15mm\nM117 Heating ...\nM104 S[first_layer_temperature]\n ; 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]\n ; wait for extruder temp\nM117 Start cleaning ...\nG92 E0 ;zero the extruded length\nG1 F200 E10 ;extrude 10mm of feed stock\nG92 E0 ;zero the extruded length again\nM117 Intro line ...\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X0.1 Y20 Z[first_layer_height] F5000.0 ; Move to start position\nG1 X0.1 Y200.0 Z[first_layer_height] F1500.0 E15 ; Draw the first line\nG1 X0.4 Y200.0 Z[first_layer_height] F5000.0 ; Move to side a little\nG1 X0.4 Y20 Z0.3[first_layer_height] F1500.0 E30 ; Draw the second line\nG92 E0 ; Reset Extruder\nG1 E-1 F500 ; Retract filiment by 1 mm\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X5 Y20 Z0.3 F240 ; Move over to prevent blob squish\nG92 E0 ; Reset Extruder\nM117 Printing...\n end_gcode = M117 Cooling down...\nM104 S0 ; turn off extruder\nM140 S0 ; turn off heatbed\nM107 ; Fan off\nM84 ; disable motors\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+0.5 E-5 ;X-20 Y-20 F240 ;move Z up a bit and retract filament even more\nG28 X0 ;move X to min endstops, so the head is out of the way\nG90 ;Absolute positionning\nG1 Y200 F3000 ;Present print\nM84 ;steppers off\nM300 P300 S4000\nM117 Finished.\n @@ -1096,3 +1095,684 @@ printer_notes = Do not remove the following keywords! These keywords are used in machine_max_feedrate_z = 8 +## Anycubic PREDATOR +## Author: https://github.com/tillverka3d +## Initial PR: https://github.com/prusa3d/PrusaSlicer/pull/4960 + +######################################### +###### begin common print presets ####### +######################################### + +# Common print preset +[print:*common predator*] +spiral_vase = 0 +top_solid_min_thickness = 0.8 +bottom_solid_min_thickness = 0.6 +extra_perimeters = 0 +ensure_vertical_shell_thickness = 1 +avoid_crossing_perimeters = 0 +thin_walls = 0 +overhangs = 1 +seam_position = nearest +external_perimeters_first = 0 +fill_density = 20% +external_fill_pattern = rectilinear +infill_every_layers = 1 +infill_only_where_needed = 0 +solid_infill_every_layers = 0 +fill_angle = 45 +solid_infill_below_area = 20 +bridge_angle = 0 +only_retract_when_crossing_perimeters = 0 +infill_first = 0 +skirts = 1 +skirt_distance = 4 +skirt_height = 1 +min_skirt_length = 8 +brim_width = 0 +support_material = 0 +support_material_auto = 1 +support_material_threshold = 50 +support_material_enforce_layers = 0 +raft_layers = 0 +support_material_contact_distance = 0.1 +support_material_pattern = rectilinear +support_material_with_sheath = 0 +support_material_spacing = 2 +support_material_angle = 0 +support_material_interface_layers = 2 +support_material_interface_spacing = 0.2 +support_material_interface_contact_loops = 0 +support_material_buildplate_only = 0 +support_material_xy_spacing = 60% +dont_support_bridges = 1 +support_material_synchronize_layers = 0 +travel_speed = 94 +first_layer_speed = 15 +perimeter_acceleration = 0 +infill_acceleration = 0 +bridge_acceleration = 0 +first_layer_acceleration = 0 +default_acceleration = 0 +max_volumetric_speed = 15 +perimeter_extruder = 1 +infill_extruder = 1 +solid_infill_extruder = 1 +support_material_extruder = 0 +support_material_interface_extruder = 0 +ooze_prevention = 0 +standby_temperature_delta = -5 +wipe_tower = 0 +wipe_tower_x = 170 +wipe_tower_y = 140 +wipe_tower_width = 60 +wipe_tower_rotation_angle = 0 +wipe_tower_bridging = 10 +interface_shells = 0 +bridge_flow_ratio = 0.8 +resolution = 0 +xy_size_compensation = 0 +elefant_foot_compensation = 0.2 +clip_multipart_objects = 1 +complete_objects = 0 +extruder_clearance_radius = 45 +extruder_clearance_height = 25 +gcode_comments = 0 +output_filename_format = {input_filename_base}.gcode +post_process = +notes = +max_volumetric_extrusion_rate_slope_negative = 0 +max_volumetric_extrusion_rate_slope_positive = 0 +print_settings_id = + +# Common print preset +[print:*common predator 0.4 nozzle*] +inherits = *common predator* +first_layer_height = 0.16 +infill_overlap = 25% +compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_ANYCUBIC.*/ and printer_notes=~/.*PRINTER_MODEL_PREDATOR.*/ and printer_notes=~/.*PRINTER_HAS_BOWDEN.*/ and nozzle_diameter[0]==0.4 + +# Common print preset +[print:*common predator 0.6 nozzle*] +inherits = *common predator* +first_layer_height = 0.24 +infill_overlap = 27% +compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_ANYCUBIC.*/ and printer_notes=~/.*PRINTER_MODEL_PREDATOR.*/ and printer_notes=~/.*PRINTER_HAS_BOWDEN.*/ and nozzle_diameter[0]==0.6 + +# Common print preset +[print:*common predator 0.8 nozzle*] +inherits = *common predator* +first_layer_height = 0.32 +infill_overlap = 30% +compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_ANYCUBIC.*/ and printer_notes=~/.*PRINTER_MODEL_PREDATOR.*/ and printer_notes=~/.*PRINTER_HAS_BOWDEN.*/ and nozzle_diameter[0]==0.8 + +# Common print preset +[print:*common predator quality*] +perimeter_speed = 50 +small_perimeter_speed = 15 +external_perimeter_speed = 70% +infill_speed = 65 +solid_infill_speed = 85% +top_solid_infill_speed = 85% +support_material_speed = 30 +support_material_interface_speed = 85% +bridge_speed = 30 +gap_fill_speed = 40 +ironing_speed = 15 + +# Common print preset +[print:*common predator speed*] +perimeter_speed = 70 +small_perimeter_speed = 15 +external_perimeter_speed = 70% +infill_speed = 85 +solid_infill_speed = 85% +top_solid_infill_speed = 85% +support_material_speed = 30 +support_material_interface_speed = 85% +bridge_speed = 30 +gap_fill_speed = 40 +ironing_speed = 15 + +# Common print preset +[print:*common predator 0.4 nozzle detailed*] +inherits = *common predator 0.4 nozzle* +extrusion_width = 0.42 +first_layer_extrusion_width = 0.41 +perimeter_extrusion_width = 0.42 +external_perimeter_extrusion_width = 0.42 +infill_extrusion_width = 0.4 +solid_infill_extrusion_width = 0.4 +top_infill_extrusion_width = 0.4 +support_material_extrusion_width = 0.38 + +# Common print preset +[print:*common predator 0.4 nozzle coarse*] +inherits = *common predator 0.4 nozzle* +extrusion_width = 0.44 +first_layer_extrusion_width = 0.42 +perimeter_extrusion_width = 0.5 +external_perimeter_extrusion_width = 0.5 +infill_extrusion_width = 0.5 +solid_infill_extrusion_width = 0.5 +top_infill_extrusion_width = 0.4 +support_material_extrusion_width = 0.38 + +# Common print preset +[print:*common predator 0.6 nozzle detailed*] +inherits = *common predator 0.6 nozzle* +extrusion_width = 0.64 +first_layer_extrusion_width = 0.62 +perimeter_extrusion_width = 0.64 +external_perimeter_extrusion_width = 0.64 +infill_extrusion_width = 0.6 +solid_infill_extrusion_width = 0.6 +top_infill_extrusion_width = 0.6 +support_material_extrusion_width = 0.56 + +# Common print preset +[print:*common predator 0.6 nozzle coarse*] +inherits = *common predator 0.6 nozzle* +extrusion_width = 0.67 +first_layer_extrusion_width = 0.64 +perimeter_extrusion_width = 0.7 +external_perimeter_extrusion_width = 0.7 +infill_extrusion_width = 0.7 +solid_infill_extrusion_width = 0.7 +top_infill_extrusion_width = 0.6 +support_material_extrusion_width = 0.56 + +# Common print preset +[print:*common predator 0.8 nozzle detailed*] +inherits = *common predator 0.8 nozzle* +extrusion_width = 0.84 +first_layer_extrusion_width = 0.82 +perimeter_extrusion_width = 0.84 +external_perimeter_extrusion_width = 0.84 +infill_extrusion_width = 0.8 +solid_infill_extrusion_width = 0.8 +top_infill_extrusion_width = 0.8 +support_material_extrusion_width = 0.72 + +# Common print preset +[print:*common predator 0.8 nozzle coarse*] +inherits = *common predator 0.8 nozzle* +extrusion_width = 0.87 +first_layer_extrusion_width = 0.84 +perimeter_extrusion_width = 0.9 +external_perimeter_extrusion_width = 0.9 +infill_extrusion_width = 0.9 +solid_infill_extrusion_width = 0.9 +top_infill_extrusion_width = 0.8 +support_material_extrusion_width = 0.72 + +######################################### +####### end common print presets ######## +######################################### + +######################################### +########## begin print presets ########## +######################################### + +[print:0.08mm 0.4 nozzle DETAILED QUALITY @PREDATOR] +inherits = *common predator 0.4 nozzle detailed*; *common predator quality* +layer_height = 0.08 +max_print_speed = 50 +perimeters = 3 +fill_pattern = grid + +[print:0.16mm 0.4 nozzle DETAILED QUALITY @PREDATOR] +inherits = *common predator 0.4 nozzle detailed*; *common predator quality* +layer_height = 0.16 +max_print_speed = 60 +perimeters = 3 +fill_pattern = grid + +[print:0.16mm 0.4 nozzle COARSE QUALITY @PREDATOR] +inherits = *common predator 0.4 nozzle coarse*; *common predator quality* +layer_height = 0.16 +max_print_speed = 60 +perimeters = 3 +fill_pattern = grid + +[print:0.24mm 0.4 nozzle DETAILED QUALITY @PREDATOR] +inherits = *common predator 0.4 nozzle detailed*; *common predator quality* +layer_height = 0.24 +max_print_speed = 70 +perimeters = 3 +fill_pattern = grid + +[print:0.24mm 0.4 nozzle COARSE QUALITY @PREDATOR] +inherits = *common predator 0.4 nozzle coarse*; *common predator quality* +layer_height = 0.24 +max_print_speed = 70 +perimeters = 3 +fill_pattern = grid + +[print:0.32mm 0.4 nozzle DETAILED QUALITY @PREDATOR] +inherits = *common predator 0.4 nozzle detailed*; *common predator quality* +layer_height = 0.32 +max_print_speed = 70 +perimeters = 3 +fill_pattern = grid + +[print:0.32mm 0.4 nozzle COARSE QUALITY @PREDATOR] +inherits = *common predator 0.4 nozzle coarse*; *common predator quality* +layer_height = 0.32 +max_print_speed = 70 +perimeters = 3 +fill_pattern = grid + +[print:0.16mm 0.6 nozzle DETAILED QUALITY @PREDATOR] +inherits = *common predator 0.6 nozzle detailed*; *common predator quality* +layer_height = 0.16 +max_print_speed = 70 +perimeters = 2 +fill_pattern = gyroid + +[print:0.16mm 0.6 nozzle DETAILED SPEED @PREDATOR] +inherits = *common predator 0.6 nozzle detailed*; *common predator speed* +layer_height = 0.16 +max_print_speed = 80 +perimeters = 2 +fill_pattern = gyroid + +[print:0.16mm 0.6 nozzle COARSE QUALITY @PREDATOR] +inherits = *common predator 0.6 nozzle coarse*; *common predator quality* +layer_height = 0.16 +max_print_speed = 70 +perimeters = 2 +fill_pattern = gyroid + +[print:0.16mm 0.6 nozzle COARSE SPEED @PREDATOR] +inherits = *common predator 0.6 nozzle coarse*; *common predator speed* +layer_height = 0.16 +max_print_speed = 80 +perimeters = 2 +fill_pattern = gyroid + +[print:0.24mm 0.6 nozzle DETAILED QUALITY @PREDATOR] +inherits = *common predator 0.6 nozzle detailed*; *common predator quality* +layer_height = 0.24 +max_print_speed = 70 +perimeters = 2 +fill_pattern = gyroid + +[print:0.24mm 0.6 nozzle DETAILED SPEED @PREDATOR] +inherits = *common predator 0.6 nozzle detailed*; *common predator speed* +layer_height = 0.24 +max_print_speed = 80 +perimeters = 2 +fill_pattern = gyroid + +[print:0.24mm 0.6 nozzle COARSE QUALITY @PREDATOR] +inherits = *common predator 0.6 nozzle coarse*; *common predator quality* +layer_height = 0.24 +max_print_speed = 70 +perimeters = 2 +fill_pattern = gyroid + +[print:0.24mm 0.6 nozzle COARSE SPEED @PREDATOR] +inherits = *common predator 0.6 nozzle coarse*; *common predator speed* +layer_height = 0.24 +max_print_speed = 80 +perimeters = 2 +fill_pattern = gyroid + +[print:0.32mm 0.6 nozzle DETAILED QUALITY @PREDATOR] +inherits = *common predator 0.6 nozzle detailed*; *common predator quality* +layer_height = 0.32 +max_print_speed = 70 +perimeters = 2 +fill_pattern = gyroid + +[print:0.32mm 0.6 nozzle DETAILED SPEED @PREDATOR] +inherits = *common predator 0.6 nozzle detailed*; *common predator speed* +layer_height = 0.32 +max_print_speed = 80 +perimeters = 2 +fill_pattern = gyroid + +[print:0.32mm 0.6 nozzle COARSE QUALITY @PREDATOR] +inherits = *common predator 0.6 nozzle coarse*; *common predator quality* +layer_height = 0.32 +max_print_speed = 70 +perimeters = 2 +fill_pattern = gyroid + +[print:0.32mm 0.6 nozzle COARSE SPEED @PREDATOR] +inherits = *common predator 0.6 nozzle coarse*; *common predator speed* +layer_height = 0.32 +max_print_speed = 80 +perimeters = 2 +fill_pattern = gyroid + +[print:0.4mm 0.6 nozzle DETAILED QUALITY @PREDATOR] +inherits = *common predator 0.6 nozzle detailed*; *common predator quality* +layer_height = 0.4 +max_print_speed = 70 +perimeters = 2 +fill_pattern = gyroid + +[print:0.4mm 0.6 nozzle DETAILED SPEED @PREDATOR] +inherits = *common predator 0.6 nozzle detailed*; *common predator speed* +layer_height = 0.4 +max_print_speed = 80 +perimeters = 2 +fill_pattern = gyroid + +[print:0.4mm 0.6 nozzle COARSE QUALITY @PREDATOR] +inherits = *common predator 0.6 nozzle coarse*; *common predator quality* +layer_height = 0.4 +max_print_speed = 70 +perimeters = 2 +fill_pattern = gyroid + +[print:0.4mm 0.6 nozzle COARSE SPEED @PREDATOR] +inherits = *common predator 0.6 nozzle coarse*; *common predator speed* +layer_height = 0.4 +max_print_speed = 80 +perimeters = 2 +fill_pattern = gyroid + +[print:0.24mm 0.8 nozzle DETAILED QUALITY @PREDATOR] +inherits = *common predator 0.8 nozzle detailed*; *common predator quality* +layer_height = 0.24 +max_print_speed = 80 +perimeters = 2 +fill_pattern = gyroid + +[print:0.24mm 0.8 nozzle DETAILED SPEED @PREDATOR] +inherits = *common predator 0.8 nozzle detailed*; *common predator speed* +layer_height = 0.24 +max_print_speed = 90 +perimeters = 2 +fill_pattern = gyroid + +[print:0.24mm 0.8 nozzle COARSE QUALITY @PREDATOR] +inherits = *common predator 0.8 nozzle coarse*; *common predator quality* +layer_height = 0.24 +max_print_speed = 80 +perimeters = 2 +fill_pattern = gyroid + +[print:0.24mm 0.8 nozzle COARSE SPEED @PREDATOR] +inherits = *common predator 0.8 nozzle coarse*; *common predator speed* +layer_height = 0.24 +max_print_speed = 90 +perimeters = 2 +fill_pattern = gyroid + +[print:0.32mm 0.8 nozzle DETAILED QUALITY @PREDATOR] +inherits = *common predator 0.8 nozzle detailed*; *common predator quality* +layer_height = 0.32 +max_print_speed = 80 +perimeters = 2 +fill_pattern = gyroid + +[print:0.32mm 0.8 nozzle DETAILED SPEED @PREDATOR] +inherits = *common predator 0.8 nozzle detailed*; *common predator speed* +layer_height = 0.32 +max_print_speed = 90 +perimeters = 2 +fill_pattern = gyroid + +[print:0.32mm 0.8 nozzle COARSE QUALITY @PREDATOR] +inherits = *common predator 0.8 nozzle coarse*; *common predator quality* +layer_height = 0.32 +max_print_speed = 80 +perimeters = 2 +fill_pattern = gyroid + +[print:0.32mm 0.8 nozzle COARSE SPEED @PREDATOR] +inherits = *common predator 0.8 nozzle coarse*; *common predator speed* +layer_height = 0.32 +max_print_speed = 90 +perimeters = 2 +fill_pattern = gyroid + +[print:0.4mm 0.8 nozzle DETAILED QUALITY @PREDATOR] +inherits = *common predator 0.8 nozzle detailed*; *common predator quality* +layer_height = 0.4 +max_print_speed = 80 +perimeters = 2 +fill_pattern = gyroid + +[print:0.4mm 0.8 nozzle DETAILED SPEED @PREDATOR] +inherits = *common predator 0.8 nozzle detailed*; *common predator speed* +layer_height = 0.4 +max_print_speed = 90 +perimeters = 2 +fill_pattern = gyroid + +[print:0.4mm 0.8 nozzle COARSE QUALITY @PREDATOR] +inherits = *common predator 0.8 nozzle coarse*; *common predator quality* +layer_height = 0.4 +max_print_speed = 80 +perimeters = 2 +fill_pattern = gyroid + +[print:0.4mm 0.8 nozzle COARSE SPEED @PREDATOR] +inherits = *common predator 0.8 nozzle coarse*; *common predator speed* +layer_height = 0.4 +max_print_speed = 90 +perimeters = 2 +fill_pattern = gyroid + +[print:0.48mm 0.8 nozzle DETAILED QUALITY @PREDATOR] +inherits = *common predator 0.8 nozzle detailed*; *common predator quality* +layer_height = 0.48 +max_print_speed = 80 +perimeters = 2 +fill_pattern = gyroid + +[print:0.48mm 0.8 nozzle DETAILED SPEED @PREDATOR] +inherits = *common predator 0.8 nozzle detailed*; *common predator speed* +layer_height = 0.48 +max_print_speed = 90 +perimeters = 2 +fill_pattern = gyroid + +[print:0.48mm 0.8 nozzle COARSE QUALITY @PREDATOR] +inherits = *common predator 0.8 nozzle coarse*; *common predator quality* +layer_height = 0.48 +max_print_speed = 80 +perimeters = 2 +fill_pattern = gyroid + +[print:0.48mm 0.8 nozzle COARSE SPEED @PREDATOR] +inherits = *common predator 0.8 nozzle coarse*; *common predator speed* +layer_height = 0.48 +max_print_speed = 90 +perimeters = 2 +fill_pattern = gyroid + +######################################### +########### end print presets ########### +######################################### + +######################################### +######## begin filament presets ######### +######################################### + +# Common filament preset +[filament:*common predator*] +cooling = 0 +compatible_printers = +extrusion_multiplier = 1 +filament_cost = 0 +filament_density = 0 +filament_diameter = 1.75 +filament_notes = "" +filament_settings_id = "" +filament_soluble = 0 +min_print_speed = 15 +slowdown_below_layer_time = 20 +compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_ANYCUBIC.*/ and printer_notes=~/.*PRINTER_MODEL_PREDATOR.*/ + +[filament:*PLA predator*] +inherits = *common predator* +bed_temperature = 60 +fan_below_layer_time = 100 +filament_colour = #FF3232 +filament_max_volumetric_speed = 10 +filament_type = PLA +filament_density = 1.24 +filament_cost = 20 +first_layer_bed_temperature = 60 +first_layer_temperature = 200 +fan_always_on = 1 +cooling = 1 +max_fan_speed = 100 +min_fan_speed = 100 +bridge_fan_speed = 100 +disable_fan_first_layers = 1 +temperature = 200 + +[filament:*PET predator*] +inherits = *common predator* +bed_temperature = 70 +cooling = 1 +disable_fan_first_layers = 3 +fan_below_layer_time = 20 +filament_colour = #FF8000 +filament_max_volumetric_speed = 8 +filament_type = PETG +filament_density = 1.27 +filament_cost = 30 +first_layer_bed_temperature =70 +first_layer_temperature = 240 +fan_always_on = 1 +max_fan_speed = 50 +min_fan_speed = 20 +bridge_fan_speed = 100 +temperature = 240 + +[filament:*ABS predator*] +inherits = *common predator* +bed_temperature = 100 +cooling = 0 +disable_fan_first_layers = 3 +fan_below_layer_time = 20 +filament_colour = #3A80CA +filament_max_volumetric_speed = 10 +filament_type = ABS +filament_density = 1.04 +filament_cost = 20 +first_layer_bed_temperature = 100 +first_layer_temperature = 245 +fan_always_on = 0 +max_fan_speed = 0 +min_fan_speed = 0 +bridge_fan_speed = 30 +top_fan_speed = 0 +temperature = 245 + +[filament:Generic PLA @PREDATOR] +inherits = *PLA predator* +filament_vendor = Generic + +[filament:Generic PETG @PREDATOR] +inherits = *PET predator* +filament_vendor = Generic + +[filament:Generic ABS @PREDATOR] +inherits = *ABS predator* +filament_vendor = Generic + +######################################### +######### end filament presets ########## +######################################### + +######################################### +######### begin printer presets ######### +######################################### + +# Anycubic predator common printer preset +[printer:*common predator*] +printer_vendor = Anycubic +printer_model = Predator +printer_technology = FFF +printer_variant = 0.4 +thumbnails = 16x16,220x124 +bed_shape = 188.779x16.516,186.621x32.9063,183.043x49.0462,178.072x64.8128,171.745x80.0862,164.112x94.75,155.229x108.693,145.165x121.808,133.997x133.997,121.808x145.165,108.693x155.229,94.75x164.112,80.0862x171.745,64.8128x178.072,49.0462x183.043,32.9063x186.621,16.516x188.779,1.16035e-14x189.5,-16.516x188.779,-32.9063x186.621,-49.0462x183.043,-64.8128x178.072,-80.0862x171.745,-94.75x164.112,-108.693x155.229,-121.808x145.165,-133.997x133.997,-145.165x121.808,-155.229x108.693,-164.112x94.75,-171.745x80.0862,-178.072x64.8128,-183.043x49.0462,-186.621x32.9063,-188.779x16.516,-189.5x2.32071e-14,-188.779x-16.516,-186.621x-32.9063,-183.043x-49.0462,-178.072x-64.8128,-171.745x-80.0862,-164.112x-94.75,-155.229x-108.693,-145.165x-121.808,-133.997x-133.997,-121.808x-145.165,-108.693x-155.229,-94.75x-164.112,-80.0862x-171.745,-64.8128x-178.072,-49.0462x-183.043,-32.9063x-186.621,-16.516x-188.779,-3.48106e-14x-189.5,16.516x-188.779,32.9063x-186.621,49.0462x-183.043,64.8128x-178.072,80.0862x-171.745,94.75x-164.112,108.693x-155.229,121.808x-145.165,133.997x-133.997,145.165x-121.808,155.229x-108.693,164.112x-94.75,171.745x-80.0862,178.072x-64.8128,183.043x-49.0462,186.621x-32.9063,188.779x-16.516,189.5x-4.64141e-14 +max_print_height = 450 +z_offset = 0 +single_extruder_multi_material = 0 +gcode_flavor = reprap +silent_mode = 0 +remaining_times = 0 +use_relative_e_distances = 0 +use_firmware_retraction = 0 +use_volumetric_e = 0 +variable_layer_height = 1 +start_gcode = ; start_gcode | start\n\n; v11 2020-11-14_11-27 tillverka\n\n; set metric values\n\nG21\n\n; use absolute positioning\n\nG90\n\n; set extruder to absolute mode\n\nM82\n\n; start with fan off\n\nM107\n\n; set temps\n\nM104 S[first_layer_temperature]\nM140 S[first_layer_bed_temperature]\n\n; home xy\n\nG28 X0 Y0\n\n; home z\n\nG28 Z0\n\n; move the head down to Z 94mm\n\nG1 Z94.0 F2394\n\n; set and wait for temps\n\nM109 S[first_layer_temperature]\nM190 S[first_layer_bed_temperature]\n\n; zero the extruded length\n\nG92 E0\n\n; extrude 3mm of feed stock\n\nG1 F200 E3\n\n; zero the extruded length again\n\nG92 E0\n\n; set speed\n\nG1 F{travel_speed}\n\n; print preskirt\n\nG92 E0\nG1 E3.94000 F2520.00000\n\nG1 X125.464 Y-139.310\nG1 Z0.329 F3994.000\n\nG1 F994.000\n\nG1 X125.464 Y-139.310 E4.19679\nG1 X130.218 Y-134.876 E4.70359\nG1 X132.569 Y-132.567 E4.96053\nG1 X137.099 Y-127.877 E5.46890\nG1 X139.325 Y-125.447 E5.72585\nG1 X141.507 Y-122.981 E5.98254\nG1 X145.685 Y-118.002 E6.48934\nG1 X149.741 Y-112.810 E7.00296\nG1 X153.561 Y-107.552 E7.50975\nG1 X155.440 Y-104.819 E7.76827\nG1 X158.980 Y-99.367 E8.27506\nG1 X160.702 Y-96.558 E8.53201\nG1 X163.962 Y-90.911 E9.04038\nG1 X165.535 Y-88.015 E9.29732\nG1 X168.496 Y-82.205 E9.80570\nG1 X169.915 Y-79.231 E10.06264\nG1 X171.280 Y-76.235 E10.31934\nG1 X173.819 Y-70.251 E10.82613\nG1 X176.180 Y-64.101 E11.33975\nG1 X178.297 Y-57.955 E11.84654\nG1 X179.294 Y-54.793 E12.10507\nG1 X181.085 Y-48.544 E12.61186\nG1 X181.911 Y-45.354 E12.86880\nG1 X183.378 Y-39.001 E13.37718\nG1 X184.035 Y-35.771 E13.63412\nG1 X185.168 Y-29.350 E14.14250\nG1 X185.655 Y-26.091 E14.39944\nG1 X186.084 Y-22.826 E14.65614\nG1 X186.764 Y-16.362 E15.16293\nG1 X187.223 Y-9.790 E15.67655\nG1 X187.450 Y-3.294 E16.18334\nG1 X187.479 Y0.002 E16.44028\nG1 X187.450 Y3.294 E16.69698\nG1 X187.223 Y9.810 E17.20529\nG1 X187.021 Y13.100 E17.46229\nG1 X186.454 Y19.575 E17.96909\nG1 X186.079 Y22.870 E18.22761\nG1 X185.174 Y29.307 E18.73440\nG1 X184.031 Y35.794 E19.24802\nG1 X182.679 Y42.152 E19.75481\nG1 X181.910 Y45.357 E20.01176\nG1 X180.223 Y51.655 E20.52013\nG1 X179.287 Y54.815 E20.77708\nG1 X177.272 Y61.017 E21.28545\nG1 X176.172 Y64.123 E21.54239\nG1 X175.019 Y67.207 E21.79909\nG1 X172.584 Y73.234 E22.30588\nG1 X169.905 Y79.252 E22.81950\nG1 X167.055 Y85.094 E23.32629\nG1 X165.524 Y88.035 E23.58482\nG1 X162.373 Y93.721 E24.09161\nG1 X160.700 Y96.560 E24.34855\nG1 X157.245 Y102.090 E24.85693\nG1 X155.427 Y104.838 E25.11387\nG1 X151.687 Y110.180 E25.62225\nG1 X149.727 Y112.829 E25.87919\nG1 X147.722 Y115.441 E26.13588\nG1 X143.631 Y120.493 E26.64268\nG1 X139.310 Y125.464 E27.15629\nG1 X134.876 Y130.218 E27.66309\nG1 X132.567 Y132.569 E27.92003\nG1 X127.877 Y137.099 E28.42840\nG1 X125.447 Y139.325 E28.68535\nG1 X122.981 Y141.507 E28.94204\nG1 X118.002 Y145.685 E29.44883\nG1 X112.810 Y149.741 E29.96245\nG1 X107.552 Y153.561 E30.46924\nG1 X104.819 Y155.440 E30.72777\nG1 X99.367 Y158.980 E31.23456\nG1 X96.558 Y160.702 E31.49151\nG1 X90.911 Y163.962 E31.99988\nG1 X88.015 Y165.535 E32.25682\nG1 X82.205 Y168.496 E32.76520\nG1 X79.231 Y169.915 E33.02214\nG1 X76.235 Y171.280 E33.27884\nG1 X70.251 Y173.819 E33.78563\nG1 X64.101 Y176.180 E34.29925\nG1 X57.955 Y178.297 E34.80604\nG1 X54.793 Y179.294 E35.06457\nG1 X48.544 Y181.085 E35.57136\nG1 X45.354 Y181.911 E35.82830\nG1 X39.001 Y183.378 E36.33668\nG1 X35.771 Y184.035 E36.59362\nG1 X29.350 Y185.168 E37.10200\nG1 X26.091 Y185.655 E37.35894\nG1 X22.826 Y186.084 E37.61563\nG1 X16.362 Y186.764 E38.12242\nG1 X9.790 Y187.223 E38.63605\nG1 X3.294 Y187.450 E39.14283\nG1 X-0.002 Y187.479 E39.39978\nG1 X-3.294 Y187.450 E39.65648\nG1 X-9.810 Y187.223 E40.16479\nG1 X-13.100 Y187.021 E40.42179\nG1 X-19.575 Y186.454 E40.92858\nG1 X-22.870 Y186.079 E41.18711\nG1 X-29.307 Y185.174 E41.69390\nG1 X-35.794 Y184.031 E42.20752\nG1 X-42.152 Y182.679 E42.71431\nG1 X-45.357 Y181.910 E42.97126\nG1 X-51.655 Y180.223 E43.47963\nG1 X-54.815 Y179.287 E43.73657\nG1 X-61.017 Y177.272 E44.24495\nG1 X-64.123 Y176.172 E44.50189\nG1 X-67.207 Y175.019 E44.75859\nG1 X-73.234 Y172.584 E45.26538\nG1 X-79.252 Y169.905 E45.77900\nG1 X-85.094 Y167.055 E46.28579\nG1 X-88.035 Y165.524 E46.54432\nG1 X-93.721 Y162.373 E47.05111\nG1 X-96.560 Y160.700 E47.30805\nG1 X-102.090 Y157.245 E47.81643\nG1 X-104.838 Y155.427 E48.07337\nG1 X-110.180 Y151.687 E48.58174\nG1 X-112.829 Y149.727 E48.83869\nG1 X-115.441 Y147.722 E49.09538\nG1 X-120.493 Y143.631 E49.60218\nG1 X-125.464 Y139.310 E50.11579\nG1 X-130.218 Y134.876 E50.62259\nG1 X-132.569 Y132.567 E50.87953\nG1 X-137.099 Y127.877 E51.38790\nG1 X-139.325 Y125.447 E51.64485\nG1 X-141.507 Y122.981 E51.90154\nG1 X-145.685 Y118.002 E52.40833\nG1 X-149.741 Y112.810 E52.92195\nG1 X-153.561 Y107.552 E53.42874\nG1 X-155.440 Y104.819 E53.68727\nG1 X-158.980 Y99.367 E54.19406\nG1 X-160.702 Y96.558 E54.45101\nG1 X-163.962 Y90.911 E54.95938\nG1 X-165.535 Y88.015 E55.21632\nG1 X-168.496 Y82.205 E55.72470\nG1 X-169.915 Y79.231 E55.98164\nG1 X-171.280 Y76.235 E56.23834\nG1 X-173.819 Y70.251 E56.74513\nG1 X-176.180 Y64.101 E57.25875\nG1 X-178.297 Y57.955 E57.76554\nG1 X-179.294 Y54.793 E58.02407\nG1 X-181.085 Y48.544 E58.53086\nG1 X-181.911 Y45.354 E58.78780\nG1 X-183.378 Y39.001 E59.29618\nG1 X-184.035 Y35.771 E59.55312\nG1 X-185.168 Y29.350 E60.06149\nG1 X-185.655 Y26.091 E60.31844\nG1 X-186.084 Y22.826 E60.57513\nG1 X-186.764 Y16.362 E61.08192\nG1 X-187.223 Y9.790 E61.59554\nG1 X-187.450 Y3.294 E62.10233\nG1 X-187.479 Y-0.002 E62.35928\nG1 X-187.450 Y-3.294 E62.61598\nG1 X-187.223 Y-9.810 E63.12429\nG1 X-187.021 Y-13.100 E63.38129\nG1 X-186.454 Y-19.575 E63.88808\nG1 X-186.079 Y-22.870 E64.14661\nG1 X-185.174 Y-29.307 E64.65340\nG1 X-184.031 Y-35.794 E65.16702\nG1 X-182.679 Y-42.152 E65.67381\nG1 X-181.910 Y-45.357 E65.93076\nG1 X-180.223 Y-51.655 E66.43913\nG1 X-179.287 Y-54.815 E66.69607\nG1 X-177.272 Y-61.017 E67.20445\nG1 X-176.172 Y-64.123 E67.46139\nG1 X-175.019 Y-67.207 E67.71809\nG1 X-172.584 Y-73.234 E68.22488\nG1 X-169.905 Y-79.252 E68.73850\nG1 X-167.055 Y-85.094 E69.24529\nG1 X-165.524 Y-88.035 E69.50382\nG1 X-162.373 Y-93.721 E70.01061\nG1 X-160.700 Y-96.560 E70.26755\nG1 X-157.245 Y-102.090 E70.77593\nG1 X-155.427 Y-104.838 E71.03287\nG1 X-151.687 Y-110.180 E71.54124\nG1 X-149.727 Y-112.829 E71.79819\nG1 X-147.722 Y-115.441 E72.05488\nG1 X-143.631 Y-120.493 E72.56167\nG1 X-139.310 Y-125.464 E73.07529\nG1 X-134.876 Y-130.218 E73.58209\nG1 X-132.567 Y-132.569 E73.83903\nG1 X-127.877 Y-137.099 E74.34740\nG1 X-125.447 Y-139.325 E74.60435\nG1 X-122.981 Y-141.507 E74.86104\nG1 X-118.002 Y-145.685 E75.36783\nG1 X-112.810 Y-149.741 E75.88145\nG1 X-107.552 Y-153.561 E76.38824\nG1 X-104.819 Y-155.440 E76.64677\nG1 X-99.367 Y-158.980 E77.15356\nG1 X-96.558 Y-160.702 E77.41051\nG1 X-90.911 Y-163.962 E77.91888\nG1 X-88.015 Y-165.535 E78.17582\nG1 X-82.205 Y-168.496 E78.68420\nG1 X-79.231 Y-169.915 E78.94114\nG1 X-76.235 Y-171.280 E79.19784\nG1 X-70.251 Y-173.819 E79.70463\nG1 X-64.101 Y-176.180 E80.21825\nG1 X-57.955 Y-178.297 E80.72504\nG1 X-54.793 Y-179.294 E80.98356\nG1 X-48.544 Y-181.085 E81.49036\nG1 X-45.354 Y-181.911 E81.74730\nG1 X-39.001 Y-183.378 E82.25568\nG1 X-35.771 Y-184.035 E82.51262\nG1 X-29.350 Y-185.168 E83.02099\nG1 X-26.091 Y-185.655 E83.27794\nG1 X-22.826 Y-186.084 E83.53463\nG1 X-16.362 Y-186.764 E84.04142\nG1 X-9.790 Y-187.223 E84.55504\nG1 X-3.294 Y-187.450 E85.06183\nG1 X0.006 Y-187.479 E85.31908\nG1 X6.521 Y-187.366 E85.82715\nG1 X9.810 Y-187.223 E86.08379\nG1 X13.100 Y-187.021 E86.34079\nG1 X19.575 Y-186.454 E86.84758\nG1 X22.870 Y-186.079 E87.10611\nG1 X29.307 Y-185.174 E87.61290\nG1 X35.794 Y-184.031 E88.12652\nG1 X42.152 Y-182.679 E88.63331\nG1 X45.357 Y-181.910 E88.89025\nG1 X51.655 Y-180.223 E89.39863\nG1 X54.815 Y-179.287 E89.65557\nG1 X61.017 Y-177.272 E90.16395\nG1 X64.123 Y-176.172 E90.42089\nG1 X67.207 Y-175.019 E90.67759\nG1 X73.234 Y-172.584 E91.18438\nG1 X79.252 Y-169.905 E91.69800\nG1 X85.094 Y-167.055 E92.20479\nG1 X88.035 Y-165.524 E92.46332\nG1 X93.721 Y-162.373 E92.97011\nG1 X96.560 Y-160.700 E93.22705\nG1 X102.090 Y-157.245 E93.73543\nG1 X104.838 Y-155.427 E93.99237\nG1 X110.180 Y-151.687 E94.50074\nG1 X112.829 Y-149.727 E94.75768\nG1 X115.441 Y-147.722 E95.01438\nG1 X120.493 Y-143.631 E95.52117\nG1 X122.911 Y-141.529 E95.77098\n\n; end preskirt\n; start_gcode | end +end_gcode = ; end_gcode | start\n\n; v11 2020-11-14_11-27 tillverka\n\n; use relative positioning\n\nG91\n\n; retract the filament a bit before lifting the nozzle to release some of the pressure\n\nG1 E-1 F300\n\n; home\n\nG28\n\n; use absolute positioning\n\nG90\n\n; cooldown\n\nM104 S0\nM140 S0\n\n; end_gcode | end\n +before_layer_gcode = +layer_gcode = +toolchange_gcode = +between_objects_gcode = +retract_length = 4 +retract_lift = 0.3 +retract_lift_above = 0 +retract_lift_below = 449 +retract_speed = 30 +deretract_speed = 0 +retract_restart_extra = 0 +retract_before_travel = 2 +retract_layer_change = 1 +wipe = 1 +retract_before_wipe = 70% +retract_length_toolchange = 10 +retract_restart_extra_toolchange = 0 +extruder_colour = #1193FF +machine_max_acceleration_e = 3000 +machine_max_acceleration_extruding = 1000 +machine_max_acceleration_retracting = 1000 +machine_max_acceleration_x = 1500 +machine_max_acceleration_y = 1500 +machine_max_acceleration_z = 1500 +machine_max_feedrate_e = 60 +machine_max_feedrate_x = 200 +machine_max_feedrate_y = 200 +machine_max_feedrate_z = 200 +machine_max_jerk_e = 5 +machine_max_jerk_x = 5 +machine_max_jerk_y = 5 +machine_max_jerk_z = 5 +machine_min_extruding_rate = 0 +machine_min_travel_rate = 0 +printer_settings_id = +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_ANYCUBIC\nPRINTER_MODEL_PREDATOR\nPRINTER_HAS_BOWDEN\n +default_filament_profile = Generic PLA @PREDATOR + +[printer:Anycubic Predator 0.4 nozzle] +inherits = *common predator* +printer_model = PREDATOR +printer_variant = 0.4 +nozzle_diameter = 0.4 +min_layer_height = 0.08 +max_layer_height = 0.32 +default_print_profile = 0.16mm 0.4 nozzle DETAILED QUALITY @PREDATOR + +[printer:Anycubic Predator 0.6 nozzle] +inherits = *common predator* +printer_model = PREDATOR +printer_variant = 0.6 +nozzle_diameter = 0.6 +min_layer_height = 0.12 +max_layer_height = 0.4 +default_print_profile = 0.24mm 0.8 nozzle DETAILED QUALITY @PREDATOR + +[printer:Anycubic Predator 0.8 nozzle] +inherits = *common predator* +printer_model = PREDATOR +printer_variant = 0.8 +nozzle_diameter = 0.8 +min_layer_height = 0.16 +max_layer_height = 0.48 +default_print_profile = 0.24mm 0.8 nozzle DETAILED QUALITY @PREDATOR + +######################################### +########## end printer presets ########## +######################################### diff --git a/resources/profiles/Anycubic/AKLP_thumbnail.png b/resources/profiles/Anycubic/AKLP_thumbnail.png index 92cac32b56..e2ae5c03aa 100644 Binary files a/resources/profiles/Anycubic/AKLP_thumbnail.png and b/resources/profiles/Anycubic/AKLP_thumbnail.png differ diff --git a/resources/profiles/Anycubic/AK_thumbnail.png b/resources/profiles/Anycubic/AK_thumbnail.png index 7f995890eb..9d09428bc9 100644 Binary files a/resources/profiles/Anycubic/AK_thumbnail.png and b/resources/profiles/Anycubic/AK_thumbnail.png differ diff --git a/resources/profiles/Anycubic/I3MEGAS_thumbnail.png b/resources/profiles/Anycubic/I3MEGAS_thumbnail.png index d383d53725..c51de42ed7 100644 Binary files a/resources/profiles/Anycubic/I3MEGAS_thumbnail.png and b/resources/profiles/Anycubic/I3MEGAS_thumbnail.png differ diff --git a/resources/profiles/Anycubic/I3MEGA_thumbnail.png b/resources/profiles/Anycubic/I3MEGA_thumbnail.png index cfba1fcc5d..464354c84c 100644 Binary files a/resources/profiles/Anycubic/I3MEGA_thumbnail.png and b/resources/profiles/Anycubic/I3MEGA_thumbnail.png differ diff --git a/resources/profiles/Anycubic/MEGA0_thumbnail.png b/resources/profiles/Anycubic/MEGA0_thumbnail.png index cbf4482640..ca206123c7 100644 Binary files a/resources/profiles/Anycubic/MEGA0_thumbnail.png and b/resources/profiles/Anycubic/MEGA0_thumbnail.png differ diff --git a/resources/profiles/Anycubic/PREDATOR_thumbnail.png b/resources/profiles/Anycubic/PREDATOR_thumbnail.png new file mode 100644 index 0000000000..cd651a202e Binary files /dev/null and b/resources/profiles/Anycubic/PREDATOR_thumbnail.png differ diff --git a/resources/profiles/BIBO/BIBO2_thumbnail.png b/resources/profiles/BIBO/BIBO2_thumbnail.png index 3d99c7ee87..2bfa0bc7be 100644 Binary files a/resources/profiles/BIBO/BIBO2_thumbnail.png and b/resources/profiles/BIBO/BIBO2_thumbnail.png differ diff --git a/resources/profiles/Creality.idx b/resources/profiles/Creality.idx index a0e91e7c75..e3091eccc8 100644 --- a/resources/profiles/Creality.idx +++ b/resources/profiles/Creality.idx @@ -1,3 +1,7 @@ +min_slic3r_version = 2.3.0-alpha2 +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. min_slic3r_version = 2.3.0-alpha0 0.0.3 Added Ender-2, Ender-3 BLTouch, updated Ender-3 bed texture. min_slic3r_version = 2.2.0-alpha3 diff --git a/resources/profiles/Creality.ini b/resources/profiles/Creality.ini index a51e1369e8..e911edb322 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.3 +config_version = 0.0.6 # 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% @@ -21,7 +21,7 @@ technology = FFF family = ENDER bed_model = ender3_bed.stl bed_texture = ender3.svg -default_materials = Creality PLA @ENDER3; Generic PLA @ENDER3; Generic PETG @ENDER3; Generic ABS @ENDER3; Prusament PLA @ENDER3; Prusament PETG @ENDER3 +default_materials = Creality PLA @CREALITY; Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @CREALITY; Prusament PLA @CREALITY; Prusament PETG @CREALITY [printer_model:ENDER3BLTOUCH] name = Creality Ender-3 BLTouch @@ -30,7 +30,25 @@ technology = FFF family = ENDER bed_model = ender3_bed.stl bed_texture = ender3.svg -default_materials = Creality PLA @ENDER3; Generic PLA @ENDER3; Generic PETG @ENDER3; Generic ABS @ENDER3; Prusament PLA @ENDER3; Prusament PETG @ENDER3 +default_materials = Creality PLA @CREALITY; Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @CREALITY; Prusament PLA @CREALITY; Prusament PETG @CREALITY + +[printer_model:ENDER5] +name = Creality Ender-5 +variants = 0.4 +technology = FFF +family = ENDER +bed_model = ender3_bed.stl +bed_texture = ender3.svg +default_materials = Creality PLA @CREALITY; Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @CREALITY; Prusament PLA @CREALITY; Prusament PETG @CREALITY + +[printer_model:ENDER5PLUS] +name = Creality Ender-5 Plus +variants = 0.4 +technology = FFF +family = ENDER +bed_model = ender5plus_bed.stl +bed_texture = ender5plus.svg +default_materials = Creality PLA @CREALITY; Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @CREALITY; Prusament PLA @CREALITY; Prusament PETG @CREALITY [printer_model:ENDER2] name = Creality Ender-2 @@ -39,7 +57,106 @@ technology = FFF family = ENDER bed_model = ender2_bed.stl bed_texture = ender2.svg -default_materials = Creality PLA @ENDER3; Generic PLA @ENDER3; Generic PETG @ENDER3; Generic ABS @ENDER3; Prusament PLA @ENDER3; Prusament PETG @ENDER3 +default_materials = Creality PLA @CREALITY; Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @CREALITY; Prusament PLA @CREALITY; Prusament PETG @CREALITY + +[printer_model:CR10MINI] +name = Creality CR-10 Mini +variants = 0.4 +technology = FFF +family = CR +bed_model = cr10mini_bed.stl +bed_texture = cr10mini.svg +default_materials = Creality PLA @CREALITY; Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @CREALITY; Prusament PLA @CREALITY; Prusament PETG @CREALITY + +[printer_model:CR10] +name = Creality CR-10 +variants = 0.4 +technology = FFF +family = CR +bed_model = cr10_bed.stl +bed_texture = cr10.svg +default_materials = Creality PLA @CREALITY; Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @CREALITY; Prusament PLA @CREALITY; Prusament PETG @CREALITY + +[printer_model:CR10V2] +name = Creality CR-10 V2 +variants = 0.4 +technology = FFF +family = CR +bed_model = cr10v2_bed.stl +bed_texture = cr10.svg +default_materials = Creality PLA @CREALITY; Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @CREALITY; Prusament PLA @CREALITY; Prusament PETG @CREALITY + +[printer_model:CR10V3] +name = Creality CR-10 V3 +variants = 0.4 +technology = FFF +family = CR +bed_model = cr10v2_bed.stl +bed_texture = cr10.svg +default_materials = Creality PLA @CREALITY; Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @CREALITY; Prusament PLA @CREALITY; Prusament PETG @CREALITY + +[printer_model:CR10S] +name = Creality CR-10 S +variants = 0.4 +technology = FFF +family = CR +bed_model = cr10_bed.stl +bed_texture = cr10.svg +default_materials = Creality PLA @CREALITY; Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @CREALITY; Prusament PLA @CREALITY; Prusament PETG @CREALITY + +[printer_model:CR10SPRO] +name = Creality CR-10 S Pro +variants = 0.4 +technology = FFF +family = CR +bed_model = cr10v2_bed.stl +bed_texture = cr10.svg +default_materials = Creality PLA @CREALITY; Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @CREALITY; Prusament PLA @CREALITY; Prusament PETG @CREALITY + +[printer_model:CR10SPROV2] +name = Creality CR-10 S Pro V2 +variants = 0.4 +technology = FFF +family = CR +bed_model = cr10v2_bed.stl +bed_texture = cr10.svg +default_materials = Creality PLA @CREALITY; Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @CREALITY; Prusament PLA @CREALITY; Prusament PETG @CREALITY + +[printer_model:CR10S4] +name = Creality CR-10 S4 +variants = 0.4 +technology = FFF +family = CR +bed_model = cr10s4_bed.stl +bed_texture = cr10s4.svg +default_materials = Creality PLA @CREALITY; Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @CREALITY; Prusament PLA @CREALITY; Prusament PETG @CREALITY + +[printer_model:CR10S5] +name = Creality CR-10 S5 +variants = 0.4 +technology = FFF +family = CR +bed_model = cr10s5_bed.stl +bed_texture = cr10s5.svg +default_materials = Creality PLA @CREALITY; Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @CREALITY; Prusament PLA @CREALITY; Prusament PETG @CREALITY + +[printer_model:CR20] +name = Creality CR-20 +variants = 0.4 +technology = FFF +family = CR +bed_model = ender3_bed.stl +bed_texture = cr20.svg +default_materials = Creality PLA @CREALITY; Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @CREALITY; Prusament PLA @CREALITY; Prusament PETG @CREALITY + +[printer_model:CR20PRO] +name = Creality CR-20 Pro +variants = 0.4 +technology = FFF +family = CR +bed_model = ender3_bed.stl +bed_texture = cr20.svg +default_materials = Creality PLA @CREALITY; Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @CREALITY; Prusament PLA @CREALITY; Prusament PETG @CREALITY # All presets starting with asterisk, for example *common*, are intermediate and they will # not make it into the user interface. @@ -143,6 +260,13 @@ wipe_tower_x = 170 wipe_tower_y = 140 xy_size_compensation = 0 +[print:*0.08mm*] +inherits = *common* +layer_height = 0.08 +perimeters = 3 +bottom_solid_layers = 9 +top_solid_layers = 11 + [print:*0.10mm*] inherits = *common* layer_height = 0.1 @@ -157,9 +281,9 @@ perimeters = 3 bottom_solid_layers = 6 top_solid_layers = 7 -[print:*0.15mm*] +[print:*0.16mm*] inherits = *common* -layer_height = 0.15 +layer_height = 0.16 bottom_solid_layers = 5 top_solid_layers = 7 @@ -176,30 +300,45 @@ top_infill_extrusion_width = 0.45 bottom_solid_layers = 3 top_solid_layers = 4 -[print:0.10mm HIGHDETAIL @ENDER3] +[print:*0.28mm*] +inherits = *common* +layer_height = 0.28 +top_infill_extrusion_width = 0.45 +bottom_solid_layers = 3 +top_solid_layers = 4 + +[print:0.08mm SUPERDETAIL @CREALITY] +inherits = *0.08mm* +compatible_printers_condition = printer_model=~/(ENDER|CR).*/ and nozzle_diameter[0]==0.4 + +[print:0.10mm HIGHDETAIL @CREALITY] inherits = *0.10mm* -# alias = 0.10mm HIGHDETAIL -compatible_printers_condition = printer_model=~/ENDER.*/ and nozzle_diameter[0]==0.4 +renamed_from = "0.10mm HIGHDETAIL @ENDER3" +compatible_printers_condition = printer_model=~/(ENDER|CR).*/ and nozzle_diameter[0]==0.4 -[print:0.12mm DETAIL @ENDER3] +[print:0.12mm DETAIL @CREALITY] inherits = *0.12mm* -# alias = 0.12mm DETAIL -compatible_printers_condition = printer_model=~/ENDER.*/ and nozzle_diameter[0]==0.4 +renamed_from = "0.12mm DETAIL @ENDER3" +compatible_printers_condition = printer_model=~/(ENDER|CR).*/ and nozzle_diameter[0]==0.4 -[print:0.15mm OPTIMAL @ENDER3] -inherits = *0.15mm* -# alias = 0.15mm OPTIMAL -compatible_printers_condition = printer_model=~/ENDER.*/ and nozzle_diameter[0]==0.4 +[print:0.16mm OPTIMAL @CREALITY] +inherits = *0.16mm* +renamed_from = "0.15mm OPTIMAL @ENDER3"; "0.15mm OPTIMAL @CREALITY" +compatible_printers_condition = printer_model=~/(ENDER|CR).*/ and nozzle_diameter[0]==0.4 -[print:0.20mm NORMAL @ENDER3] +[print:0.20mm NORMAL @CREALITY] inherits = *0.20mm* -# alias = 0.20mm NORMAL -compatible_printers_condition = printer_model=~/ENDER.*/ and nozzle_diameter[0]==0.4 +renamed_from = "0.20mm NORMAL @ENDER3" +compatible_printers_condition = printer_model=~/(ENDER|CR).*/ and nozzle_diameter[0]==0.4 -[print:0.24mm DRAFT @ENDER3] +[print:0.24mm DRAFT @CREALITY] inherits = *0.24mm* -# alias = 0.24mm DRAFT -compatible_printers_condition = printer_model=~/ENDER.*/ and nozzle_diameter[0]==0.4 +renamed_from = "0.24mm DRAFT @ENDER3" +compatible_printers_condition = printer_model=~/(ENDER|CR).*/ and nozzle_diameter[0]==0.4 + +[print:0.28mm SUPERDRAFT @CREALITY] +inherits = *0.28mm* +compatible_printers_condition = printer_model=~/(ENDER|CR).*/ and nozzle_diameter[0]==0.4 # Common filament preset [filament:*common*] @@ -218,22 +357,22 @@ compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_CREALITY.*/ [filament:*PLA*] inherits = *common* -bed_temperature = 40 +bed_temperature = 60 fan_below_layer_time = 100 -filament_colour = #FF3232 +filament_colour = #DDDDDD filament_max_volumetric_speed = 15 filament_type = PLA filament_density = 1.24 filament_cost = 20 -first_layer_bed_temperature = 40 -first_layer_temperature = 215 +first_layer_bed_temperature = 60 +first_layer_temperature = 210 fan_always_on = 1 cooling = 1 max_fan_speed = 100 min_fan_speed = 100 bridge_fan_speed = 100 disable_fan_first_layers = 1 -temperature = 210 +temperature = 205 [filament:*PET*] inherits = *common* @@ -241,12 +380,12 @@ bed_temperature = 70 cooling = 1 disable_fan_first_layers = 3 fan_below_layer_time = 20 -filament_colour = #FF8000 +filament_colour = #DDDDDD filament_max_volumetric_speed = 8 filament_type = PETG filament_density = 1.27 filament_cost = 30 -first_layer_bed_temperature =70 +first_layer_bed_temperature = 70 first_layer_temperature = 240 fan_always_on = 1 max_fan_speed = 50 @@ -260,7 +399,7 @@ bed_temperature = 100 cooling = 0 disable_fan_first_layers = 3 fan_below_layer_time = 20 -filament_colour = #3A80CA +filament_colour = #DDDDDD filament_max_volumetric_speed = 11 filament_type = ABS filament_density = 1.04 @@ -274,78 +413,173 @@ bridge_fan_speed = 30 top_fan_speed = 0 temperature = 245 -[filament:Generic PLA @ENDER3] +[filament:Generic PLA @CREALITY] inherits = *PLA* -# alias = Generic PLA +renamed_from = "Generic PLA @ENDER3" filament_vendor = Generic -[filament:Generic PETG @ENDER3] +[filament:Generic PETG @CREALITY] inherits = *PET* +renamed_from = "Generic PETG @ENDER3" filament_vendor = Generic -[filament:Generic ABS @ENDER3] +[filament:Generic ABS @CREALITY] inherits = *ABS* -# alias = Generic ABS -first_layer_bed_temperature = 90 +renamed_from = "Generic ABS @ENDER3" +first_layer_bed_temperature = 90 bed_temperature = 90 filament_vendor = Generic -[filament:Creality PLA @ENDER3] +[filament:Creality PLA @CREALITY] inherits = *PLA* -# alias = Creality PLA +renamed_from = "Creality PLA @ENDER3" filament_vendor = Creality -temperature = 205 -bed_temperature = 40 -first_layer_temperature = 210 -first_layer_bed_temperature =40 +temperature = 200 +bed_temperature = 60 +first_layer_temperature = 205 +first_layer_bed_temperature = 60 +filament_colour = #42BDD8 -[filament:Creality PETG @ENDER3] +[filament:Creality PETG @CREALITY] inherits = *PET* -# alias = Creality PETG +renamed_from = "Creality PETG @ENDER3" filament_vendor = Creality temperature = 240 bed_temperature = 70 first_layer_temperature = 240 -first_layer_bed_temperature =70 +first_layer_bed_temperature = 70 max_fan_speed = 40 min_fan_speed = 20 +filament_colour = #42BDD8 -[filament:Creality ABS @ENDER3] +[filament:Creality ABS @CREALITY] inherits = *ABS* -# alias = Creality ABS +renamed_from = "Creality ABS @ENDER3" filament_vendor = Creality temperature = 240 bed_temperature = 90 first_layer_temperature = 240 -first_layer_bed_temperature =90 +first_layer_bed_temperature = 90 +filament_colour = #42BDD8 -[filament:Prusament PLA @ENDER3] +[filament:Prusament PLA @CREALITY] inherits = *PLA* -# alias = Prusament PLA +renamed_from = "Prusament PLA @ENDER3" filament_vendor = Prusa Polymers -temperature = 215 -bed_temperature = 40 +temperature = 210 +bed_temperature = 60 first_layer_temperature = 215 -first_layer_bed_temperature =40 +first_layer_bed_temperature = 60 filament_cost = 24.99 filament_density = 1.24 +filament_colour = #F94D0C -[filament:Prusament PETG @ENDER3] +[filament:Prusament PETG @CREALITY] inherits = *PET* -# alias = Prusament PETG +renamed_from = "Prusament PETG @ENDER3" filament_vendor = Prusa Polymers temperature = 245 bed_temperature = 70 first_layer_temperature = 245 -first_layer_bed_temperature =70 +first_layer_bed_temperature = 70 filament_cost = 24.99 filament_density = 1.27 +filament_colour = #F94D0C + +[filament:AzureFilm PLA @CREALITY] +inherits = *PLA* +filament_vendor = AzureFilm +temperature = 210 +bed_temperature = 60 +first_layer_temperature = 215 +first_layer_bed_temperature = 60 +filament_cost = 19.97 +filament_density = 1.24 +filament_colour = #006AA6 + +[filament:Devil Design PLA @CREALITY] +inherits = *PLA* +filament_vendor = Devil Design +temperature = 215 +bed_temperature = 60 +first_layer_temperature = 215 +first_layer_bed_temperature = 60 +filament_cost = 19.00 +filament_density = 1.24 +filament_colour = #FF0000 + +[filament:Devil Design PLA (Galaxy) @CREALITY] +inherits = *PLA* +filament_vendor = Devil Design +temperature = 225 +bed_temperature = 65 +first_layer_temperature = 225 +first_layer_bed_temperature = 65 +filament_cost = 19.00 +filament_density = 1.24 +filament_colour = #FF0000 + +[filament:Extrudr PLA NX2 @CREALITY] +inherits = *PLA* +filament_vendor = Extrudr +temperature = 200 +bed_temperature = 60 +first_layer_temperature = 205 +first_layer_bed_temperature = 60 +filament_cost = 23.63 +filament_density = 1.3 +filament_colour = #3C4547 + +[filament:Real Filament PLA @CREALITY] +inherits = *PLA* +filament_vendor = Real Filament +temperature = 195 +bed_temperature = 60 +first_layer_temperature = 200 +first_layer_bed_temperature = 60 +filament_cost = 24.99 +filament_density = 1.24 +filament_colour = #007ABF + +[filament:Velleman PLA @CREALITY] +inherits = *PLA* +filament_vendor = Velleman +temperature = 200 +bed_temperature = 60 +first_layer_temperature = 205 +first_layer_bed_temperature = 60 +filament_cost = 27.99 +filament_density = 1.24 +filament_colour = #7EA60D + +[filament:3DJAKE ecoPLA @CREALITY] +inherits = *PLA* +filament_vendor = 3DJAKE +temperature = 200 +bed_temperature = 60 +first_layer_temperature = 205 +first_layer_bed_temperature = 60 +filament_cost = 21.99 +filament_density = 1.24 +filament_colour = #125467 + +[filament:123-3D Jupiter PLA @CREALITY] +inherits = *PLA* +filament_vendor = 123-3D +temperature = 200 +bed_temperature = 60 +first_layer_temperature = 205 +first_layer_bed_temperature = 60 +filament_cost = 19.50 +filament_density = 1.24 +filament_colour = #FFE200 # Common printer preset [printer:*common*] printer_technology = FFF before_layer_gcode = ;BEFORE_LAYER_CHANGE\nG92 E0\n;[layer_z]\n\n between_objects_gcode = +pause_print_gcode = deretract_speed = 0 extruder_colour = #FFFF00 extruder_offset = 0x0 @@ -373,8 +607,6 @@ max_layer_height = 0.3 min_layer_height = 0.07 max_print_height = 200 nozzle_diameter = 0.4 -octoprint_apikey = -octoprint_host = printer_notes = printer_settings_id = retract_before_travel = 1 @@ -388,8 +620,6 @@ retract_lift_below = 0 retract_restart_extra = 0 retract_restart_extra_toolchange = 0 retract_speed = 35 -serial_port = -serial_speed = 250000 single_extruder_multi_material = 0 toolchange_gcode = use_firmware_retraction = 0 @@ -404,12 +634,13 @@ default_filament_profile = [printer:Creality Ender-3] inherits = *common* +renamed_from = "Creality ENDER-3" printer_model = ENDER3 printer_variant = 0.4 -max_layer_height = 0.25 -min_layer_height = 0.1 +max_layer_height = 0.28 +min_layer_height = 0.08 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_CREALITY\nPRINTER_MODEL_ENDER3\nPRINTER_HAS_BOWDEN -bed_shape = 0x0,220x0,220x220,0x220 +bed_shape = 3x3,228x3,228x228,3x228 max_print_height = 250 machine_max_acceleration_e = 5000 machine_max_acceleration_extruding = 500 @@ -426,30 +657,137 @@ 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 +machine_min_travel_rate = 0 nozzle_diameter = 0.4 retract_before_travel = 2 retract_length = 5 retract_speed = 60 deretract_speed = 40 retract_before_wipe = 70% -default_print_profile = 0.15mm OPTIMAL @ENDER3 -default_filament_profile = Creality PLA @ENDER3 -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.0\nG1 Y190 E15.0 F1500.0 ; intro line\nG1 X2.3 F5000\nG1 Y10 E15.0 F1200.0 ; intro line\nG92 E0.0 -end_gcode = M104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\n{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+10, max_print_height)} F600{endif} ; Move print head up\nG1 X0 Y200 F3000 ; present print\nM84 X Y E ; disable motors +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 = M104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\n{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+5, max_print_height)} F600{endif} ; Move print head up\nG1 X5 Y170 F3000 ; present print\n{if layer_z < max_print_height-10}G1 Z{z_offset+min(layer_z+70, max_print_height-10)} F600{endif} ; Move print head up\nM84 X Y E ; disable motors -[printer:*abl*] -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\nG28 ; home all\nG29 ; auto bed levelling\nG1 Z50 F240\nG1 X2 Y10 F3000\nM104 S[first_layer_temperature] ; set extruder temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG1 Z0.28 F240\nG92 E0.0\nG1 Y190 E15.0 F1500.0 ; intro line\nG1 X2.3 F5000\nG1 Y10 E15.0 F1200.0 ; intro line\nG92 E0.0 +[printer:*fastabl*] +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\nG28 ; home all\nG29 ; auto bed levelling\nG1 Z50 F240\nG1 X2 Y10 F3000\nM104 S[first_layer_temperature] ; set extruder temp\nM190 S[first_layer_bed_temperature] ; wait for bed 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:*slowabl*] +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 = M104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\n{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+5, max_print_height)} F600{endif} ; Move print bed down\nG1 X50 Y50 F3000 ; present print\n{if layer_z < max_print_height-10}G1 Z{z_offset+max_print_height-10} F600{endif} ; Move print bed down\nM84 X Y E ; disable motors [printer:Creality Ender-3 BLTouch] -inherits = Creality Ender-3; *abl* +inherits = Creality Ender-3; *fastabl* +renamed_from = "Creality ENDER-3 BLTouch" printer_model = ENDER3BLTOUCH +[printer:Creality Ender-5] +inherits = Creality Ender-3; *invertedz* +retract_length = 6 +bed_shape = 5x2.5,225x2.5,225x222.5,5x222.5 +printer_model = ENDER5 +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_CREALITY\nPRINTER_MODEL_ENDER5\nPRINTER_HAS_BOWDEN +max_print_height = 300 + +[printer:Creality Ender-5 Plus] +inherits = Creality Ender-3; *slowabl*; *invertedz* +retract_length = 6 +bed_shape = 5x5,355x5,355x355,5x355 +printer_model = ENDER5PLUS +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_CREALITY\nPRINTER_MODEL_ENDER5PLUS\nPRINTER_HAS_BOWDEN +max_print_height = 400 + [printer:Creality Ender-2] inherits = Creality Ender-3 +renamed_from = "Creality ENDER-2" bed_shape = 0x0,150x0,150x150,0x150 printer_model = ENDER2 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_CREALITY\nPRINTER_MODEL_ENDER2\nPRINTER_HAS_BOWDEN max_print_height = 200 -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.0\nG1 X15 Y135 E15.0 F1500.0 ; intro line\nG1 X2.3 F5000\nG1 Y10 E15.0 F1200.0 ; intro line\nG92 E0.0 -end_gcode = M104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\n{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+10, max_print_height)} F600{endif} ; Move print head up\nG1 X0 Y140 F3000 ; present print\nM84 X Y E ; disable motors +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 X15 Y135 E15 F1500 ; intro line\nG1 X2.3 F5000\nG92 E0\nG1 Y10 E15 F1200 ; intro line\nG92 E0 +end_gcode = M104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\n{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+5, max_print_height)} F600{endif} ; Move print head up\nG1 X5 Y140 F3000 ; present print\n{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+30, max_print_height)} F600{endif} ; Move print head up\nM84 X Y E ; disable motors + +[printer:Creality CR-10 Mini] +inherits = Creality Ender-3 +retract_length = 6 +bed_shape = 2.5x5,2.5x225,302.5x225,302.5x5 +printer_model = CR10MINI +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_CREALITY\nPRINTER_MODEL_CR10MINI\nPRINTER_HAS_BOWDEN +max_print_height = 300 + +[printer:Creality CR-10] +inherits = Creality Ender-3 +retract_length = 6 +bed_shape = 5x5,305x5,305x305,5x305 +printer_model = CR10 +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_CREALITY\nPRINTER_MODEL_CR10\nPRINTER_HAS_BOWDEN +max_print_height = 400 + +[printer:Creality CR-10 V2] +inherits = Creality Ender-3 +retract_length = 6 +bed_shape = 5x5,305x5,305x305,5x305 +printer_model = CR10V2 +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_CREALITY\nPRINTER_MODEL_CR10V2\nPRINTER_HAS_BOWDEN +max_print_height = 400 + +[printer:Creality CR-10 V3] +inherits = Creality Ender-3 +retract_length = 1 +bed_shape = 5x5,305x5,305x305,5x305 +printer_model = CR10V3 +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_CREALITY\nPRINTER_MODEL_CR10V3 +max_print_height = 400 + +[printer:Creality CR-10 S] +inherits = Creality Ender-3 +retract_length = 6 +bed_shape = 5x5,305x5,305x305,5x305 +printer_model = CR10S +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_CREALITY\nPRINTER_MODEL_CR10S\nPRINTER_HAS_BOWDEN +max_print_height = 400 + +[printer:Creality CR-10 S Pro] +inherits = Creality Ender-3; *slowabl* +retract_length = 6 +bed_shape = 0x0,300x0,300x300,0x300 +printer_model = CR10SPRO +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_CREALITY\nPRINTER_MODEL_CR10SPRO\nPRINTER_HAS_BOWDEN +max_print_height = 400 + +[printer:Creality CR-10 S Pro V2] +inherits = Creality Ender-3; *slowabl* +retract_length = 6 +bed_shape = 5x5,305x5,305x305,5x305 +printer_model = CR10SPROV2 +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_CREALITY\nPRINTER_MODEL_CR10SPROV2\nPRINTER_HAS_BOWDEN +max_print_height = 400 + +[printer:Creality CR-10 S4] +inherits = Creality Ender-3 +retract_length = 6 +bed_shape = 5x5,405x5,405x405,5x405 +printer_model = CR10S4 +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_CREALITY\nPRINTER_MODEL_CR10S4\nPRINTER_HAS_BOWDEN +max_print_height = 400 + +[printer:Creality CR-10 S5] +inherits = Creality Ender-3 +retract_length = 6 +bed_shape = 5x5,505x5,505x505,5x505 +printer_model = CR10S5 +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_CREALITY\nPRINTER_MODEL_CR10S5\nPRINTER_HAS_BOWDEN +max_print_height = 500 + +[printer:Creality CR-20] +inherits = Creality Ender-3 +printer_model = CR20 +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_CREALITY\nPRINTER_MODEL_CR20\nPRINTER_HAS_BOWDEN + +[printer:Creality CR-20 Pro] +inherits = Creality Ender-3; *fastabl* +retract_length = 4 +printer_model = CR20PRO +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_CREALITY\nPRINTER_MODEL_CR20PRO\nPRINTER_HAS_BOWDEN diff --git a/resources/profiles/Creality/CR10MINI_thumbnail.png b/resources/profiles/Creality/CR10MINI_thumbnail.png new file mode 100644 index 0000000000..ecb9c97abc Binary files /dev/null and b/resources/profiles/Creality/CR10MINI_thumbnail.png differ diff --git a/resources/profiles/Creality/CR10S4_thumbnail.png b/resources/profiles/Creality/CR10S4_thumbnail.png new file mode 100644 index 0000000000..ff01823c3b Binary files /dev/null and b/resources/profiles/Creality/CR10S4_thumbnail.png differ diff --git a/resources/profiles/Creality/CR10S5_thumbnail.png b/resources/profiles/Creality/CR10S5_thumbnail.png new file mode 100644 index 0000000000..ff01823c3b Binary files /dev/null and b/resources/profiles/Creality/CR10S5_thumbnail.png differ diff --git a/resources/profiles/Creality/CR10SPROV2_thumbnail.png b/resources/profiles/Creality/CR10SPROV2_thumbnail.png new file mode 100644 index 0000000000..e7d2977254 Binary files /dev/null and b/resources/profiles/Creality/CR10SPROV2_thumbnail.png differ diff --git a/resources/profiles/Creality/CR10SPRO_thumbnail.png b/resources/profiles/Creality/CR10SPRO_thumbnail.png new file mode 100644 index 0000000000..84e9b6c823 Binary files /dev/null and b/resources/profiles/Creality/CR10SPRO_thumbnail.png differ diff --git a/resources/profiles/Creality/CR10S_thumbnail.png b/resources/profiles/Creality/CR10S_thumbnail.png new file mode 100644 index 0000000000..1a8f0eb023 Binary files /dev/null and b/resources/profiles/Creality/CR10S_thumbnail.png differ diff --git a/resources/profiles/Creality/CR10V2_thumbnail.png b/resources/profiles/Creality/CR10V2_thumbnail.png new file mode 100644 index 0000000000..325e58a622 Binary files /dev/null and b/resources/profiles/Creality/CR10V2_thumbnail.png differ diff --git a/resources/profiles/Creality/CR10V3_thumbnail.png b/resources/profiles/Creality/CR10V3_thumbnail.png new file mode 100644 index 0000000000..2019ec28ca Binary files /dev/null and b/resources/profiles/Creality/CR10V3_thumbnail.png differ diff --git a/resources/profiles/Creality/CR10_thumbnail.png b/resources/profiles/Creality/CR10_thumbnail.png new file mode 100644 index 0000000000..53cdac9d58 Binary files /dev/null and b/resources/profiles/Creality/CR10_thumbnail.png differ diff --git a/resources/profiles/Creality/CR20PRO_thumbnail.png b/resources/profiles/Creality/CR20PRO_thumbnail.png new file mode 100644 index 0000000000..d420c6c658 Binary files /dev/null and b/resources/profiles/Creality/CR20PRO_thumbnail.png differ diff --git a/resources/profiles/Creality/CR20_thumbnail.png b/resources/profiles/Creality/CR20_thumbnail.png new file mode 100644 index 0000000000..d8dfdf5dc7 Binary files /dev/null and b/resources/profiles/Creality/CR20_thumbnail.png differ diff --git a/resources/profiles/Creality/ENDER2_thumbnail.png b/resources/profiles/Creality/ENDER2_thumbnail.png index 45fb9bfe77..f4bcd8dc52 100644 Binary files a/resources/profiles/Creality/ENDER2_thumbnail.png and b/resources/profiles/Creality/ENDER2_thumbnail.png differ diff --git a/resources/profiles/Creality/ENDER3BLTOUCH_thumbnail.png b/resources/profiles/Creality/ENDER3BLTOUCH_thumbnail.png index 8b1ca5889a..4234b2dde3 100644 Binary files a/resources/profiles/Creality/ENDER3BLTOUCH_thumbnail.png and b/resources/profiles/Creality/ENDER3BLTOUCH_thumbnail.png differ diff --git a/resources/profiles/Creality/ENDER3_thumbnail.png b/resources/profiles/Creality/ENDER3_thumbnail.png index 8b1ca5889a..4234b2dde3 100644 Binary files a/resources/profiles/Creality/ENDER3_thumbnail.png and b/resources/profiles/Creality/ENDER3_thumbnail.png differ diff --git a/resources/profiles/Creality/ENDER5PLUS_thumbnail.png b/resources/profiles/Creality/ENDER5PLUS_thumbnail.png new file mode 100644 index 0000000000..c76667e012 Binary files /dev/null and b/resources/profiles/Creality/ENDER5PLUS_thumbnail.png differ diff --git a/resources/profiles/Creality/ENDER5_thumbnail.png b/resources/profiles/Creality/ENDER5_thumbnail.png new file mode 100644 index 0000000000..51a7b3149b Binary files /dev/null and b/resources/profiles/Creality/ENDER5_thumbnail.png differ diff --git a/resources/profiles/Creality/cr10.svg b/resources/profiles/Creality/cr10.svg new file mode 100644 index 0000000000..67cb4bd374 --- /dev/null +++ b/resources/profiles/Creality/cr10.svg @@ -0,0 +1,4 @@ + + + + diff --git a/resources/profiles/Creality/cr10_bed.stl b/resources/profiles/Creality/cr10_bed.stl new file mode 100644 index 0000000000..8329461848 --- /dev/null +++ b/resources/profiles/Creality/cr10_bed.stl @@ -0,0 +1,2774 @@ +solid OpenSCAD_Model + facet normal 0 0 -1 + outer loop + vertex 152.105 -154.998 -3 + vertex 152.002 -154.998 -3 + vertex 152.314 -154.984 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 152.314 -154.984 -3 + vertex 152.002 -154.998 -3 + vertex 152.521 -154.954 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 155 -152 -3 + vertex 152.002 -154.998 -3 + vertex 152.002 154.998 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 152.521 -154.954 -3 + vertex 152.002 -154.998 -3 + vertex 152.726 -154.911 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 152.726 -154.911 -3 + vertex 152.002 -154.998 -3 + vertex 152.927 -154.853 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 152.927 -154.853 -3 + vertex 152.002 -154.998 -3 + vertex 153.124 -154.782 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 153.124 -154.782 -3 + vertex 152.002 -154.998 -3 + vertex 153.315 -154.696 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 153.315 -154.696 -3 + vertex 152.002 -154.998 -3 + vertex 153.5 -154.598 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 153.5 -154.598 -3 + vertex 152.002 -154.998 -3 + vertex 153.678 -154.487 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 153.678 -154.487 -3 + vertex 152.002 -154.998 -3 + vertex 153.847 -154.364 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 153.847 -154.364 -3 + vertex 152.002 -154.998 -3 + vertex 154.007 -154.229 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 154.007 -154.229 -3 + vertex 152.002 -154.998 -3 + vertex 154.158 -154.084 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 154.158 -154.084 -3 + vertex 152.002 -154.998 -3 + vertex 154.298 -153.928 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 154.298 -153.928 -3 + vertex 152.002 -154.998 -3 + vertex 154.427 -153.763 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 154.427 -153.763 -3 + vertex 152.002 -154.998 -3 + vertex 154.544 -153.59 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 154.544 -153.59 -3 + vertex 152.002 -154.998 -3 + vertex 154.649 -153.408 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 154.649 -153.408 -3 + vertex 152.002 -154.998 -3 + vertex 154.741 -153.22 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 154.741 -153.22 -3 + vertex 152.002 -154.998 -3 + vertex 154.819 -153.026 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 154.819 -153.026 -3 + vertex 152.002 -154.998 -3 + vertex 154.884 -152.827 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 154.884 -152.827 -3 + vertex 152.002 -154.998 -3 + vertex 154.934 -152.624 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 154.934 -152.624 -3 + vertex 152.002 -154.998 -3 + vertex 154.971 -152.418 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 154.971 -152.418 -3 + vertex 152.002 -154.998 -3 + vertex 154.993 -152.209 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 154.993 -152.209 -3 + vertex 152.002 -154.998 -3 + vertex 155 -152 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 155 -152 -3 + vertex 152.002 154.998 -3 + vertex 155 152 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 152.002 154.998 -3 + vertex 154.971 152.418 -3 + vertex 154.993 152.209 -3 + endloop + endfacet + facet normal -0 -0 -1 + outer loop + vertex 154.884 152.827 -3 + vertex 154.934 152.624 -3 + vertex 152.002 154.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 154.741 153.22 -3 + vertex 152.002 154.998 -3 + vertex 154.649 153.408 -3 + endloop + endfacet + facet normal -0 -0 -1 + outer loop + vertex 154.741 153.22 -3 + vertex 154.819 153.026 -3 + vertex 152.002 154.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 152.002 154.998 -3 + vertex 154.007 154.229 -3 + vertex 154.158 154.084 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 154.427 153.763 -3 + vertex 152.002 154.998 -3 + vertex 154.298 153.928 -3 + endloop + endfacet + facet normal -0 -0 -1 + outer loop + vertex 154.427 153.763 -3 + vertex 154.544 153.59 -3 + vertex 152.002 154.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 154.298 153.928 -3 + vertex 152.002 154.998 -3 + vertex 154.158 154.084 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 152.002 154.998 -3 + vertex 152.927 154.853 -3 + vertex 153.124 154.782 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 153.847 154.364 -3 + vertex 152.002 154.998 -3 + vertex 153.678 154.487 -3 + endloop + endfacet + facet normal -0 -0 -1 + outer loop + vertex 153.847 154.364 -3 + vertex 154.007 154.229 -3 + vertex 152.002 154.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 153.678 154.487 -3 + vertex 152.002 154.998 -3 + vertex 153.5 154.598 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 153.5 154.598 -3 + vertex 152.002 154.998 -3 + vertex 153.315 154.696 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 153.315 154.696 -3 + vertex 152.002 154.998 -3 + vertex 153.124 154.782 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 154.649 153.408 -3 + vertex 152.002 154.998 -3 + vertex 154.544 153.59 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 152.726 154.911 -3 + vertex 152.002 154.998 -3 + vertex 152.521 154.954 -3 + endloop + endfacet + facet normal -0 -0 -1 + outer loop + vertex 152.726 154.911 -3 + vertex 152.927 154.853 -3 + vertex 152.002 154.998 -3 + endloop + endfacet + facet normal -0 -0 -1 + outer loop + vertex 154.819 153.026 -3 + vertex 154.884 152.827 -3 + vertex 152.002 154.998 -3 + endloop + endfacet + facet normal -0 -0 -1 + outer loop + vertex 152.314 154.984 -3 + vertex 152.521 154.954 -3 + vertex 152.002 154.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 152.002 154.998 -3 + vertex 154.934 152.624 -3 + vertex 154.971 152.418 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 152.002 154.998 -3 + vertex 152.105 154.998 -3 + vertex 152.314 154.984 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 155 152 -3 + vertex 152.002 154.998 -3 + vertex 154.993 152.209 -3 + endloop + endfacet + facet normal 0 -0 -1 + outer loop + vertex -152 155 -3 + vertex 152 155 -3 + vertex -152.002 154.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.002 154.998 -3 + vertex 152 155 -3 + vertex 152.002 154.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 152.002 -154.998 -3 + vertex -152.002 154.998 -3 + vertex 152.002 154.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -155 -152 -3 + vertex -155 152 -3 + vertex -152.002 -154.998 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex -152.002 154.998 -3 + vertex -152.314 154.984 -3 + vertex -152.105 154.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.002 154.998 -3 + vertex -152.521 154.954 -3 + vertex -152.314 154.984 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.002 154.998 -3 + vertex -152.726 154.911 -3 + vertex -152.521 154.954 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.002 154.998 -3 + vertex -152.927 154.853 -3 + vertex -152.726 154.911 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.002 154.998 -3 + vertex -153.124 154.782 -3 + vertex -152.927 154.853 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.002 154.998 -3 + vertex -153.315 154.696 -3 + vertex -153.124 154.782 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.002 154.998 -3 + vertex -153.5 154.598 -3 + vertex -153.315 154.696 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.002 154.998 -3 + vertex -153.678 154.487 -3 + vertex -153.5 154.598 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.002 154.998 -3 + vertex -153.847 154.364 -3 + vertex -153.678 154.487 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.002 154.998 -3 + vertex -154.007 154.229 -3 + vertex -153.847 154.364 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.002 154.998 -3 + vertex -154.158 154.084 -3 + vertex -154.007 154.229 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.002 154.998 -3 + vertex -154.298 153.928 -3 + vertex -154.158 154.084 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.002 154.998 -3 + vertex -154.427 153.763 -3 + vertex -154.298 153.928 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.002 154.998 -3 + vertex -154.544 153.59 -3 + vertex -154.427 153.763 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.002 154.998 -3 + vertex -154.649 153.408 -3 + vertex -154.544 153.59 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.002 154.998 -3 + vertex -154.741 153.22 -3 + vertex -154.649 153.408 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.002 154.998 -3 + vertex -154.819 153.026 -3 + vertex -154.741 153.22 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.002 154.998 -3 + vertex -154.884 152.827 -3 + vertex -154.819 153.026 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.002 154.998 -3 + vertex -154.934 152.624 -3 + vertex -154.884 152.827 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.002 154.998 -3 + vertex -154.971 152.418 -3 + vertex -154.934 152.624 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.002 154.998 -3 + vertex -154.993 152.209 -3 + vertex -154.971 152.418 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.002 154.998 -3 + vertex -155 152 -3 + vertex -154.993 152.209 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.002 -154.998 -3 + vertex -155 152 -3 + vertex -152.002 154.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 152.002 -154.998 -3 + vertex -152.002 -154.998 -3 + vertex -152.002 154.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.002 -154.998 -3 + vertex -154.971 -152.418 -3 + vertex -154.993 -152.209 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -154.884 -152.827 -3 + vertex -154.934 -152.624 -3 + vertex -152.002 -154.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -154.741 -153.22 -3 + vertex -152.002 -154.998 -3 + vertex -154.649 -153.408 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -154.741 -153.22 -3 + vertex -154.819 -153.026 -3 + vertex -152.002 -154.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.002 -154.998 -3 + vertex -154.007 -154.229 -3 + vertex -154.158 -154.084 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -154.427 -153.763 -3 + vertex -152.002 -154.998 -3 + vertex -154.298 -153.928 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -154.427 -153.763 -3 + vertex -154.544 -153.59 -3 + vertex -152.002 -154.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -154.298 -153.928 -3 + vertex -152.002 -154.998 -3 + vertex -154.158 -154.084 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.002 -154.998 -3 + vertex -152.927 -154.853 -3 + vertex -153.124 -154.782 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -153.847 -154.364 -3 + vertex -152.002 -154.998 -3 + vertex -153.678 -154.487 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -153.847 -154.364 -3 + vertex -154.007 -154.229 -3 + vertex -152.002 -154.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -153.678 -154.487 -3 + vertex -152.002 -154.998 -3 + vertex -153.5 -154.598 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -153.5 -154.598 -3 + vertex -152.002 -154.998 -3 + vertex -153.315 -154.696 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -153.315 -154.696 -3 + vertex -152.002 -154.998 -3 + vertex -153.124 -154.782 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -154.649 -153.408 -3 + vertex -152.002 -154.998 -3 + vertex -154.544 -153.59 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.726 -154.911 -3 + vertex -152.002 -154.998 -3 + vertex -152.521 -154.954 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.726 -154.911 -3 + vertex -152.927 -154.853 -3 + vertex -152.002 -154.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -154.819 -153.026 -3 + vertex -154.884 -152.827 -3 + vertex -152.002 -154.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.314 -154.984 -3 + vertex -152.521 -154.954 -3 + vertex -152.002 -154.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.002 -154.998 -3 + vertex -154.934 -152.624 -3 + vertex -154.971 -152.418 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.002 -154.998 -3 + vertex -152.105 -154.998 -3 + vertex -152.314 -154.984 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 152.002 -154.998 -3 + vertex 152 -155 -3 + vertex -152.002 -154.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.002 -154.998 -3 + vertex 152 -155 -3 + vertex -152 -155 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -155 -152 -3 + vertex -152.002 -154.998 -3 + vertex -154.993 -152.209 -3 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 152.314 -154.984 0 + vertex 152.002 -154.998 0 + vertex 152.105 -154.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 152.521 -154.954 0 + vertex 152.002 -154.998 0 + vertex 152.314 -154.984 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 152.002 154.998 0 + vertex 152.002 -154.998 0 + vertex 155 -152 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 152.726 -154.911 0 + vertex 152.002 -154.998 0 + vertex 152.521 -154.954 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 152.927 -154.853 0 + vertex 152.002 -154.998 0 + vertex 152.726 -154.911 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 153.124 -154.782 0 + vertex 152.002 -154.998 0 + vertex 152.927 -154.853 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 153.315 -154.696 0 + vertex 152.002 -154.998 0 + vertex 153.124 -154.782 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 153.5 -154.598 0 + vertex 152.002 -154.998 0 + vertex 153.315 -154.696 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 153.678 -154.487 0 + vertex 152.002 -154.998 0 + vertex 153.5 -154.598 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 153.847 -154.364 0 + vertex 152.002 -154.998 0 + vertex 153.678 -154.487 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 154.007 -154.229 0 + vertex 152.002 -154.998 0 + vertex 153.847 -154.364 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 154.158 -154.084 0 + vertex 152.002 -154.998 0 + vertex 154.007 -154.229 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 154.298 -153.928 0 + vertex 152.002 -154.998 0 + vertex 154.158 -154.084 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 154.427 -153.763 0 + vertex 152.002 -154.998 0 + vertex 154.298 -153.928 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 154.544 -153.59 0 + vertex 152.002 -154.998 0 + vertex 154.427 -153.763 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 154.649 -153.408 0 + vertex 152.002 -154.998 0 + vertex 154.544 -153.59 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 154.741 -153.22 0 + vertex 152.002 -154.998 0 + vertex 154.649 -153.408 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 154.819 -153.026 0 + vertex 152.002 -154.998 0 + vertex 154.741 -153.22 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 154.884 -152.827 0 + vertex 152.002 -154.998 0 + vertex 154.819 -153.026 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 154.934 -152.624 0 + vertex 152.002 -154.998 0 + vertex 154.884 -152.827 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 154.971 -152.418 0 + vertex 152.002 -154.998 0 + vertex 154.934 -152.624 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 154.993 -152.209 0 + vertex 152.002 -154.998 0 + vertex 154.971 -152.418 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 155 -152 0 + vertex 152.002 -154.998 0 + vertex 154.993 -152.209 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 155 152 0 + vertex 152.002 154.998 0 + vertex 155 -152 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 154.993 152.209 0 + vertex 154.971 152.418 0 + vertex 152.002 154.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 152.002 154.998 0 + vertex 154.934 152.624 0 + vertex 154.884 152.827 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 154.649 153.408 0 + vertex 152.002 154.998 0 + vertex 154.741 153.22 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 152.002 154.998 0 + vertex 154.819 153.026 0 + vertex 154.741 153.22 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 154.158 154.084 0 + vertex 154.007 154.229 0 + vertex 152.002 154.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 154.298 153.928 0 + vertex 152.002 154.998 0 + vertex 154.427 153.763 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 152.002 154.998 0 + vertex 154.544 153.59 0 + vertex 154.427 153.763 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 154.158 154.084 0 + vertex 152.002 154.998 0 + vertex 154.298 153.928 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 153.124 154.782 0 + vertex 152.927 154.853 0 + vertex 152.002 154.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 153.678 154.487 0 + vertex 152.002 154.998 0 + vertex 153.847 154.364 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 152.002 154.998 0 + vertex 154.007 154.229 0 + vertex 153.847 154.364 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 153.5 154.598 0 + vertex 152.002 154.998 0 + vertex 153.678 154.487 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 153.315 154.696 0 + vertex 152.002 154.998 0 + vertex 153.5 154.598 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 153.124 154.782 0 + vertex 152.002 154.998 0 + vertex 153.315 154.696 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 154.544 153.59 0 + vertex 152.002 154.998 0 + vertex 154.649 153.408 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 152.521 154.954 0 + vertex 152.002 154.998 0 + vertex 152.726 154.911 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 152.002 154.998 0 + vertex 152.927 154.853 0 + vertex 152.726 154.911 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 152.002 154.998 0 + vertex 154.884 152.827 0 + vertex 154.819 153.026 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 152.002 154.998 0 + vertex 152.521 154.954 0 + vertex 152.314 154.984 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 154.971 152.418 0 + vertex 154.934 152.624 0 + vertex 152.002 154.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 152.314 154.984 0 + vertex 152.105 154.998 0 + vertex 152.002 154.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 154.993 152.209 0 + vertex 152.002 154.998 0 + vertex 155 152 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -152.002 154.998 0 + vertex 152 155 0 + vertex -152 155 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 152.002 154.998 0 + vertex 152 155 0 + vertex -152.002 154.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 152.002 154.998 0 + vertex -152.002 154.998 0 + vertex 152.002 -154.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -152.002 -154.998 0 + vertex -155 152 0 + vertex -155 -152 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -152.105 154.998 0 + vertex -152.314 154.984 0 + vertex -152.002 154.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -152.314 154.984 0 + vertex -152.521 154.954 0 + vertex -152.002 154.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -152.521 154.954 0 + vertex -152.726 154.911 0 + vertex -152.002 154.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -152.726 154.911 0 + vertex -152.927 154.853 0 + vertex -152.002 154.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -152.927 154.853 0 + vertex -153.124 154.782 0 + vertex -152.002 154.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -153.124 154.782 0 + vertex -153.315 154.696 0 + vertex -152.002 154.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -153.315 154.696 0 + vertex -153.5 154.598 0 + vertex -152.002 154.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -153.5 154.598 0 + vertex -153.678 154.487 0 + vertex -152.002 154.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -153.678 154.487 0 + vertex -153.847 154.364 0 + vertex -152.002 154.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -153.847 154.364 0 + vertex -154.007 154.229 0 + vertex -152.002 154.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -154.007 154.229 0 + vertex -154.158 154.084 0 + vertex -152.002 154.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -154.158 154.084 0 + vertex -154.298 153.928 0 + vertex -152.002 154.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -154.298 153.928 0 + vertex -154.427 153.763 0 + vertex -152.002 154.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -154.427 153.763 0 + vertex -154.544 153.59 0 + vertex -152.002 154.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -154.544 153.59 0 + vertex -154.649 153.408 0 + vertex -152.002 154.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -154.649 153.408 0 + vertex -154.741 153.22 0 + vertex -152.002 154.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -154.741 153.22 0 + vertex -154.819 153.026 0 + vertex -152.002 154.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -154.819 153.026 0 + vertex -154.884 152.827 0 + vertex -152.002 154.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -154.884 152.827 0 + vertex -154.934 152.624 0 + vertex -152.002 154.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -154.934 152.624 0 + vertex -154.971 152.418 0 + vertex -152.002 154.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -154.971 152.418 0 + vertex -154.993 152.209 0 + vertex -152.002 154.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -154.993 152.209 0 + vertex -155 152 0 + vertex -152.002 154.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -152.002 154.998 0 + vertex -155 152 0 + vertex -152.002 -154.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -152.002 154.998 0 + vertex -152.002 -154.998 0 + vertex 152.002 -154.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -154.993 -152.209 0 + vertex -154.971 -152.418 0 + vertex -152.002 -154.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -152.002 -154.998 0 + vertex -154.934 -152.624 0 + vertex -154.884 -152.827 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -154.649 -153.408 0 + vertex -152.002 -154.998 0 + vertex -154.741 -153.22 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -152.002 -154.998 0 + vertex -154.819 -153.026 0 + vertex -154.741 -153.22 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -154.158 -154.084 0 + vertex -154.007 -154.229 0 + vertex -152.002 -154.998 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -154.298 -153.928 0 + vertex -152.002 -154.998 0 + vertex -154.427 -153.763 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -152.002 -154.998 0 + vertex -154.544 -153.59 0 + vertex -154.427 -153.763 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -154.158 -154.084 0 + vertex -152.002 -154.998 0 + vertex -154.298 -153.928 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -153.124 -154.782 0 + vertex -152.927 -154.853 0 + vertex -152.002 -154.998 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -153.678 -154.487 0 + vertex -152.002 -154.998 0 + vertex -153.847 -154.364 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -152.002 -154.998 0 + vertex -154.007 -154.229 0 + vertex -153.847 -154.364 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -153.5 -154.598 0 + vertex -152.002 -154.998 0 + vertex -153.678 -154.487 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -153.315 -154.696 0 + vertex -152.002 -154.998 0 + vertex -153.5 -154.598 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -153.124 -154.782 0 + vertex -152.002 -154.998 0 + vertex -153.315 -154.696 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -154.544 -153.59 0 + vertex -152.002 -154.998 0 + vertex -154.649 -153.408 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -152.521 -154.954 0 + vertex -152.002 -154.998 0 + vertex -152.726 -154.911 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -152.002 -154.998 0 + vertex -152.927 -154.853 0 + vertex -152.726 -154.911 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -152.002 -154.998 0 + vertex -154.884 -152.827 0 + vertex -154.819 -153.026 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -152.002 -154.998 0 + vertex -152.521 -154.954 0 + vertex -152.314 -154.984 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -154.971 -152.418 0 + vertex -154.934 -152.624 0 + vertex -152.002 -154.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -152.314 -154.984 0 + vertex -152.105 -154.998 0 + vertex -152.002 -154.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -152.002 -154.998 0 + vertex 152 -155 0 + vertex 152.002 -154.998 0 + endloop + endfacet + facet normal 0 -0 1 + outer loop + vertex -152 -155 0 + vertex 152 -155 0 + vertex -152.002 -154.998 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -154.993 -152.209 0 + vertex -152.002 -154.998 0 + vertex -155 -152 0 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 152.105 -154.998 -3 + vertex 152.002 -154.998 0 + vertex 152.002 -154.998 -3 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 152.105 -154.998 -3 + vertex 152.105 -154.998 0 + vertex 152.002 -154.998 0 + endloop + endfacet + facet normal 0.0668359 -0.997764 0 + outer loop + vertex 152.314 -154.984 -3 + vertex 152.105 -154.998 0 + vertex 152.105 -154.998 -3 + endloop + endfacet + facet normal 0.0668359 -0.997764 0 + outer loop + vertex 152.314 -154.984 -3 + vertex 152.314 -154.984 0 + vertex 152.105 -154.998 0 + endloop + endfacet + facet normal 0.143429 -0.989661 0 + outer loop + vertex 152.521 -154.954 -3 + vertex 152.314 -154.984 0 + vertex 152.314 -154.984 -3 + endloop + endfacet + facet normal 0.143429 -0.989661 0 + outer loop + vertex 152.521 -154.954 -3 + vertex 152.521 -154.954 0 + vertex 152.314 -154.984 0 + endloop + endfacet + facet normal 0.205289 -0.978701 0 + outer loop + vertex 152.726 -154.911 -3 + vertex 152.521 -154.954 0 + vertex 152.521 -154.954 -3 + endloop + endfacet + facet normal 0.205289 -0.978701 0 + outer loop + vertex 152.726 -154.911 -3 + vertex 152.726 -154.911 0 + vertex 152.521 -154.954 0 + endloop + endfacet + facet normal 0.277246 -0.960799 0 + outer loop + vertex 152.927 -154.853 -3 + vertex 152.726 -154.911 0 + vertex 152.726 -154.911 -3 + endloop + endfacet + facet normal 0.277246 -0.960799 0 + outer loop + vertex 152.927 -154.853 -3 + vertex 152.927 -154.853 0 + vertex 152.726 -154.911 0 + endloop + endfacet + facet normal 0.339058 -0.940766 0 + outer loop + vertex 153.124 -154.782 -3 + vertex 152.927 -154.853 0 + vertex 152.927 -154.853 -3 + endloop + endfacet + facet normal 0.339058 -0.940766 0 + outer loop + vertex 153.124 -154.782 -3 + vertex 153.124 -154.782 0 + vertex 152.927 -154.853 0 + endloop + endfacet + facet normal 0.410563 -0.911832 0 + outer loop + vertex 153.315 -154.696 -3 + vertex 153.124 -154.782 0 + vertex 153.124 -154.782 -3 + endloop + endfacet + facet normal 0.410563 -0.911832 0 + outer loop + vertex 153.315 -154.696 -3 + vertex 153.315 -154.696 0 + vertex 153.124 -154.782 0 + endloop + endfacet + facet normal 0.468107 -0.883672 0 + outer loop + vertex 153.5 -154.598 -3 + vertex 153.315 -154.696 0 + vertex 153.315 -154.696 -3 + endloop + endfacet + facet normal 0.468107 -0.883672 0 + outer loop + vertex 153.5 -154.598 -3 + vertex 153.5 -154.598 0 + vertex 153.315 -154.696 0 + endloop + endfacet + facet normal 0.529142 -0.848533 0 + outer loop + vertex 153.678 -154.487 -3 + vertex 153.5 -154.598 0 + vertex 153.5 -154.598 -3 + endloop + endfacet + facet normal 0.529142 -0.848533 0 + outer loop + vertex 153.678 -154.487 -3 + vertex 153.678 -154.487 0 + vertex 153.5 -154.598 0 + endloop + endfacet + facet normal 0.588456 -0.808529 0 + outer loop + vertex 153.847 -154.364 -3 + vertex 153.678 -154.487 0 + vertex 153.678 -154.487 -3 + endloop + endfacet + facet normal 0.588456 -0.808529 0 + outer loop + vertex 153.847 -154.364 -3 + vertex 153.847 -154.364 0 + vertex 153.678 -154.487 0 + endloop + endfacet + facet normal 0.644871 -0.764291 0 + outer loop + vertex 154.007 -154.229 -3 + vertex 153.847 -154.364 0 + vertex 153.847 -154.364 -3 + endloop + endfacet + facet normal 0.644871 -0.764291 0 + outer loop + vertex 154.007 -154.229 -3 + vertex 154.007 -154.229 0 + vertex 153.847 -154.364 0 + endloop + endfacet + facet normal 0.692631 -0.721292 0 + outer loop + vertex 154.158 -154.084 -3 + vertex 154.007 -154.229 0 + vertex 154.007 -154.229 -3 + endloop + endfacet + facet normal 0.692631 -0.721292 0 + outer loop + vertex 154.158 -154.084 -3 + vertex 154.158 -154.084 0 + vertex 154.007 -154.229 0 + endloop + endfacet + facet normal 0.744242 -0.66791 0 + outer loop + vertex 154.298 -153.928 -3 + vertex 154.158 -154.084 0 + vertex 154.158 -154.084 -3 + endloop + endfacet + facet normal 0.744242 -0.66791 0 + outer loop + vertex 154.298 -153.928 -3 + vertex 154.298 -153.928 0 + vertex 154.158 -154.084 0 + endloop + endfacet + facet normal 0.787807 -0.615922 0 + outer loop + vertex 154.427 -153.763 -3 + vertex 154.298 -153.928 0 + vertex 154.298 -153.928 -3 + endloop + endfacet + facet normal 0.787807 -0.615922 0 + outer loop + vertex 154.427 -153.763 -3 + vertex 154.427 -153.763 0 + vertex 154.298 -153.928 0 + endloop + endfacet + facet normal 0.828349 -0.560213 0 + outer loop + vertex 154.544 -153.59 -3 + vertex 154.427 -153.763 0 + vertex 154.427 -153.763 -3 + endloop + endfacet + facet normal 0.828349 -0.560213 0 + outer loop + vertex 154.544 -153.59 -3 + vertex 154.544 -153.59 0 + vertex 154.427 -153.763 0 + endloop + endfacet + facet normal 0.866186 -0.499722 0 + outer loop + vertex 154.649 -153.408 -3 + vertex 154.544 -153.59 0 + vertex 154.544 -153.59 -3 + endloop + endfacet + facet normal 0.866186 -0.499722 0 + outer loop + vertex 154.649 -153.408 -3 + vertex 154.649 -153.408 0 + vertex 154.544 -153.59 0 + endloop + endfacet + facet normal 0.898217 -0.439553 0 + outer loop + vertex 154.741 -153.22 -3 + vertex 154.649 -153.408 0 + vertex 154.649 -153.408 -3 + endloop + endfacet + facet normal 0.898217 -0.439553 0 + outer loop + vertex 154.741 -153.22 -3 + vertex 154.741 -153.22 0 + vertex 154.649 -153.408 0 + endloop + endfacet + facet normal 0.927816 -0.373039 0 + outer loop + vertex 154.819 -153.026 -3 + vertex 154.741 -153.22 0 + vertex 154.741 -153.22 -3 + endloop + endfacet + facet normal 0.927816 -0.373039 0 + outer loop + vertex 154.819 -153.026 -3 + vertex 154.819 -153.026 0 + vertex 154.741 -153.22 0 + endloop + endfacet + facet normal 0.950577 -0.31049 0 + outer loop + vertex 154.884 -152.827 -3 + vertex 154.819 -153.026 0 + vertex 154.819 -153.026 -3 + endloop + endfacet + facet normal 0.950577 -0.31049 0 + outer loop + vertex 154.884 -152.827 -3 + vertex 154.884 -152.827 0 + vertex 154.819 -153.026 0 + endloop + endfacet + facet normal 0.970981 -0.239158 0 + outer loop + vertex 154.934 -152.624 -3 + vertex 154.884 -152.827 0 + vertex 154.884 -152.827 -3 + endloop + endfacet + facet normal 0.970981 -0.239158 0 + outer loop + vertex 154.934 -152.624 -3 + vertex 154.934 -152.624 0 + vertex 154.884 -152.827 0 + endloop + endfacet + facet normal 0.98425 -0.176783 0 + outer loop + vertex 154.971 -152.418 -3 + vertex 154.934 -152.624 0 + vertex 154.934 -152.624 -3 + endloop + endfacet + facet normal 0.98425 -0.176783 0 + outer loop + vertex 154.971 -152.418 -3 + vertex 154.971 -152.418 0 + vertex 154.934 -152.624 0 + endloop + endfacet + facet normal 0.994505 -0.104685 0 + outer loop + vertex 154.993 -152.209 -3 + vertex 154.971 -152.418 0 + vertex 154.971 -152.418 -3 + endloop + endfacet + facet normal 0.994505 -0.104685 0 + outer loop + vertex 154.993 -152.209 -3 + vertex 154.993 -152.209 0 + vertex 154.971 -152.418 0 + endloop + endfacet + facet normal 0.99944 -0.0334741 0 + outer loop + vertex 155 -152 -3 + vertex 154.993 -152.209 0 + vertex 154.993 -152.209 -3 + endloop + endfacet + facet normal 0.99944 -0.0334741 0 + outer loop + vertex 155 -152 -3 + vertex 155 -152 0 + vertex 154.993 -152.209 0 + endloop + endfacet + facet normal 1 0 0 + outer loop + vertex 155 152 -3 + vertex 155 -152 0 + vertex 155 -152 -3 + endloop + endfacet + facet normal 1 0 -0 + outer loop + vertex 155 152 -3 + vertex 155 152 0 + vertex 155 -152 0 + endloop + endfacet + facet normal 0.99944 0.0334741 0 + outer loop + vertex 154.993 152.209 -3 + vertex 155 152 0 + vertex 155 152 -3 + endloop + endfacet + facet normal 0.99944 0.0334741 -0 + outer loop + vertex 154.993 152.209 -3 + vertex 154.993 152.209 0 + vertex 155 152 0 + endloop + endfacet + facet normal 0.994505 0.104685 0 + outer loop + vertex 154.971 152.418 -3 + vertex 154.993 152.209 0 + vertex 154.993 152.209 -3 + endloop + endfacet + facet normal 0.994505 0.104685 -0 + outer loop + vertex 154.971 152.418 -3 + vertex 154.971 152.418 0 + vertex 154.993 152.209 0 + endloop + endfacet + facet normal 0.98425 0.176783 0 + outer loop + vertex 154.934 152.624 -3 + vertex 154.971 152.418 0 + vertex 154.971 152.418 -3 + endloop + endfacet + facet normal 0.98425 0.176783 -0 + outer loop + vertex 154.934 152.624 -3 + vertex 154.934 152.624 0 + vertex 154.971 152.418 0 + endloop + endfacet + facet normal 0.970981 0.239158 0 + outer loop + vertex 154.884 152.827 -3 + vertex 154.934 152.624 0 + vertex 154.934 152.624 -3 + endloop + endfacet + facet normal 0.970981 0.239158 -0 + outer loop + vertex 154.884 152.827 -3 + vertex 154.884 152.827 0 + vertex 154.934 152.624 0 + endloop + endfacet + facet normal 0.950577 0.31049 0 + outer loop + vertex 154.819 153.026 -3 + vertex 154.884 152.827 0 + vertex 154.884 152.827 -3 + endloop + endfacet + facet normal 0.950577 0.31049 -0 + outer loop + vertex 154.819 153.026 -3 + vertex 154.819 153.026 0 + vertex 154.884 152.827 0 + endloop + endfacet + facet normal 0.927816 0.373039 0 + outer loop + vertex 154.741 153.22 -3 + vertex 154.819 153.026 0 + vertex 154.819 153.026 -3 + endloop + endfacet + facet normal 0.927816 0.373039 -0 + outer loop + vertex 154.741 153.22 -3 + vertex 154.741 153.22 0 + vertex 154.819 153.026 0 + endloop + endfacet + facet normal 0.898217 0.439553 0 + outer loop + vertex 154.649 153.408 -3 + vertex 154.741 153.22 0 + vertex 154.741 153.22 -3 + endloop + endfacet + facet normal 0.898217 0.439553 -0 + outer loop + vertex 154.649 153.408 -3 + vertex 154.649 153.408 0 + vertex 154.741 153.22 0 + endloop + endfacet + facet normal 0.866186 0.499722 0 + outer loop + vertex 154.544 153.59 -3 + vertex 154.649 153.408 0 + vertex 154.649 153.408 -3 + endloop + endfacet + facet normal 0.866186 0.499722 -0 + outer loop + vertex 154.544 153.59 -3 + vertex 154.544 153.59 0 + vertex 154.649 153.408 0 + endloop + endfacet + facet normal 0.828349 0.560213 0 + outer loop + vertex 154.427 153.763 -3 + vertex 154.544 153.59 0 + vertex 154.544 153.59 -3 + endloop + endfacet + facet normal 0.828349 0.560213 -0 + outer loop + vertex 154.427 153.763 -3 + vertex 154.427 153.763 0 + vertex 154.544 153.59 0 + endloop + endfacet + facet normal 0.787807 0.615922 0 + outer loop + vertex 154.298 153.928 -3 + vertex 154.427 153.763 0 + vertex 154.427 153.763 -3 + endloop + endfacet + facet normal 0.787807 0.615922 -0 + outer loop + vertex 154.298 153.928 -3 + vertex 154.298 153.928 0 + vertex 154.427 153.763 0 + endloop + endfacet + facet normal 0.744242 0.66791 0 + outer loop + vertex 154.158 154.084 -3 + vertex 154.298 153.928 0 + vertex 154.298 153.928 -3 + endloop + endfacet + facet normal 0.744242 0.66791 -0 + outer loop + vertex 154.158 154.084 -3 + vertex 154.158 154.084 0 + vertex 154.298 153.928 0 + endloop + endfacet + facet normal 0.692631 0.721292 0 + outer loop + vertex 154.007 154.229 -3 + vertex 154.158 154.084 0 + vertex 154.158 154.084 -3 + endloop + endfacet + facet normal 0.692631 0.721292 -0 + outer loop + vertex 154.007 154.229 -3 + vertex 154.007 154.229 0 + vertex 154.158 154.084 0 + endloop + endfacet + facet normal 0.644871 0.764291 0 + outer loop + vertex 153.847 154.364 -3 + vertex 154.007 154.229 0 + vertex 154.007 154.229 -3 + endloop + endfacet + facet normal 0.644871 0.764291 -0 + outer loop + vertex 153.847 154.364 -3 + vertex 153.847 154.364 0 + vertex 154.007 154.229 0 + endloop + endfacet + facet normal 0.588456 0.808529 0 + outer loop + vertex 153.678 154.487 -3 + vertex 153.847 154.364 0 + vertex 153.847 154.364 -3 + endloop + endfacet + facet normal 0.588456 0.808529 -0 + outer loop + vertex 153.678 154.487 -3 + vertex 153.678 154.487 0 + vertex 153.847 154.364 0 + endloop + endfacet + facet normal 0.529142 0.848533 0 + outer loop + vertex 153.5 154.598 -3 + vertex 153.678 154.487 0 + vertex 153.678 154.487 -3 + endloop + endfacet + facet normal 0.529142 0.848533 -0 + outer loop + vertex 153.5 154.598 -3 + vertex 153.5 154.598 0 + vertex 153.678 154.487 0 + endloop + endfacet + facet normal 0.468107 0.883672 0 + outer loop + vertex 153.315 154.696 -3 + vertex 153.5 154.598 0 + vertex 153.5 154.598 -3 + endloop + endfacet + facet normal 0.468107 0.883672 -0 + outer loop + vertex 153.315 154.696 -3 + vertex 153.315 154.696 0 + vertex 153.5 154.598 0 + endloop + endfacet + facet normal 0.410563 0.911832 0 + outer loop + vertex 153.124 154.782 -3 + vertex 153.315 154.696 0 + vertex 153.315 154.696 -3 + endloop + endfacet + facet normal 0.410563 0.911832 -0 + outer loop + vertex 153.124 154.782 -3 + vertex 153.124 154.782 0 + vertex 153.315 154.696 0 + endloop + endfacet + facet normal 0.339058 0.940766 0 + outer loop + vertex 152.927 154.853 -3 + vertex 153.124 154.782 0 + vertex 153.124 154.782 -3 + endloop + endfacet + facet normal 0.339058 0.940766 -0 + outer loop + vertex 152.927 154.853 -3 + vertex 152.927 154.853 0 + vertex 153.124 154.782 0 + endloop + endfacet + facet normal 0.277246 0.960799 0 + outer loop + vertex 152.726 154.911 -3 + vertex 152.927 154.853 0 + vertex 152.927 154.853 -3 + endloop + endfacet + facet normal 0.277246 0.960799 -0 + outer loop + vertex 152.726 154.911 -3 + vertex 152.726 154.911 0 + vertex 152.927 154.853 0 + endloop + endfacet + facet normal 0.205289 0.978701 0 + outer loop + vertex 152.521 154.954 -3 + vertex 152.726 154.911 0 + vertex 152.726 154.911 -3 + endloop + endfacet + facet normal 0.205289 0.978701 -0 + outer loop + vertex 152.521 154.954 -3 + vertex 152.521 154.954 0 + vertex 152.726 154.911 0 + endloop + endfacet + facet normal 0.143429 0.989661 0 + outer loop + vertex 152.314 154.984 -3 + vertex 152.521 154.954 0 + vertex 152.521 154.954 -3 + endloop + endfacet + facet normal 0.143429 0.989661 -0 + outer loop + vertex 152.314 154.984 -3 + vertex 152.314 154.984 0 + vertex 152.521 154.954 0 + endloop + endfacet + facet normal 0.0668359 0.997764 0 + outer loop + vertex 152.105 154.998 -3 + vertex 152.314 154.984 0 + vertex 152.314 154.984 -3 + endloop + endfacet + facet normal 0.0668359 0.997764 -0 + outer loop + vertex 152.105 154.998 -3 + vertex 152.105 154.998 0 + vertex 152.314 154.984 0 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex 152.002 154.998 -3 + vertex 152.105 154.998 0 + vertex 152.105 154.998 -3 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex 152.002 154.998 -3 + vertex 152.002 154.998 0 + vertex 152.105 154.998 0 + endloop + endfacet + facet normal 0.707107 0.707107 0 + outer loop + vertex 152 155 -3 + vertex 152.002 154.998 0 + vertex 152.002 154.998 -3 + endloop + endfacet + facet normal 0.707107 0.707107 -0 + outer loop + vertex 152 155 -3 + vertex 152 155 0 + vertex 152.002 154.998 0 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -152 155 -3 + vertex 152 155 0 + vertex 152 155 -3 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -152 155 -3 + vertex -152 155 0 + vertex 152 155 0 + endloop + endfacet + facet normal -0.707107 0.707107 0 + outer loop + vertex -152.002 154.998 -3 + vertex -152 155 0 + vertex -152 155 -3 + endloop + endfacet + facet normal -0.707107 0.707107 0 + outer loop + vertex -152.002 154.998 -3 + vertex -152.002 154.998 0 + vertex -152 155 0 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -152.105 154.998 -3 + vertex -152.002 154.998 0 + vertex -152.002 154.998 -3 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -152.105 154.998 -3 + vertex -152.105 154.998 0 + vertex -152.002 154.998 0 + endloop + endfacet + facet normal -0.0668359 0.997764 0 + outer loop + vertex -152.314 154.984 -3 + vertex -152.105 154.998 0 + vertex -152.105 154.998 -3 + endloop + endfacet + facet normal -0.0668359 0.997764 0 + outer loop + vertex -152.314 154.984 -3 + vertex -152.314 154.984 0 + vertex -152.105 154.998 0 + endloop + endfacet + facet normal -0.143429 0.989661 0 + outer loop + vertex -152.521 154.954 -3 + vertex -152.314 154.984 0 + vertex -152.314 154.984 -3 + endloop + endfacet + facet normal -0.143429 0.989661 0 + outer loop + vertex -152.521 154.954 -3 + vertex -152.521 154.954 0 + vertex -152.314 154.984 0 + endloop + endfacet + facet normal -0.205289 0.978701 0 + outer loop + vertex -152.726 154.911 -3 + vertex -152.521 154.954 0 + vertex -152.521 154.954 -3 + endloop + endfacet + facet normal -0.205289 0.978701 0 + outer loop + vertex -152.726 154.911 -3 + vertex -152.726 154.911 0 + vertex -152.521 154.954 0 + endloop + endfacet + facet normal -0.277246 0.960799 0 + outer loop + vertex -152.927 154.853 -3 + vertex -152.726 154.911 0 + vertex -152.726 154.911 -3 + endloop + endfacet + facet normal -0.277246 0.960799 0 + outer loop + vertex -152.927 154.853 -3 + vertex -152.927 154.853 0 + vertex -152.726 154.911 0 + endloop + endfacet + facet normal -0.339058 0.940766 0 + outer loop + vertex -153.124 154.782 -3 + vertex -152.927 154.853 0 + vertex -152.927 154.853 -3 + endloop + endfacet + facet normal -0.339058 0.940766 0 + outer loop + vertex -153.124 154.782 -3 + vertex -153.124 154.782 0 + vertex -152.927 154.853 0 + endloop + endfacet + facet normal -0.410563 0.911832 0 + outer loop + vertex -153.315 154.696 -3 + vertex -153.124 154.782 0 + vertex -153.124 154.782 -3 + endloop + endfacet + facet normal -0.410563 0.911832 0 + outer loop + vertex -153.315 154.696 -3 + vertex -153.315 154.696 0 + vertex -153.124 154.782 0 + endloop + endfacet + facet normal -0.468107 0.883672 0 + outer loop + vertex -153.5 154.598 -3 + vertex -153.315 154.696 0 + vertex -153.315 154.696 -3 + endloop + endfacet + facet normal -0.468107 0.883672 0 + outer loop + vertex -153.5 154.598 -3 + vertex -153.5 154.598 0 + vertex -153.315 154.696 0 + endloop + endfacet + facet normal -0.529142 0.848533 0 + outer loop + vertex -153.678 154.487 -3 + vertex -153.5 154.598 0 + vertex -153.5 154.598 -3 + endloop + endfacet + facet normal -0.529142 0.848533 0 + outer loop + vertex -153.678 154.487 -3 + vertex -153.678 154.487 0 + vertex -153.5 154.598 0 + endloop + endfacet + facet normal -0.588456 0.808529 0 + outer loop + vertex -153.847 154.364 -3 + vertex -153.678 154.487 0 + vertex -153.678 154.487 -3 + endloop + endfacet + facet normal -0.588456 0.808529 0 + outer loop + vertex -153.847 154.364 -3 + vertex -153.847 154.364 0 + vertex -153.678 154.487 0 + endloop + endfacet + facet normal -0.644871 0.764291 0 + outer loop + vertex -154.007 154.229 -3 + vertex -153.847 154.364 0 + vertex -153.847 154.364 -3 + endloop + endfacet + facet normal -0.644871 0.764291 0 + outer loop + vertex -154.007 154.229 -3 + vertex -154.007 154.229 0 + vertex -153.847 154.364 0 + endloop + endfacet + facet normal -0.692631 0.721292 0 + outer loop + vertex -154.158 154.084 -3 + vertex -154.007 154.229 0 + vertex -154.007 154.229 -3 + endloop + endfacet + facet normal -0.692631 0.721292 0 + outer loop + vertex -154.158 154.084 -3 + vertex -154.158 154.084 0 + vertex -154.007 154.229 0 + endloop + endfacet + facet normal -0.744242 0.66791 0 + outer loop + vertex -154.298 153.928 -3 + vertex -154.158 154.084 0 + vertex -154.158 154.084 -3 + endloop + endfacet + facet normal -0.744242 0.66791 0 + outer loop + vertex -154.298 153.928 -3 + vertex -154.298 153.928 0 + vertex -154.158 154.084 0 + endloop + endfacet + facet normal -0.787807 0.615922 0 + outer loop + vertex -154.427 153.763 -3 + vertex -154.298 153.928 0 + vertex -154.298 153.928 -3 + endloop + endfacet + facet normal -0.787807 0.615922 0 + outer loop + vertex -154.427 153.763 -3 + vertex -154.427 153.763 0 + vertex -154.298 153.928 0 + endloop + endfacet + facet normal -0.828349 0.560213 0 + outer loop + vertex -154.544 153.59 -3 + vertex -154.427 153.763 0 + vertex -154.427 153.763 -3 + endloop + endfacet + facet normal -0.828349 0.560213 0 + outer loop + vertex -154.544 153.59 -3 + vertex -154.544 153.59 0 + vertex -154.427 153.763 0 + endloop + endfacet + facet normal -0.866186 0.499722 0 + outer loop + vertex -154.649 153.408 -3 + vertex -154.544 153.59 0 + vertex -154.544 153.59 -3 + endloop + endfacet + facet normal -0.866186 0.499722 0 + outer loop + vertex -154.649 153.408 -3 + vertex -154.649 153.408 0 + vertex -154.544 153.59 0 + endloop + endfacet + facet normal -0.898217 0.439553 0 + outer loop + vertex -154.741 153.22 -3 + vertex -154.649 153.408 0 + vertex -154.649 153.408 -3 + endloop + endfacet + facet normal -0.898217 0.439553 0 + outer loop + vertex -154.741 153.22 -3 + vertex -154.741 153.22 0 + vertex -154.649 153.408 0 + endloop + endfacet + facet normal -0.927816 0.373039 0 + outer loop + vertex -154.819 153.026 -3 + vertex -154.741 153.22 0 + vertex -154.741 153.22 -3 + endloop + endfacet + facet normal -0.927816 0.373039 0 + outer loop + vertex -154.819 153.026 -3 + vertex -154.819 153.026 0 + vertex -154.741 153.22 0 + endloop + endfacet + facet normal -0.950577 0.31049 0 + outer loop + vertex -154.884 152.827 -3 + vertex -154.819 153.026 0 + vertex -154.819 153.026 -3 + endloop + endfacet + facet normal -0.950577 0.31049 0 + outer loop + vertex -154.884 152.827 -3 + vertex -154.884 152.827 0 + vertex -154.819 153.026 0 + endloop + endfacet + facet normal -0.970981 0.239158 0 + outer loop + vertex -154.934 152.624 -3 + vertex -154.884 152.827 0 + vertex -154.884 152.827 -3 + endloop + endfacet + facet normal -0.970981 0.239158 0 + outer loop + vertex -154.934 152.624 -3 + vertex -154.934 152.624 0 + vertex -154.884 152.827 0 + endloop + endfacet + facet normal -0.98425 0.176783 0 + outer loop + vertex -154.971 152.418 -3 + vertex -154.934 152.624 0 + vertex -154.934 152.624 -3 + endloop + endfacet + facet normal -0.98425 0.176783 0 + outer loop + vertex -154.971 152.418 -3 + vertex -154.971 152.418 0 + vertex -154.934 152.624 0 + endloop + endfacet + facet normal -0.994505 0.104685 0 + outer loop + vertex -154.993 152.209 -3 + vertex -154.971 152.418 0 + vertex -154.971 152.418 -3 + endloop + endfacet + facet normal -0.994505 0.104685 0 + outer loop + vertex -154.993 152.209 -3 + vertex -154.993 152.209 0 + vertex -154.971 152.418 0 + endloop + endfacet + facet normal -0.99944 0.0334741 0 + outer loop + vertex -155 152 -3 + vertex -154.993 152.209 0 + vertex -154.993 152.209 -3 + endloop + endfacet + facet normal -0.99944 0.0334741 0 + outer loop + vertex -155 152 -3 + vertex -155 152 0 + vertex -154.993 152.209 0 + endloop + endfacet + facet normal -1 0 0 + outer loop + vertex -155 -152 -3 + vertex -155 152 0 + vertex -155 152 -3 + endloop + endfacet + facet normal -1 0 0 + outer loop + vertex -155 -152 -3 + vertex -155 -152 0 + vertex -155 152 0 + endloop + endfacet + facet normal -0.99944 -0.0334741 0 + outer loop + vertex -154.993 -152.209 -3 + vertex -155 -152 0 + vertex -155 -152 -3 + endloop + endfacet + facet normal -0.99944 -0.0334741 0 + outer loop + vertex -154.993 -152.209 -3 + vertex -154.993 -152.209 0 + vertex -155 -152 0 + endloop + endfacet + facet normal -0.994505 -0.104685 0 + outer loop + vertex -154.971 -152.418 -3 + vertex -154.993 -152.209 0 + vertex -154.993 -152.209 -3 + endloop + endfacet + facet normal -0.994505 -0.104685 0 + outer loop + vertex -154.971 -152.418 -3 + vertex -154.971 -152.418 0 + vertex -154.993 -152.209 0 + endloop + endfacet + facet normal -0.98425 -0.176783 0 + outer loop + vertex -154.934 -152.624 -3 + vertex -154.971 -152.418 0 + vertex -154.971 -152.418 -3 + endloop + endfacet + facet normal -0.98425 -0.176783 0 + outer loop + vertex -154.934 -152.624 -3 + vertex -154.934 -152.624 0 + vertex -154.971 -152.418 0 + endloop + endfacet + facet normal -0.970981 -0.239158 0 + outer loop + vertex -154.884 -152.827 -3 + vertex -154.934 -152.624 0 + vertex -154.934 -152.624 -3 + endloop + endfacet + facet normal -0.970981 -0.239158 0 + outer loop + vertex -154.884 -152.827 -3 + vertex -154.884 -152.827 0 + vertex -154.934 -152.624 0 + endloop + endfacet + facet normal -0.950577 -0.31049 0 + outer loop + vertex -154.819 -153.026 -3 + vertex -154.884 -152.827 0 + vertex -154.884 -152.827 -3 + endloop + endfacet + facet normal -0.950577 -0.31049 0 + outer loop + vertex -154.819 -153.026 -3 + vertex -154.819 -153.026 0 + vertex -154.884 -152.827 0 + endloop + endfacet + facet normal -0.927816 -0.373039 0 + outer loop + vertex -154.741 -153.22 -3 + vertex -154.819 -153.026 0 + vertex -154.819 -153.026 -3 + endloop + endfacet + facet normal -0.927816 -0.373039 0 + outer loop + vertex -154.741 -153.22 -3 + vertex -154.741 -153.22 0 + vertex -154.819 -153.026 0 + endloop + endfacet + facet normal -0.898217 -0.439553 0 + outer loop + vertex -154.649 -153.408 -3 + vertex -154.741 -153.22 0 + vertex -154.741 -153.22 -3 + endloop + endfacet + facet normal -0.898217 -0.439553 0 + outer loop + vertex -154.649 -153.408 -3 + vertex -154.649 -153.408 0 + vertex -154.741 -153.22 0 + endloop + endfacet + facet normal -0.866186 -0.499722 0 + outer loop + vertex -154.544 -153.59 -3 + vertex -154.649 -153.408 0 + vertex -154.649 -153.408 -3 + endloop + endfacet + facet normal -0.866186 -0.499722 0 + outer loop + vertex -154.544 -153.59 -3 + vertex -154.544 -153.59 0 + vertex -154.649 -153.408 0 + endloop + endfacet + facet normal -0.828349 -0.560213 0 + outer loop + vertex -154.427 -153.763 -3 + vertex -154.544 -153.59 0 + vertex -154.544 -153.59 -3 + endloop + endfacet + facet normal -0.828349 -0.560213 0 + outer loop + vertex -154.427 -153.763 -3 + vertex -154.427 -153.763 0 + vertex -154.544 -153.59 0 + endloop + endfacet + facet normal -0.787807 -0.615922 0 + outer loop + vertex -154.298 -153.928 -3 + vertex -154.427 -153.763 0 + vertex -154.427 -153.763 -3 + endloop + endfacet + facet normal -0.787807 -0.615922 0 + outer loop + vertex -154.298 -153.928 -3 + vertex -154.298 -153.928 0 + vertex -154.427 -153.763 0 + endloop + endfacet + facet normal -0.744242 -0.66791 0 + outer loop + vertex -154.158 -154.084 -3 + vertex -154.298 -153.928 0 + vertex -154.298 -153.928 -3 + endloop + endfacet + facet normal -0.744242 -0.66791 0 + outer loop + vertex -154.158 -154.084 -3 + vertex -154.158 -154.084 0 + vertex -154.298 -153.928 0 + endloop + endfacet + facet normal -0.692631 -0.721292 0 + outer loop + vertex -154.007 -154.229 -3 + vertex -154.158 -154.084 0 + vertex -154.158 -154.084 -3 + endloop + endfacet + facet normal -0.692631 -0.721292 0 + outer loop + vertex -154.007 -154.229 -3 + vertex -154.007 -154.229 0 + vertex -154.158 -154.084 0 + endloop + endfacet + facet normal -0.644871 -0.764291 0 + outer loop + vertex -153.847 -154.364 -3 + vertex -154.007 -154.229 0 + vertex -154.007 -154.229 -3 + endloop + endfacet + facet normal -0.644871 -0.764291 0 + outer loop + vertex -153.847 -154.364 -3 + vertex -153.847 -154.364 0 + vertex -154.007 -154.229 0 + endloop + endfacet + facet normal -0.588456 -0.808529 0 + outer loop + vertex -153.678 -154.487 -3 + vertex -153.847 -154.364 0 + vertex -153.847 -154.364 -3 + endloop + endfacet + facet normal -0.588456 -0.808529 0 + outer loop + vertex -153.678 -154.487 -3 + vertex -153.678 -154.487 0 + vertex -153.847 -154.364 0 + endloop + endfacet + facet normal -0.529142 -0.848533 0 + outer loop + vertex -153.5 -154.598 -3 + vertex -153.678 -154.487 0 + vertex -153.678 -154.487 -3 + endloop + endfacet + facet normal -0.529142 -0.848533 0 + outer loop + vertex -153.5 -154.598 -3 + vertex -153.5 -154.598 0 + vertex -153.678 -154.487 0 + endloop + endfacet + facet normal -0.468107 -0.883672 0 + outer loop + vertex -153.315 -154.696 -3 + vertex -153.5 -154.598 0 + vertex -153.5 -154.598 -3 + endloop + endfacet + facet normal -0.468107 -0.883672 0 + outer loop + vertex -153.315 -154.696 -3 + vertex -153.315 -154.696 0 + vertex -153.5 -154.598 0 + endloop + endfacet + facet normal -0.410563 -0.911832 0 + outer loop + vertex -153.124 -154.782 -3 + vertex -153.315 -154.696 0 + vertex -153.315 -154.696 -3 + endloop + endfacet + facet normal -0.410563 -0.911832 0 + outer loop + vertex -153.124 -154.782 -3 + vertex -153.124 -154.782 0 + vertex -153.315 -154.696 0 + endloop + endfacet + facet normal -0.339058 -0.940766 0 + outer loop + vertex -152.927 -154.853 -3 + vertex -153.124 -154.782 0 + vertex -153.124 -154.782 -3 + endloop + endfacet + facet normal -0.339058 -0.940766 0 + outer loop + vertex -152.927 -154.853 -3 + vertex -152.927 -154.853 0 + vertex -153.124 -154.782 0 + endloop + endfacet + facet normal -0.277246 -0.960799 0 + outer loop + vertex -152.726 -154.911 -3 + vertex -152.927 -154.853 0 + vertex -152.927 -154.853 -3 + endloop + endfacet + facet normal -0.277246 -0.960799 0 + outer loop + vertex -152.726 -154.911 -3 + vertex -152.726 -154.911 0 + vertex -152.927 -154.853 0 + endloop + endfacet + facet normal -0.205289 -0.978701 0 + outer loop + vertex -152.521 -154.954 -3 + vertex -152.726 -154.911 0 + vertex -152.726 -154.911 -3 + endloop + endfacet + facet normal -0.205289 -0.978701 0 + outer loop + vertex -152.521 -154.954 -3 + vertex -152.521 -154.954 0 + vertex -152.726 -154.911 0 + endloop + endfacet + facet normal -0.143429 -0.989661 0 + outer loop + vertex -152.314 -154.984 -3 + vertex -152.521 -154.954 0 + vertex -152.521 -154.954 -3 + endloop + endfacet + facet normal -0.143429 -0.989661 0 + outer loop + vertex -152.314 -154.984 -3 + vertex -152.314 -154.984 0 + vertex -152.521 -154.954 0 + endloop + endfacet + facet normal -0.0668359 -0.997764 0 + outer loop + vertex -152.105 -154.998 -3 + vertex -152.314 -154.984 0 + vertex -152.314 -154.984 -3 + endloop + endfacet + facet normal -0.0668359 -0.997764 0 + outer loop + vertex -152.105 -154.998 -3 + vertex -152.105 -154.998 0 + vertex -152.314 -154.984 0 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -152.002 -154.998 -3 + vertex -152.105 -154.998 0 + vertex -152.105 -154.998 -3 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -152.002 -154.998 -3 + vertex -152.002 -154.998 0 + vertex -152.105 -154.998 0 + endloop + endfacet + facet normal -0.707107 -0.707107 0 + outer loop + vertex -152 -155 -3 + vertex -152.002 -154.998 0 + vertex -152.002 -154.998 -3 + endloop + endfacet + facet normal -0.707107 -0.707107 0 + outer loop + vertex -152 -155 -3 + vertex -152 -155 0 + vertex -152.002 -154.998 0 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 152 -155 -3 + vertex -152 -155 0 + vertex -152 -155 -3 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 152 -155 -3 + vertex 152 -155 0 + vertex -152 -155 0 + endloop + endfacet + facet normal 0.707107 -0.707107 0 + outer loop + vertex 152.002 -154.998 -3 + vertex 152 -155 0 + vertex 152 -155 -3 + endloop + endfacet + facet normal 0.707107 -0.707107 0 + outer loop + vertex 152.002 -154.998 -3 + vertex 152.002 -154.998 0 + vertex 152 -155 0 + endloop + endfacet +endsolid OpenSCAD_Model diff --git a/resources/profiles/Creality/cr10mini.svg b/resources/profiles/Creality/cr10mini.svg new file mode 100644 index 0000000000..177c6df49f --- /dev/null +++ b/resources/profiles/Creality/cr10mini.svg @@ -0,0 +1,4 @@ + + + + diff --git a/resources/profiles/Creality/cr10mini_bed.stl b/resources/profiles/Creality/cr10mini_bed.stl new file mode 100644 index 0000000000..5dc5d65fcd --- /dev/null +++ b/resources/profiles/Creality/cr10mini_bed.stl @@ -0,0 +1,2774 @@ +solid OpenSCAD_Model + facet normal 0 0 -1 + outer loop + vertex 149.605 -117.498 -3 + vertex 149.502 -117.498 -3 + vertex 149.814 -117.484 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 149.814 -117.484 -3 + vertex 149.502 -117.498 -3 + vertex 150.021 -117.454 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 152.5 -114.5 -3 + vertex 149.502 -117.498 -3 + vertex 149.502 117.498 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 150.021 -117.454 -3 + vertex 149.502 -117.498 -3 + vertex 150.226 -117.411 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 150.226 -117.411 -3 + vertex 149.502 -117.498 -3 + vertex 150.427 -117.353 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 150.427 -117.353 -3 + vertex 149.502 -117.498 -3 + vertex 150.624 -117.282 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 150.624 -117.282 -3 + vertex 149.502 -117.498 -3 + vertex 150.815 -117.196 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 150.815 -117.196 -3 + vertex 149.502 -117.498 -3 + vertex 151 -117.098 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 151 -117.098 -3 + vertex 149.502 -117.498 -3 + vertex 151.178 -116.987 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 151.178 -116.987 -3 + vertex 149.502 -117.498 -3 + vertex 151.347 -116.864 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 151.347 -116.864 -3 + vertex 149.502 -117.498 -3 + vertex 151.507 -116.729 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 151.507 -116.729 -3 + vertex 149.502 -117.498 -3 + vertex 151.658 -116.584 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 151.658 -116.584 -3 + vertex 149.502 -117.498 -3 + vertex 151.798 -116.428 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 151.798 -116.428 -3 + vertex 149.502 -117.498 -3 + vertex 151.927 -116.263 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 151.927 -116.263 -3 + vertex 149.502 -117.498 -3 + vertex 152.044 -116.09 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 152.044 -116.09 -3 + vertex 149.502 -117.498 -3 + vertex 152.149 -115.908 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 152.149 -115.908 -3 + vertex 149.502 -117.498 -3 + vertex 152.241 -115.72 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 152.241 -115.72 -3 + vertex 149.502 -117.498 -3 + vertex 152.319 -115.526 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 152.319 -115.526 -3 + vertex 149.502 -117.498 -3 + vertex 152.384 -115.327 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 152.384 -115.327 -3 + vertex 149.502 -117.498 -3 + vertex 152.434 -115.124 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 152.434 -115.124 -3 + vertex 149.502 -117.498 -3 + vertex 152.471 -114.918 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 152.471 -114.918 -3 + vertex 149.502 -117.498 -3 + vertex 152.493 -114.709 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 152.493 -114.709 -3 + vertex 149.502 -117.498 -3 + vertex 152.5 -114.5 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 152.5 -114.5 -3 + vertex 149.502 117.498 -3 + vertex 152.5 114.5 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 149.502 117.498 -3 + vertex 152.471 114.918 -3 + vertex 152.493 114.709 -3 + endloop + endfacet + facet normal -0 -0 -1 + outer loop + vertex 152.384 115.327 -3 + vertex 152.434 115.124 -3 + vertex 149.502 117.498 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 152.241 115.72 -3 + vertex 149.502 117.498 -3 + vertex 152.149 115.908 -3 + endloop + endfacet + facet normal -0 -0 -1 + outer loop + vertex 152.241 115.72 -3 + vertex 152.319 115.526 -3 + vertex 149.502 117.498 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 149.502 117.498 -3 + vertex 151.507 116.729 -3 + vertex 151.658 116.584 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 151.927 116.263 -3 + vertex 149.502 117.498 -3 + vertex 151.798 116.428 -3 + endloop + endfacet + facet normal -0 -0 -1 + outer loop + vertex 151.927 116.263 -3 + vertex 152.044 116.09 -3 + vertex 149.502 117.498 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 151.798 116.428 -3 + vertex 149.502 117.498 -3 + vertex 151.658 116.584 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 149.502 117.498 -3 + vertex 150.427 117.353 -3 + vertex 150.624 117.282 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 151.347 116.864 -3 + vertex 149.502 117.498 -3 + vertex 151.178 116.987 -3 + endloop + endfacet + facet normal -0 -0 -1 + outer loop + vertex 151.347 116.864 -3 + vertex 151.507 116.729 -3 + vertex 149.502 117.498 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 151.178 116.987 -3 + vertex 149.502 117.498 -3 + vertex 151 117.098 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 151 117.098 -3 + vertex 149.502 117.498 -3 + vertex 150.815 117.196 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 150.815 117.196 -3 + vertex 149.502 117.498 -3 + vertex 150.624 117.282 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 152.149 115.908 -3 + vertex 149.502 117.498 -3 + vertex 152.044 116.09 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 150.226 117.411 -3 + vertex 149.502 117.498 -3 + vertex 150.021 117.454 -3 + endloop + endfacet + facet normal -0 -0 -1 + outer loop + vertex 150.226 117.411 -3 + vertex 150.427 117.353 -3 + vertex 149.502 117.498 -3 + endloop + endfacet + facet normal -0 -0 -1 + outer loop + vertex 152.319 115.526 -3 + vertex 152.384 115.327 -3 + vertex 149.502 117.498 -3 + endloop + endfacet + facet normal -0 -0 -1 + outer loop + vertex 149.814 117.484 -3 + vertex 150.021 117.454 -3 + vertex 149.502 117.498 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 149.502 117.498 -3 + vertex 152.434 115.124 -3 + vertex 152.471 114.918 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 149.502 117.498 -3 + vertex 149.605 117.498 -3 + vertex 149.814 117.484 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 152.5 114.5 -3 + vertex 149.502 117.498 -3 + vertex 152.493 114.709 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 149.502 -117.498 -3 + vertex 149.5 117.5 -3 + vertex 149.502 117.498 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 149.502 -117.498 -3 + vertex 149.5 -117.5 -3 + vertex 149.5 117.5 -3 + endloop + endfacet + facet normal -0 -0 -1 + outer loop + vertex 149.5 117.5 -3 + vertex 149.5 -117.5 -3 + vertex -149.5 117.5 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -149.502 -117.498 -3 + vertex -152.5 114.5 -3 + vertex -149.502 117.498 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex -149.502 117.498 -3 + vertex -149.814 117.484 -3 + vertex -149.605 117.498 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -149.502 117.498 -3 + vertex -150.021 117.454 -3 + vertex -149.814 117.484 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -149.502 117.498 -3 + vertex -150.226 117.411 -3 + vertex -150.021 117.454 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -149.502 117.498 -3 + vertex -150.427 117.353 -3 + vertex -150.226 117.411 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -149.502 117.498 -3 + vertex -150.624 117.282 -3 + vertex -150.427 117.353 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -149.502 117.498 -3 + vertex -150.815 117.196 -3 + vertex -150.624 117.282 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -149.502 117.498 -3 + vertex -151 117.098 -3 + vertex -150.815 117.196 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -149.502 117.498 -3 + vertex -151.178 116.987 -3 + vertex -151 117.098 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -149.502 117.498 -3 + vertex -151.347 116.864 -3 + vertex -151.178 116.987 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -149.502 117.498 -3 + vertex -151.507 116.729 -3 + vertex -151.347 116.864 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -149.502 117.498 -3 + vertex -151.658 116.584 -3 + vertex -151.507 116.729 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -149.502 117.498 -3 + vertex -151.798 116.428 -3 + vertex -151.658 116.584 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -149.502 117.498 -3 + vertex -151.927 116.263 -3 + vertex -151.798 116.428 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -149.502 117.498 -3 + vertex -152.044 116.09 -3 + vertex -151.927 116.263 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -149.502 117.498 -3 + vertex -152.149 115.908 -3 + vertex -152.044 116.09 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -149.502 117.498 -3 + vertex -152.241 115.72 -3 + vertex -152.149 115.908 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -149.502 117.498 -3 + vertex -152.319 115.526 -3 + vertex -152.241 115.72 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -149.502 117.498 -3 + vertex -152.384 115.327 -3 + vertex -152.319 115.526 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -149.502 117.498 -3 + vertex -152.434 115.124 -3 + vertex -152.384 115.327 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -149.502 117.498 -3 + vertex -152.471 114.918 -3 + vertex -152.434 115.124 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -149.502 117.498 -3 + vertex -152.493 114.709 -3 + vertex -152.471 114.918 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -149.502 117.498 -3 + vertex -152.5 114.5 -3 + vertex -152.493 114.709 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -149.502 -117.498 -3 + vertex -152.5 -114.5 -3 + vertex -152.5 114.5 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -150.021 -117.454 -3 + vertex -149.502 -117.498 -3 + vertex -149.814 -117.484 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -149.502 -117.498 -3 + vertex -152.471 -114.918 -3 + vertex -152.493 -114.709 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.384 -115.327 -3 + vertex -152.434 -115.124 -3 + vertex -149.502 -117.498 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.241 -115.72 -3 + vertex -149.502 -117.498 -3 + vertex -152.149 -115.908 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.241 -115.72 -3 + vertex -152.319 -115.526 -3 + vertex -149.502 -117.498 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -149.502 -117.498 -3 + vertex -151.507 -116.729 -3 + vertex -151.658 -116.584 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -151.927 -116.263 -3 + vertex -149.502 -117.498 -3 + vertex -151.798 -116.428 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -151.927 -116.263 -3 + vertex -152.044 -116.09 -3 + vertex -149.502 -117.498 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -151.798 -116.428 -3 + vertex -149.502 -117.498 -3 + vertex -151.658 -116.584 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -149.502 -117.498 -3 + vertex -150.427 -117.353 -3 + vertex -150.624 -117.282 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -151.347 -116.864 -3 + vertex -149.502 -117.498 -3 + vertex -151.178 -116.987 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -151.347 -116.864 -3 + vertex -151.507 -116.729 -3 + vertex -149.502 -117.498 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -151.178 -116.987 -3 + vertex -149.502 -117.498 -3 + vertex -151 -117.098 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -151 -117.098 -3 + vertex -149.502 -117.498 -3 + vertex -150.815 -117.196 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -150.815 -117.196 -3 + vertex -149.502 -117.498 -3 + vertex -150.624 -117.282 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.149 -115.908 -3 + vertex -149.502 -117.498 -3 + vertex -152.044 -116.09 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -150.226 -117.411 -3 + vertex -149.502 -117.498 -3 + vertex -150.021 -117.454 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -150.226 -117.411 -3 + vertex -150.427 -117.353 -3 + vertex -149.502 -117.498 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.319 -115.526 -3 + vertex -152.384 -115.327 -3 + vertex -149.502 -117.498 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.434 -115.124 -3 + vertex -152.471 -114.918 -3 + vertex -149.502 -117.498 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -149.605 -117.498 -3 + vertex -149.814 -117.484 -3 + vertex -149.502 -117.498 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -149.502 -117.498 -3 + vertex -152.493 -114.709 -3 + vertex -152.5 -114.5 -3 + endloop + endfacet + facet normal 0 -0 -1 + outer loop + vertex -149.5 117.5 -3 + vertex -149.5 -117.5 -3 + vertex -149.502 117.498 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -149.5 117.5 -3 + vertex 149.5 -117.5 -3 + vertex -149.5 -117.5 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -149.5 -117.5 -3 + vertex -149.502 -117.498 -3 + vertex -149.502 117.498 -3 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 149.814 -117.484 0 + vertex 149.502 -117.498 0 + vertex 149.605 -117.498 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 150.021 -117.454 0 + vertex 149.502 -117.498 0 + vertex 149.814 -117.484 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 149.502 117.498 0 + vertex 149.502 -117.498 0 + vertex 152.5 -114.5 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 150.226 -117.411 0 + vertex 149.502 -117.498 0 + vertex 150.021 -117.454 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 150.427 -117.353 0 + vertex 149.502 -117.498 0 + vertex 150.226 -117.411 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 150.624 -117.282 0 + vertex 149.502 -117.498 0 + vertex 150.427 -117.353 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 150.815 -117.196 0 + vertex 149.502 -117.498 0 + vertex 150.624 -117.282 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 151 -117.098 0 + vertex 149.502 -117.498 0 + vertex 150.815 -117.196 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 151.178 -116.987 0 + vertex 149.502 -117.498 0 + vertex 151 -117.098 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 151.347 -116.864 0 + vertex 149.502 -117.498 0 + vertex 151.178 -116.987 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 151.507 -116.729 0 + vertex 149.502 -117.498 0 + vertex 151.347 -116.864 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 151.658 -116.584 0 + vertex 149.502 -117.498 0 + vertex 151.507 -116.729 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 151.798 -116.428 0 + vertex 149.502 -117.498 0 + vertex 151.658 -116.584 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 151.927 -116.263 0 + vertex 149.502 -117.498 0 + vertex 151.798 -116.428 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 152.044 -116.09 0 + vertex 149.502 -117.498 0 + vertex 151.927 -116.263 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 152.149 -115.908 0 + vertex 149.502 -117.498 0 + vertex 152.044 -116.09 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 152.241 -115.72 0 + vertex 149.502 -117.498 0 + vertex 152.149 -115.908 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 152.319 -115.526 0 + vertex 149.502 -117.498 0 + vertex 152.241 -115.72 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 152.384 -115.327 0 + vertex 149.502 -117.498 0 + vertex 152.319 -115.526 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 152.434 -115.124 0 + vertex 149.502 -117.498 0 + vertex 152.384 -115.327 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 152.471 -114.918 0 + vertex 149.502 -117.498 0 + vertex 152.434 -115.124 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 152.493 -114.709 0 + vertex 149.502 -117.498 0 + vertex 152.471 -114.918 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 152.5 -114.5 0 + vertex 149.502 -117.498 0 + vertex 152.493 -114.709 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 152.5 114.5 0 + vertex 149.502 117.498 0 + vertex 152.5 -114.5 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 152.493 114.709 0 + vertex 152.471 114.918 0 + vertex 149.502 117.498 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 149.502 117.498 0 + vertex 152.434 115.124 0 + vertex 152.384 115.327 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 152.149 115.908 0 + vertex 149.502 117.498 0 + vertex 152.241 115.72 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 149.502 117.498 0 + vertex 152.319 115.526 0 + vertex 152.241 115.72 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 151.658 116.584 0 + vertex 151.507 116.729 0 + vertex 149.502 117.498 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 151.798 116.428 0 + vertex 149.502 117.498 0 + vertex 151.927 116.263 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 149.502 117.498 0 + vertex 152.044 116.09 0 + vertex 151.927 116.263 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 151.658 116.584 0 + vertex 149.502 117.498 0 + vertex 151.798 116.428 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 150.624 117.282 0 + vertex 150.427 117.353 0 + vertex 149.502 117.498 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 151.178 116.987 0 + vertex 149.502 117.498 0 + vertex 151.347 116.864 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 149.502 117.498 0 + vertex 151.507 116.729 0 + vertex 151.347 116.864 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 151 117.098 0 + vertex 149.502 117.498 0 + vertex 151.178 116.987 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 150.815 117.196 0 + vertex 149.502 117.498 0 + vertex 151 117.098 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 150.624 117.282 0 + vertex 149.502 117.498 0 + vertex 150.815 117.196 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 152.044 116.09 0 + vertex 149.502 117.498 0 + vertex 152.149 115.908 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 150.021 117.454 0 + vertex 149.502 117.498 0 + vertex 150.226 117.411 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 149.502 117.498 0 + vertex 150.427 117.353 0 + vertex 150.226 117.411 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 149.502 117.498 0 + vertex 152.384 115.327 0 + vertex 152.319 115.526 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 149.502 117.498 0 + vertex 150.021 117.454 0 + vertex 149.814 117.484 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 152.471 114.918 0 + vertex 152.434 115.124 0 + vertex 149.502 117.498 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 149.814 117.484 0 + vertex 149.605 117.498 0 + vertex 149.502 117.498 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 152.493 114.709 0 + vertex 149.502 117.498 0 + vertex 152.5 114.5 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 149.502 117.498 0 + vertex 149.5 117.5 0 + vertex 149.502 -117.498 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 149.5 117.5 0 + vertex 149.5 -117.5 0 + vertex 149.502 -117.498 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -149.5 117.5 0 + vertex 149.5 -117.5 0 + vertex 149.5 117.5 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -149.502 117.498 0 + vertex -152.5 114.5 0 + vertex -149.502 -117.498 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -149.605 117.498 0 + vertex -149.814 117.484 0 + vertex -149.502 117.498 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -149.814 117.484 0 + vertex -150.021 117.454 0 + vertex -149.502 117.498 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -150.021 117.454 0 + vertex -150.226 117.411 0 + vertex -149.502 117.498 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -150.226 117.411 0 + vertex -150.427 117.353 0 + vertex -149.502 117.498 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -150.427 117.353 0 + vertex -150.624 117.282 0 + vertex -149.502 117.498 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -150.624 117.282 0 + vertex -150.815 117.196 0 + vertex -149.502 117.498 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -150.815 117.196 0 + vertex -151 117.098 0 + vertex -149.502 117.498 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -151 117.098 0 + vertex -151.178 116.987 0 + vertex -149.502 117.498 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -151.178 116.987 0 + vertex -151.347 116.864 0 + vertex -149.502 117.498 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -151.347 116.864 0 + vertex -151.507 116.729 0 + vertex -149.502 117.498 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -151.507 116.729 0 + vertex -151.658 116.584 0 + vertex -149.502 117.498 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -151.658 116.584 0 + vertex -151.798 116.428 0 + vertex -149.502 117.498 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -151.798 116.428 0 + vertex -151.927 116.263 0 + vertex -149.502 117.498 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -151.927 116.263 0 + vertex -152.044 116.09 0 + vertex -149.502 117.498 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -152.044 116.09 0 + vertex -152.149 115.908 0 + vertex -149.502 117.498 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -152.149 115.908 0 + vertex -152.241 115.72 0 + vertex -149.502 117.498 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -152.241 115.72 0 + vertex -152.319 115.526 0 + vertex -149.502 117.498 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -152.319 115.526 0 + vertex -152.384 115.327 0 + vertex -149.502 117.498 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -152.384 115.327 0 + vertex -152.434 115.124 0 + vertex -149.502 117.498 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -152.434 115.124 0 + vertex -152.471 114.918 0 + vertex -149.502 117.498 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -152.471 114.918 0 + vertex -152.493 114.709 0 + vertex -149.502 117.498 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -152.493 114.709 0 + vertex -152.5 114.5 0 + vertex -149.502 117.498 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -152.5 114.5 0 + vertex -152.5 -114.5 0 + vertex -149.502 -117.498 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -149.814 -117.484 0 + vertex -149.502 -117.498 0 + vertex -150.021 -117.454 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -152.493 -114.709 0 + vertex -152.471 -114.918 0 + vertex -149.502 -117.498 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -149.502 -117.498 0 + vertex -152.434 -115.124 0 + vertex -152.384 -115.327 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -152.149 -115.908 0 + vertex -149.502 -117.498 0 + vertex -152.241 -115.72 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -149.502 -117.498 0 + vertex -152.319 -115.526 0 + vertex -152.241 -115.72 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -151.658 -116.584 0 + vertex -151.507 -116.729 0 + vertex -149.502 -117.498 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -151.798 -116.428 0 + vertex -149.502 -117.498 0 + vertex -151.927 -116.263 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -149.502 -117.498 0 + vertex -152.044 -116.09 0 + vertex -151.927 -116.263 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -151.658 -116.584 0 + vertex -149.502 -117.498 0 + vertex -151.798 -116.428 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -150.624 -117.282 0 + vertex -150.427 -117.353 0 + vertex -149.502 -117.498 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -151.178 -116.987 0 + vertex -149.502 -117.498 0 + vertex -151.347 -116.864 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -149.502 -117.498 0 + vertex -151.507 -116.729 0 + vertex -151.347 -116.864 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -151 -117.098 0 + vertex -149.502 -117.498 0 + vertex -151.178 -116.987 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -150.815 -117.196 0 + vertex -149.502 -117.498 0 + vertex -151 -117.098 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -150.624 -117.282 0 + vertex -149.502 -117.498 0 + vertex -150.815 -117.196 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -152.044 -116.09 0 + vertex -149.502 -117.498 0 + vertex -152.149 -115.908 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -150.021 -117.454 0 + vertex -149.502 -117.498 0 + vertex -150.226 -117.411 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -149.502 -117.498 0 + vertex -150.427 -117.353 0 + vertex -150.226 -117.411 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -149.502 -117.498 0 + vertex -152.384 -115.327 0 + vertex -152.319 -115.526 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -149.502 -117.498 0 + vertex -152.471 -114.918 0 + vertex -152.434 -115.124 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -149.502 -117.498 0 + vertex -149.814 -117.484 0 + vertex -149.605 -117.498 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -152.5 -114.5 0 + vertex -152.493 -114.709 0 + vertex -149.502 -117.498 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -149.502 117.498 0 + vertex -149.5 -117.5 0 + vertex -149.5 117.5 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -149.5 -117.5 0 + vertex 149.5 -117.5 0 + vertex -149.5 117.5 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -149.502 117.498 0 + vertex -149.502 -117.498 0 + vertex -149.5 -117.5 0 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 149.605 -117.498 -3 + vertex 149.502 -117.498 0 + vertex 149.502 -117.498 -3 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 149.605 -117.498 -3 + vertex 149.605 -117.498 0 + vertex 149.502 -117.498 0 + endloop + endfacet + facet normal 0.0668359 -0.997764 0 + outer loop + vertex 149.814 -117.484 -3 + vertex 149.605 -117.498 0 + vertex 149.605 -117.498 -3 + endloop + endfacet + facet normal 0.0668359 -0.997764 0 + outer loop + vertex 149.814 -117.484 -3 + vertex 149.814 -117.484 0 + vertex 149.605 -117.498 0 + endloop + endfacet + facet normal 0.143429 -0.989661 0 + outer loop + vertex 150.021 -117.454 -3 + vertex 149.814 -117.484 0 + vertex 149.814 -117.484 -3 + endloop + endfacet + facet normal 0.143429 -0.989661 0 + outer loop + vertex 150.021 -117.454 -3 + vertex 150.021 -117.454 0 + vertex 149.814 -117.484 0 + endloop + endfacet + facet normal 0.205289 -0.978701 0 + outer loop + vertex 150.226 -117.411 -3 + vertex 150.021 -117.454 0 + vertex 150.021 -117.454 -3 + endloop + endfacet + facet normal 0.205289 -0.978701 0 + outer loop + vertex 150.226 -117.411 -3 + vertex 150.226 -117.411 0 + vertex 150.021 -117.454 0 + endloop + endfacet + facet normal 0.277246 -0.960799 0 + outer loop + vertex 150.427 -117.353 -3 + vertex 150.226 -117.411 0 + vertex 150.226 -117.411 -3 + endloop + endfacet + facet normal 0.277246 -0.960799 0 + outer loop + vertex 150.427 -117.353 -3 + vertex 150.427 -117.353 0 + vertex 150.226 -117.411 0 + endloop + endfacet + facet normal 0.339058 -0.940766 0 + outer loop + vertex 150.624 -117.282 -3 + vertex 150.427 -117.353 0 + vertex 150.427 -117.353 -3 + endloop + endfacet + facet normal 0.339058 -0.940766 0 + outer loop + vertex 150.624 -117.282 -3 + vertex 150.624 -117.282 0 + vertex 150.427 -117.353 0 + endloop + endfacet + facet normal 0.410563 -0.911832 0 + outer loop + vertex 150.815 -117.196 -3 + vertex 150.624 -117.282 0 + vertex 150.624 -117.282 -3 + endloop + endfacet + facet normal 0.410563 -0.911832 0 + outer loop + vertex 150.815 -117.196 -3 + vertex 150.815 -117.196 0 + vertex 150.624 -117.282 0 + endloop + endfacet + facet normal 0.468107 -0.883672 0 + outer loop + vertex 151 -117.098 -3 + vertex 150.815 -117.196 0 + vertex 150.815 -117.196 -3 + endloop + endfacet + facet normal 0.468107 -0.883672 0 + outer loop + vertex 151 -117.098 -3 + vertex 151 -117.098 0 + vertex 150.815 -117.196 0 + endloop + endfacet + facet normal 0.529142 -0.848533 0 + outer loop + vertex 151.178 -116.987 -3 + vertex 151 -117.098 0 + vertex 151 -117.098 -3 + endloop + endfacet + facet normal 0.529142 -0.848533 0 + outer loop + vertex 151.178 -116.987 -3 + vertex 151.178 -116.987 0 + vertex 151 -117.098 0 + endloop + endfacet + facet normal 0.588456 -0.808529 0 + outer loop + vertex 151.347 -116.864 -3 + vertex 151.178 -116.987 0 + vertex 151.178 -116.987 -3 + endloop + endfacet + facet normal 0.588456 -0.808529 0 + outer loop + vertex 151.347 -116.864 -3 + vertex 151.347 -116.864 0 + vertex 151.178 -116.987 0 + endloop + endfacet + facet normal 0.644871 -0.764291 0 + outer loop + vertex 151.507 -116.729 -3 + vertex 151.347 -116.864 0 + vertex 151.347 -116.864 -3 + endloop + endfacet + facet normal 0.644871 -0.764291 0 + outer loop + vertex 151.507 -116.729 -3 + vertex 151.507 -116.729 0 + vertex 151.347 -116.864 0 + endloop + endfacet + facet normal 0.692631 -0.721292 0 + outer loop + vertex 151.658 -116.584 -3 + vertex 151.507 -116.729 0 + vertex 151.507 -116.729 -3 + endloop + endfacet + facet normal 0.692631 -0.721292 0 + outer loop + vertex 151.658 -116.584 -3 + vertex 151.658 -116.584 0 + vertex 151.507 -116.729 0 + endloop + endfacet + facet normal 0.744242 -0.66791 0 + outer loop + vertex 151.798 -116.428 -3 + vertex 151.658 -116.584 0 + vertex 151.658 -116.584 -3 + endloop + endfacet + facet normal 0.744242 -0.66791 0 + outer loop + vertex 151.798 -116.428 -3 + vertex 151.798 -116.428 0 + vertex 151.658 -116.584 0 + endloop + endfacet + facet normal 0.787807 -0.615922 0 + outer loop + vertex 151.927 -116.263 -3 + vertex 151.798 -116.428 0 + vertex 151.798 -116.428 -3 + endloop + endfacet + facet normal 0.787807 -0.615922 0 + outer loop + vertex 151.927 -116.263 -3 + vertex 151.927 -116.263 0 + vertex 151.798 -116.428 0 + endloop + endfacet + facet normal 0.828349 -0.560213 0 + outer loop + vertex 152.044 -116.09 -3 + vertex 151.927 -116.263 0 + vertex 151.927 -116.263 -3 + endloop + endfacet + facet normal 0.828349 -0.560213 0 + outer loop + vertex 152.044 -116.09 -3 + vertex 152.044 -116.09 0 + vertex 151.927 -116.263 0 + endloop + endfacet + facet normal 0.866186 -0.499722 0 + outer loop + vertex 152.149 -115.908 -3 + vertex 152.044 -116.09 0 + vertex 152.044 -116.09 -3 + endloop + endfacet + facet normal 0.866186 -0.499722 0 + outer loop + vertex 152.149 -115.908 -3 + vertex 152.149 -115.908 0 + vertex 152.044 -116.09 0 + endloop + endfacet + facet normal 0.898217 -0.439553 0 + outer loop + vertex 152.241 -115.72 -3 + vertex 152.149 -115.908 0 + vertex 152.149 -115.908 -3 + endloop + endfacet + facet normal 0.898217 -0.439553 0 + outer loop + vertex 152.241 -115.72 -3 + vertex 152.241 -115.72 0 + vertex 152.149 -115.908 0 + endloop + endfacet + facet normal 0.927816 -0.373039 0 + outer loop + vertex 152.319 -115.526 -3 + vertex 152.241 -115.72 0 + vertex 152.241 -115.72 -3 + endloop + endfacet + facet normal 0.927816 -0.373039 0 + outer loop + vertex 152.319 -115.526 -3 + vertex 152.319 -115.526 0 + vertex 152.241 -115.72 0 + endloop + endfacet + facet normal 0.950577 -0.31049 0 + outer loop + vertex 152.384 -115.327 -3 + vertex 152.319 -115.526 0 + vertex 152.319 -115.526 -3 + endloop + endfacet + facet normal 0.950577 -0.31049 0 + outer loop + vertex 152.384 -115.327 -3 + vertex 152.384 -115.327 0 + vertex 152.319 -115.526 0 + endloop + endfacet + facet normal 0.970981 -0.239158 0 + outer loop + vertex 152.434 -115.124 -3 + vertex 152.384 -115.327 0 + vertex 152.384 -115.327 -3 + endloop + endfacet + facet normal 0.970981 -0.239158 0 + outer loop + vertex 152.434 -115.124 -3 + vertex 152.434 -115.124 0 + vertex 152.384 -115.327 0 + endloop + endfacet + facet normal 0.98425 -0.176783 0 + outer loop + vertex 152.471 -114.918 -3 + vertex 152.434 -115.124 0 + vertex 152.434 -115.124 -3 + endloop + endfacet + facet normal 0.98425 -0.176783 0 + outer loop + vertex 152.471 -114.918 -3 + vertex 152.471 -114.918 0 + vertex 152.434 -115.124 0 + endloop + endfacet + facet normal 0.994505 -0.104685 0 + outer loop + vertex 152.493 -114.709 -3 + vertex 152.471 -114.918 0 + vertex 152.471 -114.918 -3 + endloop + endfacet + facet normal 0.994505 -0.104685 0 + outer loop + vertex 152.493 -114.709 -3 + vertex 152.493 -114.709 0 + vertex 152.471 -114.918 0 + endloop + endfacet + facet normal 0.99944 -0.0334741 0 + outer loop + vertex 152.5 -114.5 -3 + vertex 152.493 -114.709 0 + vertex 152.493 -114.709 -3 + endloop + endfacet + facet normal 0.99944 -0.0334741 0 + outer loop + vertex 152.5 -114.5 -3 + vertex 152.5 -114.5 0 + vertex 152.493 -114.709 0 + endloop + endfacet + facet normal 1 0 0 + outer loop + vertex 152.5 114.5 -3 + vertex 152.5 -114.5 0 + vertex 152.5 -114.5 -3 + endloop + endfacet + facet normal 1 0 -0 + outer loop + vertex 152.5 114.5 -3 + vertex 152.5 114.5 0 + vertex 152.5 -114.5 0 + endloop + endfacet + facet normal 0.99944 0.0334741 0 + outer loop + vertex 152.493 114.709 -3 + vertex 152.5 114.5 0 + vertex 152.5 114.5 -3 + endloop + endfacet + facet normal 0.99944 0.0334741 -0 + outer loop + vertex 152.493 114.709 -3 + vertex 152.493 114.709 0 + vertex 152.5 114.5 0 + endloop + endfacet + facet normal 0.994505 0.104685 0 + outer loop + vertex 152.471 114.918 -3 + vertex 152.493 114.709 0 + vertex 152.493 114.709 -3 + endloop + endfacet + facet normal 0.994505 0.104685 -0 + outer loop + vertex 152.471 114.918 -3 + vertex 152.471 114.918 0 + vertex 152.493 114.709 0 + endloop + endfacet + facet normal 0.98425 0.176783 0 + outer loop + vertex 152.434 115.124 -3 + vertex 152.471 114.918 0 + vertex 152.471 114.918 -3 + endloop + endfacet + facet normal 0.98425 0.176783 -0 + outer loop + vertex 152.434 115.124 -3 + vertex 152.434 115.124 0 + vertex 152.471 114.918 0 + endloop + endfacet + facet normal 0.970981 0.239158 0 + outer loop + vertex 152.384 115.327 -3 + vertex 152.434 115.124 0 + vertex 152.434 115.124 -3 + endloop + endfacet + facet normal 0.970981 0.239158 -0 + outer loop + vertex 152.384 115.327 -3 + vertex 152.384 115.327 0 + vertex 152.434 115.124 0 + endloop + endfacet + facet normal 0.950577 0.31049 0 + outer loop + vertex 152.319 115.526 -3 + vertex 152.384 115.327 0 + vertex 152.384 115.327 -3 + endloop + endfacet + facet normal 0.950577 0.31049 -0 + outer loop + vertex 152.319 115.526 -3 + vertex 152.319 115.526 0 + vertex 152.384 115.327 0 + endloop + endfacet + facet normal 0.927816 0.373039 0 + outer loop + vertex 152.241 115.72 -3 + vertex 152.319 115.526 0 + vertex 152.319 115.526 -3 + endloop + endfacet + facet normal 0.927816 0.373039 -0 + outer loop + vertex 152.241 115.72 -3 + vertex 152.241 115.72 0 + vertex 152.319 115.526 0 + endloop + endfacet + facet normal 0.898217 0.439553 0 + outer loop + vertex 152.149 115.908 -3 + vertex 152.241 115.72 0 + vertex 152.241 115.72 -3 + endloop + endfacet + facet normal 0.898217 0.439553 -0 + outer loop + vertex 152.149 115.908 -3 + vertex 152.149 115.908 0 + vertex 152.241 115.72 0 + endloop + endfacet + facet normal 0.866186 0.499722 0 + outer loop + vertex 152.044 116.09 -3 + vertex 152.149 115.908 0 + vertex 152.149 115.908 -3 + endloop + endfacet + facet normal 0.866186 0.499722 -0 + outer loop + vertex 152.044 116.09 -3 + vertex 152.044 116.09 0 + vertex 152.149 115.908 0 + endloop + endfacet + facet normal 0.828349 0.560213 0 + outer loop + vertex 151.927 116.263 -3 + vertex 152.044 116.09 0 + vertex 152.044 116.09 -3 + endloop + endfacet + facet normal 0.828349 0.560213 -0 + outer loop + vertex 151.927 116.263 -3 + vertex 151.927 116.263 0 + vertex 152.044 116.09 0 + endloop + endfacet + facet normal 0.787807 0.615922 0 + outer loop + vertex 151.798 116.428 -3 + vertex 151.927 116.263 0 + vertex 151.927 116.263 -3 + endloop + endfacet + facet normal 0.787807 0.615922 -0 + outer loop + vertex 151.798 116.428 -3 + vertex 151.798 116.428 0 + vertex 151.927 116.263 0 + endloop + endfacet + facet normal 0.744242 0.66791 0 + outer loop + vertex 151.658 116.584 -3 + vertex 151.798 116.428 0 + vertex 151.798 116.428 -3 + endloop + endfacet + facet normal 0.744242 0.66791 -0 + outer loop + vertex 151.658 116.584 -3 + vertex 151.658 116.584 0 + vertex 151.798 116.428 0 + endloop + endfacet + facet normal 0.692631 0.721292 0 + outer loop + vertex 151.507 116.729 -3 + vertex 151.658 116.584 0 + vertex 151.658 116.584 -3 + endloop + endfacet + facet normal 0.692631 0.721292 -0 + outer loop + vertex 151.507 116.729 -3 + vertex 151.507 116.729 0 + vertex 151.658 116.584 0 + endloop + endfacet + facet normal 0.644871 0.764291 0 + outer loop + vertex 151.347 116.864 -3 + vertex 151.507 116.729 0 + vertex 151.507 116.729 -3 + endloop + endfacet + facet normal 0.644871 0.764291 -0 + outer loop + vertex 151.347 116.864 -3 + vertex 151.347 116.864 0 + vertex 151.507 116.729 0 + endloop + endfacet + facet normal 0.588456 0.808529 0 + outer loop + vertex 151.178 116.987 -3 + vertex 151.347 116.864 0 + vertex 151.347 116.864 -3 + endloop + endfacet + facet normal 0.588456 0.808529 -0 + outer loop + vertex 151.178 116.987 -3 + vertex 151.178 116.987 0 + vertex 151.347 116.864 0 + endloop + endfacet + facet normal 0.529142 0.848533 0 + outer loop + vertex 151 117.098 -3 + vertex 151.178 116.987 0 + vertex 151.178 116.987 -3 + endloop + endfacet + facet normal 0.529142 0.848533 -0 + outer loop + vertex 151 117.098 -3 + vertex 151 117.098 0 + vertex 151.178 116.987 0 + endloop + endfacet + facet normal 0.468107 0.883672 0 + outer loop + vertex 150.815 117.196 -3 + vertex 151 117.098 0 + vertex 151 117.098 -3 + endloop + endfacet + facet normal 0.468107 0.883672 -0 + outer loop + vertex 150.815 117.196 -3 + vertex 150.815 117.196 0 + vertex 151 117.098 0 + endloop + endfacet + facet normal 0.410563 0.911832 0 + outer loop + vertex 150.624 117.282 -3 + vertex 150.815 117.196 0 + vertex 150.815 117.196 -3 + endloop + endfacet + facet normal 0.410563 0.911832 -0 + outer loop + vertex 150.624 117.282 -3 + vertex 150.624 117.282 0 + vertex 150.815 117.196 0 + endloop + endfacet + facet normal 0.339058 0.940766 0 + outer loop + vertex 150.427 117.353 -3 + vertex 150.624 117.282 0 + vertex 150.624 117.282 -3 + endloop + endfacet + facet normal 0.339058 0.940766 -0 + outer loop + vertex 150.427 117.353 -3 + vertex 150.427 117.353 0 + vertex 150.624 117.282 0 + endloop + endfacet + facet normal 0.277246 0.960799 0 + outer loop + vertex 150.226 117.411 -3 + vertex 150.427 117.353 0 + vertex 150.427 117.353 -3 + endloop + endfacet + facet normal 0.277246 0.960799 -0 + outer loop + vertex 150.226 117.411 -3 + vertex 150.226 117.411 0 + vertex 150.427 117.353 0 + endloop + endfacet + facet normal 0.205289 0.978701 0 + outer loop + vertex 150.021 117.454 -3 + vertex 150.226 117.411 0 + vertex 150.226 117.411 -3 + endloop + endfacet + facet normal 0.205289 0.978701 -0 + outer loop + vertex 150.021 117.454 -3 + vertex 150.021 117.454 0 + vertex 150.226 117.411 0 + endloop + endfacet + facet normal 0.143429 0.989661 0 + outer loop + vertex 149.814 117.484 -3 + vertex 150.021 117.454 0 + vertex 150.021 117.454 -3 + endloop + endfacet + facet normal 0.143429 0.989661 -0 + outer loop + vertex 149.814 117.484 -3 + vertex 149.814 117.484 0 + vertex 150.021 117.454 0 + endloop + endfacet + facet normal 0.0668359 0.997764 0 + outer loop + vertex 149.605 117.498 -3 + vertex 149.814 117.484 0 + vertex 149.814 117.484 -3 + endloop + endfacet + facet normal 0.0668359 0.997764 -0 + outer loop + vertex 149.605 117.498 -3 + vertex 149.605 117.498 0 + vertex 149.814 117.484 0 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex 149.502 117.498 -3 + vertex 149.605 117.498 0 + vertex 149.605 117.498 -3 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex 149.502 117.498 -3 + vertex 149.502 117.498 0 + vertex 149.605 117.498 0 + endloop + endfacet + facet normal 0.707107 0.707107 0 + outer loop + vertex 149.5 117.5 -3 + vertex 149.502 117.498 0 + vertex 149.502 117.498 -3 + endloop + endfacet + facet normal 0.707107 0.707107 -0 + outer loop + vertex 149.5 117.5 -3 + vertex 149.5 117.5 0 + vertex 149.502 117.498 0 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -149.5 117.5 -3 + vertex 149.5 117.5 0 + vertex 149.5 117.5 -3 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -149.5 117.5 -3 + vertex -149.5 117.5 0 + vertex 149.5 117.5 0 + endloop + endfacet + facet normal -0.707107 0.707107 0 + outer loop + vertex -149.502 117.498 -3 + vertex -149.5 117.5 0 + vertex -149.5 117.5 -3 + endloop + endfacet + facet normal -0.707107 0.707107 0 + outer loop + vertex -149.502 117.498 -3 + vertex -149.502 117.498 0 + vertex -149.5 117.5 0 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -149.605 117.498 -3 + vertex -149.502 117.498 0 + vertex -149.502 117.498 -3 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -149.605 117.498 -3 + vertex -149.605 117.498 0 + vertex -149.502 117.498 0 + endloop + endfacet + facet normal -0.0668359 0.997764 0 + outer loop + vertex -149.814 117.484 -3 + vertex -149.605 117.498 0 + vertex -149.605 117.498 -3 + endloop + endfacet + facet normal -0.0668359 0.997764 0 + outer loop + vertex -149.814 117.484 -3 + vertex -149.814 117.484 0 + vertex -149.605 117.498 0 + endloop + endfacet + facet normal -0.143429 0.989661 0 + outer loop + vertex -150.021 117.454 -3 + vertex -149.814 117.484 0 + vertex -149.814 117.484 -3 + endloop + endfacet + facet normal -0.143429 0.989661 0 + outer loop + vertex -150.021 117.454 -3 + vertex -150.021 117.454 0 + vertex -149.814 117.484 0 + endloop + endfacet + facet normal -0.205289 0.978701 0 + outer loop + vertex -150.226 117.411 -3 + vertex -150.021 117.454 0 + vertex -150.021 117.454 -3 + endloop + endfacet + facet normal -0.205289 0.978701 0 + outer loop + vertex -150.226 117.411 -3 + vertex -150.226 117.411 0 + vertex -150.021 117.454 0 + endloop + endfacet + facet normal -0.277246 0.960799 0 + outer loop + vertex -150.427 117.353 -3 + vertex -150.226 117.411 0 + vertex -150.226 117.411 -3 + endloop + endfacet + facet normal -0.277246 0.960799 0 + outer loop + vertex -150.427 117.353 -3 + vertex -150.427 117.353 0 + vertex -150.226 117.411 0 + endloop + endfacet + facet normal -0.339058 0.940766 0 + outer loop + vertex -150.624 117.282 -3 + vertex -150.427 117.353 0 + vertex -150.427 117.353 -3 + endloop + endfacet + facet normal -0.339058 0.940766 0 + outer loop + vertex -150.624 117.282 -3 + vertex -150.624 117.282 0 + vertex -150.427 117.353 0 + endloop + endfacet + facet normal -0.410563 0.911832 0 + outer loop + vertex -150.815 117.196 -3 + vertex -150.624 117.282 0 + vertex -150.624 117.282 -3 + endloop + endfacet + facet normal -0.410563 0.911832 0 + outer loop + vertex -150.815 117.196 -3 + vertex -150.815 117.196 0 + vertex -150.624 117.282 0 + endloop + endfacet + facet normal -0.468107 0.883672 0 + outer loop + vertex -151 117.098 -3 + vertex -150.815 117.196 0 + vertex -150.815 117.196 -3 + endloop + endfacet + facet normal -0.468107 0.883672 0 + outer loop + vertex -151 117.098 -3 + vertex -151 117.098 0 + vertex -150.815 117.196 0 + endloop + endfacet + facet normal -0.529142 0.848533 0 + outer loop + vertex -151.178 116.987 -3 + vertex -151 117.098 0 + vertex -151 117.098 -3 + endloop + endfacet + facet normal -0.529142 0.848533 0 + outer loop + vertex -151.178 116.987 -3 + vertex -151.178 116.987 0 + vertex -151 117.098 0 + endloop + endfacet + facet normal -0.588456 0.808529 0 + outer loop + vertex -151.347 116.864 -3 + vertex -151.178 116.987 0 + vertex -151.178 116.987 -3 + endloop + endfacet + facet normal -0.588456 0.808529 0 + outer loop + vertex -151.347 116.864 -3 + vertex -151.347 116.864 0 + vertex -151.178 116.987 0 + endloop + endfacet + facet normal -0.644871 0.764291 0 + outer loop + vertex -151.507 116.729 -3 + vertex -151.347 116.864 0 + vertex -151.347 116.864 -3 + endloop + endfacet + facet normal -0.644871 0.764291 0 + outer loop + vertex -151.507 116.729 -3 + vertex -151.507 116.729 0 + vertex -151.347 116.864 0 + endloop + endfacet + facet normal -0.692631 0.721292 0 + outer loop + vertex -151.658 116.584 -3 + vertex -151.507 116.729 0 + vertex -151.507 116.729 -3 + endloop + endfacet + facet normal -0.692631 0.721292 0 + outer loop + vertex -151.658 116.584 -3 + vertex -151.658 116.584 0 + vertex -151.507 116.729 0 + endloop + endfacet + facet normal -0.744242 0.66791 0 + outer loop + vertex -151.798 116.428 -3 + vertex -151.658 116.584 0 + vertex -151.658 116.584 -3 + endloop + endfacet + facet normal -0.744242 0.66791 0 + outer loop + vertex -151.798 116.428 -3 + vertex -151.798 116.428 0 + vertex -151.658 116.584 0 + endloop + endfacet + facet normal -0.787807 0.615922 0 + outer loop + vertex -151.927 116.263 -3 + vertex -151.798 116.428 0 + vertex -151.798 116.428 -3 + endloop + endfacet + facet normal -0.787807 0.615922 0 + outer loop + vertex -151.927 116.263 -3 + vertex -151.927 116.263 0 + vertex -151.798 116.428 0 + endloop + endfacet + facet normal -0.828349 0.560213 0 + outer loop + vertex -152.044 116.09 -3 + vertex -151.927 116.263 0 + vertex -151.927 116.263 -3 + endloop + endfacet + facet normal -0.828349 0.560213 0 + outer loop + vertex -152.044 116.09 -3 + vertex -152.044 116.09 0 + vertex -151.927 116.263 0 + endloop + endfacet + facet normal -0.866186 0.499722 0 + outer loop + vertex -152.149 115.908 -3 + vertex -152.044 116.09 0 + vertex -152.044 116.09 -3 + endloop + endfacet + facet normal -0.866186 0.499722 0 + outer loop + vertex -152.149 115.908 -3 + vertex -152.149 115.908 0 + vertex -152.044 116.09 0 + endloop + endfacet + facet normal -0.898217 0.439553 0 + outer loop + vertex -152.241 115.72 -3 + vertex -152.149 115.908 0 + vertex -152.149 115.908 -3 + endloop + endfacet + facet normal -0.898217 0.439553 0 + outer loop + vertex -152.241 115.72 -3 + vertex -152.241 115.72 0 + vertex -152.149 115.908 0 + endloop + endfacet + facet normal -0.927816 0.373039 0 + outer loop + vertex -152.319 115.526 -3 + vertex -152.241 115.72 0 + vertex -152.241 115.72 -3 + endloop + endfacet + facet normal -0.927816 0.373039 0 + outer loop + vertex -152.319 115.526 -3 + vertex -152.319 115.526 0 + vertex -152.241 115.72 0 + endloop + endfacet + facet normal -0.950577 0.31049 0 + outer loop + vertex -152.384 115.327 -3 + vertex -152.319 115.526 0 + vertex -152.319 115.526 -3 + endloop + endfacet + facet normal -0.950577 0.31049 0 + outer loop + vertex -152.384 115.327 -3 + vertex -152.384 115.327 0 + vertex -152.319 115.526 0 + endloop + endfacet + facet normal -0.970981 0.239158 0 + outer loop + vertex -152.434 115.124 -3 + vertex -152.384 115.327 0 + vertex -152.384 115.327 -3 + endloop + endfacet + facet normal -0.970981 0.239158 0 + outer loop + vertex -152.434 115.124 -3 + vertex -152.434 115.124 0 + vertex -152.384 115.327 0 + endloop + endfacet + facet normal -0.98425 0.176783 0 + outer loop + vertex -152.471 114.918 -3 + vertex -152.434 115.124 0 + vertex -152.434 115.124 -3 + endloop + endfacet + facet normal -0.98425 0.176783 0 + outer loop + vertex -152.471 114.918 -3 + vertex -152.471 114.918 0 + vertex -152.434 115.124 0 + endloop + endfacet + facet normal -0.994505 0.104685 0 + outer loop + vertex -152.493 114.709 -3 + vertex -152.471 114.918 0 + vertex -152.471 114.918 -3 + endloop + endfacet + facet normal -0.994505 0.104685 0 + outer loop + vertex -152.493 114.709 -3 + vertex -152.493 114.709 0 + vertex -152.471 114.918 0 + endloop + endfacet + facet normal -0.99944 0.0334741 0 + outer loop + vertex -152.5 114.5 -3 + vertex -152.493 114.709 0 + vertex -152.493 114.709 -3 + endloop + endfacet + facet normal -0.99944 0.0334741 0 + outer loop + vertex -152.5 114.5 -3 + vertex -152.5 114.5 0 + vertex -152.493 114.709 0 + endloop + endfacet + facet normal -1 0 0 + outer loop + vertex -152.5 -114.5 -3 + vertex -152.5 114.5 0 + vertex -152.5 114.5 -3 + endloop + endfacet + facet normal -1 0 0 + outer loop + vertex -152.5 -114.5 -3 + vertex -152.5 -114.5 0 + vertex -152.5 114.5 0 + endloop + endfacet + facet normal -0.99944 -0.0334741 0 + outer loop + vertex -152.493 -114.709 -3 + vertex -152.5 -114.5 0 + vertex -152.5 -114.5 -3 + endloop + endfacet + facet normal -0.99944 -0.0334741 0 + outer loop + vertex -152.493 -114.709 -3 + vertex -152.493 -114.709 0 + vertex -152.5 -114.5 0 + endloop + endfacet + facet normal -0.994505 -0.104685 0 + outer loop + vertex -152.471 -114.918 -3 + vertex -152.493 -114.709 0 + vertex -152.493 -114.709 -3 + endloop + endfacet + facet normal -0.994505 -0.104685 0 + outer loop + vertex -152.471 -114.918 -3 + vertex -152.471 -114.918 0 + vertex -152.493 -114.709 0 + endloop + endfacet + facet normal -0.98425 -0.176783 0 + outer loop + vertex -152.434 -115.124 -3 + vertex -152.471 -114.918 0 + vertex -152.471 -114.918 -3 + endloop + endfacet + facet normal -0.98425 -0.176783 0 + outer loop + vertex -152.434 -115.124 -3 + vertex -152.434 -115.124 0 + vertex -152.471 -114.918 0 + endloop + endfacet + facet normal -0.970981 -0.239158 0 + outer loop + vertex -152.384 -115.327 -3 + vertex -152.434 -115.124 0 + vertex -152.434 -115.124 -3 + endloop + endfacet + facet normal -0.970981 -0.239158 0 + outer loop + vertex -152.384 -115.327 -3 + vertex -152.384 -115.327 0 + vertex -152.434 -115.124 0 + endloop + endfacet + facet normal -0.950577 -0.31049 0 + outer loop + vertex -152.319 -115.526 -3 + vertex -152.384 -115.327 0 + vertex -152.384 -115.327 -3 + endloop + endfacet + facet normal -0.950577 -0.31049 0 + outer loop + vertex -152.319 -115.526 -3 + vertex -152.319 -115.526 0 + vertex -152.384 -115.327 0 + endloop + endfacet + facet normal -0.927816 -0.373039 0 + outer loop + vertex -152.241 -115.72 -3 + vertex -152.319 -115.526 0 + vertex -152.319 -115.526 -3 + endloop + endfacet + facet normal -0.927816 -0.373039 0 + outer loop + vertex -152.241 -115.72 -3 + vertex -152.241 -115.72 0 + vertex -152.319 -115.526 0 + endloop + endfacet + facet normal -0.898217 -0.439553 0 + outer loop + vertex -152.149 -115.908 -3 + vertex -152.241 -115.72 0 + vertex -152.241 -115.72 -3 + endloop + endfacet + facet normal -0.898217 -0.439553 0 + outer loop + vertex -152.149 -115.908 -3 + vertex -152.149 -115.908 0 + vertex -152.241 -115.72 0 + endloop + endfacet + facet normal -0.866186 -0.499722 0 + outer loop + vertex -152.044 -116.09 -3 + vertex -152.149 -115.908 0 + vertex -152.149 -115.908 -3 + endloop + endfacet + facet normal -0.866186 -0.499722 0 + outer loop + vertex -152.044 -116.09 -3 + vertex -152.044 -116.09 0 + vertex -152.149 -115.908 0 + endloop + endfacet + facet normal -0.828349 -0.560213 0 + outer loop + vertex -151.927 -116.263 -3 + vertex -152.044 -116.09 0 + vertex -152.044 -116.09 -3 + endloop + endfacet + facet normal -0.828349 -0.560213 0 + outer loop + vertex -151.927 -116.263 -3 + vertex -151.927 -116.263 0 + vertex -152.044 -116.09 0 + endloop + endfacet + facet normal -0.787807 -0.615922 0 + outer loop + vertex -151.798 -116.428 -3 + vertex -151.927 -116.263 0 + vertex -151.927 -116.263 -3 + endloop + endfacet + facet normal -0.787807 -0.615922 0 + outer loop + vertex -151.798 -116.428 -3 + vertex -151.798 -116.428 0 + vertex -151.927 -116.263 0 + endloop + endfacet + facet normal -0.744242 -0.66791 0 + outer loop + vertex -151.658 -116.584 -3 + vertex -151.798 -116.428 0 + vertex -151.798 -116.428 -3 + endloop + endfacet + facet normal -0.744242 -0.66791 0 + outer loop + vertex -151.658 -116.584 -3 + vertex -151.658 -116.584 0 + vertex -151.798 -116.428 0 + endloop + endfacet + facet normal -0.692631 -0.721292 0 + outer loop + vertex -151.507 -116.729 -3 + vertex -151.658 -116.584 0 + vertex -151.658 -116.584 -3 + endloop + endfacet + facet normal -0.692631 -0.721292 0 + outer loop + vertex -151.507 -116.729 -3 + vertex -151.507 -116.729 0 + vertex -151.658 -116.584 0 + endloop + endfacet + facet normal -0.644871 -0.764291 0 + outer loop + vertex -151.347 -116.864 -3 + vertex -151.507 -116.729 0 + vertex -151.507 -116.729 -3 + endloop + endfacet + facet normal -0.644871 -0.764291 0 + outer loop + vertex -151.347 -116.864 -3 + vertex -151.347 -116.864 0 + vertex -151.507 -116.729 0 + endloop + endfacet + facet normal -0.588456 -0.808529 0 + outer loop + vertex -151.178 -116.987 -3 + vertex -151.347 -116.864 0 + vertex -151.347 -116.864 -3 + endloop + endfacet + facet normal -0.588456 -0.808529 0 + outer loop + vertex -151.178 -116.987 -3 + vertex -151.178 -116.987 0 + vertex -151.347 -116.864 0 + endloop + endfacet + facet normal -0.529142 -0.848533 0 + outer loop + vertex -151 -117.098 -3 + vertex -151.178 -116.987 0 + vertex -151.178 -116.987 -3 + endloop + endfacet + facet normal -0.529142 -0.848533 0 + outer loop + vertex -151 -117.098 -3 + vertex -151 -117.098 0 + vertex -151.178 -116.987 0 + endloop + endfacet + facet normal -0.468107 -0.883672 0 + outer loop + vertex -150.815 -117.196 -3 + vertex -151 -117.098 0 + vertex -151 -117.098 -3 + endloop + endfacet + facet normal -0.468107 -0.883672 0 + outer loop + vertex -150.815 -117.196 -3 + vertex -150.815 -117.196 0 + vertex -151 -117.098 0 + endloop + endfacet + facet normal -0.410563 -0.911832 0 + outer loop + vertex -150.624 -117.282 -3 + vertex -150.815 -117.196 0 + vertex -150.815 -117.196 -3 + endloop + endfacet + facet normal -0.410563 -0.911832 0 + outer loop + vertex -150.624 -117.282 -3 + vertex -150.624 -117.282 0 + vertex -150.815 -117.196 0 + endloop + endfacet + facet normal -0.339058 -0.940766 0 + outer loop + vertex -150.427 -117.353 -3 + vertex -150.624 -117.282 0 + vertex -150.624 -117.282 -3 + endloop + endfacet + facet normal -0.339058 -0.940766 0 + outer loop + vertex -150.427 -117.353 -3 + vertex -150.427 -117.353 0 + vertex -150.624 -117.282 0 + endloop + endfacet + facet normal -0.277246 -0.960799 0 + outer loop + vertex -150.226 -117.411 -3 + vertex -150.427 -117.353 0 + vertex -150.427 -117.353 -3 + endloop + endfacet + facet normal -0.277246 -0.960799 0 + outer loop + vertex -150.226 -117.411 -3 + vertex -150.226 -117.411 0 + vertex -150.427 -117.353 0 + endloop + endfacet + facet normal -0.205289 -0.978701 0 + outer loop + vertex -150.021 -117.454 -3 + vertex -150.226 -117.411 0 + vertex -150.226 -117.411 -3 + endloop + endfacet + facet normal -0.205289 -0.978701 0 + outer loop + vertex -150.021 -117.454 -3 + vertex -150.021 -117.454 0 + vertex -150.226 -117.411 0 + endloop + endfacet + facet normal -0.143429 -0.989661 0 + outer loop + vertex -149.814 -117.484 -3 + vertex -150.021 -117.454 0 + vertex -150.021 -117.454 -3 + endloop + endfacet + facet normal -0.143429 -0.989661 0 + outer loop + vertex -149.814 -117.484 -3 + vertex -149.814 -117.484 0 + vertex -150.021 -117.454 0 + endloop + endfacet + facet normal -0.0668359 -0.997764 0 + outer loop + vertex -149.605 -117.498 -3 + vertex -149.814 -117.484 0 + vertex -149.814 -117.484 -3 + endloop + endfacet + facet normal -0.0668359 -0.997764 0 + outer loop + vertex -149.605 -117.498 -3 + vertex -149.605 -117.498 0 + vertex -149.814 -117.484 0 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -149.502 -117.498 -3 + vertex -149.605 -117.498 0 + vertex -149.605 -117.498 -3 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -149.502 -117.498 -3 + vertex -149.502 -117.498 0 + vertex -149.605 -117.498 0 + endloop + endfacet + facet normal -0.707107 -0.707107 0 + outer loop + vertex -149.5 -117.5 -3 + vertex -149.502 -117.498 0 + vertex -149.502 -117.498 -3 + endloop + endfacet + facet normal -0.707107 -0.707107 0 + outer loop + vertex -149.5 -117.5 -3 + vertex -149.5 -117.5 0 + vertex -149.502 -117.498 0 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 149.5 -117.5 -3 + vertex -149.5 -117.5 0 + vertex -149.5 -117.5 -3 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 149.5 -117.5 -3 + vertex 149.5 -117.5 0 + vertex -149.5 -117.5 0 + endloop + endfacet + facet normal 0.707107 -0.707107 0 + outer loop + vertex 149.502 -117.498 -3 + vertex 149.5 -117.5 0 + vertex 149.5 -117.5 -3 + endloop + endfacet + facet normal 0.707107 -0.707107 0 + outer loop + vertex 149.502 -117.498 -3 + vertex 149.502 -117.498 0 + vertex 149.5 -117.5 0 + endloop + endfacet +endsolid OpenSCAD_Model diff --git a/resources/profiles/Creality/cr10s4.svg b/resources/profiles/Creality/cr10s4.svg new file mode 100644 index 0000000000..c3719456d1 --- /dev/null +++ b/resources/profiles/Creality/cr10s4.svg @@ -0,0 +1,4 @@ + + + + diff --git a/resources/profiles/Creality/cr10s4_bed.stl b/resources/profiles/Creality/cr10s4_bed.stl new file mode 100644 index 0000000000..c34ac4e5e4 --- /dev/null +++ b/resources/profiles/Creality/cr10s4_bed.stl @@ -0,0 +1,2774 @@ +solid OpenSCAD_Model + facet normal 0 0 -1 + outer loop + vertex 202.105 -204.998 -3 + vertex 202.002 -204.998 -3 + vertex 202.314 -204.984 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 202.314 -204.984 -3 + vertex 202.002 -204.998 -3 + vertex 202.521 -204.954 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 205 -202 -3 + vertex 202.002 -204.998 -3 + vertex 202.002 204.998 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 202.521 -204.954 -3 + vertex 202.002 -204.998 -3 + vertex 202.726 -204.911 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 202.726 -204.911 -3 + vertex 202.002 -204.998 -3 + vertex 202.927 -204.853 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 202.927 -204.853 -3 + vertex 202.002 -204.998 -3 + vertex 203.124 -204.782 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 203.124 -204.782 -3 + vertex 202.002 -204.998 -3 + vertex 203.315 -204.696 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 203.315 -204.696 -3 + vertex 202.002 -204.998 -3 + vertex 203.5 -204.598 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 203.5 -204.598 -3 + vertex 202.002 -204.998 -3 + vertex 203.678 -204.487 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 203.678 -204.487 -3 + vertex 202.002 -204.998 -3 + vertex 203.847 -204.364 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 203.847 -204.364 -3 + vertex 202.002 -204.998 -3 + vertex 204.007 -204.229 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 204.007 -204.229 -3 + vertex 202.002 -204.998 -3 + vertex 204.158 -204.084 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 204.158 -204.084 -3 + vertex 202.002 -204.998 -3 + vertex 204.298 -203.928 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 204.298 -203.928 -3 + vertex 202.002 -204.998 -3 + vertex 204.427 -203.763 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 204.427 -203.763 -3 + vertex 202.002 -204.998 -3 + vertex 204.544 -203.59 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 204.544 -203.59 -3 + vertex 202.002 -204.998 -3 + vertex 204.649 -203.408 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 204.649 -203.408 -3 + vertex 202.002 -204.998 -3 + vertex 204.741 -203.22 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 204.741 -203.22 -3 + vertex 202.002 -204.998 -3 + vertex 204.819 -203.026 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 204.819 -203.026 -3 + vertex 202.002 -204.998 -3 + vertex 204.884 -202.827 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 204.884 -202.827 -3 + vertex 202.002 -204.998 -3 + vertex 204.934 -202.624 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 204.934 -202.624 -3 + vertex 202.002 -204.998 -3 + vertex 204.971 -202.418 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 204.971 -202.418 -3 + vertex 202.002 -204.998 -3 + vertex 204.993 -202.209 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 204.993 -202.209 -3 + vertex 202.002 -204.998 -3 + vertex 205 -202 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 205 -202 -3 + vertex 202.002 204.998 -3 + vertex 205 202 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 202.002 204.998 -3 + vertex 204.971 202.418 -3 + vertex 204.993 202.209 -3 + endloop + endfacet + facet normal -0 -0 -1 + outer loop + vertex 204.884 202.827 -3 + vertex 204.934 202.624 -3 + vertex 202.002 204.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 204.741 203.22 -3 + vertex 202.002 204.998 -3 + vertex 204.649 203.408 -3 + endloop + endfacet + facet normal -0 -0 -1 + outer loop + vertex 204.741 203.22 -3 + vertex 204.819 203.026 -3 + vertex 202.002 204.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 202.002 204.998 -3 + vertex 204.007 204.229 -3 + vertex 204.158 204.084 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 204.427 203.763 -3 + vertex 202.002 204.998 -3 + vertex 204.298 203.928 -3 + endloop + endfacet + facet normal -0 -0 -1 + outer loop + vertex 204.427 203.763 -3 + vertex 204.544 203.59 -3 + vertex 202.002 204.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 204.298 203.928 -3 + vertex 202.002 204.998 -3 + vertex 204.158 204.084 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 202.002 204.998 -3 + vertex 202.927 204.853 -3 + vertex 203.124 204.782 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 203.847 204.364 -3 + vertex 202.002 204.998 -3 + vertex 203.678 204.487 -3 + endloop + endfacet + facet normal -0 -0 -1 + outer loop + vertex 203.847 204.364 -3 + vertex 204.007 204.229 -3 + vertex 202.002 204.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 203.678 204.487 -3 + vertex 202.002 204.998 -3 + vertex 203.5 204.598 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 203.5 204.598 -3 + vertex 202.002 204.998 -3 + vertex 203.315 204.696 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 203.315 204.696 -3 + vertex 202.002 204.998 -3 + vertex 203.124 204.782 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 204.649 203.408 -3 + vertex 202.002 204.998 -3 + vertex 204.544 203.59 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 202.726 204.911 -3 + vertex 202.002 204.998 -3 + vertex 202.521 204.954 -3 + endloop + endfacet + facet normal -0 -0 -1 + outer loop + vertex 202.726 204.911 -3 + vertex 202.927 204.853 -3 + vertex 202.002 204.998 -3 + endloop + endfacet + facet normal -0 -0 -1 + outer loop + vertex 204.819 203.026 -3 + vertex 204.884 202.827 -3 + vertex 202.002 204.998 -3 + endloop + endfacet + facet normal -0 -0 -1 + outer loop + vertex 202.314 204.984 -3 + vertex 202.521 204.954 -3 + vertex 202.002 204.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 202.002 204.998 -3 + vertex 204.934 202.624 -3 + vertex 204.971 202.418 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 202.002 204.998 -3 + vertex 202.105 204.998 -3 + vertex 202.314 204.984 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 205 202 -3 + vertex 202.002 204.998 -3 + vertex 204.993 202.209 -3 + endloop + endfacet + facet normal 0 -0 -1 + outer loop + vertex -202 205 -3 + vertex 202 205 -3 + vertex -202.002 204.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -202.002 204.998 -3 + vertex 202 205 -3 + vertex 202.002 204.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 202.002 -204.998 -3 + vertex -202.002 204.998 -3 + vertex 202.002 204.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -205 -202 -3 + vertex -205 202 -3 + vertex -202.002 -204.998 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex -202.002 204.998 -3 + vertex -202.314 204.984 -3 + vertex -202.105 204.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -202.002 204.998 -3 + vertex -202.521 204.954 -3 + vertex -202.314 204.984 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -202.002 204.998 -3 + vertex -202.726 204.911 -3 + vertex -202.521 204.954 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -202.002 204.998 -3 + vertex -202.927 204.853 -3 + vertex -202.726 204.911 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -202.002 204.998 -3 + vertex -203.124 204.782 -3 + vertex -202.927 204.853 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -202.002 204.998 -3 + vertex -203.315 204.696 -3 + vertex -203.124 204.782 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -202.002 204.998 -3 + vertex -203.5 204.598 -3 + vertex -203.315 204.696 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -202.002 204.998 -3 + vertex -203.678 204.487 -3 + vertex -203.5 204.598 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -202.002 204.998 -3 + vertex -203.847 204.364 -3 + vertex -203.678 204.487 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -202.002 204.998 -3 + vertex -204.007 204.229 -3 + vertex -203.847 204.364 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -202.002 204.998 -3 + vertex -204.158 204.084 -3 + vertex -204.007 204.229 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -202.002 204.998 -3 + vertex -204.298 203.928 -3 + vertex -204.158 204.084 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -202.002 204.998 -3 + vertex -204.427 203.763 -3 + vertex -204.298 203.928 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -202.002 204.998 -3 + vertex -204.544 203.59 -3 + vertex -204.427 203.763 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -202.002 204.998 -3 + vertex -204.649 203.408 -3 + vertex -204.544 203.59 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -202.002 204.998 -3 + vertex -204.741 203.22 -3 + vertex -204.649 203.408 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -202.002 204.998 -3 + vertex -204.819 203.026 -3 + vertex -204.741 203.22 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -202.002 204.998 -3 + vertex -204.884 202.827 -3 + vertex -204.819 203.026 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -202.002 204.998 -3 + vertex -204.934 202.624 -3 + vertex -204.884 202.827 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -202.002 204.998 -3 + vertex -204.971 202.418 -3 + vertex -204.934 202.624 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -202.002 204.998 -3 + vertex -204.993 202.209 -3 + vertex -204.971 202.418 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -202.002 204.998 -3 + vertex -205 202 -3 + vertex -204.993 202.209 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -202.002 -204.998 -3 + vertex -205 202 -3 + vertex -202.002 204.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 202.002 -204.998 -3 + vertex -202.002 -204.998 -3 + vertex -202.002 204.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -202.002 -204.998 -3 + vertex -204.971 -202.418 -3 + vertex -204.993 -202.209 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -204.884 -202.827 -3 + vertex -204.934 -202.624 -3 + vertex -202.002 -204.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -204.741 -203.22 -3 + vertex -202.002 -204.998 -3 + vertex -204.649 -203.408 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -204.741 -203.22 -3 + vertex -204.819 -203.026 -3 + vertex -202.002 -204.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -202.002 -204.998 -3 + vertex -204.007 -204.229 -3 + vertex -204.158 -204.084 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -204.427 -203.763 -3 + vertex -202.002 -204.998 -3 + vertex -204.298 -203.928 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -204.427 -203.763 -3 + vertex -204.544 -203.59 -3 + vertex -202.002 -204.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -204.298 -203.928 -3 + vertex -202.002 -204.998 -3 + vertex -204.158 -204.084 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -202.002 -204.998 -3 + vertex -202.927 -204.853 -3 + vertex -203.124 -204.782 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -203.847 -204.364 -3 + vertex -202.002 -204.998 -3 + vertex -203.678 -204.487 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -203.847 -204.364 -3 + vertex -204.007 -204.229 -3 + vertex -202.002 -204.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -203.678 -204.487 -3 + vertex -202.002 -204.998 -3 + vertex -203.5 -204.598 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -203.5 -204.598 -3 + vertex -202.002 -204.998 -3 + vertex -203.315 -204.696 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -203.315 -204.696 -3 + vertex -202.002 -204.998 -3 + vertex -203.124 -204.782 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -204.649 -203.408 -3 + vertex -202.002 -204.998 -3 + vertex -204.544 -203.59 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -202.726 -204.911 -3 + vertex -202.002 -204.998 -3 + vertex -202.521 -204.954 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -202.726 -204.911 -3 + vertex -202.927 -204.853 -3 + vertex -202.002 -204.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -204.819 -203.026 -3 + vertex -204.884 -202.827 -3 + vertex -202.002 -204.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -202.314 -204.984 -3 + vertex -202.521 -204.954 -3 + vertex -202.002 -204.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -202.002 -204.998 -3 + vertex -204.934 -202.624 -3 + vertex -204.971 -202.418 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -202.002 -204.998 -3 + vertex -202.105 -204.998 -3 + vertex -202.314 -204.984 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 202.002 -204.998 -3 + vertex 202 -205 -3 + vertex -202.002 -204.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -202.002 -204.998 -3 + vertex 202 -205 -3 + vertex -202 -205 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -205 -202 -3 + vertex -202.002 -204.998 -3 + vertex -204.993 -202.209 -3 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 202.314 -204.984 0 + vertex 202.002 -204.998 0 + vertex 202.105 -204.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 202.521 -204.954 0 + vertex 202.002 -204.998 0 + vertex 202.314 -204.984 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 202.002 204.998 0 + vertex 202.002 -204.998 0 + vertex 205 -202 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 202.726 -204.911 0 + vertex 202.002 -204.998 0 + vertex 202.521 -204.954 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 202.927 -204.853 0 + vertex 202.002 -204.998 0 + vertex 202.726 -204.911 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 203.124 -204.782 0 + vertex 202.002 -204.998 0 + vertex 202.927 -204.853 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 203.315 -204.696 0 + vertex 202.002 -204.998 0 + vertex 203.124 -204.782 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 203.5 -204.598 0 + vertex 202.002 -204.998 0 + vertex 203.315 -204.696 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 203.678 -204.487 0 + vertex 202.002 -204.998 0 + vertex 203.5 -204.598 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 203.847 -204.364 0 + vertex 202.002 -204.998 0 + vertex 203.678 -204.487 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 204.007 -204.229 0 + vertex 202.002 -204.998 0 + vertex 203.847 -204.364 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 204.158 -204.084 0 + vertex 202.002 -204.998 0 + vertex 204.007 -204.229 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 204.298 -203.928 0 + vertex 202.002 -204.998 0 + vertex 204.158 -204.084 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 204.427 -203.763 0 + vertex 202.002 -204.998 0 + vertex 204.298 -203.928 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 204.544 -203.59 0 + vertex 202.002 -204.998 0 + vertex 204.427 -203.763 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 204.649 -203.408 0 + vertex 202.002 -204.998 0 + vertex 204.544 -203.59 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 204.741 -203.22 0 + vertex 202.002 -204.998 0 + vertex 204.649 -203.408 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 204.819 -203.026 0 + vertex 202.002 -204.998 0 + vertex 204.741 -203.22 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 204.884 -202.827 0 + vertex 202.002 -204.998 0 + vertex 204.819 -203.026 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 204.934 -202.624 0 + vertex 202.002 -204.998 0 + vertex 204.884 -202.827 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 204.971 -202.418 0 + vertex 202.002 -204.998 0 + vertex 204.934 -202.624 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 204.993 -202.209 0 + vertex 202.002 -204.998 0 + vertex 204.971 -202.418 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 205 -202 0 + vertex 202.002 -204.998 0 + vertex 204.993 -202.209 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 205 202 0 + vertex 202.002 204.998 0 + vertex 205 -202 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 204.993 202.209 0 + vertex 204.971 202.418 0 + vertex 202.002 204.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 202.002 204.998 0 + vertex 204.934 202.624 0 + vertex 204.884 202.827 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 204.649 203.408 0 + vertex 202.002 204.998 0 + vertex 204.741 203.22 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 202.002 204.998 0 + vertex 204.819 203.026 0 + vertex 204.741 203.22 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 204.158 204.084 0 + vertex 204.007 204.229 0 + vertex 202.002 204.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 204.298 203.928 0 + vertex 202.002 204.998 0 + vertex 204.427 203.763 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 202.002 204.998 0 + vertex 204.544 203.59 0 + vertex 204.427 203.763 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 204.158 204.084 0 + vertex 202.002 204.998 0 + vertex 204.298 203.928 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 203.124 204.782 0 + vertex 202.927 204.853 0 + vertex 202.002 204.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 203.678 204.487 0 + vertex 202.002 204.998 0 + vertex 203.847 204.364 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 202.002 204.998 0 + vertex 204.007 204.229 0 + vertex 203.847 204.364 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 203.5 204.598 0 + vertex 202.002 204.998 0 + vertex 203.678 204.487 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 203.315 204.696 0 + vertex 202.002 204.998 0 + vertex 203.5 204.598 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 203.124 204.782 0 + vertex 202.002 204.998 0 + vertex 203.315 204.696 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 204.544 203.59 0 + vertex 202.002 204.998 0 + vertex 204.649 203.408 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 202.521 204.954 0 + vertex 202.002 204.998 0 + vertex 202.726 204.911 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 202.002 204.998 0 + vertex 202.927 204.853 0 + vertex 202.726 204.911 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 202.002 204.998 0 + vertex 204.884 202.827 0 + vertex 204.819 203.026 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 202.002 204.998 0 + vertex 202.521 204.954 0 + vertex 202.314 204.984 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 204.971 202.418 0 + vertex 204.934 202.624 0 + vertex 202.002 204.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 202.314 204.984 0 + vertex 202.105 204.998 0 + vertex 202.002 204.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 204.993 202.209 0 + vertex 202.002 204.998 0 + vertex 205 202 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -202.002 204.998 0 + vertex 202 205 0 + vertex -202 205 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 202.002 204.998 0 + vertex 202 205 0 + vertex -202.002 204.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 202.002 204.998 0 + vertex -202.002 204.998 0 + vertex 202.002 -204.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -202.002 -204.998 0 + vertex -205 202 0 + vertex -205 -202 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -202.105 204.998 0 + vertex -202.314 204.984 0 + vertex -202.002 204.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -202.314 204.984 0 + vertex -202.521 204.954 0 + vertex -202.002 204.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -202.521 204.954 0 + vertex -202.726 204.911 0 + vertex -202.002 204.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -202.726 204.911 0 + vertex -202.927 204.853 0 + vertex -202.002 204.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -202.927 204.853 0 + vertex -203.124 204.782 0 + vertex -202.002 204.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -203.124 204.782 0 + vertex -203.315 204.696 0 + vertex -202.002 204.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -203.315 204.696 0 + vertex -203.5 204.598 0 + vertex -202.002 204.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -203.5 204.598 0 + vertex -203.678 204.487 0 + vertex -202.002 204.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -203.678 204.487 0 + vertex -203.847 204.364 0 + vertex -202.002 204.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -203.847 204.364 0 + vertex -204.007 204.229 0 + vertex -202.002 204.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -204.007 204.229 0 + vertex -204.158 204.084 0 + vertex -202.002 204.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -204.158 204.084 0 + vertex -204.298 203.928 0 + vertex -202.002 204.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -204.298 203.928 0 + vertex -204.427 203.763 0 + vertex -202.002 204.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -204.427 203.763 0 + vertex -204.544 203.59 0 + vertex -202.002 204.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -204.544 203.59 0 + vertex -204.649 203.408 0 + vertex -202.002 204.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -204.649 203.408 0 + vertex -204.741 203.22 0 + vertex -202.002 204.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -204.741 203.22 0 + vertex -204.819 203.026 0 + vertex -202.002 204.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -204.819 203.026 0 + vertex -204.884 202.827 0 + vertex -202.002 204.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -204.884 202.827 0 + vertex -204.934 202.624 0 + vertex -202.002 204.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -204.934 202.624 0 + vertex -204.971 202.418 0 + vertex -202.002 204.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -204.971 202.418 0 + vertex -204.993 202.209 0 + vertex -202.002 204.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -204.993 202.209 0 + vertex -205 202 0 + vertex -202.002 204.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -202.002 204.998 0 + vertex -205 202 0 + vertex -202.002 -204.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -202.002 204.998 0 + vertex -202.002 -204.998 0 + vertex 202.002 -204.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -204.993 -202.209 0 + vertex -204.971 -202.418 0 + vertex -202.002 -204.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -202.002 -204.998 0 + vertex -204.934 -202.624 0 + vertex -204.884 -202.827 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -204.649 -203.408 0 + vertex -202.002 -204.998 0 + vertex -204.741 -203.22 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -202.002 -204.998 0 + vertex -204.819 -203.026 0 + vertex -204.741 -203.22 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -204.158 -204.084 0 + vertex -204.007 -204.229 0 + vertex -202.002 -204.998 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -204.298 -203.928 0 + vertex -202.002 -204.998 0 + vertex -204.427 -203.763 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -202.002 -204.998 0 + vertex -204.544 -203.59 0 + vertex -204.427 -203.763 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -204.158 -204.084 0 + vertex -202.002 -204.998 0 + vertex -204.298 -203.928 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -203.124 -204.782 0 + vertex -202.927 -204.853 0 + vertex -202.002 -204.998 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -203.678 -204.487 0 + vertex -202.002 -204.998 0 + vertex -203.847 -204.364 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -202.002 -204.998 0 + vertex -204.007 -204.229 0 + vertex -203.847 -204.364 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -203.5 -204.598 0 + vertex -202.002 -204.998 0 + vertex -203.678 -204.487 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -203.315 -204.696 0 + vertex -202.002 -204.998 0 + vertex -203.5 -204.598 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -203.124 -204.782 0 + vertex -202.002 -204.998 0 + vertex -203.315 -204.696 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -204.544 -203.59 0 + vertex -202.002 -204.998 0 + vertex -204.649 -203.408 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -202.521 -204.954 0 + vertex -202.002 -204.998 0 + vertex -202.726 -204.911 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -202.002 -204.998 0 + vertex -202.927 -204.853 0 + vertex -202.726 -204.911 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -202.002 -204.998 0 + vertex -204.884 -202.827 0 + vertex -204.819 -203.026 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -202.002 -204.998 0 + vertex -202.521 -204.954 0 + vertex -202.314 -204.984 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -204.971 -202.418 0 + vertex -204.934 -202.624 0 + vertex -202.002 -204.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -202.314 -204.984 0 + vertex -202.105 -204.998 0 + vertex -202.002 -204.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -202.002 -204.998 0 + vertex 202 -205 0 + vertex 202.002 -204.998 0 + endloop + endfacet + facet normal 0 -0 1 + outer loop + vertex -202 -205 0 + vertex 202 -205 0 + vertex -202.002 -204.998 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -204.993 -202.209 0 + vertex -202.002 -204.998 0 + vertex -205 -202 0 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 202.105 -204.998 -3 + vertex 202.002 -204.998 0 + vertex 202.002 -204.998 -3 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 202.105 -204.998 -3 + vertex 202.105 -204.998 0 + vertex 202.002 -204.998 0 + endloop + endfacet + facet normal 0.0668359 -0.997764 0 + outer loop + vertex 202.314 -204.984 -3 + vertex 202.105 -204.998 0 + vertex 202.105 -204.998 -3 + endloop + endfacet + facet normal 0.0668359 -0.997764 0 + outer loop + vertex 202.314 -204.984 -3 + vertex 202.314 -204.984 0 + vertex 202.105 -204.998 0 + endloop + endfacet + facet normal 0.143429 -0.989661 0 + outer loop + vertex 202.521 -204.954 -3 + vertex 202.314 -204.984 0 + vertex 202.314 -204.984 -3 + endloop + endfacet + facet normal 0.143429 -0.989661 0 + outer loop + vertex 202.521 -204.954 -3 + vertex 202.521 -204.954 0 + vertex 202.314 -204.984 0 + endloop + endfacet + facet normal 0.205289 -0.978701 0 + outer loop + vertex 202.726 -204.911 -3 + vertex 202.521 -204.954 0 + vertex 202.521 -204.954 -3 + endloop + endfacet + facet normal 0.205289 -0.978701 0 + outer loop + vertex 202.726 -204.911 -3 + vertex 202.726 -204.911 0 + vertex 202.521 -204.954 0 + endloop + endfacet + facet normal 0.277246 -0.960799 0 + outer loop + vertex 202.927 -204.853 -3 + vertex 202.726 -204.911 0 + vertex 202.726 -204.911 -3 + endloop + endfacet + facet normal 0.277246 -0.960799 0 + outer loop + vertex 202.927 -204.853 -3 + vertex 202.927 -204.853 0 + vertex 202.726 -204.911 0 + endloop + endfacet + facet normal 0.339058 -0.940766 0 + outer loop + vertex 203.124 -204.782 -3 + vertex 202.927 -204.853 0 + vertex 202.927 -204.853 -3 + endloop + endfacet + facet normal 0.339058 -0.940766 0 + outer loop + vertex 203.124 -204.782 -3 + vertex 203.124 -204.782 0 + vertex 202.927 -204.853 0 + endloop + endfacet + facet normal 0.410563 -0.911832 0 + outer loop + vertex 203.315 -204.696 -3 + vertex 203.124 -204.782 0 + vertex 203.124 -204.782 -3 + endloop + endfacet + facet normal 0.410563 -0.911832 0 + outer loop + vertex 203.315 -204.696 -3 + vertex 203.315 -204.696 0 + vertex 203.124 -204.782 0 + endloop + endfacet + facet normal 0.468107 -0.883672 0 + outer loop + vertex 203.5 -204.598 -3 + vertex 203.315 -204.696 0 + vertex 203.315 -204.696 -3 + endloop + endfacet + facet normal 0.468107 -0.883672 0 + outer loop + vertex 203.5 -204.598 -3 + vertex 203.5 -204.598 0 + vertex 203.315 -204.696 0 + endloop + endfacet + facet normal 0.529142 -0.848533 0 + outer loop + vertex 203.678 -204.487 -3 + vertex 203.5 -204.598 0 + vertex 203.5 -204.598 -3 + endloop + endfacet + facet normal 0.529142 -0.848533 0 + outer loop + vertex 203.678 -204.487 -3 + vertex 203.678 -204.487 0 + vertex 203.5 -204.598 0 + endloop + endfacet + facet normal 0.588456 -0.808529 0 + outer loop + vertex 203.847 -204.364 -3 + vertex 203.678 -204.487 0 + vertex 203.678 -204.487 -3 + endloop + endfacet + facet normal 0.588456 -0.808529 0 + outer loop + vertex 203.847 -204.364 -3 + vertex 203.847 -204.364 0 + vertex 203.678 -204.487 0 + endloop + endfacet + facet normal 0.644871 -0.764291 0 + outer loop + vertex 204.007 -204.229 -3 + vertex 203.847 -204.364 0 + vertex 203.847 -204.364 -3 + endloop + endfacet + facet normal 0.644871 -0.764291 0 + outer loop + vertex 204.007 -204.229 -3 + vertex 204.007 -204.229 0 + vertex 203.847 -204.364 0 + endloop + endfacet + facet normal 0.692631 -0.721292 0 + outer loop + vertex 204.158 -204.084 -3 + vertex 204.007 -204.229 0 + vertex 204.007 -204.229 -3 + endloop + endfacet + facet normal 0.692631 -0.721292 0 + outer loop + vertex 204.158 -204.084 -3 + vertex 204.158 -204.084 0 + vertex 204.007 -204.229 0 + endloop + endfacet + facet normal 0.744242 -0.66791 0 + outer loop + vertex 204.298 -203.928 -3 + vertex 204.158 -204.084 0 + vertex 204.158 -204.084 -3 + endloop + endfacet + facet normal 0.744242 -0.66791 0 + outer loop + vertex 204.298 -203.928 -3 + vertex 204.298 -203.928 0 + vertex 204.158 -204.084 0 + endloop + endfacet + facet normal 0.787807 -0.615922 0 + outer loop + vertex 204.427 -203.763 -3 + vertex 204.298 -203.928 0 + vertex 204.298 -203.928 -3 + endloop + endfacet + facet normal 0.787807 -0.615922 0 + outer loop + vertex 204.427 -203.763 -3 + vertex 204.427 -203.763 0 + vertex 204.298 -203.928 0 + endloop + endfacet + facet normal 0.828349 -0.560213 0 + outer loop + vertex 204.544 -203.59 -3 + vertex 204.427 -203.763 0 + vertex 204.427 -203.763 -3 + endloop + endfacet + facet normal 0.828349 -0.560213 0 + outer loop + vertex 204.544 -203.59 -3 + vertex 204.544 -203.59 0 + vertex 204.427 -203.763 0 + endloop + endfacet + facet normal 0.866186 -0.499722 0 + outer loop + vertex 204.649 -203.408 -3 + vertex 204.544 -203.59 0 + vertex 204.544 -203.59 -3 + endloop + endfacet + facet normal 0.866186 -0.499722 0 + outer loop + vertex 204.649 -203.408 -3 + vertex 204.649 -203.408 0 + vertex 204.544 -203.59 0 + endloop + endfacet + facet normal 0.898217 -0.439553 0 + outer loop + vertex 204.741 -203.22 -3 + vertex 204.649 -203.408 0 + vertex 204.649 -203.408 -3 + endloop + endfacet + facet normal 0.898217 -0.439553 0 + outer loop + vertex 204.741 -203.22 -3 + vertex 204.741 -203.22 0 + vertex 204.649 -203.408 0 + endloop + endfacet + facet normal 0.927816 -0.373039 0 + outer loop + vertex 204.819 -203.026 -3 + vertex 204.741 -203.22 0 + vertex 204.741 -203.22 -3 + endloop + endfacet + facet normal 0.927816 -0.373039 0 + outer loop + vertex 204.819 -203.026 -3 + vertex 204.819 -203.026 0 + vertex 204.741 -203.22 0 + endloop + endfacet + facet normal 0.950577 -0.31049 0 + outer loop + vertex 204.884 -202.827 -3 + vertex 204.819 -203.026 0 + vertex 204.819 -203.026 -3 + endloop + endfacet + facet normal 0.950577 -0.31049 0 + outer loop + vertex 204.884 -202.827 -3 + vertex 204.884 -202.827 0 + vertex 204.819 -203.026 0 + endloop + endfacet + facet normal 0.970981 -0.239158 0 + outer loop + vertex 204.934 -202.624 -3 + vertex 204.884 -202.827 0 + vertex 204.884 -202.827 -3 + endloop + endfacet + facet normal 0.970981 -0.239158 0 + outer loop + vertex 204.934 -202.624 -3 + vertex 204.934 -202.624 0 + vertex 204.884 -202.827 0 + endloop + endfacet + facet normal 0.98425 -0.176783 0 + outer loop + vertex 204.971 -202.418 -3 + vertex 204.934 -202.624 0 + vertex 204.934 -202.624 -3 + endloop + endfacet + facet normal 0.98425 -0.176783 0 + outer loop + vertex 204.971 -202.418 -3 + vertex 204.971 -202.418 0 + vertex 204.934 -202.624 0 + endloop + endfacet + facet normal 0.994505 -0.104685 0 + outer loop + vertex 204.993 -202.209 -3 + vertex 204.971 -202.418 0 + vertex 204.971 -202.418 -3 + endloop + endfacet + facet normal 0.994505 -0.104685 0 + outer loop + vertex 204.993 -202.209 -3 + vertex 204.993 -202.209 0 + vertex 204.971 -202.418 0 + endloop + endfacet + facet normal 0.99944 -0.0334741 0 + outer loop + vertex 205 -202 -3 + vertex 204.993 -202.209 0 + vertex 204.993 -202.209 -3 + endloop + endfacet + facet normal 0.99944 -0.0334741 0 + outer loop + vertex 205 -202 -3 + vertex 205 -202 0 + vertex 204.993 -202.209 0 + endloop + endfacet + facet normal 1 0 0 + outer loop + vertex 205 202 -3 + vertex 205 -202 0 + vertex 205 -202 -3 + endloop + endfacet + facet normal 1 0 -0 + outer loop + vertex 205 202 -3 + vertex 205 202 0 + vertex 205 -202 0 + endloop + endfacet + facet normal 0.99944 0.0334741 0 + outer loop + vertex 204.993 202.209 -3 + vertex 205 202 0 + vertex 205 202 -3 + endloop + endfacet + facet normal 0.99944 0.0334741 -0 + outer loop + vertex 204.993 202.209 -3 + vertex 204.993 202.209 0 + vertex 205 202 0 + endloop + endfacet + facet normal 0.994505 0.104685 0 + outer loop + vertex 204.971 202.418 -3 + vertex 204.993 202.209 0 + vertex 204.993 202.209 -3 + endloop + endfacet + facet normal 0.994505 0.104685 -0 + outer loop + vertex 204.971 202.418 -3 + vertex 204.971 202.418 0 + vertex 204.993 202.209 0 + endloop + endfacet + facet normal 0.98425 0.176783 0 + outer loop + vertex 204.934 202.624 -3 + vertex 204.971 202.418 0 + vertex 204.971 202.418 -3 + endloop + endfacet + facet normal 0.98425 0.176783 -0 + outer loop + vertex 204.934 202.624 -3 + vertex 204.934 202.624 0 + vertex 204.971 202.418 0 + endloop + endfacet + facet normal 0.970981 0.239158 0 + outer loop + vertex 204.884 202.827 -3 + vertex 204.934 202.624 0 + vertex 204.934 202.624 -3 + endloop + endfacet + facet normal 0.970981 0.239158 -0 + outer loop + vertex 204.884 202.827 -3 + vertex 204.884 202.827 0 + vertex 204.934 202.624 0 + endloop + endfacet + facet normal 0.950577 0.31049 0 + outer loop + vertex 204.819 203.026 -3 + vertex 204.884 202.827 0 + vertex 204.884 202.827 -3 + endloop + endfacet + facet normal 0.950577 0.31049 -0 + outer loop + vertex 204.819 203.026 -3 + vertex 204.819 203.026 0 + vertex 204.884 202.827 0 + endloop + endfacet + facet normal 0.927816 0.373039 0 + outer loop + vertex 204.741 203.22 -3 + vertex 204.819 203.026 0 + vertex 204.819 203.026 -3 + endloop + endfacet + facet normal 0.927816 0.373039 -0 + outer loop + vertex 204.741 203.22 -3 + vertex 204.741 203.22 0 + vertex 204.819 203.026 0 + endloop + endfacet + facet normal 0.898217 0.439553 0 + outer loop + vertex 204.649 203.408 -3 + vertex 204.741 203.22 0 + vertex 204.741 203.22 -3 + endloop + endfacet + facet normal 0.898217 0.439553 -0 + outer loop + vertex 204.649 203.408 -3 + vertex 204.649 203.408 0 + vertex 204.741 203.22 0 + endloop + endfacet + facet normal 0.866186 0.499722 0 + outer loop + vertex 204.544 203.59 -3 + vertex 204.649 203.408 0 + vertex 204.649 203.408 -3 + endloop + endfacet + facet normal 0.866186 0.499722 -0 + outer loop + vertex 204.544 203.59 -3 + vertex 204.544 203.59 0 + vertex 204.649 203.408 0 + endloop + endfacet + facet normal 0.828349 0.560213 0 + outer loop + vertex 204.427 203.763 -3 + vertex 204.544 203.59 0 + vertex 204.544 203.59 -3 + endloop + endfacet + facet normal 0.828349 0.560213 -0 + outer loop + vertex 204.427 203.763 -3 + vertex 204.427 203.763 0 + vertex 204.544 203.59 0 + endloop + endfacet + facet normal 0.787807 0.615922 0 + outer loop + vertex 204.298 203.928 -3 + vertex 204.427 203.763 0 + vertex 204.427 203.763 -3 + endloop + endfacet + facet normal 0.787807 0.615922 -0 + outer loop + vertex 204.298 203.928 -3 + vertex 204.298 203.928 0 + vertex 204.427 203.763 0 + endloop + endfacet + facet normal 0.744242 0.66791 0 + outer loop + vertex 204.158 204.084 -3 + vertex 204.298 203.928 0 + vertex 204.298 203.928 -3 + endloop + endfacet + facet normal 0.744242 0.66791 -0 + outer loop + vertex 204.158 204.084 -3 + vertex 204.158 204.084 0 + vertex 204.298 203.928 0 + endloop + endfacet + facet normal 0.692631 0.721292 0 + outer loop + vertex 204.007 204.229 -3 + vertex 204.158 204.084 0 + vertex 204.158 204.084 -3 + endloop + endfacet + facet normal 0.692631 0.721292 -0 + outer loop + vertex 204.007 204.229 -3 + vertex 204.007 204.229 0 + vertex 204.158 204.084 0 + endloop + endfacet + facet normal 0.644871 0.764291 0 + outer loop + vertex 203.847 204.364 -3 + vertex 204.007 204.229 0 + vertex 204.007 204.229 -3 + endloop + endfacet + facet normal 0.644871 0.764291 -0 + outer loop + vertex 203.847 204.364 -3 + vertex 203.847 204.364 0 + vertex 204.007 204.229 0 + endloop + endfacet + facet normal 0.588456 0.808529 0 + outer loop + vertex 203.678 204.487 -3 + vertex 203.847 204.364 0 + vertex 203.847 204.364 -3 + endloop + endfacet + facet normal 0.588456 0.808529 -0 + outer loop + vertex 203.678 204.487 -3 + vertex 203.678 204.487 0 + vertex 203.847 204.364 0 + endloop + endfacet + facet normal 0.529142 0.848533 0 + outer loop + vertex 203.5 204.598 -3 + vertex 203.678 204.487 0 + vertex 203.678 204.487 -3 + endloop + endfacet + facet normal 0.529142 0.848533 -0 + outer loop + vertex 203.5 204.598 -3 + vertex 203.5 204.598 0 + vertex 203.678 204.487 0 + endloop + endfacet + facet normal 0.468107 0.883672 0 + outer loop + vertex 203.315 204.696 -3 + vertex 203.5 204.598 0 + vertex 203.5 204.598 -3 + endloop + endfacet + facet normal 0.468107 0.883672 -0 + outer loop + vertex 203.315 204.696 -3 + vertex 203.315 204.696 0 + vertex 203.5 204.598 0 + endloop + endfacet + facet normal 0.410563 0.911832 0 + outer loop + vertex 203.124 204.782 -3 + vertex 203.315 204.696 0 + vertex 203.315 204.696 -3 + endloop + endfacet + facet normal 0.410563 0.911832 -0 + outer loop + vertex 203.124 204.782 -3 + vertex 203.124 204.782 0 + vertex 203.315 204.696 0 + endloop + endfacet + facet normal 0.339058 0.940766 0 + outer loop + vertex 202.927 204.853 -3 + vertex 203.124 204.782 0 + vertex 203.124 204.782 -3 + endloop + endfacet + facet normal 0.339058 0.940766 -0 + outer loop + vertex 202.927 204.853 -3 + vertex 202.927 204.853 0 + vertex 203.124 204.782 0 + endloop + endfacet + facet normal 0.277246 0.960799 0 + outer loop + vertex 202.726 204.911 -3 + vertex 202.927 204.853 0 + vertex 202.927 204.853 -3 + endloop + endfacet + facet normal 0.277246 0.960799 -0 + outer loop + vertex 202.726 204.911 -3 + vertex 202.726 204.911 0 + vertex 202.927 204.853 0 + endloop + endfacet + facet normal 0.205289 0.978701 0 + outer loop + vertex 202.521 204.954 -3 + vertex 202.726 204.911 0 + vertex 202.726 204.911 -3 + endloop + endfacet + facet normal 0.205289 0.978701 -0 + outer loop + vertex 202.521 204.954 -3 + vertex 202.521 204.954 0 + vertex 202.726 204.911 0 + endloop + endfacet + facet normal 0.143429 0.989661 0 + outer loop + vertex 202.314 204.984 -3 + vertex 202.521 204.954 0 + vertex 202.521 204.954 -3 + endloop + endfacet + facet normal 0.143429 0.989661 -0 + outer loop + vertex 202.314 204.984 -3 + vertex 202.314 204.984 0 + vertex 202.521 204.954 0 + endloop + endfacet + facet normal 0.0668359 0.997764 0 + outer loop + vertex 202.105 204.998 -3 + vertex 202.314 204.984 0 + vertex 202.314 204.984 -3 + endloop + endfacet + facet normal 0.0668359 0.997764 -0 + outer loop + vertex 202.105 204.998 -3 + vertex 202.105 204.998 0 + vertex 202.314 204.984 0 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex 202.002 204.998 -3 + vertex 202.105 204.998 0 + vertex 202.105 204.998 -3 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex 202.002 204.998 -3 + vertex 202.002 204.998 0 + vertex 202.105 204.998 0 + endloop + endfacet + facet normal 0.707107 0.707107 0 + outer loop + vertex 202 205 -3 + vertex 202.002 204.998 0 + vertex 202.002 204.998 -3 + endloop + endfacet + facet normal 0.707107 0.707107 -0 + outer loop + vertex 202 205 -3 + vertex 202 205 0 + vertex 202.002 204.998 0 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -202 205 -3 + vertex 202 205 0 + vertex 202 205 -3 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -202 205 -3 + vertex -202 205 0 + vertex 202 205 0 + endloop + endfacet + facet normal -0.707107 0.707107 0 + outer loop + vertex -202.002 204.998 -3 + vertex -202 205 0 + vertex -202 205 -3 + endloop + endfacet + facet normal -0.707107 0.707107 0 + outer loop + vertex -202.002 204.998 -3 + vertex -202.002 204.998 0 + vertex -202 205 0 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -202.105 204.998 -3 + vertex -202.002 204.998 0 + vertex -202.002 204.998 -3 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -202.105 204.998 -3 + vertex -202.105 204.998 0 + vertex -202.002 204.998 0 + endloop + endfacet + facet normal -0.0668359 0.997764 0 + outer loop + vertex -202.314 204.984 -3 + vertex -202.105 204.998 0 + vertex -202.105 204.998 -3 + endloop + endfacet + facet normal -0.0668359 0.997764 0 + outer loop + vertex -202.314 204.984 -3 + vertex -202.314 204.984 0 + vertex -202.105 204.998 0 + endloop + endfacet + facet normal -0.143429 0.989661 0 + outer loop + vertex -202.521 204.954 -3 + vertex -202.314 204.984 0 + vertex -202.314 204.984 -3 + endloop + endfacet + facet normal -0.143429 0.989661 0 + outer loop + vertex -202.521 204.954 -3 + vertex -202.521 204.954 0 + vertex -202.314 204.984 0 + endloop + endfacet + facet normal -0.205289 0.978701 0 + outer loop + vertex -202.726 204.911 -3 + vertex -202.521 204.954 0 + vertex -202.521 204.954 -3 + endloop + endfacet + facet normal -0.205289 0.978701 0 + outer loop + vertex -202.726 204.911 -3 + vertex -202.726 204.911 0 + vertex -202.521 204.954 0 + endloop + endfacet + facet normal -0.277246 0.960799 0 + outer loop + vertex -202.927 204.853 -3 + vertex -202.726 204.911 0 + vertex -202.726 204.911 -3 + endloop + endfacet + facet normal -0.277246 0.960799 0 + outer loop + vertex -202.927 204.853 -3 + vertex -202.927 204.853 0 + vertex -202.726 204.911 0 + endloop + endfacet + facet normal -0.339058 0.940766 0 + outer loop + vertex -203.124 204.782 -3 + vertex -202.927 204.853 0 + vertex -202.927 204.853 -3 + endloop + endfacet + facet normal -0.339058 0.940766 0 + outer loop + vertex -203.124 204.782 -3 + vertex -203.124 204.782 0 + vertex -202.927 204.853 0 + endloop + endfacet + facet normal -0.410563 0.911832 0 + outer loop + vertex -203.315 204.696 -3 + vertex -203.124 204.782 0 + vertex -203.124 204.782 -3 + endloop + endfacet + facet normal -0.410563 0.911832 0 + outer loop + vertex -203.315 204.696 -3 + vertex -203.315 204.696 0 + vertex -203.124 204.782 0 + endloop + endfacet + facet normal -0.468107 0.883672 0 + outer loop + vertex -203.5 204.598 -3 + vertex -203.315 204.696 0 + vertex -203.315 204.696 -3 + endloop + endfacet + facet normal -0.468107 0.883672 0 + outer loop + vertex -203.5 204.598 -3 + vertex -203.5 204.598 0 + vertex -203.315 204.696 0 + endloop + endfacet + facet normal -0.529142 0.848533 0 + outer loop + vertex -203.678 204.487 -3 + vertex -203.5 204.598 0 + vertex -203.5 204.598 -3 + endloop + endfacet + facet normal -0.529142 0.848533 0 + outer loop + vertex -203.678 204.487 -3 + vertex -203.678 204.487 0 + vertex -203.5 204.598 0 + endloop + endfacet + facet normal -0.588456 0.808529 0 + outer loop + vertex -203.847 204.364 -3 + vertex -203.678 204.487 0 + vertex -203.678 204.487 -3 + endloop + endfacet + facet normal -0.588456 0.808529 0 + outer loop + vertex -203.847 204.364 -3 + vertex -203.847 204.364 0 + vertex -203.678 204.487 0 + endloop + endfacet + facet normal -0.644871 0.764291 0 + outer loop + vertex -204.007 204.229 -3 + vertex -203.847 204.364 0 + vertex -203.847 204.364 -3 + endloop + endfacet + facet normal -0.644871 0.764291 0 + outer loop + vertex -204.007 204.229 -3 + vertex -204.007 204.229 0 + vertex -203.847 204.364 0 + endloop + endfacet + facet normal -0.692631 0.721292 0 + outer loop + vertex -204.158 204.084 -3 + vertex -204.007 204.229 0 + vertex -204.007 204.229 -3 + endloop + endfacet + facet normal -0.692631 0.721292 0 + outer loop + vertex -204.158 204.084 -3 + vertex -204.158 204.084 0 + vertex -204.007 204.229 0 + endloop + endfacet + facet normal -0.744242 0.66791 0 + outer loop + vertex -204.298 203.928 -3 + vertex -204.158 204.084 0 + vertex -204.158 204.084 -3 + endloop + endfacet + facet normal -0.744242 0.66791 0 + outer loop + vertex -204.298 203.928 -3 + vertex -204.298 203.928 0 + vertex -204.158 204.084 0 + endloop + endfacet + facet normal -0.787807 0.615922 0 + outer loop + vertex -204.427 203.763 -3 + vertex -204.298 203.928 0 + vertex -204.298 203.928 -3 + endloop + endfacet + facet normal -0.787807 0.615922 0 + outer loop + vertex -204.427 203.763 -3 + vertex -204.427 203.763 0 + vertex -204.298 203.928 0 + endloop + endfacet + facet normal -0.828349 0.560213 0 + outer loop + vertex -204.544 203.59 -3 + vertex -204.427 203.763 0 + vertex -204.427 203.763 -3 + endloop + endfacet + facet normal -0.828349 0.560213 0 + outer loop + vertex -204.544 203.59 -3 + vertex -204.544 203.59 0 + vertex -204.427 203.763 0 + endloop + endfacet + facet normal -0.866186 0.499722 0 + outer loop + vertex -204.649 203.408 -3 + vertex -204.544 203.59 0 + vertex -204.544 203.59 -3 + endloop + endfacet + facet normal -0.866186 0.499722 0 + outer loop + vertex -204.649 203.408 -3 + vertex -204.649 203.408 0 + vertex -204.544 203.59 0 + endloop + endfacet + facet normal -0.898217 0.439553 0 + outer loop + vertex -204.741 203.22 -3 + vertex -204.649 203.408 0 + vertex -204.649 203.408 -3 + endloop + endfacet + facet normal -0.898217 0.439553 0 + outer loop + vertex -204.741 203.22 -3 + vertex -204.741 203.22 0 + vertex -204.649 203.408 0 + endloop + endfacet + facet normal -0.927816 0.373039 0 + outer loop + vertex -204.819 203.026 -3 + vertex -204.741 203.22 0 + vertex -204.741 203.22 -3 + endloop + endfacet + facet normal -0.927816 0.373039 0 + outer loop + vertex -204.819 203.026 -3 + vertex -204.819 203.026 0 + vertex -204.741 203.22 0 + endloop + endfacet + facet normal -0.950577 0.31049 0 + outer loop + vertex -204.884 202.827 -3 + vertex -204.819 203.026 0 + vertex -204.819 203.026 -3 + endloop + endfacet + facet normal -0.950577 0.31049 0 + outer loop + vertex -204.884 202.827 -3 + vertex -204.884 202.827 0 + vertex -204.819 203.026 0 + endloop + endfacet + facet normal -0.970981 0.239158 0 + outer loop + vertex -204.934 202.624 -3 + vertex -204.884 202.827 0 + vertex -204.884 202.827 -3 + endloop + endfacet + facet normal -0.970981 0.239158 0 + outer loop + vertex -204.934 202.624 -3 + vertex -204.934 202.624 0 + vertex -204.884 202.827 0 + endloop + endfacet + facet normal -0.98425 0.176783 0 + outer loop + vertex -204.971 202.418 -3 + vertex -204.934 202.624 0 + vertex -204.934 202.624 -3 + endloop + endfacet + facet normal -0.98425 0.176783 0 + outer loop + vertex -204.971 202.418 -3 + vertex -204.971 202.418 0 + vertex -204.934 202.624 0 + endloop + endfacet + facet normal -0.994505 0.104685 0 + outer loop + vertex -204.993 202.209 -3 + vertex -204.971 202.418 0 + vertex -204.971 202.418 -3 + endloop + endfacet + facet normal -0.994505 0.104685 0 + outer loop + vertex -204.993 202.209 -3 + vertex -204.993 202.209 0 + vertex -204.971 202.418 0 + endloop + endfacet + facet normal -0.99944 0.0334741 0 + outer loop + vertex -205 202 -3 + vertex -204.993 202.209 0 + vertex -204.993 202.209 -3 + endloop + endfacet + facet normal -0.99944 0.0334741 0 + outer loop + vertex -205 202 -3 + vertex -205 202 0 + vertex -204.993 202.209 0 + endloop + endfacet + facet normal -1 0 0 + outer loop + vertex -205 -202 -3 + vertex -205 202 0 + vertex -205 202 -3 + endloop + endfacet + facet normal -1 0 0 + outer loop + vertex -205 -202 -3 + vertex -205 -202 0 + vertex -205 202 0 + endloop + endfacet + facet normal -0.99944 -0.0334741 0 + outer loop + vertex -204.993 -202.209 -3 + vertex -205 -202 0 + vertex -205 -202 -3 + endloop + endfacet + facet normal -0.99944 -0.0334741 0 + outer loop + vertex -204.993 -202.209 -3 + vertex -204.993 -202.209 0 + vertex -205 -202 0 + endloop + endfacet + facet normal -0.994505 -0.104685 0 + outer loop + vertex -204.971 -202.418 -3 + vertex -204.993 -202.209 0 + vertex -204.993 -202.209 -3 + endloop + endfacet + facet normal -0.994505 -0.104685 0 + outer loop + vertex -204.971 -202.418 -3 + vertex -204.971 -202.418 0 + vertex -204.993 -202.209 0 + endloop + endfacet + facet normal -0.98425 -0.176783 0 + outer loop + vertex -204.934 -202.624 -3 + vertex -204.971 -202.418 0 + vertex -204.971 -202.418 -3 + endloop + endfacet + facet normal -0.98425 -0.176783 0 + outer loop + vertex -204.934 -202.624 -3 + vertex -204.934 -202.624 0 + vertex -204.971 -202.418 0 + endloop + endfacet + facet normal -0.970981 -0.239158 0 + outer loop + vertex -204.884 -202.827 -3 + vertex -204.934 -202.624 0 + vertex -204.934 -202.624 -3 + endloop + endfacet + facet normal -0.970981 -0.239158 0 + outer loop + vertex -204.884 -202.827 -3 + vertex -204.884 -202.827 0 + vertex -204.934 -202.624 0 + endloop + endfacet + facet normal -0.950577 -0.31049 0 + outer loop + vertex -204.819 -203.026 -3 + vertex -204.884 -202.827 0 + vertex -204.884 -202.827 -3 + endloop + endfacet + facet normal -0.950577 -0.31049 0 + outer loop + vertex -204.819 -203.026 -3 + vertex -204.819 -203.026 0 + vertex -204.884 -202.827 0 + endloop + endfacet + facet normal -0.927816 -0.373039 0 + outer loop + vertex -204.741 -203.22 -3 + vertex -204.819 -203.026 0 + vertex -204.819 -203.026 -3 + endloop + endfacet + facet normal -0.927816 -0.373039 0 + outer loop + vertex -204.741 -203.22 -3 + vertex -204.741 -203.22 0 + vertex -204.819 -203.026 0 + endloop + endfacet + facet normal -0.898217 -0.439553 0 + outer loop + vertex -204.649 -203.408 -3 + vertex -204.741 -203.22 0 + vertex -204.741 -203.22 -3 + endloop + endfacet + facet normal -0.898217 -0.439553 0 + outer loop + vertex -204.649 -203.408 -3 + vertex -204.649 -203.408 0 + vertex -204.741 -203.22 0 + endloop + endfacet + facet normal -0.866186 -0.499722 0 + outer loop + vertex -204.544 -203.59 -3 + vertex -204.649 -203.408 0 + vertex -204.649 -203.408 -3 + endloop + endfacet + facet normal -0.866186 -0.499722 0 + outer loop + vertex -204.544 -203.59 -3 + vertex -204.544 -203.59 0 + vertex -204.649 -203.408 0 + endloop + endfacet + facet normal -0.828349 -0.560213 0 + outer loop + vertex -204.427 -203.763 -3 + vertex -204.544 -203.59 0 + vertex -204.544 -203.59 -3 + endloop + endfacet + facet normal -0.828349 -0.560213 0 + outer loop + vertex -204.427 -203.763 -3 + vertex -204.427 -203.763 0 + vertex -204.544 -203.59 0 + endloop + endfacet + facet normal -0.787807 -0.615922 0 + outer loop + vertex -204.298 -203.928 -3 + vertex -204.427 -203.763 0 + vertex -204.427 -203.763 -3 + endloop + endfacet + facet normal -0.787807 -0.615922 0 + outer loop + vertex -204.298 -203.928 -3 + vertex -204.298 -203.928 0 + vertex -204.427 -203.763 0 + endloop + endfacet + facet normal -0.744242 -0.66791 0 + outer loop + vertex -204.158 -204.084 -3 + vertex -204.298 -203.928 0 + vertex -204.298 -203.928 -3 + endloop + endfacet + facet normal -0.744242 -0.66791 0 + outer loop + vertex -204.158 -204.084 -3 + vertex -204.158 -204.084 0 + vertex -204.298 -203.928 0 + endloop + endfacet + facet normal -0.692631 -0.721292 0 + outer loop + vertex -204.007 -204.229 -3 + vertex -204.158 -204.084 0 + vertex -204.158 -204.084 -3 + endloop + endfacet + facet normal -0.692631 -0.721292 0 + outer loop + vertex -204.007 -204.229 -3 + vertex -204.007 -204.229 0 + vertex -204.158 -204.084 0 + endloop + endfacet + facet normal -0.644871 -0.764291 0 + outer loop + vertex -203.847 -204.364 -3 + vertex -204.007 -204.229 0 + vertex -204.007 -204.229 -3 + endloop + endfacet + facet normal -0.644871 -0.764291 0 + outer loop + vertex -203.847 -204.364 -3 + vertex -203.847 -204.364 0 + vertex -204.007 -204.229 0 + endloop + endfacet + facet normal -0.588456 -0.808529 0 + outer loop + vertex -203.678 -204.487 -3 + vertex -203.847 -204.364 0 + vertex -203.847 -204.364 -3 + endloop + endfacet + facet normal -0.588456 -0.808529 0 + outer loop + vertex -203.678 -204.487 -3 + vertex -203.678 -204.487 0 + vertex -203.847 -204.364 0 + endloop + endfacet + facet normal -0.529142 -0.848533 0 + outer loop + vertex -203.5 -204.598 -3 + vertex -203.678 -204.487 0 + vertex -203.678 -204.487 -3 + endloop + endfacet + facet normal -0.529142 -0.848533 0 + outer loop + vertex -203.5 -204.598 -3 + vertex -203.5 -204.598 0 + vertex -203.678 -204.487 0 + endloop + endfacet + facet normal -0.468107 -0.883672 0 + outer loop + vertex -203.315 -204.696 -3 + vertex -203.5 -204.598 0 + vertex -203.5 -204.598 -3 + endloop + endfacet + facet normal -0.468107 -0.883672 0 + outer loop + vertex -203.315 -204.696 -3 + vertex -203.315 -204.696 0 + vertex -203.5 -204.598 0 + endloop + endfacet + facet normal -0.410563 -0.911832 0 + outer loop + vertex -203.124 -204.782 -3 + vertex -203.315 -204.696 0 + vertex -203.315 -204.696 -3 + endloop + endfacet + facet normal -0.410563 -0.911832 0 + outer loop + vertex -203.124 -204.782 -3 + vertex -203.124 -204.782 0 + vertex -203.315 -204.696 0 + endloop + endfacet + facet normal -0.339058 -0.940766 0 + outer loop + vertex -202.927 -204.853 -3 + vertex -203.124 -204.782 0 + vertex -203.124 -204.782 -3 + endloop + endfacet + facet normal -0.339058 -0.940766 0 + outer loop + vertex -202.927 -204.853 -3 + vertex -202.927 -204.853 0 + vertex -203.124 -204.782 0 + endloop + endfacet + facet normal -0.277246 -0.960799 0 + outer loop + vertex -202.726 -204.911 -3 + vertex -202.927 -204.853 0 + vertex -202.927 -204.853 -3 + endloop + endfacet + facet normal -0.277246 -0.960799 0 + outer loop + vertex -202.726 -204.911 -3 + vertex -202.726 -204.911 0 + vertex -202.927 -204.853 0 + endloop + endfacet + facet normal -0.205289 -0.978701 0 + outer loop + vertex -202.521 -204.954 -3 + vertex -202.726 -204.911 0 + vertex -202.726 -204.911 -3 + endloop + endfacet + facet normal -0.205289 -0.978701 0 + outer loop + vertex -202.521 -204.954 -3 + vertex -202.521 -204.954 0 + vertex -202.726 -204.911 0 + endloop + endfacet + facet normal -0.143429 -0.989661 0 + outer loop + vertex -202.314 -204.984 -3 + vertex -202.521 -204.954 0 + vertex -202.521 -204.954 -3 + endloop + endfacet + facet normal -0.143429 -0.989661 0 + outer loop + vertex -202.314 -204.984 -3 + vertex -202.314 -204.984 0 + vertex -202.521 -204.954 0 + endloop + endfacet + facet normal -0.0668359 -0.997764 0 + outer loop + vertex -202.105 -204.998 -3 + vertex -202.314 -204.984 0 + vertex -202.314 -204.984 -3 + endloop + endfacet + facet normal -0.0668359 -0.997764 0 + outer loop + vertex -202.105 -204.998 -3 + vertex -202.105 -204.998 0 + vertex -202.314 -204.984 0 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -202.002 -204.998 -3 + vertex -202.105 -204.998 0 + vertex -202.105 -204.998 -3 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -202.002 -204.998 -3 + vertex -202.002 -204.998 0 + vertex -202.105 -204.998 0 + endloop + endfacet + facet normal -0.707107 -0.707107 0 + outer loop + vertex -202 -205 -3 + vertex -202.002 -204.998 0 + vertex -202.002 -204.998 -3 + endloop + endfacet + facet normal -0.707107 -0.707107 0 + outer loop + vertex -202 -205 -3 + vertex -202 -205 0 + vertex -202.002 -204.998 0 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 202 -205 -3 + vertex -202 -205 0 + vertex -202 -205 -3 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 202 -205 -3 + vertex 202 -205 0 + vertex -202 -205 0 + endloop + endfacet + facet normal 0.707107 -0.707107 0 + outer loop + vertex 202.002 -204.998 -3 + vertex 202 -205 0 + vertex 202 -205 -3 + endloop + endfacet + facet normal 0.707107 -0.707107 0 + outer loop + vertex 202.002 -204.998 -3 + vertex 202.002 -204.998 0 + vertex 202 -205 0 + endloop + endfacet +endsolid OpenSCAD_Model diff --git a/resources/profiles/Creality/cr10s5.svg b/resources/profiles/Creality/cr10s5.svg new file mode 100644 index 0000000000..1dfca17dc2 --- /dev/null +++ b/resources/profiles/Creality/cr10s5.svg @@ -0,0 +1,4 @@ + + + + diff --git a/resources/profiles/Creality/cr10s5_bed.stl b/resources/profiles/Creality/cr10s5_bed.stl new file mode 100644 index 0000000000..5b9acaf104 --- /dev/null +++ b/resources/profiles/Creality/cr10s5_bed.stl @@ -0,0 +1,2774 @@ +solid OpenSCAD_Model + facet normal 0 0 -1 + outer loop + vertex 252.105 -254.998 -3 + vertex 252.002 -254.998 -3 + vertex 252.314 -254.984 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 252.314 -254.984 -3 + vertex 252.002 -254.998 -3 + vertex 252.521 -254.954 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 255 -252 -3 + vertex 252.002 -254.998 -3 + vertex 252.002 254.998 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 252.521 -254.954 -3 + vertex 252.002 -254.998 -3 + vertex 252.726 -254.911 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 252.726 -254.911 -3 + vertex 252.002 -254.998 -3 + vertex 252.927 -254.853 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 252.927 -254.853 -3 + vertex 252.002 -254.998 -3 + vertex 253.124 -254.782 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 253.124 -254.782 -3 + vertex 252.002 -254.998 -3 + vertex 253.315 -254.696 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 253.315 -254.696 -3 + vertex 252.002 -254.998 -3 + vertex 253.5 -254.598 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 253.5 -254.598 -3 + vertex 252.002 -254.998 -3 + vertex 253.678 -254.487 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 253.678 -254.487 -3 + vertex 252.002 -254.998 -3 + vertex 253.847 -254.364 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 253.847 -254.364 -3 + vertex 252.002 -254.998 -3 + vertex 254.007 -254.229 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 254.007 -254.229 -3 + vertex 252.002 -254.998 -3 + vertex 254.158 -254.084 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 254.158 -254.084 -3 + vertex 252.002 -254.998 -3 + vertex 254.298 -253.928 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 254.298 -253.928 -3 + vertex 252.002 -254.998 -3 + vertex 254.427 -253.763 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 254.427 -253.763 -3 + vertex 252.002 -254.998 -3 + vertex 254.544 -253.59 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 254.544 -253.59 -3 + vertex 252.002 -254.998 -3 + vertex 254.649 -253.408 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 254.649 -253.408 -3 + vertex 252.002 -254.998 -3 + vertex 254.741 -253.22 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 254.741 -253.22 -3 + vertex 252.002 -254.998 -3 + vertex 254.819 -253.026 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 254.819 -253.026 -3 + vertex 252.002 -254.998 -3 + vertex 254.884 -252.827 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 254.884 -252.827 -3 + vertex 252.002 -254.998 -3 + vertex 254.934 -252.624 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 254.934 -252.624 -3 + vertex 252.002 -254.998 -3 + vertex 254.971 -252.418 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 254.971 -252.418 -3 + vertex 252.002 -254.998 -3 + vertex 254.993 -252.209 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 254.993 -252.209 -3 + vertex 252.002 -254.998 -3 + vertex 255 -252 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 255 -252 -3 + vertex 252.002 254.998 -3 + vertex 255 252 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 252.002 254.998 -3 + vertex 254.971 252.418 -3 + vertex 254.993 252.209 -3 + endloop + endfacet + facet normal -0 -0 -1 + outer loop + vertex 254.884 252.827 -3 + vertex 254.934 252.624 -3 + vertex 252.002 254.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 254.741 253.22 -3 + vertex 252.002 254.998 -3 + vertex 254.649 253.408 -3 + endloop + endfacet + facet normal -0 -0 -1 + outer loop + vertex 254.741 253.22 -3 + vertex 254.819 253.026 -3 + vertex 252.002 254.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 252.002 254.998 -3 + vertex 254.007 254.229 -3 + vertex 254.158 254.084 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 254.427 253.763 -3 + vertex 252.002 254.998 -3 + vertex 254.298 253.928 -3 + endloop + endfacet + facet normal -0 -0 -1 + outer loop + vertex 254.427 253.763 -3 + vertex 254.544 253.59 -3 + vertex 252.002 254.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 254.298 253.928 -3 + vertex 252.002 254.998 -3 + vertex 254.158 254.084 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 252.002 254.998 -3 + vertex 252.927 254.853 -3 + vertex 253.124 254.782 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 253.847 254.364 -3 + vertex 252.002 254.998 -3 + vertex 253.678 254.487 -3 + endloop + endfacet + facet normal -0 -0 -1 + outer loop + vertex 253.847 254.364 -3 + vertex 254.007 254.229 -3 + vertex 252.002 254.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 253.678 254.487 -3 + vertex 252.002 254.998 -3 + vertex 253.5 254.598 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 253.5 254.598 -3 + vertex 252.002 254.998 -3 + vertex 253.315 254.696 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 253.315 254.696 -3 + vertex 252.002 254.998 -3 + vertex 253.124 254.782 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 254.649 253.408 -3 + vertex 252.002 254.998 -3 + vertex 254.544 253.59 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 252.726 254.911 -3 + vertex 252.002 254.998 -3 + vertex 252.521 254.954 -3 + endloop + endfacet + facet normal -0 -0 -1 + outer loop + vertex 252.726 254.911 -3 + vertex 252.927 254.853 -3 + vertex 252.002 254.998 -3 + endloop + endfacet + facet normal -0 -0 -1 + outer loop + vertex 254.819 253.026 -3 + vertex 254.884 252.827 -3 + vertex 252.002 254.998 -3 + endloop + endfacet + facet normal -0 -0 -1 + outer loop + vertex 252.314 254.984 -3 + vertex 252.521 254.954 -3 + vertex 252.002 254.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 252.002 254.998 -3 + vertex 254.934 252.624 -3 + vertex 254.971 252.418 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 252.002 254.998 -3 + vertex 252.105 254.998 -3 + vertex 252.314 254.984 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 255 252 -3 + vertex 252.002 254.998 -3 + vertex 254.993 252.209 -3 + endloop + endfacet + facet normal 0 -0 -1 + outer loop + vertex -252 255 -3 + vertex 252 255 -3 + vertex -252.002 254.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -252.002 254.998 -3 + vertex 252 255 -3 + vertex 252.002 254.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 252.002 -254.998 -3 + vertex -252.002 254.998 -3 + vertex 252.002 254.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -255 -252 -3 + vertex -255 252 -3 + vertex -252.002 -254.998 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex -252.002 254.998 -3 + vertex -252.314 254.984 -3 + vertex -252.105 254.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -252.002 254.998 -3 + vertex -252.521 254.954 -3 + vertex -252.314 254.984 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -252.002 254.998 -3 + vertex -252.726 254.911 -3 + vertex -252.521 254.954 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -252.002 254.998 -3 + vertex -252.927 254.853 -3 + vertex -252.726 254.911 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -252.002 254.998 -3 + vertex -253.124 254.782 -3 + vertex -252.927 254.853 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -252.002 254.998 -3 + vertex -253.315 254.696 -3 + vertex -253.124 254.782 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -252.002 254.998 -3 + vertex -253.5 254.598 -3 + vertex -253.315 254.696 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -252.002 254.998 -3 + vertex -253.678 254.487 -3 + vertex -253.5 254.598 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -252.002 254.998 -3 + vertex -253.847 254.364 -3 + vertex -253.678 254.487 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -252.002 254.998 -3 + vertex -254.007 254.229 -3 + vertex -253.847 254.364 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -252.002 254.998 -3 + vertex -254.158 254.084 -3 + vertex -254.007 254.229 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -252.002 254.998 -3 + vertex -254.298 253.928 -3 + vertex -254.158 254.084 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -252.002 254.998 -3 + vertex -254.427 253.763 -3 + vertex -254.298 253.928 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -252.002 254.998 -3 + vertex -254.544 253.59 -3 + vertex -254.427 253.763 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -252.002 254.998 -3 + vertex -254.649 253.408 -3 + vertex -254.544 253.59 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -252.002 254.998 -3 + vertex -254.741 253.22 -3 + vertex -254.649 253.408 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -252.002 254.998 -3 + vertex -254.819 253.026 -3 + vertex -254.741 253.22 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -252.002 254.998 -3 + vertex -254.884 252.827 -3 + vertex -254.819 253.026 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -252.002 254.998 -3 + vertex -254.934 252.624 -3 + vertex -254.884 252.827 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -252.002 254.998 -3 + vertex -254.971 252.418 -3 + vertex -254.934 252.624 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -252.002 254.998 -3 + vertex -254.993 252.209 -3 + vertex -254.971 252.418 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -252.002 254.998 -3 + vertex -255 252 -3 + vertex -254.993 252.209 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -252.002 -254.998 -3 + vertex -255 252 -3 + vertex -252.002 254.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 252.002 -254.998 -3 + vertex -252.002 -254.998 -3 + vertex -252.002 254.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -252.002 -254.998 -3 + vertex -254.971 -252.418 -3 + vertex -254.993 -252.209 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -254.884 -252.827 -3 + vertex -254.934 -252.624 -3 + vertex -252.002 -254.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -254.741 -253.22 -3 + vertex -252.002 -254.998 -3 + vertex -254.649 -253.408 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -254.741 -253.22 -3 + vertex -254.819 -253.026 -3 + vertex -252.002 -254.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -252.002 -254.998 -3 + vertex -254.007 -254.229 -3 + vertex -254.158 -254.084 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -254.427 -253.763 -3 + vertex -252.002 -254.998 -3 + vertex -254.298 -253.928 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -254.427 -253.763 -3 + vertex -254.544 -253.59 -3 + vertex -252.002 -254.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -254.298 -253.928 -3 + vertex -252.002 -254.998 -3 + vertex -254.158 -254.084 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -252.002 -254.998 -3 + vertex -252.927 -254.853 -3 + vertex -253.124 -254.782 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -253.847 -254.364 -3 + vertex -252.002 -254.998 -3 + vertex -253.678 -254.487 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -253.847 -254.364 -3 + vertex -254.007 -254.229 -3 + vertex -252.002 -254.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -253.678 -254.487 -3 + vertex -252.002 -254.998 -3 + vertex -253.5 -254.598 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -253.5 -254.598 -3 + vertex -252.002 -254.998 -3 + vertex -253.315 -254.696 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -253.315 -254.696 -3 + vertex -252.002 -254.998 -3 + vertex -253.124 -254.782 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -254.649 -253.408 -3 + vertex -252.002 -254.998 -3 + vertex -254.544 -253.59 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -252.726 -254.911 -3 + vertex -252.002 -254.998 -3 + vertex -252.521 -254.954 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -252.726 -254.911 -3 + vertex -252.927 -254.853 -3 + vertex -252.002 -254.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -254.819 -253.026 -3 + vertex -254.884 -252.827 -3 + vertex -252.002 -254.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -252.314 -254.984 -3 + vertex -252.521 -254.954 -3 + vertex -252.002 -254.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -252.002 -254.998 -3 + vertex -254.934 -252.624 -3 + vertex -254.971 -252.418 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -252.002 -254.998 -3 + vertex -252.105 -254.998 -3 + vertex -252.314 -254.984 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 252.002 -254.998 -3 + vertex 252 -255 -3 + vertex -252.002 -254.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -252.002 -254.998 -3 + vertex 252 -255 -3 + vertex -252 -255 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -255 -252 -3 + vertex -252.002 -254.998 -3 + vertex -254.993 -252.209 -3 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 252.314 -254.984 0 + vertex 252.002 -254.998 0 + vertex 252.105 -254.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 252.521 -254.954 0 + vertex 252.002 -254.998 0 + vertex 252.314 -254.984 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 252.002 254.998 0 + vertex 252.002 -254.998 0 + vertex 255 -252 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 252.726 -254.911 0 + vertex 252.002 -254.998 0 + vertex 252.521 -254.954 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 252.927 -254.853 0 + vertex 252.002 -254.998 0 + vertex 252.726 -254.911 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 253.124 -254.782 0 + vertex 252.002 -254.998 0 + vertex 252.927 -254.853 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 253.315 -254.696 0 + vertex 252.002 -254.998 0 + vertex 253.124 -254.782 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 253.5 -254.598 0 + vertex 252.002 -254.998 0 + vertex 253.315 -254.696 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 253.678 -254.487 0 + vertex 252.002 -254.998 0 + vertex 253.5 -254.598 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 253.847 -254.364 0 + vertex 252.002 -254.998 0 + vertex 253.678 -254.487 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 254.007 -254.229 0 + vertex 252.002 -254.998 0 + vertex 253.847 -254.364 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 254.158 -254.084 0 + vertex 252.002 -254.998 0 + vertex 254.007 -254.229 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 254.298 -253.928 0 + vertex 252.002 -254.998 0 + vertex 254.158 -254.084 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 254.427 -253.763 0 + vertex 252.002 -254.998 0 + vertex 254.298 -253.928 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 254.544 -253.59 0 + vertex 252.002 -254.998 0 + vertex 254.427 -253.763 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 254.649 -253.408 0 + vertex 252.002 -254.998 0 + vertex 254.544 -253.59 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 254.741 -253.22 0 + vertex 252.002 -254.998 0 + vertex 254.649 -253.408 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 254.819 -253.026 0 + vertex 252.002 -254.998 0 + vertex 254.741 -253.22 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 254.884 -252.827 0 + vertex 252.002 -254.998 0 + vertex 254.819 -253.026 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 254.934 -252.624 0 + vertex 252.002 -254.998 0 + vertex 254.884 -252.827 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 254.971 -252.418 0 + vertex 252.002 -254.998 0 + vertex 254.934 -252.624 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 254.993 -252.209 0 + vertex 252.002 -254.998 0 + vertex 254.971 -252.418 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 255 -252 0 + vertex 252.002 -254.998 0 + vertex 254.993 -252.209 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 255 252 0 + vertex 252.002 254.998 0 + vertex 255 -252 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 254.993 252.209 0 + vertex 254.971 252.418 0 + vertex 252.002 254.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 252.002 254.998 0 + vertex 254.934 252.624 0 + vertex 254.884 252.827 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 254.649 253.408 0 + vertex 252.002 254.998 0 + vertex 254.741 253.22 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 252.002 254.998 0 + vertex 254.819 253.026 0 + vertex 254.741 253.22 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 254.158 254.084 0 + vertex 254.007 254.229 0 + vertex 252.002 254.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 254.298 253.928 0 + vertex 252.002 254.998 0 + vertex 254.427 253.763 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 252.002 254.998 0 + vertex 254.544 253.59 0 + vertex 254.427 253.763 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 254.158 254.084 0 + vertex 252.002 254.998 0 + vertex 254.298 253.928 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 253.124 254.782 0 + vertex 252.927 254.853 0 + vertex 252.002 254.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 253.678 254.487 0 + vertex 252.002 254.998 0 + vertex 253.847 254.364 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 252.002 254.998 0 + vertex 254.007 254.229 0 + vertex 253.847 254.364 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 253.5 254.598 0 + vertex 252.002 254.998 0 + vertex 253.678 254.487 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 253.315 254.696 0 + vertex 252.002 254.998 0 + vertex 253.5 254.598 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 253.124 254.782 0 + vertex 252.002 254.998 0 + vertex 253.315 254.696 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 254.544 253.59 0 + vertex 252.002 254.998 0 + vertex 254.649 253.408 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 252.521 254.954 0 + vertex 252.002 254.998 0 + vertex 252.726 254.911 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 252.002 254.998 0 + vertex 252.927 254.853 0 + vertex 252.726 254.911 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 252.002 254.998 0 + vertex 254.884 252.827 0 + vertex 254.819 253.026 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 252.002 254.998 0 + vertex 252.521 254.954 0 + vertex 252.314 254.984 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 254.971 252.418 0 + vertex 254.934 252.624 0 + vertex 252.002 254.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 252.314 254.984 0 + vertex 252.105 254.998 0 + vertex 252.002 254.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 254.993 252.209 0 + vertex 252.002 254.998 0 + vertex 255 252 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -252.002 254.998 0 + vertex 252 255 0 + vertex -252 255 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 252.002 254.998 0 + vertex 252 255 0 + vertex -252.002 254.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 252.002 254.998 0 + vertex -252.002 254.998 0 + vertex 252.002 -254.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -252.002 -254.998 0 + vertex -255 252 0 + vertex -255 -252 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -252.105 254.998 0 + vertex -252.314 254.984 0 + vertex -252.002 254.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -252.314 254.984 0 + vertex -252.521 254.954 0 + vertex -252.002 254.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -252.521 254.954 0 + vertex -252.726 254.911 0 + vertex -252.002 254.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -252.726 254.911 0 + vertex -252.927 254.853 0 + vertex -252.002 254.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -252.927 254.853 0 + vertex -253.124 254.782 0 + vertex -252.002 254.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -253.124 254.782 0 + vertex -253.315 254.696 0 + vertex -252.002 254.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -253.315 254.696 0 + vertex -253.5 254.598 0 + vertex -252.002 254.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -253.5 254.598 0 + vertex -253.678 254.487 0 + vertex -252.002 254.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -253.678 254.487 0 + vertex -253.847 254.364 0 + vertex -252.002 254.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -253.847 254.364 0 + vertex -254.007 254.229 0 + vertex -252.002 254.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -254.007 254.229 0 + vertex -254.158 254.084 0 + vertex -252.002 254.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -254.158 254.084 0 + vertex -254.298 253.928 0 + vertex -252.002 254.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -254.298 253.928 0 + vertex -254.427 253.763 0 + vertex -252.002 254.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -254.427 253.763 0 + vertex -254.544 253.59 0 + vertex -252.002 254.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -254.544 253.59 0 + vertex -254.649 253.408 0 + vertex -252.002 254.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -254.649 253.408 0 + vertex -254.741 253.22 0 + vertex -252.002 254.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -254.741 253.22 0 + vertex -254.819 253.026 0 + vertex -252.002 254.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -254.819 253.026 0 + vertex -254.884 252.827 0 + vertex -252.002 254.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -254.884 252.827 0 + vertex -254.934 252.624 0 + vertex -252.002 254.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -254.934 252.624 0 + vertex -254.971 252.418 0 + vertex -252.002 254.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -254.971 252.418 0 + vertex -254.993 252.209 0 + vertex -252.002 254.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -254.993 252.209 0 + vertex -255 252 0 + vertex -252.002 254.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -252.002 254.998 0 + vertex -255 252 0 + vertex -252.002 -254.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -252.002 254.998 0 + vertex -252.002 -254.998 0 + vertex 252.002 -254.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -254.993 -252.209 0 + vertex -254.971 -252.418 0 + vertex -252.002 -254.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -252.002 -254.998 0 + vertex -254.934 -252.624 0 + vertex -254.884 -252.827 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -254.649 -253.408 0 + vertex -252.002 -254.998 0 + vertex -254.741 -253.22 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -252.002 -254.998 0 + vertex -254.819 -253.026 0 + vertex -254.741 -253.22 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -254.158 -254.084 0 + vertex -254.007 -254.229 0 + vertex -252.002 -254.998 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -254.298 -253.928 0 + vertex -252.002 -254.998 0 + vertex -254.427 -253.763 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -252.002 -254.998 0 + vertex -254.544 -253.59 0 + vertex -254.427 -253.763 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -254.158 -254.084 0 + vertex -252.002 -254.998 0 + vertex -254.298 -253.928 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -253.124 -254.782 0 + vertex -252.927 -254.853 0 + vertex -252.002 -254.998 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -253.678 -254.487 0 + vertex -252.002 -254.998 0 + vertex -253.847 -254.364 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -252.002 -254.998 0 + vertex -254.007 -254.229 0 + vertex -253.847 -254.364 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -253.5 -254.598 0 + vertex -252.002 -254.998 0 + vertex -253.678 -254.487 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -253.315 -254.696 0 + vertex -252.002 -254.998 0 + vertex -253.5 -254.598 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -253.124 -254.782 0 + vertex -252.002 -254.998 0 + vertex -253.315 -254.696 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -254.544 -253.59 0 + vertex -252.002 -254.998 0 + vertex -254.649 -253.408 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -252.521 -254.954 0 + vertex -252.002 -254.998 0 + vertex -252.726 -254.911 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -252.002 -254.998 0 + vertex -252.927 -254.853 0 + vertex -252.726 -254.911 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -252.002 -254.998 0 + vertex -254.884 -252.827 0 + vertex -254.819 -253.026 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -252.002 -254.998 0 + vertex -252.521 -254.954 0 + vertex -252.314 -254.984 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -254.971 -252.418 0 + vertex -254.934 -252.624 0 + vertex -252.002 -254.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -252.314 -254.984 0 + vertex -252.105 -254.998 0 + vertex -252.002 -254.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -252.002 -254.998 0 + vertex 252 -255 0 + vertex 252.002 -254.998 0 + endloop + endfacet + facet normal 0 -0 1 + outer loop + vertex -252 -255 0 + vertex 252 -255 0 + vertex -252.002 -254.998 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -254.993 -252.209 0 + vertex -252.002 -254.998 0 + vertex -255 -252 0 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 252.105 -254.998 -3 + vertex 252.002 -254.998 0 + vertex 252.002 -254.998 -3 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 252.105 -254.998 -3 + vertex 252.105 -254.998 0 + vertex 252.002 -254.998 0 + endloop + endfacet + facet normal 0.0668359 -0.997764 0 + outer loop + vertex 252.314 -254.984 -3 + vertex 252.105 -254.998 0 + vertex 252.105 -254.998 -3 + endloop + endfacet + facet normal 0.0668359 -0.997764 0 + outer loop + vertex 252.314 -254.984 -3 + vertex 252.314 -254.984 0 + vertex 252.105 -254.998 0 + endloop + endfacet + facet normal 0.143429 -0.989661 0 + outer loop + vertex 252.521 -254.954 -3 + vertex 252.314 -254.984 0 + vertex 252.314 -254.984 -3 + endloop + endfacet + facet normal 0.143429 -0.989661 0 + outer loop + vertex 252.521 -254.954 -3 + vertex 252.521 -254.954 0 + vertex 252.314 -254.984 0 + endloop + endfacet + facet normal 0.205289 -0.978701 0 + outer loop + vertex 252.726 -254.911 -3 + vertex 252.521 -254.954 0 + vertex 252.521 -254.954 -3 + endloop + endfacet + facet normal 0.205289 -0.978701 0 + outer loop + vertex 252.726 -254.911 -3 + vertex 252.726 -254.911 0 + vertex 252.521 -254.954 0 + endloop + endfacet + facet normal 0.277246 -0.960799 0 + outer loop + vertex 252.927 -254.853 -3 + vertex 252.726 -254.911 0 + vertex 252.726 -254.911 -3 + endloop + endfacet + facet normal 0.277246 -0.960799 0 + outer loop + vertex 252.927 -254.853 -3 + vertex 252.927 -254.853 0 + vertex 252.726 -254.911 0 + endloop + endfacet + facet normal 0.339058 -0.940766 0 + outer loop + vertex 253.124 -254.782 -3 + vertex 252.927 -254.853 0 + vertex 252.927 -254.853 -3 + endloop + endfacet + facet normal 0.339058 -0.940766 0 + outer loop + vertex 253.124 -254.782 -3 + vertex 253.124 -254.782 0 + vertex 252.927 -254.853 0 + endloop + endfacet + facet normal 0.410563 -0.911832 0 + outer loop + vertex 253.315 -254.696 -3 + vertex 253.124 -254.782 0 + vertex 253.124 -254.782 -3 + endloop + endfacet + facet normal 0.410563 -0.911832 0 + outer loop + vertex 253.315 -254.696 -3 + vertex 253.315 -254.696 0 + vertex 253.124 -254.782 0 + endloop + endfacet + facet normal 0.468107 -0.883672 0 + outer loop + vertex 253.5 -254.598 -3 + vertex 253.315 -254.696 0 + vertex 253.315 -254.696 -3 + endloop + endfacet + facet normal 0.468107 -0.883672 0 + outer loop + vertex 253.5 -254.598 -3 + vertex 253.5 -254.598 0 + vertex 253.315 -254.696 0 + endloop + endfacet + facet normal 0.529142 -0.848533 0 + outer loop + vertex 253.678 -254.487 -3 + vertex 253.5 -254.598 0 + vertex 253.5 -254.598 -3 + endloop + endfacet + facet normal 0.529142 -0.848533 0 + outer loop + vertex 253.678 -254.487 -3 + vertex 253.678 -254.487 0 + vertex 253.5 -254.598 0 + endloop + endfacet + facet normal 0.588456 -0.808529 0 + outer loop + vertex 253.847 -254.364 -3 + vertex 253.678 -254.487 0 + vertex 253.678 -254.487 -3 + endloop + endfacet + facet normal 0.588456 -0.808529 0 + outer loop + vertex 253.847 -254.364 -3 + vertex 253.847 -254.364 0 + vertex 253.678 -254.487 0 + endloop + endfacet + facet normal 0.644871 -0.764291 0 + outer loop + vertex 254.007 -254.229 -3 + vertex 253.847 -254.364 0 + vertex 253.847 -254.364 -3 + endloop + endfacet + facet normal 0.644871 -0.764291 0 + outer loop + vertex 254.007 -254.229 -3 + vertex 254.007 -254.229 0 + vertex 253.847 -254.364 0 + endloop + endfacet + facet normal 0.692631 -0.721292 0 + outer loop + vertex 254.158 -254.084 -3 + vertex 254.007 -254.229 0 + vertex 254.007 -254.229 -3 + endloop + endfacet + facet normal 0.692631 -0.721292 0 + outer loop + vertex 254.158 -254.084 -3 + vertex 254.158 -254.084 0 + vertex 254.007 -254.229 0 + endloop + endfacet + facet normal 0.744242 -0.66791 0 + outer loop + vertex 254.298 -253.928 -3 + vertex 254.158 -254.084 0 + vertex 254.158 -254.084 -3 + endloop + endfacet + facet normal 0.744242 -0.66791 0 + outer loop + vertex 254.298 -253.928 -3 + vertex 254.298 -253.928 0 + vertex 254.158 -254.084 0 + endloop + endfacet + facet normal 0.787807 -0.615922 0 + outer loop + vertex 254.427 -253.763 -3 + vertex 254.298 -253.928 0 + vertex 254.298 -253.928 -3 + endloop + endfacet + facet normal 0.787807 -0.615922 0 + outer loop + vertex 254.427 -253.763 -3 + vertex 254.427 -253.763 0 + vertex 254.298 -253.928 0 + endloop + endfacet + facet normal 0.828349 -0.560213 0 + outer loop + vertex 254.544 -253.59 -3 + vertex 254.427 -253.763 0 + vertex 254.427 -253.763 -3 + endloop + endfacet + facet normal 0.828349 -0.560213 0 + outer loop + vertex 254.544 -253.59 -3 + vertex 254.544 -253.59 0 + vertex 254.427 -253.763 0 + endloop + endfacet + facet normal 0.866186 -0.499722 0 + outer loop + vertex 254.649 -253.408 -3 + vertex 254.544 -253.59 0 + vertex 254.544 -253.59 -3 + endloop + endfacet + facet normal 0.866186 -0.499722 0 + outer loop + vertex 254.649 -253.408 -3 + vertex 254.649 -253.408 0 + vertex 254.544 -253.59 0 + endloop + endfacet + facet normal 0.898217 -0.439553 0 + outer loop + vertex 254.741 -253.22 -3 + vertex 254.649 -253.408 0 + vertex 254.649 -253.408 -3 + endloop + endfacet + facet normal 0.898217 -0.439553 0 + outer loop + vertex 254.741 -253.22 -3 + vertex 254.741 -253.22 0 + vertex 254.649 -253.408 0 + endloop + endfacet + facet normal 0.927816 -0.373039 0 + outer loop + vertex 254.819 -253.026 -3 + vertex 254.741 -253.22 0 + vertex 254.741 -253.22 -3 + endloop + endfacet + facet normal 0.927816 -0.373039 0 + outer loop + vertex 254.819 -253.026 -3 + vertex 254.819 -253.026 0 + vertex 254.741 -253.22 0 + endloop + endfacet + facet normal 0.950577 -0.31049 0 + outer loop + vertex 254.884 -252.827 -3 + vertex 254.819 -253.026 0 + vertex 254.819 -253.026 -3 + endloop + endfacet + facet normal 0.950577 -0.31049 0 + outer loop + vertex 254.884 -252.827 -3 + vertex 254.884 -252.827 0 + vertex 254.819 -253.026 0 + endloop + endfacet + facet normal 0.970981 -0.239158 0 + outer loop + vertex 254.934 -252.624 -3 + vertex 254.884 -252.827 0 + vertex 254.884 -252.827 -3 + endloop + endfacet + facet normal 0.970981 -0.239158 0 + outer loop + vertex 254.934 -252.624 -3 + vertex 254.934 -252.624 0 + vertex 254.884 -252.827 0 + endloop + endfacet + facet normal 0.98425 -0.176783 0 + outer loop + vertex 254.971 -252.418 -3 + vertex 254.934 -252.624 0 + vertex 254.934 -252.624 -3 + endloop + endfacet + facet normal 0.98425 -0.176783 0 + outer loop + vertex 254.971 -252.418 -3 + vertex 254.971 -252.418 0 + vertex 254.934 -252.624 0 + endloop + endfacet + facet normal 0.994505 -0.104685 0 + outer loop + vertex 254.993 -252.209 -3 + vertex 254.971 -252.418 0 + vertex 254.971 -252.418 -3 + endloop + endfacet + facet normal 0.994505 -0.104685 0 + outer loop + vertex 254.993 -252.209 -3 + vertex 254.993 -252.209 0 + vertex 254.971 -252.418 0 + endloop + endfacet + facet normal 0.99944 -0.0334741 0 + outer loop + vertex 255 -252 -3 + vertex 254.993 -252.209 0 + vertex 254.993 -252.209 -3 + endloop + endfacet + facet normal 0.99944 -0.0334741 0 + outer loop + vertex 255 -252 -3 + vertex 255 -252 0 + vertex 254.993 -252.209 0 + endloop + endfacet + facet normal 1 0 0 + outer loop + vertex 255 252 -3 + vertex 255 -252 0 + vertex 255 -252 -3 + endloop + endfacet + facet normal 1 0 -0 + outer loop + vertex 255 252 -3 + vertex 255 252 0 + vertex 255 -252 0 + endloop + endfacet + facet normal 0.99944 0.0334741 0 + outer loop + vertex 254.993 252.209 -3 + vertex 255 252 0 + vertex 255 252 -3 + endloop + endfacet + facet normal 0.99944 0.0334741 -0 + outer loop + vertex 254.993 252.209 -3 + vertex 254.993 252.209 0 + vertex 255 252 0 + endloop + endfacet + facet normal 0.994505 0.104685 0 + outer loop + vertex 254.971 252.418 -3 + vertex 254.993 252.209 0 + vertex 254.993 252.209 -3 + endloop + endfacet + facet normal 0.994505 0.104685 -0 + outer loop + vertex 254.971 252.418 -3 + vertex 254.971 252.418 0 + vertex 254.993 252.209 0 + endloop + endfacet + facet normal 0.98425 0.176783 0 + outer loop + vertex 254.934 252.624 -3 + vertex 254.971 252.418 0 + vertex 254.971 252.418 -3 + endloop + endfacet + facet normal 0.98425 0.176783 -0 + outer loop + vertex 254.934 252.624 -3 + vertex 254.934 252.624 0 + vertex 254.971 252.418 0 + endloop + endfacet + facet normal 0.970981 0.239158 0 + outer loop + vertex 254.884 252.827 -3 + vertex 254.934 252.624 0 + vertex 254.934 252.624 -3 + endloop + endfacet + facet normal 0.970981 0.239158 -0 + outer loop + vertex 254.884 252.827 -3 + vertex 254.884 252.827 0 + vertex 254.934 252.624 0 + endloop + endfacet + facet normal 0.950577 0.31049 0 + outer loop + vertex 254.819 253.026 -3 + vertex 254.884 252.827 0 + vertex 254.884 252.827 -3 + endloop + endfacet + facet normal 0.950577 0.31049 -0 + outer loop + vertex 254.819 253.026 -3 + vertex 254.819 253.026 0 + vertex 254.884 252.827 0 + endloop + endfacet + facet normal 0.927816 0.373039 0 + outer loop + vertex 254.741 253.22 -3 + vertex 254.819 253.026 0 + vertex 254.819 253.026 -3 + endloop + endfacet + facet normal 0.927816 0.373039 -0 + outer loop + vertex 254.741 253.22 -3 + vertex 254.741 253.22 0 + vertex 254.819 253.026 0 + endloop + endfacet + facet normal 0.898217 0.439553 0 + outer loop + vertex 254.649 253.408 -3 + vertex 254.741 253.22 0 + vertex 254.741 253.22 -3 + endloop + endfacet + facet normal 0.898217 0.439553 -0 + outer loop + vertex 254.649 253.408 -3 + vertex 254.649 253.408 0 + vertex 254.741 253.22 0 + endloop + endfacet + facet normal 0.866186 0.499722 0 + outer loop + vertex 254.544 253.59 -3 + vertex 254.649 253.408 0 + vertex 254.649 253.408 -3 + endloop + endfacet + facet normal 0.866186 0.499722 -0 + outer loop + vertex 254.544 253.59 -3 + vertex 254.544 253.59 0 + vertex 254.649 253.408 0 + endloop + endfacet + facet normal 0.828349 0.560213 0 + outer loop + vertex 254.427 253.763 -3 + vertex 254.544 253.59 0 + vertex 254.544 253.59 -3 + endloop + endfacet + facet normal 0.828349 0.560213 -0 + outer loop + vertex 254.427 253.763 -3 + vertex 254.427 253.763 0 + vertex 254.544 253.59 0 + endloop + endfacet + facet normal 0.787807 0.615922 0 + outer loop + vertex 254.298 253.928 -3 + vertex 254.427 253.763 0 + vertex 254.427 253.763 -3 + endloop + endfacet + facet normal 0.787807 0.615922 -0 + outer loop + vertex 254.298 253.928 -3 + vertex 254.298 253.928 0 + vertex 254.427 253.763 0 + endloop + endfacet + facet normal 0.744242 0.66791 0 + outer loop + vertex 254.158 254.084 -3 + vertex 254.298 253.928 0 + vertex 254.298 253.928 -3 + endloop + endfacet + facet normal 0.744242 0.66791 -0 + outer loop + vertex 254.158 254.084 -3 + vertex 254.158 254.084 0 + vertex 254.298 253.928 0 + endloop + endfacet + facet normal 0.692631 0.721292 0 + outer loop + vertex 254.007 254.229 -3 + vertex 254.158 254.084 0 + vertex 254.158 254.084 -3 + endloop + endfacet + facet normal 0.692631 0.721292 -0 + outer loop + vertex 254.007 254.229 -3 + vertex 254.007 254.229 0 + vertex 254.158 254.084 0 + endloop + endfacet + facet normal 0.644871 0.764291 0 + outer loop + vertex 253.847 254.364 -3 + vertex 254.007 254.229 0 + vertex 254.007 254.229 -3 + endloop + endfacet + facet normal 0.644871 0.764291 -0 + outer loop + vertex 253.847 254.364 -3 + vertex 253.847 254.364 0 + vertex 254.007 254.229 0 + endloop + endfacet + facet normal 0.588456 0.808529 0 + outer loop + vertex 253.678 254.487 -3 + vertex 253.847 254.364 0 + vertex 253.847 254.364 -3 + endloop + endfacet + facet normal 0.588456 0.808529 -0 + outer loop + vertex 253.678 254.487 -3 + vertex 253.678 254.487 0 + vertex 253.847 254.364 0 + endloop + endfacet + facet normal 0.529142 0.848533 0 + outer loop + vertex 253.5 254.598 -3 + vertex 253.678 254.487 0 + vertex 253.678 254.487 -3 + endloop + endfacet + facet normal 0.529142 0.848533 -0 + outer loop + vertex 253.5 254.598 -3 + vertex 253.5 254.598 0 + vertex 253.678 254.487 0 + endloop + endfacet + facet normal 0.468107 0.883672 0 + outer loop + vertex 253.315 254.696 -3 + vertex 253.5 254.598 0 + vertex 253.5 254.598 -3 + endloop + endfacet + facet normal 0.468107 0.883672 -0 + outer loop + vertex 253.315 254.696 -3 + vertex 253.315 254.696 0 + vertex 253.5 254.598 0 + endloop + endfacet + facet normal 0.410563 0.911832 0 + outer loop + vertex 253.124 254.782 -3 + vertex 253.315 254.696 0 + vertex 253.315 254.696 -3 + endloop + endfacet + facet normal 0.410563 0.911832 -0 + outer loop + vertex 253.124 254.782 -3 + vertex 253.124 254.782 0 + vertex 253.315 254.696 0 + endloop + endfacet + facet normal 0.339058 0.940766 0 + outer loop + vertex 252.927 254.853 -3 + vertex 253.124 254.782 0 + vertex 253.124 254.782 -3 + endloop + endfacet + facet normal 0.339058 0.940766 -0 + outer loop + vertex 252.927 254.853 -3 + vertex 252.927 254.853 0 + vertex 253.124 254.782 0 + endloop + endfacet + facet normal 0.277246 0.960799 0 + outer loop + vertex 252.726 254.911 -3 + vertex 252.927 254.853 0 + vertex 252.927 254.853 -3 + endloop + endfacet + facet normal 0.277246 0.960799 -0 + outer loop + vertex 252.726 254.911 -3 + vertex 252.726 254.911 0 + vertex 252.927 254.853 0 + endloop + endfacet + facet normal 0.205289 0.978701 0 + outer loop + vertex 252.521 254.954 -3 + vertex 252.726 254.911 0 + vertex 252.726 254.911 -3 + endloop + endfacet + facet normal 0.205289 0.978701 -0 + outer loop + vertex 252.521 254.954 -3 + vertex 252.521 254.954 0 + vertex 252.726 254.911 0 + endloop + endfacet + facet normal 0.143429 0.989661 0 + outer loop + vertex 252.314 254.984 -3 + vertex 252.521 254.954 0 + vertex 252.521 254.954 -3 + endloop + endfacet + facet normal 0.143429 0.989661 -0 + outer loop + vertex 252.314 254.984 -3 + vertex 252.314 254.984 0 + vertex 252.521 254.954 0 + endloop + endfacet + facet normal 0.0668359 0.997764 0 + outer loop + vertex 252.105 254.998 -3 + vertex 252.314 254.984 0 + vertex 252.314 254.984 -3 + endloop + endfacet + facet normal 0.0668359 0.997764 -0 + outer loop + vertex 252.105 254.998 -3 + vertex 252.105 254.998 0 + vertex 252.314 254.984 0 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex 252.002 254.998 -3 + vertex 252.105 254.998 0 + vertex 252.105 254.998 -3 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex 252.002 254.998 -3 + vertex 252.002 254.998 0 + vertex 252.105 254.998 0 + endloop + endfacet + facet normal 0.707107 0.707107 0 + outer loop + vertex 252 255 -3 + vertex 252.002 254.998 0 + vertex 252.002 254.998 -3 + endloop + endfacet + facet normal 0.707107 0.707107 -0 + outer loop + vertex 252 255 -3 + vertex 252 255 0 + vertex 252.002 254.998 0 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -252 255 -3 + vertex 252 255 0 + vertex 252 255 -3 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -252 255 -3 + vertex -252 255 0 + vertex 252 255 0 + endloop + endfacet + facet normal -0.707107 0.707107 0 + outer loop + vertex -252.002 254.998 -3 + vertex -252 255 0 + vertex -252 255 -3 + endloop + endfacet + facet normal -0.707107 0.707107 0 + outer loop + vertex -252.002 254.998 -3 + vertex -252.002 254.998 0 + vertex -252 255 0 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -252.105 254.998 -3 + vertex -252.002 254.998 0 + vertex -252.002 254.998 -3 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -252.105 254.998 -3 + vertex -252.105 254.998 0 + vertex -252.002 254.998 0 + endloop + endfacet + facet normal -0.0668359 0.997764 0 + outer loop + vertex -252.314 254.984 -3 + vertex -252.105 254.998 0 + vertex -252.105 254.998 -3 + endloop + endfacet + facet normal -0.0668359 0.997764 0 + outer loop + vertex -252.314 254.984 -3 + vertex -252.314 254.984 0 + vertex -252.105 254.998 0 + endloop + endfacet + facet normal -0.143429 0.989661 0 + outer loop + vertex -252.521 254.954 -3 + vertex -252.314 254.984 0 + vertex -252.314 254.984 -3 + endloop + endfacet + facet normal -0.143429 0.989661 0 + outer loop + vertex -252.521 254.954 -3 + vertex -252.521 254.954 0 + vertex -252.314 254.984 0 + endloop + endfacet + facet normal -0.205289 0.978701 0 + outer loop + vertex -252.726 254.911 -3 + vertex -252.521 254.954 0 + vertex -252.521 254.954 -3 + endloop + endfacet + facet normal -0.205289 0.978701 0 + outer loop + vertex -252.726 254.911 -3 + vertex -252.726 254.911 0 + vertex -252.521 254.954 0 + endloop + endfacet + facet normal -0.277246 0.960799 0 + outer loop + vertex -252.927 254.853 -3 + vertex -252.726 254.911 0 + vertex -252.726 254.911 -3 + endloop + endfacet + facet normal -0.277246 0.960799 0 + outer loop + vertex -252.927 254.853 -3 + vertex -252.927 254.853 0 + vertex -252.726 254.911 0 + endloop + endfacet + facet normal -0.339058 0.940766 0 + outer loop + vertex -253.124 254.782 -3 + vertex -252.927 254.853 0 + vertex -252.927 254.853 -3 + endloop + endfacet + facet normal -0.339058 0.940766 0 + outer loop + vertex -253.124 254.782 -3 + vertex -253.124 254.782 0 + vertex -252.927 254.853 0 + endloop + endfacet + facet normal -0.410563 0.911832 0 + outer loop + vertex -253.315 254.696 -3 + vertex -253.124 254.782 0 + vertex -253.124 254.782 -3 + endloop + endfacet + facet normal -0.410563 0.911832 0 + outer loop + vertex -253.315 254.696 -3 + vertex -253.315 254.696 0 + vertex -253.124 254.782 0 + endloop + endfacet + facet normal -0.468107 0.883672 0 + outer loop + vertex -253.5 254.598 -3 + vertex -253.315 254.696 0 + vertex -253.315 254.696 -3 + endloop + endfacet + facet normal -0.468107 0.883672 0 + outer loop + vertex -253.5 254.598 -3 + vertex -253.5 254.598 0 + vertex -253.315 254.696 0 + endloop + endfacet + facet normal -0.529142 0.848533 0 + outer loop + vertex -253.678 254.487 -3 + vertex -253.5 254.598 0 + vertex -253.5 254.598 -3 + endloop + endfacet + facet normal -0.529142 0.848533 0 + outer loop + vertex -253.678 254.487 -3 + vertex -253.678 254.487 0 + vertex -253.5 254.598 0 + endloop + endfacet + facet normal -0.588456 0.808529 0 + outer loop + vertex -253.847 254.364 -3 + vertex -253.678 254.487 0 + vertex -253.678 254.487 -3 + endloop + endfacet + facet normal -0.588456 0.808529 0 + outer loop + vertex -253.847 254.364 -3 + vertex -253.847 254.364 0 + vertex -253.678 254.487 0 + endloop + endfacet + facet normal -0.644871 0.764291 0 + outer loop + vertex -254.007 254.229 -3 + vertex -253.847 254.364 0 + vertex -253.847 254.364 -3 + endloop + endfacet + facet normal -0.644871 0.764291 0 + outer loop + vertex -254.007 254.229 -3 + vertex -254.007 254.229 0 + vertex -253.847 254.364 0 + endloop + endfacet + facet normal -0.692631 0.721292 0 + outer loop + vertex -254.158 254.084 -3 + vertex -254.007 254.229 0 + vertex -254.007 254.229 -3 + endloop + endfacet + facet normal -0.692631 0.721292 0 + outer loop + vertex -254.158 254.084 -3 + vertex -254.158 254.084 0 + vertex -254.007 254.229 0 + endloop + endfacet + facet normal -0.744242 0.66791 0 + outer loop + vertex -254.298 253.928 -3 + vertex -254.158 254.084 0 + vertex -254.158 254.084 -3 + endloop + endfacet + facet normal -0.744242 0.66791 0 + outer loop + vertex -254.298 253.928 -3 + vertex -254.298 253.928 0 + vertex -254.158 254.084 0 + endloop + endfacet + facet normal -0.787807 0.615922 0 + outer loop + vertex -254.427 253.763 -3 + vertex -254.298 253.928 0 + vertex -254.298 253.928 -3 + endloop + endfacet + facet normal -0.787807 0.615922 0 + outer loop + vertex -254.427 253.763 -3 + vertex -254.427 253.763 0 + vertex -254.298 253.928 0 + endloop + endfacet + facet normal -0.828349 0.560213 0 + outer loop + vertex -254.544 253.59 -3 + vertex -254.427 253.763 0 + vertex -254.427 253.763 -3 + endloop + endfacet + facet normal -0.828349 0.560213 0 + outer loop + vertex -254.544 253.59 -3 + vertex -254.544 253.59 0 + vertex -254.427 253.763 0 + endloop + endfacet + facet normal -0.866186 0.499722 0 + outer loop + vertex -254.649 253.408 -3 + vertex -254.544 253.59 0 + vertex -254.544 253.59 -3 + endloop + endfacet + facet normal -0.866186 0.499722 0 + outer loop + vertex -254.649 253.408 -3 + vertex -254.649 253.408 0 + vertex -254.544 253.59 0 + endloop + endfacet + facet normal -0.898217 0.439553 0 + outer loop + vertex -254.741 253.22 -3 + vertex -254.649 253.408 0 + vertex -254.649 253.408 -3 + endloop + endfacet + facet normal -0.898217 0.439553 0 + outer loop + vertex -254.741 253.22 -3 + vertex -254.741 253.22 0 + vertex -254.649 253.408 0 + endloop + endfacet + facet normal -0.927816 0.373039 0 + outer loop + vertex -254.819 253.026 -3 + vertex -254.741 253.22 0 + vertex -254.741 253.22 -3 + endloop + endfacet + facet normal -0.927816 0.373039 0 + outer loop + vertex -254.819 253.026 -3 + vertex -254.819 253.026 0 + vertex -254.741 253.22 0 + endloop + endfacet + facet normal -0.950577 0.31049 0 + outer loop + vertex -254.884 252.827 -3 + vertex -254.819 253.026 0 + vertex -254.819 253.026 -3 + endloop + endfacet + facet normal -0.950577 0.31049 0 + outer loop + vertex -254.884 252.827 -3 + vertex -254.884 252.827 0 + vertex -254.819 253.026 0 + endloop + endfacet + facet normal -0.970981 0.239158 0 + outer loop + vertex -254.934 252.624 -3 + vertex -254.884 252.827 0 + vertex -254.884 252.827 -3 + endloop + endfacet + facet normal -0.970981 0.239158 0 + outer loop + vertex -254.934 252.624 -3 + vertex -254.934 252.624 0 + vertex -254.884 252.827 0 + endloop + endfacet + facet normal -0.98425 0.176783 0 + outer loop + vertex -254.971 252.418 -3 + vertex -254.934 252.624 0 + vertex -254.934 252.624 -3 + endloop + endfacet + facet normal -0.98425 0.176783 0 + outer loop + vertex -254.971 252.418 -3 + vertex -254.971 252.418 0 + vertex -254.934 252.624 0 + endloop + endfacet + facet normal -0.994505 0.104685 0 + outer loop + vertex -254.993 252.209 -3 + vertex -254.971 252.418 0 + vertex -254.971 252.418 -3 + endloop + endfacet + facet normal -0.994505 0.104685 0 + outer loop + vertex -254.993 252.209 -3 + vertex -254.993 252.209 0 + vertex -254.971 252.418 0 + endloop + endfacet + facet normal -0.99944 0.0334741 0 + outer loop + vertex -255 252 -3 + vertex -254.993 252.209 0 + vertex -254.993 252.209 -3 + endloop + endfacet + facet normal -0.99944 0.0334741 0 + outer loop + vertex -255 252 -3 + vertex -255 252 0 + vertex -254.993 252.209 0 + endloop + endfacet + facet normal -1 0 0 + outer loop + vertex -255 -252 -3 + vertex -255 252 0 + vertex -255 252 -3 + endloop + endfacet + facet normal -1 0 0 + outer loop + vertex -255 -252 -3 + vertex -255 -252 0 + vertex -255 252 0 + endloop + endfacet + facet normal -0.99944 -0.0334741 0 + outer loop + vertex -254.993 -252.209 -3 + vertex -255 -252 0 + vertex -255 -252 -3 + endloop + endfacet + facet normal -0.99944 -0.0334741 0 + outer loop + vertex -254.993 -252.209 -3 + vertex -254.993 -252.209 0 + vertex -255 -252 0 + endloop + endfacet + facet normal -0.994505 -0.104685 0 + outer loop + vertex -254.971 -252.418 -3 + vertex -254.993 -252.209 0 + vertex -254.993 -252.209 -3 + endloop + endfacet + facet normal -0.994505 -0.104685 0 + outer loop + vertex -254.971 -252.418 -3 + vertex -254.971 -252.418 0 + vertex -254.993 -252.209 0 + endloop + endfacet + facet normal -0.98425 -0.176783 0 + outer loop + vertex -254.934 -252.624 -3 + vertex -254.971 -252.418 0 + vertex -254.971 -252.418 -3 + endloop + endfacet + facet normal -0.98425 -0.176783 0 + outer loop + vertex -254.934 -252.624 -3 + vertex -254.934 -252.624 0 + vertex -254.971 -252.418 0 + endloop + endfacet + facet normal -0.970981 -0.239158 0 + outer loop + vertex -254.884 -252.827 -3 + vertex -254.934 -252.624 0 + vertex -254.934 -252.624 -3 + endloop + endfacet + facet normal -0.970981 -0.239158 0 + outer loop + vertex -254.884 -252.827 -3 + vertex -254.884 -252.827 0 + vertex -254.934 -252.624 0 + endloop + endfacet + facet normal -0.950577 -0.31049 0 + outer loop + vertex -254.819 -253.026 -3 + vertex -254.884 -252.827 0 + vertex -254.884 -252.827 -3 + endloop + endfacet + facet normal -0.950577 -0.31049 0 + outer loop + vertex -254.819 -253.026 -3 + vertex -254.819 -253.026 0 + vertex -254.884 -252.827 0 + endloop + endfacet + facet normal -0.927816 -0.373039 0 + outer loop + vertex -254.741 -253.22 -3 + vertex -254.819 -253.026 0 + vertex -254.819 -253.026 -3 + endloop + endfacet + facet normal -0.927816 -0.373039 0 + outer loop + vertex -254.741 -253.22 -3 + vertex -254.741 -253.22 0 + vertex -254.819 -253.026 0 + endloop + endfacet + facet normal -0.898217 -0.439553 0 + outer loop + vertex -254.649 -253.408 -3 + vertex -254.741 -253.22 0 + vertex -254.741 -253.22 -3 + endloop + endfacet + facet normal -0.898217 -0.439553 0 + outer loop + vertex -254.649 -253.408 -3 + vertex -254.649 -253.408 0 + vertex -254.741 -253.22 0 + endloop + endfacet + facet normal -0.866186 -0.499722 0 + outer loop + vertex -254.544 -253.59 -3 + vertex -254.649 -253.408 0 + vertex -254.649 -253.408 -3 + endloop + endfacet + facet normal -0.866186 -0.499722 0 + outer loop + vertex -254.544 -253.59 -3 + vertex -254.544 -253.59 0 + vertex -254.649 -253.408 0 + endloop + endfacet + facet normal -0.828349 -0.560213 0 + outer loop + vertex -254.427 -253.763 -3 + vertex -254.544 -253.59 0 + vertex -254.544 -253.59 -3 + endloop + endfacet + facet normal -0.828349 -0.560213 0 + outer loop + vertex -254.427 -253.763 -3 + vertex -254.427 -253.763 0 + vertex -254.544 -253.59 0 + endloop + endfacet + facet normal -0.787807 -0.615922 0 + outer loop + vertex -254.298 -253.928 -3 + vertex -254.427 -253.763 0 + vertex -254.427 -253.763 -3 + endloop + endfacet + facet normal -0.787807 -0.615922 0 + outer loop + vertex -254.298 -253.928 -3 + vertex -254.298 -253.928 0 + vertex -254.427 -253.763 0 + endloop + endfacet + facet normal -0.744242 -0.66791 0 + outer loop + vertex -254.158 -254.084 -3 + vertex -254.298 -253.928 0 + vertex -254.298 -253.928 -3 + endloop + endfacet + facet normal -0.744242 -0.66791 0 + outer loop + vertex -254.158 -254.084 -3 + vertex -254.158 -254.084 0 + vertex -254.298 -253.928 0 + endloop + endfacet + facet normal -0.692631 -0.721292 0 + outer loop + vertex -254.007 -254.229 -3 + vertex -254.158 -254.084 0 + vertex -254.158 -254.084 -3 + endloop + endfacet + facet normal -0.692631 -0.721292 0 + outer loop + vertex -254.007 -254.229 -3 + vertex -254.007 -254.229 0 + vertex -254.158 -254.084 0 + endloop + endfacet + facet normal -0.644871 -0.764291 0 + outer loop + vertex -253.847 -254.364 -3 + vertex -254.007 -254.229 0 + vertex -254.007 -254.229 -3 + endloop + endfacet + facet normal -0.644871 -0.764291 0 + outer loop + vertex -253.847 -254.364 -3 + vertex -253.847 -254.364 0 + vertex -254.007 -254.229 0 + endloop + endfacet + facet normal -0.588456 -0.808529 0 + outer loop + vertex -253.678 -254.487 -3 + vertex -253.847 -254.364 0 + vertex -253.847 -254.364 -3 + endloop + endfacet + facet normal -0.588456 -0.808529 0 + outer loop + vertex -253.678 -254.487 -3 + vertex -253.678 -254.487 0 + vertex -253.847 -254.364 0 + endloop + endfacet + facet normal -0.529142 -0.848533 0 + outer loop + vertex -253.5 -254.598 -3 + vertex -253.678 -254.487 0 + vertex -253.678 -254.487 -3 + endloop + endfacet + facet normal -0.529142 -0.848533 0 + outer loop + vertex -253.5 -254.598 -3 + vertex -253.5 -254.598 0 + vertex -253.678 -254.487 0 + endloop + endfacet + facet normal -0.468107 -0.883672 0 + outer loop + vertex -253.315 -254.696 -3 + vertex -253.5 -254.598 0 + vertex -253.5 -254.598 -3 + endloop + endfacet + facet normal -0.468107 -0.883672 0 + outer loop + vertex -253.315 -254.696 -3 + vertex -253.315 -254.696 0 + vertex -253.5 -254.598 0 + endloop + endfacet + facet normal -0.410563 -0.911832 0 + outer loop + vertex -253.124 -254.782 -3 + vertex -253.315 -254.696 0 + vertex -253.315 -254.696 -3 + endloop + endfacet + facet normal -0.410563 -0.911832 0 + outer loop + vertex -253.124 -254.782 -3 + vertex -253.124 -254.782 0 + vertex -253.315 -254.696 0 + endloop + endfacet + facet normal -0.339058 -0.940766 0 + outer loop + vertex -252.927 -254.853 -3 + vertex -253.124 -254.782 0 + vertex -253.124 -254.782 -3 + endloop + endfacet + facet normal -0.339058 -0.940766 0 + outer loop + vertex -252.927 -254.853 -3 + vertex -252.927 -254.853 0 + vertex -253.124 -254.782 0 + endloop + endfacet + facet normal -0.277246 -0.960799 0 + outer loop + vertex -252.726 -254.911 -3 + vertex -252.927 -254.853 0 + vertex -252.927 -254.853 -3 + endloop + endfacet + facet normal -0.277246 -0.960799 0 + outer loop + vertex -252.726 -254.911 -3 + vertex -252.726 -254.911 0 + vertex -252.927 -254.853 0 + endloop + endfacet + facet normal -0.205289 -0.978701 0 + outer loop + vertex -252.521 -254.954 -3 + vertex -252.726 -254.911 0 + vertex -252.726 -254.911 -3 + endloop + endfacet + facet normal -0.205289 -0.978701 0 + outer loop + vertex -252.521 -254.954 -3 + vertex -252.521 -254.954 0 + vertex -252.726 -254.911 0 + endloop + endfacet + facet normal -0.143429 -0.989661 0 + outer loop + vertex -252.314 -254.984 -3 + vertex -252.521 -254.954 0 + vertex -252.521 -254.954 -3 + endloop + endfacet + facet normal -0.143429 -0.989661 0 + outer loop + vertex -252.314 -254.984 -3 + vertex -252.314 -254.984 0 + vertex -252.521 -254.954 0 + endloop + endfacet + facet normal -0.0668359 -0.997764 0 + outer loop + vertex -252.105 -254.998 -3 + vertex -252.314 -254.984 0 + vertex -252.314 -254.984 -3 + endloop + endfacet + facet normal -0.0668359 -0.997764 0 + outer loop + vertex -252.105 -254.998 -3 + vertex -252.105 -254.998 0 + vertex -252.314 -254.984 0 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -252.002 -254.998 -3 + vertex -252.105 -254.998 0 + vertex -252.105 -254.998 -3 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -252.002 -254.998 -3 + vertex -252.002 -254.998 0 + vertex -252.105 -254.998 0 + endloop + endfacet + facet normal -0.707107 -0.707107 0 + outer loop + vertex -252 -255 -3 + vertex -252.002 -254.998 0 + vertex -252.002 -254.998 -3 + endloop + endfacet + facet normal -0.707107 -0.707107 0 + outer loop + vertex -252 -255 -3 + vertex -252 -255 0 + vertex -252.002 -254.998 0 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 252 -255 -3 + vertex -252 -255 0 + vertex -252 -255 -3 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 252 -255 -3 + vertex 252 -255 0 + vertex -252 -255 0 + endloop + endfacet + facet normal 0.707107 -0.707107 0 + outer loop + vertex 252.002 -254.998 -3 + vertex 252 -255 0 + vertex 252 -255 -3 + endloop + endfacet + facet normal 0.707107 -0.707107 0 + outer loop + vertex 252.002 -254.998 -3 + vertex 252.002 -254.998 0 + vertex 252 -255 0 + endloop + endfacet +endsolid OpenSCAD_Model diff --git a/resources/profiles/Creality/cr10v2_bed.stl b/resources/profiles/Creality/cr10v2_bed.stl new file mode 100644 index 0000000000..004e0b114c --- /dev/null +++ b/resources/profiles/Creality/cr10v2_bed.stl @@ -0,0 +1,2774 @@ +solid OpenSCAD_Model + facet normal 0 0 -1 + outer loop + vertex 152.105 -159.998 -3 + vertex 152.002 -159.998 -3 + vertex 152.314 -159.984 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 152.314 -159.984 -3 + vertex 152.002 -159.998 -3 + vertex 152.521 -159.954 -3 + endloop + endfacet + facet normal 0 -0 -1 + outer loop + vertex -152.002 159.998 -3 + vertex 152.002 159.998 -3 + vertex -155 157 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 152.521 -159.954 -3 + vertex 152.002 -159.998 -3 + vertex 152.726 -159.911 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 152.726 -159.911 -3 + vertex 152.002 -159.998 -3 + vertex 152.927 -159.853 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 152.927 -159.853 -3 + vertex 152.002 -159.998 -3 + vertex 153.124 -159.782 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 153.124 -159.782 -3 + vertex 152.002 -159.998 -3 + vertex 153.315 -159.696 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 153.315 -159.696 -3 + vertex 152.002 -159.998 -3 + vertex 153.5 -159.598 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 153.5 -159.598 -3 + vertex 152.002 -159.998 -3 + vertex 153.678 -159.487 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 153.678 -159.487 -3 + vertex 152.002 -159.998 -3 + vertex 153.847 -159.364 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 153.847 -159.364 -3 + vertex 152.002 -159.998 -3 + vertex 154.007 -159.229 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 154.007 -159.229 -3 + vertex 152.002 -159.998 -3 + vertex 154.158 -159.084 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 154.158 -159.084 -3 + vertex 152.002 -159.998 -3 + vertex 154.298 -158.928 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 154.298 -158.928 -3 + vertex 152.002 -159.998 -3 + vertex 154.427 -158.763 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 154.427 -158.763 -3 + vertex 152.002 -159.998 -3 + vertex 154.544 -158.59 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 154.544 -158.59 -3 + vertex 152.002 -159.998 -3 + vertex 154.649 -158.408 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 154.649 -158.408 -3 + vertex 152.002 -159.998 -3 + vertex 154.741 -158.22 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 154.741 -158.22 -3 + vertex 152.002 -159.998 -3 + vertex 154.819 -158.026 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 154.819 -158.026 -3 + vertex 152.002 -159.998 -3 + vertex 154.884 -157.827 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 154.884 -157.827 -3 + vertex 152.002 -159.998 -3 + vertex 154.934 -157.624 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 154.934 -157.624 -3 + vertex 152.002 -159.998 -3 + vertex 154.971 -157.418 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 154.971 -157.418 -3 + vertex 152.002 -159.998 -3 + vertex 154.993 -157.209 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 154.993 -157.209 -3 + vertex 152.002 -159.998 -3 + vertex 155 -157 -3 + endloop + endfacet + facet normal 0 -0 -1 + outer loop + vertex 152 160 -3 + vertex 152.002 159.998 -3 + vertex -152.002 159.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 152.002 159.998 -3 + vertex 154.971 157.418 -3 + vertex 154.993 157.209 -3 + endloop + endfacet + facet normal -0 -0 -1 + outer loop + vertex 154.884 157.827 -3 + vertex 154.934 157.624 -3 + vertex 152.002 159.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 154.741 158.22 -3 + vertex 152.002 159.998 -3 + vertex 154.649 158.408 -3 + endloop + endfacet + facet normal -0 -0 -1 + outer loop + vertex 154.741 158.22 -3 + vertex 154.819 158.026 -3 + vertex 152.002 159.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 152.002 159.998 -3 + vertex 154.007 159.229 -3 + vertex 154.158 159.084 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 154.427 158.763 -3 + vertex 152.002 159.998 -3 + vertex 154.298 158.928 -3 + endloop + endfacet + facet normal -0 -0 -1 + outer loop + vertex 154.427 158.763 -3 + vertex 154.544 158.59 -3 + vertex 152.002 159.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 154.298 158.928 -3 + vertex 152.002 159.998 -3 + vertex 154.158 159.084 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 152.002 159.998 -3 + vertex 152.927 159.853 -3 + vertex 153.124 159.782 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 153.847 159.364 -3 + vertex 152.002 159.998 -3 + vertex 153.678 159.487 -3 + endloop + endfacet + facet normal -0 -0 -1 + outer loop + vertex 153.847 159.364 -3 + vertex 154.007 159.229 -3 + vertex 152.002 159.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 153.678 159.487 -3 + vertex 152.002 159.998 -3 + vertex 153.5 159.598 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 153.5 159.598 -3 + vertex 152.002 159.998 -3 + vertex 153.315 159.696 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 153.315 159.696 -3 + vertex 152.002 159.998 -3 + vertex 153.124 159.782 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 154.649 158.408 -3 + vertex 152.002 159.998 -3 + vertex 154.544 158.59 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 152.726 159.911 -3 + vertex 152.002 159.998 -3 + vertex 152.521 159.954 -3 + endloop + endfacet + facet normal -0 -0 -1 + outer loop + vertex 152.726 159.911 -3 + vertex 152.927 159.853 -3 + vertex 152.002 159.998 -3 + endloop + endfacet + facet normal -0 -0 -1 + outer loop + vertex 154.819 158.026 -3 + vertex 154.884 157.827 -3 + vertex 152.002 159.998 -3 + endloop + endfacet + facet normal -0 -0 -1 + outer loop + vertex 152.314 159.984 -3 + vertex 152.521 159.954 -3 + vertex 152.002 159.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 152.002 159.998 -3 + vertex 154.934 157.624 -3 + vertex 154.971 157.418 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 152.002 159.998 -3 + vertex 152.105 159.998 -3 + vertex 152.314 159.984 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 155 157 -3 + vertex 152.002 159.998 -3 + vertex 154.993 157.209 -3 + endloop + endfacet + facet normal 0 -0 -1 + outer loop + vertex -152 160 -3 + vertex 152 160 -3 + vertex -152.002 159.998 -3 + endloop + endfacet + facet normal 0 -0 -1 + outer loop + vertex 152.002 159.998 -3 + vertex 155 157 -3 + vertex -155 157 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -155 157 -3 + vertex 155 157 -3 + vertex 155 -157 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -155 157 -3 + vertex -154.993 157.209 -3 + vertex -152.002 159.998 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex -152.002 159.998 -3 + vertex -152.314 159.984 -3 + vertex -152.105 159.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.002 159.998 -3 + vertex -152.521 159.954 -3 + vertex -152.314 159.984 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.002 159.998 -3 + vertex -152.726 159.911 -3 + vertex -152.521 159.954 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.002 159.998 -3 + vertex -152.927 159.853 -3 + vertex -152.726 159.911 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.002 159.998 -3 + vertex -153.124 159.782 -3 + vertex -152.927 159.853 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.002 159.998 -3 + vertex -153.315 159.696 -3 + vertex -153.124 159.782 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.002 159.998 -3 + vertex -153.5 159.598 -3 + vertex -153.315 159.696 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.002 159.998 -3 + vertex -153.678 159.487 -3 + vertex -153.5 159.598 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.002 159.998 -3 + vertex -153.847 159.364 -3 + vertex -153.678 159.487 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.002 159.998 -3 + vertex -154.007 159.229 -3 + vertex -153.847 159.364 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.002 159.998 -3 + vertex -154.158 159.084 -3 + vertex -154.007 159.229 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.002 159.998 -3 + vertex -154.298 158.928 -3 + vertex -154.158 159.084 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.002 159.998 -3 + vertex -154.427 158.763 -3 + vertex -154.298 158.928 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.002 159.998 -3 + vertex -154.544 158.59 -3 + vertex -154.427 158.763 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.002 159.998 -3 + vertex -154.649 158.408 -3 + vertex -154.544 158.59 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.002 159.998 -3 + vertex -154.741 158.22 -3 + vertex -154.649 158.408 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.002 159.998 -3 + vertex -154.819 158.026 -3 + vertex -154.741 158.22 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.002 159.998 -3 + vertex -154.884 157.827 -3 + vertex -154.819 158.026 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.002 159.998 -3 + vertex -154.934 157.624 -3 + vertex -154.884 157.827 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.002 159.998 -3 + vertex -154.971 157.418 -3 + vertex -154.934 157.624 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.002 159.998 -3 + vertex -154.993 157.209 -3 + vertex -154.971 157.418 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -155 -157 -3 + vertex -155 157 -3 + vertex 155 -157 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 152.002 -159.998 -3 + vertex -155 -157 -3 + vertex 155 -157 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 152.002 -159.998 -3 + vertex -152.002 -159.998 -3 + vertex -155 -157 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.002 -159.998 -3 + vertex -154.971 -157.418 -3 + vertex -154.993 -157.209 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -154.884 -157.827 -3 + vertex -154.934 -157.624 -3 + vertex -152.002 -159.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -154.741 -158.22 -3 + vertex -152.002 -159.998 -3 + vertex -154.649 -158.408 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -154.741 -158.22 -3 + vertex -154.819 -158.026 -3 + vertex -152.002 -159.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.002 -159.998 -3 + vertex -154.007 -159.229 -3 + vertex -154.158 -159.084 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -154.427 -158.763 -3 + vertex -152.002 -159.998 -3 + vertex -154.298 -158.928 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -154.427 -158.763 -3 + vertex -154.544 -158.59 -3 + vertex -152.002 -159.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -154.298 -158.928 -3 + vertex -152.002 -159.998 -3 + vertex -154.158 -159.084 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.002 -159.998 -3 + vertex -152.927 -159.853 -3 + vertex -153.124 -159.782 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -153.847 -159.364 -3 + vertex -152.002 -159.998 -3 + vertex -153.678 -159.487 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -153.847 -159.364 -3 + vertex -154.007 -159.229 -3 + vertex -152.002 -159.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -153.678 -159.487 -3 + vertex -152.002 -159.998 -3 + vertex -153.5 -159.598 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -153.5 -159.598 -3 + vertex -152.002 -159.998 -3 + vertex -153.315 -159.696 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -153.315 -159.696 -3 + vertex -152.002 -159.998 -3 + vertex -153.124 -159.782 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -154.649 -158.408 -3 + vertex -152.002 -159.998 -3 + vertex -154.544 -158.59 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.726 -159.911 -3 + vertex -152.002 -159.998 -3 + vertex -152.521 -159.954 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.726 -159.911 -3 + vertex -152.927 -159.853 -3 + vertex -152.002 -159.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -154.819 -158.026 -3 + vertex -154.884 -157.827 -3 + vertex -152.002 -159.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.314 -159.984 -3 + vertex -152.521 -159.954 -3 + vertex -152.002 -159.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.002 -159.998 -3 + vertex -154.934 -157.624 -3 + vertex -154.971 -157.418 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.002 -159.998 -3 + vertex -152.105 -159.998 -3 + vertex -152.314 -159.984 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 152.002 -159.998 -3 + vertex 152 -160 -3 + vertex -152.002 -159.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -152.002 -159.998 -3 + vertex 152 -160 -3 + vertex -152 -160 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -155 -157 -3 + vertex -152.002 -159.998 -3 + vertex -154.993 -157.209 -3 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 152.314 -159.984 0 + vertex 152.002 -159.998 0 + vertex 152.105 -159.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 152.521 -159.954 0 + vertex 152.002 -159.998 0 + vertex 152.314 -159.984 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -155 157 0 + vertex 152.002 159.998 0 + vertex -152.002 159.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 152.726 -159.911 0 + vertex 152.002 -159.998 0 + vertex 152.521 -159.954 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 152.927 -159.853 0 + vertex 152.002 -159.998 0 + vertex 152.726 -159.911 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 153.124 -159.782 0 + vertex 152.002 -159.998 0 + vertex 152.927 -159.853 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 153.315 -159.696 0 + vertex 152.002 -159.998 0 + vertex 153.124 -159.782 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 153.5 -159.598 0 + vertex 152.002 -159.998 0 + vertex 153.315 -159.696 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 153.678 -159.487 0 + vertex 152.002 -159.998 0 + vertex 153.5 -159.598 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 153.847 -159.364 0 + vertex 152.002 -159.998 0 + vertex 153.678 -159.487 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 154.007 -159.229 0 + vertex 152.002 -159.998 0 + vertex 153.847 -159.364 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 154.158 -159.084 0 + vertex 152.002 -159.998 0 + vertex 154.007 -159.229 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 154.298 -158.928 0 + vertex 152.002 -159.998 0 + vertex 154.158 -159.084 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 154.427 -158.763 0 + vertex 152.002 -159.998 0 + vertex 154.298 -158.928 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 154.544 -158.59 0 + vertex 152.002 -159.998 0 + vertex 154.427 -158.763 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 154.649 -158.408 0 + vertex 152.002 -159.998 0 + vertex 154.544 -158.59 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 154.741 -158.22 0 + vertex 152.002 -159.998 0 + vertex 154.649 -158.408 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 154.819 -158.026 0 + vertex 152.002 -159.998 0 + vertex 154.741 -158.22 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 154.884 -157.827 0 + vertex 152.002 -159.998 0 + vertex 154.819 -158.026 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 154.934 -157.624 0 + vertex 152.002 -159.998 0 + vertex 154.884 -157.827 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 154.971 -157.418 0 + vertex 152.002 -159.998 0 + vertex 154.934 -157.624 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 154.993 -157.209 0 + vertex 152.002 -159.998 0 + vertex 154.971 -157.418 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 155 -157 0 + vertex 152.002 -159.998 0 + vertex 154.993 -157.209 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -152.002 159.998 0 + vertex 152.002 159.998 0 + vertex 152 160 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 154.993 157.209 0 + vertex 154.971 157.418 0 + vertex 152.002 159.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 152.002 159.998 0 + vertex 154.934 157.624 0 + vertex 154.884 157.827 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 154.649 158.408 0 + vertex 152.002 159.998 0 + vertex 154.741 158.22 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 152.002 159.998 0 + vertex 154.819 158.026 0 + vertex 154.741 158.22 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 154.158 159.084 0 + vertex 154.007 159.229 0 + vertex 152.002 159.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 154.298 158.928 0 + vertex 152.002 159.998 0 + vertex 154.427 158.763 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 152.002 159.998 0 + vertex 154.544 158.59 0 + vertex 154.427 158.763 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 154.158 159.084 0 + vertex 152.002 159.998 0 + vertex 154.298 158.928 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 153.124 159.782 0 + vertex 152.927 159.853 0 + vertex 152.002 159.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 153.678 159.487 0 + vertex 152.002 159.998 0 + vertex 153.847 159.364 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 152.002 159.998 0 + vertex 154.007 159.229 0 + vertex 153.847 159.364 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 153.5 159.598 0 + vertex 152.002 159.998 0 + vertex 153.678 159.487 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 153.315 159.696 0 + vertex 152.002 159.998 0 + vertex 153.5 159.598 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 153.124 159.782 0 + vertex 152.002 159.998 0 + vertex 153.315 159.696 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 154.544 158.59 0 + vertex 152.002 159.998 0 + vertex 154.649 158.408 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 152.521 159.954 0 + vertex 152.002 159.998 0 + vertex 152.726 159.911 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 152.002 159.998 0 + vertex 152.927 159.853 0 + vertex 152.726 159.911 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 152.002 159.998 0 + vertex 154.884 157.827 0 + vertex 154.819 158.026 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 152.002 159.998 0 + vertex 152.521 159.954 0 + vertex 152.314 159.984 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 154.971 157.418 0 + vertex 154.934 157.624 0 + vertex 152.002 159.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 152.314 159.984 0 + vertex 152.105 159.998 0 + vertex 152.002 159.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 154.993 157.209 0 + vertex 152.002 159.998 0 + vertex 155 157 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -152.002 159.998 0 + vertex 152 160 0 + vertex -152 160 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -155 157 0 + vertex 155 157 0 + vertex 152.002 159.998 0 + endloop + endfacet + facet normal 0 -0 1 + outer loop + vertex 155 -157 0 + vertex 155 157 0 + vertex -155 157 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -152.002 159.998 0 + vertex -154.993 157.209 0 + vertex -155 157 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -152.105 159.998 0 + vertex -152.314 159.984 0 + vertex -152.002 159.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -152.314 159.984 0 + vertex -152.521 159.954 0 + vertex -152.002 159.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -152.521 159.954 0 + vertex -152.726 159.911 0 + vertex -152.002 159.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -152.726 159.911 0 + vertex -152.927 159.853 0 + vertex -152.002 159.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -152.927 159.853 0 + vertex -153.124 159.782 0 + vertex -152.002 159.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -153.124 159.782 0 + vertex -153.315 159.696 0 + vertex -152.002 159.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -153.315 159.696 0 + vertex -153.5 159.598 0 + vertex -152.002 159.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -153.5 159.598 0 + vertex -153.678 159.487 0 + vertex -152.002 159.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -153.678 159.487 0 + vertex -153.847 159.364 0 + vertex -152.002 159.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -153.847 159.364 0 + vertex -154.007 159.229 0 + vertex -152.002 159.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -154.007 159.229 0 + vertex -154.158 159.084 0 + vertex -152.002 159.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -154.158 159.084 0 + vertex -154.298 158.928 0 + vertex -152.002 159.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -154.298 158.928 0 + vertex -154.427 158.763 0 + vertex -152.002 159.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -154.427 158.763 0 + vertex -154.544 158.59 0 + vertex -152.002 159.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -154.544 158.59 0 + vertex -154.649 158.408 0 + vertex -152.002 159.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -154.649 158.408 0 + vertex -154.741 158.22 0 + vertex -152.002 159.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -154.741 158.22 0 + vertex -154.819 158.026 0 + vertex -152.002 159.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -154.819 158.026 0 + vertex -154.884 157.827 0 + vertex -152.002 159.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -154.884 157.827 0 + vertex -154.934 157.624 0 + vertex -152.002 159.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -154.934 157.624 0 + vertex -154.971 157.418 0 + vertex -152.002 159.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -154.971 157.418 0 + vertex -154.993 157.209 0 + vertex -152.002 159.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 155 -157 0 + vertex -155 157 0 + vertex -155 -157 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 155 -157 0 + vertex -155 -157 0 + vertex 152.002 -159.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -155 -157 0 + vertex -152.002 -159.998 0 + vertex 152.002 -159.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -154.993 -157.209 0 + vertex -154.971 -157.418 0 + vertex -152.002 -159.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -152.002 -159.998 0 + vertex -154.934 -157.624 0 + vertex -154.884 -157.827 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -154.649 -158.408 0 + vertex -152.002 -159.998 0 + vertex -154.741 -158.22 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -152.002 -159.998 0 + vertex -154.819 -158.026 0 + vertex -154.741 -158.22 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -154.158 -159.084 0 + vertex -154.007 -159.229 0 + vertex -152.002 -159.998 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -154.298 -158.928 0 + vertex -152.002 -159.998 0 + vertex -154.427 -158.763 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -152.002 -159.998 0 + vertex -154.544 -158.59 0 + vertex -154.427 -158.763 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -154.158 -159.084 0 + vertex -152.002 -159.998 0 + vertex -154.298 -158.928 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -153.124 -159.782 0 + vertex -152.927 -159.853 0 + vertex -152.002 -159.998 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -153.678 -159.487 0 + vertex -152.002 -159.998 0 + vertex -153.847 -159.364 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -152.002 -159.998 0 + vertex -154.007 -159.229 0 + vertex -153.847 -159.364 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -153.5 -159.598 0 + vertex -152.002 -159.998 0 + vertex -153.678 -159.487 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -153.315 -159.696 0 + vertex -152.002 -159.998 0 + vertex -153.5 -159.598 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -153.124 -159.782 0 + vertex -152.002 -159.998 0 + vertex -153.315 -159.696 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -154.544 -158.59 0 + vertex -152.002 -159.998 0 + vertex -154.649 -158.408 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -152.521 -159.954 0 + vertex -152.002 -159.998 0 + vertex -152.726 -159.911 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -152.002 -159.998 0 + vertex -152.927 -159.853 0 + vertex -152.726 -159.911 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -152.002 -159.998 0 + vertex -154.884 -157.827 0 + vertex -154.819 -158.026 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -152.002 -159.998 0 + vertex -152.521 -159.954 0 + vertex -152.314 -159.984 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -154.971 -157.418 0 + vertex -154.934 -157.624 0 + vertex -152.002 -159.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -152.314 -159.984 0 + vertex -152.105 -159.998 0 + vertex -152.002 -159.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -152.002 -159.998 0 + vertex 152 -160 0 + vertex 152.002 -159.998 0 + endloop + endfacet + facet normal 0 -0 1 + outer loop + vertex -152 -160 0 + vertex 152 -160 0 + vertex -152.002 -159.998 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -154.993 -157.209 0 + vertex -152.002 -159.998 0 + vertex -155 -157 0 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 152.105 -159.998 -3 + vertex 152.002 -159.998 0 + vertex 152.002 -159.998 -3 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 152.105 -159.998 -3 + vertex 152.105 -159.998 0 + vertex 152.002 -159.998 0 + endloop + endfacet + facet normal 0.0668359 -0.997764 0 + outer loop + vertex 152.314 -159.984 -3 + vertex 152.105 -159.998 0 + vertex 152.105 -159.998 -3 + endloop + endfacet + facet normal 0.0668359 -0.997764 0 + outer loop + vertex 152.314 -159.984 -3 + vertex 152.314 -159.984 0 + vertex 152.105 -159.998 0 + endloop + endfacet + facet normal 0.143429 -0.989661 0 + outer loop + vertex 152.521 -159.954 -3 + vertex 152.314 -159.984 0 + vertex 152.314 -159.984 -3 + endloop + endfacet + facet normal 0.143429 -0.989661 0 + outer loop + vertex 152.521 -159.954 -3 + vertex 152.521 -159.954 0 + vertex 152.314 -159.984 0 + endloop + endfacet + facet normal 0.205289 -0.978701 0 + outer loop + vertex 152.726 -159.911 -3 + vertex 152.521 -159.954 0 + vertex 152.521 -159.954 -3 + endloop + endfacet + facet normal 0.205289 -0.978701 0 + outer loop + vertex 152.726 -159.911 -3 + vertex 152.726 -159.911 0 + vertex 152.521 -159.954 0 + endloop + endfacet + facet normal 0.277246 -0.960799 0 + outer loop + vertex 152.927 -159.853 -3 + vertex 152.726 -159.911 0 + vertex 152.726 -159.911 -3 + endloop + endfacet + facet normal 0.277246 -0.960799 0 + outer loop + vertex 152.927 -159.853 -3 + vertex 152.927 -159.853 0 + vertex 152.726 -159.911 0 + endloop + endfacet + facet normal 0.339058 -0.940766 0 + outer loop + vertex 153.124 -159.782 -3 + vertex 152.927 -159.853 0 + vertex 152.927 -159.853 -3 + endloop + endfacet + facet normal 0.339058 -0.940766 0 + outer loop + vertex 153.124 -159.782 -3 + vertex 153.124 -159.782 0 + vertex 152.927 -159.853 0 + endloop + endfacet + facet normal 0.410563 -0.911832 0 + outer loop + vertex 153.315 -159.696 -3 + vertex 153.124 -159.782 0 + vertex 153.124 -159.782 -3 + endloop + endfacet + facet normal 0.410563 -0.911832 0 + outer loop + vertex 153.315 -159.696 -3 + vertex 153.315 -159.696 0 + vertex 153.124 -159.782 0 + endloop + endfacet + facet normal 0.468107 -0.883672 0 + outer loop + vertex 153.5 -159.598 -3 + vertex 153.315 -159.696 0 + vertex 153.315 -159.696 -3 + endloop + endfacet + facet normal 0.468107 -0.883672 0 + outer loop + vertex 153.5 -159.598 -3 + vertex 153.5 -159.598 0 + vertex 153.315 -159.696 0 + endloop + endfacet + facet normal 0.529142 -0.848533 0 + outer loop + vertex 153.678 -159.487 -3 + vertex 153.5 -159.598 0 + vertex 153.5 -159.598 -3 + endloop + endfacet + facet normal 0.529142 -0.848533 0 + outer loop + vertex 153.678 -159.487 -3 + vertex 153.678 -159.487 0 + vertex 153.5 -159.598 0 + endloop + endfacet + facet normal 0.588456 -0.808529 0 + outer loop + vertex 153.847 -159.364 -3 + vertex 153.678 -159.487 0 + vertex 153.678 -159.487 -3 + endloop + endfacet + facet normal 0.588456 -0.808529 0 + outer loop + vertex 153.847 -159.364 -3 + vertex 153.847 -159.364 0 + vertex 153.678 -159.487 0 + endloop + endfacet + facet normal 0.644871 -0.764291 0 + outer loop + vertex 154.007 -159.229 -3 + vertex 153.847 -159.364 0 + vertex 153.847 -159.364 -3 + endloop + endfacet + facet normal 0.644871 -0.764291 0 + outer loop + vertex 154.007 -159.229 -3 + vertex 154.007 -159.229 0 + vertex 153.847 -159.364 0 + endloop + endfacet + facet normal 0.692631 -0.721292 0 + outer loop + vertex 154.158 -159.084 -3 + vertex 154.007 -159.229 0 + vertex 154.007 -159.229 -3 + endloop + endfacet + facet normal 0.692631 -0.721292 0 + outer loop + vertex 154.158 -159.084 -3 + vertex 154.158 -159.084 0 + vertex 154.007 -159.229 0 + endloop + endfacet + facet normal 0.744242 -0.66791 0 + outer loop + vertex 154.298 -158.928 -3 + vertex 154.158 -159.084 0 + vertex 154.158 -159.084 -3 + endloop + endfacet + facet normal 0.744242 -0.66791 0 + outer loop + vertex 154.298 -158.928 -3 + vertex 154.298 -158.928 0 + vertex 154.158 -159.084 0 + endloop + endfacet + facet normal 0.787807 -0.615922 0 + outer loop + vertex 154.427 -158.763 -3 + vertex 154.298 -158.928 0 + vertex 154.298 -158.928 -3 + endloop + endfacet + facet normal 0.787807 -0.615922 0 + outer loop + vertex 154.427 -158.763 -3 + vertex 154.427 -158.763 0 + vertex 154.298 -158.928 0 + endloop + endfacet + facet normal 0.828349 -0.560213 0 + outer loop + vertex 154.544 -158.59 -3 + vertex 154.427 -158.763 0 + vertex 154.427 -158.763 -3 + endloop + endfacet + facet normal 0.828349 -0.560213 0 + outer loop + vertex 154.544 -158.59 -3 + vertex 154.544 -158.59 0 + vertex 154.427 -158.763 0 + endloop + endfacet + facet normal 0.866186 -0.499722 0 + outer loop + vertex 154.649 -158.408 -3 + vertex 154.544 -158.59 0 + vertex 154.544 -158.59 -3 + endloop + endfacet + facet normal 0.866186 -0.499722 0 + outer loop + vertex 154.649 -158.408 -3 + vertex 154.649 -158.408 0 + vertex 154.544 -158.59 0 + endloop + endfacet + facet normal 0.898217 -0.439553 0 + outer loop + vertex 154.741 -158.22 -3 + vertex 154.649 -158.408 0 + vertex 154.649 -158.408 -3 + endloop + endfacet + facet normal 0.898217 -0.439553 0 + outer loop + vertex 154.741 -158.22 -3 + vertex 154.741 -158.22 0 + vertex 154.649 -158.408 0 + endloop + endfacet + facet normal 0.927816 -0.373039 0 + outer loop + vertex 154.819 -158.026 -3 + vertex 154.741 -158.22 0 + vertex 154.741 -158.22 -3 + endloop + endfacet + facet normal 0.927816 -0.373039 0 + outer loop + vertex 154.819 -158.026 -3 + vertex 154.819 -158.026 0 + vertex 154.741 -158.22 0 + endloop + endfacet + facet normal 0.950577 -0.31049 0 + outer loop + vertex 154.884 -157.827 -3 + vertex 154.819 -158.026 0 + vertex 154.819 -158.026 -3 + endloop + endfacet + facet normal 0.950577 -0.31049 0 + outer loop + vertex 154.884 -157.827 -3 + vertex 154.884 -157.827 0 + vertex 154.819 -158.026 0 + endloop + endfacet + facet normal 0.970981 -0.239158 0 + outer loop + vertex 154.934 -157.624 -3 + vertex 154.884 -157.827 0 + vertex 154.884 -157.827 -3 + endloop + endfacet + facet normal 0.970981 -0.239158 0 + outer loop + vertex 154.934 -157.624 -3 + vertex 154.934 -157.624 0 + vertex 154.884 -157.827 0 + endloop + endfacet + facet normal 0.98425 -0.176783 0 + outer loop + vertex 154.971 -157.418 -3 + vertex 154.934 -157.624 0 + vertex 154.934 -157.624 -3 + endloop + endfacet + facet normal 0.98425 -0.176783 0 + outer loop + vertex 154.971 -157.418 -3 + vertex 154.971 -157.418 0 + vertex 154.934 -157.624 0 + endloop + endfacet + facet normal 0.994505 -0.104685 0 + outer loop + vertex 154.993 -157.209 -3 + vertex 154.971 -157.418 0 + vertex 154.971 -157.418 -3 + endloop + endfacet + facet normal 0.994505 -0.104685 0 + outer loop + vertex 154.993 -157.209 -3 + vertex 154.993 -157.209 0 + vertex 154.971 -157.418 0 + endloop + endfacet + facet normal 0.99944 -0.0334741 0 + outer loop + vertex 155 -157 -3 + vertex 154.993 -157.209 0 + vertex 154.993 -157.209 -3 + endloop + endfacet + facet normal 0.99944 -0.0334741 0 + outer loop + vertex 155 -157 -3 + vertex 155 -157 0 + vertex 154.993 -157.209 0 + endloop + endfacet + facet normal 1 0 0 + outer loop + vertex 155 157 -3 + vertex 155 -157 0 + vertex 155 -157 -3 + endloop + endfacet + facet normal 1 0 -0 + outer loop + vertex 155 157 -3 + vertex 155 157 0 + vertex 155 -157 0 + endloop + endfacet + facet normal 0.99944 0.0334741 0 + outer loop + vertex 154.993 157.209 -3 + vertex 155 157 0 + vertex 155 157 -3 + endloop + endfacet + facet normal 0.99944 0.0334741 -0 + outer loop + vertex 154.993 157.209 -3 + vertex 154.993 157.209 0 + vertex 155 157 0 + endloop + endfacet + facet normal 0.994505 0.104685 0 + outer loop + vertex 154.971 157.418 -3 + vertex 154.993 157.209 0 + vertex 154.993 157.209 -3 + endloop + endfacet + facet normal 0.994505 0.104685 -0 + outer loop + vertex 154.971 157.418 -3 + vertex 154.971 157.418 0 + vertex 154.993 157.209 0 + endloop + endfacet + facet normal 0.98425 0.176783 0 + outer loop + vertex 154.934 157.624 -3 + vertex 154.971 157.418 0 + vertex 154.971 157.418 -3 + endloop + endfacet + facet normal 0.98425 0.176783 -0 + outer loop + vertex 154.934 157.624 -3 + vertex 154.934 157.624 0 + vertex 154.971 157.418 0 + endloop + endfacet + facet normal 0.970981 0.239158 0 + outer loop + vertex 154.884 157.827 -3 + vertex 154.934 157.624 0 + vertex 154.934 157.624 -3 + endloop + endfacet + facet normal 0.970981 0.239158 -0 + outer loop + vertex 154.884 157.827 -3 + vertex 154.884 157.827 0 + vertex 154.934 157.624 0 + endloop + endfacet + facet normal 0.950577 0.31049 0 + outer loop + vertex 154.819 158.026 -3 + vertex 154.884 157.827 0 + vertex 154.884 157.827 -3 + endloop + endfacet + facet normal 0.950577 0.31049 -0 + outer loop + vertex 154.819 158.026 -3 + vertex 154.819 158.026 0 + vertex 154.884 157.827 0 + endloop + endfacet + facet normal 0.927816 0.373039 0 + outer loop + vertex 154.741 158.22 -3 + vertex 154.819 158.026 0 + vertex 154.819 158.026 -3 + endloop + endfacet + facet normal 0.927816 0.373039 -0 + outer loop + vertex 154.741 158.22 -3 + vertex 154.741 158.22 0 + vertex 154.819 158.026 0 + endloop + endfacet + facet normal 0.898217 0.439553 0 + outer loop + vertex 154.649 158.408 -3 + vertex 154.741 158.22 0 + vertex 154.741 158.22 -3 + endloop + endfacet + facet normal 0.898217 0.439553 -0 + outer loop + vertex 154.649 158.408 -3 + vertex 154.649 158.408 0 + vertex 154.741 158.22 0 + endloop + endfacet + facet normal 0.866186 0.499722 0 + outer loop + vertex 154.544 158.59 -3 + vertex 154.649 158.408 0 + vertex 154.649 158.408 -3 + endloop + endfacet + facet normal 0.866186 0.499722 -0 + outer loop + vertex 154.544 158.59 -3 + vertex 154.544 158.59 0 + vertex 154.649 158.408 0 + endloop + endfacet + facet normal 0.828349 0.560213 0 + outer loop + vertex 154.427 158.763 -3 + vertex 154.544 158.59 0 + vertex 154.544 158.59 -3 + endloop + endfacet + facet normal 0.828349 0.560213 -0 + outer loop + vertex 154.427 158.763 -3 + vertex 154.427 158.763 0 + vertex 154.544 158.59 0 + endloop + endfacet + facet normal 0.787807 0.615922 0 + outer loop + vertex 154.298 158.928 -3 + vertex 154.427 158.763 0 + vertex 154.427 158.763 -3 + endloop + endfacet + facet normal 0.787807 0.615922 -0 + outer loop + vertex 154.298 158.928 -3 + vertex 154.298 158.928 0 + vertex 154.427 158.763 0 + endloop + endfacet + facet normal 0.744242 0.66791 0 + outer loop + vertex 154.158 159.084 -3 + vertex 154.298 158.928 0 + vertex 154.298 158.928 -3 + endloop + endfacet + facet normal 0.744242 0.66791 -0 + outer loop + vertex 154.158 159.084 -3 + vertex 154.158 159.084 0 + vertex 154.298 158.928 0 + endloop + endfacet + facet normal 0.692631 0.721292 0 + outer loop + vertex 154.007 159.229 -3 + vertex 154.158 159.084 0 + vertex 154.158 159.084 -3 + endloop + endfacet + facet normal 0.692631 0.721292 -0 + outer loop + vertex 154.007 159.229 -3 + vertex 154.007 159.229 0 + vertex 154.158 159.084 0 + endloop + endfacet + facet normal 0.644871 0.764291 0 + outer loop + vertex 153.847 159.364 -3 + vertex 154.007 159.229 0 + vertex 154.007 159.229 -3 + endloop + endfacet + facet normal 0.644871 0.764291 -0 + outer loop + vertex 153.847 159.364 -3 + vertex 153.847 159.364 0 + vertex 154.007 159.229 0 + endloop + endfacet + facet normal 0.588456 0.808529 0 + outer loop + vertex 153.678 159.487 -3 + vertex 153.847 159.364 0 + vertex 153.847 159.364 -3 + endloop + endfacet + facet normal 0.588456 0.808529 -0 + outer loop + vertex 153.678 159.487 -3 + vertex 153.678 159.487 0 + vertex 153.847 159.364 0 + endloop + endfacet + facet normal 0.529142 0.848533 0 + outer loop + vertex 153.5 159.598 -3 + vertex 153.678 159.487 0 + vertex 153.678 159.487 -3 + endloop + endfacet + facet normal 0.529142 0.848533 -0 + outer loop + vertex 153.5 159.598 -3 + vertex 153.5 159.598 0 + vertex 153.678 159.487 0 + endloop + endfacet + facet normal 0.468107 0.883672 0 + outer loop + vertex 153.315 159.696 -3 + vertex 153.5 159.598 0 + vertex 153.5 159.598 -3 + endloop + endfacet + facet normal 0.468107 0.883672 -0 + outer loop + vertex 153.315 159.696 -3 + vertex 153.315 159.696 0 + vertex 153.5 159.598 0 + endloop + endfacet + facet normal 0.410563 0.911832 0 + outer loop + vertex 153.124 159.782 -3 + vertex 153.315 159.696 0 + vertex 153.315 159.696 -3 + endloop + endfacet + facet normal 0.410563 0.911832 -0 + outer loop + vertex 153.124 159.782 -3 + vertex 153.124 159.782 0 + vertex 153.315 159.696 0 + endloop + endfacet + facet normal 0.339058 0.940766 0 + outer loop + vertex 152.927 159.853 -3 + vertex 153.124 159.782 0 + vertex 153.124 159.782 -3 + endloop + endfacet + facet normal 0.339058 0.940766 -0 + outer loop + vertex 152.927 159.853 -3 + vertex 152.927 159.853 0 + vertex 153.124 159.782 0 + endloop + endfacet + facet normal 0.277246 0.960799 0 + outer loop + vertex 152.726 159.911 -3 + vertex 152.927 159.853 0 + vertex 152.927 159.853 -3 + endloop + endfacet + facet normal 0.277246 0.960799 -0 + outer loop + vertex 152.726 159.911 -3 + vertex 152.726 159.911 0 + vertex 152.927 159.853 0 + endloop + endfacet + facet normal 0.205289 0.978701 0 + outer loop + vertex 152.521 159.954 -3 + vertex 152.726 159.911 0 + vertex 152.726 159.911 -3 + endloop + endfacet + facet normal 0.205289 0.978701 -0 + outer loop + vertex 152.521 159.954 -3 + vertex 152.521 159.954 0 + vertex 152.726 159.911 0 + endloop + endfacet + facet normal 0.143429 0.989661 0 + outer loop + vertex 152.314 159.984 -3 + vertex 152.521 159.954 0 + vertex 152.521 159.954 -3 + endloop + endfacet + facet normal 0.143429 0.989661 -0 + outer loop + vertex 152.314 159.984 -3 + vertex 152.314 159.984 0 + vertex 152.521 159.954 0 + endloop + endfacet + facet normal 0.0668359 0.997764 0 + outer loop + vertex 152.105 159.998 -3 + vertex 152.314 159.984 0 + vertex 152.314 159.984 -3 + endloop + endfacet + facet normal 0.0668359 0.997764 -0 + outer loop + vertex 152.105 159.998 -3 + vertex 152.105 159.998 0 + vertex 152.314 159.984 0 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex 152.002 159.998 -3 + vertex 152.105 159.998 0 + vertex 152.105 159.998 -3 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex 152.002 159.998 -3 + vertex 152.002 159.998 0 + vertex 152.105 159.998 0 + endloop + endfacet + facet normal 0.707107 0.707107 0 + outer loop + vertex 152 160 -3 + vertex 152.002 159.998 0 + vertex 152.002 159.998 -3 + endloop + endfacet + facet normal 0.707107 0.707107 -0 + outer loop + vertex 152 160 -3 + vertex 152 160 0 + vertex 152.002 159.998 0 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -152 160 -3 + vertex 152 160 0 + vertex 152 160 -3 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -152 160 -3 + vertex -152 160 0 + vertex 152 160 0 + endloop + endfacet + facet normal -0.707107 0.707107 0 + outer loop + vertex -152.002 159.998 -3 + vertex -152 160 0 + vertex -152 160 -3 + endloop + endfacet + facet normal -0.707107 0.707107 0 + outer loop + vertex -152.002 159.998 -3 + vertex -152.002 159.998 0 + vertex -152 160 0 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -152.105 159.998 -3 + vertex -152.002 159.998 0 + vertex -152.002 159.998 -3 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -152.105 159.998 -3 + vertex -152.105 159.998 0 + vertex -152.002 159.998 0 + endloop + endfacet + facet normal -0.0668359 0.997764 0 + outer loop + vertex -152.314 159.984 -3 + vertex -152.105 159.998 0 + vertex -152.105 159.998 -3 + endloop + endfacet + facet normal -0.0668359 0.997764 0 + outer loop + vertex -152.314 159.984 -3 + vertex -152.314 159.984 0 + vertex -152.105 159.998 0 + endloop + endfacet + facet normal -0.143429 0.989661 0 + outer loop + vertex -152.521 159.954 -3 + vertex -152.314 159.984 0 + vertex -152.314 159.984 -3 + endloop + endfacet + facet normal -0.143429 0.989661 0 + outer loop + vertex -152.521 159.954 -3 + vertex -152.521 159.954 0 + vertex -152.314 159.984 0 + endloop + endfacet + facet normal -0.205289 0.978701 0 + outer loop + vertex -152.726 159.911 -3 + vertex -152.521 159.954 0 + vertex -152.521 159.954 -3 + endloop + endfacet + facet normal -0.205289 0.978701 0 + outer loop + vertex -152.726 159.911 -3 + vertex -152.726 159.911 0 + vertex -152.521 159.954 0 + endloop + endfacet + facet normal -0.277246 0.960799 0 + outer loop + vertex -152.927 159.853 -3 + vertex -152.726 159.911 0 + vertex -152.726 159.911 -3 + endloop + endfacet + facet normal -0.277246 0.960799 0 + outer loop + vertex -152.927 159.853 -3 + vertex -152.927 159.853 0 + vertex -152.726 159.911 0 + endloop + endfacet + facet normal -0.339058 0.940766 0 + outer loop + vertex -153.124 159.782 -3 + vertex -152.927 159.853 0 + vertex -152.927 159.853 -3 + endloop + endfacet + facet normal -0.339058 0.940766 0 + outer loop + vertex -153.124 159.782 -3 + vertex -153.124 159.782 0 + vertex -152.927 159.853 0 + endloop + endfacet + facet normal -0.410563 0.911832 0 + outer loop + vertex -153.315 159.696 -3 + vertex -153.124 159.782 0 + vertex -153.124 159.782 -3 + endloop + endfacet + facet normal -0.410563 0.911832 0 + outer loop + vertex -153.315 159.696 -3 + vertex -153.315 159.696 0 + vertex -153.124 159.782 0 + endloop + endfacet + facet normal -0.468107 0.883672 0 + outer loop + vertex -153.5 159.598 -3 + vertex -153.315 159.696 0 + vertex -153.315 159.696 -3 + endloop + endfacet + facet normal -0.468107 0.883672 0 + outer loop + vertex -153.5 159.598 -3 + vertex -153.5 159.598 0 + vertex -153.315 159.696 0 + endloop + endfacet + facet normal -0.529142 0.848533 0 + outer loop + vertex -153.678 159.487 -3 + vertex -153.5 159.598 0 + vertex -153.5 159.598 -3 + endloop + endfacet + facet normal -0.529142 0.848533 0 + outer loop + vertex -153.678 159.487 -3 + vertex -153.678 159.487 0 + vertex -153.5 159.598 0 + endloop + endfacet + facet normal -0.588456 0.808529 0 + outer loop + vertex -153.847 159.364 -3 + vertex -153.678 159.487 0 + vertex -153.678 159.487 -3 + endloop + endfacet + facet normal -0.588456 0.808529 0 + outer loop + vertex -153.847 159.364 -3 + vertex -153.847 159.364 0 + vertex -153.678 159.487 0 + endloop + endfacet + facet normal -0.644871 0.764291 0 + outer loop + vertex -154.007 159.229 -3 + vertex -153.847 159.364 0 + vertex -153.847 159.364 -3 + endloop + endfacet + facet normal -0.644871 0.764291 0 + outer loop + vertex -154.007 159.229 -3 + vertex -154.007 159.229 0 + vertex -153.847 159.364 0 + endloop + endfacet + facet normal -0.692631 0.721292 0 + outer loop + vertex -154.158 159.084 -3 + vertex -154.007 159.229 0 + vertex -154.007 159.229 -3 + endloop + endfacet + facet normal -0.692631 0.721292 0 + outer loop + vertex -154.158 159.084 -3 + vertex -154.158 159.084 0 + vertex -154.007 159.229 0 + endloop + endfacet + facet normal -0.744242 0.66791 0 + outer loop + vertex -154.298 158.928 -3 + vertex -154.158 159.084 0 + vertex -154.158 159.084 -3 + endloop + endfacet + facet normal -0.744242 0.66791 0 + outer loop + vertex -154.298 158.928 -3 + vertex -154.298 158.928 0 + vertex -154.158 159.084 0 + endloop + endfacet + facet normal -0.787807 0.615922 0 + outer loop + vertex -154.427 158.763 -3 + vertex -154.298 158.928 0 + vertex -154.298 158.928 -3 + endloop + endfacet + facet normal -0.787807 0.615922 0 + outer loop + vertex -154.427 158.763 -3 + vertex -154.427 158.763 0 + vertex -154.298 158.928 0 + endloop + endfacet + facet normal -0.828349 0.560213 0 + outer loop + vertex -154.544 158.59 -3 + vertex -154.427 158.763 0 + vertex -154.427 158.763 -3 + endloop + endfacet + facet normal -0.828349 0.560213 0 + outer loop + vertex -154.544 158.59 -3 + vertex -154.544 158.59 0 + vertex -154.427 158.763 0 + endloop + endfacet + facet normal -0.866186 0.499722 0 + outer loop + vertex -154.649 158.408 -3 + vertex -154.544 158.59 0 + vertex -154.544 158.59 -3 + endloop + endfacet + facet normal -0.866186 0.499722 0 + outer loop + vertex -154.649 158.408 -3 + vertex -154.649 158.408 0 + vertex -154.544 158.59 0 + endloop + endfacet + facet normal -0.898217 0.439553 0 + outer loop + vertex -154.741 158.22 -3 + vertex -154.649 158.408 0 + vertex -154.649 158.408 -3 + endloop + endfacet + facet normal -0.898217 0.439553 0 + outer loop + vertex -154.741 158.22 -3 + vertex -154.741 158.22 0 + vertex -154.649 158.408 0 + endloop + endfacet + facet normal -0.927816 0.373039 0 + outer loop + vertex -154.819 158.026 -3 + vertex -154.741 158.22 0 + vertex -154.741 158.22 -3 + endloop + endfacet + facet normal -0.927816 0.373039 0 + outer loop + vertex -154.819 158.026 -3 + vertex -154.819 158.026 0 + vertex -154.741 158.22 0 + endloop + endfacet + facet normal -0.950577 0.31049 0 + outer loop + vertex -154.884 157.827 -3 + vertex -154.819 158.026 0 + vertex -154.819 158.026 -3 + endloop + endfacet + facet normal -0.950577 0.31049 0 + outer loop + vertex -154.884 157.827 -3 + vertex -154.884 157.827 0 + vertex -154.819 158.026 0 + endloop + endfacet + facet normal -0.970981 0.239158 0 + outer loop + vertex -154.934 157.624 -3 + vertex -154.884 157.827 0 + vertex -154.884 157.827 -3 + endloop + endfacet + facet normal -0.970981 0.239158 0 + outer loop + vertex -154.934 157.624 -3 + vertex -154.934 157.624 0 + vertex -154.884 157.827 0 + endloop + endfacet + facet normal -0.98425 0.176783 0 + outer loop + vertex -154.971 157.418 -3 + vertex -154.934 157.624 0 + vertex -154.934 157.624 -3 + endloop + endfacet + facet normal -0.98425 0.176783 0 + outer loop + vertex -154.971 157.418 -3 + vertex -154.971 157.418 0 + vertex -154.934 157.624 0 + endloop + endfacet + facet normal -0.994505 0.104685 0 + outer loop + vertex -154.993 157.209 -3 + vertex -154.971 157.418 0 + vertex -154.971 157.418 -3 + endloop + endfacet + facet normal -0.994505 0.104685 0 + outer loop + vertex -154.993 157.209 -3 + vertex -154.993 157.209 0 + vertex -154.971 157.418 0 + endloop + endfacet + facet normal -0.99944 0.0334741 0 + outer loop + vertex -155 157 -3 + vertex -154.993 157.209 0 + vertex -154.993 157.209 -3 + endloop + endfacet + facet normal -0.99944 0.0334741 0 + outer loop + vertex -155 157 -3 + vertex -155 157 0 + vertex -154.993 157.209 0 + endloop + endfacet + facet normal -1 0 0 + outer loop + vertex -155 -157 -3 + vertex -155 157 0 + vertex -155 157 -3 + endloop + endfacet + facet normal -1 0 0 + outer loop + vertex -155 -157 -3 + vertex -155 -157 0 + vertex -155 157 0 + endloop + endfacet + facet normal -0.99944 -0.0334741 0 + outer loop + vertex -154.993 -157.209 -3 + vertex -155 -157 0 + vertex -155 -157 -3 + endloop + endfacet + facet normal -0.99944 -0.0334741 0 + outer loop + vertex -154.993 -157.209 -3 + vertex -154.993 -157.209 0 + vertex -155 -157 0 + endloop + endfacet + facet normal -0.994505 -0.104685 0 + outer loop + vertex -154.971 -157.418 -3 + vertex -154.993 -157.209 0 + vertex -154.993 -157.209 -3 + endloop + endfacet + facet normal -0.994505 -0.104685 0 + outer loop + vertex -154.971 -157.418 -3 + vertex -154.971 -157.418 0 + vertex -154.993 -157.209 0 + endloop + endfacet + facet normal -0.98425 -0.176783 0 + outer loop + vertex -154.934 -157.624 -3 + vertex -154.971 -157.418 0 + vertex -154.971 -157.418 -3 + endloop + endfacet + facet normal -0.98425 -0.176783 0 + outer loop + vertex -154.934 -157.624 -3 + vertex -154.934 -157.624 0 + vertex -154.971 -157.418 0 + endloop + endfacet + facet normal -0.970981 -0.239158 0 + outer loop + vertex -154.884 -157.827 -3 + vertex -154.934 -157.624 0 + vertex -154.934 -157.624 -3 + endloop + endfacet + facet normal -0.970981 -0.239158 0 + outer loop + vertex -154.884 -157.827 -3 + vertex -154.884 -157.827 0 + vertex -154.934 -157.624 0 + endloop + endfacet + facet normal -0.950577 -0.31049 0 + outer loop + vertex -154.819 -158.026 -3 + vertex -154.884 -157.827 0 + vertex -154.884 -157.827 -3 + endloop + endfacet + facet normal -0.950577 -0.31049 0 + outer loop + vertex -154.819 -158.026 -3 + vertex -154.819 -158.026 0 + vertex -154.884 -157.827 0 + endloop + endfacet + facet normal -0.927816 -0.373039 0 + outer loop + vertex -154.741 -158.22 -3 + vertex -154.819 -158.026 0 + vertex -154.819 -158.026 -3 + endloop + endfacet + facet normal -0.927816 -0.373039 0 + outer loop + vertex -154.741 -158.22 -3 + vertex -154.741 -158.22 0 + vertex -154.819 -158.026 0 + endloop + endfacet + facet normal -0.898217 -0.439553 0 + outer loop + vertex -154.649 -158.408 -3 + vertex -154.741 -158.22 0 + vertex -154.741 -158.22 -3 + endloop + endfacet + facet normal -0.898217 -0.439553 0 + outer loop + vertex -154.649 -158.408 -3 + vertex -154.649 -158.408 0 + vertex -154.741 -158.22 0 + endloop + endfacet + facet normal -0.866186 -0.499722 0 + outer loop + vertex -154.544 -158.59 -3 + vertex -154.649 -158.408 0 + vertex -154.649 -158.408 -3 + endloop + endfacet + facet normal -0.866186 -0.499722 0 + outer loop + vertex -154.544 -158.59 -3 + vertex -154.544 -158.59 0 + vertex -154.649 -158.408 0 + endloop + endfacet + facet normal -0.828349 -0.560213 0 + outer loop + vertex -154.427 -158.763 -3 + vertex -154.544 -158.59 0 + vertex -154.544 -158.59 -3 + endloop + endfacet + facet normal -0.828349 -0.560213 0 + outer loop + vertex -154.427 -158.763 -3 + vertex -154.427 -158.763 0 + vertex -154.544 -158.59 0 + endloop + endfacet + facet normal -0.787807 -0.615922 0 + outer loop + vertex -154.298 -158.928 -3 + vertex -154.427 -158.763 0 + vertex -154.427 -158.763 -3 + endloop + endfacet + facet normal -0.787807 -0.615922 0 + outer loop + vertex -154.298 -158.928 -3 + vertex -154.298 -158.928 0 + vertex -154.427 -158.763 0 + endloop + endfacet + facet normal -0.744242 -0.66791 0 + outer loop + vertex -154.158 -159.084 -3 + vertex -154.298 -158.928 0 + vertex -154.298 -158.928 -3 + endloop + endfacet + facet normal -0.744242 -0.66791 0 + outer loop + vertex -154.158 -159.084 -3 + vertex -154.158 -159.084 0 + vertex -154.298 -158.928 0 + endloop + endfacet + facet normal -0.692631 -0.721292 0 + outer loop + vertex -154.007 -159.229 -3 + vertex -154.158 -159.084 0 + vertex -154.158 -159.084 -3 + endloop + endfacet + facet normal -0.692631 -0.721292 0 + outer loop + vertex -154.007 -159.229 -3 + vertex -154.007 -159.229 0 + vertex -154.158 -159.084 0 + endloop + endfacet + facet normal -0.644871 -0.764291 0 + outer loop + vertex -153.847 -159.364 -3 + vertex -154.007 -159.229 0 + vertex -154.007 -159.229 -3 + endloop + endfacet + facet normal -0.644871 -0.764291 0 + outer loop + vertex -153.847 -159.364 -3 + vertex -153.847 -159.364 0 + vertex -154.007 -159.229 0 + endloop + endfacet + facet normal -0.588456 -0.808529 0 + outer loop + vertex -153.678 -159.487 -3 + vertex -153.847 -159.364 0 + vertex -153.847 -159.364 -3 + endloop + endfacet + facet normal -0.588456 -0.808529 0 + outer loop + vertex -153.678 -159.487 -3 + vertex -153.678 -159.487 0 + vertex -153.847 -159.364 0 + endloop + endfacet + facet normal -0.529142 -0.848533 0 + outer loop + vertex -153.5 -159.598 -3 + vertex -153.678 -159.487 0 + vertex -153.678 -159.487 -3 + endloop + endfacet + facet normal -0.529142 -0.848533 0 + outer loop + vertex -153.5 -159.598 -3 + vertex -153.5 -159.598 0 + vertex -153.678 -159.487 0 + endloop + endfacet + facet normal -0.468107 -0.883672 0 + outer loop + vertex -153.315 -159.696 -3 + vertex -153.5 -159.598 0 + vertex -153.5 -159.598 -3 + endloop + endfacet + facet normal -0.468107 -0.883672 0 + outer loop + vertex -153.315 -159.696 -3 + vertex -153.315 -159.696 0 + vertex -153.5 -159.598 0 + endloop + endfacet + facet normal -0.410563 -0.911832 0 + outer loop + vertex -153.124 -159.782 -3 + vertex -153.315 -159.696 0 + vertex -153.315 -159.696 -3 + endloop + endfacet + facet normal -0.410563 -0.911832 0 + outer loop + vertex -153.124 -159.782 -3 + vertex -153.124 -159.782 0 + vertex -153.315 -159.696 0 + endloop + endfacet + facet normal -0.339058 -0.940766 0 + outer loop + vertex -152.927 -159.853 -3 + vertex -153.124 -159.782 0 + vertex -153.124 -159.782 -3 + endloop + endfacet + facet normal -0.339058 -0.940766 0 + outer loop + vertex -152.927 -159.853 -3 + vertex -152.927 -159.853 0 + vertex -153.124 -159.782 0 + endloop + endfacet + facet normal -0.277246 -0.960799 0 + outer loop + vertex -152.726 -159.911 -3 + vertex -152.927 -159.853 0 + vertex -152.927 -159.853 -3 + endloop + endfacet + facet normal -0.277246 -0.960799 0 + outer loop + vertex -152.726 -159.911 -3 + vertex -152.726 -159.911 0 + vertex -152.927 -159.853 0 + endloop + endfacet + facet normal -0.205289 -0.978701 0 + outer loop + vertex -152.521 -159.954 -3 + vertex -152.726 -159.911 0 + vertex -152.726 -159.911 -3 + endloop + endfacet + facet normal -0.205289 -0.978701 0 + outer loop + vertex -152.521 -159.954 -3 + vertex -152.521 -159.954 0 + vertex -152.726 -159.911 0 + endloop + endfacet + facet normal -0.143429 -0.989661 0 + outer loop + vertex -152.314 -159.984 -3 + vertex -152.521 -159.954 0 + vertex -152.521 -159.954 -3 + endloop + endfacet + facet normal -0.143429 -0.989661 0 + outer loop + vertex -152.314 -159.984 -3 + vertex -152.314 -159.984 0 + vertex -152.521 -159.954 0 + endloop + endfacet + facet normal -0.0668359 -0.997764 0 + outer loop + vertex -152.105 -159.998 -3 + vertex -152.314 -159.984 0 + vertex -152.314 -159.984 -3 + endloop + endfacet + facet normal -0.0668359 -0.997764 0 + outer loop + vertex -152.105 -159.998 -3 + vertex -152.105 -159.998 0 + vertex -152.314 -159.984 0 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -152.002 -159.998 -3 + vertex -152.105 -159.998 0 + vertex -152.105 -159.998 -3 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -152.002 -159.998 -3 + vertex -152.002 -159.998 0 + vertex -152.105 -159.998 0 + endloop + endfacet + facet normal -0.707107 -0.707107 0 + outer loop + vertex -152 -160 -3 + vertex -152.002 -159.998 0 + vertex -152.002 -159.998 -3 + endloop + endfacet + facet normal -0.707107 -0.707107 0 + outer loop + vertex -152 -160 -3 + vertex -152 -160 0 + vertex -152.002 -159.998 0 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 152 -160 -3 + vertex -152 -160 0 + vertex -152 -160 -3 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 152 -160 -3 + vertex 152 -160 0 + vertex -152 -160 0 + endloop + endfacet + facet normal 0.707107 -0.707107 0 + outer loop + vertex 152.002 -159.998 -3 + vertex 152 -160 0 + vertex 152 -160 -3 + endloop + endfacet + facet normal 0.707107 -0.707107 0 + outer loop + vertex 152.002 -159.998 -3 + vertex 152.002 -159.998 0 + vertex 152 -160 0 + endloop + endfacet +endsolid OpenSCAD_Model diff --git a/resources/profiles/Creality/cr20.svg b/resources/profiles/Creality/cr20.svg new file mode 100644 index 0000000000..338a59975d --- /dev/null +++ b/resources/profiles/Creality/cr20.svg @@ -0,0 +1,4 @@ + + + + diff --git a/resources/profiles/Creality/ender2_bed.stl b/resources/profiles/Creality/ender2_bed.stl index 3cf022ed0b..b2a419fabb 100644 Binary files a/resources/profiles/Creality/ender2_bed.stl and b/resources/profiles/Creality/ender2_bed.stl differ diff --git a/resources/profiles/Creality/ender3_bed.stl b/resources/profiles/Creality/ender3_bed.stl index fb8f86d094..724d8905e0 100644 Binary files a/resources/profiles/Creality/ender3_bed.stl and b/resources/profiles/Creality/ender3_bed.stl differ diff --git a/resources/profiles/Creality/ender5plus.svg b/resources/profiles/Creality/ender5plus.svg new file mode 100644 index 0000000000..b5ac0b0161 --- /dev/null +++ b/resources/profiles/Creality/ender5plus.svg @@ -0,0 +1,4 @@ + + + + diff --git a/resources/profiles/Creality/ender5plus_bed.stl b/resources/profiles/Creality/ender5plus_bed.stl new file mode 100644 index 0000000000..f2d17bd40c --- /dev/null +++ b/resources/profiles/Creality/ender5plus_bed.stl @@ -0,0 +1,2774 @@ +solid OpenSCAD_Model + facet normal 0 0 -1 + outer loop + vertex 182.105 -184.998 -3 + vertex 182.002 -184.998 -3 + vertex 182.314 -184.984 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 182.314 -184.984 -3 + vertex 182.002 -184.998 -3 + vertex 182.521 -184.954 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 185 -182 -3 + vertex 182.002 -184.998 -3 + vertex 182.002 184.998 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 182.521 -184.954 -3 + vertex 182.002 -184.998 -3 + vertex 182.726 -184.911 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 182.726 -184.911 -3 + vertex 182.002 -184.998 -3 + vertex 182.927 -184.853 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 182.927 -184.853 -3 + vertex 182.002 -184.998 -3 + vertex 183.124 -184.782 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 183.124 -184.782 -3 + vertex 182.002 -184.998 -3 + vertex 183.315 -184.696 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 183.315 -184.696 -3 + vertex 182.002 -184.998 -3 + vertex 183.5 -184.598 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 183.5 -184.598 -3 + vertex 182.002 -184.998 -3 + vertex 183.678 -184.487 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 183.678 -184.487 -3 + vertex 182.002 -184.998 -3 + vertex 183.847 -184.364 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 183.847 -184.364 -3 + vertex 182.002 -184.998 -3 + vertex 184.007 -184.229 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 184.007 -184.229 -3 + vertex 182.002 -184.998 -3 + vertex 184.158 -184.084 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 184.158 -184.084 -3 + vertex 182.002 -184.998 -3 + vertex 184.298 -183.928 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 184.298 -183.928 -3 + vertex 182.002 -184.998 -3 + vertex 184.427 -183.763 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 184.427 -183.763 -3 + vertex 182.002 -184.998 -3 + vertex 184.544 -183.59 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 184.544 -183.59 -3 + vertex 182.002 -184.998 -3 + vertex 184.649 -183.408 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 184.649 -183.408 -3 + vertex 182.002 -184.998 -3 + vertex 184.741 -183.22 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 184.741 -183.22 -3 + vertex 182.002 -184.998 -3 + vertex 184.819 -183.026 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 184.819 -183.026 -3 + vertex 182.002 -184.998 -3 + vertex 184.884 -182.827 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 184.884 -182.827 -3 + vertex 182.002 -184.998 -3 + vertex 184.934 -182.624 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 184.934 -182.624 -3 + vertex 182.002 -184.998 -3 + vertex 184.971 -182.418 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 184.971 -182.418 -3 + vertex 182.002 -184.998 -3 + vertex 184.993 -182.209 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 184.993 -182.209 -3 + vertex 182.002 -184.998 -3 + vertex 185 -182 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 185 -182 -3 + vertex 182.002 184.998 -3 + vertex 185 182 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 182.002 184.998 -3 + vertex 184.971 182.418 -3 + vertex 184.993 182.209 -3 + endloop + endfacet + facet normal -0 -0 -1 + outer loop + vertex 184.884 182.827 -3 + vertex 184.934 182.624 -3 + vertex 182.002 184.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 184.741 183.22 -3 + vertex 182.002 184.998 -3 + vertex 184.649 183.408 -3 + endloop + endfacet + facet normal -0 -0 -1 + outer loop + vertex 184.741 183.22 -3 + vertex 184.819 183.026 -3 + vertex 182.002 184.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 182.002 184.998 -3 + vertex 184.007 184.229 -3 + vertex 184.158 184.084 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 184.427 183.763 -3 + vertex 182.002 184.998 -3 + vertex 184.298 183.928 -3 + endloop + endfacet + facet normal -0 -0 -1 + outer loop + vertex 184.427 183.763 -3 + vertex 184.544 183.59 -3 + vertex 182.002 184.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 184.298 183.928 -3 + vertex 182.002 184.998 -3 + vertex 184.158 184.084 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 182.002 184.998 -3 + vertex 182.927 184.853 -3 + vertex 183.124 184.782 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 183.847 184.364 -3 + vertex 182.002 184.998 -3 + vertex 183.678 184.487 -3 + endloop + endfacet + facet normal -0 -0 -1 + outer loop + vertex 183.847 184.364 -3 + vertex 184.007 184.229 -3 + vertex 182.002 184.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 183.678 184.487 -3 + vertex 182.002 184.998 -3 + vertex 183.5 184.598 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 183.5 184.598 -3 + vertex 182.002 184.998 -3 + vertex 183.315 184.696 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 183.315 184.696 -3 + vertex 182.002 184.998 -3 + vertex 183.124 184.782 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 184.649 183.408 -3 + vertex 182.002 184.998 -3 + vertex 184.544 183.59 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 182.726 184.911 -3 + vertex 182.002 184.998 -3 + vertex 182.521 184.954 -3 + endloop + endfacet + facet normal -0 -0 -1 + outer loop + vertex 182.726 184.911 -3 + vertex 182.927 184.853 -3 + vertex 182.002 184.998 -3 + endloop + endfacet + facet normal -0 -0 -1 + outer loop + vertex 184.819 183.026 -3 + vertex 184.884 182.827 -3 + vertex 182.002 184.998 -3 + endloop + endfacet + facet normal -0 -0 -1 + outer loop + vertex 182.314 184.984 -3 + vertex 182.521 184.954 -3 + vertex 182.002 184.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 182.002 184.998 -3 + vertex 184.934 182.624 -3 + vertex 184.971 182.418 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 182.002 184.998 -3 + vertex 182.105 184.998 -3 + vertex 182.314 184.984 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 185 182 -3 + vertex 182.002 184.998 -3 + vertex 184.993 182.209 -3 + endloop + endfacet + facet normal 0 -0 -1 + outer loop + vertex -182 185 -3 + vertex 182 185 -3 + vertex -182.002 184.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -182.002 184.998 -3 + vertex 182 185 -3 + vertex 182.002 184.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 182.002 -184.998 -3 + vertex -182.002 184.998 -3 + vertex 182.002 184.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -185 -182 -3 + vertex -185 182 -3 + vertex -182.002 -184.998 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex -182.002 184.998 -3 + vertex -182.314 184.984 -3 + vertex -182.105 184.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -182.002 184.998 -3 + vertex -182.521 184.954 -3 + vertex -182.314 184.984 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -182.002 184.998 -3 + vertex -182.726 184.911 -3 + vertex -182.521 184.954 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -182.002 184.998 -3 + vertex -182.927 184.853 -3 + vertex -182.726 184.911 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -182.002 184.998 -3 + vertex -183.124 184.782 -3 + vertex -182.927 184.853 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -182.002 184.998 -3 + vertex -183.315 184.696 -3 + vertex -183.124 184.782 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -182.002 184.998 -3 + vertex -183.5 184.598 -3 + vertex -183.315 184.696 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -182.002 184.998 -3 + vertex -183.678 184.487 -3 + vertex -183.5 184.598 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -182.002 184.998 -3 + vertex -183.847 184.364 -3 + vertex -183.678 184.487 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -182.002 184.998 -3 + vertex -184.007 184.229 -3 + vertex -183.847 184.364 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -182.002 184.998 -3 + vertex -184.158 184.084 -3 + vertex -184.007 184.229 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -182.002 184.998 -3 + vertex -184.298 183.928 -3 + vertex -184.158 184.084 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -182.002 184.998 -3 + vertex -184.427 183.763 -3 + vertex -184.298 183.928 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -182.002 184.998 -3 + vertex -184.544 183.59 -3 + vertex -184.427 183.763 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -182.002 184.998 -3 + vertex -184.649 183.408 -3 + vertex -184.544 183.59 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -182.002 184.998 -3 + vertex -184.741 183.22 -3 + vertex -184.649 183.408 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -182.002 184.998 -3 + vertex -184.819 183.026 -3 + vertex -184.741 183.22 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -182.002 184.998 -3 + vertex -184.884 182.827 -3 + vertex -184.819 183.026 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -182.002 184.998 -3 + vertex -184.934 182.624 -3 + vertex -184.884 182.827 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -182.002 184.998 -3 + vertex -184.971 182.418 -3 + vertex -184.934 182.624 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -182.002 184.998 -3 + vertex -184.993 182.209 -3 + vertex -184.971 182.418 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -182.002 184.998 -3 + vertex -185 182 -3 + vertex -184.993 182.209 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -182.002 -184.998 -3 + vertex -185 182 -3 + vertex -182.002 184.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 182.002 -184.998 -3 + vertex -182.002 -184.998 -3 + vertex -182.002 184.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -182.002 -184.998 -3 + vertex -184.971 -182.418 -3 + vertex -184.993 -182.209 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -184.884 -182.827 -3 + vertex -184.934 -182.624 -3 + vertex -182.002 -184.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -184.741 -183.22 -3 + vertex -182.002 -184.998 -3 + vertex -184.649 -183.408 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -184.741 -183.22 -3 + vertex -184.819 -183.026 -3 + vertex -182.002 -184.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -182.002 -184.998 -3 + vertex -184.007 -184.229 -3 + vertex -184.158 -184.084 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -184.427 -183.763 -3 + vertex -182.002 -184.998 -3 + vertex -184.298 -183.928 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -184.427 -183.763 -3 + vertex -184.544 -183.59 -3 + vertex -182.002 -184.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -184.298 -183.928 -3 + vertex -182.002 -184.998 -3 + vertex -184.158 -184.084 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -182.002 -184.998 -3 + vertex -182.927 -184.853 -3 + vertex -183.124 -184.782 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -183.847 -184.364 -3 + vertex -182.002 -184.998 -3 + vertex -183.678 -184.487 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -183.847 -184.364 -3 + vertex -184.007 -184.229 -3 + vertex -182.002 -184.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -183.678 -184.487 -3 + vertex -182.002 -184.998 -3 + vertex -183.5 -184.598 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -183.5 -184.598 -3 + vertex -182.002 -184.998 -3 + vertex -183.315 -184.696 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -183.315 -184.696 -3 + vertex -182.002 -184.998 -3 + vertex -183.124 -184.782 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -184.649 -183.408 -3 + vertex -182.002 -184.998 -3 + vertex -184.544 -183.59 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -182.726 -184.911 -3 + vertex -182.002 -184.998 -3 + vertex -182.521 -184.954 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -182.726 -184.911 -3 + vertex -182.927 -184.853 -3 + vertex -182.002 -184.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -184.819 -183.026 -3 + vertex -184.884 -182.827 -3 + vertex -182.002 -184.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -182.314 -184.984 -3 + vertex -182.521 -184.954 -3 + vertex -182.002 -184.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -182.002 -184.998 -3 + vertex -184.934 -182.624 -3 + vertex -184.971 -182.418 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -182.002 -184.998 -3 + vertex -182.105 -184.998 -3 + vertex -182.314 -184.984 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 182.002 -184.998 -3 + vertex 182 -185 -3 + vertex -182.002 -184.998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -182.002 -184.998 -3 + vertex 182 -185 -3 + vertex -182 -185 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -185 -182 -3 + vertex -182.002 -184.998 -3 + vertex -184.993 -182.209 -3 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 182.314 -184.984 0 + vertex 182.002 -184.998 0 + vertex 182.105 -184.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 182.521 -184.954 0 + vertex 182.002 -184.998 0 + vertex 182.314 -184.984 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 182.002 184.998 0 + vertex 182.002 -184.998 0 + vertex 185 -182 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 182.726 -184.911 0 + vertex 182.002 -184.998 0 + vertex 182.521 -184.954 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 182.927 -184.853 0 + vertex 182.002 -184.998 0 + vertex 182.726 -184.911 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 183.124 -184.782 0 + vertex 182.002 -184.998 0 + vertex 182.927 -184.853 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 183.315 -184.696 0 + vertex 182.002 -184.998 0 + vertex 183.124 -184.782 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 183.5 -184.598 0 + vertex 182.002 -184.998 0 + vertex 183.315 -184.696 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 183.678 -184.487 0 + vertex 182.002 -184.998 0 + vertex 183.5 -184.598 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 183.847 -184.364 0 + vertex 182.002 -184.998 0 + vertex 183.678 -184.487 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 184.007 -184.229 0 + vertex 182.002 -184.998 0 + vertex 183.847 -184.364 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 184.158 -184.084 0 + vertex 182.002 -184.998 0 + vertex 184.007 -184.229 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 184.298 -183.928 0 + vertex 182.002 -184.998 0 + vertex 184.158 -184.084 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 184.427 -183.763 0 + vertex 182.002 -184.998 0 + vertex 184.298 -183.928 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 184.544 -183.59 0 + vertex 182.002 -184.998 0 + vertex 184.427 -183.763 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 184.649 -183.408 0 + vertex 182.002 -184.998 0 + vertex 184.544 -183.59 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 184.741 -183.22 0 + vertex 182.002 -184.998 0 + vertex 184.649 -183.408 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 184.819 -183.026 0 + vertex 182.002 -184.998 0 + vertex 184.741 -183.22 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 184.884 -182.827 0 + vertex 182.002 -184.998 0 + vertex 184.819 -183.026 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 184.934 -182.624 0 + vertex 182.002 -184.998 0 + vertex 184.884 -182.827 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 184.971 -182.418 0 + vertex 182.002 -184.998 0 + vertex 184.934 -182.624 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 184.993 -182.209 0 + vertex 182.002 -184.998 0 + vertex 184.971 -182.418 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 185 -182 0 + vertex 182.002 -184.998 0 + vertex 184.993 -182.209 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 185 182 0 + vertex 182.002 184.998 0 + vertex 185 -182 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 184.993 182.209 0 + vertex 184.971 182.418 0 + vertex 182.002 184.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 182.002 184.998 0 + vertex 184.934 182.624 0 + vertex 184.884 182.827 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 184.649 183.408 0 + vertex 182.002 184.998 0 + vertex 184.741 183.22 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 182.002 184.998 0 + vertex 184.819 183.026 0 + vertex 184.741 183.22 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 184.158 184.084 0 + vertex 184.007 184.229 0 + vertex 182.002 184.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 184.298 183.928 0 + vertex 182.002 184.998 0 + vertex 184.427 183.763 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 182.002 184.998 0 + vertex 184.544 183.59 0 + vertex 184.427 183.763 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 184.158 184.084 0 + vertex 182.002 184.998 0 + vertex 184.298 183.928 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 183.124 184.782 0 + vertex 182.927 184.853 0 + vertex 182.002 184.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 183.678 184.487 0 + vertex 182.002 184.998 0 + vertex 183.847 184.364 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 182.002 184.998 0 + vertex 184.007 184.229 0 + vertex 183.847 184.364 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 183.5 184.598 0 + vertex 182.002 184.998 0 + vertex 183.678 184.487 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 183.315 184.696 0 + vertex 182.002 184.998 0 + vertex 183.5 184.598 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 183.124 184.782 0 + vertex 182.002 184.998 0 + vertex 183.315 184.696 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 184.544 183.59 0 + vertex 182.002 184.998 0 + vertex 184.649 183.408 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 182.521 184.954 0 + vertex 182.002 184.998 0 + vertex 182.726 184.911 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 182.002 184.998 0 + vertex 182.927 184.853 0 + vertex 182.726 184.911 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 182.002 184.998 0 + vertex 184.884 182.827 0 + vertex 184.819 183.026 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 182.002 184.998 0 + vertex 182.521 184.954 0 + vertex 182.314 184.984 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 184.971 182.418 0 + vertex 184.934 182.624 0 + vertex 182.002 184.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 182.314 184.984 0 + vertex 182.105 184.998 0 + vertex 182.002 184.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 184.993 182.209 0 + vertex 182.002 184.998 0 + vertex 185 182 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -182.002 184.998 0 + vertex 182 185 0 + vertex -182 185 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 182.002 184.998 0 + vertex 182 185 0 + vertex -182.002 184.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 182.002 184.998 0 + vertex -182.002 184.998 0 + vertex 182.002 -184.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -182.002 -184.998 0 + vertex -185 182 0 + vertex -185 -182 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -182.105 184.998 0 + vertex -182.314 184.984 0 + vertex -182.002 184.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -182.314 184.984 0 + vertex -182.521 184.954 0 + vertex -182.002 184.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -182.521 184.954 0 + vertex -182.726 184.911 0 + vertex -182.002 184.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -182.726 184.911 0 + vertex -182.927 184.853 0 + vertex -182.002 184.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -182.927 184.853 0 + vertex -183.124 184.782 0 + vertex -182.002 184.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -183.124 184.782 0 + vertex -183.315 184.696 0 + vertex -182.002 184.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -183.315 184.696 0 + vertex -183.5 184.598 0 + vertex -182.002 184.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -183.5 184.598 0 + vertex -183.678 184.487 0 + vertex -182.002 184.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -183.678 184.487 0 + vertex -183.847 184.364 0 + vertex -182.002 184.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -183.847 184.364 0 + vertex -184.007 184.229 0 + vertex -182.002 184.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -184.007 184.229 0 + vertex -184.158 184.084 0 + vertex -182.002 184.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -184.158 184.084 0 + vertex -184.298 183.928 0 + vertex -182.002 184.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -184.298 183.928 0 + vertex -184.427 183.763 0 + vertex -182.002 184.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -184.427 183.763 0 + vertex -184.544 183.59 0 + vertex -182.002 184.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -184.544 183.59 0 + vertex -184.649 183.408 0 + vertex -182.002 184.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -184.649 183.408 0 + vertex -184.741 183.22 0 + vertex -182.002 184.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -184.741 183.22 0 + vertex -184.819 183.026 0 + vertex -182.002 184.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -184.819 183.026 0 + vertex -184.884 182.827 0 + vertex -182.002 184.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -184.884 182.827 0 + vertex -184.934 182.624 0 + vertex -182.002 184.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -184.934 182.624 0 + vertex -184.971 182.418 0 + vertex -182.002 184.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -184.971 182.418 0 + vertex -184.993 182.209 0 + vertex -182.002 184.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -184.993 182.209 0 + vertex -185 182 0 + vertex -182.002 184.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -182.002 184.998 0 + vertex -185 182 0 + vertex -182.002 -184.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -182.002 184.998 0 + vertex -182.002 -184.998 0 + vertex 182.002 -184.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -184.993 -182.209 0 + vertex -184.971 -182.418 0 + vertex -182.002 -184.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -182.002 -184.998 0 + vertex -184.934 -182.624 0 + vertex -184.884 -182.827 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -184.649 -183.408 0 + vertex -182.002 -184.998 0 + vertex -184.741 -183.22 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -182.002 -184.998 0 + vertex -184.819 -183.026 0 + vertex -184.741 -183.22 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -184.158 -184.084 0 + vertex -184.007 -184.229 0 + vertex -182.002 -184.998 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -184.298 -183.928 0 + vertex -182.002 -184.998 0 + vertex -184.427 -183.763 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -182.002 -184.998 0 + vertex -184.544 -183.59 0 + vertex -184.427 -183.763 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -184.158 -184.084 0 + vertex -182.002 -184.998 0 + vertex -184.298 -183.928 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -183.124 -184.782 0 + vertex -182.927 -184.853 0 + vertex -182.002 -184.998 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -183.678 -184.487 0 + vertex -182.002 -184.998 0 + vertex -183.847 -184.364 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -182.002 -184.998 0 + vertex -184.007 -184.229 0 + vertex -183.847 -184.364 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -183.5 -184.598 0 + vertex -182.002 -184.998 0 + vertex -183.678 -184.487 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -183.315 -184.696 0 + vertex -182.002 -184.998 0 + vertex -183.5 -184.598 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -183.124 -184.782 0 + vertex -182.002 -184.998 0 + vertex -183.315 -184.696 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -184.544 -183.59 0 + vertex -182.002 -184.998 0 + vertex -184.649 -183.408 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -182.521 -184.954 0 + vertex -182.002 -184.998 0 + vertex -182.726 -184.911 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -182.002 -184.998 0 + vertex -182.927 -184.853 0 + vertex -182.726 -184.911 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -182.002 -184.998 0 + vertex -184.884 -182.827 0 + vertex -184.819 -183.026 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -182.002 -184.998 0 + vertex -182.521 -184.954 0 + vertex -182.314 -184.984 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -184.971 -182.418 0 + vertex -184.934 -182.624 0 + vertex -182.002 -184.998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -182.314 -184.984 0 + vertex -182.105 -184.998 0 + vertex -182.002 -184.998 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -182.002 -184.998 0 + vertex 182 -185 0 + vertex 182.002 -184.998 0 + endloop + endfacet + facet normal 0 -0 1 + outer loop + vertex -182 -185 0 + vertex 182 -185 0 + vertex -182.002 -184.998 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex -184.993 -182.209 0 + vertex -182.002 -184.998 0 + vertex -185 -182 0 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 182.105 -184.998 -3 + vertex 182.002 -184.998 0 + vertex 182.002 -184.998 -3 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 182.105 -184.998 -3 + vertex 182.105 -184.998 0 + vertex 182.002 -184.998 0 + endloop + endfacet + facet normal 0.0668359 -0.997764 0 + outer loop + vertex 182.314 -184.984 -3 + vertex 182.105 -184.998 0 + vertex 182.105 -184.998 -3 + endloop + endfacet + facet normal 0.0668359 -0.997764 0 + outer loop + vertex 182.314 -184.984 -3 + vertex 182.314 -184.984 0 + vertex 182.105 -184.998 0 + endloop + endfacet + facet normal 0.143429 -0.989661 0 + outer loop + vertex 182.521 -184.954 -3 + vertex 182.314 -184.984 0 + vertex 182.314 -184.984 -3 + endloop + endfacet + facet normal 0.143429 -0.989661 0 + outer loop + vertex 182.521 -184.954 -3 + vertex 182.521 -184.954 0 + vertex 182.314 -184.984 0 + endloop + endfacet + facet normal 0.205289 -0.978701 0 + outer loop + vertex 182.726 -184.911 -3 + vertex 182.521 -184.954 0 + vertex 182.521 -184.954 -3 + endloop + endfacet + facet normal 0.205289 -0.978701 0 + outer loop + vertex 182.726 -184.911 -3 + vertex 182.726 -184.911 0 + vertex 182.521 -184.954 0 + endloop + endfacet + facet normal 0.277246 -0.960799 0 + outer loop + vertex 182.927 -184.853 -3 + vertex 182.726 -184.911 0 + vertex 182.726 -184.911 -3 + endloop + endfacet + facet normal 0.277246 -0.960799 0 + outer loop + vertex 182.927 -184.853 -3 + vertex 182.927 -184.853 0 + vertex 182.726 -184.911 0 + endloop + endfacet + facet normal 0.339058 -0.940766 0 + outer loop + vertex 183.124 -184.782 -3 + vertex 182.927 -184.853 0 + vertex 182.927 -184.853 -3 + endloop + endfacet + facet normal 0.339058 -0.940766 0 + outer loop + vertex 183.124 -184.782 -3 + vertex 183.124 -184.782 0 + vertex 182.927 -184.853 0 + endloop + endfacet + facet normal 0.410563 -0.911832 0 + outer loop + vertex 183.315 -184.696 -3 + vertex 183.124 -184.782 0 + vertex 183.124 -184.782 -3 + endloop + endfacet + facet normal 0.410563 -0.911832 0 + outer loop + vertex 183.315 -184.696 -3 + vertex 183.315 -184.696 0 + vertex 183.124 -184.782 0 + endloop + endfacet + facet normal 0.468107 -0.883672 0 + outer loop + vertex 183.5 -184.598 -3 + vertex 183.315 -184.696 0 + vertex 183.315 -184.696 -3 + endloop + endfacet + facet normal 0.468107 -0.883672 0 + outer loop + vertex 183.5 -184.598 -3 + vertex 183.5 -184.598 0 + vertex 183.315 -184.696 0 + endloop + endfacet + facet normal 0.529142 -0.848533 0 + outer loop + vertex 183.678 -184.487 -3 + vertex 183.5 -184.598 0 + vertex 183.5 -184.598 -3 + endloop + endfacet + facet normal 0.529142 -0.848533 0 + outer loop + vertex 183.678 -184.487 -3 + vertex 183.678 -184.487 0 + vertex 183.5 -184.598 0 + endloop + endfacet + facet normal 0.588456 -0.808529 0 + outer loop + vertex 183.847 -184.364 -3 + vertex 183.678 -184.487 0 + vertex 183.678 -184.487 -3 + endloop + endfacet + facet normal 0.588456 -0.808529 0 + outer loop + vertex 183.847 -184.364 -3 + vertex 183.847 -184.364 0 + vertex 183.678 -184.487 0 + endloop + endfacet + facet normal 0.644871 -0.764291 0 + outer loop + vertex 184.007 -184.229 -3 + vertex 183.847 -184.364 0 + vertex 183.847 -184.364 -3 + endloop + endfacet + facet normal 0.644871 -0.764291 0 + outer loop + vertex 184.007 -184.229 -3 + vertex 184.007 -184.229 0 + vertex 183.847 -184.364 0 + endloop + endfacet + facet normal 0.692631 -0.721292 0 + outer loop + vertex 184.158 -184.084 -3 + vertex 184.007 -184.229 0 + vertex 184.007 -184.229 -3 + endloop + endfacet + facet normal 0.692631 -0.721292 0 + outer loop + vertex 184.158 -184.084 -3 + vertex 184.158 -184.084 0 + vertex 184.007 -184.229 0 + endloop + endfacet + facet normal 0.744242 -0.66791 0 + outer loop + vertex 184.298 -183.928 -3 + vertex 184.158 -184.084 0 + vertex 184.158 -184.084 -3 + endloop + endfacet + facet normal 0.744242 -0.66791 0 + outer loop + vertex 184.298 -183.928 -3 + vertex 184.298 -183.928 0 + vertex 184.158 -184.084 0 + endloop + endfacet + facet normal 0.787807 -0.615922 0 + outer loop + vertex 184.427 -183.763 -3 + vertex 184.298 -183.928 0 + vertex 184.298 -183.928 -3 + endloop + endfacet + facet normal 0.787807 -0.615922 0 + outer loop + vertex 184.427 -183.763 -3 + vertex 184.427 -183.763 0 + vertex 184.298 -183.928 0 + endloop + endfacet + facet normal 0.828349 -0.560213 0 + outer loop + vertex 184.544 -183.59 -3 + vertex 184.427 -183.763 0 + vertex 184.427 -183.763 -3 + endloop + endfacet + facet normal 0.828349 -0.560213 0 + outer loop + vertex 184.544 -183.59 -3 + vertex 184.544 -183.59 0 + vertex 184.427 -183.763 0 + endloop + endfacet + facet normal 0.866186 -0.499722 0 + outer loop + vertex 184.649 -183.408 -3 + vertex 184.544 -183.59 0 + vertex 184.544 -183.59 -3 + endloop + endfacet + facet normal 0.866186 -0.499722 0 + outer loop + vertex 184.649 -183.408 -3 + vertex 184.649 -183.408 0 + vertex 184.544 -183.59 0 + endloop + endfacet + facet normal 0.898217 -0.439553 0 + outer loop + vertex 184.741 -183.22 -3 + vertex 184.649 -183.408 0 + vertex 184.649 -183.408 -3 + endloop + endfacet + facet normal 0.898217 -0.439553 0 + outer loop + vertex 184.741 -183.22 -3 + vertex 184.741 -183.22 0 + vertex 184.649 -183.408 0 + endloop + endfacet + facet normal 0.927816 -0.373039 0 + outer loop + vertex 184.819 -183.026 -3 + vertex 184.741 -183.22 0 + vertex 184.741 -183.22 -3 + endloop + endfacet + facet normal 0.927816 -0.373039 0 + outer loop + vertex 184.819 -183.026 -3 + vertex 184.819 -183.026 0 + vertex 184.741 -183.22 0 + endloop + endfacet + facet normal 0.950577 -0.31049 0 + outer loop + vertex 184.884 -182.827 -3 + vertex 184.819 -183.026 0 + vertex 184.819 -183.026 -3 + endloop + endfacet + facet normal 0.950577 -0.31049 0 + outer loop + vertex 184.884 -182.827 -3 + vertex 184.884 -182.827 0 + vertex 184.819 -183.026 0 + endloop + endfacet + facet normal 0.970981 -0.239158 0 + outer loop + vertex 184.934 -182.624 -3 + vertex 184.884 -182.827 0 + vertex 184.884 -182.827 -3 + endloop + endfacet + facet normal 0.970981 -0.239158 0 + outer loop + vertex 184.934 -182.624 -3 + vertex 184.934 -182.624 0 + vertex 184.884 -182.827 0 + endloop + endfacet + facet normal 0.98425 -0.176783 0 + outer loop + vertex 184.971 -182.418 -3 + vertex 184.934 -182.624 0 + vertex 184.934 -182.624 -3 + endloop + endfacet + facet normal 0.98425 -0.176783 0 + outer loop + vertex 184.971 -182.418 -3 + vertex 184.971 -182.418 0 + vertex 184.934 -182.624 0 + endloop + endfacet + facet normal 0.994505 -0.104685 0 + outer loop + vertex 184.993 -182.209 -3 + vertex 184.971 -182.418 0 + vertex 184.971 -182.418 -3 + endloop + endfacet + facet normal 0.994505 -0.104685 0 + outer loop + vertex 184.993 -182.209 -3 + vertex 184.993 -182.209 0 + vertex 184.971 -182.418 0 + endloop + endfacet + facet normal 0.99944 -0.0334741 0 + outer loop + vertex 185 -182 -3 + vertex 184.993 -182.209 0 + vertex 184.993 -182.209 -3 + endloop + endfacet + facet normal 0.99944 -0.0334741 0 + outer loop + vertex 185 -182 -3 + vertex 185 -182 0 + vertex 184.993 -182.209 0 + endloop + endfacet + facet normal 1 0 0 + outer loop + vertex 185 182 -3 + vertex 185 -182 0 + vertex 185 -182 -3 + endloop + endfacet + facet normal 1 0 -0 + outer loop + vertex 185 182 -3 + vertex 185 182 0 + vertex 185 -182 0 + endloop + endfacet + facet normal 0.99944 0.0334741 0 + outer loop + vertex 184.993 182.209 -3 + vertex 185 182 0 + vertex 185 182 -3 + endloop + endfacet + facet normal 0.99944 0.0334741 -0 + outer loop + vertex 184.993 182.209 -3 + vertex 184.993 182.209 0 + vertex 185 182 0 + endloop + endfacet + facet normal 0.994505 0.104685 0 + outer loop + vertex 184.971 182.418 -3 + vertex 184.993 182.209 0 + vertex 184.993 182.209 -3 + endloop + endfacet + facet normal 0.994505 0.104685 -0 + outer loop + vertex 184.971 182.418 -3 + vertex 184.971 182.418 0 + vertex 184.993 182.209 0 + endloop + endfacet + facet normal 0.98425 0.176783 0 + outer loop + vertex 184.934 182.624 -3 + vertex 184.971 182.418 0 + vertex 184.971 182.418 -3 + endloop + endfacet + facet normal 0.98425 0.176783 -0 + outer loop + vertex 184.934 182.624 -3 + vertex 184.934 182.624 0 + vertex 184.971 182.418 0 + endloop + endfacet + facet normal 0.970981 0.239158 0 + outer loop + vertex 184.884 182.827 -3 + vertex 184.934 182.624 0 + vertex 184.934 182.624 -3 + endloop + endfacet + facet normal 0.970981 0.239158 -0 + outer loop + vertex 184.884 182.827 -3 + vertex 184.884 182.827 0 + vertex 184.934 182.624 0 + endloop + endfacet + facet normal 0.950577 0.31049 0 + outer loop + vertex 184.819 183.026 -3 + vertex 184.884 182.827 0 + vertex 184.884 182.827 -3 + endloop + endfacet + facet normal 0.950577 0.31049 -0 + outer loop + vertex 184.819 183.026 -3 + vertex 184.819 183.026 0 + vertex 184.884 182.827 0 + endloop + endfacet + facet normal 0.927816 0.373039 0 + outer loop + vertex 184.741 183.22 -3 + vertex 184.819 183.026 0 + vertex 184.819 183.026 -3 + endloop + endfacet + facet normal 0.927816 0.373039 -0 + outer loop + vertex 184.741 183.22 -3 + vertex 184.741 183.22 0 + vertex 184.819 183.026 0 + endloop + endfacet + facet normal 0.898217 0.439553 0 + outer loop + vertex 184.649 183.408 -3 + vertex 184.741 183.22 0 + vertex 184.741 183.22 -3 + endloop + endfacet + facet normal 0.898217 0.439553 -0 + outer loop + vertex 184.649 183.408 -3 + vertex 184.649 183.408 0 + vertex 184.741 183.22 0 + endloop + endfacet + facet normal 0.866186 0.499722 0 + outer loop + vertex 184.544 183.59 -3 + vertex 184.649 183.408 0 + vertex 184.649 183.408 -3 + endloop + endfacet + facet normal 0.866186 0.499722 -0 + outer loop + vertex 184.544 183.59 -3 + vertex 184.544 183.59 0 + vertex 184.649 183.408 0 + endloop + endfacet + facet normal 0.828349 0.560213 0 + outer loop + vertex 184.427 183.763 -3 + vertex 184.544 183.59 0 + vertex 184.544 183.59 -3 + endloop + endfacet + facet normal 0.828349 0.560213 -0 + outer loop + vertex 184.427 183.763 -3 + vertex 184.427 183.763 0 + vertex 184.544 183.59 0 + endloop + endfacet + facet normal 0.787807 0.615922 0 + outer loop + vertex 184.298 183.928 -3 + vertex 184.427 183.763 0 + vertex 184.427 183.763 -3 + endloop + endfacet + facet normal 0.787807 0.615922 -0 + outer loop + vertex 184.298 183.928 -3 + vertex 184.298 183.928 0 + vertex 184.427 183.763 0 + endloop + endfacet + facet normal 0.744242 0.66791 0 + outer loop + vertex 184.158 184.084 -3 + vertex 184.298 183.928 0 + vertex 184.298 183.928 -3 + endloop + endfacet + facet normal 0.744242 0.66791 -0 + outer loop + vertex 184.158 184.084 -3 + vertex 184.158 184.084 0 + vertex 184.298 183.928 0 + endloop + endfacet + facet normal 0.692631 0.721292 0 + outer loop + vertex 184.007 184.229 -3 + vertex 184.158 184.084 0 + vertex 184.158 184.084 -3 + endloop + endfacet + facet normal 0.692631 0.721292 -0 + outer loop + vertex 184.007 184.229 -3 + vertex 184.007 184.229 0 + vertex 184.158 184.084 0 + endloop + endfacet + facet normal 0.644871 0.764291 0 + outer loop + vertex 183.847 184.364 -3 + vertex 184.007 184.229 0 + vertex 184.007 184.229 -3 + endloop + endfacet + facet normal 0.644871 0.764291 -0 + outer loop + vertex 183.847 184.364 -3 + vertex 183.847 184.364 0 + vertex 184.007 184.229 0 + endloop + endfacet + facet normal 0.588456 0.808529 0 + outer loop + vertex 183.678 184.487 -3 + vertex 183.847 184.364 0 + vertex 183.847 184.364 -3 + endloop + endfacet + facet normal 0.588456 0.808529 -0 + outer loop + vertex 183.678 184.487 -3 + vertex 183.678 184.487 0 + vertex 183.847 184.364 0 + endloop + endfacet + facet normal 0.529142 0.848533 0 + outer loop + vertex 183.5 184.598 -3 + vertex 183.678 184.487 0 + vertex 183.678 184.487 -3 + endloop + endfacet + facet normal 0.529142 0.848533 -0 + outer loop + vertex 183.5 184.598 -3 + vertex 183.5 184.598 0 + vertex 183.678 184.487 0 + endloop + endfacet + facet normal 0.468107 0.883672 0 + outer loop + vertex 183.315 184.696 -3 + vertex 183.5 184.598 0 + vertex 183.5 184.598 -3 + endloop + endfacet + facet normal 0.468107 0.883672 -0 + outer loop + vertex 183.315 184.696 -3 + vertex 183.315 184.696 0 + vertex 183.5 184.598 0 + endloop + endfacet + facet normal 0.410563 0.911832 0 + outer loop + vertex 183.124 184.782 -3 + vertex 183.315 184.696 0 + vertex 183.315 184.696 -3 + endloop + endfacet + facet normal 0.410563 0.911832 -0 + outer loop + vertex 183.124 184.782 -3 + vertex 183.124 184.782 0 + vertex 183.315 184.696 0 + endloop + endfacet + facet normal 0.339058 0.940766 0 + outer loop + vertex 182.927 184.853 -3 + vertex 183.124 184.782 0 + vertex 183.124 184.782 -3 + endloop + endfacet + facet normal 0.339058 0.940766 -0 + outer loop + vertex 182.927 184.853 -3 + vertex 182.927 184.853 0 + vertex 183.124 184.782 0 + endloop + endfacet + facet normal 0.277246 0.960799 0 + outer loop + vertex 182.726 184.911 -3 + vertex 182.927 184.853 0 + vertex 182.927 184.853 -3 + endloop + endfacet + facet normal 0.277246 0.960799 -0 + outer loop + vertex 182.726 184.911 -3 + vertex 182.726 184.911 0 + vertex 182.927 184.853 0 + endloop + endfacet + facet normal 0.205289 0.978701 0 + outer loop + vertex 182.521 184.954 -3 + vertex 182.726 184.911 0 + vertex 182.726 184.911 -3 + endloop + endfacet + facet normal 0.205289 0.978701 -0 + outer loop + vertex 182.521 184.954 -3 + vertex 182.521 184.954 0 + vertex 182.726 184.911 0 + endloop + endfacet + facet normal 0.143429 0.989661 0 + outer loop + vertex 182.314 184.984 -3 + vertex 182.521 184.954 0 + vertex 182.521 184.954 -3 + endloop + endfacet + facet normal 0.143429 0.989661 -0 + outer loop + vertex 182.314 184.984 -3 + vertex 182.314 184.984 0 + vertex 182.521 184.954 0 + endloop + endfacet + facet normal 0.0668359 0.997764 0 + outer loop + vertex 182.105 184.998 -3 + vertex 182.314 184.984 0 + vertex 182.314 184.984 -3 + endloop + endfacet + facet normal 0.0668359 0.997764 -0 + outer loop + vertex 182.105 184.998 -3 + vertex 182.105 184.998 0 + vertex 182.314 184.984 0 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex 182.002 184.998 -3 + vertex 182.105 184.998 0 + vertex 182.105 184.998 -3 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex 182.002 184.998 -3 + vertex 182.002 184.998 0 + vertex 182.105 184.998 0 + endloop + endfacet + facet normal 0.707107 0.707107 0 + outer loop + vertex 182 185 -3 + vertex 182.002 184.998 0 + vertex 182.002 184.998 -3 + endloop + endfacet + facet normal 0.707107 0.707107 -0 + outer loop + vertex 182 185 -3 + vertex 182 185 0 + vertex 182.002 184.998 0 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -182 185 -3 + vertex 182 185 0 + vertex 182 185 -3 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -182 185 -3 + vertex -182 185 0 + vertex 182 185 0 + endloop + endfacet + facet normal -0.707107 0.707107 0 + outer loop + vertex -182.002 184.998 -3 + vertex -182 185 0 + vertex -182 185 -3 + endloop + endfacet + facet normal -0.707107 0.707107 0 + outer loop + vertex -182.002 184.998 -3 + vertex -182.002 184.998 0 + vertex -182 185 0 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -182.105 184.998 -3 + vertex -182.002 184.998 0 + vertex -182.002 184.998 -3 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -182.105 184.998 -3 + vertex -182.105 184.998 0 + vertex -182.002 184.998 0 + endloop + endfacet + facet normal -0.0668359 0.997764 0 + outer loop + vertex -182.314 184.984 -3 + vertex -182.105 184.998 0 + vertex -182.105 184.998 -3 + endloop + endfacet + facet normal -0.0668359 0.997764 0 + outer loop + vertex -182.314 184.984 -3 + vertex -182.314 184.984 0 + vertex -182.105 184.998 0 + endloop + endfacet + facet normal -0.143429 0.989661 0 + outer loop + vertex -182.521 184.954 -3 + vertex -182.314 184.984 0 + vertex -182.314 184.984 -3 + endloop + endfacet + facet normal -0.143429 0.989661 0 + outer loop + vertex -182.521 184.954 -3 + vertex -182.521 184.954 0 + vertex -182.314 184.984 0 + endloop + endfacet + facet normal -0.205289 0.978701 0 + outer loop + vertex -182.726 184.911 -3 + vertex -182.521 184.954 0 + vertex -182.521 184.954 -3 + endloop + endfacet + facet normal -0.205289 0.978701 0 + outer loop + vertex -182.726 184.911 -3 + vertex -182.726 184.911 0 + vertex -182.521 184.954 0 + endloop + endfacet + facet normal -0.277246 0.960799 0 + outer loop + vertex -182.927 184.853 -3 + vertex -182.726 184.911 0 + vertex -182.726 184.911 -3 + endloop + endfacet + facet normal -0.277246 0.960799 0 + outer loop + vertex -182.927 184.853 -3 + vertex -182.927 184.853 0 + vertex -182.726 184.911 0 + endloop + endfacet + facet normal -0.339058 0.940766 0 + outer loop + vertex -183.124 184.782 -3 + vertex -182.927 184.853 0 + vertex -182.927 184.853 -3 + endloop + endfacet + facet normal -0.339058 0.940766 0 + outer loop + vertex -183.124 184.782 -3 + vertex -183.124 184.782 0 + vertex -182.927 184.853 0 + endloop + endfacet + facet normal -0.410563 0.911832 0 + outer loop + vertex -183.315 184.696 -3 + vertex -183.124 184.782 0 + vertex -183.124 184.782 -3 + endloop + endfacet + facet normal -0.410563 0.911832 0 + outer loop + vertex -183.315 184.696 -3 + vertex -183.315 184.696 0 + vertex -183.124 184.782 0 + endloop + endfacet + facet normal -0.468107 0.883672 0 + outer loop + vertex -183.5 184.598 -3 + vertex -183.315 184.696 0 + vertex -183.315 184.696 -3 + endloop + endfacet + facet normal -0.468107 0.883672 0 + outer loop + vertex -183.5 184.598 -3 + vertex -183.5 184.598 0 + vertex -183.315 184.696 0 + endloop + endfacet + facet normal -0.529142 0.848533 0 + outer loop + vertex -183.678 184.487 -3 + vertex -183.5 184.598 0 + vertex -183.5 184.598 -3 + endloop + endfacet + facet normal -0.529142 0.848533 0 + outer loop + vertex -183.678 184.487 -3 + vertex -183.678 184.487 0 + vertex -183.5 184.598 0 + endloop + endfacet + facet normal -0.588456 0.808529 0 + outer loop + vertex -183.847 184.364 -3 + vertex -183.678 184.487 0 + vertex -183.678 184.487 -3 + endloop + endfacet + facet normal -0.588456 0.808529 0 + outer loop + vertex -183.847 184.364 -3 + vertex -183.847 184.364 0 + vertex -183.678 184.487 0 + endloop + endfacet + facet normal -0.644871 0.764291 0 + outer loop + vertex -184.007 184.229 -3 + vertex -183.847 184.364 0 + vertex -183.847 184.364 -3 + endloop + endfacet + facet normal -0.644871 0.764291 0 + outer loop + vertex -184.007 184.229 -3 + vertex -184.007 184.229 0 + vertex -183.847 184.364 0 + endloop + endfacet + facet normal -0.692631 0.721292 0 + outer loop + vertex -184.158 184.084 -3 + vertex -184.007 184.229 0 + vertex -184.007 184.229 -3 + endloop + endfacet + facet normal -0.692631 0.721292 0 + outer loop + vertex -184.158 184.084 -3 + vertex -184.158 184.084 0 + vertex -184.007 184.229 0 + endloop + endfacet + facet normal -0.744242 0.66791 0 + outer loop + vertex -184.298 183.928 -3 + vertex -184.158 184.084 0 + vertex -184.158 184.084 -3 + endloop + endfacet + facet normal -0.744242 0.66791 0 + outer loop + vertex -184.298 183.928 -3 + vertex -184.298 183.928 0 + vertex -184.158 184.084 0 + endloop + endfacet + facet normal -0.787807 0.615922 0 + outer loop + vertex -184.427 183.763 -3 + vertex -184.298 183.928 0 + vertex -184.298 183.928 -3 + endloop + endfacet + facet normal -0.787807 0.615922 0 + outer loop + vertex -184.427 183.763 -3 + vertex -184.427 183.763 0 + vertex -184.298 183.928 0 + endloop + endfacet + facet normal -0.828349 0.560213 0 + outer loop + vertex -184.544 183.59 -3 + vertex -184.427 183.763 0 + vertex -184.427 183.763 -3 + endloop + endfacet + facet normal -0.828349 0.560213 0 + outer loop + vertex -184.544 183.59 -3 + vertex -184.544 183.59 0 + vertex -184.427 183.763 0 + endloop + endfacet + facet normal -0.866186 0.499722 0 + outer loop + vertex -184.649 183.408 -3 + vertex -184.544 183.59 0 + vertex -184.544 183.59 -3 + endloop + endfacet + facet normal -0.866186 0.499722 0 + outer loop + vertex -184.649 183.408 -3 + vertex -184.649 183.408 0 + vertex -184.544 183.59 0 + endloop + endfacet + facet normal -0.898217 0.439553 0 + outer loop + vertex -184.741 183.22 -3 + vertex -184.649 183.408 0 + vertex -184.649 183.408 -3 + endloop + endfacet + facet normal -0.898217 0.439553 0 + outer loop + vertex -184.741 183.22 -3 + vertex -184.741 183.22 0 + vertex -184.649 183.408 0 + endloop + endfacet + facet normal -0.927816 0.373039 0 + outer loop + vertex -184.819 183.026 -3 + vertex -184.741 183.22 0 + vertex -184.741 183.22 -3 + endloop + endfacet + facet normal -0.927816 0.373039 0 + outer loop + vertex -184.819 183.026 -3 + vertex -184.819 183.026 0 + vertex -184.741 183.22 0 + endloop + endfacet + facet normal -0.950577 0.31049 0 + outer loop + vertex -184.884 182.827 -3 + vertex -184.819 183.026 0 + vertex -184.819 183.026 -3 + endloop + endfacet + facet normal -0.950577 0.31049 0 + outer loop + vertex -184.884 182.827 -3 + vertex -184.884 182.827 0 + vertex -184.819 183.026 0 + endloop + endfacet + facet normal -0.970981 0.239158 0 + outer loop + vertex -184.934 182.624 -3 + vertex -184.884 182.827 0 + vertex -184.884 182.827 -3 + endloop + endfacet + facet normal -0.970981 0.239158 0 + outer loop + vertex -184.934 182.624 -3 + vertex -184.934 182.624 0 + vertex -184.884 182.827 0 + endloop + endfacet + facet normal -0.98425 0.176783 0 + outer loop + vertex -184.971 182.418 -3 + vertex -184.934 182.624 0 + vertex -184.934 182.624 -3 + endloop + endfacet + facet normal -0.98425 0.176783 0 + outer loop + vertex -184.971 182.418 -3 + vertex -184.971 182.418 0 + vertex -184.934 182.624 0 + endloop + endfacet + facet normal -0.994505 0.104685 0 + outer loop + vertex -184.993 182.209 -3 + vertex -184.971 182.418 0 + vertex -184.971 182.418 -3 + endloop + endfacet + facet normal -0.994505 0.104685 0 + outer loop + vertex -184.993 182.209 -3 + vertex -184.993 182.209 0 + vertex -184.971 182.418 0 + endloop + endfacet + facet normal -0.99944 0.0334741 0 + outer loop + vertex -185 182 -3 + vertex -184.993 182.209 0 + vertex -184.993 182.209 -3 + endloop + endfacet + facet normal -0.99944 0.0334741 0 + outer loop + vertex -185 182 -3 + vertex -185 182 0 + vertex -184.993 182.209 0 + endloop + endfacet + facet normal -1 0 0 + outer loop + vertex -185 -182 -3 + vertex -185 182 0 + vertex -185 182 -3 + endloop + endfacet + facet normal -1 0 0 + outer loop + vertex -185 -182 -3 + vertex -185 -182 0 + vertex -185 182 0 + endloop + endfacet + facet normal -0.99944 -0.0334741 0 + outer loop + vertex -184.993 -182.209 -3 + vertex -185 -182 0 + vertex -185 -182 -3 + endloop + endfacet + facet normal -0.99944 -0.0334741 0 + outer loop + vertex -184.993 -182.209 -3 + vertex -184.993 -182.209 0 + vertex -185 -182 0 + endloop + endfacet + facet normal -0.994505 -0.104685 0 + outer loop + vertex -184.971 -182.418 -3 + vertex -184.993 -182.209 0 + vertex -184.993 -182.209 -3 + endloop + endfacet + facet normal -0.994505 -0.104685 0 + outer loop + vertex -184.971 -182.418 -3 + vertex -184.971 -182.418 0 + vertex -184.993 -182.209 0 + endloop + endfacet + facet normal -0.98425 -0.176783 0 + outer loop + vertex -184.934 -182.624 -3 + vertex -184.971 -182.418 0 + vertex -184.971 -182.418 -3 + endloop + endfacet + facet normal -0.98425 -0.176783 0 + outer loop + vertex -184.934 -182.624 -3 + vertex -184.934 -182.624 0 + vertex -184.971 -182.418 0 + endloop + endfacet + facet normal -0.970981 -0.239158 0 + outer loop + vertex -184.884 -182.827 -3 + vertex -184.934 -182.624 0 + vertex -184.934 -182.624 -3 + endloop + endfacet + facet normal -0.970981 -0.239158 0 + outer loop + vertex -184.884 -182.827 -3 + vertex -184.884 -182.827 0 + vertex -184.934 -182.624 0 + endloop + endfacet + facet normal -0.950577 -0.31049 0 + outer loop + vertex -184.819 -183.026 -3 + vertex -184.884 -182.827 0 + vertex -184.884 -182.827 -3 + endloop + endfacet + facet normal -0.950577 -0.31049 0 + outer loop + vertex -184.819 -183.026 -3 + vertex -184.819 -183.026 0 + vertex -184.884 -182.827 0 + endloop + endfacet + facet normal -0.927816 -0.373039 0 + outer loop + vertex -184.741 -183.22 -3 + vertex -184.819 -183.026 0 + vertex -184.819 -183.026 -3 + endloop + endfacet + facet normal -0.927816 -0.373039 0 + outer loop + vertex -184.741 -183.22 -3 + vertex -184.741 -183.22 0 + vertex -184.819 -183.026 0 + endloop + endfacet + facet normal -0.898217 -0.439553 0 + outer loop + vertex -184.649 -183.408 -3 + vertex -184.741 -183.22 0 + vertex -184.741 -183.22 -3 + endloop + endfacet + facet normal -0.898217 -0.439553 0 + outer loop + vertex -184.649 -183.408 -3 + vertex -184.649 -183.408 0 + vertex -184.741 -183.22 0 + endloop + endfacet + facet normal -0.866186 -0.499722 0 + outer loop + vertex -184.544 -183.59 -3 + vertex -184.649 -183.408 0 + vertex -184.649 -183.408 -3 + endloop + endfacet + facet normal -0.866186 -0.499722 0 + outer loop + vertex -184.544 -183.59 -3 + vertex -184.544 -183.59 0 + vertex -184.649 -183.408 0 + endloop + endfacet + facet normal -0.828349 -0.560213 0 + outer loop + vertex -184.427 -183.763 -3 + vertex -184.544 -183.59 0 + vertex -184.544 -183.59 -3 + endloop + endfacet + facet normal -0.828349 -0.560213 0 + outer loop + vertex -184.427 -183.763 -3 + vertex -184.427 -183.763 0 + vertex -184.544 -183.59 0 + endloop + endfacet + facet normal -0.787807 -0.615922 0 + outer loop + vertex -184.298 -183.928 -3 + vertex -184.427 -183.763 0 + vertex -184.427 -183.763 -3 + endloop + endfacet + facet normal -0.787807 -0.615922 0 + outer loop + vertex -184.298 -183.928 -3 + vertex -184.298 -183.928 0 + vertex -184.427 -183.763 0 + endloop + endfacet + facet normal -0.744242 -0.66791 0 + outer loop + vertex -184.158 -184.084 -3 + vertex -184.298 -183.928 0 + vertex -184.298 -183.928 -3 + endloop + endfacet + facet normal -0.744242 -0.66791 0 + outer loop + vertex -184.158 -184.084 -3 + vertex -184.158 -184.084 0 + vertex -184.298 -183.928 0 + endloop + endfacet + facet normal -0.692631 -0.721292 0 + outer loop + vertex -184.007 -184.229 -3 + vertex -184.158 -184.084 0 + vertex -184.158 -184.084 -3 + endloop + endfacet + facet normal -0.692631 -0.721292 0 + outer loop + vertex -184.007 -184.229 -3 + vertex -184.007 -184.229 0 + vertex -184.158 -184.084 0 + endloop + endfacet + facet normal -0.644871 -0.764291 0 + outer loop + vertex -183.847 -184.364 -3 + vertex -184.007 -184.229 0 + vertex -184.007 -184.229 -3 + endloop + endfacet + facet normal -0.644871 -0.764291 0 + outer loop + vertex -183.847 -184.364 -3 + vertex -183.847 -184.364 0 + vertex -184.007 -184.229 0 + endloop + endfacet + facet normal -0.588456 -0.808529 0 + outer loop + vertex -183.678 -184.487 -3 + vertex -183.847 -184.364 0 + vertex -183.847 -184.364 -3 + endloop + endfacet + facet normal -0.588456 -0.808529 0 + outer loop + vertex -183.678 -184.487 -3 + vertex -183.678 -184.487 0 + vertex -183.847 -184.364 0 + endloop + endfacet + facet normal -0.529142 -0.848533 0 + outer loop + vertex -183.5 -184.598 -3 + vertex -183.678 -184.487 0 + vertex -183.678 -184.487 -3 + endloop + endfacet + facet normal -0.529142 -0.848533 0 + outer loop + vertex -183.5 -184.598 -3 + vertex -183.5 -184.598 0 + vertex -183.678 -184.487 0 + endloop + endfacet + facet normal -0.468107 -0.883672 0 + outer loop + vertex -183.315 -184.696 -3 + vertex -183.5 -184.598 0 + vertex -183.5 -184.598 -3 + endloop + endfacet + facet normal -0.468107 -0.883672 0 + outer loop + vertex -183.315 -184.696 -3 + vertex -183.315 -184.696 0 + vertex -183.5 -184.598 0 + endloop + endfacet + facet normal -0.410563 -0.911832 0 + outer loop + vertex -183.124 -184.782 -3 + vertex -183.315 -184.696 0 + vertex -183.315 -184.696 -3 + endloop + endfacet + facet normal -0.410563 -0.911832 0 + outer loop + vertex -183.124 -184.782 -3 + vertex -183.124 -184.782 0 + vertex -183.315 -184.696 0 + endloop + endfacet + facet normal -0.339058 -0.940766 0 + outer loop + vertex -182.927 -184.853 -3 + vertex -183.124 -184.782 0 + vertex -183.124 -184.782 -3 + endloop + endfacet + facet normal -0.339058 -0.940766 0 + outer loop + vertex -182.927 -184.853 -3 + vertex -182.927 -184.853 0 + vertex -183.124 -184.782 0 + endloop + endfacet + facet normal -0.277246 -0.960799 0 + outer loop + vertex -182.726 -184.911 -3 + vertex -182.927 -184.853 0 + vertex -182.927 -184.853 -3 + endloop + endfacet + facet normal -0.277246 -0.960799 0 + outer loop + vertex -182.726 -184.911 -3 + vertex -182.726 -184.911 0 + vertex -182.927 -184.853 0 + endloop + endfacet + facet normal -0.205289 -0.978701 0 + outer loop + vertex -182.521 -184.954 -3 + vertex -182.726 -184.911 0 + vertex -182.726 -184.911 -3 + endloop + endfacet + facet normal -0.205289 -0.978701 0 + outer loop + vertex -182.521 -184.954 -3 + vertex -182.521 -184.954 0 + vertex -182.726 -184.911 0 + endloop + endfacet + facet normal -0.143429 -0.989661 0 + outer loop + vertex -182.314 -184.984 -3 + vertex -182.521 -184.954 0 + vertex -182.521 -184.954 -3 + endloop + endfacet + facet normal -0.143429 -0.989661 0 + outer loop + vertex -182.314 -184.984 -3 + vertex -182.314 -184.984 0 + vertex -182.521 -184.954 0 + endloop + endfacet + facet normal -0.0668359 -0.997764 0 + outer loop + vertex -182.105 -184.998 -3 + vertex -182.314 -184.984 0 + vertex -182.314 -184.984 -3 + endloop + endfacet + facet normal -0.0668359 -0.997764 0 + outer loop + vertex -182.105 -184.998 -3 + vertex -182.105 -184.998 0 + vertex -182.314 -184.984 0 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -182.002 -184.998 -3 + vertex -182.105 -184.998 0 + vertex -182.105 -184.998 -3 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -182.002 -184.998 -3 + vertex -182.002 -184.998 0 + vertex -182.105 -184.998 0 + endloop + endfacet + facet normal -0.707107 -0.707107 0 + outer loop + vertex -182 -185 -3 + vertex -182.002 -184.998 0 + vertex -182.002 -184.998 -3 + endloop + endfacet + facet normal -0.707107 -0.707107 0 + outer loop + vertex -182 -185 -3 + vertex -182 -185 0 + vertex -182.002 -184.998 0 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 182 -185 -3 + vertex -182 -185 0 + vertex -182 -185 -3 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 182 -185 -3 + vertex 182 -185 0 + vertex -182 -185 0 + endloop + endfacet + facet normal 0.707107 -0.707107 0 + outer loop + vertex 182.002 -184.998 -3 + vertex 182 -185 0 + vertex 182 -185 -3 + endloop + endfacet + facet normal 0.707107 -0.707107 0 + outer loop + vertex 182.002 -184.998 -3 + vertex 182.002 -184.998 0 + vertex 182 -185 0 + endloop + endfacet +endsolid OpenSCAD_Model diff --git a/resources/profiles/LulzBot/MINI_AERO_thumbnail.png b/resources/profiles/LulzBot/MINI_AERO_thumbnail.png index ded4eb673d..a25947a1de 100644 Binary files a/resources/profiles/LulzBot/MINI_AERO_thumbnail.png and b/resources/profiles/LulzBot/MINI_AERO_thumbnail.png differ diff --git a/resources/profiles/LulzBot/TAZ6_AERO_thumbnail.png b/resources/profiles/LulzBot/TAZ6_AERO_thumbnail.png index ac6d48a693..79ffb907f5 100644 Binary files a/resources/profiles/LulzBot/TAZ6_AERO_thumbnail.png and b/resources/profiles/LulzBot/TAZ6_AERO_thumbnail.png differ diff --git a/resources/profiles/PrusaResearch.idx b/resources/profiles/PrusaResearch.idx index 3990bdd782..c01a9ddea8 100644 --- a/resources/profiles/PrusaResearch.idx +++ b/resources/profiles/PrusaResearch.idx @@ -1,4 +1,12 @@ min_slic3r_version = 2.2.0-alpha3 +1.1.10 Updated firmware version. +1.1.9 Updated K values in filament profiles (linear advance). Added new filament profiles and SLA materials. +1.1.8 Updated start/end g-code scripts for MK3 family printer profiles (reduced extruder motor current for some print profiles). Added new filament and SLA material profiles. +1.1.7 Updated end g-code for MMU2 Single printer profiles. Added/updated filament and SLA material profiles. +1.1.6 Updated firmware version for MK2.5/S and MK3/S. +1.1.5 Updated MMU1 specific retraction settings for Prusament PC Blend +1.1.4 Added Prusament PC Blend filament profile. +1.1.3 Added SLA material and filament profile 1.1.2 Added renamed_from fields for PETG filaments to indicate that they were renamed from PET. 1.1.1 Added Verbatim and Fiberlogy PETG filament profiles. Updated auto cooling settings for ABS. 1.1.1-beta Updated for PrusaSlicer 2.2.0-beta @@ -11,6 +19,8 @@ min_slic3r_version = 2.2.0-alpha0 1.1.1-alpha2 Bumped up config version, so our in house customer will get updated profiles. 1.1.0 Filament aliases, Creality profiles and other goodies for PrusaSlicer 2.2.0-alpha0 min_slic3r_version = 2.1.1-beta0 +1.0.10 Updated firmware version for MK2.5/S and MK3/S. +1.0.9 Updated firmware version for MK2.5/S and MK3/S. 1.0.8 Various changes in FFF profiles, new filaments/materials added. See changelog. 1.0.7 Updated layer height limits for MINI 1.0.6 Added Prusa MINI profiles @@ -27,6 +37,8 @@ min_slic3r_version = 2.1.0-alpha0 1.0.0-alpha1 Added Prusament ASA profile 1.0.0-alpha0 Filament specific retract for PET and similar copolymers, and for FLEX min_slic3r_version = 1.42.0-alpha6 +0.8.9 Updated firmware version for MK2.5/S and MK3/S. +0.8.8 Updated firmware version for MK2.5/S and MK3/S. 0.8.7 Updated firmware version 0.8.6 Updated firmware version for MK2.5/S and MK3/S 0.8.5 Updated SL1 printer and material settings @@ -53,6 +65,8 @@ min_slic3r_version = 1.42.0-alpha 0.4.0-alpha3 Update of SLA profiles 0.4.0-alpha2 First SLA profiles min_slic3r_version = 1.41.3-alpha +0.4.12 Updated firmware version for MK2.5/S and MK3/S. +0.4.11 Updated firmware version for MK2.5/S and MK3/S. 0.4.10 Updated firmware version 0.4.9 Updated firmware version for MK2.5/S and MK3/S 0.4.8 MK2.5/3/S FW update @@ -65,6 +79,7 @@ min_slic3r_version = 1.41.3-alpha 0.4.1 New MK2.5S and MK3S FW versions 0.4.0 Changelog: https://github.com/prusa3d/Slic3r-settings/blob/master/live/PrusaResearch/changelog.txt min_slic3r_version = 1.41.1 +0.3.11 Updated firmware version for MK2.5/S and MK3/S. 0.3.10 Updated firmware version 0.3.9 Updated firmware version for MK2.5/S and MK3/S 0.3.8 MK2.5/3/S FW update @@ -123,4 +138,4 @@ min_slic3r_version = 1.40.0-alpha 0.1.3 Fixed an incorrect position of the max_print_height parameter 0.1.2 Wipe tower changes 0.1.1 Minor print speed adjustments -0.1.0 Initial \ No newline at end of file +0.1.0 Initial diff --git a/resources/profiles/PrusaResearch.ini b/resources/profiles/PrusaResearch.ini index d279e7dda3..9e353e0fbc 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.1.2 +config_version = 1.1.10 # 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% @@ -24,7 +24,7 @@ technology = FFF family = MINI bed_model = mini_bed.stl bed_texture = mini.svg -default_materials = Generic PLA; Generic ABS @MINI; Generic PETG @MINI; Prusament PLA; Prusament PETG @MINI; Prusament ASA @MINI +default_materials = Generic PLA; Generic ABS @MINI; Generic PETG @MINI; Prusament PLA; Prusament PETG @MINI; Prusament ASA @MINI; Prusament PC Blend @MINI [printer_model:MK3S] name = Original Prusa i3 MK3S @@ -33,7 +33,7 @@ technology = FFF family = MK3 bed_model = mk3_bed.stl bed_texture = mk3.svg -default_materials = Generic PLA; Generic ABS; Generic PETG; Prusament PLA; Prusament PETG; Prusament ASA +default_materials = Generic PLA; Generic ABS; Generic PETG; Prusament PLA; Prusament PETG; Prusament ASA; Prusament PC Blend [printer_model:MK3] name = Original Prusa i3 MK3 @@ -42,7 +42,7 @@ technology = FFF family = MK3 bed_model = mk3_bed.stl bed_texture = mk3.svg -default_materials = Generic PLA; Generic ABS; Generic PETG; Prusament PLA; Prusament PETG; Prusament ASA +default_materials = Generic PLA; Generic ABS; Generic PETG; Prusament PLA; Prusament PETG; Prusament ASA; Prusament PC Blend [printer_model:MK3SMMU2S] name = Original Prusa i3 MK3S MMU2S @@ -51,7 +51,7 @@ technology = FFF family = MK3 bed_model = mk3_bed.stl bed_texture = mk3.svg -default_materials = Generic PLA; Generic ABS; Generic PETG; Prusament PLA @MMU2; Prusament PETG @MMU2; Prusament ASA @MMU2; Verbatim BVOH @MMU2 +default_materials = Generic PLA; Generic ABS; Generic PETG; Prusament PLA @MMU2; Prusament PETG @MMU2; Prusament ASA @MMU2; Verbatim BVOH @MMU2; Prusament PC Blend @MMU2 [printer_model:MK3MMU2] name = Original Prusa i3 MK3 MMU2 @@ -60,7 +60,7 @@ technology = FFF family = MK3 bed_model = mk3_bed.stl bed_texture = mk3.svg -default_materials = Generic PLA; Generic ABS; Generic PETG; Prusament PLA @MMU2; Prusament PETG @MMU2; Prusament ASA @MMU2; Verbatim BVOH @MMU2 +default_materials = Generic PLA; Generic ABS; Generic PETG; Prusament PLA @MMU2; Prusament PETG @MMU2; Prusament ASA @MMU2; Verbatim BVOH @MMU2; Prusament PC Blend @MMU2 [printer_model:MK2.5S] name = Original Prusa i3 MK2.5S @@ -69,7 +69,7 @@ technology = FFF family = MK2.5 bed_model = mk3_bed.stl bed_texture = mk3.svg -default_materials = Generic PLA; Generic ABS; Generic PETG; Prusament PLA; Prusament PETG; Prusament ASA +default_materials = Generic PLA; Generic ABS; Generic PETG; Prusament PLA; Prusament PETG; Prusament ASA; Prusament PC Blend [printer_model:MK2.5] name = Original Prusa i3 MK2.5 @@ -78,7 +78,7 @@ technology = FFF family = MK2.5 bed_model = mk3_bed.stl bed_texture = mk3.svg -default_materials = Generic PLA; Generic ABS; Generic PETG; Prusament PLA; Prusament PETG; Prusament ASA +default_materials = Generic PLA; Generic ABS; Generic PETG; Prusament PLA; Prusament PETG; Prusament ASA; Prusament PC Blend [printer_model:MK2.5SMMU2S] name = Original Prusa i3 MK2.5S MMU2S @@ -87,7 +87,7 @@ technology = FFF family = MK2.5 bed_model = mk3_bed.stl bed_texture = mk3.svg -default_materials = Generic PLA; Generic ABS; Generic PETG; Prusament PLA @MMU2; Prusament PETG @MMU2; Prusament ASA @MMU2; Verbatim BVOH @MMU2 +default_materials = Generic PLA; Generic ABS; Generic PETG; Prusament PLA @MMU2; Prusament PETG @MMU2; Prusament ASA @MMU2; Verbatim BVOH @MMU2; Prusament PC Blend @MMU2 [printer_model:MK2.5MMU2] name = Original Prusa i3 MK2.5 MMU2 @@ -96,7 +96,7 @@ technology = FFF family = MK2.5 bed_model = mk3_bed.stl bed_texture = mk3.svg -default_materials = Generic PLA; Generic ABS; Generic PETG; Prusament PLA @MMU2; Prusament PETG @MMU2; Prusament ASA @MMU2; Verbatim BVOH @MMU2 +default_materials = Generic PLA; Generic ABS; Generic PETG; Prusament PLA @MMU2; Prusament PETG @MMU2; Prusament ASA @MMU2; Verbatim BVOH @MMU2; Prusament PC Blend @MMU2 [printer_model:MK2S] name = Original Prusa i3 MK2S @@ -105,7 +105,7 @@ technology = FFF family = MK2 bed_model = mk2_bed.stl bed_texture = mk2.svg -default_materials = Generic PLA; Generic ABS; Generic PETG; Prusament PLA; Prusament PETG; Prusament ASA +default_materials = Generic PLA; Generic ABS; Generic PETG; Prusament PLA; Prusament PETG; Prusament ASA; Prusament PC Blend [printer_model:MK2SMM] name = Original Prusa i3 MK2S MMU1 @@ -114,7 +114,7 @@ technology = FFF family = MK2 bed_model = mk2_bed.stl bed_texture = mk2.svg -default_materials = Generic PLA; Generic ABS; Generic PETG @MMU1; Prusament PLA; Prusament PETG @MMU1; Prusament ASA +default_materials = Generic PLA; Generic ABS; Generic PETG @MMU1; Prusament PLA; Prusament PETG @MMU1; Prusament ASA; Prusament PC Blend [printer_model:SL1] name = Original Prusa SL1 @@ -555,7 +555,7 @@ solid_infill_speed = 50 inherits = *0.10mm*; *MK3* # alias = 0.10mm DETAIL bridge_speed = 30 -compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK3.*/ and nozzle_diameter[0]==0.4 and ! single_extruder_multi_material +compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK3.*/ and nozzle_diameter[0]==0.4 external_perimeter_speed = 25 infill_acceleration = 1000 infill_speed = 80 @@ -689,6 +689,7 @@ support_material_extruder = 5 support_material_interface_extruder = 5 perimeter_speed = 40 solid_infill_speed = 40 +infill_speed = 80 top_infill_extrusion_width = 0.45 top_solid_infill_speed = 30 @@ -814,6 +815,7 @@ support_material_extruder = 5 support_material_interface_extruder = 5 perimeter_speed = 40 solid_infill_speed = 40 +infill_speed = 80 top_infill_extrusion_width = 0.45 top_solid_infill_speed = 30 @@ -1073,10 +1075,10 @@ max_print_speed = 100 perimeter_speed = 45 solid_infill_speed = 70 top_solid_infill_speed = 45 -external_perimeter_extrusion_width = 0.7 -perimeter_extrusion_width = 0.7 -infill_extrusion_width = 0.7 -solid_infill_extrusion_width = 0.7 +external_perimeter_extrusion_width = 0.68 +perimeter_extrusion_width = 0.68 +infill_extrusion_width = 0.68 +solid_infill_extrusion_width = 0.68 # XXXXXXXXXXXXXXXXXXXXXX # XXX----- MK2.5 ----XXX @@ -1095,6 +1097,12 @@ inherits = 0.15mm OPTIMAL compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.5.*/ and nozzle_diameter[0]==0.4 single_extruder_multi_material_priming = 0 +# MK2.5 MMU2 # +[print:0.10mm DETAIL @MK2.5] +inherits = 0.10mm DETAIL +compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.5.*/ and nozzle_diameter[0]==0.4 and num_extruders>1 +single_extruder_multi_material_priming = 0 + # MK2.5 MMU2 # [print:0.15mm OPTIMAL SOLUBLE FULL @MK2.5] inherits = 0.15mm OPTIMAL SOLUBLE FULL @@ -1443,7 +1451,7 @@ first_layer_temperature = 215 max_fan_speed = 100 min_fan_speed = 100 temperature = 210 -start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_MODEL_MINI.*/ and nozzle_diameter[0]==0.6}0.12{elsif printer_notes=~/.*PRINTER_MODEL_MINI.*/}0.2{elsif printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{elsif nozzle_diameter[0]==0.6}18{else}30{endif} ; Filament gcode" +start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_MODEL_MINI.*/ and nozzle_diameter[0]==0.6}0.12{elsif printer_notes=~/.*PRINTER_MODEL_MINI.*/}0.2{elsif nozzle_diameter[0]==0.6}0.04{else}0.05{endif} ; Filament gcode LA 1.5\n{if printer_notes=~/.*PRINTER_MODEL_MINI.*/};{elsif printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}M900 K200{elsif nozzle_diameter[0]==0.6}M900 K18{else}M900 K30{endif} ; Filament gcode LA 1.0" [filament:*PET*] inherits = *common* @@ -1459,7 +1467,7 @@ first_layer_bed_temperature = 85 first_layer_temperature = 230 max_fan_speed = 50 min_fan_speed = 30 -start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{elsif nozzle_diameter[0]==0.6}24{else}45{endif} ; Filament gcode" +start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_MODEL_MINI.*/ and nozzle_diameter[0]==0.6}0.12{elsif printer_notes=~/.*PRINTER_MODEL_MINI.*/}0.2{elsif nozzle_diameter[0]==0.6}0.04{else}0.08{endif} ; Filament gcode LA 1.5\n{if printer_notes=~/.*PRINTER_MODEL_MINI.*/};{elsif printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}M900 K200{elsif nozzle_diameter[0]==0.6}M900 K24{else}M900 K45{endif} ; Filament gcode LA 1.0" temperature = 240 filament_retract_length = 1.4 filament_retract_lift = 0.2 @@ -1552,7 +1560,7 @@ first_layer_temperature = 255 max_fan_speed = 30 min_fan_speed = 20 temperature = 255 -start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{elsif nozzle_diameter[0]==0.6}18{else}30{endif} ; Filament gcode" +start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_MODEL_MINI.*/ and nozzle_diameter[0]==0.6}0.12{elsif printer_notes=~/.*PRINTER_MODEL_MINI.*/}0.2{elsif nozzle_diameter[0]==0.6}0.02{else}0.04{endif} ; Filament gcode LA 1.5\n{if printer_notes=~/.*PRINTER_MODEL_MINI.*/};{elsif printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}M900 K200{elsif nozzle_diameter[0]==0.6}M900 K12{else}M900 K20{endif} ; Filament gcode LA 1.0" compatible_printers_condition = printer_model!="MINI" and ! (printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK(2.5|3).*/ and single_extruder_multi_material) [filament:*ABSC*] @@ -1562,7 +1570,7 @@ bridge_fan_speed = 25 cooling = 1 disable_fan_first_layers = 4 fan_always_on = 0 -fan_below_layer_time = 20 +fan_below_layer_time = 30 slowdown_below_layer_time = 20 filament_colour = #FFF2EC filament_max_volumetric_speed = 11 @@ -1574,7 +1582,7 @@ max_fan_speed = 15 min_fan_speed = 15 min_print_speed = 15 temperature = 255 -start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{elsif nozzle_diameter[0]==0.6}18{else}30{endif} ; Filament gcode" +start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_MODEL_MINI.*/ and nozzle_diameter[0]==0.6}0.12{elsif printer_notes=~/.*PRINTER_MODEL_MINI.*/}0.2{elsif nozzle_diameter[0]==0.6}0.02{else}0.04{endif} ; Filament gcode LA 1.5\n{if printer_notes=~/.*PRINTER_MODEL_MINI.*/};{elsif printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}M900 K200{elsif nozzle_diameter[0]==0.6}M900 K12{else}M900 K20{endif} ; Filament gcode LA 1.0" compatible_printers_condition = printer_model!="MINI" and ! (printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK(2.5|3).*/ and single_extruder_multi_material) [filament:*FLEX*] @@ -1607,7 +1615,7 @@ inherits = *PLA* filament_vendor = ColorFabb compatible_printers_condition = nozzle_diameter[0]>0.35 and ! (printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK(2.5|3).*/ and single_extruder_multi_material) extrusion_multiplier = 1.2 -filament_cost = 72.89 +filament_cost = 49.99 filament_density = 3.9 filament_colour = #804040 filament_max_volumetric_speed = 9 @@ -1617,7 +1625,7 @@ inherits = *PLA* filament_vendor = ColorFabb compatible_printers_condition = nozzle_diameter[0]>0.35 and ! (printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK(2.5|3).*/ and single_extruder_multi_material) extrusion_multiplier = 1.2 -filament_cost = 72.89 +filament_cost = 49.99 filament_density = 3.13 filament_colour = #808080 filament_max_volumetric_speed = 8 @@ -1647,7 +1655,7 @@ first_layer_bed_temperature = 105 first_layer_temperature = 270 max_fan_speed = 20 min_fan_speed = 10 -start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}45{endif}; Filament gcode" +start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_MODEL_MINI.*/ and nozzle_diameter[0]==0.6}0.12{elsif printer_notes=~/.*PRINTER_MODEL_MINI.*/}0.2{elsif nozzle_diameter[0]==0.6}0.05{else}0.08{endif} ; Filament gcode LA 1.5\n{if printer_notes=~/.*PRINTER_MODEL_MINI.*/};{elsif printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}M900 K200{elsif nozzle_diameter[0]==0.6}M900 K24{else}M900 K45{endif} ; Filament gcode LA 1.0" temperature = 270 [filament:ColorFabb PLA-PHA] @@ -1661,12 +1669,12 @@ inherits = *PLA* filament_vendor = ColorFabb compatible_printers_condition = nozzle_diameter[0]>0.35 and ! (printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK(2.5|3).*/ and single_extruder_multi_material) extrusion_multiplier = 1.1 -filament_cost = 58.30 +filament_cost = 38.99 filament_density = 1.15 filament_colour = #dfc287 filament_max_volumetric_speed = 9 first_layer_temperature = 200 -start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_MODEL_MINI.*/}0{elsif printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}0{else}10{endif}; Filament gcode" +start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_MODEL_MINI.*/ and nozzle_diameter[0]==0.6}0.12{elsif printer_notes=~/.*PRINTER_MODEL_MINI.*/}0.2{elsif nozzle_diameter[0]==0.6}0.02{else}0.04{endif} ; Filament gcode LA 1.5\n{if printer_notes=~/.*PRINTER_MODEL_MINI.*/};{elsif printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}M900 K200{elsif nozzle_diameter[0]==0.6}M900 K12{else}M900 K20{endif} ; Filament gcode LA 1.0" temperature = 200 filament_retract_lift = 0.2 @@ -1675,19 +1683,19 @@ inherits = *PLA* filament_vendor = ColorFabb compatible_printers_condition = nozzle_diameter[0]>0.35 and ! (printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK(2.5|3).*/ and single_extruder_multi_material) extrusion_multiplier = 1.1 -filament_cost = 58.30 +filament_cost = 38.99 filament_density = 1.18 filament_colour = #634d33 filament_max_volumetric_speed = 6 first_layer_temperature = 220 -start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_MODEL_MINI.*/}0{elsif printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}0{else}10{endif}; Filament gcode" +start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_MODEL_MINI.*/ and nozzle_diameter[0]==0.6}0.12{elsif printer_notes=~/.*PRINTER_MODEL_MINI.*/}0.2{elsif nozzle_diameter[0]==0.6}0.02{else}0.04{endif} ; Filament gcode LA 1.5\n{if printer_notes=~/.*PRINTER_MODEL_MINI.*/};{elsif printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}M900 K200{elsif nozzle_diameter[0]==0.6}M900 K12{else}M900 K20{endif} ; Filament gcode LA 1.0" temperature = 220 filament_retract_lift = 0.2 [filament:ColorFabb XT] inherits = *PET* filament_vendor = ColorFabb -filament_cost = 58.30 +filament_cost = 38.99 filament_density = 1.27 first_layer_bed_temperature = 90 first_layer_temperature = 260 @@ -1696,17 +1704,17 @@ temperature = 270 [filament:ColorFabb XT-CF20] inherits = *PET* filament_vendor = ColorFabb -extrusion_multiplier = 1.2 -filament_cost = 72.89 +extrusion_multiplier = 1.05 +filament_cost = 49.99 filament_density = 1.35 filament_colour = #804040 -filament_max_volumetric_speed = 1 +filament_max_volumetric_speed = 2 first_layer_bed_temperature = 90 first_layer_temperature = 260 -start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode" +start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_MODEL_MINI.*/ and nozzle_diameter[0]==0.6}0.12{elsif printer_notes=~/.*PRINTER_MODEL_MINI.*/}0.2{elsif nozzle_diameter[0]==0.6}0.04{else}0.06{endif} ; Filament gcode LA 1.5\n{if printer_notes=~/.*PRINTER_MODEL_MINI.*/};{elsif printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}M900 K200{elsif nozzle_diameter[0]==0.6}M900 K18{else}M900 K30{endif} ; Filament gcode LA 1.0" temperature = 260 filament_retract_length = nil -filament_retract_lift = 0.2 +filament_retract_lift = 0.4 [filament:ColorFabb nGen] inherits = *PET* @@ -1742,6 +1750,41 @@ filament_retract_length = nil filament_retract_lift = 0 compatible_printers_condition = nozzle_diameter[0]>0.35 and printer_model!="MINI" and num_extruders==1 && ! (printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK3.*/ and single_extruder_multi_material) +[filament:Kimya PETG Carbon] +inherits = *PET* +filament_vendor = Kimya +extrusion_multiplier = 1.05 +filament_cost = 150 +filament_density = 1.317 +filament_colour = #804040 +filament_max_volumetric_speed = 6 +first_layer_bed_temperature = 85 +first_layer_temperature = 240 +temperature = 240 +filament_retract_length = nil +filament_retract_lift = 0.3 +start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_MODEL_MINI.*/ and nozzle_diameter[0]==0.6}0.12{elsif printer_notes=~/.*PRINTER_MODEL_MINI.*/}0.2{elsif nozzle_diameter[0]==0.6}0.04{else}0.06{endif} ; Filament gcode LA 1.5\n{if printer_notes=~/.*PRINTER_MODEL_MINI.*/};{elsif printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}M900 K200{elsif nozzle_diameter[0]==0.6}M900 K15{else}M900 K30{endif} ; Filament gcode LA 1.0" + +[filament:Kimya ABS Carbon] +inherits = *ABSC* +filament_vendor = Kimya +filament_cost = 140.4 +filament_density = 1.032 +filament_colour = #804040 +filament_max_volumetric_speed = 6 +first_layer_temperature = 260 +temperature = 260 + +[filament:Kimya ABS Kevlar] +inherits = *ABSC* +filament_vendor = Kimya +filament_cost = 140.4 +filament_density = 1.037 +filament_colour = #804040 +filament_max_volumetric_speed = 6 +first_layer_temperature = 260 +temperature = 260 + [filament:E3D Edge] inherits = *PET* filament_vendor = E3D @@ -1762,7 +1805,7 @@ temperature = 270 [filament:Fillamentum PLA] inherits = *PLA* filament_vendor = Fillamentum -filament_cost = 25.4 +filament_cost = 21.99 filament_density = 1.24 [filament:Fillamentum ABS] @@ -1801,17 +1844,77 @@ bed_temperature = 110 cooling = 1 min_fan_speed = 20 max_fan_speed = 20 +bridge_fan_speed = 30 min_print_speed = 15 slowdown_below_layer_time = 15 disable_fan_first_layers = 4 filament_type = ASA filament_colour = #FFF2EC -start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{elsif nozzle_diameter[0]==0.6}12{else}20{endif} ; Filament gcode" +start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_MODEL_MINI.*/ and nozzle_diameter[0]==0.6}0.12{elsif printer_notes=~/.*PRINTER_MODEL_MINI.*/}0.2{elsif nozzle_diameter[0]==0.6}0.02{else}0.04{endif} ; Filament gcode LA 1.5\n{if printer_notes=~/.*PRINTER_MODEL_MINI.*/};{elsif printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}M900 K200{elsif nozzle_diameter[0]==0.6}M900 K12{else}M900 K20{endif} ; Filament gcode LA 1.0" + +[filament:Prusament PC Blend] +inherits = *ABS* +filament_vendor = Prusa Polymers +filament_cost = 49.99 +filament_density = 1.22 +fan_always_on = 0 +first_layer_temperature = 275 +first_layer_bed_temperature = 110 +temperature = 275 +bed_temperature = 115 +cooling = 1 +min_fan_speed = 20 +max_fan_speed = 20 +bridge_fan_speed = 30 +min_print_speed = 15 +slowdown_below_layer_time = 20 +disable_fan_first_layers = 4 +fan_below_layer_time = 30 +filament_type = PC +filament_colour = #DEE0E6 +filament_max_volumetric_speed = 8 +filament_retract_length = 1 +filament_retract_lift = 0.2 +compatible_printers_condition = printer_notes!~/.*PRINTER_MODEL_MK(2|2.5).*/ and printer_model!="MINI" and ! single_extruder_multi_material +start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_MODEL_MINI.*/ and nozzle_diameter[0]==0.6}0.12{elsif printer_notes=~/.*PRINTER_MODEL_MINI.*/}0.2{elsif nozzle_diameter[0]==0.6}0.04{else}0.07{endif} ; Filament gcode LA 1.5\n{if printer_notes=~/.*PRINTER_MODEL_MINI.*/};{elsif printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}M900 K200{elsif nozzle_diameter[0]==0.6}M900 K17{else}M900 K40{endif} ; Filament gcode LA 1.0" + +[filament:Prusament PC Blend @MK2] +inherits = *ABS* +filament_vendor = Prusa Polymers +filament_cost = 49.99 +filament_density = 1.22 +fan_always_on = 0 +first_layer_temperature = 275 +first_layer_bed_temperature = 105 +temperature = 275 +bed_temperature = 110 +cooling = 1 +min_fan_speed = 20 +max_fan_speed = 20 +min_print_speed = 15 +bridge_fan_speed = 30 +slowdown_below_layer_time = 20 +disable_fan_first_layers = 6 +fan_below_layer_time = 30 +filament_type = PC +filament_colour = #DEE0E6 +filament_max_volumetric_speed = 8 +filament_retract_length = 1 +filament_retract_lift = 0.2 +compatible_printers_condition = printer_model!="MK2SMM" and printer_notes=~/.*PRINTER_MODEL_MK(2|2.5).*/ and ! (printer_notes=~/.*PRINTER_MODEL_MK2.5.*/ and single_extruder_multi_material) +start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_MODEL_MINI.*/ and nozzle_diameter[0]==0.6}0.12{elsif printer_notes=~/.*PRINTER_MODEL_MINI.*/}0.2{elsif nozzle_diameter[0]==0.6}0.04{else}0.07{endif} ; Filament gcode LA 1.5\n{if printer_notes=~/.*PRINTER_MODEL_MINI.*/};{elsif printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}M900 K200{elsif nozzle_diameter[0]==0.6}M900 K17{else}M900 K40{endif} ; Filament gcode LA 1.0" + +[filament:Prusament PC Blend @MK2MMU1] +inherits = Prusament PC Blend @MK2 +filament_retract_length = nil +filament_retract_lift = 0.2 +compatible_printers_condition = printer_model=="MK2SMM" +start_filament_gcode = "M900 K200 ; Filament gcode LA 1.0" [filament:Fillamentum CPE] inherits = *PET* filament_vendor = Fillamentum -filament_cost = 54.1 +filament_cost = 34.99 filament_density = 1.25 filament_type = CPE first_layer_bed_temperature = 90 @@ -1819,6 +1922,7 @@ first_layer_temperature = 275 max_fan_speed = 50 min_fan_speed = 50 temperature = 275 +start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_MODEL_MINI.*/ and nozzle_diameter[0]==0.6}0.12{elsif printer_notes=~/.*PRINTER_MODEL_MINI.*/}0.2{elsif nozzle_diameter[0]==0.6}0.04{else}0.07{endif} ; Filament gcode LA 1.5\n{if printer_notes=~/.*PRINTER_MODEL_MINI.*/};{elsif printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}M900 K200{elsif nozzle_diameter[0]==0.6}M900 K24{else}M900 K45{endif} ; Filament gcode LA 1.0" [filament:Fillamentum Timberfill] inherits = *PLA* @@ -1830,7 +1934,7 @@ filament_density = 1.15 filament_colour = #804040 filament_max_volumetric_speed = 10 first_layer_temperature = 190 -start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_MODEL_MINI.*/}0{elsif printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}0{else}10{endif}; Filament gcode" +start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_MODEL_MINI.*/ and nozzle_diameter[0]==0.6}0.12{elsif printer_notes=~/.*PRINTER_MODEL_MINI.*/}0.2{elsif nozzle_diameter[0]==0.6}0.02{else}0.04{endif} ; Filament gcode LA 1.5\n{if printer_notes=~/.*PRINTER_MODEL_MINI.*/};{elsif printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}M900 K200{elsif nozzle_diameter[0]==0.6}M900 K12{else}M900 K20{endif} ; Filament gcode LA 1.0" temperature = 190 filament_retract_lift = 0.2 @@ -1844,7 +1948,7 @@ filament_density = 1.58 filament_colour = #804040 filament_max_volumetric_speed = 9 first_layer_temperature = 220 -start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_MODEL_MINI.*/}0{elsif printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}0{else}10{endif}; Filament gcode" +start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_MODEL_MINI.*/ and nozzle_diameter[0]==0.6}0.12{elsif printer_notes=~/.*PRINTER_MODEL_MINI.*/}0.2{elsif nozzle_diameter[0]==0.6}0.02{else}0.04{endif} ; Filament gcode LA 1.5\n{if printer_notes=~/.*PRINTER_MODEL_MINI.*/};{elsif printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}M900 K200{elsif nozzle_diameter[0]==0.6}M900 K12{else}M900 K20{endif} ; Filament gcode LA 1.0" temperature = 220 filament_retract_lift = 0.2 @@ -1870,7 +1974,14 @@ filament_density = 1.04 inherits = *ABSC* filament_vendor = Plasty Mladec filament_cost = 27.82 -filament_density = 1.04 +filament_density = 1.08 + +[filament:Verbatim ABS] +inherits = *ABSC* +filament_vendor = Verbatim +filament_cost = 25.87 +filament_density = 1.05 +start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_MODEL_MINI.*/ and nozzle_diameter[0]==0.6}0.12{elsif printer_notes=~/.*PRINTER_MODEL_MINI.*/}0.2{elsif nozzle_diameter[0]==0.6}0.03{else}0.04{endif} ; Filament gcode LA 1.5\n{if printer_notes=~/.*PRINTER_MODEL_MINI.*/};{elsif printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}M900 K200{elsif nozzle_diameter[0]==0.6}M900 K12{else}M900 K20{endif} ; Filament gcode LA 1.0" [filament:Generic PETG] inherits = *PET* @@ -1891,6 +2002,28 @@ filament_vendor = Generic filament_cost = 25.4 filament_density = 1.24 +[filament:Devil Design PLA] +inherits = *PLA* +filament_vendor = Devil Design +filament_cost = 20.99 +filament_density = 1.24 + +[filament:Devil Design PETG] +inherits = *PET* +filament_vendor = Devil Design +filament_cost = 20.99 +filament_density = 1.23 +first_layer_temperature = 230 +first_layer_bed_temperature = 85 +temperature = 230 +bed_temperature = 90 + +[filament:Spectrum PLA] +inherits = *PLA* +filament_vendor = Spectrum +filament_cost = 21.50 +filament_density = 1.24 + [filament:Generic FLEX] inherits = *FLEX* filament_vendor = Generic @@ -1901,6 +2034,21 @@ filament_retract_length = 0 filament_retract_speed = nil filament_retract_lift = nil +[filament:Fillamentum Flexfill 92A] +inherits = *FLEX* +filament_vendor = Fillamentum +filament_cost = 33.99 +filament_density = 1.20 +filament_max_volumetric_speed = 1.2 +filament_retract_length = 0 +filament_retract_speed = nil +filament_retract_lift = nil +fan_always_on = 1 +cooling = 0 +max_fan_speed = 50 +min_fan_speed = 50 +disable_fan_first_layers = 5 + [filament:SainSmart TPU] inherits = *FLEX* filament_vendor = SainSmart @@ -1941,7 +2089,7 @@ bridge_fan_speed = 100 max_fan_speed = 50 min_fan_speed = 50 filament_retract_before_travel = 3 -filament_cost = 51.45 +filament_cost = 34.99 filament_density = 1.22 filament_retract_length = 2 filament_retract_speed = 50 @@ -1970,7 +2118,7 @@ filament_max_volumetric_speed = 8 [filament:PrimaSelect PVA+] inherits = *PLA* filament_vendor = PrimaSelect -filament_cost = 108 +filament_cost = 45.01 filament_density = 1.23 cooling = 0 fan_always_on = 0 @@ -1980,13 +2128,13 @@ filament_ramming_parameters = "120 100 8.3871 8.6129 8.93548 9.22581 9.48387 9.7 filament_soluble = 1 filament_type = PVA first_layer_temperature = 195 -start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_MODEL_MINI.*/}0{elsif printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}0{else}10{endif}; Filament gcode" +start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_MODEL_MINI.*/ and nozzle_diameter[0]==0.6}0.12{elsif printer_notes=~/.*PRINTER_MODEL_MINI.*/}0.2{elsif nozzle_diameter[0]==0.6}0.02{else}0.04{endif} ; Filament gcode LA 1.5\n{if printer_notes=~/.*PRINTER_MODEL_MINI.*/};{elsif printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}M900 K200{elsif nozzle_diameter[0]==0.6}M900 K12{else}M900 K20{endif} ; Filament gcode LA 1.0" temperature = 195 [filament:Prusa ABS] inherits = *ABSC* filament_vendor = Made for Prusa -filament_cost = 27.82 +filament_cost = 22.99 filament_density = 1.08 [filament:*ABS MMU2*] @@ -2006,6 +2154,32 @@ filament_unloading_speed = 20 inherits = *ABS MMU2* filament_vendor = Generic +[filament:Generic HIPS @MMU2] +inherits = *ABS MMU2* +filament_vendor = Generic +filament_cost = 27.3 +filament_density = 1.04 +fan_always_on = 1 +first_layer_temperature = 230 +first_layer_bed_temperature = 100 +temperature = 230 +bed_temperature = 110 +cooling = 1 +min_fan_speed = 20 +max_fan_speed = 20 +bridge_fan_speed = 50 +min_print_speed = 15 +slowdown_below_layer_time = 20 +disable_fan_first_layers = 3 +filament_cooling_final_speed = 2 +filament_cooling_initial_speed = 3 +filament_cooling_moves = 1 +filament_type = HIPS +filament_soluble = 1 +filament_colour = #FFFFD7 +filament_ramming_parameters = "130 120 2.74194 2.96774 3.25806 3.77419 4.83871 6.3871 8.09677 9.64516 10.7419 11.2903| 0.05 2.66451 0.45 3.05805 0.95 4.05807 1.45 7.13871 1.95 10.2806 2.45 11.4194 2.95 11.342 3.45 11.4065 3.95 7.6 4.45 7.6 4.95 7.6" +start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_MODEL_MINI.*/ and nozzle_diameter[0]==0.6}0.12{elsif printer_notes=~/.*PRINTER_MODEL_MINI.*/}0.2{elsif nozzle_diameter[0]==0.6}0.03{else}0.04{endif} ; Filament gcode LA 1.5\n{if printer_notes=~/.*PRINTER_MODEL_MINI.*/};{elsif printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}M900 K200{elsif nozzle_diameter[0]==0.6}M900 K12{else}M900 K20{endif} ; Filament gcode LA 1.0" + [filament:Prusament ASA @MMU2] inherits = *ABS MMU2* filament_vendor = Prusa Polymers @@ -2019,6 +2193,7 @@ bed_temperature = 110 cooling = 1 min_fan_speed = 20 max_fan_speed = 20 +bridge_fan_speed = 30 min_print_speed = 15 slowdown_below_layer_time = 15 disable_fan_first_layers = 4 @@ -2027,15 +2202,46 @@ filament_cooling_initial_speed = 3 filament_cooling_moves = 1 filament_type = ASA filament_colour = #FFF2EC -start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{elsif nozzle_diameter[0]==0.6}12{else}20{endif} ; Filament gcode" +start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_MODEL_MINI.*/ and nozzle_diameter[0]==0.6}0.12{elsif printer_notes=~/.*PRINTER_MODEL_MINI.*/}0.2{elsif nozzle_diameter[0]==0.6}0.02{else}0.04{endif} ; Filament gcode LA 1.5\n{if printer_notes=~/.*PRINTER_MODEL_MINI.*/};{elsif printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}M900 K200{elsif nozzle_diameter[0]==0.6}M900 K12{else}M900 K20{endif} ; Filament gcode LA 1.0" + +[filament:Prusament PC Blend @MMU2] +inherits = *ABS MMU2* +filament_vendor = Prusa Polymers +filament_cost = 49.99 +filament_density = 1.22 +fan_always_on = 0 +fan_below_layer_time = 30 +first_layer_temperature = 265 +first_layer_bed_temperature = 105 +temperature = 265 +bed_temperature = 110 +cooling = 1 +min_fan_speed = 20 +max_fan_speed = 20 +bridge_fan_speed = 30 +min_print_speed = 15 +slowdown_below_layer_time = 20 +disable_fan_first_layers = 4 +filament_cooling_final_speed = 2 +filament_cooling_initial_speed = 3 +filament_cooling_moves = 1 +filament_max_volumetric_speed = 8 +filament_retract_length = 1 +filament_retract_lift = 0.2 +filament_ramming_parameters = "130 120 2.70968 2.93548 3.32258 3.83871 4.58065 5.54839 6.51613 7.35484 7.93548 8.16129| 0.05 2.66451 0.45 3.05805 0.95 4.05807 1.45 5.97742 1.95 7.69999 2.45 8.1936 2.95 11.342 3.45 11.4065 3.95 7.6 4.45 7.6 4.95 7.6" +filament_type = PC +filament_colour = #DEE0E6 +start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_MODEL_MINI.*/ and nozzle_diameter[0]==0.6}0.12{elsif printer_notes=~/.*PRINTER_MODEL_MINI.*/}0.2{elsif nozzle_diameter[0]==0.6}0.04{else}0.07{endif} ; Filament gcode LA 1.5\n{if printer_notes=~/.*PRINTER_MODEL_MINI.*/};{elsif printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}M900 K200{elsif nozzle_diameter[0]==0.6}M900 K17{else}M900 K40{endif} ; Filament gcode LA 1.0" [filament:Prusa ABS @MMU2] inherits = *ABS MMU2* filament_vendor = Made for Prusa +filament_cost = 22.99 [filament:Plasty Mladec ABS @MMU2] inherits = *ABS MMU2* filament_vendor = Plasty Mladec +filament_density = 1.08 [filament:Prusa HIPS] inherits = *ABS* @@ -2053,7 +2259,7 @@ filament_type = HIPS first_layer_temperature = 220 max_fan_speed = 20 min_fan_speed = 20 -start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_MODEL_MINI.*/}0{elsif printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}0{else}10{endif}; Filament gcode" +start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_MODEL_MINI.*/ and nozzle_diameter[0]==0.6}0.12{elsif printer_notes=~/.*PRINTER_MODEL_MINI.*/}0.2{elsif nozzle_diameter[0]==0.6}0.03{else}0.04{endif} ; Filament gcode LA 1.5\n{if printer_notes=~/.*PRINTER_MODEL_MINI.*/};{elsif printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}M900 K200{elsif nozzle_diameter[0]==0.6}M900 K12{else}M900 K20{endif} ; Filament gcode LA 1.0" temperature = 220 [filament:Generic HIPS] @@ -2072,14 +2278,14 @@ filament_type = HIPS first_layer_temperature = 230 max_fan_speed = 20 min_fan_speed = 20 -start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_MODEL_MINI.*/}0{elsif printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}0{else}10{endif}; Filament gcode" +start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_MODEL_MINI.*/ and nozzle_diameter[0]==0.6}0.12{elsif printer_notes=~/.*PRINTER_MODEL_MINI.*/}0.2{elsif nozzle_diameter[0]==0.6}0.03{else}0.04{endif} ; Filament gcode LA 1.5\n{if printer_notes=~/.*PRINTER_MODEL_MINI.*/};{elsif printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}M900 K200{elsif nozzle_diameter[0]==0.6}M900 K12{else}M900 K20{endif} ; Filament gcode LA 1.0" temperature = 230 [filament:Prusa PETG] inherits = *PET* renamed_from = "Prusa PET" filament_vendor = Made for Prusa -filament_cost = 27.82 +filament_cost = 22.99 filament_density = 1.27 compatible_printers_condition = nozzle_diameter[0]!=0.6 and printer_model!="MK2SMM" and printer_model!="MINI" and ! (printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK(2.5|3).*/ and single_extruder_multi_material) @@ -2102,7 +2308,7 @@ inherits = *PET* filament_vendor = Prusa Polymers first_layer_temperature = 240 temperature = 250 -filament_cost = 24.99 +filament_cost = 29.99 filament_density = 1.27 filament_type = PETG compatible_printers_condition = nozzle_diameter[0]!=0.6 and printer_model!="MK2SMM" and printer_model!="MINI" and ! (printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK(2.5|3).*/ and single_extruder_multi_material) @@ -2111,7 +2317,7 @@ compatible_printers_condition = nozzle_diameter[0]!=0.6 and printer_model!="MK2S inherits = *PET06* renamed_from = "Prusa PET 0.6 nozzle"; "Prusa PETG 0.6 nozzle" filament_vendor = Made for Prusa -filament_cost = 27.82 +filament_cost = 22.99 filament_density = 1.27 [filament:Prusament PETG @0.6 nozzle] @@ -2119,7 +2325,7 @@ inherits = *PET06* filament_vendor = Prusa Polymers first_layer_temperature = 240 temperature = 250 -filament_cost = 24.99 +filament_cost = 29.99 filament_density = 1.27 filament_type = PETG @@ -2132,6 +2338,17 @@ filament_cost = 27.92 filament_density = 1.27 filament_type = PETG +[filament:Devil Design PETG @0.6 nozzle] +inherits = *PET06* +filament_vendor = Devil Design +first_layer_temperature = 230 +first_layer_bed_temperature = 85 +temperature = 230 +bed_temperature = 90 +filament_cost = 20.99 +filament_density = 1.23 +filament_type = PETG + [filament:Verbatim PETG @0.6 nozzle] inherits = *PET06* filament_vendor = Verbatim @@ -2186,11 +2403,14 @@ filament_vendor = Plasty Mladec inherits = *PET MMU2* renamed_from = "Prusa PET MMU2"; "Prusa PETG MMU2" filament_vendor = Made for Prusa +filament_cost = 22.99 [filament:Prusament PETG @MMU2] inherits = *PET MMU2* filament_type = PETG filament_vendor = Prusa Polymers +filament_cost = 29.99 +filament_density = 1.27 [filament:Generic PETG @MMU2 0.6 nozzle] inherits = *PET MMU2 06* @@ -2206,6 +2426,8 @@ filament_vendor = Made for Prusa inherits = *PET MMU2 06* filament_type = PETG filament_vendor = Prusa Polymers +filament_cost = 29.99 +filament_density = 1.27 [filament:Plasty Mladec PETG @MMU2 0.6 nozzle] inherits = *PET MMU2 06* @@ -2215,7 +2437,7 @@ filament_vendor = Plasty Mladec [filament:Prusa PLA] inherits = *PLA* filament_vendor = Made for Prusa -filament_cost = 25.4 +filament_cost = 20.99 filament_density = 1.24 [filament:Fiberlogy PLA] @@ -2297,18 +2519,39 @@ filament_vendor = Generic [filament:Prusa PLA @MMU2] inherits = *PLA MMU2* filament_vendor = Made for Prusa +filament_cost = 20.99 [filament:Prusament PLA @MMU2] inherits = *PLA MMU2* filament_vendor = Prusa Polymers +filament_cost = 24.99 +filament_density = 1.24 + +[filament:Fillamentum PLA @MMU2] +inherits = *PLA MMU2* +filament_vendor = Fillamentum +filament_cost = 21.99 +filament_density = 1.24 [filament:SemiFlex or Flexfill 98A] inherits = *FLEX* filament_vendor = Generic -filament_cost = 82 +filament_cost = 33.99 filament_density = 1.22 filament_max_volumetric_speed = 1.35 +[filament:Fillamentum Flexfill 98A] +inherits = *FLEX* +filament_vendor = Fillamentum +filament_cost = 33.99 +filament_density = 1.23 +filament_max_volumetric_speed = 1.35 +fan_always_on = 1 +cooling = 0 +max_fan_speed = 50 +min_fan_speed = 50 +disable_fan_first_layers = 5 + [filament:Taulman Bridge] inherits = *common* filament_vendor = Taulman @@ -2321,14 +2564,38 @@ disable_fan_first_layers = 3 fan_always_on = 0 fan_below_layer_time = 20 filament_colour = #DEE0E6 -filament_max_volumetric_speed = 10 +filament_max_volumetric_speed = 7 filament_soluble = 0 filament_type = NYLON first_layer_bed_temperature = 60 first_layer_temperature = 240 -max_fan_speed = 5 +max_fan_speed = 0 min_fan_speed = 0 -start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_MODEL_MINI.*/}0{elsif printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}0{else}10{endif}; Filament gcode" +start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_MODEL_MINI.*/ and nozzle_diameter[0]==0.6}0.12{elsif printer_notes=~/.*PRINTER_MODEL_MINI.*/}0.2{elsif nozzle_diameter[0]==0.6}0.04{else}0.08{endif} ; Filament gcode LA 1.5\n{if printer_notes=~/.*PRINTER_MODEL_MINI.*/};{elsif printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}M900 K200{elsif nozzle_diameter[0]==0.6}M900 K24{else}M900 K45{endif} ; Filament gcode LA 1.0" +temperature = 250 + +[filament:Fillamentum Nylon FX256] +inherits = *common* +filament_vendor = Fillamentum +filament_cost = 56.99 +filament_density = 1.01 +bed_temperature = 90 +bridge_fan_speed = 30 +cooling = 1 +disable_fan_first_layers = 6 +fan_always_on = 0 +fan_below_layer_time = 20 +min_print_speed = 15 +slowdown_below_layer_time = 20 +filament_colour = #DEE0E6 +filament_max_volumetric_speed = 6 +filament_soluble = 0 +filament_type = NYLON +first_layer_bed_temperature = 90 +first_layer_temperature = 250 +max_fan_speed = 0 +min_fan_speed = 0 +start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_MODEL_MINI.*/ and nozzle_diameter[0]==0.6}0.12{elsif printer_notes=~/.*PRINTER_MODEL_MINI.*/}0.2{elsif nozzle_diameter[0]==0.6}0.05{else}0.1{endif} ; Filament gcode LA 1.5\n{if printer_notes=~/.*PRINTER_MODEL_MINI.*/};{elsif printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}M900 K200{elsif nozzle_diameter[0]==0.6}M900 K28{else}M900 K48{endif} ; Filament gcode LA 1.0" temperature = 250 [filament:Taulman T-Glase] @@ -2343,7 +2610,7 @@ first_layer_bed_temperature = 90 first_layer_temperature = 240 max_fan_speed = 5 min_fan_speed = 0 -start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode" +start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_MODEL_MINI.*/ and nozzle_diameter[0]==0.6}0.12{elsif printer_notes=~/.*PRINTER_MODEL_MINI.*/}0.2{elsif nozzle_diameter[0]==0.6}0.04{else}0.06{endif} ; Filament gcode LA 1.5\n{if printer_notes=~/.*PRINTER_MODEL_MINI.*/};{elsif printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}M900 K200{elsif nozzle_diameter[0]==0.6}M900 K18{else}M900 K30{endif} ; Filament gcode LA 1.0" [filament:Verbatim PLA] inherits = *PLA* @@ -2354,7 +2621,7 @@ filament_density = 1.24 [filament:Verbatim BVOH] inherits = *common* filament_vendor = Verbatim -filament_cost = 218 +filament_cost = 79.99 filament_density = 1.23 bed_temperature = 60 bridge_fan_speed = 100 @@ -2371,7 +2638,7 @@ first_layer_bed_temperature = 60 first_layer_temperature = 215 max_fan_speed = 100 min_fan_speed = 100 -start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_MODEL_MINI.*/}0{elsif printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}0{else}10{endif}; Filament gcode" +start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_MODEL_MINI.*/ and nozzle_diameter[0]==0.6}0.12{elsif printer_notes=~/.*PRINTER_MODEL_MINI.*/}0.2{elsif nozzle_diameter[0]==0.6}0.02{else}0.04{endif} ; Filament gcode LA 1.5\n{if printer_notes=~/.*PRINTER_MODEL_MINI.*/};{elsif printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}M900 K200{elsif nozzle_diameter[0]==0.6}M900 K12{else}M900 K20{endif} ; Filament gcode LA 1.0" temperature = 210 [filament:Verbatim BVOH @MMU2] @@ -2408,7 +2675,7 @@ filament_colour = #FFFFD7 filament_cooling_final_speed = 2 filament_cooling_initial_speed = 4 filament_cooling_moves = 2 -filament_cost = 25.4 +filament_cost = 45.01 filament_density = 1.24 filament_diameter = 1.75 filament_load_time = 15 @@ -2429,7 +2696,7 @@ max_fan_speed = 100 min_fan_speed = 100 min_print_speed = 15 slowdown_below_layer_time = 20 -start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode" +start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_MODEL_MINI.*/ and nozzle_diameter[0]==0.6}0.12{elsif printer_notes=~/.*PRINTER_MODEL_MINI.*/}0.2{elsif nozzle_diameter[0]==0.6}0.02{else}0.04{endif} ; Filament gcode LA 1.5\n{if printer_notes=~/.*PRINTER_MODEL_MINI.*/};{elsif printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}M900 K200{elsif nozzle_diameter[0]==0.6}M900 K12{else}M900 K20{endif} ; Filament gcode LA 1.0" temperature = 195 [filament:Verbatim PP] @@ -2451,7 +2718,7 @@ first_layer_bed_temperature = 100 first_layer_temperature = 220 max_fan_speed = 100 min_fan_speed = 100 -start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_MODEL_MINI.*/}0{elsif printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}0{else}10{endif}; Filament gcode" +start_filament_gcode = "M900 K0 ; Filament gcode" temperature = 220 ## Filaments MMU1 @@ -2478,7 +2745,7 @@ temperature = 270 inherits = *PETMMU1* filament_vendor = ColorFabb filament_type = PETG -filament_cost = 62.9 +filament_cost = 38.99 filament_density = 1.27 first_layer_bed_temperature = 90 first_layer_temperature = 260 @@ -2488,11 +2755,11 @@ temperature = 270 inherits = *PETMMU1* filament_vendor = ColorFabb compatible_printers_condition = nozzle_diameter[0]>0.35 and printer_model=="MK2SMM" -extrusion_multiplier = 1.2 -filament_cost = 80.65 +extrusion_multiplier = 1.05 +filament_cost = 49.99 filament_density = 1.35 filament_colour = #804040 -filament_max_volumetric_speed = 1 +filament_max_volumetric_speed = 2 first_layer_bed_temperature = 90 first_layer_temperature = 260 start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode" @@ -2521,7 +2788,7 @@ filament_type = EDGE [filament:Fillamentum CPE @MMU1] inherits = *PETMMU1* filament_vendor = Fillamentum -filament_cost = 54.1 +filament_cost = 34.99 filament_density = 1.25 filament_type = CPE first_layer_bed_temperature = 90 @@ -2537,6 +2804,16 @@ filament_vendor = Generic filament_cost = 27.82 filament_density = 1.27 +[filament:Devil Design PETG @MMU1] +inherits = *PETMMU1* +filament_vendor = Devil Design +filament_cost = 20.99 +filament_density = 1.23 +first_layer_temperature = 230 +first_layer_bed_temperature = 85 +temperature = 230 +bed_temperature = 90 + [filament:Plasty Mladec PETG @MMU1] inherits = *PETMMU1* filament_vendor = Plasty Mladec @@ -2559,7 +2836,7 @@ filament_density = 1.27 inherits = *PETMMU1* renamed_from = "Prusa PET MMU1"; "Prusa PETG MMU1" filament_vendor = Made for Prusa -filament_cost = 27.82 +filament_cost = 22.99 filament_density = 1.27 [filament:Prusament PETG @MMU1] @@ -2567,7 +2844,7 @@ inherits = *PETMMU1* filament_vendor = Prusa Polymers first_layer_temperature = 240 temperature = 250 -filament_cost = 24.99 +filament_cost = 29.99 filament_density = 1.27 filament_type = PETG @@ -2617,6 +2894,17 @@ filament_cost = 27.82 filament_density = 1.27 compatible_printers_condition = printer_model=="MINI" and nozzle_diameter[0]!=0.6 +[filament:Devil Design PETG @MINI] +inherits = Generic PETG; *PETMINI* +filament_vendor = Devil Design +filament_cost = 20.99 +filament_density = 1.23 +first_layer_temperature = 230 +first_layer_bed_temperature = 85 +temperature = 230 +bed_temperature = 90 +compatible_printers_condition = printer_model=="MINI" and nozzle_diameter[0]!=0.6 + [filament:Plasty Mladec PETG @MINI] inherits = Generic PETG; *PETMINI* filament_vendor = Plasty Mladec @@ -2649,9 +2937,29 @@ min_fan_speed = 15 max_fan_speed = 15 slowdown_below_layer_time = 20 disable_fan_first_layers = 4 -fan_below_layer_time = 20 +fan_below_layer_time = 30 bridge_fan_speed = 25 +[filament:Kimya ABS Carbon @MINI] +inherits = *ABSMINI* +filament_vendor = Kimya +filament_cost = 140.4 +filament_density = 1.032 +filament_colour = #804040 +filament_max_volumetric_speed = 6 +first_layer_temperature = 260 +temperature = 260 + +[filament:Kimya ABS Kevlar @MINI] +inherits = *ABSMINI* +filament_vendor = Kimya +filament_cost = 140.4 +filament_density = 1.037 +filament_colour = #804040 +filament_max_volumetric_speed = 6 +first_layer_temperature = 260 +temperature = 260 + [filament:Esun ABS @MINI] inherits = Generic ABS; *ABSMINI* filament_vendor = Esun @@ -2663,7 +2971,7 @@ min_fan_speed = 15 max_fan_speed = 15 slowdown_below_layer_time = 20 disable_fan_first_layers = 4 -fan_below_layer_time = 20 +fan_below_layer_time = 30 bridge_fan_speed = 25 [filament:Hatchbox ABS @MINI] @@ -2677,7 +2985,7 @@ min_fan_speed = 15 max_fan_speed = 15 slowdown_below_layer_time = 20 disable_fan_first_layers = 4 -fan_below_layer_time = 20 +fan_below_layer_time = 30 bridge_fan_speed = 25 [filament:Plasty Mladec ABS @MINI] @@ -2691,7 +2999,21 @@ min_fan_speed = 15 max_fan_speed = 15 slowdown_below_layer_time = 20 disable_fan_first_layers = 4 -fan_below_layer_time = 20 +fan_below_layer_time = 30 +bridge_fan_speed = 25 + +[filament:Verbatim ABS @MINI] +inherits = Generic ABS; *ABSMINI* +filament_vendor = Verbatim +filament_cost = 25.87 +filament_density = 1.05 +fan_always_on = 0 +cooling = 1 +min_fan_speed = 15 +max_fan_speed = 15 +slowdown_below_layer_time = 20 +disable_fan_first_layers = 4 +fan_below_layer_time = 30 bridge_fan_speed = 25 [filament:Prusament PETG @MINI] @@ -2700,20 +3022,44 @@ filament_vendor = Prusa Polymers first_layer_temperature = 240 temperature = 250 filament_density = 1.27 -filament_cost = 24.99 +filament_cost = 29.99 compatible_printers_condition = printer_model=="MINI" and nozzle_diameter[0]!=0.6 +[filament:Kimya PETG Carbon @MINI] +inherits = *PETMINI* +filament_vendor = Kimya +extrusion_multiplier = 1.05 +filament_cost = 150 +filament_density = 1.317 +filament_colour = #804040 +filament_max_volumetric_speed = 6 +first_layer_bed_temperature = 85 +first_layer_temperature = 240 +temperature = 240 +filament_retract_length = nil +filament_retract_lift = 0.3 + [filament:Prusament PETG @0.6 nozzle MINI] inherits = Prusament PETG; *PETMINI06* first_layer_temperature = 240 temperature = 250 filament_density = 1.27 -filament_cost = 24.99 +filament_cost = 29.99 [filament:Generic PETG @0.6 nozzle MINI] inherits = Generic PETG; *PETMINI06* renamed_from = "Generic PET 0.6 nozzle MINI"; "Generic PETG 0.6 nozzle MINI" +[filament:Devil Design PETG @0.6 nozzle MINI] +inherits = Generic PETG; *PETMINI06* +filament_vendor = Devil Design +first_layer_temperature = 230 +first_layer_bed_temperature = 85 +temperature = 230 +bed_temperature = 90 +filament_cost = 20.99 +filament_density = 1.23 + [filament:Plasty Mladec PETG @0.6 nozzle MINI] inherits = Generic PETG; *PETMINI06* filament_vendor = Plasty Mladec @@ -2736,6 +3082,7 @@ fan_always_on = 1 cooling = 1 min_fan_speed = 20 max_fan_speed = 20 +bridge_fan_speed = 30 min_print_speed = 15 slowdown_below_layer_time = 15 disable_fan_first_layers = 4 @@ -2750,6 +3097,7 @@ filament_vendor = Fillamentum first_layer_temperature = 240 temperature = 240 filament_max_volumetric_speed = 1.35 +filament_cost = 33.99 [filament:Generic FLEX @MINI] inherits = SemiFlex or Flexfill 98A; *FLEXMINI* @@ -2811,7 +3159,7 @@ min_fan_speed = 50 min_print_speed = 15 slowdown_below_layer_time = 10 cooling = 1 -filament_cost = 51.45 +filament_cost = 34.99 [filament:Fillamentum Flexfill 92A @MINI] inherits = *FLEXMINI* @@ -2843,7 +3191,7 @@ first_layer_temperature = 265 first_layer_bed_temperature = 90 temperature = 265 filament_type = CPE -filament_cost = 54.1 +filament_cost = 34.99 filament_density = 1.25 [filament:ColorFabb nGen @MINI] @@ -2866,7 +3214,7 @@ min_fan_speed = 15 max_fan_speed = 15 slowdown_below_layer_time = 20 disable_fan_first_layers = 4 -fan_below_layer_time = 20 +fan_below_layer_time = 30 bridge_fan_speed = 25 [filament:Fillamentum ASA @MINI] @@ -2900,10 +3248,38 @@ bridge_fan_speed = 0 filament_cost = 77.3 filament_density = 1.20 +[filament:Prusament PC Blend @MINI] +inherits = *ABSMINI* +filament_vendor = Prusa Polymers +filament_cost = 49.99 +filament_density = 1.22 +fan_always_on = 0 +first_layer_temperature = 275 +first_layer_bed_temperature = 100 +temperature = 275 +bed_temperature = 100 +cooling = 1 +min_fan_speed = 20 +max_fan_speed = 20 +bridge_fan_speed = 30 +min_print_speed = 15 +slowdown_below_layer_time = 20 +disable_fan_first_layers = 4 +fan_below_layer_time = 30 +filament_type = PC +filament_colour = #DEE0E6 +filament_max_volumetric_speed = 7 +filament_retract_length = nil +filament_retract_speed = nil +filament_deretract_speed = nil +filament_retract_lift = nil +filament_retract_before_travel = nil +filament_wipe = nil + [filament:Prusa ABS @MINI] inherits = *ABSMINI* filament_vendor = Made for Prusa -filament_cost = 27.82 +filament_cost = 22.99 filament_density = 1.08 fan_always_on = 0 cooling = 1 @@ -2911,7 +3287,7 @@ min_fan_speed = 15 max_fan_speed = 15 slowdown_below_layer_time = 20 disable_fan_first_layers = 4 -fan_below_layer_time = 20 +fan_below_layer_time = 30 bridge_fan_speed = 25 [filament:Generic HIPS @MINI] @@ -2953,7 +3329,7 @@ temperature = 270 inherits = *PETMINI* filament_vendor = ColorFabb filament_type = PETG -filament_cost = 62.9 +filament_cost = 38.99 filament_density = 1.27 first_layer_bed_temperature = 90 first_layer_temperature = 260 @@ -2963,11 +3339,11 @@ temperature = 270 inherits = *PETMINI* filament_vendor = ColorFabb compatible_printers_condition = nozzle_diameter[0]>0.35 and printer_model=="MINI" -extrusion_multiplier = 1.2 -filament_cost = 80.65 +extrusion_multiplier = 1.05 +filament_cost = 49.99 filament_density = 1.35 filament_colour = #804040 -filament_max_volumetric_speed = 1 +filament_max_volumetric_speed = 2 first_layer_bed_temperature = 90 first_layer_temperature = 260 temperature = 260 @@ -2996,7 +3372,7 @@ filament_type = EDGE inherits = *PETMINI* renamed_from = "Prusa PET MINI"; "Prusa PETG MINI" filament_vendor = Made for Prusa -filament_cost = 27.82 +filament_cost = 22.99 filament_density = 1.27 compatible_printers_condition = printer_model=="MINI" and nozzle_diameter[0]!=0.6 @@ -3004,7 +3380,7 @@ compatible_printers_condition = printer_model=="MINI" and nozzle_diameter[0]!=0. inherits = *PETMINI06* renamed_from = "Prusa PET 0.6 nozzle MINI"; "Prusa PETG 0.6 nozzle MINI" filament_vendor = Made for Prusa -filament_cost = 27.82 +filament_cost = 22.99 filament_density = 1.27 [sla_print:*common*] @@ -3109,6 +3485,13 @@ initial_exposure_time = 30 material_type = Tough material_vendor = 3DM +[sla_material:3DM-HR Red Wine 0.025] +inherits = *common 0.025* +exposure_time = 14 +initial_exposure_time = 35 +material_type = Tough +material_vendor = 3DM + [sla_material:BlueCast Phrozen Wax @0.025] inherits = *common 0.025* exposure_time = 15 @@ -3116,6 +3499,13 @@ initial_exposure_time = 50 material_type = Tough material_vendor = BlueCast +[sla_material:BlueCast Castable Wax @0.025] +inherits = *common 0.025* +exposure_time = 8 +initial_exposure_time = 35 +material_type = Casting +material_vendor = BlueCast + [sla_material:BlueCast EcoGray @0.025] inherits = *common 0.025* exposure_time = 6 @@ -3130,6 +3520,13 @@ initial_exposure_time = 45 material_type = Dental material_vendor = BlueCast +[sla_material:BlueCast Model Dental Gray @0.025] +inherits = *common 0.025* +exposure_time = 6 +initial_exposure_time = 35 +material_type = Dental +material_vendor = BlueCast + [sla_material:BlueCast X10 @0.025] inherits = *common 0.025* exposure_time = 4 @@ -3137,6 +3534,13 @@ initial_exposure_time = 100 material_type = Tough material_vendor = BlueCast +[sla_material:DruckWege Type D High Temp @0.025] +inherits = *common 0.025* +exposure_time = 6 +initial_exposure_time = 20 +material_type = Tough +material_vendor = DruckWege + [sla_material:Esun Bio-Photopolymer Resin White @0.025] inherits = *common 0.025* exposure_time = 5 @@ -3144,6 +3548,48 @@ initial_exposure_time = 30 material_type = Tough material_vendor = Esun +[sla_material:FunToDo Castable Blend Red @0.025] +inherits = *common 0.025* +exposure_time = 10 +initial_exposure_time = 35 +material_type = Casting +material_vendor = FunToDo + +[sla_material:FunToDo Snow White @0.025] +inherits = *common 0.025* +exposure_time = 7 +initial_exposure_time = 35 +material_type = Tough +material_vendor = FunToDo + +[sla_material:Harz Labs Basic Resin Red @0.025] +inherits = *common 0.025* +exposure_time = 10 +initial_exposure_time = 20 +material_type = Tough +material_vendor = Harz Labs + +[sla_material:Harz Labs Model Resin Cherry @0.025] +inherits = *common 0.025* +exposure_time = 10 +initial_exposure_time = 20 +material_type = Tough +material_vendor = Harz Labs + +[sla_material:Harz Labs Model Resin Black @0.025] +inherits = *common 0.025* +exposure_time = 10 +initial_exposure_time = 20 +material_type = Tough +material_vendor = Harz Labs + +[sla_material:Harz Labs Dental Cast Red @0.025] +inherits = *common 0.025* +exposure_time = 10 +initial_exposure_time = 20 +material_type = Dental +material_vendor = Harz Labs + [sla_material:Esun Standard Resin Black @0.025] inherits = *common 0.025* exposure_time = 6 @@ -3171,6 +3617,20 @@ exposure_time = 17 initial_exposure_time = 30 material_type = Tough material_vendor = Resinworks 3D + +[sla_material:Monocure 3D Black Rapid Resin @0.025] +inherits = *common 0.025* +exposure_time = 4 +initial_exposure_time = 35 +material_type = Tough +material_vendor = Monocure + +[sla_material:Monocure 3D Blue Rapid Resin @0.025] +inherits = *common 0.025* +exposure_time = 4 +initial_exposure_time = 35 +material_type = Tough +material_vendor = Monocure ## Prusa [sla_material:Prusa Orange Tough @0.025] @@ -3194,6 +3654,12 @@ initial_exposure_time = 35 material_type = Tough material_vendor = Made for Prusa +## [sla_material:Prusa Blue Tough @0.025] +## inherits = *common 0.025* +## exposure_time = 5 +## initial_exposure_time = 35 +## material_type = Tough +## material_vendor = Made for Prusa [sla_material:Prusa Maroon Tough @0.025] inherits = *common 0.025* @@ -3251,10 +3717,12 @@ initial_exposure_time = 30 material_type = Tough material_vendor = Made for Prusa -## [sla_material:Prusa ABS like White @0.025] -## inherits = *common 0.025* -## exposure_time = 6 -## initial_exposure_time = 30 +[sla_material:Prusa White ABS like @0.025] +inherits = *common 0.025* +exposure_time = 5 +initial_exposure_time = 30 +material_type = Tough +material_vendor = Made for Prusa [sla_material:Prusa Grey High Tenacity @0.025] inherits = *common 0.025* @@ -3291,6 +3759,117 @@ initial_exposure_time = 30 material_type = Tough material_vendor = Made for Prusa +[sla_material:Prusa Vibrant Orange Tough @0.025] +inherits = *common 0.025* +exposure_time = 6 +initial_exposure_time = 35 +material_type = Tough +material_vendor = Made for Prusa + +[sla_material:Siraya Tech Simple Clear @0.025] +inherits = *common 0.025* +exposure_time = 8 +initial_exposure_time = 35 +material_type = Tough +material_vendor = Siraya Tech + +[sla_material:Siraya Tech Blu Clear V2 @0.025] +inherits = *common 0.025* +exposure_time = 9 +initial_exposure_time = 30 +material_type = Tough +material_vendor = Siraya Tech + +[sla_material:Siraya Tech Blu Blue @0.025] +inherits = *common 0.025* +exposure_time = 6 +initial_exposure_time = 35 +material_type = Tough +material_vendor = Siraya Tech + +[sla_material:Siraya Tech Fast Grey @0.025] +inherits = *common 0.025* +exposure_time = 6 +initial_exposure_time = 35 +material_type = Tough +material_vendor = Siraya Tech + +[sla_material:Siraya Tech Tenacious @0.025] +inherits = *common 0.025* +exposure_time = 6 +initial_exposure_time = 35 +material_type = Tough +material_vendor = Siraya Tech + +[sla_material:Siraya Tech Easy @0.025] +inherits = *common 0.025* +exposure_time = 11 +initial_exposure_time = 15 +material_type = Tough +material_vendor = Siraya Tech + +[sla_material:Siraya Tech Sculpt @0.025] +inherits = *common 0.025* +exposure_time = 7 +initial_exposure_time = 35 +material_type = Tough +material_vendor = Siraya Tech + +[sla_material:Siraya Tech Fast Black @0.025] +inherits = *common 0.025* +exposure_time = 6 +initial_exposure_time = 35 +material_type = Tough +material_vendor = Siraya Tech + +[sla_material:NextDent Model 2.0 Grey @0.025] +inherits = *common 0.025* +exposure_time = 14 +initial_exposure_time = 35 +material_type = Dental +material_vendor = NextDent + +[sla_material:NextDent Surgical Guide @0.025] +inherits = *common 0.025* +exposure_time = 6 +initial_exposure_time = 35 +material_type = Dental +material_vendor = NextDent + +[sla_material:NextDent Cast Purple @0.025] +inherits = *common 0.025* +exposure_time = 7 +initial_exposure_time = 20 +material_type = Casting +material_vendor = NextDent + +[sla_material:MakerJuice Labs Standard Red @0.025] +inherits = *common 0.025* +exposure_time = 9 +initial_exposure_time = 35 +material_type = Tough +material_vendor = MakerJuice Labs + +[sla_material:3DJake High Precision Grey @0.025] +inherits = *common 0.025* +exposure_time = 8.5 +initial_exposure_time = 35 +material_type = Tough +material_vendor = 3DJake + +[sla_material:3DJake High Precision Blue @0.025] +inherits = *common 0.025* +exposure_time = 6.5 +initial_exposure_time = 35 +material_type = Tough +material_vendor = 3DJake + +[sla_material:Zortrax Black @0.025] +inherits = *common 0.025* +exposure_time = 4 +initial_exposure_time = 35 +material_type = Tough +material_vendor = Zortrax ########### Materials 0.05 @@ -3301,6 +3880,13 @@ initial_exposure_time = 30 material_type = Dental material_vendor = Asiga +[sla_material:Asiga PlasGRAY @0.05] +inherits = *common 0.05* +exposure_time = 29 +initial_exposure_time = 60 +material_type = Tough +material_vendor = Asiga + [sla_material:Ameralabs AMD 3 LED @0.05] inherits = *common 0.05* exposure_time = 5 @@ -3322,6 +3908,13 @@ initial_exposure_time = 50 material_type = Dental material_vendor = BlueCast +[sla_material:BlueCast Model Dental Gray @0.05] +inherits = *common 0.05* +exposure_time = 8 +initial_exposure_time = 35 +material_type = Dental +material_vendor = BlueCast + [sla_material:BlueCast LCD-DLP Original @0.05] inherits = *common 0.05* exposure_time = 10 @@ -3336,6 +3929,13 @@ initial_exposure_time = 50 material_type = Tough material_vendor = BlueCast +[sla_material:BlueCast Castable Wax @0.05] +inherits = *common 0.05* +exposure_time = 11 +initial_exposure_time = 35 +material_type = Casting +material_vendor = BlueCast + [sla_material:BlueCast S+ @0.05] inherits = *common 0.05* exposure_time = 9 @@ -3364,17 +3964,24 @@ initial_exposure_time = 50 material_type = Tough material_vendor = BlueCast +[sla_material:DruckWege Type D High Temp @0.05] +inherits = *common 0.05* +exposure_time = 10 +initial_exposure_time = 20 +material_type = Tough +material_vendor = DruckWege + [sla_material:Monocure 3D Black Rapid Resin @0.05] inherits = *common 0.05* exposure_time = 6 -initial_exposure_time = 40 +initial_exposure_time = 35 material_type = Tough material_vendor = Monocure [sla_material:Monocure 3D Blue Rapid Resin @0.05] inherits = *common 0.05* exposure_time = 7 -initial_exposure_time = 40 +initial_exposure_time = 35 material_type = Tough material_vendor = Monocure @@ -3394,8 +4001,8 @@ material_vendor = Monocure [sla_material:Monocure 3D White Rapid Resin @0.05] inherits = *common 0.05* -exposure_time = 7 -initial_exposure_time = 40 +exposure_time = 10 +initial_exposure_time = 35 material_type = Tough material_vendor = Monocure @@ -3420,6 +4027,27 @@ initial_exposure_time = 30 material_type = Tough material_vendor = Esun +[sla_material:FunToDo Castable Blend Red @0.05] +inherits = *common 0.05* +exposure_time = 15 +initial_exposure_time = 35 +material_type = Casting +material_vendor = FunToDo + +[sla_material:FunToDo Industrial Blend Unpigmented @0.05] +inherits = *common 0.05* +exposure_time = 4 +initial_exposure_time = 35 +material_type = Tough +material_vendor = FunToDo + +[sla_material:FunToDo Snow White @0.05] +inherits = *common 0.05* +exposure_time = 10 +initial_exposure_time = 35 +material_type = Tough +material_vendor = FunToDo + [sla_material:3DM-ABS @0.05] inherits = *common 0.05* exposure_time = 13 @@ -3450,7 +4078,7 @@ material_vendor = 3DM [sla_material:3DM-HR Red Wine @0.05] inherits = *common 0.05* -exposure_time = 9 +exposure_time = 18 initial_exposure_time = 35 material_type = Tough material_vendor = 3DM @@ -3476,20 +4104,41 @@ initial_exposure_time = 30 material_type = Tough material_vendor = 3DM -[sla_material:FTD Ash Grey @0.05] +[sla_material:FunToDo Ash Grey @0.05] inherits = *common 0.05* exposure_time = 9 initial_exposure_time = 40 material_type = Tough -material_vendor = FTD +material_vendor = FunToDo [sla_material:Harz Labs Model Resin Cherry @0.05] inherits = *common 0.05* -exposure_time = 8 -initial_exposure_time = 45 +exposure_time = 13 +initial_exposure_time = 20 material_type = Tough material_vendor = Harz Labs +[sla_material:Harz Labs Basic Resin Red @0.05] +inherits = *common 0.05* +exposure_time = 13 +initial_exposure_time = 20 +material_type = Tough +material_vendor = Harz Labs + +[sla_material:Harz Labs Model Resin Black @0.05] +inherits = *common 0.05* +exposure_time = 13 +initial_exposure_time = 20 +material_type = Tough +material_vendor = Harz Labs + +[sla_material:Harz Labs Dental Cast Red @0.05] +inherits = *common 0.05* +exposure_time = 13 +initial_exposure_time = 20 +material_type = Dental +material_vendor = Harz Labs + [sla_material:Resinworks 3D Violet @0.05] inherits = *common 0.05* exposure_time = 17 @@ -3518,6 +4167,139 @@ initial_exposure_time = 30 material_type = Tough material_vendor = Photocentric +[sla_material:Siraya Tech Simple Clear @0.05] +inherits = *common 0.05* +exposure_time = 10 +initial_exposure_time = 35 +material_type = Tough +material_vendor = Siraya Tech + +[sla_material:Siraya Tech Blu Clear V2 @0.05] +inherits = *common 0.05* +exposure_time = 10 +initial_exposure_time = 30 +material_type = Tough +material_vendor = Siraya Tech + +[sla_material:Siraya Tech Blu Blue @0.05] +inherits = *common 0.05* +exposure_time = 12 +initial_exposure_time = 35 +material_type = Tough +material_vendor = Siraya Tech + +[sla_material:Siraya Tech Fast Grey @0.05] +inherits = *common 0.05* +exposure_time = 10 +initial_exposure_time = 35 +material_type = Tough +material_vendor = Siraya Tech + +[sla_material:Siraya Tech Tenacious @0.05] +inherits = *common 0.05* +exposure_time = 8 +initial_exposure_time = 35 +material_type = Tough +material_vendor = Siraya Tech + +[sla_material:Siraya Tech Easy @0.05] +inherits = *common 0.05* +exposure_time = 12 +initial_exposure_time = 15 +material_type = Tough +material_vendor = Siraya Tech + +[sla_material:Siraya Tech Sculpt @0.05] +inherits = *common 0.05* +exposure_time = 8 +initial_exposure_time = 35 +material_type = Tough +material_vendor = Siraya Tech + +[sla_material:Siraya Tech Fast Black @0.05] +inherits = *common 0.05* +exposure_time = 9 +initial_exposure_time = 35 +material_type = Tough +material_vendor = Siraya Tech + +[sla_material:NextDent Model 2.0 Grey @0.05] +inherits = *common 0.05* +exposure_time = 12 +initial_exposure_time = 35 +material_type = Dental +material_vendor = NextDent + +[sla_material:NextDent Surgical Guide @0.05] +inherits = *common 0.05* +exposure_time = 7 +initial_exposure_time = 35 +material_type = Dental +material_vendor = NextDent + +[sla_material:NextDent Cast Purple @0.05] +inherits = *common 0.05* +exposure_time = 9 +initial_exposure_time = 20 +material_type = Casting +material_vendor = NextDent + +[sla_material:NextDent Crown Bridge @0.05] +inherits = *common 0.05* +exposure_time = 11 +initial_exposure_time = 35 +material_type = Dental +material_vendor = NextDent + +[sla_material:MakerJuice Labs Standard Red @0.05] +inherits = *common 0.05* +exposure_time = 10 +initial_exposure_time = 35 +material_type = Tough +material_vendor = MakerJuice Labs + +[sla_material:3DJake High Precision Grey @0.05] +inherits = *common 0.05* +exposure_time = 9 +initial_exposure_time = 35 +material_type = Tough +material_vendor = 3DJake + +[sla_material:3DJake High Precision Blue @0.05] +inherits = *common 0.05* +exposure_time = 7 +initial_exposure_time = 35 +material_type = Tough +material_vendor = 3DJake + +[sla_material:Dragon Resin Metalshine Metal Grey @0.05] +inherits = *common 0.05* +exposure_time = 30 +initial_exposure_time = 50 +material_type = Tough +material_vendor = Dragon Resin + +[sla_material:Dragon Resin Metalshine Dark Brass @0.05] +inherits = *common 0.05* +exposure_time = 30 +initial_exposure_time = 50 +material_type = Tough +material_vendor = Dragon Resin + +[sla_material:Dragon Resin Metalshine Brass @0.05] +inherits = *common 0.05* +exposure_time = 30 +initial_exposure_time = 50 +material_type = Tough +material_vendor = Dragon Resin + +[sla_material:Zortrax Black @0.05] +inherits = *common 0.05* +exposure_time = 7 +initial_exposure_time = 35 +material_type = Tough +material_vendor = Zortrax + ## Prusa [sla_material:Prusa Beige Tough @0.05] @@ -3658,6 +4440,13 @@ initial_exposure_time = 35 material_type = Tough material_vendor = Made for Prusa +## [sla_material:Prusa Blue Tough @0.05] +## inherits = *common 0.05* +## exposure_time = 8 +## initial_exposure_time = 35 +## material_type = Tough +## material_vendor = Made for Prusa + [sla_material:Prusa Transparent Tough @0.05] inherits = *common 0.05* exposure_time = 7 @@ -3706,10 +4495,12 @@ initial_exposure_time = 30 material_type = Tough material_vendor = Made for Prusa -## [sla_material:Prusa ABS like White @0.05] -## inherits = *common 0.05* -## exposure_time = 8 -## initial_exposure_time = 30 +[sla_material:Prusa White ABS like @0.05] +inherits = *common 0.05* +exposure_time = 8 +initial_exposure_time = 30 +material_type = Tough +material_vendor = Made for Prusa [sla_material:Prusa Yellow Jewelry Casting @0.05] inherits = *common 0.05* @@ -3725,6 +4516,13 @@ initial_exposure_time = 30 material_type = Tough material_vendor = Made for Prusa +[sla_material:Prusa Vibrant Orange Tough @0.05] +inherits = *common 0.05* +exposure_time = 7 +initial_exposure_time = 35 +material_type = Tough +material_vendor = Made for Prusa + ########### Materials 0.035 [sla_material:Prusa Orange Tough @0.035] @@ -3822,13 +4620,20 @@ initial_exposure_time = 35 material_type = Tough material_vendor = Made for Prusa +[sla_material:Prusa Vibrant Orange Tough @0.1] +inherits = *common 0.1* +exposure_time = 8 +initial_exposure_time = 35 +material_type = Tough +material_vendor = Made for Prusa + [printer:*common*] printer_technology = FFF bed_shape = 0x0,250x0,250x210,0x210 before_layer_gcode = ;BEFORE_LAYER_CHANGE\nG92 E0.0\n;[layer_z]\n\n between_objects_gcode = deretract_speed = 0 -end_gcode = G4 ; wait\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\n{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+30, max_print_height)}{endif} ; Move print head up\nG1 X0 Y200 F3000 ; home X axis\nM84 ; disable motors +end_gcode = G4 ; wait\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\n{if layer_z < max_print_height}G1 Z{z_offset+min(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 extruder_offset = 0x0 gcode_flavor = marlin silent_mode = 0 @@ -3907,7 +4712,7 @@ printer_model = MK2SMM [printer:*mm-single*] inherits = *multimaterial* -end_gcode = G1 E-4 F2100.00000\nG91\nG1 Z1 F7200.000\nG90\nG1 X245 Y1\nG1 X240 E4\nG1 F4000\nG1 X190 E2.7 \nG1 F4600\nG1 X110 E2.8\nG1 F5200\nG1 X40 E3 \nG1 E-15.0000 F5000\nG1 E-50.0000 F5400\nG1 E-15.0000 F3000\nG1 E-12.0000 F2000\nG1 F1600\nG1 X0 Y1 E3.0000\nG1 X50 Y1 E-5.0000\nG1 F2000\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-5.0000\nG1 F2400\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-5.0000\nG1 F2400\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-3.0000\nG4 S0\nM107 ; turn off fan\n{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+30, max_print_height)}{endif} ; Move print head up\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nG28 X0 ; home X axis\nM84 ; disable motors\n\n +end_gcode = G1 E-4 F2100.00000\nG91\nG1 Z1 F7200.000\nG90\nG1 X245 Y1\nG1 X240 E4\nG1 F4000\nG1 X190 E2.7 \nG1 F4600\nG1 X110 E2.8\nG1 F5200\nG1 X40 E3 \nG1 E-15.0000 F5000\nG1 E-50.0000 F5400\nG1 E-15.0000 F3000\nG1 E-12.0000 F2000\nG1 F1600\nG1 X0 Y1 E3.0000\nG1 X50 Y1 E-5.0000\nG1 F2000\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-5.0000\nG1 F2400\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-5.0000\nG1 F2400\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-3.0000\nG4 S0\nM107 ; turn off fan\n{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+30, max_print_height)}{endif} ; Move print head up\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nG28 X0 ; home X axis\nM900 K0 ; reset LA\nM84 ; disable motors\n\n 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\nPRINTER_HAS_BOWDEN start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.2.3 ; tell printer latest fw version\nM204 S[machine_max_acceleration_extruding] T[machine_max_acceleration_retracting] ; MK2 firmware only supports the old M204 format\n; Start G-Code sequence START\nT?\nM104 S[first_layer_temperature]\nM140 S[first_layer_bed_temperature]\nM109 S[first_layer_temperature]\nM190 S[first_layer_bed_temperature]\nG90 ; use absolute coordinates\nM83 ; use relative distances for extrusion\nG28 W\nG80\nG92 E0.0\nM203 E100\nM92 E140\nG1 Z0.250 F7200.000\nG1 X50.0 E80.0 F1000.0\nG1 X160.0 E20.0 F1000.0\nG1 Z0.200 F7200.000\nG1 X220.0 E13 F1000.0\nG1 X240.0 E0 F1000.0\nG92 E0.0 default_print_profile = 0.15mm OPTIMAL @@ -3915,7 +4720,7 @@ default_print_profile = 0.15mm OPTIMAL [printer:*mm-multi*] inherits = *multimaterial* high_current_on_filament_swap = 1 -end_gcode = {if not has_wipe_tower}\n; Pull the filament into the cooling tubes.\nG1 E-4 F2100.00000\nG91\nG1 Z1 F7200.000\nG90\nG1 X245 Y1\nG1 X240 E4\nG1 F4000\nG1 X190 E2.7 \nG1 F4600\nG1 X110 E2.8\nG1 F5200\nG1 X40 E3 \nG1 E-15.0000 F5000\nG1 E-50.0000 F5400\nG1 E-15.0000 F3000\nG1 E-12.0000 F2000\nG1 F1600\nG1 X0 Y1 E3.0000\nG1 X50 Y1 E-5.0000\nG1 F2000\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-5.0000\nG1 F2400\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-5.0000\nG1 F2400\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-3.0000\nG4 S0\n{endif}\nM107 ; turn off fan\n{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+30, max_print_height)}{endif} ; Move print head up\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nG28 X0 ; home X axis\nM84 ; disable motors +end_gcode = {if not has_wipe_tower}\n; Pull the filament into the cooling tubes.\nG1 E-4 F2100.00000\nG91\nG1 Z1 F7200.000\nG90\nG1 X245 Y1\nG1 X240 E4\nG1 F4000\nG1 X190 E2.7 \nG1 F4600\nG1 X110 E2.8\nG1 F5200\nG1 X40 E3 \nG1 E-15.0000 F5000\nG1 E-50.0000 F5400\nG1 E-15.0000 F3000\nG1 E-12.0000 F2000\nG1 F1600\nG1 X0 Y1 E3.0000\nG1 X50 Y1 E-5.0000\nG1 F2000\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-5.0000\nG1 F2400\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-5.0000\nG1 F2400\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-3.0000\nG4 S0\n{endif}\nM107 ; turn off fan\n{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+30, max_print_height)}{endif} ; Move print head up\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nG28 X0 ; home X axis\nM900 K0 ; reset LA\nM84 ; disable motors extruder_colour = #FFAA55;#E37BA0;#4ECDD3;#FB7259 nozzle_diameter = 0.4,0.4,0.4,0.4 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\nPRINTER_HAS_BOWDEN @@ -3989,21 +4794,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.8.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.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 [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.8.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.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 [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.8.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.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 [printer:Original Prusa i3 MK2.5 MMU2 Single] inherits = Original Prusa i3 MK2.5; *mm2* @@ -4032,8 +4837,8 @@ 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.8.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 -end_gcode = G1 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\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 layer_z < max_print_height}G1 Z{z_offset+min(layer_z+30, max_print_height)}{endif} ; Move print head up\nG1 X0 Y200 F3000 ; home X axis\nM84 ; disable motors +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 +end_gcode = {if layer_z < max_print_height}G1 Z{z_offset+min(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] inherits = Original Prusa i3 MK2.5S MMU2S Single 0.6 nozzle @@ -4074,23 +4879,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.8.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 -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 layer_z < max_print_height}G1 Z{z_offset+min(layer_z+30, max_print_height)}{endif} ; Move print head up\nG1 X0 Y200 F3000 ; home X axis\nM84 ; disable motors\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\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 layer_z < max_print_height}G1 Z{z_offset+min(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.8.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.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 [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.8.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.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 [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.8.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.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 [printer:Original Prusa i3 MK2.5S MMU2S Single] inherits = Original Prusa i3 MK2.5; *mm2s* @@ -4119,8 +4924,8 @@ 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.8.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 -end_gcode = G1 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\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 layer_z < max_print_height}G1 Z{z_offset+min(layer_z+30, max_print_height)}{endif} ; Move print head up\nG1 X0 Y200 F3000 ; home X axis\nM84 ; disable motors +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 +end_gcode = {if layer_z < max_print_height}G1 Z{z_offset+min(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] inherits = Original Prusa i3 MK2.5S MMU2S Single @@ -4140,7 +4945,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.8.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.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 [printer:Original Prusa i3 MK2.5S MMU2S] inherits = Original Prusa i3 MK2.5; *mm2s* @@ -4173,8 +4978,8 @@ 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.8.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 -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 layer_z < max_print_height}G1 Z{z_offset+min(layer_z+30, max_print_height)}{endif} ; Move print head up\nG1 X0 Y200 F3000 ; home X axis\nM84 ; disable motors\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\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 layer_z < max_print_height}G1 Z{z_offset+min(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] inherits = Original Prusa i3 MK2.5S MMU2S @@ -4198,13 +5003,13 @@ default_print_profile = 0.20mm NORMAL @0.6 nozzle [printer:Original Prusa i3 MK3] inherits = *common* -end_gcode = G4 ; wait\nM221 S100\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\n{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+30, max_print_height)}{endif} ; Move print head up\nG1 X0 Y200 F3000 ; home X axis\nM84 ; disable motors +end_gcode = G4 ; 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\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\n{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+30, max_print_height)}{endif} ; Move print head up\nG1 X0 Y200 F3000 ; home X axis\nM84 ; disable motors machine_max_acceleration_e = 5000,5000 machine_max_acceleration_extruding = 1250,1250 machine_max_acceleration_retracting = 1250,1250 machine_max_acceleration_x = 1000,960 machine_max_acceleration_y = 1000,960 -machine_max_acceleration_z = 1000,1000 +machine_max_acceleration_z = 200,200 machine_max_feedrate_e = 120,120 machine_max_feedrate_x = 200,100 machine_max_feedrate_y = 200,100 @@ -4220,7 +5025,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.8.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.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} printer_model = MK3 default_print_profile = 0.15mm QUALITY @MK3 @@ -4231,7 +5036,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.8.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} +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} default_print_profile = 0.10mm DETAIL @0.25 nozzle MK3 [printer:Original Prusa i3 MK3 0.6 nozzle] @@ -4245,17 +5050,17 @@ default_print_profile = 0.30mm QUALITY @0.6 nozzle MK3 [printer:Original Prusa i3 MK3S] inherits = Original Prusa i3 MK3 printer_model = MK3S -start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.8.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.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} [printer:Original Prusa i3 MK3S 0.25 nozzle] inherits = Original Prusa i3 MK3 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.8.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} +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} [printer:Original Prusa i3 MK3S 0.6 nozzle] inherits = Original Prusa i3 MK3 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.8.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.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} [printer:*mm2*] inherits = Original Prusa i3 MK3 @@ -4285,8 +5090,8 @@ 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.8.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 -end_gcode = G1 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\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 layer_z < max_print_height}G1 Z{z_offset+min(layer_z+30, max_print_height)}{endif} ; Move print head up\nG1 X0 Y200 F3000 ; home X axis\nM84 ; disable motors +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} +end_gcode = {if layer_z < max_print_height}G1 Z{z_offset+min(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] inherits = Original Prusa i3 MK3 MMU2 Single @@ -4295,6 +5100,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 default_print_profile = 0.30mm QUALITY @0.6 nozzle MK3 [printer:Original Prusa i3 MK3 MMU2 Single 0.25 nozzle] @@ -4305,7 +5111,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.8.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 +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} default_print_profile = 0.10mm DETAIL @0.25 nozzle MK3 [printer:Original Prusa i3 MK3 MMU2] @@ -4316,15 +5122,15 @@ 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.8.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 -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 layer_z < max_print_height}G1 Z{z_offset+min(layer_z+30, max_print_height)}{endif} ; Move print head up\nG1 X0 Y200 F3000 ; home X axis\nM84 ; disable motors\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\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 layer_z < max_print_height}G1 Z{z_offset+min(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 MMU2S Single] inherits = *mm2s* 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.8.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 -end_gcode = G1 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\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 layer_z < max_print_height}G1 Z{z_offset+min(layer_z+30, max_print_height)}{endif} ; Move print head up\nG1 X0 Y200 F3000 ; home X axis\nM84 ; disable motors +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} +end_gcode = {if layer_z < max_print_height}G1 Z{z_offset+min(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 MMU2S Single 0.6 nozzle] inherits = Original Prusa i3 MK3S MMU2S Single @@ -4333,6 +5139,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 default_print_profile = 0.30mm QUALITY @0.6 nozzle MK3 [printer:Original Prusa i3 MK3S MMU2S Single 0.25 nozzle] @@ -4343,7 +5150,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.8.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 +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} default_print_profile = 0.10mm DETAIL @0.25 nozzle MK3 [printer:Original Prusa i3 MK3S MMU2S] @@ -4351,8 +5158,8 @@ inherits = *mm2s* 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.8.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 -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 layer_z < max_print_height}G1 Z{z_offset+min(layer_z+30, max_print_height)}{endif} ; Move print head up\nG1 X0 Y200 F3000 ; home X axis\nM84 ; disable motors\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\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 layer_z < max_print_height}G1 Z{z_offset+min(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 @@ -4362,6 +5169,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 default_print_profile = 0.30mm QUALITY @0.6 nozzle MK3 [printer:Original Prusa i3 MK3 MMU2 0.6 nozzle] @@ -4370,6 +5178,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 default_print_profile = 0.30mm QUALITY @0.6 nozzle MK3 ## MINI @@ -4418,7 +5227,7 @@ retract_layer_change = 0 silent_mode = 0 remaining_times = 1 start_gcode = G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S170 ; set extruder temp for bed leveling\nM140 S[first_layer_bed_temperature] ; set bed temp\nM109 R170 ; wait for bed leveling temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nG28 ; home all without mesh bed level\nG29 ; mesh bed leveling \nM104 S[first_layer_temperature] ; set extruder temp\nG92 E0.0\nG1 Y-2.0 X179 F2400\nG1 Z3 F720\nM109 S[first_layer_temperature] ; wait for extruder temp\n\n; intro line\nG1 X170 F1000\nG1 Z0.2 F720\nG1 X110.0 E8.0 F900\nG1 X40.0 E10.0 F700\nG92 E0.0\n\nM221 S95 ; set flow -end_gcode = G1 E-1 F2100 ; retract\n{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+5, max_print_height)}{endif} F720 ; Move print head up\nG1 X178 Y180 F4200 ; park print head\nG4 ; wait\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nM221 S100 ; reset flow\nM84 ; disable motors +end_gcode = G1 E-1 F2100 ; retract\n{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+2, max_print_height)}{endif} F720 ; Move print head up\nG1 X178 Y180 F4200 ; park print head\n{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+30, max_print_height)}{endif} F720 ; Move print head further up\nG4 ; wait\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nM221 S100 ; reset flow\nM900 K0 ; reset LA\nM84 ; disable motors 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_MINI\n extruder_colour = @@ -4457,7 +5266,7 @@ retract_before_travel = 1.5 printer_technology = SLA printer_model = SL1 printer_variant = default -default_sla_material_profile = Prusa Orange Tough 0.05 +default_sla_material_profile = Prusa Orange Tough @0.05 default_sla_print_profile = 0.05 Normal thumbnails = 400x400,800x480 bed_shape = 1.48x1.02,119.48x1.02,119.48x67.02,1.48x67.02 diff --git a/resources/profiles/TriLAB.idx b/resources/profiles/TriLAB.idx index a43bf4e004..9281dab130 100644 --- a/resources/profiles/TriLAB.idx +++ b/resources/profiles/TriLAB.idx @@ -1,2 +1,5 @@ -min_slic3r_version = 2.3.0-alpha0 -0.0.1 Initial TriLAB bundle +min_slic3r_version = 2.3.0-alpha3 +0.0.3 Added DeltiQ 2, DeltiQ 2 Plus printers, 0.10mm, 0.20mm FLEX print profiles, updated print materials, flexprint extension support +min_slic3r_version = 2.3.0-alpha0 +0.0.2 Added 0.15mm print profile +0.0.1 Initial TriLAB bundle diff --git a/resources/profiles/TriLAB.ini b/resources/profiles/TriLAB.ini index 2412cf1159..735314ae28 100644 --- a/resources/profiles/TriLAB.ini +++ b/resources/profiles/TriLAB.ini @@ -1,225 +1,378 @@ -# DeltiQ presets for PrusaSlicer -# https://github.com/prusa3d/PrusaSlicer-settings/pull/100 -# based on https://github.com/trilab3d/Slicer-profiles/tree/deltiq/Slic3r_PE_1_41_3 +# Print profiles for the TriLAB printers +# based on https://github.com/trilab3d/PrusaSlicer-settings/tree/master/live/TriLAB [vendor] # Vendor name will be shown by the Config Wizard. -name = TRILAB +name = TriLAB # 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.1 +config_version = 0.0.3 # Where to get the updates from? -config_update_url = http://files.prusa3d.com/wp-content/uploads/repository/PrusaSlicer-settings-master/live/TriLAB/ -# changelog_url = http://files.prusa3d.com/?latest=slicer-profiles&lng=%1% +config_update_url = https://files.prusa3d.com/wp-content/uploads/repository/PrusaSlicer-settings-master/live/TriLAB/ +# changelog_url = https://files.prusa3d.com/?latest=slicer-profiles&lng=%1% # The printer models will be shown by the Configuration Wizard in this order, # also the first model installed & the first nozzle installed will be activated after install. # Printer model name will be shown by the installation wizard. -[printer_model:DQM] -name = TRILAB DeltiQ M +[printer_model:DQ2] +name = DeltiQ 2 variants = 0.4 technology = FFF -bed_model = -bed_texture = +family = DeltiQ 2 +bed_model = dq2_bed.stl +bed_texture = dq2_bed_texture.svg +default_materials = DeltiQ PLA; DeltiQ ASA; DeltiQ PET; DeltiQ ABS; DeltiQ CPE + +[printer_model:DQ2P] +name = DeltiQ 2 Plus +variants = 0.4 +technology = FFF +family = DeltiQ 2 +bed_model = dq2_bed.stl +bed_texture = dq2_bed_texture.svg +default_materials = DeltiQ PLA; DeltiQ ASA; DeltiQ PET; DeltiQ ABS; DeltiQ CPE + +[printer_model:DQ2+FP2] +name = DeltiQ 2 + FlexPrint 2 +variants = 0.4 +technology = FFF +family = DeltiQ 2 +bed_model = dq2_bed.stl +bed_texture = dq2_bed_texture.svg +default_materials = DeltiQ FlexPrint 2 FLEX; DeltiQ FlexPrint 2 FLEX Smartfil; DeltiQ FlexPrint 2 PLA; DeltiQ FlexPrint 2 ASA; DeltiQ FlexPrint 2 PET; DeltiQ FlexPrint 2 ABS; DeltiQ FlexPrint 2 CPE + +[printer_model:DQ2P+FP2] +name = DeltiQ 2 Plus + FlexPrint 2 +variants = 0.4 +technology = FFF +family = DeltiQ 2 +bed_model = dq2_bed.stl +bed_texture = dq2_bed_texture.svg +default_materials = DeltiQ FlexPrint 2 FLEX; DeltiQ FlexPrint 2 FLEX Smartfil; DeltiQ FlexPrint 2 PLA; DeltiQ FlexPrint 2 ASA; DeltiQ FlexPrint 2 PET; DeltiQ FlexPrint 2 ABS; DeltiQ FlexPrint 2 CPE + +[printer_model:DQ2+FP] +name = DeltiQ 2 + FlexPrint +variants = 0.4 +technology = FFF +family = DeltiQ 2 +bed_model = dq2_bed.stl +bed_texture = dq2_bed_texture.svg +default_materials = DeltiQ FlexPrint FLEX; DeltiQ FlexPrint PLA; DeltiQ FlexPrint ASA; DeltiQ FlexPrint PET; DeltiQ FlexPrint ABS; DeltiQ FlexPrint CPE + +[printer_model:DQ2P+FP] +name = DeltiQ 2 Plus + FlexPrint +variants = 0.4 +technology = FFF +family = DeltiQ 2 +bed_model = dq2_bed.stl +bed_texture = dq2_bed_texture.svg +default_materials = DeltiQ FlexPrint FLEX; DeltiQ FlexPrint PLA; DeltiQ FlexPrint ASA; DeltiQ FlexPrint PET; DeltiQ FlexPrint ABS; DeltiQ FlexPrint CPE + +[printer_model:DQM] +name = DeltiQ M +variants = 0.4 +technology = FFF +family = DeltiQ default_materials = DeltiQ PLA; DeltiQ ASA; DeltiQ PET; DeltiQ ABS; DeltiQ CPE [printer_model:DQL] -name = TRILAB DeltiQ L +name = DeltiQ L variants = 0.4 technology = FFF -bed_model = -bed_texture = +family = DeltiQ default_materials = DeltiQ PLA; DeltiQ ASA; DeltiQ PET; DeltiQ ABS; DeltiQ CPE [printer_model:DQXL] -name = TRILAB DeltiQ XL +name = DeltiQ XL variants = 0.4 technology = FFF -bed_model = -bed_texture = +family = DeltiQ default_materials = DeltiQ PLA; DeltiQ ASA; DeltiQ PET; DeltiQ ABS; DeltiQ CPE - # All presets starting with asterisk, for example *common*, are intermediate and they will # not make it into the user interface. -[print:DeltiQ 0.2mm] +[print:DeltiQ 0.20mm Normal] avoid_crossing_perimeters = 0 -bottom_solid_layers = 3 +bottom_fill_pattern = rectilinear +bottom_solid_layers = 4 +bottom_solid_min_thickness = 0.7 bridge_acceleration = 1000 bridge_angle = 0 bridge_flow_ratio = 0.95 -bridge_speed = 20 +bridge_speed = 30 brim_width = 0 -clip_multipart_objects = 0 -compatible_printers_condition = printer_notes=~/.*TRILAB.*/ +clip_multipart_objects = 1 +compatible_printers = +compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_TRILAB.*/ complete_objects = 0 default_acceleration = 2000 -dont_support_bridges = 1 -elefant_foot_compensation = 0 -ensure_vertical_shell_thickness = 1 -external_fill_pattern = rectilinear -external_perimeter_extrusion_width = 0.4 +dont_support_bridges = 0 +draft_shield = 0 +elefant_foot_compensation = 0.2 +ensure_vertical_shell_thickness = 0 +external_perimeter_extrusion_width = 0.45 external_perimeter_speed = 30 external_perimeters_first = 0 extra_perimeters = 0 -extruder_clearance_height = 20 -extruder_clearance_radius = 20 -extrusion_width = 0.4 +extruder_clearance_height = 60 +extruder_clearance_radius = 45 +extrusion_width = 0.45 fill_angle = 45 -fill_density = 15% -fill_pattern = gyroid +fill_density = 20% +fill_pattern = grid first_layer_acceleration = 1000 -first_layer_extrusion_width = 0.4 -first_layer_height = 0.3 +first_layer_extrusion_width = 0.42 +first_layer_height = 0.2 first_layer_speed = 20 -gap_fill_speed = 50 +gap_fill_speed = 40 gcode_comments = 0 +gcode_label_objects = 0 infill_acceleration = 2000 infill_every_layers = 1 infill_extruder = 1 -infill_extrusion_width = 0.55 +infill_extrusion_width = 0.45 infill_first = 0 infill_only_where_needed = 0 infill_overlap = 25% -infill_speed = 50 -inherits = +infill_speed = 60 interface_shells = 0 +ironing = 0 +ironing_flowrate = 15% +ironing_spacing = 0.1 +ironing_speed = 15 +ironing_type = top layer_height = 0.2 -max_print_speed = 100 -max_volumetric_extrusion_rate_slope_negative = 0 -max_volumetric_extrusion_rate_slope_positive = 0 -max_volumetric_speed = 10 +max_print_speed = 60 +max_volumetric_speed = 0 min_skirt_length = 4 notes = only_retract_when_crossing_perimeters = 1 ooze_prevention = 0 -output_filename_format = {input_filename_base}_{layer_height}mm_{filament_type[0]}_{printer_model}.gcode -overhangs = 0 +output_filename_format = {input_filename_base}_{printer_model}_{filament_type[0]}_{layer_height}mm_{print_time}.gcode +overhangs = 1 perimeter_acceleration = 1500 perimeter_extruder = 1 -perimeter_extrusion_width = 0.4 -perimeter_speed = 40 +perimeter_extrusion_width = 0.45 +perimeter_speed = 45 perimeters = 2 post_process = print_settings_id = raft_layers = 0 resolution = 0 seam_position = nearest -single_extruder_multi_material_priming = 1 -skirt_distance = 2 -skirt_height = 1 +single_extruder_multi_material_priming = 0 +skirt_distance = 3 +skirt_height = 2 skirts = 1 +slice_closing_radius = 0.049 small_perimeter_speed = 20 -solid_infill_below_area = 15 +solid_infill_below_area = 70 solid_infill_every_layers = 0 solid_infill_extruder = 1 -solid_infill_extrusion_width = 0.4 -solid_infill_speed = 50 +solid_infill_extrusion_width = 0.45 +solid_infill_speed = 60 spiral_vase = 0 standby_temperature_delta = -5 support_material = 0 -support_material_angle = 0 +support_material_angle = 40 support_material_auto = 1 support_material_buildplate_only = 0 -support_material_contact_distance = 0.15 +support_material_contact_distance = 0.1 support_material_enforce_layers = 0 -support_material_extruder = 1 -support_material_extrusion_width = 0 +support_material_extruder = 0 +support_material_extrusion_width = 0.35 support_material_interface_contact_loops = 0 -support_material_interface_extruder = 1 -support_material_interface_layers = 3 -support_material_interface_spacing = 0 +support_material_interface_extruder = 0 +support_material_interface_layers = 4 +support_material_interface_spacing = 0.4 support_material_interface_speed = 100% support_material_pattern = rectilinear -support_material_spacing = 2.5 +support_material_spacing = 2 support_material_speed = 50 support_material_synchronize_layers = 0 support_material_threshold = 55 -support_material_with_sheath = 1 -support_material_xy_spacing = 100% +support_material_with_sheath = 0 +support_material_xy_spacing = 0.6 thin_walls = 0 -threads = 4 +threads = 12 +top_fill_pattern = monotonic top_infill_extrusion_width = 0.4 -top_solid_infill_speed = 30 -top_solid_layers = 4 +top_solid_infill_speed = 40 +top_solid_layers = 5 +top_solid_min_thickness = 0.7 travel_speed = 150 wipe_tower = 0 wipe_tower_bridging = 10 +wipe_tower_no_sparse_layers = 0 wipe_tower_rotation_angle = 0 wipe_tower_width = 60 wipe_tower_x = 180 wipe_tower_y = 140 xy_size_compensation = 0 +[print:DeltiQ 0.10mm Normal] +inherits = DeltiQ 0.20mm Normal +bottom_solid_layers = 7 +bottom_solid_min_thickness = 0.7 +bridge_flow_ratio = 0.7 +bridge_speed = 30 +ensure_vertical_shell_thickness = 1 +layer_height = 0.1 +first_layer_height = 0.2 +top_solid_layers = 9 +top_solid_min_thickness = 0.7 +top_infill_extrusion_width = 0.4 +fill_pattern = grid +fill_density = 20% + +[print:DeltiQ 0.15mm Normal] +inherits = DeltiQ 0.20mm Normal +bottom_solid_layers = 5 +bottom_solid_min_thickness = 0.7 +bridge_flow_ratio = 0.7 +bridge_speed = 30 +ensure_vertical_shell_thickness = 1 +layer_height = 0.15 +first_layer_height = 0.2 +top_solid_layers = 7 +top_solid_min_thickness = 0.7 +fill_pattern = grid +fill_density = 20% + +[print:DeltiQ 0.20mm Vase] +inherits = DeltiQ 0.20mm Normal +perimeters = 1 +top_solid_layers = 0 +fill_density = 0 +support_material = 0 +spiral_vase = 1 +ensure_vertical_shell_thickness = 1 +thin_walls = 0 + +[print:DeltiQ 0.20mm FLEX] +inherits = DeltiQ 0.20mm Normal +avoid_crossing_perimeters = 0 +bridge_flow_ratio = 0.90 +compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_TRILAB.*/ and printer_notes=~/.*FLEXPRINT.*/ +only_retract_when_crossing_perimeters = 1 +overhangs = 0 +seam_position = nearest +thin_walls = 0 +bridge_speed = 20 +external_perimeter_speed = 20 +first_layer_speed = 20 +gap_fill_speed = 25 +infill_speed = 30 +perimeter_speed = 25 +small_perimeter_speed = 20 +solid_infill_speed = 30 +support_material_contact_distance = 0.3 +top_solid_infill_speed = 20 +top_fill_pattern = rectilinear +fill_pattern = grid +fill_density = 25% +travel_speed = 200 +max_print_speed = 30 +complete_objects = 1 + + [filament:*DeltiQ common*] -bed_temperature = 90 -bridge_fan_speed = 50 -compatible_printers_condition = printer_notes=~/.*TRILAB.*/ -cooling = 1 -filament_vendor = Generic +compatible_printers = +compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_TRILAB.*/ and printer_notes=~/.*PRINTER_FAMILY_DQ.*/ and !(printer_notes=~/.*FLEXPRINT.*/) disable_fan_first_layers = 3 -end_filament_gcode = "" extrusion_multiplier = 1 -fan_always_on = 1 -fan_below_layer_time = 60 -filament_colour = #FF3232 -filament_cooling_final_speed = 3.4 -filament_cooling_initial_speed = 2.2 -filament_cooling_moves = 4 -filament_cost = 0 -filament_density = 1.25 +filament_colour = #FF0000 filament_diameter = 1.75 -filament_load_time = 0 -filament_loading_speed = 28 -filament_loading_speed_start = 3 -filament_max_volumetric_speed = 10 filament_minimal_purge_on_wipe_tower = 15 filament_notes = "" filament_ramming_parameters = "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6" filament_settings_id = "" filament_soluble = 0 filament_toolchange_delay = 0 +start_filament_gcode = "; FILAMENT_START_GCODE" +end_filament_gcode = "; FILAMENT_END_GCODE" + +[filament:DeltiQ PET] +inherits = *DeltiQ common* +bed_temperature = 90 +bridge_fan_speed = 50 +cooling = 1 +fan_always_on = 1 +fan_below_layer_time = 20 +filament_vendor = DevilDesign +filament_cost = 480 +filament_density = 1.27 +filament_deretract_speed = 25 +filament_max_volumetric_speed = 8 +filament_retract_before_travel = 2 +filament_retract_before_wipe = 70% +filament_retract_layer_change = 1 +filament_retract_length = 4.1 +filament_retract_lift = 0.2 +filament_retract_speed = 45 filament_type = PET -filament_unload_time = 0 -filament_unloading_speed = 90 -filament_unloading_speed_start = 100 +filament_wipe = 1 first_layer_bed_temperature = 90 first_layer_temperature = 240 max_fan_speed = 50 min_fan_speed = 30 min_print_speed = 10 slowdown_below_layer_time = 5 -start_filament_gcode = "" temperature = 245 -[filament:DeltiQ PET] -inherits = *DeltiQ common* - [filament:DeltiQ PLA] inherits = *DeltiQ common* bed_temperature = 55 bridge_fan_speed = 100 -disable_fan_first_layers = 1 +cooling = 1 +fan_always_on = 1 +fan_below_layer_time = 100 +filament_vendor = Fillamentum +filament_cost = 767 +filament_density = 1.24 +filament_max_volumetric_speed = 8 +filament_retract_before_travel = 2 +filament_retract_before_wipe = 90% +filament_retract_layer_change = 1 +filament_retract_length = 4.0 +filament_retract_lift = 0.2 +filament_retract_speed = 30 filament_type = PLA +filament_wipe = 1 first_layer_bed_temperature = 55 -first_layer_temperature = 215 +first_layer_temperature = 220 max_fan_speed = 100 -min_fan_speed = 85 +min_fan_speed = 100 +min_print_speed = 10 slowdown_below_layer_time = 4 -temperature = 210 +temperature = 215 [filament:DeltiQ ABS] inherits = *DeltiQ common* bed_temperature = 100 -bridge_fan_speed = 20 -filament_density = 1.04 +bridge_fan_speed = 25 +cooling = 1 +fan_always_on = 1 +fan_below_layer_time = 20 +filament_vendor = Fillamentum +filament_cost = 774 +filament_density = 1.08 +filament_max_volumetric_speed = 4 +filament_retract_before_travel = 3 +filament_retract_before_wipe = 70% +filament_retract_layer_change = 1 +filament_retract_length = 4.1 +filament_retract_lift = 0.2 +filament_retract_speed = 25 filament_type = ABS +filament_wipe = 1 first_layer_bed_temperature = 100 first_layer_temperature = 255 -max_fan_speed = 20 +max_fan_speed = 15 min_fan_speed = 5 +min_print_speed = 10 slowdown_below_layer_time = 15 temperature = 255 @@ -232,11 +385,160 @@ temperature = 265 [filament:DeltiQ CPE] inherits = *DeltiQ common* -bed_temperature = 85 +bed_temperature = 90 +bridge_fan_speed = 50 +cooling = 1 +fan_always_on = 1 +fan_below_layer_time = 20 +filament_vendor = Fillamentum +filament_cost = 1214 +filament_density = 1.25 +filament_deretract_speed = 25 +filament_max_volumetric_speed = 8 +filament_retract_before_travel = 2 +filament_retract_before_wipe = 70% +filament_retract_layer_change = 0 +filament_retract_length = 4.3 +filament_retract_lift = 0.2 +filament_retract_speed = 45 filament_type = CPE -first_layer_bed_temperature = 85 -first_layer_temperature = 260 -temperature = 265 +filament_wipe = 1 +first_layer_bed_temperature = 90 +first_layer_temperature = 265 +max_fan_speed = 50 +min_fan_speed = 30 +min_print_speed = 10 +slowdown_below_layer_time = 5 +temperature = 260 + + +[filament:DeltiQ FlexPrint 2 PET] +inherits = DeltiQ PET +compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_TRILAB.*/ and printer_notes=~/.*PRINTER_FAMILY_DQ.*/ and printer_notes=~/.*FLEXPRINT2.*/ +filament_retract_length = 1.4 +filament_retract_speed = 35 +filament_retract_before_wipe = 0% + +[filament:DeltiQ FlexPrint 2 PLA] +inherits = DeltiQ PLA +compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_TRILAB.*/ and printer_notes=~/.*PRINTER_FAMILY_DQ.*/ and printer_notes=~/.*FLEXPRINT2.*/ +filament_retract_length = 1.2 +filament_retract_speed = 28 + +[filament:DeltiQ FlexPrint 2 ABS] +inherits = DeltiQ ABS +compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_TRILAB.*/ and printer_notes=~/.*PRINTER_FAMILY_DQ.*/ and printer_notes=~/.*FLEXPRINT2.*/ +filament_retract_length = 0.8 +filament_retract_speed = 25 + +[filament:DeltiQ FlexPrint 2 ASA] +inherits = DeltiQ ASA +compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_TRILAB.*/ and printer_notes=~/.*PRINTER_FAMILY_DQ.*/ and printer_notes=~/.*FLEXPRINT2.*/ + +[filament:DeltiQ FlexPrint 2 CPE] +inherits = DeltiQ CPE +compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_TRILAB.*/ and printer_notes=~/.*PRINTER_FAMILY_DQ.*/ and printer_notes=~/.*FLEXPRINT2.*/ +filament_retract_length = 0.8 +filament_retract_speed = 35 +filament_deretract_speed = 0 +filament_retract_before_wipe = 0% + +[filament:DeltiQ FlexPrint 2 FLEX] +inherits = *DeltiQ common* +compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_TRILAB.*/ and printer_notes=~/.*PRINTER_FAMILY_DQ.*/ and printer_notes=~/.*FLEXPRINT2.*/ +bed_temperature = 50 +bridge_fan_speed = 80 +cooling = 1 +disable_fan_first_layers = 1 +extrusion_multiplier = 1.07 +fan_always_on = 1 +fan_below_layer_time = 20 +filament_vendor = Fillamentum +filament_cost = 1870 +filament_density = 1.22 +filament_deretract_speed = 0 +filament_max_volumetric_speed = 2.9 +filament_retract_before_travel = 1 +filament_retract_before_wipe = 70% +filament_retract_layer_change = 0 +filament_retract_length = 1.6 +filament_retract_lift = 0.2 +filament_retract_restart_extra = nil +filament_retract_speed = 20 +filament_type = FLEX +filament_wipe = 1 +first_layer_bed_temperature = 50 +first_layer_temperature = 225 +max_fan_speed = 50 +min_fan_speed = 30 +min_print_speed = 5 +slowdown_below_layer_time = 4 +temperature = 225 + +[filament:DeltiQ FlexPrint 2 FLEX Smartfil] +inherits = *DeltiQ common* +compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_TRILAB.*/ and printer_notes=~/.*PRINTER_FAMILY_DQ.*/ and printer_notes=~/.*FLEXPRINT2.*/ +bed_temperature = 50 +bridge_fan_speed = 80 +cooling = 0 +disable_fan_first_layers = 3 +extrusion_multiplier = 1.07 +fan_always_on = 1 +fan_below_layer_time = 20 +filament_vendor = Smart Materials 3D +filament_cost = 1209 +filament_density = 1.21 +filament_deretract_speed = 0 +filament_max_volumetric_speed = 2.5 +filament_retract_before_travel = 1 +filament_retract_before_wipe = nil +filament_retract_layer_change = 0 +filament_retract_length = 1.2 +filament_retract_lift = 0.2 +filament_retract_restart_extra = nil +filament_retract_speed = 20 +filament_type = FLEX +filament_wipe = 0 +first_layer_bed_temperature = 50 +first_layer_temperature = 240 +max_fan_speed = 50 +min_fan_speed = 50 +min_print_speed = 10 +slowdown_below_layer_time = 4 +temperature = 240 + + +[filament:DeltiQ FlexPrint PET] +inherits = DeltiQ PET +compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_TRILAB.*/ and printer_notes=~/.*PRINTER_FAMILY_DQ.*/ and printer_notes=~/.*FLEXPRINT1.*/ +filament_retract_length = 0.7 +filament_retract_speed = 25 + +[filament:DeltiQ FlexPrint PLA] +inherits = DeltiQ PLA +compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_TRILAB.*/ and printer_notes=~/.*PRINTER_FAMILY_DQ.*/ and printer_notes=~/.*FLEXPRINT1.*/ +filament_retract_length = 0.7 +filament_retract_speed = 28 + +[filament:DeltiQ FlexPrint ABS] +inherits = DeltiQ ABS +compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_TRILAB.*/ and printer_notes=~/.*PRINTER_FAMILY_DQ.*/ and printer_notes=~/.*FLEXPRINT1.*/ +filament_retract_length = 0.7 +filament_retract_speed = 25 + +[filament:DeltiQ FlexPrint ASA] +inherits = DeltiQ ASA +compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_TRILAB.*/ and printer_notes=~/.*PRINTER_FAMILY_DQ.*/ and printer_notes=~/.*FLEXPRINT1.*/ +filament_retract_length = 0.7 +filament_retract_speed = 25 + +[filament:DeltiQ FlexPrint CPE] +inherits = DeltiQ CPE +compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_TRILAB.*/ and printer_notes=~/.*PRINTER_FAMILY_DQ.*/ and printer_notes=~/.*FLEXPRINT1.*/ +filament_retract_length = 0.7 +filament_retract_speed = 25 +filament_deretract_speed = 0 +filament_retract_before_wipe = 0% [printer:*DeltiQ*] @@ -246,32 +548,16 @@ before_layer_gcode = ;BEFORE_LAYER_CHANGE\nG92 E0\n;[layer_z] between_objects_gcode = cooling_tube_length = 5 cooling_tube_retraction = 91.5 -default_filament_profile = "" -default_print_profile = -deretract_speed = 25 +default_filament_profile = "DeltiQ PLA" +default_print_profile = DeltiQ 0.20mm Normal +deretract_speed = 0 end_gcode = ;END\nM104 S0 ; Turn extruder heater off\nM140 S0 ; Turn bed heater off\nG28 ; Home all axes\nM84 S5 ; Stop all axes and hold inidle for 5 seconds\nG90 ; Absolute positioning extra_loading_move = -2 -extruder_colour = "" +extruder_colour = #FF0000 extruder_offset = 0x0 gcode_flavor = repetier host_type = octoprint layer_gcode = ;AFTER_LAYER_CHANGE\nM117 layer [layer_num] at [layer_z]mm\n;[layer_z]\n -machine_max_acceleration_e = 10000,5000 -machine_max_acceleration_extruding = 1500,1250 -machine_max_acceleration_retracting = 1500,1250 -machine_max_acceleration_x = 9000,1000 -machine_max_acceleration_y = 9000,1000 -machine_max_acceleration_z = 500,200 -machine_max_feedrate_e = 120,120 -machine_max_feedrate_x = 500,200 -machine_max_feedrate_y = 500,200 -machine_max_feedrate_z = 12,12 -machine_max_jerk_e = 2.5,2.5 -machine_max_jerk_x = 10,10 -machine_max_jerk_y = 10,10 -machine_max_jerk_z = 0.2,0.4 -machine_min_extruding_rate = 0,0 -machine_min_travel_rate = 0,0 max_layer_height = 0.25 max_print_height = 320 min_layer_height = 0.15 @@ -279,36 +565,99 @@ nozzle_diameter = 0.4 parking_pos_retraction = 92 print_host = printer_model = -printer_notes = TRILAB +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_TRILAB\nPRINTER_FAMILY_DQ\nPRINTER_MODEL_DQL printer_settings_id = printer_variant = -printer_vendor = +printer_vendor = TriLAB Group s.r.o. printhost_apikey = printhost_cafile = remaining_times = 0 -retract_before_travel = 2 +retract_before_travel = 3 retract_before_wipe = 100% retract_layer_change = 1 -retract_length = 4.1 +retract_length = 4.0 retract_length_toolchange = 10 -retract_lift = 0.3 +retract_lift = 0.2 retract_lift_above = 0 -retract_lift_below = 0 +retract_lift_below = 319 retract_restart_extra = 0 retract_restart_extra_toolchange = 0 -retract_speed = 33 +retract_speed = 30 serial_port = serial_speed = 250000 -silent_mode = 1 +silent_mode = 0 single_extruder_multi_material = 0 start_gcode = ;START\nM220 S100 ; Set feedmultiply back to 100percent\nG90 ; Absolute positioning\nM83 ; Relative extruder\nM107 ; Layer fan OFF\nM190 S[first_layer_bed_temperature] ; Set bed temperature and wait\nM104 S[first_layer_temperature] ; Set extruder temperature\nG28 ; Home all axes\nG33 ; auto leveling rutine\nG1 X-62 Y-108 Z0.3 F6000 ; Go to purge position start\nG92 E0 ; Zero extruder\nM109 S[first_layer_temperature] ; Set and wait - hotend temperature\nG3 X62 Y-108 I62 J108 E10 F200 ; Go ARC to purge end\nG92 E0 ; Zero extruder +thumbnails = toolchange_gcode = use_firmware_retraction = 0 use_relative_e_distances = 1 use_volumetric_e = 0 variable_layer_height = 0 -wipe = 0 +wipe = 1 z_offset = 0 + +[printer:*DeltiQ 2*] +inherits = *DeltiQ* +before_layer_gcode = ; BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n +end_gcode = ; END_GCODE\n\nM140 S0 ; Turn off bed\n\nG28 ; Home\n\nM104 S0 ; Turn off extruder\nM107 ; Turn off fan\n\nG90 ; Absolute positioning\nM220 S100 ; Feedmultiply back to 100percent\n\nM84 S5; Disable motors +gcode_flavor = reprap +layer_gcode = ; AFTER_LAYER_CHANGE\n;[layer_z] +pause_print_gcode = M0 +start_gcode = ; START_GCODE\n\nM220 S100 ; Set feedmultiply back to 100percent\n\nT0 ; Select Titan extruder\n\nG90 ; Absolute positioning\nM83; Relative Extruder\n\nM190 S[first_layer_bed_temperature] ; Set and wait - bed temperature\nM104 S[first_layer_temperature]\n\nG28 ; Home all axes\nG32 ; Probe Z and calculate Z plane\n\nG29 ; Mesh bed probe\n\nG1009 ; Go ARC to purge end\n\nG92 E0 ; Zero extruder +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_TRILAB\nPRINTER_FAMILY_DQ\nPRINTER_MODEL_DQ2 + +[printer:*DeltiQ 2 FlexPrint*] +inherits = *DeltiQ 2* +start_gcode = ; START_GCODE\n\nM220 S100 ; Set feedmultiply back to 100percent\n\nT1 ; Select FlexPrint extruder\n\nG90 ; Absolute positioning\nM83; Relative Extruder\n\nM190 S[first_layer_bed_temperature] ; Set and wait - bed temperature\nM104 S[first_layer_temperature]\n\nG28 ; Home all axes\nG32 ; Probe Z and calculate Z plane\n\nG29 ; Mesh bed probe\n\nG1009 ; Go ARC to purge end\n\nG92 E0 ; Zero extruder +default_print_profile = DeltiQ 0.20mm FLEX +default_filament_profile = "DeltiQ FlexPrint 2 FLEX" +retract_length = 0.7 +retract_speed = 25 +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_TRILAB\nPRINTER_FAMILY_DQ\nPRINTER_MODEL_DQ2+FP\nFLEXPRINT1 + +[printer:*DeltiQ 2 FlexPrint 2*] +inherits = *DeltiQ 2 FlexPrint* +default_filament_profile = "DeltiQ FlexPrint 2 FLEX" +retract_length = 0.8 +retract_speed = 25 +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_TRILAB\nPRINTER_FAMILY_DQ\nPRINTER_MODEL_DQ2+FP\nFLEXPRINT2 + +[printer:DeltiQ 2] +inherits = *DeltiQ 2* +printer_model = DQ2 +printer_variant = 0.4 +max_print_height = 320 + +[printer:DeltiQ 2 Plus] +inherits = *DeltiQ 2* +printer_model = DQ2P +printer_variant = 0.4 +max_print_height = 500 + +[printer:DeltiQ 2 + FlexPrint 2] +inherits = *DeltiQ 2 FlexPrint 2* +printer_model = DQ2+FP2 +printer_variant = 0.4 +max_print_height = 320 + +[printer:DeltiQ 2 Plus + FlexPrint 2] +inherits = *DeltiQ 2 FlexPrint 2* +printer_model = DQ2P+FP2 +printer_variant = 0.4 +max_print_height = 500 + +[printer:DeltiQ 2 + FlexPrint] +inherits = *DeltiQ 2 FlexPrint* +printer_model = DQ2+FP +printer_variant = 0.4 +max_print_height = 320 + +[printer:DeltiQ 2 Plus + FlexPrint] +inherits = *DeltiQ 2 FlexPrint* +printer_model = DQ2P+FP +printer_variant = 0.4 +max_print_height = 500 [printer:DeltiQ L] inherits = *DeltiQ* @@ -338,6 +687,6 @@ retract_length = 4.5 retract_speed = 35 [presets] -print = DeltiQ 0.2mm -printer = DeltiQ L -filament = DeltiQ PLA +print = DeltiQ 0.20mm Normal +printer = DeltiQ 2 +filament = DeltiQ PLA \ No newline at end of file diff --git a/resources/profiles/TriLAB/DQ2+FP2_thumbnail.png b/resources/profiles/TriLAB/DQ2+FP2_thumbnail.png new file mode 100644 index 0000000000..a33919fc75 Binary files /dev/null and b/resources/profiles/TriLAB/DQ2+FP2_thumbnail.png differ diff --git a/resources/profiles/TriLAB/DQ2+FP_thumbnail.png b/resources/profiles/TriLAB/DQ2+FP_thumbnail.png new file mode 100644 index 0000000000..a33919fc75 Binary files /dev/null and b/resources/profiles/TriLAB/DQ2+FP_thumbnail.png differ diff --git a/resources/profiles/TriLAB/DQ2P+FP2_thumbnail.png b/resources/profiles/TriLAB/DQ2P+FP2_thumbnail.png new file mode 100644 index 0000000000..27853b29ce Binary files /dev/null and b/resources/profiles/TriLAB/DQ2P+FP2_thumbnail.png differ diff --git a/resources/profiles/TriLAB/DQ2P+FP_thumbnail.png b/resources/profiles/TriLAB/DQ2P+FP_thumbnail.png new file mode 100644 index 0000000000..27853b29ce Binary files /dev/null and b/resources/profiles/TriLAB/DQ2P+FP_thumbnail.png differ diff --git a/resources/profiles/TriLAB/DQ2P_thumbnail.png b/resources/profiles/TriLAB/DQ2P_thumbnail.png new file mode 100644 index 0000000000..27853b29ce Binary files /dev/null and b/resources/profiles/TriLAB/DQ2P_thumbnail.png differ diff --git a/resources/profiles/TriLAB/DQ2_thumbnail.png b/resources/profiles/TriLAB/DQ2_thumbnail.png new file mode 100644 index 0000000000..a33919fc75 Binary files /dev/null and b/resources/profiles/TriLAB/DQ2_thumbnail.png differ diff --git a/resources/profiles/TriLAB/DQL_thumbnail.png b/resources/profiles/TriLAB/DQL_thumbnail.png index 97769279da..44386db05e 100644 Binary files a/resources/profiles/TriLAB/DQL_thumbnail.png and b/resources/profiles/TriLAB/DQL_thumbnail.png differ diff --git a/resources/profiles/TriLAB/DQM_thumbnail.png b/resources/profiles/TriLAB/DQM_thumbnail.png index 0046090c8a..27210f9bb5 100644 Binary files a/resources/profiles/TriLAB/DQM_thumbnail.png and b/resources/profiles/TriLAB/DQM_thumbnail.png differ diff --git a/resources/profiles/TriLAB/DQXL_thumbnail.png b/resources/profiles/TriLAB/DQXL_thumbnail.png index 46fa300c41..4de802df74 100644 Binary files a/resources/profiles/TriLAB/DQXL_thumbnail.png and b/resources/profiles/TriLAB/DQXL_thumbnail.png differ diff --git a/resources/profiles/TriLAB/dq2_bed.stl b/resources/profiles/TriLAB/dq2_bed.stl new file mode 100644 index 0000000000..6b8f20caa8 Binary files /dev/null and b/resources/profiles/TriLAB/dq2_bed.stl differ diff --git a/resources/shaders/options_110.vs b/resources/shaders/options_110.vs index 7592f86a42..5f2ab23504 100644 --- a/resources/shaders/options_110.vs +++ b/resources/shaders/options_110.vs @@ -1,11 +1,22 @@ #version 110 +uniform bool use_fixed_screen_size; uniform float zoom; uniform float point_size; uniform float near_plane_height; +float fixed_screen_size() +{ + return point_size; +} + +float fixed_world_size() +{ + return (gl_Position.w == 1.0) ? zoom * near_plane_height * point_size : near_plane_height * point_size / gl_Position.w; +} + void main() { gl_Position = ftransform(); - gl_PointSize = (gl_Position.w == 1.0) ? zoom * near_plane_height * point_size : near_plane_height * point_size / gl_Position.w; + gl_PointSize = use_fixed_screen_size ? fixed_screen_size() : fixed_world_size(); } diff --git a/resources/shaders/options_120.vs b/resources/shaders/options_120.vs index baf3cd3a7f..edb503fb2b 100644 --- a/resources/shaders/options_120.vs +++ b/resources/shaders/options_120.vs @@ -1,11 +1,22 @@ #version 120 +uniform bool use_fixed_screen_size; uniform float zoom; uniform float point_size; uniform float near_plane_height; +float fixed_screen_size() +{ + return point_size; +} + +float fixed_world_size() +{ + return (gl_Position.w == 1.0) ? zoom * near_plane_height * point_size : near_plane_height * point_size / gl_Position.w; +} + void main() { gl_Position = ftransform(); - gl_PointSize = (gl_Position.w == 1.0) ? zoom * near_plane_height * point_size : near_plane_height * point_size / gl_Position.w; + gl_PointSize = use_fixed_screen_size ? fixed_screen_size() : fixed_world_size(); } diff --git a/src/PrusaSlicer.cpp b/src/PrusaSlicer.cpp index 0ed719c993..c181525bdf 100644 --- a/src/PrusaSlicer.cpp +++ b/src/PrusaSlicer.cpp @@ -138,7 +138,6 @@ int CLI::run(int argc, char **argv) m_print_config.apply(config); } -#if ENABLE_GCODE_VIEWER // are we starting as gcodeviewer ? for (auto it = m_actions.begin(); it != m_actions.end(); ++it) { if (*it == "gcodeviewer") { @@ -148,10 +147,8 @@ int CLI::run(int argc, char **argv) break; } } -#endif // ENABLE_GCODE_VIEWER // Read input file(s) if any. -#if ENABLE_GCODE_VIEWER for (const std::string& file : m_input_files) { std::string ext = boost::filesystem::path(file).extension().string(); if (ext == ".gcode" || ext == ".g") { @@ -162,7 +159,6 @@ int CLI::run(int argc, char **argv) } } if (!start_as_gcodeviewer) { -#endif // ENABLE_GCODE_VIEWER for (const std::string& file : m_input_files) { if (!boost::filesystem::exists(file)) { boost::nowide::cerr << "No such file: " << file << std::endl; @@ -195,9 +191,7 @@ int CLI::run(int argc, char **argv) } m_models.push_back(model); } -#if ENABLE_GCODE_VIEWER } -#endif // ENABLE_GCODE_VIEWER // Apply command line options to a more specific DynamicPrintConfig which provides normalize() // (command line options override --load files) @@ -504,11 +498,7 @@ int CLI::run(int argc, char **argv) print->process(); if (printer_technology == ptFFF) { // The outfile is processed by a PlaceholderParser. -#if ENABLE_GCODE_VIEWER outfile = fff_print.export_gcode(outfile, nullptr, nullptr); -#else - outfile = fff_print.export_gcode(outfile, nullptr); -#endif // ENABLE_GCODE_VIEWER outfile_final = fff_print.print_statistics().finalize_output_path(outfile); } else { outfile = sla_print.output_filepath(outfile); @@ -559,11 +549,6 @@ int CLI::run(int argc, char **argv) << " (" << print.total_extruded_volume()/1000 << "cm3)" << std::endl; */ } -#if !ENABLE_GCODE_VIEWER - } else if (opt_key == "gcodeviewer") { - start_gui = true; - start_as_gcodeviewer = true; -#endif // !ENABLE_GCODE_VIEWER } else { boost::nowide::cerr << "error: option not supported yet: " << opt_key << std::endl; return 1; diff --git a/src/hidapi/linux/hid.c b/src/hidapi/linux/hid.c index d68354fe1b..5f486c0a9d 100644 --- a/src/hidapi/linux/hid.c +++ b/src/hidapi/linux/hid.c @@ -42,10 +42,16 @@ #include #include #include -#include #include "hidapi.h" +// Declare udev structures needed in this module. They are passed by pointers +// to udev functions and not used directly. +struct udev_device; +struct udev_list_entry; +struct udev_enumerate; +struct udev; + typedef const char* (*hid_wrapper_udev_device_get_devnode_type)(struct udev_device *udev_device); typedef struct udev_device* (*hid_wrapper_udev_device_get_parent_with_subsystem_devtype_type)(struct udev_device *udev_device, const char *subsystem, const char *devtype); typedef const char* (*hid_wrapper_udev_device_get_sysattr_value_type)(struct udev_device *udev_device, const char *sysattr); diff --git a/src/imgui/README.md b/src/imgui/README.md index 83f4619964..26e3444748 100644 --- a/src/imgui/README.md +++ b/src/imgui/README.md @@ -7,4 +7,6 @@ THIS DIRECTORY CONTAINS THE imgui-1.75 58b3e02 SOURCE DISTRIBUTION. Customized with the following commits: 042880ba2df913916b2cc77f7bb677e07bfd2c58 67c55c74901f1d337ef08f2090a87cfb4263bb0f -a94c952b40d36b1505fb77b87c0dd739e1034659 \ No newline at end of file +a94c952b40d36b1505fb77b87c0dd739e1034659 +3ca3a544a87cc569b69351a77996c287763388a5 +6586a46ea23e86d54d228c55c63ca55680d25d56 diff --git a/src/imgui/imconfig.h b/src/imgui/imconfig.h index 4a1d1faa0c..d52294acd2 100644 --- a/src/imgui/imconfig.h +++ b/src/imgui/imconfig.h @@ -113,14 +113,16 @@ namespace ImGui const char PrinterSlaIconMarker = 0x6; const char FilamentIconMarker = 0x7; const char MaterialIconMarker = 0x8; - const char CloseIconMarker = 0xB; - const char CloseIconHoverMarker = 0xC; + const char CloseNotifButton = 0xB; + const char CloseNotifHoverButton = 0xC; // const char TimerDotMarker = 0xE; // const char TimerDotEmptyMarker = 0xF; - const char MinimalizeMarker = 0xE; - const char MinimalizeHoverMarker = 0xF; + const char MinimalizeButton = 0xE; + const char MinimalizeHoverButton = 0xF; const char WarningMarker = 0x10; const char ErrorMarker = 0x11; + const char EjectButton = 0x12; + const char EjectHoverButton = 0x13; // void MyFunction(const char* name, const MyMatrix44& v); } diff --git a/src/libslic3r/AppConfig.cpp b/src/libslic3r/AppConfig.cpp index db8176742b..1f1b1623b0 100644 --- a/src/libslic3r/AppConfig.cpp +++ b/src/libslic3r/AppConfig.cpp @@ -38,9 +38,7 @@ void AppConfig::reset() // Override missing or keys with their defaults. void AppConfig::set_defaults() { -#if ENABLE_GCODE_VIEWER if (m_mode == EAppMode::Editor) { -#endif // ENABLE_GCODE_VIEWER // Reset the empty fields to defaults. if (get("autocenter").empty()) set("autocenter", "0"); @@ -57,6 +55,11 @@ void AppConfig::set_defaults() if (get("show_incompatible_presets").empty()) set("show_incompatible_presets", "0"); + if (get("show_drop_project_dialog").empty()) + set("show_drop_project_dialog", "1"); + if (get("drop_project_action").empty()) + set("drop_project_action", "1"); + if (get("version_check").empty()) set("version_check", "1"); if (get("preset_update").empty()) @@ -98,14 +101,6 @@ void AppConfig::set_defaults() if (get("auto_toolbar_size").empty()) set("auto_toolbar_size", "100"); -#if !ENABLE_GCODE_VIEWER - if (get("use_perspective_camera").empty()) - set("use_perspective_camera", "1"); - - if (get("use_free_camera").empty()) - set("use_free_camera", "0"); -#endif // !ENABLE_GCODE_VIEWER - #if ENABLE_ENVIRONMENT_MAP if (get("use_environment_map").empty()) set("use_environment_map", "0"); @@ -113,7 +108,6 @@ void AppConfig::set_defaults() if (get("use_inches").empty()) set("use_inches", "0"); -#if ENABLE_GCODE_VIEWER } if (get("seq_top_layer_only").empty()) @@ -124,7 +118,9 @@ void AppConfig::set_defaults() if (get("use_free_camera").empty()) set("use_free_camera", "0"); -#endif // ENABLE_GCODE_VIEWER + + if (get("reverse_mouse_wheel_zoom").empty()) + set("reverse_mouse_wheel_zoom", "0"); if (get("show_splash_screen").empty()) set("show_splash_screen", "1"); @@ -205,6 +201,20 @@ std::string AppConfig::load() m_legacy_datadir = ini_ver < Semver(1, 40, 0); } + // Legacy conversion + if (m_mode == EAppMode::Editor) { + // Convert [extras] "physical_printer" to [presets] "physical_printer", + // remove the [extras] section if it becomes empty. + if (auto it_section = m_storage.find("extras"); it_section != m_storage.end()) { + if (auto it_physical_printer = it_section->second.find("physical_printer"); it_physical_printer != it_section->second.end()) { + m_storage["presets"]["physical_printer"] = it_physical_printer->second; + it_section->second.erase(it_physical_printer); + } + if (it_section->second.empty()) + m_storage.erase(it_section); + } + } + // Override missing or keys with their defaults. this->set_defaults(); m_dirty = false; @@ -213,11 +223,12 @@ std::string AppConfig::load() void AppConfig::save() { -#ifndef __APPLE__ - // Apple does not implement thread_getname_np() correctly. - if (get_current_thread_name() != "slic3r_main") - throw CriticalException("Calling AppConfig::save() from a worker thread!"); -#endif + { + // Returns "undefined" if the thread naming functionality is not supported by the operating system. + std::optional current_thread_name = get_current_thread_name(); + if (current_thread_name && *current_thread_name != "slic3r_main") + throw CriticalException("Calling AppConfig::save() from a worker thread!"); + } // The config is first written to a file with a PID suffix and then moved // to avoid race conditions with multiple instances of Slic3r @@ -226,14 +237,10 @@ void AppConfig::save() boost::nowide::ofstream c; c.open(path_pid, std::ios::out | std::ios::trunc); -#if ENABLE_GCODE_VIEWER if (m_mode == EAppMode::Editor) c << "# " << Slic3r::header_slic3r_generated() << std::endl; else c << "# " << Slic3r::header_gcodeviewer_generated() << std::endl; -#else - c << "# " << Slic3r::header_slic3r_generated() << std::endl; -#endif // ENABLE_GCODE_VIEWER // Make sure the "no" category is written first. for (const std::pair &kvp : m_storage[""]) c << kvp.first << " = " << kvp.second << std::endl; @@ -427,21 +434,18 @@ void AppConfig::reset_selections() it->second.erase("sla_print"); it->second.erase("sla_material"); it->second.erase("printer"); + it->second.erase("physical_printer"); m_dirty = true; } } std::string AppConfig::config_path() { -#if ENABLE_GCODE_VIEWER std::string path = (m_mode == EAppMode::Editor) ? (boost::filesystem::path(Slic3r::data_dir()) / (SLIC3R_APP_KEY ".ini")).make_preferred().string() : (boost::filesystem::path(Slic3r::data_dir()) / (GCODEVIEWER_APP_KEY ".ini")).make_preferred().string(); return path; -#else - return (boost::filesystem::path(Slic3r::data_dir()) / (SLIC3R_APP_KEY ".ini")).make_preferred().string(); -#endif // ENABLE_GCODE_VIEWER } std::string AppConfig::version_check_url() const @@ -452,11 +456,7 @@ std::string AppConfig::version_check_url() const bool AppConfig::exists() { -#if ENABLE_GCODE_VIEWER return boost::filesystem::exists(config_path()); -#else - return boost::filesystem::exists(AppConfig::config_path()); -#endif // ENABLE_GCODE_VIEWER } }; // namespace Slic3r diff --git a/src/libslic3r/AppConfig.hpp b/src/libslic3r/AppConfig.hpp index c5b8ece2b6..c8ccd18cd8 100644 --- a/src/libslic3r/AppConfig.hpp +++ b/src/libslic3r/AppConfig.hpp @@ -15,7 +15,6 @@ namespace Slic3r { class AppConfig { public: -#if ENABLE_GCODE_VIEWER enum class EAppMode : unsigned char { Editor, @@ -23,14 +22,9 @@ public: }; explicit AppConfig(EAppMode mode) : -#else - AppConfig() : -#endif // ENABLE_GCODE_VIEWER m_dirty(false), m_orig_version(Semver::invalid()), -#if ENABLE_GCODE_VIEWER m_mode(mode), -#endif // ENABLE_GCODE_VIEWER m_legacy_datadir(false) { this->reset(); @@ -135,30 +129,22 @@ public: void reset_selections(); // Get the default config path from Slic3r::data_dir(). -#if ENABLE_GCODE_VIEWER std::string config_path(); -#else - static std::string config_path(); -#endif // ENABLE_GCODE_VIEWER // Returns true if the user's data directory comes from before Slic3r 1.40.0 (no updating) - bool legacy_datadir() const { return m_legacy_datadir; } - void set_legacy_datadir(bool value) { m_legacy_datadir = value; } + bool legacy_datadir() const { return m_legacy_datadir; } + void set_legacy_datadir(bool value) { m_legacy_datadir = value; } // Get the Slic3r version check url. // This returns a hardcoded string unless it is overriden by "version_check_url" in the ini file. - std::string version_check_url() const; + std::string version_check_url() const; // Returns the original Slic3r version found in the ini file before it was overwritten // by the current version - Semver orig_version() const { return m_orig_version; } + Semver orig_version() const { return m_orig_version; } // Does the config file exist? -#if ENABLE_GCODE_VIEWER - bool exists(); -#else - static bool exists(); -#endif // ENABLE_GCODE_VIEWER + bool exists(); std::vector get_recent_projects() const; void set_recent_projects(const std::vector& recent_projects); @@ -196,10 +182,8 @@ private: return true; } -#if ENABLE_GCODE_VIEWER + // Type of application: Editor or GCodeViewer EAppMode m_mode { EAppMode::Editor }; -#endif // ENABLE_GCODE_VIEWER - // Map of section, name -> value std::map> m_storage; // Map of enabled vendors / models / variants diff --git a/src/libslic3r/Arrange.cpp b/src/libslic3r/Arrange.cpp index 6ae7dd6a2e..e4a5c7b42f 100644 --- a/src/libslic3r/Arrange.cpp +++ b/src/libslic3r/Arrange.cpp @@ -7,6 +7,7 @@ #include #include #include +#include #include #include @@ -83,7 +84,7 @@ const double BIG_ITEM_TRESHOLD = 0.02; // Fill in the placer algorithm configuration with values carefully chosen for // Slic3r. template -void fill_config(PConf& pcfg) { +void fill_config(PConf& pcfg, const ArrangeParams ¶ms) { // Align the arranged pile into the center of the bin pcfg.alignment = PConf::Alignment::CENTER; @@ -93,14 +94,17 @@ void fill_config(PConf& pcfg) { // TODO cannot use rotations until multiple objects of same geometry can // handle different rotations. - pcfg.rotations = { 0.0 }; + if (params.allow_rotations) + pcfg.rotations = {0., PI / 2., PI, 3. * PI / 2. }; + else + pcfg.rotations = {0.}; // The accuracy of optimization. // Goes from 0.0 to 1.0 and scales performance as well - pcfg.accuracy = 0.65f; + pcfg.accuracy = params.accuracy; // Allow parallel execution. - pcfg.parallel = true; + pcfg.parallel = params.parallel; } // Apply penalty to object function result. This is used only when alignment @@ -277,10 +281,10 @@ protected: if (result.empty()) score = 0.50 * dist + 0.50 * density; else - score = R * 0.60 * dist + - (1.0 - R) * 0.20 * density + - 0.20 * alignment_score; - + // Let the density matter more when fewer objects remain + score = 0.50 * dist + (1.0 - R) * 0.20 * density + + 0.30 * alignment_score; + break; } case LAST_BIG_ITEM: { @@ -304,15 +308,15 @@ protected: public: AutoArranger(const TBin & bin, - Distance dist, + const ArrangeParams ¶ms, std::function progressind, std::function stopcond) - : m_pck(bin, dist) + : m_pck(bin, params.min_obj_distance) , m_bin(bin) , m_bin_area(sl::area(bin)) , m_norm(std::sqrt(m_bin_area)) { - fill_config(m_pconf); + fill_config(m_pconf, params); // Set up a callback that is called just before arranging starts // This functionality is provided by the Nester class (m_pack). @@ -349,12 +353,6 @@ public: m_pck.configure(m_pconf); } - - AutoArranger(const TBin & bin, - std::function progressind, - std::function stopcond) - : AutoArranger{bin, 0 /* no min distance */, progressind, stopcond} - {} template inline void operator()(It from, It to) { m_rtree.clear(); @@ -452,12 +450,18 @@ template void remove_large_items(std::vector &items, Bin &&bin) ++it : it = items.erase(it); } +template Radians min_area_boundingbox_rotation(const S &sh) +{ + return minAreaBoundingBox, boost::rational>(sh) + .angleToX(); +} + template // Arrange for arbitrary bin type void _arrange( std::vector & shapes, std::vector & excludes, const BinT & bin, - const ArrangeParams & params, + const ArrangeParams ¶ms, std::function progressfn, std::function stopfn) { @@ -467,11 +471,10 @@ void _arrange( auto corrected_bin = bin; sl::offset(corrected_bin, md); - - AutoArranger arranger{corrected_bin, progressfn, stopfn}; - - arranger.config().accuracy = params.accuracy; - arranger.config().parallel = params.parallel; + ArrangeParams mod_params = params; + mod_params.min_obj_distance = 0; + + AutoArranger arranger{corrected_bin, mod_params, progressfn, stopfn}; auto infl = coord_t(std::ceil(params.min_obj_distance / 2.0)); for (Item& itm : shapes) itm.inflate(infl); @@ -487,6 +490,13 @@ void _arrange( for (auto &itm : shapes ) inp.emplace_back(itm); for (auto &itm : excludes) inp.emplace_back(itm); + // Use the minimum bounding box rotation as a starting point. + // TODO: This only works for convex hull. If we ever switch to concave + // polygon nesting, a convex hull needs to be calculated. + if (params.allow_rotations) + for (auto &itm : shapes) + itm.rotation(min_area_boundingbox_rotation(itm.rawShape())); + arranger(inp.begin(), inp.end()); for (Item &itm : inp) itm.inflate(-infl); } @@ -556,28 +566,35 @@ static void process_arrangeable(const ArrangePolygon &arrpoly, outp.back().priority(arrpoly.priority); } +template auto call_with_bed(const Points &bed, Fn &&fn) +{ + if (bed.empty()) + return fn(InfiniteBed{}); + else if (bed.size() == 1) + return fn(InfiniteBed{bed.front()}); + else { + auto bb = BoundingBox(bed); + CircleBed circ = to_circle(bb.center(), bed); + auto parea = poly_area(bed); + + if ((1.0 - parea / area(bb)) < 1e-3) + return fn(bb); + else if (!std::isnan(circ.radius())) + return fn(circ); + else + return fn(Polygon(bed)); + } +} + template<> void arrange(ArrangePolygons & items, const ArrangePolygons &excludes, const Points & bed, const ArrangeParams & params) { - if (bed.empty()) - arrange(items, excludes, InfiniteBed{}, params); - else if (bed.size() == 1) - arrange(items, excludes, InfiniteBed{bed.front()}, params); - else { - auto bb = BoundingBox(bed); - CircleBed circ = to_circle(bb.center(), bed); - auto parea = poly_area(bed); - - if ((1.0 - parea / area(bb)) < 1e-3) - arrange(items, excludes, bb, params); - else if (!std::isnan(circ.radius())) - arrange(items, excludes, circ, params); - else - arrange(items, excludes, Polygon(bed), params); - } + call_with_bed(bed, [&](const auto &bin) { + arrange(items, excludes, bin, params); + }); } template diff --git a/src/libslic3r/Arrange.hpp b/src/libslic3r/Arrange.hpp index 7630ab3e8e..65c3984d55 100644 --- a/src/libslic3r/Arrange.hpp +++ b/src/libslic3r/Arrange.hpp @@ -78,6 +78,8 @@ struct ArrangeParams { /// Allow parallel execution. bool parallel = true; + + bool allow_rotations = false; /// Progress indicator callback called when an object gets packed. /// The unsigned argument is the number of items remaining to pack. diff --git a/src/libslic3r/BoundingBox.hpp b/src/libslic3r/BoundingBox.hpp index 065476cb28..819162ec99 100644 --- a/src/libslic3r/BoundingBox.hpp +++ b/src/libslic3r/BoundingBox.hpp @@ -47,6 +47,7 @@ public: void translate(coordf_t x, coordf_t y) { assert(this->defined); PointClass v(x, y); this->min += v; this->max += v; } void translate(const Vec2d &v) { this->min += v; this->max += v; } void offset(coordf_t delta); + BoundingBoxBase inflated(coordf_t delta) const throw() { BoundingBoxBase out(*this); out.offset(delta); return out; } PointClass center() const; bool contains(const PointClass &point) const { return point(0) >= this->min(0) && point(0) <= this->max(0) @@ -91,6 +92,7 @@ public: void translate(coordf_t x, coordf_t y, coordf_t z) { assert(this->defined); PointClass v(x, y, z); this->min += v; this->max += v; } void translate(const Vec3d &v) { this->min += v; this->max += v; } void offset(coordf_t delta); + BoundingBoxBase inflated(coordf_t delta) const throw() { BoundingBoxBase out(*this); out.offset(delta); return out; } PointClass center() const; coordf_t max_size() const; @@ -159,6 +161,8 @@ public: BoundingBox(const Point &pmin, const Point &pmax) : BoundingBoxBase(pmin, pmax) {} BoundingBox(const Points &points) : BoundingBoxBase(points) {} + BoundingBox inflated(coordf_t delta) const throw() { BoundingBox out(*this); out.offset(delta); return out; } + friend BoundingBox get_extents_rotated(const Points &points, double angle); }; diff --git a/src/libslic3r/CMakeLists.txt b/src/libslic3r/CMakeLists.txt index 9b9e8618ae..0cf5af93c3 100644 --- a/src/libslic3r/CMakeLists.txt +++ b/src/libslic3r/CMakeLists.txt @@ -58,12 +58,10 @@ add_library(libslic3r STATIC Fill/FillGyroid.hpp Fill/FillPlanePath.cpp Fill/FillPlanePath.hpp + Fill/FillLine.cpp + Fill/FillLine.hpp Fill/FillRectilinear.cpp Fill/FillRectilinear.hpp - Fill/FillRectilinear2.cpp - Fill/FillRectilinear2.hpp - Fill/FillRectilinear3.cpp - Fill/FillRectilinear3.hpp Flow.cpp Flow.hpp format.hpp @@ -81,8 +79,6 @@ add_library(libslic3r STATIC Format/STL.hpp Format/SL1.hpp Format/SL1.cpp - GCode/Analyzer.cpp - GCode/Analyzer.hpp GCode/ThumbnailData.cpp GCode/ThumbnailData.hpp GCode/CoolingBuffer.cpp @@ -91,8 +87,6 @@ add_library(libslic3r STATIC GCode/PostProcessor.hpp # GCode/PressureEqualizer.cpp # GCode/PressureEqualizer.hpp - GCode/PreviewData.cpp - GCode/PreviewData.hpp GCode/PrintExtents.cpp GCode/PrintExtents.hpp GCode/SpiralVase.cpp @@ -111,8 +105,6 @@ add_library(libslic3r STATIC GCodeReader.hpp # GCodeSender.cpp # GCodeSender.hpp - GCodeTimeEstimator.cpp - GCodeTimeEstimator.hpp GCodeWriter.cpp GCodeWriter.hpp Geometry.cpp diff --git a/src/libslic3r/Config.cpp b/src/libslic3r/Config.cpp index 25ef93430f..03ce0ad406 100644 --- a/src/libslic3r/Config.cpp +++ b/src/libslic3r/Config.cpp @@ -192,6 +192,23 @@ bool unescape_strings_cstyle(const std::string &str, std::vector &o } } +std::string escape_ampersand(const std::string& str) +{ + // Allocate a buffer 2 times the input string length, + // so the output will fit even if all input characters get escaped. + std::vector out(str.size() * 6, 0); + char* outptr = out.data(); + for (size_t i = 0; i < str.size(); ++i) { + char c = str[i]; + if (c == '&') { + (*outptr++) = '&'; + (*outptr++) = '&'; + } else + (*outptr++) = c; + } + return std::string(out.data(), outptr - out.data()); +} + std::vector ConfigOptionDef::cli_args(const std::string &key) const { std::vector args; diff --git a/src/libslic3r/Config.hpp b/src/libslic3r/Config.hpp index d683e55b8c..6ef6f143c5 100644 --- a/src/libslic3r/Config.hpp +++ b/src/libslic3r/Config.hpp @@ -34,6 +34,8 @@ extern std::string escape_strings_cstyle(const std::vector &strs); extern bool unescape_string_cstyle(const std::string &str, std::string &out); extern bool unescape_strings_cstyle(const std::string &str, std::vector &out); +extern std::string escape_ampersand(const std::string& str); + /// Specialization of std::exception to indicate that an unknown config option has been encountered. class UnknownOptionException : public Slic3r::RuntimeError { public: diff --git a/src/libslic3r/CustomGCode.cpp b/src/libslic3r/CustomGCode.cpp index fb4f69d06a..193235bf83 100644 --- a/src/libslic3r/CustomGCode.cpp +++ b/src/libslic3r/CustomGCode.cpp @@ -1,10 +1,6 @@ #include "CustomGCode.hpp" #include "Config.hpp" -#if ENABLE_GCODE_VIEWER #include "GCode.hpp" -#else -#include "GCode/PreviewData.hpp" -#endif // ENABLE_GCODE_VIEWER #include "GCodeWriter.hpp" namespace Slic3r { @@ -21,11 +17,7 @@ extern void update_custom_gcode_per_print_z_from_config(Info& info, DynamicPrint return; if (info.gcodes.empty() && ! colorprint_heights->values.empty()) { // Convert the old colorprint_heighs only if there is no equivalent data in a new format. -#if ENABLE_GCODE_VIEWER const std::vector& colors = ColorPrintColors::get(); -#else - const std::vector& colors = GCodePreviewData::ColorPrintColors(); -#endif // ENABLE_GCODE_VIEWER const auto& colorprint_values = colorprint_heights->values; info.gcodes.clear(); info.gcodes.reserve(colorprint_values.size()); diff --git a/src/libslic3r/EdgeGrid.cpp b/src/libslic3r/EdgeGrid.cpp index 486a7b1aa8..fa68092eed 100644 --- a/src/libslic3r/EdgeGrid.cpp +++ b/src/libslic3r/EdgeGrid.cpp @@ -55,6 +55,24 @@ void EdgeGrid::Grid::create(const Polygons &polygons, coord_t resolution) create_from_m_contours(resolution); } +void EdgeGrid::Grid::create(const std::vector &polygons, coord_t resolution) +{ + // Count the contours. + size_t ncontours = 0; + for (size_t j = 0; j < polygons.size(); ++ j) + if (! polygons[j]->points.empty()) + ++ ncontours; + + // Collect the contours. + m_contours.assign(ncontours, nullptr); + ncontours = 0; + for (size_t j = 0; j < polygons.size(); ++ j) + if (! polygons[j]->points.empty()) + m_contours[ncontours ++] = &polygons[j]->points; + + create_from_m_contours(resolution); +} + void EdgeGrid::Grid::create(const std::vector &polygons, coord_t resolution) { // Count the contours. @@ -1150,7 +1168,7 @@ EdgeGrid::Grid::ClosestPointResult EdgeGrid::Grid::closest_point(const Point &pt if (result.contour_idx != size_t(-1) && d_min <= double(search_radius)) { result.distance = d_min * sign_min; result.t /= l2_seg_min; - assert(result.t >= 0. && result.t < 1.); + assert(result.t >= 0. && result.t <= 1.); #ifndef NDEBUG { const Slic3r::Points &pts = *m_contours[result.contour_idx]; diff --git a/src/libslic3r/EdgeGrid.hpp b/src/libslic3r/EdgeGrid.hpp index 6a9f482a1d..fd13ddc7f7 100644 --- a/src/libslic3r/EdgeGrid.hpp +++ b/src/libslic3r/EdgeGrid.hpp @@ -21,6 +21,7 @@ public: void set_bbox(const BoundingBox &bbox) { m_bbox = bbox; } void create(const Polygons &polygons, coord_t resolution); + void create(const std::vector &polygons, coord_t resolution); void create(const std::vector &polygons, coord_t resolution); void create(const ExPolygon &expoly, coord_t resolution); void create(const ExPolygons &expolygons, coord_t resolution); @@ -83,10 +84,14 @@ public: template void visit_cells_intersecting_line(Slic3r::Point p1, Slic3r::Point p2, VISITOR &visitor) const { // End points of the line segment. - p1(0) -= m_bbox.min(0); - p1(1) -= m_bbox.min(1); - p2(0) -= m_bbox.min(0); - p2(1) -= m_bbox.min(1); + assert(m_bbox.contains(p1)); + assert(m_bbox.contains(p2)); + p1 -= m_bbox.min; + p2 -= m_bbox.min; + assert(p1.x() >= 0 && p1.x() < m_cols * m_resolution); + assert(p1.y() >= 0 && p1.y() < m_rows * m_resolution); + assert(p2.x() >= 0 && p2.x() < m_cols * m_resolution); + assert(p2.y() >= 0 && p2.y() < m_rows * m_resolution); // Get the cells of the end points. coord_t ix = p1(0) / m_resolution; coord_t iy = p1(1) / m_resolution; @@ -114,18 +119,22 @@ public: ey -= ex; ex = int64_t(dy) * m_resolution; ix += 1; + assert(ix <= ixb); } else if (ex == ey) { ex = int64_t(dy) * m_resolution; ey = int64_t(dx) * m_resolution; ix += 1; iy += 1; + assert(ix <= ixb); + assert(iy <= iyb); } else { assert(ex > ey); ex -= ey; ey = int64_t(dx) * m_resolution; iy += 1; + assert(iy <= iyb); } if (! visitor(iy, ix)) return; @@ -140,11 +149,13 @@ public: ey -= ex; ex = int64_t(dy) * m_resolution; ix += 1; + assert(ix <= ixb); } else { ex -= ey; ey = int64_t(dx) * m_resolution; iy -= 1; + assert(iy >= iyb); } if (! visitor(iy, ix)) return; @@ -162,12 +173,14 @@ public: ey -= ex; ex = int64_t(dy) * m_resolution; ix -= 1; + assert(ix >= ixb); } else { assert(ex >= ey); ex -= ey; ey = int64_t(dx) * m_resolution; iy += 1; + assert(iy <= iyb); } if (! visitor(iy, ix)) return; @@ -182,6 +195,7 @@ public: ey -= ex; ex = int64_t(dy) * m_resolution; ix -= 1; + assert(ix >= ixb); } else if (ex == ey) { // The lower edge of a grid cell belongs to the cell. @@ -190,10 +204,12 @@ public: if (dx > 0) { ex = int64_t(dy) * m_resolution; ix -= 1; + assert(ix >= ixb); } if (dy > 0) { ey = int64_t(dx) * m_resolution; iy -= 1; + assert(iy >= iyb); } } else { @@ -201,6 +217,7 @@ public: ex -= ey; ey = int64_t(dx) * m_resolution; iy -= 1; + assert(iy >= iyb); } if (! visitor(iy, ix)) return; @@ -230,6 +247,10 @@ public: std::pair>::const_iterator, std::vector>::const_iterator> cell_data_range(coord_t row, coord_t col) const { + assert(row >= 0); + assert(row < m_rows); + assert(col >= 0); + assert(col < m_cols); const EdgeGrid::Grid::Cell &cell = m_cells[row * m_cols + col]; return std::make_pair(m_cell_data.begin() + cell.begin, m_cell_data.begin() + cell.end); } diff --git a/src/libslic3r/ExPolygon.hpp b/src/libslic3r/ExPolygon.hpp index 373853f972..0056100b10 100644 --- a/src/libslic3r/ExPolygon.hpp +++ b/src/libslic3r/ExPolygon.hpp @@ -17,9 +17,9 @@ typedef std::vector ExPolygons; class ExPolygon { public: - ExPolygon() {} - ExPolygon(const ExPolygon &other) : contour(other.contour), holes(other.holes) {} - ExPolygon(ExPolygon &&other) noexcept : contour(std::move(other.contour)), holes(std::move(other.holes)) {} + ExPolygon() = default; + ExPolygon(const ExPolygon &other) = default; + ExPolygon(ExPolygon &&other) = default; explicit ExPolygon(const Polygon &contour) : contour(contour) {} explicit ExPolygon(Polygon &&contour) : contour(std::move(contour)) {} explicit ExPolygon(const Points &contour) : contour(contour) {} @@ -31,10 +31,10 @@ public: ExPolygon(std::initializer_list contour) : contour(contour) {} ExPolygon(std::initializer_list contour, std::initializer_list hole) : contour(contour), holes({ hole }) {} - ExPolygon& operator=(const ExPolygon &other) { contour = other.contour; holes = other.holes; return *this; } - ExPolygon& operator=(ExPolygon &&other) noexcept { contour = std::move(other.contour); holes = std::move(other.holes); return *this; } + ExPolygon& operator=(const ExPolygon &other) = default; + ExPolygon& operator=(ExPolygon &&other) = default; - Polygon contour; + Polygon contour; Polygons holes; operator Points() const; diff --git a/src/libslic3r/Exception.hpp b/src/libslic3r/Exception.hpp index 8ec9f20c81..2879055335 100644 --- a/src/libslic3r/Exception.hpp +++ b/src/libslic3r/Exception.hpp @@ -19,6 +19,8 @@ SLIC3R_DERIVE_EXCEPTION(InvalidArgument, LogicError); SLIC3R_DERIVE_EXCEPTION(OutOfRange, LogicError); SLIC3R_DERIVE_EXCEPTION(IOError, CriticalException); SLIC3R_DERIVE_EXCEPTION(FileIOError, IOError); +SLIC3R_DERIVE_EXCEPTION(HostNetworkError, IOError); +SLIC3R_DERIVE_EXCEPTION(ExportError, CriticalException); // Runtime exception produced by Slicer. Such exception cancels the slicing process and it shall be shown in notifications. SLIC3R_DERIVE_EXCEPTION(SlicingError, Exception); #undef SLIC3R_DERIVE_EXCEPTION diff --git a/src/libslic3r/ExtrusionEntity.cpp b/src/libslic3r/ExtrusionEntity.cpp index b2c5e1350f..6516713ce6 100644 --- a/src/libslic3r/ExtrusionEntity.cpp +++ b/src/libslic3r/ExtrusionEntity.cpp @@ -306,11 +306,7 @@ double ExtrusionLoop::min_mm3_per_mm() const std::string ExtrusionEntity::role_to_string(ExtrusionRole role) { switch (role) { -#if ENABLE_GCODE_VIEWER case erNone : return L("Unknown"); -#else - case erNone : return L("None"); -#endif // ENABLE_GCODE_VIEWER case erPerimeter : return L("Perimeter"); case erExternalPerimeter : return L("External perimeter"); case erOverhangPerimeter : return L("Overhang perimeter"); @@ -331,7 +327,7 @@ std::string ExtrusionEntity::role_to_string(ExtrusionRole role) return ""; } -ExtrusionRole ExtrusionEntity::string_to_role(const std::string& role) +ExtrusionRole ExtrusionEntity::string_to_role(const std::string_view role) { if (role == L("Perimeter")) return erPerimeter; diff --git a/src/libslic3r/ExtrusionEntity.hpp b/src/libslic3r/ExtrusionEntity.hpp index 0adb2019ee..6b0153b2ea 100644 --- a/src/libslic3r/ExtrusionEntity.hpp +++ b/src/libslic3r/ExtrusionEntity.hpp @@ -6,6 +6,7 @@ #include "Polyline.hpp" #include +#include namespace Slic3r { @@ -106,7 +107,7 @@ public: virtual double total_volume() const = 0; static std::string role_to_string(ExtrusionRole role); - static ExtrusionRole string_to_role(const std::string& role); + static ExtrusionRole string_to_role(const std::string_view role); }; typedef std::vector ExtrusionEntitiesPtr; diff --git a/src/libslic3r/Fill/Fill.cpp b/src/libslic3r/Fill/Fill.cpp index 3e24d502d6..90cd5699f3 100644 --- a/src/libslic3r/Fill/Fill.cpp +++ b/src/libslic3r/Fill/Fill.cpp @@ -10,7 +10,7 @@ #include "../Surface.hpp" #include "FillBase.hpp" -#include "FillRectilinear2.hpp" +#include "FillRectilinear.hpp" namespace Slic3r { @@ -33,10 +33,11 @@ struct SurfaceFillParams // FillParams float density = 0.f; - // Don't connect the fill lines around the inner perimeter. - bool dont_connect = false; // Don't adjust spacing to fill the space evenly. bool dont_adjust = false; + // Length of the infill anchor along the perimeter line. + // 1000mm is roughly the maximum length line that fits into a 32bit coord_t. + float anchor_length = 1000.f; // width, height of extrusion, nozzle diameter, is bridge // For the output, for fill generator. @@ -65,8 +66,8 @@ struct SurfaceFillParams RETURN_COMPARE_NON_EQUAL(overlap); RETURN_COMPARE_NON_EQUAL(angle); RETURN_COMPARE_NON_EQUAL(density); - RETURN_COMPARE_NON_EQUAL_TYPED(unsigned, dont_connect); RETURN_COMPARE_NON_EQUAL_TYPED(unsigned, dont_adjust); + RETURN_COMPARE_NON_EQUAL(anchor_length); RETURN_COMPARE_NON_EQUAL(flow.width); RETURN_COMPARE_NON_EQUAL(flow.height); RETURN_COMPARE_NON_EQUAL(flow.nozzle_diameter); @@ -83,8 +84,8 @@ struct SurfaceFillParams this->overlap == rhs.overlap && this->angle == rhs.angle && this->density == rhs.density && - this->dont_connect == rhs.dont_connect && this->dont_adjust == rhs.dont_adjust && + this->anchor_length == rhs.anchor_length && this->flow == rhs.flow && this->extrusion_role == rhs.extrusion_role; } @@ -115,16 +116,17 @@ std::vector group_fills(const Layer &layer) if (surface.surface_type == stInternalVoid) has_internal_voids = true; else { + const PrintRegionConfig ®ion_config = layerm.region()->config(); FlowRole extrusion_role = surface.is_top() ? frTopSolidInfill : (surface.is_solid() ? frSolidInfill : frInfill); bool is_bridge = layer.id() > 0 && surface.is_bridge(); params.extruder = layerm.region()->extruder(extrusion_role); - params.pattern = layerm.region()->config().fill_pattern.value; - params.density = float(layerm.region()->config().fill_density); + params.pattern = region_config.fill_pattern.value; + params.density = float(region_config.fill_density); if (surface.is_solid()) { params.density = 100.f; params.pattern = (surface.is_external() && ! is_bridge) ? - (surface.is_top() ? layerm.region()->config().top_fill_pattern.value : layerm.region()->config().bottom_fill_pattern.value) : + (surface.is_top() ? region_config.top_fill_pattern.value : region_config.bottom_fill_pattern.value) : ipRectilinear; } else if (params.density <= 0) continue; @@ -136,7 +138,7 @@ std::vector group_fills(const Layer &layer) (surface.is_top() ? erTopSolidInfill : erSolidInfill) : erInternalInfill); params.bridge_angle = float(surface.bridge_angle); - params.angle = float(Geometry::deg2rad(layerm.region()->config().fill_angle.value)); + params.angle = float(Geometry::deg2rad(region_config.fill_angle.value)); // calculate the actual flow we'll be using for this infill params.flow = layerm.region()->flow( @@ -149,7 +151,11 @@ std::vector group_fills(const Layer &layer) ); // Calculate flow spacing for infill pattern generation. - if (! surface.is_solid() && ! is_bridge) { + if (surface.is_solid() || is_bridge) { + params.spacing = params.flow.spacing(); + // Don't limit anchor length for solid or bridging infill. + params.anchor_length = 1000.f; + } else { // it's internal infill, so we can calculate a generic flow spacing // for all layers, for avoiding the ugly effect of // misaligned infill on first layer because of different extrusion width and @@ -162,8 +168,11 @@ std::vector group_fills(const Layer &layer) -1, // auto width *layer.object() ).spacing(); - } else - params.spacing = params.flow.spacing(); + // Anchor a sparse infill to inner perimeters with the following anchor length: + params.anchor_length = float(region_config.infill_anchor); + if (region_config.infill_anchor.percent) + params.anchor_length *= 0.01 * params.spacing; + } auto it_params = set_surface_params.find(params); if (it_params == set_surface_params.end()) @@ -367,8 +376,9 @@ void Layer::make_fills(FillAdaptive::Octree* adaptive_fill_octree, FillAdaptive: // apply half spacing using this flow's own spacing and generate infill FillParams params; - params.density = float(0.01 * surface_fill.params.density); - params.dont_adjust = surface_fill.params.dont_adjust; // false + params.density = float(0.01 * surface_fill.params.density); + params.dont_adjust = surface_fill.params.dont_adjust; // false + params.anchor_length = surface_fill.params.anchor_length; for (ExPolygon &expoly : surface_fill.expolygons) { // Spacing is modified by the filler to indicate adjustments. Reset it for each expolygon. @@ -526,15 +536,13 @@ void Layer::make_ironing() } std::sort(by_extruder.begin(), by_extruder.end()); - FillRectilinear2 fill; + FillRectilinear fill; FillParams fill_params; fill.set_bounding_box(this->object()->bounding_box()); fill.layer_id = this->id(); fill.z = this->print_z; fill.overlap = 0; fill_params.density = 1.; -// fill_params.dont_connect = true; - fill_params.dont_connect = false; fill_params.monotonic = true; for (size_t i = 0; i < by_extruder.size(); ++ i) { diff --git a/src/libslic3r/Fill/Fill.hpp b/src/libslic3r/Fill/Fill.hpp index 64963495a3..e92ab2dee5 100644 --- a/src/libslic3r/Fill/Fill.hpp +++ b/src/libslic3r/Fill/Fill.hpp @@ -19,10 +19,10 @@ class LayerRegion; class Filler { public: - Filler() : fill(NULL) {} + Filler() : fill(nullptr) {} ~Filler() { delete fill; - fill = NULL; + fill = nullptr; } Fill *fill; FillParams params; diff --git a/src/libslic3r/Fill/Fill3DHoneycomb.cpp b/src/libslic3r/Fill/Fill3DHoneycomb.cpp index 8aac6e49c8..2ddca7fe4a 100644 --- a/src/libslic3r/Fill/Fill3DHoneycomb.cpp +++ b/src/libslic3r/Fill/Fill3DHoneycomb.cpp @@ -137,7 +137,7 @@ void Fill3DHoneycomb::_fill_surface_single( const FillParams ¶ms, unsigned int thickness_layers, const std::pair &direction, - ExPolygon &expolygon, + ExPolygon expolygon, Polylines &polylines_out) { // no rotation is supported for this infill pattern @@ -162,15 +162,13 @@ void Fill3DHoneycomb::_fill_surface_single( pl.translate(bb.min); // clip pattern to boundaries, chain the clipped polylines - Polylines polylines_chained = chain_polylines(intersection_pl(polylines, to_polygons(expolygon))); + polylines = intersection_pl(polylines, to_polygons(expolygon)); // connect lines if needed - if (! polylines_chained.empty()) { - if (params.dont_connect) - append(polylines_out, std::move(polylines_chained)); - else - this->connect_infill(std::move(polylines_chained), expolygon, polylines_out, this->spacing, params); - } + if (params.dont_connect() || polylines.size() <= 1) + append(polylines_out, chain_polylines(std::move(polylines))); + else + this->connect_infill(std::move(polylines), expolygon, polylines_out, this->spacing, params); } } // namespace Slic3r diff --git a/src/libslic3r/Fill/Fill3DHoneycomb.hpp b/src/libslic3r/Fill/Fill3DHoneycomb.hpp index 52b7922515..2fc1cbe811 100644 --- a/src/libslic3r/Fill/Fill3DHoneycomb.hpp +++ b/src/libslic3r/Fill/Fill3DHoneycomb.hpp @@ -12,19 +12,19 @@ namespace Slic3r { class Fill3DHoneycomb : public Fill { public: - virtual Fill* clone() const { return new Fill3DHoneycomb(*this); }; - virtual ~Fill3DHoneycomb() {} + Fill* clone() const override { return new Fill3DHoneycomb(*this); }; + ~Fill3DHoneycomb() override {} // require bridge flow since most of this pattern hangs in air - virtual bool use_bridge_flow() const { return true; } + bool use_bridge_flow() const override { return true; } protected: - virtual void _fill_surface_single( + void _fill_surface_single( const FillParams ¶ms, unsigned int thickness_layers, const std::pair &direction, - ExPolygon &expolygon, - Polylines &polylines_out); + ExPolygon expolygon, + Polylines &polylines_out) override; }; } // namespace Slic3r diff --git a/src/libslic3r/Fill/FillAdaptive.cpp b/src/libslic3r/Fill/FillAdaptive.cpp index ba13b2a975..3b62976261 100644 --- a/src/libslic3r/Fill/FillAdaptive.cpp +++ b/src/libslic3r/Fill/FillAdaptive.cpp @@ -14,11 +14,18 @@ #include #include #include +#include // Boost pool: Don't use mutexes to synchronize memory allocation. #define BOOST_POOL_NO_MT #include +#include +#include +#include +#include + + namespace Slic3r { namespace FillAdaptive { @@ -288,7 +295,7 @@ std::pair adaptive_fill_line_spacing(const PrintObject &print_ob bool build_octree = false; const std::vector &nozzle_diameters = print_object.print()->config().nozzle_diameter.values; double max_nozzle_diameter = *std::max_element(nozzle_diameters.begin(), nozzle_diameters.end()); - double default_infill_extrusion_width = Flow::auto_extrusion_width(FlowRole::frInfill, max_nozzle_diameter); + double default_infill_extrusion_width = Flow::auto_extrusion_width(FlowRole::frInfill, float(max_nozzle_diameter)); for (const PrintRegion *region : print_object.print()->regions()) { const PrintRegionConfig &config = region->config(); bool nonempty = config.fill_density > 0; @@ -475,7 +482,7 @@ static void generate_infill_lines_recursive( Line new_line(Point::new_scale(from), Point::new_scale(to)); if (last_line.a.x() == std::numeric_limits::max()) { last_line.a = new_line.a; - } else if ((new_line.a - last_line.b).cwiseAbs().maxCoeff() > 300) { // SCALED_EPSILON is 100 and it is not enough + } else if ((new_line.a - last_line.b).cwiseAbs().maxCoeff() > 1000) { // SCALED_EPSILON is 100 and it is not enough context.output_lines.emplace_back(last_line); last_line.a = new_line.a; } @@ -501,7 +508,7 @@ static void generate_infill_lines_recursive( #endif #ifdef ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT -static void export_infill_lines_to_svg(const ExPolygon &expoly, const Polylines &polylines, const std::string &path) +static void export_infill_lines_to_svg(const ExPolygon &expoly, const Polylines &polylines, const std::string &path, const Points &pts = Points()) { BoundingBox bbox = get_extents(expoly); bbox.offset(scale_(3.)); @@ -511,46 +518,742 @@ static void export_infill_lines_to_svg(const ExPolygon &expoly, const Polylines svg.draw_outline(expoly, "green"); svg.draw(polylines, "red"); static constexpr double trim_length = scale_(0.4); - for (Polyline polyline : polylines) { - Vec2d a = polyline.points.front().cast(); - Vec2d d = polyline.points.back().cast(); - if (polyline.size() == 2) { - Vec2d v = d - a; - double l = v.norm(); - if (l > 2. * trim_length) { - a += v * trim_length / l; - d -= v * trim_length / l; - polyline.points.front() = a.cast(); - polyline.points.back() = d.cast(); - } else - polyline.points.clear(); - } else if (polyline.size() > 2) { - Vec2d b = polyline.points[1].cast(); - Vec2d c = polyline.points[polyline.points.size() - 2].cast(); - Vec2d v = b - a; - double l = v.norm(); - if (l > trim_length) { - a += v * trim_length / l; - polyline.points.front() = a.cast(); - } else - polyline.points.erase(polyline.points.begin()); - v = d - c; - l = v.norm(); - if (l > trim_length) - polyline.points.back() = (d - v * trim_length / l).cast(); - else - polyline.points.pop_back(); + for (Polyline polyline : polylines) + if (! polyline.empty()) { + Vec2d a = polyline.points.front().cast(); + Vec2d d = polyline.points.back().cast(); + if (polyline.size() == 2) { + Vec2d v = d - a; + double l = v.norm(); + if (l > 2. * trim_length) { + a += v * trim_length / l; + d -= v * trim_length / l; + polyline.points.front() = a.cast(); + polyline.points.back() = d.cast(); + } else + polyline.points.clear(); + } else if (polyline.size() > 2) { + Vec2d b = polyline.points[1].cast(); + Vec2d c = polyline.points[polyline.points.size() - 2].cast(); + Vec2d v = b - a; + double l = v.norm(); + if (l > trim_length) { + a += v * trim_length / l; + polyline.points.front() = a.cast(); + } else + polyline.points.erase(polyline.points.begin()); + v = d - c; + l = v.norm(); + if (l > trim_length) + polyline.points.back() = (d - v * trim_length / l).cast(); + else + polyline.points.pop_back(); + } + svg.draw(polyline, "black"); } - svg.draw(polyline, "black"); - } + svg.draw(pts, "magenta"); } #endif /* ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT */ +// Representing a T-joint (in general case) between two infill lines +// (between one end point of intersect_pl/intersect_line and +struct Intersection +{ + // Closest line to intersect_point. + const Line *closest_line; + + // The line for which is computed closest line from intersect_point to closest_line + const Line *intersect_line; + // Pointer to the polyline from which is computed closest_line + Polyline *intersect_pl; + // Point for which is computed closest line (closest_line) + Point intersect_point; + // Indicate if intersect_point is the first or the last point of intersect_pl + bool front; + // Signum of intersect_line_dir.cross(closest_line.dir()): + bool left; + + // Indication if this intersection has been proceed + bool used = false; + + bool fresh() const throw() { return ! used && ! intersect_pl->empty(); } + + Intersection(const Line &closest_line, const Line &intersect_line, Polyline *intersect_pl, const Point &intersect_point, bool front) : + closest_line(&closest_line), intersect_line(&intersect_line), intersect_pl(intersect_pl), intersect_point(intersect_point), front(front) + { + // Calculate side of this intersection line of the closest line. + Vec2d v1((this->closest_line->b - this->closest_line->a).cast()); + Vec2d v2(this->intersect_line_dir()); +#ifndef NDEBUG + { + Vec2d v1n = v1.normalized(); + Vec2d v2n = v2.normalized(); + double c = cross2(v1n, v2n); + assert(std::abs(c) > sin(M_PI / 12.)); + } +#endif // NDEBUG + this->left = cross2(v1, v2) > 0.; + } + + std::optional other_hook() const { + std::optional out; + const Points &pts = intersect_pl->points; + if (pts.size() >= 3) + out = this->front ? Line(pts[1], pts[2]) : Line(pts[pts.size() - 2], pts[pts.size() - 3]); + return out; + } + + bool other_hook_intersects(const Line &l, Point &pt) { + std::optional h = other_hook(); + return h && h->intersection(l, &pt); + } + bool other_hook_intersects(const Line &l) { Point pt; return this->other_hook_intersects(l, pt); } + + // Direction to intersect_point. + Vec2d intersect_line_dir() const throw() { + return (this->intersect_point == intersect_line->a ? intersect_line->b - intersect_line->a : intersect_line->a - intersect_line->b).cast(); + } +}; + +static inline Intersection* get_nearest_intersection(std::vector>& intersect_line, const size_t first_idx) +{ + assert(intersect_line.size() >= 2); + bool take_next = false; + if (first_idx == 0) + take_next = true; + else if (first_idx + 1 == intersect_line.size()) + take_next = false; + else { + // Has both prev and next. + const std::pair &ithis = intersect_line[first_idx]; + const std::pair &iprev = intersect_line[first_idx - 1]; + const std::pair &inext = intersect_line[first_idx + 1]; + take_next = iprev.first->fresh() && inext.first->fresh() ? + inext.second - ithis.second < ithis.second - iprev.second : + inext.first->fresh(); + } + return intersect_line[take_next ? first_idx + 1 : first_idx - 1].first; +} + +// Create a line representing the anchor aka hook extrusion based on line_to_offset +// translated in the direction of the intersection line (intersection.intersect_line). +static Line create_offset_line(Line offset_line, const Intersection &intersection, const double scaled_offset) +{ + offset_line.translate((perp(intersection.closest_line->vector().cast().normalized()) * (intersection.left ? scaled_offset : - scaled_offset)).cast()); + // Extend the line by a small value to guarantee a collision with adjacent lines + offset_line.extend(coord_t(scaled_offset * 1.16)); // / cos(PI/6) + return offset_line; +} + +namespace bg = boost::geometry; +namespace bgm = boost::geometry::model; +namespace bgi = boost::geometry::index; + +// float is needed because for coord_t bgi::intersects throws "bad numeric conversion: positive overflow" +using rtree_point_t = bgm::point; +using rtree_segment_t = bgm::segment; +using rtree_t = bgi::rtree, bgi::rstar<16, 4>>; + +static inline rtree_point_t mk_rtree_point(const Point &pt) { + return rtree_point_t(float(pt.x()), float(pt.y())); +} +static inline rtree_segment_t mk_rtree_seg(const Point &a, const Point &b) { + return { mk_rtree_point(a), mk_rtree_point(b) }; +} +static inline rtree_segment_t mk_rtree_seg(const Line &l) { + return mk_rtree_seg(l.a, l.b); +} + +// Create a hook based on hook_line and append it to the begin or end of the polyline in the intersection +static void add_hook( + const Intersection &intersection, const double scaled_offset, + const int hook_length, double scaled_trim_distance, + const rtree_t &rtree, const Lines &lines_src) +{ + // Trim the hook start by the infill line it will connect to. + Point hook_start; + bool intersection_found = intersection.intersect_line->intersection( + create_offset_line(*intersection.closest_line, intersection, scaled_offset), + &hook_start); + assert(intersection_found); + + std::optional other_hook = intersection.other_hook(); + + Vec2d hook_vector_norm = intersection.closest_line->vector().cast().normalized(); + // hook_vector is extended by the thickness of the infill line, so that a collision is found against + // the infill centerline to be later trimmed by the thickened line. + Vector hook_vector = ((hook_length + 1.16 * scaled_trim_distance) * hook_vector_norm).cast(); + Line hook_forward(hook_start, hook_start + hook_vector); + + auto filter_itself = [&intersection, &lines_src](const auto &item) { return item.second != intersection.intersect_line - lines_src.data(); }; + + std::vector> hook_intersections; + rtree.query(bgi::intersects(mk_rtree_seg(hook_forward)) && bgi::satisfies(filter_itself), std::back_inserter(hook_intersections)); + Point self_intersection_point; + bool self_intersection = other_hook && other_hook->intersection(hook_forward, &self_intersection_point); + + // Find closest intersection of a line segment starting with pt pointing in dir + // with any of the hook_intersections, returns Euclidian distance. + // dir is normalized. + auto max_hook_length = [hook_length, scaled_trim_distance, &lines_src]( + const Vec2d &pt, const Vec2d &dir, + const std::vector> &hook_intersections, + bool self_intersection, const std::optional &self_intersection_line, const Point &self_intersection_point) { + // No hook is longer than hook_length, there shouldn't be any intersection closer than that. + auto max_length = double(hook_length); + auto update_max_length = [&max_length](double d) { + if (d < max_length) + max_length = d; + }; + // Shift the trimming point away from the colliding thick line. + auto shift_from_thick_line = [&dir, scaled_trim_distance](const Vec2d& dir2) { + return scaled_trim_distance * std::abs(cross2(dir, dir2.normalized())); + }; + + for (const auto &hook_intersection : hook_intersections) { + const rtree_segment_t &segment = hook_intersection.first; + // Segment start and end points, segment vector. + Vec2d pt2(bg::get<0, 0>(segment), bg::get<0, 1>(segment)); + Vec2d dir2 = Vec2d(bg::get<1, 0>(segment), bg::get<1, 1>(segment)) - pt2; + // Find intersection of (pt, dir) with (pt2, dir2), where dir is normalized. + double denom = cross2(dir, dir2); + assert(std::abs(denom) > EPSILON); + double t = cross2(pt2 - pt, dir2) / denom; + if (hook_intersection.second < lines_src.size()) + // Trimming by another infill line. Reduce overlap. + t -= shift_from_thick_line(dir2); + update_max_length(t); + } + if (self_intersection) { + double t = (self_intersection_point.cast() - pt).dot(dir) - shift_from_thick_line((*self_intersection_line).vector().cast()); + max_length = std::min(max_length, t); + } + return std::max(0., max_length); + }; + + Vec2d hook_startf = hook_start.cast(); + double hook_forward_max_length = max_hook_length(hook_startf, hook_vector_norm, hook_intersections, self_intersection, other_hook, self_intersection_point); + double hook_backward_max_length = 0.; + if (hook_forward_max_length < hook_length - SCALED_EPSILON) { + // Try the other side. + hook_intersections.clear(); + Line hook_backward(hook_start, hook_start - hook_vector); + rtree.query(bgi::intersects(mk_rtree_seg(hook_backward)) && bgi::satisfies(filter_itself), std::back_inserter(hook_intersections)); + self_intersection = other_hook && other_hook->intersection(hook_backward, &self_intersection_point); + hook_backward_max_length = max_hook_length(hook_startf, - hook_vector_norm, hook_intersections, self_intersection, other_hook, self_intersection_point); + } + + // Take the longer hook. + Vec2d hook_dir = (hook_forward_max_length > hook_backward_max_length ? hook_forward_max_length : - hook_backward_max_length) * hook_vector_norm; + Point hook_end = hook_start + hook_dir.cast(); + + Points &pl = intersection.intersect_pl->points; + if (intersection.front) { + pl.front() = hook_start; + pl.emplace(pl.begin(), hook_end); + } else { + pl.back() = hook_start; + pl.emplace_back(hook_end); + } +} + +static Polylines connect_lines_using_hooks(Polylines &&lines, const ExPolygon &boundary, const double spacing, const int hook_length) +{ + rtree_t rtree; + size_t poly_idx = 0; + + Lines lines_src; + lines_src.reserve(lines.size()); + std::transform(lines.begin(), lines.end(), std::back_inserter(lines_src), [](const Line& l) { return Polyline{ l.a, l.b }; }); + + // 19% overlap, slightly lower than the allowed overlap in Fill::connect_infill() + const float scaled_offset = float(scale_(spacing) * 0.81); + // 25% overlap + const float scaled_trim_distance = float(scale_(spacing) * 0.5 * 0.75); + + // Keeping the vector of closest points outside the loop, so the vector does not need to be reallocated. + std::vector> closest; + // Pairs of lines touching at one end point. The pair is sorted to make the end point connection test symmetric. + std::vector> lines_touching_at_endpoints; + { + // Insert infill lines into rtree, merge close collinear segments split by the infill boundary, + // collect lines_touching_at_endpoints. + double r2_close = Slic3r::sqr(1200.); + for (Polyline &poly : lines) { + assert(poly.points.size() == 2); + if (&poly != lines.data()) { + // Join collinear segments separated by a tiny gap. These gaps were likely created by clipping the infill lines with a concave dent in an infill boundary. + auto collinear_segment = [&rtree, &closest, &lines, &lines_touching_at_endpoints, r2_close](const Point& pt, const Point& pt_other, const Polyline* polyline) -> std::pair { + closest.clear(); + rtree.query(bgi::nearest(mk_rtree_point(pt), 1), std::back_inserter(closest)); + const Polyline *other = &lines[closest.front().second]; + double dist2_front = (other->points.front() - pt).cast().squaredNorm(); + double dist2_back = (other->points.back() - pt).cast().squaredNorm(); + double dist2_min = std::min(dist2_front, dist2_back); + if (dist2_min < r2_close) { + // Don't connect the segments in an opposite direction. + double dist2_min_other = std::min((other->points.front() - pt_other).cast().squaredNorm(), (other->points.back() - pt_other).cast().squaredNorm()); + if (dist2_min_other > dist2_min) { + // End points of the two lines are very close, they should have been merged together if they are collinear. + Vec2d v1 = (pt_other - pt).cast(); + Vec2d v2 = (other->points.back() - other->points.front()).cast(); + Vec2d v1n = v1.normalized(); + Vec2d v2n = v2.normalized(); + // The vectors must not be collinear. + double d = v1n.dot(v2n); + if (std::abs(d) > 0.99f) { + // Lines are collinear, merge them. + rtree.remove(closest.front()); + return std::make_pair(const_cast(other), dist2_min == dist2_front); + } else { + if (polyline > other) + std::swap(polyline, other); + lines_touching_at_endpoints.emplace_back(polyline, other); + } + } + } + return std::make_pair(static_cast(nullptr), false); + }; + auto collinear_front = collinear_segment(poly.points.front(), poly.points.back(), &poly); + if (collinear_front.first) { + Polyline &other = *collinear_front.first; + poly.points.front() = collinear_front.second ? other.points.back() : other.points.front(); + other.points.clear(); + } + auto collinear_back = collinear_segment(poly.points.back(), poly.points.front(), &poly); + if (collinear_back.first) { + Polyline &other = *collinear_front.first; + poly.points.back() = collinear_front.second ? other.points.back() : other.points.front(); + other.points.clear(); + } + } + rtree.insert(std::make_pair(mk_rtree_seg(poly.points.front(), poly.points.back()), poly_idx++)); + } + } + + sort_remove_duplicates(lines_touching_at_endpoints); + + std::vector intersections; + { + // Minimum lenght of an infill line to anchor. Very short lines cannot be trimmed from both sides, + // it does not help to anchor extremely short infill lines, it consumes too much plastic while not adding + // to the object rigidity. + assert(scaled_offset > scaled_trim_distance); + const double line_len_threshold_drop_both_sides = scaled_offset * (2. / cos(PI / 6.) + 0.5) + SCALED_EPSILON; + const double line_len_threshold_anchor_both_sides = line_len_threshold_drop_both_sides + scaled_offset; + const double line_len_threshold_drop_single_side = scaled_offset * (1. / cos(PI / 6.) + 1.5) + SCALED_EPSILON; + const double line_len_threshold_anchor_single_side = line_len_threshold_drop_single_side + scaled_offset; + for (size_t line_idx = 0; line_idx < lines.size(); ++ line_idx) { + Polyline &line = lines[line_idx]; + if (line.points.empty()) + continue; + + Point &front_point = line.points.front(); + Point &back_point = line.points.back(); + + // Find the nearest line from the start point of the line. + std::optional tjoint_front, tjoint_back; + { + auto has_tjoint = [&closest, line_idx, &rtree, &lines](const Point &pt) { + auto filter_itself = [line_idx](const auto &item) { return item.second != line_idx; }; + closest.clear(); + rtree.query(bgi::nearest(mk_rtree_point(pt), 1) && bgi::satisfies(filter_itself), std::back_inserter(closest)); + const Polyline &pl = lines[closest.front().second]; + std::optional out; + if (pl.points.empty()) { + // The closest infill line was already dropped as it was too short. + // Such an infill line should not make a T-joint anyways. +#if 0 // #ifndef NDEBUG + const auto &seg = closest.front().first; + struct Linef { Vec2d a; Vec2d b; }; + Linef l { { bg::get<0, 0>(seg), bg::get<0, 1>(seg) }, { bg::get<1, 0>(seg), bg::get<1, 1>(seg) } }; + assert(line_alg::distance_to_squared(l, Vec2d(pt.cast())) > 1000 * 1000); +#endif // NDEBUG + } else if (((Line)pl).distance_to_squared(pt) <= 1000 * 1000) + out = closest.front().second; + return out; + }; + // Refuse to create a T-joint if the infill lines touch at their ends. + auto filter_end_point_connections = [&lines_touching_at_endpoints, &lines, &line](std::optional in) { + std::optional out; + if (in) { + const Polyline *lo = &line; + const Polyline *hi = &lines[*in]; + if (lo > hi) + std::swap(lo, hi); + if (! std::binary_search(lines_touching_at_endpoints.begin(), lines_touching_at_endpoints.end(), std::make_pair(lo, hi))) + // Not an end-point connection, it is a valid T-joint. + out = in; + } + return out; + }; + tjoint_front = filter_end_point_connections(has_tjoint(front_point)); + tjoint_back = filter_end_point_connections(has_tjoint(back_point)); + } + + int num_tjoints = int(tjoint_front.has_value()) + int(tjoint_back.has_value()); + if (num_tjoints > 0) { + double line_len = line.length(); + bool drop = false; + bool anchor = false; + if (num_tjoints == 1) { + // Connected to perimeters on a single side only, connected to another infill line on the other side. + drop = line_len < line_len_threshold_drop_single_side; + anchor = line_len > line_len_threshold_anchor_single_side; + } else { + // Not connected to perimeters at all, connected to two infill lines. + assert(num_tjoints == 2); + drop = line_len < line_len_threshold_drop_both_sides; + anchor = line_len > line_len_threshold_anchor_both_sides; + } + if (drop) { + // Drop a very short line if connected to another infill line. + // Lines shorter than spacing are skipped because it is needed to shrink a line by the value of spacing. + // A shorter line than spacing could produce a degenerate polyline. + line.points.clear(); + } else if (anchor) { + if (tjoint_front) + // T-joint of line's front point with the 'closest' line. + intersections.emplace_back(lines_src[*tjoint_front], lines_src[line_idx], &line, front_point, true); + if (tjoint_back) + // T-joint of line's back point with the 'closest' line. + intersections.emplace_back(lines_src[*tjoint_back], lines_src[line_idx], &line, back_point, false); + } else { + if (tjoint_front) + // T joint at the front at a 60 degree angle, the line is very short. + // Trim the front side. + front_point += ((scaled_trim_distance * 1.155) * (back_point - front_point).cast().normalized()).cast(); + if (tjoint_back) + // T joint at the front at a 60 degree angle, the line is very short. + // Trim the front side. + back_point += ((scaled_trim_distance * 1.155) * (front_point - back_point).cast().normalized()).cast(); + } + } + } + // Remove those intersections, that point to a dropped line. + for (auto it = intersections.begin(); it != intersections.end(); ) { + assert(! lines[it->intersect_line - lines_src.data()].points.empty()); + if (lines[it->closest_line - lines_src.data()].points.empty()) { + *it = intersections.back(); + intersections.pop_back(); + } else + ++ it; + } + } + +#ifdef ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT + static int iRun = 0; + int iStep = 0; + { + Points pts; + for (const Intersection &i : intersections) + pts.emplace_back(i.intersect_point); + export_infill_lines_to_svg(boundary, lines, debug_out_path("FillAdaptive-Tjoints-%d.svg", iRun++), pts); + } +#endif /* ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT */ + + // Sort lexicographically by closest_line_idx and left/right orientation. + std::sort(intersections.begin(), intersections.end(), + [](const Intersection &i1, const Intersection &i2) { + return (i1.closest_line == i2.closest_line) ? + int(i1.left) < int(i2.left) : + i1.closest_line < i2.closest_line; + }); + + std::vector merged_with(lines.size()); + std::iota(merged_with.begin(), merged_with.end(), 0); + + // Appends the boundary polygon with all holes to rtree for detection to check whether hooks are not crossing the boundary + { + Point prev = boundary.contour.points.back(); + for (const Point &point : boundary.contour.points) { + rtree.insert(std::make_pair(mk_rtree_seg(prev, point), poly_idx++)); + prev = point; + } + for (const Polygon &polygon : boundary.holes) { + Point prev = polygon.points.back(); + for (const Point &point : polygon.points) { + rtree.insert(std::make_pair(mk_rtree_seg(prev, point), poly_idx++)); + prev = point; + } + } + } + + auto update_merged_polyline_idx = [&merged_with](size_t pl_idx) { + // Update the polyline index to index which is merged + for (size_t last = pl_idx;;) { + size_t lower = merged_with[last]; + if (lower == last) { + merged_with[pl_idx] = lower; + return lower; + } + last = lower; + } + assert(false); + return size_t(0); + }; + auto update_merged_polyline = [&lines, update_merged_polyline_idx](Intersection& intersection) { + // Update the polyline index to index which is merged + size_t intersect_pl_idx = update_merged_polyline_idx(intersection.intersect_pl - lines.data()); + intersection.intersect_pl = &lines[intersect_pl_idx]; + // After polylines are merged, it is necessary to update "forward" based on if intersect_point is the first or the last point of intersect_pl. + if (intersection.fresh()) { + assert(intersection.intersect_pl->points.front() == intersection.intersect_point || + intersection.intersect_pl->points.back() == intersection.intersect_point); + intersection.front = intersection.intersect_pl->points.front() == intersection.intersect_point; + } + }; + + // Merge polylines touching at their ends. This should be a very rare case, but it happens surprisingly often. + for (auto it = lines_touching_at_endpoints.rbegin(); it != lines_touching_at_endpoints.rend(); ++ it) { + Polyline *pl1 = const_cast(it->first); + Polyline *pl2 = const_cast(it->second); + assert(pl1 < pl2); + // pl1 was visited for the 1st time. + // pl2 may have alread been merged with another polyline, even with this one. + pl2 = &lines[update_merged_polyline_idx(pl2 - lines.data())]; + assert(pl1 <= pl2); + // Avoid closing a loop, ignore dropped infill lines. + if (pl1 != pl2 && ! pl1->points.empty() && ! pl2->points.empty()) { + // Merge the polylines. + assert(pl1 < pl2); + assert(pl1->points.size() >= 2); + assert(pl2->points.size() >= 2); + double d11 = (pl1->points.front() - pl2->points.front()).cast().squaredNorm(); + double d12 = (pl1->points.front() - pl2->points.back()) .cast().squaredNorm(); + double d21 = (pl1->points.back() - pl2->points.front()).cast().squaredNorm(); + double d22 = (pl1->points.back() - pl2->points.back()) .cast().squaredNorm(); + double d1min = std::min(d11, d12); + double d2min = std::min(d21, d22); + if (d1min < d2min) { + pl1->reverse(); + if (d12 == d1min) + pl2->reverse(); + } else if (d22 == d2min) + pl2->reverse(); + pl1->points.back() = (pl1->points.back() + pl2->points.front()) / 2; + pl1->append(pl2->points.begin() + 1, pl2->points.end()); + pl2->points.clear(); + merged_with[pl2 - lines.data()] = pl1 - lines.data(); + } + } + + // Keep intersect_line outside the loop, so it does not get reallocated. + std::vector> intersect_line; + for (size_t min_idx = 0; min_idx < intersections.size();) { + intersect_line.clear(); + // All the nearest points (T-joints) ending at the same line are projected onto this line. Because of it, it can easily find the nearest point. + { + const Vec2d line_dir = intersections[min_idx].closest_line->vector().cast(); + size_t max_idx = min_idx; + for (; max_idx < intersections.size() && + intersections[min_idx].closest_line == intersections[max_idx].closest_line && + intersections[min_idx].left == intersections[max_idx].left; + ++ max_idx) + intersect_line.emplace_back(&intersections[max_idx], line_dir.dot(intersections[max_idx].intersect_point.cast())); + min_idx = max_idx; + assert(intersect_line.size() > 0); + // Sort the intersections along line_dir. + std::sort(intersect_line.begin(), intersect_line.end(), [](const auto &i1, const auto &i2) { return i1.second < i2.second; }); + } + + if (intersect_line.size() == 1) { + // Simple case: The current intersection is the only one touching its adjacent line. + Intersection &first_i = *intersect_line.front().first; + update_merged_polyline(first_i); + if (first_i.fresh()) { + // Try to connect left or right. If not enough space for hook_length, take the longer side. +#ifdef ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT + export_infill_lines_to_svg(boundary, lines, debug_out_path("FillAdaptive-add_hook0-pre-%d-%d.svg", iRun, iStep), { first_i.intersect_point }); +#endif // ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT + add_hook(first_i, scaled_offset, hook_length, scaled_trim_distance, rtree, lines_src); +#ifdef ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT + export_infill_lines_to_svg(boundary, lines, debug_out_path("FillAdaptive-add_hook0-pre-%d-%d.svg", iRun, iStep), { first_i.intersect_point }); + ++ iStep; +#endif // ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT + first_i.used = true; + } + continue; + } + + for (size_t first_idx = 0; first_idx < intersect_line.size(); ++ first_idx) { + Intersection &first_i = *intersect_line[first_idx].first; + update_merged_polyline(first_i); + if (! first_i.fresh()) + // The intersection has been processed, or the polyline has been merged to another polyline. + continue; + + // Get the previous or next intersection on the same line, pick the closer one. + if (first_idx > 0) + update_merged_polyline(*intersect_line[first_idx - 1].first); + if (first_idx + 1 < intersect_line.size()) + update_merged_polyline(*intersect_line[first_idx + 1].first); + Intersection &nearest_i = *get_nearest_intersection(intersect_line, first_idx); + assert(first_i.closest_line == nearest_i.closest_line); + assert(first_i.intersect_line != nearest_i.intersect_line); + assert(first_i.intersect_line != first_i.closest_line); + assert(nearest_i.intersect_line != first_i.closest_line); + // A line between two intersections points + Line offset_line = create_offset_line(Line(first_i.intersect_point, nearest_i.intersect_point), first_i, scaled_offset); + // Check if both intersections lie on the offset_line and simultaneously get their points of intersecting. + // These points are used as start and end of the hook + Point first_i_point, nearest_i_point; + bool could_connect = false; + if (nearest_i.fresh()) { + could_connect = first_i.intersect_line->intersection(offset_line, &first_i_point) && + nearest_i.intersect_line->intersection(offset_line, &nearest_i_point); + assert(could_connect); + } + Points &first_points = first_i.intersect_pl->points; + Points &second_points = nearest_i.intersect_pl->points; + could_connect &= (nearest_i_point - first_i_point).cast().squaredNorm() <= Slic3r::sqr(3. * hook_length); + if (could_connect) { + // Both intersections are so close that their polylines can be connected. + // Verify that no other infill line intersects this anchor line. + closest.clear(); + rtree.query( + bgi::intersects(mk_rtree_seg(first_i_point, nearest_i_point)) && + bgi::satisfies([&first_i, &nearest_i, &lines_src](const auto &item) + { return item.second != first_i.intersect_line - lines_src.data() && item.second != nearest_i.intersect_line - lines_src.data(); }), + std::back_inserter(closest)); + could_connect = closest.empty(); +#if 0 + // Avoid self intersections. Maybe it is better to trim the self intersection after the connection? + if (could_connect && first_i.intersect_pl != nearest_i.intersect_pl) { + Line l(first_i_point, nearest_i_point); + could_connect = ! first_i.other_hook_intersects(l) && ! nearest_i.other_hook_intersects(l); + } +#endif + } + bool connected = false; + if (could_connect) { +#ifdef ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT + export_infill_lines_to_svg(boundary, lines, debug_out_path("FillAdaptive-connecting-pre-%d-%d.svg", iRun, iStep), { first_i.intersect_point, nearest_i.intersect_point }); +#endif // ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT + // No other infill line intersects this anchor line. Extrude it as a whole. + if (first_i.intersect_pl == nearest_i.intersect_pl) { + // Both intersections are on the same polyline, that means a loop is being closed. + assert(first_i.front != nearest_i.front); + if (! first_i.front) + std::swap(first_i_point, nearest_i_point); + first_points.front() = first_i_point; + first_points.back() = nearest_i_point; + //FIXME trim the end of a closed loop a bit? + first_points.emplace(first_points.begin(), nearest_i_point); + } else { + // Both intersections are on different polylines + Line l(first_i_point, nearest_i_point); + l.translate((perp(first_i.closest_line->vector().cast().normalized()) * (first_i.left ? scaled_trim_distance : - scaled_trim_distance)).cast()); + Point pt_start, pt_end; + bool trim_start = first_i .intersect_pl->points.size() == 3 && first_i .other_hook_intersects(l, pt_start); + bool trim_end = nearest_i.intersect_pl->points.size() == 3 && nearest_i.other_hook_intersects(l, pt_end); + first_points.reserve(first_points.size() + second_points.size()); + if (first_i.front) + std::reverse(first_points.begin(), first_points.end()); + if (trim_start) + first_points.front() = pt_start; + first_points.back() = first_i_point; + first_points.emplace_back(nearest_i_point); + if (nearest_i.front) + first_points.insert(first_points.end(), second_points.begin() + 1, second_points.end()); + else + first_points.insert(first_points.end(), second_points.rbegin() + 1, second_points.rend()); + if (trim_end) + first_points.back() = pt_end; + // Keep the polyline at the lower index slot. + if (first_i.intersect_pl < nearest_i.intersect_pl) { + second_points.clear(); + merged_with[nearest_i.intersect_pl - lines.data()] = first_i.intersect_pl - lines.data(); + } else { + second_points = std::move(first_points); + first_points.clear(); + merged_with[first_i.intersect_pl - lines.data()] = nearest_i.intersect_pl - lines.data(); + } + } + nearest_i.used = true; + connected = true; +#ifdef ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT + export_infill_lines_to_svg(boundary, lines, debug_out_path("FillAdaptive-connecting-post-%d-%d.svg", iRun, iStep), { first_i.intersect_point, nearest_i.intersect_point }); +#endif // ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT + } + if (! connected) { + // Try to connect left or right. If not enough space for hook_length, take the longer side. +#ifdef ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT + export_infill_lines_to_svg(boundary, lines, debug_out_path("FillAdaptive-add_hook-pre-%d-%d.svg", iRun, iStep), { first_i.intersect_point }); +#endif // ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT + add_hook(first_i, scaled_offset, hook_length, scaled_trim_distance, rtree, lines_src); +#ifdef ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT + export_infill_lines_to_svg(boundary, lines, debug_out_path("FillAdaptive-add_hook-post-%d-%d.svg", iRun, iStep), { first_i.intersect_point }); +#endif // ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT + } +#ifdef ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT + ++ iStep; +#endif ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT + first_i.used = true; + } + } + + Polylines polylines_out; + polylines_out.reserve(polylines_out.size() + std::count_if(lines.begin(), lines.end(), [](const Polyline &pl) { return !pl.empty(); })); + for (Polyline &pl : lines) + if (!pl.empty()) polylines_out.emplace_back(std::move(pl)); + return polylines_out; +} + +#ifndef NDEBUG +bool has_no_collinear_lines(const Polylines &polylines) +{ + // Create line end point lookup. + struct LineEnd { + LineEnd(const Polyline *line, bool start) : line(line), start(start) {} + const Polyline *line; + // Is it the start or end point? + bool start; + const Point& point() const { return start ? line->points.front() : line->points.back(); } + const Point& other_point() const { return start ? line->points.back() : line->points.front(); } + LineEnd other_end() const { return LineEnd(line, !start); } + Vec2d vec() const { return Vec2d((this->other_point() - this->point()).cast()); } + bool operator==(const LineEnd &rhs) const { return this->line == rhs.line && this->start == rhs.start; } + }; + struct LineEndAccessor { + const Point* operator()(const LineEnd &pt) const { return &pt.point(); } + }; + typedef ClosestPointInRadiusLookup ClosestPointLookupType; + ClosestPointLookupType closest_end_point_lookup(1001. * sqrt(2.)); + for (const Polyline& pl : polylines) { +// assert(pl.points.size() == 2); + auto line_start = LineEnd(&pl, true); + auto line_end = LineEnd(&pl, false); + + auto assert_not_collinear = [&closest_end_point_lookup](const LineEnd &line_start) { + std::vector> hits = closest_end_point_lookup.find_all(line_start.point()); + for (const std::pair &hit : hits) + if ((line_start.point() - hit.first->point()).cwiseAbs().maxCoeff() <= 1000) { + // End points of the two lines are very close, they should have been merged together if they are collinear. + Vec2d v1 = line_start.vec(); + Vec2d v2 = hit.first->vec(); + Vec2d v1n = v1.normalized(); + Vec2d v2n = v2.normalized(); + // The vectors must not be collinear. + assert(std::abs(v1n.dot(v2n)) < cos(M_PI / 12.)); + } + }; + assert_not_collinear(line_start); + assert_not_collinear(line_end); + + closest_end_point_lookup.insert(line_start); + closest_end_point_lookup.insert(line_end); + } + + return true; +} +#endif + void Filler::_fill_surface_single( - const FillParams & params, + const FillParams ¶ms, unsigned int thickness_layers, const std::pair &direction, - ExPolygon &expolygon, + ExPolygon expolygon, Polylines &polylines_out) { assert (this->adapt_fill_octree); @@ -569,6 +1272,23 @@ void Filler::_fill_surface_single( generate_infill_lines_recursive(context, adapt_fill_octree->root_cube, 0, int(adapt_fill_octree->cubes_properties.size()) - 1); num_lines += context.output_lines.size() + context.temp_lines.size(); } + +#if 0 + // Collect the lines, trim them by the expolygon. + all_polylines.reserve(num_lines); + auto boundary = to_polygons(expolygon); + for (auto &context : contexts) { + Polylines lines; + lines.reserve(context.output_lines.size() + context.temp_lines.size()); + std::transform(context.output_lines.begin(), context.output_lines.end(), std::back_inserter(lines), [](const Line& l) { return Polyline{ l.a, l.b }; }); + for (const Line &l : context.temp_lines) + if (l.a.x() != std::numeric_limits::max()) + lines.push_back({ l.a, l.b }); + // Crop all polylines + append(all_polylines, intersection_pl(std::move(lines), boundary)); + } +// assert(has_no_collinear_lines(all_polylines)); +#else // Collect the lines. std::vector lines; lines.reserve(num_lines); @@ -578,18 +1298,21 @@ void Filler::_fill_surface_single( if (line.a.x() != std::numeric_limits::max()) lines.emplace_back(line); } -#if 0 - // Chain touching line segments, convert lines to polylines. - //all_polylines = chain_lines(lines, 300.); // SCALED_EPSILON is 100 and it is not enough -#else // Convert lines to polylines. all_polylines.reserve(lines.size()); std::transform(lines.begin(), lines.end(), std::back_inserter(all_polylines), [](const Line& l) { return Polyline{ l.a, l.b }; }); + // Crop all polylines + all_polylines = intersection_pl(std::move(all_polylines), to_polygons(expolygon)); #endif } - // Crop all polylines - all_polylines = intersection_pl(std::move(all_polylines), to_polygons(expolygon)); + // After intersection_pl some polylines with only one line are split into more lines + for (Polyline &polyline : all_polylines) { + //FIXME assert that all the points are collinear and in between the start and end point. + if (polyline.points.size() > 2) + polyline.points.erase(polyline.points.begin() + 1, polyline.points.end() - 1); + } +// assert(has_no_collinear_lines(all_polylines)); #ifdef ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT { @@ -598,10 +1321,21 @@ void Filler::_fill_surface_single( } #endif /* ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT */ - if (params.dont_connect || all_polylines.size() <= 1) - append(polylines_out, std::move(all_polylines)); + const auto hook_length = coord_t(std::min(scale_(this->spacing * 5), scale_(params.anchor_length))); + + Polylines all_polylines_with_hooks = all_polylines.size() > 1 ? connect_lines_using_hooks(std::move(all_polylines), expolygon, this->spacing, hook_length) : std::move(all_polylines); + +#ifdef ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT + { + static int iRun = 0; + export_infill_lines_to_svg(expolygon, all_polylines_with_hooks, debug_out_path("FillAdaptive-hooks-%d.svg", iRun++)); + } +#endif /* ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT */ + + if (params.dont_connect() || all_polylines_with_hooks.size() <= 1) + append(polylines_out, chain_polylines(std::move(all_polylines_with_hooks))); else - connect_infill(chain_polylines(std::move(all_polylines)), expolygon, polylines_out, this->spacing, params); + connect_infill(std::move(all_polylines_with_hooks), expolygon, polylines_out, this->spacing, params); #ifdef ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT { diff --git a/src/libslic3r/Fill/FillAdaptive.hpp b/src/libslic3r/Fill/FillAdaptive.hpp index f10c40b99f..8ed05ba547 100644 --- a/src/libslic3r/Fill/FillAdaptive.hpp +++ b/src/libslic3r/Fill/FillAdaptive.hpp @@ -56,17 +56,17 @@ FillAdaptive::OctreePtr build_octree( class Filler : public Slic3r::Fill { public: - virtual ~Filler() {} + ~Filler() override {} protected: - virtual Fill* clone() const { return new Filler(*this); }; - virtual void _fill_surface_single( + Fill* clone() const override { return new Filler(*this); }; + void _fill_surface_single( const FillParams ¶ms, unsigned int thickness_layers, const std::pair &direction, - ExPolygon &expolygon, - Polylines &polylines_out); - virtual bool no_sort() const { return true; } + ExPolygon expolygon, + Polylines &polylines_out) override; + bool no_sort() const override { return true; } }; }; // namespace FillAdaptive diff --git a/src/libslic3r/Fill/FillBase.cpp b/src/libslic3r/Fill/FillBase.cpp index 07ab2d59f7..4e714b5702 100644 --- a/src/libslic3r/Fill/FillBase.cpp +++ b/src/libslic3r/Fill/FillBase.cpp @@ -1,10 +1,12 @@ #include +#include #include "../ClipperUtils.hpp" #include "../EdgeGrid.hpp" #include "../Geometry.hpp" -#include "../Surface.hpp" +#include "../Point.hpp" #include "../PrintConfig.hpp" +#include "../Surface.hpp" #include "../libslic3r.h" #include "FillBase.hpp" @@ -13,9 +15,8 @@ #include "Fill3DHoneycomb.hpp" #include "FillGyroid.hpp" #include "FillPlanePath.hpp" +#include "FillLine.hpp" #include "FillRectilinear.hpp" -#include "FillRectilinear2.hpp" -#include "FillRectilinear3.hpp" #include "FillAdaptive.hpp" namespace Slic3r { @@ -27,14 +28,13 @@ Fill* Fill::new_from_type(const InfillPattern type) case ipHoneycomb: return new FillHoneycomb(); case ip3DHoneycomb: return new Fill3DHoneycomb(); case ipGyroid: return new FillGyroid(); - case ipRectilinear: return new FillRectilinear2(); + case ipRectilinear: return new FillRectilinear(); case ipMonotonic: return new FillMonotonic(); case ipLine: return new FillLine(); - case ipGrid: return new FillGrid2(); + case ipGrid: return new FillGrid(); case ipTriangles: return new FillTriangles(); case ipStars: return new FillStars(); case ipCubic: return new FillCubic(); -// case ipGrid: return new FillGrid(); case ipArchimedeanChords: return new FillArchimedeanChords(); case ipHilbertCurve: return new FillHilbertCurve(); case ipOctagramSpiral: return new FillOctagramSpiral(); @@ -80,7 +80,7 @@ Polylines Fill::fill_surface(const Surface *surface, const FillParams ¶ms) params, surface->thickness_layers, _infill_direction(surface), - expp[i], + std::move(expp[i]), polylines_out); return polylines_out; } @@ -154,407 +154,221 @@ std::pair Fill::_infill_direction(const Surface *surface) const return std::pair(out_angle, out_shift); } -#if 0 -// From pull request "Gyroid improvements" #2730 by @supermerill +// A single T joint of an infill line to a closed contour or one of its holes. +struct ContourIntersectionPoint { + // Contour and point on a contour where an infill line is connected to. + size_t contour_idx; + size_t point_idx; + // Eucleidean parameter of point_idx along its contour. + float param; + // Other intersection points along the same contour. If there is only a single T-joint on a contour + // with an intersection line, then the prev_on_contour and next_on_contour remain nulls. + ContourIntersectionPoint* prev_on_contour { nullptr }; + ContourIntersectionPoint* next_on_contour { nullptr }; + // Length of the contour not yet allocated to some extrusion path going back (clockwise), or masked out by some overlapping infill line. + float contour_not_taken_length_prev { std::numeric_limits::max() }; + // Length of the contour not yet allocated to some extrusion path going forward (counter-clockwise), or masked out by some overlapping infill line. + float contour_not_taken_length_next { std::numeric_limits::max() }; + // End point is consumed if an infill line connected to this T-joint was already connected left or right along the contour, + // or if the infill line was processed, but it was not possible to connect it left or right along the contour. + bool consumed { false }; + // Whether the contour was trimmed by an overlapping infill line, or whether part of this contour was connected to some infill line. + bool prev_trimmed { false }; + bool next_trimmed { false }; -/// cut poly between poly.point[idx_1] & poly.point[idx_1+1] -/// add p1+-width to one part and p2+-width to the other one. -/// add the "new" polyline to polylines (to part cut from poly) -/// p1 & p2 have to be between poly.point[idx_1] & poly.point[idx_1+1] -/// if idx_1 is ==0 or == size-1, then we don't need to create a new polyline. -static void cut_polyline(Polyline &poly, Polylines &polylines, size_t idx_1, Point p1, Point p2) { - //reorder points - if (p1.distance_to_square(poly.points[idx_1]) > p2.distance_to_square(poly.points[idx_1])) { - Point temp = p2; - p2 = p1; - p1 = temp; - } - if (idx_1 == poly.points.size() - 1) { - //shouldn't be possible. - poly.points.erase(poly.points.end() - 1); - } else { - // create new polyline - Polyline new_poly; - //put points in new_poly - new_poly.points.push_back(p2); - new_poly.points.insert(new_poly.points.end(), poly.points.begin() + idx_1 + 1, poly.points.end()); - //erase&put points in poly - poly.points.erase(poly.points.begin() + idx_1 + 1, poly.points.end()); - poly.points.push_back(p1); - //safe test - if (poly.length() == 0) - poly.points = new_poly.points; - else - polylines.emplace_back(new_poly); - } -} + void consume_prev() { this->contour_not_taken_length_prev = 0.; this->prev_trimmed = true; this->consumed = true; } + void consume_next() { this->contour_not_taken_length_next = 0.; this->next_trimmed = true; this->consumed = true; } -/// the poly is like a polygon but with first_point != last_point (already removed) -static void cut_polygon(Polyline &poly, size_t idx_1, Point p1, Point p2) { - //reorder points - if (p1.distance_to_square(poly.points[idx_1]) > p2.distance_to_square(poly.points[idx_1])) { - Point temp = p2; - p2 = p1; - p1 = temp; - } - //check if we need to rotate before cutting - if (idx_1 != poly.size() - 1) { - //put points in new_poly - poly.points.insert(poly.points.end(), poly.points.begin(), poly.points.begin() + idx_1 + 1); - poly.points.erase(poly.points.begin(), poly.points.begin() + idx_1 + 1); - } - //put points in poly - poly.points.push_back(p1); - poly.points.insert(poly.points.begin(), p2); -} - -/// check if the polyline from pts_to_check may be at 'width' distance of a point in polylines_blocker -/// it use equally_spaced_points with width/2 precision, so don't worry with pts_to_check number of points. -/// it use the given polylines_blocker points, be sure to put enough of them to be reliable. -/// complexity : N(pts_to_check.equally_spaced_points(width / 2)) x N(polylines_blocker.points) -static bool collision(const Points &pts_to_check, const Polylines &polylines_blocker, const coordf_t width) { - //check if it's not too close to a polyline - coordf_t min_dist_square = width * width * 0.9 - SCALED_EPSILON; - Polyline better_polylines(pts_to_check); - Points better_pts = better_polylines.equally_spaced_points(width / 2); - for (const Point &p : better_pts) { - for (const Polyline &poly2 : polylines_blocker) { - for (const Point &p2 : poly2.points) { - if (p.distance_to_square(p2) < min_dist_square) { - return true; - } - } + void trim_prev(const float new_len) { + if (new_len < this->contour_not_taken_length_prev) { + this->contour_not_taken_length_prev = new_len; + this->prev_trimmed = true; } } - return false; -} - -/// Try to find a path inside polylines that allow to go from p1 to p2. -/// width if the width of the extrusion -/// polylines_blockers are the array of polylines to check if the path isn't blocked by something. -/// complexity: N(polylines.points) + a collision check after that if we finded a path: N(2(p2-p1)/width) x N(polylines_blocker.points) -static Points get_frontier(Polylines &polylines, const Point& p1, const Point& p2, const coord_t width, const Polylines &polylines_blockers, coord_t max_size = -1) { - for (size_t idx_poly = 0; idx_poly < polylines.size(); ++idx_poly) { - Polyline &poly = polylines[idx_poly]; - if (poly.size() <= 1) continue; - - //loop? - if (poly.first_point() == poly.last_point()) { - //polygon : try to find a line for p1 & p2. - size_t idx_11, idx_12, idx_21, idx_22; - idx_11 = poly.closest_point_index(p1); - idx_12 = idx_11; - if (Line(poly.points[idx_11], poly.points[(idx_11 + 1) % (poly.points.size() - 1)]).distance_to(p1) < SCALED_EPSILON) { - idx_12 = (idx_11 + 1) % (poly.points.size() - 1); - } else if (Line(poly.points[(idx_11 > 0) ? (idx_11 - 1) : (poly.points.size() - 2)], poly.points[idx_11]).distance_to(p1) < SCALED_EPSILON) { - idx_11 = (idx_11 > 0) ? (idx_11 - 1) : (poly.points.size() - 2); - } else { - continue; - } - idx_21 = poly.closest_point_index(p2); - idx_22 = idx_21; - if (Line(poly.points[idx_21], poly.points[(idx_21 + 1) % (poly.points.size() - 1)]).distance_to(p2) < SCALED_EPSILON) { - idx_22 = (idx_21 + 1) % (poly.points.size() - 1); - } else if (Line(poly.points[(idx_21 > 0) ? (idx_21 - 1) : (poly.points.size() - 2)], poly.points[idx_21]).distance_to(p2) < SCALED_EPSILON) { - idx_21 = (idx_21 > 0) ? (idx_21 - 1) : (poly.points.size() - 2); - } else { - continue; - } - - - //edge case: on the same line - if (idx_11 == idx_21 && idx_12 == idx_22) { - if (collision(Points() = { p1, p2 }, polylines_blockers, width)) return Points(); - //break loop - poly.points.erase(poly.points.end() - 1); - cut_polygon(poly, idx_11, p1, p2); - return Points() = { Line(p1, p2).midpoint() }; - } - - //compute distance & array for the ++ path - Points ret_1_to_2; - double dist_1_to_2 = p1.distance_to(poly.points[idx_12]); - ret_1_to_2.push_back(poly.points[idx_12]); - size_t max = idx_12 <= idx_21 ? idx_21+1 : poly.points.size(); - for (size_t i = idx_12 + 1; i < max; i++) { - dist_1_to_2 += poly.points[i - 1].distance_to(poly.points[i]); - ret_1_to_2.push_back(poly.points[i]); - } - if (idx_12 > idx_21) { - dist_1_to_2 += poly.points.back().distance_to(poly.points.front()); - ret_1_to_2.push_back(poly.points[0]); - for (size_t i = 1; i <= idx_21; i++) { - dist_1_to_2 += poly.points[i - 1].distance_to(poly.points[i]); - ret_1_to_2.push_back(poly.points[i]); - } - } - dist_1_to_2 += p2.distance_to(poly.points[idx_21]); - - //compute distance & array for the -- path - Points ret_2_to_1; - double dist_2_to_1 = p1.distance_to(poly.points[idx_11]); - ret_2_to_1.push_back(poly.points[idx_11]); - size_t min = idx_22 <= idx_11 ? idx_22 : 0; - for (size_t i = idx_11; i > min; i--) { - dist_2_to_1 += poly.points[i - 1].distance_to(poly.points[i]); - ret_2_to_1.push_back(poly.points[i - 1]); - } - if (idx_22 > idx_11) { - dist_2_to_1 += poly.points.back().distance_to(poly.points.front()); - ret_2_to_1.push_back(poly.points[poly.points.size() - 1]); - for (size_t i = poly.points.size() - 1; i > idx_22; i--) { - dist_2_to_1 += poly.points[i - 1].distance_to(poly.points[i]); - ret_2_to_1.push_back(poly.points[i - 1]); - } - } - dist_2_to_1 += p2.distance_to(poly.points[idx_22]); - - if (max_size < dist_2_to_1 && max_size < dist_1_to_2) { - return Points(); - } - - //choose between the two direction (keep the short one) - if (dist_1_to_2 < dist_2_to_1) { - if (collision(ret_1_to_2, polylines_blockers, width)) return Points(); - //break loop - poly.points.erase(poly.points.end() - 1); - //remove points - if (idx_12 <= idx_21) { - poly.points.erase(poly.points.begin() + idx_12, poly.points.begin() + idx_21 + 1); - if (idx_12 != 0) { - cut_polygon(poly, idx_11, p1, p2); - } //else : already cut at the good place - } else { - poly.points.erase(poly.points.begin() + idx_12, poly.points.end()); - poly.points.erase(poly.points.begin(), poly.points.begin() + idx_21); - cut_polygon(poly, poly.points.size() - 1, p1, p2); - } - return ret_1_to_2; - } else { - if (collision(ret_2_to_1, polylines_blockers, width)) return Points(); - //break loop - poly.points.erase(poly.points.end() - 1); - //remove points - if (idx_22 <= idx_11) { - poly.points.erase(poly.points.begin() + idx_22, poly.points.begin() + idx_11 + 1); - if (idx_22 != 0) { - cut_polygon(poly, idx_21, p1, p2); - } //else : already cut at the good place - } else { - poly.points.erase(poly.points.begin() + idx_22, poly.points.end()); - poly.points.erase(poly.points.begin(), poly.points.begin() + idx_11); - cut_polygon(poly, poly.points.size() - 1, p1, p2); - } - return ret_2_to_1; - } - } else { - //polyline : try to find a line for p1 & p2. - size_t idx_1, idx_2; - idx_1 = poly.closest_point_index(p1); - if (idx_1 < poly.points.size() - 1 && Line(poly.points[idx_1], poly.points[idx_1 + 1]).distance_to(p1) < SCALED_EPSILON) { - } else if (idx_1 > 0 && Line(poly.points[idx_1 - 1], poly.points[idx_1]).distance_to(p1) < SCALED_EPSILON) { - idx_1 = idx_1 - 1; - } else { - continue; - } - idx_2 = poly.closest_point_index(p2); - if (idx_2 < poly.points.size() - 1 && Line(poly.points[idx_2], poly.points[idx_2 + 1]).distance_to(p2) < SCALED_EPSILON) { - } else if (idx_2 > 0 && Line(poly.points[idx_2 - 1], poly.points[idx_2]).distance_to(p2) < SCALED_EPSILON) { - idx_2 = idx_2 - 1; - } else { - continue; - } - - //edge case: on the same line - if (idx_1 == idx_2) { - if (collision(Points() = { p1, p2 }, polylines_blockers, width)) return Points(); - cut_polyline(poly, polylines, idx_1, p1, p2); - return Points() = { Line(p1, p2).midpoint() }; - } - - //create ret array - size_t first_idx = idx_1; - size_t last_idx = idx_2 + 1; - if (idx_1 > idx_2) { - first_idx = idx_2; - last_idx = idx_1 + 1; - } - Points p_ret; - p_ret.insert(p_ret.end(), poly.points.begin() + first_idx + 1, poly.points.begin() + last_idx); - - coordf_t length = 0; - for (size_t i = 1; i < p_ret.size(); i++) length += p_ret[i - 1].distance_to(p_ret[i]); - - if (max_size < length) { - return Points(); - } - - if (collision(p_ret, polylines_blockers, width)) return Points(); - //cut polyline - poly.points.erase(poly.points.begin() + first_idx + 1, poly.points.begin() + last_idx); - cut_polyline(poly, polylines, first_idx, p1, p2); - //order the returned array to be p1->p2 - if (idx_1 > idx_2) { - std::reverse(p_ret.begin(), p_ret.end()); - } - return p_ret; - } - - } - - return Points(); -} - -/// Connect the infill_ordered polylines, in this order, from the back point to the next front point. -/// It uses only the boundary polygons to do so, and can't pass two times at the same place. -/// It avoid passing over the infill_ordered's polylines (preventing local over-extrusion). -/// return the connected polylines in polylines_out. Can output polygons (stored as polylines with first_point = last_point). -/// complexity: worst: N(infill_ordered.points) x N(boundary.points) -/// typical: N(infill_ordered) x ( N(boundary.points) + N(infill_ordered.points) ) -void Fill::connect_infill(Polylines &&infill_ordered, const ExPolygon &boundary, Polylines &polylines_out, const FillParams ¶ms) { - - //TODO: fallback to the quick & dirty old algorithm when n(points) is too high. - Polylines polylines_frontier = to_polylines(((Polygons)boundary)); - - Polylines polylines_blocker; - coord_t clip_size = scale_(this->spacing) * 2; - for (const Polyline &polyline : infill_ordered) { - if (polyline.length() > 2.01 * clip_size) { - polylines_blocker.push_back(polyline); - polylines_blocker.back().clip_end(clip_size); - polylines_blocker.back().clip_start(clip_size); + void trim_next(const float new_len) { + if (new_len < this->contour_not_taken_length_next) { + this->contour_not_taken_length_next = new_len; + this->next_trimmed = true; } } - //length between two lines - coordf_t ideal_length = (1 / params.density) * this->spacing; + // The end point of an infill line connected to this T-joint was not processed yet and a piece of the contour could be extruded going backwards. + bool could_take_prev() const throw() { return ! this->consumed && this->contour_not_taken_length_prev > SCALED_EPSILON; } + // The end point of an infill line connected to this T-joint was not processed yet and a piece of the contour could be extruded going forward. + bool could_take_next() const throw() { return ! this->consumed && this->contour_not_taken_length_next > SCALED_EPSILON; } - Polylines polylines_connected_first; - bool first = true; - for (const Polyline &polyline : infill_ordered) { - if (!first) { - // Try to connect the lines. - Points &pts_end = polylines_connected_first.back().points; - const Point &last_point = pts_end.back(); - const Point &first_point = polyline.points.front(); - if (last_point.distance_to(first_point) < scale_(this->spacing) * 10) { - Points pts_frontier = get_frontier(polylines_frontier, last_point, first_point, scale_(this->spacing), polylines_blocker, (coord_t)scale_(ideal_length) * 2); - if (!pts_frontier.empty()) { - // The lines can be connected. - pts_end.insert(pts_end.end(), pts_frontier.begin(), pts_frontier.end()); - pts_end.insert(pts_end.end(), polyline.points.begin(), polyline.points.end()); - continue; - } - } - } - // The lines cannot be connected. - polylines_connected_first.emplace_back(std::move(polyline)); - - first = false; - } - - Polylines polylines_connected; - first = true; - for (const Polyline &polyline : polylines_connected_first) { - if (!first) { - // Try to connect the lines. - Points &pts_end = polylines_connected.back().points; - const Point &last_point = pts_end.back(); - const Point &first_point = polyline.points.front(); - - Polylines before = polylines_frontier; - Points pts_frontier = get_frontier(polylines_frontier, last_point, first_point, scale_(this->spacing), polylines_blocker); - if (!pts_frontier.empty()) { - // The lines can be connected. - pts_end.insert(pts_end.end(), pts_frontier.begin(), pts_frontier.end()); - pts_end.insert(pts_end.end(), polyline.points.begin(), polyline.points.end()); - continue; - } - } - // The lines cannot be connected. - polylines_connected.emplace_back(std::move(polyline)); - - first = false; - } - - //try to link to nearest point if possible - for (size_t idx1 = 0; idx1 < polylines_connected.size(); idx1++) { - size_t min_idx = 0; - coordf_t min_length = 0; - bool switch_id1 = false; - bool switch_id2 = false; - for (size_t idx2 = idx1 + 1; idx2 < polylines_connected.size(); idx2++) { - double last_first = polylines_connected[idx1].last_point().distance_to_square(polylines_connected[idx2].first_point()); - double first_first = polylines_connected[idx1].first_point().distance_to_square(polylines_connected[idx2].first_point()); - double first_last = polylines_connected[idx1].first_point().distance_to_square(polylines_connected[idx2].last_point()); - double last_last = polylines_connected[idx1].last_point().distance_to_square(polylines_connected[idx2].last_point()); - double min = std::min(std::min(last_first, last_last), std::min(first_first, first_last)); - if (min < min_length || min_length == 0) { - min_idx = idx2; - switch_id1 = (std::min(last_first, last_last) > std::min(first_first, first_last)); - switch_id2 = (std::min(last_first, first_first) > std::min(last_last, first_last)); - min_length = min; - } - } - if (min_idx > idx1 && min_idx < polylines_connected.size()){ - Points pts_frontier = get_frontier(polylines_frontier, - switch_id1 ? polylines_connected[idx1].first_point() : polylines_connected[idx1].last_point(), - switch_id2 ? polylines_connected[min_idx].last_point() : polylines_connected[min_idx].first_point(), - scale_(this->spacing), polylines_blocker); - if (!pts_frontier.empty()) { - if (switch_id1) polylines_connected[idx1].reverse(); - if (switch_id2) polylines_connected[min_idx].reverse(); - Points &pts_end = polylines_connected[idx1].points; - pts_end.insert(pts_end.end(), pts_frontier.begin(), pts_frontier.end()); - pts_end.insert(pts_end.end(), polylines_connected[min_idx].points.begin(), polylines_connected[min_idx].points.end()); - polylines_connected.erase(polylines_connected.begin() + min_idx); - } - } - } - - //try to create some loops if possible - for (Polyline &polyline : polylines_connected) { - Points pts_frontier = get_frontier(polylines_frontier, polyline.last_point(), polyline.first_point(), scale_(this->spacing), polylines_blocker); - if (!pts_frontier.empty()) { - polyline.points.insert(polyline.points.end(), pts_frontier.begin(), pts_frontier.end()); - polyline.points.insert(polyline.points.begin(), polyline.points.back()); - } - polylines_out.emplace_back(polyline); - } -} - -#else - -struct ContourPointData { - ContourPointData(float param) : param(param) {} - // Eucleidean position of the contour point along the contour. - float param = 0.f; - // Was the segment starting with this contour point extruded? - bool segment_consumed = false; - // Was this point extruded over? - bool point_consumed = false; + // Could extrude a complete segment from this to this->prev_on_contour. + bool could_connect_prev() const throw() + { return ! this->consumed && this->prev_on_contour && ! this->prev_on_contour->consumed && ! this->prev_trimmed && ! this->prev_on_contour->next_trimmed; } + // Could extrude a complete segment from this to this->next_on_contour. + bool could_connect_next() const throw() + { return ! this->consumed && this->next_on_contour && ! this->next_on_contour->consumed && ! this->next_trimmed && ! this->next_on_contour->prev_trimmed; } }; -// Verify whether the contour from point idx_start to point idx_end could be taken (whether all segments along the contour were not yet extruded). -static bool could_take(const std::vector &contour_data, size_t idx_start, size_t idx_end) +// Distance from param1 to param2 when going counter-clockwise. +static inline float closed_contour_distance_ccw(float param1, float param2, float contour_length) { - assert(idx_start != idx_end); - for (size_t i = idx_start; i != idx_end; ) { - if (contour_data[i].segment_consumed || contour_data[i].point_consumed) - return false; - if (++ i == contour_data.size()) - i = 0; - } - return ! contour_data[idx_end].point_consumed; + assert(param1 >= 0.f && param1 <= contour_length); + assert(param2 >= 0.f && param2 <= contour_length); + float d = param2 - param1; + if (d < 0.f) + d += contour_length; + return d; +} + +// Distance from param1 to param2 when going clockwise. +static inline float closed_contour_distance_cw(float param1, float param2, float contour_length) +{ + return closed_contour_distance_ccw(param2, param1, contour_length); +} + +// Length along the contour from cp1 to cp2 going counter-clockwise. +float path_length_along_contour_ccw(const ContourIntersectionPoint *cp1, const ContourIntersectionPoint *cp2, float contour_length) +{ + assert(cp1 != nullptr); + assert(cp2 != nullptr); + assert(cp1->contour_idx == cp2->contour_idx); + assert(cp1 != cp2); + return closed_contour_distance_ccw(cp1->param, cp2->param, contour_length); +} + +// Lengths along the contour from cp1 to cp2 going CCW and going CW. +std::pair path_lengths_along_contour(const ContourIntersectionPoint *cp1, const ContourIntersectionPoint *cp2, float contour_length) +{ + // Zero'th param is the length of the contour. + float param_lo = cp1->param; + float param_hi = cp2->param; + assert(param_lo >= 0.f && param_lo <= contour_length); + assert(param_hi >= 0.f && param_hi <= contour_length); + bool reversed = false; + if (param_lo > param_hi) { + std::swap(param_lo, param_hi); + reversed = true; + } + auto out = std::make_pair(param_hi - param_lo, param_lo + contour_length - param_hi); + if (reversed) + std::swap(out.first, out.second); + return out; +} + +// Add contour points from interval (idx_start, idx_end> to polyline. +static inline void take_cw_full(Polyline &pl, const Points& contour, size_t idx_start, size_t idx_end) +{ + assert(! pl.empty() && pl.points.back() == contour[idx_start]); + size_t i = (idx_end == 0) ? contour.size() - 1 : idx_start - 1; + while (i != idx_end) { + pl.points.emplace_back(contour[i]); + if (i == 0) + i = contour.size(); + --i; + } + pl.points.emplace_back(contour[i]); +} + +// Add contour points from interval (idx_start, idx_end> to polyline, limited by the Eucleidean length taken. +static inline float take_cw_limited(Polyline &pl, const Points &contour, const std::vector ¶ms, size_t idx_start, size_t idx_end, float length_to_take) +{ + // If appending to an infill line, then the start point of a perimeter line shall match the end point of an infill line. + assert(pl.empty() || pl.points.back() == contour[idx_start]); + assert(contour.size() + 1 == params.size()); + assert(length_to_take > SCALED_EPSILON); + // Length of the contour. + float length = params.back(); + // Parameter (length from contour.front()) for the first point. + float p0 = params[idx_start]; + // Current (2nd) point of the contour. + size_t i = (idx_start == 0) ? contour.size() - 1 : idx_start - 1; + // Previous point of the contour. + size_t iprev = idx_start; + // Length of the contour curve taken for iprev. + float lprev = 0.f; + + for (;;) { + float l = closed_contour_distance_cw(p0, params[i], length); + if (l >= length_to_take) { + // Trim the last segment. + double t = double(length_to_take - lprev) / (l - lprev); + pl.points.emplace_back(lerp(contour[iprev], contour[i], t)); + return length_to_take; + } + // Continue with the other segments. + pl.points.emplace_back(contour[i]); + if (i == idx_end) + return l; + iprev = i; + lprev = l; + if (i == 0) + i = contour.size(); + -- i; + } + assert(false); + return 0; +} + +// Add contour points from interval (idx_start, idx_end> to polyline. +static inline void take_ccw_full(Polyline &pl, const Points &contour, size_t idx_start, size_t idx_end) +{ + assert(! pl.empty() && pl.points.back() == contour[idx_start]); + size_t i = idx_start; + if (++ i == contour.size()) + i = 0; + while (i != idx_end) { + pl.points.emplace_back(contour[i]); + if (++ i == contour.size()) + i = 0; + } + pl.points.emplace_back(contour[i]); +} + +// Add contour points from interval (idx_start, idx_end> to polyline, limited by the Eucleidean length taken. +// Returns length of the contour taken. +static inline float take_ccw_limited(Polyline &pl, const Points &contour, const std::vector ¶ms, size_t idx_start, size_t idx_end, float length_to_take) +{ + // If appending to an infill line, then the start point of a perimeter line shall match the end point of an infill line. + assert(pl.empty() || pl.points.back() == contour[idx_start]); + assert(contour.size() + 1 == params.size()); + assert(length_to_take > SCALED_EPSILON); + // Length of the contour. + float length = params.back(); + // Parameter (length from contour.front()) for the first point. + float p0 = params[idx_start]; + // Current (2nd) point of the contour. + size_t i = idx_start; + if (++ i == contour.size()) + i = 0; + // Previous point of the contour. + size_t iprev = idx_start; + // Length of the contour curve taken at iprev. + float lprev = 0.f; + for (;;) { + float l = closed_contour_distance_ccw(p0, params[i], length); + if (l >= length_to_take) { + // Trim the last segment. + double t = double(length_to_take - lprev) / (l - lprev); + pl.points.emplace_back(lerp(contour[iprev], contour[i], t)); + return length_to_take; + } + // Continue with the other segments. + pl.points.emplace_back(contour[i]); + if (i == idx_end) + return l; + iprev = i; + lprev = l; + if (++ i == contour.size()) + i = 0; + } + assert(false); + return 0; } // Connect end of pl1 to the start of pl2 using the perimeter contour. -// The idx_start and idx_end are ordered so that the connecting polyline points will be taken with increasing indices. -static void take(Polyline &pl1, Polyline &&pl2, const Points &contour, std::vector &contour_data, size_t idx_start, size_t idx_end, bool reversed) +// If clockwise, then a clockwise segment from idx_start to idx_end is taken, otherwise a counter-clockwise segment is being taken. +static void take(Polyline &pl1, const Polyline &pl2, const Points &contour, size_t idx_start, size_t idx_end, bool clockwise) { #ifndef NDEBUG - size_t num_points_initial = pl1.points.size(); assert(idx_start != idx_end); + assert(pl1.size() >= 2); + assert(pl2.size() >= 2); #endif /* NDEBUG */ { @@ -565,34 +379,112 @@ static void take(Polyline &pl1, Polyline &&pl2, const Points &contour, std::vect pl1.points.reserve(pl1.points.size() + size_t(new_points) + pl2.points.size()); } - contour_data[idx_start].point_consumed = true; - contour_data[idx_start].segment_consumed = true; - contour_data[idx_end ].point_consumed = true; + if (clockwise) + take_cw_full(pl1, contour, idx_start, idx_end); + else + take_ccw_full(pl1, contour, idx_start, idx_end); - if (reversed) { - size_t i = (idx_end == 0) ? contour_data.size() - 1 : idx_end - 1; - while (i != idx_start) { - contour_data[i].point_consumed = true; - contour_data[i].segment_consumed = true; - pl1.points.emplace_back(contour[i]); - if (i == 0) - i = contour_data.size(); - -- i; - } - } else { - size_t i = idx_start; - if (++ i == contour_data.size()) - i = 0; - while (i != idx_end) { - contour_data[i].point_consumed = true; - contour_data[i].segment_consumed = true; - pl1.points.emplace_back(contour[i]); - if (++ i == contour_data.size()) - i = 0; - } - } + pl1.points.insert(pl1.points.end(), pl2.points.begin() + 1, pl2.points.end()); +} - append(pl1.points, std::move(pl2.points)); +static void take(Polyline &pl1, const Polyline &pl2, const Points &contour, ContourIntersectionPoint *cp_start, ContourIntersectionPoint *cp_end, bool clockwise) +{ + assert(cp_start != cp_end); + take(pl1, pl2, contour, cp_start->point_idx, cp_end->point_idx, clockwise); + + // Mark the contour segments in between cp_start and cp_end as consumed. + if (clockwise) + std::swap(cp_start, cp_end); + if (cp_start->next_on_contour != cp_end) + for (auto *cp = cp_start->next_on_contour; cp->next_on_contour != cp_end; cp = cp->next_on_contour) { + cp->consume_prev(); + cp->consume_next(); + } + cp_start->consume_next(); + cp_end->consume_prev(); +} + +static void take_limited( + Polyline &pl1, const Points &contour, const std::vector ¶ms, + ContourIntersectionPoint *cp_start, ContourIntersectionPoint *cp_end, bool clockwise, float take_max_length, float line_half_width) +{ +#ifndef NDEBUG + assert(cp_start != cp_end); + assert(pl1.size() >= 2); + assert(contour.size() + 1 == params.size()); +#endif /* NDEBUG */ + + if (! (clockwise ? cp_start->could_take_prev() : cp_start->could_take_next())) + return; + + assert(pl1.points.front() == contour[cp_start->point_idx] || pl1.points.back() == contour[cp_start->point_idx]); + bool add_at_start = pl1.points.front() == contour[cp_start->point_idx]; + Points pl_tmp; + if (add_at_start) { + pl_tmp = std::move(pl1.points); + pl1.points.clear(); + } + + { + // Reserve memory at pl1 for the perimeter segment. + // Pessimizing - take the complete segment. + int new_points = int(cp_end->point_idx) - int(cp_start->point_idx) - 1; + if (new_points < 0) + new_points += int(contour.size()); + pl1.points.reserve(pl1.points.size() + pl_tmp.size() + size_t(new_points)); + } + + float length = params.back(); + float length_to_go = take_max_length; + cp_start->consumed = true; + if (clockwise) { + // Going clockwise from cp_start to cp_end. + for (ContourIntersectionPoint *cp = cp_start; cp != cp_end; cp = cp->prev_on_contour) { + // Length of the segment from cp to cp->prev_on_contour. + float l = closed_contour_distance_cw(cp->param, cp->prev_on_contour->param, length); + length_to_go = std::min(length_to_go, cp->contour_not_taken_length_prev); + //if (cp->prev_on_contour->consumed) + // Don't overlap with an already extruded infill line. + length_to_go = std::max(0.f, std::min(length_to_go, l - line_half_width)); + cp->consume_prev(); + if (l >= length_to_go) { + if (length_to_go > SCALED_EPSILON) { + cp->prev_on_contour->trim_next(l - length_to_go); + take_cw_limited(pl1, contour, params, cp->point_idx, cp->prev_on_contour->point_idx, length_to_go); + } + break; + } else { + cp->prev_on_contour->trim_next(0.f); + take_cw_full(pl1, contour, cp->point_idx, cp->prev_on_contour->point_idx); + length_to_go -= l; + } + } + } else { + for (ContourIntersectionPoint *cp = cp_start; cp != cp_end; cp = cp->next_on_contour) { + float l = closed_contour_distance_ccw(cp->param, cp->next_on_contour->param, length); + length_to_go = std::min(length_to_go, cp->contour_not_taken_length_next); + //if (cp->next_on_contour->consumed) + // Don't overlap with an already extruded infill line. + length_to_go = std::max(0.f, std::min(length_to_go, l - line_half_width)); + cp->consume_next(); + if (l >= length_to_go) { + if (length_to_go > SCALED_EPSILON) { + cp->next_on_contour->trim_prev(l - length_to_go); + take_ccw_limited(pl1, contour, params, cp->point_idx, cp->next_on_contour->point_idx, length_to_go); + } + break; + } else { + cp->next_on_contour->trim_prev(0.f); + take_ccw_full(pl1, contour, cp->point_idx, cp->next_on_contour->point_idx); + length_to_go -= l; + } + } + } + + if (add_at_start) { + pl1.reverse(); + append(pl1.points, pl_tmp); + } } // Return an index of start of a segment and a point of the clipping point at distance from the end of polyline. @@ -617,14 +509,14 @@ static inline SegmentPoint clip_start_segment_and_point(const Points &polyline, for (size_t i = 1; i < polyline.size(); ++ i) { Vec2d pt = polyline[i].cast(); Vec2d v = pt - pt_prev; - double l2 = v.squaredNorm(); - if (l2 > distance * distance) { - out.idx_segment = i; - out.t = distance / sqrt(l2); + double l = v.norm(); + if (l > distance) { + out.idx_segment = i - 1; + out.t = distance / l; out.point = pt_prev + out.t * v; break; } - distance -= sqrt(l2); + distance -= l; pt_prev = pt; } } @@ -642,86 +534,333 @@ static inline SegmentPoint clip_end_segment_and_point(const Points &polyline, do for (int i = int(polyline.size()) - 2; i >= 0; -- i) { Vec2d pt = polyline[i].cast(); Vec2d v = pt - pt_next; - double l2 = v.squaredNorm(); - if (l2 > distance * distance) { + double l = v.norm(); + if (l > distance) { out.idx_segment = i; - out.t = distance / sqrt(l2); + out.t = distance / l; out.point = pt_next + out.t * v; // Store the parameter referenced to the starting point of a segment. out.t = 1. - out.t; break; } - distance -= sqrt(l2); + distance -= l; pt_next = pt; } } return out; } -// Optimized version with the precalculated v1 = p1b - p1a and l1_2 = v1.squaredNorm(). -// Assumption: l1_2 < EPSILON. -static inline double segment_point_distance_squared(const Vec2d &p1a, const Vec2d &p1b, const Vec2d &v1, const double l1_2, const Vec2d &p2) +// Calculate intersection of a line with a thick segment. +// Returns Eucledian parameters of the line / thick segment overlap. +static inline bool line_rounded_thick_segment_collision( + const Vec2d &line_a, const Vec2d &line_b, + const Vec2d &segment_a, const Vec2d &segment_b, const double offset, + std::pair &out_interval) { - assert(l1_2 > EPSILON); - Vec2d v12 = p2 - p1a; - double t = v12.dot(v1); - return (t <= 0. ) ? v12.squaredNorm() : - (t >= l1_2) ? (p2 - p1a).squaredNorm() : - ((t / l1_2) * v1 - v12).squaredNorm(); + const Vec2d line_v0 = line_b - line_a; + double lv = line_v0.squaredNorm(); + + const Vec2d segment_v = segment_b - segment_a; + const double segment_l = segment_v.norm(); + const double offset2 = offset * offset; + + bool intersects = false; + if (lv < SCALED_EPSILON * SCALED_EPSILON) + { + // Very short line vector. Just test whether the center point is inside the offset line. + Vec2d lpt = 0.5 * (line_a + line_b); + if (segment_l > SCALED_EPSILON) { + struct Linef { Vec2d a, b; }; + intersects = line_alg::distance_to_squared(Linef{ segment_a, segment_b }, lpt) < offset2; + } else + intersects = (0.5 * (segment_a + segment_b) - lpt).squaredNorm() < offset2; + if (intersects) { + out_interval.first = 0.; + out_interval.second = sqrt(lv); + } + } + else + { + // Output interval. + double tmin = std::numeric_limits::max(); + double tmax = -tmin; + auto extend_interval = [&tmin, &tmax](double atmin, double atmax) { + tmin = std::min(tmin, atmin); + tmax = std::max(tmax, atmax); + }; + + // Intersections with the inflated segment end points. + auto ray_circle_intersection_interval_extend = [&extend_interval, &line_v0](const Vec2d &segment_pt, const double offset2, const Vec2d &line_pt, const Vec2d &line_vec) { + std::pair pts; + Vec2d p0 = line_pt - segment_pt; + double c = - line_pt.dot(p0); + if (Geometry::ray_circle_intersections_r2_lv2_c(offset2, line_vec.x(), line_vec.y(), line_vec.squaredNorm(), c, pts)) { + double tmin = (pts.first - p0).dot(line_v0); + double tmax = (pts.second - p0).dot(line_v0); + if (tmin > tmax) + std::swap(tmin, tmax); + tmin = std::max(tmin, 0.); + tmax = std::min(tmax, 1.); + if (tmin <= tmax) + extend_interval(tmin, tmax); + } + }; + + // Intersections with the inflated segment. + if (segment_l > SCALED_EPSILON) { + ray_circle_intersection_interval_extend(segment_a, offset2, line_a, line_v0); + ray_circle_intersection_interval_extend(segment_b, offset2, line_a, line_v0); + // Clip the line segment transformed into a coordinate space of the segment, + // where the segment spans (0, 0) to (segment_l, 0). + const Vec2d dir_x = segment_v / segment_l; + const Vec2d dir_y(- dir_x.y(), dir_x.x()); + const Vec2d line_p0(line_a - segment_a); + std::pair interval; + if (Geometry::liang_barsky_line_clipping_interval( + Vec2d(line_p0.dot(dir_x), line_p0.dot(dir_y)), + Vec2d(line_v0.dot(dir_x), line_v0.dot(dir_y)), + BoundingBoxf(Vec2d(0., - offset), Vec2d(segment_l, offset)), + interval)) + extend_interval(interval.first, interval.second); + } else + ray_circle_intersection_interval_extend(0.5 * (segment_a + segment_b), offset, line_a, line_v0); + + intersects = tmin <= tmax; + if (intersects) { + lv = sqrt(lv); + out_interval.first = tmin * lv; + out_interval.second = tmax * lv; + } + } + +#if 0 + { + BoundingBox bbox; + bbox.merge(line_a.cast()); + bbox.merge(line_a.cast()); + bbox.merge(segment_a.cast()); + bbox.merge(segment_b.cast()); + static int iRun = 0; + ::Slic3r::SVG svg(debug_out_path("%s-%03d.svg", "line-thick-segment-intersect", iRun ++), bbox); + svg.draw(Line(line_a.cast(), line_b.cast()), "black"); + svg.draw(Line(segment_a.cast(), segment_b.cast()), "blue", offset * 2.); + svg.draw(segment_a.cast(), "blue", offset); + svg.draw(segment_b.cast(), "blue", offset); + svg.draw(Line(segment_a.cast(), segment_b.cast()), "black"); + if (intersects) + svg.draw(Line((line_a + (line_b - line_a).normalized() * out_interval.first).cast(), + (line_a + (line_b - line_a).normalized() * out_interval.second).cast()), "red"); + } +#endif + + return intersects; } -static inline double segment_point_distance_squared(const Vec2d &p1a, const Vec2d &p1b, const Vec2d &p2) +static inline bool inside_interval(float low, float high, float p) { - const Vec2d v = p1b - p1a; - const double l2 = v.squaredNorm(); - if (l2 < EPSILON) - // p1a == p1b - return (p2 - p1a).squaredNorm(); - return segment_point_distance_squared(p1a, p1b, v, v.squaredNorm(), p2); + return p >= low && p <= high; } -// Distance to the closest point of line. -static inline double min_distance_of_segments(const Vec2d &p1a, const Vec2d &p1b, const Vec2d &p2a, const Vec2d &p2b) +static inline bool interval_inside_interval(float outer_low, float outer_high, float inner_low, float inner_high, float epsilon) { - Vec2d v1 = p1b - p1a; - double l1_2 = v1.squaredNorm(); - if (l1_2 < EPSILON) - // p1a == p1b: Return distance of p1a from the (p2a, p2b) segment. - return segment_point_distance_squared(p2a, p2b, p1a); - - Vec2d v2 = p2b - p2a; - double l2_2 = v2.squaredNorm(); - if (l2_2 < EPSILON) - // p2a == p2b: Return distance of p2a from the (p1a, p1b) segment. - return segment_point_distance_squared(p1a, p1b, v1, l1_2, p2a); - - return std::min( - std::min(segment_point_distance_squared(p1a, p1b, v1, l1_2, p2a), segment_point_distance_squared(p1a, p1b, v1, l1_2, p2b)), - std::min(segment_point_distance_squared(p2a, p2b, v2, l2_2, p1a), segment_point_distance_squared(p2a, p2b, v2, l2_2, p1b))); + outer_low -= epsilon; + outer_high += epsilon; + return inside_interval(outer_low, outer_high, inner_low) && inside_interval(outer_low, outer_high, inner_high); } +static inline bool cyclic_interval_inside_interval(float outer_low, float outer_high, float inner_low, float inner_high, float length) +{ + if (outer_low > outer_high) + outer_high += length; + if (inner_low > inner_high) + inner_high += length; + else if (inner_high < outer_low) { + inner_low += length; + inner_high += length; + } + return interval_inside_interval(outer_low, outer_high, inner_low, inner_high, float(SCALED_EPSILON)); +} + +// #define INFILL_DEBUG_OUTPUT + +#ifdef INFILL_DEBUG_OUTPUT +static void export_infill_to_svg( + // Boundary contour, along which the perimeter extrusions will be drawn. + const std::vector &boundary, + // Parametrization of boundary with Euclidian length. + const std::vector> &boundary_parameters, + // Intersections (T-joints) of the infill lines with the boundary. + std::vector> &boundary_intersections, + // Infill lines, either completely inside the boundary, or touching the boundary. + const Polylines &infill, + const coord_t scaled_spacing, + const std::string &path, + const Polylines &overlap_lines = Polylines(), + const Polylines &polylines = Polylines(), + const Points &pts = Points()) +{ + Polygons polygons; + std::transform(boundary.begin(), boundary.end(), std::back_inserter(polygons), [](auto &pts) { return Polygon(pts); }); + ExPolygons expolygons = union_ex(polygons); + BoundingBox bbox = get_extents(polygons); + bbox.offset(scale_(3.)); + + ::Slic3r::SVG svg(path, bbox); + // Draw the filled infill polygons. + svg.draw(expolygons); + + // Draw the pieces of boundary allowed to be used as anchors of infill lines, not yet consumed. + const std::string color_boundary_trimmed = "blue"; + const std::string color_boundary_not_trimmed = "yellow"; + const coordf_t boundary_line_width = scaled_spacing; + svg.draw_outline(polygons, "red", boundary_line_width); + for (const std::vector &intersections : boundary_intersections) { + const size_t boundary_idx = &intersections - boundary_intersections.data(); + const Points &contour = boundary[boundary_idx]; + const std::vector &contour_param = boundary_parameters[boundary_idx]; + for (const ContourIntersectionPoint *ip : intersections) { + assert(ip->next_trimmed == ip->next_on_contour->prev_trimmed); + assert(ip->prev_trimmed == ip->prev_on_contour->next_trimmed); + { + Polyline pl { contour[ip->point_idx] }; + if (ip->next_trimmed) { + if (ip->contour_not_taken_length_next > SCALED_EPSILON) { + take_ccw_limited(pl, contour, contour_param, ip->point_idx, ip->next_on_contour->point_idx, ip->contour_not_taken_length_next); + svg.draw(pl, color_boundary_trimmed, boundary_line_width); + } + } else { + take_ccw_full(pl, contour, ip->point_idx, ip->next_on_contour->point_idx); + svg.draw(pl, color_boundary_not_trimmed, boundary_line_width); + } + } + { + Polyline pl { contour[ip->point_idx] }; + if (ip->prev_trimmed) { + if (ip->contour_not_taken_length_prev > SCALED_EPSILON) { + take_cw_limited(pl, contour, contour_param, ip->point_idx, ip->prev_on_contour->point_idx, ip->contour_not_taken_length_prev); + svg.draw(pl, color_boundary_trimmed, boundary_line_width); + } + } else { + take_cw_full(pl, contour, ip->point_idx, ip->prev_on_contour->point_idx); + svg.draw(pl, color_boundary_not_trimmed, boundary_line_width); + } + } + } + } + + // Draw the full infill polygon boundary. + svg.draw_outline(polygons, "green"); + + // Draw the infill lines, first the full length with red color, then a slightly shortened length with black color. + svg.draw(infill, "brown"); + static constexpr double trim_length = scale_(0.15); + for (Polyline polyline : infill) + if (! polyline.empty()) { + Vec2d a = polyline.points.front().cast(); + Vec2d d = polyline.points.back().cast(); + if (polyline.size() == 2) { + Vec2d v = d - a; + double l = v.norm(); + if (l > 2. * trim_length) { + a += v * trim_length / l; + d -= v * trim_length / l; + polyline.points.front() = a.cast(); + polyline.points.back() = d.cast(); + } else + polyline.points.clear(); + } else if (polyline.size() > 2) { + Vec2d b = polyline.points[1].cast(); + Vec2d c = polyline.points[polyline.points.size() - 2].cast(); + Vec2d v = b - a; + double l = v.norm(); + if (l > trim_length) { + a += v * trim_length / l; + polyline.points.front() = a.cast(); + } else + polyline.points.erase(polyline.points.begin()); + v = d - c; + l = v.norm(); + if (l > trim_length) + polyline.points.back() = (d - v * trim_length / l).cast(); + else + polyline.points.pop_back(); + } + svg.draw(polyline, "black"); + } + + svg.draw(overlap_lines, "red", scale_(0.05)); + svg.draw(polylines, "magenta", scale_(0.05)); + svg.draw(pts, "magenta"); +} +#endif // INFILL_DEBUG_OUTPUT + +#ifndef NDEBUG +bool validate_boundary_intersections(const std::vector> &boundary_intersections) +{ + for (const std::vector& contour : boundary_intersections) { + for (ContourIntersectionPoint* ip : contour) { + assert(ip->next_trimmed == ip->next_on_contour->prev_trimmed); + assert(ip->prev_trimmed == ip->prev_on_contour->next_trimmed); + } + } + return true; +} +#endif // NDEBUG + // Mark the segments of split boundary as consumed if they are very close to some of the infill line. void mark_boundary_segments_touching_infill( - const std::vector &boundary, - std::vector> &boundary_data, - const BoundingBox &boundary_bbox, - const Polylines &infill, - const double clip_distance, - const double distance_colliding) + // Boundary contour, along which the perimeter extrusions will be drawn. + const std::vector &boundary, + // Parametrization of boundary with Euclidian length. + const std::vector> &boundary_parameters, + // Intersections (T-joints) of the infill lines with the boundary. + std::vector> &boundary_intersections, + // Bounding box around the boundary. + const BoundingBox &boundary_bbox, + // Infill lines, either completely inside the boundary, or touching the boundary. + const Polylines &infill, + // How much of the infill ends should be ignored when marking the boundary segments? + const double clip_distance, + // Roughly width of the infill line. + const double distance_colliding) { + assert(boundary.size() == boundary_parameters.size()); +#ifndef NDEBUG + for (size_t i = 0; i < boundary.size(); ++ i) + assert(boundary[i].size() + 1 == boundary_parameters[i].size()); + assert(validate_boundary_intersections(boundary_intersections)); +#endif + +#ifdef INFILL_DEBUG_OUTPUT + static int iRun = 0; + ++ iRun; + int iStep = 0; + export_infill_to_svg(boundary, boundary_parameters, boundary_intersections, infill, distance_colliding * 2, debug_out_path("%s-%03d.svg", "FillBase-mark_boundary_segments_touching_infill-start", iRun)); + Polylines perimeter_overlaps; +#endif // INFILL_DEBUG_OUTPUT + EdgeGrid::Grid grid; - grid.set_bbox(boundary_bbox); + // Make sure that the the grid is big enough for queries against the thick segment. + grid.set_bbox(boundary_bbox.inflated(distance_colliding * 1.43)); // Inflate the bounding box by a thick line width. - grid.create(boundary, clip_distance + scale_(10.)); + grid.create(boundary, std::max(clip_distance, distance_colliding) + scale_(10.)); + // Visitor for the EdgeGrid to trim boundary_intersections with existing infill lines. struct Visitor { - Visitor(const EdgeGrid::Grid &grid, const std::vector &boundary, std::vector> &boundary_data, const double dist2_max) : - grid(grid), boundary(boundary), boundary_data(boundary_data), dist2_max(dist2_max) {} + Visitor(const EdgeGrid::Grid &grid, + const std::vector &boundary, const std::vector> &boundary_parameters, std::vector> &boundary_intersections, + const double radius) : + grid(grid), boundary(boundary), boundary_parameters(boundary_parameters), boundary_intersections(boundary_intersections), radius(radius), trim_l_threshold(0.5 * radius) {} - void init(const Vec2d &pt1, const Vec2d &pt2) { - this->pt1 = &pt1; - this->pt2 = &pt2; - } + // Init with a segment of an infill line. + void init(const Vec2d &infill_pt1, const Vec2d &infill_pt2) { + this->infill_pt1 = &infill_pt1; + this->infill_pt2 = &infill_pt2; + this->infill_bbox.reset(); + this->infill_bbox.merge(infill_pt1); + this->infill_bbox.merge(infill_pt2); + this->infill_bbox.offset(this->radius + SCALED_EPSILON); + } bool operator()(coord_t iy, coord_t ix) { // Called with a row and colum of the grid cell, which is intersected by a line. @@ -731,54 +870,110 @@ void mark_boundary_segments_touching_infill( auto segment = this->grid.segment(*it_contour_and_segment); const Vec2d seg_pt1 = segment.first.cast(); const Vec2d seg_pt2 = segment.second.cast(); - if (min_distance_of_segments(seg_pt1, seg_pt2, *this->pt1, *this->pt2) < this->dist2_max) { - // Mark this boundary segment as touching the infill line. - ContourPointData &bdp = boundary_data[it_contour_and_segment->first][it_contour_and_segment->second]; - bdp.segment_consumed = true; - // There is no need for checking seg_pt2 as it will be checked the next time. - bool point_touching = false; - if (segment_point_distance_squared(*this->pt1, *this->pt2, seg_pt1) < this->dist2_max) { - point_touching = true; - bdp.point_consumed = true; - } -#if 0 + std::pair interval; + BoundingBoxf bbox_seg; + bbox_seg.merge(seg_pt1); + bbox_seg.merge(seg_pt2); +#ifdef INFILL_DEBUG_OUTPUT + //if (this->infill_bbox.overlap(bbox_seg)) this->perimeter_overlaps.push_back({ segment.first, segment.second }); +#endif // INFILL_DEBUG_OUTPUT + if (this->infill_bbox.overlap(bbox_seg) && line_rounded_thick_segment_collision(seg_pt1, seg_pt2, *this->infill_pt1, *this->infill_pt2, this->radius, interval)) { + // The boundary segment intersects with the infill segment thickened by radius. + // Interval is specified in Euclidian length from seg_pt1 to seg_pt2. + // 1) Find the Euclidian parameters of seg_pt1 and seg_pt2 on its boundary contour. + const std::vector &contour_parameters = boundary_parameters[it_contour_and_segment->first]; + const float contour_length = contour_parameters.back(); + const float param_seg_pt1 = contour_parameters[it_contour_and_segment->second]; +#ifdef INFILL_DEBUG_OUTPUT + this->perimeter_overlaps.push_back({ Point((seg_pt1 + (seg_pt2 - seg_pt1).normalized() * interval.first).cast()), + Point((seg_pt1 + (seg_pt2 - seg_pt1).normalized() * interval.second).cast()) }); +#endif // INFILL_DEBUG_OUTPUT + const float param_overlap1 = param_seg_pt1 + interval.first; + const float param_overlap2 = param_seg_pt1 + interval.second; + // 2) Find the ContourIntersectionPoints before param_overlap1 and after param_overlap2. + std::vector &intersections = boundary_intersections[it_contour_and_segment->first]; + // Find the span of ContourIntersectionPoints, that is trimmed by the interval (param_overlap1, param_overlap2). + ContourIntersectionPoint *ip_low, *ip_high; + { + auto it_low = Slic3r::lower_bound_by_predicate(intersections.begin(), intersections.end(), [param_overlap1](const ContourIntersectionPoint *l) { return l->param < param_overlap1; }); + auto it_high = Slic3r::lower_bound_by_predicate(intersections.begin(), intersections.end(), [param_overlap2](const ContourIntersectionPoint *l) { return l->param < param_overlap2; }); + ip_low = it_low == intersections.end() ? intersections.front() : *it_low; + ip_high = it_high == intersections.end() ? intersections.front() : *it_high; + if (ip_low->param != param_overlap1) + ip_low = ip_low->prev_on_contour; + } + assert(ip_low != ip_high); + // Verify that the interval (param_overlap1, param_overlap2) is inside the interval (ip_low->param, ip_high->param). + assert(cyclic_interval_inside_interval(ip_low->param, ip_high->param, param_overlap1, param_overlap2, contour_length)); + assert(validate_boundary_intersections(boundary_intersections)); + // Mark all ContourIntersectionPoints between ip_low and ip_high as consumed. + if (ip_low->next_on_contour != ip_high) + for (ContourIntersectionPoint *ip = ip_low->next_on_contour; ip != ip_high; ip = ip->next_on_contour) { + ip->consume_prev(); + ip->consume_next(); + } + // Subtract the interval from the first and last segments. + float trim_l = closed_contour_distance_ccw(ip_low->param, param_overlap1, contour_length); + //if (trim_l > trim_l_threshold) + ip_low->trim_next(trim_l); + trim_l = closed_contour_distance_ccw(param_overlap2, ip_high->param, contour_length); + //if (trim_l > trim_l_threshold) + ip_high->trim_prev(trim_l); + assert(ip_low->next_trimmed == ip_high->prev_trimmed); + assert(validate_boundary_intersections(boundary_intersections)); + //FIXME mark point as consumed? + //FIXME verify the sequence between prev and next? +#ifdef INFILL_DEBUG_OUTPUT { - static size_t iRun = 0; +#if 0 + static size_t iRun = 0; ExPolygon expoly(Polygon(*grid.contours().front())); for (size_t i = 1; i < grid.contours().size(); ++i) expoly.holes.emplace_back(Polygon(*grid.contours()[i])); SVG svg(debug_out_path("%s-%d.svg", "FillBase-mark_boundary_segments_touching_infill", iRun ++).c_str(), get_extents(expoly)); svg.draw(expoly, "green"); svg.draw(Line(segment.first, segment.second), "red"); - svg.draw(Line(this->pt1->cast(), this->pt2->cast()), "magenta"); - } + svg.draw(Line(this->infill_pt1->cast(), this->infill_pt2->cast()), "magenta"); #endif + } +#endif // INFILL_DEBUG_OUTPUT } } // Continue traversing the grid along the edge. return true; } - const EdgeGrid::Grid &grid; - const std::vector &boundary; - std::vector> &boundary_data; + const EdgeGrid::Grid &grid; + const std::vector &boundary; + const std::vector> &boundary_parameters; + std::vector> &boundary_intersections; // Maximum distance between the boundary and the infill line allowed to consider the boundary not touching the infill line. - const double dist2_max; + const double radius; + // Region around the contour / infill line intersection point, where the intersections are ignored. + const float trim_l_threshold; - const Vec2d *pt1; - const Vec2d *pt2; - } visitor(grid, boundary, boundary_data, distance_colliding * distance_colliding); + const Vec2d *infill_pt1; + const Vec2d *infill_pt2; + BoundingBoxf infill_bbox; - BoundingBoxf bboxf(boundary_bbox.min.cast(), boundary_bbox.max.cast()); - bboxf.offset(- SCALED_EPSILON); +#ifdef INFILL_DEBUG_OUTPUT + Polylines perimeter_overlaps; +#endif // INFILL_DEBUG_OUTPUT + } visitor(grid, boundary, boundary_parameters, boundary_intersections, distance_colliding); for (const Polyline &polyline : infill) { +#ifdef INFILL_DEBUG_OUTPUT + ++ iStep; +#endif // INFILL_DEBUG_OUTPUT // Clip the infill polyline by the Eucledian distance along the polyline. SegmentPoint start_point = clip_start_segment_and_point(polyline.points, clip_distance); SegmentPoint end_point = clip_end_segment_and_point(polyline.points, clip_distance); if (start_point.valid() && end_point.valid() && (start_point.idx_segment < end_point.idx_segment || (start_point.idx_segment == end_point.idx_segment && start_point.t < end_point.t))) { // The clipped polyline is non-empty. +#ifdef INFILL_DEBUG_OUTPUT + visitor.perimeter_overlaps.clear(); +#endif // INFILL_DEBUG_OUTPUT for (size_t point_idx = start_point.idx_segment; point_idx <= end_point.idx_segment; ++ point_idx) { //FIXME extend the EdgeGrid to suport tracing a thick line. #if 0 @@ -818,44 +1013,82 @@ void mark_boundary_segments_touching_infill( visitor.init(pt1, pt2); // Simulate tracing of a thick line. This only works reliably if distance_colliding <= grid cell size. Vec2d v = (pt2 - pt1).normalized() * distance_colliding; - Vec2d vperp(-v.y(), v.x()); + Vec2d vperp = perp(v); Vec2d a = pt1 - v - vperp; - Vec2d b = pt1 + v - vperp; - if (Geometry::liang_barsky_line_clipping(a, b, bboxf)) - grid.visit_cells_intersecting_line(a.cast(), b.cast(), visitor); + Vec2d b = pt2 + v - vperp; + assert(grid.bbox().contains(a.cast())); + assert(grid.bbox().contains(b.cast())); + grid.visit_cells_intersecting_line(a.cast(), b.cast(), visitor); a = pt1 - v + vperp; - b = pt1 + v + vperp; - if (Geometry::liang_barsky_line_clipping(a, b, bboxf)) - grid.visit_cells_intersecting_line(a.cast(), b.cast(), visitor); + b = pt2 + v + vperp; + assert(grid.bbox().contains(a.cast())); + assert(grid.bbox().contains(b.cast())); + grid.visit_cells_intersecting_line(a.cast(), b.cast(), visitor); #endif +#ifdef INFILL_DEBUG_OUTPUT +// export_infill_to_svg(boundary, boundary_parameters, boundary_intersections, infill, distance_colliding * 2, debug_out_path("%s-%03d-%03d-%03d.svg", "FillBase-mark_boundary_segments_touching_infill-step", iRun, iStep, int(point_idx)), { polyline }); +#endif // INFILL_DEBUG_OUTPUT } - } +#ifdef INFILL_DEBUG_OUTPUT + Polylines perimeter_overlaps; + export_infill_to_svg(boundary, boundary_parameters, boundary_intersections, infill, distance_colliding * 2, debug_out_path("%s-%03d-%03d.svg", "FillBase-mark_boundary_segments_touching_infill-step", iRun, iStep), visitor.perimeter_overlaps, { polyline }); + append(perimeter_overlaps, std::move(visitor.perimeter_overlaps)); + perimeter_overlaps.clear(); +#endif // INFILL_DEBUG_OUTPUT + } } + +#ifdef INFILL_DEBUG_OUTPUT + export_infill_to_svg(boundary, boundary_parameters, boundary_intersections, infill, distance_colliding * 2, debug_out_path("%s-%03d.svg", "FillBase-mark_boundary_segments_touching_infill-end", iRun), perimeter_overlaps); +#endif // INFILL_DEBUG_OUTPUT + assert(validate_boundary_intersections(boundary_intersections)); } void Fill::connect_infill(Polylines &&infill_ordered, const ExPolygon &boundary_src, Polylines &polylines_out, const double spacing, const FillParams ¶ms) { - assert(! infill_ordered.empty()); assert(! boundary_src.contour.points.empty()); + auto polygons_src = reserve_vector(boundary_src.holes.size() + 1); + polygons_src.emplace_back(&boundary_src.contour); + for (const Polygon &polygon : boundary_src.holes) + polygons_src.emplace_back(&polygon); - BoundingBox bbox = get_extents(boundary_src.contour); - bbox.offset(SCALED_EPSILON); + connect_infill(std::move(infill_ordered), polygons_src, get_extents(boundary_src.contour), polylines_out, spacing, params); +} + +void Fill::connect_infill(Polylines &&infill_ordered, const Polygons &boundary_src, const BoundingBox &bbox, Polylines &polylines_out, const double spacing, const FillParams ¶ms) +{ + auto polygons_src = reserve_vector(boundary_src.size()); + for (const Polygon &polygon : boundary_src) + polygons_src.emplace_back(&polygon); + + connect_infill(std::move(infill_ordered), polygons_src, bbox, polylines_out, spacing, params); +} + +void Fill::connect_infill(Polylines &&infill_ordered, const std::vector &boundary_src, const BoundingBox &bbox, Polylines &polylines_out, const double spacing, const FillParams ¶ms) +{ + assert(! infill_ordered.empty()); + assert(params.anchor_length >= 0.01f); + const auto anchor_length = float(scale_(params.anchor_length)); + +#if 0 + append(polylines_out, infill_ordered); + return; +#endif // 1) Add the end points of infill_ordered to boundary_src. - std::vector boundary; - std::vector> boundary_data; - boundary.assign(boundary_src.holes.size() + 1, Points()); - boundary_data.assign(boundary_src.holes.size() + 1, std::vector()); + std::vector boundary; + std::vector> boundary_params; + boundary.assign(boundary_src.size(), Points()); + boundary_params.assign(boundary_src.size(), std::vector()); // Mapping the infill_ordered end point to a (contour, point) of boundary. - std::vector> map_infill_end_point_to_boundary; - static constexpr auto boundary_idx_unconnected = std::numeric_limits::max(); - map_infill_end_point_to_boundary.assign(infill_ordered.size() * 2, std::pair(boundary_idx_unconnected, boundary_idx_unconnected)); + static constexpr auto boundary_idx_unconnected = std::numeric_limits::max(); + std::vector map_infill_end_point_to_boundary(infill_ordered.size() * 2, ContourIntersectionPoint{ boundary_idx_unconnected, boundary_idx_unconnected }); { // Project the infill_ordered end points onto boundary_src. std::vector> intersection_points; { EdgeGrid::Grid grid; - grid.set_bbox(bbox); + grid.set_bbox(bbox.inflated(SCALED_EPSILON)); grid.create(boundary_src, scale_(10.)); intersection_points.reserve(infill_ordered.size() * 2); for (const Polyline &pl : infill_ordered) @@ -876,54 +1109,99 @@ void Fill::connect_infill(Polylines &&infill_ordered, const ExPolygon &boundary_ } auto it = intersection_points.begin(); auto it_end = intersection_points.end(); - for (size_t idx_contour = 0; idx_contour <= boundary_src.holes.size(); ++ idx_contour) { - const Polygon &contour_src = (idx_contour == 0) ? boundary_src.contour : boundary_src.holes[idx_contour - 1]; + std::vector> boundary_intersection_points(boundary.size(), std::vector()); + for (size_t idx_contour = 0; idx_contour < boundary_src.size(); ++ idx_contour) { + // Copy contour_src to contour_dst while adding intersection points. + // Map infill end points map_infill_end_point_to_boundary to the newly inserted boundary points of contour_dst. + // chain the points of map_infill_end_point_to_boundary along their respective contours. + const Polygon &contour_src = *boundary_src[idx_contour]; Points &contour_dst = boundary[idx_contour]; + std::vector &contour_intersection_points = boundary_intersection_points[idx_contour]; + ContourIntersectionPoint *pfirst = nullptr; + ContourIntersectionPoint *pprev = nullptr; + { + // Reserve intersection points. + size_t n_intersection_points = 0; + for (auto itx = it; itx != it_end && itx->first.contour_idx == idx_contour; ++ itx) + ++ n_intersection_points; + contour_intersection_points.reserve(n_intersection_points); + } for (size_t idx_point = 0; idx_point < contour_src.points.size(); ++ idx_point) { contour_dst.emplace_back(contour_src.points[idx_point]); for (; it != it_end && it->first.contour_idx == idx_contour && it->first.start_point_idx == idx_point; ++ it) { // Add these points to the destination contour. - const Vec2d pt1 = contour_src[idx_point].cast(); - const Vec2d pt2 = (idx_point + 1 == contour_src.size() ? contour_src.points.front() : contour_src.points[idx_point + 1]).cast(); - const Vec2d pt = lerp(pt1, pt2, it->first.t); - map_infill_end_point_to_boundary[it->second] = std::make_pair(idx_contour, contour_dst.size()); - contour_dst.emplace_back(pt.cast()); + const Polyline &infill_line = infill_ordered[it->second / 2]; + const Point &pt = (it->second & 1) ? infill_line.points.back() : infill_line.points.front(); +#ifndef NDEBUG + { + const Vec2d pt1 = contour_src[idx_point].cast(); + const Vec2d pt2 = (idx_point + 1 == contour_src.size() ? contour_src.points.front() : contour_src.points[idx_point + 1]).cast(); + const Vec2d ptx = lerp(pt1, pt2, it->first.t); + assert(std::abs(pt.x() - pt.x()) < SCALED_EPSILON); + assert(std::abs(pt.y() - pt.y()) < SCALED_EPSILON); + } +#endif // NDEBUG + map_infill_end_point_to_boundary[it->second] = ContourIntersectionPoint{ idx_contour, contour_dst.size() }; + ContourIntersectionPoint *pthis = &map_infill_end_point_to_boundary[it->second]; + if (pprev) { + pprev->next_on_contour = pthis; + pthis->prev_on_contour = pprev; + } else + pfirst = pthis; + contour_intersection_points.emplace_back(pthis); + pprev = pthis; + //add new point here + contour_dst.emplace_back(pt); } + if (pprev != pfirst) { + pprev->next_on_contour = pfirst; + pfirst->prev_on_contour = pprev; + } } - // Parametrize the curve. - std::vector &contour_data = boundary_data[idx_contour]; - contour_data.reserve(contour_dst.size()); - contour_data.emplace_back(ContourPointData(0.f)); + // Parametrize the new boundary with the intersection points inserted. + std::vector &contour_params = boundary_params[idx_contour]; + contour_params.assign(contour_dst.size() + 1, 0.f); for (size_t i = 1; i < contour_dst.size(); ++ i) - contour_data.emplace_back(contour_data.back().param + (contour_dst[i].cast() - contour_dst[i - 1].cast()).norm()); - contour_data.front().param = contour_data.back().param + (contour_dst.back().cast() - contour_dst.front().cast()).norm(); + contour_params[i] = contour_params[i - 1] + (contour_dst[i].cast() - contour_dst[i - 1].cast()).norm(); + contour_params.back() = contour_params[contour_params.size() - 2] + (contour_dst.back().cast() - contour_dst.front().cast()).norm(); + // Map parameters from contour_params to boundary_intersection_points. + for (ContourIntersectionPoint *ip : contour_intersection_points) + ip->param = contour_params[ip->point_idx]; + // and measure distance to the previous and next intersection point. + const float contour_length = contour_params.back(); + for (ContourIntersectionPoint *ip : contour_intersection_points) { + ip->contour_not_taken_length_prev = closed_contour_distance_ccw(ip->prev_on_contour->param, ip->param, contour_length); + ip->contour_not_taken_length_next = closed_contour_distance_ccw(ip->param, ip->next_on_contour->param, contour_length); + } } - assert(boundary.size() == boundary_src.num_contours()); + assert(boundary.size() == boundary_src.size()); #if 0 // Adaptive Cubic Infill produces infill lines, which not always end at the outer boundary. assert(std::all_of(map_infill_end_point_to_boundary.begin(), map_infill_end_point_to_boundary.end(), - [&boundary](const std::pair &contour_point) { - return contour_point.first < boundary.size() && contour_point.second < boundary[contour_point.first].size(); + [&boundary](const ContourIntersectionPoint &contour_point) { + return contour_point.contour_idx < boundary.size() && contour_point.point_idx < boundary[contour_point.contour_idx].size(); })); #endif - } - // Mark the points and segments of split boundary as consumed if they are very close to some of the infill line. - { - // @supermerill used 2. * scale_(spacing) - const double clip_distance = 3. * scale_(spacing); - const double distance_colliding = 1.1 * scale_(spacing); - mark_boundary_segments_touching_infill(boundary, boundary_data, bbox, infill_ordered, clip_distance, distance_colliding); + // Mark the points and segments of split boundary as consumed if they are very close to some of the infill line. + { + // @supermerill used 2. * scale_(spacing) + const double clip_distance = 1.7 * scale_(spacing); + // Allow a bit of overlap. This value must be slightly higher than the overlap of FillAdaptive, otherwise + // the anchors of the adaptive infill will mask the other side of the perimeter line. + // (see connect_lines_using_hooks() in FillAdaptive.cpp) + const double distance_colliding = 0.8 * scale_(spacing); + mark_boundary_segments_touching_infill(boundary, boundary_params, boundary_intersection_points, bbox, infill_ordered, clip_distance, distance_colliding); + } } // Connection from end of one infill line to the start of another infill line. //const float length_max = scale_(spacing); -// const float length_max = scale_((2. / params.density) * spacing); - const float length_max = scale_((1000. / params.density) * spacing); +// const auto length_max = float(scale_((2. / params.density) * spacing)); + const auto length_max = float(scale_((1000. / params.density) * spacing)); std::vector merged_with(infill_ordered.size()); - for (size_t i = 0; i < merged_with.size(); ++ i) - merged_with[i] = i; + std::iota(merged_with.begin(), merged_with.end(), 0); struct ConnectionCost { ConnectionCost(size_t idx_first, double cost, bool reversed) : idx_first(idx_first), cost(cost), reversed(reversed) {} size_t idx_first; @@ -935,82 +1213,204 @@ void Fill::connect_infill(Polylines &&infill_ordered, const ExPolygon &boundary_ for (size_t idx_chain = 1; idx_chain < infill_ordered.size(); ++ idx_chain) { const Polyline &pl1 = infill_ordered[idx_chain - 1]; const Polyline &pl2 = infill_ordered[idx_chain]; - const std::pair *cp1 = &map_infill_end_point_to_boundary[(idx_chain - 1) * 2 + 1]; - const std::pair *cp2 = &map_infill_end_point_to_boundary[idx_chain * 2]; - if (cp1->first != boundary_idx_unconnected && cp1->first == cp2->first) { + const ContourIntersectionPoint *cp1 = &map_infill_end_point_to_boundary[(idx_chain - 1) * 2 + 1]; + const ContourIntersectionPoint *cp2 = &map_infill_end_point_to_boundary[idx_chain * 2]; + if (cp1->contour_idx != boundary_idx_unconnected && cp1->contour_idx == cp2->contour_idx) { // End points on the same contour. Try to connect them. - const std::vector &contour_data = boundary_data[cp1->first]; - float param_lo = (cp1->second == 0) ? 0.f : contour_data[cp1->second].param; - float param_hi = (cp2->second == 0) ? 0.f : contour_data[cp2->second].param; - float param_end = contour_data.front().param; - bool reversed = false; - if (param_lo > param_hi) { - std::swap(param_lo, param_hi); - reversed = true; - } - assert(param_lo >= 0.f && param_lo <= param_end); - assert(param_hi >= 0.f && param_hi <= param_end); - double len = param_hi - param_lo; - if (len < length_max) - connections_sorted.emplace_back(idx_chain - 1, len, reversed); - len = param_lo + param_end - param_hi; - if (len < length_max) - connections_sorted.emplace_back(idx_chain - 1, len, ! reversed); + std::pair len = path_lengths_along_contour(cp1, cp2, boundary_params[cp1->contour_idx].back()); + if (len.first < length_max) + connections_sorted.emplace_back(idx_chain - 1, len.first, false); + if (len.second < length_max) + connections_sorted.emplace_back(idx_chain - 1, len.second, true); } } std::sort(connections_sorted.begin(), connections_sorted.end(), [](const ConnectionCost& l, const ConnectionCost& r) { return l.cost < r.cost; }); - size_t idx_chain_last = 0; - for (ConnectionCost &connection_cost : connections_sorted) { - const std::pair *cp1 = &map_infill_end_point_to_boundary[connection_cost.idx_first * 2 + 1]; - const std::pair *cp1prev = cp1 - 1; - const std::pair *cp2 = &map_infill_end_point_to_boundary[(connection_cost.idx_first + 1) * 2]; - const std::pair *cp2next = cp2 + 1; - assert(cp1->first == cp2->first && cp1->first != boundary_idx_unconnected); - std::vector &contour_data = boundary_data[cp1->first]; - if (connection_cost.reversed) - std::swap(cp1, cp2); - // Mark the the other end points of the segments to be taken as consumed temporarily, so they will not be crossed - // by the new connection line. - bool prev_marked = false; - bool next_marked = false; - if (cp1prev->first == cp1->first && ! contour_data[cp1prev->second].point_consumed) { - contour_data[cp1prev->second].point_consumed = true; - prev_marked = true; - } - if (cp2next->first == cp1->first && ! contour_data[cp2next->second].point_consumed) { - contour_data[cp2next->second].point_consumed = true; - next_marked = true; - } - if (could_take(contour_data, cp1->second, cp2->second)) { - // Indices of the polygons to be connected. - size_t idx_first = connection_cost.idx_first; - size_t idx_second = idx_first + 1; - for (size_t last = idx_first;;) { - size_t lower = merged_with[last]; - if (lower == last) { - merged_with[idx_first] = lower; - idx_first = lower; - break; - } - last = lower; - } - // Connect the two polygons using the boundary contour. - take(infill_ordered[idx_first], std::move(infill_ordered[idx_second]), boundary[cp1->first], contour_data, cp1->second, cp2->second, connection_cost.reversed); - // Mark the second polygon as merged with the first one. - merged_with[idx_second] = merged_with[idx_first]; - } - if (prev_marked) - contour_data[cp1prev->second].point_consumed = false; - if (next_marked) - contour_data[cp2next->second].point_consumed = false; + auto get_and_update_merged_with = [&merged_with](size_t polyline_idx) -> size_t { + for (size_t last = polyline_idx;;) { + size_t lower = merged_with[last]; + assert(lower <= last); + if (lower == last) { + merged_with[polyline_idx] = last; + return last; + } + last = lower; + } + assert(false); + return std::numeric_limits::max(); + }; + + const float line_half_width = 0.5f * scale_(spacing); + +#if 0 + for (ConnectionCost &connection_cost : connections_sorted) { + ContourIntersectionPoint *cp1 = &map_infill_end_point_to_boundary[connection_cost.idx_first * 2 + 1]; + ContourIntersectionPoint *cp2 = &map_infill_end_point_to_boundary[(connection_cost.idx_first + 1) * 2]; + assert(cp1 != cp2); + assert(cp1->contour_idx == cp2->contour_idx && cp1->contour_idx != boundary_idx_unconnected); + if (cp1->consumed || cp2->consumed) + continue; + const float length = connection_cost.cost; + bool could_connect; + { + // cp1, cp2 sorted CCW. + ContourIntersectionPoint *cp_low = connection_cost.reversed ? cp2 : cp1; + ContourIntersectionPoint *cp_high = connection_cost.reversed ? cp1 : cp2; + assert(std::abs(length - closed_contour_distance_ccw(cp_low->param, cp_high->param, boundary_params[cp1->contour_idx].back())) < SCALED_EPSILON); + could_connect = ! cp_low->next_trimmed && ! cp_high->prev_trimmed; + if (could_connect && cp_low->next_on_contour != cp_high) { + // Other end of cp1, may or may not be on the same contour as cp1. + const ContourIntersectionPoint *cp1prev = cp1 - 1; + // Other end of cp2, may or may not be on the same contour as cp2. + const ContourIntersectionPoint *cp2next = cp2 + 1; + for (auto *cp = cp_low->next_on_contour; cp != cp_high; cp = cp->next_on_contour) + if (cp->consumed || cp == cp1prev || cp == cp2next || cp->prev_trimmed || cp->next_trimmed) { + could_connect = false; + break; + } + } + } + // Indices of the polylines to be connected by a perimeter segment. + size_t idx_first = connection_cost.idx_first; + size_t idx_second = idx_first + 1; + idx_first = get_and_update_merged_with(idx_first); + assert(idx_first < idx_second); + assert(idx_second == merged_with[idx_second]); + if (could_connect && length < anchor_length * 2.5) { + // Take the complete contour. + // Connect the two polygons using the boundary contour. + take(infill_ordered[idx_first], infill_ordered[idx_second], boundary[cp1->contour_idx], cp1, cp2, connection_cost.reversed); + // Mark the second polygon as merged with the first one. + merged_with[idx_second] = merged_with[idx_first]; + infill_ordered[idx_second].points.clear(); + } else { + // Try to connect cp1 resp. cp2 with a piece of perimeter line. + take_limited(infill_ordered[idx_first], boundary[cp1->contour_idx], boundary_params[cp1->contour_idx], cp1, cp2, connection_cost.reversed, anchor_length, line_half_width); + take_limited(infill_ordered[idx_second], boundary[cp1->contour_idx], boundary_params[cp1->contour_idx], cp2, cp1, ! connection_cost.reversed, anchor_length, line_half_width); + } } - polylines_out.reserve(polylines_out.size() + std::count_if(infill_ordered.begin(), infill_ordered.end(), [](const Polyline &pl) { return ! pl.empty(); })); +#endif + + struct Arc { + ContourIntersectionPoint *intersection; + float arc_length; + }; + std::vector arches; + arches.reserve(map_infill_end_point_to_boundary.size()); + for (ContourIntersectionPoint &cp : map_infill_end_point_to_boundary) + if (! cp.contour_idx != boundary_idx_unconnected && cp.next_on_contour != &cp && cp.could_connect_next()) + arches.push_back({ &cp, path_length_along_contour_ccw(&cp, cp.next_on_contour, boundary_params[cp.contour_idx].back()) }); + std::sort(arches.begin(), arches.end(), [](const auto &l, const auto &r) { return l.arc_length < r.arc_length; }); + + for (Arc &arc : arches) + if (! arc.intersection->consumed && ! arc.intersection->next_on_contour->consumed) { + // Indices of the polylines to be connected by a perimeter segment. + ContourIntersectionPoint *cp1 = arc.intersection; + ContourIntersectionPoint *cp2 = arc.intersection->next_on_contour; + size_t polyline_idx1 = get_and_update_merged_with(((cp1 - map_infill_end_point_to_boundary.data()) / 2)); + size_t polyline_idx2 = get_and_update_merged_with(((cp2 - map_infill_end_point_to_boundary.data()) / 2)); + const Points &contour = boundary[cp1->contour_idx]; + const std::vector &contour_params = boundary_params[cp1->contour_idx]; + if (polyline_idx1 != polyline_idx2) { + Polyline &polyline1 = infill_ordered[polyline_idx1]; + Polyline &polyline2 = infill_ordered[polyline_idx2]; + if (arc.arc_length < anchor_length * 2.5) { + // Not closing a loop, connecting the lines. + assert(contour[cp1->point_idx] == polyline1.points.front() || contour[cp1->point_idx] == polyline1.points.back()); + if (contour[cp1->point_idx] == polyline1.points.front()) + polyline1.reverse(); + assert(contour[cp2->point_idx] == polyline2.points.front() || contour[cp2->point_idx] == polyline2.points.back()); + if (contour[cp2->point_idx] == polyline2.points.back()) + polyline2.reverse(); + take(polyline1, polyline2, contour, cp1, cp2, false); + // Mark the second polygon as merged with the first one. + if (polyline_idx2 < polyline_idx1) { + polyline2 = std::move(polyline1); + polyline1.points.clear(); + merged_with[polyline_idx1] = merged_with[polyline_idx2]; + } else { + polyline2.points.clear(); + merged_with[polyline_idx2] = merged_with[polyline_idx1]; + } + } else { + // Move along the perimeter, but don't take the whole arc. + take_limited(polyline1, contour, contour_params, cp1, cp2, false, anchor_length, line_half_width); + take_limited(polyline2, contour, contour_params, cp2, cp1, true, anchor_length, line_half_width); + } + } + } + + // Connect the remaining open infill lines to the perimeter lines if possible. + for (ContourIntersectionPoint &contour_point : map_infill_end_point_to_boundary) + if (! contour_point.consumed && contour_point.contour_idx != boundary_idx_unconnected) { + const Points &contour = boundary[contour_point.contour_idx]; + const std::vector &contour_params = boundary_params[contour_point.contour_idx]; + const size_t contour_pt_idx = contour_point.point_idx; + + float lprev = contour_point.could_connect_prev() ? + path_length_along_contour_ccw(contour_point.prev_on_contour, &contour_point, contour_params.back()) : + std::numeric_limits::max(); + float lnext = contour_point.could_connect_next() ? + path_length_along_contour_ccw(&contour_point, contour_point.next_on_contour, contour_params.back()) : + std::numeric_limits::max(); + size_t polyline_idx = get_and_update_merged_with(((&contour_point - map_infill_end_point_to_boundary.data()) / 2)); + Polyline &polyline = infill_ordered[polyline_idx]; + assert(! polyline.empty()); + assert(contour[contour_point.point_idx] == polyline.points.front() || contour[contour_point.point_idx] == polyline.points.back()); + bool connected = false; + for (float l : { std::min(lprev, lnext), std::max(lprev, lnext) }) { + if (l == std::numeric_limits::max() || l > anchor_length * 2.5) + break; + // Take the complete contour. + bool reversed = l == lprev; + ContourIntersectionPoint *cp2 = reversed ? contour_point.prev_on_contour : contour_point.next_on_contour; + // Identify which end of the polyline touches the boundary. + size_t polyline_idx2 = get_and_update_merged_with(((cp2 - map_infill_end_point_to_boundary.data()) / 2)); + if (polyline_idx == polyline_idx2) + // Try the other side. + continue; + // Not closing a loop. + if (contour[contour_point.point_idx] == polyline.points.front()) + polyline.reverse(); + Polyline &polyline2 = infill_ordered[polyline_idx2]; + assert(! polyline.empty()); + assert(contour[cp2->point_idx] == polyline2.points.front() || contour[cp2->point_idx] == polyline2.points.back()); + if (contour[cp2->point_idx] == polyline2.points.back()) + polyline2.reverse(); + take(polyline, polyline2, contour, &contour_point, cp2, reversed); + if (polyline_idx < polyline_idx2) { + // Mark the second polyline as merged with the first one. + merged_with[polyline_idx2] = polyline_idx; + polyline2.points.clear(); + } else { + // Mark the first polyline as merged with the second one. + merged_with[polyline_idx] = polyline_idx2; + polyline2 = std::move(polyline); + polyline.points.clear(); + } + connected = true; + break; + } + if (! connected) { + // Which to take? One could optimize for: + // 1) Shortest path + // 2) Hook length + // ... + // Let's take the longer now, as this improves the chance of another hook to be placed on the other side of this contour point. + float l = std::max(contour_point.contour_not_taken_length_prev, contour_point.contour_not_taken_length_next); + if (l > SCALED_EPSILON) { + if (contour_point.contour_not_taken_length_prev > contour_point.contour_not_taken_length_next) + take_limited(polyline, contour, contour_params, &contour_point, contour_point.prev_on_contour, true, anchor_length, line_half_width); + else + take_limited(polyline, contour, contour_params, &contour_point, contour_point.next_on_contour, false, anchor_length, line_half_width); + } + } + } + + polylines_out.reserve(polylines_out.size() + std::count_if(infill_ordered.begin(), infill_ordered.end(), [](const Polyline &pl) { return ! pl.empty(); })); for (Polyline &pl : infill_ordered) if (! pl.empty()) polylines_out.emplace_back(std::move(pl)); } -#endif - } // namespace Slic3r diff --git a/src/libslic3r/Fill/FillBase.hpp b/src/libslic3r/Fill/FillBase.hpp index e25480fa57..4ebad7a8d9 100644 --- a/src/libslic3r/Fill/FillBase.hpp +++ b/src/libslic3r/Fill/FillBase.hpp @@ -33,12 +33,15 @@ public: struct FillParams { bool full_infill() const { return density > 0.9999f; } + // Don't connect the fill lines around the inner perimeter. + bool dont_connect() const { return anchor_length < 0.05f; } // Fill density, fraction in <0, 1> float density { 0.f }; - // Don't connect the fill lines around the inner perimeter. - bool dont_connect { false }; + // Length of an infill anchor along the perimeter. + // 1000mm is roughly the maximum length line that fits into a 32bit coord_t. + float anchor_length { 1000.f }; // Don't adjust spacing to fill the space evenly. bool dont_adjust { true }; @@ -80,6 +83,7 @@ public: public: virtual ~Fill() {} + virtual Fill* clone() const = 0; static Fill* new_from_type(const InfillPattern type); static Fill* new_from_type(const std::string &type); @@ -116,7 +120,7 @@ protected: const FillParams & /* params */, unsigned int /* thickness_layers */, const std::pair & /* direction */, - ExPolygon & /* expolygon */, + ExPolygon /* expolygon */, Polylines & /* polylines_out */) {}; virtual float _layer_angle(size_t idx) const { return (idx & 1) ? float(M_PI/2.) : 0; } @@ -124,7 +128,9 @@ protected: virtual std::pair _infill_direction(const Surface *surface) const; public: - static void connect_infill(Polylines &&infill_ordered, const ExPolygon &boundary, Polylines &polylines_out, double spacing, const FillParams ¶ms); + static void connect_infill(Polylines &&infill_ordered, const ExPolygon &boundary, Polylines &polylines_out, const double spacing, const FillParams ¶ms); + static void connect_infill(Polylines &&infill_ordered, const Polygons &boundary, const BoundingBox& bbox, Polylines &polylines_out, const double spacing, const FillParams ¶ms); + static void connect_infill(Polylines &&infill_ordered, const std::vector &boundary, const BoundingBox &bbox, Polylines &polylines_out, double spacing, const FillParams ¶ms); static coord_t _adjust_solid_spacing(const coord_t width, const coord_t distance); diff --git a/src/libslic3r/Fill/FillConcentric.cpp b/src/libslic3r/Fill/FillConcentric.cpp index 8a3a7ea89d..5870381783 100644 --- a/src/libslic3r/Fill/FillConcentric.cpp +++ b/src/libslic3r/Fill/FillConcentric.cpp @@ -10,7 +10,7 @@ void FillConcentric::_fill_surface_single( const FillParams ¶ms, unsigned int thickness_layers, const std::pair &direction, - ExPolygon &expolygon, + ExPolygon expolygon, Polylines &polylines_out) { // no rotation is supported for this infill pattern diff --git a/src/libslic3r/Fill/FillConcentric.hpp b/src/libslic3r/Fill/FillConcentric.hpp index 1286858ea4..04c2f4e31f 100644 --- a/src/libslic3r/Fill/FillConcentric.hpp +++ b/src/libslic3r/Fill/FillConcentric.hpp @@ -8,18 +8,18 @@ namespace Slic3r { class FillConcentric : public Fill { public: - virtual ~FillConcentric() {} + ~FillConcentric() override {} protected: - virtual Fill* clone() const { return new FillConcentric(*this); }; - virtual void _fill_surface_single( + Fill* clone() const override { return new FillConcentric(*this); }; + void _fill_surface_single( const FillParams ¶ms, unsigned int thickness_layers, const std::pair &direction, - ExPolygon &expolygon, - Polylines &polylines_out); + ExPolygon expolygon, + Polylines &polylines_out) override; - virtual bool no_sort() const { return true; } + bool no_sort() const override { return true; } }; } // namespace Slic3r diff --git a/src/libslic3r/Fill/FillGyroid.cpp b/src/libslic3r/Fill/FillGyroid.cpp index 964b87cefc..5cbfed57cf 100644 --- a/src/libslic3r/Fill/FillGyroid.cpp +++ b/src/libslic3r/Fill/FillGyroid.cpp @@ -37,12 +37,12 @@ static inline Polyline make_wave( double period = points.back()(0); if (width != period) // do not extend if already truncated { - points.reserve(one_period.size() * floor(width / period)); + points.reserve(one_period.size() * size_t(floor(width / period))); points.pop_back(); - int n = points.size(); + size_t n = points.size(); do { - points.emplace_back(Vec2d(points[points.size()-n](0) + period, points[points.size()-n](1))); + points.emplace_back(points[points.size()-n].x() + period, points[points.size()-n].y()); } while (points.back()(0) < width - EPSILON); points.emplace_back(Vec2d(width, f(width, z_sin, z_cos, vertical, flip))); @@ -67,7 +67,7 @@ static std::vector make_one_period(double width, double scaleFactor, doub std::vector points; double dx = M_PI_2; // exact coordinates on main inflexion lobes double limit = std::min(2*M_PI, width); - points.reserve(ceil(limit / tolerance / 3)); + points.reserve(coord_t(ceil(limit / tolerance / 3))); for (double x = 0.; x < limit - EPSILON; x += dx) { points.emplace_back(Vec2d(x, f(x, z_sin, z_cos, vertical, flip))); @@ -152,10 +152,10 @@ void FillGyroid::_fill_surface_single( const FillParams ¶ms, unsigned int thickness_layers, const std::pair &direction, - ExPolygon &expolygon, + ExPolygon expolygon, Polylines &polylines_out) { - float infill_angle = this->angle + (CorrectionAngle * 2*M_PI) / 360.; + auto infill_angle = float(this->angle + (CorrectionAngle * 2*M_PI) / 360.); if(std::abs(infill_angle) >= EPSILON) expolygon.rotate(-infill_angle); @@ -190,11 +190,10 @@ void FillGyroid::_fill_surface_single( polylines.end()); if (! polylines.empty()) { - polylines = chain_polylines(polylines); // connect lines size_t polylines_out_first_idx = polylines_out.size(); - if (params.dont_connect) - append(polylines_out, std::move(polylines)); + if (params.dont_connect()) + append(polylines_out, chain_polylines(polylines)); else this->connect_infill(std::move(polylines), expolygon, polylines_out, this->spacing, params); diff --git a/src/libslic3r/Fill/FillGyroid.hpp b/src/libslic3r/Fill/FillGyroid.hpp index 37babb25e3..ac66dfca98 100644 --- a/src/libslic3r/Fill/FillGyroid.hpp +++ b/src/libslic3r/Fill/FillGyroid.hpp @@ -11,10 +11,10 @@ class FillGyroid : public Fill { public: FillGyroid() {} - virtual Fill* clone() const { return new FillGyroid(*this); } + Fill* clone() const override { return new FillGyroid(*this); } // require bridge flow since most of this pattern hangs in air - virtual bool use_bridge_flow() const { return false; } + bool use_bridge_flow() const override { return false; } // Correction applied to regular infill angle to maximize printing // speed in default configuration (degrees) @@ -28,12 +28,12 @@ public: protected: - virtual void _fill_surface_single( + void _fill_surface_single( const FillParams ¶ms, unsigned int thickness_layers, const std::pair &direction, - ExPolygon &expolygon, - Polylines &polylines_out); + ExPolygon expolygon, + Polylines &polylines_out) override; }; } // namespace Slic3r diff --git a/src/libslic3r/Fill/FillHoneycomb.cpp b/src/libslic3r/Fill/FillHoneycomb.cpp index 948af182bb..5e70000888 100644 --- a/src/libslic3r/Fill/FillHoneycomb.cpp +++ b/src/libslic3r/Fill/FillHoneycomb.cpp @@ -10,7 +10,7 @@ void FillHoneycomb::_fill_surface_single( const FillParams ¶ms, unsigned int thickness_layers, const std::pair &direction, - ExPolygon &expolygon, + ExPolygon expolygon, Polylines &polylines_out) { // cache hexagons math @@ -18,21 +18,21 @@ void FillHoneycomb::_fill_surface_single( Cache::iterator it_m = this->cache.find(cache_id); if (it_m == this->cache.end()) { it_m = this->cache.insert(it_m, std::pair(cache_id, CacheData())); - CacheData &m = it_m->second; - coord_t min_spacing = scale_(this->spacing); - m.distance = min_spacing / params.density; - m.hex_side = m.distance / (sqrt(3)/2); - m.hex_width = m.distance * 2; // $m->{hex_width} == $m->{hex_side} * sqrt(3); - coord_t hex_height = m.hex_side * 2; - m.pattern_height = hex_height + m.hex_side; - m.y_short = m.distance * sqrt(3)/3; - m.x_offset = min_spacing / 2; - m.y_offset = m.x_offset * sqrt(3)/3; - m.hex_center = Point(m.hex_width/2, m.hex_side); + CacheData &m = it_m->second; + coord_t min_spacing = coord_t(scale_(this->spacing)); + m.distance = coord_t(min_spacing / params.density); + m.hex_side = coord_t(m.distance / (sqrt(3)/2)); + m.hex_width = m.distance * 2; // $m->{hex_width} == $m->{hex_side} * sqrt(3); + coord_t hex_height = m.hex_side * 2; + m.pattern_height = hex_height + m.hex_side; + m.y_short = coord_t(m.distance * sqrt(3)/3); + m.x_offset = min_spacing / 2; + m.y_offset = coord_t(m.x_offset * sqrt(3)/3); + m.hex_center = Point(m.hex_width/2, m.hex_side); } CacheData &m = it_m->second; - Polygons polygons; + Polylines all_polylines; { // adjust actual bounding box to the nearest multiple of our hex pattern // and align it so that it matches across layers @@ -52,7 +52,7 @@ void FillHoneycomb::_fill_surface_single( coord_t x = bounding_box.min(0); while (x <= bounding_box.max(0)) { - Polygon p; + Polyline p; coord_t ax[2] = { x + m.x_offset, x + m.distance - m.x_offset }; for (size_t i = 0; i < 2; ++ i) { std::reverse(p.points.begin(), p.points.end()); // turn first half upside down @@ -69,55 +69,15 @@ void FillHoneycomb::_fill_surface_single( x += m.distance; } p.rotate(-direction.first, m.hex_center); - polygons.push_back(p); + all_polylines.push_back(p); } } - if (params.complete || true) { - // we were requested to complete each loop; - // in this case we don't try to make more continuous paths - Polygons polygons_trimmed = intersection((Polygons)expolygon, polygons); - for (Polygons::iterator it = polygons_trimmed.begin(); it != polygons_trimmed.end(); ++ it) - polylines_out.push_back(it->split_at_first_point()); - } else { - // consider polygons as polylines without re-appending the initial point: - // this cuts the last segment on purpose, so that the jump to the next - // path is more straight - Polylines paths; - { - Polylines p; - for (Polygon &poly : polygons) - p.emplace_back(poly.points); - paths = intersection_pl(p, to_polygons(expolygon)); - } - - // connect paths - if (! paths.empty()) { // prevent calling leftmost_point() on empty collections - Polylines chained = chain_polylines(std::move(paths)); - assert(paths.empty()); - paths.clear(); - for (Polyline &path : chained) { - if (! paths.empty()) { - // distance between first point of this path and last point of last path - double distance = (path.first_point() - paths.back().last_point()).cast().norm(); - if (distance <= m.hex_width) { - paths.back().points.insert(paths.back().points.end(), path.points.begin(), path.points.end()); - continue; - } - } - // Don't connect the paths. - paths.push_back(std::move(path)); - } - } - - // clip paths again to prevent connection segments from crossing the expolygon boundaries - paths = intersection_pl(paths, to_polygons(offset_ex(expolygon, SCALED_EPSILON))); - // Move the polylines to the output, avoid a deep copy. - size_t j = polylines_out.size(); - polylines_out.resize(j + paths.size(), Polyline()); - for (size_t i = 0; i < paths.size(); ++ i) - std::swap(polylines_out[j ++], paths[i]); - } + all_polylines = intersection_pl(std::move(all_polylines), to_polygons(expolygon)); + if (params.dont_connect() || all_polylines.size() <= 1) + append(polylines_out, chain_polylines(std::move(all_polylines))); + else + connect_infill(std::move(all_polylines), expolygon, polylines_out, this->spacing, params); } } // namespace Slic3r diff --git a/src/libslic3r/Fill/FillHoneycomb.hpp b/src/libslic3r/Fill/FillHoneycomb.hpp index 4717602d49..707e976fd9 100644 --- a/src/libslic3r/Fill/FillHoneycomb.hpp +++ b/src/libslic3r/Fill/FillHoneycomb.hpp @@ -12,16 +12,16 @@ namespace Slic3r { class FillHoneycomb : public Fill { public: - virtual ~FillHoneycomb() {} + ~FillHoneycomb() override {} protected: - virtual Fill* clone() const { return new FillHoneycomb(*this); }; - virtual void _fill_surface_single( + Fill* clone() const override { return new FillHoneycomb(*this); }; + void _fill_surface_single( const FillParams ¶ms, unsigned int thickness_layers, const std::pair &direction, - ExPolygon &expolygon, - Polylines &polylines_out); + ExPolygon expolygon, + Polylines &polylines_out) override; // Caching the struct CacheID @@ -49,7 +49,7 @@ protected: typedef std::map Cache; Cache cache; - virtual float _layer_angle(size_t idx) const { return float(M_PI/3.) * (idx % 3); } + float _layer_angle(size_t idx) const override { return float(M_PI/3.) * (idx % 3); } }; } // namespace Slic3r diff --git a/src/libslic3r/Fill/FillLine.cpp b/src/libslic3r/Fill/FillLine.cpp new file mode 100644 index 0000000000..1cb9b2244d --- /dev/null +++ b/src/libslic3r/Fill/FillLine.cpp @@ -0,0 +1,122 @@ +#include "../ClipperUtils.hpp" +#include "../ExPolygon.hpp" +#include "../ShortestPath.hpp" +#include "../Surface.hpp" + +#include "FillLine.hpp" + +namespace Slic3r { + +void FillLine::_fill_surface_single( + const FillParams ¶ms, + unsigned int thickness_layers, + const std::pair &direction, + ExPolygon expolygon, + Polylines &polylines_out) +{ + // rotate polygons so that we can work with vertical lines here + expolygon.rotate(- direction.first); + + this->_min_spacing = scale_(this->spacing); + assert(params.density > 0.0001f && params.density <= 1.f); + this->_line_spacing = coord_t(coordf_t(this->_min_spacing) / params.density); + this->_diagonal_distance = this->_line_spacing * 2; + this->_line_oscillation = this->_line_spacing - this->_min_spacing; // only for Line infill + BoundingBox bounding_box = expolygon.contour.bounding_box(); + + // define flow spacing according to requested density + if (params.density > 0.9999f && !params.dont_adjust) { + this->_line_spacing = this->_adjust_solid_spacing(bounding_box.size()(0), this->_line_spacing); + this->spacing = unscale(this->_line_spacing); + } else { + // extend bounding box so that our pattern will be aligned with other layers + // Transform the reference point to the rotated coordinate system. + bounding_box.merge(_align_to_grid( + bounding_box.min, + Point(this->_line_spacing, this->_line_spacing), + direction.second.rotated(- direction.first))); + } + + // generate the basic pattern + coord_t x_max = bounding_box.max(0) + SCALED_EPSILON; + Lines lines; + for (coord_t x = bounding_box.min(0); x <= x_max; x += this->_line_spacing) + lines.push_back(this->_line(lines.size(), x, bounding_box.min(1), bounding_box.max(1))); + + // clip paths against a slightly larger expolygon, so that the first and last paths + // are kept even if the expolygon has vertical sides + // the minimum offset for preventing edge lines from being clipped is SCALED_EPSILON; + // however we use a larger offset to support expolygons with slightly skewed sides and + // not perfectly straight + //FIXME Vojtech: Update the intersecton function to work directly with lines. + Polylines polylines_src; + polylines_src.reserve(lines.size()); + for (Lines::const_iterator it = lines.begin(); it != lines.end(); ++ it) { + polylines_src.push_back(Polyline()); + Points &pts = polylines_src.back().points; + pts.reserve(2); + pts.push_back(it->a); + pts.push_back(it->b); + } + Polylines polylines = intersection_pl(polylines_src, offset(to_polygons(expolygon), scale_(0.02)), false); + + // FIXME Vojtech: This is only performed for horizontal lines, not for the vertical lines! + const float INFILL_OVERLAP_OVER_SPACING = 0.3f; + // How much to extend an infill path from expolygon outside? + coord_t extra = coord_t(floor(this->_min_spacing * INFILL_OVERLAP_OVER_SPACING + 0.5f)); + for (Polylines::iterator it_polyline = polylines.begin(); it_polyline != polylines.end(); ++ it_polyline) { + Point *first_point = &it_polyline->points.front(); + Point *last_point = &it_polyline->points.back(); + if (first_point->y() > last_point->y()) + std::swap(first_point, last_point); + first_point->y() -= extra; + last_point->y() += extra; + } + + size_t n_polylines_out_old = polylines_out.size(); + + // connect lines + if (! params.dont_connect() && ! polylines.empty()) { // prevent calling leftmost_point() on empty collections + // offset the expolygon by max(min_spacing/2, extra) + ExPolygon expolygon_off; + { + ExPolygons expolygons_off = offset_ex(expolygon, this->_min_spacing/2); + if (! expolygons_off.empty()) { + // When expanding a polygon, the number of islands could only shrink. Therefore the offset_ex shall generate exactly one expanded island for one input island. + assert(expolygons_off.size() == 1); + std::swap(expolygon_off, expolygons_off.front()); + } + } + bool first = true; + for (Polyline &polyline : chain_polylines(std::move(polylines))) { + if (! first) { + // Try to connect the lines. + Points &pts_end = polylines_out.back().points; + const Point &first_point = polyline.points.front(); + const Point &last_point = pts_end.back(); + // Distance in X, Y. + const Vector distance = last_point - first_point; + // TODO: we should also check that both points are on a fill_boundary to avoid + // connecting paths on the boundaries of internal regions + if (this->_can_connect(std::abs(distance(0)), std::abs(distance(1))) && + expolygon_off.contains(Line(last_point, first_point))) { + // Append the polyline. + pts_end.insert(pts_end.end(), polyline.points.begin(), polyline.points.end()); + continue; + } + } + // The lines cannot be connected. + polylines_out.emplace_back(std::move(polyline)); + first = false; + } + } + + // paths must be rotated back + for (Polylines::iterator it = polylines_out.begin() + n_polylines_out_old; it != polylines_out.end(); ++ it) { + // No need to translate, the absolute position is irrelevant. + // it->translate(- direction.second(0), - direction.second(1)); + it->rotate(direction.first); + } +} + +} // namespace Slic3r diff --git a/src/libslic3r/Fill/FillLine.hpp b/src/libslic3r/Fill/FillLine.hpp new file mode 100644 index 0000000000..b66309e1fe --- /dev/null +++ b/src/libslic3r/Fill/FillLine.hpp @@ -0,0 +1,49 @@ +#ifndef slic3r_FillLine_hpp_ +#define slic3r_FillLine_hpp_ + +#include "../libslic3r.h" + +#include "FillBase.hpp" + +namespace Slic3r { + +class Surface; + +class FillLine : public Fill +{ +public: + Fill* clone() const override { return new FillLine(*this); }; + ~FillLine() override = default; + +protected: + void _fill_surface_single( + const FillParams ¶ms, + unsigned int thickness_layers, + const std::pair &direction, + ExPolygon expolygon, + Polylines &polylines_out) override; + + coord_t _min_spacing; + coord_t _line_spacing; + // distance threshold for allowing the horizontal infill lines to be connected into a continuous path + coord_t _diagonal_distance; + // only for line infill + coord_t _line_oscillation; + + Line _line(int i, coord_t x, coord_t y_min, coord_t y_max) const { + coord_t osc = (i & 1) ? this->_line_oscillation : 0; + return Line(Point(x - osc, y_min), Point(x + osc, y_max)); + } + + bool _can_connect(coord_t dist_X, coord_t dist_Y) + { + coord_t TOLERANCE = 10 * SCALED_EPSILON; + return (dist_X >= (this->_line_spacing - this->_line_oscillation) - TOLERANCE) + && (dist_X <= (this->_line_spacing + this->_line_oscillation) + TOLERANCE) + && (dist_Y <= this->_diagonal_distance); + } +}; + +}; // namespace Slic3r + +#endif // slic3r_FillLine_hpp_ diff --git a/src/libslic3r/Fill/FillPlanePath.cpp b/src/libslic3r/Fill/FillPlanePath.cpp index 7a322ce991..a7a33b13d7 100644 --- a/src/libslic3r/Fill/FillPlanePath.cpp +++ b/src/libslic3r/Fill/FillPlanePath.cpp @@ -1,4 +1,5 @@ #include "../ClipperUtils.hpp" +#include "../ShortestPath.hpp" #include "../Surface.hpp" #include "FillPlanePath.hpp" @@ -9,7 +10,7 @@ void FillPlanePath::_fill_surface_single( const FillParams ¶ms, unsigned int thickness_layers, const std::pair &direction, - ExPolygon &expolygon, + ExPolygon expolygon, Polylines &polylines_out) { expolygon.rotate(- direction.first); @@ -23,14 +24,14 @@ void FillPlanePath::_fill_surface_single( Point shift = this->_centered() ? bounding_box.center() : bounding_box.min; - expolygon.translate(-shift(0), -shift(1)); - bounding_box.translate(-shift(0), -shift(1)); + expolygon.translate(-shift.x(), -shift.y()); + bounding_box.translate(-shift.x(), -shift.y()); Pointfs pts = _generate( - coord_t(ceil(coordf_t(bounding_box.min(0)) / distance_between_lines)), - coord_t(ceil(coordf_t(bounding_box.min(1)) / distance_between_lines)), - coord_t(ceil(coordf_t(bounding_box.max(0)) / distance_between_lines)), - coord_t(ceil(coordf_t(bounding_box.max(1)) / distance_between_lines))); + coord_t(ceil(coordf_t(bounding_box.min.x()) / distance_between_lines)), + coord_t(ceil(coordf_t(bounding_box.min.y()) / distance_between_lines)), + coord_t(ceil(coordf_t(bounding_box.max.x()) / distance_between_lines)), + coord_t(ceil(coordf_t(bounding_box.max.y()) / distance_between_lines))); Polylines polylines; if (pts.size() >= 2) { @@ -38,39 +39,24 @@ void FillPlanePath::_fill_surface_single( polylines.push_back(Polyline()); Polyline &polyline = polylines.back(); polyline.points.reserve(pts.size()); - for (Pointfs::iterator it = pts.begin(); it != pts.end(); ++ it) + for (const Vec2d &pt : pts) polyline.points.push_back(Point( - coord_t(floor((*it)(0) * distance_between_lines + 0.5)), - coord_t(floor((*it)(1) * distance_between_lines + 0.5)))); + coord_t(floor(pt.x() * distance_between_lines + 0.5)), + coord_t(floor(pt.y() * distance_between_lines + 0.5)))); // intersection(polylines_src, offset((Polygons)expolygon, scale_(0.02)), &polylines); - polylines = intersection_pl(polylines, to_polygons(expolygon)); - -/* - if (1) { - require "Slic3r/SVG.pm"; - print "Writing fill.svg\n"; - Slic3r::SVG::output("fill.svg", - no_arrows => 1, - polygons => \@$expolygon, - green_polygons => [ $bounding_box->polygon ], - polylines => [ $polyline ], - red_polylines => \@paths, - ); - } -*/ - + polylines = intersection_pl(std::move(polylines), to_polygons(expolygon)); + Polylines chained; + if (params.dont_connect() || params.density > 0.5 || polylines.size() <= 1) + chained = chain_polylines(std::move(polylines)); + else + connect_infill(std::move(polylines), expolygon, chained, this->spacing, params); // paths must be repositioned and rotated back - for (Polylines::iterator it = polylines.begin(); it != polylines.end(); ++ it) { - it->translate(shift(0), shift(1)); - it->rotate(direction.first); + for (Polyline &pl : chained) { + pl.translate(shift.x(), shift.y()); + pl.rotate(direction.first); } + append(polylines_out, std::move(chained)); } - - // Move the polylines to the output, avoid a deep copy. - size_t j = polylines_out.size(); - polylines_out.resize(j + polylines.size(), Polyline()); - for (size_t i = 0; i < polylines.size(); ++ i) - std::swap(polylines_out[j ++], polylines[i]); } // Follow an Archimedean spiral, in polar coordinates: r=a+b\theta @@ -85,13 +71,13 @@ Pointfs FillArchimedeanChords::_generate(coord_t min_x, coord_t min_y, coord_t m coordf_t r = 1; Pointfs out; //FIXME Vojtech: If used as a solid infill, there is a gap left at the center. - out.push_back(Vec2d(0, 0)); - out.push_back(Vec2d(1, 0)); + out.emplace_back(0, 0); + out.emplace_back(1, 0); while (r < rmax) { // Discretization angle to achieve a discretization error lower than RESOLUTION. theta += 2. * acos(1. - RESOLUTION / r); r = a + b * theta; - out.push_back(Vec2d(r * cos(theta), r * sin(theta))); + out.emplace_back(r * cos(theta), r * sin(theta)); } return out; } @@ -128,15 +114,12 @@ static inline Point hilbert_n_to_xy(const size_t n) ++ ndigits; } } - int state = (ndigits & 1) ? 4 : 0; -// int dirstate = (ndigits & 1) ? 0 : 4; + int state = (ndigits & 1) ? 4 : 0; coord_t x = 0; coord_t y = 0; for (int i = (int)ndigits - 1; i >= 0; -- i) { int digit = (n >> (i * 2)) & 3; state += digit; -// if (digit != 3) -// dirstate = state; // lowest non-3 digit x |= digit_to_x[state] << i; y |= digit_to_y[state] << i; state = next_state[state]; @@ -162,7 +145,7 @@ Pointfs FillHilbertCurve::_generate(coord_t min_x, coord_t min_y, coord_t max_x, line.reserve(sz2); for (size_t i = 0; i < sz2; ++ i) { Point p = hilbert_n_to_xy(i); - line.push_back(Vec2d(p(0) + min_x, p(1) + min_y)); + line.emplace_back(p.x() + min_x, p.y() + min_y); } return line; } @@ -175,27 +158,27 @@ Pointfs FillOctagramSpiral::_generate(coord_t min_x, coord_t min_y, coord_t max_ coordf_t r = 0; coordf_t r_inc = sqrt(2.); Pointfs out; - out.push_back(Vec2d(0, 0)); + out.emplace_back(0., 0.); while (r < rmax) { r += r_inc; coordf_t rx = r / sqrt(2.); coordf_t r2 = r + rx; - out.push_back(Vec2d( r, 0.)); - out.push_back(Vec2d( r2, rx)); - out.push_back(Vec2d( rx, rx)); - out.push_back(Vec2d( rx, r2)); - out.push_back(Vec2d(0., r)); - out.push_back(Vec2d(-rx, r2)); - out.push_back(Vec2d(-rx, rx)); - out.push_back(Vec2d(-r2, rx)); - out.push_back(Vec2d(-r, 0.)); - out.push_back(Vec2d(-r2, -rx)); - out.push_back(Vec2d(-rx, -rx)); - out.push_back(Vec2d(-rx, -r2)); - out.push_back(Vec2d(0., -r)); - out.push_back(Vec2d( rx, -r2)); - out.push_back(Vec2d( rx, -rx)); - out.push_back(Vec2d( r2+r_inc, -rx)); + out.emplace_back( r, 0.); + out.emplace_back( r2, rx); + out.emplace_back( rx, rx); + out.emplace_back( rx, r2); + out.emplace_back( 0., r); + out.emplace_back(-rx, r2); + out.emplace_back(-rx, rx); + out.emplace_back(-r2, rx); + out.emplace_back(- r, 0.); + out.emplace_back(-r2, -rx); + out.emplace_back(-rx, -rx); + out.emplace_back(-rx, -r2); + out.emplace_back( 0., -r); + out.emplace_back( rx, -r2); + out.emplace_back( rx, -rx); + out.emplace_back( r2+r_inc, -rx); } return out; } diff --git a/src/libslic3r/Fill/FillPlanePath.hpp b/src/libslic3r/Fill/FillPlanePath.hpp index 49fb2b387e..cf19a95f8e 100644 --- a/src/libslic3r/Fill/FillPlanePath.hpp +++ b/src/libslic3r/Fill/FillPlanePath.hpp @@ -16,17 +16,17 @@ namespace Slic3r { class FillPlanePath : public Fill { public: - virtual ~FillPlanePath() {} + ~FillPlanePath() override = default; protected: - virtual void _fill_surface_single( + void _fill_surface_single( const FillParams ¶ms, unsigned int thickness_layers, const std::pair &direction, - ExPolygon &expolygon, - Polylines &polylines_out); + ExPolygon expolygon, + Polylines &polylines_out) override; - virtual float _layer_angle(size_t idx) const { return 0.f; } + float _layer_angle(size_t idx) const override { return 0.f; } virtual bool _centered() const = 0; virtual Pointfs _generate(coord_t min_x, coord_t min_y, coord_t max_x, coord_t max_y) = 0; }; @@ -34,34 +34,34 @@ protected: class FillArchimedeanChords : public FillPlanePath { public: - virtual Fill* clone() const { return new FillArchimedeanChords(*this); }; - virtual ~FillArchimedeanChords() {} + Fill* clone() const override { return new FillArchimedeanChords(*this); }; + ~FillArchimedeanChords() override = default; protected: - virtual bool _centered() const { return true; } - virtual Pointfs _generate(coord_t min_x, coord_t min_y, coord_t max_x, coord_t max_y); + bool _centered() const override { return true; } + Pointfs _generate(coord_t min_x, coord_t min_y, coord_t max_x, coord_t max_y) override; }; class FillHilbertCurve : public FillPlanePath { public: - virtual Fill* clone() const { return new FillHilbertCurve(*this); }; - virtual ~FillHilbertCurve() {} + Fill* clone() const override { return new FillHilbertCurve(*this); }; + ~FillHilbertCurve() override = default; protected: - virtual bool _centered() const { return false; } - virtual Pointfs _generate(coord_t min_x, coord_t min_y, coord_t max_x, coord_t max_y); + bool _centered() const override { return false; } + Pointfs _generate(coord_t min_x, coord_t min_y, coord_t max_x, coord_t max_y) override; }; class FillOctagramSpiral : public FillPlanePath { public: - virtual Fill* clone() const { return new FillOctagramSpiral(*this); }; - virtual ~FillOctagramSpiral() {} + Fill* clone() const override { return new FillOctagramSpiral(*this); }; + ~FillOctagramSpiral() override = default; protected: - virtual bool _centered() const { return true; } - virtual Pointfs _generate(coord_t min_x, coord_t min_y, coord_t max_x, coord_t max_y); + bool _centered() const override { return true; } + Pointfs _generate(coord_t min_x, coord_t min_y, coord_t max_x, coord_t max_y) override; }; } // namespace Slic3r diff --git a/src/libslic3r/Fill/FillRectilinear.cpp b/src/libslic3r/Fill/FillRectilinear.cpp index 629e5b6f46..0a75b6729a 100644 --- a/src/libslic3r/Fill/FillRectilinear.cpp +++ b/src/libslic3r/Fill/FillRectilinear.cpp @@ -1,127 +1,2896 @@ +#include +#include + +#include +#include +#include +#include + +#include +#include +#include + #include "../ClipperUtils.hpp" #include "../ExPolygon.hpp" -#include "../ShortestPath.hpp" +#include "../Geometry.hpp" #include "../Surface.hpp" +#include "../ShortestPath.hpp" #include "FillRectilinear.hpp" +// #define SLIC3R_DEBUG + +// Make assert active if SLIC3R_DEBUG +#ifdef SLIC3R_DEBUG + #undef NDEBUG + #include "SVG.hpp" +#endif + +#include + +// We want our version of assert. +#include "../libslic3r.h" + namespace Slic3r { -void FillRectilinear::_fill_surface_single( - const FillParams ¶ms, - unsigned int thickness_layers, - const std::pair &direction, - ExPolygon &expolygon, - Polylines &polylines_out) +// Having a segment of a closed polygon, calculate its Euclidian length. +// The segment indices seg1 and seg2 signify an end point of an edge in the forward direction of the loop, +// therefore the point p1 lies on poly.points[seg1-1], poly.points[seg1] etc. +static inline coordf_t segment_length(const Polygon &poly, size_t seg1, const Point &p1, size_t seg2, const Point &p2) { - // rotate polygons so that we can work with vertical lines here - expolygon.rotate(- direction.first); - - this->_min_spacing = scale_(this->spacing); - assert(params.density > 0.0001f && params.density <= 1.f); - this->_line_spacing = coord_t(coordf_t(this->_min_spacing) / params.density); - this->_diagonal_distance = this->_line_spacing * 2; - this->_line_oscillation = this->_line_spacing - this->_min_spacing; // only for Line infill - BoundingBox bounding_box = expolygon.contour.bounding_box(); - - // define flow spacing according to requested density - if (params.density > 0.9999f && !params.dont_adjust) { - this->_line_spacing = this->_adjust_solid_spacing(bounding_box.size()(0), this->_line_spacing); - this->spacing = unscale(this->_line_spacing); +#ifdef SLIC3R_DEBUG + // Verify that p1 lies on seg1. This is difficult to verify precisely, + // but at least verify, that p1 lies in the bounding box of seg1. + for (size_t i = 0; i < 2; ++ i) { + size_t seg = (i == 0) ? seg1 : seg2; + Point px = (i == 0) ? p1 : p2; + Point pa = poly.points[((seg == 0) ? poly.points.size() : seg) - 1]; + Point pb = poly.points[seg]; + if (pa(0) > pb(0)) + std::swap(pa(0), pb(0)); + if (pa(1) > pb(1)) + std::swap(pa(1), pb(1)); + assert(px(0) >= pa(0) && px(0) <= pb(0)); + assert(px(1) >= pa(1) && px(1) <= pb(1)); + } +#endif /* SLIC3R_DEBUG */ + const Point *pPrev = &p1; + const Point *pThis = NULL; + coordf_t len = 0; + if (seg1 <= seg2) { + for (size_t i = seg1; i < seg2; ++ i, pPrev = pThis) + len += (*pPrev - *(pThis = &poly.points[i])).cast().norm(); } else { - // extend bounding box so that our pattern will be aligned with other layers - // Transform the reference point to the rotated coordinate system. - bounding_box.merge(_align_to_grid( - bounding_box.min, - Point(this->_line_spacing, this->_line_spacing), - direction.second.rotated(- direction.first))); + for (size_t i = seg1; i < poly.points.size(); ++ i, pPrev = pThis) + len += (*pPrev - *(pThis = &poly.points[i])).cast().norm(); + for (size_t i = 0; i < seg2; ++ i, pPrev = pThis) + len += (*pPrev - *(pThis = &poly.points[i])).cast().norm(); } + len += (*pPrev - p2).cast().norm(); + return len; +} - // generate the basic pattern - coord_t x_max = bounding_box.max(0) + SCALED_EPSILON; - Lines lines; - for (coord_t x = bounding_box.min(0); x <= x_max; x += this->_line_spacing) - lines.push_back(this->_line(lines.size(), x, bounding_box.min(1), bounding_box.max(1))); - if (this->_horizontal_lines()) { - coord_t y_max = bounding_box.max(1) + SCALED_EPSILON; - for (coord_t y = bounding_box.min(1); y <= y_max; y += this->_line_spacing) - lines.push_back(Line(Point(bounding_box.min(0), y), Point(bounding_box.max(0), y))); - } - - // clip paths against a slightly larger expolygon, so that the first and last paths - // are kept even if the expolygon has vertical sides - // the minimum offset for preventing edge lines from being clipped is SCALED_EPSILON; - // however we use a larger offset to support expolygons with slightly skewed sides and - // not perfectly straight - //FIXME Vojtech: Update the intersecton function to work directly with lines. - Polylines polylines_src; - polylines_src.reserve(lines.size()); - for (Lines::const_iterator it = lines.begin(); it != lines.end(); ++ it) { - polylines_src.push_back(Polyline()); - Points &pts = polylines_src.back().points; - pts.reserve(2); - pts.push_back(it->a); - pts.push_back(it->b); - } - Polylines polylines = intersection_pl(polylines_src, offset(to_polygons(expolygon), scale_(0.02)), false); - - // FIXME Vojtech: This is only performed for horizontal lines, not for the vertical lines! - const float INFILL_OVERLAP_OVER_SPACING = 0.3f; - // How much to extend an infill path from expolygon outside? - coord_t extra = coord_t(floor(this->_min_spacing * INFILL_OVERLAP_OVER_SPACING + 0.5f)); - for (Polylines::iterator it_polyline = polylines.begin(); it_polyline != polylines.end(); ++ it_polyline) { - Point *first_point = &it_polyline->points.front(); - Point *last_point = &it_polyline->points.back(); - if (first_point->y() > last_point->y()) - std::swap(first_point, last_point); - first_point->y() -= extra; - last_point->y() += extra; - } - - size_t n_polylines_out_old = polylines_out.size(); - - // connect lines - if (! params.dont_connect && ! polylines.empty()) { // prevent calling leftmost_point() on empty collections - // offset the expolygon by max(min_spacing/2, extra) - ExPolygon expolygon_off; - { - ExPolygons expolygons_off = offset_ex(expolygon, this->_min_spacing/2); - if (! expolygons_off.empty()) { - // When expanding a polygon, the number of islands could only shrink. Therefore the offset_ex shall generate exactly one expanded island for one input island. - assert(expolygons_off.size() == 1); - std::swap(expolygon_off, expolygons_off.front()); - } - } - bool first = true; - for (Polyline &polyline : chain_polylines(std::move(polylines))) { - if (! first) { - // Try to connect the lines. - Points &pts_end = polylines_out.back().points; - const Point &first_point = polyline.points.front(); - const Point &last_point = pts_end.back(); - // Distance in X, Y. - const Vector distance = last_point - first_point; - // TODO: we should also check that both points are on a fill_boundary to avoid - // connecting paths on the boundaries of internal regions - if (this->_can_connect(std::abs(distance(0)), std::abs(distance(1))) && - expolygon_off.contains(Line(last_point, first_point))) { - // Append the polyline. - pts_end.insert(pts_end.end(), polyline.points.begin(), polyline.points.end()); - continue; - } - } - // The lines cannot be connected. - polylines_out.emplace_back(std::move(polyline)); - first = false; - } - } - - // paths must be rotated back - for (Polylines::iterator it = polylines_out.begin() + n_polylines_out_old; it != polylines_out.end(); ++ it) { - // No need to translate, the absolute position is irrelevant. - // it->translate(- direction.second(0), - direction.second(1)); - it->rotate(direction.first); +// Append a segment of a closed polygon to a polyline. +// The segment indices seg1 and seg2 signify an end point of an edge in the forward direction of the loop. +// Only insert intermediate points between seg1 and seg2. +static inline void polygon_segment_append(Points &out, const Polygon &polygon, size_t seg1, size_t seg2) +{ + if (seg1 == seg2) { + // Nothing to append from this segment. + } else if (seg1 < seg2) { + // Do not append a point pointed to by seg2. + out.insert(out.end(), polygon.points.begin() + seg1, polygon.points.begin() + seg2); + } else { + out.reserve(out.size() + seg2 + polygon.points.size() - seg1); + out.insert(out.end(), polygon.points.begin() + seg1, polygon.points.end()); + // Do not append a point pointed to by seg2. + out.insert(out.end(), polygon.points.begin(), polygon.points.begin() + seg2); } } +// Append a segment of a closed polygon to a polyline. +// The segment indices seg1 and seg2 signify an end point of an edge in the forward direction of the loop, +// but this time the segment is traversed backward. +// Only insert intermediate points between seg1 and seg2. +static inline void polygon_segment_append_reversed(Points &out, const Polygon &polygon, size_t seg1, size_t seg2) +{ + if (seg1 >= seg2) { + out.reserve(seg1 - seg2); + for (size_t i = seg1; i > seg2; -- i) + out.push_back(polygon.points[i - 1]); + } else { + // it could be, that seg1 == seg2. In that case, append the complete loop. + out.reserve(out.size() + seg2 + polygon.points.size() - seg1); + for (size_t i = seg1; i > 0; -- i) + out.push_back(polygon.points[i - 1]); + for (size_t i = polygon.points.size(); i > seg2; -- i) + out.push_back(polygon.points[i - 1]); + } +} + +// Intersection point of a vertical line with a polygon segment. +struct SegmentIntersection +{ + // Index of a contour in ExPolygonWithOffset, with which this vertical line intersects. + size_t iContour { 0 }; + // Index of a segment in iContour, with which this vertical line intersects. + size_t iSegment { 0 }; + // y position of the intersection, rational number. + int64_t pos_p { 0 }; + uint32_t pos_q { 1 }; + + coord_t pos() const { + // Division rounds both positive and negative down to zero. + // Add half of q for an arithmetic rounding effect. + int64_t p = pos_p; + if (p < 0) + p -= int64_t(pos_q>>1); + else + p += int64_t(pos_q>>1); + return coord_t(p / int64_t(pos_q)); + } + + // Left vertical line / contour intersection point. + // null if next_on_contour_vertical. + int32_t prev_on_contour { 0 }; + // Right vertical line / contour intersection point. + // If next_on_contour_vertical, then then next_on_contour contains next contour point on the same vertical line. + int32_t next_on_contour { 0 }; + + // Kind of intersection. With the original contour, or with the inner offestted contour? + // A vertical segment will be at least intersected by OUTER_LOW, OUTER_HIGH, + // but it could be intersected with OUTER_LOW, INNER_LOW, INNER_HIGH, OUTER_HIGH, + // and there may be more than one pair of INNER_LOW, INNER_HIGH between OUTER_LOW, OUTER_HIGH. + enum SegmentIntersectionType : char { + UNKNOWN, + OUTER_LOW, + OUTER_HIGH, + INNER_LOW, + INNER_HIGH, + }; + SegmentIntersectionType type { UNKNOWN }; + + enum class LinkType : uint8_t { + // Horizontal link (left or right). + Horizontal, + // Vertical link, up. + Up, + // Vertical link, down. + Down, + // Phony intersection point has no link. + Phony, + }; + + enum class LinkQuality : uint8_t { + Invalid, + Valid, + // Valid link, but too long to be followed. + TooLong, + }; + + // Kept grouped with other booleans for smaller memory footprint. + LinkType prev_on_contour_type { LinkType::Horizontal }; + LinkType next_on_contour_type { LinkType::Horizontal }; + LinkQuality prev_on_contour_quality { LinkQuality::Valid }; + LinkQuality next_on_contour_quality { LinkQuality::Valid }; + // Was this segment along the y axis consumed? + // Up means up along the vertical segment. + bool consumed_vertical_up { false }; + // Was a segment of the inner perimeter contour consumed? + // Right means right from the vertical segment. + bool consumed_perimeter_right { false }; + + // For the INNER_LOW type, this point may be connected to another INNER_LOW point following a perimeter contour. + // For the INNER_HIGH type, this point may be connected to another INNER_HIGH point following a perimeter contour. + // If INNER_LOW is connected to INNER_HIGH or vice versa, + // one has to make sure the vertical infill line does not overlap with the connecting perimeter line. + bool is_inner() const { return type == INNER_LOW || type == INNER_HIGH; } + bool is_outer() const { return type == OUTER_LOW || type == OUTER_HIGH; } + bool is_low () const { return type == INNER_LOW || type == OUTER_LOW; } + bool is_high () const { return type == INNER_HIGH || type == OUTER_HIGH; } + + enum class Side { + Left, + Right + }; + enum class Direction { + Up, + Down + }; + + bool has_left_horizontal() const { return this->prev_on_contour_type == LinkType::Horizontal; } + bool has_right_horizontal() const { return this->next_on_contour_type == LinkType::Horizontal; } + bool has_horizontal(Side side) const { return side == Side::Left ? this->has_left_horizontal() : this->has_right_horizontal(); } + + bool has_left_vertical_up() const { return this->prev_on_contour_type == LinkType::Up; } + bool has_left_vertical_down() const { return this->prev_on_contour_type == LinkType::Down; } + bool has_left_vertical(Direction dir) const { return dir == Direction::Up ? this->has_left_vertical_up() : this->has_left_vertical_down(); } + bool has_left_vertical() const { return this->has_left_vertical_up() || this->has_left_vertical_down(); } + bool has_left_vertical_outside() const { return this->is_low() ? this->has_left_vertical_down() : this->has_left_vertical_up(); } + + bool has_right_vertical_up() const { return this->next_on_contour_type == LinkType::Up; } + bool has_right_vertical_down() const { return this->next_on_contour_type == LinkType::Down; } + bool has_right_vertical(Direction dir) const { return dir == Direction::Up ? this->has_right_vertical_up() : this->has_right_vertical_down(); } + bool has_right_vertical() const { return this->has_right_vertical_up() || this->has_right_vertical_down(); } + bool has_right_vertical_outside() const { return this->is_low() ? this->has_right_vertical_down() : this->has_right_vertical_up(); } + + bool has_vertical() const { return this->has_left_vertical() || this->has_right_vertical(); } + bool has_vertical(Side side) const { return side == Side::Left ? this->has_left_vertical() : this->has_right_vertical(); } + bool has_vertical_up() const { return this->has_left_vertical_up() || this->has_right_vertical_up(); } + bool has_vertical_down() const { return this->has_left_vertical_down() || this->has_right_vertical_down(); } + bool has_vertical(Direction dir) const { return dir == Direction::Up ? this->has_vertical_up() : this->has_vertical_down(); } + + int left_horizontal() const { return this->has_left_horizontal() ? this->prev_on_contour : -1; } + int right_horizontal() const { return this->has_right_horizontal() ? this->next_on_contour : -1; } + int horizontal(Side side) const { return side == Side::Left ? this->left_horizontal() : this->right_horizontal(); } + LinkQuality horizontal_quality(Side side) const { + assert(this->has_horizontal(side)); + return side == Side::Left ? this->prev_on_contour_quality : this->next_on_contour_quality; + } + + int left_vertical_up() const { return this->has_left_vertical_up() ? this->prev_on_contour : -1; } + int left_vertical_down() const { return this->has_left_vertical_down() ? this->prev_on_contour : -1; } + int left_vertical(Direction dir) const { return (dir == Direction::Up ? this->has_left_vertical_up() : this->has_left_vertical_down()) ? this->prev_on_contour : -1; } + int left_vertical() const { return this->has_left_vertical() ? this->prev_on_contour : -1; } + int left_vertical_outside() const { return this->is_low() ? this->left_vertical_down() : this->left_vertical_up(); } + int right_vertical_up() const { return this->has_right_vertical_up() ? this->next_on_contour : -1; } + int right_vertical_down() const { return this->has_right_vertical_down() ? this->next_on_contour : -1; } + int right_vertical(Direction dir) const { return (dir == Direction::Up ? this->has_right_vertical_up() : this->has_right_vertical_down()) ? this->next_on_contour : -1; } + int right_vertical() const { return this->has_right_vertical() ? this->next_on_contour : -1; } + int right_vertical_outside() const { return this->is_low() ? this->right_vertical_down() : this->right_vertical_up(); } + + int vertical_up(Side side) const { return side == Side::Left ? this->left_vertical_up() : this->right_vertical_up(); } + int vertical_down(Side side) const { return side == Side::Left ? this->left_vertical_down() : this->right_vertical_down(); } + int vertical_outside(Side side) const { return side == Side::Left ? this->left_vertical_outside() : this->right_vertical_outside(); } + // Returns -1 if there is no link up. + int vertical_up() const { + return this->has_left_vertical_up() ? this->left_vertical_up() : this->right_vertical_up(); + } + LinkQuality vertical_up_quality() const { + return this->has_left_vertical_up() ? this->prev_on_contour_quality : this->next_on_contour_quality; + } + // Returns -1 if there is no link down. + int vertical_down() const { +// assert(! this->has_left_vertical_down() || ! this->has_right_vertical_down()); + return this->has_left_vertical_down() ? this->left_vertical_down() : this->right_vertical_down(); + } + LinkQuality vertical_down_quality() const { + return this->has_left_vertical_down() ? this->prev_on_contour_quality : this->next_on_contour_quality; + } + int vertical_outside() const { return this->is_low() ? this->vertical_down() : this->vertical_up(); } + LinkQuality vertical_outside_quality() const { return this->is_low() ? this->vertical_down_quality() : this->vertical_up_quality(); } + + // Compare two y intersection points given by rational numbers. + // Note that the rational number is given as pos_p/pos_q, where pos_p is int64 and pos_q is uint32. + // This function calculates pos_p * other.pos_q < other.pos_p * pos_q as a 48bit number. + // We don't use 128bit intrinsic data types as these are usually not supported by 32bit compilers and + // we don't need the full 128bit precision anyway. + bool operator<(const SegmentIntersection &other) const + { + assert(pos_q > 0); + assert(other.pos_q > 0); + if (pos_p == 0 || other.pos_p == 0) { + // Because the denominators are positive and one of the nominators is zero, + // following simple statement holds. + return pos_p < other.pos_p; + } else { + // None of the nominators is zero. + int sign1 = (pos_p > 0) ? 1 : -1; + int sign2 = (other.pos_p > 0) ? 1 : -1; + int signs = sign1 * sign2; + assert(signs == 1 || signs == -1); + if (signs < 0) { + // The nominators have different signs. + return sign1 < 0; + } else { + // The nominators have the same sign. + // Absolute values + uint64_t p1, p2; + if (sign1 > 0) { + p1 = uint64_t(pos_p); + p2 = uint64_t(other.pos_p); + } else { + p1 = uint64_t(- pos_p); + p2 = uint64_t(- other.pos_p); + }; + // Multiply low and high 32bit words of p1 by other_pos.q + // 32bit x 32bit => 64bit + // l_hi and l_lo overlap by 32 bits. + uint64_t l_hi = (p1 >> 32) * uint64_t(other.pos_q); + uint64_t l_lo = (p1 & 0xffffffffll) * uint64_t(other.pos_q); + l_hi += (l_lo >> 32); + uint64_t r_hi = (p2 >> 32) * uint64_t(pos_q); + uint64_t r_lo = (p2 & 0xffffffffll) * uint64_t(pos_q); + r_hi += (r_lo >> 32); + // Compare the high 64 bits. + if (l_hi == r_hi) { + // Compare the low 32 bits. + l_lo &= 0xffffffffll; + r_lo &= 0xffffffffll; + return (sign1 < 0) ? (l_lo > r_lo) : (l_lo < r_lo); + } + return (sign1 < 0) ? (l_hi > r_hi) : (l_hi < r_hi); + } + } + } + + bool operator==(const SegmentIntersection &other) const + { + assert(pos_q > 0); + assert(other.pos_q > 0); + if (pos_p == 0 || other.pos_p == 0) { + // Because the denominators are positive and one of the nominators is zero, + // following simple statement holds. + return pos_p == other.pos_p; + } + + // None of the nominators is zero, none of the denominators is zero. + bool positive = pos_p > 0; + if (positive != (other.pos_p > 0)) + return false; + // The nominators have the same sign. + // Absolute values + uint64_t p1 = positive ? uint64_t(pos_p) : uint64_t(- pos_p); + uint64_t p2 = positive ? uint64_t(other.pos_p) : uint64_t(- other.pos_p); + // Multiply low and high 32bit words of p1 by other_pos.q + // 32bit x 32bit => 64bit + // l_hi and l_lo overlap by 32 bits. + uint64_t l_lo = (p1 & 0xffffffffll) * uint64_t(other.pos_q); + uint64_t r_lo = (p2 & 0xffffffffll) * uint64_t(pos_q); + if (l_lo != r_lo) + return false; + uint64_t l_hi = (p1 >> 32) * uint64_t(other.pos_q); + uint64_t r_hi = (p2 >> 32) * uint64_t(pos_q); + return l_hi + (l_lo >> 32) == r_hi + (r_lo >> 32); + } +}; +static_assert(sizeof(SegmentIntersection::pos_q) == 4, "SegmentIntersection::pos_q has to be 32bit long!"); + +// A vertical line with intersection points with polygons. +struct SegmentedIntersectionLine +{ + // Index of this vertical intersection line. + size_t idx; + // x position of this vertical intersection line. + coord_t pos; + // List of intersection points with polygons, sorted increasingly by the y axis. + std::vector intersections; +}; + +static SegmentIntersection phony_outer_intersection(SegmentIntersection::SegmentIntersectionType type, coord_t pos) +{ + assert(type == SegmentIntersection::OUTER_LOW || type == SegmentIntersection::OUTER_HIGH); + SegmentIntersection out; + // Invalid contour & segment. + out.iContour = std::numeric_limits::max(); + out.iSegment = std::numeric_limits::max(); + out.pos_p = pos; + out.type = type; + // Invalid prev / next. + out.prev_on_contour = -1; + out.next_on_contour = -1; + out.prev_on_contour_type = SegmentIntersection::LinkType::Phony; + out.next_on_contour_type = SegmentIntersection::LinkType::Phony; + out.prev_on_contour_quality = SegmentIntersection::LinkQuality::Invalid; + out.next_on_contour_quality = SegmentIntersection::LinkQuality::Invalid; + return out; +} + +// A container maintaining an expolygon with its inner offsetted polygon. +// The purpose of the inner offsetted polygon is to provide segments to connect the infill lines. +struct ExPolygonWithOffset +{ +public: + ExPolygonWithOffset( + const ExPolygon &expolygon, + float angle, + coord_t aoffset1, + // If the 2nd offset is zero, then it is ignored and only OUTER_LOW / OUTER_HIGH intersections are + // populated into vertical intersection lines. + coord_t aoffset2 = 0) + { + // Copy and rotate the source polygons. + polygons_src = expolygon; + if (angle != 0.f) { + polygons_src.contour.rotate(angle); + for (Polygon &hole : polygons_src.holes) + hole.rotate(angle); + } + + double mitterLimit = 3.; + // for the infill pattern, don't cut the corners. + // default miterLimt = 3 + //double mitterLimit = 10.; + assert(aoffset1 < 0); + assert(aoffset2 <= 0); + assert(aoffset2 == 0 || aoffset2 < aoffset1); +// bool sticks_removed = + remove_sticks(polygons_src); +// if (sticks_removed) BOOST_LOG_TRIVIAL(error) << "Sticks removed!"; + polygons_outer = offset(polygons_src, float(aoffset1), ClipperLib::jtMiter, mitterLimit); + if (aoffset2 < 0) + polygons_inner = offset(polygons_outer, float(aoffset2 - aoffset1), ClipperLib::jtMiter, mitterLimit); + // Filter out contours with zero area or small area, contours with 2 points only. + const double min_area_threshold = 0.01 * aoffset2 * aoffset2; + remove_small(polygons_outer, min_area_threshold); + remove_small(polygons_inner, min_area_threshold); + remove_sticks(polygons_outer); + remove_sticks(polygons_inner); + n_contours_outer = polygons_outer.size(); + n_contours_inner = polygons_inner.size(); + n_contours = n_contours_outer + n_contours_inner; + polygons_ccw.assign(n_contours, false); + for (size_t i = 0; i < n_contours; ++ i) { + contour(i).remove_duplicate_points(); + assert(! contour(i).has_duplicate_points()); + polygons_ccw[i] = Slic3r::Geometry::is_ccw(contour(i)); + } + } + + ExPolygonWithOffset(const ExPolygonWithOffset &rhs, float angle) : ExPolygonWithOffset(rhs) { + if (angle != 0.f) { + this->polygons_src.contour.rotate(angle); + for (Polygon &hole : this->polygons_src.holes) + hole.rotate(angle); + for (Polygon &poly : this->polygons_outer) + poly.rotate(angle); + for (Polygon &poly : this->polygons_inner) + poly.rotate(angle); + } + } + + // Any contour with offset1 + bool is_contour_outer(size_t idx) const { return idx < n_contours_outer; } + // Any contour with offset2 + bool is_contour_inner(size_t idx) const { return idx >= n_contours_outer; } + + const Polygon& contour(size_t idx) const + { return is_contour_outer(idx) ? polygons_outer[idx] : polygons_inner[idx - n_contours_outer]; } + + Polygon& contour(size_t idx) + { return is_contour_outer(idx) ? polygons_outer[idx] : polygons_inner[idx - n_contours_outer]; } + + bool is_contour_ccw(size_t idx) const { return polygons_ccw[idx]; } + + BoundingBox bounding_box_src() const + { return get_extents(polygons_src); } + BoundingBox bounding_box_outer() const + { return get_extents(polygons_outer); } + BoundingBox bounding_box_inner() const + { return get_extents(polygons_inner); } + +#ifdef SLIC3R_DEBUG + void export_to_svg(Slic3r::SVG &svg) { + svg.draw_outline(polygons_src, "black"); + svg.draw_outline(polygons_outer, "green"); + svg.draw_outline(polygons_inner, "brown"); + } +#endif /* SLIC3R_DEBUG */ + + ExPolygon polygons_src; + Polygons polygons_outer; + Polygons polygons_inner; + + size_t n_contours_outer; + size_t n_contours_inner; + size_t n_contours; + +protected: + // For each polygon of polygons_inner, remember its orientation. + std::vector polygons_ccw; +}; + +static inline int distance_of_segmens(const Polygon &poly, size_t seg1, size_t seg2, bool forward) +{ + int d = int(seg2) - int(seg1); + if (! forward) + d = - d; + if (d < 0) + d += int(poly.points.size()); + return d; +} + +// Find an intersection on a previous line, but return -1, if the connecting segment of a perimeter was already extruded. +static inline bool intersection_on_prev_next_vertical_line_valid( + const std::vector &segs, + size_t iVerticalLine, + size_t iIntersection, + SegmentIntersection::Side side) +{ + const SegmentedIntersectionLine &vline_this = segs[iVerticalLine]; + const SegmentIntersection &it_this = vline_this.intersections[iIntersection]; + if (it_this.has_vertical(side)) + // Not the first intersection along the contor. This intersection point + // has been preceded by an intersection point along the vertical line. + return false; + int iIntersectionOther = it_this.horizontal(side); + if (iIntersectionOther == -1) + return false; + assert(side == SegmentIntersection::Side::Right ? (iVerticalLine + 1 < segs.size()) : (iVerticalLine > 0)); + const SegmentedIntersectionLine &vline_other = segs[side == SegmentIntersection::Side::Right ? (iVerticalLine + 1) : (iVerticalLine - 1)]; + const SegmentIntersection &it_other = vline_other.intersections[iIntersectionOther]; + assert(it_other.is_inner()); + assert(iIntersectionOther > 0); + assert(iIntersectionOther + 1 < vline_other.intersections.size()); + // Is iIntersectionOther at the boundary of a vertical segment? + const SegmentIntersection &it_other2 = vline_other.intersections[it_other.is_low() ? iIntersectionOther - 1 : iIntersectionOther + 1]; + if (it_other2.is_inner()) + // Cannot follow a perimeter segment into the middle of another vertical segment. + // Only perimeter segments connecting to the end of a vertical segment are followed. + return false; + assert(it_other.is_low() == it_other2.is_low()); + if (it_this.horizontal_quality(side) != SegmentIntersection::LinkQuality::Valid) + return false; + if (side == SegmentIntersection::Side::Right ? it_this.consumed_perimeter_right : it_other.consumed_perimeter_right) + // This perimeter segment was already consumed. + return false; + if (it_other.is_low() ? it_other.consumed_vertical_up : vline_other.intersections[iIntersectionOther - 1].consumed_vertical_up) + // This vertical segment was already consumed. + return false; +#if 0 + if (it_other.vertical_outside() != -1 && it_other.vertical_outside_quality() == SegmentIntersection::LinkQuality::Valid) + // Landed inside a vertical run. Stop here. + return false; +#endif + return true; +} + +static inline bool intersection_on_prev_vertical_line_valid( + const std::vector &segs, + size_t iVerticalLine, + size_t iIntersection) +{ + return intersection_on_prev_next_vertical_line_valid(segs, iVerticalLine, iIntersection, SegmentIntersection::Side::Left); +} + +static inline bool intersection_on_next_vertical_line_valid( + const std::vector &segs, + size_t iVerticalLine, + size_t iIntersection) +{ + return intersection_on_prev_next_vertical_line_valid(segs, iVerticalLine, iIntersection, SegmentIntersection::Side::Right); +} + +// Measure an Euclidian length of a perimeter segment when going from iIntersection to iIntersection2. +static inline coordf_t measure_perimeter_horizontal_segment_length( + const ExPolygonWithOffset &poly_with_offset, + const std::vector &segs, + size_t iVerticalLine, + size_t iIntersection, + size_t iIntersection2) +{ + size_t iVerticalLineOther = iVerticalLine + 1; + assert(iVerticalLineOther < segs.size()); + const SegmentedIntersectionLine &vline = segs[iVerticalLine]; + const SegmentIntersection &it = vline.intersections[iIntersection]; + const SegmentedIntersectionLine &vline2 = segs[iVerticalLineOther]; + const SegmentIntersection &it2 = vline2.intersections[iIntersection2]; + assert(it.iContour == it2.iContour); + const Polygon &poly = poly_with_offset.contour(it.iContour); +// const bool ccw = poly_with_offset.is_contour_ccw(vline.iContour); + assert(it.type == it2.type); + assert(it.iContour == it2.iContour); + + Point p1(vline.pos, it.pos()); + Point p2(vline2.pos, it2.pos()); + return it.is_low() ? + segment_length(poly, it .iSegment, p1, it2.iSegment, p2) : + segment_length(poly, it2.iSegment, p2, it .iSegment, p1); +} + +// Append the points of a perimeter segment when going from iIntersection to iIntersection2. +// The first point (the point of iIntersection) will not be inserted, +// the last point will be inserted. +static inline void emit_perimeter_prev_next_segment( + const ExPolygonWithOffset &poly_with_offset, + const std::vector &segs, + size_t iVerticalLine, + size_t iInnerContour, + size_t iIntersection, + size_t iIntersection2, + Polyline &out, + bool dir_is_next) +{ + size_t iVerticalLineOther = iVerticalLine; + if (dir_is_next) { + ++ iVerticalLineOther; + assert(iVerticalLineOther < segs.size()); + } else { + assert(iVerticalLineOther > 0); + -- iVerticalLineOther; + } + + const SegmentedIntersectionLine &il = segs[iVerticalLine]; + const SegmentIntersection &itsct = il.intersections[iIntersection]; + const SegmentedIntersectionLine &il2 = segs[iVerticalLineOther]; + const SegmentIntersection &itsct2 = il2.intersections[iIntersection2]; + const Polygon &poly = poly_with_offset.contour(iInnerContour); +// const bool ccw = poly_with_offset.is_contour_ccw(iInnerContour); + assert(itsct.type == itsct2.type); + assert(itsct.iContour == itsct2.iContour); + assert(itsct.is_inner()); + const bool forward = itsct.is_low() == dir_is_next; + // Do not append the first point. + // out.points.push_back(Point(il.pos, itsct.pos)); + if (forward) + polygon_segment_append(out.points, poly, itsct.iSegment, itsct2.iSegment); + else + polygon_segment_append_reversed(out.points, poly, itsct.iSegment, itsct2.iSegment); + // Append the last point. + out.points.push_back(Point(il2.pos, itsct2.pos())); +} + +static inline coordf_t measure_perimeter_segment_on_vertical_line_length( + const ExPolygonWithOffset &poly_with_offset, + const std::vector &segs, + size_t iVerticalLine, + size_t iIntersection, + size_t iIntersection2, + bool forward) +{ + const SegmentedIntersectionLine &il = segs[iVerticalLine]; + const SegmentIntersection &itsct = il.intersections[iIntersection]; + const SegmentIntersection &itsct2 = il.intersections[iIntersection2]; + const Polygon &poly = poly_with_offset.contour(itsct.iContour); + assert(itsct.is_inner() == itsct2.is_inner()); + assert(itsct.type != itsct2.type); + assert(itsct.iContour == itsct2.iContour); + Point p1(il.pos, itsct.pos()); + Point p2(il.pos, itsct2.pos()); + return forward ? + segment_length(poly, itsct .iSegment, p1, itsct2.iSegment, p2) : + segment_length(poly, itsct2.iSegment, p2, itsct .iSegment, p1); +} + +// Append the points of a perimeter segment when going from iIntersection to iIntersection2. +// The first point (the point of iIntersection) will not be inserted, +// the last point will be inserted. +static inline void emit_perimeter_segment_on_vertical_line( + const ExPolygonWithOffset &poly_with_offset, + const std::vector &segs, + size_t iVerticalLine, + size_t iInnerContour, + size_t iIntersection, + size_t iIntersection2, + Polyline &out, + bool forward) +{ + const SegmentedIntersectionLine &il = segs[iVerticalLine]; + const SegmentIntersection &itsct = il.intersections[iIntersection]; + const SegmentIntersection &itsct2 = il.intersections[iIntersection2]; + const Polygon &poly = poly_with_offset.contour(iInnerContour); + assert(itsct.is_inner()); + assert(itsct2.is_inner()); + assert(itsct.type != itsct2.type); + assert(itsct.iContour == iInnerContour); + assert(itsct.iContour == itsct2.iContour); + // Do not append the first point. + // out.points.push_back(Point(il.pos, itsct.pos)); + if (forward) + polygon_segment_append(out.points, poly, itsct.iSegment, itsct2.iSegment); + else + polygon_segment_append_reversed(out.points, poly, itsct.iSegment, itsct2.iSegment); + // Append the last point. + out.points.push_back(Point(il.pos, itsct2.pos())); +} + +//TBD: For precise infill, measure the area of a slab spanned by an infill line. +/* +static inline float measure_outer_contour_slab( + const ExPolygonWithOffset &poly_with_offset, + const std::vector &segs, + size_t i_vline, + size_t iIntersection) +{ + const SegmentedIntersectionLine &il = segs[i_vline]; + const SegmentIntersection &itsct = il.intersections[i_vline]; + const SegmentIntersection &itsct2 = il.intersections[iIntersection2]; + const Polygon &poly = poly_with_offset.contour((itsct.iContour); + assert(itsct.is_outer()); + assert(itsct2.is_outer()); + assert(itsct.type != itsct2.type); + assert(itsct.iContour == itsct2.iContour); + if (! itsct.is_outer() || ! itsct2.is_outer() || itsct.type == itsct2.type || itsct.iContour != itsct2.iContour) + // Error, return zero area. + return 0.f; + + // Find possible connection points on the previous / next vertical line. + int iPrev = intersection_on_prev_vertical_line(poly_with_offset, segs, i_vline, itsct.iContour, i_intersection); + int iNext = intersection_on_next_vertical_line(poly_with_offset, segs, i_vline, itsct.iContour, i_intersection); + // Find possible connection points on the same vertical line. + int iAbove = iBelow = -1; + // Does the perimeter intersect the current vertical line above intrsctn? + for (size_t i = i_intersection + 1; i + 1 < seg.intersections.size(); ++ i) + if (seg.intersections[i].iContour == itsct.iContour) + { iAbove = i; break; } + // Does the perimeter intersect the current vertical line below intrsctn? + for (int i = int(i_intersection) - 1; i > 0; -- i) + if (seg.intersections[i].iContour == itsct.iContour) + { iBelow = i; break; } + + if (iSegAbove != -1 && seg.intersections[iAbove].type == SegmentIntersection::OUTER_HIGH) { + // Invalidate iPrev resp. iNext, if the perimeter crosses the current vertical line earlier than iPrev resp. iNext. + // The perimeter contour orientation. + const Polygon &poly = poly_with_offset.contour(itsct.iContour); + { + int d_horiz = (iPrev == -1) ? std::numeric_limits::max() : + distance_of_segmens(poly, segs[i_vline-1].intersections[iPrev].iSegment, itsct.iSegment, true); + int d_down = (iBelow == -1) ? std::numeric_limits::max() : + distance_of_segmens(poly, iSegBelow, itsct.iSegment, true); + int d_up = (iAbove == -1) ? std::numeric_limits::max() : + distance_of_segmens(poly, iSegAbove, itsct.iSegment, true); + if (intrsection_type_prev == INTERSECTION_TYPE_OTHER_VLINE_OK && d_horiz > std::min(d_down, d_up)) + // The vertical crossing comes eralier than the prev crossing. + // Disable the perimeter going back. + intrsection_type_prev = INTERSECTION_TYPE_OTHER_VLINE_NOT_FIRST; + if (d_up > std::min(d_horiz, d_down)) + // The horizontal crossing comes earlier than the vertical crossing. + vert_seg_dir_valid_mask &= ~DIR_BACKWARD; + } + { + int d_horiz = (iNext == -1) ? std::numeric_limits::max() : + distance_of_segmens(poly, itsct.iSegment, segs[i_vline+1].intersections[iNext].iSegment, true); + int d_down = (iSegBelow == -1) ? std::numeric_limits::max() : + distance_of_segmens(poly, itsct.iSegment, iSegBelow, true); + int d_up = (iSegAbove == -1) ? std::numeric_limits::max() : + distance_of_segmens(poly, itsct.iSegment, iSegAbove, true); + if (d_up > std::min(d_horiz, d_down)) + // The horizontal crossing comes earlier than the vertical crossing. + vert_seg_dir_valid_mask &= ~DIR_FORWARD; + } + } +} +*/ + +enum DirectionMask +{ + DIR_FORWARD = 1, + DIR_BACKWARD = 2 +}; + +static std::vector slice_region_by_vertical_lines(const ExPolygonWithOffset &poly_with_offset, size_t n_vlines, coord_t x0, coord_t line_spacing) +{ + // Allocate storage for the segments. + std::vector segs(n_vlines, SegmentedIntersectionLine()); + for (coord_t i = 0; i < coord_t(n_vlines); ++ i) { + segs[i].idx = i; + segs[i].pos = x0 + i * line_spacing; + } + // For each contour + for (size_t iContour = 0; iContour < poly_with_offset.n_contours; ++ iContour) { + const Points &contour = poly_with_offset.contour(iContour).points; + if (contour.size() < 2) + continue; + // For each segment + for (size_t iSegment = 0; iSegment < contour.size(); ++ iSegment) { + size_t iPrev = ((iSegment == 0) ? contour.size() : iSegment) - 1; + const Point &p1 = contour[iPrev]; + const Point &p2 = contour[iSegment]; + // Which of the equally spaced vertical lines is intersected by this segment? + coord_t l = p1(0); + coord_t r = p2(0); + if (l > r) + std::swap(l, r); + // il, ir are the left / right indices of vertical lines intersecting a segment + int il = (l - x0) / line_spacing; + while (il * line_spacing + x0 < l) + ++ il; + il = std::max(int(0), il); + int ir = (r - x0 + line_spacing) / line_spacing; + while (ir * line_spacing + x0 > r) + -- ir; + ir = std::min(int(segs.size()) - 1, ir); + if (il > ir) + // No vertical line intersects this segment. + continue; + assert(il >= 0 && size_t(il) < segs.size()); + assert(ir >= 0 && size_t(ir) < segs.size()); + for (int i = il; i <= ir; ++ i) { + coord_t this_x = segs[i].pos; + assert(this_x == i * line_spacing + x0); + SegmentIntersection is; + is.iContour = iContour; + is.iSegment = iSegment; + assert(l <= this_x); + assert(r >= this_x); + // Calculate the intersection position in y axis. x is known. + if (p1(0) == this_x) { + if (p2(0) == this_x) { + // Ignore strictly vertical segments. + continue; + } + is.pos_p = p1(1); + is.pos_q = 1; + } else if (p2(0) == this_x) { + is.pos_p = p2(1); + is.pos_q = 1; + } else { + // First calculate the intersection parameter 't' as a rational number with non negative denominator. + if (p2(0) > p1(0)) { + is.pos_p = this_x - p1(0); + is.pos_q = p2(0) - p1(0); + } else { + is.pos_p = p1(0) - this_x; + is.pos_q = p1(0) - p2(0); + } + assert(is.pos_p >= 0 && is.pos_p <= is.pos_q); + // Make an intersection point from the 't'. + is.pos_p *= int64_t(p2(1) - p1(1)); + is.pos_p += p1(1) * int64_t(is.pos_q); + } + // +-1 to take rounding into account. + assert(is.pos() + 1 >= std::min(p1(1), p2(1))); + assert(is.pos() <= std::max(p1(1), p2(1)) + 1); + segs[i].intersections.push_back(is); + } + } + } + + // Sort the intersections along their segments, specify the intersection types. + for (size_t i_seg = 0; i_seg < segs.size(); ++ i_seg) { + SegmentedIntersectionLine &sil = segs[i_seg]; + // Sort the intersection points using exact rational arithmetic. + std::sort(sil.intersections.begin(), sil.intersections.end()); + // Assign the intersection types, remove duplicate or overlapping intersection points. + // When a loop vertex touches a vertical line, intersection point is generated for both segments. + // If such two segments are oriented equally, then one of them is removed. + // Otherwise the vertex is tangential to the vertical line and both segments are removed. + // The same rule applies, if the loop is pinched into a single point and this point touches the vertical line: + // The loop has a zero vertical size at the vertical line, therefore the intersection point is removed. + size_t j = 0; + for (size_t i = 0; i < sil.intersections.size(); ++ i) { + // What is the orientation of the segment at the intersection point? + size_t iContour = sil.intersections[i].iContour; + const Points &contour = poly_with_offset.contour(iContour).points; + size_t iSegment = sil.intersections[i].iSegment; + size_t iPrev = ((iSegment == 0) ? contour.size() : iSegment) - 1; + coord_t dir = contour[iSegment](0) - contour[iPrev](0); + bool low = dir > 0; + sil.intersections[i].type = poly_with_offset.is_contour_outer(iContour) ? + (low ? SegmentIntersection::OUTER_LOW : SegmentIntersection::OUTER_HIGH) : + (low ? SegmentIntersection::INNER_LOW : SegmentIntersection::INNER_HIGH); + if (j > 0 && sil.intersections[i].iContour == sil.intersections[j-1].iContour) { + // Two successive intersection points on a vertical line with the same contour. This may be a special case. + if (sil.intersections[i].pos() == sil.intersections[j-1].pos()) { + // Two successive segments meet exactly at the vertical line. + #ifdef SLIC3R_DEBUG + // Verify that the segments of sil.intersections[i] and sil.intersections[j-1] are adjoint. + size_t iSegment2 = sil.intersections[j-1].iSegment; + size_t iPrev2 = ((iSegment2 == 0) ? contour.size() : iSegment2) - 1; + assert(iSegment == iPrev2 || iSegment2 == iPrev); + #endif /* SLIC3R_DEBUG */ + if (sil.intersections[i].type == sil.intersections[j-1].type) { + // Two successive segments of the same direction (both to the right or both to the left) + // meet exactly at the vertical line. + // Remove the second intersection point. + } else { + // This is a loop returning to the same point. + // It may as well be a vertex of a loop touching this vertical line. + // Remove both the lines. + -- j; + } + } else if (sil.intersections[i].type == sil.intersections[j-1].type) { + // Two non successive segments of the same direction (both to the right or both to the left) + // meet exactly at the vertical line. That means there is a Z shaped path, where the center segment + // of the Z shaped path is aligned with this vertical line. + // Remove one of the intersection points while maximizing the vertical segment length. + if (low) { + // Remove the second intersection point, keep the first intersection point. + } else { + // Remove the first intersection point, keep the second intersection point. + sil.intersections[j-1] = sil.intersections[i]; + } + } else { + // Vertical line intersects a contour segment at a general position (not at one of its end points). + // or the contour just touches this vertical line with a vertical segment or a sequence of vertical segments. + // Keep both intersection points. + if (j < i) + sil.intersections[j] = sil.intersections[i]; + ++ j; + } + } else { + // Vertical line intersects a contour segment at a general position (not at one of its end points). + if (j < i) + sil.intersections[j] = sil.intersections[i]; + ++ j; + } + } + // Shrink the list of intersections, if any of the intersection was removed during the classification. + if (j < sil.intersections.size()) + sil.intersections.erase(sil.intersections.begin() + j, sil.intersections.end()); + } + + // Verify the segments. If something is wrong, give up. +#define ASSERT_THROW(CONDITION) do { assert(CONDITION); if (! (CONDITION)) throw InfillFailedException(); } while (0) + for (size_t i_seg = 0; i_seg < segs.size(); ++ i_seg) { + SegmentedIntersectionLine &sil = segs[i_seg]; + // The intersection points have to be even. + ASSERT_THROW((sil.intersections.size() & 1) == 0); + for (size_t i = 0; i < sil.intersections.size();) { + // An intersection segment crossing the bigger contour may cross the inner offsetted contour even number of times. + ASSERT_THROW(sil.intersections[i].type == SegmentIntersection::OUTER_LOW); + size_t j = i + 1; + ASSERT_THROW(j < sil.intersections.size()); + ASSERT_THROW(sil.intersections[j].type == SegmentIntersection::INNER_LOW || sil.intersections[j].type == SegmentIntersection::OUTER_HIGH); + for (; j < sil.intersections.size() && sil.intersections[j].is_inner(); ++ j) ; + ASSERT_THROW(j < sil.intersections.size()); + ASSERT_THROW((j & 1) == 1); + ASSERT_THROW(sil.intersections[j].type == SegmentIntersection::OUTER_HIGH); + ASSERT_THROW(i + 1 == j || sil.intersections[j - 1].type == SegmentIntersection::INNER_HIGH); + i = j + 1; + } + } +#undef ASSERT_THROW + + return segs; +} + +#ifndef NDEBUG +bool validate_segment_intersection_connectivity(const std::vector &segs) +{ + // Validate the connectivity. + for (size_t i_vline = 0; i_vline + 1 < segs.size(); ++ i_vline) { + const SegmentedIntersectionLine &il_left = segs[i_vline]; + const SegmentedIntersectionLine &il_right = segs[i_vline + 1]; + for (const SegmentIntersection &it : il_left.intersections) { + if (it.has_right_horizontal()) { + const SegmentIntersection &it_right = il_right.intersections[it.right_horizontal()]; + // For a right link there is a symmetric left link. + assert(it.iContour == it_right.iContour); + assert(it.type == it_right.type); + assert(it_right.has_left_horizontal()); + assert(it_right.left_horizontal() == int(&it - il_left.intersections.data())); + } + } + for (const SegmentIntersection &it : il_right.intersections) { + if (it.has_left_horizontal()) { + const SegmentIntersection &it_left = il_left.intersections[it.left_horizontal()]; + // For a right link there is a symmetric left link. + assert(it.iContour == it_left.iContour); + assert(it.type == it_left.type); + assert(it_left.has_right_horizontal()); + assert(it_left.right_horizontal() == int(&it - il_right.intersections.data())); + } + } + } + for (size_t i_vline = 0; i_vline < segs.size(); ++ i_vline) { + const SegmentedIntersectionLine &il = segs[i_vline]; + for (const SegmentIntersection &it : il.intersections) { + auto i_it = int(&it - il.intersections.data()); + if (it.has_left_vertical_up()) { + assert(il.intersections[it.left_vertical_up()].left_vertical_down() == i_it); + assert(il.intersections[it.left_vertical_up()].prev_on_contour_quality == it.prev_on_contour_quality); + } + if (it.has_left_vertical_down()) { + assert(il.intersections[it.left_vertical_down()].left_vertical_up() == i_it); + assert(il.intersections[it.left_vertical_down()].prev_on_contour_quality == it.prev_on_contour_quality); + } + if (it.has_right_vertical_up()) { + assert(il.intersections[it.right_vertical_up()].right_vertical_down() == i_it); + assert(il.intersections[it.right_vertical_up()].next_on_contour_quality == it.next_on_contour_quality); + } + if (it.has_right_vertical_down()) { + assert(il.intersections[it.right_vertical_down()].right_vertical_up() == i_it); + assert(il.intersections[it.right_vertical_down()].next_on_contour_quality == it.next_on_contour_quality); + } + } + } + return true; +} +#endif /* NDEBUG */ + +// Connect each contour / vertical line intersection point with another two contour / vertical line intersection points. +// (fill in SegmentIntersection::{prev_on_contour, prev_on_contour_vertical, next_on_contour, next_on_contour_vertical}. +// These contour points are either on the same vertical line, or on the vertical line left / right to the current one. +static void connect_segment_intersections_by_contours( + const ExPolygonWithOffset &poly_with_offset, std::vector &segs, + const FillParams ¶ms, const coord_t link_max_length) +{ + for (size_t i_vline = 0; i_vline < segs.size(); ++ i_vline) { + SegmentedIntersectionLine &il = segs[i_vline]; + const SegmentedIntersectionLine *il_prev = i_vline > 0 ? &segs[i_vline - 1] : nullptr; + const SegmentedIntersectionLine *il_next = i_vline + 1 < segs.size() ? &segs[i_vline + 1] : nullptr; + + for (int i_intersection = 0; i_intersection < int(il.intersections.size()); ++ i_intersection) { + SegmentIntersection &itsct = il.intersections[i_intersection]; + const Polygon &poly = poly_with_offset.contour(itsct.iContour); + const bool forward = itsct.is_low(); // == poly_with_offset.is_contour_ccw(intrsctn->iContour); + + // 1) Find possible connection points on the previous / next vertical line. + // Find an intersection point on il_prev, intersecting i_intersection + // at the same orientation as i_intersection, and being closest to i_intersection + // in the number of contour segments, when following the direction of the contour. + //FIXME this has O(n) time complexity. Likely an O(log(n)) scheme is possible. + int iprev = -1; + int d_prev = std::numeric_limits::max(); + if (il_prev) { + for (int i = 0; i < int(il_prev->intersections.size()); ++ i) { + const SegmentIntersection &itsct2 = il_prev->intersections[i]; + if (itsct.iContour == itsct2.iContour && itsct.type == itsct2.type) { + // The intersection points lie on the same contour and have the same orientation. + // Find the intersection point with a shortest path in the direction of the contour. + int d = distance_of_segmens(poly, itsct2.iSegment, itsct.iSegment, forward); + if (d < d_prev) { + iprev = i; + d_prev = d; + } + } + } + } + + // The same for il_next. + int inext = -1; + int d_next = std::numeric_limits::max(); + if (il_next) { + for (int i = 0; i < int(il_next->intersections.size()); ++ i) { + const SegmentIntersection &itsct2 = il_next->intersections[i]; + if (itsct.iContour == itsct2.iContour && itsct.type == itsct2.type) { + // The intersection points lie on the same contour and have the same orientation. + // Find the intersection point with a shortest path in the direction of the contour. + int d = distance_of_segmens(poly, itsct.iSegment, itsct2.iSegment, forward); + if (d < d_next) { + inext = i; + d_next = d; + } + } + } + } + + // 2) Find possible connection points on the same vertical line. + bool same_prev = false; + bool same_next = false; + // Does the perimeter intersect the current vertical line above intrsctn? + for (int i = 0; i < int(il.intersections.size()); ++ i) + if (const SegmentIntersection &it2 = il.intersections[i]; + i != i_intersection && it2.iContour == itsct.iContour && it2.type != itsct.type) { + int d = distance_of_segmens(poly, it2.iSegment, itsct.iSegment, forward); + if (d < d_prev) { + iprev = i; + d_prev = d; + same_prev = true; + } + d = distance_of_segmens(poly, itsct.iSegment, it2.iSegment, forward); + if (d < d_next) { + inext = i; + d_next = d; + same_next = true; + } + } + assert(iprev >= 0); + assert(inext >= 0); + + itsct.prev_on_contour = iprev; + itsct.prev_on_contour_type = same_prev ? + (iprev < i_intersection ? SegmentIntersection::LinkType::Down : SegmentIntersection::LinkType::Up) : + SegmentIntersection::LinkType::Horizontal; + itsct.next_on_contour = inext; + itsct.next_on_contour_type = same_next ? + (inext < i_intersection ? SegmentIntersection::LinkType::Down : SegmentIntersection::LinkType::Up) : + SegmentIntersection::LinkType::Horizontal; + + if (same_prev) { + // Only follow a vertical perimeter segment if it skips just the outer intersections. + SegmentIntersection *it = &itsct; + SegmentIntersection *end = il.intersections.data() + iprev; + assert(it != end); + if (it > end) + std::swap(it, end); + for (++ it; it != end; ++ it) + if (it->is_inner()) { + itsct.prev_on_contour_quality = SegmentIntersection::LinkQuality::Invalid; + break; + } + } + + if (same_next) { + // Only follow a vertical perimeter segment if it skips just the outer intersections. + SegmentIntersection *it = &itsct; + SegmentIntersection *end = il.intersections.data() + inext; + assert(it != end); + if (it > end) + std::swap(it, end); + for (++ it; it != end; ++ it) + if (it->is_inner()) { + itsct.next_on_contour_quality = SegmentIntersection::LinkQuality::Invalid; + break; + } + } + + // If both iprev and inext are on this vline, then there must not be any intersection with the previous or next contour and we will + // not trace this contour when generating infill. + if (same_prev && same_next) { + assert(iprev != i_intersection); + assert(inext != i_intersection); + if ((iprev > i_intersection) == (inext > i_intersection)) { + // Both closest intersections of this contour are on the same vertical line and at the same side of this point. + // Ignore them when tracing the infill. + itsct.prev_on_contour_quality = SegmentIntersection::LinkQuality::Invalid; + itsct.next_on_contour_quality = SegmentIntersection::LinkQuality::Invalid; + } + } + + if (params.dont_connect()) { + if (itsct.prev_on_contour_quality == SegmentIntersection::LinkQuality::Valid) + itsct.prev_on_contour_quality = SegmentIntersection::LinkQuality::TooLong; + if (itsct.next_on_contour_quality == SegmentIntersection::LinkQuality::Valid) + itsct.next_on_contour_quality = SegmentIntersection::LinkQuality::TooLong; + } else if (link_max_length > 0) { + // Measure length of the links. + if (itsct.prev_on_contour_quality == SegmentIntersection::LinkQuality::Valid && + (same_prev ? + measure_perimeter_segment_on_vertical_line_length(poly_with_offset, segs, i_vline, iprev, i_intersection, forward) : + measure_perimeter_horizontal_segment_length(poly_with_offset, segs, i_vline - 1, iprev, i_intersection)) > link_max_length) + itsct.prev_on_contour_quality = SegmentIntersection::LinkQuality::TooLong; + if (itsct.next_on_contour_quality == SegmentIntersection::LinkQuality::Valid && + (same_next ? + measure_perimeter_segment_on_vertical_line_length(poly_with_offset, segs, i_vline, i_intersection, inext, forward) : + measure_perimeter_horizontal_segment_length(poly_with_offset, segs, i_vline, i_intersection, inext)) > link_max_length) + itsct.next_on_contour_quality = SegmentIntersection::LinkQuality::TooLong; + } + } + + // Make the LinkQuality::Invalid symmetric on vertical connections. + for (int i_intersection = 0; i_intersection < int(il.intersections.size()); ++ i_intersection) { + SegmentIntersection &it = il.intersections[i_intersection]; + if (it.has_left_vertical() && it.prev_on_contour_quality == SegmentIntersection::LinkQuality::Invalid) { + SegmentIntersection &it2 = il.intersections[it.left_vertical()]; + assert(it2.left_vertical() == i_intersection); + it2.prev_on_contour_quality = SegmentIntersection::LinkQuality::Invalid; + } + if (it.has_right_vertical() && it.next_on_contour_quality == SegmentIntersection::LinkQuality::Invalid) { + SegmentIntersection &it2 = il.intersections[it.right_vertical()]; + assert(it2.right_vertical() == i_intersection); + it2.next_on_contour_quality = SegmentIntersection::LinkQuality::Invalid; + } + } + } + + assert(validate_segment_intersection_connectivity(segs)); +} + +static void pinch_contours_insert_phony_outer_intersections(std::vector &segs) +{ + // Keep the vector outside the loops, so they will not be reallocated. + // Where to insert new outer points. + std::vector insert_after; + // Mapping of indices of current intersection line after inserting new outer points. + std::vector map; + std::vector temp_intersections; + + for (size_t i_vline = 1; i_vline < segs.size(); ++ i_vline) { + SegmentedIntersectionLine &il = segs[i_vline]; + assert(il.intersections.empty() || il.intersections.size() >= 2); + if (! il.intersections.empty()) { + assert(il.intersections.front().type == SegmentIntersection::OUTER_LOW); + assert(il.intersections.back().type == SegmentIntersection::OUTER_HIGH); + auto end = il.intersections.end() - 1; + insert_after.clear(); + for (auto it = il.intersections.begin() + 1; it != end;) { + if (it->type == SegmentIntersection::OUTER_HIGH) { + ++ it; + assert(it->type == SegmentIntersection::OUTER_LOW); + ++ it; + } else { + auto lo = it; + assert(lo->type == SegmentIntersection::INNER_LOW); + auto hi = ++ it; + assert(hi->type == SegmentIntersection::INNER_HIGH); + auto lo2 = ++ it; + if (lo2->type == SegmentIntersection::INNER_LOW) { + // INNER_HIGH followed by INNER_LOW. The outer contour may have squeezed the inner contour into two separate loops. + // In that case one shall insert a phony OUTER_HIGH / OUTER_LOW pair. + int up = hi->vertical_up(); + int dn = lo2->vertical_down(); +#ifndef _NDEBUG + assert(up == -1 || up > 0); + assert(dn == -1 || dn >= 0); + assert((up == -1 && dn == -1) || (dn + 1 == up)); +#endif // _NDEBUG + bool pinched = dn + 1 != up; + if (pinched) { + // hi is not connected with its inner contour to lo2. + // Insert a phony OUTER_HIGH / OUTER_LOW pair. +#if 0 + static int pinch_idx = 0; + printf("Pinched %d\n", pinch_idx++); +#endif + insert_after.emplace_back(hi - il.intersections.begin()); + } + } + } + } + + if (! insert_after.empty()) { + // Insert phony OUTER_HIGH / OUTER_LOW pairs, adjust indices pointing to intersection points on this contour. + map.clear(); + { + size_t i = 0; + temp_intersections.clear(); + for (size_t idx_inset_after : insert_after) { + for (; i <= idx_inset_after; ++ i) { + map.emplace_back(temp_intersections.size()); + temp_intersections.emplace_back(il.intersections[i]); + } + coord_t pos = (temp_intersections.back().pos() + il.intersections[i].pos()) / 2; + temp_intersections.emplace_back(phony_outer_intersection(SegmentIntersection::OUTER_HIGH, pos)); + temp_intersections.emplace_back(phony_outer_intersection(SegmentIntersection::OUTER_LOW, pos)); + } + for (; i < il.intersections.size(); ++ i) { + map.emplace_back(temp_intersections.size()); + temp_intersections.emplace_back(il.intersections[i]); + } + temp_intersections.swap(il.intersections); + } + // Reindex references on current intersection line. + for (SegmentIntersection &ip : il.intersections) { + if (ip.has_left_vertical()) + ip.prev_on_contour = map[ip.prev_on_contour]; + if (ip.has_right_vertical()) + ip.next_on_contour = map[ip.next_on_contour]; + } + // Reindex references on previous intersection line. + for (SegmentIntersection &ip : segs[i_vline - 1].intersections) + if (ip.has_right_horizontal()) + ip.next_on_contour = map[ip.next_on_contour]; + if (i_vline < segs.size()) { + // Reindex references on next intersection line. + for (SegmentIntersection &ip : segs[i_vline + 1].intersections) + if (ip.has_left_horizontal()) + ip.prev_on_contour = map[ip.prev_on_contour]; + } + } + } + } + + assert(validate_segment_intersection_connectivity(segs)); +} + +// Find the last INNER_HIGH intersection starting with INNER_LOW, that is followed by OUTER_HIGH intersection. +// Such intersection shall always exist. +static const SegmentIntersection& end_of_vertical_run_raw(const SegmentIntersection &start) +{ + assert(start.type == SegmentIntersection::INNER_LOW); + // Step back to the beginning of the vertical segment to mark it as consumed. + auto *it = &start; + do { + ++ it; + } while (it->type != SegmentIntersection::OUTER_HIGH); + if ((it - 1)->is_inner()) { + // Step back. + -- it; + assert(it->type == SegmentIntersection::INNER_HIGH); + } + return *it; +} +static SegmentIntersection& end_of_vertical_run_raw(SegmentIntersection &start) +{ + return const_cast(end_of_vertical_run_raw(std::as_const(start))); +} + +// Find the last INNER_HIGH intersection starting with INNER_LOW, that is followed by OUTER_HIGH intersection, traversing vertical up contours if enabled. +// Such intersection shall always exist. +static const SegmentIntersection& end_of_vertical_run(const SegmentedIntersectionLine &il, const SegmentIntersection &start) +{ + assert(start.type == SegmentIntersection::INNER_LOW); + const SegmentIntersection *end = &end_of_vertical_run_raw(start); + assert(end->type == SegmentIntersection::INNER_HIGH); + for (;;) { + int up = end->vertical_up(); + if (up == -1 || (end->has_left_vertical_up() ? end->prev_on_contour_quality : end->next_on_contour_quality) != SegmentIntersection::LinkQuality::Valid) + break; + const SegmentIntersection &new_start = il.intersections[up]; + assert(end->iContour == new_start.iContour); + assert(new_start.type == SegmentIntersection::INNER_LOW); + end = &end_of_vertical_run_raw(new_start); + } + assert(end->type == SegmentIntersection::INNER_HIGH); + return *end; +} +static SegmentIntersection& end_of_vertical_run(SegmentedIntersectionLine &il, SegmentIntersection &start) +{ + return const_cast(end_of_vertical_run(std::as_const(il), std::as_const(start))); +} + +static void traverse_graph_generate_polylines( + const ExPolygonWithOffset& poly_with_offset, const FillParams& params, const coord_t link_max_length, std::vector& segs, Polylines& polylines_out) +{ + // For each outer only chords, measure their maximum distance to the bow of the outer contour. + // Mark an outer only chord as consumed, if the distance is low. + for (int i_vline = 0; i_vline < int(segs.size()); ++ i_vline) { + SegmentedIntersectionLine &vline = segs[i_vline]; + for (int i_intersection = 0; i_intersection + 1 < int(vline.intersections.size()); ++ i_intersection) { + if (vline.intersections[i_intersection].type == SegmentIntersection::OUTER_LOW && + vline.intersections[i_intersection + 1].type == SegmentIntersection::OUTER_HIGH) { + bool consumed = false; + // if (params.full_infill()) { + // measure_outer_contour_slab(poly_with_offset, segs, i_vline, i_ntersection); + // } else + consumed = true; + vline.intersections[i_intersection].consumed_vertical_up = consumed; + } + } + } + + // Now construct a graph. + // Find the first point. + // Naively one would expect to achieve best results by chaining the paths by the shortest distance, + // but that procedure does not create the longest continuous paths. + // A simple "sweep left to right" procedure achieves better results. + int i_vline = 0; + int i_intersection = -1; + // Follow the line, connect the lines into a graph. + // Until no new line could be added to the output path: + Point pointLast; + Polyline* polyline_current = nullptr; + if (! polylines_out.empty()) + pointLast = polylines_out.back().points.back(); + for (;;) { + if (i_intersection == -1) { + // The path has been interrupted. Find a next starting point, closest to the previous extruder position. + coordf_t dist2min = std::numeric_limits().max(); + for (int i_vline2 = 0; i_vline2 < int(segs.size()); ++ i_vline2) { + const SegmentedIntersectionLine &vline = segs[i_vline2]; + if (! vline.intersections.empty()) { + assert(vline.intersections.size() > 1); + // Even number of intersections with the loops. + assert((vline.intersections.size() & 1) == 0); + assert(vline.intersections.front().type == SegmentIntersection::OUTER_LOW); + for (int i = 0; i < int(vline.intersections.size()); ++ i) { + const SegmentIntersection& intrsctn = vline.intersections[i]; + if (intrsctn.is_outer()) { + assert(intrsctn.is_low() || i > 0); + bool consumed = intrsctn.is_low() ? + intrsctn.consumed_vertical_up : + vline.intersections[i - 1].consumed_vertical_up; + if (! consumed) { + coordf_t dist2 = sqr(coordf_t(pointLast(0) - vline.pos)) + sqr(coordf_t(pointLast(1) - intrsctn.pos())); + if (dist2 < dist2min) { + dist2min = dist2; + i_vline = i_vline2; + i_intersection = i; + //FIXME We are taking the first left point always. Verify, that the caller chains the paths + // by a shortest distance, while reversing the paths if needed. + //if (polylines_out.empty()) + // Initial state, take the first line, which is the first from the left. + goto found; + } + } + } + } + } + } + if (i_intersection == -1) + // We are finished. + break; + found: + // Start a new path. + polylines_out.push_back(Polyline()); + polyline_current = &polylines_out.back(); + // Emit the first point of a path. + pointLast = Point(segs[i_vline].pos, segs[i_vline].intersections[i_intersection].pos()); + polyline_current->points.push_back(pointLast); + } + + // From the initial point (i_vline, i_intersection), follow a path. + SegmentedIntersectionLine &vline = segs[i_vline]; + SegmentIntersection *it = &vline.intersections[i_intersection]; + bool going_up = it->is_low(); + bool try_connect = false; + if (going_up) { + assert(! it->consumed_vertical_up); + assert(i_intersection + 1 < vline.intersections.size()); + // Step back to the beginning of the vertical segment to mark it as consumed. + if (it->is_inner()) { + assert(i_intersection > 0); + -- it; + -- i_intersection; + } + // Consume the complete vertical segment up to the outer contour. + do { + it->consumed_vertical_up = true; + ++ it; + ++ i_intersection; + assert(i_intersection < vline.intersections.size()); + } while (it->type != SegmentIntersection::OUTER_HIGH); + if ((it - 1)->is_inner()) { + // Step back. + -- it; + -- i_intersection; + assert(it->type == SegmentIntersection::INNER_HIGH); + try_connect = true; + } + } else { + // Going down. + assert(it->is_high()); + assert(i_intersection > 0); + assert(!(it - 1)->consumed_vertical_up); + // Consume the complete vertical segment up to the outer contour. + if (it->is_inner()) + it->consumed_vertical_up = true; + do { + assert(i_intersection > 0); + -- it; + -- i_intersection; + it->consumed_vertical_up = true; + } while (it->type != SegmentIntersection::OUTER_LOW); + if ((it + 1)->is_inner()) { + // Step back. + ++ it; + ++ i_intersection; + assert(it->type == SegmentIntersection::INNER_LOW); + try_connect = true; + } + } + if (try_connect) { + // Decide, whether to finish the segment, or whether to follow the perimeter. + // 1) Find possible connection points on the previous / next vertical line. + int i_prev = it->left_horizontal(); + int i_next = it->right_horizontal(); + bool intersection_prev_valid = intersection_on_prev_vertical_line_valid(segs, i_vline, i_intersection); + bool intersection_next_valid = intersection_on_next_vertical_line_valid(segs, i_vline, i_intersection); + bool intersection_horizontal_valid = intersection_prev_valid || intersection_next_valid; + // Mark both the left and right connecting segment as consumed, because one cannot go to this intersection point as it has been consumed. + if (i_prev != -1) + segs[i_vline - 1].intersections[i_prev].consumed_perimeter_right = true; + if (i_next != -1) + it->consumed_perimeter_right = true; + + // Try to connect to a previous or next vertical line, making a zig-zag pattern. + if (intersection_horizontal_valid) { + // A horizontal connection along the perimeter line exists. + assert(it->is_inner()); + bool take_next = intersection_next_valid; + if (intersection_prev_valid && intersection_next_valid) { + // Take the shorter segment. This greedy heuristics may not be the best. + coordf_t dist_prev = measure_perimeter_horizontal_segment_length(poly_with_offset, segs, i_vline - 1, i_prev, i_intersection); + coordf_t dist_next = measure_perimeter_horizontal_segment_length(poly_with_offset, segs, i_vline, i_intersection, i_next); + take_next = dist_next < dist_prev; + } + polyline_current->points.emplace_back(vline.pos, it->pos()); + emit_perimeter_prev_next_segment(poly_with_offset, segs, i_vline, it->iContour, i_intersection, take_next ? i_next : i_prev, *polyline_current, take_next); + //FIXME consume the left / right connecting segments at the other end of this line? Currently it is not critical because a perimeter segment is not followed if the vertical segment at the other side has already been consumed. + // Advance to the neighbor line. + if (take_next) { + ++ i_vline; + i_intersection = i_next; + } + else { + -- i_vline; + i_intersection = i_prev; + } + continue; + } + + // Try to connect to a previous or next point on the same vertical line. + int i_vertical = it->vertical_outside(); + auto vertical_link_quality = (i_vertical == -1 || vline.intersections[i_vertical + (going_up ? 0 : -1)].consumed_vertical_up) ? + SegmentIntersection::LinkQuality::Invalid : it->vertical_outside_quality(); +#if 0 + if (vertical_link_quality == SegmentIntersection::LinkQuality::Valid || + // Follow the link if there is no horizontal link available. + (! intersection_horizontal_valid && vertical_link_quality != SegmentIntersection::LinkQuality::Invalid)) { +#else + if (vertical_link_quality != SegmentIntersection::LinkQuality::Invalid) { +#endif + assert(it->iContour == vline.intersections[i_vertical].iContour); + polyline_current->points.emplace_back(vline.pos, it->pos()); + if (vertical_link_quality == SegmentIntersection::LinkQuality::Valid) + // Consume the connecting contour and the next segment. + emit_perimeter_segment_on_vertical_line(poly_with_offset, segs, i_vline, it->iContour, i_intersection, i_vertical, + *polyline_current, going_up ? it->has_left_vertical_up() : it->has_right_vertical_down()); + else { + // Just skip the connecting contour and start a new path. + polylines_out.emplace_back(); + polyline_current = &polylines_out.back(); + polyline_current->points.emplace_back(vline.pos, vline.intersections[i_vertical].pos()); + } + // Mark both the left and right connecting segment as consumed, because one cannot go to this intersection point as it has been consumed. + // If there are any outer intersection points skipped (bypassed) by the contour, + // mark them as processed. + if (going_up) + for (int i = i_intersection; i < i_vertical; ++i) + vline.intersections[i].consumed_vertical_up = true; + else + for (int i = i_vertical; i < i_intersection; ++i) + vline.intersections[i].consumed_vertical_up = true; + // seg.intersections[going_up ? i_intersection : i_intersection - 1].consumed_vertical_up = true; + it->consumed_perimeter_right = true; + (going_up ? ++it : --it)->consumed_perimeter_right = true; + i_intersection = i_vertical; + continue; + } + + // No way to continue the current polyline. Take the rest of the line up to the outer contour. + // This will finish the polyline, starting another polyline at a new point. + going_up ? ++ it : -- it; + } + + // Finish the current vertical line, + // reset the current vertical line to pick a new starting point in the next round. + assert(it->is_outer()); + assert(it->is_high() == going_up); + pointLast = Point(vline.pos, it->pos()); + polyline_current->points.emplace_back(pointLast); + // Handle duplicate points and zero length segments. + polyline_current->remove_duplicate_points(); + assert(! polyline_current->has_duplicate_points()); + // Handle nearly zero length edges. + if (polyline_current->points.size() <= 1 || + (polyline_current->points.size() == 2 && + std::abs(polyline_current->points.front()(0) - polyline_current->points.back()(0)) < SCALED_EPSILON && + std::abs(polyline_current->points.front()(1) - polyline_current->points.back()(1)) < SCALED_EPSILON)) + polylines_out.pop_back(); + it = nullptr; + i_intersection = -1; + polyline_current = nullptr; + } +} + +struct MonotonicRegion +{ + struct Boundary { + int vline; + int low; + int high; + }; + + Boundary left; + Boundary right; + + // Length when starting at left.low + float len1 { 0.f }; + // Length when starting at left.high + float len2 { 0.f }; + // If true, then when starting at left.low, then ending at right.high and vice versa. + // If false, then ending at the same side as starting. + bool flips { false }; + + float length(bool region_flipped) const { return region_flipped ? len2 : len1; } + int left_intersection_point(bool region_flipped) const { return region_flipped ? left.high : left.low; } + int right_intersection_point(bool region_flipped) const { return (region_flipped == flips) ? right.low : right.high; } + +#if NDEBUG + // Left regions are used to track whether all regions left to this one have already been printed. + boost::container::small_vector left_neighbors; + // Right regions are held to pick a next region to be extruded using the "Ant colony" heuristics. + boost::container::small_vector right_neighbors; +#else + // For debugging, use the normal vector as it is better supported by debug visualizers. + std::vector left_neighbors; + std::vector right_neighbors; +#endif +}; + +struct AntPath +{ + float length { -1. }; // Length of the link to the next region. + float visibility { -1. }; // 1 / length. Which length, just to the next region, or including the path accross the region? + float pheromone { 0 }; // <0, 1> +}; + +struct MonotonicRegionLink +{ + MonotonicRegion *region; + bool flipped; + // Distance of right side of this region to left side of the next region, if the "flipped" flag of this region and the next region + // is applied as defined. + AntPath *next; + // Distance of right side of this region to left side of the next region, if the "flipped" flag of this region and the next region + // is applied in reverse order as if the zig-zags were flipped. + AntPath *next_flipped; +}; + +// Matrix of paths (AntPath) connecting ends of MontonousRegions. +// AntPath lengths and their derived visibilities refer to the length of the perimeter line if such perimeter segment exists. +class AntPathMatrix +{ +public: + AntPathMatrix( + const std::vector ®ions, + const ExPolygonWithOffset &poly_with_offset, + const std::vector &segs, + const float initial_pheromone) : + m_regions(regions), + m_poly_with_offset(poly_with_offset), + m_segs(segs), + // From end of one region to the start of another region, both flipped or not flipped. + m_matrix(regions.size() * regions.size() * 4, AntPath{ -1., -1., initial_pheromone}) {} + + void update_inital_pheromone(float initial_pheromone) + { + for (AntPath &ap : m_matrix) + ap.pheromone = initial_pheromone; + } + + AntPath& operator()(const MonotonicRegion ®ion_from, bool flipped_from, const MonotonicRegion ®ion_to, bool flipped_to) + { + int row = 2 * int(®ion_from - m_regions.data()) + flipped_from; + int col = 2 * int(®ion_to - m_regions.data()) + flipped_to; + AntPath &path = m_matrix[row * m_regions.size() * 2 + col]; + if (path.length == -1.) { + // This path is accessed for the first time. Update the length and cost. + int i_from = region_from.right_intersection_point(flipped_from); + int i_to = region_to.left_intersection_point(flipped_to); + const SegmentedIntersectionLine &vline_from = m_segs[region_from.right.vline]; + const SegmentedIntersectionLine &vline_to = m_segs[region_to.left.vline]; + if (region_from.right.vline + 1 == region_from.left.vline) { + int i_right = vline_from.intersections[i_from].right_horizontal(); + if (i_right == i_to && vline_from.intersections[i_from].next_on_contour_quality == SegmentIntersection::LinkQuality::Valid) { + // Measure length along the contour. + path.length = unscale(measure_perimeter_horizontal_segment_length(m_poly_with_offset, m_segs, region_from.right.vline, i_from, i_to)); + } + } + if (path.length == -1.) { + // Just apply the Eucledian distance of the end points. + path.length = unscale(Vec2f(vline_to.pos - vline_from.pos, vline_to.intersections[i_to].pos() - vline_from.intersections[i_from].pos()).norm()); + } + path.visibility = 1.f / (path.length + float(EPSILON)); + } + return path; + } + + AntPath& operator()(const MonotonicRegionLink ®ion_from, const MonotonicRegion ®ion_to, bool flipped_to) + { return (*this)(*region_from.region, region_from.flipped, region_to, flipped_to); } + AntPath& operator()(const MonotonicRegion ®ion_from, bool flipped_from, const MonotonicRegionLink ®ion_to) + { return (*this)(region_from, flipped_from, *region_to.region, region_to.flipped); } + AntPath& operator()(const MonotonicRegionLink ®ion_from, const MonotonicRegionLink ®ion_to) + { return (*this)(*region_from.region, region_from.flipped, *region_to.region, region_to.flipped); } + +private: + // Source regions, used for addressing and updating m_matrix. + const std::vector &m_regions; + // To calculate the intersection points and contour lengths. + const ExPolygonWithOffset &m_poly_with_offset; + const std::vector &m_segs; + // From end of one region to the start of another region, both flipped or not flipped. + //FIXME one may possibly use sparse representation of the matrix, likely using hashing. + std::vector m_matrix; +}; + +static const SegmentIntersection& vertical_run_bottom(const SegmentedIntersectionLine &vline, const SegmentIntersection &start) +{ + assert(start.is_inner()); + const SegmentIntersection *it = &start; + // Find the lowest SegmentIntersection::INNER_LOW starting with right. + for (;;) { + while (it->type != SegmentIntersection::INNER_LOW) + -- it; + if ((it - 1)->type == SegmentIntersection::INNER_HIGH) + -- it; + else { + int down = it->vertical_down(); + if (down == -1 || it->vertical_down_quality() != SegmentIntersection::LinkQuality::Valid) + break; + it = &vline.intersections[down]; + assert(it->type == SegmentIntersection::INNER_HIGH); + } + } + return *it; +} +static SegmentIntersection& vertical_run_bottom(SegmentedIntersectionLine& vline, SegmentIntersection& start) +{ + return const_cast(vertical_run_bottom(std::as_const(vline), std::as_const(start))); +} + +static const SegmentIntersection& vertical_run_top(const SegmentedIntersectionLine &vline, const SegmentIntersection &start) +{ + assert(start.is_inner()); + const SegmentIntersection *it = &start; + // Find the lowest SegmentIntersection::INNER_LOW starting with right. + for (;;) { + while (it->type != SegmentIntersection::INNER_HIGH) + ++ it; + if ((it + 1)->type == SegmentIntersection::INNER_LOW) + ++ it; + else { + int up = it->vertical_up(); + if (up == -1 || it->vertical_up_quality() != SegmentIntersection::LinkQuality::Valid) + break; + it = &vline.intersections[up]; + assert(it->type == SegmentIntersection::INNER_LOW); + } + } + return *it; +} +static SegmentIntersection& vertical_run_top(SegmentedIntersectionLine& vline, SegmentIntersection& start) +{ + return const_cast(vertical_run_top(std::as_const(vline), std::as_const(start))); +} + +static SegmentIntersection* overlap_bottom(SegmentIntersection &start, SegmentIntersection &end, SegmentedIntersectionLine &vline_this, SegmentedIntersectionLine &vline_other, SegmentIntersection::Side side) +{ + SegmentIntersection *other = nullptr; + assert(start.is_inner()); + assert(end.is_inner()); + const SegmentIntersection *it = &start; + for (;;) { + if (it->is_inner()) { + int i = it->horizontal(side); + if (i != -1) { + other = &vline_other.intersections[i]; + break; + } + if (it == &end) + break; + } + if (it->type != SegmentIntersection::INNER_HIGH) + ++ it; + else if ((it + 1)->type == SegmentIntersection::INNER_LOW) + ++ it; + else { + int up = it->vertical_up(); + if (up == -1 || it->vertical_up_quality() != SegmentIntersection::LinkQuality::Valid) + break; + it = &vline_this.intersections[up]; + assert(it->type == SegmentIntersection::INNER_LOW); + } + } + return other == nullptr ? nullptr : &vertical_run_bottom(vline_other, *other); +} + +static SegmentIntersection* overlap_top(SegmentIntersection &start, SegmentIntersection &end, SegmentedIntersectionLine &vline_this, SegmentedIntersectionLine &vline_other, SegmentIntersection::Side side) +{ + SegmentIntersection *other = nullptr; + assert(start.is_inner()); + assert(end.is_inner()); + const SegmentIntersection *it = &end; + for (;;) { + if (it->is_inner()) { + int i = it->horizontal(side); + if (i != -1) { + other = &vline_other.intersections[i]; + break; + } + if (it == &start) + break; + } + if (it->type != SegmentIntersection::INNER_LOW) + -- it; + else if ((it - 1)->type == SegmentIntersection::INNER_HIGH) + -- it; + else { + int down = it->vertical_down(); + if (down == -1 || it->vertical_down_quality() != SegmentIntersection::LinkQuality::Valid) + break; + it = &vline_this.intersections[down]; + assert(it->type == SegmentIntersection::INNER_HIGH); + } + } + return other == nullptr ? nullptr : &vertical_run_top(vline_other, *other); +} + +static std::pair left_overlap(SegmentIntersection &start, SegmentIntersection &end, SegmentedIntersectionLine &vline_this, SegmentedIntersectionLine &vline_left) +{ + std::pair out(nullptr, nullptr); + out.first = overlap_bottom(start, end, vline_this, vline_left, SegmentIntersection::Side::Left); + if (out.first != nullptr) + out.second = overlap_top(start, end, vline_this, vline_left, SegmentIntersection::Side::Left); + assert((out.first == nullptr && out.second == nullptr) || out.first < out.second); + return out; +} + +static std::pair left_overlap(std::pair &start_end, SegmentedIntersectionLine &vline_this, SegmentedIntersectionLine &vline_left) +{ + assert((start_end.first == nullptr) == (start_end.second == nullptr)); + return start_end.first == nullptr ? start_end : left_overlap(*start_end.first, *start_end.second, vline_this, vline_left); +} + +static std::pair right_overlap(SegmentIntersection &start, SegmentIntersection &end, SegmentedIntersectionLine &vline_this, SegmentedIntersectionLine &vline_right) +{ + std::pair out(nullptr, nullptr); + out.first = overlap_bottom(start, end, vline_this, vline_right, SegmentIntersection::Side::Right); + if (out.first != nullptr) + out.second = overlap_top(start, end, vline_this, vline_right, SegmentIntersection::Side::Right); + assert((out.first == nullptr && out.second == nullptr) || out.first < out.second); + return out; +} + +static std::pair right_overlap(std::pair &start_end, SegmentedIntersectionLine &vline_this, SegmentedIntersectionLine &vline_right) +{ + assert((start_end.first == nullptr) == (start_end.second == nullptr)); + return start_end.first == nullptr ? start_end : right_overlap(*start_end.first, *start_end.second, vline_this, vline_right); +} + +static std::vector generate_montonous_regions(std::vector &segs) +{ + std::vector monotonic_regions; + +#ifndef NDEBUG + #define SLIC3R_DEBUG_MONOTONOUS_REGIONS +#endif + +#ifdef SLIC3R_DEBUG_MONOTONOUS_REGIONS + std::vector>> consumed(segs.size()); + auto test_overlap = [&consumed](int segment, int low, int high) { + for (const std::pair& interval : consumed[segment]) + if ((low >= interval.first && low <= interval.second) || + (interval.first >= low && interval.first <= high)) + return true; + consumed[segment].emplace_back(low, high); + return false; + }; +#else + auto test_overlap = [](int, int, int) { return false; }; +#endif + + for (int i_vline_seed = 0; i_vline_seed < int(segs.size()); ++ i_vline_seed) { + SegmentedIntersectionLine &vline_seed = segs[i_vline_seed]; + for (int i_intersection_seed = 1; i_intersection_seed + 1 < int(vline_seed.intersections.size()); ) { + while (i_intersection_seed < int(vline_seed.intersections.size()) && + vline_seed.intersections[i_intersection_seed].type != SegmentIntersection::INNER_LOW) + ++ i_intersection_seed; + if (i_intersection_seed == int(vline_seed.intersections.size())) + break; + SegmentIntersection *start = &vline_seed.intersections[i_intersection_seed]; + SegmentIntersection *end = &end_of_vertical_run(vline_seed, *start); + if (! start->consumed_vertical_up) { + // Draw a new monotonic region starting with this segment. + // while there is only a single right neighbor + int i_vline = i_vline_seed; + std::pair left(start, end); + MonotonicRegion region; + region.left.vline = i_vline; + region.left.low = int(left.first - vline_seed.intersections.data()); + region.left.high = int(left.second - vline_seed.intersections.data()); + region.right = region.left; + assert(! test_overlap(region.left.vline, region.left.low, region.left.high)); + start->consumed_vertical_up = true; + int num_lines = 1; + while (++ i_vline < int(segs.size())) { + SegmentedIntersectionLine &vline_left = segs[i_vline - 1]; + SegmentedIntersectionLine &vline_right = segs[i_vline]; + std::pair right = right_overlap(left, vline_left, vline_right); + if (right.first == nullptr) + // No neighbor at the right side of the current segment. + break; + SegmentIntersection* right_top_first = &vertical_run_top(vline_right, *right.first); + if (right_top_first != right.second) + // This segment overlaps with multiple segments at its right side. + break; + std::pair right_left = left_overlap(right, vline_right, vline_left); + if (left != right_left) + // Left & right draws don't overlap exclusively, right neighbor segment overlaps with multiple segments at its left. + break; + region.right.vline = i_vline; + region.right.low = int(right.first - vline_right.intersections.data()); + region.right.high = int(right.second - vline_right.intersections.data()); + right.first->consumed_vertical_up = true; + assert(! test_overlap(region.right.vline, region.right.low, region.right.high)); + ++ num_lines; + left = right; + } + // Even number of lines makes the infill zig-zag to exit on the other side of the region than where it starts. + region.flips = (num_lines & 1) != 0; + monotonic_regions.emplace_back(region); + } + i_intersection_seed = int(end - vline_seed.intersections.data()) + 1; + } + } + + return monotonic_regions; +} + +// Traverse path, calculate length of the draw for the purpose of optimization. +// This function is very similar to polylines_from_paths() in the way how it traverses the path, but +// polylines_from_paths() emits a path, while this function just calculates the path length. +static float montonous_region_path_length(const MonotonicRegion ®ion, bool dir, const ExPolygonWithOffset &poly_with_offset, const std::vector &segs) +{ + // From the initial point (i_vline, i_intersection), follow a path. + int i_intersection = region.left_intersection_point(dir); + int i_vline = region.left.vline; + float total_length = 0.; + bool no_perimeter = false; + Vec2f last_point; + + for (;;) { + const SegmentedIntersectionLine &vline = segs[i_vline]; + const SegmentIntersection *it = &vline.intersections[i_intersection]; + const bool going_up = it->is_low(); + + if (no_perimeter) + total_length += (last_point - Vec2f(vline.pos, (it + (going_up ? - 1 : 1))->pos())).norm(); + + int iright = it->right_horizontal(); + if (going_up) { + // Traverse the complete vertical segment up to the inner contour. + for (;;) { + do { + ++ it; + iright = std::max(iright, it->right_horizontal()); + assert(it->is_inner()); + } while (it->type != SegmentIntersection::INNER_HIGH || (it + 1)->type != SegmentIntersection::OUTER_HIGH); + int inext = it->vertical_up(); + if (inext == -1 || it->vertical_up_quality() != SegmentIntersection::LinkQuality::Valid) + break; + assert(it->iContour == vline.intersections[inext].iContour); + it = vline.intersections.data() + inext; + } + } else { + // Going down. + assert(it->is_high()); + assert(i_intersection > 0); + for (;;) { + do { + -- it; + if (int iright_new = it->right_horizontal(); iright_new != -1) + iright = iright_new; + assert(it->is_inner()); + } while (it->type != SegmentIntersection::INNER_LOW || (it - 1)->type != SegmentIntersection::OUTER_LOW); + int inext = it->vertical_down(); + if (inext == -1 || it->vertical_down_quality() != SegmentIntersection::LinkQuality::Valid) + break; + assert(it->iContour == vline.intersections[inext].iContour); + it = vline.intersections.data() + inext; + } + } + + if (i_vline == region.right.vline) + break; + + int inext = it->right_horizontal(); + if (inext != -1 && it->next_on_contour_quality == SegmentIntersection::LinkQuality::Valid) { + // Summarize length of the connection line along the perimeter. + //FIXME should it be weighted with a lower weight than non-extruding connection line? What weight? + // Taking half of the length. + total_length += 0.5f * float(measure_perimeter_horizontal_segment_length(poly_with_offset, segs, i_vline, it - vline.intersections.data(), inext)); + // Don't add distance to the next vertical line start to the total length. + no_perimeter = false; + i_intersection = inext; + } else { + // Finish the current vertical line, + going_up ? ++ it : -- it; + assert(it->is_outer()); + assert(it->is_high() == going_up); + // Mark the end of this vertical line. + last_point = Vec2f(vline.pos, it->pos()); + // Remember to add distance to the last point. + no_perimeter = true; + if (inext == -1) { + // Find the end of the next overlapping vertical segment. + const SegmentedIntersectionLine &vline_right = segs[i_vline + 1]; + const SegmentIntersection *right = going_up ? + &vertical_run_top(vline_right, vline_right.intersections[iright]) : &vertical_run_bottom(vline_right, vline_right.intersections[iright]); + i_intersection = int(right - vline_right.intersections.data()); + } else + i_intersection = inext; + } + + ++ i_vline; + } + + return unscale(total_length); +} + +static void connect_monotonic_regions(std::vector ®ions, const ExPolygonWithOffset &poly_with_offset, std::vector &segs) +{ + // Map from low intersection to left / right side of a monotonic region. + using MapType = std::pair; + std::vector map_intersection_to_region_start; + std::vector map_intersection_to_region_end; + map_intersection_to_region_start.reserve(regions.size()); + map_intersection_to_region_end.reserve(regions.size()); + for (MonotonicRegion ®ion : regions) { + map_intersection_to_region_start.emplace_back(&segs[region.left.vline].intersections[region.left.low], ®ion); + map_intersection_to_region_end.emplace_back(&segs[region.right.vline].intersections[region.right.low], ®ion); + } + auto intersections_lower = [](const MapType &l, const MapType &r){ return l.first < r.first ; }; + auto intersections_equal = [](const MapType &l, const MapType &r){ return l.first == r.first ; }; + std::sort(map_intersection_to_region_start.begin(), map_intersection_to_region_start.end(), intersections_lower); + std::sort(map_intersection_to_region_end.begin(), map_intersection_to_region_end.end(), intersections_lower); + + // Scatter links to neighboring regions. + for (MonotonicRegion ®ion : regions) { + if (region.left.vline > 0) { + auto &vline = segs[region.left.vline]; + auto &vline_left = segs[region.left.vline - 1]; + auto[lbegin, lend] = left_overlap(vline.intersections[region.left.low], vline.intersections[region.left.high], vline, vline_left); + if (lbegin != nullptr) { + for (;;) { + MapType key(lbegin, nullptr); + auto it = std::lower_bound(map_intersection_to_region_end.begin(), map_intersection_to_region_end.end(), key); + assert(it != map_intersection_to_region_end.end() && it->first == key.first); + it->second->right_neighbors.emplace_back(®ion); + SegmentIntersection *lnext = &vertical_run_top(vline_left, *lbegin); + if (lnext == lend) + break; + while (lnext->type != SegmentIntersection::INNER_LOW) + ++ lnext; + lbegin = lnext; + } + } + } + if (region.right.vline + 1 < int(segs.size())) { + auto &vline = segs[region.right.vline]; + auto &vline_right = segs[region.right.vline + 1]; + auto [rbegin, rend] = right_overlap(vline.intersections[region.right.low], vline.intersections[region.right.high], vline, vline_right); + if (rbegin != nullptr) { + for (;;) { + MapType key(rbegin, nullptr); + auto it = std::lower_bound(map_intersection_to_region_start.begin(), map_intersection_to_region_start.end(), key); + assert(it != map_intersection_to_region_start.end() && it->first == key.first); + it->second->left_neighbors.emplace_back(®ion); + SegmentIntersection *rnext = &vertical_run_top(vline_right, *rbegin); + if (rnext == rend) + break; + while (rnext->type != SegmentIntersection::INNER_LOW) + ++ rnext; + rbegin = rnext; + } + } + } + } + + // Sometimes a segment may indicate that it connects to a segment on the other side while the other does not. + // This may be a valid case if one side contains runs of OUTER_LOW, INNER_LOW, {INNER_HIGH, INNER_LOW}*, INNER_HIGH, OUTER_HIGH, + // where the part in the middle does not connect to the other side, but it will be extruded through. + for (MonotonicRegion ®ion : regions) { + std::sort(region.left_neighbors.begin(), region.left_neighbors.end()); + std::sort(region.right_neighbors.begin(), region.right_neighbors.end()); + } + for (MonotonicRegion ®ion : regions) { + for (MonotonicRegion *neighbor : region.left_neighbors) { + auto it = std::lower_bound(neighbor->right_neighbors.begin(), neighbor->right_neighbors.end(), ®ion); + if (it == neighbor->right_neighbors.end() || *it != ®ion) + neighbor->right_neighbors.insert(it, ®ion); + } + for (MonotonicRegion *neighbor : region.right_neighbors) { + auto it = std::lower_bound(neighbor->left_neighbors.begin(), neighbor->left_neighbors.end(), ®ion); + if (it == neighbor->left_neighbors.end() || *it != ®ion) + neighbor->left_neighbors.insert(it, ®ion); + } + } + +#ifndef NDEBUG + // Verify symmetry of the left_neighbors / right_neighbors. + for (MonotonicRegion ®ion : regions) { + for (MonotonicRegion *neighbor : region.left_neighbors) { + assert(std::count(region.left_neighbors.begin(), region.left_neighbors.end(), neighbor) == 1); + assert(std::find(neighbor->right_neighbors.begin(), neighbor->right_neighbors.end(), ®ion) != neighbor->right_neighbors.end()); + } + for (MonotonicRegion *neighbor : region.right_neighbors) { + assert(std::count(region.right_neighbors.begin(), region.right_neighbors.end(), neighbor) == 1); + assert(std::find(neighbor->left_neighbors.begin(), neighbor->left_neighbors.end(), ®ion) != neighbor->left_neighbors.end()); + } + } +#endif /* NDEBUG */ + + // Fill in sum length of connecting lines of a region. This length is used for optimizing the infill path for minimum length. + for (MonotonicRegion ®ion : regions) { + region.len1 = montonous_region_path_length(region, false, poly_with_offset, segs); + region.len2 = montonous_region_path_length(region, true, poly_with_offset, segs); + // Subtract the smaller length from the longer one, so we will optimize just with the positive difference of the two. + if (region.len1 > region.len2) { + region.len1 -= region.len2; + region.len2 = 0; + } else { + region.len2 -= region.len1; + region.len1 = 0; + } + } +} + +// Raad Salman: Algorithms for the Precedence Constrained Generalized Travelling Salesperson Problem +// https://www.chalmers.se/en/departments/math/research/research-groups/optimization/OptimizationMasterTheses/MScThesis-RaadSalman-final.pdf +// Algorithm 6.1 Lexicographic Path Preserving 3-opt +// Optimize path while maintaining the ordering constraints. +void monotonic_3_opt(std::vector &path, const std::vector &segs) +{ + // When doing the 3-opt path preserving flips, one has to fulfill two constraints: + // + // 1) The new path should be shorter than the old path. + // 2) The precedence constraints shall be satisified on the new path. + // + // Branch & bound with KD-tree may be used with the shorter path constraint, but the precedence constraint will have to be recalculated for each + // shorter path candidate found, which has a quadratic cost for a dense precedence graph. For a sparse precedence graph the precedence + // constraint verification will be cheaper. + // + // On the other side, if the full search space is traversed as in the diploma thesis by Raad Salman (page 24, Algorithm 6.1 Lexicographic Path Preserving 3-opt), + // then the precedence constraint verification is amortized inside the O(n^3) loop. Now which is better for our task? + // + // It is beneficial to also try flipping of the infill zig-zags, for which a prefix sum of both flipped and non-flipped paths over + // MonotonicRegionLinks may be utilized, however updating the prefix sum has a linear complexity, the same complexity as doing the 3-opt + // exchange by copying the pieces. +} + +// #define SLIC3R_DEBUG_ANTS + +template +inline void print_ant(const std::string& fmt, TArgs&&... args) { +#ifdef SLIC3R_DEBUG_ANTS + std::cout << Slic3r::format(fmt, std::forward(args)...) << std::endl; +#endif +} + +// Find a run through monotonic infill blocks using an 'Ant colony" optimization method. +// http://www.scholarpedia.org/article/Ant_colony_optimization +static std::vector chain_monotonic_regions( + std::vector ®ions, const ExPolygonWithOffset &poly_with_offset, const std::vector &segs, std::mt19937_64 &rng) +{ + // Number of left neighbors (regions that this region depends on, this region cannot be printed before the regions left of it are printed) + self. + std::vector left_neighbors_unprocessed(regions.size(), 1); + // Queue of regions, which have their left neighbors already printed. + std::vector queue; + queue.reserve(regions.size()); + for (MonotonicRegion ®ion : regions) + if (region.left_neighbors.empty()) + queue.emplace_back(®ion); + else + left_neighbors_unprocessed[®ion - regions.data()] += int(region.left_neighbors.size()); + // Make copy of structures that need to be initialized at each ant iteration. + auto left_neighbors_unprocessed_initial = left_neighbors_unprocessed; + auto queue_initial = queue; + + std::vector path, best_path; + path.reserve(regions.size()); + best_path.reserve(regions.size()); + float best_path_length = std::numeric_limits::max(); + + struct NextCandidate { + MonotonicRegion *region; + AntPath *link; + AntPath *link_flipped; + float probability; + bool dir; + }; + std::vector next_candidates; + + auto validate_unprocessed = +#ifdef NDEBUG + []() { return true; }; +#else + [®ions, &left_neighbors_unprocessed, &path, &queue]() { + std::vector regions_processed(regions.size(), false); + std::vector regions_in_queue(regions.size(), false); + for (const MonotonicRegion *region : queue) { + // This region is not processed yet, his predecessors are processed. + assert(left_neighbors_unprocessed[region - regions.data()] == 1); + regions_in_queue[region - regions.data()] = true; + } + for (const MonotonicRegionLink &link : path) { + assert(left_neighbors_unprocessed[link.region - regions.data()] == 0); + regions_processed[link.region - regions.data()] = true; + } + for (size_t i = 0; i < regions_processed.size(); ++ i) { + assert(! regions_processed[i] || ! regions_in_queue[i]); + const MonotonicRegion ®ion = regions[i]; + if (regions_processed[i] || regions_in_queue[i]) { + assert(left_neighbors_unprocessed[i] == (regions_in_queue[i] ? 1 : 0)); + // All left neighbors should be processed already. + for (const MonotonicRegion *left : region.left_neighbors) { + assert(regions_processed[left - regions.data()]); + assert(left_neighbors_unprocessed[left - regions.data()] == 0); + } + } else { + // Some left neihgbor should not be processed yet. + assert(left_neighbors_unprocessed[i] > 1); + size_t num_predecessors_unprocessed = 0; + bool has_left_last_on_path = false; + for (const MonotonicRegion* left : region.left_neighbors) { + size_t iprev = left - regions.data(); + if (regions_processed[iprev]) { + assert(left_neighbors_unprocessed[iprev] == 0); + if (left == path.back().region) { + // This region should actually be on queue, but to optimize the queue management + // this item will be processed in the next round by traversing path.back().region->right_neighbors before processing the queue. + assert(! has_left_last_on_path); + has_left_last_on_path = true; + ++ num_predecessors_unprocessed; + } + } else { + if (regions_in_queue[iprev]) + assert(left_neighbors_unprocessed[iprev] == 1); + else + assert(left_neighbors_unprocessed[iprev] > 1); + ++ num_predecessors_unprocessed; + } + } + assert(num_predecessors_unprocessed > 0); + assert(left_neighbors_unprocessed[i] == num_predecessors_unprocessed + 1); + } + } + return true; + }; +#endif /* NDEBUG */ + + // How many times to repeat the ant simulation (number of ant generations). + constexpr int num_rounds = 25; + // After how many rounds without an improvement to exit? + constexpr int num_rounds_no_change_exit = 8; + // With how many ants each of the run will be performed? + const int num_ants = std::min(int(regions.size()), 10); + // Base (initial) pheromone level. This value will be adjusted based on the length of the first greedy path found. + float pheromone_initial_deposit = 0.5f; + // Evaporation rate of pheromones. + constexpr float pheromone_evaporation = 0.1f; + // Evaporation rate to diversify paths taken by individual ants. + constexpr float pheromone_diversification = 0.1f; + // Probability at which to take the next best path. Otherwise take the the path based on the cost distribution. + constexpr float probability_take_best = 0.9f; + // Exponents of the cost function. + constexpr float pheromone_alpha = 1.f; // pheromone exponent + constexpr float pheromone_beta = 2.f; // attractiveness weighted towards edge length + + AntPathMatrix path_matrix(regions, poly_with_offset, segs, pheromone_initial_deposit); + + // Find an initial path in a greedy way, set the initial pheromone value to 10% of the cost of the greedy path. + { + // Construct the first path in a greedy way to calculate an initial value of the pheromone value. + queue = queue_initial; + left_neighbors_unprocessed = left_neighbors_unprocessed_initial; + assert(validate_unprocessed()); + // Pick the last of the queue. + MonotonicRegionLink path_end { queue.back(), false }; + queue.pop_back(); + -- left_neighbors_unprocessed[path_end.region - regions.data()]; + + float total_length = path_end.region->length(false); + while (! queue.empty() || ! path_end.region->right_neighbors.empty()) { + // Chain. + MonotonicRegion ®ion = *path_end.region; + bool dir = path_end.flipped; + NextCandidate next_candidate; + next_candidate.probability = 0; + for (MonotonicRegion *next : region.right_neighbors) { + int &unprocessed = left_neighbors_unprocessed[next - regions.data()]; + assert(unprocessed > 1); + if (left_neighbors_unprocessed[next - regions.data()] == 2) { + // Dependencies of the successive blocks are satisfied. + AntPath &path1 = path_matrix(region, dir, *next, false); + AntPath &path2 = path_matrix(region, dir, *next, true); + if (path1.visibility > next_candidate.probability) + next_candidate = { next, &path1, &path1, path1.visibility, false }; + if (path2.visibility > next_candidate.probability) + next_candidate = { next, &path2, &path2, path2.visibility, true }; + } + } + bool from_queue = next_candidate.probability == 0; + if (from_queue) { + for (MonotonicRegion *next : queue) { + AntPath &path1 = path_matrix(region, dir, *next, false); + AntPath &path2 = path_matrix(region, dir, *next, true); + if (path1.visibility > next_candidate.probability) + next_candidate = { next, &path1, &path1, path1.visibility, false }; + if (path2.visibility > next_candidate.probability) + next_candidate = { next, &path2, &path2, path2.visibility, true }; + } + } + // Move the other right neighbors with satisified constraints to the queue. + for (MonotonicRegion *next : region.right_neighbors) + if (-- left_neighbors_unprocessed[next - regions.data()] == 1 && next_candidate.region != next) + queue.emplace_back(next); + if (from_queue) { + // Remove the selected path from the queue. + auto it = std::find(queue.begin(), queue.end(), next_candidate.region); + assert(it != queue.end()); + *it = queue.back(); + queue.pop_back(); + } + // Extend the path. + MonotonicRegion *next_region = next_candidate.region; + bool next_dir = next_candidate.dir; + total_length += next_region->length(next_dir) + path_matrix(*path_end.region, path_end.flipped, *next_region, next_dir).length; + path_end = { next_region, next_dir }; + assert(left_neighbors_unprocessed[next_region - regions.data()] == 1); + left_neighbors_unprocessed[next_region - regions.data()] = 0; + } + + // Set an initial pheromone value to 10% of the greedy path's value. + pheromone_initial_deposit = 0.1f / total_length; + path_matrix.update_inital_pheromone(pheromone_initial_deposit); + } + + // Probability (unnormalized) of traversing a link between two monotonic regions. + auto path_probability = [pheromone_alpha, pheromone_beta](AntPath &path) { + return pow(path.pheromone, pheromone_alpha) * pow(path.visibility, pheromone_beta); + }; + +#ifdef SLIC3R_DEBUG_ANTS + static int irun = 0; + ++ irun; +#endif /* SLIC3R_DEBUG_ANTS */ + + int num_rounds_no_change = 0; + for (int round = 0; round < num_rounds && num_rounds_no_change < num_rounds_no_change_exit; ++ round) + { + bool improved = false; + for (int ant = 0; ant < num_ants; ++ ant) + { + // Find a new path following the pheromones deposited by the previous ants. + print_ant("Round %1% ant %2%", round, ant); + path.clear(); + queue = queue_initial; + left_neighbors_unprocessed = left_neighbors_unprocessed_initial; + assert(validate_unprocessed()); + // Pick randomly the first from the queue at random orientation. + //FIXME picking the 1st monotonic region should likely be done based on accumulated pheromone level as well, + // but the inefficiency caused by the random pick of the 1st monotonic region is likely insignificant. + int first_idx = std::uniform_int_distribution<>(0, int(queue.size()) - 1)(rng); + path.emplace_back(MonotonicRegionLink{ queue[first_idx], rng() > rng.max() / 2 }); + *(queue.begin() + first_idx) = std::move(queue.back()); + queue.pop_back(); + -- left_neighbors_unprocessed[path.back().region - regions.data()]; + assert(left_neighbors_unprocessed[path.back().region - regions.data()] == 0); + assert(validate_unprocessed()); + print_ant("\tRegion (%1%:%2%,%3%) (%4%:%5%,%6%)", + path.back().region->left.vline, + path.back().flipped ? path.back().region->left.high : path.back().region->left.low, + path.back().flipped ? path.back().region->left.low : path.back().region->left.high, + path.back().region->right.vline, + path.back().flipped == path.back().region->flips ? path.back().region->right.high : path.back().region->right.low, + path.back().flipped == path.back().region->flips ? path.back().region->right.low : path.back().region->right.high); + + while (! queue.empty() || ! path.back().region->right_neighbors.empty()) { + // Chain. + MonotonicRegion ®ion = *path.back().region; + bool dir = path.back().flipped; + // Sort by distance to pt. + next_candidates.clear(); + next_candidates.reserve(region.right_neighbors.size() * 2); + for (MonotonicRegion *next : region.right_neighbors) { + int &unprocessed = left_neighbors_unprocessed[next - regions.data()]; + assert(unprocessed > 1); + if (-- unprocessed == 1) { + // Dependencies of the successive blocks are satisfied. + AntPath &path1 = path_matrix(region, dir, *next, false); + AntPath &path1_flipped = path_matrix(region, ! dir, *next, true); + AntPath &path2 = path_matrix(region, dir, *next, true); + AntPath &path2_flipped = path_matrix(region, ! dir, *next, false); + next_candidates.emplace_back(NextCandidate{ next, &path1, &path1_flipped, path_probability(path1), false }); + next_candidates.emplace_back(NextCandidate{ next, &path2, &path2_flipped, path_probability(path2), true }); + } + } + size_t num_direct_neighbors = next_candidates.size(); + //FIXME add the queue items to the candidates? These are valid moves as well. + if (num_direct_neighbors == 0) { + // Add the queue candidates. + for (MonotonicRegion *next : queue) { + assert(left_neighbors_unprocessed[next - regions.data()] == 1); + AntPath &path1 = path_matrix(region, dir, *next, false); + AntPath &path1_flipped = path_matrix(region, ! dir, *next, true); + AntPath &path2 = path_matrix(region, dir, *next, true); + AntPath &path2_flipped = path_matrix(region, ! dir, *next, false); + next_candidates.emplace_back(NextCandidate{ next, &path1, &path1_flipped, path_probability(path1), false }); + next_candidates.emplace_back(NextCandidate{ next, &path2, &path2_flipped, path_probability(path2), true }); + } + } + float dice = float(rng()) / float(rng.max()); + std::vector::iterator take_path; + if (dice < probability_take_best) { + // Take the highest probability path. + take_path = std::max_element(next_candidates.begin(), next_candidates.end(), [](auto &l, auto &r){ return l.probability < r.probability; }); + print_ant("\tTaking best path at probability %1% below %2%", dice, probability_take_best); + } else { + // Take the path based on the probability. + // Calculate the total probability. + float total_probability = std::accumulate(next_candidates.begin(), next_candidates.end(), 0.f, [](const float l, const NextCandidate& r) { return l + r.probability; }); + // Take a random path based on the probability. + float probability_threshold = float(rng()) * total_probability / float(rng.max()); + take_path = next_candidates.end(); + -- take_path; + for (auto it = next_candidates.begin(); it < next_candidates.end(); ++ it) + if ((probability_threshold -= it->probability) <= 0.) { + take_path = it; + break; + } + print_ant("\tTaking path at probability threshold %1% of %2%", probability_threshold, total_probability); + } + // Move the other right neighbors with satisified constraints to the queue. + for (std::vector::iterator it_next_candidate = next_candidates.begin(); it_next_candidate != next_candidates.begin() + num_direct_neighbors; ++ it_next_candidate) + if ((queue.empty() || it_next_candidate->region != queue.back()) && it_next_candidate->region != take_path->region) + queue.emplace_back(it_next_candidate->region); + if (size_t(take_path - next_candidates.begin()) >= num_direct_neighbors) { + // Remove the selected path from the queue. + auto it = std::find(queue.begin(), queue.end(), take_path->region); + assert(it != queue.end()); + *it = queue.back(); + queue.pop_back(); + } + // Extend the path. + MonotonicRegion *next_region = take_path->region; + bool next_dir = take_path->dir; + path.back().next = take_path->link; + path.back().next_flipped = take_path->link_flipped; + path.emplace_back(MonotonicRegionLink{ next_region, next_dir }); + assert(left_neighbors_unprocessed[next_region - regions.data()] == 1); + left_neighbors_unprocessed[next_region - regions.data()] = 0; + print_ant("\tRegion (%1%:%2%,%3%) (%4%:%5%,%6%) length to prev %7%", + next_region->left.vline, + next_dir ? next_region->left.high : next_region->left.low, + next_dir ? next_region->left.low : next_region->left.high, + next_region->right.vline, + next_dir == next_region->flips ? next_region->right.high : next_region->right.low, + next_dir == next_region->flips ? next_region->right.low : next_region->right.high, + take_path->link->length); + + print_ant("\tRegion (%1%:%2%,%3%) (%4%:%5%,%6%)", + path.back().region->left.vline, + path.back().flipped ? path.back().region->left.high : path.back().region->left.low, + path.back().flipped ? path.back().region->left.low : path.back().region->left.high, + path.back().region->right.vline, + path.back().flipped == path.back().region->flips ? path.back().region->right.high : path.back().region->right.low, + path.back().flipped == path.back().region->flips ? path.back().region->right.low : path.back().region->right.high); + + // Update pheromones along this link, see Ant Colony System (ACS) update rule. + // http://www.scholarpedia.org/article/Ant_colony_optimization + // The goal here is to lower the pheromone trace for paths taken to diversify the next path picked in the same batch of ants. + take_path->link->pheromone = (1.f - pheromone_diversification) * take_path->link->pheromone + pheromone_diversification * pheromone_initial_deposit; + assert(validate_unprocessed()); + } + + // Perform 3-opt local optimization of the path. + monotonic_3_opt(path, segs); + + // Measure path length. + assert(! path.empty()); + float path_length = std::accumulate(path.begin(), path.end() - 1, + path.back().region->length(path.back().flipped), + [&path_matrix](const float l, const MonotonicRegionLink &r) { + const MonotonicRegionLink &next = *(&r + 1); + return l + r.region->length(r.flipped) + path_matrix(*r.region, r.flipped, *next.region, next.flipped).length; + }); + // Save the shortest path. + print_ant("\tThis length: %1%, shortest length: %2%", path_length, best_path_length); + if (path_length < best_path_length) { + best_path_length = path_length; + std::swap(best_path, path); +#if 0 // #if ! defined(SLIC3R_DEBUG_ANTS) && ! defined(ndebug) + if (round == 0 && ant == 0) + std::cout << std::endl; + std::cout << Slic3r::format("round %1% ant %2% path length %3%", round, ant, path_length) << std::endl; +#endif + if (path_length == 0) + // Perfect path found. + goto end; + improved = true; + } + } + + // Reinforce the path pheromones with the best path. + float total_cost = best_path_length + float(EPSILON); + for (size_t i = 0; i + 1 < path.size(); ++ i) { + MonotonicRegionLink &link = path[i]; + link.next->pheromone = (1.f - pheromone_evaporation) * link.next->pheromone + pheromone_evaporation / total_cost; + } + + if (improved) + num_rounds_no_change = 0; + else + ++ num_rounds_no_change; + } + +end: + return best_path; +} + +// Traverse path, produce polylines. +static void polylines_from_paths(const std::vector &path, const ExPolygonWithOffset &poly_with_offset, const std::vector &segs, Polylines &polylines_out) +{ + Polyline *polyline = nullptr; + auto finish_polyline = [&polyline, &polylines_out]() { + polyline->remove_duplicate_points(); + // Handle duplicate points and zero length segments. + assert(!polyline->has_duplicate_points()); + // Handle nearly zero length edges. + if (polyline->points.size() <= 1 || + (polyline->points.size() == 2 && + std::abs(polyline->points.front().x() - polyline->points.back().x()) < SCALED_EPSILON && + std::abs(polyline->points.front().y() - polyline->points.back().y()) < SCALED_EPSILON)) + polylines_out.pop_back(); + else if (polylines_out.size() >= 2) { + assert(polyline->points.size() >= 2); + // Merge the two last polylines. An extrusion may have been split by an introduction of phony outer points on intersection lines + // to cope with pinching of inner offset contours. + Polyline &pl_prev = polylines_out[polylines_out.size() - 2]; + if (std::abs(polyline->points.front().x() - pl_prev.points.back().x()) < SCALED_EPSILON && + std::abs(polyline->points.front().y() - pl_prev.points.back().y()) < SCALED_EPSILON) { + pl_prev.points.back() = (pl_prev.points.back() + polyline->points.front()) / 2; + pl_prev.points.insert(pl_prev.points.end(), polyline->points.begin() + 1, polyline->points.end()); + polylines_out.pop_back(); + } + } + polyline = nullptr; + }; + + for (const MonotonicRegionLink &path_segment : path) { + MonotonicRegion ®ion = *path_segment.region; + bool dir = path_segment.flipped; + + // From the initial point (i_vline, i_intersection), follow a path. + int i_intersection = region.left_intersection_point(dir); + int i_vline = region.left.vline; + + if (polyline != nullptr && &path_segment != path.data()) { + // Connect previous path segment with the new one. + const MonotonicRegionLink &path_segment_prev = *(&path_segment - 1); + const MonotonicRegion ®ion_prev = *path_segment_prev.region; + bool dir_prev = path_segment_prev.flipped; + int i_vline_prev = region_prev.right.vline; + const SegmentedIntersectionLine &vline_prev = segs[i_vline_prev]; + int i_intersection_prev = region_prev.right_intersection_point(dir_prev); + const SegmentIntersection *ip_prev = &vline_prev.intersections[i_intersection_prev]; + bool extended = false; + if (i_vline_prev + 1 == i_vline) { + if (ip_prev->right_horizontal() == i_intersection && ip_prev->next_on_contour_quality == SegmentIntersection::LinkQuality::Valid) { + // Emit a horizontal connection contour. + emit_perimeter_prev_next_segment(poly_with_offset, segs, i_vline_prev, ip_prev->iContour, i_intersection_prev, i_intersection, *polyline, true); + extended = true; + } + } + if (! extended) { + // Finish the current vertical line, + assert(ip_prev->is_inner()); + ip_prev->is_low() ? -- ip_prev : ++ ip_prev; + assert(ip_prev->is_outer()); + polyline->points.back() = Point(vline_prev.pos, ip_prev->pos()); + finish_polyline(); + } + } + + for (;;) { + const SegmentedIntersectionLine &vline = segs[i_vline]; + const SegmentIntersection *it = &vline.intersections[i_intersection]; + const bool going_up = it->is_low(); + if (polyline == nullptr) { + polylines_out.emplace_back(); + polyline = &polylines_out.back(); + // Extend the infill line up to the outer contour. + polyline->points.emplace_back(vline.pos, (it + (going_up ? - 1 : 1))->pos()); + } else + polyline->points.emplace_back(vline.pos, it->pos()); + + int iright = it->right_horizontal(); + if (going_up) { + // Consume the complete vertical segment up to the inner contour. + for (;;) { + do { + ++ it; + iright = std::max(iright, it->right_horizontal()); + assert(it->is_inner()); + } while (it->type != SegmentIntersection::INNER_HIGH || (it + 1)->type != SegmentIntersection::OUTER_HIGH); + polyline->points.emplace_back(vline.pos, it->pos()); + int inext = it->vertical_up(); + if (inext == -1 || it->vertical_up_quality() != SegmentIntersection::LinkQuality::Valid) + break; + assert(it->iContour == vline.intersections[inext].iContour); + emit_perimeter_segment_on_vertical_line(poly_with_offset, segs, i_vline, it->iContour, it - vline.intersections.data(), inext, *polyline, it->has_left_vertical_up()); + it = vline.intersections.data() + inext; + } + } else { + // Going down. + assert(it->is_high()); + assert(i_intersection > 0); + for (;;) { + do { + -- it; + if (int iright_new = it->right_horizontal(); iright_new != -1) + iright = iright_new; + assert(it->is_inner()); + } while (it->type != SegmentIntersection::INNER_LOW || (it - 1)->type != SegmentIntersection::OUTER_LOW); + polyline->points.emplace_back(vline.pos, it->pos()); + int inext = it->vertical_down(); + if (inext == -1 || it->vertical_down_quality() != SegmentIntersection::LinkQuality::Valid) + break; + assert(it->iContour == vline.intersections[inext].iContour); + emit_perimeter_segment_on_vertical_line(poly_with_offset, segs, i_vline, it->iContour, it - vline.intersections.data(), inext, *polyline, it->has_right_vertical_down()); + it = vline.intersections.data() + inext; + } + } + + if (i_vline == region.right.vline) + break; + + int inext = it->right_horizontal(); + if (inext != -1 && it->next_on_contour_quality == SegmentIntersection::LinkQuality::Valid) { + // Emit a horizontal connection contour. + emit_perimeter_prev_next_segment(poly_with_offset, segs, i_vline, it->iContour, it - vline.intersections.data(), inext, *polyline, true); + i_intersection = inext; + } else { + // Finish the current vertical line, + going_up ? ++ it : -- it; + assert(it->is_outer()); + assert(it->is_high() == going_up); + polyline->points.back() = Point(vline.pos, it->pos()); + finish_polyline(); + if (inext == -1) { + // Find the end of the next overlapping vertical segment. + const SegmentedIntersectionLine &vline_right = segs[i_vline + 1]; + const SegmentIntersection *right = going_up ? + &vertical_run_top(vline_right, vline_right.intersections[iright]) : &vertical_run_bottom(vline_right, vline_right.intersections[iright]); + i_intersection = int(right - vline_right.intersections.data()); + } else + i_intersection = inext; + } + + ++ i_vline; + } + } + + if (polyline != nullptr) { + // Finish the current vertical line, + const MonotonicRegion ®ion = *path.back().region; + const SegmentedIntersectionLine &vline = segs[region.right.vline]; + const SegmentIntersection *ip = &vline.intersections[region.right_intersection_point(path.back().flipped)]; + assert(ip->is_inner()); + ip->is_low() ? -- ip : ++ ip; + assert(ip->is_outer()); + polyline->points.back() = Point(vline.pos, ip->pos()); + finish_polyline(); + } +} + +bool FillRectilinear::fill_surface_by_lines(const Surface *surface, const FillParams ¶ms, float angleBase, float pattern_shift, Polylines &polylines_out) +{ + // At the end, only the new polylines will be rotated back. + size_t n_polylines_out_initial = polylines_out.size(); + + // Shrink the input polygon a bit first to not push the infill lines out of the perimeters. +// const float INFILL_OVERLAP_OVER_SPACING = 0.3f; + const float INFILL_OVERLAP_OVER_SPACING = 0.45f; + assert(INFILL_OVERLAP_OVER_SPACING > 0 && INFILL_OVERLAP_OVER_SPACING < 0.5f); + + // Rotate polygons so that we can work with vertical lines here + std::pair rotate_vector = this->_infill_direction(surface); + rotate_vector.first += angleBase; + + assert(params.density > 0.0001f && params.density <= 1.f); + coord_t line_spacing = coord_t(scale_(this->spacing) / params.density); + + // On the polygons of poly_with_offset, the infill lines will be connected. + ExPolygonWithOffset poly_with_offset( + surface->expolygon, + - rotate_vector.first, + float(scale_(this->overlap - (0.5 - INFILL_OVERLAP_OVER_SPACING) * this->spacing)), + float(scale_(this->overlap - 0.5f * this->spacing))); + if (poly_with_offset.n_contours_inner == 0) { + // Not a single infill line fits. + //FIXME maybe one shall trigger the gap fill here? + return true; + } + + BoundingBox bounding_box = poly_with_offset.bounding_box_src(); + + // define flow spacing according to requested density + if (params.full_infill() && !params.dont_adjust) { + line_spacing = this->_adjust_solid_spacing(bounding_box.size()(0), line_spacing); + this->spacing = unscale(line_spacing); + } else { + // extend bounding box so that our pattern will be aligned with other layers + // Transform the reference point to the rotated coordinate system. + Point refpt = rotate_vector.second.rotated(- rotate_vector.first); + // _align_to_grid will not work correctly with positive pattern_shift. + coord_t pattern_shift_scaled = coord_t(scale_(pattern_shift)) % line_spacing; + refpt.x() -= (pattern_shift_scaled >= 0) ? pattern_shift_scaled : (line_spacing + pattern_shift_scaled); + bounding_box.merge(_align_to_grid( + bounding_box.min, + Point(line_spacing, line_spacing), + refpt)); + } + + // Intersect a set of euqally spaced vertical lines wiht expolygon. + // n_vlines = ceil(bbox_width / line_spacing) + size_t n_vlines = (bounding_box.max(0) - bounding_box.min(0) + line_spacing - 1) / line_spacing; + coord_t x0 = bounding_box.min(0); + if (params.full_infill()) + x0 += (line_spacing + coord_t(SCALED_EPSILON)) / 2; + +#ifdef SLIC3R_DEBUG + static int iRun = 0; + BoundingBox bbox_svg = poly_with_offset.bounding_box_outer(); + ::Slic3r::SVG svg(debug_out_path("FillRectilinear-%d.svg", iRun), bbox_svg); // , scale_(1.)); + poly_with_offset.export_to_svg(svg); + { + ::Slic3r::SVG svg(debug_out_path("FillRectilinear-initial-%d.svg", iRun), bbox_svg); // , scale_(1.)); + poly_with_offset.export_to_svg(svg); + } + iRun ++; +#endif /* SLIC3R_DEBUG */ + + std::vector segs = slice_region_by_vertical_lines(poly_with_offset, n_vlines, x0, line_spacing); + // Connect by horizontal / vertical links, classify the links based on link_max_length as too long. + connect_segment_intersections_by_contours(poly_with_offset, segs, params, link_max_length); + +#ifdef SLIC3R_DEBUG + // Paint the segments and finalize the SVG file. + for (size_t i_seg = 0; i_seg < segs.size(); ++ i_seg) { + SegmentedIntersectionLine &sil = segs[i_seg]; + for (size_t i = 0; i < sil.intersections.size();) { + size_t j = i + 1; + for (; j < sil.intersections.size() && sil.intersections[j].is_inner(); ++ j) ; + if (i + 1 == j) { + svg.draw(Line(Point(sil.pos, sil.intersections[i].pos()), Point(sil.pos, sil.intersections[j].pos())), "blue"); + } else { + svg.draw(Line(Point(sil.pos, sil.intersections[i].pos()), Point(sil.pos, sil.intersections[i+1].pos())), "green"); + svg.draw(Line(Point(sil.pos, sil.intersections[i+1].pos()), Point(sil.pos, sil.intersections[j-1].pos())), (j - i + 1 > 4) ? "yellow" : "magenta"); + svg.draw(Line(Point(sil.pos, sil.intersections[j-1].pos()), Point(sil.pos, sil.intersections[j].pos())), "green"); + } + i = j + 1; + } + } + svg.Close(); +#endif /* SLIC3R_DEBUG */ + + //FIXME this is a hack to get the monotonic infill rolling. We likely want a smarter switch, likely based on user decison. + bool monotonic_infill = params.monotonic; // || params.density > 0.99; + if (monotonic_infill) { + // Sometimes the outer contour pinches the inner contour from both sides along a single vertical line. + // This situation is not handled correctly by generate_montonous_regions(). + // Insert phony OUTER_HIGH / OUTER_LOW pairs at the position where the contour is pinched. + pinch_contours_insert_phony_outer_intersections(segs); + std::vector regions = generate_montonous_regions(segs); + connect_monotonic_regions(regions, poly_with_offset, segs); + if (! regions.empty()) { + std::mt19937_64 rng; + std::vector path = chain_monotonic_regions(regions, poly_with_offset, segs, rng); + polylines_from_paths(path, poly_with_offset, segs, polylines_out); + } + } else + traverse_graph_generate_polylines(poly_with_offset, params, this->link_max_length, segs, polylines_out); + +#ifdef SLIC3R_DEBUG + { + { + ::Slic3r::SVG svg(debug_out_path("FillRectilinear-final-%03d.svg", iRun), bbox_svg); // , scale_(1.)); + poly_with_offset.export_to_svg(svg); + for (size_t i = n_polylines_out_initial; i < polylines_out.size(); ++ i) + svg.draw(polylines_out[i].lines(), "black"); + } + // Paint a picture per polyline. This makes it easier to discover the order of the polylines and their overlap. + for (size_t i_polyline = n_polylines_out_initial; i_polyline < polylines_out.size(); ++ i_polyline) { + ::Slic3r::SVG svg(debug_out_path("FillRectilinear-final-%03d-%03d.svg", iRun, i_polyline), bbox_svg); // , scale_(1.)); + svg.draw(polylines_out[i_polyline].lines(), "black"); + } + } +#endif /* SLIC3R_DEBUG */ + + // paths must be rotated back + for (Polylines::iterator it = polylines_out.begin() + n_polylines_out_initial; it != polylines_out.end(); ++ it) { + // No need to translate, the absolute position is irrelevant. + // it->translate(- rotate_vector.second(0), - rotate_vector.second(1)); + assert(! it->has_duplicate_points()); + it->rotate(rotate_vector.first); + //FIXME rather simplify the paths to avoid very short edges? + //assert(! it->has_duplicate_points()); + it->remove_duplicate_points(); + } + +#ifdef SLIC3R_DEBUG + // Verify, that there are no duplicate points in the sequence. + for (Polyline &polyline : polylines_out) + assert(! polyline.has_duplicate_points()); +#endif /* SLIC3R_DEBUG */ + + return true; +} + +bool FillRectilinear::fill_surface_by_multilines(const Surface *surface, FillParams params, const std::initializer_list &sweep_params, Polylines &polylines_out) +{ + assert(sweep_params.size() > 1); + assert(! params.full_infill()); + params.density /= double(sweep_params.size()); + assert(params.density > 0.0001f && params.density <= 1.f); + + ExPolygonWithOffset poly_with_offset_base(surface->expolygon, 0, float(scale_(this->overlap - 0.5 * this->spacing))); + if (poly_with_offset_base.n_contours == 0) + // Not a single infill line fits. + return true; + + Polylines fill_lines; + coord_t line_width = coord_t(scale_(this->spacing)); + coord_t line_spacing = coord_t(scale_(this->spacing) / params.density); + std::pair rotate_vector = this->_infill_direction(surface); + for (const SweepParams &sweep : sweep_params) { + size_t n_fill_lines_initial = fill_lines.size(); + + // Rotate polygons so that we can work with vertical lines here + double angle = rotate_vector.first + sweep.angle_base; + ExPolygonWithOffset poly_with_offset(poly_with_offset_base, - angle); + BoundingBox bounding_box = poly_with_offset.bounding_box_src(); + // Don't produce infill lines, which fully overlap with the infill perimeter. + coord_t x_min = bounding_box.min.x() + line_width + coord_t(SCALED_EPSILON); + coord_t x_max = bounding_box.max.x() - line_width - coord_t(SCALED_EPSILON); + // extend bounding box so that our pattern will be aligned with other layers + // Transform the reference point to the rotated coordinate system. + Point refpt = rotate_vector.second.rotated(- angle); + // _align_to_grid will not work correctly with positive pattern_shift. + coord_t pattern_shift_scaled = coord_t(scale_(sweep.pattern_shift)) % line_spacing; + refpt.x() -= (pattern_shift_scaled >= 0) ? pattern_shift_scaled : (line_spacing + pattern_shift_scaled); + bounding_box.merge(_align_to_grid(bounding_box.min, Point(line_spacing, line_spacing), refpt)); + + // Intersect a set of euqally spaced vertical lines wiht expolygon. + // n_vlines = ceil(bbox_width / line_spacing) + const size_t n_vlines = (bounding_box.max.x() - bounding_box.min.x() + line_spacing - 1) / line_spacing; + const double cos_a = cos(angle); + const double sin_a = sin(angle); + for (const SegmentedIntersectionLine &vline : slice_region_by_vertical_lines(poly_with_offset, n_vlines, bounding_box.min.x(), line_spacing)) + if (vline.pos > x_min) { + if (vline.pos >= x_max) + break; + for (auto it = vline.intersections.begin(); it != vline.intersections.end();) { + auto it_low = it ++; + assert(it_low->type == SegmentIntersection::OUTER_LOW); + if (it_low->type != SegmentIntersection::OUTER_LOW) + continue; + auto it_high = it; + assert(it_high->type == SegmentIntersection::OUTER_HIGH); + if (it_high->type == SegmentIntersection::OUTER_HIGH) { + fill_lines.emplace_back(Point(vline.pos, it_low->pos()).rotated(cos_a, sin_a), Point(vline.pos, it_high->pos()).rotated(cos_a, sin_a)); + ++ it; + } + } + } + } + + if (params.dont_connect() || fill_lines.size() <= 1) { + if (fill_lines.size() > 1) + fill_lines = chain_polylines(std::move(fill_lines)); + append(polylines_out, std::move(fill_lines)); + } else + connect_infill(std::move(fill_lines), poly_with_offset_base.polygons_outer, get_extents(surface->expolygon.contour), polylines_out, this->spacing, params); + + return true; +} + +Polylines FillRectilinear::fill_surface(const Surface *surface, const FillParams ¶ms) +{ + Polylines polylines_out; + if (! fill_surface_by_lines(surface, params, 0.f, 0.f, polylines_out)) + BOOST_LOG_TRIVIAL(error) << "FillRectilinear::fill_surface() failed to fill a region."; + return polylines_out; +} + +Polylines FillMonotonic::fill_surface(const Surface *surface, const FillParams ¶ms) +{ + FillParams params2 = params; + params2.monotonic = true; + Polylines polylines_out; + if (! fill_surface_by_lines(surface, params2, 0.f, 0.f, polylines_out)) + BOOST_LOG_TRIVIAL(error) << "FillMonotonous::fill_surface() failed to fill a region."; + return polylines_out; +} + +Polylines FillGrid::fill_surface(const Surface *surface, const FillParams ¶ms) +{ + Polylines polylines_out; + if (! this->fill_surface_by_multilines( + surface, params, + { { 0.f, 0.f }, { float(M_PI / 2.), 0.f } }, + polylines_out)) + BOOST_LOG_TRIVIAL(error) << "FillGrid::fill_surface() failed to fill a region."; + return polylines_out; +} + +Polylines FillTriangles::fill_surface(const Surface *surface, const FillParams ¶ms) +{ + Polylines polylines_out; + if (! this->fill_surface_by_multilines( + surface, params, + { { 0.f, 0.f }, { float(M_PI / 3.), 0.f }, { float(2. * M_PI / 3.), 0. } }, + polylines_out)) + BOOST_LOG_TRIVIAL(error) << "FillTriangles::fill_surface() failed to fill a region."; + return polylines_out; +} + +Polylines FillStars::fill_surface(const Surface *surface, const FillParams ¶ms) +{ + Polylines polylines_out; + if (! this->fill_surface_by_multilines( + surface, params, + { { 0.f, 0.f }, { float(M_PI / 3.), 0.f }, { float(2. * M_PI / 3.), float((3./2.) * this->spacing / params.density) } }, + polylines_out)) + BOOST_LOG_TRIVIAL(error) << "FillStars::fill_surface() failed to fill a region."; + return polylines_out; +} + +Polylines FillCubic::fill_surface(const Surface *surface, const FillParams ¶ms) +{ + Polylines polylines_out; + coordf_t dx = sqrt(0.5) * z; + if (! this->fill_surface_by_multilines( + surface, params, + { { 0.f, float(dx) }, { float(M_PI / 3.), - float(dx) }, { float(M_PI * 2. / 3.), float(dx) } }, + polylines_out)) + BOOST_LOG_TRIVIAL(error) << "FillCubic::fill_surface() failed to fill a region."; + return polylines_out; +} + } // namespace Slic3r diff --git a/src/libslic3r/Fill/FillRectilinear.hpp b/src/libslic3r/Fill/FillRectilinear.hpp index 1be85f7554..806b29be11 100644 --- a/src/libslic3r/Fill/FillRectilinear.hpp +++ b/src/libslic3r/Fill/FillRectilinear.hpp @@ -12,68 +12,81 @@ class Surface; class FillRectilinear : public Fill { public: - virtual Fill* clone() const { return new FillRectilinear(*this); }; - virtual ~FillRectilinear() {} + Fill* clone() const override { return new FillRectilinear(*this); }; + ~FillRectilinear() override = default; + Polylines fill_surface(const Surface *surface, const FillParams ¶ms) override; protected: - virtual void _fill_surface_single( - const FillParams ¶ms, - unsigned int thickness_layers, - const std::pair &direction, - ExPolygon &expolygon, - Polylines &polylines_out); + // Fill by single directional lines, interconnect the lines along perimeters. + bool fill_surface_by_lines(const Surface *surface, const FillParams ¶ms, float angleBase, float pattern_shift, Polylines &polylines_out); - coord_t _min_spacing; - coord_t _line_spacing; - // distance threshold for allowing the horizontal infill lines to be connected into a continuous path - coord_t _diagonal_distance; - // only for line infill - coord_t _line_oscillation; - // Enabled for the grid infill, disabled for the rectilinear and line infill. - virtual bool _horizontal_lines() const { return false; } - - virtual Line _line(int i, coord_t x, coord_t y_min, coord_t y_max) const - { return Line(Point(x, y_min), Point(x, y_max)); } - - virtual bool _can_connect(coord_t dist_X, coord_t dist_Y) { - return dist_X <= this->_diagonal_distance - && dist_Y <= this->_diagonal_distance; - } + // Fill by multiple sweeps of differing directions. + struct SweepParams { + float angle_base; + float pattern_shift; + }; + bool fill_surface_by_multilines(const Surface *surface, FillParams params, const std::initializer_list &sweep_params, Polylines &polylines_out); }; -class FillLine : public FillRectilinear +class FillMonotonic : public FillRectilinear { public: - virtual ~FillLine() {} - -protected: - virtual Line _line(int i, coord_t x, coord_t y_min, coord_t y_max) const { - coord_t osc = (i & 1) ? this->_line_oscillation : 0; - return Line(Point(x - osc, y_min), Point(x + osc, y_max)); - } - - virtual bool _can_connect(coord_t dist_X, coord_t dist_Y) - { - coord_t TOLERANCE = 10 * SCALED_EPSILON; - return (dist_X >= (this->_line_spacing - this->_line_oscillation) - TOLERANCE) - && (dist_X <= (this->_line_spacing + this->_line_oscillation) + TOLERANCE) - && (dist_Y <= this->_diagonal_distance); - } + Fill* clone() const override { return new FillMonotonic(*this); }; + ~FillMonotonic() override = default; + Polylines fill_surface(const Surface *surface, const FillParams ¶ms) override; + bool no_sort() const override { return true; } }; class FillGrid : public FillRectilinear { public: - virtual ~FillGrid() {} + Fill* clone() const override { return new FillGrid(*this); }; + ~FillGrid() override = default; + Polylines fill_surface(const Surface *surface, const FillParams ¶ms) override; protected: // The grid fill will keep the angle constant between the layers, see the implementation of Slic3r::Fill. - virtual float _layer_angle(size_t idx) const { return 0.f; } - // Flag for Slic3r::Fill::Rectilinear to fill both directions. - virtual bool _horizontal_lines() const { return true; } + float _layer_angle(size_t idx) const override { return 0.f; } }; +class FillTriangles : public FillRectilinear +{ +public: + Fill* clone() const override { return new FillTriangles(*this); }; + ~FillTriangles() override = default; + Polylines fill_surface(const Surface *surface, const FillParams ¶ms) override; + +protected: + // The grid fill will keep the angle constant between the layers, see the implementation of Slic3r::Fill. + float _layer_angle(size_t idx) const override { return 0.f; } +}; + +class FillStars : public FillRectilinear +{ +public: + Fill* clone() const override { return new FillStars(*this); }; + ~FillStars() override = default; + Polylines fill_surface(const Surface *surface, const FillParams ¶ms) override; + +protected: + // The grid fill will keep the angle constant between the layers, see the implementation of Slic3r::Fill. + float _layer_angle(size_t idx) const override { return 0.f; } +}; + +class FillCubic : public FillRectilinear +{ +public: + Fill* clone() const override { return new FillCubic(*this); }; + ~FillCubic() override = default; + Polylines fill_surface(const Surface *surface, const FillParams ¶ms) override; + +protected: + // The grid fill will keep the angle constant between the layers, see the implementation of Slic3r::Fill. + float _layer_angle(size_t idx) const override { return 0.f; } +}; + + }; // namespace Slic3r #endif // slic3r_FillRectilinear_hpp_ diff --git a/src/libslic3r/Fill/FillRectilinear2.cpp b/src/libslic3r/Fill/FillRectilinear2.cpp deleted file mode 100644 index 0c45892000..0000000000 --- a/src/libslic3r/Fill/FillRectilinear2.cpp +++ /dev/null @@ -1,2693 +0,0 @@ -#include -#include - -#include -#include -#include -#include - -#include -#include - -#include "../ClipperUtils.hpp" -#include "../ExPolygon.hpp" -#include "../Geometry.hpp" -#include "../Surface.hpp" - -#include "FillRectilinear2.hpp" - -// #define SLIC3R_DEBUG - -// Make assert active if SLIC3R_DEBUG -#ifdef SLIC3R_DEBUG - #undef NDEBUG - #include "SVG.hpp" -#endif - -#include - -// We want our version of assert. -#include "../libslic3r.h" - -namespace Slic3r { - -// Having a segment of a closed polygon, calculate its Euclidian length. -// The segment indices seg1 and seg2 signify an end point of an edge in the forward direction of the loop, -// therefore the point p1 lies on poly.points[seg1-1], poly.points[seg1] etc. -static inline coordf_t segment_length(const Polygon &poly, size_t seg1, const Point &p1, size_t seg2, const Point &p2) -{ -#ifdef SLIC3R_DEBUG - // Verify that p1 lies on seg1. This is difficult to verify precisely, - // but at least verify, that p1 lies in the bounding box of seg1. - for (size_t i = 0; i < 2; ++ i) { - size_t seg = (i == 0) ? seg1 : seg2; - Point px = (i == 0) ? p1 : p2; - Point pa = poly.points[((seg == 0) ? poly.points.size() : seg) - 1]; - Point pb = poly.points[seg]; - if (pa(0) > pb(0)) - std::swap(pa(0), pb(0)); - if (pa(1) > pb(1)) - std::swap(pa(1), pb(1)); - assert(px(0) >= pa(0) && px(0) <= pb(0)); - assert(px(1) >= pa(1) && px(1) <= pb(1)); - } -#endif /* SLIC3R_DEBUG */ - const Point *pPrev = &p1; - const Point *pThis = NULL; - coordf_t len = 0; - if (seg1 <= seg2) { - for (size_t i = seg1; i < seg2; ++ i, pPrev = pThis) - len += (*pPrev - *(pThis = &poly.points[i])).cast().norm(); - } else { - for (size_t i = seg1; i < poly.points.size(); ++ i, pPrev = pThis) - len += (*pPrev - *(pThis = &poly.points[i])).cast().norm(); - for (size_t i = 0; i < seg2; ++ i, pPrev = pThis) - len += (*pPrev - *(pThis = &poly.points[i])).cast().norm(); - } - len += (*pPrev - p2).cast().norm(); - return len; -} - -// Append a segment of a closed polygon to a polyline. -// The segment indices seg1 and seg2 signify an end point of an edge in the forward direction of the loop. -// Only insert intermediate points between seg1 and seg2. -static inline void polygon_segment_append(Points &out, const Polygon &polygon, size_t seg1, size_t seg2) -{ - if (seg1 == seg2) { - // Nothing to append from this segment. - } else if (seg1 < seg2) { - // Do not append a point pointed to by seg2. - out.insert(out.end(), polygon.points.begin() + seg1, polygon.points.begin() + seg2); - } else { - out.reserve(out.size() + seg2 + polygon.points.size() - seg1); - out.insert(out.end(), polygon.points.begin() + seg1, polygon.points.end()); - // Do not append a point pointed to by seg2. - out.insert(out.end(), polygon.points.begin(), polygon.points.begin() + seg2); - } -} - -// Append a segment of a closed polygon to a polyline. -// The segment indices seg1 and seg2 signify an end point of an edge in the forward direction of the loop, -// but this time the segment is traversed backward. -// Only insert intermediate points between seg1 and seg2. -static inline void polygon_segment_append_reversed(Points &out, const Polygon &polygon, size_t seg1, size_t seg2) -{ - if (seg1 >= seg2) { - out.reserve(seg1 - seg2); - for (size_t i = seg1; i > seg2; -- i) - out.push_back(polygon.points[i - 1]); - } else { - // it could be, that seg1 == seg2. In that case, append the complete loop. - out.reserve(out.size() + seg2 + polygon.points.size() - seg1); - for (size_t i = seg1; i > 0; -- i) - out.push_back(polygon.points[i - 1]); - for (size_t i = polygon.points.size(); i > seg2; -- i) - out.push_back(polygon.points[i - 1]); - } -} - -// Intersection point of a vertical line with a polygon segment. -struct SegmentIntersection -{ - // Index of a contour in ExPolygonWithOffset, with which this vertical line intersects. - size_t iContour { 0 }; - // Index of a segment in iContour, with which this vertical line intersects. - size_t iSegment { 0 }; - // y position of the intersection, rational number. - int64_t pos_p { 0 }; - uint32_t pos_q { 1 }; - - coord_t pos() const { - // Division rounds both positive and negative down to zero. - // Add half of q for an arithmetic rounding effect. - int64_t p = pos_p; - if (p < 0) - p -= int64_t(pos_q>>1); - else - p += int64_t(pos_q>>1); - return coord_t(p / int64_t(pos_q)); - } - - // Kind of intersection. With the original contour, or with the inner offestted contour? - // A vertical segment will be at least intersected by OUTER_LOW, OUTER_HIGH, - // but it could be intersected with OUTER_LOW, INNER_LOW, INNER_HIGH, OUTER_HIGH, - // and there may be more than one pair of INNER_LOW, INNER_HIGH between OUTER_LOW, OUTER_HIGH. - enum SegmentIntersectionType : char { - UNKNOWN, - OUTER_LOW, - OUTER_HIGH, - INNER_LOW, - INNER_HIGH, - }; - SegmentIntersectionType type { UNKNOWN }; - - // Left vertical line / contour intersection point. - // null if next_on_contour_vertical. - int32_t prev_on_contour { 0 }; - // Right vertical line / contour intersection point. - // If next_on_contour_vertical, then then next_on_contour contains next contour point on the same vertical line. - int32_t next_on_contour { 0 }; - - enum class LinkType : uint8_t { - // Horizontal link (left or right). - Horizontal, - // Vertical link, up. - Up, - // Vertical link, down. - Down - }; - - enum class LinkQuality : uint8_t { - Invalid, - Valid, - // Valid link, but too long to be followed. - TooLong, - }; - - // Kept grouped with other booleans for smaller memory footprint. - LinkType prev_on_contour_type { LinkType::Horizontal }; - LinkType next_on_contour_type { LinkType::Horizontal }; - LinkQuality prev_on_contour_quality { LinkQuality::Valid }; - LinkQuality next_on_contour_quality { LinkQuality::Valid }; - // Was this segment along the y axis consumed? - // Up means up along the vertical segment. - bool consumed_vertical_up { false }; - // Was a segment of the inner perimeter contour consumed? - // Right means right from the vertical segment. - bool consumed_perimeter_right { false }; - - // For the INNER_LOW type, this point may be connected to another INNER_LOW point following a perimeter contour. - // For the INNER_HIGH type, this point may be connected to another INNER_HIGH point following a perimeter contour. - // If INNER_LOW is connected to INNER_HIGH or vice versa, - // one has to make sure the vertical infill line does not overlap with the connecting perimeter line. - bool is_inner() const { return type == INNER_LOW || type == INNER_HIGH; } - bool is_outer() const { return type == OUTER_LOW || type == OUTER_HIGH; } - bool is_low () const { return type == INNER_LOW || type == OUTER_LOW; } - bool is_high () const { return type == INNER_HIGH || type == OUTER_HIGH; } - - enum class Side { - Left, - Right - }; - enum class Direction { - Up, - Down - }; - - bool has_left_horizontal() const { return this->prev_on_contour_type == LinkType::Horizontal; } - bool has_right_horizontal() const { return this->next_on_contour_type == LinkType::Horizontal; } - bool has_horizontal(Side side) const { return side == Side::Left ? this->has_left_horizontal() : this->has_right_horizontal(); } - - bool has_left_vertical_up() const { return this->prev_on_contour_type == LinkType::Up; } - bool has_left_vertical_down() const { return this->prev_on_contour_type == LinkType::Down; } - bool has_left_vertical(Direction dir) const { return dir == Direction::Up ? this->has_left_vertical_up() : this->has_left_vertical_down(); } - bool has_left_vertical() const { return this->has_left_vertical_up() || this->has_left_vertical_down(); } - bool has_left_vertical_outside() const { return this->is_low() ? this->has_left_vertical_down() : this->has_left_vertical_up(); } - - bool has_right_vertical_up() const { return this->next_on_contour_type == LinkType::Up; } - bool has_right_vertical_down() const { return this->next_on_contour_type == LinkType::Down; } - bool has_right_vertical(Direction dir) const { return dir == Direction::Up ? this->has_right_vertical_up() : this->has_right_vertical_down(); } - bool has_right_vertical() const { return this->has_right_vertical_up() || this->has_right_vertical_down(); } - bool has_right_vertical_outside() const { return this->is_low() ? this->has_right_vertical_down() : this->has_right_vertical_up(); } - - bool has_vertical() const { return this->has_left_vertical() || this->has_right_vertical(); } - bool has_vertical(Side side) const { return side == Side::Left ? this->has_left_vertical() : this->has_right_vertical(); } - bool has_vertical_up() const { return this->has_left_vertical_up() || this->has_right_vertical_up(); } - bool has_vertical_down() const { return this->has_left_vertical_down() || this->has_right_vertical_down(); } - bool has_vertical(Direction dir) const { return dir == Direction::Up ? this->has_vertical_up() : this->has_vertical_down(); } - - int left_horizontal() const { return this->has_left_horizontal() ? this->prev_on_contour : -1; } - int right_horizontal() const { return this->has_right_horizontal() ? this->next_on_contour : -1; } - int horizontal(Side side) const { return side == Side::Left ? this->left_horizontal() : this->right_horizontal(); } - LinkQuality horizontal_quality(Side side) const { - assert(this->has_horizontal(side)); - return side == Side::Left ? this->prev_on_contour_quality : this->next_on_contour_quality; - } - - int left_vertical_up() const { return this->has_left_vertical_up() ? this->prev_on_contour : -1; } - int left_vertical_down() const { return this->has_left_vertical_down() ? this->prev_on_contour : -1; } - int left_vertical(Direction dir) const { return (dir == Direction::Up ? this->has_left_vertical_up() : this->has_left_vertical_down()) ? this->prev_on_contour : -1; } - int left_vertical() const { return this->has_left_vertical() ? this->prev_on_contour : -1; } - int left_vertical_outside() const { return this->is_low() ? this->left_vertical_down() : this->left_vertical_up(); } - int right_vertical_up() const { return this->has_right_vertical_up() ? this->next_on_contour : -1; } - int right_vertical_down() const { return this->has_right_vertical_down() ? this->next_on_contour : -1; } - int right_vertical(Direction dir) const { return (dir == Direction::Up ? this->has_right_vertical_up() : this->has_right_vertical_down()) ? this->next_on_contour : -1; } - int right_vertical() const { return this->has_right_vertical() ? this->next_on_contour : -1; } - int right_vertical_outside() const { return this->is_low() ? this->right_vertical_down() : this->right_vertical_up(); } - - int vertical_up(Side side) const { return side == Side::Left ? this->left_vertical_up() : this->right_vertical_up(); } - int vertical_down(Side side) const { return side == Side::Left ? this->left_vertical_down() : this->right_vertical_down(); } - int vertical_outside(Side side) const { return side == Side::Left ? this->left_vertical_outside() : this->right_vertical_outside(); } - // Returns -1 if there is no link up. - int vertical_up() const { - return this->has_left_vertical_up() ? this->left_vertical_up() : this->right_vertical_up(); - } - LinkQuality vertical_up_quality() const { - return this->has_left_vertical_up() ? this->prev_on_contour_quality : this->next_on_contour_quality; - } - // Returns -1 if there is no link down. - int vertical_down() const { -// assert(! this->has_left_vertical_down() || ! this->has_right_vertical_down()); - return this->has_left_vertical_down() ? this->left_vertical_down() : this->right_vertical_down(); - } - LinkQuality vertical_down_quality() const { - return this->has_left_vertical_down() ? this->prev_on_contour_quality : this->next_on_contour_quality; - } - int vertical_outside() const { return this->is_low() ? this->vertical_down() : this->vertical_up(); } - LinkQuality vertical_outside_quality() const { return this->is_low() ? this->vertical_down_quality() : this->vertical_up_quality(); } - - // Compare two y intersection points given by rational numbers. - // Note that the rational number is given as pos_p/pos_q, where pos_p is int64 and pos_q is uint32. - // This function calculates pos_p * other.pos_q < other.pos_p * pos_q as a 48bit number. - // We don't use 128bit intrinsic data types as these are usually not supported by 32bit compilers and - // we don't need the full 128bit precision anyway. - bool operator<(const SegmentIntersection &other) const - { - assert(pos_q > 0); - assert(other.pos_q > 0); - if (pos_p == 0 || other.pos_p == 0) { - // Because the denominators are positive and one of the nominators is zero, - // following simple statement holds. - return pos_p < other.pos_p; - } else { - // None of the nominators is zero. - int sign1 = (pos_p > 0) ? 1 : -1; - int sign2 = (other.pos_p > 0) ? 1 : -1; - int signs = sign1 * sign2; - assert(signs == 1 || signs == -1); - if (signs < 0) { - // The nominators have different signs. - return sign1 < 0; - } else { - // The nominators have the same sign. - // Absolute values - uint64_t p1, p2; - if (sign1 > 0) { - p1 = uint64_t(pos_p); - p2 = uint64_t(other.pos_p); - } else { - p1 = uint64_t(- pos_p); - p2 = uint64_t(- other.pos_p); - }; - // Multiply low and high 32bit words of p1 by other_pos.q - // 32bit x 32bit => 64bit - // l_hi and l_lo overlap by 32 bits. - uint64_t l_hi = (p1 >> 32) * uint64_t(other.pos_q); - uint64_t l_lo = (p1 & 0xffffffffll) * uint64_t(other.pos_q); - l_hi += (l_lo >> 32); - uint64_t r_hi = (p2 >> 32) * uint64_t(pos_q); - uint64_t r_lo = (p2 & 0xffffffffll) * uint64_t(pos_q); - r_hi += (r_lo >> 32); - // Compare the high 64 bits. - if (l_hi == r_hi) { - // Compare the low 32 bits. - l_lo &= 0xffffffffll; - r_lo &= 0xffffffffll; - return (sign1 < 0) ? (l_lo > r_lo) : (l_lo < r_lo); - } - return (sign1 < 0) ? (l_hi > r_hi) : (l_hi < r_hi); - } - } - } - - bool operator==(const SegmentIntersection &other) const - { - assert(pos_q > 0); - assert(other.pos_q > 0); - if (pos_p == 0 || other.pos_p == 0) { - // Because the denominators are positive and one of the nominators is zero, - // following simple statement holds. - return pos_p == other.pos_p; - } - - // None of the nominators is zero, none of the denominators is zero. - bool positive = pos_p > 0; - if (positive != (other.pos_p > 0)) - return false; - // The nominators have the same sign. - // Absolute values - uint64_t p1 = positive ? uint64_t(pos_p) : uint64_t(- pos_p); - uint64_t p2 = positive ? uint64_t(other.pos_p) : uint64_t(- other.pos_p); - // Multiply low and high 32bit words of p1 by other_pos.q - // 32bit x 32bit => 64bit - // l_hi and l_lo overlap by 32 bits. - uint64_t l_lo = (p1 & 0xffffffffll) * uint64_t(other.pos_q); - uint64_t r_lo = (p2 & 0xffffffffll) * uint64_t(pos_q); - if (l_lo != r_lo) - return false; - uint64_t l_hi = (p1 >> 32) * uint64_t(other.pos_q); - uint64_t r_hi = (p2 >> 32) * uint64_t(pos_q); - return l_hi + (l_lo >> 32) == r_hi + (r_lo >> 32); - } -}; -static_assert(sizeof(SegmentIntersection::pos_q) == 4, "SegmentIntersection::pos_q has to be 32bit long!"); - -// A vertical line with intersection points with polygons. -struct SegmentedIntersectionLine -{ - // Index of this vertical intersection line. - size_t idx; - // x position of this vertical intersection line. - coord_t pos; - // List of intersection points with polygons, sorted increasingly by the y axis. - std::vector intersections; -}; - -// A container maintaining an expolygon with its inner offsetted polygon. -// The purpose of the inner offsetted polygon is to provide segments to connect the infill lines. -struct ExPolygonWithOffset -{ -public: - ExPolygonWithOffset( - const ExPolygon &expolygon, - float angle, - coord_t aoffset1, - coord_t aoffset2) - { - // Copy and rotate the source polygons. - polygons_src = expolygon; - polygons_src.contour.rotate(angle); - for (Polygons::iterator it = polygons_src.holes.begin(); it != polygons_src.holes.end(); ++ it) - it->rotate(angle); - - double mitterLimit = 3.; - // for the infill pattern, don't cut the corners. - // default miterLimt = 3 - //double mitterLimit = 10.; - assert(aoffset1 < 0); - assert(aoffset2 < 0); - assert(aoffset2 < aoffset1); -// bool sticks_removed = - remove_sticks(polygons_src); -// if (sticks_removed) printf("Sticks removed!\n"); - polygons_outer = offset(polygons_src, float(aoffset1), - ClipperLib::jtMiter, - mitterLimit); - polygons_inner = offset(polygons_outer, float(aoffset2 - aoffset1), - ClipperLib::jtMiter, - mitterLimit); - // Filter out contours with zero area or small area, contours with 2 points only. - const double min_area_threshold = 0.01 * aoffset2 * aoffset2; - remove_small(polygons_outer, min_area_threshold); - remove_small(polygons_inner, min_area_threshold); - remove_sticks(polygons_outer); - remove_sticks(polygons_inner); - n_contours_outer = polygons_outer.size(); - n_contours_inner = polygons_inner.size(); - n_contours = n_contours_outer + n_contours_inner; - polygons_ccw.assign(n_contours, false); - for (size_t i = 0; i < n_contours; ++ i) { - contour(i).remove_duplicate_points(); - assert(! contour(i).has_duplicate_points()); - polygons_ccw[i] = Slic3r::Geometry::is_ccw(contour(i)); - } - } - - // Any contour with offset1 - bool is_contour_outer(size_t idx) const { return idx < n_contours_outer; } - // Any contour with offset2 - bool is_contour_inner(size_t idx) const { return idx >= n_contours_outer; } - - const Polygon& contour(size_t idx) const - { return is_contour_outer(idx) ? polygons_outer[idx] : polygons_inner[idx - n_contours_outer]; } - - Polygon& contour(size_t idx) - { return is_contour_outer(idx) ? polygons_outer[idx] : polygons_inner[idx - n_contours_outer]; } - - bool is_contour_ccw(size_t idx) const { return polygons_ccw[idx]; } - - BoundingBox bounding_box_src() const - { return get_extents(polygons_src); } - BoundingBox bounding_box_outer() const - { return get_extents(polygons_outer); } - BoundingBox bounding_box_inner() const - { return get_extents(polygons_inner); } - -#ifdef SLIC3R_DEBUG - void export_to_svg(Slic3r::SVG &svg) { - svg.draw_outline(polygons_src, "black"); - svg.draw_outline(polygons_outer, "green"); - svg.draw_outline(polygons_inner, "brown"); - } -#endif /* SLIC3R_DEBUG */ - - ExPolygon polygons_src; - Polygons polygons_outer; - Polygons polygons_inner; - - size_t n_contours_outer; - size_t n_contours_inner; - size_t n_contours; - -protected: - // For each polygon of polygons_inner, remember its orientation. - std::vector polygons_ccw; -}; - -static inline int distance_of_segmens(const Polygon &poly, size_t seg1, size_t seg2, bool forward) -{ - int d = int(seg2) - int(seg1); - if (! forward) - d = - d; - if (d < 0) - d += int(poly.points.size()); - return d; -} - -// Find an intersection on a previous line, but return -1, if the connecting segment of a perimeter was already extruded. -static inline bool intersection_on_prev_next_vertical_line_valid( - const std::vector &segs, - size_t iVerticalLine, - size_t iIntersection, - SegmentIntersection::Side side) -{ - const SegmentedIntersectionLine &vline_this = segs[iVerticalLine]; - const SegmentIntersection &it_this = vline_this.intersections[iIntersection]; - if (it_this.has_vertical(side)) - // Not the first intersection along the contor. This intersection point - // has been preceded by an intersection point along the vertical line. - return false; - int iIntersectionOther = it_this.horizontal(side); - if (iIntersectionOther == -1) - return false; - assert(side == SegmentIntersection::Side::Right ? (iVerticalLine + 1 < segs.size()) : (iVerticalLine > 0)); - const SegmentedIntersectionLine &vline_other = segs[side == SegmentIntersection::Side::Right ? (iVerticalLine + 1) : (iVerticalLine - 1)]; - const SegmentIntersection &it_other = vline_other.intersections[iIntersectionOther]; - assert(it_other.is_inner()); - assert(iIntersectionOther > 0); - assert(iIntersectionOther + 1 < vline_other.intersections.size()); - // Is iIntersectionOther at the boundary of a vertical segment? - const SegmentIntersection &it_other2 = vline_other.intersections[it_other.is_low() ? iIntersectionOther - 1 : iIntersectionOther + 1]; - if (it_other2.is_inner()) - // Cannot follow a perimeter segment into the middle of another vertical segment. - // Only perimeter segments connecting to the end of a vertical segment are followed. - return false; - assert(it_other.is_low() == it_other2.is_low()); - if (it_this.horizontal_quality(side) != SegmentIntersection::LinkQuality::Valid) - return false; - if (side == SegmentIntersection::Side::Right ? it_this.consumed_perimeter_right : it_other.consumed_perimeter_right) - // This perimeter segment was already consumed. - return false; - if (it_other.is_low() ? it_other.consumed_vertical_up : vline_other.intersections[iIntersectionOther - 1].consumed_vertical_up) - // This vertical segment was already consumed. - return false; -#if 0 - if (it_other.vertical_outside() != -1 && it_other.vertical_outside_quality() == SegmentIntersection::LinkQuality::Valid) - // Landed inside a vertical run. Stop here. - return false; -#endif - return true; -} - -static inline bool intersection_on_prev_vertical_line_valid( - const std::vector &segs, - size_t iVerticalLine, - size_t iIntersection) -{ - return intersection_on_prev_next_vertical_line_valid(segs, iVerticalLine, iIntersection, SegmentIntersection::Side::Left); -} - -static inline bool intersection_on_next_vertical_line_valid( - const std::vector &segs, - size_t iVerticalLine, - size_t iIntersection) -{ - return intersection_on_prev_next_vertical_line_valid(segs, iVerticalLine, iIntersection, SegmentIntersection::Side::Right); -} - -// Measure an Euclidian length of a perimeter segment when going from iIntersection to iIntersection2. -static inline coordf_t measure_perimeter_horizontal_segment_length( - const ExPolygonWithOffset &poly_with_offset, - const std::vector &segs, - size_t iVerticalLine, - size_t iIntersection, - size_t iIntersection2) -{ - size_t iVerticalLineOther = iVerticalLine + 1; - assert(iVerticalLineOther < segs.size()); - const SegmentedIntersectionLine &vline = segs[iVerticalLine]; - const SegmentIntersection &it = vline.intersections[iIntersection]; - const SegmentedIntersectionLine &vline2 = segs[iVerticalLineOther]; - const SegmentIntersection &it2 = vline2.intersections[iIntersection2]; - assert(it.iContour == it2.iContour); - const Polygon &poly = poly_with_offset.contour(it.iContour); -// const bool ccw = poly_with_offset.is_contour_ccw(vline.iContour); - assert(it.type == it2.type); - assert(it.iContour == it2.iContour); - - Point p1(vline.pos, it.pos()); - Point p2(vline2.pos, it2.pos()); - return it.is_low() ? - segment_length(poly, it .iSegment, p1, it2.iSegment, p2) : - segment_length(poly, it2.iSegment, p2, it .iSegment, p1); -} - -// Append the points of a perimeter segment when going from iIntersection to iIntersection2. -// The first point (the point of iIntersection) will not be inserted, -// the last point will be inserted. -static inline void emit_perimeter_prev_next_segment( - const ExPolygonWithOffset &poly_with_offset, - const std::vector &segs, - size_t iVerticalLine, - size_t iInnerContour, - size_t iIntersection, - size_t iIntersection2, - Polyline &out, - bool dir_is_next) -{ - size_t iVerticalLineOther = iVerticalLine; - if (dir_is_next) { - ++ iVerticalLineOther; - assert(iVerticalLineOther < segs.size()); - } else { - assert(iVerticalLineOther > 0); - -- iVerticalLineOther; - } - - const SegmentedIntersectionLine &il = segs[iVerticalLine]; - const SegmentIntersection &itsct = il.intersections[iIntersection]; - const SegmentedIntersectionLine &il2 = segs[iVerticalLineOther]; - const SegmentIntersection &itsct2 = il2.intersections[iIntersection2]; - const Polygon &poly = poly_with_offset.contour(iInnerContour); -// const bool ccw = poly_with_offset.is_contour_ccw(iInnerContour); - assert(itsct.type == itsct2.type); - assert(itsct.iContour == itsct2.iContour); - assert(itsct.is_inner()); - const bool forward = itsct.is_low() == dir_is_next; - // Do not append the first point. - // out.points.push_back(Point(il.pos, itsct.pos)); - if (forward) - polygon_segment_append(out.points, poly, itsct.iSegment, itsct2.iSegment); - else - polygon_segment_append_reversed(out.points, poly, itsct.iSegment, itsct2.iSegment); - // Append the last point. - out.points.push_back(Point(il2.pos, itsct2.pos())); -} - -static inline coordf_t measure_perimeter_segment_on_vertical_line_length( - const ExPolygonWithOffset &poly_with_offset, - const std::vector &segs, - size_t iVerticalLine, - size_t iIntersection, - size_t iIntersection2, - bool forward) -{ - const SegmentedIntersectionLine &il = segs[iVerticalLine]; - const SegmentIntersection &itsct = il.intersections[iIntersection]; - const SegmentIntersection &itsct2 = il.intersections[iIntersection2]; - const Polygon &poly = poly_with_offset.contour(itsct.iContour); - assert(itsct.is_inner() == itsct2.is_inner()); - assert(itsct.type != itsct2.type); - assert(itsct.iContour == itsct2.iContour); - Point p1(il.pos, itsct.pos()); - Point p2(il.pos, itsct2.pos()); - return forward ? - segment_length(poly, itsct .iSegment, p1, itsct2.iSegment, p2) : - segment_length(poly, itsct2.iSegment, p2, itsct .iSegment, p1); -} - -// Append the points of a perimeter segment when going from iIntersection to iIntersection2. -// The first point (the point of iIntersection) will not be inserted, -// the last point will be inserted. -static inline void emit_perimeter_segment_on_vertical_line( - const ExPolygonWithOffset &poly_with_offset, - const std::vector &segs, - size_t iVerticalLine, - size_t iInnerContour, - size_t iIntersection, - size_t iIntersection2, - Polyline &out, - bool forward) -{ - const SegmentedIntersectionLine &il = segs[iVerticalLine]; - const SegmentIntersection &itsct = il.intersections[iIntersection]; - const SegmentIntersection &itsct2 = il.intersections[iIntersection2]; - const Polygon &poly = poly_with_offset.contour(iInnerContour); - assert(itsct.is_inner()); - assert(itsct2.is_inner()); - assert(itsct.type != itsct2.type); - assert(itsct.iContour == iInnerContour); - assert(itsct.iContour == itsct2.iContour); - // Do not append the first point. - // out.points.push_back(Point(il.pos, itsct.pos)); - if (forward) - polygon_segment_append(out.points, poly, itsct.iSegment, itsct2.iSegment); - else - polygon_segment_append_reversed(out.points, poly, itsct.iSegment, itsct2.iSegment); - // Append the last point. - out.points.push_back(Point(il.pos, itsct2.pos())); -} - -//TBD: For precise infill, measure the area of a slab spanned by an infill line. -/* -static inline float measure_outer_contour_slab( - const ExPolygonWithOffset &poly_with_offset, - const std::vector &segs, - size_t i_vline, - size_t iIntersection) -{ - const SegmentedIntersectionLine &il = segs[i_vline]; - const SegmentIntersection &itsct = il.intersections[i_vline]; - const SegmentIntersection &itsct2 = il.intersections[iIntersection2]; - const Polygon &poly = poly_with_offset.contour((itsct.iContour); - assert(itsct.is_outer()); - assert(itsct2.is_outer()); - assert(itsct.type != itsct2.type); - assert(itsct.iContour == itsct2.iContour); - if (! itsct.is_outer() || ! itsct2.is_outer() || itsct.type == itsct2.type || itsct.iContour != itsct2.iContour) - // Error, return zero area. - return 0.f; - - // Find possible connection points on the previous / next vertical line. - int iPrev = intersection_on_prev_vertical_line(poly_with_offset, segs, i_vline, itsct.iContour, i_intersection); - int iNext = intersection_on_next_vertical_line(poly_with_offset, segs, i_vline, itsct.iContour, i_intersection); - // Find possible connection points on the same vertical line. - int iAbove = iBelow = -1; - // Does the perimeter intersect the current vertical line above intrsctn? - for (size_t i = i_intersection + 1; i + 1 < seg.intersections.size(); ++ i) - if (seg.intersections[i].iContour == itsct.iContour) - { iAbove = i; break; } - // Does the perimeter intersect the current vertical line below intrsctn? - for (int i = int(i_intersection) - 1; i > 0; -- i) - if (seg.intersections[i].iContour == itsct.iContour) - { iBelow = i; break; } - - if (iSegAbove != -1 && seg.intersections[iAbove].type == SegmentIntersection::OUTER_HIGH) { - // Invalidate iPrev resp. iNext, if the perimeter crosses the current vertical line earlier than iPrev resp. iNext. - // The perimeter contour orientation. - const Polygon &poly = poly_with_offset.contour(itsct.iContour); - { - int d_horiz = (iPrev == -1) ? std::numeric_limits::max() : - distance_of_segmens(poly, segs[i_vline-1].intersections[iPrev].iSegment, itsct.iSegment, true); - int d_down = (iBelow == -1) ? std::numeric_limits::max() : - distance_of_segmens(poly, iSegBelow, itsct.iSegment, true); - int d_up = (iAbove == -1) ? std::numeric_limits::max() : - distance_of_segmens(poly, iSegAbove, itsct.iSegment, true); - if (intrsection_type_prev == INTERSECTION_TYPE_OTHER_VLINE_OK && d_horiz > std::min(d_down, d_up)) - // The vertical crossing comes eralier than the prev crossing. - // Disable the perimeter going back. - intrsection_type_prev = INTERSECTION_TYPE_OTHER_VLINE_NOT_FIRST; - if (d_up > std::min(d_horiz, d_down)) - // The horizontal crossing comes earlier than the vertical crossing. - vert_seg_dir_valid_mask &= ~DIR_BACKWARD; - } - { - int d_horiz = (iNext == -1) ? std::numeric_limits::max() : - distance_of_segmens(poly, itsct.iSegment, segs[i_vline+1].intersections[iNext].iSegment, true); - int d_down = (iSegBelow == -1) ? std::numeric_limits::max() : - distance_of_segmens(poly, itsct.iSegment, iSegBelow, true); - int d_up = (iSegAbove == -1) ? std::numeric_limits::max() : - distance_of_segmens(poly, itsct.iSegment, iSegAbove, true); - if (d_up > std::min(d_horiz, d_down)) - // The horizontal crossing comes earlier than the vertical crossing. - vert_seg_dir_valid_mask &= ~DIR_FORWARD; - } - } -} -*/ - -enum DirectionMask -{ - DIR_FORWARD = 1, - DIR_BACKWARD = 2 -}; - -static std::vector slice_region_by_vertical_lines(const ExPolygonWithOffset &poly_with_offset, size_t n_vlines, coord_t x0, coord_t line_spacing) -{ - // Allocate storage for the segments. - std::vector segs(n_vlines, SegmentedIntersectionLine()); - for (coord_t i = 0; i < coord_t(n_vlines); ++ i) { - segs[i].idx = i; - segs[i].pos = x0 + i * line_spacing; - } - // For each contour - for (size_t iContour = 0; iContour < poly_with_offset.n_contours; ++ iContour) { - const Points &contour = poly_with_offset.contour(iContour).points; - if (contour.size() < 2) - continue; - // For each segment - for (size_t iSegment = 0; iSegment < contour.size(); ++ iSegment) { - size_t iPrev = ((iSegment == 0) ? contour.size() : iSegment) - 1; - const Point &p1 = contour[iPrev]; - const Point &p2 = contour[iSegment]; - // Which of the equally spaced vertical lines is intersected by this segment? - coord_t l = p1(0); - coord_t r = p2(0); - if (l > r) - std::swap(l, r); - // il, ir are the left / right indices of vertical lines intersecting a segment - int il = (l - x0) / line_spacing; - while (il * line_spacing + x0 < l) - ++ il; - il = std::max(int(0), il); - int ir = (r - x0 + line_spacing) / line_spacing; - while (ir * line_spacing + x0 > r) - -- ir; - ir = std::min(int(segs.size()) - 1, ir); - if (il > ir) - // No vertical line intersects this segment. - continue; - assert(il >= 0 && size_t(il) < segs.size()); - assert(ir >= 0 && size_t(ir) < segs.size()); - for (int i = il; i <= ir; ++ i) { - coord_t this_x = segs[i].pos; - assert(this_x == i * line_spacing + x0); - SegmentIntersection is; - is.iContour = iContour; - is.iSegment = iSegment; - assert(l <= this_x); - assert(r >= this_x); - // Calculate the intersection position in y axis. x is known. - if (p1(0) == this_x) { - if (p2(0) == this_x) { - // Ignore strictly vertical segments. - continue; - } - is.pos_p = p1(1); - is.pos_q = 1; - } else if (p2(0) == this_x) { - is.pos_p = p2(1); - is.pos_q = 1; - } else { - // First calculate the intersection parameter 't' as a rational number with non negative denominator. - if (p2(0) > p1(0)) { - is.pos_p = this_x - p1(0); - is.pos_q = p2(0) - p1(0); - } else { - is.pos_p = p1(0) - this_x; - is.pos_q = p1(0) - p2(0); - } - assert(is.pos_p >= 0 && is.pos_p <= is.pos_q); - // Make an intersection point from the 't'. - is.pos_p *= int64_t(p2(1) - p1(1)); - is.pos_p += p1(1) * int64_t(is.pos_q); - } - // +-1 to take rounding into account. - assert(is.pos() + 1 >= std::min(p1(1), p2(1))); - assert(is.pos() <= std::max(p1(1), p2(1)) + 1); - segs[i].intersections.push_back(is); - } - } - } - - // Sort the intersections along their segments, specify the intersection types. - for (size_t i_seg = 0; i_seg < segs.size(); ++ i_seg) { - SegmentedIntersectionLine &sil = segs[i_seg]; - // Sort the intersection points using exact rational arithmetic. - std::sort(sil.intersections.begin(), sil.intersections.end()); - // Assign the intersection types, remove duplicate or overlapping intersection points. - // When a loop vertex touches a vertical line, intersection point is generated for both segments. - // If such two segments are oriented equally, then one of them is removed. - // Otherwise the vertex is tangential to the vertical line and both segments are removed. - // The same rule applies, if the loop is pinched into a single point and this point touches the vertical line: - // The loop has a zero vertical size at the vertical line, therefore the intersection point is removed. - size_t j = 0; - for (size_t i = 0; i < sil.intersections.size(); ++ i) { - // What is the orientation of the segment at the intersection point? - size_t iContour = sil.intersections[i].iContour; - const Points &contour = poly_with_offset.contour(iContour).points; - size_t iSegment = sil.intersections[i].iSegment; - size_t iPrev = ((iSegment == 0) ? contour.size() : iSegment) - 1; - coord_t dir = contour[iSegment](0) - contour[iPrev](0); - bool low = dir > 0; - sil.intersections[i].type = poly_with_offset.is_contour_outer(iContour) ? - (low ? SegmentIntersection::OUTER_LOW : SegmentIntersection::OUTER_HIGH) : - (low ? SegmentIntersection::INNER_LOW : SegmentIntersection::INNER_HIGH); - if (j > 0 && sil.intersections[i].iContour == sil.intersections[j-1].iContour) { - // Two successive intersection points on a vertical line with the same contour. This may be a special case. - if (sil.intersections[i].pos() == sil.intersections[j-1].pos()) { - // Two successive segments meet exactly at the vertical line. - #ifdef SLIC3R_DEBUG - // Verify that the segments of sil.intersections[i] and sil.intersections[j-1] are adjoint. - size_t iSegment2 = sil.intersections[j-1].iSegment; - size_t iPrev2 = ((iSegment2 == 0) ? contour.size() : iSegment2) - 1; - assert(iSegment == iPrev2 || iSegment2 == iPrev); - #endif /* SLIC3R_DEBUG */ - if (sil.intersections[i].type == sil.intersections[j-1].type) { - // Two successive segments of the same direction (both to the right or both to the left) - // meet exactly at the vertical line. - // Remove the second intersection point. - } else { - // This is a loop returning to the same point. - // It may as well be a vertex of a loop touching this vertical line. - // Remove both the lines. - -- j; - } - } else if (sil.intersections[i].type == sil.intersections[j-1].type) { - // Two non successive segments of the same direction (both to the right or both to the left) - // meet exactly at the vertical line. That means there is a Z shaped path, where the center segment - // of the Z shaped path is aligned with this vertical line. - // Remove one of the intersection points while maximizing the vertical segment length. - if (low) { - // Remove the second intersection point, keep the first intersection point. - } else { - // Remove the first intersection point, keep the second intersection point. - sil.intersections[j-1] = sil.intersections[i]; - } - } else { - // Vertical line intersects a contour segment at a general position (not at one of its end points). - // or the contour just touches this vertical line with a vertical segment or a sequence of vertical segments. - // Keep both intersection points. - if (j < i) - sil.intersections[j] = sil.intersections[i]; - ++ j; - } - } else { - // Vertical line intersects a contour segment at a general position (not at one of its end points). - if (j < i) - sil.intersections[j] = sil.intersections[i]; - ++ j; - } - } - // Shrink the list of intersections, if any of the intersection was removed during the classification. - if (j < sil.intersections.size()) - sil.intersections.erase(sil.intersections.begin() + j, sil.intersections.end()); - } - - // Verify the segments. If something is wrong, give up. -#define ASSERT_THROW(CONDITION) do { assert(CONDITION); if (! (CONDITION)) throw InfillFailedException(); } while (0) - for (size_t i_seg = 0; i_seg < segs.size(); ++ i_seg) { - SegmentedIntersectionLine &sil = segs[i_seg]; - // The intersection points have to be even. - ASSERT_THROW((sil.intersections.size() & 1) == 0); - for (size_t i = 0; i < sil.intersections.size();) { - // An intersection segment crossing the bigger contour may cross the inner offsetted contour even number of times. - ASSERT_THROW(sil.intersections[i].type == SegmentIntersection::OUTER_LOW); - size_t j = i + 1; - ASSERT_THROW(j < sil.intersections.size()); - ASSERT_THROW(sil.intersections[j].type == SegmentIntersection::INNER_LOW || sil.intersections[j].type == SegmentIntersection::OUTER_HIGH); - for (; j < sil.intersections.size() && sil.intersections[j].is_inner(); ++ j) ; - ASSERT_THROW(j < sil.intersections.size()); - ASSERT_THROW((j & 1) == 1); - ASSERT_THROW(sil.intersections[j].type == SegmentIntersection::OUTER_HIGH); - ASSERT_THROW(i + 1 == j || sil.intersections[j - 1].type == SegmentIntersection::INNER_HIGH); - i = j + 1; - } - } -#undef ASSERT_THROW - - return segs; -} - -// Connect each contour / vertical line intersection point with another two contour / vertical line intersection points. -// (fill in SegmentIntersection::{prev_on_contour, prev_on_contour_vertical, next_on_contour, next_on_contour_vertical}. -// These contour points are either on the same vertical line, or on the vertical line left / right to the current one. -static void connect_segment_intersections_by_contours( - const ExPolygonWithOffset &poly_with_offset, std::vector &segs, - const FillParams ¶ms, const coord_t link_max_length) -{ - for (size_t i_vline = 0; i_vline < segs.size(); ++ i_vline) { - SegmentedIntersectionLine &il = segs[i_vline]; - const SegmentedIntersectionLine *il_prev = i_vline > 0 ? &segs[i_vline - 1] : nullptr; - const SegmentedIntersectionLine *il_next = i_vline + 1 < segs.size() ? &segs[i_vline + 1] : nullptr; - - for (int i_intersection = 0; i_intersection < int(il.intersections.size()); ++ i_intersection) { - SegmentIntersection &itsct = il.intersections[i_intersection]; - const Polygon &poly = poly_with_offset.contour(itsct.iContour); - const bool forward = itsct.is_low(); // == poly_with_offset.is_contour_ccw(intrsctn->iContour); - - // 1) Find possible connection points on the previous / next vertical line. - // Find an intersection point on il_prev, intersecting i_intersection - // at the same orientation as i_intersection, and being closest to i_intersection - // in the number of contour segments, when following the direction of the contour. - //FIXME this has O(n) time complexity. Likely an O(log(n)) scheme is possible. - int iprev = -1; - int d_prev = std::numeric_limits::max(); - if (il_prev) { - for (int i = 0; i < int(il_prev->intersections.size()); ++ i) { - const SegmentIntersection &itsct2 = il_prev->intersections[i]; - if (itsct.iContour == itsct2.iContour && itsct.type == itsct2.type) { - // The intersection points lie on the same contour and have the same orientation. - // Find the intersection point with a shortest path in the direction of the contour. - int d = distance_of_segmens(poly, itsct2.iSegment, itsct.iSegment, forward); - if (d < d_prev) { - iprev = i; - d_prev = d; - } - } - } - } - - // The same for il_next. - int inext = -1; - int d_next = std::numeric_limits::max(); - if (il_next) { - for (int i = 0; i < int(il_next->intersections.size()); ++ i) { - const SegmentIntersection &itsct2 = il_next->intersections[i]; - if (itsct.iContour == itsct2.iContour && itsct.type == itsct2.type) { - // The intersection points lie on the same contour and have the same orientation. - // Find the intersection point with a shortest path in the direction of the contour. - int d = distance_of_segmens(poly, itsct.iSegment, itsct2.iSegment, forward); - if (d < d_next) { - inext = i; - d_next = d; - } - } - } - } - - // 2) Find possible connection points on the same vertical line. - bool same_prev = false; - bool same_next = false; - // Does the perimeter intersect the current vertical line above intrsctn? - for (int i = 0; i < int(il.intersections.size()); ++ i) - if (const SegmentIntersection &it2 = il.intersections[i]; - i != i_intersection && it2.iContour == itsct.iContour && it2.type != itsct.type) { - int d = distance_of_segmens(poly, it2.iSegment, itsct.iSegment, forward); - if (d < d_prev) { - iprev = i; - d_prev = d; - same_prev = true; - } - d = distance_of_segmens(poly, itsct.iSegment, it2.iSegment, forward); - if (d < d_next) { - inext = i; - d_next = d; - same_next = true; - } - } - assert(iprev >= 0); - assert(inext >= 0); - - itsct.prev_on_contour = iprev; - itsct.prev_on_contour_type = same_prev ? - (iprev < i_intersection ? SegmentIntersection::LinkType::Down : SegmentIntersection::LinkType::Up) : - SegmentIntersection::LinkType::Horizontal; - itsct.next_on_contour = inext; - itsct.next_on_contour_type = same_next ? - (inext < i_intersection ? SegmentIntersection::LinkType::Down : SegmentIntersection::LinkType::Up) : - SegmentIntersection::LinkType::Horizontal; - - if (same_prev) { - // Only follow a vertical perimeter segment if it skips just the outer intersections. - SegmentIntersection *it = &itsct; - SegmentIntersection *end = il.intersections.data() + iprev; - assert(it != end); - if (it > end) - std::swap(it, end); - for (++ it; it != end; ++ it) - if (it->is_inner()) { - itsct.prev_on_contour_quality = SegmentIntersection::LinkQuality::Invalid; - break; - } - } - - if (same_next) { - // Only follow a vertical perimeter segment if it skips just the outer intersections. - SegmentIntersection *it = &itsct; - SegmentIntersection *end = il.intersections.data() + inext; - assert(it != end); - if (it > end) - std::swap(it, end); - for (++ it; it != end; ++ it) - if (it->is_inner()) { - itsct.next_on_contour_quality = SegmentIntersection::LinkQuality::Invalid; - break; - } - } - - // If both iprev and inext are on this vline, then there must not be any intersection with the previous or next contour and we will - // not trace this contour when generating infill. - if (same_prev && same_next) { - assert(iprev != i_intersection); - assert(inext != i_intersection); - if ((iprev > i_intersection) == (inext > i_intersection)) { - // Both closest intersections of this contour are on the same vertical line and at the same side of this point. - // Ignore them when tracing the infill. - itsct.prev_on_contour_quality = SegmentIntersection::LinkQuality::Invalid; - itsct.next_on_contour_quality = SegmentIntersection::LinkQuality::Invalid; - } - } - - if (params.dont_connect) { - if (itsct.prev_on_contour_quality == SegmentIntersection::LinkQuality::Valid) - itsct.prev_on_contour_quality = SegmentIntersection::LinkQuality::TooLong; - if (itsct.next_on_contour_quality == SegmentIntersection::LinkQuality::Valid) - itsct.next_on_contour_quality = SegmentIntersection::LinkQuality::TooLong; - } else if (link_max_length > 0) { - // Measure length of the links. - if (itsct.prev_on_contour_quality == SegmentIntersection::LinkQuality::Valid && - (same_prev ? - measure_perimeter_segment_on_vertical_line_length(poly_with_offset, segs, i_vline, iprev, i_intersection, forward) : - measure_perimeter_horizontal_segment_length(poly_with_offset, segs, i_vline - 1, iprev, i_intersection)) > link_max_length) - itsct.prev_on_contour_quality = SegmentIntersection::LinkQuality::TooLong; - if (itsct.next_on_contour_quality == SegmentIntersection::LinkQuality::Valid && - (same_next ? - measure_perimeter_segment_on_vertical_line_length(poly_with_offset, segs, i_vline, i_intersection, inext, forward) : - measure_perimeter_horizontal_segment_length(poly_with_offset, segs, i_vline, i_intersection, inext)) > link_max_length) - itsct.next_on_contour_quality = SegmentIntersection::LinkQuality::TooLong; - } - } - - // Make the LinkQuality::Invalid symmetric on vertical connections. - for (int i_intersection = 0; i_intersection < int(il.intersections.size()); ++ i_intersection) { - SegmentIntersection &it = il.intersections[i_intersection]; - if (it.has_left_vertical() && it.prev_on_contour_quality == SegmentIntersection::LinkQuality::Invalid) { - SegmentIntersection &it2 = il.intersections[it.left_vertical()]; - assert(it2.left_vertical() == i_intersection); - it2.prev_on_contour_quality = SegmentIntersection::LinkQuality::Invalid; - } - if (it.has_right_vertical() && it.next_on_contour_quality == SegmentIntersection::LinkQuality::Invalid) { - SegmentIntersection &it2 = il.intersections[it.right_vertical()]; - assert(it2.right_vertical() == i_intersection); - it2.next_on_contour_quality = SegmentIntersection::LinkQuality::Invalid; - } - } - } - -#ifndef NDEBUG - // Validate the connectivity. - for (size_t i_vline = 0; i_vline + 1 < segs.size(); ++ i_vline) { - const SegmentedIntersectionLine &il_left = segs[i_vline]; - const SegmentedIntersectionLine &il_right = segs[i_vline + 1]; - for (const SegmentIntersection &it : il_left.intersections) { - if (it.has_right_horizontal()) { - const SegmentIntersection &it_right = il_right.intersections[it.right_horizontal()]; - // For a right link there is a symmetric left link. - assert(it.iContour == it_right.iContour); - assert(it.type == it_right.type); - assert(it_right.has_left_horizontal()); - assert(it_right.left_horizontal() == int(&it - il_left.intersections.data())); - } - } - for (const SegmentIntersection &it : il_right.intersections) { - if (it.has_left_horizontal()) { - const SegmentIntersection &it_left = il_left.intersections[it.left_horizontal()]; - // For a right link there is a symmetric left link. - assert(it.iContour == it_left.iContour); - assert(it.type == it_left.type); - assert(it_left.has_right_horizontal()); - assert(it_left.right_horizontal() == int(&it - il_right.intersections.data())); - } - } - } - for (size_t i_vline = 0; i_vline < segs.size(); ++ i_vline) { - const SegmentedIntersectionLine &il = segs[i_vline]; - for (const SegmentIntersection &it : il.intersections) { - auto i_it = int(&it - il.intersections.data()); - if (it.has_left_vertical_up()) { - assert(il.intersections[it.left_vertical_up()].left_vertical_down() == i_it); - assert(il.intersections[it.left_vertical_up()].prev_on_contour_quality == it.prev_on_contour_quality); - } - if (it.has_left_vertical_down()) { - assert(il.intersections[it.left_vertical_down()].left_vertical_up() == i_it); - assert(il.intersections[it.left_vertical_down()].prev_on_contour_quality == it.prev_on_contour_quality); - } - if (it.has_right_vertical_up()) { - assert(il.intersections[it.right_vertical_up()].right_vertical_down() == i_it); - assert(il.intersections[it.right_vertical_up()].next_on_contour_quality == it.next_on_contour_quality); - } - if (it.has_right_vertical_down()) { - assert(il.intersections[it.right_vertical_down()].right_vertical_up() == i_it); - assert(il.intersections[it.right_vertical_down()].next_on_contour_quality == it.next_on_contour_quality); - } - } - } -#endif /* NDEBUG */ -} - -// Find the last INNER_HIGH intersection starting with INNER_LOW, that is followed by OUTER_HIGH intersection. -// Such intersection shall always exist. -static const SegmentIntersection& end_of_vertical_run_raw(const SegmentIntersection &start) -{ - assert(start.type == SegmentIntersection::INNER_LOW); - // Step back to the beginning of the vertical segment to mark it as consumed. - auto *it = &start; - do { - ++ it; - } while (it->type != SegmentIntersection::OUTER_HIGH); - if ((it - 1)->is_inner()) { - // Step back. - -- it; - assert(it->type == SegmentIntersection::INNER_HIGH); - } - return *it; -} -static SegmentIntersection& end_of_vertical_run_raw(SegmentIntersection &start) -{ - return const_cast(end_of_vertical_run_raw(std::as_const(start))); -} - -// Find the last INNER_HIGH intersection starting with INNER_LOW, that is followed by OUTER_HIGH intersection, traversing vertical up contours if enabled. -// Such intersection shall always exist. -static const SegmentIntersection& end_of_vertical_run(const SegmentedIntersectionLine &il, const SegmentIntersection &start) -{ - assert(start.type == SegmentIntersection::INNER_LOW); - const SegmentIntersection *end = &end_of_vertical_run_raw(start); - assert(end->type == SegmentIntersection::INNER_HIGH); - for (;;) { - int up = end->vertical_up(); - if (up == -1 || (end->has_left_vertical_up() ? end->prev_on_contour_quality : end->next_on_contour_quality) != SegmentIntersection::LinkQuality::Valid) - break; - const SegmentIntersection &new_start = il.intersections[up]; - assert(end->iContour == new_start.iContour); - assert(new_start.type == SegmentIntersection::INNER_LOW); - end = &end_of_vertical_run_raw(new_start); - } - assert(end->type == SegmentIntersection::INNER_HIGH); - return *end; -} -static SegmentIntersection& end_of_vertical_run(SegmentedIntersectionLine &il, SegmentIntersection &start) -{ - return const_cast(end_of_vertical_run(std::as_const(il), std::as_const(start))); -} - -static void traverse_graph_generate_polylines( - const ExPolygonWithOffset& poly_with_offset, const FillParams& params, const coord_t link_max_length, std::vector& segs, Polylines& polylines_out) -{ - // For each outer only chords, measure their maximum distance to the bow of the outer contour. - // Mark an outer only chord as consumed, if the distance is low. - for (int i_vline = 0; i_vline < int(segs.size()); ++ i_vline) { - SegmentedIntersectionLine &vline = segs[i_vline]; - for (int i_intersection = 0; i_intersection + 1 < int(vline.intersections.size()); ++ i_intersection) { - if (vline.intersections[i_intersection].type == SegmentIntersection::OUTER_LOW && - vline.intersections[i_intersection + 1].type == SegmentIntersection::OUTER_HIGH) { - bool consumed = false; - // if (params.full_infill()) { - // measure_outer_contour_slab(poly_with_offset, segs, i_vline, i_ntersection); - // } else - consumed = true; - vline.intersections[i_intersection].consumed_vertical_up = consumed; - } - } - } - - // Now construct a graph. - // Find the first point. - // Naively one would expect to achieve best results by chaining the paths by the shortest distance, - // but that procedure does not create the longest continuous paths. - // A simple "sweep left to right" procedure achieves better results. - int i_vline = 0; - int i_intersection = -1; - // Follow the line, connect the lines into a graph. - // Until no new line could be added to the output path: - Point pointLast; - Polyline* polyline_current = nullptr; - if (! polylines_out.empty()) - pointLast = polylines_out.back().points.back(); - for (;;) { - if (i_intersection == -1) { - // The path has been interrupted. Find a next starting point, closest to the previous extruder position. - coordf_t dist2min = std::numeric_limits().max(); - for (int i_vline2 = 0; i_vline2 < int(segs.size()); ++ i_vline2) { - const SegmentedIntersectionLine &vline = segs[i_vline2]; - if (! vline.intersections.empty()) { - assert(vline.intersections.size() > 1); - // Even number of intersections with the loops. - assert((vline.intersections.size() & 1) == 0); - assert(vline.intersections.front().type == SegmentIntersection::OUTER_LOW); - for (int i = 0; i < int(vline.intersections.size()); ++ i) { - const SegmentIntersection& intrsctn = vline.intersections[i]; - if (intrsctn.is_outer()) { - assert(intrsctn.is_low() || i > 0); - bool consumed = intrsctn.is_low() ? - intrsctn.consumed_vertical_up : - vline.intersections[i - 1].consumed_vertical_up; - if (! consumed) { - coordf_t dist2 = sqr(coordf_t(pointLast(0) - vline.pos)) + sqr(coordf_t(pointLast(1) - intrsctn.pos())); - if (dist2 < dist2min) { - dist2min = dist2; - i_vline = i_vline2; - i_intersection = i; - //FIXME We are taking the first left point always. Verify, that the caller chains the paths - // by a shortest distance, while reversing the paths if needed. - //if (polylines_out.empty()) - // Initial state, take the first line, which is the first from the left. - goto found; - } - } - } - } - } - } - if (i_intersection == -1) - // We are finished. - break; - found: - // Start a new path. - polylines_out.push_back(Polyline()); - polyline_current = &polylines_out.back(); - // Emit the first point of a path. - pointLast = Point(segs[i_vline].pos, segs[i_vline].intersections[i_intersection].pos()); - polyline_current->points.push_back(pointLast); - } - - // From the initial point (i_vline, i_intersection), follow a path. - SegmentedIntersectionLine &vline = segs[i_vline]; - SegmentIntersection *it = &vline.intersections[i_intersection]; - bool going_up = it->is_low(); - bool try_connect = false; - if (going_up) { - assert(! it->consumed_vertical_up); - assert(i_intersection + 1 < vline.intersections.size()); - // Step back to the beginning of the vertical segment to mark it as consumed. - if (it->is_inner()) { - assert(i_intersection > 0); - -- it; - -- i_intersection; - } - // Consume the complete vertical segment up to the outer contour. - do { - it->consumed_vertical_up = true; - ++ it; - ++ i_intersection; - assert(i_intersection < vline.intersections.size()); - } while (it->type != SegmentIntersection::OUTER_HIGH); - if ((it - 1)->is_inner()) { - // Step back. - -- it; - -- i_intersection; - assert(it->type == SegmentIntersection::INNER_HIGH); - try_connect = true; - } - } else { - // Going down. - assert(it->is_high()); - assert(i_intersection > 0); - assert(!(it - 1)->consumed_vertical_up); - // Consume the complete vertical segment up to the outer contour. - if (it->is_inner()) - it->consumed_vertical_up = true; - do { - assert(i_intersection > 0); - -- it; - -- i_intersection; - it->consumed_vertical_up = true; - } while (it->type != SegmentIntersection::OUTER_LOW); - if ((it + 1)->is_inner()) { - // Step back. - ++ it; - ++ i_intersection; - assert(it->type == SegmentIntersection::INNER_LOW); - try_connect = true; - } - } - if (try_connect) { - // Decide, whether to finish the segment, or whether to follow the perimeter. - // 1) Find possible connection points on the previous / next vertical line. - int i_prev = it->left_horizontal(); - int i_next = it->right_horizontal(); - bool intersection_prev_valid = intersection_on_prev_vertical_line_valid(segs, i_vline, i_intersection); - bool intersection_next_valid = intersection_on_next_vertical_line_valid(segs, i_vline, i_intersection); - bool intersection_horizontal_valid = intersection_prev_valid || intersection_next_valid; - // Mark both the left and right connecting segment as consumed, because one cannot go to this intersection point as it has been consumed. - if (i_prev != -1) - segs[i_vline - 1].intersections[i_prev].consumed_perimeter_right = true; - if (i_next != -1) - it->consumed_perimeter_right = true; - - // Try to connect to a previous or next vertical line, making a zig-zag pattern. - if (intersection_horizontal_valid) { - // A horizontal connection along the perimeter line exists. - assert(it->is_inner()); - bool take_next = intersection_next_valid; - if (intersection_prev_valid && intersection_next_valid) { - // Take the shorter segment. This greedy heuristics may not be the best. - coordf_t dist_prev = measure_perimeter_horizontal_segment_length(poly_with_offset, segs, i_vline - 1, i_prev, i_intersection); - coordf_t dist_next = measure_perimeter_horizontal_segment_length(poly_with_offset, segs, i_vline, i_intersection, i_next); - take_next = dist_next < dist_prev; - } - polyline_current->points.emplace_back(vline.pos, it->pos()); - emit_perimeter_prev_next_segment(poly_with_offset, segs, i_vline, it->iContour, i_intersection, take_next ? i_next : i_prev, *polyline_current, take_next); - //FIXME consume the left / right connecting segments at the other end of this line? Currently it is not critical because a perimeter segment is not followed if the vertical segment at the other side has already been consumed. - // Advance to the neighbor line. - if (take_next) { - ++ i_vline; - i_intersection = i_next; - } - else { - -- i_vline; - i_intersection = i_prev; - } - continue; - } - - // Try to connect to a previous or next point on the same vertical line. - int i_vertical = it->vertical_outside(); - auto vertical_link_quality = (i_vertical == -1 || vline.intersections[i_vertical + (going_up ? 0 : -1)].consumed_vertical_up) ? - SegmentIntersection::LinkQuality::Invalid : it->vertical_outside_quality(); -#if 0 - if (vertical_link_quality == SegmentIntersection::LinkQuality::Valid || - // Follow the link if there is no horizontal link available. - (! intersection_horizontal_valid && vertical_link_quality != SegmentIntersection::LinkQuality::Invalid)) { -#else - if (vertical_link_quality != SegmentIntersection::LinkQuality::Invalid) { -#endif - assert(it->iContour == vline.intersections[i_vertical].iContour); - polyline_current->points.emplace_back(vline.pos, it->pos()); - if (vertical_link_quality == SegmentIntersection::LinkQuality::Valid) - // Consume the connecting contour and the next segment. - emit_perimeter_segment_on_vertical_line(poly_with_offset, segs, i_vline, it->iContour, i_intersection, i_vertical, - *polyline_current, going_up ? it->has_left_vertical_up() : it->has_right_vertical_down()); - else { - // Just skip the connecting contour and start a new path. - polylines_out.emplace_back(); - polyline_current = &polylines_out.back(); - polyline_current->points.emplace_back(vline.pos, vline.intersections[i_vertical].pos()); - } - // Mark both the left and right connecting segment as consumed, because one cannot go to this intersection point as it has been consumed. - // If there are any outer intersection points skipped (bypassed) by the contour, - // mark them as processed. - if (going_up) - for (int i = i_intersection; i < i_vertical; ++i) - vline.intersections[i].consumed_vertical_up = true; - else - for (int i = i_vertical; i < i_intersection; ++i) - vline.intersections[i].consumed_vertical_up = true; - // seg.intersections[going_up ? i_intersection : i_intersection - 1].consumed_vertical_up = true; - it->consumed_perimeter_right = true; - (going_up ? ++it : --it)->consumed_perimeter_right = true; - i_intersection = i_vertical; - continue; - } - - // No way to continue the current polyline. Take the rest of the line up to the outer contour. - // This will finish the polyline, starting another polyline at a new point. - going_up ? ++ it : -- it; - } - - // Finish the current vertical line, - // reset the current vertical line to pick a new starting point in the next round. - assert(it->is_outer()); - assert(it->is_high() == going_up); - pointLast = Point(vline.pos, it->pos()); - polyline_current->points.emplace_back(pointLast); - // Handle duplicate points and zero length segments. - polyline_current->remove_duplicate_points(); - assert(! polyline_current->has_duplicate_points()); - // Handle nearly zero length edges. - if (polyline_current->points.size() <= 1 || - (polyline_current->points.size() == 2 && - std::abs(polyline_current->points.front()(0) - polyline_current->points.back()(0)) < SCALED_EPSILON && - std::abs(polyline_current->points.front()(1) - polyline_current->points.back()(1)) < SCALED_EPSILON)) - polylines_out.pop_back(); - it = nullptr; - i_intersection = -1; - polyline_current = nullptr; - } -} - -struct MonotonicRegion -{ - struct Boundary { - int vline; - int low; - int high; - }; - - Boundary left; - Boundary right; - - // Length when starting at left.low - float len1 { 0.f }; - // Length when starting at left.high - float len2 { 0.f }; - // If true, then when starting at left.low, then ending at right.high and vice versa. - // If false, then ending at the same side as starting. - bool flips { false }; - - float length(bool region_flipped) const { return region_flipped ? len2 : len1; } - int left_intersection_point(bool region_flipped) const { return region_flipped ? left.high : left.low; } - int right_intersection_point(bool region_flipped) const { return (region_flipped == flips) ? right.low : right.high; } - -#if NDEBUG - // Left regions are used to track whether all regions left to this one have already been printed. - boost::container::small_vector left_neighbors; - // Right regions are held to pick a next region to be extruded using the "Ant colony" heuristics. - boost::container::small_vector right_neighbors; -#else - // For debugging, use the normal vector as it is better supported by debug visualizers. - std::vector left_neighbors; - std::vector right_neighbors; -#endif -}; - -struct AntPath -{ - float length { -1. }; // Length of the link to the next region. - float visibility { -1. }; // 1 / length. Which length, just to the next region, or including the path accross the region? - float pheromone { 0 }; // <0, 1> -}; - -struct MonotonicRegionLink -{ - MonotonicRegion *region; - bool flipped; - // Distance of right side of this region to left side of the next region, if the "flipped" flag of this region and the next region - // is applied as defined. - AntPath *next; - // Distance of right side of this region to left side of the next region, if the "flipped" flag of this region and the next region - // is applied in reverse order as if the zig-zags were flipped. - AntPath *next_flipped; -}; - -// Matrix of paths (AntPath) connecting ends of MontonousRegions. -// AntPath lengths and their derived visibilities refer to the length of the perimeter line if such perimeter segment exists. -class AntPathMatrix -{ -public: - AntPathMatrix( - const std::vector ®ions, - const ExPolygonWithOffset &poly_with_offset, - const std::vector &segs, - const float initial_pheromone) : - m_regions(regions), - m_poly_with_offset(poly_with_offset), - m_segs(segs), - // From end of one region to the start of another region, both flipped or not flipped. - m_matrix(regions.size() * regions.size() * 4, AntPath{ -1., -1., initial_pheromone}) {} - - void update_inital_pheromone(float initial_pheromone) - { - for (AntPath &ap : m_matrix) - ap.pheromone = initial_pheromone; - } - - AntPath& operator()(const MonotonicRegion ®ion_from, bool flipped_from, const MonotonicRegion ®ion_to, bool flipped_to) - { - int row = 2 * int(®ion_from - m_regions.data()) + flipped_from; - int col = 2 * int(®ion_to - m_regions.data()) + flipped_to; - AntPath &path = m_matrix[row * m_regions.size() * 2 + col]; - if (path.length == -1.) { - // This path is accessed for the first time. Update the length and cost. - int i_from = region_from.right_intersection_point(flipped_from); - int i_to = region_to.left_intersection_point(flipped_to); - const SegmentedIntersectionLine &vline_from = m_segs[region_from.right.vline]; - const SegmentedIntersectionLine &vline_to = m_segs[region_to.left.vline]; - if (region_from.right.vline + 1 == region_from.left.vline) { - int i_right = vline_from.intersections[i_from].right_horizontal(); - if (i_right == i_to && vline_from.intersections[i_from].next_on_contour_quality == SegmentIntersection::LinkQuality::Valid) { - // Measure length along the contour. - path.length = unscale(measure_perimeter_horizontal_segment_length(m_poly_with_offset, m_segs, region_from.right.vline, i_from, i_to)); - } - } - if (path.length == -1.) { - // Just apply the Eucledian distance of the end points. - path.length = unscale(Vec2f(vline_to.pos - vline_from.pos, vline_to.intersections[i_to].pos() - vline_from.intersections[i_from].pos()).norm()); - } - path.visibility = 1.f / (path.length + float(EPSILON)); - } - return path; - } - - AntPath& operator()(const MonotonicRegionLink ®ion_from, const MonotonicRegion ®ion_to, bool flipped_to) - { return (*this)(*region_from.region, region_from.flipped, region_to, flipped_to); } - AntPath& operator()(const MonotonicRegion ®ion_from, bool flipped_from, const MonotonicRegionLink ®ion_to) - { return (*this)(region_from, flipped_from, *region_to.region, region_to.flipped); } - AntPath& operator()(const MonotonicRegionLink ®ion_from, const MonotonicRegionLink ®ion_to) - { return (*this)(*region_from.region, region_from.flipped, *region_to.region, region_to.flipped); } - -private: - // Source regions, used for addressing and updating m_matrix. - const std::vector &m_regions; - // To calculate the intersection points and contour lengths. - const ExPolygonWithOffset &m_poly_with_offset; - const std::vector &m_segs; - // From end of one region to the start of another region, both flipped or not flipped. - //FIXME one may possibly use sparse representation of the matrix, likely using hashing. - std::vector m_matrix; -}; - -static const SegmentIntersection& vertical_run_bottom(const SegmentedIntersectionLine &vline, const SegmentIntersection &start) -{ - assert(start.is_inner()); - const SegmentIntersection *it = &start; - // Find the lowest SegmentIntersection::INNER_LOW starting with right. - for (;;) { - while (it->type != SegmentIntersection::INNER_LOW) - -- it; - if ((it - 1)->type == SegmentIntersection::INNER_HIGH) - -- it; - else { - int down = it->vertical_down(); - if (down == -1 || it->vertical_down_quality() != SegmentIntersection::LinkQuality::Valid) - break; - it = &vline.intersections[down]; - assert(it->type == SegmentIntersection::INNER_HIGH); - } - } - return *it; -} -static SegmentIntersection& vertical_run_bottom(SegmentedIntersectionLine& vline, SegmentIntersection& start) -{ - return const_cast(vertical_run_bottom(std::as_const(vline), std::as_const(start))); -} - -static const SegmentIntersection& vertical_run_top(const SegmentedIntersectionLine &vline, const SegmentIntersection &start) -{ - assert(start.is_inner()); - const SegmentIntersection *it = &start; - // Find the lowest SegmentIntersection::INNER_LOW starting with right. - for (;;) { - while (it->type != SegmentIntersection::INNER_HIGH) - ++ it; - if ((it + 1)->type == SegmentIntersection::INNER_LOW) - ++ it; - else { - int up = it->vertical_up(); - if (up == -1 || it->vertical_up_quality() != SegmentIntersection::LinkQuality::Valid) - break; - it = &vline.intersections[up]; - assert(it->type == SegmentIntersection::INNER_LOW); - } - } - return *it; -} -static SegmentIntersection& vertical_run_top(SegmentedIntersectionLine& vline, SegmentIntersection& start) -{ - return const_cast(vertical_run_top(std::as_const(vline), std::as_const(start))); -} - -static SegmentIntersection* overlap_bottom(SegmentIntersection &start, SegmentIntersection &end, SegmentedIntersectionLine &vline_this, SegmentedIntersectionLine &vline_other, SegmentIntersection::Side side) -{ - SegmentIntersection *other = nullptr; - assert(start.is_inner()); - assert(end.is_inner()); - const SegmentIntersection *it = &start; - for (;;) { - if (it->is_inner()) { - int i = it->horizontal(side); - if (i != -1) { - other = &vline_other.intersections[i]; - break; - } - if (it == &end) - break; - } - if (it->type != SegmentIntersection::INNER_HIGH) - ++ it; - else if ((it + 1)->type == SegmentIntersection::INNER_LOW) - ++ it; - else { - int up = it->vertical_up(); - if (up == -1 || it->vertical_up_quality() != SegmentIntersection::LinkQuality::Valid) - break; - it = &vline_this.intersections[up]; - assert(it->type == SegmentIntersection::INNER_LOW); - } - } - return other == nullptr ? nullptr : &vertical_run_bottom(vline_other, *other); -} - -static SegmentIntersection* overlap_top(SegmentIntersection &start, SegmentIntersection &end, SegmentedIntersectionLine &vline_this, SegmentedIntersectionLine &vline_other, SegmentIntersection::Side side) -{ - SegmentIntersection *other = nullptr; - assert(start.is_inner()); - assert(end.is_inner()); - const SegmentIntersection *it = &end; - for (;;) { - if (it->is_inner()) { - int i = it->horizontal(side); - if (i != -1) { - other = &vline_other.intersections[i]; - break; - } - if (it == &start) - break; - } - if (it->type != SegmentIntersection::INNER_LOW) - -- it; - else if ((it - 1)->type == SegmentIntersection::INNER_HIGH) - -- it; - else { - int down = it->vertical_down(); - if (down == -1 || it->vertical_down_quality() != SegmentIntersection::LinkQuality::Valid) - break; - it = &vline_this.intersections[down]; - assert(it->type == SegmentIntersection::INNER_HIGH); - } - } - return other == nullptr ? nullptr : &vertical_run_top(vline_other, *other); -} - -static std::pair left_overlap(SegmentIntersection &start, SegmentIntersection &end, SegmentedIntersectionLine &vline_this, SegmentedIntersectionLine &vline_left) -{ - std::pair out(nullptr, nullptr); - out.first = overlap_bottom(start, end, vline_this, vline_left, SegmentIntersection::Side::Left); - if (out.first != nullptr) - out.second = overlap_top(start, end, vline_this, vline_left, SegmentIntersection::Side::Left); - assert((out.first == nullptr && out.second == nullptr) || out.first < out.second); - return out; -} - -static std::pair left_overlap(std::pair &start_end, SegmentedIntersectionLine &vline_this, SegmentedIntersectionLine &vline_left) -{ - assert((start_end.first == nullptr) == (start_end.second == nullptr)); - return start_end.first == nullptr ? start_end : left_overlap(*start_end.first, *start_end.second, vline_this, vline_left); -} - -static std::pair right_overlap(SegmentIntersection &start, SegmentIntersection &end, SegmentedIntersectionLine &vline_this, SegmentedIntersectionLine &vline_right) -{ - std::pair out(nullptr, nullptr); - out.first = overlap_bottom(start, end, vline_this, vline_right, SegmentIntersection::Side::Right); - if (out.first != nullptr) - out.second = overlap_top(start, end, vline_this, vline_right, SegmentIntersection::Side::Right); - assert((out.first == nullptr && out.second == nullptr) || out.first < out.second); - return out; -} - -static std::pair right_overlap(std::pair &start_end, SegmentedIntersectionLine &vline_this, SegmentedIntersectionLine &vline_right) -{ - assert((start_end.first == nullptr) == (start_end.second == nullptr)); - return start_end.first == nullptr ? start_end : right_overlap(*start_end.first, *start_end.second, vline_this, vline_right); -} - -static std::vector generate_montonous_regions(std::vector &segs) -{ - std::vector monotonic_regions; - -#ifndef NDEBUG - #define SLIC3R_DEBUG_MONOTONOUS_REGIONS -#endif - -#ifdef SLIC3R_DEBUG_MONOTONOUS_REGIONS - std::vector>> consumed(segs.size()); - auto test_overlap = [&consumed](int segment, int low, int high) { - for (const std::pair& interval : consumed[segment]) - if ((low >= interval.first && low <= interval.second) || - (interval.first >= low && interval.first <= high)) - return true; - consumed[segment].emplace_back(low, high); - return false; - }; -#else - auto test_overlap = [](int, int, int) { return false; }; -#endif - - for (int i_vline_seed = 0; i_vline_seed < int(segs.size()); ++ i_vline_seed) { - SegmentedIntersectionLine &vline_seed = segs[i_vline_seed]; - for (int i_intersection_seed = 1; i_intersection_seed + 1 < int(vline_seed.intersections.size()); ) { - while (i_intersection_seed < int(vline_seed.intersections.size()) && - vline_seed.intersections[i_intersection_seed].type != SegmentIntersection::INNER_LOW) - ++ i_intersection_seed; - if (i_intersection_seed == int(vline_seed.intersections.size())) - break; - SegmentIntersection *start = &vline_seed.intersections[i_intersection_seed]; - SegmentIntersection *end = &end_of_vertical_run(vline_seed, *start); - if (! start->consumed_vertical_up) { - // Draw a new monotonic region starting with this segment. - // while there is only a single right neighbor - int i_vline = i_vline_seed; - std::pair left(start, end); - MonotonicRegion region; - region.left.vline = i_vline; - region.left.low = int(left.first - vline_seed.intersections.data()); - region.left.high = int(left.second - vline_seed.intersections.data()); - region.right = region.left; - assert(! test_overlap(region.left.vline, region.left.low, region.left.high)); - start->consumed_vertical_up = true; - int num_lines = 1; - while (++ i_vline < int(segs.size())) { - SegmentedIntersectionLine &vline_left = segs[i_vline - 1]; - SegmentedIntersectionLine &vline_right = segs[i_vline]; - std::pair right = right_overlap(left, vline_left, vline_right); - if (right.first == nullptr) - // No neighbor at the right side of the current segment. - break; - SegmentIntersection* right_top_first = &vertical_run_top(vline_right, *right.first); - if (right_top_first != right.second) - // This segment overlaps with multiple segments at its right side. - break; - std::pair right_left = left_overlap(right, vline_right, vline_left); - if (left != right_left) - // Left & right draws don't overlap exclusively, right neighbor segment overlaps with multiple segments at its left. - break; - region.right.vline = i_vline; - region.right.low = int(right.first - vline_right.intersections.data()); - region.right.high = int(right.second - vline_right.intersections.data()); - right.first->consumed_vertical_up = true; - assert(! test_overlap(region.right.vline, region.right.low, region.right.high)); - ++ num_lines; - left = right; - } - // Even number of lines makes the infill zig-zag to exit on the other side of the region than where it starts. - region.flips = (num_lines & 1) != 0; - monotonic_regions.emplace_back(region); - } - i_intersection_seed = int(end - vline_seed.intersections.data()) + 1; - } - } - - return monotonic_regions; -} - -// Traverse path, calculate length of the draw for the purpose of optimization. -// This function is very similar to polylines_from_paths() in the way how it traverses the path, but -// polylines_from_paths() emits a path, while this function just calculates the path length. -static float montonous_region_path_length(const MonotonicRegion ®ion, bool dir, const ExPolygonWithOffset &poly_with_offset, const std::vector &segs) -{ - // From the initial point (i_vline, i_intersection), follow a path. - int i_intersection = region.left_intersection_point(dir); - int i_vline = region.left.vline; - float total_length = 0.; - bool no_perimeter = false; - Vec2f last_point; - - for (;;) { - const SegmentedIntersectionLine &vline = segs[i_vline]; - const SegmentIntersection *it = &vline.intersections[i_intersection]; - const bool going_up = it->is_low(); - - if (no_perimeter) - total_length += (last_point - Vec2f(vline.pos, (it + (going_up ? - 1 : 1))->pos())).norm(); - - int iright = it->right_horizontal(); - if (going_up) { - // Traverse the complete vertical segment up to the inner contour. - for (;;) { - do { - ++ it; - iright = std::max(iright, it->right_horizontal()); - assert(it->is_inner()); - } while (it->type != SegmentIntersection::INNER_HIGH || (it + 1)->type != SegmentIntersection::OUTER_HIGH); - int inext = it->vertical_up(); - if (inext == -1 || it->vertical_up_quality() != SegmentIntersection::LinkQuality::Valid) - break; - assert(it->iContour == vline.intersections[inext].iContour); - it = vline.intersections.data() + inext; - } - } else { - // Going down. - assert(it->is_high()); - assert(i_intersection > 0); - for (;;) { - do { - -- it; - if (int iright_new = it->right_horizontal(); iright_new != -1) - iright = iright_new; - assert(it->is_inner()); - } while (it->type != SegmentIntersection::INNER_LOW || (it - 1)->type != SegmentIntersection::OUTER_LOW); - int inext = it->vertical_down(); - if (inext == -1 || it->vertical_down_quality() != SegmentIntersection::LinkQuality::Valid) - break; - assert(it->iContour == vline.intersections[inext].iContour); - it = vline.intersections.data() + inext; - } - } - - if (i_vline == region.right.vline) - break; - - int inext = it->right_horizontal(); - if (inext != -1 && it->next_on_contour_quality == SegmentIntersection::LinkQuality::Valid) { - // Summarize length of the connection line along the perimeter. - //FIXME should it be weighted with a lower weight than non-extruding connection line? What weight? - // Taking half of the length. - total_length += 0.5f * float(measure_perimeter_horizontal_segment_length(poly_with_offset, segs, i_vline, it - vline.intersections.data(), inext)); - // Don't add distance to the next vertical line start to the total length. - no_perimeter = false; - i_intersection = inext; - } else { - // Finish the current vertical line, - going_up ? ++ it : -- it; - assert(it->is_outer()); - assert(it->is_high() == going_up); - // Mark the end of this vertical line. - last_point = Vec2f(vline.pos, it->pos()); - // Remember to add distance to the last point. - no_perimeter = true; - if (inext == -1) { - // Find the end of the next overlapping vertical segment. - const SegmentedIntersectionLine &vline_right = segs[i_vline + 1]; - const SegmentIntersection *right = going_up ? - &vertical_run_top(vline_right, vline_right.intersections[iright]) : &vertical_run_bottom(vline_right, vline_right.intersections[iright]); - i_intersection = int(right - vline_right.intersections.data()); - } else - i_intersection = inext; - } - - ++ i_vline; - } - - return unscale(total_length); -} - -static void connect_monotonic_regions(std::vector ®ions, const ExPolygonWithOffset &poly_with_offset, std::vector &segs) -{ - // Map from low intersection to left / right side of a monotonic region. - using MapType = std::pair; - std::vector map_intersection_to_region_start; - std::vector map_intersection_to_region_end; - map_intersection_to_region_start.reserve(regions.size()); - map_intersection_to_region_end.reserve(regions.size()); - for (MonotonicRegion ®ion : regions) { - map_intersection_to_region_start.emplace_back(&segs[region.left.vline].intersections[region.left.low], ®ion); - map_intersection_to_region_end.emplace_back(&segs[region.right.vline].intersections[region.right.low], ®ion); - } - auto intersections_lower = [](const MapType &l, const MapType &r){ return l.first < r.first ; }; - auto intersections_equal = [](const MapType &l, const MapType &r){ return l.first == r.first ; }; - std::sort(map_intersection_to_region_start.begin(), map_intersection_to_region_start.end(), intersections_lower); - std::sort(map_intersection_to_region_end.begin(), map_intersection_to_region_end.end(), intersections_lower); - - // Scatter links to neighboring regions. - for (MonotonicRegion ®ion : regions) { - if (region.left.vline > 0) { - auto &vline = segs[region.left.vline]; - auto &vline_left = segs[region.left.vline - 1]; - auto[lbegin, lend] = left_overlap(vline.intersections[region.left.low], vline.intersections[region.left.high], vline, vline_left); - if (lbegin != nullptr) { - for (;;) { - MapType key(lbegin, nullptr); - auto it = std::lower_bound(map_intersection_to_region_end.begin(), map_intersection_to_region_end.end(), key); - assert(it != map_intersection_to_region_end.end() && it->first == key.first); - it->second->right_neighbors.emplace_back(®ion); - SegmentIntersection *lnext = &vertical_run_top(vline_left, *lbegin); - if (lnext == lend) - break; - while (lnext->type != SegmentIntersection::INNER_LOW) - ++ lnext; - lbegin = lnext; - } - } - } - if (region.right.vline + 1 < int(segs.size())) { - auto &vline = segs[region.right.vline]; - auto &vline_right = segs[region.right.vline + 1]; - auto [rbegin, rend] = right_overlap(vline.intersections[region.right.low], vline.intersections[region.right.high], vline, vline_right); - if (rbegin != nullptr) { - for (;;) { - MapType key(rbegin, nullptr); - auto it = std::lower_bound(map_intersection_to_region_start.begin(), map_intersection_to_region_start.end(), key); - assert(it != map_intersection_to_region_start.end() && it->first == key.first); - it->second->left_neighbors.emplace_back(®ion); - SegmentIntersection *rnext = &vertical_run_top(vline_right, *rbegin); - if (rnext == rend) - break; - while (rnext->type != SegmentIntersection::INNER_LOW) - ++ rnext; - rbegin = rnext; - } - } - } - } - - // Sometimes a segment may indicate that it connects to a segment on the other side while the other does not. - // This may be a valid case if one side contains runs of OUTER_LOW, INNER_LOW, {INNER_HIGH, INNER_LOW}*, INNER_HIGH, OUTER_HIGH, - // where the part in the middle does not connect to the other side, but it will be extruded through. - for (MonotonicRegion ®ion : regions) { - std::sort(region.left_neighbors.begin(), region.left_neighbors.end()); - std::sort(region.right_neighbors.begin(), region.right_neighbors.end()); - } - for (MonotonicRegion ®ion : regions) { - for (MonotonicRegion *neighbor : region.left_neighbors) { - auto it = std::lower_bound(neighbor->right_neighbors.begin(), neighbor->right_neighbors.end(), ®ion); - if (it == neighbor->right_neighbors.end() || *it != ®ion) - neighbor->right_neighbors.insert(it, ®ion); - } - for (MonotonicRegion *neighbor : region.right_neighbors) { - auto it = std::lower_bound(neighbor->left_neighbors.begin(), neighbor->left_neighbors.end(), ®ion); - if (it == neighbor->left_neighbors.end() || *it != ®ion) - neighbor->left_neighbors.insert(it, ®ion); - } - } - -#ifndef NDEBUG - // Verify symmetry of the left_neighbors / right_neighbors. - for (MonotonicRegion ®ion : regions) { - for (MonotonicRegion *neighbor : region.left_neighbors) { - assert(std::count(region.left_neighbors.begin(), region.left_neighbors.end(), neighbor) == 1); - assert(std::find(neighbor->right_neighbors.begin(), neighbor->right_neighbors.end(), ®ion) != neighbor->right_neighbors.end()); - } - for (MonotonicRegion *neighbor : region.right_neighbors) { - assert(std::count(region.right_neighbors.begin(), region.right_neighbors.end(), neighbor) == 1); - assert(std::find(neighbor->left_neighbors.begin(), neighbor->left_neighbors.end(), ®ion) != neighbor->left_neighbors.end()); - } - } -#endif /* NDEBUG */ - - // Fill in sum length of connecting lines of a region. This length is used for optimizing the infill path for minimum length. - for (MonotonicRegion ®ion : regions) { - region.len1 = montonous_region_path_length(region, false, poly_with_offset, segs); - region.len2 = montonous_region_path_length(region, true, poly_with_offset, segs); - // Subtract the smaller length from the longer one, so we will optimize just with the positive difference of the two. - if (region.len1 > region.len2) { - region.len1 -= region.len2; - region.len2 = 0; - } else { - region.len2 -= region.len1; - region.len1 = 0; - } - } -} - -// Raad Salman: Algorithms for the Precedence Constrained Generalized Travelling Salesperson Problem -// https://www.chalmers.se/en/departments/math/research/research-groups/optimization/OptimizationMasterTheses/MScThesis-RaadSalman-final.pdf -// Algorithm 6.1 Lexicographic Path Preserving 3-opt -// Optimize path while maintaining the ordering constraints. -void monotonic_3_opt(std::vector &path, const std::vector &segs) -{ - // When doing the 3-opt path preserving flips, one has to fulfill two constraints: - // - // 1) The new path should be shorter than the old path. - // 2) The precedence constraints shall be satisified on the new path. - // - // Branch & bound with KD-tree may be used with the shorter path constraint, but the precedence constraint will have to be recalculated for each - // shorter path candidate found, which has a quadratic cost for a dense precedence graph. For a sparse precedence graph the precedence - // constraint verification will be cheaper. - // - // On the other side, if the full search space is traversed as in the diploma thesis by Raad Salman (page 24, Algorithm 6.1 Lexicographic Path Preserving 3-opt), - // then the precedence constraint verification is amortized inside the O(n^3) loop. Now which is better for our task? - // - // It is beneficial to also try flipping of the infill zig-zags, for which a prefix sum of both flipped and non-flipped paths over - // MonotonicRegionLinks may be utilized, however updating the prefix sum has a linear complexity, the same complexity as doing the 3-opt - // exchange by copying the pieces. -} - -// #define SLIC3R_DEBUG_ANTS - -template -inline void print_ant(const std::string& fmt, TArgs&&... args) { -#ifdef SLIC3R_DEBUG_ANTS - std::cout << Slic3r::format(fmt, std::forward(args)...) << std::endl; -#endif -} - -// Find a run through monotonic infill blocks using an 'Ant colony" optimization method. -// http://www.scholarpedia.org/article/Ant_colony_optimization -static std::vector chain_monotonic_regions( - std::vector ®ions, const ExPolygonWithOffset &poly_with_offset, const std::vector &segs, std::mt19937_64 &rng) -{ - // Number of left neighbors (regions that this region depends on, this region cannot be printed before the regions left of it are printed) + self. - std::vector left_neighbors_unprocessed(regions.size(), 1); - // Queue of regions, which have their left neighbors already printed. - std::vector queue; - queue.reserve(regions.size()); - for (MonotonicRegion ®ion : regions) - if (region.left_neighbors.empty()) - queue.emplace_back(®ion); - else - left_neighbors_unprocessed[®ion - regions.data()] += int(region.left_neighbors.size()); - // Make copy of structures that need to be initialized at each ant iteration. - auto left_neighbors_unprocessed_initial = left_neighbors_unprocessed; - auto queue_initial = queue; - - std::vector path, best_path; - path.reserve(regions.size()); - best_path.reserve(regions.size()); - float best_path_length = std::numeric_limits::max(); - - struct NextCandidate { - MonotonicRegion *region; - AntPath *link; - AntPath *link_flipped; - float probability; - bool dir; - }; - std::vector next_candidates; - - auto validate_unprocessed = -#ifdef NDEBUG - []() { return true; }; -#else - [®ions, &left_neighbors_unprocessed, &path, &queue]() { - std::vector regions_processed(regions.size(), false); - std::vector regions_in_queue(regions.size(), false); - for (const MonotonicRegion *region : queue) { - // This region is not processed yet, his predecessors are processed. - assert(left_neighbors_unprocessed[region - regions.data()] == 1); - regions_in_queue[region - regions.data()] = true; - } - for (const MonotonicRegionLink &link : path) { - assert(left_neighbors_unprocessed[link.region - regions.data()] == 0); - regions_processed[link.region - regions.data()] = true; - } - for (size_t i = 0; i < regions_processed.size(); ++ i) { - assert(! regions_processed[i] || ! regions_in_queue[i]); - const MonotonicRegion ®ion = regions[i]; - if (regions_processed[i] || regions_in_queue[i]) { - assert(left_neighbors_unprocessed[i] == (regions_in_queue[i] ? 1 : 0)); - // All left neighbors should be processed already. - for (const MonotonicRegion *left : region.left_neighbors) { - assert(regions_processed[left - regions.data()]); - assert(left_neighbors_unprocessed[left - regions.data()] == 0); - } - } else { - // Some left neihgbor should not be processed yet. - assert(left_neighbors_unprocessed[i] > 1); - size_t num_predecessors_unprocessed = 0; - bool has_left_last_on_path = false; - for (const MonotonicRegion* left : region.left_neighbors) { - size_t iprev = left - regions.data(); - if (regions_processed[iprev]) { - assert(left_neighbors_unprocessed[iprev] == 0); - if (left == path.back().region) { - // This region should actually be on queue, but to optimize the queue management - // this item will be processed in the next round by traversing path.back().region->right_neighbors before processing the queue. - assert(! has_left_last_on_path); - has_left_last_on_path = true; - ++ num_predecessors_unprocessed; - } - } else { - if (regions_in_queue[iprev]) - assert(left_neighbors_unprocessed[iprev] == 1); - else - assert(left_neighbors_unprocessed[iprev] > 1); - ++ num_predecessors_unprocessed; - } - } - assert(num_predecessors_unprocessed > 0); - assert(left_neighbors_unprocessed[i] == num_predecessors_unprocessed + 1); - } - } - return true; - }; -#endif /* NDEBUG */ - - // How many times to repeat the ant simulation (number of ant generations). - constexpr int num_rounds = 25; - // After how many rounds without an improvement to exit? - constexpr int num_rounds_no_change_exit = 8; - // With how many ants each of the run will be performed? - const int num_ants = std::min(regions.size(), 10); - // Base (initial) pheromone level. This value will be adjusted based on the length of the first greedy path found. - float pheromone_initial_deposit = 0.5f; - // Evaporation rate of pheromones. - constexpr float pheromone_evaporation = 0.1f; - // Evaporation rate to diversify paths taken by individual ants. - constexpr float pheromone_diversification = 0.1f; - // Probability at which to take the next best path. Otherwise take the the path based on the cost distribution. - constexpr float probability_take_best = 0.9f; - // Exponents of the cost function. - constexpr float pheromone_alpha = 1.f; // pheromone exponent - constexpr float pheromone_beta = 2.f; // attractiveness weighted towards edge length - - AntPathMatrix path_matrix(regions, poly_with_offset, segs, pheromone_initial_deposit); - - // Find an initial path in a greedy way, set the initial pheromone value to 10% of the cost of the greedy path. - { - // Construct the first path in a greedy way to calculate an initial value of the pheromone value. - queue = queue_initial; - left_neighbors_unprocessed = left_neighbors_unprocessed_initial; - assert(validate_unprocessed()); - // Pick the last of the queue. - MonotonicRegionLink path_end { queue.back(), false }; - queue.pop_back(); - -- left_neighbors_unprocessed[path_end.region - regions.data()]; - - float total_length = path_end.region->length(false); - while (! queue.empty() || ! path_end.region->right_neighbors.empty()) { - // Chain. - MonotonicRegion ®ion = *path_end.region; - bool dir = path_end.flipped; - NextCandidate next_candidate; - next_candidate.probability = 0; - for (MonotonicRegion *next : region.right_neighbors) { - int &unprocessed = left_neighbors_unprocessed[next - regions.data()]; - assert(unprocessed > 1); - if (left_neighbors_unprocessed[next - regions.data()] == 2) { - // Dependencies of the successive blocks are satisfied. - AntPath &path1 = path_matrix(region, dir, *next, false); - AntPath &path2 = path_matrix(region, dir, *next, true); - if (path1.visibility > next_candidate.probability) - next_candidate = { next, &path1, &path1, path1.visibility, false }; - if (path2.visibility > next_candidate.probability) - next_candidate = { next, &path2, &path2, path2.visibility, true }; - } - } - bool from_queue = next_candidate.probability == 0; - if (from_queue) { - for (MonotonicRegion *next : queue) { - AntPath &path1 = path_matrix(region, dir, *next, false); - AntPath &path2 = path_matrix(region, dir, *next, true); - if (path1.visibility > next_candidate.probability) - next_candidate = { next, &path1, &path1, path1.visibility, false }; - if (path2.visibility > next_candidate.probability) - next_candidate = { next, &path2, &path2, path2.visibility, true }; - } - } - // Move the other right neighbors with satisified constraints to the queue. - for (MonotonicRegion *next : region.right_neighbors) - if (-- left_neighbors_unprocessed[next - regions.data()] == 1 && next_candidate.region != next) - queue.emplace_back(next); - if (from_queue) { - // Remove the selected path from the queue. - auto it = std::find(queue.begin(), queue.end(), next_candidate.region); - assert(it != queue.end()); - *it = queue.back(); - queue.pop_back(); - } - // Extend the path. - MonotonicRegion *next_region = next_candidate.region; - bool next_dir = next_candidate.dir; - total_length += next_region->length(next_dir) + path_matrix(*path_end.region, path_end.flipped, *next_region, next_dir).length; - path_end = { next_region, next_dir }; - assert(left_neighbors_unprocessed[next_region - regions.data()] == 1); - left_neighbors_unprocessed[next_region - regions.data()] = 0; - } - - // Set an initial pheromone value to 10% of the greedy path's value. - pheromone_initial_deposit = 0.1 / total_length; - path_matrix.update_inital_pheromone(pheromone_initial_deposit); - } - - // Probability (unnormalized) of traversing a link between two monotonic regions. - auto path_probability = [pheromone_alpha, pheromone_beta](AntPath &path) { - return pow(path.pheromone, pheromone_alpha) * pow(path.visibility, pheromone_beta); - }; - -#ifdef SLIC3R_DEBUG_ANTS - static int irun = 0; - ++ irun; -#endif /* SLIC3R_DEBUG_ANTS */ - - int num_rounds_no_change = 0; - for (int round = 0; round < num_rounds && num_rounds_no_change < num_rounds_no_change_exit; ++ round) - { - bool improved = false; - for (int ant = 0; ant < num_ants; ++ ant) - { - // Find a new path following the pheromones deposited by the previous ants. - print_ant("Round %1% ant %2%", round, ant); - path.clear(); - queue = queue_initial; - left_neighbors_unprocessed = left_neighbors_unprocessed_initial; - assert(validate_unprocessed()); - // Pick randomly the first from the queue at random orientation. - //FIXME picking the 1st monotonic region should likely be done based on accumulated pheromone level as well, - // but the inefficiency caused by the random pick of the 1st monotonic region is likely insignificant. - int first_idx = std::uniform_int_distribution<>(0, int(queue.size()) - 1)(rng); - path.emplace_back(MonotonicRegionLink{ queue[first_idx], rng() > rng.max() / 2 }); - *(queue.begin() + first_idx) = std::move(queue.back()); - queue.pop_back(); - -- left_neighbors_unprocessed[path.back().region - regions.data()]; - assert(left_neighbors_unprocessed[path.back().region - regions.data()] == 0); - assert(validate_unprocessed()); - print_ant("\tRegion (%1%:%2%,%3%) (%4%:%5%,%6%)", - path.back().region->left.vline, - path.back().flipped ? path.back().region->left.high : path.back().region->left.low, - path.back().flipped ? path.back().region->left.low : path.back().region->left.high, - path.back().region->right.vline, - path.back().flipped == path.back().region->flips ? path.back().region->right.high : path.back().region->right.low, - path.back().flipped == path.back().region->flips ? path.back().region->right.low : path.back().region->right.high); - - while (! queue.empty() || ! path.back().region->right_neighbors.empty()) { - // Chain. - MonotonicRegion ®ion = *path.back().region; - bool dir = path.back().flipped; - // Sort by distance to pt. - next_candidates.clear(); - next_candidates.reserve(region.right_neighbors.size() * 2); - for (MonotonicRegion *next : region.right_neighbors) { - int &unprocessed = left_neighbors_unprocessed[next - regions.data()]; - assert(unprocessed > 1); - if (-- unprocessed == 1) { - // Dependencies of the successive blocks are satisfied. - AntPath &path1 = path_matrix(region, dir, *next, false); - AntPath &path1_flipped = path_matrix(region, ! dir, *next, true); - AntPath &path2 = path_matrix(region, dir, *next, true); - AntPath &path2_flipped = path_matrix(region, ! dir, *next, false); - next_candidates.emplace_back(NextCandidate{ next, &path1, &path1_flipped, path_probability(path1), false }); - next_candidates.emplace_back(NextCandidate{ next, &path2, &path2_flipped, path_probability(path2), true }); - } - } - size_t num_direct_neighbors = next_candidates.size(); - //FIXME add the queue items to the candidates? These are valid moves as well. - if (num_direct_neighbors == 0) { - // Add the queue candidates. - for (MonotonicRegion *next : queue) { - assert(left_neighbors_unprocessed[next - regions.data()] == 1); - AntPath &path1 = path_matrix(region, dir, *next, false); - AntPath &path1_flipped = path_matrix(region, ! dir, *next, true); - AntPath &path2 = path_matrix(region, dir, *next, true); - AntPath &path2_flipped = path_matrix(region, ! dir, *next, false); - next_candidates.emplace_back(NextCandidate{ next, &path1, &path1_flipped, path_probability(path1), false }); - next_candidates.emplace_back(NextCandidate{ next, &path2, &path2_flipped, path_probability(path2), true }); - } - } - float dice = float(rng()) / float(rng.max()); - std::vector::iterator take_path; - if (dice < probability_take_best) { - // Take the highest probability path. - take_path = std::max_element(next_candidates.begin(), next_candidates.end(), [](auto &l, auto &r){ return l.probability < r.probability; }); - print_ant("\tTaking best path at probability %1% below %2%", dice, probability_take_best); - } else { - // Take the path based on the probability. - // Calculate the total probability. - float total_probability = std::accumulate(next_candidates.begin(), next_candidates.end(), 0.f, [](const float l, const NextCandidate& r) { return l + r.probability; }); - // Take a random path based on the probability. - float probability_threshold = float(rng()) * total_probability / float(rng.max()); - take_path = next_candidates.end(); - -- take_path; - for (auto it = next_candidates.begin(); it < next_candidates.end(); ++ it) - if ((probability_threshold -= it->probability) <= 0.) { - take_path = it; - break; - } - print_ant("\tTaking path at probability threshold %1% of %2%", probability_threshold, total_probability); - } - // Move the other right neighbors with satisified constraints to the queue. - for (std::vector::iterator it_next_candidate = next_candidates.begin(); it_next_candidate != next_candidates.begin() + num_direct_neighbors; ++ it_next_candidate) - if ((queue.empty() || it_next_candidate->region != queue.back()) && it_next_candidate->region != take_path->region) - queue.emplace_back(it_next_candidate->region); - if (size_t(take_path - next_candidates.begin()) >= num_direct_neighbors) { - // Remove the selected path from the queue. - auto it = std::find(queue.begin(), queue.end(), take_path->region); - assert(it != queue.end()); - *it = queue.back(); - queue.pop_back(); - } - // Extend the path. - MonotonicRegion *next_region = take_path->region; - bool next_dir = take_path->dir; - path.back().next = take_path->link; - path.back().next_flipped = take_path->link_flipped; - path.emplace_back(MonotonicRegionLink{ next_region, next_dir }); - assert(left_neighbors_unprocessed[next_region - regions.data()] == 1); - left_neighbors_unprocessed[next_region - regions.data()] = 0; - print_ant("\tRegion (%1%:%2%,%3%) (%4%:%5%,%6%) length to prev %7%", - next_region->left.vline, - next_dir ? next_region->left.high : next_region->left.low, - next_dir ? next_region->left.low : next_region->left.high, - next_region->right.vline, - next_dir == next_region->flips ? next_region->right.high : next_region->right.low, - next_dir == next_region->flips ? next_region->right.low : next_region->right.high, - take_path->link->length); - - print_ant("\tRegion (%1%:%2%,%3%) (%4%:%5%,%6%)", - path.back().region->left.vline, - path.back().flipped ? path.back().region->left.high : path.back().region->left.low, - path.back().flipped ? path.back().region->left.low : path.back().region->left.high, - path.back().region->right.vline, - path.back().flipped == path.back().region->flips ? path.back().region->right.high : path.back().region->right.low, - path.back().flipped == path.back().region->flips ? path.back().region->right.low : path.back().region->right.high); - - // Update pheromones along this link, see Ant Colony System (ACS) update rule. - // http://www.scholarpedia.org/article/Ant_colony_optimization - // The goal here is to lower the pheromone trace for paths taken to diversify the next path picked in the same batch of ants. - take_path->link->pheromone = (1.f - pheromone_diversification) * take_path->link->pheromone + pheromone_diversification * pheromone_initial_deposit; - assert(validate_unprocessed()); - } - - // Perform 3-opt local optimization of the path. - monotonic_3_opt(path, segs); - - // Measure path length. - assert(! path.empty()); - float path_length = std::accumulate(path.begin(), path.end() - 1, - path.back().region->length(path.back().flipped), - [&path_matrix](const float l, const MonotonicRegionLink &r) { - const MonotonicRegionLink &next = *(&r + 1); - return l + r.region->length(r.flipped) + path_matrix(*r.region, r.flipped, *next.region, next.flipped).length; - }); - // Save the shortest path. - print_ant("\tThis length: %1%, shortest length: %2%", path_length, best_path_length); - if (path_length < best_path_length) { - best_path_length = path_length; - std::swap(best_path, path); -#if 0 // #if ! defined(SLIC3R_DEBUG_ANTS) && ! defined(ndebug) - if (round == 0 && ant == 0) - std::cout << std::endl; - std::cout << Slic3r::format("round %1% ant %2% path length %3%", round, ant, path_length) << std::endl; -#endif - if (path_length == 0) - // Perfect path found. - goto end; - improved = true; - } - } - - // Reinforce the path pheromones with the best path. - float total_cost = best_path_length + float(EPSILON); - for (size_t i = 0; i + 1 < path.size(); ++ i) { - MonotonicRegionLink &link = path[i]; - link.next->pheromone = (1.f - pheromone_evaporation) * link.next->pheromone + pheromone_evaporation / total_cost; - } - - if (improved) - num_rounds_no_change = 0; - else - ++ num_rounds_no_change; - } - -end: - return best_path; -} - -// Traverse path, produce polylines. -static void polylines_from_paths(const std::vector &path, const ExPolygonWithOffset &poly_with_offset, const std::vector &segs, Polylines &polylines_out) -{ - Polyline *polyline = nullptr; - auto finish_polyline = [&polyline, &polylines_out]() { - polyline->remove_duplicate_points(); - // Handle duplicate points and zero length segments. - assert(!polyline->has_duplicate_points()); - // Handle nearly zero length edges. - if (polyline->points.size() <= 1 || - (polyline->points.size() == 2 && - std::abs(polyline->points.front()(0) - polyline->points.back()(0)) < SCALED_EPSILON && - std::abs(polyline->points.front()(1) - polyline->points.back()(1)) < SCALED_EPSILON)) - polylines_out.pop_back(); - polyline = nullptr; - }; - - for (const MonotonicRegionLink &path_segment : path) { - MonotonicRegion ®ion = *path_segment.region; - bool dir = path_segment.flipped; - - // From the initial point (i_vline, i_intersection), follow a path. - int i_intersection = region.left_intersection_point(dir); - int i_vline = region.left.vline; - - if (polyline != nullptr && &path_segment != path.data()) { - // Connect previous path segment with the new one. - const MonotonicRegionLink &path_segment_prev = *(&path_segment - 1); - const MonotonicRegion ®ion_prev = *path_segment_prev.region; - bool dir_prev = path_segment_prev.flipped; - int i_vline_prev = region_prev.right.vline; - const SegmentedIntersectionLine &vline_prev = segs[i_vline_prev]; - int i_intersection_prev = region_prev.right_intersection_point(dir_prev); - const SegmentIntersection *ip_prev = &vline_prev.intersections[i_intersection_prev]; - bool extended = false; - if (i_vline_prev + 1 == i_vline) { - if (ip_prev->right_horizontal() == i_intersection && ip_prev->next_on_contour_quality == SegmentIntersection::LinkQuality::Valid) { - // Emit a horizontal connection contour. - emit_perimeter_prev_next_segment(poly_with_offset, segs, i_vline_prev, ip_prev->iContour, i_intersection_prev, i_intersection, *polyline, true); - extended = true; - } - } - if (! extended) { - // Finish the current vertical line, - assert(ip_prev->is_inner()); - ip_prev->is_low() ? -- ip_prev : ++ ip_prev; - assert(ip_prev->is_outer()); - polyline->points.back() = Point(vline_prev.pos, ip_prev->pos()); - finish_polyline(); - } - } - - for (;;) { - const SegmentedIntersectionLine &vline = segs[i_vline]; - const SegmentIntersection *it = &vline.intersections[i_intersection]; - const bool going_up = it->is_low(); - if (polyline == nullptr) { - polylines_out.emplace_back(); - polyline = &polylines_out.back(); - // Extend the infill line up to the outer contour. - polyline->points.emplace_back(vline.pos, (it + (going_up ? - 1 : 1))->pos()); - } else - polyline->points.emplace_back(vline.pos, it->pos()); - - int iright = it->right_horizontal(); - if (going_up) { - // Consume the complete vertical segment up to the inner contour. - for (;;) { - do { - ++ it; - iright = std::max(iright, it->right_horizontal()); - assert(it->is_inner()); - } while (it->type != SegmentIntersection::INNER_HIGH || (it + 1)->type != SegmentIntersection::OUTER_HIGH); - polyline->points.emplace_back(vline.pos, it->pos()); - int inext = it->vertical_up(); - if (inext == -1 || it->vertical_up_quality() != SegmentIntersection::LinkQuality::Valid) - break; - assert(it->iContour == vline.intersections[inext].iContour); - emit_perimeter_segment_on_vertical_line(poly_with_offset, segs, i_vline, it->iContour, it - vline.intersections.data(), inext, *polyline, it->has_left_vertical_up()); - it = vline.intersections.data() + inext; - } - } else { - // Going down. - assert(it->is_high()); - assert(i_intersection > 0); - for (;;) { - do { - -- it; - if (int iright_new = it->right_horizontal(); iright_new != -1) - iright = iright_new; - assert(it->is_inner()); - } while (it->type != SegmentIntersection::INNER_LOW || (it - 1)->type != SegmentIntersection::OUTER_LOW); - polyline->points.emplace_back(vline.pos, it->pos()); - int inext = it->vertical_down(); - if (inext == -1 || it->vertical_down_quality() != SegmentIntersection::LinkQuality::Valid) - break; - assert(it->iContour == vline.intersections[inext].iContour); - emit_perimeter_segment_on_vertical_line(poly_with_offset, segs, i_vline, it->iContour, it - vline.intersections.data(), inext, *polyline, it->has_right_vertical_down()); - it = vline.intersections.data() + inext; - } - } - - if (i_vline == region.right.vline) - break; - - int inext = it->right_horizontal(); - if (inext != -1 && it->next_on_contour_quality == SegmentIntersection::LinkQuality::Valid) { - // Emit a horizontal connection contour. - emit_perimeter_prev_next_segment(poly_with_offset, segs, i_vline, it->iContour, it - vline.intersections.data(), inext, *polyline, true); - i_intersection = inext; - } else { - // Finish the current vertical line, - going_up ? ++ it : -- it; - assert(it->is_outer()); - assert(it->is_high() == going_up); - polyline->points.back() = Point(vline.pos, it->pos()); - finish_polyline(); - if (inext == -1) { - // Find the end of the next overlapping vertical segment. - const SegmentedIntersectionLine &vline_right = segs[i_vline + 1]; - const SegmentIntersection *right = going_up ? - &vertical_run_top(vline_right, vline_right.intersections[iright]) : &vertical_run_bottom(vline_right, vline_right.intersections[iright]); - i_intersection = int(right - vline_right.intersections.data()); - } else - i_intersection = inext; - } - - ++ i_vline; - } - } - - if (polyline != nullptr) { - // Finish the current vertical line, - const MonotonicRegion ®ion = *path.back().region; - const SegmentedIntersectionLine &vline = segs[region.right.vline]; - const SegmentIntersection *ip = &vline.intersections[region.right_intersection_point(path.back().flipped)]; - assert(ip->is_inner()); - ip->is_low() ? -- ip : ++ ip; - assert(ip->is_outer()); - polyline->points.back() = Point(vline.pos, ip->pos()); - finish_polyline(); - } -} - -bool FillRectilinear2::fill_surface_by_lines(const Surface *surface, const FillParams ¶ms, float angleBase, float pattern_shift, Polylines &polylines_out) -{ - // At the end, only the new polylines will be rotated back. - size_t n_polylines_out_initial = polylines_out.size(); - - // Shrink the input polygon a bit first to not push the infill lines out of the perimeters. -// const float INFILL_OVERLAP_OVER_SPACING = 0.3f; - const float INFILL_OVERLAP_OVER_SPACING = 0.45f; - assert(INFILL_OVERLAP_OVER_SPACING > 0 && INFILL_OVERLAP_OVER_SPACING < 0.5f); - - // Rotate polygons so that we can work with vertical lines here - std::pair rotate_vector = this->_infill_direction(surface); - rotate_vector.first += angleBase; - - assert(params.density > 0.0001f && params.density <= 1.f); - coord_t line_spacing = coord_t(scale_(this->spacing) / params.density); - - // On the polygons of poly_with_offset, the infill lines will be connected. - ExPolygonWithOffset poly_with_offset( - surface->expolygon, - - rotate_vector.first, - float(scale_(this->overlap - (0.5 - INFILL_OVERLAP_OVER_SPACING) * this->spacing)), - float(scale_(this->overlap - 0.5 * this->spacing))); - if (poly_with_offset.n_contours_inner == 0) { - // Not a single infill line fits. - //FIXME maybe one shall trigger the gap fill here? - return true; - } - - BoundingBox bounding_box = poly_with_offset.bounding_box_src(); - - // define flow spacing according to requested density - if (params.full_infill() && !params.dont_adjust) { - line_spacing = this->_adjust_solid_spacing(bounding_box.size()(0), line_spacing); - this->spacing = unscale(line_spacing); - } else { - // extend bounding box so that our pattern will be aligned with other layers - // Transform the reference point to the rotated coordinate system. - Point refpt = rotate_vector.second.rotated(- rotate_vector.first); - // _align_to_grid will not work correctly with positive pattern_shift. - coord_t pattern_shift_scaled = coord_t(scale_(pattern_shift)) % line_spacing; - refpt(0) -= (pattern_shift_scaled >= 0) ? pattern_shift_scaled : (line_spacing + pattern_shift_scaled); - bounding_box.merge(_align_to_grid( - bounding_box.min, - Point(line_spacing, line_spacing), - refpt)); - } - - // Intersect a set of euqally spaced vertical lines wiht expolygon. - // n_vlines = ceil(bbox_width / line_spacing) - size_t n_vlines = (bounding_box.max(0) - bounding_box.min(0) + line_spacing - 1) / line_spacing; - coord_t x0 = bounding_box.min(0); - if (params.full_infill()) - x0 += (line_spacing + coord_t(SCALED_EPSILON)) / 2; - -#ifdef SLIC3R_DEBUG - static int iRun = 0; - BoundingBox bbox_svg = poly_with_offset.bounding_box_outer(); - ::Slic3r::SVG svg(debug_out_path("FillRectilinear2-%d.svg", iRun), bbox_svg); // , scale_(1.)); - poly_with_offset.export_to_svg(svg); - { - ::Slic3r::SVG svg(debug_out_path("FillRectilinear2-initial-%d.svg", iRun), bbox_svg); // , scale_(1.)); - poly_with_offset.export_to_svg(svg); - } - iRun ++; -#endif /* SLIC3R_DEBUG */ - - std::vector segs = slice_region_by_vertical_lines(poly_with_offset, n_vlines, x0, line_spacing); - // Connect by horizontal / vertical links, classify the links based on link_max_length as too long. - connect_segment_intersections_by_contours(poly_with_offset, segs, params, link_max_length); - -#ifdef SLIC3R_DEBUG - // Paint the segments and finalize the SVG file. - for (size_t i_seg = 0; i_seg < segs.size(); ++ i_seg) { - SegmentedIntersectionLine &sil = segs[i_seg]; - for (size_t i = 0; i < sil.intersections.size();) { - size_t j = i + 1; - for (; j < sil.intersections.size() && sil.intersections[j].is_inner(); ++ j) ; - if (i + 1 == j) { - svg.draw(Line(Point(sil.pos, sil.intersections[i].pos()), Point(sil.pos, sil.intersections[j].pos())), "blue"); - } else { - svg.draw(Line(Point(sil.pos, sil.intersections[i].pos()), Point(sil.pos, sil.intersections[i+1].pos())), "green"); - svg.draw(Line(Point(sil.pos, sil.intersections[i+1].pos()), Point(sil.pos, sil.intersections[j-1].pos())), (j - i + 1 > 4) ? "yellow" : "magenta"); - svg.draw(Line(Point(sil.pos, sil.intersections[j-1].pos()), Point(sil.pos, sil.intersections[j].pos())), "green"); - } - i = j + 1; - } - } - svg.Close(); -#endif /* SLIC3R_DEBUG */ - - //FIXME this is a hack to get the monotonic infill rolling. We likely want a smarter switch, likely based on user decison. - bool monotonic_infill = params.monotonic; // || params.density > 0.99; - if (monotonic_infill) { - std::vector regions = generate_montonous_regions(segs); - connect_monotonic_regions(regions, poly_with_offset, segs); - if (! regions.empty()) { - std::mt19937_64 rng; - std::vector path = chain_monotonic_regions(regions, poly_with_offset, segs, rng); - polylines_from_paths(path, poly_with_offset, segs, polylines_out); - } - } else - traverse_graph_generate_polylines(poly_with_offset, params, this->link_max_length, segs, polylines_out); - -#ifdef SLIC3R_DEBUG - { - { - ::Slic3r::SVG svg(debug_out_path("FillRectilinear2-final-%03d.svg", iRun), bbox_svg); // , scale_(1.)); - poly_with_offset.export_to_svg(svg); - for (size_t i = n_polylines_out_initial; i < polylines_out.size(); ++ i) - svg.draw(polylines_out[i].lines(), "black"); - } - // Paint a picture per polyline. This makes it easier to discover the order of the polylines and their overlap. - for (size_t i_polyline = n_polylines_out_initial; i_polyline < polylines_out.size(); ++ i_polyline) { - ::Slic3r::SVG svg(debug_out_path("FillRectilinear2-final-%03d-%03d.svg", iRun, i_polyline), bbox_svg); // , scale_(1.)); - svg.draw(polylines_out[i_polyline].lines(), "black"); - } - } -#endif /* SLIC3R_DEBUG */ - - // paths must be rotated back - for (Polylines::iterator it = polylines_out.begin() + n_polylines_out_initial; it != polylines_out.end(); ++ it) { - // No need to translate, the absolute position is irrelevant. - // it->translate(- rotate_vector.second(0), - rotate_vector.second(1)); - assert(! it->has_duplicate_points()); - it->rotate(rotate_vector.first); - //FIXME rather simplify the paths to avoid very short edges? - //assert(! it->has_duplicate_points()); - it->remove_duplicate_points(); - } - -#ifdef SLIC3R_DEBUG - // Verify, that there are no duplicate points in the sequence. - for (Polyline &polyline : polylines_out) - assert(! polyline.has_duplicate_points()); -#endif /* SLIC3R_DEBUG */ - - return true; -} - -Polylines FillRectilinear2::fill_surface(const Surface *surface, const FillParams ¶ms) -{ - Polylines polylines_out; - if (! fill_surface_by_lines(surface, params, 0.f, 0.f, polylines_out)) { - printf("FillRectilinear2::fill_surface() failed to fill a region.\n"); - } - return polylines_out; -} - -Polylines FillMonotonic::fill_surface(const Surface *surface, const FillParams ¶ms) -{ - FillParams params2 = params; - params2.monotonic = true; - Polylines polylines_out; - if (! fill_surface_by_lines(surface, params2, 0.f, 0.f, polylines_out)) { - printf("FillMonotonic::fill_surface() failed to fill a region.\n"); - } - return polylines_out; -} - -Polylines FillGrid2::fill_surface(const Surface *surface, const FillParams ¶ms) -{ - // Each linear fill covers half of the target coverage. - FillParams params2 = params; - params2.density *= 0.5f; - Polylines polylines_out; - if (! fill_surface_by_lines(surface, params2, 0.f, 0.f, polylines_out) || - ! fill_surface_by_lines(surface, params2, float(M_PI / 2.), 0.f, polylines_out)) { - printf("FillGrid2::fill_surface() failed to fill a region.\n"); - } - return polylines_out; -} - -Polylines FillTriangles::fill_surface(const Surface *surface, const FillParams ¶ms) -{ - // Each linear fill covers 1/3 of the target coverage. - FillParams params2 = params; - params2.density *= 0.333333333f; - FillParams params3 = params2; - params3.dont_connect = true; - Polylines polylines_out; - if (! fill_surface_by_lines(surface, params2, 0.f, 0., polylines_out) || - ! fill_surface_by_lines(surface, params2, float(M_PI / 3.), 0., polylines_out) || - ! fill_surface_by_lines(surface, params3, float(2. * M_PI / 3.), 0., polylines_out)) { - printf("FillTriangles::fill_surface() failed to fill a region.\n"); - } - return polylines_out; -} - -Polylines FillStars::fill_surface(const Surface *surface, const FillParams ¶ms) -{ - // Each linear fill covers 1/3 of the target coverage. - FillParams params2 = params; - params2.density *= 0.333333333f; - FillParams params3 = params2; - params3.dont_connect = true; - Polylines polylines_out; - if (! fill_surface_by_lines(surface, params2, 0.f, 0., polylines_out) || - ! fill_surface_by_lines(surface, params2, float(M_PI / 3.), 0., polylines_out) || - ! fill_surface_by_lines(surface, params3, float(2. * M_PI / 3.), 0.5 * this->spacing / params2.density, polylines_out)) { - printf("FillStars::fill_surface() failed to fill a region.\n"); - } - return polylines_out; -} - -Polylines FillCubic::fill_surface(const Surface *surface, const FillParams ¶ms) -{ - // Each linear fill covers 1/3 of the target coverage. - FillParams params2 = params; - params2.density *= 0.333333333f; - FillParams params3 = params2; - params3.dont_connect = true; - Polylines polylines_out; - coordf_t dx = sqrt(0.5) * z; - if (! fill_surface_by_lines(surface, params2, 0.f, float(dx), polylines_out) || - ! fill_surface_by_lines(surface, params2, float(M_PI / 3.), - float(dx), polylines_out) || - // Rotated by PI*2/3 + PI to achieve reverse sloping wall. - ! fill_surface_by_lines(surface, params3, float(M_PI * 2. / 3.), float(dx), polylines_out)) { - printf("FillCubic::fill_surface() failed to fill a region.\n"); - } - return polylines_out; -} - -} // namespace Slic3r diff --git a/src/libslic3r/Fill/FillRectilinear2.hpp b/src/libslic3r/Fill/FillRectilinear2.hpp deleted file mode 100644 index fd28f155d4..0000000000 --- a/src/libslic3r/Fill/FillRectilinear2.hpp +++ /dev/null @@ -1,83 +0,0 @@ -#ifndef slic3r_FillRectilinear2_hpp_ -#define slic3r_FillRectilinear2_hpp_ - -#include "../libslic3r.h" - -#include "FillBase.hpp" - -namespace Slic3r { - -class Surface; - -class FillRectilinear2 : public Fill -{ -public: - virtual Fill* clone() const { return new FillRectilinear2(*this); }; - virtual ~FillRectilinear2() = default; - virtual Polylines fill_surface(const Surface *surface, const FillParams ¶ms); - -protected: - bool fill_surface_by_lines(const Surface *surface, const FillParams ¶ms, float angleBase, float pattern_shift, Polylines &polylines_out); -}; - -class FillMonotonic : public FillRectilinear2 -{ -public: - virtual Fill* clone() const { return new FillMonotonic(*this); }; - virtual ~FillMonotonic() = default; - virtual Polylines fill_surface(const Surface *surface, const FillParams ¶ms); - virtual bool no_sort() const { return true; } -}; - -class FillGrid2 : public FillRectilinear2 -{ -public: - virtual Fill* clone() const { return new FillGrid2(*this); }; - virtual ~FillGrid2() = default; - virtual Polylines fill_surface(const Surface *surface, const FillParams ¶ms); - -protected: - // The grid fill will keep the angle constant between the layers, see the implementation of Slic3r::Fill. - virtual float _layer_angle(size_t idx) const { return 0.f; } -}; - -class FillTriangles : public FillRectilinear2 -{ -public: - virtual Fill* clone() const { return new FillTriangles(*this); }; - virtual ~FillTriangles() = default; - virtual Polylines fill_surface(const Surface *surface, const FillParams ¶ms); - -protected: - // The grid fill will keep the angle constant between the layers, see the implementation of Slic3r::Fill. - virtual float _layer_angle(size_t idx) const { return 0.f; } -}; - -class FillStars : public FillRectilinear2 -{ -public: - virtual Fill* clone() const { return new FillStars(*this); }; - virtual ~FillStars() = default; - virtual Polylines fill_surface(const Surface *surface, const FillParams ¶ms); - -protected: - // The grid fill will keep the angle constant between the layers, see the implementation of Slic3r::Fill. - virtual float _layer_angle(size_t idx) const { return 0.f; } -}; - -class FillCubic : public FillRectilinear2 -{ -public: - virtual Fill* clone() const { return new FillCubic(*this); }; - virtual ~FillCubic() = default; - virtual Polylines fill_surface(const Surface *surface, const FillParams ¶ms); - -protected: - // The grid fill will keep the angle constant between the layers, see the implementation of Slic3r::Fill. - virtual float _layer_angle(size_t idx) const { return 0.f; } -}; - - -}; // namespace Slic3r - -#endif // slic3r_FillRectilinear2_hpp_ diff --git a/src/libslic3r/Fill/FillRectilinear3.cpp b/src/libslic3r/Fill/FillRectilinear3.cpp deleted file mode 100644 index 078feeae92..0000000000 --- a/src/libslic3r/Fill/FillRectilinear3.cpp +++ /dev/null @@ -1,1642 +0,0 @@ -#include -#include - -#include -#include -#include - -#include - -#include "../ClipperUtils.hpp" -#include "../ExPolygon.hpp" -#include "../Geometry.hpp" -#include "../Surface.hpp" -#include "../Int128.hpp" - -#include "FillRectilinear3.hpp" - -// #define SLIC3R_DEBUG - -// Make assert active if SLIC3R_DEBUG -#ifdef SLIC3R_DEBUG - #undef NDEBUG - #define DEBUG - #define _DEBUG - #include "../SVG.hpp" -#endif - -#include - -namespace Slic3r { - -namespace FillRectilinear3_Internal { - -// A container maintaining the source expolygon with its inner offsetted polygon. -// The source expolygon is offsetted twice: -// 1) A tiny offset is used to get a contour, to which the open hatching lines will be extended. -// 2) A larger offset is used to get a contor, along which the individual hatching lines will be connected. -struct ExPolygonWithOffset -{ -public: - ExPolygonWithOffset( - const ExPolygon &expolygon, - float aoffset1, - float aoffset2) - { - // Copy and rotate the source polygons. - polygons_src = expolygon; - - double mitterLimit = 3.; - // for the infill pattern, don't cut the corners. - // default miterLimt = 3 - //double mitterLimit = 10.; - assert(aoffset1 < 0); - assert(aoffset2 < 0); - assert(aoffset2 < aoffset1); -// bool sticks_removed = remove_sticks(polygons_src); -// if (sticks_removed) printf("Sticks removed!\n"); - polygons_outer = offset(polygons_src, aoffset1, - ClipperLib::jtMiter, - mitterLimit); - polygons_inner = offset(polygons_outer, aoffset2 - aoffset1, - ClipperLib::jtMiter, - mitterLimit); - // Filter out contours with zero area or small area, contours with 2 points only. - const double min_area_threshold = 0.01 * aoffset2 * aoffset2; - remove_small(polygons_outer, min_area_threshold); - remove_small(polygons_inner, min_area_threshold); - remove_sticks(polygons_outer); - remove_sticks(polygons_inner); - n_contours_outer = polygons_outer.size(); - n_contours_inner = polygons_inner.size(); - n_contours = n_contours_outer + n_contours_inner; - polygons_ccw.assign(n_contours, false); - for (size_t i = 0; i < n_contours; ++ i) { - contour(i).remove_duplicate_points(); - assert(! contour(i).has_duplicate_points()); - polygons_ccw[i] = Slic3r::Geometry::is_ccw(contour(i)); - } - } - - // Any contour with offset1 - bool is_contour_outer(size_t idx) const { return idx < n_contours_outer; } - // Any contour with offset2 - bool is_contour_inner(size_t idx) const { return idx >= n_contours_outer; } - - const Polygon& contour(size_t idx) const - { return is_contour_outer(idx) ? polygons_outer[idx] : polygons_inner[idx - n_contours_outer]; } - - Polygon& contour(size_t idx) - { return is_contour_outer(idx) ? polygons_outer[idx] : polygons_inner[idx - n_contours_outer]; } - - bool is_contour_ccw(size_t idx) const { return polygons_ccw[idx] != 0; } - - BoundingBox bounding_box_src() const - { return get_extents(polygons_src); } - BoundingBox bounding_box_outer() const - { return get_extents(polygons_outer); } - BoundingBox bounding_box_inner() const - { return get_extents(polygons_inner); } - -#ifdef SLIC3R_DEBUG - void export_to_svg(Slic3r::SVG &svg) const { - svg.draw_outline(polygons_src, "black"); - svg.draw_outline(polygons_outer, "green"); - svg.draw_outline(polygons_inner, "brown"); - } -#endif /* SLIC3R_DEBUG */ - - ExPolygon polygons_src; - Polygons polygons_outer; - Polygons polygons_inner; - - size_t n_contours_outer; - size_t n_contours_inner; - size_t n_contours; - -protected: - // For each polygon of polygons_inner, remember its orientation. - std::vector polygons_ccw; -}; - -class SegmentedIntersectionLine; - -// Intersection point of a vertical line with a polygon segment. -class SegmentIntersection -{ -public: - SegmentIntersection() : - line(nullptr), - expoly_with_offset(nullptr), - iContour(0), - iSegment(0), - type(UNKNOWN), - consumed_vertical_up(false), - consumed_perimeter_right(false) - {} - - // Parent object owning this intersection point. - const SegmentedIntersectionLine *line; - // Container with the source expolygon and its shrank copies, to be intersected by the line. - const ExPolygonWithOffset *expoly_with_offset; - - // Index of a contour in ExPolygonWithOffset, with which this vertical line intersects. - size_t iContour; - // Index of a segment in iContour, with which this vertical line intersects. - size_t iSegment; - - // Kind of intersection. With the original contour, or with the inner offestted contour? - // A vertical segment will be at least intersected by OUTER_LOW, OUTER_HIGH, - // but it could be intersected with OUTER_LOW, INNER_LOW, INNER_HIGH, OUTER_HIGH, - // and there may be more than one pair of INNER_LOW, INNER_HIGH between OUTER_LOW, OUTER_HIGH. - enum SegmentIntersectionType { - OUTER_LOW = 0, - OUTER_HIGH = 1, - INNER_LOW = 2, - INNER_HIGH = 3, - UNKNOWN = -1 - }; - SegmentIntersectionType type; - - // For the INNER_LOW type, this point may be connected to another INNER_LOW point following a perimeter contour. - // For the INNER_HIGH type, this point may be connected to another INNER_HIGH point following a perimeter contour. - // If INNER_LOW is connected to INNER_HIGH or vice versa, - // one has to make sure the vertical infill line does not overlap with the connecting perimeter line. - bool is_inner() const { return type == INNER_LOW || type == INNER_HIGH; } - bool is_outer() const { return type == OUTER_LOW || type == OUTER_HIGH; } - bool is_low () const { return type == INNER_LOW || type == OUTER_LOW; } - bool is_high () const { return type == INNER_HIGH || type == OUTER_HIGH; } - - // Calculate a position of this intersection point. The position does not need to be necessary exact. - Point pos() const; - - // Returns 0, if this and other segments intersect at the hatching line. - // Returns -1, if this intersection is below the other intersection on the hatching line. - // Returns +1 otherwise. - int ordering_along_line(const SegmentIntersection &other) const; - - // Compare two y intersection points given by rational numbers. - bool operator< (const SegmentIntersection &other) const; - // { return this->ordering_along_line(other) == -1; } - bool operator==(const SegmentIntersection &other) const { return this->ordering_along_line(other) == 0; } - - //FIXME legacy code, suporting the old graph traversal algorithm. Please remove. - // Was this segment along the y axis consumed? - // Up means up along the vertical segment. - bool consumed_vertical_up; - // Was a segment of the inner perimeter contour consumed? - // Right means right from the vertical segment. - bool consumed_perimeter_right; -}; - -// A single hathing line intersecting the ExPolygonWithOffset. -class SegmentedIntersectionLine -{ -public: - // Index of this vertical intersection line. - size_t idx; - // Position of the line along the X axis of the oriented bounding box. -// coord_t x; - // Position of this vertical intersection line, rotated to the world coordinate system. - Point pos; - // Direction of this vertical intersection line, rotated to the world coordinate system. The direction is not normalized to maintain a sufficient accuracy! - Vector dir; - // List of intersection points with polygons, sorted increasingly by the y axis. - // The SegmentIntersection keeps a pointer to this object to access the start and direction of this line. - std::vector intersections; -}; - -// Return an intersection point of the parent SegmentedIntersectionLine with the segment of a parent ExPolygonWithOffset. -// The intersected segment of the ExPolygonWithOffset is addressed with (iContour, iSegment). -// When calling this method, the SegmentedIntersectionLine must not be parallel with the segment. -Point SegmentIntersection::pos() const -{ - // Get the two rays to be intersected. - const Polygon &poly = this->expoly_with_offset->contour(this->iContour); - // 30 bits + 1 signum bit. - const Point &seg_start = poly.points[(this->iSegment == 0) ? poly.points.size() - 1 : this->iSegment - 1]; - const Point &seg_end = poly.points[this->iSegment]; - // Point, vector of the segment. - const Vec2d p1(seg_start.cast()); - const Vec2d v1((seg_end - seg_start).cast()); - // Point, vector of this hatching line. - const Vec2d p2(line->pos.cast()); - const Vec2d v2(line->dir.cast()); - // Intersect the two rays. - double denom = v1(0) * v2(1) - v2(0) * v1(1); - Point out; - if (denom == 0.) { - // Lines are collinear. As the pos() method is not supposed to be called on collinear vectors, - // the source vectors are not quite collinear. Return the center of the contour segment. - out = seg_start + seg_end; - out(0) >>= 1; - out(1) >>= 1; - } else { - // Find the intersection point. - double t = (v2(0) * (p1(1) - p2(1)) - v2(1) * (p1(0) - p2(0))) / denom; - if (t < 0.) - out = seg_start; - else if (t > 1.) - out = seg_end; - else { - out(0) = coord_t(floor(p1(0) + t * v1(0) + 0.5)); - out(1) = coord_t(floor(p1(1) + t * v1(1) + 0.5)); - } - } - return out; -} - -static inline int signum(int64_t v) { return (v > 0) - (v < 0); } - -// Returns 0, if this and other segments intersect at the hatching line. -// Returns -1, if this intersection is below the other intersection on the hatching line. -// Returns +1 otherwise. -int SegmentIntersection::ordering_along_line(const SegmentIntersection &other) const -{ - assert(this->line == other.line); - assert(this->expoly_with_offset == other.expoly_with_offset); - - if (this->iContour == other.iContour && this->iSegment == other.iSegment) - return true; - - // Segment of this - const Polygon &poly_a = this->expoly_with_offset->contour(this->iContour); - // 30 bits + 1 signum bit. - const Point &seg_start_a = poly_a.points[(this->iSegment == 0) ? poly_a.points.size() - 1 : this->iSegment - 1]; - const Point &seg_end_a = poly_a.points[this->iSegment]; - - // Segment of other - const Polygon &poly_b = this->expoly_with_offset->contour(other.iContour); - // 30 bits + 1 signum bit. - const Point &seg_start_b = poly_b.points[(other.iSegment == 0) ? poly_b.points.size() - 1 : other.iSegment - 1]; - const Point &seg_end_b = poly_b.points[other.iSegment]; - - if (this->iContour == other.iContour) { - if ((this->iSegment + 1) % poly_a.points.size() == other.iSegment) { - // other.iSegment succeeds this->iSegment - assert(seg_end_a == seg_start_b); - // Avoid calling the 128bit x 128bit multiplication below if this->line intersects the common point. - if (cross2(Vec2i64(this->line->dir.cast()), (seg_end_b - this->line->pos).cast()) == 0) - return 0; - } else if ((other.iSegment + 1) % poly_a.points.size() == this->iSegment) { - // this->iSegment succeeds other.iSegment - assert(seg_start_a == seg_end_b); - // Avoid calling the 128bit x 128bit multiplication below if this->line intersects the common point. - if (cross2(Vec2i64(this->line->dir.cast()), (seg_start_a - this->line->pos).cast()) == 0) - return 0; - } else { - // General case. - } - } - - // First test, whether both points of one segment are completely in one half-plane of the other line. - const Vec2i64 vec_b = (seg_end_b - seg_start_b).cast(); - int side_start = signum(cross2(vec_b, (seg_start_a - seg_start_b).cast())); - int side_end = signum(cross2(vec_b, (seg_end_a - seg_start_b).cast())); - int side = side_start * side_end; - if (side > 0) - // This segment is completely inside one half-plane of the other line, therefore the ordering is trivial. - return signum(cross2(vec_b, this->line->dir.cast())) * side_start; - - const Vec2i64 vec_a = (seg_end_a - seg_start_a).cast(); - int side_start2 = signum(cross2(vec_a, (seg_start_b - seg_start_a).cast())); - int side_end2 = signum(cross2(vec_a, (seg_end_b - seg_start_a).cast())); - int side2 = side_start2 * side_end2; - //if (side == 0 && side2 == 0) - // The segments share one of their end points. - if (side2 > 0) - // This segment is completely inside one half-plane of the other line, therefore the ordering is trivial. - return signum(cross2(this->line->dir.cast(), vec_a)) * side_start2; - - // The two segments intersect and they are not sucessive segments of the same contour. - // Ordering of the points depends on the position of the segment intersection (left / right from this->line), - // therefore a simple test over the input segment end points is not sufficient. - - // Find the parameters of intersection of the two segmetns with this->line. - int64_t denom1 = cross2(this->line->dir.cast(), vec_a); - int64_t denom2 = cross2(this->line->dir.cast(), vec_b); - Vec2i64 vx_a = (seg_start_a - this->line->pos).cast(); - Vec2i64 vx_b = (seg_start_b - this->line->pos).cast(); - int64_t t1_times_denom1 = vx_a(0) * vec_a(1) - vx_a(1) * vec_a(0); - int64_t t2_times_denom2 = vx_b(0) * vec_b(1) - vx_b(1) * vec_b(0); - assert(denom1 != 0); - assert(denom2 != 0); - return Int128::compare_rationals_filtered(t1_times_denom1, denom1, t2_times_denom2, denom2); -} - -// Compare two y intersection points given by rational numbers. -bool SegmentIntersection::operator<(const SegmentIntersection &other) const -{ -#ifdef _DEBUG - Point p1 = this->pos(); - Point p2 = other.pos(); - int64_t d = this->line->dir.cast().dot((p2 - p1).cast()); -#endif /* _DEBUG */ - int ordering = this->ordering_along_line(other); -#ifdef _DEBUG - if (ordering == -1) - assert(d >= - int64_t(SCALED_EPSILON)); - else if (ordering == 1) - assert(d <= int64_t(SCALED_EPSILON)); -#endif /* _DEBUG */ - return ordering == -1; -} - -// When doing a rectilinear / grid / triangle / stars / cubic infill, -// the following class holds the hatching lines of each of the hatching directions. -class InfillHatchingSingleDirection -{ -public: - // Hatching angle, CCW from the X axis. - double angle; - // Starting point of the 1st hatching line. - Point start_point; - // Direction vector, its size is not normalized to maintain a sufficient accuracy! - Vector direction; - // Spacing of the hatching lines, perpendicular to the direction vector. - coord_t line_spacing; - // Infill segments oriented at angle. - std::vector segs; -}; - -// For the rectilinear, grid, triangles, stars and cubic pattern fill one InfillHatchingSingleDirection structure -// for each infill direction. The segments stored in InfillHatchingSingleDirection will then form a graph of candidate -// paths to be extruded. -static bool prepare_infill_hatching_segments( - // Input geometry to be hatch, containing two concentric contours for each input contour. - const ExPolygonWithOffset &poly_with_offset, - // fill density, dont_adjust - const FillParams ¶ms, - // angle, pattern_shift, spacing - FillRectilinear3::FillDirParams &fill_dir_params, - // Reference point of the pattern, to which the infill lines will be alligned, and the base angle. - const std::pair &rotate_vector, - // Resulting straight segments of the infill graph. - InfillHatchingSingleDirection &out) -{ - out.angle = rotate_vector.first + fill_dir_params.angle; - out.direction = Point(coord_t(scale_(1000)), coord_t(0)); - // Hatch along the Y axis of the rotated coordinate system. - out.direction.rotate(out.angle + 0.5 * M_PI); - out.segs.clear(); - - assert(params.density > 0.0001f && params.density <= 1.f); - coord_t line_spacing = coord_t(scale_(fill_dir_params.spacing) / params.density); - - // Bounding box around the source contour, aligned with out.angle. - BoundingBox bounding_box = get_extents_rotated(poly_with_offset.polygons_src.contour, - out.angle); - - // Define the flow spacing according to requested density. - if (params.full_infill() && ! params.dont_adjust) { - // Full infill, adjust the line spacing to fit an integer number of lines. - out.line_spacing = Fill::_adjust_solid_spacing(bounding_box.size()(0), line_spacing); - // Report back the adjusted line spacing. - fill_dir_params.spacing = unscale(line_spacing); - } else { - // Extend bounding box so that our pattern will be aligned with the other layers. - // Transform the reference point to the rotated coordinate system. - Point refpt = rotate_vector.second.rotated(- out.angle); - // _align_to_grid will not work correctly with positive pattern_shift. - coord_t pattern_shift_scaled = coord_t(scale_(fill_dir_params.pattern_shift)) % line_spacing; - refpt(0) -= (pattern_shift_scaled >= 0) ? pattern_shift_scaled : (line_spacing + pattern_shift_scaled); - bounding_box.merge(Fill::_align_to_grid( - bounding_box.min, - Point(line_spacing, line_spacing), - refpt)); - } - - // Intersect a set of euqally spaced vertical lines wiht expolygon. - // n_vlines = ceil(bbox_width / line_spacing) - size_t n_vlines = (bounding_box.max(0) - bounding_box.min(0) + line_spacing - 1) / line_spacing; - coord_t x0 = bounding_box.min(0); - if (params.full_infill()) - x0 += coord_t((line_spacing + SCALED_EPSILON) / 2); - - out.line_spacing = line_spacing; - out.start_point = Point(x0, bounding_box.min(1)); - out.start_point.rotate(out.angle); - -#ifdef SLIC3R_DEBUG - static int iRun = 0; - BoundingBox bbox_svg = poly_with_offset.bounding_box_outer(); - ::Slic3r::SVG svg(debug_out_path("FillRectilinear2-%d.svg", iRun), bbox_svg); // , scale_(1.)); - poly_with_offset.export_to_svg(svg); - { - ::Slic3r::SVG svg(debug_out_path("FillRectilinear2-initial-%d.svg", iRun), bbox_svg); // , scale_(1.)); - poly_with_offset.export_to_svg(svg); - } - iRun ++; -#endif /* SLIC3R_DEBUG */ - - // For each contour - // Allocate storage for the segments. - out.segs.assign(n_vlines, SegmentedIntersectionLine()); - double cos_a = cos(out.angle); - double sin_a = sin(out.angle); - for (size_t i = 0; i < n_vlines; ++ i) { - auto &seg = out.segs[i]; - seg.idx = i; - // seg(0) = x0 + coord_t(i) * line_spacing; - coord_t x = x0 + coord_t(i) * line_spacing; - seg.pos(0) = coord_t(floor(cos_a * x - sin_a * bounding_box.min(1) + 0.5)); - seg.pos(1) = coord_t(floor(cos_a * bounding_box.min(1) + sin_a * x + 0.5)); - seg.dir = out.direction; - } - - for (size_t iContour = 0; iContour < poly_with_offset.n_contours; ++ iContour) { - const Points &contour = poly_with_offset.contour(iContour).points; - if (contour.size() < 2) - continue; - // For each segment - for (size_t iSegment = 0; iSegment < contour.size(); ++ iSegment) { - size_t iPrev = ((iSegment == 0) ? contour.size() : iSegment) - 1; - const Point *pl = &contour[iPrev]; - const Point *pr = &contour[iSegment]; - // Orient the segment to the direction vector. - const Point v = *pr - *pl; - int orientation = Int128::sign_determinant_2x2_filtered(v(0), v(1), out.direction(0), out.direction(1)); - if (orientation == 0) - // Ignore strictly vertical segments. - continue; - if (orientation < 0) - // Always orient the input segment consistently towards the hatching direction. - std::swap(pl, pr); - // Which of the equally spaced vertical lines is intersected by this segment? - coord_t l = (coord_t)floor(cos_a * (*pl)(0) + sin_a * (*pl)(1) - SCALED_EPSILON); - coord_t r = (coord_t)ceil (cos_a * (*pr)(0) + sin_a * (*pr)(1) + SCALED_EPSILON); - assert(l < r - SCALED_EPSILON); - // il, ir are the left / right indices of vertical lines intersecting a segment - int il = std::max(0, (l - x0 + line_spacing) / line_spacing); - int ir = std::min(int(out.segs.size()) - 1, (r - x0) / line_spacing); - // The previous tests were done with floating point arithmetics over an epsilon-extended interval. - // Now do the same tests with exact arithmetics over the exact interval. - while (il <= ir && int128::orient(out.segs[il].pos, out.segs[il].pos + out.direction, *pl) < 0) - ++ il; - while (il <= ir && int128::orient(out.segs[ir].pos, out.segs[ir].pos + out.direction, *pr) > 0) - -- ir; - // Here it is ensured, that - // 1) out.seg is not parallel to (pl, pr) - // 2) all lines from il to ir intersect . - assert(il >= 0 && ir < int(out.segs.size())); - for (int i = il; i <= ir; ++ i) { - // assert(out.segs[i](0) == i * line_spacing + x0); - // assert(l <= out.segs[i](0)); - // assert(r >= out.segs[i](0)); - SegmentIntersection is; - is.line = &out.segs[i]; - is.expoly_with_offset = &poly_with_offset; - is.iContour = iContour; - is.iSegment = iSegment; - // Test whether the calculated intersection point falls into the bounding box of the input segment. - // +-1 to take rounding into account. - assert(int128::orient(out.segs[i].pos, out.segs[i].pos + out.direction, *pl) >= 0); - assert(int128::orient(out.segs[i].pos, out.segs[i].pos + out.direction, *pr) <= 0); - assert(is.pos()(0) + 1 >= std::min((*pl)(0), (*pr)(0))); - assert(is.pos()(1) + 1 >= std::min((*pl)(1), (*pr)(1))); - assert(is.pos()(0) <= std::max((*pl)(0), (*pr)(0)) + 1); - assert(is.pos()(1) <= std::max((*pl)(1), (*pr)(1)) + 1); - out.segs[i].intersections.push_back(is); - } - } - } - - // Sort the intersections along their segments, specify the intersection types. - for (size_t i_seg = 0; i_seg < out.segs.size(); ++ i_seg) { - SegmentedIntersectionLine &sil = out.segs[i_seg]; - // Sort the intersection points using exact rational arithmetic. - std::sort(sil.intersections.begin(), sil.intersections.end()); -#ifdef _DEBUG - // Verify that the intersections are sorted along the haching direction. - for (size_t i = 1; i < sil.intersections.size(); ++ i) { - Point p1 = sil.intersections[i - 1].pos(); - Point p2 = sil.intersections[i].pos(); - int64_t d = sil.dir.cast().dot((p2 - p1).cast()); - assert(d >= - int64_t(SCALED_EPSILON)); - } -#endif /* _DEBUG */ - // Assign the intersection types, remove duplicate or overlapping intersection points. - // When a loop vertex touches a vertical line, intersection point is generated for both segments. - // If such two segments are oriented equally, then one of them is removed. - // Otherwise the vertex is tangential to the vertical line and both segments are removed. - // The same rule applies, if the loop is pinched into a single point and this point touches the vertical line: - // The loop has a zero vertical size at the vertical line, therefore the intersection point is removed. - size_t j = 0; - for (size_t i = 0; i < sil.intersections.size(); ++ i) { - // What is the orientation of the segment at the intersection point? - size_t iContour = sil.intersections[i].iContour; - const Points &contour = poly_with_offset.contour(iContour).points; - size_t iSegment = sil.intersections[i].iSegment; - size_t iPrev = ((iSegment == 0) ? contour.size() : iSegment) - 1; - int dir = int128::cross(contour[iSegment] - contour[iPrev], sil.dir); - bool low = dir > 0; - sil.intersections[i].type = poly_with_offset.is_contour_outer(iContour) ? - (low ? SegmentIntersection::OUTER_LOW : SegmentIntersection::OUTER_HIGH) : - (low ? SegmentIntersection::INNER_LOW : SegmentIntersection::INNER_HIGH); - if (j > 0 && sil.intersections[i].iContour == sil.intersections[j-1].iContour) { - // Two successive intersection points on a vertical line with the same contour. This may be a special case. - if (sil.intersections[i] == sil.intersections[j-1]) { - // Two successive segments meet exactly at the vertical line. - #ifdef SLIC3R_DEBUG - // Verify that the segments of sil.intersections[i] and sil.intersections[j-1] are adjoint. - size_t iSegment2 = sil.intersections[j-1].iSegment; - size_t iPrev2 = ((iSegment2 == 0) ? contour.size() : iSegment2) - 1; - assert(iSegment == iPrev2 || iSegment2 == iPrev); - #endif /* SLIC3R_DEBUG */ - if (sil.intersections[i].type == sil.intersections[j-1].type) { - // Two successive segments of the same direction (both to the right or both to the left) - // meet exactly at the vertical line. - // Remove the second intersection point. - } else { - // This is a loop returning to the same point. - // It may as well be a vertex of a loop touching this vertical line. - // Remove both the lines. - -- j; - } - } else if (sil.intersections[i].type == sil.intersections[j-1].type) { - // Two non successive segments of the same direction (both to the right or both to the left) - // meet exactly at the vertical line. That means there is a Z shaped path, where the center segment - // of the Z shaped path is aligned with this vertical line. - // Remove one of the intersection points while maximizing the vertical segment length. - if (low) { - // Remove the second intersection point, keep the first intersection point. - } else { - // Remove the first intersection point, keep the second intersection point. - sil.intersections[j-1] = sil.intersections[i]; - } - } else { - // Vertical line intersects a contour segment at a general position (not at one of its end points). - // or the contour just touches this vertical line with a vertical segment or a sequence of vertical segments. - // Keep both intersection points. - if (j < i) - sil.intersections[j] = sil.intersections[i]; - ++ j; - } - } else { - // Vertical line intersects a contour segment at a general position (not at one of its end points). - if (j < i) - sil.intersections[j] = sil.intersections[i]; - ++ j; - } - } - // Shrink the list of intersections, if any of the intersection was removed during the classification. - if (j < sil.intersections.size()) - sil.intersections.erase(sil.intersections.begin() + j, sil.intersections.end()); - } - - // Verify the segments. If something is wrong, give up. -#define ASSERT_OR_RETURN(CONDITION) do { assert(CONDITION); if (! (CONDITION)) return false; } while (0) -#ifdef _MSC_VER - #pragma warning(push) - #pragma warning(disable: 4127) -#endif - for (size_t i_seg = 0; i_seg < out.segs.size(); ++ i_seg) { - SegmentedIntersectionLine &sil = out.segs[i_seg]; - // The intersection points have to be even. - ASSERT_OR_RETURN((sil.intersections.size() & 1) == 0); - for (size_t i = 0; i < sil.intersections.size();) { - // An intersection segment crossing the bigger contour may cross the inner offsetted contour even number of times. - ASSERT_OR_RETURN(sil.intersections[i].type == SegmentIntersection::OUTER_LOW); - size_t j = i + 1; - ASSERT_OR_RETURN(j < sil.intersections.size()); - ASSERT_OR_RETURN(sil.intersections[j].type == SegmentIntersection::INNER_LOW || sil.intersections[j].type == SegmentIntersection::OUTER_HIGH); - for (; j < sil.intersections.size() && sil.intersections[j].is_inner(); ++ j) ; - ASSERT_OR_RETURN(j < sil.intersections.size()); - ASSERT_OR_RETURN((j & 1) == 1); - ASSERT_OR_RETURN(sil.intersections[j].type == SegmentIntersection::OUTER_HIGH); - ASSERT_OR_RETURN(i + 1 == j || sil.intersections[j - 1].type == SegmentIntersection::INNER_HIGH); - i = j + 1; - } - } -#undef ASSERT_OR_RETURN -#ifdef _MSC_VER - #pragma warning(push) -#endif /* _MSC_VER */ - -#ifdef SLIC3R_DEBUG - // Paint the segments and finalize the SVG file. - for (size_t i_seg = 0; i_seg < out.segs.size(); ++ i_seg) { - SegmentedIntersectionLine &sil = out.segs[i_seg]; - for (size_t i = 0; i < sil.intersections.size();) { - size_t j = i + 1; - for (; j < sil.intersections.size() && sil.intersections[j].is_inner(); ++ j) ; - if (i + 1 == j) { - svg.draw(Line(sil.intersections[i ].pos(), sil.intersections[j ].pos()), "blue"); - } else { - svg.draw(Line(sil.intersections[i ].pos(), sil.intersections[i+1].pos()), "green"); - svg.draw(Line(sil.intersections[i+1].pos(), sil.intersections[j-1].pos()), (j - i + 1 > 4) ? "yellow" : "magenta"); - svg.draw(Line(sil.intersections[j-1].pos(), sil.intersections[j ].pos()), "green"); - } - i = j + 1; - } - } - svg.Close(); -#endif /* SLIC3R_DEBUG */ - - - return true; -} - - - - - - - - -/****************************************************************** Legacy code, to be replaced by a graph algorithm ******************************************************************/ - - -// Having a segment of a closed polygon, calculate its Euclidian length. -// The segment indices seg1 and seg2 signify an end point of an edge in the forward direction of the loop, -// therefore the point p1 lies on poly.points[seg1-1], poly.points[seg1] etc. -static inline coordf_t segment_length(const Polygon &poly, size_t seg1, const Point &p1, size_t seg2, const Point &p2) -{ -#ifdef SLIC3R_DEBUG - // Verify that p1 lies on seg1. This is difficult to verify precisely, - // but at least verify, that p1 lies in the bounding box of seg1. - for (size_t i = 0; i < 2; ++ i) { - size_t seg = (i == 0) ? seg1 : seg2; - Point px = (i == 0) ? p1 : p2; - Point pa = poly.points[((seg == 0) ? poly.points.size() : seg) - 1]; - Point pb = poly.points[seg]; - if (pa(0) > pb(0)) - std::swap(pa(0), pb(0)); - if (pa(1) > pb(1)) - std::swap(pa(1), pb(1)); - assert(px(0) >= pa(0) && px(0) <= pb(0)); - assert(px(1) >= pa(1) && px(1) <= pb(1)); - } -#endif /* SLIC3R_DEBUG */ - const Point *pPrev = &p1; - const Point *pThis = NULL; - coordf_t len = 0; - if (seg1 <= seg2) { - for (size_t i = seg1; i < seg2; ++ i, pPrev = pThis) - len += (*pPrev - *(pThis = &poly.points[i])).cast().norm(); - } else { - for (size_t i = seg1; i < poly.points.size(); ++ i, pPrev = pThis) - len += (*pPrev - *(pThis = &poly.points[i])).cast().norm(); - for (size_t i = 0; i < seg2; ++ i, pPrev = pThis) - len += (*pPrev - *(pThis = &poly.points[i])).cast().norm(); - } - len += (*pPrev - p2).cast().norm(); - return len; -} - -// Append a segment of a closed polygon to a polyline. -// The segment indices seg1 and seg2 signify an end point of an edge in the forward direction of the loop. -// Only insert intermediate points between seg1 and seg2. -static inline void polygon_segment_append(Points &out, const Polygon &polygon, size_t seg1, size_t seg2) -{ - if (seg1 == seg2) { - // Nothing to append from this segment. - } else if (seg1 < seg2) { - // Do not append a point pointed to by seg2. - out.insert(out.end(), polygon.points.begin() + seg1, polygon.points.begin() + seg2); - } else { - out.reserve(out.size() + seg2 + polygon.points.size() - seg1); - out.insert(out.end(), polygon.points.begin() + seg1, polygon.points.end()); - // Do not append a point pointed to by seg2. - out.insert(out.end(), polygon.points.begin(), polygon.points.begin() + seg2); - } -} - -// Append a segment of a closed polygon to a polyline. -// The segment indices seg1 and seg2 signify an end point of an edge in the forward direction of the loop, -// but this time the segment is traversed backward. -// Only insert intermediate points between seg1 and seg2. -static inline void polygon_segment_append_reversed(Points &out, const Polygon &polygon, size_t seg1, size_t seg2) -{ - if (seg1 >= seg2) { - out.reserve(seg1 - seg2); - for (size_t i = seg1; i > seg2; -- i) - out.push_back(polygon.points[i - 1]); - } else { - // it could be, that seg1 == seg2. In that case, append the complete loop. - out.reserve(out.size() + seg2 + polygon.points.size() - seg1); - for (size_t i = seg1; i > 0; -- i) - out.push_back(polygon.points[i - 1]); - for (size_t i = polygon.points.size(); i > seg2; -- i) - out.push_back(polygon.points[i - 1]); - } -} - -static inline int distance_of_segmens(const Polygon &poly, size_t seg1, size_t seg2, bool forward) -{ - int d = int(seg2) - int(seg1); - if (! forward) - d = - d; - if (d < 0) - d += int(poly.points.size()); - return d; -} - -// For a vertical line, an inner contour and an intersection point, -// find an intersection point on the previous resp. next vertical line. -// The intersection point is connected with the prev resp. next intersection point with iInnerContour. -// Return -1 if there is no such point on the previous resp. next vertical line. -static inline int intersection_on_prev_next_vertical_line( - const ExPolygonWithOffset &poly_with_offset, - const std::vector &segs, - size_t iVerticalLine, - size_t iInnerContour, - size_t iIntersection, - bool dir_is_next) -{ - size_t iVerticalLineOther = iVerticalLine; - if (dir_is_next) { - if (++ iVerticalLineOther == segs.size()) - // No successive vertical line. - return -1; - } else if (iVerticalLineOther -- == 0) { - // No preceding vertical line. - return -1; - } - - const SegmentedIntersectionLine &il = segs[iVerticalLine]; - const SegmentIntersection &itsct = il.intersections[iIntersection]; - const SegmentedIntersectionLine &il2 = segs[iVerticalLineOther]; - const Polygon &poly = poly_with_offset.contour(iInnerContour); -// const bool ccw = poly_with_offset.is_contour_ccw(iInnerContour); - const bool forward = itsct.is_low() == dir_is_next; - // Resulting index of an intersection point on il2. - int out = -1; - // Find an intersection point on iVerticalLineOther, intersecting iInnerContour - // at the same orientation as iIntersection, and being closest to iIntersection - // in the number of contour segments, when following the direction of the contour. - int dmin = std::numeric_limits::max(); - for (size_t i = 0; i < il2.intersections.size(); ++ i) { - const SegmentIntersection &itsct2 = il2.intersections[i]; - if (itsct.iContour == itsct2.iContour && itsct.type == itsct2.type) { - /* - if (itsct.is_low()) { - assert(itsct.type == SegmentIntersection::INNER_LOW); - assert(iIntersection > 0); - assert(il.intersections[iIntersection-1].type == SegmentIntersection::OUTER_LOW); - assert(i > 0); - if (il2.intersections[i-1].is_inner()) - // Take only the lowest inner intersection point. - continue; - assert(il2.intersections[i-1].type == SegmentIntersection::OUTER_LOW); - } else { - assert(itsct.type == SegmentIntersection::INNER_HIGH); - assert(iIntersection+1 < il.intersections.size()); - assert(il.intersections[iIntersection+1].type == SegmentIntersection::OUTER_HIGH); - assert(i+1 < il2.intersections.size()); - if (il2.intersections[i+1].is_inner()) - // Take only the highest inner intersection point. - continue; - assert(il2.intersections[i+1].type == SegmentIntersection::OUTER_HIGH); - } - */ - // The intersection points lie on the same contour and have the same orientation. - // Find the intersection point with a shortest path in the direction of the contour. - int d = distance_of_segmens(poly, itsct.iSegment, itsct2.iSegment, forward); - if (d < dmin) { - out = i; - dmin = d; - } - } - } - //FIXME this routine is not asymptotic optimal, it will be slow if there are many intersection points along the line. - return out; -} - -static inline int intersection_on_prev_vertical_line( - const ExPolygonWithOffset &poly_with_offset, - const std::vector &segs, - size_t iVerticalLine, - size_t iInnerContour, - size_t iIntersection) -{ - return intersection_on_prev_next_vertical_line(poly_with_offset, segs, iVerticalLine, iInnerContour, iIntersection, false); -} - -static inline int intersection_on_next_vertical_line( - const ExPolygonWithOffset &poly_with_offset, - const std::vector &segs, - size_t iVerticalLine, - size_t iInnerContour, - size_t iIntersection) -{ - return intersection_on_prev_next_vertical_line(poly_with_offset, segs, iVerticalLine, iInnerContour, iIntersection, true); -} - -enum IntersectionTypeOtherVLine { - // There is no connection point on the other vertical line. - INTERSECTION_TYPE_OTHER_VLINE_UNDEFINED = -1, - // Connection point on the other vertical segment was found - // and it could be followed. - INTERSECTION_TYPE_OTHER_VLINE_OK = 0, - // The connection segment connects to a middle of a vertical segment. - // Cannot follow. - INTERSECTION_TYPE_OTHER_VLINE_INNER, - // Cannot extend the contor to this intersection point as either the connection segment - // or the succeeding vertical segment were already consumed. - INTERSECTION_TYPE_OTHER_VLINE_CONSUMED, - // Not the first intersection along the contor. This intersection point - // has been preceded by an intersection point along the vertical line. - INTERSECTION_TYPE_OTHER_VLINE_NOT_FIRST, -}; - -// Find an intersection on a previous line, but return -1, if the connecting segment of a perimeter was already extruded. -static inline IntersectionTypeOtherVLine intersection_type_on_prev_next_vertical_line( - const std::vector &segs, - size_t iVerticalLine, - size_t iIntersection, - size_t iIntersectionOther, - bool dir_is_next) -{ - // This routine will propose a connecting line even if the connecting perimeter segment intersects - // iVertical line multiple times before reaching iIntersectionOther. - if (iIntersectionOther == size_t(-1)) - return INTERSECTION_TYPE_OTHER_VLINE_UNDEFINED; - assert(dir_is_next ? (iVerticalLine + 1 < segs.size()) : (iVerticalLine > 0)); - const SegmentedIntersectionLine &il_this = segs[iVerticalLine]; - const SegmentIntersection &itsct_this = il_this.intersections[iIntersection]; - const SegmentedIntersectionLine &il_other = segs[dir_is_next ? (iVerticalLine+1) : (iVerticalLine-1)]; - const SegmentIntersection &itsct_other = il_other.intersections[iIntersectionOther]; - assert(itsct_other.is_inner()); - assert(iIntersectionOther > 0); - assert(iIntersectionOther + 1 < il_other.intersections.size()); - // Is iIntersectionOther at the boundary of a vertical segment? - const SegmentIntersection &itsct_other2 = il_other.intersections[itsct_other.is_low() ? iIntersectionOther - 1 : iIntersectionOther + 1]; - if (itsct_other2.is_inner()) - // Cannot follow a perimeter segment into the middle of another vertical segment. - // Only perimeter segments connecting to the end of a vertical segment are followed. - return INTERSECTION_TYPE_OTHER_VLINE_INNER; - assert(itsct_other.is_low() == itsct_other2.is_low()); - if (dir_is_next ? itsct_this.consumed_perimeter_right : itsct_other.consumed_perimeter_right) - // This perimeter segment was already consumed. - return INTERSECTION_TYPE_OTHER_VLINE_CONSUMED; - if (itsct_other.is_low() ? itsct_other.consumed_vertical_up : il_other.intersections[iIntersectionOther-1].consumed_vertical_up) - // This vertical segment was already consumed. - return INTERSECTION_TYPE_OTHER_VLINE_CONSUMED; - return INTERSECTION_TYPE_OTHER_VLINE_OK; -} - -static inline IntersectionTypeOtherVLine intersection_type_on_prev_vertical_line( - const std::vector &segs, - size_t iVerticalLine, - size_t iIntersection, - size_t iIntersectionPrev) -{ - return intersection_type_on_prev_next_vertical_line(segs, iVerticalLine, iIntersection, iIntersectionPrev, false); -} - -static inline IntersectionTypeOtherVLine intersection_type_on_next_vertical_line( - const std::vector &segs, - size_t iVerticalLine, - size_t iIntersection, - size_t iIntersectionNext) -{ - return intersection_type_on_prev_next_vertical_line(segs, iVerticalLine, iIntersection, iIntersectionNext, true); -} - -// Measure an Euclidian length of a perimeter segment when going from iIntersection to iIntersection2. -static inline coordf_t measure_perimeter_prev_next_segment_length( - const ExPolygonWithOffset &poly_with_offset, - const std::vector &segs, - size_t iVerticalLine, - size_t iInnerContour, - size_t iIntersection, - size_t iIntersection2, - bool dir_is_next) -{ - size_t iVerticalLineOther = iVerticalLine; - if (dir_is_next) { - if (++ iVerticalLineOther == segs.size()) - // No successive vertical line. - return coordf_t(-1); - } else if (iVerticalLineOther -- == 0) { - // No preceding vertical line. - return coordf_t(-1); - } - - const SegmentedIntersectionLine &il = segs[iVerticalLine]; - const SegmentIntersection &itsct = il.intersections[iIntersection]; - const SegmentedIntersectionLine &il2 = segs[iVerticalLineOther]; - const SegmentIntersection &itsct2 = il2.intersections[iIntersection2]; - const Polygon &poly = poly_with_offset.contour(iInnerContour); -// const bool ccw = poly_with_offset.is_contour_ccw(iInnerContour); - assert(itsct.type == itsct2.type); - assert(itsct.iContour == itsct2.iContour); - assert(itsct.is_inner()); - const bool forward = itsct.is_low() == dir_is_next; - - Point p1 = itsct.pos(); - Point p2 = itsct2.pos(); - return forward ? - segment_length(poly, itsct .iSegment, p1, itsct2.iSegment, p2) : - segment_length(poly, itsct2.iSegment, p2, itsct .iSegment, p1); -} - -static inline coordf_t measure_perimeter_prev_segment_length( - const ExPolygonWithOffset &poly_with_offset, - const std::vector &segs, - size_t iVerticalLine, - size_t iInnerContour, - size_t iIntersection, - size_t iIntersection2) -{ - return measure_perimeter_prev_next_segment_length(poly_with_offset, segs, iVerticalLine, iInnerContour, iIntersection, iIntersection2, false); -} - -static inline coordf_t measure_perimeter_next_segment_length( - const ExPolygonWithOffset &poly_with_offset, - const std::vector &segs, - size_t iVerticalLine, - size_t iInnerContour, - size_t iIntersection, - size_t iIntersection2) -{ - return measure_perimeter_prev_next_segment_length(poly_with_offset, segs, iVerticalLine, iInnerContour, iIntersection, iIntersection2, true); -} - -// Append the points of a perimeter segment when going from iIntersection to iIntersection2. -// The first point (the point of iIntersection) will not be inserted, -// the last point will be inserted. -static inline void emit_perimeter_prev_next_segment( - const ExPolygonWithOffset &poly_with_offset, - const std::vector &segs, - size_t iVerticalLine, - size_t iInnerContour, - size_t iIntersection, - size_t iIntersection2, - Polyline &out, - bool dir_is_next) -{ - size_t iVerticalLineOther = iVerticalLine; - if (dir_is_next) { - ++ iVerticalLineOther; - assert(iVerticalLineOther < segs.size()); - } else { - assert(iVerticalLineOther > 0); - -- iVerticalLineOther; - } - - const SegmentedIntersectionLine &il = segs[iVerticalLine]; - const SegmentIntersection &itsct = il.intersections[iIntersection]; - const SegmentedIntersectionLine &il2 = segs[iVerticalLineOther]; - const SegmentIntersection &itsct2 = il2.intersections[iIntersection2]; - const Polygon &poly = poly_with_offset.contour(iInnerContour); -// const bool ccw = poly_with_offset.is_contour_ccw(iInnerContour); - assert(itsct.type == itsct2.type); - assert(itsct.iContour == itsct2.iContour); - assert(itsct.is_inner()); - const bool forward = itsct.is_low() == dir_is_next; - // Do not append the first point. - // out.points.push_back(Point(il.pos, itsct.pos)); - if (forward) - polygon_segment_append(out.points, poly, itsct.iSegment, itsct2.iSegment); - else - polygon_segment_append_reversed(out.points, poly, itsct.iSegment, itsct2.iSegment); - // Append the last point. - out.points.push_back(itsct2.pos()); -} - -static inline coordf_t measure_perimeter_segment_on_vertical_line_length( - const ExPolygonWithOffset &poly_with_offset, - const std::vector &segs, - size_t iVerticalLine, - size_t iInnerContour, - size_t iIntersection, - size_t iIntersection2, - bool forward) -{ - const SegmentedIntersectionLine &il = segs[iVerticalLine]; - const SegmentIntersection &itsct = il.intersections[iIntersection]; - const SegmentIntersection &itsct2 = il.intersections[iIntersection2]; - const Polygon &poly = poly_with_offset.contour(iInnerContour); - assert(itsct.is_inner()); - assert(itsct2.is_inner()); - assert(itsct.type != itsct2.type); - assert(itsct.iContour == iInnerContour); - assert(itsct.iContour == itsct2.iContour); - return forward ? - segment_length(poly, itsct .iSegment, itsct.pos(), itsct2.iSegment, itsct2.pos()) : - segment_length(poly, itsct2.iSegment, itsct2.pos(), itsct .iSegment, itsct.pos()); -} - -// Append the points of a perimeter segment when going from iIntersection to iIntersection2. -// The first point (the point of iIntersection) will not be inserted, -// the last point will be inserted. -static inline void emit_perimeter_segment_on_vertical_line( - const ExPolygonWithOffset &poly_with_offset, - const std::vector &segs, - size_t iVerticalLine, - size_t iInnerContour, - size_t iIntersection, - size_t iIntersection2, - Polyline &out, - bool forward) -{ - const SegmentedIntersectionLine &il = segs[iVerticalLine]; - const SegmentIntersection &itsct = il.intersections[iIntersection]; - const SegmentIntersection &itsct2 = il.intersections[iIntersection2]; - const Polygon &poly = poly_with_offset.contour(iInnerContour); - assert(itsct.is_inner()); - assert(itsct2.is_inner()); - assert(itsct.type != itsct2.type); - assert(itsct.iContour == iInnerContour); - assert(itsct.iContour == itsct2.iContour); - // Do not append the first point. - // out.points.push_back(Point(il.pos, itsct.pos)); - if (forward) - polygon_segment_append(out.points, poly, itsct.iSegment, itsct2.iSegment); - else - polygon_segment_append_reversed(out.points, poly, itsct.iSegment, itsct2.iSegment); - // Append the last point. - out.points.push_back(itsct2.pos()); -} - -//TBD: For precise infill, measure the area of a slab spanned by an infill line. -/* -static inline float measure_outer_contour_slab( - const ExPolygonWithOffset &poly_with_offset, - const std::vector &segs, - size_t i_vline, - size_t iIntersection) -{ - const SegmentedIntersectionLine &il = segs[i_vline]; - const SegmentIntersection &itsct = il.intersections[i_vline]; - const SegmentIntersection &itsct2 = il.intersections[iIntersection2]; - const Polygon &poly = poly_with_offset.contour((itsct.iContour); - assert(itsct.is_outer()); - assert(itsct2.is_outer()); - assert(itsct.type != itsct2.type); - assert(itsct.iContour == itsct2.iContour); - if (! itsct.is_outer() || ! itsct2.is_outer() || itsct.type == itsct2.type || itsct.iContour != itsct2.iContour) - // Error, return zero area. - return 0.f; - - // Find possible connection points on the previous / next vertical line. - int iPrev = intersection_on_prev_vertical_line(poly_with_offset, segs, i_vline, itsct.iContour, i_intersection); - int iNext = intersection_on_next_vertical_line(poly_with_offset, segs, i_vline, itsct.iContour, i_intersection); - // Find possible connection points on the same vertical line. - int iAbove = iBelow = -1; - // Does the perimeter intersect the current vertical line above intrsctn? - for (size_t i = i_intersection + 1; i + 1 < seg.intersections.size(); ++ i) - if (seg.intersections[i].iContour == itsct.iContour) - { iAbove = i; break; } - // Does the perimeter intersect the current vertical line below intrsctn? - for (int i = int(i_intersection) - 1; i > 0; -- i) - if (seg.intersections[i].iContour == itsct.iContour) - { iBelow = i; break; } - - if (iSegAbove != -1 && seg.intersections[iAbove].type == SegmentIntersection::OUTER_HIGH) { - // Invalidate iPrev resp. iNext, if the perimeter crosses the current vertical line earlier than iPrev resp. iNext. - // The perimeter contour orientation. - const Polygon &poly = poly_with_offset.contour(itsct.iContour); - { - int d_horiz = (iPrev == -1) ? std::numeric_limits::max() : - distance_of_segmens(poly, segs[i_vline-1].intersections[iPrev].iSegment, itsct.iSegment, true); - int d_down = (iBelow == -1) ? std::numeric_limits::max() : - distance_of_segmens(poly, iSegBelow, itsct.iSegment, true); - int d_up = (iAbove == -1) ? std::numeric_limits::max() : - distance_of_segmens(poly, iSegAbove, itsct.iSegment, true); - if (intrsctn_type_prev == INTERSECTION_TYPE_OTHER_VLINE_OK && d_horiz > std::min(d_down, d_up)) - // The vertical crossing comes eralier than the prev crossing. - // Disable the perimeter going back. - intrsctn_type_prev = INTERSECTION_TYPE_OTHER_VLINE_NOT_FIRST; - if (d_up > std::min(d_horiz, d_down)) - // The horizontal crossing comes earlier than the vertical crossing. - vert_seg_dir_valid_mask &= ~DIR_BACKWARD; - } - { - int d_horiz = (iNext == -1) ? std::numeric_limits::max() : - distance_of_segmens(poly, itsct.iSegment, segs[i_vline+1].intersections[iNext].iSegment, true); - int d_down = (iSegBelow == -1) ? std::numeric_limits::max() : - distance_of_segmens(poly, itsct.iSegment, iSegBelow, true); - int d_up = (iSegAbove == -1) ? std::numeric_limits::max() : - distance_of_segmens(poly, itsct.iSegment, iSegAbove, true); - if (d_up > std::min(d_horiz, d_down)) - // The horizontal crossing comes earlier than the vertical crossing. - vert_seg_dir_valid_mask &= ~DIR_FORWARD; - } - } -} -*/ - -enum DirectionMask -{ - DIR_FORWARD = 1, - DIR_BACKWARD = 2 -}; - -// For the rectilinear, grid, triangles, stars and cubic pattern fill one InfillHatchingSingleDirection structure -// for each infill direction. The segments stored in InfillHatchingSingleDirection will then form a graph of candidate -// paths to be extruded. -static bool fill_hatching_segments_legacy( - // Input geometry to be hatch, containing two concentric contours for each input contour. - const ExPolygonWithOffset &poly_with_offset, - // fill density, dont_adjust - const FillParams ¶ms, - const coord_t link_max_length, - // Resulting straight segments of the infill graph. - InfillHatchingSingleDirection &hatching, - Polylines &polylines_out) -{ - // At the end, only the new polylines will be rotated back. - size_t n_polylines_out_initial = polylines_out.size(); - - std::vector &segs = hatching.segs; - - // For each outer only chords, measure their maximum distance to the bow of the outer contour. - // Mark an outer only chord as consumed, if the distance is low. - for (size_t i_vline = 0; i_vline < segs.size(); ++ i_vline) { - SegmentedIntersectionLine &seg = segs[i_vline]; - for (size_t i_intersection = 0; i_intersection + 1 < seg.intersections.size(); ++ i_intersection) { - if (seg.intersections[i_intersection].type == SegmentIntersection::OUTER_LOW && - seg.intersections[i_intersection+1].type == SegmentIntersection::OUTER_HIGH) { - bool consumed = false; -// if (params.full_infill()) { -// measure_outer_contour_slab(poly_with_offset, segs, i_vline, i_ntersection); -// } else - consumed = true; - seg.intersections[i_intersection].consumed_vertical_up = consumed; - } - } - } - - // Now construct a graph. - // Find the first point. - // Naively one would expect to achieve best results by chaining the paths by the shortest distance, - // but that procedure does not create the longest continuous paths. - // A simple "sweep left to right" procedure achieves better results. - size_t i_vline = 0; - size_t i_intersection = size_t(-1); - // Follow the line, connect the lines into a graph. - // Until no new line could be added to the output path: - Point pointLast; - Polyline *polyline_current = NULL; - if (! polylines_out.empty()) - pointLast = polylines_out.back().points.back(); - for (;;) { - if (i_intersection == size_t(-1)) { - // The path has been interrupted. Find a next starting point, closest to the previous extruder position. - coordf_t dist2min = std::numeric_limits().max(); - for (size_t i_vline2 = 0; i_vline2 < segs.size(); ++ i_vline2) { - const SegmentedIntersectionLine &seg = segs[i_vline2]; - if (! seg.intersections.empty()) { - assert(seg.intersections.size() > 1); - // Even number of intersections with the loops. - assert((seg.intersections.size() & 1) == 0); - assert(seg.intersections.front().type == SegmentIntersection::OUTER_LOW); - for (size_t i = 0; i < seg.intersections.size(); ++ i) { - const SegmentIntersection &intrsctn = seg.intersections[i]; - if (intrsctn.is_outer()) { - assert(intrsctn.is_low() || i > 0); - bool consumed = intrsctn.is_low() ? - intrsctn.consumed_vertical_up : - seg.intersections[i-1].consumed_vertical_up; - if (! consumed) { - coordf_t dist2 = (intrsctn.pos() - pointLast).cast().norm(); - if (dist2 < dist2min) { - dist2min = dist2; - i_vline = i_vline2; - i_intersection = i; - //FIXME We are taking the first left point always. Verify, that the caller chains the paths - // by a shortest distance, while reversing the paths if needed. - //if (polylines_out.empty()) - // Initial state, take the first line, which is the first from the left. - goto found; - } - } - } - } - } - } - if (i_intersection == size_t(-1)) - // We are finished. - break; - found: - // Start a new path. - polylines_out.push_back(Polyline()); - polyline_current = &polylines_out.back(); - // Emit the first point of a path. - pointLast = segs[i_vline].intersections[i_intersection].pos(); - polyline_current->points.push_back(pointLast); - } - - // From the initial point (i_vline, i_intersection), follow a path. - SegmentedIntersectionLine &seg = segs[i_vline]; - SegmentIntersection *intrsctn = &seg.intersections[i_intersection]; - bool going_up = intrsctn->is_low(); - bool try_connect = false; - if (going_up) { - assert(! intrsctn->consumed_vertical_up); - assert(i_intersection + 1 < seg.intersections.size()); - // Step back to the beginning of the vertical segment to mark it as consumed. - if (intrsctn->is_inner()) { - assert(i_intersection > 0); - -- intrsctn; - -- i_intersection; - } - // Consume the complete vertical segment up to the outer contour. - do { - intrsctn->consumed_vertical_up = true; - ++ intrsctn; - ++ i_intersection; - assert(i_intersection < seg.intersections.size()); - } while (intrsctn->type != SegmentIntersection::OUTER_HIGH); - if ((intrsctn - 1)->is_inner()) { - // Step back. - -- intrsctn; - -- i_intersection; - assert(intrsctn->type == SegmentIntersection::INNER_HIGH); - try_connect = true; - } - } else { - // Going down. - assert(intrsctn->is_high()); - assert(i_intersection > 0); - assert(! (intrsctn - 1)->consumed_vertical_up); - // Consume the complete vertical segment up to the outer contour. - if (intrsctn->is_inner()) - intrsctn->consumed_vertical_up = true; - do { - assert(i_intersection > 0); - -- intrsctn; - -- i_intersection; - intrsctn->consumed_vertical_up = true; - } while (intrsctn->type != SegmentIntersection::OUTER_LOW); - if ((intrsctn + 1)->is_inner()) { - // Step back. - ++ intrsctn; - ++ i_intersection; - assert(intrsctn->type == SegmentIntersection::INNER_LOW); - try_connect = true; - } - } - if (try_connect) { - // Decide, whether to finish the segment, or whether to follow the perimeter. - - // 1) Find possible connection points on the previous / next vertical line. - int iPrev = intersection_on_prev_vertical_line(poly_with_offset, segs, i_vline, intrsctn->iContour, i_intersection); - int iNext = intersection_on_next_vertical_line(poly_with_offset, segs, i_vline, intrsctn->iContour, i_intersection); - IntersectionTypeOtherVLine intrsctn_type_prev = intersection_type_on_prev_vertical_line(segs, i_vline, i_intersection, iPrev); - IntersectionTypeOtherVLine intrsctn_type_next = intersection_type_on_next_vertical_line(segs, i_vline, i_intersection, iNext); - - // 2) Find possible connection points on the same vertical line. - int iAbove = -1; - int iBelow = -1; - int iSegAbove = -1; - int iSegBelow = -1; - { -// SegmentIntersection::SegmentIntersectionType type_crossing = (intrsctn->type == SegmentIntersection::INNER_LOW) ? -// SegmentIntersection::INNER_HIGH : SegmentIntersection::INNER_LOW; - // Does the perimeter intersect the current vertical line above intrsctn? - for (size_t i = i_intersection + 1; i + 1 < seg.intersections.size(); ++ i) -// if (seg.intersections[i].iContour == intrsctn->iContour && seg.intersections[i].type == type_crossing) { - if (seg.intersections[i].iContour == intrsctn->iContour) { - iAbove = i; - iSegAbove = seg.intersections[i].iSegment; - break; - } - // Does the perimeter intersect the current vertical line below intrsctn? - for (size_t i = i_intersection - 1; i > 0; -- i) -// if (seg.intersections[i].iContour == intrsctn->iContour && seg.intersections[i].type == type_crossing) { - if (seg.intersections[i].iContour == intrsctn->iContour) { - iBelow = i; - iSegBelow = seg.intersections[i].iSegment; - break; - } - } - - // 3) Sort the intersection points, clear iPrev / iNext / iSegBelow / iSegAbove, - // if it is preceded by any other intersection point along the contour. - unsigned int vert_seg_dir_valid_mask = - (going_up ? - (iSegAbove != -1 && seg.intersections[iAbove].type == SegmentIntersection::INNER_LOW) : - (iSegBelow != -1 && seg.intersections[iBelow].type == SegmentIntersection::INNER_HIGH)) ? - (DIR_FORWARD | DIR_BACKWARD) : - 0; - { - // Invalidate iPrev resp. iNext, if the perimeter crosses the current vertical line earlier than iPrev resp. iNext. - // The perimeter contour orientation. - const bool forward = intrsctn->is_low(); // == poly_with_offset.is_contour_ccw(intrsctn->iContour); - const Polygon &poly = poly_with_offset.contour(intrsctn->iContour); - { - int d_horiz = (iPrev == -1) ? std::numeric_limits::max() : - distance_of_segmens(poly, segs[i_vline-1].intersections[iPrev].iSegment, intrsctn->iSegment, forward); - int d_down = (iSegBelow == -1) ? std::numeric_limits::max() : - distance_of_segmens(poly, iSegBelow, intrsctn->iSegment, forward); - int d_up = (iSegAbove == -1) ? std::numeric_limits::max() : - distance_of_segmens(poly, iSegAbove, intrsctn->iSegment, forward); - if (intrsctn_type_prev == INTERSECTION_TYPE_OTHER_VLINE_OK && d_horiz > std::min(d_down, d_up)) - // The vertical crossing comes eralier than the prev crossing. - // Disable the perimeter going back. - intrsctn_type_prev = INTERSECTION_TYPE_OTHER_VLINE_NOT_FIRST; - if (going_up ? (d_up > std::min(d_horiz, d_down)) : (d_down > std::min(d_horiz, d_up))) - // The horizontal crossing comes earlier than the vertical crossing. - vert_seg_dir_valid_mask &= ~(forward ? DIR_BACKWARD : DIR_FORWARD); - } - { - int d_horiz = (iNext == -1) ? std::numeric_limits::max() : - distance_of_segmens(poly, intrsctn->iSegment, segs[i_vline+1].intersections[iNext].iSegment, forward); - int d_down = (iSegBelow == -1) ? std::numeric_limits::max() : - distance_of_segmens(poly, intrsctn->iSegment, iSegBelow, forward); - int d_up = (iSegAbove == -1) ? std::numeric_limits::max() : - distance_of_segmens(poly, intrsctn->iSegment, iSegAbove, forward); - if (intrsctn_type_next == INTERSECTION_TYPE_OTHER_VLINE_OK && d_horiz > std::min(d_down, d_up)) - // The vertical crossing comes eralier than the prev crossing. - // Disable the perimeter going forward. - intrsctn_type_next = INTERSECTION_TYPE_OTHER_VLINE_NOT_FIRST; - if (going_up ? (d_up > std::min(d_horiz, d_down)) : (d_down > std::min(d_horiz, d_up))) - // The horizontal crossing comes earlier than the vertical crossing. - vert_seg_dir_valid_mask &= ~(forward ? DIR_FORWARD : DIR_BACKWARD); - } - } - - // 4) Try to connect to a previous or next vertical line, making a zig-zag pattern. - if (intrsctn_type_prev == INTERSECTION_TYPE_OTHER_VLINE_OK || intrsctn_type_next == INTERSECTION_TYPE_OTHER_VLINE_OK) { - coordf_t distPrev = (intrsctn_type_prev != INTERSECTION_TYPE_OTHER_VLINE_OK) ? std::numeric_limits::max() : - measure_perimeter_prev_segment_length(poly_with_offset, segs, i_vline, intrsctn->iContour, i_intersection, iPrev); - coordf_t distNext = (intrsctn_type_next != INTERSECTION_TYPE_OTHER_VLINE_OK) ? std::numeric_limits::max() : - measure_perimeter_next_segment_length(poly_with_offset, segs, i_vline, intrsctn->iContour, i_intersection, iNext); - // Take the shorter path. - //FIXME this may not be always the best strategy to take the shortest connection line now. - bool take_next = (intrsctn_type_prev == INTERSECTION_TYPE_OTHER_VLINE_OK && intrsctn_type_next == INTERSECTION_TYPE_OTHER_VLINE_OK) ? - (distNext < distPrev) : - intrsctn_type_next == INTERSECTION_TYPE_OTHER_VLINE_OK; - assert(intrsctn->is_inner()); - bool skip = params.dont_connect || (link_max_length > 0 && (take_next ? distNext : distPrev) > link_max_length); - if (skip) { - // Just skip the connecting contour and start a new path. - goto dont_connect; - polyline_current->points.push_back(intrsctn->pos()); - polylines_out.push_back(Polyline()); - polyline_current = &polylines_out.back(); - const SegmentedIntersectionLine &il2 = segs[take_next ? (i_vline + 1) : (i_vline - 1)]; - polyline_current->points.push_back(il2.intersections[take_next ? iNext : iPrev].pos()); - } else { - polyline_current->points.push_back(intrsctn->pos()); - emit_perimeter_prev_next_segment(poly_with_offset, segs, i_vline, intrsctn->iContour, i_intersection, take_next ? iNext : iPrev, *polyline_current, take_next); - } - // Mark both the left and right connecting segment as consumed, because one cannot go to this intersection point as it has been consumed. - if (iPrev != -1) - segs[i_vline-1].intersections[iPrev].consumed_perimeter_right = true; - if (iNext != -1) - intrsctn->consumed_perimeter_right = true; - //FIXME consume the left / right connecting segments at the other end of this line? Currently it is not critical because a perimeter segment is not followed if the vertical segment at the other side has already been consumed. - // Advance to the neighbor line. - if (take_next) { - ++ i_vline; - i_intersection = iNext; - } else { - -- i_vline; - i_intersection = iPrev; - } - continue; - } - - // 5) Try to connect to a previous or next point on the same vertical line. - if (vert_seg_dir_valid_mask) { - bool valid = true; - // Verify, that there is no intersection with the inner contour up to the end of the contour segment. - // Verify, that the successive segment has not been consumed yet. - if (going_up) { - if (seg.intersections[iAbove].consumed_vertical_up) { - valid = false; - } else { - for (int i = (int)i_intersection + 1; i < iAbove && valid; ++i) - if (seg.intersections[i].is_inner()) - valid = false; - } - } else { - if (seg.intersections[iBelow-1].consumed_vertical_up) { - valid = false; - } else { - for (int i = iBelow + 1; i < (int)i_intersection && valid; ++i) - if (seg.intersections[i].is_inner()) - valid = false; - } - } - if (valid) { - const Polygon &poly = poly_with_offset.contour(intrsctn->iContour); - int iNext = going_up ? iAbove : iBelow; - int iSegNext = going_up ? iSegAbove : iSegBelow; - bool dir_forward = (vert_seg_dir_valid_mask == (DIR_FORWARD | DIR_BACKWARD)) ? - // Take the shorter length between the current and the next intersection point. - (distance_of_segmens(poly, intrsctn->iSegment, iSegNext, true) < - distance_of_segmens(poly, intrsctn->iSegment, iSegNext, false)) : - (vert_seg_dir_valid_mask == DIR_FORWARD); - // Skip this perimeter line? - bool skip = params.dont_connect; - if (! skip && link_max_length > 0) { - coordf_t link_length = measure_perimeter_segment_on_vertical_line_length( - poly_with_offset, segs, i_vline, intrsctn->iContour, i_intersection, iNext, dir_forward); - skip = link_length > link_max_length; - } - polyline_current->points.push_back(intrsctn->pos()); - if (skip) { - // Just skip the connecting contour and start a new path. - polylines_out.push_back(Polyline()); - polyline_current = &polylines_out.back(); - polyline_current->points.push_back(seg.intersections[iNext].pos()); - } else { - // Consume the connecting contour and the next segment. - emit_perimeter_segment_on_vertical_line(poly_with_offset, segs, i_vline, intrsctn->iContour, i_intersection, iNext, *polyline_current, dir_forward); - } - // Mark both the left and right connecting segment as consumed, because one cannot go to this intersection point as it has been consumed. - // If there are any outer intersection points skipped (bypassed) by the contour, - // mark them as processed. - if (going_up) { - for (int i = (int)i_intersection; i < iAbove; ++ i) - seg.intersections[i].consumed_vertical_up = true; - } else { - for (int i = iBelow; i < (int)i_intersection; ++ i) - seg.intersections[i].consumed_vertical_up = true; - } -// seg.intersections[going_up ? i_intersection : i_intersection - 1].consumed_vertical_up = true; - intrsctn->consumed_perimeter_right = true; - i_intersection = iNext; - if (going_up) - ++ intrsctn; - else - -- intrsctn; - intrsctn->consumed_perimeter_right = true; - continue; - } - } - dont_connect: - // No way to continue the current polyline. Take the rest of the line up to the outer contour. - // This will finish the polyline, starting another polyline at a new point. - if (going_up) - ++ intrsctn; - else - -- intrsctn; - } - - // Finish the current vertical line, - // reset the current vertical line to pick a new starting point in the next round. - assert(intrsctn->is_outer()); - assert(intrsctn->is_high() == going_up); - pointLast = intrsctn->pos(); - polyline_current->points.push_back(pointLast); - // Handle duplicate points and zero length segments. - polyline_current->remove_duplicate_points(); - assert(! polyline_current->has_duplicate_points()); - // Handle nearly zero length edges. - if (polyline_current->points.size() <= 1 || - (polyline_current->points.size() == 2 && - std::abs(polyline_current->points.front()(0) - polyline_current->points.back()(0)) < SCALED_EPSILON && - std::abs(polyline_current->points.front()(1) - polyline_current->points.back()(1)) < SCALED_EPSILON)) - polylines_out.pop_back(); - intrsctn = NULL; - i_intersection = -1; - polyline_current = NULL; - } - -#ifdef SLIC3R_DEBUG - { - static int iRun = 0; - BoundingBox bbox_svg = poly_with_offset.bounding_box_outer(); - { - ::Slic3r::SVG svg(debug_out_path("FillRectilinear2-final-%03d.svg", iRun), bbox_svg); // , scale_(1.)); - poly_with_offset.export_to_svg(svg); - for (size_t i = n_polylines_out_initial; i < polylines_out.size(); ++ i) - svg.draw(polylines_out[i].lines(), "black"); - } - // Paint a picture per polyline. This makes it easier to discover the order of the polylines and their overlap. - for (size_t i_polyline = n_polylines_out_initial; i_polyline < polylines_out.size(); ++ i_polyline) { - ::Slic3r::SVG svg(debug_out_path("FillRectilinear2-final-%03d-%03d.svg", iRun, i_polyline), bbox_svg); // , scale_(1.)); - svg.draw(polylines_out[i_polyline].lines(), "black"); - } - } -#endif /* SLIC3R_DEBUG */ - - // paths must be rotated back - for (Polylines::iterator it = polylines_out.begin() + n_polylines_out_initial; it != polylines_out.end(); ++ it) { - // No need to translate, the absolute position is irrelevant. - // it->translate(- rotate_vector.second(0), - rotate_vector.second(1)); - assert(! it->has_duplicate_points()); - //it->rotate(rotate_vector.first); - //FIXME rather simplify the paths to avoid very short edges? - //assert(! it->has_duplicate_points()); - it->remove_duplicate_points(); - } - -#ifdef SLIC3R_DEBUG - // Verify, that there are no duplicate points in the sequence. - for (Polyline &polyline : polylines_out) - assert(! polyline.has_duplicate_points()); -#endif /* SLIC3R_DEBUG */ - - return true; -} - -}; // namespace FillRectilinear3_Internal - -bool FillRectilinear3::fill_surface_by_lines(const Surface *surface, const FillParams ¶ms, std::vector &fill_dir_params, Polylines &polylines_out) -{ - assert(params.density > 0.0001f && params.density <= 1.f); - - const float INFILL_OVERLAP_OVER_SPACING = 0.45f; - assert(INFILL_OVERLAP_OVER_SPACING > 0 && INFILL_OVERLAP_OVER_SPACING < 0.5f); - - // On the polygons of poly_with_offset, the infill lines will be connected. - FillRectilinear3_Internal::ExPolygonWithOffset poly_with_offset( - surface->expolygon, - float(scale_(- (0.5 - INFILL_OVERLAP_OVER_SPACING) * this->spacing)), - float(scale_(- 0.5 * this->spacing))); - if (poly_with_offset.n_contours_inner == 0) { - // Not a single infill line fits. - //FIXME maybe one shall trigger the gap fill here? - return true; - } - - // Rotate polygons so that we can work with vertical lines here - std::pair rotate_vector = this->_infill_direction(surface); - std::vector hatching(fill_dir_params.size(), FillRectilinear3_Internal::InfillHatchingSingleDirection()); - for (size_t i = 0; i < hatching.size(); ++ i) - if (! FillRectilinear3_Internal::prepare_infill_hatching_segments(poly_with_offset, params, fill_dir_params[i], rotate_vector, hatching[i])) - return false; - - for (size_t i = 0; i < hatching.size(); ++ i) - if (! FillRectilinear3_Internal::fill_hatching_segments_legacy( - poly_with_offset, - params, - this->link_max_length, - hatching[i], - polylines_out)) - return false; - - return true; -} - -Polylines FillRectilinear3::fill_surface(const Surface *surface, const FillParams ¶ms) -{ - Polylines polylines_out; - std::vector fill_dir_params; - fill_dir_params.emplace_back(FillDirParams(this->spacing, 0.f)); - if (! fill_surface_by_lines(surface, params, fill_dir_params, polylines_out)) - printf("FillRectilinear3::fill_surface() failed to fill a region.\n"); - if (params.full_infill() && ! params.dont_adjust) - // Return back the adjusted spacing. - this->spacing = fill_dir_params.front().spacing; - return polylines_out; -} - -Polylines FillGrid3::fill_surface(const Surface *surface, const FillParams ¶ms) -{ - // Each linear fill covers half of the target coverage. - FillParams params2 = params; - params2.density *= 0.5f; - Polylines polylines_out; - std::vector fill_dir_params; - fill_dir_params.emplace_back(FillDirParams(this->spacing, 0.f)); - fill_dir_params.emplace_back(FillDirParams(this->spacing, float(M_PI / 2.))); - if (! fill_surface_by_lines(surface, params2, fill_dir_params, polylines_out)) - printf("FillGrid3::fill_surface() failed to fill a region.\n"); - return polylines_out; -} - -Polylines FillTriangles3::fill_surface(const Surface *surface, const FillParams ¶ms) -{ - // Each linear fill covers 1/3 of the target coverage. - FillParams params2 = params; - params2.density *= 0.333333333f; - Polylines polylines_out; - std::vector fill_dir_params; - fill_dir_params.emplace_back(FillDirParams(this->spacing, 0.)); - fill_dir_params.emplace_back(FillDirParams(this->spacing, M_PI / 3.)); - fill_dir_params.emplace_back(FillDirParams(this->spacing, 2. * M_PI / 3.)); - if (! fill_surface_by_lines(surface, params2, fill_dir_params, polylines_out)) - printf("FillTriangles3::fill_surface() failed to fill a region.\n"); - return polylines_out; -} - -Polylines FillStars3::fill_surface(const Surface *surface, const FillParams ¶ms) -{ - // Each linear fill covers 1/3 of the target coverage. - FillParams params2 = params; - params2.density *= 0.333333333f; - Polylines polylines_out; - std::vector fill_dir_params; - fill_dir_params.emplace_back(FillDirParams(this->spacing, 0.)); - fill_dir_params.emplace_back(FillDirParams(this->spacing, M_PI / 3.)); - fill_dir_params.emplace_back(FillDirParams(this->spacing, 2. * M_PI / 3., 0.5 * this->spacing / params2.density)); - if (! fill_surface_by_lines(surface, params2, fill_dir_params, polylines_out)) - printf("FillStars3::fill_surface() failed to fill a region.\n"); - return polylines_out; -} - -Polylines FillCubic3::fill_surface(const Surface *surface, const FillParams ¶ms) -{ - // Each linear fill covers 1/3 of the target coverage. - FillParams params2 = params; - params2.density *= 0.333333333f; - Polylines polylines_out; - std::vector fill_dir_params; - coordf_t dx = sqrt(0.5) * z; - fill_dir_params.emplace_back(FillDirParams(this->spacing, 0., dx)); - fill_dir_params.emplace_back(FillDirParams(this->spacing, M_PI / 3., -dx)); - fill_dir_params.emplace_back(FillDirParams(this->spacing, 2. * M_PI / 3., dx)); - if (! fill_surface_by_lines(surface, params2, fill_dir_params, polylines_out)) - printf("FillCubic3::fill_surface() failed to fill a region.\n"); - return polylines_out; -} - -} // namespace Slic3r diff --git a/src/libslic3r/Fill/FillRectilinear3.hpp b/src/libslic3r/Fill/FillRectilinear3.hpp deleted file mode 100644 index 2023a25b77..0000000000 --- a/src/libslic3r/Fill/FillRectilinear3.hpp +++ /dev/null @@ -1,83 +0,0 @@ -#ifndef slic3r_FillRectilinear3_hpp_ -#define slic3r_FillRectilinear3_hpp_ - -#include "../libslic3r.h" - -#include "FillBase.hpp" - -namespace Slic3r { - -class Surface; - -class FillRectilinear3 : public Fill -{ -public: - virtual Fill* clone() const { return new FillRectilinear3(*this); }; - virtual ~FillRectilinear3() {} - virtual Polylines fill_surface(const Surface *surface, const FillParams ¶ms); - - struct FillDirParams - { - FillDirParams(coordf_t spacing, double angle, coordf_t pattern_shift = 0.f) : - spacing(spacing), angle(angle), pattern_shift(pattern_shift) {} - coordf_t spacing; - double angle; - coordf_t pattern_shift; - }; - -protected: - bool fill_surface_by_lines(const Surface *surface, const FillParams ¶ms, std::vector &fill_dir_params, Polylines &polylines_out); -}; - -class FillGrid3 : public FillRectilinear3 -{ -public: - virtual Fill* clone() const { return new FillGrid3(*this); }; - virtual ~FillGrid3() {} - virtual Polylines fill_surface(const Surface *surface, const FillParams ¶ms); - -protected: - // The grid fill will keep the angle constant between the layers, see the implementation of Slic3r::Fill. - virtual float _layer_angle(size_t /* idx */) const { return 0.f; } -}; - -class FillTriangles3 : public FillRectilinear3 -{ -public: - virtual Fill* clone() const { return new FillTriangles3(*this); }; - virtual ~FillTriangles3() {} - virtual Polylines fill_surface(const Surface *surface, const FillParams ¶ms); - -protected: - // The grid fill will keep the angle constant between the layers, see the implementation of Slic3r::Fill. - virtual float _layer_angle(size_t /* idx */) const { return 0.f; } -}; - -class FillStars3 : public FillRectilinear3 -{ -public: - virtual Fill* clone() const { return new FillStars3(*this); }; - virtual ~FillStars3() {} - virtual Polylines fill_surface(const Surface *surface, const FillParams ¶ms); - -protected: - // The grid fill will keep the angle constant between the layers, see the implementation of Slic3r::Fill. - virtual float _layer_angle(size_t /* idx */) const { return 0.f; } -}; - -class FillCubic3 : public FillRectilinear3 -{ -public: - virtual Fill* clone() const { return new FillCubic3(*this); }; - virtual ~FillCubic3() {} - virtual Polylines fill_surface(const Surface *surface, const FillParams ¶ms); - -protected: - // The grid fill will keep the angle constant between the layers, see the implementation of Slic3r::Fill. - virtual float _layer_angle(size_t /* idx */) const { return 0.f; } -}; - - -}; // namespace Slic3r - -#endif // slic3r_FillRectilinear3_hpp_ diff --git a/src/libslic3r/Format/SL1.cpp b/src/libslic3r/Format/SL1.cpp index 274f84f002..c4a9f5864f 100644 --- a/src/libslic3r/Format/SL1.cpp +++ b/src/libslic3r/Format/SL1.cpp @@ -383,6 +383,7 @@ void fill_slicerconf(ConfMap &m, const SLAPrint &print) static constexpr auto banned_keys = { "compatible_printers"sv, "compatible_prints"sv, + //FIXME The print host keys should not be exported to full_print_config anymore. The following keys may likely be removed. "print_host"sv, "printhost_apikey"sv, "printhost_cafile"sv diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 85cb8b3f11..e592466c70 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -546,9 +546,7 @@ namespace Slic3r { return gcode; } -#if ENABLE_GCODE_VIEWER const std::vector ColorPrintColors::Colors = { "#C0392B", "#E67E22", "#F1C40F", "#27AE60", "#1ABC9C", "#2980B9", "#9B59B6" }; -#endif // ENABLE_GCODE_VIEWER #define EXTRUDER_CONFIG(OPT) m_config.OPT.get_at(m_writer.extruder()->id()) @@ -687,7 +685,6 @@ std::vector>> GCode::collec return layers_to_print; } -#if ENABLE_GCODE_VIEWER // free functions called by GCode::do_export() namespace DoExport { static void update_print_estimated_times_stats(const GCodeProcessor& processor, PrintStatistics& print_statistics) @@ -700,9 +697,6 @@ namespace DoExport { } // namespace DoExport void GCode::do_export(Print* print, const char* path, GCodeProcessor::Result* result, ThumbnailsGeneratorCallback thumbnail_cb) -#else -void GCode::do_export(Print* print, const char* path, GCodePreviewData* preview_data, ThumbnailsGeneratorCallback thumbnail_cb) -#endif // ENABLE_GCODE_VIEWER { PROFILE_CLEAR(); @@ -724,10 +718,6 @@ void GCode::do_export(Print* print, const char* path, GCodePreviewData* preview_ if (file == nullptr) throw Slic3r::RuntimeError(std::string("G-code export to ") + path + " failed.\nCannot open the file for writing.\n"); -#if !ENABLE_GCODE_VIEWER - m_enable_analyzer = preview_data != nullptr; -#endif // !ENABLE_GCODE_VIEWER - try { m_placeholder_parser_failed_templates.clear(); this->_do_export(*print, file, thumbnail_cb); @@ -759,35 +749,12 @@ void GCode::do_export(Print* print, const char* path, GCodePreviewData* preview_ throw Slic3r::RuntimeError(msg); } -#if ENABLE_GCODE_VIEWER BOOST_LOG_TRIVIAL(debug) << "Start processing gcode, " << log_memory_info(); - m_processor.process_file(path_tmp, [print]() { print->throw_if_canceled(); }); + m_processor.process_file(path_tmp, true, [print]() { print->throw_if_canceled(); }); DoExport::update_print_estimated_times_stats(m_processor, print->m_print_statistics); if (result != nullptr) *result = std::move(m_processor.extract_result()); BOOST_LOG_TRIVIAL(debug) << "Finished processing gcode, " << log_memory_info(); -#else - GCodeTimeEstimator::PostProcessData normal_data = m_normal_time_estimator.get_post_process_data(); - GCodeTimeEstimator::PostProcessData silent_data = m_silent_time_estimator.get_post_process_data(); - - bool remaining_times_enabled = print->config().remaining_times.value; - - BOOST_LOG_TRIVIAL(debug) << "Time estimator post processing" << log_memory_info(); - GCodeTimeEstimator::post_process(path_tmp, 60.0f, remaining_times_enabled ? &normal_data : nullptr, (remaining_times_enabled && m_silent_time_estimator_enabled) ? &silent_data : nullptr); - - if (remaining_times_enabled) { - m_normal_time_estimator.reset(); - if (m_silent_time_estimator_enabled) - m_silent_time_estimator.reset(); - } - - // starts analyzer calculations - if (m_enable_analyzer) { - BOOST_LOG_TRIVIAL(debug) << "Preparing G-code preview data" << log_memory_info(); - m_analyzer.calc_gcode_preview_data(*preview_data, [print]() { print->throw_if_canceled(); }); - m_analyzer.reset(); - } -#endif // ENABLE_GCODE_VIEWER if (rename_file(path_tmp, path)) throw Slic3r::RuntimeError( @@ -804,88 +771,6 @@ void GCode::do_export(Print* print, const char* path, GCodePreviewData* preview_ // free functions called by GCode::_do_export() namespace DoExport { -#if !ENABLE_GCODE_VIEWER - static void init_time_estimators(const PrintConfig &config, GCodeTimeEstimator &normal_time_estimator, GCodeTimeEstimator &silent_time_estimator, bool &silent_time_estimator_enabled) - { - // resets time estimators - normal_time_estimator.reset(); - normal_time_estimator.set_dialect(config.gcode_flavor); - normal_time_estimator.set_extrusion_axis(config.get_extrusion_axis()[0]); - silent_time_estimator_enabled = (config.gcode_flavor == gcfMarlin) && config.silent_mode; - - // Until we have a UI support for the other firmwares than the Marlin, use the hardcoded default values - // and let the user to enter the G-code limits into the start G-code. - // If the following block is enabled for other firmwares than the Marlin, then the function - // this->print_machine_envelope(file, print); - // shall be adjusted as well to produce a G-code block compatible with the particular firmware flavor. - if (config.gcode_flavor.value == gcfMarlin) { - if (config.machine_limits_usage.value != MachineLimitsUsage::Ignore) { - normal_time_estimator.set_max_acceleration((float)config.machine_max_acceleration_extruding.values[0]); - normal_time_estimator.set_retract_acceleration((float)config.machine_max_acceleration_retracting.values[0]); - normal_time_estimator.set_minimum_feedrate((float)config.machine_min_extruding_rate.values[0]); - normal_time_estimator.set_minimum_travel_feedrate((float)config.machine_min_travel_rate.values[0]); - normal_time_estimator.set_axis_max_acceleration(GCodeTimeEstimator::X, (float)config.machine_max_acceleration_x.values[0]); - normal_time_estimator.set_axis_max_acceleration(GCodeTimeEstimator::Y, (float)config.machine_max_acceleration_y.values[0]); - normal_time_estimator.set_axis_max_acceleration(GCodeTimeEstimator::Z, (float)config.machine_max_acceleration_z.values[0]); - normal_time_estimator.set_axis_max_acceleration(GCodeTimeEstimator::E, (float)config.machine_max_acceleration_e.values[0]); - normal_time_estimator.set_axis_max_feedrate(GCodeTimeEstimator::X, (float)config.machine_max_feedrate_x.values[0]); - normal_time_estimator.set_axis_max_feedrate(GCodeTimeEstimator::Y, (float)config.machine_max_feedrate_y.values[0]); - normal_time_estimator.set_axis_max_feedrate(GCodeTimeEstimator::Z, (float)config.machine_max_feedrate_z.values[0]); - normal_time_estimator.set_axis_max_feedrate(GCodeTimeEstimator::E, (float)config.machine_max_feedrate_e.values[0]); - normal_time_estimator.set_axis_max_jerk(GCodeTimeEstimator::X, (float)config.machine_max_jerk_x.values[0]); - normal_time_estimator.set_axis_max_jerk(GCodeTimeEstimator::Y, (float)config.machine_max_jerk_y.values[0]); - normal_time_estimator.set_axis_max_jerk(GCodeTimeEstimator::Z, (float)config.machine_max_jerk_z.values[0]); - normal_time_estimator.set_axis_max_jerk(GCodeTimeEstimator::E, (float)config.machine_max_jerk_e.values[0]); - } - - if (silent_time_estimator_enabled) - { - silent_time_estimator.reset(); - silent_time_estimator.set_dialect(config.gcode_flavor); - silent_time_estimator.set_extrusion_axis(config.get_extrusion_axis()[0]); - - if (config.machine_limits_usage.value != MachineLimitsUsage::Ignore) { - /* "Stealth mode" values can be just a copy of "normal mode" values - * (when they aren't input for a printer preset). - * Thus, use back value from values, instead of second one, which could be absent - */ - silent_time_estimator.set_max_acceleration((float)config.machine_max_acceleration_extruding.values.back()); - silent_time_estimator.set_retract_acceleration((float)config.machine_max_acceleration_retracting.values.back()); - silent_time_estimator.set_minimum_feedrate((float)config.machine_min_extruding_rate.values.back()); - silent_time_estimator.set_minimum_travel_feedrate((float)config.machine_min_travel_rate.values.back()); - silent_time_estimator.set_axis_max_acceleration(GCodeTimeEstimator::X, (float)config.machine_max_acceleration_x.values.back()); - silent_time_estimator.set_axis_max_acceleration(GCodeTimeEstimator::Y, (float)config.machine_max_acceleration_y.values.back()); - silent_time_estimator.set_axis_max_acceleration(GCodeTimeEstimator::Z, (float)config.machine_max_acceleration_z.values.back()); - silent_time_estimator.set_axis_max_acceleration(GCodeTimeEstimator::E, (float)config.machine_max_acceleration_e.values.back()); - silent_time_estimator.set_axis_max_feedrate(GCodeTimeEstimator::X, (float)config.machine_max_feedrate_x.values.back()); - silent_time_estimator.set_axis_max_feedrate(GCodeTimeEstimator::Y, (float)config.machine_max_feedrate_y.values.back()); - silent_time_estimator.set_axis_max_feedrate(GCodeTimeEstimator::Z, (float)config.machine_max_feedrate_z.values.back()); - silent_time_estimator.set_axis_max_feedrate(GCodeTimeEstimator::E, (float)config.machine_max_feedrate_e.values.back()); - silent_time_estimator.set_axis_max_jerk(GCodeTimeEstimator::X, (float)config.machine_max_jerk_x.values.back()); - silent_time_estimator.set_axis_max_jerk(GCodeTimeEstimator::Y, (float)config.machine_max_jerk_y.values.back()); - silent_time_estimator.set_axis_max_jerk(GCodeTimeEstimator::Z, (float)config.machine_max_jerk_z.values.back()); - silent_time_estimator.set_axis_max_jerk(GCodeTimeEstimator::E, (float)config.machine_max_jerk_e.values.back()); - } - - if (config.single_extruder_multi_material) { - // As of now the fields are shown at the UI dialog in the same combo box as the ramming values, so they - // are considered to be active for the single extruder multi-material printers only. - silent_time_estimator.set_filament_load_times(config.filament_load_time.values); - silent_time_estimator.set_filament_unload_times(config.filament_unload_time.values); - } - } - } - // Filament load / unload times are not specific to a firmware flavor. Let anybody use it if they find it useful. - if (config.single_extruder_multi_material) { - // As of now the fields are shown at the UI dialog in the same combo box as the ramming values, so they - // are considered to be active for the single extruder multi-material printers only. - normal_time_estimator.set_filament_load_times(config.filament_load_time.values); - normal_time_estimator.set_filament_unload_times(config.filament_unload_time.values); - } - } -#endif // !ENABLE_GCODE_VIEWER - -#if ENABLE_GCODE_VIEWER static void init_gcode_processor(const PrintConfig& config, GCodeProcessor& processor, bool& silent_time_estimator_enabled) { silent_time_estimator_enabled = (config.gcode_flavor == gcfMarlin) && config.silent_mode; @@ -893,33 +778,6 @@ namespace DoExport { processor.apply_config(config); processor.enable_stealth_time_estimator(silent_time_estimator_enabled); } -#else - static void init_gcode_analyzer(const PrintConfig &config, GCodeAnalyzer &analyzer) - { - // resets analyzer - analyzer.reset(); - - // send extruder offset data to analyzer - GCodeAnalyzer::ExtruderOffsetsMap extruder_offsets; - unsigned int num_extruders = static_cast(config.nozzle_diameter.values.size()); - for (unsigned int extruder_id = 0; extruder_id < num_extruders; ++ extruder_id) - { - Vec2d offset = config.extruder_offset.get_at(extruder_id); - if (!offset.isApprox(Vec2d::Zero())) - extruder_offsets[extruder_id] = offset; - } - analyzer.set_extruder_offsets(extruder_offsets); - - // tell analyzer about the extrusion axis - analyzer.set_extrusion_axis(config.get_extrusion_axis()[0]); - - // send extruders count to analyzer to allow it to detect invalid extruder idxs - analyzer.set_extruders_count(num_extruders); - - // tell analyzer about the gcode flavor - analyzer.set_gcode_flavor(config.gcode_flavor); - } -#endif // ENABLE_GCODE_VIEWER static double autospeed_volumetric_limit(const Print &print) { @@ -1043,11 +901,6 @@ namespace DoExport { // Fill in print_statistics and return formatted string containing filament statistics to be inserted into G-code comment section. static std::string update_print_stats_and_format_filament_stats( -#if !ENABLE_GCODE_VIEWER - const GCodeTimeEstimator &normal_time_estimator, - const GCodeTimeEstimator &silent_time_estimator, - const bool silent_time_estimator_enabled, -#endif // !ENABLE_GCODE_VIEWER const bool has_wipe_tower, const WipeTowerData &wipe_tower_data, const std::vector &extruders, @@ -1056,13 +909,6 @@ namespace DoExport { std::string filament_stats_string_out; print_statistics.clear(); -#if !ENABLE_GCODE_VIEWER - print_statistics.estimated_normal_print_time = normal_time_estimator.get_time_dhm/*s*/(); - print_statistics.estimated_silent_print_time = silent_time_estimator_enabled ? silent_time_estimator.get_time_dhm/*s*/() : "N/A"; - print_statistics.estimated_normal_custom_gcode_print_times = normal_time_estimator.get_custom_gcode_times_dhm(true); - if (silent_time_estimator_enabled) - print_statistics.estimated_silent_custom_gcode_print_times = silent_time_estimator.get_custom_gcode_times_dhm(true); -#endif // !ENABLE_GCODE_VIEWER print_statistics.total_toolchanges = std::max(0, wipe_tower_data.number_of_toolchanges); if (! extruders.empty()) { std::pair out_filament_used_mm ("; filament used [mm] = ", 0); @@ -1088,14 +934,14 @@ namespace DoExport { ++ dst.second; }; print_statistics.filament_stats.insert(std::pair{extruder.id(), (float)used_filament}); - append(out_filament_used_mm, "%.1lf", used_filament); - append(out_filament_used_cm3, "%.1lf", extruded_volume * 0.001); + append(out_filament_used_mm, "%.2lf", used_filament); + append(out_filament_used_cm3, "%.2lf", extruded_volume * 0.001); if (filament_weight > 0.) { print_statistics.total_weight = print_statistics.total_weight + filament_weight; - append(out_filament_used_g, "%.1lf", filament_weight); + append(out_filament_used_g, "%.2lf", filament_weight); if (filament_cost > 0.) { print_statistics.total_cost = print_statistics.total_cost + filament_cost; - append(out_filament_cost, "%.1lf", filament_cost); + append(out_filament_cost, "%.2lf", filament_cost); } } print_statistics.total_used_filament += used_filament; @@ -1153,29 +999,16 @@ void GCode::_do_export(Print& print, FILE* file, ThumbnailsGeneratorCallback thu { PROFILE_FUNC(); -#if ENABLE_GCODE_VIEWER // modifies m_silent_time_estimator_enabled DoExport::init_gcode_processor(print.config(), m_processor, m_silent_time_estimator_enabled); -#else - DoExport::init_time_estimators(print.config(), - // modifies the following: - m_normal_time_estimator, m_silent_time_estimator, m_silent_time_estimator_enabled); - DoExport::init_gcode_analyzer(print.config(), m_analyzer); -#endif // ENABLE_GCODE_VIEWER // resets analyzer's tracking data -#if ENABLE_GCODE_VIEWER m_last_height = 0.0f; m_last_layer_z = 0.0f; #if ENABLE_GCODE_VIEWER_DATA_CHECKING m_last_mm3_per_mm = 0.0; m_last_width = 0.0f; #endif // ENABLE_GCODE_VIEWER_DATA_CHECKING -#else - m_last_mm3_per_mm = GCodeAnalyzer::Default_mm3_per_mm; - m_last_width = GCodeAnalyzer::Default_Width; - m_last_height = GCodeAnalyzer::Default_Height; -#endif // ENABLE_GCODE_VIEWER // How many times will be change_layer() called? // change_layer() in turn increments the progress bar status. @@ -1266,16 +1099,8 @@ void GCode::_do_export(Print& print, FILE* file, ThumbnailsGeneratorCallback thu print.throw_if_canceled(); // adds tags for time estimators -#if ENABLE_GCODE_VIEWER if (print.config().remaining_times.value) _writeln(file, GCodeProcessor::First_Line_M73_Placeholder_Tag); -#else - if (print.config().remaining_times.value) { - _writeln(file, GCodeTimeEstimator::Normal_First_M73_Output_Placeholder_Tag); - if (m_silent_time_estimator_enabled) - _writeln(file, GCodeTimeEstimator::Silent_First_M73_Output_Placeholder_Tag); - } -#endif // ENABLE_GCODE_VIEWER // Prepare the helper object for replacing placeholders in custom G-code and output filename. m_placeholder_parser = print.placeholder_parser(); @@ -1380,14 +1205,8 @@ void GCode::_do_export(Print& print, FILE* file, ThumbnailsGeneratorCallback thu // Set extruder(s) temperature before and after start G-code. this->_print_first_layer_extruder_temperatures(file, print, start_gcode, initial_extruder_id, false); -#if ENABLE_GCODE_VIEWER // adds tag for processor _write_format(file, ";%s%s\n", GCodeProcessor::Extrusion_Role_Tag.c_str(), ExtrusionEntity::role_to_string(erCustom).c_str()); -#else - if (m_enable_analyzer) - // adds tag for analyzer - _write_format(file, ";%s%d\n", GCodeAnalyzer::Extrusion_Role_Tag.c_str(), erCustom); -#endif // ENABLE_GCODE_VIEWER // Write the custom start G-code _writeln(file, start_gcode); @@ -1541,14 +1360,8 @@ void GCode::_do_export(Print& print, FILE* file, ThumbnailsGeneratorCallback thu _write(file, this->retract()); _write(file, m_writer.set_fan(false)); -#if ENABLE_GCODE_VIEWER // adds tag for processor _write_format(file, ";%s%s\n", GCodeProcessor::Extrusion_Role_Tag.c_str(), ExtrusionEntity::role_to_string(erCustom).c_str()); -#else - if (m_enable_analyzer) - // adds tag for analyzer - _write_format(file, ";%s%d\n", GCodeAnalyzer::Extrusion_Role_Tag.c_str(), erCustom); -#endif // ENABLE_GCODE_VIEWER // Process filament-specific gcode in extruder order. { @@ -1573,53 +1386,29 @@ void GCode::_do_export(Print& print, FILE* file, ThumbnailsGeneratorCallback thu _write(file, m_writer.postamble()); // adds tags for time estimators -#if ENABLE_GCODE_VIEWER if (print.config().remaining_times.value) _writeln(file, GCodeProcessor::Last_Line_M73_Placeholder_Tag); -#else - if (print.config().remaining_times.value) { - _writeln(file, GCodeTimeEstimator::Normal_Last_M73_Output_Placeholder_Tag); - if (m_silent_time_estimator_enabled) - _writeln(file, GCodeTimeEstimator::Silent_Last_M73_Output_Placeholder_Tag); - } -#endif // ENABLE_GCODE_VIEWER print.throw_if_canceled(); - // calculates estimated printing time -#if !ENABLE_GCODE_VIEWER - m_normal_time_estimator.calculate_time(false); - if (m_silent_time_estimator_enabled) - m_silent_time_estimator.calculate_time(false); -#endif // !ENABLE_GCODE_VIEWER - // Get filament stats. _write(file, DoExport::update_print_stats_and_format_filament_stats( // Const inputs -#if !ENABLE_GCODE_VIEWER - m_normal_time_estimator, m_silent_time_estimator, m_silent_time_estimator_enabled, -#endif // !ENABLE_GCODE_VIEWER has_wipe_tower, print.wipe_tower_data(), m_writer.extruders(), // Modifies print.m_print_statistics)); _write(file, "\n"); - _write_format(file, "; total filament used [g] = %.1lf\n", print.m_print_statistics.total_weight); - _write_format(file, "; total filament cost = %.1lf\n", print.m_print_statistics.total_cost); + _write_format(file, "; total filament used [g] = %.2lf\n", print.m_print_statistics.total_weight); + _write_format(file, "; total filament cost = %.2lf\n", print.m_print_statistics.total_cost); if (print.m_print_statistics.total_toolchanges > 0) _write_format(file, "; total toolchanges = %i\n", print.m_print_statistics.total_toolchanges); -#if ENABLE_GCODE_VIEWER _writeln(file, GCodeProcessor::Estimated_Printing_Time_Placeholder_Tag); -#else - _write_format(file, "; estimated printing time (normal mode) = %s\n", m_normal_time_estimator.get_time_dhms().c_str()); - if (m_silent_time_estimator_enabled) - _write_format(file, "; estimated printing time (silent mode) = %s\n", m_silent_time_estimator.get_time_dhms().c_str()); -#endif // ENABLE_GCODE_VIEWER // Append full config. _write(file, "\n"); { - std::string full_config = ""; + std::string full_config; append_full_config(print, full_config); if (!full_config.empty()) _write(file, full_config); @@ -1655,47 +1444,23 @@ static bool custom_gcode_sets_temperature(const std::string &gcode, const int mc while (*ptr != 0) { // Skip whitespaces. for (; *ptr == ' ' || *ptr == '\t'; ++ ptr); - if (*ptr == 'M') { - // Line starts with 'M'. It is a machine command. + if (*ptr == 'M' || // Line starts with 'M'. It is a machine command. + (*ptr == 'G' && include_g10)) { // Only check for G10 if requested + bool is_gcode = *ptr == 'G'; ++ ptr; - // Parse the M code value. + // Parse the M or G code value. char *endptr = nullptr; - int mcode = int(strtol(ptr, &endptr, 10)); - if (endptr != nullptr && endptr != ptr && (mcode == mcode_set_temp_dont_wait || mcode == mcode_set_temp_and_wait)) { - // M104/M109 or M140/M190 found. - ptr = endptr; - // Let the caller know that the custom G-code sets the temperature. - temp_set_by_gcode = true; - // Now try to parse the temperature value. - // While not at the end of the line: - while (strchr(";\r\n\0", *ptr) == nullptr) { - // Skip whitespaces. - for (; *ptr == ' ' || *ptr == '\t'; ++ ptr); - if (*ptr == 'S') { - // Skip whitespaces. - for (++ ptr; *ptr == ' ' || *ptr == '\t'; ++ ptr); - // Parse an int. - endptr = nullptr; - long temp_parsed = strtol(ptr, &endptr, 10); - if (endptr > ptr) { - ptr = endptr; - temp_out = temp_parsed; - } - } else { - // Skip this word. - for (; strchr(" \t;\r\n\0", *ptr) == nullptr; ++ ptr); - } - } - } - } else if (*ptr == 'G' && include_g10) { // Only check for G10 if requested - // Line starts with 'G'. - ++ ptr; - // Parse the G code value. - char *endptr = nullptr; - int gcode = int(strtol(ptr, &endptr, 10)); - if (endptr != nullptr && endptr != ptr && gcode == 10 /* G10 */) { - // G10 code found + int mgcode = int(strtol(ptr, &endptr, 10)); + if (endptr != nullptr && endptr != ptr && + is_gcode ? + // G10 found + mgcode == 10 : + // M104/M109 or M140/M190 found. + (mgcode == mcode_set_temp_dont_wait || mgcode == mcode_set_temp_and_wait)) { ptr = endptr; + if (! is_gcode) + // Let the caller know that the custom M-code sets the temperature. + temp_set_by_gcode = true; // Now try to parse the temperature value. // While not at the end of the line: while (strchr(";\r\n\0", *ptr) == nullptr) { @@ -1784,11 +1549,12 @@ void GCode::_print_first_layer_bed_temperature(FILE *file, Print &print, const s // Only do that if the start G-code does not already contain any M-code controlling an extruder temperature. // M104 - Set Extruder Temperature // M109 - Set Extruder Temperature and Wait +// RepRapFirmware: G10 Sxx void GCode::_print_first_layer_extruder_temperatures(FILE *file, Print &print, const std::string &gcode, unsigned int first_printing_extruder_id, bool wait) { // Is the bed temperature set by the provided custom G-code? - int temp_by_gcode = -1; - bool include_g10 = (print.config().gcode_flavor == gcfRepRapFirmware); + int temp_by_gcode = -1; + bool include_g10 = print.config().gcode_flavor == gcfRepRapFirmware; if (custom_gcode_sets_temperature(gcode, 104, 109, include_g10, temp_by_gcode)) { // Set the extruder temperature at m_writer, but throw away the generated G-code as it will be written with the custom G-code. int temp = print.config().first_layer_temperature.get_at(first_printing_extruder_id); @@ -1919,15 +1685,8 @@ namespace ProcessLayer { assert(m600_extruder_before_layer >= 0); // Color Change or Tool Change as Color Change. -#if ENABLE_GCODE_VIEWER // add tag for processor - gcode += "; " + GCodeProcessor::Color_Change_Tag + ",T" + std::to_string(m600_extruder_before_layer) + "\n"; -#else - // add tag for analyzer - gcode += "; " + GCodeAnalyzer::Color_Change_Tag + ",T" + std::to_string(m600_extruder_before_layer) + "\n"; - // add tag for time estimator - gcode += "; " + GCodeTimeEstimator::Color_Change_Tag + "\n"; -#endif // ENABLE_GCODE_VIEWER + gcode += ";" + GCodeProcessor::Color_Change_Tag + ",T" + std::to_string(m600_extruder_before_layer) + "\n"; if (!single_extruder_printer && m600_extruder_before_layer >= 0 && first_extruder_id != (unsigned)m600_extruder_before_layer // && !MMU1 @@ -1946,33 +1705,17 @@ namespace ProcessLayer { if (gcode_type == CustomGCode::PausePrint) // Pause print { -#if ENABLE_GCODE_VIEWER // add tag for processor - gcode += "; " + GCodeProcessor::Pause_Print_Tag + "\n"; -#else - // add tag for analyzer - gcode += "; " + GCodeAnalyzer::Pause_Print_Tag + "\n"; -#endif // ENABLE_GCODE_VIEWER + gcode += ";" + GCodeProcessor::Pause_Print_Tag + "\n"; //! FIXME_in_fw show message during print pause if (!pause_print_msg.empty()) gcode += "M117 " + pause_print_msg + "\n"; -#if !ENABLE_GCODE_VIEWER - // add tag for time estimator - gcode += "; " + GCodeTimeEstimator::Pause_Print_Tag + "\n"; -#endif // !ENABLE_GCODE_VIEWER gcode += config.pause_print_gcode; } else { -#if ENABLE_GCODE_VIEWER // add tag for processor - gcode += "; " + GCodeProcessor::Custom_Code_Tag + "\n"; -#else - // add tag for analyzer - gcode += "; " + GCodeAnalyzer::Custom_Code_Tag + "\n"; -#endif // ENABLE_GCODE_VIEWER - // add tag for time estimator - //gcode += "; " + GCodeTimeEstimator::Custom_Code_Tag + "\n"; + gcode += ";" + GCodeProcessor::Custom_Code_Tag + "\n"; if (gcode_type == CustomGCode::Template) // Template Cistom Gcode gcode += config.template_custom_gcode; else // custom Gcode @@ -2114,9 +1857,8 @@ void GCode::process_layer( std::string gcode; -#if ENABLE_GCODE_VIEWER // add tag for processor - gcode += "; " + GCodeProcessor::Layer_Change_Tag + "\n"; + gcode += ";" + GCodeProcessor::Layer_Change_Tag + "\n"; // export layer z char buf[64]; sprintf(buf, ";Z:%g\n", print_z); @@ -2128,7 +1870,6 @@ void GCode::process_layer( // update caches m_last_layer_z = static_cast(print_z); m_last_height = height; -#endif // ENABLE_GCODE_VIEWER // Set new layer - this will change Z and force a retraction if retract_layer_change is enabled. if (! print.config().before_layer_gcode.value.empty()) { @@ -2343,15 +2084,9 @@ void GCode::process_layer( m_wipe_tower->tool_change(*this, extruder_id, extruder_id == layer_tools.extruders.back()) : this->set_extruder(extruder_id, print_z); -#if ENABLE_GCODE_VIEWER // let analyzer tag generator aware of a role type change if (layer_tools.has_wipe_tower && m_wipe_tower) m_last_processor_extrusion_role = erWipeTower; -#else - // let analyzer tag generator aware of a role type change - if (m_enable_analyzer && layer_tools.has_wipe_tower && m_wipe_tower) - m_last_analyzer_extrusion_role = erWipeTower; -#endif // ENABLE_GCODE_VIEWER if (auto loops_it = skirt_loops_per_extruder.find(extruder_id); loops_it != skirt_loops_per_extruder.end()) { const std::pair loops = loops_it->second; @@ -2455,14 +2190,6 @@ void GCode::process_layer( if (m_cooling_buffer) gcode = m_cooling_buffer->process_layer(gcode, layer.id()); -#if !ENABLE_GCODE_VIEWER - // add tag for analyzer - if (gcode.find(GCodeAnalyzer::Pause_Print_Tag) != gcode.npos) - gcode += "\n; " + GCodeAnalyzer::End_Pause_Print_Or_Custom_Code_Tag + "\n"; - else if (gcode.find(GCodeAnalyzer::Custom_Code_Tag) != gcode.npos) - gcode += "\n; " + GCodeAnalyzer::End_Pause_Print_Or_Custom_Code_Tag + "\n"; -#endif // !ENABLE_GCODE_VIEWER - #ifdef HAS_PRESSURE_EQUALIZER // Apply pressure equalization if enabled; // printf("G-code before filter:\n%s\n", gcode.c_str()); @@ -2472,17 +2199,8 @@ void GCode::process_layer( #endif /* HAS_PRESSURE_EQUALIZER */ _write(file, gcode); -#if ENABLE_GCODE_VIEWER BOOST_LOG_TRIVIAL(trace) << "Exported layer " << layer.id() << " print_z " << print_z << log_memory_info(); -#else - BOOST_LOG_TRIVIAL(trace) << "Exported layer " << layer.id() << " print_z " << print_z << - ", time estimator memory: " << - format_memsize_MB(m_normal_time_estimator.memory_used() + (m_silent_time_estimator_enabled ? m_silent_time_estimator.memory_used() : 0)) << - ", analyzer memory: " << - format_memsize_MB(m_analyzer.memory_used()) << - log_memory_info(); -#endif // ENABLE_GCODE_VIEWER } void GCode::apply_print_config(const PrintConfig &print_config) @@ -2498,6 +2216,7 @@ void GCode::append_full_config(const Print &print, std::string &str) static constexpr auto banned_keys = { "compatible_printers"sv, "compatible_prints"sv, + //FIXME The print host keys should not be exported to full_print_config anymore. The following keys may likely be removed. "print_host"sv, "printhost_apikey"sv, "printhost_cafile"sv @@ -2812,21 +2531,9 @@ std::string GCode::extrude_support(const ExtrusionEntityCollection &support_fill void GCode::_write(FILE* file, const char *what) { if (what != nullptr) { -#if ENABLE_GCODE_VIEWER const char* gcode = what; -#else - // apply analyzer, if enabled - const char* gcode = m_enable_analyzer ? m_analyzer.process_gcode(what).c_str() : what; -#endif // !ENABLE_GCODE_VIEWER - // writes string to file fwrite(gcode, 1, ::strlen(gcode), file); -#if !ENABLE_GCODE_VIEWER - // updates time estimator and gcode lines vector - m_normal_time_estimator.add_gcode_block(gcode); - if (m_silent_time_estimator_enabled) - m_silent_time_estimator.add_gcode_block(gcode); -#endif // !ENABLE_GCODE_VIEWER } } @@ -2966,70 +2673,36 @@ std::string GCode::_extrude(const ExtrusionPath &path, std::string description, } // adds processor tags and updates processor tracking data -#if ENABLE_GCODE_VIEWER // PrusaMultiMaterial::Writer may generate GCodeProcessor::Height_Tag lines without updating m_last_height // so, if the last role was erWipeTower we force export of GCodeProcessor::Height_Tag lines bool last_was_wipe_tower = (m_last_processor_extrusion_role == erWipeTower); -#else - if (m_enable_analyzer) { - // PrusaMultiMaterial::Writer may generate GCodeAnalyzer::Height_Tag and GCodeAnalyzer::Width_Tag lines without updating m_last_height and m_last_width - // so, if the last role was erWipeTower we force export of GCodeAnalyzer::Height_Tag and GCodeAnalyzer::Width_Tag lines - bool last_was_wipe_tower = (m_last_analyzer_extrusion_role == erWipeTower); -#endif // ENABLE_GCODE_VIEWER - char buf[64]; + char buf[64]; -#if ENABLE_GCODE_VIEWER - if (path.role() != m_last_processor_extrusion_role) { - m_last_processor_extrusion_role = path.role(); - sprintf(buf, ";%s%s\n", GCodeProcessor::Extrusion_Role_Tag.c_str(), ExtrusionEntity::role_to_string(m_last_processor_extrusion_role).c_str()); - gcode += buf; - } + if (path.role() != m_last_processor_extrusion_role) { + m_last_processor_extrusion_role = path.role(); + sprintf(buf, ";%s%s\n", GCodeProcessor::Extrusion_Role_Tag.c_str(), ExtrusionEntity::role_to_string(m_last_processor_extrusion_role).c_str()); + gcode += buf; + } #if ENABLE_GCODE_VIEWER_DATA_CHECKING - if (last_was_wipe_tower || (m_last_mm3_per_mm != path.mm3_per_mm)) { - m_last_mm3_per_mm = path.mm3_per_mm; - sprintf(buf, ";%s%f\n", GCodeProcessor::Mm3_Per_Mm_Tag.c_str(), m_last_mm3_per_mm); - gcode += buf; - } + if (last_was_wipe_tower || (m_last_mm3_per_mm != path.mm3_per_mm)) { + m_last_mm3_per_mm = path.mm3_per_mm; + sprintf(buf, ";%s%f\n", GCodeProcessor::Mm3_Per_Mm_Tag.c_str(), m_last_mm3_per_mm); + gcode += buf; + } - if (last_was_wipe_tower || m_last_width != path.width) { - m_last_width = path.width; - sprintf(buf, ";%s%g\n", GCodeProcessor::Width_Tag.c_str(), m_last_width); - gcode += buf; - } + if (last_was_wipe_tower || m_last_width != path.width) { + m_last_width = path.width; + sprintf(buf, ";%s%g\n", GCodeProcessor::Width_Tag.c_str(), m_last_width); + gcode += buf; + } #endif // ENABLE_GCODE_VIEWER_DATA_CHECKING - if (last_was_wipe_tower || std::abs(m_last_height - path.height) > EPSILON) { - m_last_height = path.height; - sprintf(buf, ";%s%g\n", GCodeProcessor::Height_Tag.c_str(), m_last_height); - gcode += buf; - } -#else - if (path.role() != m_last_analyzer_extrusion_role) { - m_last_analyzer_extrusion_role = path.role(); - sprintf(buf, ";%s%d\n", GCodeAnalyzer::Extrusion_Role_Tag.c_str(), int(m_last_analyzer_extrusion_role)); - gcode += buf; - } - - if (last_was_wipe_tower || (m_last_mm3_per_mm != path.mm3_per_mm)) { - m_last_mm3_per_mm = path.mm3_per_mm; - sprintf(buf, ";%s%f\n", GCodeAnalyzer::Mm3_Per_Mm_Tag.c_str(), m_last_mm3_per_mm); - gcode += buf; - } - - if (last_was_wipe_tower || m_last_width != path.width) { - m_last_width = path.width; - sprintf(buf, ";%s%f\n", GCodeAnalyzer::Width_Tag.c_str(), m_last_width); - gcode += buf; - } - - if (last_was_wipe_tower || m_last_height != path.height) { - m_last_height = path.height; - sprintf(buf, ";%s%f\n", GCodeAnalyzer::Height_Tag.c_str(), m_last_height); - gcode += buf; - } + if (last_was_wipe_tower || std::abs(m_last_height - path.height) > EPSILON) { + m_last_height = path.height; + sprintf(buf, ";%s%g\n", GCodeProcessor::Height_Tag.c_str(), m_last_height); + gcode += buf; } -#endif // ENABLE_GCODE_VIEWER std::string comment; if (m_enable_cooling_markers) { diff --git a/src/libslic3r/GCode.hpp b/src/libslic3r/GCode.hpp index 01650b6eeb..aeac4fcf82 100644 --- a/src/libslic3r/GCode.hpp +++ b/src/libslic3r/GCode.hpp @@ -14,12 +14,7 @@ #include "GCode/ToolOrdering.hpp" #include "GCode/WipeTower.hpp" #include "GCode/SeamPlacer.hpp" -#if ENABLE_GCODE_VIEWER #include "GCode/GCodeProcessor.hpp" -#else -#include "GCode/Analyzer.hpp" -#include "GCodeTimeEstimator.hpp" -#endif // ENABLE_GCODE_VIEWER #include "EdgeGrid.hpp" #include "GCode/ThumbnailData.hpp" @@ -34,9 +29,6 @@ namespace Slic3r { // Forward declarations. class GCode; -#if !ENABLE_GCODE_VIEWER -class GCodePreviewData; -#endif // !ENABLE_GCODE_VIEWER namespace { struct Item; } struct PrintInstance; @@ -146,14 +138,12 @@ private: double m_last_wipe_tower_print_z = 0.f; }; -#if ENABLE_GCODE_VIEWER class ColorPrintColors { static const std::vector Colors; public: static const std::vector& get() { return Colors; } }; -#endif // ENABLE_GCODE_VIEWER class GCode { public: @@ -161,13 +151,8 @@ public: m_origin(Vec2d::Zero()), m_enable_loop_clipping(true), m_enable_cooling_markers(false), - m_enable_extrusion_role_markers(false), -#if ENABLE_GCODE_VIEWER + m_enable_extrusion_role_markers(false), m_last_processor_extrusion_role(erNone), -#else - m_enable_analyzer(false), - m_last_analyzer_extrusion_role(erNone), -#endif // ENABLE_GCODE_VIEWER m_layer_count(0), m_layer_index(-1), m_layer(nullptr), @@ -178,17 +163,8 @@ public: m_last_mm3_per_mm(0.0), m_last_width(0.0f), #endif // ENABLE_GCODE_VIEWER_DATA_CHECKING -#if !ENABLE_GCODE_VIEWER - m_last_mm3_per_mm(GCodeAnalyzer::Default_mm3_per_mm), - m_last_width(GCodeAnalyzer::Default_Width), - m_last_height(GCodeAnalyzer::Default_Height), -#endif // !ENABLE_GCODE_VIEWER m_brim_done(false), m_second_layer_things_done(false), -#if !ENABLE_GCODE_VIEWER - m_normal_time_estimator(GCodeTimeEstimator::Normal), - m_silent_time_estimator(GCodeTimeEstimator::Silent), -#endif // !ENABLE_GCODE_VIEWER m_silent_time_estimator_enabled(false), m_last_obj_copy(nullptr, Point(std::numeric_limits::max(), std::numeric_limits::max())) {} @@ -196,11 +172,7 @@ public: // throws std::runtime_exception on error, // throws CanceledException through print->throw_if_canceled(). -#if ENABLE_GCODE_VIEWER void do_export(Print* print, const char* path, GCodeProcessor::Result* result = nullptr, ThumbnailsGeneratorCallback thumbnail_cb = nullptr); -#else - void do_export(Print* print, const char* path, GCodePreviewData* preview_data = nullptr, ThumbnailsGeneratorCallback thumbnail_cb = nullptr); -#endif // ENABLE_GCODE_VIEWER // Exported for the helper classes (OozePrevention, Wipe) and for the Perl binding for unit tests. const Vec2d& origin() const { return m_origin; } @@ -363,16 +335,8 @@ private: // Markers for the Pressure Equalizer to recognize the extrusion type. // The Pressure Equalizer removes the markers from the final G-code. bool m_enable_extrusion_role_markers; -#if ENABLE_GCODE_VIEWER // Keeps track of the last extrusion role passed to the processor ExtrusionRole m_last_processor_extrusion_role; -#else - // Enableds the G-code Analyzer. - // Extended markers will be added during G-code generation. - // The G-code Analyzer will remove these comments from the final G-code. - bool m_enable_analyzer; - ExtrusionRole m_last_analyzer_extrusion_role; -#endif // ENABLE_GCODE_VIEWER // How many times will change_layer() be called? // change_layer() will update the progress bar. unsigned int m_layer_count; @@ -384,7 +348,6 @@ private: double m_volumetric_speed; // Support for the extrusion role markers. Which marker is active? ExtrusionRole m_last_extrusion_role; -#if ENABLE_GCODE_VIEWER // Support for G-Code Processor float m_last_height{ 0.0f }; float m_last_layer_z{ 0.0f }; @@ -392,12 +355,6 @@ private: double m_last_mm3_per_mm; float m_last_width{ 0.0f }; #endif // ENABLE_GCODE_VIEWER_DATA_CHECKING -#else - // Support for G-Code Analyzer - double m_last_mm3_per_mm; - float m_last_width; - float m_last_height; -#endif // ENABLE_GCODE_VIEWER Point m_last_pos; bool m_last_pos_defined; @@ -418,20 +375,10 @@ private: // Index of a last object copy extruded. std::pair m_last_obj_copy; -#if !ENABLE_GCODE_VIEWER - // Time estimators - GCodeTimeEstimator m_normal_time_estimator; - GCodeTimeEstimator m_silent_time_estimator; -#endif // !ENABLE_GCODE_VIEWER bool m_silent_time_estimator_enabled; -#if ENABLE_GCODE_VIEWER // Processor GCodeProcessor m_processor; -#else - // Analyzer - GCodeAnalyzer m_analyzer; -#endif // ENABLE_GCODE_VIEWER // Write a string into a file. void _write(FILE* file, const std::string& what) { this->_write(file, what.c_str()); } diff --git a/src/libslic3r/GCode/Analyzer.cpp b/src/libslic3r/GCode/Analyzer.cpp deleted file mode 100644 index d022b37983..0000000000 --- a/src/libslic3r/GCode/Analyzer.cpp +++ /dev/null @@ -1,1197 +0,0 @@ -#include -#include -#include - -#include "../libslic3r.h" -#include "../PrintConfig.hpp" -#include "../Utils.hpp" -#include "Print.hpp" - -#include - -#include "Analyzer.hpp" -#include "PreviewData.hpp" - -#if !ENABLE_GCODE_VIEWER - -static const std::string AXIS_STR = "XYZE"; -static const float MMMIN_TO_MMSEC = 1.0f / 60.0f; -static const float INCHES_TO_MM = 25.4f; -static const float DEFAULT_FEEDRATE = 0.0f; -static const unsigned int DEFAULT_EXTRUDER_ID = 0; -static const unsigned int DEFAULT_COLOR_PRINT_ID = 0; -static const Slic3r::Vec3f DEFAULT_START_POSITION = Slic3r::Vec3f::Zero(); -static const float DEFAULT_START_EXTRUSION = 0.0f; -static const float DEFAULT_FAN_SPEED = 0.0f; - -namespace Slic3r { - -const std::string GCodeAnalyzer::Extrusion_Role_Tag = "_ANALYZER_EXTR_ROLE:"; -const std::string GCodeAnalyzer::Mm3_Per_Mm_Tag = "_ANALYZER_MM3_PER_MM:"; -const std::string GCodeAnalyzer::Width_Tag = "_ANALYZER_WIDTH:"; -const std::string GCodeAnalyzer::Height_Tag = "_ANALYZER_HEIGHT:"; -const std::string GCodeAnalyzer::Color_Change_Tag = "_ANALYZER_COLOR_CHANGE"; -const std::string GCodeAnalyzer::Pause_Print_Tag = "_ANALYZER_PAUSE_PRINT"; -const std::string GCodeAnalyzer::Custom_Code_Tag = "_ANALYZER_CUSTOM_CODE"; -const std::string GCodeAnalyzer::End_Pause_Print_Or_Custom_Code_Tag = "_ANALYZER_END_PAUSE_PRINT_OR_CUSTOM_CODE"; - -const float GCodeAnalyzer::Default_mm3_per_mm = 0.0f; -const float GCodeAnalyzer::Default_Width = 0.0f; -const float GCodeAnalyzer::Default_Height = 0.0f; - -GCodeAnalyzer::Metadata::Metadata() - : extrusion_role(erNone) - , extruder_id(DEFAULT_EXTRUDER_ID) - , mm3_per_mm(GCodeAnalyzer::Default_mm3_per_mm) - , width(GCodeAnalyzer::Default_Width) - , height(GCodeAnalyzer::Default_Height) - , feedrate(DEFAULT_FEEDRATE) - , fan_speed(DEFAULT_FAN_SPEED) - , cp_color_id(DEFAULT_COLOR_PRINT_ID) -{ -} - -GCodeAnalyzer::Metadata::Metadata(ExtrusionRole extrusion_role, unsigned int extruder_id, float mm3_per_mm, float width, float height, float feedrate, float fan_speed, unsigned int cp_color_id/* = 0*/) - : extrusion_role(extrusion_role) - , extruder_id(extruder_id) - , mm3_per_mm(mm3_per_mm) - , width(width) - , height(height) - , feedrate(feedrate) - , fan_speed(fan_speed) - , cp_color_id(cp_color_id) -{ -} - -bool GCodeAnalyzer::Metadata::operator != (const GCodeAnalyzer::Metadata& other) const -{ - if (extrusion_role != other.extrusion_role) - return true; - - if (extruder_id != other.extruder_id) - return true; - - if (mm3_per_mm != other.mm3_per_mm) - return true; - - if (width != other.width) - return true; - - if (height != other.height) - return true; - - if (feedrate != other.feedrate) - return true; - - if (fan_speed != other.fan_speed) - return true; - - if (cp_color_id != other.cp_color_id) - return true; - - return false; -} - -GCodeAnalyzer::GCodeMove::GCodeMove(GCodeMove::EType type, ExtrusionRole extrusion_role, unsigned int extruder_id, float mm3_per_mm, float width, float height, float feedrate, const Vec3f& start_position, const Vec3f& end_position, float delta_extruder, float fan_speed, unsigned int cp_color_id/* = 0*/) - : type(type) - , data(extrusion_role, extruder_id, mm3_per_mm, width, height, feedrate, fan_speed, cp_color_id) - , start_position(start_position) - , end_position(end_position) - , delta_extruder(delta_extruder) -{ -} - -GCodeAnalyzer::GCodeMove::GCodeMove(GCodeMove::EType type, const GCodeAnalyzer::Metadata& data, const Vec3f& start_position, const Vec3f& end_position, float delta_extruder) - : type(type) - , data(data) - , start_position(start_position) - , end_position(end_position) - , delta_extruder(delta_extruder) -{ -} - -void GCodeAnalyzer::set_extruders_count(unsigned int count) -{ - m_extruders_count = count; - for (unsigned int i=0; i_process_gcode_line(reader, line); }); - - return m_process_output; -} - -void GCodeAnalyzer::calc_gcode_preview_data(GCodePreviewData& preview_data, std::function cancel_callback) -{ - // resets preview data - preview_data.reset(); - - // calculates extrusion layers - _calc_gcode_preview_extrusion_layers(preview_data, cancel_callback); - - // calculates travel - _calc_gcode_preview_travel(preview_data, cancel_callback); - - // calculates retractions - _calc_gcode_preview_retractions(preview_data, cancel_callback); - - // calculates unretractions - _calc_gcode_preview_unretractions(preview_data, cancel_callback); -} - -bool GCodeAnalyzer::is_valid_extrusion_role(ExtrusionRole role) -{ - return ((erPerimeter <= role) && (role < erMixed)); -} - -void GCodeAnalyzer::_process_gcode_line(GCodeReader&, const GCodeReader::GCodeLine& line) -{ - // processes 'special' comments contained in line - if (_process_tags(line)) - { -#if 0 - // DEBUG ONLY: puts the line back into the gcode - m_process_output += line.raw() + "\n"; -#endif - return; - } - - // sets new start position/extrusion - _set_start_position(_get_end_position()); - _set_start_extrusion(_get_axis_position(E)); - - // processes 'normal' gcode lines - std::string cmd = line.cmd(); - if (cmd.length() > 1) - { - switch (::toupper(cmd[0])) - { - case 'G': - { - switch (::atoi(&cmd[1])) - { - case 1: // Move - { - _processG1(line); - break; - } - case 10: // Retract - { - _processG10(line); - break; - } - case 11: // Unretract - { - _processG11(line); - break; - } - case 22: // Firmware controlled Retract - { - _processG22(line); - break; - } - case 23: // Firmware controlled Unretract - { - _processG23(line); - break; - } - case 90: // Set to Absolute Positioning - { - _processG90(line); - break; - } - case 91: // Set to Relative Positioning - { - _processG91(line); - break; - } - case 92: // Set Position - { - _processG92(line); - break; - } - } - - break; - } - case 'M': - { - switch (::atoi(&cmd[1])) - { - case 82: // Set extruder to absolute mode - { - _processM82(line); - break; - } - case 83: // Set extruder to relative mode - { - _processM83(line); - break; - } - case 106: // Set fan speed - { - _processM106(line); - break; - } - case 107: // Disable fan - { - _processM107(line); - break; - } - case 108: - case 135: - { - // these are used by MakerWare and Sailfish firmwares - // for tool changing - we can process it in one place - _processM108orM135(line); - break; - } - case 132: // Recall stored home offsets - { - _processM132(line); - break; - } - case 401: // Repetier: Store x, y and z position - { - _processM401(line); - break; - } - case 402: // Repetier: Go to stored position - { - _processM402(line); - break; - } - } - - break; - } - case 'T': // Select Tools - { - _processT(line); - break; - } - } - } - - // puts the line back into the gcode - m_process_output += line.raw() + "\n"; -} - -void GCodeAnalyzer::_processG1(const GCodeReader::GCodeLine& line) -{ - auto axis_absolute_position = [this](GCodeAnalyzer::EAxis axis, const GCodeReader::GCodeLine& lineG1) -> float - { - bool is_relative = (_get_global_positioning_type() == Relative); - if (axis == E) - is_relative |= (_get_e_local_positioning_type() == Relative); - - if (lineG1.has(Slic3r::Axis(axis))) - { - float lengthsScaleFactor = (_get_units() == GCodeAnalyzer::Inches) ? INCHES_TO_MM : 1.0f; - float ret = lineG1.value(Slic3r::Axis(axis)) * lengthsScaleFactor; - return is_relative ? _get_axis_position(axis) + ret : _get_axis_origin(axis) + ret; - } - else - return _get_axis_position(axis); - }; - - // updates axes positions from line - - float new_pos[Num_Axis]; - for (unsigned char a = X; a < Num_Axis; ++a) - { - new_pos[a] = axis_absolute_position((EAxis)a, line); - } - - // updates feedrate from line, if present - if (line.has_f()) - _set_feedrate(line.f() * MMMIN_TO_MMSEC); - - // calculates movement deltas - float delta_pos[Num_Axis]; - for (unsigned char a = X; a < Num_Axis; ++a) - { - delta_pos[a] = new_pos[a] - _get_axis_position((EAxis)a); - } - - // Detects move type - GCodeMove::EType type = GCodeMove::Noop; - - if (delta_pos[E] < 0.0f) - { - if ((delta_pos[X] != 0.0f) || (delta_pos[Y] != 0.0f) || (delta_pos[Z] != 0.0f)) - type = GCodeMove::Move; - else - type = GCodeMove::Retract; - } - else if (delta_pos[E] > 0.0f) - { - if ((delta_pos[X] == 0.0f) && (delta_pos[Y] == 0.0f) && (delta_pos[Z] == 0.0f)) - type = GCodeMove::Unretract; - else if ((delta_pos[X] != 0.0f) || (delta_pos[Y] != 0.0f)) - type = GCodeMove::Extrude; - } - else if ((delta_pos[X] != 0.0f) || (delta_pos[Y] != 0.0f) || (delta_pos[Z] != 0.0f)) - type = GCodeMove::Move; - - ExtrusionRole role = _get_extrusion_role(); - if ((type == GCodeMove::Extrude) && ((_get_width() == 0.0f) || (_get_height() == 0.0f) || !is_valid_extrusion_role(role))) - type = GCodeMove::Move; - - // updates axis positions - for (unsigned char a = X; a < Num_Axis; ++a) - { - _set_axis_position((EAxis)a, new_pos[a]); - } - - // stores the move - if (type != GCodeMove::Noop) - _store_move(type); -} - -void GCodeAnalyzer::_processG10(const GCodeReader::GCodeLine& line) -{ - // stores retract move - _store_move(GCodeMove::Retract); -} - -void GCodeAnalyzer::_processG11(const GCodeReader::GCodeLine& line) -{ - // stores unretract move - _store_move(GCodeMove::Unretract); -} - -void GCodeAnalyzer::_processG22(const GCodeReader::GCodeLine& line) -{ - // stores retract move - _store_move(GCodeMove::Retract); -} - -void GCodeAnalyzer::_processG23(const GCodeReader::GCodeLine& line) -{ - // stores unretract move - _store_move(GCodeMove::Unretract); -} - -void GCodeAnalyzer::_processG90(const GCodeReader::GCodeLine& line) -{ - _set_global_positioning_type(Absolute); -} - -void GCodeAnalyzer::_processG91(const GCodeReader::GCodeLine& line) -{ - _set_global_positioning_type(Relative); -} - -void GCodeAnalyzer::_processG92(const GCodeReader::GCodeLine& line) -{ - float lengthsScaleFactor = (_get_units() == Inches) ? INCHES_TO_MM : 1.0f; - bool anyFound = false; - - if (line.has_x()) - { - _set_axis_origin(X, _get_axis_position(X) - line.x() * lengthsScaleFactor); - anyFound = true; - } - - if (line.has_y()) - { - _set_axis_origin(Y, _get_axis_position(Y) - line.y() * lengthsScaleFactor); - anyFound = true; - } - - if (line.has_z()) - { - _set_axis_origin(Z, _get_axis_position(Z) - line.z() * lengthsScaleFactor); - anyFound = true; - } - - if (line.has_e()) - { - // extruder coordinate can grow to the point where its float representation does not allow for proper addition with small increments, - // we set the value taken from the G92 line as the new current position for it - _set_axis_position(E, line.e() * lengthsScaleFactor); - anyFound = true; - } - - if (!anyFound && ! line.has_unknown_axis()) - { - // The G92 may be called for axes that PrusaSlicer does not recognize, for example see GH issue #3510, - // where G92 A0 B0 is called although the extruder axis is till E. - for (unsigned char a = X; a < Num_Axis; ++a) - { - _set_axis_origin((EAxis)a, _get_axis_position((EAxis)a)); - } - } -} - -void GCodeAnalyzer::_processM82(const GCodeReader::GCodeLine& line) -{ - _set_e_local_positioning_type(Absolute); -} - -void GCodeAnalyzer::_processM83(const GCodeReader::GCodeLine& line) -{ - _set_e_local_positioning_type(Relative); -} - -void GCodeAnalyzer::_processM106(const GCodeReader::GCodeLine& line) -{ - if (!line.has('P')) - { - // The absence of P means the print cooling fan, so ignore anything else. - float new_fan_speed; - if (line.has_value('S', new_fan_speed)) - _set_fan_speed((100.0f / 255.0f) * new_fan_speed); - else - _set_fan_speed(100.0f); - } -} - -void GCodeAnalyzer::_processM107(const GCodeReader::GCodeLine& line) -{ - _set_fan_speed(0.0f); -} - -void GCodeAnalyzer::_processM108orM135(const GCodeReader::GCodeLine& line) -{ - // These M-codes are used by MakerWare and Sailfish to change active tool. - // They have to be processed otherwise toolchanges will be unrecognised - // by the analyzer - see https://github.com/prusa3d/PrusaSlicer/issues/2566 - - size_t code = ::atoi(&(line.cmd()[1])); - if ((code == 108 && m_gcode_flavor == gcfSailfish) - || (code == 135 && m_gcode_flavor == gcfMakerWare)) { - - std::string cmd = line.raw(); - size_t T_pos = cmd.find("T"); - if (T_pos != std::string::npos) { - cmd = cmd.substr(T_pos); - _processT(cmd); - } - } -} - -void GCodeAnalyzer::_processM132(const GCodeReader::GCodeLine& line) -{ - // This command is used by Makerbot to load the current home position from EEPROM - // see: https://github.com/makerbot/s3g/blob/master/doc/GCodeProtocol.md - // Using this command to reset the axis origin to zero helps in fixing: https://github.com/prusa3d/PrusaSlicer/issues/3082 - - if (line.has_x()) - _set_axis_origin(X, 0.0f); - - if (line.has_y()) - _set_axis_origin(Y, 0.0f); - - if (line.has_z()) - _set_axis_origin(Z, 0.0f); - - if (line.has_e()) - _set_axis_origin(E, 0.0f); -} - -void GCodeAnalyzer::_processM401(const GCodeReader::GCodeLine& line) -{ - if (m_gcode_flavor != gcfRepetier) - return; - - for (unsigned char a = 0; a <= 3; ++a) - { - _set_cached_position(a, _get_axis_position((EAxis)a)); - } - _set_cached_position(4, _get_feedrate()); -} - -void GCodeAnalyzer::_processM402(const GCodeReader::GCodeLine& line) -{ - if (m_gcode_flavor != gcfRepetier) - return; - - // see for reference: - // https://github.com/repetier/Repetier-Firmware/blob/master/src/ArduinoAVR/Repetier/Printer.cpp - // void Printer::GoToMemoryPosition(bool x, bool y, bool z, bool e, float feed) - - bool has_xyz = !(line.has_x() || line.has_y() || line.has_z()); - - float p = FLT_MAX; - for (unsigned char a = X; a <= Z; ++a) - { - if (has_xyz || line.has(a)) - { - p = _get_cached_position(a); - if (p != FLT_MAX) - _set_axis_position((EAxis)a, p); - } - } - - p = _get_cached_position(E); - if (p != FLT_MAX) - _set_axis_position(E, p); - - p = FLT_MAX; - if (!line.has_value(4, p)) - p = _get_cached_position(4); - - if (p != FLT_MAX) - _set_feedrate(p); -} - -void GCodeAnalyzer::_reset_cached_position() -{ - for (unsigned char a = 0; a <= 4; ++a) - { - m_state.cached_position[a] = FLT_MAX; - } -} - -void GCodeAnalyzer::_processT(const std::string& cmd) -{ - if (cmd.length() > 1) - { - unsigned int id = (unsigned int)::strtol(cmd.substr(1).c_str(), nullptr, 10); - if (_get_extruder_id() != id) - { - if (id >= m_extruders_count) - { - if (m_extruders_count > 1) - BOOST_LOG_TRIVIAL(error) << "GCodeAnalyzer encountered an invalid toolchange, maybe from a custom gcode."; - } - else - { - _set_extruder_id(id); - if (_get_cp_color_id() != INT_MAX) - _set_cp_color_id(m_extruder_color[id]); - } - - // stores tool change move - _store_move(GCodeMove::Tool_change); - } - } -} - -void GCodeAnalyzer::_processT(const GCodeReader::GCodeLine& line) -{ - _processT(line.cmd()); -} - -bool GCodeAnalyzer::_process_tags(const GCodeReader::GCodeLine& line) -{ - std::string comment = line.comment(); - - // extrusion role tag - size_t pos = comment.find(Extrusion_Role_Tag); - if (pos != comment.npos) - { - _process_extrusion_role_tag(comment, pos); - return true; - } - - // mm3 per mm tag - pos = comment.find(Mm3_Per_Mm_Tag); - if (pos != comment.npos) - { - _process_mm3_per_mm_tag(comment, pos); - return true; - } - - // width tag - pos = comment.find(Width_Tag); - if (pos != comment.npos) - { - _process_width_tag(comment, pos); - return true; - } - - // height tag - pos = comment.find(Height_Tag); - if (pos != comment.npos) - { - _process_height_tag(comment, pos); - return true; - } - - // color change tag - pos = comment.find(Color_Change_Tag); - if (pos != comment.npos) - { - pos = comment.find_last_of(",T"); - unsigned extruder = pos == comment.npos ? 0 : std::stoi(comment.substr(pos + 1, comment.npos)); - _process_color_change_tag(extruder); - return true; - } - - // pause print tag - pos = comment.find(Pause_Print_Tag); - if (pos != comment.npos) - { - _process_pause_print_or_custom_code_tag(); - return true; - } - - // custom code tag - pos = comment.find(Custom_Code_Tag); - if (pos != comment.npos) - { - _process_pause_print_or_custom_code_tag(); - return true; - } - - // end pause print or custom code tag - pos = comment.find(End_Pause_Print_Or_Custom_Code_Tag); - if (pos != comment.npos) - { - _process_end_pause_print_or_custom_code_tag(); - return true; - } - - return false; -} - -void GCodeAnalyzer::_process_extrusion_role_tag(const std::string& comment, size_t pos) -{ - int role = (int)::strtol(comment.substr(pos + Extrusion_Role_Tag.length()).c_str(), nullptr, 10); - if (_is_valid_extrusion_role(role)) - _set_extrusion_role((ExtrusionRole)role); - else - { - // todo: show some error ? - } -} - -void GCodeAnalyzer::_process_mm3_per_mm_tag(const std::string& comment, size_t pos) -{ - _set_mm3_per_mm((float)::strtod(comment.substr(pos + Mm3_Per_Mm_Tag.length()).c_str(), nullptr)); -} - -void GCodeAnalyzer::_process_width_tag(const std::string& comment, size_t pos) -{ - _set_width((float)::strtod(comment.substr(pos + Width_Tag.length()).c_str(), nullptr)); -} - -void GCodeAnalyzer::_process_height_tag(const std::string& comment, size_t pos) -{ - _set_height((float)::strtod(comment.substr(pos + Height_Tag.length()).c_str(), nullptr)); -} - -void GCodeAnalyzer::_process_color_change_tag(unsigned extruder) -{ - m_extruder_color[extruder] = m_extruders_count + m_state.cp_color_counter; // color_change position in list of color for preview - m_state.cp_color_counter++; - - if (_get_extruder_id() == extruder) - _set_cp_color_id(m_extruder_color[extruder]); -} - -void GCodeAnalyzer::_process_pause_print_or_custom_code_tag() -{ - _set_cp_color_id(INT_MAX); -} - -void GCodeAnalyzer::_process_end_pause_print_or_custom_code_tag() -{ - if (_get_cp_color_id() == INT_MAX) - _set_cp_color_id(m_extruder_color[_get_extruder_id()]); -} - -void GCodeAnalyzer::_set_units(GCodeAnalyzer::EUnits units) -{ - m_state.units = units; -} - -GCodeAnalyzer::EUnits GCodeAnalyzer::_get_units() const -{ - return m_state.units; -} - -void GCodeAnalyzer::_set_global_positioning_type(GCodeAnalyzer::EPositioningType type) -{ - m_state.global_positioning_type = type; -} - -GCodeAnalyzer::EPositioningType GCodeAnalyzer::_get_global_positioning_type() const -{ - return m_state.global_positioning_type; -} - -void GCodeAnalyzer::_set_e_local_positioning_type(GCodeAnalyzer::EPositioningType type) -{ - m_state.e_local_positioning_type = type; -} - -GCodeAnalyzer::EPositioningType GCodeAnalyzer::_get_e_local_positioning_type() const -{ - return m_state.e_local_positioning_type; -} - -void GCodeAnalyzer::_set_extrusion_role(ExtrusionRole extrusion_role) -{ - m_state.data.extrusion_role = extrusion_role; -} - -ExtrusionRole GCodeAnalyzer::_get_extrusion_role() const -{ - return m_state.data.extrusion_role; -} - -void GCodeAnalyzer::_set_extruder_id(unsigned int id) -{ - m_state.data.extruder_id = id; -} - -unsigned int GCodeAnalyzer::_get_extruder_id() const -{ - return m_state.data.extruder_id; -} - -void GCodeAnalyzer::_set_cp_color_id(unsigned int id) -{ - m_state.data.cp_color_id = id; -} - -unsigned int GCodeAnalyzer::_get_cp_color_id() const -{ - return m_state.data.cp_color_id; -} - -void GCodeAnalyzer::_set_mm3_per_mm(float value) -{ - m_state.data.mm3_per_mm = value; -} - -float GCodeAnalyzer::_get_mm3_per_mm() const -{ - return m_state.data.mm3_per_mm; -} - -void GCodeAnalyzer::_set_width(float width) -{ - m_state.data.width = width; -} - -float GCodeAnalyzer::_get_width() const -{ - return m_state.data.width; -} - -void GCodeAnalyzer::_set_height(float height) -{ - m_state.data.height = height; -} - -float GCodeAnalyzer::_get_height() const -{ - return m_state.data.height; -} - -void GCodeAnalyzer::_set_feedrate(float feedrate_mm_sec) -{ - m_state.data.feedrate = feedrate_mm_sec; -} - -float GCodeAnalyzer::_get_feedrate() const -{ - return m_state.data.feedrate; -} - -void GCodeAnalyzer::_set_fan_speed(float fan_speed_percentage) -{ - m_state.data.fan_speed = fan_speed_percentage; -} - -float GCodeAnalyzer::_get_fan_speed() const -{ - return m_state.data.fan_speed; -} - -void GCodeAnalyzer::_set_axis_position(EAxis axis, float position) -{ - m_state.position[axis] = position; -} - -float GCodeAnalyzer::_get_axis_position(EAxis axis) const -{ - return m_state.position[axis]; -} - -void GCodeAnalyzer::_set_axis_origin(EAxis axis, float position) -{ - m_state.origin[axis] = position; -} - -float GCodeAnalyzer::_get_axis_origin(EAxis axis) const -{ - return m_state.origin[axis]; -} - -void GCodeAnalyzer::_reset_axes_position() -{ - ::memset((void*)m_state.position, 0, Num_Axis * sizeof(float)); -} - -void GCodeAnalyzer::_reset_axes_origin() -{ - ::memset((void*)m_state.origin, 0, Num_Axis * sizeof(float)); -} - -void GCodeAnalyzer::_set_start_position(const Vec3f& position) -{ - m_state.start_position = position; -} - -const Vec3f& GCodeAnalyzer::_get_start_position() const -{ - return m_state.start_position; -} - -void GCodeAnalyzer::_set_cached_position(unsigned char axis, float position) -{ - if ((0 <= axis) || (axis <= 4)) - m_state.cached_position[axis] = position; -} - -float GCodeAnalyzer::_get_cached_position(unsigned char axis) const -{ - return ((0 <= axis) || (axis <= 4)) ? m_state.cached_position[axis] : FLT_MAX; -} - -void GCodeAnalyzer::_set_start_extrusion(float extrusion) -{ - m_state.start_extrusion = extrusion; -} - -float GCodeAnalyzer::_get_start_extrusion() const -{ - return m_state.start_extrusion; -} - -float GCodeAnalyzer::_get_delta_extrusion() const -{ - return _get_axis_position(E) - m_state.start_extrusion; -} - -Vec3f GCodeAnalyzer::_get_end_position() const -{ - return Vec3f(m_state.position[X], m_state.position[Y], m_state.position[Z]); -} - -void GCodeAnalyzer::_store_move(GCodeAnalyzer::GCodeMove::EType type) -{ - // if type non mapped yet, map it - TypeToMovesMap::iterator it = m_moves_map.find(type); - if (it == m_moves_map.end()) - it = m_moves_map.insert(TypeToMovesMap::value_type(type, GCodeMovesList())).first; - - // store move - Vec3f extruder_offset = Vec3f::Zero(); - unsigned int extruder_id = _get_extruder_id(); - ExtruderOffsetsMap::iterator extr_it = m_extruder_offsets.find(extruder_id); - if (extr_it != m_extruder_offsets.end()) - extruder_offset = Vec3f((float)extr_it->second(0), (float)extr_it->second(1), 0.0f); - - Vec3f start_position = _get_start_position() + extruder_offset; - Vec3f end_position = _get_end_position() + extruder_offset; - it->second.emplace_back(type, _get_extrusion_role(), extruder_id, _get_mm3_per_mm(), _get_width(), _get_height(), _get_feedrate(), start_position, end_position, _get_delta_extrusion(), _get_fan_speed(), _get_cp_color_id()); -} - -bool GCodeAnalyzer::_is_valid_extrusion_role(int value) const -{ - return ((int)erNone <= value) && (value <= (int)erMixed); -} - -void GCodeAnalyzer::_calc_gcode_preview_extrusion_layers(GCodePreviewData& preview_data, std::function cancel_callback) -{ - struct Helper - { - static GCodePreviewData::Extrusion::Layer& get_layer_at_z(GCodePreviewData::Extrusion::LayersList& layers, float z) - { - //FIXME this has a terrible time complexity - for (GCodePreviewData::Extrusion::Layer& layer : layers) - { - // if layer found, return it - if (layer.z == z) - return layer; - } - - // if layer not found, create and return it - layers.emplace_back(z, GCodePreviewData::Extrusion::Paths()); - return layers.back(); - } - - static void store_polyline(const Polyline& polyline, const Metadata& data, float z, GCodePreviewData& preview_data) - { - // if the polyline is valid, create the extrusion path from it and store it - if (polyline.is_valid()) - { - auto& paths = get_layer_at_z(preview_data.extrusion.layers, z).paths; - paths.emplace_back(GCodePreviewData::Extrusion::Path()); - GCodePreviewData::Extrusion::Path &path = paths.back(); - path.polyline = polyline; - path.extrusion_role = data.extrusion_role; - path.mm3_per_mm = data.mm3_per_mm; - path.width = data.width; - path.height = data.height; - path.feedrate = data.feedrate; - path.extruder_id = data.extruder_id; - path.cp_color_id = data.cp_color_id; - path.fan_speed = data.fan_speed; - } - } - }; - - TypeToMovesMap::iterator extrude_moves = m_moves_map.find(GCodeMove::Extrude); - if (extrude_moves == m_moves_map.end()) - return; - - Metadata data; - float z = FLT_MAX; - Polyline polyline; - Vec3f position(FLT_MAX, FLT_MAX, FLT_MAX); - float volumetric_rate = FLT_MAX; - GCodePreviewData::Range height_range; - GCodePreviewData::Range width_range; - GCodePreviewData::MultiRange feedrate_range; - GCodePreviewData::Range volumetric_rate_range; - GCodePreviewData::Range fan_speed_range; - - // to avoid to call the callback too often - unsigned int cancel_callback_threshold = (unsigned int)std::max((int)extrude_moves->second.size() / 25, 1); - unsigned int cancel_callback_curr = 0; - - // constructs the polylines while traversing the moves - for (const GCodeMove& move : extrude_moves->second) - { - // to avoid to call the callback too often - cancel_callback_curr = (cancel_callback_curr + 1) % cancel_callback_threshold; - if (cancel_callback_curr == 0) - cancel_callback(); - - if ((data != move.data) || (z != move.start_position.z()) || (position != move.start_position) || (volumetric_rate != move.data.feedrate * move.data.mm3_per_mm)) - { - // store current polyline - polyline.remove_duplicate_points(); - Helper::store_polyline(polyline, data, z, preview_data); - - // reset current polyline - polyline = Polyline(); - - // add both vertices of the move - polyline.append(Point(scale_(move.start_position.x()), scale_(move.start_position.y()))); - polyline.append(Point(scale_(move.end_position.x()), scale_(move.end_position.y()))); - - // update current values - data = move.data; - z = (float)move.start_position.z(); - volumetric_rate = move.data.feedrate * move.data.mm3_per_mm; - height_range.update_from(move.data.height); - width_range.update_from(move.data.width); - feedrate_range.update_from(move.data.feedrate, GCodePreviewData::FeedrateKind::EXTRUSION); - volumetric_rate_range.update_from(volumetric_rate); - fan_speed_range.update_from(move.data.fan_speed); - } - else - // append end vertex of the move to current polyline - polyline.append(Point(scale_(move.end_position.x()), scale_(move.end_position.y()))); - - // update current values - position = move.end_position; - } - - // store last polyline - polyline.remove_duplicate_points(); - Helper::store_polyline(polyline, data, z, preview_data); - - // updates preview ranges data - preview_data.ranges.height.update_from(height_range); - preview_data.ranges.width.update_from(width_range); - preview_data.ranges.feedrate.update_from(feedrate_range); - preview_data.ranges.volumetric_rate.update_from(volumetric_rate_range); - preview_data.ranges.fan_speed.update_from(fan_speed_range); - - // we need to sort the layers by their z as they can be shuffled in case of sequential prints - std::sort(preview_data.extrusion.layers.begin(), preview_data.extrusion.layers.end(), [](const GCodePreviewData::Extrusion::Layer& l1, const GCodePreviewData::Extrusion::Layer& l2)->bool { return l1.z < l2.z; }); -} - -void GCodeAnalyzer::_calc_gcode_preview_travel(GCodePreviewData& preview_data, std::function cancel_callback) -{ - struct Helper - { - static void store_polyline(const Polyline3& polyline, GCodePreviewData::Travel::EType type, GCodePreviewData::Travel::Polyline::EDirection direction, - float feedrate, unsigned int extruder_id, GCodePreviewData& preview_data) - { - // if the polyline is valid, store it - if (polyline.is_valid()) - preview_data.travel.polylines.emplace_back(type, direction, feedrate, extruder_id, polyline); - } - }; - - TypeToMovesMap::iterator travel_moves = m_moves_map.find(GCodeMove::Move); - if (travel_moves == m_moves_map.end()) - return; - - Polyline3 polyline; - Vec3f position(FLT_MAX, FLT_MAX, FLT_MAX); - GCodePreviewData::Travel::EType type = GCodePreviewData::Travel::Num_Types; - GCodePreviewData::Travel::Polyline::EDirection direction = GCodePreviewData::Travel::Polyline::Num_Directions; - float feedrate = FLT_MAX; - unsigned int extruder_id = -1; - - GCodePreviewData::Range height_range; - GCodePreviewData::Range width_range; - GCodePreviewData::MultiRange feedrate_range; - - // to avoid to call the callback too often - unsigned int cancel_callback_threshold = (unsigned int)std::max((int)travel_moves->second.size() / 25, 1); - unsigned int cancel_callback_curr = 0; - - // constructs the polylines while traversing the moves - for (const GCodeMove& move : travel_moves->second) - { - cancel_callback_curr = (cancel_callback_curr + 1) % cancel_callback_threshold; - if (cancel_callback_curr == 0) - cancel_callback(); - - GCodePreviewData::Travel::EType move_type = (move.delta_extruder < 0.0f) ? GCodePreviewData::Travel::Retract : ((move.delta_extruder > 0.0f) ? GCodePreviewData::Travel::Extrude : GCodePreviewData::Travel::Move); - GCodePreviewData::Travel::Polyline::EDirection move_direction = ((move.start_position.x() != move.end_position.x()) || (move.start_position.y() != move.end_position.y())) ? GCodePreviewData::Travel::Polyline::Generic : GCodePreviewData::Travel::Polyline::Vertical; - - if ((type != move_type) || (direction != move_direction) || (feedrate != move.data.feedrate) || (position != move.start_position) || (extruder_id != move.data.extruder_id)) - { - // store current polyline - polyline.remove_duplicate_points(); - Helper::store_polyline(polyline, type, direction, feedrate, extruder_id, preview_data); - - // reset current polyline - polyline = Polyline3(); - - // add both vertices of the move - polyline.append(Vec3crd((int)scale_(move.start_position.x()), (int)scale_(move.start_position.y()), (int)scale_(move.start_position.z()))); - polyline.append(Vec3crd((int)scale_(move.end_position.x()), (int)scale_(move.end_position.y()), (int)scale_(move.end_position.z()))); - } - else - // append end vertex of the move to current polyline - polyline.append(Vec3crd((int)scale_(move.end_position.x()), (int)scale_(move.end_position.y()), (int)scale_(move.end_position.z()))); - - // update current values - position = move.end_position; - type = move_type; - feedrate = move.data.feedrate; - extruder_id = move.data.extruder_id; - height_range.update_from(move.data.height); - width_range.update_from(move.data.width); - feedrate_range.update_from(move.data.feedrate, GCodePreviewData::FeedrateKind::TRAVEL); - } - - // store last polyline - polyline.remove_duplicate_points(); - Helper::store_polyline(polyline, type, direction, feedrate, extruder_id, preview_data); - - // updates preview ranges data - preview_data.ranges.height.update_from(height_range); - preview_data.ranges.width.update_from(width_range); - preview_data.ranges.feedrate.update_from(feedrate_range); - - // we need to sort the polylines by their min z as they can be shuffled in case of sequential prints - std::sort(preview_data.travel.polylines.begin(), preview_data.travel.polylines.end(), - [](const GCodePreviewData::Travel::Polyline& p1, const GCodePreviewData::Travel::Polyline& p2)->bool - { return unscale(p1.polyline.bounding_box().min(2)) < unscale(p2.polyline.bounding_box().min(2)); }); -} - -void GCodeAnalyzer::_calc_gcode_preview_retractions(GCodePreviewData& preview_data, std::function cancel_callback) -{ - TypeToMovesMap::iterator retraction_moves = m_moves_map.find(GCodeMove::Retract); - if (retraction_moves == m_moves_map.end()) - return; - - // to avoid to call the callback too often - unsigned int cancel_callback_threshold = (unsigned int)std::max((int)retraction_moves->second.size() / 25, 1); - unsigned int cancel_callback_curr = 0; - - for (const GCodeMove& move : retraction_moves->second) - { - cancel_callback_curr = (cancel_callback_curr + 1) % cancel_callback_threshold; - if (cancel_callback_curr == 0) - cancel_callback(); - - // store position - Vec3crd position((int)scale_(move.start_position.x()), (int)scale_(move.start_position.y()), (int)scale_(move.start_position.z())); - preview_data.retraction.positions.emplace_back(position, move.data.width, move.data.height); - } - - // we need to sort the positions by their z as they can be shuffled in case of sequential prints - std::sort(preview_data.retraction.positions.begin(), preview_data.retraction.positions.end(), - [](const GCodePreviewData::Retraction::Position& p1, const GCodePreviewData::Retraction::Position& p2)->bool - { return unscale(p1.position(2)) < unscale(p2.position(2)); }); -} - -void GCodeAnalyzer::_calc_gcode_preview_unretractions(GCodePreviewData& preview_data, std::function cancel_callback) -{ - TypeToMovesMap::iterator unretraction_moves = m_moves_map.find(GCodeMove::Unretract); - if (unretraction_moves == m_moves_map.end()) - return; - - // to avoid to call the callback too often - unsigned int cancel_callback_threshold = (unsigned int)std::max((int)unretraction_moves->second.size() / 25, 1); - unsigned int cancel_callback_curr = 0; - - for (const GCodeMove& move : unretraction_moves->second) - { - cancel_callback_curr = (cancel_callback_curr + 1) % cancel_callback_threshold; - if (cancel_callback_curr == 0) - cancel_callback(); - - // store position - Vec3crd position((int)scale_(move.start_position.x()), (int)scale_(move.start_position.y()), (int)scale_(move.start_position.z())); - preview_data.unretraction.positions.emplace_back(position, move.data.width, move.data.height); - } - - // we need to sort the positions by their z as they can be shuffled in case of sequential prints - std::sort(preview_data.unretraction.positions.begin(), preview_data.unretraction.positions.end(), - [](const GCodePreviewData::Retraction::Position& p1, const GCodePreviewData::Retraction::Position& p2)->bool - { return unscale(p1.position(2)) < unscale(p2.position(2)); }); -} - -// Return an estimate of the memory consumed by the time estimator. -size_t GCodeAnalyzer::memory_used() const -{ - size_t out = sizeof(*this); - for (const std::pair &kvp : m_moves_map) - out += sizeof(kvp) + SLIC3R_STDVEC_MEMSIZE(kvp.second, GCodeMove); - out += m_process_output.size(); - return out; -} - -} // namespace Slic3r - -#endif // !ENABLE_GCODE_VIEWER diff --git a/src/libslic3r/GCode/Analyzer.hpp b/src/libslic3r/GCode/Analyzer.hpp deleted file mode 100644 index 37d9072592..0000000000 --- a/src/libslic3r/GCode/Analyzer.hpp +++ /dev/null @@ -1,309 +0,0 @@ -#ifndef slic3r_GCode_Analyzer_hpp_ -#define slic3r_GCode_Analyzer_hpp_ - -#if !ENABLE_GCODE_VIEWER - -#include "../libslic3r.h" -#include "../PrintConfig.hpp" -#include "../ExtrusionEntity.hpp" - -#include "../Point.hpp" -#include "../GCodeReader.hpp" - -namespace Slic3r { - -class GCodePreviewData; - -class GCodeAnalyzer -{ -public: - static const std::string Extrusion_Role_Tag; - static const std::string Mm3_Per_Mm_Tag; - static const std::string Width_Tag; - static const std::string Height_Tag; - static const std::string Color_Change_Tag; - static const std::string Pause_Print_Tag; - static const std::string Custom_Code_Tag; - static const std::string End_Pause_Print_Or_Custom_Code_Tag; - - static const float Default_mm3_per_mm; - static const float Default_Width; - static const float Default_Height; - - enum EUnits : unsigned char - { - Millimeters, - Inches - }; - - enum EAxis : unsigned char - { - X, - Y, - Z, - E, - Num_Axis - }; - - enum EPositioningType : unsigned char - { - Absolute, - Relative - }; - - struct Metadata - { - ExtrusionRole extrusion_role; - unsigned int extruder_id; - float mm3_per_mm; - float width; // mm - float height; // mm - float feedrate; // mm/s - float fan_speed; // percentage - unsigned int cp_color_id; - - Metadata(); - Metadata(ExtrusionRole extrusion_role, unsigned int extruder_id, float mm3_per_mm, float width, float height, float feedrate, float fan_speed, unsigned int cp_color_id = 0); - - bool operator != (const Metadata& other) const; - }; - - struct GCodeMove - { - enum EType : unsigned char - { - Noop, - Retract, - Unretract, - Tool_change, - Move, - Extrude, - Num_Types - }; - - EType type; - Metadata data; - Vec3f start_position; - Vec3f end_position; - float delta_extruder; - - GCodeMove(EType type, ExtrusionRole extrusion_role, unsigned int extruder_id, float mm3_per_mm, float width, float height, float feedrate, const Vec3f& start_position, const Vec3f& end_position, float delta_extruder, float fan_speed, unsigned int cp_color_id = 0); - GCodeMove(EType type, const Metadata& data, const Vec3f& start_position, const Vec3f& end_position, float delta_extruder); - }; - - typedef std::vector GCodeMovesList; - typedef std::map TypeToMovesMap; - typedef std::map ExtruderOffsetsMap; - typedef std::map ExtruderToColorMap; - -private: - struct State - { - EUnits units; - EPositioningType global_positioning_type; - EPositioningType e_local_positioning_type; - Metadata data; - Vec3f start_position = Vec3f::Zero(); - float cached_position[5]; - float start_extrusion; - float position[Num_Axis]; - float origin[Num_Axis]; - unsigned int cp_color_counter = 0; - }; - -private: - State m_state; - GCodeReader m_parser; - TypeToMovesMap m_moves_map; - ExtruderOffsetsMap m_extruder_offsets; - unsigned int m_extruders_count; - GCodeFlavor m_gcode_flavor; - - ExtruderToColorMap m_extruder_color; - - // The output of process_layer() - std::string m_process_output; - -public: - GCodeAnalyzer() { reset(); } - - void set_extruder_offsets(const ExtruderOffsetsMap& extruder_offsets) { m_extruder_offsets = extruder_offsets; } - void set_extruders_count(unsigned int count); - - void set_extrusion_axis(char axis) { m_parser.set_extrusion_axis(axis); } - - void set_gcode_flavor(const GCodeFlavor& flavor) { m_gcode_flavor = flavor; } - - // Reinitialize the analyzer - void reset(); - - // Adds the gcode contained in the given string to the analysis and returns it after removing the workcodes - const std::string& process_gcode(const std::string& gcode); - - // Calculates all data needed for gcode visualization - // throws CanceledException through print->throw_if_canceled() (sent by the caller as callback). - void calc_gcode_preview_data(GCodePreviewData& preview_data, std::function cancel_callback = std::function()); - - // Return an estimate of the memory consumed by the time estimator. - size_t memory_used() const; - - static bool is_valid_extrusion_role(ExtrusionRole role); - -private: - // Processes the given gcode line - void _process_gcode_line(GCodeReader& reader, const GCodeReader::GCodeLine& line); - - // Move - void _processG1(const GCodeReader::GCodeLine& line); - - // Retract - void _processG10(const GCodeReader::GCodeLine& line); - - // Unretract - void _processG11(const GCodeReader::GCodeLine& line); - - // Firmware controlled Retract - void _processG22(const GCodeReader::GCodeLine& line); - - // Firmware controlled Unretract - void _processG23(const GCodeReader::GCodeLine& line); - - // Set to Absolute Positioning - void _processG90(const GCodeReader::GCodeLine& line); - - // Set to Relative Positioning - void _processG91(const GCodeReader::GCodeLine& line); - - // Set Position - void _processG92(const GCodeReader::GCodeLine& line); - - // Set extruder to absolute mode - void _processM82(const GCodeReader::GCodeLine& line); - - // Set extruder to relative mode - void _processM83(const GCodeReader::GCodeLine& line); - - // Set fan speed - void _processM106(const GCodeReader::GCodeLine& line); - - // Disable fan - void _processM107(const GCodeReader::GCodeLine& line); - - // Set tool (MakerWare and Sailfish flavor) - void _processM108orM135(const GCodeReader::GCodeLine& line); - - // Recall stored home offsets - void _processM132(const GCodeReader::GCodeLine& line); - - // Repetier: Store x, y and z position - void _processM401(const GCodeReader::GCodeLine& line); - - // Repetier: Go to stored position - void _processM402(const GCodeReader::GCodeLine& line); - - // Processes T line (Select Tool) - void _processT(const std::string& command); - void _processT(const GCodeReader::GCodeLine& line); - - // Processes the tags - // Returns true if any tag has been processed - bool _process_tags(const GCodeReader::GCodeLine& line); - - // Processes extrusion role tag - void _process_extrusion_role_tag(const std::string& comment, size_t pos); - - // Processes mm3_per_mm tag - void _process_mm3_per_mm_tag(const std::string& comment, size_t pos); - - // Processes width tag - void _process_width_tag(const std::string& comment, size_t pos); - - // Processes height tag - void _process_height_tag(const std::string& comment, size_t pos); - - // Processes color change tag - void _process_color_change_tag(unsigned extruder); - - // Processes pause print and custom gcode tag - void _process_pause_print_or_custom_code_tag(); - - // Processes new layer tag - void _process_end_pause_print_or_custom_code_tag(); - - void _set_units(EUnits units); - EUnits _get_units() const; - - void _set_global_positioning_type(EPositioningType type); - EPositioningType _get_global_positioning_type() const; - - void _set_e_local_positioning_type(EPositioningType type); - EPositioningType _get_e_local_positioning_type() const; - - void _set_extrusion_role(ExtrusionRole extrusion_role); - ExtrusionRole _get_extrusion_role() const; - - void _set_extruder_id(unsigned int id); - unsigned int _get_extruder_id() const; - - void _set_cp_color_id(unsigned int id); - unsigned int _get_cp_color_id() const; - - void _set_mm3_per_mm(float value); - float _get_mm3_per_mm() const; - - void _set_width(float width); - float _get_width() const; - - void _set_height(float height); - float _get_height() const; - - void _set_feedrate(float feedrate_mm_sec); - float _get_feedrate() const; - - void _set_fan_speed(float fan_speed_percentage); - float _get_fan_speed() const; - - void _set_axis_position(EAxis axis, float position); - float _get_axis_position(EAxis axis) const; - - void _set_axis_origin(EAxis axis, float position); - float _get_axis_origin(EAxis axis) const; - - // Sets axes position to zero - void _reset_axes_position(); - // Sets origin position to zero - void _reset_axes_origin(); - - void _set_start_position(const Vec3f& position); - const Vec3f& _get_start_position() const; - - void _set_cached_position(unsigned char axis, float position); - float _get_cached_position(unsigned char axis) const; - - void _reset_cached_position(); - - void _set_start_extrusion(float extrusion); - float _get_start_extrusion() const; - float _get_delta_extrusion() const; - - // Returns current xyz position (from m_state.position[]) - Vec3f _get_end_position() const; - - // Adds a new move with the given data - void _store_move(GCodeMove::EType type); - - // Checks if the given int is a valid extrusion role (contained into enum ExtrusionRole) - bool _is_valid_extrusion_role(int value) const; - - // All the following methods throw CanceledException through print->throw_if_canceled() (sent by the caller as callback). - void _calc_gcode_preview_extrusion_layers(GCodePreviewData& preview_data, std::function cancel_callback); - void _calc_gcode_preview_travel(GCodePreviewData& preview_data, std::function cancel_callback); - void _calc_gcode_preview_retractions(GCodePreviewData& preview_data, std::function cancel_callback); - void _calc_gcode_preview_unretractions(GCodePreviewData& preview_data, std::function cancel_callback); -}; - -} // namespace Slic3r - -#endif // !ENABLE_GCODE_VIEWER - -#endif /* slic3r_GCode_Analyzer_hpp_ */ diff --git a/src/libslic3r/GCode/GCodeProcessor.cpp b/src/libslic3r/GCode/GCodeProcessor.cpp index 665316296f..4785c08984 100644 --- a/src/libslic3r/GCode/GCodeProcessor.cpp +++ b/src/libslic3r/GCode/GCodeProcessor.cpp @@ -10,7 +10,11 @@ #include #include -#if ENABLE_GCODE_VIEWER +#if __has_include() + #include + #include +#endif + #include static const float INCHES_TO_MM = 25.4f; @@ -170,7 +174,7 @@ void GCodeProcessor::TimeMachine::reset() prev.reset(); gcode_time.reset(); blocks = std::vector(); - g1_times_cache = std::vector(); + g1_times_cache = std::vector(); std::fill(moves_time.begin(), moves_time.end(), 0.0f); std::fill(roles_time.begin(), roles_time.end(), 0.0f); layers_time = std::vector(); @@ -292,7 +296,7 @@ void GCodeProcessor::TimeMachine::calculate_time(size_t keep_last_n_blocks) } layers_time[block.layer_id - 1] += block_time; } - g1_times_cache.push_back(time); + g1_times_cache.push_back({ block.g1_line_id, time }); } if (keep_last_n_blocks) @@ -358,7 +362,7 @@ void GCodeProcessor::TimeProcessor::post_process(const std::string& filename) std::string ret; - if (line == First_Line_M73_Placeholder_Tag || line == Last_Line_M73_Placeholder_Tag) { + if (export_remaining_time_enabled && (line == First_Line_M73_Placeholder_Tag || line == Last_Line_M73_Placeholder_Tag)) { for (size_t i = 0; i < static_cast(PrintEstimatedTimeStatistics::ETimeMode::Count); ++i) { const TimeMachine& machine = machines[i]; if (machine.enabled) { @@ -371,10 +375,11 @@ void GCodeProcessor::TimeProcessor::post_process(const std::string& filename) else if (line == Estimated_Printing_Time_Placeholder_Tag) { for (size_t i = 0; i < static_cast(PrintEstimatedTimeStatistics::ETimeMode::Count); ++i) { const TimeMachine& machine = machines[i]; - if (machine.enabled) { + PrintEstimatedTimeStatistics::ETimeMode mode = static_cast(i); + if (mode == PrintEstimatedTimeStatistics::ETimeMode::Normal || machine.enabled) { char buf[128]; sprintf(buf, "; estimated printing time (%s mode) = %s\n", - (static_cast(i) == PrintEstimatedTimeStatistics::ETimeMode::Normal) ? "normal" : "silent", + (mode == PrintEstimatedTimeStatistics::ETimeMode::Normal) ? "normal" : "silent", get_time_dhms(machine.time).c_str()); ret += buf; } @@ -388,24 +393,36 @@ void GCodeProcessor::TimeProcessor::post_process(const std::string& filename) auto is_temporary_decoration = [](const std::string& gcode_line) { // remove trailing '\n' std::string line = gcode_line.substr(0, gcode_line.length() - 1); - if (line == "; " + Layer_Change_Tag) + if (line == ";" + Layer_Change_Tag) return true; else return false; }; + // Iterators for the normal and silent cached time estimate entry recently processed, used by process_line_G1. + auto g1_times_cache_it = Slic3r::reserve_vector::const_iterator>(machines.size()); + for (const auto& machine : machines) + g1_times_cache_it.emplace_back(machine.g1_times_cache.begin()); // add lines M73 to exported gcode auto process_line_G1 = [&]() { - for (size_t i = 0; i < static_cast(PrintEstimatedTimeStatistics::ETimeMode::Count); ++i) { - const TimeMachine& machine = machines[i]; - if (machine.enabled && g1_lines_counter < machine.g1_times_cache.size()) { - float elapsed_time = machine.g1_times_cache[g1_lines_counter]; - std::pair to_export = { int(::roundf(100.0f * elapsed_time / machine.time)), - time_in_minutes(machine.time - elapsed_time) }; - if (last_exported[i] != to_export) { - export_line += format_line_M73(machine.line_m73_mask.c_str(), - to_export.first, to_export.second); - last_exported[i] = to_export; + if (export_remaining_time_enabled) { + for (size_t i = 0; i < static_cast(PrintEstimatedTimeStatistics::ETimeMode::Count); ++i) { + const TimeMachine& machine = machines[i]; + if (machine.enabled) { + // Skip all machine.g1_times_cache below g1_lines_counter. + auto& it = g1_times_cache_it[i]; + while (it != machine.g1_times_cache.end() && it->id < g1_lines_counter) + ++it; + if (it != machine.g1_times_cache.end() && it->id == g1_lines_counter) { + float elapsed_time = it->elapsed_time; + std::pair to_export = { int(100.0f * elapsed_time / machine.time), + time_in_minutes(machine.time - elapsed_time) }; + if (last_exported[i] != to_export) { + export_line += format_line_M73(machine.line_m73_mask.c_str(), + to_export.first, to_export.second); + last_exported[i] = to_export; + } + } } } } @@ -466,6 +483,8 @@ void GCodeProcessor::TimeProcessor::post_process(const std::string& filename) const std::vector> GCodeProcessor::Producers = { { EProducer::PrusaSlicer, "PrusaSlicer" }, + { EProducer::Slic3rPE, "Slic3r Prusa Edition" }, + { EProducer::Slic3r, "Slic3r" }, { EProducer::Cura, "Cura_SteamEngine" }, { EProducer::Simplify3D, "Simplify3D" }, { EProducer::CraftWare, "CraftWare" }, @@ -488,6 +507,7 @@ void GCodeProcessor::apply_config(const PrintConfig& config) m_flavor = config.gcode_flavor; size_t extruders_count = config.nozzle_diameter.values.size(); + m_result.extruders_count = extruders_count; m_extruder_offsets.resize(extruders_count); for (size_t i = 0; i < extruders_count; ++i) { @@ -541,9 +561,17 @@ void GCodeProcessor::apply_config(const DynamicPrintConfig& config) if (bed_shape != nullptr) m_result.bed_shape = bed_shape->values; + const ConfigOptionString* print_settings_id = config.option("print_settings_id"); + if (print_settings_id != nullptr) + m_result.settings_ids.print = print_settings_id->value; + + const ConfigOptionStrings* filament_settings_id = config.option("filament_settings_id"); + if (filament_settings_id != nullptr) + m_result.settings_ids.filament = filament_settings_id->values; + const ConfigOptionString* printer_settings_id = config.option("printer_settings_id"); if (printer_settings_id != nullptr) - m_result.printer_settings_id = printer_settings_id->value; + m_result.settings_ids.printer = printer_settings_id->value; const ConfigOptionFloats* filament_diameters = config.option("filament_diameter"); if (filament_diameters != nullptr) { @@ -552,6 +580,8 @@ void GCodeProcessor::apply_config(const DynamicPrintConfig& config) } } + m_result.extruders_count = config.option("nozzle_diameter")->values.size(); + const ConfigOptionPoints* extruder_offset = config.option("extruder_offset"); if (extruder_offset != nullptr) { m_extruder_offsets.resize(extruder_offset->values.size()); @@ -711,6 +741,7 @@ void GCodeProcessor::reset() m_filament_diameters = std::vector(Min_Extruder_Count, 1.75f); m_extruded_last_z = 0.0f; + m_g1_line_id = 0; m_layer_id = 0; m_cp_color.reset(); @@ -729,7 +760,7 @@ void GCodeProcessor::reset() #endif // ENABLE_GCODE_VIEWER_DATA_CHECKING } -void GCodeProcessor::process_file(const std::string& filename, std::function cancel_callback) +void GCodeProcessor::process_file(const std::string& filename, bool apply_postprocess, std::function cancel_callback) { auto last_cancel_callback_time = std::chrono::high_resolution_clock::now(); @@ -741,9 +772,9 @@ void GCodeProcessor::process_file(const std::string& filename, std::function 1 && detect_producer(comment)) m_parser.quit_parsing_file(); } @@ -751,7 +782,7 @@ void GCodeProcessor::process_file(const std::string& filename, std::function 1) { // process command lines switch (::toupper(cmd[0])) @@ -925,122 +960,151 @@ void GCodeProcessor::process_gcode_line(const GCodeReader::GCodeLine& line) } } else { - std::string comment = line.comment(); - if (comment.length() > 1) - // process tags embedded into comments - process_tags(comment); + const std::string &comment = line.raw(); + if (comment.length() > 2 && comment.front() == ';') + // Process tags embedded into comments. Tag comments always start at the start of a line + // with a comment and continue with a tag without any whitespace separator. + process_tags(comment.substr(1)); } } -void GCodeProcessor::process_tags(const std::string& comment) +static inline bool starts_with(const std::string_view comment, const std::string_view tag) { - // producers tags - if (m_producers_enabled) { - if (m_producer != EProducer::Unknown) { - if (process_producers_tags(comment)) - return; + size_t tag_len = tag.size(); + return comment.size() >= tag_len && comment.substr(0, tag_len) == tag; +} + +#if __has_include() + template + struct is_from_chars_convertible : std::false_type {}; + template + struct is_from_chars_convertible(), std::declval(), std::declval()))>> : std::true_type {}; +#endif + +// Returns true if the number was parsed correctly into out and the number spanned the whole input string. +template +[[nodiscard]] static inline bool parse_number(const std::string_view sv, T &out) +{ + // https://www.bfilipek.com/2019/07/detect-overload-from-chars.html#example-stdfromchars +#if __has_include() + // Visual Studio 19 supports from_chars all right. + // OSX compiler that we use only implements std::from_chars just for ints. + // GCC that we compile on does not provide at all. + if constexpr (is_from_chars_convertible::value) { + auto str_end = sv.data() + sv.size(); + auto [end_ptr, error_code] = std::from_chars(sv.data(), str_end, out); + return error_code == std::errc() && end_ptr == str_end; + } + else +#endif + { + // Legacy conversion, which is costly due to having to make a copy of the string before conversion. + try { + assert(sv.size() < 1024); + assert(sv.data() != nullptr); + std::string str { sv }; + size_t read = 0; + if constexpr (std::is_same_v) + out = std::stoi(str, &read); + else if constexpr (std::is_same_v) + out = std::stol(str, &read); + else if constexpr (std::is_same_v) + out = std::stof(str, &read); + else if constexpr (std::is_same_v) + out = std::stod(str, &read); + return str.size() == read; + } catch (...) { + return false; } } +} + +void GCodeProcessor::process_tags(const std::string_view comment) +{ + // producers tags + if (m_producers_enabled && process_producers_tags(comment)) + return; // extrusion role tag - size_t pos = comment.find(Extrusion_Role_Tag); - if (pos != comment.npos) { - m_extrusion_role = ExtrusionEntity::string_to_role(comment.substr(pos + Extrusion_Role_Tag.length())); + if (starts_with(comment, Extrusion_Role_Tag)) { + m_extrusion_role = ExtrusionEntity::string_to_role(comment.substr(Extrusion_Role_Tag.length())); return; } - if (!m_producers_enabled || m_producer == EProducer::PrusaSlicer) { + if ((!m_producers_enabled || m_producer == EProducer::PrusaSlicer) && + starts_with(comment, Height_Tag)) { // height tag - pos = comment.find(Height_Tag); - if (pos != comment.npos) { - try { - m_height = std::stof(comment.substr(pos + Height_Tag.length())); - } - catch (...) { - BOOST_LOG_TRIVIAL(error) << "GCodeProcessor encountered an invalid value for Height (" << comment << ")."; - } - return; - } + if (! parse_number(comment.substr(Height_Tag.size()), m_height)) + BOOST_LOG_TRIVIAL(error) << "GCodeProcessor encountered an invalid value for Height (" << comment << ")."; + return; } #if ENABLE_GCODE_VIEWER_DATA_CHECKING // width tag - pos = comment.find(Width_Tag); - if (pos != comment.npos) { - try { - m_width_compare.last_tag_value = std::stof(comment.substr(pos + Width_Tag.length())); - } - catch (...) { + if (starts_with(comment, Width_Tag)) { + if (! parse_number(comment.substr(Width_Tag.size()), m_width_compare.last_tag_value)) BOOST_LOG_TRIVIAL(error) << "GCodeProcessor encountered an invalid value for Width (" << comment << ")."; - } return; } #endif // ENABLE_GCODE_VIEWER_DATA_CHECKING // color change tag - pos = comment.find(Color_Change_Tag); - if (pos != comment.npos) { - pos = comment.find_last_of(",T"); - try { - unsigned char extruder_id = (pos == comment.npos) ? 0 : static_cast(std::stoi(comment.substr(pos + 1))); - - m_extruder_colors[extruder_id] = static_cast(m_extruder_offsets.size()) + m_cp_color.counter; // color_change position in list of color for preview - ++m_cp_color.counter; - if (m_cp_color.counter == UCHAR_MAX) - m_cp_color.counter = 0; - - if (m_extruder_id == extruder_id) { - m_cp_color.current = m_extruder_colors[extruder_id]; - store_move_vertex(EMoveType::Color_change); + if (starts_with(comment, Color_Change_Tag)) { + unsigned char extruder_id = 0; + if (starts_with(comment.substr(Color_Change_Tag.size()), ",T")) { + int eid; + if (! parse_number(comment.substr(Color_Change_Tag.size() + 2), eid) || eid < 0 || eid > 255) { + BOOST_LOG_TRIVIAL(error) << "GCodeProcessor encountered an invalid value for Color_Change (" << comment << ")."; + return; } + extruder_id = static_cast(eid); + } - process_custom_gcode_time(CustomGCode::ColorChange); - } - catch (...) { - BOOST_LOG_TRIVIAL(error) << "GCodeProcessor encountered an invalid value for Color_Change (" << comment << ")."; + m_extruder_colors[extruder_id] = static_cast(m_extruder_offsets.size()) + m_cp_color.counter; // color_change position in list of color for preview + ++m_cp_color.counter; + if (m_cp_color.counter == UCHAR_MAX) + m_cp_color.counter = 0; + + if (m_extruder_id == extruder_id) { + m_cp_color.current = m_extruder_colors[extruder_id]; + store_move_vertex(EMoveType::Color_change); } + process_custom_gcode_time(CustomGCode::ColorChange); + return; } // pause print tag - pos = comment.find(Pause_Print_Tag); - if (pos != comment.npos) { + if (comment == Pause_Print_Tag) { store_move_vertex(EMoveType::Pause_Print); process_custom_gcode_time(CustomGCode::PausePrint); return; } // custom code tag - pos = comment.find(Custom_Code_Tag); - if (pos != comment.npos) { + if (comment == Custom_Code_Tag) { store_move_vertex(EMoveType::Custom_GCode); return; } #if ENABLE_GCODE_VIEWER_DATA_CHECKING // mm3_per_mm print tag - pos = comment.find(Mm3_Per_Mm_Tag); - if (pos != comment.npos) { - try { - m_mm3_per_mm_compare.last_tag_value = std::stof(comment.substr(pos + Mm3_Per_Mm_Tag.length())); - } - catch (...) { + if (starts_with(comment, Mm3_Per_Mm_Tag)) { + if (! parse_number(comment.substr(Mm3_Per_Mm_Tag.size()), m_mm3_per_mm_compare.last_tag_value)) BOOST_LOG_TRIVIAL(error) << "GCodeProcessor encountered an invalid value for Mm3_Per_Mm (" << comment << ")."; - } return; } #endif // ENABLE_GCODE_VIEWER_DATA_CHECKING // layer change tag - pos = comment.find(Layer_Change_Tag); - if (pos != comment.npos) { + if (comment == Layer_Change_Tag) { ++m_layer_id; return; } } -bool GCodeProcessor::process_producers_tags(const std::string& comment) +bool GCodeProcessor::process_producers_tags(const std::string_view comment) { switch (m_producer) { @@ -1053,18 +1117,18 @@ bool GCodeProcessor::process_producers_tags(const std::string& comment) } } -bool GCodeProcessor::process_prusaslicer_tags(const std::string& comment) +bool GCodeProcessor::process_prusaslicer_tags(const std::string_view comment) { return false; } -bool GCodeProcessor::process_cura_tags(const std::string& comment) +bool GCodeProcessor::process_cura_tags(const std::string_view comment) { // TYPE -> extrusion role std::string tag = "TYPE:"; size_t pos = comment.find(tag); if (pos != comment.npos) { - std::string type = comment.substr(pos + tag.length()); + const std::string_view type = comment.substr(pos + tag.length()); if (type == "SKIRT") m_extrusion_role = erSkirt; else if (type == "WALL-OUTER") @@ -1093,7 +1157,7 @@ bool GCodeProcessor::process_cura_tags(const std::string& comment) tag = "FLAVOR:"; pos = comment.find(tag); if (pos != comment.npos) { - std::string flavor = comment.substr(pos + tag.length()); + const std::string_view flavor = comment.substr(pos + tag.length()); if (flavor == "BFB") m_flavor = gcfMarlin; // << ??????????????????????? else if (flavor == "Mach3") @@ -1121,7 +1185,7 @@ bool GCodeProcessor::process_cura_tags(const std::string& comment) return false; } -bool GCodeProcessor::process_simplify3d_tags(const std::string& comment) +bool GCodeProcessor::process_simplify3d_tags(const std::string_view comment) { // extrusion roles @@ -1209,7 +1273,7 @@ bool GCodeProcessor::process_simplify3d_tags(const std::string& comment) std::string tag = " tool"; pos = comment.find(tag); if (pos == 0) { - std::string data = comment.substr(pos + tag.length()); + const std::string_view data = comment.substr(pos + tag.length()); std::string h_tag = "H"; size_t h_start = data.find(h_tag); size_t h_end = data.find_first_of(' ', h_start); @@ -1217,20 +1281,12 @@ bool GCodeProcessor::process_simplify3d_tags(const std::string& comment) size_t w_start = data.find(w_tag); size_t w_end = data.find_first_of(' ', w_start); if (h_start != data.npos) { - try { - m_height_compare.last_tag_value = std::stof(data.substr(h_start + 1, (h_end != data.npos) ? h_end - h_start - 1 : h_end)); - } - catch (...) { + if (! parse_number(data.substr(h_start + 1, (h_end != data.npos) ? h_end - h_start - 1 : h_end), m_height_compare.last_tag_value)) BOOST_LOG_TRIVIAL(error) << "GCodeProcessor encountered an invalid value for Height (" << comment << ")."; - } } if (w_start != data.npos) { - try { - m_width_compare.last_tag_value = std::stof(data.substr(w_start + 1, (w_end != data.npos) ? w_end - w_start - 1 : w_end)); - } - catch (...) { + if (! parse_number(data.substr(w_start + 1, (w_end != data.npos) ? w_end - w_start - 1 : w_end), m_width_compare.last_tag_value)) BOOST_LOG_TRIVIAL(error) << "GCodeProcessor encountered an invalid value for Width (" << comment << ")."; - } } return true; @@ -1240,13 +1296,13 @@ bool GCodeProcessor::process_simplify3d_tags(const std::string& comment) return false; } -bool GCodeProcessor::process_craftware_tags(const std::string& comment) +bool GCodeProcessor::process_craftware_tags(const std::string_view comment) { // segType -> extrusion role std::string tag = "segType:"; size_t pos = comment.find(tag); if (pos != comment.npos) { - std::string type = comment.substr(pos + tag.length()); + const std::string_view type = comment.substr(pos + tag.length()); if (type == "Skirt") m_extrusion_role = erSkirt; else if (type == "Perimeter") @@ -1280,13 +1336,13 @@ bool GCodeProcessor::process_craftware_tags(const std::string& comment) return false; } -bool GCodeProcessor::process_ideamaker_tags(const std::string& comment) +bool GCodeProcessor::process_ideamaker_tags(const std::string_view comment) { // TYPE -> extrusion role std::string tag = "TYPE:"; size_t pos = comment.find(tag); if (pos != comment.npos) { - std::string type = comment.substr(pos + tag.length()); + const std::string_view type = comment.substr(pos + tag.length()); if (type == "RAFT") m_extrusion_role = erSkirt; else if (type == "WALL-OUTER") @@ -1315,12 +1371,8 @@ bool GCodeProcessor::process_ideamaker_tags(const std::string& comment) tag = "WIDTH:"; pos = comment.find(tag); if (pos != comment.npos) { - try { - m_width_compare.last_tag_value = std::stof(comment.substr(pos + tag.length())); - } - catch (...) { + if (! parse_number(comment.substr(pos + tag.length()), m_width_compare.last_tag_value)) BOOST_LOG_TRIVIAL(error) << "GCodeProcessor encountered an invalid value for Width (" << comment << ")."; - } return true; } @@ -1328,12 +1380,8 @@ bool GCodeProcessor::process_ideamaker_tags(const std::string& comment) tag = "HEIGHT:"; pos = comment.find(tag); if (pos != comment.npos) { - try { - m_height_compare.last_tag_value = std::stof(comment.substr(pos + tag.length())); - } - catch (...) { + if (! parse_number(comment.substr(pos + tag.length()), m_height_compare.last_tag_value)) BOOST_LOG_TRIVIAL(error) << "GCodeProcessor encountered an invalid value for Height (" << comment << ")."; - } return true; } #endif // ENABLE_GCODE_VIEWER_DATA_CHECKING @@ -1341,7 +1389,7 @@ bool GCodeProcessor::process_ideamaker_tags(const std::string& comment) return false; } -bool GCodeProcessor::detect_producer(const std::string& comment) +bool GCodeProcessor::detect_producer(const std::string_view comment) { for (const auto& [id, search_string] : Producers) { size_t pos = comment.find(search_string); @@ -1393,6 +1441,8 @@ void GCodeProcessor::process_G1(const GCodeReader::GCodeLine& line) return type; }; + ++m_g1_line_id; + // enable processing of lines M201/M203/M204/M205 m_time_processor.machine_envelope_processing_enabled = true; @@ -1498,6 +1548,7 @@ void GCodeProcessor::process_G1(const GCodeReader::GCodeLine& line) block.move_type = type; block.role = m_extrusion_role; block.distance = distance; + block.g1_line_id = m_g1_line_id; block.layer_id = m_layer_id; // calculates block cruise feedrate @@ -1994,11 +2045,14 @@ void GCodeProcessor::process_T(const GCodeReader::GCodeLine& line) process_T(line.cmd()); } -void GCodeProcessor::process_T(const std::string& command) +void GCodeProcessor::process_T(const std::string_view command) { if (command.length() > 1) { - try { - unsigned char id = static_cast(std::stoi(command.substr(1))); + int eid; + if (! parse_number(command.substr(1), eid) || eid < 0 || eid > 255) { + BOOST_LOG_TRIVIAL(error) << "GCodeProcessor encountered an invalid toolchange (" << command << ")."; + } else { + unsigned char id = static_cast(eid); if (m_extruder_id != id) { unsigned char extruders_count = static_cast(m_extruder_offsets.size()); if (id >= extruders_count) @@ -2020,9 +2074,6 @@ void GCodeProcessor::process_T(const std::string& command) store_move_vertex(EMoveType::Tool_change); } } - catch (...) { - BOOST_LOG_TRIVIAL(error) << "GCodeProcessor encountered an invalid toolchange (" << command << ")."; - } } } @@ -2180,4 +2231,3 @@ void GCodeProcessor::update_estimated_times_stats() } /* namespace Slic3r */ -#endif // ENABLE_GCODE_VIEWER diff --git a/src/libslic3r/GCode/GCodeProcessor.hpp b/src/libslic3r/GCode/GCodeProcessor.hpp index a0cf5d6e5c..ea13d99814 100644 --- a/src/libslic3r/GCode/GCodeProcessor.hpp +++ b/src/libslic3r/GCode/GCodeProcessor.hpp @@ -1,7 +1,6 @@ #ifndef slic3r_GCodeProcessor_hpp_ #define slic3r_GCodeProcessor_hpp_ -#if ENABLE_GCODE_VIEWER #include "libslic3r/GCodeReader.hpp" #include "libslic3r/Point.hpp" #include "libslic3r/ExtrusionEntity.hpp" @@ -11,6 +10,7 @@ #include #include #include +#include namespace Slic3r { @@ -145,6 +145,7 @@ namespace Slic3r { EMoveType move_type{ EMoveType::Noop }; ExtrusionRole role{ erNone }; + unsigned int g1_line_id{ 0 }; unsigned int layer_id{ 0 }; float distance{ 0.0f }; // mm float acceleration{ 0.0f }; // mm/s^2 @@ -182,6 +183,12 @@ namespace Slic3r { void reset(); }; + struct G1LinesCacheItem + { + unsigned int id; + float elapsed_time; + }; + bool enabled; float acceleration; // mm/s^2 // hard limit for the acceleration, to which the firmware will clamp. @@ -193,7 +200,7 @@ namespace Slic3r { State prev; CustomGCodeTime gcode_time; std::vector blocks; - std::vector g1_times_cache; + std::vector g1_times_cache; std::array(EMoveType::Count)> moves_time; std::array(ExtrusionRole::erCount)> roles_time; std::vector layers_time; @@ -258,10 +265,24 @@ namespace Slic3r { struct Result { + struct SettingsIds + { + std::string print; + std::vector filament; + std::string printer; + + void reset() + { + print = ""; + filament = std::vector(); + printer = ""; + } + }; unsigned int id; std::vector moves; Pointfs bed_shape; - std::string printer_settings_id; + SettingsIds settings_ids; + size_t extruders_count; std::vector extruder_colors; PrintEstimatedTimeStatistics time_statistics; @@ -273,6 +294,8 @@ namespace Slic3r { moves = std::vector(); bed_shape = Pointfs(); extruder_colors = std::vector(); + extruders_count = 0; + settings_ids.reset(); } #else void reset() @@ -280,6 +303,8 @@ namespace Slic3r { moves = std::vector(); bed_shape = Pointfs(); extruder_colors = std::vector(); + extruders_count = 0; + settings_ids.reset(); } #endif // ENABLE_GCODE_VIEWER_STATISTICS }; @@ -376,6 +401,7 @@ namespace Slic3r { ExtruderColors m_extruder_colors; std::vector m_filament_diameters; float m_extruded_last_z; + unsigned int m_g1_line_id; unsigned int m_layer_id; CpColor m_cp_color; @@ -383,6 +409,8 @@ namespace Slic3r { { Unknown, PrusaSlicer, + Slic3rPE, + Slic3r, Cura, Simplify3D, CraftWare, @@ -422,7 +450,7 @@ namespace Slic3r { // Process the gcode contained in the file with the given filename // throws CanceledException through print->throw_if_canceled() (sent by the caller as callback). - void process_file(const std::string& filename, std::function cancel_callback = nullptr); + void process_file(const std::string& filename, bool apply_postprocess, std::function cancel_callback = nullptr); float get_time(PrintEstimatedTimeStatistics::ETimeMode mode) const; std::string get_time_dhm(PrintEstimatedTimeStatistics::ETimeMode mode) const; @@ -436,15 +464,15 @@ namespace Slic3r { void process_gcode_line(const GCodeReader::GCodeLine& line); // Process tags embedded into comments - void process_tags(const std::string& comment); - bool process_producers_tags(const std::string& comment); - bool process_prusaslicer_tags(const std::string& comment); - bool process_cura_tags(const std::string& comment); - bool process_simplify3d_tags(const std::string& comment); - bool process_craftware_tags(const std::string& comment); - bool process_ideamaker_tags(const std::string& comment); + void process_tags(const std::string_view comment); + bool process_producers_tags(const std::string_view comment); + bool process_prusaslicer_tags(const std::string_view comment); + bool process_cura_tags(const std::string_view comment); + bool process_simplify3d_tags(const std::string_view comment); + bool process_craftware_tags(const std::string_view comment); + bool process_ideamaker_tags(const std::string_view comment); - bool detect_producer(const std::string& comment); + bool detect_producer(const std::string_view comment); // Move void process_G0(const GCodeReader::GCodeLine& line); @@ -530,7 +558,7 @@ namespace Slic3r { // Processes T line (Select Tool) void process_T(const GCodeReader::GCodeLine& line); - void process_T(const std::string& command); + void process_T(const std::string_view command); void store_move_vertex(EMoveType type); @@ -555,8 +583,6 @@ namespace Slic3r { } /* namespace Slic3r */ -#endif // ENABLE_GCODE_VIEWER - #endif /* slic3r_GCodeProcessor_hpp_ */ diff --git a/src/libslic3r/GCode/PressureEqualizer.cpp b/src/libslic3r/GCode/PressureEqualizer.cpp index 33601e5e9f..c3f084a24a 100644 --- a/src/libslic3r/GCode/PressureEqualizer.cpp +++ b/src/libslic3r/GCode/PressureEqualizer.cpp @@ -165,9 +165,10 @@ static inline float parse_float(const char *&line) return result; }; -#define EXTRUSION_ROLE_TAG ";_EXTRUSION_ROLE:" bool PressureEqualizer::process_line(const char *line, const size_t len, GCodeLine &buf) { + static constexpr const char *EXTRUSION_ROLE_TAG = ";_EXTRUSION_ROLE:"; + if (strncmp(line, EXTRUSION_ROLE_TAG, strlen(EXTRUSION_ROLE_TAG)) == 0) { line += strlen(EXTRUSION_ROLE_TAG); int role = atoi(line); diff --git a/src/libslic3r/GCode/PreviewData.cpp b/src/libslic3r/GCode/PreviewData.cpp deleted file mode 100644 index 8aec327db3..0000000000 --- a/src/libslic3r/GCode/PreviewData.cpp +++ /dev/null @@ -1,522 +0,0 @@ -#include "Analyzer.hpp" -#include "PreviewData.hpp" -#include -#include "Utils.hpp" - -#include - -#if !ENABLE_GCODE_VIEWER - -//! macro used to mark string used at localization, -#define L(s) (s) - -namespace Slic3r { - -std::vector Color::as_bytes() const -{ - std::vector ret; - for (unsigned int i = 0; i < 4; ++i) - { - ret.push_back((unsigned char)(255.0f * rgba[i])); - } - return ret; -} - -GCodePreviewData::Extrusion::Layer::Layer(float z, const Paths& paths) - : z(z) - , paths(paths) -{ -} - -GCodePreviewData::Travel::Polyline::Polyline(EType type, EDirection direction, float feedrate, unsigned int extruder_id, const Polyline3& polyline) - : type(type) - , direction(direction) - , feedrate(feedrate) - , extruder_id(extruder_id) - , polyline(polyline) -{ -} - -GCodePreviewData::Range::Range() -{ - reset(); -} - -void GCodePreviewData::Range::reset() -{ - min_val = FLT_MAX; - max_val = -FLT_MAX; -} - -bool GCodePreviewData::Range::empty() const -{ - return min_val >= max_val; -} - -void GCodePreviewData::Range::update_from(float value) -{ - min_val = std::min(min_val, value); - max_val = std::max(max_val, value); -} - -void GCodePreviewData::Range::update_from(const RangeBase& other) -{ - min_val = std::min(min_val, other.min()); - max_val = std::max(max_val, other.max()); -} - -float GCodePreviewData::RangeBase::step_size() const -{ - return (max() - min()) / static_cast(range_rainbow_colors.size() - 1); -} - -Color GCodePreviewData::RangeBase::get_color_at(float value) const -{ - // Input value scaled to the color range - float step = step_size(); - const float global_t = (step != 0.0f) ? std::max(0.0f, value - min()) / step : 0.0f; // lower limit of 0.0f - - constexpr std::size_t color_max_idx = range_rainbow_colors.size() - 1; - - // Compute the two colors just below (low) and above (high) the input value - const std::size_t color_low_idx = std::clamp(static_cast(global_t), std::size_t{ 0 }, color_max_idx); - const std::size_t color_high_idx = std::clamp(color_low_idx + 1, std::size_t{ 0 }, color_max_idx); - - // Compute how far the value is between the low and high colors so that they can be interpolated - const float local_t = std::min(global_t - static_cast(color_low_idx), 1.0f); // upper limit of 1.0f - - // Interpolate between the low and high colors in RGB space to find exactly which color the input value should get - Color ret; - for (unsigned int i = 0; i < 4; ++i) - { - ret.rgba[i] = lerp(range_rainbow_colors[color_low_idx].rgba[i], range_rainbow_colors[color_high_idx].rgba[i], local_t); - } - return ret; -} - -float GCodePreviewData::Range::min() const -{ - return min_val; -} - -float GCodePreviewData::Range::max() const -{ - return max_val; -} - -GCodePreviewData::LegendItem::LegendItem(const std::string& text, const Color& color) - : text(text) - , color(color) -{ -} - -const Color GCodePreviewData::Extrusion::Default_Extrusion_Role_Colors[erCount] = -{ - Color(0.0f, 0.0f, 0.0f, 1.0f), // erNone - Color(1.0f, 0.0f, 0.0f, 1.0f), // erPerimeter - Color(0.0f, 1.0f, 0.0f, 1.0f), // erExternalPerimeter - Color(0.0f, 0.0f, 1.0f, 1.0f), // erOverhangPerimeter - Color(1.0f, 1.0f, 0.0f, 1.0f), // erInternalInfill - Color(1.0f, 0.0f, 1.0f, 1.0f), // erSolidInfill - Color(0.0f, 1.0f, 1.0f, 1.0f), // erTopSolidInfill -// Color(1.0f, 0.7f, 0.61f, 1.0f), // erIroning - Color(1.0f, 0.55f, 0.41f, 1.0f), // erIroning - Color(0.5f, 0.5f, 0.5f, 1.0f), // erBridgeInfill - Color(1.0f, 1.0f, 1.0f, 1.0f), // erGapFill - Color(0.5f, 0.0f, 0.0f, 1.0f), // erSkirt - Color(0.0f, 0.5f, 0.0f, 1.0f), // erSupportMaterial - Color(0.0f, 0.0f, 0.5f, 1.0f), // erSupportMaterialInterface - Color(0.7f, 0.89f, 0.67f, 1.0f), // erWipeTower - Color(1.0f, 1.0f, 0.0f, 1.0f), // erCustom - Color(0.0f, 0.0f, 0.0f, 1.0f) // erMixed -}; - -const GCodePreviewData::Extrusion::EViewType GCodePreviewData::Extrusion::Default_View_Type = GCodePreviewData::Extrusion::FeatureType; - -void GCodePreviewData::Extrusion::set_default() -{ - view_type = Default_View_Type; - - ::memcpy((void*)role_colors, (const void*)Default_Extrusion_Role_Colors, erCount * sizeof(Color)); - - for (unsigned int i = 0; i < erCount; ++i) - role_names[i] = ExtrusionEntity::role_to_string(ExtrusionRole(i)); - - role_flags = 0; - for (unsigned int i = 0; i < erCount; ++i) - role_flags |= 1 << i; -} - -bool GCodePreviewData::Extrusion::is_role_flag_set(ExtrusionRole role) const -{ - return is_role_flag_set(role_flags, role); -} - -bool GCodePreviewData::Extrusion::is_role_flag_set(unsigned int flags, ExtrusionRole role) -{ - return GCodeAnalyzer::is_valid_extrusion_role(role) && (flags & (1 << (role - erPerimeter))) != 0; -} - -size_t GCodePreviewData::Extrusion::memory_used() const -{ - size_t out = sizeof(*this); - out += SLIC3R_STDVEC_MEMSIZE(this->layers, Layer); - for (const Layer &layer : this->layers) { - out += SLIC3R_STDVEC_MEMSIZE(layer.paths, Path); - for (const Path &path : layer.paths) - out += SLIC3R_STDVEC_MEMSIZE(path.polyline.points, Point); - } - return out; -} - -const float GCodePreviewData::Travel::Default_Width = 0.075f; -const float GCodePreviewData::Travel::Default_Height = 0.075f; -const Color GCodePreviewData::Travel::Default_Type_Colors[Num_Types] = -{ - Color(0.0f, 0.0f, 0.75f, 1.0f), // Move - Color(0.0f, 0.75f, 0.0f, 1.0f), // Extrude - Color(0.75f, 0.0f, 0.0f, 1.0f), // Retract -}; - -void GCodePreviewData::Travel::set_default() -{ - width = Default_Width; - height = Default_Height; - ::memcpy((void*)type_colors, (const void*)Default_Type_Colors, Num_Types * sizeof(Color)); - color_print_idx = 0; - - is_visible = false; -} - -size_t GCodePreviewData::Travel::memory_used() const -{ - size_t out = sizeof(*this); - out += SLIC3R_STDVEC_MEMSIZE(this->polylines, Polyline); - for (const Polyline &polyline : this->polylines) - out += SLIC3R_STDVEC_MEMSIZE(polyline.polyline.points, Vec3crd); - return out; -} - -const Color GCodePreviewData::Retraction::Default_Color = Color(1.0f, 1.0f, 1.0f, 1.0f); - -GCodePreviewData::Retraction::Position::Position(const Vec3crd& position, float width, float height) - : position(position) - , width(width) - , height(height) -{ -} - -void GCodePreviewData::Retraction::set_default() -{ - color = Default_Color; - is_visible = false; -} - -size_t GCodePreviewData::Retraction::memory_used() const -{ - return sizeof(*this) + SLIC3R_STDVEC_MEMSIZE(this->positions, Position); -} - -void GCodePreviewData::Shell::set_default() -{ - is_visible = false; -} - -GCodePreviewData::GCodePreviewData() -{ - set_default(); -} - -void GCodePreviewData::set_default() -{ - extrusion.set_default(); - travel.set_default(); - retraction.set_default(); - unretraction.set_default(); - shell.set_default(); - - // Configure the color range for feedrate to match the default for travels and to enable extrusions since they are always visible - ranges.feedrate.set_mode(FeedrateKind::TRAVEL, travel.is_visible); - ranges.feedrate.set_mode(FeedrateKind::EXTRUSION, true); -} - -void GCodePreviewData::reset() -{ - ranges.width.reset(); - ranges.height.reset(); - ranges.feedrate.reset(); - ranges.fan_speed.reset(); - ranges.volumetric_rate.reset(); - extrusion.layers.clear(); - travel.polylines.clear(); - retraction.positions.clear(); - unretraction.positions.clear(); -} - -bool GCodePreviewData::empty() const -{ - return extrusion.layers.empty() && travel.polylines.empty() && retraction.positions.empty() && unretraction.positions.empty(); -} - -Color GCodePreviewData::get_extrusion_role_color(ExtrusionRole role) const -{ - return extrusion.role_colors[role]; -} - -Color GCodePreviewData::get_height_color(float height) const -{ - return ranges.height.get_color_at(height); -} - -Color GCodePreviewData::get_width_color(float width) const -{ - return ranges.width.get_color_at(width); -} - -Color GCodePreviewData::get_feedrate_color(float feedrate) const -{ - return ranges.feedrate.get_color_at(feedrate); -} - -Color GCodePreviewData::get_fan_speed_color(float fan_speed) const -{ - return ranges.fan_speed.get_color_at(fan_speed); -} - -Color GCodePreviewData::get_volumetric_rate_color(float rate) const -{ - return ranges.volumetric_rate.get_color_at(rate); -} - -void GCodePreviewData::set_extrusion_role_color(const std::string& role_name, float red, float green, float blue, float alpha) -{ - for (unsigned int i = 0; i < erCount; ++i) - { - if (role_name == extrusion.role_names[i]) - { - extrusion.role_colors[i] = Color(red, green, blue, alpha); - break; - } - } -} - -void GCodePreviewData::set_extrusion_paths_colors(const std::vector& colors) -{ - unsigned int size = (unsigned int)colors.size(); - - if (size % 2 != 0) - return; - - for (unsigned int i = 0; i < size; i += 2) - { - const std::string& color_str = colors[i + 1]; - - if (color_str.size() == 6) - { - bool valid = true; - for (int c = 0; c < 6; ++c) - { - if (::isxdigit(color_str[c]) == 0) - { - valid = false; - break; - } - } - - if (valid) - { - unsigned int color; - std::stringstream ss; - ss << std::hex << color_str; - ss >> color; - - float den = 1.0f / 255.0f; - - float r = (float)((color & 0xFF0000) >> 16) * den; - float g = (float)((color & 0x00FF00) >> 8) * den; - float b = (float)(color & 0x0000FF) * den; - - this->set_extrusion_role_color(colors[i], r, g, b, 1.0f); - } - } - } -} - -std::string GCodePreviewData::get_legend_title() const -{ - switch (extrusion.view_type) - { - case Extrusion::FeatureType: - return L("Feature type"); - case Extrusion::Height: - return L("Height (mm)"); - case Extrusion::Width: - return L("Width (mm)"); - case Extrusion::Feedrate: - return L("Speed (mm/s)"); - case Extrusion::FanSpeed: - return L("Fan Speed (%)"); - case Extrusion::VolumetricRate: - return L("Volumetric flow rate (mm³/s)"); - case Extrusion::Tool: - return L("Tool"); - case Extrusion::ColorPrint: - return L("Color Print"); - case Extrusion::Num_View_Types: - break; // just to supress warning about non-handled value - } - - return ""; -} - -GCodePreviewData::LegendItemsList GCodePreviewData::get_legend_items(const std::vector& tool_colors, - const std::vector& cp_items) const -{ - struct Helper - { - static void FillListFromRange(LegendItemsList& list, const RangeBase& range, unsigned int decimals, float scale_factor) - { - list.reserve(range_rainbow_colors.size()); - - float step = range.step_size(); - if (step == 0.0f) - { - char buf[1024]; - sprintf(buf, "%.*f", decimals, scale_factor * range.min()); - list.emplace_back(buf, range_rainbow_colors[0]); - } - else - { - for (int i = static_cast(range_rainbow_colors.size()) - 1; i >= 0; --i) - { - char buf[1024]; - sprintf(buf, "%.*f", decimals, scale_factor * (range.min() + (float)i * step)); - list.emplace_back(buf, range_rainbow_colors[i]); - } - } - } - }; - - LegendItemsList items; - - switch (extrusion.view_type) - { - case Extrusion::FeatureType: - { - ExtrusionRole first_valid = erPerimeter; - ExtrusionRole last_valid = erCustom; - - items.reserve(last_valid - first_valid + 1); - for (unsigned int i = (unsigned int)first_valid; i <= (unsigned int)last_valid; ++i) - { - items.emplace_back(Slic3r::I18N::translate(extrusion.role_names[i]), extrusion.role_colors[i]); - } - - break; - } - case Extrusion::Height: - { - Helper::FillListFromRange(items, ranges.height, 3, 1.0f); - break; - } - case Extrusion::Width: - { - Helper::FillListFromRange(items, ranges.width, 3, 1.0f); - break; - } - case Extrusion::Feedrate: - { - Helper::FillListFromRange(items, ranges.feedrate, 1, 1.0f); - break; - } - case Extrusion::FanSpeed: - { - Helper::FillListFromRange(items, ranges.fan_speed, 0, 1.0f); - break; - } - case Extrusion::VolumetricRate: - { - Helper::FillListFromRange(items, ranges.volumetric_rate, 3, 1.0f); - break; - } - case Extrusion::Tool: - { - unsigned int tools_colors_count = (unsigned int)tool_colors.size() / 4; - items.reserve(tools_colors_count); - for (unsigned int i = 0; i < tools_colors_count; ++i) - { - Color color; - ::memcpy((void*)color.rgba.data(), (const void*)(tool_colors.data() + i * 4), 4 * sizeof(float)); - items.emplace_back((boost::format(Slic3r::I18N::translate(L("Extruder %d"))) % (i + 1)).str(), color); - } - - break; - } - case Extrusion::ColorPrint: - { - const int color_cnt = (int)tool_colors.size()/4; - const auto color_print_cnt = (int)cp_items.size(); - if (color_print_cnt == 1) // means "Default print color" - { - Color color; - ::memcpy((void*)color.rgba.data(), (const void*)(tool_colors.data()), 4 * sizeof(float)); - - items.emplace_back(cp_items[0], color); - break; - } - - if (color_cnt != color_print_cnt) - break; - - for (int i = 0 ; i < color_print_cnt; ++i) - { - Color color; - ::memcpy((void*)color.rgba.data(), (const void*)(tool_colors.data() + i * 4), 4 * sizeof(float)); - - items.emplace_back(cp_items[i], color); - } - break; - } - case Extrusion::Num_View_Types: - break; // just to supress warning about non-handled value - } - - return items; -} - -// Return an estimate of the memory consumed by the time estimator. -size_t GCodePreviewData::memory_used() const -{ - return - this->extrusion.memory_used() + - this->travel.memory_used() + - this->retraction.memory_used() + - this->unretraction.memory_used() + - sizeof(shell) + sizeof(ranges); -} - -const std::vector& GCodePreviewData::ColorPrintColors() -{ - static std::vector color_print = {"#C0392B", "#E67E22", "#F1C40F", "#27AE60", "#1ABC9C", "#2980B9", "#9B59B6"}; - return color_print; -} - -Color operator + (const Color& c1, const Color& c2) -{ - return Color(std::clamp(c1.rgba[0] + c2.rgba[0], 0.0f, 1.0f), - std::clamp(c1.rgba[1] + c2.rgba[1], 0.0f, 1.0f), - std::clamp(c1.rgba[2] + c2.rgba[2], 0.0f, 1.0f), - std::clamp(c1.rgba[3] + c2.rgba[3], 0.0f, 1.0f)); -} - -Color operator * (float f, const Color& color) -{ - return Color(std::clamp(f * color.rgba[0], 0.0f, 1.0f), - std::clamp(f * color.rgba[1], 0.0f, 1.0f), - std::clamp(f * color.rgba[2], 0.0f, 1.0f), - std::clamp(f * color.rgba[3], 0.0f, 1.0f)); -} - -} // namespace Slic3r - -#endif // !ENABLE_GCODE_VIEWER diff --git a/src/libslic3r/GCode/PreviewData.hpp b/src/libslic3r/GCode/PreviewData.hpp deleted file mode 100644 index 930c1659e3..0000000000 --- a/src/libslic3r/GCode/PreviewData.hpp +++ /dev/null @@ -1,398 +0,0 @@ -#ifndef slic3r_GCode_PreviewData_hpp_ -#define slic3r_GCode_PreviewData_hpp_ - -#if !ENABLE_GCODE_VIEWER - -#include "../libslic3r.h" -#include "../ExtrusionEntity.hpp" -#include "../Point.hpp" - -#include -#include -#include -#include -#include -#include -#include - -#include - -namespace Slic3r { - -// Represents an RGBA color -struct Color -{ - std::array rgba; - - Color(const float *argba) - { - memcpy(this->rgba.data(), argba, sizeof(float) * 4); - } - constexpr Color(float r = 1.f, float g = 1.f, float b = 1.f, float a = 1.f) : rgba{r,g,b,a} - { - // Intentionally empty - } - - std::vector as_bytes() const; -}; -Color operator + (const Color& c1, const Color& c2); -Color operator * (float f, const Color& color); - -// Default colors for Ranges -constexpr std::array range_rainbow_colors{ - Color{0.043f, 0.173f, 0.478f, 1.0f}, - Color{0.075f, 0.349f, 0.522f, 1.0f}, - Color{0.110f, 0.533f, 0.569f, 1.0f}, - Color{0.016f, 0.839f, 0.059f, 1.0f}, - Color{0.667f, 0.949f, 0.000f, 1.0f}, - Color{0.988f, 0.975f, 0.012f, 1.0f}, - Color{0.961f, 0.808f, 0.039f, 1.0f}, - Color{0.890f, 0.533f, 0.125f, 1.0f}, - Color{0.820f, 0.408f, 0.188f, 1.0f}, - Color{0.761f, 0.322f, 0.235f, 1.0f}}; - -class GCodePreviewData -{ -public: - - // Color mapping to convert a float into a smooth rainbow of 10 colors. - class RangeBase - { - public: - virtual void reset() = 0; - virtual bool empty() const = 0; - virtual float min() const = 0; - virtual float max() const = 0; - - // Gets the step size using min(), max() and colors - float step_size() const; - - // Gets the color at a value using colors, min(), and max() - Color get_color_at(float value) const; - }; - - // Color mapping converting a float in a range between a min and a max into a smooth rainbow of 10 colors. - class Range : public RangeBase - { - public: - Range(); - - // RangeBase Overrides - void reset() override; - bool empty() const override; - float min() const override; - float max() const override; - - // Range-specific methods - void update_from(float value); - void update_from(const RangeBase& other); - - private: - float min_val; - float max_val; - }; - - // Like Range, but stores multiple ranges internally that are used depending on mode. - // Template param EnumRangeType must be an enum with values for each type of range that needs to be tracked in this MultiRange. - // The last enum value should be num_values. The numerical values of all enum values should range from 0 to num_values. - template - class MultiRange : public RangeBase - { - public: - void reset() override - { - bounds = decltype(bounds){}; - } - - bool empty() const override - { - for (std::size_t i = 0; i < bounds.size(); ++i) - { - if (bounds[i].min != bounds[i].max) - return false; - } - return true; - } - - float min() const override - { - float min = FLT_MAX; - for (std::size_t i = 0; i < bounds.size(); ++i) - { - // Only use bounds[i] if the current mode includes it - if (mode.test(i)) - { - min = std::min(min, bounds[i].min); - } - } - return min; - } - - float max() const override - { - float max = -FLT_MAX; - for (std::size_t i = 0; i < bounds.size(); ++i) - { - // Only use bounds[i] if the current mode includes it - if (mode.test(i)) - { - max = std::max(max, bounds[i].max); - } - } - return max; - } - - void update_from(const float value, EnumRangeType range_type_value) - { - bounds[static_cast(range_type_value)].update_from(value); - } - - void update_from(const MultiRange& other) - { - for (std::size_t i = 0; i < bounds.size(); ++i) - { - bounds[i].update_from(other.bounds[i]); - } - } - - void set_mode(const EnumRangeType range_type_value, const bool enable) - { - mode.set(static_cast(range_type_value), enable); - } - - private: - // Interval bounds - struct Bounds - { - float min{FLT_MAX}; - float max{-FLT_MAX}; - void update_from(const float value) - { - min = std::min(min, value); - max = std::max(max, value); - } - void update_from(const Bounds other_bounds) - { - min = std::min(min, other_bounds.min); - max = std::max(max, other_bounds.max); - } - }; - - std::array(EnumRangeType::num_values)> bounds; - std::bitset(EnumRangeType::num_values)> mode; - }; - - // Enum distinguishing different kinds of feedrate data - enum class FeedrateKind - { - EXTRUSION = 0, // values must go from 0 up to num_values - TRAVEL, - num_values //must be last in the list of values - }; - - struct Ranges - { - // Color mapping by layer height. - Range height; - // Color mapping by extrusion width. - Range width; - // Color mapping by feedrate. - MultiRange feedrate; - // Color mapping by fan speed. - Range fan_speed; - // Color mapping by volumetric extrusion rate. - Range volumetric_rate; - }; - - struct LegendItem - { - std::string text; - Color color; - - LegendItem(const std::string& text, const Color& color); - }; - - typedef std::vector LegendItemsList; - - struct Extrusion - { - enum EViewType : unsigned char - { - FeatureType, - Height, - Width, - Feedrate, - FanSpeed, - VolumetricRate, - Tool, - ColorPrint, - Num_View_Types - }; - - static const Color Default_Extrusion_Role_Colors[erCount]; - static const std::string Default_Extrusion_Role_Names[erCount]; - static const EViewType Default_View_Type; - - class Path - { - public: - Polyline polyline; - ExtrusionRole extrusion_role; - // Volumetric velocity. mm^3 of plastic per mm of linear head motion. Used by the G-code generator. - float mm3_per_mm; - // Width of the extrusion, used for visualization purposes. - float width; - // Height of the extrusion, used for visualization purposes. - float height; - // Feedrate of the extrusion, used for visualization purposes. - float feedrate; - // Id of the extruder, used for visualization purposes. - uint32_t extruder_id; - // Id of the color, used for visualization purposes in the color printing case. - uint32_t cp_color_id; - // Fan speed for the extrusion, used for visualization purposes. - float fan_speed; - }; - using Paths = std::vector; - - struct Layer - { - float z; - Paths paths; - - Layer(float z, const Paths& paths); - }; - - typedef std::vector LayersList; - - EViewType view_type; - Color role_colors[erCount]; - std::string role_names[erCount]; - LayersList layers; - unsigned int role_flags; - - void set_default(); - bool is_role_flag_set(ExtrusionRole role) const; - - // Return an estimate of the memory consumed by the time estimator. - size_t memory_used() const; - - static bool is_role_flag_set(unsigned int flags, ExtrusionRole role); - }; - - struct Travel - { - enum EType : unsigned char - { - Move, - Extrude, - Retract, - Num_Types - }; - - static const float Default_Width; - static const float Default_Height; - static const Color Default_Type_Colors[Num_Types]; - - struct Polyline - { - enum EDirection - { - Vertical, - Generic, - Num_Directions - }; - - EType type; - EDirection direction; - float feedrate; - unsigned int extruder_id; - Polyline3 polyline; - - Polyline(EType type, EDirection direction, float feedrate, unsigned int extruder_id, const Polyline3& polyline); - }; - - typedef std::vector PolylinesList; - - PolylinesList polylines; - float width; - float height; - Color type_colors[Num_Types]; - bool is_visible; - size_t color_print_idx; - - void set_default(); - - // Return an estimate of the memory consumed by the time estimator. - size_t memory_used() const; - }; - - struct Retraction - { - static const Color Default_Color; - - struct Position - { - Vec3crd position; - float width; - float height; - - Position(const Vec3crd& position, float width, float height); - }; - - typedef std::vector PositionsList; - - PositionsList positions; - Color color; - bool is_visible; - - void set_default(); - - // Return an estimate of the memory consumed by the time estimator. - size_t memory_used() const; - }; - - struct Shell - { - bool is_visible; - - void set_default(); - }; - - Extrusion extrusion; - Travel travel; - Retraction retraction; - Retraction unretraction; - Shell shell; - Ranges ranges; - - GCodePreviewData(); - - void set_default(); - void reset(); - bool empty() const; - - Color get_extrusion_role_color(ExtrusionRole role) const; - Color get_height_color(float height) const; - Color get_width_color(float width) const; - Color get_feedrate_color(float feedrate) const; - Color get_fan_speed_color(float fan_speed) const; - Color get_volumetric_rate_color(float rate) const; - - void set_extrusion_role_color(const std::string& role_name, float red, float green, float blue, float alpha); - void set_extrusion_paths_colors(const std::vector& colors); - - std::string get_legend_title() const; - LegendItemsList get_legend_items(const std::vector& tool_colors, const std::vector& cp_items) const; - - // Return an estimate of the memory consumed by the time estimator. - size_t memory_used() const; - - static const std::vector& ColorPrintColors(); -}; - -} // namespace Slic3r - -#endif // !ENABLE_GCODE_VIEWER - -#endif /* slic3r_GCode_PreviewData_hpp_ */ diff --git a/src/libslic3r/GCode/WipeTower.cpp b/src/libslic3r/GCode/WipeTower.cpp index 8bb441786f..c70ef8ae09 100644 --- a/src/libslic3r/GCode/WipeTower.cpp +++ b/src/libslic3r/GCode/WipeTower.cpp @@ -5,11 +5,7 @@ #include #include -#if ENABLE_GCODE_VIEWER #include "GCodeProcessor.hpp" -#else -#include "Analyzer.hpp" -#endif // ENABLE_GCODE_VIEWER #include "BoundingBox.hpp" @@ -38,25 +34,18 @@ public: m_extrusion_flow(0.f), m_preview_suppressed(false), m_elapsed_time(0.f), -#if !ENABLE_GCODE_VIEWER || ENABLE_GCODE_VIEWER_DATA_CHECKING +#if ENABLE_GCODE_VIEWER_DATA_CHECKING m_default_analyzer_line_width(line_width), -#endif // !ENABLE_GCODE_VIEWER || ENABLE_GCODE_VIEWER_DATA_CHECKING +#endif // ENABLE_GCODE_VIEWER_DATA_CHECKING m_gcode_flavor(flavor), m_filpar(filament_parameters) { // adds tag for analyzer: char buf[64]; -#if ENABLE_GCODE_VIEWER sprintf(buf, ";%s%f\n", GCodeProcessor::Height_Tag.c_str(), m_layer_height); // don't rely on GCodeAnalyzer knowing the layer height - it knows nothing at priming m_gcode += buf; sprintf(buf, ";%s%s\n", GCodeProcessor::Extrusion_Role_Tag.c_str(), ExtrusionEntity::role_to_string(erWipeTower).c_str()); m_gcode += buf; -#else - sprintf(buf, ";%s%f\n", GCodeAnalyzer::Height_Tag.c_str(), m_layer_height); // don't rely on GCodeAnalyzer knowing the layer height - it knows nothing at priming - m_gcode += buf; - sprintf(buf, ";%s%d\n", GCodeAnalyzer::Extrusion_Role_Tag.c_str(), erWipeTower); - m_gcode += buf; -#endif // ENABLE_GCODE_VIEWER #if ENABLE_GCODE_VIEWER_DATA_CHECKING change_analyzer_line_width(line_width); #endif // ENABLE_GCODE_VIEWER_DATA_CHECKING @@ -80,26 +69,6 @@ public: m_gcode += buf; return *this; } -#else -#if !ENABLE_GCODE_VIEWER - WipeTowerWriter& change_analyzer_line_width(float line_width) { - // adds tag for analyzer: - char buf[64]; - sprintf(buf, ";%s%f\n", GCodeAnalyzer::Width_Tag.c_str(), line_width); - m_gcode += buf; - return *this; - } - - WipeTowerWriter& change_analyzer_mm3_per_mm(float len, float e) { - static const float area = float(M_PI) * 1.75f * 1.75f / 4.f; - float mm3_per_mm = (len == 0.f ? 0.f : area * e / len); - // adds tag for analyzer: - char buf[64]; - sprintf(buf, ";%s%f\n", GCodeAnalyzer::Mm3_Per_Mm_Tag.c_str(), mm3_per_mm); - m_gcode += buf; - return *this; - } -#endif // !ENABLE_GCODE_VIEWER #endif // ENABLE_GCODE_VIEWER_DATA_CHECKING WipeTowerWriter& set_initial_position(const Vec2f &pos, float width = 0.f, float depth = 0.f, float internal_angle = 0.f) { @@ -135,13 +104,13 @@ public: // Suppress / resume G-code preview in Slic3r. Slic3r will have difficulty to differentiate the various // filament loading and cooling moves from normal extrusion moves. Therefore the writer // is asked to suppres output of some lines, which look like extrusions. -#if !ENABLE_GCODE_VIEWER || ENABLE_GCODE_VIEWER_DATA_CHECKING +#if ENABLE_GCODE_VIEWER_DATA_CHECKING WipeTowerWriter& suppress_preview() { change_analyzer_line_width(0.f); m_preview_suppressed = true; return *this; } WipeTowerWriter& resume_preview() { change_analyzer_line_width(m_default_analyzer_line_width); m_preview_suppressed = false; return *this; } #else WipeTowerWriter& suppress_preview() { m_preview_suppressed = true; return *this; } WipeTowerWriter& resume_preview() { m_preview_suppressed = false; return *this; } -#endif // !ENABLE_GCODE_VIEWER || ENABLE_GCODE_VIEWER_DATA_CHECKING +#endif // ENABLE_GCODE_VIEWER_DATA_CHECKING WipeTowerWriter& feedrate(float f) { @@ -180,10 +149,6 @@ public: if (! m_preview_suppressed && e > 0.f && len > 0.f) { #if ENABLE_GCODE_VIEWER_DATA_CHECKING change_analyzer_mm3_per_mm(len, e); -#else -#if !ENABLE_GCODE_VIEWER - change_analyzer_mm3_per_mm(len, e); -#endif // !ENABLE_GCODE_VIEWER #endif // ENABLE_GCODE_VIEWER_DATA_CHECKING // Width of a squished extrusion, corrected for the roundings of the squished extrusions. // This is left zero if it is a travel move. @@ -463,9 +428,9 @@ private: float m_wipe_tower_depth = 0.f; unsigned m_last_fan_speed = 0; int current_temp = -1; -#if !ENABLE_GCODE_VIEWER || ENABLE_GCODE_VIEWER_DATA_CHECKING +#if ENABLE_GCODE_VIEWER_DATA_CHECKING const float m_default_analyzer_line_width; -#endif // !ENABLE_GCODE_VIEWER || ENABLE_GCODE_VIEWER_DATA_CHECKING +#endif // ENABLE_GCODE_VIEWER_DATA_CHECKING float m_used_filament_length = 0.f; GCodeFlavor m_gcode_flavor; const std::vector& m_filpar; diff --git a/src/libslic3r/GCodeReader.cpp b/src/libslic3r/GCodeReader.cpp index ee24d5bb76..2ef238f105 100644 --- a/src/libslic3r/GCodeReader.cpp +++ b/src/libslic3r/GCodeReader.cpp @@ -1,9 +1,7 @@ #include "GCodeReader.hpp" #include #include -#if ENABLE_GCODE_VIEWER #include -#endif // ENABLE_GCODE_VIEWER #include #include #include @@ -116,18 +114,10 @@ void GCodeReader::update_coordinates(GCodeLine &gline, std::pairparse_line(line, callback); } diff --git a/src/libslic3r/GCodeReader.hpp b/src/libslic3r/GCodeReader.hpp index 7e0793cd9b..d90a231608 100644 --- a/src/libslic3r/GCodeReader.hpp +++ b/src/libslic3r/GCodeReader.hpp @@ -6,6 +6,7 @@ #include #include #include +#include #include "PrintConfig.hpp" namespace Slic3r { @@ -17,13 +18,13 @@ public: GCodeLine() { reset(); } void reset() { m_mask = 0; memset(m_axis, 0, sizeof(m_axis)); m_raw.clear(); } - const std::string& raw() const { return m_raw; } - const std::string cmd() const { + const std::string& raw() const { return m_raw; } + const std::string_view cmd() const { const char *cmd = GCodeReader::skip_whitespaces(m_raw.c_str()); - return std::string(cmd, GCodeReader::skip_word(cmd)); + return std::string_view(cmd, GCodeReader::skip_word(cmd) - cmd); } - const std::string comment() const - { size_t pos = m_raw.find(';'); return (pos == std::string::npos) ? "" : m_raw.substr(pos + 1); } + const std::string_view comment() const + { size_t pos = m_raw.find(';'); return (pos == std::string::npos) ? std::string_view() : std::string_view(m_raw).substr(pos + 1); } bool has(Axis axis) const { return (m_mask & (1 << int(axis))) != 0; } float value(Axis axis) const { return m_axis[axis]; } @@ -107,9 +108,7 @@ public: { GCodeLine gline; this->parse_line(line.c_str(), gline, callback); } void parse_file(const std::string &file, callback_t callback); -#if ENABLE_GCODE_VIEWER void quit_parsing_file() { m_parsing_file = false; } -#endif // ENABLE_GCODE_VIEWER float& x() { return m_position[X]; } float x() const { return m_position[X]; } @@ -148,9 +147,7 @@ private: char m_extrusion_axis; float m_position[NUM_AXES]; bool m_verbose; -#if ENABLE_GCODE_VIEWER bool m_parsing_file{ false }; -#endif // ENABLE_GCODE_VIEWER }; } /* namespace Slic3r */ diff --git a/src/libslic3r/GCodeTimeEstimator.cpp b/src/libslic3r/GCodeTimeEstimator.cpp deleted file mode 100644 index 68075c1239..0000000000 --- a/src/libslic3r/GCodeTimeEstimator.cpp +++ /dev/null @@ -1,1679 +0,0 @@ -#include "Exception.hpp" -#include "GCodeTimeEstimator.hpp" -#include "Utils.hpp" -#include -#include - -#include - -#include -#include -#include - -#if !ENABLE_GCODE_VIEWER - -static const float MMMIN_TO_MMSEC = 1.0f / 60.0f; -static const float MILLISEC_TO_SEC = 0.001f; -static const float INCHES_TO_MM = 25.4f; - -static const float DEFAULT_FEEDRATE = 1500.0f; // from Prusa Firmware (Marlin_main.cpp) -static const float DEFAULT_ACCELERATION = 1500.0f; // Prusa Firmware 1_75mm_MK2 -static const float DEFAULT_RETRACT_ACCELERATION = 1500.0f; // Prusa Firmware 1_75mm_MK2 -static const float DEFAULT_AXIS_MAX_FEEDRATE[] = { 500.0f, 500.0f, 12.0f, 120.0f }; // Prusa Firmware 1_75mm_MK2 -static const float DEFAULT_AXIS_MAX_ACCELERATION[] = { 9000.0f, 9000.0f, 500.0f, 10000.0f }; // Prusa Firmware 1_75mm_MK2 -static const float DEFAULT_AXIS_MAX_JERK[] = { 10.0f, 10.0f, 0.4f, 2.5f }; // from Prusa Firmware (Configuration.h) -static const float DEFAULT_MINIMUM_FEEDRATE = 0.0f; // from Prusa Firmware (Configuration_adv.h) -static const float DEFAULT_MINIMUM_TRAVEL_FEEDRATE = 0.0f; // from Prusa Firmware (Configuration_adv.h) -static const float DEFAULT_EXTRUDE_FACTOR_OVERRIDE_PERCENTAGE = 1.0f; // 100 percent - -static const float PREVIOUS_FEEDRATE_THRESHOLD = 0.0001f; - -#if ENABLE_MOVE_STATS -static const std::string MOVE_TYPE_STR[Slic3r::GCodeTimeEstimator::Block::Num_Types] = -{ - "Noop", - "Retract", - "Unretract", - "Tool_change", - "Move", - "Extrude" -}; -#endif // ENABLE_MOVE_STATS - -namespace Slic3r { - void GCodeTimeEstimator::Feedrates::reset() - { - feedrate = 0.0f; - safe_feedrate = 0.0f; - ::memset(axis_feedrate, 0, Num_Axis * sizeof(float)); - ::memset(abs_axis_feedrate, 0, Num_Axis * sizeof(float)); - } - - float GCodeTimeEstimator::Block::Trapezoid::acceleration_time(float entry_feedrate, float acceleration) const - { - return acceleration_time_from_distance(entry_feedrate, accelerate_until, acceleration); - } - - float GCodeTimeEstimator::Block::Trapezoid::cruise_time() const - { - return (cruise_feedrate != 0.0f) ? cruise_distance() / cruise_feedrate : 0.0f; - } - - float GCodeTimeEstimator::Block::Trapezoid::deceleration_time(float distance, float acceleration) const - { - return acceleration_time_from_distance(cruise_feedrate, (distance - decelerate_after), -acceleration); - } - - float GCodeTimeEstimator::Block::Trapezoid::cruise_distance() const - { - return decelerate_after - accelerate_until; - } - - float GCodeTimeEstimator::Block::Trapezoid::acceleration_time_from_distance(float initial_feedrate, float distance, float acceleration) - { - return (acceleration != 0.0f) ? (speed_from_distance(initial_feedrate, distance, acceleration) - initial_feedrate) / acceleration : 0.0f; - } - - float GCodeTimeEstimator::Block::Trapezoid::speed_from_distance(float initial_feedrate, float distance, float acceleration) - { - // to avoid invalid negative numbers due to numerical imprecision - float value = std::max(0.0f, sqr(initial_feedrate) + 2.0f * acceleration * distance); - return ::sqrt(value); - } - - float GCodeTimeEstimator::Block::acceleration_time() const - { - return trapezoid.acceleration_time(feedrate.entry, acceleration); - } - - float GCodeTimeEstimator::Block::cruise_time() const - { - return trapezoid.cruise_time(); - } - - float GCodeTimeEstimator::Block::deceleration_time() const - { - return trapezoid.deceleration_time(distance, acceleration); - } - - float GCodeTimeEstimator::Block::cruise_distance() const - { - return trapezoid.cruise_distance(); - } - - void GCodeTimeEstimator::Block::calculate_trapezoid() - { - trapezoid.cruise_feedrate = feedrate.cruise; - - float accelerate_distance = std::max(0.0f, estimate_acceleration_distance(feedrate.entry, feedrate.cruise, acceleration)); - float decelerate_distance = std::max(0.0f, estimate_acceleration_distance(feedrate.cruise, feedrate.exit, -acceleration)); - float cruise_distance = distance - accelerate_distance - decelerate_distance; - - // Not enough space to reach the nominal feedrate. - // This means no cruising, and we'll have to use intersection_distance() to calculate when to abort acceleration - // and start braking in order to reach the exit_feedrate exactly at the end of this block. - if (cruise_distance < 0.0f) - { - accelerate_distance = std::clamp(intersection_distance(feedrate.entry, feedrate.exit, acceleration, distance), 0.0f, distance); - cruise_distance = 0.0f; - trapezoid.cruise_feedrate = Trapezoid::speed_from_distance(feedrate.entry, accelerate_distance, acceleration); - } - - trapezoid.accelerate_until = accelerate_distance; - trapezoid.decelerate_after = accelerate_distance + cruise_distance; - } - - float GCodeTimeEstimator::Block::max_allowable_speed(float acceleration, float target_velocity, float distance) - { - // to avoid invalid negative numbers due to numerical imprecision - float value = std::max(0.0f, sqr(target_velocity) - 2.0f * acceleration * distance); - return ::sqrt(value); - } - - float GCodeTimeEstimator::Block::estimate_acceleration_distance(float initial_rate, float target_rate, float acceleration) - { - return (acceleration == 0.0f) ? 0.0f : (sqr(target_rate) - sqr(initial_rate)) / (2.0f * acceleration); - } - - float GCodeTimeEstimator::Block::intersection_distance(float initial_rate, float final_rate, float acceleration, float distance) - { - return (acceleration == 0.0f) ? 0.0f : (2.0f * acceleration * distance - sqr(initial_rate) + sqr(final_rate)) / (4.0f * acceleration); - } - -#if ENABLE_MOVE_STATS - GCodeTimeEstimator::MoveStats::MoveStats() - : count(0) - , time(0.0f) - { - } -#endif // ENABLE_MOVE_STATS - - const std::string GCodeTimeEstimator::Normal_First_M73_Output_Placeholder_Tag = "; _TE_NORMAL_FIRST_M73_OUTPUT_PLACEHOLDER"; - const std::string GCodeTimeEstimator::Silent_First_M73_Output_Placeholder_Tag = "; _TE_SILENT_FIRST_M73_OUTPUT_PLACEHOLDER"; - const std::string GCodeTimeEstimator::Normal_Last_M73_Output_Placeholder_Tag = "; _TE_NORMAL_LAST_M73_OUTPUT_PLACEHOLDER"; - const std::string GCodeTimeEstimator::Silent_Last_M73_Output_Placeholder_Tag = "; _TE_SILENT_LAST_M73_OUTPUT_PLACEHOLDER"; - - const std::string GCodeTimeEstimator::Color_Change_Tag = "PRINT_COLOR_CHANGE"; - const std::string GCodeTimeEstimator::Pause_Print_Tag = "PRINT_PAUSE"; - - GCodeTimeEstimator::GCodeTimeEstimator(EMode mode) - : m_mode(mode) - { - reset(); - set_default(); - } - - void GCodeTimeEstimator::add_gcode_line(const std::string& gcode_line) - { - PROFILE_FUNC(); - m_parser.parse_line(gcode_line, - [this](GCodeReader &reader, const GCodeReader::GCodeLine &line) - { this->_process_gcode_line(reader, line); }); - } - - void GCodeTimeEstimator::add_gcode_block(const char *ptr) - { - PROFILE_FUNC(); - GCodeReader::GCodeLine gline; - auto action = [this](GCodeReader &reader, const GCodeReader::GCodeLine &line) - { this->_process_gcode_line(reader, line); }; - for (; *ptr != 0;) { - gline.reset(); - ptr = m_parser.parse_line(ptr, gline, action); - } - } - - void GCodeTimeEstimator::calculate_time(bool start_from_beginning) - { - PROFILE_FUNC(); - if (start_from_beginning) - _reset_time(); - _calculate_time(0); - - if (m_needs_custom_gcode_times && (m_custom_gcode_time_cache != 0.0f)) - m_custom_gcode_times.push_back({CustomGCode::ColorChange, m_custom_gcode_time_cache }); - -#if ENABLE_MOVE_STATS - _log_moves_stats(); -#endif // ENABLE_MOVE_STATS - } - -#if 0 - void GCodeTimeEstimator::calculate_time_from_text(const std::string& gcode) - { - reset(); - - m_parser.parse_buffer(gcode, - [this](GCodeReader &reader, const GCodeReader::GCodeLine &line) - { this->_process_gcode_line(reader, line); }); - - _calculate_time(0); - - if (m_needs_custom_gcode_times && (m_custom_gcode_time_cache != 0.0f)) - m_custom_gcode_times.push_back({ cgtColorChange, m_custom_gcode_time_cache }); - -#if ENABLE_MOVE_STATS - _log_moves_stats(); -#endif // ENABLE_MOVE_STATS - } - - void GCodeTimeEstimator::calculate_time_from_file(const std::string& file) - { - reset(); - - m_parser.parse_file(file, boost::bind(&GCodeTimeEstimator::_process_gcode_line, this, _1, _2)); - _calculate_time(0); - - if (m_needs_custom_gcode_times && (m_custom_gcode_time_cache != 0.0f)) - m_custom_gcode_times.push_back({ cgtColorChange, m_custom_gcode_time_cache }); - -#if ENABLE_MOVE_STATS - _log_moves_stats(); -#endif // ENABLE_MOVE_STATS - } - - void GCodeTimeEstimator::calculate_time_from_lines(const std::vector& gcode_lines) - { - reset(); - - auto action = [this](GCodeReader &reader, const GCodeReader::GCodeLine &line) - { this->_process_gcode_line(reader, line); }; - for (const std::string& line : gcode_lines) - m_parser.parse_line(line, action); - _calculate_time(0); - - if (m_needs_custom_gcode_times && (m_custom_gcode_time_cache != 0.0f)) - m_custom_gcode_times.push_back({ cgtColorChange, m_custom_gcode_time_cache}); - -#if ENABLE_MOVE_STATS - _log_moves_stats(); -#endif // ENABLE_MOVE_STATS - } -#endif - - bool GCodeTimeEstimator::post_process(const std::string& filename, float interval_sec, const PostProcessData* const normal_mode, const PostProcessData* const silent_mode) - { - boost::nowide::ifstream in(filename); - if (!in.good()) - throw Slic3r::RuntimeError(std::string("Time estimator post process export failed.\nCannot open file for reading.\n")); - - std::string path_tmp = filename + ".postprocess"; - - FILE* out = boost::nowide::fopen(path_tmp.c_str(), "wb"); - if (out == nullptr) - throw Slic3r::RuntimeError(std::string("Time estimator post process export failed.\nCannot open file for writing.\n")); - - std::string normal_time_mask = "M73 P%s R%s\n"; - std::string silent_time_mask = "M73 Q%s S%s\n"; - char line_M73[64]; - - std::string gcode_line; - // buffer line to export only when greater than 64K to reduce writing calls - std::string export_line; - - // helper function to write to disk - auto write_string = [&](const std::string& str) { - fwrite((const void*)export_line.c_str(), 1, export_line.length(), out); - if (ferror(out)) - { - in.close(); - fclose(out); - boost::nowide::remove(path_tmp.c_str()); - throw Slic3r::RuntimeError(std::string("Time estimator post process export failed.\nIs the disk full?\n")); - } - export_line.clear(); - }; - - GCodeReader parser; - int g1_lines_count = 0; - int normal_g1_line_id = 0; - float normal_last_recorded_time = 0.0f; - int silent_g1_line_id = 0; - float silent_last_recorded_time = 0.0f; - - // helper function to process g1 lines - auto process_g1_line = [&](const PostProcessData* const data, const GCodeReader::GCodeLine& line, int& g1_line_id, float& last_recorded_time, const std::string& time_mask) { - if (data == nullptr) - return; - - assert((g1_line_id >= (int)data->g1_times.size()) || (data->g1_times[g1_line_id].first >= (int)g1_lines_count)); - float elapsed_time = -1.0f; - if (g1_line_id < (int)data->g1_times.size()) - { - const G1LineIdTime& map_item = data->g1_times[g1_line_id]; - if (map_item.first == g1_lines_count) - { - if (line.has_e()) - elapsed_time = map_item.second; - ++g1_line_id; - } - } - - if (elapsed_time != -1.0f) - { - float block_remaining_time = data->time - elapsed_time; - if (std::abs(last_recorded_time - block_remaining_time) > interval_sec) - { - sprintf(line_M73, time_mask.c_str(), std::to_string((int)(100.0f * elapsed_time / data->time)).c_str(), _get_time_minutes(block_remaining_time).c_str()); - gcode_line += line_M73; - - last_recorded_time = block_remaining_time; - } - } - }; - - while (std::getline(in, gcode_line)) - { - if (!in.good()) - { - fclose(out); - throw Slic3r::RuntimeError(std::string("Time estimator post process export failed.\nError while reading from file.\n")); - } - - // check tags - // remove Color_Change_Tag and Pause_Print_Tag - if (gcode_line == "; " + Color_Change_Tag || gcode_line == "; " + Pause_Print_Tag) - continue; - - // replaces placeholders for initial line M73 with the real lines - if ((normal_mode != nullptr) && (gcode_line == Normal_First_M73_Output_Placeholder_Tag)) - { - sprintf(line_M73, normal_time_mask.c_str(), "0", _get_time_minutes(normal_mode->time).c_str()); - gcode_line = line_M73; - } - else if ((silent_mode != nullptr) && (gcode_line == Silent_First_M73_Output_Placeholder_Tag)) - { - sprintf(line_M73, silent_time_mask.c_str(), "0", _get_time_minutes(silent_mode->time).c_str()); - gcode_line = line_M73; - } - // replaces placeholders for final line M73 with the real lines - else if ((normal_mode != nullptr) && (gcode_line == Normal_Last_M73_Output_Placeholder_Tag)) - { - sprintf(line_M73, normal_time_mask.c_str(), "100", "0"); - gcode_line = line_M73; - } - else if ((silent_mode != nullptr) && (gcode_line == Silent_Last_M73_Output_Placeholder_Tag)) - { - sprintf(line_M73, silent_time_mask.c_str(), "100", "0"); - gcode_line = line_M73; - } - else - gcode_line += "\n"; - - // add remaining time lines where needed - parser.parse_line(gcode_line, - [&](GCodeReader& reader, const GCodeReader::GCodeLine& line) - { - if (line.cmd_is("G1")) - { - ++g1_lines_count; - process_g1_line(silent_mode, line, silent_g1_line_id, silent_last_recorded_time, silent_time_mask); - process_g1_line(normal_mode, line, normal_g1_line_id, normal_last_recorded_time, normal_time_mask); - } - }); - - export_line += gcode_line; - if (export_line.length() > 65535) - write_string(export_line); - } - - if (!export_line.empty()) - write_string(export_line); - - fclose(out); - in.close(); - - if (rename_file(path_tmp, filename)) - throw Slic3r::RuntimeError(std::string("Failed to rename the output G-code file from ") + path_tmp + " to " + filename + '\n' + - "Is " + path_tmp + " locked?" + '\n'); - - return true; - } - - void GCodeTimeEstimator::set_axis_position(EAxis axis, float position) - { - m_state.axis[axis].position = position; - } - - void GCodeTimeEstimator::set_axis_origin(EAxis axis, float position) - { - m_state.axis[axis].origin = position; - } - - void GCodeTimeEstimator::set_axis_max_feedrate(EAxis axis, float feedrate_mm_sec) - { - m_state.axis[axis].max_feedrate = feedrate_mm_sec; - } - - void GCodeTimeEstimator::set_axis_max_acceleration(EAxis axis, float acceleration) - { - m_state.axis[axis].max_acceleration = acceleration; - } - - void GCodeTimeEstimator::set_axis_max_jerk(EAxis axis, float jerk) - { - m_state.axis[axis].max_jerk = jerk; - } - - float GCodeTimeEstimator::get_axis_position(EAxis axis) const - { - return m_state.axis[axis].position; - } - - float GCodeTimeEstimator::get_axis_origin(EAxis axis) const - { - return m_state.axis[axis].origin; - } - - float GCodeTimeEstimator::get_axis_max_feedrate(EAxis axis) const - { - return m_state.axis[axis].max_feedrate; - } - - float GCodeTimeEstimator::get_axis_max_acceleration(EAxis axis) const - { - return m_state.axis[axis].max_acceleration; - } - - float GCodeTimeEstimator::get_axis_max_jerk(EAxis axis) const - { - return m_state.axis[axis].max_jerk; - } - - void GCodeTimeEstimator::set_feedrate(float feedrate_mm_sec) - { - m_state.feedrate = feedrate_mm_sec; - } - - float GCodeTimeEstimator::get_feedrate() const - { - return m_state.feedrate; - } - - void GCodeTimeEstimator::set_acceleration(float acceleration_mm_sec2) - { - m_state.acceleration = (m_state.max_acceleration == 0) ? - acceleration_mm_sec2 : - // Clamp the acceleration with the maximum. - std::min(m_state.max_acceleration, acceleration_mm_sec2); - } - - float GCodeTimeEstimator::get_acceleration() const - { - return m_state.acceleration; - } - - void GCodeTimeEstimator::set_max_acceleration(float acceleration_mm_sec2) - { - m_state.max_acceleration = acceleration_mm_sec2; - if (acceleration_mm_sec2 > 0) - m_state.acceleration = acceleration_mm_sec2; - } - - float GCodeTimeEstimator::get_max_acceleration() const - { - return m_state.max_acceleration; - } - - void GCodeTimeEstimator::set_retract_acceleration(float acceleration_mm_sec2) - { - m_state.retract_acceleration = acceleration_mm_sec2; - } - - float GCodeTimeEstimator::get_retract_acceleration() const - { - return m_state.retract_acceleration; - } - - void GCodeTimeEstimator::set_minimum_feedrate(float feedrate_mm_sec) - { - m_state.minimum_feedrate = feedrate_mm_sec; - } - - float GCodeTimeEstimator::get_minimum_feedrate() const - { - return m_state.minimum_feedrate; - } - - void GCodeTimeEstimator::set_minimum_travel_feedrate(float feedrate_mm_sec) - { - m_state.minimum_travel_feedrate = feedrate_mm_sec; - } - - float GCodeTimeEstimator::get_minimum_travel_feedrate() const - { - return m_state.minimum_travel_feedrate; - } - - void GCodeTimeEstimator::set_filament_load_times(const std::vector &filament_load_times) - { - m_state.filament_load_times.clear(); - for (double t : filament_load_times) - m_state.filament_load_times.push_back((float)t); - } - - void GCodeTimeEstimator::set_filament_unload_times(const std::vector &filament_unload_times) - { - m_state.filament_unload_times.clear(); - for (double t : filament_unload_times) - m_state.filament_unload_times.push_back((float)t); - } - - float GCodeTimeEstimator::get_filament_load_time(unsigned int id_extruder) - { - return - (m_state.filament_load_times.empty() || id_extruder == m_state.extruder_id_unloaded) ? - 0 : - (m_state.filament_load_times.size() <= id_extruder) ? - m_state.filament_load_times.front() : - m_state.filament_load_times[id_extruder]; - } - - float GCodeTimeEstimator::get_filament_unload_time(unsigned int id_extruder) - { - return - (m_state.filament_unload_times.empty() || id_extruder == m_state.extruder_id_unloaded) ? - 0 : - (m_state.filament_unload_times.size() <= id_extruder) ? - m_state.filament_unload_times.front() : - m_state.filament_unload_times[id_extruder]; - } - - void GCodeTimeEstimator::set_extrude_factor_override_percentage(float percentage) - { - m_state.extrude_factor_override_percentage = percentage; - } - - float GCodeTimeEstimator::get_extrude_factor_override_percentage() const - { - return m_state.extrude_factor_override_percentage; - } - - void GCodeTimeEstimator::set_dialect(GCodeFlavor dialect) - { - m_state.dialect = dialect; - } - - GCodeFlavor GCodeTimeEstimator::get_dialect() const - { - PROFILE_FUNC(); - return m_state.dialect; - } - - void GCodeTimeEstimator::set_units(GCodeTimeEstimator::EUnits units) - { - m_state.units = units; - } - - GCodeTimeEstimator::EUnits GCodeTimeEstimator::get_units() const - { - return m_state.units; - } - - void GCodeTimeEstimator::set_global_positioning_type(GCodeTimeEstimator::EPositioningType type) - { - m_state.global_positioning_type = type; - } - - GCodeTimeEstimator::EPositioningType GCodeTimeEstimator::get_global_positioning_type() const - { - return m_state.global_positioning_type; - } - - void GCodeTimeEstimator::set_e_local_positioning_type(GCodeTimeEstimator::EPositioningType type) - { - m_state.e_local_positioning_type = type; - } - - GCodeTimeEstimator::EPositioningType GCodeTimeEstimator::get_e_local_positioning_type() const - { - return m_state.e_local_positioning_type; - } - - int GCodeTimeEstimator::get_g1_line_id() const - { - return m_state.g1_line_id; - } - - void GCodeTimeEstimator::increment_g1_line_id() - { - ++m_state.g1_line_id; - } - - void GCodeTimeEstimator::reset_g1_line_id() - { - m_state.g1_line_id = 0; - } - - void GCodeTimeEstimator::set_extruder_id(unsigned int id) - { - m_state.extruder_id = id; - } - - unsigned int GCodeTimeEstimator::get_extruder_id() const - { - return m_state.extruder_id; - } - - void GCodeTimeEstimator::reset_extruder_id() - { - // Set the initial extruder ID to unknown. For the multi-material setup it means - // that all the filaments are parked in the MMU and no filament is loaded yet. - m_state.extruder_id = m_state.extruder_id_unloaded; - } - - void GCodeTimeEstimator::set_default() - { - set_units(Millimeters); - set_dialect(gcfRepRapSprinter); - set_global_positioning_type(Absolute); - set_e_local_positioning_type(Absolute); - - set_feedrate(DEFAULT_FEEDRATE); - // Setting the maximum acceleration to zero means that the there is no limit and the G-code - // is allowed to set excessive values. - set_max_acceleration(0); - set_acceleration(DEFAULT_ACCELERATION); - set_retract_acceleration(DEFAULT_RETRACT_ACCELERATION); - set_minimum_feedrate(DEFAULT_MINIMUM_FEEDRATE); - set_minimum_travel_feedrate(DEFAULT_MINIMUM_TRAVEL_FEEDRATE); - set_extrude_factor_override_percentage(DEFAULT_EXTRUDE_FACTOR_OVERRIDE_PERCENTAGE); - - for (unsigned char a = X; a < Num_Axis; ++a) - { - EAxis axis = (EAxis)a; - set_axis_max_feedrate(axis, DEFAULT_AXIS_MAX_FEEDRATE[a]); - set_axis_max_acceleration(axis, DEFAULT_AXIS_MAX_ACCELERATION[a]); - set_axis_max_jerk(axis, DEFAULT_AXIS_MAX_JERK[a]); - } - - m_state.filament_load_times.clear(); - m_state.filament_unload_times.clear(); - } - - void GCodeTimeEstimator::reset() - { - _reset_time(); -#if ENABLE_MOVE_STATS - _moves_stats.clear(); -#endif // ENABLE_MOVE_STATS - _reset_blocks(); - _reset(); - } - - float GCodeTimeEstimator::get_time() const - { - return m_time; - } - - std::string GCodeTimeEstimator::get_time_dhms() const - { - return _get_time_dhms(get_time()); - } - - std::string GCodeTimeEstimator::get_time_dhm() const - { - return _get_time_dhm(get_time()); - } - - std::string GCodeTimeEstimator::get_time_minutes() const - { - return _get_time_minutes(get_time()); - } - - std::vector> GCodeTimeEstimator::get_custom_gcode_times() const - { - return m_custom_gcode_times; - } - - std::vector GCodeTimeEstimator::get_color_times_dhms(bool include_remaining) const - { - std::vector ret; - float total_time = 0.0f; -// for (float t : m_color_times) - for (auto t : m_custom_gcode_times) - { - std::string time = _get_time_dhms(t.second); - if (include_remaining) - { - time += " ("; - time += _get_time_dhms(m_time - total_time); - time += ")"; - } - total_time += t.second; - ret.push_back(time); - } - return ret; - } - - std::vector GCodeTimeEstimator::get_color_times_minutes(bool include_remaining) const - { - std::vector ret; - float total_time = 0.0f; -// for (float t : m_color_times) - for (auto t : m_custom_gcode_times) - { - std::string time = _get_time_minutes(t.second); - if (include_remaining) - { - time += " ("; - time += _get_time_minutes(m_time - total_time); - time += ")"; - } - total_time += t.second; - } - return ret; - } - - std::vector> GCodeTimeEstimator::get_custom_gcode_times_dhm(bool include_remaining) const - { - std::vector> ret; - - float total_time = 0.0f; - for (auto t : m_custom_gcode_times) - { - std::string time = _get_time_dhm(t.second); - if (include_remaining) - { - time += " ("; - time += _get_time_dhm(m_time - total_time); - time += ")"; - } - total_time += t.second; - ret.push_back({t.first, time}); - } - - return ret; - } - - // Return an estimate of the memory consumed by the time estimator. - size_t GCodeTimeEstimator::memory_used() const - { - size_t out = sizeof(*this); - out += SLIC3R_STDVEC_MEMSIZE(this->m_blocks, Block); - out += SLIC3R_STDVEC_MEMSIZE(this->m_g1_times, G1LineIdTime); - return out; - } - - void GCodeTimeEstimator::_reset() - { - m_curr.reset(); - m_prev.reset(); - - set_axis_position(X, 0.0f); - set_axis_position(Y, 0.0f); - set_axis_position(Z, 0.0f); - set_axis_origin(X, 0.0f); - set_axis_origin(Y, 0.0f); - set_axis_origin(Z, 0.0f); - - if (get_e_local_positioning_type() == Absolute) - set_axis_position(E, 0.0f); - - reset_extruder_id(); - reset_g1_line_id(); - m_g1_times.clear(); - - m_needs_custom_gcode_times = false; - m_custom_gcode_times.clear(); - m_custom_gcode_time_cache = 0.0f; - } - - void GCodeTimeEstimator::_reset_time() - { - m_time = 0.0f; - } - - void GCodeTimeEstimator::_reset_blocks() - { - m_blocks.clear(); - } - - void GCodeTimeEstimator::_calculate_time(size_t keep_last_n_blocks) - { - PROFILE_FUNC(); - - assert(keep_last_n_blocks <= m_blocks.size()); - - _forward_pass(); - _reverse_pass(); - _recalculate_trapezoids(); - - size_t n_blocks_process = m_blocks.size() - keep_last_n_blocks; - m_g1_times.reserve(m_g1_times.size() + n_blocks_process); - for (size_t i = 0; i < n_blocks_process; ++ i) - { - Block& block = m_blocks[i]; - float block_time = 0.0f; - block_time += block.acceleration_time(); - block_time += block.cruise_time(); - block_time += block.deceleration_time(); - m_time += block_time; - if (block.g1_line_id >= 0) - m_g1_times.emplace_back(block.g1_line_id, m_time); - -#if ENABLE_MOVE_STATS - MovesStatsMap::iterator it = _moves_stats.find(block.move_type); - if (it == _moves_stats.end()) - it = _moves_stats.insert(MovesStatsMap::value_type(block.move_type, MoveStats())).first; - - it->second.count += 1; - it->second.time += block_time; -#endif // ENABLE_MOVE_STATS - - m_custom_gcode_time_cache += block_time; - } - - if (keep_last_n_blocks) - m_blocks.erase(m_blocks.begin(), m_blocks.begin() + n_blocks_process); - else - m_blocks.clear(); - } - - void GCodeTimeEstimator::_process_gcode_line(GCodeReader&, const GCodeReader::GCodeLine& line) - { - PROFILE_FUNC(); - - // processes 'special' comments contained in line - if (_process_tags(line)) - return; - - std::string cmd = line.cmd(); - if (cmd.length() > 1) - { - switch (::toupper(cmd[0])) - { - case 'G': - { - switch (::atoi(&cmd[1])) - { - case 1: // Move - { - _processG1(line); - break; - } - case 4: // Dwell - { - _processG4(line); - break; - } - case 20: // Set Units to Inches - { - _processG20(line); - break; - } - case 21: // Set Units to Millimeters - { - _processG21(line); - break; - } - case 28: // Move to Origin (Home) - { - _processG28(line); - break; - } - case 90: // Set to Absolute Positioning - { - _processG90(line); - break; - } - case 91: // Set to Relative Positioning - { - _processG91(line); - break; - } - case 92: // Set Position - { - _processG92(line); - break; - } - } - - break; - } - case 'M': - { - switch (::atoi(&cmd[1])) - { - case 1: // Sleep or Conditional stop - { - _processM1(line); - break; - } - case 82: // Set extruder to absolute mode - { - _processM82(line); - break; - } - case 83: // Set extruder to relative mode - { - _processM83(line); - break; - } - case 109: // Set Extruder Temperature and Wait - { - _processM109(line); - break; - } - case 201: // Set max printing acceleration - { - _processM201(line); - break; - } - case 203: // Set maximum feedrate - { - _processM203(line); - break; - } - case 204: // Set default acceleration - { - _processM204(line); - break; - } - case 205: // Advanced settings - { - _processM205(line); - break; - } - case 221: // Set extrude factor override percentage - { - _processM221(line); - break; - } - case 566: // Set allowable instantaneous speed change - { - _processM566(line); - break; - } - case 702: // MK3 MMU2: Process the final filament unload. - { - _processM702(line); - break; - } - } - - break; - } - case 'T': // Select Tools - { - _processT(line); - break; - } - } - } - } - - void GCodeTimeEstimator::_processG1(const GCodeReader::GCodeLine& line) - { - auto axis_absolute_position = [this](GCodeTimeEstimator::EAxis axis, const GCodeReader::GCodeLine& lineG1) -> float - { - float current_absolute_position = get_axis_position(axis); - float current_origin = get_axis_origin(axis); - float lengthsScaleFactor = (get_units() == GCodeTimeEstimator::Inches) ? INCHES_TO_MM : 1.0f; - - bool is_relative = (get_global_positioning_type() == Relative); - if (axis == E) - is_relative |= (get_e_local_positioning_type() == Relative); - - if (lineG1.has(Slic3r::Axis(axis))) - { - float ret = lineG1.value(Slic3r::Axis(axis)) * lengthsScaleFactor; - return is_relative ? current_absolute_position + ret : ret + current_origin; - } - else - return current_absolute_position; - }; - - // delta_pos must have size >= Num_Axis - auto move_length = [](const float* delta_pos) { - float xyz_length = std::sqrt(sqr(delta_pos[X]) + sqr(delta_pos[Y]) + sqr(delta_pos[Z])); - return (xyz_length > 0.0f) ? xyz_length : std::abs(delta_pos[E]); - }; - - // delta_pos must have size >= Num_Axis - auto is_extruder_only_move = [](const float* delta_pos) { - return (delta_pos[X] == 0.0f) && (delta_pos[Y] == 0.0f) && (delta_pos[Z] == 0.0f) && (delta_pos[E] != 0.0f); - }; - - PROFILE_FUNC(); - increment_g1_line_id(); - - // updates axes positions from line - float new_pos[Num_Axis]; - for (unsigned char a = X; a < Num_Axis; ++a) - { - new_pos[a] = axis_absolute_position((EAxis)a, line); - } - - // updates feedrate from line, if present - if (line.has_f()) - set_feedrate(std::max(line.f() * MMMIN_TO_MMSEC, get_minimum_feedrate())); - - // fills block data - Block block; - - // calculates block movement deltas - float max_abs_delta = 0.0f; - float delta_pos[Num_Axis]; - for (unsigned char a = X; a < Num_Axis; ++a) - { - delta_pos[a] = new_pos[a] - get_axis_position((EAxis)a); - max_abs_delta = std::max(max_abs_delta, std::abs(delta_pos[a])); - } - - // is it a move ? - if (max_abs_delta == 0.0f) - return; - - // calculates block feedrate - m_curr.feedrate = std::max(get_feedrate(), (delta_pos[E] == 0.0f) ? get_minimum_travel_feedrate() : get_minimum_feedrate()); - - block.distance = move_length(delta_pos); - float invDistance = 1.0f / block.distance; - - float min_feedrate_factor = 1.0f; - for (unsigned char a = X; a < Num_Axis; ++a) - { - m_curr.axis_feedrate[a] = m_curr.feedrate * delta_pos[a] * invDistance; - if (a == E) - m_curr.axis_feedrate[a] *= get_extrude_factor_override_percentage(); - - m_curr.abs_axis_feedrate[a] = std::abs(m_curr.axis_feedrate[a]); - if (m_curr.abs_axis_feedrate[a] > 0.0f) - min_feedrate_factor = std::min(min_feedrate_factor, get_axis_max_feedrate((EAxis)a) / m_curr.abs_axis_feedrate[a]); - } - - block.feedrate.cruise = min_feedrate_factor * m_curr.feedrate; - - if (min_feedrate_factor < 1.0f) - { - for (unsigned char a = X; a < Num_Axis; ++a) - { - m_curr.axis_feedrate[a] *= min_feedrate_factor; - m_curr.abs_axis_feedrate[a] *= min_feedrate_factor; - } - } - - // calculates block acceleration - float acceleration = is_extruder_only_move(delta_pos) ? get_retract_acceleration() : get_acceleration(); - - for (unsigned char a = X; a < Num_Axis; ++a) - { - float axis_max_acceleration = get_axis_max_acceleration((EAxis)a); - if (acceleration * std::abs(delta_pos[a]) * invDistance > axis_max_acceleration) - acceleration = axis_max_acceleration; - } - - block.acceleration = acceleration; - - // calculates block exit feedrate - m_curr.safe_feedrate = block.feedrate.cruise; - - for (unsigned char a = X; a < Num_Axis; ++a) - { - float axis_max_jerk = get_axis_max_jerk((EAxis)a); - if (m_curr.abs_axis_feedrate[a] > axis_max_jerk) - m_curr.safe_feedrate = std::min(m_curr.safe_feedrate, axis_max_jerk); - } - - block.feedrate.exit = m_curr.safe_feedrate; - - // calculates block entry feedrate - float vmax_junction = m_curr.safe_feedrate; - if (!m_blocks.empty() && (m_prev.feedrate > PREVIOUS_FEEDRATE_THRESHOLD)) - { - bool prev_speed_larger = m_prev.feedrate > block.feedrate.cruise; - float smaller_speed_factor = prev_speed_larger ? (block.feedrate.cruise / m_prev.feedrate) : (m_prev.feedrate / block.feedrate.cruise); - // Pick the smaller of the nominal speeds. Higher speed shall not be achieved at the junction during coasting. - vmax_junction = prev_speed_larger ? block.feedrate.cruise : m_prev.feedrate; - - float v_factor = 1.0f; - bool limited = false; - - for (unsigned char a = X; a < Num_Axis; ++a) - { - // Limit an axis. We have to differentiate coasting from the reversal of an axis movement, or a full stop. - float v_exit = m_prev.axis_feedrate[a]; - float v_entry = m_curr.axis_feedrate[a]; - - if (prev_speed_larger) - v_exit *= smaller_speed_factor; - - if (limited) - { - v_exit *= v_factor; - v_entry *= v_factor; - } - - // Calculate the jerk depending on whether the axis is coasting in the same direction or reversing a direction. - float jerk = - (v_exit > v_entry) ? - (((v_entry > 0.0f) || (v_exit < 0.0f)) ? - // coasting - (v_exit - v_entry) : - // axis reversal - std::max(v_exit, -v_entry)) : - // v_exit <= v_entry - (((v_entry < 0.0f) || (v_exit > 0.0f)) ? - // coasting - (v_entry - v_exit) : - // axis reversal - std::max(-v_exit, v_entry)); - - float axis_max_jerk = get_axis_max_jerk((EAxis)a); - if (jerk > axis_max_jerk) - { - v_factor *= axis_max_jerk / jerk; - limited = true; - } - } - - if (limited) - vmax_junction *= v_factor; - - // Now the transition velocity is known, which maximizes the shared exit / entry velocity while - // respecting the jerk factors, it may be possible, that applying separate safe exit / entry velocities will achieve faster prints. - float vmax_junction_threshold = vmax_junction * 0.99f; - - // Not coasting. The machine will stop and start the movements anyway, better to start the segment from start. - if ((m_prev.safe_feedrate > vmax_junction_threshold) && (m_curr.safe_feedrate > vmax_junction_threshold)) - vmax_junction = m_curr.safe_feedrate; - } - - float v_allowable = Block::max_allowable_speed(-acceleration, m_curr.safe_feedrate, block.distance); - block.feedrate.entry = std::min(vmax_junction, v_allowable); - - block.max_entry_speed = vmax_junction; - block.flags.nominal_length = (block.feedrate.cruise <= v_allowable); - block.flags.recalculate = true; - block.safe_feedrate = m_curr.safe_feedrate; - - // calculates block trapezoid - block.calculate_trapezoid(); - - // updates previous - m_prev = m_curr; - - // updates axis positions - for (unsigned char a = X; a < Num_Axis; ++a) - { - set_axis_position((EAxis)a, new_pos[a]); - } - -#if ENABLE_MOVE_STATS - // detects block move type - block.move_type = Block::Noop; - - if (delta_pos[E] < 0.0f) - { - if ((delta_pos[X] != 0.0f) || (delta_pos[Y] != 0.0f) || (delta_pos[Z] != 0.0f)) - block.move_type = Block::Move; - else - block.move_type = Block::Retract; - } - else if (delta_pos[E] > 0.0f) - { - if ((delta_pos[X] == 0.0f) && (delta_pos[Y] == 0.0f) && (delta_pos[Z] == 0.0f)) - block.move_type = Block::Unretract; - else if ((delta_pos[X] != 0.0f) || (delta_pos[Y] != 0.0f)) - block.move_type = Block::Extrude; - } - else if ((delta_pos[X] != 0.0f) || (delta_pos[Y] != 0.0f) || (delta_pos[Z] != 0.0f)) - block.move_type = Block::Move; -#endif // ENABLE_MOVE_STATS - - // adds block to blocks list - block.g1_line_id = this->get_g1_line_id(); - m_blocks.emplace_back(block); - - if (m_blocks.size() > planner_refresh_if_larger) - _calculate_time(planner_queue_size); - } - - void GCodeTimeEstimator::_processG4(const GCodeReader::GCodeLine& line) - { - PROFILE_FUNC(); - GCodeFlavor dialect = get_dialect(); - - float value; - float extra_time = 0.f; - if (line.has_value('P', value)) - extra_time += value * MILLISEC_TO_SEC; - - // see: http://reprap.org/wiki/G-code#G4:_Dwell - if ((dialect == gcfRepetier) || - (dialect == gcfMarlin) || - (dialect == gcfSmoothie) || - (dialect == gcfRepRapSprinter) || - (dialect == gcfRepRapFirmware)) - { - if (line.has_value('S', value)) - extra_time += value; - } - - _simulate_st_synchronize(extra_time); - } - - void GCodeTimeEstimator::_processG20(const GCodeReader::GCodeLine& line) - { - PROFILE_FUNC(); - set_units(Inches); - } - - void GCodeTimeEstimator::_processG21(const GCodeReader::GCodeLine& line) - { - PROFILE_FUNC(); - set_units(Millimeters); - } - - void GCodeTimeEstimator::_processG28(const GCodeReader::GCodeLine& line) - { - PROFILE_FUNC(); - // TODO - } - - void GCodeTimeEstimator::_processG90(const GCodeReader::GCodeLine& line) - { - PROFILE_FUNC(); - set_global_positioning_type(Absolute); - } - - void GCodeTimeEstimator::_processG91(const GCodeReader::GCodeLine& line) - { - PROFILE_FUNC(); - set_global_positioning_type(Relative); - } - - void GCodeTimeEstimator::_processG92(const GCodeReader::GCodeLine& line) - { - PROFILE_FUNC(); - float lengthsScaleFactor = (get_units() == Inches) ? INCHES_TO_MM : 1.0f; - bool anyFound = false; - - if (line.has_x()) - { - set_axis_origin(X, get_axis_position(X) - line.x() * lengthsScaleFactor); - anyFound = true; - } - - if (line.has_y()) - { - set_axis_origin(Y, get_axis_position(Y) - line.y() * lengthsScaleFactor); - anyFound = true; - } - - if (line.has_z()) - { - set_axis_origin(Z, get_axis_position(Z) - line.z() * lengthsScaleFactor); - anyFound = true; - } - - if (line.has_e()) - { - // extruder coordinate can grow to the point where its float representation does not allow for proper addition with small increments, - // we set the value taken from the G92 line as the new current position for it - set_axis_position(E, line.e() * lengthsScaleFactor); - anyFound = true; - } - else - _simulate_st_synchronize(0.f); - - if (!anyFound) - { - for (unsigned char a = X; a < Num_Axis; ++a) - { - set_axis_origin((EAxis)a, get_axis_position((EAxis)a)); - } - } - } - - void GCodeTimeEstimator::_processM1(const GCodeReader::GCodeLine& line) - { - PROFILE_FUNC(); - _simulate_st_synchronize(0.f); - } - - void GCodeTimeEstimator::_processM82(const GCodeReader::GCodeLine& line) - { - PROFILE_FUNC(); - set_e_local_positioning_type(Absolute); - } - - void GCodeTimeEstimator::_processM83(const GCodeReader::GCodeLine& line) - { - PROFILE_FUNC(); - set_e_local_positioning_type(Relative); - } - - void GCodeTimeEstimator::_processM109(const GCodeReader::GCodeLine& line) - { - PROFILE_FUNC(); - // TODO - } - - void GCodeTimeEstimator::_processM201(const GCodeReader::GCodeLine& line) - { - PROFILE_FUNC(); - GCodeFlavor dialect = get_dialect(); - - // see http://reprap.org/wiki/G-code#M201:_Set_max_printing_acceleration - float factor = ((dialect != gcfRepRapSprinter && dialect != gcfRepRapFirmware) && (get_units() == GCodeTimeEstimator::Inches)) ? INCHES_TO_MM : 1.0f; - - if (line.has_x()) - set_axis_max_acceleration(X, line.x() * factor); - - if (line.has_y()) - set_axis_max_acceleration(Y, line.y() * factor); - - if (line.has_z()) - set_axis_max_acceleration(Z, line.z() * factor); - - if (line.has_e()) - set_axis_max_acceleration(E, line.e() * factor); - } - - void GCodeTimeEstimator::_processM203(const GCodeReader::GCodeLine& line) - { - PROFILE_FUNC(); - GCodeFlavor dialect = get_dialect(); - - // see http://reprap.org/wiki/G-code#M203:_Set_maximum_feedrate - if (dialect == gcfRepetier) - return; - - // see http://reprap.org/wiki/G-code#M203:_Set_maximum_feedrate - // http://smoothieware.org/supported-g-codes - float factor = (dialect == gcfMarlin || dialect == gcfSmoothie) ? 1.0f : MMMIN_TO_MMSEC; - - if (line.has_x()) - set_axis_max_feedrate(X, line.x() * factor); - - if (line.has_y()) - set_axis_max_feedrate(Y, line.y() * factor); - - if (line.has_z()) - set_axis_max_feedrate(Z, line.z() * factor); - - if (line.has_e()) - set_axis_max_feedrate(E, line.e() * factor); - } - - void GCodeTimeEstimator::_processM204(const GCodeReader::GCodeLine& line) - { - PROFILE_FUNC(); - float value; - 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(value); - if (line.has_value('T', value)) - set_retract_acceleration(value); - } else { - // New acceleration format, compatible with the upstream Marlin. - if (line.has_value('P', value)) - set_acceleration(value); - if (line.has_value('R', value)) - set_retract_acceleration(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); - } - } - } - - void GCodeTimeEstimator::_processM205(const GCodeReader::GCodeLine& line) - { - PROFILE_FUNC(); - if (line.has_x()) - { - float max_jerk = line.x(); - set_axis_max_jerk(X, max_jerk); - set_axis_max_jerk(Y, max_jerk); - } - - if (line.has_y()) - set_axis_max_jerk(Y, line.y()); - - if (line.has_z()) - set_axis_max_jerk(Z, line.z()); - - if (line.has_e()) - set_axis_max_jerk(E, line.e()); - - float value; - if (line.has_value('S', value)) - set_minimum_feedrate(value); - - if (line.has_value('T', value)) - set_minimum_travel_feedrate(value); - } - - void GCodeTimeEstimator::_processM221(const GCodeReader::GCodeLine& line) - { - PROFILE_FUNC(); - float value_s; - float value_t; - if (line.has_value('S', value_s) && !line.has_value('T', value_t)) - set_extrude_factor_override_percentage(value_s * 0.01f); - } - - void GCodeTimeEstimator::_processM566(const GCodeReader::GCodeLine& line) - { - PROFILE_FUNC(); - if (line.has_x()) - set_axis_max_jerk(X, line.x() * MMMIN_TO_MMSEC); - - if (line.has_y()) - set_axis_max_jerk(Y, line.y() * MMMIN_TO_MMSEC); - - if (line.has_z()) - set_axis_max_jerk(Z, line.z() * MMMIN_TO_MMSEC); - - if (line.has_e()) - set_axis_max_jerk(E, line.e() * MMMIN_TO_MMSEC); - } - - void GCodeTimeEstimator::_processM702(const GCodeReader::GCodeLine& line) - { - PROFILE_FUNC(); - if (line.has('C')) { - // MK3 MMU2 specific M code: - // M702 C is expected to be sent by the custom end G-code when finalizing a print. - // The MK3 unit shall unload and park the active filament into the MMU2 unit. - float extra_time = get_filament_unload_time(get_extruder_id()); - reset_extruder_id(); - _simulate_st_synchronize(extra_time); - } - } - - void GCodeTimeEstimator::_processT(const GCodeReader::GCodeLine& line) - { - std::string cmd = line.cmd(); - if (cmd.length() > 1) - { - unsigned int id = (unsigned int)::strtol(cmd.substr(1).c_str(), nullptr, 10); - if (get_extruder_id() != id) - { - // Specific to the MK3 MMU2: The initial extruder ID is set to -1 indicating - // that the filament is parked in the MMU2 unit and there is nothing to be unloaded yet. - float extra_time = get_filament_unload_time(get_extruder_id()); - set_extruder_id(id); - extra_time += get_filament_load_time(get_extruder_id()); - _simulate_st_synchronize(extra_time); - } - } - } - - bool GCodeTimeEstimator::_process_tags(const GCodeReader::GCodeLine& line) - { - std::string comment = line.comment(); - - // Color_Change_Tag - size_t pos = comment.find(Color_Change_Tag); - if (pos != comment.npos) - { - _process_custom_gcode_tag(CustomGCode::ColorChange); - return true; - } - - // Pause_Print_Tag - pos = comment.find(Pause_Print_Tag); - if (pos != comment.npos) - { - _process_custom_gcode_tag(CustomGCode::PausePrint); - return true; - } - - return false; - } - - void GCodeTimeEstimator::_process_custom_gcode_tag(CustomGCode::Type code) - { - PROFILE_FUNC(); - m_needs_custom_gcode_times = true; - //FIXME this simulates st_synchronize! is it correct? - // The estimated time may be longer than the real print time. - _simulate_st_synchronize(0.f); - if (m_custom_gcode_time_cache != 0.0f) - { - m_custom_gcode_times.push_back({code, m_custom_gcode_time_cache}); - m_custom_gcode_time_cache = 0.0f; - } - } - - void GCodeTimeEstimator::_simulate_st_synchronize(float extra_time) - { - PROFILE_FUNC(); - m_time += extra_time; - m_custom_gcode_time_cache += extra_time; - _calculate_time(0); - } - - void GCodeTimeEstimator::_forward_pass() - { - PROFILE_FUNC(); - for (int i = 0; i + 1 < (int)m_blocks.size(); ++i) - _planner_forward_pass_kernel(m_blocks[i], m_blocks[i + 1]); - } - - void GCodeTimeEstimator::_reverse_pass() - { - PROFILE_FUNC(); - for (int i = (int)m_blocks.size() - 1; i > 0; -- i) - _planner_reverse_pass_kernel(m_blocks[i - 1], m_blocks[i]); - } - - void GCodeTimeEstimator::_planner_forward_pass_kernel(Block& prev, Block& curr) - { - PROFILE_FUNC(); - // If the previous block is an acceleration block, but it is not long enough to complete the - // full speed change within the block, we need to adjust the entry speed accordingly. Entry - // speeds have already been reset, maximized, and reverse planned by reverse planner. - // If nominal length is true, max junction speed is guaranteed to be reached. No need to recheck. - if (!prev.flags.nominal_length) - { - if (prev.feedrate.entry < curr.feedrate.entry) - { - float entry_speed = std::min(curr.feedrate.entry, Block::max_allowable_speed(-prev.acceleration, prev.feedrate.entry, prev.distance)); - - // Check for junction speed change - if (curr.feedrate.entry != entry_speed) - { - curr.feedrate.entry = entry_speed; - curr.flags.recalculate = true; - } - } - } - } - - void GCodeTimeEstimator::_planner_reverse_pass_kernel(Block& curr, Block& next) - { - // If entry speed is already at the maximum entry speed, no need to recheck. Block is cruising. - // If not, block in state of acceleration or deceleration. Reset entry speed to maximum and - // check for maximum allowable speed reductions to ensure maximum possible planned speed. - if (curr.feedrate.entry != curr.max_entry_speed) - { - // If nominal length true, max junction speed is guaranteed to be reached. Only compute - // for max allowable speed if block is decelerating and nominal length is false. - if (!curr.flags.nominal_length && (curr.max_entry_speed > next.feedrate.entry)) - curr.feedrate.entry = std::min(curr.max_entry_speed, Block::max_allowable_speed(-curr.acceleration, next.feedrate.entry, curr.distance)); - else - curr.feedrate.entry = curr.max_entry_speed; - - curr.flags.recalculate = true; - } - } - - void GCodeTimeEstimator::_recalculate_trapezoids() - { - PROFILE_FUNC(); - Block* curr = nullptr; - Block* next = nullptr; - - for (size_t i = 0; i < m_blocks.size(); ++ i) - { - Block& b = m_blocks[i]; - - curr = next; - next = &b; - - if (curr != nullptr) - { - // Recalculate if current block entry or exit junction speed has changed. - if (curr->flags.recalculate || next->flags.recalculate) - { - // NOTE: Entry and exit factors always > 0 by all previous logic operations. - Block block = *curr; - block.feedrate.exit = next->feedrate.entry; - block.calculate_trapezoid(); - curr->trapezoid = block.trapezoid; - curr->flags.recalculate = false; // Reset current only to ensure next trapezoid is computed - } - } - } - - // Last/newest block in buffer. Always recalculated. - if (next != nullptr) - { - Block block = *next; - block.feedrate.exit = next->safe_feedrate; - block.calculate_trapezoid(); - next->trapezoid = block.trapezoid; - next->flags.recalculate = false; - } - } - - std::string GCodeTimeEstimator::_get_time_dhms(float time_in_secs) - { - int days = (int)(time_in_secs / 86400.0f); - time_in_secs -= (float)days * 86400.0f; - int hours = (int)(time_in_secs / 3600.0f); - time_in_secs -= (float)hours * 3600.0f; - int minutes = (int)(time_in_secs / 60.0f); - time_in_secs -= (float)minutes * 60.0f; - - char buffer[64]; - if (days > 0) - ::sprintf(buffer, "%dd %dh %dm %ds", days, hours, minutes, (int)time_in_secs); - else if (hours > 0) - ::sprintf(buffer, "%dh %dm %ds", hours, minutes, (int)time_in_secs); - else if (minutes > 0) - ::sprintf(buffer, "%dm %ds", minutes, (int)time_in_secs); - else - ::sprintf(buffer, "%ds", (int)time_in_secs); - - return buffer; - } - - std::string GCodeTimeEstimator::_get_time_dhm(float time_in_secs) - { - char buffer[64]; - - int minutes = int(std::round(time_in_secs / 60.)); - if (minutes <= 0) { - ::sprintf(buffer, "%ds", (int)time_in_secs); - } else { - int days = minutes / 1440; - minutes -= days * 1440; - int hours = minutes / 60; - minutes -= hours * 60; - if (days > 0) - ::sprintf(buffer, "%dd %dh %dm", days, hours, minutes); - else if (hours > 0) - ::sprintf(buffer, "%dh %dm", hours, minutes); - else - ::sprintf(buffer, "%dm", minutes); - } - - return buffer; - } - - std::string GCodeTimeEstimator::_get_time_minutes(float time_in_secs) - { - return std::to_string((int)(::roundf(time_in_secs / 60.0f))); - } - -#if ENABLE_MOVE_STATS - void GCodeTimeEstimator::_log_moves_stats() const - { - float moves_count = 0.0f; - for (const MovesStatsMap::value_type& move : _moves_stats) - { - moves_count += (float)move.second.count; - } - - for (const MovesStatsMap::value_type& move : _moves_stats) - { - std::cout << MOVE_TYPE_STR[move.first]; - std::cout << ": count " << move.second.count << " (" << 100.0f * (float)move.second.count / moves_count << "%)"; - std::cout << " - time: " << move.second.time << "s (" << 100.0f * move.second.time / m_time << "%)"; - std::cout << std::endl; - } - std::cout << std::endl; - } -#endif // ENABLE_MOVE_STATS -} - -#endif // !ENABLE_GCODE_VIEWER diff --git a/src/libslic3r/GCodeTimeEstimator.hpp b/src/libslic3r/GCodeTimeEstimator.hpp deleted file mode 100644 index 0dd3407cb0..0000000000 --- a/src/libslic3r/GCodeTimeEstimator.hpp +++ /dev/null @@ -1,488 +0,0 @@ -#ifndef slic3r_GCodeTimeEstimator_hpp_ -#define slic3r_GCodeTimeEstimator_hpp_ - -#include "libslic3r.h" -#include "PrintConfig.hpp" -#include "GCodeReader.hpp" -#include "CustomGCode.hpp" - -#if !ENABLE_GCODE_VIEWER - -#define ENABLE_MOVE_STATS 0 - -namespace Slic3r { - - // - // Some of the algorithms used by class GCodeTimeEstimator were inpired by - // Cura Engine's class TimeEstimateCalculator - // https://github.com/Ultimaker/CuraEngine/blob/master/src/timeEstimate.h - // - class GCodeTimeEstimator - { - public: - static const std::string Normal_First_M73_Output_Placeholder_Tag; - static const std::string Silent_First_M73_Output_Placeholder_Tag; - static const std::string Normal_Last_M73_Output_Placeholder_Tag; - static const std::string Silent_Last_M73_Output_Placeholder_Tag; - - static const std::string Color_Change_Tag; - static const std::string Pause_Print_Tag; - - enum EMode : unsigned char - { - Normal, - Silent - }; - - enum EUnits : unsigned char - { - Millimeters, - Inches - }; - - enum EAxis : unsigned char - { - X, - Y, - Z, - E, - Num_Axis - }; - - enum EPositioningType : unsigned char - { - Absolute, - Relative - }; - - private: - struct Axis - { - float position; // mm - float origin; // mm - float max_feedrate; // mm/s - float max_acceleration; // mm/s^2 - float max_jerk; // mm/s - }; - - struct Feedrates - { - float feedrate; // mm/s - float axis_feedrate[Num_Axis]; // mm/s - float abs_axis_feedrate[Num_Axis]; // mm/s - float safe_feedrate; // mm/s - - void reset(); - }; - - struct State - { - GCodeFlavor dialect; - EUnits units; - EPositioningType global_positioning_type; - EPositioningType e_local_positioning_type; - Axis axis[Num_Axis]; - float feedrate; // mm/s - float acceleration; // mm/s^2 - // hard limit for the acceleration, to which the firmware will clamp. - float max_acceleration; // mm/s^2 - float retract_acceleration; // mm/s^2 - float minimum_feedrate; // mm/s - float minimum_travel_feedrate; // mm/s - float extrude_factor_override_percentage; - // Additional load / unload times for a filament exchange sequence. - std::vector filament_load_times; - std::vector filament_unload_times; - unsigned int g1_line_id; - // extruder_id is currently used to correctly calculate filament load / unload times - // into the total print time. This is currently only really used by the MK3 MMU2: - // Extruder id (-1) means no filament is loaded yet, all the filaments are parked in the MK3 MMU2 unit. - static const unsigned int extruder_id_unloaded = (unsigned int)-1; - unsigned int extruder_id; - }; - - public: - struct Block - { -#if ENABLE_MOVE_STATS - enum EMoveType : unsigned char - { - Noop, - Retract, - Unretract, - Tool_change, - Move, - Extrude, - Num_Types - }; -#endif // ENABLE_MOVE_STATS - - struct FeedrateProfile - { - float entry; // mm/s - float cruise; // mm/s - float exit; // mm/s - }; - - struct Trapezoid - { - float accelerate_until; // mm - float decelerate_after; // mm - float cruise_feedrate; // mm/sec - - float acceleration_time(float entry_feedrate, float acceleration) const; - float cruise_time() const; - float deceleration_time(float distance, float acceleration) const; - float cruise_distance() const; - - // This function gives the time needed to accelerate from an initial speed to reach a final distance. - static float acceleration_time_from_distance(float initial_feedrate, float distance, float acceleration); - - // This function gives the final speed while accelerating at the given constant acceleration from the given initial speed along the given distance. - static float speed_from_distance(float initial_feedrate, float distance, float acceleration); - }; - - struct Flags - { - bool recalculate; - bool nominal_length; - }; - -#if ENABLE_MOVE_STATS - EMoveType move_type; -#endif // ENABLE_MOVE_STATS - Flags flags; - - float distance; // mm - float acceleration; // mm/s^2 - float max_entry_speed; // mm/s - float safe_feedrate; // mm/s - - FeedrateProfile feedrate; - Trapezoid trapezoid; - - // Ordnary index of this G1 line in the file. - int g1_line_id { -1 }; - - // Returns the time spent accelerating toward cruise speed, in seconds - float acceleration_time() const; - - // Returns the time spent at cruise speed, in seconds - float cruise_time() const; - - // Returns the time spent decelerating from cruise speed, in seconds - float deceleration_time() const; - - // Returns the distance covered at cruise speed, in mm - float cruise_distance() const; - - // Calculates this block's trapezoid - void calculate_trapezoid(); - - // Calculates the maximum allowable speed at this point when you must be able to reach target_velocity using the - // acceleration within the allotted distance. - static float max_allowable_speed(float acceleration, float target_velocity, float distance); - - // Calculates the distance (not time) it takes to accelerate from initial_rate to target_rate using the given acceleration: - static float estimate_acceleration_distance(float initial_rate, float target_rate, float acceleration); - - // This function gives you the point at which you must start braking (at the rate of -acceleration) if - // you started at speed initial_rate and accelerated until this point and want to end at the final_rate after - // a total travel of distance. This can be used to compute the intersection point between acceleration and - // deceleration in the cases where the trapezoid has no plateau (i.e. never reaches maximum speed) - static float intersection_distance(float initial_rate, float final_rate, float acceleration, float distance); - }; - - typedef std::vector BlocksList; - -#if ENABLE_MOVE_STATS - struct MoveStats - { - unsigned int count; - float time; - - MoveStats(); - }; - - typedef std::map MovesStatsMap; -#endif // ENABLE_MOVE_STATS - - public: - typedef std::pair G1LineIdTime; - typedef std::vector G1LineIdsTimes; - - struct PostProcessData - { - const G1LineIdsTimes& g1_times; - float time; - }; - - private: - EMode m_mode; - GCodeReader m_parser; - State m_state; - Feedrates m_curr; - Feedrates m_prev; - BlocksList m_blocks; - // Size of the firmware planner queue. The old 8-bit Marlins usually just managed 16 trapezoidal blocks. - // Let's be conservative and plan for newer boards with more memory. - static constexpr size_t planner_queue_size = 64; - // The firmware recalculates last planner_queue_size trapezoidal blocks each time a new block is added. - // We are not simulating the firmware exactly, we calculate a sequence of blocks once a reasonable number of blocks accumulate. - static constexpr size_t planner_refresh_if_larger = planner_queue_size * 4; - // Map from g1 line id to its elapsed time from the start of the print. - G1LineIdsTimes m_g1_times; - float m_time; // s - - // data to calculate custom code times - bool m_needs_custom_gcode_times; - std::vector> m_custom_gcode_times; - float m_custom_gcode_time_cache; - -#if ENABLE_MOVE_STATS - MovesStatsMap _moves_stats; -#endif // ENABLE_MOVE_STATS - - public: - explicit GCodeTimeEstimator(EMode mode); - - // Adds the given gcode line - void add_gcode_line(const std::string& gcode_line); - - void add_gcode_block(const char *ptr); - void add_gcode_block(const std::string &str) { this->add_gcode_block(str.c_str()); } - - // Calculates the time estimate from the gcode lines added using add_gcode_line() or add_gcode_block() - // start_from_beginning: - // if set to true all blocks will be used to calculate the time estimate, - // if set to false only the blocks not yet processed will be used and the calculated time will be added to the current calculated time - void calculate_time(bool start_from_beginning); - - // Calculates the time estimate from the given gcode in string format - //void calculate_time_from_text(const std::string& gcode); - - // Calculates the time estimate from the gcode contained in the file with the given filename - //void calculate_time_from_file(const std::string& file); - - // Calculates the time estimate from the gcode contained in given list of gcode lines - //void calculate_time_from_lines(const std::vector& gcode_lines); - - // Process the gcode contained in the file with the given filename, - // replacing placeholders with correspondent new lines M73 - // placing new lines M73 (containing the remaining time) where needed (in dependence of the given interval in seconds) - // and removing working tags (as those used for color changes) - // if normal_mode == nullptr no M73 line will be added for normal mode - // if silent_mode == nullptr no M73 line will be added for silent mode - static bool post_process(const std::string& filename, float interval_sec, const PostProcessData* const normal_mode, const PostProcessData* const silent_mode); - - // Set current position on the given axis with the given value - void set_axis_position(EAxis axis, float position); - // Set current origin on the given axis with the given value - void set_axis_origin(EAxis axis, float position); - - void set_axis_max_feedrate(EAxis axis, float feedrate_mm_sec); - void set_axis_max_acceleration(EAxis axis, float acceleration); - void set_axis_max_jerk(EAxis axis, float jerk); - - // Returns current position on the given axis - float get_axis_position(EAxis axis) const; - // Returns current origin on the given axis - float get_axis_origin(EAxis axis) const; - - float get_axis_max_feedrate(EAxis axis) const; - float get_axis_max_acceleration(EAxis axis) const; - float get_axis_max_jerk(EAxis axis) const; - - void set_feedrate(float feedrate_mm_sec); - float get_feedrate() const; - - void set_acceleration(float acceleration_mm_sec2); - float get_acceleration() const; - - // Maximum acceleration for the machine. The firmware simulator will clamp the M204 Sxxx to this maximum. - void set_max_acceleration(float acceleration_mm_sec2); - float get_max_acceleration() const; - - void set_retract_acceleration(float acceleration_mm_sec2); - float get_retract_acceleration() const; - - void set_minimum_feedrate(float feedrate_mm_sec); - float get_minimum_feedrate() const; - - void set_minimum_travel_feedrate(float feedrate_mm_sec); - float get_minimum_travel_feedrate() const; - - void set_filament_load_times(const std::vector &filament_load_times); - void set_filament_unload_times(const std::vector &filament_unload_times); - float get_filament_load_time(unsigned int id_extruder); - float get_filament_unload_time(unsigned int id_extruder); - - void set_extrude_factor_override_percentage(float percentage); - float get_extrude_factor_override_percentage() const; - - void set_dialect(GCodeFlavor dialect); - GCodeFlavor get_dialect() const; - - void set_units(EUnits units); - EUnits get_units() const; - - void set_global_positioning_type(EPositioningType type); - EPositioningType get_global_positioning_type() const; - - void set_e_local_positioning_type(EPositioningType type); - EPositioningType get_e_local_positioning_type() const; - - int get_g1_line_id() const; - void increment_g1_line_id(); - void reset_g1_line_id(); - - void set_extrusion_axis(char axis) { m_parser.set_extrusion_axis(axis); } - - void set_extruder_id(unsigned int id); - unsigned int get_extruder_id() const; - void reset_extruder_id(); - - void set_default(); - - // Call this method before to start adding lines using add_gcode_line() when reusing an instance of GCodeTimeEstimator - void reset(); - - // Returns the estimated time, in seconds - float get_time() const; - - // Returns the estimated time, in format DDd HHh MMm SSs - std::string get_time_dhms() const; - - // Returns the estimated time, in format DDd HHh MMm - std::string get_time_dhm() const; - - // Returns the estimated time, in minutes (integer) - std::string get_time_minutes() const; - - // Returns the estimated time, in seconds, for each custom gcode - std::vector> get_custom_gcode_times() const; - - // Returns the estimated time, in format DDd HHh MMm SSs, for each color - // If include_remaining==true the strings will be formatted as: "time for color (remaining time at color start)" - std::vector get_color_times_dhms(bool include_remaining) const; - - // Returns the estimated time, in minutes (integer), for each color - // If include_remaining==true the strings will be formatted as: "time for color (remaining time at color start)" - std::vector get_color_times_minutes(bool include_remaining) const; - - // Returns the estimated time, in format DDd HHh MMm, for each custom_gcode - // If include_remaining==true the strings will be formatted as: "time for custom_gcode (remaining time at color start)" - std::vector> get_custom_gcode_times_dhm(bool include_remaining) const; - - // Return an estimate of the memory consumed by the time estimator. - size_t memory_used() const; - - PostProcessData get_post_process_data() const { return PostProcessData{ m_g1_times, m_time }; } - - private: - void _reset(); - void _reset_time(); - void _reset_blocks(); - - // Calculates the time estimate - void _calculate_time(size_t keep_last_n_blocks); - - // Processes the given gcode line - void _process_gcode_line(GCodeReader&, const GCodeReader::GCodeLine& line); - - // Move - void _processG1(const GCodeReader::GCodeLine& line); - - // Dwell - void _processG4(const GCodeReader::GCodeLine& line); - - // Set Units to Inches - void _processG20(const GCodeReader::GCodeLine& line); - - // Set Units to Millimeters - void _processG21(const GCodeReader::GCodeLine& line); - - // Move to Origin (Home) - void _processG28(const GCodeReader::GCodeLine& line); - - // Set to Absolute Positioning - void _processG90(const GCodeReader::GCodeLine& line); - - // Set to Relative Positioning - void _processG91(const GCodeReader::GCodeLine& line); - - // Set Position - void _processG92(const GCodeReader::GCodeLine& line); - - // Sleep or Conditional stop - void _processM1(const GCodeReader::GCodeLine& line); - - // Set extruder to absolute mode - void _processM82(const GCodeReader::GCodeLine& line); - - // Set extruder to relative mode - void _processM83(const GCodeReader::GCodeLine& line); - - // Set Extruder Temperature and Wait - void _processM109(const GCodeReader::GCodeLine& line); - - // Set max printing acceleration - void _processM201(const GCodeReader::GCodeLine& line); - - // Set maximum feedrate - void _processM203(const GCodeReader::GCodeLine& line); - - // Set default acceleration - void _processM204(const GCodeReader::GCodeLine& line); - - // Advanced settings - void _processM205(const GCodeReader::GCodeLine& line); - - // Set extrude factor override percentage - void _processM221(const GCodeReader::GCodeLine& line); - - // Set allowable instantaneous speed change - void _processM566(const GCodeReader::GCodeLine& line); - - // Unload the current filament into the MK3 MMU2 unit at the end of print. - void _processM702(const GCodeReader::GCodeLine& line); - - // Processes T line (Select Tool) - void _processT(const GCodeReader::GCodeLine& line); - - // Processes the tags - // Returns true if any tag has been processed - bool _process_tags(const GCodeReader::GCodeLine& line); - - // Processes ColorChangeTag and PausePrintTag - void _process_custom_gcode_tag(CustomGCode::Type code); - - // Simulates firmware st_synchronize() call - void _simulate_st_synchronize(float additional_time); - - void _forward_pass(); - void _reverse_pass(); - - void _planner_forward_pass_kernel(Block& prev, Block& curr); - void _planner_reverse_pass_kernel(Block& curr, Block& next); - - void _recalculate_trapezoids(); - - // Returns the given time is seconds in format DDd HHh MMm SSs - static std::string _get_time_dhms(float time_in_secs); - // Returns the given time is minutes in format DDd HHh MMm - static std::string _get_time_dhm(float time_in_secs); - - // Returns the given, in minutes (integer) - static std::string _get_time_minutes(float time_in_secs); - -#if ENABLE_MOVE_STATS - void _log_moves_stats() const; -#endif // ENABLE_MOVE_STATS - }; - -} /* namespace Slic3r */ - -#endif // !ENABLE_GCODE_VIEWER - -#endif /* slic3r_GCodeTimeEstimator_hpp_ */ diff --git a/src/libslic3r/Geometry.cpp b/src/libslic3r/Geometry.cpp index 3b9fcd6176..b263aecfdd 100644 --- a/src/libslic3r/Geometry.cpp +++ b/src/libslic3r/Geometry.cpp @@ -338,19 +338,19 @@ double rad2deg_dir(double angle) return rad2deg(angle); } -Point circle_taubin_newton(const Points::const_iterator& input_begin, const Points::const_iterator& input_end, size_t cycles) +Point circle_center_taubin_newton(const Points::const_iterator& input_begin, const Points::const_iterator& input_end, size_t cycles) { Vec2ds tmp; tmp.reserve(std::distance(input_begin, input_end)); std::transform(input_begin, input_end, std::back_inserter(tmp), [] (const Point& in) { return unscale(in); } ); - Vec2d center = circle_taubin_newton(tmp.cbegin(), tmp.end(), cycles); + Vec2d center = circle_center_taubin_newton(tmp.cbegin(), tmp.end(), cycles); return Point::new_scale(center.x(), center.y()); } /// Adapted from work in "Circular and Linear Regression: Fitting circles and lines by least squares", pg 126 /// Returns a point corresponding to the center of a circle for which all of the points from input_begin to input_end /// lie on. -Vec2d circle_taubin_newton(const Vec2ds::const_iterator& input_begin, const Vec2ds::const_iterator& input_end, size_t cycles) +Vec2d circle_center_taubin_newton(const Vec2ds::const_iterator& input_begin, const Vec2ds::const_iterator& input_end, size_t cycles) { // calculate the centroid of the data set const Vec2d sum = std::accumulate(input_begin, input_end, Vec2d(0,0)); diff --git a/src/libslic3r/Geometry.hpp b/src/libslic3r/Geometry.hpp index b690b478d9..92333f2033 100644 --- a/src/libslic3r/Geometry.hpp +++ b/src/libslic3r/Geometry.hpp @@ -201,6 +201,57 @@ inline double ray_point_distance(const Line &iline, const Point &ipt) } // Based on Liang-Barsky function by Daniel White @ http://www.skytopia.com/project/articles/compsci/clipping.html +template +inline bool liang_barsky_line_clipping_interval( + // Start and end points of the source line, result will be stored there as well. + const Eigen::Matrix &x0, + const Eigen::Matrix &v, + // Bounding box to clip with. + const BoundingBoxBase> &bbox, + std::pair &out_interval) +{ + double t0 = 0.0; + double t1 = 1.0; + // Traverse through left, right, bottom, top edges. + auto clip_side = [&x0, &v, &bbox, &t0, &t1](double p, double q) -> bool { + if (p == 0) { + if (q < 0) + // Line parallel to the bounding box edge is fully outside of the bounding box. + return false; + // else don't clip + } else { + double r = q / p; + if (p < 0) { + if (r > t1) + // Fully clipped. + return false; + if (r > t0) + // Partially clipped. + t0 = r; + } else { + assert(p > 0); + if (r < t0) + // Fully clipped. + return false; + if (r < t1) + // Partially clipped. + t1 = r; + } + } + return true; + }; + + if (clip_side(- v.x(), - bbox.min.x() + x0.x()) && + clip_side( v.x(), bbox.max.x() - x0.x()) && + clip_side(- v.y(), - bbox.min.y() + x0.y()) && + clip_side( v.y(), bbox.max.y() - x0.y())) { + out_interval.first = t0; + out_interval.second = t1; + return true; + } + return false; +} + template inline bool liang_barsky_line_clipping( // Start and end points of the source line, result will be stored there as well. @@ -210,49 +261,12 @@ inline bool liang_barsky_line_clipping( const BoundingBoxBase> &bbox) { Eigen::Matrix v = x1 - x0; - double t0 = 0.0; - double t1 = 1.0; - - // Traverse through left, right, bottom, top edges. - for (int edge = 0; edge < 4; ++ edge) - { - double p, q; - switch (edge) { - case 0: p = - v.x(); q = - bbox.min.x() + x0.x(); break; - case 1: p = v.x(); q = bbox.max.x() - x0.x(); break; - case 2: p = - v.y(); q = - bbox.min.y() + x0.y(); break; - default: p = v.y(); q = bbox.max.y() - x0.y(); break; - } - - if (p == 0) { - if (q < 0) - // Line parallel to the bounding box edge is fully outside of the bounding box. - return false; - // else don't clip - } else { - double r = q / p; - if (p < 0) { - if (r > t1) - // Fully clipped. - return false; - if (r > t0) - // Partially clipped. - t0 = r; - } else { - assert(p > 0); - if (r < t0) - // Fully clipped. - return false; - if (r < t1) - // Partially clipped. - t1 = r; - } - } + std::pair interval; + if (liang_barsky_line_clipping_interval(x0, v, bbox, interval)) { + // Clipped successfully. + x1 = x0 + interval.second * v; + x0 += interval.first * v; } - - // Clipped successfully. - x1 = x0 + t1 * v; - x0 += t0 * v; return true; } @@ -273,6 +287,35 @@ bool liang_barsky_line_clipping( return liang_barsky_line_clipping(x0clip, x1clip, bbox); } +// Ugly named variant, that accepts the squared line +// Don't call me with a nearly zero length vector! +template +int ray_circle_intersections_r2_lv2_c(T r2, T a, T b, T lv2, T c, std::pair, Eigen::Matrix> &out) +{ + T x0 = - a * c / lv2; + T y0 = - b * c / lv2; + T d = r2 - c * c / lv2; + if (d < T(0)) + return 0; + T mult = sqrt(d / lv2); + out.first.x() = x0 + b * mult; + out.first.y() = y0 - a * mult; + out.second.x() = x0 - b * mult; + out.second.y() = y0 + a * mult; + return mult == T(0) ? 1 : 2; +} +template +int ray_circle_intersections(T r, T a, T b, T c, std::pair, Eigen::Matrix> &out) +{ + T lv2 = a * a + b * b; + if (lv2 < T(SCALED_EPSILON * SCALED_EPSILON)) { + //FIXME what is the correct epsilon? + // What if the line touches the circle? + return false; + } + return ray_circle_intersections_r2_lv2_c2(r * r, a, b, a * a + b * b, c, out); +} + Pointf3s convex_hull(Pointf3s points); Polygon convex_hull(Points points); Polygon convex_hull(const Polygons &polygons); @@ -298,12 +341,12 @@ template T angle_to_0_2PI(T angle) } /// Find the center of the circle corresponding to the vector of Points as an arc. -Point circle_taubin_newton(const Points::const_iterator& input_start, const Points::const_iterator& input_end, size_t cycles = 20); -inline Point circle_taubin_newton(const Points& input, size_t cycles = 20) { return circle_taubin_newton(input.cbegin(), input.cend(), cycles); } +Point circle_center_taubin_newton(const Points::const_iterator& input_start, const Points::const_iterator& input_end, size_t cycles = 20); +inline Point circle_center_taubin_newton(const Points& input, size_t cycles = 20) { return circle_center_taubin_newton(input.cbegin(), input.cend(), cycles); } /// Find the center of the circle corresponding to the vector of Pointfs as an arc. -Vec2d circle_taubin_newton(const Vec2ds::const_iterator& input_start, const Vec2ds::const_iterator& input_end, size_t cycles = 20); -inline Vec2d circle_taubin_newton(const Vec2ds& input, size_t cycles = 20) { return circle_taubin_newton(input.cbegin(), input.cend(), cycles); } +Vec2d circle_center_taubin_newton(const Vec2ds::const_iterator& input_start, const Vec2ds::const_iterator& input_end, size_t cycles = 20); +inline Vec2d circle_center_taubin_newton(const Vec2ds& input, size_t cycles = 20) { return circle_center_taubin_newton(input.cbegin(), input.cend(), cycles); } void simplify_polygons(const Polygons &polygons, double tolerance, Polygons* retval); diff --git a/src/libslic3r/Line.cpp b/src/libslic3r/Line.cpp index 0c43154a9b..8a2a2875b1 100644 --- a/src/libslic3r/Line.cpp +++ b/src/libslic3r/Line.cpp @@ -100,6 +100,13 @@ bool Line::clip_with_bbox(const BoundingBox &bbox) return result; } +void Line::extend(double offset) +{ + Vector offset_vector = (offset * this->vector().cast().normalized()).cast(); + this->a -= offset_vector; + this->b += offset_vector; +} + Vec3d Linef3::intersect_plane(double z) const { auto v = (this->b - this->a).cast(); diff --git a/src/libslic3r/Line.hpp b/src/libslic3r/Line.hpp index 980303feda..72532b4e33 100644 --- a/src/libslic3r/Line.hpp +++ b/src/libslic3r/Line.hpp @@ -24,7 +24,7 @@ namespace line_alg { template double distance_to_squared(const L &line, const Vec &point) { - const Vec v = line.vector().template cast(); + const Vec v = (line.b - line.a).template cast(); const Vec va = (point - line.a).template cast(); const double l2 = v.squaredNorm(); // avoid a sqrt if (l2 == 0.0) @@ -54,7 +54,8 @@ public: Line(const Point& _a, const Point& _b) : a(_a), b(_b) {} explicit operator Lines() const { Lines lines; lines.emplace_back(*this); return lines; } void scale(double factor) { this->a *= factor; this->b *= factor; } - void translate(double x, double y) { Vector v(x, y); this->a += v; this->b += v; } + void translate(const Point &v) { this->a += v; this->b += v; } + void translate(double x, double y) { this->translate(Point(x, y)); } void rotate(double angle, const Point ¢er) { this->a.rotate(angle, center); this->b.rotate(angle, center); } void reverse() { std::swap(this->a, this->b); } double length() const { return (b - a).cast().norm(); } @@ -75,6 +76,8 @@ public: double ccw(const Point& point) const { return point.ccw(*this); } // Clip a line with a bounding box. Returns false if the line is completely outside of the bounding box. bool clip_with_bbox(const BoundingBox &bbox); + // Extend the line from both sides by an offset. + void extend(double offset); static inline double distance_to_squared(const Point &point, const Point &a, const Point &b) { return line_alg::distance_to_squared(Line{a, b}, Vec<2, coord_t>{point}); } static double distance_to(const Point &point, const Point &a, const Point &b) { return sqrt(distance_to_squared(point, a, b)); } diff --git a/src/libslic3r/Model.cpp b/src/libslic3r/Model.cpp index e424f84425..7dfc0a7267 100644 --- a/src/libslic3r/Model.cpp +++ b/src/libslic3r/Model.cpp @@ -22,9 +22,6 @@ #include "SVG.hpp" #include #include "GCodeWriter.hpp" -#if !ENABLE_GCODE_VIEWER -#include "GCode/PreviewData.hpp" -#endif // !ENABLE_GCODE_VIEWER namespace Slic3r { diff --git a/src/libslic3r/Point.cpp b/src/libslic3r/Point.cpp index f3ed413421..b16abe7be4 100644 --- a/src/libslic3r/Point.cpp +++ b/src/libslic3r/Point.cpp @@ -2,6 +2,7 @@ #include "Line.hpp" #include "MultiPoint.hpp" #include "Int128.hpp" +#include "BoundingBox.hpp" #include namespace Slic3r { @@ -176,6 +177,19 @@ Point Point::projection_onto(const Line &line) const return ((line.a - *this).cast().squaredNorm() < (line.b - *this).cast().squaredNorm()) ? line.a : line.b; } +BoundingBox get_extents(const Points &pts) +{ + return BoundingBox(pts); +} + +BoundingBox get_extents(const std::vector &pts) +{ + BoundingBox bbox; + for (const Points &p : pts) + bbox.merge(get_extents(p)); + return bbox; +} + std::ostream& operator<<(std::ostream &stm, const Vec2d &pointf) { return stm << pointf(0) << "," << pointf(1); diff --git a/src/libslic3r/Point.hpp b/src/libslic3r/Point.hpp index 5082bb746f..a6525af4ea 100644 --- a/src/libslic3r/Point.hpp +++ b/src/libslic3r/Point.hpp @@ -13,6 +13,7 @@ namespace Slic3r { +class BoundingBox; class Line; class MultiPoint; class Point; @@ -55,23 +56,20 @@ typedef Eigen::Transform Transform3d inline bool operator<(const Vec2d &lhs, const Vec2d &rhs) { return lhs(0) < rhs(0) || (lhs(0) == rhs(0) && lhs(1) < rhs(1)); } -inline int32_t cross2(const Vec2i32 &v1, const Vec2i32 &v2) { return v1(0) * v2(1) - v1(1) * v2(0); } +// One likely does not want to perform the cross product with a 32bit accumulator. +//inline int32_t cross2(const Vec2i32 &v1, const Vec2i32 &v2) { return v1(0) * v2(1) - v1(1) * v2(0); } inline int64_t cross2(const Vec2i64 &v1, const Vec2i64 &v2) { return v1(0) * v2(1) - v1(1) * v2(0); } inline float cross2(const Vec2f &v1, const Vec2f &v2) { return v1(0) * v2(1) - v1(1) * v2(0); } inline double cross2(const Vec2d &v1, const Vec2d &v2) { return v1(0) * v2(1) - v1(1) * v2(0); } -template Eigen::Matrix -to_2d(const Eigen::Matrix &ptN) { return {ptN(0), ptN(1)}; } +template +inline Eigen::Matrix perp(const Eigen::MatrixBase> &v) { return Eigen::Matrix(- v.y(), v.x()); } -//inline Vec2i32 to_2d(const Vec3i32 &pt3) { return Vec2i32(pt3(0), pt3(1)); } -//inline Vec2i64 to_2d(const Vec3i64 &pt3) { return Vec2i64(pt3(0), pt3(1)); } -//inline Vec2f to_2d(const Vec3f &pt3) { return Vec2f (pt3(0), pt3(1)); } -//inline Vec2d to_2d(const Vec3d &pt3) { return Vec2d (pt3(0), pt3(1)); } +template +Eigen::Matrix to_2d(const Eigen::MatrixBase> &ptN) { return { ptN(0), ptN(1) }; } -inline Vec3d to_3d(const Vec2d &v, double z) { return Vec3d(v(0), v(1), z); } -inline Vec3f to_3d(const Vec2f &v, float z) { return Vec3f(v(0), v(1), z); } -inline Vec3i64 to_3d(const Vec2i64 &v, float z) { return Vec3i64(int64_t(v(0)), int64_t(v(1)), int64_t(z)); } -inline Vec3crd to_3d(const Vec3crd &p, coord_t z) { return Vec3crd(p(0), p(1), z); } +template +Eigen::Matrix to_3d(const Eigen::MatrixBase> & pt, const T z) { return { pt(0), pt(1), z }; } inline Vec2d unscale(coord_t x, coord_t y) { return Vec2d(unscale(x), unscale(y)); } inline Vec2d unscale(const Vec2crd &pt) { return Vec2d(unscale(pt(0)), unscale(pt(1))); } @@ -132,6 +130,7 @@ public: void rotate(double angle, const Point ¢er); Point rotated(double angle) const { Point res(*this); res.rotate(angle); return res; } + Point rotated(double cos_a, double sin_a) const { Point res(*this); res.rotate(cos_a, sin_a); return res; } Point rotated(double angle, const Point ¢er) const { Point res(*this); res.rotate(angle, center); return res; } int nearest_point_index(const Points &points) const; int nearest_point_index(const PointConstPtrs &points) const; @@ -174,6 +173,15 @@ inline bool is_approx(const Vec3d &p1, const Vec3d &p2, double epsilon = EPSILON return d.x() < epsilon && d.y() < epsilon && d.z() < epsilon; } +inline Point lerp(const Point &a, const Point &b, double t) +{ + assert((t >= -EPSILON) && (t <= 1. + EPSILON)); + return ((1. - t) * a.cast() + t * b.cast()).cast(); +} + +extern BoundingBox get_extents(const Points &pts); +extern BoundingBox get_extents(const std::vector &pts); + namespace int128 { // Exact orientation predicate, // returns +1: CCW, 0: collinear, -1: CW. @@ -291,6 +299,33 @@ public: std::make_pair(nullptr, std::numeric_limits::max()); } + // Returns all pairs of values and squared distances. + std::vector> find_all(const Vec2crd &pt) { + // Iterate over 4 closest grid cells around pt, + // Round pt to a closest grid_cell corner. + Vec2crd grid_corner((pt(0)+(m_grid_resolution>>1))>>m_grid_log2, (pt(1)+(m_grid_resolution>>1))>>m_grid_log2); + // For four neighbors of grid_corner: + std::vector> out; + const double r2 = double(m_search_radius) * m_search_radius; + for (coord_t neighbor_y = -1; neighbor_y < 1; ++ neighbor_y) { + for (coord_t neighbor_x = -1; neighbor_x < 1; ++ neighbor_x) { + // Range of fragment starts around grid_corner, close to pt. + auto range = m_map.equal_range(Vec2crd(grid_corner(0) + neighbor_x, grid_corner(1) + neighbor_y)); + // Find the map entry closest to pt. + for (auto it = range.first; it != range.second; ++it) { + const ValueType &value = it->second; + const Vec2crd *pt2 = m_point_accessor(value); + if (pt2 != nullptr) { + const double d2 = (pt - *pt2).cast().squaredNorm(); + if (d2 <= r2) + out.emplace_back(&value, d2); + } + } + } + } + return out; + } + private: typedef typename std::unordered_multimap map_type; PointAccessor m_point_accessor; diff --git a/src/libslic3r/Polygon.cpp b/src/libslic3r/Polygon.cpp index 13cdf65b4f..f74df1c9a2 100644 --- a/src/libslic3r/Polygon.cpp +++ b/src/libslic3r/Polygon.cpp @@ -298,11 +298,6 @@ void Polygon::densify(float min_length, std::vector* lengths_ptr) assert(points.size() == lengths.size() - 1); } -BoundingBox get_extents(const Points &points) -{ - return BoundingBox(points); -} - BoundingBox get_extents(const Polygon &poly) { return poly.bounding_box(); diff --git a/src/libslic3r/Polygon.hpp b/src/libslic3r/Polygon.hpp index f5aa289143..8479a0bd69 100644 --- a/src/libslic3r/Polygon.hpp +++ b/src/libslic3r/Polygon.hpp @@ -21,7 +21,7 @@ public: Point& operator[](Points::size_type idx) { return this->points[idx]; } const Point& operator[](Points::size_type idx) const { return this->points[idx]; } - Polygon() {} + Polygon() = default; virtual ~Polygon() = default; explicit Polygon(const Points &points) : MultiPoint(points) {} Polygon(std::initializer_list points) : MultiPoint(points) {} @@ -74,7 +74,6 @@ public: inline bool operator==(const Polygon &lhs, const Polygon &rhs) { return lhs.points == rhs.points; } inline bool operator!=(const Polygon &lhs, const Polygon &rhs) { return lhs.points != rhs.points; } -extern BoundingBox get_extents(const Points &points); extern BoundingBox get_extents(const Polygon &poly); extern BoundingBox get_extents(const Polygons &polygons); extern BoundingBox get_extents_rotated(const Polygon &poly, double angle); diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 421a1f39e2..0b13745e13 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -427,7 +427,7 @@ const std::vector& Preset::print_options() "infill_extruder", "solid_infill_extruder", "support_material_extruder", "support_material_interface_extruder", "ooze_prevention", "standby_temperature_delta", "interface_shells", "extrusion_width", "first_layer_extrusion_width", "perimeter_extrusion_width", "external_perimeter_extrusion_width", "infill_extrusion_width", "solid_infill_extrusion_width", - "top_infill_extrusion_width", "support_material_extrusion_width", "infill_overlap", "bridge_flow_ratio", "clip_multipart_objects", + "top_infill_extrusion_width", "support_material_extrusion_width", "infill_overlap", "infill_anchor", "bridge_flow_ratio", "clip_multipart_objects", "elefant_foot_compensation", "xy_size_compensation", "threads", "resolution", "wipe_tower", "wipe_tower_x", "wipe_tower_y", "wipe_tower_width", "wipe_tower_rotation_angle", "wipe_tower_bridging", "single_extruder_multi_material_priming", "wipe_tower_no_sparse_layers", "compatible_printers", "compatible_printers_condition", "inherits" @@ -439,7 +439,7 @@ const std::vector& Preset::filament_options() { static std::vector s_opts { "filament_colour", "filament_diameter", "filament_type", "filament_soluble", "filament_notes", "filament_max_volumetric_speed", - "extrusion_multiplier", "filament_density", "filament_cost", "filament_loading_speed", "filament_loading_speed_start", "filament_load_time", + "extrusion_multiplier", "filament_density", "filament_cost", "filament_spool_weight", "filament_loading_speed", "filament_loading_speed_start", "filament_load_time", "filament_unloading_speed", "filament_unloading_speed_start", "filament_unload_time", "filament_toolchange_delay", "filament_cooling_moves", "filament_cooling_initial_speed", "filament_cooling_final_speed", "filament_ramming_parameters", "filament_minimal_purge_on_wipe_tower", "temperature", "first_layer_temperature", "bed_temperature", "first_layer_bed_temperature", "fan_always_on", "cooling", "min_fan_speed", @@ -475,8 +475,9 @@ const std::vector& Preset::printer_options() if (s_opts.empty()) { s_opts = { "printer_technology", - "bed_shape", "bed_custom_texture", "bed_custom_model", "z_offset", "gcode_flavor", "use_relative_e_distances", "serial_port", "serial_speed", + "bed_shape", "bed_custom_texture", "bed_custom_model", "z_offset", "gcode_flavor", "use_relative_e_distances", "use_firmware_retraction", "use_volumetric_e", "variable_layer_height", + //FIXME the print host keys are left here just for conversion from the Printer preset to Physical Printer preset. "host_type", "print_host", "printhost_apikey", "printhost_cafile", "single_extruder_multi_material", "start_gcode", "end_gcode", "before_layer_gcode", "layer_gcode", "toolchange_gcode", "color_change_gcode", "pause_print_gcode", "template_custom_gcode", @@ -595,6 +596,7 @@ const std::vector& Preset::sla_printer_options() "gamma_correction", "min_exposure_time", "max_exposure_time", "min_initial_exposure_time", "max_initial_exposure_time", + //FIXME the print host keys are left here just for conversion from the Printer preset to Physical Printer preset. "print_host", "printhost_apikey", "printhost_cafile", "printer_notes", "inherits" @@ -711,38 +713,6 @@ Preset& PresetCollection::load_preset(const std::string &path, const std::string return this->load_preset(path, name, std::move(cfg), select); } -enum class ProfileHostParams -{ - Same, - Different, - Anonymized, -}; - -static ProfileHostParams profile_host_params_same_or_anonymized(const DynamicPrintConfig &cfg_old, const DynamicPrintConfig &cfg_new) -{ - auto opt_print_host_old = cfg_old.option("print_host"); - auto opt_printhost_apikey_old = cfg_old.option("printhost_apikey"); - auto opt_printhost_cafile_old = cfg_old.option("printhost_cafile"); - - auto opt_print_host_new = cfg_new.option("print_host"); - auto opt_printhost_apikey_new = cfg_new.option("printhost_apikey"); - auto opt_printhost_cafile_new = cfg_new.option("printhost_cafile"); - - // If the new print host data is undefined, use the old data. - bool new_print_host_undefined = (opt_print_host_new == nullptr || opt_print_host_new ->empty()) && - (opt_printhost_apikey_new == nullptr || opt_printhost_apikey_new ->empty()) && - (opt_printhost_cafile_new == nullptr || opt_printhost_cafile_new ->empty()); - if (new_print_host_undefined) - return ProfileHostParams::Anonymized; - - auto opt_same = [](const ConfigOptionString *l, const ConfigOptionString *r) { - return ((l == nullptr || l->empty()) && (r == nullptr || r->empty())) || - (l != nullptr && r != nullptr && l->value == r->value); - }; - return (opt_same(opt_print_host_old, opt_print_host_new) && opt_same(opt_printhost_apikey_old, opt_printhost_apikey_new) && - opt_same(opt_printhost_cafile_old, opt_printhost_cafile_new)) ? ProfileHostParams::Same : ProfileHostParams::Different; -} - static bool profile_print_params_same(const DynamicPrintConfig &cfg_old, const DynamicPrintConfig &cfg_new) { t_config_option_keys diff = cfg_old.diff(cfg_new); @@ -752,10 +722,11 @@ static bool profile_print_params_same(const DynamicPrintConfig &cfg_old, const D "compatible_printers", "compatible_printers_condition", "inherits", "print_settings_id", "filament_settings_id", "sla_print_settings_id", "sla_material_settings_id", "printer_settings_id", "printer_model", "printer_variant", "default_print_profile", "default_filament_profile", "default_sla_print_profile", "default_sla_material_profile", + //FIXME remove the print host keys? "print_host", "printhost_apikey", "printhost_cafile" }) diff.erase(std::remove(diff.begin(), diff.end(), key), diff.end()); // Preset with the same name as stored inside the config exists. - return diff.empty() && profile_host_params_same_or_anonymized(cfg_old, cfg_new) != ProfileHostParams::Different; + return diff.empty(); } // Load a preset from an already parsed config file, insert it into the sorted sequence of presets @@ -784,25 +755,11 @@ Preset& PresetCollection::load_external_preset( it = this->find_preset_renamed(original_name); found = it != m_presets.end(); } - if (found) { - if (profile_print_params_same(it->config, cfg)) { - // The preset exists and it matches the values stored inside config. - if (select) - this->select_preset(it - m_presets.begin()); - return *it; - } - if (profile_host_params_same_or_anonymized(it->config, cfg) == ProfileHostParams::Anonymized) { - // The project being loaded is anonymized. Replace the empty host keys of the loaded profile with the data from the original profile. - // See "Octoprint Settings when Opening a .3MF file" GH issue #3244 - auto opt_update = [it, &cfg](const std::string &opt_key) { - auto opt = it->config.option(opt_key); - if (opt != nullptr) - cfg.set_key_value(opt_key, opt->clone()); - }; - opt_update("print_host"); - opt_update("printhost_apikey"); - opt_update("printhost_cafile"); - } + if (found && profile_print_params_same(it->config, cfg)) { + // The preset exists and it matches the values stored inside config. + if (select) + this->select_preset(it - m_presets.begin()); + return *it; } // Update the "inherits" field. std::string &inherits = Preset::inherits(cfg); @@ -1374,31 +1331,25 @@ const std::vector& PhysicalPrinter::printer_options() "preset_name", "printer_technology", // "printer_model", - "host_type", - "print_host", - "printhost_apikey", + "host_type", + "print_host", + "printhost_apikey", "printhost_cafile", + "printhost_port", "printhost_authorization_type", // HTTP digest authentization (RFC 2617) - "printhost_user", + "printhost_user", "printhost_password" }; } return s_opts; } -const std::vector& PhysicalPrinter::print_host_options() -{ - static std::vector s_opts; - if (s_opts.empty()) { - s_opts = { - "print_host", - "printhost_apikey", - "printhost_cafile" - }; - } - return s_opts; -} +static constexpr auto legacy_print_host_options = { + "print_host", + "printhost_apikey", + "printhost_cafile", +}; std::vector PhysicalPrinter::presets_with_print_host_information(const PrinterPresetCollection& printer_presets) { @@ -1412,7 +1363,7 @@ std::vector PhysicalPrinter::presets_with_print_host_information(co bool PhysicalPrinter::has_print_host_information(const DynamicPrintConfig& config) { - for (const std::string& opt : print_host_options()) + for (const char *opt : legacy_print_host_options) if (!config.opt_string(opt).empty()) return true; @@ -1429,6 +1380,7 @@ bool PhysicalPrinter::has_empty_config() const return config.opt_string("print_host" ).empty() && config.opt_string("printhost_apikey" ).empty() && config.opt_string("printhost_cafile" ).empty() && + config.opt_string("printhost_port" ).empty() && config.opt_string("printhost_user" ).empty() && config.opt_string("printhost_password").empty(); } @@ -1614,9 +1566,7 @@ void PhysicalPrinterCollection::load_printers_from_presets(PrinterPresetCollecti int cnt=0; for (Preset& preset: printer_presets) { DynamicPrintConfig& config = preset.config; - const std::vector& options = PhysicalPrinter::print_host_options(); - - for(const std::string& option : options) { + for(const char* option : legacy_print_host_options) { if (!config.opt_string(option).empty()) { // check if printer with those "Print Host upload" options already exist PhysicalPrinter* existed_printer = find_printer_with_same_config(config); @@ -1635,7 +1585,7 @@ void PhysicalPrinterCollection::load_printers_from_presets(PrinterPresetCollecti } // erase "Print Host upload" information from the preset - for (const std::string& opt : options) + for (const char *opt : legacy_print_host_options) config.opt_string(opt).clear(); // save changes for preset preset.save(); @@ -1643,7 +1593,7 @@ void PhysicalPrinterCollection::load_printers_from_presets(PrinterPresetCollecti // update those changes for edited preset if it's equal to the preset Preset& edited = printer_presets.get_edited_preset(); if (preset.name == edited.name) { - for (const std::string& opt : options) + for (const char *opt : legacy_print_host_options) edited.config.opt_string(opt).clear(); } @@ -1692,7 +1642,7 @@ PhysicalPrinter* PhysicalPrinterCollection::find_printer_with_same_config(const { for (const PhysicalPrinter& printer :*this) { bool is_equal = true; - for (const std::string& opt : PhysicalPrinter::print_host_options()) + for (const char *opt : legacy_print_host_options) if (is_equal && printer.config.opt_string(opt) != config.opt_string(opt)) is_equal = false; @@ -1886,13 +1836,15 @@ namespace PresetUtils { return out; } -#if ENABLE_GCODE_VIEWER std::string system_printer_bed_model(const Preset& preset) { std::string out; const VendorProfile::PrinterModel* pm = PresetUtils::system_printer_model(preset); - if (pm != nullptr && !pm->bed_model.empty()) - out = Slic3r::resources_dir() + "/profiles/" + preset.vendor->id + "/" + pm->bed_model; + if (pm != nullptr && !pm->bed_model.empty()) { + out = Slic3r::data_dir() + "/vendor/" + preset.vendor->id + "/" + pm->bed_model; + if (!boost::filesystem::exists(boost::filesystem::path(out))) + out = Slic3r::resources_dir() + "/profiles/" + preset.vendor->id + "/" + pm->bed_model; + } return out; } @@ -1900,11 +1852,13 @@ namespace PresetUtils { { std::string out; const VendorProfile::PrinterModel* pm = PresetUtils::system_printer_model(preset); - if (pm != nullptr && !pm->bed_texture.empty()) - out = Slic3r::resources_dir() + "/profiles/" + preset.vendor->id + "/" + pm->bed_texture; + if (pm != nullptr && !pm->bed_texture.empty()) { + out = Slic3r::data_dir() + "/vendor/" + preset.vendor->id + "/" + pm->bed_texture; + if (!boost::filesystem::exists(boost::filesystem::path(out))) + out = Slic3r::resources_dir() + "/profiles/" + preset.vendor->id + "/" + pm->bed_texture; + } return out; } -#endif // ENABLE_GCODE_VIEWER } // namespace PresetUtils } // namespace Slic3r diff --git a/src/libslic3r/Preset.hpp b/src/libslic3r/Preset.hpp index dc6dd8e68b..6409eee7ca 100644 --- a/src/libslic3r/Preset.hpp +++ b/src/libslic3r/Preset.hpp @@ -537,10 +537,8 @@ public: namespace PresetUtils { // PrinterModel of a system profile, from which this preset is derived, or null if it is not derived from a system profile. const VendorProfile::PrinterModel* system_printer_model(const Preset &preset); -#if ENABLE_GCODE_VIEWER std::string system_printer_bed_model(const Preset& preset); std::string system_printer_bed_texture(const Preset& preset); -#endif // ENABLE_GCODE_VIEWER } // namespace PresetUtils diff --git a/src/libslic3r/PresetBundle.cpp b/src/libslic3r/PresetBundle.cpp index dccd0f5cd6..44df000c3b 100644 --- a/src/libslic3r/PresetBundle.cpp +++ b/src/libslic3r/PresetBundle.cpp @@ -37,11 +37,11 @@ static std::vector s_project_options { const char *PresetBundle::PRUSA_BUNDLE = "PrusaResearch"; PresetBundle::PresetBundle() : - prints(Preset::TYPE_PRINT, Preset::print_options(), static_cast(FullPrintConfig::defaults())), - filaments(Preset::TYPE_FILAMENT, Preset::filament_options(), static_cast(FullPrintConfig::defaults())), + prints(Preset::TYPE_PRINT, Preset::print_options(), static_cast(FullPrintConfig::defaults())), + filaments(Preset::TYPE_FILAMENT, Preset::filament_options(), static_cast(FullPrintConfig::defaults())), sla_materials(Preset::TYPE_SLA_MATERIAL, Preset::sla_material_options(), static_cast(SLAFullPrintConfig::defaults())), sla_prints(Preset::TYPE_SLA_PRINT, Preset::sla_print_options(), static_cast(SLAFullPrintConfig::defaults())), - printers(Preset::TYPE_PRINTER, Preset::printer_options(), static_cast(FullPrintConfig::defaults()), "- default FFF -"), + printers(Preset::TYPE_PRINTER, Preset::printer_options(), static_cast(FullPrintConfig::defaults()), "- default FFF -"), physical_printers(PhysicalPrinter::printer_options()) { // The following keys are handled by the UI, they do not have a counterpart in any StaticPrintConfig derived classes, @@ -77,11 +77,12 @@ PresetBundle::PresetBundle() : for (size_t i = 0; i < 2; ++ i) { // The following ugly switch is to avoid printers.preset(0) to return the edited instance, as the 0th default is the current one. Preset &preset = this->printers.default_preset(i); - preset.config.optptr("printer_settings_id", true); - preset.config.optptr("printer_vendor", true); - preset.config.optptr("printer_model", true); - preset.config.optptr("printer_variant", true); - preset.config.optptr("thumbnails", true); + for (const char *key : { + "printer_settings_id", "printer_vendor", "printer_model", "printer_variant", "thumbnails", + //FIXME the following keys are only created here for compatibility to be able to parse legacy Printer profiles. + // These keys are converted to Physical Printer profile. After the conversion, they shall be removed. + "host_type", "print_host", "printhost_apikey", "printhost_cafile"}) + preset.config.optptr(key, true); if (i == 0) { preset.config.optptr("default_print_profile", true); preset.config.option("default_filament_profile", true)->values = { "" }; @@ -458,7 +459,7 @@ void PresetBundle::load_selections(AppConfig &config, const std::string &preferr this->update_multi_material_filament_presets(); // Parse the initial physical printer name. - std::string initial_physical_printer_name = remove_ini_suffix(config.get("extras", "physical_printer")); + std::string initial_physical_printer_name = remove_ini_suffix(config.get("presets", "physical_printer")); // Activate physical printer from the config if (!initial_physical_printer_name.empty()) @@ -482,8 +483,7 @@ void PresetBundle::export_selections(AppConfig &config) config.set("presets", "sla_print", sla_prints.get_selected_preset_name()); config.set("presets", "sla_material", sla_materials.get_selected_preset_name()); config.set("presets", "printer", printers.get_selected_preset_name()); - - config.set("extras", "physical_printer", physical_printers.get_selected_full_printer_name()); + config.set("presets", "physical_printer", physical_printers.get_selected_full_printer_name()); } DynamicPrintConfig PresetBundle::full_config() const @@ -496,6 +496,7 @@ DynamicPrintConfig PresetBundle::full_config() const DynamicPrintConfig PresetBundle::full_config_secure() const { DynamicPrintConfig config = this->full_config(); + //FIXME legacy, the keys should not be there after conversion to a Physical Printer profile. config.erase("print_host"); config.erase("printhost_apikey"); config.erase("printhost_cafile"); diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index 9c5c7bfb7c..4e4c90fb2f 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -98,6 +98,7 @@ bool Print::invalidate_state_by_config_options(const std::vectoroutput_filepath(path_template); std::string message; -#if ENABLE_GCODE_VIEWER if (!path.empty() && result == nullptr) { -#else - if (! path.empty() && preview_data == nullptr) { -#endif // ENABLE_GCODE_VIEWER // Only show the path if preview_data is not set -> running from command line. message = L("Exporting G-code"); message += " to "; @@ -1686,11 +1679,7 @@ std::string Print::export_gcode(const std::string& path_template, GCodePreviewDa // The following line may die for multiple reasons. GCode gcode; -#if ENABLE_GCODE_VIEWER gcode.do_export(this, path.c_str(), result, thumbnail_cb); -#else - gcode.do_export(this, path.c_str(), preview_data, thumbnail_cb); -#endif // ENABLE_GCODE_VIEWER return path.c_str(); } diff --git a/src/libslic3r/Print.hpp b/src/libslic3r/Print.hpp index d354b0d792..f370d751d8 100644 --- a/src/libslic3r/Print.hpp +++ b/src/libslic3r/Print.hpp @@ -11,9 +11,7 @@ #include "GCode/ToolOrdering.hpp" #include "GCode/WipeTower.hpp" #include "GCode/ThumbnailData.hpp" -#if ENABLE_GCODE_VIEWER #include "GCode/GCodeProcessor.hpp" -#endif // ENABLE_GCODE_VIEWER #include "libslic3r.h" @@ -23,9 +21,6 @@ class Print; class PrintObject; class ModelObject; class GCode; -#if !ENABLE_GCODE_VIEWER -class GCodePreviewData; -#endif // !ENABLE_GCODE_VIEWER enum class SlicingMode : uint32_t; class Layer; class SupportLayer; @@ -312,10 +307,6 @@ struct PrintStatistics PrintStatistics() { clear(); } std::string estimated_normal_print_time; std::string estimated_silent_print_time; -#if !ENABLE_GCODE_VIEWER - std::vector> estimated_normal_custom_gcode_print_times; - std::vector> estimated_silent_custom_gcode_print_times; -#endif // !ENABLE_GCODE_VIEWER double total_used_filament; double total_extruded_volume; double total_cost; @@ -333,12 +324,6 @@ struct PrintStatistics std::string finalize_output_path(const std::string &path_in) const; void clear() { -#if !ENABLE_GCODE_VIEWER - estimated_normal_print_time.clear(); - estimated_silent_print_time.clear(); - estimated_normal_custom_gcode_print_times.clear(); - estimated_silent_custom_gcode_print_times.clear(); -#endif // !ENABLE_GCODE_VIEWER total_used_filament = 0.; total_extruded_volume = 0.; total_cost = 0.; @@ -380,11 +365,7 @@ public: void process() override; // Exports G-code into a file name based on the path_template, returns the file path of the generated G-code file. // If preview_data is not null, the preview_data is filled in for the G-code visualization (not used by the command line Slic3r). -#if ENABLE_GCODE_VIEWER std::string export_gcode(const std::string& path_template, GCodeProcessor::Result* result, ThumbnailsGeneratorCallback thumbnail_cb = nullptr); -#else - std::string export_gcode(const std::string& path_template, GCodePreviewData* preview_data, ThumbnailsGeneratorCallback thumbnail_cb = nullptr); -#endif // ENABLE_GCODE_VIEWER // methods for handling state bool is_step_done(PrintStep step) const { return Inherited::is_step_done(step); } diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 095a1b390f..f61d2ed9c9 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -108,7 +108,14 @@ void PrintConfigDef::init_common_params() "the API Key or the password required for authentication."); def->mode = comAdvanced; def->set_default_value(new ConfigOptionString("")); - + + def = this->add("printhost_port", coString); + def->label = L("Printer"); + def->tooltip = L("Name of the printer"); + def->gui_type = "select_open"; + def->mode = comAdvanced; + def->set_default_value(new ConfigOptionString("")); + def = this->add("printhost_cafile", coString); def->label = L("HTTPS CA File"); def->tooltip = L("Custom CA certificate file can be specified for HTTPS OctoPrint connections, in crt/pem format. " @@ -476,7 +483,7 @@ void PrintConfigDef::init_fff_params() def->enum_values = def_top_fill_pattern->enum_values; def->enum_labels = def_top_fill_pattern->enum_labels; def->aliases = def_top_fill_pattern->aliases; - def->set_default_value(new ConfigOptionEnum(ipRectilinear)); + def->set_default_value(new ConfigOptionEnum(ipMonotonic)); def = this->add("external_perimeter_extrusion_width", coFloatOrPercent); def->label = L("External perimeters"); @@ -799,6 +806,13 @@ void PrintConfigDef::init_fff_params() def->min = 0; def->set_default_value(new ConfigOptionFloats { 0. }); + def = this->add("filament_spool_weight", coFloats); + def->label = L("Spool weight"); + def->tooltip = L("Enter weight of the spool without filament. This is only for statistical information."); + def->sidetext = L("g"); + def->min = 0; + def->set_default_value(new ConfigOptionFloats { 0. }); + def = this->add("filament_settings_id", coStrings); def->set_default_value(new ConfigOptionStrings { "" }); def->cli = ConfigOptionDef::nocli; @@ -950,9 +964,9 @@ void PrintConfigDef::init_fff_params() def = this->add("first_layer_temperature", coInts); def->label = L("First layer"); - def->full_label = L("First layer extruder temperature"); - def->tooltip = L("Extruder temperature for first layer. If you want to control temperature manually " - "during print, set this to zero to disable temperature control commands in the output file."); + def->full_label = L("First layer nozzle temperature"); + def->tooltip = L("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."); def->sidetext = L("°C"); def->min = 0; def->max = max_temp; @@ -1043,6 +1057,30 @@ void PrintConfigDef::init_fff_params() def->mode = comAdvanced; def->set_default_value(new ConfigOptionInt(1)); + def = this->add("infill_anchor", coFloatOrPercent); + def->label = L("Length of the infill anchor"); + def->category = L("Advanced"); + def->tooltip = L("Connect an infill line to an internal perimeter with a short segment of an additional perimeter. " + "If expressed as percentage (example: 15%) it is calculated over infill extrusion width."); + def->sidetext = L("mm or %"); + def->ratio_over = "infill_extrusion_width"; + def->gui_type = "f_enum_open"; + def->enum_values.push_back("0"); + def->enum_values.push_back("1"); + def->enum_values.push_back("2"); + def->enum_values.push_back("5"); + def->enum_values.push_back("10"); + def->enum_values.push_back("1000"); + def->enum_labels.push_back(L("0 (not anchored)")); + def->enum_labels.push_back("1 mm"); + def->enum_labels.push_back("2 mm"); + def->enum_labels.push_back("5 mm"); + def->enum_labels.push_back("10 mm"); + def->enum_labels.push_back(L("1000 (unlimited)")); + def->mode = comAdvanced; +// def->set_default_value(new ConfigOptionFloatOrPercent(300, true)); + def->set_default_value(new ConfigOptionFloatOrPercent(1000, false)); + def = this->add("infill_extruder", coInt); def->label = L("Infill extruder"); def->category = L("Extruders"); @@ -1163,9 +1201,9 @@ void PrintConfigDef::init_fff_params() def->set_default_value(new ConfigOptionFloat(0.1)); def = this->add("ironing_speed", coFloat); - def->label = L("Ironing speed"); + def->label = L("Ironing"); def->category = L("Speed"); - def->tooltip = L("Ironing speed"); + def->tooltip = L("Ironing"); def->sidetext = L("mm/s"); def->min = 0; def->mode = comAdvanced; @@ -1199,7 +1237,7 @@ void PrintConfigDef::init_fff_params() def->set_default_value(new ConfigOptionBool(true)); def = this->add("machine_limits_usage", coEnum); - def->label = L("How to apply"); + def->label = L("How to apply limits"); def->full_label = L("Purpose of Machine Limits"); def->category = L("Machine limits"); def->tooltip = L("How to apply the Machine Limits"); @@ -1207,9 +1245,9 @@ void PrintConfigDef::init_fff_params() def->enum_values.push_back("emit_to_gcode"); def->enum_values.push_back("time_estimate_only"); def->enum_values.push_back("ignore"); - def->enum_labels.push_back("Emit to G-code"); - def->enum_labels.push_back("Use for time estimate"); - def->enum_labels.push_back("Ignore"); + def->enum_labels.push_back(L("Emit to G-code")); + def->enum_labels.push_back(L("Use for time estimate")); + def->enum_labels.push_back(L("Ignore")); def->mode = comAdvanced; def->set_default_value(new ConfigOptionEnum(MachineLimitsUsage::EmitToGCode)); @@ -1447,10 +1485,12 @@ void PrintConfigDef::init_fff_params() def->enum_values.push_back("duet"); def->enum_values.push_back("flashair"); def->enum_values.push_back("astrobox"); + def->enum_values.push_back("repetier"); def->enum_labels.push_back("OctoPrint"); def->enum_labels.push_back("Duet"); def->enum_labels.push_back("FlashAir"); def->enum_labels.push_back("AstroBox"); + def->enum_labels.push_back("Repetier"); def->mode = comAdvanced; def->set_default_value(new ConfigOptionEnum(htOctoPrint)); @@ -1765,26 +1805,6 @@ void PrintConfigDef::init_fff_params() def->set_default_value(new ConfigOptionFloat(30)); #endif - def = this->add("serial_port", coString); - def->gui_type = "select_open"; - def->label = ""; - def->full_label = L("Serial port"); - def->tooltip = L("USB/serial port for printer connection."); - def->width = 20; - def->set_default_value(new ConfigOptionString("")); - - def = this->add("serial_speed", coInt); - def->gui_type = "i_enum_open"; - def->label = L("Speed"); - def->full_label = L("Serial port speed"); - def->tooltip = L("Speed (baud) of USB/serial port for printer connection."); - def->min = 1; - def->max = 300000; - def->enum_values.push_back("115200"); - def->enum_values.push_back("250000"); - def->mode = comAdvanced; - def->set_default_value(new ConfigOptionInt(250000)); - def = this->add("skirt_distance", coFloat); def->label = L("Distance from object"); def->tooltip = L("Distance between skirt and object(s). Set this to zero to attach the skirt " @@ -2206,10 +2226,10 @@ void PrintConfigDef::init_fff_params() def = this->add("temperature", coInts); def->label = L("Other layers"); - def->tooltip = L("Extruder temperature for layers after the first one. Set this to zero to disable " - "temperature control commands in the output."); + def->tooltip = L("Nozzle temperature for layers after the first one. Set this to zero to disable " + "temperature control commands in the output G-code."); def->sidetext = L("°C"); - def->full_label = L("Extruder temperature"); + def->full_label = L("Nozzle temperature"); def->min = 0; def->max = max_temp; def->set_default_value(new ConfigOptionInts { 200 }); @@ -3176,8 +3196,9 @@ void PrintConfigDef::handle_legacy(t_config_option_key &opt_key, std::string &va "seal_position", "vibration_limit", "bed_size", "print_center", "g0", "threads", "pressure_advance", "wipe_tower_per_color_wipe" #ifndef HAS_PRESSURE_EQUALIZER - , "max_volumetric_extrusion_rate_slope_positive", "max_volumetric_extrusion_rate_slope_negative" + , "max_volumetric_extrusion_rate_slope_positive", "max_volumetric_extrusion_rate_slope_negative", #endif /* HAS_PRESSURE_EQUALIZER */ + "serial_port", "serial_speed" }; // In PrusaSlicer 2.3.0-alpha0 the "monotonous" infill was introduced, which was later renamed to "monotonic". @@ -3498,7 +3519,6 @@ StaticPrintConfig::StaticCache PrintRegionConfi StaticPrintConfig::StaticCache MachineEnvelopeConfig::s_cache_MachineEnvelopeConfig; StaticPrintConfig::StaticCache GCodeConfig::s_cache_GCodeConfig; StaticPrintConfig::StaticCache PrintConfig::s_cache_PrintConfig; -StaticPrintConfig::StaticCache HostConfig::s_cache_HostConfig; StaticPrintConfig::StaticCache FullPrintConfig::s_cache_FullPrintConfig; StaticPrintConfig::StaticCache SLAMaterialConfig::s_cache_SLAMaterialConfig; @@ -3697,7 +3717,7 @@ CLIMiscConfigDef::CLIMiscConfigDef() def->cli = "output|o"; def = this->add("single_instance", coBool); - def->label = L("Single Instance"); + def->label = L("Single instance mode"); def->tooltip = L("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."); diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index 99b5feb951..4f887c7c03 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -11,7 +11,6 @@ // PrintRegionConfig // PrintConfig // GCodeConfig -// HostConfig // #ifndef slic3r_PrintConfig_hpp_ @@ -37,7 +36,7 @@ enum class MachineLimitsUsage { }; enum PrintHostType { - htOctoPrint, htDuet, htFlashAir, htAstroBox + htOctoPrint, htDuet, htFlashAir, htAstroBox, htRepetier }; enum AuthorizationType { @@ -127,6 +126,7 @@ template<> inline const t_config_enum_values& ConfigOptionEnum::g keys_map["duet"] = htDuet; keys_map["flashair"] = htFlashAir; keys_map["astrobox"] = htAstroBox; + keys_map["repetier"] = htRepetier; } return keys_map; } @@ -530,6 +530,7 @@ public: ConfigOptionPercent fill_density; ConfigOptionEnum fill_pattern; ConfigOptionFloat gap_fill_speed; + ConfigOptionFloatOrPercent infill_anchor; ConfigOptionInt infill_extruder; ConfigOptionFloatOrPercent infill_extrusion_width; ConfigOptionInt infill_every_layers; @@ -581,6 +582,7 @@ protected: OPT_PTR(fill_density); OPT_PTR(fill_pattern); OPT_PTR(gap_fill_speed); + OPT_PTR(infill_anchor); OPT_PTR(infill_extruder); OPT_PTR(infill_extrusion_width); OPT_PTR(infill_every_layers); @@ -681,6 +683,7 @@ public: ConfigOptionStrings filament_type; ConfigOptionBools filament_soluble; ConfigOptionFloats filament_cost; + ConfigOptionFloats filament_spool_weight; ConfigOptionFloats filament_max_volumetric_speed; ConfigOptionFloats filament_loading_speed; ConfigOptionFloats filament_loading_speed_start; @@ -757,6 +760,7 @@ protected: OPT_PTR(filament_type); OPT_PTR(filament_soluble); OPT_PTR(filament_cost); + OPT_PTR(filament_spool_weight); OPT_PTR(filament_max_volumetric_speed); OPT_PTR(filament_loading_speed); OPT_PTR(filament_loading_speed_start); @@ -962,38 +966,14 @@ protected: } }; -class HostConfig : public StaticPrintConfig -{ - STATIC_PRINT_CONFIG_CACHE(HostConfig) -public: - ConfigOptionEnum host_type; - ConfigOptionString print_host; - ConfigOptionString printhost_apikey; - ConfigOptionString printhost_cafile; - ConfigOptionString serial_port; - ConfigOptionInt serial_speed; - -protected: - void initialize(StaticCacheBase &cache, const char *base_ptr) - { - OPT_PTR(host_type); - OPT_PTR(print_host); - OPT_PTR(printhost_apikey); - OPT_PTR(printhost_cafile); - OPT_PTR(serial_port); - OPT_PTR(serial_speed); - } -}; - // This object is mapped to Perl as Slic3r::Config::Full. class FullPrintConfig : public PrintObjectConfig, public PrintRegionConfig, - public PrintConfig, - public HostConfig + public PrintConfig { STATIC_PRINT_CONFIG_CACHE_DERIVED(FullPrintConfig) - FullPrintConfig() : PrintObjectConfig(0), PrintRegionConfig(0), PrintConfig(0), HostConfig(0) { initialize_cache(); *this = s_cache_FullPrintConfig.defaults(); } + FullPrintConfig() : PrintObjectConfig(0), PrintRegionConfig(0), PrintConfig(0) { initialize_cache(); *this = s_cache_FullPrintConfig.defaults(); } public: // Validate the FullPrintConfig. Returns an empty string on success, otherwise an error message is returned. @@ -1001,13 +981,12 @@ public: protected: // Protected constructor to be called to initialize ConfigCache::m_default. - FullPrintConfig(int) : PrintObjectConfig(0), PrintRegionConfig(0), PrintConfig(0), HostConfig(0) {} + FullPrintConfig(int) : PrintObjectConfig(0), PrintRegionConfig(0), PrintConfig(0) {} void initialize(StaticCacheBase &cache, const char *base_ptr) { this->PrintObjectConfig::initialize(cache, base_ptr); this->PrintRegionConfig::initialize(cache, base_ptr); this->PrintConfig ::initialize(cache, base_ptr); - this->HostConfig ::initialize(cache, base_ptr); } }; diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp index db654bb340..3937f4fede 100644 --- a/src/libslic3r/PrintObject.cpp +++ b/src/libslic3r/PrintObject.cpp @@ -590,7 +590,7 @@ bool PrintObject::invalidate_state_by_config_options(const std::vector layers_times; // Config with the filled in print statistics. DynamicConfig config() const; @@ -366,6 +367,7 @@ struct SLAPrintStatistics fast_layers_count = 0; total_cost = 0.; total_weight = 0.; + layers_times.clear(); } }; diff --git a/src/libslic3r/SLAPrintSteps.cpp b/src/libslic3r/SLAPrintSteps.cpp index 11c8c6f4e6..d8bea62aea 100644 --- a/src/libslic3r/SLAPrintSteps.cpp +++ b/src/libslic3r/SLAPrintSteps.cpp @@ -671,6 +671,8 @@ void SLAPrint::Steps::merge_slices_and_eval_stats() { double models_volume(0.0); double estim_time(0.0); + std::vector layers_times; + layers_times.reserve(printer_input.size()); size_t slow_layers = 0; size_t fast_layers = 0; @@ -688,7 +690,7 @@ void SLAPrint::Steps::merge_slices_and_eval_stats() { // write vars &mutex, &models_volume, &supports_volume, &estim_time, &slow_layers, - &fast_layers, &fade_layer_time](size_t sliced_layer_cnt) + &fast_layers, &fade_layer_time, &layers_times](size_t sliced_layer_cnt) { PrintLayer &layer = m_print->m_printer_input[sliced_layer_cnt]; @@ -775,20 +777,21 @@ void SLAPrint::Steps::merge_slices_and_eval_stats() { else slow_layers++; - // Calculation of the printing time - + + double layer_times = 0.0; if (sliced_layer_cnt < 3) - estim_time += init_exp_time; - else if (fade_layer_time > exp_time) - { + layer_times += init_exp_time; + else if (fade_layer_time > exp_time) { fade_layer_time -= delta_fade_time; - estim_time += fade_layer_time; + layer_times += fade_layer_time; } else - estim_time += exp_time; - - estim_time += tilt_time; + layer_times += exp_time; + layer_times += tilt_time; + + layers_times.push_back(layer_times); + estim_time += layer_times; } }; @@ -804,8 +807,10 @@ void SLAPrint::Steps::merge_slices_and_eval_stats() { // A layers count o the highest object if (printer_input.size() == 0) print_statistics.estimated_print_time = std::nan(""); - else + else { print_statistics.estimated_print_time = estim_time; + print_statistics.layers_times = layers_times; + } print_statistics.fast_layers_count = fast_layers; print_statistics.slow_layers_count = slow_layers; diff --git a/src/libslic3r/SVG.cpp b/src/libslic3r/SVG.cpp index 1c1c906c9f..da30a197fc 100644 --- a/src/libslic3r/SVG.cpp +++ b/src/libslic3r/SVG.cpp @@ -3,8 +3,6 @@ #include -#define COORD(x) (unscale((x))*10) - namespace Slic3r { bool SVG::open(const char* afilename) @@ -33,8 +31,9 @@ bool SVG::open(const char* afilename, const BoundingBox &bbox, const coord_t bbo this->f = boost::nowide::fopen(afilename, "w"); if (f == NULL) return false; - float w = COORD(bbox.max(0) - bbox.min(0) + 2 * bbox_offset); - float h = COORD(bbox.max(1) - bbox.min(1) + 2 * bbox_offset); + float w = to_svg_coord(bbox.max(0) - bbox.min(0) + 2 * bbox_offset); + float h = to_svg_coord(bbox.max(1) - bbox.min(1) + 2 * bbox_offset); + this->height = h; fprintf(this->f, "\n" "\n" @@ -47,12 +46,11 @@ bool SVG::open(const char* afilename, const BoundingBox &bbox, const coord_t bbo return true; } -void -SVG::draw(const Line &line, std::string stroke, coordf_t stroke_width) +void SVG::draw(const Line &line, std::string stroke, coordf_t stroke_width) { fprintf(this->f, " arrows) fprintf(this->f, " marker-end=\"url(#endArrow)\""); fprintf(this->f, "/>\n"); @@ -67,34 +65,31 @@ void SVG::draw(const ThickLine &line, const std::string &fill, const std::string coordf_t db = coordf_t(0.5)*line.b_width/len; fprintf(this->f, " \n", - COORD(line.a(0)-da*perp(0)-origin(0)), - COORD(line.a(1)-da*perp(1)-origin(1)), - COORD(line.b(0)-db*perp(0)-origin(0)), - COORD(line.b(1)-db*perp(1)-origin(1)), - COORD(line.b(0)+db*perp(0)-origin(0)), - COORD(line.b(1)+db*perp(1)-origin(1)), - COORD(line.a(0)+da*perp(0)-origin(0)), - COORD(line.a(1)+da*perp(1)-origin(1)), + to_svg_x(line.a(0)-da*perp(0)-origin(0)), + to_svg_y(line.a(1)-da*perp(1)-origin(1)), + to_svg_x(line.b(0)-db*perp(0)-origin(0)), + to_svg_y(line.b(1)-db*perp(1)-origin(1)), + to_svg_x(line.b(0)+db*perp(0)-origin(0)), + to_svg_y(line.b(1)+db*perp(1)-origin(1)), + to_svg_x(line.a(0)+da*perp(0)-origin(0)), + to_svg_y(line.a(1)+da*perp(1)-origin(1)), fill.c_str(), stroke.c_str(), - (stroke_width == 0) ? 1.f : COORD(stroke_width)); + (stroke_width == 0) ? 1.f : to_svg_coord(stroke_width)); } -void -SVG::draw(const Lines &lines, std::string stroke, coordf_t stroke_width) +void SVG::draw(const Lines &lines, std::string stroke, coordf_t stroke_width) { - for (Lines::const_iterator it = lines.begin(); it != lines.end(); ++it) - this->draw(*it, stroke, stroke_width); + for (const Line &l : lines) + this->draw(l, stroke, stroke_width); } -void -SVG::draw(const IntersectionLines &lines, std::string stroke) +void SVG::draw(const IntersectionLines &lines, std::string stroke) { - for (IntersectionLines::const_iterator it = lines.begin(); it != lines.end(); ++it) - this->draw((Line)*it, stroke); + for (const IntersectionLine &il : lines) + this->draw((Line)il, stroke); } -void -SVG::draw(const ExPolygon &expolygon, std::string fill, const float fill_opacity) +void SVG::draw(const ExPolygon &expolygon, std::string fill, const float fill_opacity) { this->fill = fill; @@ -106,8 +101,7 @@ SVG::draw(const ExPolygon &expolygon, std::string fill, const float fill_opacity this->path(d, true, 0, fill_opacity); } -void -SVG::draw_outline(const ExPolygon &expolygon, std::string stroke_outer, std::string stroke_holes, coordf_t stroke_width) +void SVG::draw_outline(const ExPolygon &expolygon, std::string stroke_outer, std::string stroke_holes, coordf_t stroke_width) { draw_outline(expolygon.contour, stroke_outer, stroke_width); for (Polygons::const_iterator it = expolygon.holes.begin(); it != expolygon.holes.end(); ++ it) { @@ -115,83 +109,71 @@ SVG::draw_outline(const ExPolygon &expolygon, std::string stroke_outer, std::str } } -void -SVG::draw(const ExPolygons &expolygons, std::string fill, const float fill_opacity) +void SVG::draw(const ExPolygons &expolygons, std::string fill, const float fill_opacity) { for (ExPolygons::const_iterator it = expolygons.begin(); it != expolygons.end(); ++it) this->draw(*it, fill, fill_opacity); } -void -SVG::draw_outline(const ExPolygons &expolygons, std::string stroke_outer, std::string stroke_holes, coordf_t stroke_width) +void SVG::draw_outline(const ExPolygons &expolygons, std::string stroke_outer, std::string stroke_holes, coordf_t stroke_width) { for (ExPolygons::const_iterator it = expolygons.begin(); it != expolygons.end(); ++ it) draw_outline(*it, stroke_outer, stroke_holes, stroke_width); } -void -SVG::draw(const Surface &surface, std::string fill, const float fill_opacity) +void SVG::draw(const Surface &surface, std::string fill, const float fill_opacity) { draw(surface.expolygon, fill, fill_opacity); } -void -SVG::draw_outline(const Surface &surface, std::string stroke_outer, std::string stroke_holes, coordf_t stroke_width) +void SVG::draw_outline(const Surface &surface, std::string stroke_outer, std::string stroke_holes, coordf_t stroke_width) { draw_outline(surface.expolygon, stroke_outer, stroke_holes, stroke_width); } -void -SVG::draw(const Surfaces &surfaces, std::string fill, const float fill_opacity) +void SVG::draw(const Surfaces &surfaces, std::string fill, const float fill_opacity) { for (Surfaces::const_iterator it = surfaces.begin(); it != surfaces.end(); ++it) this->draw(*it, fill, fill_opacity); } -void -SVG::draw_outline(const Surfaces &surfaces, std::string stroke_outer, std::string stroke_holes, coordf_t stroke_width) +void SVG::draw_outline(const Surfaces &surfaces, std::string stroke_outer, std::string stroke_holes, coordf_t stroke_width) { for (Surfaces::const_iterator it = surfaces.begin(); it != surfaces.end(); ++ it) draw_outline(*it, stroke_outer, stroke_holes, stroke_width); } -void -SVG::draw(const SurfacesPtr &surfaces, std::string fill, const float fill_opacity) +void SVG::draw(const SurfacesPtr &surfaces, std::string fill, const float fill_opacity) { for (SurfacesPtr::const_iterator it = surfaces.begin(); it != surfaces.end(); ++it) this->draw(*(*it), fill, fill_opacity); } -void -SVG::draw_outline(const SurfacesPtr &surfaces, std::string stroke_outer, std::string stroke_holes, coordf_t stroke_width) +void SVG::draw_outline(const SurfacesPtr &surfaces, std::string stroke_outer, std::string stroke_holes, coordf_t stroke_width) { for (SurfacesPtr::const_iterator it = surfaces.begin(); it != surfaces.end(); ++ it) draw_outline(*(*it), stroke_outer, stroke_holes, stroke_width); } -void -SVG::draw(const Polygon &polygon, std::string fill) +void SVG::draw(const Polygon &polygon, std::string fill) { this->fill = fill; this->path(this->get_path_d(polygon, true), !fill.empty(), 0, 1.f); } -void -SVG::draw(const Polygons &polygons, std::string fill) +void SVG::draw(const Polygons &polygons, std::string fill) { for (Polygons::const_iterator it = polygons.begin(); it != polygons.end(); ++it) this->draw(*it, fill); } -void -SVG::draw(const Polyline &polyline, std::string stroke, coordf_t stroke_width) +void SVG::draw(const Polyline &polyline, std::string stroke, coordf_t stroke_width) { this->stroke = stroke; this->path(this->get_path_d(polyline, false), false, stroke_width, 1.f); } -void -SVG::draw(const Polylines &polylines, std::string stroke, coordf_t stroke_width) +void SVG::draw(const Polylines &polylines, std::string stroke, coordf_t stroke_width) { for (Polylines::const_iterator it = polylines.begin(); it != polylines.end(); ++it) this->draw(*it, stroke, stroke_width); @@ -203,73 +185,64 @@ void SVG::draw(const ThickLines &thicklines, const std::string &fill, const std: this->draw(*it, fill, stroke, stroke_width); } -void -SVG::draw(const ThickPolylines &polylines, const std::string &stroke, coordf_t stroke_width) +void SVG::draw(const ThickPolylines &polylines, const std::string &stroke, coordf_t stroke_width) { for (ThickPolylines::const_iterator it = polylines.begin(); it != polylines.end(); ++it) this->draw((Polyline)*it, stroke, stroke_width); } -void -SVG::draw(const ThickPolylines &thickpolylines, const std::string &fill, const std::string &stroke, coordf_t stroke_width) +void SVG::draw(const ThickPolylines &thickpolylines, const std::string &fill, const std::string &stroke, coordf_t stroke_width) { for (ThickPolylines::const_iterator it = thickpolylines.begin(); it != thickpolylines.end(); ++ it) draw(it->thicklines(), fill, stroke, stroke_width); } -void -SVG::draw(const Point &point, std::string fill, coord_t iradius) +void SVG::draw(const Point &point, std::string fill, coord_t iradius) { - float radius = (iradius == 0) ? 3.f : COORD(iradius); + float radius = (iradius == 0) ? 3.f : to_svg_coord(iradius); std::ostringstream svg; - svg << " "; fprintf(this->f, "%s\n", svg.str().c_str()); } -void -SVG::draw(const Points &points, std::string fill, coord_t radius) +void SVG::draw(const Points &points, std::string fill, coord_t radius) { for (Points::const_iterator it = points.begin(); it != points.end(); ++it) this->draw(*it, fill, radius); } -void -SVG::draw(const ClipperLib::Path &polygon, double scale, std::string stroke, coordf_t stroke_width) +void SVG::draw(const ClipperLib::Path &polygon, double scale, std::string stroke, coordf_t stroke_width) { this->stroke = stroke; this->path(this->get_path_d(polygon, scale, true), false, stroke_width, 1.f); } -void -SVG::draw(const ClipperLib::Paths &polygons, double scale, std::string stroke, coordf_t stroke_width) +void SVG::draw(const ClipperLib::Paths &polygons, double scale, std::string stroke, coordf_t stroke_width) { for (ClipperLib::Paths::const_iterator it = polygons.begin(); it != polygons.end(); ++ it) draw(*it, scale, stroke, stroke_width); } -void -SVG::draw_outline(const Polygon &polygon, std::string stroke, coordf_t stroke_width) +void SVG::draw_outline(const Polygon &polygon, std::string stroke, coordf_t stroke_width) { this->stroke = stroke; this->path(this->get_path_d(polygon, true), false, stroke_width, 1.f); } -void -SVG::draw_outline(const Polygons &polygons, std::string stroke, coordf_t stroke_width) +void SVG::draw_outline(const Polygons &polygons, std::string stroke, coordf_t stroke_width) { for (Polygons::const_iterator it = polygons.begin(); it != polygons.end(); ++ it) draw_outline(*it, stroke, stroke_width); } -void -SVG::path(const std::string &d, bool fill, coordf_t stroke_width, const float fill_opacity) +void SVG::path(const std::string &d, bool fill, coordf_t stroke_width, const float fill_opacity) { float lineWidth = 0.f; if (! fill) - lineWidth = (stroke_width == 0) ? 2.f : COORD(stroke_width); + lineWidth = (stroke_width == 0) ? 2.f : to_svg_coord(stroke_width); fprintf( this->f, @@ -283,27 +256,25 @@ SVG::path(const std::string &d, bool fill, coordf_t stroke_width, const float fi ); } -std::string -SVG::get_path_d(const MultiPoint &mp, bool closed) const +std::string SVG::get_path_d(const MultiPoint &mp, bool closed) const { std::ostringstream d; d << "M "; for (Points::const_iterator p = mp.points.begin(); p != mp.points.end(); ++p) { - d << COORD((*p)(0) - origin(0)) << " "; - d << COORD((*p)(1) - origin(1)) << " "; + d << to_svg_x((*p)(0) - origin(0)) << " "; + d << to_svg_y((*p)(1) - origin(1)) << " "; } if (closed) d << "z"; return d.str(); } -std::string -SVG::get_path_d(const ClipperLib::Path &path, double scale, bool closed) const +std::string SVG::get_path_d(const ClipperLib::Path &path, double scale, bool closed) const { std::ostringstream d; d << "M "; for (ClipperLib::Path::const_iterator p = path.begin(); p != path.end(); ++p) { - d << COORD(scale * p->X - origin(0)) << " "; - d << COORD(scale * p->Y - origin(1)) << " "; + d << to_svg_x(scale * p->X - origin(0)) << " "; + d << to_svg_y(scale * p->Y - origin(1)) << " "; } if (closed) d << "z"; return d.str(); @@ -313,8 +284,8 @@ void SVG::draw_text(const Point &pt, const char *text, const char *color) { fprintf(this->f, "%s", - COORD(pt(0)-origin(0)), - COORD(pt(1)-origin(1)), + to_svg_x(pt(0)-origin(0)), + to_svg_y(pt(1)-origin(1)), color, text); } @@ -322,18 +293,17 @@ void SVG::draw_legend(const Point &pt, const char *text, const char *color) { fprintf(this->f, "", - COORD(pt(0)-origin(0)), - COORD(pt(1)-origin(1)), + to_svg_x(pt(0)-origin(0)), + to_svg_y(pt(1)-origin(1)), color); fprintf(this->f, "%s", - COORD(pt(0)-origin(0)) + 20.f, - COORD(pt(1)-origin(1)), + to_svg_x(pt(0)-origin(0)) + 20.f, + to_svg_y(pt(1)-origin(1)), "black", text); } -void -SVG::Close() +void SVG::Close() { fprintf(this->f, "\n"); fclose(this->f); diff --git a/src/libslic3r/SVG.hpp b/src/libslic3r/SVG.hpp index c1b387554c..1ebd8d918e 100644 --- a/src/libslic3r/SVG.hpp +++ b/src/libslic3r/SVG.hpp @@ -16,27 +16,28 @@ public: bool arrows; std::string fill, stroke; Point origin; - bool flipY; + float height; + bool flipY; SVG(const char* afilename) : arrows(false), fill("grey"), stroke("black"), filename(afilename), flipY(false) { open(filename); } - SVG(const char* afilename, const BoundingBox &bbox, const coord_t bbox_offset = scale_(1.), bool aflipY = false) : - arrows(false), fill("grey"), stroke("black"), filename(afilename), origin(bbox.min - Point(bbox_offset, bbox_offset)), flipY(aflipY) - { open(filename, bbox, bbox_offset, aflipY); } + SVG(const char* afilename, const BoundingBox &bbox, const coord_t bbox_offset = scale_(1.), bool flipY = true) : + arrows(false), fill("grey"), stroke("black"), filename(afilename), origin(bbox.min - Point(bbox_offset, bbox_offset)), flipY(flipY) + { open(filename, bbox, bbox_offset, flipY); } SVG(const std::string &filename) : arrows(false), fill("grey"), stroke("black"), filename(filename), flipY(false) { open(filename); } - SVG(const std::string &filename, const BoundingBox &bbox, const coord_t bbox_offset = scale_(1.), bool aflipY = false) : - arrows(false), fill("grey"), stroke("black"), filename(filename), origin(bbox.min - Point(bbox_offset, bbox_offset)), flipY(aflipY) - { open(filename, bbox, bbox_offset, aflipY); } + SVG(const std::string &filename, const BoundingBox &bbox, const coord_t bbox_offset = scale_(1.), bool flipY = true) : + arrows(false), fill("grey"), stroke("black"), filename(filename), origin(bbox.min - Point(bbox_offset, bbox_offset)), flipY(flipY) + { open(filename, bbox, bbox_offset, flipY); } ~SVG() { if (f != NULL) Close(); } bool open(const char* filename); - bool open(const char* filename, const BoundingBox &bbox, const coord_t bbox_offset = scale_(1.), bool flipY = false); + bool open(const char* filename, const BoundingBox &bbox, const coord_t bbox_offset = scale_(1.), bool flipY = true); bool open(const std::string &filename) { return open(filename.c_str()); } - bool open(const std::string &filename, const BoundingBox &bbox, const coord_t bbox_offset = scale_(1.), bool flipY = false) + bool open(const std::string &filename, const BoundingBox &bbox, const coord_t bbox_offset = scale_(1.), bool flipY = true) { return open(filename.c_str(), bbox, bbox_offset, flipY); } void draw(const Line &line, std::string stroke = "black", coordf_t stroke_width = 0); @@ -127,6 +128,11 @@ public: }; static void export_expolygons(const char *path, const std::vector> &expolygons_with_attributes); + +private: + static float to_svg_coord(float x) throw() { return unscale(x) * 10.f; } + static float to_svg_x(float x) throw() { return to_svg_coord(x); } + float to_svg_y(float x) const throw() { return flipY ? this->height - to_svg_coord(x) : to_svg_coord(x); } }; } diff --git a/src/libslic3r/SupportMaterial.cpp b/src/libslic3r/SupportMaterial.cpp index 1669f60d21..a27b857349 100644 --- a/src/libslic3r/SupportMaterial.cpp +++ b/src/libslic3r/SupportMaterial.cpp @@ -2324,7 +2324,6 @@ static inline void fill_expolygons_generate_paths( { FillParams fill_params; fill_params.density = density; - fill_params.complete = true; fill_params.dont_adjust = true; for (const ExPolygon &expoly : expolygons) { Surface surface(stInternal, expoly); @@ -2351,7 +2350,6 @@ static inline void fill_expolygons_generate_paths( { FillParams fill_params; fill_params.density = density; - fill_params.complete = true; fill_params.dont_adjust = true; for (ExPolygon &expoly : expolygons) { Surface surface(stInternal, std::move(expoly)); diff --git a/src/libslic3r/Technologies.hpp b/src/libslic3r/Technologies.hpp index b45440605b..66258fe62e 100644 --- a/src/libslic3r/Technologies.hpp +++ b/src/libslic3r/Technologies.hpp @@ -57,4 +57,21 @@ #define ENABLE_GCODE_VIEWER_DATA_CHECKING (0 && ENABLE_GCODE_VIEWER) +//=================== +// 2.3.0.alpha3 techs +//=================== +#define ENABLE_2_3_0_ALPHA3 1 + +#define ENABLE_CTRL_M_ON_WINDOWS (0 && ENABLE_2_3_0_ALPHA3) + + +//=================== +// 2.3.0.alpha4 techs +//=================== +#define ENABLE_2_3_0_ALPHA4 1 + +#define ENABLE_FIXED_SCREEN_SIZE_POINT_MARKERS (1 && ENABLE_GCODE_VIEWER && ENABLE_2_3_0_ALPHA4) +#define ENABLE_SHOW_OPTION_POINT_LAYERS (1 && ENABLE_GCODE_VIEWER && ENABLE_2_3_0_ALPHA4) + + #endif // _prusaslicer_technologies_h_ diff --git a/src/libslic3r/Thread.cpp b/src/libslic3r/Thread.cpp index a78820fe49..4e915f0c99 100644 --- a/src/libslic3r/Thread.cpp +++ b/src/libslic3r/Thread.cpp @@ -1,6 +1,5 @@ #ifdef _WIN32 #include - #include #include #else // any posix system @@ -13,81 +12,113 @@ #include #include -#define SLIC3R_THREAD_NAME_WIN32_MODERN #include "Thread.hpp" namespace Slic3r { #ifdef _WIN32 -#ifdef SLIC3R_THREAD_NAME_WIN32_MODERN +// The new API is better than the old SEH style thread naming since the names also show up in crash dumpsand ETW traces. +// Because the new API is only available on newer Windows 10, look it up dynamically. - static void WindowsSetThreadName(HANDLE hThread, const char *thread_name) - { - size_t len = strlen(thread_name); - if (len < 1024) { - // Allocate the temp string on stack. - wchar_t buf[1024]; - ::SetThreadDescription(hThread, boost::nowide::widen(buf, 1024, thread_name)); - } else { - // Allocate dynamically. - ::SetThreadDescription(hThread, boost::nowide::widen(thread_name).c_str()); +typedef HRESULT(__stdcall* SetThreadDescriptionType)(HANDLE, PCWSTR); +typedef HRESULT(__stdcall* GetThreadDescriptionType)(HANDLE, PWSTR*); + +static bool s_SetGetThreadDescriptionInitialized = false; +static HMODULE s_hKernel32 = nullptr; +static SetThreadDescriptionType s_fnSetThreadDescription = nullptr; +static GetThreadDescriptionType s_fnGetThreadDescription = nullptr; + +static bool WindowsGetSetThreadNameAPIInitialize() +{ + if (! s_SetGetThreadDescriptionInitialized) { + // Not thread safe! It is therefore a good idea to name the main thread before spawning worker threads + // to initialize + s_hKernel32 = LoadLibraryW(L"Kernel32.dll"); + if (s_hKernel32) { + s_fnSetThreadDescription = (SetThreadDescriptionType)::GetProcAddress(s_hKernel32, "SetThreadDescription"); + s_fnGetThreadDescription = (GetThreadDescriptionType)::GetProcAddress(s_hKernel32, "GetThreadDescription"); } + s_SetGetThreadDescriptionInitialized = true; } + return s_fnSetThreadDescription && s_fnGetThreadDescription; +} -#else // SLIC3R_THREAD_NAME_WIN32_MODERN - // use the old way by throwing an exception +#ifndef NDEBUG + // Use the old way by throwing an exception, so at least in Debug mode the thread names are shown by the debugger. + static constexpr DWORD MSVC_SEH_EXCEPTION_NAME_THREAD = 0x406D1388; - const DWORD MS_VC_EXCEPTION=0x406D1388; - - #pragma pack(push,8) +#pragma pack(push,8) typedef struct tagTHREADNAME_INFO { - DWORD dwType; // Must be 0x1000. - LPCSTR szName; // Pointer to name (in user addr space). - DWORD dwThreadID; // Thread ID (-1=caller thread). - DWORD dwFlags; // Reserved for future use, must be zero. + DWORD dwType; // Must be 0x1000. + LPCSTR szName; // Pointer to name (in user addr space). + DWORD dwThreadID; // Thread ID (-1=caller thread). + DWORD dwFlags; // Reserved for future use, must be zero. } THREADNAME_INFO; - #pragma pack(pop) - static void WindowsSetThreadName(HANDLE hThread, const char *thread_name) - { - THREADNAME_INFO info; - info.dwType = 0x1000; - info.szName = threadName; - info.dwThreadID = ::GetThreadId(hThread); - info.dwFlags = 0; +#pragma pack(pop) - __try - { - RaiseException(MS_VC_EXCEPTION, 0, sizeof(info)/sizeof(ULONG_PTR), (ULONG_PTR*)&info); - } - __except(EXCEPTION_EXECUTE_HANDLER) - { - } + static void WindowsSetThreadNameSEH(HANDLE hThread, const char* thread_name) + { + THREADNAME_INFO info; + info.dwType = 0x1000; + info.szName = thread_name; + info.dwThreadID = ::GetThreadId(hThread); + info.dwFlags = 0; + __try { + RaiseException(MSVC_SEH_EXCEPTION_NAME_THREAD, 0, sizeof(info) / sizeof(ULONG_PTR), (ULONG_PTR*)&info); + } __except (EXCEPTION_EXECUTE_HANDLER) { + } + } +#endif // NDEBUG + +static bool WindowsSetThreadName(HANDLE hThread, const char *thread_name) +{ + if (! WindowsGetSetThreadNameAPIInitialize()) { +#ifdef NDEBUG + return false; +#else // NDEBUG + // Running on Windows 7 or old Windows 7 in debug mode, + // inform the debugger about the thread name by throwing an SEH. + WindowsSetThreadNameSEH(hThread, thread_name); + return true; +#endif // NDEBUG } -#endif // SLIC3R_THREAD_NAME_WIN32_MODERN - -// posix -void set_thread_name(std::thread &thread, const char *thread_name) -{ - WindowsSetThreadName(static_cast(thread.native_handle()), thread_name); + size_t len = strlen(thread_name); + if (len < 1024) { + // Allocate the temp string on stack. + wchar_t buf[1024]; + s_fnSetThreadDescription(hThread, boost::nowide::widen(buf, 1024, thread_name)); + } else { + // Allocate dynamically. + s_fnSetThreadDescription(hThread, boost::nowide::widen(thread_name).c_str()); + } + return true; } -void set_thread_name(boost::thread &thread, const char *thread_name) +bool set_thread_name(std::thread &thread, const char *thread_name) { - WindowsSetThreadName(static_cast(thread.native_handle()), thread_name); + return WindowsSetThreadName(static_cast(thread.native_handle()), thread_name); } -void set_current_thread_name(const char *thread_name) +bool set_thread_name(boost::thread &thread, const char *thread_name) { - WindowsSetThreadName(::GetCurrentThread(), thread_name); + return WindowsSetThreadName(static_cast(thread.native_handle()), thread_name); } -std::string get_current_thread_name() +bool set_current_thread_name(const char *thread_name) { + return WindowsSetThreadName(::GetCurrentThread(), thread_name); +} + +std::optional get_current_thread_name() +{ + if (! WindowsGetSetThreadNameAPIInitialize()) + return std::nullopt; + wchar_t *ptr = nullptr; - ::GetThreadDescription(::GetCurrentThread(), &ptr); + s_fnGetThreadDescription(::GetCurrentThread(), &ptr); return (ptr == nullptr) ? std::string() : boost::nowide::narrow(ptr); } @@ -96,52 +127,56 @@ std::string get_current_thread_name() #ifdef __APPLE__ // Appe screwed the Posix norm. -void set_thread_name(std::thread &thread, const char *thread_name) +bool set_thread_name(std::thread &thread, const char *thread_name) { // not supported // pthread_setname_np(thread.native_handle(), thread_name); - throw CriticalException("Not supported"); + return false; } -void set_thread_name(boost::thread &thread, const char *thread_name) +bool set_thread_name(boost::thread &thread, const char *thread_name) { // not supported // pthread_setname_np(thread.native_handle(), thread_name); - throw CriticalException("Not supported"); + return false; } -void set_current_thread_name(const char *thread_name) +bool set_current_thread_name(const char *thread_name) { pthread_setname_np(thread_name); + return true; } -std::string get_current_thread_name() +std::optional get_current_thread_name() { // not supported // char buf[16]; // return std::string(thread_getname_np(buf, 16) == 0 ? buf : ""); - throw CriticalException("Not supported"); + return std::nullopt; } #else // posix -void set_thread_name(std::thread &thread, const char *thread_name) +bool set_thread_name(std::thread &thread, const char *thread_name) { pthread_setname_np(thread.native_handle(), thread_name); + return true; } -void set_thread_name(boost::thread &thread, const char *thread_name) +bool set_thread_name(boost::thread &thread, const char *thread_name) { pthread_setname_np(thread.native_handle(), thread_name); + return true; } -void set_current_thread_name(const char *thread_name) +bool set_current_thread_name(const char *thread_name) { pthread_setname_np(pthread_self(), thread_name); + return true; } -std::string get_current_thread_name() +std::optional get_current_thread_name() { char buf[16]; return std::string(pthread_getname_np(pthread_self(), buf, 16) == 0 ? buf : ""); @@ -168,7 +203,7 @@ void name_tbb_thread_pool_threads() #endif if (nthreads != nthreads_hw) - new tbb::task_scheduler_init(nthreads); + new tbb::task_scheduler_init(int(nthreads)); std::atomic nthreads_running(0); std::condition_variable cv; diff --git a/src/libslic3r/Thread.hpp b/src/libslic3r/Thread.hpp index e1052180d3..a861237962 100644 --- a/src/libslic3r/Thread.hpp +++ b/src/libslic3r/Thread.hpp @@ -9,17 +9,27 @@ namespace Slic3r { // Set / get thread name. +// Returns false if the API is not supported. +// +// It is a good idea to name the main thread before spawning children threads, because dynamic linking is used on Windows 10 +// to initialize Get/SetThreadDescription functions, which is not thread safe. +// // pthread_setname_np supports maximum 15 character thread names! (16th character is the null terminator) +// // Methods taking the thread as an argument are not supported by OSX. -void set_thread_name(std::thread &thread, const char *thread_name); -inline void set_thread_name(std::thread &thread, const std::string &thread_name) { set_thread_name(thread, thread_name.c_str()); } -void set_thread_name(boost::thread &thread, const char *thread_name); -inline void set_thread_name(boost::thread &thread, const std::string &thread_name) { set_thread_name(thread, thread_name.c_str()); } -void set_current_thread_name(const char *thread_name); -inline void set_current_thread_name(const std::string &thread_name) { set_current_thread_name(thread_name.c_str()); } +// Naming threads is only supported on newer Windows 10. +bool set_thread_name(std::thread &thread, const char *thread_name); +inline bool set_thread_name(std::thread &thread, const std::string &thread_name) { return set_thread_name(thread, thread_name.c_str()); } +bool set_thread_name(boost::thread &thread, const char *thread_name); +inline bool set_thread_name(boost::thread &thread, const std::string &thread_name) { return set_thread_name(thread, thread_name.c_str()); } +bool set_current_thread_name(const char *thread_name); +inline bool set_current_thread_name(const std::string &thread_name) { return set_current_thread_name(thread_name.c_str()); } + +// Returns nullopt if not supported. // Not supported by OSX. -std::string get_current_thread_name(); +// Naming threads is only supported on newer Windows 10. +std::optional get_current_thread_name(); // To be called somewhere before the TBB threads are spinned for the first time, to // give them names recognizible in the debugger. diff --git a/src/libslic3r/Utils.hpp b/src/libslic3r/Utils.hpp index 13be6d9ecb..28976064be 100644 --- a/src/libslic3r/Utils.hpp +++ b/src/libslic3r/Utils.hpp @@ -110,30 +110,13 @@ std::string string_printf(const char *format, ...); // to be placed at the top of Slic3r generated files. std::string header_slic3r_generated(); -#if ENABLE_GCODE_VIEWER // Standard "generated by PrusaGCodeViewer version xxx timestamp xxx" header string, // to be placed at the top of Slic3r generated files. std::string header_gcodeviewer_generated(); -#endif // ENABLE_GCODE_VIEWER // getpid platform wrapper extern unsigned get_current_pid(); -#if !ENABLE_GCODE_VIEWER -template -Real round_nearest(Real value, unsigned int decimals) -{ - Real res = (Real)0; - if (decimals == 0) - res = ::round(value); - else { - Real power = ::pow((Real)10, (int)decimals); - res = ::round(value * power + (Real)0.5) / power; - } - return res; -} -#endif // !ENABLE_GCODE_VIEWER - // Compute the next highest power of 2 of 32-bit v // http://graphics.stanford.edu/~seander/bithacks.html inline uint16_t next_highest_power_of_2(uint16_t v) diff --git a/src/libslic3r/Zipper.cpp b/src/libslic3r/Zipper.cpp index 7a95829cd0..cebafa6333 100644 --- a/src/libslic3r/Zipper.cpp +++ b/src/libslic3r/Zipper.cpp @@ -25,12 +25,12 @@ public: std::string formatted_errorstr() const { return L("Error with zip archive") + " " + m_zipname + ": " + - get_errorstr() + "!"; + get_errorstr(); } SLIC3R_NORETURN void blow_up() const { - throw Slic3r::RuntimeError(formatted_errorstr()); + throw Slic3r::ExportError(formatted_errorstr()); } bool is_alive() diff --git a/src/libslic3r/libslic3r.h b/src/libslic3r/libslic3r.h index a404d230dd..4371cbeee5 100644 --- a/src/libslic3r/libslic3r.h +++ b/src/libslic3r/libslic3r.h @@ -103,12 +103,6 @@ enum Axis { NUM_AXES_WITH_UNKNOWN, }; -template -inline void append_to(std::vector &dst, const std::vector &src) -{ - dst.insert(dst.end(), src.begin(), src.end()); -} - template inline void append(std::vector& dest, const std::vector& src) { @@ -123,8 +117,34 @@ inline void append(std::vector& dest, std::vector&& src) { if (dest.empty()) dest = std::move(src); - else + else { + dest.reserve(dest.size() + src.size()); std::move(std::begin(src), std::end(src), std::back_inserter(dest)); + } + src.clear(); + src.shrink_to_fit(); +} + +// Append the source in reverse. +template +inline void append_reversed(std::vector& dest, const std::vector& src) +{ + if (dest.empty()) + dest = src; + else + dest.insert(dest.end(), src.rbegin(), src.rend()); +} + +// Append the source in reverse. +template +inline void append_reversed(std::vector& dest, std::vector&& src) +{ + if (dest.empty()) + dest = std::move(src); + else { + dest.reserve(dest.size() + src.size()); + std::move(std::rbegin(src), std::rend(src), std::back_inserter(dest)); + } src.clear(); src.shrink_to_fit(); } diff --git a/src/libslic3r/utils.cpp b/src/libslic3r/utils.cpp index 886dcf46a9..d5555f27a0 100644 --- a/src/libslic3r/utils.cpp +++ b/src/libslic3r/utils.cpp @@ -429,24 +429,20 @@ CopyFileResult copy_file_inner(const std::string& from, const std::string& to, s // the copy_file() function will fail appropriately and we don't want the permission() // calls to cause needless failures on permissionless filesystems (ie. FATs on SD cards etc.) // or when the target file doesn't exist. - - //This error code is ignored boost::system::error_code ec; - boost::filesystem::permissions(target, perms, ec); - //if (ec) - // BOOST_LOG_TRIVIAL(error) << "Copy file permisions before copy error message: " << ec.message(); - // This error code is passed up + if (ec) + BOOST_LOG_TRIVIAL(error) << "boost::filesystem::permisions before copy error message (this could be irrelevant message based on file system): " << ec.message(); ec.clear(); boost::filesystem::copy_file(source, target, boost::filesystem::copy_option::overwrite_if_exists, ec); if (ec) { error_message = ec.message(); return FAIL_COPY_FILE; } - //ec.clear(); + ec.clear(); boost::filesystem::permissions(target, perms, ec); - //if (ec) - // BOOST_LOG_TRIVIAL(error) << "Copy file permisions after copy error message: " << ec.message(); + if (ec) + BOOST_LOG_TRIVIAL(error) << "boost::filesystem::permisions after copy error message (this could be irrelevant message based on file system): " << ec.message(); return SUCCESS; } @@ -618,12 +614,10 @@ std::string header_slic3r_generated() return std::string("generated by " SLIC3R_APP_NAME " " SLIC3R_VERSION " on " ) + Utils::utc_timestamp(); } -#if ENABLE_GCODE_VIEWER std::string header_gcodeviewer_generated() { return std::string("generated by " GCODEVIEWER_APP_NAME " " SLIC3R_VERSION " on ") + Utils::utc_timestamp(); } -#endif // ENABLE_GCODE_VIEWER unsigned get_current_pid() { diff --git a/src/platform/unix/PrusaGcodeviewer.desktop b/src/platform/unix/PrusaGcodeviewer.desktop new file mode 100644 index 0000000000..b6c419b0f3 --- /dev/null +++ b/src/platform/unix/PrusaGcodeviewer.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Name=Prusa GCode viewer +Exec=prusa-slicer --gcodeviewer %F +Icon=PrusaSlicer # TODO: change when the new icon is ready +Terminal=false +Type=Application +MimeType=text/x.gcode; +Categories=Graphics;3DGraphics; +Keywords=3D;Printing;Slicer; \ No newline at end of file diff --git a/src/platform/unix/PrusaSlicer.desktop b/src/platform/unix/PrusaSlicer.desktop index 464873f458..dae507b54a 100644 --- a/src/platform/unix/PrusaSlicer.desktop +++ b/src/platform/unix/PrusaSlicer.desktop @@ -1,9 +1,12 @@ [Desktop Entry] Name=PrusaSlicer -Exec=prusa-slicer %F +GenericName=3D Printing Software Icon=PrusaSlicer +Exec=prusa-slicer %F Terminal=false Type=Application MimeType=model/stl;application/vnd.ms-3mfdocument;application/prs.wavefront-obj;application/x-amf; -Categories=Graphics;3DGraphics; -Keywords=3D;Printing;Slicer; \ No newline at end of file +Categories=Graphics;3DGraphics;Engineering; +Keywords=3D;Printing;Slicer;slice;3D;printer;convert;gcode;stl;obj;amf;SLA +StartupNotify=false +StartupWMClass=prusa-slicer \ No newline at end of file diff --git a/src/slic3r/CMakeLists.txt b/src/slic3r/CMakeLists.txt index 3cb8dbfd99..699135d271 100644 --- a/src/slic3r/CMakeLists.txt +++ b/src/slic3r/CMakeLists.txt @@ -111,6 +111,8 @@ set(SLIC3R_GUI_SOURCES GUI/Field.hpp GUI/OptionsGroup.cpp GUI/OptionsGroup.hpp + GUI/OG_CustomCtrl.cpp + GUI/OG_CustomCtrl.hpp GUI/BedShapeDialog.cpp GUI/BedShapeDialog.hpp GUI/2DBed.cpp @@ -160,6 +162,8 @@ set(SLIC3R_GUI_SOURCES GUI/Jobs/ArrangeJob.cpp GUI/Jobs/RotoptimizeJob.hpp GUI/Jobs/RotoptimizeJob.cpp + GUI/Jobs/FillBedJob.hpp + GUI/Jobs/FillBedJob.cpp GUI/Jobs/SLAImportJob.hpp GUI/Jobs/SLAImportJob.cpp GUI/Jobs/ProgressIndicator.hpp @@ -193,6 +197,8 @@ set(SLIC3R_GUI_SOURCES Utils/FlashAir.hpp Utils/AstroBox.cpp Utils/AstroBox.hpp + Utils/Repetier.cpp + Utils/Repetier.hpp Utils/PrintHost.cpp Utils/PrintHost.hpp Utils/Bonjour.cpp diff --git a/src/slic3r/Config/Snapshot.cpp b/src/slic3r/Config/Snapshot.cpp index 45dc998741..54d1dea577 100644 --- a/src/slic3r/Config/Snapshot.cpp +++ b/src/slic3r/Config/Snapshot.cpp @@ -31,8 +31,11 @@ void Snapshot::clear() this->comment.clear(); this->reason = SNAPSHOT_UNKNOWN; this->print.clear(); + this->sla_print.clear(); this->filaments.clear(); + this->sla_material.clear(); this->printer.clear(); + this->physical_printer.clear(); } void Snapshot::load_ini(const std::string &path) @@ -94,6 +97,8 @@ void Snapshot::load_ini(const std::string &path) for (auto &kvp : section.second) { if (kvp.first == "print") { this->print = kvp.second.data(); + } else if (kvp.first == "sla_print") { + this->sla_print = kvp.second.data(); } else if (boost::starts_with(kvp.first, "filament")) { int idx = 0; if (kvp.first == "filament" || sscanf(kvp.first.c_str(), "filament_%d", &idx) == 1) { @@ -101,8 +106,12 @@ void Snapshot::load_ini(const std::string &path) this->filaments.resize(idx + 1, std::string()); this->filaments[idx] = kvp.second.data(); } + } else if (kvp.first == "sla_material") { + this->sla_material = kvp.second.data(); } else if (kvp.first == "printer") { this->printer = kvp.second.data(); + } else if (kvp.first == "physical_printer") { + this->physical_printer = kvp.second.data(); } } } else if (boost::starts_with(section.first, group_name_vendor) && section.first.size() > group_name_vendor.size()) { @@ -172,10 +181,13 @@ void Snapshot::save_ini(const std::string &path) // Export the active presets at the time of the snapshot. c << std::endl << "[presets]" << std::endl; c << "print = " << this->print << std::endl; + c << "sla_print = " << this->sla_print << std::endl; c << "filament = " << this->filaments.front() << std::endl; for (size_t i = 1; i < this->filaments.size(); ++ i) c << "filament_" << std::to_string(i) << " = " << this->filaments[i] << std::endl; + c << "sla_material = " << this->sla_material << std::endl; c << "printer = " << this->printer << std::endl; + c << "physical_printer = " << this->physical_printer << std::endl; // Export the vendor configs. for (const VendorConfig &vc : this->vendor_configs) { @@ -199,14 +211,17 @@ void Snapshot::export_selections(AppConfig &config) const { assert(filaments.size() >= 1); config.clear_section("presets"); - config.set("presets", "print", print); - config.set("presets", "filament", filaments.front()); + config.set("presets", "print", print); + config.set("presets", "sla_print", sla_print); + config.set("presets", "filament", filaments.front()); for (unsigned i = 1; i < filaments.size(); ++i) { char name[64]; sprintf(name, "filament_%u", i); config.set("presets", name, filaments[i]); } - config.set("presets", "printer", printer); + config.set("presets", "sla_material", sla_material); + config.set("presets", "printer", printer); + config.set("presets", "physical_printer", physical_printer); } void Snapshot::export_vendor_configs(AppConfig &config) const @@ -217,8 +232,10 @@ void Snapshot::export_vendor_configs(AppConfig &config) const config.set_vendors(std::move(vendors)); } -// Perform a deep compare of the active print / filament / printer / vendor directories. -// Return true if the content of the current print / filament / printer / vendor directories +static constexpr auto snapshot_subdirs = { "print", "sla_print", "filament", "sla_material", "printer", "physical_printer", "vendor" }; + +// Perform a deep compare of the active print / sla_print / filament / sla_material / printer / physical_printer / vendor directories. +// Return true if the content of the current print / sla_print / filament / sla_material / printer / physical_printer / vendor directories // matches the state stored in this snapshot. bool Snapshot::equal_to_active(const AppConfig &app_config) const { @@ -243,7 +260,7 @@ bool Snapshot::equal_to_active(const AppConfig &app_config) const // 2) Check, whether this snapshot references the same set of ini files as the current state. boost::filesystem::path data_dir = boost::filesystem::path(Slic3r::data_dir()); boost::filesystem::path snapshot_dir = boost::filesystem::path(Slic3r::data_dir()) / SLIC3R_SNAPSHOTS_DIR / this->id; - for (const char *subdir : { "print", "filament", "printer", "vendor" }) { + for (const char *subdir : snapshot_subdirs) { boost::filesystem::path path1 = data_dir / subdir; boost::filesystem::path path2 = snapshot_dir / subdir; std::vector files1, files2; @@ -369,9 +386,12 @@ const Snapshot& SnapshotDB::take_snapshot(const AppConfig &app_config, Snapshot: snapshot.comment = comment; snapshot.reason = reason; // Active presets at the time of the snapshot. - snapshot.print = app_config.get("presets", "print"); + snapshot.print = app_config.get("presets", "print"); + snapshot.sla_print = app_config.get("presets", "sla_print"); snapshot.filaments.emplace_back(app_config.get("presets", "filament")); - snapshot.printer = app_config.get("presets", "printer"); + snapshot.sla_material = app_config.get("presets", "sla_material"); + snapshot.printer = app_config.get("presets", "printer"); + snapshot.physical_printer = app_config.get("presets", "physical_printer"); for (unsigned i = 1; i < 1000; ++ i) { char name[64]; sprintf(name, "filament_%u", i); @@ -414,7 +434,7 @@ const Snapshot& SnapshotDB::take_snapshot(const AppConfig &app_config, Snapshot: boost::filesystem::create_directory(snapshot_dir); // Backup the presets. - for (const char *subdir : { "print", "filament", "printer", "vendor" }) + for (const char *subdir : snapshot_subdirs) copy_config_dir_single_level(data_dir / subdir, snapshot_dir / subdir); snapshot.save_ini((snapshot_dir / "snapshot.ini").string()); assert(m_snapshots.empty() || m_snapshots.back().time_captured <= snapshot.time_captured); @@ -438,11 +458,11 @@ void SnapshotDB::restore_snapshot(const Snapshot &snapshot, AppConfig &app_confi boost::filesystem::path snapshot_db_dir = SnapshotDB::create_db_dir(); boost::filesystem::path snapshot_dir = snapshot_db_dir / snapshot.id; // Remove existing ini files and restore the ini files from the snapshot. - for (const char *subdir : { "print", "filament", "printer", "vendor" }) { + for (const char *subdir : snapshot_subdirs) { delete_existing_ini_files(data_dir / subdir); copy_config_dir_single_level(snapshot_dir / subdir, data_dir / subdir); } - // Update AppConfig with the selections of the print / filament / printer profiles + // Update AppConfig with the selections of the print / sla_print / filament / sla_material / printer profiles // and about the installed printer types and variants. snapshot.export_selections(app_config); snapshot.export_vendor_configs(app_config); diff --git a/src/slic3r/Config/Snapshot.hpp b/src/slic3r/Config/Snapshot.hpp index c6bd5c6e87..48add8a1ad 100644 --- a/src/slic3r/Config/Snapshot.hpp +++ b/src/slic3r/Config/Snapshot.hpp @@ -23,8 +23,11 @@ namespace Config { // Slic3r.ini // vendor/ // print/ +// sla_print/ // filament/ +// sla_material // printer/ +// physical_printer/ class Snapshot { public: @@ -42,12 +45,12 @@ public: void load_ini(const std::string &path); void save_ini(const std::string &path); - // Export the print / filament / printer selections to be activated into the AppConfig. + // Export the print / sla_print / filament / sla_material / printer selections to be activated into the AppConfig. void export_selections(AppConfig &config) const; void export_vendor_configs(AppConfig &config) const; - // Perform a deep compare of the active print / filament / printer / vendor directories. - // Return true if the content of the current print / filament / printer / vendor directories + // Perform a deep compare of the active print / sla_print / filament / sla_material / printer / physical_printer / vendor directories. + // Return true if the content of the current print / sla_print / filament / sla_material / printer / physical_printer / vendor directories // matches the state stored in this snapshot. bool equal_to_active(const AppConfig &app_config) const; @@ -65,8 +68,11 @@ public: // Active presets at the time of the snapshot. std::string print; + std::string sla_print; std::vector filaments; + std::string sla_material; std::string printer; + std::string physical_printer; // Annotation of the vendor configuration stored in the snapshot. // This information is displayed to the user and used to decide compatibility @@ -97,7 +103,7 @@ public: size_t load_db(); void update_slic3r_versions(std::vector &index_db); - // Create a snapshot directory, copy the vendor config bundles, user print/filament/printer profiles, + // Create a snapshot directory, copy the vendor config bundles, user print / sla_print / filament / sla_material / printer / physical_printer profiles, // create an index. const Snapshot& take_snapshot(const AppConfig &app_config, Snapshot::Reason reason, const std::string &comment = ""); const Snapshot& restore_snapshot(const std::string &id, AppConfig &app_config); diff --git a/src/slic3r/GUI/3DBed.cpp b/src/slic3r/GUI/3DBed.cpp index 8a29d08bd8..4277aeb364 100644 --- a/src/slic3r/GUI/3DBed.cpp +++ b/src/slic3r/GUI/3DBed.cpp @@ -5,24 +5,18 @@ #include "libslic3r/Polygon.hpp" #include "libslic3r/ClipperUtils.hpp" #include "libslic3r/BoundingBox.hpp" -#if ENABLE_GCODE_VIEWER #include "libslic3r/Geometry.hpp" -#endif // ENABLE_GCODE_VIEWER #include "GUI_App.hpp" #include "libslic3r/PresetBundle.hpp" #include "GLCanvas3D.hpp" -#if ENABLE_GCODE_VIEWER #include "3DScene.hpp" -#endif // ENABLE_GCODE_VIEWER #include #include #include -#if ENABLE_GCODE_VIEWER #include -#endif // ENABLE_GCODE_VIEWER static const float GROUND_Z = -0.02f; @@ -121,43 +115,19 @@ const float* GeometryBuffer::get_vertices_data() const return (m_vertices.size() > 0) ? (const float*)m_vertices.data() : nullptr; } -#if ENABLE_GCODE_VIEWER const float Bed3D::Axes::DefaultStemRadius = 0.5f; const float Bed3D::Axes::DefaultStemLength = 25.0f; const float Bed3D::Axes::DefaultTipRadius = 2.5f * Bed3D::Axes::DefaultStemRadius; const float Bed3D::Axes::DefaultTipLength = 5.0f; -#else -const double Bed3D::Axes::Radius = 0.5; -const double Bed3D::Axes::ArrowBaseRadius = 2.5 * Bed3D::Axes::Radius; -const double Bed3D::Axes::ArrowLength = 5.0; -#endif // ENABLE_GCODE_VIEWER -#if ENABLE_GCODE_VIEWER void Bed3D::Axes::set_stem_length(float length) { m_stem_length = length; m_arrow.reset(); } -#else -Bed3D::Axes::Axes() -: origin(Vec3d::Zero()) -, length(25.0 * Vec3d::Ones()) -{ - m_quadric = ::gluNewQuadric(); - if (m_quadric != nullptr) - ::gluQuadricDrawStyle(m_quadric, GLU_FILL); -} - -Bed3D::Axes::~Axes() -{ - if (m_quadric != nullptr) - ::gluDeleteQuadric(m_quadric); -} -#endif // ENABLE_GCODE_VIEWER void Bed3D::Axes::render() const { -#if ENABLE_GCODE_VIEWER auto render_axis = [this](const Transform3f& transform) { glsafe(::glPushMatrix()); glsafe(::glMultMatrixf(transform.data())); @@ -193,56 +163,8 @@ void Bed3D::Axes::render() const shader->stop_using(); glsafe(::glDisable(GL_DEPTH_TEST)); -#else - if (m_quadric == nullptr) - return; - - glsafe(::glEnable(GL_DEPTH_TEST)); - glsafe(::glEnable(GL_LIGHTING)); - - // x axis - glsafe(::glColor3fv(AXES_COLOR[0])); - glsafe(::glPushMatrix()); - glsafe(::glTranslated(origin(0), origin(1), origin(2))); - glsafe(::glRotated(90.0, 0.0, 1.0, 0.0)); - render_axis(length(0)); - glsafe(::glPopMatrix()); - - // y axis - glsafe(::glColor3fv(AXES_COLOR[1])); - glsafe(::glPushMatrix()); - glsafe(::glTranslated(origin(0), origin(1), origin(2))); - glsafe(::glRotated(-90.0, 1.0, 0.0, 0.0)); - render_axis(length(1)); - glsafe(::glPopMatrix()); - - // z axis - glsafe(::glColor3fv(AXES_COLOR[2])); - glsafe(::glPushMatrix()); - glsafe(::glTranslated(origin(0), origin(1), origin(2))); - render_axis(length(2)); - glsafe(::glPopMatrix()); - - glsafe(::glDisable(GL_LIGHTING)); - glsafe(::glDisable(GL_DEPTH_TEST)); -#endif // !ENABLE_GCODE_VIEWER } -#if !ENABLE_GCODE_VIEWER -void Bed3D::Axes::render_axis(double length) const -{ - ::gluQuadricOrientation(m_quadric, GLU_OUTSIDE); - ::gluCylinder(m_quadric, Radius, Radius, length, 32, 1); - ::gluQuadricOrientation(m_quadric, GLU_INSIDE); - ::gluDisk(m_quadric, 0.0, Radius, 32, 1); - glsafe(::glTranslated(0.0, 0.0, length)); - ::gluQuadricOrientation(m_quadric, GLU_OUTSIDE); - ::gluCylinder(m_quadric, ArrowBaseRadius, 0.0, ArrowLength, 32, 1); - ::gluQuadricOrientation(m_quadric, GLU_INSIDE); - ::gluDisk(m_quadric, 0.0, ArrowBaseRadius, 32, 1); -} -#endif // !ENABLE_GCODE_VIEWER - Bed3D::Bed3D() : m_type(Custom) , m_vbo_id(0) @@ -308,13 +230,8 @@ bool Bed3D::set_shape(const Pointfs& shape, const std::string& custom_texture, c m_model.reset(); // Set the origin and size for rendering the coordinate system axes. -#if ENABLE_GCODE_VIEWER m_axes.set_origin({ 0.0, 0.0, static_cast(GROUND_Z) }); m_axes.set_stem_length(0.1f * static_cast(m_bounding_box.max_size())); -#else - m_axes.origin = Vec3d(0.0, 0.0, (double)GROUND_Z); - m_axes.length = 0.1 * m_bounding_box.max_size() * Vec3d::Ones(); -#endif // ENABLE_GCODE_VIEWER // Let the calee to update the UI. return true; @@ -360,7 +277,6 @@ void Bed3D::calc_bounding_boxes() const m_extended_bounding_box = m_bounding_box; // extend to contain axes -#if ENABLE_GCODE_VIEWER m_extended_bounding_box.merge(m_axes.get_origin() + m_axes.get_total_length() * Vec3d::Ones()); m_extended_bounding_box.merge(m_extended_bounding_box.min + Vec3d(-Axes::DefaultTipRadius, -Axes::DefaultTipRadius, m_extended_bounding_box.max(2))); @@ -370,12 +286,6 @@ void Bed3D::calc_bounding_boxes() const model_bb.translate(m_model_offset); m_extended_bounding_box.merge(model_bb); } -#else - m_extended_bounding_box.merge(m_axes.length + Axes::ArrowLength * Vec3d::Ones()); - // extend to contain model, if any - if (!m_model.get_filename().empty()) - m_extended_bounding_box.merge(m_model.get_transformed_bounding_box()); -#endif // ENABLE_GCODE_VIEWER } void Bed3D::calc_triangles(const ExPolygon& poly) @@ -414,25 +324,6 @@ void Bed3D::calc_gridlines(const ExPolygon& poly, const BoundingBox& bed_bbox) printf("Unable to create bed grid lines\n"); } -#if !ENABLE_GCODE_VIEWER -static std::string system_print_bed_model(const Preset &preset) -{ - std::string out; - const VendorProfile::PrinterModel *pm = PresetUtils::system_printer_model(preset); - if (pm != nullptr && ! pm->bed_model.empty()) - out = Slic3r::resources_dir() + "/profiles/" + preset.vendor->id + "/" + pm->bed_model; - return out; -} - -static std::string system_print_bed_texture(const Preset &preset) -{ - std::string out; - const VendorProfile::PrinterModel *pm = PresetUtils::system_printer_model(preset); - if (pm != nullptr && ! pm->bed_texture.empty()) - out = Slic3r::resources_dir() + "/profiles/" + preset.vendor->id + "/" + pm->bed_texture; - return out; -} -#endif // !ENABLE_GCODE_VIEWER std::tuple Bed3D::detect_type(const Pointfs& shape) const { @@ -442,13 +333,8 @@ std::tuple Bed3D::detect_type(const Poin while (curr != nullptr) { if (curr->config.has("bed_shape")) { if (shape == dynamic_cast(curr->config.option("bed_shape"))->values) { -#if ENABLE_GCODE_VIEWER std::string model_filename = PresetUtils::system_printer_bed_model(*curr); std::string texture_filename = PresetUtils::system_printer_bed_texture(*curr); -#else - std::string model_filename = system_print_bed_model(*curr); - std::string texture_filename = system_print_bed_texture(*curr); -#endif // ENABLE_GCODE_VIEWER if (!model_filename.empty() && !texture_filename.empty()) return { System, model_filename, texture_filename }; } @@ -614,11 +500,7 @@ void Bed3D::render_model() const // move the model so that its origin (0.0, 0.0, 0.0) goes into the bed shape center and a bit down to avoid z-fighting with the texture quad Vec3d shift = m_bounding_box.center(); shift(2) = -0.03; -#if ENABLE_GCODE_VIEWER m_model_offset = shift; -#else - m_model.set_offset(shift); -#endif // ENABLE_GCODE_VIEWER // update extended bounding box calc_bounding_boxes(); @@ -628,15 +510,11 @@ void Bed3D::render_model() const GLShaderProgram* shader = wxGetApp().get_shader("gouraud_light"); if (shader != nullptr) { shader->start_using(); -#if ENABLE_GCODE_VIEWER shader->set_uniform("uniform_color", m_model_color); ::glPushMatrix(); ::glTranslated(m_model_offset(0), m_model_offset(1), m_model_offset(2)); -#endif // ENABLE_GCODE_VIEWER m_model.render(); -#if ENABLE_GCODE_VIEWER ::glPopMatrix(); -#endif // ENABLE_GCODE_VIEWER shader->stop_using(); } } @@ -673,11 +551,7 @@ void Bed3D::render_default(bool bottom) const if (!has_model && !bottom) { // draw background glsafe(::glDepthMask(GL_FALSE)); -#if ENABLE_GCODE_VIEWER glsafe(::glColor4fv(m_model_color.data())); -#else - glsafe(::glColor4f(0.35f, 0.35f, 0.35f, 0.4f)); -#endif // ENABLE_GCODE_VIEWER glsafe(::glNormal3d(0.0f, 0.0f, 1.0f)); glsafe(::glVertexPointer(3, GL_FLOAT, m_triangles.get_vertex_data_size(), (GLvoid*)m_triangles.get_vertices_data())); glsafe(::glDrawArrays(GL_TRIANGLES, 0, (GLsizei)triangles_vcount)); diff --git a/src/slic3r/GUI/3DBed.hpp b/src/slic3r/GUI/3DBed.hpp index fbfc3078c1..b5b063e6f9 100644 --- a/src/slic3r/GUI/3DBed.hpp +++ b/src/slic3r/GUI/3DBed.hpp @@ -3,19 +3,10 @@ #include "GLTexture.hpp" #include "3DScene.hpp" -#if ENABLE_GCODE_VIEWER #include "GLModel.hpp" -#endif // ENABLE_GCODE_VIEWER #include -#if ENABLE_GCODE_VIEWER #include -#endif // ENABLE_GCODE_VIEWER - -#if !ENABLE_GCODE_VIEWER -class GLUquadric; -typedef class GLUquadric GLUquadricObj; -#endif // !ENABLE_GCODE_VIEWER namespace Slic3r { namespace GUI { @@ -52,7 +43,6 @@ public: class Bed3D { -#if ENABLE_GCODE_VIEWER class Axes { public: @@ -62,43 +52,16 @@ class Bed3D static const float DefaultTipLength; private: -#else - struct Axes - { - static const double Radius; - static const double ArrowBaseRadius; - static const double ArrowLength; -#endif // ENABLE_GCODE_VIEWER - -#if ENABLE_GCODE_VIEWER Vec3d m_origin{ Vec3d::Zero() }; float m_stem_length{ DefaultStemLength }; mutable GLModel m_arrow; public: -#else - Vec3d origin; - Vec3d length; - GLUquadricObj* m_quadric; -#endif // ENABLE_GCODE_VIEWER - -#if !ENABLE_GCODE_VIEWER - Axes(); - ~Axes(); -#endif // !ENABLE_GCODE_VIEWER - -#if ENABLE_GCODE_VIEWER const Vec3d& get_origin() const { return m_origin; } void set_origin(const Vec3d& origin) { m_origin = origin; } void set_stem_length(float length); float get_total_length() const { return m_stem_length + DefaultTipLength; } -#endif // ENABLE_GCODE_VIEWER void render() const; - -#if !ENABLE_GCODE_VIEWER - private: - void render_axis(double length) const; -#endif // !ENABLE_GCODE_VIEWER }; public: @@ -120,13 +83,9 @@ private: GeometryBuffer m_triangles; GeometryBuffer m_gridlines; mutable GLTexture m_texture; -#if ENABLE_GCODE_VIEWER mutable GLModel m_model; mutable Vec3d m_model_offset{ Vec3d::Zero() }; std::array m_model_color{ 0.235f, 0.235f, 0.235f, 1.0f }; -#else - mutable GLBed m_model; -#endif // ENABLE_GCODE_VIEWER // temporary texture shown until the main texture has still no levels compressed mutable GLTexture m_temp_texture; mutable unsigned int m_vbo_id; diff --git a/src/slic3r/GUI/3DScene.cpp b/src/slic3r/GUI/3DScene.cpp index fc285e3356..e97ba07648 100644 --- a/src/slic3r/GUI/3DScene.cpp +++ b/src/slic3r/GUI/3DScene.cpp @@ -16,15 +16,9 @@ #include "libslic3r/ExtrusionEntity.hpp" #include "libslic3r/ExtrusionEntityCollection.hpp" #include "libslic3r/Geometry.hpp" -#if !ENABLE_GCODE_VIEWER -#include "libslic3r/GCode/PreviewData.hpp" -#endif // !ENABLE_GCODE_VIEWER #include "libslic3r/Print.hpp" #include "libslic3r/SLAPrint.hpp" #include "libslic3r/Slicing.hpp" -#if !ENABLE_GCODE_VIEWER -#include "libslic3r/GCode/Analyzer.hpp" -#endif // !ENABLE_GCODE_VIEWER #include "slic3r/GUI/BitmapCache.hpp" #include "libslic3r/Format/STL.hpp" #include "libslic3r/Utils.hpp" @@ -999,290 +993,6 @@ bool GLVolumeCollection::has_toolpaths_to_export() const return false; } -#if !ENABLE_GCODE_VIEWER -void GLVolumeCollection::export_toolpaths_to_obj(const char* filename) const -{ - if (filename == nullptr) - return; - - if (!has_toolpaths_to_export()) - return; - - // collect color information to generate materials - typedef std::array Color; - std::set colors; - for (const GLVolume* volume : this->volumes) - { - if (!can_export_to_obj(*volume)) - continue; - - Color color; - ::memcpy((void*)color.data(), (const void*)volume->color, 4 * sizeof(float)); - colors.insert(color); - } - - // save materials file - boost::filesystem::path mat_filename(filename); - mat_filename.replace_extension("mtl"); - FILE* fp = boost::nowide::fopen(mat_filename.string().c_str(), "w"); - if (fp == nullptr) { - BOOST_LOG_TRIVIAL(error) << "GLVolumeCollection::export_toolpaths_to_obj: Couldn't open " << mat_filename.string().c_str() << " for writing"; - return; - } - - fprintf(fp, "# G-Code Toolpaths Materials\n"); - fprintf(fp, "# Generated by %s based on Slic3r\n", SLIC3R_BUILD_ID); - - unsigned int colors_count = 1; - for (const Color& color : colors) - { - fprintf(fp, "\nnewmtl material_%d\n", colors_count++); - fprintf(fp, "Ka 1 1 1\n"); - fprintf(fp, "Kd %f %f %f\n", color[0], color[1], color[2]); - fprintf(fp, "Ks 0 0 0\n"); - } - - fclose(fp); - - // save geometry file - fp = boost::nowide::fopen(filename, "w"); - if (fp == nullptr) { - BOOST_LOG_TRIVIAL(error) << "GLVolumeCollection::export_toolpaths_to_obj: Couldn't open " << filename << " for writing"; - return; - } - - fprintf(fp, "# G-Code Toolpaths\n"); - fprintf(fp, "# Generated by %s based on Slic3r\n", SLIC3R_BUILD_ID); - fprintf(fp, "\nmtllib ./%s\n", mat_filename.filename().string().c_str()); - - unsigned int vertices_count = 0; - unsigned int normals_count = 0; - unsigned int volumes_count = 0; - - for (const GLVolume* volume : this->volumes) - { - if (!can_export_to_obj(*volume)) - continue; - - std::vector src_vertices_and_normals_interleaved; - std::vector src_triangle_indices; - std::vector src_quad_indices; - - if (!volume->indexed_vertex_array.vertices_and_normals_interleaved.empty()) - // data are in CPU memory - src_vertices_and_normals_interleaved = volume->indexed_vertex_array.vertices_and_normals_interleaved; - else if ((volume->indexed_vertex_array.vertices_and_normals_interleaved_VBO_id != 0) && (volume->indexed_vertex_array.vertices_and_normals_interleaved_size != 0)) - { - // data are in GPU memory - src_vertices_and_normals_interleaved = std::vector(volume->indexed_vertex_array.vertices_and_normals_interleaved_size, 0.0f); - - glsafe(::glBindBuffer(GL_ARRAY_BUFFER, volume->indexed_vertex_array.vertices_and_normals_interleaved_VBO_id)); - glsafe(::glGetBufferSubData(GL_ARRAY_BUFFER, 0, src_vertices_and_normals_interleaved.size() * sizeof(float), src_vertices_and_normals_interleaved.data())); - glsafe(::glBindBuffer(GL_ARRAY_BUFFER, 0)); - } - else - continue; - - if (!volume->indexed_vertex_array.triangle_indices.empty()) - { - // data are in CPU memory - size_t size = std::min(volume->indexed_vertex_array.triangle_indices.size(), volume->tverts_range.second - volume->tverts_range.first); - if (size != 0) - { - std::vector::const_iterator it_begin = volume->indexed_vertex_array.triangle_indices.begin() + volume->tverts_range.first; - std::vector::const_iterator it_end = volume->indexed_vertex_array.triangle_indices.begin() + volume->tverts_range.first + size; - std::copy(it_begin, it_end, std::back_inserter(src_triangle_indices)); - } - } - else if ((volume->indexed_vertex_array.triangle_indices_VBO_id != 0) && (volume->indexed_vertex_array.triangle_indices_size != 0)) - { - // data are in GPU memory - size_t size = std::min(volume->indexed_vertex_array.triangle_indices_size, volume->tverts_range.second - volume->tverts_range.first); - if (size != 0) - { - src_triangle_indices = std::vector(size, 0); - - glsafe(::glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, volume->indexed_vertex_array.triangle_indices_VBO_id)); - glsafe(::glGetBufferSubData(GL_ELEMENT_ARRAY_BUFFER, volume->tverts_range.first * sizeof(int), size * sizeof(int), src_triangle_indices.data())); - glsafe(::glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0)); - } - } - - if (!volume->indexed_vertex_array.quad_indices.empty()) - { - // data are in CPU memory - size_t size = std::min(volume->indexed_vertex_array.quad_indices.size(), volume->qverts_range.second - volume->qverts_range.first); - if (size != 0) - { - std::vector::const_iterator it_begin = volume->indexed_vertex_array.quad_indices.begin() + volume->qverts_range.first; - std::vector::const_iterator it_end = volume->indexed_vertex_array.quad_indices.begin() + volume->qverts_range.first + size; - std::copy(it_begin, it_end, std::back_inserter(src_quad_indices)); - } - } - else if ((volume->indexed_vertex_array.quad_indices_VBO_id != 0) && (volume->indexed_vertex_array.quad_indices_size != 0)) - { - // data are in GPU memory - size_t size = std::min(volume->indexed_vertex_array.quad_indices_size, volume->qverts_range.second - volume->qverts_range.first); - if (size != 0) - { - src_quad_indices = std::vector(size, 0); - - glsafe(::glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, volume->indexed_vertex_array.quad_indices_VBO_id)); - glsafe(::glGetBufferSubData(GL_ELEMENT_ARRAY_BUFFER, volume->qverts_range.first * sizeof(int), size * sizeof(int), src_quad_indices.data())); - glsafe(::glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0)); - } - } - - if (src_triangle_indices.empty() && src_quad_indices.empty()) - continue; - - ++volumes_count; - - // reduce output size by keeping only used vertices and normals - - struct Vector - { - std::array vector; - - explicit Vector(float* ptr) - { - vector[0] = scale_(*(ptr + 0)); - vector[1] = scale_(*(ptr + 1)); - vector[2] = scale_(*(ptr + 2)); - } - }; - typedef std::vector Vectors; - - auto vector_less = [](const Vector& v1, const Vector& v2)->bool { - return v1.vector < v2.vector; - }; - - auto vector_equal = [](const Vector& v1, const Vector& v2)->bool { - return (v1.vector[0] == v2.vector[0]) && (v1.vector[1] == v2.vector[1]) && (v1.vector[2] == v2.vector[2]); - }; - - // copy used vertices and normals data - Vectors dst_normals; - Vectors dst_vertices; - - unsigned int src_triangle_indices_size = (unsigned int)src_triangle_indices.size(); - for (unsigned int i = 0; i < src_triangle_indices_size; ++i) - { - float* src_ptr = src_vertices_and_normals_interleaved.data() + src_triangle_indices[i] * 6; - dst_normals.emplace_back(src_ptr + 0); - dst_vertices.emplace_back(src_ptr + 3); - } - - unsigned int src_quad_indices_size = (unsigned int)src_quad_indices.size(); - for (unsigned int i = 0; i < src_quad_indices_size; ++i) - { - float* src_ptr = src_vertices_and_normals_interleaved.data() + src_quad_indices[i] * 6; - dst_normals.emplace_back(src_ptr + 0); - dst_vertices.emplace_back(src_ptr + 3); - } - - // sort vertices and normals - std::sort(dst_normals.begin(), dst_normals.end(), vector_less); - std::sort(dst_vertices.begin(), dst_vertices.end(), vector_less); - - // remove duplicated vertices and normals - dst_normals.erase(std::unique(dst_normals.begin(), dst_normals.end(), vector_equal), dst_normals.end()); - dst_vertices.erase(std::unique(dst_vertices.begin(), dst_vertices.end(), vector_equal), dst_vertices.end()); - - // reindex triangles and quads - struct IndicesPair - { - int vertex; - int normal; - IndicesPair(int vertex, int normal) : vertex(vertex), normal(normal) {} - }; - typedef std::vector Indices; - - unsigned int src_vertices_count = (unsigned int)src_vertices_and_normals_interleaved.size() / 6; - std::vector src_dst_vertex_indices_map(src_vertices_count, -1); - std::vector src_dst_normal_indices_map(src_vertices_count, -1); - - for (unsigned int i = 0; i < src_vertices_count; ++i) - { - float* src_ptr = src_vertices_and_normals_interleaved.data() + i * 6; - src_dst_normal_indices_map[i] = std::distance(dst_normals.begin(), std::lower_bound(dst_normals.begin(), dst_normals.end(), Vector(src_ptr + 0), vector_less)); - src_dst_vertex_indices_map[i] = std::distance(dst_vertices.begin(), std::lower_bound(dst_vertices.begin(), dst_vertices.end(), Vector(src_ptr + 3), vector_less)); - } - - Indices dst_triangle_indices; - if (src_triangle_indices_size > 0) - dst_triangle_indices.reserve(src_triangle_indices_size); - - for (unsigned int i = 0; i < src_triangle_indices_size; ++i) - { - int id = src_triangle_indices[i]; - dst_triangle_indices.emplace_back(src_dst_vertex_indices_map[id], src_dst_normal_indices_map[id]); - } - - Indices dst_quad_indices; - if (src_quad_indices_size > 0) - dst_quad_indices.reserve(src_quad_indices_size); - - for (unsigned int i = 0; i < src_quad_indices_size; ++i) - { - int id = src_quad_indices[i]; - dst_quad_indices.emplace_back(src_dst_vertex_indices_map[id], src_dst_normal_indices_map[id]); - } - - // save to file - fprintf(fp, "\n# vertices volume %d\n", volumes_count); - for (const Vector& v : dst_vertices) - { - fprintf(fp, "v %g %g %g\n", unscale(v.vector[0]), unscale(v.vector[1]), unscale(v.vector[2])); - } - - fprintf(fp, "\n# normals volume %d\n", volumes_count); - for (const Vector& n : dst_normals) - { - fprintf(fp, "vn %g %g %g\n", unscale(n.vector[0]), unscale(n.vector[1]), unscale(n.vector[2])); - } - - Color color; - ::memcpy((void*)color.data(), (const void*)volume->color, 4 * sizeof(float)); - fprintf(fp, "\n# material volume %d\n", volumes_count); - fprintf(fp, "usemtl material_%lld\n", (long long)(1 + std::distance(colors.begin(), colors.find(color)))); - - int base_vertex_id = vertices_count + 1; - int base_normal_id = normals_count + 1; - - if (!dst_triangle_indices.empty()) - { - fprintf(fp, "\n# triangular facets volume %d\n", volumes_count); - for (unsigned int i = 0; i < (unsigned int)dst_triangle_indices.size(); i += 3) - { - fprintf(fp, "f %d//%d %d//%d %d//%d\n", - base_vertex_id + dst_triangle_indices[i + 0].vertex, base_normal_id + dst_triangle_indices[i + 0].normal, - base_vertex_id + dst_triangle_indices[i + 1].vertex, base_normal_id + dst_triangle_indices[i + 1].normal, - base_vertex_id + dst_triangle_indices[i + 2].vertex, base_normal_id + dst_triangle_indices[i + 2].normal); - } - } - - if (!dst_quad_indices.empty()) - { - fprintf(fp, "\n# quadrangular facets volume %d\n", volumes_count); - for (unsigned int i = 0; i < (unsigned int)src_quad_indices.size(); i += 4) - { - fprintf(fp, "f %d//%d %d//%d %d//%d %d//%d\n", - base_vertex_id + dst_quad_indices[i + 0].vertex, base_normal_id + dst_quad_indices[i + 0].normal, - base_vertex_id + dst_quad_indices[i + 1].vertex, base_normal_id + dst_quad_indices[i + 1].normal, - base_vertex_id + dst_quad_indices[i + 2].vertex, base_normal_id + dst_quad_indices[i + 2].normal, - base_vertex_id + dst_quad_indices[i + 3].vertex, base_normal_id + dst_quad_indices[i + 3].normal); - } - } - - vertices_count += (unsigned int)dst_vertices.size(); - normals_count += (unsigned int)dst_normals.size(); - } - - fclose(fp); -} -#endif // !ENABLE_GCODE_VIEWER - // caller is responsible for supplying NO lines with zero length static void thick_lines_to_indexed_vertex_array( const Lines &lines, @@ -1929,287 +1639,4 @@ void _3DScene::point3_to_verts(const Vec3crd& point, double width, double height thick_point_to_verts(point, width, height, volume); } -#if !ENABLE_GCODE_VIEWER -GLModel::GLModel() - : m_filename("") -{ - m_volume.shader_outside_printer_detection_enabled = false; -} - -GLModel::~GLModel() -{ - reset(); -} - -void GLModel::set_color(const float* color, unsigned int size) -{ - ::memcpy((void*)m_volume.color, (const void*)color, (size_t)(std::min((unsigned int)4, size) * sizeof(float))); - m_volume.set_render_color(color, size); -} - -const Vec3d& GLModel::get_offset() const -{ - return m_volume.get_volume_offset(); -} - -void GLModel::set_offset(const Vec3d& offset) -{ - m_volume.set_volume_offset(offset); -} - -const Vec3d& GLModel::get_rotation() const -{ - return m_volume.get_volume_rotation(); -} - -void GLModel::set_rotation(const Vec3d& rotation) -{ - m_volume.set_volume_rotation(rotation); -} - -const Vec3d& GLModel::get_scale() const -{ - return m_volume.get_volume_scaling_factor(); -} - -void GLModel::set_scale(const Vec3d& scale) -{ - m_volume.set_volume_scaling_factor(scale); -} - -void GLModel::reset() -{ - m_volume.indexed_vertex_array.release_geometry(); - m_filename = ""; -} - -void GLModel::render() const -{ - GLShaderProgram* shader = GUI::wxGetApp().get_current_shader(); - if (shader == nullptr) - return; - - glsafe(::glEnable(GL_BLEND)); - glsafe(::glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)); - - glsafe(::glCullFace(GL_BACK)); - glsafe(::glEnableClientState(GL_VERTEX_ARRAY)); - glsafe(::glEnableClientState(GL_NORMAL_ARRAY)); - - shader->set_uniform("uniform_color", m_volume.render_color, 4); - m_volume.render(); - - glsafe(::glBindBuffer(GL_ARRAY_BUFFER, 0)); - glsafe(::glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0)); - - glsafe(::glDisableClientState(GL_VERTEX_ARRAY)); - glsafe(::glDisableClientState(GL_NORMAL_ARRAY)); - - glsafe(::glDisable(GL_BLEND)); -} - -bool GLArrow::on_init() -{ - Pointf3s vertices; - std::vector triangles; - - // bottom face - vertices.emplace_back(0.5, 0.0, -0.1); - vertices.emplace_back(0.5, 2.0, -0.1); - vertices.emplace_back(1.0, 2.0, -0.1); - vertices.emplace_back(0.0, 3.0, -0.1); - vertices.emplace_back(-1.0, 2.0, -0.1); - vertices.emplace_back(-0.5, 2.0, -0.1); - vertices.emplace_back(-0.5, 0.0, -0.1); - - // top face - vertices.emplace_back(0.5, 0.0, 0.1); - vertices.emplace_back(0.5, 2.0, 0.1); - vertices.emplace_back(1.0, 2.0, 0.1); - vertices.emplace_back(0.0, 3.0, 0.1); - vertices.emplace_back(-1.0, 2.0, 0.1); - vertices.emplace_back(-0.5, 2.0, 0.1); - vertices.emplace_back(-0.5, 0.0, 0.1); - - // bottom face - triangles.emplace_back(0, 6, 1); - triangles.emplace_back(6, 5, 1); - triangles.emplace_back(5, 4, 3); - triangles.emplace_back(5, 3, 1); - triangles.emplace_back(1, 3, 2); - - // top face - triangles.emplace_back(7, 8, 13); - triangles.emplace_back(13, 8, 12); - triangles.emplace_back(12, 10, 11); - triangles.emplace_back(8, 10, 12); - triangles.emplace_back(8, 9, 10); - - // side face - triangles.emplace_back(0, 1, 8); - triangles.emplace_back(8, 7, 0); - triangles.emplace_back(1, 2, 9); - triangles.emplace_back(9, 8, 1); - triangles.emplace_back(2, 3, 10); - triangles.emplace_back(10, 9, 2); - triangles.emplace_back(3, 4, 11); - triangles.emplace_back(11, 10, 3); - triangles.emplace_back(4, 5, 12); - triangles.emplace_back(12, 11, 4); - triangles.emplace_back(5, 6, 13); - triangles.emplace_back(13, 12, 5); - triangles.emplace_back(6, 0, 7); - triangles.emplace_back(7, 13, 6); - - m_volume.indexed_vertex_array.load_mesh(TriangleMesh(vertices, triangles)); - m_volume.indexed_vertex_array.finalize_geometry(true); - return true; -} - -GLCurvedArrow::GLCurvedArrow(unsigned int resolution) - : GLModel() - , m_resolution(resolution) -{ - if (m_resolution == 0) - m_resolution = 1; -} - -bool GLCurvedArrow::on_init() -{ - Pointf3s vertices; - std::vector triangles; - - double ext_radius = 2.5; - double int_radius = 1.5; - double step = 0.5 * (double)PI / (double)m_resolution; - - unsigned int vertices_per_level = 4 + 2 * m_resolution; - - // bottom face - vertices.emplace_back(0.0, 1.5, -0.1); - vertices.emplace_back(0.0, 1.0, -0.1); - vertices.emplace_back(-1.0, 2.0, -0.1); - vertices.emplace_back(0.0, 3.0, -0.1); - vertices.emplace_back(0.0, 2.5, -0.1); - - for (unsigned int i = 1; i <= m_resolution; ++i) - { - double angle = (double)i * step; - double x = ext_radius * ::sin(angle); - double y = ext_radius * ::cos(angle); - - vertices.emplace_back(x, y, -0.1); - } - - for (unsigned int i = 0; i < m_resolution; ++i) - { - double angle = (double)i * step; - double x = int_radius * ::cos(angle); - double y = int_radius * ::sin(angle); - - vertices.emplace_back(x, y, -0.1); - } - - // top face - vertices.emplace_back(0.0, 1.5, 0.1); - vertices.emplace_back(0.0, 1.0, 0.1); - vertices.emplace_back(-1.0, 2.0, 0.1); - vertices.emplace_back(0.0, 3.0, 0.1); - vertices.emplace_back(0.0, 2.5, 0.1); - - for (unsigned int i = 1; i <= m_resolution; ++i) - { - double angle = (double)i * step; - double x = ext_radius * ::sin(angle); - double y = ext_radius * ::cos(angle); - - vertices.emplace_back(x, y, 0.1); - } - - for (unsigned int i = 0; i < m_resolution; ++i) - { - double angle = (double)i * step; - double x = int_radius * ::cos(angle); - double y = int_radius * ::sin(angle); - - vertices.emplace_back(x, y, 0.1); - } - - // bottom face - triangles.emplace_back(0, 1, 2); - triangles.emplace_back(0, 2, 4); - triangles.emplace_back(4, 2, 3); - - int first_id = 4; - int last_id = (int)vertices_per_level; - triangles.emplace_back(last_id, 0, first_id); - triangles.emplace_back(last_id, first_id, first_id + 1); - for (unsigned int i = 1; i < m_resolution; ++i) - { - triangles.emplace_back(last_id - i, last_id - i + 1, first_id + i); - triangles.emplace_back(last_id - i, first_id + i, first_id + i + 1); - } - - // top face - last_id += 1; - triangles.emplace_back(last_id + 0, last_id + 2, last_id + 1); - triangles.emplace_back(last_id + 0, last_id + 4, last_id + 2); - triangles.emplace_back(last_id + 4, last_id + 3, last_id + 2); - - first_id = last_id + 4; - last_id = last_id + 4 + 2 * (int)m_resolution; - triangles.emplace_back(last_id, first_id, (int)vertices_per_level + 1); - triangles.emplace_back(last_id, first_id + 1, first_id); - for (unsigned int i = 1; i < m_resolution; ++i) - { - triangles.emplace_back(last_id - i, first_id + i, last_id - i + 1); - triangles.emplace_back(last_id - i, first_id + i + 1, first_id + i); - } - - // side face - for (unsigned int i = 0; i < 4 + 2 * (unsigned int)m_resolution; ++i) - { - triangles.emplace_back(i, vertices_per_level + 2 + i, i + 1); - triangles.emplace_back(i, vertices_per_level + 1 + i, vertices_per_level + 2 + i); - } - triangles.emplace_back(vertices_per_level, vertices_per_level + 1, 0); - triangles.emplace_back(vertices_per_level, 2 * vertices_per_level + 1, vertices_per_level + 1); - - m_volume.indexed_vertex_array.load_mesh(TriangleMesh(vertices, triangles)); - m_volume.indexed_vertex_array.finalize_geometry(true); - return true; -} - -bool GLBed::on_init_from_file(const std::string& filename) -{ - reset(); - - if (!boost::filesystem::exists(filename)) - return false; - - if (!boost::algorithm::iends_with(filename, ".stl")) - return false; - - Model model; - try - { - model = Model::read_from_file(filename); - } - catch (std::exception & /* ex */) - { - return false; - } - - m_filename = filename; - - m_volume.indexed_vertex_array.load_mesh(model.mesh()); - m_volume.indexed_vertex_array.finalize_geometry(true); - - float color[4] = { 0.235f, 0.235f, 0.235f, 1.0f }; - set_color(color, 4); - - return true; -} -#endif // !ENABLE_GCODE_VIEWER - } // namespace Slic3r diff --git a/src/slic3r/GUI/3DScene.hpp b/src/slic3r/GUI/3DScene.hpp index a6362dadc6..930f63c8e1 100644 --- a/src/slic3r/GUI/3DScene.hpp +++ b/src/slic3r/GUI/3DScene.hpp @@ -588,10 +588,6 @@ public: std::string log_memory_info() const; bool has_toolpaths_to_export() const; -#if !ENABLE_GCODE_VIEWER - // Export the geometry of the GLVolumes toolpaths of this collection into the file with the given path, in obj format - void export_toolpaths_to_obj(const char* filename) const; -#endif // !ENABLE_GCODE_VIEWER private: GLVolumeCollection(const GLVolumeCollection &other); @@ -600,68 +596,6 @@ private: GLVolumeWithIdAndZList volumes_to_render(const GLVolumePtrs& volumes, GLVolumeCollection::ERenderType type, const Transform3d& view_matrix, std::function filter_func = nullptr); -#if !ENABLE_GCODE_VIEWER -class GLModel -{ -protected: - GLVolume m_volume; - std::string m_filename; - -public: - GLModel(); - virtual ~GLModel(); - - // init() / init_from_file() shall be called with the OpenGL context active! - bool init() { return on_init(); } - bool init_from_file(const std::string& filename) { return on_init_from_file(filename); } - - void center_around(const Vec3d& center) { m_volume.set_volume_offset(center - m_volume.bounding_box().center()); } - void set_color(const float* color, unsigned int size); - - const Vec3d& get_offset() const; - void set_offset(const Vec3d& offset); - const Vec3d& get_rotation() const; - void set_rotation(const Vec3d& rotation); - const Vec3d& get_scale() const; - void set_scale(const Vec3d& scale); - - const std::string& get_filename() const { return m_filename; } - const BoundingBoxf3& get_bounding_box() const { return m_volume.bounding_box(); } - const BoundingBoxf3& get_transformed_bounding_box() const { return m_volume.transformed_bounding_box(); } - - void reset(); - - void render() const; - -protected: - virtual bool on_init() { return false; } - virtual bool on_init_from_file(const std::string& filename) { return false; } -}; - -class GLArrow : public GLModel -{ -protected: - bool on_init() override; -}; - -class GLCurvedArrow : public GLModel -{ - unsigned int m_resolution; - -public: - explicit GLCurvedArrow(unsigned int resolution); - -protected: - bool on_init() override; -}; - -class GLBed : public GLModel -{ -protected: - bool on_init_from_file(const std::string& filename) override; -}; -#endif // !ENABLE_GCODE_VIEWER - struct _3DScene { static void thick_lines_to_verts(const Lines& lines, const std::vector& widths, const std::vector& heights, bool closed, double top_z, GLVolume& volume); diff --git a/src/slic3r/GUI/AboutDialog.cpp b/src/slic3r/GUI/AboutDialog.cpp index 2b1bea13cf..6e3f8ecc82 100644 --- a/src/slic3r/GUI/AboutDialog.cpp +++ b/src/slic3r/GUI/AboutDialog.cpp @@ -37,17 +37,10 @@ void AboutDialogLogo::onRepaint(wxEvent &event) // CopyrightsDialog // ----------------------------------------- CopyrightsDialog::CopyrightsDialog() -#if ENABLE_GCODE_VIEWER - : DPIDialog(NULL, wxID_ANY, from_u8((boost::format("%1% - %2%") + : DPIDialog((wxWindow*)wxGetApp().mainframe, wxID_ANY, from_u8((boost::format("%1% - %2%") % (wxGetApp().is_editor() ? SLIC3R_APP_NAME : GCODEVIEWER_APP_NAME) % _utf8(L("Portions copyright"))).str()), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER) -#else - : DPIDialog(NULL, wxID_ANY, from_u8((boost::format("%1% - %2%") - % SLIC3R_APP_NAME - % _utf8(L("Portions copyright"))).str()), - wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER) -#endif // ENABLE_GCODE_VIEWER { this->SetFont(wxGetApp().normal_font()); this->SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW)); @@ -208,13 +201,8 @@ void CopyrightsDialog::onCloseDialog(wxEvent &) } AboutDialog::AboutDialog() -#if ENABLE_GCODE_VIEWER - : DPIDialog(NULL, wxID_ANY, from_u8((boost::format(_utf8(L("About %s"))) % (wxGetApp().is_editor() ? SLIC3R_APP_NAME : GCODEVIEWER_APP_NAME)).str()), wxDefaultPosition, + : DPIDialog((wxWindow*)wxGetApp().mainframe, wxID_ANY, from_u8((boost::format(_utf8(L("About %s"))) % (wxGetApp().is_editor() ? SLIC3R_APP_NAME : GCODEVIEWER_APP_NAME)).str()), wxDefaultPosition, wxDefaultSize, /*wxCAPTION*/wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER) -#else - : DPIDialog(NULL, wxID_ANY, from_u8((boost::format(_utf8(L("About %s"))) % SLIC3R_APP_NAME).str()), wxDefaultPosition, - wxDefaultSize, /*wxCAPTION*/wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER) -#endif // ENABLE_GCODE_VIEWER { SetFont(wxGetApp().normal_font()); @@ -226,11 +214,7 @@ AboutDialog::AboutDialog() main_sizer->Add(hsizer, 0, wxEXPAND | wxALL, 20); // logo -#if ENABLE_GCODE_VIEWER m_logo_bitmap = ScalableBitmap(this, wxGetApp().is_editor() ? "PrusaSlicer_192px.png" : "PrusaSlicer-gcodeviewer_192px.png", 192); -#else - m_logo_bitmap = ScalableBitmap(this, "PrusaSlicer_192px.png", 192); -#endif // ENABLE_GCODE_VIEWER m_logo = new wxStaticBitmap(this, wxID_ANY, m_logo_bitmap.bmp()); hsizer->Add(m_logo, 1, wxALIGN_CENTER_VERTICAL); @@ -239,11 +223,7 @@ AboutDialog::AboutDialog() // title { -#if ENABLE_GCODE_VIEWER wxStaticText* title = new wxStaticText(this, wxID_ANY, wxGetApp().is_editor() ? SLIC3R_APP_NAME : GCODEVIEWER_APP_NAME, wxDefaultPosition, wxDefaultSize); -#else - wxStaticText* title = new wxStaticText(this, wxID_ANY, SLIC3R_APP_NAME, wxDefaultPosition, wxDefaultSize); -#endif // ENABLE_GCODE_VIEWER wxFont title_font = GUI::wxGetApp().bold_font(); title_font.SetFamily(wxFONTFAMILY_ROMAN); title_font.SetPointSize(24); @@ -253,7 +233,7 @@ AboutDialog::AboutDialog() // version { - auto version_string = _L("Version")+ " " + std::string(SLIC3R_VERSION); + auto version_string = _L("Version") + " " + std::string(SLIC3R_VERSION); wxStaticText* version = new wxStaticText(this, wxID_ANY, version_string.c_str(), wxDefaultPosition, wxDefaultSize); wxFont version_font = GetFont(); #ifdef __WXMSW__ diff --git a/src/slic3r/GUI/BackgroundSlicingProcess.cpp b/src/slic3r/GUI/BackgroundSlicingProcess.cpp index 36187f81ec..66d1f551f9 100644 --- a/src/slic3r/GUI/BackgroundSlicingProcess.cpp +++ b/src/slic3r/GUI/BackgroundSlicingProcess.cpp @@ -19,9 +19,6 @@ #include "libslic3r/SLAPrint.hpp" #include "libslic3r/Utils.hpp" #include "libslic3r/GCode/PostProcessor.hpp" -#if !ENABLE_GCODE_VIEWER -#include "libslic3r/GCode/PreviewData.hpp" -#endif // !ENABLE_GCODE_VIEWER #include "libslic3r/Format/SL1.hpp" #include "libslic3r/Thread.hpp" #include "libslic3r/libslic3r.h" @@ -53,6 +50,24 @@ bool SlicingProcessCompletedEvent::critical_error() const return true; } +bool SlicingProcessCompletedEvent::invalidate_plater() const +{ + if (critical_error()) + { + try { + this->rethrow_exception(); + } + catch (const Slic3r::ExportError&) { + // Exception thrown by copying file does not ivalidate plater + return false; + } + catch (...) { + } + return true; + } + return false; +} + std::string SlicingProcessCompletedEvent::format_error_message() const { std::string error; @@ -126,11 +141,7 @@ void BackgroundSlicingProcess::process_fff() // Passing the timestamp evt.SetInt((int)(m_fff_print->step_state_with_timestamp(PrintStep::psSlicingFinished).timestamp)); wxQueueEvent(GUI::wxGetApp().mainframe->m_plater, evt.Clone()); -#if ENABLE_GCODE_VIEWER m_fff_print->export_gcode(m_temp_output_path, m_gcode_result, m_thumbnail_cb); -#else - m_fff_print->export_gcode(m_temp_output_path, m_gcode_preview_data, m_thumbnail_cb); -#endif // ENABLE_GCODE_VIEWER if (this->set_step_started(bspsGCodeFinalize)) { if (! m_export_path.empty()) { wxQueueEvent(GUI::wxGetApp().mainframe->m_plater, new wxCommandEvent(m_event_export_began_id)); @@ -142,19 +153,19 @@ void BackgroundSlicingProcess::process_fff() switch (copy_ret_val) { case SUCCESS: break; // no error case FAIL_COPY_FILE: - throw Slic3r::RuntimeError((boost::format(_utf8(L("Copying of the temporary G-code to the output G-code failed. Maybe the SD card is write locked?\nError message: %1%"))) % error_message).str()); + throw Slic3r::ExportError((boost::format(_utf8(L("Copying of the temporary G-code to the output G-code failed. Maybe the SD card is write locked?\nError message: %1%"))) % error_message).str()); break; case FAIL_FILES_DIFFERENT: - throw Slic3r::RuntimeError((boost::format(_utf8(L("Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp."))) % export_path).str()); + throw Slic3r::ExportError((boost::format(_utf8(L("Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp."))) % export_path).str()); break; case FAIL_RENAMING: - throw Slic3r::RuntimeError((boost::format(_utf8(L("Renaming of the G-code after copying to the selected destination folder has failed. Current path is %1%.tmp. Please try exporting again."))) % export_path).str()); + throw Slic3r::ExportError((boost::format(_utf8(L("Renaming of the G-code after copying to the selected destination folder has failed. Current path is %1%.tmp. Please try exporting again."))) % export_path).str()); break; case FAIL_CHECK_ORIGIN_NOT_OPENED: - throw Slic3r::RuntimeError((boost::format(_utf8(L("Copying of the temporary G-code has finished but the original code at %1% couldn't be opened during copy check. The output G-code is at %2%.tmp."))) % m_temp_output_path % export_path).str()); + throw Slic3r::ExportError((boost::format(_utf8(L("Copying of the temporary G-code has finished but the original code at %1% couldn't be opened during copy check. The output G-code is at %2%.tmp."))) % m_temp_output_path % export_path).str()); break; case FAIL_CHECK_TARGET_NOT_OPENED: - throw Slic3r::RuntimeError((boost::format(_utf8(L("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."))) % export_path).str()); + throw Slic3r::ExportError((boost::format(_utf8(L("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."))) % export_path).str()); break; default: throw Slic3r::RuntimeError(_utf8(L("Unknown error occured during exporting G-code."))); @@ -418,25 +429,14 @@ Print::ApplyStatus BackgroundSlicingProcess::apply(const Model &model, const Dyn assert(m_print != nullptr); assert(config.opt_enum("printer_technology") == m_print->technology()); Print::ApplyStatus invalidated = m_print->apply(model, config); -#if ENABLE_GCODE_VIEWER if ((invalidated & PrintBase::APPLY_STATUS_INVALIDATED) != 0 && m_print->technology() == ptFFF && - !this->m_fff_print->is_step_done(psGCodeExport)) - { + !this->m_fff_print->is_step_done(psGCodeExport)) { // Some FFF status was invalidated, and the G-code was not exported yet. // Let the G-code preview UI know that the final G-code preview is not valid. // In addition, this early memory deallocation reduces memory footprint. if (m_gcode_result != nullptr) m_gcode_result->reset(); } -#else - if ((invalidated & PrintBase::APPLY_STATUS_INVALIDATED) != 0 && m_print->technology() == ptFFF && - m_gcode_preview_data != nullptr && ! this->m_fff_print->is_step_done(psGCodeExport)) { - // Some FFF status was invalidated, and the G-code was not exported yet. - // Let the G-code preview UI know that the final G-code preview is not valid. - // In addition, this early memory deallocation reduces memory footprint. - m_gcode_preview_data->reset(); - } -#endif // ENABLE_GCODE_VIEWER return invalidated; } diff --git a/src/slic3r/GUI/BackgroundSlicingProcess.hpp b/src/slic3r/GUI/BackgroundSlicingProcess.hpp index 1b2687e63a..d4fc3ddcc4 100644 --- a/src/slic3r/GUI/BackgroundSlicingProcess.hpp +++ b/src/slic3r/GUI/BackgroundSlicingProcess.hpp @@ -11,9 +11,7 @@ #include "libslic3r/GCode/ThumbnailData.hpp" #include "libslic3r/Format/SL1.hpp" #include "slic3r/Utils/PrintHost.hpp" -#if ENABLE_GCODE_VIEWER #include "libslic3r/GCode/GCodeProcessor.hpp" -#endif // ENABLE_GCODE_VIEWER namespace boost { namespace filesystem { class path; } } @@ -21,9 +19,6 @@ namespace boost { namespace filesystem { class path; } } namespace Slic3r { class DynamicPrintConfig; -#if !ENABLE_GCODE_VIEWER -class GCodePreviewData; -#endif // !ENABLE_GCODE_VIEWER class Model; class SLAPrint; @@ -57,6 +52,8 @@ public: bool error() const { return m_status == Error; } // Unhandled error produced by stdlib or a Win32 structured exception, or unhandled Slic3r's own critical exception. bool critical_error() const; + // Critical errors does invalidate plater except CopyFileError. + bool invalidate_plater() const; // Only valid if error() void rethrow_exception() const { assert(this->error()); assert(m_exception); std::rethrow_exception(m_exception); } // Produce a human readable message to be displayed by a notification or a message box. @@ -86,11 +83,7 @@ public: void set_fff_print(Print *print) { m_fff_print = print; } void set_sla_print(SLAPrint *print) { m_sla_print = print; m_sla_print->set_printer(&m_sla_archive); } void set_thumbnail_cb(ThumbnailsGeneratorCallback cb) { m_thumbnail_cb = cb; } -#if ENABLE_GCODE_VIEWER void set_gcode_result(GCodeProcessor::Result* result) { m_gcode_result = result; } -#else - void set_gcode_preview_data(GCodePreviewData* gpd) { m_gcode_preview_data = gpd; } -#endif // ENABLE_GCODE_VIEWER // The following wxCommandEvent will be sent to the UI thread / Plater window, when the slicing is finished // and the background processing will transition into G-code export. @@ -196,13 +189,8 @@ private: // Non-owned pointers to Print instances. Print *m_fff_print = nullptr; SLAPrint *m_sla_print = nullptr; -#if ENABLE_GCODE_VIEWER // Data structure, to which the G-code export writes its annotations. GCodeProcessor::Result *m_gcode_result = nullptr; -#else - // Data structure, to which the G-code export writes its annotations. - GCodePreviewData *m_gcode_preview_data = nullptr; -#endif // ENABLE_GCODE_VIEWER // Callback function, used to write thumbnails into gcode. ThumbnailsGeneratorCallback m_thumbnail_cb = nullptr; SL1Archive m_sla_archive; diff --git a/src/slic3r/GUI/BitmapCache.cpp b/src/slic3r/GUI/BitmapCache.cpp index cc4c831ae9..41609954e8 100644 --- a/src/slic3r/GUI/BitmapCache.cpp +++ b/src/slic3r/GUI/BitmapCache.cpp @@ -3,9 +3,7 @@ #include "libslic3r/Utils.hpp" #include "../Utils/MacDarkMode.hpp" #include "GUI.hpp" -#if ENABLE_GCODE_VIEWER #include "GUI_Utils.hpp" -#endif // ENABLE_GCODE_VIEWER #include @@ -357,17 +355,6 @@ wxBitmap BitmapCache::mksolid(size_t width, size_t height, unsigned char r, unsi return wxImage_to_wxBitmap_with_alpha(std::move(image), scale); } - -#if !ENABLE_GCODE_VIEWER -static inline int hex_digit_to_int(const char c) -{ - return - (c >= '0' && c <= '9') ? int(c - '0') : - (c >= 'A' && c <= 'F') ? int(c - 'A') + 10 : - (c >= 'a' && c <= 'f') ? int(c - 'a') + 10 : -1; -} -#endif // !ENABLE_GCODE_VIEWER - bool BitmapCache::parse_color(const std::string& scolor, unsigned char* rgb_out) { rgb_out[0] = rgb_out[1] = rgb_out[2] = 0; diff --git a/src/slic3r/GUI/Camera.cpp b/src/slic3r/GUI/Camera.cpp index 3bd22590f5..1e589f1a15 100644 --- a/src/slic3r/GUI/Camera.cpp +++ b/src/slic3r/GUI/Camera.cpp @@ -32,15 +32,6 @@ double Camera::MaxFovDeg = 60.0; Camera::Camera() : requires_zoom_to_bed(false) - , m_type(Perspective) - , m_target(Vec3d::Zero()) - , m_zenit(45.0f) - , m_zoom(1.0) - , m_distance(DefaultDistance) - , m_gui_scale(1.0) - , m_view_matrix(Transform3d::Identity()) - , m_view_rotation(1., 0., 0., 0.) - , m_projection_matrix(Transform3d::Identity()) { set_default_orientation(); } @@ -58,11 +49,12 @@ std::string Camera::get_type_as_string() const void Camera::set_type(EType type) { - if (m_type != type) - { + if (m_type != type) { m_type = type; - wxGetApp().app_config->set("use_perspective_camera", (m_type == Perspective) ? "1" : "0"); - wxGetApp().app_config->save(); + if (m_update_config_on_type_change_enabled) { + wxGetApp().app_config->set("use_perspective_camera", (m_type == Perspective) ? "1" : "0"); + wxGetApp().app_config->save(); + } } } diff --git a/src/slic3r/GUI/Camera.hpp b/src/slic3r/GUI/Camera.hpp index 6e42562351..91f4661b46 100644 --- a/src/slic3r/GUI/Camera.hpp +++ b/src/slic3r/GUI/Camera.hpp @@ -29,19 +29,20 @@ struct Camera bool requires_zoom_to_bed; private: - EType m_type; - Vec3d m_target; - float m_zenit; - double m_zoom; + EType m_type{ Perspective }; + bool m_update_config_on_type_change_enabled{ false }; + Vec3d m_target{ Vec3d::Zero() }; + float m_zenit{ 45.0f }; + double m_zoom{ 1.0 }; // Distance between camera position and camera target measured along the camera Z axis - mutable double m_distance; - mutable double m_gui_scale; + mutable double m_distance{ DefaultDistance }; + mutable double m_gui_scale{ 1.0 }; mutable std::array m_viewport; - mutable Transform3d m_view_matrix; + mutable Transform3d m_view_matrix{ Transform3d::Identity() }; // We are calculating the rotation part of the m_view_matrix from m_view_rotation. - mutable Eigen::Quaterniond m_view_rotation; - mutable Transform3d m_projection_matrix; + mutable Eigen::Quaterniond m_view_rotation{ 1.0, 0.0, 0.0, 0.0 }; + mutable Transform3d m_projection_matrix{ Transform3d::Identity() }; mutable std::pair m_frustrum_zs; BoundingBoxf3 m_scene_box; @@ -56,6 +57,8 @@ public: void set_type(const std::string& type); void select_next_type(); + void enable_update_config_on_type_change(bool enable) { m_update_config_on_type_change_enabled = enable; } + const Vec3d& get_target() const { return m_target; } void set_target(const Vec3d& target); @@ -124,7 +127,7 @@ public: void look_at(const Vec3d& position, const Vec3d& target, const Vec3d& up); - double max_zoom() const { return 100.0; } + double max_zoom() const { return 250.0; } double min_zoom() const; private: diff --git a/src/slic3r/GUI/ConfigSnapshotDialog.cpp b/src/slic3r/GUI/ConfigSnapshotDialog.cpp index 48b5a2b007..fb171a1771 100644 --- a/src/slic3r/GUI/ConfigSnapshotDialog.cpp +++ b/src/slic3r/GUI/ConfigSnapshotDialog.cpp @@ -48,9 +48,17 @@ static wxString generate_html_row(const Config::Snapshot &snapshot, bool row_eve text += "
"; // End of row header. text += _(L("PrusaSlicer version")) + ": " + snapshot.slic3r_version_captured.to_string() + "
"; - text += _(L("print")) + ": " + snapshot.print + "
"; - text += _(L("filaments")) + ": " + snapshot.filaments.front() + "
"; - text += _(L("printer")) + ": " + snapshot.printer + "
"; + bool has_fff = ! snapshot.print.empty() || ! snapshot.filaments.empty(); + bool has_sla = ! snapshot.sla_print.empty() || ! snapshot.sla_material.empty(); + if (has_fff || ! has_sla) { + text += _(L("print")) + ": " + snapshot.print + "
"; + text += _(L("filaments")) + ": " + snapshot.filaments.front() + "
"; + } + if (has_sla) { + text += _(L("SLA print")) + ": " + snapshot.sla_print + "
"; + text += _(L("SLA material")) + ": " + snapshot.sla_material + "
"; + } + text += _(L("printer")) + ": " + (snapshot.physical_printer.empty() ? snapshot.printer : snapshot.physical_printer) + "
"; bool compatible = true; for (const Config::Snapshot::VendorConfig &vc : snapshot.vendor_configs) { @@ -101,7 +109,7 @@ static wxString generate_html_page(const Config::SnapshotDB &snapshot_db, const } ConfigSnapshotDialog::ConfigSnapshotDialog(const Config::SnapshotDB &snapshot_db, const wxString &on_snapshot) - : DPIDialog(NULL, wxID_ANY, _(L("Configuration Snapshots")), wxDefaultPosition, + : DPIDialog((wxWindow*)wxGetApp().mainframe, wxID_ANY, _(L("Configuration Snapshots")), wxDefaultPosition, wxSize(45 * wxGetApp().em_unit(), 40 * wxGetApp().em_unit()), wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER | wxMAXIMIZE_BOX) { diff --git a/src/slic3r/GUI/ConfigWizard.cpp b/src/slic3r/GUI/ConfigWizard.cpp index cd944f6890..b993fb3277 100644 --- a/src/slic3r/GUI/ConfigWizard.cpp +++ b/src/slic3r/GUI/ConfigWizard.cpp @@ -27,6 +27,7 @@ #include #include "libslic3r/Utils.hpp" +#include "libslic3r/Config.hpp" #include "GUI.hpp" #include "GUI_App.hpp" #include "GUI_Utils.hpp" @@ -191,23 +192,23 @@ PrinterPicker::PrinterPicker(wxWindow *parent, const VendorProfile &vendor, wxSt wxBitmap bitmap; int bitmap_width = 0; - const wxString bitmap_file = GUI::from_u8(Slic3r::resources_dir() + "/profiles/" + vendor.id + "/" + model.id + "_thumbnail.png"); - if (wxFileExists(bitmap_file)) { - bitmap.LoadFile(bitmap_file, wxBITMAP_TYPE_PNG); - bitmap_width = bitmap.GetWidth(); - } else { - BOOST_LOG_TRIVIAL(warning) << boost::format("Can't find bitmap file `%1%` for vendor `%2%`, printer `%3%`, using placeholder icon instead") - % bitmap_file - % vendor.id - % model.id; - - const wxString placeholder_file = GUI::from_u8(Slic3r::var(PRINTER_PLACEHOLDER)); - if (wxFileExists(placeholder_file)) { - bitmap.LoadFile(placeholder_file, wxBITMAP_TYPE_PNG); + auto load_bitmap = [](const wxString& bitmap_file, wxBitmap& bitmap, int& bitmap_width)->bool { + if (wxFileExists(bitmap_file)) { + bitmap.LoadFile(bitmap_file, wxBITMAP_TYPE_PNG); bitmap_width = bitmap.GetWidth(); + return true; + } + return false; + }; + if (!load_bitmap(GUI::from_u8(Slic3r::data_dir() + "/vendor/" + vendor.id + "/" + model.id + "_thumbnail.png"), bitmap, bitmap_width)) { + if (!load_bitmap(GUI::from_u8(Slic3r::resources_dir() + "/profiles/" + vendor.id + "/" + model.id + "_thumbnail.png"), bitmap, bitmap_width)) { + BOOST_LOG_TRIVIAL(warning) << boost::format("Can't find bitmap file `%1%` for vendor `%2%`, printer `%3%`, using placeholder icon instead") + % (Slic3r::resources_dir() + "/profiles/" + vendor.id + "/" + model.id + "_thumbnail.png") + % vendor.id + % model.id; + load_bitmap(Slic3r::var(PRINTER_PLACEHOLDER), bitmap, bitmap_width); } } - auto *title = new wxStaticText(this, wxID_ANY, model.name, wxDefaultPosition, wxDefaultSize, wxALIGN_LEFT); title->SetFont(font_name); const int wrap_width = std::max((int)MODEL_MIN_WRAP, bitmap_width); @@ -270,25 +271,22 @@ PrinterPicker::PrinterPicker(wxWindow *parent, const VendorProfile &vendor, wxSt const size_t odd_items = titles.size() % cols; for (size_t i = 0; i < titles.size() - odd_items; i += cols) { - for (size_t j = i; j < i + cols; j++) { printer_grid->Add(titles[j], 0, wxBOTTOM, 3); } for (size_t j = i; j < i + cols; j++) { printer_grid->Add(bitmaps[j], 0, wxBOTTOM, 20); } + for (size_t j = i; j < i + cols; j++) { printer_grid->Add(titles[j], 0, wxBOTTOM, 3); } for (size_t j = i; j < i + cols; j++) { printer_grid->Add(variants_panels[j]); } - // Add separator space - if (i > 0) { - for (size_t j = i; j < i + cols; j++) { printer_grid->Add(1, 100); } + // Add separator space to multiliners + if (titles.size() > cols) { + for (size_t j = i; j < i + cols; j++) { printer_grid->Add(1, 30); } } } - if (odd_items > 0) { - for (size_t i = 0; i < cols; i++) { printer_grid->Add(1, 100); } - const size_t rem = titles.size() - odd_items; - for (size_t i = rem; i < titles.size(); i++) { printer_grid->Add(titles[i], 0, wxBOTTOM, 3); } - for (size_t i = 0; i < cols - odd_items; i++) { printer_grid->AddSpacer(1); } for (size_t i = rem; i < titles.size(); i++) { printer_grid->Add(bitmaps[i], 0, wxBOTTOM, 20); } for (size_t i = 0; i < cols - odd_items; i++) { printer_grid->AddSpacer(1); } + for (size_t i = rem; i < titles.size(); i++) { printer_grid->Add(titles[i], 0, wxBOTTOM, 3); } + for (size_t i = 0; i < cols - odd_items; i++) { printer_grid->AddSpacer(1); } for (size_t i = rem; i < titles.size(); i++) { printer_grid->Add(variants_panels[i]); } } } @@ -1389,7 +1387,7 @@ void PageDiameters::apply_custom_config(DynamicPrintConfig &config) } PageTemperatures::PageTemperatures(ConfigWizard *parent) - : ConfigWizardPage(parent, _(L("Extruder and Bed Temperatures")), _(L("Temperatures")), 1) + : ConfigWizardPage(parent, _(L("Nozzle and Bed Temperatures")), _(L("Temperatures")), 1) , spin_extr(new wxSpinCtrlDouble(this, wxID_ANY)) , spin_bed(new wxSpinCtrlDouble(this, wxID_ANY)) { diff --git a/src/slic3r/GUI/ConfigWizard_private.hpp b/src/slic3r/GUI/ConfigWizard_private.hpp index 0f0febe91b..9fcc9267d5 100644 --- a/src/slic3r/GUI/ConfigWizard_private.hpp +++ b/src/slic3r/GUI/ConfigWizard_private.hpp @@ -565,9 +565,7 @@ struct ConfigWizard::priv priv(ConfigWizard *q) : q(q) -#if ENABLE_GCODE_VIEWER , appconfig_new(AppConfig::EAppMode::Editor) -#endif // ENABLE_GCODE_VIEWER , filaments(T_FFF) , sla_materials(T_SLA) {} diff --git a/src/slic3r/GUI/DoubleSlider.cpp b/src/slic3r/GUI/DoubleSlider.cpp index 911ee9c420..4df91fb783 100644 --- a/src/slic3r/GUI/DoubleSlider.cpp +++ b/src/slic3r/GUI/DoubleSlider.cpp @@ -12,6 +12,8 @@ #include "I18N.hpp" #include "ExtruderSequenceDialog.hpp" #include "libslic3r/Print.hpp" +#include "libslic3r/AppConfig.hpp" +#include "GUI_Utils.hpp" #include #include @@ -45,14 +47,10 @@ static std::string gcode(Type type) { const PrintConfig& config = GUI::wxGetApp().plater()->fff_print().config(); switch (type) { - case ColorChange: - return config.color_change_gcode; - case PausePrint: - return config.pause_print_gcode; - case Template: - return config.template_custom_gcode; - default: - return ""; + case ColorChange: return config.color_change_gcode; + case PausePrint: return config.pause_print_gcode; + case Template: return config.template_custom_gcode; + default: return ""; } } @@ -72,7 +70,8 @@ Control::Control( wxWindow *parent, m_higher_value (higherValue), m_min_value(minValue), m_max_value(maxValue), - m_style(style == wxSL_HORIZONTAL || style == wxSL_VERTICAL ? style: wxSL_HORIZONTAL) + m_style(style == wxSL_HORIZONTAL || style == wxSL_VERTICAL ? style: wxSL_HORIZONTAL), + m_extra_style(style == wxSL_VERTICAL ? wxSL_AUTOTICKS | wxSL_VALUE_LABEL : 0) { #ifdef __WXOSX__ is_osx = true; @@ -138,14 +137,13 @@ Control::Control( wxWindow *parent, m_line_pens = { &DARK_GREY_PEN, &GREY_PEN, &LIGHT_GREY_PEN }; m_segm_pens = { &DARK_ORANGE_PEN, &ORANGE_PEN, &LIGHT_ORANGE_PEN }; - const wxFont& font = GetFont(); - m_font = is_osx ? font.Smaller().Smaller() : font.Smaller(); + m_font = GetFont(); + this->SetMinSize(get_min_size()); } void Control::msw_rescale() { - const wxFont& font = GUI::wxGetApp().normal_font(); - m_font = is_osx ? font.Smaller().Smaller() : font.Smaller(); + m_font = GUI::wxGetApp().normal_font(); m_bmp_thumb_higher.msw_rescale(); m_bmp_thumb_lower .msw_rescale(); @@ -183,8 +181,7 @@ int Control::GetActiveValue() const wxSize Control::get_min_size() const { - const int min_side = GUI::wxGetApp().em_unit() * ( is_horizontal() ? (is_osx ? 8 : 6) : 10 ); - + const int min_side = GUI::wxGetApp().em_unit() * ( is_horizontal() ? 5 : 11 ); return wxSize(min_side, min_side); } @@ -244,6 +241,12 @@ void Control::SetMaxValue(const int max_value) Update(); } +void Control::SetSliderValues(const std::vector& values) +{ + m_values = values; + m_ruler.count = std::count(m_values.begin(), m_values.end(), m_values.front()); +} + void Control::draw_scroll_line(wxDC& dc, const int lower_pos, const int higher_pos) { int width; @@ -297,6 +300,8 @@ wxSize Control::get_size() const void Control::get_size(int* w, int* h) const { GetSize(w, h); + if (m_draw_mode == dmSequentialGCodeView) + return; // we have no more icons for drawing is_horizontal() ? *w -= m_lock_icon_dim : *h -= m_lock_icon_dim; } @@ -373,6 +378,24 @@ void Control::SetTicksValues(const Info& custom_gcode_per_print_z) Update(); } +void Control::SetLayersTimes(const std::vector& layers_times) +{ + m_layers_times.clear(); + if (layers_times.empty()) + return; + m_layers_times.resize(layers_times.size(), 0.0); + m_layers_times[0] = layers_times[0]; + for (size_t i = 1; i < layers_times.size(); i++) + m_layers_times[i] = m_layers_times[i - 1] + layers_times[i]; +} + +void Control::SetLayersTimes(const std::vector& layers_times) +{ + m_layers_times = layers_times; + for (size_t i = 1; i < m_layers_times.size(); i++) + m_layers_times[i] += m_layers_times[i - 1]; +} + void Control::SetDrawMode(bool is_sla_print, bool is_sequential_print) { m_draw_mode = is_sla_print ? dmSlaPrint : @@ -445,6 +468,9 @@ void Control::render() // and only in a case of no-empty m_values draw_colored_band(dc); + if (m_extra_style & wxSL_AUTOTICKS) + draw_ruler(dc); + if (!m_render_as_disabled) { // draw line draw_scroll_line(dc, lower_pos, higher_pos); @@ -473,8 +499,10 @@ void Control::draw_action_icon(wxDC& dc, const wxPoint pt_beg, const wxPoint pt_ { const int tick = m_selection == ssLower ? m_lower_value : m_higher_value; +#if ENABLE_GCODE_VIEWER if (!m_enable_action_icon) return; +#endif // ENABLE_GCODE_VIEWER // suppress add tick on first layer if (tick == 0) @@ -560,7 +588,7 @@ void Control::draw_tick_on_mouse_position(wxDC& dc) } tick = get_value_from_position(m_moving_pos); - if (tick >= m_max_value || tick <= m_min_value || tick == m_higher_value || tick == m_lower_value) + if (tick > m_max_value || tick < m_min_value || tick == m_higher_value || tick == m_lower_value) return; wxCoord new_pos = get_position_from_value(tick); @@ -569,9 +597,57 @@ void Control::draw_tick_on_mouse_position(wxDC& dc) //draw info line dc.SetPen(LIGHT_GREY_PEN); draw_ticks(dc, pos); + + if (m_extra_style & wxSL_VALUE_LABEL) { + wxColour old_clr = dc.GetTextForeground(); + dc.SetTextForeground(LIGHT_GREY_PEN.GetColour()); + draw_tick_text(dc, pos, tick, ltEstimatedTime, false); + dc.SetTextForeground(old_clr); + } } -wxString Control::get_label(int tick) const +static std::string short_and_splitted_time(const std::string& time) +{ + // Parse the dhms time format. + int days = 0; + int hours = 0; + int minutes = 0; + int seconds = 0; + if (time.find('d') != std::string::npos) + ::sscanf(time.c_str(), "%dd %dh %dm %ds", &days, &hours, &minutes, &seconds); + else if (time.find('h') != std::string::npos) + ::sscanf(time.c_str(), "%dh %dm %ds", &hours, &minutes, &seconds); + else if (time.find('m') != std::string::npos) + ::sscanf(time.c_str(), "%dm %ds", &minutes, &seconds); + else if (time.find('s') != std::string::npos) + ::sscanf(time.c_str(), "%ds", &seconds); + + // Format the dhm time. + char buffer[64]; + if (days > 0) + ::sprintf(buffer, "%dd%dh\n%dm", days, hours, minutes); + else if (hours > 0) { + if (hours < 10 && minutes < 10 && seconds < 10) + ::sprintf(buffer, "%dh%dm%ds", hours, minutes, seconds); + else if (hours > 10 && minutes > 10 && seconds > 10) + ::sprintf(buffer, "%dh\n%dm\n%ds", hours, minutes, seconds); + else if (minutes < 10 && seconds > 10 || minutes > 10 && seconds < 10) + ::sprintf(buffer, "%dh\n%dm%ds", hours, minutes, seconds); + else + ::sprintf(buffer, "%dh%dm\n%ds", hours, minutes, seconds); + } + else if (minutes > 0) { + if (minutes > 10 && seconds > 10) + ::sprintf(buffer, "%dm\n%ds", minutes, seconds); + else + ::sprintf(buffer, "%dm%ds", minutes, seconds); + } + else + ::sprintf(buffer, "%ds", seconds); + return buffer; +} + +wxString Control::get_label(int tick, LabelType label_type/* = ltHeightWithLayer*/) const { const int value = tick; @@ -584,23 +660,35 @@ wxString Control::get_label(int tick) const if (m_draw_mode == dmSequentialGCodeView) return wxString::Format("%d", static_cast(m_values[value])); else { - const wxString str = m_values.empty() ? + if (label_type == ltEstimatedTime) { + if (m_values.size() != m_layers_times.size()) + return "time"; + return short_and_splitted_time(get_time_dhms(m_layers_times[value])); + } + wxString str = m_values.empty() ? wxString::Format("%.*f", 2, m_label_koef * value) : wxString::Format("%.*f", 2, m_values[value]); - return format_wxstr("%1%\n(%2%)", str, m_values.empty() ? value : value + 1); + if (label_type == ltHeight) + return str; + if (label_type == ltHeightWithLayer) + return format_wxstr("%1%\n(%2%)", str, m_values.empty() ? value : value + 1); } #else const wxString str = m_values.empty() ? wxNumberFormatter::ToString(m_label_koef * value, 2, wxNumberFormatter::Style_None) : wxNumberFormatter::ToString(m_values[value], 2, wxNumberFormatter::Style_None); - return format_wxstr("%1%\n(%2%)", str, m_values.empty() ? value : value + 1); + if (label_type == ltHeight) + return str; + if (label_type == ltHeightWithLayer) + return format_wxstr("%1%\n(%2%)", str, m_values.empty() ? value : value + 1); #endif // ENABLE_GCODE_VIEWER + return wxEmptyString; } -void Control::draw_tick_text(wxDC& dc, const wxPoint& pos, int tick, bool right_side/*=true*/) const +void Control::draw_tick_text(wxDC& dc, const wxPoint& pos, int tick, LabelType label_type/* = ltHeight*/, bool right_side/*=true*/) const { wxCoord text_width, text_height; - const wxString label = get_label(tick); + const wxString label = get_label(tick, label_type); dc.GetMultiLineTextExtent(label, &text_width, &text_height); wxPoint text_pos; if (right_side) { @@ -615,9 +703,6 @@ void Control::draw_tick_text(wxDC& dc, const wxPoint& pos, int tick, bool right_ } else text_pos = wxPoint(pos.x + m_thumb_size.x + 1, pos.y - 0.5 * text_height - 1); - - // update text rectangle - m_rect_lower_thumb_text = wxRect(text_pos, wxSize(text_width, text_height)); } else { if (is_horizontal()) { @@ -626,18 +711,18 @@ void Control::draw_tick_text(wxDC& dc, const wxPoint& pos, int tick, bool right_ text_pos = wxPoint(xx, pos.y - m_thumb_size.x / 2 - text_height - 1); } else - text_pos = wxPoint(pos.x - text_width - 1 - m_thumb_size.x, pos.y - 0.5 * text_height + 1); - - // update text rectangle - m_rect_higher_thumb_text = wxRect(text_pos, wxSize(text_width, text_height)); + text_pos = wxPoint(std::max(2, pos.x - text_width - 1 - m_thumb_size.x), pos.y - 0.5 * text_height + 1); } - dc.DrawText(label, text_pos); + if (label_type == ltEstimatedTime) + dc.DrawLabel(label, wxRect(text_pos, wxSize(text_width, text_height)), wxALIGN_RIGHT); + else + dc.DrawText(label, text_pos); } void Control::draw_thumb_text(wxDC& dc, const wxPoint& pos, const SelectedSlider& selection) const { - draw_tick_text(dc, pos, selection == ssLower ? m_lower_value : m_higher_value, selection == ssLower); + draw_tick_text(dc, pos, selection == ssLower ? m_lower_value : m_higher_value, ltHeightWithLayer, selection == ssLower); } void Control::draw_thumb_item(wxDC& dc, const wxPoint& pos, const SelectedSlider& selection) @@ -715,6 +800,15 @@ void Control::draw_thumbs(wxDC& dc, const wxCoord& lower_pos, const wxCoord& hig draw_thumb_text(dc, pos_l, ssLower); } +void Control::draw_ticks_pair(wxDC& dc, wxCoord pos, wxCoord mid, int tick_len) +{ + int mid_space = 9; + is_horizontal() ? dc.DrawLine(pos, mid - (mid_space + tick_len), pos, mid - mid_space) : + dc.DrawLine(mid - (mid_space + tick_len), pos, mid - mid_space, pos); + is_horizontal() ? dc.DrawLine(pos, mid + (mid_space + tick_len), pos, mid + mid_space) : + dc.DrawLine(mid + (mid_space + tick_len), pos, mid + mid_space, pos); +}; + void Control::draw_ticks(wxDC& dc) { if (m_draw_mode == dmSlaPrint) @@ -726,11 +820,7 @@ void Control::draw_ticks(wxDC& dc) const wxCoord mid = is_horizontal() ? 0.5*height : 0.5*width; for (auto tick : m_ticks.ticks) { const wxCoord pos = get_position_from_value(tick.tick); - - is_horizontal() ? dc.DrawLine(pos, mid-14, pos, mid-9) : - dc.DrawLine(mid - 14, pos/* - 1*/, mid - 9, pos/* - 1*/); - is_horizontal() ? dc.DrawLine(pos, mid+14, pos, mid+9) : - dc.DrawLine(mid + 14, pos/* - 1*/, mid + 9, pos/* - 1*/); + draw_ticks_pair(dc, pos, mid, 7); // if current tick if focused, we should to use a specific "focused" icon bool focused_tick = m_moving_pos != wxDefaultPosition && tick.tick == get_tick_near_point(m_moving_pos); @@ -866,6 +956,118 @@ void Control::draw_colored_band(wxDC& dc) } } +void Control::Ruler::update(wxWindow* win, const std::vector& values, double scroll_step) +{ + int DPI = GUI::get_dpi_for_window(win); + int pixels_per_sm = lround((double)(DPI) * 5.0/25.4); + + int pow = -2; + int step = 0; + auto end_it = count == 1 ? values.end() : values.begin() + lround(values.size() / count); + + while (pow < 3) { + int tick = 0; + for (int istep : {1, 2, 5}) { + double val = (double)istep * std::pow(10,pow); + auto val_it = std::lower_bound(values.begin(), end_it, val - epsilon()); + + if (val_it == values.end()) + break; + int tick = val_it - values.begin(); + + if (lround(tick * scroll_step) > pixels_per_sm) { + step = istep; + + // find next tick with istep + val *= 2; + val_it = std::lower_bound(values.begin(), end_it, val - epsilon()); + // count of short ticks between ticks + int short_ticks_cnt = val_it == values.end() ? tick : val_it - values.begin() - tick; + // there couldn't be more then 10 short ticks between thicks + short_step = 0.1 * short_ticks_cnt; + break; + } + } + if (step > 0) + break; + pow++; + } + + long_step = step == 0 ? -1.0 : (double)step* std::pow(10, pow); +} + +void Control::draw_ruler(wxDC& dc) +{ + m_ruler.update(this->GetParent(), m_values, get_scroll_step()); + if (!m_ruler.is_ok()) + return; + + int height, width; + get_size(&width, &height); + const wxCoord mid = is_horizontal() ? 0.5 * height : 0.5 * width; + + auto draw_short_ticks = [this, mid](wxDC& dc, double& current_tick, int max_tick) { + while (current_tick < max_tick) { + wxCoord pos = get_position_from_value(lround(current_tick)); + draw_ticks_pair(dc, pos, mid, 2); + current_tick += m_ruler.short_step; + if (current_tick > m_max_value) + break; + } + }; + + dc.SetPen(LIGHT_GREY_PEN); + wxColour old_clr = dc.GetTextForeground(); + dc.SetTextForeground(LIGHT_GREY_PEN.GetColour()); + + double short_tick; + int tick = 0; + double value = 0.0; + int sequence = 0; + + 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++) + if (m_values[tick] < value) + break; + // short ticks from the last tick to the end of current sequence + draw_short_ticks(dc, short_tick, tick); + sequence++; + } + short_tick = tick; + + for (tick; tick < m_values.size(); tick++) { + if (m_values[tick] == value) + break; + if (m_values[tick] > value) { + if (tick > 0) + tick--; + break; + } + } + if (tick > m_max_value) + break; + + wxCoord pos = get_position_from_value(tick); + draw_ticks_pair(dc, pos, mid, 5); + draw_tick_text(dc, wxPoint(mid, pos), tick); + + draw_short_ticks(dc, short_tick, tick); + + if (value == m_values.back() && sequence < m_ruler.count) { + value = 0.0; + sequence++; + tick++; + } + } + // short ticks from the last tick to the end + draw_short_ticks(dc, short_tick, m_max_value); + + dc.SetTextForeground(old_clr); +} + void Control::draw_one_layer_icon(wxDC& dc) { #if ENABLE_GCODE_VIEWER @@ -910,6 +1112,10 @@ void Control::draw_revert_icon(wxDC& dc) void Control::draw_cog_icon(wxDC& dc) { +#if ENABLE_GCODE_VIEWER + if (m_draw_mode == dmSequentialGCodeView) + return; +#endif // ENABLE_GCODE_VIEWER int width, height; get_size(&width, &height); @@ -956,10 +1162,17 @@ int Control::get_value_from_position(const wxCoord x, const wxCoord y) return int(m_min_value + double(height - SLIDER_MARGIN - y) / step + 0.5); } +bool Control::is_lower_thumb_editable() +{ + if (m_draw_mode == dmSequentialGCodeView) + return Slic3r::GUI::get_app_config()->get("seq_top_layer_only") == "0"; + return true; +} + bool Control::detect_selected_slider(const wxPoint& pt) { if (is_point_in_rect(pt, m_rect_lower_thumb)) - m_selection = m_lower_editable ? ssLower : ssUndef; + m_selection = is_lower_thumb_editable() ? ssLower : ssUndef; else if(is_point_in_rect(pt, m_rect_higher_thumb)) m_selection = ssHigher; else @@ -1072,9 +1285,9 @@ wxString Control::get_tooltip(int tick/*=-1*/) else #endif // ENABLE_GCODE_VIEWER return m_mode == MultiAsSingle ? - GUI::from_u8((boost::format(_u8L("Jump to height %s or " - "Set extruder sequence for the entire print")) % " (Shift + G)\n").str()) : - _L("Jump to height") + " (Shift + G)"; + GUI::from_u8((boost::format(_u8L("Jump to height %s Set ruler mode\n or " + "Set extruder sequence for the entire print")) % " (Shift + G)\n").str()) : + GUI::from_u8((boost::format(_u8L("Jump to height %s or Set ruler mode")) % " (Shift + G)\n").str()); #if ENABLE_GCODE_VIEWER } #endif // ENABLE_GCODE_VIEWER @@ -1328,14 +1541,7 @@ void Control::OnLeftUp(wxMouseEvent& event) add_current_tick(); break; case maCogIconClick : - if (m_mode == MultiAsSingle && m_draw_mode == dmRegular) - show_cog_icon_context_menu(); - else -#if ENABLE_GCODE_VIEWER - jump_to_value(); -#else - jump_to_print_z(); -#endif // ENABLE_GCODE_VIEWER + show_cog_icon_context_menu(); break; case maOneLayerIconClick: switch_one_layer_mode(); @@ -1415,7 +1621,7 @@ void Control::OnWheel(wxMouseEvent& event) ssLower : ssHigher; } - if (m_selection == ssLower && !m_lower_editable) + if (m_selection == ssLower && !is_lower_thumb_editable()) m_selection = ssUndef; #if ENABLE_GCODE_VIEWER @@ -1468,7 +1674,7 @@ void Control::OnKeyDown(wxKeyEvent &event) else if (key == WXK_UP || key == WXK_DOWN) { if (key == WXK_UP) m_selection = ssHigher; - else if (key == WXK_DOWN && m_lower_editable) + else if (key == WXK_DOWN && is_lower_thumb_editable()) m_selection = ssLower; Refresh(); } @@ -1483,7 +1689,7 @@ void Control::OnKeyDown(wxKeyEvent &event) if (key == WXK_LEFT || key == WXK_RIGHT) { if (key == WXK_LEFT) m_selection = ssHigher; - else if (key == WXK_RIGHT && m_lower_editable) + else if (key == WXK_RIGHT && is_lower_thumb_editable()) m_selection = ssLower; Refresh(); } @@ -1725,8 +1931,27 @@ void Control::show_cog_icon_context_menu() [this](wxCommandEvent&) { jump_to_print_z(); }, "", &menu); #endif // ENABLE_GCODE_VIEWER - append_menu_item(&menu, wxID_ANY, _L("Set extruder sequence for the entire print"), "", - [this](wxCommandEvent&) { edit_extruder_sequence(); }, "", &menu); + wxMenu* ruler_mode_menu = new wxMenu(); + if (ruler_mode_menu) { + append_menu_check_item(ruler_mode_menu, wxID_ANY, _L("None"), _L("Supprese show the ruler"), + [this](wxCommandEvent&) { if (m_extra_style != 0) m_extra_style = 0; }, ruler_mode_menu, + []() { return true; }, [this]() { return m_extra_style == 0; }, GUI::wxGetApp().plater()); + + append_menu_check_item(ruler_mode_menu, wxID_ANY, _L("Show object height"), _L("Show object height on the ruler"), + [this](wxCommandEvent&) { m_extra_style & wxSL_AUTOTICKS ? m_extra_style &= wxSL_AUTOTICKS : m_extra_style |= wxSL_AUTOTICKS; }, ruler_mode_menu, + []() { return true; }, [this]() { return m_extra_style & wxSL_AUTOTICKS; }, GUI::wxGetApp().plater()); + + append_menu_check_item(ruler_mode_menu, wxID_ANY, _L("Show estimated print time"), _L("Show estimated print time on the ruler"), + [this](wxCommandEvent&) { m_extra_style & wxSL_VALUE_LABEL ? m_extra_style &= wxSL_VALUE_LABEL : m_extra_style |= wxSL_VALUE_LABEL; }, ruler_mode_menu, + []() { return true; }, [this]() { return m_extra_style & wxSL_VALUE_LABEL; }, GUI::wxGetApp().plater()); + + append_submenu(&menu, ruler_mode_menu, wxID_ANY, _L("Ruler mode"), _L("Set ruler mode"), "", + [this]() { return true; }, this); + } + + if (m_mode == MultiAsSingle && m_draw_mode == dmRegular) + append_menu_item(&menu, wxID_ANY, _L("Set extruder sequence for the entire print"), "", + [this](wxCommandEvent&) { edit_extruder_sequence(); }, "", &menu); GUI::wxGetApp().plater()->PopupMenu(&menu); } diff --git a/src/slic3r/GUI/DoubleSlider.hpp b/src/slic3r/GUI/DoubleSlider.hpp index 4711f08322..57fa5d0f10 100644 --- a/src/slic3r/GUI/DoubleSlider.hpp +++ b/src/slic3r/GUI/DoubleSlider.hpp @@ -84,6 +84,13 @@ enum DrawMode #endif // ENABLE_GCODE_VIEWER }; +enum LabelType +{ + ltHeightWithLayer, + ltHeight, + ltEstimatedTime, +}; + struct TickCode { bool operator<(const TickCode& other) const { return other.tick > this->tick; } @@ -212,11 +219,13 @@ public: void SetMaxValue(const int max_value); void SetKoefForLabels(const double koef) { m_label_koef = koef; } - void SetSliderValues(const std::vector& values) { m_values = values; } + void SetSliderValues(const std::vector& values); void ChangeOneLayerLock(); - Info GetTicksValues() const; - void SetTicksValues(const Info &custom_gcode_per_print_z); + Info GetTicksValues() const; + void SetTicksValues(const Info &custom_gcode_per_print_z); + void SetLayersTimes(const std::vector& layers_times); + void SetLayersTimes(const std::vector& layers_times); void SetDrawMode(bool is_sla_print, bool is_sequential_print); #if ENABLE_GCODE_VIEWER @@ -228,7 +237,6 @@ public: void SetModeAndOnlyExtruder(const bool is_one_extruder_printed_model, const int only_extruder); void SetExtruderColors(const std::vector& extruder_colors); - void set_lower_editable(bool editable) { m_lower_editable = editable; } void set_render_as_disabled(bool value) { m_render_as_disabled = value; } bool is_rendering_as_disabled() const { return m_render_as_disabled; } @@ -282,18 +290,21 @@ protected: void draw_scroll_line(wxDC& dc, const int lower_pos, const int higher_pos); void draw_thumb(wxDC& dc, const wxCoord& pos_coord, const SelectedSlider& selection); void draw_thumbs(wxDC& dc, const wxCoord& lower_pos, const wxCoord& higher_pos); + void draw_ticks_pair(wxDC& dc, wxCoord pos, wxCoord mid, int tick_len); void draw_ticks(wxDC& dc); void draw_colored_band(wxDC& dc); + void draw_ruler(wxDC& dc); void draw_one_layer_icon(wxDC& dc); void draw_revert_icon(wxDC& dc); void draw_cog_icon(wxDC &dc); void draw_thumb_item(wxDC& dc, const wxPoint& pos, const SelectedSlider& selection); void draw_info_line_with_icon(wxDC& dc, const wxPoint& pos, SelectedSlider selection); void draw_tick_on_mouse_position(wxDC &dc); - void draw_tick_text(wxDC& dc, const wxPoint& pos, int tick, bool right_side = true) const; + void draw_tick_text(wxDC& dc, const wxPoint& pos, int tick, LabelType label_type = ltHeight, bool right_side = true) const; void draw_thumb_text(wxDC& dc, const wxPoint& pos, const SelectedSlider& selection) const; void update_thumb_rect(const wxCoord begin_x, const wxCoord begin_y, const SelectedSlider& selection); + bool is_lower_thumb_editable(); bool detect_selected_slider(const wxPoint& pt); void correct_lower_value(); void correct_higher_value(); @@ -306,7 +317,7 @@ private: int get_tick_near_point(const wxPoint& pt); double get_scroll_step(); - wxString get_label(int tick) const; + wxString get_label(int tick, LabelType label_type = ltHeightWithLayer) const; void get_lower_and_higher_position(int& lower_pos, int& higher_pos); int get_value_from_position(const wxCoord x, const wxCoord y); int get_value_from_position(const wxPoint pos) { return get_value_from_position(pos.x, pos.y); } @@ -340,7 +351,6 @@ private: int m_lower_value; int m_higher_value; - bool m_lower_editable{ true }; bool m_render_as_disabled{ false }; ScalableBitmap m_bmp_thumb_higher; @@ -388,10 +398,12 @@ private: int m_revert_icon_dim; int m_cog_icon_dim; long m_style; + long m_extra_style; float m_label_koef = 1.0; std::vector m_values; TickCodeInfo m_ticks; + std::vector m_layers_times; std::vector m_extruder_colors; @@ -408,6 +420,15 @@ private: std::vector m_line_pens; std::vector m_segm_pens; + + struct Ruler { + double long_step; + double short_step; + int count { 1 }; // > 1 for sequential print + + void update(wxWindow* win, const std::vector& values, double scroll_step); + bool is_ok() { return long_step > 0 && short_step > 0; } + } m_ruler; }; } // DoubleSlider; diff --git a/src/slic3r/GUI/ExtruderSequenceDialog.cpp b/src/slic3r/GUI/ExtruderSequenceDialog.cpp index a850ac1928..d009648c22 100644 --- a/src/slic3r/GUI/ExtruderSequenceDialog.cpp +++ b/src/slic3r/GUI/ExtruderSequenceDialog.cpp @@ -20,7 +20,7 @@ namespace Slic3r { namespace GUI { ExtruderSequenceDialog::ExtruderSequenceDialog(const DoubleSlider::ExtrudersSequence& sequence) - : DPIDialog(NULL, wxID_ANY, wxString(SLIC3R_APP_NAME) + " - " + _(L("Set extruder sequence")), + : DPIDialog((wxWindow*)wxGetApp().mainframe, wxID_ANY, wxString(SLIC3R_APP_NAME) + " - " + _(L("Set extruder sequence")), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER), m_sequence(sequence) { @@ -36,7 +36,7 @@ ExtruderSequenceDialog::ExtruderSequenceDialog(const DoubleSlider::ExtrudersSequ auto option_sizer = new wxBoxSizer(wxVERTICAL); - auto intervals_box = new wxStaticBox(this, wxID_ANY, _(L("Set extruder change for every"))+ " : "); + auto intervals_box = new wxStaticBox(this, wxID_ANY, _(L("Set extruder change for every"))+ ": "); auto intervals_box_sizer = new wxStaticBoxSizer(intervals_box, wxVERTICAL); m_intervals_grid_sizer = new wxFlexGridSizer(3, 5, em); @@ -114,26 +114,26 @@ ExtruderSequenceDialog::ExtruderSequenceDialog(const DoubleSlider::ExtrudersSequ rb_by_mm->SetValue(true); }); - m_interval_by_mm->Bind(wxEVT_KILL_FOCUS, [this, change_value](wxFocusEvent& event) + m_interval_by_mm->Bind(wxEVT_KILL_FOCUS, [change_value](wxFocusEvent& event) { change_value(); event.Skip(); }); - m_interval_by_mm->Bind(wxEVT_TEXT_ENTER, [this, change_value](wxEvent&) + m_interval_by_mm->Bind(wxEVT_TEXT_ENTER, [change_value](wxEvent&) { change_value(); }); m_intervals_grid_sizer->Add(rb_by_mm, 0, wxALIGN_CENTER_VERTICAL); - m_intervals_grid_sizer->Add(m_interval_by_mm,0, wxALIGN_CENTER_VERTICAL); + m_intervals_grid_sizer->Add(m_interval_by_mm, 0, wxALIGN_CENTER_VERTICAL); m_intervals_grid_sizer->Add(st_by_mm,0, wxALIGN_CENTER_VERTICAL); intervals_box_sizer->Add(m_intervals_grid_sizer, 0, wxLEFT, em); option_sizer->Add(intervals_box_sizer, 0, wxEXPAND); - auto extruders_box = new wxStaticBox(this, wxID_ANY, _(L("Set extruder(tool) sequence"))+ " : "); + auto extruders_box = new wxStaticBox(this, wxID_ANY, _(L("Set extruder(tool) sequence"))+ ": "); auto extruders_box_sizer = new wxStaticBoxSizer(extruders_box, wxVERTICAL); m_extruders_grid_sizer = new wxFlexGridSizer(3, 5, em); diff --git a/src/slic3r/GUI/Field.cpp b/src/slic3r/GUI/Field.cpp index 95fd13577b..a92a988444 100644 --- a/src/slic3r/GUI/Field.cpp +++ b/src/slic3r/GUI/Field.cpp @@ -13,6 +13,7 @@ #include #include #include +#include "OG_CustomCtrl.hpp" #ifdef __WXOSX__ #define wxOSX true @@ -63,18 +64,16 @@ Field::~Field() m_back_to_initial_value = nullptr; if (m_back_to_sys_value) m_back_to_sys_value = nullptr; + if (getWindow()) { + wxWindow* win = getWindow(); + win->Destroy(); + win = nullptr; + } } void Field::PostInitialize() { auto color = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW); - m_Undo_btn = new RevertButton(m_parent, "bullet_white.png"); - m_Undo_to_sys_btn = new RevertButton(m_parent, "bullet_white.png"); - - m_Undo_btn->Bind(wxEVT_BUTTON, ([this](wxCommandEvent) { on_back_to_initial_value(); })); - m_Undo_to_sys_btn->Bind(wxEVT_BUTTON, ([this](wxCommandEvent) { on_back_to_sys_value(); })); - - m_blinking_bmp = new BlinkingBitmap(m_parent); switch (m_opt.type) { @@ -94,6 +93,7 @@ void Field::PostInitialize() // initialize m_unit_value m_em_unit = em_unit(m_parent); + parent_is_custom_ctrl = dynamic_cast(m_parent) != nullptr; BUILD(); @@ -216,10 +216,7 @@ void Field::get_value_by_opt_type(wxString& str, const bool check_value/* = true break; } - wxString label = m_Label->GetLabel(); - if (label.Last() == '\n') label.RemoveLast(); - while (label.Last() == ' ') label.RemoveLast(); - if (label.Last() == ':') label.RemoveLast(); + wxString label = m_opt.full_label.empty() ? _(m_opt.label) : _(m_opt.full_label); show_error(m_parent, from_u8((boost::format(_utf8(L("%s doesn't support percentage"))) % label).str())); set_value(double_to_string(m_opt.min), true); m_value = double(m_opt.min); @@ -305,28 +302,14 @@ void Field::get_value_by_opt_type(wxString& str, const bool check_value/* = true } } -void Field::msw_rescale(bool rescale_sidetext) +void Field::msw_rescale() { - m_Undo_to_sys_btn->msw_rescale(); - m_Undo_btn->msw_rescale(); - m_blinking_bmp->msw_rescale(); - // update em_unit value m_em_unit = em_unit(m_parent); - - // update sidetext if it is needed - if (m_side_text && rescale_sidetext) - { - auto size = wxSize(def_width_thinner() * m_em_unit, -1); - m_side_text->SetSize(size); - m_side_text->SetMinSize(size); - } } void Field::sys_color_changed() { - m_Undo_to_sys_btn->msw_rescale(); - m_Undo_btn->msw_rescale(); } template @@ -387,6 +370,8 @@ void TextCtrl::BUILD() { const long style = m_opt.multiline ? wxTE_MULTILINE : wxTE_PROCESS_ENTER/*0*/; auto temp = new wxTextCtrl(m_parent, wxID_ANY, text_value, wxDefaultPosition, size, style); + if (parent_is_custom_ctrl && m_opt.height < 0) + opt_height = (double)temp->GetSize().GetHeight()/m_em_unit; temp->SetFont(m_opt.is_code ? Slic3r::GUI::wxGetApp().code_font(): Slic3r::GUI::wxGetApp().normal_font()); @@ -550,17 +535,24 @@ boost::any& TextCtrl::get_value() return m_value; } -void TextCtrl::msw_rescale(bool rescale_sidetext/* = false*/) +void TextCtrl::msw_rescale() { - Field::msw_rescale(rescale_sidetext); + Field::msw_rescale(); auto size = wxSize(def_width() * m_em_unit, wxDefaultCoord); - if (m_opt.height >= 0) size.SetHeight(m_opt.height*m_em_unit); + + if (m_opt.height >= 0) + size.SetHeight(m_opt.height*m_em_unit); + else if (parent_is_custom_ctrl && opt_height > 0) + size.SetHeight(lround(opt_height*m_em_unit)); if (m_opt.width >= 0) size.SetWidth(m_opt.width*m_em_unit); if (size != wxDefaultSize) { wxTextCtrl* field = dynamic_cast(window); - field->SetMinSize(size); + if (parent_is_custom_ctrl) + field->SetSize(size); + else + field->SetMinSize(size); } } @@ -650,7 +642,7 @@ boost::any& CheckBox::get_value() return m_value; } -void CheckBox::msw_rescale(bool rescale_sidetext/* = false*/) +void CheckBox::msw_rescale() { Field::msw_rescale(); @@ -701,9 +693,17 @@ void SpinCtrl::BUILD() { auto temp = new wxSpinCtrl(m_parent, wxID_ANY, text_value, wxDefaultPosition, size, 0|wxTE_PROCESS_ENTER, min_val, max_val, default_value); +#ifdef __WXGTK3__ + wxSize best_sz = temp->GetBestSize(); + if (best_sz.x > size.x) + temp->SetSize(wxSize(size.x + 2 * best_sz.y, best_sz.y)); +#endif //__WXGTK3__ temp->SetFont(Slic3r::GUI::wxGetApp().normal_font()); if (!wxOSX) temp->SetBackgroundStyle(wxBG_STYLE_PAINT); + if (m_opt.height < 0 && parent_is_custom_ctrl) + opt_height = (double)temp->GetSize().GetHeight() / m_em_unit; + // XXX: On OS X the wxSpinCtrl widget is made up of two subwidgets, unfortunatelly // the kill focus event is not propagated to the encompassing widget, // so we need to bind it on the inner text widget instead. (Ugh.) @@ -785,23 +785,32 @@ void SpinCtrl::propagate_value() suppress_propagation = false; } -void SpinCtrl::msw_rescale(bool rescale_sidetext/* = false*/) +void SpinCtrl::msw_rescale() { - Field::msw_rescale(rescale_sidetext); + Field::msw_rescale(); wxSpinCtrl* field = dynamic_cast(window); - field->SetMinSize(wxSize(def_width() * m_em_unit, int(1.9f*field->GetFont().GetPixelSize().y))); + if (parent_is_custom_ctrl) + field->SetSize(wxSize(def_width() * m_em_unit, lround(opt_height * m_em_unit))); + else + field->SetMinSize(wxSize(def_width() * m_em_unit, int(1.9f*field->GetFont().GetPixelSize().y))); } +#ifdef __WXOSX__ +using choice_ctrl = wxBitmapComboBox; +#else +using choice_ctrl = wxComboBox; +#endif // __WXOSX__ + void Choice::BUILD() { wxSize size(def_width_wider() * m_em_unit, wxDefaultCoord); if (m_opt.height >= 0) size.SetHeight(m_opt.height*m_em_unit); if (m_opt.width >= 0) size.SetWidth(m_opt.width*m_em_unit); - wxBitmapComboBox* temp; + choice_ctrl* temp; if (!m_opt.gui_type.empty() && m_opt.gui_type.compare("select_open") != 0) { m_is_editable = true; - temp = new wxBitmapComboBox(m_parent, wxID_ANY, wxString(""), wxDefaultPosition, size); + temp = new choice_ctrl(m_parent, wxID_ANY, wxString(""), wxDefaultPosition, size); } else { #ifdef __WXOSX__ @@ -809,11 +818,11 @@ void Choice::BUILD() { * so ToolTip doesn't shown. * Next workaround helps to solve this problem */ - temp = new wxBitmapComboBox(); + temp = new choice_ctrl(); temp->SetTextCtrlStyle(wxTE_READONLY); temp->Create(m_parent, wxID_ANY, wxString(""), wxDefaultPosition, size, 0, nullptr); #else - temp = new wxBitmapComboBox(m_parent, wxID_ANY, wxString(""), wxDefaultPosition, size, 0, nullptr, wxCB_READONLY); + temp = new choice_ctrl(m_parent, wxID_ANY, wxString(""), wxDefaultPosition, size, 0, nullptr, wxCB_READONLY); #endif //__WXOSX__ } @@ -836,7 +845,8 @@ void Choice::BUILD() { set_selection(); } -#ifndef __WXGTK__ +#ifdef __WXOSX__ +//#ifndef __WXGTK__ /* Workaround for a correct rendering of the control without Bitmap (under MSW and OSX): * * 1. We should create small Bitmap to fill Bitmaps RefData, @@ -857,13 +867,13 @@ void Choice::BUILD() { if (m_is_editable) { temp->Bind(wxEVT_KILL_FOCUS, ([this](wxEvent& e) { e.Skip(); - if (m_opt.type == coStrings) { + if (m_opt.type == coStrings || m_opt.type == coFloatOrPercent) { on_change_field(); return; } double old_val = !m_value.empty() ? boost::any_cast(m_value) : -99999; - if (is_defined_input_value(window, m_opt.type)) { + if (is_defined_input_value(window, m_opt.type)) { if (fabs(old_val - boost::any_cast(get_value())) <= 0.0001) return; else @@ -886,61 +896,44 @@ void Choice::set_selection() wxString text_value = wxString(""); - wxBitmapComboBox* field = dynamic_cast(window); + choice_ctrl* field = dynamic_cast(window); switch (m_opt.type) { - case coFloat: - case coPercent: { - double val = m_opt.default_value->getFloat(); - text_value = val - int(val) == 0 ? wxString::Format(_T("%i"), int(val)) : wxNumberFormatter::ToString(val, 1); - size_t idx = 0; - for (auto el : m_opt.enum_values) - { - if (el == text_value) - break; - ++idx; - } -// if (m_opt.type == coPercent) text_value += "%"; - idx == m_opt.enum_values.size() ? - field->SetValue(text_value) : - field->SetSelection(idx); - break; - } case coEnum:{ int id_value = m_opt.get_default_value>()->value; //!! field->SetSelection(id_value); break; } + case coFloat: + case coPercent: { + double val = m_opt.default_value->getFloat(); + text_value = val - int(val) == 0 ? wxString::Format(_T("%i"), int(val)) : wxNumberFormatter::ToString(val, 1); + break; + } case coInt:{ - int val = m_opt.default_value->getInt(); //!! - text_value = wxString::Format(_T("%i"), int(val)); - size_t idx = 0; - for (auto el : m_opt.enum_values) - { - if (el == text_value) - break; - ++idx; - } - idx == m_opt.enum_values.size() ? - field->SetValue(text_value) : - field->SetSelection(idx); + text_value = wxString::Format(_T("%i"), int(m_opt.default_value->getInt())); break; } case coStrings:{ text_value = m_opt.get_default_value()->get_at(m_opt_idx); + break; + } + case coFloatOrPercent: { + text_value = double_to_string(m_opt.default_value->getFloat()); + if (m_opt.get_default_value()->percent) + text_value += "%"; + break; + } + default: break; + } - size_t idx = 0; - for (auto el : m_opt.enum_values) - { + if (!text_value.IsEmpty()) { + int idx = 0; + for (auto el : m_opt.enum_values) { if (el == text_value) break; ++idx; } - idx == m_opt.enum_values.size() ? - field->SetValue(text_value) : - field->SetSelection(idx); - break; - } - default: break; + idx == m_opt.enum_values.size() ? field->SetValue(text_value) : field->SetSelection(idx); } } @@ -956,7 +949,7 @@ void Choice::set_value(const std::string& value, bool change_event) //! Redunda ++idx; } - wxBitmapComboBox* field = dynamic_cast(window); + choice_ctrl* field = dynamic_cast(window); idx == m_opt.enum_values.size() ? field->SetValue(value) : field->SetSelection(idx); @@ -968,12 +961,13 @@ void Choice::set_value(const boost::any& value, bool change_event) { m_disable_change_event = !change_event; - wxBitmapComboBox* field = dynamic_cast(window); + choice_ctrl* field = dynamic_cast(window); switch (m_opt.type) { case coInt: case coFloat: case coPercent: + case coFloatOrPercent: case coString: case coStrings: { wxString text_value; @@ -1044,12 +1038,32 @@ void Choice::set_values(const std::vector& values) // # it looks that Clear() also clears the text field in recent wxWidgets versions, // # but we want to preserve it + auto ww = dynamic_cast(window); + auto value = ww->GetValue(); + ww->Clear(); + ww->Append(""); + for (const auto &el : values) + ww->Append(wxString(el)); + ww->SetValue(value); + + m_disable_change_event = false; +} + +void Choice::set_values(const wxArrayString &values) +{ + if (values.empty()) + return; + + m_disable_change_event = true; + + // # it looks that Clear() also clears the text field in recent wxWidgets versions, + // # but we want to preserve it auto ww = dynamic_cast(window); auto value = ww->GetValue(); ww->Clear(); ww->Append(""); - for (auto el : values) - ww->Append(wxString(el)); + for (const auto &el : values) + ww->Append(el); ww->SetValue(value); m_disable_change_event = false; @@ -1057,7 +1071,7 @@ void Choice::set_values(const std::vector& values) boost::any& Choice::get_value() { - wxBitmapComboBox* field = dynamic_cast(window); + choice_ctrl* field = dynamic_cast(window); wxString ret_str = field->GetValue(); @@ -1107,7 +1121,9 @@ boost::any& Choice::get_value() (ret_str != m_opt.enum_values[ret_enum] && ret_str != _(m_opt.enum_labels[ret_enum]))) // modifies ret_string! get_value_by_opt_type(ret_str); - else + else if (m_opt.type == coFloatOrPercent) + m_value = m_opt.enum_values[ret_enum]; + else m_value = atof(m_opt.enum_values[ret_enum].c_str()); } else @@ -1117,16 +1133,20 @@ boost::any& Choice::get_value() return m_value; } -void Choice::msw_rescale(bool rescale_sidetext/* = false*/) +void Choice::enable() { dynamic_cast(window)->Enable(); }; +void Choice::disable() { dynamic_cast(window)->Disable(); }; + +void Choice::msw_rescale() { Field::msw_rescale(); - wxBitmapComboBox* field = dynamic_cast(window); + choice_ctrl* field = dynamic_cast(window); +#ifdef __WXOSX__ const wxString selection = field->GetValue();// field->GetString(index); /* To correct scaling (set new controll size) of a wxBitmapCombobox * we need to refill control with new bitmaps. So, in our case : - * 1. clear conrol + * 1. clear control * 2. add content * 3. add scaled "empty" bitmap to the at least one item */ @@ -1159,6 +1179,16 @@ void Choice::msw_rescale(bool rescale_sidetext/* = false*/) idx == m_opt.enum_values.size() ? field->SetValue(selection) : field->SetSelection(idx); +#else + auto size = wxSize(def_width_wider() * m_em_unit, wxDefaultCoord); + if (m_opt.height >= 0) size.SetHeight(m_opt.height * m_em_unit); + if (m_opt.width >= 0) size.SetWidth(m_opt.width * m_em_unit); + + if (parent_is_custom_ctrl) + field->SetSize(size); + else + field->SetMinSize(size); +#endif } void ColourPicker::BUILD() @@ -1175,6 +1205,8 @@ void ColourPicker::BUILD() } auto temp = new wxColourPickerCtrl(m_parent, wxID_ANY, clr, wxDefaultPosition, size); + if (parent_is_custom_ctrl && m_opt.height < 0) + opt_height = (double)temp->GetSize().GetHeight() / m_em_unit; temp->SetFont(Slic3r::GUI::wxGetApp().normal_font()); if (!wxOSX) temp->SetBackgroundStyle(wxBG_STYLE_PAINT); @@ -1231,15 +1263,21 @@ boost::any& ColourPicker::get_value() return m_value; } -void ColourPicker::msw_rescale(bool rescale_sidetext/* = false*/) +void ColourPicker::msw_rescale() { Field::msw_rescale(); wxColourPickerCtrl* field = dynamic_cast(window); auto size = wxSize(def_width() * m_em_unit, wxDefaultCoord); - if (m_opt.height >= 0) size.SetHeight(m_opt.height * m_em_unit); + if (m_opt.height >= 0) + size.SetHeight(m_opt.height * m_em_unit); + else if (parent_is_custom_ctrl && opt_height > 0) + size.SetHeight(lround(opt_height * m_em_unit)); if (m_opt.width >= 0) size.SetWidth(m_opt.width * m_em_unit); - field->SetMinSize(size); + if (parent_is_custom_ctrl) + field->SetSize(size); + else + field->SetMinSize(size); if (field->GetColour() == wxTransparentColour) set_undef_value(field); @@ -1259,6 +1297,9 @@ void PointCtrl::BUILD() x_textctrl = new wxTextCtrl(m_parent, wxID_ANY, X, wxDefaultPosition, field_size, wxTE_PROCESS_ENTER); y_textctrl = new wxTextCtrl(m_parent, wxID_ANY, Y, wxDefaultPosition, field_size, wxTE_PROCESS_ENTER); + if (parent_is_custom_ctrl && m_opt.height < 0) + opt_height = (double)x_textctrl->GetSize().GetHeight() / m_em_unit; + x_textctrl->SetFont(Slic3r::GUI::wxGetApp().normal_font()); x_textctrl->SetBackgroundStyle(wxBG_STYLE_PAINT); y_textctrl->SetFont(Slic3r::GUI::wxGetApp().normal_font()); @@ -1276,9 +1317,6 @@ void PointCtrl::BUILD() temp->Add(static_text_y, 0, wxALIGN_CENTER_VERTICAL, 0); temp->Add(y_textctrl); -// x_textctrl->Bind(wxEVT_TEXT, ([this](wxCommandEvent e) { on_change_field(); }), x_textctrl->GetId()); -// y_textctrl->Bind(wxEVT_TEXT, ([this](wxCommandEvent e) { on_change_field(); }), y_textctrl->GetId()); - x_textctrl->Bind(wxEVT_TEXT_ENTER, ([this](wxCommandEvent e) { propagate_value(x_textctrl); }), x_textctrl->GetId()); y_textctrl->Bind(wxEVT_TEXT_ENTER, ([this](wxCommandEvent e) { propagate_value(y_textctrl); }), y_textctrl->GetId()); @@ -1292,14 +1330,21 @@ void PointCtrl::BUILD() y_textctrl->SetToolTip(get_tooltip_text(X+", "+Y)); } -void PointCtrl::msw_rescale(bool rescale_sidetext/* = false*/) +void PointCtrl::msw_rescale() { Field::msw_rescale(); - const wxSize field_size(4 * m_em_unit, -1); + wxSize field_size(4 * m_em_unit, -1); - x_textctrl->SetMinSize(field_size); - y_textctrl->SetMinSize(field_size); + if (parent_is_custom_ctrl) { + field_size.SetHeight(lround(opt_height * m_em_unit)); + x_textctrl->SetSize(field_size); + y_textctrl->SetSize(field_size); + } + else { + x_textctrl->SetMinSize(field_size); + y_textctrl->SetMinSize(field_size); + } } bool PointCtrl::value_was_changed(wxTextCtrl* win) @@ -1391,7 +1436,7 @@ void StaticText::BUILD() temp->SetToolTip(get_tooltip_text(legend)); } -void StaticText::msw_rescale(bool rescale_sidetext/* = false*/) +void StaticText::msw_rescale() { Field::msw_rescale(); diff --git a/src/slic3r/GUI/Field.hpp b/src/slic3r/GUI/Field.hpp index d919304a92..b4bcf9f33b 100644 --- a/src/slic3r/GUI/Field.hpp +++ b/src/slic3r/GUI/Field.hpp @@ -87,6 +87,8 @@ protected: void on_set_focus(wxEvent& event); /// Call the attached on_change method. void on_change_field(); + +public: /// Call the attached m_back_to_initial_value method. void on_back_to_initial_value(); /// Call the attached m_back_to_sys_value method. @@ -119,6 +121,9 @@ public: const t_config_option_key m_opt_id;//! {""}; int m_opt_idx = 0; + double opt_height{ 0.0 }; + bool parent_is_custom_ctrl{ false }; + /// Sets a value for this control. /// subclasses should overload with a specific version /// Postcondition: Method does not fire the on_change event. @@ -140,9 +145,6 @@ public: void field_changed() { on_change_field(); } - // set icon to "UndoToSystemValue" button according to an inheritance of preset -// void set_nonsys_btn_icon(const wxBitmap& icon); - Field(const ConfigOptionDef& opt, const t_config_option_key& id) : m_opt(opt), m_opt_id(id) {}; Field(wxWindow* parent, const ConfigOptionDef& opt, const t_config_option_key& id) : m_parent(parent), m_opt(opt), m_opt_id(id) {}; virtual ~Field(); @@ -151,8 +153,6 @@ public: virtual wxSizer* getSizer() { return nullptr; } virtual wxWindow* getWindow() { return nullptr; } - wxStaticText* getLabel() { return m_Label; } - bool is_matched(const std::string& string, const std::string& pattern); void get_value_by_opt_type(wxString& str, const bool check_value = true); @@ -168,7 +168,6 @@ public: bool set_undo_bitmap(const ScalableBitmap *bmp) { if (m_undo_bitmap != bmp) { m_undo_bitmap = bmp; - m_Undo_btn->SetBitmap_(*bmp); return true; } return false; @@ -177,33 +176,21 @@ public: bool set_undo_to_sys_bitmap(const ScalableBitmap *bmp) { if (m_undo_to_sys_bitmap != bmp) { m_undo_to_sys_bitmap = bmp; - m_Undo_to_sys_btn->SetBitmap_(*bmp); return true; } return false; } bool set_label_colour(const wxColour *clr) { - if (m_Label == nullptr) return false; if (m_label_color != clr) { m_label_color = clr; - m_Label->SetForegroundColour(*clr); - m_Label->Refresh(true); } return false; } - bool set_label_colour_force(const wxColour *clr) { - if (m_Label == nullptr) return false; - m_Label->SetForegroundColour(*clr); - m_Label->Refresh(true); - return false; - } - bool set_undo_tooltip(const wxString *tip) { if (m_undo_tooltip != tip) { m_undo_tooltip = tip; - m_Undo_btn->SetToolTip(*tip); return true; } return false; @@ -212,17 +199,16 @@ public: bool set_undo_to_sys_tooltip(const wxString *tip) { if (m_undo_to_sys_tooltip != tip) { m_undo_to_sys_tooltip = tip; - m_Undo_to_sys_btn->SetToolTip(*tip); return true; } return false; } - void set_side_text_ptr(wxStaticText* side_text) { - m_side_text = side_text; + bool* get_blink_ptr() { + return &m_blink; } - virtual void msw_rescale(bool rescale_sidetext = false); + virtual void msw_rescale(); void sys_color_changed(); bool get_enter_pressed() const { return bEnterPressed; } @@ -233,26 +219,26 @@ public: static int def_width_wider() ; static int def_width_thinner() ; - BlinkingBitmap* blinking_bitmap() const { return m_blinking_bmp;} + const ScalableBitmap* undo_bitmap() { return m_undo_bitmap; } + const wxString* undo_tooltip() { return m_undo_tooltip; } + const ScalableBitmap* undo_to_sys_bitmap() { return m_undo_to_sys_bitmap; } + const wxString* undo_to_sys_tooltip() { return m_undo_to_sys_tooltip; } + const wxColour* label_color() { return m_label_color; } + const bool blink() { return m_blink; } protected: - RevertButton* m_Undo_btn = nullptr; // Bitmap and Tooltip text for m_Undo_btn. The wxButton will be updated only if the new wxBitmap pointer differs from the currently rendered one. const ScalableBitmap* m_undo_bitmap = nullptr; const wxString* m_undo_tooltip = nullptr; - RevertButton* m_Undo_to_sys_btn = nullptr; // Bitmap and Tooltip text for m_Undo_to_sys_btn. The wxButton will be updated only if the new wxBitmap pointer differs from the currently rendered one. const ScalableBitmap* m_undo_to_sys_bitmap = nullptr; const wxString* m_undo_to_sys_tooltip = nullptr; - BlinkingBitmap* m_blinking_bmp{ nullptr }; + bool m_blink{ false }; - wxStaticText* m_Label = nullptr; // Color for Label. The wxColour will be updated only if the new wxColour pointer differs from the currently rendered one. const wxColour* m_label_color = nullptr; - wxStaticText* m_side_text = nullptr; - // current value boost::any m_value; // last maeningful value @@ -308,7 +294,7 @@ public: boost::any& get_value() override; - void msw_rescale(bool rescale_sidetext = false) override; + void msw_rescale() override; void enable() override; void disable() override; @@ -336,7 +322,7 @@ public: void set_na_value() override; boost::any& get_value() override; - void msw_rescale(bool rescale_sidetext = false) override; + void msw_rescale() override; void enable() override { dynamic_cast(window)->Enable(); } void disable() override { dynamic_cast(window)->Disable(); } @@ -379,7 +365,7 @@ public: return m_value = value; } - void msw_rescale(bool rescale_sidetext = false) override; + void msw_rescale() override; void enable() override { dynamic_cast(window)->Enable(); } void disable() override { dynamic_cast(window)->Disable(); } @@ -405,12 +391,13 @@ public: void set_value(const std::string& value, bool change_event = false); void set_value(const boost::any& value, bool change_event = false); void set_values(const std::vector &values); + void set_values(const wxArrayString &values); boost::any& get_value() override; - void msw_rescale(bool rescale_sidetext = false) override; + void msw_rescale() override; - void enable() override { dynamic_cast(window)->Enable(); }; - void disable() override{ dynamic_cast(window)->Disable(); }; + void enable() override ;//{ dynamic_cast(window)->Enable(); }; + void disable() override;//{ dynamic_cast(window)->Disable(); }; wxWindow* getWindow() override { return window; } }; @@ -433,7 +420,7 @@ public: } void set_value(const boost::any& value, bool change_event = false) override; boost::any& get_value() override; - void msw_rescale(bool rescale_sidetext = false) override; + void msw_rescale() override; void enable() override { dynamic_cast(window)->Enable(); }; void disable() override{ dynamic_cast(window)->Disable(); }; @@ -459,7 +446,7 @@ public: void set_value(const boost::any& value, bool change_event = false); boost::any& get_value() override; - void msw_rescale(bool rescale_sidetext = false) override; + void msw_rescale() override; void enable() override { x_textctrl->Enable(); @@ -494,7 +481,7 @@ public: boost::any& get_value()override { return m_value; } - void msw_rescale(bool rescale_sidetext = false) override; + void msw_rescale() override; void enable() override { dynamic_cast(window)->Enable(); }; void disable() override{ dynamic_cast(window)->Disable(); }; diff --git a/src/slic3r/GUI/GCodeViewer.cpp b/src/slic3r/GUI/GCodeViewer.cpp index 679a30e72d..4be9f5fbd2 100644 --- a/src/slic3r/GUI/GCodeViewer.cpp +++ b/src/slic3r/GUI/GCodeViewer.cpp @@ -112,16 +112,14 @@ bool GCodeViewer::Path::matches(const GCodeProcessor::MoveVertex& move) const case EMoveType::Custom_GCode: case EMoveType::Retract: case EMoveType::Unretract: - case EMoveType::Extrude: - { + case EMoveType::Extrude: { // use rounding to reduce the number of generated paths - return type == move.type && role == move.extrusion_role && height == round_to_nearest(move.height, 2) && + return type == move.type && move.position[2] <= first.position[2] && role == move.extrusion_role && height == round_to_nearest(move.height, 2) && width == round_to_nearest(move.width, 2) && feedrate == move.feedrate && fan_speed == move.fan_speed && volumetric_rate == round_to_nearest(move.volumetric_rate(), 2) && extruder_id == move.extruder_id && cp_color_id == move.cp_color_id; } - case EMoveType::Travel: - { + case EMoveType::Travel: { return type == move.type && feedrate == move.feedrate && extruder_id == move.extruder_id && cp_color_id == move.cp_color_id; } default: { return false; } @@ -302,6 +300,11 @@ void GCodeViewer::load(const GCodeProcessor::Result& gcode_result, const Print& reset(); load_toolpaths(gcode_result); + if (m_layers.empty()) + return; + + m_settings_ids = gcode_result.settings_ids; + if (wxGetApp().is_editor()) load_shells(print, initialized); else { @@ -313,8 +316,8 @@ void GCodeViewer::load(const GCodeProcessor::Result& gcode_result, const Print& // bed shape detected in the gcode bed_shape = gcode_result.bed_shape; auto bundle = wxGetApp().preset_bundle; - if (bundle != nullptr && !gcode_result.printer_settings_id.empty()) { - const Preset* preset = bundle->printers.find_preset(gcode_result.printer_settings_id); + if (bundle != nullptr && !m_settings_ids.printer.empty()) { + const Preset* preset = bundle->printers.find_preset(m_settings_ids.printer); if (preset != nullptr) { model = PresetUtils::system_printer_bed_model(*preset); texture = PresetUtils::system_printer_bed_texture(*preset); @@ -409,6 +412,9 @@ void GCodeViewer::refresh(const GCodeProcessor::Result& gcode_result, const std: void GCodeViewer::reset() { + m_initialized = false; + m_gl_data_initialized = false; + m_moves_count = 0; for (TBuffer& buffer : m_buffers) { buffer.reset(); @@ -417,12 +423,13 @@ void GCodeViewer::reset() m_paths_bounding_box = BoundingBoxf3(); m_max_bounding_box = BoundingBoxf3(); m_tool_colors = std::vector(); + m_extruders_count = 0; m_extruder_ids = std::vector(); m_extrusions.reset_role_visibility_flags(); m_extrusions.reset_ranges(); m_shells.volumes.clear(); - m_layers_zs = std::vector(); - m_layers_z_range = { 0.0, 0.0 }; + m_layers.reset(); + m_layers_z_range = { 0, 0 }; m_roles = std::vector(); m_time_statistics.reset(); m_time_estimate_mode = PrintEstimatedTimeStatistics::ETimeMode::Normal; @@ -435,15 +442,39 @@ void GCodeViewer::reset() void GCodeViewer::render() const { auto init_gl_data = [this]() { - static bool first_run = true; - if (first_run) { - m_sequential_view.marker.init(); - - std::array point_sizes; - ::glGetIntegerv(GL_ALIASED_POINT_SIZE_RANGE, point_sizes.data()); - m_detected_point_sizes = { static_cast(point_sizes[0]), static_cast(point_sizes[1]) }; - first_run = false; + // initializes opengl data of TBuffers + for (size_t i = 0; i < m_buffers.size(); ++i) { + TBuffer& buffer = m_buffers[i]; + switch (buffer_type(i)) { + default: { break; } + case EMoveType::Tool_change: + case EMoveType::Color_change: + case EMoveType::Pause_Print: + case EMoveType::Custom_GCode: + case EMoveType::Retract: + case EMoveType::Unretract: { + buffer.shader = wxGetApp().is_glsl_version_greater_or_equal_to(1, 20) ? "options_120" : "options_110"; + break; + } + case EMoveType::Extrude: { + buffer.shader = "gouraud_light"; + break; + } + case EMoveType::Travel: { + buffer.shader = "toolpaths_lines"; + break; + } + } } + + // initializes tool marker + m_sequential_view.marker.init(); + + // initializes point sizes + std::array point_sizes; + ::glGetIntegerv(GL_ALIASED_POINT_SIZE_RANGE, point_sizes.data()); + m_detected_point_sizes = { static_cast(point_sizes[0]), static_cast(point_sizes[1]) }; + m_gl_data_initialized = true; }; #if ENABLE_GCODE_VIEWER_STATISTICS @@ -452,15 +483,18 @@ void GCodeViewer::render() const // OpenGL data must be initialized after the glContext has been created. // This is ensured when this method is called by GLCanvas3D::_render_gcode(). - init_gl_data(); + if (!m_gl_data_initialized) + init_gl_data(); if (m_roles.empty()) return; glsafe(::glEnable(GL_DEPTH_TEST)); render_toolpaths(); - m_sequential_view.marker.set_world_position(m_sequential_view.current_position); - m_sequential_view.marker.render(); + if (m_sequential_view.current.last != m_sequential_view.endpoints.last) { + m_sequential_view.marker.set_world_position(m_sequential_view.current_position); + m_sequential_view.marker.render(); + } render_shells(); render_legend(); #if ENABLE_GCODE_VIEWER_STATISTICS @@ -565,7 +599,7 @@ void GCodeViewer::set_options_visibility_from_flags(unsigned int flags) enable_legend(is_flag_set(static_cast(Preview::OptionType::Legend))); } -void GCodeViewer::set_layers_z_range(const std::array& layers_z_range) +void GCodeViewer::set_layers_z_range(const std::array& layers_z_range) { bool keep_sequential_current_first = layers_z_range[0] >= m_layers_z_range[0]; bool keep_sequential_current_last = layers_z_range[1] <= m_layers_z_range[1]; @@ -874,6 +908,7 @@ void GCodeViewer::init() if (m_initialized) return; + // initializes non opengl data of TBuffers for (size_t i = 0; i < m_buffers.size(); ++i) { TBuffer& buffer = m_buffers[i]; switch (buffer_type(i)) @@ -888,21 +923,18 @@ void GCodeViewer::init() { buffer.render_primitive_type = TBuffer::ERenderPrimitiveType::Point; buffer.vertices.format = VBuffer::EFormat::Position; - buffer.shader = wxGetApp().is_glsl_version_greater_or_equal_to(1, 20) ? "options_120" : "options_110"; break; } case EMoveType::Extrude: { buffer.render_primitive_type = TBuffer::ERenderPrimitiveType::Triangle; buffer.vertices.format = VBuffer::EFormat::PositionNormal3; - buffer.shader = "gouraud_light"; break; } case EMoveType::Travel: { buffer.render_primitive_type = TBuffer::ERenderPrimitiveType::Line; buffer.vertices.format = VBuffer::EFormat::PositionNormal1; - buffer.shader = "toolpaths_lines"; break; } } @@ -933,6 +965,8 @@ void GCodeViewer::load_toolpaths(const GCodeProcessor::Result& gcode_result) new wxProgressDialog(_L("Generating toolpaths"), "...", 100, wxGetApp().plater(), wxPD_AUTO_HIDE | wxPD_APP_MODAL) : nullptr; + m_extruders_count = gcode_result.extruders_count; + for (size_t i = 0; i < m_moves_count; ++i) { const GCodeProcessor::MoveVertex& move = gcode_result.moves[i]; if (wxGetApp().is_gcode_viewer()) @@ -1163,6 +1197,7 @@ void GCodeViewer::load_toolpaths(const GCodeProcessor::Result& gcode_result) prev_up = up; prev_length = length; }; + auto add_indices_as_solid = [](const GCodeProcessor::MoveVertex& prev, const GCodeProcessor::MoveVertex& curr, TBuffer& buffer, size_t& buffer_vertices_size, unsigned int index_buffer_id, IndexBuffer& buffer_indices, size_t move_id) { static Vec3f prev_dir; @@ -1305,6 +1340,9 @@ void GCodeViewer::load_toolpaths(const GCodeProcessor::Result& gcode_result) // the data are deleted as soon as they are sent to the gpu. std::vector> vertices(m_buffers.size()); std::vector indices(m_buffers.size()); +#if ENABLE_SHOW_OPTION_POINT_LAYERS + std::vector options_zs; +#endif // ENABLE_SHOW_OPTION_POINT_LAYERS // toolpaths data -> extract vertices from result for (size_t i = 0; i < m_moves_count; ++i) { @@ -1329,22 +1367,29 @@ void GCodeViewer::load_toolpaths(const GCodeProcessor::Result& gcode_result) switch (buffer.render_primitive_type) { - case TBuffer::ERenderPrimitiveType::Point: - { + case TBuffer::ERenderPrimitiveType::Point: { add_vertices_as_point(curr, buffer_vertices); break; } - case TBuffer::ERenderPrimitiveType::Line: - { + case TBuffer::ERenderPrimitiveType::Line: { add_vertices_as_line(prev, curr, buffer, buffer_vertices); break; } - case TBuffer::ERenderPrimitiveType::Triangle: - { + case TBuffer::ERenderPrimitiveType::Triangle: { add_vertices_as_solid(prev, curr, buffer, buffer_vertices, i); break; } } + +#if ENABLE_SHOW_OPTION_POINT_LAYERS + EMoveType type = buffer_type(id); + if (type == EMoveType::Pause_Print || type == EMoveType::Custom_GCode) { + const float* const last_z = options_zs.empty() ? nullptr : &options_zs.back(); + float z = static_cast(curr.position[2]); + if (last_z == nullptr || z < *last_z - EPSILON || *last_z + EPSILON < z) + options_zs.emplace_back(curr.position[2]); + } +#endif // ENABLE_SHOW_OPTION_POINT_LAYERS } log_memory_usage("Loaded G-code generated vertex buffers, ", vertices, indices); @@ -1430,24 +1475,26 @@ void GCodeViewer::load_toolpaths(const GCodeProcessor::Result& gcode_result) switch (buffer.render_primitive_type) { - case TBuffer::ERenderPrimitiveType::Point: - { + case TBuffer::ERenderPrimitiveType::Point: { add_indices_as_point(curr, buffer, static_cast(buffer_indices.size()) - 1, buffer_indices.back(), i); break; } - case TBuffer::ERenderPrimitiveType::Line: - { + case TBuffer::ERenderPrimitiveType::Line: { add_indices_as_line(prev, curr, buffer, static_cast(buffer_indices.size()) - 1, buffer_indices.back(), i); break; } - case TBuffer::ERenderPrimitiveType::Triangle: - { + case TBuffer::ERenderPrimitiveType::Triangle: { add_indices_as_solid(prev, curr, buffer, curr_buffer_vertices_size, static_cast(buffer_indices.size()) - 1, buffer_indices.back(), i); break; } } } + if (progress_dialog != nullptr) { + progress_dialog->Update(100, ""); + progress_dialog->Fit(); + } + log_memory_usage("Loaded G-code generated indices buffers, ", vertices, indices); // toolpaths data -> send indices data to gpu @@ -1493,35 +1540,46 @@ void GCodeViewer::load_toolpaths(const GCodeProcessor::Result& gcode_result) std::vector().swap(indices); // layers zs / roles / extruder ids / cp color ids -> extract from result + size_t last_travel_s_id = 0; for (size_t i = 0; i < m_moves_count; ++i) { const GCodeProcessor::MoveVertex& move = gcode_result.moves[i]; - if (move.type == EMoveType::Extrude) - m_layers_zs.emplace_back(static_cast(move.position[2])); + if (move.type == EMoveType::Extrude) { + // layers zs + const double* const last_z = m_layers.empty() ? nullptr : &m_layers.get_zs().back(); + double z = static_cast(move.position[2]); + if (last_z == nullptr || z < *last_z - EPSILON || *last_z + EPSILON < z) + m_layers.append(z, { last_travel_s_id, i }); + else + m_layers.get_endpoints().back().last = i; + // extruder ids + m_extruder_ids.emplace_back(move.extruder_id); + // roles + if (i > 0) + m_roles.emplace_back(move.extrusion_role); + } + else if (move.type == EMoveType::Travel) { + if (i - last_travel_s_id > 1 && !m_layers.empty()) + m_layers.get_endpoints().back().last = i; - m_extruder_ids.emplace_back(move.extruder_id); - - if (i > 0) - m_roles.emplace_back(move.extrusion_role); - } - - // layers zs -> replace intervals of layers with similar top positions with their average value. - std::sort(m_layers_zs.begin(), m_layers_zs.end()); - int n = int(m_layers_zs.size()); - int k = 0; - for (int i = 0; i < n;) { - int j = i + 1; - double zmax = m_layers_zs[i] + EPSILON; - for (; j < n && m_layers_zs[j] <= zmax; ++j); - m_layers_zs[k++] = (j > i + 1) ? (0.5 * (m_layers_zs[i] + m_layers_zs[j - 1])) : m_layers_zs[i]; - i = j; - } - if (k < n) { - m_layers_zs.erase(m_layers_zs.begin() + k, m_layers_zs.end()); - m_layers_zs.shrink_to_fit(); + last_travel_s_id = i; + } } // set layers z range - m_layers_z_range = { m_layers_zs.front(), m_layers_zs.back() }; + if (!m_layers.empty()) + m_layers_z_range = { 0, static_cast(m_layers.size() - 1) }; + +#if ENABLE_SHOW_OPTION_POINT_LAYERS + // change color of paths whose layer contains option points + if (!options_zs.empty()) { + TBuffer& extrude_buffer = m_buffers[buffer_id(EMoveType::Extrude)]; + for (Path& path : extrude_buffer.paths) { + float z = path.first.position[2]; + if (std::find_if(options_zs.begin(), options_zs.end(), [z](float f) { return f - EPSILON <= z && z <= f + EPSILON; }) != options_zs.end()) + path.cp_color_id = 255 - path.cp_color_id; + } + } +#endif // ENABLE_SHOW_OPTION_POINT_LAYERS // roles -> remove duplicates std::sort(m_roles.begin(), m_roles.end()); @@ -1618,9 +1676,25 @@ void GCodeViewer::refresh_render_paths(bool keep_sequential_current_first, bool case EViewType::FanSpeed: { color = m_extrusions.ranges.fan_speed.get_color_at(path.fan_speed); break; } case EViewType::VolumetricRate: { color = m_extrusions.ranges.volumetric_rate.get_color_at(path.volumetric_rate); break; } case EViewType::Tool: { color = m_tool_colors[path.extruder_id]; break; } +#if ENABLE_SHOW_OPTION_POINT_LAYERS + case EViewType::ColorPrint: { + if (path.cp_color_id >= static_cast(m_tool_colors.size())) { + color = { 0.5f, 0.5f, 0.5f }; +// // complementary color +// color = m_tool_colors[255 - path.cp_color_id]; +// color = { 1.0f - color[0], 1.0f - color[1], 1.0f - color[2] }; + } + else + color = m_tool_colors[path.cp_color_id]; + + break; + } +#else case EViewType::ColorPrint: { color = m_tool_colors[path.cp_color_id]; break; } +#endif // ENABLE_SHOW_OPTION_POINT_LAYERS default: { color = { 1.0f, 1.0f, 1.0f }; break; } } + return color; }; @@ -1630,34 +1704,46 @@ void GCodeViewer::refresh_render_paths(bool keep_sequential_current_first, bool Travel_Colors[0] /* Move */); }; - auto is_in_z_range = [](const Path& path, double min_z, double max_z) { - auto in_z_range = [min_z, max_z](double z) { - return z > min_z - EPSILON && z < max_z + EPSILON; + auto is_in_layers_range = [this](const Path& path, size_t min_id, size_t max_id) { + auto in_layers_range = [this, min_id, max_id](size_t id) { + return m_layers.get_endpoints_at(min_id).first <= id && id <= m_layers.get_endpoints_at(max_id).last; }; - return in_z_range(path.first.position[2]) || in_z_range(path.last.position[2]); + return in_layers_range(path.first.s_id) || in_layers_range(path.last.s_id); }; - auto is_travel_in_z_range = [this, is_in_z_range](size_t path_id, double min_z, double max_z) { + auto is_travel_in_layers_range = [this](size_t path_id, size_t min_id, size_t max_id) { + auto is_in_z_range = [](const Path& path, double min_z, double max_z) { + auto in_z_range = [min_z, max_z](double z) { + return min_z - EPSILON < z&& z < max_z + EPSILON; + }; + + return in_z_range(path.first.position[2]) || in_z_range(path.last.position[2]); + }; + const TBuffer& buffer = m_buffers[buffer_id(EMoveType::Travel)]; if (path_id >= buffer.paths.size()) return false; Path path = buffer.paths[path_id]; - int first = static_cast(path_id); - unsigned int last = static_cast(path_id); + size_t first = path_id; + size_t last = path_id; // check adjacent paths while (first > 0 && path.first.position.isApprox(buffer.paths[first - 1].last.position)) { --first; path.first = buffer.paths[first].first; } - while (last < static_cast(buffer.paths.size() - 1) && path.last.position.isApprox(buffer.paths[last + 1].first.position)) { + while (last < buffer.paths.size() - 1 && path.last.position.isApprox(buffer.paths[last + 1].first.position)) { ++last; path.last = buffer.paths[last].last; } - return is_in_z_range(path, min_z, max_z); + size_t min_s_id = m_layers.get_endpoints_at(min_id).first; + size_t max_s_id = m_layers.get_endpoints_at(max_id).last; + + return (min_s_id <= path.first.s_id && path.first.s_id <= max_s_id) || + (min_s_id <= path.last.s_id && path.last.s_id <= max_s_id); }; #if ENABLE_GCODE_VIEWER_STATISTICS @@ -1683,10 +1769,10 @@ void GCodeViewer::refresh_render_paths(bool keep_sequential_current_first, bool for (size_t i = 0; i < buffer.paths.size(); ++i) { const Path& path = buffer.paths[i]; if (path.type == EMoveType::Travel) { - if (!is_travel_in_z_range(i, m_layers_z_range[0], m_layers_z_range[1])) + if (!is_travel_in_layers_range(i, m_layers_z_range[0], m_layers_z_range[1])) continue; } - else if (!is_in_z_range(path, m_layers_z_range[0], m_layers_z_range[1])) + else if (!is_in_layers_range(path, m_layers_z_range[0], m_layers_z_range[1])) continue; if (path.type == EMoveType::Extrude && !is_visible(path)) @@ -1700,12 +1786,12 @@ void GCodeViewer::refresh_render_paths(bool keep_sequential_current_first, bool if (top_layer_only) { if (path.type == EMoveType::Travel) { - if (is_travel_in_z_range(i, m_layers_z_range[1], m_layers_z_range[1])) { + if (is_travel_in_layers_range(i, m_layers_z_range[1], m_layers_z_range[1])) { top_layer_endpoints.first = std::min(top_layer_endpoints.first, path.first.s_id); top_layer_endpoints.last = std::max(top_layer_endpoints.last, path.last.s_id); } } - else if (is_in_z_range(path, m_layers_z_range[1], m_layers_z_range[1])) { + else if (is_in_layers_range(path, m_layers_z_range[1], m_layers_z_range[1])) { top_layer_endpoints.first = std::min(top_layer_endpoints.first, path.first.s_id); top_layer_endpoints.last = std::max(top_layer_endpoints.last, path.last.s_id); } @@ -1762,7 +1848,9 @@ void GCodeViewer::refresh_render_paths(bool keep_sequential_current_first, bool switch (path.type) { case EMoveType::Extrude: { - if (!top_layer_only || m_sequential_view.current.last == global_endpoints.last || is_in_z_range(path, m_layers_z_range[1], m_layers_z_range[1])) + if (!top_layer_only || + m_sequential_view.current.last == global_endpoints.last || + is_in_layers_range(path, m_layers_z_range[1], m_layers_z_range[1])) color = extrusion_color(path); else color = { 0.25f, 0.25f, 0.25f }; @@ -1770,7 +1858,7 @@ void GCodeViewer::refresh_render_paths(bool keep_sequential_current_first, bool break; } case EMoveType::Travel: { - if (!top_layer_only || m_sequential_view.current.last == global_endpoints.last || is_travel_in_z_range(path_id, m_layers_z_range[1], m_layers_z_range[1])) + if (!top_layer_only || m_sequential_view.current.last == global_endpoints.last || is_travel_in_layers_range(path_id, m_layers_z_range[1], m_layers_z_range[1])) color = (m_view_type == EViewType::Feedrate || m_view_type == EViewType::Tool || m_view_type == EViewType::ColorPrint) ? extrusion_color(path) : travel_color(path); else color = { 0.25f, 0.25f, 0.25f }; @@ -1830,7 +1918,11 @@ void GCodeViewer::refresh_render_paths(bool keep_sequential_current_first, bool void GCodeViewer::render_toolpaths() const { +#if ENABLE_FIXED_SCREEN_SIZE_POINT_MARKERS + float point_size = 20.0f; +#else float point_size = 0.8f; +#endif // ENABLE_FIXED_SCREEN_SIZE_POINT_MARKERS std::array light_intensity = { 0.25f, 0.70f, 0.75f, 0.75f }; const Camera& camera = wxGetApp().plater()->get_camera(); double zoom = camera.get_zoom(); @@ -1846,6 +1938,11 @@ void GCodeViewer::render_toolpaths() const auto render_as_points = [this, zoom, point_size, near_plane_height, set_uniform_color] (const TBuffer& buffer, unsigned int index_buffer_id, EOptionsColors color_id, GLShaderProgram& shader) { set_uniform_color(Options_Colors[static_cast(color_id)], shader); +#if ENABLE_FIXED_SCREEN_SIZE_POINT_MARKERS + shader.set_uniform("use_fixed_screen_size", 1); +#else + shader.set_uniform("use_fixed_screen_size", 0); +#endif // ENABLE_FIXED_SCREEN_SIZE_POINT_MARKERS shader.set_uniform("zoom", zoom); shader.set_uniform("percent_outline_radius", 0.0f); shader.set_uniform("percent_center_radius", 0.33f); @@ -2017,17 +2114,14 @@ void GCodeViewer::render_legend() const if (!visible) ImGui::PushStyleVar(ImGuiStyleVar_Alpha, 0.3333f); ImVec2 pos = ImGui::GetCursorScreenPos(); - switch (type) - { + switch (type) { default: - case EItemType::Rect: - { + case EItemType::Rect: { draw_list->AddRectFilled({ pos.x + 1.0f, pos.y + 1.0f }, { pos.x + icon_size - 1.0f, pos.y + icon_size - 1.0f }, ImGui::GetColorU32({ color[0], color[1], color[2], 1.0f })); break; } - case EItemType::Circle: - { + case EItemType::Circle: { ImVec2 center(0.5f * (pos.x + pos.x + icon_size), 0.5f * (pos.y + pos.y + icon_size)); if (m_buffers[buffer_id(EMoveType::Retract)].shader == "options_120") { draw_list->AddCircleFilled(center, 0.5f * icon_size, @@ -2042,14 +2136,12 @@ void GCodeViewer::render_legend() const break; } - case EItemType::Hexagon: - { + case EItemType::Hexagon: { ImVec2 center(0.5f * (pos.x + pos.x + icon_size), 0.5f * (pos.y + pos.y + icon_size)); draw_list->AddNgonFilled(center, 0.5f * icon_size, ImGui::GetColorU32({ color[0], color[1], color[2], 1.0f }), 6); break; } - case EItemType::Line: - { + case EItemType::Line: { draw_list->AddLine({ pos.x + 1, pos.y + icon_size - 1 }, { pos.x + icon_size - 1, pos.y + 1 }, ImGui::GetColorU32({ color[0], color[1], color[2], 1.0f }), 3.0f); break; } @@ -2161,13 +2253,13 @@ void GCodeViewer::render_legend() const if (item.type != ColorChange) continue; - auto lower_b = std::lower_bound(m_layers_zs.begin(), m_layers_zs.end(), item.print_z - Slic3r::DoubleSlider::epsilon()); - - if (lower_b == m_layers_zs.end()) + const std::vector zs = m_layers.get_zs(); + auto lower_b = std::lower_bound(zs.begin(), zs.end(), item.print_z - Slic3r::DoubleSlider::epsilon()); + if (lower_b == zs.end()) continue; double current_z = *lower_b; - double previous_z = lower_b == m_layers_zs.begin() ? 0.0 : *(--lower_b); + double previous_z = (lower_b == zs.begin()) ? 0.0 : *(--lower_b); // to avoid duplicate values, check adding values if (ret.empty() || !(ret.back().second.first == previous_z && ret.back().second.second == current_z)) @@ -2258,6 +2350,7 @@ void GCodeViewer::render_legend() const m_extrusions.role_visibility_flags = visible ? m_extrusions.role_visibility_flags & ~(1 << role) : m_extrusions.role_visibility_flags | (1 << role); // update buffers' render paths refresh_render_paths(false, false); + wxGetApp().plater()->update_preview_moves_slider(); wxGetApp().plater()->get_current_canvas3D()->set_as_dirty(); wxGetApp().plater()->update_preview_bottom_toolbar(); } @@ -2281,8 +2374,7 @@ void GCodeViewer::render_legend() const case EViewType::ColorPrint: { const std::vector& custom_gcode_per_print_z = wxGetApp().plater()->model().custom_gcode_per_print_z.gcodes; - const int extruders_count = wxGetApp().extruders_edited_cnt(); - if (extruders_count == 1) { // single extruder use case + if (m_extruders_count == 1) { // single extruder use case std::vector>> cp_values = color_print_ranges(0, custom_gcode_per_print_z); const int items_cnt = static_cast(cp_values.size()); if (items_cnt == 0) { // There are no color changes, but there are some pause print or custom Gcode @@ -2374,28 +2466,26 @@ void GCodeViewer::render_legend() const for (const auto& time_rec : times) { switch (time_rec.first) { - case CustomGCode::PausePrint: - { + case CustomGCode::PausePrint: { auto it = std::find_if(custom_gcode_per_print_z.begin(), custom_gcode_per_print_z.end(), [time_rec](const CustomGCode::Item& item) { return item.type == time_rec.first; }); if (it != custom_gcode_per_print_z.end()) { - items.push_back({ PartialTime::EType::Print, it->extruder, Color(), Color(), time_rec.second }); + items.push_back({ PartialTime::EType::Print, it->extruder, last_color[it->extruder - 1], Color(), time_rec.second }); items.push_back({ PartialTime::EType::Pause, it->extruder, Color(), Color(), time_rec.second }); custom_gcode_per_print_z.erase(it); } break; } - case CustomGCode::ColorChange: - { + case CustomGCode::ColorChange: { auto it = std::find_if(custom_gcode_per_print_z.begin(), custom_gcode_per_print_z.end(), [time_rec](const CustomGCode::Item& item) { return item.type == time_rec.first; }); if (it != custom_gcode_per_print_z.end()) { - items.push_back({ PartialTime::EType::Print, it->extruder, Color(), Color(), time_rec.second }); + items.push_back({ PartialTime::EType::Print, it->extruder, last_color[it->extruder - 1], Color(), time_rec.second }); items.push_back({ PartialTime::EType::ColorChange, it->extruder, last_color[it->extruder - 1], decode_color(it->color), time_rec.second }); last_color[it->extruder - 1] = decode_color(it->color); last_extruder_id = it->extruder; custom_gcode_per_print_z.erase(it); } else - items.push_back({ PartialTime::EType::Print, last_extruder_id, Color(), Color(), time_rec.second }); + items.push_back({ PartialTime::EType::Print, last_extruder_id, last_color[last_extruder_id - 1], Color(), time_rec.second }); break; } @@ -2406,7 +2496,7 @@ void GCodeViewer::render_legend() const return items; }; - auto append_color = [this, &imgui](const Color& color1, const Color& color2, std::array& offsets, const Times& times) { + auto append_color_change = [this, &imgui](const Color& color1, const Color& color2, const std::array& offsets, const Times& times) { imgui.text(_u8L("Color change")); ImGui::SameLine(); @@ -2425,6 +2515,24 @@ void GCodeViewer::render_legend() const imgui.text(short_time(get_time_dhms(times.second - times.first))); }; + auto append_print = [this, &imgui](const Color& color, const std::array& offsets, const Times& times) { + imgui.text(_u8L("Print")); + ImGui::SameLine(); + + float icon_size = ImGui::GetTextLineHeight(); + ImDrawList* draw_list = ImGui::GetWindowDrawList(); + ImVec2 pos = ImGui::GetCursorScreenPos(); + pos.x -= 0.5f * ImGui::GetStyle().ItemSpacing.x; + + draw_list->AddRectFilled({ pos.x + 1.0f, pos.y + 1.0f }, { pos.x + icon_size - 1.0f, pos.y + icon_size - 1.0f }, + ImGui::GetColorU32({ color[0], color[1], color[2], 1.0f })); + + ImGui::SameLine(offsets[0]); + imgui.text(short_time(get_time_dhms(times.second))); + ImGui::SameLine(offsets[1]); + imgui.text(short_time(get_time_dhms(times.first))); + }; + PartialTimes partial_times = generate_partial_times(time_mode.custom_gcode_times); if (!partial_times.empty()) { labels.clear(); @@ -2433,8 +2541,8 @@ void GCodeViewer::render_legend() const for (const PartialTime& item : partial_times) { switch (item.type) { - case PartialTime::EType::Print: { labels.push_back(_u8L("Print")); break; } - case PartialTime::EType::Pause: { labels.push_back(_u8L("Pause")); break; } + case PartialTime::EType::Print: { labels.push_back(_u8L("Print")); break; } + case PartialTime::EType::Pause: { labels.push_back(_u8L("Pause")); break; } case PartialTime::EType::ColorChange: { labels.push_back(_u8L("Color change")); break; } } times.push_back(short_time(get_time_dhms(item.times.second))); @@ -2446,25 +2554,18 @@ void GCodeViewer::render_legend() const for (const PartialTime& item : partial_times) { switch (item.type) { - case PartialTime::EType::Print: - { - imgui.text(_u8L("Print")); - ImGui::SameLine(offsets[0]); - imgui.text(short_time(get_time_dhms(item.times.second))); - ImGui::SameLine(offsets[1]); - imgui.text(short_time(get_time_dhms(item.times.first))); + case PartialTime::EType::Print: { + append_print(item.color1, offsets, item.times); break; } - case PartialTime::EType::Pause: - { + case PartialTime::EType::Pause: { imgui.text(_u8L("Pause")); ImGui::SameLine(offsets[0]); imgui.text(short_time(get_time_dhms(item.times.second - item.times.first))); break; } - case PartialTime::EType::ColorChange: - { - append_color(item.color1, item.color2, offsets, item.times); + case PartialTime::EType::ColorChange: { + append_color_change(item.color1, item.color2, offsets, item.times); break; } } @@ -2478,12 +2579,10 @@ void GCodeViewer::render_legend() const { case EViewType::Feedrate: case EViewType::Tool: - case EViewType::ColorPrint: - { + case EViewType::ColorPrint: { break; } - default: - { + default: { // title ImGui::Spacing(); imgui.title(_u8L("Travel")); @@ -2529,8 +2628,58 @@ void GCodeViewer::render_legend() const add_option(EMoveType::Unretract, EOptionsColors::Unretractions, _u8L("Deretractions")); add_option(EMoveType::Tool_change, EOptionsColors::ToolChanges, _u8L("Tool changes")); add_option(EMoveType::Color_change, EOptionsColors::ColorChanges, _u8L("Color changes")); - add_option(EMoveType::Pause_Print, EOptionsColors::PausePrints, _u8L("Pause prints")); - add_option(EMoveType::Custom_GCode, EOptionsColors::CustomGCodes, _u8L("Custom GCodes")); + add_option(EMoveType::Pause_Print, EOptionsColors::PausePrints, _u8L("Print pauses")); + add_option(EMoveType::Custom_GCode, EOptionsColors::CustomGCodes, _u8L("Custom G-codes")); + } + + // settings section + if (wxGetApp().is_gcode_viewer() && + (m_view_type == EViewType::FeatureType || m_view_type == EViewType::Tool) && + (!m_settings_ids.print.empty() || !m_settings_ids.filament.empty() || !m_settings_ids.printer.empty())) { + + auto calc_offset = [this]() { + float ret = 0.0f; + if (!m_settings_ids.printer.empty()) + ret = std::max(ret, ImGui::CalcTextSize((_u8L("Printer") + std::string(":")).c_str()).x); + if (!m_settings_ids.print.empty()) + ret = std::max(ret, ImGui::CalcTextSize((_u8L("Print settings") + std::string(":")).c_str()).x); + if (!m_settings_ids.filament.empty()) { + for (unsigned char i : m_extruder_ids) { + ret = std::max(ret, ImGui::CalcTextSize((_u8L("Filament") + " " + std::to_string(i + 1) + ":").c_str()).x); + } + } + if (ret > 0.0f) + ret += 2.0f * ImGui::GetStyle().ItemSpacing.x; + return ret; + }; + + + ImGui::Spacing(); + ImGui::Spacing(); + ImGui::PushStyleColor(ImGuiCol_Separator, { 1.0f, 1.0f, 1.0f, 1.0f }); + ImGui::Separator(); + ImGui::PopStyleColor(); + ImGui::Spacing(); + + float offset = calc_offset(); + + if (!m_settings_ids.printer.empty()) { + imgui.text(_u8L("Printer") + ":"); + ImGui::SameLine(offset); + imgui.text(m_settings_ids.printer); + } + if (!m_settings_ids.print.empty()) { + imgui.text(_u8L("Print settings") + ":"); + ImGui::SameLine(offset); + imgui.text(m_settings_ids.print); + } + if (!m_settings_ids.filament.empty()) { + for (unsigned char i : m_extruder_ids) { + imgui.text(_u8L("Filament") + " " + std::to_string(i + 1) + ":"); + ImGui::SameLine(offset); + imgui.text(m_settings_ids.filament[i]); + } + } } // total estimated printing time section @@ -2579,15 +2728,12 @@ void GCodeViewer::render_legend() const } }; - switch (m_time_estimate_mode) - { - case PrintEstimatedTimeStatistics::ETimeMode::Normal: - { + switch (m_time_estimate_mode) { + case PrintEstimatedTimeStatistics::ETimeMode::Normal: { show_mode_button(_u8L("Show stealth mode"), PrintEstimatedTimeStatistics::ETimeMode::Stealth); break; } - case PrintEstimatedTimeStatistics::ETimeMode::Stealth: - { + case PrintEstimatedTimeStatistics::ETimeMode::Stealth: { show_mode_button(_u8L("Show normal mode"), PrintEstimatedTimeStatistics::ETimeMode::Normal); break; } @@ -2704,9 +2850,10 @@ void GCodeViewer::log_memory_used(const std::string& label, long long additional render_paths_size += SLIC3R_STDVEC_MEMSIZE(path.offsets, size_t); } } - long long layers_zs_size = SLIC3R_STDVEC_MEMSIZE(m_layers_zs, double); + long long layers_size = SLIC3R_STDVEC_MEMSIZE(m_layers.get_zs(), double); + layers_size += SLIC3R_STDVEC_MEMSIZE(m_layers.get_endpoints(), Layers::Endpoints); BOOST_LOG_TRIVIAL(trace) << label - << format_memsize_MB(additional + paths_size + render_paths_size + layers_zs_size) + << format_memsize_MB(additional + paths_size + render_paths_size + layers_size) << log_memory_info(); } } diff --git a/src/slic3r/GUI/GCodeViewer.hpp b/src/slic3r/GUI/GCodeViewer.hpp index 1cf5385843..639a5b430a 100644 --- a/src/slic3r/GUI/GCodeViewer.hpp +++ b/src/slic3r/GUI/GCodeViewer.hpp @@ -272,6 +272,41 @@ class GCodeViewer void reset_ranges() { ranges.reset(); } }; + class Layers + { + public: + struct Endpoints + { + size_t first{ 0 }; + size_t last{ 0 }; + }; + + private: + std::vector m_zs; + std::vector m_endpoints; + + public: + void append(double z, Endpoints endpoints) + { + m_zs.emplace_back(z); + m_endpoints.emplace_back(endpoints); + } + + void reset() + { + m_zs = std::vector(); + m_endpoints = std::vector(); + } + + size_t size() const { return m_zs.size(); } + bool empty() const { return m_zs.empty(); } + const std::vector& get_zs() const { return m_zs; } + const std::vector& get_endpoints() const { return m_endpoints; } + std::vector& get_endpoints() { return m_endpoints; } + double get_z_at(unsigned int id) const { return (id < m_zs.size()) ? m_zs[id] : 0.0; } + Endpoints get_endpoints_at(unsigned int id) const { return (id < m_endpoints.size()) ? m_endpoints[id] : Endpoints(); } + }; + #if ENABLE_GCODE_VIEWER_STATISTICS struct Statistics { @@ -343,7 +378,7 @@ public: Transform3f m_world_transform; float m_z_offset{ 0.5f }; std::array m_color{ 1.0f, 1.0f, 1.0f, 0.5f }; - bool m_visible{ false }; + bool m_visible{ true }; public: void init(); @@ -388,6 +423,7 @@ public: private: bool m_initialized{ false }; + mutable bool m_gl_data_initialized{ false }; unsigned int m_last_result_id{ 0 }; size_t m_moves_count{ 0 }; mutable std::vector m_buffers{ static_cast(EMoveType::Extrude) }; @@ -396,9 +432,10 @@ private: // bounding box of toolpaths + marker tools BoundingBoxf3 m_max_bounding_box; std::vector m_tool_colors; - std::vector m_layers_zs; - std::array m_layers_z_range; + Layers m_layers; + std::array m_layers_z_range; std::vector m_roles; + size_t m_extruders_count; std::vector m_extruder_ids; mutable Extrusions m_extrusions; mutable SequentialView m_sequential_view; @@ -411,6 +448,7 @@ private: mutable Statistics m_statistics; #endif // ENABLE_GCODE_VIEWER_STATISTICS mutable std::array m_detected_point_sizes = { 0.0f, 0.0f }; + GCodeProcessor::Result::SettingsIds m_settings_ids; public: GCodeViewer() = default; @@ -428,7 +466,7 @@ public: const BoundingBoxf3& get_paths_bounding_box() const { return m_paths_bounding_box; } const BoundingBoxf3& get_max_bounding_box() const { return m_max_bounding_box; } - const std::vector& get_layers_zs() const { return m_layers_zs; }; + const std::vector& get_layers_zs() const { return m_layers.get_zs(); }; const SequentialView& get_sequential_view() const { return m_sequential_view; } void update_sequential_view_current(unsigned int first, unsigned int last); @@ -447,7 +485,7 @@ public: void set_toolpath_role_visibility_flags(unsigned int flags) { m_extrusions.role_visibility_flags = flags; } unsigned int get_options_visibility_flags() const; void set_options_visibility_from_flags(unsigned int flags); - void set_layers_z_range(const std::array& layers_z_range); + void set_layers_z_range(const std::array& layers_z_range); bool is_legend_enabled() const { return m_legend_enabled; } void enable_legend(bool enable) { m_legend_enabled = enable; } diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 179a82c8a6..34278377b1 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -5,9 +5,6 @@ #include "polypartition.h" #include "libslic3r/ClipperUtils.hpp" #include "libslic3r/PrintConfig.hpp" -#if !ENABLE_GCODE_VIEWER -#include "libslic3r/GCode/PreviewData.hpp" -#endif // !ENABLE_GCODE_VIEWER #include "libslic3r/GCode/ThumbnailData.hpp" #include "libslic3r/Geometry.hpp" #include "libslic3r/ExtrusionEntity.hpp" @@ -173,7 +170,7 @@ void GLCanvas3D::LayersEditing::init() } void GLCanvas3D::LayersEditing::set_config(const DynamicPrintConfig* config) -{ +{ m_config = config; delete m_slicing_parameters; m_slicing_parameters = nullptr; @@ -355,20 +352,16 @@ bool GLCanvas3D::LayersEditing::is_initialized() const std::string GLCanvas3D::LayersEditing::get_tooltip(const GLCanvas3D& canvas) const { std::string ret; - if (m_enabled && (m_layer_height_profile.size() >= 4)) - { + if (m_enabled && m_layer_height_profile.size() >= 4) { float z = get_cursor_z_relative(canvas); - if (z != -1000.0f) - { + if (z != -1000.0f) { z *= m_object_max_z; float h = 0.0f; - for (size_t i = m_layer_height_profile.size() - 2; i >= 2; i -= 2) - { + for (size_t i = m_layer_height_profile.size() - 2; i >= 2; i -= 2) { float zi = m_layer_height_profile[i]; float zi_1 = m_layer_height_profile[i - 2]; - if ((zi_1 <= z) && (z <= zi)) - { + if (zi_1 <= z && z <= zi) { float dz = zi - zi_1; h = (dz != 0.0f) ? lerp(m_layer_height_profile[i - 1], m_layer_height_profile[i + 1], (z - zi_1) / dz) : m_layer_height_profile[i + 1]; break; @@ -812,11 +805,9 @@ bool GLCanvas3D::WarningTexture::generate(const std::string& msg_utf8, const GLC // prepare buffer std::vector data(4 * m_width * m_height, 0); const unsigned char *src = image.GetData(); - for (int h = 0; h < m_height; ++h) - { + for (int h = 0; h < m_height; ++h) { unsigned char* dst = data.data() + 4 * h * m_width; - for (int w = 0; w < m_width; ++w) - { + for (int w = 0; w < m_width; ++w) { *dst++ = 255; if (red_colored) { *dst++ = 72; // 204 @@ -851,8 +842,7 @@ void GLCanvas3D::WarningTexture::render(const GLCanvas3D& canvas) const if (m_warnings.empty()) return; - if ((m_id > 0) && (m_original_width > 0) && (m_original_height > 0) && (m_width > 0) && (m_height > 0)) - { + if (m_id > 0 && m_original_width > 0 && m_original_height > 0 && m_width > 0 && m_height > 0) { const Size& cnv_size = canvas.get_canvas_size(); float inv_zoom = (float)wxGetApp().plater()->get_camera().get_inv_zoom(); float left = (-0.5f * (float)m_original_width) * inv_zoom; @@ -883,367 +873,6 @@ void GLCanvas3D::WarningTexture::msw_rescale(const GLCanvas3D& canvas) generate(m_msg_text, canvas, true, m_is_colored_red); } -#if !ENABLE_GCODE_VIEWER -const unsigned char GLCanvas3D::LegendTexture::Squares_Border_Color[3] = { 64, 64, 64 }; -const unsigned char GLCanvas3D::LegendTexture::Default_Background_Color[3] = { (unsigned char)(DEFAULT_BG_LIGHT_COLOR[0] * 255.0f), (unsigned char)(DEFAULT_BG_LIGHT_COLOR[1] * 255.0f), (unsigned char)(DEFAULT_BG_LIGHT_COLOR[2] * 255.0f) }; -const unsigned char GLCanvas3D::LegendTexture::Error_Background_Color[3] = { (unsigned char)(ERROR_BG_LIGHT_COLOR[0] * 255.0f), (unsigned char)(ERROR_BG_LIGHT_COLOR[1] * 255.0f), (unsigned char)(ERROR_BG_LIGHT_COLOR[2] * 255.0f) }; -const unsigned char GLCanvas3D::LegendTexture::Opacity = 255; - -GLCanvas3D::LegendTexture::LegendTexture() - : GUI::GLTexture() - , m_original_width(0) - , m_original_height(0) -{ -} - -void GLCanvas3D::LegendTexture::fill_color_print_legend_items( const GLCanvas3D& canvas, - const std::vector& colors_in, - std::vector& colors, - std::vector& cp_legend_items) -{ - std::vector custom_gcode_per_print_z = wxGetApp().plater()->model().custom_gcode_per_print_z.gcodes; - - const int extruders_cnt = wxGetApp().extruders_edited_cnt(); - if (extruders_cnt == 1) - { - if (custom_gcode_per_print_z.empty()) { - cp_legend_items.emplace_back(I18N::translate_utf8(L("Default print color"))); - colors = colors_in; - return; - } - std::vector> cp_values; - cp_values.reserve(custom_gcode_per_print_z.size()); - - std::vector print_zs = canvas.get_current_print_zs(true); - for (auto custom_code : custom_gcode_per_print_z) - { - if (custom_code.type != CustomGCode::ColorChange) - continue; - auto lower_b = std::lower_bound(print_zs.begin(), print_zs.end(), custom_code.print_z - Slic3r::DoubleSlider::epsilon()); - - if (lower_b == print_zs.end()) - continue; - - double current_z = *lower_b; - double previous_z = lower_b == print_zs.begin() ? 0.0 : *(--lower_b); - - // to avoid duplicate values, check adding values - if (cp_values.empty() || - !(cp_values.back().first == previous_z && cp_values.back().second == current_z)) - cp_values.emplace_back(std::pair(previous_z, current_z)); - } - - const auto items_cnt = (int)cp_values.size(); - if (items_cnt == 0) // There is no one color change, but there is/are some pause print or custom Gcode - { - cp_legend_items.emplace_back(I18N::translate_utf8(L("Default print color"))); - cp_legend_items.emplace_back(I18N::translate_utf8(L("Pause print or custom G-code"))); - colors = colors_in; - return; - } - - const int color_cnt = (int)colors_in.size() / 4; - colors.resize(colors_in.size(), 0.0); - - ::memcpy((void*)(colors.data()), (const void*)(colors_in.data() + (color_cnt - 1) * 4), 4 * sizeof(float)); - cp_legend_items.emplace_back(I18N::translate_utf8(L("Pause print or custom G-code"))); - size_t color_pos = 4; - - for (int i = items_cnt; i >= 0; --i, color_pos+=4) - { - // update colors for color print item - ::memcpy((void*)(colors.data() + color_pos), (const void*)(colors_in.data() + i * 4), 4 * sizeof(float)); - - // create label for color print item - std::string id_str = std::to_string(i + 1) + ": "; - - if (i == 0) { - cp_legend_items.emplace_back(id_str + (boost::format(I18N::translate_utf8(L("up to %.2f mm"))) % cp_values[0].first).str()); - break; - } - if (i == items_cnt) { - cp_legend_items.emplace_back(id_str + (boost::format(I18N::translate_utf8(L("above %.2f mm"))) % cp_values[i - 1].second).str()); - continue; - } - - cp_legend_items.emplace_back(id_str + (boost::format(I18N::translate_utf8(L("%.2f - %.2f mm"))) % cp_values[i - 1].second % cp_values[i].first).str()); - } - } - else - { - // colors = colors_in; - const int color_cnt = (int)colors_in.size() / 4; - colors.resize(colors_in.size(), 0.0); - - ::memcpy((void*)(colors.data()), (const void*)(colors_in.data()), 4 * extruders_cnt * sizeof(float)); - size_t color_pos = 4 * extruders_cnt; - size_t color_in_pos = 4 * (color_cnt - 1); - - for (unsigned int i = 0; i < (unsigned int)extruders_cnt; ++i) - cp_legend_items.emplace_back((boost::format(I18N::translate_utf8(L("Extruder %d"))) % (i + 1)).str()); - - ::memcpy((void*)(colors.data() + color_pos), (const void*)(colors_in.data() + color_in_pos), 4 * sizeof(float)); - color_pos += 4; - color_in_pos -= 4; - cp_legend_items.emplace_back(I18N::translate_utf8(L("Pause print or custom G-code"))); - - int cnt = custom_gcode_per_print_z.size(); - int color_change_idx = color_cnt - extruders_cnt; - for (int i = cnt-1; i >= 0; --i) - if (custom_gcode_per_print_z[i].type == CustomGCode::ColorChange) { - ::memcpy((void*)(colors.data() + color_pos), (const void*)(colors_in.data() + color_in_pos), 4 * sizeof(float)); - color_pos += 4; - color_in_pos -= 4; - - // create label for color change item - std::string id_str = std::to_string(color_change_idx--) + ": "; - - cp_legend_items.emplace_back(id_str + (boost::format(I18N::translate_utf8(L("Color change for Extruder %d at %.2f mm"))) % custom_gcode_per_print_z[i].extruder % custom_gcode_per_print_z[i].print_z).str()); - } - } -} - -bool GLCanvas3D::LegendTexture::generate(const GCodePreviewData& preview_data, const std::vector& tool_colors_in, const GLCanvas3D& canvas, bool compress) -{ - reset(); - - // collects items to render - auto title = _(preview_data.get_legend_title()); - - std::vector cp_legend_items; - std::vector cp_colors; - - if (preview_data.extrusion.view_type == GCodePreviewData::Extrusion::ColorPrint) - { - cp_legend_items.reserve(cp_colors.size()); - fill_color_print_legend_items(canvas, tool_colors_in, cp_colors, cp_legend_items); - } - - const std::vector& tool_colors = preview_data.extrusion.view_type == GCodePreviewData::Extrusion::ColorPrint ? cp_colors : tool_colors_in; - const GCodePreviewData::LegendItemsList& items = preview_data.get_legend_items(tool_colors, cp_legend_items); - - unsigned int items_count = (unsigned int)items.size(); - if (items_count == 0) - // nothing to render, return - return false; - - wxMemoryDC memDC; - wxMemoryDC mask_memDC; - - // calculate scaling - const float scale_gl = canvas.get_canvas_size().get_scale_factor(); -#if ENABLE_RETINA_GL - // For non-visible or non-created window getBackingScaleFactor function return 0.0 value. - // And using of the zero scale causes a crash, when we trying to draw text to the (0,0) rectangle - if (scale_gl <= 0.0f) - return false; -#endif - const float scale = scale_gl * wxGetApp().em_unit()*0.1; // get scale from em_unit() value, because of get_scale_factor() return 1 - const int scaled_square = std::floor((float)Px_Square * scale); - const int scaled_title_offset = Px_Title_Offset * scale; - const int scaled_text_offset = Px_Text_Offset * scale; - const int scaled_square_contour = Px_Square_Contour * scale; - const int scaled_border = Px_Border * scale; - -#ifdef __WXMSW__ - // set scaled application normal font as default font - wxFont font = wxGetApp().normal_font(); - - // Disabling ClearType works, but the font returned is very different (much thicker) from the default. -// msw_disable_cleartype(font); -// bool cleartype = is_font_cleartype(font); -#else - // select default font - wxFont font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT).Scale(scale_gl); -// bool cleartype = false; -#endif /* __WXMSW__ */ - - memDC.SetFont(font); - mask_memDC.SetFont(font); - - // calculates texture size - wxCoord w, h; - memDC.GetTextExtent(title, &w, &h); - int title_width = (int)w; - int title_height = (int)h; - - int max_text_width = 0; - int max_text_height = 0; - for (const GCodePreviewData::LegendItem& item : items) - { - memDC.GetTextExtent(GUI::from_u8(item.text), &w, &h); - max_text_width = std::max(max_text_width, (int)w); - max_text_height = std::max(max_text_height, (int)h); - } - - m_original_width = std::max(2 * scaled_border + title_width, 2 * (scaled_border + scaled_square_contour) + scaled_square + scaled_text_offset + max_text_width); - m_original_height = 2 * (scaled_border + scaled_square_contour) + title_height + scaled_title_offset + items_count * scaled_square; - if (items_count > 1) - m_original_height += (items_count - 1) * scaled_square_contour; - - m_width = (int)next_highest_power_of_2((uint32_t)m_original_width); - m_height = (int)next_highest_power_of_2((uint32_t)m_original_height); - - // generates bitmap - wxBitmap bitmap(m_width, m_height); - wxBitmap mask(m_width, m_height); - - memDC.SelectObject(bitmap); - mask_memDC.SelectObject(mask); - - memDC.SetBackground(wxBrush(*wxBLACK)); - mask_memDC.SetBackground(wxBrush(*wxBLACK)); - - memDC.Clear(); - mask_memDC.Clear(); - - // draw title - memDC.SetTextForeground(*wxWHITE); - mask_memDC.SetTextForeground(*wxRED); - - int title_x = scaled_border; - int title_y = scaled_border; - memDC.DrawText(title, title_x, title_y); - mask_memDC.DrawText(title, title_x, title_y); - - // draw icons contours as background - int squares_contour_x = scaled_border; - int squares_contour_y = scaled_border + title_height + scaled_title_offset; - int squares_contour_width = scaled_square + 2 * scaled_square_contour; - int squares_contour_height = items_count * scaled_square + 2 * scaled_square_contour; - if (items_count > 1) - squares_contour_height += (items_count - 1) * scaled_square_contour; - - wxColour color(Squares_Border_Color[0], Squares_Border_Color[1], Squares_Border_Color[2]); - wxPen pen(color); - wxBrush brush(color); - memDC.SetPen(pen); - memDC.SetBrush(brush); - memDC.DrawRectangle(wxRect(squares_contour_x, squares_contour_y, squares_contour_width, squares_contour_height)); - - // draw items (colored icon + text) - int icon_x = squares_contour_x + scaled_square_contour; - int icon_x_inner = icon_x + 1; - int icon_y = squares_contour_y + scaled_square_contour; - int icon_y_step = scaled_square + scaled_square_contour; - - int text_x = icon_x + scaled_square + scaled_text_offset; - int text_y_offset = (scaled_square - max_text_height) / 2; - - int px_inner_square = scaled_square - 2; - - for (const GCodePreviewData::LegendItem& item : items) - { - // draw darker icon perimeter - const std::vector& item_color_bytes = item.color.as_bytes(); - wxImage::HSVValue dark_hsv = wxImage::RGBtoHSV(wxImage::RGBValue(item_color_bytes[0], item_color_bytes[1], item_color_bytes[2])); - dark_hsv.value *= 0.75; - wxImage::RGBValue dark_rgb = wxImage::HSVtoRGB(dark_hsv); - color.Set(dark_rgb.red, dark_rgb.green, dark_rgb.blue, item_color_bytes[3]); - pen.SetColour(color); - brush.SetColour(color); - memDC.SetPen(pen); - memDC.SetBrush(brush); - memDC.DrawRectangle(wxRect(icon_x, icon_y, scaled_square, scaled_square)); - - // draw icon interior - color.Set(item_color_bytes[0], item_color_bytes[1], item_color_bytes[2], item_color_bytes[3]); - pen.SetColour(color); - brush.SetColour(color); - memDC.SetPen(pen); - memDC.SetBrush(brush); - memDC.DrawRectangle(wxRect(icon_x_inner, icon_y + 1, px_inner_square, px_inner_square)); - - // draw text - mask_memDC.DrawText(GUI::from_u8(item.text), text_x, icon_y + text_y_offset); - - // update y - icon_y += icon_y_step; - } - - memDC.SelectObject(wxNullBitmap); - mask_memDC.SelectObject(wxNullBitmap); - - // Convert the bitmap into a linear data ready to be loaded into the GPU. - wxImage image = bitmap.ConvertToImage(); - wxImage mask_image = mask.ConvertToImage(); - - // prepare buffer - std::vector data(4 * m_width * m_height, 0); - const unsigned char *src_image = image.GetData(); - const unsigned char *src_mask = mask_image.GetData(); - for (int h = 0; h < m_height; ++h) - { - int hh = h * m_width; - unsigned char* px_ptr = data.data() + 4 * hh; - for (int w = 0; w < m_width; ++w) - { - if (w >= squares_contour_x && w < squares_contour_x + squares_contour_width && - h >= squares_contour_y && h < squares_contour_y + squares_contour_height) { - // Color palette, use the color verbatim. - *px_ptr++ = *src_image++; - *px_ptr++ = *src_image++; - *px_ptr++ = *src_image++; - *px_ptr++ = 255; - } else { - // Text or background - unsigned char alpha = *src_mask; - // Compensate the white color for the 50% opacity reduction at the character edges. - //unsigned char color = (unsigned char)floor(alpha * 255.f / (128.f + 0.5f * alpha)); - unsigned char color = alpha; - *px_ptr++ = color; - *px_ptr++ = color; // *src_mask ++; - *px_ptr++ = color; // *src_mask ++; - *px_ptr++ = 128 + (alpha / 2); // (alpha > 0) ? 255 : 128; - src_image += 3; - } - src_mask += 3; - } - } - - // sends buffer to gpu - glsafe(::glPixelStorei(GL_UNPACK_ALIGNMENT, 1)); - glsafe(::glGenTextures(1, &m_id)); - glsafe(::glBindTexture(GL_TEXTURE_2D, (GLuint)m_id)); - if (compress && GLEW_EXT_texture_compression_s3tc) - glsafe(::glTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, (GLsizei)m_width, (GLsizei)m_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, (const void*)data.data())); - else - glsafe(::glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, (GLsizei)m_width, (GLsizei)m_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, (const void*)data.data())); - glsafe(::glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)); - glsafe(::glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)); - glsafe(::glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 0)); - glsafe(::glBindTexture(GL_TEXTURE_2D, 0)); - - return true; -} - -void GLCanvas3D::LegendTexture::render(const GLCanvas3D& canvas) const -{ - if ((m_id > 0) && (m_original_width > 0) && (m_original_height > 0) && (m_width > 0) && (m_height > 0)) - { - const Size& cnv_size = canvas.get_canvas_size(); - float inv_zoom = (float)wxGetApp().plater()->get_camera().get_inv_zoom(); - float left = (-0.5f * (float)cnv_size.get_width()) * inv_zoom; - float top = (0.5f * (float)cnv_size.get_height()) * inv_zoom; - float right = left + (float)m_original_width * inv_zoom; - float bottom = top - (float)m_original_height * inv_zoom; - - float uv_left = 0.0f; - float uv_top = 0.0f; - float uv_right = (float)m_original_width / (float)m_width; - float uv_bottom = (float)m_original_height / (float)m_height; - - GLTexture::Quad_UVs uvs; - uvs.left_top = { uv_left, uv_top }; - uvs.left_bottom = { uv_left, uv_bottom }; - uvs.right_bottom = { uv_right, uv_bottom }; - uvs.right_top = { uv_right, uv_top }; - - GLTexture::render_sub_texture(m_id, left, right, bottom, top, uvs); - } -} -#endif // !ENABLE_GCODE_VIEWER - void GLCanvas3D::Labels::render(const std::vector& sorted_instances) const { if (!m_enabled || !is_shown()) @@ -1358,8 +987,7 @@ void GLCanvas3D::Labels::render(const std::vector& sorted_ ImGui::AlignTextToFramePadding(); imgui.text(owner.label); - if (!owner.print_order.empty()) - { + if (!owner.print_order.empty()) { ImGui::Separator(); float po_len = imgui.calc_text_size(owner.print_order).x; ImGui::SetCursorPosX(0.5f * (win_w - po_len)); @@ -1381,8 +1009,7 @@ void GLCanvas3D::Tooltip::set_text(const std::string& text) { // If the mouse is inside an ImGUI dialog, then the tooltip is suppressed. const std::string &new_text = m_in_imgui ? std::string() : text; - if (m_text != new_text) - { + if (m_text != new_text) { if (m_text.empty()) m_start_time = std::chrono::steady_clock::now(); @@ -1415,7 +1042,7 @@ void GLCanvas3D::Tooltip::render(const Vec2d& mouse_position, GLCanvas3D& canvas ImGui::PushStyleVar(ImGuiStyleVar_Alpha, alpha); imgui.set_next_window_pos(position(0), position(1), ImGuiCond_Always, 0.0f, 0.0f); - imgui.begin(_L("canvas_tooltip"), ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoMouseInputs | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoDecoration | ImGuiWindowFlags_NoFocusOnAppearing); + imgui.begin(wxString("canvas_tooltip"), ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoMouseInputs | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoDecoration | ImGuiWindowFlags_NoFocusOnAppearing); ImGui::BringWindowToDisplayFront(ImGui::GetCurrentWindow()); ImGui::TextUnformatted(m_text.c_str()); @@ -1451,12 +1078,9 @@ wxDEFINE_EVENT(EVT_GLCANVAS_MOUSE_DRAGGING_FINISHED, SimpleEvent); wxDEFINE_EVENT(EVT_GLCANVAS_UPDATE_BED_SHAPE, SimpleEvent); wxDEFINE_EVENT(EVT_GLCANVAS_TAB, SimpleEvent); wxDEFINE_EVENT(EVT_GLCANVAS_RESETGIZMOS, SimpleEvent); -#if ENABLE_GCODE_VIEWER wxDEFINE_EVENT(EVT_GLCANVAS_MOVE_LAYERS_SLIDER, wxKeyEvent); -#else -wxDEFINE_EVENT(EVT_GLCANVAS_MOVE_DOUBLE_SLIDER, wxKeyEvent); -#endif // ENABLE_GCODE_VIEWER wxDEFINE_EVENT(EVT_GLCANVAS_EDIT_COLOR_CHANGE, wxKeyEvent); +wxDEFINE_EVENT(EVT_GLCANVAS_JUMP_TO, wxKeyEvent); wxDEFINE_EVENT(EVT_GLCANVAS_UNDO, SimpleEvent); wxDEFINE_EVENT(EVT_GLCANVAS_REDO, SimpleEvent); wxDEFINE_EVENT(EVT_GLCANVAS_COLLAPSE_SIDEBAR, SimpleEvent); @@ -1467,6 +1091,25 @@ wxDEFINE_EVENT(EVT_GLCANVAS_RELOAD_FROM_DISK, SimpleEvent); const double GLCanvas3D::DefaultCameraZoomToBoxMarginFactor = 1.25; +GLCanvas3D::ArrangeSettings load_arrange_settings() +{ + GLCanvas3D::ArrangeSettings settings; + + std::string dist_str = + wxGetApp().app_config->get("arrange", "min_object_distance"); + + std::string en_rot_str = + wxGetApp().app_config->get("arrange", "enable_rotation"); + + if (!dist_str.empty()) + settings.distance = std::stof(dist_str); + + if (!en_rot_str.empty()) + settings.enable_rotation = (en_rot_str == "1" || en_rot_str == "yes"); + + return settings; +} + GLCanvas3D::GLCanvas3D(wxGLCanvas* canvas) : m_canvas(canvas) , m_context(nullptr) @@ -1486,9 +1129,6 @@ GLCanvas3D::GLCanvas3D(wxGLCanvas* canvas) , m_dirty(true) , m_initialized(false) , m_apply_zoom_to_volumes_filter(false) -#if !ENABLE_GCODE_VIEWER - , m_legend_texture_enabled(false) -#endif // !ENABLE_GCODE_VIEWER , m_picking_enabled(false) , m_moving_enabled(false) , m_dynamic_background_enabled(false) @@ -1512,6 +1152,8 @@ GLCanvas3D::GLCanvas3D(wxGLCanvas* canvas) #endif // ENABLE_RETINA_GL } + m_arrange_settings = load_arrange_settings(); + m_selection.set_volumes(&m_volumes.volumes); } @@ -1686,12 +1328,10 @@ void GLCanvas3D::toggle_model_objects_visibility(bool visible, const ModelObject void GLCanvas3D::update_instance_printable_state_for_object(const size_t obj_idx) { ModelObject* model_object = m_model->objects[obj_idx]; - for (int inst_idx = 0; inst_idx < (int)model_object->instances.size(); ++inst_idx) - { + for (int inst_idx = 0; inst_idx < (int)model_object->instances.size(); ++inst_idx) { ModelInstance* instance = model_object->instances[inst_idx]; - for (GLVolume* volume : m_volumes.volumes) - { + for (GLVolume* volume : m_volumes.volumes) { if ((volume->object_idx() == (int)obj_idx) && (volume->instance_idx() == inst_idx)) volume->printable = instance->printable; } @@ -1741,8 +1381,7 @@ void GLCanvas3D::refresh_camera_scene_box() BoundingBoxf3 GLCanvas3D::volumes_bounding_box() const { BoundingBoxf3 bb; - for (const GLVolume* volume : m_volumes.volumes) - { + for (const GLVolume* volume : m_volumes.volumes) { if (!m_apply_zoom_to_volumes_filter || ((volume != nullptr) && volume->zoom_to_volumes)) bb.merge(volume->transformed_bounding_box()); } @@ -1753,8 +1392,7 @@ BoundingBoxf3 GLCanvas3D::scene_bounding_box() const { BoundingBoxf3 bb = volumes_bounding_box(); bb.merge(wxGetApp().plater()->get_bed().get_bounding_box(true)); - if (m_config != nullptr) - { + if (m_config != nullptr) { double h = m_config->opt_float("max_print_height"); bb.min(2) = std::min(bb.min(2), -h); bb.max(2) = std::max(bb.max(2), h); @@ -1775,7 +1413,7 @@ bool GLCanvas3D::is_layers_editing_allowed() const void GLCanvas3D::reset_layer_height_profile() { - wxGetApp().plater()->take_snapshot(_(L("Variable layer height - Reset"))); + wxGetApp().plater()->take_snapshot(_L("Variable layer height - Reset")); m_layers_editing.reset_layer_height_profile(*this); m_layers_editing.state = LayersEditing::Completed; m_dirty = true; @@ -1783,7 +1421,7 @@ void GLCanvas3D::reset_layer_height_profile() void GLCanvas3D::adaptive_layer_height_profile(float quality_factor) { - wxGetApp().plater()->take_snapshot(_(L("Variable layer height - Adaptive"))); + wxGetApp().plater()->take_snapshot(_L("Variable layer height - Adaptive")); m_layers_editing.adaptive_layer_height_profile(*this, quality_factor); m_layers_editing.state = LayersEditing::Completed; m_dirty = true; @@ -1791,7 +1429,7 @@ void GLCanvas3D::adaptive_layer_height_profile(float quality_factor) void GLCanvas3D::smooth_layer_height_profile(const HeightProfileSmoothingParams& smoothing_params) { - wxGetApp().plater()->take_snapshot(_(L("Variable layer height - Smooth all"))); + wxGetApp().plater()->take_snapshot(_L("Variable layer height - Smooth all")); m_layers_editing.smooth_layer_height_profile(*this, smoothing_params); m_layers_editing.state = LayersEditing::Completed; m_dirty = true; @@ -1806,8 +1444,7 @@ void GLCanvas3D::enable_layers_editing(bool enable) { m_layers_editing.set_enabled(enable); const Selection::IndicesList& idxs = m_selection.get_volume_idxs(); - for (unsigned int idx : idxs) - { + for (unsigned int idx : idxs) { GLVolume* v = m_volumes.volumes[idx]; if (v->is_modifier) v->force_transparent = enable; @@ -1818,11 +1455,7 @@ void GLCanvas3D::enable_layers_editing(bool enable) void GLCanvas3D::enable_legend_texture(bool enable) { -#if ENABLE_GCODE_VIEWER m_gcode_viewer.enable_legend(enable); -#else - m_legend_texture_enabled = enable; -#endif // ENABLE_GCODE_VIEWER } void GLCanvas3D::enable_picking(bool enable) @@ -1884,12 +1517,10 @@ void GLCanvas3D::zoom_to_selection() _zoom_to_box(m_selection.get_bounding_box()); } -#if ENABLE_GCODE_VIEWER void GLCanvas3D::zoom_to_gcode() { _zoom_to_box(m_gcode_viewer.get_paths_bounding_box(), 1.05); } -#endif // ENABLE_GCODE_VIEWER void GLCanvas3D::select_view(const std::string& direction) { @@ -1906,8 +1537,7 @@ void GLCanvas3D::update_volumes_colors_by_extruder() void GLCanvas3D::render() { - if (m_in_render) - { + if (m_in_render) { // if called recursively, return m_dirty = true; return; @@ -1931,17 +1561,14 @@ void GLCanvas3D::render() auto start_time = std::chrono::high_resolution_clock::now(); #endif // ENABLE_RENDER_STATISTICS - if (wxGetApp().plater()->get_bed().get_shape().empty()) - { + if (wxGetApp().plater()->get_bed().get_shape().empty()) { // this happens at startup when no data is still saved under <>\AppData\Roaming\Slic3rPE post_event(SimpleEvent(EVT_GLCANVAS_UPDATE_BED_SHAPE)); return; } #if ENABLE_ENVIRONMENT_MAP -#if ENABLE_GCODE_VIEWER if (wxGetApp().is_editor()) -#endif // ENABLE_GCODE_VIEWER wxGetApp().plater()->init_environment_texture(); #endif // ENABLE_ENVIRONMENT_MAP @@ -1953,8 +1580,7 @@ void GLCanvas3D::render() Camera& camera = wxGetApp().plater()->get_camera(); camera.apply_viewport(0, 0, std::max(10u, (unsigned int)cnv_size.get_width()), std::max(10u, (unsigned int)cnv_size.get_height())); - if (camera.requires_zoom_to_bed) - { + if (camera.requires_zoom_to_bed) { zoom_to_bed(); _resize((unsigned int)cnv_size.get_width(), (unsigned int)cnv_size.get_height()); camera.requires_zoom_to_bed = false; @@ -1970,8 +1596,7 @@ void GLCanvas3D::render() wxGetApp().imgui()->new_frame(); - if (m_picking_enabled) - { + if (m_picking_enabled) { if (m_rectangle_selection.is_dragging()) // picking pass using rectangle selection _rectangular_selection_picking_pass(); @@ -1981,18 +1606,15 @@ void GLCanvas3D::render() } #if ENABLE_RENDER_PICKING_PASS - if (!m_picking_enabled || !m_show_picking_texture) - { + if (!m_picking_enabled || !m_show_picking_texture) { #endif // ENABLE_RENDER_PICKING_PASS // draw scene glsafe(::glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)); _render_background(); _render_objects(); -#if ENABLE_GCODE_VIEWER if (!m_main_toolbar.is_enabled()) _render_gcode(); -#endif // ENABLE_GCODE_VIEWER _render_sla_slices(); _render_selection(); _render_bed(!camera.is_looking_downward(), true); @@ -2004,10 +1626,8 @@ void GLCanvas3D::render() // we need to set the mouse's scene position here because the depth buffer // could be invalidated by the following gizmo render methods // this position is used later into on_mouse() to drag the objects -#if ENABLE_GCODE_VIEWER if (m_picking_enabled) -#endif // ENABLE_GCODE_VIEWER - m_mouse.scene_position = _mouse_to_3d(m_mouse.position.cast()); + m_mouse.scene_position = _mouse_to_3d(m_mouse.position.cast()); _render_current_gizmo(); _render_selection_sidebar_hints(); @@ -2053,8 +1673,7 @@ void GLCanvas3D::render() // Negative coordinate means out of the window, likely because the window was deactivated. // In that case the tooltip should be hidden. - if (m_mouse.position.x() >= 0. && m_mouse.position.y() >= 0.) - { + if (m_mouse.position.x() >= 0. && m_mouse.position.y() >= 0.) { if (tooltip.empty()) tooltip = m_layers_editing.get_tooltip(*this); @@ -2128,10 +1747,8 @@ void GLCanvas3D::ensure_on_bed(unsigned int object_idx) typedef std::map, double> InstancesToZMap; InstancesToZMap instances_min_z; - for (GLVolume* volume : m_volumes.volumes) - { - if ((volume->object_idx() == (int)object_idx) && !volume->is_modifier) - { + for (GLVolume* volume : m_volumes.volumes) { + if (volume->object_idx() == (int)object_idx && !volume->is_modifier) { double min_z = volume->transformed_convex_hull_bounding_box().min(2); std::pair instance = std::make_pair(volume->object_idx(), volume->instance_idx()); InstancesToZMap::iterator it = instances_min_z.find(instance); @@ -2142,8 +1759,7 @@ void GLCanvas3D::ensure_on_bed(unsigned int object_idx) } } - for (GLVolume* volume : m_volumes.volumes) - { + for (GLVolume* volume : m_volumes.volumes) { std::pair instance = std::make_pair(volume->object_idx(), volume->instance_idx()); InstancesToZMap::iterator it = instances_min_z.find(instance); if (it != instances_min_z.end()) @@ -2152,7 +1768,6 @@ void GLCanvas3D::ensure_on_bed(unsigned int object_idx) } -#if ENABLE_GCODE_VIEWER const std::vector& GLCanvas3D::get_gcode_layers_zs() const { return m_gcode_viewer.get_layers_zs(); @@ -2178,30 +1793,21 @@ void GLCanvas3D::set_toolpath_view_type(GCodeViewer::EViewType type) m_gcode_viewer.set_view_type(type); } -void GLCanvas3D::set_toolpaths_z_range(const std::array& range) +void GLCanvas3D::set_volumes_z_range(const std::array& range) { m_volumes.set_range(range[0] - 1e-6, range[1] + 1e-6); +} + +void GLCanvas3D::set_toolpaths_z_range(const std::array& range) +{ if (m_gcode_viewer.has_data()) m_gcode_viewer.set_layers_z_range(range); } -#else -std::vector GLCanvas3D::get_current_print_zs(bool active_only) const -{ - return m_volumes.get_current_print_zs(active_only); -} - -void GLCanvas3D::set_toolpaths_range(double low, double high) -{ - m_volumes.set_range(low, high); -} -#endif // ENABLE_GCODE_VIEWER std::vector GLCanvas3D::load_object(const ModelObject& model_object, int obj_idx, std::vector instance_idxs) { - if (instance_idxs.empty()) - { - for (unsigned int i = 0; i < model_object.instances.size(); ++i) - { + if (instance_idxs.empty()) { + for (unsigned int i = 0; i < model_object.instances.size(); ++i) { instance_idxs.emplace_back(i); } } @@ -2210,8 +1816,7 @@ std::vector GLCanvas3D::load_object(const ModelObject& model_object, int ob std::vector GLCanvas3D::load_object(const Model& model, int obj_idx) { - if ((0 <= obj_idx) && (obj_idx < (int)model.objects.size())) - { + if (0 <= obj_idx && obj_idx < (int)model.objects.size()) { const ModelObject* model_object = model.objects[obj_idx]; if (model_object != nullptr) return load_object(*model_object, obj_idx, std::vector()); @@ -2235,7 +1840,7 @@ void GLCanvas3D::mirror_selection(Axis axis) // 5) Out of bed collision status & message overlay (texture) void GLCanvas3D::reload_scene(bool refresh_immediately, bool force_full_scene_refresh) { - if ((m_canvas == nullptr) || (m_config == nullptr) || (m_model == nullptr)) + if (m_canvas == nullptr || m_config == nullptr || m_model == nullptr) return; if (!m_initialized) @@ -2534,16 +2139,14 @@ void GLCanvas3D::reload_scene(bool refresh_immediately, bool force_full_scene_re volume->set_sla_shift_z(shift_zs[volume->object_idx()]); } - if (printer_technology == ptFFF && m_config->has("nozzle_diameter")) - { + if (printer_technology == ptFFF && m_config->has("nozzle_diameter")) { // Should the wipe tower be visualized ? unsigned int extruders_count = (unsigned int)dynamic_cast(m_config->option("nozzle_diameter"))->values.size(); bool wt = dynamic_cast(m_config->option("wipe_tower"))->value; bool co = dynamic_cast(m_config->option("complete_objects"))->value; - if ((extruders_count > 1) && wt && !co) - { + if ((extruders_count > 1) && wt && !co) { // Height of a print (Show at least a slab) double height = std::max(m_model->bounding_box().max(2), 10.0); @@ -2584,8 +2187,7 @@ void GLCanvas3D::reload_scene(bool refresh_immediately, bool force_full_scene_re post_event(SimpleEvent(EVT_GLCANVAS_OBJECT_SELECT)); // checks for geometry outside the print volume to render it accordingly - if (!m_volumes.empty()) - { + if (!m_volumes.empty()) { ModelInstanceEPrintVolumeState state; const bool contained_min_one = m_volumes.check_outside_state(m_config, &state); @@ -2598,8 +2200,7 @@ void GLCanvas3D::reload_scene(bool refresh_immediately, bool force_full_scene_re post_event(Event(EVT_GLCANVAS_ENABLE_ACTION_BUTTONS, contained_min_one && !m_model->objects.empty() && state != ModelInstancePVS_Partly_Outside)); } - else - { + else { _set_warning_texture(WarningTexture::ObjectOutside, false); _set_warning_texture(WarningTexture::ObjectClashed, false); _set_warning_texture(WarningTexture::SlaSupportsOutside, false); @@ -2608,8 +2209,7 @@ void GLCanvas3D::reload_scene(bool refresh_immediately, bool force_full_scene_re refresh_camera_scene_box(); - if (m_selection.is_empty()) - { + if (m_selection.is_empty()) { // If no object is selected, deactivate the active gizmo, if any // Otherwise it may be shown after cleaning the scene (if it was active while the objects were deleted) m_gizmos.reset_all_states(); @@ -2640,40 +2240,6 @@ static void reserve_new_volume_finalize_old_volume(GLVolume& vol_new, GLVolume& vol_old.finalize_geometry(gl_initialized); } -#if !ENABLE_GCODE_VIEWER -static void load_gcode_retractions(const GCodePreviewData::Retraction& retractions, GLCanvas3D::GCodePreviewVolumeIndex::EType extrusion_type, GLVolumeCollection &volumes, GLCanvas3D::GCodePreviewVolumeIndex &volume_index, bool gl_initialized) -{ - // nothing to render, return - if (retractions.positions.empty()) - return; - - volume_index.first_volumes.emplace_back(extrusion_type, 0, (unsigned int)volumes.volumes.size()); - - GLVolume *volume = volumes.new_nontoolpath_volume(retractions.color.rgba.data(), VERTEX_BUFFER_RESERVE_SIZE); - - GCodePreviewData::Retraction::PositionsList copy(retractions.positions); - std::sort(copy.begin(), copy.end(), [](const GCodePreviewData::Retraction::Position& p1, const GCodePreviewData::Retraction::Position& p2) { return p1.position(2) < p2.position(2); }); - - for (const GCodePreviewData::Retraction::Position& position : copy) - { - volume->print_zs.emplace_back(unscale(position.position(2))); - volume->offsets.emplace_back(volume->indexed_vertex_array.quad_indices.size()); - volume->offsets.emplace_back(volume->indexed_vertex_array.triangle_indices.size()); - - _3DScene::point3_to_verts(position.position, position.width, position.height, *volume); - - // Ensure that no volume grows over the limits. If the volume is too large, allocate a new one. - if (volume->indexed_vertex_array.vertices_and_normals_interleaved.size() > MAX_VERTEX_BUFFER_SIZE) { - GLVolume &vol = *volume; - volume = volumes.new_nontoolpath_volume(vol.color); - reserve_new_volume_finalize_old_volume(*volume, vol, gl_initialized); - } - } - volume->indexed_vertex_array.finalize_geometry(gl_initialized); -} -#endif // !ENABLE_GCODE_VIEWER - -#if ENABLE_GCODE_VIEWER void GLCanvas3D::load_gcode_preview(const GCodeProcessor::Result& gcode_result) { m_gcode_viewer.load(gcode_result, *this->fff_print(), m_initialized); @@ -2687,82 +2253,11 @@ void GLCanvas3D::refresh_gcode_preview(const GCodeProcessor::Result& gcode_resul set_as_dirty(); request_extra_frame(); } -#else -void GLCanvas3D::load_gcode_preview(const GCodePreviewData& preview_data, const std::vector& str_tool_colors) -{ - const Print *print = this->fff_print(); - if ((m_canvas != nullptr) && (print != nullptr)) - { - _set_current(); - - std::vector tool_colors = _parse_colors(str_tool_colors); - - if (m_volumes.empty()) - { - m_gcode_preview_volume_index.reset(); - - _load_gcode_extrusion_paths(preview_data, tool_colors); - _load_gcode_travel_paths(preview_data, tool_colors); - load_gcode_retractions(preview_data.retraction, GCodePreviewVolumeIndex::Retraction, m_volumes, m_gcode_preview_volume_index, m_initialized); - load_gcode_retractions(preview_data.unretraction, GCodePreviewVolumeIndex::Unretraction, m_volumes, m_gcode_preview_volume_index, m_initialized); - - if (!m_volumes.empty()) - { - // Remove empty volumes from both m_volumes, update m_gcode_preview_volume_index. - { - size_t idx_volume_src = 0; - size_t idx_volume_dst = 0; - size_t idx_volume_index_src = 0; - size_t idx_volume_index_dst = 0; - size_t idx_volume_of_this_type_last = (idx_volume_index_src + 1 == m_gcode_preview_volume_index.first_volumes.size()) ? m_volumes.volumes.size() : m_gcode_preview_volume_index.first_volumes[idx_volume_index_src + 1].id; - size_t idx_volume_of_this_type_first_new = 0; - for (;;) { - if (idx_volume_src == idx_volume_of_this_type_last) { - if (idx_volume_of_this_type_first_new < idx_volume_dst) { - // There are some volumes of this type left, therefore their entry in the index has to be maintained. - if (idx_volume_index_dst < idx_volume_index_src) - m_gcode_preview_volume_index.first_volumes[idx_volume_index_dst] = m_gcode_preview_volume_index.first_volumes[idx_volume_index_src]; - m_gcode_preview_volume_index.first_volumes[idx_volume_index_dst].id = idx_volume_of_this_type_first_new; - ++ idx_volume_index_dst; - } - if (idx_volume_of_this_type_last == m_volumes.volumes.size()) - break; - ++ idx_volume_index_src; - idx_volume_of_this_type_last = (idx_volume_index_src + 1 == m_gcode_preview_volume_index.first_volumes.size()) ? m_volumes.volumes.size() : m_gcode_preview_volume_index.first_volumes[idx_volume_index_src + 1].id; - idx_volume_of_this_type_first_new = idx_volume_dst; - if (idx_volume_src == idx_volume_of_this_type_last) - // Empty sequence of volumes for the current index item. - continue; - } - if (! m_volumes.volumes[idx_volume_src]->print_zs.empty()) - m_volumes.volumes[idx_volume_dst ++] = m_volumes.volumes[idx_volume_src]; - ++ idx_volume_src; - } - m_volumes.volumes.erase(m_volumes.volumes.begin() + idx_volume_dst, m_volumes.volumes.end()); - m_gcode_preview_volume_index.first_volumes.erase(m_gcode_preview_volume_index.first_volumes.begin() + idx_volume_index_dst, m_gcode_preview_volume_index.first_volumes.end()); - } - - _load_fff_shells(); - } - _update_toolpath_volumes_outside_state(); - } - - _update_gcode_volumes_visibility(preview_data); - _show_warning_texture_if_needed(WarningTexture::ToolpathOutside); - - if (m_volumes.empty()) - reset_legend_texture(); - else - _generate_legend_texture(preview_data, tool_colors); - } -} -#endif // ENABLE_GCODE_VIEWER void GLCanvas3D::load_sla_preview() { const SLAPrint* print = this->sla_print(); - if ((m_canvas != nullptr) && (print != nullptr)) - { + if (m_canvas != nullptr && print != nullptr) { _set_current(); // Release OpenGL data before generating new data. this->reset_volumes(); @@ -2790,16 +2285,6 @@ void GLCanvas3D::load_preview(const std::vector& str_tool_colors, c _update_toolpath_volumes_outside_state(); _show_warning_texture_if_needed(WarningTexture::ToolpathOutside); -#if !ENABLE_GCODE_VIEWER - if (color_print_values.empty()) - reset_legend_texture(); - else { - auto preview_data = GCodePreviewData(); - preview_data.extrusion.view_type = GCodePreviewData::Extrusion::ColorPrint; - const std::vector tool_colors = _parse_colors(str_tool_colors); - _generate_legend_texture(preview_data, tool_colors); - } -#endif // !ENABLE_GCODE_VIEWER } void GLCanvas3D::bind_event_handlers() @@ -2899,6 +2384,7 @@ void GLCanvas3D::on_char(wxKeyEvent& evt) // see include/wx/defs.h enum wxKeyCode int keyCode = evt.GetKeyCode(); int ctrlMask = wxMOD_CONTROL; + int shiftMask = wxMOD_SHIFT; auto imgui = wxGetApp().imgui(); if (imgui->update_key_data(evt)) { @@ -2906,12 +2392,23 @@ void GLCanvas3D::on_char(wxKeyEvent& evt) return; } - if ((keyCode == WXK_ESCAPE) && (_deactivate_undo_redo_toolbar_items() || _deactivate_search_toolbar_item())) + if (keyCode == WXK_ESCAPE && (_deactivate_undo_redo_toolbar_items() || _deactivate_search_toolbar_item() || _deactivate_arrange_menu())) return; 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)); + }; + //#ifdef __APPLE__ // ctrlMask |= wxMOD_RAW_CONTROL; //#endif /* __APPLE__ */ @@ -2934,7 +2431,16 @@ void GLCanvas3D::on_char(wxKeyEvent& evt) post_event(SimpleEvent(EVT_GLTOOLBAR_COPY)); break; -#ifdef __linux__ +#if ENABLE_CTRL_M_ON_WINDOWS + case WXK_CONTROL_M: + { + Mouse3DController& controller = wxGetApp().plater()->get_mouse3d_controller(); + controller.show_settings_dialog(!controller.is_settings_dialog_shown()); + m_dirty = true; + break; + } +#else +#if defined(__linux__) || defined(__APPLE__) case WXK_CONTROL_M: { Mouse3DController& controller = wxGetApp().plater()->get_mouse3d_controller(); @@ -2943,6 +2449,7 @@ void GLCanvas3D::on_char(wxKeyEvent& evt) break; } #endif /* __linux__ */ +#endif // ENABLE_CTRL_M_ON_WINDOWS #ifdef __APPLE__ case 'v': @@ -2986,6 +2493,21 @@ void GLCanvas3D::on_char(wxKeyEvent& evt) post_event(SimpleEvent(EVT_GLTOOLBAR_DELETE_ALL)); break; default: evt.Skip(); } + } + else if ((evt.GetModifiers() & shiftMask) != 0) { + 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; + } + default: + evt.Skip(); + } } else if (evt.HasModifiers()) { evt.Skip(); } else { @@ -3004,13 +2526,8 @@ 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 '+': { - 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 '-': { + case '+': { action_plus(evt); break; } + case '-': { if (dynamic_cast(m_canvas->GetParent()) != nullptr) post_event(wxKeyEvent(EVT_GLCANVAS_EDIT_COLOR_CHANGE, evt)); else @@ -3018,7 +2535,7 @@ void GLCanvas3D::on_char(wxKeyEvent& evt) break; } case '?': { post_event(SimpleEvent(EVT_GLCANVAS_QUESTION_MARK)); break; } case 'A': - case 'a': { post_event(SimpleEvent(EVT_GLCANVAS_ARRANGE)); break; } + case 'a': { action_a(); break; } case 'B': case 'b': { zoom_to_bed(); break; } case 'E': @@ -3027,7 +2544,6 @@ void GLCanvas3D::on_char(wxKeyEvent& evt) case 'i': { _update_camera_zoom(1.0); break; } case 'K': case 'k': { wxGetApp().plater()->get_camera().select_next_type(); m_dirty = true; break; } -#if ENABLE_GCODE_VIEWER case 'L': case 'l': { if (!m_main_toolbar.is_enabled()) { @@ -3037,7 +2553,6 @@ void GLCanvas3D::on_char(wxKeyEvent& evt) } break; } -#endif // ENABLE_GCODE_VIEWER case 'O': case 'o': { _update_camera_zoom(-1.0); break; } #if ENABLE_RENDER_PICKING_PASS @@ -3049,13 +2564,11 @@ void GLCanvas3D::on_char(wxKeyEvent& evt) } #endif // ENABLE_RENDER_PICKING_PASS case 'Z': -#if ENABLE_GCODE_VIEWER case 'z': { if (!m_selection.is_empty()) zoom_to_selection(); - else - { + else { if (!m_volumes.empty()) zoom_to_volumes(); else @@ -3064,9 +2577,6 @@ void GLCanvas3D::on_char(wxKeyEvent& evt) break; } -#else - case 'z': { m_selection.is_empty() ? zoom_to_volumes() : zoom_to_selection(); break; } -#endif // ENABLE_GCODE_VIEWER default: { evt.Skip(); break; } } } @@ -3179,8 +2689,7 @@ void GLCanvas3D::on_key(wxKeyEvent& evt) double multiplier = slow ? 1.0 : 10.0; Vec3d displacement; - if (camera_space) - { + if (camera_space) { Eigen::Matrix inv_view_3x3 = wxGetApp().plater()->get_camera().get_view_matrix().inverse().matrix().block(0, 0, 3, 3); displacement = multiplier * (inv_view_3x3 * direction); displacement(2) = 0.0; @@ -3201,24 +2710,21 @@ void GLCanvas3D::on_key(wxKeyEvent& evt) } else { - if (!m_gizmos.on_key(evt)) - { + if (!m_gizmos.on_key(evt)) { if (evt.GetEventType() == wxEVT_KEY_UP) { if (m_tab_down && keyCode == WXK_TAB && !evt.HasAnyModifiers()) { // Enable switching between 3D and Preview with Tab // m_canvas->HandleAsNavigationKey(evt); // XXX: Doesn't work in some cases / on Linux post_event(SimpleEvent(EVT_GLCANVAS_TAB)); } - else if (keyCode == WXK_TAB && evt.ShiftDown()) { + else if (keyCode == WXK_TAB && evt.ShiftDown() && ! wxGetApp().is_gcode_viewer()) { // Collapse side-panel with Shift+Tab post_event(SimpleEvent(EVT_GLCANVAS_COLLAPSE_SIDEBAR)); } - else if (keyCode == WXK_SHIFT) - { + else if (keyCode == WXK_SHIFT) { translationProcessor.process(evt); - if (m_picking_enabled && m_rectangle_selection.is_dragging()) - { + if (m_picking_enabled && m_rectangle_selection.is_dragging()) { _update_selection_from_hover(); m_rectangle_selection.stop_dragging(); m_mouse.ignore_left_up = true; @@ -3226,10 +2732,8 @@ void GLCanvas3D::on_key(wxKeyEvent& evt) } // set_cursor(Standard); } - else if (keyCode == WXK_ALT) - { - if (m_picking_enabled && m_rectangle_selection.is_dragging()) - { + else if (keyCode == WXK_ALT) { + if (m_picking_enabled && m_rectangle_selection.is_dragging()) { _update_selection_from_hover(); m_rectangle_selection.stop_dragging(); m_mouse.ignore_left_up = true; @@ -3266,8 +2770,7 @@ void GLCanvas3D::on_key(wxKeyEvent& evt) } else if (evt.GetEventType() == wxEVT_KEY_DOWN) { m_tab_down = keyCode == WXK_TAB && !evt.HasAnyModifiers(); - if (keyCode == WXK_SHIFT) - { + if (keyCode == WXK_SHIFT) { translationProcessor.process(evt); if (m_picking_enabled && (m_gizmos.get_current_type() != GLGizmosManager::SlaSupports)) @@ -3276,8 +2779,7 @@ void GLCanvas3D::on_key(wxKeyEvent& evt) // set_cursor(Cross); } } - else if (keyCode == WXK_ALT) - { + else if (keyCode == WXK_ALT) { if (m_picking_enabled && (m_gizmos.get_current_type() != GLGizmosManager::SlaSupports)) { m_mouse.ignore_left_up = false; @@ -3286,8 +2788,7 @@ void GLCanvas3D::on_key(wxKeyEvent& evt) } else if (keyCode == WXK_CONTROL) m_dirty = true; - else if (m_gizmos.is_enabled() && !m_selection.is_empty()) - { + else if (m_gizmos.is_enabled() && !m_selection.is_empty()) { auto do_rotate = [this](double angle_z_rad) { m_selection.start_dragging(); m_selection.rotate(Vec3d(0.0, 0.0, angle_z_rad), TransformationType(TransformationType::World_Relative_Joint)); @@ -3304,20 +2805,14 @@ void GLCanvas3D::on_key(wxKeyEvent& evt) default: { break; } } } - else if (!m_gizmos.is_enabled()) - { + else if (!m_gizmos.is_enabled()) { // DoubleSlider navigation in Preview if (keyCode == WXK_LEFT || keyCode == WXK_RIGHT || keyCode == WXK_UP || - keyCode == WXK_DOWN) - { + keyCode == WXK_DOWN) { if (dynamic_cast(m_canvas->GetParent()) != nullptr) -#if ENABLE_GCODE_VIEWER post_event(wxKeyEvent(EVT_GLCANVAS_MOVE_LAYERS_SLIDER, evt)); -#else - post_event(wxKeyEvent(EVT_GLCANVAS_MOVE_DOUBLE_SLIDER, evt)); -#endif // ENABLE_GCODE_VIEWER } } } @@ -3348,17 +2843,17 @@ void GLCanvas3D::on_mouse_wheel(wxMouseEvent& evt) if (evt.MiddleIsDown()) return; - if (wxGetApp().imgui()->update_mouse_data(evt)) { - m_dirty = true; - return; - } - #if ENABLE_RETINA_GL const float scale = m_retina_helper->get_scale_factor(); evt.SetX(evt.GetX() * scale); evt.SetY(evt.GetY() * scale); #endif + if (wxGetApp().imgui()->update_mouse_data(evt)) { + m_dirty = true; + return; + } + #ifdef __WXMSW__ // For some reason the Idle event is not being generated after the mouse scroll event in case of scrolling with the two fingers on the touch pad, // if the event is not allowed to be passed further. @@ -3367,14 +2862,11 @@ void GLCanvas3D::on_mouse_wheel(wxMouseEvent& evt) #endif /* __WXMSW__ */ // Performs layers editing updates, if enabled - if (is_layers_editing_enabled()) - { + if (is_layers_editing_enabled()) { int object_idx_selected = m_selection.get_object_idx(); - if (object_idx_selected != -1) - { + if (object_idx_selected != -1) { // A volume is selected. Test, whether hovering over a layer thickness bar. - if (m_layers_editing.bar_rect_contains(*this, (float)evt.GetX(), (float)evt.GetY())) - { + if (m_layers_editing.bar_rect_contains(*this, (float)evt.GetX(), (float)evt.GetY())) { // Adjust the width of the selection. m_layers_editing.band_width = std::max(std::min(m_layers_editing.band_width * (1.0f + 0.1f * (float)evt.GetWheelRotation() / (float)evt.GetWheelDelta()), 10.0f), 1.5f); if (m_canvas != nullptr) @@ -3399,7 +2891,8 @@ void GLCanvas3D::on_mouse_wheel(wxMouseEvent& evt) return; // Calculate the zoom delta and apply it to the current zoom factor - _update_camera_zoom((double)evt.GetWheelRotation() / (double)evt.GetWheelDelta()); + double direction_factor = (wxGetApp().app_config->get("reverse_mouse_wheel_zoom") == "1") ? -1.0 : 1.0; + _update_camera_zoom(direction_factor * (double)evt.GetWheelRotation() / (double)evt.GetWheelDelta()); } void GLCanvas3D::on_timer(wxTimerEvent& evt) @@ -3590,7 +3083,7 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) m_dirty = true; } else if (evt.LeftDown() || evt.RightDown() || evt.MiddleDown()) { - if (_deactivate_undo_redo_toolbar_items() || _deactivate_search_toolbar_item()) + if (_deactivate_undo_redo_toolbar_items() || _deactivate_search_toolbar_item() || _deactivate_arrange_menu()) return; // If user pressed left or right button we first check whether this happened @@ -3834,13 +3327,7 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) if (m_selection.is_empty()) m_gizmos.reset_all_states(); -#if ENABLE_GCODE_VIEWER m_dirty = true; -#else - // Only refresh if picking is enabled, in that case the objects may get highlighted if the mouse cursor hovers over. - //if (m_picking_enabled) - m_dirty = true; -#endif // ENABLE_GCODE_VIEWER } else evt.Skip(); @@ -3901,17 +3388,6 @@ Vec2d GLCanvas3D::get_local_mouse_position() const return Vec2d(factor * mouse_pos.x, factor * mouse_pos.y); } -#if !ENABLE_GCODE_VIEWER -void GLCanvas3D::reset_legend_texture() -{ - if (m_legend_texture.get_id() != 0) - { - _set_current(); - m_legend_texture.reset(); - } -} -#endif // !ENABLE_GCODE_VIEWER - void GLCanvas3D::set_tooltip(const std::string& tooltip) const { if (m_canvas != nullptr) @@ -4200,13 +3676,8 @@ void GLCanvas3D::update_ui_from_settings() } #endif // ENABLE_RETINA_GL -#if ENABLE_GCODE_VIEWER if (wxGetApp().is_editor()) wxGetApp().plater()->enable_collapse_toolbar(wxGetApp().app_config->get("show_collapse_button") == "1"); -#else - bool enable_collapse = wxGetApp().app_config->get("show_collapse_button") == "1"; - wxGetApp().plater()->get_collapse_toolbar().set_enabled(enable_collapse); -#endif // ENABLE_GCODE_VIEWER } GLCanvas3D::WipeTowerInfo GLCanvas3D::get_wipe_tower_info() const @@ -4270,20 +3741,12 @@ void GLCanvas3D::update_tooltip_for_settings_item_in_main_toolbar() bool GLCanvas3D::has_toolpaths_to_export() const { -#if ENABLE_GCODE_VIEWER return m_gcode_viewer.has_data(); -#else - return m_volumes.has_toolpaths_to_export(); -#endif // ENABLE_GCODE_VIEWER } void GLCanvas3D::export_toolpaths_to_obj(const char* filename) const { -#if ENABLE_GCODE_VIEWER m_gcode_viewer.export_toolpaths_to_obj(filename); -#else - m_volumes.export_toolpaths_to_obj(filename); -#endif // ENABLE_GCODE_VIEWER } void GLCanvas3D::mouse_up_cleanup() @@ -4374,7 +3837,7 @@ bool GLCanvas3D::_render_search_list(float pos_x) const std::string& search_line = sidebar.get_search_line(); char *s = new char[255]; - strcpy(s, search_line.empty() ? _u8L("Type here to search").c_str() : search_line.c_str()); + strcpy(s, search_line.empty() ? _u8L("Enter a search term").c_str() : search_line.c_str()); imgui->search_list(ImVec2(45 * em, 30 * em), &search_string_getter, s, sidebar.get_searcher().view_params, @@ -4382,7 +3845,7 @@ bool GLCanvas3D::_render_search_list(float pos_x) const search_line = s; delete [] s; - if (search_line == _u8L("Type here to search")) + if (search_line == _u8L("Enter a search term")) search_line.clear(); if (edited) @@ -4405,6 +3868,54 @@ bool GLCanvas3D::_render_search_list(float pos_x) const return action_taken; } +bool GLCanvas3D::_render_arrange_menu(float pos_x) +{ + ImGuiWrapper *imgui = wxGetApp().imgui(); + + auto canvas_w = float(get_canvas_size().get_width()); + const float x = pos_x * float(wxGetApp().plater()->get_camera().get_zoom()) + 0.5f * canvas_w; + imgui->set_next_window_pos(x, m_main_toolbar.get_height(), ImGuiCond_Always, 0.5f, 0.0f); + + imgui->begin(_(L("Arrange options")), ImGuiWindowFlags_NoMove | ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoCollapse); + ArrangeSettings settings = m_arrange_settings; + + auto &appcfg = wxGetApp().app_config; + + bool settings_changed = false; + + if (imgui->slider_float(_(L("Gap size")), &settings.distance, 0.f, 100.f)) { + m_arrange_settings.distance = settings.distance; + settings_changed = true; + } + + if (imgui->checkbox(_(L("Enable rotations")), settings.enable_rotation)) { + m_arrange_settings.enable_rotation = settings.enable_rotation; + settings_changed = true; + } + + ImGui::Separator(); + + if (imgui->button(_(L("Reset")))) { + m_arrange_settings = ArrangeSettings{}; + settings_changed = true; + } + + if (settings_changed) { + appcfg->set("arrange", "min_object_distance", std::to_string(m_arrange_settings.distance)); + appcfg->set("arrange", "enable_rotation", m_arrange_settings.enable_rotation? "1" : "0"); + } + + ImGui::SameLine(); + + if (imgui->button(_(L("Arrange")))) { + wxGetApp().plater()->arrange(); + } + + imgui->end(); + + return settings_changed; +} + #define ENABLE_THUMBNAIL_GENERATOR_DEBUG_OUTPUT 0 #if ENABLE_THUMBNAIL_GENERATOR_DEBUG_OUTPUT static void debug_output_thumbnail(const ThumbnailData& thumbnail_data) @@ -4817,13 +4328,23 @@ bool GLCanvas3D::_init_main_toolbar() item.name = "arrange"; item.icon_filename = "arrange.svg"; - item.tooltip = _utf8(L("Arrange")) + " [A]\n" + _utf8(L("Arrange selection")) + " [Shift+A]"; + item.tooltip = _utf8(L("Arrange")) + " [A]\n" + _utf8(L("Arrange selection")) + " [Shift+A]\n" + _utf8(L("Click right mouse button to show arrangement options")); item.sprite_id = 3; item.left.action_callback = [this]() { if (m_canvas != nullptr) wxPostEvent(m_canvas, SimpleEvent(EVT_GLTOOLBAR_ARRANGE)); }; item.enabling_callback = []()->bool { return wxGetApp().plater()->can_arrange(); }; + item.right.toggable = true; + item.right.render_callback = [this](float left, float right, float, float) { + if (m_canvas != nullptr) + { + _render_arrange_menu(0.5f * (left + right)); + } + }; if (!m_main_toolbar.add_item(item)) return false; + item.right.toggable = false; + item.right.render_callback = GLToolbarItem::Default_Render_Callback; + if (!m_main_toolbar.add_separator()) return false; @@ -5116,10 +4637,8 @@ BoundingBoxf3 GLCanvas3D::_max_bounding_box(bool include_gizmos, bool include_be bb.merge(wxGetApp().plater()->get_bed().get_bounding_box(include_bed_model)); -#if ENABLE_GCODE_VIEWER if (!m_main_toolbar.is_enabled()) bb.merge(m_gcode_viewer.get_max_bounding_box()); -#endif // ENABLE_GCODE_VIEWER return bb; } @@ -5280,7 +4799,6 @@ void GLCanvas3D::_rectangular_selection_picking_pass() const _update_volumes_hover_state(); } -#if ENABLE_GCODE_VIEWER static BoundingBoxf3 print_volume(const DynamicPrintConfig& config) { // tolerance to avoid false detection at bed edges @@ -5297,11 +4815,9 @@ static BoundingBoxf3 print_volume(const DynamicPrintConfig& config) } return ret; } -#endif // ENABLE_GCODE_VIEWER void GLCanvas3D::_render_background() const { -#if ENABLE_GCODE_VIEWER bool use_error_color = false; if (wxGetApp().is_editor()) { use_error_color = m_dynamic_background_enabled && @@ -5314,7 +4830,6 @@ void GLCanvas3D::_render_background() const use_error_color &= (test_volume.radius() > 0.0) ? !test_volume.contains(m_gcode_viewer.get_paths_bounding_box()) : false; } } -#endif // ENABLE_GCODE_VIEWER glsafe(::glPushMatrix()); glsafe(::glLoadIdentity()); @@ -5326,11 +4841,7 @@ void GLCanvas3D::_render_background() const glsafe(::glDisable(GL_DEPTH_TEST)); ::glBegin(GL_QUADS); -#if ENABLE_GCODE_VIEWER if (use_error_color) -#else - if (m_dynamic_background_enabled && _is_any_volume_outside()) -#endif // ENABLE_GCODE_VIEWER ::glColor3fv(ERROR_BG_DARK_COLOR); else ::glColor3fv(DEFAULT_BG_DARK_COLOR); @@ -5338,12 +4849,8 @@ void GLCanvas3D::_render_background() const ::glVertex2f(-1.0f, -1.0f); ::glVertex2f(1.0f, -1.0f); -#if ENABLE_GCODE_VIEWER if (use_error_color) -#else - if (m_dynamic_background_enabled && _is_any_volume_outside()) -#endif // ENABLE_GCODE_VIEWER -::glColor3fv(ERROR_BG_LIGHT_COLOR); + ::glColor3fv(ERROR_BG_LIGHT_COLOR); else ::glColor3fv(DEFAULT_BG_LIGHT_COLOR); @@ -5441,12 +4948,10 @@ void GLCanvas3D::_render_objects() const m_camera_clipping_plane = ClippingPlane::ClipsNothing(); } -#if ENABLE_GCODE_VIEWER void GLCanvas3D::_render_gcode() const { m_gcode_viewer.render(); } -#endif // ENABLE_GCODE_VIEWER void GLCanvas3D::_render_selection() const { @@ -5528,9 +5033,6 @@ void GLCanvas3D::_render_overlays() const _render_gizmos_overlay(); _render_warning_texture(); -#if !ENABLE_GCODE_VIEWER - _render_legend_texture(); -#endif // !ENABLE_GCODE_VIEWER // main toolbar and undoredo toolbar need to be both updated before rendering because both their sizes are needed // to correctly place them @@ -5573,16 +5075,6 @@ void GLCanvas3D::_render_warning_texture() const m_warning_texture.render(*this); } -#if !ENABLE_GCODE_VIEWER -void GLCanvas3D::_render_legend_texture() const -{ - if (!m_legend_texture_enabled) - return; - - m_legend_texture.render(*this); -} -#endif // !ENABLE_GCODE_VIEWER - void GLCanvas3D::_render_volumes_for_picking() const { static const GLfloat INV_255 = 1.0f / 255.0f; @@ -6529,336 +6021,6 @@ void GLCanvas3D::_load_wipe_tower_toolpaths(const std::vector& str_ BOOST_LOG_TRIVIAL(debug) << "Loading wipe tower toolpaths in parallel - end" << m_volumes.log_memory_info() << log_memory_info(); } -#if !ENABLE_GCODE_VIEWER -static inline int hex_digit_to_int(const char c) -{ - return - (c >= '0' && c <= '9') ? int(c - '0') : - (c >= 'A' && c <= 'F') ? int(c - 'A') + 10 : - (c >= 'a' && c <= 'f') ? int(c - 'a') + 10 : -1; -} - -void GLCanvas3D::_load_gcode_extrusion_paths(const GCodePreviewData& preview_data, const std::vector& tool_colors) -{ - BOOST_LOG_TRIVIAL(debug) << "Loading G-code extrusion paths - start" << m_volumes.log_memory_info() << log_memory_info(); - - // helper functions to select data in dependence of the extrusion view type - struct Helper - { - static float path_filter(GCodePreviewData::Extrusion::EViewType type, const GCodePreviewData::Extrusion::Path& path) - { - switch (type) - { - case GCodePreviewData::Extrusion::FeatureType: - // The role here is used for coloring. - return (float)path.extrusion_role; - case GCodePreviewData::Extrusion::Height: - return path.height; - case GCodePreviewData::Extrusion::Width: - return path.width; - case GCodePreviewData::Extrusion::Feedrate: - return path.feedrate; - case GCodePreviewData::Extrusion::FanSpeed: - return path.fan_speed; - case GCodePreviewData::Extrusion::VolumetricRate: - return path.feedrate * path.mm3_per_mm; - case GCodePreviewData::Extrusion::Tool: - return (float)path.extruder_id; - case GCodePreviewData::Extrusion::ColorPrint: - return (float)path.cp_color_id; - default: - return 0.0f; - } - - return 0.0f; - } - - static Color path_color(const GCodePreviewData& data, const std::vector& tool_colors, float value) - { - switch (data.extrusion.view_type) - { - case GCodePreviewData::Extrusion::FeatureType: - return data.get_extrusion_role_color((ExtrusionRole)(int)value); - case GCodePreviewData::Extrusion::Height: - return data.get_height_color(value); - case GCodePreviewData::Extrusion::Width: - return data.get_width_color(value); - case GCodePreviewData::Extrusion::Feedrate: - return data.get_feedrate_color(value); - case GCodePreviewData::Extrusion::FanSpeed: - return data.get_fan_speed_color(value); - case GCodePreviewData::Extrusion::VolumetricRate: - return data.get_volumetric_rate_color(value); - case GCodePreviewData::Extrusion::Tool: - { - Color color; - ::memcpy((void*)color.rgba.data(), (const void*)(tool_colors.data() + (unsigned int)value * 4), 4 * sizeof(float)); - return color; - } - case GCodePreviewData::Extrusion::ColorPrint: - { - int color_cnt = (int)tool_colors.size() / 4; - int val = value > color_cnt ? color_cnt - 1 : value; - - Color color; - ::memcpy((void*)color.rgba.data(), (const void*)(tool_colors.data() + val * 4), 4 * sizeof(float)); - - return color; - } - default: - return Color{}; - } - - return Color{}; - } - }; - - size_t initial_volumes_count = m_volumes.volumes.size(); - size_t initial_volume_index_count = m_gcode_preview_volume_index.first_volumes.size(); - - try - { - BOOST_LOG_TRIVIAL(debug) << "Loading G-code extrusion paths - create volumes" << m_volumes.log_memory_info() << log_memory_info(); - - // detects filters - size_t vertex_buffer_prealloc_size = 0; - std::vector>> roles_filters; - { - std::vector num_paths_per_role(size_t(erCount), 0); - for (const GCodePreviewData::Extrusion::Layer &layer : preview_data.extrusion.layers) - for (const GCodePreviewData::Extrusion::Path &path : layer.paths) - ++ num_paths_per_role[size_t(path.extrusion_role)]; - std::vector> roles_values; - roles_values.assign(size_t(erCount), std::vector()); - for (size_t i = 0; i < roles_values.size(); ++ i) - roles_values[i].reserve(num_paths_per_role[i]); - for (const GCodePreviewData::Extrusion::Layer& layer : preview_data.extrusion.layers) - for (const GCodePreviewData::Extrusion::Path &path : layer.paths) - roles_values[size_t(path.extrusion_role)].emplace_back(Helper::path_filter(preview_data.extrusion.view_type, path)); - roles_filters.reserve(size_t(erCount)); - size_t num_buffers = 0; - for (std::vector &values : roles_values) { - sort_remove_duplicates(values); - num_buffers += values.size(); - } - if (num_buffers == 0) - // nothing to render, return - return; - vertex_buffer_prealloc_size = (uint64_t(num_buffers) * uint64_t(VERTEX_BUFFER_RESERVE_SIZE) < VERTEX_BUFFER_RESERVE_SIZE_SUM_MAX) ? - VERTEX_BUFFER_RESERVE_SIZE : next_highest_power_of_2(VERTEX_BUFFER_RESERVE_SIZE_SUM_MAX / num_buffers) / 2; - for (std::vector &values : roles_values) { - size_t role = &values - &roles_values.front(); - roles_filters.emplace_back(); - if (! values.empty()) { - m_gcode_preview_volume_index.first_volumes.emplace_back(GCodePreviewVolumeIndex::Extrusion, role, (unsigned int)m_volumes.volumes.size()); - for (const float value : values) - roles_filters.back().emplace_back(value, m_volumes.new_toolpath_volume(Helper::path_color(preview_data, tool_colors, value).rgba.data(), vertex_buffer_prealloc_size)); - } - } - } - - BOOST_LOG_TRIVIAL(debug) << "Loading G-code extrusion paths - populate volumes" << m_volumes.log_memory_info() << log_memory_info(); - - // populates volumes - const bool is_selected_separate_extruder = m_selected_extruder > 0 && preview_data.extrusion.view_type == GCodePreviewData::Extrusion::ColorPrint; - for (const GCodePreviewData::Extrusion::Layer& layer : preview_data.extrusion.layers) - { - for (const GCodePreviewData::Extrusion::Path& path : layer.paths) - { - if (is_selected_separate_extruder && path.extruder_id != m_selected_extruder - 1) - continue; - std::vector> &filters = roles_filters[size_t(path.extrusion_role)]; - auto key = std::make_pair(Helper::path_filter(preview_data.extrusion.view_type, path), nullptr); - auto it_filter = std::lower_bound(filters.begin(), filters.end(), key); - assert(it_filter != filters.end() && key.first == it_filter->first); - - GLVolume& vol = *it_filter->second; - vol.print_zs.emplace_back(layer.z); - vol.offsets.emplace_back(vol.indexed_vertex_array.quad_indices.size()); - vol.offsets.emplace_back(vol.indexed_vertex_array.triangle_indices.size()); - - _3DScene::extrusionentity_to_verts(path.polyline, path.width, path.height, layer.z, vol); - } - // Ensure that no volume grows over the limits. If the volume is too large, allocate a new one. - for (std::vector> &filters : roles_filters) { - unsigned int role = (unsigned int)(&filters - &roles_filters.front()); - for (std::pair &filter : filters) - if (filter.second->indexed_vertex_array.vertices_and_normals_interleaved.size() > MAX_VERTEX_BUFFER_SIZE) { - if (m_gcode_preview_volume_index.first_volumes.back().type != GCodePreviewVolumeIndex::Extrusion || m_gcode_preview_volume_index.first_volumes.back().flag != role) - m_gcode_preview_volume_index.first_volumes.emplace_back(GCodePreviewVolumeIndex::Extrusion, role, (unsigned int)m_volumes.volumes.size()); - GLVolume& vol = *filter.second; - filter.second = m_volumes.new_toolpath_volume(vol.color); - reserve_new_volume_finalize_old_volume(*filter.second, vol, m_initialized, vertex_buffer_prealloc_size); - } - } - } - - // Finalize volumes and sends geometry to gpu - for (std::vector> &filters : roles_filters) - for (std::pair &filter : filters) - filter.second->indexed_vertex_array.finalize_geometry(m_initialized); - - BOOST_LOG_TRIVIAL(debug) << "Loading G-code extrusion paths - end" << m_volumes.log_memory_info() << log_memory_info(); - } - catch (const std::bad_alloc & /* err */) - { - // an error occourred - restore to previous state and return - GLVolumePtrs::iterator begin = m_volumes.volumes.begin() + initial_volumes_count; - GLVolumePtrs::iterator end = m_volumes.volumes.end(); - for (GLVolumePtrs::iterator it = begin; it < end; ++it) - delete *it; - m_volumes.volumes.erase(begin, end); - m_gcode_preview_volume_index.first_volumes.erase(m_gcode_preview_volume_index.first_volumes.begin() + initial_volume_index_count, m_gcode_preview_volume_index.first_volumes.end()); - BOOST_LOG_TRIVIAL(debug) << "Loading G-code extrusion paths - failed on low memory" << m_volumes.log_memory_info() << log_memory_info(); - //FIXME rethrow bad_alloc? - } -} - -template -inline void travel_paths_internal( - // input - const GCodePreviewData &preview_data, - // accessors - FUNC_VALUE func_value, FUNC_COLOR func_color, - // output - GLVolumeCollection &volumes, bool gl_initialized) - -{ - // colors travels by type - std::vector> by_type; - { - std::vector values; - values.reserve(preview_data.travel.polylines.size()); - for (const GCodePreviewData::Travel::Polyline& polyline : preview_data.travel.polylines) - values.emplace_back(func_value(polyline)); - sort_remove_duplicates(values); - by_type.reserve(values.size()); - // creates a new volume for each feedrate - for (TYPE type : values) - by_type.emplace_back(type, volumes.new_nontoolpath_volume(func_color(type).rgba.data(), VERTEX_BUFFER_RESERVE_SIZE)); - } - - // populates volumes - std::pair key(0.f, nullptr); - for (const GCodePreviewData::Travel::Polyline& polyline : preview_data.travel.polylines) - { - key.first = func_value(polyline); - auto it = std::lower_bound(by_type.begin(), by_type.end(), key, [](const std::pair& l, const std::pair& r) { return l.first < r.first; }); - assert(it != by_type.end() && it->first == func_value(polyline)); - - GLVolume& vol = *it->second; - vol.print_zs.emplace_back(unscale(polyline.polyline.bounding_box().min(2))); - vol.offsets.emplace_back(vol.indexed_vertex_array.quad_indices.size()); - vol.offsets.emplace_back(vol.indexed_vertex_array.triangle_indices.size()); - - _3DScene::polyline3_to_verts(polyline.polyline, preview_data.travel.width, preview_data.travel.height, vol); - - // Ensure that no volume grows over the limits. If the volume is too large, allocate a new one. - if (vol.indexed_vertex_array.vertices_and_normals_interleaved.size() > MAX_VERTEX_BUFFER_SIZE) { - it->second = volumes.new_nontoolpath_volume(vol.color); - reserve_new_volume_finalize_old_volume(*it->second, vol, gl_initialized); - } - } - - for (auto &feedrate : by_type) - feedrate.second->finalize_geometry(gl_initialized); -} - -void GLCanvas3D::_load_gcode_travel_paths(const GCodePreviewData& preview_data, const std::vector& tool_colors) -{ - // nothing to render, return - if (preview_data.travel.polylines.empty()) - return; - - size_t initial_volumes_count = m_volumes.volumes.size(); - size_t volume_index_allocated = false; - - try { - m_gcode_preview_volume_index.first_volumes.emplace_back(GCodePreviewVolumeIndex::Travel, 0, (unsigned int)initial_volumes_count); - volume_index_allocated = true; - - switch (preview_data.extrusion.view_type) - { - case GCodePreviewData::Extrusion::Feedrate: - travel_paths_internal(preview_data, - [](const GCodePreviewData::Travel::Polyline &polyline) { return polyline.feedrate; }, - [&preview_data](const float feedrate) -> const Color { return preview_data.get_feedrate_color(feedrate); }, - m_volumes, m_initialized); - break; - case GCodePreviewData::Extrusion::Tool: - travel_paths_internal(preview_data, - [](const GCodePreviewData::Travel::Polyline &polyline) { return polyline.extruder_id; }, - [&tool_colors](const unsigned int extruder_id) -> const Color { assert((extruder_id + 1) * 4 <= tool_colors.size()); return Color(tool_colors.data() + extruder_id * 4); }, - m_volumes, m_initialized); - break; - default: - travel_paths_internal(preview_data, - [](const GCodePreviewData::Travel::Polyline &polyline) { return polyline.type; }, - [&preview_data](const unsigned int type) -> const Color& { return preview_data.travel.type_colors[type]; }, - m_volumes, m_initialized); - break; - } - } catch (const std::bad_alloc & /* ex */) { - // an error occourred - restore to previous state and return - GLVolumePtrs::iterator begin = m_volumes.volumes.begin() + initial_volumes_count; - GLVolumePtrs::iterator end = m_volumes.volumes.end(); - for (GLVolumePtrs::iterator it = begin; it < end; ++it) - delete *it; - m_volumes.volumes.erase(begin, end); - if (volume_index_allocated) - m_gcode_preview_volume_index.first_volumes.pop_back(); - //FIXME report the memory issue? - } -} - -void GLCanvas3D::_load_fff_shells() -{ - size_t initial_volumes_count = m_volumes.volumes.size(); - m_gcode_preview_volume_index.first_volumes.emplace_back(GCodePreviewVolumeIndex::Shell, 0, (unsigned int)initial_volumes_count); - - const Print *print = this->fff_print(); - if (print->objects().empty()) - // nothing to render, return - return; - - // adds objects' volumes - int object_id = 0; - for (const PrintObject* obj : print->objects()) - { - const ModelObject* model_obj = obj->model_object(); - - std::vector instance_ids(model_obj->instances.size()); - for (int i = 0; i < (int)model_obj->instances.size(); ++i) - { - instance_ids[i] = i; - } - - m_volumes.load_object(model_obj, object_id, instance_ids, "object", m_initialized); - - ++object_id; - } - - if (wxGetApp().preset_bundle->printers.get_edited_preset().printer_technology() == ptFFF) { - // adds wipe tower's volume - double max_z = print->objects()[0]->model_object()->get_model()->bounding_box().max(2); - const PrintConfig& config = print->config(); - size_t extruders_count = config.nozzle_diameter.size(); - if ((extruders_count > 1) && config.wipe_tower && !config.complete_objects) { - - const DynamicPrintConfig &print_config = wxGetApp().preset_bundle->prints.get_edited_preset().config; - double layer_height = print_config.opt_float("layer_height"); - double first_layer_height = print_config.get_abs_value("first_layer_height", layer_height); - double nozzle_diameter = print->config().nozzle_diameter.values[0]; - float depth = print->wipe_tower_data(extruders_count, first_layer_height, nozzle_diameter).depth; - float brim_width = print->wipe_tower_data(extruders_count, first_layer_height, nozzle_diameter).brim_width; - - m_volumes.load_wipe_tower_preview(1000, config.wipe_tower_x, config.wipe_tower_y, config.wipe_tower_width, depth, max_z, config.wipe_tower_rotation_angle, - !print->is_step_done(psWipeTower), brim_width, m_initialized); - } - } -} -#endif // !ENABLE_GCODE_VIEWER - // While it looks like we can call // this->reload_scene(true, true) // the two functions are quite different: @@ -6915,136 +6077,25 @@ void GLCanvas3D::_load_sla_shells() update_volumes_colors_by_extruder(); } -#if !ENABLE_GCODE_VIEWER -void GLCanvas3D::_update_gcode_volumes_visibility(const GCodePreviewData& preview_data) -{ - unsigned int size = (unsigned int)m_gcode_preview_volume_index.first_volumes.size(); - for (unsigned int i = 0; i < size; ++i) - { - GLVolumePtrs::iterator begin = m_volumes.volumes.begin() + m_gcode_preview_volume_index.first_volumes[i].id; - GLVolumePtrs::iterator end = (i + 1 < size) ? m_volumes.volumes.begin() + m_gcode_preview_volume_index.first_volumes[i + 1].id : m_volumes.volumes.end(); - - for (GLVolumePtrs::iterator it = begin; it != end; ++it) - { - GLVolume* volume = *it; - - switch (m_gcode_preview_volume_index.first_volumes[i].type) - { - case GCodePreviewVolumeIndex::Extrusion: - { - if ((ExtrusionRole)m_gcode_preview_volume_index.first_volumes[i].flag == erCustom) - volume->zoom_to_volumes = false; - - volume->is_active = preview_data.extrusion.is_role_flag_set((ExtrusionRole)m_gcode_preview_volume_index.first_volumes[i].flag); - break; - } - case GCodePreviewVolumeIndex::Travel: - { - volume->is_active = preview_data.travel.is_visible; - volume->zoom_to_volumes = false; - break; - } - case GCodePreviewVolumeIndex::Retraction: - { - volume->is_active = preview_data.retraction.is_visible; - volume->zoom_to_volumes = false; - break; - } - case GCodePreviewVolumeIndex::Unretraction: - { - volume->is_active = preview_data.unretraction.is_visible; - volume->zoom_to_volumes = false; - break; - } - case GCodePreviewVolumeIndex::Shell: - { - volume->is_active = preview_data.shell.is_visible; - volume->color[3] = 0.25f; - volume->zoom_to_volumes = false; - break; - } - default: - { - volume->is_active = false; - volume->zoom_to_volumes = false; - break; - } - } - } - } -} -#endif // !ENABLE_GCODE_VIEWER - void GLCanvas3D::_update_toolpath_volumes_outside_state() { -#if ENABLE_GCODE_VIEWER BoundingBoxf3 test_volume = (m_config != nullptr) ? print_volume(*m_config) : BoundingBoxf3(); -#else - // tolerance to avoid false detection at bed edges - static const double tolerance_x = 0.05; - static const double tolerance_y = 0.05; - - BoundingBoxf3 print_volume; - if (m_config != nullptr) - { - const ConfigOptionPoints* opt = dynamic_cast(m_config->option("bed_shape")); - if (opt != nullptr) - { - BoundingBox bed_box_2D = get_extents(Polygon::new_scale(opt->values)); - print_volume = BoundingBoxf3(Vec3d(unscale(bed_box_2D.min(0)) - tolerance_x, unscale(bed_box_2D.min(1)) - tolerance_y, 0.0), Vec3d(unscale(bed_box_2D.max(0)) + tolerance_x, unscale(bed_box_2D.max(1)) + tolerance_y, m_config->opt_float("max_print_height"))); - // Allow the objects to protrude below the print bed - print_volume.min(2) = -1e10; - } - } -#endif // ENABLE_GCODE_VIEWER - - for (GLVolume* volume : m_volumes.volumes) - { -#if ENABLE_GCODE_VIEWER + for (GLVolume* volume : m_volumes.volumes) { volume->is_outside = ((test_volume.radius() > 0.0) && volume->is_extrusion_path) ? !test_volume.contains(volume->bounding_box()) : false; -#else - volume->is_outside = ((print_volume.radius() > 0.0) && volume->is_extrusion_path) ? !print_volume.contains(volume->bounding_box()) : false; -#endif // ENABLE_GCODE_VIEWER } } void GLCanvas3D::_update_sla_shells_outside_state() { -#if ENABLE_GCODE_VIEWER BoundingBoxf3 test_volume = (m_config != nullptr) ? print_volume(*m_config) : BoundingBoxf3(); -#else - // tolerance to avoid false detection at bed edges - static const double tolerance_x = 0.05; - static const double tolerance_y = 0.05; - - BoundingBoxf3 print_volume; - if (m_config != nullptr) - { - const ConfigOptionPoints* opt = dynamic_cast(m_config->option("bed_shape")); - if (opt != nullptr) - { - BoundingBox bed_box_2D = get_extents(Polygon::new_scale(opt->values)); - print_volume = BoundingBoxf3(Vec3d(unscale(bed_box_2D.min(0)) - tolerance_x, unscale(bed_box_2D.min(1)) - tolerance_y, 0.0), Vec3d(unscale(bed_box_2D.max(0)) + tolerance_x, unscale(bed_box_2D.max(1)) + tolerance_y, m_config->opt_float("max_print_height"))); - // Allow the objects to protrude below the print bed - print_volume.min(2) = -1e10; - } - } -#endif // ENABLE_GCODE_VIEWER - - for (GLVolume* volume : m_volumes.volumes) - { -#if ENABLE_GCODE_VIEWER + for (GLVolume* volume : m_volumes.volumes) { volume->is_outside = ((test_volume.radius() > 0.0) && volume->shader_outside_printer_detection_enabled) ? !test_volume.contains(volume->transformed_convex_hull_bounding_box()) : false; -#else - volume->is_outside = ((print_volume.radius() > 0.0) && volume->shader_outside_printer_detection_enabled) ? !print_volume.contains(volume->transformed_convex_hull_bounding_box()) : false; -#endif // ENABLE_GCODE_VIEWER } } void GLCanvas3D::_show_warning_texture_if_needed(WarningTexture::Warning warning) { _set_current(); -#if ENABLE_GCODE_VIEWER bool show = false; if (!m_volumes.empty()) show = _is_any_volume_outside(); @@ -7057,9 +6108,6 @@ void GLCanvas3D::_show_warning_texture_if_needed(WarningTexture::Warning warning } } _set_warning_texture(warning, show); -#else - _set_warning_texture(warning, _is_any_volume_outside()); -#endif // ENABLE_GCODE_VIEWER } std::vector GLCanvas3D::_parse_colors(const std::vector& colors) @@ -7087,13 +6135,6 @@ std::vector GLCanvas3D::_parse_colors(const std::vector& col return output; } -#if !ENABLE_GCODE_VIEWER -void GLCanvas3D::_generate_legend_texture(const GCodePreviewData& preview_data, const std::vector& tool_colors) -{ - m_legend_texture.generate(preview_data, tool_colors, *this, true); -} -#endif // !ENABLE_GCODE_VIEWER - void GLCanvas3D::_set_warning_texture(WarningTexture::Warning warning, bool state) { m_warning_texture.activate(warning, state, *this); @@ -7101,8 +6142,7 @@ void GLCanvas3D::_set_warning_texture(WarningTexture::Warning warning, bool stat bool GLCanvas3D::_is_any_volume_outside() const { - for (const GLVolume* volume : m_volumes.volumes) - { + for (const GLVolume* volume : m_volumes.volumes) { if ((volume != nullptr) && volume->is_outside) return true; } @@ -7229,6 +6269,16 @@ bool GLCanvas3D::is_search_pressed() const return m_main_toolbar.is_item_pressed("search"); } +bool GLCanvas3D::_deactivate_arrange_menu() +{ + if (m_main_toolbar.is_item_pressed("arrange")) { + m_main_toolbar.force_right_action(m_main_toolbar.get_item_id("arrange"), *this); + return true; + } + + return false; +} + bool GLCanvas3D::_deactivate_search_toolbar_item() { if (is_search_pressed()) diff --git a/src/slic3r/GUI/GLCanvas3D.hpp b/src/slic3r/GUI/GLCanvas3D.hpp index d0a130e898..7f44901d18 100644 --- a/src/slic3r/GUI/GLCanvas3D.hpp +++ b/src/slic3r/GUI/GLCanvas3D.hpp @@ -12,10 +12,8 @@ #include "GUI_ObjectLayers.hpp" #include "GLSelectionRectangle.hpp" #include "MeshUtils.hpp" -#if ENABLE_GCODE_VIEWER #include "libslic3r/GCode/GCodeProcessor.hpp" #include "GCodeViewer.hpp" -#endif // ENABLE_GCODE_VIEWER #include "libslic3r/Slicing.hpp" @@ -39,9 +37,6 @@ namespace Slic3r { struct Camera; class BackgroundSlicingProcess; -#if !ENABLE_GCODE_VIEWER -class GCodePreviewData; -#endif // !ENABLE_GCODE_VIEWER struct ThumbnailData; class ModelObject; class ModelInstance; @@ -108,12 +103,9 @@ wxDECLARE_EVENT(EVT_GLCANVAS_MOUSE_DRAGGING_FINISHED, SimpleEvent); wxDECLARE_EVENT(EVT_GLCANVAS_UPDATE_BED_SHAPE, SimpleEvent); wxDECLARE_EVENT(EVT_GLCANVAS_TAB, SimpleEvent); wxDECLARE_EVENT(EVT_GLCANVAS_RESETGIZMOS, SimpleEvent); -#if ENABLE_GCODE_VIEWER wxDECLARE_EVENT(EVT_GLCANVAS_MOVE_LAYERS_SLIDER, wxKeyEvent); -#else -wxDECLARE_EVENT(EVT_GLCANVAS_MOVE_DOUBLE_SLIDER, wxKeyEvent); -#endif // ENABLE_GCODE_VIEWER wxDECLARE_EVENT(EVT_GLCANVAS_EDIT_COLOR_CHANGE, wxKeyEvent); +wxDECLARE_EVENT(EVT_GLCANVAS_JUMP_TO, wxKeyEvent); wxDECLARE_EVENT(EVT_GLCANVAS_UNDO, SimpleEvent); wxDECLARE_EVENT(EVT_GLCANVAS_REDO, SimpleEvent); wxDECLARE_EVENT(EVT_GLCANVAS_COLLAPSE_SIDEBAR, SimpleEvent); @@ -126,37 +118,6 @@ class GLCanvas3D { static const double DefaultCameraZoomToBoxMarginFactor; -public: -#if !ENABLE_GCODE_VIEWER - struct GCodePreviewVolumeIndex - { - enum EType - { - Extrusion, - Travel, - Retraction, - Unretraction, - Shell, - Num_Geometry_Types - }; - - struct FirstVolume - { - EType type; - unsigned int flag; - // Index of the first volume in a GLVolumeCollection. - unsigned int id; - - FirstVolume(EType type, unsigned int flag, unsigned int id) : type(type), flag(flag), id(id) {} - }; - - std::vector first_volumes; - - void reset() { first_volumes.clear(); } - }; -#endif // !ENABLE_GCODE_VIEWER - -private: class LayersEditing { public: @@ -354,35 +315,6 @@ private: bool generate(const std::string& msg, const GLCanvas3D& canvas, bool compress, bool red_colored = false); }; -#if !ENABLE_GCODE_VIEWER - class LegendTexture : public GUI::GLTexture - { - static const int Px_Title_Offset = 5; - static const int Px_Text_Offset = 5; - static const int Px_Square = 20; - static const int Px_Square_Contour = 1; - static const int Px_Border = Px_Square / 2; - static const unsigned char Squares_Border_Color[3]; - static const unsigned char Default_Background_Color[3]; - static const unsigned char Error_Background_Color[3]; - static const unsigned char Opacity; - - int m_original_width; - int m_original_height; - - public: - LegendTexture(); - void fill_color_print_legend_items(const GLCanvas3D& canvas, - const std::vector& colors_in, - std::vector& colors, - std::vector& cp_legend_items); - - bool generate(const GCodePreviewData& preview_data, const std::vector& tool_colors, const GLCanvas3D& canvas, bool compress); - - void render(const GLCanvas3D& canvas) const; - }; -#endif // !ENABLE_GCODE_VIEWER - #if ENABLE_RENDER_STATISTICS struct RenderStats { @@ -449,6 +381,13 @@ public: Cross }; + struct ArrangeSettings + { + float distance = 6.; + float accuracy = 0.65f; + bool enable_rotation = false; + }; + private: wxGLCanvas* m_canvas; wxGLContext* m_context; @@ -456,9 +395,6 @@ private: std::unique_ptr m_retina_helper; #endif bool m_in_render; -#if !ENABLE_GCODE_VIEWER - LegendTexture m_legend_texture; -#endif // !ENABLE_GCODE_VIEWER WarningTexture m_warning_texture; wxTimer m_timer; LayersEditing m_layers_editing; @@ -477,9 +413,7 @@ private: bool m_event_handlers_bound{ false }; mutable GLVolumeCollection m_volumes; -#if ENABLE_GCODE_VIEWER GCodeViewer m_gcode_viewer; -#endif // ENABLE_GCODE_VIEWER Selection m_selection; const DynamicPrintConfig* m_config; @@ -491,9 +425,6 @@ private: bool m_initialized; bool m_apply_zoom_to_volumes_filter; mutable std::vector m_hover_volume_idxs; -#if !ENABLE_GCODE_VIEWER - bool m_legend_texture_enabled; -#endif // !ENABLE_GCODE_VIEWER bool m_picking_enabled; bool m_moving_enabled; bool m_dynamic_background_enabled; @@ -511,10 +442,6 @@ private: bool m_reload_delayed; -#if !ENABLE_GCODE_VIEWER - GCodePreviewVolumeIndex m_gcode_preview_volume_index; -#endif // !ENABLE_GCODE_VIEWER - #if ENABLE_RENDER_PICKING_PASS bool m_show_picking_texture; #endif // ENABLE_RENDER_PICKING_PASS @@ -532,6 +459,8 @@ private: mutable bool m_tooltip_enabled{ true }; Slope m_slope; + ArrangeSettings m_arrange_settings; + public: explicit GLCanvas3D(wxGLCanvas* canvas); ~GLCanvas3D(); @@ -553,11 +482,9 @@ public: void reset_volumes(); int check_volumes_outside_state() const; -#if ENABLE_GCODE_VIEWER void reset_gcode_toolpaths() { m_gcode_viewer.reset(); } const GCodeViewer::SequentialView& get_gcode_sequential_view() const { return m_gcode_viewer.get_sequential_view(); } void update_gcode_sequential_view_current(unsigned int first, unsigned int last) { m_gcode_viewer.update_sequential_view_current(first, last); } -#endif // ENABLE_GCODE_VIEWER void toggle_sla_auxiliaries_visibility(bool visible, const ModelObject* mo = nullptr, int instance_idx = -1); void toggle_model_objects_visibility(bool visible, const ModelObject* mo = nullptr, int instance_idx = -1); @@ -621,9 +548,7 @@ public: void zoom_to_bed(); void zoom_to_volumes(); void zoom_to_selection(); -#if ENABLE_GCODE_VIEWER void zoom_to_gcode(); -#endif // ENABLE_GCODE_VIEWER void select_view(const std::string& direction); void update_volumes_colors_by_extruder(); @@ -640,7 +565,6 @@ public: void delete_selected(); void ensure_on_bed(unsigned int object_idx); -#if ENABLE_GCODE_VIEWER bool is_gcode_legend_enabled() const { return m_gcode_viewer.is_legend_enabled(); } GCodeViewer::EViewType get_gcode_view_type() const { return m_gcode_viewer.get_view_type(); } const std::vector& get_gcode_layers_zs() const; @@ -650,10 +574,8 @@ public: unsigned int get_toolpath_role_visibility_flags() const { return m_gcode_viewer.get_toolpath_role_visibility_flags(); } void set_toolpath_role_visibility_flags(unsigned int flags); void set_toolpath_view_type(GCodeViewer::EViewType type); - void set_toolpaths_z_range(const std::array& range); -#else - std::vector get_current_print_zs(bool active_only) const; -#endif // ENABLE_GCODE_VIEWER + void set_volumes_z_range(const std::array& range); + void set_toolpaths_z_range(const std::array& range); void set_toolpaths_range(double low, double high); std::vector load_object(const ModelObject& model_object, int obj_idx, std::vector instance_idxs); @@ -663,14 +585,10 @@ public: void reload_scene(bool refresh_immediately, bool force_full_scene_refresh = false); -#if ENABLE_GCODE_VIEWER void load_gcode_preview(const GCodeProcessor::Result& gcode_result); void refresh_gcode_preview(const GCodeProcessor::Result& gcode_result, const std::vector& str_tool_colors); void set_gcode_view_preview_type(GCodeViewer::EViewType type) { return m_gcode_viewer.set_view_type(type); } GCodeViewer::EViewType get_gcode_view_preview_type() const { return m_gcode_viewer.get_view_type(); } -#else - void load_gcode_preview(const GCodePreviewData& preview_data, const std::vector& str_tool_colors); -#endif // ENABLE_GCODE_VIEWER void load_sla_preview(); void load_preview(const std::vector& str_tool_colors, const std::vector& color_print_values); void bind_event_handlers(); @@ -689,10 +607,6 @@ public: Size get_canvas_size() const; Vec2d get_local_mouse_position() const; -#if !ENABLE_GCODE_VIEWER - void reset_legend_texture(); -#endif // !ENABLE_GCODE_VIEWER - void set_tooltip(const std::string& tooltip) const; // the following methods add a snapshot to the undo/redo stack, unless the given string is empty @@ -766,6 +680,8 @@ public: void use_slope(bool use) { m_slope.use(use); } void set_slope_normal_angle(float angle_in_deg) { m_slope.set_normal_angle(angle_in_deg); } + const ArrangeSettings& get_arrange_settings() const { return m_arrange_settings; } + private: bool _is_shown_on_screen() const; @@ -790,9 +706,7 @@ private: void _render_background() const; void _render_bed(bool bottom, bool show_axes) const; void _render_objects() const; -#if ENABLE_GCODE_VIEWER void _render_gcode() const; -#endif // ENABLE_GCODE_VIEWER void _render_selection() const; #if ENABLE_RENDER_SELECTION_CENTER void _render_selection_center() const; @@ -800,9 +714,6 @@ private: void _check_and_update_toolbar_icon_scale() const; void _render_overlays() const; void _render_warning_texture() const; -#if !ENABLE_GCODE_VIEWER - void _render_legend_texture() const; -#endif // !ENABLE_GCODE_VIEWER void _render_volumes_for_picking() const; void _render_current_gizmo() const; void _render_gizmos_overlay() const; @@ -817,6 +728,7 @@ private: void _render_selection_sidebar_hints() const; bool _render_undo_redo_stack(const bool is_undo, float pos_x) const; bool _render_search_list(float pos_x) const; + bool _render_arrange_menu(float pos_x); void _render_thumbnail_internal(ThumbnailData& thumbnail_data, bool printable_only, bool parts_only, bool show_bed, bool transparent_background) const; // render thumbnail using an off-screen framebuffer void _render_thumbnail_framebuffer(ThumbnailData& thumbnail_data, unsigned int w, unsigned int h, bool printable_only, bool parts_only, bool show_bed, bool transparent_background) const; @@ -850,29 +762,12 @@ private: // Create 3D thick extrusion lines for wipe tower extrusions void _load_wipe_tower_toolpaths(const std::vector& str_tool_colors); -#if !ENABLE_GCODE_VIEWER - // generates gcode extrusion paths geometry - void _load_gcode_extrusion_paths(const GCodePreviewData& preview_data, const std::vector& tool_colors); - // generates gcode travel paths geometry - void _load_gcode_travel_paths(const GCodePreviewData& preview_data, const std::vector& tool_colors); - // generates objects and wipe tower geometry - void _load_fff_shells(); -#endif // !ENABLE_GCODE_VIEWER // Load SLA objects and support structures for objects, for which the slaposSliceSupports step has been finished. void _load_sla_shells(); -#if !ENABLE_GCODE_VIEWER - // sets gcode geometry visibility according to user selection - void _update_gcode_volumes_visibility(const GCodePreviewData& preview_data); -#endif // !ENABLE_GCODE_VIEWER void _update_toolpath_volumes_outside_state(); void _update_sla_shells_outside_state(); void _show_warning_texture_if_needed(WarningTexture::Warning warning); -#if !ENABLE_GCODE_VIEWER - // generates the legend texture in dependence of the current shown view type - void _generate_legend_texture(const GCodePreviewData& preview_data, const std::vector& tool_colors); -#endif // !ENABLE_GCODE_VIEWER - // generates a warning texture containing the given message void _set_warning_texture(WarningTexture::Warning warning, bool state); @@ -885,6 +780,7 @@ private: bool _deactivate_search_toolbar_item(); bool _activate_search_toolbar_item(); bool _deactivate_collapse_toolbar_items(); + bool _deactivate_arrange_menu(); float get_overlay_window_width() { return LayersEditing::get_overlay_window_width(); } diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 5848192d03..694cd7103f 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -86,7 +86,7 @@ class SplashScreen : public wxSplashScreen { public: SplashScreen(const wxBitmap& bitmap, long splashStyle, int milliseconds, wxPoint pos = wxDefaultPosition) - : wxSplashScreen(bitmap, splashStyle, milliseconds, nullptr, wxID_ANY, wxDefaultPosition, wxDefaultSize, + : wxSplashScreen(bitmap, splashStyle, milliseconds, (wxWindow*)wxGetApp().mainframe, wxID_ANY, wxDefaultPosition, wxDefaultSize, #ifdef __APPLE__ wxSIMPLE_BORDER | wxFRAME_NO_TASKBAR | wxSTAY_ON_TOP #else @@ -177,11 +177,7 @@ public: // load bitmap for logo BitmapCache bmp_cache; int logo_size = lround(width * 0.25); -#if ENABLE_GCODE_VIEWER wxBitmap logo_bmp = *bmp_cache.load_svg(wxGetApp().is_editor() ? "prusa_slicer_logo" : "add_gcode", logo_size, logo_size); -#else - wxBitmap logo_bmp = *bmp_cache.load_svg("prusa_slicer_logo", logo_size, logo_size); -#endif // ENABLE_GCODE_VIEWER wxCoord margin = int(m_scale * 20); @@ -229,11 +225,7 @@ private: void init(wxFont init_font) { // title -#if ENABLE_GCODE_VIEWER title = wxGetApp().is_editor() ? SLIC3R_APP_NAME : GCODEVIEWER_APP_NAME; -#else - title = SLIC3R_APP_NAME; -#endif // ENABLE_GCODE_VIEWER // dynamically get the version to display version = _L("Version") + " " + std::string(SLIC3R_VERSION); @@ -360,12 +352,14 @@ bool static check_old_linux_datadir(const wxString& app_name) { namespace fs = boost::filesystem; - // If running Linux, file layout should be already set to XDG. - assert(wxStandardPaths::Get().GetFileLayout() == wxStandardPaths::FileLayout_XDG); - std::string new_path = Slic3r::data_dir(); - if (new_path != (wxStandardPaths::Get().GetUserConfigDir() + "/" + app_name).ToUTF8().data()) { + wxString dir; + if (! wxGetEnv(wxS("XDG_CONFIG_HOME"), &dir) || dir.empty() ) + dir = wxFileName::GetHomeDir() + wxS("/.config"); + std::string default_path = (dir + "/" + app_name).ToUTF8().data(); + + if (new_path != default_path) { // This happens when the user specifies a custom --datadir. // Do not show anything in that case. return true; @@ -378,9 +372,7 @@ bool static check_old_linux_datadir(const wxString& app_name) { int file_count = std::distance(fs::directory_iterator(data_dir), fs::directory_iterator()); if (file_count <= 1) { // just cache dir with an instance lock - wxStandardPaths::Get().SetFileLayout(wxStandardPaths::FileLayout_Classic); std::string old_path = wxStandardPaths::Get().GetUserDataDir().ToUTF8().data(); - wxStandardPaths::Get().SetFileLayout(wxStandardPaths::FileLayout_XDG); if (fs::is_directory(old_path)) { wxString msg = from_u8((boost::format(_u8L("Starting with %1% 2.3, configuration " @@ -601,13 +593,11 @@ void GUI_App::post_init() if (! this->initialized()) throw Slic3r::RuntimeError("Calling post_init() while not yet initialized"); -#if ENABLE_GCODE_VIEWER if (this->init_params->start_as_gcodeviewer) { if (! this->init_params->input_files.empty()) this->plater()->load_gcode(wxString::FromUTF8(this->init_params->input_files[0].c_str())); } else { -#endif // ENABLE_GCODE_VIEWER_AS #if 0 // Load the cummulative config over the currently active profiles. //FIXME if multiple configs are loaded, only the last one will have an effect. @@ -626,22 +616,14 @@ void GUI_App::post_init() this->plater()->load_files(this->init_params->input_files, true, true); if (! this->init_params->extra_config.empty()) this->mainframe->load_config(this->init_params->extra_config); -#if ENABLE_GCODE_VIEWER } -#endif // ENABLE_GCODE_VIEWER } IMPLEMENT_APP(GUI_App) -#if ENABLE_GCODE_VIEWER GUI_App::GUI_App(EAppMode mode) -#else -GUI_App::GUI_App() -#endif // ENABLE_GCODE_VIEWER : wxApp() -#if ENABLE_GCODE_VIEWER , m_app_mode(mode) -#endif // ENABLE_GCODE_VIEWER , m_em_unit(10) , m_imgui(new ImGuiWrapper()) , m_wizard(nullptr) @@ -697,17 +679,15 @@ void GUI_App::init_app_config() #else // Since version 2.3, config dir on Linux is in ${XDG_CONFIG_HOME}. // https://github.com/prusa3d/PrusaSlicer/issues/2911 - wxStandardPaths::Get().SetFileLayout(wxStandardPaths::FileLayout_XDG); - set_data_dir((wxStandardPaths::Get().GetUserConfigDir() + "/" + GetAppName()).ToUTF8().data()); + wxString dir; + if (! wxGetEnv(wxS("XDG_CONFIG_HOME"), &dir) || dir.empty() ) + dir = wxFileName::GetHomeDir() + wxS("/.config"); + set_data_dir((dir + "/" + GetAppName()).ToUTF8().data()); #endif } if (!app_config) -#if ENABLE_GCODE_VIEWER app_config = new AppConfig(is_editor() ? AppConfig::EAppMode::Editor : AppConfig::EAppMode::GCodeViewer); -#else - app_config = new AppConfig(); -#endif // ENABLE_GCODE_VIEWER // load settings m_app_conf_exists = app_config->exists(); @@ -769,9 +749,7 @@ bool GUI_App::on_init_inner() // Slic3r::debugf "wxWidgets version %s, Wx version %s\n", wxVERSION_STRING, wxVERSION; -#if ENABLE_GCODE_VIEWER if (is_editor()) { -#endif // ENABLE_GCODE_VIEWER std::string msg = Http::tls_global_init(); std::string ssl_cert_store = app_config->get("tls_accepted_cert_store_location"); bool ssl_accept = app_config->get("tls_cert_store_accepted") == "yes" && ssl_cert_store == Http::tls_system_cert_store(); @@ -789,9 +767,7 @@ bool GUI_App::on_init_inner() app_config->set("tls_accepted_cert_store_location", dlg.IsCheckBoxChecked() ? Http::tls_system_cert_store() : ""); } -#if ENABLE_GCODE_VIEWER } -#endif // ENABLE_GCODE_VIEWER app_config->set("version", SLIC3R_VERSION); app_config->save(); @@ -801,11 +777,7 @@ bool GUI_App::on_init_inner() SplashScreen* scrn = nullptr; if (app_config->get("show_splash_screen") == "1") { // make a bitmap with dark grey banner on the left side -#if ENABLE_GCODE_VIEWER wxBitmap bmp = SplashScreen::MakeBitmap(wxBitmap(from_u8(var(is_editor() ? "splashscreen.jpg" : "splashscreen-gcodepreview.jpg")), wxBITMAP_TYPE_JPEG)); -#else - wxBitmap bmp = SplashScreen::MakeBitmap(wxBitmap(from_u8(var("splashscreen.jpg")), wxBITMAP_TYPE_JPEG)); -#endif // ENABLE_GCODE_VIEWER // Detect position (display) to show the splash screen // Now this position is equal to the mainframe position @@ -819,8 +791,10 @@ bool GUI_App::on_init_inner() // create splash screen with updated bmp scrn = new SplashScreen(bmp.IsOk() ? bmp : create_scaled_bitmap("prusa_slicer_logo", nullptr, 400), wxSPLASH_CENTRE_ON_SCREEN | wxSPLASH_TIMEOUT, 4000, splashscreen_pos); +#ifndef __linux__ wxYield(); - scrn->SetText(_L("Loading configuration...")); +#endif + scrn->SetText(_L("Loading configuration")+ dots); } preset_bundle = new PresetBundle(); @@ -829,9 +803,7 @@ bool GUI_App::on_init_inner() // supplied as argument to --datadir; in that case we should still run the wizard preset_bundle->setup_directories(); -#if ENABLE_GCODE_VIEWER if (is_editor()) { -#endif // ENABLE_GCODE_VIEWER #ifdef __WXMSW__ associate_3mf_files(); #endif // __WXMSW__ @@ -846,14 +818,12 @@ bool GUI_App::on_init_inner() } } }); -#if ENABLE_GCODE_VIEWER } else { #ifdef __WXMSW__ associate_gcode_files(); #endif // __WXMSW__ } -#endif // ENABLE_GCODE_VIEWER // initialize label colors and fonts init_label_colours(); @@ -881,18 +851,12 @@ bool GUI_App::on_init_inner() Slic3r::I18N::set_translate_callback(libslic3r_translate_callback); // application frame -#if ENABLE_GCODE_VIEWER if (scrn && is_editor()) -#else - if (scrn) -#endif // ENABLE_GCODE_VIEWER - scrn->SetText(_L("Creating settings tabs...")); + scrn->SetText(_L("Preparing settings tabs") + dots); mainframe = new MainFrame(); // hide settings tabs after first Layout -#if ENABLE_GCODE_VIEWER if (is_editor()) -#endif // ENABLE_GCODE_VIEWER mainframe->select_tab(size_t(0)); sidebar().obj_list()->init_objects(); // propagate model objects to object list @@ -933,9 +897,7 @@ bool GUI_App::on_init_inner() if (once) { once = false; -#if ENABLE_GCODE_VIEWER if (preset_updater != nullptr) { -#endif // ENABLE_GCODE_VIEWER check_updates(false); CallAfter([this] { @@ -943,9 +905,7 @@ bool GUI_App::on_init_inner() preset_updater->slic3r_update_notify(); preset_updater->sync(preset_bundle); }); -#if ENABLE_GCODE_VIEWER } -#endif // ENABLE_GCODE_VIEWER #ifdef _WIN32 //sets window property to mainframe so other instances can indentify it @@ -954,7 +914,6 @@ bool GUI_App::on_init_inner() } }); -#if ENABLE_GCODE_VIEWER if (is_gcode_viewer()) { mainframe->update_layout(); if (plater_ != nullptr) @@ -962,7 +921,6 @@ bool GUI_App::on_init_inner() plater_->set_printer_technology(ptFFF); } else -#endif // ENABLE_GCODE_VIEWER load_current_presets(); mainframe->Show(true); @@ -1143,8 +1101,8 @@ void GUI_App::check_printer_presets() for (const std::string& preset_name : preset_names) msg_text += "\n \"" + from_u8(preset_name) + "\","; msg_text.RemoveLast(); - msg_text += "\n\n" + _L("But from this version of PrusaSlicer we don't show/use this information in Printer Settings.\n" - "Now, this information will be exposed in physical printers settings.") + "\n\n" + + msg_text += "\n\n" + _L("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.") + "\n\n" + _L("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"); @@ -1155,9 +1113,7 @@ void GUI_App::check_printer_presets() void GUI_App::recreate_GUI(const wxString& msg_name) { -#if ENABLE_GCODE_VIEWER m_is_recreating_gui = true; -#endif // ENABLE_GCODE_VIEWER mainframe->shutdown(); @@ -1167,9 +1123,7 @@ void GUI_App::recreate_GUI(const wxString& msg_name) MainFrame *old_main_frame = mainframe; mainframe = new MainFrame(); -#if ENABLE_GCODE_VIEWER if (is_editor()) -#endif // ENABLE_GCODE_VIEWER // hide settings tabs after first Layout mainframe->select_tab(size_t(0)); // Propagate model objects to object list. @@ -1202,9 +1156,7 @@ void GUI_App::recreate_GUI(const wxString& msg_name) // config_wizard_startup(true); // }); -#if ENABLE_GCODE_VIEWER m_is_recreating_gui = false; -#endif // ENABLE_GCODE_VIEWER } void GUI_App::system_info() @@ -1289,7 +1241,6 @@ void GUI_App::import_model(wxWindow *parent, wxArrayString& input_files) const dialog.GetPaths(input_files); } -#if ENABLE_GCODE_VIEWER void GUI_App::load_gcode(wxWindow* parent, wxString& input_file) const { input_file.Clear(); @@ -1301,7 +1252,6 @@ void GUI_App::load_gcode(wxWindow* parent, wxString& input_file) const if (dialog.ShowModal() == wxID_OK) input_file = dialog.GetPath(); } -#endif // ENABLE_GCODE_VIEWER bool GUI_App::switch_language() { @@ -1537,17 +1487,13 @@ void GUI_App::add_config_menu(wxMenuBar *menu) const auto config_wizard_name = _(ConfigWizard::name(true)); const auto config_wizard_tooltip = from_u8((boost::format(_utf8(L("Run %s"))) % config_wizard_name).str()); // Cmd+, is standard on OS X - what about other operating systems? -#if ENABLE_GCODE_VIEWER if (is_editor()) { -#endif // ENABLE_GCODE_VIEWER local_menu->Append(config_id_base + ConfigMenuWizard, config_wizard_name + dots, config_wizard_tooltip); local_menu->Append(config_id_base + ConfigMenuSnapshots, _L("&Configuration Snapshots") + dots, _L("Inspect / activate configuration snapshots")); local_menu->Append(config_id_base + ConfigMenuTakeSnapshot, _L("Take Configuration &Snapshot"), _L("Capture a configuration snapshot")); local_menu->Append(config_id_base + ConfigMenuUpdate, _L("Check for updates"), _L("Check for configuration updates")); local_menu->AppendSeparator(); -#if ENABLE_GCODE_VIEWER } -#endif // ENABLE_GCODE_VIEWER local_menu->Append(config_id_base + ConfigMenuPreferences, _L("&Preferences") + dots + #ifdef __APPLE__ "\tCtrl+,", @@ -1555,16 +1501,10 @@ void GUI_App::add_config_menu(wxMenuBar *menu) "\tCtrl+P", #endif _L("Application preferences")); -#if ENABLE_GCODE_VIEWER wxMenu* mode_menu = nullptr; if (is_editor()) { -#endif // ENABLE_GCODE_VIEWER local_menu->AppendSeparator(); -#if ENABLE_GCODE_VIEWER mode_menu = new wxMenu(); -#else - auto mode_menu = new wxMenu(); -#endif // ENABLE_GCODE_VIEWER mode_menu->AppendRadioItem(config_id_base + ConfigMenuModeSimple, _L("Simple"), _L("Simple View Mode")); // mode_menu->AppendRadioItem(config_id_base + ConfigMenuModeAdvanced, _L("Advanced"), _L("Advanced View Mode")); mode_menu->AppendRadioItem(config_id_base + ConfigMenuModeAdvanced, _CTX(L_CONTEXT("Advanced", "Mode"), "Mode"), _L("Advanced View Mode")); @@ -1574,21 +1514,15 @@ void GUI_App::add_config_menu(wxMenuBar *menu) Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { if (get_mode() == comExpert) evt.Check(true); }, config_id_base + ConfigMenuModeExpert); local_menu->AppendSubMenu(mode_menu, _L("Mode"), wxString::Format(_L("%s View Mode"), SLIC3R_APP_NAME)); -#if ENABLE_GCODE_VIEWER } -#endif // ENABLE_GCODE_VIEWER local_menu->AppendSeparator(); local_menu->Append(config_id_base + ConfigMenuLanguage, _L("&Language")); -#if ENABLE_GCODE_VIEWER if (is_editor()) { -#endif // ENABLE_GCODE_VIEWER local_menu->AppendSeparator(); local_menu->Append(config_id_base + ConfigMenuFlashFirmware, _L("Flash printer &firmware"), _L("Upload a firmware image into an Arduino based printer")); // TODO: for when we're able to flash dictionaries // local_menu->Append(config_id_base + FirmwareMenuDict, _L("Flash language file"), _L("Upload a language dictionary file into a Prusa printer")); -#if ENABLE_GCODE_VIEWER } -#endif // ENABLE_GCODE_VIEWER local_menu->Bind(wxEVT_MENU, [this, config_id_base](wxEvent &event) { switch (event.GetId() - config_id_base) { @@ -1642,10 +1576,8 @@ void GUI_App::add_config_menu(wxMenuBar *menu) PreferencesDialog dlg(mainframe); dlg.ShowModal(); app_layout_changed = dlg.settings_layout_changed(); -#if ENABLE_GCODE_VIEWER if (dlg.seq_top_layer_only_changed()) this->plater_->refresh_print(); -#endif // ENABLE_GCODE_VIEWER } if (app_layout_changed) { // hide full main_sizer for mainFrame @@ -1664,19 +1596,13 @@ void GUI_App::add_config_menu(wxMenuBar *menu) // the dialog needs to be destroyed before the call to switch_language() // or sometimes the application crashes into wxDialogBase() destructor // so we put it into an inner scope -#if ENABLE_GCODE_VIEWER wxString title = is_editor() ? wxString(SLIC3R_APP_NAME) : wxString(GCODEVIEWER_APP_NAME); title += " - " + _L("Language selection"); -#endif // ENABLE_GCODE_VIEWER wxMessageDialog dialog(nullptr, _L("Switching the language will trigger application restart.\n" "You will lose content of the plater.") + "\n\n" + _L("Do you want to proceed?"), -#if ENABLE_GCODE_VIEWER title, -#else - wxString(SLIC3R_APP_NAME) + " - " + _L("Language selection"), -#endif // ENABLE_GCODE_VIEWER wxICON_QUESTION | wxOK | wxCANCEL); if (dialog.ShowModal() == wxID_CANCEL) return; @@ -1695,16 +1621,12 @@ void GUI_App::add_config_menu(wxMenuBar *menu) using std::placeholders::_1; -#if ENABLE_GCODE_VIEWER if (mode_menu != nullptr) { -#endif // ENABLE_GCODE_VIEWER auto modfn = [this](int mode, wxCommandEvent&) { if (get_mode() != mode) save_mode(mode); }; mode_menu->Bind(wxEVT_MENU, std::bind(modfn, comSimple, _1), config_id_base + ConfigMenuModeSimple); mode_menu->Bind(wxEVT_MENU, std::bind(modfn, comAdvanced, _1), config_id_base + ConfigMenuModeAdvanced); mode_menu->Bind(wxEVT_MENU, std::bind(modfn, comExpert, _1), config_id_base + ConfigMenuModeExpert); -#if ENABLE_GCODE_VIEWER } -#endif // ENABLE_GCODE_VIEWER menu->Append(local_menu, _L("&Configuration")); } diff --git a/src/slic3r/GUI/GUI_App.hpp b/src/slic3r/GUI/GUI_App.hpp index f00cf02df5..fec73b7244 100644 --- a/src/slic3r/GUI/GUI_App.hpp +++ b/src/slic3r/GUI/GUI_App.hpp @@ -97,7 +97,6 @@ static wxString dots("…", wxConvUTF8); class GUI_App : public wxApp { -#if ENABLE_GCODE_VIEWER public: enum class EAppMode : unsigned char { @@ -106,14 +105,10 @@ public: }; private: -#endif // ENABLE_GCODE_VIEWER - bool m_initialized { false }; bool m_app_conf_exists{ false }; -#if ENABLE_GCODE_VIEWER EAppMode m_app_mode{ EAppMode::Editor }; bool m_is_recreating_gui{ false }; -#endif // ENABLE_GCODE_VIEWER wxColour m_color_label_modified; wxColour m_color_label_sys; @@ -149,19 +144,13 @@ public: bool OnInit() override; bool initialized() const { return m_initialized; } -#if ENABLE_GCODE_VIEWER explicit GUI_App(EAppMode mode = EAppMode::Editor); -#else - GUI_App(); -#endif // ENABLE_GCODE_VIEWER ~GUI_App() override; -#if ENABLE_GCODE_VIEWER EAppMode get_app_mode() const { return m_app_mode; } bool is_editor() const { return m_app_mode == EAppMode::Editor; } bool is_gcode_viewer() const { return m_app_mode == EAppMode::GCodeViewer; } bool is_recreating_gui() const { return m_is_recreating_gui; } -#endif // ENABLE_GCODE_VIEWER // To be called after the GUI is fully built up. // Process command line parameters cached in this->init_params, @@ -199,9 +188,7 @@ public: void keyboard_shortcuts(); void load_project(wxWindow *parent, wxString& input_file) const; void import_model(wxWindow *parent, wxArrayString& input_files) const; -#if ENABLE_GCODE_VIEWER void load_gcode(wxWindow* parent, wxString& input_file) const; -#endif // ENABLE_GCODE_VIEWER static bool catch_error(std::function cb, const std::string& err); diff --git a/src/slic3r/GUI/GUI_Init.cpp b/src/slic3r/GUI/GUI_Init.cpp index d1c17bc896..70536c6ba9 100644 --- a/src/slic3r/GUI/GUI_Init.cpp +++ b/src/slic3r/GUI/GUI_Init.cpp @@ -22,7 +22,6 @@ namespace GUI { int GUI_Run(GUI_InitParams ¶ms) { try { -#if ENABLE_GCODE_VIEWER GUI::GUI_App* gui = new GUI::GUI_App(params.start_as_gcodeviewer ? GUI::GUI_App::EAppMode::GCodeViewer : GUI::GUI_App::EAppMode::Editor); if (gui->get_app_mode() != GUI::GUI_App::EAppMode::GCodeViewer) { // G-code viewer is currently not performing instance check, a new G-code viewer is started every time. @@ -32,29 +31,20 @@ int GUI_Run(GUI_InitParams ¶ms) return -1; } } -#else - GUI::GUI_App *gui = new GUI::GUI_App(); -#endif // ENABLE_GCODE_VIEWER // gui->autosave = m_config.opt_string("autosave"); GUI::GUI_App::SetInstance(gui); gui->init_params = ¶ms; /* -#if ENABLE_GCODE_VIEWER gui->CallAfter([gui, this, &load_configs, params.start_as_gcodeviewer] { -#else - gui->CallAfter([gui, this, &load_configs] { -#endif // ENABLE_GCODE_VIEWER if (!gui->initialized()) { return; } -#if ENABLE_GCODE_VIEWER if (params.start_as_gcodeviewer) { if (!m_input_files.empty()) gui->plater()->load_gcode(wxString::FromUTF8(m_input_files[0].c_str())); } else { -#endif // ENABLE_GCODE_VIEWER_AS #if 0 // Load the cummulative config over the currently active profiles. //FIXME if multiple configs are loaded, only the last one will have an effect. @@ -73,9 +63,7 @@ int GUI_Run(GUI_InitParams ¶ms) gui->plater()->load_files(m_input_files, true, true); if (!m_extra_config.empty()) gui->mainframe->load_config(m_extra_config); -#if ENABLE_GCODE_VIEWER } -#endif // ENABLE_GCODE_VIEWER }); */ int result = wxEntry(params.argc, params.argv); diff --git a/src/slic3r/GUI/GUI_Preview.cpp b/src/slic3r/GUI/GUI_Preview.cpp index 134da4848b..a3b25fba7b 100644 --- a/src/slic3r/GUI/GUI_Preview.cpp +++ b/src/slic3r/GUI/GUI_Preview.cpp @@ -1,7 +1,4 @@ #include "libslic3r/libslic3r.h" -#if !ENABLE_GCODE_VIEWER -#include "libslic3r/GCode/PreviewData.hpp" -#endif // !ENABLE_GCODE_VIEWER #include "GUI_Preview.hpp" #include "GUI_App.hpp" #include "GUI.hpp" @@ -13,9 +10,7 @@ #include "libslic3r/PresetBundle.hpp" #include "DoubleSlider.hpp" #include "Plater.hpp" -#if ENABLE_GCODE_VIEWER #include "MainFrame.hpp" -#endif // ENABLE_GCODE_VIEWER #include #include @@ -171,62 +166,33 @@ void View3D::render() m_canvas->set_as_dirty(); } -#if ENABLE_GCODE_VIEWER Preview::Preview( wxWindow* parent, Model* model, DynamicPrintConfig* config, BackgroundSlicingProcess* process, GCodeProcessor::Result* gcode_result, std::function schedule_background_process_func) -#else -Preview::Preview( - wxWindow* parent, Model* model, DynamicPrintConfig* config, - BackgroundSlicingProcess* process, GCodePreviewData* gcode_preview_data, std::function schedule_background_process_func) -#endif // ENABLE_GCODE_VIEWER : m_canvas_widget(nullptr) , m_canvas(nullptr) -#if ENABLE_GCODE_VIEWER , m_left_sizer(nullptr) , m_layers_slider_sizer(nullptr) , m_bottom_toolbar_panel(nullptr) -#else - , m_double_slider_sizer(nullptr) -#endif // ENABLE_GCODE_VIEWER , m_label_view_type(nullptr) , m_choice_view_type(nullptr) , m_label_show(nullptr) , m_combochecklist_features(nullptr) -#if ENABLE_GCODE_VIEWER , m_combochecklist_features_pos(0) , m_combochecklist_options(nullptr) -#else - , m_checkbox_travel(nullptr) - , m_checkbox_retractions(nullptr) - , m_checkbox_unretractions(nullptr) - , m_checkbox_shells(nullptr) - , m_checkbox_legend(nullptr) -#endif // ENABLE_GCODE_VIEWER , m_config(config) , m_process(process) -#if ENABLE_GCODE_VIEWER , m_gcode_result(gcode_result) -#else - , m_gcode_preview_data(gcode_preview_data) -#endif // ENABLE_GCODE_VIEWER , m_number_extruders(1) , m_preferred_color_mode("feature") , m_loaded(false) -#if !ENABLE_GCODE_VIEWER - , m_enabled(false) -#endif // !ENABLE_GCODE_VIEWER , m_schedule_background_process(schedule_background_process_func) #ifdef __linux__ , m_volumes_cleanup_required(false) #endif // __linux__ { - if (init(parent, model)) { -#if !ENABLE_GCODE_VIEWER - show_hide_ui_elements("none"); -#endif // !ENABLE_GCODE_VIEWER + if (init(parent, model)) load_print(); - } } bool Preview::init(wxWindow* parent, Model* model) @@ -234,14 +200,12 @@ bool Preview::init(wxWindow* parent, Model* model) if (!Create(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 /* disable wxTAB_TRAVERSAL */)) return false; -#if ENABLE_GCODE_VIEWER // to match the background of the sliders #ifdef _WIN32 SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW)); #else SetBackgroundColour(GetParent()->GetBackgroundColour()); #endif // _WIN32 -#endif // ENABLE_GCODE_VIEWER m_canvas_widget = OpenGLManager::create_wxglcanvas(*this); if (m_canvas_widget == nullptr) @@ -256,20 +220,11 @@ bool Preview::init(wxWindow* parent, Model* model) m_canvas->enable_legend_texture(true); m_canvas->enable_dynamic_background(true); -#if ENABLE_GCODE_VIEWER m_layers_slider_sizer = create_layers_slider_sizer(); m_bottom_toolbar_panel = new wxPanel(this); m_label_view_type = new wxStaticText(m_bottom_toolbar_panel, wxID_ANY, _L("View")); m_choice_view_type = new wxChoice(m_bottom_toolbar_panel, wxID_ANY); -#else - m_double_slider_sizer = new wxBoxSizer(wxHORIZONTAL); - create_double_slider(); - - m_label_view_type = new wxStaticText(this, wxID_ANY, _L("View")); - - m_choice_view_type = new wxChoice(this, wxID_ANY); -#endif // ENABLE_GCODE_VIEWER m_choice_view_type->Append(_L("Feature type")); m_choice_view_type->Append(_L("Height")); m_choice_view_type->Append(_L("Width")); @@ -280,22 +235,12 @@ bool Preview::init(wxWindow* parent, Model* model) m_choice_view_type->Append(_L("Color Print")); m_choice_view_type->SetSelection(0); -#if ENABLE_GCODE_VIEWER m_label_show = new wxStaticText(m_bottom_toolbar_panel, wxID_ANY, _L("Show")); -#else - m_label_show = new wxStaticText(this, wxID_ANY, _L("Show")); -#endif // ENABLE_GCODE_VIEWER m_combochecklist_features = new wxComboCtrl(); -#if ENABLE_GCODE_VIEWER m_combochecklist_features->Create(m_bottom_toolbar_panel, wxID_ANY, _L("Feature types"), wxDefaultPosition, wxDefaultSize, wxCB_READONLY); -#else - m_combochecklist_features->Create(this, wxID_ANY, _L("Feature types"), wxDefaultPosition, wxDefaultSize, wxCB_READONLY); -#endif // ENABLE_GCODE_VIEWER std::string feature_items = GUI::into_u8( -#if ENABLE_GCODE_VIEWER _L("Unknown") + "|1|" + -#endif // ENABLE_GCODE_VIEWER _L("Perimeter") + "|1|" + _L("External perimeter") + "|1|" + _L("Overhang perimeter") + "|1|" + @@ -313,7 +258,6 @@ bool Preview::init(wxWindow* parent, Model* model) ); Slic3r::GUI::create_combochecklist(m_combochecklist_features, GUI::into_u8(_L("Feature types")), feature_items); -#if ENABLE_GCODE_VIEWER m_combochecklist_options = new wxComboCtrl(); m_combochecklist_options->Create(m_bottom_toolbar_panel, wxID_ANY, _L("Options"), wxDefaultPosition, wxDefaultSize, wxCB_READONLY); std::string options_items = GUI::into_u8( @@ -325,28 +269,18 @@ bool Preview::init(wxWindow* parent, Model* model) get_option_type_string(OptionType::PausePrints) + "|0|" + get_option_type_string(OptionType::CustomGCodes) + "|0|" + get_option_type_string(OptionType::Shells) + "|0|" + - get_option_type_string(OptionType::ToolMarker) + "|0|" + + get_option_type_string(OptionType::ToolMarker) + "|1|" + get_option_type_string(OptionType::Legend) + "|1" -); + ); Slic3r::GUI::create_combochecklist(m_combochecklist_options, GUI::into_u8(_L("Options")), options_items); -#else - m_checkbox_travel = new wxCheckBox(this, wxID_ANY, _(L("Travel"))); - m_checkbox_retractions = new wxCheckBox(this, wxID_ANY, _(L("Retractions"))); - m_checkbox_unretractions = new wxCheckBox(this, wxID_ANY, _(L("Deretractions"))); - m_checkbox_shells = new wxCheckBox(this, wxID_ANY, _(L("Shells"))); - m_checkbox_legend = new wxCheckBox(this, wxID_ANY, _(L("Legend"))); - m_checkbox_legend->SetValue(true); -#endif // ENABLE_GCODE_VIEWER -#if ENABLE_GCODE_VIEWER m_left_sizer = new wxBoxSizer(wxVERTICAL); m_left_sizer->Add(m_canvas_widget, 1, wxALL | wxEXPAND, 0); wxBoxSizer* right_sizer = new wxBoxSizer(wxVERTICAL); right_sizer->Add(m_layers_slider_sizer, 1, wxEXPAND, 0); - m_moves_slider = new DoubleSlider::Control(m_bottom_toolbar_panel, wxID_ANY, 0, 0, 0, 100, wxDefaultPosition, wxSize(-1, 3 * GetTextExtent("m").y), wxSL_HORIZONTAL); - m_moves_slider->set_lower_editable(get_app_config()->get("seq_top_layer_only") == "0"); + m_moves_slider = new DoubleSlider::Control(m_bottom_toolbar_panel, wxID_ANY, 0, 0, 0, 100, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL); m_moves_slider->SetDrawMode(DoubleSlider::dmSequentialGCodeView); wxBoxSizer* bottom_toolbar_sizer = new wxBoxSizer(wxHORIZONTAL); @@ -370,32 +304,6 @@ bool Preview::init(wxWindow* parent, Model* model) wxBoxSizer* main_sizer = new wxBoxSizer(wxHORIZONTAL); main_sizer->Add(m_left_sizer, 1, wxALL | wxEXPAND, 0); main_sizer->Add(right_sizer, 0, wxALL | wxEXPAND, 0); -#else - wxBoxSizer* top_sizer = new wxBoxSizer(wxHORIZONTAL); - top_sizer->Add(m_canvas_widget, 1, wxALL | wxEXPAND, 0); - top_sizer->Add(m_double_slider_sizer, 0, wxEXPAND, 0); - - wxBoxSizer* bottom_sizer = new wxBoxSizer(wxHORIZONTAL); - bottom_sizer->Add(m_label_view_type, 0, wxALIGN_CENTER_VERTICAL, 5); - bottom_sizer->Add(m_choice_view_type, 0, wxEXPAND | wxALL, 5); - bottom_sizer->AddSpacer(10); - bottom_sizer->Add(m_label_show, 0, wxALIGN_CENTER_VERTICAL, 5); - bottom_sizer->Add(m_combochecklist_features, 0, wxEXPAND | wxALL, 5); - bottom_sizer->AddSpacer(20); - bottom_sizer->Add(m_checkbox_travel, 0, wxEXPAND | wxALL, 5); - bottom_sizer->AddSpacer(10); - bottom_sizer->Add(m_checkbox_retractions, 0, wxEXPAND | wxALL, 5); - bottom_sizer->AddSpacer(10); - bottom_sizer->Add(m_checkbox_unretractions, 0, wxEXPAND | wxALL, 5); - bottom_sizer->AddSpacer(10); - bottom_sizer->Add(m_checkbox_shells, 0, wxEXPAND | wxALL, 5); - bottom_sizer->AddSpacer(20); - bottom_sizer->Add(m_checkbox_legend, 0, wxEXPAND | wxALL, 5); - - wxBoxSizer* main_sizer = new wxBoxSizer(wxVERTICAL); - main_sizer->Add(top_sizer, 1, wxALL | wxEXPAND, 0); - main_sizer->Add(bottom_sizer, 0, wxALL | wxEXPAND, 0); -#endif // ENABLE_GCODE_VIEWER SetSizer(main_sizer); SetMinSize(GetSize()); @@ -403,26 +311,6 @@ bool Preview::init(wxWindow* parent, Model* model) bind_event_handlers(); -#if !ENABLE_GCODE_VIEWER - // sets colors for gcode preview extrusion roles - std::vector extrusion_roles_colors = { - "Perimeter", "FFFF66", - "External perimeter", "FFA500", - "Overhang perimeter", "0000FF", - "Internal infill", "B1302A", - "Solid infill", "D732D7", - "Top solid infill", "FF1A1A", - "Bridge infill", "9999FF", - "Gap fill", "FFFFFF", - "Skirt", "845321", - "Support material", "00FF00", - "Support material interface", "008000", - "Wipe tower", "B3E3AB", - "Custom", "28CC94" - }; - m_gcode_preview_data->set_extrusion_paths_colors(extrusion_roles_colors); -#endif // !ENABLE_GCODE_VIEWER - return true; } @@ -445,31 +333,18 @@ void Preview::set_as_dirty() void Preview::set_number_extruders(unsigned int number_extruders) { - if (m_number_extruders != number_extruders) - { + if (m_number_extruders != number_extruders) { m_number_extruders = number_extruders; int tool_idx = m_choice_view_type->FindString(_(L("Tool"))); int type = (number_extruders > 1) ? tool_idx /* color by a tool number */ : 0; // color by a feature type m_choice_view_type->SetSelection(type); -#if ENABLE_GCODE_VIEWER - if ((0 <= type) && (type < static_cast(GCodeViewer::EViewType::Count))) + if (0 <= type && (type < static_cast(GCodeViewer::EViewType::Count))) m_canvas->set_gcode_view_preview_type(static_cast(type)); -#else - if ((0 <= type) && (type < (int)GCodePreviewData::Extrusion::Num_View_Types)) - m_gcode_preview_data->extrusion.view_type = (GCodePreviewData::Extrusion::EViewType)type; -#endif // ENABLE_GCODE_VIEWER m_preferred_color_mode = (type == tool_idx) ? "tool_or_feature" : "feature"; } } -#if !ENABLE_GCODE_VIEWER -void Preview::set_enabled(bool enabled) -{ - m_enabled = enabled; -} -#endif // !ENABLE_GCODE_VIEWER - void Preview::bed_shape_changed() { if (m_canvas != nullptr) @@ -495,9 +370,7 @@ void Preview::load_print(bool keep_z_range) else if (tech == ptSLA) load_print_as_sla(); -#if ENABLE_GCODE_VIEWER update_bottom_toolbar(); -#endif // ENABLE_GCODE_VIEWER Layout(); } @@ -519,9 +392,6 @@ void Preview::reload_print(bool keep_volumes) !keep_volumes) { m_canvas->reset_volumes(); -#if !ENABLE_GCODE_VIEWER - m_canvas->reset_legend_texture(); -#endif // !ENABLE_GCODE_VIEWER m_loaded = false; #ifdef __linux__ m_volumes_cleanup_required = false; @@ -539,20 +409,13 @@ void Preview::refresh_print() return; load_print(true); -#if ENABLE_GCODE_VIEWER - m_moves_slider->set_lower_editable(get_app_config()->get("seq_top_layer_only") == "0"); -#endif // ENABLE_GCODE_VIEWER } void Preview::msw_rescale() { // rescale slider -#if ENABLE_GCODE_VIEWER if (m_layers_slider != nullptr) m_layers_slider->msw_rescale(); if (m_moves_slider != nullptr) m_moves_slider->msw_rescale(); -#else - if (m_slider) m_slider->msw_rescale(); -#endif // ENABLE_GCODE_VIEWER // rescale warning legend on the canvas get_canvas3d()->msw_rescale(); @@ -561,47 +424,28 @@ void Preview::msw_rescale() refresh_print(); } -#if ENABLE_GCODE_VIEWER +void Preview::jump_layers_slider(wxKeyEvent& evt) +{ + if (m_layers_slider) m_layers_slider->OnChar(evt); +} + void Preview::move_layers_slider(wxKeyEvent& evt) { if (m_layers_slider != nullptr) m_layers_slider->OnKeyDown(evt); } -#else -void Preview::move_double_slider(wxKeyEvent& evt) -{ - if (m_slider) - m_slider->OnKeyDown(evt); -} -#endif // ENABLE_GCODE_VIEWER -#if ENABLE_GCODE_VIEWER void Preview::edit_layers_slider(wxKeyEvent& evt) { if (m_layers_slider != nullptr) m_layers_slider->OnChar(evt); } -#else -void Preview::edit_double_slider(wxKeyEvent& evt) -{ - if (m_slider) - m_slider->OnChar(evt); -} -#endif // ENABLE_GCODE_VIEWER void Preview::bind_event_handlers() { this->Bind(wxEVT_SIZE, &Preview::on_size, this); m_choice_view_type->Bind(wxEVT_CHOICE, &Preview::on_choice_view_type, this); m_combochecklist_features->Bind(wxEVT_CHECKLISTBOX, &Preview::on_combochecklist_features, this); -#if ENABLE_GCODE_VIEWER m_combochecklist_options->Bind(wxEVT_CHECKLISTBOX, &Preview::on_combochecklist_options, this); m_moves_slider->Bind(wxEVT_SCROLL_CHANGED, &Preview::on_moves_slider_scroll_changed, this); -#else - m_checkbox_travel->Bind(wxEVT_CHECKBOX, &Preview::on_checkbox_travel, this); - m_checkbox_retractions->Bind(wxEVT_CHECKBOX, &Preview::on_checkbox_retractions, this); - m_checkbox_unretractions->Bind(wxEVT_CHECKBOX, &Preview::on_checkbox_unretractions, this); - m_checkbox_shells->Bind(wxEVT_CHECKBOX, &Preview::on_checkbox_shells, this); - m_checkbox_legend->Bind(wxEVT_CHECKBOX, &Preview::on_checkbox_legend, this); -#endif // ENABLE_GCODE_VIEWER } void Preview::unbind_event_handlers() @@ -609,76 +453,15 @@ void Preview::unbind_event_handlers() this->Unbind(wxEVT_SIZE, &Preview::on_size, this); m_choice_view_type->Unbind(wxEVT_CHOICE, &Preview::on_choice_view_type, this); m_combochecklist_features->Unbind(wxEVT_CHECKLISTBOX, &Preview::on_combochecklist_features, this); -#if ENABLE_GCODE_VIEWER m_combochecklist_options->Unbind(wxEVT_CHECKLISTBOX, &Preview::on_combochecklist_options, this); m_moves_slider->Unbind(wxEVT_SCROLL_CHANGED, &Preview::on_moves_slider_scroll_changed, this); -#else - m_checkbox_travel->Unbind(wxEVT_CHECKBOX, &Preview::on_checkbox_travel, this); - m_checkbox_retractions->Unbind(wxEVT_CHECKBOX, &Preview::on_checkbox_retractions, this); - m_checkbox_unretractions->Unbind(wxEVT_CHECKBOX, &Preview::on_checkbox_unretractions, this); - m_checkbox_shells->Unbind(wxEVT_CHECKBOX, &Preview::on_checkbox_shells, this); - m_checkbox_legend->Unbind(wxEVT_CHECKBOX, &Preview::on_checkbox_legend, this); -#endif // ENABLE_GCODE_VIEWER } -#if !ENABLE_GCODE_VIEWER -void Preview::show_hide_ui_elements(const std::string& what) -{ - bool enable = (what == "full"); - m_label_show->Enable(enable); - m_combochecklist_features->Enable(enable); - m_checkbox_travel->Enable(enable); - m_checkbox_retractions->Enable(enable); - m_checkbox_unretractions->Enable(enable); - m_checkbox_shells->Enable(enable); - m_checkbox_legend->Enable(enable); - - enable = (what != "none"); - m_label_view_type->Enable(enable); - m_choice_view_type->Enable(enable); - - bool visible = (what != "none"); - m_label_show->Show(visible); - m_combochecklist_features->Show(visible); - m_checkbox_travel->Show(visible); - m_checkbox_retractions->Show(visible); - m_checkbox_unretractions->Show(visible); - m_checkbox_shells->Show(visible); - m_checkbox_legend->Show(visible); - m_label_view_type->Show(visible); - m_choice_view_type->Show(visible); -} -#endif // !ENABLE_GCODE_VIEWER - -#if ENABLE_GCODE_VIEWER void Preview::hide_layers_slider() { m_layers_slider_sizer->Hide((size_t)0); Layout(); } -#else -void Preview::reset_sliders(bool reset_all) -{ - m_enabled = false; - // reset_double_slider(); - if (reset_all) - m_double_slider_sizer->Hide((size_t)0); - else - m_double_slider_sizer->GetItem(size_t(0))->GetSizer()->Hide(1); -} -#endif // ENABLE_GCODE_VIEWER - -#if !ENABLE_GCODE_VIEWER -void Preview::update_sliders(const std::vector& layers_z, bool keep_z_range) -{ - m_enabled = true; - update_double_slider(layers_z, keep_z_range); - - m_double_slider_sizer->Show((size_t)0); - - Layout(); -} -#endif // !ENABLE_GCODE_VIEWER void Preview::on_size(wxSizeEvent& evt) { @@ -690,31 +473,19 @@ void Preview::on_choice_view_type(wxCommandEvent& evt) { m_preferred_color_mode = (m_choice_view_type->GetStringSelection() == L("Tool")) ? "tool" : "feature"; int selection = m_choice_view_type->GetCurrentSelection(); -#if ENABLE_GCODE_VIEWER if (0 <= selection && selection < static_cast(GCodeViewer::EViewType::Count)) m_canvas->set_toolpath_view_type(static_cast(selection)); refresh_print(); -#else - if ((0 <= selection) && (selection < (int)GCodePreviewData::Extrusion::Num_View_Types)) - m_gcode_preview_data->extrusion.view_type = (GCodePreviewData::Extrusion::EViewType)selection; - - reload_print(); -#endif // ENABLE_GCODE_VIEWER } void Preview::on_combochecklist_features(wxCommandEvent& evt) { unsigned int flags = Slic3r::GUI::combochecklist_get_flags(m_combochecklist_features); -#if ENABLE_GCODE_VIEWER m_canvas->set_toolpath_role_visibility_flags(flags); -#else - m_gcode_preview_data->extrusion.role_flags = flags; -#endif // ENABLE_GCODE_VIEWER refresh_print(); } -#if ENABLE_GCODE_VIEWER void Preview::on_combochecklist_options(wxCommandEvent& evt) { auto xored = [](unsigned int flags1, unsigned int flags2, unsigned int flag) { @@ -739,39 +510,6 @@ void Preview::on_combochecklist_options(wxCommandEvent& evt) else m_canvas->set_as_dirty(); } -#else -void Preview::on_checkbox_travel(wxCommandEvent& evt) -{ - m_gcode_preview_data->travel.is_visible = m_checkbox_travel->IsChecked(); - m_gcode_preview_data->ranges.feedrate.set_mode(GCodePreviewData::FeedrateKind::TRAVEL, m_gcode_preview_data->travel.is_visible); - // Rather than refresh, reload print so that speed color ranges get recomputed (affected by travel visibility) - reload_print(); -} - -void Preview::on_checkbox_retractions(wxCommandEvent& evt) -{ - m_gcode_preview_data->retraction.is_visible = m_checkbox_retractions->IsChecked(); - refresh_print(); -} - -void Preview::on_checkbox_unretractions(wxCommandEvent& evt) -{ - m_gcode_preview_data->unretraction.is_visible = m_checkbox_unretractions->IsChecked(); - refresh_print(); -} - -void Preview::on_checkbox_shells(wxCommandEvent& evt) -{ - m_gcode_preview_data->shell.is_visible = m_checkbox_shells->IsChecked(); - refresh_print(); -} - -void Preview::on_checkbox_legend(wxCommandEvent& evt) -{ - m_canvas->enable_legend_texture(m_checkbox_legend->IsChecked()); - m_canvas_widget->Refresh(); -} -#endif // ENABLE_GCODE_VIEWER void Preview::update_view_type(bool keep_volumes) { @@ -787,49 +525,34 @@ void Preview::update_view_type(bool keep_volumes) int type = m_choice_view_type->FindString(choice); if (m_choice_view_type->GetSelection() != type) { m_choice_view_type->SetSelection(type); -#if ENABLE_GCODE_VIEWER - if ((0 <= type) && (type < static_cast(GCodeViewer::EViewType::Count))) + if (0 <= type && type < static_cast(GCodeViewer::EViewType::Count)) m_canvas->set_gcode_view_preview_type(static_cast(type)); -#else - if (0 <= type && type < (int)GCodePreviewData::Extrusion::Num_View_Types) - m_gcode_preview_data->extrusion.view_type = (GCodePreviewData::Extrusion::EViewType)type; -#endif // ENABLE_GCODE_VIEWER m_preferred_color_mode = "feature"; } -#if ENABLE_GCODE_VIEWER reload_print(keep_volumes); -#else - reload_print(); -#endif // ENABLE_GCODE_VIEWER } -#if ENABLE_GCODE_VIEWER void Preview::update_bottom_toolbar() { combochecklist_set_flags(m_combochecklist_features, m_canvas->get_toolpath_role_visibility_flags()); combochecklist_set_flags(m_combochecklist_options, m_canvas->get_gcode_options_visibility_flags()); // updates visibility of features combobox - if (m_bottom_toolbar_panel->IsShown()) - { + if (m_bottom_toolbar_panel->IsShown()) { wxSizer* sizer = m_bottom_toolbar_panel->GetSizer(); bool show = !m_canvas->is_gcode_legend_enabled() || m_canvas->get_gcode_view_type() != GCodeViewer::EViewType::FeatureType; - if (show) - { - if (sizer->GetItem(m_combochecklist_features) == nullptr) - { + if (show) { + if (sizer->GetItem(m_combochecklist_features) == nullptr) { sizer->Insert(m_combochecklist_features_pos, m_combochecklist_features, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, 5); sizer->Show(m_combochecklist_features); sizer->Layout(); Refresh(); } } - else - { - if (sizer->GetItem(m_combochecklist_features) != nullptr) - { + else { + if (sizer->GetItem(m_combochecklist_features) != nullptr) { sizer->Hide(m_combochecklist_features); sizer->Detach(m_combochecklist_features); sizer->Layout(); @@ -838,9 +561,7 @@ void Preview::update_bottom_toolbar() } } } -#endif // ENABLE_GCODE_VIEWER -#if ENABLE_GCODE_VIEWER wxBoxSizer* Preview::create_layers_slider_sizer() { wxBoxSizer* sizer = new wxBoxSizer(wxHORIZONTAL); @@ -872,37 +593,6 @@ wxBoxSizer* Preview::create_layers_slider_sizer() return sizer; } -#else -void Preview::create_double_slider() -{ - m_slider = new DoubleSlider::Control(this, wxID_ANY, 0, 0, 0, 100); - - bool sla_print_technology = wxGetApp().preset_bundle->printers.get_edited_preset().printer_technology() == ptSLA; - bool sequential_print = wxGetApp().preset_bundle->prints.get_edited_preset().config.opt_bool("complete_objects"); - m_slider->SetDrawMode(sla_print_technology, sequential_print); - - m_double_slider_sizer->Add(m_slider, 0, wxEXPAND, 0); - - - // sizer, m_canvas_widget - m_canvas_widget->Bind(wxEVT_KEY_DOWN, &Preview::update_double_slider_from_canvas, this); - m_canvas_widget->Bind(wxEVT_KEY_UP, [this](wxKeyEvent& event) { - if (event.GetKeyCode() == WXK_SHIFT) - m_slider->UseDefaultColors(true); - event.Skip(); - }); - - m_slider->Bind(wxEVT_SCROLL_CHANGED, &Preview::on_sliders_scroll_changed, this); - - Bind(DoubleSlider::wxCUSTOMEVT_TICKSCHANGED, [this](wxEvent&) { - Model& model = wxGetApp().plater()->model(); - model.custom_gcode_per_print_z = m_slider->GetTicksValues(); - m_schedule_background_process(); - - update_view_type(false); - }); -} -#endif // ENABLE_GCODE_VIEWER // Find an index of a value in a sorted vector, which is in . // Returns -1 if there is no such member. @@ -931,12 +621,7 @@ static int find_close_layer_idx(const std::vector& zs, double &z, double return -1; } -#if ENABLE_GCODE_VIEWER void Preview::check_layers_slider_values(std::vector& ticks_from_model, const std::vector& layers_z) -#else -void Preview::check_slider_values(std::vector& ticks_from_model, - const std::vector& layers_z) -#endif // ENABLE_GCODE_VIEWER { // All ticks that would end up outside the slider range should be erased. // TODO: this should be placed into more appropriate part of code, @@ -953,7 +638,6 @@ void Preview::check_slider_values(std::vector& ticks_from_mod m_schedule_background_process(); } -#if ENABLE_GCODE_VIEWER void Preview::update_layers_slider(const std::vector& layers_z, bool keep_z_range) { // Save the initial slider span. @@ -973,7 +657,8 @@ void Preview::update_layers_slider(const std::vector& layers_z, bool kee // Detect and set manipulation mode for double slider update_layers_slider_mode(); - CustomGCode::Info& ticks_info_from_model = wxGetApp().plater()->model().custom_gcode_per_print_z; + Plater* plater = wxGetApp().plater(); + CustomGCode::Info& ticks_info_from_model = plater->model().custom_gcode_per_print_z; check_layers_slider_values(ticks_info_from_model.gcodes, layers_z); m_layers_slider->SetSliderValues(layers_z); @@ -997,72 +682,20 @@ void Preview::update_layers_slider(const std::vector& layers_z, bool kee m_layers_slider->SetSelectionSpan(idx_low, idx_high); m_layers_slider->SetTicksValues(ticks_info_from_model); - bool sla_print_technology = wxGetApp().plater()->printer_technology() == ptSLA; + bool sla_print_technology = plater->printer_technology() == ptSLA; bool sequential_print = wxGetApp().preset_bundle->prints.get_edited_preset().config.opt_bool("complete_objects"); m_layers_slider->SetDrawMode(sla_print_technology, sequential_print); - m_layers_slider->SetExtruderColors(wxGetApp().plater()->get_extruder_colors_from_plater_config()); + m_layers_slider->SetExtruderColors(plater->get_extruder_colors_from_plater_config()); + if (sla_print_technology) + m_layers_slider->SetLayersTimes(plater->sla_print().print_statistics().layers_times); + else + m_layers_slider->SetLayersTimes(m_gcode_result->time_statistics.modes[0].layers_times); m_layers_slider_sizer->Show((size_t)0); Layout(); } -#else -void Preview::update_double_slider(const std::vector & layers_z, bool keep_z_range) -{ - // Save the initial slider span. - double z_low = m_slider->GetLowerValueD(); - double z_high = m_slider->GetHigherValueD(); - bool was_empty = m_slider->GetMaxValue() == 0; - bool force_sliders_full_range = was_empty; - if (!keep_z_range) - { - bool span_changed = layers_z.empty() || std::abs(layers_z.back() - m_slider->GetMaxValueD()) > DoubleSlider::epsilon()/*1e-6*/; - force_sliders_full_range |= span_changed; - } - bool snap_to_min = force_sliders_full_range || m_slider->is_lower_at_min(); - bool snap_to_max = force_sliders_full_range || m_slider->is_higher_at_max(); - - // Detect and set manipulation mode for double slider - update_double_slider_mode(); - - CustomGCode::Info& ticks_info_from_model = wxGetApp().plater()->model().custom_gcode_per_print_z; - check_slider_values(ticks_info_from_model.gcodes, layers_z); - - m_slider->SetSliderValues(layers_z); - assert(m_slider->GetMinValue() == 0); - m_slider->SetMaxValue(layers_z.empty() ? 0 : layers_z.size() - 1); - - int idx_low = 0; - int idx_high = m_slider->GetMaxValue(); - if (!layers_z.empty()) { - if (!snap_to_min) { - int idx_new = find_close_layer_idx(layers_z, z_low, DoubleSlider::epsilon()/*1e-6*/); - if (idx_new != -1) - idx_low = idx_new; - } - if (!snap_to_max) { - int idx_new = find_close_layer_idx(layers_z, z_high, DoubleSlider::epsilon()/*1e-6*/); - if (idx_new != -1) - idx_high = idx_new; - } - } - m_slider->SetSelectionSpan(idx_low, idx_high); - - m_slider->SetTicksValues(ticks_info_from_model); - - bool sla_print_technology = wxGetApp().plater()->printer_technology() == ptSLA; - bool sequential_print = wxGetApp().preset_bundle->prints.get_edited_preset().config.opt_bool("complete_objects"); - m_slider->SetDrawMode(sla_print_technology, sequential_print); - - m_slider->SetExtruderColors(wxGetApp().plater()->get_extruder_colors_from_plater_config()); -} -#endif // ENABLE_GCODE_VIEWER - -#if ENABLE_GCODE_VIEWER void Preview::update_layers_slider_mode() -#else -void Preview::update_double_slider_mode() -#endif // ENABLE_GCODE_VIEWER { // true -> single-extruder printer profile OR // multi-extruder printer profile , but whole model is printed by only one extruder @@ -1111,28 +744,15 @@ void Preview::update_double_slider_mode() } } -#if ENABLE_GCODE_VIEWER m_layers_slider->SetModeAndOnlyExtruder(one_extruder_printed_model, only_extruder); -#else - m_slider->SetModeAndOnlyExtruder(one_extruder_printed_model, only_extruder); -#endif // ENABLE_GCODE_VIEWER } -#if ENABLE_GCODE_VIEWER void Preview::reset_layers_slider() { m_layers_slider->SetHigherValue(0); m_layers_slider->SetLowerValue(0); } -#else -void Preview::reset_double_slider() -{ - m_slider->SetHigherValue(0); - m_slider->SetLowerValue(0); -} -#endif // ENABLE_GCODE_VIEWER -#if ENABLE_GCODE_VIEWER void Preview::update_layers_slider_from_canvas(wxKeyEvent& event) { if (event.HasModifiers()) { @@ -1181,42 +801,12 @@ void Preview::enable_moves_slider(bool enable) m_moves_slider->Refresh(); } } -#else -void Preview::update_double_slider_from_canvas(wxKeyEvent & event) -{ - if (event.HasModifiers()) { - event.Skip(); - return; - } - - const auto key = event.GetKeyCode(); - - if (key == 'U' || key == 'D') { - const int new_pos = key == 'U' ? m_slider->GetHigherValue() + 1 : m_slider->GetHigherValue() - 1; - m_slider->SetHigherValue(new_pos); - if (event.ShiftDown() || m_slider->is_one_layer()) m_slider->SetLowerValue(m_slider->GetHigherValue()); - } - else if (key == 'L') { - m_checkbox_legend->SetValue(!m_checkbox_legend->GetValue()); - auto evt = wxCommandEvent(); - on_checkbox_legend(evt); - } - else if (key == 'S') - m_slider->ChangeOneLayerLock(); - else if (key == WXK_SHIFT) - m_slider->UseDefaultColors(false); - else - event.Skip(); -} -#endif // ENABLE_GCODE_VIEWER void Preview::load_print_as_fff(bool keep_z_range) { -#if ENABLE_GCODE_VIEWER if (wxGetApp().mainframe == nullptr || wxGetApp().is_recreating_gui()) // avoid processing while mainframe is being constructed return; -#endif // ENABLE_GCODE_VIEWER if (m_loaded || m_process->current_printer_technology() != ptFFF) return; @@ -1241,17 +831,11 @@ void Preview::load_print_as_fff(bool keep_z_range) } } -#if ENABLE_GCODE_VIEWER if (wxGetApp().is_editor() && !has_layers) { hide_layers_slider(); m_left_sizer->Hide(m_bottom_toolbar_panel); m_left_sizer->Layout(); Refresh(); -#else - if (! has_layers) { - reset_sliders(true); - m_canvas->reset_legend_texture(); -#endif // ENABLE_GCODE_VIEWER m_canvas_widget->Refresh(); return; } @@ -1260,103 +844,61 @@ void Preview::load_print_as_fff(bool keep_z_range) // It is left to Slic3r to decide whether the print shall be colored by the tool or by the feature. // Color by feature if it is a single extruder print. unsigned int number_extruders = (unsigned int)print->extruders().size(); - int tool_idx = m_choice_view_type->FindString(_(L("Tool"))); + int tool_idx = m_choice_view_type->FindString(_L("Tool")); int type = (number_extruders > 1) ? tool_idx /* color by a tool number */ : 0; // color by a feature type m_choice_view_type->SetSelection(type); -#if ENABLE_GCODE_VIEWER if (0 <= type && type < static_cast(GCodeViewer::EViewType::Count)) m_canvas->set_gcode_view_preview_type(static_cast(type)); -#else - if ((0 <= type) && (type < (int)GCodePreviewData::Extrusion::Num_View_Types)) - m_gcode_preview_data->extrusion.view_type = (GCodePreviewData::Extrusion::EViewType)type; -#endif // ENABLE_GCODE_VIEWER // If the->SetSelection changed the following line, revert it to "decide yourself". m_preferred_color_mode = "tool_or_feature"; } -#if ENABLE_GCODE_VIEWER GCodeViewer::EViewType gcode_view_type = m_canvas->get_gcode_view_preview_type(); bool gcode_preview_data_valid = !m_gcode_result->moves.empty(); -#else - bool gcode_preview_data_valid = print->is_step_done(psGCodeExport) && ! m_gcode_preview_data->empty(); -#endif // ENABLE_GCODE_VIEWER // Collect colors per extruder. std::vector colors; std::vector color_print_values = {}; // set color print values, if it si selected "ColorPrint" view type -#if ENABLE_GCODE_VIEWER if (gcode_view_type == GCodeViewer::EViewType::ColorPrint) { -#else - if (m_gcode_preview_data->extrusion.view_type == GCodePreviewData::Extrusion::ColorPrint) { -#endif // ENABLE_GCODE_VIEWER - colors = wxGetApp().plater()->get_colors_for_color_print(); -#if !ENABLE_GCODE_VIEWER - colors.push_back("#808080"); // gray color for pause print or custom G-code -#endif // !ENABLE_GCODE_VIEWER + colors = wxGetApp().plater()->get_colors_for_color_print(m_gcode_result); if (!gcode_preview_data_valid) { color_print_values = wxGetApp().plater()->model().custom_gcode_per_print_z.gcodes; -#if ENABLE_GCODE_VIEWER colors.push_back("#808080"); // gray color for pause print or custom G-code -#endif // ENABLE_GCODE_VIEWER } } -#if ENABLE_GCODE_VIEWER else if (gcode_preview_data_valid || gcode_view_type == GCodeViewer::EViewType::Tool) { -#else - else if (gcode_preview_data_valid || (m_gcode_preview_data->extrusion.view_type == GCodePreviewData::Extrusion::Tool) ) { -#endif // ENABLE_GCODE_VIEWER - colors = wxGetApp().plater()->get_extruder_colors_from_plater_config(); + colors = wxGetApp().plater()->get_extruder_colors_from_plater_config(m_gcode_result); color_print_values.clear(); } if (IsShown()) { -#if ENABLE_GCODE_VIEWER std::vector zs; -#endif // ENABLE_GCODE_VIEWER m_canvas->set_selected_extruder(0); if (gcode_preview_data_valid) { // Load the real G-code preview. -#if ENABLE_GCODE_VIEWER m_canvas->load_gcode_preview(*m_gcode_result); m_canvas->refresh_gcode_preview(*m_gcode_result, colors); m_left_sizer->Show(m_bottom_toolbar_panel); m_left_sizer->Layout(); Refresh(); zs = m_canvas->get_gcode_layers_zs(); -#else - m_canvas->load_gcode_preview(*m_gcode_preview_data, colors); -#endif // ENABLE_GCODE_VIEWER m_loaded = true; } else { // Load the initial preview based on slices, not the final G-code. m_canvas->load_preview(colors, color_print_values); -#if ENABLE_GCODE_VIEWER m_left_sizer->Hide(m_bottom_toolbar_panel); m_left_sizer->Layout(); Refresh(); zs = m_canvas->get_volumes_print_zs(true); -#endif // ENABLE_GCODE_VIEWER } -#if !ENABLE_GCODE_VIEWER - show_hide_ui_elements(gcode_preview_data_valid ? "full" : "simple"); - std::vector zs = m_canvas->get_current_print_zs(true); -#endif // !ENABLE_GCODE_VIEWER if (zs.empty()) { // all layers filtered out -#if ENABLE_GCODE_VIEWER hide_layers_slider(); -#else - reset_sliders(true); -#endif // ENABLE_GCODE_VIEWER m_canvas_widget->Refresh(); } else -#if ENABLE_GCODE_VIEWER update_layers_slider(zs, keep_z_range); -#else - update_sliders(zs, keep_z_range); -#endif // ENABLE_GCODE_VIEWER } } @@ -1371,8 +913,7 @@ void Preview::load_print_as_sla() std::vector zs; double initial_layer_height = print->material_config().initial_layer_height.value; for (const SLAPrintObject* obj : print->objects()) - if (obj->is_step_done(slaposSliceSupports) && !obj->get_slice_index().empty()) - { + if (obj->is_step_done(slaposSliceSupports) && !obj->get_slice_index().empty()) { auto low_coord = obj->get_slice_index().front().print_level(); for (auto& rec : obj->get_slice_index()) zs.emplace_back(initial_layer_height + (rec.print_level() - low_coord) * SCALING_FACTOR); @@ -1382,76 +923,43 @@ void Preview::load_print_as_sla() m_canvas->reset_clipping_planes_cache(); n_layers = (unsigned int)zs.size(); - if (n_layers == 0) - { -#if ENABLE_GCODE_VIEWER + if (n_layers == 0) { hide_layers_slider(); -#else - reset_sliders(true); -#endif // ENABLE_GCODE_VIEWER m_canvas_widget->Refresh(); } - if (IsShown()) - { + if (IsShown()) { m_canvas->load_sla_preview(); -#if ENABLE_GCODE_VIEWER m_left_sizer->Hide(m_bottom_toolbar_panel); m_left_sizer->Hide(m_bottom_toolbar_panel); m_left_sizer->Layout(); Refresh(); -#else - show_hide_ui_elements("none"); -#endif // ENABLE_GCODE_VIEWER if (n_layers > 0) -#if ENABLE_GCODE_VIEWER update_layers_slider(zs); -#else - update_sliders(zs); -#endif // ENABLE_GCODE_VIEWER m_loaded = true; } } -#if ENABLE_GCODE_VIEWER void Preview::on_layers_slider_scroll_changed(wxCommandEvent& event) -#else -void Preview::on_sliders_scroll_changed(wxCommandEvent& event) -#endif // ENABLE_GCODE_VIEWER { - if (IsShown()) - { + if (IsShown()) { PrinterTechnology tech = m_process->current_printer_technology(); - if (tech == ptFFF) - { -#if ENABLE_GCODE_VIEWER - m_canvas->set_toolpaths_z_range({ m_layers_slider->GetLowerValueD(), m_layers_slider->GetHigherValueD() }); + if (tech == ptFFF) { + m_canvas->set_volumes_z_range({ m_layers_slider->GetLowerValueD(), m_layers_slider->GetHigherValueD() }); + m_canvas->set_toolpaths_z_range({ static_cast(m_layers_slider->GetLowerValue()), static_cast(m_layers_slider->GetHigherValue()) }); m_canvas->set_as_dirty(); -#else - m_canvas->set_toolpaths_range(m_slider->GetLowerValueD() - 1e-6, m_slider->GetHigherValueD() + 1e-6); - m_canvas->render(); - m_canvas->set_use_clipping_planes(false); -#endif // ENABLE_GCODE_VIEWER } - else if (tech == ptSLA) - { -#if ENABLE_GCODE_VIEWER + else if (tech == ptSLA) { m_canvas->set_clipping_plane(0, ClippingPlane(Vec3d::UnitZ(), -m_layers_slider->GetLowerValueD())); m_canvas->set_clipping_plane(1, ClippingPlane(-Vec3d::UnitZ(), m_layers_slider->GetHigherValueD())); m_canvas->set_use_clipping_planes(m_layers_slider->GetHigherValue() != 0); -#else - m_canvas->set_clipping_plane(0, ClippingPlane(Vec3d::UnitZ(), -m_slider->GetLowerValueD())); - m_canvas->set_clipping_plane(1, ClippingPlane(-Vec3d::UnitZ(), m_slider->GetHigherValueD())); - m_canvas->set_use_clipping_planes(m_slider->GetHigherValue() != 0); -#endif // ENABLE_GCODE_VIEWER m_canvas->render(); } } } -#if ENABLE_GCODE_VIEWER void Preview::on_moves_slider_scroll_changed(wxCommandEvent& event) { m_canvas->update_gcode_sequential_view_current(static_cast(m_moves_slider->GetLowerValueD() - 1.0), static_cast(m_moves_slider->GetHigherValueD() - 1.0)); @@ -1467,15 +975,14 @@ wxString Preview::get_option_type_string(OptionType type) const case OptionType::Unretractions: { return _L("Deretractions"); } case OptionType::ToolChanges: { return _L("Tool changes"); } case OptionType::ColorChanges: { return _L("Color changes"); } - case OptionType::PausePrints: { return _L("Pause prints"); } - case OptionType::CustomGCodes: { return _L("Custom GCodes"); } + case OptionType::PausePrints: { return _L("Print pauses"); } + case OptionType::CustomGCodes: { return _L("Custom G-codes"); } case OptionType::Shells: { return _L("Shells"); } case OptionType::ToolMarker: { return _L("Tool marker"); } case OptionType::Legend: { return _L("Legend/Estimated printing time"); } default: { return ""; } } } -#endif // ENABLE_GCODE_VIEWER } // namespace GUI } // namespace Slic3r diff --git a/src/slic3r/GUI/GUI_Preview.hpp b/src/slic3r/GUI/GUI_Preview.hpp index 3628bfd971..76fef117ee 100644 --- a/src/slic3r/GUI/GUI_Preview.hpp +++ b/src/slic3r/GUI/GUI_Preview.hpp @@ -7,9 +7,7 @@ #include "libslic3r/CustomGCode.hpp" #include -#if ENABLE_GCODE_VIEWER #include "libslic3r/GCode/GCodeProcessor.hpp" -#endif // ENABLE_GCODE_VIEWER class wxNotebook; class wxGLCanvas; @@ -25,9 +23,6 @@ namespace Slic3r { class DynamicPrintConfig; class Print; class BackgroundSlicingProcess; -#if !ENABLE_GCODE_VIEWER -class GCodePreviewData; -#endif // !ENABLE_GCODE_VIEWER class Model; namespace DoubleSlider { @@ -83,35 +78,19 @@ class Preview : public wxPanel { wxGLCanvas* m_canvas_widget; GLCanvas3D* m_canvas; -#if ENABLE_GCODE_VIEWER wxBoxSizer* m_left_sizer; wxBoxSizer* m_layers_slider_sizer; wxPanel* m_bottom_toolbar_panel; -#else - wxBoxSizer* m_double_slider_sizer; -#endif // ENABLE_GCODE_VIEWER wxStaticText* m_label_view_type; wxChoice* m_choice_view_type; wxStaticText* m_label_show; wxComboCtrl* m_combochecklist_features; -#if ENABLE_GCODE_VIEWER size_t m_combochecklist_features_pos; wxComboCtrl* m_combochecklist_options; -#else - wxCheckBox* m_checkbox_travel; - wxCheckBox* m_checkbox_retractions; - wxCheckBox* m_checkbox_unretractions; - wxCheckBox* m_checkbox_shells; - wxCheckBox* m_checkbox_legend; -#endif // ENABLE_GCODE_VIEWER DynamicPrintConfig* m_config; BackgroundSlicingProcess* m_process; -#if ENABLE_GCODE_VIEWER GCodeProcessor::Result* m_gcode_result; -#else - GCodePreviewData* m_gcode_preview_data; -#endif // ENABLE_GCODE_VIEWER #ifdef __linux__ // We are getting mysterious crashes on Linux in gtk due to OpenGL context activation GH #1874 #1955. @@ -126,19 +105,11 @@ class Preview : public wxPanel std::string m_preferred_color_mode; bool m_loaded; -#if !ENABLE_GCODE_VIEWER - bool m_enabled; -#endif // !ENABLE_GCODE_VIEWER -#if ENABLE_GCODE_VIEWER DoubleSlider::Control* m_layers_slider{ nullptr }; DoubleSlider::Control* m_moves_slider{ nullptr }; -#else - DoubleSlider::Control* m_slider {nullptr}; -#endif // ENABLE_GCODE_VIEWER public: -#if ENABLE_GCODE_VIEWER enum class OptionType : unsigned int { Travel, @@ -153,12 +124,8 @@ public: Legend }; -Preview(wxWindow* parent, Model* model, DynamicPrintConfig* config, BackgroundSlicingProcess* process, - GCodeProcessor::Result* gcode_result, std::function schedule_background_process = []() {}); -#else -Preview(wxWindow* parent, Model* model, DynamicPrintConfig* config, - BackgroundSlicingProcess* process, GCodePreviewData* gcode_preview_data, std::function schedule_background_process = []() {}); -#endif // ENABLE_GCODE_VIEWER + Preview(wxWindow* parent, Model* model, DynamicPrintConfig* config, BackgroundSlicingProcess* process, + GCodeProcessor::Result* gcode_result, std::function schedule_background_process = []() {}); virtual ~Preview(); wxGLCanvas* get_wxglcanvas() { return m_canvas_widget; } @@ -167,9 +134,6 @@ Preview(wxWindow* parent, Model* model, DynamicPrintConfig* config, void set_as_dirty(); void set_number_extruders(unsigned int number_extruders); -#if !ENABLE_GCODE_VIEWER - void set_enabled(bool enabled); -#endif // !ENABLE_GCODE_VIEWER void bed_shape_changed(); void select_view(const std::string& direction); void set_drop_target(wxDropTarget* target); @@ -179,24 +143,18 @@ Preview(wxWindow* parent, Model* model, DynamicPrintConfig* config, void refresh_print(); void msw_rescale(); -#if ENABLE_GCODE_VIEWER + void jump_layers_slider(wxKeyEvent& evt); void move_layers_slider(wxKeyEvent& evt); void edit_layers_slider(wxKeyEvent& evt); -#else - void move_double_slider(wxKeyEvent& evt); - void edit_double_slider(wxKeyEvent& evt); -#endif // ENABLE_GCODE_VIEWER void update_view_type(bool keep_volumes); bool is_loaded() const { return m_loaded; } -#if ENABLE_GCODE_VIEWER void update_bottom_toolbar(); void update_moves_slider(); void enable_moves_slider(bool enable); void hide_layers_slider(); -#endif // ENABLE_GCODE_VIEWER private: bool init(wxWindow* parent, Model* model); @@ -204,27 +162,11 @@ private: void bind_event_handlers(); void unbind_event_handlers(); -#if !ENABLE_GCODE_VIEWER - void show_hide_ui_elements(const std::string& what); - - void reset_sliders(bool reset_all); - void update_sliders(const std::vector& layers_z, bool keep_z_range = false); -#endif // !ENABLE_GCODE_VIEWER - void on_size(wxSizeEvent& evt); void on_choice_view_type(wxCommandEvent& evt); void on_combochecklist_features(wxCommandEvent& evt); -#if ENABLE_GCODE_VIEWER void on_combochecklist_options(wxCommandEvent& evt); -#else - void on_checkbox_travel(wxCommandEvent& evt); - void on_checkbox_retractions(wxCommandEvent& evt); - void on_checkbox_unretractions(wxCommandEvent& evt); - void on_checkbox_shells(wxCommandEvent& evt); - void on_checkbox_legend(wxCommandEvent& evt); -#endif // ENABLE_GCODE_VIEWER -#if ENABLE_GCODE_VIEWER // Create/Update/Reset double slider on 3dPreview wxBoxSizer* create_layers_slider_sizer(); void check_layers_slider_values(std::vector& ticks_from_model, @@ -234,28 +176,13 @@ private: void update_layers_slider_mode(); // update vertical DoubleSlider after keyDown in canvas void update_layers_slider_from_canvas(wxKeyEvent& event); -#else - // Create/Update/Reset double slider on 3dPreview - void create_double_slider(); - void check_slider_values(std::vector& ticks_from_model, - const std::vector& layers_z); - void reset_double_slider(); - void update_double_slider(const std::vector& layers_z, bool keep_z_range = false); - void update_double_slider_mode(); - // update DoubleSlider after keyDown in canvas - void update_double_slider_from_canvas(wxKeyEvent& event); -#endif // ENABLE_GCODE_VIEWER void load_print_as_fff(bool keep_z_range = false); void load_print_as_sla(); -#if ENABLE_GCODE_VIEWER void on_layers_slider_scroll_changed(wxCommandEvent& event); void on_moves_slider_scroll_changed(wxCommandEvent& event); wxString get_option_type_string(OptionType type) const; -#else - void on_sliders_scroll_changed(wxCommandEvent& event); -#endif // ENABLE_GCODE_VIEWER }; } // namespace GUI diff --git a/src/slic3r/GUI/GUI_Utils.hpp b/src/slic3r/GUI/GUI_Utils.hpp index edc9fba1fe..3235d6e9ea 100644 --- a/src/slic3r/GUI/GUI_Utils.hpp +++ b/src/slic3r/GUI/GUI_Utils.hpp @@ -95,6 +95,7 @@ public: #ifndef __WXOSX__ // Don't call SetFont under OSX to avoid name cutting in ObjectList this->SetFont(m_normal_font); #endif + this->CenterOnParent(); // Linux specific issue : get_dpi_for_window(this) still doesn't responce to the Display's scale in new wxWidgets(3.1.3). // So, calculate the m_em_unit value from the font size, as before @@ -384,7 +385,6 @@ public: std::ostream& operator<<(std::ostream &os, const WindowMetrics& metrics); -#if ENABLE_GCODE_VIEWER inline int hex_digit_to_int(const char c) { return @@ -392,7 +392,6 @@ inline int hex_digit_to_int(const char c) (c >= 'A' && c <= 'F') ? int(c - 'A') + 10 : (c >= 'a' && c <= 'f') ? int(c - 'a') + 10 : -1; } -#endif // ENABLE_GCODE_VIEWER class TaskTimer { diff --git a/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp b/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp index 3384804b4d..8f2703faad 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp @@ -30,7 +30,7 @@ void GLGizmoFdmSupports::on_shutdown() std::string GLGizmoFdmSupports::on_get_name() const { - return (_(L("FDM Support Editing")) + " [L]").ToUTF8().data(); + return (_L("Paint-on supports") + " [L]").ToUTF8().data(); } @@ -41,11 +41,11 @@ bool GLGizmoFdmSupports::on_init() m_desc["clipping_of_view"] = _L("Clipping of view") + ": "; m_desc["reset_direction"] = _L("Reset direction"); - m_desc["cursor_size"] = _L("Cursor size") + ": "; - m_desc["cursor_type"] = _L("Cursor type") + ": "; + m_desc["cursor_size"] = _L("Brush size") + ": "; + m_desc["cursor_type"] = _L("Brush shape") + ": "; m_desc["enforce_caption"] = _L("Left mouse button") + ": "; m_desc["enforce"] = _L("Enforce supports"); - m_desc["block_caption"] = _L("Right mouse button") + " "; + m_desc["block_caption"] = _L("Right mouse button") + ": "; m_desc["block"] = _L("Block supports"); m_desc["remove_caption"] = _L("Shift + Left mouse button") + ": "; m_desc["remove"] = _L("Remove selection"); @@ -126,7 +126,7 @@ void GLGizmoFdmSupports::on_render_input_window(float x, float y, float bottom_l m_imgui->text(""); - if (m_imgui->button("Autoset by angle...")) { + if (m_imgui->button(_L("Autoset by angle") + "...")) { m_setting_angle = true; } @@ -232,9 +232,12 @@ void GLGizmoFdmSupports::on_render_input_window(float x, float y, float bottom_l else { m_imgui->begin(_L("Autoset custom supports"), ImGuiWindowFlags_NoMove | ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoCollapse); ImGui::AlignTextToFramePadding(); - m_imgui->text(_L("Threshold:") + " " + _L("deg")); + m_imgui->text(_L("Threshold:")); + std::string format_str = std::string("%.f") + I18N::translate_utf8("°", + "Degree sign to use in the respective slider in FDM supports gizmo," + "placed after the number with no whitespace in between."); ImGui::SameLine(); - if (m_imgui->slider_float("", &m_angle_threshold_deg, 0.f, 90.f, "%.f")) + if (m_imgui->slider_float("", &m_angle_threshold_deg, 0.f, 90.f, format_str.data())) m_parent.set_slope_normal_angle(90.f - m_angle_threshold_deg); if (m_imgui->button(_L("Enforce"))) select_facets_by_angle(m_angle_threshold_deg, false); diff --git a/src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp b/src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp index 5c7ca189be..819d014e81 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp @@ -36,16 +36,16 @@ void GLGizmoPainterBase::activate_internal_undo_redo_stack(bool activate) { if (activate && ! m_internal_stack_active) { wxString str = get_painter_type() == PainterGizmoType::FDM_SUPPORTS - ? _L("Supports gizmo turned on") - : _L("Seam gizmo turned on"); + ? _L("Entering Paint-on supports") + : _L("Entering Seam painting"); Plater::TakeSnapshot(wxGetApp().plater(), str); wxGetApp().plater()->enter_gizmos_stack(); m_internal_stack_active = true; } if (! activate && m_internal_stack_active) { wxString str = get_painter_type() == PainterGizmoType::SEAM - ? _L("Seam gizmo turned off") - : _L("Supports gizmo turned off"); + ? _L("Leaving Seam painting") + : _L("Leaving Paint-on supports"); wxGetApp().plater()->leave_gizmos_stack(); Plater::TakeSnapshot(wxGetApp().plater(), str); m_internal_stack_active = false; diff --git a/src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp b/src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp index 77366c6335..c5060a88ed 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp @@ -200,62 +200,10 @@ void GLGizmoRotate::on_render_for_picking() const glsafe(::glPopMatrix()); } - - -GLGizmoRotate3D::RotoptimzeWindow::RotoptimzeWindow(ImGuiWrapper * imgui, - State & state, - const Alignment &alignment) - : m_imgui{imgui} -{ - imgui->begin(_L("Rotation"), ImGuiWindowFlags_NoMove | - ImGuiWindowFlags_AlwaysAutoResize | - ImGuiWindowFlags_NoCollapse); - - // adjust window position to avoid overlap the view toolbar - float win_h = ImGui::GetWindowHeight(); - float x = alignment.x, y = alignment.y; - y = std::min(y, alignment.bottom_limit - win_h); - ImGui::SetWindowPos(ImVec2(x, y), ImGuiCond_Always); - - static constexpr const char * button_txt = L("Optimize orientation"); - static constexpr const char * slider_txt = L("Accuracy"); - - float button_width = imgui->calc_text_size(_(button_txt)).x; - ImGui::PushItemWidth(100.); - //if (imgui->button(_(button_txt))) { - if (ImGui::ArrowButton(_(button_txt).c_str(), ImGuiDir_Down)){ - std::cout << "Blip" << std::endl; - } - - ImGui::SliderFloat(_(slider_txt).c_str(), &state.accuracy, 0.01f, 1.f, "%.1f"); - - static const std::vector options = { - _L("Least supports").ToStdString(), - _L("Suface quality").ToStdString() - }; - -// if (imgui->combo(_L("Choose method"), options, state.method) ) { -// std::cout << "method: " << state.method << std::endl; -// } - - -} - -GLGizmoRotate3D::RotoptimzeWindow::~RotoptimzeWindow() -{ - m_imgui->end(); -} - void GLGizmoRotate3D::on_render_input_window(float x, float y, float bottom_limit) { if (wxGetApp().preset_bundle->printers.get_edited_preset().printer_technology() != ptSLA) return; - -// TODO: - -// m_rotoptimizewin_state.mobj = ?; -// RotoptimzeWindow popup{m_imgui, m_rotoptimizewin_state, {x, y, bottom_limit}}; - } void GLGizmoRotate::render_circle() const diff --git a/src/slic3r/GUI/Gizmos/GLGizmoRotate.hpp b/src/slic3r/GUI/Gizmos/GLGizmoRotate.hpp index c418c4b316..126c97b1dd 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoRotate.hpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoRotate.hpp @@ -136,37 +136,6 @@ protected: } void on_render_input_window(float x, float y, float bottom_limit) override; - -private: - - class RotoptimzeWindow { - ImGuiWrapper *m_imgui = nullptr; - - public: - - struct State { - enum Metods { mMinSupportPoints, mLegacy }; - - float accuracy = 1.f; - int method = mMinSupportPoints; - ModelObject *mobj = nullptr; - }; - - struct Alignment { float x, y, bottom_limit; }; - - RotoptimzeWindow(ImGuiWrapper * imgui, - State & state, - const Alignment &bottom_limit); - - ~RotoptimzeWindow(); - - RotoptimzeWindow(const RotoptimzeWindow&) = delete; - RotoptimzeWindow(RotoptimzeWindow &&) = delete; - RotoptimzeWindow& operator=(const RotoptimzeWindow &) = delete; - RotoptimzeWindow& operator=(RotoptimzeWindow &&) = delete; - }; - - RotoptimzeWindow::State m_rotoptimizewin_state = {}; }; } // namespace GUI diff --git a/src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp b/src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp index f76cb42b6e..6c3a8ddd3a 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp @@ -24,11 +24,11 @@ bool GLGizmoSeam::on_init() m_desc["clipping_of_view"] = _L("Clipping of view") + ": "; m_desc["reset_direction"] = _L("Reset direction"); - m_desc["cursor_size"] = _L("Cursor size") + ": "; - m_desc["cursor_type"] = _L("Cursor type") + ": "; + m_desc["cursor_size"] = _L("Brush size") + ": "; + m_desc["cursor_type"] = _L("Brush shape") + ": "; m_desc["enforce_caption"] = _L("Left mouse button") + ": "; m_desc["enforce"] = _L("Enforce seam"); - m_desc["block_caption"] = _L("Right mouse button") + " "; + m_desc["block_caption"] = _L("Right mouse button") + ": "; m_desc["block"] = _L("Block seam"); m_desc["remove_caption"] = _L("Shift + Left mouse button") + ": "; m_desc["remove"] = _L("Remove selection"); @@ -43,7 +43,7 @@ bool GLGizmoSeam::on_init() std::string GLGizmoSeam::on_get_name() const { - return (_(L("Seam Editing")) + " [P]").ToUTF8().data(); + return (_L("Seam painting") + " [P]").ToUTF8().data(); } diff --git a/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp b/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp index 739edec4c6..e3bb964ad3 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp @@ -104,7 +104,7 @@ bool GLGizmosManager::init() m_gizmos.emplace_back(new GLGizmoCut(m_parent, "cut.svg", 4)); m_gizmos.emplace_back(new GLGizmoHollow(m_parent, "hollow.svg", 5)); m_gizmos.emplace_back(new GLGizmoSlaSupports(m_parent, "sla_supports.svg", 6)); - m_gizmos.emplace_back(new GLGizmoFdmSupports(m_parent, "sla_supports.svg", 7)); + m_gizmos.emplace_back(new GLGizmoFdmSupports(m_parent, "fdm_supports.svg", 7)); m_gizmos.emplace_back(new GLGizmoSeam(m_parent, "seam.svg", 8)); m_common_gizmos_data.reset(new CommonGizmosDataPool(&m_parent)); diff --git a/src/slic3r/GUI/ImGuiWrapper.cpp b/src/slic3r/GUI/ImGuiWrapper.cpp index d759f4b9af..c1d1213808 100644 --- a/src/slic3r/GUI/ImGuiWrapper.cpp +++ b/src/slic3r/GUI/ImGuiWrapper.cpp @@ -23,7 +23,7 @@ #include "libslic3r/libslic3r.h" #include "libslic3r/Utils.hpp" -#include "3DScene.hpp"+ +#include "3DScene.hpp" #include "GUI.hpp" #include "I18N.hpp" #include "Search.hpp" @@ -42,14 +42,16 @@ static const std::map font_icons = { {ImGui::PrinterSlaIconMarker , "sla_printer" }, {ImGui::FilamentIconMarker , "spool" }, {ImGui::MaterialIconMarker , "resin" }, - {ImGui::CloseIconMarker , "notification_close" }, - {ImGui::CloseIconHoverMarker , "notification_close_hover" }, - //{ImGui::TimerDotMarker , "timer_dot" }, - //{ImGui::TimerDotEmptyMarker , "timer_dot_empty" }, - {ImGui::MinimalizeMarker , "notification_minimalize" }, - {ImGui::MinimalizeHoverMarker , "notification_minimalize_hover" }, - {ImGui::WarningMarker , "notification_warning" }, - {ImGui::ErrorMarker , "notification_error" } + {ImGui::MinimalizeButton , "notification_minimalize" }, + {ImGui::MinimalizeHoverButton , "notification_minimalize_hover" } +}; +static const std::map font_icons_large = { + {ImGui::CloseNotifButton , "notification_close" }, + {ImGui::CloseNotifHoverButton , "notification_close_hover" }, + {ImGui::EjectButton , "notification_eject_sd" }, + {ImGui::EjectHoverButton , "notification_eject_sd_hover" }, + {ImGui::WarningMarker , "notification_warning" }, + {ImGui::ErrorMarker , "notification_error" } }; const ImVec4 ImGuiWrapper::COL_GREY_DARK = { 0.333f, 0.333f, 0.333f, 1.0f }; @@ -718,7 +720,7 @@ void ImGuiWrapper::search_list(const ImVec2& size_, bool (*items_getter)(int, co // The press on Esc key invokes editing of InputText (removes last changes) // So we should save previous value... std::string str = search_str; - ImGui::InputTextEx("", NULL, search_str, 20, search_size, ImGuiInputTextFlags_AutoSelectAll, NULL, NULL); + ImGui::InputTextEx("", NULL, search_str, 40, search_size, ImGuiInputTextFlags_AutoSelectAll, NULL, NULL); edited = ImGui::IsItemEdited(); if (edited) hovered_id = 0; @@ -796,6 +798,8 @@ void ImGuiWrapper::search_list(const ImVec2& size_, bool (*items_getter)(int, co } }; + ImGui::AlignTextToFramePadding(); + // add checkboxes for show/hide Categories and Groups text(_L("Use for search")+":"); check_box(_L("Category"), view_params.category); @@ -948,6 +952,8 @@ void ImGuiWrapper::init_font(bool compress) // add rectangles for the icons to the font atlas for (auto& icon : font_icons) io.Fonts->AddCustomRectFontGlyph(font, icon.first, icon_sz, icon_sz, 3.0 * font_scale + icon_sz); + for (auto& icon : font_icons_large) + io.Fonts->AddCustomRectFontGlyph(font, icon.first, icon_sz * 2, icon_sz * 2, 3.0 * font_scale + icon_sz * 2); // Build texture atlas unsigned char* pixels; @@ -967,6 +973,20 @@ void ImGuiWrapper::init_font(bool compress) } rect_id++; } + icon_sz = lround(32 * font_scale); // default size of large icon is 32 px + + for (auto icon : font_icons_large) { + if (const ImFontAtlas::CustomRect* rect = io.Fonts->GetCustomRectByIndex(rect_id)) { + 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++) { + ImU32* pOut = (ImU32*)pixels + (rect->Y + y) * width + (rect->X); + for (int x = 0; x < icon_sz; x++) + *pOut++ = *pIn++; + } + } + rect_id++; + } // Upload texture to graphics system GLint last_texture; diff --git a/src/slic3r/GUI/InstanceCheck.cpp b/src/slic3r/GUI/InstanceCheck.cpp index 4aaecd2b28..8067fc7f32 100644 --- a/src/slic3r/GUI/InstanceCheck.cpp +++ b/src/slic3r/GUI/InstanceCheck.cpp @@ -251,11 +251,24 @@ namespace instance_check_internal bool instance_check(int argc, char** argv, bool app_config_single_instance) { +#ifndef _WIN32 + boost::system::error_code ec; +#endif std::size_t hashed_path = #ifdef _WIN32 std::hash{}(boost::filesystem::system_complete(argv[0]).string()); #else - std::hash{}(boost::filesystem::canonical(boost::filesystem::system_complete(argv[0])).string()); + std::hash{}(boost::filesystem::canonical(boost::filesystem::system_complete(argv[0]), ec).string()); + if(ec.value() > 0) { // canonical was not able to find execitable (can happen with appimage on some systems) + ec.clear(); + // Compose path with boost canonical of folder and filename + hashed_path = std::hash{}(boost::filesystem::canonical(boost::filesystem::system_complete(argv[0]).parent_path(), ec).string() + "/" + boost::filesystem::system_complete(argv[0]).filename().string()); + if(ec.value() > 0) { + // Still not valid, process without canonical + hashed_path = std::hash{}(boost::filesystem::system_complete(argv[0]).string()); + + } + } #endif // win32 std::string lock_name = std::to_string(hashed_path); diff --git a/src/slic3r/GUI/Jobs/ArrangeJob.cpp b/src/slic3r/GUI/Jobs/ArrangeJob.cpp index 41fd717da8..b8f165c025 100644 --- a/src/slic3r/GUI/Jobs/ArrangeJob.cpp +++ b/src/slic3r/GUI/Jobs/ArrangeJob.cpp @@ -46,7 +46,7 @@ public: } }; -static WipeTower get_wipe_tower(Plater &plater) +static WipeTower get_wipe_tower(const Plater &plater) { return WipeTower{plater.canvas3D()->get_wipe_tower_info()}; } @@ -68,18 +68,13 @@ void ArrangeJob::clear_input() m_unprintable.reserve(cunprint /* for optional wti */); } -double ArrangeJob::bed_stride() const { - double bedwidth = m_plater->bed_shape_bb().size().x(); - return scaled((1. + LOGICAL_BED_GAP) * bedwidth); -} - void ArrangeJob::prepare_all() { clear_input(); for (ModelObject *obj: m_plater->model().objects) for (ModelInstance *mi : obj->instances) { ArrangePolygons & cont = mi->printable ? m_selected : m_unprintable; - cont.emplace_back(get_arrange_poly(mi)); + cont.emplace_back(get_arrange_poly(mi, m_plater)); } if (auto wti = get_wipe_tower(*m_plater)) @@ -90,7 +85,7 @@ void ArrangeJob::prepare_selected() { clear_input(); Model &model = m_plater->model(); - double stride = bed_stride(); + double stride = bed_stride(m_plater); std::vector obj_sel(model.objects.size(), nullptr); @@ -111,7 +106,7 @@ void ArrangeJob::prepare_selected() { inst_sel[size_t(inst_id)] = true; for (size_t i = 0; i < inst_sel.size(); ++i) { - ArrangePolygon &&ap = get_arrange_poly(mo->instances[i]); + ArrangePolygon &&ap = get_arrange_poly(mo->instances[i], m_plater); ArrangePolygons &cont = mo->instances[i]->printable ? (inst_sel[i] ? m_selected : @@ -123,7 +118,7 @@ void ArrangeJob::prepare_selected() { } if (auto wti = get_wipe_tower(*m_plater)) { - ArrangePolygon &&ap = get_arrange_poly(&wti); + ArrangePolygon &&ap = get_arrange_poly(&wti, m_plater); m_plater->get_selection().is_wipe_tower() ? m_selected.emplace_back(std::move(ap)) : @@ -147,11 +142,13 @@ void ArrangeJob::prepare() void ArrangeJob::process() { static const auto arrangestr = _(L("Arranging")); - - double dist = min_object_distance(*m_plater->config()); + + GLCanvas3D::ArrangeSettings settings = + m_plater->canvas3D()->get_arrange_settings(); arrangement::ArrangeParams params; - params.min_obj_distance = scaled(dist); + params.min_obj_distance = scaled(settings.distance); + params.allow_rotations = settings.enable_rotation; auto count = unsigned(m_selected.size() + m_unprintable.size()); Points bedpts = get_bed_shape(*m_plater->config()); @@ -211,14 +208,25 @@ void ArrangeJob::finalize() { Job::finalize(); } -arrangement::ArrangePolygon get_wipe_tower_arrangepoly(Plater &plater) +std::optional +get_wipe_tower_arrangepoly(const Plater &plater) { - return WipeTower{plater.canvas3D()->get_wipe_tower_info()}.get_arrange_polygon(); + if (auto wti = get_wipe_tower(plater)) + return wti.get_arrange_polygon(); + + return {}; } -void apply_wipe_tower_arrangepoly(Plater &plater, const arrangement::ArrangePolygon &ap) +void apply_wipe_tower_arrangepoly(Plater & plater, + const arrangement::ArrangePolygon &ap) { - WipeTower{plater.canvas3D()->get_wipe_tower_info()}.apply_arrange_result(ap.translation.cast(), ap.rotation); + WipeTower{plater.canvas3D()->get_wipe_tower_info()} + .apply_arrange_result(ap.translation.cast(), ap.rotation); +} + +double bed_stride(const Plater *plater) { + double bedwidth = plater->bed_shape_bb().size().x(); + return scaled((1. + LOGICAL_BED_GAP) * bedwidth); } }} // namespace Slic3r::GUI diff --git a/src/slic3r/GUI/Jobs/ArrangeJob.hpp b/src/slic3r/GUI/Jobs/ArrangeJob.hpp index bd097af6be..f178711e98 100644 --- a/src/slic3r/GUI/Jobs/ArrangeJob.hpp +++ b/src/slic3r/GUI/Jobs/ArrangeJob.hpp @@ -14,35 +14,12 @@ class ArrangeJob : public Job using ArrangePolygon = arrangement::ArrangePolygon; using ArrangePolygons = arrangement::ArrangePolygons; - - // The gap between logical beds in the x axis expressed in ratio of - // the current bed width. - static const constexpr double LOGICAL_BED_GAP = 1. / 5.; - + ArrangePolygons m_selected, m_unselected, m_unprintable; // clear m_selected and m_unselected, reserve space for next usage void clear_input(); - - // Stride between logical beds - double bed_stride() const; - - // Set up arrange polygon for a ModelInstance and Wipe tower - template ArrangePolygon get_arrange_poly(T *obj) const - { - ArrangePolygon ap = obj->get_arrange_polygon(); - ap.priority = 0; - ap.bed_idx = ap.translation.x() / bed_stride(); - ap.setter = [obj, this](const ArrangePolygon &p) { - if (p.is_arranged()) { - Vec2d t = p.translation.cast(); - t.x() += p.bed_idx * bed_stride(); - obj->apply_arrange_result(t, p.rotation); - } - }; - return ap; - } - + // Prepare all objects on the bed regardless of the selection void prepare_all(); @@ -69,9 +46,37 @@ public: void finalize() override; }; -arrangement::ArrangePolygon get_wipe_tower_arrangepoly(Plater &); +std::optional get_wipe_tower_arrangepoly(const Plater &); void apply_wipe_tower_arrangepoly(Plater &plater, const arrangement::ArrangePolygon &ap); +// The gap between logical beds in the x axis expressed in ratio of +// the current bed width. +static const constexpr double LOGICAL_BED_GAP = 1. / 5.; + +// Stride between logical beds +double bed_stride(const Plater *plater); + +// Set up arrange polygon for a ModelInstance and Wipe tower +template +arrangement::ArrangePolygon get_arrange_poly(T *obj, const Plater *plater) +{ + using ArrangePolygon = arrangement::ArrangePolygon; + + ArrangePolygon ap = obj->get_arrange_polygon(); + ap.priority = 0; + ap.bed_idx = ap.translation.x() / bed_stride(plater); + ap.setter = [obj, plater](const ArrangePolygon &p) { + if (p.is_arranged()) { + Vec2d t = p.translation.cast(); + t.x() += p.bed_idx * bed_stride(plater); + obj->apply_arrange_result(t, p.rotation); + } + }; + + return ap; +} + + }} // namespace Slic3r::GUI #endif // ARRANGEJOB_HPP diff --git a/src/slic3r/GUI/Jobs/FillBedJob.cpp b/src/slic3r/GUI/Jobs/FillBedJob.cpp new file mode 100644 index 0000000000..8c7b3c418b --- /dev/null +++ b/src/slic3r/GUI/Jobs/FillBedJob.cpp @@ -0,0 +1,139 @@ +#include "FillBedJob.hpp" + +#include "libslic3r/Model.hpp" +#include "libslic3r/ClipperUtils.hpp" + +#include "slic3r/GUI/Plater.hpp" +#include "slic3r/GUI/GLCanvas3D.hpp" +#include "slic3r/GUI/GUI_ObjectList.hpp" + +#include + +namespace Slic3r { +namespace GUI { + +void FillBedJob::prepare() +{ + m_selected.clear(); + m_unselected.clear(); + m_bedpts.clear(); + + m_object_idx = m_plater->get_selected_object_idx(); + if (m_object_idx == -1) + return; + + ModelObject *model_object = m_plater->model().objects[m_object_idx]; + if (model_object->instances.empty()) return; + + m_selected.reserve(model_object->instances.size()); + for (ModelInstance *inst : model_object->instances) + if (inst->printable) { + ArrangePolygon ap = get_arrange_poly(inst, m_plater); + ++ap.priority; // need to be included in the result + m_selected.emplace_back(ap); + } + + if (m_selected.empty()) return; + + m_bedpts = get_bed_shape(*m_plater->config()); + + auto &objects = m_plater->model().objects; + for (size_t idx = 0; idx < objects.size(); ++idx) + if (int(idx) != m_object_idx) + for (const ModelInstance *mi : objects[idx]->instances) { + m_unselected.emplace_back(mi->get_arrange_polygon()); + m_unselected.back().bed_idx = 0; + } + + if (auto wt = get_wipe_tower_arrangepoly(*m_plater)) + m_unselected.emplace_back(std::move(*wt)); + + double sc = scaled(1.) * scaled(1.); + + ExPolygon poly = m_selected.front().poly; + double poly_area = poly.area() / sc; + double unsel_area = std::accumulate(m_unselected.begin(), + m_unselected.end(), 0., + [](double s, const auto &ap) { + return s + ap.poly.area(); + }) / sc; + + double fixed_area = unsel_area + m_selected.size() * poly_area; + + // This is the maximum range, the real number will always be close but less. + double bed_area = Polygon{m_bedpts}.area() / sc; + + m_status_range = (bed_area - fixed_area) / poly_area; + + ModelInstance *mi = model_object->instances[0]; + for (int i = 0; i < m_status_range; ++i) { + ArrangePolygon ap; + ap.poly = m_selected.front().poly; + ap.bed_idx = arrangement::UNARRANGED; + ap.setter = [this, mi](const ArrangePolygon &p) { + ModelObject *mo = m_plater->model().objects[m_object_idx]; + ModelInstance *inst = mo->add_instance(*mi); + inst->apply_arrange_result(p.translation.cast(), p.rotation); + }; + m_selected.emplace_back(ap); + } +} + +void FillBedJob::process() +{ + if (m_object_idx == -1 || m_selected.empty()) return; + + GLCanvas3D::ArrangeSettings settings = + m_plater->canvas3D()->get_arrange_settings(); + + arrangement::ArrangeParams params; + params.min_obj_distance = scaled(settings.distance); + params.allow_rotations = settings.enable_rotation; + + params.stopcondition = [this]() { return was_canceled(); }; + + params.progressind = [this](unsigned st) { + if (st > 0) + update_status(int(m_status_range - st), _(L("Filling bed"))); + }; + + arrangement::arrange(m_selected, m_unselected, m_bedpts, params); + + // finalize just here. + update_status(m_status_range, was_canceled() ? + _(L("Bed filling canceled.")) : + _(L("Bed filling done."))); +} + +void FillBedJob::finalize() +{ + if (m_object_idx == -1) return; + + ModelObject *model_object = m_plater->model().objects[m_object_idx]; + if (model_object->instances.empty()) return; + + size_t inst_cnt = model_object->instances.size(); + + for (ArrangePolygon &ap : m_selected) { + if (ap.priority != 0 || !(ap.bed_idx == arrangement::UNARRANGED || ap.bed_idx > 0)) + ap.apply(); + } + + model_object->ensure_on_bed(); + + m_plater->update(); + + int added_cnt = std::accumulate(m_selected.begin(), m_selected.end(), 0, + [](int s, auto &ap) { + return s + int(ap.priority == 0 && ap.bed_idx == 0); + }); + + // FIXME: somebody explain why this is needed for increase_object_instances + if (inst_cnt == 1) added_cnt++; + + if (added_cnt > 0) + m_plater->sidebar() + .obj_list()->increase_object_instances(m_object_idx, size_t(added_cnt)); +} + +}} // namespace Slic3r::GUI diff --git a/src/slic3r/GUI/Jobs/FillBedJob.hpp b/src/slic3r/GUI/Jobs/FillBedJob.hpp new file mode 100644 index 0000000000..448ae53d48 --- /dev/null +++ b/src/slic3r/GUI/Jobs/FillBedJob.hpp @@ -0,0 +1,46 @@ +#ifndef FILLBEDJOB_HPP +#define FILLBEDJOB_HPP + +#include "ArrangeJob.hpp" + +namespace Slic3r { namespace GUI { + +class Plater; + +class FillBedJob : public Job +{ + Plater *m_plater; + int m_object_idx = -1; + + using ArrangePolygon = arrangement::ArrangePolygon; + using ArrangePolygons = arrangement::ArrangePolygons; + + ArrangePolygons m_selected; + ArrangePolygons m_unselected; + + Points m_bedpts; + + int m_status_range = 0; + +protected: + + void prepare() override; + +public: + FillBedJob(std::shared_ptr pri, Plater *plater) + : Job{std::move(pri)}, m_plater{plater} + {} + + int status_range() const override + { + return m_status_range; + } + + void process() override; + + void finalize() override; +}; + +}} // namespace Slic3r::GUI + +#endif // FILLBEDJOB_HPP diff --git a/src/slic3r/GUI/Jobs/SLAImportJob.cpp b/src/slic3r/GUI/Jobs/SLAImportJob.cpp index adecae6ac0..ec289ae344 100644 --- a/src/slic3r/GUI/Jobs/SLAImportJob.cpp +++ b/src/slic3r/GUI/Jobs/SLAImportJob.cpp @@ -36,7 +36,7 @@ public: "SL1 archive files (*.sl1, *.zip)|*.sl1;*.SL1;*.zip;*.ZIP", wxDefaultPosition, wxDefaultSize, wxFLP_DEFAULT_STYLE | wxFD_OPEN | wxFD_FILE_MUST_EXIST); - szfilepck->Add(new wxStaticText(this, wxID_ANY, _(L("Import file: "))), 0, wxALIGN_CENTER); + szfilepck->Add(new wxStaticText(this, wxID_ANY, _L("Import file") + ": "), 0, wxALIGN_CENTER); szfilepck->Add(m_filepicker, 1); szvert->Add(szfilepck, 0, wxALL | wxEXPAND, 5); @@ -53,7 +53,7 @@ public: inp_choices.size(), inp_choices.data(), wxCB_READONLY | wxCB_DROPDOWN); szchoices->Add(m_import_dropdown); - szchoices->Add(new wxStaticText(this, wxID_ANY, _(L("Quality: "))), 0, wxALIGN_CENTER | wxALL, 5); + szchoices->Add(new wxStaticText(this, wxID_ANY, _L("Quality") + ": "), 0, wxALIGN_CENTER | wxALL, 5); static const std::vector qual_choices = { _(L("Accurate")), diff --git a/src/slic3r/GUI/KBShortcutsDialog.cpp b/src/slic3r/GUI/KBShortcutsDialog.cpp index 7c70693150..62fb1cec9e 100644 --- a/src/slic3r/GUI/KBShortcutsDialog.cpp +++ b/src/slic3r/GUI/KBShortcutsDialog.cpp @@ -7,9 +7,7 @@ #include #include "GUI_App.hpp" #include "wxExtensions.hpp" -#if ENABLE_GCODE_VIEWER #include "MainFrame.hpp" -#endif // ENABLE_GCODE_VIEWER #define NOTEBOOK_TOP 1 #define NOTEBOOK_LEFT 2 @@ -33,11 +31,7 @@ namespace Slic3r { namespace GUI { KBShortcutsDialog::KBShortcutsDialog() -#if ENABLE_GCODE_VIEWER - : DPIDialog(NULL, wxID_ANY, wxString(wxGetApp().is_editor() ? SLIC3R_APP_NAME : GCODEVIEWER_APP_NAME) + " - " + _L("Keyboard Shortcuts"), -#else - : DPIDialog(NULL, wxID_ANY, wxString(SLIC3R_APP_NAME) + " - " + _L("Keyboard Shortcuts"), -#endif // ENABLE_GCODE_VIEWER + : DPIDialog((wxWindow*)wxGetApp().mainframe, wxID_ANY, wxString(wxGetApp().is_editor() ? SLIC3R_APP_NAME : GCODEVIEWER_APP_NAME) + " - " + _L("Keyboard Shortcuts"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER) { SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW)); @@ -97,9 +91,7 @@ void KBShortcutsDialog::fill_shortcuts() const std::string& ctrl = GUI::shortkey_ctrl_prefix(); const std::string& alt = GUI::shortkey_alt_prefix(); -#if ENABLE_GCODE_VIEWER if (wxGetApp().is_editor()) { -#endif // ENABLE_GCODE_VIEWER Shortcuts commands_shortcuts = { // File { ctrl + "N", L("New project, clear plater") }, @@ -178,9 +170,13 @@ void KBShortcutsDialog::fill_shortcuts() { "O", L("Zoom out") }, { "Tab", L("Switch between Editor/Preview") }, { "Shift+Tab", L("Collapse/Expand the sidebar") }, -#ifdef __linux__ +#if ENABLE_CTRL_M_ON_WINDOWS + { ctrl + "M", L("Show/Hide 3Dconnexion devices settings dialog") }, +#else +#if defined(__linux__) || defined(__APPLE__) { ctrl + "M", L("Show/Hide 3Dconnexion devices settings dialog") }, #endif // __linux__ +#endif // ENABLE_CTRL_M_ON_WINDOWS #if ENABLE_RENDER_PICKING_PASS // Don't localize debugging texts. { "P", "Toggle picking pass texture rendering on/off" }, @@ -190,7 +186,7 @@ void KBShortcutsDialog::fill_shortcuts() m_full_shortcuts.push_back(std::make_pair(_L("Plater"), plater_shortcuts)); Shortcuts gizmos_shortcuts = { - { ctrl, L("All gizmos: Press to rotate view with mouse left or to pan view with mouse right") }, + { ctrl, L("All gizmos: Rotate - left mouse button; Pan - right mouse button") }, { "Shift+", L("Gizmo move: Press to snap by 1mm") }, { "Shift+", L("Gizmo scale: Press to snap by 5%") }, { "F", L("Gizmo scale: Scale selection to fit print volume") }, @@ -200,16 +196,14 @@ void KBShortcutsDialog::fill_shortcuts() }; m_full_shortcuts.push_back(std::make_pair(_L("Gizmos"), gizmos_shortcuts)); -#if ENABLE_GCODE_VIEWER } -#endif // ENABLE_GCODE_VIEWER Shortcuts preview_shortcuts = { { L("Arrow Up"), L("Upper Layer") }, { L("Arrow Down"), L("Lower Layer") }, { "U", L("Upper Layer") }, { "D", L("Lower Layer") }, - { "L", L("Show/Hide Legend/Estimated printing time") }, + { "L", L("Show/Hide Legend & Estimated printing time") }, }; m_full_shortcuts.push_back(std::make_pair(_L("Preview"), preview_shortcuts)); @@ -227,7 +221,6 @@ void KBShortcutsDialog::fill_shortcuts() m_full_shortcuts.push_back(std::make_pair(_L("Layers Slider"), layers_slider_shortcuts)); -#if ENABLE_GCODE_VIEWER Shortcuts sequential_slider_shortcuts = { { L("Arrow Left"), L("Move current slider thumb Left") }, { L("Arrow Right"), L("Move current slider thumb Right") }, @@ -236,7 +229,6 @@ void KBShortcutsDialog::fill_shortcuts() }; m_full_shortcuts.push_back(std::make_pair(_L("Sequential Slider"), sequential_slider_shortcuts)); -#endif // ENABLE_GCODE_VIEWER } wxPanel* KBShortcutsDialog::create_header(wxWindow* parent, const wxFont& bold_font) @@ -254,11 +246,7 @@ wxPanel* KBShortcutsDialog::create_header(wxWindow* parent, const wxFont& bold_f sizer->AddStretchSpacer(); // logo -#if ENABLE_GCODE_VIEWER m_logo_bmp = ScalableBitmap(this, wxGetApp().is_editor() ? "PrusaSlicer_32px.png" : "PrusaSlicer-gcodeviewer_32px.png", 32); -#else - m_logo_bmp = ScalableBitmap(this, "PrusaSlicer_32px.png", 32); -#endif // ENABLE_GCODE_VIEWER m_header_bitmap = new wxStaticBitmap(panel, wxID_ANY, m_logo_bmp.bmp()); sizer->Add(m_header_bitmap, 0, wxEXPAND | wxLEFT | wxRIGHT, 10); diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index 2e334c5590..32443c7d5d 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -31,6 +31,7 @@ #include "GLCanvas3D.hpp" #include "Plater.hpp" #include "../Utils/Process.hpp" +#include "format.hpp" #include #include "GUI_App.hpp" @@ -116,7 +117,6 @@ DPIFrame(NULL, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_S // Load the icon either from the exe, or from the ico file. #if _WIN32 { -#if ENABLE_GCODE_VIEWER wxString src_path; wxFileName::SplitPath(wxStandardPaths::Get().GetExecutablePath(), &src_path, nullptr, nullptr, wxPATH_NATIVE); switch (wxGetApp().get_app_mode()) { @@ -127,22 +127,14 @@ DPIFrame(NULL, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_S wxIconLocation icon_location; icon_location.SetFileName(src_path); SetIcon(icon_location); -#else - TCHAR szExeFileName[MAX_PATH]; - GetModuleFileName(nullptr, szExeFileName, MAX_PATH); - SetIcon(wxIcon(szExeFileName, wxBITMAP_TYPE_ICO)); -#endif // ENABLE_GCODE_VIEWER } #else -#if ENABLE_GCODE_VIEWER switch (wxGetApp().get_app_mode()) { default: case GUI_App::EAppMode::Editor: { -#endif // ENABLE_GCODE_VIEWER SetIcon(wxIcon(Slic3r::var("PrusaSlicer_128px.png"), wxBITMAP_TYPE_PNG)); -#if ENABLE_GCODE_VIEWER break; } case GUI_App::EAppMode::GCodeViewer: @@ -151,23 +143,19 @@ DPIFrame(NULL, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_S break; } } -#endif // ENABLE_GCODE_VIEWER #endif // _WIN32 // initialize status bar m_statusbar = std::make_shared(this); m_statusbar->set_font(GUI::wxGetApp().normal_font()); -#if ENABLE_GCODE_VIEWER if (wxGetApp().is_editor()) -#endif // ENABLE_GCODE_VIEWER m_statusbar->embed(this); m_statusbar->set_status_text(_L("Version") + " " + - SLIC3R_VERSION + - _L(" - Remember to check for updates at https://github.com/prusa3d/PrusaSlicer/releases")); + SLIC3R_VERSION + " - " + + _L("Remember to check for updates at https://github.com/prusa3d/PrusaSlicer/releases")); // initialize tabpanel and menubar init_tabpanel(); -#if ENABLE_GCODE_VIEWER if (wxGetApp().is_gcode_viewer()) init_menubar_as_gcodeviewer(); else @@ -185,9 +173,6 @@ DPIFrame(NULL, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_S wxAcceleratorTable accel(6, entries); SetAcceleratorTable(accel); #endif // _WIN32 -#else - init_menubar(); -#endif // ENABLE_GCODE_VIEWER // set default tooltip timer in msec // SetAutoPop supposedly accepts long integers but some bug doesn't allow for larger values @@ -238,15 +223,24 @@ DPIFrame(NULL, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_S event.Skip(); }); +// 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 + Bind(wxEVT_MOVE, [this](wxMoveEvent& event) { + wxGetApp().plater()->get_current_canvas3D()->set_as_dirty(); + wxGetApp().plater()->get_current_canvas3D()->request_extra_frame(); + event.Skip(); + }); +#endif + wxGetApp().persist_window_geometry(this, true); wxGetApp().persist_window_geometry(&m_settings_dialog, true); update_ui_from_settings(); // FIXME (?) if (m_plater != nullptr) { -#if ENABLE_GCODE_VIEWER m_plater->get_collapse_toolbar().set_enabled(wxGetApp().app_config->get("show_collapse_button") == "1"); -#endif // ENABLE_GCODE_VIEWER m_plater->show_action_buttons(true); } } @@ -289,16 +283,10 @@ void MainFrame::update_layout() Layout(); }; -#if ENABLE_GCODE_VIEWER ESettingsLayout layout = wxGetApp().is_gcode_viewer() ? ESettingsLayout::GCodeViewer : (wxGetApp().app_config->get("old_settings_layout_mode") == "1" ? ESettingsLayout::Old : wxGetApp().app_config->get("new_settings_layout_mode") == "1" ? ESettingsLayout::New : wxGetApp().app_config->get("dlg_settings_layout_mode") == "1" ? ESettingsLayout::Dlg : ESettingsLayout::Old); -#else - ESettingsLayout layout = wxGetApp().app_config->get("old_settings_layout_mode") == "1" ? ESettingsLayout::Old : - wxGetApp().app_config->get("new_settings_layout_mode") == "1" ? ESettingsLayout::New : - wxGetApp().app_config->get("dlg_settings_layout_mode") == "1" ? ESettingsLayout::Dlg : ESettingsLayout::Old; -#endif // ENABLE_GCODE_VIEWER if (m_layout == layout) return; @@ -362,7 +350,6 @@ void MainFrame::update_layout() m_plater->Show(); break; } -#if ENABLE_GCODE_VIEWER case ESettingsLayout::GCodeViewer: { m_main_sizer->Add(m_plater, 1, wxEXPAND); @@ -372,7 +359,6 @@ void MainFrame::update_layout() m_plater->Show(); break; } -#endif // ENABLE_GCODE_VIEWER } #ifdef __WXMSW__ @@ -418,6 +404,10 @@ void MainFrame::update_layout() // m_tabpanel->SetMinSize(size); // } //#endif + +#ifdef __APPLE__ + m_plater->sidebar().change_top_border_for_mode_sizer(m_layout != ESettingsLayout::Old); +#endif Layout(); Thaw(); @@ -437,7 +427,6 @@ void MainFrame::shutdown() } #endif // _WIN32 -#if ENABLE_GCODE_VIEWER if (m_plater != nullptr) { m_plater->stop_jobs(); @@ -450,19 +439,6 @@ void MainFrame::shutdown() // see: https://github.com/prusa3d/PrusaSlicer/issues/3964 m_plater->reset_canvas_volumes(); } -#else - if (m_plater) - m_plater->stop_jobs(); - - // Unbinding of wxWidgets event handling in canvases needs to be done here because on MAC, - // when closing the application using Command+Q, a mouse event is triggered after this lambda is completed, - // causing a crash - if (m_plater) m_plater->unbind_canvas_event_handlers(); - - // Cleanup of canvases' volumes needs to be done here or a crash may happen on some Linux Debian flavours - // see: https://github.com/prusa3d/PrusaSlicer/issues/3964 - if (m_plater) m_plater->reset_canvas_volumes(); -#endif // ENABLE_GCODE_VIEWER // Weird things happen as the Paint messages are floating around the windows being destructed. // Avoid the Paint messages by hiding the main window. @@ -510,11 +486,7 @@ void MainFrame::update_title() title += (project + " - "); } -#if ENABLE_GCODE_VIEWER std::string build_id = wxGetApp().is_editor() ? SLIC3R_BUILD_ID : GCODEVIEWER_BUILD_ID; -#else - std::string build_id = SLIC3R_BUILD_ID; -#endif // ENABLE_GCODE_VIEWER size_t idx_plus = build_id.find('+'); if (idx_plus != build_id.npos) { // Parse what is behind the '+'. If there is a number, then it is a build number after the label, and full build ID is shown. @@ -529,13 +501,10 @@ void MainFrame::update_title() #endif } } -#if ENABLE_GCODE_VIEWER + title += wxString(build_id); if (wxGetApp().is_editor()) title += (" " + _L("based on Slic3r")); -#else - title += (wxString(build_id) + " " + _L("based on Slic3r")); -#endif // ENABLE_GCODE_VIEWER SetTitle(title); } @@ -584,9 +553,7 @@ void MainFrame::init_tabpanel() // or when the preset's "modified" status changes. Bind(EVT_TAB_PRESETS_CHANGED, &MainFrame::on_presets_changed, this); // #ys_FIXME_to_delete -#if ENABLE_GCODE_VIEWER if (wxGetApp().is_editor()) -#endif // ENABLE_GCODE_VIEWER create_preset_tabs(); if (m_plater) { @@ -750,14 +717,11 @@ bool MainFrame::can_export_gcode() const bool MainFrame::can_send_gcode() const { - if (m_plater == nullptr) - return false; - - if (m_plater->model().objects.empty()) - return false; - - const auto print_host_opt = wxGetApp().preset_bundle->printers.get_edited_preset().config.option("print_host"); - return print_host_opt != nullptr && !print_host_opt->value.empty(); + if (m_plater && ! m_plater->model().objects.empty()) + if (const DynamicPrintConfig *cfg = wxGetApp().preset_bundle->physical_printers.get_selected_printer_config(); cfg) + if (const auto *print_host_opt = cfg->option("print_host"); print_host_opt) + return ! print_host_opt->value.empty(); + return false; } bool MainFrame::can_export_gcode_sd() const @@ -798,9 +762,7 @@ bool MainFrame::can_change_view() const int page_id = m_tabpanel->GetSelection(); return page_id != wxNOT_FOUND && dynamic_cast(m_tabpanel->GetPage((size_t)page_id)) != nullptr; } -#if ENABLE_GCODE_VIEWER case ESettingsLayout::GCodeViewer: { return true; } -#endif // ENABLE_GCODE_VIEWER } } @@ -892,7 +854,6 @@ void MainFrame::on_sys_color_changed() msw_rescale_menu(menu_bar->GetMenu(id)); } -#if ENABLE_GCODE_VIEWER #ifdef _MSC_VER // \xA0 is a non-breaking space. It is entered here to spoil the automatic accelerators, // as the simple numeric accelerators spoil all numeric data entry. @@ -927,17 +888,13 @@ static wxMenu* generate_help_menu() [](wxCommandEvent&) { Slic3r::GUI::desktop_open_datadir_folder(); }); append_menu_item(helpMenu, wxID_ANY, _L("Report an I&ssue"), wxString::Format(_L("Report an issue on %s"), SLIC3R_APP_NAME), [](wxCommandEvent&) { wxLaunchDefaultBrowser("https://github.com/prusa3d/slic3r/issues/new"); }); -#if ENABLE_GCODE_VIEWER if (wxGetApp().is_editor()) -#endif // ENABLE_GCODE_VIEWER append_menu_item(helpMenu, wxID_ANY, wxString::Format(_L("&About %s"), SLIC3R_APP_NAME), _L("Show about dialog"), [](wxCommandEvent&) { Slic3r::GUI::about(); }); -#if ENABLE_GCODE_VIEWER else append_menu_item(helpMenu, wxID_ANY, wxString::Format(_L("&About %s"), GCODEVIEWER_APP_NAME), _L("Show about dialog"), [](wxCommandEvent&) { Slic3r::GUI::about(); }); -#endif // ENABLE_GCODE_VIEWER - helpMenu->AppendSeparator(); + helpMenu->AppendSeparator(); append_menu_item(helpMenu, wxID_ANY, _L("Keyboard Shortcuts") + sep + "&?", _L("Show the list of the keyboard shortcuts"), [](wxCommandEvent&) { wxGetApp().keyboard_shortcuts(); }); #if ENABLE_THUMBNAIL_GENERATOR_DEBUG @@ -972,9 +929,6 @@ static void add_common_view_menu_items(wxMenu* view_menu, MainFrame* mainFrame, } void MainFrame::init_menubar_as_editor() -#else -void MainFrame::init_menubar() -#endif // ENABLE_GCODE_VIEWER { #ifdef __APPLE__ wxMenuBar::SetAutoWindowMenu(false); @@ -1047,7 +1001,7 @@ void MainFrame::init_menubar() [this](wxCommandEvent&) { if (m_plater) m_plater->add_model(true); }, "import_plater", nullptr, [this](){return m_plater != nullptr; }, this); - append_menu_item(import_menu, wxID_ANY, _L("Import SL1 archive") + dots, _L("Load an SL1 output archive"), + append_menu_item(import_menu, wxID_ANY, _L("Import SL1 archive") + dots, _L("Load an SL1 archive"), [this](wxCommandEvent&) { if (m_plater) m_plater->import_sl1_archive(); }, "import_plater", nullptr, [this](){return m_plater != nullptr; }, this); @@ -1145,18 +1099,6 @@ void MainFrame::init_menubar() [this](wxCommandEvent&) { Close(false); }, "exit"); } -#if !ENABLE_GCODE_VIEWER -#ifdef _MSC_VER - // \xA0 is a non-breaking space. It is entered here to spoil the automatic accelerators, - // as the simple numeric accelerators spoil all numeric data entry. - wxString sep = "\t\xA0"; - wxString sep_space = "\xA0"; -#else - wxString sep = " - "; - wxString sep_space = ""; -#endif -#endif // !ENABLE_GCODE_VIEWER - // Edit menu wxMenu* editMenu = nullptr; if (m_plater != nullptr) @@ -1205,7 +1147,7 @@ void MainFrame::init_menubar() editMenu->AppendSeparator(); append_menu_item(editMenu, wxID_ANY, _L("Searc&h") + "\tCtrl+F", - _L("Find option"), [this](wxCommandEvent&) { m_plater->search(/*m_tabpanel->GetCurrentPage() == */m_plater->IsShown()); }, + _L("Search in settings"), [this](wxCommandEvent&) { m_plater->search(/*m_tabpanel->GetCurrentPage() == */m_plater->IsShown()); }, "search", nullptr, []() {return true; }, this); } @@ -1239,21 +1181,6 @@ void MainFrame::init_menubar() [this](){return can_change_view(); }, this); } -#if !ENABLE_GCODE_VIEWER -#if _WIN32 - // This is needed on Windows to fake the CTRL+# of the window menu when using the numpad - wxAcceleratorEntry entries[6]; - entries[0].Set(wxACCEL_CTRL, WXK_NUMPAD1, wxID_HIGHEST + 1); - entries[1].Set(wxACCEL_CTRL, WXK_NUMPAD2, wxID_HIGHEST + 2); - entries[2].Set(wxACCEL_CTRL, WXK_NUMPAD3, wxID_HIGHEST + 3); - entries[3].Set(wxACCEL_CTRL, WXK_NUMPAD4, wxID_HIGHEST + 4); - entries[4].Set(wxACCEL_CTRL, WXK_NUMPAD5, wxID_HIGHEST + 5); - entries[5].Set(wxACCEL_CTRL, WXK_NUMPAD6, wxID_HIGHEST + 6); - wxAcceleratorTable accel(6, entries); - SetAcceleratorTable(accel); -#endif // _WIN32 -#endif // !ENABLE_GCODE_VIEWER - windowMenu->AppendSeparator(); append_menu_item(windowMenu, wxID_ANY, _L("Print &Host Upload Queue") + "\tCtrl+J", _L("Display the Print Host Upload Queue window"), [this](wxCommandEvent&) { m_printhost_queue_dlg->Show(); }, "upload_queue", nullptr, []() {return true; }, this); @@ -1268,81 +1195,22 @@ void MainFrame::init_menubar() wxMenu* viewMenu = nullptr; if (m_plater) { viewMenu = new wxMenu(); -#if ENABLE_GCODE_VIEWER add_common_view_menu_items(viewMenu, this, std::bind(&MainFrame::can_change_view, this)); -#else - // The camera control accelerators are captured by GLCanvas3D::on_char(). - append_menu_item(viewMenu, wxID_ANY, _L("Iso") + sep + "&0", _L("Iso View"), [this](wxCommandEvent&) { select_view("iso"); }, - "", nullptr, [this](){return can_change_view(); }, this); - viewMenu->AppendSeparator(); - //TRN To be shown in the main menu View->Top - append_menu_item(viewMenu, wxID_ANY, _L("Top") + sep + "&1", _L("Top View"), [this](wxCommandEvent&) { select_view("top"); }, - "", nullptr, [this](){return can_change_view(); }, this); - //TRN To be shown in the main menu View->Bottom - append_menu_item(viewMenu, wxID_ANY, _L("Bottom") + sep + "&2", _L("Bottom View"), [this](wxCommandEvent&) { select_view("bottom"); }, - "", nullptr, [this](){return can_change_view(); }, this); - append_menu_item(viewMenu, wxID_ANY, _L("Front") + sep + "&3", _L("Front View"), [this](wxCommandEvent&) { select_view("front"); }, - "", nullptr, [this](){return can_change_view(); }, this); - append_menu_item(viewMenu, wxID_ANY, _L("Rear") + sep + "&4", _L("Rear View"), [this](wxCommandEvent&) { select_view("rear"); }, - "", nullptr, [this](){return can_change_view(); }, this); - append_menu_item(viewMenu, wxID_ANY, _L("Left") + sep + "&5", _L("Left View"), [this](wxCommandEvent&) { select_view("left"); }, - "", nullptr, [this](){return can_change_view(); }, this); - append_menu_item(viewMenu, wxID_ANY, _L("Right") + sep + "&6", _L("Right View"), [this](wxCommandEvent&) { select_view("right"); }, - "", nullptr, [this](){return can_change_view(); }, this); -#endif // ENABLE_GCODE_VIEWER viewMenu->AppendSeparator(); append_menu_check_item(viewMenu, wxID_ANY, _L("Show &labels") + sep + "E", _L("Show object/instance labels in 3D scene"), [this](wxCommandEvent&) { m_plater->show_view3D_labels(!m_plater->are_view3D_labels_shown()); }, this, [this]() { return m_plater->is_view3D_shown(); }, [this]() { return m_plater->are_view3D_labels_shown(); }, this); - append_menu_check_item(viewMenu, wxID_ANY, _L("&Collapse sidebar"), _L("Collapse sidebar"), + append_menu_check_item(viewMenu, wxID_ANY, _L("&Collapse sidebar") + sep + "Shift+" + sep_space + "Tab", _L("Collapse sidebar"), [this](wxCommandEvent&) { m_plater->collapse_sidebar(!m_plater->is_sidebar_collapsed()); }, this, []() { return true; }, [this]() { return m_plater->is_sidebar_collapsed(); }, this); } // Help menu -#if ENABLE_GCODE_VIEWER auto helpMenu = generate_help_menu(); -#else - auto helpMenu = new wxMenu(); - { - append_menu_item(helpMenu, wxID_ANY, _L("Prusa 3D &Drivers"), _L("Open the Prusa3D drivers download page in your browser"), - [this](wxCommandEvent&) { wxGetApp().open_web_page_localized("https://www.prusa3d.com/downloads"); }); - append_menu_item(helpMenu, wxID_ANY, _L("Software &Releases"), _L("Open the software releases page in your browser"), - [this](wxCommandEvent&) { wxLaunchDefaultBrowser("https://github.com/prusa3d/PrusaSlicer/releases"); }); -//# my $versioncheck = $self->_append_menu_item($helpMenu, "Check for &Updates...", "Check for new Slic3r versions", sub{ -//# wxTheApp->check_version(1); -//# }); -//# $versioncheck->Enable(wxTheApp->have_version_check); - append_menu_item(helpMenu, wxID_ANY, wxString::Format(_L("%s &Website"), SLIC3R_APP_NAME), - wxString::Format(_L("Open the %s website in your browser"), SLIC3R_APP_NAME), - [this](wxCommandEvent&) { wxGetApp().open_web_page_localized("https://www.prusa3d.com/slicerweb"); }); -// append_menu_item(helpMenu, wxID_ANY, wxString::Format(_L("%s &Manual"), SLIC3R_APP_NAME), -// wxString::Format(_L("Open the %s manual in your browser"), SLIC3R_APP_NAME), -// [this](wxCommandEvent&) { wxLaunchDefaultBrowser("http://manual.slic3r.org/"); }); - helpMenu->AppendSeparator(); - append_menu_item(helpMenu, wxID_ANY, _L("System &Info"), _L("Show system information"), - [this](wxCommandEvent&) { wxGetApp().system_info(); }); - append_menu_item(helpMenu, wxID_ANY, _L("Show &Configuration Folder"), _L("Show user configuration folder (datadir)"), - [this](wxCommandEvent&) { Slic3r::GUI::desktop_open_datadir_folder(); }); - append_menu_item(helpMenu, wxID_ANY, _L("Report an I&ssue"), wxString::Format(_L("Report an issue on %s"), SLIC3R_APP_NAME), - [this](wxCommandEvent&) { wxLaunchDefaultBrowser("https://github.com/prusa3d/slic3r/issues/new"); }); - append_menu_item(helpMenu, wxID_ANY, wxString::Format(_L("&About %s"), SLIC3R_APP_NAME), _L("Show about dialog"), - [this](wxCommandEvent&) { Slic3r::GUI::about(); }); - helpMenu->AppendSeparator(); - append_menu_item(helpMenu, wxID_ANY, _L("Keyboard Shortcuts") + sep + "&?", _L("Show the list of the keyboard shortcuts"), - [this](wxCommandEvent&) { wxGetApp().keyboard_shortcuts(); }); -#if ENABLE_THUMBNAIL_GENERATOR_DEBUG - helpMenu->AppendSeparator(); - append_menu_item(helpMenu, wxID_ANY, "DEBUG gcode thumbnails", "DEBUG ONLY - read the selected gcode file and generates png for the contained thumbnails", - [this](wxCommandEvent&) { wxGetApp().gcode_thumbnails_debug(); }); -#endif // ENABLE_THUMBNAIL_GENERATOR_DEBUG - } -#endif // ENABLE_GCODE_VIEWER // menubar // assign menubar to frame after appending items, otherwise special items // will not be handled correctly -#if ENABLE_GCODE_VIEWER m_menubar = new wxMenuBar(); m_menubar->Append(fileMenu, _L("&File")); if (editMenu) m_menubar->Append(editMenu, _L("&Edit")); @@ -1352,26 +1220,11 @@ void MainFrame::init_menubar() wxGetApp().add_config_menu(m_menubar); m_menubar->Append(helpMenu, _L("&Help")); SetMenuBar(m_menubar); -#else - auto menubar = new wxMenuBar(); - menubar->Append(fileMenu, _L("&File")); - if (editMenu) menubar->Append(editMenu, _L("&Edit")); - menubar->Append(windowMenu, _L("&Window")); - if (viewMenu) menubar->Append(viewMenu, _L("&View")); - // Add additional menus from C++ - wxGetApp().add_config_menu(menubar); - menubar->Append(helpMenu, _L("&Help")); - SetMenuBar(menubar); -#endif // ENABLE_GCODE_VIEWER #ifdef __APPLE__ // This fixes a bug on Mac OS where the quit command doesn't emit window close events // wx bug: https://trac.wxwidgets.org/ticket/18328 -#if ENABLE_GCODE_VIEWER wxMenu* apple_menu = m_menubar->OSXGetAppleMenu(); -#else - wxMenu *apple_menu = menubar->OSXGetAppleMenu(); -#endif // ENABLE_GCODE_VIEWER if (apple_menu != nullptr) { apple_menu->Bind(wxEVT_MENU, [this](wxCommandEvent &) { Close(); @@ -1383,7 +1236,6 @@ void MainFrame::init_menubar() update_menubar(); } -#if ENABLE_GCODE_VIEWER void MainFrame::init_menubar_as_gcodeviewer() { wxMenu* fileMenu = new wxMenu; @@ -1416,10 +1268,8 @@ void MainFrame::init_menubar_as_gcodeviewer() m_menubar = new wxMenuBar(); m_menubar->Append(fileMenu, _L("&File")); if (viewMenu != nullptr) m_menubar->Append(viewMenu, _L("&View")); -#if ENABLE_GCODE_VIEWER // Add additional menus from C++ wxGetApp().add_config_menu(m_menubar); -#endif // ENABLE_GCODE_VIEWER m_menubar->Append(helpMenu, _L("&Help")); SetMenuBar(m_menubar); @@ -1434,14 +1284,11 @@ void MainFrame::init_menubar_as_gcodeviewer() } #endif // __APPLE__ } -#endif // ENABLE_GCODE_VIEWER void MainFrame::update_menubar() { -#if ENABLE_GCODE_VIEWER if (wxGetApp().is_gcode_viewer()) return; -#endif // ENABLE_GCODE_VIEWER const bool is_fff = plater()->printer_technology() == ptFFF; @@ -1570,7 +1417,7 @@ void MainFrame::quick_slice(const int qs) m_progress_dialog->Destroy(); m_progress_dialog = nullptr; - auto message = input_file_basename + _L(" was successfully sliced."); + auto message = format(_L("%1% was successfully sliced."), input_file_basename); // wxTheApp->notify(message); wxMessageDialog(this, message, _L("Slicing Done!"), wxOK | wxICON_INFORMATION).ShowModal(); // }; @@ -1970,10 +1817,8 @@ SettingsDialog::SettingsDialog(MainFrame* mainframe) wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER | wxMINIMIZE_BOX | wxMAXIMIZE_BOX, "settings_dialog"), m_main_frame(mainframe) { -#if ENABLE_GCODE_VIEWER if (wxGetApp().is_gcode_viewer()) return; -#endif // ENABLE_GCODE_VIEWER #if ENABLE_WX_3_1_3_DPI_CHANGED_EVENT && defined(__WXMSW__) // ys_FIXME! temporary workaround for correct font scaling @@ -2046,10 +1891,8 @@ SettingsDialog::SettingsDialog(MainFrame* mainframe) void SettingsDialog::on_dpi_changed(const wxRect& suggested_rect) { -#if ENABLE_GCODE_VIEWER if (wxGetApp().is_gcode_viewer()) return; -#endif // ENABLE_GCODE_VIEWER const int& em = em_unit(); const wxSize& size = wxSize(85 * em, 50 * em); diff --git a/src/slic3r/GUI/MainFrame.hpp b/src/slic3r/GUI/MainFrame.hpp index 611ea7991c..fb393f6192 100644 --- a/src/slic3r/GUI/MainFrame.hpp +++ b/src/slic3r/GUI/MainFrame.hpp @@ -71,9 +71,7 @@ class MainFrame : public DPIFrame wxString m_qs_last_input_file = wxEmptyString; wxString m_qs_last_output_file = wxEmptyString; wxString m_last_config = wxEmptyString; -#if ENABLE_GCODE_VIEWER wxMenuBar* m_menubar{ nullptr }; -#endif // ENABLE_GCODE_VIEWER #if 0 wxMenuItem* m_menu_item_repeat { nullptr }; // doesn't used now @@ -128,9 +126,7 @@ class MainFrame : public DPIFrame Old, New, Dlg, -#if ENABLE_GCODE_VIEWER GCodeViewer -#endif // ENABLE_GCODE_VIEWER }; ESettingsLayout m_layout{ ESettingsLayout::Unknown }; @@ -159,12 +155,8 @@ public: // Register Win32 RawInput callbacks (3DConnexion) and removable media insert / remove callbacks. // Called from wxEVT_ACTIVATE, as wxEVT_CREATE was not reliable (bug in wxWidgets?). void register_win32_callbacks(); -#if ENABLE_GCODE_VIEWER void init_menubar_as_editor(); void init_menubar_as_gcodeviewer(); -#else - void init_menubar(); -#endif // ENABLE_GCODE_VIEWER void update_menubar(); void update_ui_from_settings(bool apply_free_camera_correction = true); diff --git a/src/slic3r/GUI/Mouse3DController.cpp b/src/slic3r/GUI/Mouse3DController.cpp index 4c5ee20762..44ccb8b3e7 100644 --- a/src/slic3r/GUI/Mouse3DController.cpp +++ b/src/slic3r/GUI/Mouse3DController.cpp @@ -100,6 +100,165 @@ void Mouse3DController::State::append_button(unsigned int id, size_t /* input_qu } #ifdef WIN32 +#if ENABLE_CTRL_M_ON_WINDOWS +static std::string format_device_string(int vid, int pid) +{ + std::string ret; + + switch (vid) + { + case 0x046d: { ret = "LOGITECH"; break; } + case 0x256F: { ret = "3DCONNECTION"; break; } + default: { ret = "UNKNOWN"; break; } + } + + ret += "::"; + + switch (pid) + { + case 0xc603: { ret += "spacemouse plus XT"; break; } + case 0xc605: { ret += "cadman"; break; } + case 0xc606: { ret += "spacemouse classic"; break; } + case 0xc621: { ret += "spaceball 5000"; break; } + case 0xc623: { ret += "space traveller"; break; } + case 0xc625: { ret += "space pilot"; break; } + case 0xc626: { ret += "space navigator"; break; } + case 0xc627: { ret += "space explorer"; break; } + case 0xc628: { ret += "space navigator for notebooks"; break; } + case 0xc629: { ret += "space pilot pro"; break; } + case 0xc62b: { ret += "space mouse pro"; break; } + case 0xc62e: { ret += "spacemouse wireless (USB cable)"; break; } + case 0xc62f: { ret += "spacemouse wireless receiver"; break; } + case 0xc631: { ret += "spacemouse pro wireless"; break; } + case 0xc632: { ret += "spacemouse pro wireless receiver"; break; } + case 0xc633: { ret += "spacemouse enterprise"; break; } + case 0xc635: { ret += "spacemouse compact"; break; } + case 0xc636: { ret += "spacemouse module"; break; } + case 0xc640: { ret += "nulooq"; break; } + case 0xc652: { ret += "3Dconnexion universal receiver"; break; } + default: { ret += "UNKNOWN"; break; } + } + + return ret; +} + +static std::string detect_attached_device() +{ + std::string ret; + + // Initialize the hidapi library + int res = hid_init(); + if (res != 0) + BOOST_LOG_TRIVIAL(error) << "Unable to initialize hidapi library"; + else { + // Enumerates devices + hid_device_info* devices = hid_enumerate(0, 0); + if (devices == nullptr) + BOOST_LOG_TRIVIAL(trace) << "detect_attached_device() - no HID device enumerated."; + else { + // Searches for 1st connected 3Dconnexion device + struct DeviceData + { + unsigned short usage_page{ 0 }; + unsigned short usage{ 0 }; + + DeviceData(unsigned short usage_page, unsigned short usage) + : usage_page(usage_page), usage(usage) + {} + + // https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf + // Usage page 1 - Generic Desktop Controls + // Usage page 1, usage 8 - Multi-axis Controller + bool has_valid_usage() const { return usage_page == 1 && usage == 8; } + }; + + // When using 3Dconnexion universal receiver, multiple devices are detected sharing the same vendor_id and product_id. + // To choose from them the right one we use: usage_page == 1 and usage == 8 + // When only a single device is detected, as for wired connections, vendor_id and product_id are enough + + // First we count all the valid devices from the enumerated list, + + hid_device_info* current = devices; + typedef std::pair DeviceIds; + typedef std::vector DeviceDataList; + typedef std::map DetectedDevices; + DetectedDevices detected_devices; + while (current != nullptr) { + unsigned short vendor_id = 0; + unsigned short product_id = 0; + + for (size_t i = 0; i < _3DCONNEXION_VENDORS.size(); ++i) { + if (_3DCONNEXION_VENDORS[i] == current->vendor_id) { + vendor_id = current->vendor_id; + break; + } + } + + if (vendor_id != 0) { + for (size_t i = 0; i < _3DCONNEXION_DEVICES.size(); ++i) { + if (_3DCONNEXION_DEVICES[i] == current->product_id) { + product_id = current->product_id; + DeviceIds detected_device(vendor_id, product_id); + DetectedDevices::iterator it = detected_devices.find(detected_device); + if (it == detected_devices.end()) + it = detected_devices.insert(DetectedDevices::value_type(detected_device, DeviceDataList())).first; + + it->second.emplace_back(current->usage_page, current->usage); + } + } + } + + current = current->next; + } + + // Free enumerated devices + hid_free_enumeration(devices); + + unsigned short vendor_id = 0; + unsigned short product_id = 0; + if (!detected_devices.empty()) { + // Then we'll decide the choosing logic to apply in dependence of the device count and operating system + for (const DetectedDevices::value_type& device : detected_devices) { + if (device.second.size() == 1) { + if (device.second.front().has_valid_usage()) { + vendor_id = device.first.first; + product_id = device.first.second; + break; + } + } + else { + bool found = false; + for (const DeviceData& data : device.second) { + if (data.has_valid_usage()) { + vendor_id = device.first.first; + product_id = device.first.second; + found = true; + break; + } + } + + if (found) + break; + } + } + } + + if (vendor_id != 0 && product_id != 0) { + ret = format_device_string(static_cast(vendor_id), static_cast(product_id)); + BOOST_LOG_TRIVIAL(trace) << "Detected device: " << std::hex << vendor_id << std::dec << "::" << std::hex << product_id << std::dec << " " << ret; + } + else + BOOST_LOG_TRIVIAL(trace) << "No 3DConnexion device detected"; + } + + // Finalize the hidapi library + hid_exit(); + } + + return ret; +} +#endif // ENABLE_CTRL_M_ON_WINDOWS + // Called by Win32 HID enumeration callback. void Mouse3DController::device_attached(const std::string &device) { @@ -115,10 +274,36 @@ void Mouse3DController::device_attached(const std::string &device) // Never mind, enumeration will be performed until connected. m_wakeup = true; m_stop_condition.notify_all(); - } +#if ENABLE_CTRL_M_ON_WINDOWS + m_device_str = format_device_string(vid, pid); + if (auto it_params = m_params_by_device.find(m_device_str); it_params != m_params_by_device.end()) { + tbb::mutex::scoped_lock lock(m_params_ui_mutex); + m_params = m_params_ui = it_params->second; + } + else + m_params_by_device[format_device_string(vid, pid)] = Params(); + m_connected = true; +#endif // ENABLE_CTRL_M_ON_WINDOWS + } } } +#if ENABLE_CTRL_M_ON_WINDOWS +void Mouse3DController::device_detached(const std::string& device) +{ + int vid = 0; + int pid = 0; + if (sscanf(device.c_str(), "\\\\?\\HID#VID_%x&PID_%x&", &vid, &pid) == 2) { + if (std::find(_3DCONNEXION_VENDORS.begin(), _3DCONNEXION_VENDORS.end(), vid) != _3DCONNEXION_VENDORS.end()) { + tbb::mutex::scoped_lock lock(m_params_ui_mutex); + m_params_by_device[format_device_string(vid, pid)] = m_params_ui; + } + } + m_device_str = ""; + m_connected = false; +} +#endif // ENABLE_CTRL_M_ON_WINDOWS + // Filter out mouse scroll events produced by the 3DConnexion driver. bool Mouse3DController::State::process_mouse_wheel() { @@ -212,6 +397,7 @@ void Mouse3DController::save_config(AppConfig &appconfig) const { // We do not synchronize m_params_by_device with the background thread explicitely // as there should be a full memory barrier executed once the background thread is stopped. + for (const std::pair &key_value_pair : m_params_by_device) { const std::string &device_name = key_value_pair.first; const Params ¶ms = key_value_pair.second; @@ -229,6 +415,19 @@ bool Mouse3DController::apply(Camera& camera) m_show_settings_dialog = false; m_settings_dialog_closed_by_user = false; } + +#if ENABLE_CTRL_M_ON_WINDOWS +#ifdef _WIN32 + { + tbb::mutex::scoped_lock lock(m_params_ui_mutex); + if (m_params_ui_changed) { + m_params = m_params_ui; + m_params_ui_changed = false; + } + } +#endif // _WIN32 +#endif // ENABLE_CTRL_M_ON_WINDOWS + return m_state.apply(m_params, camera); } @@ -366,7 +565,7 @@ void Mouse3DController::render_settings_dialog(GLCanvas3D& canvas) const imgui.end(); if (params_changed) { - // Synchronize front end parameters to back end. + // Synchronize front end parameters to back end. tbb::mutex::scoped_lock lock(m_params_ui_mutex); auto pthis = const_cast(this); #if ENABLE_3DCONNEXION_DEVICES_DEBUG_OUTPUT @@ -463,6 +662,17 @@ bool Mouse3DController::handle_input(const DataPacketAxis& packet) // Initialize the application. void Mouse3DController::init() { +#if ENABLE_CTRL_M_ON_WINDOWS +#ifdef _WIN32 + m_device_str = detect_attached_device(); + if (!m_device_str.empty()) { + m_connected = true; + if (auto it_params = m_params_by_device.find(m_device_str); it_params != m_params_by_device.end()) + m_params = m_params_ui = it_params->second; + } +#endif // _WIN32 +#endif // ENABLE_CTRL_M_ON_WINDOWS + assert(! m_thread.joinable()); if (! m_thread.joinable()) { m_stop = false; @@ -488,6 +698,13 @@ void Mouse3DController::shutdown() m_thread.join(); m_stop = false; } + +#if ENABLE_CTRL_M_ON_WINDOWS +#ifdef WIN32 + if (!m_device_str.empty()) + m_params_by_device[m_device_str] = m_params_ui; +#endif // WIN32 +#endif // ENABLE_CTRL_M_ON_WINDOWS } // Main routine of the worker thread. @@ -521,7 +738,7 @@ void Mouse3DController::run() if (m_stop) break; if (m_params_ui_changed) { - m_params = m_params_ui; + m_params = m_params_ui; m_params_ui_changed = false; } } @@ -561,8 +778,7 @@ bool Mouse3DController::connect_device() // Enumerates devices hid_device_info* devices = hid_enumerate(0, 0); - if (devices == nullptr) - { + if (devices == nullptr) { BOOST_LOG_TRIVIAL(trace) << "Mouse3DController::connect_device() - no HID device enumerated."; return false; } @@ -595,8 +811,7 @@ bool Mouse3DController::connect_device() hid_device_info* cur = devices; std::cout << std::endl << "======================================================================================================================================" << std::endl; std::cout << "Detected devices:" << std::endl; - while (cur != nullptr) - { + while (cur != nullptr) { std::cout << "\""; std::wcout << ((cur->manufacturer_string != nullptr) ? cur->manufacturer_string : L"Unknown"); std::cout << "/"; @@ -626,26 +841,20 @@ bool Mouse3DController::connect_device() #if ENABLE_3DCONNEXION_DEVICES_DEBUG_OUTPUT std::cout << std::endl << "Detected 3D connexion devices:" << std::endl; #endif // ENABLE_3DCONNEXION_DEVICES_DEBUG_OUTPUT - while (current != nullptr) - { + while (current != nullptr) { unsigned short vendor_id = 0; unsigned short product_id = 0; - for (size_t i = 0; i < _3DCONNEXION_VENDORS.size(); ++i) - { - if (_3DCONNEXION_VENDORS[i] == current->vendor_id) - { + for (size_t i = 0; i < _3DCONNEXION_VENDORS.size(); ++i) { + if (_3DCONNEXION_VENDORS[i] == current->vendor_id) { vendor_id = current->vendor_id; break; } } - if (vendor_id != 0) - { - for (size_t i = 0; i < _3DCONNEXION_DEVICES.size(); ++i) - { - if (_3DCONNEXION_DEVICES[i] == current->product_id) - { + if (vendor_id != 0) { + for (size_t i = 0; i < _3DCONNEXION_DEVICES.size(); ++i) { + if (_3DCONNEXION_DEVICES[i] == current->product_id) { product_id = current->product_id; DeviceIds detected_device(vendor_id, product_id); DetectedDevices::iterator it = detected_devices.find(detected_device); @@ -682,40 +891,33 @@ bool Mouse3DController::connect_device() // Then we'll decide the choosing logic to apply in dependence of the device count and operating system - for (const DetectedDevices::value_type& device : detected_devices) - { - if (device.second.size() == 1) - { + for (const DetectedDevices::value_type& device : detected_devices) { + 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) { hid_close(test_device); #else - if (device.second.front().has_valid_usage()) - { + if (device.second.front().has_valid_usage()) { #endif // __linux__ vendor_id = device.first.first; product_id = device.first.second; break; } } - else - { + else { bool found = false; #if ENABLE_3DCONNEXION_DEVICES_DEBUG_OUTPUT std::cout << std::endl; #endif // ENABLE_3DCONNEXION_DEVICES_DEBUG_OUTPUT - for (const DeviceData& data : device.second) - { + for (const DeviceData& data : device.second) { #if ENABLE_3DCONNEXION_DEVICES_DEBUG_OUTPUT std::cout << "Test device: " << std::hex << device.first.first << std::dec << "/" << std::hex << device.first.second << std::dec << " \"" << data.path << "\""; #endif // ENABLE_3DCONNEXION_DEVICES_DEBUG_OUTPUT #ifdef __linux__ hid_device* test_device = hid_open_path(data.path.c_str()); - if (test_device != nullptr) - { + if (test_device != nullptr) { path = data.path; vendor_id = device.first.first; product_id = device.first.second; @@ -727,8 +929,7 @@ bool Mouse3DController::connect_device() break; } #else // !__linux__ - if (data.has_valid_usage()) - { + if (data.has_valid_usage()) { path = data.path; vendor_id = device.first.first; product_id = device.first.second; @@ -750,10 +951,8 @@ bool Mouse3DController::connect_device() } } - if (path.empty()) - { - if ((vendor_id != 0) && (product_id != 0)) - { + if (path.empty()) { + if ((vendor_id != 0) && (product_id != 0)) { // Open the 3Dconnexion device using vendor_id and product_id #if ENABLE_3DCONNEXION_DEVICES_DEBUG_OUTPUT std::cout << std::endl << "Opening device: " << std::hex << vendor_id << std::dec << "/" << std::hex << product_id << std::dec << " using hid_open()" << std::endl; @@ -763,8 +962,7 @@ bool Mouse3DController::connect_device() else return false; } - else - { + else { // Open the 3Dconnexion device using the device path #if ENABLE_3DCONNEXION_DEVICES_DEBUG_OUTPUT std::cout << std::endl << "Opening device: " << std::hex << vendor_id << std::dec << "/" << std::hex << product_id << std::dec << "\"" << path << "\" using hid_open_path()" << std::endl; @@ -772,8 +970,7 @@ bool Mouse3DController::connect_device() m_device = hid_open_path(path.c_str()); } - if (m_device != nullptr) - { + if (m_device != nullptr) { wchar_t buffer[1024]; hid_get_manufacturer_string(m_device, buffer, 1024); m_device_str = boost::nowide::narrow(buffer); @@ -801,8 +998,7 @@ bool Mouse3DController::connect_device() } } #if ENABLE_3DCONNEXION_DEVICES_DEBUG_OUTPUT - else - { + else { std::cout << std::endl << "Unable to connect to device:" << std::endl; std::cout << "Manufacturer/product: " << m_device_str << std::endl; std::cout << "Manufacturer id.....: " << vendor_id << " (" << std::hex << vendor_id << std::dec << ")" << std::endl; @@ -863,6 +1059,9 @@ bool Mouse3DController::handle_raw_input_win32(const unsigned char *data, const DataPacketRaw packet; memcpy(packet.data(), data, packet_length); handle_packet(packet, packet_length, m_params, m_state); +#if ENABLE_CTRL_M_ON_WINDOWS + m_connected = true; +#endif // ENABLE_CTRL_M_ON_WINDOWS } return true; diff --git a/src/slic3r/GUI/Mouse3DController.hpp b/src/slic3r/GUI/Mouse3DController.hpp index b3dce9f349..559e0874f1 100644 --- a/src/slic3r/GUI/Mouse3DController.hpp +++ b/src/slic3r/GUI/Mouse3DController.hpp @@ -33,12 +33,12 @@ class Mouse3DController struct Params { static constexpr double DefaultTranslationScale = 2.5; - static constexpr double MaxTranslationDeadzone = 0.0; - static constexpr double DefaultTranslationDeadzone = 0.5 * MaxTranslationDeadzone; - static constexpr float DefaultRotationScale = 1.0f; - static constexpr float MaxRotationDeadzone = 0.0f; - static constexpr float DefaultRotationDeadzone = 0.5f * MaxRotationDeadzone; - static constexpr double DefaultZoomScale = 0.1; + static constexpr double MaxTranslationDeadzone = 0.2; + static constexpr double DefaultTranslationDeadzone = 0.0; + static constexpr float DefaultRotationScale = 1.0f; + static constexpr float MaxRotationDeadzone = 0.2f; + static constexpr float DefaultRotationDeadzone = 0.0f; + static constexpr double DefaultZoomScale = 0.1; template struct CustomParameters @@ -194,6 +194,9 @@ public: // Called by Win32 HID enumeration callback. void device_attached(const std::string &device); +#if ENABLE_CTRL_M_ON_WINDOWS + void device_detached(const std::string& device); +#endif // ENABLE_CTRL_M_ON_WINDOWS // On Windows, the 3DConnexion driver sends out mouse wheel rotation events to an active application // if the application does not register at the driver. This is a workaround to ignore these superfluous diff --git a/src/slic3r/GUI/NotificationManager.cpp b/src/slic3r/GUI/NotificationManager.cpp index cb499b3c6e..e59d61d0a0 100644 --- a/src/slic3r/GUI/NotificationManager.cpp +++ b/src/slic3r/GUI/NotificationManager.cpp @@ -1,6 +1,7 @@ #include "NotificationManager.hpp" #include "GUI_App.hpp" +#include "GUI.hpp" #include "Plater.hpp" #include "GLCanvas3D.hpp" #include "ImGuiWrapper.hpp" @@ -9,6 +10,8 @@ #include #include +#include + #include #include @@ -24,6 +27,17 @@ wxDEFINE_EVENT(EVT_EXPORT_GCODE_NOTIFICAION_CLICKED, ExportGcodeNotificationClic wxDEFINE_EVENT(EVT_PRESET_UPDATE_AVAILABLE_CLICKED, PresetUpdateAvailableClickedEvent); namespace Notifications_Internal{ + ImFont* add_default_font(float pixel_size) + { + ImGuiIO& io = ImGui::GetIO(); + ImFontConfig config; + config.SizePixels = pixel_size; + config.OversampleH = config.OversampleV = 1; + config.PixelSnapH = true; + ImFont* font = io.Fonts->AddFontDefault(&config); + return font; + } + static inline void push_style_color(ImGuiCol idx, const ImVec4& col, bool fading_out, float current_fade_opacity) { if (fading_out) @@ -31,6 +45,56 @@ namespace Notifications_Internal{ else ImGui::PushStyleColor(idx, col); } + + void open_folder(const std::string& path) + { + // Code taken from desktop_open_datadir_folder() + + // Execute command to open a file explorer, platform dependent. + // FIXME: The const_casts aren't needed in wxWidgets 3.1, remove them when we upgrade. + +#ifdef _WIN32 + const wxString widepath = from_u8(path); + const wchar_t* argv[] = { L"explorer", widepath.GetData(), nullptr }; + ::wxExecute(const_cast(argv), wxEXEC_ASYNC, nullptr); +#elif __APPLE__ + const char* argv[] = { "open", path.data(), nullptr }; + ::wxExecute(const_cast(argv), wxEXEC_ASYNC, nullptr); +#else + const char* argv[] = { "xdg-open", path.data(), nullptr }; + + // Check if we're running in an AppImage container, if so, we need to remove AppImage's env vars, + // because they may mess up the environment expected by the file manager. + // Mostly this is about LD_LIBRARY_PATH, but we remove a few more too for good measure. + if (wxGetEnv("APPIMAGE", nullptr)) { + // We're running from AppImage + wxEnvVariableHashMap env_vars; + wxGetEnvMap(&env_vars); + + env_vars.erase("APPIMAGE"); + env_vars.erase("APPDIR"); + env_vars.erase("LD_LIBRARY_PATH"); + env_vars.erase("LD_PRELOAD"); + env_vars.erase("UNION_PRELOAD"); + + wxExecuteEnv exec_env; + exec_env.env = std::move(env_vars); + + wxString owd; + if (wxGetEnv("OWD", &owd)) { + // This is the original work directory from which the AppImage image was run, + // set it as CWD for the child process: + exec_env.cwd = std::move(owd); + } + + ::wxExecute(const_cast(argv), wxEXEC_ASYNC, nullptr, &exec_env); + } + else { + // Looks like we're NOT running from AppImage, we'll make no changes to the environment. + ::wxExecute(const_cast(argv), wxEXEC_ASYNC, nullptr, nullptr); + } +#endif + } } #if 1 @@ -181,6 +245,7 @@ NotificationManager::PopNotification::RenderResult NotificationManager::PopNotif render_left_sign(imgui); render_text(imgui, win_size.x, win_size.y, win_pos.x, win_pos.y); render_close_button(imgui, win_size.x, win_size.y, win_pos.x, win_pos.y); + m_minimize_b_visible = false; if (m_multiline && m_lines_count > 3) render_minimize_button(imgui, win_pos.x, win_pos.y); } else { @@ -203,12 +268,8 @@ NotificationManager::PopNotification::RenderResult NotificationManager::PopNotif ImGui::PopStyleColor(); return ret_val; } -void NotificationManager::PopNotification::init() +void NotificationManager::PopNotification::count_spaces() { - std::string text = m_text1 + " " + m_hypertext; - int last_end = 0; - m_lines_count = 0; - //determine line width m_line_height = ImGui::CalcTextSize("A").y; @@ -219,8 +280,16 @@ void NotificationManager::PopNotification::init() float picture_width = ImGui::CalcTextSize(text.c_str()).x; m_left_indentation = picture_width + m_line_height / 2; } - m_window_width_offset = m_left_indentation + m_line_height * 2; + m_window_width_offset = m_left_indentation + m_line_height * 3.f; m_window_width = m_line_height * 25; +} +void NotificationManager::PopNotification::init() +{ + std::string text = m_text1 + " " + m_hypertext; + int last_end = 0; + m_lines_count = 0; + + count_spaces(); // count lines m_endlines.clear(); @@ -231,10 +300,9 @@ void NotificationManager::PopNotification::init() //next line is ended by '/n' m_endlines.push_back(next_hard_end); last_end = next_hard_end + 1; - } - else { + } else { // find next suitable endline - if (ImGui::CalcTextSize(text.substr(last_end).c_str()).x >= m_window_width - 3.5f * m_line_height) {// m_window_width_offset) { + if (ImGui::CalcTextSize(text.substr(last_end).c_str()).x >= m_window_width - m_window_width_offset) { // more than one line till end int next_space = text.find_first_of(' ', last_end); if (next_space > 0) { @@ -243,8 +311,19 @@ void NotificationManager::PopNotification::init() next_space = next_space_candidate; next_space_candidate = text.find_first_of(' ', next_space + 1); } - m_endlines.push_back(next_space); - last_end = next_space + 1; + // when one word longer than line. + if (ImGui::CalcTextSize(text.substr(last_end, next_space - last_end).c_str()).x > m_window_width - m_window_width_offset) { + float width_of_a = ImGui::CalcTextSize("a").x; + int letter_count = (int)((m_window_width - m_window_width_offset) / width_of_a); + while (last_end + letter_count < text.size() && ImGui::CalcTextSize(text.substr(last_end, letter_count).c_str()).x < m_window_width - m_window_width_offset) { + letter_count++; + } + m_endlines.push_back(last_end + letter_count); + last_end += letter_count; + } else { + m_endlines.push_back(next_space); + last_end = next_space + 1; + } } } else { @@ -255,6 +334,8 @@ void NotificationManager::PopNotification::init() } m_lines_count++; } + if (m_lines_count == 3) + m_multiline = true; m_initialized = true; } void NotificationManager::PopNotification::set_next_window_size(ImGuiWrapper& imgui) @@ -283,7 +364,8 @@ void NotificationManager::PopNotification::render_text(ImGuiWrapper& imgui, cons float shift_y = m_line_height;// -m_line_height / 20; for (size_t i = 0; i < m_lines_count; i++) { std::string line = m_text1.substr(last_end , m_endlines[i] - last_end); - last_end = m_endlines[i] + 1; + if(i < m_lines_count - 1) + last_end = m_endlines[i] + (m_text1[m_endlines[i]] == '\n' || m_text1[m_endlines[i]] == ' ' ? 1 : 0); ImGui::SetCursorPosX(x_offset); ImGui::SetCursorPosY(starting_y + i * shift_y); imgui.text(line.c_str()); @@ -301,7 +383,7 @@ void NotificationManager::PopNotification::render_text(ImGuiWrapper& imgui, cons ImGui::SetCursorPosY(win_size.y / 2 - win_size.y / 6 - m_line_height / 2); imgui.text(m_text1.substr(0, m_endlines[0]).c_str()); // line2 - std::string line = m_text1.substr(m_endlines[0] + 1, m_endlines[1] - m_endlines[0] - 1); + std::string line = m_text1.substr(m_endlines[0] + (m_text1[m_endlines[0]] == '\n' || m_text1[m_endlines[0]] == ' ' ? 1 : 0), m_endlines[1] - m_endlines[0] - (m_text1[m_endlines[0]] == '\n' || m_text1[m_endlines[0]] == ' ' ? 1 : 0)); if (ImGui::CalcTextSize(line.c_str()).x > m_window_width - m_window_width_offset - ImGui::CalcTextSize((".." + _u8L("More")).c_str()).x) { line = line.substr(0, line.length() - 6); @@ -324,7 +406,7 @@ void NotificationManager::PopNotification::render_text(ImGuiWrapper& imgui, cons ImGui::SetCursorPosY(win_size.y / 2 - win_size.y / 6 - m_line_height / 2); imgui.text(m_text1.substr(0, m_endlines[0]).c_str()); // line2 - std::string line = m_text1.substr(m_endlines[0] + 1); + std::string line = m_text1.substr(m_endlines[0] + (m_text1[m_endlines[0]] == '\n' || m_text1[m_endlines[0]] == ' ' ? 1 : 0)); cursor_y = win_size.y / 2 + win_size.y / 6 - m_line_height / 2; ImGui::SetCursorPosX(x_offset); ImGui::SetCursorPosY(cursor_y); @@ -373,8 +455,7 @@ void NotificationManager::PopNotification::render_hypertext(ImGuiWrapper& imgui, set_next_window_size(imgui); } else { - on_text_click(); - m_close_pending = true; + m_close_pending = on_text_click(); } } ImGui::PopStyleColor(); @@ -405,7 +486,7 @@ void NotificationManager::PopNotification::render_hypertext(ImGuiWrapper& imgui, void NotificationManager::PopNotification::render_close_button(ImGuiWrapper& imgui, const float win_size_x, const float win_size_y, const float win_pos_x, const float win_pos_y) { ImVec2 win_size(win_size_x, win_size_y); - ImVec2 win_pos(win_pos_x, win_pos_y); + ImVec2 win_pos(win_pos_x, win_pos_y); ImVec4 orange_color = ImGui::GetStyleColorVec4(ImGuiCol_Button); orange_color.w = 0.8f; ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(.0f, .0f, .0f, .0f)); @@ -417,27 +498,27 @@ void NotificationManager::PopNotification::render_close_button(ImGuiWrapper& img //button - if part if treggered std::string button_text; - button_text = ImGui::CloseIconMarker; + button_text = ImGui::CloseNotifButton; if (ImGui::IsMouseHoveringRect(ImVec2(win_pos.x - win_size.x / 10.f, win_pos.y), - ImVec2(win_pos.x, win_pos.y + win_size.y - (m_multiline? 2 * m_line_height : 0)), + ImVec2(win_pos.x, win_pos.y + win_size.y - ( m_minimize_b_visible ? 2 * m_line_height : 0)), true)) { - button_text = ImGui::CloseIconHoverMarker; + button_text = ImGui::CloseNotifHoverButton; } ImVec2 button_pic_size = ImGui::CalcTextSize(button_text.c_str()); ImVec2 button_size(button_pic_size.x * 1.25f, button_pic_size.y * 1.25f); - ImGui::SetCursorPosX(win_size.x - m_line_height * 2.25f); - ImGui::SetCursorPosY(win_size.y / 2 - button_size.y/2); + ImGui::SetCursorPosX(win_size.x - m_line_height * 2.75f); + ImGui::SetCursorPosY(win_size.y / 2 - button_size.y); if (imgui.button(button_text.c_str(), button_size.x, button_size.y)) { m_close_pending = true; } //invisible large button - ImGui::SetCursorPosX(win_size.x - win_size.x / 10.f); + ImGui::SetCursorPosX(win_size.x - m_line_height * 2.35f); ImGui::SetCursorPosY(0); - if (imgui.button(" ", win_size.x / 10.f, win_size.y - (m_multiline ? 2 * m_line_height : 0))) + if (imgui.button(" ", m_line_height * 2.125, win_size.y - ( m_minimize_b_visible ? 2 * m_line_height : 0))) { m_close_pending = true; } @@ -500,14 +581,12 @@ void NotificationManager::PopNotification::render_left_sign(ImGuiWrapper& imgui) std::string text; text = (m_data.level == NotificationLevel::ErrorNotification ? ImGui::ErrorMarker : ImGui::WarningMarker); ImGui::SetCursorPosX(m_line_height / 3); - ImGui::SetCursorPosY(m_window_height / 2 - m_line_height / 2); + ImGui::SetCursorPosY(m_window_height / 2 - m_line_height); imgui.text(text.c_str()); } } void NotificationManager::PopNotification::render_minimize_button(ImGuiWrapper& imgui, const float win_pos_x, const float win_pos_y) { - ImVec4 orange_color = ImGui::GetStyleColorVec4(ImGuiCol_Button); - orange_color.w = 0.8f; ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(.0f, .0f, .0f, .0f)); ImGui::PushStyleColor(ImGuiCol_ButtonHovered, ImVec4(.0f, .0f, .0f, .0f)); Notifications_Internal::push_style_color(ImGuiCol_ButtonActive, ImGui::GetStyleColorVec4(ImGuiCol_WindowBg), m_fading_out, m_current_fade_opacity); @@ -517,16 +596,16 @@ void NotificationManager::PopNotification::render_minimize_button(ImGuiWrapper& //button - if part if treggered std::string button_text; - button_text = ImGui::MinimalizeMarker; + button_text = ImGui::MinimalizeButton; if (ImGui::IsMouseHoveringRect(ImVec2(win_pos_x - m_window_width / 10.f, win_pos_y + m_window_height - 2 * m_line_height + 1), ImVec2(win_pos_x, win_pos_y + m_window_height), true)) { - button_text = ImGui::MinimalizeHoverMarker; + button_text = ImGui::MinimalizeHoverButton; } ImVec2 button_pic_size = ImGui::CalcTextSize(button_text.c_str()); ImVec2 button_size(button_pic_size.x * 1.25f, button_pic_size.y * 1.25f); - ImGui::SetCursorPosX(m_window_width - m_line_height * 2.25f); + ImGui::SetCursorPosX(m_window_width - m_line_height * 1.8f); ImGui::SetCursorPosY(m_window_height - button_size.y - 5); if (imgui.button(button_text.c_str(), button_size.x, button_size.y)) { @@ -538,33 +617,13 @@ void NotificationManager::PopNotification::render_minimize_button(ImGuiWrapper& ImGui::PopStyleColor(); ImGui::PopStyleColor(); ImGui::PopStyleColor(); + m_minimize_b_visible = true; } -void NotificationManager::PopNotification::on_text_click() +bool NotificationManager::PopNotification::on_text_click() { - switch (m_data.type) { - case NotificationType::ExportToRemovableFinished : - assert(m_evt_handler != nullptr); - if (m_evt_handler != nullptr) - wxPostEvent(m_evt_handler, EjectDriveNotificationClickedEvent(EVT_EJECT_DRIVE_NOTIFICAION_CLICKED)); - break; - case NotificationType::SlicingComplete : - //wxGetApp().plater()->export_gcode(false); - assert(m_evt_handler != nullptr); - if (m_evt_handler != nullptr) - wxPostEvent(m_evt_handler, ExportGcodeNotificationClickedEvent(EVT_EXPORT_GCODE_NOTIFICAION_CLICKED)); - break; - case NotificationType::PresetUpdateAvailable : - //wxGetApp().plater()->export_gcode(false); - assert(m_evt_handler != nullptr); - if (m_evt_handler != nullptr) - wxPostEvent(m_evt_handler, PresetUpdateAvailableClickedEvent(EVT_PRESET_UPDATE_AVAILABLE_CLICKED)); - break; - case NotificationType::NewAppAvailable: - wxLaunchDefaultBrowser("https://github.com/prusa3d/PrusaSlicer/releases"); - break; - default: - break; - } + if(m_data.callback != nullptr) + return m_data.callback(m_evt_handler); + return false; } void NotificationManager::PopNotification::update(const NotificationData& n) { @@ -631,6 +690,160 @@ void NotificationManager::SlicingCompleteLargeNotification::set_large(bool l) m_hypertext = l ? _u8L("Export G-Code.") : std::string(); m_hidden = !l; } +//---------------ExportFinishedNotification----------- +void NotificationManager::ExportFinishedNotification::count_spaces() +{ + //determine line width + m_line_height = ImGui::CalcTextSize("A").y; + + m_left_indentation = m_line_height; + if (m_data.level == NotificationLevel::ErrorNotification || m_data.level == NotificationLevel::WarningNotification) { + std::string text; + text = (m_data.level == NotificationLevel::ErrorNotification ? ImGui::ErrorMarker : ImGui::WarningMarker); + float picture_width = ImGui::CalcTextSize(text.c_str()).x; + m_left_indentation = picture_width + m_line_height / 2; + } + //TODO count this properly + m_window_width_offset = m_left_indentation + m_line_height * (m_to_removable ? 6.f : 3.f); + m_window_width = m_line_height * 25; +} + +void NotificationManager::ExportFinishedNotification::render_text(ImGuiWrapper& imgui, const float win_size_x, const float win_size_y, const float win_pos_x, const float win_pos_y) +{ + + ImVec2 win_size(win_size_x, win_size_y); + ImVec2 win_pos(win_pos_x, win_pos_y); + float x_offset = m_left_indentation; + std::string fulltext = m_text1 + m_hypertext; //+ m_text2; + ImVec2 text_size = ImGui::CalcTextSize(fulltext.c_str()); + // Lines are always at least two and m_multiline is always true for ExportFinishedNotification. + // First line has "Export Finished" text and than hyper text open folder. + // Following lines are path to gcode. + int last_end = 0; + float starting_y = m_line_height / 2;//10; + float shift_y = m_line_height;// -m_line_height / 20; + for (size_t i = 0; i < m_lines_count; i++) { + std::string line = m_text1.substr(last_end, m_endlines[i] - last_end); + if (i < m_lines_count - 1) + last_end = m_endlines[i] + (m_text1[m_endlines[i]] == '\n' || m_text1[m_endlines[i]] == ' ' ? 1 : 0); + ImGui::SetCursorPosX(x_offset); + ImGui::SetCursorPosY(starting_y + i * shift_y); + imgui.text(line.c_str()); + //hyperlink text + if ( i == 0 ) { + render_hypertext(imgui, x_offset + ImGui::CalcTextSize(m_text1.substr(0, last_end).c_str()).x + ImGui::CalcTextSize(" ").x, starting_y, _u8L("Open Folder.")); + } + } + +} + +void NotificationManager::ExportFinishedNotification::render_close_button(ImGuiWrapper& imgui, const float win_size_x, const float win_size_y, const float win_pos_x, const float win_pos_y) +{ + PopNotification::render_close_button(imgui, win_size_x, win_size_y, win_pos_x, win_pos_y); + if(m_to_removable) + render_eject_button(imgui, win_size_x, win_size_y, win_pos_x, win_pos_y); +} + +void NotificationManager::ExportFinishedNotification::render_eject_button(ImGuiWrapper& imgui, const float win_size_x, const float win_size_y, const float win_pos_x, const float win_pos_y) +{ + ImVec2 win_size(win_size_x, win_size_y); + ImVec2 win_pos(win_pos_x, win_pos_y); + ImVec4 orange_color = ImGui::GetStyleColorVec4(ImGuiCol_Button); + orange_color.w = 0.8f; + ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(.0f, .0f, .0f, .0f)); + ImGui::PushStyleColor(ImGuiCol_ButtonHovered, ImVec4(.0f, .0f, .0f, .0f)); + Notifications_Internal::push_style_color(ImGuiCol_Text, ImVec4(1.f, 1.f, 1.f, 1.f), m_fading_out, m_current_fade_opacity); + Notifications_Internal::push_style_color(ImGuiCol_TextSelectedBg, ImVec4(0, .75f, .75f, 1.f), m_fading_out, m_current_fade_opacity); + ImGui::PushStyleColor(ImGuiCol_ButtonActive, ImVec4(.0f, .0f, .0f, .0f)); + + std::string button_text; + button_text = ImGui::EjectButton; + + if (ImGui::IsMouseHoveringRect(ImVec2(win_pos.x - m_line_height * 5.f, win_pos.y), + ImVec2(win_pos.x - m_line_height * 2.5f, win_pos.y + win_size.y), + true)) + { + button_text = ImGui::EjectHoverButton; + // tooltip + long time_now = wxGetLocalTime(); + 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::EndTooltip(); + ImGui::PopStyleColor(); + } + if (m_hover_time == 0) + m_hover_time = time_now; + } else + m_hover_time = 0; + + ImVec2 button_pic_size = ImGui::CalcTextSize(button_text.c_str()); + ImVec2 button_size(button_pic_size.x * 1.25f, button_pic_size.y * 1.25f); + ImGui::SetCursorPosX(win_size.x - m_line_height * 5.0f); + ImGui::SetCursorPosY(win_size.y / 2 - button_size.y); + if (imgui.button(button_text.c_str(), button_size.x, button_size.y)) + { + assert(m_evt_handler != nullptr); + if (m_evt_handler != nullptr) + wxPostEvent(m_evt_handler, EjectDriveNotificationClickedEvent(EVT_EJECT_DRIVE_NOTIFICAION_CLICKED)); + m_close_pending = true; + } + + //invisible large button + ImGui::SetCursorPosX(win_size.x - m_line_height * 4.625f); + ImGui::SetCursorPosY(0); + if (imgui.button(" ", m_line_height * 2.f, win_size.y)) + { + assert(m_evt_handler != nullptr); + if (m_evt_handler != nullptr) + wxPostEvent(m_evt_handler, EjectDriveNotificationClickedEvent(EVT_EJECT_DRIVE_NOTIFICAION_CLICKED)); + m_close_pending = true; + } + ImGui::PopStyleColor(); + ImGui::PopStyleColor(); + ImGui::PopStyleColor(); + ImGui::PopStyleColor(); + ImGui::PopStyleColor(); +} +bool NotificationManager::ExportFinishedNotification::on_text_click() +{ + Notifications_Internal::open_folder(m_export_dir_path); + return false; +} +//------ProgressBar---------------- +void NotificationManager::ProgressBarNotification::init() +{ + PopNotification::init(); + m_lines_count++; + m_endlines.push_back(m_endlines.back()); +} +void NotificationManager::ProgressBarNotification::render_text(ImGuiWrapper& imgui, const float win_size_x, const float win_size_y, const float win_pos_x, const float win_pos_y) +{ + PopNotification::render_text(imgui, win_size_x, win_size_y, win_pos_x, win_pos_y); + render_bar(imgui, win_size_x, win_size_y, win_pos_x, win_pos_y); +} +void NotificationManager::ProgressBarNotification::render_bar(ImGuiWrapper& imgui, const float win_size_x, const float win_size_y, const float win_pos_x, const float win_pos_y) +{ + float bar_y = win_size_y / 2 - win_size_y / 6 + m_line_height; + ImVec4 orange_color = ImVec4(.99f, .313f, .0f, 1.0f); + float invisible_length = 0;//((float)(m_data.duration - m_remaining_time) / (float)m_data.duration * win_size_x); + //invisible_length -= win_size_x / ((float)m_data.duration * 60.f) * (60 - m_countdown_frame); + ImVec2 lineEnd = ImVec2(win_pos_x - invisible_length - m_window_width_offset, win_pos_y + win_size_y/2 + m_line_height / 2); + ImVec2 lineStart = ImVec2(win_pos_x - win_size_x + m_left_indentation, win_pos_y + win_size_y/2 + m_line_height / 2); + ImGui::GetWindowDrawList()->AddLine(lineStart, lineEnd, IM_COL32((int)(orange_color.x * 255), (int)(orange_color.y * 255), (int)(orange_color.z * 255), (1.0f * 255.f)), m_line_height * 0.7f); + /* + //countdown line + ImVec4 orange_color = ImGui::GetStyleColorVec4(ImGuiCol_Button); + float invisible_length = ((float)(m_data.duration - m_remaining_time) / (float)m_data.duration * win_size_x); + invisible_length -= win_size_x / ((float)m_data.duration * 60.f) * (60 - m_countdown_frame); + ImVec2 lineEnd = ImVec2(win_pos_x - invisible_length, win_pos_y + win_size_y - 5); + ImVec2 lineStart = ImVec2(win_pos_x - win_size_x, win_pos_y + win_size_y - 5); + ImGui::GetWindowDrawList()->AddLine(lineStart, lineEnd, IM_COL32((int)(orange_color.x * 255), (int)(orange_color.y * 255), (int)(orange_color.z * 255), (int)(orange_color.picture_width * 255.f * (m_fading_out ? m_current_fade_opacity : 1.f))), 2.f); + if (!m_paused) + m_countdown_frame++; + */ +} //------NotificationManager-------- NotificationManager::NotificationManager(wxEvtHandler* evt_handler) : m_evt_handler(evt_handler) @@ -639,7 +852,7 @@ NotificationManager::NotificationManager(wxEvtHandler* evt_handler) : void NotificationManager::push_notification(const NotificationType type, GLCanvas3D& canvas, int timestamp) { auto it = std::find_if(basic_notifications.begin(), basic_notifications.end(), - boost::bind(&NotificationData::type, _1) == type); + boost::bind(&NotificationData::type, boost::placeholders::_1) == type); assert(it != basic_notifications.end()); if (it != basic_notifications.end()) push_notification_data( *it, canvas, timestamp); @@ -748,7 +961,8 @@ void NotificationManager::push_slicing_complete_notification(GLCanvas3D& canvas, hypertext = _u8L("Export G-Code."); time = 0; } - NotificationData data{ NotificationType::SlicingComplete, NotificationLevel::RegularNotification, time, _u8L("Slicing finished."), hypertext }; + NotificationData data{ NotificationType::SlicingComplete, NotificationLevel::RegularNotification, time, _u8L("Slicing finished."), hypertext, [](wxEvtHandler* evnthndlr){ + if (evnthndlr != nullptr) wxPostEvent(evnthndlr, ExportGcodeNotificationClickedEvent(EVT_EXPORT_GCODE_NOTIFICAION_CLICKED)); return true; } }; push_notification_data(std::make_unique(data, m_id_provider, m_evt_handler, large), canvas, timestamp); } @@ -787,6 +1001,32 @@ void NotificationManager::remove_slicing_warnings_of_released_objects(const std: notification->close(); } } +void NotificationManager::push_exporting_finished_notification(GLCanvas3D& canvas, std::string path, std::string dir_path, bool on_removable) +{ + close_notification_of_type(NotificationType::ExportFinished); + NotificationData data{ NotificationType::ExportFinished, NotificationLevel::RegularNotification, 0, _u8L("Exporting finished.") +"\n"+ path }; + push_notification_data(std::make_unique(data, m_id_provider, m_evt_handler, on_removable, path, dir_path), + canvas, 0); +} +void NotificationManager::push_progress_bar_notification(const std::string& text, GLCanvas3D& canvas, float percentage) +{ + NotificationData data{ NotificationType::ProgressBar, NotificationLevel::ProgressBarNotification, 0, text }; + push_notification_data(std::make_unique(data, m_id_provider, m_evt_handler, 0),canvas, 0); +} +void NotificationManager::set_progress_bar_percentage(const std::string& text, float percentage, GLCanvas3D& canvas) +{ + bool found = false; + for (std::unique_ptr& notification : m_pop_notifications) { + if (notification->get_type() == NotificationType::ProgressBar && notification->compare_text(text)) { + dynamic_cast(notification.get())->set_percentage(percentage); + canvas.request_extra_frame(); + found = true; + } + } + if (!found) { + push_progress_bar_notification(text, canvas, percentage); + } +} bool NotificationManager::push_notification_data(const NotificationData ¬ification_data, GLCanvas3D& canvas, int timestamp) { return push_notification_data(std::make_unique(notification_data, m_id_provider, m_evt_handler), canvas, timestamp); @@ -820,12 +1060,12 @@ void NotificationManager::render_notifications(GLCanvas3D& canvas, float overlay bool hovered = false; sort_notifications(); // iterate thru notifications and render them / erease them - for (auto it = m_pop_notifications.begin(); it != m_pop_notifications.end();) { + for (auto it = m_pop_notifications.begin(); it != m_pop_notifications.end();) { if ((*it)->get_finished()) { it = m_pop_notifications.erase(it); } else { (*it)->set_paused(m_hovered); - PopNotification::RenderResult res = (*it)->render(canvas, last_x, m_move_from_overlay, overlay_width); + PopNotification::RenderResult res = (*it)->render(canvas, last_x, m_move_from_overlay && !m_in_preview, overlay_width); if (res != PopNotification::RenderResult::Finished) { last_x = (*it)->get_top() + GAP_WIDTH; current_height = std::max(current_height, (*it)->get_current_top()); @@ -929,5 +1169,31 @@ bool NotificationManager::has_slicing_error_notification() }); } +void NotificationManager::new_export_began(bool on_removable) +{ + close_notification_of_type(NotificationType::ExportFinished); + // If we want to hold information of ejecting removable on later export finished notifications + /* + for (std::unique_ptr& notification : m_pop_notifications) { + if (notification->get_type() == NotificationType::ExportToRemovableFinished) { + if (!on_removable) { + const NotificationData old_data = notification->get_data(); + notification->update( {old_data.type, old_data.level ,old_data.duration, std::string(), old_data.hypertext} ); + } else { + notification->close(); + } + return; + } + } + */ +} +void NotificationManager::device_ejected() +{ + for (std::unique_ptr& notification : m_pop_notifications) { + if (notification->get_type() == NotificationType::ExportFinished && dynamic_cast(notification.get())->m_to_removable) + notification->close(); + } +} + }//namespace GUI }//namespace Slic3r diff --git a/src/slic3r/GUI/NotificationManager.hpp b/src/slic3r/GUI/NotificationManager.hpp index 49de00a9f4..d483173c30 100644 --- a/src/slic3r/GUI/NotificationManager.hpp +++ b/src/slic3r/GUI/NotificationManager.hpp @@ -32,7 +32,11 @@ enum class NotificationType SlicingComplete, // SlicingNotPossible, // Notification on end of export to a removable media, with hyperling to eject the external media. - ExportToRemovableFinished, + // Obsolete by ExportFinished +// ExportToRemovableFinished, + // Notification on end of export, with hyperling to see folder and eject if export was to external media. + // Own subclass. + ExportFinished, // Works on OSX only. //FIXME Do we want to have it on Linux and Windows? Is it possible to get the Disconnect event on Windows? Mouse3dDisconnected, @@ -56,7 +60,9 @@ enum class NotificationType // Object partially outside the print volume. Cannot slice. PlaterError, // Object fully outside the print volume, or extrusion outside the print volume. Slicing is not disabled. - PlaterWarning + PlaterWarning, + // Progress bar instead of text. + ProgressBar }; class NotificationManager @@ -70,6 +76,8 @@ public: RegularNotification = 1, // Information notification without a fade-out or with a longer fade-out. ImportantNotification, + // Important notification with progress bar, no fade-out, might appear again after closing. + ProgressBarNotification, // Warning, no fade-out. WarningNotification, // Error, no fade-out. @@ -115,25 +123,36 @@ public: // Called when the side bar changes its visibility, as the "slicing complete" notification supplements // the "slicing info" normally shown at the side bar. void set_slicing_complete_large(bool large); + // Exporting finished, show this information with path, button to open containing folder and if ejectable - eject button + void push_exporting_finished_notification(GLCanvas3D& canvas, std::string path, std::string dir_path, bool on_removable); + // notification with progress bar + void push_progress_bar_notification(const std::string& text, GLCanvas3D& canvas, float percentage = 0); + void set_progress_bar_percentage(const std::string& text, float percentage, GLCanvas3D& canvas); + // Close old notification ExportFinished. + void new_export_began(bool on_removable); + // finds ExportFinished notification and closes it if it was to removable device + void device_ejected(); // renders notifications in queue and deletes expired ones void render_notifications(GLCanvas3D& canvas, float overlay_width); // finds and closes all notifications of given type void close_notification_of_type(const NotificationType type); // Which view is active? Plater or G-code preview? Hide warnings in G-code preview. void set_in_preview(bool preview); - // Move to left to avoid colision with variable layer height gizmo + // Move to left to avoid colision with variable layer height gizmo. void set_move_from_overlay(bool move) { m_move_from_overlay = move; } - + private: // duration 0 means not disapearing struct NotificationData { - NotificationType type; - NotificationLevel level; + NotificationType type; + NotificationLevel level; // Fade out time - const int duration; - const std::string text1; - const std::string hypertext; - const std::string text2; + const int duration; + const std::string text1; + const std::string hypertext; + // Callback for hypertext - returns if notif shall close. + std::function callback { nullptr }; + const std::string text2; }; // Cache of IDs to identify and reuse ImGUI windows. @@ -169,7 +188,7 @@ private: void close() { m_close_pending = true; } // data from newer notification of same type void update(const NotificationData& n); - bool get_finished() const { return m_finished; } + bool get_finished() const { return m_finished || m_close_pending; } // returns top after movement float get_top() const { return m_top_y; } //returns top in actual frame @@ -187,25 +206,29 @@ private: protected: // Call after every size change void init(); + // Part of init() + virtual void count_spaces(); // Calculetes correct size but not se it in imgui! virtual void set_next_window_size(ImGuiWrapper& imgui); virtual void render_text(ImGuiWrapper& imgui, const float win_size_x, const float win_size_y, const float win_pos_x , const float win_pos_y); - void render_close_button(ImGuiWrapper& imgui, + virtual void render_close_button(ImGuiWrapper& imgui, const float win_size_x, const float win_size_y, const float win_pos_x , const float win_pos_y); void render_countdown(ImGuiWrapper& imgui, const float win_size_x, const float win_size_y, const float win_pos_x , const float win_pos_y); - void render_hypertext(ImGuiWrapper& imgui, + virtual void render_hypertext(ImGuiWrapper& imgui, const float text_x, const float text_y, const std::string text, bool more = false); + // Left sign could be error or warning sign void render_left_sign(ImGuiWrapper& imgui); - void render_minimize_button(ImGuiWrapper& imgui, + virtual void render_minimize_button(ImGuiWrapper& imgui, const float win_pos_x, const float win_pos_y); - void on_text_click(); + // Hypertext action, returns if close notification + virtual bool on_text_click(); const NotificationData m_data; @@ -236,7 +259,9 @@ private: // Will go to m_finished next render bool m_close_pending { false }; // variables to count positions correctly + // all space without text float m_window_width_offset; + // Space on left side without text float m_left_indentation; // Total size of notification window - varies based on monitor float m_window_height { 56.0f }; @@ -252,6 +277,8 @@ private: bool m_is_gray { false }; //if multiline = true, notification is showing all lines(>2) bool m_multiline { false }; + // True if minimized button is rendered, helps to decide where is area for invisible close button + bool m_minimize_b_visible { false }; int m_lines_count{ 1 }; // Target for wxWidgets events sent by clicking on the hyperlink available at some notifications. wxEvtHandler* m_evt_handler; @@ -270,7 +297,6 @@ private: const float win_size_x, const float win_size_y, const float win_pos_x, const float win_pos_y) override; - bool m_is_large; bool m_has_print_info { false }; std::string m_print_info { std::string() }; @@ -284,6 +310,57 @@ private: int warning_step; }; + class ProgressBarNotification : public PopNotification + { + public: + ProgressBarNotification(const NotificationData& n, NotificationIDProvider& id_provider, wxEvtHandler* evt_handler, float percentage) : PopNotification(n, id_provider, evt_handler) { set_percentage(percentage); } + void set_percentage(float percent) { m_percentage = percent; if (percent >= 1.0f) m_progress_complete = true; else m_progress_complete = false; } + protected: + virtual void init(); + virtual void render_text(ImGuiWrapper& imgui, + const float win_size_x, const float win_size_y, + const float win_pos_x, const float win_pos_y); + void render_bar(ImGuiWrapper& imgui, + const float win_size_x, const float win_size_y, + const float win_pos_x, const float win_pos_y); + bool m_progress_complete{ false }; + float m_percentage; + }; + + class ExportFinishedNotification : public PopNotification + { + public: + ExportFinishedNotification(const NotificationData& n, NotificationIDProvider& id_provider, wxEvtHandler* evt_handler, bool to_removable,const std::string& export_path,const std::string& export_dir_path) + : PopNotification(n, id_provider, evt_handler) + , m_to_removable(to_removable) + , m_export_path(export_path) + , m_export_dir_path(export_dir_path) + { + m_multiline = true; + } + bool m_to_removable; + std::string m_export_path; + std::string m_export_dir_path; + protected: + // Reserves space on right for more buttons + virtual void count_spaces() override; + virtual void render_text(ImGuiWrapper& imgui, + const float win_size_x, const float win_size_y, + const float win_pos_x, const float win_pos_y) override; + // Renders also button to open directory with exported path and eject removable media + virtual void render_close_button(ImGuiWrapper& imgui, + const float win_size_x, const float win_size_y, + const float win_pos_x, const float win_pos_y) override; + void render_eject_button(ImGuiWrapper& imgui, + const float win_size_x, const float win_size_y, + const float win_pos_x, const float win_pos_y); + virtual void render_minimize_button(ImGuiWrapper& imgui, const float win_pos_x, const float win_pos_y) override + { m_minimize_b_visible = false; } + virtual bool on_text_click() override; + // local time of last hover for showing tooltip + long m_hover_time { 0 }; + }; + //pushes notification into the queue of notifications that are rendered //can be used to create custom notification bool push_notification_data(const NotificationData& notification_data, GLCanvas3D& canvas, int timestamp); @@ -314,12 +391,14 @@ private: //prepared (basic) notifications const std::vector basic_notifications = { // {NotificationType::SlicingNotPossible, NotificationLevel::RegularNotification, 10, _u8L("Slicing is not possible.")}, - {NotificationType::ExportToRemovableFinished, NotificationLevel::ImportantNotification, 0, _u8L("Exporting finished."), _u8L("Eject drive.") }, +// {NotificationType::ExportToRemovableFinished, NotificationLevel::ImportantNotification, 0, _u8L("Exporting finished."), _u8L("Eject drive.") }, {NotificationType::Mouse3dDisconnected, NotificationLevel::RegularNotification, 10, _u8L("3D Mouse disconnected.") }, // {NotificationType::Mouse3dConnected, NotificationLevel::RegularNotification, 5, _u8L("3D Mouse connected.") }, // {NotificationType::NewPresetsAviable, NotificationLevel::ImportantNotification, 20, _u8L("New Presets are available."), _u8L("See here.") }, - {NotificationType::PresetUpdateAvailable, NotificationLevel::ImportantNotification, 20, _u8L("Configuration update is available."), _u8L("See more.")}, - {NotificationType::NewAppAvailable, NotificationLevel::ImportantNotification, 20, _u8L("New version is available."), _u8L("See Releases page.")}, + {NotificationType::PresetUpdateAvailable, NotificationLevel::ImportantNotification, 20, _u8L("Configuration update is available."), _u8L("See more."), [](wxEvtHandler* evnthndlr){ + if (evnthndlr != nullptr) wxPostEvent(evnthndlr, PresetUpdateAvailableClickedEvent(EVT_PRESET_UPDATE_AVAILABLE_CLICKED)); return true; }}, + {NotificationType::NewAppAvailable, NotificationLevel::ImportantNotification, 20, _u8L("New version is available."), _u8L("See Releases page."), [](wxEvtHandler* evnthndlr){ + wxLaunchDefaultBrowser("https://github.com/prusa3d/PrusaSlicer/releases"); return true; }}, //{NotificationType::NewAppAvailable, NotificationLevel::ImportantNotification, 20, _u8L("New vesion of PrusaSlicer is available.", _u8L("Download page.") }, //{NotificationType::LoadingFailed, NotificationLevel::RegularNotification, 20, _u8L("Loading of model has Failed") }, //{NotificationType::DeviceEjected, NotificationLevel::RegularNotification, 10, _u8L("Removable device has been safely ejected")} // if we want changeble text (like here name of device), we need to do it as CustomNotification diff --git a/src/slic3r/GUI/OG_CustomCtrl.cpp b/src/slic3r/GUI/OG_CustomCtrl.cpp new file mode 100644 index 0000000000..9f7ddf3bbd --- /dev/null +++ b/src/slic3r/GUI/OG_CustomCtrl.cpp @@ -0,0 +1,691 @@ +#include "OG_CustomCtrl.hpp" +#include "OptionsGroup.hpp" +#include "Plater.hpp" +#include "GUI_App.hpp" +#include "libslic3r/AppConfig.hpp" + +#include +#include +#include "libslic3r/Utils.hpp" +#include "I18N.hpp" + +namespace Slic3r { namespace GUI { + +static bool is_point_in_rect(const wxPoint& pt, const wxRect& rect) +{ + return rect.GetLeft() <= pt.x && pt.x <= rect.GetRight() && + rect.GetTop() <= pt.y && pt.y <= rect.GetBottom(); +} + +static wxSize get_bitmap_size(const wxBitmap& bmp) +{ +#ifdef __APPLE__ + return bmp.GetScaledSize(); +#else + return bmp.GetSize(); +#endif +} + +static wxString get_url(const wxString& path_end, bool get_default = false) +{ + if (path_end.IsEmpty()) + return wxEmptyString; + + wxString language = wxGetApp().app_config->get("translation_language"); + wxString lang_marker = language.IsEmpty() ? "en" : language.BeforeFirst('_'); + + return wxString("https://help.prusa3d.com/") + lang_marker + "/article/" + path_end; +} + +OG_CustomCtrl::OG_CustomCtrl( wxWindow* parent, + OptionsGroup* og, + const wxPoint& pos /* = wxDefaultPosition*/, + const wxSize& size/* = wxDefaultSize*/, + const wxValidator& val /* = wxDefaultValidator*/, + const wxString& name/* = wxEmptyString*/) : + wxPanel(parent, wxID_ANY, pos, size, /*wxWANTS_CHARS |*/ wxBORDER_NONE | wxTAB_TRAVERSAL), + opt_group(og) +{ + if (!wxOSX) + SetDoubleBuffered(true);// SetDoubleBuffered exists on Win and Linux/GTK, but is missing on OSX + + m_font = wxGetApp().normal_font(); + m_em_unit = em_unit(m_parent); + m_v_gap = lround(1.0 * m_em_unit); + m_h_gap = lround(0.2 * m_em_unit); + + m_bmp_mode_sz = get_bitmap_size(create_scaled_bitmap("mode_simple", this, wxOSX ? 10 : 12)); + m_bmp_blinking_sz = get_bitmap_size(create_scaled_bitmap("search_blink", this)); + + init_ctrl_lines();// from og.lines() + + this->Bind(wxEVT_PAINT, &OG_CustomCtrl::OnPaint, this); + this->Bind(wxEVT_MOTION, &OG_CustomCtrl::OnMotion, this); + this->Bind(wxEVT_LEFT_DOWN, &OG_CustomCtrl::OnLeftDown, this); + this->Bind(wxEVT_LEAVE_WINDOW, &OG_CustomCtrl::OnLeaveWin, this); +} + +void OG_CustomCtrl::init_ctrl_lines() +{ + const std::vector& og_lines = opt_group->get_lines(); + for (const Line& line : og_lines) + { + if (line.full_width && ( + // description line + line.widget != nullptr || + // description line with widget (button) + !line.get_extra_widgets().empty()) + ) + continue; + + const std::vector