diff --git a/.github/workflows/build_all.yml b/.github/workflows/build_all.yml index 8fa7901623..ff07d1efb7 100644 --- a/.github/workflows/build_all.yml +++ b/.github/workflows/build_all.yml @@ -8,6 +8,7 @@ on: paths: - 'deps/**' - 'deps_src/**' + - 'cmake/**' - 'src/**' - '**/CMakeLists.txt' - 'version.inc' @@ -31,6 +32,7 @@ on: paths: - 'deps/**' - 'deps_src/**' + - 'cmake/**' - 'src/**' - '**/CMakeLists.txt' - 'version.inc' diff --git a/.github/workflows/build_orca.yml b/.github/workflows/build_orca.yml index 4d85542c71..60456ad171 100644 --- a/.github/workflows/build_orca.yml +++ b/.github/workflows/build_orca.yml @@ -33,6 +33,8 @@ jobs: ubuntu-ver: '2404' ubuntu-ver-str: '_Ubuntu2404' ORCA_UPDATER_SIG_KEY: ${{ secrets.ORCA_UPDATER_SIG_KEY }} + NSIS_VERSION: '3.13' + NSIS_SHA256: BA63DFFC4410EE89193E1CB5A41989991BD77C61068DA17E3156D136B7B0B3D8 steps: - name: Checkout @@ -427,29 +429,46 @@ jobs: if: runner.os == 'Windows' uses: microsoft/setup-msbuild@v3 - - name: Install nsis + # NSIS builds the installer. A pinned portable copy is kept in the Actions + # cache, so most runs never download it, and a cache miss fetches the + # release archive from SourceForge instead of going through the Chocolatey + # community feed, which hosted runners often cannot reach. Prepending it to + # PATH also makes cpack use it over the NSIS preinstalled on some images. + - name: Restore NSIS + id: nsis-cache + if: runner.os == 'Windows' && !vars.SELF_HOSTED + uses: actions/cache/restore@v6 + with: + path: ${{ runner.temp }}/nsis + key: nsis-${{ env.NSIS_VERSION }} + + - name: Install NSIS if: runner.os == 'Windows' && !vars.SELF_HOSTED shell: pwsh - # The Chocolatey community feed intermittently 504s, and `choco install` - # exits 0 when package resolution fails that way. Unchecked, the job then - # builds for ~25 minutes before `cpack -G NSIS` reports a missing makensis. - # Retry the install and verify makensis itself, so a real failure stops here. run: | dir "C:/Program Files (x86)/Windows Kits/10/Include" - $nsisDir = Join-Path ${env:ProgramFiles(x86)} 'NSIS' + $nsisDir = Join-Path $env:RUNNER_TEMP 'nsis' $makensis = Join-Path $nsisDir 'makensis.exe' - for ($attempt = 1; $attempt -le 3 -and -not (Test-Path $makensis); $attempt++) { - if ($attempt -gt 1) { Start-Sleep -Seconds (15 * $attempt) } - Write-Host "::group::choco install nsis (attempt $attempt)" - choco install nsis --yes --no-progress - Write-Host "::endgroup::" - } if (-not (Test-Path $makensis)) { - throw "NSIS install failed: $makensis not found after 3 attempts." + $zip = Join-Path $env:RUNNER_TEMP "nsis-$env:NSIS_VERSION.zip" + curl.exe -fsSL --retry 5 --retry-all-errors --retry-delay 15 -o $zip "https://downloads.sourceforge.net/project/nsis/NSIS%203/$env:NSIS_VERSION/nsis-$env:NSIS_VERSION.zip" + if ($LASTEXITCODE -ne 0) { throw "NSIS $env:NSIS_VERSION download failed." } + if ((Get-FileHash $zip -Algorithm SHA256).Hash -ne $env:NSIS_SHA256) { + throw "NSIS $env:NSIS_VERSION archive does not match its pinned SHA256." + } + Expand-Archive $zip $env:RUNNER_TEMP + Move-Item (Join-Path $env:RUNNER_TEMP "nsis-$env:NSIS_VERSION") $nsisDir } & $makensis /VERSION $nsisDir | Out-File -Append -FilePath $env:GITHUB_PATH -Encoding utf8 + - name: Save NSIS + if: runner.os == 'Windows' && !vars.SELF_HOSTED && steps.nsis-cache.outputs.cache-hit != 'true' + uses: actions/cache/save@v6 + with: + path: ${{ runner.temp }}/nsis + key: nsis-${{ env.NSIS_VERSION }} + - name: Build slicer Win if: runner.os == 'Windows' working-directory: ${{ github.workspace }} diff --git a/CMakeLists.txt b/CMakeLists.txt index 7f1586f222..a302bb15e2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1345,7 +1345,8 @@ set (CPACK_PACKAGE_INSTALL_DIRECTORY ${CPACK_PACKAGE_NAME}) set (CPACK_PACKAGE_ICON "${CMAKE_SOURCE_DIR}/resources/images\\\\OrcaSlicer.ico") set (CPACK_NSIS_MUI_ICON "${CPACK_PACKAGE_ICON}") set (CPACK_NSIS_MUI_UNIICON "${CPACK_PACKAGE_ICON}") -set (CPACK_NSIS_INSTALLED_ICON_NAME "$INSTDIR\\\\orca-slicer.exe") +# Relative to the install dir: CPack's NSIS template prefixes $INSTDIR itself. +set (CPACK_NSIS_INSTALLED_ICON_NAME "orca-slicer.exe") set (CPACK_PACKAGE_CHECKSUM SHA256) set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "OrcaSlicer") set (CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL ON) diff --git a/README.md b/README.md index cf1b084e4c..1c87cd00b8 100644 --- a/README.md +++ b/README.md @@ -86,7 +86,8 @@ The [wiki](https://www.orcaslicer.com/wiki) aims to provide a detailed explanati ## Stable Release 📥 **[Download the Latest Stable Release](https://github.com/OrcaSlicer/OrcaSlicer/releases/latest)** -Visit our GitHub Releases page for the latest stable version of OrcaSlicer, recommended for most users. +Visit our GitHub Releases page for the latest stable version of OrcaSlicer, recommended for most users. +Windows release binaries are code signed; see our [Code signing policy](#code-signing-policy). ## Nightly Builds @@ -244,6 +245,16 @@ OrcaSlicer began in that same spirit, drawing from BambuStudio, PrusaSlicer, and The OrcaSlicer logo was designed by community member [Justin Levine](https://github.com/jal-co). +# Code Signing Policy + +Free code signing provided by [SignPath.io](https://about.signpath.io), certificate by [SignPath Foundation](https://signpath.org). + +Windows release binaries are built by GitHub Actions from this repository and signed through the SignPath Foundation program. Every signing request is manually approved. + +**Team roles:** [SoftFever](https://github.com/SoftFever) is the committer, reviewer and approver for all signed releases. + +**Privacy policy:** See the [OrcaSlicer privacy policy](https://www.orcaslicer.com/privacy-policy/). + # License - **OrcaSlicer** is licensed under the GNU Affero General Public License, version 3. diff --git a/build_win.bat b/build_win.bat index 098d6fe1ff..dc19df06bc 100644 --- a/build_win.bat +++ b/build_win.bat @@ -42,6 +42,7 @@ call :add_arg build_deps bool d deps "Download and build the dependencies, neede call :add_arg build_slicer bool s slicer "Build OrcaSlicer" call :add_arg build_tests bool "" tests "Build the unit tests" call :add_arg run_tests bool "" run-tests "Build the unit tests and run them" +call :add_arg make_installer bool "" installer "Build OrcaSlicer and package it into an NSIS installer" call :add_arg pack_deps bool p pack "Bundle the built dependencies into a zip file" call :add_arg install_deps bool u install-deps "Install or update CMake, Perl and Git with WinGet" call :add_arg install_vs string "" install-vs "Also install Visual Studio: buildtools or ide" @@ -185,6 +186,9 @@ if "%build_deps%%build_slicer%%pack_deps%%install_deps%%install_vs%" == "" ( if "%run_tests%" == "ON" set "build_slicer=ON" ) +REM The installer packages the slicer build, so it always needs one. +if "%make_installer%" == "ON" set "build_slicer=ON" + REM Options like --config or -j only shape a build. Without one of the actions REM there is nothing for them to shape, so say so rather than resolving a whole REM build and reporting it took no time. The block above may have added one. @@ -222,6 +226,30 @@ if "%build_slicer%" == "ON" if "%install_slicer%" == "ON" if not "%slicer_target echo --install needs the executable, but --slicer-target names "%slicer_target%". exit /b 1 ) +REM cpack runs the same install, so it has the same need. +if "%make_installer%" == "ON" if not "%slicer_target%" == "" if /I not "%slicer_target%" == "OrcaSlicer" ( + echo --installer needs the executable, but --slicer-target names "%slicer_target%". + exit /b 1 +) + +REM cpack finds makensis on PATH or through the registry key the NSIS installer +REM writes, so look in the same places, and before the build rather than after +REM it. The value is read past its REG_SZ marker because the name column is +REM localised and may hold spaces. +if not "%make_installer%" == "ON" goto :nsis_ready +if "%dry_run%" == "ON" goto :nsis_ready +where makensis >nul 2>nul && goto :nsis_ready +for %%v in (32 64) do ( + for /f "delims=" %%l in ('reg query "HKLM\SOFTWARE\NSIS" /ve /reg:%%v 2^>nul ^| findstr REG_SZ') do ( + set "nsis_line=%%l" + set "nsis_line=!nsis_line:*REG_SZ=!" + for /f "tokens=*" %%d in ("!nsis_line!") do if exist "%%d\makensis.exe" goto :nsis_ready + ) +) +echo NSIS was not found, and --installer needs it to build the installer. +echo Install it with "winget install NSIS.NSIS", then run this again. +exit /b 1 +:nsis_ready if not "%vs_version%" == "" if "!vs_gen_%vs_version%!" == "" ( echo Unknown Visual Studio release "%vs_version%". Known releases: 2019, 2022, 2026. exit /b 1 @@ -734,6 +762,14 @@ if "%build_slicer%" == "ON" ( call :print_and_run cmake --build "%build_dir%" --target install --config %build_type% %error_check% ) + + REM cpack installs into its own staging tree, so this does not need -i. + REM Unlike CI it skips the preset cache, whose packaging step prunes the + REM checkout's preset JSONs. + if "%make_installer%" == "ON" ( + call :print_and_run cpack -G NSIS -C %build_type% --config "%build_dir%\CPackConfig.cmake" -B "%build_dir%" + %error_check% + ) ) REM Elapsed wall clock. The 1%%a-100 trick strips a leading zero, which set /A @@ -820,6 +856,16 @@ REM worked out the same way in either run. if "%build_slicer%" == "ON" if not "%linked%" == "ON" echo Target %slicer_target% if "%build_slicer%" == "ON" if not "%using_ninja%" == "ON" echo Solution %build_full%\!solution! if "%pack_deps%" == "ON" if defined bundle echo Bundle !bundle! + if "%make_installer%" == "ON" ( + REM The file name carries the version, which only CMake knows, so name + REM the newest match, or the pattern when there is none yet. + set "installer=" + for /f "delims=" %%f in ('dir /b /o-d "!build_full!\OrcaSlicer_Windows_Installer_*.exe" 2^>nul') do ( + if not defined installer set "installer=!build_full!\%%f" + ) + if not defined installer set "installer=!build_full!\OrcaSlicer_Windows_Installer_*.exe" + echo Installer !installer! + ) echo. echo Next diff --git a/cmake/modules/FindAlienWx.cmake b/cmake/modules/FindAlienWx.cmake deleted file mode 100644 index 65221172be..0000000000 --- a/cmake/modules/FindAlienWx.cmake +++ /dev/null @@ -1,109 +0,0 @@ -# Find the wxWidgets module based on the information provided by the Perl Alien::wxWidgets module. - -# Check for the Perl & PerlLib modules -include(LibFindMacros) -libfind_package(AlienWx Perl) -libfind_package(AlienWx PerlLibs) - -if (AlienWx_DEBUG) - message(STATUS " AlienWx_FIND_COMPONENTS=${AlienWx_FIND_COMPONENTS}") -endif() - -# Execute an Alien::Wx module to find the relevant information regarding -# the wxWidgets used by the Perl interpreter. -# Perl specific stuff -set(AlienWx_TEMP_INCLUDE ${CMAKE_CURRENT_BINARY_DIR}/AlienWx_TEMP_INCLUDE.txt) -execute_process( - COMMAND ${PERL_EXECUTABLE} -e " -# Import Perl modules. -use strict; -use warnings; -use Text::ParseWords; - -BEGIN { - # CMake sets the environment variables CC and CXX to the detected C compiler. - # There is an issue with the Perl ExtUtils::CBuilder, which does not handle whitespaces - # in the paths correctly on Windows, so we rather drop the CMake auto-detected paths. - delete \$ENV{CC}; - delete \$ENV{CXX}; -} - -use Alien::wxWidgets; -use ExtUtils::CppGuess; - -# Test for a Visual Studio compiler -my \$cpp_guess = ExtUtils::CppGuess->new; -my \$mswin = \$^O eq 'MSWin32'; -my \$msvc = \$cpp_guess->is_msvc; - -# List of wxWidgets components to be used. -my @components = split /;/, '${AlienWx_FIND_COMPONENTS}'; - -# Query the available data from Alien::wxWidgets. -my \$version = Alien::wxWidgets->version; -my \$config = Alien::wxWidgets->config; -my \$compiler = Alien::wxWidgets->compiler; -my \$linker = Alien::wxWidgets->linker; -my \$include_path = ' ' . Alien::wxWidgets->include_path; -my \$defines = ' ' . Alien::wxWidgets->defines; -my \$cflags = Alien::wxWidgets->c_flags; -my \$linkflags = Alien::wxWidgets->link_flags; -my \$libraries = ' ' . Alien::wxWidgets->libraries(@components); -my \$gui_toolkit = Alien::wxWidgets->config->{toolkit}; -#my @libraries = Alien::wxWidgets->link_libraries(@components); -#my @implib = Alien::wxWidgets->import_libraries(@components); -#my @shrlib = Alien::wxWidgets->shared_libraries(@components); -#my @keys = Alien::wxWidgets->library_keys; # 'gl', 'adv', ... -#my \$library_path = Alien::wxWidgets->shared_library_path; -#my \$key = Alien::wxWidgets->key; -#my \$prefix = Alien::wxWidgets->prefix; - -my \$filename = '${AlienWx_TEMP_INCLUDE}'; -open(my $fh, '>', \$filename) or die \"Could not open file '\$filename' \$!\"; - -# Convert a space separated lists to CMake semicolon separated lists, -# escape the backslashes, -# export the resulting list to a temp file. -sub cmake_set_var { - my (\$varname, \$content) = @_; - # Remove line separators. - \$content =~ s/\\r|\\n//g; - # Escape the path separators. - \$content =~ s/\\\\/\\\\\\\\\\\\\\\\/g; - my @words = shellwords(\$content); - print \$fh \"set(AlienWx_\$varname \\\"\" . join(';', @words) . \"\\\")\\n\"; -} -cmake_set_var('VERSION', \$version); -\$include_path =~ s/ -I/ /g; -cmake_set_var('INCLUDE_DIRS', \$include_path); -\$libraries =~ s/ -L/ -LIBPATH:/g if \$msvc; -cmake_set_var('LIBRARIES', \$libraries); -#cmake_set_var('LIBRARY_DIRS', ); -#\$defines =~ s/ -D/ /g; -cmake_set_var('DEFINITIONS', \$defines); -#cmake_set_var('DEFINITIONS_DEBUG', ); -cmake_set_var('CXX_FLAGS', \$cflags); -cmake_set_var('GUI_TOOLKIT', \$gui_toolkit); -close \$fh; -") -include(${AlienWx_TEMP_INCLUDE}) -file(REMOVE ${AlienWx_TEMP_INCLUDE}) -unset(AlienWx_TEMP_INCLUDE) - -if (AlienWx_DEBUG) - message(STATUS " AlienWx_VERSION = ${AlienWx_VERSION}") - message(STATUS " AlienWx_INCLUDE_DIRS = ${AlienWx_INCLUDE_DIRS}") - message(STATUS " AlienWx_LIBRARIES = ${AlienWx_LIBRARIES}") - message(STATUS " AlienWx_LIBRARY_DIRS = ${AlienWx_LIBRARY_DIRS}") - message(STATUS " AlienWx_DEFINITIONS = ${AlienWx_DEFINITIONS}") - message(STATUS " AlienWx_DEFINITIONS_DEBUG = ${AlienWx_DEFINITIONS_DEBUG}") - message(STATUS " AlienWx_CXX_FLAGS = ${AlienWx_CXX_FLAGS}") - message(STATUS " AlienWx_GUI_TOOLKIT = ${AlienWx_GUI_TOOLKIT}") -endif() - -include(FindPackageHandleStandardArgs) - -find_package_handle_standard_args(AlienWx - REQUIRED_VARS AlienWx_INCLUDE_DIRS AlienWx_LIBRARIES -# HANDLE_COMPONENTS - VERSION_VAR AlienWx_VERSION) diff --git a/cmake/modules/FindPerlEmbed.cmake b/cmake/modules/FindPerlEmbed.cmake deleted file mode 100644 index b12fc40634..0000000000 --- a/cmake/modules/FindPerlEmbed.cmake +++ /dev/null @@ -1,88 +0,0 @@ -# Find the dependencies for linking with the Perl runtime library. - -# Check for the Perl & PerlLib modules -include(LibFindMacros) -libfind_package(PerlEmbed Perl) -libfind_package(PerlEmbed PerlLibs) - -# Execute an Alien::Wx module to find the relevant information regarding -# the wxWidgets used by the Perl interpreter. -# Perl specific stuff -set(PerlEmbed_TEMP_INCLUDE ${CMAKE_CURRENT_BINARY_DIR}/PerlEmbed_TEMP_INCLUDE.txt) -execute_process( - COMMAND ${PERL_EXECUTABLE} -MExtUtils::Embed -e " -# Import Perl modules. -use strict; -use warnings; -use Config; -use Text::ParseWords; -use ExtUtils::CppGuess; - -# Test for a Visual Studio compiler -my \$cpp_guess = ExtUtils::CppGuess->new; -my \$mswin = \$^O eq 'MSWin32'; -my \$msvc = \$cpp_guess->is_msvc; - -# Query the available data from Alien::wxWidgets. -my \$ccflags; -my \$ldflags; -{ local *STDOUT; open STDOUT, '>', \\\$ccflags; ccflags; } -{ local *STDOUT; open STDOUT, '>', \\\$ldflags; ldopts; } -\$ccflags = ' ' . \$ccflags; -\$ldflags = ' ' . \$ldflags; - -my \$filename = '${PerlEmbed_TEMP_INCLUDE}'; -open(my $fh, '>', \$filename) or die \"Could not open file '\$filename' \$!\"; - -# Convert a space separated lists to CMake semicolon separated lists, -# escape the backslashes, -# export the resulting list to a temp file. -sub cmake_set_var { - my (\$varname, \$content) = @_; - # Remove line separators. - \$content =~ s/\\r|\\n//g; - # Escape the path separators. - \$content =~ s/\\\\/\\\\\\\\\\\\\\\\/g; - my @words = shellwords(\$content); - print \$fh \"set(PerlEmbed_\$varname \\\"\" . join(';', @words) . \"\\\")\\n\"; -} -cmake_set_var('ARCHNAME', \$Config{archname}); -cmake_set_var('CCFLAGS', \$ccflags); -\$ldflags =~ s/ -L/ -LIBPATH:/g if \$msvc; -cmake_set_var('LD', \$Config{ld}); -cmake_set_var('LDFLAGS', \$ldflags); -cmake_set_var('CCCDLFLAGS', \$Config{cccdlflags}); -cmake_set_var('LDDLFLAGS', \$Config{lddlflags}); -cmake_set_var('DLEXT', \$Config{dlext}); -close \$fh; -") -include(${PerlEmbed_TEMP_INCLUDE}) -file(REMOVE ${PerlEmbed_TEMP_INCLUDE}) -unset(PerlEmbed_TEMP_INCLUDE) - -if (PerlEmbed_DEBUG) - # First show the configuration extracted by FindPerl & FindPerlLibs: - message(STATUS " PERL_INCLUDE_PATH = ${PERL_INCLUDE_PATH}") - message(STATUS " PERL_LIBRARY = ${PERL_LIBRARY}") - message(STATUS " PERL_EXECUTABLE = ${PERL_EXECUTABLE}") - message(STATUS " PERL_SITESEARCH = ${PERL_SITESEARCH}") - message(STATUS " PERL_SITELIB = ${PERL_SITELIB}") - message(STATUS " PERL_VENDORARCH = ${PERL_VENDORARCH}") - message(STATUS " PERL_VENDORLIB = ${PERL_VENDORLIB}") - message(STATUS " PERL_ARCHLIB = ${PERL_ARCHLIB}") - message(STATUS " PERL_PRIVLIB = ${PERL_PRIVLIB}") - message(STATUS " PERL_EXTRA_C_FLAGS = ${PERL_EXTRA_C_FLAGS}") - # Second show the configuration extracted by this module (FindPerlEmbed): - message(STATUS " PerlEmbed_ARCHNAME = ${PerlEmbed_ARCHNAME}") - message(STATUS " PerlEmbed_CCFLAGS = ${PerlEmbed_CCFLAGS}") - message(STATUS " PerlEmbed_CCCDLFLAGS = ${PerlEmbed_CCCDLFLAGS}") - message(STATUS " LD = ${PerlEmbed_LD}") - message(STATUS " PerlEmbed_LDFLAGS = ${PerlEmbed_LDFLAGS}") - message(STATUS " PerlEmbed_LDDLFLAGS = ${PerlEmbed_LDDLFLAGS}") -endif() - -include(FindPackageHandleStandardArgs) - -find_package_handle_standard_args(PerlEmbed - REQUIRED_VARS PerlEmbed_CCFLAGS PerlEmbed_LDFLAGS - VERSION_VAR PERL_VERSION) diff --git a/cmake/modules/LibFindMacros.cmake b/cmake/modules/LibFindMacros.cmake deleted file mode 100644 index f6800aa7bd..0000000000 --- a/cmake/modules/LibFindMacros.cmake +++ /dev/null @@ -1,265 +0,0 @@ -# Version 2.2 -# Public Domain, originally written by Lasse Kärkkäinen -# Maintained at https://github.com/Tronic/cmake-modules -# Please send your improvements as pull requests on Github. - -# Find another package and make it a dependency of the current package. -# This also automatically forwards the "REQUIRED" argument. -# Usage: libfind_package( [extra args to find_package]) -macro (libfind_package PREFIX PKG) - set(${PREFIX}_args ${PKG} ${ARGN}) - if (${PREFIX}_FIND_REQUIRED) - set(${PREFIX}_args ${${PREFIX}_args} REQUIRED) - endif() - find_package(${${PREFIX}_args}) - set(${PREFIX}_DEPENDENCIES ${${PREFIX}_DEPENDENCIES};${PKG}) - unset(${PREFIX}_args) -endmacro() - -# A simple wrapper to make pkg-config searches a bit easier. -# Works the same as CMake's internal pkg_check_modules but is always quiet. -macro (libfind_pkg_check_modules) - find_package(PkgConfig QUIET) - if (PKG_CONFIG_FOUND) - pkg_check_modules(${ARGN} QUIET) - endif() -endmacro() - -# Avoid useless copy&pasta by doing what most simple libraries do anyway: -# pkg-config, find headers, find library. -# Usage: libfind_pkg_detect( FIND_PATH [other args] FIND_LIBRARY [other args]) -# E.g. libfind_pkg_detect(SDL2 sdl2 FIND_PATH SDL.h PATH_SUFFIXES SDL2 FIND_LIBRARY SDL2) -function (libfind_pkg_detect PREFIX) - # Parse arguments - set(argname pkgargs) - foreach (i ${ARGN}) - if ("${i}" STREQUAL "FIND_PATH") - set(argname pathargs) - elseif ("${i}" STREQUAL "FIND_LIBRARY") - set(argname libraryargs) - else() - set(${argname} ${${argname}} ${i}) - endif() - endforeach() - if (NOT pkgargs) - message(FATAL_ERROR "libfind_pkg_detect requires at least a pkg_config package name to be passed.") - endif() - # Find library - libfind_pkg_check_modules(${PREFIX}_PKGCONF ${pkgargs}) - if (pathargs) - find_path(${PREFIX}_INCLUDE_DIR NAMES ${pathargs} HINTS ${${PREFIX}_PKGCONF_INCLUDE_DIRS}) - endif() - if (libraryargs) - find_library(${PREFIX}_LIBRARY NAMES ${libraryargs} HINTS ${${PREFIX}_PKGCONF_LIBRARY_DIRS}) - endif() -endfunction() - -# Extracts a version #define from a version.h file, output stored to _VERSION. -# Usage: libfind_version_header(Foobar foobar/version.h FOOBAR_VERSION_STR) -# Fourth argument "QUIET" may be used for silently testing different define names. -# This function does nothing if the version variable is already defined. -function (libfind_version_header PREFIX VERSION_H DEFINE_NAME) - # Skip processing if we already have a version or if the include dir was not found - if (${PREFIX}_VERSION OR NOT ${PREFIX}_INCLUDE_DIR) - return() - endif() - set(quiet ${${PREFIX}_FIND_QUIETLY}) - # Process optional arguments - foreach(arg ${ARGN}) - if (arg STREQUAL "QUIET") - set(quiet TRUE) - else() - message(AUTHOR_WARNING "Unknown argument ${arg} to libfind_version_header ignored.") - endif() - endforeach() - # Read the header and parse for version number - set(filename "${${PREFIX}_INCLUDE_DIR}/${VERSION_H}") - if (NOT EXISTS ${filename}) - if (NOT quiet) - message(AUTHOR_WARNING "Unable to find ${${PREFIX}_INCLUDE_DIR}/${VERSION_H}") - endif() - return() - endif() - file(READ "${filename}" header) - string(REGEX REPLACE ".*#[ \t]*define[ \t]*${DEFINE_NAME}[ \t]*\"([^\n]*)\".*" "\\1" match "${header}") - # No regex match? - if (match STREQUAL header) - if (NOT quiet) - message(AUTHOR_WARNING "Unable to find \#define ${DEFINE_NAME} \"\" from ${${PREFIX}_INCLUDE_DIR}/${VERSION_H}") - endif() - return() - endif() - # Export the version string - set(${PREFIX}_VERSION "${match}" PARENT_SCOPE) -endfunction() - -# Do the final processing once the paths have been detected. -# If include dirs are needed, ${PREFIX}_PROCESS_INCLUDES should be set to contain -# all the variables, each of which contain one include directory. -# Ditto for ${PREFIX}_PROCESS_LIBS and library files. -# Will set ${PREFIX}_FOUND, ${PREFIX}_INCLUDE_DIRS and ${PREFIX}_LIBRARIES. -# Also handles errors in case library detection was required, etc. -function (libfind_process PREFIX) - # Skip processing if already processed during this configuration run - if (${PREFIX}_FOUND) - return() - endif() - - set(found TRUE) # Start with the assumption that the package was found - - # Did we find any files? Did we miss includes? These are for formatting better error messages. - set(some_files FALSE) - set(missing_headers FALSE) - - # Shorthands for some variables that we need often - set(quiet ${${PREFIX}_FIND_QUIETLY}) - set(required ${${PREFIX}_FIND_REQUIRED}) - set(exactver ${${PREFIX}_FIND_VERSION_EXACT}) - set(findver "${${PREFIX}_FIND_VERSION}") - set(version "${${PREFIX}_VERSION}") - - # Lists of config option names (all, includes, libs) - unset(configopts) - set(includeopts ${${PREFIX}_PROCESS_INCLUDES}) - set(libraryopts ${${PREFIX}_PROCESS_LIBS}) - - # Process deps to add to - foreach (i ${PREFIX} ${${PREFIX}_DEPENDENCIES}) - if (DEFINED ${i}_INCLUDE_OPTS OR DEFINED ${i}_LIBRARY_OPTS) - # The package seems to export option lists that we can use, woohoo! - list(APPEND includeopts ${${i}_INCLUDE_OPTS}) - list(APPEND libraryopts ${${i}_LIBRARY_OPTS}) - else() - # If plural forms don't exist or they equal singular forms - if ((NOT DEFINED ${i}_INCLUDE_DIRS AND NOT DEFINED ${i}_LIBRARIES) OR - ({i}_INCLUDE_DIR STREQUAL ${i}_INCLUDE_DIRS AND ${i}_LIBRARY STREQUAL ${i}_LIBRARIES)) - # Singular forms can be used - if (DEFINED ${i}_INCLUDE_DIR) - list(APPEND includeopts ${i}_INCLUDE_DIR) - endif() - if (DEFINED ${i}_LIBRARY) - list(APPEND libraryopts ${i}_LIBRARY) - endif() - else() - # Oh no, we don't know the option names - message(FATAL_ERROR "We couldn't determine config variable names for ${i} includes and libs. Aieeh!") - endif() - endif() - endforeach() - - if (includeopts) - list(REMOVE_DUPLICATES includeopts) - endif() - - if (libraryopts) - list(REMOVE_DUPLICATES libraryopts) - endif() - - string(REGEX REPLACE ".*[ ;]([^ ;]*(_INCLUDE_DIRS|_LIBRARIES))" "\\1" tmp "${includeopts} ${libraryopts}") - if (NOT tmp STREQUAL "${includeopts} ${libraryopts}") - message(AUTHOR_WARNING "Plural form ${tmp} found in config options of ${PREFIX}. This works as before but is now deprecated. Please only use singular forms INCLUDE_DIR and LIBRARY, and update your find scripts for LibFindMacros > 2.0 automatic dependency system (most often you can simply remove the PROCESS variables entirely).") - endif() - - # Include/library names separated by spaces (notice: not CMake lists) - unset(includes) - unset(libs) - - # Process all includes and set found false if any are missing - foreach (i ${includeopts}) - list(APPEND configopts ${i}) - if (NOT "${${i}}" STREQUAL "${i}-NOTFOUND") - list(APPEND includes "${${i}}") - else() - set(found FALSE) - set(missing_headers TRUE) - endif() - endforeach() - - # Process all libraries and set found false if any are missing - foreach (i ${libraryopts}) - list(APPEND configopts ${i}) - if (NOT "${${i}}" STREQUAL "${i}-NOTFOUND") - list(APPEND libs "${${i}}") - else() - set (found FALSE) - endif() - endforeach() - - # Version checks - if (found AND findver) - if (NOT version) - message(WARNING "The find module for ${PREFIX} does not provide version information, so we'll just assume that it is OK. Please fix the module or remove package version requirements to get rid of this warning.") - elseif (version VERSION_LESS findver OR (exactver AND NOT version VERSION_EQUAL findver)) - set(found FALSE) - set(version_unsuitable TRUE) - endif() - endif() - - # If all-OK, hide all config options, export variables, print status and exit - if (found) - foreach (i ${configopts}) - mark_as_advanced(${i}) - endforeach() - if (NOT quiet) - message(STATUS "Found ${PREFIX} ${${PREFIX}_VERSION}") - if (LIBFIND_DEBUG) - message(STATUS " ${PREFIX}_DEPENDENCIES=${${PREFIX}_DEPENDENCIES}") - message(STATUS " ${PREFIX}_INCLUDE_OPTS=${includeopts}") - message(STATUS " ${PREFIX}_INCLUDE_DIRS=${includes}") - message(STATUS " ${PREFIX}_LIBRARY_OPTS=${libraryopts}") - message(STATUS " ${PREFIX}_LIBRARIES=${libs}") - endif() - set (${PREFIX}_INCLUDE_OPTS ${includeopts} PARENT_SCOPE) - set (${PREFIX}_LIBRARY_OPTS ${libraryopts} PARENT_SCOPE) - set (${PREFIX}_INCLUDE_DIRS ${includes} PARENT_SCOPE) - set (${PREFIX}_LIBRARIES ${libs} PARENT_SCOPE) - set (${PREFIX}_FOUND TRUE PARENT_SCOPE) - endif() - return() - endif() - - # Format messages for debug info and the type of error - set(vars "Relevant CMake configuration variables:\n") - foreach (i ${configopts}) - mark_as_advanced(CLEAR ${i}) - set(val ${${i}}) - if ("${val}" STREQUAL "${i}-NOTFOUND") - set (val "") - elseif (val AND NOT EXISTS ${val}) - set (val "${val} (does not exist)") - else() - set(some_files TRUE) - endif() - set(vars "${vars} ${i}=${val}\n") - endforeach() - set(vars "${vars}You may use CMake GUI, cmake -D or ccmake to modify the values. Delete CMakeCache.txt to discard all values and force full re-detection if necessary.\n") - if (version_unsuitable) - set(msg "${PREFIX} ${${PREFIX}_VERSION} was found but") - if (exactver) - set(msg "${msg} only version ${findver} is acceptable.") - else() - set(msg "${msg} version ${findver} is the minimum requirement.") - endif() - else() - if (missing_headers) - set(msg "We could not find development headers for ${PREFIX}. Do you have the necessary dev package installed?") - elseif (some_files) - set(msg "We only found some files of ${PREFIX}, not all of them. Perhaps your installation is incomplete or maybe we just didn't look in the right place?") - if(findver) - set(msg "${msg} This could also be caused by incompatible version (if it helps, at least ${PREFIX} ${findver} should work).") - endif() - else() - set(msg "We were unable to find package ${PREFIX}.") - endif() - endif() - - # Fatal error out if REQUIRED - if (required) - set(msg "REQUIRED PACKAGE NOT FOUND\n${msg} This package is REQUIRED and you need to install it or adjust CMake configuration in order to continue building ${CMAKE_PROJECT_NAME}.") - message(FATAL_ERROR "${msg}\n${vars}") - endif() - # Otherwise just print a nasty warning - if (NOT quiet) - message(WARNING "WARNING: MISSING PACKAGE\n${msg} This package is NOT REQUIRED and you may ignore this warning but by doing so you may miss some functionality of ${CMAKE_PROJECT_NAME}. \n${vars}") - endif() -endfunction() diff --git a/cmake/modules/bin2h.cmake b/cmake/modules/bin2h.cmake deleted file mode 100644 index b838650f32..0000000000 --- a/cmake/modules/bin2h.cmake +++ /dev/null @@ -1,89 +0,0 @@ -# Source: https://gist.github.com/sivachandran/3a0de157dccef822a230#file-bin2h-cmake -# Added modifications to suit prusaslicer -include(CMakeParseArguments) - -# Function to wrap a given string into multiple lines at the given column position. -# Parameters: -# VARIABLE - The name of the CMake variable holding the string. -# AT_COLUMN - The column position at which string will be wrapped. -function(WRAP_STRING) - set(oneValueArgs VARIABLE AT_COLUMN) - cmake_parse_arguments(WRAP_STRING "${options}" "${oneValueArgs}" "" ${ARGN}) - - string(LENGTH ${${WRAP_STRING_VARIABLE}} stringLength) - math(EXPR offset "0") - - while(stringLength GREATER 0) - - if(stringLength GREATER ${WRAP_STRING_AT_COLUMN}) - math(EXPR length "${WRAP_STRING_AT_COLUMN}") - else() - math(EXPR length "${stringLength}") - endif() - - string(SUBSTRING ${${WRAP_STRING_VARIABLE}} ${offset} ${length} line) - set(lines "${lines}\n${line}") - - math(EXPR stringLength "${stringLength} - ${length}") - math(EXPR offset "${offset} + ${length}") - endwhile() - - set(${WRAP_STRING_VARIABLE} "${lines}" PARENT_SCOPE) -endfunction() - -# Function to embed contents of a file as byte array in C/C++ header file(.h). The header file -# will contain a byte array and integer variable holding the size of the array. -# Parameters -# SOURCE_FILE - The path of source file whose contents will be embedded in the header file. -# VARIABLE_NAME - The name of the variable for the byte array. The string "_SIZE" will be append -# to this name and will be used a variable name for size variable. -# HEADER_FILE - The path of header file. -# APPEND - If specified appends to the header file instead of overwriting it -# NULL_TERMINATE - If specified a null byte(zero) will be append to the byte array. This will be -# useful if the source file is a text file and we want to use the file contents -# as string. But the size variable holds size of the byte array without this -# null byte. -# Usage: -# bin2h(SOURCE_FILE "Logo.png" HEADER_FILE "Logo.h" VARIABLE_NAME "LOGO_PNG") -function(BIN2H) - set(options APPEND NULL_TERMINATE ADD_WARNING_TEXT) - set(oneValueArgs SOURCE_FILE VARIABLE_NAME HEADER_FILE) - cmake_parse_arguments(BIN2H "${options}" "${oneValueArgs}" "" ${ARGN}) - - # reads source file contents as hex string - file(READ ${BIN2H_SOURCE_FILE} hexString HEX) - string(LENGTH ${hexString} hexStringLength) - - # appends null byte if asked - if(BIN2H_NULL_TERMINATE) - set(hexString "${hexString}00") - endif() - - # wraps the hex string into multiple lines at column 32(i.e. 16 bytes per line) - wrap_string(VARIABLE hexString AT_COLUMN 32) - math(EXPR arraySize "${hexStringLength} / 2") - - # adds '0x' prefix and comma suffix before and after every byte respectively - string(REGEX REPLACE "([0-9a-f][0-9a-f])" "0x\\1, " arrayValues ${hexString}) - # removes trailing comma - string(REGEX REPLACE ", $" "" arrayValues ${arrayValues}) - - # converts the variable name into proper C identifier - string(MAKE_C_IDENTIFIER "${BIN2H_VARIABLE_NAME}" BIN2H_VARIABLE_NAME) - # string(TOUPPER "${BIN2H_VARIABLE_NAME}" BIN2H_VARIABLE_NAME) - - # declares byte array and the length variables - set(arrayDefinition "const unsigned char ${BIN2H_VARIABLE_NAME}[] = { ${arrayValues} };") - set(arraySizeDefinition "const size_t ${BIN2H_VARIABLE_NAME}_SIZE = ${arraySize};") - set(warnTxt "") - if (BIN2H_ADD_WARNING_TEXT) - set(warnTxt "/* WARN: This file is auto-generated from ${BIN2H_SOURCE_FILE} */\n") - endif () - - set(declarations "${warnTxt}${arrayDefinition}\n\n${arraySizeDefinition}\n\n") - if(BIN2H_APPEND) - file(APPEND ${BIN2H_HEADER_FILE} "${declarations}") - else() - file(WRITE ${BIN2H_HEADER_FILE} "${declarations}") - endif() -endfunction() \ No newline at end of file diff --git a/deps/python3/01-windows-nuget.patch b/deps/python3/01-windows-nuget.patch deleted file mode 100644 index a3b8439779..0000000000 --- a/deps/python3/01-windows-nuget.patch +++ /dev/null @@ -1,71 +0,0 @@ -From b32e63f75046d186d93ee7d627c978f2f7c892f3 Mon Sep 17 00:00:00 2001 -From: Steve Dower -Date: Fri, 10 Jul 2026 14:04:00 +0100 -Subject: [PATCH] [3.13] gh-153438: Update NuGet download URL (GH-153482) - (GH-153515) - -gh-153438: Update NuGet download URL (GH-153482) -(cherry picked from commit 106eb532ea3b243423e62a702719e9d3c0e40c16) -(cherry picked from commit 62eb50d65d538dda5164f9c4a097a896454a0d1c) - -Co-authored-by: Steve Dower -Co-authored-by: Harjoth Khara ---- - Doc/using/windows.rst | 6 +++--- - .../Build/2026-07-09-22-45-00.gh-issue-153438.Qr7N2p.rst | 2 ++ - PCbuild/find_python.bat | 2 +- - Tools/msi/get_externals.bat | 2 +- - 4 files changed, 7 insertions(+), 5 deletions(-) - create mode 100644 Misc/NEWS.d/next/Build/2026-07-09-22-45-00.gh-issue-153438.Qr7N2p.rst - -diff --git a/Doc/using/windows.rst b/Doc/using/windows.rst -index 2a507675044666..4800789ca2d6cc 100644 ---- a/Doc/using/windows.rst -+++ b/Doc/using/windows.rst -@@ -414,9 +414,9 @@ on using nuget. What follows is a summary that is sufficient for Python - developers. - - The ``nuget.exe`` command line tool may be downloaded directly from --``https://aka.ms/nugetclidl``, for example, using curl or PowerShell. With the --tool, the latest version of Python for 64-bit or 32-bit machines is installed --using:: -+``https://dist.nuget.org/win-x86-commandline/latest/nuget.exe``, for example, -+using curl or PowerShell. With the tool, the latest version of Python for -+64-bit or 32-bit machines is installed using:: - - nuget.exe install python -ExcludeVersion -OutputDirectory . - nuget.exe install pythonx86 -ExcludeVersion -OutputDirectory . -diff --git a/Misc/NEWS.d/next/Build/2026-07-09-22-45-00.gh-issue-153438.Qr7N2p.rst b/Misc/NEWS.d/next/Build/2026-07-09-22-45-00.gh-issue-153438.Qr7N2p.rst -new file mode 100644 -index 00000000000000..edab8e6ba7b259 ---- /dev/null -+++ b/Misc/NEWS.d/next/Build/2026-07-09-22-45-00.gh-issue-153438.Qr7N2p.rst -@@ -0,0 +1,2 @@ -+Update Windows build and installer tooling and documentation to use the -+current download URL for ``nuget.exe``. -diff --git a/PCbuild/find_python.bat b/PCbuild/find_python.bat -index 0af367a3efafad..9612a2860ef9c3 100644 ---- a/PCbuild/find_python.bat -+++ b/PCbuild/find_python.bat -@@ -52,7 +52,7 @@ - @set _Py_HOST_PYTHON=%HOST_PYTHON% - @if "%_Py_HOST_PYTHON%"=="" set _Py_HOST_PYTHON=py - @if "%_Py_NUGET%"=="" (set _Py_NUGET=%_Py_EXTERNALS_DIR%\nuget.exe) --@if "%_Py_NUGET_URL%"=="" (set _Py_NUGET_URL=https://aka.ms/nugetclidl) -+@if "%_Py_NUGET_URL%"=="" (set _Py_NUGET_URL=https://dist.nuget.org/win-x86-commandline/latest/nuget.exe) - @if NOT exist "%_Py_NUGET%" ( - @if not "%_Py_Quiet%"=="1" @echo Downloading nuget... - @rem NB: Must use single quotes around NUGET here, NOT double! -diff --git a/Tools/msi/get_externals.bat b/Tools/msi/get_externals.bat -index f6602ce9588ff4..c7c7e9f470bc25 100644 ---- a/Tools/msi/get_externals.bat -+++ b/Tools/msi/get_externals.bat -@@ -6,7 +6,7 @@ set HERE=%~dp0 - if "%PCBUILD%"=="" (set PCBUILD=%HERE%..\..\PCbuild\) - if "%EXTERNALS_DIR%"=="" (set EXTERNALS_DIR=%HERE%..\..\externals\windows-installer) - if "%NUGET%"=="" (set NUGET=%EXTERNALS_DIR%\..\nuget.exe) --if "%NUGET_URL%"=="" (set NUGET_URL=https://aka.ms/nugetclidl) -+if "%NUGET_URL%"=="" (set NUGET_URL=https://dist.nuget.org/win-x86-commandline/latest/nuget.exe) - - set DO_FETCH=true - set DO_CLEAN=false diff --git a/deps/python3/python3.cmake b/deps/python3/python3.cmake index b0415f2bb5..f520c536d5 100644 --- a/deps/python3/python3.cmake +++ b/deps/python3/python3.cmake @@ -8,20 +8,45 @@ set(_python_url "https://www.python.org/ftp/python/${_python_version}/Python-${_ set(_python_sha256 "c08bc65a81971c1dd5783182826503369466c7e67374d1646519adf05207b684") -set(_patch_cmd "") if(WIN32) - - # Fix python build failure on Windows if python is not available, due to wrong nuget download URL - # See https://github.com/python/cpython/issues/153438 - # Patch from https://github.com/python/cpython/pull/153608 - # This patch has not been merged to 3.12 yet so we need to apply it manually - # - # Without core.autocrlf=false the patched find_python.bat comes out LF and - # cmd.exe cannot find its goto labels. - set(_patch_cmd git init - && ${GIT_EXECUTABLE} -c core.autocrlf=false apply --verbose - --ignore-space-change --whitespace=fix - ${CMAKE_CURRENT_LIST_DIR}/01-windows-nuget.patch) + # Build-time Python for PCbuild's scripts, pinned because 3.15 cannot run the 3.12 scripts. + set(DEP_PYTHON_HOST "" CACHE FILEPATH + "Python 3.10-3.13 that runs CPython's build scripts; empty downloads a pinned one from nuget.org") + if(DEP_PYTHON_HOST) + execute_process( + COMMAND "${DEP_PYTHON_HOST}" -E -c "import sys; print('%d.%d' % sys.version_info[:2])" + OUTPUT_VARIABLE _python_host_minor + OUTPUT_STRIP_TRAILING_WHITESPACE + RESULT_VARIABLE _python_host_result + ) + if(NOT _python_host_result EQUAL 0 OR _python_host_minor VERSION_LESS 3.10 OR _python_host_minor VERSION_GREATER 3.13) + message(FATAL_ERROR "DEP_PYTHON_HOST must be Python 3.10 to 3.13, got '${_python_host_minor}' from ${DEP_PYTHON_HOST}") + endif() + file(TO_NATIVE_PATH "${DEP_PYTHON_HOST}" _python_host) + else() + set(_python_host_version "3.13.16") + if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "ARM64|aarch64") + set(_python_host_package pythonarm64) + set(_python_host_sha256 bfd77aa5b0edff4a7936a3220e8b79e7c78f864ce13e8fa2c835d9946e11694a) + else() + set(_python_host_package pythonx86) + set(_python_host_sha256 c65cf47664b33286dfc5f2a17303668dd59e057869815ed9b270fb3866c1dd15) + endif() + set(_python_host_dir "${CMAKE_CURRENT_BINARY_DIR}/dep_python3_host-prefix/src/dep_python3_host") + ExternalProject_Add(dep_python3_host + URL "https://api.nuget.org/v3-flatcontainer/${_python_host_package}/${_python_host_version}/${_python_host_package}.${_python_host_version}.nupkg" + URL_HASH SHA256=${_python_host_sha256} + DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/python3 + # Renames the .nupkg to .zip so ExternalProject extracts it. + DOWNLOAD_NAME ${_python_host_package}.${_python_host_version}.zip + SOURCE_DIR "${_python_host_dir}" + CONFIGURE_COMMAND "" + BUILD_COMMAND "" + INSTALL_COMMAND "" + ) + file(TO_NATIVE_PATH "${_python_host_dir}/tools/python.exe" _python_host) + set(_python_depends dep_python3_host) + endif() if(MSVC_VERSION EQUAL 1800) set(_python_platform_toolset v120) @@ -63,6 +88,47 @@ if(WIN32) # release python3xx.lib; Py_DEBUG could not load release plugin modules. set(_python_pcbuild_config Release) + # CPython's own libraries, fetched here instead of by get_externals.bat, which ignores failed + # downloads. Must match PCbuild/get_externals.bat for _python_version. + set(_python_externals + # repo folder commit sha256 of the archive + source-deps bzip2-1.0.8 05301997b2f9590f49c672cf3dfd3d3dfa7ad521 44b15bede52b32f8673a2976621a847258b041243c003e30f4d9a05214785fe5 + source-deps sqlite-3.49.1.0 cb7a3997059739fe9c63b2819aeda7c6907510ef 586fe469463f5b27b749f9eef1938baa8e8a12030341e96160a371356c2d6759 + source-deps xz-5.2.5 c6bc0c612605622aaef101a33a751f9de2ecc193 d99882a8f9fd48be0e605e27e3c077e5eaab370f6f52ebcc8ff754480ffdf0bc + source-deps zlib-1.3.1 4dc98e1909830e2bdc2a9cc2236e3c5d5037335b 39d867c083ebc37c77cf03a442f87c0f83db006eb64343bd4a19f1c84c26f50c + bin-deps libffi-3.4.4 94cb9a1c7feb608adf2b9f8fe2dbd6925ffbf90d 6b0f53490e0dd958708bff32df689cf2163c214147fcb8edb76a403fa6a877ca + bin-deps openssl-bin-3.0.16.2 1174fd43d858425c345b16d631716fb98ba492ea b741fd1411a36cb899fee2c39b70a4492f4bc1c6e2301d67df32e9754118a63b + ) + set(_python_externals_dir "${CMAKE_CURRENT_BINARY_DIR}/dep_python3_externals") + list(LENGTH _python_externals _python_externals_len) + math(EXPR _python_externals_last "${_python_externals_len} - 1") + foreach(_i RANGE 0 ${_python_externals_last} 4) + math(EXPR _j "${_i} + 1") + math(EXPR _k "${_i} + 2") + math(EXPR _l "${_i} + 3") + list(GET _python_externals ${_i} _ext_repo) + list(GET _python_externals ${_j} _ext_name) + list(GET _python_externals ${_k} _ext_commit) + list(GET _python_externals ${_l} _ext_sha256) + ExternalProject_Add(dep_python3_ext_${_ext_name} + URL "https://github.com/python/cpython-${_ext_repo}/archive/${_ext_commit}.zip" + URL_HASH SHA256=${_ext_sha256} + DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/python3 + DOWNLOAD_NAME cpython-${_ext_repo}-${_ext_name}.zip + SOURCE_DIR "${_python_externals_dir}/${_ext_name}" + CONFIGURE_COMMAND "" + BUILD_COMMAND "" + INSTALL_COMMAND "" + ) + list(APPEND _python_depends dep_python3_ext_${_ext_name}) + endforeach() + file(TO_NATIVE_PATH "${_python_externals_dir}" _python_externals_native) + + # PCbuild runs PYTHON without -E, so PYTHONHOME and PYTHONPATH are cleared. + set(_python_env_args --unset=PYTHONHOME --unset=PYTHONPATH "PYTHON=${_python_host}" + "EXTERNALS_DIR=${_python_externals_native}" + "GIT_CEILING_DIRECTORIES=/..") + # CPython's PCbuild needs a 64-bit-hosted toolchain: find_msbuild.bat picks the # 32-bit Bin\MSBuild.exe, whose x86 cl.exe/link.exe run out of address space # (fatal C1002 "out of heap space") building the LTCG-optimized pythoncore. @@ -71,7 +137,6 @@ if(WIN32) # then hosts arm64 tools on its own; the amd64 MSBuild still defaults to x86, so # PreferredToolArchitecture pins it to x64. Scoped to this build step, so # CPython's own sources stay untouched. - set(_python_env_args "GIT_CEILING_DIRECTORIES=/..") if(CMAKE_GENERATOR_INSTANCE) # empty for non-VS generators (e.g. Ninja) set(_python_msbuild "${CMAKE_GENERATOR_INSTANCE}/MSBuild/Current/Bin/${_python_msbuild_host}/MSBuild.exe") if(EXISTS "${_python_msbuild}") @@ -284,12 +349,12 @@ endif() ExternalProject_Add(dep_python3 URL "${_python_url}" URL_HASH SHA256=${_python_sha256} - PATCH_COMMAND ${_patch_cmd} DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/python3 BUILD_IN_SOURCE ON CONFIGURE_COMMAND ${_conf_cmd} BUILD_COMMAND ${_build_cmd} INSTALL_COMMAND ${_install_cmd} + DEPENDS ${_python_depends} ) # Python depends on OpenSSL and ZLIB diff --git a/docs/HLSD/focus-mode.md b/docs/HLSD/focus-mode.md new file mode 100644 index 0000000000..d877286251 --- /dev/null +++ b/docs/HLSD/focus-mode.md @@ -0,0 +1,66 @@ +# Focus mode (hiding inactive plates) — High Level Design + +## Purpose and scope + +"Focus mode" is an entry of the canvas menu in the bottom left corner of Prepare. Turned on (eye +lit), the 3D view hides the inactive plates and shows the current plate alone, so a project with +many plates can be worked on one plate at a time. Turned off, every plate is shown. It is a view +setting: it changes nothing in the model, the slice or the project file, and it does not reach +plate thumbnails. The choice is kept in the app config as `focus_mode`, off by default. + +Preview needs no such option, as it already draws the current plate alone and has its own plate +toolbar. The assembly view and the Design tab do not lay objects out on plates, so the entry is +disabled there. + +## What is shown + +The current plate is drawn with its bed, label and icons; the other plates are not drawn at all. The +world axes, which Prepare draws at the corner of the first plate, move to the corner of the current +plate, where Preview draws them. + +An object instance is shown when its footprint, the XY bounding box of the convex hulls of its +volumes, overlaps the current plate, or when it is selected. The test is made per instance, so the +parts of an object are shown or hidden together, and a wipe tower follows its plate the same way. +It is geometric rather than the plate membership `PartPlateList` keeps, because an instance stays on +the plate it was first placed on: an object of another plate that reaches over this one, or one too +large for any plate, would otherwise be invisible while it takes room on the current plate. A +selected instance stays visible so that what a selection or a gizmo acts on is never hidden, for +instance an object picked in the object list on another plate. + +## Hiding + +A hidden object is neither drawn nor picked. `GLCanvas3D::_update_inactive_plates_visibility()` +runs at the start of each frame of Prepare. It clears `GLVolume::is_active` on the volumes of the +hidden instances and deactivates their raycasters, which every render pass, the hover and rectangle +selection, the shadow and center of mass markers already respect. It also deactivates the raycasters +of the other plates, whose icons would otherwise still take clicks where nothing is drawn. The state +persists between frames, so the raycasts made while handling the mouse, such as the anchor of a pan, +see the same scene as the frame. + +Other features clear `is_active` too: gizmos hide the objects they do not edit and show them all +again when they close. `GLVolume::on_hidden_plate` records which volumes this update hid, so it only +shows again what it hid itself, and it waits for a gizmo that hides objects to close before doing +so. A volume another feature made active again is hidden again on the next frame. While Focus mode +is off and nothing is left hidden, the update returns at once. + +## Switching plates + +The other plates cannot be clicked while Focus mode hides them, so a compact counterpart of the Preview +plate toolbar takes their place: a column of plate thumbnails in the top left corner, below the top +toolbar, shown when the project has more than one plate and no gizmo is open. The thumbnails are the +ones the Preview toolbar shows (`PartPlate::thumbnail_data`); the canvas rebuilds its textures when +`Plater::plate_toolbar_image_version()` changes, a counter each consumer tracks on its own so that the +Preview toolbar's dirty flag is left alone. That counter moves after almost every edit, so the +thumbnail of the current plate, the only one edited while the others are hidden, is drawn again each +time, and the other plates' only once an edit to them has invalidated theirs. The current plate has an +accent border, a hovered one the gray border of the Preview toolbar, empty plates are dimmed and the +plate number sits in the corner; the tooltip gives the plate name. A click selects the plate and +clears the selection, as a click on a plate row of the object list does. The column scrolls when it +does not fit above the 3D navigator or the canvas toolbar. Its scrollbar works as the Preview +toolbar's, with which it shares its style: it shows only while the mouse is over the column or drags +the bar, and the mouse wheel scrolls the column either way. + +Whatever selects a plate while the others are hidden, the camera moves its target over the new plate +and keeps its angle, distance and height (`PartPlateList::select_plate()`), so the plate comes into +view where the previous one was. A zoom to all plates, as after loading a project or adding a plate, +frames the current plate instead. Turning Focus mode on does the same, so the current plate fills the view. diff --git a/docs/HLSD/multiline-infill.md b/docs/HLSD/multiline-infill.md index 2f68fe3ef9..b3b46d0fd7 100644 --- a/docs/HLSD/multiline-infill.md +++ b/docs/HLSD/multiline-infill.md @@ -15,8 +15,9 @@ Outlines of centerlines that cross each other overlap at every crossing, which over-extrudes the wall intersections. The line-crossing patterns Grid, Triangles, Tri-hexagon and Cubic therefore build centerlines that never cross (`FillRectilinear::fill_surface_trapezoidal()`), and so do Adaptive Cubic and -Support Cubic (`FillAdaptive`); the other patterns outline their usual -centerlines. +Support Cubic (`FillAdaptive`). 3D Honeycomb skips `multiline_fill()` and draws +its N lines itself as parallel copies of each wave, which never cross +(`Fill3DHoneycomb`). The other patterns outline their usual centerlines. ## Non-crossing centerlines diff --git a/docs/HLSD/tooltip-illustrations.md b/docs/HLSD/tooltip-illustrations.md new file mode 100644 index 0000000000..dc52e9ac93 --- /dev/null +++ b/docs/HLSD/tooltip-illustrations.md @@ -0,0 +1,131 @@ +# Tooltip illustrations + +The texture-displacement panel's tooltips can carry a picture under their text: a still image, or a +short animation that loops while the tooltip is open. Several settings in that panel describe a shape +rather than a number - what Rotation turns, what Tile repeats, what Invert turns inside out - and a +sentence about a shape is read twice and understood once. + +## Where a tooltip is drawn + +`GLGizmoTextureDisplacement::panel_tooltip()` replaces `ImGuiWrapper::tooltip()` throughout the panel. +It differs in two ways. + +It places the tooltip beside the panel instead of under the mouse. The panel is pinned to the right +edge of the canvas, so a tooltip following the mouse covers the control it is explaining, and one +carrying a picture covers most of the panel with it. The tooltip goes to the left of +`m_tooltip_anchor_min`/`_max` - the panel's own screen rectangle, or the texture picker's while that +popup is up and the tooltip comes from inside it - and to the right only when there is no room on the +left. This is the placement the picker popup itself already uses. + +ImGui normally keeps a tooltip glued to the mouse and ignores `SetNextWindowPos()`. Orca's imgui +branch honours a position set for a tooltip (see the `ImGuiWindowFlags_Tooltip` branch of `Begin()` in +`deps_src/imgui/imgui.cpp`) and still clamps the result inside the canvas, which is what keeps a tall +tooltip near the bottom edge on screen. + +It also gives the tooltip a fixed width rather than one derived from its text, because a picture has +to be laid out against something, and a column of tooltips that are all one width is steadier to read. + +## Where the pictures live + +`resources/images/texture_displacement/`, as PNG, JPG, BMP or GIF. A tooltip names them by file: + +```cpp +hover_tip(_u8L("Repeats the texture across the painted area. ..."), + { { "tile_off.png", _L("Off") }, { "tile_on.png", _L("On") } }); +``` + +Several in one tooltip are laid out side by side at equal widths, which is how a setting is shown as a +comparison - the same model at two values of it. The caption under each is translated; the file name +is not. + +A file that is missing or will not decode is skipped, and a tooltip whose pictures are all missing is +exactly the text tooltip it was before. So the art for a tooltip can land after the tooltip does, and +a half-finished set never breaks the panel. + +## When a tooltip appears + +A tooltip waits for the pointer to rest on its control for 0.45 s. The panel is dense and the tooltip +lands on the model beside it, so with no wait a sweep from the top of the panel down to Bake flashes a +dozen large panels over the scene. Once one has just been up, the wait drops to 0.1 s for 0.7 s +afterwards, so reading several settings in a row stays quick - but not to zero, or that same sweep +would flash again the moment one tooltip had been seen. + +No tooltip appears at all while a control is being used - a slider dragged, a value typed into one, a +combo open, a layer card being dragged. The pointer sits on the very thing being edited, so a tooltip +there covers the model exactly while the user is watching it change. The full wait comes back +afterwards rather than the short one: having just let go of a slider is not a reason to be shown a +picture of it. + +A pointer resting on a control produces no events, and the canvas only renders when something asks it +to, so the wait has to ask for its own frames, and so does an animation once one is on screen. So does +a tooltip that has just appeared, animated or not: ImGui hides a window on the first frame it is +submitted while it measures it, and does so every time a tooltip reappears because those windows are +recycled, so the frame a tooltip is decided on is never the frame it is seen on. Both use +`GLCanvas3D::request_extra_frame()`, which ends `on_idle()` with `evt.RequestMore()` and so obliges wx +to deliver the next idle. `schedule_extra_frame()` is not enough on its own: it only arranges a timer +whose event an idle event is assumed to follow, and on_idle renders nothing unless the canvas was +already dirty when it ran. Asking for frames as fast as they come is safe here because which frame is +drawn comes from the clock, not from the frame count, so a redraw that arrives early simply draws the +same frame again. + +## Decoding and playback + +`slic3r/GUI/AnimatedTexture.hpp` decodes a file once and uploads one GL texture per frame. Stills go +through `wxImage`; GIFs go through `wxGIFDecoder`, whose raw palette indices are composited here frame +by frame, replaying the disposal method each frame asks for. That replay is what makes an animation +look continuous: a GIF frame is a sub-rectangle drawn over what came before it, so an animation that +only re-sends the pixels that changed draws as a flicker of disconnected patches without it. + +A frame delay of 0 or 1 hundredths of a second is read as 100 ms, the convention browsers settle on, +so an animation authored against that plays at the speed it was authored at. + +The animation restarts when its tooltip opens, rather than running off a free-running clock: these are +short loops of one setting going from one value to another, and joining one halfway through shows the +end of a change the user never saw the start of. + +Which frame is drawn is measured on a real clock, not `ImGui::GetTime()`. Nothing in OrcaSlicer ever sets +`io.DeltaTime`, so it keeps imgui's default of 1/60 per frame and imgui's clock counts frames rather +than seconds. On a canvas that renders only when asked, that is not a clock at all: an animation driven +by it crawls while the canvas is idle and races while a moving mouse is rendering it flat out. + +## Making one + +`scripts/gen_texture_displacement_tips.py` draws the lot, in four languages, picked by what the +setting actually is: + +- **A shaded relief**, for the settings that are about a pattern: Depth, Tile, Tile size, Rotation, + Repeat/Mirror, Smoothing, Edge fade, Invert, Blend and the Normal, Fast, Checker and Distortion + views. One motif - a ring inside a square frame - runs through all of them, because using one shape + everywhere is what lets two pictures be compared: whatever differs between them is the setting, + since nothing else is. +- **A flat mesh of triangles**, for the settings that are about the mesh or about a tool: the paint + tools, brush size, the connected-area fill, subdivision, feature-adaptive refinement, remeshing, + hard edges, slivers and the wireframe view. These carry the one accent colour in the set, meaning + "painted", because that is the only thing in such a picture that is not geometry. +- **A section**, for Midlevel and for smoothing the geometry. The reason generalises: shading reads + slopes, so a height field moved up or down as a whole shades identically to where it started, and + any setting whose meaning is *where the surface sits relative to where it was* is invisible from + above and has to be drawn from the side. +- **A flat ramp of greys**, for Mix filaments, Mixed colors and Denoise. Those are about which + filament a spot ends up as; lighting one would only add a second thing changing between two + pictures meant to differ in one. + +The five Mapping pictures are one ball with a checker laid on it five ways, which is the whole of what +choosing a projection does - except Unwrap, which is not a projection onto the model at all and so is +drawn as the flat layout it produces. + +Captures of the real tool are still the first choice for anything involving a real model or real +filament colour: Bake, the mixed-colour count on a photograph, Adjust placement, the frame window and +the UV editor's seam tool have no picture yet for that reason. + +Either way: + +- Square, around 256 px (192 for an animation, where every frame ships). The tooltip is about 20 em + wide, so that is roughly native size on a 100% display and downscales cleanly above it. A single + picture is capped at 10 em tall and centred, two side by side take half the width each. +- Neutral grey. These say what a shape does; colour in one reads as a third thing the setting does, + and has to work against both themes. +- Animations loop seamlessly and stay short - 16 frames at 100 ms, under about 150 KB. They sit in + `resources/`, which ships with every copy of the application. A sweep driven by a cosine over the + frame count loops with no step, since it starts and ends at the same value and the same rate. +- No text in the picture. Captions are translated; pixels are not. diff --git a/localization/i18n/OrcaSlicer.pot b/localization/i18n/OrcaSlicer.pot index eb533cc49e..6cb9c11d4c 100644 --- a/localization/i18n/OrcaSlicer.pot +++ b/localization/i18n/OrcaSlicer.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-10-13 09:55-0300\n" +"POT-Creation-Date: 2026-10-14 10:04-0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -2248,6 +2248,48 @@ msgstr "" msgid "Privacy Policy Update" msgstr "" +msgid "All your filament presets are available on the printers they were made for." +msgstr "" + +msgid "Migrate Filament Presets" +msgstr "" + +msgid "" +"OrcaSlicer 2.5.0 restructured many system filament presets to fix incorrect profiles and prepare for future features. As a result, the presets below no longer show on some printers they were made for. Sorry for the trouble; this is a one-time fix.\n" +"\n" +"Add those printers back to your presets now? Your presets are backed up first. You can also do this later from Help > Migrate Filament Presets." +msgstr "" + +#, possible-boost-format +msgid "%1% (based on %2%)" +msgstr "" + +msgid "Don't remind me again" +msgstr "" + +msgid "Your presets could not be backed up, so they were not migrated." +msgstr "" + +msgid "The user presets folder could not be locked, so nothing was migrated. Another OrcaSlicer instance may be saving presets; try again later from Help > Migrate Filament Presets." +msgstr "" + +#, possible-boost-format +msgid "" +"Your filament presets could not be migrated. A backup of your presets was saved to:\n" +"%1%" +msgstr "" + +#, possible-boost-format +msgid "" +"Your filament presets were migrated. Select them again in the filament list where you used them.\n" +"\n" +"A backup of your presets was saved to:\n" +"%1%" +msgstr "" + +msgid "These presets could not be migrated:" +msgstr "" + #, possible-c-format, possible-boost-format msgid "your Orca Cloud profile (user ID: \"%s\")" msgstr "" @@ -2919,6 +2961,48 @@ msgstr "" msgid "Center" msgstr "" +msgid "Distribute left-right" +msgstr "" + +msgid "Distribute front-back" +msgstr "" + +msgid "Distribute top-bottom" +msgstr "" + +msgid "Align left" +msgstr "" + +msgid "Align left-right center" +msgstr "" + +msgid "Align right" +msgstr "" + +msgid "Align front" +msgstr "" + +msgid "Align front-back center" +msgstr "" + +msgid "Align back" +msgstr "" + +msgid "Align bottom" +msgstr "" + +msgid "Align top-bottom center" +msgstr "" + +msgid "Align top" +msgstr "" + +msgid "Align/Distribute" +msgstr "" + +msgid "Align and distribute objects" +msgstr "" + msgid "Drop" msgstr "" @@ -6147,6 +6231,9 @@ msgstr "" msgid "Show Configuration Folder" msgstr "" +msgid "Bring back filament presets that a profile update removed from printers they were made for" +msgstr "" + msgid "Troubleshoot Center" msgstr "" @@ -13538,7 +13625,7 @@ msgid "" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" -"If set to 0, the line width will match the Internal solid infill width." +"If set to 0, the line width will match the Internal solid infill width, or the nozzle diameter for thick bridges." msgstr "" msgid "Internal bridge flow ratio" @@ -13766,7 +13853,7 @@ msgid "" "3. If artifacts still appear, enable Extrusion Rate Smoothing (ERS) to further smooth the flow transitions.\n" "\n" "Note: When this option is enabled, overhang perimeters are treated like overhangs, meaning the overhang speed is applied even if the overhanging perimeter is part of a bridge.\n" -"For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 100% overhang speed will be applied." +"For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 75% overhang speed will be applied, limited by the bridge speed." msgstr "" msgid "mm/s or %" @@ -13775,7 +13862,7 @@ msgstr "" msgid "" "Speed of the externally visible bridge extrusions.\n" "\n" -"In addition, if Slow down for curled perimeters is disabled or Classic overhang mode is enabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." +"In addition, if Slow down for curled perimeters is disabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." msgstr "" msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%." @@ -14224,7 +14311,7 @@ msgstr "" msgid "Small perimeters" msgstr "" -msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above. Set to zero for auto." +msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above." msgstr "" msgid "Small perimeters threshold" @@ -14236,7 +14323,7 @@ msgstr "" msgid "Small support perimeters" msgstr "" -msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above. Set to zero for auto." +msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above." msgstr "" msgid "Small support perimeters threshold" @@ -14253,7 +14340,7 @@ msgid "" "\n" "Use Inner/Outer for best overhangs. This is because the overhanging walls can adhere to a neighbouring perimeter while printing. However, this option results in slightly reduced surface quality as the external perimeter is deformed by being squashed to the internal perimeter.\n" "\n" -"Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended against the Outer/Inner option in most cases.\n" +"Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended over the Outer/Inner option in most cases.\n" "\n" "Use Outer/Inner for the same external wall quality and dimensional accuracy benefits of Inner/Outer/Inner option. However, the Z seams will appear less consistent as the first extrusion of a new layer starts on a visible surface." msgstr "" @@ -15077,13 +15164,13 @@ msgstr "" msgid "Height of the first layer. Making the first layer height thicker can improve build plate adhesion." msgstr "" -msgid "This is the speed for the first layer except for solid infill sections." +msgid "This is the speed for the walls and brim of the first layer." msgstr "" msgid "First layer infill" msgstr "" -msgid "This is the speed for solid infill parts of the first layer." +msgid "This is the speed for the first layer except for walls and brim, such as infill, gap fill and support." msgstr "" msgid "First layer travel speed" @@ -15702,14 +15789,14 @@ msgid "Infill/wall overlap" msgstr "" #, no-c-format, no-boost-format -msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to line width of sparse infill. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." +msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to the inner wall line width. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." msgstr "" msgid "Top/Bottom solid infill/wall overlap" msgstr "" #, no-c-format, no-boost-format -msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to line width of sparse infill." +msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to the inner wall line width." msgstr "" msgid "This is the speed for internal sparse infill." @@ -15736,7 +15823,7 @@ msgstr "" msgid "Interlocking depth of a segmented region" msgstr "" -msgid "Interlocking depth of a segmented region. It will be ignored if \"mmu_segmented_region_max_width\" is zero or if \"mmu_segmented_region_interlocking_depth\" is bigger than \"mmu_segmented_region_max_width\". Zero disables this feature." +msgid "Interlocking depth of a segmented region. On every other layer, the segmented region is limited to this depth. It will be ignored if \"interlocking_beam\" is enabled. Zero disables this feature." msgstr "" msgid "Use beam interlocking" @@ -15840,7 +15927,7 @@ msgstr "" msgid "" "Reduce the height of top-surface perimeters to match the model edge height.\n" -"Affects perimeters with a slope less than this angle (degrees).\n" +"Affects perimeters with a slope greater than this angle (degrees).\n" "A reasonable value is 35. Set to 0 to disable." msgstr "" @@ -16716,7 +16803,7 @@ msgstr "" msgid "Use scarf joint for inner walls as well." msgstr "" -msgid "Role base wipe speed" +msgid "Role based wipe speed" msgstr "" msgid "The wipe speed is determined by the speed of the current extrusion role. e.g. if a wipe action is executed immediately following an outer wall extrusion, the speed of the outer wall extrusion will be utilized for the wipe action." @@ -16794,8 +16881,7 @@ msgstr "" msgid "" "A draft shield is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft. It is usually needed only with open frame printers, i.e. without an enclosure.\n" "\n" -"Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used.\n" -"Note: With the draft shield active, the skirt will be printed at skirt distance from the object. Therefore, if brims are active it may intersect with them. To avoid this, increase the skirt distance value.\n" +"Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used." msgstr "" msgid "Enabled" @@ -17775,13 +17861,13 @@ msgstr "" msgid "" "The maximum print speed when purging in the wipe tower and printing the wipe tower sparse layers. When purging, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" "\n" -"When printing the sparse layers, if the internal perimeter speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +"When printing the sparse layers, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" "\n" "Increasing this speed may affect the tower's stability as well as increase the force with which the nozzle collides with any blobs that may have formed on the wipe tower.\n" "\n" "Before increasing this parameter beyond the default of 90 mm/s, make sure your printer can reliably bridge at the increased speeds and that ooze when tool changing is well controlled.\n" "\n" -"For the wipe tower external perimeters the internal perimeter speed is used regardless of this setting." +"For the wipe tower external perimeters the internal perimeter speed is used, also limited by this setting." msgstr "" msgid "Wall type" @@ -17789,9 +17875,9 @@ msgstr "" msgid "" "Wipe tower outer wall type.\n" -"1. Rectangle: The default wall type, a rectangle with fixed width and height.\n" +"1. Rectangle: A rectangle with fixed width and height.\n" "2. Cone: A cone with a fillet at the bottom to help stabilize the wipe tower.\n" -"3. Rib: Adds four ribs to the tower wall for enhanced stability." +"3. Rib: The default wall type, which adds four ribs to the tower wall for enhanced stability." msgstr "" msgid "Rectangle" @@ -17881,7 +17967,7 @@ msgstr "" msgid "Extra flow for purging" msgstr "" -msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker or narrower than they normally would be. The spacing is adjusted automatically." +msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker than they normally would be. The spacing is adjusted automatically." msgstr "" msgid "Idle temperature" @@ -17992,9 +18078,9 @@ msgid "Minimum wall length" msgstr "" msgid "" -"Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. Higher values remove more and longer walls.\n" +"Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. The value is a multiple of the wall width. Higher values remove more and longer walls.\n" "\n" -"NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the Advanced settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." +"NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the 'Walls and surfaces' settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." msgstr "" msgid "Maximum wall resolution" @@ -21454,9 +21540,6 @@ msgstr "" msgid "File Saving" msgstr "" -msgid "Don't remind me again" -msgstr "" - msgid "No further pop-up will appear. You can reopen it in 'Preferences'" msgstr "" diff --git a/localization/i18n/ca/OrcaSlicer_ca.po b/localization/i18n/ca/OrcaSlicer_ca.po index a05b4811ef..90354b66dc 100644 --- a/localization/i18n/ca/OrcaSlicer_ca.po +++ b/localization/i18n/ca/OrcaSlicer_ca.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-10-13 09:55-0300\n" +"POT-Creation-Date: 2026-10-14 10:04-0300\n" "PO-Revision-Date: 2025-03-15 10:55+0100\n" "Last-Translator: \n" "Language-Team: \n" @@ -2484,6 +2484,66 @@ msgstr "Restricció del connector de xarxa" msgid "Privacy Policy Update" msgstr "Actualització de la política de privadesa" +# AI Translated +msgid "All your filament presets are available on the printers they were made for." +msgstr "Tots els vostres perfils de filament estan disponibles a les impressores per a les quals es van crear." + +# AI Translated +msgid "Migrate Filament Presets" +msgstr "Migrar els perfils de filament" + +# AI Translated +msgid "" +"OrcaSlicer 2.5.0 restructured many system filament presets to fix incorrect profiles and prepare for future features. As a result, the presets below no longer show on some printers they were made for. Sorry for the trouble; this is a one-time fix.\n" +"\n" +"Add those printers back to your presets now? Your presets are backed up first. You can also do this later from Help > Migrate Filament Presets." +msgstr "" +"OrcaSlicer 2.5.0 ha reestructurat molts perfils de filament del sistema per corregir perfils incorrectes i preparar funcions futures. Com a resultat, els perfils següents ja no apareixen en algunes de les impressores per a les quals es van crear. Disculpeu les molèsties; és una correcció única.\n" +"\n" +"Voleu tornar a afegir aquestes impressores als vostres perfils ara? Abans es farà una còpia de seguretat dels vostres perfils. També podeu fer-ho més tard des d'Ajuda > Migrar els perfils de filament." + +# AI Translated +#, boost-format +msgid "%1% (based on %2%)" +msgstr "%1% (basat en %2%)" + +msgid "Don't remind me again" +msgstr "No m'ho recordis més" + +# AI Translated +msgid "Your presets could not be backed up, so they were not migrated." +msgstr "No s'ha pogut fer una còpia de seguretat dels vostres perfils, de manera que no s'han migrat." + +# AI Translated +msgid "The user presets folder could not be locked, so nothing was migrated. Another OrcaSlicer instance may be saving presets; try again later from Help > Migrate Filament Presets." +msgstr "No s'ha pogut bloquejar la carpeta de perfils d'usuari, de manera que no s'ha migrat res. Pot ser que una altra instància d'OrcaSlicer estigui desant perfils; torneu-ho a provar més tard des d'Ajuda > Migrar els perfils de filament." + +# AI Translated +#, boost-format +msgid "" +"Your filament presets could not be migrated. A backup of your presets was saved to:\n" +"%1%" +msgstr "" +"No s'han pogut migrar els vostres perfils de filament. S'ha desat una còpia de seguretat dels vostres perfils a:\n" +"%1%" + +# AI Translated +#, boost-format +msgid "" +"Your filament presets were migrated. Select them again in the filament list where you used them.\n" +"\n" +"A backup of your presets was saved to:\n" +"%1%" +msgstr "" +"S'han migrat els vostres perfils de filament. Torneu-los a seleccionar a la llista de filaments on els utilitzàveu.\n" +"\n" +"S'ha desat una còpia de seguretat dels vostres perfils a:\n" +"%1%" + +# AI Translated +msgid "These presets could not be migrated:" +msgstr "No s'han pogut migrar aquests perfils:" + # AI Translated #, c-format, boost-format msgid "your Orca Cloud profile (user ID: \"%s\")" @@ -3217,6 +3277,62 @@ msgstr "(Color perdut)" msgid "Center" msgstr "Centre" +# AI Translated +msgid "Distribute left-right" +msgstr "Distribuir esquerra-dreta" + +# AI Translated +msgid "Distribute front-back" +msgstr "Distribuir davant-darrere" + +# AI Translated +msgid "Distribute top-bottom" +msgstr "Distribuir dalt-baix" + +# AI Translated +msgid "Align left" +msgstr "Alinear a l'esquerra" + +# AI Translated +msgid "Align left-right center" +msgstr "Alinear al centre esquerra-dreta" + +# AI Translated +msgid "Align right" +msgstr "Alinear a la dreta" + +# AI Translated +msgid "Align front" +msgstr "Alinear al davant" + +# AI Translated +msgid "Align front-back center" +msgstr "Alinear al centre davant-darrere" + +# AI Translated +msgid "Align back" +msgstr "Alinear al darrere" + +# AI Translated +msgid "Align bottom" +msgstr "Alinear a baix" + +# AI Translated +msgid "Align top-bottom center" +msgstr "Alinear al centre dalt-baix" + +# AI Translated +msgid "Align top" +msgstr "Alinear a dalt" + +# AI Translated +msgid "Align/Distribute" +msgstr "Alinear/Distribuir" + +# AI Translated +msgid "Align and distribute objects" +msgstr "Alinear i distribuir objectes" + msgid "Drop" msgstr "Deixar anar" @@ -5334,8 +5450,9 @@ msgstr "Pausa (coberta frontal despresa)" msgid "Calibrating the micro lidar" msgstr "Calibrant el micro lidar" +# AI Translated msgid "Calibrating flow ratio" -msgstr "Calibrant proporció de flux" +msgstr "Calibrant la relació de flux" msgid "Pause (nozzle temperature malfunction)" msgstr "Pausa (mal funcionament de temperatura del broquet)" @@ -6739,6 +6856,10 @@ msgstr "Assistent per a la instal·lació" msgid "Show Configuration Folder" msgstr "Mostra la Carpeta Configuració" +# AI Translated +msgid "Bring back filament presets that a profile update removed from printers they were made for" +msgstr "Recupereu els perfils de filament que una actualització de perfils ha eliminat de les impressores per a les quals es van crear" + # AI Translated msgid "Troubleshoot Center" msgstr "Centre de resolució de problemes" @@ -14161,6 +14282,18 @@ msgstr "diverses interseccions amb un perímetre, només se n'ha utilitzat una ( msgid "a perimeter is fully inside a modifier, the modifier was not applied to it (%1%)" msgstr "un perímetre és completament dins d'un modificador; el modificador no s'hi ha aplicat (%1%)" +# AI Translated +#. TRN: %1% is the modifier type "Seam Blocked" as in the menu, %2% the modifier name, %3% the object name. +#, boost-format +msgid "%1% modifier \"%2%\" of \"%3%\" covers an entire perimeter" +msgstr "El modificador %1% \"%2%\" de \"%3%\" cobreix un perímetre sencer" + +# AI Translated +#. TRN: %1% is the modifier type "Seam Blocked" as in the menu, %2% the modifier name, %3% the object name, %4% the number of modifiers. +#, boost-format +msgid "%1% modifier \"%2%\" of \"%3%\" (%4% in total) covers an entire perimeter" +msgstr "El modificador %1% \"%2%\" de \"%3%\" (%4% en total) cobreix un perímetre sencer" + # AI Translated #, boost-format msgid "modifier \"%1%\" of \"%2%\" had no effect on the seam (it might not reach the centerline of the printed perimeter)" @@ -15162,8 +15295,9 @@ msgstr "" "\n" "Aquesta opció funciona especialment bé combinada amb l'opció de segon pont intern sobre el farciment, per millorar encara més els ponts abans d'extrudir el farciment sòlid." +# AI Translated msgid "Bridge flow ratio" -msgstr "Ratio de flux del pont" +msgstr "Relació de flux del pont" # AI Translated msgid "" @@ -15185,16 +15319,17 @@ msgid "" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" -"If set to 0, the line width will match the Internal solid infill width." +"If set to 0, the line width will match the Internal solid infill width, or the nozzle diameter for thick bridges." msgstr "" -"Amplada de línia del Pont. Si s'expressa en %, es calcularà sobre el diàmetre del broquet.\n" -"Es recomana utilitzar-la amb una densitat de Pont o una relació de flux del Pont més altes.\n" +"Amplada de línia del pont. Si s'expressa en %, es calcularà sobre el diàmetre del broquet.\n" +"Es recomana utilitzar-la amb una densitat de pont o una relació de flux del pont més altes.\n" "\n" "El valor màxim és el 100% o el diàmetre del broquet.\n" -"Si s'estableix a 0, l'amplada de línia coincidirà amb l'amplada del farciment sòlid intern." +"Si s'estableix a 0, l'amplada de línia coincidirà amb l'amplada del farciment sòlid intern, o amb el diàmetre del broquet en els ponts gruixuts." +# AI Translated msgid "Internal bridge flow ratio" -msgstr "Ratio de flux del pont intern" +msgstr "Relació de flux del pont intern" # AI Translated msgid "" @@ -15210,8 +15345,9 @@ msgstr "" "\n" "El flux de pont real utilitzat es calcula multiplicant aquest valor per la relació de flux del filament i, si està establerta, per la relació de flux de l'objecte." +# AI Translated msgid "Top surface flow ratio" -msgstr "Ratio de flux superficial superior" +msgstr "Relació de flux superficial superior" msgid "" "This factor affects the amount of material for top solid infill. You can decrease it slightly to have smooth surface finish.\n" @@ -15222,8 +15358,9 @@ msgstr "" "\n" "El flux real de la superfície superior s'utilitza calculant la multiplicació d'aquest valor amb la relació de flux del filament i, si està configurada, la relació de flux de l'objecte." +# AI Translated msgid "Bottom surface flow ratio" -msgstr "Ratio de flux superficial inferior" +msgstr "Relació de flux superficial inferior" msgid "" "This factor affects the amount of material for bottom solid infill.\n" @@ -15234,15 +15371,19 @@ msgstr "" "\n" "El cabal de farciment sòlid inferior real utilitzat es calcula multiplicant aquest valor per la relació de flux de filament i, si s'estableix, la relació de flux de l'objecte." +# AI Translated msgid "Set other flow ratios" -msgstr "Estableix altres proporcions de flux" +msgstr "Estableix altres relacions de flux" +# AI Translated msgid "Change flow ratios for other extrusion path types." -msgstr "Canvia les proporcions de flux per a altres tipus de camí d'extrusió." +msgstr "Canvia les relacions de flux per a altres tipus de camí d'extrusió." +# AI Translated msgid "First layer flow ratio" -msgstr "Proporció de flux de la primera capa" +msgstr "Relació de flux de la primera capa" +# AI Translated msgid "" "This factor affects the amount of material on the first layer for the extrusion path roles listed in this section.\n" "\n" @@ -15250,11 +15391,13 @@ msgid "" msgstr "" "Aquest factor afecta la quantitat de material a la primera capa per als rols de camí d'extrusió llistats en aquesta secció.\n" "\n" -"Per a la primera capa, la proporció de flux real per a cada rol de camí (no afecta vores i faldilles) es multiplicarà per aquest valor." +"Per a la primera capa, la relació de flux real per a cada rol de camí (no afecta vores i faldilles) es multiplicarà per aquest valor." +# AI Translated msgid "Outer wall flow ratio" -msgstr "Proporció de flux de la paret exterior" +msgstr "Relació de flux de la paret exterior" +# AI Translated msgid "" "This factor affects the amount of material for outer walls.\n" "\n" @@ -15262,11 +15405,13 @@ msgid "" msgstr "" "Aquest factor afecta la quantitat de material per a les parets exteriors.\n" "\n" -"El flux real de la paret exterior es calcula multiplicant aquest valor per la proporció de flux del filament i, si està establert, per la proporció de flux de l'objecte." +"El flux real de la paret exterior es calcula multiplicant aquest valor per la relació de flux del filament i, si està establerta, per la relació de flux de l'objecte." +# AI Translated msgid "Inner wall flow ratio" -msgstr "Proporció de flux de la paret interior" +msgstr "Relació de flux de la paret interior" +# AI Translated msgid "" "This factor affects the amount of material for inner walls.\n" "\n" @@ -15274,11 +15419,13 @@ msgid "" msgstr "" "Aquest factor afecta la quantitat de material per a les parets interiors.\n" "\n" -"El flux real de la paret interior es calcula multiplicant aquest valor per la proporció de flux del filament i, si està establert, per la proporció de flux de l'objecte." +"El flux real de la paret interior es calcula multiplicant aquest valor per la relació de flux del filament i, si està establerta, per la relació de flux de l'objecte." +# AI Translated msgid "Overhang flow ratio" -msgstr "Proporció de flux per a voladissos" +msgstr "Relació de flux per a voladissos" +# AI Translated msgid "" "This factor affects the amount of material for overhangs.\n" "\n" @@ -15286,11 +15433,13 @@ msgid "" msgstr "" "Aquest factor afecta la quantitat de material per als voladissos.\n" "\n" -"El flux real dels voladissos es calcula multiplicant aquest valor per la proporció de flux del filament i, si està establert, per la proporció de flux de l'objecte." +"El flux real dels voladissos es calcula multiplicant aquest valor per la relació de flux del filament i, si està establerta, per la relació de flux de l'objecte." +# AI Translated msgid "Sparse infill flow ratio" -msgstr "Proporció de flux del farciment dispers" +msgstr "Relació de flux del farciment dispers" +# AI Translated msgid "" "This factor affects the amount of material for sparse infill.\n" "\n" @@ -15298,11 +15447,13 @@ msgid "" msgstr "" "Aquest factor afecta la quantitat de material per al farciment dispers.\n" "\n" -"El flux real del farciment dispers es calcula multiplicant aquest valor per la proporció de flux del filament i, si està establert, per la proporció de flux de l'objecte." +"El flux real del farciment dispers es calcula multiplicant aquest valor per la relació de flux del filament i, si està establerta, per la relació de flux de l'objecte." +# AI Translated msgid "Internal solid infill flow ratio" -msgstr "Proporció de flux del farciment sòlid intern" +msgstr "Relació de flux del farciment sòlid intern" +# AI Translated msgid "" "This factor affects the amount of material for internal solid infill.\n" "\n" @@ -15310,11 +15461,13 @@ msgid "" msgstr "" "Aquest factor afecta la quantitat de material per al farciment sòlid intern.\n" "\n" -"El flux real del farciment sòlid intern es calcula multiplicant aquest valor per la proporció de flux del filament i, si està establert, per la proporció de flux de l'objecte." +"El flux real del farciment sòlid intern es calcula multiplicant aquest valor per la relació de flux del filament i, si està establerta, per la relació de flux de l'objecte." +# AI Translated msgid "Gap fill flow ratio" -msgstr "Proporció de flux del farciment d'espais" +msgstr "Relació de flux del farciment d'espais" +# AI Translated msgid "" "This factor affects the amount of material for filling the gaps.\n" "\n" @@ -15322,11 +15475,13 @@ msgid "" msgstr "" "Aquest factor afecta la quantitat de material per al farciment d'espais.\n" "\n" -"El flux real del farciment d'espais es calcula multiplicant aquest valor per la proporció de flux del filament i, si està establert, per la proporció de flux de l'objecte." +"El flux real del farciment d'espais es calcula multiplicant aquest valor per la relació de flux del filament i, si està establerta, per la relació de flux de l'objecte." +# AI Translated msgid "Support flow ratio" -msgstr "Proporció de flux del suport" +msgstr "Relació de flux del suport" +# AI Translated msgid "" "This factor affects the amount of material for support.\n" "\n" @@ -15334,11 +15489,13 @@ msgid "" msgstr "" "Aquest factor afecta la quantitat de material per al suport.\n" "\n" -"El flux real del suport es calcula multiplicant aquest valor per la proporció de flux del filament i, si està establert, per la proporció de flux de l'objecte." +"El flux real del suport es calcula multiplicant aquest valor per la relació de flux del filament i, si està establerta, per la relació de flux de l'objecte." +# AI Translated msgid "Support interface flow ratio" -msgstr "Proporció de flux de la interfície de suport" +msgstr "Relació de flux de la interfície de suport" +# AI Translated msgid "" "This factor affects the amount of material for the support interface.\n" "\n" @@ -15346,7 +15503,7 @@ msgid "" msgstr "" "Aquest factor afecta la quantitat de material per a la interfície de suport.\n" "\n" -"El flux real de la interfície de suport es calcula multiplicant aquest valor per la proporció de flux del filament i, si està establert, per la proporció de flux de l'objecte." +"El flux real de la interfície de suport es calcula multiplicant aquest valor per la relació de flux del filament i, si està establerta, per la relació de flux de l'objecte." msgid "Precise wall" msgstr "Perímetre precís" @@ -15476,10 +15633,10 @@ msgid "" "3. If artifacts still appear, enable Extrusion Rate Smoothing (ERS) to further smooth the flow transitions.\n" "\n" "Note: When this option is enabled, overhang perimeters are treated like overhangs, meaning the overhang speed is applied even if the overhanging perimeter is part of a bridge.\n" -"For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 100% overhang speed will be applied." +"For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 75% overhang speed will be applied, limited by the bridge speed." msgstr "" "Activeu aquesta opció per alentir la impressió en àrees on els perímetres s'hagin pogut corbar cap amunt.\n" -"Per exemple, s'aplicarà una alentiment addicional en imprimir voladissos en cantonades pronunciades, com ara la proa del casc del Benchy, cosa que redueix el corbament que s'acumula al llarg de diverses capes.\n" +"Per exemple, s'aplicarà un alentiment addicional en imprimir voladissos en cantonades pronunciades, com ara la proa del casc del Benchy, cosa que redueix el corbament que s'acumula al llarg de diverses capes.\n" "\n" "En general es recomana tenir aquesta opció activada, tret que la refrigeració de la impressora sigui prou potent o la velocitat d'impressió prou baixa com perquè no es produeixi corbament dels perímetres. \n" "Si s'imprimeix amb una velocitat alta de perímetre exterior, aquest paràmetre pot introduir defectes als perímetres en alentir, a causa de la variació potencialment gran de velocitats d'impressió, que fa que l'extrusor no pugui seguir el canvi de flux sol·licitat.\n" @@ -15488,22 +15645,23 @@ msgstr "" "Recomanacions en activar aquesta opció:\n" "1. Reduïu el temps de suavitzat de Pressure Advance a 0,015 - 0,02 perquè l'extrusor reaccioni ràpidament als canvis de velocitat.\n" "2. Augmenteu les velocitats d'impressió mínimes per limitar la magnitud de l'alentiment i reduir la variació entre segments ràpids i lents.\n" -"3. Si encara apareixen defectes, activeu el Suavitzat del Ritme d'Extrusió (ERS) per suavitzar encara més les transicions de flux.\n" +"3. Si encara apareixen defectes, activeu el Suavitzat de la velocitat d'extrusió (ERS) per suavitzar encara més les transicions de flux.\n" "\n" "Nota: quan aquesta opció està activada, els perímetres de voladís es tracten com a voladissos, cosa que vol dir que s'aplica la velocitat de voladís fins i tot si el perímetre en voladís forma part d'un pont.\n" -"Per exemple, quan els perímetres estan en voladís al 100%, sense cap perímetre que els aguanti per sota, s'aplicarà la velocitat de voladís del 100%." +"Per exemple, quan els perímetres estan en voladís al 100%, sense cap perímetre que els aguanti per sota, s'aplicarà la velocitat de voladís del 75%, limitada per la velocitat de pont." msgid "mm/s or %" msgstr "mm/s o %" +# AI Translated msgid "" "Speed of the externally visible bridge extrusions.\n" "\n" -"In addition, if Slow down for curled perimeters is disabled or Classic overhang mode is enabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." +"In addition, if Slow down for curled perimeters is disabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." msgstr "" "Velocitat de les extrusions del pont visibles externament.\n" "\n" -"A més, si l'opció de Reduir la velocitat per als perímetres corbats està desactivada o el mode clàssic de voladís està activat, aquesta serà la velocitat d'impressió per a les parets de voladís que estan suportades per menys del 13%, ja sigui que formin part d'un pont o d'un voladís." +"A més, si l'opció \"Alentir la velocitat per a perímetres corbats\" està desactivada, aquesta serà la velocitat d'impressió per a les parets de voladís que estan suportades per menys del 13%, ja sigui que formin part d'un pont o d'un voladís." msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%." msgstr "Velocitat dels ponts interns. Si el valor s'expressa com un percentatge, es calcularà en funció de la velocitat del pont (bridge_speed). El valor per defecte és del 150%." @@ -16080,8 +16238,9 @@ msgstr "Velocitat del perímetre més exterior i visible. S'utilitza per ser mé msgid "Small perimeters" msgstr "Petits perímetres" -msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above. Set to zero for auto." -msgstr "Aquest ajustament independent afectarà la velocitat dels perímetres amb radi <= small_perimeter_threshold ( normalment orificis ). Si s'expressa com a percentatge ( per exemple: 80% ) es calcula sobre l'ajustament de velocitat del perímetre exterior anterior. Poseu-lo a zero per automàtic." +# AI Translated +msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above." +msgstr "Aquest ajustament independent afectarà la velocitat dels perímetres amb radi <= small_perimeter_threshold (normalment orificis). Si s'expressa com a percentatge (per exemple: 80%) es calcula sobre l'ajustament de velocitat del perímetre exterior anterior." msgid "Small perimeters threshold" msgstr "Llindar de perímetres petits" @@ -16094,8 +16253,8 @@ msgid "Small support perimeters" msgstr "Petits perímetres de suport" # AI Translated -msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above. Set to zero for auto." -msgstr "Igual que \"Petits perímetres\", però per als suports. Aquest ajustament separat afectarà la velocitat del suport en àrees <= `small_support_perimeter_threshold`. Si s'expressa com a percentatge (per exemple: 80%), es calcularà sobre l'ajustament anterior de velocitat de suport o d'interfície de suport. Establiu-ho a zero per a automàtic." +msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above." +msgstr "Igual que \"Petits perímetres\", però per als suports. Aquest ajustament separat afectarà la velocitat del suport en àrees <= `small_support_perimeter_threshold`. Si s'expressa com a percentatge (per exemple: 80%), es calcularà sobre l'ajustament anterior de velocitat de suport o d'interfície de suport." # AI Translated msgid "Small support perimeters threshold" @@ -16108,23 +16267,23 @@ msgstr "Estableix el llindar per a la longitud dels petits perímetres de suport msgid "Walls printing order" msgstr "Ordre d'impressió de perímetres" +# AI Translated msgid "" "Print sequence of the internal (inner) and external (outer) walls.\n" "\n" "Use Inner/Outer for best overhangs. This is because the overhanging walls can adhere to a neighbouring perimeter while printing. However, this option results in slightly reduced surface quality as the external perimeter is deformed by being squashed to the internal perimeter.\n" "\n" -"Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended against the Outer/Inner option in most cases.\n" +"Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended over the Outer/Inner option in most cases.\n" "\n" "Use Outer/Inner for the same external wall quality and dimensional accuracy benefits of Inner/Outer/Inner option. However, the Z seams will appear less consistent as the first extrusion of a new layer starts on a visible surface." msgstr "" -"Seqüència d'impressió de les parets interiors (interiors) i exteriors (exteriors).\n" +"Seqüència d'impressió dels perímetres interiors i exteriors.\n" "\n" -"Utilitzeu Interior / Exterior per a millors voladissos. Això es deu al fet que les parets que sobresurten poden adherir-se a un perímetre veí durant la impressió. No obstant això, aquesta opció resulta en una qualitat superficial lleugerament reduïda, ja que el perímetre extern es deforma en ser aixafat al perímetre intern.\n" +"Utilitzeu Interior/Exterior per obtenir els millors voladissos. Això es deu al fet que els perímetres en voladís poden adherir-se a un perímetre veí durant la impressió. No obstant això, aquesta opció resulta en una qualitat superficial lleugerament reduïda, ja que el perímetre exterior es deforma en ser aixafat contra el perímetre interior.\n" "\n" -"Utilitzeu Interior / Exterior / Interior per obtenir el millor acabat de la superfície externa i precisió dimensional, ja que la paret externa s'imprimeix sense molèsties des d'un perímetre intern. Tanmateix, el rendiment del voladís es reduirà, ja que no hi ha un perímetre intern per imprimir la paret externa. Aquesta opció requereix un mínim de 3 parets per ser efectiva, ja que imprimeix primer les parets interiors a partir del 3r\n" -" perímetre, després el perímetre extern i, finalment, el primer perímetre intern. Aquesta opció es recomana contra l'opció Exterior/Interior en la majoria dels casos.\n" +"Utilitzeu Interior/Exterior/Interior per obtenir el millor acabat de la superfície exterior i la millor precisió dimensional, ja que el perímetre exterior s'imprimeix sense cap pertorbació des d'un perímetre interior. Tanmateix, el rendiment dels voladissos es reduirà, ja que no hi ha cap perímetre interior contra el qual imprimir el perímetre exterior. Aquesta opció requereix un mínim de 3 perímetres per ser efectiva, ja que imprimeix primer els perímetres interiors a partir del 3r perímetre, després el perímetre exterior i, finalment, el primer perímetre interior. En la majoria dels casos, es recomana aquesta opció en lloc de l'opció Exterior/Interior.\n" "\n" -"Utilitzeu Exterior / Interior per obtenir la mateixa qualitat de paret externa i els mateixos avantatges de precisió dimensional de l'opció Interior / Exterior / Interior. Tanmateix, les costures z semblaran menys consistents a mesura que comenci la primera extrusió d'una nova capa en una superfície visible." +"Utilitzeu Exterior/Interior per obtenir la mateixa qualitat del perímetre exterior i els mateixos avantatges de precisió dimensional que l'opció Interior/Exterior/Interior. Tanmateix, les costures Z semblaran menys consistents, ja que la primera extrusió d'una capa nova comença en una superfície visible." msgid "Inner/Outer" msgstr "Interior/Exterior" @@ -17081,14 +17240,16 @@ msgstr "Alçada de la capa inicial" msgid "Height of the first layer. Making the first layer height thicker can improve build plate adhesion." msgstr "Alçada de la capa inicial. Fer que l'alçada inicial de la capa sigui lleugerament més gruixuda pot millorar l'adherència de la placa d'impressió" -msgid "This is the speed for the first layer except for solid infill sections." -msgstr "Velocitat de la capa inicial excepte la part de farciment sòlid" +# AI Translated +msgid "This is the speed for the walls and brim of the first layer." +msgstr "Velocitat dels perímetres i de la vora d'adherència de la capa inicial." msgid "First layer infill" msgstr "Farciment de la capa inicial" -msgid "This is the speed for solid infill parts of the first layer." -msgstr "Velocitat de farciment sòlid de la capa inicial" +# AI Translated +msgid "This is the speed for the first layer except for walls and brim, such as infill, gap fill and support." +msgstr "Velocitat de la capa inicial, excepte els perímetres i la vora d'adherència, com ara el farciment, el farciment de buits i els suports." msgid "First layer travel speed" msgstr "Velocitat de desplaçament de la capa inicial" @@ -17802,16 +17963,18 @@ msgstr "Amplada de línia de farciment poc dens intern. Si s'expressa en %, es c msgid "Infill/wall overlap" msgstr "Superposició de farciment/perímetre" +# AI Translated #, no-c-format, no-boost-format -msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to line width of sparse infill. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." -msgstr "L'àrea de farciment s'amplia lleugerament per superposar-se amb la paret per a una millor unió. El valor percentual és relatiu a l'amplada de línia de farciment poc dens. Establiu aquest valor a ~ 10-15% per minimitzar la potencial sobreextrusió i acumulació de material que resulti en superfícies superiors rugoses." +msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to the inner wall line width. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." +msgstr "L'àrea de farciment s'amplia lleugerament per superposar-se amb la paret per a una millor unió. El valor percentual és relatiu a l'amplada de línia del perímetre interior. Establiu aquest valor a ~ 10-15% per minimitzar la potencial sobreextrusió i acumulació de material que resulti en superfícies superiors rugoses." msgid "Top/Bottom solid infill/wall overlap" msgstr "Farciment superposat a paret superior/inferior\"" +# AI Translated #, no-c-format, no-boost-format -msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to line width of sparse infill." -msgstr "L'àrea de farciment sòlida superior s'amplia lleugerament per superposar-se a la paret per a una millor unió i per minimitzar l'aparició de forats on l'ompliment superior es troba amb les parets. Un valor de 25-30% is és un bon punt de partida, minimitzant l'aparició de forats. El valor percentual és relatiu a l'amplada de línia de l'emplenament escàs" +msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to the inner wall line width." +msgstr "L'àrea de farciment sòlid superior s'amplia lleugerament per superposar-se a la paret per a una millor unió i per minimitzar l'aparició de forats on el farciment superior es troba amb les parets. Un valor de 25-30% és un bon punt de partida, minimitzant l'aparició de forats. El valor percentual és relatiu a l'amplada de línia del perímetre interior." msgid "This is the speed for internal sparse infill." msgstr "Velocitat de farciment poc dens intern" @@ -17837,8 +18000,9 @@ msgstr "Amplada màxima d'una regió segmentada. El zero desactiva aquesta funci msgid "Interlocking depth of a segmented region" msgstr "Profunditat d'entrellaçament d'una regió segmentada" -msgid "Interlocking depth of a segmented region. It will be ignored if \"mmu_segmented_region_max_width\" is zero or if \"mmu_segmented_region_interlocking_depth\" is bigger than \"mmu_segmented_region_max_width\". Zero disables this feature." -msgstr "Profunditat d'enclavament d'una regió segmentada. S'ignorarà si \"mmu_segmented_region_max_width\" és zero o si \"mmu_segmented_region_interlocking_depth\" és més gran que \"mmu_segmented_region_max_width\". Zero desactiva aquesta funció." +# AI Translated +msgid "Interlocking depth of a segmented region. On every other layer, the segmented region is limited to this depth. It will be ignored if \"interlocking_beam\" is enabled. Zero disables this feature." +msgstr "Profunditat d'entrellaçament d'una regió segmentada. En una de cada dues capes, la regió segmentada es limita a aquesta profunditat. S'ignorarà si \"interlocking_beam\" està activat. Zero desactiva aquesta funció." msgid "Use beam interlocking" msgstr "Utilitzar feixos d'entrellaçament" @@ -17947,11 +18111,11 @@ msgstr "Angle per minimitzar l'alçada del perímetre" # AI Translated msgid "" "Reduce the height of top-surface perimeters to match the model edge height.\n" -"Affects perimeters with a slope less than this angle (degrees).\n" +"Affects perimeters with a slope greater than this angle (degrees).\n" "A reasonable value is 35. Set to 0 to disable." msgstr "" "Redueix l'alçada dels perímetres de la superfície superior perquè coincideixi amb l'alçada de la vora del model.\n" -"Afecta els perímetres amb un pendent inferior a aquest angle (graus).\n" +"Afecta els perímetres amb un pendent superior a aquest angle (graus).\n" "Un valor raonable és 35. Establiu-ho a 0 per desactivar-ho." # AI Translated @@ -18958,7 +19122,8 @@ msgstr "Unió en Bisell per a parets interiors" msgid "Use scarf joint for inner walls as well." msgstr "Utilitzar també l'Unió en Bisell per a les parets interiors." -msgid "Role base wipe speed" +# AI Translated +msgid "Role based wipe speed" msgstr "Velocitat de neteja basada en l'acció" msgid "The wipe speed is determined by the speed of the current extrusion role. e.g. if a wipe action is executed immediately following an outer wall extrusion, the speed of the outer wall extrusion will be utilized for the wipe action." @@ -19048,14 +19213,15 @@ msgstr "Limita els bucles de la faldilla/escudo protector a una paret després d msgid "Draft shield" msgstr "Escut contra corrents d'aire" +# AI Translated msgid "" "A draft shield is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft. It is usually needed only with open frame printers, i.e. without an enclosure.\n" "\n" -"Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used.\n" -"Note: With the draft shield active, the skirt will be printed at skirt distance from the object. Therefore, if brims are active it may intersect with them. To avoid this, increase the skirt distance value.\n" +"Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used." msgstr "" -"Activat = la faldilla és tan alta com l'objecte imprès més alt. En cas contrari, s'utilitza \"Alçada de la faldilla\".\n" -"Nota: amb l'escut de corrent actiu, la faldilla s'imprimirà a una distància de la faldilla de l'objecte. Per tant, si les vores estan actives, es pot creuar amb elles. Per evitar-ho, augmenta el valor de la distància de la faldilla.\n" +"Un escut contra corrents d'aire és útil per protegir una impressió d'ABS o ASA de la deformació i del despreniment del llit d'impressió a causa dels corrents d'aire. Normalment només cal en impressores de bastidor obert, és a dir, sense carcassa.\n" +"\n" +"Activat = la faldilla és tan alta com l'objecte imprès més alt. En cas contrari, s'utilitza \"Alçada de la faldilla\"." msgid "Enabled" msgstr "Habilitat" @@ -20210,40 +20376,42 @@ msgstr "Angle del vèrtex del con que s'utilitza per estabilitzar la Torre de Pu msgid "Maximum wipe tower print speed" msgstr "Velocitat màxima d'impressió de la torre de purga" +# AI Translated msgid "" "The maximum print speed when purging in the wipe tower and printing the wipe tower sparse layers. When purging, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" "\n" -"When printing the sparse layers, if the internal perimeter speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +"When printing the sparse layers, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" "\n" "Increasing this speed may affect the tower's stability as well as increase the force with which the nozzle collides with any blobs that may have formed on the wipe tower.\n" "\n" "Before increasing this parameter beyond the default of 90 mm/s, make sure your printer can reliably bridge at the increased speeds and that ooze when tool changing is well controlled.\n" "\n" -"For the wipe tower external perimeters the internal perimeter speed is used regardless of this setting." +"For the wipe tower external perimeters the internal perimeter speed is used, also limited by this setting." msgstr "" "La velocitat màxima d'impressió en purgar a la torre de purga i imprimir a la torre de purga capes poc denses. En la purga, si la velocitat de farciment poc dens o la velocitat calculada de la màxima velocitat volumètrica del filament és menor, s'utilitzarà la més baixa.\n" "\n" -"En imprimir les capes poc denses, si la velocitat perimetral interna o la velocitat calculada de la màxima velocitat volumètrica del filament és menor, s'utilitzarà la més baixa.\n" +"En imprimir les capes poc denses, si la velocitat de farciment poc dens o la velocitat calculada de la màxima velocitat volumètrica del filament és menor, s'utilitzarà la més baixa.\n" "\n" "L'augment d'aquesta velocitat pot afectar l'estabilitat de la torre, així com augmentar la força amb què el broquet xoca amb els grumolls que s'hagin pogut formar a la torre de purga.\n" "\n" -"Abans d'augmentar aquest paràmetre més enllà del valor per defecte de 90 mm/segon, assegureu-vos que la impressora pugui fer un pont de manera fiable a les velocitats augmentades i que el degoteig quan es produeixi el canvi d'eina estigui ben controlat.\n" +"Abans d'augmentar aquest paràmetre més enllà del valor per defecte de 90 mm/s, assegureu-vos que la impressora pugui fer un pont de manera fiable a les velocitats augmentades i que el degoteig quan es produeixi el canvi d'eina estigui ben controlat.\n" "\n" -"Per als perímetres externs de la torre de purga, s'utilitza la velocitat perimetral interna independentment d'aquesta configuració." +"Per als perímetres exteriors de la torre de purga, s'utilitza la velocitat del perímetre interior, també limitada per aquesta configuració." msgid "Wall type" msgstr "Tipus de paret" +# AI Translated msgid "" "Wipe tower outer wall type.\n" -"1. Rectangle: The default wall type, a rectangle with fixed width and height.\n" +"1. Rectangle: A rectangle with fixed width and height.\n" "2. Cone: A cone with a fillet at the bottom to help stabilize the wipe tower.\n" -"3. Rib: Adds four ribs to the tower wall for enhanced stability." +"3. Rib: The default wall type, which adds four ribs to the tower wall for enhanced stability." msgstr "" -"Tipus de paret exterior de la torre de purga.\n" -"1. Rectangle: el tipus de paret predeterminat, un rectangle amb amplada i alçada fixes.\n" +"Tipus de perímetre exterior de la torre de purga.\n" +"1. Rectangle: un rectangle amb amplada i alçada fixes.\n" "2. Con: un con amb arrodoniment a la base per ajudar a estabilitzar la torre de purga.\n" -"3. Nervi: afegeix quatre nervis a la paret de la torre per a una estabilitat millorada." +"3. Nervi: el tipus de paret predeterminat, que afegeix quatre nervis a la paret de la torre per a una estabilitat millorada." # AI Translated msgid "Rectangle" @@ -20335,8 +20503,9 @@ msgstr "Espaiat de les línies de purga de la Torre de Purga." msgid "Extra flow for purging" msgstr "Flux addicional per a la purga" -msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker or narrower than they normally would be. The spacing is adjusted automatically." -msgstr "Flux addicional utilitzat per a les línies de purga a la torre de neteja. Això fa que les línies de purga siguin més gruixudes o més estretes del que serien normalment. L'espaiat s'ajusta automàticament." +# AI Translated +msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker than they normally would be. The spacing is adjusted automatically." +msgstr "Flux addicional utilitzat per a les línies de purga a la torre de purga. Això fa que les línies de purga siguin més gruixudes del que serien normalment. L'espaiat s'ajusta automàticament." msgid "Idle temperature" msgstr "Temperatura d'espera" @@ -20454,14 +20623,15 @@ msgstr "Gruix mínim de les característiques primes. Les característiques del msgid "Minimum wall length" msgstr "Longitud mínima del perímetre" +# AI Translated msgid "" -"Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. Higher values remove more and longer walls.\n" +"Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. The value is a multiple of the wall width. Higher values remove more and longer walls.\n" "\n" -"NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the Advanced settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." +"NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the 'Walls and surfaces' settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." msgstr "" -"Ajusteu aquest valor per evitar que s'imprimeixin parets curtes i no tancades, cosa que podria augmentar el temps d'impressió. Els valors més alts eliminen més i més parets més llargues.\n" +"Ajusteu aquest valor per evitar que s'imprimeixin parets curtes i no tancades, cosa que podria augmentar el temps d'impressió. El valor és un múltiple de l'amplada de la paret. Els valors més alts eliminen més parets i més llargues.\n" "\n" -"NOTA: Les superfícies inferior i superior no es veuran afectades per aquest valor per evitar espais visuals a l'exterior del model. Ajusteu \"Llindar d'una paret\" a la configuració avançada següent per ajustar la sensibilitat del que es considera una superfície superior. \"Llindar d'una paret\" només és visible si aquesta configuració està per sobre del valor predeterminat de 0,5 o si les superfícies superiors d'una sola paret estan habilitades." +"NOTA: Les superfícies inferior i superior no es veuran afectades per aquest valor per evitar espais visuals a l'exterior del model. Ajusteu \"Llindar d'un sol perímetre\" a la configuració de \"Parets i superfícies\" següent per ajustar la sensibilitat del que es considera una superfície superior. \"Llindar d'un sol perímetre\" només és visible si aquest valor està per sobre del valor predeterminat de 0,5 o si les superfícies superiors d'una sola paret estan habilitades." # AI Translated msgid "Maximum wall resolution" @@ -22410,14 +22580,17 @@ msgstr "Desar Perfil de Filament" msgid "Record Factor" msgstr "Factor de guardat" +# AI Translated msgid "We found the best flow ratio for you" -msgstr "Hem trobat la millor Ratio de Flux per a tú" +msgstr "Hem trobat la millor relació de flux per a tu" +# AI Translated msgid "Flow Ratio" -msgstr "Ratio de Flux" +msgstr "Relació de Flux" +# AI Translated msgid "Please input a valid value (0.0 < flow ratio < 2.0)" -msgstr "Introduïu un valor vàlid ( 0.0 < Ratio de Flux < 2.0 )" +msgstr "Introduïu un valor vàlid ( 0.0 < relació de flux < 2.0 )" msgid "Please enter the name of the preset you want to save." msgstr "Introduïu el nom del perfil que voleu desar." @@ -22437,9 +22610,10 @@ msgstr "Emplenar el valor que hi ha a sobre del bloc amb la superfície superior msgid "Skip Calibration2" msgstr "Saltar calibratge2" +# AI Translated #, c-format, boost-format msgid "flow ratio : %s " -msgstr "ratio de flux : %s " +msgstr "relació de flux : %s " msgid "Please choose a block with smoothest top surface." msgstr "Trieu un bloc amb la superfície superior més llisa." @@ -22453,8 +22627,9 @@ msgstr "Tipus de calibratge" msgid "Complete Calibration" msgstr "Calibratge Complet" +# AI Translated msgid "Fine Calibration based on flow ratio" -msgstr "Calibratge Fi basat en la Ratio de Flux" +msgstr "Calibratge Fi basat en la relació de flux" msgid "Title" msgstr "Títol" @@ -24486,9 +24661,6 @@ msgstr "Activar l'assignació intel·ligent de filament: assigna un filament a d msgid "File Saving" msgstr "Desament de fitxers" -msgid "Don't remind me again" -msgstr "No m'ho recordis més" - msgid "No further pop-up will appear. You can reopen it in 'Preferences'" msgstr "No apareixerà cap més finestra emergent. Podeu reobrir-la a 'Preferències'" @@ -35059,6 +35231,170 @@ msgstr "" "Evitar la deformació( warping )\n" "Sabíeu que quan imprimiu materials propensos a deformar-se, com ara l'ABS, augmentar adequadament la temperatura del llit pot reduir la probabilitat de deformació?" +# AI Translated +#~ msgid "" +#~ "Line width of the Bridge. If expressed as a %, it will be computed over the nozzle diameter.\n" +#~ "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" +#~ "\n" +#~ "The maximum value is 100% or the nozzle diameter.\n" +#~ "If set to 0, the line width will match the Internal solid infill width." +#~ msgstr "" +#~ "Amplada de línia del Pont. Si s'expressa en %, es calcularà sobre el diàmetre del broquet.\n" +#~ "Es recomana utilitzar-la amb una densitat de Pont o una relació de flux del Pont més altes.\n" +#~ "\n" +#~ "El valor màxim és el 100% o el diàmetre del broquet.\n" +#~ "Si s'estableix a 0, l'amplada de línia coincidirà amb l'amplada del farciment sòlid intern." + +# AI Translated +#, no-c-format, no-boost-format +#~ msgid "" +#~ "Enable this option to slow down printing in areas where perimeters may have curled upwards.\n" +#~ "For example, additional slowdown will be applied when printing overhangs on sharp corners like the front of the Benchy hull, reducing curling which compounds over multiple layers.\n" +#~ "\n" +#~ "It is generally recommended to have this option switched on unless your printer cooling is powerful enough or the print speed is slow enough that perimeter curling does not happen. \n" +#~ "If printing with a high external perimeter speed, this parameter may introduce wall artifacts when slowing down, due to the potentially large variance in print speeds causing the extruder to be unable to keep up with the requested flow change.\n" +#~ "Root cause of these artifacts is most likely PA tuning being slightly off, especially when combined with a high PA smooth time.\n" +#~ "\n" +#~ "Recommendations when enabling this option:\n" +#~ "1. Reduce Pressure Advance smooth time to 0.015 - 0.02 so the extruder reacts quickly to the speed changes.\n" +#~ "2. Increase the minimum print speeds to limit the magnitude of the slowdown and reduce the variance between fast and slow segments.\n" +#~ "3. If artifacts still appear, enable Extrusion Rate Smoothing (ERS) to further smooth the flow transitions.\n" +#~ "\n" +#~ "Note: When this option is enabled, overhang perimeters are treated like overhangs, meaning the overhang speed is applied even if the overhanging perimeter is part of a bridge.\n" +#~ "For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 100% overhang speed will be applied." +#~ msgstr "" +#~ "Activeu aquesta opció per alentir la impressió en àrees on els perímetres s'hagin pogut corbar cap amunt.\n" +#~ "Per exemple, s'aplicarà una alentiment addicional en imprimir voladissos en cantonades pronunciades, com ara la proa del casc del Benchy, cosa que redueix el corbament que s'acumula al llarg de diverses capes.\n" +#~ "\n" +#~ "En general es recomana tenir aquesta opció activada, tret que la refrigeració de la impressora sigui prou potent o la velocitat d'impressió prou baixa com perquè no es produeixi corbament dels perímetres. \n" +#~ "Si s'imprimeix amb una velocitat alta de perímetre exterior, aquest paràmetre pot introduir defectes als perímetres en alentir, a causa de la variació potencialment gran de velocitats d'impressió, que fa que l'extrusor no pugui seguir el canvi de flux sol·licitat.\n" +#~ "La causa d'aquests defectes és molt probablement un ajust de PA lleugerament desviat, especialment si es combina amb un temps de suavitzat de PA elevat.\n" +#~ "\n" +#~ "Recomanacions en activar aquesta opció:\n" +#~ "1. Reduïu el temps de suavitzat de Pressure Advance a 0,015 - 0,02 perquè l'extrusor reaccioni ràpidament als canvis de velocitat.\n" +#~ "2. Augmenteu les velocitats d'impressió mínimes per limitar la magnitud de l'alentiment i reduir la variació entre segments ràpids i lents.\n" +#~ "3. Si encara apareixen defectes, activeu el Suavitzat del Ritme d'Extrusió (ERS) per suavitzar encara més les transicions de flux.\n" +#~ "\n" +#~ "Nota: quan aquesta opció està activada, els perímetres de voladís es tracten com a voladissos, cosa que vol dir que s'aplica la velocitat de voladís fins i tot si el perímetre en voladís forma part d'un pont.\n" +#~ "Per exemple, quan els perímetres estan en voladís al 100%, sense cap perímetre que els aguanti per sota, s'aplicarà la velocitat de voladís del 100%." + +#~ msgid "" +#~ "Speed of the externally visible bridge extrusions.\n" +#~ "\n" +#~ "In addition, if Slow down for curled perimeters is disabled or Classic overhang mode is enabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." +#~ msgstr "" +#~ "Velocitat de les extrusions del pont visibles externament.\n" +#~ "\n" +#~ "A més, si l'opció de Reduir la velocitat per als perímetres corbats està desactivada o el mode clàssic de voladís està activat, aquesta serà la velocitat d'impressió per a les parets de voladís que estan suportades per menys del 13%, ja sigui que formin part d'un pont o d'un voladís." + +#~ msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above. Set to zero for auto." +#~ msgstr "Aquest ajustament independent afectarà la velocitat dels perímetres amb radi <= small_perimeter_threshold ( normalment orificis ). Si s'expressa com a percentatge ( per exemple: 80% ) es calcula sobre l'ajustament de velocitat del perímetre exterior anterior. Poseu-lo a zero per automàtic." + +# AI Translated +#~ msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above. Set to zero for auto." +#~ msgstr "Igual que \"Petits perímetres\", però per als suports. Aquest ajustament separat afectarà la velocitat del suport en àrees <= `small_support_perimeter_threshold`. Si s'expressa com a percentatge (per exemple: 80%), es calcularà sobre l'ajustament anterior de velocitat de suport o d'interfície de suport. Establiu-ho a zero per a automàtic." + +#~ msgid "" +#~ "Print sequence of the internal (inner) and external (outer) walls.\n" +#~ "\n" +#~ "Use Inner/Outer for best overhangs. This is because the overhanging walls can adhere to a neighbouring perimeter while printing. However, this option results in slightly reduced surface quality as the external perimeter is deformed by being squashed to the internal perimeter.\n" +#~ "\n" +#~ "Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended against the Outer/Inner option in most cases.\n" +#~ "\n" +#~ "Use Outer/Inner for the same external wall quality and dimensional accuracy benefits of Inner/Outer/Inner option. However, the Z seams will appear less consistent as the first extrusion of a new layer starts on a visible surface." +#~ msgstr "" +#~ "Seqüència d'impressió de les parets interiors (interiors) i exteriors (exteriors).\n" +#~ "\n" +#~ "Utilitzeu Interior / Exterior per a millors voladissos. Això es deu al fet que les parets que sobresurten poden adherir-se a un perímetre veí durant la impressió. No obstant això, aquesta opció resulta en una qualitat superficial lleugerament reduïda, ja que el perímetre extern es deforma en ser aixafat al perímetre intern.\n" +#~ "\n" +#~ "Utilitzeu Interior / Exterior / Interior per obtenir el millor acabat de la superfície externa i precisió dimensional, ja que la paret externa s'imprimeix sense molèsties des d'un perímetre intern. Tanmateix, el rendiment del voladís es reduirà, ja que no hi ha un perímetre intern per imprimir la paret externa. Aquesta opció requereix un mínim de 3 parets per ser efectiva, ja que imprimeix primer les parets interiors a partir del 3r\n" +#~ " perímetre, després el perímetre extern i, finalment, el primer perímetre intern. Aquesta opció es recomana contra l'opció Exterior/Interior en la majoria dels casos.\n" +#~ "\n" +#~ "Utilitzeu Exterior / Interior per obtenir la mateixa qualitat de paret externa i els mateixos avantatges de precisió dimensional de l'opció Interior / Exterior / Interior. Tanmateix, les costures z semblaran menys consistents a mesura que comenci la primera extrusió d'una nova capa en una superfície visible." + +#~ msgid "This is the speed for the first layer except for solid infill sections." +#~ msgstr "Velocitat de la capa inicial excepte la part de farciment sòlid" + +#~ msgid "This is the speed for solid infill parts of the first layer." +#~ msgstr "Velocitat de farciment sòlid de la capa inicial" + +#, no-c-format, no-boost-format +#~ msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to line width of sparse infill. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." +#~ msgstr "L'àrea de farciment s'amplia lleugerament per superposar-se amb la paret per a una millor unió. El valor percentual és relatiu a l'amplada de línia de farciment poc dens. Establiu aquest valor a ~ 10-15% per minimitzar la potencial sobreextrusió i acumulació de material que resulti en superfícies superiors rugoses." + +#, no-c-format, no-boost-format +#~ msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to line width of sparse infill." +#~ msgstr "L'àrea de farciment sòlida superior s'amplia lleugerament per superposar-se a la paret per a una millor unió i per minimitzar l'aparició de forats on l'ompliment superior es troba amb les parets. Un valor de 25-30% is és un bon punt de partida, minimitzant l'aparició de forats. El valor percentual és relatiu a l'amplada de línia de l'emplenament escàs" + +#~ msgid "Interlocking depth of a segmented region. It will be ignored if \"mmu_segmented_region_max_width\" is zero or if \"mmu_segmented_region_interlocking_depth\" is bigger than \"mmu_segmented_region_max_width\". Zero disables this feature." +#~ msgstr "Profunditat d'enclavament d'una regió segmentada. S'ignorarà si \"mmu_segmented_region_max_width\" és zero o si \"mmu_segmented_region_interlocking_depth\" és més gran que \"mmu_segmented_region_max_width\". Zero desactiva aquesta funció." + +# AI Translated +#~ msgid "" +#~ "Reduce the height of top-surface perimeters to match the model edge height.\n" +#~ "Affects perimeters with a slope less than this angle (degrees).\n" +#~ "A reasonable value is 35. Set to 0 to disable." +#~ msgstr "" +#~ "Redueix l'alçada dels perímetres de la superfície superior perquè coincideixi amb l'alçada de la vora del model.\n" +#~ "Afecta els perímetres amb un pendent inferior a aquest angle (graus).\n" +#~ "Un valor raonable és 35. Establiu-ho a 0 per desactivar-ho." + +#~ msgid "Role base wipe speed" +#~ msgstr "Velocitat de neteja basada en l'acció" + +#~ msgid "" +#~ "A draft shield is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft. It is usually needed only with open frame printers, i.e. without an enclosure.\n" +#~ "\n" +#~ "Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used.\n" +#~ "Note: With the draft shield active, the skirt will be printed at skirt distance from the object. Therefore, if brims are active it may intersect with them. To avoid this, increase the skirt distance value.\n" +#~ msgstr "" +#~ "Activat = la faldilla és tan alta com l'objecte imprès més alt. En cas contrari, s'utilitza \"Alçada de la faldilla\".\n" +#~ "Nota: amb l'escut de corrent actiu, la faldilla s'imprimirà a una distància de la faldilla de l'objecte. Per tant, si les vores estan actives, es pot creuar amb elles. Per evitar-ho, augmenta el valor de la distància de la faldilla.\n" + +#~ msgid "" +#~ "The maximum print speed when purging in the wipe tower and printing the wipe tower sparse layers. When purging, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +#~ "\n" +#~ "When printing the sparse layers, if the internal perimeter speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +#~ "\n" +#~ "Increasing this speed may affect the tower's stability as well as increase the force with which the nozzle collides with any blobs that may have formed on the wipe tower.\n" +#~ "\n" +#~ "Before increasing this parameter beyond the default of 90 mm/s, make sure your printer can reliably bridge at the increased speeds and that ooze when tool changing is well controlled.\n" +#~ "\n" +#~ "For the wipe tower external perimeters the internal perimeter speed is used regardless of this setting." +#~ msgstr "" +#~ "La velocitat màxima d'impressió en purgar a la torre de purga i imprimir a la torre de purga capes poc denses. En la purga, si la velocitat de farciment poc dens o la velocitat calculada de la màxima velocitat volumètrica del filament és menor, s'utilitzarà la més baixa.\n" +#~ "\n" +#~ "En imprimir les capes poc denses, si la velocitat perimetral interna o la velocitat calculada de la màxima velocitat volumètrica del filament és menor, s'utilitzarà la més baixa.\n" +#~ "\n" +#~ "L'augment d'aquesta velocitat pot afectar l'estabilitat de la torre, així com augmentar la força amb què el broquet xoca amb els grumolls que s'hagin pogut formar a la torre de purga.\n" +#~ "\n" +#~ "Abans d'augmentar aquest paràmetre més enllà del valor per defecte de 90 mm/segon, assegureu-vos que la impressora pugui fer un pont de manera fiable a les velocitats augmentades i que el degoteig quan es produeixi el canvi d'eina estigui ben controlat.\n" +#~ "\n" +#~ "Per als perímetres externs de la torre de purga, s'utilitza la velocitat perimetral interna independentment d'aquesta configuració." + +#~ msgid "" +#~ "Wipe tower outer wall type.\n" +#~ "1. Rectangle: The default wall type, a rectangle with fixed width and height.\n" +#~ "2. Cone: A cone with a fillet at the bottom to help stabilize the wipe tower.\n" +#~ "3. Rib: Adds four ribs to the tower wall for enhanced stability." +#~ msgstr "" +#~ "Tipus de paret exterior de la torre de purga.\n" +#~ "1. Rectangle: el tipus de paret predeterminat, un rectangle amb amplada i alçada fixes.\n" +#~ "2. Con: un con amb arrodoniment a la base per ajudar a estabilitzar la torre de purga.\n" +#~ "3. Nervi: afegeix quatre nervis a la paret de la torre per a una estabilitat millorada." + +#~ msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker or narrower than they normally would be. The spacing is adjusted automatically." +#~ msgstr "Flux addicional utilitzat per a les línies de purga a la torre de neteja. Això fa que les línies de purga siguin més gruixudes o més estretes del que serien normalment. L'espaiat s'ajusta automàticament." + +#~ msgid "" +#~ "Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. Higher values remove more and longer walls.\n" +#~ "\n" +#~ "NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the Advanced settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." +#~ msgstr "" +#~ "Ajusteu aquest valor per evitar que s'imprimeixin parets curtes i no tancades, cosa que podria augmentar el temps d'impressió. Els valors més alts eliminen més i més parets més llargues.\n" +#~ "\n" +#~ "NOTA: Les superfícies inferior i superior no es veuran afectades per aquest valor per evitar espais visuals a l'exterior del model. Ajusteu \"Llindar d'una paret\" a la configuració avançada següent per ajustar la sensibilitat del que es considera una superfície superior. \"Llindar d'una paret\" només és visible si aquesta configuració està per sobre del valor predeterminat de 0,5 o si les superfícies superiors d'una sola paret estan habilitades." + # AI Translated #, boost-format #~ msgid "Split into %1% part" diff --git a/localization/i18n/cs/OrcaSlicer_cs.po b/localization/i18n/cs/OrcaSlicer_cs.po index ff287ea7cc..b7a41df3dd 100644 --- a/localization/i18n/cs/OrcaSlicer_cs.po +++ b/localization/i18n/cs/OrcaSlicer_cs.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-10-13 09:55-0300\n" +"POT-Creation-Date: 2026-10-14 10:04-0300\n" "PO-Revision-Date: \n" "Last-Translator: Jakub Hencl\n" "Language-Team: \n" @@ -2462,6 +2462,67 @@ msgstr "Omezení síťového plug-inu" msgid "Privacy Policy Update" msgstr "Aktualizace zásad ochrany osobních údajů" +# AI Translated +msgid "All your filament presets are available on the printers they were made for." +msgstr "Všechny vaše předvolby filamentů jsou dostupné na tiskárnách, pro které byly vytvořeny." + +# AI Translated +msgid "Migrate Filament Presets" +msgstr "Převést předvolby filamentů" + +# AI Translated +msgid "" +"OrcaSlicer 2.5.0 restructured many system filament presets to fix incorrect profiles and prepare for future features. As a result, the presets below no longer show on some printers they were made for. Sorry for the trouble; this is a one-time fix.\n" +"\n" +"Add those printers back to your presets now? Your presets are backed up first. You can also do this later from Help > Migrate Filament Presets." +msgstr "" +"OrcaSlicer 2.5.0 přestrukturoval mnoho systémových předvoleb filamentů, aby opravil nesprávné profily a připravil půdu pro budoucí funkce. Výsledkem je, že se níže uvedené předvolby již nezobrazují u některých tiskáren, pro které byly vytvořeny. Omlouváme se za potíže; jde o jednorázovou opravu.\n" +"\n" +"Přidat tyto tiskárny zpět k vašim předvolbám? Vaše předvolby se nejprve zálohují. Můžete to také provést později z nabídky Nápověda > Převést předvolby filamentů." + +# AI Translated +#, boost-format +msgid "%1% (based on %2%)" +msgstr "%1% (založeno na %2%)" + +# AI Translated +msgid "Don't remind me again" +msgstr "Znovu mi to nepřipomínat" + +# AI Translated +msgid "Your presets could not be backed up, so they were not migrated." +msgstr "Vaše předvolby se nepodařilo zálohovat, proto nebyly převedeny." + +# AI Translated +msgid "The user presets folder could not be locked, so nothing was migrated. Another OrcaSlicer instance may be saving presets; try again later from Help > Migrate Filament Presets." +msgstr "Složku uživatelských předvoleb se nepodařilo zamknout, proto nebylo nic převedeno. Jiná instance OrcaSliceru možná právě ukládá předvolby; zkuste to později z nabídky Nápověda > Převést předvolby filamentů." + +# AI Translated +#, boost-format +msgid "" +"Your filament presets could not be migrated. A backup of your presets was saved to:\n" +"%1%" +msgstr "" +"Vaše předvolby filamentů se nepodařilo převést. Záloha vašich předvoleb byla uložena do:\n" +"%1%" + +# AI Translated +#, boost-format +msgid "" +"Your filament presets were migrated. Select them again in the filament list where you used them.\n" +"\n" +"A backup of your presets was saved to:\n" +"%1%" +msgstr "" +"Vaše předvolby filamentů byly převedeny. Vyberte je znovu v seznamu filamentů tam, kde jste je používali.\n" +"\n" +"Záloha vašich předvoleb byla uložena do:\n" +"%1%" + +# AI Translated +msgid "These presets could not be migrated:" +msgstr "Tyto předvolby se nepodařilo převést:" + #, c-format, boost-format msgid "your Orca Cloud profile (user ID: \"%s\")" msgstr "váš profil Orca Cloud (ID uživatele: \"%s\")" @@ -3186,6 +3247,62 @@ msgstr "(Ztracená barva)" msgid "Center" msgstr "Střed" +# AI Translated +msgid "Distribute left-right" +msgstr "Rozmístit vlevo-vpravo" + +# AI Translated +msgid "Distribute front-back" +msgstr "Rozmístit vpředu-vzadu" + +# AI Translated +msgid "Distribute top-bottom" +msgstr "Rozmístit nahoře-dole" + +# AI Translated +msgid "Align left" +msgstr "Zarovnat vlevo" + +# AI Translated +msgid "Align left-right center" +msgstr "Zarovnat na střed vlevo-vpravo" + +# AI Translated +msgid "Align right" +msgstr "Zarovnat vpravo" + +# AI Translated +msgid "Align front" +msgstr "Zarovnat dopředu" + +# AI Translated +msgid "Align front-back center" +msgstr "Zarovnat na střed vpředu-vzadu" + +# AI Translated +msgid "Align back" +msgstr "Zarovnat dozadu" + +# AI Translated +msgid "Align bottom" +msgstr "Zarovnat dolů" + +# AI Translated +msgid "Align top-bottom center" +msgstr "Zarovnat na střed nahoře-dole" + +# AI Translated +msgid "Align top" +msgstr "Zarovnat nahoru" + +# AI Translated +msgid "Align/Distribute" +msgstr "Zarovnat/Rozmístit" + +# AI Translated +msgid "Align and distribute objects" +msgstr "Zarovnat a rozmístit objekty" + msgid "Drop" msgstr "Pustit" @@ -6724,6 +6841,10 @@ msgstr "Průvodce nastavením" msgid "Show Configuration Folder" msgstr "Zobrazit složku s konfigurací" +# AI Translated +msgid "Bring back filament presets that a profile update removed from printers they were made for" +msgstr "Vrátit předvolby filamentů, které aktualizace profilů odebrala z tiskáren, pro které byly vytvořeny" + # AI Translated msgid "Troubleshoot Center" msgstr "Centrum řešení potíží" @@ -12168,6 +12289,7 @@ msgid "Enabling both precise Z height and the prime tower may cause slicing erro msgstr "Povolení přesné výšky Z i čistící věže může způsobit chyby slicování. Chcete přesto povolit přesnou výšku Z?" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "čistící věž"; align it once the term is settled. msgid "Smooth timelapse needs a prime tower on every layer, which is not compatible with \"No sparse layers\". \"No sparse layers\" has been turned off." msgstr "Plynulý časosběr vyžaduje čistící věž na každé vrstvě, což není slučitelné s možností \"Žádné řídké vrstvy\". Možnost \"Žádné řídké vrstvy\" byla vypnuta." @@ -12175,6 +12297,7 @@ msgid "A prime tower is required for smooth timelapse mode. There may be flaws o msgstr "Pro hladký časosběr je potřeba základní věž. Model může mít vady bez základní věže. Chcete povolit základní věž?" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "čistící věž"; align it once the term is settled. msgid "\"No sparse layers\" is not compatible with smooth timelapse, which needs a prime tower on every layer. Timelapse has been switched to traditional mode." msgstr "Možnost \"Žádné řídké vrstvy\" není slučitelná s plynulým časosběrem, který vyžaduje čistící věž na každé vrstvě. Časosběr byl přepnut do tradičního režimu." @@ -14035,6 +14158,7 @@ msgid "Open G-code file:" msgstr "Otevřít G-code soubor:" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "věž na očištění"; align it once the term is settled. msgid "Wipe tower generation failed, possibly due to empty first layer." msgstr "Generování věže na očištění trysky se nezdařilo, pravděpodobně kvůli prázdné první vrstvě." @@ -14180,6 +14304,18 @@ msgstr "více průsečíků s obvodem, použit byl pouze jeden (%1%)" msgid "a perimeter is fully inside a modifier, the modifier was not applied to it (%1%)" msgstr "obvod leží celý uvnitř modifikátoru, modifikátor na něj nebyl použit (%1%)" +# AI Translated +#. TRN: %1% is the modifier type "Seam Blocked" as in the menu, %2% the modifier name, %3% the object name. +#, boost-format +msgid "%1% modifier \"%2%\" of \"%3%\" covers an entire perimeter" +msgstr "Modifikátor %1% „%2%“ objektu „%3%“ pokrývá celý obvod" + +# AI Translated +#. TRN: %1% is the modifier type "Seam Blocked" as in the menu, %2% the modifier name, %3% the object name, %4% the number of modifiers. +#, boost-format +msgid "%1% modifier \"%2%\" of \"%3%\" (%4% in total) covers an entire perimeter" +msgstr "Modifikátor %1% „%2%“ objektu „%3%“ (celkem %4%) pokrývá celý obvod" + # AI Translated #, boost-format msgid "modifier \"%1%\" of \"%2%\" had no effect on the seam (it might not reach the centerline of the printed perimeter)" @@ -14388,6 +14524,7 @@ msgid "%1% is too tall, and collisions will be caused." msgstr "%1% je příliš vysoký, může dojít ke kolizím." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "čistící věž"; align it once the term is settled. msgid "The relative position of the model and the prime tower does not meet the requirements of the \"No sparse layers\" feature. Please adjust their relative positions, lower the model height, or turn off \"No sparse layers\"." msgstr "Vzájemná poloha modelu a čistící věže nesplňuje požadavky funkce \"Žádné řídké vrstvy\". Upravte prosím jejich vzájemnou polohu, snižte výšku modelu nebo vypněte možnost \"Žádné řídké vrstvy\"." @@ -14397,26 +14534,32 @@ msgid "%1% is too close to the clumping detection area. There may be collisions msgstr "%1% je příliš blízko oblasti detekce shlukování, při tisku může dojít ke kolizím." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "základní věž"; align it once the term is settled. msgid "Prime tower is too close to others, and collisions may be caused.\n" msgstr "Základní věž je příliš blízko ostatním, může dojít ke kolizím.\n" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "základní věž"; align it once the term is settled. msgid "Prime tower is too close to an exclusion area, and collisions will be caused.\n" msgstr "Základní věž je příliš blízko vyhrazené oblasti a dojde ke kolizi.\n" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "základní věž"; align it once the term is settled. msgid "Prime tower is too close to the clumping detection area, and collisions will be caused.\n" msgstr "Základní věž je příliš blízko oblasti detekce shlukování a dojde ke kolizi.\n" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "základní věž"; align it once the term is settled. msgid "Prime tower is too close to an exclusion area. There may be collisions when printing." msgstr "Základní věž je příliš blízko vyhrazené oblasti, při tisku může dojít ke kolizím." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "základní věž"; align it once the term is settled. msgid "Prime tower is too close to the clumping detection area. There may be collisions when printing." msgstr "Základní věž je příliš blízko oblasti detekce shlukování, při tisku může dojít ke kolizím." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "základní věž"; align it once the term is settled. msgid "Prime tower is partially outside the printable area, and it cannot be printed.\n" msgstr "Základní věž je částečně mimo tisknutelnou oblast a nelze ji vytisknout.\n" @@ -14537,6 +14680,7 @@ msgid "Variable layer height is not supported with Organic supports." msgstr "Proměnná výška vrstvy není podporována s organickými podporami." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "věž na očištění"; align it once the term is settled. msgid "The wipe tower filament cannot be a mixed filament." msgstr "Filament věže na očištění trysky nemůže být míchaný filament." @@ -15207,13 +15351,13 @@ msgid "" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" -"If set to 0, the line width will match the Internal solid infill width." +"If set to 0, the line width will match the Internal solid infill width, or the nozzle diameter for thick bridges." msgstr "" "Šířka linie můstku. Pokud je vyjádřena v %, bude vypočítána z průměru trysky.\n" "Doporučuje se používat s vyšší hustotou můstku nebo vyšším poměrem průtoku můstku.\n" "\n" "Maximální hodnota je 100 % nebo průměr trysky.\n" -"Pokud je nastavena na 0, bude šířka linie odpovídat šířce vnitřní plné výplně." +"Pokud je nastavena na 0, bude šířka linie odpovídat šířce vnitřní plné výplně, nebo průměru trysky u silných můstků." msgid "Internal bridge flow ratio" msgstr "Poměr průtoku pro vnitřní most" @@ -15498,7 +15642,7 @@ msgid "" "3. If artifacts still appear, enable Extrusion Rate Smoothing (ERS) to further smooth the flow transitions.\n" "\n" "Note: When this option is enabled, overhang perimeters are treated like overhangs, meaning the overhang speed is applied even if the overhanging perimeter is part of a bridge.\n" -"For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 100% overhang speed will be applied." +"For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 75% overhang speed will be applied, limited by the bridge speed." msgstr "" "Zapněte tuto volbu, chcete-li zpomalit tisk v místech, kde se mohly obvody zkroutit nahoru.\n" "Například při tisku převisů na ostrých rozích, jako je příď trupu modelu Benchy, se použije dodatečné zpomalení, které omezí kroucení narůstající přes více vrstev.\n" @@ -15510,22 +15654,23 @@ msgstr "" "Doporučení při zapnutí této volby:\n" "1. Snižte čas vyhlazení Pressure Advance na 0,015–0,02, aby extruder rychle reagoval na změny rychlosti.\n" "2. Zvyšte minimální rychlosti tisku, abyste omezili míru zpomalení a rozdíl mezi rychlými a pomalými úseky.\n" -"3. Pokud se artefakty stále objevují, zapněte vyhlazování rychlosti extruze (ERS), které přechody průtoku dále vyhladí.\n" +"3. Pokud se artefakty stále objevují, zapněte Vyhlazování rychlosti extruze (ERS), které přechody průtoku dále vyhladí.\n" "\n" "Poznámka: Je-li tato volba zapnutá, jsou obvody převisů považovány za převisy, takže se rychlost pro převisy použije i tehdy, když je převislý obvod součástí můstku.\n" -"Například pokud jsou obvody ze 100 % převislé a zespodu je nic nepodpírá, použije se rychlost pro 100% převis." +"Například pokud jsou obvody ze 100 % převislé a zespodu je nic nepodpírá, použije se rychlost pro 75% převis, omezená rychlostí můstků." msgid "mm/s or %" msgstr "mm/s nebo %" +# AI Translated msgid "" "Speed of the externally visible bridge extrusions.\n" "\n" -"In addition, if Slow down for curled perimeters is disabled or Classic overhang mode is enabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." +"In addition, if Slow down for curled perimeters is disabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." msgstr "" "Rychlost vnějších viditelných mostních extruzí.\n" "\n" -"Pokud je navíc vypnutá možnost Zpomalit pro zkroucené obvody nebo je povolen Klasický režim převisů, bude to rychlost tisku stěn převisů, které jsou podepřeny méně než 13 %, ať už jsou součástí mostu nebo převisu." +"Pokud je navíc vypnutá možnost Zpomalit pro zkroucené obvody, bude to rychlost tisku stěn převisů, které jsou podepřeny méně než 13 %, ať už jsou součástí mostu nebo převisu." msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%." msgstr "Rychlost vnitřních mostů. Pokud je hodnota zadána v procentech, vypočítá se podle bridge_speed. Výchozí hodnota je 150 %." @@ -16086,8 +16231,9 @@ msgstr "Rychlost vnější stěny, která je nejvíce vnější a viditelná. Ob msgid "Small perimeters" msgstr "Malé obvody" -msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above. Set to zero for auto." -msgstr "Toto samostatné nastavení ovlivní rychlost obvodů s poloměrem <= small_perimeter_threshold (obvykle otvory). Pokud je zadáno v procentech (například: 80 %), bude vypočítáno na základě výše uvedeného nastavení rychlosti vnější stěny. Pro automatické nastavení zadejte nulu." +# AI Translated +msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above." +msgstr "Toto samostatné nastavení ovlivní rychlost obvodů s poloměrem <= small_perimeter_threshold (obvykle otvory). Pokud je zadáno v procentech (například: 80 %), bude vypočítáno na základě výše uvedeného nastavení rychlosti vnější stěny." msgid "Small perimeters threshold" msgstr "Práh malých obvodů" @@ -16100,8 +16246,8 @@ msgid "Small support perimeters" msgstr "Malé obvody podpor" # AI Translated -msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above. Set to zero for auto." -msgstr "Stejné jako „Malé obvody“, ale pro podpory. Toto samostatné nastavení ovlivňuje rychlost podpor v oblastech <= `small_support_perimeter_threshold`. Pokud je vyjádřeno v procentech (například 80 %), bude vypočítáno z výše uvedeného nastavení rychlosti podpor nebo rozhraní podpor. Nastavte nulu pro automatický režim." +msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above." +msgstr "Stejné jako „Malé obvody“, ale pro podpory. Toto samostatné nastavení ovlivňuje rychlost podpor v oblastech <= `small_support_perimeter_threshold`. Pokud je vyjádřeno v procentech (například 80 %), bude vypočítáno z výše uvedeného nastavení rychlosti podpor nebo rozhraní podpor." # AI Translated msgid "Small support perimeters threshold" @@ -16114,22 +16260,23 @@ msgstr "Nastavuje práh pro délku malého obvodu podpor. Výchozí práh je 0 m msgid "Walls printing order" msgstr "Pořadí tisku stěn" +# AI Translated msgid "" "Print sequence of the internal (inner) and external (outer) walls.\n" "\n" "Use Inner/Outer for best overhangs. This is because the overhanging walls can adhere to a neighbouring perimeter while printing. However, this option results in slightly reduced surface quality as the external perimeter is deformed by being squashed to the internal perimeter.\n" "\n" -"Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended against the Outer/Inner option in most cases.\n" +"Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended over the Outer/Inner option in most cases.\n" "\n" "Use Outer/Inner for the same external wall quality and dimensional accuracy benefits of Inner/Outer/Inner option. However, the Z seams will appear less consistent as the first extrusion of a new layer starts on a visible surface." msgstr "" "Pořadí tisku vnitřních a vnějších stěn.\n" "\n" -"Použijte Vnitřní/Vnější pro nejlepší převisy. Převislé stěny se totiž mohou během tisku opřít o sousední obvod. Tato možnost však mírně snižuje kvalitu povrchu, protože vnější obvod je deformován přitlačením k vnitřnímu obvodu.\n" +"Použijte Vnitřní/vnější pro nejlepší převisy. Převislé stěny se totiž mohou během tisku opřít o sousední obvod. Tato možnost však mírně snižuje kvalitu povrchu, protože vnější obvod je deformován přitlačením k vnitřnímu obvodu.\n" "\n" -"Použijte Vnitřní/Vnější/Vnitřní pro nejlepší kvalitu vnějšího povrchu a rozměrovou přesnost, protože vnější stěna je tisknuta bez ovlivnění vnitřním obvodem. Výkon převisů se však zhorší, protože vnější stěna nemá vnitřní obvod, o který by se při tisku opřela. Tato možnost vyžaduje alespoň 3 stěny, protože nejprve tiskne vnitřní stěny od 3. obvodu dál, poté vnější obvod a nakonec první vnitřní obvod. Ve většině případů je tato možnost doporučována místo Vnější/Vnitřní.\n" +"Použijte Vnitřní/vnější/vnitřní pro nejlepší kvalitu vnějšího povrchu a rozměrovou přesnost, protože vnější stěna je tisknuta bez ovlivnění vnitřním obvodem. Výkon převisů se však zhorší, protože vnější stěna nemá vnitřní obvod, o který by se při tisku opřela. Tato možnost vyžaduje alespoň 3 stěny, protože nejprve tiskne vnitřní stěny od 3. obvodu dál, poté vnější obvod a nakonec první vnitřní obvod. Ve většině případů je tato možnost doporučována místo Vnější/Vnitřní.\n" "\n" -"Použijte Vnější/Vnitřní pro stejnou kvalitu vnější stěny a rozměrovou přesnost jako u možnosti Vnitřní/Vnější/Vnitřní. Z-švy však budou méně konzistentní, protože první extruze nové vrstvy začíná na viditelném povrchu." +"Použijte Vnější/Vnitřní pro stejnou kvalitu vnější stěny a rozměrovou přesnost jako u možnosti Vnitřní/vnější/vnitřní. Z-švy však budou méně konzistentní, protože první extruze nové vrstvy začíná na viditelném povrchu." msgid "Inner/Outer" msgstr "Vnitřní/vnější" @@ -17079,14 +17226,16 @@ msgstr "Výška první vrstvy" msgid "Height of the first layer. Making the first layer height thicker can improve build plate adhesion." msgstr "Výška počáteční vrstvy. Mírně vyšší počáteční výška vrstvy může zlepšit přilnavost k tiskové podložce." -msgid "This is the speed for the first layer except for solid infill sections." -msgstr "Rychlost první vrstvy kromě plné výplně." +# AI Translated +msgid "This is the speed for the walls and brim of the first layer." +msgstr "Rychlost stěn a límce první vrstvy." msgid "First layer infill" msgstr "Výplň první vrstvy" -msgid "This is the speed for solid infill parts of the first layer." -msgstr "Rychlost plné výplně první vrstvy." +# AI Translated +msgid "This is the speed for the first layer except for walls and brim, such as infill, gap fill and support." +msgstr "Rychlost první vrstvy kromě stěn a límce, například výplně, vyplnění mezery a podpory." msgid "First layer travel speed" msgstr "Cestovní rychlost první vrstvy" @@ -17800,16 +17949,18 @@ msgstr "Šířka čáry vnitřní řídké výplně. Pokud je zadána v %, bude msgid "Infill/wall overlap" msgstr "Překrytí výplně/stěny" +# AI Translated #, no-c-format, no-boost-format -msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to line width of sparse infill. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." -msgstr "Oblast výplně je mírně zvětšena, aby se překrývala se stěnou pro lepší spojení. Procentuální hodnota je vztažena k šířce čáry řídké výplně. Nastavte tuto hodnotu přibližně na 10–15 % pro minimalizaci možné přeextruze a hromadění materiálu, které může vést k hrubému hornímu povrchu." +msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to the inner wall line width. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." +msgstr "Oblast výplně je mírně zvětšena, aby se překrývala se stěnou pro lepší spojení. Procentuální hodnota je vztažena k šířce čáry vnitřní stěny. Nastavte tuto hodnotu přibližně na 10–15 % pro minimalizaci možné přeextruze a hromadění materiálu, které může vést k hrubému hornímu povrchu." msgid "Top/Bottom solid infill/wall overlap" msgstr "Překrytí plné výplně/stěny nahoře/dole" +# AI Translated #, no-c-format, no-boost-format -msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to line width of sparse infill." -msgstr "Oblast horní výplně je mírně zvětšena tak, aby překrývala stěnu, pro lepší propojení a minimalizaci vzniku otvorů ve styku horní výplně se stěnami. Hodnota 25–30 % je vhodným výchozím bodem a minimalizuje výskyt otvorů. Procentuální hodnota je vztažena k šířce čáry řídké výplně." +msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to the inner wall line width." +msgstr "Oblast horní výplně je mírně zvětšena tak, aby překrývala stěnu, pro lepší propojení a minimalizaci vzniku otvorů ve styku horní výplně se stěnami. Hodnota 25–30 % je vhodným výchozím bodem a minimalizuje výskyt otvorů. Procentuální hodnota je vztažena k šířce čáry vnitřní stěny." msgid "This is the speed for internal sparse infill." msgstr "Rychlost vnitřní řídké výplně." @@ -17835,8 +17986,9 @@ msgstr "Maximální šířka segmentované oblasti. Nula tuto funkci vypne." msgid "Interlocking depth of a segmented region" msgstr "Hloubka prokládání segmentované oblasti" -msgid "Interlocking depth of a segmented region. It will be ignored if \"mmu_segmented_region_max_width\" is zero or if \"mmu_segmented_region_interlocking_depth\" is bigger than \"mmu_segmented_region_max_width\". Zero disables this feature." -msgstr "Hloubka prokládání segmentované oblasti. Bude ignorováno, pokud je \"mmu_segmented_region_max_width\" nula nebo pokud je \"mmu_segmented_region_interlocking_depth\" větší než \"mmu_segmented_region_max_width\". Nula tuto funkci vypne." +# AI Translated +msgid "Interlocking depth of a segmented region. On every other layer, the segmented region is limited to this depth. It will be ignored if \"interlocking_beam\" is enabled. Zero disables this feature." +msgstr "Hloubka prokládání segmentované oblasti. U každé druhé vrstvy je segmentovaná oblast omezena touto hloubkou. Bude ignorováno, pokud je povoleno \"interlocking_beam\". Nula tuto funkci vypne." msgid "Use beam interlocking" msgstr "Použít vzájemné zajištění nosníků" @@ -17937,13 +18089,14 @@ msgstr "Povolí Z-konturování (také známé jako anti-aliasing vrstev Z)." msgid "Minimize wall height angle" msgstr "Minimalizovat úhel výšky stěny" +# AI Translated msgid "" "Reduce the height of top-surface perimeters to match the model edge height.\n" -"Affects perimeters with a slope less than this angle (degrees).\n" +"Affects perimeters with a slope greater than this angle (degrees).\n" "A reasonable value is 35. Set to 0 to disable." msgstr "" "Sníží výšku obvodů horního povrchu tak, aby odpovídala výšce hrany modelu.\n" -"Ovlivňuje obvody se sklonem menším než tento úhel (ve stupních).\n" +"Ovlivňuje obvody se sklonem větším než tento úhel (ve stupních).\n" "Doporučená hodnota je 35. Nastavte 0 pro vypnutí." msgid "Don't alternate fill direction" @@ -18929,8 +19082,9 @@ msgstr "Spoj límce pro vnitřní stěny" msgid "Use scarf joint for inner walls as well." msgstr "Použít šikmý spoj i pro vnitřní stěny." -msgid "Role base wipe speed" -msgstr "Rychlost vytírání podle role" +# AI Translated +msgid "Role based wipe speed" +msgstr "Rychlost očištění podle role" msgid "The wipe speed is determined by the speed of the current extrusion role. e.g. if a wipe action is executed immediately following an outer wall extrusion, the speed of the outer wall extrusion will be utilized for the wipe action." msgstr "Rychlost setření je určena rychlostí aktuálního extruzního režimu. Například pokud je akce setření provedena ihned po extruzi vnější stěně, použije se pro setření stejná rychlost, jako byla použita pro extruzi vnější stěny." @@ -19019,16 +19173,15 @@ msgstr "Omezuje počet smyček sukně/ochranného štítu na jednu stěnu po prv msgid "Draft shield" msgstr "Ochranný štít" +# AI Translated msgid "" "A draft shield is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft. It is usually needed only with open frame printers, i.e. without an enclosure.\n" "\n" -"Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used.\n" -"Note: With the draft shield active, the skirt will be printed at skirt distance from the object. Therefore, if brims are active it may intersect with them. To avoid this, increase the skirt distance value.\n" +"Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used." msgstr "" "Ochranný štít pomáhá chránit tisk z ABS nebo ASA před deformacemi a odtržením od podložky způsobenými průvanem. Obvykle je potřeba jen u tiskáren s otevřeným rámem, tedy bez krytu.\n" "\n" -"Povoleno = lem je vysoký jako nejvyšší tištěný objekt. Jinak se použije „Výška sukně“.\n" -"Poznámka: Při aktivním ochranném štítu bude sukně vytištěna ve vzdálenosti sukně od objektu. Proto pokud jsou aktivní ráfky, může s nimi dojít k překřížení. Aby se tomu zabránilo, zvyšte hodnotu vzdálenosti sukně.\n" +"Povoleno = okraj je vysoký jako nejvyšší tištěný objekt. Jinak se použije „Výška okraje“." msgid "Enabled" msgstr "Povoleno" @@ -19151,6 +19304,7 @@ msgid "Farthest point timelapse" msgstr "Časosběr v nejvzdálenějším bodě" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "věž na očištění"; align it once the term is settled. msgid "When enabled, the timelapse snapshot is taken at the farthest point from camera instead of traveling to the wipe tower or excess chute. Only effective in traditional timelapse mode on non-I3 printers." msgstr "Je-li zapnuto, pořizuje se časosběrný snímek v bodě nejvzdálenějším od kamery, místo přejezdu k věži na očištění trysky nebo k výhozovému žlabu. Účinné pouze v tradičním režimu časosběru na tiskárnách jiné konstrukce než I3." @@ -19348,18 +19502,22 @@ msgid "Enable filament ramming" msgstr "Povolit protlačování filamentu" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "věž na očištění"; align it once the term is settled. msgid "Tool change on wipe tower" msgstr "Výměna nástroje na věži na očištění trysky" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "věž na očištění"; align it once the term is settled. msgid "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead." msgstr "Vynutí přejezd tiskové hlavy k věži na očištění trysky před vydáním příkazu k výměně nástroje (Tx). Týká se pouze tiskáren s více extrudery (více tiskovými hlavami), které používají věž na očištění trysky typu 2. Ve výchozím nastavení Orca na strojích s více tiskovými hlavami tento přejezd vynechává, protože výměnu hlavy řeší firmware, což může vést k vydání příkazu Tx nad tištěným dílem. Zapněte tuto volbu, chcete-li, aby byla výměna nástroje vždy vydána nad věží na očištění trysky." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "věž na očištění"; align it once the term is settled. msgid "Wait for temperature on wipe tower" msgstr "Čekat na teplotu na věži na očištění trysky" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "věž na očištění"; align it once the term is settled. msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command." msgstr "Vyzvedne nový nástroj, aniž by čekal na dosažení tiskové teploty, přejede na věž na očištění trysky a počká na teplotu tam, těsně před čištěním. Materiál vytékající při ohřevu skončí na věži místo na modelu a přejezd se překrývá s ohřevem. Relevantní pouze pro tiskárny s více extrudery (více tiskovými hlavami) používající věž na očištění trysky typu 2. Firmware ani makro pro změnu nástroje nesmí na teplotu čekat samo. Pokud je vypnuto, čekání na teplotu se vloží hned po příkazu ke změně nástroje." @@ -19367,6 +19525,7 @@ msgid "No sparse layers (beta)" msgstr "Žádné řídké vrstvy (beta)" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "čistící věž"; align it once the term is settled. msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower, so the tower ends up below the model and the toolhead has to reach down to it. Layouts where that would collide with an already printed object are rejected. Has no effect with smooth timelapse or clumping detection, which need a tower on every layer." msgstr "Pokud je povoleno, čistící věž se nebude tisknout na vrstvách bez změny nástroje. Na vrstvách se změnou nástroje extruder sjede dolů, aby čistící věž vytiskl, takže věž skončí pod modelem a tisková hlava k ní musí dosáhnout dolů. Rozvržení, kde by to znamenalo kolizi s již vytištěným objektem, jsou odmítnuta. Nemá vliv při plynulém časosběru ani při detekci nánosů na trysce, které vyžadují věž na každé vrstvě." @@ -19375,6 +19534,7 @@ msgid "Combine sparse layers" msgstr "Kombinovat řídké vrstvy" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "základní věž"; align it once the term is settled. msgid "" "If enabled, consecutive layers on which the prime tower has no filament change are printed as a single thicker tower layer instead of one thin layer each, the same way infill combination merges sparse infill. The merged layer is printed at the top of the run, at the height of everything it covers.\n" "\n" @@ -20154,6 +20314,7 @@ msgid "Prime volume mode" msgstr "Režim objemu základní věže" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "věž na očištění"; align it once the term is settled. msgid "Selects how the wipe-tower prime and flush volumes are computed on multi-extruder printers." msgstr "Určuje, jak se na tiskárnách s více extrudery počítají objemy naplnění a čištění na věži na očištění trysky." @@ -20186,40 +20347,44 @@ msgstr "Úhel na vrcholu kužele, který slouží ke stabilizaci věže na oči msgid "Maximum wipe tower print speed" msgstr "Maximální rychlost tisku věže na očištění trysky" +# AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "věž na očištění"; align it once the term is settled. msgid "" "The maximum print speed when purging in the wipe tower and printing the wipe tower sparse layers. When purging, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" "\n" -"When printing the sparse layers, if the internal perimeter speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +"When printing the sparse layers, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" "\n" "Increasing this speed may affect the tower's stability as well as increase the force with which the nozzle collides with any blobs that may have formed on the wipe tower.\n" "\n" "Before increasing this parameter beyond the default of 90 mm/s, make sure your printer can reliably bridge at the increased speeds and that ooze when tool changing is well controlled.\n" "\n" -"For the wipe tower external perimeters the internal perimeter speed is used regardless of this setting." +"For the wipe tower external perimeters the internal perimeter speed is used, also limited by this setting." msgstr "" "Maximální rychlost tisku při proplachování ve věži na očištění trysky a při tisku řídkých vrstev této věže. Při proplachování se použije nejnižší rychlost z rychlosti řídké výplně nebo vypočtené rychlosti podle maximální objemové rychlosti filamentu.\n" "\n" -"Při tisku řídkých vrstev se použije nejnižší rychlost z rychlosti vnitřních obvodů nebo vypočtené rychlosti podle maximální objemové rychlosti filamentu.\n" +"Při tisku řídkých vrstev se použije nejnižší rychlost z rychlosti řídké výplně nebo vypočtené rychlosti podle maximální objemové rychlosti filamentu.\n" "\n" "Zvýšení této rychlosti může ovlivnit stabilitu věže a také zvýšit sílu, s jakou tryska narazí do případných kapek vytvořených na věži na očištění trysky.\n" "\n" "Před zvýšením tohoto parametru nad výchozí hodnotu 90 mm/s se ujistěte, že vaše tiskárna je schopna spolehlivě překonávat mosty při zvýšených rychlostech a že je při výměně nástroje dobře kontrolováno protékání.\n" "\n" -"Pro vnější perimetry věže na očištění trysky se vždy použije rychlost vnitřních obvodů bez ohledu na toto nastavení." +"Pro vnější obvody věže na očištění trysky se použije rychlost vnitřních obvodů, rovněž omezená tímto nastavením." msgid "Wall type" msgstr "Typ stěny" +# AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "věž na očištění"; align it once the term is settled. msgid "" "Wipe tower outer wall type.\n" -"1. Rectangle: The default wall type, a rectangle with fixed width and height.\n" +"1. Rectangle: A rectangle with fixed width and height.\n" "2. Cone: A cone with a fillet at the bottom to help stabilize the wipe tower.\n" -"3. Rib: Adds four ribs to the tower wall for enhanced stability." +"3. Rib: The default wall type, which adds four ribs to the tower wall for enhanced stability." msgstr "" -"Typ vnější stěny čistící věže.\n" -"1. Obdélník: Výchozí typ stěny, obdélník s pevnou šířkou a výškou.\n" -"2. Kužel: Kužel se zaoblením ve spodní části pro lepší stabilitu čistící věže.\n" -"3. Žebra: Přidá čtyři žebra ke stěně věže pro vyšší stabilitu." +"Typ vnější stěny věže na očištění trysky.\n" +"1. Obdélník: Obdélník s pevnou šířkou a výškou.\n" +"2. Kužel: Kužel se zaoblením ve spodní části pro lepší stabilitu věže na očištění trysky.\n" +"3. Žebra: Výchozí typ stěny, který přidává čtyři žebra ke stěně věže pro vyšší stabilitu." msgid "Rectangle" msgstr "Obdélník" @@ -20310,8 +20475,10 @@ msgstr "Vzdálenost čisticích linií na věži na očištění trysky." msgid "Extra flow for purging" msgstr "Dodatečný průtok pro pročištění" -msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker or narrower than they normally would be. The spacing is adjusted automatically." -msgstr "Dodatečný průtok použitý pro pročišťovací linie na věži na očištění trysky. Tím budou pročišťovací linie na věži na očištění trysky silnější nebo užší, než by byly obvykle. Rozestup je nastaven automaticky." +# AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "věž na očištění"; align it once the term is settled. +msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker than they normally would be. The spacing is adjusted automatically." +msgstr "Dodatečný průtok použitý pro pročišťovací linie na věži na očištění trysky. Tím budou pročišťovací linie silnější, než by byly obvykle. Rozestup je nastaven automaticky." msgid "Idle temperature" msgstr "Teplota nečinnosti" @@ -20431,14 +20598,15 @@ msgstr "Minimální tloušťka tenkých prvků. Prvky modelu tenčí než tato h msgid "Minimum wall length" msgstr "Minimální délka stěny" +# AI Translated msgid "" -"Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. Higher values remove more and longer walls.\n" +"Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. The value is a multiple of the wall width. Higher values remove more and longer walls.\n" "\n" -"NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the Advanced settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." +"NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the 'Walls and surfaces' settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." msgstr "" -"Upravte tuto hodnotu, abyste zabránili tisku krátkých, neuzavřených stěn, které by mohly zvýšit dobu tisku. Vyšší hodnoty odstraní více a delších stěn.\n" +"Upravte tuto hodnotu, abyste zabránili tisku krátkých, neuzavřených stěn, které by mohly zvýšit dobu tisku. Hodnota je násobkem šířky stěny. Vyšší hodnoty odstraní více a delších stěn.\n" "\n" -"POZNÁMKA: Dolní a horní povrch nebude touto hodnotou ovlivněn, aby nedocházelo k viditelným mezerám na vnější straně modelu. Upravte 'prahovou hodnotu jedné stěny' v pokročilých nastaveních níže pro nastavení citlivosti, co je považováno za horní povrch. 'Prahová hodnota jedné stěny' je zobrazena pouze pokud je toto nastavení vyšší než výchozí hodnota 0,5, nebo pokud je povolena možnost horních povrchů s jednou stěnou." +"POZNÁMKA: Spodní a horní povrchy nebudou touto hodnotou ovlivněny, aby nedocházelo k viditelným mezerám na vnější straně modelu. Upravte „Práh jedné stěny“ v nastavení „Stěny a povrchy“ níže pro nastavení citlivosti, co je považováno za horní povrch. „Práh jedné stěny“ je zobrazen pouze pokud je toto nastavení vyšší než výchozí hodnota 0,5, nebo pokud je povolena možnost horních povrchů s jednou stěnou." msgid "Maximum wall resolution" msgstr "Maximální rozlišení stěny" @@ -21223,6 +21391,7 @@ msgid "Size of the print bed bounding box" msgstr "Velikost ohraničujícího boxu tiskové podložky" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "věž na očištění"; align it once the term is settled. msgid "First layer center without wipe tower" msgstr "Střed první vrstvy bez věže na očištění trysky" @@ -24441,10 +24610,6 @@ msgstr "Povolit chytré přiřazení filamentu: přiřadit jeden filament více msgid "File Saving" msgstr "Ukládání souboru" -# AI Translated -msgid "Don't remind me again" -msgstr "Znovu mi to nepřipomínat" - # AI Translated msgid "No further pop-up will appear. You can reopen it in 'Preferences'" msgstr "Žádné další vyskakovací okno se neobjeví. Znovu jej můžete zapnout v „Předvolbách“" @@ -35149,6 +35314,170 @@ msgstr "" "Zamezte kroucení\n" "Víte, že při tisku materiálů náchylných ke kroucení, jako je ABS, může vhodné zvýšení teploty vyhřívané desky snížit pravděpodobnost kroucení?" +# AI Translated +#~ msgid "" +#~ "Line width of the Bridge. If expressed as a %, it will be computed over the nozzle diameter.\n" +#~ "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" +#~ "\n" +#~ "The maximum value is 100% or the nozzle diameter.\n" +#~ "If set to 0, the line width will match the Internal solid infill width." +#~ msgstr "" +#~ "Šířka linie můstku. Pokud je vyjádřena v %, bude vypočítána z průměru trysky.\n" +#~ "Doporučuje se používat s vyšší hustotou můstku nebo vyšším poměrem průtoku můstku.\n" +#~ "\n" +#~ "Maximální hodnota je 100 % nebo průměr trysky.\n" +#~ "Pokud je nastavena na 0, bude šířka linie odpovídat šířce vnitřní plné výplně." + +# AI Translated +#, no-c-format, no-boost-format +#~ msgid "" +#~ "Enable this option to slow down printing in areas where perimeters may have curled upwards.\n" +#~ "For example, additional slowdown will be applied when printing overhangs on sharp corners like the front of the Benchy hull, reducing curling which compounds over multiple layers.\n" +#~ "\n" +#~ "It is generally recommended to have this option switched on unless your printer cooling is powerful enough or the print speed is slow enough that perimeter curling does not happen. \n" +#~ "If printing with a high external perimeter speed, this parameter may introduce wall artifacts when slowing down, due to the potentially large variance in print speeds causing the extruder to be unable to keep up with the requested flow change.\n" +#~ "Root cause of these artifacts is most likely PA tuning being slightly off, especially when combined with a high PA smooth time.\n" +#~ "\n" +#~ "Recommendations when enabling this option:\n" +#~ "1. Reduce Pressure Advance smooth time to 0.015 - 0.02 so the extruder reacts quickly to the speed changes.\n" +#~ "2. Increase the minimum print speeds to limit the magnitude of the slowdown and reduce the variance between fast and slow segments.\n" +#~ "3. If artifacts still appear, enable Extrusion Rate Smoothing (ERS) to further smooth the flow transitions.\n" +#~ "\n" +#~ "Note: When this option is enabled, overhang perimeters are treated like overhangs, meaning the overhang speed is applied even if the overhanging perimeter is part of a bridge.\n" +#~ "For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 100% overhang speed will be applied." +#~ msgstr "" +#~ "Zapněte tuto volbu, chcete-li zpomalit tisk v místech, kde se mohly obvody zkroutit nahoru.\n" +#~ "Například při tisku převisů na ostrých rozích, jako je příď trupu modelu Benchy, se použije dodatečné zpomalení, které omezí kroucení narůstající přes více vrstev.\n" +#~ "\n" +#~ "Obecně se doporučuje mít tuto volbu zapnutou, pokud není chlazení vaší tiskárny dostatečně výkonné nebo rychlost tisku natolik nízká, že ke kroucení obvodů nedochází. \n" +#~ "Při tisku s vysokou rychlostí vnějších obvodů může tento parametr při zpomalování způsobit artefakty na stěnách, a to kvůli potenciálně velkému rozdílu rychlostí tisku, kdy extruder nestíhá požadovanou změnu průtoku.\n" +#~ "Hlavní příčinou těchto artefaktů je nejspíš mírně nepřesné doladění PA, zejména v kombinaci s dlouhým časem vyhlazení PA.\n" +#~ "\n" +#~ "Doporučení při zapnutí této volby:\n" +#~ "1. Snižte čas vyhlazení Pressure Advance na 0,015–0,02, aby extruder rychle reagoval na změny rychlosti.\n" +#~ "2. Zvyšte minimální rychlosti tisku, abyste omezili míru zpomalení a rozdíl mezi rychlými a pomalými úseky.\n" +#~ "3. Pokud se artefakty stále objevují, zapněte vyhlazování rychlosti extruze (ERS), které přechody průtoku dále vyhladí.\n" +#~ "\n" +#~ "Poznámka: Je-li tato volba zapnutá, jsou obvody převisů považovány za převisy, takže se rychlost pro převisy použije i tehdy, když je převislý obvod součástí můstku.\n" +#~ "Například pokud jsou obvody ze 100 % převislé a zespodu je nic nepodpírá, použije se rychlost pro 100% převis." + +#~ msgid "" +#~ "Speed of the externally visible bridge extrusions.\n" +#~ "\n" +#~ "In addition, if Slow down for curled perimeters is disabled or Classic overhang mode is enabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." +#~ msgstr "" +#~ "Rychlost vnějších viditelných mostních extruzí.\n" +#~ "\n" +#~ "Pokud je navíc vypnutá možnost Zpomalit pro zkroucené obvody nebo je povolen Klasický režim převisů, bude to rychlost tisku stěn převisů, které jsou podepřeny méně než 13 %, ať už jsou součástí mostu nebo převisu." + +#~ msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above. Set to zero for auto." +#~ msgstr "Toto samostatné nastavení ovlivní rychlost obvodů s poloměrem <= small_perimeter_threshold (obvykle otvory). Pokud je zadáno v procentech (například: 80 %), bude vypočítáno na základě výše uvedeného nastavení rychlosti vnější stěny. Pro automatické nastavení zadejte nulu." + +# AI Translated +#~ msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above. Set to zero for auto." +#~ msgstr "Stejné jako „Malé obvody“, ale pro podpory. Toto samostatné nastavení ovlivňuje rychlost podpor v oblastech <= `small_support_perimeter_threshold`. Pokud je vyjádřeno v procentech (například 80 %), bude vypočítáno z výše uvedeného nastavení rychlosti podpor nebo rozhraní podpor. Nastavte nulu pro automatický režim." + +#~ msgid "" +#~ "Print sequence of the internal (inner) and external (outer) walls.\n" +#~ "\n" +#~ "Use Inner/Outer for best overhangs. This is because the overhanging walls can adhere to a neighbouring perimeter while printing. However, this option results in slightly reduced surface quality as the external perimeter is deformed by being squashed to the internal perimeter.\n" +#~ "\n" +#~ "Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended against the Outer/Inner option in most cases.\n" +#~ "\n" +#~ "Use Outer/Inner for the same external wall quality and dimensional accuracy benefits of Inner/Outer/Inner option. However, the Z seams will appear less consistent as the first extrusion of a new layer starts on a visible surface." +#~ msgstr "" +#~ "Pořadí tisku vnitřních a vnějších stěn.\n" +#~ "\n" +#~ "Použijte Vnitřní/Vnější pro nejlepší převisy. Převislé stěny se totiž mohou během tisku opřít o sousední obvod. Tato možnost však mírně snižuje kvalitu povrchu, protože vnější obvod je deformován přitlačením k vnitřnímu obvodu.\n" +#~ "\n" +#~ "Použijte Vnitřní/Vnější/Vnitřní pro nejlepší kvalitu vnějšího povrchu a rozměrovou přesnost, protože vnější stěna je tisknuta bez ovlivnění vnitřním obvodem. Výkon převisů se však zhorší, protože vnější stěna nemá vnitřní obvod, o který by se při tisku opřela. Tato možnost vyžaduje alespoň 3 stěny, protože nejprve tiskne vnitřní stěny od 3. obvodu dál, poté vnější obvod a nakonec první vnitřní obvod. Ve většině případů je tato možnost doporučována místo Vnější/Vnitřní.\n" +#~ "\n" +#~ "Použijte Vnější/Vnitřní pro stejnou kvalitu vnější stěny a rozměrovou přesnost jako u možnosti Vnitřní/Vnější/Vnitřní. Z-švy však budou méně konzistentní, protože první extruze nové vrstvy začíná na viditelném povrchu." + +#~ msgid "This is the speed for the first layer except for solid infill sections." +#~ msgstr "Rychlost první vrstvy kromě plné výplně." + +#~ msgid "This is the speed for solid infill parts of the first layer." +#~ msgstr "Rychlost plné výplně první vrstvy." + +#, no-c-format, no-boost-format +#~ msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to line width of sparse infill. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." +#~ msgstr "Oblast výplně je mírně zvětšena, aby se překrývala se stěnou pro lepší spojení. Procentuální hodnota je vztažena k šířce čáry řídké výplně. Nastavte tuto hodnotu přibližně na 10–15 % pro minimalizaci možné přeextruze a hromadění materiálu, které může vést k hrubému hornímu povrchu." + +#, no-c-format, no-boost-format +#~ msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to line width of sparse infill." +#~ msgstr "Oblast horní výplně je mírně zvětšena tak, aby překrývala stěnu, pro lepší propojení a minimalizaci vzniku otvorů ve styku horní výplně se stěnami. Hodnota 25–30 % je vhodným výchozím bodem a minimalizuje výskyt otvorů. Procentuální hodnota je vztažena k šířce čáry řídké výplně." + +#~ msgid "Interlocking depth of a segmented region. It will be ignored if \"mmu_segmented_region_max_width\" is zero or if \"mmu_segmented_region_interlocking_depth\" is bigger than \"mmu_segmented_region_max_width\". Zero disables this feature." +#~ msgstr "Hloubka prokládání segmentované oblasti. Bude ignorováno, pokud je \"mmu_segmented_region_max_width\" nula nebo pokud je \"mmu_segmented_region_interlocking_depth\" větší než \"mmu_segmented_region_max_width\". Nula tuto funkci vypne." + +#~ msgid "" +#~ "Reduce the height of top-surface perimeters to match the model edge height.\n" +#~ "Affects perimeters with a slope less than this angle (degrees).\n" +#~ "A reasonable value is 35. Set to 0 to disable." +#~ msgstr "" +#~ "Sníží výšku obvodů horního povrchu tak, aby odpovídala výšce hrany modelu.\n" +#~ "Ovlivňuje obvody se sklonem menším než tento úhel (ve stupních).\n" +#~ "Doporučená hodnota je 35. Nastavte 0 pro vypnutí." + +#~ msgid "Role base wipe speed" +#~ msgstr "Rychlost vytírání podle role" + +#~ msgid "" +#~ "A draft shield is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft. It is usually needed only with open frame printers, i.e. without an enclosure.\n" +#~ "\n" +#~ "Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used.\n" +#~ "Note: With the draft shield active, the skirt will be printed at skirt distance from the object. Therefore, if brims are active it may intersect with them. To avoid this, increase the skirt distance value.\n" +#~ msgstr "" +#~ "Ochranný štít pomáhá chránit tisk z ABS nebo ASA před deformacemi a odtržením od podložky způsobenými průvanem. Obvykle je potřeba jen u tiskáren s otevřeným rámem, tedy bez krytu.\n" +#~ "\n" +#~ "Povoleno = lem je vysoký jako nejvyšší tištěný objekt. Jinak se použije „Výška sukně“.\n" +#~ "Poznámka: Při aktivním ochranném štítu bude sukně vytištěna ve vzdálenosti sukně od objektu. Proto pokud jsou aktivní ráfky, může s nimi dojít k překřížení. Aby se tomu zabránilo, zvyšte hodnotu vzdálenosti sukně.\n" + +#~ msgid "" +#~ "The maximum print speed when purging in the wipe tower and printing the wipe tower sparse layers. When purging, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +#~ "\n" +#~ "When printing the sparse layers, if the internal perimeter speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +#~ "\n" +#~ "Increasing this speed may affect the tower's stability as well as increase the force with which the nozzle collides with any blobs that may have formed on the wipe tower.\n" +#~ "\n" +#~ "Before increasing this parameter beyond the default of 90 mm/s, make sure your printer can reliably bridge at the increased speeds and that ooze when tool changing is well controlled.\n" +#~ "\n" +#~ "For the wipe tower external perimeters the internal perimeter speed is used regardless of this setting." +#~ msgstr "" +#~ "Maximální rychlost tisku při proplachování ve věži na očištění trysky a při tisku řídkých vrstev této věže. Při proplachování se použije nejnižší rychlost z rychlosti řídké výplně nebo vypočtené rychlosti podle maximální objemové rychlosti filamentu.\n" +#~ "\n" +#~ "Při tisku řídkých vrstev se použije nejnižší rychlost z rychlosti vnitřních obvodů nebo vypočtené rychlosti podle maximální objemové rychlosti filamentu.\n" +#~ "\n" +#~ "Zvýšení této rychlosti může ovlivnit stabilitu věže a také zvýšit sílu, s jakou tryska narazí do případných kapek vytvořených na věži na očištění trysky.\n" +#~ "\n" +#~ "Před zvýšením tohoto parametru nad výchozí hodnotu 90 mm/s se ujistěte, že vaše tiskárna je schopna spolehlivě překonávat mosty při zvýšených rychlostech a že je při výměně nástroje dobře kontrolováno protékání.\n" +#~ "\n" +#~ "Pro vnější perimetry věže na očištění trysky se vždy použije rychlost vnitřních obvodů bez ohledu na toto nastavení." + +#~ msgid "" +#~ "Wipe tower outer wall type.\n" +#~ "1. Rectangle: The default wall type, a rectangle with fixed width and height.\n" +#~ "2. Cone: A cone with a fillet at the bottom to help stabilize the wipe tower.\n" +#~ "3. Rib: Adds four ribs to the tower wall for enhanced stability." +#~ msgstr "" +#~ "Typ vnější stěny čistící věže.\n" +#~ "1. Obdélník: Výchozí typ stěny, obdélník s pevnou šířkou a výškou.\n" +#~ "2. Kužel: Kužel se zaoblením ve spodní části pro lepší stabilitu čistící věže.\n" +#~ "3. Žebra: Přidá čtyři žebra ke stěně věže pro vyšší stabilitu." + +#~ msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker or narrower than they normally would be. The spacing is adjusted automatically." +#~ msgstr "Dodatečný průtok použitý pro pročišťovací linie na věži na očištění trysky. Tím budou pročišťovací linie na věži na očištění trysky silnější nebo užší, než by byly obvykle. Rozestup je nastaven automaticky." + +#~ msgid "" +#~ "Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. Higher values remove more and longer walls.\n" +#~ "\n" +#~ "NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the Advanced settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." +#~ msgstr "" +#~ "Upravte tuto hodnotu, abyste zabránili tisku krátkých, neuzavřených stěn, které by mohly zvýšit dobu tisku. Vyšší hodnoty odstraní více a delších stěn.\n" +#~ "\n" +#~ "POZNÁMKA: Dolní a horní povrch nebude touto hodnotou ovlivněn, aby nedocházelo k viditelným mezerám na vnější straně modelu. Upravte 'prahovou hodnotu jedné stěny' v pokročilých nastaveních níže pro nastavení citlivosti, co je považováno za horní povrch. 'Prahová hodnota jedné stěny' je zobrazena pouze pokud je toto nastavení vyšší než výchozí hodnota 0,5, nebo pokud je povolena možnost horních povrchů s jednou stěnou." + # AI Translated #, boost-format #~ msgid "Split into %1% part" diff --git a/localization/i18n/de/OrcaSlicer_de.po b/localization/i18n/de/OrcaSlicer_de.po index 150b28885e..a22fd5e109 100644 --- a/localization/i18n/de/OrcaSlicer_de.po +++ b/localization/i18n/de/OrcaSlicer_de.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-10-13 09:55-0300\n" +"POT-Creation-Date: 2026-10-14 10:04-0300\n" "PO-Revision-Date: \n" "Last-Translator: Heiko Liebscher \n" "Language-Team: \n" @@ -2402,6 +2402,66 @@ msgstr "Netzwerk-Plugin-Einschränkung" msgid "Privacy Policy Update" msgstr "Datenschutzrichtlinien-Update" +# AI Translated +msgid "All your filament presets are available on the printers they were made for." +msgstr "Alle Ihre Filamentprofile sind auf den Druckern verfügbar, für die sie erstellt wurden." + +# AI Translated +msgid "Migrate Filament Presets" +msgstr "Filamentprofile migrieren" + +# AI Translated +msgid "" +"OrcaSlicer 2.5.0 restructured many system filament presets to fix incorrect profiles and prepare for future features. As a result, the presets below no longer show on some printers they were made for. Sorry for the trouble; this is a one-time fix.\n" +"\n" +"Add those printers back to your presets now? Your presets are backed up first. You can also do this later from Help > Migrate Filament Presets." +msgstr "" +"OrcaSlicer 2.5.0 hat viele System-Filamentprofile neu strukturiert, um fehlerhafte Profile zu korrigieren und künftige Funktionen vorzubereiten. Dadurch erscheinen die unten aufgeführten Profile bei einigen Druckern, für die sie erstellt wurden, nicht mehr. Wir bitten um Entschuldigung; diese Korrektur ist einmalig.\n" +"\n" +"Sollen diese Drucker jetzt wieder zu Ihren Profilen hinzugefügt werden? Ihre Profile werden zuvor gesichert. Sie können dies auch später über Hilfe > Filamentprofile migrieren tun." + +# AI Translated +#, boost-format +msgid "%1% (based on %2%)" +msgstr "%1% (basierend auf %2%)" + +msgid "Don't remind me again" +msgstr "Nicht mehr erinnern" + +# AI Translated +msgid "Your presets could not be backed up, so they were not migrated." +msgstr "Ihre Profile konnten nicht gesichert werden und wurden daher nicht migriert." + +# AI Translated +msgid "The user presets folder could not be locked, so nothing was migrated. Another OrcaSlicer instance may be saving presets; try again later from Help > Migrate Filament Presets." +msgstr "Der Ordner mit den Benutzerprofilen konnte nicht gesperrt werden, daher wurde nichts migriert. Möglicherweise speichert eine andere OrcaSlicer-Instanz gerade Profile; versuchen Sie es später erneut über Hilfe > Filamentprofile migrieren." + +# AI Translated +#, boost-format +msgid "" +"Your filament presets could not be migrated. A backup of your presets was saved to:\n" +"%1%" +msgstr "" +"Ihre Filamentprofile konnten nicht migriert werden. Eine Sicherung Ihrer Profile wurde gespeichert unter:\n" +"%1%" + +# AI Translated +#, boost-format +msgid "" +"Your filament presets were migrated. Select them again in the filament list where you used them.\n" +"\n" +"A backup of your presets was saved to:\n" +"%1%" +msgstr "" +"Ihre Filamentprofile wurden migriert. Wählen Sie sie in der Filamentliste, in der Sie sie verwendet haben, erneut aus.\n" +"\n" +"Eine Sicherung Ihrer Profile wurde gespeichert unter:\n" +"%1%" + +# AI Translated +msgid "These presets could not be migrated:" +msgstr "Diese Profile konnten nicht migriert werden:" + #, c-format, boost-format msgid "your Orca Cloud profile (user ID: \"%s\")" msgstr "dein Orca Cloud Profil (Benutzer-ID: \"%s\")" @@ -3120,6 +3180,62 @@ msgstr "(Farbe verloren)" msgid "Center" msgstr "Zur Mitte" +# AI Translated +msgid "Distribute left-right" +msgstr "Links-rechts verteilen" + +# AI Translated +msgid "Distribute front-back" +msgstr "Vorne-hinten verteilen" + +# AI Translated +msgid "Distribute top-bottom" +msgstr "Oben-unten verteilen" + +# AI Translated +msgid "Align left" +msgstr "Links ausrichten" + +# AI Translated +msgid "Align left-right center" +msgstr "Links-rechts mittig ausrichten" + +# AI Translated +msgid "Align right" +msgstr "Rechts ausrichten" + +# AI Translated +msgid "Align front" +msgstr "Vorne ausrichten" + +# AI Translated +msgid "Align front-back center" +msgstr "Vorne-hinten mittig ausrichten" + +# AI Translated +msgid "Align back" +msgstr "Hinten ausrichten" + +# AI Translated +msgid "Align bottom" +msgstr "Unten ausrichten" + +# AI Translated +msgid "Align top-bottom center" +msgstr "Oben-unten mittig ausrichten" + +# AI Translated +msgid "Align top" +msgstr "Oben ausrichten" + +# AI Translated +msgid "Align/Distribute" +msgstr "Ausrichten/Verteilen" + +# AI Translated +msgid "Align and distribute objects" +msgstr "Objekte ausrichten und verteilen" + msgid "Drop" msgstr "Ablegen" @@ -5724,8 +5840,9 @@ msgstr "Innere massive Füllung" msgid "Top surface" msgstr "Obere Oberfläche" +# AI Translated msgid "Bridge" -msgstr "Überbrückung" +msgstr "Brücke" msgid "Gap infill" msgstr "Lückenfüllung" @@ -6599,6 +6716,10 @@ msgstr "Einrichtungsassistent" msgid "Show Configuration Folder" msgstr "Konfigurationsordner anzeigen" +# AI Translated +msgid "Bring back filament presets that a profile update removed from printers they were made for" +msgstr "Filamentprofile zurückholen, die durch eine Profilaktualisierung von den Druckern entfernt wurden, für die sie erstellt wurden" + msgid "Troubleshoot Center" msgstr "Fehlerbehebungszentrum" @@ -13903,6 +14024,18 @@ msgstr "mehrere Schnittpunkte mit einer Wand, nur einer wurde verwendet (%1%)" msgid "a perimeter is fully inside a modifier, the modifier was not applied to it (%1%)" msgstr "eine Wand liegt vollständig innerhalb eines Modifizierers, der Modifizierer wurde nicht auf sie angewendet (%1%)" +# AI Translated +#. TRN: %1% is the modifier type "Seam Blocked" as in the menu, %2% the modifier name, %3% the object name. +#, boost-format +msgid "%1% modifier \"%2%\" of \"%3%\" covers an entire perimeter" +msgstr "Modifizierer „%2%“ (%1%) von „%3%“ deckt eine ganze Wand ab" + +# AI Translated +#. TRN: %1% is the modifier type "Seam Blocked" as in the menu, %2% the modifier name, %3% the object name, %4% the number of modifiers. +#, boost-format +msgid "%1% modifier \"%2%\" of \"%3%\" (%4% in total) covers an entire perimeter" +msgstr "Modifizierer „%2%“ (%1%) von „%3%“ (%4% insgesamt) deckt eine ganze Wand ab" + # AI Translated #, boost-format msgid "modifier \"%1%\" of \"%2%\" had no effect on the seam (it might not reach the centerline of the printed perimeter)" @@ -14880,32 +15013,42 @@ msgstr "" "\n" "Diese Option funktioniert besonders gut in Kombination mit der zweiten internen Brücke über Füllungsoption, um die Brückenbildung weiter zu verbessern, bevor die obere feste Füllung extrudiert wird." +# AI Translated msgid "Bridge flow ratio" -msgstr "Brücken Flussrate" +msgstr "Brücken Flussverhältnis" +# AI Translated msgid "" "This value governs the thickness of the external (visible) bridge layer.\n" "Values above 1.0: Increase the amount of material while maintaining line spacing. This can improve line contact and strength.\n" "Values below 1.0: Reduce the amount of material while adjusting line spacing to maintain contact. This can improve sagging.\n" "\n" "The actual bridge flow used is calculated by multiplying this value with the filament flow ratio, and if set, the object's flow ratio." -msgstr "Der tatsächliche Brückenfluss wird berechnet, indem dieser Wert mit dem Filamentflussverhältnis und, falls festgelegt, dem Objektflussverhältnis multipliziert wird." +msgstr "" +"Dieser Wert steuert die Dicke der externen (sichtbaren) Brückenlage.\n" +"Werte über 1.0: Erhöhen die Materialmenge bei gleichbleibendem Linienabstand. Dies kann den Linienkontakt und die Festigkeit verbessern.\n" +"Werte unter 1.0: Reduzieren die Materialmenge bei Anpassung des Linienabstands, um den Kontakt aufrechtzuerhalten. Dies kann das Durchhängen verbessern.\n" +"\n" +"Der tatsächliche Brückenfluss wird berechnet, indem dieser Wert mit dem Filamentflussverhältnis und, falls festgelegt, dem Objektflussverhältnis multipliziert wird." +# AI Translated +# Needs human review: 'Brückendichte' is generic (the labels are 'Externe/Interne Brücken Dichte'). msgid "" "Line width of the Bridge. If expressed as a %, it will be computed over the nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" -"If set to 0, the line width will match the Internal solid infill width." +"If set to 0, the line width will match the Internal solid infill width, or the nozzle diameter for thick bridges." msgstr "" -"Linienbreite der Brücke. Wenn als % angegeben, wird sie über den Düsendurchmesser berechnet.\n" -"Empfohlen in Verbindung mit einer höheren Brückendichte oder einer höheren Brückenflussrate.\n" +"Linienbreite der Brücke. Wenn als Prozentwert (%) angegeben, wird sie über den Düsendurchmesser berechnet.\n" +"Empfohlen in Verbindung mit einer höheren Brückendichte oder einem höheren Brücken Flussverhältnis.\n" "\n" "Der maximale Wert beträgt 100% oder der Düsendurchmesser.\n" -"Wenn auf 0 gesetzt, entspricht die Linienbreite der Breite der inneren festen Füllung." +"Wenn auf 0 gesetzt, entspricht die Linienbreite der Breite der inneren massiven Füllung bzw. bei dicken Brücken dem Düsendurchmesser." +# AI Translated msgid "Internal bridge flow ratio" -msgstr "Interne Brücken Flussrate" +msgstr "Interne Brücken Flussverhältnis" msgid "" "This value governs the thickness of the internal bridge layer. This is the first layer over sparse infill so increasing it may increase strength and upper layer quality.\n" @@ -15185,34 +15328,35 @@ msgid "" "3. If artifacts still appear, enable Extrusion Rate Smoothing (ERS) to further smooth the flow transitions.\n" "\n" "Note: When this option is enabled, overhang perimeters are treated like overhangs, meaning the overhang speed is applied even if the overhanging perimeter is part of a bridge.\n" -"For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 100% overhang speed will be applied." +"For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 75% overhang speed will be applied, limited by the bridge speed." msgstr "" "Aktivieren Sie diese Option, um den Druck in Bereichen zu verlangsamen, in denen sich die Umfänge möglicherweise nach oben gekrümmt haben.\n" -"Zum Beispiel wird bei der Druckung von Überhängen an scharfen Ecken wie dem Vorderteil der Benchy-Hülle eine zusätzliche Verlangsamung angewendet, um das Krümmen zu reduzieren, das sich über mehrere Schichten hinweg verstärkt.\n" +"Zum Beispiel wird beim Drucken von Überhängen an scharfen Ecken wie dem Vorderteil der Benchy-Hülle eine zusätzliche Verlangsamung angewendet, um das Krümmen zu reduzieren, das sich über mehrere Schichten hinweg verstärkt.\n" "\n" "Es wird in der Regel empfohlen, diese Option aktiviert zu lassen, es sei denn, Ihre Druckerkühlung ist stark genug oder die Druckgeschwindigkeit ist langsam genug, sodass sich Umfänge nicht krümmen. \n" -"Wenn Sie mit einer hohen externen Umfangsgeschwindigkeit drucken, kann dieser Parameter bei der Verlangsamung Wandartefakte verursachen, da die potentiell große Varianz der Druckgeschwindigkeiten den Extruder daran hindert, dem geforderten Fließänderungsverlauf zu folgen.\n" +"Wenn Sie mit einer hohen externen Umfangsgeschwindigkeit drucken, kann dieser Parameter bei der Verlangsamung Wandartefakte verursachen, da die potentiell große Varianz der Druckgeschwindigkeiten den Extruder daran hindert, der geforderten Flussänderung zu folgen.\n" "Die Ursache dieser Artefakte ist in der Regel eine leicht abweichende PA-Einstellung, insbesondere in Kombination mit einer hohen PA-Glättungszeit.\n" "\n" "Empfehlungen bei Aktivierung dieser Option:\n" "1. Reduzieren Sie die Glättungszeit für Pressure Advance auf 0,015 - 0,02, damit der Extruder schnell auf Geschwindigkeitsänderungen reagieren kann.\n" "2. Erhöhen Sie die Mindestdruckgeschwindigkeiten, um die Schwankung zwischen den schnellen und langsamen Segmenten zu begrenzen.\n" -"3. Wenn Artefakte weiterhin auftreten, aktivieren Sie die Glättung der Extrusionsrate (ERS), um die Übergänge der Fließrate weiter zu glätten.\n" +"3. Wenn Artefakte weiterhin auftreten, aktivieren Sie die Glättung der Extrusionsrate (ERS), um die Flussübergänge weiter zu glätten.\n" "\n" -"Hinweis: Wenn diese Option aktiviert ist, werden die Überhangumfänge wie Überhänge behandelt, was bedeutet, dass die Überhanggeschwindigkeit auch dann angewendet wird, wenn der überhängende Umfang Teil einer Brücke ist.\n" -"Zum Beispiel wird für Umfänge, die zu 100 % ohne stützende Wand darunter überhängen, die Überhanggeschwindigkeit für 100 % ohne Abstützung angewendet." +"Hinweis: Wenn diese Option aktiviert ist, werden Überhangumfänge wie Überhänge behandelt, was bedeutet, dass die Überhanggeschwindigkeit auch dann angewendet wird, wenn der überhängende Umfang Teil einer Brücke ist.\n" +"Zum Beispiel wird für Umfänge, die zu 100% überhängen, ohne dass eine Wand sie von unten stützt, die Überhanggeschwindigkeit von 75% angewendet, begrenzt durch die Brückengeschwindigkeit." msgid "mm/s or %" msgstr "mm/s o. %" +# AI Translated msgid "" "Speed of the externally visible bridge extrusions.\n" "\n" -"In addition, if Slow down for curled perimeters is disabled or Classic overhang mode is enabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." +"In addition, if Slow down for curled perimeters is disabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." msgstr "" "Geschwindigkeit der extern sichtbaren Brückenextrusionen.\n" "\n" -"Darüber hinaus wird, wenn die Option zum Verlangsamen von gekrümmten Umfängen deaktiviert ist oder der klassische Überhangsmodus aktiviert ist, die Druckgeschwindigkeit der Überhangswände, die zu weniger als 13 % gestützt sind, ob sie Teil einer Brücke oder eines Überhangs sind." +"Darüber hinaus ist dies, wenn Langsamer Druck für gekrümmte Umfänge deaktiviert ist, die Druckgeschwindigkeit der Überhangwände mit einer Stützung von weniger als 13%, unabhängig davon, ob sie Teil einer Brücke oder eines Überhangs sind." msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%." msgstr "Geschwindigkeit der internen Brücken. Wenn der Wert als Prozentsatz angegeben wird, wird er auf der Grundlage der Brückengeschwindigkeit berechnet. Der Standardwert beträgt 150 %." @@ -15572,8 +15716,9 @@ msgstr "Begrenzte Filterung" msgid "No filtering" msgstr "Keine Filterung" +# AI Translated msgid "Max bridge length" -msgstr "Max Überbrückungslänge" +msgstr "Max Brückenlänge" msgid "This is the maximum length of bridges that don't need support. Set it to 0 if you want all bridges to be supported, and set it to a very large value if you don't want any bridges to be supported." msgstr "Maximale Länge der Brücken, die keine Unterstützung benötigen. Setzen Sie den Wert auf 0, wenn alle Brücken unterstützt werden sollen und legen Sie einen sehr großen Wert fest, wenn keine Brücken unterstützt werden sollen." @@ -15669,7 +15814,7 @@ msgid "" "Useful for cases where the top surface is interrupted by a raised feature, such as text on a plane. Expanding it removes the holes beneath these features and creates a continuous path with a better finish for printing on top. The expansion is applied to the original top surface, before any other processing such as bridging or overhang detection." msgstr "" "Erweitert die oberen Oberflächen um diese Distanz, um separate obere Oberflächen zu verbinden und Lücken zu füllen.\n" -"Nützlich in Fällen, in denen die obere Oberfläche durch ein erhabenes Merkmal unterbrochen wird, wie z. B. Text auf einer Ebene. Die Erweiterung entfernt die Löcher unter diesen Merkmalen und erzeugt einen durchgehenden Pfad mit besserer Oberfläche zum Darüberdrucken. Die Erweiterung wird auf die ursprüngliche obere Oberfläche angewendet, vor jeder anderen Verarbeitung wie Überbrückung oder Überhangerkennung." +"Nützlich in Fällen, in denen die obere Oberfläche durch ein erhabenes Merkmal unterbrochen wird, wie z. B. Text auf einer Ebene. Die Erweiterung entfernt die Löcher unter diesen Merkmalen und erzeugt einen durchgehenden Pfad mit besserer Oberfläche zum Darüberdrucken. Die Erweiterung wird auf die ursprüngliche obere Oberfläche angewendet, vor jeder anderen Verarbeitung wie Brückenbildung oder Überhangerkennung." # AI Translated msgid "Top expansion wall margin" @@ -15772,8 +15917,9 @@ msgstr "Geschwindigkeit der äußersten Wand, welche später sichtbar ist. Wird msgid "Small perimeters" msgstr "Feine Strukturen" -msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above. Set to zero for auto." -msgstr "Diese separate Einstellung beeinflusst die Geschwindigkeit von Umfängen mit einem Radius <= small_perimeter_threshold (normalerweise Löcher). Wenn es als Prozentsatz ausgedrückt wird (z.B. 80%), wird es auf die oben genannte Einstellung der Geschwindigkeit der Außenwand berechnet. Setzen Sie es auf Null für automatisch." +# AI Translated +msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above." +msgstr "Diese separate Einstellung beeinflusst die Geschwindigkeit von Umfängen mit einem Radius <= small_perimeter_threshold (normalerweise Löcher). Wenn es als Prozentsatz ausgedrückt wird (z.B. 80%), wird es auf die oben genannte Einstellung der Geschwindigkeit der Außenwand berechnet." msgid "Small perimeters threshold" msgstr "Schwelle für kleine Strukturen" @@ -15786,8 +15932,8 @@ msgid "Small support perimeters" msgstr "Feine Strukturen für Stützen" # AI Translated -msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above. Set to zero for auto." -msgstr "Wie „Feine Strukturen“, aber für Stützen. Diese separate Einstellung wirkt sich auf die Geschwindigkeit der Stützen für Bereiche <= `small_support_perimeter_threshold` aus. Wenn als Prozentsatz angegeben (zum Beispiel: 80 %), wird sie auf die obige Geschwindigkeitseinstellung für Stützen oder Stützschnittstellen berechnet. Auf null setzen für automatisch." +msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above." +msgstr "Wie „Feine Strukturen“, aber für Stützen. Diese separate Einstellung wirkt sich auf die Geschwindigkeit der Stützen für Bereiche <= `small_support_perimeter_threshold` aus. Wenn als Prozentsatz angegeben (zum Beispiel: 80%), wird sie auf die obige Geschwindigkeitseinstellung für Stützen oder die Stützstruktur-Schnittstelle berechnet." # AI Translated msgid "Small support perimeters threshold" @@ -15800,20 +15946,21 @@ msgstr "Legt den Schwellenwert für die Länge feiner Stützstrukturen fest. Der msgid "Walls printing order" msgstr "Anordnung der Wände" +# AI Translated msgid "" "Print sequence of the internal (inner) and external (outer) walls.\n" "\n" "Use Inner/Outer for best overhangs. This is because the overhanging walls can adhere to a neighbouring perimeter while printing. However, this option results in slightly reduced surface quality as the external perimeter is deformed by being squashed to the internal perimeter.\n" "\n" -"Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended against the Outer/Inner option in most cases.\n" +"Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended over the Outer/Inner option in most cases.\n" "\n" "Use Outer/Inner for the same external wall quality and dimensional accuracy benefits of Inner/Outer/Inner option. However, the Z seams will appear less consistent as the first extrusion of a new layer starts on a visible surface." msgstr "" "Druckreihenfolge der inneren und äußeren Wände.\n" "\n" -"Verwenden Sie Innen/Außen für die besten Überhänge. Dies liegt daran, dass die überhängenden Wände beim Drucken an eine benachbarte Umfangsfläche haften können. Diese Option führt jedoch zu einer geringfügig reduzierten Oberflächenqualität, da die Außenwand durch das Zusammendrücken der Innenwand verformt wird.\n" +"Verwenden Sie Innen/Außen für die besten Überhänge. Dies liegt daran, dass die überhängenden Wände beim Drucken an einen benachbarten Umfang haften können. Diese Option führt jedoch zu einer geringfügig reduzierten Oberflächenqualität, da die Außenwand durch das Zusammendrücken gegen die Innenwand verformt wird.\n" "\n" -"Verwenden Sie Innen/Außen/Innen für die beste Oberflächenqualität und dimensionale Genauigkeit, da die Außenwand ungestört von einer inneren Wand gedruckt wird. Die Überhangsleistung wird jedoch verringert, da keine innere Wand vorhanden ist, um die Außenwand zu drucken. Diese Option erfordert ein Minimum von 3 Wänden, um wirksam zu sein, da die inneren Wände ab der 3. Umfangsfläche zuerst gedruckt werden, dann die äußere Umfangsfläche und schließlich die erste innere Umfangsfläche. Diese Option wird in den meisten Fällen gegen die Option Außen/Innen empfohlen.\n" +"Verwenden Sie Innen/Außen/Innen für die beste Oberflächenqualität und dimensionale Genauigkeit, da die Außenwand ungestört von einer inneren Wand gedruckt wird. Die Überhangsleistung wird jedoch verringert, da keine innere Wand vorhanden ist, an der die Außenwand gedruckt werden kann. Diese Option erfordert ein Minimum von 3 Wänden, um wirksam zu sein, da die inneren Wände ab dem 3. Umfang zuerst gedruckt werden, dann der äußere Umfang und schließlich der erste innere Umfang. Diese Option wird in den meisten Fällen gegenüber der Option Außen/Innen empfohlen.\n" "\n" "Verwenden Sie Außen/Innen für die gleiche externe Wandqualität und dimensionale Genauigkeit wie die Option Innen/Außen/Innen. Die Z-Nähte werden jedoch weniger konsistent erscheinen, da die erste Extrusion einer neuen Schicht auf einer sichtbaren Oberfläche beginnt." @@ -15823,8 +15970,9 @@ msgstr "Innen/Außen" msgid "Outer/Inner" msgstr "Außen/Innen" +# AI Translated msgid "Inner/Outer/Inner" -msgstr "Innenwand/Außenwand/Innenwand" +msgstr "Innen/Außen/Innen" msgid "Print infill first" msgstr "Drucke zuerst die Füllung" @@ -16507,7 +16655,7 @@ msgid "" "Aligns infill, bridge, ironing, and top/bottom surface directions to follow the model's orientation on the build plate.\n" "When enabled, these directions rotate together with the model so the printed features keep their intended orientation relative to the part, preserving optimal strength and surface characteristics regardless of how the model is placed." msgstr "" -"Richtet die Richtungen von Füllung, Überbrückung, Glätten und oberer/unterer Oberfläche so aus, dass sie der Ausrichtung des Modells auf dem Druckbett folgen.\n" +"Richtet die Richtungen von Füllung, Brücken, Glätten und oberer/unterer Oberfläche so aus, dass sie der Ausrichtung des Modells auf dem Druckbett folgen.\n" "Wenn aktiviert, drehen sich diese Richtungen zusammen mit dem Modell, sodass die gedruckten Merkmale ihre beabsichtigte Ausrichtung relativ zum Teil beibehalten und optimale Festigkeit sowie Oberflächeneigenschaften unabhängig von der Platzierung des Modells erhalten bleiben." msgid "Insert solid layers" @@ -16758,15 +16906,17 @@ msgstr "Höhe der ersten Schicht" msgid "Height of the first layer. Making the first layer height thicker can improve build plate adhesion." msgstr "Höhe der ersten Schicht. Eine etwas dickere erste Schicht kann die Haftung der Druckplatte verbessern" -msgid "This is the speed for the first layer except for solid infill sections." -msgstr "Geschwindigkeit der ersten Schicht mit Ausnahme der massiven Füllung." +# AI Translated +msgid "This is the speed for the walls and brim of the first layer." +msgstr "Geschwindigkeit der Wände und des Rands der ersten Schicht." # AI Translated msgid "First layer infill" msgstr "Füllung der ersten Schicht" -msgid "This is the speed for solid infill parts of the first layer." -msgstr "Geschwindigkeit des massiven Füllung der ersten Schicht." +# AI Translated +msgid "This is the speed for the first layer except for walls and brim, such as infill, gap fill and support." +msgstr "Geschwindigkeit der ersten Schicht mit Ausnahme von Wänden und Rand, wie Füllung, Lücken füllen und Stützen." msgid "First layer travel speed" msgstr "Geschwindigkeit der ersten Schicht" @@ -17449,16 +17599,18 @@ msgstr "Linienbreite des internen geringen Füllmusters. Wenn als Prozentsatz an msgid "Infill/wall overlap" msgstr "Überlappung Füllung/Wand" +# AI Translated #, no-c-format, no-boost-format -msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to line width of sparse infill. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." -msgstr "Die Füllfläche wird leicht vergrößert, um mit der Wand zu überlappen und eine bessere Haftung zu gewährleisten. Der Prozentwert bezieht sich auf die Linienbreite der spärlichen Füllung. Setzen Sie diesen Wert auf ~10-15%, um eine mögliche Überextrusion und Materialansammlung zu minimieren, die zu rauen Oberflächen führen kann." +msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to the inner wall line width. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." +msgstr "Die Füllfläche wird leicht vergrößert, um mit den Wänden zu überlappen und eine bessere Haftung zu gewährleisten. Der Prozentwert bezieht sich auf die Linienbreite der inneren Wand. Setzen Sie diesen Wert auf ~10-15%, um eine mögliche Überextrusion und Materialansammlung zu minimieren, die zu rauen oberen Oberflächen führen kann." msgid "Top/Bottom solid infill/wall overlap" msgstr "Überlappung des oberen/unteren massiven Füllung/Wand" +# AI Translated #, no-c-format, no-boost-format -msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to line width of sparse infill." -msgstr "Der obere massive Füllbereich wird leicht vergrößert, um mit der Wand zu überlappen und eine bessere Haftung zu gewährleisten und das Auftreten von Pinholes zu minimieren, wo die obere Füllung auf die Wände trifft. Ein Wert von 25-30% ist ein guter Ausgangspunkt, um das Auftreten von Pinholes zu minimieren. Der Prozentwert bezieht sich auf die Linienbreite der spärlichen Füllung." +msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to the inner wall line width." +msgstr "Der obere massive Füllbereich wird leicht vergrößert, um mit der Wand zu überlappen und eine bessere Haftung zu gewährleisten und das Auftreten von Pinholes zu minimieren, wo die obere Füllung auf die Wände trifft. Ein Wert von 25-30% ist ein guter Ausgangspunkt, um das Auftreten von Pinholes zu minimieren. Der Prozentwert bezieht sich auf die Linienbreite der inneren Wand." msgid "This is the speed for internal sparse infill." msgstr "Geschwindigkeit der inneren Füllung" @@ -17484,8 +17636,9 @@ msgstr "Maximale Breite eines segmentierten Bereichs. Null deaktiviert diese Fun msgid "Interlocking depth of a segmented region" msgstr "Interlock-Struktur-Tiefe eines segmentierten Bereichs" -msgid "Interlocking depth of a segmented region. It will be ignored if \"mmu_segmented_region_max_width\" is zero or if \"mmu_segmented_region_interlocking_depth\" is bigger than \"mmu_segmented_region_max_width\". Zero disables this feature." -msgstr "Interlock-Tiefe eines segmentierten Bereichs. Es wird ignoriert, wenn \"mmu_segmented_region_max_width\" null ist oder wenn \"mmu_segmented_region_interlocking_depth\" größer ist als \"mmu_segmented_region_max_width\". Null deaktiviert diese Funktion." +# AI Translated +msgid "Interlocking depth of a segmented region. On every other layer, the segmented region is limited to this depth. It will be ignored if \"interlocking_beam\" is enabled. Zero disables this feature." +msgstr "Interlock-Struktur-Tiefe eines segmentierten Bereichs. Auf jeder zweiten Schicht ist der segmentierte Bereich auf diese Tiefe begrenzt. Wird ignoriert, wenn \"interlocking_beam\" aktiviert ist. Null deaktiviert diese Funktion." msgid "Use beam interlocking" msgstr "Verwende Interlock-Strukturen" @@ -17586,13 +17739,14 @@ msgstr "Z-Schicht-Konturierung aktivieren (auch bekannt als Z-Schicht-Anti-Alias msgid "Minimize wall height angle" msgstr "Minimale Wandhöhe Winkel" +# AI Translated msgid "" "Reduce the height of top-surface perimeters to match the model edge height.\n" -"Affects perimeters with a slope less than this angle (degrees).\n" +"Affects perimeters with a slope greater than this angle (degrees).\n" "A reasonable value is 35. Set to 0 to disable." msgstr "" -"Reduziert die Höhe der oberen Oberflächenumrandungen, um der Modellkante zu entsprechen.\n" -"Wirkt sich auf Umrandungen mit einer Neigung unterhalb dieses Winkels (Grad) aus.\n" +"Reduziert die Höhe der Umfänge oberer Oberflächen, um der Modellkante zu entsprechen.\n" +"Wirkt sich auf Umfänge mit einer Neigung oberhalb dieses Winkels (Grad) aus.\n" "Ein vernünftiger Wert ist 35. Auf 0 setzen, um zu deaktivieren." msgid "Don't alternate fill direction" @@ -18129,7 +18283,7 @@ msgid "" msgstr "" "Wandschleifen, die vollständig in der Luft liegen, werden erst gedruckt, wenn etwas sie halten kann:\n" "Sie werden nach den übrigen Wänden ihrer Insel extrudiert, die innerste zuerst, unabhängig von der Wandreihenfolge.\n" -"Eine Schleife, die nur von den Überbrückungen dieser Schicht verankert werden kann, wartet, bis diese Überbrückungen gedruckt sind, während eine Schleife, die neben einer gestützten Wand verläuft, ihren Platz vor der Füllung behält, die sie als Verankerung benötigt." +"Eine Schleife, die nur von den Brücken dieser Schicht verankert werden kann, wartet, bis diese Brücken gedruckt sind, während eine Schleife, die neben einer gestützten Wand verläuft, ihren Platz vor der Füllung behält, die sie als Verankerung benötigt." msgid "Outer walls" msgstr "Äußere Wände" @@ -18562,8 +18716,9 @@ msgstr "Schrägnaht für innere Wände" msgid "Use scarf joint for inner walls as well." msgstr "Verwenden Sie Schrägnaht auch für innere Wände." -msgid "Role base wipe speed" -msgstr "Rollenbasierte Wipe Geschwindigkeit" +# AI Translated +msgid "Role based wipe speed" +msgstr "Wipe Geschwindigkeit nach Extrusionsart" msgid "The wipe speed is determined by the speed of the current extrusion role. e.g. if a wipe action is executed immediately following an outer wall extrusion, the speed of the outer wall extrusion will be utilized for the wipe action." msgstr "" @@ -18654,16 +18809,15 @@ msgstr "Begrenzt die Umrandungs- / Luftzug-Schutz-Schleifen auf eine Wand nach d msgid "Draft shield" msgstr "Luftzug-Schutz" +# AI Translated msgid "" "A draft shield is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft. It is usually needed only with open frame printers, i.e. without an enclosure.\n" "\n" -"Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used.\n" -"Note: With the draft shield active, the skirt will be printed at skirt distance from the object. Therefore, if brims are active it may intersect with them. To avoid this, increase the skirt distance value.\n" +"Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used." msgstr "" "Ein Luftzug-Schutz ist nützlich, um einen ABS- oder ASA-Druck vor Verzug und dem Ablösen vom Druckbett aufgrund von Windzug zu schützen. Er wird normalerweise nur bei offenen Druckern benötigt, d.h. ohne Gehäuse.\n" "\n" -"Aktiviert = Umrandung ist so hoch wie das höchste gedruckte Objekt. Andernfalls wird 'Höhe der Umrandung' verwendet.\n" -"Hinweis: Mit aktiviertem Luftzug-Schutz wird die Umrandung in der Umrandungsdistanz vom Objekt gedruckt. Daher kann es bei aktiven Rändern zu Überschneidungen kommen. Um dies zu vermeiden, erhöhen Sie den Wert der Umrandungsdistanz.\n" +"Aktiviert = Umrandung ist so hoch wie das höchste gedruckte Objekt. Andernfalls wird 'Höhe der Umrandungsringe' verwendet." msgid "Enabled" msgstr "Aktiviert" @@ -19806,26 +19960,27 @@ msgstr "Winkel an der Spitze des Kegels, der zum Stabilisieren des Reinigungstur msgid "Maximum wipe tower print speed" msgstr "Maximale Druckgeschwindigkeit des Reinigungsturms" +# AI Translated msgid "" "The maximum print speed when purging in the wipe tower and printing the wipe tower sparse layers. When purging, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" "\n" -"When printing the sparse layers, if the internal perimeter speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +"When printing the sparse layers, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" "\n" "Increasing this speed may affect the tower's stability as well as increase the force with which the nozzle collides with any blobs that may have formed on the wipe tower.\n" "\n" "Before increasing this parameter beyond the default of 90 mm/s, make sure your printer can reliably bridge at the increased speeds and that ooze when tool changing is well controlled.\n" "\n" -"For the wipe tower external perimeters the internal perimeter speed is used regardless of this setting." +"For the wipe tower external perimeters the internal perimeter speed is used, also limited by this setting." msgstr "" -"Die maximale Druckgeschwindigkeit beim Reinigen im Reinigungsturm und beim Drucken der dünnen Schichten des Reinigungsturms. Beim Reinigen wird, wenn die Geschwindigkeit des dünnen Infill oder die berechnete Geschwindigkeit aus der maximalen Volumengeschwindigkeit des Filaments niedriger ist, die niedrigste verwendet.\n" +"Die maximale Druckgeschwindigkeit beim Reinigen im Reinigungsturm und beim Drucken der dünnen Schichten des Reinigungsturms. Beim Reinigen wird, wenn die Geschwindigkeit der Füllung oder die aus der maximalen volumetrischen Geschwindigkeit des Filaments berechnete Geschwindigkeit niedriger ist, die niedrigste verwendet.\n" "\n" -"Beim Drucken der dünnen Schichten wird, wenn die Geschwindigkeit des inneren Umfangs oder die berechnete Geschwindigkeit aus der maximalen Volumengeschwindigkeit des Filaments niedriger ist, die niedrigste verwendet.\n" +"Beim Drucken der dünnen Schichten wird, wenn die Geschwindigkeit der Füllung oder die aus der maximalen volumetrischen Geschwindigkeit des Filaments berechnete Geschwindigkeit niedriger ist, die niedrigste verwendet.\n" "\n" "Das Erhöhen dieser Geschwindigkeit kann die Stabilität des Turms beeinträchtigen sowie die Kraft erhöhen, mit der die Düse auf mögliche Klumpen trifft, die sich auf dem Reinigungsturm gebildet haben.\n" "\n" -"Bevor Sie diesen Parameter über den Standardwert von 90 mm/s erhöhen, stellen Sie sicher, dass Ihr Druckerzuverlässig bei den erhöhten Geschwindigkeiten Brücken drucken kann und dass das Auslaufen beim Werkzeugwechsel gut kontrolliert wird.\n" +"Bevor Sie diesen Parameter über den Standardwert von 90 mm/s erhöhen, stellen Sie sicher, dass Ihr Drucker bei den erhöhten Geschwindigkeiten zuverlässig Brücken drucken kann und dass das Auslaufen beim Werkzeugwechsel gut kontrolliert wird.\n" "\n" -"Für die äußeren Umfänge des Reinigungsturms wird die Geschwindigkeit des inneren Umfangs unabhängig von dieser Einstellung verwendet." +"Für die äußeren Umfänge des Reinigungsturms wird die Geschwindigkeit des inneren Umfangs verwendet, ebenfalls durch diese Einstellung begrenzt." msgid "Wall type" msgstr "Wandtyp" @@ -19833,14 +19988,14 @@ msgstr "Wandtyp" # AI Translated msgid "" "Wipe tower outer wall type.\n" -"1. Rectangle: The default wall type, a rectangle with fixed width and height.\n" +"1. Rectangle: A rectangle with fixed width and height.\n" "2. Cone: A cone with a fillet at the bottom to help stabilize the wipe tower.\n" -"3. Rib: Adds four ribs to the tower wall for enhanced stability." +"3. Rib: The default wall type, which adds four ribs to the tower wall for enhanced stability." msgstr "" -"Wandtyp des Reinigungsturms.\n" -"1. Rechteck: Der Standard-Wandtyp, ein Rechteck mit fester Breite und Höhe.\n" +"Typ der Außenwand des Reinigungsturms.\n" +"1. Rechteck: Ein Rechteck mit fester Breite und Höhe.\n" "2. Kegel: Ein Kegel mit einer Abrundung am Boden, um den Reinigungsturm zu stabilisieren.\n" -"3. Rippe: Fügt der Turmwand vier Rippen für verbesserte Stabilität hinzu." +"3. Rippe: Der Standard-Wandtyp, der der Turmwand vier Rippen für verbesserte Stabilität hinzufügt." msgid "Rectangle" msgstr "Rechteck" @@ -19932,8 +20087,9 @@ msgstr "Abstand der Reinigungsturmpurges." msgid "Extra flow for purging" msgstr "Zusätzlicher Fluss für Reinigung" -msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker or narrower than they normally would be. The spacing is adjusted automatically." -msgstr "Zusätzlicher Fluss, der für die Reinigungslinien auf dem Reinigungsturm verwendet wird. Dadurch werden die Reinigungslinien dicker oder schmaler, als sie normalerweise wären. Der Abstand wird automatisch angepasst." +# AI Translated +msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker than they normally would be. The spacing is adjusted automatically." +msgstr "Zusätzlicher Fluss, der für die Reinigungslinien auf dem Reinigungsturm verwendet wird. Dadurch werden die Reinigungslinien dicker, als sie normalerweise wären. Der Abstand wird automatisch angepasst." msgid "Idle temperature" msgstr "Leerlauftemperatur" @@ -20051,14 +20207,15 @@ msgstr "Minimale Dicke von dünnen Merkmalen. Merkmale des Modells, die dünner msgid "Minimum wall length" msgstr "Minimale Wandlänge" +# AI Translated msgid "" -"Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. Higher values remove more and longer walls.\n" +"Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. The value is a multiple of the wall width. Higher values remove more and longer walls.\n" "\n" -"NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the Advanced settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." +"NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the 'Walls and surfaces' settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." msgstr "" -"Passen Sie diesen Wert an, um zu verhindern, dass kurze, offene Wände gedruckt werden, was die Druckzeit erhöhen könnte. Höhere Werte entfernen mehr und längere Wände.\n" +"Passen Sie diesen Wert an, um zu verhindern, dass kurze, offene Wände gedruckt werden, was die Druckzeit erhöhen könnte. Der Wert ist ein Vielfaches der Wandbreite. Höhere Werte entfernen mehr und längere Wände.\n" "\n" -"HINWEIS: Die unteren und oberen Oberflächen werden von diesem Wert nicht beeinflusst, um visuelle Lücken an der Außenseite des Modells zu vermeiden. Passen Sie die \"One wall threshold\" in den erweiterten Einstellungen unten an, um die Empfindlichkeit dessen anzupassen, was als obere Oberfläche angesehen wird. \"One wall threshold\" ist nur sichtbar, wenn diese Einstellung über den Standardwert von 0,5 gesetzt ist oder wenn einzelne Wände für die Oberfläche aktiviert sind." +"HINWEIS: Die unteren und oberen Oberflächen werden von diesem Wert nicht beeinflusst, um visuelle Lücken an der Außenseite des Modells zu vermeiden. Passen Sie 'Schwellenwert für eine Wand' in den Einstellungen 'Wände und Oberflächen' unten an, um die Empfindlichkeit dessen anzupassen, was als obere Oberfläche angesehen wird. 'Schwellenwert für eine Wand' ist nur sichtbar, wenn diese Einstellung über den Standardwert von 0,5 gesetzt ist oder wenn 'Nur eine Wand auf den oberen Flächen' aktiviert ist." msgid "Maximum wall resolution" msgstr "Maximale Wandauflösung" @@ -23962,9 +24119,6 @@ msgstr "Intelligente Filamentzuweisung aktivieren: Ein Filament mehreren Düsen msgid "File Saving" msgstr "Datei speichern" -msgid "Don't remind me again" -msgstr "Nicht mehr erinnern" - msgid "No further pop-up will appear. You can reopen it in 'Preferences'" msgstr "Es wird kein weiteres Popup angezeigt. Sie können es in 'Einstellungen' " @@ -34460,6 +34614,170 @@ msgstr "" "Verwerfungen vermeiden\n" "Wussten Sie, dass beim Drucken von Materialien, die zu Verwerfungen neigen, wie z.B. ABS, durch eine entsprechende Erhöhung der Heizbetttemperatur die Wahrscheinlichkeit von Verwerfungen verringert werden kann?" +#~ msgid "" +#~ "Line width of the Bridge. If expressed as a %, it will be computed over the nozzle diameter.\n" +#~ "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" +#~ "\n" +#~ "The maximum value is 100% or the nozzle diameter.\n" +#~ "If set to 0, the line width will match the Internal solid infill width." +#~ msgstr "" +#~ "Linienbreite der Brücke. Wenn als % angegeben, wird sie über den Düsendurchmesser berechnet.\n" +#~ "Empfohlen in Verbindung mit einer höheren Brückendichte oder einer höheren Brückenflussrate.\n" +#~ "\n" +#~ "Der maximale Wert beträgt 100% oder der Düsendurchmesser.\n" +#~ "Wenn auf 0 gesetzt, entspricht die Linienbreite der Breite der inneren festen Füllung." + +# AI Translated +#, no-c-format, no-boost-format +#~ msgid "" +#~ "Enable this option to slow down printing in areas where perimeters may have curled upwards.\n" +#~ "For example, additional slowdown will be applied when printing overhangs on sharp corners like the front of the Benchy hull, reducing curling which compounds over multiple layers.\n" +#~ "\n" +#~ "It is generally recommended to have this option switched on unless your printer cooling is powerful enough or the print speed is slow enough that perimeter curling does not happen. \n" +#~ "If printing with a high external perimeter speed, this parameter may introduce wall artifacts when slowing down, due to the potentially large variance in print speeds causing the extruder to be unable to keep up with the requested flow change.\n" +#~ "Root cause of these artifacts is most likely PA tuning being slightly off, especially when combined with a high PA smooth time.\n" +#~ "\n" +#~ "Recommendations when enabling this option:\n" +#~ "1. Reduce Pressure Advance smooth time to 0.015 - 0.02 so the extruder reacts quickly to the speed changes.\n" +#~ "2. Increase the minimum print speeds to limit the magnitude of the slowdown and reduce the variance between fast and slow segments.\n" +#~ "3. If artifacts still appear, enable Extrusion Rate Smoothing (ERS) to further smooth the flow transitions.\n" +#~ "\n" +#~ "Note: When this option is enabled, overhang perimeters are treated like overhangs, meaning the overhang speed is applied even if the overhanging perimeter is part of a bridge.\n" +#~ "For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 100% overhang speed will be applied." +#~ msgstr "" +#~ "Aktivieren Sie diese Option, um den Druck in Bereichen zu verlangsamen, in denen sich die Umfänge möglicherweise nach oben gekrümmt haben.\n" +#~ "Zum Beispiel wird bei der Druckung von Überhängen an scharfen Ecken wie dem Vorderteil der Benchy-Hülle eine zusätzliche Verlangsamung angewendet, um das Krümmen zu reduzieren, das sich über mehrere Schichten hinweg verstärkt.\n" +#~ "\n" +#~ "Es wird in der Regel empfohlen, diese Option aktiviert zu lassen, es sei denn, Ihre Druckerkühlung ist stark genug oder die Druckgeschwindigkeit ist langsam genug, sodass sich Umfänge nicht krümmen. \n" +#~ "Wenn Sie mit einer hohen externen Umfangsgeschwindigkeit drucken, kann dieser Parameter bei der Verlangsamung Wandartefakte verursachen, da die potentiell große Varianz der Druckgeschwindigkeiten den Extruder daran hindert, dem geforderten Fließänderungsverlauf zu folgen.\n" +#~ "Die Ursache dieser Artefakte ist in der Regel eine leicht abweichende PA-Einstellung, insbesondere in Kombination mit einer hohen PA-Glättungszeit.\n" +#~ "\n" +#~ "Empfehlungen bei Aktivierung dieser Option:\n" +#~ "1. Reduzieren Sie die Glättungszeit für Pressure Advance auf 0,015 - 0,02, damit der Extruder schnell auf Geschwindigkeitsänderungen reagieren kann.\n" +#~ "2. Erhöhen Sie die Mindestdruckgeschwindigkeiten, um die Schwankung zwischen den schnellen und langsamen Segmenten zu begrenzen.\n" +#~ "3. Wenn Artefakte weiterhin auftreten, aktivieren Sie die Glättung der Extrusionsrate (ERS), um die Übergänge der Fließrate weiter zu glätten.\n" +#~ "\n" +#~ "Hinweis: Wenn diese Option aktiviert ist, werden die Überhangumfänge wie Überhänge behandelt, was bedeutet, dass die Überhanggeschwindigkeit auch dann angewendet wird, wenn der überhängende Umfang Teil einer Brücke ist.\n" +#~ "Zum Beispiel wird für Umfänge, die zu 100 % ohne stützende Wand darunter überhängen, die Überhanggeschwindigkeit für 100 % ohne Abstützung angewendet." + +#~ msgid "" +#~ "Speed of the externally visible bridge extrusions.\n" +#~ "\n" +#~ "In addition, if Slow down for curled perimeters is disabled or Classic overhang mode is enabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." +#~ msgstr "" +#~ "Geschwindigkeit der extern sichtbaren Brückenextrusionen.\n" +#~ "\n" +#~ "Darüber hinaus wird, wenn die Option zum Verlangsamen von gekrümmten Umfängen deaktiviert ist oder der klassische Überhangsmodus aktiviert ist, die Druckgeschwindigkeit der Überhangswände, die zu weniger als 13 % gestützt sind, ob sie Teil einer Brücke oder eines Überhangs sind." + +#~ msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above. Set to zero for auto." +#~ msgstr "Diese separate Einstellung beeinflusst die Geschwindigkeit von Umfängen mit einem Radius <= small_perimeter_threshold (normalerweise Löcher). Wenn es als Prozentsatz ausgedrückt wird (z.B. 80%), wird es auf die oben genannte Einstellung der Geschwindigkeit der Außenwand berechnet. Setzen Sie es auf Null für automatisch." + +# AI Translated +#~ msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above. Set to zero for auto." +#~ msgstr "Wie „Feine Strukturen“, aber für Stützen. Diese separate Einstellung wirkt sich auf die Geschwindigkeit der Stützen für Bereiche <= `small_support_perimeter_threshold` aus. Wenn als Prozentsatz angegeben (zum Beispiel: 80 %), wird sie auf die obige Geschwindigkeitseinstellung für Stützen oder Stützschnittstellen berechnet. Auf null setzen für automatisch." + +#~ msgid "" +#~ "Print sequence of the internal (inner) and external (outer) walls.\n" +#~ "\n" +#~ "Use Inner/Outer for best overhangs. This is because the overhanging walls can adhere to a neighbouring perimeter while printing. However, this option results in slightly reduced surface quality as the external perimeter is deformed by being squashed to the internal perimeter.\n" +#~ "\n" +#~ "Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended against the Outer/Inner option in most cases.\n" +#~ "\n" +#~ "Use Outer/Inner for the same external wall quality and dimensional accuracy benefits of Inner/Outer/Inner option. However, the Z seams will appear less consistent as the first extrusion of a new layer starts on a visible surface." +#~ msgstr "" +#~ "Druckreihenfolge der inneren und äußeren Wände.\n" +#~ "\n" +#~ "Verwenden Sie Innen/Außen für die besten Überhänge. Dies liegt daran, dass die überhängenden Wände beim Drucken an eine benachbarte Umfangsfläche haften können. Diese Option führt jedoch zu einer geringfügig reduzierten Oberflächenqualität, da die Außenwand durch das Zusammendrücken der Innenwand verformt wird.\n" +#~ "\n" +#~ "Verwenden Sie Innen/Außen/Innen für die beste Oberflächenqualität und dimensionale Genauigkeit, da die Außenwand ungestört von einer inneren Wand gedruckt wird. Die Überhangsleistung wird jedoch verringert, da keine innere Wand vorhanden ist, um die Außenwand zu drucken. Diese Option erfordert ein Minimum von 3 Wänden, um wirksam zu sein, da die inneren Wände ab der 3. Umfangsfläche zuerst gedruckt werden, dann die äußere Umfangsfläche und schließlich die erste innere Umfangsfläche. Diese Option wird in den meisten Fällen gegen die Option Außen/Innen empfohlen.\n" +#~ "\n" +#~ "Verwenden Sie Außen/Innen für die gleiche externe Wandqualität und dimensionale Genauigkeit wie die Option Innen/Außen/Innen. Die Z-Nähte werden jedoch weniger konsistent erscheinen, da die erste Extrusion einer neuen Schicht auf einer sichtbaren Oberfläche beginnt." + +#~ msgid "This is the speed for the first layer except for solid infill sections." +#~ msgstr "Geschwindigkeit der ersten Schicht mit Ausnahme der massiven Füllung." + +#~ msgid "This is the speed for solid infill parts of the first layer." +#~ msgstr "Geschwindigkeit des massiven Füllung der ersten Schicht." + +#, no-c-format, no-boost-format +#~ msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to line width of sparse infill. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." +#~ msgstr "Die Füllfläche wird leicht vergrößert, um mit der Wand zu überlappen und eine bessere Haftung zu gewährleisten. Der Prozentwert bezieht sich auf die Linienbreite der spärlichen Füllung. Setzen Sie diesen Wert auf ~10-15%, um eine mögliche Überextrusion und Materialansammlung zu minimieren, die zu rauen Oberflächen führen kann." + +#, no-c-format, no-boost-format +#~ msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to line width of sparse infill." +#~ msgstr "Der obere massive Füllbereich wird leicht vergrößert, um mit der Wand zu überlappen und eine bessere Haftung zu gewährleisten und das Auftreten von Pinholes zu minimieren, wo die obere Füllung auf die Wände trifft. Ein Wert von 25-30% ist ein guter Ausgangspunkt, um das Auftreten von Pinholes zu minimieren. Der Prozentwert bezieht sich auf die Linienbreite der spärlichen Füllung." + +#~ msgid "Interlocking depth of a segmented region. It will be ignored if \"mmu_segmented_region_max_width\" is zero or if \"mmu_segmented_region_interlocking_depth\" is bigger than \"mmu_segmented_region_max_width\". Zero disables this feature." +#~ msgstr "Interlock-Tiefe eines segmentierten Bereichs. Es wird ignoriert, wenn \"mmu_segmented_region_max_width\" null ist oder wenn \"mmu_segmented_region_interlocking_depth\" größer ist als \"mmu_segmented_region_max_width\". Null deaktiviert diese Funktion." + +#~ msgid "" +#~ "Reduce the height of top-surface perimeters to match the model edge height.\n" +#~ "Affects perimeters with a slope less than this angle (degrees).\n" +#~ "A reasonable value is 35. Set to 0 to disable." +#~ msgstr "" +#~ "Reduziert die Höhe der oberen Oberflächenumrandungen, um der Modellkante zu entsprechen.\n" +#~ "Wirkt sich auf Umrandungen mit einer Neigung unterhalb dieses Winkels (Grad) aus.\n" +#~ "Ein vernünftiger Wert ist 35. Auf 0 setzen, um zu deaktivieren." + +#~ msgid "Role base wipe speed" +#~ msgstr "Rollenbasierte Wipe Geschwindigkeit" + +#~ msgid "" +#~ "A draft shield is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft. It is usually needed only with open frame printers, i.e. without an enclosure.\n" +#~ "\n" +#~ "Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used.\n" +#~ "Note: With the draft shield active, the skirt will be printed at skirt distance from the object. Therefore, if brims are active it may intersect with them. To avoid this, increase the skirt distance value.\n" +#~ msgstr "" +#~ "Ein Luftzug-Schutz ist nützlich, um einen ABS- oder ASA-Druck vor Verzug und dem Ablösen vom Druckbett aufgrund von Windzug zu schützen. Er wird normalerweise nur bei offenen Druckern benötigt, d.h. ohne Gehäuse.\n" +#~ "\n" +#~ "Aktiviert = Umrandung ist so hoch wie das höchste gedruckte Objekt. Andernfalls wird 'Höhe der Umrandung' verwendet.\n" +#~ "Hinweis: Mit aktiviertem Luftzug-Schutz wird die Umrandung in der Umrandungsdistanz vom Objekt gedruckt. Daher kann es bei aktiven Rändern zu Überschneidungen kommen. Um dies zu vermeiden, erhöhen Sie den Wert der Umrandungsdistanz.\n" + +#~ msgid "" +#~ "The maximum print speed when purging in the wipe tower and printing the wipe tower sparse layers. When purging, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +#~ "\n" +#~ "When printing the sparse layers, if the internal perimeter speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +#~ "\n" +#~ "Increasing this speed may affect the tower's stability as well as increase the force with which the nozzle collides with any blobs that may have formed on the wipe tower.\n" +#~ "\n" +#~ "Before increasing this parameter beyond the default of 90 mm/s, make sure your printer can reliably bridge at the increased speeds and that ooze when tool changing is well controlled.\n" +#~ "\n" +#~ "For the wipe tower external perimeters the internal perimeter speed is used regardless of this setting." +#~ msgstr "" +#~ "Die maximale Druckgeschwindigkeit beim Reinigen im Reinigungsturm und beim Drucken der dünnen Schichten des Reinigungsturms. Beim Reinigen wird, wenn die Geschwindigkeit des dünnen Infill oder die berechnete Geschwindigkeit aus der maximalen Volumengeschwindigkeit des Filaments niedriger ist, die niedrigste verwendet.\n" +#~ "\n" +#~ "Beim Drucken der dünnen Schichten wird, wenn die Geschwindigkeit des inneren Umfangs oder die berechnete Geschwindigkeit aus der maximalen Volumengeschwindigkeit des Filaments niedriger ist, die niedrigste verwendet.\n" +#~ "\n" +#~ "Das Erhöhen dieser Geschwindigkeit kann die Stabilität des Turms beeinträchtigen sowie die Kraft erhöhen, mit der die Düse auf mögliche Klumpen trifft, die sich auf dem Reinigungsturm gebildet haben.\n" +#~ "\n" +#~ "Bevor Sie diesen Parameter über den Standardwert von 90 mm/s erhöhen, stellen Sie sicher, dass Ihr Druckerzuverlässig bei den erhöhten Geschwindigkeiten Brücken drucken kann und dass das Auslaufen beim Werkzeugwechsel gut kontrolliert wird.\n" +#~ "\n" +#~ "Für die äußeren Umfänge des Reinigungsturms wird die Geschwindigkeit des inneren Umfangs unabhängig von dieser Einstellung verwendet." + +# AI Translated +#~ msgid "" +#~ "Wipe tower outer wall type.\n" +#~ "1. Rectangle: The default wall type, a rectangle with fixed width and height.\n" +#~ "2. Cone: A cone with a fillet at the bottom to help stabilize the wipe tower.\n" +#~ "3. Rib: Adds four ribs to the tower wall for enhanced stability." +#~ msgstr "" +#~ "Wandtyp des Reinigungsturms.\n" +#~ "1. Rechteck: Der Standard-Wandtyp, ein Rechteck mit fester Breite und Höhe.\n" +#~ "2. Kegel: Ein Kegel mit einer Abrundung am Boden, um den Reinigungsturm zu stabilisieren.\n" +#~ "3. Rippe: Fügt der Turmwand vier Rippen für verbesserte Stabilität hinzu." + +#~ msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker or narrower than they normally would be. The spacing is adjusted automatically." +#~ msgstr "Zusätzlicher Fluss, der für die Reinigungslinien auf dem Reinigungsturm verwendet wird. Dadurch werden die Reinigungslinien dicker oder schmaler, als sie normalerweise wären. Der Abstand wird automatisch angepasst." + +#~ msgid "" +#~ "Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. Higher values remove more and longer walls.\n" +#~ "\n" +#~ "NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the Advanced settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." +#~ msgstr "" +#~ "Passen Sie diesen Wert an, um zu verhindern, dass kurze, offene Wände gedruckt werden, was die Druckzeit erhöhen könnte. Höhere Werte entfernen mehr und längere Wände.\n" +#~ "\n" +#~ "HINWEIS: Die unteren und oberen Oberflächen werden von diesem Wert nicht beeinflusst, um visuelle Lücken an der Außenseite des Modells zu vermeiden. Passen Sie die \"One wall threshold\" in den erweiterten Einstellungen unten an, um die Empfindlichkeit dessen anzupassen, was als obere Oberfläche angesehen wird. \"One wall threshold\" ist nur sichtbar, wenn diese Einstellung über den Standardwert von 0,5 gesetzt ist oder wenn einzelne Wände für die Oberfläche aktiviert sind." + # AI Translated #, boost-format #~ msgid "Split into %1% part" diff --git a/localization/i18n/en/OrcaSlicer_en.po b/localization/i18n/en/OrcaSlicer_en.po index 96c506f22b..0de3e610d9 100644 --- a/localization/i18n/en/OrcaSlicer_en.po +++ b/localization/i18n/en/OrcaSlicer_en.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-10-13 09:55-0300\n" +"POT-Creation-Date: 2026-10-14 10:04-0300\n" "PO-Revision-Date: 2026-06-17 15:44-0300\n" "Last-Translator: Alexandre Folle de Menezes\n" "Language-Team: \n" @@ -2244,6 +2244,48 @@ msgstr "" msgid "Privacy Policy Update" msgstr "" +msgid "All your filament presets are available on the printers they were made for." +msgstr "" + +msgid "Migrate Filament Presets" +msgstr "" + +msgid "" +"OrcaSlicer 2.5.0 restructured many system filament presets to fix incorrect profiles and prepare for future features. As a result, the presets below no longer show on some printers they were made for. Sorry for the trouble; this is a one-time fix.\n" +"\n" +"Add those printers back to your presets now? Your presets are backed up first. You can also do this later from Help > Migrate Filament Presets." +msgstr "" + +#, boost-format +msgid "%1% (based on %2%)" +msgstr "" + +msgid "Don't remind me again" +msgstr "" + +msgid "Your presets could not be backed up, so they were not migrated." +msgstr "" + +msgid "The user presets folder could not be locked, so nothing was migrated. Another OrcaSlicer instance may be saving presets; try again later from Help > Migrate Filament Presets." +msgstr "" + +#, boost-format +msgid "" +"Your filament presets could not be migrated. A backup of your presets was saved to:\n" +"%1%" +msgstr "" + +#, boost-format +msgid "" +"Your filament presets were migrated. Select them again in the filament list where you used them.\n" +"\n" +"A backup of your presets was saved to:\n" +"%1%" +msgstr "" + +msgid "These presets could not be migrated:" +msgstr "" + #, c-format, boost-format msgid "your Orca Cloud profile (user ID: \"%s\")" msgstr "" @@ -2915,6 +2957,48 @@ msgstr "" msgid "Center" msgstr "" +msgid "Distribute left-right" +msgstr "" + +msgid "Distribute front-back" +msgstr "" + +msgid "Distribute top-bottom" +msgstr "" + +msgid "Align left" +msgstr "" + +msgid "Align left-right center" +msgstr "" + +msgid "Align right" +msgstr "" + +msgid "Align front" +msgstr "" + +msgid "Align front-back center" +msgstr "" + +msgid "Align back" +msgstr "" + +msgid "Align bottom" +msgstr "" + +msgid "Align top-bottom center" +msgstr "" + +msgid "Align top" +msgstr "" + +msgid "Align/Distribute" +msgstr "" + +msgid "Align and distribute objects" +msgstr "" + msgid "Drop" msgstr "" @@ -6143,6 +6227,9 @@ msgstr "" msgid "Show Configuration Folder" msgstr "" +msgid "Bring back filament presets that a profile update removed from printers they were made for" +msgstr "" + msgid "Troubleshoot Center" msgstr "" @@ -12661,6 +12748,16 @@ msgstr "" msgid "a perimeter is fully inside a modifier, the modifier was not applied to it (%1%)" msgstr "" +#. TRN: %1% is the modifier type "Seam Blocked" as in the menu, %2% the modifier name, %3% the object name. +#, boost-format +msgid "%1% modifier \"%2%\" of \"%3%\" covers an entire perimeter" +msgstr "" + +#. TRN: %1% is the modifier type "Seam Blocked" as in the menu, %2% the modifier name, %3% the object name, %4% the number of modifiers. +#, boost-format +msgid "%1% modifier \"%2%\" of \"%3%\" (%4% in total) covers an entire perimeter" +msgstr "" + #, boost-format msgid "modifier \"%1%\" of \"%2%\" had no effect on the seam (it might not reach the centerline of the printed perimeter)" msgstr "" @@ -13524,7 +13621,7 @@ msgid "" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" -"If set to 0, the line width will match the Internal solid infill width." +"If set to 0, the line width will match the Internal solid infill width, or the nozzle diameter for thick bridges." msgstr "" msgid "Internal bridge flow ratio" @@ -13752,7 +13849,7 @@ msgid "" "3. If artifacts still appear, enable Extrusion Rate Smoothing (ERS) to further smooth the flow transitions.\n" "\n" "Note: When this option is enabled, overhang perimeters are treated like overhangs, meaning the overhang speed is applied even if the overhanging perimeter is part of a bridge.\n" -"For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 100% overhang speed will be applied." +"For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 75% overhang speed will be applied, limited by the bridge speed." msgstr "" msgid "mm/s or %" @@ -13761,7 +13858,7 @@ msgstr "" msgid "" "Speed of the externally visible bridge extrusions.\n" "\n" -"In addition, if Slow down for curled perimeters is disabled or Classic overhang mode is enabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." +"In addition, if Slow down for curled perimeters is disabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." msgstr "" msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%." @@ -14210,7 +14307,7 @@ msgstr "" msgid "Small perimeters" msgstr "" -msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above. Set to zero for auto." +msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above." msgstr "" msgid "Small perimeters threshold" @@ -14222,7 +14319,7 @@ msgstr "" msgid "Small support perimeters" msgstr "" -msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above. Set to zero for auto." +msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above." msgstr "" msgid "Small support perimeters threshold" @@ -14239,7 +14336,7 @@ msgid "" "\n" "Use Inner/Outer for best overhangs. This is because the overhanging walls can adhere to a neighbouring perimeter while printing. However, this option results in slightly reduced surface quality as the external perimeter is deformed by being squashed to the internal perimeter.\n" "\n" -"Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended against the Outer/Inner option in most cases.\n" +"Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended over the Outer/Inner option in most cases.\n" "\n" "Use Outer/Inner for the same external wall quality and dimensional accuracy benefits of Inner/Outer/Inner option. However, the Z seams will appear less consistent as the first extrusion of a new layer starts on a visible surface." msgstr "" @@ -15063,13 +15160,13 @@ msgstr "" msgid "Height of the first layer. Making the first layer height thicker can improve build plate adhesion." msgstr "" -msgid "This is the speed for the first layer except for solid infill sections." +msgid "This is the speed for the walls and brim of the first layer." msgstr "" msgid "First layer infill" msgstr "" -msgid "This is the speed for solid infill parts of the first layer." +msgid "This is the speed for the first layer except for walls and brim, such as infill, gap fill and support." msgstr "" msgid "First layer travel speed" @@ -15688,14 +15785,14 @@ msgid "Infill/wall overlap" msgstr "" #, no-c-format, no-boost-format -msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to line width of sparse infill. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." +msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to the inner wall line width. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." msgstr "" msgid "Top/Bottom solid infill/wall overlap" msgstr "" #, no-c-format, no-boost-format -msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to line width of sparse infill." +msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to the inner wall line width." msgstr "" msgid "This is the speed for internal sparse infill." @@ -15722,7 +15819,7 @@ msgstr "" msgid "Interlocking depth of a segmented region" msgstr "" -msgid "Interlocking depth of a segmented region. It will be ignored if \"mmu_segmented_region_max_width\" is zero or if \"mmu_segmented_region_interlocking_depth\" is bigger than \"mmu_segmented_region_max_width\". Zero disables this feature." +msgid "Interlocking depth of a segmented region. On every other layer, the segmented region is limited to this depth. It will be ignored if \"interlocking_beam\" is enabled. Zero disables this feature." msgstr "" msgid "Use beam interlocking" @@ -15826,7 +15923,7 @@ msgstr "" msgid "" "Reduce the height of top-surface perimeters to match the model edge height.\n" -"Affects perimeters with a slope less than this angle (degrees).\n" +"Affects perimeters with a slope greater than this angle (degrees).\n" "A reasonable value is 35. Set to 0 to disable." msgstr "" @@ -16702,7 +16799,7 @@ msgstr "" msgid "Use scarf joint for inner walls as well." msgstr "" -msgid "Role base wipe speed" +msgid "Role based wipe speed" msgstr "" msgid "The wipe speed is determined by the speed of the current extrusion role. e.g. if a wipe action is executed immediately following an outer wall extrusion, the speed of the outer wall extrusion will be utilized for the wipe action." @@ -16780,8 +16877,7 @@ msgstr "" msgid "" "A draft shield is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft. It is usually needed only with open frame printers, i.e. without an enclosure.\n" "\n" -"Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used.\n" -"Note: With the draft shield active, the skirt will be printed at skirt distance from the object. Therefore, if brims are active it may intersect with them. To avoid this, increase the skirt distance value.\n" +"Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used." msgstr "" msgid "Enabled" @@ -17761,13 +17857,13 @@ msgstr "" msgid "" "The maximum print speed when purging in the wipe tower and printing the wipe tower sparse layers. When purging, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" "\n" -"When printing the sparse layers, if the internal perimeter speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +"When printing the sparse layers, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" "\n" "Increasing this speed may affect the tower's stability as well as increase the force with which the nozzle collides with any blobs that may have formed on the wipe tower.\n" "\n" "Before increasing this parameter beyond the default of 90 mm/s, make sure your printer can reliably bridge at the increased speeds and that ooze when tool changing is well controlled.\n" "\n" -"For the wipe tower external perimeters the internal perimeter speed is used regardless of this setting." +"For the wipe tower external perimeters the internal perimeter speed is used, also limited by this setting." msgstr "" msgid "Wall type" @@ -17775,9 +17871,9 @@ msgstr "" msgid "" "Wipe tower outer wall type.\n" -"1. Rectangle: The default wall type, a rectangle with fixed width and height.\n" +"1. Rectangle: A rectangle with fixed width and height.\n" "2. Cone: A cone with a fillet at the bottom to help stabilize the wipe tower.\n" -"3. Rib: Adds four ribs to the tower wall for enhanced stability." +"3. Rib: The default wall type, which adds four ribs to the tower wall for enhanced stability." msgstr "" msgid "Rectangle" @@ -17867,7 +17963,7 @@ msgstr "" msgid "Extra flow for purging" msgstr "" -msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker or narrower than they normally would be. The spacing is adjusted automatically." +msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker than they normally would be. The spacing is adjusted automatically." msgstr "" msgid "Idle temperature" @@ -17978,9 +18074,9 @@ msgid "Minimum wall length" msgstr "" msgid "" -"Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. Higher values remove more and longer walls.\n" +"Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. The value is a multiple of the wall width. Higher values remove more and longer walls.\n" "\n" -"NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the Advanced settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." +"NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the 'Walls and surfaces' settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." msgstr "" msgid "Maximum wall resolution" @@ -21440,9 +21536,6 @@ msgstr "" msgid "File Saving" msgstr "" -msgid "Don't remind me again" -msgstr "" - msgid "No further pop-up will appear. You can reopen it in 'Preferences'" msgstr "" diff --git a/localization/i18n/es/OrcaSlicer_es.po b/localization/i18n/es/OrcaSlicer_es.po index 79d15213d5..7b5bb90146 100644 --- a/localization/i18n/es/OrcaSlicer_es.po +++ b/localization/i18n/es/OrcaSlicer_es.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-10-13 09:55-0300\n" +"POT-Creation-Date: 2026-10-14 10:04-0300\n" "PO-Revision-Date: \n" "Last-Translator: Ian A. Bassi <>\n" "Language-Team: \n" @@ -2335,6 +2335,66 @@ msgstr "Restricción del plugin de red" msgid "Privacy Policy Update" msgstr "Actualización de política de privacidad" +# AI Translated +msgid "All your filament presets are available on the printers they were made for." +msgstr "Todos sus perfiles de filamento están disponibles en las impresoras para las que se crearon." + +# AI Translated +msgid "Migrate Filament Presets" +msgstr "Migrar perfiles de filamento" + +# AI Translated +msgid "" +"OrcaSlicer 2.5.0 restructured many system filament presets to fix incorrect profiles and prepare for future features. As a result, the presets below no longer show on some printers they were made for. Sorry for the trouble; this is a one-time fix.\n" +"\n" +"Add those printers back to your presets now? Your presets are backed up first. You can also do this later from Help > Migrate Filament Presets." +msgstr "" +"OrcaSlicer 2.5.0 reestructuró muchos perfiles de filamento del sistema para corregir perfiles incorrectos y preparar futuras funciones. Como resultado, los perfiles que aparecen a continuación ya no se muestran en algunas de las impresoras para las que se crearon. Disculpe las molestias; es una corrección única.\n" +"\n" +"¿Desea volver a añadir esas impresoras a sus perfiles ahora? Antes se hará una copia de seguridad de sus perfiles. También puede hacerlo más tarde desde Ayuda > Migrar perfiles de filamento." + +# AI Translated +#, boost-format +msgid "%1% (based on %2%)" +msgstr "%1% (basado en %2%)" + +msgid "Don't remind me again" +msgstr "No me recuerdes de nuevo" + +# AI Translated +msgid "Your presets could not be backed up, so they were not migrated." +msgstr "No se pudo hacer una copia de seguridad de sus perfiles, por lo que no se migraron." + +# AI Translated +msgid "The user presets folder could not be locked, so nothing was migrated. Another OrcaSlicer instance may be saving presets; try again later from Help > Migrate Filament Presets." +msgstr "No se pudo bloquear la carpeta de perfiles de usuario, por lo que no se migró nada. Puede que otra instancia de OrcaSlicer esté guardando perfiles; inténtelo de nuevo más tarde desde Ayuda > Migrar perfiles de filamento." + +# AI Translated +#, boost-format +msgid "" +"Your filament presets could not be migrated. A backup of your presets was saved to:\n" +"%1%" +msgstr "" +"No se pudieron migrar sus perfiles de filamento. Se guardó una copia de seguridad de sus perfiles en:\n" +"%1%" + +# AI Translated +#, boost-format +msgid "" +"Your filament presets were migrated. Select them again in the filament list where you used them.\n" +"\n" +"A backup of your presets was saved to:\n" +"%1%" +msgstr "" +"Sus perfiles de filamento se migraron. Vuelva a seleccionarlos en la lista de filamentos donde los usaba.\n" +"\n" +"Se guardó una copia de seguridad de sus perfiles en:\n" +"%1%" + +# AI Translated +msgid "These presets could not be migrated:" +msgstr "No se pudieron migrar estos perfiles:" + #, c-format, boost-format msgid "your Orca Cloud profile (user ID: \"%s\")" msgstr "tu perfil de Orca Cloud (ID de usuario: «%s»)" @@ -3037,6 +3097,62 @@ msgstr "(Color perdido)" msgid "Center" msgstr "Centrar" +# AI Translated +msgid "Distribute left-right" +msgstr "Distribuir izquierda-derecha" + +# AI Translated +msgid "Distribute front-back" +msgstr "Distribuir delante-detrás" + +# AI Translated +msgid "Distribute top-bottom" +msgstr "Distribuir arriba-abajo" + +# AI Translated +msgid "Align left" +msgstr "Alinear a la izquierda" + +# AI Translated +msgid "Align left-right center" +msgstr "Alinear al centro izquierda-derecha" + +# AI Translated +msgid "Align right" +msgstr "Alinear a la derecha" + +# AI Translated +msgid "Align front" +msgstr "Alinear delante" + +# AI Translated +msgid "Align front-back center" +msgstr "Alinear al centro delante-detrás" + +# AI Translated +msgid "Align back" +msgstr "Alinear detrás" + +# AI Translated +msgid "Align bottom" +msgstr "Alinear abajo" + +# AI Translated +msgid "Align top-bottom center" +msgstr "Alinear al centro arriba-abajo" + +# AI Translated +msgid "Align top" +msgstr "Alinear arriba" + +# AI Translated +msgid "Align/Distribute" +msgstr "Alinear/Distribuir" + +# AI Translated +msgid "Align and distribute objects" +msgstr "Alinear y distribuir objetos" + msgid "Drop" msgstr "Soltar" @@ -6455,6 +6571,10 @@ msgstr "Asistente de Configuración" msgid "Show Configuration Folder" msgstr "Mostrar Carpeta de Configuración" +# AI Translated +msgid "Bring back filament presets that a profile update removed from printers they were made for" +msgstr "Recuperar los perfiles de filamento que una actualización de perfiles eliminó de las impresoras para las que se crearon" + msgid "Troubleshoot Center" msgstr "Centro de resolución de problemas" @@ -13596,6 +13716,18 @@ msgstr "varias intersecciones con un perímetro; solo se usó una (%1%)" msgid "a perimeter is fully inside a modifier, the modifier was not applied to it (%1%)" msgstr "un perímetro está completamente dentro de un modificador; el modificador no se le aplicó (%1%)" +# AI Translated +#. TRN: %1% is the modifier type "Seam Blocked" as in the menu, %2% the modifier name, %3% the object name. +#, boost-format +msgid "%1% modifier \"%2%\" of \"%3%\" covers an entire perimeter" +msgstr "El modificador %1% «%2%» de «%3%» cubre un perímetro entero" + +# AI Translated +#. TRN: %1% is the modifier type "Seam Blocked" as in the menu, %2% the modifier name, %3% the object name, %4% the number of modifiers. +#, boost-format +msgid "%1% modifier \"%2%\" of \"%3%\" (%4% in total) covers an entire perimeter" +msgstr "El modificador %1% «%2%» de «%3%» (%4% en total) cubre un perímetro entero" + # AI Translated #, boost-format msgid "modifier \"%1%\" of \"%2%\" had no effect on the seam (it might not reach the centerline of the printed perimeter)" @@ -14574,18 +14706,19 @@ msgstr "" "\n" "El flujo de puente real utilizado se calcula multiplicando este valor por la relación de flujo del filamento y, si se ha establecido, por la relación de flujo del objeto." +# AI Translated msgid "" "Line width of the Bridge. If expressed as a %, it will be computed over the nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" -"If set to 0, the line width will match the Internal solid infill width." +"If set to 0, the line width will match the Internal solid infill width, or the nozzle diameter for thick bridges." msgstr "" "Ancho de línea del puente. Si se expresa en porcentaje, se calculará sobre el diámetro de la boquilla.\n" -"Se recomienda utilizarlo con una densidad de puente o una relación de flujo de puente más altas.\n" +"Se recomienda utilizarlo con una densidad de puente o un factor de flujo en puentes más altos.\n" "\n" "El valor máximo es del 100 % o el diámetro de la boquilla.\n" -"Si se establece en 0, el ancho de línea seguirá el ancho del relleno sólido interno." +"Si se establece en 0, el ancho de línea seguirá el ancho del relleno sólido interno, o el diámetro de la boquilla en los puentes gruesos." msgid "Internal bridge flow ratio" msgstr "Factor de flujo de puentes internos" @@ -14868,7 +15001,7 @@ msgid "" "3. If artifacts still appear, enable Extrusion Rate Smoothing (ERS) to further smooth the flow transitions.\n" "\n" "Note: When this option is enabled, overhang perimeters are treated like overhangs, meaning the overhang speed is applied even if the overhanging perimeter is part of a bridge.\n" -"For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 100% overhang speed will be applied." +"For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 75% overhang speed will be applied, limited by the bridge speed." msgstr "" "Active esta opción para ralentizar la impresión en áreas donde los perímetros puedan haberse curvado hacia arriba.\n" "Por ejemplo, se aplicará una ralentización adicional al imprimir voladizos en esquinas afiladas, como la parte frontal del casco de Benchy, reduciendo la curvatura que se acumula en varias capas.\n" @@ -14880,22 +15013,23 @@ msgstr "" "Recomendaciones al activar esta opción:\n" "1. Reduzca el tiempo de suavizado de Pressure Advance a 0,015 - 0,02 para que el extrusor reaccione rápidamente a los cambios de velocidad.\n" "2. Aumente la velocidad mínima de impresión para limitar la magnitud de la ralentización y reducir la variación entre los segmentos rápidos y lentos.\n" -"3. Si aún aparecen artefactos, active la función de suavizado de la velocidad de extrusión (ERS) para suavizar aún más las transiciones del flujo.\n" +"3. Si aún aparecen artefactos, active el Suavizado de la tasa de extrusión (ERS) para suavizar aún más las transiciones del flujo.\n" "\n" "Nota: Cuando esta opción está activada, los perímetros en voladizo se tratan como tales, lo que significa que se aplica la velocidad de voladizo incluso si el perímetro en voladizo forma parte de un puente.\n" -"Por ejemplo, cuando los perímetros sobresalen al 100%, sin ninguna pared que los sostenga por debajo, se aplicará la velocidad de voladizo del 100%." +"Por ejemplo, cuando los perímetros sobresalen al 100%, sin ninguna pared que los sostenga por debajo, se aplicará la velocidad de voladizo del 75%, limitada por la velocidad de puente." msgid "mm/s or %" msgstr "mm/s o %" +# AI Translated msgid "" "Speed of the externally visible bridge extrusions.\n" "\n" -"In addition, if Slow down for curled perimeters is disabled or Classic overhang mode is enabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." +"In addition, if Slow down for curled perimeters is disabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." msgstr "" "Velocidad de las extrusiones de puentes exteriormente visibles.\n" "\n" -"Adicionalmente, si se desactiva la función 'Reducir velocidad en perímetros curvados' o se usa el método Clásico de voladizos, también se utilizará esta velocidad para perímetros en voladizo con menos de un 13% de soporte, ya sean parte de un puento o de un voladizo." +"Adicionalmente, si se desactiva la función 'Reducir velocidad en perímetros curvados', también se utilizará esta velocidad para perímetros en voladizo cuyo soporte es inferior al 13%, ya sean parte de un puente o de un voladizo." msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%." msgstr "Velocidad de los puntes internos. Si se expresa como un porcentaje, será Calculado en base a la velocidad de puente. El valor por defecto es 150%." @@ -15441,8 +15575,9 @@ msgstr "Velocidad del perímetro exterior, que es el más externo y visible. Usa msgid "Small perimeters" msgstr "Perímetros pequeños" -msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above. Set to zero for auto." -msgstr "Este ajuste independiente afectará a la velocidad de los perímetros con radio <= small_perimeter_threshold (normalmente orificios). Si se expresa como un porcentaje (por ejemplo: 80%) se calculará en base al ajuste de velocidad del perímetro exterior anterior. Póngalo a cero para auto." +# AI Translated +msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above." +msgstr "Este ajuste independiente afectará a la velocidad de los perímetros con radio <= small_perimeter_threshold (normalmente orificios). Si se expresa como un porcentaje (por ejemplo: 80%) se calculará en base al ajuste de velocidad del perímetro exterior anterior." msgid "Small perimeters threshold" msgstr "Umbral de Perímetros pequeños" @@ -15453,8 +15588,9 @@ msgstr "Esto configura el umbral de longitud de perímetros pequeños. El umbral msgid "Small support perimeters" msgstr "Perímetros pequeños de soporte" -msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above. Set to zero for auto." -msgstr "Igual que \"Perímetros pequeños\", pero para los soportes. Este ajuste independiente afectará a la velocidad del soporte en áreas <= `small_support_perimeter_threshold`. Si se expresa como porcentaje (por ejemplo: 80%), se calculará sobre el ajuste de velocidad de soporte o de interfaz de soporte anterior. Establécelo a cero para automático." +# AI Translated +msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above." +msgstr "Igual que \"Perímetros pequeños\", pero para los soportes. Este ajuste independiente afectará a la velocidad del soporte en áreas <= `small_support_perimeter_threshold`. Si se expresa como porcentaje (por ejemplo: 80%), se calculará sobre el ajuste de velocidad de soporte o de interfaz de soporte anterior." msgid "Small support perimeters threshold" msgstr "Umbral de perímetros pequeños de soporte" @@ -15465,12 +15601,13 @@ msgstr "Esto establece el umbral para la longitud de los perímetros pequeños d msgid "Walls printing order" msgstr "Orden de impresión de perímetros" +# AI Translated msgid "" "Print sequence of the internal (inner) and external (outer) walls.\n" "\n" "Use Inner/Outer for best overhangs. This is because the overhanging walls can adhere to a neighbouring perimeter while printing. However, this option results in slightly reduced surface quality as the external perimeter is deformed by being squashed to the internal perimeter.\n" "\n" -"Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended against the Outer/Inner option in most cases.\n" +"Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended over the Outer/Inner option in most cases.\n" "\n" "Use Outer/Inner for the same external wall quality and dimensional accuracy benefits of Inner/Outer/Inner option. However, the Z seams will appear less consistent as the first extrusion of a new layer starts on a visible surface." msgstr "" @@ -16400,14 +16537,16 @@ msgstr "Altura de la primera capa" msgid "Height of the first layer. Making the first layer height thicker can improve build plate adhesion." msgstr "Altura de la primera capa. Hacer que la altura de la primera capa sea ligeramente más gruesa puede mejorar la adherencia con la cama de impresión." -msgid "This is the speed for the first layer except for solid infill sections." -msgstr "Velocidad de la primera capa excepto la parte sólida de relleno." +# AI Translated +msgid "This is the speed for the walls and brim of the first layer." +msgstr "Velocidad de los perímetros y del borde de adherencia de la primera capa." msgid "First layer infill" msgstr "Relleno de la primera capa" -msgid "This is the speed for solid infill parts of the first layer." -msgstr "Velocidad de la parte de relleno sólido de la primera capa." +# AI Translated +msgid "This is the speed for the first layer except for walls and brim, such as infill, gap fill and support." +msgstr "Velocidad de la primera capa, excepto los perímetros y el borde de adherencia, como el relleno, el relleno de huecos y los soportes." msgid "First layer travel speed" msgstr "Velocidad de desplazamiento en la primera capa" @@ -17099,16 +17238,18 @@ msgstr "Ancho de línea del relleno interno interno de baja densidad. Si se expr msgid "Infill/wall overlap" msgstr "Solape de relleno/perímetro" +# AI Translated #, no-c-format, no-boost-format -msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to line width of sparse infill. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." -msgstr "El área de relleno se amplía ligeramente para solaparse con el perímetro y mejorar la adherencia. El valor porcentual es relativo al ancho de línea del relleno de baja densidad. Ajuste este valor a ~10-15% para minimizar una potencial sobreextrusión y/o una acumulación de material que resulte en artefactos en las superficies superiores." +msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to the inner wall line width. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." +msgstr "El área de relleno se amplía ligeramente para solaparse con el perímetro y mejorar la adherencia. El valor porcentual es relativo al ancho de línea del perímetro interno. Ajuste este valor a ~10-15% para minimizar una potencial sobreextrusión y/o una acumulación de material que resulte en artefactos en las superficies superiores." msgid "Top/Bottom solid infill/wall overlap" msgstr "Solape de relleno sólido superior/inferior y perímetro" +# AI Translated #, no-c-format, no-boost-format -msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to line width of sparse infill." -msgstr "El área de relleno sólido de cubierta superior/inferior se amplía ligeramente para solaparse con el perímetro, mejorando la adherencia y minimizando la aparición de agujeros cuando el relleno de cubierta superior/inferior se une a los perímetros. Un valor alrededor de 25-30% es un buen punto de partida para minimizar la aparición de agujeros. El valor porcentual es relativo al ancho de línea del relleno de baja densidad." +msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to the inner wall line width." +msgstr "El área de relleno sólido de cubierta superior/inferior se amplía ligeramente para solaparse con el perímetro, mejorando la adherencia y minimizando la aparición de agujeros cuando el relleno de cubierta superior/inferior se une a los perímetros. Un valor alrededor de 25-30% es un buen punto de partida para minimizar la aparición de agujeros. El valor porcentual es relativo al ancho de línea del perímetro interno." msgid "This is the speed for internal sparse infill." msgstr "Velocidad del relleno interno de baja densidad." @@ -17134,8 +17275,9 @@ msgstr "Ancho máximo de una región segmentada. Cero desactiva esta caracterís msgid "Interlocking depth of a segmented region" msgstr "Profundidad de entrelazado de una región segmentada" -msgid "Interlocking depth of a segmented region. It will be ignored if \"mmu_segmented_region_max_width\" is zero or if \"mmu_segmented_region_interlocking_depth\" is bigger than \"mmu_segmented_region_max_width\". Zero disables this feature." -msgstr "Profundidad de enlazado de una región segmentada. Se ignorará si \"mmu_segmented_region_max_width\" es cero o si \"mmu_segmented_region_interlocking_depth \"es mayor que \"mmu_segmented_region_max_width\". El valor cero desactiva esta función." +# AI Translated +msgid "Interlocking depth of a segmented region. On every other layer, the segmented region is limited to this depth. It will be ignored if \"interlocking_beam\" is enabled. Zero disables this feature." +msgstr "Profundidad de entrelazado de una región segmentada. En una de cada dos capas, la región segmentada se limita a esta profundidad. Se ignorará si \"interlocking_beam\" está activado. Cero desactiva esta característica." msgid "Use beam interlocking" msgstr "Usar entrelazado de vigas" @@ -17236,14 +17378,15 @@ msgstr "Activar el contorneado de capas Z (conocido como Z anti-aliasing)." msgid "Minimize wall height angle" msgstr "Minimizar el ángulo de la altura de capa" +# AI Translated msgid "" "Reduce the height of top-surface perimeters to match the model edge height.\n" -"Affects perimeters with a slope less than this angle (degrees).\n" +"Affects perimeters with a slope greater than this angle (degrees).\n" "A reasonable value is 35. Set to 0 to disable." msgstr "" "Reduce la altura de los perímetros de la superficie superior para que coincida con la altura del borde del modelo.\n" -"Afecta a los perímetros con una pendiente inferior a este ángulo (grados).\n" -"Un valor razonable es 35. Establece el valor en 0 para desactivar esta opción." +"Afecta a los perímetros con una pendiente superior a este ángulo (grados).\n" +"Un valor razonable es 35. Establezca el valor en 0 para desactivar esta opción." msgid "Don't alternate fill direction" msgstr "No alternar la dirección de relleno" @@ -18196,7 +18339,8 @@ msgstr "Costura en bisel para perímetros interiores" msgid "Use scarf joint for inner walls as well." msgstr "Utilice también una costura en bisel para perímetros internos." -msgid "Role base wipe speed" +# AI Translated +msgid "Role based wipe speed" msgstr "Velocidad de purga según tipo de línea" msgid "The wipe speed is determined by the speed of the current extrusion role. e.g. if a wipe action is executed immediately following an outer wall extrusion, the speed of the outer wall extrusion will be utilized for the wipe action." @@ -18286,16 +18430,15 @@ msgstr "Limita los bucles de la falda/protector contra corrientes de aire a una msgid "Draft shield" msgstr "Protector contra corrientes de aire" +# AI Translated msgid "" "A draft shield is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft. It is usually needed only with open frame printers, i.e. without an enclosure.\n" "\n" -"Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used.\n" -"Note: With the draft shield active, the skirt will be printed at skirt distance from the object. Therefore, if brims are active it may intersect with them. To avoid this, increase the skirt distance value.\n" +"Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used." msgstr "" "Un protector contra corrientes de aire resulta útil para evitar que una impresión de ABS o ASA se deforme o se despegue de la cama de impresión debido a las corrientes de aire. Por lo general, solo es necesario en impresoras de estructura abierta, es decir, sin carcasa.\n" "\n" -"Si se activa, la falda tendrá la misma altura que el objeto impreso más alto. En caso contrario, se utilizará la «altura de falda».\n" -"Nota: Con el protector contra corrientes de aire activo, el faldón se imprimirá a una distancia determinada del objeto. Por lo tanto, si los bordes están activos, puede que se crucen con ellos. Para evitarlo, aumenta el valor de la distancia de la falda.\n" +"Si se activa, la falda tendrá la misma altura que el objeto impreso más alto. En caso contrario, se utilizará la «Altura de falda»." msgid "Enabled" msgstr "Activado" @@ -19425,26 +19568,27 @@ msgstr "Ángulo del vértice del cono que se usa para estabilizar la torre de pu msgid "Maximum wipe tower print speed" msgstr "Velocidad máxima de impresión de la torre de purga" +# AI Translated msgid "" "The maximum print speed when purging in the wipe tower and printing the wipe tower sparse layers. When purging, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" "\n" -"When printing the sparse layers, if the internal perimeter speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +"When printing the sparse layers, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" "\n" "Increasing this speed may affect the tower's stability as well as increase the force with which the nozzle collides with any blobs that may have formed on the wipe tower.\n" "\n" "Before increasing this parameter beyond the default of 90 mm/s, make sure your printer can reliably bridge at the increased speeds and that ooze when tool changing is well controlled.\n" "\n" -"For the wipe tower external perimeters the internal perimeter speed is used regardless of this setting." +"For the wipe tower external perimeters the internal perimeter speed is used, also limited by this setting." msgstr "" "La velocidad máxima de impresión al purgar en la torre de purga e imprimir las capas de baja densidad de la torre de purga. Al purgar, si la velocidad de relleno de baja densidad o la velocidad calculada a partir de la velocidad volumétrica máxima del filamento es inferior, se utilizará la velocidad más baja.\n" "\n" -"Al imprimir las capas de baja densidad, si la velocidad del perímetro interno o la velocidad calculada a partir de la velocidad volumétrica máxima del filamento es inferior, se utilizará la velocidad más baja.\n" +"Al imprimir las capas de baja densidad, si la velocidad de relleno de baja densidad o la velocidad calculada a partir de la velocidad volumétrica máxima del filamento es inferior, se utilizará la velocidad más baja.\n" "\n" -"Aumentar esta velocidad puede afectar a la estabilidad de la torre, así como aumentar la fuerza con la que la boquilla colisiona con las acummulaciones que se hayan podido formar en la torre de purga.\n" +"Aumentar esta velocidad puede afectar a la estabilidad de la torre, así como aumentar la fuerza con la que la boquilla colisiona con las acumulaciones que se hayan podido formar en la torre de purga.\n" "\n" -"Antes de aumentar este parámetro más allá del valor por defecto de 90mm/s, asegúrese de que su impresora puede puentear de forma fiable a las velocidades aumentadas y que el rezume al cambiar de cabezal está bien controlado.\n" +"Antes de aumentar este parámetro más allá del valor por defecto de 90 mm/s, asegúrese de que su impresora puede puentear de forma fiable a las velocidades aumentadas y que el rezume al cambiar de cabezal está bien controlado.\n" "\n" -"Para los perímetros externos de la torre de purga se utiliza la velocidad del perímetro interno independientemente de este ajuste." +"Para los perímetros externos de la torre de purga se utiliza la velocidad del perímetro interno, también limitada por este ajuste." msgid "Wall type" msgstr "Tipo de pared" @@ -19452,14 +19596,14 @@ msgstr "Tipo de pared" # AI Translated msgid "" "Wipe tower outer wall type.\n" -"1. Rectangle: The default wall type, a rectangle with fixed width and height.\n" +"1. Rectangle: A rectangle with fixed width and height.\n" "2. Cone: A cone with a fillet at the bottom to help stabilize the wipe tower.\n" -"3. Rib: Adds four ribs to the tower wall for enhanced stability." +"3. Rib: The default wall type, which adds four ribs to the tower wall for enhanced stability." msgstr "" -"Tipo de pared externa de la torre de purga.\n" -"1. Rectángulo: Tipo de pared por defecto, un rectángulo con ancho y altura fijos.\n" +"Tipo de perímetro externo de la torre de purga.\n" +"1. Rectángulo: Un rectángulo con ancho y altura fijos.\n" "2. Cono: Un cono con un redondeo en la base para ayudar a estabilizar la torre de purga.\n" -"3. Costilla: Añade cuatro refuerzos a la pared de la torre para mejorar la estabilidad." +"3. Costilla: Tipo de pared por defecto, que añade cuatro refuerzos a la pared de la torre para mejorar la estabilidad." msgid "Rectangle" msgstr "Rectángulo" @@ -19552,8 +19696,9 @@ msgstr "Espaciado de las líneas de purga de la torre de purga." msgid "Extra flow for purging" msgstr "Caudal adicional para purgar" -msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker or narrower than they normally would be. The spacing is adjusted automatically." -msgstr "Flujo extra utilizado para las líneas de purga en la torre de purga. Esto hace que las líneas de purga sean más gruesas o más delgadas de lo normal. La separación se ajusta automáticamente." +# AI Translated +msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker than they normally would be. The spacing is adjusted automatically." +msgstr "Flujo extra utilizado para las líneas de purga en la torre de purga. Esto hace que las líneas de purga sean más gruesas de lo normal. La separación se ajusta automáticamente." msgid "Idle temperature" msgstr "Temperatura de Espera" @@ -19669,14 +19814,15 @@ msgstr "Espesor mínimo de características delgadas. Las características del m msgid "Minimum wall length" msgstr "Longitud mínima de perímetro" +# AI Translated msgid "" -"Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. Higher values remove more and longer walls.\n" +"Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. The value is a multiple of the wall width. Higher values remove more and longer walls.\n" "\n" -"NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the Advanced settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." +"NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the 'Walls and surfaces' settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." msgstr "" -"Ajuste este valor para evitar que se impriman perímetros cortos y no cerrados, lo que podría aumentar el tiempo de impresión. Los valores más altos eliminan más perímetros y más largos.\n" +"Ajuste este valor para evitar que se impriman perímetros cortos y no cerrados, lo que podría aumentar el tiempo de impresión. El valor es un múltiplo del ancho del perímetro. Los valores más altos eliminan más perímetros y más largos.\n" "\n" -"NOTA: Las superficies inferior y superior no se verán afectadas por este valor para evitar huecos visuales en el exterior del modelo. Ajuste \"Umbral para generar un solo perímetro\" en la configuración avanzada para ajustar la sensibilidad de lo que se considera una superficie superior. El \"Umbral para generar un solo perímetro\" sólo es visible si este valor es superior al valor predeterminado de 0,5, o si las superficies superiores de un solo perímetro están activados." +"NOTA: Las superficies inferior y superior no se verán afectadas por este valor para evitar huecos visuales en el exterior del modelo. Ajuste \"Umbral para generar un solo perímetro\" en los ajustes de \"Perímetros y superficies\" que aparecen más abajo para ajustar la sensibilidad de lo que se considera una superficie superior. El \"Umbral para generar un solo perímetro\" solo es visible si este valor es superior al valor predeterminado de 0,5, o si las superficies superiores de un solo perímetro están activadas." msgid "Maximum wall resolution" msgstr "Resolución máxima de la pared" @@ -23572,9 +23718,6 @@ msgstr "Activar la asignación inteligente de filamento: asigna un filamento a v msgid "File Saving" msgstr "Guardado de archivo" -msgid "Don't remind me again" -msgstr "No me recuerdes de nuevo" - msgid "No further pop-up will appear. You can reopen it in 'Preferences'" msgstr "No aparecerá ninguna otra ventana emergente. Puedes volver a abrirla en 'Preferencias'." @@ -34006,6 +34149,169 @@ msgstr "" "Evita la deformación\n" "¿Sabías que al imprimir materiales propensos a la deformación como el ABS, aumentar adecuadamente la temperatura de la cama térmica puede reducir la probabilidad de deformaciones?" +#~ msgid "" +#~ "Line width of the Bridge. If expressed as a %, it will be computed over the nozzle diameter.\n" +#~ "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" +#~ "\n" +#~ "The maximum value is 100% or the nozzle diameter.\n" +#~ "If set to 0, the line width will match the Internal solid infill width." +#~ msgstr "" +#~ "Ancho de línea del puente. Si se expresa en porcentaje, se calculará sobre el diámetro de la boquilla.\n" +#~ "Se recomienda utilizarlo con una densidad de puente o una relación de flujo de puente más altas.\n" +#~ "\n" +#~ "El valor máximo es del 100 % o el diámetro de la boquilla.\n" +#~ "Si se establece en 0, el ancho de línea seguirá el ancho del relleno sólido interno." + +# AI Translated +#, no-c-format, no-boost-format +#~ msgid "" +#~ "Enable this option to slow down printing in areas where perimeters may have curled upwards.\n" +#~ "For example, additional slowdown will be applied when printing overhangs on sharp corners like the front of the Benchy hull, reducing curling which compounds over multiple layers.\n" +#~ "\n" +#~ "It is generally recommended to have this option switched on unless your printer cooling is powerful enough or the print speed is slow enough that perimeter curling does not happen. \n" +#~ "If printing with a high external perimeter speed, this parameter may introduce wall artifacts when slowing down, due to the potentially large variance in print speeds causing the extruder to be unable to keep up with the requested flow change.\n" +#~ "Root cause of these artifacts is most likely PA tuning being slightly off, especially when combined with a high PA smooth time.\n" +#~ "\n" +#~ "Recommendations when enabling this option:\n" +#~ "1. Reduce Pressure Advance smooth time to 0.015 - 0.02 so the extruder reacts quickly to the speed changes.\n" +#~ "2. Increase the minimum print speeds to limit the magnitude of the slowdown and reduce the variance between fast and slow segments.\n" +#~ "3. If artifacts still appear, enable Extrusion Rate Smoothing (ERS) to further smooth the flow transitions.\n" +#~ "\n" +#~ "Note: When this option is enabled, overhang perimeters are treated like overhangs, meaning the overhang speed is applied even if the overhanging perimeter is part of a bridge.\n" +#~ "For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 100% overhang speed will be applied." +#~ msgstr "" +#~ "Active esta opción para ralentizar la impresión en áreas donde los perímetros puedan haberse curvado hacia arriba.\n" +#~ "Por ejemplo, se aplicará una ralentización adicional al imprimir voladizos en esquinas afiladas, como la parte frontal del casco de Benchy, reduciendo la curvatura que se acumula en varias capas.\n" +#~ "\n" +#~ "Generalmente se recomienda tener esta opción activada, a menos que la refrigeración de la impresora sea lo suficientemente potente o la velocidad de impresión lo suficientemente baja como para evitar la curvatura de los perímetros.\n" +#~ "Si imprime con una alta velocidad de perímetro externo, este parámetro puede generar artefactos en las paredes al reducir la velocidad, debido a la posible gran variación en las velocidades de impresión, lo que impide que el extrusor pueda seguir el ritmo del cambio de flujo solicitado.\n" +#~ "La causa principal de estos artefactos probablemente sea un ajuste de PA ligeramente desviado, especialmente cuando se combina con un tiempo de suavizado de PA elevado.\n" +#~ "\n" +#~ "Recomendaciones al activar esta opción:\n" +#~ "1. Reduzca el tiempo de suavizado de Pressure Advance a 0,015 - 0,02 para que el extrusor reaccione rápidamente a los cambios de velocidad.\n" +#~ "2. Aumente la velocidad mínima de impresión para limitar la magnitud de la ralentización y reducir la variación entre los segmentos rápidos y lentos.\n" +#~ "3. Si aún aparecen artefactos, active la función de suavizado de la velocidad de extrusión (ERS) para suavizar aún más las transiciones del flujo.\n" +#~ "\n" +#~ "Nota: Cuando esta opción está activada, los perímetros en voladizo se tratan como tales, lo que significa que se aplica la velocidad de voladizo incluso si el perímetro en voladizo forma parte de un puente.\n" +#~ "Por ejemplo, cuando los perímetros sobresalen al 100%, sin ninguna pared que los sostenga por debajo, se aplicará la velocidad de voladizo del 100%." + +#~ msgid "" +#~ "Speed of the externally visible bridge extrusions.\n" +#~ "\n" +#~ "In addition, if Slow down for curled perimeters is disabled or Classic overhang mode is enabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." +#~ msgstr "" +#~ "Velocidad de las extrusiones de puentes exteriormente visibles.\n" +#~ "\n" +#~ "Adicionalmente, si se desactiva la función 'Reducir velocidad en perímetros curvados' o se usa el método Clásico de voladizos, también se utilizará esta velocidad para perímetros en voladizo con menos de un 13% de soporte, ya sean parte de un puento o de un voladizo." + +#~ msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above. Set to zero for auto." +#~ msgstr "Este ajuste independiente afectará a la velocidad de los perímetros con radio <= small_perimeter_threshold (normalmente orificios). Si se expresa como un porcentaje (por ejemplo: 80%) se calculará en base al ajuste de velocidad del perímetro exterior anterior. Póngalo a cero para auto." + +#~ msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above. Set to zero for auto." +#~ msgstr "Igual que \"Perímetros pequeños\", pero para los soportes. Este ajuste independiente afectará a la velocidad del soporte en áreas <= `small_support_perimeter_threshold`. Si se expresa como porcentaje (por ejemplo: 80%), se calculará sobre el ajuste de velocidad de soporte o de interfaz de soporte anterior. Establécelo a cero para automático." + +#~ msgid "" +#~ "Print sequence of the internal (inner) and external (outer) walls.\n" +#~ "\n" +#~ "Use Inner/Outer for best overhangs. This is because the overhanging walls can adhere to a neighbouring perimeter while printing. However, this option results in slightly reduced surface quality as the external perimeter is deformed by being squashed to the internal perimeter.\n" +#~ "\n" +#~ "Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended against the Outer/Inner option in most cases.\n" +#~ "\n" +#~ "Use Outer/Inner for the same external wall quality and dimensional accuracy benefits of Inner/Outer/Inner option. However, the Z seams will appear less consistent as the first extrusion of a new layer starts on a visible surface." +#~ msgstr "" +#~ "Secuencia de impresión de los perímetros internos y externos.\n" +#~ "\n" +#~ "Utilice Interior/Exterior para obtener los mejores voladizos. Esto se debe a que los perímetros salientes pueden adherirse a un perímetro vecino durante la impresión. Sin embargo, esta opción da como resultado una calidad de superficie ligeramente reducida, ya que el perímetro externo se deforma al aplastarse contra el perímetro interno.\n" +#~ "\n" +#~ "Utilice Interior/Exterior/Interior para obtener el mejor acabado de superficie exterior y precisión dimensional, ya que el perímetro exterior se imprime sin perturbaciones por un perímetro interior. Sin embargo, el rendimiento del voladizo se reducirá al no haber un perímetro interno contra el que imprimir el perímetro externo. Esta opción requiere un mínimo de 3 perímetros para ser efectiva, ya que imprime primero los perímetros interiores a partir del 3er perímetro, después el perímetro exterior y, finalmente, el primer perímetro interior. En la mayoría de los casos, se recomienda utilizar esta opción en lugar de la opción Exterior/Interior.\n" +#~ "\n" +#~ "Utilice Exterior/Interior para obtener la misma calidad en los perímetros exteriores y la misma precisión dimensional que con la opción Interior/Exterior/Interior. Sin embargo, las costuras Z tendrán un peor acabado ya que la primera extrusión de cada capa comienza en una superficie visible." + +#~ msgid "This is the speed for the first layer except for solid infill sections." +#~ msgstr "Velocidad de la primera capa excepto la parte sólida de relleno." + +#~ msgid "This is the speed for solid infill parts of the first layer." +#~ msgstr "Velocidad de la parte de relleno sólido de la primera capa." + +#, no-c-format, no-boost-format +#~ msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to line width of sparse infill. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." +#~ msgstr "El área de relleno se amplía ligeramente para solaparse con el perímetro y mejorar la adherencia. El valor porcentual es relativo al ancho de línea del relleno de baja densidad. Ajuste este valor a ~10-15% para minimizar una potencial sobreextrusión y/o una acumulación de material que resulte en artefactos en las superficies superiores." + +#, no-c-format, no-boost-format +#~ msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to line width of sparse infill." +#~ msgstr "El área de relleno sólido de cubierta superior/inferior se amplía ligeramente para solaparse con el perímetro, mejorando la adherencia y minimizando la aparición de agujeros cuando el relleno de cubierta superior/inferior se une a los perímetros. Un valor alrededor de 25-30% es un buen punto de partida para minimizar la aparición de agujeros. El valor porcentual es relativo al ancho de línea del relleno de baja densidad." + +#~ msgid "Interlocking depth of a segmented region. It will be ignored if \"mmu_segmented_region_max_width\" is zero or if \"mmu_segmented_region_interlocking_depth\" is bigger than \"mmu_segmented_region_max_width\". Zero disables this feature." +#~ msgstr "Profundidad de enlazado de una región segmentada. Se ignorará si \"mmu_segmented_region_max_width\" es cero o si \"mmu_segmented_region_interlocking_depth \"es mayor que \"mmu_segmented_region_max_width\". El valor cero desactiva esta función." + +#~ msgid "" +#~ "Reduce the height of top-surface perimeters to match the model edge height.\n" +#~ "Affects perimeters with a slope less than this angle (degrees).\n" +#~ "A reasonable value is 35. Set to 0 to disable." +#~ msgstr "" +#~ "Reduce la altura de los perímetros de la superficie superior para que coincida con la altura del borde del modelo.\n" +#~ "Afecta a los perímetros con una pendiente inferior a este ángulo (grados).\n" +#~ "Un valor razonable es 35. Establece el valor en 0 para desactivar esta opción." + +#~ msgid "Role base wipe speed" +#~ msgstr "Velocidad de purga según tipo de línea" + +#~ msgid "" +#~ "A draft shield is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft. It is usually needed only with open frame printers, i.e. without an enclosure.\n" +#~ "\n" +#~ "Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used.\n" +#~ "Note: With the draft shield active, the skirt will be printed at skirt distance from the object. Therefore, if brims are active it may intersect with them. To avoid this, increase the skirt distance value.\n" +#~ msgstr "" +#~ "Un protector contra corrientes de aire resulta útil para evitar que una impresión de ABS o ASA se deforme o se despegue de la cama de impresión debido a las corrientes de aire. Por lo general, solo es necesario en impresoras de estructura abierta, es decir, sin carcasa.\n" +#~ "\n" +#~ "Si se activa, la falda tendrá la misma altura que el objeto impreso más alto. En caso contrario, se utilizará la «altura de falda».\n" +#~ "Nota: Con el protector contra corrientes de aire activo, el faldón se imprimirá a una distancia determinada del objeto. Por lo tanto, si los bordes están activos, puede que se crucen con ellos. Para evitarlo, aumenta el valor de la distancia de la falda.\n" + +#~ msgid "" +#~ "The maximum print speed when purging in the wipe tower and printing the wipe tower sparse layers. When purging, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +#~ "\n" +#~ "When printing the sparse layers, if the internal perimeter speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +#~ "\n" +#~ "Increasing this speed may affect the tower's stability as well as increase the force with which the nozzle collides with any blobs that may have formed on the wipe tower.\n" +#~ "\n" +#~ "Before increasing this parameter beyond the default of 90 mm/s, make sure your printer can reliably bridge at the increased speeds and that ooze when tool changing is well controlled.\n" +#~ "\n" +#~ "For the wipe tower external perimeters the internal perimeter speed is used regardless of this setting." +#~ msgstr "" +#~ "La velocidad máxima de impresión al purgar en la torre de purga e imprimir las capas de baja densidad de la torre de purga. Al purgar, si la velocidad de relleno de baja densidad o la velocidad calculada a partir de la velocidad volumétrica máxima del filamento es inferior, se utilizará la velocidad más baja.\n" +#~ "\n" +#~ "Al imprimir las capas de baja densidad, si la velocidad del perímetro interno o la velocidad calculada a partir de la velocidad volumétrica máxima del filamento es inferior, se utilizará la velocidad más baja.\n" +#~ "\n" +#~ "Aumentar esta velocidad puede afectar a la estabilidad de la torre, así como aumentar la fuerza con la que la boquilla colisiona con las acummulaciones que se hayan podido formar en la torre de purga.\n" +#~ "\n" +#~ "Antes de aumentar este parámetro más allá del valor por defecto de 90mm/s, asegúrese de que su impresora puede puentear de forma fiable a las velocidades aumentadas y que el rezume al cambiar de cabezal está bien controlado.\n" +#~ "\n" +#~ "Para los perímetros externos de la torre de purga se utiliza la velocidad del perímetro interno independientemente de este ajuste." + +# AI Translated +#~ msgid "" +#~ "Wipe tower outer wall type.\n" +#~ "1. Rectangle: The default wall type, a rectangle with fixed width and height.\n" +#~ "2. Cone: A cone with a fillet at the bottom to help stabilize the wipe tower.\n" +#~ "3. Rib: Adds four ribs to the tower wall for enhanced stability." +#~ msgstr "" +#~ "Tipo de pared externa de la torre de purga.\n" +#~ "1. Rectángulo: Tipo de pared por defecto, un rectángulo con ancho y altura fijos.\n" +#~ "2. Cono: Un cono con un redondeo en la base para ayudar a estabilizar la torre de purga.\n" +#~ "3. Costilla: Añade cuatro refuerzos a la pared de la torre para mejorar la estabilidad." + +#~ msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker or narrower than they normally would be. The spacing is adjusted automatically." +#~ msgstr "Flujo extra utilizado para las líneas de purga en la torre de purga. Esto hace que las líneas de purga sean más gruesas o más delgadas de lo normal. La separación se ajusta automáticamente." + +#~ msgid "" +#~ "Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. Higher values remove more and longer walls.\n" +#~ "\n" +#~ "NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the Advanced settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." +#~ msgstr "" +#~ "Ajuste este valor para evitar que se impriman perímetros cortos y no cerrados, lo que podría aumentar el tiempo de impresión. Los valores más altos eliminan más perímetros y más largos.\n" +#~ "\n" +#~ "NOTA: Las superficies inferior y superior no se verán afectadas por este valor para evitar huecos visuales en el exterior del modelo. Ajuste \"Umbral para generar un solo perímetro\" en la configuración avanzada para ajustar la sensibilidad de lo que se considera una superficie superior. El \"Umbral para generar un solo perímetro\" sólo es visible si este valor es superior al valor predeterminado de 0,5, o si las superficies superiores de un solo perímetro están activados." + # AI Translated #, boost-format #~ msgid "Split into %1% part" diff --git a/localization/i18n/eu/OrcaSlicer_eu.po b/localization/i18n/eu/OrcaSlicer_eu.po index af2ef409e8..136807faa8 100644 --- a/localization/i18n/eu/OrcaSlicer_eu.po +++ b/localization/i18n/eu/OrcaSlicer_eu.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-10-13 09:55-0300\n" +"POT-Creation-Date: 2026-10-14 10:04-0300\n" "PO-Revision-Date: 2026-07-20 13:33+0200\n" "Last-Translator: Manu Goiogana \n" "Language-Team: \n" @@ -2370,6 +2370,66 @@ msgstr "Sareko pluginean murrizketak" msgid "Privacy Policy Update" msgstr "Pribatutasun politikaren eguneraketa" +# AI Translated +msgid "All your filament presets are available on the printers they were made for." +msgstr "Zure filamentu-aurrezarpen guztiak sortu ziren inprimagailuetan daude erabilgarri." + +# AI Translated +msgid "Migrate Filament Presets" +msgstr "Migratu filamentu-aurrezarpenak" + +# AI Translated +msgid "" +"OrcaSlicer 2.5.0 restructured many system filament presets to fix incorrect profiles and prepare for future features. As a result, the presets below no longer show on some printers they were made for. Sorry for the trouble; this is a one-time fix.\n" +"\n" +"Add those printers back to your presets now? Your presets are backed up first. You can also do this later from Help > Migrate Filament Presets." +msgstr "" +"OrcaSlicer 2.5.0 bertsioak sistemaren filamentu-aurrezarpen asko berregituratu ditu profil okerrak zuzentzeko eta etorkizuneko funtzioak prestatzeko. Ondorioz, beheko aurrezarpenak ez dira jada agertzen sortu ziren inprimagailu batzuetan. Barkatu eragozpenak; behin bakarrik egin beharreko zuzenketa da.\n" +"\n" +"Inprimagailu horiek zure aurrezarpenetan berriro gehitu nahi dituzu orain? Zure aurrezarpenen babeskopia egingo da lehenik. Geroago ere egin dezakezu, Laguntza > Migratu filamentu-aurrezarpenak aukeratik." + +# AI Translated +#, boost-format +msgid "%1% (based on %2%)" +msgstr "%1% (oinarria: %2%)" + +msgid "Don't remind me again" +msgstr "Ez gogorarazi berriro" + +# AI Translated +msgid "Your presets could not be backed up, so they were not migrated." +msgstr "Zure aurrezarpenen babeskopia ezin izan da egin, beraz ez dira migratu." + +# AI Translated +msgid "The user presets folder could not be locked, so nothing was migrated. Another OrcaSlicer instance may be saving presets; try again later from Help > Migrate Filament Presets." +msgstr "Erabiltzailearen aurrezarpenen karpeta ezin izan da blokeatu, beraz ez da ezer migratu. Baliteke OrcaSlicer-en beste instantzia bat aurrezarpenak gordetzen ari izatea; saiatu berriro geroago Laguntza > Migratu filamentu-aurrezarpenak aukeratik." + +# AI Translated +#, boost-format +msgid "" +"Your filament presets could not be migrated. A backup of your presets was saved to:\n" +"%1%" +msgstr "" +"Zure filamentu-aurrezarpenak ezin izan dira migratu. Zure aurrezarpenen babeskopia hemen gorde da:\n" +"%1%" + +# AI Translated +#, boost-format +msgid "" +"Your filament presets were migrated. Select them again in the filament list where you used them.\n" +"\n" +"A backup of your presets was saved to:\n" +"%1%" +msgstr "" +"Zure filamentu-aurrezarpenak migratu dira. Hautatu berriro filamentu-zerrendan, erabiltzen zenituen lekuetan.\n" +"\n" +"Zure aurrezarpenen babeskopia hemen gorde da:\n" +"%1%" + +# AI Translated +msgid "These presets could not be migrated:" +msgstr "Aurrezarpen hauek ezin izan dira migratu:" + #, c-format, boost-format msgid "your Orca Cloud profile (user ID: \"%s\")" msgstr "zure Orca Cloud profila (erabiltzaile-IDa: \"%s\")" @@ -3075,6 +3135,66 @@ msgstr "(Kolorea galdu da)" msgid "Center" msgstr "Zentratu" +# AI Translated +msgid "Distribute left-right" +msgstr "Banatu ezker-eskuin norabidean" + +# AI Translated +# Needs human review: Object menu item that spaces objects evenly along the plate's front-back (Y) axis; check that the 'aurre-atze' compound reads naturally. +msgid "Distribute front-back" +msgstr "Banatu aurre-atze norabidean" + +# AI Translated +# Needs human review: Object menu item that spaces objects evenly along the vertical (Z) axis; check that the 'goi-behe' compound reads naturally. +msgid "Distribute top-bottom" +msgstr "Banatu goi-behe norabidean" + +# AI Translated +msgid "Align left" +msgstr "Lerrokatu ezkerrean" + +# AI Translated +msgid "Align left-right center" +msgstr "Lerrokatu erdian ezker-eskuin norabidean" + +# AI Translated +msgid "Align right" +msgstr "Lerrokatu eskuinean" + +# AI Translated +msgid "Align front" +msgstr "Lerrokatu aurrean" + +# AI Translated +# Needs human review: Object menu item that aligns object centers on the plate's front-back (Y) axis; check that the 'aurre-atze' compound reads naturally. +msgid "Align front-back center" +msgstr "Lerrokatu erdian aurre-atze norabidean" + +# AI Translated +msgid "Align back" +msgstr "Lerrokatu atzean" + +# AI Translated +msgid "Align bottom" +msgstr "Lerrokatu behean" + +# AI Translated +# Needs human review: Object menu item that aligns object centers on the vertical (Z) axis; check that the 'goi-behe' compound reads naturally. +msgid "Align top-bottom center" +msgstr "Lerrokatu erdian goi-behe norabidean" + +# AI Translated +msgid "Align top" +msgstr "Lerrokatu goian" + +# AI Translated +msgid "Align/Distribute" +msgstr "Lerrokatu/Banatu" + +# AI Translated +msgid "Align and distribute objects" +msgstr "Lerrokatu eta banatu objektuak" + msgid "Drop" msgstr "Askatu" @@ -6504,6 +6624,10 @@ msgstr "Konfigurazio-laguntzailea" msgid "Show Configuration Folder" msgstr "Erakutsi konfigurazio-karpeta" +# AI Translated +msgid "Bring back filament presets that a profile update removed from printers they were made for" +msgstr "Berreskuratu profil-eguneraketa batek sortu ziren inprimagailuetatik kendutako filamentu-aurrezarpenak" + msgid "Troubleshoot Center" msgstr "Arazoak konpontzeko zentroa" @@ -12365,12 +12489,13 @@ msgstr "Atze-ezkerra" msgid "Rear-right" msgstr "Atze-eskuina" +# AI Translated msgid "" "The Retract before wipe option could be only 100% when using the Firmware Retraction mode.\n" "\n" "Shall I set it to 100% in order to enable Firmware Retraction?" msgstr "" -"'Garbitu aurretik atzera egin' aukerak %100 izan behar du firmware bidezko atzera-egite modua erabiltzean.\n" +"'Garbiketa aurreko atzera-egite kantitatea' aukerak %100 izan behar du firmware bidezko atzera-egite modua erabiltzean.\n" "\n" "%100ean ezarri nahi duzu firmware bidezko atzera-egitea gaitzeko?" @@ -13731,6 +13856,18 @@ msgstr "perimetro batekin ebakidura anitz daude, bakarra erabili da (%1%)" msgid "a perimeter is fully inside a modifier, the modifier was not applied to it (%1%)" msgstr "perimetro bat aldatzaile baten barruan dago osorik; aldatzailea ez zaio aplikatu (%1%)" +# AI Translated +#. TRN: %1% is the modifier type "Seam Blocked" as in the menu, %2% the modifier name, %3% the object name. +#, boost-format +msgid "%1% modifier \"%2%\" of \"%3%\" covers an entire perimeter" +msgstr "%1% motako \"%2%\" aldatzaileak (\"%3%\" objektukoak) perimetro oso bat estaltzen du" + +# AI Translated +#. TRN: %1% is the modifier type "Seam Blocked" as in the menu, %2% the modifier name, %3% the object name, %4% the number of modifiers. +#, boost-format +msgid "%1% modifier \"%2%\" of \"%3%\" (%4% in total) covers an entire perimeter" +msgstr "%1% motako \"%2%\" aldatzaileak (\"%3%\" objektukoak, guztira %4%) perimetro oso bat estaltzen du" + # AI Translated #, boost-format msgid "modifier \"%1%\" of \"%2%\" had no effect on the seam (it might not reach the centerline of the printed perimeter)" @@ -14719,18 +14856,20 @@ msgstr "" "\n" "Erabilitako benetako zubi-fluxua balio hau filamentuen fluxu-erlazioarekin eta, ezarrita badago, objektuaren fluxu-erlazioarekin biderkatuta kalkulatzen da." +# AI Translated +# Needs human review: po_tool printf heuristic warns (100% or vs %100 edo); false positive, there are no placeholders. Basque writes the percent sign before the number, as elsewhere in this catalog. msgid "" "Line width of the Bridge. If expressed as a %, it will be computed over the nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" -"If set to 0, the line width will match the Internal solid infill width." +"If set to 0, the line width will match the Internal solid infill width, or the nozzle diameter for thick bridges." msgstr "" "Zubiaren lerro-zabalera. % gisa adierazten bada, pitaren diametroaren arabera kalkulatuko da.\n" -"Zubi-dentsitate handiagoarekin edo zubiaren fluxu-erlazio handiagoarekin erabiltzea gomendatzen da.\n" +"Zubien dentsitate handiagoarekin edo zubien fluxu-ratio handiagoarekin erabiltzea gomendatzen da.\n" "\n" "Gehieneko balioa %100 edo pitaren diametroa da.\n" -"0 ezartzen bada, lerro-zabalera barruko betegarri solidoaren zabalerarekin bat etorriko da." +"0 ezartzen bada, lerro-zabalera barruko betegarri solidoaren zabalerarekin bat etorriko da, edo pitaren diametroarekin zubi lodietan." msgid "Internal bridge flow ratio" msgstr "Barruko zubien fluxu-ratioa" @@ -15000,6 +15139,7 @@ msgstr "Gaitu aukera hau irtenguneak inprimatzean abiadura moteltzeko. Irtengune msgid "Slow down for curled perimeters" msgstr "Moteldu kiribildutako perimetroetan" +# AI Translated #, no-c-format, no-boost-format msgid "" "Enable this option to slow down printing in areas where perimeters may have curled upwards.\n" @@ -15015,7 +15155,7 @@ msgid "" "3. If artifacts still appear, enable Extrusion Rate Smoothing (ERS) to further smooth the flow transitions.\n" "\n" "Note: When this option is enabled, overhang perimeters are treated like overhangs, meaning the overhang speed is applied even if the overhanging perimeter is part of a bridge.\n" -"For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 100% overhang speed will be applied." +"For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 75% overhang speed will be applied, limited by the bridge speed." msgstr "" "Gaitu aukera hau perimetroak gorantz kizkurtu daitezkeen eremuetan inprimatze-abiadura moteltzeko.\n" "Adibidez, moteltze gehigarria aplikatuko da Benchy ontziaren aurrealdeko ertz zorrotzetan bezalako irtenguneak inprimatzean, geruzaz geruza metatzen den kizkurtzea murrizteko.\n" @@ -15027,22 +15167,23 @@ msgstr "" "Aukera hau gaitzean gomendioak:\n" "1. Murriztu Pressure Advance leuntze-denbora 0.015 - 0.02 baliora, estrusoreak abiadura-aldaketei azkar erantzun diezaien.\n" "2. Handitu gutxieneko inprimatze-abiadurak moteltzearen neurria eta segmentu azkar eta motelen arteko aldea mugatzeko.\n" -"3. Akatsak agertzen badira, gaitu Extrusion Rate Smoothing (ERS) fluxu-trantsizioak gehiago leuntzeko.\n" +"3. Akatsak agertzen badira, gaitu Estrusio-tasaren leuntzea (ERS) fluxu-trantsizioak gehiago leuntzeko.\n" "\n" "Oharra: aukera hau gaituta dagoenean, irtenguneen perimetroak irtengune gisa tratatzen dira; beraz, irtenguneen abiadura aplikatuko da perimetroa zubi baten parte bada ere.\n" -"Adibidez, perimetroak %100 irtengunean daudenean eta azpitik eusten dien hormarik ez dagoenean, %100eko irtenguneetako abiadura aplikatuko da." +"Adibidez, perimetroak %100 irtengunean daudenean eta azpitik eusten dien hormarik ez dagoenean, %75eko irtenguneetako abiadura aplikatuko da, zubi-abiadurak mugatuta." msgid "mm/s or %" msgstr "mm/s edo %" +# AI Translated msgid "" "Speed of the externally visible bridge extrusions.\n" "\n" -"In addition, if Slow down for curled perimeters is disabled or Classic overhang mode is enabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." +"In addition, if Slow down for curled perimeters is disabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." msgstr "" "Kanpotik ikusgai dauden zubi-estrusioen abiadura.\n" "\n" -"Gainera, perimetro kiribilduetarako moteltzea desgaituta badago edo irtengune-modu klasikoa gaituta badago, %13 baino gutxiagoz eutsita dauden irtengune-hormen inprimatze-abiadura izango da, zubi baten edo irtengune baten parte izan." +"Gainera, \"Moteldu kiribildutako perimetroetan\" desgaituta badago, %13 baino gutxiagoz eutsita dauden irtengune-hormen inprimatze-abiadura izango da, zubi baten zein irtengune baten parte izan." msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%." msgstr "Barru-zubien abiadura. Balioa ehuneko gisa adierazten bada, Zubien abiadura-ren arabera kalkulatuko da. Lehenetsitako balioa % 150ekoa da." @@ -15597,8 +15738,9 @@ msgstr "Hau piezen kanpoko hormetarako inprimatze-abiadura da. Oro har, barruko msgid "Small perimeters" msgstr "Perimetro txikiak" -msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above. Set to zero for auto." -msgstr "Ezarpen bereizi honek erradioa <= small_perimeter_threshold duten perimetroen abiaduran eragiten du (normalean zuloak). Ehuneko gisa adierazten bada (adibidez: 80%), goiko kanpoko hormaren abiaduraren arabera kalkulatuko da. Jarri zero automatikoa izateko." +# AI Translated +msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above." +msgstr "Ezarpen bereizi honek erradioa <= small_perimeter_threshold duten perimetroen abiaduran eragiten du (normalean zuloak). Ehuneko gisa adierazten bada (adibidez: %80), goiko kanpoko hormaren abiaduraren arabera kalkulatuko da." msgid "Small perimeters threshold" msgstr "Perimetro txikien atalasea" @@ -15609,8 +15751,9 @@ msgstr "Perimetro txikien luzeraren atalasea ezartzen du. Atalase lehenetsia 0 m msgid "Small support perimeters" msgstr "Euskarri-perimetro txikiak" -msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above. Set to zero for auto." -msgstr "\"Perimetro txikiak\" ezarpenaren berdina, baina euskarrietarako. Ezarpen honek `small_support_perimeter_threshold` baino txikiagoak edo berdinak diren eremuen euskarri-abiadurari eragingo dio. Ehuneko gisa adierazten bada (adibidez, %80), goiko euskarri- edo euskarri-interfaze abiaduraren arabera kalkulatuko da. Ezarri zero automatikorako." +# AI Translated +msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above." +msgstr "\"Perimetro txikiak\" ezarpenaren berdina, baina euskarrietarako. Ezarpen honek `small_support_perimeter_threshold` baino txikiagoak edo berdinak diren eremuen euskarri-abiadurari eragingo dio. Ehuneko gisa adierazten bada (adibidez, %80), goiko euskarri- edo euskarri-interfaze abiaduraren arabera kalkulatuko da." msgid "Small support perimeters threshold" msgstr "Euskarri-perimetro txikien atalasea" @@ -15621,22 +15764,23 @@ msgstr "Honek euskarri-perimetro txikien luzera-atalasea ezartzen du. Lehenetsit msgid "Walls printing order" msgstr "Hormen inprimatze-ordena" +# AI Translated msgid "" "Print sequence of the internal (inner) and external (outer) walls.\n" "\n" "Use Inner/Outer for best overhangs. This is because the overhanging walls can adhere to a neighbouring perimeter while printing. However, this option results in slightly reduced surface quality as the external perimeter is deformed by being squashed to the internal perimeter.\n" "\n" -"Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended against the Outer/Inner option in most cases.\n" +"Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended over the Outer/Inner option in most cases.\n" "\n" "Use Outer/Inner for the same external wall quality and dimensional accuracy benefits of Inner/Outer/Inner option. However, the Z seams will appear less consistent as the first extrusion of a new layer starts on a visible surface." msgstr "" "Barruko eta kanpoko hormen inprimatze-sekuentzia.\n" "\n" -"Erabili Barru/Kanpo irtengune onenak lortzeko. Irtenguneetan dauden hormak ondoko perimetro bati atxiki daitezke inprimatzean. Hala ere, gainazalaren kalitatea apur bat murriztu daiteke, kanpoko perimetroa barrukoaren kontra zanpatzen delako.\n" +"Erabili Barrukoa/Kanpokoa irtengune onenak lortzeko. Irtenguneetan dauden hormak ondoko perimetro bati atxiki daitezke inprimatzean. Hala ere, gainazalaren kalitatea apur bat murriztu daiteke, kanpoko perimetroa barrukoaren kontra zanpatzen delako.\n" "\n" -"Erabili Barru/Kanpo/Barru kanpoko gainazalaren akabera eta neurri-zehaztasun onenak lortzeko, kanpoko horma barruko perimetro batek oztopatu gabe inprimatzen baita. Irtenguneen portaera, ordea, okerragoa izango da. Gutxienez 3 horma behar dira: lehenik hirugarrenetik aurrerako barruko hormak, gero kanpokoa eta azkenik lehenengo barrukoa. Kasu gehienetan Kanpo/Barru baino gomendagarriagoa da.\n" +"Erabili Barrukoa/Kanpokoa/Barrukoa kanpoko gainazalaren akabera eta neurri-zehaztasun onenak lortzeko, kanpoko horma barruko perimetro batek oztopatu gabe inprimatzen baita. Irtenguneen portaera, ordea, okerragoa izango da, kanpoko horma inprimatzeko barruko perimetrorik ez dagoelako. Aukera honek gutxienez 3 horma behar ditu eraginkorra izateko: lehenik hirugarren perimetrotik aurrerako barruko hormak inprimatzen ditu, gero kanpoko perimetroa eta azkenik lehen barruko perimetroa. Kasu gehienetan Kanpokoa/Barrukoa aukera baino gomendagarriagoa da.\n" "\n" -"Erabili Kanpo/Barru Barru/Kanpo/Barru aukeraren kanpoko hormaren kalitate eta neurri-zehaztasun bera lortzeko. Hala ere, Z josturak ez dira hain koherenteak izango, geruza berriaren lehen estrusioa gainazal ikusgai batean hasten delako." +"Erabili Kanpokoa/Barrukoa Barrukoa/Kanpokoa/Barrukoa aukeraren kanpoko hormaren kalitate eta neurri-zehaztasun bera lortzeko. Hala ere, Z josturak ez dira hain koherenteak izango, geruza berriaren lehen estrusioa gainazal ikusgai batean hasten delako." msgid "Inner/Outer" msgstr "Barrukoa/Kanpokoa" @@ -16571,14 +16715,16 @@ msgstr "Lehen geruzaren altuera" msgid "Height of the first layer. Making the first layer height thicker can improve build plate adhesion." msgstr "Lehen geruzaren altuera. Lehen geruza lodiagoak inprimatze-plakarekiko atxikimendua hobetu dezake." -msgid "This is the speed for the first layer except for solid infill sections." -msgstr "Hau da lehen geruzaren abiadura, betegarri solidoko atalak izan ezik." +# AI Translated +msgid "This is the speed for the walls and brim of the first layer." +msgstr "Hau da lehen geruzako hormen eta itsaspen ertzaren abiadura." msgid "First layer infill" msgstr "Lehen geruzaren betegarria" -msgid "This is the speed for solid infill parts of the first layer." -msgstr "Hau da lehen geruzako betegarri solidoaren atalen abiadura." +# AI Translated +msgid "This is the speed for the first layer except for walls and brim, such as infill, gap fill and support." +msgstr "Hau da lehen geruzaren abiadura, hormak eta itsaspen ertza izan ezik; adibidez, betegarria, hutsuneak betetzea eta euskarria." msgid "First layer travel speed" msgstr "Lehen geruzako mugimendu-abiadura" @@ -17274,16 +17420,18 @@ msgstr "Barruko dentsitate baxuko betegarriaren lerro-zabalera. %-tan adierazten msgid "Infill/wall overlap" msgstr "Betegarriaren eta hormaren gainjartzea" +# AI Translated #, no-c-format, no-boost-format -msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to line width of sparse infill. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." -msgstr "Betegarri-eremua apur bat handitzen du hormekin gainjartzeko eta lotura hobetzeko. Ehunekoa dentsitate baxuko betegarriaren lerro-zabalerarekiko da. Ezarri gutxi gorabehera %10-15, gainestrusioa eta goiko gainazal zakarrak sor ditzakeen material-pilaketa gutxitzeko." +msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to the inner wall line width. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." +msgstr "Betegarri-eremua apur bat handitzen du hormekin gainjartzeko eta lotura hobetzeko. Ehunekoa barruko hormaren lerro-zabalerarekiko da. Ezarri gutxi gorabehera %10-15, gainestrusioa eta goiko gainazal zakarrak sor ditzakeen material-pilaketa gutxitzeko." msgid "Top/Bottom solid infill/wall overlap" msgstr "Goiko/Beheko betegarri solidoaren eta hormaren gainjartzea" +# AI Translated #, no-c-format, no-boost-format -msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to line width of sparse infill." -msgstr "Goiko betegarri solidoaren eremua pixka bat handitzen da hormarekin gainjartzeko, lotura hobetzeko eta goiko betegarria hormekin elkartzen den tokian zulotxoen itxura minimizatzeko. %25-30 inguruko balioa abiapuntu ona da." +msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to the inner wall line width." +msgstr "Goiko betegarri solidoaren eremua pixka bat handitzen da hormarekin gainjartzeko, lotura hobetzeko eta goiko betegarria hormekin elkartzen den tokian zulotxoen itxura minimizatzeko. %25-30 inguruko balioa abiapuntu ona da, zulotxoen itxura minimizatuz. Ehunekoa barruko hormaren lerro-zabalerarekiko da." msgid "This is the speed for internal sparse infill." msgstr "Hau da barruko dentsitate baxuko betegarriaren abiadura." @@ -17309,8 +17457,9 @@ msgstr "Segmentatutako eremu baten gehieneko zabalera. 0 balioak ezaugarria desg msgid "Interlocking depth of a segmented region" msgstr "Eskualde segmentatu baten elkarblokeatze-sakonera" -msgid "Interlocking depth of a segmented region. It will be ignored if \"mmu_segmented_region_max_width\" is zero or if \"mmu_segmented_region_interlocking_depth\" is bigger than \"mmu_segmented_region_max_width\". Zero disables this feature." -msgstr "Eskualde segmentatu baten elkarblokeatze-sakonera. Ez da kontuan hartuko \"mmu_segmented_region_max_width\" zero bada edo \"mmu_segmented_region_interlocking_depth\" \"mmu_segmented_region_max_width\" baino handiagoa bada. Zero balioak ezaugarri hau desgaitzen du." +# AI Translated +msgid "Interlocking depth of a segmented region. On every other layer, the segmented region is limited to this depth. It will be ignored if \"interlocking_beam\" is enabled. Zero disables this feature." +msgstr "Eskualde segmentatu baten elkarblokeatze-sakonera. Bi geruzatik behin, eskualde segmentatua sakonera honetara mugatzen da. Ez da kontuan hartuko \"interlocking_beam\" gaituta badago. Zero balioak ezaugarri hau desgaitzen du." msgid "Use beam interlocking" msgstr "Erabili habeen elkarblokeatzea" @@ -17413,13 +17562,14 @@ msgstr "Gaitu Z geruzen sestratzea (Z geruzen antialiasing-a ere deitua)." msgid "Minimize wall height angle" msgstr "Murriztu hormaren altuera-angelua" +# AI Translated msgid "" "Reduce the height of top-surface perimeters to match the model edge height.\n" -"Affects perimeters with a slope less than this angle (degrees).\n" +"Affects perimeters with a slope greater than this angle (degrees).\n" "A reasonable value is 35. Set to 0 to disable." msgstr "" "Murriztu goiko gainazaleko perimetroen altuera modeloaren ertzaren altuerarekin bat etor dadin.\n" -"Angelu hau baino malda txikiagoa duten perimetroei eragiten die (graduetan).\n" +"Angelu hau baino malda handiagoa duten perimetroei eragiten die (graduetan).\n" "35 balio arrazoizkoa da. Ezarri 0 desgaitzeko." msgid "Don't alternate fill direction" @@ -18073,14 +18223,17 @@ msgstr "Mugimendu-distantziaren atalasea" msgid "Only trigger retraction when the travel distance is longer than this threshold." msgstr "Aktibatu atzera-egitea mugimendu-distantzia atalase hau baino handiagoa denean bakarrik." +# AI Translated msgid "Retract amount before wipe" -msgstr "Garbitu aurreko atzera-egite kantitatea" +msgstr "Garbiketa aurreko atzera-egite kantitatea" +# AI Translated msgid "This is the length of fast retraction before a wipe, relative to retraction length." -msgstr "Hau da garbitu aurreko atzera-egite azkarraren luzera, atzera-egitearen luzerarekiko." +msgstr "Hau da garbiketa aurreko atzera-egite azkarraren luzera, atzera-egitearen luzerarekiko." +# AI Translated msgid "Retract amount after wipe" -msgstr "Garbitu ondorengo atzera-egite kantitatea" +msgstr "Garbiketa ondorengo atzera-egite kantitatea" #, no-c-format, no-boost-format msgid "" @@ -18378,12 +18531,12 @@ msgid "Use scarf joint for inner walls as well." msgstr "Erabili alaka juntura barruko hormetan ere." # AI Translated -msgid "Role base wipe speed" -msgstr "Eginkizunaren araberako garbitze-abiadura" +msgid "Role based wipe speed" +msgstr "Rolaren araberako garbiketa-abiadura" # AI Translated msgid "The wipe speed is determined by the speed of the current extrusion role. e.g. if a wipe action is executed immediately following an outer wall extrusion, the speed of the outer wall extrusion will be utilized for the wipe action." -msgstr "Garbitze-abiadura uneko estrusio-eginkizunaren abiadurak zehazten du. Adibidez, garbitze-ekintza bat kanpoko hormaren estrusioaren ondoren berehala egiten bada, kanpoko hormaren estrusio-abiadura erabiliko da garbitze-ekintzarako." +msgstr "Garbiketa-abiadura uneko estrusio-rolaren abiadurak zehazten du. Adibidez, garbiketa-ekintza bat kanpoko hormaren estrusioaren ondoren berehala egiten bada, kanpoko hormaren estrusio-abiadura erabiliko da garbiketa-ekintzarako." msgid "Wipe on loops" msgstr "Garbitu begiztetan" @@ -18405,13 +18558,13 @@ msgid "" msgstr "" "Kanpoko hormei soilik aplikatzen zaie, zuloen mugak barne. Garbitzean pita beroa jada inprimatutako barruko hormetarantz mugitzen du, inprimatu berri den plastikoa berriro berotzea eta jostura-markak murrizteko.\n" "\n" -"Bereziki erabilgarria da 0,1 mm-tik beherako geruza-altueretan, non garbitze-markak nabarmenago ikusten diren.\n" +"Bereziki erabilgarria da 0,1 mm-tik beherako geruza-altueretan, non garbiketa-markak nabarmenago ikusten diren.\n" "\n" "Garbiketa arrunta erabiltzen du ondoko barruko hormarik jada inprimatuta ez badago (horma bakarreko eremuak edo Kanpokoa/Barrukoa hormen ordena) edo euskarria duen barrurako biderik aurkitzen ez bada, adibidez izkina estuetan edo josturako hutsuneetan." # AI Translated msgid "Wipe inward distance" -msgstr "Barrurako garbitze-distantzia" +msgstr "Barrurako garbiketa-distantzia" # AI Translated #, no-c-format, no-boost-format @@ -18420,9 +18573,9 @@ msgid "" "\n" "For example, 50% shifts the path by half of the outer-wall width. The effective offset is limited by both the actual outer-wall width and the available spacing to the adjacent wall, so values above 100% or an equivalent absolute distance have no additional effect. Set to 0 to disable the offset." msgstr "" -"Garbitze-bidea kanpoko perimetrotik zenbat desplazatzen den, milimetrotan edo kanpoko hormaren benetako estrusio-zabaleraren ehuneko gisa adierazita.\n" +"Garbiketa-ibilbidea kanpoko perimetrotik zenbat desplazatzen den, milimetrotan edo kanpoko hormaren benetako estrusio-zabaleraren ehuneko gisa adierazita.\n" "\n" -"Adibidez, 50% bideak kanpoko hormaren zabaleraren erdia desplazatzen du. Desplazamendu eraginkorra mugatuta dago bai kanpoko hormaren benetako zabaleragatik bai ondoko hormarainoko tarte erabilgarriagatik; beraz, 100% baino handiagoko balioek edo baliokidea den distantzia absolutu batek ez dute eragin gehigarririk. Ezarri 0 desplazamendua desgaitzeko." +"Adibidez, 50% ibilbideak kanpoko hormaren zabaleraren erdia desplazatzen du. Desplazamendu eraginkorra mugatuta dago bai kanpoko hormaren benetako zabaleragatik bai ondoko hormarainoko tarte erabilgarriagatik; beraz, 100% baino handiagoko balioek edo baliokidea den distantzia absolutu batek ez dute eragin gehigarririk. Ezarri 0 desplazamendua desgaitzeko." msgid "Wipe before external loop" msgstr "Garbitu kanpoko begizta baino lehen" @@ -18438,11 +18591,11 @@ msgstr "" # AI Translated msgid "Wipe speed" -msgstr "Garbitze-abiadura" +msgstr "Garbiketa-abiadura" # AI Translated msgid "The wipe speed is determined by the speed setting specified in this configuration. If the value is expressed as a percentage (e.g. 80%), it will be calculated based on the travel speed setting above. The default value for this parameter is 80%." -msgstr "Garbitze-abiadura konfigurazio honetan zehaztutako abiadura-ezarpenak zehazten du. Balioa ehuneko gisa adierazten bada (adibidez, %80), goiko mugimendu-abiaduraren ezarpenaren arabera kalkulatuko da. Parametro honen balio lehenetsia %80 da." +msgstr "Garbiketa-abiadura konfigurazio honetan zehaztutako abiadura-ezarpenak zehazten du. Balioa ehuneko gisa adierazten bada (adibidez, %80), goiko mugimendu-abiaduraren ezarpenaren arabera kalkulatuko da. Parametro honen balio lehenetsia %80 da." msgid "Skirt distance" msgstr "Gonaren distantzia" @@ -18471,16 +18624,15 @@ msgstr "Gonaren/haize-babesaren begiztak horma bakarrera mugatzen ditu lehen ger msgid "Draft shield" msgstr "Aire-korronteen babeslea" +# AI Translated msgid "" "A draft shield is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft. It is usually needed only with open frame printers, i.e. without an enclosure.\n" "\n" -"Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used.\n" -"Note: With the draft shield active, the skirt will be printed at skirt distance from the object. Therefore, if brims are active it may intersect with them. To avoid this, increase the skirt distance value.\n" +"Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used." msgstr "" -"Aire-korronteen babeslea erabilgarria da ABS edo ASA inprimaketa haize-korronteengatik deformatzetik eta inprimatze-ohetik askatzetik babesteko. Normalean egitura irekiko inprimagailuetan bakarrik behar da, hauda, itxiturarik gabe.\n" +"Aire-korronteen babeslea erabilgarria da ABS edo ASA inprimaketa haize-korronteengatik deformatzetik eta inprimatze-ohetik askatzetik babesteko. Normalean egitura irekiko inprimagailuetan bakarrik behar da, hau da, itxiturarik gabe.\n" "\n" -"Gaituta = gona inprimatutako objekturik altuena bezain altua da. Bestela,'Gonaren altuera' erabiltzen da.\n" -"Oharra: aire-korronteen babeslea aktibo dagoenean, gona objektutik gonaren distantziara inprimatuko da. Beraz, itsaspen ertzak aktibo badaude, haiekin gurutza daiteke. Hori saihesteko, handitu gonaren distantziaren balioa.\n" +"Gaituta = gona inprimatutako objekturik altuena bezain altua da. Bestela, 'Gonaren altuera' erabiltzen da." msgid "Enabled" msgstr "Gaituta" @@ -19526,8 +19678,9 @@ msgstr "Garbitu atzera-egitean" msgid "This moves the nozzle along the last extrusion path when retracting to clean any leaked material on the nozzle. This can minimize blobs when printing a new part after traveling." msgstr "Honek pita azken estrusio-bidean zehar mugitzen du atzera-egitean, pitatik isuritako materiala garbitzeko. Horrek pikorrak murriztu ditzake pieza berri bat inprimatzean." +# AI Translated msgid "Wipe distance" -msgstr "Garbitze-distantzia" +msgstr "Garbiketa-distantzia" # AI Translated msgid "" @@ -19541,7 +19694,7 @@ msgstr "" "\n" "Garbiketa-eragiketak zenbat irauten duen eta estrusorearen/filamentuaren atzera-egite ezarpenak zein azkar eta luzeak diren kontuan hartuta, baliteke atzera-egite mugimendu bat behar izatea geratzen den filamentua atzera eramateko.\n" "\n" -"Beheko garbitu aurreko atzera-egite kantitatearen ezarpenean balio batezarriz gero, gehiegizko atzera-egitea garbiketa baino lehen egingo da; bestela, ondoren egingo da." +"Beheko garbiketa aurreko atzera-egite kantitatearen ezarpenean balio bat ezarriz gero, gehiegizko atzera-egitea garbiketa baino lehen egingo da; bestela, ondoren egingo da." # AI Translated msgid "Mixed color sublayer" @@ -19614,40 +19767,42 @@ msgstr "Purgatze-dorrea egonkortzeko erabiltzen den konoaren erpineko angelua. A msgid "Maximum wipe tower print speed" msgstr "Purgatze-dorrearen gehieneko inprimatze-abiadura" +# AI Translated msgid "" "The maximum print speed when purging in the wipe tower and printing the wipe tower sparse layers. When purging, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" "\n" -"When printing the sparse layers, if the internal perimeter speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +"When printing the sparse layers, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" "\n" "Increasing this speed may affect the tower's stability as well as increase the force with which the nozzle collides with any blobs that may have formed on the wipe tower.\n" "\n" "Before increasing this parameter beyond the default of 90 mm/s, make sure your printer can reliably bridge at the increased speeds and that ooze when tool changing is well controlled.\n" "\n" -"For the wipe tower external perimeters the internal perimeter speed is used regardless of this setting." +"For the wipe tower external perimeters the internal perimeter speed is used, also limited by this setting." msgstr "" "Purgatze-dorrean purgatzean eta purgatze-dorrearen geruza bakanduak inprimatzean erabiliko den gehieneko inprimatze-abiadura. Purgatzean, dentsitate baxuko betegarriaren abiadura edo filamentuaren gehieneko abiadura bolumetrikotik kalkulatutako abiadura txikiagoa bada, txikiena erabiliko da.\n" "\n" -"Geruza bakanduak inprimatzean, barruko perimetroaren abiadura edo filamentuaren gehieneko abiadura bolumetrikotik kalkulatutako abiadura txikiagoa bada, txikiena erabiliko da.\n" +"Geruza bakanduak inprimatzean, dentsitate baxuko betegarriaren abiadura edo filamentuaren gehieneko abiadura bolumetrikotik kalkulatutako abiadura txikiagoa bada, txikiena erabiliko da.\n" "\n" "Abiadura hau handitzeak dorrearen egonkortasunean eragina izan dezake, eta pitak purgatze-dorrean sortu diren pikorrekin talka egitean duen indarra handitu dezake.\n" "\n" "Parametro hau 90 mm/s-ko balio lehenetsitik gora handitu aurretik, ziurtatu zure inprimagailuak abiadura handiagoetan zubiak modu fidagarrian inprima ditzakeela eta tresna-aldaketan jarioa ondo kontrolatuta dagoela.\n" "\n" -"Purgatze-dorrearen kanpoko perimetroetarako barruko perimetroaren abiadura erabiltzen da, ezarpen hau kontuan hartu gabe." +"Purgatze-dorrearen kanpoko perimetroetarako barruko perimetroaren abiadura erabiltzen da, ezarpen honek ere mugatuta." msgid "Wall type" msgstr "Horma mota" +# AI Translated msgid "" "Wipe tower outer wall type.\n" -"1. Rectangle: The default wall type, a rectangle with fixed width and height.\n" +"1. Rectangle: A rectangle with fixed width and height.\n" "2. Cone: A cone with a fillet at the bottom to help stabilize the wipe tower.\n" -"3. Rib: Adds four ribs to the tower wall for enhanced stability." +"3. Rib: The default wall type, which adds four ribs to the tower wall for enhanced stability." msgstr "" "Purgatze-dorrearen kanpoko horma mota.\n" -"1. Laukizuzena: horma mota lehenetsia, zabalera eta altuera finkoko laukizuzena.\n" +"1. Laukizuzena: zabalera eta altuera finkoko laukizuzena.\n" "2. Konoa: behealdean biribiltzea duen konoa, purgatze-dorrea egonkortzen laguntzeko.\n" -"3. Nerbioa: lau nerbio gehitzen dizkio dorrearen hormari egonkortasuna handitzeko." +"3. Nerbioa: horma mota lehenetsia, dorrearen hormari lau nerbio gehitzen dizkiona, egonkortasuna handitzeko." msgid "Rectangle" msgstr "Laukizuzena" @@ -19739,8 +19894,9 @@ msgstr "Purgatze-dorreko purga-lerroen arteko tartea." msgid "Extra flow for purging" msgstr "Purgatzeko fluxu gehigarria" -msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker or narrower than they normally would be. The spacing is adjusted automatically." -msgstr "Purgatze-dorreko purga-lerroetarako erabiltzen den fluxu gehigarria. Horrek purga-lerroak normalean baino lodiagoak edo meheagoak egiten ditu. Tartea automatikoki doitzen da." +# AI Translated +msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker than they normally would be. The spacing is adjusted automatically." +msgstr "Purgatze-dorreko purga-lerroetarako erabiltzen den fluxu gehigarria. Horrek purga-lerroak normalean baino lodiagoak egiten ditu. Tartea automatikoki doitzen da." msgid "Idle temperature" msgstr "Inaktibo dagoeneko tenperatura" @@ -19856,14 +20012,15 @@ msgstr "Ezaugarri meheen gutxieneko lodiera. Balio hau baino meheagoak diren eza msgid "Minimum wall length" msgstr "Hormaren gutxieneko luzera" +# AI Translated msgid "" -"Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. Higher values remove more and longer walls.\n" +"Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. The value is a multiple of the wall width. Higher values remove more and longer walls.\n" "\n" -"NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the Advanced settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." +"NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the 'Walls and surfaces' settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." msgstr "" -"Doitu balio hau horma labur eta itxi gabeak inprima ez daitezen; horrek inprimatze-denbora handitu lezake. Balio handiagoek horma gehiago eta luzeagoak kentzen dituzte.\n" +"Doitu balio hau horma labur eta itxi gabeak inprima ez daitezen; horrek inprimatze-denbora handitu lezake. Balioa horma-zabaleraren multiploa da. Balio handiagoek horma gehiago eta luzeagoak kentzen dituzte.\n" "\n" -"OHARRA: beheko eta goiko gainazalek ez dute balio honen eraginik izango, modeloaren kanpoaldean hutsune ikusgarriak saihesteko. Doitu beheko Ezarpen aurreratuetako 'Horma bakarreko atalasea' goiko gainazaltzat zer hartzen den zehazteko sentikortasuna doitzeko. 'Horma bakarreko atalasea' ezarpen hau 0.5 balio lehenetsiaren gainetik ezarrita badago edo horma bakarreko goiko gainazalak gaituta badaude bakarrik ikusiko da." +"OHARRA: beheko eta goiko gainazalek ez dute balio honen eraginik izango, modeloaren kanpoaldean hutsune ikusgarriak saihesteko. Doitu beheko 'Hormak eta gainazalak' ezarpenetako 'Horma bakarraren atalasea' goiko gainazaltzat zer hartzen den zehazteko sentikortasuna doitzeko. 'Horma bakarraren atalasea' ezarpen hau 0.5 balio lehenetsiaren gainetik ezarrita badago edo horma bakarreko goiko gainazalak gaituta badaude bakarrik ikusiko da." msgid "Maximum wall resolution" msgstr "Hormen gehieneko bereizmena" @@ -23764,9 +23921,6 @@ msgstr "Gaitu filamentuen esleipen adimenduna: esleitu filamentua hainbat pitata msgid "File Saving" msgstr "Fitxategia gordetzea" -msgid "Don't remind me again" -msgstr "Ez gogorarazi berriro" - msgid "No further pop-up will appear. You can reopen it in 'Preferences'" msgstr "Ez da beste leiho gainerakorrik agertuko. 'Hobespenak' atalean berriro ireki dezakezu" @@ -34234,6 +34388,168 @@ msgstr "" "Saihestu okertzea\n" "Ba al zenekien ABS bezalako okertzeko joera duten materialak inprimatzean ohe beroaren tenperatura egoki igotzeak okertzeko probabilitatea murriztu dezakeela?" +#~ msgid "" +#~ "Line width of the Bridge. If expressed as a %, it will be computed over the nozzle diameter.\n" +#~ "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" +#~ "\n" +#~ "The maximum value is 100% or the nozzle diameter.\n" +#~ "If set to 0, the line width will match the Internal solid infill width." +#~ msgstr "" +#~ "Zubiaren lerro-zabalera. % gisa adierazten bada, pitaren diametroaren arabera kalkulatuko da.\n" +#~ "Zubi-dentsitate handiagoarekin edo zubiaren fluxu-erlazio handiagoarekin erabiltzea gomendatzen da.\n" +#~ "\n" +#~ "Gehieneko balioa %100 edo pitaren diametroa da.\n" +#~ "0 ezartzen bada, lerro-zabalera barruko betegarri solidoaren zabalerarekin bat etorriko da." + +#, no-c-format, no-boost-format +#~ msgid "" +#~ "Enable this option to slow down printing in areas where perimeters may have curled upwards.\n" +#~ "For example, additional slowdown will be applied when printing overhangs on sharp corners like the front of the Benchy hull, reducing curling which compounds over multiple layers.\n" +#~ "\n" +#~ "It is generally recommended to have this option switched on unless your printer cooling is powerful enough or the print speed is slow enough that perimeter curling does not happen. \n" +#~ "If printing with a high external perimeter speed, this parameter may introduce wall artifacts when slowing down, due to the potentially large variance in print speeds causing the extruder to be unable to keep up with the requested flow change.\n" +#~ "Root cause of these artifacts is most likely PA tuning being slightly off, especially when combined with a high PA smooth time.\n" +#~ "\n" +#~ "Recommendations when enabling this option:\n" +#~ "1. Reduce Pressure Advance smooth time to 0.015 - 0.02 so the extruder reacts quickly to the speed changes.\n" +#~ "2. Increase the minimum print speeds to limit the magnitude of the slowdown and reduce the variance between fast and slow segments.\n" +#~ "3. If artifacts still appear, enable Extrusion Rate Smoothing (ERS) to further smooth the flow transitions.\n" +#~ "\n" +#~ "Note: When this option is enabled, overhang perimeters are treated like overhangs, meaning the overhang speed is applied even if the overhanging perimeter is part of a bridge.\n" +#~ "For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 100% overhang speed will be applied." +#~ msgstr "" +#~ "Gaitu aukera hau perimetroak gorantz kizkurtu daitezkeen eremuetan inprimatze-abiadura moteltzeko.\n" +#~ "Adibidez, moteltze gehigarria aplikatuko da Benchy ontziaren aurrealdeko ertz zorrotzetan bezalako irtenguneak inprimatzean, geruzaz geruza metatzen den kizkurtzea murrizteko.\n" +#~ "\n" +#~ "Oro har, aukera hau aktibatuta edukitzea gomendatzen da, inprimagailuaren hoztea oso indartsua ez bada edo abiadura nahikoa motela ez bada perimetroak ez kizkurtzeko.\n" +#~ "Kanpoko perimetro-abiadura handiarekin inprimatzean, parametro honek horma-akatsak sor ditzake moteltzean, abiadura-alde handiek estrusoreari eskatutako fluxu-aldaketari jarraitzea eragotz diezaioketelako.\n" +#~ "Akats horien arrazoia PA doikuntza apur bat oker egotea izan ohi da, bereziki PA leuntze-denbora handiarekin batera.\n" +#~ "\n" +#~ "Aukera hau gaitzean gomendioak:\n" +#~ "1. Murriztu Pressure Advance leuntze-denbora 0.015 - 0.02 baliora, estrusoreak abiadura-aldaketei azkar erantzun diezaien.\n" +#~ "2. Handitu gutxieneko inprimatze-abiadurak moteltzearen neurria eta segmentu azkar eta motelen arteko aldea mugatzeko.\n" +#~ "3. Akatsak agertzen badira, gaitu Extrusion Rate Smoothing (ERS) fluxu-trantsizioak gehiago leuntzeko.\n" +#~ "\n" +#~ "Oharra: aukera hau gaituta dagoenean, irtenguneen perimetroak irtengune gisa tratatzen dira; beraz, irtenguneen abiadura aplikatuko da perimetroa zubi baten parte bada ere.\n" +#~ "Adibidez, perimetroak %100 irtengunean daudenean eta azpitik eusten dien hormarik ez dagoenean, %100eko irtenguneetako abiadura aplikatuko da." + +#~ msgid "" +#~ "Speed of the externally visible bridge extrusions.\n" +#~ "\n" +#~ "In addition, if Slow down for curled perimeters is disabled or Classic overhang mode is enabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." +#~ msgstr "" +#~ "Kanpotik ikusgai dauden zubi-estrusioen abiadura.\n" +#~ "\n" +#~ "Gainera, perimetro kiribilduetarako moteltzea desgaituta badago edo irtengune-modu klasikoa gaituta badago, %13 baino gutxiagoz eutsita dauden irtengune-hormen inprimatze-abiadura izango da, zubi baten edo irtengune baten parte izan." + +#~ msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above. Set to zero for auto." +#~ msgstr "Ezarpen bereizi honek erradioa <= small_perimeter_threshold duten perimetroen abiaduran eragiten du (normalean zuloak). Ehuneko gisa adierazten bada (adibidez: 80%), goiko kanpoko hormaren abiaduraren arabera kalkulatuko da. Jarri zero automatikoa izateko." + +#~ msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above. Set to zero for auto." +#~ msgstr "\"Perimetro txikiak\" ezarpenaren berdina, baina euskarrietarako. Ezarpen honek `small_support_perimeter_threshold` baino txikiagoak edo berdinak diren eremuen euskarri-abiadurari eragingo dio. Ehuneko gisa adierazten bada (adibidez, %80), goiko euskarri- edo euskarri-interfaze abiaduraren arabera kalkulatuko da. Ezarri zero automatikorako." + +#~ msgid "" +#~ "Print sequence of the internal (inner) and external (outer) walls.\n" +#~ "\n" +#~ "Use Inner/Outer for best overhangs. This is because the overhanging walls can adhere to a neighbouring perimeter while printing. However, this option results in slightly reduced surface quality as the external perimeter is deformed by being squashed to the internal perimeter.\n" +#~ "\n" +#~ "Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended against the Outer/Inner option in most cases.\n" +#~ "\n" +#~ "Use Outer/Inner for the same external wall quality and dimensional accuracy benefits of Inner/Outer/Inner option. However, the Z seams will appear less consistent as the first extrusion of a new layer starts on a visible surface." +#~ msgstr "" +#~ "Barruko eta kanpoko hormen inprimatze-sekuentzia.\n" +#~ "\n" +#~ "Erabili Barru/Kanpo irtengune onenak lortzeko. Irtenguneetan dauden hormak ondoko perimetro bati atxiki daitezke inprimatzean. Hala ere, gainazalaren kalitatea apur bat murriztu daiteke, kanpoko perimetroa barrukoaren kontra zanpatzen delako.\n" +#~ "\n" +#~ "Erabili Barru/Kanpo/Barru kanpoko gainazalaren akabera eta neurri-zehaztasun onenak lortzeko, kanpoko horma barruko perimetro batek oztopatu gabe inprimatzen baita. Irtenguneen portaera, ordea, okerragoa izango da. Gutxienez 3 horma behar dira: lehenik hirugarrenetik aurrerako barruko hormak, gero kanpokoa eta azkenik lehenengo barrukoa. Kasu gehienetan Kanpo/Barru baino gomendagarriagoa da.\n" +#~ "\n" +#~ "Erabili Kanpo/Barru Barru/Kanpo/Barru aukeraren kanpoko hormaren kalitate eta neurri-zehaztasun bera lortzeko. Hala ere, Z josturak ez dira hain koherenteak izango, geruza berriaren lehen estrusioa gainazal ikusgai batean hasten delako." + +#~ msgid "This is the speed for the first layer except for solid infill sections." +#~ msgstr "Hau da lehen geruzaren abiadura, betegarri solidoko atalak izan ezik." + +#~ msgid "This is the speed for solid infill parts of the first layer." +#~ msgstr "Hau da lehen geruzako betegarri solidoaren atalen abiadura." + +#, no-c-format, no-boost-format +#~ msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to line width of sparse infill. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." +#~ msgstr "Betegarri-eremua apur bat handitzen du hormekin gainjartzeko eta lotura hobetzeko. Ehunekoa dentsitate baxuko betegarriaren lerro-zabalerarekiko da. Ezarri gutxi gorabehera %10-15, gainestrusioa eta goiko gainazal zakarrak sor ditzakeen material-pilaketa gutxitzeko." + +#, no-c-format, no-boost-format +#~ msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to line width of sparse infill." +#~ msgstr "Goiko betegarri solidoaren eremua pixka bat handitzen da hormarekin gainjartzeko, lotura hobetzeko eta goiko betegarria hormekin elkartzen den tokian zulotxoen itxura minimizatzeko. %25-30 inguruko balioa abiapuntu ona da." + +#~ msgid "Interlocking depth of a segmented region. It will be ignored if \"mmu_segmented_region_max_width\" is zero or if \"mmu_segmented_region_interlocking_depth\" is bigger than \"mmu_segmented_region_max_width\". Zero disables this feature." +#~ msgstr "Eskualde segmentatu baten elkarblokeatze-sakonera. Ez da kontuan hartuko \"mmu_segmented_region_max_width\" zero bada edo \"mmu_segmented_region_interlocking_depth\" \"mmu_segmented_region_max_width\" baino handiagoa bada. Zero balioak ezaugarri hau desgaitzen du." + +#~ msgid "" +#~ "Reduce the height of top-surface perimeters to match the model edge height.\n" +#~ "Affects perimeters with a slope less than this angle (degrees).\n" +#~ "A reasonable value is 35. Set to 0 to disable." +#~ msgstr "" +#~ "Murriztu goiko gainazaleko perimetroen altuera modeloaren ertzaren altuerarekin bat etor dadin.\n" +#~ "Angelu hau baino malda txikiagoa duten perimetroei eragiten die (graduetan).\n" +#~ "35 balio arrazoizkoa da. Ezarri 0 desgaitzeko." + +# AI Translated +#~ msgid "Role base wipe speed" +#~ msgstr "Eginkizunaren araberako garbitze-abiadura" + +#~ msgid "" +#~ "A draft shield is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft. It is usually needed only with open frame printers, i.e. without an enclosure.\n" +#~ "\n" +#~ "Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used.\n" +#~ "Note: With the draft shield active, the skirt will be printed at skirt distance from the object. Therefore, if brims are active it may intersect with them. To avoid this, increase the skirt distance value.\n" +#~ msgstr "" +#~ "Aire-korronteen babeslea erabilgarria da ABS edo ASA inprimaketa haize-korronteengatik deformatzetik eta inprimatze-ohetik askatzetik babesteko. Normalean egitura irekiko inprimagailuetan bakarrik behar da, hauda, itxiturarik gabe.\n" +#~ "\n" +#~ "Gaituta = gona inprimatutako objekturik altuena bezain altua da. Bestela,'Gonaren altuera' erabiltzen da.\n" +#~ "Oharra: aire-korronteen babeslea aktibo dagoenean, gona objektutik gonaren distantziara inprimatuko da. Beraz, itsaspen ertzak aktibo badaude, haiekin gurutza daiteke. Hori saihesteko, handitu gonaren distantziaren balioa.\n" + +#~ msgid "" +#~ "The maximum print speed when purging in the wipe tower and printing the wipe tower sparse layers. When purging, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +#~ "\n" +#~ "When printing the sparse layers, if the internal perimeter speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +#~ "\n" +#~ "Increasing this speed may affect the tower's stability as well as increase the force with which the nozzle collides with any blobs that may have formed on the wipe tower.\n" +#~ "\n" +#~ "Before increasing this parameter beyond the default of 90 mm/s, make sure your printer can reliably bridge at the increased speeds and that ooze when tool changing is well controlled.\n" +#~ "\n" +#~ "For the wipe tower external perimeters the internal perimeter speed is used regardless of this setting." +#~ msgstr "" +#~ "Purgatze-dorrean purgatzean eta purgatze-dorrearen geruza bakanduak inprimatzean erabiliko den gehieneko inprimatze-abiadura. Purgatzean, dentsitate baxuko betegarriaren abiadura edo filamentuaren gehieneko abiadura bolumetrikotik kalkulatutako abiadura txikiagoa bada, txikiena erabiliko da.\n" +#~ "\n" +#~ "Geruza bakanduak inprimatzean, barruko perimetroaren abiadura edo filamentuaren gehieneko abiadura bolumetrikotik kalkulatutako abiadura txikiagoa bada, txikiena erabiliko da.\n" +#~ "\n" +#~ "Abiadura hau handitzeak dorrearen egonkortasunean eragina izan dezake, eta pitak purgatze-dorrean sortu diren pikorrekin talka egitean duen indarra handitu dezake.\n" +#~ "\n" +#~ "Parametro hau 90 mm/s-ko balio lehenetsitik gora handitu aurretik, ziurtatu zure inprimagailuak abiadura handiagoetan zubiak modu fidagarrian inprima ditzakeela eta tresna-aldaketan jarioa ondo kontrolatuta dagoela.\n" +#~ "\n" +#~ "Purgatze-dorrearen kanpoko perimetroetarako barruko perimetroaren abiadura erabiltzen da, ezarpen hau kontuan hartu gabe." + +#~ msgid "" +#~ "Wipe tower outer wall type.\n" +#~ "1. Rectangle: The default wall type, a rectangle with fixed width and height.\n" +#~ "2. Cone: A cone with a fillet at the bottom to help stabilize the wipe tower.\n" +#~ "3. Rib: Adds four ribs to the tower wall for enhanced stability." +#~ msgstr "" +#~ "Purgatze-dorrearen kanpoko horma mota.\n" +#~ "1. Laukizuzena: horma mota lehenetsia, zabalera eta altuera finkoko laukizuzena.\n" +#~ "2. Konoa: behealdean biribiltzea duen konoa, purgatze-dorrea egonkortzen laguntzeko.\n" +#~ "3. Nerbioa: lau nerbio gehitzen dizkio dorrearen hormari egonkortasuna handitzeko." + +#~ msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker or narrower than they normally would be. The spacing is adjusted automatically." +#~ msgstr "Purgatze-dorreko purga-lerroetarako erabiltzen den fluxu gehigarria. Horrek purga-lerroak normalean baino lodiagoak edo meheagoak egiten ditu. Tartea automatikoki doitzen da." + +#~ msgid "" +#~ "Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. Higher values remove more and longer walls.\n" +#~ "\n" +#~ "NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the Advanced settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." +#~ msgstr "" +#~ "Doitu balio hau horma labur eta itxi gabeak inprima ez daitezen; horrek inprimatze-denbora handitu lezake. Balio handiagoek horma gehiago eta luzeagoak kentzen dituzte.\n" +#~ "\n" +#~ "OHARRA: beheko eta goiko gainazalek ez dute balio honen eraginik izango, modeloaren kanpoaldean hutsune ikusgarriak saihesteko. Doitu beheko Ezarpen aurreratuetako 'Horma bakarreko atalasea' goiko gainazaltzat zer hartzen den zehazteko sentikortasuna doitzeko. 'Horma bakarreko atalasea' ezarpen hau 0.5 balio lehenetsiaren gainetik ezarrita badago edo horma bakarreko goiko gainazalak gaituta badaude bakarrik ikusiko da." + # AI Translated #, boost-format #~ msgid "Split into %1% part" diff --git a/localization/i18n/fr/OrcaSlicer_fr.po b/localization/i18n/fr/OrcaSlicer_fr.po index 9af606ad63..f895f736b2 100644 --- a/localization/i18n/fr/OrcaSlicer_fr.po +++ b/localization/i18n/fr/OrcaSlicer_fr.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-10-13 09:55-0300\n" +"POT-Creation-Date: 2026-10-14 10:04-0300\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: Guislain Cyril, Thomas Lété\n" @@ -2393,6 +2393,66 @@ msgstr "Restriction du plug-in réseau" msgid "Privacy Policy Update" msgstr "Mise à jour de la politique de confidentialité" +# AI Translated +msgid "All your filament presets are available on the printers they were made for." +msgstr "Tous vos préréglages de filament sont disponibles sur les imprimantes pour lesquelles ils ont été créés." + +# AI Translated +msgid "Migrate Filament Presets" +msgstr "Migrer les préréglages de filament" + +# AI Translated +msgid "" +"OrcaSlicer 2.5.0 restructured many system filament presets to fix incorrect profiles and prepare for future features. As a result, the presets below no longer show on some printers they were made for. Sorry for the trouble; this is a one-time fix.\n" +"\n" +"Add those printers back to your presets now? Your presets are backed up first. You can also do this later from Help > Migrate Filament Presets." +msgstr "" +"OrcaSlicer 2.5.0 a restructuré de nombreux préréglages de filament système afin de corriger des profils incorrects et de préparer des fonctionnalités à venir. De ce fait, les préréglages ci-dessous ne s’affichent plus sur certaines des imprimantes pour lesquelles ils ont été créés. Nous nous excusons pour la gêne occasionnée ; il s’agit d’une correction ponctuelle.\n" +"\n" +"Ajouter à nouveau ces imprimantes à vos préréglages maintenant ? Vos préréglages sont d’abord sauvegardés. Vous pouvez aussi le faire plus tard depuis Aide > Migrer les préréglages de filament." + +# AI Translated +#, boost-format +msgid "%1% (based on %2%)" +msgstr "%1% (basé sur %2%)" + +msgid "Don't remind me again" +msgstr "Ne plus me rappeler" + +# AI Translated +msgid "Your presets could not be backed up, so they were not migrated." +msgstr "Vos préréglages n’ont pas pu être sauvegardés ; ils n’ont donc pas été migrés." + +# AI Translated +msgid "The user presets folder could not be locked, so nothing was migrated. Another OrcaSlicer instance may be saving presets; try again later from Help > Migrate Filament Presets." +msgstr "Le dossier des préréglages utilisateur n’a pas pu être verrouillé ; rien n’a donc été migré. Une autre instance d’OrcaSlicer est peut-être en train d’enregistrer des préréglages ; réessayez plus tard depuis Aide > Migrer les préréglages de filament." + +# AI Translated +#, boost-format +msgid "" +"Your filament presets could not be migrated. A backup of your presets was saved to:\n" +"%1%" +msgstr "" +"Vos préréglages de filament n’ont pas pu être migrés. Une sauvegarde de vos préréglages a été enregistrée dans :\n" +"%1%" + +# AI Translated +#, boost-format +msgid "" +"Your filament presets were migrated. Select them again in the filament list where you used them.\n" +"\n" +"A backup of your presets was saved to:\n" +"%1%" +msgstr "" +"Vos préréglages de filament ont été migrés. Sélectionnez-les à nouveau dans la liste des filaments là où vous les utilisiez.\n" +"\n" +"Une sauvegarde de vos préréglages a été enregistrée dans :\n" +"%1%" + +# AI Translated +msgid "These presets could not be migrated:" +msgstr "Ces préréglages n’ont pas pu être migrés :" + #, c-format, boost-format msgid "your Orca Cloud profile (user ID: \"%s\")" msgstr "votre profil Orca Cloud (ID utilisateur : \"%s\")" @@ -3100,6 +3160,62 @@ msgstr "(Couleur perdue)" msgid "Center" msgstr "Centrer" +# AI Translated +msgid "Distribute left-right" +msgstr "Répartir gauche-droite" + +# AI Translated +msgid "Distribute front-back" +msgstr "Répartir avant-arrière" + +# AI Translated +msgid "Distribute top-bottom" +msgstr "Répartir haut-bas" + +# AI Translated +msgid "Align left" +msgstr "Aligner à gauche" + +# AI Translated +msgid "Align left-right center" +msgstr "Aligner au centre gauche-droite" + +# AI Translated +msgid "Align right" +msgstr "Aligner à droite" + +# AI Translated +msgid "Align front" +msgstr "Aligner à l’avant" + +# AI Translated +msgid "Align front-back center" +msgstr "Aligner au centre avant-arrière" + +# AI Translated +msgid "Align back" +msgstr "Aligner à l’arrière" + +# AI Translated +msgid "Align bottom" +msgstr "Aligner en bas" + +# AI Translated +msgid "Align top-bottom center" +msgstr "Aligner au centre haut-bas" + +# AI Translated +msgid "Align top" +msgstr "Aligner en haut" + +# AI Translated +msgid "Align/Distribute" +msgstr "Aligner/Répartir" + +# AI Translated +msgid "Align and distribute objects" +msgstr "Aligner et répartir les objets" + msgid "Drop" msgstr "Déposer" @@ -6540,6 +6656,10 @@ msgstr "Assistant de configuration" msgid "Show Configuration Folder" msgstr "Afficher le dossier de configuration" +# AI Translated +msgid "Bring back filament presets that a profile update removed from printers they were made for" +msgstr "Restaurer les préréglages de filament qu’une mise à jour de profil a retirés des imprimantes pour lesquelles ils ont été créés" + msgid "Troubleshoot Center" msgstr "Centre de dépannage" @@ -9057,7 +9177,7 @@ msgid "Cannot slice: an object overlaps an area reserved for IDEX/IQEX parallel msgstr "Découpage impossible : un objet chevauche une zone réservée à l'impression parallèle IDEX/IQEX (une zone secondaire, ou une bande de dégagement de chariot dans la zone principale)." # AI Translated -# Needs human review: Glossary cell for Prime tower / Wipe tower is unsettled (⚠); used the catalog's Tour d’amorçage. +# Needs human review: Glossary cell for Prime tower / Wipe tower is unsettled (⚠); used the catalog's Tour d’amorçage msgid "Cannot slice: the prime tower overlaps an area reserved for IDEX/IQEX parallel printing (a secondary zone, or a carriage clearance strip inside the primary zone)." msgstr "Découpage impossible : la tour d’amorçage chevauche une zone réservée à l'impression parallèle IDEX/IQEX (une zone secondaire, ou une bande de dégagement de chariot dans la zone principale)." @@ -11826,6 +11946,7 @@ msgid "Enabling both precise Z height and the prime tower may cause slicing erro msgstr "L'activation simultanée de la hauteur Z précise et de la tour d'amorçage peut provoquer des erreurs de tranchage. Voulez-vous quand même activer la hauteur Z précise ?" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "tour d’amorçage"; align it once the term is settled. msgid "Smooth timelapse needs a prime tower on every layer, which is not compatible with \"No sparse layers\". \"No sparse layers\" has been turned off." msgstr "Le timelapse fluide nécessite une tour d’amorçage à chaque couche, ce qui est incompatible avec « Pas de couches éparses ». « Pas de couches éparses » a été désactivé." @@ -11833,6 +11954,7 @@ msgid "A prime tower is required for smooth timelapse mode. There may be flaws o msgstr "Une tour d’amorçage est requise pour le mode timelapse fluide. Le modèle peut présenter des défauts sans tour d’amorçage. Voulez-vous activer la tour d’amorçage ?" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "tour d’amorçage"; align it once the term is settled. msgid "\"No sparse layers\" is not compatible with smooth timelapse, which needs a prime tower on every layer. Timelapse has been switched to traditional mode." msgstr "« Pas de couches éparses » est incompatible avec le timelapse fluide, qui nécessite une tour d’amorçage à chaque couche. Le timelapse est repassé en mode traditionnel." @@ -13594,6 +13716,7 @@ msgid "Open G-code file:" msgstr "Ouvrir un fichier G-code :" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "tour d’essuyage"; align it once the term is settled. msgid "Wipe tower generation failed, possibly due to empty first layer." msgstr "Échec de la génération de la tour d’essuyage, peut-être à cause d’une première couche vide." @@ -13738,6 +13861,18 @@ msgstr "intersections multiples avec un périmètre, une seule a été utilisée msgid "a perimeter is fully inside a modifier, the modifier was not applied to it (%1%)" msgstr "un périmètre est entièrement à l’intérieur d’un modificateur, le modificateur ne lui a pas été appliqué (%1%)" +# AI Translated +#. TRN: %1% is the modifier type "Seam Blocked" as in the menu, %2% the modifier name, %3% the object name. +#, boost-format +msgid "%1% modifier \"%2%\" of \"%3%\" covers an entire perimeter" +msgstr "Le modificateur %1% « %2% » de « %3% » couvre un périmètre entier" + +# AI Translated +#. TRN: %1% is the modifier type "Seam Blocked" as in the menu, %2% the modifier name, %3% the object name, %4% the number of modifiers. +#, boost-format +msgid "%1% modifier \"%2%\" of \"%3%\" (%4% in total) covers an entire perimeter" +msgstr "Le modificateur %1% « %2% » de « %3% » (%4% au total) couvre un périmètre entier" + # AI Translated #, boost-format msgid "modifier \"%1%\" of \"%2%\" had no effect on the seam (it might not reach the centerline of the printed perimeter)" @@ -13945,6 +14080,7 @@ msgid "%1% is too tall, and collisions will be caused." msgstr "%1% est trop grand, cela pourrait provoquer des collisions." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "tour d’amorçage"; align it once the term is settled. msgid "The relative position of the model and the prime tower does not meet the requirements of the \"No sparse layers\" feature. Please adjust their relative positions, lower the model height, or turn off \"No sparse layers\"." msgstr "La position relative du modèle et de la tour d’amorçage ne répond pas aux exigences de la fonction « Pas de couches éparses ». Veuillez ajuster leurs positions relatives, réduire la hauteur du modèle ou désactiver « Pas de couches éparses »." @@ -13954,26 +14090,32 @@ msgid "%1% is too close to the clumping detection area. There may be collisions msgstr "%1% est trop proche de la zone de détection d’agglomération. Des collisions peuvent survenir lors de l’impression." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "tour d’amorçage"; align it once the term is settled. msgid "Prime tower is too close to others, and collisions may be caused.\n" msgstr "La tour d’amorçage est trop proche des autres, ce qui risque de provoquer des collisions.\n" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "tour d’amorçage"; align it once the term is settled. msgid "Prime tower is too close to an exclusion area, and collisions will be caused.\n" msgstr "La tour d’amorçage est trop proche d’une zone d’exclusion, ce qui provoquera des collisions.\n" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "tour d’amorçage"; align it once the term is settled. msgid "Prime tower is too close to the clumping detection area, and collisions will be caused.\n" msgstr "La tour d’amorçage est trop proche de la zone de détection d’agglomération, ce qui provoquera des collisions.\n" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "tour d’amorçage"; align it once the term is settled. msgid "Prime tower is too close to an exclusion area. There may be collisions when printing." msgstr "La tour d’amorçage est trop proche d’une zone d’exclusion. Des collisions peuvent survenir lors de l’impression." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "tour d’amorçage"; align it once the term is settled. msgid "Prime tower is too close to the clumping detection area. There may be collisions when printing." msgstr "La tour d’amorçage est trop proche de la zone de détection d’agglomération. Des collisions peuvent survenir lors de l’impression." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "tour d’amorçage"; align it once the term is settled. msgid "Prime tower is partially outside the printable area, and it cannot be printed.\n" msgstr "La tour d’amorçage est partiellement en dehors de la zone imprimable et ne peut pas être imprimée.\n" @@ -14094,6 +14236,7 @@ msgid "Variable layer height is not supported with Organic supports." msgstr "La hauteur de couche variable n’est pas prise en charge avec les supports organiques." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "tour d’essuyage"; align it once the term is settled. msgid "The wipe tower filament cannot be a mixed filament." msgstr "Le filament de la tour d’essuyage ne peut pas être un filament mixte." @@ -14711,8 +14854,9 @@ msgstr "" "\n" "Cette option fonctionne particulièrement bien combinée à l’option de second pont interne au-dessus du remplissage, pour améliorer encore les ponts avant l’extrusion du remplissage plein." +# AI Translated msgid "Bridge flow ratio" -msgstr "Débit des ponts" +msgstr "Rapport de débit du pont" msgid "" "This value governs the thickness of the external (visible) bridge layer.\n" @@ -14727,18 +14871,20 @@ msgstr "" "\n" "Le débit de pont réellement utilisé est calculé en multipliant cette valeur par le rapport de débit du filament et, s’il est défini, par celui de l’objet." +# AI Translated +# Needs human review: Setting names are quoted from the GUI labels: the English says 'Bridge density' where the GUI labels are 'External/Internal bridge density' (the external one is quoted). Check it. msgid "" "Line width of the Bridge. If expressed as a %, it will be computed over the nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" -"If set to 0, the line width will match the Internal solid infill width." +"If set to 0, the line width will match the Internal solid infill width, or the nozzle diameter for thick bridges." msgstr "" -"La largeur de ligne des ponts s’exprime soit en valeur absolue, soit en pourcentage du diamètre de la buse active (les pourcentages sont calculés à partir du diamètre de la buse).\n" -"Recommandé avec une densité de pont ou un rapport de débit de pont plus élevés.\n" +"Largeur de ligne du pont. Si elle est exprimée en %, elle sera calculée sur le diamètre de la buse.\n" +"Recommandé avec une densité du pont externe ou un rapport de débit du pont plus élevés.\n" "\n" "La valeur maximale est 100 % ou le diamètre de la buse.\n" -"Si réglée à 0, la largeur de ligne correspond à celle du remplissage plein interne." +"Si réglée à 0, la largeur de ligne correspond à celle du remplissage plein interne, ou au diamètre de la buse pour les ponts épais." msgid "Internal bridge flow ratio" msgstr "Rapport de débit du pont interne" @@ -15005,6 +15151,7 @@ msgstr "Activez cette option pour ralentir l'impression pour différents degrés msgid "Slow down for curled perimeters" msgstr "Ralentir lors des périmètres courbés" +# AI Translated #, no-c-format, no-boost-format msgid "" "Enable this option to slow down printing in areas where perimeters may have curled upwards.\n" @@ -15020,34 +15167,35 @@ msgid "" "3. If artifacts still appear, enable Extrusion Rate Smoothing (ERS) to further smooth the flow transitions.\n" "\n" "Note: When this option is enabled, overhang perimeters are treated like overhangs, meaning the overhang speed is applied even if the overhanging perimeter is part of a bridge.\n" -"For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 100% overhang speed will be applied." +"For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 75% overhang speed will be applied, limited by the bridge speed." msgstr "" "Activez cette option pour ralentir l’impression dans les zones où les périmètres risquent de s’être recourbés vers le haut.\n" "Par exemple, un ralentissement supplémentaire est appliqué lors de l’impression de surplombs sur des angles vifs, comme l’avant de la coque du Benchy, réduisant le tuilage qui s’amplifie au fil des couches.\n" "\n" "Il est généralement recommandé de laisser cette option activée, sauf si le refroidissement de votre imprimante est assez puissant ou la vitesse d’impression assez lente pour que les périmètres ne se recourbent pas. \n" -"En cas d’impression avec une vitesse de périmètre externe élevée, ce paramètre peut introduire des artéfacts sur les parois lors du ralentissement, en raison de la variation potentiellement importante des vitesses d’impression empêchant l’extrudeur de suivre le changement de débit demandé.\n" -"La cause profonde de ces artéfacts est très probablement un réglage du PA légèrement décalé, surtout combiné à un temps de lissage du PA élevé.\n" +"En cas d’impression avec une vitesse de périmètre externe élevée, ce paramètre peut introduire des artefacts sur les parois lors du ralentissement, en raison de la variation potentiellement importante des vitesses d’impression empêchant l’extrudeur de suivre le changement de débit demandé.\n" +"La cause profonde de ces artefacts est très probablement un réglage du PA légèrement décalé, surtout combiné à un temps de lissage du PA élevé.\n" "\n" "Recommandations lorsque cette option est activée :\n" -"1. Réduisez le temps de lissage du Pressure Advance à 0,015 – 0,02 pour que l’extrudeur réagisse rapidement aux changements de vitesse.\n" +"1. Réduisez le temps de lissage du Pressure Advance à 0,015 - 0,02 pour que l’extrudeur réagisse rapidement aux changements de vitesse.\n" "2. Augmentez les vitesses d’impression minimales pour limiter l’ampleur du ralentissement et réduire l’écart entre segments rapides et lents.\n" -"3. Si des artéfacts persistent, activez le lissage du débit d’extrusion (ERS) pour adoucir davantage les transitions de débit.\n" +"3. Si des artefacts persistent, activez le lissage du taux d’extrusion (ERS) pour adoucir davantage les transitions de débit.\n" "\n" "Remarque : lorsque cette option est activée, les périmètres en surplomb sont traités comme des surplombs : la vitesse de surplomb s’applique même si le périmètre en surplomb fait partie d’un pont.\n" -"Par exemple, lorsque les périmètres sont à 100 % en surplomb, sans paroi pour les soutenir par en dessous, la vitesse de surplomb à 100 % est appliquée." +"Par exemple, lorsque les périmètres sont à 100 % en surplomb, sans paroi pour les soutenir par en dessous, la vitesse de surplomb à 75 % est appliquée, limitée par la vitesse du pont." msgid "mm/s or %" msgstr "mm/s ou %" +# AI Translated msgid "" "Speed of the externally visible bridge extrusions.\n" "\n" -"In addition, if Slow down for curled perimeters is disabled or Classic overhang mode is enabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." +"In addition, if Slow down for curled perimeters is disabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." msgstr "" "Vitesse des extrusions de pont visible de l’extérieur.\n" "\n" -"En outre, si la fonction Ralentir pour les périmètres courbés est désactivée ou si le mode Surplomb classique est activé, il s’agira de la vitesse d’impression des parois en surplomb dont l’appui est inférieur à 13 %, qu’elles fassent partie d’un pont ou d’un surplomb." +"En outre, si l’option « Ralentir lors des périmètres courbés » est désactivée, il s’agira de la vitesse d’impression des parois en surplomb dont l’appui est inférieur à 13 %, qu’elles fassent partie d’un pont ou d’un surplomb." msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%." msgstr "Vitesse des ponts internes. Si la valeur est exprimée en pourcentage, elle sera calculée sur la base de la vitesse du pont. La valeur par défaut est 150%." @@ -15603,8 +15751,9 @@ msgstr "Vitesse de paroi extérieure qui est la plus à l'extérieur et visible. msgid "Small perimeters" msgstr "Petits périmètres" -msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above. Set to zero for auto." -msgstr "Ce paramètre séparé affectera la vitesse des périmètres ayant un rayon <= petite longueur de périmètre (généralement des trous). S’il est exprimé en pourcentage (par exemple : 80%), il sera calculé sur la vitesse de la paroi extérieure ci-dessus. Mettre à zéro pour automatique." +# AI Translated +msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above." +msgstr "Ce paramètre séparé affectera la vitesse des périmètres ayant un rayon <= small_perimeter_threshold (généralement des trous). S’il est exprimé en pourcentage (par exemple : 80%), il sera calculé sur la vitesse de la paroi extérieure ci-dessus." msgid "Small perimeters threshold" msgstr "Seuil des petits périmètres" @@ -15615,8 +15764,9 @@ msgstr "Cela définit le seuil pour une petite longueur de périmètre. Le seuil msgid "Small support perimeters" msgstr "Petits périmètres de support" -msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above. Set to zero for auto." -msgstr "Comme « Petits périmètres », mais pour les supports. Ce réglage distinct affecte la vitesse des supports pour les zones <= `small_support_perimeter_threshold`. S’il est exprimé en pourcentage (par exemple : 80 %), il est calculé à partir du réglage de vitesse des supports ou de l’interface de support ci-dessus. Réglez sur zéro pour automatique." +# AI Translated +msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above." +msgstr "Comme « Petits périmètres », mais pour les supports. Ce réglage distinct affecte la vitesse des supports pour les zones <= `small_support_perimeter_threshold`. S’il est exprimé en pourcentage (par exemple : 80 %), il est calculé à partir du réglage de vitesse des supports ou de l’interface de support ci-dessus." msgid "Small support perimeters threshold" msgstr "Seuil des petits périmètres de support" @@ -15627,12 +15777,13 @@ msgstr "Définit le seuil de longueur des petits périmètres de support. Le seu msgid "Walls printing order" msgstr "Ordre d’impression des parois" +# AI Translated msgid "" "Print sequence of the internal (inner) and external (outer) walls.\n" "\n" "Use Inner/Outer for best overhangs. This is because the overhanging walls can adhere to a neighbouring perimeter while printing. However, this option results in slightly reduced surface quality as the external perimeter is deformed by being squashed to the internal perimeter.\n" "\n" -"Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended against the Outer/Inner option in most cases.\n" +"Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended over the Outer/Inner option in most cases.\n" "\n" "Use Outer/Inner for the same external wall quality and dimensional accuracy benefits of Inner/Outer/Inner option. However, the Z seams will appear less consistent as the first extrusion of a new layer starts on a visible surface." msgstr "" @@ -15640,15 +15791,16 @@ msgstr "" "\n" "Utilisez Intérieur/Extérieur pour obtenir les meilleurs surplombs. En effet, les parois en surplomb peuvent adhérer à un périmètre voisin lors de l'impression. Toutefois, cette option entraîne une légère diminution de la qualité de la surface, car le périmètre externe est déformé par l'écrasement du périmètre interne.\n" "\n" -"Utilisez l’option Intérieur/Extérieur/Intérieur pour obtenir la meilleure finition de surface externe et la meilleure précision dimensionnelle, car la paroi externe est imprimée sans être dérangée par un périmètre interne. Cependant, les performances de la paroi en surplomb seront réduites car il n’y a pas de périmètre interne contre lequel imprimer la paroi externe. Cette option nécessite un minimum de trois parois pour être efficace, car elle imprime d’abord les parois internes à partir du troisième périmètre, puis le périmètre externe et, enfin, le premier périmètre interne. Cette option est recommandée par rapport à l’option Extérieur/intérieur dans la plupart des cas.\n" +"Utilisez l’option Intérieur/Extérieur/Intérieur pour obtenir la meilleure finition de surface externe et la meilleure précision dimensionnelle, car la paroi externe est imprimée sans être dérangée par un périmètre interne. Cependant, les performances de la paroi en surplomb seront réduites car il n’y a pas de périmètre interne contre lequel imprimer la paroi externe. Cette option nécessite un minimum de trois parois pour être efficace, car elle imprime d’abord les parois internes à partir du troisième périmètre, puis le périmètre externe et, enfin, le premier périmètre interne. Cette option est recommandée par rapport à l’option Extérieur/Intérieur dans la plupart des cas.\n" "\n" -"Utilisez l’option Extérieur/intérieur pour bénéficier de la même qualité de paroi externe et de la même précision dimensionnelle que l’option Intérieur/extérieur/intérieur. Cependant, les joints en z paraîtront moins cohérents car la première extrusion d’une nouvelle couche commence sur une surface visible." +"Utilisez l’option Extérieur/Intérieur pour bénéficier de la même qualité de paroi externe et de la même précision dimensionnelle que l’option Intérieur/Extérieur/Intérieur. Cependant, les coutures en Z paraîtront moins cohérentes car la première extrusion d’une nouvelle couche commence sur une surface visible." msgid "Inner/Outer" msgstr "Intérieur/Extérieur" +# AI Translated msgid "Outer/Inner" -msgstr "Extérieur/intérieur" +msgstr "Extérieur/Intérieur" msgid "Inner/Outer/Inner" msgstr "Intérieur/Extérieur/Intérieur" @@ -16580,14 +16732,16 @@ msgstr "Hauteur de couche initiale" msgid "Height of the first layer. Making the first layer height thicker can improve build plate adhesion." msgstr "Hauteur de la première couche. Augmenter la hauteur de la première couche peut améliorer l’adhérence au plateau." -msgid "This is the speed for the first layer except for solid infill sections." -msgstr "Vitesse de la couche initiale à l'exception du remplissage" +# AI Translated +msgid "This is the speed for the walls and brim of the first layer." +msgstr "Vitesse des parois et de la bordure de la couche initiale." msgid "First layer infill" msgstr "Remplissage de la couche initiale" -msgid "This is the speed for solid infill parts of the first layer." -msgstr "Vitesse du remplissage à la couche initiale" +# AI Translated +msgid "This is the speed for the first layer except for walls and brim, such as infill, gap fill and support." +msgstr "Vitesse de la couche initiale, à l’exception des parois et de la bordure, comme le remplissage, le remplissage des espaces et les supports." msgid "First layer travel speed" msgstr "Déplacements" @@ -17280,16 +17434,18 @@ msgstr "Largeur de ligne du remplissage interne. Si elle est exprimée en %, ell msgid "Infill/wall overlap" msgstr "Chevauchement de remplissage/paroi" +# AI Translated #, no-c-format, no-boost-format -msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to line width of sparse infill. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." -msgstr "La zone de remplissage est légèrement élargie pour chevaucher la paroi afin d’améliorer l’adhérence. La valeur du pourcentage est relative à la largeur de la ligne de remplissage. Réglez cette valeur à ~10-15% pour minimiser le risque de sur-extrusion et d’accumulation de matériau, ce qui rendrait les surfaces supérieures rugueuses." +msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to the inner wall line width. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." +msgstr "La zone de remplissage peut être légèrement élargie pour chevaucher les parois afin d’améliorer l’adhérence. La valeur du pourcentage est relative à la largeur de ligne de la paroi intérieure. Réglez cette valeur à ~10-15% pour minimiser le risque de sur-extrusion et d’accumulation de matériau, ce qui rendrait les surfaces supérieures rugueuses." msgid "Top/Bottom solid infill/wall overlap" msgstr "Chevauchement du remplissage ou de la paroi supérieur(e)/inférieur(e)" +# AI Translated #, no-c-format, no-boost-format -msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to line width of sparse infill." -msgstr "La zone de remplissage solide supérieure est légèrement élargie pour chevaucher la paroi afin d’améliorer l’adhérence et de minimiser l’apparition de trous d’épingle à l’endroit où le remplissage supérieur rencontre les parois. Une valeur de 25-30% est un bon point de départ, minimisant l’apparition de trous d’épingle. La valeur en pourcentage est relative à la largeur de ligne du remplissage" +msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to the inner wall line width." +msgstr "La zone de remplissage solide supérieure est légèrement élargie pour chevaucher la paroi afin d’améliorer l’adhérence et de minimiser l’apparition de trous d’épingle à l’endroit où le remplissage supérieur rencontre les parois. Une valeur de 25-30% est un bon point de départ, minimisant l’apparition de trous d’épingle. La valeur en pourcentage est relative à la largeur de ligne de la paroi intérieure." msgid "This is the speed for internal sparse infill." msgstr "Vitesse de remplissage interne" @@ -17315,8 +17471,9 @@ msgstr "Largeur maximale d’une région segmentée. Zéro désactive cette fonc msgid "Interlocking depth of a segmented region" msgstr "Profondeur d’emboîtement d’une région segmentée" -msgid "Interlocking depth of a segmented region. It will be ignored if \"mmu_segmented_region_max_width\" is zero or if \"mmu_segmented_region_interlocking_depth\" is bigger than \"mmu_segmented_region_max_width\". Zero disables this feature." -msgstr "Profondeur d’imbrication d’une région segmentée. Elle sera ignorée si « mmu_segmented_region_max_width » est égal à zéro ou si « mmu_segmented_region_interlocking_depth » est supérieur à « mmu_segmented_region_max_width ». La valeur zéro désactive cette fonctionnalité." +# AI Translated +msgid "Interlocking depth of a segmented region. On every other layer, the segmented region is limited to this depth. It will be ignored if \"interlocking_beam\" is enabled. Zero disables this feature." +msgstr "Profondeur d’emboîtement d’une région segmentée. Une couche sur deux, la région segmentée est limitée à cette profondeur. Elle sera ignorée si « interlocking_beam » est activé. Zéro désactive cette fonction." msgid "Use beam interlocking" msgstr "Utiliser l’emboîtement des poutres" @@ -17418,13 +17575,14 @@ msgstr "Activer le contournage des couches en Z (alias anticrénelage des couche msgid "Minimize wall height angle" msgstr "Angle de minimisation de la hauteur des parois" +# AI Translated msgid "" "Reduce the height of top-surface perimeters to match the model edge height.\n" -"Affects perimeters with a slope less than this angle (degrees).\n" +"Affects perimeters with a slope greater than this angle (degrees).\n" "A reasonable value is 35. Set to 0 to disable." msgstr "" "Réduit la hauteur des périmètres de la surface supérieure pour qu’elle corresponde à la hauteur du bord du modèle.\n" -"Affecte les périmètres dont la pente est inférieure à cet angle (en degrés).\n" +"Affecte les périmètres dont la pente est supérieure à cet angle (en degrés).\n" "Une valeur raisonnable est 35. Réglez sur 0 pour désactiver." msgid "Don't alternate fill direction" @@ -18390,7 +18548,8 @@ msgstr "Joint en biseau pour les parois intérieures" msgid "Use scarf joint for inner walls as well." msgstr "Utiliser également un joint en biseau pour les parois intérieures." -msgid "Role base wipe speed" +# AI Translated +msgid "Role based wipe speed" msgstr "Vitesse d’essuyage en fonction de la vitesse d’extrusion" msgid "The wipe speed is determined by the speed of the current extrusion role. e.g. if a wipe action is executed immediately following an outer wall extrusion, the speed of the outer wall extrusion will be utilized for the wipe action." @@ -18480,16 +18639,15 @@ msgstr "Limite les boucles de jupe/bouclier de courant d'air à une seule paroi msgid "Draft shield" msgstr "Paravent" +# AI Translated msgid "" "A draft shield is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft. It is usually needed only with open frame printers, i.e. without an enclosure.\n" "\n" -"Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used.\n" -"Note: With the draft shield active, the skirt will be printed at skirt distance from the object. Therefore, if brims are active it may intersect with them. To avoid this, increase the skirt distance value.\n" +"Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used." msgstr "" "Un paravent est utile pour protéger une impression ABS ou ASA contre la déformation et le détachement du plateau d’impression en raison des courants d’air. Il n’est généralement nécessaire que pour les imprimantes à structure ouverte, c’est-à-dire sans boîtier.\n" "\n" -"Activé = la hauteur de la jupe est égale à celle de l’objet imprimé le plus haut. Sinon, c’est la « hauteur de la jupe » qui est utilisée.\n" -"Remarque : lorsque le paravent est actif, la jupe est imprimée à la distance de la jupe par rapport à l’objet. Par conséquent, si des bordures sont actives, elle peut les croiser. Pour éviter cela, augmentez la valeur de la distance de la jupe.\n" +"Activé = la hauteur de la jupe est égale à celle de l’objet imprimé le plus haut. Sinon, c’est la « Hauteur de la jupe » qui est utilisée." msgid "Enabled" msgstr "Activé" @@ -18609,8 +18767,9 @@ msgid "Farthest point timelapse" msgstr "Timelapse au point le plus éloigné" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "tour d’essuyage"; align it once the term is settled. msgid "When enabled, the timelapse snapshot is taken at the farthest point from camera instead of traveling to the wipe tower or excess chute. Only effective in traditional timelapse mode on non-I3 printers." -msgstr "Lorsque cette option est activée, l'instantané du timelapse est pris au point le plus éloigné de la caméra au lieu de se déplacer vers la tour d'essuyage ou la goulotte d'évacuation. Efficace uniquement en mode timelapse traditionnel sur les imprimantes non-I3." +msgstr "Lorsque cette option est activée, l’instantané du timelapse est pris au point le plus éloigné de la caméra au lieu de se déplacer vers la tour d’essuyage ou la goulotte d’évacuation. Efficace uniquement en mode timelapse traditionnel sur les imprimantes non-I3." msgid "Temperature variation" msgstr "Variation de température" @@ -18810,10 +18969,12 @@ msgid "Force the toolhead to travel to the wipe tower before issuing the tool ch msgstr "Force la tête d’outil à se déplacer vers la tour d’essuyage avant d’émettre la commande de changement d’outil (Tx). Pertinent uniquement pour les imprimantes multi-extrudeurs (à têtes d’outil multiples) utilisant une tour d’essuyage de type 2. Par défaut, Orca omet ce déplacement sur les machines à têtes d’outil multiples car le firmware gère le changement de tête, ce qui peut entraîner l’émission de la commande Tx au-dessus de la pièce imprimée. Activez cette option si vous préférez que le changement d’outil soit toujours émis au-dessus de la tour d’essuyage." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "tour d’essuyage"; align it once the term is settled. msgid "Wait for temperature on wipe tower" msgstr "Attendre la température sur la tour d’essuyage" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "tour d’essuyage"; align it once the term is settled. msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command." msgstr "Prend le nouvel outil sans attendre qu’il atteigne la température d’impression, se déplace vers la tour d’essuyage et y attend la température, juste avant la purge. Le suintement dû à la chauffe se dépose sur la tour plutôt que sur le modèle, et le déplacement se superpose à la chauffe. Uniquement pertinent pour les imprimantes multi-extrudeurs (multi-têtes) utilisant une tour d’essuyage de type 2. Le firmware ou la macro de changement d’outil ne doivent pas attendre la température eux-mêmes. Lorsque cette option est désactivée, l’attente de température est émise juste après la commande de changement d’outil." @@ -18821,14 +18982,16 @@ msgid "No sparse layers (beta)" msgstr "Pas de couches éparses (beta)" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "tour d’essuyage"; align it once the term is settled. msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower, so the tower ends up below the model and the toolhead has to reach down to it. Layouts where that would collide with an already printed object are rejected. Has no effect with smooth timelapse or clumping detection, which need a tower on every layer." -msgstr "Si cette option est activée, la tour d'essuyage n'est pas imprimée sur les couches sans changement d'outil. Sur les couches comportant un changement d'outil, l'extrudeur descend pour imprimer la tour d'essuyage : la tour se retrouve donc sous le modèle et la tête d'outil doit descendre jusqu'à elle. Les dispositions où cela entrerait en collision avec un objet déjà imprimé sont rejetées. Sans effet avec le timelapse fluide ou la détection d'agglomération de la buse, qui nécessitent une tour à chaque couche." +msgstr "Si cette option est activée, la tour d’essuyage n’est pas imprimée sur les couches sans changement d’outil. Sur les couches comportant un changement d’outil, l’extrudeur descend pour imprimer la tour d’essuyage : la tour se retrouve donc sous le modèle et la tête d’outil doit descendre jusqu’à elle. Les dispositions où cela entrerait en collision avec un objet déjà imprimé sont rejetées. Sans effet avec le timelapse fluide ou la détection d’agglomération de la buse, qui nécessitent une tour à chaque couche." # AI Translated msgid "Combine sparse layers" msgstr "Combiner les couches éparses" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "tour d’amorçage"; align it once the term is settled. msgid "" "If enabled, consecutive layers on which the prime tower has no filament change are printed as a single thicker tower layer instead of one thin layer each, the same way infill combination merges sparse infill. The merged layer is printed at the top of the run, at the height of everything it covers.\n" "\n" @@ -19305,7 +19468,7 @@ msgid "Enable belt purge tower" msgstr "Activer la tour de purge du tapis" # AI Translated -# Needs human review: Glossary cell for Prime tower / Wipe tower is unsettled (⚠); used the catalog's Tour d’essuyage / Tour d’amorçage. +# Needs human review: Glossary cell for Prime tower / Wipe tower is unsettled (⚠); used the catalog's Tour d’essuyage / Tour d’amorçage msgid "Belt-printer replacement for the wipe/prime tower. When enabled on a belt printer, a purge prism is automatically generated next to the printed parts and filament-change purging is routed into it (the classic wipe tower cannot be used on belt printers because its G-code bypasses the belt transform). Only available on belt printers." msgstr "Remplacement de la tour d’essuyage/d’amorçage pour les imprimantes à tapis. Lorsque cette option est activée sur une imprimante à tapis, un prisme de purge est généré automatiquement à côté des pièces imprimées et la purge lors des changements de filament y est dirigée (la tour d’essuyage classique ne peut pas être utilisée sur les imprimantes à tapis, car son G-code contourne la transformation du tapis). Disponible uniquement sur les imprimantes à tapis." @@ -19314,7 +19477,7 @@ msgid "Belt purge tower width" msgstr "Largeur de la tour de purge du tapis" # AI Translated -# Needs human review: Glossary cell for Prime tower / Wipe tower is unsettled (⚠); used the catalog's Tour d’essuyage for 'wipe tower'. +# Needs human review: Glossary cell for Prime tower / Wipe tower is unsettled (⚠); used the catalog's Tour d’essuyage for 'wipe tower' msgid "Width (machine X, across the belt) of the purge prism that is automatically generated on belt printers when the belt purge tower is enabled and multiple filaments are used. Filament-change purging is routed into this prism's extrusions instead of a classic wipe tower. Its height is computed automatically from the worst-case purge volume per layer: a wider prism results in a shorter one." msgstr "Largeur (X machine, en travers du tapis) du prisme de purge généré automatiquement sur les imprimantes à tapis lorsque la tour de purge du tapis est activée et que plusieurs filaments sont utilisés. La purge lors des changements de filament est dirigée vers les extrusions de ce prisme au lieu d'une tour d’essuyage classique. Sa hauteur est calculée automatiquement à partir du volume de purge le plus défavorable par couche : un prisme plus large sera moins haut." @@ -19602,8 +19765,9 @@ msgid "Prime volume mode" msgstr "Mode de volume d'amorçage" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "tour d’essuyage"; align it once the term is settled. msgid "Selects how the wipe-tower prime and flush volumes are computed on multi-extruder printers." -msgstr "Sélectionne la manière dont les volumes d'amorçage et de purge de la tour d'essuyage sont calculés sur les imprimantes multi-extrudeurs." +msgstr "Sélectionne la manière dont les volumes d’amorçage et de purge de la tour d’essuyage sont calculés sur les imprimantes multi-extrudeurs." # AI Translated msgid "Saving" @@ -19634,40 +19798,44 @@ msgstr "Angle au sommet du cône utilisé pour stabiliser la tour d’essuyage. msgid "Maximum wipe tower print speed" msgstr "Vitesse maximale d’impression de la tour d’essuyage" +# AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "tour d’essuyage"; align it once the term is settled. msgid "" "The maximum print speed when purging in the wipe tower and printing the wipe tower sparse layers. When purging, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" "\n" -"When printing the sparse layers, if the internal perimeter speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +"When printing the sparse layers, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" "\n" "Increasing this speed may affect the tower's stability as well as increase the force with which the nozzle collides with any blobs that may have formed on the wipe tower.\n" "\n" "Before increasing this parameter beyond the default of 90 mm/s, make sure your printer can reliably bridge at the increased speeds and that ooze when tool changing is well controlled.\n" "\n" -"For the wipe tower external perimeters the internal perimeter speed is used regardless of this setting." +"For the wipe tower external perimeters the internal perimeter speed is used, also limited by this setting." msgstr "" "Vitesse d’impression maximale lors de la purge dans la tour d’essuyage et de l’impression des couches éparses de la tour d’essuyage. Lors de la purge, si la vitesse de remplissage ou la vitesse calculée à partir de la vitesse volumétrique maximale du filament est inférieure, c’est la plus faible qui sera utilisée.\n" "\n" -"Lors de l’impression des couches éparses, si la vitesse du périmètre interne ou la vitesse calculée à partir de la vitesse volumétrique maximale du filament est inférieure, c’est la plus faible qui sera utilisée.\n" +"Lors de l’impression des couches éparses, si la vitesse de remplissage ou la vitesse calculée à partir de la vitesse volumétrique maximale du filament est inférieure, c’est la plus faible qui sera utilisée.\n" "\n" "L’augmentation de cette vitesse peut affecter la stabilité de la tour et accroître la force avec laquelle la buse heurte les éventuels amas qui se sont formés sur la tour d’essuyage.\n" "\n" "Avant d’augmenter ce paramètre au-delà de la valeur par défaut de 90 mm/s, assurez-vous que votre imprimante peut réaliser des ponts de façon fiable à des vitesses plus élevées et que le suintement lors des changements d’outil est bien maîtrisé.\n" "\n" -"Pour les périmètres externes de la tour d’essuyage, c’est la vitesse du périmètre interne qui est utilisée, indépendamment de ce paramètre." +"Pour les périmètres externes de la tour d’essuyage, c’est la vitesse du périmètre interne qui est utilisée, également limitée par ce paramètre." msgid "Wall type" msgstr "Type de paroi" +# AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "tour d’essuyage"; align it once the term is settled. msgid "" "Wipe tower outer wall type.\n" -"1. Rectangle: The default wall type, a rectangle with fixed width and height.\n" +"1. Rectangle: A rectangle with fixed width and height.\n" "2. Cone: A cone with a fillet at the bottom to help stabilize the wipe tower.\n" -"3. Rib: Adds four ribs to the tower wall for enhanced stability." +"3. Rib: The default wall type, which adds four ribs to the tower wall for enhanced stability." msgstr "" -"Type de paroi extérieure de la tour de purge.\n" -"1. Rectangle : Le type de paroi par défaut, un rectangle avec une largeur et une hauteur fixes.\n" -"2. Cône : Un cône avec un congé en bas pour aider à stabiliser la tour de purge.\n" -"3. Nervure : Ajoute quatre nervures à la paroi de la tour pour une stabilité améliorée." +"Type de paroi extérieure de la tour d’essuyage.\n" +"1. Rectangle : Un rectangle avec une largeur et une hauteur fixes.\n" +"2. Cône : Un cône avec un congé en bas pour aider à stabiliser la tour d’essuyage.\n" +"3. Nervure : Le type de paroi par défaut, qui ajoute quatre nervures à la paroi de la tour pour une stabilité améliorée." msgid "Rectangle" msgstr "Rectangle" @@ -19758,8 +19926,10 @@ msgstr "Espacement des lignes de purge sur la tour d’essuyage." msgid "Extra flow for purging" msgstr "Débit supplémentaire pour purger" -msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker or narrower than they normally would be. The spacing is adjusted automatically." -msgstr "Débit supplémentaire utilisé pour les lignes de purge de la tour d’essuyage. Cela rend les lignes de purge plus épaisses ou plus étroites qu’elles ne le seraient normalement. L’espacement est ajusté automatiquement." +# AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "tour d’essuyage"; align it once the term is settled. +msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker than they normally would be. The spacing is adjusted automatically." +msgstr "Débit supplémentaire utilisé pour les lignes de purge de la tour d’essuyage. Cela rend les lignes de purge plus épaisses qu’elles ne le seraient normalement. L’espacement est ajusté automatiquement." msgid "Idle temperature" msgstr "Température au repos" @@ -19875,14 +20045,15 @@ msgstr "Épaisseur minimale des éléments fins. Les éléments du modèle plus msgid "Minimum wall length" msgstr "Longueur minimale de la paroi" +# AI Translated msgid "" -"Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. Higher values remove more and longer walls.\n" +"Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. The value is a multiple of the wall width. Higher values remove more and longer walls.\n" "\n" -"NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the Advanced settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." +"NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the 'Walls and surfaces' settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." msgstr "" -"Ajustez cette valeur pour éviter que des parois courtes et non fermées soient imprimées, ce qui pourrait augmenter le temps d’impression. Des valeurs plus élevées suppriment des parois plus nombreuses et plus longues.\n" +"Ajustez cette valeur pour éviter que des parois courtes et non fermées soient imprimées, ce qui pourrait augmenter le temps d’impression. La valeur est un multiple de la largeur de paroi. Des valeurs plus élevées suppriment des parois plus nombreuses et plus longues.\n" "\n" -"REMARQUE : les surfaces inférieures et supérieures ne sont pas affectées par cette valeur afin d’éviter les lacunes visuelles sur le côté du modèle. Réglez le « seuil d’une paroi » dans les paramètres avancés ci-dessous pour ajuster la sensibilité de ce qui est considéré comme une surface supérieure. Le « seuil d’une paroi » n’est visible que si ce paramètre est supérieur à la valeur par défaut de 0,5 ou si l’option « surfaces supérieures à une paroi » est activée." +"REMARQUE : les surfaces inférieures et supérieures ne sont pas affectées par cette valeur afin d’éviter les lacunes visuelles sur le côté du modèle. Réglez « Seuil de paroi unique » dans les paramètres « Parois et surfaces » ci-dessous pour ajuster la sensibilité de ce qui est considéré comme une surface supérieure. « Seuil de paroi unique » n’est visible que si ce paramètre est supérieur à la valeur par défaut de 0,5 ou si l’option « surfaces supérieures à une paroi » est activée." msgid "Maximum wall resolution" msgstr "Résolution maximale des parois" @@ -20651,6 +20822,7 @@ msgid "Size of the print bed bounding box" msgstr "Taille du plateau d’impression" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "tour d’essuyage"; align it once the term is settled. msgid "First layer center without wipe tower" msgstr "Centre de la première couche sans tour d’essuyage" @@ -23777,9 +23949,6 @@ msgstr "Activer l'attribution intelligente de filament : attribuer un filament msgid "File Saving" msgstr "Enregistrement du fichier" -msgid "Don't remind me again" -msgstr "Ne plus me rappeler" - msgid "No further pop-up will appear. You can reopen it in 'Preferences'" msgstr "Aucune fenêtre contextuelle n'apparaîtra plus. Vous pouvez la rouvrir dans 'Préférences'" @@ -33952,6 +34121,167 @@ msgstr "" "Éviter la déformation\n" "Saviez-vous que lors de l’impression de matériaux susceptibles de se déformer, tels que l’ABS, une augmentation appropriée de la température du plateau chauffant peut réduire la probabilité de déformation?" +#~ msgid "" +#~ "Line width of the Bridge. If expressed as a %, it will be computed over the nozzle diameter.\n" +#~ "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" +#~ "\n" +#~ "The maximum value is 100% or the nozzle diameter.\n" +#~ "If set to 0, the line width will match the Internal solid infill width." +#~ msgstr "" +#~ "La largeur de ligne des ponts s’exprime soit en valeur absolue, soit en pourcentage du diamètre de la buse active (les pourcentages sont calculés à partir du diamètre de la buse).\n" +#~ "Recommandé avec une densité de pont ou un rapport de débit de pont plus élevés.\n" +#~ "\n" +#~ "La valeur maximale est 100 % ou le diamètre de la buse.\n" +#~ "Si réglée à 0, la largeur de ligne correspond à celle du remplissage plein interne." + +#, no-c-format, no-boost-format +#~ msgid "" +#~ "Enable this option to slow down printing in areas where perimeters may have curled upwards.\n" +#~ "For example, additional slowdown will be applied when printing overhangs on sharp corners like the front of the Benchy hull, reducing curling which compounds over multiple layers.\n" +#~ "\n" +#~ "It is generally recommended to have this option switched on unless your printer cooling is powerful enough or the print speed is slow enough that perimeter curling does not happen. \n" +#~ "If printing with a high external perimeter speed, this parameter may introduce wall artifacts when slowing down, due to the potentially large variance in print speeds causing the extruder to be unable to keep up with the requested flow change.\n" +#~ "Root cause of these artifacts is most likely PA tuning being slightly off, especially when combined with a high PA smooth time.\n" +#~ "\n" +#~ "Recommendations when enabling this option:\n" +#~ "1. Reduce Pressure Advance smooth time to 0.015 - 0.02 so the extruder reacts quickly to the speed changes.\n" +#~ "2. Increase the minimum print speeds to limit the magnitude of the slowdown and reduce the variance between fast and slow segments.\n" +#~ "3. If artifacts still appear, enable Extrusion Rate Smoothing (ERS) to further smooth the flow transitions.\n" +#~ "\n" +#~ "Note: When this option is enabled, overhang perimeters are treated like overhangs, meaning the overhang speed is applied even if the overhanging perimeter is part of a bridge.\n" +#~ "For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 100% overhang speed will be applied." +#~ msgstr "" +#~ "Activez cette option pour ralentir l’impression dans les zones où les périmètres risquent de s’être recourbés vers le haut.\n" +#~ "Par exemple, un ralentissement supplémentaire est appliqué lors de l’impression de surplombs sur des angles vifs, comme l’avant de la coque du Benchy, réduisant le tuilage qui s’amplifie au fil des couches.\n" +#~ "\n" +#~ "Il est généralement recommandé de laisser cette option activée, sauf si le refroidissement de votre imprimante est assez puissant ou la vitesse d’impression assez lente pour que les périmètres ne se recourbent pas. \n" +#~ "En cas d’impression avec une vitesse de périmètre externe élevée, ce paramètre peut introduire des artéfacts sur les parois lors du ralentissement, en raison de la variation potentiellement importante des vitesses d’impression empêchant l’extrudeur de suivre le changement de débit demandé.\n" +#~ "La cause profonde de ces artéfacts est très probablement un réglage du PA légèrement décalé, surtout combiné à un temps de lissage du PA élevé.\n" +#~ "\n" +#~ "Recommandations lorsque cette option est activée :\n" +#~ "1. Réduisez le temps de lissage du Pressure Advance à 0,015 – 0,02 pour que l’extrudeur réagisse rapidement aux changements de vitesse.\n" +#~ "2. Augmentez les vitesses d’impression minimales pour limiter l’ampleur du ralentissement et réduire l’écart entre segments rapides et lents.\n" +#~ "3. Si des artéfacts persistent, activez le lissage du débit d’extrusion (ERS) pour adoucir davantage les transitions de débit.\n" +#~ "\n" +#~ "Remarque : lorsque cette option est activée, les périmètres en surplomb sont traités comme des surplombs : la vitesse de surplomb s’applique même si le périmètre en surplomb fait partie d’un pont.\n" +#~ "Par exemple, lorsque les périmètres sont à 100 % en surplomb, sans paroi pour les soutenir par en dessous, la vitesse de surplomb à 100 % est appliquée." + +#~ msgid "" +#~ "Speed of the externally visible bridge extrusions.\n" +#~ "\n" +#~ "In addition, if Slow down for curled perimeters is disabled or Classic overhang mode is enabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." +#~ msgstr "" +#~ "Vitesse des extrusions de pont visible de l’extérieur.\n" +#~ "\n" +#~ "En outre, si la fonction Ralentir pour les périmètres courbés est désactivée ou si le mode Surplomb classique est activé, il s’agira de la vitesse d’impression des parois en surplomb dont l’appui est inférieur à 13 %, qu’elles fassent partie d’un pont ou d’un surplomb." + +#~ msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above. Set to zero for auto." +#~ msgstr "Ce paramètre séparé affectera la vitesse des périmètres ayant un rayon <= petite longueur de périmètre (généralement des trous). S’il est exprimé en pourcentage (par exemple : 80%), il sera calculé sur la vitesse de la paroi extérieure ci-dessus. Mettre à zéro pour automatique." + +#~ msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above. Set to zero for auto." +#~ msgstr "Comme « Petits périmètres », mais pour les supports. Ce réglage distinct affecte la vitesse des supports pour les zones <= `small_support_perimeter_threshold`. S’il est exprimé en pourcentage (par exemple : 80 %), il est calculé à partir du réglage de vitesse des supports ou de l’interface de support ci-dessus. Réglez sur zéro pour automatique." + +#~ msgid "" +#~ "Print sequence of the internal (inner) and external (outer) walls.\n" +#~ "\n" +#~ "Use Inner/Outer for best overhangs. This is because the overhanging walls can adhere to a neighbouring perimeter while printing. However, this option results in slightly reduced surface quality as the external perimeter is deformed by being squashed to the internal perimeter.\n" +#~ "\n" +#~ "Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended against the Outer/Inner option in most cases.\n" +#~ "\n" +#~ "Use Outer/Inner for the same external wall quality and dimensional accuracy benefits of Inner/Outer/Inner option. However, the Z seams will appear less consistent as the first extrusion of a new layer starts on a visible surface." +#~ msgstr "" +#~ "Séquence d'impression des parois internes (intérieures) et externes (extérieures).\n" +#~ "\n" +#~ "Utilisez Intérieur/Extérieur pour obtenir les meilleurs surplombs. En effet, les parois en surplomb peuvent adhérer à un périmètre voisin lors de l'impression. Toutefois, cette option entraîne une légère diminution de la qualité de la surface, car le périmètre externe est déformé par l'écrasement du périmètre interne.\n" +#~ "\n" +#~ "Utilisez l’option Intérieur/Extérieur/Intérieur pour obtenir la meilleure finition de surface externe et la meilleure précision dimensionnelle, car la paroi externe est imprimée sans être dérangée par un périmètre interne. Cependant, les performances de la paroi en surplomb seront réduites car il n’y a pas de périmètre interne contre lequel imprimer la paroi externe. Cette option nécessite un minimum de trois parois pour être efficace, car elle imprime d’abord les parois internes à partir du troisième périmètre, puis le périmètre externe et, enfin, le premier périmètre interne. Cette option est recommandée par rapport à l’option Extérieur/intérieur dans la plupart des cas.\n" +#~ "\n" +#~ "Utilisez l’option Extérieur/intérieur pour bénéficier de la même qualité de paroi externe et de la même précision dimensionnelle que l’option Intérieur/extérieur/intérieur. Cependant, les joints en z paraîtront moins cohérents car la première extrusion d’une nouvelle couche commence sur une surface visible." + +#~ msgid "This is the speed for the first layer except for solid infill sections." +#~ msgstr "Vitesse de la couche initiale à l'exception du remplissage" + +#~ msgid "This is the speed for solid infill parts of the first layer." +#~ msgstr "Vitesse du remplissage à la couche initiale" + +#, no-c-format, no-boost-format +#~ msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to line width of sparse infill. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." +#~ msgstr "La zone de remplissage est légèrement élargie pour chevaucher la paroi afin d’améliorer l’adhérence. La valeur du pourcentage est relative à la largeur de la ligne de remplissage. Réglez cette valeur à ~10-15% pour minimiser le risque de sur-extrusion et d’accumulation de matériau, ce qui rendrait les surfaces supérieures rugueuses." + +#, no-c-format, no-boost-format +#~ msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to line width of sparse infill." +#~ msgstr "La zone de remplissage solide supérieure est légèrement élargie pour chevaucher la paroi afin d’améliorer l’adhérence et de minimiser l’apparition de trous d’épingle à l’endroit où le remplissage supérieur rencontre les parois. Une valeur de 25-30% est un bon point de départ, minimisant l’apparition de trous d’épingle. La valeur en pourcentage est relative à la largeur de ligne du remplissage" + +#~ msgid "Interlocking depth of a segmented region. It will be ignored if \"mmu_segmented_region_max_width\" is zero or if \"mmu_segmented_region_interlocking_depth\" is bigger than \"mmu_segmented_region_max_width\". Zero disables this feature." +#~ msgstr "Profondeur d’imbrication d’une région segmentée. Elle sera ignorée si « mmu_segmented_region_max_width » est égal à zéro ou si « mmu_segmented_region_interlocking_depth » est supérieur à « mmu_segmented_region_max_width ». La valeur zéro désactive cette fonctionnalité." + +#~ msgid "" +#~ "Reduce the height of top-surface perimeters to match the model edge height.\n" +#~ "Affects perimeters with a slope less than this angle (degrees).\n" +#~ "A reasonable value is 35. Set to 0 to disable." +#~ msgstr "" +#~ "Réduit la hauteur des périmètres de la surface supérieure pour qu’elle corresponde à la hauteur du bord du modèle.\n" +#~ "Affecte les périmètres dont la pente est inférieure à cet angle (en degrés).\n" +#~ "Une valeur raisonnable est 35. Réglez sur 0 pour désactiver." + +#~ msgid "Role base wipe speed" +#~ msgstr "Vitesse d’essuyage en fonction de la vitesse d’extrusion" + +#~ msgid "" +#~ "A draft shield is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft. It is usually needed only with open frame printers, i.e. without an enclosure.\n" +#~ "\n" +#~ "Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used.\n" +#~ "Note: With the draft shield active, the skirt will be printed at skirt distance from the object. Therefore, if brims are active it may intersect with them. To avoid this, increase the skirt distance value.\n" +#~ msgstr "" +#~ "Un paravent est utile pour protéger une impression ABS ou ASA contre la déformation et le détachement du plateau d’impression en raison des courants d’air. Il n’est généralement nécessaire que pour les imprimantes à structure ouverte, c’est-à-dire sans boîtier.\n" +#~ "\n" +#~ "Activé = la hauteur de la jupe est égale à celle de l’objet imprimé le plus haut. Sinon, c’est la « hauteur de la jupe » qui est utilisée.\n" +#~ "Remarque : lorsque le paravent est actif, la jupe est imprimée à la distance de la jupe par rapport à l’objet. Par conséquent, si des bordures sont actives, elle peut les croiser. Pour éviter cela, augmentez la valeur de la distance de la jupe.\n" + +#~ msgid "" +#~ "The maximum print speed when purging in the wipe tower and printing the wipe tower sparse layers. When purging, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +#~ "\n" +#~ "When printing the sparse layers, if the internal perimeter speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +#~ "\n" +#~ "Increasing this speed may affect the tower's stability as well as increase the force with which the nozzle collides with any blobs that may have formed on the wipe tower.\n" +#~ "\n" +#~ "Before increasing this parameter beyond the default of 90 mm/s, make sure your printer can reliably bridge at the increased speeds and that ooze when tool changing is well controlled.\n" +#~ "\n" +#~ "For the wipe tower external perimeters the internal perimeter speed is used regardless of this setting." +#~ msgstr "" +#~ "Vitesse d’impression maximale lors de la purge dans la tour d’essuyage et de l’impression des couches éparses de la tour d’essuyage. Lors de la purge, si la vitesse de remplissage ou la vitesse calculée à partir de la vitesse volumétrique maximale du filament est inférieure, c’est la plus faible qui sera utilisée.\n" +#~ "\n" +#~ "Lors de l’impression des couches éparses, si la vitesse du périmètre interne ou la vitesse calculée à partir de la vitesse volumétrique maximale du filament est inférieure, c’est la plus faible qui sera utilisée.\n" +#~ "\n" +#~ "L’augmentation de cette vitesse peut affecter la stabilité de la tour et accroître la force avec laquelle la buse heurte les éventuels amas qui se sont formés sur la tour d’essuyage.\n" +#~ "\n" +#~ "Avant d’augmenter ce paramètre au-delà de la valeur par défaut de 90 mm/s, assurez-vous que votre imprimante peut réaliser des ponts de façon fiable à des vitesses plus élevées et que le suintement lors des changements d’outil est bien maîtrisé.\n" +#~ "\n" +#~ "Pour les périmètres externes de la tour d’essuyage, c’est la vitesse du périmètre interne qui est utilisée, indépendamment de ce paramètre." + +#~ msgid "" +#~ "Wipe tower outer wall type.\n" +#~ "1. Rectangle: The default wall type, a rectangle with fixed width and height.\n" +#~ "2. Cone: A cone with a fillet at the bottom to help stabilize the wipe tower.\n" +#~ "3. Rib: Adds four ribs to the tower wall for enhanced stability." +#~ msgstr "" +#~ "Type de paroi extérieure de la tour de purge.\n" +#~ "1. Rectangle : Le type de paroi par défaut, un rectangle avec une largeur et une hauteur fixes.\n" +#~ "2. Cône : Un cône avec un congé en bas pour aider à stabiliser la tour de purge.\n" +#~ "3. Nervure : Ajoute quatre nervures à la paroi de la tour pour une stabilité améliorée." + +#~ msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker or narrower than they normally would be. The spacing is adjusted automatically." +#~ msgstr "Débit supplémentaire utilisé pour les lignes de purge de la tour d’essuyage. Cela rend les lignes de purge plus épaisses ou plus étroites qu’elles ne le seraient normalement. L’espacement est ajusté automatiquement." + +#~ msgid "" +#~ "Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. Higher values remove more and longer walls.\n" +#~ "\n" +#~ "NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the Advanced settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." +#~ msgstr "" +#~ "Ajustez cette valeur pour éviter que des parois courtes et non fermées soient imprimées, ce qui pourrait augmenter le temps d’impression. Des valeurs plus élevées suppriment des parois plus nombreuses et plus longues.\n" +#~ "\n" +#~ "REMARQUE : les surfaces inférieures et supérieures ne sont pas affectées par cette valeur afin d’éviter les lacunes visuelles sur le côté du modèle. Réglez le « seuil d’une paroi » dans les paramètres avancés ci-dessous pour ajuster la sensibilité de ce qui est considéré comme une surface supérieure. Le « seuil d’une paroi » n’est visible que si ce paramètre est supérieur à la valeur par défaut de 0,5 ou si l’option « surfaces supérieures à une paroi » est activée." + # AI Translated #, boost-format #~ msgid "Split into %1% part" diff --git a/localization/i18n/hu/OrcaSlicer_hu.po b/localization/i18n/hu/OrcaSlicer_hu.po index 585af7a33d..231133efe4 100644 --- a/localization/i18n/hu/OrcaSlicer_hu.po +++ b/localization/i18n/hu/OrcaSlicer_hu.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-10-13 09:55-0300\n" +"POT-Creation-Date: 2026-10-14 10:04-0300\n" "Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -2435,6 +2435,66 @@ msgstr "Hálózati bővítmény korlátozás" msgid "Privacy Policy Update" msgstr "Adatvédelmi szabályzat frissítése" +# AI Translated +msgid "All your filament presets are available on the printers they were made for." +msgstr "Az összes filamentbeállításod elérhető azokon a nyomtatókon, amelyekhez készültek." + +# AI Translated +msgid "Migrate Filament Presets" +msgstr "Filamentbeállítások áttelepítése" + +# AI Translated +msgid "" +"OrcaSlicer 2.5.0 restructured many system filament presets to fix incorrect profiles and prepare for future features. As a result, the presets below no longer show on some printers they were made for. Sorry for the trouble; this is a one-time fix.\n" +"\n" +"Add those printers back to your presets now? Your presets are backed up first. You can also do this later from Help > Migrate Filament Presets." +msgstr "" +"Az OrcaSlicer 2.5.0 átszervezte a rendszer számos filamentbeállítását, hogy kijavítsa a hibás profilokat és előkészítse a jövőbeli funkciókat. Emiatt az alábbi beállítások már nem jelennek meg néhány nyomtatón, amelyekhez készültek. Elnézést a kellemetlenségért; ez egy egyszeri javítás.\n" +"\n" +"Szeretnéd most visszaadni ezeket a nyomtatókat a beállításaidhoz? Előtte biztonsági mentés készül a beállításaidról. Ezt később is megteheted a Segítség > Filamentbeállítások áttelepítése menüpontban." + +# AI Translated +#, boost-format +msgid "%1% (based on %2%)" +msgstr "%1% (%2% alapján)" + +msgid "Don't remind me again" +msgstr "Ne emlékeztessen újra" + +# AI Translated +msgid "Your presets could not be backed up, so they were not migrated." +msgstr "A beállításaidról nem sikerült biztonsági mentést készíteni, ezért nem lettek áttelepítve." + +# AI Translated +msgid "The user presets folder could not be locked, so nothing was migrated. Another OrcaSlicer instance may be saving presets; try again later from Help > Migrate Filament Presets." +msgstr "A felhasználói beállítások mappáját nem sikerült zárolni, ezért semmi sem lett áttelepítve. Lehet, hogy egy másik OrcaSlicer példány éppen beállításokat ment; próbáld újra később a Segítség > Filamentbeállítások áttelepítése menüpontban." + +# AI Translated +#, boost-format +msgid "" +"Your filament presets could not be migrated. A backup of your presets was saved to:\n" +"%1%" +msgstr "" +"A filamentbeállításaidat nem sikerült áttelepíteni. A beállításaidról készült biztonsági mentés ide lett mentve:\n" +"%1%" + +# AI Translated +#, boost-format +msgid "" +"Your filament presets were migrated. Select them again in the filament list where you used them.\n" +"\n" +"A backup of your presets was saved to:\n" +"%1%" +msgstr "" +"A filamentbeállításaid áttelepítése megtörtént. Válaszd ki őket újra a filamentlistában ott, ahol használtad őket.\n" +"\n" +"A beállításaidról készült biztonsági mentés ide lett mentve:\n" +"%1%" + +# AI Translated +msgid "These presets could not be migrated:" +msgstr "Ezeket a beállításokat nem sikerült áttelepíteni:" + #, c-format, boost-format msgid "your Orca Cloud profile (user ID: \"%s\")" msgstr "az Orca Cloud-profilod (felhasználói azonosító: \"%s\")" @@ -3153,6 +3213,63 @@ msgstr "(Elveszett szín)" msgid "Center" msgstr "Közép" +# AI Translated +msgid "Distribute left-right" +msgstr "Elosztás bal-jobb irányban" + +# AI Translated +msgid "Distribute front-back" +msgstr "Elosztás előre-hátra irányban" + +# AI Translated +msgid "Distribute top-bottom" +msgstr "Elosztás fel-le irányban" + +# AI Translated +msgid "Align left" +msgstr "Igazítás balra" + +# AI Translated +msgid "Align left-right center" +msgstr "Igazítás középre bal-jobb irányban" + +# AI Translated +msgid "Align right" +msgstr "Igazítás jobbra" + +# AI Translated +# Needs human review: Object menu item that aligns the objects' front edges (-Y on the plate); check that 'előre' is not read as 'in advance'. +msgid "Align front" +msgstr "Igazítás előre" + +# AI Translated +msgid "Align front-back center" +msgstr "Igazítás középre előre-hátra irányban" + +# AI Translated +msgid "Align back" +msgstr "Igazítás hátra" + +# AI Translated +msgid "Align bottom" +msgstr "Igazítás alulra" + +# AI Translated +msgid "Align top-bottom center" +msgstr "Igazítás középre fel-le irányban" + +# AI Translated +msgid "Align top" +msgstr "Igazítás felülre" + +# AI Translated +msgid "Align/Distribute" +msgstr "Igazítás/Elosztás" + +# AI Translated +msgid "Align and distribute objects" +msgstr "Objektumok igazítása és elosztása" + msgid "Drop" msgstr "Lehelyezés" @@ -6675,6 +6792,10 @@ msgstr "Beállítás varázsló" msgid "Show Configuration Folder" msgstr "Konfigurációs mappa megjelenítése" +# AI Translated +msgid "Bring back filament presets that a profile update removed from printers they were made for" +msgstr "Azoknak a filamentbeállításoknak a visszahozása, amelyeket egy profilfrissítés eltávolított azokról a nyomtatókról, amelyekhez készültek" + # AI Translated msgid "Troubleshoot Center" msgstr "Hibaelhárító központ" @@ -14079,6 +14200,18 @@ msgstr "több metszéspont egy kerülettel, csak egy lett felhasználva (%1%)" msgid "a perimeter is fully inside a modifier, the modifier was not applied to it (%1%)" msgstr "egy kerület teljesen egy módosítón belül van, a módosító nem lett rá alkalmazva (%1%)" +# AI Translated +#. TRN: %1% is the modifier type "Seam Blocked" as in the menu, %2% the modifier name, %3% the object name. +#, boost-format +msgid "%1% modifier \"%2%\" of \"%3%\" covers an entire perimeter" +msgstr "%1% módosító „%2%” (objektum: „%3%”) a teljes kerületet lefedi" + +# AI Translated +#. TRN: %1% is the modifier type "Seam Blocked" as in the menu, %2% the modifier name, %3% the object name, %4% the number of modifiers. +#, boost-format +msgid "%1% modifier \"%2%\" of \"%3%\" (%4% in total) covers an entire perimeter" +msgstr "%1% módosító „%2%” (objektum: „%3%”, összesen: %4%) a teljes kerületet lefedi" + # AI Translated #, boost-format msgid "modifier \"%1%\" of \"%2%\" had no effect on the seam (it might not reach the centerline of the printed perimeter)" @@ -15105,13 +15238,13 @@ msgid "" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" -"If set to 0, the line width will match the Internal solid infill width." +"If set to 0, the line width will match the Internal solid infill width, or the nozzle diameter for thick bridges." msgstr "" "Az áthidalás vonalszélessége. Ha %-ban van megadva, a fúvóka átmérőjéből számítódik.\n" -"Ajánlott nagyobb áthidalási sűrűséggel vagy áthidalási anyagáramlással együtt használni.\n" +"Ajánlott nagyobb áthidalási sűrűséggel vagy magasabb „Áthidalás anyagáramlása” értékkel együtt használni.\n" "\n" "A maximális érték 100%, illetve a fúvóka átmérője.\n" -"Ha 0-ra van állítva, a vonalszélesség megegyezik a belső tömör kitöltés szélességével." +"Ha 0-ra van állítva, a vonalszélesség megegyezik a belső szilárd kitöltés szélességével, vastag áthidalásoknál pedig a fúvóka átmérőjével." msgid "Internal bridge flow ratio" msgstr "Belső híd anyagáramlása" @@ -15396,7 +15529,7 @@ msgid "" "3. If artifacts still appear, enable Extrusion Rate Smoothing (ERS) to further smooth the flow transitions.\n" "\n" "Note: When this option is enabled, overhang perimeters are treated like overhangs, meaning the overhang speed is applied even if the overhanging perimeter is part of a bridge.\n" -"For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 100% overhang speed will be applied." +"For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 75% overhang speed will be applied, limited by the bridge speed." msgstr "" "Kapcsold be ezt a lehetőséget, hogy lassabban nyomtasson azokon a területeken, ahol a falak felfelé kunkorodhattak.\n" "Például további lassítás lép életbe éles sarkokon lévő túlnyúlások nyomtatásakor, mint amilyen a Benchy hajótestének eleje, csökkentve a több rétegen át felhalmozódó kunkorodást.\n" @@ -15411,19 +15544,20 @@ msgstr "" "3. Ha még mindig megjelennek a hibák, kapcsold be az extrudálási sebesség simítását (ERS) az anyagáramlás átmeneteinek további simításához.\n" "\n" "Megjegyzés: ha ez a beállítás be van kapcsolva, a túlnyúló falakat a rendszer túlnyúlásként kezeli, vagyis a túlnyúlási sebesség akkor is érvényes, ha a túlnyúló fal egy áthidalás része.\n" -"Például amikor a falak 100%-ban túlnyúlnak, és alattuk nincs alátámasztó fal, a 100%-os túlnyúlási sebesség lesz alkalmazva." +"Például amikor a falak 100%-ban túlnyúlnak, és alattuk nincs alátámasztó fal, a 75%-os túlnyúlási sebesség lesz alkalmazva, az áthidalási sebesség által korlátozva." msgid "mm/s or %" msgstr "mm/s vagy %" +# AI Translated msgid "" "Speed of the externally visible bridge extrusions.\n" "\n" -"In addition, if Slow down for curled perimeters is disabled or Classic overhang mode is enabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." +"In addition, if Slow down for curled perimeters is disabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." msgstr "" "A külsőleg látható hídextrudálások sebessége.\n" "\n" -"Ezen felül, ha a felkunkorodó kerületeknél való lassítás ki van kapcsolva, vagy a klasszikus túlnyúlási mód engedélyezett, akkor ez lesz azon túlnyúló falak nyomtatási sebessége is, amelyeket 13%-nál kisebb mértékben támaszt alá az alattuk lévő réteg, függetlenül attól, hogy híd vagy túlnyúlás részét képezik." +"Ezen felül, ha a Lassítás felkunkorodó kerületeknél ki van kapcsolva, akkor ez lesz azon túlnyúló falak nyomtatási sebessége is, amelyeket 13%-nál kisebb mértékben támaszt alá az alattuk lévő réteg, függetlenül attól, hogy híd vagy túlnyúlás részét képezik." msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%." msgstr "A belső hidak sebessége. Ha az érték százalékban van megadva, a bridge_speed alapján lesz kiszámítva. Az alapértelmezett érték 150%." @@ -15991,8 +16125,9 @@ msgstr "A legkülső látható fal sebessége. A jobb minőség érdekében ez l msgid "Small perimeters" msgstr "Kis peremek" -msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above. Set to zero for auto." -msgstr "Ez a külön beállítás a <= small_perimeter_threshold sugarú kerületek sebességét befolyásolja (általában furatoknál). Ha százalékban van megadva (például: 80%), a fenti külső fali sebesség alapján lesz kiszámítva. Az automatikus módhoz állítsd 0-ra." +# AI Translated +msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above." +msgstr "Ez a külön beállítás a <= small_perimeter_threshold sugarú kerületek sebességét befolyásolja (általában furatoknál). Ha százalékban van megadva (például: 80%), a fenti külső fali sebesség alapján lesz kiszámítva." msgid "Small perimeters threshold" msgstr "Kis kerületek küszöbértéke" @@ -16005,8 +16140,8 @@ msgid "Small support perimeters" msgstr "Kis támaszfalak" # AI Translated -msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above. Set to zero for auto." -msgstr "Ugyanaz, mint a \"Kis peremek\", de a támaszokra vonatkozik. Ez a külön beállítás a támasz sebességét befolyásolja a `small_support_perimeter_threshold` értéknél kisebb vagy azzal egyenlő területeken. Ha százalékban van megadva (például: 80%), a fenti támasz- vagy támasz érintkező felület sebességéből számítódik. Automatikus működéshez állítsd nullára." +msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above." +msgstr "Ugyanaz, mint a „Kis peremek”, de a támaszokra vonatkozik. Ez a külön beállítás a támasz sebességét befolyásolja a `small_support_perimeter_threshold` értéknél kisebb vagy azzal egyenlő területeken. Ha százalékban van megadva (például: 80%), a fenti támasz- vagy támasz érintkező felület sebességéből számítódik." # AI Translated msgid "Small support perimeters threshold" @@ -16019,12 +16154,13 @@ msgstr "Ez állítja be a kis támaszfalak hosszának küszöbértékét. Az ala msgid "Walls printing order" msgstr "Falak nyomtatási sorrendje" +# AI Translated msgid "" "Print sequence of the internal (inner) and external (outer) walls.\n" "\n" "Use Inner/Outer for best overhangs. This is because the overhanging walls can adhere to a neighbouring perimeter while printing. However, this option results in slightly reduced surface quality as the external perimeter is deformed by being squashed to the internal perimeter.\n" "\n" -"Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended against the Outer/Inner option in most cases.\n" +"Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended over the Outer/Inner option in most cases.\n" "\n" "Use Outer/Inner for the same external wall quality and dimensional accuracy benefits of Inner/Outer/Inner option. However, the Z seams will appear less consistent as the first extrusion of a new layer starts on a visible surface." msgstr "" @@ -16986,14 +17122,16 @@ msgstr "Kezdő rétegmagasság" msgid "Height of the first layer. Making the first layer height thicker can improve build plate adhesion." msgstr "Kezdőréteg magassága. A vastagabb kezdőréteg javíthatja a tárgy asztalhoz való tapadását" -msgid "This is the speed for the first layer except for solid infill sections." -msgstr "A kezdőréteg nyomtatási sebessége a szilárd kitöltési rész kivételével" +# AI Translated +msgid "This is the speed for the walls and brim of the first layer." +msgstr "A kezdőréteg falainak és peremének sebessége." msgid "First layer infill" msgstr "Kezdőréteg kitöltése" -msgid "This is the speed for solid infill parts of the first layer." -msgstr "A kezdőréteg szilárd kitöltési részének sebessége" +# AI Translated +msgid "This is the speed for the first layer except for walls and brim, such as infill, gap fill and support." +msgstr "A kezdőréteg sebessége a falak és a perem kivételével, például a kitöltés, a hézagok kitöltése és a támasz." msgid "First layer travel speed" msgstr "Első réteg mozgási sebessége" @@ -17710,16 +17848,18 @@ msgstr "A belső kitöltés vonalszélessége. Ha százalékban adod meg, a szel msgid "Infill/wall overlap" msgstr "Kitöltés/fal átfedés" +# AI Translated #, no-c-format, no-boost-format -msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to line width of sparse infill. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." -msgstr "A jobb kötés érdekében kissé megnöveli a kitöltési területet, hogy az átfedje a falat. A százalékos érték a kitöltés vonalszélességéhez viszonyított. Körülbelül 10-15%-os értékkel csökkenthető a túlextrudálás és az érdes felső felületet okozó anyagfelhalmozódás." +msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to the inner wall line width. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." +msgstr "A jobb kötés érdekében kissé megnöveli a kitöltési területet, hogy az átfedje a falat. A százalékos érték a belső fal vonalszélességéhez viszonyított. Körülbelül 10-15%-os értékkel csökkenthető a túlextrudálás és az érdes felső felületet okozó anyagfelhalmozódás." msgid "Top/Bottom solid infill/wall overlap" msgstr "Felső/alsó tömör kitöltés és fal átfedése" +# AI Translated #, no-c-format, no-boost-format -msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to line width of sparse infill." -msgstr "A jobb kötés és a felső kitöltés falhoz csatlakozásánál megjelenő apró lyukak csökkentése érdekében kissé megnöveli a felső tömör kitöltés területét, hogy az átfedje a falat. Jó kiindulási érték a 25-30%. A százalékos érték a kitöltés vonalszélességéhez viszonyított." +msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to the inner wall line width." +msgstr "A jobb kötés és a felső kitöltés falhoz csatlakozásánál megjelenő apró lyukak csökkentése érdekében kissé megnöveli a felső tömör kitöltés területét, hogy az átfedje a falat. Jó kiindulási érték a 25-30%. A százalékos érték a belső fal vonalszélességéhez viszonyított." msgid "This is the speed for internal sparse infill." msgstr "A belső kitöltés sebessége" @@ -17745,8 +17885,9 @@ msgstr "Szegmentált régió maximális szélessége. A 0 érték letiltja ezt a msgid "Interlocking depth of a segmented region" msgstr "Szegmentált régió összekapcsolódási mélysége" -msgid "Interlocking depth of a segmented region. It will be ignored if \"mmu_segmented_region_max_width\" is zero or if \"mmu_segmented_region_interlocking_depth\" is bigger than \"mmu_segmented_region_max_width\". Zero disables this feature." -msgstr "A szegmentált régió összekapcsolódási mélysége. Figyelmen kívül marad, ha a \"mmu_segmented_region_max_width\" értéke nulla, vagy ha a \"mmu_segmented_region_interlocking_depth\" nagyobb, mint a \"mmu_segmented_region_max_width\". A 0 letiltja ezt a funkciót." +# AI Translated +msgid "Interlocking depth of a segmented region. On every other layer, the segmented region is limited to this depth. It will be ignored if \"interlocking_beam\" is enabled. Zero disables this feature." +msgstr "A szegmentált régió összekapcsolódási mélysége. Minden második rétegen a szegmentált régiót ez a mélység korlátozza. Figyelmen kívül marad, ha az „interlocking_beam” engedélyezve van. A 0 érték letiltja ezt a funkciót." msgid "Use beam interlocking" msgstr "Gerendaszerű kapcsolódás használata" @@ -17848,13 +17989,14 @@ msgstr "Z-réteg kontúrozás engedélyezése (más néven Z-réteg élsimítás msgid "Minimize wall height angle" msgstr "Falmagasság szög minimalizálása" +# AI Translated msgid "" "Reduce the height of top-surface perimeters to match the model edge height.\n" -"Affects perimeters with a slope less than this angle (degrees).\n" +"Affects perimeters with a slope greater than this angle (degrees).\n" "A reasonable value is 35. Set to 0 to disable." msgstr "" "Csökkentsd a felső felület kerületének magasságát, hogy megfeleljen a modell élmagasságának.\n" -"Befolyásolja az ennél a szögnél (foknál) kisebb lejtésű kerületeket.\n" +"Befolyásolja az ennél a szögnél (foknál) nagyobb lejtésű kerületeket.\n" "Az ésszerű érték 35. A letiltáshoz állítsd 0-ra." msgid "Don't alternate fill direction" @@ -18841,7 +18983,8 @@ msgstr "Átlapolt illesztés a belső falaknál" msgid "Use scarf joint for inner walls as well." msgstr "Átlapolt illesztés használata a belső falaknál is." -msgid "Role base wipe speed" +# AI Translated +msgid "Role based wipe speed" msgstr "Szerepalapú törlési sebesség" msgid "The wipe speed is determined by the speed of the current extrusion role. e.g. if a wipe action is executed immediately following an outer wall extrusion, the speed of the outer wall extrusion will be utilized for the wipe action." @@ -18931,16 +19074,15 @@ msgstr "Az első réteg után a szoknya/huzatvédő hurkait egy falra korlátozz msgid "Draft shield" msgstr "Huzatvédő" +# AI Translated msgid "" "A draft shield is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft. It is usually needed only with open frame printers, i.e. without an enclosure.\n" "\n" -"Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used.\n" -"Note: With the draft shield active, the skirt will be printed at skirt distance from the object. Therefore, if brims are active it may intersect with them. To avoid this, increase the skirt distance value.\n" +"Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used." msgstr "" "A huzatvédő segíthet megelőzni, hogy a légmozgás miatt az ABS- vagy ASA-nyomatok felkunkorodjanak és leváljanak az asztalról. Általában csak nyitott vázas, azaz burkolat nélküli nyomtatóknál van rá szükség.\n" "\n" -"Engedélyezve = a szoknya olyan magas lesz, mint a legmagasabb nyomtatott objektum. Ellenkező esetben a \"Szoknya magassága\" érték kerül használatra.\n" -"Megjegyzés: Aktív huzatvédő mellett a szoknya az objektumtól mért szoknyatávolságban lesz nyomtatva. Ezért ha perem is aktív, metszheti azt. Ennek elkerüléséhez növeld a szoknyatávolság értékét.\n" +"Engedélyezve = a szoknya olyan magas lesz, mint a legmagasabb nyomtatott objektum. Ellenkező esetben a „Szoknya magassága” érték kerül használatra." msgid "Enabled" msgstr "Engedélyezve" @@ -20101,43 +20243,46 @@ msgstr "A törlőtorony stabilizálására szolgáló kúp csúcsszöge. A nagyo msgid "Maximum wipe tower print speed" msgstr "A törlőtorony maximális nyomtatási sebessége" +# AI Translated msgid "" "The maximum print speed when purging in the wipe tower and printing the wipe tower sparse layers. When purging, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" "\n" -"When printing the sparse layers, if the internal perimeter speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +"When printing the sparse layers, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" "\n" "Increasing this speed may affect the tower's stability as well as increase the force with which the nozzle collides with any blobs that may have formed on the wipe tower.\n" "\n" "Before increasing this parameter beyond the default of 90 mm/s, make sure your printer can reliably bridge at the increased speeds and that ooze when tool changing is well controlled.\n" "\n" -"For the wipe tower external perimeters the internal perimeter speed is used regardless of this setting." +"For the wipe tower external perimeters the internal perimeter speed is used, also limited by this setting." msgstr "" -"A maximális nyomtatási sebesség öblítéskor a törlőtoronyban, valamint a törlőtorony ritka rétegeinek nyomtatásakor. Öblítés közben, ha a kitöltés sebessége vagy a filament maximális térfogati sebességéből számolt sebesség alacsonyabb, a kisebbik értéket használja.\n" +"A maximális nyomtatási sebesség öblítéskor a törlőtoronyban, valamint a törlőtorony ritka rétegeinek nyomtatásakor. Öblítés közben, ha a kitöltés sebessége vagy a filament maximális volumetrikus sebességéből számolt sebesség alacsonyabb, a kisebbik értéket használja.\n" "\n" -"A ritka rétegek nyomtatásakor, ha a belső kerület sebessége vagy a filament maximális térfogati sebességéből számolt sebesség alacsonyabb, akkor a kisebbik érték lesz használva.\n" +"A ritka rétegek nyomtatásakor, ha a kitöltés sebessége vagy a filament maximális volumetrikus sebességéből számolt sebesség alacsonyabb, akkor a kisebbik érték lesz használva.\n" "\n" "Ennek a sebességnek a növelése befolyásolhatja a torony stabilitását, és növelheti azt az erőt is, amellyel a fúvóka nekiütközik a törlőtoronyon esetleg kialakuló anyagcsomóknak.\n" "\n" "Mielőtt ezt a paramétert a 90 mm/s alapértelmezett érték fölé emeled, győződj meg arról, hogy a nyomtatód megbízhatóan tud hidalni nagyobb sebességen is, és hogy a szerszámváltás közbeni szivárgás megfelelően szabályozott.\n" "\n" -"A törlőtorony külső kerületeinél ettől a beállítástól függetlenül a belső kerületi sebesség lesz használva." +"A törlőtorony külső kerületeinél a belső kerületi sebesség lesz használva, amelyet ez a beállítás szintén korlátoz." msgid "Wall type" msgstr "Fal típusa" +# AI Translated msgid "" "Wipe tower outer wall type.\n" -"1. Rectangle: The default wall type, a rectangle with fixed width and height.\n" +"1. Rectangle: A rectangle with fixed width and height.\n" "2. Cone: A cone with a fillet at the bottom to help stabilize the wipe tower.\n" -"3. Rib: Adds four ribs to the tower wall for enhanced stability." +"3. Rib: The default wall type, which adds four ribs to the tower wall for enhanced stability." msgstr "" "A törlőtorony külső falának típusa.\n" -"1. Téglalap: Az alapértelmezett faltípus, rögzített szélességű és magasságú téglalap.\n" +"1. Téglalap: Rögzített szélességű és magasságú téglalap.\n" "2. Kúp: Alul lekerekített kúp, amely segít stabilizálni a törlőtoronyt.\n" -"3. Borda: Négy bordát ad a torony falához a nagyobb stabilitás érdekében." +"3. Borda: Az alapértelmezett faltípus, amely négy bordát ad a torony falához a nagyobb stabilitás érdekében." +# AI Translated msgid "Rectangle" -msgstr "Négyzet" +msgstr "Téglalap" msgid "Rib" msgstr "Borda" @@ -20225,8 +20370,9 @@ msgstr "A törlőtorony öblítési vonalainak távolsága." msgid "Extra flow for purging" msgstr "Többletáramlás az öblítéshez" -msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker or narrower than they normally would be. The spacing is adjusted automatically." -msgstr "A törlőtorony öblítési vonalaihoz használt többletáramlás. Ettől az öblítési vonalak a szokásosnál vastagabbak vagy vékonyabbak lesznek. A távolság automatikusan igazodik." +# AI Translated +msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker than they normally would be. The spacing is adjusted automatically." +msgstr "A törlőtorony öblítési vonalaihoz használt többletáramlás. Ettől az öblítési vonalak a szokásosnál vastagabbak lesznek. A távolság automatikusan igazodik." msgid "Idle temperature" msgstr "Üresjárati hőmérséklet" @@ -20348,14 +20494,15 @@ msgstr "A vékony elemek minimális vastagsága. Az ennél vékonyabb modellelem msgid "Minimum wall length" msgstr "Minimális falhossz" +# AI Translated msgid "" -"Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. Higher values remove more and longer walls.\n" +"Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. The value is a multiple of the wall width. Higher values remove more and longer walls.\n" "\n" -"NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the Advanced settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." +"NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the 'Walls and surfaces' settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." msgstr "" -"Állítsd ezt az értéket úgy, hogy megakadályozza a rövid, nem zárt falak kinyomtatását, amelyek növelhetik a nyomtatási időt. A nagyobb értékek több és hosszabb falat távolítanak el.\n" +"Állítsd ezt az értéket úgy, hogy megakadályozza a rövid, nem zárt falak kinyomtatását, amelyek növelhetik a nyomtatási időt. Az érték a falszélesség többszöröse. A nagyobb értékek több és hosszabb falat távolítanak el.\n" "\n" -"MEGJEGYZÉS: Az alsó és felső felületeket ez az érték nem érinti, hogy elkerülhetők legyenek a modell külsején megjelenő látható hézagok. A lentebbi Speciális beállításokban az 'Egyfalas küszöbérték' módosításával állíthatod be annak érzékenységét, hogy mi számít felső felületnek. Az 'Egyfalas küszöbérték' csak akkor látható, ha ez a beállítás az alapértelmezett 0.5 fölé van állítva, vagy ha az egyfalú felső felületek engedélyezve vannak." +"MEGJEGYZÉS: Az alsó és felső felületeket ez az érték nem érinti, hogy elkerülhetők legyenek a modell külsején megjelenő látható hézagok. Az alábbi „Falak és felületek” beállításai között az „Egyfalas küszöbérték” módosításával állíthatod be annak érzékenységét, hogy mi számít felső felületnek. Az „Egyfalas küszöbérték” csak akkor látható, ha ez a beállítás az alapértelmezett 0.5 fölé van állítva, vagy ha az egyfalú felső felületek engedélyezve vannak." msgid "Maximum wall resolution" msgstr "Maximális falfelbontás" @@ -24358,9 +24505,6 @@ msgstr "Intelligens filament-hozzárendelés bekapcsolása: egy filament több f msgid "File Saving" msgstr "Fájl mentése" -msgid "Don't remind me again" -msgstr "Ne emlékeztessen újra" - msgid "No further pop-up will appear. You can reopen it in 'Preferences'" msgstr "Nem jelenik meg több felugró ablak. A 'Beállítások' menüben újra megnyitható." @@ -34943,6 +35087,170 @@ msgstr "" "Kunkorodás elkerülése\n" "Tudtad, hogy a kunkorodásra hajlamos anyagok (például ABS) nyomtatásakor az asztal hőmérsékletének növelése csökkentheti a kunkorodás valószínűségét?" +# AI Translated +#~ msgid "" +#~ "Line width of the Bridge. If expressed as a %, it will be computed over the nozzle diameter.\n" +#~ "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" +#~ "\n" +#~ "The maximum value is 100% or the nozzle diameter.\n" +#~ "If set to 0, the line width will match the Internal solid infill width." +#~ msgstr "" +#~ "Az áthidalás vonalszélessége. Ha %-ban van megadva, a fúvóka átmérőjéből számítódik.\n" +#~ "Ajánlott nagyobb áthidalási sűrűséggel vagy áthidalási anyagáramlással együtt használni.\n" +#~ "\n" +#~ "A maximális érték 100%, illetve a fúvóka átmérője.\n" +#~ "Ha 0-ra van állítva, a vonalszélesség megegyezik a belső tömör kitöltés szélességével." + +# AI Translated +#, no-c-format, no-boost-format +#~ msgid "" +#~ "Enable this option to slow down printing in areas where perimeters may have curled upwards.\n" +#~ "For example, additional slowdown will be applied when printing overhangs on sharp corners like the front of the Benchy hull, reducing curling which compounds over multiple layers.\n" +#~ "\n" +#~ "It is generally recommended to have this option switched on unless your printer cooling is powerful enough or the print speed is slow enough that perimeter curling does not happen. \n" +#~ "If printing with a high external perimeter speed, this parameter may introduce wall artifacts when slowing down, due to the potentially large variance in print speeds causing the extruder to be unable to keep up with the requested flow change.\n" +#~ "Root cause of these artifacts is most likely PA tuning being slightly off, especially when combined with a high PA smooth time.\n" +#~ "\n" +#~ "Recommendations when enabling this option:\n" +#~ "1. Reduce Pressure Advance smooth time to 0.015 - 0.02 so the extruder reacts quickly to the speed changes.\n" +#~ "2. Increase the minimum print speeds to limit the magnitude of the slowdown and reduce the variance between fast and slow segments.\n" +#~ "3. If artifacts still appear, enable Extrusion Rate Smoothing (ERS) to further smooth the flow transitions.\n" +#~ "\n" +#~ "Note: When this option is enabled, overhang perimeters are treated like overhangs, meaning the overhang speed is applied even if the overhanging perimeter is part of a bridge.\n" +#~ "For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 100% overhang speed will be applied." +#~ msgstr "" +#~ "Kapcsold be ezt a lehetőséget, hogy lassabban nyomtasson azokon a területeken, ahol a falak felfelé kunkorodhattak.\n" +#~ "Például további lassítás lép életbe éles sarkokon lévő túlnyúlások nyomtatásakor, mint amilyen a Benchy hajótestének eleje, csökkentve a több rétegen át felhalmozódó kunkorodást.\n" +#~ "\n" +#~ "Általában javasolt bekapcsolva hagyni, hacsak a nyomtató hűtése nem elég erős, vagy a nyomtatási sebesség nem elég alacsony ahhoz, hogy a falak kunkorodása ne forduljon elő. \n" +#~ "Nagy külső falsebességgel nyomtatva ez a paraméter falhibákat okozhat a lassítás során, mivel a nyomtatási sebességek nagy szórása miatt az extruder nem tudja követni a kért anyagáramlás-változást.\n" +#~ "Ezeknek a hibáknak az oka legtöbbször a kissé pontatlan PA-hangolás, különösen ha nagy PA simítási idővel párosul.\n" +#~ "\n" +#~ "Javaslatok a beállítás bekapcsolásakor:\n" +#~ "1. Csökkentsd a Pressure Advance simítási idejét 0,015 - 0,02 értékre, hogy az extruder gyorsan reagáljon a sebességváltozásokra.\n" +#~ "2. Növeld a minimális nyomtatási sebességeket, hogy korlátozd a lassítás mértékét, és csökkentsd a gyors és lassú szakaszok közötti eltérést.\n" +#~ "3. Ha még mindig megjelennek a hibák, kapcsold be az extrudálási sebesség simítását (ERS) az anyagáramlás átmeneteinek további simításához.\n" +#~ "\n" +#~ "Megjegyzés: ha ez a beállítás be van kapcsolva, a túlnyúló falakat a rendszer túlnyúlásként kezeli, vagyis a túlnyúlási sebesség akkor is érvényes, ha a túlnyúló fal egy áthidalás része.\n" +#~ "Például amikor a falak 100%-ban túlnyúlnak, és alattuk nincs alátámasztó fal, a 100%-os túlnyúlási sebesség lesz alkalmazva." + +#~ msgid "" +#~ "Speed of the externally visible bridge extrusions.\n" +#~ "\n" +#~ "In addition, if Slow down for curled perimeters is disabled or Classic overhang mode is enabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." +#~ msgstr "" +#~ "A külsőleg látható hídextrudálások sebessége.\n" +#~ "\n" +#~ "Ezen felül, ha a felkunkorodó kerületeknél való lassítás ki van kapcsolva, vagy a klasszikus túlnyúlási mód engedélyezett, akkor ez lesz azon túlnyúló falak nyomtatási sebessége is, amelyeket 13%-nál kisebb mértékben támaszt alá az alattuk lévő réteg, függetlenül attól, hogy híd vagy túlnyúlás részét képezik." + +#~ msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above. Set to zero for auto." +#~ msgstr "Ez a külön beállítás a <= small_perimeter_threshold sugarú kerületek sebességét befolyásolja (általában furatoknál). Ha százalékban van megadva (például: 80%), a fenti külső fali sebesség alapján lesz kiszámítva. Az automatikus módhoz állítsd 0-ra." + +# AI Translated +#~ msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above. Set to zero for auto." +#~ msgstr "Ugyanaz, mint a \"Kis peremek\", de a támaszokra vonatkozik. Ez a külön beállítás a támasz sebességét befolyásolja a `small_support_perimeter_threshold` értéknél kisebb vagy azzal egyenlő területeken. Ha százalékban van megadva (például: 80%), a fenti támasz- vagy támasz érintkező felület sebességéből számítódik. Automatikus működéshez állítsd nullára." + +#~ msgid "" +#~ "Print sequence of the internal (inner) and external (outer) walls.\n" +#~ "\n" +#~ "Use Inner/Outer for best overhangs. This is because the overhanging walls can adhere to a neighbouring perimeter while printing. However, this option results in slightly reduced surface quality as the external perimeter is deformed by being squashed to the internal perimeter.\n" +#~ "\n" +#~ "Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended against the Outer/Inner option in most cases.\n" +#~ "\n" +#~ "Use Outer/Inner for the same external wall quality and dimensional accuracy benefits of Inner/Outer/Inner option. However, the Z seams will appear less consistent as the first extrusion of a new layer starts on a visible surface." +#~ msgstr "" +#~ "A belső és külső falak nyomtatási sorrendje.\n" +#~ "\n" +#~ "A legjobb túlnyúlásokhoz használd a Belső/Külső módot. Ennek oka, hogy a túlnyúló falak nyomtatás közben hozzátapadhatnak egy szomszédos kerülethez. Ez az opció azonban kissé gyengébb felületminőséget eredményez, mert a külső kerület deformálódik, amikor a belső kerülethez préselődik.\n" +#~ "\n" +#~ "A legjobb külső felületi minőség és méretpontosság érdekében használd a Belső/Külső/Belső módot, mivel a külső fal zavartalanul nyomtatódik a belső kerülettől. Ugyanakkor a túlnyúlási teljesítmény csökken, mivel nincs belső kerület, amelyhez a külső fal hozzányomtatható lenne. Ennek a módnak a hatékony működéséhez legalább 3 fal szükséges, mert először a 3. kerülettől kezdve nyomtatja a belső falakat, majd a külső kerületet, végül az első belső kerületet. A legtöbb esetben ez a mód ajánlott a Külső/Belső helyett.\n" +#~ "\n" +#~ "A Külső/Belső mód ugyanazokat az előnyöket nyújtja külső falminőség és méretpontosság terén, mint a Belső/Külső/Belső. A Z-varratok azonban kevésbé lesznek egyenletesek, mivel az új réteg első extrudálása látható felületen kezdődik." + +#~ msgid "This is the speed for the first layer except for solid infill sections." +#~ msgstr "A kezdőréteg nyomtatási sebessége a szilárd kitöltési rész kivételével" + +#~ msgid "This is the speed for solid infill parts of the first layer." +#~ msgstr "A kezdőréteg szilárd kitöltési részének sebessége" + +#, no-c-format, no-boost-format +#~ msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to line width of sparse infill. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." +#~ msgstr "A jobb kötés érdekében kissé megnöveli a kitöltési területet, hogy az átfedje a falat. A százalékos érték a kitöltés vonalszélességéhez viszonyított. Körülbelül 10-15%-os értékkel csökkenthető a túlextrudálás és az érdes felső felületet okozó anyagfelhalmozódás." + +#, no-c-format, no-boost-format +#~ msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to line width of sparse infill." +#~ msgstr "A jobb kötés és a felső kitöltés falhoz csatlakozásánál megjelenő apró lyukak csökkentése érdekében kissé megnöveli a felső tömör kitöltés területét, hogy az átfedje a falat. Jó kiindulási érték a 25-30%. A százalékos érték a kitöltés vonalszélességéhez viszonyított." + +#~ msgid "Interlocking depth of a segmented region. It will be ignored if \"mmu_segmented_region_max_width\" is zero or if \"mmu_segmented_region_interlocking_depth\" is bigger than \"mmu_segmented_region_max_width\". Zero disables this feature." +#~ msgstr "A szegmentált régió összekapcsolódási mélysége. Figyelmen kívül marad, ha a \"mmu_segmented_region_max_width\" értéke nulla, vagy ha a \"mmu_segmented_region_interlocking_depth\" nagyobb, mint a \"mmu_segmented_region_max_width\". A 0 letiltja ezt a funkciót." + +#~ msgid "" +#~ "Reduce the height of top-surface perimeters to match the model edge height.\n" +#~ "Affects perimeters with a slope less than this angle (degrees).\n" +#~ "A reasonable value is 35. Set to 0 to disable." +#~ msgstr "" +#~ "Csökkentsd a felső felület kerületének magasságát, hogy megfeleljen a modell élmagasságának.\n" +#~ "Befolyásolja az ennél a szögnél (foknál) kisebb lejtésű kerületeket.\n" +#~ "Az ésszerű érték 35. A letiltáshoz állítsd 0-ra." + +#~ msgid "Role base wipe speed" +#~ msgstr "Szerepalapú törlési sebesség" + +#~ msgid "" +#~ "A draft shield is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft. It is usually needed only with open frame printers, i.e. without an enclosure.\n" +#~ "\n" +#~ "Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used.\n" +#~ "Note: With the draft shield active, the skirt will be printed at skirt distance from the object. Therefore, if brims are active it may intersect with them. To avoid this, increase the skirt distance value.\n" +#~ msgstr "" +#~ "A huzatvédő segíthet megelőzni, hogy a légmozgás miatt az ABS- vagy ASA-nyomatok felkunkorodjanak és leváljanak az asztalról. Általában csak nyitott vázas, azaz burkolat nélküli nyomtatóknál van rá szükség.\n" +#~ "\n" +#~ "Engedélyezve = a szoknya olyan magas lesz, mint a legmagasabb nyomtatott objektum. Ellenkező esetben a \"Szoknya magassága\" érték kerül használatra.\n" +#~ "Megjegyzés: Aktív huzatvédő mellett a szoknya az objektumtól mért szoknyatávolságban lesz nyomtatva. Ezért ha perem is aktív, metszheti azt. Ennek elkerüléséhez növeld a szoknyatávolság értékét.\n" + +#~ msgid "" +#~ "The maximum print speed when purging in the wipe tower and printing the wipe tower sparse layers. When purging, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +#~ "\n" +#~ "When printing the sparse layers, if the internal perimeter speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +#~ "\n" +#~ "Increasing this speed may affect the tower's stability as well as increase the force with which the nozzle collides with any blobs that may have formed on the wipe tower.\n" +#~ "\n" +#~ "Before increasing this parameter beyond the default of 90 mm/s, make sure your printer can reliably bridge at the increased speeds and that ooze when tool changing is well controlled.\n" +#~ "\n" +#~ "For the wipe tower external perimeters the internal perimeter speed is used regardless of this setting." +#~ msgstr "" +#~ "A maximális nyomtatási sebesség öblítéskor a törlőtoronyban, valamint a törlőtorony ritka rétegeinek nyomtatásakor. Öblítés közben, ha a kitöltés sebessége vagy a filament maximális térfogati sebességéből számolt sebesség alacsonyabb, a kisebbik értéket használja.\n" +#~ "\n" +#~ "A ritka rétegek nyomtatásakor, ha a belső kerület sebessége vagy a filament maximális térfogati sebességéből számolt sebesség alacsonyabb, akkor a kisebbik érték lesz használva.\n" +#~ "\n" +#~ "Ennek a sebességnek a növelése befolyásolhatja a torony stabilitását, és növelheti azt az erőt is, amellyel a fúvóka nekiütközik a törlőtoronyon esetleg kialakuló anyagcsomóknak.\n" +#~ "\n" +#~ "Mielőtt ezt a paramétert a 90 mm/s alapértelmezett érték fölé emeled, győződj meg arról, hogy a nyomtatód megbízhatóan tud hidalni nagyobb sebességen is, és hogy a szerszámváltás közbeni szivárgás megfelelően szabályozott.\n" +#~ "\n" +#~ "A törlőtorony külső kerületeinél ettől a beállítástól függetlenül a belső kerületi sebesség lesz használva." + +#~ msgid "" +#~ "Wipe tower outer wall type.\n" +#~ "1. Rectangle: The default wall type, a rectangle with fixed width and height.\n" +#~ "2. Cone: A cone with a fillet at the bottom to help stabilize the wipe tower.\n" +#~ "3. Rib: Adds four ribs to the tower wall for enhanced stability." +#~ msgstr "" +#~ "A törlőtorony külső falának típusa.\n" +#~ "1. Téglalap: Az alapértelmezett faltípus, rögzített szélességű és magasságú téglalap.\n" +#~ "2. Kúp: Alul lekerekített kúp, amely segít stabilizálni a törlőtoronyt.\n" +#~ "3. Borda: Négy bordát ad a torony falához a nagyobb stabilitás érdekében." + +#~ msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker or narrower than they normally would be. The spacing is adjusted automatically." +#~ msgstr "A törlőtorony öblítési vonalaihoz használt többletáramlás. Ettől az öblítési vonalak a szokásosnál vastagabbak vagy vékonyabbak lesznek. A távolság automatikusan igazodik." + +#~ msgid "" +#~ "Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. Higher values remove more and longer walls.\n" +#~ "\n" +#~ "NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the Advanced settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." +#~ msgstr "" +#~ "Állítsd ezt az értéket úgy, hogy megakadályozza a rövid, nem zárt falak kinyomtatását, amelyek növelhetik a nyomtatási időt. A nagyobb értékek több és hosszabb falat távolítanak el.\n" +#~ "\n" +#~ "MEGJEGYZÉS: Az alsó és felső felületeket ez az érték nem érinti, hogy elkerülhetők legyenek a modell külsején megjelenő látható hézagok. A lentebbi Speciális beállításokban az 'Egyfalas küszöbérték' módosításával állíthatod be annak érzékenységét, hogy mi számít felső felületnek. Az 'Egyfalas küszöbérték' csak akkor látható, ha ez a beállítás az alapértelmezett 0.5 fölé van állítva, vagy ha az egyfalú felső felületek engedélyezve vannak." + # AI Translated #, boost-format #~ msgid "Split into %1% part" diff --git a/localization/i18n/it/OrcaSlicer_it.po b/localization/i18n/it/OrcaSlicer_it.po index e79dae741f..2c2f391f04 100644 --- a/localization/i18n/it/OrcaSlicer_it.po +++ b/localization/i18n/it/OrcaSlicer_it.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-10-13 09:55-0300\n" +"POT-Creation-Date: 2026-10-14 10:04-0300\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -2445,6 +2445,66 @@ msgstr "Restrizione modulo di rete" msgid "Privacy Policy Update" msgstr "Aggiornamento dell'informativa sulla riservatezza" +# AI Translated +msgid "All your filament presets are available on the printers they were made for." +msgstr "Tutti i tuoi profili di filamento sono disponibili sulle stampanti per cui sono stati creati." + +# AI Translated +msgid "Migrate Filament Presets" +msgstr "Migra profili di filamento" + +# AI Translated +msgid "" +"OrcaSlicer 2.5.0 restructured many system filament presets to fix incorrect profiles and prepare for future features. As a result, the presets below no longer show on some printers they were made for. Sorry for the trouble; this is a one-time fix.\n" +"\n" +"Add those printers back to your presets now? Your presets are backed up first. You can also do this later from Help > Migrate Filament Presets." +msgstr "" +"OrcaSlicer 2.5.0 ha ristrutturato molti profili di filamento di sistema per correggere profili errati e prepararsi a funzionalità future. Di conseguenza, i profili qui sotto non compaiono più su alcune delle stampanti per cui sono stati creati. Ci scusiamo per il disagio; si tratta di una correzione una tantum.\n" +"\n" +"Vuoi aggiungere di nuovo queste stampanti ai tuoi profili adesso? Prima viene eseguito il backup dei tuoi profili. Puoi farlo anche in seguito da Aiuto > Migra profili di filamento." + +# AI Translated +#, boost-format +msgid "%1% (based on %2%)" +msgstr "%1% (basato su %2%)" + +msgid "Don't remind me again" +msgstr "Non ricordarmelo più" + +# AI Translated +msgid "Your presets could not be backed up, so they were not migrated." +msgstr "Non è stato possibile eseguire il backup dei tuoi profili, quindi non sono stati migrati." + +# AI Translated +msgid "The user presets folder could not be locked, so nothing was migrated. Another OrcaSlicer instance may be saving presets; try again later from Help > Migrate Filament Presets." +msgstr "Non è stato possibile bloccare la cartella dei profili utente, quindi non è stato migrato nulla. Un'altra istanza di OrcaSlicer potrebbe essere in fase di salvataggio dei profili; riprova più tardi da Aiuto > Migra profili di filamento." + +# AI Translated +#, boost-format +msgid "" +"Your filament presets could not be migrated. A backup of your presets was saved to:\n" +"%1%" +msgstr "" +"Non è stato possibile migrare i tuoi profili di filamento. Un backup dei tuoi profili è stato salvato in:\n" +"%1%" + +# AI Translated +#, boost-format +msgid "" +"Your filament presets were migrated. Select them again in the filament list where you used them.\n" +"\n" +"A backup of your presets was saved to:\n" +"%1%" +msgstr "" +"I tuoi profili di filamento sono stati migrati. Selezionali di nuovo nell'elenco dei filamenti dove li utilizzavi.\n" +"\n" +"Un backup dei tuoi profili è stato salvato in:\n" +"%1%" + +# AI Translated +msgid "These presets could not be migrated:" +msgstr "Non è stato possibile migrare questi profili:" + #, c-format, boost-format msgid "your Orca Cloud profile (user ID: \"%s\")" msgstr "il tuo profilo Orca Cloud (ID utente: \"%s\")" @@ -3161,6 +3221,62 @@ msgstr "(Colore perso)" msgid "Center" msgstr "Centro" +# AI Translated +msgid "Distribute left-right" +msgstr "Distribuisci sinistra-destra" + +# AI Translated +msgid "Distribute front-back" +msgstr "Distribuisci davanti-dietro" + +# AI Translated +msgid "Distribute top-bottom" +msgstr "Distribuisci alto-basso" + +# AI Translated +msgid "Align left" +msgstr "Allinea a sinistra" + +# AI Translated +msgid "Align left-right center" +msgstr "Allinea al centro sinistra-destra" + +# AI Translated +msgid "Align right" +msgstr "Allinea a destra" + +# AI Translated +msgid "Align front" +msgstr "Allinea davanti" + +# AI Translated +msgid "Align front-back center" +msgstr "Allinea al centro davanti-dietro" + +# AI Translated +msgid "Align back" +msgstr "Allinea dietro" + +# AI Translated +msgid "Align bottom" +msgstr "Allinea in basso" + +# AI Translated +msgid "Align top-bottom center" +msgstr "Allinea al centro alto-basso" + +# AI Translated +msgid "Align top" +msgstr "Allinea in alto" + +# AI Translated +msgid "Align/Distribute" +msgstr "Allinea/Distribuisci" + +# AI Translated +msgid "Align and distribute objects" +msgstr "Allinea e distribuisci gli oggetti" + msgid "Drop" msgstr "Lascia" @@ -6648,6 +6764,10 @@ msgstr "Configurazione Guidata" msgid "Show Configuration Folder" msgstr "Mostra cartella di configurazione" +# AI Translated +msgid "Bring back filament presets that a profile update removed from printers they were made for" +msgstr "Ripristina i profili di filamento che un aggiornamento dei profili ha rimosso dalle stampanti per cui erano stati creati" + # AI Translated msgid "Troubleshoot Center" msgstr "Centro di risoluzione dei problemi" @@ -14002,6 +14122,18 @@ msgstr "intersezioni multiple con un perimetro, ne è stata usata solo una (%1%) msgid "a perimeter is fully inside a modifier, the modifier was not applied to it (%1%)" msgstr "un perimetro è interamente all'interno di un modificatore, il modificatore non vi è stato applicato (%1%)" +# AI Translated +#. TRN: %1% is the modifier type "Seam Blocked" as in the menu, %2% the modifier name, %3% the object name. +#, boost-format +msgid "%1% modifier \"%2%\" of \"%3%\" covers an entire perimeter" +msgstr "Il modificatore %1% \"%2%\" di \"%3%\" copre un intero perimetro" + +# AI Translated +#. TRN: %1% is the modifier type "Seam Blocked" as in the menu, %2% the modifier name, %3% the object name, %4% the number of modifiers. +#, boost-format +msgid "%1% modifier \"%2%\" of \"%3%\" (%4% in total) covers an entire perimeter" +msgstr "Il modificatore %1% \"%2%\" di \"%3%\" (%4% in totale) copre un intero perimetro" + # AI Translated #, boost-format msgid "modifier \"%1%\" of \"%2%\" had no effect on the seam (it might not reach the centerline of the printed perimeter)" @@ -15015,18 +15147,19 @@ msgstr "" "Il flusso del ponte effettivamente utilizzato è calcolato moltiplicando questo valore per il rapporto di flusso del filamento e, se impostato, per il rapporto di flusso dell'oggetto." # AI Translated +# Needs human review: The English says 'Bridge density', but the GUI labels are 'External bridge density' and 'Internal bridge density'; the external label ('Densità ponti esterni') is quoted here. Check it is the right one. msgid "" "Line width of the Bridge. If expressed as a %, it will be computed over the nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" -"If set to 0, the line width will match the Internal solid infill width." +"If set to 0, the line width will match the Internal solid infill width, or the nozzle diameter for thick bridges." msgstr "" -"Larghezza della linea del ponte. Se espressa in %, verrà calcolata rispetto al diametro dell'ugello.\n" -"Se ne consiglia l'uso con una densità del ponte o un rapporto di flusso del ponte più elevati.\n" +"Larghezza della linea del ponte. Se espresso come una %, verrà calcolato sul diametro dell'ugello.\n" +"Se ne consiglia l'uso con una 'Densità ponti esterni' o un 'Flusso di stampa ponti' più elevati.\n" "\n" "Il valore massimo è 100% o il diametro dell'ugello.\n" -"Se impostata a 0, la larghezza della linea corrisponderà alla larghezza del riempimento solido interno." +"Se impostata a 0, la larghezza della linea corrisponderà alla larghezza del riempimento solido interno, oppure al diametro dell'ugello per i ponti spessi." msgid "Internal bridge flow ratio" msgstr "Flusso di stampa ponti interni" @@ -15311,7 +15444,7 @@ msgid "" "3. If artifacts still appear, enable Extrusion Rate Smoothing (ERS) to further smooth the flow transitions.\n" "\n" "Note: When this option is enabled, overhang perimeters are treated like overhangs, meaning the overhang speed is applied even if the overhanging perimeter is part of a bridge.\n" -"For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 100% overhang speed will be applied." +"For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 75% overhang speed will be applied, limited by the bridge speed." msgstr "" "Abilita questa opzione per rallentare la stampa nelle aree in cui i perimetri potrebbero essersi arricciati verso l'alto.\n" "Ad esempio, verrà applicato un rallentamento aggiuntivo durante la stampa di sporgenze su angoli acuti come la parte anteriore dello scafo del Benchy, riducendo l'arricciamento che si accumula su più strati.\n" @@ -15323,22 +15456,23 @@ msgstr "" "Raccomandazioni quando si abilita questa opzione:\n" "1. Riduci il tempo di smoothing del Pressure Advance a 0,015 - 0,02 in modo che l'estrusore reagisca rapidamente alle variazioni di velocità.\n" "2. Aumenta le velocità di stampa minime per limitare l'entità del rallentamento e ridurre la variazione tra i segmenti veloci e lenti.\n" -"3. Se gli artefatti persistono, abilita l'Extrusion Rate Smoothing (ERS) per uniformare ulteriormente le transizioni di flusso.\n" +"3. Se gli artefatti persistono, abilita 'Livellamento velocità di estrusione' (ERS) per uniformare ulteriormente le transizioni di flusso.\n" "\n" "Nota: quando questa opzione è abilitata, i perimetri in sporgenza vengono trattati come sporgenze, il che significa che la velocità per le sporgenze viene applicata anche se il perimetro in sporgenza fa parte di un ponte.\n" -"Ad esempio, quando i perimetri sono in sporgenza al 100%, senza alcuna parete a sostenerli da sotto, verrà applicata la velocità per sporgenze del 100%." +"Ad esempio, quando i perimetri sono in sporgenza al 100%, senza alcuna parete a sostenerli da sotto, verrà applicata la velocità per sporgenze del 75%, limitata dalla velocità del ponte." msgid "mm/s or %" msgstr "mm/s o %" +# AI Translated msgid "" "Speed of the externally visible bridge extrusions.\n" "\n" -"In addition, if Slow down for curled perimeters is disabled or Classic overhang mode is enabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." +"In addition, if Slow down for curled perimeters is disabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." msgstr "" "Velocità di estrusione dei ponti visibili esternamente.\n" "\n" -"Inoltre, se 'Rallenta per pareti incurvate' è disabilitato o è abilitata la modalità Sporgenza classica, la velocità di stampa delle pareti sporgenti supportate sarà inferiore al 13%, indipendentemente dal fatto che facciano parte di un ponte o di una sporgenza." +"Inoltre, se 'Rallenta per pareti incurvate' è disabilitato, sarà la velocità di stampa delle pareti sporgenti supportate per meno del 13%, indipendentemente dal fatto che facciano parte di un ponte o di una sporgenza." msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%." msgstr "Velocità dei ponti interni. Se il valore è espresso in percentuale, verrà calcolato in base a bridge_speed. Il valore predefinito è 150%." @@ -15898,8 +16032,9 @@ msgstr "Indica la velocità di stampa per le pareti esterne dei pezzi. Queste ve msgid "Small perimeters" msgstr "Perimetri piccoli" -msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above. Set to zero for auto." -msgstr "Questa impostazione influenzerà la velocità di stampa dei perimetri con raggio <= small_perimeter_threshold (di solito fori). Se espresso in percentuale (ad esempio: 80%) verrà calcolato sull'impostazione della velocità delle pareti esterne di cui sopra. Impostare su zero per auto." +# AI Translated +msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above." +msgstr "Questa impostazione influenzerà la velocità di stampa dei perimetri con raggio <= small_perimeter_threshold (di solito fori). Se espresso in percentuale (ad esempio: 80%) verrà calcolato sull'impostazione della velocità delle pareti esterne di cui sopra." msgid "Small perimeters threshold" msgstr "Soglia perimetri piccoli" @@ -15912,8 +16047,8 @@ msgid "Small support perimeters" msgstr "Perimetri di supporto piccoli" # AI Translated -msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above. Set to zero for auto." -msgstr "Come \"Perimetri piccoli\", ma per i supporti. Questa impostazione separata influirà sulla velocità del supporto per le aree <= `small_support_perimeter_threshold`. Se espressa come percentuale (ad esempio: 80%), verrà calcolata sull'impostazione di velocità del supporto o dell'interfaccia del supporto sopra riportata. Imposta a zero per auto." +msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above." +msgstr "Come \"Perimetri piccoli\", ma per i supporti. Questa impostazione separata influirà sulla velocità del supporto per le aree <= `small_support_perimeter_threshold`. Se espressa come percentuale (ad esempio: 80%), verrà calcolata sull'impostazione di velocità del supporto o dell'interfaccia del supporto sopra riportata." # AI Translated msgid "Small support perimeters threshold" @@ -15926,22 +16061,23 @@ msgstr "Imposta la soglia per la lunghezza dei perimetri di supporto piccoli. La msgid "Walls printing order" msgstr "Ordine stampa pareti" +# AI Translated msgid "" "Print sequence of the internal (inner) and external (outer) walls.\n" "\n" "Use Inner/Outer for best overhangs. This is because the overhanging walls can adhere to a neighbouring perimeter while printing. However, this option results in slightly reduced surface quality as the external perimeter is deformed by being squashed to the internal perimeter.\n" "\n" -"Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended against the Outer/Inner option in most cases.\n" +"Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended over the Outer/Inner option in most cases.\n" "\n" "Use Outer/Inner for the same external wall quality and dimensional accuracy benefits of Inner/Outer/Inner option. However, the Z seams will appear less consistent as the first extrusion of a new layer starts on a visible surface." msgstr "" "Sequenza di stampa delle pareti interne ed esterne.\n" "\n" -"Utilizzare Interno/Esterno per sporgenze migliori. Questo perché le pareti sporgenti possono aderire a un perimetro vicino durante la stampa. Tuttavia, questa opzione comporta una qualità della superficie leggermente ridotta poiché il perimetro esterno viene deformato dalla pressione sul perimetro interno.\n" +"Utilizzare Interna/Esterna per sporgenze migliori. Questo perché le pareti sporgenti possono aderire a un perimetro vicino durante la stampa. Tuttavia, questa opzione comporta una qualità della superficie leggermente ridotta poiché il perimetro esterno viene deformato dalla pressione sul perimetro interno.\n" "\n" -"Utilizzare Interno/Esterno/Interno per ottenere la migliore finitura superficiale esterna e la migliore precisione dimensionale, poiché la parete esterna viene stampata senza essere disturbata dal perimetro interno. Tuttavia, la qualità delle sporgenze si ridurrà poiché non si dispone di un perimetro interno contro cui stampare la parete esterna. Questa opzione richiede un minimo di 3 pareti per essere efficace, in quanto stampa prima le pareti interne dal 3° perimetro in poi, poi il perimetro esterno e, infine, il primo perimetro interno. Nella maggior parte dei casi, questa è l'opzione consigliata rispetto a Esterno/Interno.\n" +"Utilizzare Interna/Esterna/Interna per ottenere la migliore finitura superficiale esterna e la migliore precisione dimensionale, poiché la parete esterna viene stampata senza essere disturbata dal perimetro interno. Tuttavia, la qualità delle sporgenze si ridurrà poiché non si dispone di un perimetro interno contro cui stampare la parete esterna. Questa opzione richiede un minimo di 3 pareti per essere efficace, in quanto stampa prima le pareti interne dal 3° perimetro in poi, poi il perimetro esterno e, infine, il primo perimetro interno. Nella maggior parte dei casi, questa è l'opzione consigliata rispetto a Esterna/Interna.\n" "\n" -"Utilizzare Esterno/Interno per ottenere la stessa qualità della parete esterna e gli stessi vantaggi di precisione dimensionale dell'opzione Interno/Esterno/Interno. Tuttavia, le cuciture Z appariranno meno coerenti quando la prima estrusione di un nuovo strato inizia su una superficie visibile." +"Utilizzare Esterna/Interna per ottenere la stessa qualità della parete esterna e gli stessi vantaggi di precisione dimensionale dell'opzione Interna/Esterna/Interna. Tuttavia, le cuciture Z appariranno meno coerenti poiché la prima estrusione di un nuovo strato inizia su una superficie visibile." msgid "Inner/Outer" msgstr "Interna/Esterna" @@ -16891,14 +17027,16 @@ msgstr "Altezza primo strato" msgid "Height of the first layer. Making the first layer height thicker can improve build plate adhesion." msgstr "Altezza del primo strato. L'aumento dell'altezza del primo strato può migliorare l'adesione al piano di stampa." -msgid "This is the speed for the first layer except for solid infill sections." -msgstr "Indica la velocità per il primo strato, tranne che per le sezioni di riempimento solido." +# AI Translated +msgid "This is the speed for the walls and brim of the first layer." +msgstr "Indica la velocità per le pareti e la tesa del primo strato." msgid "First layer infill" msgstr "Riempimento primo strato" -msgid "This is the speed for solid infill parts of the first layer." -msgstr "Indica la velocità per le parti di riempimento solido del primo strato." +# AI Translated +msgid "This is the speed for the first layer except for walls and brim, such as infill, gap fill and support." +msgstr "Indica la velocità per il primo strato, ad eccezione di pareti e tesa, come riempimento, riempi spazio vuoto e supporti." msgid "First layer travel speed" msgstr "Velocità spostamento primo strato" @@ -17604,16 +17742,18 @@ msgstr "Larghezza della linea del riempimento sparso interno. Se espresso come u msgid "Infill/wall overlap" msgstr "Sovrapposizione riempimento/parete" +# AI Translated #, no-c-format, no-boost-format -msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to line width of sparse infill. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." -msgstr "L'area di riempimento viene leggermente allargata per sovrapporsi alla parete e garantire una migliore adesione. Il valore percentuale è relativo alla larghezza della linea del riempimento sparso. Imposta questo valore a circa il 10-15% per ridurre al minimo la potenziale sovraestrusione e l'accumulo di materiale, che causerebbero superfici superiori ruvide." +msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to the inner wall line width. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." +msgstr "Permette di allargare leggermente l'area di riempimento per sovrapporsi alle pareti e garantire una migliore adesione. Il valore percentuale è relativo alla larghezza della linea della parete interna. Imposta questo valore a circa il 10-15% per ridurre al minimo la potenziale sovraestrusione e l'accumulo di materiale, che causerebbero superfici superiori ruvide." msgid "Top/Bottom solid infill/wall overlap" msgstr "Sovrapposizione riempimento solido superiore/inferiore e parete" +# AI Translated #, no-c-format, no-boost-format -msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to line width of sparse infill." -msgstr "L'area di riempimento solido superiore/inferiore viene leggermente allargata per sovrapporsi alla parete, garantendo una migliore adesione e riducendo al minimo la comparsa di fori nei punti in cui il riempimento superiore/inferiore incontra le pareti. Un valore del 25-30% è un buon punto di partenza, riducendo al minimo la comparsa di fori. Il valore percentuale è relativo alla larghezza della linea del riempimento sparso." +msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to the inner wall line width." +msgstr "L'area di riempimento solido superiore viene leggermente allargata per sovrapporsi alla parete, garantendo una migliore adesione e riducendo al minimo la comparsa di fori nei punti in cui il riempimento superiore incontra le pareti. Un valore del 25-30% è un buon punto di partenza, riducendo al minimo la comparsa di fori. Il valore percentuale è relativo alla larghezza della linea della parete interna." msgid "This is the speed for internal sparse infill." msgstr "Velocità del riempimento sparso interno." @@ -17639,8 +17779,9 @@ msgstr "Larghezza massima di una regione segmentata. Il valore zero disabilita q msgid "Interlocking depth of a segmented region" msgstr "Profondità di incastro regione segmentata" -msgid "Interlocking depth of a segmented region. It will be ignored if \"mmu_segmented_region_max_width\" is zero or if \"mmu_segmented_region_interlocking_depth\" is bigger than \"mmu_segmented_region_max_width\". Zero disables this feature." -msgstr "Profondità di incastro di una regione segmentata. Sarà ignorata se \"mmu_segmented_region_max_width\" è impostato a zero o se \"mmu_segmented_region_interlocking_depth\" è maggiore di \"mmu_segmented_region_max_width\". Il valore zero disabilita questa funzione." +# AI Translated +msgid "Interlocking depth of a segmented region. On every other layer, the segmented region is limited to this depth. It will be ignored if \"interlocking_beam\" is enabled. Zero disables this feature." +msgstr "Profondità di incastro di una regione segmentata. Su ogni strato alternato, la regione segmentata è limitata a questa profondità. Sarà ignorata se 'interlocking_beam' è abilitato. Zero disabilita questa funzione." msgid "Use beam interlocking" msgstr "Usa trave ad incastro" @@ -17741,13 +17882,14 @@ msgstr "Abilita la contornatura degli strati sull'asse Z (noto anche come anti-a msgid "Minimize wall height angle" msgstr "Riduci altezza su pareti inclinate" +# AI Translated msgid "" "Reduce the height of top-surface perimeters to match the model edge height.\n" -"Affects perimeters with a slope less than this angle (degrees).\n" +"Affects perimeters with a slope greater than this angle (degrees).\n" "A reasonable value is 35. Set to 0 to disable." msgstr "" -"Riduce l'altezza dei perimetri della superficie superiore in modo che si adattino meglio al bordo del modello\n" -"Influisce sui perimetri con una pendenza inferiore a questo angolo (in gradi).\n" +"Riduce l'altezza dei perimetri della superficie superiore in modo che si adattino meglio al bordo del modello.\n" +"Influisce sui perimetri con una pendenza superiore a questo angolo (in gradi).\n" "Il valore consigliato è 35. Impostare a 0 per disabilitare questa funzione." msgid "Don't alternate fill direction" @@ -18721,7 +18863,8 @@ msgstr "Cucitura obliqua per pareti interne" msgid "Use scarf joint for inner walls as well." msgstr "Utilizza la cucitura obliqua anche per le pareti interne." -msgid "Role base wipe speed" +# AI Translated +msgid "Role based wipe speed" msgstr "Velocità di spurgo basata su ruolo" msgid "The wipe speed is determined by the speed of the current extrusion role. e.g. if a wipe action is executed immediately following an outer wall extrusion, the speed of the outer wall extrusion will be utilized for the wipe action." @@ -18769,14 +18912,15 @@ msgstr "" msgid "Wipe before external loop" msgstr "Spurgo prima del perimetro esterno" +# AI Translated msgid "" "To minimize visibility of potential overextrusion at the start of an external perimeter when printing with Outer/Inner or Inner/Outer/Inner wall print order, the de-retraction is performed slightly on the inside from the start of the external perimeter. That way any potential over extrusion is hidden from the outside surface.\n" "\n" "This is useful when printing with Outer/Inner or Inner/Outer/Inner wall print order as in these modes it is more likely an external perimeter is printed immediately after a de-retraction move." msgstr "" -"Per ridurre al minimo la visibilità di una potenziale sovraestrusione all'inizio di un perimetro esterno quando si stampa con l'ordine Esterno/Interno o Interno/Esterno/Interno, la de-retrazione viene eseguita leggermente verso l'interno, a partire dall'inizio del perimetro esterno. In questo modo qualsiasi potenziale sovraestrusione viene nascosta dalla superficie esterna.\n" +"Per ridurre al minimo la visibilità di una potenziale sovraestrusione all'inizio di un perimetro esterno quando si stampa con l'ordine Esterna/Interna o Interna/Esterna/Interna, la de-retrazione viene eseguita leggermente verso l'interno, a partire dall'inizio del perimetro esterno. In questo modo qualsiasi potenziale sovraestrusione viene nascosta dalla superficie esterna.\n" "\n" -"Ciò è utile quando si stampa con l'ordine Esterno/Interno o Interno/Esterno/Interno, poiché in queste modalità è più probabile che venga stampato un perimetro esterno immediatamente dopo un movimento di de-retrazione." +"Ciò è utile quando si stampa con l'ordine Esterna/Interna o Interna/Esterna/Interna, poiché in queste modalità è più probabile che venga stampato un perimetro esterno immediatamente dopo un movimento di de-retrazione." msgid "Wipe speed" msgstr "Velocità di spurgo" @@ -18811,16 +18955,15 @@ msgstr "Limita i perimetri di gonna/scudo protettivo a una parete dopo il primo msgid "Draft shield" msgstr "Scudo protettivo" +# AI Translated msgid "" "A draft shield is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft. It is usually needed only with open frame printers, i.e. without an enclosure.\n" "\n" -"Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used.\n" -"Note: With the draft shield active, the skirt will be printed at skirt distance from the object. Therefore, if brims are active it may intersect with them. To avoid this, increase the skirt distance value.\n" +"Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used." msgstr "" -"Uno scudo protettivo è utile per proteggere una stampa in ABS o ASA da deformazioni e distacchi dal piano di stampa dovuti a correnti d'aria. Di solito è necessario solo nelle stampanti con struttura aperta, ovvero senza un involucro.\n" +"Uno scudo protettivo è utile per proteggere una stampa in ABS o ASA da deformazioni e distacchi dal piatto dovuti a correnti d'aria. Di solito è necessario solo nelle stampanti con struttura aperta, ovvero senza un involucro.\n" "\n" -"Abilitato = la gonna è alta quanto l'oggetto stampato più alto, altrimenti viene utilizzato il valore di 'Altezza gonna'.\n" -"Nota: con lo scudo protettivo abilitato, la distanza tra la gonna e l'oggetto è stabilita dall'opzione 'Distanza gonna'. Pertanto se le tese sono attive, potrebbe intersecarsi con esse. Per evitare ciò, aumentare il valore della distanza gonna.\n" +"Abilitato = la gonna è alta quanto l'oggetto stampato più alto, altrimenti viene utilizzato il valore di 'Altezza gonna'." msgid "Enabled" msgstr "Abilitato" @@ -19973,40 +20116,42 @@ msgstr "Angolo all'apice del cono utilizzato per stabilizzare la torre di spurgo msgid "Maximum wipe tower print speed" msgstr "Velocità massima di stampa della torre di spurgo" +# AI Translated msgid "" "The maximum print speed when purging in the wipe tower and printing the wipe tower sparse layers. When purging, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" "\n" -"When printing the sparse layers, if the internal perimeter speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +"When printing the sparse layers, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" "\n" "Increasing this speed may affect the tower's stability as well as increase the force with which the nozzle collides with any blobs that may have formed on the wipe tower.\n" "\n" "Before increasing this parameter beyond the default of 90 mm/s, make sure your printer can reliably bridge at the increased speeds and that ooze when tool changing is well controlled.\n" "\n" -"For the wipe tower external perimeters the internal perimeter speed is used regardless of this setting." +"For the wipe tower external perimeters the internal perimeter speed is used, also limited by this setting." msgstr "" "Velocità massima di stampa durante lo spurgo nella torre di spurgo e nella stampa degli strati sparsi della torre. Durante lo spurgo, se la velocità del riempimento sparso o quella calcolata in base alla velocità volumetrica massima del filamento è inferiore, verrà utilizzata quella inferiore.\n" "\n" -"Durante la stampa di strati sparsi, se la velocità delle pareti interne o quella calcolata in base alla velocità volumetrica massima del filamento è inferiore, verrà utilizzata quella inferiore.\n" +"Durante la stampa di strati sparsi, se la velocità del riempimento sparso o quella calcolata in base alla velocità volumetrica massima del filamento è inferiore, verrà utilizzata quella inferiore.\n" "\n" "Aumentare questa velocità può compromettere la stabilità della torre e aumentare la forza con cui l'ugello entra in collisione con eventuali grumi che si sono formati sulla torre di spurgo.\n" "\n" "Prima di aumentare questo parametro oltre il valore predefinito di 90 mm/s, accertati che la stampante sia in grado di gestire in modo affidabile le maggiori velocità, e che il trasudo del materiale durante il cambio di testina sia ben controllato.\n" "\n" -"Per i perimetri esterni della torre di spurgo viene utilizzata la velocità dei perimetri interni, indipendentemente da questa impostazione." +"Per i perimetri esterni della torre di spurgo viene utilizzata la velocità dei perimetri interni, anch'essa limitata da questa impostazione." msgid "Wall type" msgstr "Tipo di parete" +# AI Translated msgid "" "Wipe tower outer wall type.\n" -"1. Rectangle: The default wall type, a rectangle with fixed width and height.\n" +"1. Rectangle: A rectangle with fixed width and height.\n" "2. Cone: A cone with a fillet at the bottom to help stabilize the wipe tower.\n" -"3. Rib: Adds four ribs to the tower wall for enhanced stability." +"3. Rib: The default wall type, which adds four ribs to the tower wall for enhanced stability." msgstr "" -"Tipo di parete esterna della torre di pulizia.\n" -"1. Rettangolo: il tipo di parete predefinito, un rettangolo con larghezza e altezza fisse.\n" -"2. Cono: un cono con raccordo sul fondo per contribuire alla stabilizzazione della torre di pulizia.\n" -"3. Nervatura: aggiunge quattro nervature alla parete della torre per una stabilità migliorata." +"Tipo di parete esterna della torre di spurgo.\n" +"1. Rettangolo: un rettangolo con larghezza e altezza fisse.\n" +"2. Cono: un cono con raccordo sul fondo per contribuire alla stabilizzazione della torre di spurgo.\n" +"3. Nervatura: il tipo di parete predefinito, che aggiunge quattro nervature alla parete della torre per una stabilità migliorata." msgid "Rectangle" msgstr "Rettangolo" @@ -20097,8 +20242,9 @@ msgstr "Spaziatura tra le linee della torre di spurgo." msgid "Extra flow for purging" msgstr "Flusso aggiuntivo per spurgo" -msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker or narrower than they normally would be. The spacing is adjusted automatically." -msgstr "Flusso aggiuntivo utilizzato per le linee sulla torre di spurgo. Ciò rende le linee di spurgo più spesse o più sottili di quanto sarebbero normalmente. La spaziatura viene regolata automaticamente." +# AI Translated +msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker than they normally would be. The spacing is adjusted automatically." +msgstr "Flusso aggiuntivo utilizzato per le linee sulla torre di spurgo. Ciò rende le linee di spurgo più spesse di quanto sarebbero normalmente. La spaziatura viene regolata automaticamente." msgid "Idle temperature" msgstr "Temperatura di inattività" @@ -20216,14 +20362,15 @@ msgstr "Spessore minimo delle caratteristiche sottili. Le caratteristiche del mo msgid "Minimum wall length" msgstr "Lunghezza minima parete" +# AI Translated msgid "" -"Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. Higher values remove more and longer walls.\n" +"Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. The value is a multiple of the wall width. Higher values remove more and longer walls.\n" "\n" -"NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the Advanced settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." +"NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the 'Walls and surfaces' settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." msgstr "" -"Regola questo valore per evitare che vengano stampate pareti corte e non chiuse, le quali potrebbero aumentare il tempo di stampa. Valori più alti rimuovono un numero maggiore di pareti e di maggior lunghezza.\n" +"Regola questo valore per evitare che vengano stampate pareti corte e non chiuse, le quali potrebbero aumentare il tempo di stampa. Il valore è un multiplo della larghezza della parete. Valori più alti rimuovono un numero maggiore di pareti e di maggior lunghezza.\n" "\n" -"NOTA: le superfici inferiori e superiori non saranno influenzate da questo valore, per evitare spazi visibili all'esterno del modello. Usa 'Soglia singola parete' nelle impostazioni avanzate qui sotto, per regolare la sensibilità di ciò che è considerato una superficie superiore. 'Soglia singola parete' è visibile solo se questa impostazione è impostata sopra il valore predefinito di 0,5 o se sono abilitate superfici superiori a parete singola." +"NOTA: le superfici inferiori e superiori non saranno influenzate da questo valore, per evitare spazi visibili all'esterno del modello. Usa 'Soglia singola parete' nelle impostazioni 'Pareti e superfici' qui sotto, per regolare la sensibilità di ciò che è considerato una superficie superiore. 'Soglia singola parete' è visibile solo se questa impostazione è impostata sopra il valore predefinito di 0,5 o se sono abilitate superfici superiori a parete singola." msgid "Maximum wall resolution" msgstr "Risoluzione massima parete" @@ -24212,9 +24359,6 @@ msgstr "Abilita l'assegnazione intelligente del filamento: assegna un filamento msgid "File Saving" msgstr "Salvataggio file" -msgid "Don't remind me again" -msgstr "Non ricordarmelo più" - msgid "No further pop-up will appear. You can reopen it in 'Preferences'" msgstr "Non apparirà più alcun popup. Puoi riaprirlo nelle 'Preferenze'" @@ -34772,6 +34916,170 @@ msgstr "" "Evita le deformazioni\n" "Sapevi che quando si stampano materiali soggetti a deformazioni come l'ABS, aumentare in modo appropriato la temperatura del piano riscaldato può ridurre la probabilità di deformazione?" +# AI Translated +#~ msgid "" +#~ "Line width of the Bridge. If expressed as a %, it will be computed over the nozzle diameter.\n" +#~ "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" +#~ "\n" +#~ "The maximum value is 100% or the nozzle diameter.\n" +#~ "If set to 0, the line width will match the Internal solid infill width." +#~ msgstr "" +#~ "Larghezza della linea del ponte. Se espressa in %, verrà calcolata rispetto al diametro dell'ugello.\n" +#~ "Se ne consiglia l'uso con una densità del ponte o un rapporto di flusso del ponte più elevati.\n" +#~ "\n" +#~ "Il valore massimo è 100% o il diametro dell'ugello.\n" +#~ "Se impostata a 0, la larghezza della linea corrisponderà alla larghezza del riempimento solido interno." + +# AI Translated +#, no-c-format, no-boost-format +#~ msgid "" +#~ "Enable this option to slow down printing in areas where perimeters may have curled upwards.\n" +#~ "For example, additional slowdown will be applied when printing overhangs on sharp corners like the front of the Benchy hull, reducing curling which compounds over multiple layers.\n" +#~ "\n" +#~ "It is generally recommended to have this option switched on unless your printer cooling is powerful enough or the print speed is slow enough that perimeter curling does not happen. \n" +#~ "If printing with a high external perimeter speed, this parameter may introduce wall artifacts when slowing down, due to the potentially large variance in print speeds causing the extruder to be unable to keep up with the requested flow change.\n" +#~ "Root cause of these artifacts is most likely PA tuning being slightly off, especially when combined with a high PA smooth time.\n" +#~ "\n" +#~ "Recommendations when enabling this option:\n" +#~ "1. Reduce Pressure Advance smooth time to 0.015 - 0.02 so the extruder reacts quickly to the speed changes.\n" +#~ "2. Increase the minimum print speeds to limit the magnitude of the slowdown and reduce the variance between fast and slow segments.\n" +#~ "3. If artifacts still appear, enable Extrusion Rate Smoothing (ERS) to further smooth the flow transitions.\n" +#~ "\n" +#~ "Note: When this option is enabled, overhang perimeters are treated like overhangs, meaning the overhang speed is applied even if the overhanging perimeter is part of a bridge.\n" +#~ "For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 100% overhang speed will be applied." +#~ msgstr "" +#~ "Abilita questa opzione per rallentare la stampa nelle aree in cui i perimetri potrebbero essersi arricciati verso l'alto.\n" +#~ "Ad esempio, verrà applicato un rallentamento aggiuntivo durante la stampa di sporgenze su angoli acuti come la parte anteriore dello scafo del Benchy, riducendo l'arricciamento che si accumula su più strati.\n" +#~ "\n" +#~ "In genere si consiglia di tenere attiva questa opzione, a meno che il raffreddamento della stampante non sia abbastanza potente o la velocità di stampa non sia abbastanza lenta da evitare l'arricciamento dei perimetri. \n" +#~ "Se si stampa con un'elevata velocità del perimetro esterno, questo parametro può introdurre artefatti sulle pareti durante il rallentamento, a causa della variazione potenzialmente ampia delle velocità di stampa che impedisce all'estrusore di tenere il passo con la variazione di flusso richiesta.\n" +#~ "La causa principale di questi artefatti è molto probabilmente una regolazione del PA leggermente imprecisa, soprattutto se combinata con un tempo di smoothing del PA elevato.\n" +#~ "\n" +#~ "Raccomandazioni quando si abilita questa opzione:\n" +#~ "1. Riduci il tempo di smoothing del Pressure Advance a 0,015 - 0,02 in modo che l'estrusore reagisca rapidamente alle variazioni di velocità.\n" +#~ "2. Aumenta le velocità di stampa minime per limitare l'entità del rallentamento e ridurre la variazione tra i segmenti veloci e lenti.\n" +#~ "3. Se gli artefatti persistono, abilita l'Extrusion Rate Smoothing (ERS) per uniformare ulteriormente le transizioni di flusso.\n" +#~ "\n" +#~ "Nota: quando questa opzione è abilitata, i perimetri in sporgenza vengono trattati come sporgenze, il che significa che la velocità per le sporgenze viene applicata anche se il perimetro in sporgenza fa parte di un ponte.\n" +#~ "Ad esempio, quando i perimetri sono in sporgenza al 100%, senza alcuna parete a sostenerli da sotto, verrà applicata la velocità per sporgenze del 100%." + +#~ msgid "" +#~ "Speed of the externally visible bridge extrusions.\n" +#~ "\n" +#~ "In addition, if Slow down for curled perimeters is disabled or Classic overhang mode is enabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." +#~ msgstr "" +#~ "Velocità di estrusione dei ponti visibili esternamente.\n" +#~ "\n" +#~ "Inoltre, se 'Rallenta per pareti incurvate' è disabilitato o è abilitata la modalità Sporgenza classica, la velocità di stampa delle pareti sporgenti supportate sarà inferiore al 13%, indipendentemente dal fatto che facciano parte di un ponte o di una sporgenza." + +#~ msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above. Set to zero for auto." +#~ msgstr "Questa impostazione influenzerà la velocità di stampa dei perimetri con raggio <= small_perimeter_threshold (di solito fori). Se espresso in percentuale (ad esempio: 80%) verrà calcolato sull'impostazione della velocità delle pareti esterne di cui sopra. Impostare su zero per auto." + +# AI Translated +#~ msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above. Set to zero for auto." +#~ msgstr "Come \"Perimetri piccoli\", ma per i supporti. Questa impostazione separata influirà sulla velocità del supporto per le aree <= `small_support_perimeter_threshold`. Se espressa come percentuale (ad esempio: 80%), verrà calcolata sull'impostazione di velocità del supporto o dell'interfaccia del supporto sopra riportata. Imposta a zero per auto." + +#~ msgid "" +#~ "Print sequence of the internal (inner) and external (outer) walls.\n" +#~ "\n" +#~ "Use Inner/Outer for best overhangs. This is because the overhanging walls can adhere to a neighbouring perimeter while printing. However, this option results in slightly reduced surface quality as the external perimeter is deformed by being squashed to the internal perimeter.\n" +#~ "\n" +#~ "Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended against the Outer/Inner option in most cases.\n" +#~ "\n" +#~ "Use Outer/Inner for the same external wall quality and dimensional accuracy benefits of Inner/Outer/Inner option. However, the Z seams will appear less consistent as the first extrusion of a new layer starts on a visible surface." +#~ msgstr "" +#~ "Sequenza di stampa delle pareti interne ed esterne.\n" +#~ "\n" +#~ "Utilizzare Interno/Esterno per sporgenze migliori. Questo perché le pareti sporgenti possono aderire a un perimetro vicino durante la stampa. Tuttavia, questa opzione comporta una qualità della superficie leggermente ridotta poiché il perimetro esterno viene deformato dalla pressione sul perimetro interno.\n" +#~ "\n" +#~ "Utilizzare Interno/Esterno/Interno per ottenere la migliore finitura superficiale esterna e la migliore precisione dimensionale, poiché la parete esterna viene stampata senza essere disturbata dal perimetro interno. Tuttavia, la qualità delle sporgenze si ridurrà poiché non si dispone di un perimetro interno contro cui stampare la parete esterna. Questa opzione richiede un minimo di 3 pareti per essere efficace, in quanto stampa prima le pareti interne dal 3° perimetro in poi, poi il perimetro esterno e, infine, il primo perimetro interno. Nella maggior parte dei casi, questa è l'opzione consigliata rispetto a Esterno/Interno.\n" +#~ "\n" +#~ "Utilizzare Esterno/Interno per ottenere la stessa qualità della parete esterna e gli stessi vantaggi di precisione dimensionale dell'opzione Interno/Esterno/Interno. Tuttavia, le cuciture Z appariranno meno coerenti quando la prima estrusione di un nuovo strato inizia su una superficie visibile." + +#~ msgid "This is the speed for the first layer except for solid infill sections." +#~ msgstr "Indica la velocità per il primo strato, tranne che per le sezioni di riempimento solido." + +#~ msgid "This is the speed for solid infill parts of the first layer." +#~ msgstr "Indica la velocità per le parti di riempimento solido del primo strato." + +#, no-c-format, no-boost-format +#~ msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to line width of sparse infill. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." +#~ msgstr "L'area di riempimento viene leggermente allargata per sovrapporsi alla parete e garantire una migliore adesione. Il valore percentuale è relativo alla larghezza della linea del riempimento sparso. Imposta questo valore a circa il 10-15% per ridurre al minimo la potenziale sovraestrusione e l'accumulo di materiale, che causerebbero superfici superiori ruvide." + +#, no-c-format, no-boost-format +#~ msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to line width of sparse infill." +#~ msgstr "L'area di riempimento solido superiore/inferiore viene leggermente allargata per sovrapporsi alla parete, garantendo una migliore adesione e riducendo al minimo la comparsa di fori nei punti in cui il riempimento superiore/inferiore incontra le pareti. Un valore del 25-30% è un buon punto di partenza, riducendo al minimo la comparsa di fori. Il valore percentuale è relativo alla larghezza della linea del riempimento sparso." + +#~ msgid "Interlocking depth of a segmented region. It will be ignored if \"mmu_segmented_region_max_width\" is zero or if \"mmu_segmented_region_interlocking_depth\" is bigger than \"mmu_segmented_region_max_width\". Zero disables this feature." +#~ msgstr "Profondità di incastro di una regione segmentata. Sarà ignorata se \"mmu_segmented_region_max_width\" è impostato a zero o se \"mmu_segmented_region_interlocking_depth\" è maggiore di \"mmu_segmented_region_max_width\". Il valore zero disabilita questa funzione." + +#~ msgid "" +#~ "Reduce the height of top-surface perimeters to match the model edge height.\n" +#~ "Affects perimeters with a slope less than this angle (degrees).\n" +#~ "A reasonable value is 35. Set to 0 to disable." +#~ msgstr "" +#~ "Riduce l'altezza dei perimetri della superficie superiore in modo che si adattino meglio al bordo del modello\n" +#~ "Influisce sui perimetri con una pendenza inferiore a questo angolo (in gradi).\n" +#~ "Il valore consigliato è 35. Impostare a 0 per disabilitare questa funzione." + +#~ msgid "Role base wipe speed" +#~ msgstr "Velocità di spurgo basata su ruolo" + +#~ msgid "" +#~ "A draft shield is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft. It is usually needed only with open frame printers, i.e. without an enclosure.\n" +#~ "\n" +#~ "Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used.\n" +#~ "Note: With the draft shield active, the skirt will be printed at skirt distance from the object. Therefore, if brims are active it may intersect with them. To avoid this, increase the skirt distance value.\n" +#~ msgstr "" +#~ "Uno scudo protettivo è utile per proteggere una stampa in ABS o ASA da deformazioni e distacchi dal piano di stampa dovuti a correnti d'aria. Di solito è necessario solo nelle stampanti con struttura aperta, ovvero senza un involucro.\n" +#~ "\n" +#~ "Abilitato = la gonna è alta quanto l'oggetto stampato più alto, altrimenti viene utilizzato il valore di 'Altezza gonna'.\n" +#~ "Nota: con lo scudo protettivo abilitato, la distanza tra la gonna e l'oggetto è stabilita dall'opzione 'Distanza gonna'. Pertanto se le tese sono attive, potrebbe intersecarsi con esse. Per evitare ciò, aumentare il valore della distanza gonna.\n" + +#~ msgid "" +#~ "The maximum print speed when purging in the wipe tower and printing the wipe tower sparse layers. When purging, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +#~ "\n" +#~ "When printing the sparse layers, if the internal perimeter speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +#~ "\n" +#~ "Increasing this speed may affect the tower's stability as well as increase the force with which the nozzle collides with any blobs that may have formed on the wipe tower.\n" +#~ "\n" +#~ "Before increasing this parameter beyond the default of 90 mm/s, make sure your printer can reliably bridge at the increased speeds and that ooze when tool changing is well controlled.\n" +#~ "\n" +#~ "For the wipe tower external perimeters the internal perimeter speed is used regardless of this setting." +#~ msgstr "" +#~ "Velocità massima di stampa durante lo spurgo nella torre di spurgo e nella stampa degli strati sparsi della torre. Durante lo spurgo, se la velocità del riempimento sparso o quella calcolata in base alla velocità volumetrica massima del filamento è inferiore, verrà utilizzata quella inferiore.\n" +#~ "\n" +#~ "Durante la stampa di strati sparsi, se la velocità delle pareti interne o quella calcolata in base alla velocità volumetrica massima del filamento è inferiore, verrà utilizzata quella inferiore.\n" +#~ "\n" +#~ "Aumentare questa velocità può compromettere la stabilità della torre e aumentare la forza con cui l'ugello entra in collisione con eventuali grumi che si sono formati sulla torre di spurgo.\n" +#~ "\n" +#~ "Prima di aumentare questo parametro oltre il valore predefinito di 90 mm/s, accertati che la stampante sia in grado di gestire in modo affidabile le maggiori velocità, e che il trasudo del materiale durante il cambio di testina sia ben controllato.\n" +#~ "\n" +#~ "Per i perimetri esterni della torre di spurgo viene utilizzata la velocità dei perimetri interni, indipendentemente da questa impostazione." + +#~ msgid "" +#~ "Wipe tower outer wall type.\n" +#~ "1. Rectangle: The default wall type, a rectangle with fixed width and height.\n" +#~ "2. Cone: A cone with a fillet at the bottom to help stabilize the wipe tower.\n" +#~ "3. Rib: Adds four ribs to the tower wall for enhanced stability." +#~ msgstr "" +#~ "Tipo di parete esterna della torre di pulizia.\n" +#~ "1. Rettangolo: il tipo di parete predefinito, un rettangolo con larghezza e altezza fisse.\n" +#~ "2. Cono: un cono con raccordo sul fondo per contribuire alla stabilizzazione della torre di pulizia.\n" +#~ "3. Nervatura: aggiunge quattro nervature alla parete della torre per una stabilità migliorata." + +#~ msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker or narrower than they normally would be. The spacing is adjusted automatically." +#~ msgstr "Flusso aggiuntivo utilizzato per le linee sulla torre di spurgo. Ciò rende le linee di spurgo più spesse o più sottili di quanto sarebbero normalmente. La spaziatura viene regolata automaticamente." + +#~ msgid "" +#~ "Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. Higher values remove more and longer walls.\n" +#~ "\n" +#~ "NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the Advanced settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." +#~ msgstr "" +#~ "Regola questo valore per evitare che vengano stampate pareti corte e non chiuse, le quali potrebbero aumentare il tempo di stampa. Valori più alti rimuovono un numero maggiore di pareti e di maggior lunghezza.\n" +#~ "\n" +#~ "NOTA: le superfici inferiori e superiori non saranno influenzate da questo valore, per evitare spazi visibili all'esterno del modello. Usa 'Soglia singola parete' nelle impostazioni avanzate qui sotto, per regolare la sensibilità di ciò che è considerato una superficie superiore. 'Soglia singola parete' è visibile solo se questa impostazione è impostata sopra il valore predefinito di 0,5 o se sono abilitate superfici superiori a parete singola." + # AI Translated #, boost-format #~ msgid "Split into %1% part" diff --git a/localization/i18n/ja/OrcaSlicer_ja.po b/localization/i18n/ja/OrcaSlicer_ja.po index 1d37bfe3de..f7dd340bb4 100644 --- a/localization/i18n/ja/OrcaSlicer_ja.po +++ b/localization/i18n/ja/OrcaSlicer_ja.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-10-13 09:55-0300\n" +"POT-Creation-Date: 2026-10-14 10:04-0300\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -2430,6 +2430,66 @@ msgstr "ネットワークプラグイン制限" msgid "Privacy Policy Update" msgstr "プライバシーポリシーの更新" +# AI Translated +msgid "All your filament presets are available on the printers they were made for." +msgstr "すべてのフィラメントプリセットは、対象のプリンターで利用できます。" + +# AI Translated +msgid "Migrate Filament Presets" +msgstr "フィラメントプリセットを移行" + +# AI Translated +msgid "" +"OrcaSlicer 2.5.0 restructured many system filament presets to fix incorrect profiles and prepare for future features. As a result, the presets below no longer show on some printers they were made for. Sorry for the trouble; this is a one-time fix.\n" +"\n" +"Add those printers back to your presets now? Your presets are backed up first. You can also do this later from Help > Migrate Filament Presets." +msgstr "" +"OrcaSlicer 2.5.0 では、誤ったプロファイルの修正と今後の機能への備えのため、多くのシステムフィラメントプリセットを再構成しました。その結果、以下のプリセットが、作成元のプリンターの一部で表示されなくなっています。ご不便をおかけして申し訳ありません。これは1回限りの修正です。\n" +"\n" +"これらのプリンターをプリセットに今すぐ再度追加しますか?プリセットは事前にバックアップされます。後から ヘルプ > フィラメントプリセットを移行 で実行することもできます。" + +# AI Translated +#, boost-format +msgid "%1% (based on %2%)" +msgstr "%1% (%2%ベース)" + +msgid "Don't remind me again" +msgstr "再度通知しない" + +# AI Translated +msgid "Your presets could not be backed up, so they were not migrated." +msgstr "プリセットをバックアップできなかったため、移行しませんでした。" + +# AI Translated +msgid "The user presets folder could not be locked, so nothing was migrated. Another OrcaSlicer instance may be saving presets; try again later from Help > Migrate Filament Presets." +msgstr "ユーザープリセットフォルダーをロックできなかったため、何も移行されませんでした。別のOrcaSlicerのインスタンスがプリセットを保存している可能性があります。しばらくしてから、ヘルプ > フィラメントプリセットを移行 からもう一度お試しください。" + +# AI Translated +#, boost-format +msgid "" +"Your filament presets could not be migrated. A backup of your presets was saved to:\n" +"%1%" +msgstr "" +"フィラメントプリセットを移行できませんでした。プリセットのバックアップを次の場所に保存しました:\n" +"%1%" + +# AI Translated +#, boost-format +msgid "" +"Your filament presets were migrated. Select them again in the filament list where you used them.\n" +"\n" +"A backup of your presets was saved to:\n" +"%1%" +msgstr "" +"フィラメントプリセットを移行しました。使用していたフィラメントリストで、もう一度選択してください。\n" +"\n" +"プリセットのバックアップを次の場所に保存しました:\n" +"%1%" + +# AI Translated +msgid "These presets could not be migrated:" +msgstr "次のプリセットは移行できませんでした:" + # AI Translated #, c-format, boost-format msgid "your Orca Cloud profile (user ID: \"%s\")" @@ -3166,6 +3226,62 @@ msgstr "(色が失われました)" msgid "Center" msgstr "センター" +# AI Translated +msgid "Distribute left-right" +msgstr "左右に均等配置" + +# AI Translated +msgid "Distribute front-back" +msgstr "前後に均等配置" + +# AI Translated +msgid "Distribute top-bottom" +msgstr "上下に均等配置" + +# AI Translated +msgid "Align left" +msgstr "左端揃え" + +# AI Translated +msgid "Align left-right center" +msgstr "左右中央揃え" + +# AI Translated +msgid "Align right" +msgstr "右端揃え" + +# AI Translated +msgid "Align front" +msgstr "前端揃え" + +# AI Translated +msgid "Align front-back center" +msgstr "前後中央揃え" + +# AI Translated +msgid "Align back" +msgstr "後端揃え" + +# AI Translated +msgid "Align bottom" +msgstr "下端揃え" + +# AI Translated +msgid "Align top-bottom center" +msgstr "上下中央揃え" + +# AI Translated +msgid "Align top" +msgstr "上端揃え" + +# AI Translated +msgid "Align/Distribute" +msgstr "整列/均等配置" + +# AI Translated +msgid "Align and distribute objects" +msgstr "オブジェクトの整列と均等配置" + msgid "Drop" msgstr "ドロップ" @@ -5264,8 +5380,9 @@ msgstr "一時停止(フロントカバー脱落)" msgid "Calibrating the micro lidar" msgstr "ライダー キャリブレーション" +# AI Translated msgid "Calibrating flow ratio" -msgstr "フロー率のキャリブレーション中" +msgstr "流量比のキャリブレーション中" msgid "Pause (nozzle temperature malfunction)" msgstr "一時停止(ノズル温度異常)" @@ -6649,6 +6766,10 @@ msgstr "セットアップ ウィザード" msgid "Show Configuration Folder" msgstr "構成フォルダを表示" +# AI Translated +msgid "Bring back filament presets that a profile update removed from printers they were made for" +msgstr "プロファイルの更新により作成元のプリンターから外れたフィラメントプリセットを元に戻します" + # AI Translated msgid "Troubleshoot Center" msgstr "トラブルシューティングセンター" @@ -9219,6 +9340,7 @@ msgid "Cannot slice: an object overlaps an area reserved for IDEX/IQEX parallel msgstr "スライスできません: オブジェクトがIDEX/IQEX並列印刷用に予約された領域 (セカンダリゾーン、またはプライマリゾーン内のキャリッジ用クリアランス帯) と重なっています。" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "プライムタワー"; align it once the term is settled. msgid "Cannot slice: the prime tower overlaps an area reserved for IDEX/IQEX parallel printing (a secondary zone, or a carriage clearance strip inside the primary zone)." msgstr "スライスできません: プライムタワーがIDEX/IQEX並列印刷用に予約された領域 (セカンダリゾーン、またはプライマリゾーン内のキャリッジ用クリアランス帯) と重なっています。" @@ -12057,6 +12179,7 @@ msgid "Prime tower is required for nozzle changing. There may be flaws on the mo msgstr "ノズルの切り替えにはプライムタワーが必要です。無効にするとモデルに欠陥が生じる可能性があります。本当にプライムタワーを無効にしますか?" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "プライムタワー"; align it once the term is settled. msgid "A prime tower is required for smooth timelapse mode. There may be flaws on the model without a prime tower. Are you sure you want to disable the prime tower?" msgstr "スムーズタイムラプスモードにはプライムタワーが必要です。プライムタワーがない場合、モデルに欠陥が生じる可能性があります。本当にプライムタワーを無効にしますか?" @@ -12073,6 +12196,7 @@ msgid "Enabling both precise Z height and the prime tower may cause slicing erro msgstr "正確なZ高さとプライムタワーの両方を有効にすると、スライスエラーが発生する可能性があります。それでも正確なZ高さを有効にしますか?" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "プライムタワー"; align it once the term is settled. msgid "Smooth timelapse needs a prime tower on every layer, which is not compatible with \"No sparse layers\". \"No sparse layers\" has been turned off." msgstr "スムーズタイムラプスは全積層にプライムタワーが必要なため、「スパース層なし」とは併用できません。「スパース層なし」をオフにしました。" @@ -12080,6 +12204,7 @@ msgid "A prime tower is required for smooth timelapse mode. There may be flaws o msgstr "スムーズタイムラプスビデオを作成するにはプライムタワーが必要です。プライムタワーを有効にしますか?" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "プライムタワー"; align it once the term is settled. msgid "\"No sparse layers\" is not compatible with smooth timelapse, which needs a prime tower on every layer. Timelapse has been switched to traditional mode." msgstr "「スパース層なし」は、全積層にプライムタワーが必要なスムーズタイムラプスとは併用できません。タイムラプスを通常モードに切り替えました。" @@ -12339,8 +12464,9 @@ msgstr "推奨ノズル温度" msgid "Recommended nozzle temperature range of this filament. 0 means not set" msgstr "フィラメントの推奨ノズル温度、0は未設定との意味です" +# AI Translated msgid "Flow ratio and Pressure Advance" -msgstr "フロー率とPressure Advance" +msgstr "流量比とPressure Advance" msgid "Print chamber temperature" msgstr "印刷チャンバー温度" @@ -13887,6 +14013,7 @@ msgid "Open G-code file:" msgstr "G-codeファイルを開く" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "ワイプタワー"; align it once the term is settled. msgid "Wipe tower generation failed, possibly due to empty first layer." msgstr "ワイプタワーの生成に失敗しました。最初の積層が空である可能性があります。" @@ -14035,6 +14162,18 @@ msgstr "外周との交差が複数あり、1つのみ使用されました (%1% msgid "a perimeter is fully inside a modifier, the modifier was not applied to it (%1%)" msgstr "外周がモディファイアの内部に完全に含まれているため、モディファイアは適用されませんでした (%1%)" +# AI Translated +#. TRN: %1% is the modifier type "Seam Blocked" as in the menu, %2% the modifier name, %3% the object name. +#, boost-format +msgid "%1% modifier \"%2%\" of \"%3%\" covers an entire perimeter" +msgstr "「%3%」の %1% モディファイア「%2%」は外周全体を覆っています" + +# AI Translated +#. TRN: %1% is the modifier type "Seam Blocked" as in the menu, %2% the modifier name, %3% the object name, %4% the number of modifiers. +#, boost-format +msgid "%1% modifier \"%2%\" of \"%3%\" (%4% in total) covers an entire perimeter" +msgstr "「%3%」の %1% モディファイア「%2%」(合計%4%個) は外周全体を覆っています" + # AI Translated #, boost-format msgid "modifier \"%1%\" of \"%2%\" had no effect on the seam (it might not reach the centerline of the printed perimeter)" @@ -14242,6 +14381,7 @@ msgid "%1% is too tall, and collisions will be caused." msgstr "%1% は高すぎます、衝突の可能性があります。" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "プライムタワー"; align it once the term is settled. msgid "The relative position of the model and the prime tower does not meet the requirements of the \"No sparse layers\" feature. Please adjust their relative positions, lower the model height, or turn off \"No sparse layers\"." msgstr "モデルとプライムタワーの相対位置が「スパース層なし」機能の要件を満たしていません。相対位置を調整するか、モデルの高さを下げるか、「スパース層なし」をオフにしてください。" @@ -14251,26 +14391,32 @@ msgid "%1% is too close to the clumping detection area. There may be collisions msgstr "%1% がクランピング検出エリアに近すぎます。印刷中に衝突が発生する可能性があります。" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "プライムタワー"; align it once the term is settled. msgid "Prime tower is too close to others, and collisions may be caused.\n" msgstr "プライムタワーが他のオブジェクトに近すぎるため、衝突が発生する可能性があります。\n" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "プライムタワー"; align it once the term is settled. msgid "Prime tower is too close to an exclusion area, and collisions will be caused.\n" msgstr "プライムタワーが除外エリアに近すぎるため、衝突が発生します。\n" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "プライムタワー"; align it once the term is settled. msgid "Prime tower is too close to the clumping detection area, and collisions will be caused.\n" msgstr "プライムタワーがクランピング検出エリアに近すぎるため、衝突が発生します。\n" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "プライムタワー"; align it once the term is settled. msgid "Prime tower is too close to an exclusion area. There may be collisions when printing." msgstr "プライムタワーが除外エリアに近すぎます。印刷中に衝突が発生する可能性があります。" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "プライムタワー"; align it once the term is settled. msgid "Prime tower is too close to the clumping detection area. There may be collisions when printing." msgstr "プライムタワーがクランピング検出エリアに近すぎます。印刷中に衝突が発生する可能性があります。" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "プライムタワー"; align it once the term is settled. msgid "Prime tower is partially outside the printable area, and it cannot be printed.\n" msgstr "プライムタワーが造形可能領域から一部はみ出しているため、印刷できません。\n" @@ -14394,10 +14540,12 @@ msgid "Variable layer height is not supported with Organic supports." msgstr "可変レイヤー高さはオーガニックサポートではサポートされていません。" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "ワイプタワー"; align it once the term is settled. msgid "The wipe tower filament cannot be a mixed filament." msgstr "ワイプタワーのフィラメントに混合フィラメントは使用できません。" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "プライムタワー"; align it once the term is settled. msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution." msgstr "ノズル径やフィラメント径が異なる場合、プライムタワーを有効にすると正しく動作しないことがあります。非常に実験的な機能ですので、慎重にお進みください。" @@ -14408,6 +14556,7 @@ msgid "Ooze prevention is only supported with the wipe tower when 'single_extrud msgstr "オーズ防止は、'single_extruder_multi_material'がオフの場合にのみ、 ワイプタワーと併用してサポートされます。" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "プライムタワー"; align it once the term is settled. msgid "The prime tower is currently only supported for the Marlin, RepRap/Sprinter, RepRapFirmware and Repetier G-code flavors." msgstr "プライムタワーは現在、Marlin、RepRap/Sprinter、RepRapFirmware、およびRepetierのG-codeフレーバーでのみサポートされています。" @@ -14427,6 +14576,7 @@ msgid "A prime tower requires that all objects are printed over the same number msgstr "プライムタワーを使用するには、全てのオブジェクトが同じラフト層数を使う必要があります" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "プライムタワー"; align it once the term is settled. msgid "The prime tower is only supported for multiple objects if they are printed with the same support_top_z_distance." msgstr "プライムタワーは、複数のオブジェクトが同じsupport_top_z_distanceで印刷される場合にのみ対応しています。" @@ -15054,8 +15204,9 @@ msgstr "" "\n" "このオプションは、ソリッドインフィルを押し出す前にブリッジ性能をさらに高める「インフィル上の2層目の内部ブリッジ」オプションと組み合わせると特に効果的です。" +# AI Translated msgid "Bridge flow ratio" -msgstr "ブリッジ流量" +msgstr "ブリッジ流量比" # AI Translated msgid "" @@ -15077,16 +15228,17 @@ msgid "" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" -"If set to 0, the line width will match the Internal solid infill width." +"If set to 0, the line width will match the Internal solid infill width, or the nozzle diameter for thick bridges." msgstr "" "ブリッジのライン幅です。%で指定した場合、ノズル径に対して計算されます。\n" "ブリッジ密度やブリッジ流量比を高めに設定して使用することをおすすめします。\n" "\n" "最大値は100%またはノズル径です。\n" -"0に設定すると、ライン幅は内部ソリッドインフィルの幅と同じになります。" +"0に設定すると、ライン幅は内部ソリッド インフィルの幅と同じになります。厚いブリッジの場合はノズル径と同じになります。" +# AI Translated msgid "Internal bridge flow ratio" -msgstr "内部ブリッジフロー率" +msgstr "内部ブリッジ流量比" # AI Translated msgid "" @@ -15102,8 +15254,9 @@ msgstr "" "\n" "実際に使用されるブリッジ流量は、この値にフィラメントの流量比を掛け、設定されている場合はオブジェクトの流量比も掛けて計算されます。" +# AI Translated msgid "Top surface flow ratio" -msgstr "上面フロー率" +msgstr "上面流量比" # AI Translated msgid "" @@ -15115,8 +15268,9 @@ msgstr "" "\n" "実際に使用される上面の流量は、この値にフィラメントの流量比を掛け、設定されている場合はオブジェクトの流量比も掛けて計算されます。" +# AI Translated msgid "Bottom surface flow ratio" -msgstr "底面フロー率" +msgstr "底面流量比" # AI Translated msgid "" @@ -15128,15 +15282,17 @@ msgstr "" "\n" "実際に使用される底面ソリッドインフィルの流量は、この値にフィラメントの流量比を掛け、設定されている場合はオブジェクトの流量比も掛けて計算されます。" +# AI Translated msgid "Set other flow ratios" -msgstr "他のフロー率を設定" +msgstr "他の流量比を設定" # AI Translated msgid "Change flow ratios for other extrusion path types." msgstr "その他の押出パスタイプの流量比を変更します。" +# AI Translated msgid "First layer flow ratio" -msgstr "初期レイヤーフロー率" +msgstr "初期レイヤー流量比" # AI Translated msgid "" @@ -15148,8 +15304,9 @@ msgstr "" "\n" "1層目では、各パスロールの実際の流量比 (ブリムとスカートには影響しません) にこの値が掛けられます。" +# AI Translated msgid "Outer wall flow ratio" -msgstr "外壁フロー率" +msgstr "外壁流量比" # AI Translated msgid "" @@ -15161,8 +15318,9 @@ msgstr "" "\n" "実際に使用される外壁の流量は、この値にフィラメントの流量比を掛け、設定されている場合はオブジェクトの流量比も掛けて計算されます。" +# AI Translated msgid "Inner wall flow ratio" -msgstr "内壁フロー率" +msgstr "内壁流量比" # AI Translated msgid "" @@ -15174,8 +15332,9 @@ msgstr "" "\n" "実際に使用される内壁の流量は、この値にフィラメントの流量比を掛け、設定されている場合はオブジェクトの流量比も掛けて計算されます。" +# AI Translated msgid "Overhang flow ratio" -msgstr "オーバーハングフロー率" +msgstr "オーバーハング流量比" # AI Translated msgid "" @@ -15187,8 +15346,9 @@ msgstr "" "\n" "実際に使用されるオーバーハングの流量は、この値にフィラメントの流量比を掛け、設定されている場合はオブジェクトの流量比も掛けて計算されます。" +# AI Translated msgid "Sparse infill flow ratio" -msgstr "スパースインフィルフロー率" +msgstr "スパースインフィル流量比" # AI Translated msgid "" @@ -15200,8 +15360,9 @@ msgstr "" "\n" "実際に使用されるスパース インフィルの流量は、この値にフィラメントの流量比を掛け、設定されている場合はオブジェクトの流量比も掛けて計算されます。" +# AI Translated msgid "Internal solid infill flow ratio" -msgstr "内部ソリッドインフィルフロー率" +msgstr "内部ソリッドインフィル流量比" # AI Translated msgid "" @@ -15213,8 +15374,9 @@ msgstr "" "\n" "実際に使用される内部ソリッドインフィルの流量は、この値にフィラメントの流量比を掛け、設定されている場合はオブジェクトの流量比も掛けて計算されます。" +# AI Translated msgid "Gap fill flow ratio" -msgstr "ギャップフィルフロー率" +msgstr "ギャップフィル流量比" # AI Translated msgid "" @@ -15226,8 +15388,9 @@ msgstr "" "\n" "実際に使用される隙間充填の流量は、この値にフィラメントの流量比を掛け、設定されている場合はオブジェクトの流量比も掛けて計算されます。" +# AI Translated msgid "Support flow ratio" -msgstr "サポートフロー率" +msgstr "サポート流量比" # AI Translated msgid "" @@ -15239,8 +15402,9 @@ msgstr "" "\n" "実際に使用されるサポートの流量は、この値にフィラメントの流量比を掛け、設定されている場合はオブジェクトの流量比も掛けて計算されます。" +# AI Translated msgid "Support interface flow ratio" -msgstr "サポートインターフェースフロー率" +msgstr "サポートインターフェース流量比" # AI Translated msgid "" @@ -15387,7 +15551,7 @@ msgid "" "3. If artifacts still appear, enable Extrusion Rate Smoothing (ERS) to further smooth the flow transitions.\n" "\n" "Note: When this option is enabled, overhang perimeters are treated like overhangs, meaning the overhang speed is applied even if the overhanging perimeter is part of a bridge.\n" -"For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 100% overhang speed will be applied." +"For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 75% overhang speed will be applied, limited by the bridge speed." msgstr "" "外周が上向きにカールしている可能性がある領域で、印刷を減速させる場合にこのオプションを有効にします。\n" "例えば、Benchyの船首のような鋭角部のオーバーハングを印刷する際に追加の減速が適用され、複数の層にわたって蓄積するカールを抑えられます。\n" @@ -15399,10 +15563,10 @@ msgstr "" "このオプションを有効にする際の推奨事項:\n" "1. Pressure Advanceのスムーズ時間を0.015〜0.02に下げ、押出機が速度変化に素早く反応するようにします。\n" "2. 最小印刷速度を上げて減速の幅を抑え、速い区間と遅い区間の差を小さくします。\n" -"3. それでもアーティファクトが出る場合は、Extrusion Rate Smoothing (ERS) を有効にして流量の遷移をさらに滑らかにします。\n" +"3. それでもアーティファクトが出る場合は、押出レートスムージング (ERS) を有効にして流量の遷移をさらに滑らかにします。\n" "\n" "注意: このオプションを有効にすると、オーバーハング外周はオーバーハングとして扱われるため、オーバーハングする外周がブリッジの一部であってもオーバーハング速度が適用されます。\n" -"例えば、外周が100%オーバーハングで下に支える壁がない場合、100%オーバーハング時の速度が適用されます。" +"例えば、外周が100%オーバーハングで下に支える壁がない場合、75%のオーバーハング速度が適用され、ブリッジ速度で制限されます。" msgid "mm/s or %" msgstr "mm/s 或は %" @@ -15411,11 +15575,11 @@ msgstr "mm/s 或は %" msgid "" "Speed of the externally visible bridge extrusions.\n" "\n" -"In addition, if Slow down for curled perimeters is disabled or Classic overhang mode is enabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." +"In addition, if Slow down for curled perimeters is disabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." msgstr "" "外部から見えるブリッジ押出の速度です。\n" "\n" -"さらに、「カールした外周で減速」が無効、またはクラシックオーバーハングモードが有効な場合、ブリッジかオーバーハングかに関わらず、支持率13%未満のオーバーハング壁の印刷速度になります。" +"さらに、「カールした外周のスローダウン」が無効な場合、ブリッジかオーバーハングかに関わらず、支持率13%未満のオーバーハング壁の印刷速度になります。" # AI Translated msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%." @@ -15998,8 +16162,8 @@ msgid "Small perimeters" msgstr "小さな外周" # AI Translated -msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above. Set to zero for auto." -msgstr "この個別の設定は、半径がsmall_perimeter_threshold以下の外周 (通常は穴) の速度に影響します。パーセント (例: 80%) で指定した場合、上の外壁速度の設定を基準に計算されます。自動にするには0を設定してください。" +msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above." +msgstr "この個別の設定は、半径がsmall_perimeter_threshold以下の外周 (通常は穴) の速度に影響します。パーセント (例: 80%) で指定した場合、上の外壁速度の設定を基準に計算されます。" msgid "Small perimeters threshold" msgstr "小さな外周のしきい値" @@ -16013,8 +16177,8 @@ msgid "Small support perimeters" msgstr "小さなサポート外周" # AI Translated -msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above. Set to zero for auto." -msgstr "「小さな外周」と同様ですが、サポート用です。この個別の設定は、`small_support_perimeter_threshold`以下の領域のサポート速度に影響します。パーセント (例: 80%) で指定した場合、上のサポートまたはサポートインターフェースの速度設定を基準に計算されます。自動にするには0を設定してください。" +msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above." +msgstr "「小さな外周」と同様ですが、サポート用です。この個別の設定は、`small_support_perimeter_threshold`以下の領域のサポート速度に影響します。パーセント (例: 80%) で指定した場合、上のサポートまたはサポート接触面の速度設定を基準に計算されます。" # AI Translated msgid "Small support perimeters threshold" @@ -16033,17 +16197,17 @@ msgid "" "\n" "Use Inner/Outer for best overhangs. This is because the overhanging walls can adhere to a neighbouring perimeter while printing. However, this option results in slightly reduced surface quality as the external perimeter is deformed by being squashed to the internal perimeter.\n" "\n" -"Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended against the Outer/Inner option in most cases.\n" +"Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended over the Outer/Inner option in most cases.\n" "\n" "Use Outer/Inner for the same external wall quality and dimensional accuracy benefits of Inner/Outer/Inner option. However, the Z seams will appear less consistent as the first extrusion of a new layer starts on a visible surface." msgstr "" "内壁と外壁の印刷順序です。\n" "\n" -"オーバーハングを最良にするには内壁→外壁を使用します。オーバーハングする壁が印刷中に隣接する外周に密着できるためです。ただし、外周が内周に押し付けられて変形するため、表面品質はわずかに低下します。\n" +"オーバーハングを最良にするには内側/外側を使用します。オーバーハングする壁が印刷中に隣接する外周に密着できるためです。ただし、外周が内周に押し付けられて変形するため、表面品質はわずかに低下します。\n" "\n" -"外面の仕上がりと寸法精度を最良にするには内壁→外壁→内壁を使用します。外壁が内周に乱されずに印刷されるためです。ただし、外壁を印刷する際に支えとなる内周がないため、オーバーハング性能は低下します。このオプションは3本目以降の内壁を先に印刷し、次に外壁、最後に1本目の内壁を印刷するため、効果を得るには最低3本の壁が必要です。多くの場合、外壁→内壁よりこのオプションをおすすめします。\n" +"外面の仕上がりと寸法精度を最良にするには内側/外側/内側を使用します。外壁が内周に乱されずに印刷されるためです。ただし、外壁を印刷する際に支えとなる内周がないため、オーバーハング性能は低下します。このオプションは3本目以降の内壁を先に印刷し、次に外壁、最後に1本目の内壁を印刷するため、効果を得るには最低3本の壁が必要です。多くの場合、外側/内側よりこのオプションをおすすめします。\n" "\n" -"外壁→内壁は内壁→外壁→内壁と同様に外壁の品質と寸法精度の利点がありますが、新しい層の最初の押出が見える面から始まるため、Zシームの一貫性が低く見えます。" +"外側/内側は内側/外側/内側と同様に外壁の品質と寸法精度の利点がありますが、新しい層の最初の押出が見える面から始まるため、継ぎ目の一貫性が低く見えます。" msgid "Inner/Outer" msgstr "内側/外側" @@ -16513,6 +16677,7 @@ msgid "Minimal purge on wipe tower" msgstr "プライムタワー上最小フラッシュ量" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "ワイプタワー"; align it once the term is settled. 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, Orca Slicer will always prime this amount of material into the wipe tower to produce successive infill or sacrificial object extrusions reliably." msgstr "ツール交換後は、新しくロードされたフィラメントのノズル内での正確な位置が分からず、フィラメント圧力もまだ安定していない可能性があります。プリントヘッドをインフィルや犠牲オブジェクトへパージする前に、Orca Slicerは常にこの量の材料をワイプタワーに押し出し、その後のインフィルや犠牲オブジェクトの押出を確実に行えるようにします。" @@ -17037,14 +17202,16 @@ msgstr "1層目の高さ" msgid "Height of the first layer. Making the first layer height thicker can improve build plate adhesion." msgstr "1層目の高さです。高さを大きくすればプレートとの接着性が良くなります。" -msgid "This is the speed for the first layer except for solid infill sections." -msgstr "1層目を造形時に、ソリッド インフィル以外の部分の造形速度です。" +# AI Translated +msgid "This is the speed for the walls and brim of the first layer." +msgstr "1層目の壁とブリムの造形速度です。" msgid "First layer infill" msgstr "1層目インフィル" -msgid "This is the speed for solid infill parts of the first layer." -msgstr "1層目のソリッド インフィルの造形速度です。" +# AI Translated +msgid "This is the speed for the first layer except for walls and brim, such as infill, gap fill and support." +msgstr "1層目の壁とブリムを除く部分 (インフィル、隙間充填、サポートなど) の造形速度です。" # AI Translated msgid "First layer travel speed" @@ -17819,8 +17986,8 @@ msgstr "インフィル/壁面 オーバーラップ" # AI Translated #, no-c-format, no-boost-format -msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to line width of sparse infill. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." -msgstr "インフィル領域をわずかに広げて壁面と重ねることで、接着を改善します。パーセント値はスパース インフィルのライン幅に対する相対値です。過剰押出や材料の蓄積による上面のざらつきを最小限に抑えるには、この値を10〜15%程度に設定します。" +msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to the inner wall line width. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." +msgstr "インフィル領域をわずかに広げて壁面と重ねることで、接着を改善します。パーセント値は内壁のライン幅に対する相対値です。過剰押出や材料の蓄積による上面のざらつきを最小限に抑えるには、この値を10〜15%程度に設定します。" # AI Translated msgid "Top/Bottom solid infill/wall overlap" @@ -17828,8 +17995,8 @@ msgstr "上面/底面ソリッドインフィルと壁面の重なり" # AI Translated #, no-c-format, no-boost-format -msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to line width of sparse infill." -msgstr "上面ソリッドインフィルの領域をわずかに広げて壁面と重ねることで、接着を改善し、上面インフィルと壁面の境目にできるピンホールを目立たなくします。25〜30%が良い出発点で、ピンホールを目立たなくできます。パーセント値はスパース インフィルのライン幅に対する相対値です。" +msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to the inner wall line width." +msgstr "上面ソリッドインフィルの領域をわずかに広げて壁面と重ねることで、接着を改善し、上面インフィルと壁面の境目にできるピンホールを目立たなくします。25〜30%が良い出発点で、ピンホールを目立たなくできます。パーセント値は内壁のライン幅に対する相対値です。" msgid "This is the speed for internal sparse infill." msgstr "スパース インフィルの造形速度です。" @@ -17856,8 +18023,9 @@ msgstr "セグメント化された領域の最大幅。値が 0 の場合、こ msgid "Interlocking depth of a segmented region" msgstr "分割領域のかみ合わせ深さ" -msgid "Interlocking depth of a segmented region. It will be ignored if \"mmu_segmented_region_max_width\" is zero or if \"mmu_segmented_region_interlocking_depth\" is bigger than \"mmu_segmented_region_max_width\". Zero disables this feature." -msgstr "セグメント化された領域の連動深さ。mmu_segmented_region_max_width \"が0か、\"mmu_segmented_region_interlocking_depth \"が \"mmu_segmented_region_max_width \"より大きい場合は無視される。ゼロはこの機能を無効にする。" +# AI Translated +msgid "Interlocking depth of a segmented region. On every other layer, the segmented region is limited to this depth. It will be ignored if \"interlocking_beam\" is enabled. Zero disables this feature." +msgstr "分割領域のかみ合わせ深さです。1層おきに、分割領域がこの深さに制限されます。「interlocking_beam」が有効な場合は無視されます。0にすると、この機能は無効になります。" msgid "Use beam interlocking" msgstr "インターロックビームを使用する" @@ -17970,11 +18138,11 @@ msgstr "壁面高さ最小化の角度" # AI Translated msgid "" "Reduce the height of top-surface perimeters to match the model edge height.\n" -"Affects perimeters with a slope less than this angle (degrees).\n" +"Affects perimeters with a slope greater than this angle (degrees).\n" "A reasonable value is 35. Set to 0 to disable." msgstr "" "上面の外周の高さを下げて、モデルの縁の高さに合わせます。\n" -"この角度 (度) 未満の傾斜を持つ外周に影響します。\n" +"この角度 (度) を超える傾斜を持つ外周に影響します。\n" "35程度が妥当な値です。0にすると無効になります。" # AI Translated @@ -19033,8 +19201,8 @@ msgid "Use scarf joint for inner walls as well." msgstr "内壁にも斜め継ぎ目を使用" # AI Translated -msgid "Role base wipe speed" -msgstr "ロール基準のワイプ速度" +msgid "Role based wipe speed" +msgstr "ロール基準の拭き上げ速度" # AI Translated msgid "The wipe speed is determined by the speed of the current extrusion role. e.g. if a wipe action is executed immediately following an outer wall extrusion, the speed of the outer wall extrusion will be utilized for the wipe action." @@ -19138,13 +19306,11 @@ msgstr "保護シールド" msgid "" "A draft shield is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft. It is usually needed only with open frame printers, i.e. without an enclosure.\n" "\n" -"Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used.\n" -"Note: With the draft shield active, the skirt will be printed at skirt distance from the object. Therefore, if brims are active it may intersect with them. To avoid this, increase the skirt distance value.\n" +"Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used." msgstr "" "保護シールドは、ABSやASAの印刷物が風によって反ったりベッドから剥がれたりするのを防ぐのに役立ちます。通常はエンクロージャーのないオープンフレームのプリンターでのみ必要です。\n" "\n" -"有効 = スカートは最も高い印刷オブジェクトと同じ高さになります。それ以外の場合は「スカートの高さ」が使用されます。\n" -"注意: 保護シールドが有効な場合、スカートはオブジェクトからスカート距離だけ離して印刷されます。そのため、ブリムが有効だと交差する可能性があります。これを避けるには、スカート距離の値を大きくしてください。\n" +"有効 = スカートは最も高い印刷オブジェクトと同じ高さになります。それ以外の場合は「スカートの高さ」が使用されます。" msgid "Enabled" msgstr "有効" @@ -19282,6 +19448,7 @@ msgid "Farthest point timelapse" msgstr "最遠点タイムラプス" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "ワイプタワー"; align it once the term is settled. msgid "When enabled, the timelapse snapshot is taken at the farthest point from camera instead of traveling to the wipe tower or excess chute. Only effective in traditional timelapse mode on non-I3 printers." msgstr "有効にすると、ワイプタワーや排出シュートへ移動する代わりに、カメラから最も遠い点でタイムラプスのスナップショットを撮影します。I3系以外のプリンターの従来型タイムラプスモードでのみ有効です。" @@ -19468,6 +19635,7 @@ msgid "Wipe tower type" msgstr "ワイプタワータイプ" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "ワイプタワー"; align it once the term is settled. msgid "Choose the wipe tower implementation for multi-material prints. Type 1 is recommended for Bambu and Qidi printers with a filament cutter. Type 2 offers better compatibility with multi-tool and MMU printers and provide overall better compatibility." msgstr "マルチマテリアル印刷でのワイプタワーの実装方式を選択します。フィラメントカッターを備えたBambuおよびQidiのプリンターにはタイプ1をおすすめします。タイプ2はマルチツールおよびMMUプリンターとの互換性が高く、全体的により良い互換性が得られます。" @@ -19478,10 +19646,12 @@ msgid "Type 2" msgstr "タイプ2" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "プライムタワー"; align it once the term is settled. msgid "Purge in prime tower" msgstr "プライムタワーでフラッシュ" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "プライムタワー"; align it once the term is settled. msgid "Purge remaining filament into prime tower." msgstr "残ったフィラメントをプライムタワーにフラッシュします。" @@ -19489,18 +19659,22 @@ msgid "Enable filament ramming" msgstr "フィラメントラミングを有効にする" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "ワイプタワー"; align it once the term is settled. msgid "Tool change on wipe tower" msgstr "ワイプタワー上でツール交換" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "ワイプタワー"; align it once the term is settled. msgid "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead." msgstr "ツール交換コマンド (Tx) を発行する前に、ツールヘッドを強制的にワイプタワーへ移動させます。タイプ2のワイプタワーを使用するマルチ押出機 (マルチツールヘッド) プリンターにのみ関係します。デフォルトでは、マルチツールヘッド機ではファームウェアがヘッドの交換を処理するためOrcaは移動をスキップしますが、その結果Txコマンドが造形物の上で発行される場合があります。ツール交換を常にワイプタワーの上で発行したい場合は、このオプションを有効にしてください。" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "ワイプタワー"; align it once the term is settled. msgid "Wait for temperature on wipe tower" msgstr "ワイプタワーで温度待機" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "ワイプタワー"; align it once the term is settled. msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command." msgstr "印刷温度に達するのを待たずに新しいツールを取り付け、ワイプタワーへ移動し、パージ直前にそこで温度を待ちます。加熱中の垂れ出しはモデルではなくタワーに落ち、移動時間が加熱と重なります。タイプ 2 のワイプタワーを使用するマルチ押出機 (マルチツールヘッド) プリンターでのみ有効です。ファームウェアやツール交換マクロ側で温度待機を行わないようにしてください。無効の場合、温度待機はツール交換コマンドの直後に出力されます。" @@ -19509,6 +19683,7 @@ msgid "No sparse layers (beta)" msgstr "スパース層なし (ベータ)" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "ワイプタワー"; align it once the term is settled. msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower, so the tower ends up below the model and the toolhead has to reach down to it. Layouts where that would collide with an already printed object are rejected. Has no effect with smooth timelapse or clumping detection, which need a tower on every layer." msgstr "有効にすると、ツール交換のない積層ではワイプタワーを造形しません。ツール交換のある積層では押出機が下降してワイプタワーを造形するため、タワーはモデルより下に位置し、ツールヘッドがそこまで下りる必要があります。造形済みのオブジェクトと衝突するような配置は拒否されます。全積層にタワーが必要なスムーズタイムラプスやノズル付着検出では効果がありません。" @@ -19517,6 +19692,7 @@ msgid "Combine sparse layers" msgstr "スパース層を結合" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "プライムタワー"; align it once the term is settled. msgid "" "If enabled, consecutive layers on which the prime tower has no filament change are printed as a single thicker tower layer instead of one thin layer each, the same way infill combination merges sparse infill. The merged layer is printed at the top of the run, at the height of everything it covers.\n" "\n" @@ -19837,6 +20013,7 @@ msgid "Independent support layer height" msgstr "独立サポート層ピッチ" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "プライムタワー"; align it once the term is settled. msgid "Support layer uses layer height independent with object layer. This is to support customizing Z-gap and save print time. This option will be invalid when the prime tower is enabled." msgstr "サポート層はオブジェクトの層とは独立した積層ピッチを使用します。これはZ隙間のカスタマイズと印刷時間の短縮のためです。プライムタワーが有効な場合、このオプションは無効になります。" @@ -20007,7 +20184,7 @@ msgid "Enable belt purge tower" msgstr "ベルトパージタワーを有効にする" # AI Translated -# Needs human review: Glossary cell for Prime tower / Wipe tower is unsettled; 'wipe/prime tower' and 'wipe tower' rendered as プライムタワー. +# Needs human review: Glossary cell for Prime tower / Wipe tower is unsettled; 'wipe/prime tower' and 'wipe tower' rendered as プライムタワー msgid "Belt-printer replacement for the wipe/prime tower. When enabled on a belt printer, a purge prism is automatically generated next to the printed parts and filament-change purging is routed into it (the classic wipe tower cannot be used on belt printers because its G-code bypasses the belt transform). Only available on belt printers." msgstr "ベルトプリンター用のプライムタワーの代替です。ベルトプリンターで有効にすると、印刷するパーツの横にパージ用の角柱が自動生成され、フィラメント交換時のフラッシュはそこで行われます (従来のプライムタワーはG-codeがベルト変換を経由しないため、ベルトプリンターでは使用できません)。ベルトプリンターでのみ使用できます。" @@ -20016,7 +20193,7 @@ msgid "Belt purge tower width" msgstr "ベルトパージタワーの幅" # AI Translated -# Needs human review: Glossary cell for Prime tower / Wipe tower is unsettled; 'classic wipe tower' rendered as 従来のプライムタワー. +# Needs human review: Glossary cell for Prime tower / Wipe tower is unsettled; 'classic wipe tower' rendered as 従来のプライムタワー msgid "Width (machine X, across the belt) of the purge prism that is automatically generated on belt printers when the belt purge tower is enabled and multiple filaments are used. Filament-change purging is routed into this prism's extrusions instead of a classic wipe tower. Its height is computed automatically from the worst-case purge volume per layer: a wider prism results in a shorter one." msgstr "ベルトパージタワーが有効で複数のフィラメントを使用する場合に、ベルトプリンターで自動生成されるパージ用の角柱の幅 (マシンのX方向、ベルトを横切る方向) です。フィラメント交換時のフラッシュは、従来のプライムタワーではなくこの角柱の押し出しで行われます。高さは積層ごとの最大フラッシュ量から自動的に計算され、角柱を広くするほど低くなります。" @@ -20282,6 +20459,7 @@ msgid "Enable mixed color sublayer splitting. When enabled, layers containing mi msgstr "混色サブレイヤーへの分割を有効にします。有効にすると、混色フィラメントを含む積層がサブレイヤーに分割され、色を混ぜる効果が得られます。" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "ワイプタワー"; align it once the term is settled. msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects." msgstr "ワイプタワーは、ノズルに残った樹脂を除去し、ノズル内のチャンバー圧力を安定させることで、オブジェクト印刷時の外観不良を防ぐために使用できます。" @@ -20319,6 +20497,7 @@ msgid "Prime volume mode" msgstr "プライム容量モード" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "ワイプタワー"; align it once the term is settled. msgid "Selects how the wipe-tower prime and flush volumes are computed on multi-extruder printers." msgstr "マルチ押出機プリンターで、ワイプタワーのプライム量とフラッシュ量をどのように計算するかを選択します。" @@ -20349,45 +20528,48 @@ msgid "Angle at the apex of the cone that is used to stabilize the wipe tower. L msgstr "ワイプタワーを安定させるために使用される円錐の頂点の角度。角度が大きいと底面が広くなります。" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "ワイプタワー"; align it once the term is settled. msgid "Maximum wipe tower print speed" msgstr "ワイプタワーの最大印刷速度" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "ワイプタワー"; align it once the term is settled. msgid "" "The maximum print speed when purging in the wipe tower and printing the wipe tower sparse layers. When purging, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" "\n" -"When printing the sparse layers, if the internal perimeter speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +"When printing the sparse layers, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" "\n" "Increasing this speed may affect the tower's stability as well as increase the force with which the nozzle collides with any blobs that may have formed on the wipe tower.\n" "\n" "Before increasing this parameter beyond the default of 90 mm/s, make sure your printer can reliably bridge at the increased speeds and that ooze when tool changing is well controlled.\n" "\n" -"For the wipe tower external perimeters the internal perimeter speed is used regardless of this setting." +"For the wipe tower external perimeters the internal perimeter speed is used, also limited by this setting." msgstr "" "ワイプタワーでのパージ時、およびワイプタワーのスパース層を印刷する際の最大印刷速度です。パージ時に、スパース インフィル速度やフィラメントの最大体積速度から計算された速度の方が低い場合は、最も低い速度が使用されます。\n" "\n" -"スパース層の印刷時に、内周速度やフィラメントの最大体積速度から計算された速度の方が低い場合は、最も低い速度が使用されます。\n" +"スパース層の印刷時に、スパース インフィル速度やフィラメントの最大体積速度から計算された速度の方が低い場合は、最も低い速度が使用されます。\n" "\n" "この速度を上げるとタワーの安定性に影響する可能性があり、ワイプタワーにできたブロブにノズルが衝突する際の力も大きくなります。\n" "\n" "このパラメータをデフォルトの90 mm/sより大きくする前に、上げた速度でもプリンターが安定してブリッジでき、ツール交換時の垂れ出しが十分に制御できていることを確認してください。\n" "\n" -"ワイプタワーの外周には、この設定に関わらず内周の速度が使用されます。" +"ワイプタワーの外周には内周の速度が使用され、この設定による上限も受けます。" msgid "Wall type" msgstr "壁タイプ" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "ワイプタワー"; align it once the term is settled. msgid "" "Wipe tower outer wall type.\n" -"1. Rectangle: The default wall type, a rectangle with fixed width and height.\n" +"1. Rectangle: A rectangle with fixed width and height.\n" "2. Cone: A cone with a fillet at the bottom to help stabilize the wipe tower.\n" -"3. Rib: Adds four ribs to the tower wall for enhanced stability." +"3. Rib: The default wall type, which adds four ribs to the tower wall for enhanced stability." msgstr "" "ワイプタワーの外壁タイプです。\n" -"1. 長方形: デフォルトの壁タイプで、幅と高さが固定された長方形です。\n" +"1. 長方形: 幅と高さが固定された長方形です。\n" "2. コーン: 底部にフィレットを持つ円錐形で、ワイプタワーの安定に役立ちます。\n" -"3. リブ: タワーの壁に4本のリブを追加して安定性を高めます。" +"3. リブ: デフォルトの壁タイプで、タワーの壁に4本のリブを追加して安定性を高めます。" msgid "Rectangle" msgstr "長方形" @@ -20412,6 +20594,7 @@ msgid "Fillet wall" msgstr "フィレット壁" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "プライムタワー"; align it once the term is settled. msgid "The wall of prime tower will fillet." msgstr "プライムタワーの壁にフィレットを付けます。" @@ -20428,6 +20611,7 @@ msgid "Skip points" msgstr "スキップポイント" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "プライムタワー"; align it once the term is settled. msgid "The wall of prime tower will skip the start points of wipe path." msgstr "プライムタワーの壁は、ワイプパスの開始点をスキップします。" @@ -20435,6 +20619,7 @@ msgid "Enable tower interface features" msgstr "タワーインターフェース機能を有効にする" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "プライムタワー"; align it once the term is settled. msgid "Enable optimized prime tower interface behavior when different materials meet." msgstr "異なる材料が接する際のプライムタワーのインターフェース動作を最適化します。" @@ -20442,6 +20627,7 @@ msgid "Cool down from interface boost during prime tower" msgstr "プライムタワー中のインターフェースブーストからの冷却" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "プライムタワー"; align it once the term is settled. msgid "When interface-layer temperature boost is active, set the nozzle back to print temperature at the start of the prime tower so it cools down during the tower." msgstr "インターフェース層の温度ブーストが有効な場合、プライムタワーの開始時にノズルを印刷温度に戻し、タワーの印刷中に冷えるようにします。" @@ -20455,6 +20641,7 @@ msgid "Purging after filament change will be done inside objects' infills. This msgstr "廃料をオブジェクトのインフィルに使用されます。フィラメントの廃料が減り、造形時間も短縮できます。ただ、壁面の色が透明又は薄い場合は中の色が見えてしまう可能性があります。" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "プライムタワー"; align it once the term is settled. msgid "Purging after filament change will be done inside objects' support. This may lower the amount of waste and decrease the print time. It will not take effect unless a prime tower is enabled." msgstr "フィラメント交換後のパージをオブジェクトのサポート内で行います。廃棄量が減り、造形時間も短縮できます。プライムタワーが有効な場合にのみ機能します。" @@ -20484,8 +20671,10 @@ msgstr "ワイプタワーのパージラインの間隔。" msgid "Extra flow for purging" msgstr "パージ用の余分の量" -msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker or narrower than they normally would be. The spacing is adjusted automatically." -msgstr "ワイプタワーのパージラインで使用される余分の量。 これによって、パージラインが通常よりも太くなったり、細くなったりします。 間隔は自動的に調整されます。" +# AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "ワイプタワー"; align it once the term is settled. +msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker than they normally would be. The spacing is adjusted automatically." +msgstr "ワイプタワーのパージラインで使用される余分の量。 これによって、パージラインが通常よりも太くなります。 間隔は自動的に調整されます。" msgid "Idle temperature" msgstr "アイドリング温度" @@ -20572,6 +20761,7 @@ msgid "Use relative E distances" msgstr "相対E距離を使用" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "ワイプタワー"; align it once the term is settled. msgid "Relative extrusion is recommended when using \"label_objects\" option. Some extruders work better with this option unchecked (absolute extrusion mode). Wipe tower is only compatible with relative mode. It is recommended on most printers. Default is checked." msgstr "「label_objects」オプションを使用する場合は相対押出をおすすめします。押出機によっては、このオプションのチェックを外した方 (絶対押出モード) がうまく動作します。ワイプタワーは相対モードにのみ対応しています。ほとんどのプリンターで推奨されます。デフォルトはチェックありです。" @@ -20621,13 +20811,13 @@ msgstr "最小壁長さ" # AI Translated msgid "" -"Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. Higher values remove more and longer walls.\n" +"Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. The value is a multiple of the wall width. Higher values remove more and longer walls.\n" "\n" -"NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the Advanced settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." +"NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the 'Walls and surfaces' settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." msgstr "" -"短く閉じていない壁が印刷されて印刷時間が増えるのを防ぐため、この値を調整します。値を大きくすると、より多くの、より長い壁が取り除かれます。\n" +"短く閉じていない壁が印刷されて印刷時間が増えるのを防ぐため、この値を調整します。値は壁幅の倍数です。値を大きくすると、より多くの、より長い壁が取り除かれます。\n" "\n" -"注意: モデル外側に視覚的な隙間が生じるのを防ぐため、底面と上面はこの値の影響を受けません。上面と見なす判定の感度は、下の詳細設定にある「1本壁のしきい値」で調整してください。「1本壁のしきい値」は、この設定がデフォルト値の0.5より大きい場合、または上面1本壁が有効な場合にのみ表示されます。" +"注意: モデル外側に視覚的な隙間が生じるのを防ぐため、底面と上面はこの値の影響を受けません。上面と見なす判定の感度は、下の「壁と表面」の設定にある「1壁しきい値」で調整してください。「1壁しきい値」は、この設定がデフォルト値の0.5より大きい場合、または「トップ面に1層」が有効な場合にのみ表示されます。" # AI Translated msgid "Maximum wall resolution" @@ -21345,6 +21535,7 @@ msgid "Total wipe tower cost" msgstr "ワイプタワーのトータルコスト" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "ワイプタワー"; align it once the term is settled. msgid "Total cost of the material wasted on the wipe tower. Calculated from filament_cost value in Filament Settings." msgstr "ワイプタワーで無駄になる材料の総コストです。フィラメント設定のfilament_cost値から計算されます。" @@ -21480,6 +21671,7 @@ msgid "Size of the print bed bounding box" msgstr "プリントベッド境界ボックスのサイズ" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "ワイプタワー"; align it once the term is settled. msgid "First layer center without wipe tower" msgstr "ワイプタワーを除いた1層目の中心" @@ -24737,9 +24929,6 @@ msgstr "スマートフィラメント割り当てを有効にする: 1つのフ msgid "File Saving" msgstr "ファイル保存" -msgid "Don't remind me again" -msgstr "再度通知しない" - msgid "No further pop-up will appear. You can reopen it in 'Preferences'" msgstr "今後ポップアップは表示されません。「設定」から再度開くことができます" @@ -35265,6 +35454,181 @@ msgstr "" "反りを避ける\n" "ABSのような反りやすい素材を印刷する場合、ヒートベッドの温度を適切に上げることで、反りが発生する確率を下げることができることをご存知ですか?" +# AI Translated +#~ msgid "" +#~ "Line width of the Bridge. If expressed as a %, it will be computed over the nozzle diameter.\n" +#~ "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" +#~ "\n" +#~ "The maximum value is 100% or the nozzle diameter.\n" +#~ "If set to 0, the line width will match the Internal solid infill width." +#~ msgstr "" +#~ "ブリッジのライン幅です。%で指定した場合、ノズル径に対して計算されます。\n" +#~ "ブリッジ密度やブリッジ流量比を高めに設定して使用することをおすすめします。\n" +#~ "\n" +#~ "最大値は100%またはノズル径です。\n" +#~ "0に設定すると、ライン幅は内部ソリッドインフィルの幅と同じになります。" + +# AI Translated +#, no-c-format, no-boost-format +#~ msgid "" +#~ "Enable this option to slow down printing in areas where perimeters may have curled upwards.\n" +#~ "For example, additional slowdown will be applied when printing overhangs on sharp corners like the front of the Benchy hull, reducing curling which compounds over multiple layers.\n" +#~ "\n" +#~ "It is generally recommended to have this option switched on unless your printer cooling is powerful enough or the print speed is slow enough that perimeter curling does not happen. \n" +#~ "If printing with a high external perimeter speed, this parameter may introduce wall artifacts when slowing down, due to the potentially large variance in print speeds causing the extruder to be unable to keep up with the requested flow change.\n" +#~ "Root cause of these artifacts is most likely PA tuning being slightly off, especially when combined with a high PA smooth time.\n" +#~ "\n" +#~ "Recommendations when enabling this option:\n" +#~ "1. Reduce Pressure Advance smooth time to 0.015 - 0.02 so the extruder reacts quickly to the speed changes.\n" +#~ "2. Increase the minimum print speeds to limit the magnitude of the slowdown and reduce the variance between fast and slow segments.\n" +#~ "3. If artifacts still appear, enable Extrusion Rate Smoothing (ERS) to further smooth the flow transitions.\n" +#~ "\n" +#~ "Note: When this option is enabled, overhang perimeters are treated like overhangs, meaning the overhang speed is applied even if the overhanging perimeter is part of a bridge.\n" +#~ "For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 100% overhang speed will be applied." +#~ msgstr "" +#~ "外周が上向きにカールしている可能性がある領域で、印刷を減速させる場合にこのオプションを有効にします。\n" +#~ "例えば、Benchyの船首のような鋭角部のオーバーハングを印刷する際に追加の減速が適用され、複数の層にわたって蓄積するカールを抑えられます。\n" +#~ "\n" +#~ "プリンターの冷却が十分に強力であるか、印刷速度が十分に遅く外周のカールが起きない場合を除き、通常はこのオプションを有効にすることをおすすめします。 \n" +#~ "外壁速度が高い状態で印刷している場合、印刷速度の差が大きくなり押出機が要求された流量変化に追随できなくなるため、減速時に壁面のアーティファクトが生じることがあります。\n" +#~ "これらのアーティファクトの根本原因は、多くの場合PAの調整がわずかにずれていることであり、特にPAスムーズ時間が長い場合に顕著です。\n" +#~ "\n" +#~ "このオプションを有効にする際の推奨事項:\n" +#~ "1. Pressure Advanceのスムーズ時間を0.015〜0.02に下げ、押出機が速度変化に素早く反応するようにします。\n" +#~ "2. 最小印刷速度を上げて減速の幅を抑え、速い区間と遅い区間の差を小さくします。\n" +#~ "3. それでもアーティファクトが出る場合は、Extrusion Rate Smoothing (ERS) を有効にして流量の遷移をさらに滑らかにします。\n" +#~ "\n" +#~ "注意: このオプションを有効にすると、オーバーハング外周はオーバーハングとして扱われるため、オーバーハングする外周がブリッジの一部であってもオーバーハング速度が適用されます。\n" +#~ "例えば、外周が100%オーバーハングで下に支える壁がない場合、100%オーバーハング時の速度が適用されます。" + +# AI Translated +#~ msgid "" +#~ "Speed of the externally visible bridge extrusions.\n" +#~ "\n" +#~ "In addition, if Slow down for curled perimeters is disabled or Classic overhang mode is enabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." +#~ msgstr "" +#~ "外部から見えるブリッジ押出の速度です。\n" +#~ "\n" +#~ "さらに、「カールした外周で減速」が無効、またはクラシックオーバーハングモードが有効な場合、ブリッジかオーバーハングかに関わらず、支持率13%未満のオーバーハング壁の印刷速度になります。" + +# AI Translated +#~ msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above. Set to zero for auto." +#~ msgstr "この個別の設定は、半径がsmall_perimeter_threshold以下の外周 (通常は穴) の速度に影響します。パーセント (例: 80%) で指定した場合、上の外壁速度の設定を基準に計算されます。自動にするには0を設定してください。" + +# AI Translated +#~ msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above. Set to zero for auto." +#~ msgstr "「小さな外周」と同様ですが、サポート用です。この個別の設定は、`small_support_perimeter_threshold`以下の領域のサポート速度に影響します。パーセント (例: 80%) で指定した場合、上のサポートまたはサポートインターフェースの速度設定を基準に計算されます。自動にするには0を設定してください。" + +# AI Translated +#~ msgid "" +#~ "Print sequence of the internal (inner) and external (outer) walls.\n" +#~ "\n" +#~ "Use Inner/Outer for best overhangs. This is because the overhanging walls can adhere to a neighbouring perimeter while printing. However, this option results in slightly reduced surface quality as the external perimeter is deformed by being squashed to the internal perimeter.\n" +#~ "\n" +#~ "Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended against the Outer/Inner option in most cases.\n" +#~ "\n" +#~ "Use Outer/Inner for the same external wall quality and dimensional accuracy benefits of Inner/Outer/Inner option. However, the Z seams will appear less consistent as the first extrusion of a new layer starts on a visible surface." +#~ msgstr "" +#~ "内壁と外壁の印刷順序です。\n" +#~ "\n" +#~ "オーバーハングを最良にするには内壁→外壁を使用します。オーバーハングする壁が印刷中に隣接する外周に密着できるためです。ただし、外周が内周に押し付けられて変形するため、表面品質はわずかに低下します。\n" +#~ "\n" +#~ "外面の仕上がりと寸法精度を最良にするには内壁→外壁→内壁を使用します。外壁が内周に乱されずに印刷されるためです。ただし、外壁を印刷する際に支えとなる内周がないため、オーバーハング性能は低下します。このオプションは3本目以降の内壁を先に印刷し、次に外壁、最後に1本目の内壁を印刷するため、効果を得るには最低3本の壁が必要です。多くの場合、外壁→内壁よりこのオプションをおすすめします。\n" +#~ "\n" +#~ "外壁→内壁は内壁→外壁→内壁と同様に外壁の品質と寸法精度の利点がありますが、新しい層の最初の押出が見える面から始まるため、Zシームの一貫性が低く見えます。" + +#~ msgid "This is the speed for the first layer except for solid infill sections." +#~ msgstr "1層目を造形時に、ソリッド インフィル以外の部分の造形速度です。" + +#~ msgid "This is the speed for solid infill parts of the first layer." +#~ msgstr "1層目のソリッド インフィルの造形速度です。" + +# AI Translated +#, no-c-format, no-boost-format +#~ msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to line width of sparse infill. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." +#~ msgstr "インフィル領域をわずかに広げて壁面と重ねることで、接着を改善します。パーセント値はスパース インフィルのライン幅に対する相対値です。過剰押出や材料の蓄積による上面のざらつきを最小限に抑えるには、この値を10〜15%程度に設定します。" + +# AI Translated +#, no-c-format, no-boost-format +#~ msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to line width of sparse infill." +#~ msgstr "上面ソリッドインフィルの領域をわずかに広げて壁面と重ねることで、接着を改善し、上面インフィルと壁面の境目にできるピンホールを目立たなくします。25〜30%が良い出発点で、ピンホールを目立たなくできます。パーセント値はスパース インフィルのライン幅に対する相対値です。" + +#~ msgid "Interlocking depth of a segmented region. It will be ignored if \"mmu_segmented_region_max_width\" is zero or if \"mmu_segmented_region_interlocking_depth\" is bigger than \"mmu_segmented_region_max_width\". Zero disables this feature." +#~ msgstr "セグメント化された領域の連動深さ。mmu_segmented_region_max_width \"が0か、\"mmu_segmented_region_interlocking_depth \"が \"mmu_segmented_region_max_width \"より大きい場合は無視される。ゼロはこの機能を無効にする。" + +# AI Translated +#~ msgid "" +#~ "Reduce the height of top-surface perimeters to match the model edge height.\n" +#~ "Affects perimeters with a slope less than this angle (degrees).\n" +#~ "A reasonable value is 35. Set to 0 to disable." +#~ msgstr "" +#~ "上面の外周の高さを下げて、モデルの縁の高さに合わせます。\n" +#~ "この角度 (度) 未満の傾斜を持つ外周に影響します。\n" +#~ "35程度が妥当な値です。0にすると無効になります。" + +# AI Translated +#~ msgid "Role base wipe speed" +#~ msgstr "ロール基準のワイプ速度" + +# AI Translated +#~ msgid "" +#~ "A draft shield is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft. It is usually needed only with open frame printers, i.e. without an enclosure.\n" +#~ "\n" +#~ "Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used.\n" +#~ "Note: With the draft shield active, the skirt will be printed at skirt distance from the object. Therefore, if brims are active it may intersect with them. To avoid this, increase the skirt distance value.\n" +#~ msgstr "" +#~ "保護シールドは、ABSやASAの印刷物が風によって反ったりベッドから剥がれたりするのを防ぐのに役立ちます。通常はエンクロージャーのないオープンフレームのプリンターでのみ必要です。\n" +#~ "\n" +#~ "有効 = スカートは最も高い印刷オブジェクトと同じ高さになります。それ以外の場合は「スカートの高さ」が使用されます。\n" +#~ "注意: 保護シールドが有効な場合、スカートはオブジェクトからスカート距離だけ離して印刷されます。そのため、ブリムが有効だと交差する可能性があります。これを避けるには、スカート距離の値を大きくしてください。\n" + +# AI Translated +#~ msgid "" +#~ "The maximum print speed when purging in the wipe tower and printing the wipe tower sparse layers. When purging, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +#~ "\n" +#~ "When printing the sparse layers, if the internal perimeter speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +#~ "\n" +#~ "Increasing this speed may affect the tower's stability as well as increase the force with which the nozzle collides with any blobs that may have formed on the wipe tower.\n" +#~ "\n" +#~ "Before increasing this parameter beyond the default of 90 mm/s, make sure your printer can reliably bridge at the increased speeds and that ooze when tool changing is well controlled.\n" +#~ "\n" +#~ "For the wipe tower external perimeters the internal perimeter speed is used regardless of this setting." +#~ msgstr "" +#~ "ワイプタワーでのパージ時、およびワイプタワーのスパース層を印刷する際の最大印刷速度です。パージ時に、スパース インフィル速度やフィラメントの最大体積速度から計算された速度の方が低い場合は、最も低い速度が使用されます。\n" +#~ "\n" +#~ "スパース層の印刷時に、内周速度やフィラメントの最大体積速度から計算された速度の方が低い場合は、最も低い速度が使用されます。\n" +#~ "\n" +#~ "この速度を上げるとタワーの安定性に影響する可能性があり、ワイプタワーにできたブロブにノズルが衝突する際の力も大きくなります。\n" +#~ "\n" +#~ "このパラメータをデフォルトの90 mm/sより大きくする前に、上げた速度でもプリンターが安定してブリッジでき、ツール交換時の垂れ出しが十分に制御できていることを確認してください。\n" +#~ "\n" +#~ "ワイプタワーの外周には、この設定に関わらず内周の速度が使用されます。" + +# AI Translated +#~ msgid "" +#~ "Wipe tower outer wall type.\n" +#~ "1. Rectangle: The default wall type, a rectangle with fixed width and height.\n" +#~ "2. Cone: A cone with a fillet at the bottom to help stabilize the wipe tower.\n" +#~ "3. Rib: Adds four ribs to the tower wall for enhanced stability." +#~ msgstr "" +#~ "ワイプタワーの外壁タイプです。\n" +#~ "1. 長方形: デフォルトの壁タイプで、幅と高さが固定された長方形です。\n" +#~ "2. コーン: 底部にフィレットを持つ円錐形で、ワイプタワーの安定に役立ちます。\n" +#~ "3. リブ: タワーの壁に4本のリブを追加して安定性を高めます。" + +#~ msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker or narrower than they normally would be. The spacing is adjusted automatically." +#~ msgstr "ワイプタワーのパージラインで使用される余分の量。 これによって、パージラインが通常よりも太くなったり、細くなったりします。 間隔は自動的に調整されます。" + +# AI Translated +#~ msgid "" +#~ "Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. Higher values remove more and longer walls.\n" +#~ "\n" +#~ "NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the Advanced settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." +#~ msgstr "" +#~ "短く閉じていない壁が印刷されて印刷時間が増えるのを防ぐため、この値を調整します。値を大きくすると、より多くの、より長い壁が取り除かれます。\n" +#~ "\n" +#~ "注意: モデル外側に視覚的な隙間が生じるのを防ぐため、底面と上面はこの値の影響を受けません。上面と見なす判定の感度は、下の詳細設定にある「1本壁のしきい値」で調整してください。「1本壁のしきい値」は、この設定がデフォルト値の0.5より大きい場合、または上面1本壁が有効な場合にのみ表示されます。" + # AI Translated #, boost-format #~ msgid "Split into %1% part" diff --git a/localization/i18n/ko/OrcaSlicer_ko.po b/localization/i18n/ko/OrcaSlicer_ko.po index d608a03280..fc640dba0e 100644 --- a/localization/i18n/ko/OrcaSlicer_ko.po +++ b/localization/i18n/ko/OrcaSlicer_ko.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-10-13 09:55-0300\n" +"POT-Creation-Date: 2026-10-14 10:04-0300\n" "PO-Revision-Date: 2025-06-02 17:12+0900\n" "Last-Translator: crwusiz \n" "Language-Team: \n" @@ -2443,6 +2443,66 @@ msgstr "네트워크 플러그인 제한" msgid "Privacy Policy Update" msgstr "개인 정보 보호 정책 업데이트" +# AI Translated +msgid "All your filament presets are available on the printers they were made for." +msgstr "모든 필라멘트 사전 설정을 대상 프린터에서 사용할 수 있습니다." + +# AI Translated +msgid "Migrate Filament Presets" +msgstr "필라멘트 사전 설정 이전" + +# AI Translated +msgid "" +"OrcaSlicer 2.5.0 restructured many system filament presets to fix incorrect profiles and prepare for future features. As a result, the presets below no longer show on some printers they were made for. Sorry for the trouble; this is a one-time fix.\n" +"\n" +"Add those printers back to your presets now? Your presets are backed up first. You can also do this later from Help > Migrate Filament Presets." +msgstr "" +"OrcaSlicer 2.5.0에서는 잘못된 프로파일을 바로잡고 향후 기능에 대비하기 위해 많은 시스템 필라멘트 사전 설정의 구조를 개편했습니다. 그 결과 아래 사전 설정이 원래 대상이었던 일부 프린터에 더 이상 표시되지 않습니다. 불편을 드려 죄송합니다. 이는 한 번만 적용되는 수정입니다.\n" +"\n" +"지금 해당 프린터를 사전 설정에 다시 추가하시겠습니까? 사전 설정은 먼저 백업됩니다. 나중에 도움말 > 필라멘트 사전 설정 이전 메뉴에서도 할 수 있습니다." + +# AI Translated +#, boost-format +msgid "%1% (based on %2%)" +msgstr "%1% (%2% 기반)" + +msgid "Don't remind me again" +msgstr "다시 알리지 마세요" + +# AI Translated +msgid "Your presets could not be backed up, so they were not migrated." +msgstr "사전 설정을 백업하지 못해 이전하지 않았습니다." + +# AI Translated +msgid "The user presets folder could not be locked, so nothing was migrated. Another OrcaSlicer instance may be saving presets; try again later from Help > Migrate Filament Presets." +msgstr "사용자 사전 설정 폴더를 잠그지 못해 아무것도 이전하지 않았습니다. 다른 OrcaSlicer 인스턴스가 사전 설정을 저장 중일 수 있습니다. 나중에 도움말 > 필라멘트 사전 설정 이전 메뉴에서 다시 시도하십시오." + +# AI Translated +#, boost-format +msgid "" +"Your filament presets could not be migrated. A backup of your presets was saved to:\n" +"%1%" +msgstr "" +"필라멘트 사전 설정을 이전하지 못했습니다. 사전 설정 백업이 다음 위치에 저장되었습니다:\n" +"%1%" + +# AI Translated +#, boost-format +msgid "" +"Your filament presets were migrated. Select them again in the filament list where you used them.\n" +"\n" +"A backup of your presets was saved to:\n" +"%1%" +msgstr "" +"필라멘트 사전 설정을 이전했습니다. 사용하던 필라멘트 목록에서 다시 선택하십시오.\n" +"\n" +"사전 설정 백업이 다음 위치에 저장되었습니다:\n" +"%1%" + +# AI Translated +msgid "These presets could not be migrated:" +msgstr "다음 사전 설정을 이전하지 못했습니다:" + # AI Translated #, c-format, boost-format msgid "your Orca Cloud profile (user ID: \"%s\")" @@ -2645,8 +2705,9 @@ msgstr "채우기" msgid "Support" msgstr "서포트" +# AI Translated msgid "Flush options" -msgstr "버리기 옵션" +msgstr "플러시 옵션" msgid "Speed" msgstr "속도" @@ -2917,17 +2978,21 @@ msgstr "출력 가능 영역에 맞게 확장" msgid "Scale an object to fit the build volume" msgstr "출력 가능 영역에 맞게 객체 크기 조정" +# AI Translated msgid "Flush Options" -msgstr "버리기 옵션" +msgstr "플러시 옵션" +# AI Translated msgid "Flush into objects' infill" -msgstr "객체의 채우기에서 버리기" +msgstr "객체의 채우기에서 플러시" +# AI Translated msgid "Flush into this object" -msgstr "객체에서 버리기" +msgstr "객체에서 플러시" +# AI Translated msgid "Flush into objects' support" -msgstr "객체의 서포트에서 버리기" +msgstr "객체의 서포트에서 플러시" msgid "Edit in Parameter Table" msgstr "객체/부품 설정에서 편집" @@ -3173,6 +3238,63 @@ msgstr "(색상 손실)" msgid "Center" msgstr "중앙" +# AI Translated +msgid "Distribute left-right" +msgstr "좌우 균등 분배" + +# AI Translated +msgid "Distribute front-back" +msgstr "앞뒤 균등 분배" + +# AI Translated +msgid "Distribute top-bottom" +msgstr "상하 균등 분배" + +# AI Translated +msgid "Align left" +msgstr "왼쪽 정렬" + +# AI Translated +msgid "Align left-right center" +msgstr "좌우 중앙 정렬" + +# AI Translated +msgid "Align right" +msgstr "오른쪽 정렬" + +# AI Translated +msgid "Align front" +msgstr "앞쪽 정렬" + +# AI Translated +msgid "Align front-back center" +msgstr "앞뒤 중앙 정렬" + +# AI Translated +msgid "Align back" +msgstr "뒤쪽 정렬" + +# AI Translated +msgid "Align bottom" +msgstr "아래쪽 정렬" + +# AI Translated +msgid "Align top-bottom center" +msgstr "상하 중앙 정렬" + +# AI Translated +msgid "Align top" +msgstr "위쪽 정렬" + +# AI Translated +# Needs human review: 정렬 is also this catalog's rendering of Arrange; check the submenu in the object right-click menu is not mistaken for Arrange. +msgid "Align/Distribute" +msgstr "정렬/분배" + +# AI Translated +msgid "Align and distribute objects" +msgstr "객체 정렬 및 분배" + msgid "Drop" msgstr "내리기" @@ -3833,8 +3955,9 @@ msgstr "새로운 필라멘트를 압출기에 밀어 넣습니다" msgid "Grab new filament" msgstr "새 필라멘트 가져오기" +# AI Translated msgid "Purge old filament" -msgstr "오래된 필라멘트 제거" +msgstr "이전 필라멘트 플러시" msgid "Confirm extruded" msgstr "압출 확인" @@ -5915,8 +6038,9 @@ msgstr "모든 플레이트 통계" msgid "Display" msgstr "표시" +# AI Translated msgid "Flushed" -msgstr "버리기" +msgstr "플러시" msgid "Tower" msgstr "타워" @@ -6517,8 +6641,9 @@ msgstr "PLA와 PETG 필라멘트의 혼합이 감지되었습니다. 인쇄 품 msgid "The prime tower extends beyond the plate boundary." msgstr "프라임 타워가 플레이트 경계를 초과합니다." +# AI Translated msgid "Partial flushing volume set to 0. Multi-color printing may cause color mixing in models. Please readjust flushing settings." -msgstr "부분 플러싱 볼륨이 0으로 설정되었습니다. 멀티컬러 인쇄 시 모델에 색상 혼합이 발생할 수 있습니다. 플러싱 설정을 재조정하세요." +msgstr "부분 플러시 볼륨이 0으로 설정되었습니다. 멀티컬러 출력 시 모델에 색상 혼합이 발생할 수 있습니다. 플러시 설정을 재조정하세요." msgid "Click Wiki for help." msgstr "도움말은 위키를 클릭하세요." @@ -6526,8 +6651,9 @@ msgstr "도움말은 위키를 클릭하세요." msgid "Click here to regroup" msgstr "재그룹핑하려면 여기를 클릭하세요" +# AI Translated msgid "Flushing Volume" -msgstr "플러싱 볼륨" +msgstr "플러시 볼륨" msgid "Calibration step selection" msgstr "교정 단계 선택" @@ -6687,6 +6813,10 @@ msgstr "설정 마법사" msgid "Show Configuration Folder" msgstr "설정 폴더 열기" +# AI Translated +msgid "Bring back filament presets that a profile update removed from printers they were made for" +msgstr "프로파일 업데이트로 대상 프린터에서 제거된 필라멘트 사전 설정을 복원합니다" + # AI Translated msgid "Troubleshoot Center" msgstr "문제 해결 센터" @@ -8926,8 +9056,9 @@ msgstr "프로젝트 필라멘트" msgid "Purge mode" msgstr "플러시 모드" +# AI Translated msgid "Flushing volumes" -msgstr "버리기 볼륨" +msgstr "플러시 볼륨" msgid "Add one filament" msgstr "필라멘트 한개 추가" @@ -10343,7 +10474,7 @@ msgstr "다음 변경 후 자동 플러시..." # AI Translated msgid "Auto calculate flushing volumes when selected values changed" -msgstr "선택한 값이 변경되면 플러시 용량을 자동으로 계산합니다" +msgstr "선택한 값이 변경되면 플러시 볼륨을 자동으로 계산합니다" msgid "Auto arrange plate after cloning" msgstr "복제 후 플레이트 자동 정렬" @@ -13439,14 +13570,16 @@ msgstr "채워넣기 선" # AI Translated msgid "Orca would re-calculate your flushing volumes everytime the filaments color changed or filaments changed. You could disable the auto-calculate in Orca Slicer > Preferences" -msgstr "Orca는 필라멘트 색상이 바뀌거나 필라멘트가 변경될 때마다 플러시 용량을 다시 계산합니다. Orca Slicer > 기본 설정에서 자동 계산을 비활성화할 수 있습니다" +msgstr "Orca는 필라멘트 색상이 바뀌거나 필라멘트가 변경될 때마다 플러시 볼륨을 다시 계산합니다. Orca Slicer > 기본 설정에서 자동 계산을 비활성화할 수 있습니다" +# AI Translated msgid "Flushing volume (mm³) for each filament pair." -msgstr "각 필라멘트 쌍에 대한 버리기 볼륨(mm³)." +msgstr "각 필라멘트 쌍에 대한 플러시 볼륨(mm³)." +# AI Translated #, c-format, boost-format msgid "Suggestion: Flushing Volume in range [%d, %d]" -msgstr "제안: [%d, %d] 범위의 버리기 볼륨" +msgstr "제안: [%d, %d] 범위의 플러시 볼륨" #, c-format, boost-format msgid "The multiplier should be in range [%.2f, %.2f]." @@ -13458,8 +13591,9 @@ msgstr "다시 계산" msgid "Multiplier" msgstr "승수" +# AI Translated msgid "Flushing volumes for filament change" -msgstr "필라멘트 교체를 위한 버리기 볼륨" +msgstr "필라멘트 교체를 위한 플러시 볼륨" # AI Translated # Needs human review: Corner header of the flushing volume table (rows = filament flushed from, columns = changed to); check it reads right in the table. @@ -14223,6 +14357,18 @@ msgstr "둘레와 여러 번 교차하여 하나만 사용했습니다(%1%)" msgid "a perimeter is fully inside a modifier, the modifier was not applied to it (%1%)" msgstr "둘레가 수정자 안에 완전히 들어 있어 수정자가 적용되지 않았습니다(%1%)" +# AI Translated +#. TRN: %1% is the modifier type "Seam Blocked" as in the menu, %2% the modifier name, %3% the object name. +#, boost-format +msgid "%1% modifier \"%2%\" of \"%3%\" covers an entire perimeter" +msgstr "\"%3%\"의 %1% 수정자 \"%2%\"이(가) 둘레 전체를 덮고 있습니다" + +# AI Translated +#. TRN: %1% is the modifier type "Seam Blocked" as in the menu, %2% the modifier name, %3% the object name, %4% the number of modifiers. +#, boost-format +msgid "%1% modifier \"%2%\" of \"%3%\" (%4% in total) covers an entire perimeter" +msgstr "\"%3%\"의 %1% 수정자 \"%2%\"(총 %4%개)이(가) 둘레 전체를 덮고 있습니다" + # AI Translated #, boost-format msgid "modifier \"%1%\" of \"%2%\" had no effect on the seam (it might not reach the centerline of the printed perimeter)" @@ -14594,8 +14740,9 @@ msgstr "프라임 타워를 활성화하면 노즐 직경과 필라멘트 직경 msgid "The Wipe Tower is currently only supported with the relative extruder addressing (use_relative_e_distances=1)." msgstr "프라임 타워는 현재 관련 압출기에서만 지원됩니다.주소 지정(use_relative_e_distances=1)." +# AI Translated msgid "Ooze prevention is only supported with the wipe tower when 'single_extruder_multi_material' is off." -msgstr "흘러내림 방지는 'single_extruder_multi_material'이 꺼져 있을 때만 와이프 타워에서 지원됩니다." +msgstr "흘러내림 방지는 'single_extruder_multi_material'이 꺼져 있을 때만 프라임 타워에서 지원됩니다." # AI Translated msgid "The prime tower is currently only supported for the Marlin, RepRap/Sprinter, RepRapFirmware and Repetier G-code flavors." @@ -14780,7 +14927,7 @@ msgstr "이전 3MF 파일의 G-code 파일 %1%을(를) 처리하지 못했습니 # AI Translated #, boost-format msgid "The belt purge tower cannot absorb the full purge volume: %1% mm³ in total could not be purged (worst layer: %2% mm³ at height %3%). The print may show color bleeding. Increase the belt purge tower width, or reduce flushing volumes." -msgstr "벨트 퍼지 타워가 전체 플러시 부피를 흡수할 수 없습니다: 총 %1% mm³를 플러시하지 못했습니다(최악의 레이어: 높이 %3%에서 %2% mm³). 출력물에 색 번짐이 나타날 수 있습니다. 벨트 퍼지 타워 너비를 늘리거나 플러시 부피를 줄이세요." +msgstr "벨트 퍼지 타워가 전체 플러시 볼륨을 흡수할 수 없습니다: 총 %1% mm³를 플러시하지 못했습니다(최악의 레이어: 높이 %3%에서 %2% mm³). 출력물에 색 번짐이 나타날 수 있습니다. 벨트 퍼지 타워 너비를 늘리거나 플러시 볼륨을 줄이세요." # AI Translated msgid "Processing of the filename_format template failed." @@ -15267,13 +15414,13 @@ msgid "" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" -"If set to 0, the line width will match the Internal solid infill width." +"If set to 0, the line width will match the Internal solid infill width, or the nozzle diameter for thick bridges." msgstr "" "브릿지의 선 너비입니다. %로 입력 시 노즐 직경에 대한 비율로 계산됩니다.\n" "브릿지 밀도나 브릿지 압출량 비율을 높여 함께 사용하는 것이 좋습니다.\n" "\n" "최대값은 100% 또는 노즐 직경입니다.\n" -"0으로 설정하면 선 너비가 꽉찬 내부 채우기 너비와 같아집니다." +"0으로 설정하면 선 너비가 꽉찬 내부 채우기 너비와 같아지며, 두꺼운 브릿지의 경우 노즐 직경과 같아집니다." msgid "Internal bridge flow ratio" msgstr "내부 브릿지 압출량 비율" @@ -15578,7 +15725,7 @@ msgid "" "3. If artifacts still appear, enable Extrusion Rate Smoothing (ERS) to further smooth the flow transitions.\n" "\n" "Note: When this option is enabled, overhang perimeters are treated like overhangs, meaning the overhang speed is applied even if the overhanging perimeter is part of a bridge.\n" -"For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 100% overhang speed will be applied." +"For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 75% overhang speed will be applied, limited by the bridge speed." msgstr "" "둘레가 위로 말려 올라갈 수 있는 영역에서 출력 속도를 늦추려면 이 옵션을 활성화하십시오.\n" "예를 들어 Benchy 선체 앞부분과 같은 날카로운 모서리의 오버행을 출력할 때 추가 감속이 적용되어, 여러 레이어에 걸쳐 누적되는 말림을 줄여 줍니다.\n" @@ -15590,22 +15737,23 @@ msgstr "" "이 옵션을 활성화할 때의 권장 사항:\n" "1. 압출기가 속도 변화에 빠르게 반응하도록 Pressure Advance 평활 시간을 0.015 - 0.02로 줄이십시오.\n" "2. 최소 출력 속도를 높여 감속 폭을 제한하고 빠른 구간과 느린 구간의 차이를 줄이십시오.\n" -"3. 그래도 아티팩트가 나타나면 압출량 평활화(ERS)를 활성화하여 압출량 전환을 더 부드럽게 하십시오.\n" +"3. 그래도 아티팩트가 나타나면 유연한 압출량(ERS)을 활성화하여 압출량 전환을 더 부드럽게 하십시오.\n" "\n" "참고: 이 옵션을 활성화하면 오버행 둘레가 오버행처럼 처리되어, 오버행 둘레가 브릿지의 일부인 경우에도 오버행 속도가 적용됩니다.\n" -"예를 들어 둘레가 100% 오버행이고 아래에서 받쳐 주는 벽이 없으면 100% 오버행 속도가 적용됩니다." +"예를 들어 둘레가 100% 오버행이고 아래에서 받쳐 주는 벽이 없으면 75% 오버행 속도가 적용되며, 브릿지 속도로 제한됩니다." msgid "mm/s or %" msgstr "mm/s 또는 %" +# AI Translated msgid "" "Speed of the externally visible bridge extrusions.\n" "\n" -"In addition, if Slow down for curled perimeters is disabled or Classic overhang mode is enabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." +"In addition, if Slow down for curled perimeters is disabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." msgstr "" "외부에서 볼 수 있는 브릿지 돌출 속도입니다.\n" "\n" -"또한, 구부러진 둘레에 대한 속도 저하가 비활성화되거나 클래식 오버행 모드가 활성화된 경우 브릿지의 일부이든 오버행이든 상관없이 오버행 벽의 출력 속도는 13% 미만으로 지원됩니다." +"또한, \"구부러진 둘레에서 감속\"이 비활성화된 경우, 브릿지의 일부이든 오버행이든 상관없이 지지율이 13% 미만인 오버행 벽의 출력 속도가 됩니다." msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%." msgstr "내부 브릿지의 속도. 값을 백분율로 표현하면 bridge_speed를 기준으로 계산됩니다. 기본값은 150%입니다." @@ -16189,8 +16337,9 @@ msgstr "가장 바깥쪽의 눈에 보이는 외벽의 속도. 더 나은 품질 msgid "Small perimeters" msgstr "작은 둘레" -msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above. Set to zero for auto." -msgstr "이 별도의 설정은 반지름이 가진 둘레의 속도에 영향을 줍니다 <= 작은 둘레 임계값(small_perimeter_threshold) 이하인 둘레(일반적으로 구멍). 백분율로 설정하면(예: 80%) 외벽 속도 설정에서 계산됩니다. 자동의 경우 0으로 설정합니다." +# AI Translated +msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above." +msgstr "이 별도의 설정은 반지름이 small_perimeter_threshold 이하인 둘레(일반적으로 구멍)의 속도에 영향을 줍니다. 백분율로 설정하면(예: 80%) 위의 외벽 속도 설정을 기준으로 계산됩니다." msgid "Small perimeters threshold" msgstr "작은 둘레 임계값" @@ -16203,8 +16352,8 @@ msgid "Small support perimeters" msgstr "작은 서포트 둘레" # AI Translated -msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above. Set to zero for auto." -msgstr "\"작은 둘레\"와 같지만 서포트에 적용됩니다. 이 별도 설정은 `small_support_perimeter_threshold` 이하 영역의 서포트 속도에 영향을 줍니다. 백분율(예: 80%)로 입력하면 위의 서포트 또는 서포트 접점 속도를 기준으로 계산됩니다. 0으로 설정하면 자동입니다." +msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above." +msgstr "\"작은 둘레\"와 같지만 서포트에 적용됩니다. 이 별도 설정은 `small_support_perimeter_threshold` 이하 영역의 서포트 속도에 영향을 줍니다. 백분율(예: 80%)로 입력하면 위의 서포트 또는 서포트 접점 속도를 기준으로 계산됩니다." # AI Translated msgid "Small support perimeters threshold" @@ -16217,22 +16366,23 @@ msgstr "작은 서포트 둘레 길이의 임계값을 설정합니다. 기본 msgid "Walls printing order" msgstr "벽 출력 순서" +# AI Translated msgid "" "Print sequence of the internal (inner) and external (outer) walls.\n" "\n" "Use Inner/Outer for best overhangs. This is because the overhanging walls can adhere to a neighbouring perimeter while printing. However, this option results in slightly reduced surface quality as the external perimeter is deformed by being squashed to the internal perimeter.\n" "\n" -"Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended against the Outer/Inner option in most cases.\n" +"Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended over the Outer/Inner option in most cases.\n" "\n" "Use Outer/Inner for the same external wall quality and dimensional accuracy benefits of Inner/Outer/Inner option. However, the Z seams will appear less consistent as the first extrusion of a new layer starts on a visible surface." msgstr "" "내벽 및 외벽의 출력 순서를 지정합니다.\n" "\n" -"오버행을 가장 잘 출력하려면 내부/외부를 사용합니다. 이는 돌출된 벽이 출력하는 동안 인접한 경계에 부착될 수 있기 때문입니다. 그러나 이 옵션을 사용하면 외부 경계가 내부 경계에 눌려 변형되므로 표면 품질이 약간 저하됩니다.\n" +"오버행을 가장 잘 출력하려면 내벽/외벽을 사용합니다. 이는 돌출된 벽이 출력하는 동안 인접한 둘레에 부착될 수 있기 때문입니다. 그러나 이 옵션을 사용하면 외부 둘레가 내부 둘레에 눌려 변형되므로 표면 품질이 약간 저하됩니다.\n" "\n" -"내부/외부/내부를 사용하면 외부 벽이 내부 경계에서 방해받지 않고 출력되므로 최상의 외부 표면 마감과 치수 정확도를 얻을 수 있습니다. 그러나 외부 벽을 출력할 내부 경계가 없으므로 오버행 성능이 저하됩니다. 이 옵션은 세 번째 경계부터 내부 벽을 먼저 출력한 다음 외부 경계, 마지막으로 첫 번째 내부 경계를 출력하므로 최소 3개 이상의 벽이 있어야 효과적입니다. 이 옵션은 대부분의 경우 외부/내부 옵션보다 권장됩니다.\n" +"내벽/외벽/내벽을 사용하면 외벽이 내부 둘레에서 방해받지 않고 출력되므로 최상의 외부 표면 마감과 치수 정확도를 얻을 수 있습니다. 그러나 외벽을 출력할 내부 둘레가 없으므로 오버행 성능이 저하됩니다. 이 옵션은 세 번째 둘레부터 내벽을 먼저 출력한 다음 외부 둘레, 마지막으로 첫 번째 내부 둘레를 출력하므로 최소 3개 이상의 벽이 있어야 효과적입니다. 이 옵션은 대부분의 경우 외벽/내벽 옵션보다 권장됩니다.\n" "\n" -"내부/외부/내부 옵션과 동일한 외벽 품질 및 치수 정확도 이점을 얻으려면 외부/내부를 사용하세요. 그러나 새 레이어의 첫 번째 돌출이 보이는 표면에서 시작되므로 Z 심이 덜 일관되게 나타납니다." +"외벽/내벽은 내벽/외벽/내벽 옵션과 동일한 외벽 품질 및 치수 정확도 이점이 있습니다. 그러나 새 레이어의 첫 번째 돌출이 보이는 표면에서 시작되므로 Z 재봉선이 덜 일관되게 나타납니다." msgid "Inner/Outer" msgstr "내벽/외벽" @@ -16691,14 +16841,17 @@ msgstr "첫 번째 냉각 이동 속도" msgid "Cooling moves are gradually accelerating beginning at this speed." msgstr "이 속도부터 냉각 동작이 점차 가속됩니다." +# AI Translated msgid "Minimal purge on wipe tower" -msgstr "프라임 타워의 최소 청소" +msgstr "프라임 타워의 최소 플러시" +# AI Translated 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, Orca Slicer will always prime this amount of material into the wipe tower to produce successive infill or sacrificial object extrusions reliably." -msgstr "툴 체인지 후 노즐 내부에 새로 로드된 필라멘트의 정확한 위치를 알 수 없으며 필라멘트 압력이 아직 안정적이지 않을 수 있습니다. 프린트 헤드를 채우기 또는 희생 객체로 청소하기 전에 Orca Slicer은 항상 이 양의 재료를 프라임 타워로 프라이밍하여 연속적인 채우기 또는 희생 물체 압출을 안정적으로 생성합니다." +msgstr "툴 체인지 후 노즐 내부에 새로 로드된 필라멘트의 정확한 위치를 알 수 없으며 필라멘트 압력이 아직 안정적이지 않을 수 있습니다. 프린트 헤드를 채우기 또는 희생 객체로 플러시하기 전에 OrcaSlicer는 항상 이 양의 재료를 프라임 타워로 프라이밍하여 연속적인 채우기 또는 희생 객체 압출을 안정적으로 생성합니다." +# AI Translated msgid "Wipe tower cooling" -msgstr "와이프 타워 냉각" +msgstr "프라임 타워 냉각" msgid "Temperature drop before entering filament tower" msgstr "필라멘트 타워 진입 전 온도 강하" @@ -17201,14 +17354,16 @@ msgstr "초기 레이어 높이" msgid "Height of the first layer. Making the first layer height thicker can improve build plate adhesion." msgstr "초기 레이어의 높이입니다. 초기 레이어 높이를 약간 두껍게 하면 빌드 플레이트 접착력을 향상시킬 수 있습니다" -msgid "This is the speed for the first layer except for solid infill sections." -msgstr "꽉찬 채우기 부분을 제외한 초기 레이어 속도" +# AI Translated +msgid "This is the speed for the walls and brim of the first layer." +msgstr "초기 레이어의 벽과 브림 속도입니다." msgid "First layer infill" msgstr "초기 레이어 채우기" -msgid "This is the speed for solid infill parts of the first layer." -msgstr "초기 레이어의 꽉찬 채우기 속도" +# AI Translated +msgid "This is the speed for the first layer except for walls and brim, such as infill, gap fill and support." +msgstr "벽과 브림을 제외한 초기 레이어의 속도입니다(채우기, 간격 채우기, 서포트 등)." msgid "First layer travel speed" msgstr "초기 레이어 이동 속도" @@ -17727,7 +17882,7 @@ msgstr "객체 이름표" # AI Translated # Wipe into this object;s infill/Wipe into this object 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 plug-in. This setting is NOT compatible with Single Extruder Multi Material setup and Wipe into Object / Wipe into Infill." -msgstr "출력 이동이 어느 객체에 속하는지 표시하는 주석을 G-code에 추가하려면 이 옵션을 활성화하세요. 이는 Octoprint CancelObject 플러그인에 유용합니다. 이 설정은 단일 압출기 다중 재료 설정 및 객체에서 버리기 / 채우기에서 버리기와 호환되지 않습니다." +msgstr "출력 이동이 어느 객체에 속하는지 표시하는 주석을 G-code에 추가하려면 이 옵션을 활성화하세요. 이는 Octoprint CancelObject 플러그인에 유용합니다. 이 설정은 단일 압출기 다중 재료 설정 및 객체에서 플러시 / 채우기에서 플러시와 호환되지 않습니다." msgid "Exclude objects" msgstr "객체 제외" @@ -17953,16 +18108,18 @@ msgstr "드문 내부 채우기의 선 너비. %로 입력 시 노즐 직경에 msgid "Infill/wall overlap" msgstr "채우기/벽 겹치기" +# AI Translated #, no-c-format, no-boost-format -msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to line width of sparse infill. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." -msgstr "채우기 영역은 더 나은 접착을 위해 벽과 겹치도록 약간 확대됩니다. 백분율 값은 희박한 채우기의 선 너비를 기준으로 합니다. 거친 상단 표면을 초래하는 재료의 압출 및 축적 가능성을 최소화하려면 이 값을 ~10-15%로 설정하십시오." +msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to the inner wall line width. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." +msgstr "채우기 영역은 더 나은 접착을 위해 벽과 겹치도록 약간 확대됩니다. 백분율 값은 내벽 선 너비를 기준으로 합니다. 거친 상단 표면을 초래하는 재료의 압출 및 축적 가능성을 최소화하려면 이 값을 ~10-15%로 설정하십시오." msgid "Top/Bottom solid infill/wall overlap" msgstr "상하단 솔리드 채우기/벽 겹침" +# AI Translated #, no-c-format, no-boost-format -msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to line width of sparse infill." -msgstr "상단 솔리드 채우기 영역은 더 나은 접착을 위해 벽과 겹치도록 약간 확대되고 상단 채우기가 벽과 만나는 핀홀의 모양을 최소화합니다. 25-30%의 값은 핀홀의 모양을 최소화하는 좋은 출발점입니다. 백분율 값은 희박한 채우기의 선 너비를 기준으로 합니다" +msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to the inner wall line width." +msgstr "상단 솔리드 채우기 영역은 더 나은 접착을 위해 벽과 겹치도록 약간 확대되고 상단 채우기가 벽과 만나는 핀홀의 모양을 최소화합니다. 25-30%의 값은 핀홀의 모양을 최소화하는 좋은 출발점입니다. 백분율 값은 내벽 선 너비를 기준으로 합니다." msgid "This is the speed for internal sparse infill." msgstr "내부 드문 채우기 속도" @@ -17988,8 +18145,9 @@ msgstr "분할된 영역의 최대 너비입니다. 0은 이 기능을 비활성 msgid "Interlocking depth of a segmented region" msgstr "분할된 영역의 연동 깊이" -msgid "Interlocking depth of a segmented region. It will be ignored if \"mmu_segmented_region_max_width\" is zero or if \"mmu_segmented_region_interlocking_depth\" is bigger than \"mmu_segmented_region_max_width\". Zero disables this feature." -msgstr "분할된 영역의 연동 깊이. \"mmu_segmented_region_max_width\"가 0이거나 \"mmu_segmented_region_interlocking_length\"가 \"mmu_segmented_region_max_width\"보다 크면 무시됩니다. 0은 이 기능을 비활성화합니다." +# AI Translated +msgid "Interlocking depth of a segmented region. On every other layer, the segmented region is limited to this depth. It will be ignored if \"interlocking_beam\" is enabled. Zero disables this feature." +msgstr "분할된 영역의 연동 깊이입니다. 한 레이어 걸러, 분할된 영역이 이 깊이로 제한됩니다. \"interlocking_beam\"이 활성화되어 있으면 무시됩니다. 0으로 설정하면 이 기능이 비활성화됩니다." msgid "Use beam interlocking" msgstr "인터로킹 빔 사용" @@ -18102,11 +18260,11 @@ msgstr "벽 높이 최소화 각도" # AI Translated msgid "" "Reduce the height of top-surface perimeters to match the model edge height.\n" -"Affects perimeters with a slope less than this angle (degrees).\n" +"Affects perimeters with a slope greater than this angle (degrees).\n" "A reasonable value is 35. Set to 0 to disable." msgstr "" "상단 표면 둘레의 높이를 모델 가장자리 높이에 맞춰 줄입니다.\n" -"이 각도(도)보다 기울기가 작은 둘레에 적용됩니다.\n" +"이 각도(도)보다 기울기가 큰 둘레에 적용됩니다.\n" "적절한 값은 35입니다. 0으로 설정하면 비활성화됩니다." # AI Translated @@ -19122,7 +19280,8 @@ msgstr "내벽용 스카프 조인트" msgid "Use scarf joint for inner walls as well." msgstr "내벽에도 스카프 조인트를 사용하십시오." -msgid "Role base wipe speed" +# AI Translated +msgid "Role based wipe speed" msgstr "역할 기반 노즐 청소 속도" msgid "The wipe speed is determined by the speed of the current extrusion role. e.g. if a wipe action is executed immediately following an outer wall extrusion, the speed of the outer wall extrusion will be utilized for the wipe action." @@ -19214,16 +19373,15 @@ msgstr "초기 레이어 이후 스커트/드래프트 실드의 루프를 벽 msgid "Draft shield" msgstr "드래프트 실드" +# AI Translated msgid "" "A draft shield is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft. It is usually needed only with open frame printers, i.e. without an enclosure.\n" "\n" -"Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used.\n" -"Note: With the draft shield active, the skirt will be printed at skirt distance from the object. Therefore, if brims are active it may intersect with them. To avoid this, increase the skirt distance value.\n" +"Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used." msgstr "" "드래프트 실드는 바람으로 인해 ABS 또는 ASA 출력물이 뒤틀리거나 출력 베드에서 분리되는 것을 방지하는 데 유용합니다. 일반적으로 오픈 프레임 프린터, 즉 인클로저가 없는 경우에만 필요합니다.\n" "\n" -"활성화 = 스커트가 가장 높은 출력물의 높이와 같습니다. 그렇지 않으면 '스커트 높이'가 사용됩니다.\n" -"참고: 드래프트 실드가 활성화되면 스커트는 객체로부터 스커트 거리에 출력됩니다. 따라서 챙이 활성화된 경우 챙과 교차할 수 있습니다. 이를 방지하려면 스커트 거리 값을 늘리십시오.\n" +"활성화 = 스커트가 가장 높은 출력물의 높이와 같습니다. 그렇지 않으면 '스커트 높이'가 사용됩니다." msgid "Enabled" msgstr "활성화" @@ -19525,8 +19683,9 @@ msgstr "수동 필라멘트 교체" msgid "Enable this option to omit the custom Change filament G-code only at the beginning of the print. The tool change command (e.g., T0) will be skipped throughout the entire print. This is useful for manual multi-material printing, where we use M600/PAUSE to trigger the manual filament change action." msgstr "출력 시작 시에만 사용자 정의 필라멘트 변경 G-code를 생략하려면 이 옵션을 활성화합니다. 툴 변경 명령(예: T0)은 전체 출력 과정에서 건너뜁니다. 이는 M600/PAUSE를 사용하여 수동 필라멘트 교체 작업을 실행하는 수동 다중 재료 출력에 유용합니다." +# AI Translated msgid "Wipe tower type" -msgstr "와이프 타워 유형" +msgstr "프라임 타워 유형" # AI Translated msgid "Choose the wipe tower implementation for multi-material prints. Type 1 is recommended for Bambu and Qidi printers with a filament cutter. Type 2 offers better compatibility with multi-tool and MMU printers and provide overall better compatibility." @@ -19538,11 +19697,13 @@ msgstr "유형 1" msgid "Type 2" msgstr "유형 2" +# AI Translated msgid "Purge in prime tower" -msgstr "프라임 타워에서 청소" +msgstr "프라임 타워에서 플러시" +# AI Translated msgid "Purge remaining filament into prime tower." -msgstr "남은 필라멘트를 프라임 타워에서 제거" +msgstr "남은 필라멘트를 프라임 타워에 플러시합니다." msgid "Enable filament ramming" msgstr "필라멘트 채워넣기 활성화" @@ -19561,7 +19722,7 @@ msgstr "프라임 타워에서 온도 대기" # AI Translated msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command." -msgstr "출력 온도에 도달할 때까지 기다리지 않고 새 툴을 집은 뒤 프라임 타워로 이동하여, 퍼지 직전에 그곳에서 온도를 기다립니다. 가열 중 흘러나온 재료는 모델이 아닌 타워에 떨어지고, 이동 시간이 가열 시간과 겹칩니다. 타입 2 프라임 타워를 사용하는 다중 압출기(다중 툴헤드) 프린터에만 해당합니다. 펌웨어나 툴 체인지 매크로가 직접 온도를 기다려서는 안 됩니다. 비활성화하면 툴 체인지 명령 직후에 온도 대기가 실행됩니다." +msgstr "출력 온도에 도달할 때까지 기다리지 않고 새 툴을 집은 뒤 프라임 타워로 이동하여, 플러시 직전에 그곳에서 온도를 기다립니다. 가열 중 흘러나온 재료는 모델이 아닌 타워에 떨어지고, 이동 시간이 가열 시간과 겹칩니다. 타입 2 프라임 타워를 사용하는 다중 압출기(다중 툴헤드) 프린터에만 해당합니다. 펌웨어나 툴 체인지 매크로가 직접 온도를 기다려서는 안 됩니다. 비활성화하면 툴 체인지 명령 직후에 온도 대기가 실행됩니다." msgid "No sparse layers (beta)" msgstr "희소 레이어 없음(베타)" @@ -20065,7 +20226,7 @@ msgstr "벨트 퍼지 타워 너비" # AI Translated msgid "Width (machine X, across the belt) of the purge prism that is automatically generated on belt printers when the belt purge tower is enabled and multiple filaments are used. Filament-change purging is routed into this prism's extrusions instead of a classic wipe tower. Its height is computed automatically from the worst-case purge volume per layer: a wider prism results in a shorter one." -msgstr "벨트 퍼지 타워가 활성화되고 여러 필라멘트를 사용할 때 벨트 프린터에서 자동으로 생성되는 퍼지 프리즘의 너비(기계 X, 벨트를 가로지르는 방향)입니다. 필라멘트 교체 시 플러시는 기존 프라임 타워 대신 이 프리즘의 압출로 이루어집니다. 높이는 레이어당 최악의 경우의 플러시 부피로부터 자동 계산되며, 프리즘이 넓을수록 높이가 낮아집니다." +msgstr "벨트 퍼지 타워가 활성화되고 여러 필라멘트를 사용할 때 벨트 프린터에서 자동으로 생성되는 퍼지 프리즘의 너비(기계 X, 벨트를 가로지르는 방향)입니다. 필라멘트 교체 시 플러시는 기존 프라임 타워 대신 이 프리즘의 압출로 이루어집니다. 높이는 레이어당 최악의 경우의 플러시 볼륨으로부터 자동 계산되며, 프리즘이 넓을수록 높이가 낮아집니다." msgid "Tree support branch angle" msgstr "트리 서포트 가지 각도" @@ -20305,6 +20466,7 @@ msgstr "노즐에서 흘러내린된 재료를 청소하기 위해 후퇴할 때 msgid "Wipe distance" msgstr "노즐 청소 거리" +# AI Translated msgid "" "Describe how long the nozzle will move along the last path when retracting.\n" "\n" @@ -20314,9 +20476,9 @@ msgid "" msgstr "" "후퇴할 때 노즐이 마지막 경로를 따라 얼마나 오래 움직일지 설명합니다.\n" "\n" -"와이프 작업의 지속 시간, 압출기/필라멘트 후퇴 설정의 속도와 길이에 따라 남은 필라멘트를 후퇴시키기 위해 후퇴 동작이 필요할 수 있습니다.\n" +"노즐 청소 작업의 지속 시간, 압출기/필라멘트 후퇴 설정의 속도와 길이에 따라 남은 필라멘트를 후퇴시키기 위해 후퇴 동작이 필요할 수 있습니다.\n" "\n" -"아래의 와이프 전 후퇴량 설정에서 값을 설정하면 와이프 전에 초과 후퇴가 수행되고, 그렇지 않으면 와이프 후에 수행됩니다." +"아래의 노즐 청소 전 후퇴량 설정에서 값을 설정하면 노즐 청소 전에 초과 후퇴가 수행되고, 그렇지 않으면 노즐 청소 후에 수행됩니다." # AI Translated msgid "Mixed color sublayer" @@ -20335,28 +20497,32 @@ msgstr "내부 갈비" msgid "Enable internal ribs to increase the stability of the prime tower." msgstr "프라임 타워의 안정성을 높이기 위해 내부 리브를 활성화합니다." +# AI Translated msgid "Purging volumes" -msgstr "버리기 볼륨" +msgstr "플러시 볼륨" +# AI Translated msgid "Flush multiplier" -msgstr "버리기 승수" +msgstr "플러시 승수" +# AI Translated msgid "The actual flushing volumes is equal to the flush multiplier value multiplied by the flushing volumes in the table." -msgstr "실제 버리기 볼륨은 버리기 승수에 테이블의 버리기 볼륨을 곱한 것과 같습니다." +msgstr "실제 플러시 볼륨은 플러시 승수에 테이블의 플러시 볼륨을 곱한 것과 같습니다." # AI Translated msgid "Flush multiplier (Fast mode)" -msgstr "플러시 배수(고속 모드)" +msgstr "플러시 승수(고속 모드)" # AI Translated msgid "The flush multiplier used in fast purge mode." -msgstr "고속 플러시 모드에서 사용하는 플러시 배수입니다." +msgstr "고속 플러시 모드에서 사용하는 플러시 승수입니다." msgid "Prime volume" msgstr "프라임양" +# AI Translated msgid "This is the volume of material to prime the extruder with on the tower." -msgstr "탑에서 압출을 실행할 재료의 부피." +msgstr "타워에서 압출기를 프라임하는 데 사용할 재료의 부피입니다." # AI Translated msgid "Prime volume mode" @@ -20364,7 +20530,7 @@ msgstr "프라임 용량 모드" # AI Translated msgid "Selects how the wipe-tower prime and flush volumes are computed on multi-extruder printers." -msgstr "다중 압출기 프린터에서 프라임 타워의 프라임 및 플러시 용량을 계산하는 방식을 선택합니다." +msgstr "다중 압출기 프린터에서 프라임 타워의 프라임 용량과 플러시 볼륨을 계산하는 방식을 선택합니다." # AI Translated msgid "Saving" @@ -20395,26 +20561,27 @@ msgstr "프라임 타워를 안정화하는 데 사용되는 원뿔 꼭대기의 msgid "Maximum wipe tower print speed" msgstr "프라임 타워 최대 속도" +# AI Translated msgid "" "The maximum print speed when purging in the wipe tower and printing the wipe tower sparse layers. When purging, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" "\n" -"When printing the sparse layers, if the internal perimeter speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +"When printing the sparse layers, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" "\n" "Increasing this speed may affect the tower's stability as well as increase the force with which the nozzle collides with any blobs that may have formed on the wipe tower.\n" "\n" "Before increasing this parameter beyond the default of 90 mm/s, make sure your printer can reliably bridge at the increased speeds and that ooze when tool changing is well controlled.\n" "\n" -"For the wipe tower external perimeters the internal perimeter speed is used regardless of this setting." +"For the wipe tower external perimeters the internal perimeter speed is used, also limited by this setting." msgstr "" -"와이프 타워에서 버리기하고 와이프 타워 희박 레이어를 출력할 때 최대 출력 속도입니다. 버리기 시 희소 충전 속도 또는 필라멘트 최대 압출 속도에서 계산된 속도가 더 낮은 경우 가장 낮은 속도가 대신 사용됩니다.\n" +"프라임 타워에서 플러시를 하고 프라임 타워의 희소 레이어를 출력할 때의 최대 출력 속도입니다. 플러시 시 드문 채우기 속도 또는 필라멘트 최대 압출 속도에서 계산된 속도가 더 낮은 경우 가장 낮은 속도가 대신 사용됩니다.\n" "\n" -"희소 레이어를 출력할 때 내부 주변 속도 또는 필라멘트 최대 압출 속도에서 계산된 속도가 더 낮은 경우 가장 낮은 속도가 대신 사용됩니다.\n" +"희소 레이어를 출력할 때 드문 채우기 속도 또는 필라멘트 최대 압출 속도에서 계산된 속도가 더 낮은 경우 가장 낮은 속도가 대신 사용됩니다.\n" "\n" -"이 속도를 높이면 타워의 안정성에 영향을 줄 수 있을 뿐만 아니라 노즐이 와이프 타워에 형성될 수 있는 얼룩과 충돌하는 힘도 증가할 수 있습니다.\n" +"이 속도를 높이면 타워의 안정성에 영향을 줄 수 있을 뿐만 아니라 노즐이 프라임 타워에 형성될 수 있는 얼룩과 충돌하는 힘도 증가할 수 있습니다.\n" "\n" -"이 매개변수를 기본값인 90mm/초 이상으로 늘리기 전에 프린터가 증가된 속도에서 안정적으로 브릿지할 수 있고 도구 교환 시 흘러나오는 현상이 잘 제어되는지 확인하십시오.\n" +"이 매개변수를 기본값인 90 mm/s 이상으로 늘리기 전에 프린터가 증가된 속도에서 안정적으로 브릿지할 수 있고 툴 교체 시 흘러내림 방지가 잘 되는지 확인하십시오.\n" "\n" -"와이프 타워 외부 경계의 경우 이 설정에 관계없이 내부 경계 속도가 사용됩니다." +"프라임 타워의 외부 둘레에는 내부 둘레 속도가 사용되며, 이 설정으로도 제한됩니다." # AI Translated msgid "Wall type" @@ -20423,14 +20590,14 @@ msgstr "벽 유형" # AI Translated msgid "" "Wipe tower outer wall type.\n" -"1. Rectangle: The default wall type, a rectangle with fixed width and height.\n" +"1. Rectangle: A rectangle with fixed width and height.\n" "2. Cone: A cone with a fillet at the bottom to help stabilize the wipe tower.\n" -"3. Rib: Adds four ribs to the tower wall for enhanced stability." +"3. Rib: The default wall type, which adds four ribs to the tower wall for enhanced stability." msgstr "" "프라임 타워의 외벽 유형입니다.\n" -"1. 직사각형: 기본 벽 유형으로, 너비와 높이가 고정된 직사각형입니다.\n" +"1. 직사각형: 너비와 높이가 고정된 직사각형입니다.\n" "2. 원뿔: 프라임 타워를 안정화하기 위해 바닥에 필렛이 있는 원뿔입니다.\n" -"3. 리브: 안정성을 높이기 위해 타워 벽에 리브 4개를 추가합니다." +"3. 리브: 기본 벽 유형으로, 안정성을 높이기 위해 타워 벽에 리브 4개를 추가합니다." msgid "Rectangle" msgstr "직사각형" @@ -20444,7 +20611,7 @@ msgstr "추가 리브 길이" # AI Translated msgid "Positive values can increase the size of the rib wall, while negative values can reduce the size. However, the size of the rib wall can not be smaller than that determined by the cleaning volume." -msgstr "양수 값은 리브 벽의 크기를 키우고 음수 값은 크기를 줄입니다. 다만 리브 벽의 크기는 청소 용량으로 결정되는 크기보다 작아질 수 없습니다." +msgstr "양수 값은 리브 벽의 크기를 키우고 음수 값은 크기를 줄입니다. 다만 리브 벽의 크기는 플러시 볼륨으로 결정되는 크기보다 작아질 수 없습니다." msgid "Rib width" msgstr "리브 너비" @@ -20462,11 +20629,13 @@ msgstr "프라임 타워의 벽에 필렛을 적용합니다." msgid "The extruder to use when printing perimeter of the wipe tower. Set to 0 to use the one that is available (non-soluble would be preferred)." msgstr "프라임 타워의 둘레를 출력할 때 사용하는 압출기입니다. 사용 가능한 압출기를 사용하려면 0으로 설정하세요 (비가용성 재료가 적절합니다)." +# AI Translated msgid "Purging volumes - load/unload volumes" -msgstr "버리기량 - 로드/언로드량" +msgstr "플러시 볼륨 - 로드/언로드 볼륨" +# AI Translated 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 "이 벡터는 프라임 타워에서 사용되는 각 툴을 교체하는 데 필요한 부피을 저장합니다. 이러한 값은 아래의 전체 청소 부피 생성을 단순화하는 데 사용됩니다." +msgstr "이 벡터는 프라임 타워에서 사용되는 각 툴을 교체하는 데 필요한 볼륨을 저장합니다. 이러한 값은 아래의 전체 플러시 볼륨 생성을 단순화하는 데 사용됩니다." msgid "Skip points" msgstr "포인트 건너뛰기" @@ -20497,14 +20666,17 @@ msgstr "인필 갭" msgid "Infill gap." msgstr "채우기 간격입니다." +# AI Translated msgid "Purging after filament change will be done inside objects' infills. This may lower the amount of waste and decrease the print time. If the walls are printed with transparent filament, the mixed color infill will be visible. It will not take effect unless the prime tower is enabled." -msgstr "필라멘트 교체 후 버리기는 객체의 채우기 내부에서 수행됩니다. 이렇게 하면 낭비되는 양이 줄어들고 출력 시간이 단축될 수 있습니다. 벽이 투명 필라멘트로 출력된 경우 혼합 색상 충전재가 외부에 보입니다. 프라임 타워가 활성화되지 않으면 적용되지 않습니다." +msgstr "필라멘트 교체 후 플러시는 객체의 채우기 내부에서 수행됩니다. 이렇게 하면 낭비되는 양이 줄어들고 출력 시간이 단축될 수 있습니다. 벽이 투명 필라멘트로 출력된 경우 혼합 색상 충전재가 외부에 보입니다. 프라임 타워가 활성화되지 않으면 적용되지 않습니다." +# AI Translated msgid "Purging after filament change will be done inside objects' support. This may lower the amount of waste and decrease the print time. It will not take effect unless a prime tower is enabled." -msgstr "필라멘트 변경 후 버리기는 객체의 서포트 내부에서 수행됩니다. 이렇게 하면 낭비되는 양이 줄어들고 출력 시간이 단축될 수 있습니다. 프라임 타워가 활성화되지 않으면 적용되지 않습니다." +msgstr "필라멘트 변경 후 플러시는 객체의 서포트 내부에서 수행됩니다. 이렇게 하면 낭비되는 양이 줄어들고 출력 시간이 단축될 수 있습니다. 프라임 타워가 활성화되지 않으면 적용되지 않습니다." +# AI Translated msgid "This object will be used to purge the nozzle after a filament change to save filament and decrease the print time. Colors of the objects will be mixed as a result. It will not take effect unless the prime tower is enabled." -msgstr "이 객체는 필라멘트를 절약하고 출력 시간을 줄이기 위해 필라멘트 변경 후 노즐에 남은 잔류물을 제거하는 데 사용됩니다. 결과적으로 객체의 색상이 혼합됩니다. 기본 타워가 활성화되지 않으면 적용되지 않습니다." +msgstr "이 객체는 필라멘트를 절약하고 출력 시간을 줄이기 위해 필라멘트 변경 후 노즐을 플러시하는 데 사용됩니다. 결과적으로 객체의 색상이 혼합됩니다. 프라임 타워가 활성화되지 않으면 적용되지 않습니다." # AI Translated msgid "Belt purge tower object" @@ -20520,17 +20692,21 @@ msgstr "최대 브릿지 거리" msgid "Maximal distance between supports on sparse infill sections." msgstr "드문 채우기 부분의 서포트 사이의 최대 거리." +# AI Translated msgid "Wipe tower purge lines spacing" -msgstr "프라임 타워 청소 선 간격" +msgstr "프라임 타워 플러시 선 간격" +# AI Translated msgid "Spacing of purge lines on the wipe tower." -msgstr "프라임 타워의 청소 선 간격입니다." +msgstr "프라임 타워의 플러시 선 간격입니다." +# AI Translated msgid "Extra flow for purging" -msgstr "퍼지를 위한 추가 흐름" +msgstr "플러시를 위한 추가 흐름" -msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker or narrower than they normally would be. The spacing is adjusted automatically." -msgstr "와이프 타워의 퍼지 라인에 추가 흐름이 사용됩니다. 이렇게 하면 퍼지 라인이 평소보다 두껍거나 좁아집니다. 간격은 자동으로 조정됩니다." +# AI Translated +msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker than they normally would be. The spacing is adjusted automatically." +msgstr "프라임 타워의 플러시 선에 추가 흐름이 사용됩니다. 이렇게 하면 플러시 선이 평소보다 두꺼워집니다. 간격은 자동으로 조정됩니다." msgid "Idle temperature" msgstr "공회전 온도" @@ -20609,8 +20785,9 @@ msgstr "G-code 미리보기 포맷: 최고 품질은 PNG, 최소 크기는 JPG, msgid "Use relative E distances" msgstr "상대적 E 거리 사용" +# AI Translated msgid "Relative extrusion is recommended when using \"label_objects\" option. Some extruders work better with this option unchecked (absolute extrusion mode). Wipe tower is only compatible with relative mode. It is recommended on most printers. Default is checked." -msgstr "\"label_objects\" 옵션을 사용할 때는 상대 압출을 권장합니다. 일부 압출기는 이 옵션을 선택하지 않은 경우(절대 압출 모드) 더 잘 작동합니다. 와이프 타워는 상대 모드와만 호환됩니다. 대부분의 프린터에 권장됩니다. 기본값이 선택되어 있습니다" +msgstr "\"label_objects\" 옵션을 사용할 때는 상대 압출을 권장합니다. 일부 압출기는 이 옵션을 선택하지 않은 경우(절대 압출 모드) 더 잘 작동합니다. 프라임 타워는 상대 모드와만 호환됩니다. 대부분의 프린터에 권장됩니다. 기본값이 선택되어 있습니다." msgid "The classic wall generator produces walls with constant extrusion width and for very thin areas, gap-fill is used. The Arachne engine produces walls with variable extrusion width." msgstr "클래식 벽 생성기는 돌출 폭이 일정한 벽을 생성하며 매우 얇은 영역에는 간격 채움이 사용됩니다. 아라크네 엔진은 압출 폭이 가변적인 벽을 생성합니다." @@ -20652,14 +20829,15 @@ msgstr "얇은 형상의 최소 두께입니다. 이 값보다 얇은 모델 형 msgid "Minimum wall length" msgstr "최소 벽 길이" +# AI Translated msgid "" -"Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. Higher values remove more and longer walls.\n" +"Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. The value is a multiple of the wall width. Higher values remove more and longer walls.\n" "\n" -"NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the Advanced settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." +"NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the 'Walls and surfaces' settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." msgstr "" -"짧고 닫히지 않은 벽이 출력되는 것을 방지하려면 이 값을 조정하십시오. 이로 인해 출력 시간이 늘어날 수 있습니다. 값이 높을수록 더 많은 벽과 긴 벽이 제거됩니다.\n" +"짧고 닫히지 않은 벽이 출력되는 것을 방지하려면 이 값을 조정하십시오. 이로 인해 출력 시간이 늘어날 수 있습니다. 값은 벽 너비의 배수입니다. 값이 높을수록 더 많은 벽과 긴 벽이 제거됩니다.\n" "\n" -"참고: 모델 외부의 시각적 틈을 방지하기 위해 하단 및 상단 표면은 이 값의 영향을 받지 않습니다. 상단 표면으로 간주되는 항목의 감도를 조정하려면 아래 고급 설정에서 '벽 하나의 임계값'을 조정하세요. '하나의 벽 임계값'은 이 설정이 기본값인 0.5보다 높게 설정되거나 단일 벽 상단 표면이 활성화된 경우에만 표시됩니다." +"참고: 모델 외부의 시각적 틈을 방지하기 위해 하단 및 상단 표면은 이 값의 영향을 받지 않습니다. 상단 표면으로 간주되는 항목의 감도를 조정하려면 아래 '벽과 표면' 설정에서 '단일 벽 임계값'을 조정하세요. '단일 벽 임계값'은 이 설정이 기본값인 0.5보다 높게 설정되거나 '상단 표면에 단일 벽 생성'이 활성화된 경우에만 표시됩니다." # AI Translated msgid "Maximum wall resolution" @@ -20731,7 +20909,7 @@ msgstr "고속 플러시 모드 지원" # AI Translated msgid "Whether this printer supports fast purge mode with optimized temperature and multiplier." -msgstr "이 프린터가 최적화된 온도와 배수를 사용하는 고속 플러시 모드를 지원하는지 여부입니다." +msgstr "이 프린터가 최적화된 온도와 승수를 사용하는 고속 플러시 모드를 지원하는지 여부입니다." # AI Translated msgid "Filament change" @@ -21179,11 +21357,13 @@ msgstr "현재 객체 인덱스" msgid "Specific for sequential printing. Zero-based index of currently printed object." msgstr "순차 출력에만 해당됩니다. 현재 출력된 객체의 0 기반 인덱스입니다." +# AI Translated msgid "Has wipe tower" -msgstr "와이프 타워 있음" +msgstr "프라임 타워 있음" +# AI Translated msgid "Whether or not wipe tower is being generated in the print." -msgstr "출력물에 와이프타워가 생성되는지 여부입니다." +msgstr "출력물에 프라임 타워가 생성되는지 여부입니다." msgid "Initial extruder" msgstr "초기 압출기" @@ -21691,19 +21871,19 @@ msgstr "툴 체인지 후 Z 위치입니다." # AI Translated msgid "First flush volume" -msgstr "첫 번째 플러시 부피" +msgstr "첫 번째 플러시 볼륨" # AI Translated msgid "The first flush volume." -msgstr "첫 번째 플러시 부피입니다." +msgstr "첫 번째 플러시 볼륨입니다." # AI Translated msgid "Second flush volume" -msgstr "두 번째 플러시 부피" +msgstr "두 번째 플러시 볼륨" # AI Translated msgid "The second flush volume." -msgstr "두 번째 플러시 부피입니다." +msgstr "두 번째 플러시 볼륨입니다." # AI Translated msgid "Old filament e feedrate" @@ -24710,9 +24890,6 @@ msgstr "스마트 필라멘트 할당 활성화: 하나의 필라멘트를 여 msgid "File Saving" msgstr "파일 저장" -msgid "Don't remind me again" -msgstr "다시 알리지 마세요" - msgid "No further pop-up will appear. You can reopen it in 'Preferences'" msgstr "더 이상 팝업이 표시되지 않습니다. '환경설정'에서 다시 열 수 있습니다" @@ -33399,7 +33576,7 @@ msgstr "최상의 출력 품질을 위해 속도 및 온도 전환과 함께 완 # AI Translated msgid "Uses optimized purge temperature, multiplier and stronger extrusion for faster purging. May cause slight color mixing in some extreme cases." -msgstr "더 빠른 플러시를 위해 최적화된 플러시 온도와 배수, 더 강한 압출을 사용합니다. 일부 극단적인 경우 색상이 약간 섞일 수 있습니다." +msgstr "더 빠른 플러시를 위해 최적화된 플러시 온도와 승수, 더 강한 압출을 사용합니다. 일부 극단적인 경우 색상이 약간 섞일 수 있습니다." # AI Translated msgid "Prime Saving" @@ -35257,6 +35434,172 @@ msgstr "" "뒤틀림 방지\n" "ABS와 같이 뒤틀림이 발생하기 쉬운 소재를 출력할 때, 히트베드 온도를 적절하게 높이면 뒤틀림 가능성을 줄일 수 있다는 사실을 알고 계셨나요?" +# AI Translated +#~ msgid "" +#~ "Line width of the Bridge. If expressed as a %, it will be computed over the nozzle diameter.\n" +#~ "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" +#~ "\n" +#~ "The maximum value is 100% or the nozzle diameter.\n" +#~ "If set to 0, the line width will match the Internal solid infill width." +#~ msgstr "" +#~ "브릿지의 선 너비입니다. %로 입력 시 노즐 직경에 대한 비율로 계산됩니다.\n" +#~ "브릿지 밀도나 브릿지 압출량 비율을 높여 함께 사용하는 것이 좋습니다.\n" +#~ "\n" +#~ "최대값은 100% 또는 노즐 직경입니다.\n" +#~ "0으로 설정하면 선 너비가 꽉찬 내부 채우기 너비와 같아집니다." + +# AI Translated +#, no-c-format, no-boost-format +#~ msgid "" +#~ "Enable this option to slow down printing in areas where perimeters may have curled upwards.\n" +#~ "For example, additional slowdown will be applied when printing overhangs on sharp corners like the front of the Benchy hull, reducing curling which compounds over multiple layers.\n" +#~ "\n" +#~ "It is generally recommended to have this option switched on unless your printer cooling is powerful enough or the print speed is slow enough that perimeter curling does not happen. \n" +#~ "If printing with a high external perimeter speed, this parameter may introduce wall artifacts when slowing down, due to the potentially large variance in print speeds causing the extruder to be unable to keep up with the requested flow change.\n" +#~ "Root cause of these artifacts is most likely PA tuning being slightly off, especially when combined with a high PA smooth time.\n" +#~ "\n" +#~ "Recommendations when enabling this option:\n" +#~ "1. Reduce Pressure Advance smooth time to 0.015 - 0.02 so the extruder reacts quickly to the speed changes.\n" +#~ "2. Increase the minimum print speeds to limit the magnitude of the slowdown and reduce the variance between fast and slow segments.\n" +#~ "3. If artifacts still appear, enable Extrusion Rate Smoothing (ERS) to further smooth the flow transitions.\n" +#~ "\n" +#~ "Note: When this option is enabled, overhang perimeters are treated like overhangs, meaning the overhang speed is applied even if the overhanging perimeter is part of a bridge.\n" +#~ "For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 100% overhang speed will be applied." +#~ msgstr "" +#~ "둘레가 위로 말려 올라갈 수 있는 영역에서 출력 속도를 늦추려면 이 옵션을 활성화하십시오.\n" +#~ "예를 들어 Benchy 선체 앞부분과 같은 날카로운 모서리의 오버행을 출력할 때 추가 감속이 적용되어, 여러 레이어에 걸쳐 누적되는 말림을 줄여 줍니다.\n" +#~ "\n" +#~ "프린터 냉각 성능이 충분히 강하거나 출력 속도가 충분히 느려 둘레 말림이 발생하지 않는 경우가 아니라면, 일반적으로 이 옵션을 켜 두는 것이 좋습니다.\n" +#~ "외벽 속도를 높게 설정하여 출력하는 경우, 출력 속도 차이가 커져 압출기가 요구되는 압출량 변화를 따라가지 못해 감속 시 벽에 아티팩트가 생길 수 있습니다.\n" +#~ "이러한 아티팩트의 근본 원인은 대부분 PA 조정이 약간 어긋난 것이며, 특히 PA 평활 시간이 큰 경우에 두드러집니다.\n" +#~ "\n" +#~ "이 옵션을 활성화할 때의 권장 사항:\n" +#~ "1. 압출기가 속도 변화에 빠르게 반응하도록 Pressure Advance 평활 시간을 0.015 - 0.02로 줄이십시오.\n" +#~ "2. 최소 출력 속도를 높여 감속 폭을 제한하고 빠른 구간과 느린 구간의 차이를 줄이십시오.\n" +#~ "3. 그래도 아티팩트가 나타나면 압출량 평활화(ERS)를 활성화하여 압출량 전환을 더 부드럽게 하십시오.\n" +#~ "\n" +#~ "참고: 이 옵션을 활성화하면 오버행 둘레가 오버행처럼 처리되어, 오버행 둘레가 브릿지의 일부인 경우에도 오버행 속도가 적용됩니다.\n" +#~ "예를 들어 둘레가 100% 오버행이고 아래에서 받쳐 주는 벽이 없으면 100% 오버행 속도가 적용됩니다." + +#~ msgid "" +#~ "Speed of the externally visible bridge extrusions.\n" +#~ "\n" +#~ "In addition, if Slow down for curled perimeters is disabled or Classic overhang mode is enabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." +#~ msgstr "" +#~ "외부에서 볼 수 있는 브릿지 돌출 속도입니다.\n" +#~ "\n" +#~ "또한, 구부러진 둘레에 대한 속도 저하가 비활성화되거나 클래식 오버행 모드가 활성화된 경우 브릿지의 일부이든 오버행이든 상관없이 오버행 벽의 출력 속도는 13% 미만으로 지원됩니다." + +#~ msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above. Set to zero for auto." +#~ msgstr "이 별도의 설정은 반지름이 가진 둘레의 속도에 영향을 줍니다 <= 작은 둘레 임계값(small_perimeter_threshold) 이하인 둘레(일반적으로 구멍). 백분율로 설정하면(예: 80%) 외벽 속도 설정에서 계산됩니다. 자동의 경우 0으로 설정합니다." + +# AI Translated +#~ msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above. Set to zero for auto." +#~ msgstr "\"작은 둘레\"와 같지만 서포트에 적용됩니다. 이 별도 설정은 `small_support_perimeter_threshold` 이하 영역의 서포트 속도에 영향을 줍니다. 백분율(예: 80%)로 입력하면 위의 서포트 또는 서포트 접점 속도를 기준으로 계산됩니다. 0으로 설정하면 자동입니다." + +#~ msgid "" +#~ "Print sequence of the internal (inner) and external (outer) walls.\n" +#~ "\n" +#~ "Use Inner/Outer for best overhangs. This is because the overhanging walls can adhere to a neighbouring perimeter while printing. However, this option results in slightly reduced surface quality as the external perimeter is deformed by being squashed to the internal perimeter.\n" +#~ "\n" +#~ "Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended against the Outer/Inner option in most cases.\n" +#~ "\n" +#~ "Use Outer/Inner for the same external wall quality and dimensional accuracy benefits of Inner/Outer/Inner option. However, the Z seams will appear less consistent as the first extrusion of a new layer starts on a visible surface." +#~ msgstr "" +#~ "내벽 및 외벽의 출력 순서를 지정합니다.\n" +#~ "\n" +#~ "오버행을 가장 잘 출력하려면 내부/외부를 사용합니다. 이는 돌출된 벽이 출력하는 동안 인접한 경계에 부착될 수 있기 때문입니다. 그러나 이 옵션을 사용하면 외부 경계가 내부 경계에 눌려 변형되므로 표면 품질이 약간 저하됩니다.\n" +#~ "\n" +#~ "내부/외부/내부를 사용하면 외부 벽이 내부 경계에서 방해받지 않고 출력되므로 최상의 외부 표면 마감과 치수 정확도를 얻을 수 있습니다. 그러나 외부 벽을 출력할 내부 경계가 없으므로 오버행 성능이 저하됩니다. 이 옵션은 세 번째 경계부터 내부 벽을 먼저 출력한 다음 외부 경계, 마지막으로 첫 번째 내부 경계를 출력하므로 최소 3개 이상의 벽이 있어야 효과적입니다. 이 옵션은 대부분의 경우 외부/내부 옵션보다 권장됩니다.\n" +#~ "\n" +#~ "내부/외부/내부 옵션과 동일한 외벽 품질 및 치수 정확도 이점을 얻으려면 외부/내부를 사용하세요. 그러나 새 레이어의 첫 번째 돌출이 보이는 표면에서 시작되므로 Z 심이 덜 일관되게 나타납니다." + +#~ msgid "This is the speed for the first layer except for solid infill sections." +#~ msgstr "꽉찬 채우기 부분을 제외한 초기 레이어 속도" + +#~ msgid "This is the speed for solid infill parts of the first layer." +#~ msgstr "초기 레이어의 꽉찬 채우기 속도" + +#, no-c-format, no-boost-format +#~ msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to line width of sparse infill. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." +#~ msgstr "채우기 영역은 더 나은 접착을 위해 벽과 겹치도록 약간 확대됩니다. 백분율 값은 희박한 채우기의 선 너비를 기준으로 합니다. 거친 상단 표면을 초래하는 재료의 압출 및 축적 가능성을 최소화하려면 이 값을 ~10-15%로 설정하십시오." + +#, no-c-format, no-boost-format +#~ msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to line width of sparse infill." +#~ msgstr "상단 솔리드 채우기 영역은 더 나은 접착을 위해 벽과 겹치도록 약간 확대되고 상단 채우기가 벽과 만나는 핀홀의 모양을 최소화합니다. 25-30%의 값은 핀홀의 모양을 최소화하는 좋은 출발점입니다. 백분율 값은 희박한 채우기의 선 너비를 기준으로 합니다" + +#~ msgid "Interlocking depth of a segmented region. It will be ignored if \"mmu_segmented_region_max_width\" is zero or if \"mmu_segmented_region_interlocking_depth\" is bigger than \"mmu_segmented_region_max_width\". Zero disables this feature." +#~ msgstr "분할된 영역의 연동 깊이. \"mmu_segmented_region_max_width\"가 0이거나 \"mmu_segmented_region_interlocking_length\"가 \"mmu_segmented_region_max_width\"보다 크면 무시됩니다. 0은 이 기능을 비활성화합니다." + +# AI Translated +#~ msgid "" +#~ "Reduce the height of top-surface perimeters to match the model edge height.\n" +#~ "Affects perimeters with a slope less than this angle (degrees).\n" +#~ "A reasonable value is 35. Set to 0 to disable." +#~ msgstr "" +#~ "상단 표면 둘레의 높이를 모델 가장자리 높이에 맞춰 줄입니다.\n" +#~ "이 각도(도)보다 기울기가 작은 둘레에 적용됩니다.\n" +#~ "적절한 값은 35입니다. 0으로 설정하면 비활성화됩니다." + +#~ msgid "Role base wipe speed" +#~ msgstr "역할 기반 노즐 청소 속도" + +#~ msgid "" +#~ "A draft shield is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft. It is usually needed only with open frame printers, i.e. without an enclosure.\n" +#~ "\n" +#~ "Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used.\n" +#~ "Note: With the draft shield active, the skirt will be printed at skirt distance from the object. Therefore, if brims are active it may intersect with them. To avoid this, increase the skirt distance value.\n" +#~ msgstr "" +#~ "드래프트 실드는 바람으로 인해 ABS 또는 ASA 출력물이 뒤틀리거나 출력 베드에서 분리되는 것을 방지하는 데 유용합니다. 일반적으로 오픈 프레임 프린터, 즉 인클로저가 없는 경우에만 필요합니다.\n" +#~ "\n" +#~ "활성화 = 스커트가 가장 높은 출력물의 높이와 같습니다. 그렇지 않으면 '스커트 높이'가 사용됩니다.\n" +#~ "참고: 드래프트 실드가 활성화되면 스커트는 객체로부터 스커트 거리에 출력됩니다. 따라서 챙이 활성화된 경우 챙과 교차할 수 있습니다. 이를 방지하려면 스커트 거리 값을 늘리십시오.\n" + +#~ msgid "" +#~ "The maximum print speed when purging in the wipe tower and printing the wipe tower sparse layers. When purging, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +#~ "\n" +#~ "When printing the sparse layers, if the internal perimeter speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +#~ "\n" +#~ "Increasing this speed may affect the tower's stability as well as increase the force with which the nozzle collides with any blobs that may have formed on the wipe tower.\n" +#~ "\n" +#~ "Before increasing this parameter beyond the default of 90 mm/s, make sure your printer can reliably bridge at the increased speeds and that ooze when tool changing is well controlled.\n" +#~ "\n" +#~ "For the wipe tower external perimeters the internal perimeter speed is used regardless of this setting." +#~ msgstr "" +#~ "와이프 타워에서 버리기하고 와이프 타워 희박 레이어를 출력할 때 최대 출력 속도입니다. 버리기 시 희소 충전 속도 또는 필라멘트 최대 압출 속도에서 계산된 속도가 더 낮은 경우 가장 낮은 속도가 대신 사용됩니다.\n" +#~ "\n" +#~ "희소 레이어를 출력할 때 내부 주변 속도 또는 필라멘트 최대 압출 속도에서 계산된 속도가 더 낮은 경우 가장 낮은 속도가 대신 사용됩니다.\n" +#~ "\n" +#~ "이 속도를 높이면 타워의 안정성에 영향을 줄 수 있을 뿐만 아니라 노즐이 와이프 타워에 형성될 수 있는 얼룩과 충돌하는 힘도 증가할 수 있습니다.\n" +#~ "\n" +#~ "이 매개변수를 기본값인 90mm/초 이상으로 늘리기 전에 프린터가 증가된 속도에서 안정적으로 브릿지할 수 있고 도구 교환 시 흘러나오는 현상이 잘 제어되는지 확인하십시오.\n" +#~ "\n" +#~ "와이프 타워 외부 경계의 경우 이 설정에 관계없이 내부 경계 속도가 사용됩니다." + +# AI Translated +#~ msgid "" +#~ "Wipe tower outer wall type.\n" +#~ "1. Rectangle: The default wall type, a rectangle with fixed width and height.\n" +#~ "2. Cone: A cone with a fillet at the bottom to help stabilize the wipe tower.\n" +#~ "3. Rib: Adds four ribs to the tower wall for enhanced stability." +#~ msgstr "" +#~ "프라임 타워의 외벽 유형입니다.\n" +#~ "1. 직사각형: 기본 벽 유형으로, 너비와 높이가 고정된 직사각형입니다.\n" +#~ "2. 원뿔: 프라임 타워를 안정화하기 위해 바닥에 필렛이 있는 원뿔입니다.\n" +#~ "3. 리브: 안정성을 높이기 위해 타워 벽에 리브 4개를 추가합니다." + +#~ msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker or narrower than they normally would be. The spacing is adjusted automatically." +#~ msgstr "와이프 타워의 퍼지 라인에 추가 흐름이 사용됩니다. 이렇게 하면 퍼지 라인이 평소보다 두껍거나 좁아집니다. 간격은 자동으로 조정됩니다." + +#~ msgid "" +#~ "Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. Higher values remove more and longer walls.\n" +#~ "\n" +#~ "NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the Advanced settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." +#~ msgstr "" +#~ "짧고 닫히지 않은 벽이 출력되는 것을 방지하려면 이 값을 조정하십시오. 이로 인해 출력 시간이 늘어날 수 있습니다. 값이 높을수록 더 많은 벽과 긴 벽이 제거됩니다.\n" +#~ "\n" +#~ "참고: 모델 외부의 시각적 틈을 방지하기 위해 하단 및 상단 표면은 이 값의 영향을 받지 않습니다. 상단 표면으로 간주되는 항목의 감도를 조정하려면 아래 고급 설정에서 '벽 하나의 임계값'을 조정하세요. '하나의 벽 임계값'은 이 설정이 기본값인 0.5보다 높게 설정되거나 단일 벽 상단 표면이 활성화된 경우에만 표시됩니다." + # AI Translated #, boost-format #~ msgid "Split into %1% part" diff --git a/localization/i18n/list.txt b/localization/i18n/list.txt index aab1c50ec9..3fc3c87424 100644 --- a/localization/i18n/list.txt +++ b/localization/i18n/list.txt @@ -82,6 +82,7 @@ src/slic3r/GUI/Gizmos/GLGizmoMeasure.cpp src/slic3r/GUI/Gizmos/GLGizmoMeasure.hpp src/slic3r/GUI/Gizmos/GLGizmoAssembly.cpp src/slic3r/GUI/Gizmos/GLGizmoAssembly.hpp +src/slic3r/GUI/Gizmos/GLGizmoAlignment.cpp src/slic3r/GUI/GUI.cpp src/slic3r/GUI/GUI_App.cpp src/slic3r/GUI/GUI_AuxiliaryList.cpp @@ -214,6 +215,7 @@ src/libslic3r/GCode.cpp src/libslic3r/GCodeWriter.cpp src/libslic3r/GCode/ToolOrdering.cpp src/libslic3r/GCode/SeamPlacer.cpp +src/libslic3r/GCode/GCodeStatistics.cpp src/libslic3r/ExtrusionEntity.cpp src/libslic3r/Flow.cpp src/libslic3r/Format/AMF.cpp diff --git a/localization/i18n/lt/OrcaSlicer_lt.po b/localization/i18n/lt/OrcaSlicer_lt.po index 64e360892f..476cf2fbd1 100644 --- a/localization/i18n/lt/OrcaSlicer_lt.po +++ b/localization/i18n/lt/OrcaSlicer_lt.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-10-13 09:55-0300\n" +"POT-Creation-Date: 2026-10-14 10:04-0300\n" "PO-Revision-Date: 2026-07-02 14:13+0300\n" "Last-Translator: Gintaras Kučinskas \n" "Language-Team: \n" @@ -2431,6 +2431,66 @@ msgstr "Tinklo papildinio ribojimas" msgid "Privacy Policy Update" msgstr "Privatumo politikos atnaujinimas" +# AI Translated +msgid "All your filament presets are available on the printers they were made for." +msgstr "Visi jūsų gijų profiliai pasiekiami spausdintuvuose, kuriems jie buvo sukurti." + +# AI Translated +msgid "Migrate Filament Presets" +msgstr "Perkelti gijų profilius" + +# AI Translated +msgid "" +"OrcaSlicer 2.5.0 restructured many system filament presets to fix incorrect profiles and prepare for future features. As a result, the presets below no longer show on some printers they were made for. Sorry for the trouble; this is a one-time fix.\n" +"\n" +"Add those printers back to your presets now? Your presets are backed up first. You can also do this later from Help > Migrate Filament Presets." +msgstr "" +"OrcaSlicer 2.5.0 versijoje pertvarkyta daug sistemos gijų profilių, kad būtų ištaisyti neteisingi profiliai ir pasiruošta būsimoms funkcijoms. Dėl to toliau nurodyti profiliai nebėra rodomi kai kuriuose spausdintuvuose, kuriems jie buvo sukurti. Atsiprašome už nepatogumus; tai vienkartinis pataisymas.\n" +"\n" +"Ar dabar grąžinti tuos spausdintuvus į jūsų profilius? Pirmiausia sukuriama atsarginė jūsų profilių kopija. Tai galite padaryti ir vėliau, per Pagalba > Perkelti gijų profilius." + +# AI Translated +#, boost-format +msgid "%1% (based on %2%)" +msgstr "%1% (pagal %2%)" + +msgid "Don't remind me again" +msgstr "Daugiau neberodyti šio priminimo" + +# AI Translated +msgid "Your presets could not be backed up, so they were not migrated." +msgstr "Nepavyko sukurti atsarginės jūsų profilių kopijos, todėl jie nebuvo perkelti." + +# AI Translated +msgid "The user presets folder could not be locked, so nothing was migrated. Another OrcaSlicer instance may be saving presets; try again later from Help > Migrate Filament Presets." +msgstr "Nepavyko užrakinti naudotojo profilių aplanko, todėl niekas nebuvo perkelta. Galbūt kitas OrcaSlicer egzempliorius šiuo metu išsaugo profilius; bandykite vėliau per Pagalba > Perkelti gijų profilius." + +# AI Translated +#, boost-format +msgid "" +"Your filament presets could not be migrated. A backup of your presets was saved to:\n" +"%1%" +msgstr "" +"Nepavyko perkelti jūsų gijų profilių. Atsarginė jūsų profilių kopija įrašyta čia:\n" +"%1%" + +# AI Translated +#, boost-format +msgid "" +"Your filament presets were migrated. Select them again in the filament list where you used them.\n" +"\n" +"A backup of your presets was saved to:\n" +"%1%" +msgstr "" +"Jūsų gijų profiliai perkelti. Pasirinkite juos iš naujo gijų sąraše ten, kur juos naudojote.\n" +"\n" +"Atsarginė jūsų profilių kopija įrašyta čia:\n" +"%1%" + +# AI Translated +msgid "These presets could not be migrated:" +msgstr "Šių profilių nepavyko perkelti:" + #, c-format, boost-format msgid "your Orca Cloud profile (user ID: \"%s\")" msgstr "jūsų „Orca Cloud“ profilis (vartotojo ID: „%s“)" @@ -3148,6 +3208,62 @@ msgstr "(Prarasta spalva)" msgid "Center" msgstr "Centras" +# AI Translated +msgid "Distribute left-right" +msgstr "Paskirstyti kairės-dešinės kryptimi" + +# AI Translated +msgid "Distribute front-back" +msgstr "Paskirstyti priekio-galo kryptimi" + +# AI Translated +msgid "Distribute top-bottom" +msgstr "Paskirstyti viršaus-apačios kryptimi" + +# AI Translated +msgid "Align left" +msgstr "Sulygiuoti pagal kairįjį kraštą" + +# AI Translated +msgid "Align left-right center" +msgstr "Sulygiuoti centrus kairės-dešinės kryptimi" + +# AI Translated +msgid "Align right" +msgstr "Sulygiuoti pagal dešinįjį kraštą" + +# AI Translated +msgid "Align front" +msgstr "Sulygiuoti pagal priekinį kraštą" + +# AI Translated +msgid "Align front-back center" +msgstr "Sulygiuoti centrus priekio-galo kryptimi" + +# AI Translated +msgid "Align back" +msgstr "Sulygiuoti pagal galinį kraštą" + +# AI Translated +msgid "Align bottom" +msgstr "Sulygiuoti pagal apatinį kraštą" + +# AI Translated +msgid "Align top-bottom center" +msgstr "Sulygiuoti centrus viršaus-apačios kryptimi" + +# AI Translated +msgid "Align top" +msgstr "Sulygiuoti pagal viršutinį kraštą" + +# AI Translated +msgid "Align/Distribute" +msgstr "Sulygiuoti/Paskirstyti" + +# AI Translated +msgid "Align and distribute objects" +msgstr "Sulygiuoti ir paskirstyti objektus" + msgid "Drop" msgstr "Nuleisti" @@ -5022,8 +5138,9 @@ msgstr "" msgid "The recommended nozzle temperature for this filament type is [%d, %d] degrees Celsius." msgstr "Rekomenduojama šio tipo gijos purkštuko temperatūra yra [%d, %d] laipsnių Celsijaus." +# AI Translated msgid "Adaptive Pressure Advance model validation failed:\n" -msgstr "Nepavyko patvirtinti adaptyviojo slėgio išankstinio (Pressure Advance) modelio:\n" +msgstr "Nepavyko patvirtinti adaptyviojo Pressure Advance modelio:\n" msgid "" "Too small max volumetric speed.\n" @@ -5739,8 +5856,9 @@ msgstr "Sluoksnio laikas" msgid "Layer Time (log)" msgstr "Sluoksnio laikas (log)" +# AI Translated msgid "Pressure Advance" -msgstr "Slėgio išankstinis valdymas (Pressure Advance)" +msgstr "Pressure Advance" msgid "Noop" msgstr "Tuščia operacija (Noop)" @@ -6680,6 +6798,10 @@ msgstr "Nustatymų vedlys" msgid "Show Configuration Folder" msgstr "Rodyti konfigūravimo katalogą" +# AI Translated +msgid "Bring back filament presets that a profile update removed from printers they were made for" +msgstr "Grąžinti gijų profilius, kuriuos profilių atnaujinimas pašalino iš spausdintuvų, kuriems jie buvo sukurti" + msgid "Troubleshoot Center" msgstr "Pagalbos centras" @@ -6993,8 +7115,9 @@ msgstr "Temperatūros kalibravimas" msgid "Max flowrate" msgstr "Maksimalus tūrinis srautas" +# AI Translated msgid "Pressure advance" -msgstr "Slėgio kompensavimas (Pressure Advance)" +msgstr "Pressure Advance" msgid "Flow ratio" msgstr "Srauto santykis" @@ -14030,6 +14153,18 @@ msgstr "keli susikirtimai su perimetru, panaudotas tik vienas (%1%)" msgid "a perimeter is fully inside a modifier, the modifier was not applied to it (%1%)" msgstr "perimetras yra visiškai modifikatoriaus viduje, modifikatorius jam nepritaikytas (%1%)" +# AI Translated +#. TRN: %1% is the modifier type "Seam Blocked" as in the menu, %2% the modifier name, %3% the object name. +#, boost-format +msgid "%1% modifier \"%2%\" of \"%3%\" covers an entire perimeter" +msgstr "Modifikatorius %1% „%2%“ objekto „%3%“ apima visą perimetrą" + +# AI Translated +#. TRN: %1% is the modifier type "Seam Blocked" as in the menu, %2% the modifier name, %3% the object name, %4% the number of modifiers. +#, boost-format +msgid "%1% modifier \"%2%\" of \"%3%\" (%4% in total) covers an entire perimeter" +msgstr "Modifikatorius %1% „%2%“ objekto „%3%“ (iš viso %4%) apima visą perimetrą" + # AI Translated #, boost-format msgid "modifier \"%1%\" of \"%2%\" had no effect on the seam (it might not reach the centerline of the printed perimeter)" @@ -14529,8 +14664,9 @@ msgstr "" msgid "The precise wall option will be ignored for outer-inner or inner-outer-inner wall sequences." msgstr "Tikslios sienelės (precise wall) parinktis bus ignoruojama esant išorinės–vidinės arba vidinės–išorinės–vidinės sienelių spausdinimo sekai." +# AI Translated msgid "The Adaptive Pressure Advance model for one or more extruders may contain invalid values." -msgstr "Vieno ar kelių ekstruderių „Adaptive Pressure Advance“ modelis gali turėti netinkamų reikšmių." +msgstr "Vieno ar kelių ekstruderių adaptyviojo Pressure Advance modelis gali turėti netinkamų reikšmių." msgid "Filament shrinkage will not be used because filament shrinkage for the used filaments does not match." msgstr "Gijų susitraukimas nenaudojamas, nes naudojamų gijų susitraukimas labai skiriasi." @@ -15024,18 +15160,19 @@ msgstr "" "\n" "Faktinis naudojamas tiltelio srautas apskaičiuojamas padauginus šią reikšmę iš gijos srauto koeficiento (filament flow ratio) ir objekto srauto koeficiento (jei jis nustatytas)." +# AI Translated msgid "" "Line width of the Bridge. If expressed as a %, it will be computed over the nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" -"If set to 0, the line width will match the Internal solid infill width." +"If set to 0, the line width will match the Internal solid infill width, or the nozzle diameter for thick bridges." msgstr "" -"Tiltelio linijos plotis. Jei išreikštas procentais (%), jis bus skaičiuojamas nuo purkštuko skersmens.\n" -"Rekomenduojama naudoti su didesniu tiltelio tankiu arba išorinio tilto srauto koeficientu.\n" +"Tilto linijos plotis. Jei išreikštas procentais (%), jis bus skaičiuojamas nuo purkštuko skersmens.\n" +"Rekomenduojama naudoti su didesniu tilto tankiu arba išorinio tilto srauto koeficientu.\n" "\n" "Maksimali reikšmė yra 100 % arba purkštuko skersmuo.\n" -"Nustačius 0, linijos plotas sutaps su vidinio vientiso užpildo (internal solid infill) pločiu." +"Nustačius 0, linijos plotis sutaps su vidinio vientiso užpildo pločiu, o storų tiltų atveju – su purkštuko skersmeniu." msgid "Internal bridge flow ratio" msgstr "Vidinio tilto srauto koeficientas" @@ -15301,6 +15438,7 @@ msgstr "Įjunkite šią parinktį, kad sulėtintumėte greitį spausdinant išky msgid "Slow down for curled perimeters" msgstr "Sulėtinti greitį riečiantis perimetrams" +# AI Translated #, no-c-format, no-boost-format msgid "" "Enable this option to slow down printing in areas where perimeters may have curled upwards.\n" @@ -15316,34 +15454,35 @@ msgid "" "3. If artifacts still appear, enable Extrusion Rate Smoothing (ERS) to further smooth the flow transitions.\n" "\n" "Note: When this option is enabled, overhang perimeters are treated like overhangs, meaning the overhang speed is applied even if the overhanging perimeter is part of a bridge.\n" -"For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 100% overhang speed will be applied." +"For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 75% overhang speed will be applied, limited by the bridge speed." msgstr "" "Įjunkite šią parinktį, kad sumažintumėte spausdinimo greitį vietose, kur perimetrai linkę riestis į viršų.\n" "Pavyzdžiui, papildomas sulėtinimas bus taikomas spausdinant iškyšas ties aštriais kampais (kaip „Benchy“ laivelio priekis) – tai apsaugo nuo sluoksnių rietimosi, kuris linkęs kauptis per kelis sluoksnius.\n" "\n" "Rekomenduojama visada laikyti šią parinktį įjungtą, nebent spausdintuvo aušinimas yra itin galingas arba spausdinimo greitis toks mažas, kad perimetrų rietimasis nevyksta.\n" -"Jei spausdinama dideliu išorinio perimetro greičiu, šis parametras lėtėjimo metu gali sukelti sienelių artefaktų (defektų), nes dėl didelių greičio šuolių ekstruderis gali nespėti sureguliuoti srauto pokyčio.\n" +"Jei spausdinama dideliu išorinio perimetro greičiu, šis parametras lėtėjimo metu gali sukelti sienelių artefaktų, nes dėl didelių greičio šuolių ekstruderis gali nespėti sureguliuoti srauto pokyčio.\n" "Pagrindinė tokių artefaktų priežastis dažniausiai yra netiksliai suderintas „Pressure Advance“ (PA) parametras, ypač jei naudojama didelė „PA smooth time“ reikšmė.\n" "\n" "Rekomendacijos įjungus šią parinktį:\n" "1. Sumažinkite „Pressure Advance smooth time“ iki 0.015 - 0.02, kad ekstruderis greitai reaguotų į greičio pokyčius.\n" "2. Padidinkite minimalų spausdinimo greitį, kad apribotumėte sulėtėjimo mastą ir sumažintumėte skirtumą tarp greitų bei lėtų segmentų.\n" -"3. Jei artefaktai išlieka, įjunkite „Ekstruzijos srauto glotninimą“ (ERS), kad sušvelgintumėte srauto perėjimus.\n" +"3. Jei artefaktai išlieka, įjunkite „Išstūmimo greičio išlyginimas“ (ERS), kad sušvelnintumėte srauto perėjimus.\n" "\n" -"Pastaba: kai ši parinktis įjungta, išsikišę perimetrai yra traktuojami kaip iškyšos, t. y. iškyšų greitis taikomas net ir tada, kai perimetras yra tiltelio dalis.\n" -"Pavyzdžiui, kai perimetrai kyšo 100 % (apačioje nėra jokios palaikančios sienelės), bus taikomas būtent 100 % iškyšos greitis." +"Pastaba: kai ši parinktis įjungta, išsikišę perimetrai yra traktuojami kaip iškyšos, t. y. iškyšų greitis taikomas net ir tada, kai perimetras yra tilto dalis.\n" +"Pavyzdžiui, kai perimetrai kyšo 100 % (apačioje nėra jokios palaikančios sienelės), bus taikomas 75 % iškyšos greitis, apribotas tilto greičiu." msgid "mm/s or %" msgstr "mm/s arba %" +# AI Translated msgid "" "Speed of the externally visible bridge extrusions.\n" "\n" -"In addition, if Slow down for curled perimeters is disabled or Classic overhang mode is enabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." +"In addition, if Slow down for curled perimeters is disabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." msgstr "" -"Išoriškai matomų tiltelio ekstruzijų greitis.\n" +"Išoriškai matomų tilto ekstruzijų greitis.\n" "\n" -"Papildomai, jei funkcija „Sulėtinti greitį riesantis perimetrams“ yra išjungta arba įjungtas „Klasikinis iškyšų režimas“, šis greitis bus taikomas iškyšų sienelėms, kurių atrama yra mažesnė nei 13 % (nesvarbu, ar jos yra tiltelio, ar iškyšos dalis)." +"Papildomai, jei funkcija „Sulėtinti greitį riečiantis perimetrams“ yra išjungta, šis greitis bus taikomas iškyšų sienelėms, kurių atrama yra mažesnė nei 13 % (nesvarbu, ar jos yra tilto, ar iškyšos dalis)." msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%." msgstr "Vidinių tiltelių spausdinimo greitis. Jei reikšmė nurodoma procentais, ji apskaičiuojama pagal „bridge_speed“ (tiltelių greitį). Numatytoji reikšmė – 150 %." @@ -15921,8 +16060,9 @@ msgstr "Tai išorinių detalių sienelių spausdinimo greitis. Siekiant aukštes msgid "Small perimeters" msgstr "Mažos trajektorijos (Small perimeters)" -msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above. Set to zero for auto." -msgstr "Šis nustatymas valdo perimetrų, kurių spindulys $\\le$ „Mažų perimetrų riba“ (dažniausiai tai nedidelės skylės), spausdinimo greitį. Jei nurodomas procentais (pvz., 80 %), jis apskaičiuojamas pagal viršuje nustatytą išorinės sienelės greitį. Nustačius 0, greitis parandamas automatiškai." +# AI Translated +msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above." +msgstr "Šis atskiras nustatymas valdo perimetrų, kurių spindulys <= small_perimeter_threshold (dažniausiai tai skylės), spausdinimo greitį. Jei nurodomas procentais (pvz., 80 %), jis apskaičiuojamas pagal viršuje nustatytą išorinės sienelės greitį." msgid "Small perimeters threshold" msgstr "Mažų perimetrų riba" @@ -15933,8 +16073,9 @@ msgstr "Nustato mažų perimetrų ilgio arba spindulio ribą. Numatytoji reikšm msgid "Small support perimeters" msgstr "Maži atramų perimetrai" -msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above. Set to zero for auto." -msgstr "Tas pats, kas „Maži perimetrai“, bet skirta atramoms. Šis atskiras nustatymas turės įtakos atramų greičiui tose vietose, kurios yra ≤ `small_support_perimeter_threshold`. Jei išreikšta procentais (pavyzdžiui: 80 %), bus skaičiuojama nuo aukščiau nustatyto atramų arba atramų sąsajos greičio. Nustatykite nulį, jei norite naudoti automatinį režimą." +# AI Translated +msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above." +msgstr "Tas pats, kas „Mažos trajektorijos (Small perimeters)“, bet skirta atramoms. Šis atskiras nustatymas turės įtakos atramų greičiui tose vietose, kurios yra <= `small_support_perimeter_threshold`. Jei išreikšta procentais (pavyzdžiui: 80 %), bus skaičiuojama nuo aukščiau nustatyto atramų arba atramų sąsajos greičio." msgid "Small support perimeters threshold" msgstr "Mažo atramų perimetro ribos" @@ -15945,22 +16086,23 @@ msgstr "Nustatoma mažo atramų perimetro ilgio riba. Numatytoji riba yra 0 mm" msgid "Walls printing order" msgstr "Sienelių spausdinimo eiliškumas" +# AI Translated msgid "" "Print sequence of the internal (inner) and external (outer) walls.\n" "\n" "Use Inner/Outer for best overhangs. This is because the overhanging walls can adhere to a neighbouring perimeter while printing. However, this option results in slightly reduced surface quality as the external perimeter is deformed by being squashed to the internal perimeter.\n" "\n" -"Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended against the Outer/Inner option in most cases.\n" +"Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended over the Outer/Inner option in most cases.\n" "\n" "Use Outer/Inner for the same external wall quality and dimensional accuracy benefits of Inner/Outer/Inner option. However, the Z seams will appear less consistent as the first extrusion of a new layer starts on a visible surface." msgstr "" -"Vidinių (inner) ir išorinių (outer) sienelių spausdinimo seka.\n" +"Vidinių ir išorinių sienelių spausdinimo seka.\n" "\n" -"„Vidinis / išorinis“ (Inner/Outer) užtikrina geriausią iškyšų kokybę, nes spausdinama iškyšos sienelė turi prie ko prisitvirtinti (prie vidinio perimetro). Tačiau išorinio paviršiaus kokybė gali nežymiai nukentėti, nes išorinis perimetras gali būti šiek tiek deformuojamas (išspaudžiamas) vidinio perimetro įtakos.\n" +"„Vidinis / išorinis“ užtikrina geriausią iškyšų kokybę, nes spausdinama iškyšos sienelė turi prie ko prisitvirtinti (prie vidinio perimetro). Tačiau išorinio paviršiaus kokybė gali nežymiai nukentėti, nes išorinis perimetras gali būti šiek tiek deformuojamas (išspaudžiamas) vidinio perimetro įtakos.\n" "\n" -"„Vidinis / išorinis / vidinis“ (Inner/Outer/Inner) užtikrina geriausią išorinio paviršiaus kokybę ir matmenų tikslumą, nes išorinė sienelė spausdinama netrikdomai. Visgi, iškyšų kokybė sumažėja, nes nėra pilno vidinio pagrindo išorinei sienelei prilaikyti. Šis nustatymas efektyvus tik turint bent 3 sieneles – pjaustyklė pirmiausia spausdina vidines sieneles nuo 3-iojo perimetro gilyn, tada išorinį perimetrą, ir galiausiai pirmąjį vidinį perimetrą. Daugeliu atvejų tai yra pranašesnis pasirinkimas nei „Išorinis / vidinis“.\n" +"„Vidinis / išorinis / vidinis“ užtikrina geriausią išorinio paviršiaus kokybę ir matmenų tikslumą, nes išorinė sienelė spausdinama netrikdomai. Visgi, iškyšų kokybė sumažėja, nes nėra pilno vidinio pagrindo išorinei sienelei prilaikyti. Šis nustatymas efektyvus tik turint bent 3 sieneles – pirmiausia spausdinamos vidinės sienelės nuo 3-iojo perimetro gilyn, tada išorinis perimetras ir galiausiai pirmasis vidinis perimetras. Daugeliu atvejų tai yra pranašesnis pasirinkimas nei „Išorinis / vidinis“.\n" "\n" -"„Išorinis / vidinis“ (Outer/Inner) suteikia panašų paviršiaus švarumą ir matmenų tikslumą kaip ir „Vidinis / išorinis / vidinis“, tačiau vertikalios siūlės (Z seam) gali atrodyti mažiau tvarkingos, nes naujas sluoksnis pradedamas spausdinti tiesiai ant matomo išorinio paviršiaus." +"„Išorinis / vidinis“ suteikia panašų paviršiaus švarumą ir matmenų tikslumą kaip ir „Vidinis / išorinis / vidinis“, tačiau Z siūlės gali atrodyti mažiau tvarkingos, nes naujas sluoksnis pradedamas spausdinti tiesiai ant matomo išorinio paviršiaus." msgid "Inner/Outer" msgstr "Vidinis / išorinis" @@ -16082,14 +16224,17 @@ msgstr "" "\n" "Galutinis objekto srauto koeficientas gaunamas šią reikšmę padauginus iš plastiko srauto koeficiento (filament flow ratio)." +# AI Translated msgid "Enable pressure advance" -msgstr "Įjungti slėgio kompensavimą (Pressure Advance)" +msgstr "Įjungti Pressure Advance" +# AI Translated msgid "Enable pressure advance, auto calibration result will be overwritten once enabled." -msgstr "Įjungia slėgio kompensavimą (Pressure Advance). Jį aktyvavus, automatinio kalibravimo rezultatai bus nepaisomi." +msgstr "Įjungia Pressure Advance. Jį aktyvavus, automatinio kalibravimo rezultatai bus nepaisomi." +# AI Translated msgid "Pressure advance (Klipper) AKA Linear advance factor (Marlin)." -msgstr "Slėgio kompensavimas (Pressure Advance „Klipper“ mikroprogramoje) arba linijinis kompensavimas (Linear Advance „Marlin“ mikroprogramoje)." +msgstr "Pressure Advance („Klipper“ mikroprogramoje), dar vadinamas Linear Advance koeficientu („Marlin“ mikroprogramoje)." # AI Translated msgid "Enable adaptive pressure advance (beta)" @@ -16114,6 +16259,7 @@ msgstr "" msgid "Adaptive pressure advance measurements (beta)" msgstr "Adaptyviojo Pressure Advance matavimai (beta)" +# AI Translated #, no-c-format, no-boost-format msgid "" "Add sets of pressure advance (PA) values, the volumetric flow speeds and accelerations they were measured at, separated by a comma. One set of values per line. For example\n" @@ -16127,7 +16273,7 @@ msgid "" "2. Take note of the optimal PA value for each volumetric flow speed and acceleration. You can find the flow number by selecting flow from the color scheme drop down and move the horizontal slider over the PA pattern lines. The number should be visible at the bottom of the page. The ideal PA value should be decreasing the higher the volumetric flow is. If it is not, confirm that your extruder is functioning correctly. The slower and with less acceleration you print, the larger the range of acceptable PA values. If no difference is visible, use the PA value from the faster test\n" "3. Enter the triplets of PA values, Flow and Accelerations in the text box here and save your filament profile." msgstr "" -"Įveskite slėgio kompensavimo (PA) reikšmių rinkinius, nurodydami tūrinį srautą bei pagreitį, prie kurių jie buvo išmatuoti, atskirdami kableliais. Vienoje eilutėje – vienas trejetas. Pavyzdžiui:\n" +"Įveskite Pressure Advance (PA) reikšmių rinkinius, nurodydami tūrinį srautą bei pagreitį, prie kurių jie buvo išmatuoti, atskirdami kableliais. Vienoje eilutėje – vienas trejetas. Pavyzdžiui:\n" "0.04,3.96,3000\n" "0.033,3.96,10000\n" "0.029,7.91,3000\n" @@ -16150,7 +16296,7 @@ msgid "" "\n" "This is an experimental option, as if the PA profile is not set accurately, it will cause uniformity issues." msgstr "" -"Įjunkite „Adaptive PA“, kai elemente pasikeičia srautas, pavyzdžiui, keičiantis linijos pločiui kampuose arba iškyšose.\n" +"Įjunkite adaptyvųjį PA, kai elemente pasikeičia srautas, pavyzdžiui, keičiantis linijos pločiui kampuose arba iškyšose.\n" "\n" "Nėra suderinama su „Prusa“ spausdintuvais, nes jie pristabdo darbą PA pakeitimams apdoroti, o tai sukelia vėlavimą ir defektus.\n" "\n" @@ -16900,14 +17046,16 @@ msgstr "Pirmojo sluoksnio aukštis" msgid "Height of the first layer. Making the first layer height thicker can improve build plate adhesion." msgstr "Pirmojo sluoksnio aukštis. Padarius pirmąjį sluoksnį storesnį, galima pagerinti sukibimą su pagrindu." -msgid "This is the speed for the first layer except for solid infill sections." -msgstr "Pirmojo sluoksnio greitis, išskyrus vientiso užpildo dalį." +# AI Translated +msgid "This is the speed for the walls and brim of the first layer." +msgstr "Pirmojo sluoksnio sienelių ir krašto greitis." msgid "First layer infill" msgstr "Pirmojo sluoksnio užpildas" -msgid "This is the speed for solid infill parts of the first layer." -msgstr "Pirmojo sluoksnio vientiso užpildo dalies greitis." +# AI Translated +msgid "This is the speed for the first layer except for walls and brim, such as infill, gap fill and support." +msgstr "Pirmojo sluoksnio greitis, išskyrus sieneles ir kraštą, pavyzdžiui, užpildą, plyšių užpildymą ir atramas." msgid "First layer travel speed" msgstr "Pirmojo sluoksnio tuščiosios eigos (travel) greitis" @@ -17619,16 +17767,18 @@ msgstr "Vidinio reto užpildo linijos plotis. Jei išreiškiama procentais (%%), msgid "Infill/wall overlap" msgstr "Užpildo ir sienelės persidengimas" +# AI Translated #, no-c-format, no-boost-format -msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to line width of sparse infill. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." -msgstr "Užpildo plotas yra šiek tiek padidinamas, kad persidengtų su sienele geresniam sukibimui. Procentinė vertė yra santykinė su reto užpildo linijos pločiu. Nustatykite šią vertę ties ~10–15%, kad sumažintumėte perteklinio išspaudimo (overextrusion) ir medžiagos sankaupų riziką, dėl kurios viršutiniai paviršiai tampa šiurkštūs." +msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to the inner wall line width. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." +msgstr "Užpildo plotas yra šiek tiek padidinamas, kad persidengtų su sienele geresniam sukibimui. Procentinė vertė yra santykinė su vidinės sienelės linijos pločiu. Nustatykite šią vertę ties ~10-15%, kad sumažintumėte perteklinio išspaudimo ir medžiagos sankaupų riziką, dėl kurios viršutiniai paviršiai tampa šiurkštūs." msgid "Top/Bottom solid infill/wall overlap" msgstr "Viršutinio / apatinio vientiso užpildo ir sienelės persidengimas" +# AI Translated #, no-c-format, no-boost-format -msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to line width of sparse infill." -msgstr "Viršutinio vientiso užpildo plotas yra šiek tiek padidinamas, kad persidengtų su sienele geresniam sukibimui ir sumažintų mikroskylučių (pinholes) susidarymą sandūroje. 25–30%% vertė yra geras pradinis taškas, sumažinantis skylučių matomumą. Procentinė vertė yra santykinė su reto užpildo linijos pločiu." +msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to the inner wall line width." +msgstr "Viršutinio vientiso užpildo plotas yra šiek tiek padidinamas, kad persidengtų su sienele geresniam sukibimui ir sumažintų mikroskylučių susidarymą sandūroje, kur viršutinis užpildas susiduria su sienelėmis. 25-30% vertė yra geras pradinis taškas, sumažinantis skylučių matomumą. Procentinė vertė yra santykinė su vidinės sienelės linijos pločiu." msgid "This is the speed for internal sparse infill." msgstr "Vidinio reto užpildo greitis." @@ -17654,8 +17804,9 @@ msgstr "Didžiausias segmentuotos srities plotis. Nulis išjungia šią funkcij msgid "Interlocking depth of a segmented region" msgstr "Segmentuotos srities susikirtimo gylis" -msgid "Interlocking depth of a segmented region. It will be ignored if \"mmu_segmented_region_max_width\" is zero or if \"mmu_segmented_region_interlocking_depth\" is bigger than \"mmu_segmented_region_max_width\". Zero disables this feature." -msgstr "Segmentuoto regiono susikirtimo gylis. Jis bus ignoruojamas, jei „mmu_segmented_region_max_width“ yra nulis arba jei „mmu_segmented_region_interlocking_depth“ yra didesnis už „mmu_segmented_region_max_width“. Nulis išjungia šią funkciją." +# AI Translated +msgid "Interlocking depth of a segmented region. On every other layer, the segmented region is limited to this depth. It will be ignored if \"interlocking_beam\" is enabled. Zero disables this feature." +msgstr "Segmentuotos srities susikirtimo gylis. Kas antrame sluoksnyje segmentuota sritis apribojama šiuo gyliu. Bus nepaisoma, jei įjungta „interlocking_beam“. Nulis išjungia šią funkciją." msgid "Use beam interlocking" msgstr "Naudoti sijų sujungimą (interlocking)" @@ -17756,13 +17907,14 @@ msgstr "Įjungti Z-sluoksnių kontūravimą (dar žinomą kaip Z-sluoksnių glot msgid "Minimize wall height angle" msgstr "Sienelės aukščio kampo minimizavimas" +# AI Translated msgid "" "Reduce the height of top-surface perimeters to match the model edge height.\n" -"Affects perimeters with a slope less than this angle (degrees).\n" +"Affects perimeters with a slope greater than this angle (degrees).\n" "A reasonable value is 35. Set to 0 to disable." msgstr "" "Sumažinti viršutinio paviršiaus perimetrų aukštį, kad jis sutaptų su modelio krašto aukščiu.\n" -"Paveikia perimetrus, kurių nuolydis yra mažesnis už šį kampą (laipsniais).\n" +"Paveikia perimetrus, kurių nuolydis yra didesnis už šį kampą (laipsniais).\n" "Protinga vertė yra 35. Nustatykite 0, kad išjungtumėte." msgid "Don't alternate fill direction" @@ -18124,9 +18276,9 @@ msgstr "" "\n" "Reikšmė 0 išjungia šią funkciją.\n" "\n" -"Spartiems, didelio srauto tiesioginės pavaros (Direct Drive) spausdintuvams (tokiems kaip „Bambu Lab“ arba „Voron“) ši reikšmė paprastai nėra būtina. Vis dėlto ji gali duoti nedidelės naudos tais atvejais, kai spausdinimo elementų greičiai labai skiriasi – pavyzdžiui, esant žymiems sulėtėjimams ties iškyšomis. Tokiais atvejais rekomenduojama didelė reikšmė (apie 300–350 mm³/s²), kuri užtikrina pakankamą išlyginimą, padedantį slėgio kompensavimo (Pressure Advance) algoritmui pasiekti sklandesnį srauto perėjimą.\n" +"Spartiems, didelio srauto tiesioginės pavaros (Direct Drive) spausdintuvams (tokiems kaip „Bambu Lab“ arba „Voron“) ši reikšmė paprastai nėra būtina. Vis dėlto ji gali duoti nedidelės naudos tais atvejais, kai spausdinimo elementų greičiai labai skiriasi – pavyzdžiui, esant žymiems sulėtėjimams ties iškyšomis. Tokiais atvejais rekomenduojama didelė reikšmė (apie 300–350 mm³/s²), kuri užtikrina pakankamą išlyginimą, padedantį Pressure Advance algoritmui pasiekti sklandesnį srauto perėjimą.\n" "\n" -"Lėtesniems spausdintuvams be slėgio kompensavimo (Pressure Advance) šią reikšmę reikėtų nustatyti gerokai mažesnę. Tiesioginės pavaros (Direct Drive) ekstruderiams gera pradinė reikšmė yra 10–15 mm³/s², o „Bowden“ tipo – 5–10 mm³/s².\n" +"Lėtesniems spausdintuvams be Pressure Advance šią reikšmę reikėtų nustatyti gerokai mažesnę. Tiesioginės pavaros (Direct Drive) ekstruderiams gera pradinė reikšmė yra 10–15 mm³/s², o „Bowden“ tipo – 5–10 mm³/s².\n" "\n" "„PrusaSlicer“ programoje ši funkcija vadinama „Pressure Equalizer“.\n" "\n" @@ -18734,7 +18886,8 @@ msgstr "Įstrižoji jungtis (Scarf joint) vidinėms sienelėms" msgid "Use scarf joint for inner walls as well." msgstr "Įstrižąją jungtį (Scarf joint) naudoti ir vidinėms sienelėms." -msgid "Role base wipe speed" +# AI Translated +msgid "Role based wipe speed" msgstr "Valymo greitis pagal elemento tipą" msgid "The wipe speed is determined by the speed of the current extrusion role. e.g. if a wipe action is executed immediately following an outer wall extrusion, the speed of the outer wall extrusion will be utilized for the wipe action." @@ -18824,16 +18977,15 @@ msgstr "Po pirmojo sluoksnio apriboja apvado / apsauginio skydo kontūrus iki vi msgid "Draft shield" msgstr "Apsauginis skydas (Draft shield)" +# AI Translated msgid "" "A draft shield is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft. It is usually needed only with open frame printers, i.e. without an enclosure.\n" "\n" -"Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used.\n" -"Note: With the draft shield active, the skirt will be printed at skirt distance from the object. Therefore, if brims are active it may intersect with them. To avoid this, increase the skirt distance value.\n" +"Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used." msgstr "" -"Apsauginis skydas (Draft shield) padeda apsaugoti ABS arba ASA spaudinius nuo deformavimosi ir atšokimo nuo pagrindo dėl skersvėjų. Dažniausiai jis reikalingas tik atviro tipo spausdintuvams be korpuso (enclosure).\n" +"Apsauginis skydas (Draft shield) padeda apsaugoti ABS arba ASA spaudinius nuo deformavimosi ir atšokimo nuo pagrindo dėl skersvėjų. Dažniausiai jis reikalingas tik atviro tipo spausdintuvams be korpuso.\n" "\n" -"Įjungta = apvadas bus tokio paties aukščio kaip ir aukščiausias spausdinamas objektas. Priešingu atveju naudojamas parametras „Apvado aukštis“.\n" -"Pastaba: kai apsauginis skydas aktyvus, apvadas bus spausdinamas nurodytu „Apvado atstumu“ nuo objekto. Jei naudojami pado kraštai (brim), jie gali susikirsti. Norėdami to išvengti, padidinkite apvado atstumo reikšmę.\n" +"Įjungta = apvadas bus tokio paties aukščio kaip ir aukščiausias spausdinamas objektas. Priešingu atveju naudojamas parametras „Apvado aukštis“." msgid "Enabled" msgstr "Įjungta" @@ -19991,40 +20143,42 @@ msgstr "Kūgio, naudojamo valymo bokšteliui stabilizuoti, viršūnės kampas. D msgid "Maximum wipe tower print speed" msgstr "Didžiausias valymo bokštelio spausdinimo greitis" +# AI Translated msgid "" "The maximum print speed when purging in the wipe tower and printing the wipe tower sparse layers. When purging, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" "\n" -"When printing the sparse layers, if the internal perimeter speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +"When printing the sparse layers, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" "\n" "Increasing this speed may affect the tower's stability as well as increase the force with which the nozzle collides with any blobs that may have formed on the wipe tower.\n" "\n" "Before increasing this parameter beyond the default of 90 mm/s, make sure your printer can reliably bridge at the increased speeds and that ooze when tool changing is well controlled.\n" "\n" -"For the wipe tower external perimeters the internal perimeter speed is used regardless of this setting." +"For the wipe tower external perimeters the internal perimeter speed is used, also limited by this setting." msgstr "" -"Didžiausias spausdinimo greitis atliekant gijos pravalymą (purging) bei spausdinant valymo bokštelio retuosius (sparse) sluoksnius. Jei pravalymo metu retojo užpildo greitis arba apskaičiuotas greitis pagal maksimalų tūrinį gijos greitį yra mažesnis, bus naudojamas mažiausias iš jų.\n" +"Didžiausias spausdinimo greitis atliekant gijos pravalymą bei spausdinant valymo bokšto retuosius sluoksnius. Jei pravalymo metu retojo užpildo greitis arba apskaičiuotas greitis pagal maksimalų tūrinį gijos greitį yra mažesnis, bus naudojamas mažiausias iš jų.\n" "\n" -"Spausdinant retuosius sluoksnius, jei vidinio perimetro greitis arba apskaičiuotas greitis pagal maksimalų tūrinį gijos greitį yra mažesnis, bus naudojamas mažiausias iš jų.\n" +"Spausdinant retuosius sluoksnius, jei retojo užpildo greitis arba apskaičiuotas greitis pagal maksimalų tūrinį gijos greitį yra mažesnis, bus naudojamas mažiausias iš jų.\n" "\n" -"Padidinus šį greitį, gali nukentėti bokštelio stabilumas bei padidėti jėga, su kuria purkštukas susidurs su bet kokiais ant valymo bokštelio susidariusiais gijos gumbeliais (blobs).\n" +"Padidinus šį greitį, gali nukentėti bokšto stabilumas bei padidėti jėga, su kuria purkštukas susidurs su bet kokiais ant valymo bokšto susidariusiais gijos gumbeliais.\n" "\n" -"Prieš didindami šį parametrą virš numatytųjų 90 mm/s, įsitikinkite, kad jūsų spausdintuvas patikimai formuoja tiltelius (bridging) esant didesniam greičiui, o gijos nutekėjimas (ooze) keičiant įrankį yra gerai kontroliuojamas.\n" +"Prieš didindami šį parametrą virš numatytųjų 90 mm/s, įsitikinkite, kad jūsų spausdintuvas patikimai formuoja tiltus esant didesniam greičiui, o gijos nutekėjimas keičiant įrankį yra gerai kontroliuojamas.\n" "\n" -"Valymo bokštelio išoriniams perimetrams, nepriklausomai nuo šio nustatymo, visada naudojamas vidinio perimetro greitis." +"Valymo bokšto išoriniams perimetrams naudojamas vidinio perimetro greitis, kurį taip pat riboja šis nustatymas." msgid "Wall type" msgstr "Sienelės tipas" +# AI Translated msgid "" "Wipe tower outer wall type.\n" -"1. Rectangle: The default wall type, a rectangle with fixed width and height.\n" +"1. Rectangle: A rectangle with fixed width and height.\n" "2. Cone: A cone with a fillet at the bottom to help stabilize the wipe tower.\n" -"3. Rib: Adds four ribs to the tower wall for enhanced stability." +"3. Rib: The default wall type, which adds four ribs to the tower wall for enhanced stability." msgstr "" -"Valymo bokštelio išorinės sienelės tipas.\n" -"1. Stačiakampis (Rectangle): numatytasis sienelės tipas – fiksuoto pločio ir aukščio stačiakampis.\n" -"2. Kūgis (Cone): kūgis su suapvalinimu apačioje, padedantis stabilizuoti valymo bokštelį.\n" -"3. Briauna (Rib): prie bokštelio sienelės pridedamos keturios briaunos geresniam stabilumui užtikrinti." +"Valymo bokšto išorinės sienelės tipas.\n" +"1. Stačiakampis: stačiakampis su fiksuotu pločiu ir aukščiu.\n" +"2. Kūgis: kūgis su suapvalinimu apačioje, padedantis stabilizuoti valymo bokštą.\n" +"3. Briauna (Rib): numatytasis sienelės tipas, kai prie bokšto sienelės pridedamos keturios briaunos geresniam stabilumui užtikrinti." msgid "Rectangle" msgstr "Stačiakampis" @@ -20115,8 +20269,9 @@ msgstr "Valymo bokšto valymo linijų atstumai." msgid "Extra flow for purging" msgstr "Papildomas pravalymo srautas" -msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker or narrower than they normally would be. The spacing is adjusted automatically." -msgstr "Papildomas gijos srautas, naudojamas valymo bokštelio pravalymo linijoms. Jis leidžia suformuoti storesnes arba siauresnes pravalymo linijas nei įprastai. Atstumai tarp linijų pritaikomi automatiškai." +# AI Translated +msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker than they normally would be. The spacing is adjusted automatically." +msgstr "Papildomas gijos srautas, naudojamas valymo bokšto pravalymo linijoms. Dėl jo pravalymo linijos būna storesnės nei įprastai. Atstumai tarp linijų pritaikomi automatiškai." msgid "Idle temperature" msgstr "Budėjimo (idle) temperatūra" @@ -20235,14 +20390,15 @@ msgstr "Mažiausias plonų elementų storis. Modelio elementai, plonesni už ši msgid "Minimum wall length" msgstr "Mažiausias sienelės ilgis" +# AI Translated msgid "" -"Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. Higher values remove more and longer walls.\n" +"Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. The value is a multiple of the wall width. Higher values remove more and longer walls.\n" "\n" -"NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the Advanced settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." +"NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the 'Walls and surfaces' settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." msgstr "" -"Pakoreguokite šią reikšmę, kad nebūtų spausdinamos trumpos, neuždaros sienelės, galinčios pailginti spausdinimo laiką. Didesnės reikšmės pašalina daugiau ir ilgesnes sieneles.\n" +"Pakoreguokite šią reikšmę, kad nebūtų spausdinamos trumpos, neuždaros sienelės, galinčios pailginti spausdinimo laiką. Reikšmė yra sienelės pločio kartotinis. Didesnės reikšmės pašalina daugiau ir ilgesnes sieneles.\n" "\n" -"PASTABA: Šis nustatymas neturi įtakos apatiniams ir viršutiniams paviršiams, kad modelio išorėje neatsirastų matomų tuštumų. Žemiau esančiuose išplėstiniuose nustatymuose pakeiskite parametro „Vienos sienelės slenkstis“ (One wall threshold) jautrumą, apibrėžiantį, kas laikoma viršutiniu paviršiumi. Šis slenkstis matomas tik tada, kai nustatymas viršija numatytąją 0,5 reikšmę arba kai įjungta vienos sienelės viršutinių paviršių funkcija." +"PASTABA: Šis nustatymas neturi įtakos apatiniams ir viršutiniams paviršiams, kad modelio išorėje neatsirastų matomų tuštumų. Žemiau, grupėje „Sienos ir paviršiai“, pakeiskite parametro „Vienos sienelės slenkstis“ jautrumą, apibrėžiantį, kas laikoma viršutiniu paviršiumi. „Vienos sienelės slenkstis“ matomas tik tada, kai šis nustatymas viršija numatytąją 0,5 reikšmę arba kai įjungti vienos sienelės viršutiniai paviršiai." msgid "Maximum wall resolution" msgstr "Didžiausia sienelių skiriamoji geba (resolution)" @@ -24178,9 +24334,6 @@ msgstr "Įjungti išmanųjį gijos priskyrimą: priskirkite vieną giją keliems msgid "File Saving" msgstr "Failo įrašymas" -msgid "Don't remind me again" -msgstr "Daugiau neberodyti šio priminimo" - msgid "No further pop-up will appear. You can reopen it in 'Preferences'" msgstr "Iškylantieji langai daugiau nebus rodomi. Juos vėl galite įjungti „Nuostatose“" @@ -34660,6 +34813,7 @@ msgstr "" "Suskirstykite spaudinius į pagrindus\n" "Ar žinojote, kad daug dalių turintį modelį galite padalyti į atskirus, spausdinimui paruoštus pagrindus? Tai supaprastins visų dalių sekimo procesą." +# AI Translated #: resources/data/hints.ini: [hint:Speed up your print with Adaptive Layer #: Height] msgid "" @@ -34667,7 +34821,7 @@ msgid "" "Did you know that you can print a model even faster by using the Adaptive Layer Height option? Check it out!" msgstr "" "Paspartinkite spausdinimą naudodami prisitaikantį sluoksnio aukštį\n" -"Ar žinojote, kad naudodami prisitaikančio sluoksnio aukščio (Adaptive Layer Height) parinktį modelį galite atspausdinti dar greičiau? Išbandykite!" +"Ar žinojote, kad naudodami prisitaikančio sluoksnio aukščio parinktį modelį galite atspausdinti dar greičiau? Išbandykite!" #: resources/data/hints.ini: [hint:Support painting] msgid "" @@ -34750,6 +34904,167 @@ msgstr "" "Venkite deformacijų (warping)\n" "Ar žinojote, kad spausdinant medžiagas, kurios yra linkusios trauktis ir riestis (pvz., ABS), tinkamas kaitinamojo pagrindo temperatūros padidinimas gali sumažinti deformacijų (warping) tikimybę?" +#~ msgid "" +#~ "Line width of the Bridge. If expressed as a %, it will be computed over the nozzle diameter.\n" +#~ "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" +#~ "\n" +#~ "The maximum value is 100% or the nozzle diameter.\n" +#~ "If set to 0, the line width will match the Internal solid infill width." +#~ msgstr "" +#~ "Tiltelio linijos plotis. Jei išreikštas procentais (%), jis bus skaičiuojamas nuo purkštuko skersmens.\n" +#~ "Rekomenduojama naudoti su didesniu tiltelio tankiu arba išorinio tilto srauto koeficientu.\n" +#~ "\n" +#~ "Maksimali reikšmė yra 100 % arba purkštuko skersmuo.\n" +#~ "Nustačius 0, linijos plotas sutaps su vidinio vientiso užpildo (internal solid infill) pločiu." + +#, no-c-format, no-boost-format +#~ msgid "" +#~ "Enable this option to slow down printing in areas where perimeters may have curled upwards.\n" +#~ "For example, additional slowdown will be applied when printing overhangs on sharp corners like the front of the Benchy hull, reducing curling which compounds over multiple layers.\n" +#~ "\n" +#~ "It is generally recommended to have this option switched on unless your printer cooling is powerful enough or the print speed is slow enough that perimeter curling does not happen. \n" +#~ "If printing with a high external perimeter speed, this parameter may introduce wall artifacts when slowing down, due to the potentially large variance in print speeds causing the extruder to be unable to keep up with the requested flow change.\n" +#~ "Root cause of these artifacts is most likely PA tuning being slightly off, especially when combined with a high PA smooth time.\n" +#~ "\n" +#~ "Recommendations when enabling this option:\n" +#~ "1. Reduce Pressure Advance smooth time to 0.015 - 0.02 so the extruder reacts quickly to the speed changes.\n" +#~ "2. Increase the minimum print speeds to limit the magnitude of the slowdown and reduce the variance between fast and slow segments.\n" +#~ "3. If artifacts still appear, enable Extrusion Rate Smoothing (ERS) to further smooth the flow transitions.\n" +#~ "\n" +#~ "Note: When this option is enabled, overhang perimeters are treated like overhangs, meaning the overhang speed is applied even if the overhanging perimeter is part of a bridge.\n" +#~ "For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 100% overhang speed will be applied." +#~ msgstr "" +#~ "Įjunkite šią parinktį, kad sumažintumėte spausdinimo greitį vietose, kur perimetrai linkę riestis į viršų.\n" +#~ "Pavyzdžiui, papildomas sulėtinimas bus taikomas spausdinant iškyšas ties aštriais kampais (kaip „Benchy“ laivelio priekis) – tai apsaugo nuo sluoksnių rietimosi, kuris linkęs kauptis per kelis sluoksnius.\n" +#~ "\n" +#~ "Rekomenduojama visada laikyti šią parinktį įjungtą, nebent spausdintuvo aušinimas yra itin galingas arba spausdinimo greitis toks mažas, kad perimetrų rietimasis nevyksta.\n" +#~ "Jei spausdinama dideliu išorinio perimetro greičiu, šis parametras lėtėjimo metu gali sukelti sienelių artefaktų (defektų), nes dėl didelių greičio šuolių ekstruderis gali nespėti sureguliuoti srauto pokyčio.\n" +#~ "Pagrindinė tokių artefaktų priežastis dažniausiai yra netiksliai suderintas „Pressure Advance“ (PA) parametras, ypač jei naudojama didelė „PA smooth time“ reikšmė.\n" +#~ "\n" +#~ "Rekomendacijos įjungus šią parinktį:\n" +#~ "1. Sumažinkite „Pressure Advance smooth time“ iki 0.015 - 0.02, kad ekstruderis greitai reaguotų į greičio pokyčius.\n" +#~ "2. Padidinkite minimalų spausdinimo greitį, kad apribotumėte sulėtėjimo mastą ir sumažintumėte skirtumą tarp greitų bei lėtų segmentų.\n" +#~ "3. Jei artefaktai išlieka, įjunkite „Ekstruzijos srauto glotninimą“ (ERS), kad sušvelgintumėte srauto perėjimus.\n" +#~ "\n" +#~ "Pastaba: kai ši parinktis įjungta, išsikišę perimetrai yra traktuojami kaip iškyšos, t. y. iškyšų greitis taikomas net ir tada, kai perimetras yra tiltelio dalis.\n" +#~ "Pavyzdžiui, kai perimetrai kyšo 100 % (apačioje nėra jokios palaikančios sienelės), bus taikomas būtent 100 % iškyšos greitis." + +#~ msgid "" +#~ "Speed of the externally visible bridge extrusions.\n" +#~ "\n" +#~ "In addition, if Slow down for curled perimeters is disabled or Classic overhang mode is enabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." +#~ msgstr "" +#~ "Išoriškai matomų tiltelio ekstruzijų greitis.\n" +#~ "\n" +#~ "Papildomai, jei funkcija „Sulėtinti greitį riesantis perimetrams“ yra išjungta arba įjungtas „Klasikinis iškyšų režimas“, šis greitis bus taikomas iškyšų sienelėms, kurių atrama yra mažesnė nei 13 % (nesvarbu, ar jos yra tiltelio, ar iškyšos dalis)." + +#~ msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above. Set to zero for auto." +#~ msgstr "Šis nustatymas valdo perimetrų, kurių spindulys $\\le$ „Mažų perimetrų riba“ (dažniausiai tai nedidelės skylės), spausdinimo greitį. Jei nurodomas procentais (pvz., 80 %), jis apskaičiuojamas pagal viršuje nustatytą išorinės sienelės greitį. Nustačius 0, greitis parandamas automatiškai." + +#~ msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above. Set to zero for auto." +#~ msgstr "Tas pats, kas „Maži perimetrai“, bet skirta atramoms. Šis atskiras nustatymas turės įtakos atramų greičiui tose vietose, kurios yra ≤ `small_support_perimeter_threshold`. Jei išreikšta procentais (pavyzdžiui: 80 %), bus skaičiuojama nuo aukščiau nustatyto atramų arba atramų sąsajos greičio. Nustatykite nulį, jei norite naudoti automatinį režimą." + +#~ msgid "" +#~ "Print sequence of the internal (inner) and external (outer) walls.\n" +#~ "\n" +#~ "Use Inner/Outer for best overhangs. This is because the overhanging walls can adhere to a neighbouring perimeter while printing. However, this option results in slightly reduced surface quality as the external perimeter is deformed by being squashed to the internal perimeter.\n" +#~ "\n" +#~ "Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended against the Outer/Inner option in most cases.\n" +#~ "\n" +#~ "Use Outer/Inner for the same external wall quality and dimensional accuracy benefits of Inner/Outer/Inner option. However, the Z seams will appear less consistent as the first extrusion of a new layer starts on a visible surface." +#~ msgstr "" +#~ "Vidinių (inner) ir išorinių (outer) sienelių spausdinimo seka.\n" +#~ "\n" +#~ "„Vidinis / išorinis“ (Inner/Outer) užtikrina geriausią iškyšų kokybę, nes spausdinama iškyšos sienelė turi prie ko prisitvirtinti (prie vidinio perimetro). Tačiau išorinio paviršiaus kokybė gali nežymiai nukentėti, nes išorinis perimetras gali būti šiek tiek deformuojamas (išspaudžiamas) vidinio perimetro įtakos.\n" +#~ "\n" +#~ "„Vidinis / išorinis / vidinis“ (Inner/Outer/Inner) užtikrina geriausią išorinio paviršiaus kokybę ir matmenų tikslumą, nes išorinė sienelė spausdinama netrikdomai. Visgi, iškyšų kokybė sumažėja, nes nėra pilno vidinio pagrindo išorinei sienelei prilaikyti. Šis nustatymas efektyvus tik turint bent 3 sieneles – pjaustyklė pirmiausia spausdina vidines sieneles nuo 3-iojo perimetro gilyn, tada išorinį perimetrą, ir galiausiai pirmąjį vidinį perimetrą. Daugeliu atvejų tai yra pranašesnis pasirinkimas nei „Išorinis / vidinis“.\n" +#~ "\n" +#~ "„Išorinis / vidinis“ (Outer/Inner) suteikia panašų paviršiaus švarumą ir matmenų tikslumą kaip ir „Vidinis / išorinis / vidinis“, tačiau vertikalios siūlės (Z seam) gali atrodyti mažiau tvarkingos, nes naujas sluoksnis pradedamas spausdinti tiesiai ant matomo išorinio paviršiaus." + +#~ msgid "This is the speed for the first layer except for solid infill sections." +#~ msgstr "Pirmojo sluoksnio greitis, išskyrus vientiso užpildo dalį." + +#~ msgid "This is the speed for solid infill parts of the first layer." +#~ msgstr "Pirmojo sluoksnio vientiso užpildo dalies greitis." + +#, no-c-format, no-boost-format +#~ msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to line width of sparse infill. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." +#~ msgstr "Užpildo plotas yra šiek tiek padidinamas, kad persidengtų su sienele geresniam sukibimui. Procentinė vertė yra santykinė su reto užpildo linijos pločiu. Nustatykite šią vertę ties ~10–15%, kad sumažintumėte perteklinio išspaudimo (overextrusion) ir medžiagos sankaupų riziką, dėl kurios viršutiniai paviršiai tampa šiurkštūs." + +#, no-c-format, no-boost-format +#~ msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to line width of sparse infill." +#~ msgstr "Viršutinio vientiso užpildo plotas yra šiek tiek padidinamas, kad persidengtų su sienele geresniam sukibimui ir sumažintų mikroskylučių (pinholes) susidarymą sandūroje. 25–30%% vertė yra geras pradinis taškas, sumažinantis skylučių matomumą. Procentinė vertė yra santykinė su reto užpildo linijos pločiu." + +#~ msgid "Interlocking depth of a segmented region. It will be ignored if \"mmu_segmented_region_max_width\" is zero or if \"mmu_segmented_region_interlocking_depth\" is bigger than \"mmu_segmented_region_max_width\". Zero disables this feature." +#~ msgstr "Segmentuoto regiono susikirtimo gylis. Jis bus ignoruojamas, jei „mmu_segmented_region_max_width“ yra nulis arba jei „mmu_segmented_region_interlocking_depth“ yra didesnis už „mmu_segmented_region_max_width“. Nulis išjungia šią funkciją." + +#~ msgid "" +#~ "Reduce the height of top-surface perimeters to match the model edge height.\n" +#~ "Affects perimeters with a slope less than this angle (degrees).\n" +#~ "A reasonable value is 35. Set to 0 to disable." +#~ msgstr "" +#~ "Sumažinti viršutinio paviršiaus perimetrų aukštį, kad jis sutaptų su modelio krašto aukščiu.\n" +#~ "Paveikia perimetrus, kurių nuolydis yra mažesnis už šį kampą (laipsniais).\n" +#~ "Protinga vertė yra 35. Nustatykite 0, kad išjungtumėte." + +#~ msgid "Role base wipe speed" +#~ msgstr "Valymo greitis pagal elemento tipą" + +#~ msgid "" +#~ "A draft shield is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft. It is usually needed only with open frame printers, i.e. without an enclosure.\n" +#~ "\n" +#~ "Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used.\n" +#~ "Note: With the draft shield active, the skirt will be printed at skirt distance from the object. Therefore, if brims are active it may intersect with them. To avoid this, increase the skirt distance value.\n" +#~ msgstr "" +#~ "Apsauginis skydas (Draft shield) padeda apsaugoti ABS arba ASA spaudinius nuo deformavimosi ir atšokimo nuo pagrindo dėl skersvėjų. Dažniausiai jis reikalingas tik atviro tipo spausdintuvams be korpuso (enclosure).\n" +#~ "\n" +#~ "Įjungta = apvadas bus tokio paties aukščio kaip ir aukščiausias spausdinamas objektas. Priešingu atveju naudojamas parametras „Apvado aukštis“.\n" +#~ "Pastaba: kai apsauginis skydas aktyvus, apvadas bus spausdinamas nurodytu „Apvado atstumu“ nuo objekto. Jei naudojami pado kraštai (brim), jie gali susikirsti. Norėdami to išvengti, padidinkite apvado atstumo reikšmę.\n" + +#~ msgid "" +#~ "The maximum print speed when purging in the wipe tower and printing the wipe tower sparse layers. When purging, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +#~ "\n" +#~ "When printing the sparse layers, if the internal perimeter speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +#~ "\n" +#~ "Increasing this speed may affect the tower's stability as well as increase the force with which the nozzle collides with any blobs that may have formed on the wipe tower.\n" +#~ "\n" +#~ "Before increasing this parameter beyond the default of 90 mm/s, make sure your printer can reliably bridge at the increased speeds and that ooze when tool changing is well controlled.\n" +#~ "\n" +#~ "For the wipe tower external perimeters the internal perimeter speed is used regardless of this setting." +#~ msgstr "" +#~ "Didžiausias spausdinimo greitis atliekant gijos pravalymą (purging) bei spausdinant valymo bokštelio retuosius (sparse) sluoksnius. Jei pravalymo metu retojo užpildo greitis arba apskaičiuotas greitis pagal maksimalų tūrinį gijos greitį yra mažesnis, bus naudojamas mažiausias iš jų.\n" +#~ "\n" +#~ "Spausdinant retuosius sluoksnius, jei vidinio perimetro greitis arba apskaičiuotas greitis pagal maksimalų tūrinį gijos greitį yra mažesnis, bus naudojamas mažiausias iš jų.\n" +#~ "\n" +#~ "Padidinus šį greitį, gali nukentėti bokštelio stabilumas bei padidėti jėga, su kuria purkštukas susidurs su bet kokiais ant valymo bokštelio susidariusiais gijos gumbeliais (blobs).\n" +#~ "\n" +#~ "Prieš didindami šį parametrą virš numatytųjų 90 mm/s, įsitikinkite, kad jūsų spausdintuvas patikimai formuoja tiltelius (bridging) esant didesniam greičiui, o gijos nutekėjimas (ooze) keičiant įrankį yra gerai kontroliuojamas.\n" +#~ "\n" +#~ "Valymo bokštelio išoriniams perimetrams, nepriklausomai nuo šio nustatymo, visada naudojamas vidinio perimetro greitis." + +#~ msgid "" +#~ "Wipe tower outer wall type.\n" +#~ "1. Rectangle: The default wall type, a rectangle with fixed width and height.\n" +#~ "2. Cone: A cone with a fillet at the bottom to help stabilize the wipe tower.\n" +#~ "3. Rib: Adds four ribs to the tower wall for enhanced stability." +#~ msgstr "" +#~ "Valymo bokštelio išorinės sienelės tipas.\n" +#~ "1. Stačiakampis (Rectangle): numatytasis sienelės tipas – fiksuoto pločio ir aukščio stačiakampis.\n" +#~ "2. Kūgis (Cone): kūgis su suapvalinimu apačioje, padedantis stabilizuoti valymo bokštelį.\n" +#~ "3. Briauna (Rib): prie bokštelio sienelės pridedamos keturios briaunos geresniam stabilumui užtikrinti." + +#~ msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker or narrower than they normally would be. The spacing is adjusted automatically." +#~ msgstr "Papildomas gijos srautas, naudojamas valymo bokštelio pravalymo linijoms. Jis leidžia suformuoti storesnes arba siauresnes pravalymo linijas nei įprastai. Atstumai tarp linijų pritaikomi automatiškai." + +#~ msgid "" +#~ "Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. Higher values remove more and longer walls.\n" +#~ "\n" +#~ "NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the Advanced settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." +#~ msgstr "" +#~ "Pakoreguokite šią reikšmę, kad nebūtų spausdinamos trumpos, neuždaros sienelės, galinčios pailginti spausdinimo laiką. Didesnės reikšmės pašalina daugiau ir ilgesnes sieneles.\n" +#~ "\n" +#~ "PASTABA: Šis nustatymas neturi įtakos apatiniams ir viršutiniams paviršiams, kad modelio išorėje neatsirastų matomų tuštumų. Žemiau esančiuose išplėstiniuose nustatymuose pakeiskite parametro „Vienos sienelės slenkstis“ (One wall threshold) jautrumą, apibrėžiantį, kas laikoma viršutiniu paviršiumi. Šis slenkstis matomas tik tada, kai nustatymas viršija numatytąją 0,5 reikšmę arba kai įjungta vienos sienelės viršutinių paviršių funkcija." + # AI Translated #, boost-format #~ msgid "Split into %1% part" diff --git a/localization/i18n/nl/OrcaSlicer_nl.po b/localization/i18n/nl/OrcaSlicer_nl.po index b12f261371..9dc09f09f9 100644 --- a/localization/i18n/nl/OrcaSlicer_nl.po +++ b/localization/i18n/nl/OrcaSlicer_nl.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-10-13 09:55-0300\n" +"POT-Creation-Date: 2026-10-14 10:04-0300\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -2642,6 +2642,67 @@ msgstr "Beperking netwerkplug-in" msgid "Privacy Policy Update" msgstr "Update privacybeleid" +# AI Translated +msgid "All your filament presets are available on the printers they were made for." +msgstr "Al uw filamentvoorinstellingen zijn beschikbaar op de printers waarvoor ze zijn gemaakt." + +# AI Translated +msgid "Migrate Filament Presets" +msgstr "Filamentvoorinstellingen migreren" + +# AI Translated +msgid "" +"OrcaSlicer 2.5.0 restructured many system filament presets to fix incorrect profiles and prepare for future features. As a result, the presets below no longer show on some printers they were made for. Sorry for the trouble; this is a one-time fix.\n" +"\n" +"Add those printers back to your presets now? Your presets are backed up first. You can also do this later from Help > Migrate Filament Presets." +msgstr "" +"OrcaSlicer 2.5.0 heeft veel systeemfilamentvoorinstellingen herstructureerd om onjuiste profielen te corrigeren en voor te bereiden op toekomstige functies. Hierdoor worden de onderstaande voorinstellingen niet meer weergegeven op sommige printers waarvoor ze zijn gemaakt. Onze excuses voor het ongemak; dit is een eenmalige oplossing.\n" +"\n" +"Deze printers nu weer toevoegen aan uw voorinstellingen? Van uw voorinstellingen wordt eerst een back-up gemaakt. U kunt dit ook later doen via Hulp > Filamentvoorinstellingen migreren." + +# AI Translated +#, boost-format +msgid "%1% (based on %2%)" +msgstr "%1% (gebaseerd op %2%)" + +# AI Translated +msgid "Don't remind me again" +msgstr "Herinner mij niet meer" + +# AI Translated +msgid "Your presets could not be backed up, so they were not migrated." +msgstr "Er kon geen back-up van uw voorinstellingen worden gemaakt, dus ze zijn niet gemigreerd." + +# AI Translated +msgid "The user presets folder could not be locked, so nothing was migrated. Another OrcaSlicer instance may be saving presets; try again later from Help > Migrate Filament Presets." +msgstr "De map met gebruikersvoorinstellingen kon niet worden vergrendeld, dus er is niets gemigreerd. Mogelijk slaat een andere OrcaSlicer-instantie op dit moment voorinstellingen op; probeer het later opnieuw via Hulp > Filamentvoorinstellingen migreren." + +# AI Translated +#, boost-format +msgid "" +"Your filament presets could not be migrated. A backup of your presets was saved to:\n" +"%1%" +msgstr "" +"Uw filamentvoorinstellingen konden niet worden gemigreerd. Een back-up van uw voorinstellingen is opgeslagen in:\n" +"%1%" + +# AI Translated +#, boost-format +msgid "" +"Your filament presets were migrated. Select them again in the filament list where you used them.\n" +"\n" +"A backup of your presets was saved to:\n" +"%1%" +msgstr "" +"Uw filamentvoorinstellingen zijn gemigreerd. Selecteer ze opnieuw in de filamentlijst waar u ze gebruikte.\n" +"\n" +"Een back-up van uw voorinstellingen is opgeslagen in:\n" +"%1%" + +# AI Translated +msgid "These presets could not be migrated:" +msgstr "Deze voorinstellingen konden niet worden gemigreerd:" + # AI Translated #, c-format, boost-format msgid "your Orca Cloud profile (user ID: \"%s\")" @@ -3415,6 +3476,62 @@ msgstr "(Kleur verloren)" msgid "Center" msgstr "Centreren" +# AI Translated +msgid "Distribute left-right" +msgstr "Links-rechts verdelen" + +# AI Translated +msgid "Distribute front-back" +msgstr "Voor-achter verdelen" + +# AI Translated +msgid "Distribute top-bottom" +msgstr "Boven-onder verdelen" + +# AI Translated +msgid "Align left" +msgstr "Links uitlijnen" + +# AI Translated +msgid "Align left-right center" +msgstr "Links-rechts gecentreerd uitlijnen" + +# AI Translated +msgid "Align right" +msgstr "Rechts uitlijnen" + +# AI Translated +msgid "Align front" +msgstr "Vooraan uitlijnen" + +# AI Translated +msgid "Align front-back center" +msgstr "Voor-achter gecentreerd uitlijnen" + +# AI Translated +msgid "Align back" +msgstr "Achteraan uitlijnen" + +# AI Translated +msgid "Align bottom" +msgstr "Onderaan uitlijnen" + +# AI Translated +msgid "Align top-bottom center" +msgstr "Boven-onder gecentreerd uitlijnen" + +# AI Translated +msgid "Align top" +msgstr "Bovenaan uitlijnen" + +# AI Translated +msgid "Align/Distribute" +msgstr "Uitlijnen/Verdelen" + +# AI Translated +msgid "Align and distribute objects" +msgstr "Objecten uitlijnen en verdelen" + msgid "Drop" msgstr "Neerzetten" @@ -6999,6 +7116,7 @@ msgid "PLA and PETG filaments detected in the mixture. Adjust parameters accordi msgstr "Er zijn PLA- en PETG-filamenten in de combinatie gedetecteerd. Pas de parameters aan volgens de wiki om de printkwaliteit te waarborgen." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "prime toren"; align it once the term is settled. msgid "The prime tower extends beyond the plate boundary." msgstr "De prime toren steekt buiten de rand van het printbed uit." @@ -7184,6 +7302,10 @@ msgstr "Installatiewizard" msgid "Show Configuration Folder" msgstr "Toon de configuratie map" +# AI Translated +msgid "Bring back filament presets that a profile update removed from printers they were made for" +msgstr "Filamentvoorinstellingen terugbrengen die door een profielupdate zijn verwijderd van de printers waarvoor ze zijn gemaakt" + # AI Translated msgid "Troubleshoot Center" msgstr "Probleemoplossingscentrum" @@ -9268,6 +9390,7 @@ msgid "Material settings" msgstr "Materiaalinstellingen" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "gereedschap"; align it once the term is settled. msgid "Each mode names the tool heads that take part and the role each one plays. Click a tool button to cycle its role — hover a color below for what each role does." msgstr "Elke modus noemt de printkoppen die meedoen en de rol die elk ervan speelt. Klik op een gereedschapsknop om de rol te wisselen — beweeg over een kleur hieronder om te zien wat elke rol doet." @@ -9292,6 +9415,7 @@ msgid "Which tool heads take part in the mode and what role each one plays. Clic msgstr "Welke printkoppen aan de modus deelnemen en welke rol elk ervan speelt. Klik op een tegel om de rol te wisselen." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "gereedschap"; align it once the term is settled. msgid "G-code run at print start to put the printer into this mode (for example a Klipper SET_PRINT_MODE call). The slicer only emits the Primary tool's paths; the firmware drives the others." msgstr "G-code die bij de start van de print wordt uitgevoerd om de printer in deze modus te zetten (bijvoorbeeld een Klipper SET_PRINT_MODE-aanroep). De slicer genereert alleen de paden van het primaire gereedschap (Primary); de firmware stuurt de andere aan." @@ -9326,6 +9450,7 @@ msgid "Span" msgstr "Span" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "gereedschap"; align it once the term is settled. msgid "Drives every sliced path. Always tool 0 — use Tool 0 Position above to choose which corner of the bed it occupies. It cannot be moved from the grid." msgstr "Stuurt elk geslicet pad aan. Altijd gereedschap 0 — gebruik Positie gereedschap 0 hierboven om te kiezen welke hoek van het printbed het inneemt. Het kan niet uit het raster worden verplaatst." @@ -9338,6 +9463,7 @@ msgid "Follows the Primary at the firmware level, printing the same paths reflec msgstr "Volgt de primaire (Primary) op firmwareniveau en print dezelfde paden, gespiegeld over de grens tussen de twee zones." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "gereedschap"; align it once the term is settled. msgid "Marks a tool on the Primary's gantry as its multicolor partner. Required to allow multi-color printing in paired-gantry modes." msgstr "Markeert een gereedschap op het portaal van de primaire (Primary) als diens partner voor meerdere kleuren. Vereist om printen in meerdere kleuren mogelijk te maken in modi met gekoppelde portalen." @@ -9354,6 +9480,7 @@ msgid "Name of this parallel mode, as it appears in the plate's IDEX/IQEX mode s msgstr "Naam van deze parallelle modus, zoals die in de IDEX/IQEX-moduskeuze van het printbed verschijnt. Wordt op naam in het project opgeslagen; als u een modus hernoemt die printbedden al gebruiken, vallen die terug op Primair. Mag niet leeg zijn — een lege naam wordt vervangen door een gegenereerde naam." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "gereedschap"; align it once the term is settled. msgid "G-code emitted once at the start of a print that uses this mode, before the machine start G-code. This is where the printer is put into the matching firmware mode — for example a Klipper SET_PRINT_MODE call or a RepRapFirmware M567 — since the slicer only emits the Primary tool's paths and the firmware drives the Copy / Mirror tools. Placeholders are supported; use the edit button to browse them. Leave empty if the mode needs no firmware setup." msgstr "G-code die eenmaal wordt uitgevoerd aan het begin van een print die deze modus gebruikt, vóór de start-G-code van de machine. Hier wordt de printer in de bijbehorende firmwaremodus gezet — bijvoorbeeld met een Klipper SET_PRINT_MODE-aanroep of een RepRapFirmware M567 — omdat de slicer alleen de paden van het primaire gereedschap (Primary) genereert en de firmware de gereedschappen Kopie (Copy) / Spiegel (Mirror) aanstuurt. Plaatshouders worden ondersteund; gebruik de bewerkknop om ze te bekijken. Laat leeg als de modus geen firmware-instelling nodig heeft." @@ -9691,6 +9818,7 @@ msgid "Enabling traditional timelapse photography may cause surface imperfection msgstr "Het inschakelen van traditionele timelapse-fotografie kan oneffenheden in het oppervlak veroorzaken. Het wordt aanbevolen om over te schakelen naar de vloeiende modus." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "prime toren"; align it once the term is settled. msgid "Smooth mode for timelapse is enabled, but the prime tower is off, which may cause print defects. Please enable the prime tower, re-slice and print again." msgstr "De vloeiende modus voor timelapse is ingeschakeld, maar de prime toren staat uit, wat printfouten kan veroorzaken. Schakel de prime toren in, slice opnieuw en print nogmaals." @@ -9927,7 +10055,7 @@ msgid "Cannot slice: an object overlaps an area reserved for IDEX/IQEX parallel msgstr "Kan niet slicen: een object overlapt een gebied dat is gereserveerd voor IDEX/IQEX-parallel printen (een secundaire zone, of een vrijloopstrook voor de wagen binnen de primaire zone)." # AI Translated -# Needs human review: Prime tower glossary cell is unsettled (Prime toren / Afveegblok); used 'prime toren' as in other AI entries. +# Needs human review: Prime tower glossary cell is unsettled (Prime toren / Afveegblok); used 'prime toren' as in other AI entries msgid "Cannot slice: the prime tower overlaps an area reserved for IDEX/IQEX parallel printing (a secondary zone, or a carriage clearance strip inside the primary zone)." msgstr "Kan niet slicen: de prime toren overlapt een gebied dat is gereserveerd voor IDEX/IQEX-parallel printen (een secundaire zone, of een vrijloopstrook voor de wagen binnen de primaire zone)." @@ -10025,6 +10153,7 @@ msgid "Slicing Canceled" msgstr "Slicing Geannuleerd" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "gereedschap"; align it once the term is settled. #, c-format, boost-format msgid "Bed temperature conflict: T%d (%s) sets the bed to %d℃ — T%d (%s) requires %d℃. The primary tool controls the bed; secondary tools print at whatever temperature it sets." msgstr "Conflict in bedtemperatuur: T%d (%s) stelt het printbed in op %d℃ — T%d (%s) vereist %d℃. Het primaire gereedschap regelt het printbed; secundaire gereedschappen printen op de temperatuur die het instelt." @@ -12952,6 +13081,7 @@ msgid "A prime tower is required for smooth timelapse mode. There may be flaws o msgstr "Een Prime-toren is vereist voor een vloeiende timeplase-modus. Er kunnen gebreken ontstaan aan het model zonder prime-toren. Weet je zeker dat je de prime-toren wilt uitschakelen?" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "prime toren"; align it once the term is settled. msgid "A prime tower is required for clumping detection. There may be flaws on the model without prime tower. Are you sure you want to disable prime tower?" msgstr "Voor klontdetectie is een prime toren vereist. Zonder prime toren kunnen er onvolkomenheden op het model ontstaan. Weet u zeker dat u de prime toren wilt uitschakelen?" @@ -12959,6 +13089,7 @@ msgid "Enabling both precise Z height and the prime tower may cause slicing erro msgstr "Het inschakelen van zowel precieze Z-hoogte als de spoeltoren kan slicefouten veroorzaken. Wilt u nog steeds inschakelen?" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "prime toren"; align it once the term is settled. msgid "A prime tower is required for clumping detection. There may be flaws on the model without prime tower. Do you still want to enable clumping detection?" msgstr "Voor klontdetectie is een prime toren vereist. Zonder prime toren kunnen er onvolkomenheden op het model ontstaan. Wilt u klontdetectie toch inschakelen?" @@ -12966,6 +13097,7 @@ msgid "Enabling both precise Z height and the prime tower may cause slicing erro msgstr "Het inschakelen van zowel precieze Z-hoogte als de spoeltoren kan slicefouten veroorzaken. Wilt u precieze Z-hoogte nog steeds inschakelen?" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "prime toren"; align it once the term is settled. msgid "Smooth timelapse needs a prime tower on every layer, which is not compatible with \"No sparse layers\". \"No sparse layers\" has been turned off." msgstr "Vloeiende timelapse heeft op elke laag een prime toren nodig, wat niet samengaat met \"Geen dunne lagen\". \"Geen dunne lagen\" is uitgeschakeld." @@ -12973,6 +13105,7 @@ msgid "A prime tower is required for smooth timelapse mode. There may be flaws o msgstr "Een prime-toren is vereist voor een vloeiende timelapse-modus. Er kunnen gebreken ontstaan aan het model zonder prime-toren. Wilt u de prime-toren inschakelen?" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "prime toren"; align it once the term is settled. msgid "\"No sparse layers\" is not compatible with smooth timelapse, which needs a prime tower on every layer. Timelapse has been switched to traditional mode." msgstr "\"Geen dunne lagen\" gaat niet samen met vloeiende timelapse, die op elke laag een prime toren nodig heeft. De timelapse is overgeschakeld naar de traditionele modus." @@ -13360,6 +13493,7 @@ msgid "Set" msgstr "Instellen" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "tool"; align it once the term is settled. msgid "Tool change parameters with multi extruder MM printers" msgstr "Toolwisselparameters voor multi-materialprinters met meerdere extruders" @@ -14896,6 +15030,7 @@ msgid "Open G-code file:" msgstr "Open G-code bestand:" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "prime toren"; align it once the term is settled. msgid "Wipe tower generation failed, possibly due to empty first layer." msgstr "Het genereren van de prime toren is mislukt, mogelijk door een lege eerste laag." @@ -14964,6 +15099,7 @@ msgid "No object can be printed. It may be too small." msgstr "Er kunnen geen objecten geprint worden. Het kan zijn dat ze te klein zijn." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "gereedschap"; align it once the term is settled. #, boost-format msgid "The IDEX/IQEX mode \"%1%\" has no tools assigned on the selected printer. Printing in Primary mode instead. Assign the mode's tools in Printer Settings, or pick another mode from the plate's IDEX/IQEX button." msgstr "Aan de IDEX/IQEX-modus \"%1%\" zijn op de geselecteerde printer geen gereedschappen toegewezen. Er wordt in plaats daarvan in de modus Primair geprint. Wijs de gereedschappen van de modus toe in Printer instellingen, of kies een andere modus via de IDEX/IQEX-knop van het printbed." @@ -15047,6 +15183,18 @@ msgstr "meerdere snijpunten met een perimeter, slechts één is gebruikt (%1%)" msgid "a perimeter is fully inside a modifier, the modifier was not applied to it (%1%)" msgstr "een perimeter ligt volledig binnen een aanpasser, de aanpasser is er niet op toegepast (%1%)" +# AI Translated +#. TRN: %1% is the modifier type "Seam Blocked" as in the menu, %2% the modifier name, %3% the object name. +#, boost-format +msgid "%1% modifier \"%2%\" of \"%3%\" covers an entire perimeter" +msgstr "Aanpasser \"%2%\" (%1%) van \"%3%\" bedekt een volledige perimeter" + +# AI Translated +#. TRN: %1% is the modifier type "Seam Blocked" as in the menu, %2% the modifier name, %3% the object name, %4% the number of modifiers. +#, boost-format +msgid "%1% modifier \"%2%\" of \"%3%\" (%4% in total) covers an entire perimeter" +msgstr "Aanpasser \"%2%\" (%1%) van \"%3%\" (%4% in totaal) bedekt een volledige perimeter" + # AI Translated #, boost-format msgid "modifier \"%1%\" of \"%2%\" had no effect on the seam (it might not reach the centerline of the printed perimeter)" @@ -15202,18 +15350,22 @@ msgid "Multi-color prints in IDEX/IQEX parallel modes require each filament to h msgstr "Prints in meerdere kleuren in parallelle IDEX/IQEX-modi vereisen dat elk filament een eigen, toegewezen fysieke extruder heeft. Twee of meer van de actieve filamenten worden via de fysieke extruderkoppeling van de printer (een MMU/AFC-verdeelstuk) naar dezelfde fysieke kop geleid, en dat kan het meelopende portaal niet volgen." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "gereedschap"; align it once the term is settled. msgid "The active IDEX/IQEX mode does not define a primary tool, so multi-color printing cannot be scheduled. Open the printer settings IDEX/IQEX Modes editor and assign a Primary role to one tool." msgstr "De actieve IDEX/IQEX-modus definieert geen primair gereedschap, dus printen in meerdere kleuren kan niet worden gepland. Open de IDEX/IQEX-moduseditor in de printerinstellingen en wijs aan één gereedschap de rol Primair (Primary) toe." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "gereedschap"; align it once the term is settled. msgid "Multi-color in this mode isn't a parallel-print scenario — all of the active tools sit on a single gantry, so there's no second gantry being copied or mirrored to. Switch the plate to Primary mode for multi-color printing on a single gantry, or define an IDEX/IQEX mode that includes tools on a second gantry." msgstr "Meerdere kleuren in deze modus is geen situatie voor parallel printen — alle actieve gereedschappen zitten op één portaal, dus er is geen tweede portaal waarnaar wordt gekopieerd of gespiegeld. Zet het printbed in de modus Primair om in meerdere kleuren op één portaal te printen, of definieer een IDEX/IQEX-modus met gereedschappen op een tweede portaal." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "gereedschap"; align it once the term is settled. msgid "Multi-color prints in IDEX/IQEX parallel modes require a Span tool on the primary's gantry — without one, the mode doesn't declare a within-gantry multicolor partner. Either reduce the print to a single filament, switch to Primary mode, or open the printer settings IDEX/IQEX Modes editor and mark a tool on the primary's gantry as Span." msgstr "Prints in meerdere kleuren in parallelle IDEX/IQEX-modi vereisen een Span-gereedschap op het portaal van de primaire (Primary) — zonder dat declareert de modus geen partner voor meerdere kleuren binnen hetzelfde portaal. Beperk de print tot één filament, schakel over naar de modus Primair, of open de IDEX/IQEX-moduseditor in de printerinstellingen en markeer een gereedschap op het portaal van de primaire als Span." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "gereedschap"; align it once the term is settled. #. TRN %1% is a list of tools such as "T0/T1", %2% a filament number. #, boost-format msgid "In this Span mode, colors are printed only by %1%, but filament %2% isn't routed to any tool. Use filaments routed to %1%, or switch this plate to Primary mode." @@ -15256,6 +15408,7 @@ msgid "%1% is too tall, and collisions will be caused." msgstr "%1% is te hoog en er kunnen botsingen ontstaan." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "prime toren"; align it once the term is settled. msgid "The relative position of the model and the prime tower does not meet the requirements of the \"No sparse layers\" feature. Please adjust their relative positions, lower the model height, or turn off \"No sparse layers\"." msgstr "De onderlinge positie van het model en de prime toren voldoet niet aan de eisen van de functie \"Geen dunne lagen\". Pas hun onderlinge posities aan, verlaag de modelhoogte of schakel \"Geen dunne lagen\" uit." @@ -15265,26 +15418,32 @@ msgid "%1% is too close to the clumping detection area. There may be collisions msgstr "%1% ligt te dicht bij het gebied voor klontdetectie. Er kunnen botsingen optreden tijdens het printen." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "prime toren"; align it once the term is settled. msgid "Prime tower is too close to others, and collisions may be caused.\n" msgstr "De prime toren staat te dicht bij andere objecten en er kunnen botsingen worden veroorzaakt.\n" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "prime toren"; align it once the term is settled. msgid "Prime tower is too close to an exclusion area, and collisions will be caused.\n" msgstr "De prime toren bevindt zich te dicht bij het uitsluitingsgebied en er zullen botsingen worden veroorzaakt.\n" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "prime toren"; align it once the term is settled. msgid "Prime tower is too close to the clumping detection area, and collisions will be caused.\n" msgstr "De prime toren ligt te dicht bij het gebied voor klontdetectie, waardoor er botsingen zullen ontstaan.\n" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "prime toren"; align it once the term is settled. msgid "Prime tower is too close to an exclusion area. There may be collisions when printing." msgstr "De prime toren bevindt zich te dicht bij het uitsluitingsgebied. Er kunnen botsingen optreden tijdens het printen." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "prime toren"; align it once the term is settled. msgid "Prime tower is too close to the clumping detection area. There may be collisions when printing." msgstr "De prime toren ligt te dicht bij het gebied voor klontdetectie. Er kunnen botsingen optreden tijdens het printen." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "prime toren"; align it once the term is settled. msgid "Prime tower is partially outside the printable area, and it cannot be printed.\n" msgstr "De prime toren ligt gedeeltelijk buiten het printbare gebied en kan niet worden geprint.\n" @@ -15308,6 +15467,7 @@ msgid "Mixed filaments are not supported in IDEX/IQEX parallel modes. Switch thi msgstr "Gemengde filamenten worden niet ondersteund in parallelle IDEX/IQEX-modi. Zet dit printbed in de modus Primair." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "gereedschap"; align it once the term is settled. #. TRN %1% is the IDEX/IQEX mode name, %2% the tool number. #, boost-format msgid "IDEX/IQEX mode \"%1%\" prints with T%2%, but none of this plate's filaments are on a configured tool. Assign a filament loaded on T%2%, or switch this plate to Primary mode." @@ -15382,6 +15542,7 @@ msgid "Enabling both precise Z height and the prime tower may cause slicing erro msgstr "Het inschakelen van zowel precieze Z-hoogte als de spoeltoren kan slicefouten veroorzaken." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "prime toren"; align it once the term is settled. msgid "A prime tower is required for clumping detection; otherwise, there may be flaws on the model." msgstr "Voor klontdetectie is een prime toren vereist; anders kunnen er onvolkomenheden op het model ontstaan." @@ -15414,10 +15575,12 @@ msgid "Variable layer height is not supported with Organic supports." msgstr "Variabele laaghoogte wordt niet ondersteund met organische steunen." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "afveegblok"; align it once the term is settled. msgid "The wipe tower filament cannot be a mixed filament." msgstr "Het filament van het afveegblok mag geen gemengd filament zijn." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "prime toren"; align it once the term is settled. msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution." msgstr "Verschillende mondstukdiameters en verschillende filamentdiameters werken mogelijk niet goed wanneer de prime toren is ingeschakeld. Dit is zeer experimenteel; ga daarom voorzichtig te werk." @@ -15425,6 +15588,7 @@ msgid "The Wipe Tower is currently only supported with the relative extruder add msgstr "De Wipe Tower wordt momenteel alleen ondersteund met de relatieve extruderadressering (use_relative_e_distances=1)." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "afveegblok"; align it once the term is settled. msgid "Ooze prevention is only supported with the wipe tower when 'single_extruder_multi_material' is off." msgstr "Druippreventie wordt bij het afveegblok alleen ondersteund wanneer 'single_extruder_multi_material' uit staat." @@ -15435,6 +15599,7 @@ msgid "A prime tower is not supported in “By object” print." msgstr "Een prime-toren wordt niet ondersteund bij het \"per object\" printen." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "prime toren"; align it once the term is settled. msgid "A prime tower is not supported when adaptive layer height is on. It requires that all objects have the same layer height." msgstr "Een prime toren wordt niet ondersteund wanneer adaptieve laaghoogte is ingeschakeld. Hiervoor moeten alle objecten dezelfde laaghoogte hebben." @@ -15448,6 +15613,7 @@ msgid "A prime tower requires that all objects are printed over the same number msgstr "Een prime-toren vereist dat alle objecten op hetzelfde aantal raftlagen worden afgedrukt." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "prime toren"; align it once the term is settled. msgid "The prime tower is only supported for multiple objects if they are printed with the same support_top_z_distance." msgstr "De prime toren wordt bij meerdere objecten alleen ondersteund als ze met dezelfde support_top_z_distance worden geprint." @@ -16098,8 +16264,9 @@ msgstr "" "\n" "Deze optie werkt bijzonder goed in combinatie met de optie voor een tweede interne brug over de vulling, om de overbrugging verder te verbeteren voordat de solide vulling wordt geëxtrudeerd." +# AI Translated msgid "Bridge flow ratio" -msgstr "Brugflow" +msgstr "Flow verhouding brug" # AI Translated msgid "" @@ -16116,18 +16283,19 @@ msgstr "" "De daadwerkelijk gebruikte brugflow wordt berekend door deze waarde te vermenigvuldigen met de flow verhouding van het filament en, indien ingesteld, met de flow verhouding van het object." # AI Translated +# Needs human review: 'brugdichtheid' is generic (the labels are 'Dichtheid van externe/interne bruggen'). msgid "" "Line width of the Bridge. If expressed as a %, it will be computed over the nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" -"If set to 0, the line width will match the Internal solid infill width." +"If set to 0, the line width will match the Internal solid infill width, or the nozzle diameter for thick bridges." msgstr "" -"Lijnbreedte van de brug. Als dit als % wordt uitgedrukt, wordt het berekend over de mondstukdiameter.\n" -"Aanbevolen in combinatie met een hogere brugdichtheid of een hogere flow verhouding voor bruggen.\n" +"Lijnbreedte van de brug. Als dit als percentage (%) wordt uitgedrukt, wordt het berekend over de mondstukdiameter.\n" +"Aanbevolen in combinatie met een hogere brugdichtheid of Flow verhouding brug.\n" "\n" "De maximale waarde is 100% of de mondstukdiameter.\n" -"Als dit op 0 wordt ingesteld, komt de lijnbreedte overeen met de breedte van de interne solide vulling." +"Als dit op 0 wordt ingesteld, komt de lijnbreedte overeen met de breedte van de interne solide vulling, of met de mondstukdiameter bij dikke bruggen." # AI Translated msgid "Internal bridge flow ratio" @@ -16456,7 +16624,7 @@ msgid "" "3. If artifacts still appear, enable Extrusion Rate Smoothing (ERS) to further smooth the flow transitions.\n" "\n" "Note: When this option is enabled, overhang perimeters are treated like overhangs, meaning the overhang speed is applied even if the overhanging perimeter is part of a bridge.\n" -"For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 100% overhang speed will be applied." +"For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 75% overhang speed will be applied, limited by the bridge speed." msgstr "" "Schakel deze optie in om af te remmen in gebieden waar perimeters omhoog gekruld kunnen zijn.\n" "Zo wordt er extra afgeremd bij het printen van overhangen op scherpe hoeken, zoals de voorkant van de Benchy-romp, wat het omkrullen vermindert dat zich over meerdere lagen opstapelt.\n" @@ -16468,10 +16636,10 @@ msgstr "" "Aanbevelingen bij het inschakelen van deze optie:\n" "1. Verlaag de smoothtijd van Pressure Advance tot 0,015 - 0,02, zodat de extruder snel op de snelheidsveranderingen reageert.\n" "2. Verhoog de minimale printsnelheden om de omvang van de vertraging te beperken en het verschil tussen snelle en trage segmenten te verkleinen.\n" -"3. Als er nog steeds artefacten optreden, schakel dan Extrusion Rate Smoothing (ERS) in om de flowovergangen verder af te vlakken.\n" +"3. Als er nog steeds artefacten optreden, schakel dan Afvlakking van de extrusiesnelheid (ERS) in om de flowovergangen verder af te vlakken.\n" "\n" "Let op: wanneer deze optie is ingeschakeld, worden overhangende perimeters als overhangen behandeld, wat betekent dat de overhangsnelheid wordt toegepast, zelfs als de overhangende perimeter deel uitmaakt van een brug.\n" -"Bijvoorbeeld: wanneer de perimeters voor 100% overhangen en er geen wand is die ze van onderaf ondersteunt, wordt de overhangsnelheid voor 100% toegepast." +"Bijvoorbeeld: wanneer de perimeters voor 100% overhangen en er geen wand is die ze van onderaf ondersteunt, wordt de overhangsnelheid voor 75% toegepast, beperkt door de brugsnelheid." msgid "mm/s or %" msgstr "mm/s of %" @@ -16480,11 +16648,11 @@ msgstr "mm/s of %" msgid "" "Speed of the externally visible bridge extrusions.\n" "\n" -"In addition, if Slow down for curled perimeters is disabled or Classic overhang mode is enabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." +"In addition, if Slow down for curled perimeters is disabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." msgstr "" "Snelheid van de extern zichtbare brugextrusies.\n" "\n" -"Als bovendien Afremmen voor omgekrulde perimeters is uitgeschakeld of de klassieke overhangmodus is ingeschakeld, is dit de printsnelheid van overhangende wanden die voor minder dan 13% worden ondersteund, ongeacht of ze deel uitmaken van een brug of een overhang." +"Als bovendien Afremmen voor omgekrulde perimeters is uitgeschakeld, is dit de printsnelheid van overhangende wanden met een ondersteuning van minder dan 13%, ongeacht of ze deel uitmaken van een brug of een overhang." # AI Translated msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%." @@ -16659,6 +16827,7 @@ msgid "Intra-layer order" msgstr "Volgorde binnen een laag" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "gereedschap"; align it once the term is settled. msgid "" "Order in which object instances are visited within a single layer, which controls how much travel is spent moving between them.\n" "\n" @@ -17093,8 +17262,8 @@ msgid "Small perimeters" msgstr "Kleine omtrek" # AI Translated -msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above. Set to zero for auto." -msgstr "Deze afzonderlijke instelling beïnvloedt de snelheid van perimeters met een straal <= small_perimeter_threshold (meestal gaten). Als dit als percentage wordt uitgedrukt (bijvoorbeeld: 80%), wordt het berekend op basis van de bovenstaande instelling voor de snelheid van de buitenste wand. Zet op nul voor automatisch." +msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above." +msgstr "Deze afzonderlijke instelling beïnvloedt de snelheid van perimeters met een straal <= small_perimeter_threshold (meestal gaten). Als dit als percentage wordt uitgedrukt (bijvoorbeeld: 80%), wordt het berekend op basis van de bovenstaande instelling voor de snelheid van de buitenste wand." # AI Translated msgid "Small perimeters threshold" @@ -17108,8 +17277,8 @@ msgid "Small support perimeters" msgstr "Kleine ondersteuningsperimeters" # AI Translated -msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above. Set to zero for auto." -msgstr "Hetzelfde als \"Kleine perimeters\", maar voor ondersteuningen. Deze afzonderlijke instelling beïnvloedt de ondersteuningssnelheid voor gebieden <= `small_support_perimeter_threshold`. Als dit als percentage wordt uitgedrukt (bijvoorbeeld: 80%), wordt het berekend op basis van de bovenstaande instelling voor de snelheid van de ondersteuning of de ondersteuningsinterface. Zet op nul voor automatisch." +msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above." +msgstr "Hetzelfde als \"Kleine omtrek\", maar voor ondersteuningen. Deze afzonderlijke instelling beïnvloedt de ondersteuningssnelheid voor gebieden <= `small_support_perimeter_threshold`. Als dit als percentage wordt uitgedrukt (bijvoorbeeld: 80%), wordt het berekend op basis van de bovenstaande instelling voor de snelheid van de ondersteuning of de ondersteuningsinterface." # AI Translated msgid "Small support perimeters threshold" @@ -17129,7 +17298,7 @@ msgid "" "\n" "Use Inner/Outer for best overhangs. This is because the overhanging walls can adhere to a neighbouring perimeter while printing. However, this option results in slightly reduced surface quality as the external perimeter is deformed by being squashed to the internal perimeter.\n" "\n" -"Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended against the Outer/Inner option in most cases.\n" +"Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended over the Outer/Inner option in most cases.\n" "\n" "Use Outer/Inner for the same external wall quality and dimensional accuracy benefits of Inner/Outer/Inner option. However, the Z seams will appear less consistent as the first extrusion of a new layer starts on a visible surface." msgstr "" @@ -17295,6 +17464,7 @@ msgid "Enable adaptive pressure advance (beta)" msgstr "Adaptieve Pressure Advance inschakelen (bèta)" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "tool"; align it once the term is settled. #, no-c-format, no-boost-format msgid "" "With increasing print speeds (and hence increasing volumetric flow through the nozzle) and increasing accelerations, it has been observed that the effective PA value typically decreases. This means that a single PA value is not always 100% optimal for all features and a compromise value is usually used that does not cause too much bulging on features with lower flow speed and accelerations while also not causing gaps on faster features.\n" @@ -17482,6 +17652,7 @@ msgid "Filament load time" msgstr "Filament laadt tijd" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "tool"; align it once the term is settled. msgid "Time to load new filament when switch filament. It's usually applicable for single-extruder multi-material machines. For tool changers or multi-tool machines, it's typically 0. For statistics only." msgstr "Tijd om nieuw filament te laden bij het wisselen van filament. Dit geldt meestal voor multi-materialmachines met één extruder. Voor toolchangers of machines met meerdere tools is dit doorgaans 0. Alleen voor statistieken." @@ -17489,14 +17660,17 @@ msgid "Filament unload time" msgstr "Tijd die nodig is om filament te ontladen" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "tool"; align it once the term is settled. msgid "Time to unload old filament when switch filament. It's usually applicable for single-extruder multi-material machines. For tool changers or multi-tool machines, it's typically 0. For statistics only." msgstr "Tijd om oud filament te ontladen bij het wisselen van filament. Dit geldt meestal voor multi-materialmachines met één extruder. Voor toolchangers of machines met meerdere tools is dit doorgaans 0. Alleen voor statistieken." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "tool"; align it once the term is settled. msgid "Tool change time" msgstr "Tijd voor toolwissel" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "tool"; align it once the term is settled. msgid "Time taken to switch tools. It's usually applicable for tool changers or multi-tool machines. For single-extruder multi-material machines, it's typically 0. For statistics only." msgstr "Tijd die nodig is om van tool te wisselen. Dit geldt meestal voor toolchangers of machines met meerdere tools. Voor multi-materialmachines met één extruder is dit doorgaans 0. Alleen voor statistieken." @@ -17647,6 +17821,7 @@ msgid "Minimal purge on wipe tower" msgstr "Minimale filament reiniging op de wipe tower" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "afveegblok"; align it once the term is settled; Unsettled glossary term (⚠) "Tool (printer)": this entry uses "tool"; align it once the term is settled. 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, Orca Slicer will always prime this amount of material into the wipe tower to produce successive infill or sacrificial object extrusions reliably." msgstr "Na een toolwissel is de exacte positie van het pas geladen filament in het mondstuk mogelijk niet bekend en is de filamentdruk waarschijnlijk nog niet stabiel. Voordat de printkop in een vulling of een offerobject wordt gespoeld, drukt Orca Slicer altijd deze hoeveelheid materiaal in het afveegblok, zodat de daaropvolgende extrusies in de vulling of het offerobject betrouwbaar zijn." @@ -17661,6 +17836,7 @@ msgid "Interface layer pre-extrusion distance" msgstr "Voorextrusieafstand overgangslaag" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "prime toren"; align it once the term is settled. msgid "Pre-extrusion distance for prime tower interface layer (where different materials meet)." msgstr "Voorextrusieafstand voor de overgangslaag van de prime toren (waar verschillende materialen samenkomen)." @@ -17669,14 +17845,17 @@ msgid "Interface layer pre-extrusion length" msgstr "Voorextrusielengte overgangslaag" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "prime toren"; align it once the term is settled. msgid "Pre-extrusion length for prime tower interface layer (where different materials meet)." msgstr "Voorextrusielengte voor de overgangslaag van de prime toren (waar verschillende materialen samenkomen)." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "toren"; align it once the term is settled. msgid "Tower ironing area" msgstr "Strijkgebied van de toren" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "prime toren"; align it once the term is settled. msgid "Ironing area for prime tower interface layer (where different materials meet)." msgstr "Strijkgebied voor de overgangslaag van de prime toren (waar verschillende materialen samenkomen)." @@ -17688,6 +17867,7 @@ msgid "Interface layer purge length" msgstr "Spoellengte overgangslaag" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "prime toren"; align it once the term is settled. msgid "Purge length for prime tower interface layer (where different materials meet)." msgstr "Spoellengte voor de overgangslaag van de prime toren (waar verschillende materialen samenkomen)." @@ -17696,6 +17876,7 @@ msgid "Interface layer print temperature" msgstr "Printtemperatuur overgangslaag" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "prime toren"; align it once the term is settled. msgid "Print temperature for prime tower interface layer (where different materials meet). If set to -1, use max recommended nozzle temperature." msgstr "Printtemperatuur voor de overgangslaag van de prime toren (waar verschillende materialen samenkomen). Bij -1 wordt de maximaal aanbevolen mondstuktemperatuur gebruikt." @@ -17712,26 +17893,32 @@ msgid "This string is edited by RammingDialog and contains ramming specific para msgstr "Deze frase is bewerkt door het Rammingdialoog en bevat parameters voor de ramming." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "tool"; align it once the term is settled. msgid "Enable ramming for multi-tool setups" msgstr "Ramming inschakelen voor opstellingen met meerdere tools" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "afveegblok"; align it once the term is settled; Unsettled glossary term (⚠) "Tool (printer)": this entry uses "tool"; align it once the term is settled. msgid "Perform ramming when using multi-tool printer (i.e. when the 'Single Extruder Multimaterial' in Printer Settings is unchecked). When checked, a small amount of filament is rapidly extruded on the wipe tower just before the tool change. This option is only used when the wipe tower is enabled." msgstr "Voer ramming uit bij gebruik van een printer met meerdere tools (d.w.z. wanneer 'Single Extruder Multimaterial' in de printerinstellingen niet is aangevinkt). Indien aangevinkt wordt er vlak voor de toolwissel een kleine hoeveelheid filament snel op het afveegblok geëxtrudeerd. Deze optie wordt alleen gebruikt wanneer het afveegblok is ingeschakeld." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "tool"; align it once the term is settled. msgid "Multi-tool ramming volume" msgstr "Rammingvolume bij meerdere tools" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "tool"; align it once the term is settled. msgid "The volume to be rammed before the tool change." msgstr "Het volume dat vóór de toolwissel moet worden gerammd." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "tool"; align it once the term is settled. msgid "Multi-tool ramming flow" msgstr "Rammingflow bij meerdere tools" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "tool"; align it once the term is settled. msgid "Flow used for ramming the filament before the tool change." msgstr "Flow die wordt gebruikt voor het rammen van het filament vóór de toolwissel." @@ -18191,14 +18378,16 @@ msgstr "Laaghoogte van de eerste laag" msgid "Height of the first layer. Making the first layer height thicker can improve build plate adhesion." msgstr "Dit is de hoogte van de eerste laag. Door de hoogte van de eerste laag hoger te maken, kan de hechting op het printbed worden verbeterd." -msgid "This is the speed for the first layer except for solid infill sections." -msgstr "Dit is de snelheid voor de eerste laag behalve solide vulling (infill) delen" +# AI Translated +msgid "This is the speed for the walls and brim of the first layer." +msgstr "Dit is de snelheid voor de wanden en de rand van de eerste laag." msgid "First layer infill" msgstr "Vulling (infill) van de eerste laag" -msgid "This is the speed for solid infill parts of the first layer." -msgstr "Dit is de snelheid voor de solide vulling (infill) delen van de eerste laag." +# AI Translated +msgid "This is the speed for the first layer except for walls and brim, such as infill, gap fill and support." +msgstr "Dit is de snelheid voor de eerste laag, behalve voor wanden en rand, zoals vulling, gatvulling en ondersteuning." # AI Translated msgid "First layer travel speed" @@ -19006,8 +19195,8 @@ msgstr "Vulling (infill)/wand overlap" # AI Translated #, no-c-format, no-boost-format -msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to line width of sparse infill. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." -msgstr "Hiermee kan het vulgebied iets worden vergroot zodat het overlapt met de wanden voor een betere hechting. De percentagewaarde is relatief ten opzichte van de lijnbreedte van de dunne vulling (infill). Stel deze waarde in op ~10-15% om mogelijke overextrusie en materiaalophoping, die ruwe bovenoppervlakken veroorzaken, te beperken." +msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to the inner wall line width. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." +msgstr "Hiermee kan het vulgebied iets worden vergroot zodat het overlapt met de wanden voor een betere hechting. De percentagewaarde is relatief ten opzichte van de lijnbreedte van de binnenste wand. Stel deze waarde in op ~10-15% om mogelijke overextrusie en materiaalophoping, die ruwe bovenoppervlakken veroorzaken, te beperken." # AI Translated msgid "Top/Bottom solid infill/wall overlap" @@ -19015,8 +19204,8 @@ msgstr "Overlap van solide vulling boven/onder met de wand" # AI Translated #, no-c-format, no-boost-format -msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to line width of sparse infill." -msgstr "Het gebied van de solide vulling aan de bovenzijde wordt iets vergroot zodat het met de wand overlapt voor een betere hechting en om speldenprikgaatjes waar de bovenvulling de wanden raakt zoveel mogelijk te voorkomen. Een waarde van 25-30% is een goed startpunt om speldenprikgaatjes te beperken. De percentagewaarde is relatief ten opzichte van de lijnbreedte van de dunne vulling (infill)." +msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to the inner wall line width." +msgstr "Het gebied van de solide vulling aan de bovenzijde wordt iets vergroot zodat het met de wand overlapt voor een betere hechting en om speldenprikgaatjes waar de bovenvulling de wanden raakt zoveel mogelijk te voorkomen. Een waarde van 25-30% is een goed startpunt om speldenprikgaatjes te beperken. De percentagewaarde is relatief ten opzichte van de lijnbreedte van de binnenste wand." msgid "This is the speed for internal sparse infill." msgstr "Dit is de snelheid voor de dunne vulling (infill)" @@ -19047,8 +19236,8 @@ msgid "Interlocking depth of a segmented region" msgstr "Insluitdiepte van een gesegmenteerde regio" # AI Translated -msgid "Interlocking depth of a segmented region. It will be ignored if \"mmu_segmented_region_max_width\" is zero or if \"mmu_segmented_region_interlocking_depth\" is bigger than \"mmu_segmented_region_max_width\". Zero disables this feature." -msgstr "Vergrendeldiepte van een gesegmenteerd gebied. Dit wordt genegeerd als \"mmu_segmented_region_max_width\" nul is of als \"mmu_segmented_region_interlocking_depth\" groter is dan \"mmu_segmented_region_max_width\". Nul schakelt deze functie uit." +msgid "Interlocking depth of a segmented region. On every other layer, the segmented region is limited to this depth. It will be ignored if \"interlocking_beam\" is enabled. Zero disables this feature." +msgstr "Insluitdiepte van een gesegmenteerde regio. Op elke tweede laag is de gesegmenteerde regio beperkt tot deze diepte. Wordt genegeerd als \"interlocking_beam\" is ingeschakeld. Nul schakelt deze functie uit." # AI Translated msgid "Use beam interlocking" @@ -19176,11 +19365,11 @@ msgstr "Hoek voor het minimaliseren van de wandhoogte" # AI Translated msgid "" "Reduce the height of top-surface perimeters to match the model edge height.\n" -"Affects perimeters with a slope less than this angle (degrees).\n" +"Affects perimeters with a slope greater than this angle (degrees).\n" "A reasonable value is 35. Set to 0 to disable." msgstr "" "Verlaag de hoogte van de perimeters van het bovenoppervlak zodat deze overeenkomt met de hoogte van de modelrand.\n" -"Heeft invloed op perimeters met een helling kleiner dan deze hoek (graden).\n" +"Heeft invloed op perimeters met een helling groter dan deze hoek (graden).\n" "Een redelijke waarde is 35. Zet op 0 om uit te schakelen." # AI Translated @@ -19951,10 +20140,12 @@ msgid "Retraction distance when extruder change" msgstr "Terugtrekafstand bij extruderwissel" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "gereedschap"; align it once the term is settled. msgid "Retraction Length (Toolchange)" msgstr "Terugtreklengte (Gereedschapswissel)" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "gereedschap"; align it once the term is settled. 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 "Wanneer het terugtrekken vóór een gereedschapswissel wordt geactiveerd, wordt het filament met de opgegeven hoeveelheid teruggetrokken (de lengte wordt gemeten op het onbewerkte filament, voordat het de extruder ingaat)." @@ -20073,6 +20264,7 @@ msgid "When the retraction is compensated after the travel move, the extruder wi msgstr "Als retracten wordt gecompenseerd na een beweging, wordt deze extra hoeveelheid filament geëxtrudeerd. Deze instelling is zelden van toepassing." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "gereedschap"; align it once the term is settled. msgid "Extra length on restart (Toolchange)" msgstr "Extra lengte bij herstart (Gereedschapswissel)" @@ -20258,7 +20450,7 @@ msgid "Use scarf joint for inner walls as well." msgstr "Gebruik de schuine naad ook voor de binnenste wanden." # AI Translated -msgid "Role base wipe speed" +msgid "Role based wipe speed" msgstr "Veegsnelheid op basis van het extrusietype" # AI Translated @@ -20364,13 +20556,11 @@ msgstr "Tochtscherm" msgid "" "A draft shield is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft. It is usually needed only with open frame printers, i.e. without an enclosure.\n" "\n" -"Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used.\n" -"Note: With the draft shield active, the skirt will be printed at skirt distance from the object. Therefore, if brims are active it may intersect with them. To avoid this, increase the skirt distance value.\n" +"Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used." msgstr "" "Een tochtscherm is nuttig om een ABS- of ASA-print te beschermen tegen kromtrekken en loskomen van het printbed door tocht. Meestal is dit alleen nodig bij printers met een open frame, dus zonder behuizing.\n" "\n" -"Ingeschakeld = de skirt is even hoog als het hoogste geprinte object. Anders wordt 'Hoogte van de skirt' gebruikt.\n" -"Let op: met een actief tochtscherm wordt de skirt op de skirt-afstand van het object geprint. Als er randen actief zijn, kan hij daarmee overlappen. Verhoog de waarde voor de skirt-afstand om dit te voorkomen.\n" +"Ingeschakeld = de skirt is even hoog als het hoogste geprinte object. Anders wordt 'Hoogte van de skirt' gebruikt." msgid "Enabled" msgstr "Aan" @@ -20507,6 +20697,7 @@ msgid "Farthest point timelapse" msgstr "Timelapse op het verste punt" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "afveegblok"; align it once the term is settled. msgid "When enabled, the timelapse snapshot is taken at the farthest point from camera instead of traveling to the wipe tower or excess chute. Only effective in traditional timelapse mode on non-I3 printers." msgstr "Indien ingeschakeld wordt de timelapsemomentopname genomen op het punt dat het verst van de camera ligt, in plaats van naar het afveegblok of de afvoerschacht te verplaatsen. Alleen van toepassing in de traditionele timelapsemodus op niet-i3-printers." @@ -20526,6 +20717,7 @@ msgid "Preheat time" msgstr "Voorverwarmtijd" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "tool"; align it once the term is settled. msgid "To reduce the waiting time after tool change, Orca can preheat the next tool while the current tool is still in use. This setting specifies the time in seconds to preheat the next tool. Orca will insert a M104 command to preheat the tool in advance." msgstr "Om de wachttijd na een toolwissel te verkorten, kan Orca de volgende tool voorverwarmen terwijl de huidige tool nog in gebruik is. Deze instelling bepaalt de tijd in seconden om de volgende tool voor te verwarmen. Orca voegt een M104-opdracht in om de tool alvast op te warmen." @@ -20583,6 +20775,7 @@ msgid "Number of independent Y-axis gantries. 1 for IDEX/single-rail IQEX. 2 for msgstr "Aantal onafhankelijke Y-as-portalen. 1 voor IDEX/IQEX met één rail. 2 voor systemen met twee portalen (verdeelt het printbed in rijen)." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "gereedschap"; align it once the term is settled. msgid "Tools per Gantry" msgstr "Gereedschappen per portaal" @@ -20591,10 +20784,12 @@ msgid "Number of independent toolheads per gantry along X. 2 for IDEX-style." msgstr "Aantal onafhankelijke printkoppen per portaal langs X. 2 voor IDEX-opstellingen." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "gereedschap"; align it once the term is settled. msgid "Tool 0 Position" msgstr "Positie gereedschap 0" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "gereedschap"; align it once the term is settled. msgid "Physical position on the bed where tool T0 (index 0) is located. Determines how tool indices map to bed zones. For single-gantry setups (IDEX) only left/right matters; for dual-gantry setups (IQEX) all four corners are selectable (front = lower Y / near the operator, rear = higher Y / back of machine)." msgstr "Fysieke positie op het printbed waar gereedschap T0 (index 0) zich bevindt. Bepaalt hoe gereedschapsindexen aan zones van het printbed worden gekoppeld. Bij opstellingen met één portaal (IDEX) telt alleen links/rechts; bij opstellingen met twee portalen (IQEX) zijn alle vier de hoeken te kiezen (voor = lagere Y / dicht bij de gebruiker, achter = hogere Y / achterkant van de machine)." @@ -20667,10 +20862,12 @@ msgid "Display names for each user-defined IDEX/IQEX parallel print mode." msgstr "Weergavenamen voor elke door de gebruiker gedefinieerde parallelle IDEX/IQEX-printmodus." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "gereedschap"; align it once the term is settled. msgid "IDEX/IQEX Mode Active Tools" msgstr "Actieve gereedschappen IDEX/IQEX-modus" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "gereedschap"; align it once the term is settled. msgid "Tool role assignments for each mode. Format: \"idx:P,idx:C,idx:M\" where P=Primary, C=Copy, M=Mirror (e.g. \"0:P,1:C,2:M,3:M\"). Managed by the IDEX/IQEX Modes editor in the Printer preset." msgstr "Roltoewijzingen van de gereedschappen voor elke modus. Formaat: \"idx:P,idx:C,idx:M\" waarbij P=Primary (Primair), C=Copy (Kopie), M=Mirror (Spiegel) (bijv. \"0:P,1:C,2:M,3:M\"). Beheerd door de IDEX/IQEX-moduseditor in de printervoorinstelling." @@ -20687,6 +20884,7 @@ msgid "Manual Filament Change" msgstr "Handmatige filamentwissel" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "tool"; align it once the term is settled. msgid "Enable this option to omit the custom Change filament G-code only at the beginning of the print. The tool change command (e.g., T0) will be skipped throughout the entire print. This is useful for manual multi-material printing, where we use M600/PAUSE to trigger the manual filament change action." msgstr "Schakel deze optie in om de aangepaste G-code voor het wisselen van filament alleen aan het begin van de print weg te laten. De opdracht voor de toolwissel (bijv. T0) wordt gedurende de hele print overgeslagen. Dit is nuttig voor handmatig multi-materialprinten, waarbij M600/PAUSE wordt gebruikt om de handmatige filamentwissel te activeren." @@ -20694,6 +20892,7 @@ msgid "Wipe tower type" msgstr "Type spoeltoren" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "afveegblok"; align it once the term is settled; Unsettled glossary term (⚠) "Tool (printer)": this entry uses "tool"; align it once the term is settled. msgid "Choose the wipe tower implementation for multi-material prints. Type 1 is recommended for Bambu and Qidi printers with a filament cutter. Type 2 offers better compatibility with multi-tool and MMU printers and provide overall better compatibility." msgstr "Kies de implementatie van het afveegblok voor multi-materialprints. Type 1 wordt aanbevolen voor Bambu- en Qidi-printers met een filamentsnijder. Type 2 biedt betere compatibiliteit met multi-tool- en MMU-printers en over het geheel genomen een betere compatibiliteit." @@ -20706,10 +20905,12 @@ msgid "Type 2" msgstr "Type 2" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "prime toren"; align it once the term is settled. msgid "Purge in prime tower" msgstr "Spoelen in de prime toren" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "prime toren"; align it once the term is settled. msgid "Purge remaining filament into prime tower." msgstr "Spoel het resterende filament in de prime toren." @@ -20718,18 +20919,22 @@ msgid "Enable filament ramming" msgstr "Filament-ramming inschakelen" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "afveegblok"; align it once the term is settled; Unsettled glossary term (⚠) "Tool (printer)": this entry uses "tool"; align it once the term is settled. msgid "Tool change on wipe tower" msgstr "Toolwissel op het afveegblok" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "afveegblok"; align it once the term is settled; Unsettled glossary term (⚠) "Tool (printer)": this entry uses "tool"; align it once the term is settled. msgid "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead." msgstr "Dwing de printkop naar het afveegblok te bewegen voordat de opdracht voor de toolwissel (Tx) wordt gegeven. Alleen relevant voor printers met meerdere extruders (meerdere printkoppen) die een afveegblok van type 2 gebruiken. Standaard slaat Orca deze verplaatsing op machines met meerdere printkoppen over, omdat de firmware de kopwissel afhandelt, waardoor de Tx-opdracht boven het geprinte onderdeel kan worden gegeven. Schakel deze optie in als u wilt dat de toolwissel altijd boven het afveegblok wordt uitgevoerd." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "afveegblok"; align it once the term is settled. msgid "Wait for temperature on wipe tower" msgstr "Wachten op temperatuur bij het afveegblok" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "afveegblok"; align it once the term is settled; Unsettled glossary term (⚠) "Tool (printer)": this entry uses "gereedschap"; align it once the term is settled. msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command." msgstr "Pakt het nieuwe gereedschap op zonder te wachten tot het de printtemperatuur bereikt, verplaatst zich naar het afveegblok en wacht daar op de temperatuur, vlak voor het spoelen. Het materiaal dat tijdens het opwarmen uitloopt komt op het blok terecht in plaats van op het model, en de verplaatsing overlapt met het opwarmen. Alleen relevant voor printers met meerdere extruders (meerdere printkoppen) die een afveegblok van type 2 gebruiken. De firmware of de gereedschapswisselmacro mag niet zelf op de temperatuur wachten. Wanneer dit is uitgeschakeld, wordt het wachten op de temperatuur direct na het gereedschapswisselcommando uitgevoerd." @@ -20738,6 +20943,7 @@ msgid "No sparse layers (beta)" msgstr "Geen dunne lagen (bèta)" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "afveegblok"; align it once the term is settled; Unsettled glossary term (⚠) "Tool (printer)": this entry uses "gereedschap"; align it once the term is settled. msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower, so the tower ends up below the model and the toolhead has to reach down to it. Layouts where that would collide with an already printed object are rejected. Has no effect with smooth timelapse or clumping detection, which need a tower on every layer." msgstr "Indien ingeschakeld wordt het afveegblok niet geprint op lagen zonder gereedschapswissels. Op lagen met een gereedschapswissel beweegt de extruder omlaag om het afveegblok te printen, zodat het blok onder het model uitkomt en de printkop ernaartoe omlaag moet reiken. Opstellingen waarbij dat zou botsen met een al geprint voorwerp worden afgewezen. Heeft geen effect bij vloeiende timelapse of klontdetectie, die op elke laag een blok nodig hebben." @@ -20746,6 +20952,7 @@ msgid "Combine sparse layers" msgstr "Dunne lagen combineren" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "prime toren"; align it once the term is settled. msgid "" "If enabled, consecutive layers on which the prime tower has no filament change are printed as a single thicker tower layer instead of one thin layer each, the same way infill combination merges sparse infill. The merged layer is printed at the top of the run, at the height of everything it covers.\n" "\n" @@ -20766,10 +20973,12 @@ msgid "If enabled, all printing extruders will be primed at the front edge of th msgstr "Alle extruders worden afgeveegd aan de voorzijde van het printbed aan het begin van de print als dit is ingeschakeld." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "tool"; align it once the term is settled. msgid "Toolchange ordering" msgstr "Volgorde van toolwissels" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "tool"; align it once the term is settled. msgid "" "Determines the order of tool changes on each layer.\n" "- Default: Starts with the last used extruder to minimize tool changes.\n" @@ -20788,6 +20997,7 @@ msgid "Cyclic order" msgstr "Cyclische volgorde" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "gereedschap"; align it once the term is settled. msgid "" "Custom filament sequence used by the cyclic toolchange ordering, as filament numbers separated by commas (e.g. \"3,2,1,4\").\n" "Each layer prints its filaments following this sequence; filaments not listed are printed last, in ascending order.\n" @@ -20802,6 +21012,7 @@ msgid "Apply cyclic order to first layer" msgstr "Cyclische volgorde toepassen op de eerste laag" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "gereedschap"; align it once the term is settled. msgid "" "Applies the cyclic toolchange order to the first layer as well.\n" "By default this is disabled, because the first layer is instead ordered for the best bed adhesion: filaments that print small, fragile first-layer features are printed last, so the following tool changes and travel moves are less likely to knock those weakly anchored parts loose. This first-layer order also honors a custom first layer filament sequence when one is set. The cyclic order's benefit (extra tool changes give each layer more time to cool) does not apply to the first layer, which is printed slowly and hot for adhesion.\n" @@ -21071,6 +21282,7 @@ msgid "Independent support layer height" msgstr "Onafhankelijke support laaghoogte" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "prime toren"; align it once the term is settled. msgid "Support layer uses layer height independent with object layer. This is to support customizing Z-gap and save print time. This option will be invalid when the prime tower is enabled." msgstr "De ondersteuningslaag gebruikt een laaghoogte die onafhankelijk is van die van het object. Zo kunt u de Z-ruimte aanpassen en printtijd besparen. Deze optie is ongeldig wanneer de prime toren is ingeschakeld." @@ -21241,7 +21453,7 @@ msgid "Enable belt purge tower" msgstr "Band-spoeltoren inschakelen" # AI Translated -# Needs human review: Prime tower glossary cell is unsettled (Prime toren / Afveegblok); 'wipe/prime tower' rendered as 'prime toren'. +# Needs human review: Prime tower glossary cell is unsettled (Prime toren / Afveegblok); 'wipe/prime tower' rendered as 'prime toren' msgid "Belt-printer replacement for the wipe/prime tower. When enabled on a belt printer, a purge prism is automatically generated next to the printed parts and filament-change purging is routed into it (the classic wipe tower cannot be used on belt printers because its G-code bypasses the belt transform). Only available on belt printers." msgstr "Vervanging van de prime toren voor bandprinters. Indien ingeschakeld op een bandprinter wordt automatisch een spoelprisma naast de geprinte onderdelen gegenereerd en wordt het spoelen bij filamentwissels daarin geleid (de klassieke prime toren kan niet op bandprinters worden gebruikt, omdat de G-code ervan de bandtransformatie omzeilt). Alleen beschikbaar op bandprinters." @@ -21250,7 +21462,7 @@ msgid "Belt purge tower width" msgstr "Breedte band-spoeltoren" # AI Translated -# Needs human review: Prime tower glossary cell is unsettled (Prime toren / Afveegblok); 'wipe tower' rendered as 'prime toren'. +# Needs human review: Prime tower glossary cell is unsettled (Prime toren / Afveegblok); 'wipe tower' rendered as 'prime toren' msgid "Width (machine X, across the belt) of the purge prism that is automatically generated on belt printers when the belt purge tower is enabled and multiple filaments are used. Filament-change purging is routed into this prism's extrusions instead of a classic wipe tower. Its height is computed automatically from the worst-case purge volume per layer: a wider prism results in a shorter one." msgstr "Breedte (machine-X, dwars over de band) van het spoelprisma dat automatisch op bandprinters wordt gegenereerd wanneer de band-spoeltoren is ingeschakeld en er meerdere filamenten worden gebruikt. Het spoelen bij filamentwissels wordt in de extrusies van dit prisma geleid in plaats van in een klassieke prime toren. De hoogte wordt automatisch berekend uit het ongunstigste spoelvolume per laag: een breder prisma wordt lager." @@ -21537,6 +21749,7 @@ msgid "Internal ribs" msgstr "Interne ribben" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "prime toren"; align it once the term is settled. msgid "Enable internal ribs to increase the stability of the prime tower." msgstr "Schakel interne ribben in om de stabiliteit van de prime toren te vergroten." @@ -21568,6 +21781,7 @@ msgid "Prime volume mode" msgstr "Modus voor primingvolume" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "afveegblok"; align it once the term is settled. msgid "Selects how the wipe-tower prime and flush volumes are computed on multi-extruder printers." msgstr "Bepaalt hoe de priming- en spoelvolumes van het afveegblok worden berekend op printers met meerdere extruders." @@ -21589,6 +21803,7 @@ msgid "Wipe tower rotation angle with respect to X axis." msgstr "Rotatie van het afveegblok ten opzichte van de X-as." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "prime toren"; align it once the term is settled. msgid "Brim width of prime tower, negative number means auto calculated width based on the height of prime tower." msgstr "Randbreedte van de prime toren; een negatief getal betekent dat de breedte automatisch wordt berekend op basis van de hoogte van de prime toren." @@ -21597,50 +21812,54 @@ msgid "Stabilization cone apex angle" msgstr "Tophoek van de stabilisatiekegel" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "afveegblok"; align it once the term is settled. msgid "Angle at the apex of the cone that is used to stabilize the wipe tower. Larger angle means wider base." msgstr "Hoek aan de top van de kegel die wordt gebruikt om het afveegblok te stabiliseren. Een grotere hoek betekent een bredere basis." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "afveegblok"; align it once the term is settled. msgid "Maximum wipe tower print speed" msgstr "Maximale printsnelheid van het afveegblok" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "afveegblok"; align it once the term is settled; Unsettled glossary term (⚠) "Tool (printer)": this entry uses "gereedschap"; align it once the term is settled. msgid "" "The maximum print speed when purging in the wipe tower and printing the wipe tower sparse layers. When purging, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" "\n" -"When printing the sparse layers, if the internal perimeter speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +"When printing the sparse layers, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" "\n" "Increasing this speed may affect the tower's stability as well as increase the force with which the nozzle collides with any blobs that may have formed on the wipe tower.\n" "\n" "Before increasing this parameter beyond the default of 90 mm/s, make sure your printer can reliably bridge at the increased speeds and that ooze when tool changing is well controlled.\n" "\n" -"For the wipe tower external perimeters the internal perimeter speed is used regardless of this setting." +"For the wipe tower external perimeters the internal perimeter speed is used, also limited by this setting." msgstr "" "De maximale printsnelheid bij het spoelen in het afveegblok en het printen van de dunne lagen van het afveegblok. Als bij het spoelen de snelheid van de dunne vulling (infill) of de uit de maximale volumetrische snelheid van het filament berekende snelheid lager is, wordt de laagste van beide gebruikt.\n" "\n" -"Als bij het printen van de dunne lagen de snelheid van de interne perimeter of de uit de maximale volumetrische snelheid van het filament berekende snelheid lager is, wordt de laagste van beide gebruikt.\n" +"Als bij het printen van de dunne lagen de snelheid van de dunne vulling (infill) of de uit de maximale volumetrische snelheid van het filament berekende snelheid lager is, wordt de laagste van beide gebruikt.\n" "\n" "Het verhogen van deze snelheid kan de stabiliteit van de toren beïnvloeden en de kracht vergroten waarmee het mondstuk botst met eventuele blobs die zich op het afveegblok hebben gevormd.\n" "\n" -"Controleer, voordat u deze parameter boven de standaardwaarde van 90 mm/s verhoogt, of uw printer bij de hogere snelheden betrouwbaar kan overbruggen en of het druipen bij toolwissels goed onder controle is.\n" +"Controleer, voordat u deze parameter boven de standaardwaarde van 90 mm/s verhoogt, of uw printer bij de hogere snelheden betrouwbaar kan overbruggen en of het druipen bij gereedschapswissels goed onder controle is.\n" "\n" -"Voor de externe perimeters van het afveegblok wordt ongeacht deze instelling de snelheid van de interne perimeter gebruikt." +"Voor de externe perimeters van het afveegblok wordt de snelheid van de interne perimeter gebruikt, ook beperkt door deze instelling." # AI Translated msgid "Wall type" msgstr "Wandtype" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "afveegblok"; align it once the term is settled. msgid "" "Wipe tower outer wall type.\n" -"1. Rectangle: The default wall type, a rectangle with fixed width and height.\n" +"1. Rectangle: A rectangle with fixed width and height.\n" "2. Cone: A cone with a fillet at the bottom to help stabilize the wipe tower.\n" -"3. Rib: Adds four ribs to the tower wall for enhanced stability." +"3. Rib: The default wall type, which adds four ribs to the tower wall for enhanced stability." msgstr "" "Type buitenwand van het afveegblok.\n" -"1. Rechthoek: het standaardwandtype, een rechthoek met vaste breedte en hoogte.\n" +"1. Rechthoek: een rechthoek met vaste breedte en hoogte.\n" "2. Kegel: een kegel met een afronding aan de onderkant om het afveegblok te helpen stabiliseren.\n" -"3. Rib: voegt vier ribben aan de wand van de toren toe voor extra stabiliteit." +"3. Rib: het standaardwandtype, dat vier ribben aan de wand van de toren toevoegt voor extra stabiliteit." msgid "Rectangle" msgstr "Rechthoek" @@ -21662,6 +21881,7 @@ msgid "Rib width" msgstr "Ribbreedte" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "prime toren"; align it once the term is settled. msgid "Rib width is always less than half the prime tower side length." msgstr "De ribbreedte is altijd kleiner dan de helft van de zijdelengte van de prime toren." @@ -21670,10 +21890,12 @@ msgid "Fillet wall" msgstr "Afgeronde wand" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "prime toren"; align it once the term is settled. msgid "The wall of prime tower will fillet." msgstr "De wand van de prime toren wordt afgerond." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "afveegblok"; align it once the term is settled. msgid "The extruder to use when printing perimeter of the wipe tower. Set to 0 to use the one that is available (non-soluble would be preferred)." msgstr "De extruder die wordt gebruikt bij het printen van de perimeter van het afveegblok. Zet op 0 om de beschikbare extruder te gebruiken (niet-oplosbaar heeft de voorkeur)." @@ -21688,22 +21910,27 @@ msgid "Skip points" msgstr "Punten overslaan" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "prime toren"; align it once the term is settled. msgid "The wall of prime tower will skip the start points of wipe path." msgstr "De wand van de prime toren slaat de startpunten van het veegpad over." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "toren"; align it once the term is settled. msgid "Enable tower interface features" msgstr "Overgangsfuncties van de toren inschakelen" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "prime toren"; align it once the term is settled. msgid "Enable optimized prime tower interface behavior when different materials meet." msgstr "Schakel geoptimaliseerd gedrag van de overgangslaag van de prime toren in wanneer verschillende materialen samenkomen." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "prime toren"; align it once the term is settled. msgid "Cool down from interface boost during prime tower" msgstr "Afkoelen na de temperatuurverhoging van de overgangslaag tijdens de prime toren" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "prime toren"; align it once the term is settled. msgid "When interface-layer temperature boost is active, set the nozzle back to print temperature at the start of the prime tower so it cools down during the tower." msgstr "Wanneer de temperatuurverhoging voor de overgangslaag actief is, wordt het mondstuk aan het begin van de prime toren teruggezet naar de printtemperatuur, zodat het tijdens de toren afkoelt." @@ -21739,10 +21966,12 @@ msgid "Maximal distance between supports on sparse infill sections." msgstr "Maximale afstand tussen support op dunne vullingsdelen." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "afveegblok"; align it once the term is settled. msgid "Wipe tower purge lines spacing" msgstr "Afstand tussen spoellijnen op het afveegblok" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "afveegblok"; align it once the term is settled. msgid "Spacing of purge lines on the wipe tower." msgstr "Afstand tussen de spoellijnen op het afveegblok." @@ -21751,14 +21980,16 @@ msgid "Extra flow for purging" msgstr "Extra flow voor het spoelen" # AI Translated -msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker or narrower than they normally would be. The spacing is adjusted automatically." -msgstr "Extra flow die wordt gebruikt voor de spoellijnen op het afveegblok. Hierdoor worden de spoellijnen dikker of dunner dan ze normaal zouden zijn. De afstand wordt automatisch aangepast." +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "afveegblok"; align it once the term is settled. +msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker than they normally would be. The spacing is adjusted automatically." +msgstr "Extra flow die wordt gebruikt voor de spoellijnen op het afveegblok. Hierdoor worden de spoellijnen dikker dan ze normaal zouden zijn. De afstand wordt automatisch aangepast." # AI Translated msgid "Idle temperature" msgstr "Temperatuur bij inactiviteit" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "tool"; align it once the term is settled. msgid "Nozzle temperature when the tool is currently not used in multi-tool setups. This is only used when 'Ooze prevention' is active in Print Settings. Set to 0 to disable." msgstr "Mondstuktemperatuur wanneer de tool in opstellingen met meerdere tools niet in gebruik is. Dit wordt alleen gebruikt wanneer 'Druippreventie' actief is in de printinstellingen. Zet op 0 om uit te schakelen." @@ -21881,13 +22112,13 @@ msgstr "Minimale wandlengte" # AI Translated msgid "" -"Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. Higher values remove more and longer walls.\n" +"Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. The value is a multiple of the wall width. Higher values remove more and longer walls.\n" "\n" -"NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the Advanced settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." +"NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the 'Walls and surfaces' settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." msgstr "" -"Pas deze waarde aan om te voorkomen dat er korte, niet-gesloten wanden worden geprint, wat de printtijd kan verlengen. Hogere waarden verwijderen meer en langere wanden.\n" +"Pas deze waarde aan om te voorkomen dat korte, niet-gesloten wanden worden geprint, wat de printtijd kan verlengen. De waarde is een veelvoud van de wandbreedte. Hogere waarden verwijderen meer en langere wanden.\n" "\n" -"LET OP: onder- en bovenoppervlakken worden niet door deze waarde beïnvloed, om zichtbare gaten aan de buitenzijde van het model te voorkomen. Pas 'Drempel voor één wand' in de geavanceerde instellingen hieronder aan om te bepalen wat als bovenoppervlak wordt beschouwd. 'Drempel voor één wand' is alleen zichtbaar als deze instelling boven de standaardwaarde van 0,5 staat of als bovenoppervlakken met één wand zijn ingeschakeld." +"LET OP: onder- en bovenoppervlakken worden niet door deze waarde beïnvloed, om zichtbare gaten aan de buitenzijde van het model te voorkomen. Pas 'Drempel voor één wand' in de instellingen 'Wanden en oppervlakten' hieronder aan om de gevoeligheid van wat als bovenoppervlak wordt beschouwd aan te passen. 'Drempel voor één wand' is alleen zichtbaar als deze instelling boven de standaardwaarde van 0,5 staat of als bovenoppervlakken met één wand zijn ingeschakeld." # AI Translated msgid "Maximum wall resolution" @@ -21966,6 +22197,7 @@ msgid "Filament change" msgstr "Filamentwissel" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "toren"; align it once the term is settled. msgid "The volume of material required to prime the extruder on the tower, excluding a hotend change." msgstr "Het materiaalvolume dat nodig is om de extruder op de toren te primen, exclusief een hotendwissel." @@ -22462,10 +22694,12 @@ msgid "Specific for sequential printing. Zero-based index of currently printed o msgstr "Specifiek voor sequentieel printen. Nulgebaseerde index van het momenteel geprinte object." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "afveegblok"; align it once the term is settled. msgid "Has wipe tower" msgstr "Heeft afveegblok" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "afveegblok"; align it once the term is settled. msgid "Whether or not wipe tower is being generated in the print." msgstr "Of er in de print wel of geen afveegblok wordt gegenereerd." @@ -22478,6 +22712,7 @@ msgid "Zero-based index of the first extruder used in the print. Same as initial msgstr "Nulgebaseerde index van de eerste extruder die in de print wordt gebruikt. Hetzelfde als initial_tool." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "tool"; align it once the term is settled. msgid "Initial tool" msgstr "Eerste tool" @@ -22566,10 +22801,12 @@ msgid "Total filament volume extruded per extruder during the entire print." msgstr "Totaal geëxtrudeerd filamentvolume per extruder tijdens de hele print." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "tool"; align it once the term is settled. msgid "Total tool changes" msgstr "Totaal aantal toolwissels" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "tool"; align it once the term is settled. msgid "Number of tool changes during the print." msgstr "Aantal toolwissels tijdens de print." @@ -22630,18 +22867,22 @@ msgid "Total cost of all material used in the print. Calculated from filament_co msgstr "Totale kosten van al het materiaal dat in de print is gebruikt. Berekend uit de waarde filament_cost in de filamentinstellingen." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "afveegblok"; align it once the term is settled. msgid "Total wipe tower cost" msgstr "Totale kosten van het afveegblok" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "afveegblok"; align it once the term is settled. msgid "Total cost of the material wasted on the wipe tower. Calculated from filament_cost value in Filament Settings." msgstr "Totale kosten van het materiaal dat op het afveegblok verloren gaat. Berekend uit de waarde filament_cost in de filamentinstellingen." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "afveegblok"; align it once the term is settled. msgid "Wipe tower volume" msgstr "Volume van het afveegblok" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "afveegblok"; align it once the term is settled. msgid "Total filament volume extruded on the wipe tower." msgstr "Totaal filamentvolume dat op het afveegblok is geëxtrudeerd." @@ -22789,6 +23030,7 @@ msgid "Size of the print bed bounding box" msgstr "Grootte van het omhullende kader van het printbed" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "prime toren"; align it once the term is settled. msgid "First layer center without wipe tower" msgstr "Midden van de eerste laag zonder prime toren" @@ -22948,10 +23190,12 @@ msgid "Indicates if relative positioning is being used." msgstr "Geeft aan of relatieve positionering wordt gebruikt." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "tool"; align it once the term is settled. msgid "Toolchange count" msgstr "Aantal toolwissels" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "tool"; align it once the term is settled. msgid "The number of toolchanges throughout the print." msgstr "Het aantal toolwissels tijdens de print." @@ -22972,18 +23216,22 @@ msgid "The retraction length of the new filament." msgstr "De terugtreklengte van het nieuwe filament." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "tool"; align it once the term is settled. msgid "Old retract length toolchange" msgstr "Oude terugtreklengte toolwissel" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "tool"; align it once the term is settled. msgid "The toolchange retraction length of the previous filament." msgstr "De terugtreklengte bij toolwissel van het vorige filament." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "tool"; align it once the term is settled. msgid "New retract length toolchange" msgstr "Nieuwe terugtreklengte toolwissel" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "tool"; align it once the term is settled. msgid "The toolchange retraction length of the new filament." msgstr "De terugtreklengte bij toolwissel van het nieuwe filament." @@ -23004,26 +23252,32 @@ msgid "The new filament temp." msgstr "De nieuwe filamenttemperatuur." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "tool"; align it once the term is settled. msgid "X after toolchange" msgstr "X na toolwissel" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "tool"; align it once the term is settled. msgid "The X pos after toolchange." msgstr "De X-positie na de toolwissel." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "tool"; align it once the term is settled. msgid "Y after toolchange" msgstr "Y na toolwissel" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "tool"; align it once the term is settled. msgid "The Y pos after toolchange." msgstr "De Y-positie na de toolwissel." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "tool"; align it once the term is settled. msgid "Z after toolchange" msgstr "Z na toolwissel" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "tool"; align it once the term is settled. msgid "The Z pos after toolchange." msgstr "De Z-positie na de toolwissel." @@ -24727,6 +24981,7 @@ msgid "Slice the plate first to get project material information." msgstr "Slice eerst het printbed om informatie over het projectmateriaal te krijgen." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "tool"; align it once the term is settled. msgid "This plate uses multiple materials. Enable IFS and assign each tool to a printer slot." msgstr "Dit printbed gebruikt meerdere materialen. Schakel IFS in en wijs elke tool aan een slot van de printer toe." @@ -26172,10 +26427,6 @@ msgstr "Slimme filamenttoewijzing inschakelen: wijs één filament aan meerdere msgid "File Saving" msgstr "Bestand opslaan" -# AI Translated -msgid "Don't remind me again" -msgstr "Herinner mij niet meer" - # AI Translated msgid "No further pop-up will appear. You can reopen it in 'Preferences'" msgstr "Er verschijnen geen pop-ups meer. U kunt dit opnieuw inschakelen in 'Voorkeuren'" @@ -36834,6 +37085,183 @@ msgstr "" "Kromtrekken voorkomen\n" "Wist je dat bij het printen van materialen die gevoelig zijn voor kromtrekken, zoals ABS, een juiste verhoging van de temperatuur van het warmtebed de kans op kromtrekken kan verkleinen?" +# AI Translated +#~ msgid "" +#~ "Line width of the Bridge. If expressed as a %, it will be computed over the nozzle diameter.\n" +#~ "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" +#~ "\n" +#~ "The maximum value is 100% or the nozzle diameter.\n" +#~ "If set to 0, the line width will match the Internal solid infill width." +#~ msgstr "" +#~ "Lijnbreedte van de brug. Als dit als % wordt uitgedrukt, wordt het berekend over de mondstukdiameter.\n" +#~ "Aanbevolen in combinatie met een hogere brugdichtheid of een hogere flow verhouding voor bruggen.\n" +#~ "\n" +#~ "De maximale waarde is 100% of de mondstukdiameter.\n" +#~ "Als dit op 0 wordt ingesteld, komt de lijnbreedte overeen met de breedte van de interne solide vulling." + +# AI Translated +#, no-c-format, no-boost-format +#~ msgid "" +#~ "Enable this option to slow down printing in areas where perimeters may have curled upwards.\n" +#~ "For example, additional slowdown will be applied when printing overhangs on sharp corners like the front of the Benchy hull, reducing curling which compounds over multiple layers.\n" +#~ "\n" +#~ "It is generally recommended to have this option switched on unless your printer cooling is powerful enough or the print speed is slow enough that perimeter curling does not happen. \n" +#~ "If printing with a high external perimeter speed, this parameter may introduce wall artifacts when slowing down, due to the potentially large variance in print speeds causing the extruder to be unable to keep up with the requested flow change.\n" +#~ "Root cause of these artifacts is most likely PA tuning being slightly off, especially when combined with a high PA smooth time.\n" +#~ "\n" +#~ "Recommendations when enabling this option:\n" +#~ "1. Reduce Pressure Advance smooth time to 0.015 - 0.02 so the extruder reacts quickly to the speed changes.\n" +#~ "2. Increase the minimum print speeds to limit the magnitude of the slowdown and reduce the variance between fast and slow segments.\n" +#~ "3. If artifacts still appear, enable Extrusion Rate Smoothing (ERS) to further smooth the flow transitions.\n" +#~ "\n" +#~ "Note: When this option is enabled, overhang perimeters are treated like overhangs, meaning the overhang speed is applied even if the overhanging perimeter is part of a bridge.\n" +#~ "For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 100% overhang speed will be applied." +#~ msgstr "" +#~ "Schakel deze optie in om af te remmen in gebieden waar perimeters omhoog gekruld kunnen zijn.\n" +#~ "Zo wordt er extra afgeremd bij het printen van overhangen op scherpe hoeken, zoals de voorkant van de Benchy-romp, wat het omkrullen vermindert dat zich over meerdere lagen opstapelt.\n" +#~ "\n" +#~ "Het is over het algemeen aan te raden deze optie ingeschakeld te laten, tenzij de koeling van uw printer krachtig genoeg is of de printsnelheid laag genoeg is om omkrullen van perimeters te voorkomen. \n" +#~ "Bij printen met een hoge snelheid voor de externe perimeter kan deze parameter tijdens het afremmen wandartefacten veroorzaken, doordat de mogelijk grote verschillen in printsnelheid ervoor zorgen dat de extruder de gevraagde flowverandering niet kan bijhouden.\n" +#~ "De oorzaak van deze artefacten is meestal een licht afwijkende PA-afstelling, vooral in combinatie met een hoge PA-smoothtijd.\n" +#~ "\n" +#~ "Aanbevelingen bij het inschakelen van deze optie:\n" +#~ "1. Verlaag de smoothtijd van Pressure Advance tot 0,015 - 0,02, zodat de extruder snel op de snelheidsveranderingen reageert.\n" +#~ "2. Verhoog de minimale printsnelheden om de omvang van de vertraging te beperken en het verschil tussen snelle en trage segmenten te verkleinen.\n" +#~ "3. Als er nog steeds artefacten optreden, schakel dan Extrusion Rate Smoothing (ERS) in om de flowovergangen verder af te vlakken.\n" +#~ "\n" +#~ "Let op: wanneer deze optie is ingeschakeld, worden overhangende perimeters als overhangen behandeld, wat betekent dat de overhangsnelheid wordt toegepast, zelfs als de overhangende perimeter deel uitmaakt van een brug.\n" +#~ "Bijvoorbeeld: wanneer de perimeters voor 100% overhangen en er geen wand is die ze van onderaf ondersteunt, wordt de overhangsnelheid voor 100% toegepast." + +# AI Translated +#~ msgid "" +#~ "Speed of the externally visible bridge extrusions.\n" +#~ "\n" +#~ "In addition, if Slow down for curled perimeters is disabled or Classic overhang mode is enabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." +#~ msgstr "" +#~ "Snelheid van de extern zichtbare brugextrusies.\n" +#~ "\n" +#~ "Als bovendien Afremmen voor omgekrulde perimeters is uitgeschakeld of de klassieke overhangmodus is ingeschakeld, is dit de printsnelheid van overhangende wanden die voor minder dan 13% worden ondersteund, ongeacht of ze deel uitmaken van een brug of een overhang." + +# AI Translated +#~ msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above. Set to zero for auto." +#~ msgstr "Deze afzonderlijke instelling beïnvloedt de snelheid van perimeters met een straal <= small_perimeter_threshold (meestal gaten). Als dit als percentage wordt uitgedrukt (bijvoorbeeld: 80%), wordt het berekend op basis van de bovenstaande instelling voor de snelheid van de buitenste wand. Zet op nul voor automatisch." + +# AI Translated +#~ msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above. Set to zero for auto." +#~ msgstr "Hetzelfde als \"Kleine perimeters\", maar voor ondersteuningen. Deze afzonderlijke instelling beïnvloedt de ondersteuningssnelheid voor gebieden <= `small_support_perimeter_threshold`. Als dit als percentage wordt uitgedrukt (bijvoorbeeld: 80%), wordt het berekend op basis van de bovenstaande instelling voor de snelheid van de ondersteuning of de ondersteuningsinterface. Zet op nul voor automatisch." + +# AI Translated +#~ msgid "" +#~ "Print sequence of the internal (inner) and external (outer) walls.\n" +#~ "\n" +#~ "Use Inner/Outer for best overhangs. This is because the overhanging walls can adhere to a neighbouring perimeter while printing. However, this option results in slightly reduced surface quality as the external perimeter is deformed by being squashed to the internal perimeter.\n" +#~ "\n" +#~ "Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended against the Outer/Inner option in most cases.\n" +#~ "\n" +#~ "Use Outer/Inner for the same external wall quality and dimensional accuracy benefits of Inner/Outer/Inner option. However, the Z seams will appear less consistent as the first extrusion of a new layer starts on a visible surface." +#~ msgstr "" +#~ "Printvolgorde van de interne (binnenste) en externe (buitenste) wanden.\n" +#~ "\n" +#~ "Gebruik Binnen/Buiten voor de beste overhangen. Dat komt doordat de overhangende wanden tijdens het printen kunnen hechten aan een naastgelegen perimeter. Deze optie levert echter een iets mindere oppervlaktekwaliteit op, omdat de externe perimeter vervormt doordat hij tegen de interne perimeter wordt aangedrukt.\n" +#~ "\n" +#~ "Gebruik Binnen/Buiten/Binnen voor de beste afwerking van het buitenoppervlak en de beste maatnauwkeurigheid, omdat de buitenwand ongestoord door een interne perimeter wordt geprint. De prestaties bij overhangen nemen echter af, omdat er geen interne perimeter is om de buitenwand tegenaan te printen. Voor deze optie zijn minimaal 3 wanden nodig om effectief te zijn, omdat eerst de interne wanden vanaf de 3e perimeter worden geprint, daarna de externe perimeter en ten slotte de eerste interne perimeter. Deze optie wordt in de meeste gevallen aanbevolen boven de optie Buiten/Binnen.\n" +#~ "\n" +#~ "Gebruik Buiten/Binnen voor dezelfde voordelen op het gebied van kwaliteit van de buitenwand en maatnauwkeurigheid als bij de optie Binnen/Buiten/Binnen. De Z-naden zullen echter minder consistent lijken, omdat de eerste extrusie van een nieuwe laag op een zichtbaar oppervlak begint." + +#~ msgid "This is the speed for the first layer except for solid infill sections." +#~ msgstr "Dit is de snelheid voor de eerste laag behalve solide vulling (infill) delen" + +#~ msgid "This is the speed for solid infill parts of the first layer." +#~ msgstr "Dit is de snelheid voor de solide vulling (infill) delen van de eerste laag." + +# AI Translated +#, no-c-format, no-boost-format +#~ msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to line width of sparse infill. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." +#~ msgstr "Hiermee kan het vulgebied iets worden vergroot zodat het overlapt met de wanden voor een betere hechting. De percentagewaarde is relatief ten opzichte van de lijnbreedte van de dunne vulling (infill). Stel deze waarde in op ~10-15% om mogelijke overextrusie en materiaalophoping, die ruwe bovenoppervlakken veroorzaken, te beperken." + +# AI Translated +#, no-c-format, no-boost-format +#~ msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to line width of sparse infill." +#~ msgstr "Het gebied van de solide vulling aan de bovenzijde wordt iets vergroot zodat het met de wand overlapt voor een betere hechting en om speldenprikgaatjes waar de bovenvulling de wanden raakt zoveel mogelijk te voorkomen. Een waarde van 25-30% is een goed startpunt om speldenprikgaatjes te beperken. De percentagewaarde is relatief ten opzichte van de lijnbreedte van de dunne vulling (infill)." + +# AI Translated +#~ msgid "Interlocking depth of a segmented region. It will be ignored if \"mmu_segmented_region_max_width\" is zero or if \"mmu_segmented_region_interlocking_depth\" is bigger than \"mmu_segmented_region_max_width\". Zero disables this feature." +#~ msgstr "Vergrendeldiepte van een gesegmenteerd gebied. Dit wordt genegeerd als \"mmu_segmented_region_max_width\" nul is of als \"mmu_segmented_region_interlocking_depth\" groter is dan \"mmu_segmented_region_max_width\". Nul schakelt deze functie uit." + +# AI Translated +#~ msgid "" +#~ "Reduce the height of top-surface perimeters to match the model edge height.\n" +#~ "Affects perimeters with a slope less than this angle (degrees).\n" +#~ "A reasonable value is 35. Set to 0 to disable." +#~ msgstr "" +#~ "Verlaag de hoogte van de perimeters van het bovenoppervlak zodat deze overeenkomt met de hoogte van de modelrand.\n" +#~ "Heeft invloed op perimeters met een helling kleiner dan deze hoek (graden).\n" +#~ "Een redelijke waarde is 35. Zet op 0 om uit te schakelen." + +# AI Translated +#~ msgid "Role base wipe speed" +#~ msgstr "Veegsnelheid op basis van het extrusietype" + +# AI Translated +#~ msgid "" +#~ "A draft shield is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft. It is usually needed only with open frame printers, i.e. without an enclosure.\n" +#~ "\n" +#~ "Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used.\n" +#~ "Note: With the draft shield active, the skirt will be printed at skirt distance from the object. Therefore, if brims are active it may intersect with them. To avoid this, increase the skirt distance value.\n" +#~ msgstr "" +#~ "Een tochtscherm is nuttig om een ABS- of ASA-print te beschermen tegen kromtrekken en loskomen van het printbed door tocht. Meestal is dit alleen nodig bij printers met een open frame, dus zonder behuizing.\n" +#~ "\n" +#~ "Ingeschakeld = de skirt is even hoog als het hoogste geprinte object. Anders wordt 'Hoogte van de skirt' gebruikt.\n" +#~ "Let op: met een actief tochtscherm wordt de skirt op de skirt-afstand van het object geprint. Als er randen actief zijn, kan hij daarmee overlappen. Verhoog de waarde voor de skirt-afstand om dit te voorkomen.\n" + +# AI Translated +#~ msgid "" +#~ "The maximum print speed when purging in the wipe tower and printing the wipe tower sparse layers. When purging, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +#~ "\n" +#~ "When printing the sparse layers, if the internal perimeter speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +#~ "\n" +#~ "Increasing this speed may affect the tower's stability as well as increase the force with which the nozzle collides with any blobs that may have formed on the wipe tower.\n" +#~ "\n" +#~ "Before increasing this parameter beyond the default of 90 mm/s, make sure your printer can reliably bridge at the increased speeds and that ooze when tool changing is well controlled.\n" +#~ "\n" +#~ "For the wipe tower external perimeters the internal perimeter speed is used regardless of this setting." +#~ msgstr "" +#~ "De maximale printsnelheid bij het spoelen in het afveegblok en het printen van de dunne lagen van het afveegblok. Als bij het spoelen de snelheid van de dunne vulling (infill) of de uit de maximale volumetrische snelheid van het filament berekende snelheid lager is, wordt de laagste van beide gebruikt.\n" +#~ "\n" +#~ "Als bij het printen van de dunne lagen de snelheid van de interne perimeter of de uit de maximale volumetrische snelheid van het filament berekende snelheid lager is, wordt de laagste van beide gebruikt.\n" +#~ "\n" +#~ "Het verhogen van deze snelheid kan de stabiliteit van de toren beïnvloeden en de kracht vergroten waarmee het mondstuk botst met eventuele blobs die zich op het afveegblok hebben gevormd.\n" +#~ "\n" +#~ "Controleer, voordat u deze parameter boven de standaardwaarde van 90 mm/s verhoogt, of uw printer bij de hogere snelheden betrouwbaar kan overbruggen en of het druipen bij toolwissels goed onder controle is.\n" +#~ "\n" +#~ "Voor de externe perimeters van het afveegblok wordt ongeacht deze instelling de snelheid van de interne perimeter gebruikt." + +# AI Translated +#~ msgid "" +#~ "Wipe tower outer wall type.\n" +#~ "1. Rectangle: The default wall type, a rectangle with fixed width and height.\n" +#~ "2. Cone: A cone with a fillet at the bottom to help stabilize the wipe tower.\n" +#~ "3. Rib: Adds four ribs to the tower wall for enhanced stability." +#~ msgstr "" +#~ "Type buitenwand van het afveegblok.\n" +#~ "1. Rechthoek: het standaardwandtype, een rechthoek met vaste breedte en hoogte.\n" +#~ "2. Kegel: een kegel met een afronding aan de onderkant om het afveegblok te helpen stabiliseren.\n" +#~ "3. Rib: voegt vier ribben aan de wand van de toren toe voor extra stabiliteit." + +# AI Translated +#~ msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker or narrower than they normally would be. The spacing is adjusted automatically." +#~ msgstr "Extra flow die wordt gebruikt voor de spoellijnen op het afveegblok. Hierdoor worden de spoellijnen dikker of dunner dan ze normaal zouden zijn. De afstand wordt automatisch aangepast." + +# AI Translated +#~ msgid "" +#~ "Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. Higher values remove more and longer walls.\n" +#~ "\n" +#~ "NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the Advanced settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." +#~ msgstr "" +#~ "Pas deze waarde aan om te voorkomen dat er korte, niet-gesloten wanden worden geprint, wat de printtijd kan verlengen. Hogere waarden verwijderen meer en langere wanden.\n" +#~ "\n" +#~ "LET OP: onder- en bovenoppervlakken worden niet door deze waarde beïnvloed, om zichtbare gaten aan de buitenzijde van het model te voorkomen. Pas 'Drempel voor één wand' in de geavanceerde instellingen hieronder aan om te bepalen wat als bovenoppervlak wordt beschouwd. 'Drempel voor één wand' is alleen zichtbaar als deze instelling boven de standaardwaarde van 0,5 staat of als bovenoppervlakken met één wand zijn ingeschakeld." + # AI Translated #, boost-format #~ msgid "Split into %1% part" diff --git a/localization/i18n/pl/OrcaSlicer_pl.po b/localization/i18n/pl/OrcaSlicer_pl.po index ba6ce7e14a..a806567ced 100644 --- a/localization/i18n/pl/OrcaSlicer_pl.po +++ b/localization/i18n/pl/OrcaSlicer_pl.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: OrcaSlicer 2.3.0-rc\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-10-13 09:55-0300\n" +"POT-Creation-Date: 2026-10-14 10:04-0300\n" "PO-Revision-Date: \n" "Last-Translator: Krzysztof Morga <>\n" "Language-Team: \n" @@ -2480,6 +2480,66 @@ msgstr "Ograniczenie wtyczki sieciowej" msgid "Privacy Policy Update" msgstr "Aktualizacja polityki prywatności" +# AI Translated +msgid "All your filament presets are available on the printers they were made for." +msgstr "Wszystkie Twoje profile filamentu są dostępne na drukarkach, dla których zostały utworzone." + +# AI Translated +msgid "Migrate Filament Presets" +msgstr "Przenieś profile filamentu" + +# AI Translated +msgid "" +"OrcaSlicer 2.5.0 restructured many system filament presets to fix incorrect profiles and prepare for future features. As a result, the presets below no longer show on some printers they were made for. Sorry for the trouble; this is a one-time fix.\n" +"\n" +"Add those printers back to your presets now? Your presets are backed up first. You can also do this later from Help > Migrate Filament Presets." +msgstr "" +"OrcaSlicer 2.5.0 zmienił strukturę wielu systemowych profili filamentu, aby naprawić nieprawidłowe profile i przygotować się na przyszłe funkcje. W rezultacie poniższe profile nie są już wyświetlane na niektórych drukarkach, dla których zostały utworzone. Przepraszamy za kłopot; to jednorazowa poprawka.\n" +"\n" +"Dodać te drukarki z powrotem do Twoich profili teraz? Najpierw zostanie utworzona kopia zapasowa Twoich profili. Możesz to też zrobić później w menu Pomoc > Przenieś profile filamentu." + +# AI Translated +#, boost-format +msgid "%1% (based on %2%)" +msgstr "%1% (na podstawie %2%)" + +msgid "Don't remind me again" +msgstr "Nie przypominaj mi ponownie" + +# AI Translated +msgid "Your presets could not be backed up, so they were not migrated." +msgstr "Nie udało się utworzyć kopii zapasowej Twoich profili, więc nie zostały przeniesione." + +# AI Translated +msgid "The user presets folder could not be locked, so nothing was migrated. Another OrcaSlicer instance may be saving presets; try again later from Help > Migrate Filament Presets." +msgstr "Nie udało się zablokować folderu profili użytkownika, więc nic nie zostało przeniesione. Inna instancja OrcaSlicer może zapisywać profile; spróbuj ponownie później w menu Pomoc > Przenieś profile filamentu." + +# AI Translated +#, boost-format +msgid "" +"Your filament presets could not be migrated. A backup of your presets was saved to:\n" +"%1%" +msgstr "" +"Nie udało się przenieść Twoich profili filamentu. Kopia zapasowa Twoich profili została zapisana w:\n" +"%1%" + +# AI Translated +#, boost-format +msgid "" +"Your filament presets were migrated. Select them again in the filament list where you used them.\n" +"\n" +"A backup of your presets was saved to:\n" +"%1%" +msgstr "" +"Twoje profile filamentu zostały przeniesione. Wybierz je ponownie na liście filamentów w miejscach, w których były używane.\n" +"\n" +"Kopia zapasowa Twoich profili została zapisana w:\n" +"%1%" + +# AI Translated +msgid "These presets could not be migrated:" +msgstr "Nie udało się przenieść tych profili:" + # AI Translated #, c-format, boost-format msgid "your Orca Cloud profile (user ID: \"%s\")" @@ -3222,6 +3282,62 @@ msgstr "(Utracony kolor)" msgid "Center" msgstr "Wyśrodkuj" +# AI Translated +msgid "Distribute left-right" +msgstr "Rozłóż lewo-prawo" + +# AI Translated +msgid "Distribute front-back" +msgstr "Rozłóż przód-tył" + +# AI Translated +msgid "Distribute top-bottom" +msgstr "Rozłóż góra-dół" + +# AI Translated +msgid "Align left" +msgstr "Wyrównaj do lewej" + +# AI Translated +msgid "Align left-right center" +msgstr "Wyrównaj do środka lewo-prawo" + +# AI Translated +msgid "Align right" +msgstr "Wyrównaj do prawej" + +# AI Translated +msgid "Align front" +msgstr "Wyrównaj do przodu" + +# AI Translated +msgid "Align front-back center" +msgstr "Wyrównaj do środka przód-tył" + +# AI Translated +msgid "Align back" +msgstr "Wyrównaj do tyłu" + +# AI Translated +msgid "Align bottom" +msgstr "Wyrównaj do dołu" + +# AI Translated +msgid "Align top-bottom center" +msgstr "Wyrównaj do środka góra-dół" + +# AI Translated +msgid "Align top" +msgstr "Wyrównaj do góry" + +# AI Translated +msgid "Align/Distribute" +msgstr "Wyrównaj/Rozłóż" + +# AI Translated +msgid "Align and distribute objects" +msgstr "Wyrównaj i rozłóż obiekty" + msgid "Drop" msgstr "Upuść" @@ -6789,6 +6905,10 @@ msgstr "Kreator konfiguracji" msgid "Show Configuration Folder" msgstr "Otwórz katalog konfiguracji" +# AI Translated +msgid "Bring back filament presets that a profile update removed from printers they were made for" +msgstr "Przywróć profile filamentu, które aktualizacja profili usunęła z drukarek, dla których zostały utworzone" + # AI Translated msgid "Troubleshoot Center" msgstr "Centrum rozwiązywania problemów" @@ -12356,14 +12476,14 @@ msgstr "Jednoczesne włączenie precyzyjnej wysokości Z i wieży czyszczącej m # AI Translated msgid "Smooth timelapse needs a prime tower on every layer, which is not compatible with \"No sparse layers\". \"No sparse layers\" has been turned off." -msgstr "Płynny timelapse wymaga wieży czyszczącej na każdej warstwie, co nie jest zgodne z opcją \"Warstwy bez czyszczenia\". Opcja \"Warstwy bez czyszczenia\" została wyłączona." +msgstr "Płynny timelapse wymaga wieży czyszczącej na każdej warstwie, co nie jest zgodne z opcją \"Bez rzadkich warstw\". Opcja \"Bez rzadkich warstw\" została wyłączona." msgid "A prime tower is required for smooth timelapse mode. There may be flaws on the model without prime tower. Do you want to enable the prime tower?" msgstr "Wieża czyszcząca jest wymagana dla płynnego timelapse. Możliwe są wady na modelu bez wieży czyszczącej. Czy włączyć wieżę czyszczącą?" # AI Translated msgid "\"No sparse layers\" is not compatible with smooth timelapse, which needs a prime tower on every layer. Timelapse has been switched to traditional mode." -msgstr "Opcja \"Warstwy bez czyszczenia\" nie jest zgodna z płynnym timelapse, który wymaga wieży czyszczącej na każdej warstwie. Timelapse został przełączony w tryb tradycyjny." +msgstr "Opcja \"Bez rzadkich warstw\" nie jest zgodna z płynnym timelapse, który wymaga wieży czyszczącej na każdej warstwie. Timelapse został przełączony w tryb tradycyjny." msgid "Still print by object?" msgstr "Czy nadal drukować według obiektu?" @@ -14342,6 +14462,18 @@ msgstr "wiele przecięć z obrysem, użyto tylko jednego (%1%)" msgid "a perimeter is fully inside a modifier, the modifier was not applied to it (%1%)" msgstr "obrys znajduje się w całości wewnątrz modyfikatora, modyfikator nie został do niego zastosowany (%1%)" +# AI Translated +#. TRN: %1% is the modifier type "Seam Blocked" as in the menu, %2% the modifier name, %3% the object name. +#, boost-format +msgid "%1% modifier \"%2%\" of \"%3%\" covers an entire perimeter" +msgstr "Modyfikator „%2%” (%1%) obiektu „%3%” obejmuje cały obrys" + +# AI Translated +#. TRN: %1% is the modifier type "Seam Blocked" as in the menu, %2% the modifier name, %3% the object name, %4% the number of modifiers. +#, boost-format +msgid "%1% modifier \"%2%\" of \"%3%\" (%4% in total) covers an entire perimeter" +msgstr "Modyfikator „%2%” (%1%) obiektu „%3%” (łącznie %4%) obejmuje cały obrys" + # AI Translated #, boost-format msgid "modifier \"%1%\" of \"%2%\" had no effect on the seam (it might not reach the centerline of the printed perimeter)" @@ -14548,7 +14680,7 @@ msgstr "%1% jest zbyt wysoki, mogą wystąpić kolizje." # AI Translated msgid "The relative position of the model and the prime tower does not meet the requirements of the \"No sparse layers\" feature. Please adjust their relative positions, lower the model height, or turn off \"No sparse layers\"." -msgstr "Wzajemne położenie modelu i wieży czyszczącej nie spełnia wymagań funkcji \"Warstwy bez czyszczenia\". Zmień ich wzajemne położenie, zmniejsz wysokość modelu albo wyłącz opcję \"Warstwy bez czyszczenia\"." +msgstr "Wzajemne położenie modelu i wieży czyszczącej nie spełnia wymagań funkcji \"Bez rzadkich warstw\". Zmień ich wzajemne położenie, zmniejsz wysokość modelu albo wyłącz opcję \"Bez rzadkich warstw\"." # AI Translated #, boost-format @@ -15374,13 +15506,13 @@ msgid "" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" -"If set to 0, the line width will match the Internal solid infill width." +"If set to 0, the line width will match the Internal solid infill width, or the nozzle diameter for thick bridges." msgstr "" "Szerokość linii mostu. Jeśli wyrażona w %, będzie liczona względem średnicy dyszy.\n" -"Zalecane stosowanie z większą gęstością mostu lub większym współczynnikiem przepływu mostu.\n" +"Zalecane jest stosowanie razem z wyższymi wartościami ustawień „Gęstość zewnętrznych mostów” lub „Współczynnik przepływu przy mostach”.\n" "\n" -"Maksymalna wartość to 100% lub średnica dyszy.\n" -"Przy ustawieniu 0 szerokość linii będzie odpowiadać szerokości wewnętrznego wypełnienia pełnego." +"Maksymalna wartość to średnica dyszy lub 100%.\n" +"Przy ustawieniu 0 szerokość linii będzie odpowiadać szerokości wypełnienia wewnętrznego, a dla grubych mostów średnicy dyszy." msgid "Internal bridge flow ratio" msgstr "Współczynnik przepływu dla wewnętrznych mostów" @@ -15688,7 +15820,7 @@ msgid "" "3. If artifacts still appear, enable Extrusion Rate Smoothing (ERS) to further smooth the flow transitions.\n" "\n" "Note: When this option is enabled, overhang perimeters are treated like overhangs, meaning the overhang speed is applied even if the overhanging perimeter is part of a bridge.\n" -"For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 100% overhang speed will be applied." +"For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 75% overhang speed will be applied, limited by the bridge speed." msgstr "" "Włącz tę opcję, aby spowolnić druk w obszarach, w których obrysy mogły zawinąć się do góry.\n" "Na przykład dodatkowe spowolnienie zostanie zastosowane przy druku nawisów na ostrych narożnikach, takich jak dziób kadłuba Benchy, co ogranicza zawijanie kumulujące się przez wiele warstw.\n" @@ -15700,22 +15832,23 @@ msgstr "" "Zalecenia przy włączaniu tej opcji:\n" "1. Zmniejsz czas wygładzania Pressure Advance do 0,015–0,02, aby ekstruder szybko reagował na zmiany prędkości.\n" "2. Zwiększ minimalne prędkości druku, aby ograniczyć skalę spowolnienia i zmniejszyć różnicę między szybkimi i wolnymi odcinkami.\n" -"3. Jeśli artefakty nadal występują, włącz wygładzanie natężenia ekstruzji (ERS), aby dodatkowo wygładzić zmiany przepływu.\n" +"3. Jeśli artefakty nadal występują, włącz „Wygładzanie przepływu ekstruzji” (ERS), aby dodatkowo wygładzić zmiany przepływu.\n" "\n" "Uwaga: gdy ta opcja jest włączona, obrysy nawisów są traktowane jak nawisy, co oznacza, że prędkość nawisu jest stosowana nawet wtedy, gdy obrys nawisu jest częścią mostu.\n" -"Na przykład gdy obrysy są w 100% nawisem, bez podpierającej ich od spodu ściany, zostanie zastosowana prędkość nawisu 100%." +"Na przykład gdy obrysy są w 100% nawisem, bez podpierającej ich od spodu ściany, zostanie zastosowana prędkość nawisu 75%, ograniczona prędkością mostu." msgid "mm/s or %" msgstr "mm/s lub %" +# AI Translated msgid "" "Speed of the externally visible bridge extrusions.\n" "\n" -"In addition, if Slow down for curled perimeters is disabled or Classic overhang mode is enabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." +"In addition, if Slow down for curled perimeters is disabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." msgstr "" "Szybkość druku zewnętrznych widocznych obrysów mostu.\n" "\n" -"Ponadto, jeśli opcja zwalniania na łukach jest wyłączona lub włączony jest klasyczny tryb druku nawisów, to szybkość druku ścian nawisu, które mają wsparcie mniejsze niż 13%, będzie taka sama, niezależnie od tego, czy są częścią mostu, czy nawisu." +"Ponadto, jeśli opcja „Zwalnienie na łukach” jest wyłączona, ta szybkość będzie stosowana do ścian nawisu, które mają wsparcie mniejsze niż 13%, niezależnie od tego, czy są częścią mostu, czy nawisu." msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%." msgstr "Prędkość wewnętrznych mostów. Jeśli wartość jest wyrażona w procentach, będzie obliczana na podstawie prędkości mostu. Wartość domyślna wynosi 150%." @@ -16294,8 +16427,9 @@ msgstr "Prędkość druku zewnętrznej ściany, która jest najbardziej widoczn msgid "Small perimeters" msgstr "Małe obrysy" -msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above. Set to zero for auto." -msgstr "To ustawienie reguluje prędkość obrysów posiadających promień <= próg małego obrysu (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." +# AI Translated +msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above." +msgstr "To ustawienie reguluje prędkość obrysów posiadających promień <= small_perimeter_threshold (zazwyczaj chodzi o otwory). Jeśli ustawisz wartość procentową (np. 80%), zostanie obliczona z prędkości ściany zewnętrznej ustawionej powyżej." msgid "Small perimeters threshold" msgstr "Próg małego obrysu" @@ -16308,8 +16442,8 @@ msgid "Small support perimeters" msgstr "Małe obrysy podpór" # AI Translated -msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above. Set to zero for auto." -msgstr "Tak samo jak „Małe obrysy”, ale dla podpór. To osobne ustawienie wpływa na prędkość podpór dla obszarów <= `small_support_perimeter_threshold`. Jeśli wyrażone w procentach (na przykład: 80%), zostanie obliczone na podstawie powyższego ustawienia prędkości podpór lub warstwy łączącej podpór. Ustaw zero, aby wybrać automatycznie." +msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above." +msgstr "Tak samo jak „Małe obrysy”, ale dla podpór. To osobne ustawienie wpływa na prędkość podpór dla obszarów <= `small_support_perimeter_threshold`. Jeśli wyrażone w procentach (na przykład: 80%), zostanie obliczone na podstawie powyższego ustawienia prędkości podpór lub warstwy łączącej podpór." # AI Translated msgid "Small support perimeters threshold" @@ -16322,22 +16456,23 @@ msgstr "Ustawia próg długości małego obrysu podpory. Domyślny próg to 0 mm msgid "Walls printing order" msgstr "Kolejność drukowania ścian" +# AI Translated msgid "" "Print sequence of the internal (inner) and external (outer) walls.\n" "\n" "Use Inner/Outer for best overhangs. This is because the overhanging walls can adhere to a neighbouring perimeter while printing. However, this option results in slightly reduced surface quality as the external perimeter is deformed by being squashed to the internal perimeter.\n" "\n" -"Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended against the Outer/Inner option in most cases.\n" +"Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended over the Outer/Inner option in most cases.\n" "\n" "Use Outer/Inner for the same external wall quality and dimensional accuracy benefits of Inner/Outer/Inner option. However, the Z seams will appear less consistent as the first extrusion of a new layer starts on a visible surface." msgstr "" -"Sekwencja druku zewnętrznych i wewnętrznych ścian.\n" +"Kolejność druku ścian wewnętrznych i zewnętrznych.\n" "\n" -"Użyj opcji „wewnętrzna/zewnętrzna” dla najlepszego efektu nawisów. Jest to spowodowane tym, że ściany zwisające mogą przylegać do sąsiednich obwodów podczas drukowania. Jednakże, opcja ta skutkuje delikatnie obniżoną jakością powierzchni, ponieważ zewnętrzny obrys jest deformowany przez ścianę wewnętrzną, która jest do niej dociskana.\n" +"Użyj „Wewnętrzna/zewnętrzna”, aby uzyskać najlepsze nawisy. Dzieje się tak, ponieważ nawisające ściany mogą podczas druku przylegać do sąsiedniego obrysu. Ta opcja nieznacznie obniża jednak jakość powierzchni, ponieważ zewnętrzny obrys jest deformowany przez docisk do obrysu wewnętrznego.\n" "\n" -"Użyj opcji „wewnętrzna/zewnętrzna/wewnętrzna” dla najlepszego wykończenia zewnętrznej powierzchni i dokładności wymiarowej, ponieważ zewnętrzna ściana jest drukowana niezakłócona przez wewnętrzny obwód. Jednak wydajność druku przy nawisach będzie niższa, ponieważ nie ma wewnętrznego obwodu, który mógłby podeprzeć druk zewnętrznej ściany. Ta opcja wymaga co najmniej 3 ścian, aby była skuteczna, ponieważ najpierw drukuje wewnętrzne ściany zaczynając od trzeciego obwodu, następnie zewnętrzny obwód i w końcu pierwszy wewnętrzny obwód. W większości przypadków ta opcja jest polecana jako alternatywa dla opcji zewnętrzna/wewnętrzna.\n" +"Użyj „Wewnętrzna/zewnętrzna/wewnętrzna”, aby uzyskać najlepsze wykończenie powierzchni zewnętrznej i dokładność wymiarową, ponieważ ściana zewnętrzna jest drukowana bez wpływu obrysu wewnętrznego. Pogorszy się jednak jakość nawisów, ponieważ nie ma obrysu wewnętrznego, do którego można by drukować ścianę zewnętrzną. Aby ta opcja działała skutecznie, wymaga co najmniej 3 ścian: najpierw drukuje ściany wewnętrzne od 3. obrysu wzwyż, następnie obrys zewnętrzny, a na końcu pierwszy obrys wewnętrzny. W większości przypadków ta opcja jest zalecana zamiast „Zewnętrzna/wewnętrzna”.\n" "\n" -"Użyj opcji „zewnętrzna/wewnętrzna”, aby uzyskać taką samą jakość zewnętrznej ściany i precyzję wymiarową jak w opcji „wewnętrzna/zewnętrzna/wewnętrzna”. Jednakże, szwy na osi Z będą wydawać się mniej spójne, ponieważ pierwsza ekstruzja nowej warstwy rozpoczyna się na widocznej powierzchni." +"Użyj „Zewnętrzna/wewnętrzna”, aby uzyskać taką samą jakość ściany zewnętrznej i dokładność wymiarową jak przy opcji „Wewnętrzna/zewnętrzna/wewnętrzna”. Szwy Z będą jednak wyglądać mniej spójnie, ponieważ pierwsza ekstruzja nowej warstwy zaczyna się na widocznej powierzchni." msgid "Inner/Outer" msgstr "Wewnętrzna/zewnętrzna" @@ -17299,14 +17434,16 @@ msgstr "Wysokość pierwszej warstwy" msgid "Height of the first layer. Making the first layer height thicker can improve build plate adhesion." msgstr "Wysokość pierwszej warstwy. Nieznaczne zwiększenie grubości pierwszej warstwy może poprawić przyczepność do stołu" -msgid "This is the speed for the first layer except for solid infill sections." -msgstr "Prędkość pierwszej warstwy z wyjątkiem pełnego wypełnienia" +# AI Translated +msgid "This is the speed for the walls and brim of the first layer." +msgstr "Prędkość ścian i brimu na pierwszej warstwie." msgid "First layer infill" msgstr "Wypełnienie pierwszej warstwy" -msgid "This is the speed for solid infill parts of the first layer." -msgstr "Prędkość pełnego wypełnienia na pierwszej warstwie" +# AI Translated +msgid "This is the speed for the first layer except for walls and brim, such as infill, gap fill and support." +msgstr "Prędkość pierwszej warstwy poza ścianami i brimem, na przykład dla wypełnienia, wypełniania szczelin i podpór." msgid "First layer travel speed" msgstr "Prędkość przemieszczenia pierwszej warstwy" @@ -18038,16 +18175,18 @@ msgstr "Szerokość linii wewnętrznego wypełnienia. Jeśli jest wyrażona w pr msgid "Infill/wall overlap" msgstr "Nakładanie wypełnienia na obrysy" +# AI Translated #, no-c-format, no-boost-format -msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to line width of sparse infill. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." -msgstr "Obszar wypełnienia jest nieznacznie powiększony, aby częściowo zachodzić na ścianę i tym zapewnić lepsze połączenie. Wartość procentowa odnosi się do szerokości linii wypełnienia. Ustaw tę wartość na około 10-15%, aby uniknąć nadmiernej ekstruzji materiału, co może prowadzić do nierówności na górnej powierzchni wydruku." +msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to the inner wall line width. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." +msgstr "Obszar wypełnienia jest nieznacznie powiększony, aby częściowo zachodzić na ścianę i tym zapewnić lepsze połączenie. Wartość procentowa odnosi się do szerokości linii wewnętrznej ściany. Ustaw tę wartość na około 10-15%, aby uniknąć nadmiernej ekstruzji materiału, co może prowadzić do nierówności na górnej powierzchni wydruku." msgid "Top/Bottom solid infill/wall overlap" msgstr "Nachodzenie pełnego wypełnienia na ściany" +# AI Translated #, no-c-format, no-boost-format -msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to line width of sparse infill." -msgstr "Górny obszar wypełnienia jest nieznacznie powiększony, aby zachodził na ścianę w celu lepszego połączenia i zminimalizowania pojawiania się otworów w miejscu, w którym górne wypełnienie styka się ze ścianami. Wartość 25-30% jest dobrym punktem wyjścia, minimalizującym pojawianie się otworów. Wartość procentowa odnosi się do szerokości linii wypełnienia" +msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to the inner wall line width." +msgstr "Górny obszar wypełnienia jest nieznacznie powiększony, aby zachodził na ścianę w celu lepszego połączenia i zminimalizowania pojawiania się otworów w miejscu, w którym górne wypełnienie styka się ze ścianami. Wartość 25-30% jest dobrym punktem wyjścia, minimalizującym pojawianie się otworów. Wartość procentowa odnosi się do szerokości linii wewnętrznej ściany." msgid "This is the speed for internal sparse infill." msgstr "Prędkość wewnętrznego wypełnienia" @@ -18073,8 +18212,9 @@ msgstr "Maksymalna szerokość segmentu. Wartość zero wyłącza tę funkcję." msgid "Interlocking depth of a segmented region" msgstr "Głębokość zazębiania się podzielonego na segmenty obszaru" -msgid "Interlocking depth of a segmented region. It will be ignored if \"mmu_segmented_region_max_width\" is zero or if \"mmu_segmented_region_interlocking_depth\" is bigger than \"mmu_segmented_region_max_width\". Zero disables this feature." -msgstr "Głębokość zazębiania się podzielonego na segmenty obszaru. Zostanie ona zignorowana, jeśli „mmu_segmented_region_max_width” wynosi zero lub jeśli „mmu_segmented_region_interlocking_depth” jest większa niż „mmu_segmented_region_max_width”. Wartość zero wyłącza tę funkcję." +# AI Translated +msgid "Interlocking depth of a segmented region. On every other layer, the segmented region is limited to this depth. It will be ignored if \"interlocking_beam\" is enabled. Zero disables this feature." +msgstr "Głębokość zazębiania się podzielonego na segmenty obszaru. Na co drugiej warstwie podzielony na segmenty obszar jest ograniczony do tej głębokości. Zostanie ona zignorowana, jeśli włączone jest „interlocking_beam”. Wartość zero wyłącza tę funkcję." msgid "Use beam interlocking" msgstr "Użyj struktury zazębiającej" @@ -18187,11 +18327,11 @@ msgstr "Kąt minimalizacji wysokości ściany" # AI Translated msgid "" "Reduce the height of top-surface perimeters to match the model edge height.\n" -"Affects perimeters with a slope less than this angle (degrees).\n" +"Affects perimeters with a slope greater than this angle (degrees).\n" "A reasonable value is 35. Set to 0 to disable." msgstr "" "Zmniejsza wysokość obrysów górnej powierzchni, aby dopasować je do wysokości krawędzi modelu.\n" -"Dotyczy obrysów o nachyleniu mniejszym niż ten kąt (w stopniach).\n" +"Dotyczy obrysów o nachyleniu większym niż ten kąt (w stopniach).\n" "Rozsądna wartość to 35. Ustaw 0, aby wyłączyć." # AI Translated @@ -19202,8 +19342,9 @@ msgstr "Szwy ukośne dla wewnętrznych obwodów" msgid "Use scarf joint for inner walls as well." msgstr "Zastosuj szwy ukośne również do wewnętrznych obrysów." -msgid "Role base wipe speed" -msgstr "Prędkość wycierania dyszy w oparciu o rolę ekstruzji" +# AI Translated +msgid "Role based wipe speed" +msgstr "Prędkość wycierania zależna od trybu ekstruzji" msgid "The wipe speed is determined by the speed of the current extrusion role. e.g. if a wipe action is executed immediately following an outer wall extrusion, the speed of the outer wall extrusion will be utilized for the wipe action." msgstr "Szybkość wycierania dyszy drukującej jest ustalana na podstawie prędkości aktualnie używanej w procesie ekstruzji. Na przykład, jeżeli wycieranie jest przeprowadzane zaraz po wydrukowaniu zewnętrznej ścianki modelu, to dla wycierania dyszy wykorzystywana jest prędkość, która została zastosowana przy drukowaniu tej ścianki." @@ -19295,16 +19436,15 @@ msgstr "Ogranicza pętle skirtu/osłony przeciwprzeciągowej do jednej ściany p msgid "Draft shield" msgstr "Osłona przeciwprzeciągowa" +# AI Translated msgid "" "A draft shield is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft. It is usually needed only with open frame printers, i.e. without an enclosure.\n" "\n" -"Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used.\n" -"Note: With the draft shield active, the skirt will be printed at skirt distance from the object. Therefore, if brims are active it may intersect with them. To avoid this, increase the skirt distance value.\n" +"Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used." msgstr "" -"Draft Shield („ochrona przed przeciągiem”)jest przydatna do ochrony wydruku z ABS lub ASA przed wypaczaniem i oderwaniem się od stołu drukarki z powodu podmuchów powietrza. Zazwyczaj jest to potrzebne tylko w przypadku drukarek otwartych, czyli bez obudowy.\n" +"Osłona przeciwprzeciągowa jest przydatna do ochrony wydruku z ABS lub ASA przed wypaczaniem i oderwaniem się od stołu drukarki z powodu podmuchów powietrza. Zazwyczaj jest potrzebna tylko w przypadku drukarek otwartych, czyli bez obudowy.\n" "\n" -"Włączony = skirt ma wysokość równą najwyższemu wydrukowanemu obiektowi. W przeciwnym razie stosuje się „wysokość obramowania”.\n" -"Uwaga: Aktywując funkcję Draft Shield, Skirt zostanie wydrukowany w takiej odległości od obiektu jak określono w odstęp Skirtu od obiektu. Jeśli w tym samym czasie Brim jest też aktywny, może dojść do jego przecięcia się ze Skirt-em. Aby temu zapobiec, zwiększ wartość odległości od Skirtu\n" +"Włączona = skirt ma wysokość równą najwyższemu wydrukowanemu obiektowi. W przeciwnym razie stosuje się „Wysokość skirt”." msgid "Enabled" msgstr "Włączony" @@ -19645,8 +19785,9 @@ msgstr "Czekaj na temperaturę na wieży czyszczącej" msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command." msgstr "Pobiera nowe narzędzie bez czekania, aż osiągnie temperaturę druku, przejeżdża do wieży czyszczącej i tam czeka na temperaturę, tuż przed płukaniem. Materiał wyciekający podczas nagrzewania trafia na wieżę zamiast na model, a przejazd nakłada się na nagrzewanie. Dotyczy wyłącznie drukarek z wieloma ekstruderami (wieloma głowicami) używających wieży czyszczącej typu 2. Firmware ani makro zmiany narzędzia nie mogą samodzielnie czekać na temperaturę. Gdy opcja jest wyłączona, oczekiwanie na temperaturę jest wysyłane bezpośrednio po poleceniu zmiany narzędzia." +# AI Translated msgid "No sparse layers (beta)" -msgstr "Warstwy bez czyszczenia (beta)" +msgstr "Bez rzadkich warstw (beta)" # AI Translated msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower, so the tower ends up below the model and the toolhead has to reach down to it. Layouts where that would collide with an already printed object are rejected. Has no effect with smooth timelapse or clumping detection, which need a tower on every layer." @@ -19668,7 +19809,7 @@ msgstr "" "\n" "Łączone są tylko całe warstwy i nigdy powyżej maksymalnej wysokości warstwy dyszy drukującej wieżę (trzech czwartych średnicy dyszy, gdy pozostawiono 0). Dlatego co najmniej dwie warstwy muszą zmieścić się w tym limicie, zanim cokolwiek się zmieni: przy wysokości warstwy 0,2 mm i maksimum 0,3 mm nic nie jest łączone, a przy 0,1 mm trzy warstwy stają się jedną.\n" "\n" -"W przeciwieństwie do opcji „Warstwy bez czyszczenia” wieża nadal podąża za modelem, więc głowica nigdy nie musi po nią sięgać w dół. Nie działa z opcją „Warstwy bez czyszczenia”, płynnym timelapse ani wykrywaniem zlepiania, które wymagają wieży na każdej warstwie." +"W przeciwieństwie do opcji „Bez rzadkich warstw” wieża nadal podąża za modelem, więc głowica nigdy nie musi po nią sięgać w dół. Nie działa z opcją „Bez rzadkich warstw”, płynnym timelapse ani wykrywaniem zlepiania, które wymagają wieży na każdej warstwie." msgid "Prime all printing extruders" msgstr "Wyczyść wszystkie używane ekstrudery" @@ -20476,25 +20617,27 @@ msgstr "Kąt w wierzchołku stożka, który jest używany do stabilizacji wieży msgid "Maximum wipe tower print speed" msgstr "Maksymalna prędkość drukowania wieży czyszczącej" +# AI Translated msgid "" "The maximum print speed when purging in the wipe tower and printing the wipe tower sparse layers. When purging, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" "\n" -"When printing the sparse layers, if the internal perimeter speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +"When printing the sparse layers, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" "\n" "Increasing this speed may affect the tower's stability as well as increase the force with which the nozzle collides with any blobs that may have formed on the wipe tower.\n" "\n" "Before increasing this parameter beyond the default of 90 mm/s, make sure your printer can reliably bridge at the increased speeds and that ooze when tool changing is well controlled.\n" "\n" -"For the wipe tower external perimeters the internal perimeter speed is used regardless of this setting." +"For the wipe tower external perimeters the internal perimeter speed is used, also limited by this setting." msgstr "" -"Jest to funkcja odpowiedzialna za maksymalną prędkość drukowania podczas oczyszczania w wieży czyszczącej i drukowania jej rzadkich warstw.\n" -"Podczas oczyszczania, jeśli prędkość rzadkiego wypełnienia jest niższa od prędkości obliczonej na podstawie maksymalnego natężenia przepływu filamentu, to właśnie ta niższa wartość zostanie wybrana.\n" +"Maksymalna prędkość drukowania podczas oczyszczania na wieży czyszczącej i drukowania jej rzadkich warstw. Podczas oczyszczania, jeśli prędkość wypełnienia rzadkiego lub prędkość obliczona na podstawie maksymalnej prędkości przepływu filamentu jest niższa, zostanie użyta najniższa z nich.\n" "\n" -"Podczas drukowania rzadkich warstw, jeśli prędkość wewnętrznych obrysów lub prędkość obliczona na podstawie maksymalnego natężenia przepływu filamentu jest niższa, zostanie użyta właśnie ta niższa wartość.\n" +"Podczas drukowania rzadkich warstw, jeśli prędkość wypełnienia rzadkiego lub prędkość obliczona na podstawie maksymalnej prędkości przepływu filamentu jest niższa, zostanie użyta najniższa z nich.\n" "\n" -"Przed zwiększeniem tego parametru powyżej domyślnej wartości 90mm/s, upewnij się, że Twoja drukarka potrafi niezawodnie mostkować przy wyższych prędkościach oraz że wyciek filamentu podczas jego zmiany jest dobrze kontrolowany.\n" +"Zwiększenie tej prędkości może wpłynąć na stabilność wieży oraz zwiększyć siłę, z jaką dysza uderza w ewentualne grudki, które mogły powstać na wieży czyszczącej.\n" "\n" -"W przypadku zewnętrznych obwodów wieży czyszczącej prędkość jej obwodu wewnętrznego jest niezależna od tego ustawienia." +"Przed zwiększeniem tego parametru powyżej domyślnej wartości 90 mm/s upewnij się, że Twoja drukarka potrafi niezawodnie mostkować przy wyższych prędkościach oraz że wyciek filamentu podczas zmiany narzędzia jest dobrze kontrolowany.\n" +"\n" +"W przypadku zewnętrznych obrysów wieży czyszczącej używana jest prędkość obrysu wewnętrznego, również ograniczona tym ustawieniem." # AI Translated msgid "Wall type" @@ -20503,14 +20646,14 @@ msgstr "Typ ściany" # AI Translated msgid "" "Wipe tower outer wall type.\n" -"1. Rectangle: The default wall type, a rectangle with fixed width and height.\n" +"1. Rectangle: A rectangle with fixed width and height.\n" "2. Cone: A cone with a fillet at the bottom to help stabilize the wipe tower.\n" -"3. Rib: Adds four ribs to the tower wall for enhanced stability." +"3. Rib: The default wall type, which adds four ribs to the tower wall for enhanced stability." msgstr "" "Typ ściany zewnętrznej wieży czyszczącej.\n" -"1. Prostokąt: domyślny typ ściany, prostokąt o stałej szerokości i wysokości.\n" +"1. Prostokąt: prostokąt o stałej szerokości i wysokości.\n" "2. Stożek: stożek z zaokrągleniem u dołu, pomagający ustabilizować wieżę czyszczącą.\n" -"3. Żebro: dodaje cztery żebra do ściany wieży dla większej stabilności." +"3. Żebro: domyślny typ ściany, dodający cztery żebra do ściany wieży dla większej stabilności." msgid "Rectangle" msgstr "Prostokąt" @@ -20610,8 +20753,9 @@ msgstr "Rozmieszczenie linii czyszczenia na wieży czyszczącej." msgid "Extra flow for purging" msgstr "Dodatkowy przepływ podczas czyszczenia" -msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker or narrower than they normally would be. The spacing is adjusted automatically." -msgstr "Dodatkowy przepływ stosowany w ekstruzjach na wieży czyszczącej. Powoduje to, że linie czyszczące są grubsze lub cieńsze niż standardowo. Odstępy regulowane są automatycznie." +# AI Translated +msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker than they normally would be. The spacing is adjusted automatically." +msgstr "Dodatkowy przepływ stosowany w liniach czyszczących na wieży czyszczącej. Powoduje to, że linie czyszczące są grubsze niż standardowo. Odstępy regulowane są automatycznie." msgid "Idle temperature" msgstr "Temperatura w bezczynności" @@ -20732,14 +20876,15 @@ msgstr "Minimalna grubość cienkich elementów. Elementy modelu cieńsze niż t msgid "Minimum wall length" msgstr "Minimalna szerokość ściany" +# AI Translated msgid "" -"Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. Higher values remove more and longer walls.\n" +"Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. The value is a multiple of the wall width. Higher values remove more and longer walls.\n" "\n" -"NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the Advanced settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." +"NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the 'Walls and surfaces' settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." msgstr "" -"Zmodyfikuj tę wartość, aby uniknąć drukowania krótkich, otwartych ścianek, co może prowadzić do wydłużenia czasu druku. Wyższe wartości spowodują usunięcie większej ilości dłuższych ścianek.\n" +"Zmodyfikuj tę wartość, aby uniknąć drukowania krótkich, otwartych ścianek, co może prowadzić do wydłużenia czasu druku. Wartość jest wielokrotnością szerokości ściany. Wyższe wartości spowodują usunięcie większej ilości dłuższych ścianek.\n" "\n" -"UWAGA: Ta wartość nie wpłynie na dolne i górne powierzchnie modelu i może zapobiec widocznym przerwom na zewnątrz. Aby dostosować czułość określającą, co jest uważane za górną powierzchnię, dostosuj „Próg jednej ściany” w zaawansowanych ustawieniach poniżej. „Próg jednej ściany” jest widoczny tylko wtedy, gdy to ustawienie jest ustawione na wartość wyższą niż domyślna wartość 0,5 lub jeśli opcja pojedynczych ścianek na górze jest włączona." +"UWAGA: Ta wartość nie wpłynie na dolne i górne powierzchnie modelu, aby zapobiec widocznym przerwom na zewnątrz. Aby dostosować czułość określającą, co jest uważane za górną powierzchnię, dostosuj „Próg jednej ściany” w ustawieniach „Ściany i powierzchnie” poniżej. „Próg jednej ściany” jest widoczny tylko wtedy, gdy to ustawienie jest ustawione na wartość wyższą niż domyślna wartość 0,5 lub jeśli włączona jest opcja „Tylko jedna ściana na górnych powierzchniach”." # AI Translated msgid "Maximum wall resolution" @@ -24795,9 +24940,6 @@ msgstr "Włącz inteligentne przypisywanie filamentu: przypisz jeden filament do msgid "File Saving" msgstr "Zapisywanie pliku" -msgid "Don't remind me again" -msgstr "Nie przypominaj mi ponownie" - msgid "No further pop-up will appear. You can reopen it in 'Preferences'" msgstr "Nie pojawi się już żadne wyskakujące okienko. Możesz to zmienić w \"Preferencjach\"" @@ -35367,6 +35509,171 @@ msgstr "" "Unikaj odkształceń\n" "Czy wiesz, że podczas drukowania filamentami podatnymi na odkształcenia, takimi jak ABS, odpowiednie zwiększenie temperatury podgrzewanej płyty może zmniejszyć prawdopodobieństwo odkształceń?" +# AI Translated +#~ msgid "" +#~ "Line width of the Bridge. If expressed as a %, it will be computed over the nozzle diameter.\n" +#~ "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" +#~ "\n" +#~ "The maximum value is 100% or the nozzle diameter.\n" +#~ "If set to 0, the line width will match the Internal solid infill width." +#~ msgstr "" +#~ "Szerokość linii mostu. Jeśli wyrażona w %, będzie liczona względem średnicy dyszy.\n" +#~ "Zalecane stosowanie z większą gęstością mostu lub większym współczynnikiem przepływu mostu.\n" +#~ "\n" +#~ "Maksymalna wartość to 100% lub średnica dyszy.\n" +#~ "Przy ustawieniu 0 szerokość linii będzie odpowiadać szerokości wewnętrznego wypełnienia pełnego." + +# AI Translated +#, no-c-format, no-boost-format +#~ msgid "" +#~ "Enable this option to slow down printing in areas where perimeters may have curled upwards.\n" +#~ "For example, additional slowdown will be applied when printing overhangs on sharp corners like the front of the Benchy hull, reducing curling which compounds over multiple layers.\n" +#~ "\n" +#~ "It is generally recommended to have this option switched on unless your printer cooling is powerful enough or the print speed is slow enough that perimeter curling does not happen. \n" +#~ "If printing with a high external perimeter speed, this parameter may introduce wall artifacts when slowing down, due to the potentially large variance in print speeds causing the extruder to be unable to keep up with the requested flow change.\n" +#~ "Root cause of these artifacts is most likely PA tuning being slightly off, especially when combined with a high PA smooth time.\n" +#~ "\n" +#~ "Recommendations when enabling this option:\n" +#~ "1. Reduce Pressure Advance smooth time to 0.015 - 0.02 so the extruder reacts quickly to the speed changes.\n" +#~ "2. Increase the minimum print speeds to limit the magnitude of the slowdown and reduce the variance between fast and slow segments.\n" +#~ "3. If artifacts still appear, enable Extrusion Rate Smoothing (ERS) to further smooth the flow transitions.\n" +#~ "\n" +#~ "Note: When this option is enabled, overhang perimeters are treated like overhangs, meaning the overhang speed is applied even if the overhanging perimeter is part of a bridge.\n" +#~ "For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 100% overhang speed will be applied." +#~ msgstr "" +#~ "Włącz tę opcję, aby spowolnić druk w obszarach, w których obrysy mogły zawinąć się do góry.\n" +#~ "Na przykład dodatkowe spowolnienie zostanie zastosowane przy druku nawisów na ostrych narożnikach, takich jak dziób kadłuba Benchy, co ogranicza zawijanie kumulujące się przez wiele warstw.\n" +#~ "\n" +#~ "Ogólnie zaleca się włączenie tej opcji, chyba że chłodzenie Twojej drukarki jest wystarczająco mocne lub prędkość druku na tyle niska, że zawijanie obrysów nie występuje. \n" +#~ "Przy druku z dużą prędkością obrysu zewnętrznego ten parametr może wprowadzać artefakty na ścianach podczas spowalniania, ze względu na potencjalnie dużą zmienność prędkości druku, przy której ekstruder nie nadąża za żądaną zmianą przepływu.\n" +#~ "Przyczyną tych artefaktów jest najprawdopodobniej niedokładne dostrojenie PA, zwłaszcza w połączeniu z długim czasem wygładzania PA.\n" +#~ "\n" +#~ "Zalecenia przy włączaniu tej opcji:\n" +#~ "1. Zmniejsz czas wygładzania Pressure Advance do 0,015–0,02, aby ekstruder szybko reagował na zmiany prędkości.\n" +#~ "2. Zwiększ minimalne prędkości druku, aby ograniczyć skalę spowolnienia i zmniejszyć różnicę między szybkimi i wolnymi odcinkami.\n" +#~ "3. Jeśli artefakty nadal występują, włącz wygładzanie natężenia ekstruzji (ERS), aby dodatkowo wygładzić zmiany przepływu.\n" +#~ "\n" +#~ "Uwaga: gdy ta opcja jest włączona, obrysy nawisów są traktowane jak nawisy, co oznacza, że prędkość nawisu jest stosowana nawet wtedy, gdy obrys nawisu jest częścią mostu.\n" +#~ "Na przykład gdy obrysy są w 100% nawisem, bez podpierającej ich od spodu ściany, zostanie zastosowana prędkość nawisu 100%." + +#~ msgid "" +#~ "Speed of the externally visible bridge extrusions.\n" +#~ "\n" +#~ "In addition, if Slow down for curled perimeters is disabled or Classic overhang mode is enabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." +#~ msgstr "" +#~ "Szybkość druku zewnętrznych widocznych obrysów mostu.\n" +#~ "\n" +#~ "Ponadto, jeśli opcja zwalniania na łukach jest wyłączona lub włączony jest klasyczny tryb druku nawisów, to szybkość druku ścian nawisu, które mają wsparcie mniejsze niż 13%, będzie taka sama, niezależnie od tego, czy są częścią mostu, czy nawisu." + +#~ msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above. Set to zero for auto." +#~ msgstr "To ustawienie reguluje prędkość obrysów posiadających promień <= próg małego obrysu (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." + +# AI Translated +#~ msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above. Set to zero for auto." +#~ msgstr "Tak samo jak „Małe obrysy”, ale dla podpór. To osobne ustawienie wpływa na prędkość podpór dla obszarów <= `small_support_perimeter_threshold`. Jeśli wyrażone w procentach (na przykład: 80%), zostanie obliczone na podstawie powyższego ustawienia prędkości podpór lub warstwy łączącej podpór. Ustaw zero, aby wybrać automatycznie." + +#~ msgid "" +#~ "Print sequence of the internal (inner) and external (outer) walls.\n" +#~ "\n" +#~ "Use Inner/Outer for best overhangs. This is because the overhanging walls can adhere to a neighbouring perimeter while printing. However, this option results in slightly reduced surface quality as the external perimeter is deformed by being squashed to the internal perimeter.\n" +#~ "\n" +#~ "Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended against the Outer/Inner option in most cases.\n" +#~ "\n" +#~ "Use Outer/Inner for the same external wall quality and dimensional accuracy benefits of Inner/Outer/Inner option. However, the Z seams will appear less consistent as the first extrusion of a new layer starts on a visible surface." +#~ msgstr "" +#~ "Sekwencja druku zewnętrznych i wewnętrznych ścian.\n" +#~ "\n" +#~ "Użyj opcji „wewnętrzna/zewnętrzna” dla najlepszego efektu nawisów. Jest to spowodowane tym, że ściany zwisające mogą przylegać do sąsiednich obwodów podczas drukowania. Jednakże, opcja ta skutkuje delikatnie obniżoną jakością powierzchni, ponieważ zewnętrzny obrys jest deformowany przez ścianę wewnętrzną, która jest do niej dociskana.\n" +#~ "\n" +#~ "Użyj opcji „wewnętrzna/zewnętrzna/wewnętrzna” dla najlepszego wykończenia zewnętrznej powierzchni i dokładności wymiarowej, ponieważ zewnętrzna ściana jest drukowana niezakłócona przez wewnętrzny obwód. Jednak wydajność druku przy nawisach będzie niższa, ponieważ nie ma wewnętrznego obwodu, który mógłby podeprzeć druk zewnętrznej ściany. Ta opcja wymaga co najmniej 3 ścian, aby była skuteczna, ponieważ najpierw drukuje wewnętrzne ściany zaczynając od trzeciego obwodu, następnie zewnętrzny obwód i w końcu pierwszy wewnętrzny obwód. W większości przypadków ta opcja jest polecana jako alternatywa dla opcji zewnętrzna/wewnętrzna.\n" +#~ "\n" +#~ "Użyj opcji „zewnętrzna/wewnętrzna”, aby uzyskać taką samą jakość zewnętrznej ściany i precyzję wymiarową jak w opcji „wewnętrzna/zewnętrzna/wewnętrzna”. Jednakże, szwy na osi Z będą wydawać się mniej spójne, ponieważ pierwsza ekstruzja nowej warstwy rozpoczyna się na widocznej powierzchni." + +#~ msgid "This is the speed for the first layer except for solid infill sections." +#~ msgstr "Prędkość pierwszej warstwy z wyjątkiem pełnego wypełnienia" + +#~ msgid "This is the speed for solid infill parts of the first layer." +#~ msgstr "Prędkość pełnego wypełnienia na pierwszej warstwie" + +#, no-c-format, no-boost-format +#~ msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to line width of sparse infill. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." +#~ msgstr "Obszar wypełnienia jest nieznacznie powiększony, aby częściowo zachodzić na ścianę i tym zapewnić lepsze połączenie. Wartość procentowa odnosi się do szerokości linii wypełnienia. Ustaw tę wartość na około 10-15%, aby uniknąć nadmiernej ekstruzji materiału, co może prowadzić do nierówności na górnej powierzchni wydruku." + +#, no-c-format, no-boost-format +#~ msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to line width of sparse infill." +#~ msgstr "Górny obszar wypełnienia jest nieznacznie powiększony, aby zachodził na ścianę w celu lepszego połączenia i zminimalizowania pojawiania się otworów w miejscu, w którym górne wypełnienie styka się ze ścianami. Wartość 25-30% jest dobrym punktem wyjścia, minimalizującym pojawianie się otworów. Wartość procentowa odnosi się do szerokości linii wypełnienia" + +#~ msgid "Interlocking depth of a segmented region. It will be ignored if \"mmu_segmented_region_max_width\" is zero or if \"mmu_segmented_region_interlocking_depth\" is bigger than \"mmu_segmented_region_max_width\". Zero disables this feature." +#~ msgstr "Głębokość zazębiania się podzielonego na segmenty obszaru. Zostanie ona zignorowana, jeśli „mmu_segmented_region_max_width” wynosi zero lub jeśli „mmu_segmented_region_interlocking_depth” jest większa niż „mmu_segmented_region_max_width”. Wartość zero wyłącza tę funkcję." + +# AI Translated +#~ msgid "" +#~ "Reduce the height of top-surface perimeters to match the model edge height.\n" +#~ "Affects perimeters with a slope less than this angle (degrees).\n" +#~ "A reasonable value is 35. Set to 0 to disable." +#~ msgstr "" +#~ "Zmniejsza wysokość obrysów górnej powierzchni, aby dopasować je do wysokości krawędzi modelu.\n" +#~ "Dotyczy obrysów o nachyleniu mniejszym niż ten kąt (w stopniach).\n" +#~ "Rozsądna wartość to 35. Ustaw 0, aby wyłączyć." + +#~ msgid "Role base wipe speed" +#~ msgstr "Prędkość wycierania dyszy w oparciu o rolę ekstruzji" + +#~ msgid "" +#~ "A draft shield is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft. It is usually needed only with open frame printers, i.e. without an enclosure.\n" +#~ "\n" +#~ "Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used.\n" +#~ "Note: With the draft shield active, the skirt will be printed at skirt distance from the object. Therefore, if brims are active it may intersect with them. To avoid this, increase the skirt distance value.\n" +#~ msgstr "" +#~ "Draft Shield („ochrona przed przeciągiem”)jest przydatna do ochrony wydruku z ABS lub ASA przed wypaczaniem i oderwaniem się od stołu drukarki z powodu podmuchów powietrza. Zazwyczaj jest to potrzebne tylko w przypadku drukarek otwartych, czyli bez obudowy.\n" +#~ "\n" +#~ "Włączony = skirt ma wysokość równą najwyższemu wydrukowanemu obiektowi. W przeciwnym razie stosuje się „wysokość obramowania”.\n" +#~ "Uwaga: Aktywując funkcję Draft Shield, Skirt zostanie wydrukowany w takiej odległości od obiektu jak określono w odstęp Skirtu od obiektu. Jeśli w tym samym czasie Brim jest też aktywny, może dojść do jego przecięcia się ze Skirt-em. Aby temu zapobiec, zwiększ wartość odległości od Skirtu\n" + +#~ msgid "" +#~ "The maximum print speed when purging in the wipe tower and printing the wipe tower sparse layers. When purging, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +#~ "\n" +#~ "When printing the sparse layers, if the internal perimeter speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +#~ "\n" +#~ "Increasing this speed may affect the tower's stability as well as increase the force with which the nozzle collides with any blobs that may have formed on the wipe tower.\n" +#~ "\n" +#~ "Before increasing this parameter beyond the default of 90 mm/s, make sure your printer can reliably bridge at the increased speeds and that ooze when tool changing is well controlled.\n" +#~ "\n" +#~ "For the wipe tower external perimeters the internal perimeter speed is used regardless of this setting." +#~ msgstr "" +#~ "Jest to funkcja odpowiedzialna za maksymalną prędkość drukowania podczas oczyszczania w wieży czyszczącej i drukowania jej rzadkich warstw.\n" +#~ "Podczas oczyszczania, jeśli prędkość rzadkiego wypełnienia jest niższa od prędkości obliczonej na podstawie maksymalnego natężenia przepływu filamentu, to właśnie ta niższa wartość zostanie wybrana.\n" +#~ "\n" +#~ "Podczas drukowania rzadkich warstw, jeśli prędkość wewnętrznych obrysów lub prędkość obliczona na podstawie maksymalnego natężenia przepływu filamentu jest niższa, zostanie użyta właśnie ta niższa wartość.\n" +#~ "\n" +#~ "Przed zwiększeniem tego parametru powyżej domyślnej wartości 90mm/s, upewnij się, że Twoja drukarka potrafi niezawodnie mostkować przy wyższych prędkościach oraz że wyciek filamentu podczas jego zmiany jest dobrze kontrolowany.\n" +#~ "\n" +#~ "W przypadku zewnętrznych obwodów wieży czyszczącej prędkość jej obwodu wewnętrznego jest niezależna od tego ustawienia." + +# AI Translated +#~ msgid "" +#~ "Wipe tower outer wall type.\n" +#~ "1. Rectangle: The default wall type, a rectangle with fixed width and height.\n" +#~ "2. Cone: A cone with a fillet at the bottom to help stabilize the wipe tower.\n" +#~ "3. Rib: Adds four ribs to the tower wall for enhanced stability." +#~ msgstr "" +#~ "Typ ściany zewnętrznej wieży czyszczącej.\n" +#~ "1. Prostokąt: domyślny typ ściany, prostokąt o stałej szerokości i wysokości.\n" +#~ "2. Stożek: stożek z zaokrągleniem u dołu, pomagający ustabilizować wieżę czyszczącą.\n" +#~ "3. Żebro: dodaje cztery żebra do ściany wieży dla większej stabilności." + +#~ msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker or narrower than they normally would be. The spacing is adjusted automatically." +#~ msgstr "Dodatkowy przepływ stosowany w ekstruzjach na wieży czyszczącej. Powoduje to, że linie czyszczące są grubsze lub cieńsze niż standardowo. Odstępy regulowane są automatycznie." + +#~ msgid "" +#~ "Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. Higher values remove more and longer walls.\n" +#~ "\n" +#~ "NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the Advanced settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." +#~ msgstr "" +#~ "Zmodyfikuj tę wartość, aby uniknąć drukowania krótkich, otwartych ścianek, co może prowadzić do wydłużenia czasu druku. Wyższe wartości spowodują usunięcie większej ilości dłuższych ścianek.\n" +#~ "\n" +#~ "UWAGA: Ta wartość nie wpłynie na dolne i górne powierzchnie modelu i może zapobiec widocznym przerwom na zewnątrz. Aby dostosować czułość określającą, co jest uważane za górną powierzchnię, dostosuj „Próg jednej ściany” w zaawansowanych ustawieniach poniżej. „Próg jednej ściany” jest widoczny tylko wtedy, gdy to ustawienie jest ustawione na wartość wyższą niż domyślna wartość 0,5 lub jeśli opcja pojedynczych ścianek na górze jest włączona." + # AI Translated #, boost-format #~ msgid "Split into %1% part" diff --git a/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po b/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po index 791c2dc96b..e9a5799875 100644 --- a/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po +++ b/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-10-13 09:55-0300\n" +"POT-Creation-Date: 2026-10-14 10:04-0300\n" "PO-Revision-Date: 2026-10-11 16:22-0300\n" "Last-Translator: Alexandre Folle de Menezes\n" "Language-Team: Portuguese, Brazilian\n" @@ -2329,6 +2329,66 @@ msgstr "Restrição de Plug-in de Rede" msgid "Privacy Policy Update" msgstr "Atualização da Política de Privacidade" +# AI Translated +msgid "All your filament presets are available on the printers they were made for." +msgstr "Todas as suas predefinições de filamento estão disponíveis nas impressoras para as quais foram criadas." + +# AI Translated +msgid "Migrate Filament Presets" +msgstr "Migrar Predefinições de Filamento" + +# AI Translated +msgid "" +"OrcaSlicer 2.5.0 restructured many system filament presets to fix incorrect profiles and prepare for future features. As a result, the presets below no longer show on some printers they were made for. Sorry for the trouble; this is a one-time fix.\n" +"\n" +"Add those printers back to your presets now? Your presets are backed up first. You can also do this later from Help > Migrate Filament Presets." +msgstr "" +"O OrcaSlicer 2.5.0 reestruturou muitas predefinições de filamento do sistema para corrigir perfis incorretos e preparar recursos futuros. Como resultado, as predefinições abaixo não aparecem mais em algumas das impressoras para as quais foram criadas. Pedimos desculpas pelo transtorno; esta é uma correção única.\n" +"\n" +"Adicionar essas impressoras de volta às suas predefinições agora? É feito um backup das suas predefinições antes. Você também pode fazer isso mais tarde em Ajuda > Migrar Predefinições de Filamento." + +# AI Translated +#, boost-format +msgid "%1% (based on %2%)" +msgstr "%1% (baseado em %2%)" + +msgid "Don't remind me again" +msgstr "Não me avise novamente" + +# AI Translated +msgid "Your presets could not be backed up, so they were not migrated." +msgstr "Não foi possível fazer backup das suas predefinições, então elas não foram migradas." + +# AI Translated +msgid "The user presets folder could not be locked, so nothing was migrated. Another OrcaSlicer instance may be saving presets; try again later from Help > Migrate Filament Presets." +msgstr "Não foi possível bloquear a pasta de predefinições do usuário, então nada foi migrado. Outra instância do OrcaSlicer pode estar salvando predefinições; tente novamente mais tarde em Ajuda > Migrar Predefinições de Filamento." + +# AI Translated +#, boost-format +msgid "" +"Your filament presets could not be migrated. A backup of your presets was saved to:\n" +"%1%" +msgstr "" +"Não foi possível migrar suas predefinições de filamento. Um backup das suas predefinições foi salvo em:\n" +"%1%" + +# AI Translated +#, boost-format +msgid "" +"Your filament presets were migrated. Select them again in the filament list where you used them.\n" +"\n" +"A backup of your presets was saved to:\n" +"%1%" +msgstr "" +"Suas predefinições de filamento foram migradas. Selecione-as novamente na lista de filamentos onde você as usava.\n" +"\n" +"Um backup das suas predefinições foi salvo em:\n" +"%1%" + +# AI Translated +msgid "These presets could not be migrated:" +msgstr "Não foi possível migrar estas predefinições:" + #, c-format, boost-format msgid "your Orca Cloud profile (user ID: \"%s\")" msgstr "seu perfil Orca Cloud (ID de usuário: \"%s\")" @@ -3031,6 +3091,62 @@ msgstr "(Cor perdida)" msgid "Center" msgstr "Centralizar" +# AI Translated +msgid "Distribute left-right" +msgstr "Distribuir esquerda-direita" + +# AI Translated +msgid "Distribute front-back" +msgstr "Distribuir frente-trás" + +# AI Translated +msgid "Distribute top-bottom" +msgstr "Distribuir cima-baixo" + +# AI Translated +msgid "Align left" +msgstr "Alinhar à esquerda" + +# AI Translated +msgid "Align left-right center" +msgstr "Alinhar ao centro esquerda-direita" + +# AI Translated +msgid "Align right" +msgstr "Alinhar à direita" + +# AI Translated +msgid "Align front" +msgstr "Alinhar à frente" + +# AI Translated +msgid "Align front-back center" +msgstr "Alinhar ao centro frente-trás" + +# AI Translated +msgid "Align back" +msgstr "Alinhar atrás" + +# AI Translated +msgid "Align bottom" +msgstr "Alinhar embaixo" + +# AI Translated +msgid "Align top-bottom center" +msgstr "Alinhar ao centro cima-baixo" + +# AI Translated +msgid "Align top" +msgstr "Alinhar em cima" + +# AI Translated +msgid "Align/Distribute" +msgstr "Alinhar/Distribuir" + +# AI Translated +msgid "Align and distribute objects" +msgstr "Alinhar e distribuir objetos" + msgid "Drop" msgstr "Descartar" @@ -6443,6 +6559,10 @@ msgstr "Assistente de Configuração" msgid "Show Configuration Folder" msgstr "Mostrar Pasta de Configuração" +# AI Translated +msgid "Bring back filament presets that a profile update removed from printers they were made for" +msgstr "Restaurar as predefinições de filamento que uma atualização de perfis removeu das impressoras para as quais foram criadas" + msgid "Troubleshoot Center" msgstr "Central de Solução de Problemas" @@ -13475,6 +13595,18 @@ msgstr "múltiplas interseções com um perímetro, apenas uma foi usada (%1%)" msgid "a perimeter is fully inside a modifier, the modifier was not applied to it (%1%)" msgstr "um perímetro está totalmente dentro de um modificador, o modificador não foi aplicado a ele (%1%)" +# AI Translated +#. TRN: %1% is the modifier type "Seam Blocked" as in the menu, %2% the modifier name, %3% the object name. +#, boost-format +msgid "%1% modifier \"%2%\" of \"%3%\" covers an entire perimeter" +msgstr "O modificador %1% \"%2%\" de \"%3%\" cobre um perímetro inteiro" + +# AI Translated +#. TRN: %1% is the modifier type "Seam Blocked" as in the menu, %2% the modifier name, %3% the object name, %4% the number of modifiers. +#, boost-format +msgid "%1% modifier \"%2%\" of \"%3%\" (%4% in total) covers an entire perimeter" +msgstr "O modificador %1% \"%2%\" de \"%3%\" (%4% no total) cobre um perímetro inteiro" + #, boost-format msgid "modifier \"%1%\" of \"%2%\" had no effect on the seam (it might not reach the centerline of the printed perimeter)" msgstr "o modificador \"%1%\" de \"%2%\" não teve efeito na costura (talvez não alcance a linha central do perímetro impresso)" @@ -14460,18 +14592,19 @@ msgstr "" "O fluxo de ponte real usado é calculado multiplicando este valor pela taxa de fluxo do filamento e, se definida, pela taxa de fluxo do objeto." # AI Translated +# Needs human review: The English says 'Bridge density', but the GUI labels are 'External bridge density' and 'Internal bridge density'; the external label ('Densidade de ponte externa') is quoted here. Check it is the right one. msgid "" "Line width of the Bridge. If expressed as a %, it will be computed over the nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" -"If set to 0, the line width will match the Internal solid infill width." +"If set to 0, the line width will match the Internal solid infill width, or the nozzle diameter for thick bridges." msgstr "" -"Largura de linha da Ponte. Se expressa como %, será calculada sobre o diâmetro do bico.\n" -"Recomendado usar com uma densidade de Ponte ou taxa de fluxo de Ponte mais alta.\n" +"Largura de linha da Ponte. Se expresso como %, será calculado sobre o diâmetro do bico.\n" +"Recomendado usar com uma 'Densidade de ponte externa' ou 'Taxa de fluxo em ponte' mais alta.\n" "\n" "O valor máximo é 100% ou o diâmetro do bico.\n" -"Se definido como 0, a largura de linha corresponderá à largura do preenchimento sólido interno." +"Se definido como 0, a largura de linha corresponderá à largura do preenchimento sólido interno, ou ao diâmetro do bico para pontes grossas." msgid "Internal bridge flow ratio" msgstr "Taxa de fluxo em ponte interna" @@ -14754,7 +14887,7 @@ msgid "" "3. If artifacts still appear, enable Extrusion Rate Smoothing (ERS) to further smooth the flow transitions.\n" "\n" "Note: When this option is enabled, overhang perimeters are treated like overhangs, meaning the overhang speed is applied even if the overhanging perimeter is part of a bridge.\n" -"For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 100% overhang speed will be applied." +"For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 75% overhang speed will be applied, limited by the bridge speed." msgstr "" "Ative esta opção para reduzir a velocidade de impressão em áreas onde os perímetros podem ter se enrolado para cima.\n" "Por exemplo, uma desaceleração adicional será aplicada ao imprimir saliências em cantos vivos, como a frente do casco do Benchy, reduzindo o enrolamento que se acumula ao longo de várias camadas.\n" @@ -14766,22 +14899,23 @@ msgstr "" "Recomendações ao ativar esta opção:\n" "1. Reduza o tempo de suavização do Pressure Advance para 0,015 - 0,02 para que a extrusora reaja rapidamente às mudanças de velocidade.\n" "2. Aumente as velocidades mínimas de impressão para limitar a magnitude da desaceleração e reduzir a variação entre os segmentos rápidos e lentos.\n" -"3. Se os artefatos ainda aparecerem, ative a Suavização da Taxa de Extrusão (ERS) para suavizar ainda mais as transições de fluxo.\n" +"3. Se os artefatos ainda aparecerem, ative a 'Suavização da extrusão' (ERS) para suavizar ainda mais as transições de fluxo.\n" "\n" "Nota: quando esta opção está ativada, os perímetros de saliência são tratados como saliências, o que significa que a velocidade de saliência é aplicada mesmo que o perímetro em saliência faça parte de uma ponte.\n" -"Por exemplo, quando os perímetros estão 100% em saliência, sem nenhuma parede os sustentando por baixo, a velocidade de saliência de 100% será aplicada." +"Por exemplo, quando os perímetros estão 100% em saliência, sem nenhuma parede os sustentando por baixo, a velocidade de saliência de 75% será aplicada, limitada pela velocidade da ponte." msgid "mm/s or %" msgstr "mm/s ou %" +# AI Translated msgid "" "Speed of the externally visible bridge extrusions.\n" "\n" -"In addition, if Slow down for curled perimeters is disabled or Classic overhang mode is enabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." +"In addition, if Slow down for curled perimeters is disabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." msgstr "" "Velocidade das extrusões de pontes visíveis externamente.\n" "\n" -"Além disso, se Desacelerar para perímetros curvos estiver desabilitado ou o Modo de saliência clássico estiver habilitado, será a velocidade de impressão de paredes de saliência que são suportadas por menos de 13%, sejam elas parte de uma ponte ou de uma saliência." +"Além disso, se 'Reduzir vel. para perímetros encurvados' estiver desabilitado, será a velocidade de impressão de paredes de saliência que são suportadas por menos de 13%, sejam elas parte de uma ponte ou de uma saliência." msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%." msgstr "Velocidade de pontes internas. Se o valor for expresso como uma porcentagem, ele será calculado com base na bridge_speed. O valor padrão é 150%." @@ -15320,8 +15454,9 @@ msgstr "Esta é a velocidade de impressão da parede externa das peças. Geralme msgid "Small perimeters" msgstr "Pequenos perímetros" -msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above. Set to zero for auto." -msgstr "Essa configuração separada afetará a velocidade dos perímetros com raio <= small_perimeter_threshold (geralmente buracos). Se expresso como porcentagem (por exemplo: 80%), será calculado com base na configuração de velocidade da parede externa acima. Defina como zero para automático." +# AI Translated +msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above." +msgstr "Essa configuração separada afetará a velocidade dos perímetros com raio <= small_perimeter_threshold (geralmente buracos). Se expresso como porcentagem (por exemplo: 80%), será calculado com base na configuração de velocidade da parede externa acima." msgid "Small perimeters threshold" msgstr "Limiar de pequenos perímetros" @@ -15332,8 +15467,9 @@ msgstr "Isso define o limiar para o comprimento do perímetro pequeno. O limiar msgid "Small support perimeters" msgstr "Pequenos perímetros de suporte" -msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above. Set to zero for auto." -msgstr "Igual a \"Pequenos perímetros\", mas para suportes. Esta configuração separada afetará a velocidade do suporte para áreas <= `small_support_perimeter_threshold`. Se expressa como uma porcentagem (por exemplo: 80%), será calculada com base na configuração de velocidade de suporte ou de interface de suporte acima. Defina como zero para automático." +# AI Translated +msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above." +msgstr "Igual a \"Pequenos perímetros\", mas para suportes. Esta configuração separada afetará a velocidade do suporte para áreas <= `small_support_perimeter_threshold`. Se expressa como uma porcentagem (por exemplo: 80%), será calculada com base na configuração de velocidade de suporte ou de interface de suporte acima." msgid "Small support perimeters threshold" msgstr "Limiar de pequenos perímetros de suporte" @@ -15344,12 +15480,13 @@ msgstr "Isto define o limite para o comprimento de pequenos perímetros de supor msgid "Walls printing order" msgstr "Ordem de impressão das paredes" +# AI Translated msgid "" "Print sequence of the internal (inner) and external (outer) walls.\n" "\n" "Use Inner/Outer for best overhangs. This is because the overhanging walls can adhere to a neighbouring perimeter while printing. However, this option results in slightly reduced surface quality as the external perimeter is deformed by being squashed to the internal perimeter.\n" "\n" -"Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended against the Outer/Inner option in most cases.\n" +"Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended over the Outer/Inner option in most cases.\n" "\n" "Use Outer/Inner for the same external wall quality and dimensional accuracy benefits of Inner/Outer/Inner option. However, the Z seams will appear less consistent as the first extrusion of a new layer starts on a visible surface." msgstr "" @@ -15357,7 +15494,7 @@ msgstr "" "\n" "Use Interior/Exterior para melhores saliências. Isso ocorre porque as paredes salientes podem aderir a um perímetro vizinho durante a impressão. No entanto, esta opção resulta em uma qualidade superficial ligeiramente reduzida, pois o perímetro externo é deformado ao ser esmagado pelo perímetro interno.\n" "\n" -"Use Interior/Exterior/Interior para o melhor acabamento superficial externo e precisão dimensional, pois a parede externa é impresso sem interrupções a partir de um perímetro interno. No entanto, o desempenho da saliência será reduzido, pois não há perímetro interno para suportar a impressão da parede externa. Esta opção requer um mínimo de 3 paredes para ser eficaz, pois imprime as paredes internas a partir do terceiro perímetro para fora primeiro, depois o perímetro externo e finalmente o primeiro perímetro interno. Esta opção é recomendada em vez da opção Exterior/Interior na maioria dos casos.\n" +"Use Interior/Exterior/Interior para o melhor acabamento superficial externo e precisão dimensional, pois a parede externa é impressa sem interrupções a partir de um perímetro interno. No entanto, o desempenho da saliência será reduzido, pois não há perímetro interno para suportar a impressão da parede externa. Esta opção requer um mínimo de 3 paredes para ser eficaz, pois imprime as paredes internas a partir do terceiro perímetro para fora primeiro, depois o perímetro externo e finalmente o primeiro perímetro interno. Esta opção é recomendada em vez da opção Exterior/Interior na maioria dos casos.\n" "\n" "Use Exterior/Interior para obter os mesmos benefícios de qualidade de parede externa e precisão dimensional da opção Interior/Exterior/Interior. No entanto, as costuras Z aparecerão menos consistentes, pois a primeira extrusão de uma nova camada começa em uma superfície visível." @@ -16267,14 +16404,16 @@ msgstr "Altura da primeira camada" msgid "Height of the first layer. Making the first layer height thicker can improve build plate adhesion." msgstr "Altura da primeira camada. Tornar a altura da primeira camada mais espessa pode melhorar a adesão à placa de impressão." -msgid "This is the speed for the first layer except for solid infill sections." -msgstr "Esta é a velocidade da primeira camada, exceto as regiões de preenchimento sólido." +# AI Translated +msgid "This is the speed for the walls and brim of the first layer." +msgstr "Esta é a velocidade das paredes e da borda da primeira camada." msgid "First layer infill" msgstr "Preenchimento da primeira camada" -msgid "This is the speed for solid infill parts of the first layer." -msgstr "Esta é a velocidade das regiões de preenchimento sólido da primeira camada." +# AI Translated +msgid "This is the speed for the first layer except for walls and brim, such as infill, gap fill and support." +msgstr "Esta é a velocidade da primeira camada, exceto paredes e borda, como preenchimento, preenchimento de vão e suportes." msgid "First layer travel speed" msgstr "Velocidade de deslocamento da primeira camada" @@ -16960,16 +17099,18 @@ msgstr "Largura da linha do preenchimento esparso interno. Se expresso como %, s msgid "Infill/wall overlap" msgstr "Sobreposição de preenchimento/parede" +# AI Translated #, no-c-format, no-boost-format -msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to line width of sparse infill. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." -msgstr "Isso permite a área de preenchimento ser aumentada ligeiramente para se sobrepor à parede para uma melhor ligação. O valor percentual é relativo à largura da linha do preencimento esparso. Defina este valor como ~10-15% para minimizar uma potencial sobre extrusão e acumulo de material resultando em superfícies superiores ásperas." +msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to the inner wall line width. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." +msgstr "Isso permite que a área de preenchimento seja aumentada ligeiramente para se sobrepor às paredes e melhorar a ligação. O valor percentual é relativo à largura da linha da parede interna. Defina este valor como ~10-15% para minimizar uma potencial sobre extrusão e acúmulo de material, resultando em superfícies superiores ásperas." msgid "Top/Bottom solid infill/wall overlap" msgstr "Sobreposição Superior/Inferior de preenchimento sólido/parede" +# AI Translated #, no-c-format, no-boost-format -msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to line width of sparse infill." -msgstr "A área de preenchimento sólido é ligeiramente alargada para se sobrepor à parede para melhor adesão e para minimizar a aparência de furos onde o preenchimento encontra as paredes. Um valor de 25-30% é um bom ponto de partida, minimizando a aparência dos buracos. O valor percentual é relativo à largura da linha do preenchimento esparso." +msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to the inner wall line width." +msgstr "A área de preenchimento sólido superior é ligeiramente alargada para se sobrepor à parede para melhor adesão e para minimizar a aparência de furos onde o preenchimento superior encontra as paredes. Um valor de 25-30% é um bom ponto de partida, minimizando a aparência dos furos. O valor percentual é relativo à largura da linha da parede interna." msgid "This is the speed for internal sparse infill." msgstr "Essa é a velocidade do preenchimento esparso interno." @@ -16995,8 +17136,9 @@ msgstr "Largura máxima de uma região segmentada. O valor 0 desativa essa funci msgid "Interlocking depth of a segmented region" msgstr "Profundidade de intertravamento de uma região segmentada" -msgid "Interlocking depth of a segmented region. It will be ignored if \"mmu_segmented_region_max_width\" is zero or if \"mmu_segmented_region_interlocking_depth\" is bigger than \"mmu_segmented_region_max_width\". Zero disables this feature." -msgstr "Profundidade de intertravamento de uma região segmentada. Será ignorado se \"mmu_segmented_region_max_width\" for zero ou se \"mmu_segmented_region_interlocking_depth\" for maior que \"mmu_segmented_region_max_width\". Zero desabilita esse recurso." +# AI Translated +msgid "Interlocking depth of a segmented region. On every other layer, the segmented region is limited to this depth. It will be ignored if \"interlocking_beam\" is enabled. Zero disables this feature." +msgstr "Profundidade de intertravamento de uma região segmentada. Em camadas alternadas, a região segmentada é limitada a essa profundidade. Será ignorada se 'interlocking_beam' estiver habilitado. Zero desativa essa funcionalidade." msgid "Use beam interlocking" msgstr "Usar intertravamento de viga" @@ -17097,13 +17239,14 @@ msgstr "Habilitar o contorno da camada Z (antisserrilhamento da camada Z)." msgid "Minimize wall height angle" msgstr "Minimizar o ângulo de altura das paredes" +# AI Translated msgid "" "Reduce the height of top-surface perimeters to match the model edge height.\n" -"Affects perimeters with a slope less than this angle (degrees).\n" +"Affects perimeters with a slope greater than this angle (degrees).\n" "A reasonable value is 35. Set to 0 to disable." msgstr "" "Reduz a altura dos perímetros da superfície superior para corresponder à altura da aresta do modelo.\n" -"Afeta os perímetros com uma inclinação menor que este ângulo (em graus).\n" +"Afeta os perímetros com uma inclinação maior que este ângulo (em graus).\n" "Um valor razoável é 35. Defina como 0 para desativar." msgid "Don't alternate fill direction" @@ -18055,7 +18198,8 @@ msgstr "Costura em bisel em paredes internas" msgid "Use scarf joint for inner walls as well." msgstr "Usar costura em bisel em paredes internas também." -msgid "Role base wipe speed" +# AI Translated +msgid "Role based wipe speed" msgstr "Velocidade de limpeza baseada na função" msgid "The wipe speed is determined by the speed of the current extrusion role. e.g. if a wipe action is executed immediately following an outer wall extrusion, the speed of the outer wall extrusion will be utilized for the wipe action." @@ -18143,16 +18287,15 @@ msgstr "Limitar as voltas da saia e escudo de ar a uma parede após a primeira c msgid "Draft shield" msgstr "Escudo de ar" +# AI Translated msgid "" "A draft shield is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft. It is usually needed only with open frame printers, i.e. without an enclosure.\n" "\n" -"Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used.\n" -"Note: With the draft shield active, the skirt will be printed at skirt distance from the object. Therefore, if brims are active it may intersect with them. To avoid this, increase the skirt distance value.\n" +"Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used." msgstr "" "Um escudo de ar é útil para proteger uma impressão ABS ou ASA de deformações e desprendimento da mesa de impressão devido à corrente de ar. Geralmente, ele é necessário apenas com impressoras de estrutura aberta, ou seja, sem um gabinete.\n" "\n" -"Habilitado = a saia é tão alta quanto o objeto impresso mais alto. Caso contrário, 'Altura da saia' é usada.\n" -"Nota: com o escudo de ar ativo, a saia será impressa na distância da saia do objeto. Portanto, se as bordas estiverem ativas, ela pode se cruzar com elas. Para evitar isso, aumente o valor da distância da saia.\n" +"Habilitado = a saia é tão alta quanto o objeto impresso mais alto. Caso contrário, 'Altura da saia' é usada." msgid "Enabled" msgstr "Ativado" @@ -19270,40 +19413,42 @@ msgstr "Ângulo no ápice do cone usado para estabilizar a torre de purga. Um â msgid "Maximum wipe tower print speed" msgstr "Velocidade máxima de impressão da torre de purga" +# AI Translated msgid "" "The maximum print speed when purging in the wipe tower and printing the wipe tower sparse layers. When purging, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" "\n" -"When printing the sparse layers, if the internal perimeter speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +"When printing the sparse layers, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" "\n" "Increasing this speed may affect the tower's stability as well as increase the force with which the nozzle collides with any blobs that may have formed on the wipe tower.\n" "\n" "Before increasing this parameter beyond the default of 90 mm/s, make sure your printer can reliably bridge at the increased speeds and that ooze when tool changing is well controlled.\n" "\n" -"For the wipe tower external perimeters the internal perimeter speed is used regardless of this setting." +"For the wipe tower external perimeters the internal perimeter speed is used, also limited by this setting." msgstr "" "A velocidade máxima de impressão ao purgar na torre de purga e ao imprimir as camadas esparsas da torre de purga. Ao purgar, se a velocidade do preenchimento esparso ou a velocidade calculada a partir da velocidade volumétrica máxima do filamento for menor, a menor será utilizada.\n" "\n" -"Ao imprimir as camadas esparsas, se a velocidade do perímetro interno ou a velocidade calculada a partir da velocidade volumétrica máxima do filamento for menor, a menor será utilizada.\n" +"Ao imprimir as camadas esparsas, se a velocidade do preenchimento esparso ou a velocidade calculada a partir da velocidade volumétrica máxima do filamento for menor, a menor será utilizada.\n" "\n" "Aumentar essa velocidade pode afetar a estabilidade da torre, bem como aumentar a força com que o bico colide com quaisquer bolhas que possam ter se formado na torre de purga.\n" "\n" "Antes de aumentar esse parâmetro além do padrão de 90 mm/s, certifique-se de que sua impressora pode realizar pontes de forma confiável nas velocidades aumentadas e que o vazamento ao trocar a ferramenta está bem controlado.\n" "\n" -"Para os perímetros externos da torre de purga, a velocidade do perímetro interno é utilizada independentemente dessa configuração." +"Para os perímetros externos da torre de purga, a velocidade do perímetro interno é utilizada, também limitada por essa configuração." msgid "Wall type" msgstr "Tipo de parede" +# AI Translated msgid "" "Wipe tower outer wall type.\n" -"1. Rectangle: The default wall type, a rectangle with fixed width and height.\n" +"1. Rectangle: A rectangle with fixed width and height.\n" "2. Cone: A cone with a fillet at the bottom to help stabilize the wipe tower.\n" -"3. Rib: Adds four ribs to the tower wall for enhanced stability." +"3. Rib: The default wall type, which adds four ribs to the tower wall for enhanced stability." msgstr "" "Tipo de parede externa da torre de purga.\n" -"1. Retângulo: O tipo de parede padrão, um retângulo com largura e altura fixas.\n" +"1. Retângulo: Um retângulo com largura e altura fixas.\n" "2. Cone: Um cone com um filete na parte inferior para ajudar a estabilizar a torre de purga.\n" -"3. Nervura: Adiciona quatro nervuras à parede da torre para maior estabilidade." +"3. Nervura: O tipo de parede padrão, que adiciona quatro nervuras à parede da torre para maior estabilidade." msgid "Rectangle" msgstr "Retângulo" @@ -19394,8 +19539,9 @@ msgstr "Espaçamento das linhas de purga na torre de purga." msgid "Extra flow for purging" msgstr "Fluxo extra para purga" -msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker or narrower than they normally would be. The spacing is adjusted automatically." -msgstr "Fluxo extra usado para as linhas de purga na torre de purga. Isso torna as linhas de purga mais grossas ou mais estreitas do que normalmente seriam. O espaçamento é ajustado automaticamente." +# AI Translated +msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker than they normally would be. The spacing is adjusted automatically." +msgstr "Fluxo extra usado para as linhas de purga na torre de purga. Isso torna as linhas de purga mais grossas do que normalmente seriam. O espaçamento é ajustado automaticamente." msgid "Idle temperature" msgstr "Temperatura ociosa" @@ -19511,14 +19657,15 @@ msgstr "Espessura mínima de elementos finos. Elementos do modelo mais finos que msgid "Minimum wall length" msgstr "Comprimento mínimo da parede" +# AI Translated msgid "" -"Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. Higher values remove more and longer walls.\n" +"Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. The value is a multiple of the wall width. Higher values remove more and longer walls.\n" "\n" -"NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the Advanced settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." +"NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the 'Walls and surfaces' settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." msgstr "" -"Ajuste este valor para evitar que paredes curtas e não fechados sejam impressos, o que poderia aumentar o tempo de impressão. Valores mais altos removem paredes mais longas.\n" +"Ajuste este valor para evitar que paredes curtas e não fechadas sejam impressas, o que poderia aumentar o tempo de impressão. O valor é um múltiplo da largura da parede. Valores mais altos removem mais paredes e paredes mais longas.\n" "\n" -"NOTA: As superfícies inferior e superior não serão afetadas por este valor para evitar lacunas visuais no exterior do modelo. Ajuste o 'Limiar de uma parede' nas configurações avançadas abaixo para ajustar a sensibilidade do que é considerado uma superfície superior. 'Limiar de uma parede' só é visível se esta configuração estiver acima do valor padrão de 0,5, ou se superfícies superiores de uma única parede estiverem habilitadas." +"NOTA: As superfícies inferior e superior não serão afetadas por este valor para evitar lacunas visuais no exterior do modelo. Ajuste o 'Limiar de parede única' nas configurações de 'Paredes e superfícies' abaixo para ajustar a sensibilidade do que é considerado uma superfície superior. 'Limiar de parede única' só é visível se esta configuração estiver acima do valor padrão de 0,5, ou se superfícies superiores de parede única estiverem habilitadas." msgid "Maximum wall resolution" msgstr "Resolução máxima de parede" @@ -23368,9 +23515,6 @@ msgstr "Ativar atribuição inteligente de filamento: Atribui um filamento a vá msgid "File Saving" msgstr "Salvamento de Arquivo" -msgid "Don't remind me again" -msgstr "Não me avise novamente" - msgid "No further pop-up will appear. You can reopen it in 'Preferences'" msgstr "Nenhuma outra janela pop-up será exibida. Você pode reabri-la em 'Preferências'." @@ -33610,6 +33754,169 @@ msgstr "" "Evitar empenamento\n" "Você sabia que ao imprimir materiais propensos ao empenamento como ABS, aumentar adequadamente a temperatura da mesa aquecida pode reduzir a probabilidade de empenamento?" +# AI Translated +#~ msgid "" +#~ "Line width of the Bridge. If expressed as a %, it will be computed over the nozzle diameter.\n" +#~ "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" +#~ "\n" +#~ "The maximum value is 100% or the nozzle diameter.\n" +#~ "If set to 0, the line width will match the Internal solid infill width." +#~ msgstr "" +#~ "Largura de linha da Ponte. Se expressa como %, será calculada sobre o diâmetro do bico.\n" +#~ "Recomendado usar com uma densidade de Ponte ou taxa de fluxo de Ponte mais alta.\n" +#~ "\n" +#~ "O valor máximo é 100% ou o diâmetro do bico.\n" +#~ "Se definido como 0, a largura de linha corresponderá à largura do preenchimento sólido interno." + +# AI Translated +#, no-c-format, no-boost-format +#~ msgid "" +#~ "Enable this option to slow down printing in areas where perimeters may have curled upwards.\n" +#~ "For example, additional slowdown will be applied when printing overhangs on sharp corners like the front of the Benchy hull, reducing curling which compounds over multiple layers.\n" +#~ "\n" +#~ "It is generally recommended to have this option switched on unless your printer cooling is powerful enough or the print speed is slow enough that perimeter curling does not happen. \n" +#~ "If printing with a high external perimeter speed, this parameter may introduce wall artifacts when slowing down, due to the potentially large variance in print speeds causing the extruder to be unable to keep up with the requested flow change.\n" +#~ "Root cause of these artifacts is most likely PA tuning being slightly off, especially when combined with a high PA smooth time.\n" +#~ "\n" +#~ "Recommendations when enabling this option:\n" +#~ "1. Reduce Pressure Advance smooth time to 0.015 - 0.02 so the extruder reacts quickly to the speed changes.\n" +#~ "2. Increase the minimum print speeds to limit the magnitude of the slowdown and reduce the variance between fast and slow segments.\n" +#~ "3. If artifacts still appear, enable Extrusion Rate Smoothing (ERS) to further smooth the flow transitions.\n" +#~ "\n" +#~ "Note: When this option is enabled, overhang perimeters are treated like overhangs, meaning the overhang speed is applied even if the overhanging perimeter is part of a bridge.\n" +#~ "For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 100% overhang speed will be applied." +#~ msgstr "" +#~ "Ative esta opção para reduzir a velocidade de impressão em áreas onde os perímetros podem ter se enrolado para cima.\n" +#~ "Por exemplo, uma desaceleração adicional será aplicada ao imprimir saliências em cantos vivos, como a frente do casco do Benchy, reduzindo o enrolamento que se acumula ao longo de várias camadas.\n" +#~ "\n" +#~ "Geralmente, recomenda-se manter esta opção ativada, a menos que o resfriamento da sua impressora seja potente o suficiente ou a velocidade de impressão seja lenta o suficiente para que o enrolamento dos perímetros não ocorra. \n" +#~ "Se imprimir com uma velocidade alta de perímetro externo, este parâmetro pode introduzir artefatos na parede ao desacelerar, devido à variação potencialmente grande nas velocidades de impressão que faz com que a extrusora não consiga acompanhar a mudança de fluxo solicitada.\n" +#~ "A causa raiz desses artefatos é provavelmente um ajuste de PA ligeiramente incorreto, especialmente quando combinado com um alto tempo de suavização de PA.\n" +#~ "\n" +#~ "Recomendações ao ativar esta opção:\n" +#~ "1. Reduza o tempo de suavização do Pressure Advance para 0,015 - 0,02 para que a extrusora reaja rapidamente às mudanças de velocidade.\n" +#~ "2. Aumente as velocidades mínimas de impressão para limitar a magnitude da desaceleração e reduzir a variação entre os segmentos rápidos e lentos.\n" +#~ "3. Se os artefatos ainda aparecerem, ative a Suavização da Taxa de Extrusão (ERS) para suavizar ainda mais as transições de fluxo.\n" +#~ "\n" +#~ "Nota: quando esta opção está ativada, os perímetros de saliência são tratados como saliências, o que significa que a velocidade de saliência é aplicada mesmo que o perímetro em saliência faça parte de uma ponte.\n" +#~ "Por exemplo, quando os perímetros estão 100% em saliência, sem nenhuma parede os sustentando por baixo, a velocidade de saliência de 100% será aplicada." + +#~ msgid "" +#~ "Speed of the externally visible bridge extrusions.\n" +#~ "\n" +#~ "In addition, if Slow down for curled perimeters is disabled or Classic overhang mode is enabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." +#~ msgstr "" +#~ "Velocidade das extrusões de pontes visíveis externamente.\n" +#~ "\n" +#~ "Além disso, se Desacelerar para perímetros curvos estiver desabilitado ou o Modo de saliência clássico estiver habilitado, será a velocidade de impressão de paredes de saliência que são suportadas por menos de 13%, sejam elas parte de uma ponte ou de uma saliência." + +#~ msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above. Set to zero for auto." +#~ msgstr "Essa configuração separada afetará a velocidade dos perímetros com raio <= small_perimeter_threshold (geralmente buracos). Se expresso como porcentagem (por exemplo: 80%), será calculado com base na configuração de velocidade da parede externa acima. Defina como zero para automático." + +#~ msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above. Set to zero for auto." +#~ msgstr "Igual a \"Pequenos perímetros\", mas para suportes. Esta configuração separada afetará a velocidade do suporte para áreas <= `small_support_perimeter_threshold`. Se expressa como uma porcentagem (por exemplo: 80%), será calculada com base na configuração de velocidade de suporte ou de interface de suporte acima. Defina como zero para automático." + +#~ msgid "" +#~ "Print sequence of the internal (inner) and external (outer) walls.\n" +#~ "\n" +#~ "Use Inner/Outer for best overhangs. This is because the overhanging walls can adhere to a neighbouring perimeter while printing. However, this option results in slightly reduced surface quality as the external perimeter is deformed by being squashed to the internal perimeter.\n" +#~ "\n" +#~ "Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended against the Outer/Inner option in most cases.\n" +#~ "\n" +#~ "Use Outer/Inner for the same external wall quality and dimensional accuracy benefits of Inner/Outer/Inner option. However, the Z seams will appear less consistent as the first extrusion of a new layer starts on a visible surface." +#~ msgstr "" +#~ "Sequência de impressão das paredes internas e externas.\n" +#~ "\n" +#~ "Use Interior/Exterior para melhores saliências. Isso ocorre porque as paredes salientes podem aderir a um perímetro vizinho durante a impressão. No entanto, esta opção resulta em uma qualidade superficial ligeiramente reduzida, pois o perímetro externo é deformado ao ser esmagado pelo perímetro interno.\n" +#~ "\n" +#~ "Use Interior/Exterior/Interior para o melhor acabamento superficial externo e precisão dimensional, pois a parede externa é impresso sem interrupções a partir de um perímetro interno. No entanto, o desempenho da saliência será reduzido, pois não há perímetro interno para suportar a impressão da parede externa. Esta opção requer um mínimo de 3 paredes para ser eficaz, pois imprime as paredes internas a partir do terceiro perímetro para fora primeiro, depois o perímetro externo e finalmente o primeiro perímetro interno. Esta opção é recomendada em vez da opção Exterior/Interior na maioria dos casos.\n" +#~ "\n" +#~ "Use Exterior/Interior para obter os mesmos benefícios de qualidade de parede externa e precisão dimensional da opção Interior/Exterior/Interior. No entanto, as costuras Z aparecerão menos consistentes, pois a primeira extrusão de uma nova camada começa em uma superfície visível." + +#~ msgid "This is the speed for the first layer except for solid infill sections." +#~ msgstr "Esta é a velocidade da primeira camada, exceto as regiões de preenchimento sólido." + +#~ msgid "This is the speed for solid infill parts of the first layer." +#~ msgstr "Esta é a velocidade das regiões de preenchimento sólido da primeira camada." + +#, no-c-format, no-boost-format +#~ msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to line width of sparse infill. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." +#~ msgstr "Isso permite a área de preenchimento ser aumentada ligeiramente para se sobrepor à parede para uma melhor ligação. O valor percentual é relativo à largura da linha do preencimento esparso. Defina este valor como ~10-15% para minimizar uma potencial sobre extrusão e acumulo de material resultando em superfícies superiores ásperas." + +#, no-c-format, no-boost-format +#~ msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to line width of sparse infill." +#~ msgstr "A área de preenchimento sólido é ligeiramente alargada para se sobrepor à parede para melhor adesão e para minimizar a aparência de furos onde o preenchimento encontra as paredes. Um valor de 25-30% é um bom ponto de partida, minimizando a aparência dos buracos. O valor percentual é relativo à largura da linha do preenchimento esparso." + +#~ msgid "Interlocking depth of a segmented region. It will be ignored if \"mmu_segmented_region_max_width\" is zero or if \"mmu_segmented_region_interlocking_depth\" is bigger than \"mmu_segmented_region_max_width\". Zero disables this feature." +#~ msgstr "Profundidade de intertravamento de uma região segmentada. Será ignorado se \"mmu_segmented_region_max_width\" for zero ou se \"mmu_segmented_region_interlocking_depth\" for maior que \"mmu_segmented_region_max_width\". Zero desabilita esse recurso." + +#~ msgid "" +#~ "Reduce the height of top-surface perimeters to match the model edge height.\n" +#~ "Affects perimeters with a slope less than this angle (degrees).\n" +#~ "A reasonable value is 35. Set to 0 to disable." +#~ msgstr "" +#~ "Reduz a altura dos perímetros da superfície superior para corresponder à altura da aresta do modelo.\n" +#~ "Afeta os perímetros com uma inclinação menor que este ângulo (em graus).\n" +#~ "Um valor razoável é 35. Defina como 0 para desativar." + +#~ msgid "Role base wipe speed" +#~ msgstr "Velocidade de limpeza baseada na função" + +#~ msgid "" +#~ "A draft shield is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft. It is usually needed only with open frame printers, i.e. without an enclosure.\n" +#~ "\n" +#~ "Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used.\n" +#~ "Note: With the draft shield active, the skirt will be printed at skirt distance from the object. Therefore, if brims are active it may intersect with them. To avoid this, increase the skirt distance value.\n" +#~ msgstr "" +#~ "Um escudo de ar é útil para proteger uma impressão ABS ou ASA de deformações e desprendimento da mesa de impressão devido à corrente de ar. Geralmente, ele é necessário apenas com impressoras de estrutura aberta, ou seja, sem um gabinete.\n" +#~ "\n" +#~ "Habilitado = a saia é tão alta quanto o objeto impresso mais alto. Caso contrário, 'Altura da saia' é usada.\n" +#~ "Nota: com o escudo de ar ativo, a saia será impressa na distância da saia do objeto. Portanto, se as bordas estiverem ativas, ela pode se cruzar com elas. Para evitar isso, aumente o valor da distância da saia.\n" + +#~ msgid "" +#~ "The maximum print speed when purging in the wipe tower and printing the wipe tower sparse layers. When purging, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +#~ "\n" +#~ "When printing the sparse layers, if the internal perimeter speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +#~ "\n" +#~ "Increasing this speed may affect the tower's stability as well as increase the force with which the nozzle collides with any blobs that may have formed on the wipe tower.\n" +#~ "\n" +#~ "Before increasing this parameter beyond the default of 90 mm/s, make sure your printer can reliably bridge at the increased speeds and that ooze when tool changing is well controlled.\n" +#~ "\n" +#~ "For the wipe tower external perimeters the internal perimeter speed is used regardless of this setting." +#~ msgstr "" +#~ "A velocidade máxima de impressão ao purgar na torre de purga e ao imprimir as camadas esparsas da torre de purga. Ao purgar, se a velocidade do preenchimento esparso ou a velocidade calculada a partir da velocidade volumétrica máxima do filamento for menor, a menor será utilizada.\n" +#~ "\n" +#~ "Ao imprimir as camadas esparsas, se a velocidade do perímetro interno ou a velocidade calculada a partir da velocidade volumétrica máxima do filamento for menor, a menor será utilizada.\n" +#~ "\n" +#~ "Aumentar essa velocidade pode afetar a estabilidade da torre, bem como aumentar a força com que o bico colide com quaisquer bolhas que possam ter se formado na torre de purga.\n" +#~ "\n" +#~ "Antes de aumentar esse parâmetro além do padrão de 90 mm/s, certifique-se de que sua impressora pode realizar pontes de forma confiável nas velocidades aumentadas e que o vazamento ao trocar a ferramenta está bem controlado.\n" +#~ "\n" +#~ "Para os perímetros externos da torre de purga, a velocidade do perímetro interno é utilizada independentemente dessa configuração." + +#~ msgid "" +#~ "Wipe tower outer wall type.\n" +#~ "1. Rectangle: The default wall type, a rectangle with fixed width and height.\n" +#~ "2. Cone: A cone with a fillet at the bottom to help stabilize the wipe tower.\n" +#~ "3. Rib: Adds four ribs to the tower wall for enhanced stability." +#~ msgstr "" +#~ "Tipo de parede externa da torre de purga.\n" +#~ "1. Retângulo: O tipo de parede padrão, um retângulo com largura e altura fixas.\n" +#~ "2. Cone: Um cone com um filete na parte inferior para ajudar a estabilizar a torre de purga.\n" +#~ "3. Nervura: Adiciona quatro nervuras à parede da torre para maior estabilidade." + +#~ msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker or narrower than they normally would be. The spacing is adjusted automatically." +#~ msgstr "Fluxo extra usado para as linhas de purga na torre de purga. Isso torna as linhas de purga mais grossas ou mais estreitas do que normalmente seriam. O espaçamento é ajustado automaticamente." + +#~ msgid "" +#~ "Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. Higher values remove more and longer walls.\n" +#~ "\n" +#~ "NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the Advanced settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." +#~ msgstr "" +#~ "Ajuste este valor para evitar que paredes curtas e não fechados sejam impressos, o que poderia aumentar o tempo de impressão. Valores mais altos removem paredes mais longas.\n" +#~ "\n" +#~ "NOTA: As superfícies inferior e superior não serão afetadas por este valor para evitar lacunas visuais no exterior do modelo. Ajuste o 'Limiar de uma parede' nas configurações avançadas abaixo para ajustar a sensibilidade do que é considerado uma superfície superior. 'Limiar de uma parede' só é visível se esta configuração estiver acima do valor padrão de 0,5, ou se superfícies superiores de uma única parede estiverem habilitadas." + # AI Translated #, boost-format #~ msgid "Split into %1% part" diff --git a/localization/i18n/ru/OrcaSlicer_ru.po b/localization/i18n/ru/OrcaSlicer_ru.po index 76bad00e29..2c34ebd3af 100644 --- a/localization/i18n/ru/OrcaSlicer_ru.po +++ b/localization/i18n/ru/OrcaSlicer_ru.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: OrcaSlicer V2.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-10-13 09:55-0300\n" +"POT-Creation-Date: 2026-10-14 10:04-0300\n" "PO-Revision-Date: 2026-02-25 13:38+0300\n" "Last-Translator: Felix14_v2\n" "Language-Team: Felix14_v2 (ДС/ТГ: @felix14_v2, почта: aleks111001@list.ru), Andylg \n" @@ -2418,6 +2418,66 @@ msgstr "Ограничение сетевого плагина" msgid "Privacy Policy Update" msgstr "Обновление политики конфиденциальности" +# AI Translated +msgid "All your filament presets are available on the printers they were made for." +msgstr "Все ваши профили материалов доступны на принтерах, для которых они были созданы." + +# AI Translated +msgid "Migrate Filament Presets" +msgstr "Перенести профили материалов" + +# AI Translated +msgid "" +"OrcaSlicer 2.5.0 restructured many system filament presets to fix incorrect profiles and prepare for future features. As a result, the presets below no longer show on some printers they were made for. Sorry for the trouble; this is a one-time fix.\n" +"\n" +"Add those printers back to your presets now? Your presets are backed up first. You can also do this later from Help > Migrate Filament Presets." +msgstr "" +"OrcaSlicer 2.5.0 изменил структуру многих системных профилей материалов, чтобы исправить неверные профили и подготовиться к будущим функциям. Из-за этого перечисленные ниже профили больше не отображаются на некоторых принтерах, для которых они были созданы. Приносим извинения за неудобства: это разовое исправление.\n" +"\n" +"Добавить эти принтеры в ваши профили обратно? Сначала будет создана резервная копия ваших профилей. Это можно сделать и позже через Помощь > Перенести профили материалов." + +# AI Translated +#, boost-format +msgid "%1% (based on %2%)" +msgstr "%1% (на основе %2%)" + +msgid "Don't remind me again" +msgstr "Больше не показывать" + +# AI Translated +msgid "Your presets could not be backed up, so they were not migrated." +msgstr "Не удалось создать резервную копию ваших профилей, поэтому они не были перенесены." + +# AI Translated +msgid "The user presets folder could not be locked, so nothing was migrated. Another OrcaSlicer instance may be saving presets; try again later from Help > Migrate Filament Presets." +msgstr "Не удалось заблокировать папку пользовательских профилей, поэтому ничего не было перенесено. Возможно, другой экземпляр OrcaSlicer сохраняет профили; повторите попытку позже через Помощь > Перенести профили материалов." + +# AI Translated +#, boost-format +msgid "" +"Your filament presets could not be migrated. A backup of your presets was saved to:\n" +"%1%" +msgstr "" +"Не удалось перенести ваши профили материалов. Резервная копия ваших профилей сохранена в:\n" +"%1%" + +# AI Translated +#, boost-format +msgid "" +"Your filament presets were migrated. Select them again in the filament list where you used them.\n" +"\n" +"A backup of your presets was saved to:\n" +"%1%" +msgstr "" +"Ваши профили материалов перенесены. Выберите их снова в списке материалов там, где вы их использовали.\n" +"\n" +"Резервная копия ваших профилей сохранена в:\n" +"%1%" + +# AI Translated +msgid "These presets could not be migrated:" +msgstr "Не удалось перенести эти профили:" + #, c-format, boost-format msgid "your Orca Cloud profile (user ID: \"%s\")" msgstr "профиль Orca Cloud (идентификатор: «%s»)" @@ -3128,6 +3188,63 @@ msgstr " (с потерей цвета)" msgid "Center" msgstr "По центру" +# AI Translated +msgid "Distribute left-right" +msgstr "Распределить по ширине" + +# AI Translated +msgid "Distribute front-back" +msgstr "Распределить по глубине" + +# AI Translated +msgid "Distribute top-bottom" +msgstr "Распределить по высоте" + +# AI Translated +msgid "Align left" +msgstr "Выровнять по левому краю" + +# AI Translated +# Needs human review: Align/Distribute menu (object right-click): left-right/front-back/top-bottom are rendered as по ширине/глубине/высоте (the menu appends X/Y/Z); check it reads as aligning the objects' centers along that axis. +msgid "Align left-right center" +msgstr "Выровнять центры по ширине" + +# AI Translated +msgid "Align right" +msgstr "Выровнять по правому краю" + +# AI Translated +msgid "Align front" +msgstr "Выровнять по переднему краю" + +# AI Translated +msgid "Align front-back center" +msgstr "Выровнять центры по глубине" + +# AI Translated +msgid "Align back" +msgstr "Выровнять по заднему краю" + +# AI Translated +msgid "Align bottom" +msgstr "Выровнять по нижнему краю" + +# AI Translated +msgid "Align top-bottom center" +msgstr "Выровнять центры по высоте" + +# AI Translated +msgid "Align top" +msgstr "Выровнять по верхнему краю" + +# AI Translated +msgid "Align/Distribute" +msgstr "Выровнять/Распределить" + +# AI Translated +msgid "Align and distribute objects" +msgstr "Выровнять и распределить модели" + msgid "Drop" msgstr "Опустить на стол" @@ -6704,6 +6821,10 @@ msgstr "Мастер настройки" msgid "Show Configuration Folder" msgstr "Открыть папку слайсера" +# AI Translated +msgid "Bring back filament presets that a profile update removed from printers they were made for" +msgstr "Вернуть профили материалов, которые обновление профилей убрало с принтеров, для которых они были созданы" + msgid "Troubleshoot Center" msgstr "Экран отладки" @@ -14007,6 +14128,18 @@ msgstr "несколько пересечений с периметром, ис msgid "a perimeter is fully inside a modifier, the modifier was not applied to it (%1%)" msgstr "периметр целиком внутри модификатора, модификатор для него не применён (%1%)" +# AI Translated +#. TRN: %1% is the modifier type "Seam Blocked" as in the menu, %2% the modifier name, %3% the object name. +#, boost-format +msgid "%1% modifier \"%2%\" of \"%3%\" covers an entire perimeter" +msgstr "Модификатор «%2%» (%1%) модели «%3%» охватывает периметр целиком" + +# AI Translated +#. TRN: %1% is the modifier type "Seam Blocked" as in the menu, %2% the modifier name, %3% the object name, %4% the number of modifiers. +#, boost-format +msgid "%1% modifier \"%2%\" of \"%3%\" (%4% in total) covers an entire perimeter" +msgstr "Модификатор «%2%» (%1%) модели «%3%» (всего: %4%) охватывает периметр целиком" + #, boost-format msgid "modifier \"%1%\" of \"%2%\" had no effect on the seam (it might not reach the centerline of the printed perimeter)" msgstr "модификатор «%1%» модели «%2%» не повлиял на шов (возможно, он не достигает осевой линии печатаемого периметра)" @@ -14991,8 +15124,9 @@ msgstr "" "\n" "Примечание: рекомендуется использовать в паре с «Двухслойными мостами»." +# AI Translated msgid "Bridge flow ratio" -msgstr "Поток внешних мостов" +msgstr "Коэффициент потока внешних мостов" msgid "" "This value governs the thickness of the external (visible) bridge layer.\n" @@ -15007,21 +15141,23 @@ msgstr "" "Внимание: при значениях меньше 1 плотность линий автоматически повышается для обеспечения печатаемости.\n" "Примечание: фактический поток для моста рассчитывается путём умножения этого значения на поток материала и общий поток модели (если он задан)." -# Максимальное значение можно не указывать, т.к. теперь в каждой подсказке есть абзац с допустимым диапазоном значений. +# AI Translated msgid "" "Line width of the Bridge. If expressed as a %, it will be computed over the nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" -"If set to 0, the line width will match the Internal solid infill width." +"If set to 0, the line width will match the Internal solid infill width, or the nozzle diameter for thick bridges." msgstr "" "Ширина линий мостов. Можно указать процент от диаметра сопла.\n" -"Рекомендуется использовать в паре с увеличенными плотностью или потоком мостов.\n" +"Рекомендуется использовать в паре с увеличенными значениями параметров «Плотность внешних мостов» или «Коэффициент потока внешних мостов».\n" "\n" -"0 – использовать ширину линий сплошного заполнения." +"Максимальное значение – 100% или диаметр сопла.\n" +"0 – использовать ширину линий сплошного заполнения, а для толстых мостов – диаметр сопла." +# AI Translated msgid "Internal bridge flow ratio" -msgstr "Поток внутренних мостов" +msgstr "Коэффициент потока внутренних мостов" msgid "" "This value governs the thickness of the internal bridge layer. This is the first layer over sparse infill so increasing it may increase strength and upper layer quality.\n" @@ -15293,7 +15429,7 @@ msgstr "Включение динамического управления ск msgid "Slow down for curled perimeters" msgstr "Замедляться на изогнутых периметрах" -# Обновил, отформатировал и провёл семантическую оптимизацию +# AI Translated #, no-c-format, no-boost-format msgid "" "Enable this option to slow down printing in areas where perimeters may have curled upwards.\n" @@ -15309,35 +15445,35 @@ msgid "" "3. If artifacts still appear, enable Extrusion Rate Smoothing (ERS) to further smooth the flow transitions.\n" "\n" "Note: When this option is enabled, overhang perimeters are treated like overhangs, meaning the overhang speed is applied even if the overhanging perimeter is part of a bridge.\n" -"For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 100% overhang speed will be applied." +"For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 75% overhang speed will be applied, limited by the bridge speed." msgstr "" -"Позволяет автоматически замедлять печать в областях, где выступающие периметры могут деформироваться из-за усадки.\n" -"Например, форштевень Benchy, который сильнее подвержен накоплению усадочной деформации.\n" +"Включите эту опцию, чтобы замедлять печать в областях, где периметры могут закручиваться вверх.\n" +"Например, при печати нависаний на острых углах, таких как передняя часть корпуса кораблика Benchy, будет применяться дополнительное замедление, что уменьшит закручивание, которое накапливается за несколько слоёв.\n" "\n" -"Рекомендуется использовать в случаях, если скоростной режим, конструкция принтера или его система охлаждения не способны обеспечить качественного сопротивления усадке материала.\n" +"В целом рекомендуется оставлять эту опцию включённой, кроме случаев, когда охлаждение принтера достаточно мощное или скорость печати достаточно низкая, чтобы периметры не закручивались. \n" +"При печати с высокой скоростью внешнего периметра эта опция может вызывать артефакты на стенках при замедлении: из-за потенциально большого разброса скоростей печати экструдер не успевает за запрошенным изменением потока.\n" +"Наиболее вероятная причина этих артефактов – слегка неточная настройка PA, особенно в сочетании с большим временем сглаживания PA.\n" "\n" -"Примечание: отключает скоростной режим мостов для нависающих периметров (передаёт его в управление настройкам нависаний ниже).\n" +"Рекомендации при включении этой опции:\n" +"1. Уменьшите время сглаживания Pressure Advance до 0.015 - 0.02, чтобы экструдер быстро реагировал на изменения скорости.\n" +"2. Увеличьте минимальные скорости печати, чтобы ограничить величину замедления и уменьшить разброс между быстрыми и медленными участками.\n" +"3. Если артефакты всё же появляются, включите «Сглаживание расхода» (ERS), чтобы дополнительно сгладить переходы потока.\n" "\n" -"Внимание: требуется крайне точная настройка коррекции давления. В противном случае при быстрой печати стенок в местах перепада скоростей будут возникать заметные артефакты поверхности.\n" -"\n" -"Рекомендации по настройке:\n" -"1. Уменьшите время сглаживания Pressure Advance до 0.015-0.02, чтобы\n" -"    повысить реактивность экструдера на изменения скорости.\n" -"2. Повысьте ограничения скоростей нависаний.\n" -"3. Если это не помогло, воспользуйтесь сглаживанием расхода." +"Примечание: когда эта опция включена, нависающие периметры обрабатываются как нависания, то есть скорость нависаний применяется, даже если нависающий периметр является частью моста.\n" +"Например, если периметры нависают на 100% и под ними нет стенки, которая бы их поддерживала, будет применена скорость нависаний 75%, ограниченная скоростью моста." msgid "mm/s or %" msgstr "мм/с или %" -# ??? +# AI Translated msgid "" "Speed of the externally visible bridge extrusions.\n" "\n" -"In addition, if Slow down for curled perimeters is disabled or Classic overhang mode is enabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." +"In addition, if Slow down for curled perimeters is disabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." msgstr "" "Скорость печати наружных периметров моста.\n" "\n" -"Кроме того, если отключена опция «Замедляться на изогнутых периметрах» или включён «Классический режим» печати нависаний, то скорость печати будет какой же, что и для нависающих периметров, которые имеют поддержку менее 13%, независимо от того, являются ли они частью моста или нависания." +"Кроме того, если отключена опция «Замедляться на изогнутых периметрах», то скорость печати будет такой же, что и для нависающих периметров, которые имеют поддержку менее 13%, независимо от того, являются ли они частью моста или нависания." msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%." msgstr "Скорость печати внутреннего моста. Можно указать процент от скорости внешнего моста (bridge_speed). По умолчанию – 150%." @@ -15961,8 +16097,9 @@ msgstr "Ограничение скорости движения головы ( msgid "Small perimeters" msgstr "Короткие периметры" -msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above. Set to zero for auto." -msgstr "Ограничение скорости движения головы (относительно стола) при печати коротких периметров с радиусом, не превышающим значение порога маленьких периметров (обычно, это отверстия). Можно указать процент от ограничения скорости печати внешнего периметра, указанного выше. Установите 0 для автонастройки (50%)." +# AI Translated +msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above." +msgstr "Ограничение скорости движения головы (относительно стола) при печати коротких периметров с радиусом, не превышающим значение small_perimeter_threshold (обычно это отверстия). Можно указать процент от ограничения скорости печати внешних периметров, указанного выше." msgid "Small perimeters threshold" msgstr "Порог коротких периметров" @@ -15974,8 +16111,9 @@ msgstr "Пороговое значение (радиус) для расчёта msgid "Small support perimeters" msgstr "Короткие периметры поддержек" -msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above. Set to zero for auto." -msgstr "Аналогично скорости «Коротких периметров», но для небольших отростков поддержек. Значительно повышает стабильность печати маленьких ветвей древовидных поддержек. Можно указать абсолютную скорость или процент от текущей скорости печати поддержки (например, 80%). 0 – рассчитывать автоматически." +# AI Translated +msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above." +msgstr "Аналогично скорости «Короткие периметры», но для поддержек. Эта отдельная настройка влияет на скорость печати поддержек в областях, не превышающих `small_support_perimeter_threshold`. Если указан процент (например, 80%), он рассчитывается от скорости печати поддержки или связующего слоя, указанной выше." msgid "Small support perimeters threshold" msgstr "Порог коротких периметров поддержек" @@ -15986,22 +16124,23 @@ msgstr "Пороговое значение (радиус) для расчёта msgid "Walls printing order" msgstr "Порядок печати периметров" +# AI Translated msgid "" "Print sequence of the internal (inner) and external (outer) walls.\n" "\n" "Use Inner/Outer for best overhangs. This is because the overhanging walls can adhere to a neighbouring perimeter while printing. However, this option results in slightly reduced surface quality as the external perimeter is deformed by being squashed to the internal perimeter.\n" "\n" -"Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended against the Outer/Inner option in most cases.\n" +"Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended over the Outer/Inner option in most cases.\n" "\n" "Use Outer/Inner for the same external wall quality and dimensional accuracy benefits of Inner/Outer/Inner option. However, the Z seams will appear less consistent as the first extrusion of a new layer starts on a visible surface." msgstr "" "Очерёдность печати внутренних и внешних периметров.\n" "\n" -"• «Изнутри наружу» хорошо подходит для печати нависаний благодаря дополнительному сцеплению внешнего периметра к соседним внутренним, но может привести к небольшому снижению точности размеров и качества внешней поверхности, так как её форма будет повторять внутреннюю структуру печати.\n" +"Используйте «Изнутри наружу» для лучшего качества нависаний, так как нависающие периметры при печати могут сцепляться с соседним периметром. Однако качество поверхности при этом немного снижается, так как внешний периметр деформируется, будучи прижатым к внутреннему.\n" "\n" -"• «Снаружи внутрь» обеспечивает хорошую точность размеров, так как внешний периметр печатается без контакта с внутрненним (что одновременно снижает качество нависаний), но при этом избыток материала в сопле в момент подачи может привести к выпиранию шва на внешнем периметре.\n" +"Используйте «Навстречу» для лучшей отделки внешней поверхности и точности размеров, так как внешний периметр печатается без воздействия внутреннего периметра. Однако качество нависаний ухудшится, так как нет внутреннего периметра, к которому можно печатать внешний. Для работы этого варианта необходимо не менее 3 периметров: сначала печатаются внутренние периметры, начиная с третьего, затем внешний периметр и, наконец, первый внутренний периметр. В большинстве случаев этот вариант рекомендуется вместо «Снаружи внутрь».\n" "\n" -"• «Навстречу» обеспечивает точность размеров и наилучшее качество, так как помимо прочего внутренний периметр стабилизирует поток материала к началу печати внешнего. Требуется минимум 3 периметра: сначала печатаются крайние внутренние, затем внешний и оставшийся внутренний. В большинстве случаев предпочтительнее, чем «Снаружи внутрь»." +"Используйте «Снаружи внутрь», чтобы получить такое же качество внешнего периметра и точность размеров, как у варианта «Навстречу». Однако швы по оси Z будут выглядеть менее однородно, так как первая экструзия нового слоя начинается на видимой поверхности." msgid "Inner/Outer" msgstr "Изнутри наружу" @@ -16839,51 +16978,9 @@ msgstr "" msgid "Sparse infill pattern" msgstr "Шаблон заполнения" +# AI Translated msgid "This is the line pattern for internal sparse infill." -msgstr "" -"Шаблон разреженного заполнения внутри модели.\n" -"\n" -"🞄 Зигзаг: самый простой и быстрый вариант заполнения.\n" -"🞄 Ровный зигзаг: идентичен зигзагу, но сохраняет постоянный угол.\n" -"🞄 Аккуратный зигзаг: идентичен зигзагу, но сохраняет согласованность\n" -"   между слоями и поддерживает зеркальный режим.\n" -"🞄 Смещённый зигзаг: идентичен зигзагу, но смещается с каждым слоем.\n" -"🞄 Двойной зигзаг: зигзаг в оболочке с возможностью её настройки.\n" -"🞄 Нити: похожи на зигзаг, но содержат вдвое меньше углов и\n" -"   печатаются быстрее. Заполнение напоминает изонить.\n" -"🞄 Сетка: простая сетка из двух перпендикулярных линий в основании.\n" -"🞄 Треугольники: сетка из трёх линий в основании.\n" -"🞄 Звёзды: идентичен треугольной сетке, но линии смещены для\n" -"   снижения переэкструзии в её узлах.\n" -"🞄 Куб: заполнение из вертикально расположенных кубов, отлично\n" -"   распределяет нагрузку во всех направлениях у разных форм.\n" -"🞄 Динамический куб: идентичен кубу, но экономит материал и время\n" -"   в наименее нагруженных областях. Идеален для крупных моделей.\n" -"🞄 Четверной куб: алгоритм идентичен кубу, но имеет в основании\n" -"   4 линии. Лучше распределяет нагрузку в ортогональных формах.\n" -"🞄 Кубическая поддержка: экономичный шаблон заполнения,\n" -"   рекомендуется исключительно для ненагруженных деталей.\n" -"🞄 Молния: предельно экономичный шаблон для быстрой печати\n" -"   тестовых и декоративных моделей.\n" -"🞄 Соты: заполнение вертикальными шестигугольными сотами.\n" -"🞄 3D-соты: заполнение усечёнными октаэдрами, состоящими из\n" -"   квадратов и наклонных шестиугольников.\n" -"🞄 Боковые соты: идентичен сотам, но расположен горизонтально.\n" -"   Хорошо сопротивляется кручению.\n" -"🞄 Боковая сетка: более слабый аналог боковых сот с настройкой углов.\n" -"🞄 Переходный зигзаг: упрощённый \"гироид\" для слабой электроники,\n" -"   уступает ему в прочности.\n" -"🞄 ТПМП Шварца D: похож на 3D-соты, но не создаёт концентраций\n" -"   напряжения. Заполнение изотропно, как и гироид.\n" -"🞄 ТПМП Фишера-Коха S: схож с костной тканью и хорошо гасит удары.\n" -"🞄 Гироид: как и 3 предыдущих, делит пространство на 2 объёма и\n" -"   хорошо подходит для заливки смолой.\n" -"🞄 Эквидистанты: повторяют контур слоя. Подходят для сплошного\n" -"   заполнения и гибких деталей.\n" -"🞄 Кривая Гильберта: создаёт непрерывный фрактальный лабиринт.\n" -"🞄 Спираль Архимеда: как и кривая Гильберта, равномерно заполняет\n" -"   весь объём без его деления, подходит для заливки смолой.\n" -"🞄 Спиральная октаграмма: декоративный шаблон." +msgstr "Шаблон разреженного заполнения внутри модели." msgid "Zig Zag" msgstr "Аккуратный зигзаг" @@ -16894,8 +16991,9 @@ msgstr "Смещённый зигзаг" msgid "Locked Zag" msgstr "Двойной зигзаг" +# AI Translated msgid "Line" -msgstr "Нити" +msgstr "Линия" msgid "Grid" msgstr "Сетка" @@ -17027,14 +17125,16 @@ msgstr "Высота первого слоя" msgid "Height of the first layer. Making the first layer height thicker can improve build plate adhesion." msgstr "Высота первого слоя. Небольшое увеличение высоты снижает вероятность отрыва детали от неровной поверхности стола." -msgid "This is the speed for the first layer except for solid infill sections." -msgstr "Общее ограничение скорости движения головы (относительно стола) при печати элементов первого слоя (кроме сплошного заполнения)." +# AI Translated +msgid "This is the speed for the walls and brim of the first layer." +msgstr "Ограничение скорости движения головы (относительно стола) при печати периметров и каймы на первом слое." msgid "First layer infill" msgstr "Заполнение" -msgid "This is the speed for solid infill parts of the first layer." -msgstr "Ограничение скорости движения головы (относительно стола) при печати сплошного заполнения на первом слое." +# AI Translated +msgid "This is the speed for the first layer except for walls and brim, such as infill, gap fill and support." +msgstr "Ограничение скорости движения головы (относительно стола) при печати первого слоя, кроме периметров и каймы: заполнения, заполнения щели и поддержек." msgid "First layer travel speed" msgstr "Холостые перемещения" @@ -17794,16 +17894,18 @@ msgstr "Ширина линий заполнения. Можно указать msgid "Infill/wall overlap" msgstr "Перекрытие заполнения с периметром" +# AI Translated #, no-c-format, no-boost-format -msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to line width of sparse infill. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." -msgstr "Параметр указывает на сколько процентов заполнение будет перекрываться с периметром для лучшего соединения друг с другом. Установите значение равным ≈10-15%, чтобы свести к минимуму вероятность чрезмерной экструзии и накопления материала приводящее к шероховатости поверхности." +msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to the inner wall line width. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." +msgstr "Параметр указывает, на сколько заполнение будет перекрываться с периметром для лучшего соединения друг с другом. Значение в процентах рассчитывается от ширины линии внутренних периметров. Установите значение равным ≈10-15%, чтобы свести к минимуму вероятность чрезмерной экструзии и накопления материала, приводящих к шероховатости верхних поверхностей." msgid "Top/Bottom solid infill/wall overlap" msgstr "Перекрытие заполнения поверхности с периметром" +# AI Translated #, no-c-format, no-boost-format -msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to line width of sparse infill." -msgstr "Площадь верхнего сплошного заполнения немного увеличивается, чтобы перекрыть периметр для лучшего сцепления и минимизировать появление мелких отверстий в местах соединения верхнего заполнения с периметрами. Значение 25-30% является хорошей отправной точкой, минимизирующей появление таких отверстий." +msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to the inner wall line width." +msgstr "Площадь верхнего сплошного заполнения немного увеличивается, чтобы перекрыть периметр для лучшего сцепления и минимизировать появление мелких отверстий в местах соединения верхнего заполнения с периметрами. Значение 25-30% является хорошей отправной точкой, минимизирующей появление таких отверстий. Значение в процентах рассчитывается от ширины линии внутренних периметров." msgid "This is the speed for internal sparse infill." msgstr "Ограничение скорости движения головы при печати разреженного заполнения (относительно стола)." @@ -17835,11 +17937,9 @@ msgstr "Толщина той части модели, которая была msgid "Interlocking depth of a segmented region" msgstr "Глубина переплетения окрашенной области" -# Переведено с фактическими ошибками, переписать с нуля -msgid "Interlocking depth of a segmented region. It will be ignored if \"mmu_segmented_region_max_width\" is zero or if \"mmu_segmented_region_interlocking_depth\" is bigger than \"mmu_segmented_region_max_width\". Zero disables this feature." -msgstr "" -"Глубина взаимного переплетения окрашенной области с основной моделью. Это значительно увеличивает прочность соединения между частями детали при мультиматериальной покраске.\n" -"При 0 и если «Глубина переплетения окрашенной области» будет больше значения «Глубина проникновения окрашенной области», то переплетения не будет." +# AI Translated +msgid "Interlocking depth of a segmented region. On every other layer, the segmented region is limited to this depth. It will be ignored if \"interlocking_beam\" is enabled. Zero disables this feature." +msgstr "Глубина переплетения окрашенной области. На каждом втором слое окрашенная область ограничивается этой глубиной. Игнорируется, если включён «interlocking_beam». Значение 0 отключает эту функцию." msgid "Use beam interlocking" msgstr "Создать взаимосвязанную структуру" @@ -17948,14 +18048,15 @@ msgstr "" msgid "Minimize wall height angle" msgstr "Угол прижима периметров" +# AI Translated msgid "" "Reduce the height of top-surface perimeters to match the model edge height.\n" -"Affects perimeters with a slope less than this angle (degrees).\n" +"Affects perimeters with a slope greater than this angle (degrees).\n" "A reasonable value is 35. Set to 0 to disable." msgstr "" -"Прижимать периметры к предыдущему слою на поверхностях с наклоном менее заданного значения.\n" -"\n" -"Внимание: в настоящий момент действие настройки инвертировано (затрагивается всё, кроме верхних периметров с указанным углом), что делает её вредоносной." +"Уменьшает высоту периметров верхней поверхности до высоты края модели.\n" +"Затрагивает периметры с наклоном больше этого угла (в градусах).\n" +"Разумное значение – 35. 0 – отключить." msgid "Don't alternate fill direction" msgstr "Отключить поворот шаблона заполнения" @@ -19013,10 +19114,9 @@ msgstr "Косой шов для внутренних периметров" msgid "Use scarf joint for inner walls as well." msgstr "Использовать косой шов и для внутренних периметров." -# Адаптивная скорость очистки, местная скорость очистки, локальная скорость -# очистки, скорость очистки по типу линии -msgid "Role base wipe speed" -msgstr "Местная скорость очистки" +# AI Translated +msgid "Role based wipe speed" +msgstr "Скорость очистки по типу линии" msgid "The wipe speed is determined by the speed of the current extrusion role. e.g. if a wipe action is executed immediately following an outer wall extrusion, the speed of the outer wall extrusion will be utilized for the wipe action." msgstr "Выбирать скорость очистки перед холостым перемещением на основе скорости печати последней линии. Например, если очистка происходит после печати внешнего периметра, скорость движения очистки будет как у периметра." @@ -19134,16 +19234,15 @@ msgstr "После первого слоя количество контуров msgid "Draft shield" msgstr "Защитный кожух" +# AI Translated msgid "" "A draft shield is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft. It is usually needed only with open frame printers, i.e. without an enclosure.\n" "\n" -"Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used.\n" -"Note: With the draft shield active, the skirt will be printed at skirt distance from the object. Therefore, if brims are active it may intersect with them. To avoid this, increase the skirt distance value.\n" +"Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used." msgstr "" "Защитный кожух полезен для защиты материалов типа ABS, ASA от деформации и отрыва от стола из-за внешнего воздушного потока. Обычно защитный кожух необходим только для принтеров без термокамеры.\n" "\n" -"Если включено, то высота юбки будет равна высоте самой высокой модели, иначе используется значение «Слоёв юбки».\n" -"Примечание: при включённом защитном кожухе, юбка будет печататься на расстоянии от модели, которое задаётся параметром «Расстояние до юбки». Если активна кайма, она может пересекаться с юбкой. Чтобы избежать этого, увеличьте значение «Расстояние до юбки».\n" +"Если включено, то высота юбки будет равна высоте самой высокой модели, иначе используется значение «Слоёв юбки»." msgid "Enabled" msgstr "Включено" @@ -20370,26 +20469,27 @@ msgstr "Регулировка угла «стабилизирующего ко msgid "Maximum wipe tower print speed" msgstr "Макс. скорость печати черновой башни" +# AI Translated msgid "" "The maximum print speed when purging in the wipe tower and printing the wipe tower sparse layers. When purging, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" "\n" -"When printing the sparse layers, if the internal perimeter speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +"When printing the sparse layers, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" "\n" "Increasing this speed may affect the tower's stability as well as increase the force with which the nozzle collides with any blobs that may have formed on the wipe tower.\n" "\n" "Before increasing this parameter beyond the default of 90 mm/s, make sure your printer can reliably bridge at the increased speeds and that ooze when tool changing is well controlled.\n" "\n" -"For the wipe tower external perimeters the internal perimeter speed is used regardless of this setting." +"For the wipe tower external perimeters the internal perimeter speed is used, also limited by this setting." msgstr "" -"Максимальная скорость печати при очистке в черновую башню и печати её разреженных слоёв.\n" -"Во время прочистки программа сопоставляет скорость разреженного заполнения и скорость, рассчитанную по 'максимальному объёмному расходу', и использует наименьшую.\n" -"При печати разреженных слоёв программа сопоставляет скорость внутренних периметров и скорость, рассчитанную по 'максимальному объёмному расходу', и также использует наименьшую.\n" +"Максимальная скорость печати при прочистке на черновой башне и при печати её разреженных слоёв. Во время прочистки, если скорость разреженного заполнения или скорость, рассчитанная по максимальному объёмному расходу материала, ниже, то используется наименьшая из них.\n" +"\n" +"При печати разреженных слоёв, если скорость разреженного заполнения или скорость, рассчитанная по максимальному объёмному расходу материала, ниже, то используется наименьшая из них.\n" "\n" "Увеличение этой скорости может повлиять на устойчивость башни, а также увеличить силу, с которой сопло сталкивается с любыми наплывами, которые могли образоваться на черновой башне.\n" "\n" -"Перед увеличением этого параметра выше значения по умолчанию 90 мм/с убедитесь, что ваш принтер может надежно строить мосты на повышенных скоростях и что отсутствует подтекание при смене инструмента.\n" +"Перед увеличением этого параметра выше значения по умолчанию 90 мм/с убедитесь, что ваш принтер может надёжно строить мосты на повышенных скоростях и что подтёки при смене инструмента хорошо контролируются.\n" "\n" -"Для внешних периметров черновой башни всегда используется скорость внутренних периметров, независимо от значения данного параметра." +"Для внешних периметров черновой башни используется скорость внутренних периметров, также ограниченная этим параметром." msgid "Wall type" msgstr "Форма черновой башни" @@ -20397,14 +20497,14 @@ msgstr "Форма черновой башни" # AI Translated msgid "" "Wipe tower outer wall type.\n" -"1. Rectangle: The default wall type, a rectangle with fixed width and height.\n" +"1. Rectangle: A rectangle with fixed width and height.\n" "2. Cone: A cone with a fillet at the bottom to help stabilize the wipe tower.\n" -"3. Rib: Adds four ribs to the tower wall for enhanced stability." +"3. Rib: The default wall type, which adds four ribs to the tower wall for enhanced stability." msgstr "" "Тип внешней стенки черновой башни.\n" -"1. Прямоугольник с фиксированной шириной и высотой. Установлено по умолчанию.\n" -"2. Конус со скруглением в нижней части для повышения устойчивости.\n" -"3. Рёбра жёсткости, которые добавляются по четырём углам черновой башни для повышения устойчивости." +"1. Прямоугольная: прямоугольник с фиксированной шириной и высотой.\n" +"2. Конус: конус со скруглением в нижней части для повышения устойчивости черновой башни.\n" +"3. Усиленная: тип по умолчанию, добавляет четыре ребра жёсткости к стенке башни для повышения устойчивости." # Тянется из "Форма стола" (в создании принтера) и "Форма черновой башни" msgid "Rectangle" @@ -20507,8 +20607,9 @@ msgstr "Расстояние между линиями очистки на че msgid "Extra flow for purging" msgstr "Дополнительный поток для очистки" -msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker or narrower than they normally would be. The spacing is adjusted automatically." -msgstr "Регулирует количество пластика, которое будет использоваться для очистки на черновой башне. Делает линии шире или уже по сравнению с тем, что выставлено в «Мин. объём сброса на черновой башне». Расстояние между линиями пересчитывается автоматически." +# AI Translated +msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker than they normally would be. The spacing is adjusted automatically." +msgstr "Дополнительный поток, используемый для линий очистки на черновой башне. Делает линии очистки толще обычного. Расстояние между линиями пересчитывается автоматически." msgid "Idle temperature" msgstr "Температура в простое" @@ -20645,14 +20746,15 @@ msgstr "" msgid "Minimum wall length" msgstr "Допустимая длина щели" +# AI Translated msgid "" -"Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. Higher values remove more and longer walls.\n" +"Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. The value is a multiple of the wall width. Higher values remove more and longer walls.\n" "\n" -"NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the Advanced settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." +"NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the 'Walls and surfaces' settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." msgstr "" -"Максимальная длина щели в месте уплотнения, которую можно игнорировать. Помогает избежать печати большого количества ненужных коротких линий.\n" +"Позволяет избежать печати коротких незамкнутых периметров, которые могут увеличить время печати. Значение задаётся как множитель ширины периметра. Чем оно больше, тем больше периметров и тем более длинные периметры удаляются.\n" "\n" -"Примечание: не влияет на периметры на первом слое и верхних поверхностях во избежание появления видимых щелей в них. Дополнительно можно настроить чувствительность определения поверхности как верхней в настройке «Порог верхней поверхности», если значение превышает стандартное значение в 0.5 мм." +"ПРИМЕЧАНИЕ: нижние и верхние поверхности не затрагиваются этим значением, чтобы не появлялись видимые щели на внешней стороне модели. Чувствительность определения верхней поверхности можно настроить в параметре «Порог верхней поверхности» в разделе «Периметры и поверхности» ниже. «Порог верхней поверхности» отображается только если это значение выше стандартного значения 0.5 или если включён параметр «Только один периметр на верхней поверхности»." # Минимальный сегмент периметра msgid "Maximum wall resolution" @@ -24647,9 +24749,6 @@ msgstr "Включить умное назначение материалов: msgid "File Saving" msgstr "Сохранение файла" -msgid "Don't remind me again" -msgstr "Больше не показывать" - msgid "No further pop-up will appear. You can reopen it in 'Preferences'" msgstr "В дальнейшем уведомление выводиться не будет. Отменить это можно в параметрах слайсера." @@ -35187,6 +35286,175 @@ msgstr "" "Предотвращение коробления материала\n" "Знаете ли вы, что при печати материалами, склонными к короблению, таких как ABS, повышение температуры подогреваемого стола может снизить эту вероятность?" +# Максимальное значение можно не указывать, т.к. теперь в каждой подсказке есть абзац с допустимым диапазоном значений. +#~ msgid "" +#~ "Line width of the Bridge. If expressed as a %, it will be computed over the nozzle diameter.\n" +#~ "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" +#~ "\n" +#~ "The maximum value is 100% or the nozzle diameter.\n" +#~ "If set to 0, the line width will match the Internal solid infill width." +#~ msgstr "" +#~ "Ширина линий мостов. Можно указать процент от диаметра сопла.\n" +#~ "Рекомендуется использовать в паре с увеличенными плотностью или потоком мостов.\n" +#~ "\n" +#~ "0 – использовать ширину линий сплошного заполнения." + +# Обновил, отформатировал и провёл семантическую оптимизацию +#, no-c-format, no-boost-format +#~ msgid "" +#~ "Enable this option to slow down printing in areas where perimeters may have curled upwards.\n" +#~ "For example, additional slowdown will be applied when printing overhangs on sharp corners like the front of the Benchy hull, reducing curling which compounds over multiple layers.\n" +#~ "\n" +#~ "It is generally recommended to have this option switched on unless your printer cooling is powerful enough or the print speed is slow enough that perimeter curling does not happen. \n" +#~ "If printing with a high external perimeter speed, this parameter may introduce wall artifacts when slowing down, due to the potentially large variance in print speeds causing the extruder to be unable to keep up with the requested flow change.\n" +#~ "Root cause of these artifacts is most likely PA tuning being slightly off, especially when combined with a high PA smooth time.\n" +#~ "\n" +#~ "Recommendations when enabling this option:\n" +#~ "1. Reduce Pressure Advance smooth time to 0.015 - 0.02 so the extruder reacts quickly to the speed changes.\n" +#~ "2. Increase the minimum print speeds to limit the magnitude of the slowdown and reduce the variance between fast and slow segments.\n" +#~ "3. If artifacts still appear, enable Extrusion Rate Smoothing (ERS) to further smooth the flow transitions.\n" +#~ "\n" +#~ "Note: When this option is enabled, overhang perimeters are treated like overhangs, meaning the overhang speed is applied even if the overhanging perimeter is part of a bridge.\n" +#~ "For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 100% overhang speed will be applied." +#~ msgstr "" +#~ "Позволяет автоматически замедлять печать в областях, где выступающие периметры могут деформироваться из-за усадки.\n" +#~ "Например, форштевень Benchy, который сильнее подвержен накоплению усадочной деформации.\n" +#~ "\n" +#~ "Рекомендуется использовать в случаях, если скоростной режим, конструкция принтера или его система охлаждения не способны обеспечить качественного сопротивления усадке материала.\n" +#~ "\n" +#~ "Примечание: отключает скоростной режим мостов для нависающих периметров (передаёт его в управление настройкам нависаний ниже).\n" +#~ "\n" +#~ "Внимание: требуется крайне точная настройка коррекции давления. В противном случае при быстрой печати стенок в местах перепада скоростей будут возникать заметные артефакты поверхности.\n" +#~ "\n" +#~ "Рекомендации по настройке:\n" +#~ "1. Уменьшите время сглаживания Pressure Advance до 0.015-0.02, чтобы\n" +#~ "    повысить реактивность экструдера на изменения скорости.\n" +#~ "2. Повысьте ограничения скоростей нависаний.\n" +#~ "3. Если это не помогло, воспользуйтесь сглаживанием расхода." + +# ??? +#~ msgid "" +#~ "Speed of the externally visible bridge extrusions.\n" +#~ "\n" +#~ "In addition, if Slow down for curled perimeters is disabled or Classic overhang mode is enabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." +#~ msgstr "" +#~ "Скорость печати наружных периметров моста.\n" +#~ "\n" +#~ "Кроме того, если отключена опция «Замедляться на изогнутых периметрах» или включён «Классический режим» печати нависаний, то скорость печати будет какой же, что и для нависающих периметров, которые имеют поддержку менее 13%, независимо от того, являются ли они частью моста или нависания." + +#~ msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above. Set to zero for auto." +#~ msgstr "Ограничение скорости движения головы (относительно стола) при печати коротких периметров с радиусом, не превышающим значение порога маленьких периметров (обычно, это отверстия). Можно указать процент от ограничения скорости печати внешнего периметра, указанного выше. Установите 0 для автонастройки (50%)." + +#~ msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above. Set to zero for auto." +#~ msgstr "Аналогично скорости «Коротких периметров», но для небольших отростков поддержек. Значительно повышает стабильность печати маленьких ветвей древовидных поддержек. Можно указать абсолютную скорость или процент от текущей скорости печати поддержки (например, 80%). 0 – рассчитывать автоматически." + +#~ msgid "" +#~ "Print sequence of the internal (inner) and external (outer) walls.\n" +#~ "\n" +#~ "Use Inner/Outer for best overhangs. This is because the overhanging walls can adhere to a neighbouring perimeter while printing. However, this option results in slightly reduced surface quality as the external perimeter is deformed by being squashed to the internal perimeter.\n" +#~ "\n" +#~ "Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended against the Outer/Inner option in most cases.\n" +#~ "\n" +#~ "Use Outer/Inner for the same external wall quality and dimensional accuracy benefits of Inner/Outer/Inner option. However, the Z seams will appear less consistent as the first extrusion of a new layer starts on a visible surface." +#~ msgstr "" +#~ "Очерёдность печати внутренних и внешних периметров.\n" +#~ "\n" +#~ "• «Изнутри наружу» хорошо подходит для печати нависаний благодаря дополнительному сцеплению внешнего периметра к соседним внутренним, но может привести к небольшому снижению точности размеров и качества внешней поверхности, так как её форма будет повторять внутреннюю структуру печати.\n" +#~ "\n" +#~ "• «Снаружи внутрь» обеспечивает хорошую точность размеров, так как внешний периметр печатается без контакта с внутрненним (что одновременно снижает качество нависаний), но при этом избыток материала в сопле в момент подачи может привести к выпиранию шва на внешнем периметре.\n" +#~ "\n" +#~ "• «Навстречу» обеспечивает точность размеров и наилучшее качество, так как помимо прочего внутренний периметр стабилизирует поток материала к началу печати внешнего. Требуется минимум 3 периметра: сначала печатаются крайние внутренние, затем внешний и оставшийся внутренний. В большинстве случаев предпочтительнее, чем «Снаружи внутрь»." + +#~ msgid "This is the speed for the first layer except for solid infill sections." +#~ msgstr "Общее ограничение скорости движения головы (относительно стола) при печати элементов первого слоя (кроме сплошного заполнения)." + +#~ msgid "This is the speed for solid infill parts of the first layer." +#~ msgstr "Ограничение скорости движения головы (относительно стола) при печати сплошного заполнения на первом слое." + +#, no-c-format, no-boost-format +#~ msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to line width of sparse infill. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." +#~ msgstr "Параметр указывает на сколько процентов заполнение будет перекрываться с периметром для лучшего соединения друг с другом. Установите значение равным ≈10-15%, чтобы свести к минимуму вероятность чрезмерной экструзии и накопления материала приводящее к шероховатости поверхности." + +#, no-c-format, no-boost-format +#~ msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to line width of sparse infill." +#~ msgstr "Площадь верхнего сплошного заполнения немного увеличивается, чтобы перекрыть периметр для лучшего сцепления и минимизировать появление мелких отверстий в местах соединения верхнего заполнения с периметрами. Значение 25-30% является хорошей отправной точкой, минимизирующей появление таких отверстий." + +# Переведено с фактическими ошибками, переписать с нуля +#~ msgid "Interlocking depth of a segmented region. It will be ignored if \"mmu_segmented_region_max_width\" is zero or if \"mmu_segmented_region_interlocking_depth\" is bigger than \"mmu_segmented_region_max_width\". Zero disables this feature." +#~ msgstr "" +#~ "Глубина взаимного переплетения окрашенной области с основной моделью. Это значительно увеличивает прочность соединения между частями детали при мультиматериальной покраске.\n" +#~ "При 0 и если «Глубина переплетения окрашенной области» будет больше значения «Глубина проникновения окрашенной области», то переплетения не будет." + +#~ msgid "" +#~ "Reduce the height of top-surface perimeters to match the model edge height.\n" +#~ "Affects perimeters with a slope less than this angle (degrees).\n" +#~ "A reasonable value is 35. Set to 0 to disable." +#~ msgstr "" +#~ "Прижимать периметры к предыдущему слою на поверхностях с наклоном менее заданного значения.\n" +#~ "\n" +#~ "Внимание: в настоящий момент действие настройки инвертировано (затрагивается всё, кроме верхних периметров с указанным углом), что делает её вредоносной." + +# Адаптивная скорость очистки, местная скорость очистки, локальная скорость +# очистки, скорость очистки по типу линии +#~ msgid "Role base wipe speed" +#~ msgstr "Местная скорость очистки" + +#~ msgid "" +#~ "A draft shield is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft. It is usually needed only with open frame printers, i.e. without an enclosure.\n" +#~ "\n" +#~ "Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used.\n" +#~ "Note: With the draft shield active, the skirt will be printed at skirt distance from the object. Therefore, if brims are active it may intersect with them. To avoid this, increase the skirt distance value.\n" +#~ msgstr "" +#~ "Защитный кожух полезен для защиты материалов типа ABS, ASA от деформации и отрыва от стола из-за внешнего воздушного потока. Обычно защитный кожух необходим только для принтеров без термокамеры.\n" +#~ "\n" +#~ "Если включено, то высота юбки будет равна высоте самой высокой модели, иначе используется значение «Слоёв юбки».\n" +#~ "Примечание: при включённом защитном кожухе, юбка будет печататься на расстоянии от модели, которое задаётся параметром «Расстояние до юбки». Если активна кайма, она может пересекаться с юбкой. Чтобы избежать этого, увеличьте значение «Расстояние до юбки».\n" + +#~ msgid "" +#~ "The maximum print speed when purging in the wipe tower and printing the wipe tower sparse layers. When purging, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +#~ "\n" +#~ "When printing the sparse layers, if the internal perimeter speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +#~ "\n" +#~ "Increasing this speed may affect the tower's stability as well as increase the force with which the nozzle collides with any blobs that may have formed on the wipe tower.\n" +#~ "\n" +#~ "Before increasing this parameter beyond the default of 90 mm/s, make sure your printer can reliably bridge at the increased speeds and that ooze when tool changing is well controlled.\n" +#~ "\n" +#~ "For the wipe tower external perimeters the internal perimeter speed is used regardless of this setting." +#~ msgstr "" +#~ "Максимальная скорость печати при очистке в черновую башню и печати её разреженных слоёв.\n" +#~ "Во время прочистки программа сопоставляет скорость разреженного заполнения и скорость, рассчитанную по 'максимальному объёмному расходу', и использует наименьшую.\n" +#~ "При печати разреженных слоёв программа сопоставляет скорость внутренних периметров и скорость, рассчитанную по 'максимальному объёмному расходу', и также использует наименьшую.\n" +#~ "\n" +#~ "Увеличение этой скорости может повлиять на устойчивость башни, а также увеличить силу, с которой сопло сталкивается с любыми наплывами, которые могли образоваться на черновой башне.\n" +#~ "\n" +#~ "Перед увеличением этого параметра выше значения по умолчанию 90 мм/с убедитесь, что ваш принтер может надежно строить мосты на повышенных скоростях и что отсутствует подтекание при смене инструмента.\n" +#~ "\n" +#~ "Для внешних периметров черновой башни всегда используется скорость внутренних периметров, независимо от значения данного параметра." + +# AI Translated +#~ msgid "" +#~ "Wipe tower outer wall type.\n" +#~ "1. Rectangle: The default wall type, a rectangle with fixed width and height.\n" +#~ "2. Cone: A cone with a fillet at the bottom to help stabilize the wipe tower.\n" +#~ "3. Rib: Adds four ribs to the tower wall for enhanced stability." +#~ msgstr "" +#~ "Тип внешней стенки черновой башни.\n" +#~ "1. Прямоугольник с фиксированной шириной и высотой. Установлено по умолчанию.\n" +#~ "2. Конус со скруглением в нижней части для повышения устойчивости.\n" +#~ "3. Рёбра жёсткости, которые добавляются по четырём углам черновой башни для повышения устойчивости." + +#~ msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker or narrower than they normally would be. The spacing is adjusted automatically." +#~ msgstr "Регулирует количество пластика, которое будет использоваться для очистки на черновой башне. Делает линии шире или уже по сравнению с тем, что выставлено в «Мин. объём сброса на черновой башне». Расстояние между линиями пересчитывается автоматически." + +#~ msgid "" +#~ "Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. Higher values remove more and longer walls.\n" +#~ "\n" +#~ "NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the Advanced settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." +#~ msgstr "" +#~ "Максимальная длина щели в месте уплотнения, которую можно игнорировать. Помогает избежать печати большого количества ненужных коротких линий.\n" +#~ "\n" +#~ "Примечание: не влияет на периметры на первом слое и верхних поверхностях во избежание появления видимых щелей в них. Дополнительно можно настроить чувствительность определения поверхности как верхней в настройке «Порог верхней поверхности», если значение превышает стандартное значение в 0.5 мм." + # AI Translated #, boost-format #~ msgid "Split into %1% part" diff --git a/localization/i18n/sv/OrcaSlicer_sv.po b/localization/i18n/sv/OrcaSlicer_sv.po index 4757bcb5e4..15d2530f64 100644 --- a/localization/i18n/sv/OrcaSlicer_sv.po +++ b/localization/i18n/sv/OrcaSlicer_sv.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-10-13 09:55-0300\n" +"POT-Creation-Date: 2026-10-14 10:04-0300\n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -2725,6 +2725,67 @@ msgstr "Begränsning för nätverkets insticksmodul" msgid "Privacy Policy Update" msgstr "Uppdatering av integritetspolicy" +# AI Translated +msgid "All your filament presets are available on the printers they were made for." +msgstr "Alla dina filamentförinställningar finns tillgängliga på de skrivare de gjordes för." + +# AI Translated +msgid "Migrate Filament Presets" +msgstr "Migrera filamentförinställningar" + +# AI Translated +msgid "" +"OrcaSlicer 2.5.0 restructured many system filament presets to fix incorrect profiles and prepare for future features. As a result, the presets below no longer show on some printers they were made for. Sorry for the trouble; this is a one-time fix.\n" +"\n" +"Add those printers back to your presets now? Your presets are backed up first. You can also do this later from Help > Migrate Filament Presets." +msgstr "" +"OrcaSlicer 2.5.0 har strukturerat om många systemfilamentförinställningar för att rätta felaktiga profiler och förbereda för framtida funktioner. Därför visas förinställningarna nedan inte längre på vissa skrivare som de gjordes för. Vi ber om ursäkt för besväret; det här är en engångsåtgärd.\n" +"\n" +"Lägga till de skrivarna i dina förinställningar igen nu? Dina förinställningar säkerhetskopieras först. Du kan också göra detta senare via Hjälp > Migrera filamentförinställningar." + +# AI Translated +#, boost-format +msgid "%1% (based on %2%)" +msgstr "%1% (baserad på %2%)" + +# AI Translated +msgid "Don't remind me again" +msgstr "Påminn mig inte igen" + +# AI Translated +msgid "Your presets could not be backed up, so they were not migrated." +msgstr "Dina förinställningar kunde inte säkerhetskopieras, så de migrerades inte." + +# AI Translated +msgid "The user presets folder could not be locked, so nothing was migrated. Another OrcaSlicer instance may be saving presets; try again later from Help > Migrate Filament Presets." +msgstr "Mappen för användarförinställningar kunde inte låsas, så ingenting migrerades. En annan instans av OrcaSlicer kanske sparar förinställningar; försök igen senare via Hjälp > Migrera filamentförinställningar." + +# AI Translated +#, boost-format +msgid "" +"Your filament presets could not be migrated. A backup of your presets was saved to:\n" +"%1%" +msgstr "" +"Dina filamentförinställningar kunde inte migreras. En säkerhetskopia av dina förinställningar sparades i:\n" +"%1%" + +# AI Translated +#, boost-format +msgid "" +"Your filament presets were migrated. Select them again in the filament list where you used them.\n" +"\n" +"A backup of your presets was saved to:\n" +"%1%" +msgstr "" +"Dina filamentförinställningar migrerades. Välj dem igen i filamentlistan där du använde dem.\n" +"\n" +"En säkerhetskopia av dina förinställningar sparades i:\n" +"%1%" + +# AI Translated +msgid "These presets could not be migrated:" +msgstr "Dessa förinställningar kunde inte migreras:" + # AI Translated #, c-format, boost-format msgid "your Orca Cloud profile (user ID: \"%s\")" @@ -3505,6 +3566,62 @@ msgstr "(Färg förlorad)" msgid "Center" msgstr "Centrera" +# AI Translated +msgid "Distribute left-right" +msgstr "Fördela i sidled" + +# AI Translated +msgid "Distribute front-back" +msgstr "Fördela i djupled" + +# AI Translated +msgid "Distribute top-bottom" +msgstr "Fördela i höjdled" + +# AI Translated +msgid "Align left" +msgstr "Justera vänsterkant" + +# AI Translated +msgid "Align left-right center" +msgstr "Justera mitten i sidled" + +# AI Translated +msgid "Align right" +msgstr "Justera högerkant" + +# AI Translated +msgid "Align front" +msgstr "Justera framkant" + +# AI Translated +msgid "Align front-back center" +msgstr "Justera mitten i djupled" + +# AI Translated +msgid "Align back" +msgstr "Justera bakkant" + +# AI Translated +msgid "Align bottom" +msgstr "Justera nederkant" + +# AI Translated +msgid "Align top-bottom center" +msgstr "Justera mitten i höjdled" + +# AI Translated +msgid "Align top" +msgstr "Justera överkant" + +# AI Translated +msgid "Align/Distribute" +msgstr "Justera/Fördela" + +# AI Translated +msgid "Align and distribute objects" +msgstr "Justera och fördela objekt" + msgid "Drop" msgstr "Släpp" @@ -7282,6 +7399,10 @@ msgstr "Installationsguide" msgid "Show Configuration Folder" msgstr "Visa Konfigurations Mapp" +# AI Translated +msgid "Bring back filament presets that a profile update removed from printers they were made for" +msgstr "Hämta tillbaka filamentförinställningar som en profiluppdatering tog bort från de skrivare de gjordes för" + # AI Translated msgid "Troubleshoot Center" msgstr "Felsökningscenter" @@ -15262,6 +15383,18 @@ msgstr "flera skärningar med en perimeter, endast en användes (%1%)" msgid "a perimeter is fully inside a modifier, the modifier was not applied to it (%1%)" msgstr "en perimeter ligger helt inuti en modifierare, modifieraren tillämpades inte på den (%1%)" +# AI Translated +#. TRN: %1% is the modifier type "Seam Blocked" as in the menu, %2% the modifier name, %3% the object name. +#, boost-format +msgid "%1% modifier \"%2%\" of \"%3%\" covers an entire perimeter" +msgstr "Modifieraren \"%2%\" (%1%) för \"%3%\" täcker en hel perimeter" + +# AI Translated +#. TRN: %1% is the modifier type "Seam Blocked" as in the menu, %2% the modifier name, %3% the object name, %4% the number of modifiers. +#, boost-format +msgid "%1% modifier \"%2%\" of \"%3%\" (%4% in total) covers an entire perimeter" +msgstr "Modifieraren \"%2%\" (%1%) för \"%3%\" (%4% totalt) täcker en hel perimeter" + # AI Translated #, boost-format msgid "modifier \"%1%\" of \"%2%\" had no effect on the seam (it might not reach the centerline of the printed perimeter)" @@ -16330,8 +16463,9 @@ msgstr "" "\n" "Det här alternativet fungerar särskilt bra tillsammans med alternativet andra inre bridge över ifyllnad, för att förbättra bridging ytterligare innan solid ifyllnad extruderas." +# AI Translated msgid "Bridge flow ratio" -msgstr "Bridge/Brygg flöde" +msgstr "Flödesförhållande för bridge" # AI Translated msgid "" @@ -16348,18 +16482,19 @@ msgstr "" "Det faktiska bridge-flödet beräknas genom att detta värde multipliceras med filamentets flödesförhållande och, om det är angivet, objektets flödesförhållande." # AI Translated +# Needs human review: 'bridge-densitet' is generic (the labels are 'Densitet för yttre/inre bridge'). The printf-style warning for '% e' after 100 is a false positive (the entry is not c-format). msgid "" "Line width of the Bridge. If expressed as a %, it will be computed over the nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" -"If set to 0, the line width will match the Internal solid infill width." +"If set to 0, the line width will match the Internal solid infill width, or the nozzle diameter for thick bridges." msgstr "" -"Linjebredd för bridgen. Om värdet anges i % beräknas det utifrån nozzeldiametern.\n" -"Rekommenderas att användas med högre bridge-densitet eller bridge-flödesförhållande.\n" +"Linjebredd för Bridge/bro. Om värdet anges i procent (%) beräknas det utifrån nozzeldiametern.\n" +"Rekommenderas att användas med högre bridge-densitet eller Flödesförhållande för bridge.\n" "\n" -"Maxvärdet är 100 % eller nozzeldiametern.\n" -"Om det sätts till 0 motsvarar linjebredden bredden på inre solid ifyllnad." +"Maxvärdet är 100% eller nozzeldiametern.\n" +"Om det sätts till 0 motsvarar linjebredden bredden på invändig solid fyllnad, eller nozzeldiametern för tjocka bridges." # AI Translated msgid "Internal bridge flow ratio" @@ -16687,7 +16822,7 @@ msgid "" "3. If artifacts still appear, enable Extrusion Rate Smoothing (ERS) to further smooth the flow transitions.\n" "\n" "Note: When this option is enabled, overhang perimeters are treated like overhangs, meaning the overhang speed is applied even if the overhanging perimeter is part of a bridge.\n" -"For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 100% overhang speed will be applied." +"For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 75% overhang speed will be applied, limited by the bridge speed." msgstr "" "Aktivera det här alternativet för att sakta ner utskriften i områden där perimetrar kan ha böjt sig uppåt.\n" "Till exempel tillämpas ytterligare nedsaktning vid utskrift av överhäng i skarpa hörn, som fören på en Benchy, vilket minskar uppböjning som annars förvärras över flera lager.\n" @@ -16699,10 +16834,10 @@ msgstr "" "Rekommendationer när du aktiverar det här alternativet:\n" "1. Minska Pressure Advance-utjämningstiden till 0,015–0,02 så att extrudern reagerar snabbt på hastighetsändringarna.\n" "2. Öka minimihastigheterna för utskrift för att begränsa nedsaktningens omfattning och minska variationen mellan snabba och långsamma sträckor.\n" -"3. Om artefakter fortfarande syns, aktivera Extrusion Rate Smoothing (ERS) för att jämna ut flödesövergångarna ytterligare.\n" +"3. Om artefakter fortfarande syns, aktivera Utjämning av extruderingshastighet (ERS) för att jämna ut flödesövergångarna ytterligare.\n" "\n" "Obs! När det här alternativet är aktiverat behandlas överhängsperimetrar som överhäng, vilket innebär att överhängshastigheten tillämpas även om den överhängande perimetern är en del av en bridge.\n" -"Till exempel, när perimetrarna hänger över till 100 % utan någon vägg som stöder dem underifrån, tillämpas hastigheten för 100 % överhäng." +"Till exempel, när perimetrarna hänger över till 100% utan någon vägg som stöder dem underifrån, tillämpas hastigheten för 75% överhäng, begränsad av bridge-hastigheten." msgid "mm/s or %" msgstr "mm/s eller %." @@ -16711,11 +16846,11 @@ msgstr "mm/s eller %." msgid "" "Speed of the externally visible bridge extrusions.\n" "\n" -"In addition, if Slow down for curled perimeters is disabled or Classic overhang mode is enabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." +"In addition, if Slow down for curled perimeters is disabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." msgstr "" "Hastighet för de externt synliga bridge-extruderingarna.\n" "\n" -"Om Sakta ner för uppböjda perimetrar är avaktiverat eller Klassiskt överhängsläge är aktiverat är detta dessutom utskriftshastigheten för överhängsväggar som har stöd på mindre än 13 %, oavsett om de ingår i en bridge eller ett överhäng." +"Om Sakta ner för uppböjda perimetrar är avaktiverat är detta dessutom utskriftshastigheten för överhängsväggar som har stöd på mindre än 13%, oavsett om de ingår i en bridge eller ett överhäng." # AI Translated msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%." @@ -17327,8 +17462,8 @@ msgid "Small perimeters" msgstr "Små perimetrar" # AI Translated -msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above. Set to zero for auto." -msgstr "Den här separata inställningen påverkar hastigheten för perimetrar med radie <= small_perimeter_threshold (oftast hål). Om den anges i procent (till exempel 80 %) beräknas den utifrån inställningen för ytterväggshastighet ovan. Sätt till noll för automatiskt." +msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above." +msgstr "Den här separata inställningen påverkar hastigheten för perimetrar med radie <= small_perimeter_threshold (oftast hål). Om den anges i procent (till exempel 80%) beräknas den utifrån inställningen för hastigheten för yttre vägg ovan." # AI Translated msgid "Small perimeters threshold" @@ -17342,8 +17477,8 @@ msgid "Small support perimeters" msgstr "Små supportperimetrar" # AI Translated -msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above. Set to zero for auto." -msgstr "Samma som \"Små perimetrar\", men för support. Den här separata inställningen påverkar supporthastigheten för områden <= `small_support_perimeter_threshold`. Om den anges i procent (till exempel 80 %) beräknas den utifrån inställningen för hastighet för support eller supportens kontaktyta ovan. Sätt till noll för automatiskt." +msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above." +msgstr "Samma som \"Små perimetrar\", men för support. Den här separata inställningen påverkar supporthastigheten för områden <= `small_support_perimeter_threshold`. Om den anges i procent (till exempel 80%) beräknas den utifrån inställningen för hastighet för support eller support kontaktyta ovan." # AI Translated msgid "Small support perimeters threshold" @@ -17363,7 +17498,7 @@ msgid "" "\n" "Use Inner/Outer for best overhangs. This is because the overhanging walls can adhere to a neighbouring perimeter while printing. However, this option results in slightly reduced surface quality as the external perimeter is deformed by being squashed to the internal perimeter.\n" "\n" -"Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended against the Outer/Inner option in most cases.\n" +"Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended over the Outer/Inner option in most cases.\n" "\n" "Use Outer/Inner for the same external wall quality and dimensional accuracy benefits of Inner/Outer/Inner option. However, the Z seams will appear less consistent as the first extrusion of a new layer starts on a visible surface." msgstr "" @@ -18452,14 +18587,16 @@ msgstr "Första lagerhöjd" msgid "Height of the first layer. Making the first layer height thicker can improve build plate adhesion." msgstr "Första lagerhöjd. Högre första lager kan förbättra objektets fäste på byggplattan" -msgid "This is the speed for the first layer except for solid infill sections." -msgstr "Hastigheten för det första lagret förutom för solida ifyllnads sektioner" +# AI Translated +msgid "This is the speed for the walls and brim of the first layer." +msgstr "Detta är hastigheten för väggarna och brimen i det första lagret." msgid "First layer infill" msgstr "Första lager ifyllnad" -msgid "This is the speed for solid infill parts of the first layer." -msgstr "Hastigheten för fasta ifyllnadsdelar av det första lagret" +# AI Translated +msgid "This is the speed for the first layer except for walls and brim, such as infill, gap fill and support." +msgstr "Detta är hastigheten för det första lagret förutom väggar och brim, till exempel ifyllnad, gap fyllning och support." # AI Translated msgid "First layer travel speed" @@ -19275,8 +19412,8 @@ msgstr "Ifyllnad/Vägg överlapp" # AI Translated #, no-c-format, no-boost-format -msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to line width of sparse infill. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." -msgstr "Detta gör att ifyllnads ytan förstoras något så att den överlappar väggarna för bättre bindning. Procentvärdet är relativt linjebredden för sparsam ifyllnad. Ställ in detta värde på ~10-15 % för att minimera risken för överextrudering och materialansamling som ger ojämna toppytor." +msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to the inner wall line width. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." +msgstr "Detta gör att ifyllnadsytan förstoras något så att den överlappar väggarna för bättre bindning. Procentvärdet är relativt den inre väggens linjebredd. Ställ in detta värde på ~10-15% för att minimera risken för överextrudering och materialansamling som ger ojämna toppytor." # AI Translated msgid "Top/Bottom solid infill/wall overlap" @@ -19284,8 +19421,8 @@ msgstr "Överlappning mellan övre/undre solid ifyllnad och vägg" # AI Translated #, no-c-format, no-boost-format -msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to line width of sparse infill." -msgstr "Området med övre solid ifyllnad förstoras något så att det överlappar väggen för bättre bindning och för att minimera synliga nålhål där den övre ifyllnaden möter väggarna. Ett värde på 25–30 % är en bra utgångspunkt för att minimera nålhål. Procentvärdet är relativt linjebredden för sparsam ifyllnad." +msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to the inner wall line width." +msgstr "Området med övre solid ifyllnad förstoras något så att det överlappar väggen för bättre bindning och för att minimera synliga nålhål där den övre ifyllnaden möter väggarna. Ett värde på 25-30% är en bra utgångspunkt för att minimera nålhål. Procentvärdet är relativt den inre väggens linjebredd." msgid "This is the speed for internal sparse infill." msgstr "Hastighet för sparsam ifyllnad" @@ -19317,8 +19454,8 @@ msgid "Interlocking depth of a segmented region" msgstr "Sammanhängande djup i en segmenterad region" # AI Translated -msgid "Interlocking depth of a segmented region. It will be ignored if \"mmu_segmented_region_max_width\" is zero or if \"mmu_segmented_region_interlocking_depth\" is bigger than \"mmu_segmented_region_max_width\". Zero disables this feature." -msgstr "Sammanflätningsdjup för ett segmenterat område. Det ignoreras om \"mmu_segmented_region_max_width\" är noll eller om \"mmu_segmented_region_interlocking_depth\" är större än \"mmu_segmented_region_max_width\". Noll avaktiverar funktionen." +msgid "Interlocking depth of a segmented region. On every other layer, the segmented region is limited to this depth. It will be ignored if \"interlocking_beam\" is enabled. Zero disables this feature." +msgstr "Sammanhängande djup i en segmenterad region. På vartannat lager är den segmenterade regionen begränsad till detta djup. Ignoreras om \"interlocking_beam\" är aktiverat. Noll inaktiverar denna funktion." # AI Translated msgid "Use beam interlocking" @@ -19445,11 +19582,11 @@ msgstr "Vinkel för minskad vägghöjd" # AI Translated msgid "" "Reduce the height of top-surface perimeters to match the model edge height.\n" -"Affects perimeters with a slope less than this angle (degrees).\n" +"Affects perimeters with a slope greater than this angle (degrees).\n" "A reasonable value is 35. Set to 0 to disable." msgstr "" "Minska höjden på perimetrar vid ovansidor så att de matchar modellens kanthöjd.\n" -"Påverkar perimetrar med en lutning mindre än den här vinkeln (grader).\n" +"Påverkar perimetrar med en lutning större än den här vinkeln (grader).\n" "Ett rimligt värde är 35. Sätt till 0 för att avaktivera." # AI Translated @@ -20558,7 +20695,7 @@ msgid "Use scarf joint for inner walls as well." msgstr "Använd snedskarv även för innerväggar." # AI Translated -msgid "Role base wipe speed" +msgid "Role based wipe speed" msgstr "Avtorkningshastighet efter extruderingstyp" # AI Translated @@ -20662,13 +20799,11 @@ msgstr "Dragskydd" msgid "" "A draft shield is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft. It is usually needed only with open frame printers, i.e. without an enclosure.\n" "\n" -"Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used.\n" -"Note: With the draft shield active, the skirt will be printed at skirt distance from the object. Therefore, if brims are active it may intersect with them. To avoid this, increase the skirt distance value.\n" +"Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used." msgstr "" "Ett dragskydd är användbart för att skydda en ABS- eller ASA-utskrift från att slå sig och lossna från byggplattan på grund av luftdrag. Det behövs oftast bara med öppna skrivare, det vill säga utan kåpa.\n" "\n" -"Aktiverat = skirten är lika hög som det högsta utskrivna objektet. Annars används 'Skirt-höjd'.\n" -"Obs! Med dragskyddet aktivt skrivs skirten ut på skirt-avstånd från objektet. Om brim är aktiverat kan den därför skära in i det. Öka värdet för skirt-avstånd för att undvika detta.\n" +"Aktiverat = skirten är lika hög som det högsta utskrivna objektet. Annars används 'Skirt höjd'." # AI Translated msgid "Enabled" @@ -21912,23 +22047,23 @@ msgstr "Maximal utskriftshastighet för prime tornet" msgid "" "The maximum print speed when purging in the wipe tower and printing the wipe tower sparse layers. When purging, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" "\n" -"When printing the sparse layers, if the internal perimeter speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +"When printing the sparse layers, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" "\n" "Increasing this speed may affect the tower's stability as well as increase the force with which the nozzle collides with any blobs that may have formed on the wipe tower.\n" "\n" "Before increasing this parameter beyond the default of 90 mm/s, make sure your printer can reliably bridge at the increased speeds and that ooze when tool changing is well controlled.\n" "\n" -"For the wipe tower external perimeters the internal perimeter speed is used regardless of this setting." +"For the wipe tower external perimeters the internal perimeter speed is used, also limited by this setting." msgstr "" "Den maximala utskriftshastigheten vid rensning i prime tornet och vid utskrift av tornets glesa lager. Vid rensning används den lägsta av hastigheten för sparsam ifyllnad och den hastighet som beräknas från filamentets max volymetriska hastighet, om någon av dem är lägre.\n" "\n" -"Vid utskrift av de glesa lagren används den lägsta av innerperimeterns hastighet och den hastighet som beräknas från filamentets max volymetriska hastighet, om någon av dem är lägre.\n" +"Vid utskrift av de glesa lagren används den lägsta av hastigheten för sparsam ifyllnad och den hastighet som beräknas från filamentets max volymetriska hastighet, om någon av dem är lägre.\n" "\n" "Om du ökar hastigheten kan tornets stabilitet påverkas, liksom kraften med vilken nozzeln kolliderar med eventuella klumpar som bildats på prime tornet.\n" "\n" "Innan du ökar parametern över standardvärdet 90 mm/s bör du kontrollera att din skrivare klarar bridging tillförlitligt vid de högre hastigheterna och att dropp vid verktygsbyten är väl kontrollerat.\n" "\n" -"För prime tornets ytterperimetrar används innerperimeterns hastighet oavsett den här inställningen." +"För prime tornets ytterperimetrar används innerperimeterns hastighet, även den begränsad av den här inställningen." # AI Translated msgid "Wall type" @@ -21937,14 +22072,14 @@ msgstr "Väggtyp" # AI Translated msgid "" "Wipe tower outer wall type.\n" -"1. Rectangle: The default wall type, a rectangle with fixed width and height.\n" +"1. Rectangle: A rectangle with fixed width and height.\n" "2. Cone: A cone with a fillet at the bottom to help stabilize the wipe tower.\n" -"3. Rib: Adds four ribs to the tower wall for enhanced stability." +"3. Rib: The default wall type, which adds four ribs to the tower wall for enhanced stability." msgstr "" -"Yttervägg för prime tornet.\n" -"1. Rektangel: Standardväggtypen, en rektangel med fast bredd och höjd.\n" +"Typ av yttre vägg för prime tornet.\n" +"1. Rektangel: En rektangel med fast bredd och höjd.\n" "2. Kon: En kon med en rundning nedtill som hjälper till att stabilisera prime tornet.\n" -"3. Ribba: Lägger till fyra ribbor på tornets vägg för ökad stabilitet." +"3. Ribba: Standardväggtypen, som lägger till fyra ribbor på tornets vägg för ökad stabilitet." msgid "Rectangle" msgstr "Rektangel" @@ -22059,8 +22194,8 @@ msgid "Extra flow for purging" msgstr "Extra flöde för rensning" # AI Translated -msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker or narrower than they normally would be. The spacing is adjusted automatically." -msgstr "Extra flöde som används för rensningslinjerna på prime tornet. Det gör rensningslinjerna tjockare eller smalare än de normalt skulle vara. Avståndet justeras automatiskt." +msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker than they normally would be. The spacing is adjusted automatically." +msgstr "Extra flöde som används för rensningslinjerna på prime tornet. Det gör rensningslinjerna tjockare än de normalt skulle vara. Avståndet justeras automatiskt." # AI Translated msgid "Idle temperature" @@ -22195,13 +22330,13 @@ msgstr "Minsta vägglängd" # AI Translated msgid "" -"Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. Higher values remove more and longer walls.\n" +"Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. The value is a multiple of the wall width. Higher values remove more and longer walls.\n" "\n" -"NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the Advanced settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." +"NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the 'Walls and surfaces' settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." msgstr "" -"Justera det här värdet för att förhindra att korta, oslutna väggar skrivs ut, vilket kan öka utskriftstiden. Högre värden tar bort fler och längre väggar.\n" +"Justera det här värdet för att förhindra att korta, oslutna väggar skrivs ut, vilket kan öka utskriftstiden. Värdet är en multipel av väggbredden. Högre värden tar bort fler och längre väggar.\n" "\n" -"OBS! Undersidor och ovansidor påverkas inte av värdet, för att undvika synliga gap på modellens utsida. Justera 'Tröskel för en vägg' i de avancerade inställningarna nedan för att ändra känsligheten för vad som räknas som en ovansida. 'Tröskel för en vägg' visas bara om den här inställningen är satt över standardvärdet 0,5, eller om ovansidor med en vägg är aktiverat." +"OBS! Undersidor och ovansidor påverkas inte av värdet, för att undvika synliga gap på modellens utsida. Justera 'Tröskel för en vägg' i inställningarna 'Väggar och ytor' nedan för att ändra känsligheten för vad som räknas som en ovansida. 'Tröskel för en vägg' visas bara om den här inställningen är satt över standardvärdet 0,5, eller om ovansidor med en vägg är aktiverade." # AI Translated msgid "Maximum wall resolution" @@ -26512,10 +26647,6 @@ msgstr "Aktivera smart filamenttilldelning: Tilldela ett filament till flera noz msgid "File Saving" msgstr "Filsparande" -# AI Translated -msgid "Don't remind me again" -msgstr "Påminn mig inte igen" - # AI Translated msgid "No further pop-up will appear. You can reopen it in 'Preferences'" msgstr "Inga fler popup-fönster visas. Du kan öppna det igen i 'Inställningar'" @@ -37199,6 +37330,183 @@ msgstr "" "Undvik vridning\n" "Visste du att när du skriver ut material som är benägna att vrida, såsom ABS, kan en lämplig ökning av värmebäddens temperatur minska sannolikheten för vridning?" +# AI Translated +#~ msgid "" +#~ "Line width of the Bridge. If expressed as a %, it will be computed over the nozzle diameter.\n" +#~ "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" +#~ "\n" +#~ "The maximum value is 100% or the nozzle diameter.\n" +#~ "If set to 0, the line width will match the Internal solid infill width." +#~ msgstr "" +#~ "Linjebredd för bridgen. Om värdet anges i % beräknas det utifrån nozzeldiametern.\n" +#~ "Rekommenderas att användas med högre bridge-densitet eller bridge-flödesförhållande.\n" +#~ "\n" +#~ "Maxvärdet är 100 % eller nozzeldiametern.\n" +#~ "Om det sätts till 0 motsvarar linjebredden bredden på inre solid ifyllnad." + +# AI Translated +#, no-c-format, no-boost-format +#~ msgid "" +#~ "Enable this option to slow down printing in areas where perimeters may have curled upwards.\n" +#~ "For example, additional slowdown will be applied when printing overhangs on sharp corners like the front of the Benchy hull, reducing curling which compounds over multiple layers.\n" +#~ "\n" +#~ "It is generally recommended to have this option switched on unless your printer cooling is powerful enough or the print speed is slow enough that perimeter curling does not happen. \n" +#~ "If printing with a high external perimeter speed, this parameter may introduce wall artifacts when slowing down, due to the potentially large variance in print speeds causing the extruder to be unable to keep up with the requested flow change.\n" +#~ "Root cause of these artifacts is most likely PA tuning being slightly off, especially when combined with a high PA smooth time.\n" +#~ "\n" +#~ "Recommendations when enabling this option:\n" +#~ "1. Reduce Pressure Advance smooth time to 0.015 - 0.02 so the extruder reacts quickly to the speed changes.\n" +#~ "2. Increase the minimum print speeds to limit the magnitude of the slowdown and reduce the variance between fast and slow segments.\n" +#~ "3. If artifacts still appear, enable Extrusion Rate Smoothing (ERS) to further smooth the flow transitions.\n" +#~ "\n" +#~ "Note: When this option is enabled, overhang perimeters are treated like overhangs, meaning the overhang speed is applied even if the overhanging perimeter is part of a bridge.\n" +#~ "For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 100% overhang speed will be applied." +#~ msgstr "" +#~ "Aktivera det här alternativet för att sakta ner utskriften i områden där perimetrar kan ha böjt sig uppåt.\n" +#~ "Till exempel tillämpas ytterligare nedsaktning vid utskrift av överhäng i skarpa hörn, som fören på en Benchy, vilket minskar uppböjning som annars förvärras över flera lager.\n" +#~ "\n" +#~ "Det rekommenderas i allmänhet att ha det här alternativet påslaget, om inte skrivarens kylning är tillräckligt kraftfull eller utskriftshastigheten tillräckligt låg för att perimetrarna inte ska böja sig. \n" +#~ "Om du skriver ut med hög hastighet på ytterperimetern kan den här parametern ge väggartefakter vid nedsaktningen, eftersom den potentiellt stora variationen i utskriftshastighet gör att extrudern inte hinner med den begärda flödesändringen.\n" +#~ "Den bakomliggande orsaken till dessa artefakter är sannolikt att PA-inställningen är något fel, särskilt i kombination med lång PA-utjämningstid.\n" +#~ "\n" +#~ "Rekommendationer när du aktiverar det här alternativet:\n" +#~ "1. Minska Pressure Advance-utjämningstiden till 0,015–0,02 så att extrudern reagerar snabbt på hastighetsändringarna.\n" +#~ "2. Öka minimihastigheterna för utskrift för att begränsa nedsaktningens omfattning och minska variationen mellan snabba och långsamma sträckor.\n" +#~ "3. Om artefakter fortfarande syns, aktivera Extrusion Rate Smoothing (ERS) för att jämna ut flödesövergångarna ytterligare.\n" +#~ "\n" +#~ "Obs! När det här alternativet är aktiverat behandlas överhängsperimetrar som överhäng, vilket innebär att överhängshastigheten tillämpas även om den överhängande perimetern är en del av en bridge.\n" +#~ "Till exempel, när perimetrarna hänger över till 100 % utan någon vägg som stöder dem underifrån, tillämpas hastigheten för 100 % överhäng." + +# AI Translated +#~ msgid "" +#~ "Speed of the externally visible bridge extrusions.\n" +#~ "\n" +#~ "In addition, if Slow down for curled perimeters is disabled or Classic overhang mode is enabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." +#~ msgstr "" +#~ "Hastighet för de externt synliga bridge-extruderingarna.\n" +#~ "\n" +#~ "Om Sakta ner för uppböjda perimetrar är avaktiverat eller Klassiskt överhängsläge är aktiverat är detta dessutom utskriftshastigheten för överhängsväggar som har stöd på mindre än 13 %, oavsett om de ingår i en bridge eller ett överhäng." + +# AI Translated +#~ msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above. Set to zero for auto." +#~ msgstr "Den här separata inställningen påverkar hastigheten för perimetrar med radie <= small_perimeter_threshold (oftast hål). Om den anges i procent (till exempel 80 %) beräknas den utifrån inställningen för ytterväggshastighet ovan. Sätt till noll för automatiskt." + +# AI Translated +#~ msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above. Set to zero for auto." +#~ msgstr "Samma som \"Små perimetrar\", men för support. Den här separata inställningen påverkar supporthastigheten för områden <= `small_support_perimeter_threshold`. Om den anges i procent (till exempel 80 %) beräknas den utifrån inställningen för hastighet för support eller supportens kontaktyta ovan. Sätt till noll för automatiskt." + +# AI Translated +#~ msgid "" +#~ "Print sequence of the internal (inner) and external (outer) walls.\n" +#~ "\n" +#~ "Use Inner/Outer for best overhangs. This is because the overhanging walls can adhere to a neighbouring perimeter while printing. However, this option results in slightly reduced surface quality as the external perimeter is deformed by being squashed to the internal perimeter.\n" +#~ "\n" +#~ "Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended against the Outer/Inner option in most cases.\n" +#~ "\n" +#~ "Use Outer/Inner for the same external wall quality and dimensional accuracy benefits of Inner/Outer/Inner option. However, the Z seams will appear less consistent as the first extrusion of a new layer starts on a visible surface." +#~ msgstr "" +#~ "Utskriftssekvens för de inre och yttre väggarna.\n" +#~ "\n" +#~ "Använd Inre/Yttre för bästa överhäng. Det beror på att de överhängande väggarna kan fästa mot en intilliggande perimeter under utskriften. Alternativet ger dock något sämre ytkvalitet, eftersom ytterperimetern deformeras när den trycks mot innerperimetern.\n" +#~ "\n" +#~ "Använd Inre/Yttre/Inre för bästa yttre ytfinish och måttnoggrannhet, eftersom ytterväggen skrivs ut utan att störas av en innerperimeter. Överhängsprestandan blir dock sämre eftersom det inte finns någon innerperimeter att skriva ytterväggen mot. Alternativet kräver minst 3 väggar för att vara effektivt, eftersom det först skriver ut de inre väggarna från den 3:e perimetern och utåt, sedan ytterperimetern och slutligen den första innerperimetern. Detta alternativ rekommenderas framför Yttre/Inre i de flesta fall.\n" +#~ "\n" +#~ "Använd Yttre/Inre för samma fördelar med ytterväggskvalitet och måttnoggrannhet som Inre/Yttre/Inre. Z-sömmarna blir dock mindre konsekventa, eftersom den första extruderingen på ett nytt lager börjar på en synlig yta." + +#~ msgid "This is the speed for the first layer except for solid infill sections." +#~ msgstr "Hastigheten för det första lagret förutom för solida ifyllnads sektioner" + +#~ msgid "This is the speed for solid infill parts of the first layer." +#~ msgstr "Hastigheten för fasta ifyllnadsdelar av det första lagret" + +# AI Translated +#, no-c-format, no-boost-format +#~ msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to line width of sparse infill. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." +#~ msgstr "Detta gör att ifyllnads ytan förstoras något så att den överlappar väggarna för bättre bindning. Procentvärdet är relativt linjebredden för sparsam ifyllnad. Ställ in detta värde på ~10-15 % för att minimera risken för överextrudering och materialansamling som ger ojämna toppytor." + +# AI Translated +#, no-c-format, no-boost-format +#~ msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to line width of sparse infill." +#~ msgstr "Området med övre solid ifyllnad förstoras något så att det överlappar väggen för bättre bindning och för att minimera synliga nålhål där den övre ifyllnaden möter väggarna. Ett värde på 25–30 % är en bra utgångspunkt för att minimera nålhål. Procentvärdet är relativt linjebredden för sparsam ifyllnad." + +# AI Translated +#~ msgid "Interlocking depth of a segmented region. It will be ignored if \"mmu_segmented_region_max_width\" is zero or if \"mmu_segmented_region_interlocking_depth\" is bigger than \"mmu_segmented_region_max_width\". Zero disables this feature." +#~ msgstr "Sammanflätningsdjup för ett segmenterat område. Det ignoreras om \"mmu_segmented_region_max_width\" är noll eller om \"mmu_segmented_region_interlocking_depth\" är större än \"mmu_segmented_region_max_width\". Noll avaktiverar funktionen." + +# AI Translated +#~ msgid "" +#~ "Reduce the height of top-surface perimeters to match the model edge height.\n" +#~ "Affects perimeters with a slope less than this angle (degrees).\n" +#~ "A reasonable value is 35. Set to 0 to disable." +#~ msgstr "" +#~ "Minska höjden på perimetrar vid ovansidor så att de matchar modellens kanthöjd.\n" +#~ "Påverkar perimetrar med en lutning mindre än den här vinkeln (grader).\n" +#~ "Ett rimligt värde är 35. Sätt till 0 för att avaktivera." + +# AI Translated +#~ msgid "Role base wipe speed" +#~ msgstr "Avtorkningshastighet efter extruderingstyp" + +# AI Translated +#~ msgid "" +#~ "A draft shield is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft. It is usually needed only with open frame printers, i.e. without an enclosure.\n" +#~ "\n" +#~ "Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used.\n" +#~ "Note: With the draft shield active, the skirt will be printed at skirt distance from the object. Therefore, if brims are active it may intersect with them. To avoid this, increase the skirt distance value.\n" +#~ msgstr "" +#~ "Ett dragskydd är användbart för att skydda en ABS- eller ASA-utskrift från att slå sig och lossna från byggplattan på grund av luftdrag. Det behövs oftast bara med öppna skrivare, det vill säga utan kåpa.\n" +#~ "\n" +#~ "Aktiverat = skirten är lika hög som det högsta utskrivna objektet. Annars används 'Skirt-höjd'.\n" +#~ "Obs! Med dragskyddet aktivt skrivs skirten ut på skirt-avstånd från objektet. Om brim är aktiverat kan den därför skära in i det. Öka värdet för skirt-avstånd för att undvika detta.\n" + +# AI Translated +#~ msgid "" +#~ "The maximum print speed when purging in the wipe tower and printing the wipe tower sparse layers. When purging, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +#~ "\n" +#~ "When printing the sparse layers, if the internal perimeter speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +#~ "\n" +#~ "Increasing this speed may affect the tower's stability as well as increase the force with which the nozzle collides with any blobs that may have formed on the wipe tower.\n" +#~ "\n" +#~ "Before increasing this parameter beyond the default of 90 mm/s, make sure your printer can reliably bridge at the increased speeds and that ooze when tool changing is well controlled.\n" +#~ "\n" +#~ "For the wipe tower external perimeters the internal perimeter speed is used regardless of this setting." +#~ msgstr "" +#~ "Den maximala utskriftshastigheten vid rensning i prime tornet och vid utskrift av tornets glesa lager. Vid rensning används den lägsta av hastigheten för sparsam ifyllnad och den hastighet som beräknas från filamentets max volymetriska hastighet, om någon av dem är lägre.\n" +#~ "\n" +#~ "Vid utskrift av de glesa lagren används den lägsta av innerperimeterns hastighet och den hastighet som beräknas från filamentets max volymetriska hastighet, om någon av dem är lägre.\n" +#~ "\n" +#~ "Om du ökar hastigheten kan tornets stabilitet påverkas, liksom kraften med vilken nozzeln kolliderar med eventuella klumpar som bildats på prime tornet.\n" +#~ "\n" +#~ "Innan du ökar parametern över standardvärdet 90 mm/s bör du kontrollera att din skrivare klarar bridging tillförlitligt vid de högre hastigheterna och att dropp vid verktygsbyten är väl kontrollerat.\n" +#~ "\n" +#~ "För prime tornets ytterperimetrar används innerperimeterns hastighet oavsett den här inställningen." + +# AI Translated +#~ msgid "" +#~ "Wipe tower outer wall type.\n" +#~ "1. Rectangle: The default wall type, a rectangle with fixed width and height.\n" +#~ "2. Cone: A cone with a fillet at the bottom to help stabilize the wipe tower.\n" +#~ "3. Rib: Adds four ribs to the tower wall for enhanced stability." +#~ msgstr "" +#~ "Yttervägg för prime tornet.\n" +#~ "1. Rektangel: Standardväggtypen, en rektangel med fast bredd och höjd.\n" +#~ "2. Kon: En kon med en rundning nedtill som hjälper till att stabilisera prime tornet.\n" +#~ "3. Ribba: Lägger till fyra ribbor på tornets vägg för ökad stabilitet." + +# AI Translated +#~ msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker or narrower than they normally would be. The spacing is adjusted automatically." +#~ msgstr "Extra flöde som används för rensningslinjerna på prime tornet. Det gör rensningslinjerna tjockare eller smalare än de normalt skulle vara. Avståndet justeras automatiskt." + +# AI Translated +#~ msgid "" +#~ "Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. Higher values remove more and longer walls.\n" +#~ "\n" +#~ "NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the Advanced settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." +#~ msgstr "" +#~ "Justera det här värdet för att förhindra att korta, oslutna väggar skrivs ut, vilket kan öka utskriftstiden. Högre värden tar bort fler och längre väggar.\n" +#~ "\n" +#~ "OBS! Undersidor och ovansidor påverkas inte av värdet, för att undvika synliga gap på modellens utsida. Justera 'Tröskel för en vägg' i de avancerade inställningarna nedan för att ändra känsligheten för vad som räknas som en ovansida. 'Tröskel för en vägg' visas bara om den här inställningen är satt över standardvärdet 0,5, eller om ovansidor med en vägg är aktiverat." + # AI Translated #, boost-format #~ msgid "Split into %1% part" diff --git a/localization/i18n/th/OrcaSlicer_th.po b/localization/i18n/th/OrcaSlicer_th.po index a9ed38226a..50a8352fed 100644 --- a/localization/i18n/th/OrcaSlicer_th.po +++ b/localization/i18n/th/OrcaSlicer_th.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-10-13 09:55-0300\n" +"POT-Creation-Date: 2026-10-14 10:04-0300\n" "PO-Revision-Date: 2026-06-19 13:40+0700\n" "Last-Translator: Icezaza\n" "Language-Team: Thai\n" @@ -1989,13 +1989,14 @@ msgstr "คำเตือน: โปรดเลือกคุณสมบั msgid "Warning: please select Point's or Circle's feature." msgstr "คำเตือน: โปรดเลือกคุณลักษณะของจุดหรือวงกลม" +# AI Translated msgid "" "It is recommended to assemble objects first,\n" "because they are restricted to the bed \n" "and only parts can be lifted." msgstr "" "แนะนำให้ประกอบวัตถุก่อน,\n" -"เนื่องจากวัตถุถูกจำกัดอยู่บนฐานรองพิมพ์ \n" +"เนื่องจากวัตถุถูกจำกัดอยู่บนฐานพิมพ์ \n" "และยกได้เฉพาะชิ้นส่วนเท่านั้น" msgid "Face and face assembly" @@ -2425,6 +2426,66 @@ msgstr "ข้อจำกัดปลั๊กอินเครือข่า msgid "Privacy Policy Update" msgstr "การปรับปรุงนโยบายความเป็นส่วนตัว" +# AI Translated +msgid "All your filament presets are available on the printers they were made for." +msgstr "พรีเซ็ตเส้นพลาสติกทั้งหมดของคุณใช้งานได้บนเครื่องพิมพ์ที่พรีเซ็ตนั้นถูกสร้างมาเพื่อใช้งานด้วย" + +# AI Translated +msgid "Migrate Filament Presets" +msgstr "ย้ายพรีเซ็ตเส้นพลาสติก" + +# AI Translated +msgid "" +"OrcaSlicer 2.5.0 restructured many system filament presets to fix incorrect profiles and prepare for future features. As a result, the presets below no longer show on some printers they were made for. Sorry for the trouble; this is a one-time fix.\n" +"\n" +"Add those printers back to your presets now? Your presets are backed up first. You can also do this later from Help > Migrate Filament Presets." +msgstr "" +"OrcaSlicer 2.5.0 ปรับโครงสร้างพรีเซ็ตเส้นพลาสติกของระบบหลายรายการ เพื่อแก้ไขโปรไฟล์ที่ไม่ถูกต้องและเตรียมพร้อมสำหรับฟีเจอร์ในอนาคต ส่งผลให้พรีเซ็ตด้านล่างไม่แสดงบนเครื่องพิมพ์บางรุ่นที่พรีเซ็ตนั้นถูกสร้างมาเพื่อใช้งานด้วยอีกต่อไป ขออภัยในความไม่สะดวก นี่เป็นการแก้ไขเพียงครั้งเดียว\n" +"\n" +"ต้องการเพิ่มเครื่องพิมพ์เหล่านั้นกลับเข้าไปในพรีเซ็ตของคุณตอนนี้หรือไม่ พรีเซ็ตของคุณจะถูกสำรองไว้ก่อน คุณยังทำภายหลังได้จาก ช่วยเหลือ > ย้ายพรีเซ็ตเส้นพลาสติก" + +# AI Translated +#, boost-format +msgid "%1% (based on %2%)" +msgstr "%1% (อิงจาก %2%)" + +msgid "Don't remind me again" +msgstr "ไม่ต้องเตือนฉันอีก" + +# AI Translated +msgid "Your presets could not be backed up, so they were not migrated." +msgstr "ไม่สามารถสำรองพรีเซ็ตของคุณได้ จึงไม่ได้ย้ายพรีเซ็ตเหล่านั้น" + +# AI Translated +msgid "The user presets folder could not be locked, so nothing was migrated. Another OrcaSlicer instance may be saving presets; try again later from Help > Migrate Filament Presets." +msgstr "ไม่สามารถล็อกโฟลเดอร์พรีเซ็ตของผู้ใช้ได้ จึงไม่ได้ย้ายสิ่งใดเลย อาจมีอินสแตนซ์อื่นของ OrcaSlicer กำลังบันทึกพรีเซ็ตอยู่ โปรดลองอีกครั้งในภายหลังจาก ช่วยเหลือ > ย้ายพรีเซ็ตเส้นพลาสติก" + +# AI Translated +#, boost-format +msgid "" +"Your filament presets could not be migrated. A backup of your presets was saved to:\n" +"%1%" +msgstr "" +"ไม่สามารถย้ายพรีเซ็ตเส้นพลาสติกของคุณได้ บันทึกข้อมูลสำรองของพรีเซ็ตไว้ที่:\n" +"%1%" + +# AI Translated +#, boost-format +msgid "" +"Your filament presets were migrated. Select them again in the filament list where you used them.\n" +"\n" +"A backup of your presets was saved to:\n" +"%1%" +msgstr "" +"ย้ายพรีเซ็ตเส้นพลาสติกของคุณแล้ว โปรดเลือกพรีเซ็ตเหล่านั้นอีกครั้งในรายการเส้นพลาสติกที่คุณเคยใช้\n" +"\n" +"บันทึกข้อมูลสำรองของพรีเซ็ตไว้ที่:\n" +"%1%" + +# AI Translated +msgid "These presets could not be migrated:" +msgstr "ไม่สามารถย้ายพรีเซ็ตเหล่านี้ได้:" + #, c-format, boost-format msgid "your Orca Cloud profile (user ID: \"%s\")" msgstr "โปรไฟล์ Orca Cloud ของคุณ (รหัสผู้ใช้: \"%s\")" @@ -2446,8 +2507,9 @@ msgstr "" "คุณต้องการย้ายไปยังโปรไฟล์ OrcaCloud ของคุณหรือไม่?\n" "การดำเนินการนี้จะคัดลอกค่าที่ตั้งล่วงหน้าของคุณเพื่อให้สามารถใช้งานได้ภายใต้บัญชีใหม่ของคุณ" +# AI Translated msgid "Migrate User Presets" -msgstr "ย้ายค่าที่ตั้งไว้ของผู้ใช้" +msgstr "ย้ายพรีเซ็ตของผู้ใช้" #, c-format, boost-format msgid "" @@ -2624,20 +2686,24 @@ msgstr "ความเร็ว" msgid "Strength" msgstr "ความแข็งแรง" +# AI Translated msgid "Top solid layers" -msgstr "ชั้นทึบด้านบน" +msgstr "เลเยอร์ทึบด้านบน" +# AI Translated msgid "Top minimum shell thickness" -msgstr "ความหนาเปลือกด้านบนขั้นต่ำ" +msgstr "ความหนาผนังด้านบนขั้นต่ำ" msgid "Top Surface Density" msgstr "ความหนาแน่นพื้นผิวด้านบน" +# AI Translated msgid "Bottom solid layers" -msgstr "ชั้นทึบด้านล่าง" +msgstr "เลเยอร์ทึบด้านล่าง" +# AI Translated msgid "Bottom minimum shell thickness" -msgstr "ความหนาเปลือกด้านล่างขั้นต่ำ" +msgstr "ความหนาผนังด้านล่างขั้นต่ำ" msgid "Bottom Surface Density" msgstr "ความหนาแน่นพื้นผิวด้านล่าง" @@ -2645,8 +2711,9 @@ msgstr "ความหนาแน่นพื้นผิวด้านล่ msgid "Ironing" msgstr "รีดผิว" +# AI Translated msgid "Fuzzy skin" -msgstr "ผิวฟัซซี (Fuzzy Skin)" +msgstr "ผิวฟัซซี" msgid "Extruders" msgstr "ชุดดันเส้น" @@ -3140,6 +3207,62 @@ msgstr "(สีที่หายไป)" msgid "Center" msgstr "กึ่งกลาง" +# AI Translated +msgid "Distribute left-right" +msgstr "กระจายในแนวซ้าย-ขวา" + +# AI Translated +msgid "Distribute front-back" +msgstr "กระจายในแนวหน้า-หลัง" + +# AI Translated +msgid "Distribute top-bottom" +msgstr "กระจายในแนวบน-ล่าง" + +# AI Translated +msgid "Align left" +msgstr "จัดชิดซ้าย" + +# AI Translated +msgid "Align left-right center" +msgstr "จัดกึ่งกลางซ้าย-ขวา" + +# AI Translated +msgid "Align right" +msgstr "จัดชิดขวา" + +# AI Translated +msgid "Align front" +msgstr "จัดชิดด้านหน้า" + +# AI Translated +msgid "Align front-back center" +msgstr "จัดกึ่งกลางหน้า-หลัง" + +# AI Translated +msgid "Align back" +msgstr "จัดชิดด้านหลัง" + +# AI Translated +msgid "Align bottom" +msgstr "จัดชิดด้านล่าง" + +# AI Translated +msgid "Align top-bottom center" +msgstr "จัดกึ่งกลางบน-ล่าง" + +# AI Translated +msgid "Align top" +msgstr "จัดชิดด้านบน" + +# AI Translated +msgid "Align/Distribute" +msgstr "จัดแนว/กระจาย" + +# AI Translated +msgid "Align and distribute objects" +msgstr "จัดแนวและกระจายวัตถุ" + msgid "Drop" msgstr "วางลงฐานพิมพ์" @@ -3161,8 +3284,9 @@ msgstr "เปลี่ยนเส้นพลาสติก" msgid "Set Filament for selected items" msgstr "ตั้งค่า เส้นพลาสติก สำหรับรายการที่เลือก" +# AI Translated msgid "Automatically snaps the selected object to the build plate." -msgstr "ยึดวัตถุที่เลือกเข้ากับฐานรองพิมพ์โดยอัตโนมัติ" +msgstr "ยึดวัตถุที่เลือกเข้ากับฐานพิมพ์โดยอัตโนมัติ" msgid "Unlock" msgstr "ปลดล็อค" @@ -3374,8 +3498,9 @@ msgstr "การตั้งค่าวัตถุที่จะแก้ไ msgid "Part Settings to Modify" msgstr "การตั้งค่าชิ้นส่วนที่จะแก้ไข" +# AI Translated msgid "Layer Range Settings to Modify" -msgstr "การตั้งค่าช่วงชั้นที่จะแก้ไข" +msgstr "การตั้งค่าช่วงเลเยอร์ที่จะแก้ไข" msgid "Part manipulation" msgstr "การจัดการชิ้นส่วน" @@ -3578,8 +3703,9 @@ msgstr "ป้อน G-code ที่กำหนดเองที่ใช้ msgid "Jump to layer" msgstr "ข้ามไปที่เลเยอร์" +# AI Translated msgid "Please enter the layer number." -msgstr "กรุณากรอกหมายเลขชั้น" +msgstr "กรุณากรอกหมายเลขเลเยอร์" msgid "Add Pause" msgstr "เพิ่มการหยุดชั่วคราว" @@ -3600,8 +3726,9 @@ msgstr "เพิ่มเทมเพลตที่กำหนดเอง" msgid "Insert template custom G-code at the beginning of this layer." msgstr "แทรก G-code ที่กำหนดเองของเทมเพลตที่จุดเริ่มต้นของเลเยอร์นี้" +# AI Translated msgid "Change filament at the beginning of this layer." -msgstr "เปลี่ยนเส้นพลาสติกที่จุดเริ่มต้นของชั้นนี้" +msgstr "เปลี่ยนเส้นพลาสติกที่จุดเริ่มต้นของเลเยอร์นี้" msgid "Delete Pause" msgstr "ลบการหยุดชั่วคราว" @@ -4270,14 +4397,16 @@ msgstr "ไม่มีพื้นผิวที่ถูกต้องสำ msgid "An unexpected error occurred" msgstr "เกิดข้อผิดพลาดที่ไม่คาดคิด" +# AI Translated msgid "Thermal Preconditioning for first layer optimization" -msgstr "การปรับสภาพล่วงหน้าด้วยความร้อนเพื่อการเพิ่มประสิทธิภาพชั้นแรก" +msgstr "การปรับสภาพล่วงหน้าด้วยความร้อนเพื่อการเพิ่มประสิทธิภาพเลเยอร์แรก" msgid "Remaining time: Calculating..." msgstr "เวลาที่เหลืออยู่: กำลังคำนวณ..." +# AI Translated msgid "The heated bed's thermal preconditioning helps optimize the first layer print quality. Printing will start once preconditioning is complete." -msgstr "การปรับสภาพความร้อนล่วงหน้าของฐานพิมพ์อุ่นช่วยปรับคุณภาพการพิมพ์ชั้นแรกให้เหมาะสมที่สุด การพิมพ์จะเริ่มขึ้นเมื่อการปรับสภาพเบื้องต้นเสร็จสิ้น" +msgstr "การปรับสภาพความร้อนล่วงหน้าของฐานพิมพ์อุ่นช่วยปรับคุณภาพการพิมพ์เลเยอร์แรกให้เหมาะสมที่สุด การพิมพ์จะเริ่มขึ้นเมื่อการปรับสภาพเบื้องต้นเสร็จสิ้น" #, c-format, boost-format msgid "Remaining time: %dmin%ds" @@ -5033,11 +5162,12 @@ msgstr "" "ฐานรองชิ้นงานและแนวป้องกันลม (Draft Shield) ใช้ไม่ได้กับเครื่องพิมพ์สายพาน\n" "จึงถูกปิดใช้งานแล้ว" +# AI Translated msgid "" "Layer height too small\n" "It has been reset to 0.2" msgstr "" -"ความสูงของชั้นเล็กเกินไป\n" +"ความสูงเลเยอร์เล็กเกินไป\n" "รีเซ็ตเป็น 0.2" msgid "" @@ -5074,16 +5204,18 @@ msgstr "" "\n" "ค่าจะถูกรีเซ็ตเป็น 0" +# AI Translated msgid "Alternate extra wall doesn't work well when ensure vertical shell thickness is set to All." -msgstr "ผนังเสริมสำรองทำงานได้ไม่ดีเมื่อตั้งค่าความหนาของเปลือกแนวตั้งเป็นทั้งหมด" +msgstr "ผนังเสริมสำรองทำงานได้ไม่ดีเมื่อตั้งค่าความหนาของผนังแนวตั้งเป็นทั้งหมด" +# AI Translated msgid "" "Change these settings automatically?\n" "Yes - Change ensure vertical shell thickness to Moderate and enable alternate extra wall\n" "No - Don't use alternate extra wall" msgstr "" "เปลี่ยนการตั้งค่าเหล่านี้โดยอัตโนมัติหรือไม่\n" -"ใช่ - เปลี่ยนให้แน่ใจว่าความหนาของเปลือกแนวตั้งเป็นปานกลาง และเปิดใช้งานผนังเสริมสำรอง\n" +"ใช่ - เปลี่ยนให้แน่ใจว่าความหนาของผนังแนวตั้งเป็นปานกลาง และเปิดใช้งานผนังเสริมสำรอง\n" "ไม่ - ห้ามใช้ผนังเสริมสำรอง" msgid "" @@ -5108,6 +5240,7 @@ msgstr "" "ใช่ - เก็บ Prime Tower ไว้\n" "ไม่ - คงความสูงของเลเยอร์แบบปรับได้" +# AI Translated msgid "" "Prime tower does not work when Independent Support Layer Height is on.\n" "Which do you want to keep?\n" @@ -5117,7 +5250,7 @@ msgstr "" "Prime Tower ไม่ทำงานเมื่อเปิดความสูงของเลเยอร์รองรับอิสระ\n" "คุณต้องการเก็บอันไหน?\n" "ใช่ - เก็บ Prime Tower ไว้\n" -"ไม่ - รักษาความสูงของชั้นรองรับที่เป็นอิสระ" +"ไม่ - รักษาความสูงของเลเยอร์รองรับที่เป็นอิสระ" msgid "" "seam_slope_start_height needs to be smaller than layer_height.\n" @@ -5134,9 +5267,11 @@ msgstr "" "ความลึกของล็อคควรน้อยกว่าความลึกของผิวหนัง\n" "รีเซ็ตเป็น 50% ของความลึกของผิว" +# AI Translated msgid "Both [Extrusion] and [Combined] modes of Fuzzy Skin require the Arachne Wall Generator to be enabled." -msgstr "ทั้งโหมด [อัดขึ้นรูป] และ [รวม] ของ Fuzzy Skin จำเป็นต้องเปิดใช้งาน Arachne Wall Generator" +msgstr "ทั้งโหมด [อัดขึ้นรูป] และ [รวม] ของผิวฟัซซี จำเป็นต้องเปิดใช้งาน Arachne Wall Generator" +# AI Translated msgid "" "Change these settings automatically?\n" "Yes - Enable Arachne Wall Generator\n" @@ -5144,7 +5279,7 @@ msgid "" msgstr "" "เปลี่ยนการตั้งค่าเหล่านี้โดยอัตโนมัติหรือไม่\n" "ใช่ - เปิดใช้งาน Arachne Wall Generator\n" -"ไม่ - ปิดการใช้งาน Arachne Wall Generator และตั้งค่าโหมด [Displacement] ของ Fuzzy Skin" +"ไม่ - ปิดการใช้งาน Arachne Wall Generator และตั้งค่าโหมด [Displacement] ของผิวฟัซซี" # AI Translated msgid "Brim ear radius" @@ -5153,8 +5288,9 @@ msgstr "รัศมีของหูขอบยึดชิ้นงาน" msgid "Brim width" msgstr "ความกว้าง ขอบยึดชิ้นงาน" +# AI Translated msgid "Spiral mode only works when wall loops is 1, support is disabled, clumping detection by probing is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional." -msgstr "โหมดเกลียวจะทำงานเฉพาะเมื่อลูปติดผนังเป็น 1, ปิดใช้งานส่วนรองรับ, การตรวจจับการจับตัวเป็นก้อนโดยการตรวจวัดถูกปิดใช้งาน, ชั้นเปลือกด้านบนเป็น 0, ความหนาแน่นของไส้ในแบบกระจายเป็น 0 และประเภทไทม์แลปส์เป็นแบบดั้งเดิม" +msgstr "โหมดเกลียวจะทำงานเฉพาะเมื่อลูปติดผนังเป็น 1, ปิดใช้งานส่วนรองรับ, การตรวจจับการจับตัวเป็นก้อนโดยการตรวจวัดถูกปิดใช้งาน, เลเยอร์ผนังด้านบนเป็น 0, ความหนาแน่นของไส้ในแบบกระจายเป็น 0 และประเภทไทม์แลปส์เป็นแบบดั้งเดิม" msgid " But machines with I3 structure will not generate timelapse videos." msgstr "แต่เครื่องที่มีโครงสร้าง I3 จะไม่สร้างวิดีโอแบบไทม์แลปส์" @@ -5201,11 +5337,13 @@ msgstr "การปรับเทียบการไหลแบบไดน msgid "Scanning bed surface" msgstr "การสแกนพื้นผิวฐานพิมพ์" +# AI Translated msgid "Inspecting first layer" -msgstr "การตรวจสอบชั้นแรก" +msgstr "การตรวจสอบเลเยอร์แรก" +# AI Translated msgid "Identifying build plate type" -msgstr "การระบุประเภทของแผ่นประกอบ" +msgstr "การระบุประเภทของฐานพิมพ์" msgid "Calibrating Micro Lidar" msgstr "การปรับเทียบไมโครไลดาร์" @@ -5273,8 +5411,9 @@ msgstr "หยุดชั่วคราว (หัวฉีดจับกั msgid "Pause (cutter error)" msgstr "หยุดชั่วคราว (ข้อผิดพลาดของเครื่องตัด)" +# AI Translated msgid "Pause (first layer error)" -msgstr "หยุดชั่วคราว (ข้อผิดพลาดชั้นแรก)" +msgstr "หยุดชั่วคราว (ข้อผิดพลาดเลเยอร์แรก)" msgid "Pause (nozzle clog)" msgstr "หยุดชั่วคราว (หัวฉีดอุดตัน)" @@ -5575,8 +5714,9 @@ msgstr "การตั้งค่าเครื่องพิมพ์" msgid "parameter name" msgstr "ชื่อพารามิเตอร์" +# AI Translated msgid "layers" -msgstr "ชั้น" +msgstr "เลเยอร์" msgid "Empty string" msgstr "สตริงว่าง" @@ -6615,6 +6755,10 @@ msgstr "วิซาร์ดการตั้งค่า" msgid "Show Configuration Folder" msgstr "แสดงโฟลเดอร์การกำหนดค่า" +# AI Translated +msgid "Bring back filament presets that a profile update removed from printers they were made for" +msgstr "นำพรีเซ็ตเส้นพลาสติกกลับมายังเครื่องพิมพ์ที่พรีเซ็ตนั้นถูกสร้างมาเพื่อใช้งานด้วย หลังจากถูกนำออกเพราะการอัปเดตโปรไฟล์" + msgid "Troubleshoot Center" msgstr "ศูนย์แก้ปัญหา" @@ -7460,8 +7604,9 @@ msgstr "อะไหล่ข้าม" msgid "Stop" msgstr "หยุด" +# AI Translated msgid "Layer: N/A" -msgstr "ชั้น: N/A" +msgstr "เลเยอร์: N/A" msgid "Click to view thermal preconditioning explanation" msgstr "คลิกเพื่อดูคำอธิบายการปรับสภาพล่วงหน้าทางความร้อน" @@ -8355,17 +8500,20 @@ msgstr "เมื่อเปิดใช้งาน เครื่องพ msgid "Confirm Enable Print Status Snapshot" msgstr "ยืนยันการเปิดใช้ภาพรวมสถานะการพิมพ์" +# AI Translated msgid "Enable detection of build plate position" -msgstr "เปิดใช้งานการตรวจจับตำแหน่งฐานรองแท่นพิมพ์" +msgstr "เปิดใช้งานการตรวจจับตำแหน่งฐานพิมพ์" +# AI Translated msgid "The localization tag of the build plate will be detected, and printing will be paused if the tag is not in predefined range." -msgstr "ตรวจพบแท็กระบุตำแหน่งของเพลต และการพิมพ์จะหยุดชั่วคราวหากแท็กไม่อยู่ในช่วงที่กำหนดไว้ล่วงหน้า" +msgstr "ตรวจพบแท็กระบุตำแหน่งของฐานพิมพ์ และการพิมพ์จะหยุดชั่วคราวหากแท็กไม่อยู่ในช่วงที่กำหนดไว้ล่วงหน้า" msgid "Build Plate Detection" msgstr "ตรวจจับฐานพิมพ์" +# AI Translated msgid "Identifies the type and position of the build plate on the heatbed. Pausing printing if a mismatch is detected." -msgstr "ระบุประเภทและตำแหน่งของแผ่นฐานรองพิมพ์บนฐานพิมพ์ทำความร้อน หยุดการพิมพ์ชั่วคราวหากตรวจพบความไม่ตรงกัน" +msgstr "ระบุประเภทและตำแหน่งของแผ่นฐานพิมพ์บนฐานพิมพ์ทำความร้อน หยุดการพิมพ์ชั่วคราวหากตรวจพบความไม่ตรงกัน" # AI Translated msgid "Purifies the chamber air as the print finishes, based on the selected mode." @@ -8420,8 +8568,9 @@ msgstr "ตรวจสอบว่าหัวฉีดจับกันเป msgid "Detects air printing caused by nozzle clogging or filament grinding." msgstr "ตรวจจับการพิมพ์ทางอากาศที่เกิดจากการอุดตันของหัวฉีดหรือการบดเส้นพลาสติก" +# AI Translated msgid "First Layer Inspection" -msgstr "การตรวจสอบชั้นแรก" +msgstr "การตรวจสอบเลเยอร์แรก" msgid "Auto-recover from step loss" msgstr "กู้คืนอัตโนมัติจากการสูญเสียขั้นตอน" @@ -9602,8 +9751,9 @@ msgstr "โฮสต์ Flashforge ไม่พร้อมใช้งาน" msgid "Unable to log in to the Flashforge printer." msgstr "ไม่สามารถเข้าสู่ระบบเครื่องพิมพ์ Flashforge ได้" +# AI Translated msgid "Is the printer ready? Is the print sheet in place, empty and clean?" -msgstr "เครื่องพิมพ์พร้อมหรือยัง? แผ่นพิมพ์อยู่ในตำแหน่ง ว่างเปล่า และสะอาดหรือไม่" +msgstr "เครื่องพิมพ์พร้อมหรือยัง? แผ่นฐานพิมพ์อยู่ในตำแหน่ง ว่างเปล่า และสะอาดหรือไม่" msgid "Upload and Print" msgstr "อัปโหลดและพิมพ์" @@ -9741,9 +9891,10 @@ msgstr "สามเหลี่ยม: %1%\n" msgid "Use \"Fix Model\" to repair the mesh." msgstr "ใช้ \"Fix Model\" เพื่อซ่อมแซมตาข่าย" +# AI Translated #, c-format, boost-format msgid "Plate %d: %s is not suggested for use printing filament %s (%s). If you still want to do this print job, please set this filament's bed temperature to a number that is not zero." -msgstr "เพลต %d: ไม่แนะนำให้ใช้ %s กับเส้นพลาสติก %s (%s) หากยังต้องการพิมพ์งานนี้ โปรดตั้งอุณหภูมิฐานของเส้นพลาสติกให้ไม่เป็นศูนย์" +msgstr "เพลต %d: ไม่แนะนำให้ใช้ %s กับเส้นพลาสติก %s (%s) หากยังต้องการพิมพ์งานนี้ โปรดตั้งอุณหภูมิฐานพิมพ์ของเส้นพลาสติกให้ไม่เป็นศูนย์" msgid "Currently, the object configuration form cannot be used with a multiple-extruder printer." msgstr "ในปัจจุบัน แบบฟอร์มการกำหนดค่าออบเจ็กต์ไม่สามารถใช้กับเครื่องพิมพ์ที่มีชุดดันเส้นหลายเครื่องได้" @@ -9831,6 +9982,7 @@ msgstr "ระยะเวลาการสำรองข้อมูลเป msgid "Bed Temperature Difference Warning" msgstr "คำเตือนความแตกต่างของอุณหภูมิฐานพิมพ์" +# AI Translated msgid "" "Using filaments with significantly different temperatures may cause:\n" "• Extruder clogging\n" @@ -9842,7 +9994,7 @@ msgstr "" "การใช้เส้นพลาสติกที่มีอุณหภูมิแตกต่างกันอย่างมากอาจทำให้:\n" "• การอุดตันของชุดดันเส้น\n" "• หัวฉีดเสียหาย\n" -"• ปัญหาการยึดเกาะของชั้น\n" +"• ปัญหาการยึดเกาะของเลเยอร์\n" "\n" "เปิดใช้งานฟีเจอร์นี้ต่อไปหรือไม่" @@ -10866,8 +11018,9 @@ msgstr "สิ้นสุด" msgid "Customize" msgstr "ปรับแต่ง" +# AI Translated msgid "Other layer filament sequence" -msgstr "ลำดับเส้นพลาสติกชั้นอื่นๆ" +msgstr "ลำดับเส้นพลาสติกเลเยอร์อื่นๆ" msgid "Please input layer value (>= 2)." msgstr "กรุณาป้อนค่าเลเยอร์ (>= 2)" @@ -10902,8 +11055,9 @@ msgstr "ปิดใช้" msgid "Spiral vase" msgstr "แจกันเกลียว" +# AI Translated msgid "First layer filament sequence" -msgstr "ลำดับเส้นพลาสติกชั้นแรก" +msgstr "ลำดับเส้นพลาสติกเลเยอร์แรก" # AI Translated msgid "The filament list contains mixed filaments. Custom filament sequence will not take effect." @@ -11289,8 +11443,9 @@ msgstr "ไม่ต้องถามอีกสำหรับคำสั่ msgid "Task canceled" msgstr "ยกเลิกงานแล้ว" +# AI Translated msgid "Bambu Cool Plate" -msgstr "แบมบูคูลเพลท" +msgstr "จานเย็นแบมบู" msgid "PLA Plate" msgstr "แผ่นเพลท PLA" @@ -11307,8 +11462,10 @@ msgstr "แผ่นอุณหภูมิสูง" msgid "Bambu Textured PEI Plate" msgstr "แผ่น PEI ที่มีพื้นผิว Bambu" +# AI Translated +# Needs human review: Bambu plate type name: Cool Plate follows the glossary (จานเย็น); check the word order and whether SuperTack should stay in Latin script. msgid "Bambu Cool Plate SuperTack" -msgstr "แบมบู คูลเพลท ซุปเปอร์แทค" +msgstr "จานเย็นแบมบู ซุปเปอร์แทค" msgid "Send print job" msgstr "ส่งงานพิมพ์" @@ -11674,8 +11831,9 @@ msgstr "แผ่นความร้อนสูงเรียบ" msgid "Textured PEI Plate" msgstr "แผ่น PEI ที่มีพื้นผิว" +# AI Translated msgid "Cool Plate (SuperTack)" -msgstr "คูลเพลท (ซุปเปอร์แทค)" +msgstr "จานเย็น (ซุปเปอร์แทค)" msgid "Click here if you can't connect to the printer" msgstr "คลิกที่นี่ หากคุณไม่สามารถเชื่อมต่อกับเครื่องพิมพ์ได้" @@ -11972,14 +12130,14 @@ msgstr "การเปิดใช้งานทั้งความสูง # AI Translated msgid "Smooth timelapse needs a prime tower on every layer, which is not compatible with \"No sparse layers\". \"No sparse layers\" has been turned off." -msgstr "ไทม์แลปส์แบบราบรื่นต้องมี Prime Tower ในทุกเลเยอร์ ซึ่งใช้ร่วมกับ \"ไม่มีชั้นกระจัดกระจาย\" ไม่ได้ จึงปิด \"ไม่มีชั้นกระจัดกระจาย\" แล้ว" +msgstr "ไทม์แลปส์แบบราบรื่นต้องมี Prime Tower ในทุกเลเยอร์ ซึ่งใช้ร่วมกับ \"ไม่มีเลเยอร์กระจัดกระจาย\" ไม่ได้ จึงปิด \"ไม่มีเลเยอร์กระจัดกระจาย\" แล้ว" msgid "A prime tower is required for smooth timelapse mode. There may be flaws on the model without prime tower. Do you want to enable the prime tower?" msgstr "จำเป็นต้องใช้ Prime Tower สำหรับโหมดไทม์แลปส์แบบราบรื่น หากไม่มี Prime Tower อาจเกิดตำหนิบนโมเดลได้ ต้องการเปิดใช้ Prime Tower หรือไม่?" # AI Translated msgid "\"No sparse layers\" is not compatible with smooth timelapse, which needs a prime tower on every layer. Timelapse has been switched to traditional mode." -msgstr "\"ไม่มีชั้นกระจัดกระจาย\" ใช้ร่วมกับไทม์แลปส์แบบราบรื่นไม่ได้ เพราะไทม์แลปส์แบบราบรื่นต้องมี Prime Tower ในทุกเลเยอร์ ไทม์แลปส์จึงถูกสลับเป็นโหมดแบบดั้งเดิม" +msgstr "\"ไม่มีเลเยอร์กระจัดกระจาย\" ใช้ร่วมกับไทม์แลปส์แบบราบรื่นไม่ได้ เพราะไทม์แลปส์แบบราบรื่นต้องมี Prime Tower ในทุกเลเยอร์ ไทม์แลปส์จึงถูกสลับเป็นโหมดแบบดั้งเดิม" msgid "Still print by object?" msgstr "ยังคงพิมพ์ตามวัตถุใช่ไหม" @@ -12031,12 +12189,13 @@ msgstr "คุณลักษณะการทดลอง: การดึง msgid "Experimental feature: Retracting and cutting off the filament at a greater distance during filament changes to minimize flush. Although it can notably reduce flush, it may also elevate the risk of nozzle clogs or other printing complications. Please use with the latest printer firmware." msgstr "คุณลักษณะการทดลอง: การดึงกลับและตัดเส้นพลาสติกออกในระยะห่างที่มากขึ้นระหว่างการเปลี่ยนเส้นพลาสติกเพื่อลดการไล่เส้น แม้ว่าจะสามารถลดการไล่เส้นได้อย่างเห็นได้ชัด แต่ก็อาจเพิ่มความเสี่ยงของการอุดตันของหัวฉีดหรือภาวะแทรกซ้อนในการพิมพ์อื่นๆ อีกด้วย กรุณาใช้กับเฟิร์มแวร์เครื่องพิมพ์ล่าสุด" +# AI Translated msgid "" "When recording timelapse without toolhead, it is recommended to add a \"Timelapse Wipe Tower\" \n" "by right-click the empty position of build plate and choose \"Add Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "เมื่อบันทึกไทม์แลปส์โดยไม่มีหัวเครื่องมือ แนะนำให้เพิ่ม \"Timelapse Wipe Tower\" \n" -"โดยคลิกขวาที่ตำแหน่งว่างของแผ่นงานแล้วเลือก \"Add Primitive\"->\"Timelapse Wipe Tower\"" +"โดยคลิกขวาที่ตำแหน่งว่างของฐานพิมพ์แล้วเลือก \"Add Primitive\"->\"Timelapse Wipe Tower\"" msgid "A copy of the current system preset will be created, which will be detached from the system preset." msgstr "สำเนาของค่าที่ตั้งล่วงหน้าของระบบปัจจุบันจะถูกสร้างขึ้น ซึ่งจะแยกออกจากค่าที่ตั้งล่วงหน้าของระบบ" @@ -12131,14 +12290,17 @@ msgstr "การพิมพ์สะพาน" msgid "Walls" msgstr "ผนัง" +# AI Translated msgid "Top/bottom shells" -msgstr "เปลือกบน/ล่าง" +msgstr "ผนังบน/ล่าง" +# AI Translated msgid "First layer speed" -msgstr "ความเร็วชั้นแรก" +msgstr "ความเร็วเลเยอร์แรก" +# AI Translated msgid "Other layers speed" -msgstr "ความเร็วชั้นอื่นๆ" +msgstr "ความเร็วเลเยอร์อื่นๆ" msgid "Overhang speed" msgstr "ความเร็วส่วนยื่น" @@ -12241,8 +12403,9 @@ msgstr "อุณหภูมิหัวฉีดที่แนะนำ" msgid "Recommended nozzle temperature range of this filament. 0 means not set" msgstr "ช่วงอุณหภูมิหัวฉีดที่แนะนำของเส้นพลาสติกนี้ 0 หมายถึงไม่มีการตั้งค่า" +# AI Translated msgid "Flow ratio and Pressure Advance" -msgstr "อัตราการไหลและ Pressure Advance" +msgstr "อัตราส่วนการไหลและ Pressure Advance" msgid "Print chamber temperature" msgstr "อุณหภูมิห้องพิมพ์" @@ -12268,23 +12431,29 @@ msgstr "อุณหภูมิพิมพ์" msgid "Nozzle temperature when printing" msgstr "อุณหภูมิหัวฉีดเมื่อพิมพ์" +# AI Translated msgid "Bed temperature when the Cool Plate SuperTack is installed. A value of 0 means the filament does not support printing on the Cool Plate SuperTack." -msgstr "อุณหภูมิฐานพิมพ์เมื่อติดตั้ง Cool Plate SuperTack ค่า 0 หมายความว่าเส้นพลาสติกไม่รองรับการพิมพ์บน Cool Plate SuperTack" +msgstr "อุณหภูมิฐานพิมพ์เมื่อติดตั้งจานเย็น ซุปเปอร์แทค ค่า 0 หมายความว่าเส้นพลาสติกไม่รองรับการพิมพ์บนจานเย็น ซุปเปอร์แทค" msgid "Cool Plate" msgstr "จานเย็น" +# AI Translated msgid "This is the bed temperature when the Cool Plate is installed. A value of 0 means the filament does not support printing on the Cool Plate." -msgstr "อุณหภูมิฐานพิมพ์เมื่อติดตั้ง Cool Plate ค่า 0 หมายความว่าเส้นพลาสติกไม่รองรับการพิมพ์บน Cool Plate" +msgstr "อุณหภูมิฐานพิมพ์เมื่อติดตั้งจานเย็น ค่า 0 หมายความว่าเส้นพลาสติกไม่รองรับการพิมพ์บนจานเย็น" +# AI Translated +# Needs human review: Textured Cool Plate has no glossary row; built from Cool Plate (จานเย็น) and the Textured PEI Plate pattern (ที่มีพื้นผิว). Check it reads right as a plate type. msgid "Textured Cool Plate" -msgstr "เท็กซ์เจอร์ คูลเพลท" +msgstr "จานเย็นที่มีพื้นผิว" +# AI Translated msgid "This is the bed temperature when the Textured Cool Plate is installed. A value of 0 means the filament does not support printing on the Textured Cool Plate." -msgstr "อุณหภูมิฐานพิมพ์เมื่อติดตั้ง Textured Cool Plate ค่า 0 หมายความว่าเส้นพลาสติกไม่รองรับการพิมพ์บน Textured Cool Plate" +msgstr "อุณหภูมิฐานพิมพ์เมื่อติดตั้งจานเย็นที่มีพื้นผิว ค่า 0 หมายความว่าเส้นพลาสติกไม่รองรับการพิมพ์บนจานเย็นที่มีพื้นผิว" +# AI Translated msgid "This is the bed temperature when the engineering plate is installed. A value of 0 means the filament does not support printing on the Engineering Plate." -msgstr "อุณหภูมิฐานพิมพ์เมื่อติดตั้ง Engineering Plate ค่า 0 หมายความว่าเส้นพลาสติกไม่รองรับการพิมพ์บน Engineering Plate" +msgstr "อุณหภูมิฐานพิมพ์เมื่อติดตั้งแผ่นวิศวกรรม ค่า 0 หมายความว่าเส้นพลาสติกไม่รองรับการพิมพ์บนแผ่นวิศวกรรม" msgid "Smooth PEI Plate / High Temp Plate" msgstr "แผ่น PEI เรียบ / แผ่นอุณหภูมิสูง" @@ -12292,14 +12461,16 @@ msgstr "แผ่น PEI เรียบ / แผ่นอุณหภูมิ msgid "This is the bed temperature when the Smooth PEI Plate/High Temperature Plate is installed. A value of 0 means the filament does not support printing on the Smooth PEI Plate/High Temp Plate." msgstr "อุณหภูมิฐานพิมพ์เมื่อติดตั้งแผ่น Smooth PEI/แผ่นอุณหภูมิสูง ค่า 0 หมายความว่าเส้นพลาสติกไม่รองรับการพิมพ์บนแผ่น PEI แบบเรียบ/แผ่นอุณหภูมิสูง" +# AI Translated msgid "This is the bed temperature when the Textured PEI Plate is installed. A value of 0 means the filament does not support printing on the Textured PEI Plate." -msgstr "อุณหภูมิฐานพิมพ์เมื่อติดตั้งเพลต PEI แบบมีพื้นผิว ค่า 0 หมายความว่าเส้นพลาสติกไม่รองรับการพิมพ์บนเพลต PEI ที่มีพื้นผิว" +msgstr "อุณหภูมิฐานพิมพ์เมื่อติดตั้งแผ่น PEI ที่มีพื้นผิว ค่า 0 หมายความว่าเส้นพลาสติกไม่รองรับการพิมพ์บนแผ่น PEI ที่มีพื้นผิว" msgid "Volumetric speed limitation" msgstr "การจำกัดความเร็วตามปริมาตร" +# AI Translated msgid "Cooling for specific layer" -msgstr "ระบายความร้อนเฉพาะชั้น" +msgstr "ระบายความร้อนเฉพาะเลเยอร์" msgid "Part cooling fan" msgstr "พัดลมระบายความร้อนบางส่วน" @@ -12608,18 +12779,20 @@ msgstr "เลือกเครื่องพิมพ์" msgid "Select profiles" msgstr "โปรไฟล์เลือก" +# AI Translated #, c-format, boost-format msgid "" " - %s:\n" " %s first layer %d %s, other layers %d %s\n" " %s max delta %d %s, current delta %d %s\n" msgstr "" -"- %s:\n" -" %s ชั้นแรก %d %s, ชั้นอื่นๆ %d %s\n" +" - %s:\n" +" %s เลเยอร์แรก %d %s, เลเยอร์อื่นๆ %d %s\n" " %s เดลต้าสูงสุด %d %s เดลต้าปัจจุบัน %d %s\n" +# AI Translated msgid "Some first-layer and other-layer temperature pairs exceed safety limits.\n" -msgstr "คู่อุณหภูมิชั้นหนึ่งและชั้นอื่นๆ บางคู่เกินขีดจำกัดความปลอดภัย\n" +msgstr "คู่อุณหภูมิเลเยอร์แรกและเลเยอร์อื่นๆ บางคู่เกินขีดจำกัดความปลอดภัย\n" msgid "" "\n" @@ -13768,12 +13941,14 @@ msgstr "เปิดไฟล์ G-code:" msgid "Wipe tower generation failed, possibly due to empty first layer." msgstr "สร้าง Wipe Tower ล้มเหลว อาจเป็นเพราะเลเยอร์แรกว่างเปล่า" +# AI Translated msgid "One object has an empty first layer and can't be printed. Please Cut the bottom or enable supports." -msgstr "วัตถุหนึ่งมีชั้นแรกว่างเปล่าและไม่สามารถพิมพ์ได้ กรุณาตัดด้านล่างหรือเปิดใช้งานส่วนรองรับ" +msgstr "วัตถุหนึ่งมีเลเยอร์แรกว่างเปล่าและไม่สามารถพิมพ์ได้ กรุณาตัดด้านล่างหรือเปิดใช้งานส่วนรองรับ" +# AI Translated #, boost-format msgid "The object has empty layers between %1% and %2% and can’t be printed." -msgstr "วัตถุมีชั้นว่างระหว่าง %1% ถึง %2% จึงไม่สามารถพิมพ์ได้" +msgstr "วัตถุมีเลเยอร์ว่างระหว่าง %1% ถึง %2% จึงไม่สามารถพิมพ์ได้" #, boost-format msgid "Object: %1%" @@ -13909,6 +14084,18 @@ msgstr "มีจุดตัดกับเส้นรอบวงหลาย msgid "a perimeter is fully inside a modifier, the modifier was not applied to it (%1%)" msgstr "เส้นรอบวงอยู่ภายในตัวปรับแต่งทั้งหมด จึงไม่ได้ใช้ตัวปรับแต่งกับเส้นรอบวงนั้น (%1%)" +# AI Translated +#. TRN: %1% is the modifier type "Seam Blocked" as in the menu, %2% the modifier name, %3% the object name. +#, boost-format +msgid "%1% modifier \"%2%\" of \"%3%\" covers an entire perimeter" +msgstr "ตัวปรับแต่ง %1% \"%2%\" ของ \"%3%\" ครอบคลุมเส้นรอบวงทั้งเส้น" + +# AI Translated +#. TRN: %1% is the modifier type "Seam Blocked" as in the menu, %2% the modifier name, %3% the object name, %4% the number of modifiers. +#, boost-format +msgid "%1% modifier \"%2%\" of \"%3%\" (%4% in total) covers an entire perimeter" +msgstr "ตัวปรับแต่ง %1% \"%2%\" ของ \"%3%\" (ทั้งหมด %4% รายการ) ครอบคลุมเส้นรอบวงทั้งเส้น" + # AI Translated #, boost-format msgid "modifier \"%1%\" of \"%2%\" had no effect on the seam (it might not reach the centerline of the printed perimeter)" @@ -14117,7 +14304,7 @@ msgstr "%1% สูงเกินไป และจะเกิดการช # AI Translated msgid "The relative position of the model and the prime tower does not meet the requirements of the \"No sparse layers\" feature. Please adjust their relative positions, lower the model height, or turn off \"No sparse layers\"." -msgstr "ตำแหน่งสัมพัทธ์ของโมเดลกับ Prime Tower ไม่เป็นไปตามข้อกำหนดของฟังก์ชัน \"ไม่มีชั้นกระจัดกระจาย\" โปรดปรับตำแหน่งสัมพัทธ์ของทั้งสอง ลดความสูงของโมเดล หรือปิด \"ไม่มีชั้นกระจัดกระจาย\"" +msgstr "ตำแหน่งสัมพัทธ์ของโมเดลกับ Prime Tower ไม่เป็นไปตามข้อกำหนดของฟังก์ชัน \"ไม่มีเลเยอร์กระจัดกระจาย\" โปรดปรับตำแหน่งสัมพัทธ์ของทั้งสอง ลดความสูงของโมเดล หรือปิด \"ไม่มีเลเยอร์กระจัดกระจาย\"" # AI Translated #, boost-format @@ -14283,23 +14470,28 @@ msgstr "ขณะนี้ Prime Tower รองรับเฉพาะชน msgid "A prime tower is not supported in “By object” print." msgstr "ไม่รองรับ Prime Tower ในการพิมพ์ \"ตามวัตถุ\"" +# AI Translated msgid "A prime tower is not supported when adaptive layer height is on. It requires that all objects have the same layer height." -msgstr "ไม่รองรับ Prime Tower เมื่อเปิดความสูงของเลเยอร์แบบปรับได้ กำหนดให้วัตถุทั้งหมดมีความสูงของชั้นเท่ากัน" +msgstr "ไม่รองรับ Prime Tower เมื่อเปิดความสูงของเลเยอร์แบบปรับได้ กำหนดให้วัตถุทั้งหมดมีความสูงเลเยอร์เท่ากัน" +# AI Translated msgid "A prime tower requires any “support gap” to be a multiple of layer height." -msgstr "Prime Tower ต้องการให้ “support gap” เป็นจำนวนเท่าของความสูงชั้น" +msgstr "Prime Tower ต้องการให้ “support gap” เป็นจำนวนเท่าของความสูงเลเยอร์" +# AI Translated msgid "A prime tower requires that all objects have the same layer height." -msgstr "Prime Tower ต้องการให้วัตถุทั้งหมดมีความสูงชั้นเท่ากัน" +msgstr "Prime Tower ต้องการให้วัตถุทั้งหมดมีความสูงเลเยอร์เท่ากัน" +# AI Translated msgid "A prime tower requires that all objects are printed over the same number of raft layers." -msgstr "Prime Tower ต้องการให้วัตถุทั้งหมดพิมพ์บนจำนวนชั้น raft เท่ากัน" +msgstr "Prime Tower ต้องการให้วัตถุทั้งหมดพิมพ์บนจำนวนเลเยอร์ฐานรองชิ้นงานเท่ากัน" msgid "The prime tower is only supported for multiple objects if they are printed with the same support_top_z_distance." msgstr "Prime Tower รองรับวัตถุหลายชิ้นเท่านั้นหากพิมพ์ด้วย support_top_z_distance เท่ากัน" +# AI Translated msgid "A prime tower requires that all objects are sliced with the same layer height." -msgstr "Prime Tower ต้องการให้วัตถุทั้งหมดถูกสไลซ์ด้วยความสูงชั้นเท่ากัน" +msgstr "Prime Tower ต้องการให้วัตถุทั้งหมดถูกสไลซ์ด้วยความสูงเลเยอร์เท่ากัน" msgid "The prime tower is only supported if all objects have the same variable layer height." msgstr "Prime Tower ได้รับส่วนรองรับก็ต่อเมื่อวัตถุทั้งหมดมีความสูงของเลเยอร์ที่แปรผันเท่ากัน" @@ -14316,8 +14508,9 @@ msgstr "ความกว้างของเส้นใหญ่เกิน msgid "Printing with multiple extruders of differing nozzle diameters. If support is to be printed with the current filament (support_filament == 0 or support_interface_filament == 0), all nozzles have to be of the same diameter." msgstr "การพิมพ์ด้วยชุดดันเส้นหลายเครื่องที่มีเส้นผ่านศูนย์กลางหัวฉีดต่างกัน หากจะพิมพ์ส่วนรองรับด้วยฟิลาเมนต์ปัจจุบัน (support_filament == 0 หรือ support_interface_filament == 0) หัวฉีดทั้งหมดจะต้องมีเส้นผ่านศูนย์กลางเท่ากัน" +# AI Translated msgid "A prime tower requires that support has the same layer height as the object." -msgstr "Prime Tower ต้องการให้ส่วนรองรับมีความสูงชั้นเท่ากับวัตถุ" +msgstr "Prime Tower ต้องการให้ส่วนรองรับมีความสูงเลเยอร์เท่ากับวัตถุ" msgid "For Organic supports, two walls are supported only with the Hollow/Default base pattern." msgstr "สำหรับการรองรับแบบออร์แกนิก ผนังทั้งสองได้รับการรองรับด้วยรูปแบบฐานกลวง/ค่าเริ่มต้นเท่านั้น" @@ -14340,8 +14533,9 @@ msgstr "รูปแบบฐานกลวงไม่รองรับปร msgid "Support enforcers are used but support is not enabled. Please enable support." msgstr "มีการใช้กำหนดส่วนรองรับ แต่ไม่ได้เปิดใช้งานส่วนรองรับ กรุณาเปิดใช้งานส่วนรองรับ" +# AI Translated msgid "Layer height cannot exceed nozzle diameter." -msgstr "ความสูงของชั้นต้องไม่เกินเส้นผ่านศูนย์กลางหัวฉีด" +msgstr "ความสูงเลเยอร์ต้องไม่เกินเส้นผ่านศูนย์กลางหัวฉีด" msgid "Bridge line width must not exceed nozzle diameter" msgstr "ความกว้างเส้นสะพานต้องไม่เกินเส้นผ่านศูนย์กลางหัวฉีด" @@ -14352,8 +14546,9 @@ msgstr "พบ \"G92 E0\" ใน before_layer_change_gcode แต่ G หรื msgid "\"G92 E0\" was found in layer_change_gcode, but the G or E are not uppercase. Please change them to the exact uppercase \"G92 E0\"." msgstr "พบ \"G92 E0\" ใน layer_change_gcode แต่ G หรือ E ไม่ได้เป็นตัวพิมพ์ใหญ่ กรุณาเปลี่ยนให้ตรงกับ \"G92 E0\" ตัวพิมพ์ใหญ่ทุกตัว" +# AI Translated msgid "Relative extruder addressing requires resetting the extruder position at each layer to prevent loss of floating point accuracy. Add \"G92 E0\" to layer_gcode." -msgstr "การระบุตำแหน่งชุดดันเส้นแบบสัมพันธ์จำเป็นต้องรีเซ็ตตำแหน่งชุดดันเส้นในแต่ละชั้น เพื่อป้องกันการสูญเสียความแม่นยำของจุดลอยตัว เพิ่ม \"G92 E0\" ลงใน layer_gcode" +msgstr "การระบุตำแหน่งชุดดันเส้นแบบสัมพันธ์จำเป็นต้องรีเซ็ตตำแหน่งชุดดันเส้นในแต่ละเลเยอร์ เพื่อป้องกันการสูญเสียความแม่นยำของจุดลอยตัว เพิ่ม \"G92 E0\" ลงใน layer_gcode" msgid "\"G92 E0\" was found in before_layer_change_gcode, which is incompatible with absolute extruder addressing." msgstr "พบ \"G92 E0\" ใน before_layer_change_gcode ซึ่งไม่เข้ากันกับการกำหนดที่อยู่ชุดดันเส้นแบบสัมบูรณ์" @@ -14395,12 +14590,13 @@ msgstr "" "Orca จะจำกัดความเร็วการเร่งความเร็วโดยอัตโนมัติเพื่อให้แน่ใจว่าจะไม่เกินความสามารถของเครื่องพิมพ์\n" "คุณสามารถปรับค่า machine_max_acceleration_extruding ในการกำหนดค่าเครื่องพิมพ์ของคุณเพื่อให้ได้ความเร็วที่สูงขึ้น" +# AI Translated msgid "" "The travel acceleration setting exceeds the printer's maximum travel acceleration (machine_max_acceleration_travel).\n" "Orca will automatically cap the travel acceleration speed to ensure it doesn't surpass the printer's capabilities.\n" "You can adjust the machine_max_acceleration_travel value in your printer's configuration to get higher speeds." msgstr "" -"การตั้งค่าการเร่งความเร็วในการเดินทางเกินความเร็วการเคลื่อนที่สูงสุดของเครื่องพิมพ์ (machine_max_acceleration_travel)\n" +"การตั้งค่าการเร่งความเร็วในการเดินหัวเปล่าเกินความเร็วการเคลื่อนที่สูงสุดของเครื่องพิมพ์ (machine_max_acceleration_travel)\n" "Orca จะจำกัดความเร็วในการเร่งความเร็วโดยอัตโนมัติเพื่อให้แน่ใจว่าจะไม่เกินความสามารถของเครื่องพิมพ์\n" "คุณสามารถปรับค่า machine_max_acceleration_travel ในการกำหนดค่าเครื่องพิมพ์ของคุณเพื่อให้ได้ความเร็วที่สูงขึ้น" @@ -14472,11 +14668,13 @@ msgstr "จำนวนหัวพิมพ์แบบขนาน" msgid "Set the number of parallel printheads for machines like OrangeStorm Giga printer." msgstr "ตั้งจำนวนหัวพิมพ์แบบขนานสำหรับเครื่องเช่นเครื่องพิมพ์ OrangeStorm Giga" +# AI Translated msgid "Parallel printheads bed exclude areas" -msgstr "พื้นที่ยกเว้นบนเพลตตามจำนวนหัวพิมพ์แบบขนาน" +msgstr "พื้นที่ยกเว้นบนฐานพิมพ์ตามจำนวนหัวพิมพ์แบบขนาน" +# AI Translated msgid "Ordered list of bed exclude areas by parallel printhead count. Item 1 applies to one printhead, item 2 to two printheads, and so on. Leave an item empty for no excluded area." -msgstr "รายการพื้นที่ยกเว้นบนเพลตตามจำนวนหัวพิมพ์แบบขนาน รายการที่ 1 ใช้กับหัวพิมพ์ 1 หัว รายการที่ 2 ใช้กับ 2 หัว และต่อไปเรื่อยๆ ปล่อยรายการว่างหากไม่ต้องการพื้นที่ยกเว้น" +msgstr "รายการพื้นที่ยกเว้นบนฐานพิมพ์ตามจำนวนหัวพิมพ์แบบขนาน รายการที่ 1 ใช้กับหัวพิมพ์ 1 หัว รายการที่ 2 ใช้กับ 2 หัว และต่อไปเรื่อยๆ ปล่อยรายการว่างหากไม่ต้องการพื้นที่ยกเว้น" msgid "Excluded bed area" msgstr "พื้นที่ฐานพิมพ์ที่ยกเว้น" @@ -14493,29 +14691,35 @@ msgstr "ฐานพิมพ์รุ่นสั่งทำพิเศษ" msgid "Elephant foot compensation" msgstr "การชดเชยอาการฐานบาน" +# AI Translated msgid "This shrinks the first layer on the build plate to compensate for elephant foot effect." -msgstr "ย่อชั้นแรกบนฐานรองพิมพ์เพื่อชดเชยผลกระทบจากรอยอาการฐานบาน" +msgstr "ย่อเลเยอร์แรกบนฐานพิมพ์เพื่อชดเชยผลกระทบจากรอยอาการฐานบาน" +# AI Translated msgid "Elephant foot compensation layers" -msgstr "ชั้นชดเชยอาการฐานบาน" +msgstr "เลเยอร์ชดเชยอาการฐานบาน" +# AI Translated msgid "The number of layers on which the elephant foot compensation will be active. The first layer will be shrunk by the elephant foot compensation value, then the next layers will be linearly shrunk less, up to the layer indicated by this value." -msgstr "จำนวนชั้นที่การชดเชยอาการฐานบานจะทำงาน ชั้นแรกจะหดตามค่าการชดเชยอาการฐานบาน จากนั้นชั้นถัดไปจะหดเป็นเส้นตรงน้อยลง จนถึงชั้นที่ระบุด้วยค่านี้" +msgstr "จำนวนเลเยอร์ที่การชดเชยอาการฐานบานจะทำงาน เลเยอร์แรกจะหดตามค่าการชดเชยอาการฐานบาน จากนั้นเลเยอร์ถัดไปจะหดเป็นเส้นตรงน้อยลง จนถึงเลเยอร์ที่ระบุด้วยค่านี้" +# AI Translated msgid "Elephant foot layers density" -msgstr "ความหนาแน่นของชั้นอาการฐานบาน" +msgstr "ความหนาแน่นของเลเยอร์อาการฐานบาน" +# AI Translated msgid "" "Density of internal solid infill for Elephant foot layers compensation.\n" "The initial value for the second layer is set.\n" "Subsequent layers become linearly denser by the height specified in elefant_foot_compensation_layers." msgstr "" -"ความหนาแน่นของวัสดุไส้ในแบบทึบภายในสำหรับการชดเชยชั้นอาการฐานบาน\n" +"ความหนาแน่นของวัสดุไส้ในแบบทึบภายในสำหรับการชดเชยเลเยอร์อาการฐานบาน\n" "มีการตั้งค่าเริ่มต้นสำหรับเลเยอร์ที่สอง\n" "เลเยอร์ต่อมาจะมีความหนาแน่นเชิงเส้นมากขึ้นตามความสูงที่ระบุใน elefant_foot_compensation_layers" +# AI Translated msgid "This is the height for each layer. Smaller layer heights give greater accuracy but longer printing time." -msgstr "ความสูงของการตัดแต่ละชั้น ความสูงของชั้นที่เล็กลงหมายถึงความแม่นยำและเวลาในการพิมพ์ที่มากขึ้น" +msgstr "ความสูงของการตัดแต่ละเลเยอร์ ความสูงเลเยอร์ที่เล็กลงหมายถึงความแม่นยำและเวลาในการพิมพ์ที่มากขึ้น" msgid "Printable height" msgstr "ความสูงที่สามารถพิมพ์ได้" @@ -14617,62 +14821,79 @@ msgstr "การกำหนดค่าสำหรับความสาม msgid "Avoid crossing walls" msgstr "หลีกเลี่ยงการข้ามผนัง" +# AI Translated msgid "This detours to avoid traveling across walls, which may cause blobs on the surface." -msgstr "ทางอ้อมเพื่อหลีกเลี่ยงการเดินทางข้ามผนัง ซึ่งอาจทำให้เกิดหยดบนพื้นผิว" +msgstr "ทางอ้อมเพื่อหลีกเลี่ยงการเดินหัวเปล่าข้ามผนัง ซึ่งอาจทำให้เกิดหยดบนพื้นผิว" msgid "Avoid crossing walls - Max detour length" msgstr "หลีกเลี่ยงการข้ามผนัง - ความยาวทางเบี่ยงสูงสุด" +# AI Translated msgid "Maximum detour distance for avoiding crossing wall: The printer won't detour if the detour distance is larger than this value. Detour length could be specified either as an absolute value or as percentage (for example 50%) of a direct travel path. A value of 0 will disable this." -msgstr "ระยะทางเบี่ยงสูงสุดเพื่อหลีกเลี่ยงการข้ามผนัง เครื่องพิมพ์จะไม่อ้อมหากระยะทางเบี่ยงมากกว่าค่านี้ ความยาวทางเบี่ยงสามารถระบุเป็นค่าสัมบูรณ์หรือเป็นเปอร์เซ็นต์ (เช่น 50%) ของเส้นทางเดินทางโดยตรง ค่า 0 จะปิดการใช้งานตัวเลือกนี้" +msgstr "ระยะทางเบี่ยงสูงสุดเพื่อหลีกเลี่ยงการข้ามผนัง เครื่องพิมพ์จะไม่อ้อมหากระยะทางเบี่ยงมากกว่าค่านี้ ความยาวทางเบี่ยงสามารถระบุเป็นค่าสัมบูรณ์หรือเป็นเปอร์เซ็นต์ (เช่น 50%) ของเส้นทางเดินหัวเปล่าโดยตรง ค่า 0 จะปิดการใช้งานตัวเลือกนี้" msgid "mm or %" msgstr "มม. หรือ %" +# AI Translated msgid "Other layers" -msgstr "ชั้นอื่นๆ" +msgstr "เลเยอร์อื่นๆ" +# AI Translated msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack." -msgstr "อุณหภูมิฐานพิมพ์สำหรับชั้นต่างๆ ยกเว้นอุณหภูมิเริ่มต้น ค่า 0 หมายความว่าเส้นพลาสติกไม่รองรับการพิมพ์บน Cool Plate SuperTack" +msgstr "อุณหภูมิฐานพิมพ์สำหรับเลเยอร์ต่างๆ ยกเว้นอุณหภูมิเริ่มต้น ค่า 0 หมายความว่าเส้นพลาสติกไม่รองรับการพิมพ์บนจานเย็น ซุปเปอร์แทค" +# AI Translated msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate." -msgstr "อุณหภูมิฐานพิมพ์สำหรับชั้นต่างๆ ยกเว้นอุณหภูมิเริ่มต้น ค่า 0 หมายความว่าเส้นพลาสติกไม่รองรับการพิมพ์บน Cool Plate" +msgstr "อุณหภูมิฐานพิมพ์สำหรับเลเยอร์ต่างๆ ยกเว้นอุณหภูมิเริ่มต้น ค่า 0 หมายความว่าเส้นพลาสติกไม่รองรับการพิมพ์บนจานเย็น" +# AI Translated msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Textured Cool Plate." -msgstr "อุณหภูมิฐานพิมพ์สำหรับชั้นต่างๆ ยกเว้นอุณหภูมิเริ่มต้น ค่า 0 หมายความว่าเส้นพลาสติกไม่รองรับการพิมพ์บน Textured Cool Plate" +msgstr "อุณหภูมิฐานพิมพ์สำหรับเลเยอร์ต่างๆ ยกเว้นอุณหภูมิเริ่มต้น ค่า 0 หมายความว่าเส้นพลาสติกไม่รองรับการพิมพ์บนจานเย็นที่มีพื้นผิว" +# AI Translated msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Engineering Plate." -msgstr "อุณหภูมิฐานพิมพ์สำหรับชั้นต่างๆ ยกเว้นอุณหภูมิเริ่มต้น ค่า 0 หมายความว่าเส้นพลาสติกไม่รองรับการพิมพ์บน Engineering Plate" +msgstr "อุณหภูมิฐานพิมพ์สำหรับเลเยอร์ต่างๆ ยกเว้นอุณหภูมิเริ่มต้น ค่า 0 หมายความว่าเส้นพลาสติกไม่รองรับการพิมพ์บนแผ่นวิศวกรรม" +# AI Translated msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the High Temp Plate." -msgstr "อุณหภูมิฐานพิมพ์สำหรับชั้นต่างๆ ยกเว้นอุณหภูมิเริ่มต้น ค่า 0 หมายความว่าเส้นพลาสติกไม่รองรับการพิมพ์บนแผ่นอุณหภูมิสูง" +msgstr "อุณหภูมิฐานพิมพ์สำหรับเลเยอร์ต่างๆ ยกเว้นอุณหภูมิเริ่มต้น ค่า 0 หมายความว่าเส้นพลาสติกไม่รองรับการพิมพ์บนแผ่นอุณหภูมิสูง" +# AI Translated msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Textured PEI Plate." -msgstr "อุณหภูมิฐานพิมพ์สำหรับชั้นต่างๆ ยกเว้นอุณหภูมิเริ่มต้น ค่า 0 หมายความว่าเส้นพลาสติกไม่รองรับการพิมพ์บนเพลต PEI ที่มีพื้นผิว" +msgstr "อุณหภูมิฐานพิมพ์สำหรับเลเยอร์ต่างๆ ยกเว้นอุณหภูมิเริ่มต้น ค่า 0 หมายความว่าเส้นพลาสติกไม่รองรับการพิมพ์บนแผ่น PEI ที่มีพื้นผิว" +# AI Translated msgid "First layer" -msgstr "ชั้นแรก" +msgstr "เลเยอร์แรก" +# AI Translated msgid "First layer bed temperature" -msgstr "อุณหภูมิฐานพิมพ์ชั้นแรก" +msgstr "อุณหภูมิฐานพิมพ์เลเยอร์แรก" +# AI Translated msgid "This is the bed temperature of the first layer. A value of 0 means the filament does not support printing on the Cool Plate SuperTack." -msgstr "อุณหภูมิฐานพิมพ์ชั้นแรก ค่า 0 หมายความว่าเส้นพลาสติกไม่รองรับการพิมพ์บน Cool Plate SuperTack" +msgstr "อุณหภูมิฐานพิมพ์เลเยอร์แรก ค่า 0 หมายความว่าเส้นพลาสติกไม่รองรับการพิมพ์บนจานเย็น ซุปเปอร์แทค" +# AI Translated msgid "This is the bed temperature of the first layer. A value of 0 means the filament does not support printing on the Cool Plate." -msgstr "อุณหภูมิฐานพิมพ์ชั้นแรก ค่า 0 หมายความว่าเส้นพลาสติกไม่รองรับการพิมพ์บน Cool Plate" +msgstr "อุณหภูมิฐานพิมพ์เลเยอร์แรก ค่า 0 หมายความว่าเส้นพลาสติกไม่รองรับการพิมพ์บนจานเย็น" +# AI Translated msgid "This is the bed temperature of the first layer. A value of 0 means the filament does not support printing on the Textured Cool Plate." -msgstr "อุณหภูมิฐานพิมพ์ชั้นแรก ค่า 0 หมายความว่าเส้นพลาสติกไม่รองรับการพิมพ์บน Textured Cool Plate" +msgstr "อุณหภูมิฐานพิมพ์เลเยอร์แรก ค่า 0 หมายความว่าเส้นพลาสติกไม่รองรับการพิมพ์บนจานเย็นที่มีพื้นผิว" +# AI Translated msgid "This is the bed temperature of the first layer. A value of 0 means the filament does not support printing on the Engineering Plate." -msgstr "อุณหภูมิฐานพิมพ์ชั้นแรก ค่า 0 หมายความว่าเส้นพลาสติกไม่รองรับการพิมพ์บน Engineering Plate" +msgstr "อุณหภูมิฐานพิมพ์เลเยอร์แรก ค่า 0 หมายความว่าเส้นพลาสติกไม่รองรับการพิมพ์บนแผ่นวิศวกรรม" +# AI Translated msgid "This is the bed temperature of the first layer. A value of 0 means the filament does not support printing on the High Temp Plate." -msgstr "อุณหภูมิฐานพิมพ์ชั้นแรก ค่า 0 หมายความว่าเส้นพลาสติกไม่รองรับการพิมพ์บนแผ่นอุณหภูมิสูง" +msgstr "อุณหภูมิฐานพิมพ์เลเยอร์แรก ค่า 0 หมายความว่าเส้นพลาสติกไม่รองรับการพิมพ์บนแผ่นอุณหภูมิสูง" +# AI Translated msgid "This is the bed temperature of the first layer. A value of 0 means the filament does not support printing on the Textured PEI Plate." -msgstr "อุณหภูมิฐานพิมพ์ชั้นแรก ค่า 0 หมายความว่าเส้นพลาสติกไม่รองรับการพิมพ์บนเพลต PEI ที่มีพื้นผิว" +msgstr "อุณหภูมิฐานพิมพ์เลเยอร์แรก ค่า 0 หมายความว่าเส้นพลาสติกไม่รองรับการพิมพ์บนแผ่น PEI ที่มีพื้นผิว" msgid "Plate types supported by the printer" msgstr "ประเภทฐานพิมพ์ที่เครื่องพิมพ์รองรับ" @@ -14683,8 +14904,9 @@ msgstr "ประเภทฐานพิมพ์เริ่มต้น" msgid "Default bed type for the printer (supports both numeric and string format)." msgstr "ประเภทฐานฐานพิมพ์เริ่มต้นสำหรับเครื่องพิมพ์ (รองรับทั้งรูปแบบตัวเลขและสตริง)" +# AI Translated msgid "First layer print sequence" -msgstr "ลำดับการพิมพ์ชั้นแรก" +msgstr "ลำดับการพิมพ์เลเยอร์แรก" msgid "Other layers print sequence" msgstr "ลำดับการพิมพ์เลเยอร์อื่นๆ" @@ -14692,8 +14914,9 @@ msgstr "ลำดับการพิมพ์เลเยอร์อื่น msgid "The number of other layers print sequence" msgstr "จำนวนลำดับการพิมพ์อื่นๆ" +# AI Translated msgid "Other layers filament sequence" -msgstr "ลำดับเส้นพลาสติกชั้นอื่นๆ" +msgstr "ลำดับเส้นพลาสติกเลเยอร์อื่นๆ" msgid "This G-code is inserted at every layer change before the Z lift." msgstr "G-code นี้จะถูกแทรกทุกครั้งที่เปลี่ยนเลเยอร์ก่อนการยก Z" @@ -14701,14 +14924,16 @@ msgstr "G-code นี้จะถูกแทรกทุกครั้งท msgid "Bottom shell layers" msgstr "เลเยอร์ผนังด้านล่าง" +# AI Translated msgid "This is the number of solid layers of bottom shell, including the bottom surface layer. When the thickness calculated by this value is thinner than bottom shell thickness, the bottom shell layers will be increased." -msgstr "นี่คือจำนวนชั้นทึบของเปลือกด้านล่าง รวมถึงชั้นล่างของพื้นผิวด้วย เมื่อความหนาที่คำนวณโดยค่านี้บางกว่าความหนาของเปลือกด้านล่าง ชั้นเปลือกด้านล่างจะเพิ่มขึ้น" +msgstr "นี่คือจำนวนเลเยอร์ทึบของผนังด้านล่าง รวมถึงเลเยอร์ล่างของพื้นผิวด้วย เมื่อความหนาที่คำนวณโดยค่านี้บางกว่าความหนาของผนังด้านล่าง เลเยอร์ผนังด้านล่างจะเพิ่มขึ้น" msgid "Bottom shell thickness" msgstr "ความหนาผนังด้านล่าง" +# AI Translated msgid "The number of bottom solid layers is increased when slicing if the thickness calculated by bottom shell layers is thinner than this value. This can avoid having too thin a shell when layer height is small. 0 means that this setting is disabled and the thickness of the bottom shell is determined simply by the number of bottom shell layers." -msgstr "จำนวนชั้นทึบด้านล่างจะเพิ่มขึ้นเมื่อสไลซ์หากความหนาที่คำนวณโดยชั้นเปลือกด้านล่างบางกว่าค่านี้ วิธีนี้สามารถหลีกเลี่ยงไม่ให้เปลือกบางเกินไปเมื่อชั้นมีความสูงน้อย 0 หมายความว่าการตั้งค่านี้ถูกปิดใช้งาน และความหนาของเปลือกด้านล่างจะถูกกำหนดโดยชั้นเปลือกด้านล่างอย่างแน่นอน" +msgstr "จำนวนเลเยอร์ทึบด้านล่างจะเพิ่มขึ้นเมื่อสไลซ์หากความหนาที่คำนวณโดยเลเยอร์ผนังด้านล่างบางกว่าค่านี้ วิธีนี้สามารถหลีกเลี่ยงไม่ให้ผนังบางเกินไปเมื่อความสูงเลเยอร์น้อย 0 หมายความว่าการตั้งค่านี้ถูกปิดใช้งาน และความหนาของผนังด้านล่างจะถูกกำหนดโดยเลเยอร์ผนังด้านล่างอย่างแน่นอน" msgid "Apply gap fill" msgstr "ใช้การเติมช่องว่าง" @@ -14830,6 +15055,7 @@ msgstr "เมื่อเปิดใช้งาน ค่ามุมสะ msgid "External bridge density" msgstr "ความหนาแน่นของสะพานภายนอก" +# AI Translated msgid "" "Controls the density (spacing) of external bridge lines.\n" "Theoretically, 100% means a solid bridge, but due to the tendency of bridge extrusions to sag, 100% may not be sufficient.\n" @@ -14850,12 +15076,13 @@ msgstr "" " - ข้อเสีย: อาจเกิดการดันเส้นเกิน ซึ่งลดคุณภาพผิวด้านล่างและด้านบน และเพิ่มความเสี่ยงการบิดเบี้ยว\n" "\n" "- ความหนาแน่นต่ำกว่า 100% (ต่ำสุด 10%):\n" -" - ข้อดี: ชั้นแรกอาจเป็นเส้นแบบเส้นใย พิมพ์เร็วขึ้นและระบายความร้อนดีขึ้นเพราะมีพื้นที่ให้อากาศหมุนเวียนรอบเส้นสะพาน\n" +" - ข้อดี: เลเยอร์แรกอาจเป็นเส้นแบบเส้นใย พิมพ์เร็วขึ้นและระบายความร้อนดีขึ้นเพราะมีพื้นที่ให้อากาศหมุนเวียนรอบเส้นสะพาน\n" " - ข้อเสีย: อาจย้อยตัวและผิวไม่เรียบ" msgid "Internal bridge density" msgstr "ความหนาแน่นสะพานภายใน" +# AI Translated msgid "" "Controls the density (spacing) of internal bridge lines.\n" "Internal bridges act as intermediate support between sparse infill and top solid infill and can strongly affect top surface quality.\n" @@ -14874,18 +15101,19 @@ msgstr "" "สะพานด้านในทำหน้าที่เป็นส่วนรองรับชั่วคราวระหว่างไส้ในแบบโปร่งกับไส้ในแบบทึบด้านบน และส่งผลต่อคุณภาพผิวด้านบนอย่างมาก\n" "\n" "- ความหนาแน่นมากกว่า 100% (แนะนำสูงสุด 125%):\n" -" - ข้อดี: เพิ่มความแข็งแรงของสะพานด้านในและการรองรับใต้ชั้นบน ลดการย้อยตัวและปรับปรุงผิวด้านบน\n" +" - ข้อดี: เพิ่มความแข็งแรงของสะพานด้านในและการรองรับใต้เลเยอร์บน ลดการย้อยตัวและปรับปรุงผิวด้านบน\n" " - ข้อเสีย: ใช้วัสดุและเวลาพิมพ์มากขึ้น ความหนาแน่นเกินไปอาจทำให้ดันเส้นเกินและเกิดความเครียดภายใน\n" "\n" "- ความหนาแน่นต่ำกว่า 100% (ต่ำสุด 10%):\n" " - ข้อดี: ลดการโป่งของผิวด้านบนและระบายความร้อนดีขึ้น (อากาศไหลผ่านสะพานได้มากขึ้น) และอาจพิมพ์เร็วขึ้น\n" " - ข้อเสีย: ลดการรองรับภายใน เพิ่มความเสี่ยงการย้อยตัวและข้อบกพร่องบนผิวด้านบน\n" "\n" -"ตัวเลือกนี้ทำงานได้ดีเป็นพิเศษเมื่อใช้ร่วมกับตัวเลือกสะพานด้านในชั้นที่สองเหนือไส้ใน เพื่อปรับปรุงการพิมพ์สะพานก่อนอัดไส้ในแบบทึบ" +"ตัวเลือกนี้ทำงานได้ดีเป็นพิเศษเมื่อใช้ร่วมกับตัวเลือกสะพานด้านในเลเยอร์ที่สองเหนือไส้ใน เพื่อปรับปรุงการพิมพ์สะพานก่อนอัดไส้ในแบบทึบ" msgid "Bridge flow ratio" msgstr "อัตราส่วนการไหลสะพาน" +# AI Translated msgid "" "This value governs the thickness of the external (visible) bridge layer.\n" "Values above 1.0: Increase the amount of material while maintaining line spacing. This can improve line contact and strength.\n" @@ -14893,28 +15121,30 @@ msgid "" "\n" "The actual bridge flow used is calculated by multiplying this value with the filament flow ratio, and if set, the object's flow ratio." msgstr "" -"ค่านี้กำหนดความหนาของชั้นสะพานด้านนอก (ที่มองเห็นได้)\n" +"ค่านี้กำหนดความหนาของเลเยอร์สะพานด้านนอก (ที่มองเห็นได้)\n" "ค่ามากกว่า 1.0: เพิ่มปริมาณวัสดุโดยคงระยะห่างเส้น ช่วยเพิ่มการสัมผัสและความแข็งแรงของเส้น\n" "ค่าน้อยกว่า 1.0: ลดปริมาณวัสดุโดยปรับระยะห่างเส้นเพื่อคงการสัมผัส ช่วยลดการย้อยตัว\n" "\n" -"อัตราการไหลของสะพานจริงคำนวณจากค่านี้คูณอัตราการไหลของเส้นพลาสติก และหากตั้งค่าไว้ อัตราการไหลของวัตถุ" +"อัตราส่วนการไหลของสะพานจริงคำนวณจากค่านี้คูณอัตราส่วนการไหลของเส้นพลาสติก และหากตั้งค่าไว้ อัตราส่วนการไหลของวัตถุ" +# AI Translated msgid "" "Line width of the Bridge. If expressed as a %, it will be computed over the nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" -"If set to 0, the line width will match the Internal solid infill width." +"If set to 0, the line width will match the Internal solid infill width, or the nozzle diameter for thick bridges." msgstr "" "ความกว้างเส้นของสะพาน หากระบุเป็น % จะคำนวณจากเส้นผ่านศูนย์กลางหัวฉีด\n" -"แนะนำให้ใช้ร่วมกับความหนาแน่นสะพานหรืออัตราการไหลสะพานที่สูงขึ้น\n" +"แนะนำให้ใช้ร่วมกับความหนาแน่นสะพานหรืออัตราส่วนการไหลสะพานที่สูงขึ้น\n" "\n" "ค่าสูงสุดคือ 100% หรือเส้นผ่านศูนย์กลางหัวฉีด\n" -"หากตั้งเป็น 0 ความกว้างเส้นจะเท่ากับความกว้างไส้ในแบบทึบภายใน" +"หากตั้งเป็น 0 ความกว้างเส้นจะเท่ากับความกว้างไส้ในแบบทึบ หรือเท่ากับเส้นผ่านศูนย์กลางหัวฉีดสำหรับสะพานหนา" msgid "Internal bridge flow ratio" msgstr "อัตราส่วนการไหลสะพานภายใน" +# AI Translated msgid "" "This value governs the thickness of the internal bridge layer. This is the first layer over sparse infill so increasing it may increase strength and upper layer quality.\n" "Values above 1.0: Increase the amount of material while maintaining line spacing. This can improve line contact and strength.\n" @@ -14922,15 +15152,16 @@ msgid "" "\n" "The actual bridge flow used is calculated by multiplying this value with the filament flow ratio, and if set, the object's flow ratio." msgstr "" -"ค่านี้กำหนดความหนาของชั้นสะพานด้านใน ซึ่งเป็นชั้นแรกเหนือไส้ในแบบโปร่ง การเพิ่มค่าอาจเพิ่มความแข็งแรงและคุณภาพชั้นบน\n" +"ค่านี้กำหนดความหนาของเลเยอร์สะพานด้านใน ซึ่งเป็นเลเยอร์แรกเหนือไส้ในแบบโปร่ง การเพิ่มค่าอาจเพิ่มความแข็งแรงและคุณภาพเลเยอร์บน\n" "ค่ามากกว่า 1.0: เพิ่มปริมาณวัสดุโดยคงระยะห่างเส้น ช่วยเพิ่มการสัมผัสและความแข็งแรงของเส้น\n" "ค่าน้อยกว่า 1.0: ลดปริมาณวัสดุโดยปรับระยะห่างเส้นเพื่อคงการสัมผัส ช่วยลดการย้อยตัว\n" "\n" -"อัตราการไหลของสะพานจริงคำนวณจากค่านี้คูณอัตราการไหลของเส้นพลาสติก และหากตั้งค่าไว้ อัตราการไหลของวัตถุ" +"อัตราส่วนการไหลของสะพานจริงคำนวณจากค่านี้คูณอัตราส่วนการไหลของเส้นพลาสติก และหากตั้งค่าไว้ อัตราส่วนการไหลของวัตถุ" msgid "Top surface flow ratio" msgstr "อัตราส่วนการไหลผิวด้านบน" +# AI Translated msgid "" "This factor affects the amount of material for top solid infill. You can decrease it slightly to have smooth surface finish.\n" "\n" @@ -14938,11 +15169,12 @@ msgid "" msgstr "" "ปัจจัยนี้ส่งผลต่อปริมาณวัสดุสำหรับไส้ในของแข็งด้านบน คุณสามารถลดลงเล็กน้อยเพื่อให้พื้นผิวเรียบ\n" "\n" -"การไหลของพื้นผิวด้านบนจริงที่ใช้คำนวณโดยการคูณค่านี้ด้วยอัตราส่วนการไหลของเส้นพลาสติก และหากตั้งค่าไว้ อัตราการไหลของวัตถุ" +"การไหลของพื้นผิวด้านบนจริงที่ใช้คำนวณโดยการคูณค่านี้ด้วยอัตราส่วนการไหลของเส้นพลาสติก และหากตั้งค่าไว้ อัตราส่วนการไหลของวัตถุ" msgid "Bottom surface flow ratio" msgstr "อัตราส่วนการไหลผิวด้านล่าง" +# AI Translated msgid "" "This factor affects the amount of material for bottom solid infill.\n" "\n" @@ -14950,7 +15182,7 @@ msgid "" msgstr "" "ปัจจัยนี้ส่งผลต่อปริมาณวัสดุสำหรับไส้ในของแข็งด้านล่าง\n" "\n" -"การไหล ไส้ใน ของแข็งด้านล่างจริงที่ใช้คำนวณโดยการคูณค่านี้ด้วยอัตราส่วนการไหลของเส้นพลาสติก และหากตั้งค่าไว้ อัตราการไหลของวัตถุ" +"การไหล ไส้ใน ของแข็งด้านล่างจริงที่ใช้คำนวณโดยการคูณค่านี้ด้วยอัตราส่วนการไหลของเส้นพลาสติก และหากตั้งค่าไว้ อัตราส่วนการไหลของวัตถุ" msgid "Set other flow ratios" msgstr "ตั้งค่าอัตราส่วนการไหลอื่นๆ" @@ -14958,21 +15190,24 @@ msgstr "ตั้งค่าอัตราส่วนการไหลอื msgid "Change flow ratios for other extrusion path types." msgstr "เปลี่ยนอัตราส่วนการไหลสำหรับเส้นทางการอัดขึ้นรูปประเภทอื่นๆ" +# AI Translated msgid "First layer flow ratio" -msgstr "อัตราการไหลของชั้นแรก" +msgstr "อัตราส่วนการไหลของเลเยอร์แรก" +# AI Translated msgid "" "This factor affects the amount of material on the first layer for the extrusion path roles listed in this section.\n" "\n" "For the first layer, the actual flow ratio for each path role (does not affect brims and skirts) will be multiplied by this value." msgstr "" -"ปัจจัยนี้ส่งผลต่อปริมาณวัสดุในชั้นแรกสำหรับประเภทการพิมพ์ที่แสดงอยู่ในส่วนนี้\n" +"ปัจจัยนี้ส่งผลต่อปริมาณวัสดุในเลเยอร์แรกสำหรับประเภทการพิมพ์ที่แสดงอยู่ในส่วนนี้\n" "\n" -"สำหรับชั้นแรก อัตราการไหลตามจริงสำหรับแต่ละประเภทการพิมพ์ (ไม่ส่งผลต่อขอบยึดชิ้นงานและเส้นล้อมชิ้นงาน) จะถูกคูณด้วยค่านี้" +"สำหรับเลเยอร์แรก อัตราส่วนการไหลตามจริงสำหรับแต่ละประเภทการพิมพ์ (ไม่ส่งผลต่อขอบยึดชิ้นงานและเส้นล้อมชิ้นงาน) จะถูกคูณด้วยค่านี้" msgid "Outer wall flow ratio" msgstr "อัตราส่วนการไหลของผนังด้านนอก" +# AI Translated msgid "" "This factor affects the amount of material for outer walls.\n" "\n" @@ -14980,11 +15215,12 @@ msgid "" msgstr "" "ปัจจัยนี้ส่งผลต่อปริมาณวัสดุสำหรับผนังด้านนอก\n" "\n" -"การไหลของผนังด้านนอกจริงที่ใช้คำนวณโดยการคูณค่านี้ด้วยอัตราส่วนการไหลของเส้นพลาสติก และหากตั้งค่าไว้ อัตราการไหลของวัตถุ" +"การไหลของผนังด้านนอกจริงที่ใช้คำนวณโดยการคูณค่านี้ด้วยอัตราส่วนการไหลของเส้นพลาสติก และหากตั้งค่าไว้ อัตราส่วนการไหลของวัตถุ" msgid "Inner wall flow ratio" msgstr "อัตราส่วนการไหลของผนังด้านใน" +# AI Translated msgid "" "This factor affects the amount of material for inner walls.\n" "\n" @@ -14992,11 +15228,12 @@ msgid "" msgstr "" "ปัจจัยนี้ส่งผลต่อปริมาณวัสดุสำหรับผนังด้านใน\n" "\n" -"การไหลของผนังด้านในจริงที่ใช้คำนวณโดยการคูณค่านี้ด้วยอัตราส่วนการไหลของเส้นพลาสติก และหากตั้งค่าไว้ อัตราการไหลของวัตถุ" +"การไหลของผนังด้านในจริงที่ใช้คำนวณโดยการคูณค่านี้ด้วยอัตราส่วนการไหลของเส้นพลาสติก และหากตั้งค่าไว้ อัตราส่วนการไหลของวัตถุ" msgid "Overhang flow ratio" msgstr "อัตราส่วนการไหลของส่วนยื่น" +# AI Translated msgid "" "This factor affects the amount of material for overhangs.\n" "\n" @@ -15004,11 +15241,12 @@ msgid "" msgstr "" "ปัจจัยนี้ส่งผลต่อปริมาณวัสดุสำหรับยื่น\n" "\n" -"การไหลยื่นออกมาจริงที่ใช้คำนวณโดยการคูณค่านี้ด้วยอัตราส่วนการไหลของเส้นพลาสติก และหากตั้งค่าไว้ อัตราการไหลของวัตถุ" +"การไหลยื่นออกมาจริงที่ใช้คำนวณโดยการคูณค่านี้ด้วยอัตราส่วนการไหลของเส้นพลาสติก และหากตั้งค่าไว้ อัตราส่วนการไหลของวัตถุ" msgid "Sparse infill flow ratio" msgstr "อัตราส่วนการไหลไส้ในแบบโปร่ง" +# AI Translated msgid "" "This factor affects the amount of material for sparse infill.\n" "\n" @@ -15016,11 +15254,12 @@ msgid "" msgstr "" "ปัจจัยนี้ส่งผลต่อปริมาณวัสดุสำหรับไส้ในแบบโปร่ง\n" "\n" -"การไหล ไส้ใน แบบเบาบางจริงที่ใช้คำนวณโดยการคูณค่านี้ด้วยอัตราส่วนการไหลของเส้นพลาสติก และหากตั้งค่าไว้ อัตราการไหลของวัตถุ" +"การไหล ไส้ใน แบบเบาบางจริงที่ใช้คำนวณโดยการคูณค่านี้ด้วยอัตราส่วนการไหลของเส้นพลาสติก และหากตั้งค่าไว้ อัตราส่วนการไหลของวัตถุ" msgid "Internal solid infill flow ratio" msgstr "อัตราส่วนการไหลไส้ในแบบทึบ" +# AI Translated msgid "" "This factor affects the amount of material for internal solid infill.\n" "\n" @@ -15028,11 +15267,12 @@ msgid "" msgstr "" "ปัจจัยนี้ส่งผลต่อปริมาณวัสดุสำหรับไส้ในของแข็งภายใน\n" "\n" -"การไหล ไส้ใน ของแข็งภายในจริงที่ใช้คำนวณโดยการคูณค่านี้ด้วยอัตราส่วนการไหลของเส้นพลาสติก และหากตั้งค่าไว้ อัตราการไหลของวัตถุ" +"การไหล ไส้ใน ของแข็งภายในจริงที่ใช้คำนวณโดยการคูณค่านี้ด้วยอัตราส่วนการไหลของเส้นพลาสติก และหากตั้งค่าไว้ อัตราส่วนการไหลของวัตถุ" msgid "Gap fill flow ratio" msgstr "อัตราส่วนการไหลเติมช่องว่าง" +# AI Translated msgid "" "This factor affects the amount of material for filling the gaps.\n" "\n" @@ -15040,11 +15280,12 @@ msgid "" msgstr "" "ปัจจัยนี้ส่งผลต่อปริมาณวัสดุในการเติมช่องว่าง\n" "\n" -"อัตราการเติมช่องว่างจริงที่ใช้คำนวณโดยการคูณค่านี้ด้วยอัตราส่วนการไหลของเส้นพลาสติก และหากตั้งค่าไว้ อัตราการไหลของวัตถุ" +"อัตราการเติมช่องว่างจริงที่ใช้คำนวณโดยการคูณค่านี้ด้วยอัตราส่วนการไหลของเส้นพลาสติก และหากตั้งค่าไว้ อัตราส่วนการไหลของวัตถุ" msgid "Support flow ratio" msgstr "อัตราส่วนการไหลส่วนรองรับ" +# AI Translated msgid "" "This factor affects the amount of material for support.\n" "\n" @@ -15052,11 +15293,12 @@ msgid "" msgstr "" "ปัจจัยนี้ส่งผลต่อปริมาณวัสดุที่รองรับ\n" "\n" -"กระแสรองรับจริงที่ใช้คำนวณโดยการคูณค่านี้ด้วยอัตราส่วนการไหลของเส้นพลาสติก และหากตั้งค่าไว้ อัตราการไหลของวัตถุ" +"กระแสรองรับจริงที่ใช้คำนวณโดยการคูณค่านี้ด้วยอัตราส่วนการไหลของเส้นพลาสติก และหากตั้งค่าไว้ อัตราส่วนการไหลของวัตถุ" msgid "Support interface flow ratio" msgstr "อัตราส่วนการไหลผิวสัมผัสส่วนรองรับ" +# AI Translated msgid "" "This factor affects the amount of material for the support interface.\n" "\n" @@ -15064,13 +15306,14 @@ msgid "" msgstr "" "ปัจจัยนี้ส่งผลต่อปริมาณวัสดุสำหรับอินเทอร์เฟซส่วนรองรับ\n" "\n" -"โฟลว์อินเทอร์เฟซส่วนรองรับจริงที่ใช้คำนวณโดยการคูณค่านี้ด้วยอัตราส่วนการไหลของเส้นพลาสติก และหากตั้งค่าไว้ อัตราการไหลของวัตถุ" +"โฟลว์อินเทอร์เฟซส่วนรองรับจริงที่ใช้คำนวณโดยการคูณค่านี้ด้วยอัตราส่วนการไหลของเส้นพลาสติก และหากตั้งค่าไว้ อัตราส่วนการไหลของวัตถุ" msgid "Precise wall" msgstr "ผนังที่แม่นยำ" +# AI Translated msgid "Improve shell precision by adjusting outer wall spacing. This also improves layer consistency. NOTE: This option will be ignored for outer-inner or inner-outer-inner wall sequences." -msgstr "ปรับปรุงความแม่นยำของเปลือกโดยการปรับระยะห่างผนังด้านนอก นอกจากนี้ยังช่วยปรับปรุงความสม่ำเสมอของชั้นอีกด้วย หมายเหตุ: ตัวเลือกนี้จะถูกละเว้นสำหรับลำดับผนังด้านนอก-ด้านใน หรือด้านใน-ด้านนอก-ด้านใน" +msgstr "ปรับปรุงความแม่นยำของผนังโดยการปรับระยะห่างผนังด้านนอก นอกจากนี้ยังช่วยปรับปรุงความสม่ำเสมอของเลเยอร์อีกด้วย หมายเหตุ: ตัวเลือกนี้จะถูกละเว้นสำหรับลำดับผนังด้านนอก-ด้านใน หรือด้านใน-ด้านนอก-ด้านใน" msgid "Only one wall on top surfaces" msgstr "มีเพียงผนังเดียวบนพื้นผิวด้านบน" @@ -15081,19 +15324,22 @@ msgstr "ใช้ผนังเพียงด้านเดียวบนพ msgid "One wall threshold" msgstr "เกณฑ์ผนังด้านหนึ่ง" +# AI Translated #, no-c-format, no-boost-format msgid "" "If a top surface has to be printed and it's partially covered by another layer, it won't be considered at a top layer where its width is below this value. This can be useful to not let the 'one perimeter on top' trigger on surface that should be covered only by perimeters. This value can be a mm or a % of the perimeter extrusion width.\n" "Warning: If enabled, artifacts can be created if you have some thin features on the next layer, like letters. Set this setting to 0 to remove these artifacts." msgstr "" -"หากต้องพิมพ์พื้นผิวด้านบนและปิดบางส่วนด้วยชั้นอื่น จะไม่ได้รับการพิจารณาที่ชั้นบนสุดซึ่งมีความกว้างต่ำกว่าค่านี้ วิธีนี้จะเป็นประโยชน์ในการไม่ปล่อยให้ 'เส้นรอบวงด้านบนหนึ่งเส้น' ทริกเกอร์บนพื้นผิวที่ควรครอบคลุมเฉพาะเส้นรอบวงเท่านั้น ค่านี้อาจเป็นหน่วย มม. หรือ % ของความกว้างของการอัดขึ้นรูปเส้นรอบวง\n" +"หากต้องพิมพ์พื้นผิวด้านบนและปิดบางส่วนด้วยเลเยอร์อื่น จะไม่ได้รับการพิจารณาที่เลเยอร์บนสุดซึ่งมีความกว้างต่ำกว่าค่านี้ วิธีนี้จะเป็นประโยชน์ในการไม่ปล่อยให้ 'เส้นรอบวงด้านบนหนึ่งเส้น' ทริกเกอร์บนพื้นผิวที่ควรครอบคลุมเฉพาะเส้นรอบวงเท่านั้น ค่านี้อาจเป็นหน่วย มม. หรือ % ของความกว้างของการอัดขึ้นรูปเส้นรอบวง\n" "คำเตือน: หากเปิดใช้งาน สามารถสร้างสิ่งประดิษฐ์ได้หากคุณมีคุณสมบัติบางๆ ในเลเยอร์ถัดไป เช่น ตัวอักษร ตั้งค่านี้เป็น 0 เพื่อลบสิ่งประดิษฐ์เหล่านี้" +# AI Translated msgid "Only one wall on first layer" -msgstr "มีเพียงผนังเดียวในชั้นแรก" +msgstr "มีเพียงผนังเดียวในเลเยอร์แรก" +# AI Translated msgid "Use only one wall on first layer, to give more space to the bottom infill pattern." -msgstr "ใช้ผนังเพียงชั้นเดียวในชั้นแรก เพื่อให้มีพื้นที่ด้านล่างมากขึ้น" +msgstr "ใช้ผนังเพียงชั้นเดียวในเลเยอร์แรก เพื่อให้มีพื้นที่ด้านล่างมากขึ้น" msgid "Extra perimeters on overhangs" msgstr "เส้นรอบวงเพิ่มเติมบนส่วนยื่น" @@ -15107,12 +15353,13 @@ msgstr "กลับด้านหน้าเลขคู่" msgid "Overhang reversal" msgstr "การกลับด้านส่วนยื่นออกมา" +# AI Translated msgid "" "Extrude perimeters that have a part over an overhang in the reverse direction on even layers. This alternating pattern can drastically improve steep overhangs.\n" "\n" "This setting can also help reduce part warping due to the reduction of stresses in the part walls." msgstr "" -"รีดเส้นรอบวงที่มีส่วนยื่นออกมาในทิศทางย้อนกลับบนชั้นคู่ รูปแบบการสลับนี้สามารถปรับปรุงระยะยื่นที่สูงชันได้อย่างมาก\n" +"รีดเส้นรอบวงที่มีส่วนยื่นออกมาในทิศทางย้อนกลับบนเลเยอร์คู่ รูปแบบการสลับนี้สามารถปรับปรุงระยะยื่นที่สูงชันได้อย่างมาก\n" "\n" "การตั้งค่านี้ยังช่วยลดการบิดงอของชิ้นส่วนเนื่องจากการลดความเค้นในผนังชิ้นส่วนอีกด้วย" @@ -15135,6 +15382,7 @@ msgstr "" msgid "Bridge counterbore holes" msgstr "สะพานหลุมเจาะ" +# AI Translated msgid "" "This option creates bridges for counterbore holes, allowing them to be printed without support. Available modes include:\n" "1. None: No bridge is created\n" @@ -15144,13 +15392,14 @@ msgstr "" "ตัวเลือกนี้จะสร้างสะพานเชื่อมสำหรับรูเจาะเคาน์เตอร์ ทำให้สามารถพิมพ์ได้โดยไม่ต้องมีส่วนรองรับ โหมดที่ใช้ได้ ได้แก่ :\n" "1. ไม่มี: ไม่มีการสร้างสะพาน\n" "2. เชื่อมโยงบางส่วน: เฉพาะส่วนหนึ่งของพื้นที่ที่ไม่ได้รับส่วนรองรับเท่านั้นที่จะถูกเชื่อมโยง\n" -"3. Sacrificial Layer: ชั้นสะพานบูชายัญเต็มรูปแบบจะถูกสร้างขึ้น" +"3. Sacrificial Layer: เลเยอร์สะพานบูชายัญเต็มรูปแบบจะถูกสร้างขึ้น" msgid "Partially bridged" msgstr "มีสะพานเชื่อมบางส่วน" +# AI Translated msgid "Sacrificial layer" -msgstr "ชั้นบูชายัญ" +msgstr "เลเยอร์บูชายัญ" msgid "Reverse threshold" msgstr "เกณฑ์การกลับด้าน" @@ -15177,6 +15426,7 @@ msgstr "เปิดตัวเลือกนี้เพื่อลดคว msgid "Slow down for curled perimeters" msgstr "ชะลอความเร็วลงสำหรับขอบเขตที่โค้งงอ" +# AI Translated #, no-c-format, no-boost-format msgid "" "Enable this option to slow down printing in areas where perimeters may have curled upwards.\n" @@ -15192,34 +15442,35 @@ msgid "" "3. If artifacts still appear, enable Extrusion Rate Smoothing (ERS) to further smooth the flow transitions.\n" "\n" "Note: When this option is enabled, overhang perimeters are treated like overhangs, meaning the overhang speed is applied even if the overhanging perimeter is part of a bridge.\n" -"For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 100% overhang speed will be applied." +"For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 75% overhang speed will be applied, limited by the bridge speed." msgstr "" "เปิดใช้งานตัวเลือกนี้เพื่อชะลอการพิมพ์ในพื้นที่ที่เส้นรอบวงอาจงอขึ้น\n" -"ตัวอย่างเช่น จะชะลอเพิ่มเติมเมื่อพิมพ์ส่วนยื่นที่มุมแหลม เช่นด้านหน้าของตัวเรือ Benchy ช่วยลดการงอที่สะสมข้ามหลายชั้น\n" +"ตัวอย่างเช่น จะชะลอเพิ่มเติมเมื่อพิมพ์ส่วนยื่นที่มุมแหลม เช่นด้านหน้าของตัวเรือ Benchy ช่วยลดการงอที่สะสมข้ามหลายเลเยอร์\n" "\n" "โดยทั่วไปแนะนำให้เปิดใช้งาน เว้นแต่ระบบระบายความร้อนของเครื่องพิมพ์แรงพอ หรือความเร็วพิมพ์ช้าพอที่เส้นรอบวงจะไม่งอ\n" -"หากพิมพ์ด้วยความเร็วเส้นรอบวงด้านนอกสูง พารามิเตอร์นี้อาจทำให้เกิดข้อบกพร่องบนผนังเมื่อชะลอ เนื่องจากความแตกต่างของความเร็วพิมพ์ที่อาจมาก ทำให้ชุดดันเส้นตอบสนองการเปลี่ยนอัตราการไหลไม่ทัน\n" -"สาเหตุหลักของข้อบกพร่องเหล่านี้มักมาจากการปรับ PA คลาดเคลื่อนเล็กน้อย โดยเฉพาะเมื่อใช้ร่วมกับ PA smooth time ที่สูง\n" +"หากพิมพ์ด้วยความเร็วเส้นรอบวงด้านนอกสูง พารามิเตอร์นี้อาจทำให้เกิดสิ่งแปลกปลอมบนผนังเมื่อชะลอ เนื่องจากความแตกต่างของความเร็วพิมพ์ที่อาจมาก ทำให้ชุดดันเส้นตอบสนองการเปลี่ยนอัตราการไหลไม่ทัน\n" +"สาเหตุหลักของสิ่งแปลกปลอมเหล่านี้มักมาจากการปรับ PA คลาดเคลื่อนเล็กน้อย โดยเฉพาะเมื่อใช้ร่วมกับ PA smooth time ที่สูง\n" "\n" "คำแนะนำเมื่อเปิดใช้งานตัวเลือกนี้:\n" "1. ลด Pressure Advance smooth time เป็น 0.015 - 0.02 เพื่อให้ชุดดันเส้นตอบสนองการเปลี่ยนความเร็วได้เร็วขึ้น\n" "2. เพิ่มความเร็วพิมพ์ขั้นต่ำเพื่อจำกัดขนาดการชะลอและลดความแตกต่างระหว่างช่วงเร็วและช้า\n" -"3. หากยังมีข้อบกพร่อง ให้เปิดใช้งาน Extrusion Rate Smoothing (ERS) เพื่อปรับการเปลี่ยนอัตราการไหลให้เรียบขึ้น\n" +"3. หากยังมีสิ่งแปลกปลอม ให้เปิดใช้งานอัตราการอัดรีดให้เรียบ (ERS) เพื่อปรับการเปลี่ยนอัตราการไหลให้เรียบขึ้น\n" "\n" "หมายเหตุ: เมื่อเปิดใช้งานตัวเลือกนี้ เส้นรอบวงส่วนยื่นจะถูกจัดเป็นส่วนยื่น หมายความว่าจะใช้ความเร็วส่วนยื่นแม้เส้นรอบวงนั้นเป็นส่วนหนึ่งของสะพาน\n" -"ตัวอย่างเช่น เมื่อเส้นรอบวงยื่น 100% โดยไม่มีผนังรองรับจากด้านล่าง จะใช้ความเร็วส่วนยื่น 100%" +"ตัวอย่างเช่น เมื่อเส้นรอบวงยื่น 100% โดยไม่มีผนังรองรับจากด้านล่าง จะใช้ความเร็วส่วนยื่น 75% โดยจำกัดด้วยความเร็วสะพาน" msgid "mm/s or %" msgstr "มิลลิเมตร/วินาที หรือ %" +# AI Translated msgid "" "Speed of the externally visible bridge extrusions.\n" "\n" -"In addition, if Slow down for curled perimeters is disabled or Classic overhang mode is enabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." +"In addition, if Slow down for curled perimeters is disabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." msgstr "" "ความเร็วของการอัดขึ้นรูปสะพานที่มองเห็นได้จากภายนอก\n" "\n" -"นอกจากนี้ หากปิดใช้งานการชะลอความเร็วสำหรับขอบม้วนงอหรือเปิดใช้งานโหมดระยะยื่นแบบคลาสสิก มันจะเป็นความเร็วในการพิมพ์ของผนังส่วนยื่นที่รองรับน้อยกว่า 13% ไม่ว่าจะเป็นส่วนหนึ่งของสะพานหรือส่วนยื่นก็ตาม" +"นอกจากนี้ หากปิดใช้งาน \"ชะลอความเร็วลงสำหรับขอบเขตที่โค้งงอ\" จะเป็นความเร็วในการพิมพ์ของผนังส่วนยื่นที่รองรับน้อยกว่า 13% ไม่ว่าจะเป็นส่วนหนึ่งของสะพานหรือส่วนยื่นก็ตาม" msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%." msgstr "ความเร็วของสะพานภายใน หากค่าแสดงเป็นเปอร์เซ็นต์ ค่าดังกล่าวจะถูกคำนวณตาม bridge_speed ค่าเริ่มต้นคือ 150%" @@ -15286,6 +15537,7 @@ msgstr "ช่องว่างระหว่างเส้นขอบยึ msgid "Brim flow ratio" msgstr "อัตราส่วนการไหล ขอบยึดชิ้นงาน" +# AI Translated msgid "" "This factor affects the amount of material for brims.\n" "\n" @@ -15295,23 +15547,24 @@ msgid "" msgstr "" "ปัจจัยนี้ส่งผลต่อปริมาณวัสดุสำหรับขอบยึดชิ้นงาน\n" "\n" -"การไหลของขอบยึดชิ้นงานที่แท้จริงที่ใช้คำนวณโดยการคูณค่านี้ด้วยอัตราส่วนการไหลของเส้นพลาสติก และหากตั้งค่าไว้ อัตราการไหลของวัตถุ\n" +"การไหลของขอบยึดชิ้นงานที่แท้จริงที่ใช้คำนวณโดยการคูณค่านี้ด้วยอัตราส่วนการไหลของเส้นพลาสติก และหากตั้งค่าไว้ อัตราส่วนการไหลของวัตถุ\n" "\n" -"หมายเหตุ: ค่าผลลัพธ์จะไม่ได้รับผลกระทบจากอัตราส่วนการไหลของชั้นแรก" +"หมายเหตุ: ค่าผลลัพธ์จะไม่ได้รับผลกระทบจากอัตราส่วนการไหลของเลเยอร์แรก" msgid "Brim follows compensated outline" msgstr "Brim ตามแนวที่ชดเชยแล้ว" +# AI Translated msgid "" "When enabled, the brim is aligned with the first-layer perimeter geometry after Elephant Foot Compensation is applied.\n" "This option is intended for cases where Elephant Foot Compensation significantly alters the first-layer footprint.\n" "\n" "If your current setup already works well, enabling it may be unnecessary and can cause the brim to fuse with upper layers." msgstr "" -"เมื่อเปิดใช้งาน ขอบยึดชิ้นงานจะจัดแนวกับรูปทรงเส้นรอบวงชั้นแรกหลังจากใช้การชดเชยอาการฐานบาน\n" -"ตัวเลือกนี้มีไว้สำหรับกรณีที่การชดเชยอาการฐานบานเปลี่ยนแปลงรอยเท้าชั้นแรกอย่างมีนัยสำคัญ\n" +"เมื่อเปิดใช้งาน ขอบยึดชิ้นงานจะจัดแนวกับรูปทรงเส้นรอบวงเลเยอร์แรกหลังจากใช้การชดเชยอาการฐานบาน\n" +"ตัวเลือกนี้มีไว้สำหรับกรณีที่การชดเชยอาการฐานบานเปลี่ยนแปลงรอยเท้าเลเยอร์แรกอย่างมีนัยสำคัญ\n" "\n" -"หากการตั้งค่าปัจจุบันของคุณทำงานได้ดีอยู่แล้ว การเปิดใช้งานอาจไม่จำเป็นและอาจทำให้ขอบยึดชิ้นงานหลอมรวมกับชั้นบนได้" +"หากการตั้งค่าปัจจุบันของคุณทำงานได้ดีอยู่แล้ว การเปิดใช้งานอาจไม่จำเป็นและอาจทำให้ขอบยึดชิ้นงานหลอมรวมกับเลเยอร์บนได้" msgid "Combine brims" msgstr "รวมขอบยึดชิ้นงาน" @@ -15367,17 +15620,20 @@ msgstr "นิพจน์บูลีนที่ใช้ค่าการก 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 "นิพจน์บูลีนที่ใช้ค่าการกำหนดค่าของโปรไฟล์การพิมพ์ที่ใช้งานอยู่ หากนิพจน์นี้ประเมินว่าเป็นจริง โปรไฟล์นี้จะถือว่าเข้ากันได้กับโปรไฟล์การพิมพ์ที่ใช้งานอยู่" +# AI Translated msgid "This determines the print sequence, allowing you to print layer-by-layer or object-by-object." -msgstr "ลำดับการพิมพ์ ทีละชั้น หรือวัตถุต่อวัตถุ" +msgstr "ลำดับการพิมพ์ ทีละเลเยอร์ หรือวัตถุต่อวัตถุ" +# AI Translated msgid "By layer" -msgstr "ตามชั้น" +msgstr "ตามเลเยอร์" msgid "By object" msgstr "ตามวัตถุ" +# AI Translated msgid "Intra-layer order" -msgstr "คำสั่งภายในชั้น" +msgstr "คำสั่งภายในเลเยอร์" # AI Translated msgid "" @@ -15422,18 +15678,21 @@ msgstr "การพิมพ์ปกติ" msgid "This is the default acceleration for both normal printing and travel after the first layer." msgstr "การเร่งความเร็วเริ่มต้นของทั้งการพิมพ์และการเคลื่อนที่ตามปกติ ยกเว้นเลเยอร์เริ่มต้น" +# AI Translated msgid "Acceleration of travel moves." -msgstr "การเร่งความเร็วของการเดินทาง" +msgstr "การเร่งความเร็วของการเดินหัวเปล่า" +# AI Translated msgid "First layer travel" -msgstr "การเดินทางชั้นแรก" +msgstr "การเดินหัวเปล่าเลเยอร์แรก" +# AI Translated msgid "" "Travel acceleration of first layer.\n" "The percentage value is relative to Travel Acceleration." msgstr "" -"ความเร่งการเคลื่อนที่ของชั้นแรก\n" -"ค่าเปอร์เซ็นต์สัมพันธ์กับการเร่งความเร็วในการเดินทาง" +"ความเร่งการเคลื่อนที่ของเลเยอร์แรก\n" +"ค่าเปอร์เซ็นต์สัมพันธ์กับการเร่งความเร็วในการเดินหัวเปล่า" msgid "mm/s² or %" msgstr "มม./วินาที² หรือ %" @@ -15478,8 +15737,9 @@ msgstr "ความเร็วของพัดลมดูดอากาศ msgid "No cooling for the first" msgstr "ไม่มีการระบายความร้อนในช่วงแรก" +# AI Translated msgid "Turn off all cooling fans for the first few layers. This can be used to improve build plate adhesion." -msgstr "ปิดพัดลมระบายความร้อนทั้งหมดในช่วงสองสามชั้นแรก สามารถใช้เพื่อปรับปรุงการยึดเกาะของแผ่นรองพื้น" +msgstr "ปิดพัดลมระบายความร้อนทั้งหมดในช่วงสองสามเลเยอร์แรก สามารถใช้เพื่อปรับปรุงการยึดเกาะของฐานพิมพ์" msgid "Don't support bridges" msgstr "ไม่สร้างส่วนรองรับสำหรับสะพาน" @@ -15514,6 +15774,7 @@ msgstr "" msgid "Extra bridge layers (beta)" msgstr "เลเยอร์บริดจ์พิเศษ (เบต้า)" +# AI Translated msgid "" "This option enables the generation of an extra bridge layer over internal and/or external bridges.\n" "\n" @@ -15527,17 +15788,17 @@ msgid "" "3. Internal bridge only - generates second bridge layers for internal bridges over sparse infill only. Please note that the internal bridges count towards the top shell layer count of your model. The second internal bridge layer will be extruded as close to perpendicular to the first as possible. If multiple regions in the same island, with varying bridge angles are present, the last region of that island will be selected as the angle reference\n" "4. Apply to all - generates second bridge layers for both internal and external-facing bridges\n" msgstr "" -"ตัวเลือกนี้ช่วยให้สร้างชั้นสะพานพิเศษเหนือสะพานภายในและ/หรือภายนอกได้\n" +"ตัวเลือกนี้ช่วยให้สร้างเลเยอร์สะพานพิเศษเหนือสะพานภายในและ/หรือภายนอกได้\n" "\n" -"ชั้นสะพานพิเศษช่วยปรับปรุงรูปลักษณ์และความน่าเชื่อถือของสะพาน เพราะไส้ในแบบทึบได้รับการรองรับดีขึ้น มีประโยชน์อย่างยิ่งกับเครื่องพิมพ์ความเร็วสูงที่ความเร็วสะพานและไส้ในแบบทึบต่างกันมาก ชั้นสะพานพิเศษช่วยลดการโป่งของผิวด้านบน รวมถึงลดการแยกตัวของชั้นสะพานภายนอกจากเส้นรอบวงโดยรอบ\n" +"เลเยอร์สะพานพิเศษช่วยปรับปรุงรูปลักษณ์และความน่าเชื่อถือของสะพาน เพราะไส้ในแบบทึบได้รับการรองรับดีขึ้น มีประโยชน์อย่างยิ่งกับเครื่องพิมพ์ความเร็วสูงที่ความเร็วสะพานและไส้ในแบบทึบต่างกันมาก เลเยอร์สะพานพิเศษช่วยลดการโป่งของผิวด้านบน รวมถึงลดการแยกตัวของเลเยอร์สะพานภายนอกจากเส้นรอบวงโดยรอบ\n" "\n" "โดยทั่วไปขอแนะนำให้ตั้งค่านี้เป็น 'สะพานภายนอกเท่านั้น' เป็นอย่างน้อย เว้นแต่จะพบปัญหาเฉพาะกับโมเดลที่แบ่งส่วน\n" "\n" "ตัวเลือก:\n" -"1. ปิดใช้งาน - ไม่สร้างชั้นสะพานที่สอง นี่เป็นค่าเริ่มต้นและตั้งค่าไว้เพื่อความเข้ากันได้\n" -"2. สะพานภายนอกเท่านั้น - สร้างชั้นสะพานที่สองสำหรับสะพานที่หันหน้าไปทางภายนอกเท่านั้น โปรดทราบว่าสะพานขนาดเล็กที่สั้นกว่าหรือแคบกว่าจำนวนเส้นรอบวงที่ตั้งไว้จะถูกข้ามไป เนื่องจากจะไม่ได้รับประโยชน์จากชั้นสะพานที่สอง หากสร้างขึ้น ชั้นสะพานที่สองจะถูกอัดรีดขนานกับชั้นสะพานแรกเพื่อเสริมความแข็งแรงของสะพาน\n" -"3. สะพานภายในเท่านั้น - สร้างชั้นสะพานที่สองสำหรับสะพานภายในเหนือไส้ในแบบโปร่งเท่านั้น โปรดทราบว่าสะพานภายในจะนับรวมกับจำนวนชั้นเปลือกด้านบนของโมเดล ชั้นสะพานภายในที่สองจะถูกอัดรีดให้ใกล้เคียงกับแนวตั้งฉากกับชั้นแรกมากที่สุด หากมีหลายพื้นที่ในเกาะเดียวกันพร้อมมุมสะพานต่างกัน พื้นที่สุดท้ายของเกาะนั้นจะถูกเลือกเป็นมุมอ้างอิง\n" -"4. นำไปใช้กับทั้งหมด - สร้างชั้นสะพานที่สองสำหรับสะพานที่หันหน้าไปทางภายในและภายนอก\n" +"1. ปิดใช้งาน - ไม่สร้างเลเยอร์สะพานที่สอง นี่เป็นค่าเริ่มต้นและตั้งค่าไว้เพื่อความเข้ากันได้\n" +"2. สะพานภายนอกเท่านั้น - สร้างเลเยอร์สะพานที่สองสำหรับสะพานที่หันหน้าไปทางภายนอกเท่านั้น โปรดทราบว่าสะพานขนาดเล็กที่สั้นกว่าหรือแคบกว่าจำนวนเส้นรอบวงที่ตั้งไว้จะถูกข้ามไป เนื่องจากจะไม่ได้รับประโยชน์จากเลเยอร์สะพานที่สอง หากสร้างขึ้น เลเยอร์สะพานที่สองจะถูกอัดรีดขนานกับเลเยอร์สะพานแรกเพื่อเสริมความแข็งแรงของสะพาน\n" +"3. สะพานภายในเท่านั้น - สร้างเลเยอร์สะพานที่สองสำหรับสะพานภายในเหนือไส้ในแบบโปร่งเท่านั้น โปรดทราบว่าสะพานภายในจะนับรวมกับจำนวนเลเยอร์ผนังด้านบนของโมเดล เลเยอร์สะพานภายในที่สองจะถูกอัดรีดให้ใกล้เคียงกับแนวตั้งฉากกับเลเยอร์แรกมากที่สุด หากมีหลายพื้นที่ในเกาะเดียวกันพร้อมมุมสะพานต่างกัน พื้นที่สุดท้ายของเกาะนั้นจะถูกเลือกเป็นมุมอ้างอิง\n" +"4. นำไปใช้กับทั้งหมด - สร้างเลเยอร์สะพานที่สองสำหรับสะพานที่หันหน้าไปทางภายในและภายนอก\n" msgid "External bridge only" msgstr "สะพานภายนอกเท่านั้น" @@ -15600,9 +15861,11 @@ msgstr "แทรก G-code ระหว่างวัตถุ พาราม msgid "Add end G-code when finishing the printing of this filament." msgstr "สิ้นสุด G-code เมื่อเสร็จสิ้นการพิมพ์เส้นพลาสติกนี้" +# AI Translated msgid "Ensure vertical shell thickness" -msgstr "ตรวจสอบความหนาของเปลือกแนวตั้ง" +msgstr "ตรวจสอบความหนาของผนังแนวตั้ง" +# AI Translated msgid "" "Add solid infill near sloping surfaces to guarantee the vertical shell thickness (top+bottom solid layers)\n" "None: No solid infill will be added anywhere. Caution: Use this option carefully if your model has sloped surfaces\n" @@ -15611,7 +15874,7 @@ msgid "" "All: Add solid infill for all suitable sloping surfaces\n" "Default value is All." msgstr "" -"เพิ่มไส้ในแบบทึบใกล้พื้นผิวลาดเอียงเพื่อรับประกันความหนาเปลือกในแนวตั้ง (ชั้นทึบบน + ล่าง)\n" +"เพิ่มไส้ในแบบทึบใกล้พื้นผิวลาดเอียงเพื่อรับประกันความหนาผนังในแนวตั้ง (เลเยอร์ทึบบน + ล่าง)\n" "ไม่มี: จะไม่เพิ่มไส้ในแบบทึบในส่วนใดเลย ข้อควรระวัง: ใช้ตัวเลือกนี้อย่างระมัดระวังหากโมเดลมีพื้นผิวลาดเอียง\n" "เฉพาะจุดวิกฤต: หลีกเลี่ยงการเพิ่มไส้ในแบบทึบสำหรับผนัง\n" "ปานกลาง: เพิ่มไส้ในแบบทึบเฉพาะพื้นผิวที่ลาดเอียงมาก\n" @@ -15661,8 +15924,9 @@ msgstr "เกลียวแปดเหลี่ยม" msgid "Top surface density" msgstr "ความหนาแน่นผิวด้านบน" +# AI Translated msgid "Density of top surface layer. A value of 100% creates a fully solid, smooth top layer. Reducing this value results in a textured top surface, according to the chosen top surface pattern. A value of 0% will result in only the walls on the top layer being created. Intended for aesthetic or functional purposes, not to fix issues such as over-extrusion." -msgstr "ความหนาแน่นของชั้นผิวด้านบน ค่า 100% จะสร้างชั้นบนสุดที่เรียบและแข็งเต็มที่ การลดค่านี้ส่งผลให้พื้นผิวด้านบนมีพื้นผิวตามรูปแบบพื้นผิวด้านบนที่เลือก ค่า 0% จะส่งผลให้มีการสร้างเฉพาะผนังชั้นบนสุดเท่านั้น มีวัตถุประสงค์เพื่อความสวยงามหรือการใช้งาน ไม่ใช่เพื่อแก้ไขปัญหา เช่น การอัดขึ้นรูปมากเกินไป" +msgstr "ความหนาแน่นของเลเยอร์ผิวด้านบน ค่า 100% จะสร้างเลเยอร์บนสุดที่เรียบและแข็งเต็มที่ การลดค่านี้ส่งผลให้พื้นผิวด้านบนมีพื้นผิวตามรูปแบบพื้นผิวด้านบนที่เลือก ค่า 0% จะส่งผลให้มีการสร้างเฉพาะผนังเลเยอร์บนสุดเท่านั้น มีวัตถุประสงค์เพื่อความสวยงามหรือการใช้งาน ไม่ใช่เพื่อแก้ไขปัญหา เช่น การอัดขึ้นรูปมากเกินไป" # AI Translated msgid "Top surface expansion" @@ -15727,11 +15991,12 @@ msgstr "รูปแบบเส้นของไส้ในพื้นผิ msgid "Bottom surface density" msgstr "ความหนาแน่นผิวด้านล่าง" +# AI Translated msgid "" "Density of the bottom surface layer. Intended for aesthetic or functional purposes, not to fix issues such as over-extrusion.\n" "WARNING: Lowering this value may negatively affect bed adhesion." msgstr "" -"ความหนาแน่นของชั้นผิวด้านล่าง มีวัตถุประสงค์เพื่อความสวยงามหรือการใช้งาน ไม่ใช่เพื่อแก้ไขปัญหา เช่น การอัดขึ้นรูปมากเกินไป\n" +"ความหนาแน่นของเลเยอร์ผิวด้านล่าง มีวัตถุประสงค์เพื่อความสวยงามหรือการใช้งาน ไม่ใช่เพื่อแก้ไขปัญหา เช่น การอัดขึ้นรูปมากเกินไป\n" "คำเตือน: การลดค่านี้อาจส่งผลเสียต่อการยึดเกาะของฐานพิมพ์" # AI Translated @@ -15777,8 +16042,9 @@ msgstr "ความเร็วของผนังด้านนอกซึ msgid "Small perimeters" msgstr "เส้นรอบวงเล็ก" -msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above. Set to zero for auto." -msgstr "การตั้งค่าแยกนี้จะส่งผลต่อความเร็วของเส้นรอบวงที่มีรัศมี <= small_perimeter_threshold (โดยปกติคือรู) หากแสดงเป็นเปอร์เซ็นต์ (เช่น 80%) ระบบจะคำนวณตามการตั้งค่าความเร็วผนังด้านนอกด้านบน ตั้งค่าเป็นศูนย์สำหรับรถยนต์" +# AI Translated +msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above." +msgstr "การตั้งค่าแยกนี้จะส่งผลต่อความเร็วของเส้นรอบวงที่มีรัศมี <= small_perimeter_threshold (โดยปกติคือรู) หากแสดงเป็นเปอร์เซ็นต์ (เช่น 80%) ระบบจะคำนวณตามการตั้งค่าความเร็วผนังด้านนอกข้างต้น" msgid "Small perimeters threshold" msgstr "เกณฑ์ขอบเขตขนาดเล็ก" @@ -15791,8 +16057,8 @@ msgid "Small support perimeters" msgstr "เส้นรอบรูปส่วนรองรับขนาดเล็ก" # AI Translated -msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above. Set to zero for auto." -msgstr "เช่นเดียวกับ \"Small perimeters\" แต่สำหรับส่วนรองรับ การตั้งค่าแยกนี้จะส่งผลต่อความเร็วของส่วนรองรับสำหรับพื้นที่ <= `small_support_perimeter_threshold` หากแสดงเป็นเปอร์เซ็นต์ (เช่น 80%) จะคำนวณจากการตั้งค่าความเร็วส่วนรองรับหรืออินเทอร์เฟซส่วนรองรับด้านบน ตั้งเป็นศูนย์เพื่อใช้อัตโนมัติ" +msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above." +msgstr "เช่นเดียวกับ \"เส้นรอบวงเล็ก\" แต่สำหรับส่วนรองรับ การตั้งค่าแยกนี้จะส่งผลต่อความเร็วของส่วนรองรับสำหรับพื้นที่ <= `small_support_perimeter_threshold` หากแสดงเป็นเปอร์เซ็นต์ (เช่น 80%) จะคำนวณจากการตั้งค่าความเร็วส่วนรองรับหรือผิวสัมผัสส่วนรองรับข้างต้น" # AI Translated msgid "Small support perimeters threshold" @@ -15805,22 +16071,23 @@ msgstr "ตั้งค่าเกณฑ์สำหรับความยา msgid "Walls printing order" msgstr "สั่งพิมพ์ผนัง" +# AI Translated msgid "" "Print sequence of the internal (inner) and external (outer) walls.\n" "\n" "Use Inner/Outer for best overhangs. This is because the overhanging walls can adhere to a neighbouring perimeter while printing. However, this option results in slightly reduced surface quality as the external perimeter is deformed by being squashed to the internal perimeter.\n" "\n" -"Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended against the Outer/Inner option in most cases.\n" +"Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended over the Outer/Inner option in most cases.\n" "\n" "Use Outer/Inner for the same external wall quality and dimensional accuracy benefits of Inner/Outer/Inner option. However, the Z seams will appear less consistent as the first extrusion of a new layer starts on a visible surface." msgstr "" "ลำดับการพิมพ์ของผนังภายใน (ด้านใน) และภายนอก (ด้านนอก)\n" "\n" -"ใช้ด้านใน/ด้านนอกเพื่อให้ได้ระยะยื่นที่ดีที่สุด เนื่องจากผนังที่ยื่นออกมาสามารถยึดติดกับปริมณฑลใกล้เคียงขณะพิมพ์ได้ อย่างไรก็ตาม ตัวเลือกนี้ส่งผลให้คุณภาพพื้นผิวลดลงเล็กน้อย เนื่องจากเส้นรอบวงภายนอกเสียรูปเนื่องจากการถูกแบนไปยังเส้นรอบวงภายใน\n" +"ใช้ ภายใน/ภายนอก เพื่อให้ได้ส่วนยื่นที่ดีที่สุด เนื่องจากผนังที่ยื่นออกมาสามารถยึดติดกับเส้นรอบวงที่อยู่ติดกันขณะพิมพ์ได้ อย่างไรก็ตาม ตัวเลือกนี้ทำให้คุณภาพพื้นผิวลดลงเล็กน้อย เนื่องจากเส้นรอบวงภายนอกเสียรูปจากการถูกกดทับเข้ากับเส้นรอบวงภายใน\n" "\n" -"ใช้ด้านใน/ด้านนอก/ด้านในเพื่อให้ได้พื้นผิวภายนอกที่ดีที่สุดและความแม่นยำของขนาด เนื่องจากผนังภายนอกถูกพิมพ์โดยไม่ถูกรบกวนจากขอบเขตภายใน อย่างไรก็ตาม ประสิทธิภาพส่วนยื่นจะลดลงเนื่องจากไม่มีขอบเขตภายในให้พิมพ์ติดกับผนังภายนอก ตัวเลือกนี้ต้องใช้ผนังอย่างน้อย 3 แผ่นจึงจะมีประสิทธิภาพ เนื่องจากจะพิมพ์ผนังภายในจากปริมณฑลที่ 3 เป็นต้นไป จากนั้นจึงพิมพ์ปริมณฑลภายนอก และสุดท้ายคือปริมณฑลภายในแรก แนะนำให้ใช้ตัวเลือกนี้กับตัวเลือกด้านนอก/ด้านในในกรณีส่วนใหญ่\n" +"ใช้ ภายใน/ภายนอก/ภายใน เพื่อให้ได้พื้นผิวภายนอกที่ดีที่สุดและความแม่นยำของขนาด เนื่องจากผนังภายนอกถูกพิมพ์โดยไม่ถูกรบกวนจากเส้นรอบวงภายใน อย่างไรก็ตาม ประสิทธิภาพของส่วนยื่นจะลดลงเนื่องจากไม่มีเส้นรอบวงภายในให้พิมพ์ผนังภายนอกยึดติด ตัวเลือกนี้ต้องใช้ผนังอย่างน้อย 3 รอบจึงจะได้ผล เนื่องจากจะพิมพ์ผนังภายในตั้งแต่เส้นรอบวงที่ 3 เป็นต้นไปก่อน จากนั้นจึงพิมพ์เส้นรอบวงภายนอก และสุดท้ายคือเส้นรอบวงภายในเส้นแรก ในกรณีส่วนใหญ่แนะนำให้ใช้ตัวเลือกนี้แทน ด้านนอก/ด้านใน\n" "\n" -"ใช้ด้านนอก/ด้านในเพื่อคุณภาพผนังภายนอกที่เหมือนกันและประโยชน์ด้านความแม่นยำของมิติของตัวเลือกด้านใน/ด้านนอก/ด้านใน อย่างไรก็ตาม รอยตะเข็บ Z จะดูสม่ำเสมอน้อยลงเนื่องจากการอัดขึ้นรูปชั้นใหม่ครั้งแรกเริ่มต้นบนพื้นผิวที่มองเห็นได้" +"ใช้ ด้านนอก/ด้านใน เพื่อให้ได้คุณภาพผนังภายนอกและความแม่นยำของขนาดเท่ากับ ภายใน/ภายนอก/ภายใน อย่างไรก็ตาม รอยตะเข็บ Z จะดูสม่ำเสมอน้อยลง เนื่องจากการอัดขึ้นรูปครั้งแรกของเลเยอร์ใหม่เริ่มต้นบนพื้นผิวที่มองเห็นได้" msgid "Inner/Outer" msgstr "ภายใน/ภายนอก" @@ -15846,6 +16113,7 @@ msgstr "" msgid "Wall loop direction" msgstr "ทิศทางของวงผนัง" +# AI Translated msgid "" "The direction which the contour wall loops are extruded when looking down from the top.\n" "Holes are printed in the opposite direction to the contour to maintain alignment with layers whose contour polygons are incomplete and change direction, also partially forming the contour of a hole.\n" @@ -15853,7 +16121,7 @@ msgid "" "This option will be disabled if spiral vase mode is enabled." msgstr "" "ทิศทางที่ลูปผนังรูปร่างถูกอัดออกมาเมื่อมองลงมาจากด้านบน\n" -"รูจะถูกพิมพ์ในทิศทางตรงกันข้ามกับเส้นขอบเพื่อรักษาแนวเดียวกับชั้นที่มีรูปหลายเหลี่ยมเส้นขอบไม่สมบูรณ์และเปลี่ยนทิศทาง รวมถึงสร้างรูปร่างของรูบางส่วนด้วย\n" +"รูจะถูกพิมพ์ในทิศทางตรงกันข้ามกับเส้นขอบเพื่อรักษาแนวเดียวกับเลเยอร์ที่มีรูปหลายเหลี่ยมเส้นขอบไม่สมบูรณ์และเปลี่ยนทิศทาง รวมถึงสร้างรูปร่างของรูบางส่วนด้วย\n" "\n" "ตัวเลือกนี้จะถูกปิดใช้งานหากเปิดใช้งานโหมดแจกันเกลียว" @@ -15895,14 +16163,16 @@ msgstr "ความสูงของปลายหัวฉีด" msgid "Bed mesh min" msgstr "ตาข่ายฐานพิมพ์ขั้นต่ำ" +# AI Translated msgid "This option sets the min point for the allowed bed mesh area. Due to the probe's XY offset, most printers are unable to probe the entire bed. To ensure the probe point does not go outside the bed area, the minimum and maximum points of the bed mesh should be set appropriately. OrcaSlicer ensures that adaptive_bed_mesh_min/adaptive_bed_mesh_max values do not exceed these min/max points. This information can usually be obtained from your printer manufacturer. The default setting is (-99999, -99999), which means there are no limits, thus allowing probing across the entire bed." -msgstr "ตัวเลือกนี้จะตั้งค่าจุดต่ำสุดสำหรับพื้นที่ตาข่ายเบดที่อนุญาต เนื่องจากออฟเซ็ต XY ของโพรบ เครื่องพิมพ์ส่วนใหญ่จึงไม่สามารถตรวจสอบทั้งเบดได้ เพื่อให้แน่ใจว่าจุดโพรบไม่ออกไปนอกบริเวณฐานพิมพ์ ควรตั้งค่าจุดต่ำสุดและสูงสุดของตาข่ายเบดอย่างเหมาะสม OrcaSlicer ช่วยให้มั่นใจได้ว่าค่าของ adaptive_bed_mesh_min/adaptive_bed_mesh_max จะต้องไม่เกินจุดต่ำสุด/สูงสุดเหล่านี้ โดยปกติข้อมูลนี้สามารถรับได้จากผู้ผลิตเครื่องพิมพ์ของคุณ การตั้งค่าเริ่มต้นคือ (-99999, -99999) ซึ่งหมายความว่าไม่มีขีดจำกัด จึงสามารถตรวจวัดทั่วทั้งฐานพิมพ์ได้" +msgstr "ตัวเลือกนี้จะตั้งค่าจุดต่ำสุดสำหรับพื้นที่ตาข่ายฐานพิมพ์ที่อนุญาต เนื่องจากออฟเซ็ต XY ของโพรบ เครื่องพิมพ์ส่วนใหญ่จึงไม่สามารถตรวจสอบทั้งฐานพิมพ์ได้ เพื่อให้แน่ใจว่าจุดโพรบไม่ออกไปนอกบริเวณฐานพิมพ์ ควรตั้งค่าจุดต่ำสุดและสูงสุดของตาข่ายฐานพิมพ์อย่างเหมาะสม OrcaSlicer ช่วยให้มั่นใจได้ว่าค่าของ adaptive_bed_mesh_min/adaptive_bed_mesh_max จะต้องไม่เกินจุดต่ำสุด/สูงสุดเหล่านี้ โดยปกติข้อมูลนี้สามารถรับได้จากผู้ผลิตเครื่องพิมพ์ของคุณ การตั้งค่าเริ่มต้นคือ (-99999, -99999) ซึ่งหมายความว่าไม่มีขีดจำกัด จึงสามารถตรวจวัดทั่วทั้งฐานพิมพ์ได้" msgid "Bed mesh max" msgstr "ตาข่ายฐานพิมพ์สูงสุด" +# AI Translated msgid "This option sets the max point for the allowed bed mesh area. Due to the probe's XY offset, most printers are unable to probe the entire bed. To ensure the probe point does not go outside the bed area, the minimum and maximum points of the bed mesh should be set appropriately. OrcaSlicer ensures that adaptive_bed_mesh_min/adaptive_bed_mesh_max values do not exceed these min/max points. This information can usually be obtained from your printer manufacturer. The default setting is (99999, 99999), which means there are no limits, thus allowing probing across the entire bed." -msgstr "ตัวเลือกนี้จะตั้งค่าจุดสูงสุดสำหรับพื้นที่ตาข่ายฐานพิมพ์ที่อนุญาต เนื่องจากออฟเซ็ต XY ของโพรบ เครื่องพิมพ์ส่วนใหญ่จึงไม่สามารถตรวจสอบทั้งเบดได้ เพื่อให้แน่ใจว่าจุดโพรบไม่ออกไปนอกบริเวณฐานพิมพ์ ควรตั้งค่าจุดต่ำสุดและสูงสุดของตาข่ายเบดอย่างเหมาะสม OrcaSlicer ช่วยให้มั่นใจได้ว่าค่าของ adaptive_bed_mesh_min/adaptive_bed_mesh_max จะต้องไม่เกินจุดต่ำสุด/สูงสุดเหล่านี้ โดยปกติข้อมูลนี้สามารถรับได้จากผู้ผลิตเครื่องพิมพ์ของคุณ การตั้งค่าเริ่มต้นคือ (99999, 99999) ซึ่งหมายความว่าไม่มีขีดจำกัด จึงสามารถตรวจวัดทั่วทั้งฐานพิมพ์ได้" +msgstr "ตัวเลือกนี้จะตั้งค่าจุดสูงสุดสำหรับพื้นที่ตาข่ายฐานพิมพ์ที่อนุญาต เนื่องจากออฟเซ็ต XY ของโพรบ เครื่องพิมพ์ส่วนใหญ่จึงไม่สามารถตรวจสอบทั้งฐานพิมพ์ได้ เพื่อให้แน่ใจว่าจุดโพรบไม่ออกไปนอกบริเวณฐานพิมพ์ ควรตั้งค่าจุดต่ำสุดและสูงสุดของตาข่ายฐานพิมพ์อย่างเหมาะสม OrcaSlicer ช่วยให้มั่นใจได้ว่าค่าของ adaptive_bed_mesh_min/adaptive_bed_mesh_max จะต้องไม่เกินจุดต่ำสุด/สูงสุดเหล่านี้ โดยปกติข้อมูลนี้สามารถรับได้จากผู้ผลิตเครื่องพิมพ์ของคุณ การตั้งค่าเริ่มต้นคือ (99999, 99999) ซึ่งหมายความว่าไม่มีขีดจำกัด จึงสามารถตรวจวัดทั่วทั้งฐานพิมพ์ได้" msgid "Probe point distance" msgstr "ระยะทางจุดโพรบ" @@ -15913,8 +16183,9 @@ msgstr "ตัวเลือกนี้จะตั้งค่าระยะ msgid "Mesh margin" msgstr "ขอบตาข่าย" +# AI Translated msgid "This option determines the additional distance by which the adaptive bed mesh area should be expanded in the XY directions." -msgstr "ตัวเลือกนี้กำหนดระยะเพิ่มเติมที่ควรขยายพื้นที่ตาข่ายเบดแบบปรับได้ในทิศทาง XY" +msgstr "ตัวเลือกนี้กำหนดระยะเพิ่มเติมที่ควรขยายพื้นที่ตาข่ายฐานพิมพ์ปรับได้ในทิศทาง XY" msgid "Grab length" msgstr "ความยาวคว้า" @@ -15931,6 +16202,7 @@ msgstr "การชดเชยชุดดันเส้น" msgid "The material may have volumetric change after switching between molten and crystalline states. This setting changes all extrusion flow of this filament in G-code proportionally. The recommended value range is between 0.95 and 1.05. You may be able to tune this value to get a nice flat surface if there is slight overflow or underflow." msgstr "วัสดุอาจมีการเปลี่ยนแปลงเชิงปริมาตรหลังจากสลับระหว่างสถานะหลอมเหลวและสถานะผลึก การตั้งค่านี้จะเปลี่ยนการไหลอัดรีดทั้งหมดของเส้นพลาสติกนี้ใน G-code ตามสัดส่วน ช่วงค่าที่แนะนำคือระหว่าง 0.95 ถึง 1.05 คุณอาจสามารถปรับค่านี้เพื่อให้ได้พื้นผิวที่เรียบสวยงามได้หากมีน้ำล้นหรืออันเดอร์โฟลว์เล็กน้อย" +# AI Translated msgid "" "The material may have volumetric change after switching between molten and crystalline states. This setting changes all extrusion flow of this filament in G-code proportionally. The recommended value range is between 0.95 and 1.05. You may be able to tune this value to get a nice flat surface if there is slight overflow or underflow.\n" "\n" @@ -15938,7 +16210,7 @@ msgid "" msgstr "" "วัสดุอาจมีการเปลี่ยนแปลงเชิงปริมาตรหลังจากสลับระหว่างสถานะหลอมเหลวและสถานะผลึก การตั้งค่านี้จะเปลี่ยนการไหลอัดรีดทั้งหมดของเส้นพลาสติกนี้ใน G-code ตามสัดส่วน ช่วงค่าที่แนะนำคือระหว่าง 0.95 ถึง 1.05 คุณอาจสามารถปรับค่านี้เพื่อให้ได้พื้นผิวที่เรียบสวยงามได้หากมีน้ำล้นหรืออันเดอร์โฟลว์เล็กน้อย\n" "\n" -"อัตราการไหลของวัตถุขั้นสุดท้ายคือค่านี้คูณด้วยอัตราการไหลของเส้นพลาสติก" +"อัตราส่วนการไหลของวัตถุขั้นสุดท้ายคือค่านี้คูณด้วยอัตราส่วนการไหลของเส้นพลาสติก" msgid "Enable pressure advance" msgstr "เปิดใช้ Pressure Advance" @@ -16140,8 +16412,9 @@ msgstr "เวลาที่ใช้ในการเปลี่ยนเค msgid "Bed temperature type" msgstr "ประเภทอุณหภูมิฐานพิมพ์" +# AI Translated msgid "This option determines how the bed temperature is set during slicing: based on the temperature of the first filament or the highest temperature of the printed filaments." -msgstr "ตัวเลือกนี้จะกำหนดวิธีการตั้งค่าอุณหภูมิฐานในระหว่างการสไลซ์: ขึ้นอยู่กับอุณหภูมิของเส้นพลาสติกเส้นแรกหรืออุณหภูมิสูงสุดของเส้นพลาสติกที่พิมพ์" +msgstr "ตัวเลือกนี้จะกำหนดวิธีการตั้งค่าอุณหภูมิฐานพิมพ์ในระหว่างการสไลซ์: ขึ้นอยู่กับอุณหภูมิของเส้นพลาสติกเส้นแรกหรืออุณหภูมิสูงสุดของเส้นพลาสติกที่พิมพ์" msgid "By First filament" msgstr "โดย เฟิร์ส ฟิลาเมนท์" @@ -16171,12 +16444,13 @@ msgstr "" msgid "Adaptive volumetric speed" msgstr "ความเร็วตามปริมาตรแบบปรับได้" +# AI Translated msgid "" "When enabled, the extrusion flow is limited by the smaller of the fitted value (calculated from line width and layer height) and the user-defined maximum flow. When disabled, only the user-defined maximum flow is applied.\n" "\n" "Note: Experimental and incomplete feature imported from BBS. Functional for some profiles that already have the variable saved." msgstr "" -"เมื่อเปิดใช้งาน การไหลของการอัดขึ้นรูปจะถูกจำกัดด้วยค่าที่น้อยกว่าของค่าที่ติดตั้ง (คำนวณจากความกว้างของเส้นและความสูงของชั้น) และการไหลสูงสุดที่ผู้ใช้กำหนด เมื่อปิดใช้งาน จะมีการใช้เฉพาะโฟลว์สูงสุดที่ผู้ใช้กำหนดเท่านั้น\n" +"เมื่อเปิดใช้งาน การไหลของการอัดขึ้นรูปจะถูกจำกัดด้วยค่าที่น้อยกว่าของค่าที่ติดตั้ง (คำนวณจากความกว้างของเส้นและความสูงเลเยอร์) และการไหลสูงสุดที่ผู้ใช้กำหนด เมื่อปิดใช้งาน จะมีการใช้เฉพาะโฟลว์สูงสุดที่ผู้ใช้กำหนดเท่านั้น\n" "\n" "หมายเหตุ: คุณลักษณะทดลองและไม่สมบูรณ์นำเข้าจาก BBS ใช้งานได้กับบางโปรไฟล์ที่ได้บันทึกตัวแปรไว้แล้ว" @@ -16273,23 +16547,28 @@ msgstr "Wipe Tower คูลลิ่ง" msgid "Temperature drop before entering filament tower" msgstr "อุณหภูมิลดลงก่อนเข้าหอใย" +# AI Translated msgid "Interface layer pre-extrusion distance" -msgstr "ระยะการอัดรีดชั้นอินเตอร์เฟซ" +msgstr "ระยะการอัดรีดเลเยอร์อินเทอร์เฟซ" +# AI Translated msgid "Pre-extrusion distance for prime tower interface layer (where different materials meet)." -msgstr "ระยะก่อนการอัดขึ้นรูปสำหรับชั้นอินเทอร์เฟซของ Prime Tower (ที่วัสดุที่แตกต่างกันมาบรรจบกัน)" +msgstr "ระยะก่อนการอัดขึ้นรูปสำหรับเลเยอร์อินเทอร์เฟซของ Prime Tower (ที่วัสดุที่แตกต่างกันมาบรรจบกัน)" +# AI Translated msgid "Interface layer pre-extrusion length" -msgstr "ความยาวชั้นอินเตอร์เฟซก่อนการอัดขึ้นรูป" +msgstr "ความยาวเลเยอร์อินเทอร์เฟซก่อนการอัดขึ้นรูป" +# AI Translated msgid "Pre-extrusion length for prime tower interface layer (where different materials meet)." -msgstr "ความยาวก่อนการอัดขึ้นรูปสำหรับชั้นอินเทอร์เฟซของ Prime Tower (ที่วัสดุที่แตกต่างกันมาบรรจบกัน)" +msgstr "ความยาวก่อนการอัดขึ้นรูปสำหรับเลเยอร์อินเทอร์เฟซของ Prime Tower (ที่วัสดุที่แตกต่างกันมาบรรจบกัน)" msgid "Tower ironing area" msgstr "พื้นที่รีดผิวแบบทาวเวอร์" +# AI Translated msgid "Ironing area for prime tower interface layer (where different materials meet)." -msgstr "พื้นที่รีดผิวสำหรับชั้นอินเทอร์เฟซของ Prime Tower (บริเวณที่วัสดุต่างกันมาบรรจบกัน)" +msgstr "พื้นที่รีดผิวสำหรับเลเยอร์อินเทอร์เฟซของ Prime Tower (บริเวณที่วัสดุต่างกันมาบรรจบกัน)" msgid "mm²" msgstr "มม.²" @@ -16297,14 +16576,16 @@ msgstr "มม.²" msgid "Interface layer purge length" msgstr "ความยาวการล้างเลเยอร์อินเทอร์เฟซ" +# AI Translated msgid "Purge length for prime tower interface layer (where different materials meet)." -msgstr "ความยาวในการไล่ล้างสำหรับชั้นอินเทอร์เฟซของ Prime Tower (เมื่อวัสดุต่างกันมาบรรจบกัน)" +msgstr "ความยาวในการไล่ล้างสำหรับเลเยอร์อินเทอร์เฟซของ Prime Tower (เมื่อวัสดุต่างกันมาบรรจบกัน)" msgid "Interface layer print temperature" msgstr "อุณหภูมิการพิมพ์เลเยอร์อินเทอร์เฟซ" +# AI Translated msgid "Print temperature for prime tower interface layer (where different materials meet). If set to -1, use max recommended nozzle temperature." -msgstr "อุณหภูมิการพิมพ์สำหรับชั้นอินเทอร์เฟซของ Prime Tower (เมื่อวัสดุต่างกันมาบรรจบกัน) หากตั้งค่าเป็น -1 ให้ใช้อุณหภูมิหัวฉีดสูงสุดที่แนะนำ" +msgstr "อุณหภูมิการพิมพ์สำหรับเลเยอร์อินเทอร์เฟซของ Prime Tower (เมื่อวัสดุต่างกันมาบรรจบกัน) หากตั้งค่าเป็น -1 ให้ใช้อุณหภูมิหัวฉีดสูงสุดที่แนะนำ" msgid "Speed of the last cooling move" msgstr "ความเร็วของการทำความเย็นครั้งล่าสุด" @@ -16512,11 +16793,13 @@ msgstr "" "จัดทิศทางไส้ใน สะพาน รีดผิว และพื้นผิวด้านบน/ด้านล่างให้เป็นไปตามการวางแนวของโมเดลบนฐานพิมพ์\n" "เมื่อเปิดใช้งาน ทิศทางเหล่านี้จะหมุนไปพร้อมกับโมเดล เพื่อให้ฟีเจอร์ที่พิมพ์คงการวางแนวที่ตั้งใจไว้เทียบกับชิ้นงาน รักษาความแข็งแรงและลักษณะพื้นผิวที่เหมาะสมที่สุดไม่ว่าจะวางโมเดลอย่างไร" +# AI Translated msgid "Insert solid layers" -msgstr "แทรกชั้นทึบ" +msgstr "แทรกเลเยอร์ทึบ" +# AI Translated msgid "Insert solid infill at specific layers. Use N to insert every Nth layer, N#K to insert K consecutive solid layers every N layers (K is optional, e.g. '5#' equals '5#1'), or a comma-separated list (e.g. 1,7,9) to insert at explicit layers. Layers are 1-based." -msgstr "แทรก ไส้ใน แบบทึบที่ชั้นเฉพาะ ใช้ N เพื่อแทรกทุกเลเยอร์ N, N#K เพื่อแทรก K เลเยอร์ทึบต่อเนื่องกันทุกๆ เลเยอร์ N (K เป็นทางเลือก เช่น '5#' เท่ากับ '5#1') หรือรายการที่คั่นด้วยเครื่องหมายจุลภาค (เช่น 1,7,9) เพื่อแทรกในเลเยอร์ที่ชัดเจน เลเยอร์เป็นแบบ 1" +msgstr "แทรก ไส้ใน แบบทึบที่เลเยอร์เฉพาะ ใช้ N เพื่อแทรกทุกเลเยอร์ N, N#K เพื่อแทรก K เลเยอร์ทึบต่อเนื่องกันทุกๆ เลเยอร์ N (K เป็นทางเลือก เช่น '5#' เท่ากับ '5#1') หรือรายการที่คั่นด้วยเครื่องหมายจุลภาค (เช่น 1,7,9) เพื่อแทรกในเลเยอร์ที่ชัดเจน เลเยอร์เป็นแบบ 1" msgid "Fill Multiline" msgstr "ไส้ในหลายบรรทัด" @@ -16705,8 +16988,9 @@ msgstr "ความเร่งของไส้ในแบบโปร่ง msgid "Acceleration of internal solid infill. If the value is expressed as a percentage (e.g. 100%), it will be calculated based on the default acceleration." msgstr "ความเร่งของไส้ในของแข็งภายใน หากค่าแสดงเป็นเปอร์เซ็นต์ (เช่น 100%) ค่านั้นจะถูกคำนวณตามความเร่งเริ่มต้น" +# AI Translated msgid "This is the printing acceleration for the first layer. Using limited acceleration can improve build plate adhesion." -msgstr "ความเร่งของชั้นแรก การใช้ค่าที่ต่ำกว่าสามารถปรับปรุงการยึดเกาะของเพลตได้" +msgstr "ความเร่งของเลเยอร์แรก การใช้ค่าที่ต่ำกว่าสามารถปรับปรุงการยึดเกาะของฐานพิมพ์ได้" msgid "Enable accel_to_decel" msgstr "เปิดใช้งาน accel_to_decel" @@ -16739,63 +17023,79 @@ msgstr "กระตุกสำหรับพื้นผิวด้านบ msgid "Jerk for infill." msgstr "กระตุกเพื่อไส้ใน" +# AI Translated msgid "Jerk for the first layer." -msgstr "กระตุกสำหรับชั้นแรก" +msgstr "กระตุกสำหรับเลเยอร์แรก" +# AI Translated msgid "Jerk for travel." -msgstr "กระตุกสำหรับการเดินทาง" +msgstr "กระตุกสำหรับการเดินหัวเปล่า" +# AI Translated msgid "" "Travel jerk of first layer.\n" "The percentage value is relative to Travel Jerk." msgstr "" -"กระตุกการเดินทางของชั้นแรก\n" +"กระตุกการเดินหัวเปล่าของเลเยอร์แรก\n" "ค่าเปอร์เซ็นต์สัมพันธ์กับ Travel Jerk" +# AI Translated msgid "Line width of the first layer. If expressed as a %, it will be computed over the nozzle diameter." -msgstr "ความกว้างของเส้นของชั้นแรก หากแสดงเป็น % จะคำนวณตามเส้นผ่านศูนย์กลางของหัวฉีด" +msgstr "ความกว้างของเส้นของเลเยอร์แรก หากแสดงเป็น % จะคำนวณตามเส้นผ่านศูนย์กลางของหัวฉีด" +# AI Translated msgid "First layer height" -msgstr "ความสูงของชั้นแรก" +msgstr "ความสูงเลเยอร์แรก" +# AI Translated msgid "Height of the first layer. Making the first layer height thicker can improve build plate adhesion." -msgstr "ความสูงของชั้นแรก การเพิ่มความหนาของชั้นแรกสามารถช่วยให้ยึดเกาะกับฐานพิมพ์ได้ดีขึ้น" +msgstr "ความสูงเลเยอร์แรก การเพิ่มความหนาของเลเยอร์แรกสามารถช่วยให้ยึดเกาะกับฐานพิมพ์ได้ดีขึ้น" -msgid "This is the speed for the first layer except for solid infill sections." -msgstr "ความเร็วของชั้นแรก ยกเว้นส่วน ไส้ใน ที่เป็นของแข็ง" +# AI Translated +msgid "This is the speed for the walls and brim of the first layer." +msgstr "นี่คือความเร็วสำหรับผนังและขอบยึดชิ้นงานของเลเยอร์แรก" +# AI Translated msgid "First layer infill" -msgstr "ไส้ในชั้นแรก" +msgstr "ไส้ในเลเยอร์แรก" -msgid "This is the speed for solid infill parts of the first layer." -msgstr "ความเร็วของส่วน ไส้ใน ที่เป็นของแข็งของชั้นแรก" +# AI Translated +msgid "This is the speed for the first layer except for walls and brim, such as infill, gap fill and support." +msgstr "นี่คือความเร็วสำหรับเลเยอร์แรกยกเว้นผนังและขอบยึดชิ้นงาน เช่น ไส้ใน เติมช่องว่าง และส่วนรองรับ" +# AI Translated msgid "First layer travel speed" -msgstr "ความเร็วในการเดินทางชั้นแรก" +msgstr "ความเร็วในการเดินหัวเปล่าเลเยอร์แรก" msgid "Travel speed of the first layer." msgstr "ความเร็วเดินหัวเปล่าของเลเยอร์แรก" +# AI Translated msgid "Number of slow layers" -msgstr "จำนวนชั้นที่พิมพ์ช้าลง" +msgstr "จำนวนเลเยอร์ที่พิมพ์ช้าลง" +# AI Translated msgid "The first few layers are printed slower than normal. The speed is gradually increased in a linear fashion over the specified number of layers." -msgstr "สองสามชั้นแรกจะพิมพ์ช้ากว่าปกติ ความเร็วจะค่อยๆ เพิ่มขึ้นในลักษณะเชิงเส้นตามจำนวนเลเยอร์ที่ระบุ" +msgstr "สองสามเลเยอร์แรกจะพิมพ์ช้ากว่าปกติ ความเร็วจะค่อยๆ เพิ่มขึ้นในลักษณะเชิงเส้นตามจำนวนเลเยอร์ที่ระบุ" +# AI Translated msgid "First layer nozzle temperature" -msgstr "อุณหภูมิหัวฉีดชั้นแรก" +msgstr "อุณหภูมิหัวฉีดเลเยอร์แรก" +# AI Translated msgid "Nozzle temperature for printing the first layer with this filament" -msgstr "อุณหภูมิหัวฉีดสำหรับการพิมพ์ชั้นแรกเมื่อใช้ฟิลาเมนต์นี้" +msgstr "อุณหภูมิหัวฉีดสำหรับการพิมพ์เลเยอร์แรกเมื่อใช้ฟิลาเมนต์นี้" +# AI Translated msgid "Full fan speed at layer" -msgstr "ความเร็วพัดลมเต็มชั้น" +msgstr "ความเร็วพัดลมเต็มที่เลเยอร์" msgid "Fan speed will be ramped up linearly from zero at layer \"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower than \"close_fan_the_first_x_layers\", in which case the fan will be running at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "ความเร็วพัดลมจะเพิ่มขึ้นเชิงเส้นจากศูนย์ที่เลเยอร์ \"close_fan_the_first_x_layers\" ไปจนถึงสูงสุดที่เลเยอร์ \"full_fan_speed_layer\" \"full_fan_speed_layer\" จะถูกละเว้นหากต่ำกว่า \"close_fan_the_first_x_layers\" ซึ่งในกรณีนี้ พัดลมจะทำงานด้วยความเร็วสูงสุดที่อนุญาตที่เลเยอร์ \"close_fan_the_first_x_layers\" + 1" +# AI Translated msgid "layer" -msgstr "ชั้น" +msgstr "เลเยอร์" # AI Translated msgid "First layer fan speed" @@ -16873,8 +17173,9 @@ msgstr "ความเร็วรีดผิว" msgid "Filament-specific override for ironing speed. This allows you to customize the print speed of ironing lines for each filament type." msgstr "การแทนที่เส้นพลาสติกเฉพาะเพื่อความเร็วในการรีดผิว ซึ่งช่วยให้คุณปรับแต่งความเร็วในการพิมพ์ของเส้นรีดผิวสำหรับเส้นพลาสติกแต่ละประเภทได้" +# AI Translated msgid "This setting makes the toolhead randomly jitter while printing walls so that the surface has a rough textured look. This setting controls the fuzzy position." -msgstr "การตั้งค่านี้ทำให้หัวพิมพ์สั่นแบบสุ่มขณะพิมพ์ผนัง เพื่อให้พื้นผิวมีลักษณะหยาบ การตั้งค่านี้ควบคุมตำแหน่งของ fuzzy skin" +msgstr "การตั้งค่านี้ทำให้หัวพิมพ์สั่นแบบสุ่มขณะพิมพ์ผนัง เพื่อให้พื้นผิวมีลักษณะหยาบ การตั้งค่านี้ควบคุมตำแหน่งของผิวฟัซซี" msgid "Painted only" msgstr "ทาสีเท่านั้น" @@ -16903,15 +17204,18 @@ msgstr "ระยะจุดผิวฟัซซี" msgid "The average distance between the random points introduced on each line segment." msgstr "ระยะห่างเฉลี่ยระหว่างจุดสุ่มที่แนะนำในแต่ละส่วนของเส้น" +# AI Translated msgid "Apply fuzzy skin to first layer" -msgstr "ใช้ Fuzzy Skin กับชั้นแรก" +msgstr "ใช้ผิวฟัซซีกับเลเยอร์แรก" +# AI Translated msgid "Whether to apply fuzzy skin on the first layer." -msgstr "กำหนดว่าจะใช้ Fuzzy Skin กับชั้นแรกหรือไม่" +msgstr "กำหนดว่าจะใช้ผิวฟัซซีกับเลเยอร์แรกหรือไม่" msgid "Fuzzy skin generator mode" msgstr "โหมดสร้างผิวฟัซซี" +# AI Translated #, c-format, boost-format msgid "" "Fuzzy skin generation mode. Works only with Arachne!\n" @@ -16926,7 +17230,7 @@ msgstr "" "การอัดขึ้นรูป: โหมดเมื่อรูปแบบเกิดขึ้นจากปริมาณของพลาสติกที่อัดขึ้นรูป นี่เป็นอัลกอริธึมที่รวดเร็วและตรงไปตรงมา โดยไม่มีการเขย่าหัวฉีดโดยไม่จำเป็นซึ่งให้รูปแบบที่ราบรื่น แต่จะมีประโยชน์มากกว่าสำหรับการสร้างผนังที่หลวมทั่วทั้งบริเวณ\n" "รวม: โหมดข้อต่อ [การแทนที่] + [การอัดขึ้นรูป] ลักษณะของผนังจะคล้ายกับโหมด [Displacement] แต่ไม่มีรูพรุนระหว่างเส้นรอบวง\n" "\n" -"ความสนใจ! โหมด [การอัดขึ้นรูป] และ [รวม] ใช้งานได้เฉพาะพารามิเตอร์ fuzzy_skin_thickness ซึ่งไม่เกินความหนาของลูปที่พิมพ์ ในขณะเดียวกัน ความกว้างของการอัดขึ้นรูปสำหรับชั้นใดชั้นหนึ่งก็ไม่ควรต่ำกว่าระดับที่กำหนดด้วย โดยปกติจะเท่ากับ 15-25%% ของความสูงของชั้น ดังนั้น ความหนาของผิวฟัซซีสูงสุดที่มีความกว้างเส้นรอบวง 0.4 มม. และความสูงของชั้น 0.2 มม. จะเป็น 0.4-(0.2*0.25)=±0.35 มม.! หากคุณป้อนพารามิเตอร์ที่สูงกว่านี้ ข้อผิดพลาด Flow::spacing() จะปรากฏขึ้น และโมเดลจะไม่ถูกแบ่งส่วน คุณสามารถเลือกหมายเลขนี้ได้จนกว่าข้อผิดพลาดนี้จะเกิดขึ้นซ้ำ" +"ความสนใจ! โหมด [การอัดขึ้นรูป] และ [รวม] ใช้งานได้เฉพาะพารามิเตอร์ fuzzy_skin_thickness ซึ่งไม่เกินความหนาของลูปที่พิมพ์ ในขณะเดียวกัน ความกว้างของการอัดขึ้นรูปสำหรับเลเยอร์ใดเลเยอร์หนึ่งก็ไม่ควรต่ำกว่าระดับที่กำหนดด้วย โดยปกติจะเท่ากับ 15-25%% ของความสูงเลเยอร์ ดังนั้น ความหนาของผิวฟัซซีสูงสุดที่มีความกว้างเส้นรอบวง 0.4 มม. และความสูงเลเยอร์ 0.2 มม. จะเป็น 0.4-(0.2*0.25)=±0.35 มม.! หากคุณป้อนพารามิเตอร์ที่สูงกว่านี้ ข้อผิดพลาด Flow::spacing() จะปรากฏขึ้น และโมเดลจะไม่ถูกแบ่งส่วน คุณสามารถเลือกหมายเลขนี้ได้จนกว่าข้อผิดพลาดนี้จะเกิดขึ้นซ้ำ" msgid "Displacement" msgstr "การกระจัด" @@ -16937,8 +17241,9 @@ msgstr "การอัดขึ้นรูป" msgid "Combined" msgstr "รวม" +# AI Translated msgid "Fuzzy skin noise type" -msgstr "ประเภท Noise ของ Fuzzy Skin" +msgstr "ประเภท Noise ของผิวฟัซซี" msgid "" "Noise type to use for fuzzy skin generation:\n" @@ -16981,20 +17286,23 @@ msgstr "ขนาดลักษณะผิวฟัซซี" msgid "The base size of the coherent noise features, in mm. Higher values will result in larger features." msgstr "ขนาดฐานของคุณสมบัติเสียงที่สอดคล้องกัน หน่วยเป็น มม. ค่าที่สูงกว่าจะส่งผลให้มีคุณลักษณะที่ใหญ่ขึ้น" +# AI Translated msgid "Fuzzy Skin Noise Octaves" -msgstr "จำนวน Octave ของ Noise ใน Fuzzy Skin" +msgstr "จำนวน Octave ของ Noise ในผิวฟัซซี" msgid "The number of octaves of coherent noise to use. Higher values increase the detail of the noise, but also increase computation time." msgstr "จำนวนอ็อกเทฟของสัญญาณรบกวนที่สอดคล้องกันที่จะใช้ ค่าที่สูงกว่าจะเพิ่มรายละเอียดของสัญญาณรบกวน แต่ยังเพิ่มเวลาในการคำนวณด้วย" +# AI Translated msgid "Fuzzy skin noise persistence" -msgstr "ค่า Persistence ของ Noise ใน Fuzzy Skin" +msgstr "ค่า Persistence ของ Noise ในผิวฟัซซี" msgid "The decay rate for higher octaves of the coherent noise. Lower values will result in smoother noise." msgstr "อัตราการสลายตัวของอ็อกเทฟที่สูงขึ้นของสัญญาณรบกวนที่สอดคล้องกัน ค่าที่ต่ำกว่าจะส่งผลให้มีสัญญาณรบกวนที่นุ่มนวลขึ้น" +# AI Translated msgid "Number of ripples per layer" -msgstr "จำนวนระลอกคลื่นต่อชั้น" +msgstr "จำนวนระลอกคลื่นต่อเลเยอร์" msgid "Controls how many full cycles of ripples will be added per layer." msgstr "ควบคุมจำนวนระลอกคลื่นเต็มที่จะเพิ่มต่อเลเยอร์" @@ -17002,6 +17310,7 @@ msgstr "ควบคุมจำนวนระลอกคลื่นเต็ msgid "Ripple offset" msgstr "ระลอกชดเชย" +# AI Translated msgid "" "Shifts the ripple phase forward along the print path by the specified percentage of a wavelength each layer period.\n" "- 0% keeps every layer identical.\n" @@ -17011,7 +17320,7 @@ msgid "" "The shift is applied once every number of layers set by Layers between ripple offset, so layers within the same group are printed identically." msgstr "" "เลื่อนระยะระลอกคลื่นไปข้างหน้าตามเส้นทางการพิมพ์ตามเปอร์เซ็นต์ที่ระบุของความยาวคลื่นในแต่ละช่วงของเลเยอร์\n" -"- 0% ทำให้ทุกชั้นเหมือนกัน\n" +"- 0% ทำให้ทุกเลเยอร์เหมือนกัน\n" "- 50% เลื่อนรูปแบบลงครึ่งหนึ่งของความยาวคลื่น จึงสามารถกลับเฟสได้อย่างมีประสิทธิภาพ\n" "- 100% เลื่อนรูปแบบตามความยาวคลื่นเต็ม และกลับสู่เฟสเดิม\n" "\n" @@ -17034,8 +17343,9 @@ msgstr "" msgid "Filter out tiny gaps" msgstr "กรองช่องว่างเล็กๆ ออกไป" +# AI Translated msgid "Layers and Perimeters" -msgstr "ชั้นและปริมณฑล" +msgstr "เลเยอร์และปริมณฑล" msgid "Don't print gap fill with a length is smaller than the threshold specified (in mm). This setting applies to top, bottom and solid infill and, if using the classic perimeter generator, to wall gap fill." msgstr "อย่าพิมพ์การเติมช่องว่างโดยมีความยาวน้อยกว่าเกณฑ์ที่ระบุ (เป็นมม.) การตั้งค่านี้ใช้กับการเติมช่องว่างด้านบน ด้านล่าง และทึบ และหากใช้เครื่องกำเนิดเส้นรอบวงแบบคลาสสิก ก็สามารถทำการเติมช่องว่างที่ผนังได้" @@ -17067,8 +17377,9 @@ msgstr "เพิ่มหมายเลขบรรทัด" msgid "Enable this to add line number(Nx) at the beginning of each G-code line." msgstr "เปิดใช้งานสิ่งนี้เพื่อเพิ่มหมายเลขบรรทัด (Nx) ที่จุดเริ่มต้นของบรรทัด G-code แต่ละบรรทัด" +# AI Translated msgid "Scan first layer" -msgstr "สแกนชั้นแรก" +msgstr "สแกนเลเยอร์แรก" msgid "Enable this to allow the camera on the printer to check the quality of the first layer." msgstr "เปิดใช้งานสิ่งนี้เพื่อให้กล้องบนเครื่องพิมพ์สามารถตรวจสอบคุณภาพของเลเยอร์แรกได้" @@ -17178,13 +17489,14 @@ msgstr "" msgid "Minimum non-zero part cooling fan speed" msgstr "ความเร็วพัดลมระบายความร้อนชิ้นส่วนขั้นต่ำที่ไม่เป็นศูนย์" +# AI Translated msgid "" "Some part-cooling fans cannot start spinning when commanded below a certain PWM duty cycle. When set above 0, any non-zero part-cooling fan command will be raised to at least this percentage so the fan reliably starts. A fan command of 0 (fan off) is always honoured exactly. This clamp is applied after every other fan calculation (first-layer ramp, layer-time interpolation, overhang/bridge/support-interface/ironing overrides), so scaling still operates within the range [this value, 100%].\n" "If your firmware already disables the fan below a threshold (for example Klipper's [fan] off_below: 0.10 shuts the fan off whenever the commanded duty cycle is below 10%), this option and the firmware threshold should ideally be set to the same value. Matching them (e.g. off_below: 0.10 in Klipper and 10% here) guarantees the slicer never emits a non-zero value that the firmware would silently drop, and the fan never receives a value below the one you know it can actually spool at.\n" "Set to 0 to deactivate." msgstr "" -"พัดลมระบายความร้อนบางส่วนไม่สามารถเริ่มหมุนได้เมื่อได้รับคำสั่งให้ต่ำกว่ารอบการทำงานของ PWM ที่กำหนด เมื่อตั้งค่าสูงกว่า 0 คำสั่งพัดลมระบายความร้อนที่ไม่เป็นศูนย์จะเพิ่มขึ้นเป็นเปอร์เซ็นต์เป็นอย่างน้อย เพื่อให้พัดลมเริ่มทำงานได้อย่างน่าเชื่อถือ คำสั่งพัดลมเป็น 0 (ปิดพัดลม) จะได้รับเกียรติเสมอ แคลมป์นี้จะถูกนำไปใช้หลังจากการคำนวณพัดลมอื่นๆ ทุกครั้ง (การลาดชั้นแรก การแก้ไขเลเยอร์ไทม์ ส่วนยื่น/บริดจ์/ส่วนรองรับ/การแทนที่การรีดผิว) ดังนั้นการปรับขนาดยังคงทำงานภายในช่วง [ค่านี้ 100%]\n" -"หากเฟิร์มแวร์ของคุณปิดใช้งานพัดลมที่ต่ำกว่าเกณฑ์อยู่แล้ว (เช่น [พัดลม] off_below ของ Klipper: 0.10 จะปิดพัดลมเมื่อใดก็ตามที่รอบการทำงานที่ได้รับคำสั่งต่ำกว่า 10%) ตัวเลือกนี้และเกณฑ์ของเฟิร์มแวร์ควรได้รับการตั้งค่าตามอุดมคติให้เป็นค่าเดียวกัน การจับคู่พวกมัน (เช่น off_below: 0.10 ใน Klipper และ 10% ที่นี่) รับประกันว่าตัวแบ่งส่วนข้อมูลจะไม่ปล่อยค่าที่ไม่ใช่ศูนย์ซึ่งเฟิร์มแวร์จะดรอปอย่างเงียบๆ และพัดลมจะไม่ได้รับค่าที่ต่ำกว่าค่าที่คุณรู้ว่าสามารถสปูลได้จริง\n" +"พัดลมระบายความร้อนบางส่วนไม่สามารถเริ่มหมุนได้เมื่อได้รับคำสั่งให้ต่ำกว่ารอบการทำงานของ PWM ที่กำหนด เมื่อตั้งค่าสูงกว่า 0 คำสั่งพัดลมระบายความร้อนที่ไม่เป็นศูนย์จะเพิ่มขึ้นเป็นเปอร์เซ็นต์เป็นอย่างน้อย เพื่อให้พัดลมเริ่มทำงานได้อย่างน่าเชื่อถือ คำสั่งพัดลมเป็น 0 (ปิดพัดลม) จะได้รับเกียรติเสมอ แคลมป์นี้จะถูกนำไปใช้หลังจากการคำนวณพัดลมอื่นๆ ทุกครั้ง (การลาดเลเยอร์แรก การแก้ไขเลเยอร์ไทม์ ส่วนยื่น/บริดจ์/ส่วนรองรับ/การแทนที่การรีดผิว) ดังนั้นการปรับขนาดยังคงทำงานภายในช่วง [ค่านี้ 100%]\n" +"หากเฟิร์มแวร์ของคุณปิดใช้งานพัดลมที่ต่ำกว่าเกณฑ์อยู่แล้ว (เช่น [fan] off_below ของ Klipper: 0.10 จะปิดพัดลมเมื่อใดก็ตามที่รอบการทำงานที่ได้รับคำสั่งต่ำกว่า 10%) ตัวเลือกนี้และเกณฑ์ของเฟิร์มแวร์ควรได้รับการตั้งค่าตามอุดมคติให้เป็นค่าเดียวกัน การจับคู่พวกมัน (เช่น off_below: 0.10 ใน Klipper และ 10% ที่นี่) รับประกันว่าตัวแบ่งส่วนข้อมูลจะไม่ปล่อยค่าที่ไม่ใช่ศูนย์ซึ่งเฟิร์มแวร์จะดรอปอย่างเงียบๆ และพัดลมจะไม่ได้รับค่าที่ต่ำกว่าค่าที่คุณรู้ว่าสามารถสปูลได้จริง\n" "ตั้งค่าเป็น 0 เพื่อปิดใช้งาน" msgid "Time cost" @@ -17281,26 +17593,30 @@ msgstr "เปิดใช้งานสิ่งนี้เพื่อรั msgid "Infill combination" msgstr "ไส้ในชุดค่าผสม" +# AI Translated msgid "Automatically combine sparse infill of several layers to print together in order to reduce time. Walls are still printed with original layer height." -msgstr "รวมไส้ในแบบโปร่งของหลายชั้นโดยอัตโนมัติเพื่อพิมพ์เข้าด้วยกันเพื่อลดเวลา ผนังยังคงพิมพ์ด้วยความสูงชั้นเดิม" +msgstr "รวมไส้ในแบบโปร่งของหลายเลเยอร์โดยอัตโนมัติเพื่อพิมพ์เข้าด้วยกันเพื่อลดเวลา ผนังยังคงพิมพ์ด้วยความสูงเลเยอร์เดิม" msgid "Infill shift step" msgstr "ขั้นตอนไส้ในกะ" +# AI Translated msgid "This parameter adds a slight displacement to each layer of infill to create a cross texture." -msgstr "พารามิเตอร์นี้จะเพิ่มการกระจัดเล็กน้อยในแต่ละชั้นของ ไส้ใน เพื่อสร้างพื้นผิวแบบกากบาท" +msgstr "พารามิเตอร์นี้จะเพิ่มการกระจัดเล็กน้อยในแต่ละเลเยอร์ของ ไส้ใน เพื่อสร้างพื้นผิวแบบกากบาท" msgid "Sparse infill rotation template" msgstr "เทมเพลตการหมุน ไส้ใน แบบกระจัดกระจาย" +# AI Translated msgid "Rotate the sparse infill direction per layer using a template of angles. Enter comma-separated degrees (e.g., '0,30,60,90'). Angles are applied in order by layer and repeat when the list ends. Advanced syntax is supported: '+5' rotates +5° every layer; '+5#5' rotates +5° every 5 layers. See the Wiki for details. When a template is set, the standard infill direction setting is ignored. Note: some infill patterns (e.g., Gyroid) control rotation themselves; use with care." -msgstr "หมุนทิศทางไส้ในแบบโปร่งต่อเลเยอร์โดยใช้เทมเพลตมุม ป้อนองศาที่คั่นด้วยเครื่องหมายจุลภาค (เช่น '0,30,60,90') มุมจะถูกนำไปใช้ตามลำดับชั้นและทำซ้ำเมื่อรายการสิ้นสุด รองรับไวยากรณ์ขั้นสูง: '+5' หมุน +5° ทุกเลเยอร์; '+5#5' หมุน +5° ทุกๆ 5 เลเยอร์ ดูวิกิสำหรับรายละเอียด เมื่อตั้งค่าเทมเพลต การตั้งค่าทิศทางไส้ในมาตรฐานจะถูกละเว้น หมายเหตุ: รูปแบบไส้ในบางรูปแบบ (เช่น ไจรอยด์) จะควบคุมการหมุนด้วยตัวเอง ใช้ด้วยความระมัดระวัง" +msgstr "หมุนทิศทางไส้ในแบบโปร่งต่อเลเยอร์โดยใช้เทมเพลตมุม ป้อนองศาที่คั่นด้วยเครื่องหมายจุลภาค (เช่น '0,30,60,90') มุมจะถูกนำไปใช้ตามลำดับเลเยอร์และทำซ้ำเมื่อรายการสิ้นสุด รองรับไวยากรณ์ขั้นสูง: '+5' หมุน +5° ทุกเลเยอร์; '+5#5' หมุน +5° ทุกๆ 5 เลเยอร์ ดูวิกิสำหรับรายละเอียด เมื่อตั้งค่าเทมเพลต การตั้งค่าทิศทางไส้ในมาตรฐานจะถูกละเว้น หมายเหตุ: รูปแบบไส้ในบางรูปแบบ (เช่น ไจรอยด์) จะควบคุมการหมุนด้วยตัวเอง ใช้ด้วยความระมัดระวัง" msgid "Solid infill rotation template" msgstr "เทมเพลตการหมุน ไส้ใน ที่เป็นของแข็ง" +# AI Translated msgid "This parameter adds a rotation of solid infill direction to each layer according to the specified template. The template is a comma-separated list of angles in degrees, e.g. '0,90'. The first angle is applied to the first layer, the second angle to the second layer, and so on. If there are more layers than angles, the angles will be repeated. Note that not all solid infill patterns support rotation." -msgstr "พารามิเตอร์นี้จะเพิ่มการหมุนของทิศทางไส้ในแบบทึบลงในแต่ละชั้นตามเทมเพลตที่ระบุ เทมเพลตคือรายการมุมในหน่วยองศาที่คั่นด้วยเครื่องหมายจุลภาค เช่น '0,90'. มุมแรกใช้กับเลเยอร์แรก มุมที่สองกับเลเยอร์ที่สอง และอื่นๆ หากมีชั้นมากกว่ามุม มุมจะเกิดซ้ำ โปรดทราบว่ารูปแบบไส้ในแบบทึบบางรูปแบบไม่รองรับการหมุน" +msgstr "พารามิเตอร์นี้จะเพิ่มการหมุนของทิศทางไส้ในแบบทึบลงในแต่ละเลเยอร์ตามเทมเพลตที่ระบุ เทมเพลตคือรายการมุมในหน่วยองศาที่คั่นด้วยเครื่องหมายจุลภาค เช่น '0,90'. มุมแรกใช้กับเลเยอร์แรก มุมที่สองกับเลเยอร์ที่สอง และอื่นๆ หากมีเลเยอร์มากกว่ามุม มุมจะเกิดซ้ำ โปรดทราบว่ารูปแบบไส้ในแบบทึบบางรูปแบบไม่รองรับการหมุน" msgid "Skeleton infill density" msgstr "ความหนาแน่นของโครงกระดูก" @@ -17352,9 +17668,11 @@ msgstr "เติมด้านบนของรูปแบบ" msgid "Choose this option if you want to completely fill in the tops of the infill pattern" msgstr "เลือกตัวเลือกนี้หากต้องการเติมด้านบนของรูปแบบไส้ในให้เต็ม" +# AI Translated msgid "Infill combination - Max layer height" -msgstr "ชุดค่าผสม ไส้ใน - ความสูงของชั้นสูงสุด" +msgstr "ชุดค่าผสม ไส้ใน - ความสูงเลเยอร์สูงสุด" +# AI Translated msgid "" "Maximum layer height for the combined sparse infill.\n" "\n" @@ -17364,7 +17682,7 @@ msgid "" "\n" "Use either absolute mm values (eg. 0.32mm for a 0.4mm nozzle) or % values (eg 80%). This value must not be larger than the nozzle diameter." msgstr "" -"ความสูงสูงสุดของชั้นสำหรับไส้ในแบบกระจายแบบรวม\n" +"ความสูงเลเยอร์สูงสุดสำหรับไส้ในแบบกระจายแบบรวม\n" "\n" "ตั้งค่าเป็น 0 หรือ 100% เพื่อใช้เส้นผ่านศูนย์กลางหัวฉีด (เพื่อลดเวลาการพิมพ์สูงสุด) หรือค่า ~80% เพื่อเพิ่มความแข็งแรงของวัสดุไส้ในแบบโปร่งให้สูงสุด\n" "\n" @@ -17375,11 +17693,13 @@ msgstr "" msgid "Enable clumping detection" msgstr "เปิดใช้งานการตรวจจับการจับกันเป็นก้อน" +# AI Translated msgid "Clumping detection layers" -msgstr "ชั้นตรวจจับการจับกันเป็นก้อน" +msgstr "เลเยอร์ตรวจจับการจับกันเป็นก้อน" +# AI Translated msgid "Clumping detection layers." -msgstr "ชั้นตรวจจับการจับกันเป็นก้อน" +msgstr "เลเยอร์ตรวจจับการจับกันเป็นก้อน" msgid "Probing exclude area of clumping" msgstr "การตรวจวัดไม่รวมพื้นที่จับตัวเป็นก้อน" @@ -17414,12 +17734,13 @@ msgstr "มุมส่วนยื่นสูงสุดสำหรับก msgid "Prune angle" msgstr "มุมตัดแต่ง" +# AI Translated msgid "" "Controls how aggressively short or unsupported Lightning branches are pruned.\n" "This angle is converted internally to a per-layer distance." msgstr "" "กำหนดระดับการตัดกิ่ง Lightning ที่สั้นหรือไม่มีส่วนรองรับออก\n" -"มุมนี้จะถูกแปลงภายในเป็นระยะทางต่อชั้น" +"มุมนี้จะถูกแปลงภายในเป็นระยะทางต่อเลเยอร์" msgid "Straightening angle" msgstr "มุมจัดให้ตรง" @@ -17469,16 +17790,18 @@ msgstr "ความกว้างของเส้นของไส้ใน msgid "Infill/wall overlap" msgstr "ไส้ในซ้อนทับผนัง" +# AI Translated #, no-c-format, no-boost-format -msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to line width of sparse infill. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." -msgstr "พื้นที่ไส้ในจะขยายใหญ่ขึ้นเล็กน้อยเพื่อให้ทับซ้อนกับผนังเพื่อการยึดเกาะที่ดีขึ้น ค่าเปอร์เซ็นต์สัมพันธ์กับความกว้างของเส้นของไส้ในแบบกระจัดกระจาย ตั้งค่านี้เป็น ~10-15% เพื่อลดโอกาสเกิดการอัดขึ้นรูปและการสะสมของวัสดุ ส่งผลให้พื้นผิวด้านบนขรุขระ" +msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to the inner wall line width. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." +msgstr "พื้นที่ไส้ในจะขยายใหญ่ขึ้นเล็กน้อยเพื่อให้ทับซ้อนกับผนังเพื่อการยึดเกาะที่ดีขึ้น ค่าเปอร์เซ็นต์สัมพันธ์กับความกว้างของเส้นของผนังด้านใน ตั้งค่านี้เป็น ~10-15% เพื่อลดโอกาสเกิดการอัดขึ้นรูปเกินและการสะสมของวัสดุ ส่งผลให้พื้นผิวด้านบนขรุขระ" msgid "Top/Bottom solid infill/wall overlap" msgstr "ด้านบน/ด้านล่างของช่องทึบ/ผนังทับซ้อนกัน" +# AI Translated #, no-c-format, no-boost-format -msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to line width of sparse infill." -msgstr "พื้นที่ไส้ในของแข็งด้านบนจะถูกขยายให้ใหญ่ขึ้นเล็กน้อยเพื่อให้ทับซ้อนกับผนังเพื่อการยึดเกาะที่ดีขึ้น และเพื่อลดการเกิดรูเข็มที่ซึ่งอินฟิลด้านบนบรรจบกับผนัง ค่า 25-30% ถือเป็นจุดเริ่มต้นที่ดี โดยช่วยลดการเกิดรูเข็มให้เหลือน้อยที่สุด ค่าเปอร์เซ็นต์สัมพันธ์กับความกว้างของเส้นของไส้ในแบบกระจัดกระจาย" +msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to the inner wall line width." +msgstr "พื้นที่ไส้ในแบบทึบด้านบนจะถูกขยายให้ใหญ่ขึ้นเล็กน้อยเพื่อให้ทับซ้อนกับผนังเพื่อการยึดเกาะที่ดีขึ้น และเพื่อลดการเกิดรูเข็มที่ซึ่งไส้ในด้านบนบรรจบกับผนัง ค่า 25-30% ถือเป็นจุดเริ่มต้นที่ดี โดยช่วยลดการเกิดรูเข็มให้เหลือน้อยที่สุด ค่าเปอร์เซ็นต์สัมพันธ์กับความกว้างของเส้นของผนังด้านใน" msgid "This is the speed for internal sparse infill." msgstr "ความเร็วของ ไส้ใน เบาบางภายใน" @@ -17489,11 +17812,13 @@ msgstr "สืบทอดโปรไฟล์" msgid "Name of parent profile." msgstr "ชื่อของโปรไฟล์ผู้ปกครอง" +# AI Translated msgid "Interface shells" -msgstr "เชลล์อินเตอร์เฟส" +msgstr "ผนังอินเตอร์เฟส" +# AI Translated 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 "บังคับการสร้างเปลือกแข็งระหว่างวัสดุ/ปริมาตรที่อยู่ติดกัน มีประโยชน์สำหรับการพิมพ์แบบหลายชุดดันเส้นด้วยวัสดุโปร่งแสงหรือวัสดุรองรับที่ละลายน้ำได้ด้วยตนเอง" +msgstr "บังคับการสร้างผนังแข็งระหว่างวัสดุ/ปริมาตรที่อยู่ติดกัน มีประโยชน์สำหรับการพิมพ์แบบหลายชุดดันเส้นด้วยวัสดุโปร่งแสงหรือวัสดุรองรับที่ละลายน้ำได้ด้วยตนเอง" msgid "Maximum width of a segmented region" msgstr "ความกว้างสูงสุดของขอบเขตที่แบ่งส่วน" @@ -17504,8 +17829,9 @@ msgstr "ความกว้างสูงสุดของขอบเขต msgid "Interlocking depth of a segmented region" msgstr "ความลึกที่ประสานกันของภูมิภาคที่แบ่งส่วน" -msgid "Interlocking depth of a segmented region. It will be ignored if \"mmu_segmented_region_max_width\" is zero or if \"mmu_segmented_region_interlocking_depth\" is bigger than \"mmu_segmented_region_max_width\". Zero disables this feature." -msgstr "ความลึกที่ประสานกันของภูมิภาคที่แบ่งส่วน ระบบจะไม่สนใจหาก \"mmu_segmented_region_max_width\" เป็นศูนย์ หรือหาก \"mmu_segmented_region_interlocking_detail\" ใหญ่กว่า \"mmu_segmented_region_max_width\" ศูนย์ปิดใช้งานคุณลักษณะนี้" +# AI Translated +msgid "Interlocking depth of a segmented region. On every other layer, the segmented region is limited to this depth. It will be ignored if \"interlocking_beam\" is enabled. Zero disables this feature." +msgstr "ความลึกที่ประสานกันของภูมิภาคที่แบ่งส่วน ในเลเยอร์เว้นเลเยอร์ ภูมิภาคที่แบ่งส่วนจะถูกจำกัดไว้ที่ความลึกนี้ ระบบจะไม่สนใจหากเปิดใช้งาน \"interlocking_beam\" หากตั้งเป็นศูนย์จะปิดใช้งานฟีเจอร์นี้" msgid "Use beam interlocking" msgstr "ใช้การประสานลำแสง" @@ -17525,11 +17851,13 @@ msgstr "ทิศทางที่เชื่อมต่อกัน" msgid "Orientation of interlock beams." msgstr "การวางแนวของคานลูกโซ่" +# AI Translated msgid "Interlocking beam layers" -msgstr "ชั้นลำแสงที่เชื่อมต่อกัน" +msgstr "เลเยอร์ลำแสงที่เชื่อมต่อกัน" +# AI Translated msgid "The height of the beams of the interlocking structure, measured in number of layers. Less layers is stronger, but more prone to defects." -msgstr "ความสูงของคานของโครงสร้างที่เชื่อมต่อกัน วัดเป็นจำนวนชั้น ชั้นที่น้อยลงจะแข็งแกร่งขึ้น แต่มีแนวโน้มที่จะเกิดข้อบกพร่องมากขึ้น" +msgstr "ความสูงของคานของโครงสร้างที่เชื่อมต่อกัน วัดเป็นจำนวนเลเยอร์ เลเยอร์ที่น้อยลงจะแข็งแกร่งขึ้น แต่มีแนวโน้มที่จะเกิดข้อบกพร่องมากขึ้น" msgid "Interlocking depth" msgstr "ความลึกที่ประสานกัน" @@ -17546,8 +17874,9 @@ msgstr "ระยะห่างจากด้านนอกของแบบ msgid "Ironing type" msgstr "ชนิดการรีดผิว" +# AI Translated msgid "Ironing uses a small flow to print at the same height of a surface to make flat surfaces smoother. This setting controls which layers are being ironed." -msgstr "การรีดผิวคือการใช้การไหลเล็กน้อยเพื่อพิมพ์บนพื้นผิวที่มีความสูงเท่ากันอีกครั้งเพื่อให้พื้นผิวเรียบเรียบยิ่งขึ้น การตั้งค่านี้ควบคุมว่าชั้นใดที่จะรีด" +msgstr "การรีดผิวคือการใช้การไหลเล็กน้อยเพื่อพิมพ์บนพื้นผิวที่มีความสูงเท่ากันอีกครั้งเพื่อให้พื้นผิวเรียบเรียบยิ่งขึ้น การตั้งค่านี้ควบคุมว่าเลเยอร์ใดที่จะรีด" msgid "No ironing" msgstr "ไม่รีดผิว" @@ -17567,8 +17896,9 @@ msgstr "รูปแบบการรีดผิว" msgid "The pattern that will be used when ironing." msgstr "รูปแบบที่จะใช้ในการรีด" +# AI Translated msgid "This is the amount of material to be extruded during ironing. It is relative to the flow of normal layer height. Too high a value will result in overextrusion on the surface." -msgstr "ปริมาณวัสดุที่จะพ่นออกมาระหว่างรีดผิว สัมพันธ์กับการไหลของความสูงของชั้นปกติ ค่าที่สูงเกินไปส่งผลให้เกิดการอัดขึ้นรูปมากเกินไปบนพื้นผิว" +msgstr "ปริมาณวัสดุที่จะพ่นออกมาระหว่างรีดผิว สัมพันธ์กับการไหลของความสูงเลเยอร์ปกติ ค่าที่สูงเกินไปส่งผลให้เกิดการอัดขึ้นรูปมากเกินไปบนพื้นผิว" msgid "This is the distance between the lines used for ironing." msgstr "ระยะห่างระหว่างเส้นรีดผิว" @@ -17606,13 +17936,14 @@ msgstr "เปิดใช้งานคอนทัวร์เลเยอร msgid "Minimize wall height angle" msgstr "ลดมุมความสูงของผนังให้เล็กที่สุด" +# AI Translated msgid "" "Reduce the height of top-surface perimeters to match the model edge height.\n" -"Affects perimeters with a slope less than this angle (degrees).\n" +"Affects perimeters with a slope greater than this angle (degrees).\n" "A reasonable value is 35. Set to 0 to disable." msgstr "" "ลดความสูงของเส้นรอบวงพื้นผิวด้านบนเพื่อให้ตรงกับความสูงของขอบโมเดล\n" -"ส่งผลต่อเส้นรอบวงที่มีความชันน้อยกว่ามุมนี้ (องศา)\n" +"ส่งผลต่อเส้นรอบวงที่มีความชันมากกว่ามุมนี้ (องศา)\n" "ค่าที่เหมาะสมคือ 35 ตั้งค่าเป็น 0 เพื่อปิดใช้งาน" msgid "Don't alternate fill direction" @@ -17624,11 +17955,12 @@ msgstr "ปิดใช้งานการสลับทิศทางไส msgid "Minimum Z height" msgstr "ความสูง Z ขั้นต่ำ" +# AI Translated msgid "" "Minimum Z-layer height.\n" "Also controls the slicing plane." msgstr "" -"ความสูงขั้นต่ำของชั้น Z\n" +"ความสูงขั้นต่ำของเลเยอร์ Z\n" "ควบคุมระนาบการแบ่งส่วนด้วย" msgid "This G-code is inserted at every layer change after the Z lift." @@ -17767,11 +18099,13 @@ msgstr "ความเร็วขั้นต่ำสำหรับการ msgid "Minimum speed for extruding (M205 S)" msgstr "ความเร็วขั้นต่ำสำหรับการอัดรีด (M205 S)" +# AI Translated msgid "Minimum travel speed" -msgstr "ความเร็วในการเดินทางขั้นต่ำ" +msgstr "ความเร็วในการเดินหัวเปล่าขั้นต่ำ" +# AI Translated msgid "Minimum travel speed (M205 T)" -msgstr "ความเร็วในการเดินทางขั้นต่ำ (M205 T)" +msgstr "ความเร็วในการเดินหัวเปล่าขั้นต่ำ (M205 T)" # AI Translated msgid "Maximum force of the Y axis" @@ -17788,11 +18122,11 @@ msgstr "นิวตัน" # AI Translated msgid "Bed mass of the Y axis" -msgstr "มวลฐานของแกน Y" +msgstr "มวลฐานพิมพ์ของแกน Y" # AI Translated msgid "The machine bed mass load of Y axis" -msgstr "ภาระมวลฐานของเครื่องบนแกน Y" +msgstr "ภาระมวลฐานพิมพ์ของเครื่องบนแกน Y" # AI Translated msgctxt "gram" @@ -17819,11 +18153,13 @@ msgstr "ความเร่งสูงสุดสำหรับการถ msgid "Maximum acceleration for retracting (M204 R)" msgstr "อัตราเร่งสูงสุดในการถอยกลับ (M204 R)" +# AI Translated msgid "Maximum acceleration for travel" -msgstr "อัตราเร่งสูงสุดสำหรับการเดินทาง" +msgstr "อัตราเร่งสูงสุดสำหรับการเดินหัวเปล่า" +# AI Translated msgid "Maximum acceleration for travel (M204 T), it only applies to Marlin 2." -msgstr "อัตราเร่งสูงสุดสำหรับการเดินทาง (M204 T) ใช้กับ Marlin 2 เท่านั้น" +msgstr "อัตราเร่งสูงสุดสำหรับการเดินหัวเปล่า (M204 T) ใช้กับ Marlin 2 เท่านั้น" msgid "Resonance avoidance" msgstr "การหลีกเลี่ยงการสั่นพ้อง" @@ -17948,8 +18284,9 @@ msgstr "" msgid "The part cooling fan speed may be increased when auto cooling is enabled. This is the maximum speed for the part cooling fan." msgstr "ความเร็วพัดลมระบายความร้อนบางส่วนอาจเพิ่มขึ้นเมื่อเปิดใช้งานการระบายความร้อนอัตโนมัติ นี่คือความเร็วสูงสุดสำหรับพัดลมระบายความร้อนของชิ้นส่วน" +# AI Translated msgid "The highest printable layer height for the extruder. Used to limit the maximum layer height when enable adaptive layer height." -msgstr "ความสูงของชั้นสูงสุดที่สามารถพิมพ์ได้สำหรับชุดดันเส้น ใช้เพื่อจำกัดความสูงของเลเยอร์สูงสุดเมื่อเปิดใช้งานความสูงของเลเยอร์แบบปรับได้" +msgstr "ความสูงเลเยอร์สูงสุดที่สามารถพิมพ์ได้สำหรับชุดดันเส้น ใช้เพื่อจำกัดความสูงของเลเยอร์สูงสุดเมื่อเปิดใช้งานความสูงของเลเยอร์แบบปรับได้" msgid "Extrusion rate smoothing" msgstr "อัตราการอัดรีดให้เรียบ" @@ -18016,14 +18353,15 @@ msgid "" "Speed of auxiliary part cooling fan. Auxiliary fan will run at this speed during printing except the first several layers which is defined by no cooling layers.\n" "Please enable auxiliary_fan in printer settings to use this feature. G-code command: M106 P2 S(0-255)" msgstr "" -"ความเร็วของพัดลมระบายความร้อนชิ้นส่วนเสริม พัดลมเสริมจะทำงานที่ความเร็วนี้ในระหว่างการพิมพ์ ยกเว้นหลายชั้นแรกซึ่งถูกกำหนดโดยไม่มีชั้นระบายความร้อน\n" +"ความเร็วของพัดลมระบายความร้อนชิ้นส่วนเสริม พัดลมเสริมจะทำงานที่ความเร็วนี้ในระหว่างการพิมพ์ ยกเว้นหลายเลเยอร์แรกซึ่งถูกกำหนดโดยไม่มีเลเยอร์ระบายความร้อน\n" "โปรดเปิดใช้งาน auxiliary_fan ในการตั้งค่าเครื่องพิมพ์เพื่อใช้คุณสมบัตินี้ คำสั่ง G-code: M106 P2 S(0-255)" msgid "For the first" msgstr "สำหรับครั้งแรก" +# AI Translated msgid "Set special auxiliary cooling fan for the first certain layers." -msgstr "ตั้งพัดลมระบายความร้อนเสริมพิเศษสำหรับบางชั้นแรก" +msgstr "ตั้งพัดลมระบายความร้อนเสริมพิเศษสำหรับบางเลเยอร์แรก" msgid "" "Auxiliary fan speed will be ramped up linearly from layer \"For the first\" to maximum at layer \"Full fan speed at layer\".\n" @@ -18035,8 +18373,9 @@ msgstr "" msgid "Special auxiliary cooling fan speed, effective only for the first x layers." msgstr "ความเร็วพัดลมระบายความร้อนเสริมพิเศษ มีผลเฉพาะ x เลเยอร์แรกเท่านั้น" +# AI Translated msgid "The lowest printable layer height for the extruder. Used to limit the minimum layer height when enable adaptive layer height." -msgstr "ความสูงของชั้นต่ำสุดที่สามารถพิมพ์ได้สำหรับชุดดันเส้น ใช้เพื่อจำกัดความสูงของเลเยอร์ขั้นต่ำเมื่อเปิดใช้งานความสูงของเลเยอร์แบบปรับได้" +msgstr "ความสูงเลเยอร์ต่ำสุดที่สามารถพิมพ์ได้สำหรับชุดดันเส้น ใช้เพื่อจำกัดความสูงของเลเยอร์ขั้นต่ำเมื่อเปิดใช้งานความสูงของเลเยอร์แบบปรับได้" msgid "Min print speed" msgstr "ความเร็วในการพิมพ์ขั้นต่ำ" @@ -18104,8 +18443,9 @@ msgstr "จุดเริ่มต้นและจุดสิ้นสุด msgid "Reduce infill retraction" msgstr "ลดการดึงกลับในไส้ใน" +# AI Translated msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that Z-hop is also not performed in areas where retraction is skipped." -msgstr "อย่าถอยกลับเมื่อการเดินทางอยู่ภายในพื้นที่ที่ไส้ในเข้าไปทั้งหมด นั่นหมายความว่าไม่สามารถมองเห็นการรั่วไหลได้ วิธีนี้จะช่วยลดเวลาในการดึงกลับสำหรับโมเดลที่ซับซ้อนและประหยัดเวลาในการพิมพ์ แต่จะทำให้การแบ่งส่วนและการสร้าง G-code ช้าลง โปรดทราบว่า Z-hop จะไม่ดำเนินการในพื้นที่ที่มีการข้ามการถอนกลับ" +msgstr "อย่าถอยกลับเมื่อการเดินหัวเปล่าอยู่ภายในพื้นที่ที่ไส้ในเข้าไปทั้งหมด นั่นหมายความว่าไม่สามารถมองเห็นการรั่วไหลได้ วิธีนี้จะช่วยลดเวลาในการดึงกลับสำหรับโมเดลที่ซับซ้อนและประหยัดเวลาในการพิมพ์ แต่จะทำให้การแบ่งส่วนและการสร้าง G-code ช้าลง โปรดทราบว่า Z-hop จะไม่ดำเนินการในพื้นที่ที่มีการข้ามการถอนกลับ" msgid "This option will drop the temperature of the inactive extruders to prevent oozing." msgstr "ตัวเลือกนี้จะทำให้อุณหภูมิของชุดดันเส้นที่ไม่ใช้งานลดลงเพื่อป้องกันการไหลซึม" @@ -18155,24 +18495,28 @@ msgstr "" "โดยจะถูกอัดขึ้นรูปหลังผนังอื่น ๆ ของเกาะเดียวกัน เริ่มจากวงในสุด ไม่ว่าลำดับผนังจะเป็นแบบใด\n" "รอบที่มีเพียงสะพานของเลเยอร์นี้เท่านั้นที่ยึดไว้ได้จะรอจนกว่าสะพานเหล่านั้นจะถูกพิมพ์ ส่วนรอบที่วิ่งขนานไปกับผนังที่มีส่วนรองรับจะยังคงอยู่ก่อนไส้ใน ซึ่งต้องใช้มันเป็นจุดยึด" +# AI Translated msgid "Outer walls" -msgstr "ผนังชั้นนอก" +msgstr "ผนังด้านนอก" +# AI Translated msgid "" "Filament to print outer walls.\n" "\"Default\" uses the active object/part filament." msgstr "" -"เส้นพลาสติกสำหรับพิมพ์ผนังชั้นนอก\n" +"เส้นพลาสติกสำหรับพิมพ์ผนังด้านนอก\n" "\"ค่าเริ่มต้น\" ใช้เส้นพลาสติกของวัตถุ/ชิ้นส่วนที่ใช้งานอยู่" +# AI Translated msgid "Inner walls" -msgstr "ผนังชั้นใน" +msgstr "ผนังด้านใน" +# AI Translated msgid "" "Filament to print inner walls.\n" "\"Default\" uses the active object/part filament." msgstr "" -"เส้นพลาสติกสำหรับพิมพ์ผนังชั้นใน\n" +"เส้นพลาสติกสำหรับพิมพ์ผนังด้านใน\n" "\"ค่าเริ่มต้น\" ใช้เส้นพลาสติกของวัตถุ/ชิ้นส่วนที่ใช้งานอยู่" msgid "Line width of inner wall. If expressed as a %, it will be computed over the nozzle diameter." @@ -18181,12 +18525,14 @@ msgstr "ความกว้างของเส้นของผนังด msgid "This is the speed for inner walls." msgstr "ความเร็วของผนังด้านใน" +# AI Translated msgid "This is the number of walls per layer." -msgstr "จำนวนผนังทุกชั้น" +msgstr "จำนวนผนังทุกเลเยอร์" msgid "Alternate extra wall" msgstr "ผนังเสริมสำรอง" +# AI Translated msgid "" "This setting adds an extra wall to every other layer. This way the infill gets wedged vertically between the walls, resulting in stronger prints.\n" "\n" @@ -18194,9 +18540,9 @@ msgid "" "\n" "Using lightning infill together with this option is not recommended as there is limited infill to anchor the extra perimeters to." msgstr "" -"การตั้งค่านี้จะเพิ่มผนังพิเศษแบบชั้นเว้นชั้น วิธีนี้จะทำให้ไส้ในถูกหนีบในแนวตั้งระหว่างผนัง ส่งผลให้งานพิมพ์แข็งแรงขึ้น\n" +"การตั้งค่านี้จะเพิ่มผนังพิเศษแบบเลเยอร์เว้นเลเยอร์ วิธีนี้จะทำให้ไส้ในถูกหนีบในแนวตั้งระหว่างผนัง ส่งผลให้งานพิมพ์แข็งแรงขึ้น\n" "\n" -"เมื่อเปิดใช้งานตัวเลือกนี้ จะต้องปิดใช้งานตัวเลือกตรวจสอบความหนาของเปลือกแนวตั้ง\n" +"เมื่อเปิดใช้งานตัวเลือกนี้ จะต้องปิดใช้งานตัวเลือกตรวจสอบความหนาของผนังแนวตั้ง\n" "\n" "ไม่แนะนำให้ใช้ไส้ในแบบสายฟ้าร่วมกับตัวเลือกนี้ เนื่องจากมีไส้ในจำกัดสำหรับยึดเส้นรอบวงเสริม" @@ -18245,35 +18591,44 @@ msgstr "ช่องว่าง Z ระหว่างฐานรองชิ msgid "Raft expansion" msgstr "การขยาย ฐานรองชิ้นงาน" +# AI Translated msgid "This expands all raft layers in XY plane." -msgstr "ขยายชั้นฐานรองชิ้นงานทั้งหมดในระนาบ XY" +msgstr "ขยายเลเยอร์ฐานรองชิ้นงานทั้งหมดในระนาบ XY" +# AI Translated msgid "First layer density" -msgstr "ความหนาแน่นของชั้นแรก" +msgstr "ความหนาแน่นของเลเยอร์แรก" +# AI Translated msgid "This is the density of the first raft or support layer." -msgstr "ความหนาแน่นของฐานรองชิ้นงานแรกหรือชั้นรองรับ" +msgstr "ความหนาแน่นของฐานรองชิ้นงานแรกหรือเลเยอร์รองรับ" +# AI Translated msgid "First layer expansion" -msgstr "การขยายชั้นแรก" +msgstr "การขยายเลเยอร์แรก" +# AI Translated msgid "This expands the first raft or support layer to improve bed adhesion." -msgstr "ขยายฐานรองชิ้นงานหรือชั้นรองรับชั้นแรกเพื่อปรับปรุงการยึดเกาะของแผ่นฐานพิมพ์" +msgstr "ขยายฐานรองชิ้นงานหรือเลเยอร์รองรับเลเยอร์แรกเพื่อปรับปรุงการยึดเกาะของฐานพิมพ์" +# AI Translated msgid "Raft layers" -msgstr "จำนวนชั้น ฐานรองชิ้นงาน" +msgstr "จำนวนเลเยอร์ ฐานรองชิ้นงาน" +# AI Translated msgid "Object will be raised by this number of support layers. Use this function to avoid warping when printing ABS." -msgstr "วัตถุจะถูกยกขึ้นตามจำนวนชั้นรองรับนี้ ใช้ฟังก์ชันนี้เพื่อหลีกเลี่ยงการบิดงอเมื่อพิมพ์ ABS" +msgstr "วัตถุจะถูกยกขึ้นตามจำนวนเลเยอร์รองรับนี้ ใช้ฟังก์ชันนี้เพื่อหลีกเลี่ยงการบิดงอเมื่อพิมพ์ ABS" msgid "The G-code path is generated after simplifying the contour of models to avoid too many points and G-code lines. Smaller values mean higher resolution and more time required to slice." msgstr "เส้นทาง G-code ถูกสร้างขึ้นหลังจากลดความซับซ้อนของรูปร่างของโมเดล เพื่อหลีกเลี่ยงจุดและเส้น G-code ที่มากเกินไป ค่าที่น้อยลงหมายถึงความละเอียดสูงขึ้นและมีเวลามากขึ้นในการตัด" +# AI Translated msgid "Travel distance threshold" -msgstr "เกณฑ์ระยะทางการเดินทาง" +msgstr "เกณฑ์ระยะทางการเดินหัวเปล่า" +# AI Translated msgid "Only trigger retraction when the travel distance is longer than this threshold." -msgstr "ทริกเกอร์การถอนกลับเมื่อระยะการเดินทางยาวกว่าเกณฑ์นี้เท่านั้น" +msgstr "ทริกเกอร์การถอนกลับเมื่อระยะการเดินหัวเปล่ายาวกว่าเกณฑ์นี้เท่านั้น" msgid "Retract amount before wipe" msgstr "สัดส่วนการดึงกลับก่อน Wipe" @@ -18303,8 +18658,9 @@ msgstr "บังคับให้ถอนกลับเมื่อเปล msgid "Retraction Length" msgstr "ระยะดึงกลับ" +# AI Translated msgid "Some amount of material in extruder is pulled back to avoid ooze during long travel. Set zero to disable retraction." -msgstr "วัสดุบางส่วนในชุดดันเส้นถูกดึงกลับเพื่อหลีกเลี่ยงไม่ให้ซึ่มในระหว่างการเดินทางระยะไกล ตั้งเป็น 0 เพื่อปิดการดึงกลับ" +msgstr "วัสดุบางส่วนในชุดดันเส้นถูกดึงกลับเพื่อหลีกเลี่ยงไม่ให้ซึ่มในระหว่างการเดินหัวเปล่าระยะไกล ตั้งเป็น 0 เพื่อปิดการดึงกลับ" msgid "Long retraction when cut (beta)" msgstr "การถอยกลับยาวเมื่อตัด (เบต้า)" @@ -18362,8 +18718,9 @@ msgstr "ความลาดชัน" msgid "Spiral" msgstr "เกลียว" +# AI Translated msgid "Traveling angle" -msgstr "มุมการเดินทาง" +msgstr "มุมการเดินหัวเปล่า" msgid "Traveling angle for Slope and Spiral Z-hop type. Setting it to 90° results in Normal Lift." msgstr "มุมการเคลื่อนที่สำหรับประเภท Slope และ Spiral Z-hop การตั้งค่าเป็น 90° จะทำให้ได้ Normal Lift" @@ -18427,8 +18784,9 @@ msgstr "เครื่องพิมพ์มีฮาร์ดแวร์ต msgid "Extra length on restart" msgstr "ความยาวพิเศษเมื่อรีสตาร์ท" +# AI Translated 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 "เมื่อชดเชยการดึงกลับหลังการเคลื่อนที่เดินทาง ชุดดันเส้นจะดันเส้นพลาสติกเพิ่มเติมในปริมาณนี้ การตั้งค่านี้ไม่ค่อยจำเป็น" +msgstr "เมื่อชดเชยการดึงกลับหลังการเคลื่อนที่เดินหัวเปล่า ชุดดันเส้นจะดันเส้นพลาสติกเพิ่มเติมในปริมาณนี้ การตั้งค่านี้ไม่ค่อยจำเป็น" # AI Translated msgid "Extra length on restart (Toolchange)" @@ -18584,8 +18942,9 @@ msgstr "รอยต่อ Scarf สำหรับผนังด้านใ msgid "Use scarf joint for inner walls as well." msgstr "ใช้รอยต่อ Scarf กับผนังด้านในด้วย" -msgid "Role base wipe speed" -msgstr "ความเร็ว Wipe ตามประเภทการพิมพ์" +# AI Translated +msgid "Role based wipe speed" +msgstr "ความเร็วเช็ดหัวฉีดตามประเภทการพิมพ์" msgid "The wipe speed is determined by the speed of the current extrusion role. e.g. if a wipe action is executed immediately following an outer wall extrusion, the speed of the outer wall extrusion will be utilized for the wipe action." msgstr "ความเร็ว Wipe จะอิงจากความเร็วของประเภทการพิมพ์ปัจจุบัน เช่น หากการ Wipe เกิดขึ้นทันทีหลังจากพิมพ์ผนังด้านนอก ความเร็วของผนังด้านนอกจะถูกใช้สำหรับการ Wipe" @@ -18644,8 +19003,9 @@ msgstr "" msgid "Wipe speed" msgstr "ความเร็วเช็ดหัวฉีด" +# AI Translated msgid "The wipe speed is determined by the speed setting specified in this configuration. If the value is expressed as a percentage (e.g. 80%), it will be calculated based on the travel speed setting above. The default value for this parameter is 80%." -msgstr "ความเร็วในการเช็ดถูกกำหนดโดยการตั้งค่าความเร็วที่ระบุในการกำหนดค่านี้ หากค่าแสดงเป็นเปอร์เซ็นต์ (เช่น 80%) ระบบจะคำนวณตามการตั้งค่าความเร็วการเดินทางด้านบน ค่าเริ่มต้นสำหรับพารามิเตอร์นี้คือ 80%" +msgstr "ความเร็วในการเช็ดถูกกำหนดโดยการตั้งค่าความเร็วที่ระบุในการกำหนดค่านี้ หากค่าแสดงเป็นเปอร์เซ็นต์ (เช่น 80%) ระบบจะคำนวณตามการตั้งค่าความเร็วการเดินหัวเปล่าด้านบน ค่าเริ่มต้นสำหรับพารามิเตอร์นี้คือ 80%" msgid "Skirt distance" msgstr "ระยะห่างของเส้นล้อมชิ้นงาน" @@ -18662,28 +19022,30 @@ msgstr "มุมจากศูนย์กลางวัตถุถึงจ msgid "Skirt height" msgstr "ความสูงของเส้นล้อมชิ้นงาน" +# AI Translated msgid "Number of skirt layers: usually only one" -msgstr "เส้นล้อมชิ้นงานกี่ชั้น.. โดยปกติจะมีเพียงชั้นเดียวเท่านั้น" +msgstr "เส้นล้อมชิ้นงานกี่เลเยอร์.. โดยปกติจะมีเพียงเลเยอร์เดียวเท่านั้น" +# AI Translated msgid "Single loop after first layer" -msgstr "วนรอบเดียวหลังจากชั้นแรก" +msgstr "วนรอบเดียวหลังจากเลเยอร์แรก" +# AI Translated msgid "Limits the skirt/draft shield loops to one wall after the first layer. This is useful, on occasion, to conserve filament but may cause the draft shield/skirt to warp / crack." -msgstr "จำกัดห่วงสเกิร์ต/แนวป้องกันลม (Draft Shield) ไว้ที่ผนังเดียวหลังจากชั้นแรก สิ่งนี้มีประโยชน์ในบางครั้งเพื่อประหยัดเส้นพลาสติก แต่อาจทำให้แนวป้องกันลม/เส้นล้อมชิ้นงานบิดเบี้ยว/แตกร้าวได้" +msgstr "จำกัดห่วงสเกิร์ต/แนวป้องกันลม (Draft Shield) ไว้ที่ผนังเดียวหลังจากเลเยอร์แรก สิ่งนี้มีประโยชน์ในบางครั้งเพื่อประหยัดเส้นพลาสติก แต่อาจทำให้แนวป้องกันลม/เส้นล้อมชิ้นงานบิดเบี้ยว/แตกร้าวได้" msgid "Draft shield" msgstr "แนวป้องกันลม (Draft Shield)" +# AI Translated msgid "" "A draft shield is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft. It is usually needed only with open frame printers, i.e. without an enclosure.\n" "\n" -"Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used.\n" -"Note: With the draft shield active, the skirt will be printed at skirt distance from the object. Therefore, if brims are active it may intersect with them. To avoid this, increase the skirt distance value.\n" +"Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used." msgstr "" "แนวป้องกันลม (Draft Shield) มีประโยชน์ในการปกป้องงานพิมพ์ ABS หรือ ASA จากการบิดงอและการหลุดออกจากฐานพิมพ์เนื่องจากกระแสลม โดยทั่วไปจำเป็นต้องใช้กับเครื่องพิมพ์แบบเปิดเฟรมเท่านั้น กล่าวคือ ไม่มีกล่องหุ้ม\n" "\n" -"Enabled = เส้นล้อมชิ้นงานสูงเท่ากับวัตถุที่พิมพ์สูงสุด มิฉะนั้น จะใช้ 'ความสูงของเส้นล้อมชิ้นงาน'\n" -"หมายเหตุ: เมื่อใช้งานแนวป้องกันลม (Draft Shield) เส้นล้อมชิ้นงานจะถูกพิมพ์ที่ระยะห่างจากวัตถุ ดังนั้นหากขอบยึดชิ้นงานยังทำงานอยู่ ขอบยึดชิ้นงานอาจตัดกัน เพื่อหลีกเลี่ยงปัญหานี้ ให้เพิ่มค่าระยะห่างของเส้นล้อมชิ้นงาน\n" +"เปิดใช้งาน = เส้นล้อมชิ้นงานสูงเท่ากับวัตถุที่พิมพ์สูงสุด มิฉะนั้น จะใช้ 'ความสูงของเส้นล้อมชิ้นงาน'" msgid "Enabled" msgstr "เปิดใช้" @@ -18759,8 +19121,9 @@ msgstr "ความกว้างของเส้นของ ไส้ใ msgid "This is the speed for internal solid infill, not including the top or bottom surface." msgstr "ความเร็วของไส้ในของแข็งภายใน ไม่ใช่พื้นผิวด้านบนและด้านล่าง" +# AI Translated msgid "This enables spiraling, which smooths out the Z moves of the outer contour and turns a solid model into a single walled print with solid bottom layers. The final generated model has no seam." -msgstr "Spiralize จะทำให้การเคลื่อนที่ Z ของเส้นขอบด้านนอกเรียบเนียนขึ้น และเปลี่ยนโมเดลทึบให้เป็นภาพพิมพ์ผนังเดี่ยวพร้อมชั้นล่างสุดทึบ โมเดลที่สร้างขึ้นขั้นสุดท้ายไม่มีรอยตะเข็บ" +msgstr "Spiralize จะทำให้การเคลื่อนที่ Z ของเส้นขอบด้านนอกเรียบเนียนขึ้น และเปลี่ยนโมเดลทึบให้เป็นภาพพิมพ์ผนังเดี่ยวพร้อมเลเยอร์ล่างสุดทึบ โมเดลที่สร้างขึ้นขั้นสุดท้ายไม่มีรอยตะเข็บ" msgid "Smooth Spiral" msgstr "เกลียวเรียบ" @@ -18775,22 +19138,26 @@ msgstr "การปรับให้เรียบสูงสุด XY" msgid "Maximum distance to move points in XY to try to achieve a smooth spiral. If expressed as a %, it will be computed over nozzle diameter." msgstr "ระยะทางสูงสุดเพื่อย้ายจุดใน XY เพื่อพยายามให้ได้เกลียวเรียบ หากแสดงเป็น % จะคำนวณตามเส้นผ่านศูนย์กลางของหัวฉีด" +# AI Translated msgid "Spiral starting flow ratio" -msgstr "อัตราการไหลเริ่มต้นของเกลียว" +msgstr "อัตราส่วนการไหลเริ่มต้นของเกลียว" +# AI Translated #, no-c-format, no-boost-format msgid "Sets the starting flow ratio while transitioning from the last bottom layer to the spiral. Normally the spiral transition scales the flow ratio from 0% to 100% during the first loop which can in some cases lead to under extrusion at the start of the spiral." -msgstr "ตั้งค่าอัตราส่วนการไหลเริ่มต้นขณะเปลี่ยนจากชั้นล่างสุดสุดท้ายเป็นเกลียว โดยปกติการเปลี่ยนผ่านของเกลียวจะปรับขนาดอัตราส่วนการไหลจาก 0% เป็น 100% ในระหว่างลูปแรก ซึ่งในบางกรณีอาจนำไปสู่การรีดขึ้นรูปที่จุดเริ่มต้นของเกลียว" +msgstr "ตั้งค่าอัตราส่วนการไหลเริ่มต้นขณะเปลี่ยนจากเลเยอร์ล่างสุดสุดท้ายเป็นเกลียว โดยปกติการเปลี่ยนผ่านของเกลียวจะปรับขนาดอัตราส่วนการไหลจาก 0% เป็น 100% ในระหว่างลูปแรก ซึ่งในบางกรณีอาจนำไปสู่การรีดขึ้นรูปที่จุดเริ่มต้นของเกลียว" +# AI Translated msgid "Spiral finishing flow ratio" -msgstr "อัตราการไหลการตกแต่งเกลียว" +msgstr "อัตราส่วนการไหลการตกแต่งเกลียว" #, no-c-format, no-boost-format msgid "Sets the finishing flow ratio while ending the spiral. Normally the spiral transition scales the flow ratio from 100% to 0% during the last loop which can in some cases lead to under extrusion at the end of the spiral." msgstr "ตั้งค่าอัตราส่วนการไหลขั้นสุดท้ายขณะสิ้นสุดเกลียว โดยปกติการเปลี่ยนผ่านของเกลียวจะปรับขนาดอัตราส่วนการไหลจาก 100% เป็น 0% ในระหว่างลูปสุดท้าย ซึ่งในบางกรณีอาจนำไปสู่การรีดขึ้นรูปที่ปลายเกลียว" +# AI Translated msgid "If smooth or traditional mode is selected, a timelapse video will be generated for each print. After each layer is printed, a snapshot is taken with the chamber camera. All of these snapshots are composed into a timelapse video when printing completes. If smooth mode is selected, the toolhead will move to the excess chute after each layer is printed and then take a snapshot. Since the melt filament may leak from the nozzle during the process of taking a snapshot, a prime tower is required for smooth mode to wipe the nozzle." -msgstr "หากเลือกโหมดเรียบหรือโหมดดั้งเดิม วิดีโอไทม์แลปส์จะถูกสร้างขึ้นสำหรับการพิมพ์แต่ละครั้ง หลังจากพิมพ์แต่ละชั้นแล้ว กล้องจะถ่ายภาพสแนปช็อตด้วยกล้องแชมเบอร์ สแน็ปช็อตทั้งหมดนี้จะถูกประกอบเป็นวิดีโอไทม์แลปส์เมื่อการพิมพ์เสร็จสิ้น หากเลือกโหมดเรียบ หัวเครื่องมือจะย้ายไปยังรางส่วนเกินหลังจากพิมพ์แต่ละเลเยอร์แล้วจึงถ่ายภาพสแน็ปช็อต เนื่องจากเส้นพลาสติกที่หลอมละลายอาจรั่วไหลออกจากหัวฉีดในระหว่างขั้นตอนการถ่ายภาพ จึงจำเป็นต้องมี Prime Tower เพื่อให้โหมดราบรื่นในการเช็ดหัวฉีด" +msgstr "หากเลือกโหมดเรียบหรือโหมดดั้งเดิม วิดีโอไทม์แลปส์จะถูกสร้างขึ้นสำหรับการพิมพ์แต่ละครั้ง หลังจากพิมพ์แต่ละเลเยอร์แล้ว กล้องจะถ่ายภาพสแนปช็อตด้วยกล้องแชมเบอร์ สแน็ปช็อตทั้งหมดนี้จะถูกประกอบเป็นวิดีโอไทม์แลปส์เมื่อการพิมพ์เสร็จสิ้น หากเลือกโหมดเรียบ หัวเครื่องมือจะย้ายไปยังรางส่วนเกินหลังจากพิมพ์แต่ละเลเยอร์แล้วจึงถ่ายภาพสแน็ปช็อต เนื่องจากเส้นพลาสติกที่หลอมละลายอาจรั่วไหลออกจากหัวฉีดในระหว่างขั้นตอนการถ่ายภาพ จึงจำเป็นต้องมี Prime Tower เพื่อให้โหมดราบรื่นในการเช็ดหัวฉีด" msgid "Traditional" msgstr "แบบดั้งเดิม" @@ -19001,8 +19368,9 @@ msgstr "เปิดใช้งานการอัดกระแทกเส msgid "Tool change on wipe tower" msgstr "การเปลี่ยนเครื่องมือบน Wipe Tower" +# AI Translated msgid "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead." -msgstr "บังคับให้หัวเครื่องมือเคลื่อนที่ไปที่ Wipe Tower ก่อนที่จะออกคำสั่งเปลี่ยนเครื่องมือ (Tx) เกี่ยวข้องเฉพาะกับเครื่องพิมพ์ที่มีชุดดันเส้นหลายเครื่อง (หลายหัวเครื่องมือ) ที่ใช้แผ่นเช็ดแบบ Type 2 ตามค่าเริ่มต้น Orca จะข้ามการเดินทางบนเครื่องที่มีหัวเครื่องมือหลายหัวเนื่องจากเฟิร์มแวร์จัดการการสลับหัว ซึ่งอาจส่งผลให้มีการออกคำสั่ง Tx เหนือส่วนที่พิมพ์ เปิดใช้งานตัวเลือกนี้หากคุณต้องการให้ทำการเปลี่ยนแปลงเครื่องมือเหนือ Wipe Tower แทนเสมอ" +msgstr "บังคับให้หัวเครื่องมือเคลื่อนที่ไปที่ Wipe Tower ก่อนที่จะออกคำสั่งเปลี่ยนเครื่องมือ (Tx) เกี่ยวข้องเฉพาะกับเครื่องพิมพ์ที่มีชุดดันเส้นหลายเครื่อง (หลายหัวเครื่องมือ) ที่ใช้แผ่นเช็ดแบบ Type 2 ตามค่าเริ่มต้น Orca จะข้ามการเดินหัวเปล่าบนเครื่องที่มีหัวเครื่องมือหลายหัวเนื่องจากเฟิร์มแวร์จัดการการสลับหัว ซึ่งอาจส่งผลให้มีการออกคำสั่ง Tx เหนือส่วนที่พิมพ์ เปิดใช้งานตัวเลือกนี้หากคุณต้องการให้ทำการเปลี่ยนแปลงเครื่องมือเหนือ Wipe Tower แทนเสมอ" # AI Translated msgid "Wait for temperature on wipe tower" @@ -19012,8 +19380,9 @@ msgstr "รอให้ถึงอุณหภูมิที่ Wipe Tower" msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command." msgstr "รับเครื่องมือใหม่โดยไม่รอให้ถึงอุณหภูมิการพิมพ์ แล้วเคลื่อนที่ไปยัง Wipe Tower และรออุณหภูมิที่นั่นก่อนไล่เส้นทันที เส้นพลาสติกที่ซึมออกมาระหว่างการอุ่นจะตกลงบน Wipe Tower แทนที่จะตกบนโมเดล และการเคลื่อนที่จะเกิดขึ้นพร้อมกับการอุ่น ใช้ได้เฉพาะกับเครื่องพิมพ์แบบหลายชุดดันเส้น (หลายหัวพิมพ์) ที่ใช้ Wipe Tower ชนิดที่ 2 เฟิร์มแวร์หรือแมโครการเปลี่ยนเครื่องมือต้องไม่รออุณหภูมิเอง เมื่อปิดใช้ คำสั่งรออุณหภูมิจะถูกส่งทันทีหลังคำสั่งเปลี่ยนเครื่องมือ" +# AI Translated msgid "No sparse layers (beta)" -msgstr "ไม่มีชั้นกระจัดกระจาย (เบต้า)" +msgstr "ไม่มีเลเยอร์กระจัดกระจาย (เบต้า)" # AI Translated msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower, so the tower ends up below the model and the toolhead has to reach down to it. Layouts where that would collide with an already printed object are rejected. Has no effect with smooth timelapse or clumping detection, which need a tower on every layer." @@ -19021,7 +19390,7 @@ msgstr "หากเปิดใช้ Wipe Tower จะไม่ถูกพิ # AI Translated msgid "Combine sparse layers" -msgstr "รวมชั้นกระจัดกระจาย" +msgstr "รวมเลเยอร์กระจัดกระจาย" # AI Translated msgid "" @@ -19035,7 +19404,7 @@ msgstr "" "\n" "จะรวมเฉพาะเลเยอร์ที่สมบูรณ์เท่านั้น และไม่เกินความสูงเลเยอร์สูงสุดของหัวฉีดที่พิมพ์ทาวเวอร์ (สามในสี่ของเส้นผ่านศูนย์กลางหัวฉีด หากค่านั้นเป็น 0) ดังนั้นต้องมีเลเยอร์ตั้งแต่สองเลเยอร์ขึ้นไปที่อยู่ภายในขีดจำกัดนั้นก่อนจึงจะมีการเปลี่ยนแปลงใด ๆ: ที่ความสูงเลเยอร์ 0.2 มม. ภายใต้ค่าสูงสุด 0.3 มม. จะไม่มีการรวม ขณะที่ที่ 0.1 มม. สามเลเยอร์จะรวมเป็นหนึ่ง\n" "\n" -"ต่างจาก \"ไม่มีชั้นกระจัดกระจาย\" ทาวเวอร์จะยังคงสูงตามโมเดล หัวพิมพ์จึงไม่ต้องลงไปถึงทาวเวอร์ ไม่มีผลเมื่อใช้ \"ไม่มีชั้นกระจัดกระจาย\" ไทม์แลปส์แบบราบรื่น หรือการตรวจจับการจับตัวเป็นก้อน ซึ่งต้องมีทาวเวอร์ในทุกเลเยอร์" +"ต่างจาก \"ไม่มีเลเยอร์กระจัดกระจาย\" ทาวเวอร์จะยังคงสูงตามโมเดล หัวพิมพ์จึงไม่ต้องลงไปถึงทาวเวอร์ ไม่มีผลเมื่อใช้ \"ไม่มีเลเยอร์กระจัดกระจาย\" ไทม์แลปส์แบบราบรื่น หรือการตรวจจับการจับตัวเป็นก้อน ซึ่งต้องมีทาวเวอร์ในทุกเลเยอร์" msgid "Prime all printing extruders" msgstr "ใช้ชุดดันเส้นการพิมพ์ทั้งหมด" @@ -19077,7 +19446,7 @@ msgstr "" # AI Translated msgid "Apply cyclic order to first layer" -msgstr "ใช้ลำดับแบบวนรอบกับชั้นแรก" +msgstr "ใช้ลำดับแบบวนรอบกับเลเยอร์แรก" # AI Translated msgid "" @@ -19085,9 +19454,9 @@ msgid "" "By default this is disabled, because the first layer is instead ordered for the best bed adhesion: filaments that print small, fragile first-layer features are printed last, so the following tool changes and travel moves are less likely to knock those weakly anchored parts loose. This first-layer order also honors a custom first layer filament sequence when one is set. The cyclic order's benefit (extra tool changes give each layer more time to cool) does not apply to the first layer, which is printed slowly and hot for adhesion.\n" "Enable this only if you need the exact same tool sequence on every layer, including the first, at the cost of that adhesion optimization." msgstr "" -"ใช้ลำดับการเปลี่ยนเครื่องมือแบบวนรอบกับชั้นแรกด้วย\n" -"โดยค่าเริ่มต้นจะปิดอยู่ เพราะชั้นแรกจะถูกจัดลำดับเพื่อการยึดเกาะฐานพิมพ์ที่ดีที่สุดแทน กล่าวคือ เส้นพลาสติกที่พิมพ์รายละเอียดเล็กและเปราะบางของชั้นแรกจะถูกพิมพ์เป็นลำดับสุดท้าย การเปลี่ยนเครื่องมือและการเดินหัวเปล่าที่ตามมาจึงมีโอกาสน้อยลงที่จะกระแทกชิ้นส่วนที่ยึดเกาะไม่แน่นเหล่านั้นให้หลุด ลำดับของชั้นแรกนี้ยังเคารพลำดับเส้นพลาสติกของชั้นแรกที่กำหนดเองด้วย หากมีการตั้งค่าไว้ ข้อดีของลำดับแบบวนรอบ (การเปลี่ยนเครื่องมือที่เพิ่มขึ้นทำให้แต่ละเลเยอร์มีเวลาเย็นตัวมากขึ้น) ไม่ใช้กับชั้นแรก ซึ่งพิมพ์อย่างช้าและร้อนเพื่อการยึดเกาะ\n" -"เปิดใช้สิ่งนี้เฉพาะเมื่อคุณต้องการลำดับเครื่องมือที่เหมือนกันทุกประการในทุกเลเยอร์รวมถึงชั้นแรก โดยยอมแลกกับการปรับแต่งการยึดเกาะดังกล่าว" +"ใช้ลำดับการเปลี่ยนเครื่องมือแบบวนรอบกับเลเยอร์แรกด้วย\n" +"โดยค่าเริ่มต้นจะปิดอยู่ เพราะเลเยอร์แรกจะถูกจัดลำดับเพื่อการยึดเกาะฐานพิมพ์ที่ดีที่สุดแทน กล่าวคือ เส้นพลาสติกที่พิมพ์รายละเอียดเล็กและเปราะบางของเลเยอร์แรกจะถูกพิมพ์เป็นลำดับสุดท้าย การเปลี่ยนเครื่องมือและการเดินหัวเปล่าที่ตามมาจึงมีโอกาสน้อยลงที่จะกระแทกชิ้นส่วนที่ยึดเกาะไม่แน่นเหล่านั้นให้หลุด ลำดับของเลเยอร์แรกนี้ยังเคารพลำดับเส้นพลาสติกของเลเยอร์แรกที่กำหนดเองด้วย หากมีการตั้งค่าไว้ ข้อดีของลำดับแบบวนรอบ (การเปลี่ยนเครื่องมือที่เพิ่มขึ้นทำให้แต่ละเลเยอร์มีเวลาเย็นตัวมากขึ้น) ไม่ใช้กับเลเยอร์แรก ซึ่งพิมพ์อย่างช้าและร้อนเพื่อการยึดเกาะ\n" +"เปิดใช้สิ่งนี้เฉพาะเมื่อคุณต้องการลำดับเครื่องมือที่เหมือนกันทุกประการในทุกเลเยอร์รวมถึงเลเยอร์แรก โดยยอมแลกกับการปรับแต่งการยึดเกาะดังกล่าว" msgid "Slice gap closing radius" msgstr "รัศมีการปิดช่องว่างของ Slice" @@ -19143,11 +19512,13 @@ msgstr "ส่วนรองรับ/วัตถุ ระยะ XY" msgid "This controls the XY separation between an object and its support." msgstr "การแยก XY ระหว่างวัตถุและส่วนรองรับ" +# AI Translated msgid "Support/object first layer gap" -msgstr "ส่วนรองรับ/วัตถุช่องว่างชั้นแรก" +msgstr "ส่วนรองรับ/วัตถุช่องว่างเลเยอร์แรก" +# AI Translated msgid "XY separation between an object and its support at the first layer." -msgstr "การแยก XY ระหว่างวัตถุและส่วนรองรับที่ชั้นแรก" +msgstr "การแยก XY ระหว่างวัตถุและส่วนรองรับที่เลเยอร์แรก" msgid "Pattern angle" msgstr "มุมรูปแบบ" @@ -19155,11 +19526,13 @@ msgstr "มุมรูปแบบ" msgid "Use this setting to rotate the support pattern on the horizontal plane." msgstr "ใช้การตั้งค่านี้เพื่อหมุนรูปแบบการรองรับบนระนาบแนวนอน" +# AI Translated msgid "On build plate only" -msgstr "บนแผ่นฐานเท่านั้น" +msgstr "บนฐานพิมพ์เท่านั้น" +# AI Translated msgid "This setting only generates supports that begin on the build plate." -msgstr "อย่าสร้างส่วนรองรับบนพื้นผิวของโมเดล เฉพาะบนฐานรองพิมพ์เท่านั้น" +msgstr "อย่าสร้างส่วนรองรับบนพื้นผิวของโมเดล เฉพาะบนฐานพิมพ์เท่านั้น" msgid "Support critical regions only" msgstr "รองรับภูมิภาคที่สำคัญเท่านั้น" @@ -19205,8 +19578,9 @@ msgstr "ความกว้างของเส้นรองรับ ห msgid "Loop pattern interface" msgstr "รูปแบบการใช้อินเทอร์เฟซแบบวนซ้ำ" +# AI Translated msgid "This covers the top contact layer of the supports with loops. It is disabled by default." -msgstr "ครอบคลุมชั้นสัมผัสด้านบนของส่วนรองรับด้วยลูป ปิดใช้งานตามค่าเริ่มต้น" +msgstr "ครอบคลุมเลเยอร์สัมผัสด้านบนของส่วนรองรับด้วยลูป ปิดใช้งานตามค่าเริ่มต้น" msgid "Support/raft interface" msgstr "ส่วนต่อประสานส่วนรองรับ / ฐานรองชิ้นงาน" @@ -19219,8 +19593,9 @@ msgstr "เส้นพลาสติกสำหรับพิมพ์ส่ msgid "Top interface layers" msgstr "เลเยอร์อินเทอร์เฟซบนสุด" +# AI Translated msgid "This is the number of top interface layers." -msgstr "จำนวนชั้นอินเทอร์เฟซด้านบน" +msgstr "จำนวนเลเยอร์อินเทอร์เฟซด้านบน" msgid "Bottom interface layers" msgstr "เลเยอร์อินเทอร์เฟซด้านล่าง" @@ -19321,8 +19696,9 @@ msgstr "ต้นไม้แข็งแกร่ง" msgid "Tree Hybrid" msgstr "ต้นไม้ไฮบริด" +# AI Translated msgid "Independent support layer height" -msgstr "ความสูงของชั้นรองรับอิสระ" +msgstr "ความสูงของเลเยอร์รองรับอิสระ" msgid "Support layer uses layer height independent with object layer. This is to support customizing Z-gap and save print time. This option will be invalid when the prime tower is enabled." msgstr "เลเยอร์ส่วนรองรับใช้ความสูงของเลเยอร์ที่เป็นอิสระจากเลเยอร์วัตถุ เพื่อรองรับการปรับแต่ง Z-gap และประหยัดเวลาในการพิมพ์ ตัวเลือกนี้จะไม่ถูกต้องเมื่อเปิดใช้งาน Prime Tower" @@ -19607,6 +19983,7 @@ msgstr "" "\n" "ตัวเลือกนี้ขึ้นอยู่กับเฟิร์มแวร์ที่รองรับคำสั่ง M191 และ M141 ไม่ว่าจะผ่านทางมาโครหรือแบบเนทิฟ และโดยปกติจะใช้เมื่อมีการติดตั้งเครื่องทำความร้อนในห้องแบบแอคทีฟ" +# AI Translated msgid "" "For high-temperature materials like ABS, ASA, PC, and PA, a higher chamber temperature can help suppress or reduce warping and potentially lead to higher interlayer bonding strength. However, at the same time, a higher chamber temperature will reduce the efficiency of air filtration for ABS and ASA.\n" "\n" @@ -19614,7 +19991,7 @@ msgid "" "\n" "If enabled, this parameter also sets a G-code variable named chamber_temperature, which can be used to pass the desired chamber temperature to your print start macro, or a heat soak macro like this: PRINT_START (other variables) CHAMBER_TEMP=[chamber_temperature]. This may be useful if your printer does not support M141/M191 commands, or if you desire to handle heat soaking in the print start macro if no active chamber heater is installed." msgstr "" -"สำหรับวัสดุที่มีอุณหภูมิสูง เช่น ABS, ASA, PC และ PA อุณหภูมิห้องที่สูงขึ้นสามารถช่วยลดหรือลดการบิดงอ และอาจนำไปสู่ความแข็งแรงการยึดเกาะระหว่างชั้นที่สูงขึ้น อย่างไรก็ตาม ในเวลาเดียวกัน อุณหภูมิห้องที่สูงขึ้นจะลดประสิทธิภาพการกรองอากาศสำหรับ ABS และ ASA\n" +"สำหรับวัสดุที่มีอุณหภูมิสูง เช่น ABS, ASA, PC และ PA อุณหภูมิห้องที่สูงขึ้นสามารถช่วยลดหรือลดการบิดงอ และอาจนำไปสู่ความแข็งแรงการยึดเกาะระหว่างเลเยอร์ที่สูงขึ้น อย่างไรก็ตาม ในเวลาเดียวกัน อุณหภูมิห้องที่สูงขึ้นจะลดประสิทธิภาพการกรองอากาศสำหรับ ABS และ ASA\n" "\n" "สำหรับ PLA, PETG, TPU, PVA และวัสดุที่มีอุณหภูมิต่ำอื่นๆ ควรปิดใช้งานตัวเลือกนี้ (ตั้งค่าเป็น 0) เนื่องจากอุณหภูมิห้องควรต่ำเพื่อหลีกเลี่ยงการอุดตันของชุดดันเส้นที่เกิดจากวัสดุอ่อนตัวเมื่อความร้อนแตก\n" "\n" @@ -19638,8 +20015,9 @@ msgstr "" msgid "Chamber minimal temperature" msgstr "อุณหภูมิห้องพิมพ์ต่ำสุด" +# AI Translated msgid "Nozzle temperature after the first layer" -msgstr "อุณหภูมิหัวฉีดสำหรับชั้นหลังจากอันแรก" +msgstr "อุณหภูมิหัวฉีดสำหรับเลเยอร์หลังจากอันแรก" msgid "Detect thin walls" msgstr "ตรวจจับผนังบาง" @@ -19670,14 +20048,16 @@ msgstr "ความเร็วของไส้ในพื้นผิวด msgid "Top shell layers" msgstr "เลเยอร์ผนังด้านบน" +# AI Translated msgid "This is the number of solid layers of top shell, including the top surface layer. When the thickness calculated by this value is thinner than the top shell thickness, the top shell layers will be increased" -msgstr "นี่คือจำนวนชั้นทึบของเปลือกด้านบน รวมถึงชั้นผิวด้านบนด้วย เมื่อความหนาที่คำนวณโดยค่านี้บางกว่าความหนาของเปลือกด้านบน ชั้นเปลือกด้านบนจะเพิ่มขึ้น" +msgstr "นี่คือจำนวนเลเยอร์ทึบของผนังด้านบน รวมถึงเลเยอร์ผิวด้านบนด้วย เมื่อความหนาที่คำนวณโดยค่านี้บางกว่าความหนาของผนังด้านบน เลเยอร์ผนังด้านบนจะเพิ่มขึ้น" msgid "Top shell thickness" msgstr "ความหนาผนังด้านบน" +# AI Translated msgid "The number of top solid layers is increased when slicing if the thickness calculated by top shell layers is thinner than this value. This can avoid having too thin a shell when layer height is small. 0 means that this setting is disabled and thickness of top shell is determined simply by the number of top shell layers." -msgstr "จำนวนชั้นทึบด้านบนจะเพิ่มขึ้นเมื่อสไลซ์หากความหนาที่คำนวณโดยชั้นเปลือกด้านบนบางกว่าค่านี้ วิธีนี้สามารถหลีกเลี่ยงไม่ให้เปลือกบางเกินไปเมื่อชั้นมีความสูงน้อย 0 หมายความว่าการตั้งค่านี้ถูกปิดใช้งาน และความหนาของเปลือกด้านบนถูกกำหนดโดยชั้นเปลือกด้านบนอย่างแน่นอน" +msgstr "จำนวนเลเยอร์ทึบด้านบนจะเพิ่มขึ้นเมื่อสไลซ์หากความหนาที่คำนวณโดยเลเยอร์ผนังด้านบนบางกว่าค่านี้ วิธีนี้สามารถหลีกเลี่ยงไม่ให้ผนังบางเกินไปเมื่อความสูงเลเยอร์น้อย 0 หมายความว่าการตั้งค่านี้ถูกปิดใช้งาน และความหนาของผนังด้านบนถูกกำหนดโดยเลเยอร์ผนังด้านบนอย่างแน่นอน" # AI Translated msgid "Separated infills" @@ -19727,8 +20107,9 @@ msgstr "ความเร็วที่ใช้ในการเคลื่ msgid "Wipe while retracting" msgstr "เช็ดขณะดึงกลับ" +# AI Translated msgid "This moves the nozzle along the last extrusion path when retracting to clean any leaked material on the nozzle. This can minimize blobs when printing a new part after traveling." -msgstr "เลื่อนหัวฉีดไปตามเส้นทางการอัดขึ้นรูปสุดท้ายเมื่อถอยกลับเพื่อทำความสะอาดวัสดุที่รั่วไหลบนหัวฉีด วิธีนี้จะช่วยลดรอยหยดเมื่อพิมพ์ชิ้นส่วนใหม่หลังการเดินทาง" +msgstr "เลื่อนหัวฉีดไปตามเส้นทางการอัดขึ้นรูปสุดท้ายเมื่อถอยกลับเพื่อทำความสะอาดวัสดุที่รั่วไหลบนหัวฉีด วิธีนี้จะช่วยลดรอยหยดเมื่อพิมพ์ชิ้นส่วนใหม่หลังการเดินหัวเปล่า" msgid "Wipe distance" msgstr "ระยะเช็ดหัวฉีด" @@ -19823,26 +20204,27 @@ msgstr "มุมที่ปลายกรวยที่ใช้เพื่ msgid "Maximum wipe tower print speed" msgstr "ความเร็วการพิมพ์ Wipe Tower สูงสุด" +# AI Translated msgid "" "The maximum print speed when purging in the wipe tower and printing the wipe tower sparse layers. When purging, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" "\n" -"When printing the sparse layers, if the internal perimeter speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +"When printing the sparse layers, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" "\n" "Increasing this speed may affect the tower's stability as well as increase the force with which the nozzle collides with any blobs that may have formed on the wipe tower.\n" "\n" "Before increasing this parameter beyond the default of 90 mm/s, make sure your printer can reliably bridge at the increased speeds and that ooze when tool changing is well controlled.\n" "\n" -"For the wipe tower external perimeters the internal perimeter speed is used regardless of this setting." +"For the wipe tower external perimeters the internal perimeter speed is used, also limited by this setting." msgstr "" -"ความเร็วในการพิมพ์สูงสุดเมื่อทำการล้างข้อมูลใน Wipe Tower และการพิมพ์ Wipe Tower บางเลเยอร์ เมื่อทำการไล่ล้าง หากความเร็วไส้ในแบบโปร่งหรือความเร็วที่คำนวณจากความเร็วปริมาตรสูงสุดของเส้นพลาสติกต่ำกว่า ความเร็วต่ำสุดจะถูกนำมาใช้แทน\n" +"ความเร็วในการพิมพ์สูงสุดเมื่อไล่เส้นใน Wipe Tower และเมื่อพิมพ์เลเยอร์กระจัดกระจายของ Wipe Tower เมื่อไล่เส้น หากความเร็วไส้ในแบบโปร่งหรือความเร็วที่คำนวณจากความเร็วปริมาตรสูงสุดของเส้นพลาสติกต่ำกว่า ความเร็วต่ำสุดจะถูกนำมาใช้แทน\n" "\n" -"เมื่อพิมพ์ชั้นเบาบาง หากความเร็วเส้นรอบวงภายในหรือความเร็วที่คำนวณจากความเร็วปริมาตรสูงสุดของเส้นพลาสติกต่ำกว่า ความเร็วต่ำสุดจะถูกนำมาใช้แทน\n" +"เมื่อพิมพ์เลเยอร์กระจัดกระจาย หากความเร็วไส้ในแบบโปร่งหรือความเร็วที่คำนวณจากความเร็วปริมาตรสูงสุดของเส้นพลาสติกต่ำกว่า ความเร็วต่ำสุดจะถูกนำมาใช้แทน\n" "\n" "การเพิ่มความเร็วนี้อาจส่งผลต่อเสถียรภาพของทาวเวอร์ รวมทั้งเพิ่มแรงที่หัวฉีดชนกับหยดใดๆ ที่อาจก่อตัวบน Wipe Tower\n" "\n" -"ก่อนที่จะเพิ่มพารามิเตอร์นี้เกินกว่าค่าเริ่มต้นที่ 90 มม./วินาที ตรวจสอบให้แน่ใจว่าเครื่องพิมพ์ของคุณสามารถเชื่อมต่อที่ความเร็วที่เพิ่มขึ้นได้อย่างน่าเชื่อถือ และจะมีการควบคุมอย่างดีเมื่อเปลี่ยนเครื่องมือ\n" +"ก่อนที่จะเพิ่มพารามิเตอร์นี้เกินกว่าค่าเริ่มต้นที่ 90 mm/s ตรวจสอบให้แน่ใจว่าเครื่องพิมพ์ของคุณพิมพ์สะพานที่ความเร็วที่เพิ่มขึ้นได้อย่างน่าเชื่อถือ และการป้องกันน้ำซึมขณะเปลี่ยนเครื่องมือทำงานได้ดี\n" "\n" -"สำหรับปริมณฑลภายนอกของ Wipe Tower ความเร็วของปริมณฑลภายในจะถูกใช้โดยไม่คำนึงถึงการตั้งค่านี้" +"สำหรับเส้นรอบวงภายนอกของ Wipe Tower จะใช้ความเร็วเส้นรอบวงภายใน โดยถูกจำกัดด้วยการตั้งค่านี้ด้วย" msgid "Wall type" msgstr "ชนิดติดผนัง" @@ -19850,14 +20232,14 @@ msgstr "ชนิดติดผนัง" # AI Translated msgid "" "Wipe tower outer wall type.\n" -"1. Rectangle: The default wall type, a rectangle with fixed width and height.\n" +"1. Rectangle: A rectangle with fixed width and height.\n" "2. Cone: A cone with a fillet at the bottom to help stabilize the wipe tower.\n" -"3. Rib: Adds four ribs to the tower wall for enhanced stability." +"3. Rib: The default wall type, which adds four ribs to the tower wall for enhanced stability." msgstr "" "Wipe Tower ชนิดผนังด้านนอก\n" -"1. สี่เหลี่ยมผืนผ้า: ประเภทผนังเริ่มต้น ซึ่งเป็นสี่เหลี่ยมผืนผ้าที่มีความกว้างและความสูงคงที่\n" -"2. กรวย: กรวยที่มีมุมมนอยู่ด้านล่างเพื่อช่วยรักษาเสถียรภาพของ Wipe Tower\n" -"3. ซี่โครง: เพิ่มสี่ซี่โครงเข้ากับผนัง Wipe Tower เพื่อเพิ่มความมั่นคง" +"1. สี่เหลี่ยมผืนผ้า: สี่เหลี่ยมผืนผ้าที่มีความกว้างและความสูงคงที่\n" +"2. ทรงกรวย: ทรงกรวยที่ด้านล่างมีการลบมุมมนเพื่อช่วยรักษาเสถียรภาพของ Wipe Tower\n" +"3. ซี่โครง: ประเภทผนังเริ่มต้น ซึ่งเพิ่มสี่ซี่โครงเข้ากับผนัง Wipe Tower เพื่อเพิ่มความมั่นคง" msgid "Rectangle" msgstr "สี่เหลี่ยมผืนผ้า" @@ -19909,8 +20291,9 @@ msgstr "เปิดใช้งานพฤติกรรมอินเทอ msgid "Cool down from interface boost during prime tower" msgstr "การระบายความร้อนที่เลเยอร์อินเทอร์เฟซของ Prime Tower" +# AI Translated msgid "When interface-layer temperature boost is active, set the nozzle back to print temperature at the start of the prime tower so it cools down during the tower." -msgstr "เมื่อเปิดใช้งานการเพิ่มอุณหภูมิของชั้นอินเทอร์เฟซ ให้ตั้งค่าหัวฉีดกลับไปเป็นอุณหภูมิการพิมพ์ที่จุดเริ่มต้นของ Prime Tower เพื่อให้เย็นลงระหว่าง Prime Tower" +msgstr "เมื่อเปิดใช้งานการเพิ่มอุณหภูมิของเลเยอร์อินเทอร์เฟซ ให้ตั้งค่าหัวฉีดกลับไปเป็นอุณหภูมิการพิมพ์ที่จุดเริ่มต้นของ Prime Tower เพื่อให้เย็นลงระหว่าง Prime Tower" msgid "Infill gap" msgstr "การเติมช่องว่าง" @@ -19950,8 +20333,9 @@ msgstr "ระยะห่างของเส้นไล่ล้างบน msgid "Extra flow for purging" msgstr "กระแสพิเศษสำหรับการล้าง" -msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker or narrower than they normally would be. The spacing is adjusted automatically." -msgstr "การไหลพิเศษที่ใช้สำหรับท่อไล่ล้างบน Wipe Tower ซึ่งจะทำให้เส้นการล้างหนาหรือแคบกว่าปกติ ระยะห่างจะถูกปรับโดยอัตโนมัติ" +# AI Translated +msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker than they normally would be. The spacing is adjusted automatically." +msgstr "การไหลพิเศษที่ใช้สำหรับเส้นไล่ล้างบน Wipe Tower ซึ่งจะทำให้เส้นไล่ล้างหนากว่าปกติ ระยะห่างจะถูกปรับโดยอัตโนมัติ" msgid "Idle temperature" msgstr "อุณหภูมิว่าง" @@ -19974,11 +20358,12 @@ msgstr "รูปทรงของวัตถุจะขยายหรือ msgid "Convert holes to polyholes" msgstr "แปลงรูเป็นโพลีโฮล" +# AI Translated msgid "" "Search for almost-circular holes that span more than one layer and convert the geometry to polyholes. Use the nozzle size and the (biggest) diameter to compute the polyhole.\n" "See http://hydraraptor.blogspot.com/2011/02/polyholes.html" msgstr "" -"ค้นหารูเกือบเป็นวงกลมที่ขยายมากกว่าหนึ่งชั้น และแปลงรูปทรงเป็นโพลีโฮล ใช้ขนาดหัวฉีดและเส้นผ่านศูนย์กลาง (ใหญ่ที่สุด) เพื่อคำนวณรูโพลี\n" +"ค้นหารูเกือบเป็นวงกลมที่ขยายมากกว่าหนึ่งเลเยอร์ และแปลงรูปทรงเป็นโพลีโฮล ใช้ขนาดหัวฉีดและเส้นผ่านศูนย์กลาง (ใหญ่ที่สุด) เพื่อคำนวณรูโพลี\n" "ดูhttp://hydraraptor.blogspot.com/2011/02/polyholes.html" msgid "Polyhole detection margin" @@ -19997,8 +20382,9 @@ msgstr "" msgid "Polyhole twist" msgstr "บิดรูหลายรู" +# AI Translated msgid "Rotate the polyhole every layer." -msgstr "หมุนโพลีโฮลทุกชั้น" +msgstr "หมุนโพลีโฮลทุกเลเยอร์" # AI Translated msgid "Maximum Polyhole edge count" @@ -20045,8 +20431,9 @@ msgstr "เมื่อเปลี่ยนระหว่างผนังจ msgid "Wall transitioning filter margin" msgstr "ขอบตัวกรองการเปลี่ยนผนัง" +# AI Translated msgid "Prevent transitioning back and forth between one extra wall and one less. This margin extends the range of extrusion widths which follow to [Minimum wall width - margin, 2 * Minimum wall width + margin]. Increasing this margin reduces the number of transitions, which reduces the number of extrusion starts/stops and travel time. However, large extrusion width variation can lead to under- or overextrusion problems. It's expressed as a percentage over nozzle diameter." -msgstr "ป้องกันการเปลี่ยนไปมาระหว่างผนังพิเศษหนึ่งอันและน้อยกว่าหนึ่งอัน ขอบนี้จะขยายช่วงความกว้างของการอัดขึ้นรูปซึ่งเป็นไปตาม [ความกว้างของผนังขั้นต่ำ - ขอบ 2 * ความกว้างของผนังขั้นต่ำ + ขอบ] การเพิ่มระยะขอบนี้จะลดจำนวนการเปลี่ยน ซึ่งจะลดจำนวนการเริ่ม/หยุดการอัดขึ้นรูปและเวลาการเดินทาง อย่างไรก็ตาม ความกว้างของการอัดขึ้นรูปที่หลากหลายอาจทำให้เกิดปัญหาการอัดขึ้นรูปน้อยเกินไปหรือมากเกินไปได้ โดยแสดงเป็นเปอร์เซ็นต์ของเส้นผ่านศูนย์กลางของหัวฉีด" +msgstr "ป้องกันการเปลี่ยนไปมาระหว่างผนังพิเศษหนึ่งอันและน้อยกว่าหนึ่งอัน ขอบนี้จะขยายช่วงความกว้างของการอัดขึ้นรูปซึ่งเป็นไปตาม [ความกว้างของผนังขั้นต่ำ - ขอบ 2 * ความกว้างของผนังขั้นต่ำ + ขอบ] การเพิ่มระยะขอบนี้จะลดจำนวนการเปลี่ยน ซึ่งจะลดจำนวนการเริ่ม/หยุดการอัดขึ้นรูปและเวลาการเดินหัวเปล่า อย่างไรก็ตาม ความกว้างของการอัดขึ้นรูปที่หลากหลายอาจทำให้เกิดปัญหาการอัดขึ้นรูปน้อยเกินไปหรือมากเกินไปได้ โดยแสดงเป็นเปอร์เซ็นต์ของเส้นผ่านศูนย์กลางของหัวฉีด" msgid "Wall transitioning threshold angle" msgstr "มุมการเปลี่ยนผ่านของผนัง" @@ -20069,14 +20456,15 @@ msgstr "ความหนาขั้นต่ำของคุณสมบั msgid "Minimum wall length" msgstr "ความยาวผนังขั้นต่ำ" +# AI Translated msgid "" -"Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. Higher values remove more and longer walls.\n" +"Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. The value is a multiple of the wall width. Higher values remove more and longer walls.\n" "\n" -"NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the Advanced settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." +"NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the 'Walls and surfaces' settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." msgstr "" -"ปรับค่านี้เพื่อป้องกันการพิมพ์ผนังที่สั้นและไม่ปิด ซึ่งอาจเพิ่มเวลาในการพิมพ์ ค่าที่สูงกว่าจะลบผนังที่ยาวขึ้นเรื่อยๆ\n" +"ปรับค่านี้เพื่อป้องกันการพิมพ์ผนังที่สั้นและไม่ปิด ซึ่งอาจเพิ่มเวลาในการพิมพ์ ค่านี้เป็นตัวคูณของความกว้างผนัง ค่าที่สูงขึ้นจะลบผนังได้มากขึ้นและยาวขึ้น\n" "\n" -"หมายเหตุ: พื้นผิวด้านล่างและด้านบนจะไม่ได้รับผลกระทบจากค่านี้ เพื่อป้องกันช่องว่างการมองเห็นด้านนอกของแบบจำลอง ปรับ 'เกณฑ์ผนังด้านเดียว' ในการตั้งค่าขั้นสูงด้านล่างเพื่อปรับความไวของสิ่งที่ถือเป็นพื้นผิวด้านบน 'เกณฑ์ผนังด้านเดียว' จะมองเห็นได้ก็ต่อเมื่อการตั้งค่านี้ตั้งไว้สูงกว่าค่าเริ่มต้นที่ 0.5 หรือหากเปิดใช้งานพื้นผิวด้านบนแบบผนังเดียว" +"หมายเหตุ: พื้นผิวด้านล่างและด้านบนจะไม่ได้รับผลกระทบจากค่านี้ เพื่อป้องกันช่องว่างที่มองเห็นได้ด้านนอกของโมเดล ปรับ 'เกณฑ์ผนังด้านหนึ่ง' ในการตั้งค่า 'ผนังและพื้นผิว' ด้านล่างเพื่อปรับความไวของสิ่งที่ถือเป็นพื้นผิวด้านบน 'เกณฑ์ผนังด้านหนึ่ง' จะแสดงก็ต่อเมื่อการตั้งค่านี้สูงกว่าค่าเริ่มต้นที่ 0.5 หรือเมื่อเปิดใช้งาน 'มีเพียงผนังเดียวบนพื้นผิวด้านบน'" msgid "Maximum wall resolution" msgstr "ความละเอียดผนังสูงสุด" @@ -20091,11 +20479,13 @@ msgstr "ส่วนเบี่ยงเบนของผนังสูงส msgid "The maximum deviation allowed when reducing the resolution for the 'Maximum wall resolution' setting. If you increase this, the print will be less accurate, but the G-code will be smaller. 'Maximum wall deviation' limits 'Maximum wall resolution', so if the two conflict, 'Maximum wall deviation' takes precedence." msgstr "ค่าเบี่ยงเบนสูงสุดที่อนุญาตเมื่อลดความละเอียดสำหรับการตั้งค่า 'ความละเอียดสูงสุดของผนัง' หากเพิ่มค่านี้ การพิมพ์จะแม่นยำน้อยลง แต่ G-code จะเล็กลง 'ค่าเบี่ยงเบนของผนังสูงสุด' จะจำกัด 'ความละเอียดของผนังสูงสุด' ดังนั้นหากทั้งสองข้อขัดแย้งกัน 'ค่าเบี่ยงเบนของผนังสูงสุด' จะมีความสำคัญเหนือกว่า" +# AI Translated msgid "First layer minimum wall width" -msgstr "ความกว้างขั้นต่ำของผนังชั้นแรก" +msgstr "ความกว้างขั้นต่ำของผนังเลเยอร์แรก" +# AI Translated msgid "The minimum wall width that should be used for the first layer is recommended to be set to the same size as the nozzle. This adjustment is expected to enhance adhesion." -msgstr "แนะนำให้กำหนดความกว้างของผนังขั้นต่ำที่ควรใช้สำหรับชั้นแรกให้เป็นขนาดเดียวกับหัวฉีด การปรับนี้คาดว่าจะช่วยเพิ่มการยึดเกาะ" +msgstr "แนะนำให้กำหนดความกว้างของผนังขั้นต่ำที่ควรใช้สำหรับเลเยอร์แรกให้เป็นขนาดเดียวกับหัวฉีด การปรับนี้คาดว่าจะช่วยเพิ่มการยึดเกาะ" msgid "Minimum wall width" msgstr "ความกว้างของผนังขั้นต่ำ" @@ -20565,8 +20955,10 @@ msgstr "Z-hop ปัจจุบัน" msgid "Contains Z-hop present at the beginning of the custom G-code block." msgstr "มี Z-hop อยู่ที่จุดเริ่มต้นของบล็อก G-code ที่กำหนดเอง" +# AI Translated +# Needs human review: 'travels' is the toolhead's non-printing move made by the custom G-code; check that เดินหัวเปล่า reads right as a verb with the G-code as its subject. msgid "Position of the extruder at the beginning of the custom G-code block. If the custom G-code travels somewhere else, it should write to this variable so OrcaSlicer knows where it travels from when it gets control back." -msgstr "ตำแหน่งของชุดดันเส้นที่จุดเริ่มต้นของบล็อก G-code แบบกำหนดเอง หาก G-code แบบกำหนดเองเดินทางไปที่อื่น ควรเขียนลงในตัวแปรนี้เพื่อให้ OrcaSlicer รู้ว่าโค้ดเดินทางจากที่ใดเมื่อได้รับการควบคุมกลับ" +msgstr "ตำแหน่งของชุดดันเส้นที่จุดเริ่มต้นของบล็อก G-code แบบกำหนดเอง หาก G-code แบบกำหนดเองเดินหัวเปล่าไปที่อื่น ควรเขียนลงในตัวแปรนี้เพื่อให้ OrcaSlicer รู้ว่าโค้ดเดินหัวเปล่าจากที่ใดเมื่อได้รับการควบคุมกลับ" msgid "Retraction state at the beginning of the custom G-code block. If the custom G-code moves the extruder axis, it should write to this variable so OrcaSlicer de-retracts correctly when it gets control back." msgstr "สถานะการเพิกถอนที่จุดเริ่มต้นของบล็อก G-code ที่กำหนดเอง หาก G-code แบบกำหนดเองย้ายแกนชุดดันเส้น ควรเขียนลงในตัวแปรนี้เพื่อให้ OrcaSlicer ยกเลิกการดึงกลับอย่างถูกต้องเมื่อได้รับการควบคุมกลับ" @@ -20709,11 +21101,13 @@ msgstr "น้ำหนักรวม" msgid "Total weight of the print. Calculated from filament_density value in Filament Settings." msgstr "น้ำหนักรวมของการพิมพ์ คำนวณจากค่า fil_density ในการตั้งค่าเส้นพลาสติก" +# AI Translated msgid "Total layer count" -msgstr "จำนวนชั้นทั้งหมด" +msgstr "จำนวนเลเยอร์ทั้งหมด" +# AI Translated msgid "Number of layers in the entire print." -msgstr "จำนวนชั้นในการพิมพ์ทั้งหมด" +msgstr "จำนวนเลเยอร์ในการพิมพ์ทั้งหมด" msgid "Print time (normal mode)" msgstr "เวลาในการพิมพ์ (โหมดปกติ)" @@ -20842,20 +21236,25 @@ msgstr "เวกเตอร์มีสององค์ประกอบ: msgid "The vector has two elements: X and Y dimension of the bounding box. Values in mm." msgstr "เวกเตอร์มีสององค์ประกอบ: มิติ X และ Y ของกรอบขอบเขต ค่าเป็น มม." +# AI Translated msgid "First layer convex hull" -msgstr "ชั้นแรกเป็นตัวถังนูน" +msgstr "เลเยอร์แรกเป็นตัวถังนูน" +# AI Translated msgid "Vector of points of the first layer convex hull. Each element has the following format:'[x, y]' (x and y are floating-point numbers in mm)." -msgstr "เวกเตอร์ของจุดของตัวเรือนูนชั้นแรก แต่ละองค์ประกอบมีรูปแบบดังนี้:'[x, y]' (x และ y เป็นตัวเลขทศนิยมในหน่วย มม.)" +msgstr "เวกเตอร์ของจุดของตัวเรือนูนเลเยอร์แรก แต่ละองค์ประกอบมีรูปแบบดังนี้:'[x, y]' (x และ y เป็นตัวเลขทศนิยมในหน่วย มม.)" +# AI Translated msgid "Bottom-left corner of the first layer bounding box" -msgstr "มุมล่างซ้ายของกล่องขอบชั้นแรก" +msgstr "มุมล่างซ้ายของกล่องขอบเลเยอร์แรก" +# AI Translated msgid "Top-right corner of the first layer bounding box" -msgstr "มุมขวาบนของกล่องขอบชั้นแรก" +msgstr "มุมขวาบนของกล่องขอบเลเยอร์แรก" +# AI Translated msgid "Size of the first layer bounding box" -msgstr "ขนาดของกล่องขอบชั้นแรก" +msgstr "ขนาดของกล่องขอบเลเยอร์แรก" msgid "Bottom-left corner of print bed bounding box" msgstr "มุมซ้ายล่างของกล่องขอบฐานพิมพ์พิมพ์" @@ -20976,8 +21375,9 @@ msgstr "ความสูงของเลเยอร์ปัจจุบั msgid "Maximal layer Z" msgstr "เลเยอร์สูงสุด Z" +# AI Translated msgid "Height of the last layer above the print bed." -msgstr "ความสูงของชั้นสุดท้ายเหนือฐานพิมพ์พิมพ์" +msgstr "ความสูงของเลเยอร์สุดท้ายเหนือฐานพิมพ์พิมพ์" msgid "Filament extruder ID" msgstr "ID ชุดดันเส้นเส้นพลาสติก" @@ -21897,6 +22297,7 @@ msgstr "" msgid "About this calibration" msgstr "เกี่ยวกับการสอบเทียบนี้" +# AI Translated msgid "" "Please find the details of Flow Dynamics Calibration from our wiki.\n" "\n" @@ -21910,13 +22311,14 @@ msgstr "" "\n" "โดยปกติแล้วการปรับเทียบจะไม่จำเป็น เมื่อคุณเริ่มพิมพ์สี/วัสดุเดียว โดยเลือกตัวเลือก \"flow dynamics calibration\" ในเมนูเริ่มการพิมพ์ เครื่องพิมพ์จะปฏิบัติตามวิธีเก่า ปรับเทียบเส้นพลาสติกก่อนพิมพ์ เมื่อคุณเริ่มการพิมพ์หลายสี/วัสดุ เครื่องพิมพ์จะใช้พารามิเตอร์การชดเชยเริ่มต้นสำหรับเส้นพลาสติกในระหว่างการเปลี่ยนเส้นพลาสติกทุกครั้ง ซึ่งจะให้ผลลัพธ์ที่ดีในกรณีส่วนใหญ่\n" "\n" -"โปรดทราบว่ามีบางกรณีที่อาจทำให้ผลการสอบเทียบไม่น่าเชื่อถือ เช่น การยึดเกาะบนฐานรองพิมพ์ไม่เพียงพอ การปรับปรุงการยึดเกาะสามารถทำได้โดยการล้างแผ่นฐานรองพิมพ์หรือใช้กาว สำหรับข้อมูลเพิ่มเติมเกี่ยวกับหัวข้อนี้ โปรดดูที่ Wiki ของเรา\n" +"โปรดทราบว่ามีบางกรณีที่อาจทำให้ผลการสอบเทียบไม่น่าเชื่อถือ เช่น การยึดเกาะบนฐานพิมพ์ไม่เพียงพอ การปรับปรุงการยึดเกาะสามารถทำได้โดยการล้างแผ่นฐานพิมพ์หรือใช้กาว สำหรับข้อมูลเพิ่มเติมเกี่ยวกับหัวข้อนี้ โปรดดูที่ Wiki ของเรา\n" "\n" "ผลการสอบเทียบมีความแปรปรวนประมาณ 10 เปอร์เซ็นต์ในการทดสอบของเรา ซึ่งอาจทำให้ผลลัพธ์ไม่เหมือนกันทุกครั้งที่สอบเทียบ เรายังคงตรวจสอบสาเหตุที่แท้จริงเพื่อปรับปรุงในอัปเดตใหม่" msgid "When to use Flow Rate Calibration" msgstr "เมื่อใดจึงจะใช้การปรับเทียบอัตราการไหล" +# AI Translated msgid "" "After using Flow Dynamics Calibration, there might still be some extrusion issues, such as:\n" "1. Over-Extrusion: Excess material on your printed object, forming blobs or zits, or the layers seem thicker than expected and not uniform\n" @@ -21925,8 +22327,8 @@ msgid "" "4. Weak Structural Integrity: Prints break easily or don't seem as sturdy as they should be" msgstr "" "หลังจากใช้ Flow Dynamics Calibration แล้ว อาจยังมีปัญหาการอัดขึ้นรูปอยู่บ้าง เช่น:\n" -"1. การอัดขึ้นรูปมากเกินไป: วัสดุส่วนเกินบนวัตถุที่พิมพ์ของคุณ ก่อตัวเป็นหยดหรือสิว หรือชั้นต่างๆ ดูหนากว่าที่คาดไว้และไม่สม่ำเสมอ\n" -"2. Under-Extrusion: ชั้นที่บางมาก ความแข็งแรงในไส้ในที่อ่อนแอ หรือมีช่องว่างในชั้นบนสุดของแบบจำลอง แม้ว่าจะพิมพ์ช้าก็ตาม\n" +"1. การอัดขึ้นรูปมากเกินไป: วัสดุส่วนเกินบนวัตถุที่พิมพ์ของคุณ ก่อตัวเป็นหยดหรือสิว หรือเลเยอร์ต่างๆ ดูหนากว่าที่คาดไว้และไม่สม่ำเสมอ\n" +"2. Under-Extrusion: เลเยอร์ที่บางมาก ความแข็งแรงในไส้ในที่อ่อนแอ หรือมีช่องว่างในเลเยอร์บนสุดของแบบจำลอง แม้ว่าจะพิมพ์ช้าก็ตาม\n" "3. คุณภาพพื้นผิวไม่ดี: พื้นผิวงานพิมพ์ของคุณดูหยาบหรือไม่สม่ำเสมอ\n" "4. ความสมบูรณ์ของโครงสร้างที่อ่อนแอ: งานพิมพ์แตกหักง่ายหรือดูไม่แข็งแรงเท่าที่ควร" @@ -22023,8 +22425,9 @@ msgstr "เราพบอัตราส่วนการไหลที่ด msgid "Flow Ratio" msgstr "อัตราส่วนการไหล" +# AI Translated msgid "Please input a valid value (0.0 < flow ratio < 2.0)" -msgstr "โปรดป้อนค่าที่ถูกต้อง (0.0 < อัตราการไหล < 2.0)" +msgstr "โปรดป้อนค่าที่ถูกต้อง (0.0 < อัตราส่วนการไหล < 2.0)" msgid "Please enter the name of the preset you want to save." msgstr "กรุณากรอกชื่อพรีเซ็ตที่คุณต้องการบันทึก" @@ -22044,9 +22447,10 @@ msgstr "ไส้ในค่าเหนือบล็อกด้วยพื msgid "Skip Calibration2" msgstr "ข้ามการปรับเทียบ2" +# AI Translated #, c-format, boost-format msgid "flow ratio : %s " -msgstr "อัตราการไหล : %s" +msgstr "อัตราส่วนการไหล : %s " msgid "Please choose a block with smoothest top surface." msgstr "โปรดเลือกบล็อกที่มีพื้นผิวด้านบนเรียบที่สุด" @@ -22757,8 +23161,9 @@ msgstr "การปรับระดับฐานพิมพ์อุ่น msgid "Textured Build Plate (Side A)" msgstr "ฐานพิมพ์พื้นผิว (ด้าน A)" +# AI Translated msgid "Smooth Build Plate (Side B)" -msgstr "แผ่นเรียบ (ด้าน B)" +msgstr "ฐานพิมพ์เรียบ (ด้าน B)" #, c-format, boost-format msgid "Printer: %s" @@ -24033,9 +24438,6 @@ msgstr "เปิดใช้การกำหนดเส้นพลาสต msgid "File Saving" msgstr "การบันทึกไฟล์" -msgid "Don't remind me again" -msgstr "ไม่ต้องเตือนฉันอีก" - msgid "No further pop-up will appear. You can reopen it in 'Preferences'" msgstr "จะไม่มีป๊อปอัปเพิ่มเติมปรากฏขึ้น คุณสามารถเปิดใหม่ได้ใน 'การตั้งค่า'" @@ -34190,13 +34592,14 @@ msgstr "เวลาโดยประมาณ:" msgid "Remaining time:" msgstr "เวลาที่เหลือ:" +# AI Translated #: resources/data/hints.ini: [hint:Precise wall] msgid "" "Precise wall\n" "Did you know that turning on precise wall can improve precision and layer consistency?" msgstr "" "ผนังที่แม่นยำ\n" -"คุณรู้หรือไม่ว่าการเปิดผนังที่แม่นยำสามารถปรับปรุงความแม่นยำและความสม่ำเสมอของชั้นได้" +"คุณรู้หรือไม่ว่าการเปิดผนังที่แม่นยำสามารถปรับปรุงความแม่นยำและความสม่ำเสมอของเลเยอร์ได้" #: resources/data/hints.ini: [hint:Sandwich mode] msgid "" @@ -34490,6 +34893,169 @@ msgstr "" "หลีกเลี่ยงการบิดเบี้ยว\n" "คุณรู้หรือไม่ว่าเมื่อพิมพ์วัสดุที่มีแนวโน้มที่จะเกิดการบิดเบี้ยว เช่น ABS การเพิ่มอุณหภูมิฐานพิมพ์อย่างเหมาะสมสามารถลดความน่าจะเป็นของการบิดเบี้ยวได้" +#~ msgid "" +#~ "Line width of the Bridge. If expressed as a %, it will be computed over the nozzle diameter.\n" +#~ "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" +#~ "\n" +#~ "The maximum value is 100% or the nozzle diameter.\n" +#~ "If set to 0, the line width will match the Internal solid infill width." +#~ msgstr "" +#~ "ความกว้างเส้นของสะพาน หากระบุเป็น % จะคำนวณจากเส้นผ่านศูนย์กลางหัวฉีด\n" +#~ "แนะนำให้ใช้ร่วมกับความหนาแน่นสะพานหรืออัตราการไหลสะพานที่สูงขึ้น\n" +#~ "\n" +#~ "ค่าสูงสุดคือ 100% หรือเส้นผ่านศูนย์กลางหัวฉีด\n" +#~ "หากตั้งเป็น 0 ความกว้างเส้นจะเท่ากับความกว้างไส้ในแบบทึบภายใน" + +#, no-c-format, no-boost-format +#~ msgid "" +#~ "Enable this option to slow down printing in areas where perimeters may have curled upwards.\n" +#~ "For example, additional slowdown will be applied when printing overhangs on sharp corners like the front of the Benchy hull, reducing curling which compounds over multiple layers.\n" +#~ "\n" +#~ "It is generally recommended to have this option switched on unless your printer cooling is powerful enough or the print speed is slow enough that perimeter curling does not happen. \n" +#~ "If printing with a high external perimeter speed, this parameter may introduce wall artifacts when slowing down, due to the potentially large variance in print speeds causing the extruder to be unable to keep up with the requested flow change.\n" +#~ "Root cause of these artifacts is most likely PA tuning being slightly off, especially when combined with a high PA smooth time.\n" +#~ "\n" +#~ "Recommendations when enabling this option:\n" +#~ "1. Reduce Pressure Advance smooth time to 0.015 - 0.02 so the extruder reacts quickly to the speed changes.\n" +#~ "2. Increase the minimum print speeds to limit the magnitude of the slowdown and reduce the variance between fast and slow segments.\n" +#~ "3. If artifacts still appear, enable Extrusion Rate Smoothing (ERS) to further smooth the flow transitions.\n" +#~ "\n" +#~ "Note: When this option is enabled, overhang perimeters are treated like overhangs, meaning the overhang speed is applied even if the overhanging perimeter is part of a bridge.\n" +#~ "For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 100% overhang speed will be applied." +#~ msgstr "" +#~ "เปิดใช้งานตัวเลือกนี้เพื่อชะลอการพิมพ์ในพื้นที่ที่เส้นรอบวงอาจงอขึ้น\n" +#~ "ตัวอย่างเช่น จะชะลอเพิ่มเติมเมื่อพิมพ์ส่วนยื่นที่มุมแหลม เช่นด้านหน้าของตัวเรือ Benchy ช่วยลดการงอที่สะสมข้ามหลายชั้น\n" +#~ "\n" +#~ "โดยทั่วไปแนะนำให้เปิดใช้งาน เว้นแต่ระบบระบายความร้อนของเครื่องพิมพ์แรงพอ หรือความเร็วพิมพ์ช้าพอที่เส้นรอบวงจะไม่งอ\n" +#~ "หากพิมพ์ด้วยความเร็วเส้นรอบวงด้านนอกสูง พารามิเตอร์นี้อาจทำให้เกิดข้อบกพร่องบนผนังเมื่อชะลอ เนื่องจากความแตกต่างของความเร็วพิมพ์ที่อาจมาก ทำให้ชุดดันเส้นตอบสนองการเปลี่ยนอัตราการไหลไม่ทัน\n" +#~ "สาเหตุหลักของข้อบกพร่องเหล่านี้มักมาจากการปรับ PA คลาดเคลื่อนเล็กน้อย โดยเฉพาะเมื่อใช้ร่วมกับ PA smooth time ที่สูง\n" +#~ "\n" +#~ "คำแนะนำเมื่อเปิดใช้งานตัวเลือกนี้:\n" +#~ "1. ลด Pressure Advance smooth time เป็น 0.015 - 0.02 เพื่อให้ชุดดันเส้นตอบสนองการเปลี่ยนความเร็วได้เร็วขึ้น\n" +#~ "2. เพิ่มความเร็วพิมพ์ขั้นต่ำเพื่อจำกัดขนาดการชะลอและลดความแตกต่างระหว่างช่วงเร็วและช้า\n" +#~ "3. หากยังมีข้อบกพร่อง ให้เปิดใช้งาน Extrusion Rate Smoothing (ERS) เพื่อปรับการเปลี่ยนอัตราการไหลให้เรียบขึ้น\n" +#~ "\n" +#~ "หมายเหตุ: เมื่อเปิดใช้งานตัวเลือกนี้ เส้นรอบวงส่วนยื่นจะถูกจัดเป็นส่วนยื่น หมายความว่าจะใช้ความเร็วส่วนยื่นแม้เส้นรอบวงนั้นเป็นส่วนหนึ่งของสะพาน\n" +#~ "ตัวอย่างเช่น เมื่อเส้นรอบวงยื่น 100% โดยไม่มีผนังรองรับจากด้านล่าง จะใช้ความเร็วส่วนยื่น 100%" + +#~ msgid "" +#~ "Speed of the externally visible bridge extrusions.\n" +#~ "\n" +#~ "In addition, if Slow down for curled perimeters is disabled or Classic overhang mode is enabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." +#~ msgstr "" +#~ "ความเร็วของการอัดขึ้นรูปสะพานที่มองเห็นได้จากภายนอก\n" +#~ "\n" +#~ "นอกจากนี้ หากปิดใช้งานการชะลอความเร็วสำหรับขอบม้วนงอหรือเปิดใช้งานโหมดระยะยื่นแบบคลาสสิก มันจะเป็นความเร็วในการพิมพ์ของผนังส่วนยื่นที่รองรับน้อยกว่า 13% ไม่ว่าจะเป็นส่วนหนึ่งของสะพานหรือส่วนยื่นก็ตาม" + +#~ msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above. Set to zero for auto." +#~ msgstr "การตั้งค่าแยกนี้จะส่งผลต่อความเร็วของเส้นรอบวงที่มีรัศมี <= small_perimeter_threshold (โดยปกติคือรู) หากแสดงเป็นเปอร์เซ็นต์ (เช่น 80%) ระบบจะคำนวณตามการตั้งค่าความเร็วผนังด้านนอกด้านบน ตั้งค่าเป็นศูนย์สำหรับรถยนต์" + +# AI Translated +#~ msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above. Set to zero for auto." +#~ msgstr "เช่นเดียวกับ \"Small perimeters\" แต่สำหรับส่วนรองรับ การตั้งค่าแยกนี้จะส่งผลต่อความเร็วของส่วนรองรับสำหรับพื้นที่ <= `small_support_perimeter_threshold` หากแสดงเป็นเปอร์เซ็นต์ (เช่น 80%) จะคำนวณจากการตั้งค่าความเร็วส่วนรองรับหรืออินเทอร์เฟซส่วนรองรับด้านบน ตั้งเป็นศูนย์เพื่อใช้อัตโนมัติ" + +#~ msgid "" +#~ "Print sequence of the internal (inner) and external (outer) walls.\n" +#~ "\n" +#~ "Use Inner/Outer for best overhangs. This is because the overhanging walls can adhere to a neighbouring perimeter while printing. However, this option results in slightly reduced surface quality as the external perimeter is deformed by being squashed to the internal perimeter.\n" +#~ "\n" +#~ "Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended against the Outer/Inner option in most cases.\n" +#~ "\n" +#~ "Use Outer/Inner for the same external wall quality and dimensional accuracy benefits of Inner/Outer/Inner option. However, the Z seams will appear less consistent as the first extrusion of a new layer starts on a visible surface." +#~ msgstr "" +#~ "ลำดับการพิมพ์ของผนังภายใน (ด้านใน) และภายนอก (ด้านนอก)\n" +#~ "\n" +#~ "ใช้ด้านใน/ด้านนอกเพื่อให้ได้ระยะยื่นที่ดีที่สุด เนื่องจากผนังที่ยื่นออกมาสามารถยึดติดกับปริมณฑลใกล้เคียงขณะพิมพ์ได้ อย่างไรก็ตาม ตัวเลือกนี้ส่งผลให้คุณภาพพื้นผิวลดลงเล็กน้อย เนื่องจากเส้นรอบวงภายนอกเสียรูปเนื่องจากการถูกแบนไปยังเส้นรอบวงภายใน\n" +#~ "\n" +#~ "ใช้ด้านใน/ด้านนอก/ด้านในเพื่อให้ได้พื้นผิวภายนอกที่ดีที่สุดและความแม่นยำของขนาด เนื่องจากผนังภายนอกถูกพิมพ์โดยไม่ถูกรบกวนจากขอบเขตภายใน อย่างไรก็ตาม ประสิทธิภาพส่วนยื่นจะลดลงเนื่องจากไม่มีขอบเขตภายในให้พิมพ์ติดกับผนังภายนอก ตัวเลือกนี้ต้องใช้ผนังอย่างน้อย 3 แผ่นจึงจะมีประสิทธิภาพ เนื่องจากจะพิมพ์ผนังภายในจากปริมณฑลที่ 3 เป็นต้นไป จากนั้นจึงพิมพ์ปริมณฑลภายนอก และสุดท้ายคือปริมณฑลภายในแรก แนะนำให้ใช้ตัวเลือกนี้กับตัวเลือกด้านนอก/ด้านในในกรณีส่วนใหญ่\n" +#~ "\n" +#~ "ใช้ด้านนอก/ด้านในเพื่อคุณภาพผนังภายนอกที่เหมือนกันและประโยชน์ด้านความแม่นยำของมิติของตัวเลือกด้านใน/ด้านนอก/ด้านใน อย่างไรก็ตาม รอยตะเข็บ Z จะดูสม่ำเสมอน้อยลงเนื่องจากการอัดขึ้นรูปชั้นใหม่ครั้งแรกเริ่มต้นบนพื้นผิวที่มองเห็นได้" + +#~ msgid "This is the speed for the first layer except for solid infill sections." +#~ msgstr "ความเร็วของชั้นแรก ยกเว้นส่วน ไส้ใน ที่เป็นของแข็ง" + +#~ msgid "This is the speed for solid infill parts of the first layer." +#~ msgstr "ความเร็วของส่วน ไส้ใน ที่เป็นของแข็งของชั้นแรก" + +#, no-c-format, no-boost-format +#~ msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to line width of sparse infill. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." +#~ msgstr "พื้นที่ไส้ในจะขยายใหญ่ขึ้นเล็กน้อยเพื่อให้ทับซ้อนกับผนังเพื่อการยึดเกาะที่ดีขึ้น ค่าเปอร์เซ็นต์สัมพันธ์กับความกว้างของเส้นของไส้ในแบบกระจัดกระจาย ตั้งค่านี้เป็น ~10-15% เพื่อลดโอกาสเกิดการอัดขึ้นรูปและการสะสมของวัสดุ ส่งผลให้พื้นผิวด้านบนขรุขระ" + +#, no-c-format, no-boost-format +#~ msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to line width of sparse infill." +#~ msgstr "พื้นที่ไส้ในของแข็งด้านบนจะถูกขยายให้ใหญ่ขึ้นเล็กน้อยเพื่อให้ทับซ้อนกับผนังเพื่อการยึดเกาะที่ดีขึ้น และเพื่อลดการเกิดรูเข็มที่ซึ่งอินฟิลด้านบนบรรจบกับผนัง ค่า 25-30% ถือเป็นจุดเริ่มต้นที่ดี โดยช่วยลดการเกิดรูเข็มให้เหลือน้อยที่สุด ค่าเปอร์เซ็นต์สัมพันธ์กับความกว้างของเส้นของไส้ในแบบกระจัดกระจาย" + +#~ msgid "Interlocking depth of a segmented region. It will be ignored if \"mmu_segmented_region_max_width\" is zero or if \"mmu_segmented_region_interlocking_depth\" is bigger than \"mmu_segmented_region_max_width\". Zero disables this feature." +#~ msgstr "ความลึกที่ประสานกันของภูมิภาคที่แบ่งส่วน ระบบจะไม่สนใจหาก \"mmu_segmented_region_max_width\" เป็นศูนย์ หรือหาก \"mmu_segmented_region_interlocking_detail\" ใหญ่กว่า \"mmu_segmented_region_max_width\" ศูนย์ปิดใช้งานคุณลักษณะนี้" + +#~ msgid "" +#~ "Reduce the height of top-surface perimeters to match the model edge height.\n" +#~ "Affects perimeters with a slope less than this angle (degrees).\n" +#~ "A reasonable value is 35. Set to 0 to disable." +#~ msgstr "" +#~ "ลดความสูงของเส้นรอบวงพื้นผิวด้านบนเพื่อให้ตรงกับความสูงของขอบโมเดล\n" +#~ "ส่งผลต่อเส้นรอบวงที่มีความชันน้อยกว่ามุมนี้ (องศา)\n" +#~ "ค่าที่เหมาะสมคือ 35 ตั้งค่าเป็น 0 เพื่อปิดใช้งาน" + +#~ msgid "Role base wipe speed" +#~ msgstr "ความเร็ว Wipe ตามประเภทการพิมพ์" + +#~ msgid "" +#~ "A draft shield is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft. It is usually needed only with open frame printers, i.e. without an enclosure.\n" +#~ "\n" +#~ "Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used.\n" +#~ "Note: With the draft shield active, the skirt will be printed at skirt distance from the object. Therefore, if brims are active it may intersect with them. To avoid this, increase the skirt distance value.\n" +#~ msgstr "" +#~ "แนวป้องกันลม (Draft Shield) มีประโยชน์ในการปกป้องงานพิมพ์ ABS หรือ ASA จากการบิดงอและการหลุดออกจากฐานพิมพ์เนื่องจากกระแสลม โดยทั่วไปจำเป็นต้องใช้กับเครื่องพิมพ์แบบเปิดเฟรมเท่านั้น กล่าวคือ ไม่มีกล่องหุ้ม\n" +#~ "\n" +#~ "Enabled = เส้นล้อมชิ้นงานสูงเท่ากับวัตถุที่พิมพ์สูงสุด มิฉะนั้น จะใช้ 'ความสูงของเส้นล้อมชิ้นงาน'\n" +#~ "หมายเหตุ: เมื่อใช้งานแนวป้องกันลม (Draft Shield) เส้นล้อมชิ้นงานจะถูกพิมพ์ที่ระยะห่างจากวัตถุ ดังนั้นหากขอบยึดชิ้นงานยังทำงานอยู่ ขอบยึดชิ้นงานอาจตัดกัน เพื่อหลีกเลี่ยงปัญหานี้ ให้เพิ่มค่าระยะห่างของเส้นล้อมชิ้นงาน\n" + +#~ msgid "" +#~ "The maximum print speed when purging in the wipe tower and printing the wipe tower sparse layers. When purging, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +#~ "\n" +#~ "When printing the sparse layers, if the internal perimeter speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +#~ "\n" +#~ "Increasing this speed may affect the tower's stability as well as increase the force with which the nozzle collides with any blobs that may have formed on the wipe tower.\n" +#~ "\n" +#~ "Before increasing this parameter beyond the default of 90 mm/s, make sure your printer can reliably bridge at the increased speeds and that ooze when tool changing is well controlled.\n" +#~ "\n" +#~ "For the wipe tower external perimeters the internal perimeter speed is used regardless of this setting." +#~ msgstr "" +#~ "ความเร็วในการพิมพ์สูงสุดเมื่อทำการล้างข้อมูลใน Wipe Tower และการพิมพ์ Wipe Tower บางเลเยอร์ เมื่อทำการไล่ล้าง หากความเร็วไส้ในแบบโปร่งหรือความเร็วที่คำนวณจากความเร็วปริมาตรสูงสุดของเส้นพลาสติกต่ำกว่า ความเร็วต่ำสุดจะถูกนำมาใช้แทน\n" +#~ "\n" +#~ "เมื่อพิมพ์ชั้นเบาบาง หากความเร็วเส้นรอบวงภายในหรือความเร็วที่คำนวณจากความเร็วปริมาตรสูงสุดของเส้นพลาสติกต่ำกว่า ความเร็วต่ำสุดจะถูกนำมาใช้แทน\n" +#~ "\n" +#~ "การเพิ่มความเร็วนี้อาจส่งผลต่อเสถียรภาพของทาวเวอร์ รวมทั้งเพิ่มแรงที่หัวฉีดชนกับหยดใดๆ ที่อาจก่อตัวบน Wipe Tower\n" +#~ "\n" +#~ "ก่อนที่จะเพิ่มพารามิเตอร์นี้เกินกว่าค่าเริ่มต้นที่ 90 มม./วินาที ตรวจสอบให้แน่ใจว่าเครื่องพิมพ์ของคุณสามารถเชื่อมต่อที่ความเร็วที่เพิ่มขึ้นได้อย่างน่าเชื่อถือ และจะมีการควบคุมอย่างดีเมื่อเปลี่ยนเครื่องมือ\n" +#~ "\n" +#~ "สำหรับปริมณฑลภายนอกของ Wipe Tower ความเร็วของปริมณฑลภายในจะถูกใช้โดยไม่คำนึงถึงการตั้งค่านี้" + +# AI Translated +#~ msgid "" +#~ "Wipe tower outer wall type.\n" +#~ "1. Rectangle: The default wall type, a rectangle with fixed width and height.\n" +#~ "2. Cone: A cone with a fillet at the bottom to help stabilize the wipe tower.\n" +#~ "3. Rib: Adds four ribs to the tower wall for enhanced stability." +#~ msgstr "" +#~ "Wipe Tower ชนิดผนังด้านนอก\n" +#~ "1. สี่เหลี่ยมผืนผ้า: ประเภทผนังเริ่มต้น ซึ่งเป็นสี่เหลี่ยมผืนผ้าที่มีความกว้างและความสูงคงที่\n" +#~ "2. กรวย: กรวยที่มีมุมมนอยู่ด้านล่างเพื่อช่วยรักษาเสถียรภาพของ Wipe Tower\n" +#~ "3. ซี่โครง: เพิ่มสี่ซี่โครงเข้ากับผนัง Wipe Tower เพื่อเพิ่มความมั่นคง" + +#~ msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker or narrower than they normally would be. The spacing is adjusted automatically." +#~ msgstr "การไหลพิเศษที่ใช้สำหรับท่อไล่ล้างบน Wipe Tower ซึ่งจะทำให้เส้นการล้างหนาหรือแคบกว่าปกติ ระยะห่างจะถูกปรับโดยอัตโนมัติ" + +#~ msgid "" +#~ "Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. Higher values remove more and longer walls.\n" +#~ "\n" +#~ "NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the Advanced settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." +#~ msgstr "" +#~ "ปรับค่านี้เพื่อป้องกันการพิมพ์ผนังที่สั้นและไม่ปิด ซึ่งอาจเพิ่มเวลาในการพิมพ์ ค่าที่สูงกว่าจะลบผนังที่ยาวขึ้นเรื่อยๆ\n" +#~ "\n" +#~ "หมายเหตุ: พื้นผิวด้านล่างและด้านบนจะไม่ได้รับผลกระทบจากค่านี้ เพื่อป้องกันช่องว่างการมองเห็นด้านนอกของแบบจำลอง ปรับ 'เกณฑ์ผนังด้านเดียว' ในการตั้งค่าขั้นสูงด้านล่างเพื่อปรับความไวของสิ่งที่ถือเป็นพื้นผิวด้านบน 'เกณฑ์ผนังด้านเดียว' จะมองเห็นได้ก็ต่อเมื่อการตั้งค่านี้ตั้งไว้สูงกว่าค่าเริ่มต้นที่ 0.5 หรือหากเปิดใช้งานพื้นผิวด้านบนแบบผนังเดียว" + # AI Translated #, boost-format #~ msgid "Split into %1% part" diff --git a/localization/i18n/tr/OrcaSlicer_tr.po b/localization/i18n/tr/OrcaSlicer_tr.po index 9b40a3efe6..efaf98ded8 100644 --- a/localization/i18n/tr/OrcaSlicer_tr.po +++ b/localization/i18n/tr/OrcaSlicer_tr.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-10-13 09:55-0300\n" +"POT-Creation-Date: 2026-10-14 10:04-0300\n" "PO-Revision-Date: 2026-08-21 23:18+0300\n" "Last-Translator: GlauTech\n" "Language-Team: \n" @@ -1307,8 +1307,9 @@ msgstr "Kes" msgid "Click to change part type into negative volume." msgstr "Parça tipini negatif hacme değiştirmek için tıklayın." +# AI Translated msgid "Modifier" -msgstr "Değiştir" +msgstr "Değiştirici" msgid "Click to change part type into modifier." msgstr "Parça tipini değiştiriciye değiştirmek için tıklayın." @@ -2447,6 +2448,66 @@ msgstr "Ağ Eklentisi Kısıtlaması" msgid "Privacy Policy Update" msgstr "Gizlilik Politikası Güncellemesi" +# AI Translated +msgid "All your filament presets are available on the printers they were made for." +msgstr "Tüm filament ön ayarlarınız, oluşturuldukları yazıcılarda kullanılabilir." + +# AI Translated +msgid "Migrate Filament Presets" +msgstr "Filament Ön Ayarlarını Taşı" + +# AI Translated +msgid "" +"OrcaSlicer 2.5.0 restructured many system filament presets to fix incorrect profiles and prepare for future features. As a result, the presets below no longer show on some printers they were made for. Sorry for the trouble; this is a one-time fix.\n" +"\n" +"Add those printers back to your presets now? Your presets are backed up first. You can also do this later from Help > Migrate Filament Presets." +msgstr "" +"OrcaSlicer 2.5.0, hatalı profilleri düzeltmek ve gelecekteki özelliklere hazırlanmak için birçok sistem filament ön ayarını yeniden yapılandırdı. Bunun sonucunda aşağıdaki ön ayarlar, oluşturuldukları bazı yazıcılarda artık görünmüyor. Verdiğimiz rahatsızlık için özür dileriz; bu tek seferlik bir düzeltmedir.\n" +"\n" +"Bu yazıcılar şimdi ön ayarlarınıza geri eklensin mi? Ön ayarlarınızın önce yedeği alınır. Bunu daha sonra Yardım > Filament Ön Ayarlarını Taşı menüsünden de yapabilirsiniz." + +# AI Translated +#, boost-format +msgid "%1% (based on %2%)" +msgstr "%1% (%2% tabanlı)" + +msgid "Don't remind me again" +msgstr "Bana bir daha hatırlatma" + +# AI Translated +msgid "Your presets could not be backed up, so they were not migrated." +msgstr "Ön ayarlarınızın yedeği alınamadı, bu yüzden taşınmadı." + +# AI Translated +msgid "The user presets folder could not be locked, so nothing was migrated. Another OrcaSlicer instance may be saving presets; try again later from Help > Migrate Filament Presets." +msgstr "Kullanıcı ön ayarları klasörü kilitlenemediği için hiçbir şey taşınmadı. Başka bir OrcaSlicer örneği ön ayarları kaydediyor olabilir; daha sonra Yardım > Filament Ön Ayarlarını Taşı menüsünden tekrar deneyin." + +# AI Translated +#, boost-format +msgid "" +"Your filament presets could not be migrated. A backup of your presets was saved to:\n" +"%1%" +msgstr "" +"Filament ön ayarlarınız taşınamadı. Ön ayarlarınızın bir yedeği şuraya kaydedildi:\n" +"%1%" + +# AI Translated +#, boost-format +msgid "" +"Your filament presets were migrated. Select them again in the filament list where you used them.\n" +"\n" +"A backup of your presets was saved to:\n" +"%1%" +msgstr "" +"Filament ön ayarlarınız taşındı. Kullandığınız yerlerde bunları filament listesinden yeniden seçin.\n" +"\n" +"Ön ayarlarınızın bir yedeği şuraya kaydedildi:\n" +"%1%" + +# AI Translated +msgid "These presets could not be migrated:" +msgstr "Bu ön ayarlar taşınamadı:" + # AI Translated #, c-format, boost-format msgid "your Orca Cloud profile (user ID: \"%s\")" @@ -3176,6 +3237,63 @@ msgstr "(Renk kaybı)" msgid "Center" msgstr "Merkez" +# AI Translated +msgid "Distribute left-right" +msgstr "Sol-sağ yönünde dağıt" + +# AI Translated +msgid "Distribute front-back" +msgstr "Ön-arka yönünde dağıt" + +# AI Translated +msgid "Distribute top-bottom" +msgstr "Üst-alt yönünde dağıt" + +# AI Translated +msgid "Align left" +msgstr "Sola hizala" + +# AI Translated +msgid "Align left-right center" +msgstr "Sol-sağ yönünde merkeze hizala" + +# AI Translated +msgid "Align right" +msgstr "Sağa hizala" + +# AI Translated +msgid "Align front" +msgstr "Öne hizala" + +# AI Translated +msgid "Align front-back center" +msgstr "Ön-arka yönünde merkeze hizala" + +# AI Translated +msgid "Align back" +msgstr "Arkaya hizala" + +# AI Translated +msgid "Align bottom" +msgstr "Alta hizala" + +# AI Translated +msgid "Align top-bottom center" +msgstr "Üst-alt yönünde merkeze hizala" + +# AI Translated +msgid "Align top" +msgstr "Üste hizala" + +# AI Translated +# Needs human review: This catalog also renders 'Arrange' as 'Hizala' (e.g. 'Arrange all objects' = 'Tüm nesneleri hizala'); check this Align/Distribute submenu stays distinguishable from Arrange. +msgid "Align/Distribute" +msgstr "Hizala/Dağıt" + +# AI Translated +msgid "Align and distribute objects" +msgstr "Nesneleri hizala ve dağıt" + msgid "Drop" msgstr "Düşür" @@ -5730,8 +5848,9 @@ msgstr "Özet" msgid "Layer Height" msgstr "Katman Yüksekliği" +# AI Translated msgid "Line Width" -msgstr "Katman Genişliği" +msgstr "Çizgi Genişliği" msgid "Actual Speed" msgstr "Gerçek Hız" @@ -6694,6 +6813,10 @@ msgstr "Kurulum sihirbazı" msgid "Show Configuration Folder" msgstr "Yapılandırma klasörünü göster" +# AI Translated +msgid "Bring back filament presets that a profile update removed from printers they were made for" +msgstr "Bir profil güncellemesinin oluşturuldukları yazıcılardan kaldırdığı filament ön ayarlarını geri getir" + msgid "Troubleshoot Center" msgstr "Sorun giderme merkezi" @@ -8654,6 +8777,7 @@ msgid "Material settings" msgstr "Malzeme ayarları" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "araç"; align it once the term is settled. msgid "Each mode names the tool heads that take part and the role each one plays. Click a tool button to cycle its role — hover a color below for what each role does." msgstr "Her mod, katılan baskı kafalarını ve her birinin üstlendiği rolü belirtir. Rolleri arasında sırayla geçiş yapmak için bir araç düğmesine tıklayın — her rolün ne yaptığını görmek için aşağıdaki bir rengin üzerine gelin." @@ -8662,6 +8786,7 @@ msgid "Add Mode" msgstr "Mod Ekle" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "Araçlar"; align it once the term is settled. msgid "Tools" msgstr "Araçlar" @@ -8678,6 +8803,7 @@ msgid "Which tool heads take part in the mode and what role each one plays. Clic msgstr "Modda hangi baskı kafalarının yer aldığı ve her birinin hangi rolü üstlendiği. Rolleri arasında sırayla geçiş yapmak için bir kutucuğa tıklayın." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "araç"; align it once the term is settled. msgid "G-code run at print start to put the printer into this mode (for example a Klipper SET_PRINT_MODE call). The slicer only emits the Primary tool's paths; the firmware drives the others." msgstr "Yazıcıyı bu moda geçirmek için baskı başlangıcında çalıştırılan G-code (örneğin bir Klipper SET_PRINT_MODE çağrısı). Dilimleyici yalnızca Birincil (Primary) aracın yollarını üretir; diğerlerini ürün yazılımı yönetir." @@ -8712,7 +8838,7 @@ msgid "Span" msgstr "Span" # AI Translated -# Needs human review: "grid" here is the role-tile grid of the IDEX/IQEX Modes editor (Printer Settings), not the Grid pattern, so it is "Izgara" rather than the glossary "Kafes"; check it reads right next to the tiles. +# Needs human review: "grid" here is the role-tile grid of the IDEX/IQEX Modes editor (Printer Settings), not the Grid pattern, so it is "Izgara" rather than the glossary "Kafes"; check it reads right next to the tiles; Unsettled glossary term (⚠) "Tool (printer)": this entry uses "araç"; align it once the term is settled. msgid "Drives every sliced path. Always tool 0 — use Tool 0 Position above to choose which corner of the bed it occupies. It cannot be moved from the grid." msgstr "Tüm dilimlenmiş yolları yürütür. Her zaman araç 0'dır — yatağın hangi köşesinde bulunacağını seçmek için yukarıdaki Araç 0 Konumu ayarını kullanın. Izgarada yeri değiştirilemez." @@ -8725,6 +8851,7 @@ msgid "Follows the Primary at the firmware level, printing the same paths reflec msgstr "Ürün yazılımı düzeyinde Birincil (Primary) aracı izler; aynı yolları iki bölge arasındaki sınıra göre yansıtarak basar." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "araç"; align it once the term is settled. msgid "Marks a tool on the Primary's gantry as its multicolor partner. Required to allow multi-color printing in paired-gantry modes." msgstr "Birincil (Primary) aracın portalındaki bir aracı, onun çok renkli baskı ortağı olarak işaretler. Eşleştirilmiş portal modlarında çok renkli baskıya izin vermek için gereklidir." @@ -8741,6 +8868,7 @@ msgid "Name of this parallel mode, as it appears in the plate's IDEX/IQEX mode s msgstr "Bu paralel modun, plakanın IDEX/IQEX mod seçicisinde görünen adı. Projede adıyla saklanır; bu nedenle plakaların zaten kullandığı bir modu yeniden adlandırmak, bu plakaların Birincil moda geri dönmesine neden olur. Boş bırakılamaz — boş bir ad, otomatik oluşturulan bir adla değiştirilir." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "araç"; align it once the term is settled. msgid "G-code emitted once at the start of a print that uses this mode, before the machine start G-code. This is where the printer is put into the matching firmware mode — for example a Klipper SET_PRINT_MODE call or a RepRapFirmware M567 — since the slicer only emits the Primary tool's paths and the firmware drives the Copy / Mirror tools. Placeholders are supported; use the edit button to browse them. Leave empty if the mode needs no firmware setup." msgstr "Bu modu kullanan bir baskının başında, Yazıcı Başlangıç G-code'undan önce bir kez yazılan G-code. Yazıcı burada ilgili ürün yazılımı moduna geçirilir — örneğin bir Klipper SET_PRINT_MODE çağrısı veya bir RepRapFirmware M567 komutu — çünkü dilimleyici yalnızca Birincil (Primary) aracın yollarını üretir ve Kopya (Copy) / Ayna (Mirror) araçlarını ürün yazılımı yönetir. Yer tutucular desteklenir; bunlara göz atmak için düzenle düğmesini kullanın. Mod herhangi bir ürün yazılımı kurulumu gerektirmiyorsa boş bırakın." @@ -12112,10 +12240,12 @@ msgid "Click to reset all settings to the last saved preset." msgstr "Tüm ayarları en son kaydedilen ön ayara sıfırlamak için tıklayın." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "Prime Kulesi"; align it once the term is settled. msgid "Prime tower is required for nozzle changing. There may be flaws on the model without prime tower. Are you sure you want to disable prime tower?" msgstr "Nozul değişimi için Prime Kulesi gereklidir. Prime Kulesi olmadan modelde kusurlar oluşabilir. Prime Kulesi'ni devre dışı bırakmak istediğinizden emin misiniz?" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "Prime Tower" and "Prime tower"; align it once the term is settled. msgid "A prime tower is required for smooth timelapse mode. There may be flaws on the model without a prime tower. Are you sure you want to disable the prime tower?" msgstr "Sorunsuz timelapse modu için Prime Tower gereklidir. Prime tower olmayan modelde kusurlar olabilir. Prime tower'ı devre dışı bırakmak istediğinizden emin misiniz?" @@ -12132,6 +12262,7 @@ msgid "Enabling both precise Z height and the prime tower may cause slicing erro msgstr "Hem hassas Z yüksekliğini hem de hazırlık kulesini etkinleştirmek dilimleme hatalarına neden olabilir. Yine de hassas Z yüksekliğini etkinleştirmek istiyor musunuz?" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "prime kulesi"; align it once the term is settled. msgid "Smooth timelapse needs a prime tower on every layer, which is not compatible with \"No sparse layers\". \"No sparse layers\" has been turned off." msgstr "Pürüzsüz timelapse her katmanda bir prime kulesi gerektirir; bu da \"Seyrek katman yok\" ile bağdaşmaz. \"Seyrek katman yok\" kapatıldı." @@ -12139,6 +12270,7 @@ msgid "A prime tower is required for smooth timelapse mode. There may be flaws o msgstr "Sorunsuz hızlandırılmış çekim için Prime Tower gereklidir. Prime tower olmayan modelde kusurlar olabilir. Prime tower'ı etkinleştirmek istiyor musunuz?" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "prime kulesi"; align it once the term is settled. msgid "\"No sparse layers\" is not compatible with smooth timelapse, which needs a prime tower on every layer. Timelapse has been switched to traditional mode." msgstr "\"Seyrek katman yok\", her katmanda bir prime kulesi gerektiren pürüzsüz timelapse ile bağdaşmaz. Timelapse geleneksel moda geçirildi." @@ -12271,8 +12403,9 @@ msgstr "tam profil adı" msgid "symbolic profile name" msgstr "sembolik profil adı" +# AI Translated msgid "Line width" -msgstr "Katman Genişliği" +msgstr "Çizgi Genişliği" msgid "Precision" msgstr "Hassasiyet" @@ -14019,6 +14152,7 @@ msgid "No object can be printed. It may be too small." msgstr "Hiçbir nesne basılamıyor. Nesne çok küçük olabilir." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "araç"; align it once the term is settled. #, boost-format msgid "The IDEX/IQEX mode \"%1%\" has no tools assigned on the selected printer. Printing in Primary mode instead. Assign the mode's tools in Printer Settings, or pick another mode from the plate's IDEX/IQEX button." msgstr "\"%1%\" IDEX/IQEX modunun seçili yazıcıda atanmış aracı yok. Bunun yerine Birincil modda basılıyor. Modun araçlarını Yazıcı Ayarları'nda atayın veya plakanın IDEX/IQEX düğmesinden başka bir mod seçin." @@ -14101,6 +14235,18 @@ msgstr "bir çevreyle birden fazla kesişim var, yalnızca biri kullanıldı (%1 msgid "a perimeter is fully inside a modifier, the modifier was not applied to it (%1%)" msgstr "bir çevre tamamen bir değiştiricinin içinde, değiştirici ona uygulanmadı (%1%)" +# AI Translated +#. TRN: %1% is the modifier type "Seam Blocked" as in the menu, %2% the modifier name, %3% the object name. +#, boost-format +msgid "%1% modifier \"%2%\" of \"%3%\" covers an entire perimeter" +msgstr "\"%3%\" nesnesinin %1% değiştiricisi \"%2%\", bir çevrenin tamamını kapsıyor" + +# AI Translated +#. TRN: %1% is the modifier type "Seam Blocked" as in the menu, %2% the modifier name, %3% the object name, %4% the number of modifiers. +#, boost-format +msgid "%1% modifier \"%2%\" of \"%3%\" (%4% in total) covers an entire perimeter" +msgstr "\"%3%\" nesnesinin %1% değiştiricisi \"%2%\" (toplam %4%), bir çevrenin tamamını kapsıyor" + # AI Translated #, boost-format msgid "modifier \"%1%\" of \"%2%\" had no effect on the seam (it might not reach the centerline of the printed perimeter)" @@ -14255,14 +14401,17 @@ msgid "Multi-color prints in IDEX/IQEX parallel modes require each filament to h msgstr "IDEX/IQEX paralel modlarında çok renkli baskılar, her filamentin kendine ayrılmış fiziksel bir ekstruderi olmasını gerektirir. Etkin filamentlerden iki veya daha fazlası, yazıcının fiziksel ekstruder eşlemesi (bir MMU/AFC dağıtıcısı) üzerinden aynı fiziksel kafaya yönlendirilmiş; bağımlı portal bunu izleyemez." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "araç"; align it once the term is settled. msgid "The active IDEX/IQEX mode does not define a primary tool, so multi-color printing cannot be scheduled. Open the printer settings IDEX/IQEX Modes editor and assign a Primary role to one tool." msgstr "Etkin IDEX/IQEX modu birincil bir araç tanımlamıyor, bu nedenle çok renkli baskı planlanamıyor. Yazıcı ayarlarındaki IDEX/IQEX Modlar düzenleyicisini açın ve bir araca Birincil (Primary) rolünü atayın." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "araç"; align it once the term is settled. msgid "Multi-color in this mode isn't a parallel-print scenario — all of the active tools sit on a single gantry, so there's no second gantry being copied or mirrored to. Switch the plate to Primary mode for multi-color printing on a single gantry, or define an IDEX/IQEX mode that includes tools on a second gantry." msgstr "Bu moddaki çok renkli baskı bir paralel baskı senaryosu değil — tüm etkin araçlar tek bir portal üzerinde, dolayısıyla kopyalanacak veya aynalanacak ikinci bir portal yok. Tek portalda çok renkli baskı için plakayı Birincil moda geçirin veya ikinci bir portaldaki araçları içeren bir IDEX/IQEX modu tanımlayın." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "araç"; align it once the term is settled. msgid "Multi-color prints in IDEX/IQEX parallel modes require a Span tool on the primary's gantry — without one, the mode doesn't declare a within-gantry multicolor partner. Either reduce the print to a single filament, switch to Primary mode, or open the printer settings IDEX/IQEX Modes editor and mark a tool on the primary's gantry as Span." msgstr "IDEX/IQEX paralel modlarında çok renkli baskılar, birincil aracın portalında bir Span aracı gerektirir — bu olmadan mod, portal içi bir çok renkli baskı ortağı tanımlamaz. Baskıyı tek bir filamente indirin, Birincil moda geçin ya da yazıcı ayarlarındaki IDEX/IQEX Modlar düzenleyicisini açıp birincil aracın portalındaki bir aracı Span olarak işaretleyin." @@ -14311,6 +14460,7 @@ msgid "%1% is too tall, and collisions will be caused." msgstr "%1% çok uzun ve çarpışmalara neden olacak." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "prime kulesi"; align it once the term is settled. msgid "The relative position of the model and the prime tower does not meet the requirements of the \"No sparse layers\" feature. Please adjust their relative positions, lower the model height, or turn off \"No sparse layers\"." msgstr "Modelin ve prime kulesinin göreli konumu \"Seyrek katman yok\" özelliğinin gereksinimlerini karşılamıyor. Lütfen göreli konumlarını ayarlayın, model yüksekliğini azaltın veya \"Seyrek katman yok\" seçeneğini kapatın." @@ -14471,6 +14621,7 @@ msgid "Variable layer height is not supported with Organic supports." msgstr "Değişken katman yüksekliği Organik desteklerle desteklenmez." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "Silme kulesi"; align it once the term is settled. msgid "The wipe tower filament cannot be a mixed filament." msgstr "Silme kulesi filamenti karışık filament olamaz." @@ -15132,13 +15283,13 @@ msgid "" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" -"If set to 0, the line width will match the Internal solid infill width." +"If set to 0, the line width will match the Internal solid infill width, or the nozzle diameter for thick bridges." msgstr "" -"Köprünün çizgi genişliği. Yüzde olarak ifade edilirse nozul çapı üzerinden hesaplanır.\n" -"Daha yüksek bir Köprü yoğunluğu veya Köprü akış oranı ile birlikte kullanılması önerilir.\n" +"Köprünün çizgi genişliği. % olarak ifade edilirse nozul çapı üzerinden hesaplanacaktır.\n" +"Daha yüksek bir Köprü yoğunluğu veya Köprülerde akış oranı ile birlikte kullanılması önerilir.\n" "\n" "En büyük değer %100 veya nozul çapıdır.\n" -"0 olarak ayarlanırsa çizgi genişliği İç katı dolgu genişliğiyle eşleşir." +"0 olarak ayarlanırsa çizgi genişliği İç katı dolgu genişliğiyle, kalın köprüler için ise nozul çapıyla eşleşir." msgid "Internal bridge flow ratio" msgstr "İç köprü akış oranı" @@ -15423,7 +15574,7 @@ msgid "" "3. If artifacts still appear, enable Extrusion Rate Smoothing (ERS) to further smooth the flow transitions.\n" "\n" "Note: When this option is enabled, overhang perimeters are treated like overhangs, meaning the overhang speed is applied even if the overhanging perimeter is part of a bridge.\n" -"For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 100% overhang speed will be applied." +"For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 75% overhang speed will be applied, limited by the bridge speed." msgstr "" "Duvarların yukarı doğru kıvrılmış olabileceği bölgelerde yazdırmayı yavaşlatmak için bu seçeneği etkinleştirin.\n" "Örneğin, Benchy gövdesinin ön kısmı gibi keskin köşelerdeki çıkıntılar yazdırılırken ek yavaşlama uygulanır; bu da birden çok katmanda birikerek artan kıvrılmayı azaltır.\n" @@ -15435,22 +15586,23 @@ msgstr "" "Bu seçeneği etkinleştirirken öneriler:\n" "1. Ekstruderin hız değişimlerine hızlı tepki vermesi için Pressure Advance yumuşatma süresini 0,015 - 0,02 değerine düşürün.\n" "2. Yavaşlamanın büyüklüğünü sınırlamak ve hızlı ile yavaş bölümler arasındaki farkı azaltmak için minimum baskı hızlarını artırın.\n" -"3. Bozulmalar hâlâ görünüyorsa, akış geçişlerini daha da yumuşatmak için Ekstrüzyon Hızı Yumuşatma'yı (ERS) etkinleştirin.\n" +"3. Bozulmalar hâlâ görünüyorsa, akış geçişlerini daha da yumuşatmak için Ekstrüzyon hızını yumuşatmayı (ERS) etkinleştirin.\n" "\n" "Not: Bu seçenek etkinleştirildiğinde çıkıntı duvarları çıkıntı gibi ele alınır; yani çıkıntı yapan duvar bir köprünün parçası olsa bile çıkıntı hızı uygulanır.\n" -"Örneğin duvarlar %100 çıkıntı yapıyorsa ve altlarında onları destekleyen bir duvar yoksa %100 çıkıntı hızı uygulanır." +"Örneğin duvarlar %100 çıkıntı yapıyorsa ve altlarında onları destekleyen bir duvar yoksa %75 çıkıntı hızı uygulanır ve bu hız köprü hızıyla sınırlanır." msgid "mm/s or %" msgstr "mm/s veya %" +# AI Translated msgid "" "Speed of the externally visible bridge extrusions.\n" "\n" -"In addition, if Slow down for curled perimeters is disabled or Classic overhang mode is enabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." +"In addition, if Slow down for curled perimeters is disabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." msgstr "" "Dışarıdan görülebilen köprü ekstrüzyonlarının hızı.\n" "\n" -"Ayrıca, kıvrılmış çevreler için yavaşlama devre dışı bırakılırsa veya Klasik çıkıntı modu etkinleştirilirse, ister bir köprünün ister bir çıkıntının parçası olsun, %13’ten daha az desteklenen çıkıntılı duvarların yazdırma hızı olacaktır." +"Ayrıca, “Kıvrılmış dış duvarlarda hızı düşür” devre dışı bırakılırsa, ister bir köprünün ister bir çıkıntının parçası olsun, %13’ten daha az desteklenen çıkıntılı duvarların yazdırma hızı olacaktır." msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%." msgstr "İç köprülerin hızı. Değer yüzde olarak ifade edilirse köprü hızına göre hesaplanacaktır. Varsayılan değer %150’dir." @@ -16025,8 +16177,9 @@ msgstr "Parçaların dış duvarlarının yazdırma hızı. Daha yüksek kalite msgid "Small perimeters" msgstr "Küçük çevre (perimeter)" -msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above. Set to zero for auto." -msgstr "Bu ayrı ayar, yarıçapı <= küçük_çevre_eşiği olan çevrelerin (genellikle delikler) hızını etkileyecektir. Yüzde olarak ifade edilirse (örneğin: %80), yukarıdaki dış duvar hızı ayarına göre hesaplanacaktır. Otomatik için sıfıra ayarlayın." +# AI Translated +msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above." +msgstr "Bu ayrı ayar, yarıçapı <= small_perimeter_threshold olan çevrelerin (genellikle delikler) hızını etkileyecektir. Yüzde olarak ifade edilirse (örneğin: %80), yukarıdaki dış duvar hızı ayarına göre hesaplanacaktır." msgid "Small perimeters threshold" msgstr "Küçük çevre (perimeter) eşiği" @@ -16039,8 +16192,8 @@ msgid "Small support perimeters" msgstr "Küçük destek çevreleri" # AI Translated -msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above. Set to zero for auto." -msgstr "\"Küçük çevre (perimeter)\" ile aynıdır, ancak destekler için geçerlidir. Bu ayrı ayar, `small_support_perimeter_threshold` değerinden küçük veya ona eşit alanlar için destek hızını etkiler. Yüzde olarak ifade edilirse (örneğin: %80), yukarıdaki destek veya destek arayüzü hızı ayarı üzerinden hesaplanır. Otomatik için sıfır olarak ayarlayın." +msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above." +msgstr "\"Küçük çevre (perimeter)\" ile aynıdır, ancak destekler için geçerlidir. Bu ayrı ayar, `small_support_perimeter_threshold` değerinden küçük veya ona eşit alanlar için destek hızını etkiler. Yüzde olarak ifade edilirse (örneğin: %80), yukarıdaki destek veya destek arayüzü hızı ayarı üzerinden hesaplanır." # AI Translated msgid "Small support perimeters threshold" @@ -16053,20 +16206,21 @@ msgstr "Bu, küçük destek çevresi uzunluğu için eşiği belirler. Varsayıl msgid "Walls printing order" msgstr "Duvar baskı sırası" +# AI Translated msgid "" "Print sequence of the internal (inner) and external (outer) walls.\n" "\n" "Use Inner/Outer for best overhangs. This is because the overhanging walls can adhere to a neighbouring perimeter while printing. However, this option results in slightly reduced surface quality as the external perimeter is deformed by being squashed to the internal perimeter.\n" "\n" -"Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended against the Outer/Inner option in most cases.\n" +"Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended over the Outer/Inner option in most cases.\n" "\n" "Use Outer/Inner for the same external wall quality and dimensional accuracy benefits of Inner/Outer/Inner option. However, the Z seams will appear less consistent as the first extrusion of a new layer starts on a visible surface." msgstr "" -"İç (iç) ve dış (dış) duvarların baskı sırası.\n" +"İç ve dış duvarların baskı sırası.\n" "\n" -"En iyi çıkıntılar için İç/Dış seçeneğini kullanın. Bunun nedeni, sarkan duvarların baskı sırasında komşu çevreye yapışabilmesidir. Ancak bu seçenek, dış çevrenin iç çevreye sıkıştırılarak deforme olması nedeniyle yüzey kalitesinin biraz düşmesine neden olur.\n" +"En iyi çıkıntılar için İç/Dış seçeneğini kullanın. Bunun nedeni, çıkıntılı duvarların baskı sırasında komşu çevreye yapışabilmesidir. Ancak bu seçenek, dış çevrenin iç çevreye sıkıştırılarak deforme olması nedeniyle yüzey kalitesinin biraz düşmesine neden olur.\n" "\n" -"Dış duvar iç çevreden rahatsız edilmeden basıldığından, en iyi dış yüzey kalitesi ve boyutsal doğruluk için İç/Dış/İç seçeneğini kullanın. Ancak, dış duvarın üzerine baskı yapılacak bir iç çevre olmadığından sarkma performansı düşecektir. Bu seçenek, önce 3. çevreden itibaren iç duvarları, ardından dış çevreyi ve son olarak da birinci iç çevreyi yazdırdığından etkili olması için en az 3 duvar gerektirir. Bu seçenek çoğu durumda Dış/İç seçeneğine karşı önerilir.\n" +"Dış duvar iç çevreden rahatsız edilmeden basıldığından, en iyi dış yüzey kalitesi ve boyutsal doğruluk için İç/Dış/İç seçeneğini kullanın. Ancak, dış duvarın üzerine baskı yapılacak bir iç çevre olmadığından çıkıntı performansı düşecektir. Bu seçenek, önce 3. çevreden itibaren iç duvarları, ardından dış çevreyi ve son olarak da birinci iç çevreyi yazdırdığından etkili olması için en az 3 duvar gerektirir. Bu seçenek çoğu durumda Dış/İç seçeneği yerine önerilir.\n" "\n" "İç/Dış/İç seçeneğinin aynı dış duvar kalitesi ve boyutsal doğruluk avantajları için Dış/İç seçeneğini kullanın. Bununla birlikte, yeni bir katmanın ilk ekstrüzyonu görünür bir yüzey üzerinde başladığından Z dikişleri daha az tutarlı görünecektir." @@ -16206,6 +16360,7 @@ msgid "Enable adaptive pressure advance (beta)" msgstr "Uyarlanabilir Pressure Advance'ı etkinleştir (beta)" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "takım"; align it once the term is settled. #, no-c-format, no-boost-format msgid "" "With increasing print speeds (and hence increasing volumetric flow through the nozzle) and increasing accelerations, it has been observed that the effective PA value typically decreases. This means that a single PA value is not always 100% optimal for all features and a compromise value is usually used that does not cause too much bulging on features with lower flow speed and accelerations while also not causing gaps on faster features.\n" @@ -16525,10 +16680,12 @@ msgid "After a tool change, the exact position of the newly loaded filament insi msgstr "Bir takım değişiminden sonra, yeni yüklenen filamentin nozul içindeki kesin konumu bilinmeyebilir ve filament basıncı muhtemelen henüz stabil değildir. Yazdırma kafasını bir dolguya veya kurban nesneye boşaltmadan önce Orca Slicer, ardışık dolgu veya kurban nesne ekstrüzyonlarını güvenilir bir şekilde üretmek için her zaman bu miktardaki malzemeyi silme kulesine hazırlayacaktır." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "Silme kulesi"; align it once the term is settled. msgid "Wipe tower cooling" msgstr "Silme kulesi soğutması" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "Filament kulesi"; align it once the term is settled. msgid "Temperature drop before entering filament tower" msgstr "Filament kulesine girmeden önceki sıcaklık düşüşü" @@ -17022,14 +17179,16 @@ msgstr "İlk katman yüksekliği" msgid "Height of the first layer. Making the first layer height thicker can improve build plate adhesion." msgstr "İlk katmanın yüksekliği. İlk katman yüksekliğini biraz kalın yapmak, baskı plakasının yapışmasını iyileştirebilir." -msgid "This is the speed for the first layer except for solid infill sections." -msgstr "Katı dolgu kısmı dışındaki ilk katmanın hızı." +# AI Translated +msgid "This is the speed for the walls and brim of the first layer." +msgstr "İlk katmanın duvarlarının ve kenarının hızı." msgid "First layer infill" msgstr "İlk katman dolgusu" -msgid "This is the speed for solid infill parts of the first layer." -msgstr "İlk katmanın katı dolgu kısmının hızı." +# AI Translated +msgid "This is the speed for the first layer except for walls and brim, such as infill, gap fill and support." +msgstr "İlk katmanın duvarlar ve kenar dışındaki kısımlarının (dolgu, boşluk doldurma ve destek gibi) hızı." msgid "First layer travel speed" msgstr "İlk katman seyahat hızı" @@ -17748,16 +17907,18 @@ msgstr "İç seyrek dolgunun çizgi genişliği. % olarak ifade edilirse Nozul msgid "Infill/wall overlap" msgstr "Dolgu/Duvar örtüşmesi" +# AI Translated #, no-c-format, no-boost-format -msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to line width of sparse infill. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." -msgstr "Daha iyi yapışma için dolgu alanı duvarla örtüşecek şekilde hafifçe genişletilir. Yüzde değeri seyrek dolgunun çizgi genişliğine göredir. Aşırı ekstrüzyon ve pürüzlü üst yüzeylere neden olan malzeme birikmesi potansiyelini en aza indirmek için bu değeri ~%10-15’e ayarlayın." +msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to the inner wall line width. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." +msgstr "Daha iyi yapışma için dolgu alanı duvarla örtüşecek şekilde hafifçe genişletilir. Yüzde değeri iç duvar çizgi genişliğine göredir. Aşırı ekstrüzyon ve pürüzlü üst yüzeylere neden olan malzeme birikmesi potansiyelini en aza indirmek için bu değeri ~%10-15’e ayarlayın." msgid "Top/Bottom solid infill/wall overlap" msgstr "Üst/Alt katı dolgu/Duvar örtüşmesi" +# AI Translated #, no-c-format, no-boost-format -msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to line width of sparse infill." -msgstr "Üst katı dolgu alanı, daha iyi yapışma sağlamak ve üst dolgunun duvarlarla buluştuğu yerde küçük deliklerin görünümünü en aza indirmek için duvarla üst üste gelecek şekilde hafifçe genişletilir. %25-30’luk bir değer, iğne deliklerinin görünümünü en aza indiren iyi bir başlangıç noktasıdır. Yüzde değeri seyrek dolgunun çizgi genişliğine göredir." +msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to the inner wall line width." +msgstr "Üst katı dolgu alanı, daha iyi yapışma sağlamak ve üst dolgunun duvarlarla buluştuğu yerde küçük deliklerin görünümünü en aza indirmek için duvarla üst üste gelecek şekilde hafifçe genişletilir. %25-30’luk bir değer, iğne deliklerinin görünümünü en aza indiren iyi bir başlangıç noktasıdır. Yüzde değeri iç duvar çizgi genişliğine göredir." msgid "This is the speed for internal sparse infill." msgstr "İç seyrek dolgunun hızı." @@ -17783,8 +17944,9 @@ msgstr "Bölümlere ayrılmış bir bölgenin maksimum genişliği. 0 bu özelli msgid "Interlocking depth of a segmented region" msgstr "Bölümlere ayrılmış bir bölgenin birbirine kenetlenen derinliği" -msgid "Interlocking depth of a segmented region. It will be ignored if \"mmu_segmented_region_max_width\" is zero or if \"mmu_segmented_region_interlocking_depth\" is bigger than \"mmu_segmented_region_max_width\". Zero disables this feature." -msgstr "Bölümlere ayrılmış bir bölgenin birbirine kenetlenen derinliği. “mmu_segmented_region_max_width” sıfırsa veya “mmu_segmented_region_interlocking_length”, “mmu_segmented_region_max_width” değerinden büyükse göz ardı edilecektir. Sıfır bu özelliği devre dışı bırakır." +# AI Translated +msgid "Interlocking depth of a segmented region. On every other layer, the segmented region is limited to this depth. It will be ignored if \"interlocking_beam\" is enabled. Zero disables this feature." +msgstr "Bölümlere ayrılmış bir bölgenin birbirine kenetlenen derinliği. Her iki katmanda bir, bölümlere ayrılmış bölge bu derinlikle sınırlandırılır. \"interlocking_beam\" etkinse yok sayılır. Sıfır bu özelliği devre dışı bırakır." msgid "Use beam interlocking" msgstr "Kiriş kilitlemeyi kullan" @@ -17893,11 +18055,11 @@ msgstr "Duvar yüksekliğini en aza indirme açısı" # AI Translated msgid "" "Reduce the height of top-surface perimeters to match the model edge height.\n" -"Affects perimeters with a slope less than this angle (degrees).\n" +"Affects perimeters with a slope greater than this angle (degrees).\n" "A reasonable value is 35. Set to 0 to disable." msgstr "" "Üst yüzey duvarlarının yüksekliğini model kenar yüksekliğine uyacak şekilde azaltır.\n" -"Eğimi bu açıdan (derece) küçük olan duvarları etkiler.\n" +"Eğimi bu açıdan (derece) büyük olan duvarları etkiler.\n" "Makul bir değer 35'tir. Devre dışı bırakmak için 0 olarak ayarlayın." # AI Translated @@ -18631,10 +18793,12 @@ msgid "Retraction distance when extruder change" msgstr "Ekstruder değiştiğinde geri çekilme mesafesi" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "takım"; align it once the term is settled. msgid "Retraction Length (Toolchange)" msgstr "Geri çekme uzunluğu (Takım değişimi)" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "takım"; align it once the term is settled. 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 "Takım değişiminden önce geri çekme tetiklendiğinde, filament belirtilen miktarda geri çekilir (uzunluk, ekstrudere girmeden önce ham filament üzerinde ölçülür)." @@ -18742,6 +18906,7 @@ msgid "When the retraction is compensated after the travel move, the extruder wi msgstr "İlerleme hareketinden sonra geri çekilme telafi edildiğinde, ekstruder bu ek filament miktarını itecektir. Bu ayara nadiren ihtiyaç duyulur." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "takım"; align it once the term is settled. msgid "Extra length on restart (Toolchange)" msgstr "Yeniden başlatma sırasında ekstra uzunluk (Takım değişimi)" @@ -18895,8 +19060,9 @@ msgstr "İç duvarlar için atkı dikişi" msgid "Use scarf joint for inner walls as well." msgstr "İç duvarlarda da atkı dikişi kullan." -msgid "Role base wipe speed" -msgstr "Otomatik temizleme hızı" +# AI Translated +msgid "Role based wipe speed" +msgstr "Ekstrüzyon rolüne göre temizleme hızı" msgid "The wipe speed is determined by the speed of the current extrusion role. e.g. if a wipe action is executed immediately following an outer wall extrusion, the speed of the outer wall extrusion will be utilized for the wipe action." msgstr "Temizleme hızı mevcut ekstrüzyon rolünün hızına göre belirlenir; bir dış duvar ekstrüzyonunun hemen ardından bir silme eylemi yürütülürse, silme eylemi için dış duvar ekstrüzyonunun hızı kullanılacaktır." @@ -18985,16 +19151,15 @@ msgstr "Etek/hava akımı kalkanı halkalarını ilk katmandan sonraki bir duvar msgid "Draft shield" msgstr "Rüzgarlık" +# AI Translated msgid "" "A draft shield is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft. It is usually needed only with open frame printers, i.e. without an enclosure.\n" "\n" -"Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used.\n" -"Note: With the draft shield active, the skirt will be printed at skirt distance from the object. Therefore, if brims are active it may intersect with them. To avoid this, increase the skirt distance value.\n" +"Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used." msgstr "" "Rüzgar taslağı nedeniyle ABS veya ASA baskının eğrilmesine ve baskı yatağından ayrılmasına karşı koruma sağlamak için bir rüzgarlık kullanışlıdır. Genellikle yalnızca açık çerçeveli, yani muhafazasız yazıcılarda gereklidir.\n" "\n" -"Etkin = etek, yazdırılan en yüksek nesne kadar uzun. Aksi takdirde ‘Etek yüksekliği’ kullanılır.\n" -"Not: Rüzgarlık etkinken etek, nesneden etek mesafesinde yazdırılacaktır. Bu nedenle eğer kenarlar aktifse onlarla kesişebilir. Bunu önlemek için etek mesafesi değerini artırın.\n" +"Etkin = etek, yazdırılan en yüksek nesne kadar uzun. Aksi takdirde ‘Etek yüksekliği’ kullanılır." msgid "Enabled" msgstr "Etkin" @@ -19117,6 +19282,7 @@ msgid "Farthest point timelapse" msgstr "En uzak noktada timelapse" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "silme kulesi"; align it once the term is settled. msgid "When enabled, the timelapse snapshot is taken at the farthest point from camera instead of traveling to the wipe tower or excess chute. Only effective in traditional timelapse mode on non-I3 printers." msgstr "Etkinleştirildiğinde timelapse anlık görüntüsü, silme kulesine veya atık oluğuna gitmek yerine kameradan en uzak noktada alınır. Yalnızca I3 olmayan yazıcılarda geleneksel timelapse modunda etkilidir." @@ -19186,6 +19352,7 @@ msgid "Number of independent Y-axis gantries. 1 for IDEX/single-rail IQEX. 2 for msgstr "Bağımsız Y ekseni portallarının sayısı. IDEX/tek raylı IQEX için 1. Çift portallı sistemler için 2 (yatağı satırlara böler)." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "araç"; align it once the term is settled. msgid "Tools per Gantry" msgstr "Portal Başına Araç" @@ -19194,10 +19361,12 @@ msgid "Number of independent toolheads per gantry along X. 2 for IDEX-style." msgstr "X boyunca portal başına bağımsız baskı kafası sayısı. IDEX tipi için 2." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "araç"; align it once the term is settled. msgid "Tool 0 Position" msgstr "Araç 0 Konumu" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "araç"; align it once the term is settled. msgid "Physical position on the bed where tool T0 (index 0) is located. Determines how tool indices map to bed zones. For single-gantry setups (IDEX) only left/right matters; for dual-gantry setups (IQEX) all four corners are selectable (front = lower Y / near the operator, rear = higher Y / back of machine)." msgstr "T0 aracının (indeks 0) yatak üzerindeki fiziksel konumu. Araç indekslerinin yatak bölgelerine nasıl eşleneceğini belirler. Tek portallı kurulumlarda (IDEX) yalnızca sol/sağ önemlidir; çift portallı kurulumlarda (IQEX) dört köşenin tümü seçilebilir (ön = düşük Y / operatöre yakın, arka = yüksek Y / makinenin arkası)." @@ -19270,10 +19439,12 @@ msgid "Display names for each user-defined IDEX/IQEX parallel print mode." msgstr "Kullanıcı tanımlı her IDEX/IQEX paralel baskı modu için görünen adlar." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "araç"; align it once the term is settled. msgid "IDEX/IQEX Mode Active Tools" msgstr "IDEX/IQEX Modu Etkin Araçları" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "araç"; align it once the term is settled. msgid "Tool role assignments for each mode. Format: \"idx:P,idx:C,idx:M\" where P=Primary, C=Copy, M=Mirror (e.g. \"0:P,1:C,2:M,3:M\"). Managed by the IDEX/IQEX Modes editor in the Printer preset." msgstr "Her mod için araç rolü atamaları. Biçim: \"idx:P,idx:C,idx:M\"; burada P=Primary (Birincil), C=Copy (Kopya), M=Mirror (Ayna) (ör. \"0:P,1:C,2:M,3:M\"). Yazıcı ön ayarındaki IDEX/IQEX Modlar düzenleyicisi tarafından yönetilir." @@ -19313,18 +19484,22 @@ msgid "Enable filament ramming" msgstr "Filament sıkıştırmayı etkinleştir" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "Silme kulesi"; align it once the term is settled; Unsettled glossary term (⚠) "Tool (printer)": this entry uses "takım"; align it once the term is settled. msgid "Tool change on wipe tower" msgstr "Silme kulesinde takım değişimi" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "silme kulesi"; align it once the term is settled; Unsettled glossary term (⚠) "Tool (printer)": this entry uses "takım"; align it once the term is settled. msgid "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead." msgstr "Takım değişimi komutu (Tx) verilmeden önce baskı kafasını silme kulesine gitmeye zorlar. Yalnızca Tip 2 silme kulesi kullanan çok ekstruderli (çok baskı kafalı) yazıcılar için geçerlidir. Orca, çok baskı kafalı makinelerde bu seyahati varsayılan olarak atlar çünkü kafa değişimini ürün yazılımı yönetir; bu da Tx komutunun yazdırılan parçanın üzerinde verilmesine yol açabilir. Takım değişiminin her zaman silme kulesinin üzerinde verilmesini istiyorsanız bu seçeneği etkinleştirin." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "Silme kulesi"; align it once the term is settled. msgid "Wait for temperature on wipe tower" msgstr "Silme kulesinde sıcaklığı bekle" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "silme kulesi"; align it once the term is settled; Unsettled glossary term (⚠) "Tool (printer)": this entry uses "takım"; align it once the term is settled. msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command." msgstr "Yeni takımı baskı sıcaklığına ulaşmasını beklemeden alır, silme kulesine gider ve sıcaklığı orada, yıkamadan hemen önce bekler. Isınma sırasında sızan malzeme modele değil kuleye düşer ve hareket ısınmayla çakışır. Yalnızca 2. tip silme kulesi kullanan çok ekstruderli (çok baskı kafalı) yazıcılar için geçerlidir. Donanım yazılımı veya takım değişimi makrosu sıcaklığı kendisi beklememelidir. Devre dışı bırakıldığında, sıcaklık bekleme komutu takım değişimi komutundan hemen sonra verilir." @@ -19332,6 +19507,7 @@ msgid "No sparse layers (beta)" msgstr "Seyrek katman yok (beta)" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "silme kulesi"; align it once the term is settled; Unsettled glossary term (⚠) "Tool (printer)": this entry uses "araç"; align it once the term is settled. msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower, so the tower ends up below the model and the toolhead has to reach down to it. Layouts where that would collide with an already printed object are rejected. Has no effect with smooth timelapse or clumping detection, which need a tower on every layer." msgstr "Etkinleştirilirse, silme kulesi araç değişimi olmayan katmanlarda yazdırılmaz. Araç değişimi olan katmanlarda ekstruder silme kulesini yazdırmak için aşağı doğru hareket eder; böylece kule modelin altında kalır ve baskı kafasının ona uzanması gerekir. Bunun daha önce yazdırılmış bir nesneyle çarpışmasına yol açacak yerleşimler reddedilir. Her katmanda bir kule gerektiren pürüzsüz timelapse veya nozul birikme algılamayla birlikte etkisi yoktur." @@ -19340,6 +19516,7 @@ msgid "Combine sparse layers" msgstr "Seyrek katmanları birleştir" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "prime kulesi"; align it once the term is settled. msgid "" "If enabled, consecutive layers on which the prime tower has no filament change are printed as a single thicker tower layer instead of one thin layer each, the same way infill combination merges sparse infill. The merged layer is printed at the top of the run, at the height of everything it covers.\n" "\n" @@ -19360,10 +19537,12 @@ msgid "If enabled, all printing extruders will be primed at the front edge of th msgstr "Etkinleştirilirse, tüm baskı ekstruderleri baskının başlangıcında baskı yatağının ön kenarında temizlenecektir." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "takım"; align it once the term is settled. msgid "Toolchange ordering" msgstr "Takım değişimi sıralaması" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "takım"; align it once the term is settled. msgid "" "Determines the order of tool changes on each layer.\n" "- Default: Starts with the last used extruder to minimize tool changes.\n" @@ -19382,6 +19561,7 @@ msgid "Cyclic order" msgstr "Döngüsel sıra" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "araç"; align it once the term is settled. msgid "" "Custom filament sequence used by the cyclic toolchange ordering, as filament numbers separated by commas (e.g. \"3,2,1,4\").\n" "Each layer prints its filaments following this sequence; filaments not listed are printed last, in ascending order.\n" @@ -19396,6 +19576,7 @@ msgid "Apply cyclic order to first layer" msgstr "Döngüsel sırayı ilk katmana uygula" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "araç"; align it once the term is settled. msgid "" "Applies the cyclic toolchange order to the first layer as well.\n" "By default this is disabled, because the first layer is instead ordered for the best bed adhesion: filaments that print small, fragile first-layer features are printed last, so the following tool changes and travel moves are less likely to knock those weakly anchored parts loose. This first-layer order also honors a custom first layer filament sequence when one is set. The cyclic order's benefit (extra tool changes give each layer more time to cool) does not apply to the first layer, which is printed slowly and hot for adhesion.\n" @@ -20119,6 +20300,7 @@ msgid "Prime volume mode" msgstr "Prime hacmi modu" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "silme kulesi"; align it once the term is settled. msgid "Selects how the wipe-tower prime and flush volumes are computed on multi-extruder printers." msgstr "Çok ekstruderli yazıcılarda silme kulesi prime ve yıkama hacimlerinin nasıl hesaplanacağını seçer." @@ -20151,41 +20333,44 @@ msgstr "Silme kulesini stabilize etmek için kullanılan koninin tepe noktasınd msgid "Maximum wipe tower print speed" msgstr "Maksimum silme kulesi yazdırma hızı" +# AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "Silme kulesi"; align it once the term is settled. msgid "" "The maximum print speed when purging in the wipe tower and printing the wipe tower sparse layers. When purging, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" "\n" -"When printing the sparse layers, if the internal perimeter speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +"When printing the sparse layers, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" "\n" "Increasing this speed may affect the tower's stability as well as increase the force with which the nozzle collides with any blobs that may have formed on the wipe tower.\n" "\n" "Before increasing this parameter beyond the default of 90 mm/s, make sure your printer can reliably bridge at the increased speeds and that ooze when tool changing is well controlled.\n" "\n" -"For the wipe tower external perimeters the internal perimeter speed is used regardless of this setting." +"For the wipe tower external perimeters the internal perimeter speed is used, also limited by this setting." msgstr "" -"Silme kulesinde temizleme yaparken ve silme kulesi seyrek katmanlarını yazdırırken maksimum yazdırma hızı. Temizleme sırasında seyrek dolum hızı veya filamentin maksimum hacimsel hızından hesaplanan hız daha düşükse, bunun yerine en düşük olanı kullanılacaktır.\n" +"Silme kulesinde temizleme yaparken ve silme kulesi seyrek katmanlarını yazdırırken maksimum yazdırma hızı. Temizleme sırasında seyrek dolgu hızı veya filamentin maksimum hacimsel hızından hesaplanan hız daha düşükse, bunun yerine en düşük olanı kullanılacaktır.\n" "\n" -"Seyrek katmanları yazdırırken iç çevre hızı veya filamentin maksimum hacimsel hızından hesaplanan hız daha düşükse bunun yerine en düşük olanı kullanılacaktır.\n" +"Seyrek katmanları yazdırırken seyrek dolgu hızı veya filamentin maksimum hacimsel hızından hesaplanan hız daha düşükse bunun yerine en düşük olanı kullanılacaktır.\n" "\n" "Bu hızın arttırılması kulenin stabilitesini etkileyebileceği gibi, nozulun silme kulesi üzerinde oluşmuş olabilecek damlacıklarla çarpışma kuvvetini de arttırabilir.\n" "\n" -"Bu parametreyi varsayılan 90 mm/sn’nin üzerine çıkarmadan önce, yazıcınızın artan hızlarda güvenilir şekilde köprü kurabildiğinden ve takım değişimi iyi kontrol edildiğinde sızıntı yaptığından emin olun.\n" +"Bu parametreyi varsayılan 90 mm/s değerinin üzerine çıkarmadan önce, yazıcınızın artan hızlarda güvenilir şekilde köprü kurabildiğinden ve takım değişimi sırasındaki sızıntının iyi kontrol edildiğinden emin olun.\n" "\n" -"Silme kulesi dış çevreleri için bu ayardan bağımsız olarak iç çevre hızı kullanılır." +"Silme kulesi dış çevreleri için iç çevre hızı kullanılır; bu hız da bu ayarla sınırlandırılır." msgid "Wall type" msgstr "Duvar tipi" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "Silme kulesi"; align it once the term is settled. msgid "" "Wipe tower outer wall type.\n" -"1. Rectangle: The default wall type, a rectangle with fixed width and height.\n" +"1. Rectangle: A rectangle with fixed width and height.\n" "2. Cone: A cone with a fillet at the bottom to help stabilize the wipe tower.\n" -"3. Rib: Adds four ribs to the tower wall for enhanced stability." +"3. Rib: The default wall type, which adds four ribs to the tower wall for enhanced stability." msgstr "" "Silme kulesi dış duvar tipi.\n" -"1. Dikdörtgen: Varsayılan duvar tipi, sabit genişlik ve yüksekliğe sahip bir dikdörtgendir.\n" +"1. Dikdörtgen: Sabit genişlik ve yüksekliğe sahip bir dikdörtgen.\n" "2. Koni: Silme kulesinin sabitlenmesine yardımcı olmak için alt kısmı yuvarlatılmış bir koni.\n" -"3. Kaburga: Kule duvarına gelişmiş denge için dört kaburga ekler." +"3. Kaburga: Kule duvarına gelişmiş denge için dört kaburga ekleyen varsayılan duvar tipi." msgid "Rectangle" msgstr "Dikdörtgen" @@ -20277,8 +20462,10 @@ msgstr "Silme kulesindeki boşaltma hatlarının aralığı." msgid "Extra flow for purging" msgstr "Temizleme için ekstra akış" -msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker or narrower than they normally would be. The spacing is adjusted automatically." -msgstr "Silme kulesindeki temizleme hatları için ekstra akış kullanılır. Bu, temizleme hatlarının normalde olduğundan daha kalın veya daha dar olmasına neden olur. Aralık otomatik olarak ayarlanır." +# AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "Silme kulesi"; align it once the term is settled. +msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker than they normally would be. The spacing is adjusted automatically." +msgstr "Silme kulesindeki temizleme hatları için ekstra akış kullanılır. Bu, temizleme hatlarının normalde olduğundan daha kalın olmasına neden olur. Aralık otomatik olarak ayarlanır." msgid "Idle temperature" msgstr "Boşta sıcaklık" @@ -20396,14 +20583,15 @@ msgstr "Modeldeki ince özelliklerin minimum kalınlığı. Bu değerden daha in msgid "Minimum wall length" msgstr "Minimum duvar uzunluğu" +# AI Translated msgid "" -"Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. Higher values remove more and longer walls.\n" +"Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. The value is a multiple of the wall width. Higher values remove more and longer walls.\n" "\n" -"NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the Advanced settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." +"NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the 'Walls and surfaces' settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." msgstr "" -"Yazdırma süresini artırabilecek kısa, kapatılmamış duvarların yazdırılmasını önlemek için bu değeri ayarlayın. Daha yüksek değerler daha fazla ve daha uzun duvarları kaldırır.\n" +"Yazdırma süresini artırabilecek kısa, kapatılmamış duvarların yazdırılmasını önlemek için bu değeri ayarlayın. Değer, duvar genişliğinin bir katıdır. Daha yüksek değerler daha fazla ve daha uzun duvarları kaldırır.\n" "\n" -"NOT: Modelin dış kısmında görsel boşluk kalmaması için alt ve üst yüzeyler bu değerden etkilenmeyecektir. Üst yüzey olarak kabul edilen şeyin hassasiyetini ayarlamak için aşağıdaki Gelişmiş ayarlarda 'Tek duvar eşiği'ni ayarlayın. 'Tek duvar eşiği' yalnızca bu ayar varsayılan değer olan 0,5'in üzerine ayarlandığında veya tek duvarlı üst yüzeyler etkinleştirildiğinde görünür." +"NOT: Modelin dış kısmında görsel boşluk kalmaması için alt ve üst yüzeyler bu değerden etkilenmeyecektir. Üst yüzey olarak kabul edilen şeyin hassasiyetini ayarlamak için aşağıdaki 'Duvarlar ve Yüzeyler' ayarlarında 'Tek duvar eşiği'ni ayarlayın. 'Tek duvar eşiği' yalnızca bu ayar varsayılan değer olan 0,5'in üzerine ayarlandığında veya tek duvarlı üst yüzeyler etkinleştirildiğinde görünür." # AI Translated msgid "Maximum wall resolution" @@ -20504,6 +20692,7 @@ msgid "Preheat temperature delta" msgstr "Ön ısıtma sıcaklık farkı" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "takım"; align it once the term is settled. msgid "Temperature delta applied during pre-heating before tool change." msgstr "Takım değişiminden önce ön ısıtma sırasında uygulanan sıcaklık farkı." @@ -21201,6 +21390,7 @@ msgid "Size of the print bed bounding box" msgstr "Baskı yatağı sınırlama kutusunun boyutu" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "Silme kulesi"; align it once the term is settled. msgid "First layer center without wipe tower" msgstr "Silme kulesi olmadan ilk katman merkezi" @@ -21345,10 +21535,12 @@ msgid "Indicates if relative positioning is being used." msgstr "Göreli konumlandırmanın kullanılıp kullanılmadığını belirtir." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "takım"; align it once the term is settled. msgid "Toolchange count" msgstr "Takım değişimi sayısı" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "takım"; align it once the term is settled. msgid "The number of toolchanges throughout the print." msgstr "Baskı boyunca takım değişimi sayısı." @@ -21369,18 +21561,22 @@ msgid "The retraction length of the new filament." msgstr "Yeni filamentin geri çekme uzunluğu." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "takım"; align it once the term is settled. msgid "Old retract length toolchange" msgstr "Takım değişiminde eski geri çekme uzunluğu" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "takım"; align it once the term is settled. msgid "The toolchange retraction length of the previous filament." msgstr "Önceki filamentin takım değişimi geri çekme uzunluğu." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "takım"; align it once the term is settled. msgid "New retract length toolchange" msgstr "Takım değişiminde yeni geri çekme uzunluğu" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "takım"; align it once the term is settled. msgid "The toolchange retraction length of the new filament." msgstr "Yeni filamentin takım değişimi geri çekme uzunluğu." @@ -21401,26 +21597,32 @@ msgid "The new filament temp." msgstr "Yeni filament sıcaklığı." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "takım"; align it once the term is settled. msgid "X after toolchange" msgstr "Takım değişiminden sonra X" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "takım"; align it once the term is settled. msgid "The X pos after toolchange." msgstr "Takım değişiminden sonra X konumu." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "takım"; align it once the term is settled. msgid "Y after toolchange" msgstr "Takım değişiminden sonra Y" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "takım"; align it once the term is settled. msgid "The Y pos after toolchange." msgstr "Takım değişiminden sonra Y konumu." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "takım"; align it once the term is settled. msgid "Z after toolchange" msgstr "Takım değişiminden sonra Z" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "takım"; align it once the term is settled. msgid "The Z pos after toolchange." msgstr "Takım değişiminden sonra Z konumu." @@ -23054,6 +23256,7 @@ msgid "Slice the plate first to get project material information." msgstr "Proje malzeme bilgilerini almak için önce plakayı dilimleyin." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Tool (printer)": this entry uses "takım"; align it once the term is settled. msgid "This plate uses multiple materials. Enable IFS and assign each tool to a printer slot." msgstr "Bu plaka birden çok malzeme kullanıyor. IFS'yi etkinleştirin ve her takımı bir yazıcı yuvasına atayın." @@ -24416,9 +24619,6 @@ msgstr "Akıllı filament atamasını etkinleştir: Tasarrufu en üst düzeye ç msgid "File Saving" msgstr "Dosya Kaydetme" -msgid "Don't remind me again" -msgstr "Bana bir daha hatırlatma" - msgid "No further pop-up will appear. You can reopen it in 'Preferences'" msgstr "Başka bir açılır pencere görünmeyecek. 'Tercihler'de yeniden açabilirsiniz" @@ -34998,6 +35198,172 @@ msgstr "" "Eğilmeyi önleyin\n" "ABS gibi bükülmeye yatkın malzemelere baskı yaparken, ısıtma yatağı sıcaklığının uygun şekilde arttırılmasının bükülme olasılığını azaltabileceğini biliyor muydunuz?" +# AI Translated +#~ msgid "" +#~ "Line width of the Bridge. If expressed as a %, it will be computed over the nozzle diameter.\n" +#~ "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" +#~ "\n" +#~ "The maximum value is 100% or the nozzle diameter.\n" +#~ "If set to 0, the line width will match the Internal solid infill width." +#~ msgstr "" +#~ "Köprünün çizgi genişliği. Yüzde olarak ifade edilirse nozul çapı üzerinden hesaplanır.\n" +#~ "Daha yüksek bir Köprü yoğunluğu veya Köprü akış oranı ile birlikte kullanılması önerilir.\n" +#~ "\n" +#~ "En büyük değer %100 veya nozul çapıdır.\n" +#~ "0 olarak ayarlanırsa çizgi genişliği İç katı dolgu genişliğiyle eşleşir." + +# AI Translated +#, no-c-format, no-boost-format +#~ msgid "" +#~ "Enable this option to slow down printing in areas where perimeters may have curled upwards.\n" +#~ "For example, additional slowdown will be applied when printing overhangs on sharp corners like the front of the Benchy hull, reducing curling which compounds over multiple layers.\n" +#~ "\n" +#~ "It is generally recommended to have this option switched on unless your printer cooling is powerful enough or the print speed is slow enough that perimeter curling does not happen. \n" +#~ "If printing with a high external perimeter speed, this parameter may introduce wall artifacts when slowing down, due to the potentially large variance in print speeds causing the extruder to be unable to keep up with the requested flow change.\n" +#~ "Root cause of these artifacts is most likely PA tuning being slightly off, especially when combined with a high PA smooth time.\n" +#~ "\n" +#~ "Recommendations when enabling this option:\n" +#~ "1. Reduce Pressure Advance smooth time to 0.015 - 0.02 so the extruder reacts quickly to the speed changes.\n" +#~ "2. Increase the minimum print speeds to limit the magnitude of the slowdown and reduce the variance between fast and slow segments.\n" +#~ "3. If artifacts still appear, enable Extrusion Rate Smoothing (ERS) to further smooth the flow transitions.\n" +#~ "\n" +#~ "Note: When this option is enabled, overhang perimeters are treated like overhangs, meaning the overhang speed is applied even if the overhanging perimeter is part of a bridge.\n" +#~ "For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 100% overhang speed will be applied." +#~ msgstr "" +#~ "Duvarların yukarı doğru kıvrılmış olabileceği bölgelerde yazdırmayı yavaşlatmak için bu seçeneği etkinleştirin.\n" +#~ "Örneğin, Benchy gövdesinin ön kısmı gibi keskin köşelerdeki çıkıntılar yazdırılırken ek yavaşlama uygulanır; bu da birden çok katmanda birikerek artan kıvrılmayı azaltır.\n" +#~ "\n" +#~ "Yazıcınızın soğutması yeterince güçlü değilse veya baskı hızı duvar kıvrılması oluşmayacak kadar düşük değilse bu seçeneğin açık olması genellikle önerilir. \n" +#~ "Yüksek bir dış duvar hızıyla yazdırılıyorsa, baskı hızlarındaki olası büyük değişkenlik ekstruderin istenen akış değişimine yetişememesine yol açacağından bu parametre yavaşlama sırasında duvarda bozulmalara neden olabilir.\n" +#~ "Bu bozulmaların asıl nedeni büyük olasılıkla PA ayarının biraz kaymış olmasıdır, özellikle de yüksek bir PA yumuşatma süresiyle birleştiğinde.\n" +#~ "\n" +#~ "Bu seçeneği etkinleştirirken öneriler:\n" +#~ "1. Ekstruderin hız değişimlerine hızlı tepki vermesi için Pressure Advance yumuşatma süresini 0,015 - 0,02 değerine düşürün.\n" +#~ "2. Yavaşlamanın büyüklüğünü sınırlamak ve hızlı ile yavaş bölümler arasındaki farkı azaltmak için minimum baskı hızlarını artırın.\n" +#~ "3. Bozulmalar hâlâ görünüyorsa, akış geçişlerini daha da yumuşatmak için Ekstrüzyon Hızı Yumuşatma'yı (ERS) etkinleştirin.\n" +#~ "\n" +#~ "Not: Bu seçenek etkinleştirildiğinde çıkıntı duvarları çıkıntı gibi ele alınır; yani çıkıntı yapan duvar bir köprünün parçası olsa bile çıkıntı hızı uygulanır.\n" +#~ "Örneğin duvarlar %100 çıkıntı yapıyorsa ve altlarında onları destekleyen bir duvar yoksa %100 çıkıntı hızı uygulanır." + +#~ msgid "" +#~ "Speed of the externally visible bridge extrusions.\n" +#~ "\n" +#~ "In addition, if Slow down for curled perimeters is disabled or Classic overhang mode is enabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." +#~ msgstr "" +#~ "Dışarıdan görülebilen köprü ekstrüzyonlarının hızı.\n" +#~ "\n" +#~ "Ayrıca, kıvrılmış çevreler için yavaşlama devre dışı bırakılırsa veya Klasik çıkıntı modu etkinleştirilirse, ister bir köprünün ister bir çıkıntının parçası olsun, %13’ten daha az desteklenen çıkıntılı duvarların yazdırma hızı olacaktır." + +#~ msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above. Set to zero for auto." +#~ msgstr "Bu ayrı ayar, yarıçapı <= küçük_çevre_eşiği olan çevrelerin (genellikle delikler) hızını etkileyecektir. Yüzde olarak ifade edilirse (örneğin: %80), yukarıdaki dış duvar hızı ayarına göre hesaplanacaktır. Otomatik için sıfıra ayarlayın." + +# AI Translated +#~ msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above. Set to zero for auto." +#~ msgstr "\"Küçük çevre (perimeter)\" ile aynıdır, ancak destekler için geçerlidir. Bu ayrı ayar, `small_support_perimeter_threshold` değerinden küçük veya ona eşit alanlar için destek hızını etkiler. Yüzde olarak ifade edilirse (örneğin: %80), yukarıdaki destek veya destek arayüzü hızı ayarı üzerinden hesaplanır. Otomatik için sıfır olarak ayarlayın." + +#~ msgid "" +#~ "Print sequence of the internal (inner) and external (outer) walls.\n" +#~ "\n" +#~ "Use Inner/Outer for best overhangs. This is because the overhanging walls can adhere to a neighbouring perimeter while printing. However, this option results in slightly reduced surface quality as the external perimeter is deformed by being squashed to the internal perimeter.\n" +#~ "\n" +#~ "Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended against the Outer/Inner option in most cases.\n" +#~ "\n" +#~ "Use Outer/Inner for the same external wall quality and dimensional accuracy benefits of Inner/Outer/Inner option. However, the Z seams will appear less consistent as the first extrusion of a new layer starts on a visible surface." +#~ msgstr "" +#~ "İç (iç) ve dış (dış) duvarların baskı sırası.\n" +#~ "\n" +#~ "En iyi çıkıntılar için İç/Dış seçeneğini kullanın. Bunun nedeni, sarkan duvarların baskı sırasında komşu çevreye yapışabilmesidir. Ancak bu seçenek, dış çevrenin iç çevreye sıkıştırılarak deforme olması nedeniyle yüzey kalitesinin biraz düşmesine neden olur.\n" +#~ "\n" +#~ "Dış duvar iç çevreden rahatsız edilmeden basıldığından, en iyi dış yüzey kalitesi ve boyutsal doğruluk için İç/Dış/İç seçeneğini kullanın. Ancak, dış duvarın üzerine baskı yapılacak bir iç çevre olmadığından sarkma performansı düşecektir. Bu seçenek, önce 3. çevreden itibaren iç duvarları, ardından dış çevreyi ve son olarak da birinci iç çevreyi yazdırdığından etkili olması için en az 3 duvar gerektirir. Bu seçenek çoğu durumda Dış/İç seçeneğine karşı önerilir.\n" +#~ "\n" +#~ "İç/Dış/İç seçeneğinin aynı dış duvar kalitesi ve boyutsal doğruluk avantajları için Dış/İç seçeneğini kullanın. Bununla birlikte, yeni bir katmanın ilk ekstrüzyonu görünür bir yüzey üzerinde başladığından Z dikişleri daha az tutarlı görünecektir." + +#~ msgid "This is the speed for the first layer except for solid infill sections." +#~ msgstr "Katı dolgu kısmı dışındaki ilk katmanın hızı." + +#~ msgid "This is the speed for solid infill parts of the first layer." +#~ msgstr "İlk katmanın katı dolgu kısmının hızı." + +#, no-c-format, no-boost-format +#~ msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to line width of sparse infill. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." +#~ msgstr "Daha iyi yapışma için dolgu alanı duvarla örtüşecek şekilde hafifçe genişletilir. Yüzde değeri seyrek dolgunun çizgi genişliğine göredir. Aşırı ekstrüzyon ve pürüzlü üst yüzeylere neden olan malzeme birikmesi potansiyelini en aza indirmek için bu değeri ~%10-15’e ayarlayın." + +#, no-c-format, no-boost-format +#~ msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to line width of sparse infill." +#~ msgstr "Üst katı dolgu alanı, daha iyi yapışma sağlamak ve üst dolgunun duvarlarla buluştuğu yerde küçük deliklerin görünümünü en aza indirmek için duvarla üst üste gelecek şekilde hafifçe genişletilir. %25-30’luk bir değer, iğne deliklerinin görünümünü en aza indiren iyi bir başlangıç noktasıdır. Yüzde değeri seyrek dolgunun çizgi genişliğine göredir." + +#~ msgid "Interlocking depth of a segmented region. It will be ignored if \"mmu_segmented_region_max_width\" is zero or if \"mmu_segmented_region_interlocking_depth\" is bigger than \"mmu_segmented_region_max_width\". Zero disables this feature." +#~ msgstr "Bölümlere ayrılmış bir bölgenin birbirine kenetlenen derinliği. “mmu_segmented_region_max_width” sıfırsa veya “mmu_segmented_region_interlocking_length”, “mmu_segmented_region_max_width” değerinden büyükse göz ardı edilecektir. Sıfır bu özelliği devre dışı bırakır." + +# AI Translated +#~ msgid "" +#~ "Reduce the height of top-surface perimeters to match the model edge height.\n" +#~ "Affects perimeters with a slope less than this angle (degrees).\n" +#~ "A reasonable value is 35. Set to 0 to disable." +#~ msgstr "" +#~ "Üst yüzey duvarlarının yüksekliğini model kenar yüksekliğine uyacak şekilde azaltır.\n" +#~ "Eğimi bu açıdan (derece) küçük olan duvarları etkiler.\n" +#~ "Makul bir değer 35'tir. Devre dışı bırakmak için 0 olarak ayarlayın." + +#~ msgid "Role base wipe speed" +#~ msgstr "Otomatik temizleme hızı" + +#~ msgid "" +#~ "A draft shield is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft. It is usually needed only with open frame printers, i.e. without an enclosure.\n" +#~ "\n" +#~ "Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used.\n" +#~ "Note: With the draft shield active, the skirt will be printed at skirt distance from the object. Therefore, if brims are active it may intersect with them. To avoid this, increase the skirt distance value.\n" +#~ msgstr "" +#~ "Rüzgar taslağı nedeniyle ABS veya ASA baskının eğrilmesine ve baskı yatağından ayrılmasına karşı koruma sağlamak için bir rüzgarlık kullanışlıdır. Genellikle yalnızca açık çerçeveli, yani muhafazasız yazıcılarda gereklidir.\n" +#~ "\n" +#~ "Etkin = etek, yazdırılan en yüksek nesne kadar uzun. Aksi takdirde ‘Etek yüksekliği’ kullanılır.\n" +#~ "Not: Rüzgarlık etkinken etek, nesneden etek mesafesinde yazdırılacaktır. Bu nedenle eğer kenarlar aktifse onlarla kesişebilir. Bunu önlemek için etek mesafesi değerini artırın.\n" + +#~ msgid "" +#~ "The maximum print speed when purging in the wipe tower and printing the wipe tower sparse layers. When purging, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +#~ "\n" +#~ "When printing the sparse layers, if the internal perimeter speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +#~ "\n" +#~ "Increasing this speed may affect the tower's stability as well as increase the force with which the nozzle collides with any blobs that may have formed on the wipe tower.\n" +#~ "\n" +#~ "Before increasing this parameter beyond the default of 90 mm/s, make sure your printer can reliably bridge at the increased speeds and that ooze when tool changing is well controlled.\n" +#~ "\n" +#~ "For the wipe tower external perimeters the internal perimeter speed is used regardless of this setting." +#~ msgstr "" +#~ "Silme kulesinde temizleme yaparken ve silme kulesi seyrek katmanlarını yazdırırken maksimum yazdırma hızı. Temizleme sırasında seyrek dolum hızı veya filamentin maksimum hacimsel hızından hesaplanan hız daha düşükse, bunun yerine en düşük olanı kullanılacaktır.\n" +#~ "\n" +#~ "Seyrek katmanları yazdırırken iç çevre hızı veya filamentin maksimum hacimsel hızından hesaplanan hız daha düşükse bunun yerine en düşük olanı kullanılacaktır.\n" +#~ "\n" +#~ "Bu hızın arttırılması kulenin stabilitesini etkileyebileceği gibi, nozulun silme kulesi üzerinde oluşmuş olabilecek damlacıklarla çarpışma kuvvetini de arttırabilir.\n" +#~ "\n" +#~ "Bu parametreyi varsayılan 90 mm/sn’nin üzerine çıkarmadan önce, yazıcınızın artan hızlarda güvenilir şekilde köprü kurabildiğinden ve takım değişimi iyi kontrol edildiğinde sızıntı yaptığından emin olun.\n" +#~ "\n" +#~ "Silme kulesi dış çevreleri için bu ayardan bağımsız olarak iç çevre hızı kullanılır." + +# AI Translated +#~ msgid "" +#~ "Wipe tower outer wall type.\n" +#~ "1. Rectangle: The default wall type, a rectangle with fixed width and height.\n" +#~ "2. Cone: A cone with a fillet at the bottom to help stabilize the wipe tower.\n" +#~ "3. Rib: Adds four ribs to the tower wall for enhanced stability." +#~ msgstr "" +#~ "Silme kulesi dış duvar tipi.\n" +#~ "1. Dikdörtgen: Varsayılan duvar tipi, sabit genişlik ve yüksekliğe sahip bir dikdörtgendir.\n" +#~ "2. Koni: Silme kulesinin sabitlenmesine yardımcı olmak için alt kısmı yuvarlatılmış bir koni.\n" +#~ "3. Kaburga: Kule duvarına gelişmiş denge için dört kaburga ekler." + +#~ msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker or narrower than they normally would be. The spacing is adjusted automatically." +#~ msgstr "Silme kulesindeki temizleme hatları için ekstra akış kullanılır. Bu, temizleme hatlarının normalde olduğundan daha kalın veya daha dar olmasına neden olur. Aralık otomatik olarak ayarlanır." + +#~ msgid "" +#~ "Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. Higher values remove more and longer walls.\n" +#~ "\n" +#~ "NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the Advanced settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." +#~ msgstr "" +#~ "Yazdırma süresini artırabilecek kısa, kapatılmamış duvarların yazdırılmasını önlemek için bu değeri ayarlayın. Daha yüksek değerler daha fazla ve daha uzun duvarları kaldırır.\n" +#~ "\n" +#~ "NOT: Modelin dış kısmında görsel boşluk kalmaması için alt ve üst yüzeyler bu değerden etkilenmeyecektir. Üst yüzey olarak kabul edilen şeyin hassasiyetini ayarlamak için aşağıdaki Gelişmiş ayarlarda 'Tek duvar eşiği'ni ayarlayın. 'Tek duvar eşiği' yalnızca bu ayar varsayılan değer olan 0,5'in üzerine ayarlandığında veya tek duvarlı üst yüzeyler etkinleştirildiğinde görünür." + # AI Translated #, boost-format #~ msgid "Split into %1% part" diff --git a/localization/i18n/uk/OrcaSlicer_uk.po b/localization/i18n/uk/OrcaSlicer_uk.po index fc666c8395..26d3d38beb 100644 --- a/localization/i18n/uk/OrcaSlicer_uk.po +++ b/localization/i18n/uk/OrcaSlicer_uk.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: orcaslicerua\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-10-13 09:55-0300\n" +"POT-Creation-Date: 2026-10-14 10:04-0300\n" "PO-Revision-Date: 2026-07-17 16:25+0300\n" "Last-Translator: Andrij Mizyk \n" "Language-Team: Ukrainian\n" @@ -2413,6 +2413,66 @@ msgstr "Розширення мережевого плагіну" msgid "Privacy Policy Update" msgstr "Оновлення політики конфіденційності" +# AI Translated +msgid "All your filament presets are available on the printers they were made for." +msgstr "Усі ваші пресети філаменту доступні на принтерах, для яких вони були створені." + +# AI Translated +msgid "Migrate Filament Presets" +msgstr "Переміщення пресетів філаменту" + +# AI Translated +msgid "" +"OrcaSlicer 2.5.0 restructured many system filament presets to fix incorrect profiles and prepare for future features. As a result, the presets below no longer show on some printers they were made for. Sorry for the trouble; this is a one-time fix.\n" +"\n" +"Add those printers back to your presets now? Your presets are backed up first. You can also do this later from Help > Migrate Filament Presets." +msgstr "" +"OrcaSlicer 2.5.0 змінив структуру багатьох системних пресетів філаменту, щоб виправити некоректні профілі та підготуватися до майбутніх функцій. Через це наведені нижче пресети більше не відображаються на деяких принтерах, для яких вони були створені. Вибачте за незручності: це одноразове виправлення.\n" +"\n" +"Додати ці принтери назад до ваших пресетів зараз? Спочатку буде створено резервну копію ваших пресетів. Це також можна зробити пізніше через Допомога > Переміщення пресетів філаменту." + +# AI Translated +#, boost-format +msgid "%1% (based on %2%)" +msgstr "%1% (на основі %2%)" + +msgid "Don't remind me again" +msgstr "Не нагадувати мені більше" + +# AI Translated +msgid "Your presets could not be backed up, so they were not migrated." +msgstr "Не вдалося створити резервну копію ваших пресетів, тому їх не було переміщено." + +# AI Translated +msgid "The user presets folder could not be locked, so nothing was migrated. Another OrcaSlicer instance may be saving presets; try again later from Help > Migrate Filament Presets." +msgstr "Не вдалося заблокувати теку пресетів користувача, тому нічого не було переміщено. Можливо, інший екземпляр OrcaSlicer зберігає пресети; спробуйте ще раз пізніше через Допомога > Переміщення пресетів філаменту." + +# AI Translated +#, boost-format +msgid "" +"Your filament presets could not be migrated. A backup of your presets was saved to:\n" +"%1%" +msgstr "" +"Не вдалося перемістити ваші пресети філаменту. Резервну копію ваших пресетів збережено в:\n" +"%1%" + +# AI Translated +#, boost-format +msgid "" +"Your filament presets were migrated. Select them again in the filament list where you used them.\n" +"\n" +"A backup of your presets was saved to:\n" +"%1%" +msgstr "" +"Ваші пресети філаменту переміщено. Виберіть їх знову у списку філаментів там, де ви їх використовували.\n" +"\n" +"Резервну копію ваших пресетів збережено в:\n" +"%1%" + +# AI Translated +msgid "These presets could not be migrated:" +msgstr "Не вдалося перемістити ці пресети:" + #, c-format, boost-format msgid "your Orca Cloud profile (user ID: \"%s\")" msgstr "ваш профіль Orca Cloud (ІД користувача: \"%s\")" @@ -3124,6 +3184,63 @@ msgstr "(Втрачений колір)" msgid "Center" msgstr "Центр" +# AI Translated +msgid "Distribute left-right" +msgstr "Розподілити за шириною" + +# AI Translated +msgid "Distribute front-back" +msgstr "Розподілити за глибиною" + +# AI Translated +msgid "Distribute top-bottom" +msgstr "Розподілити за висотою" + +# AI Translated +msgid "Align left" +msgstr "Вирівняти за лівим краєм" + +# AI Translated +# Needs human review: Align/Distribute menu (object right-click): left-right/front-back/top-bottom are rendered as за шириною/глибиною/висотою (the menu appends X/Y/Z); check it reads as aligning the objects' centers along that axis. +msgid "Align left-right center" +msgstr "Вирівняти центри за шириною" + +# AI Translated +msgid "Align right" +msgstr "Вирівняти за правим краєм" + +# AI Translated +msgid "Align front" +msgstr "Вирівняти за переднім краєм" + +# AI Translated +msgid "Align front-back center" +msgstr "Вирівняти центри за глибиною" + +# AI Translated +msgid "Align back" +msgstr "Вирівняти за заднім краєм" + +# AI Translated +msgid "Align bottom" +msgstr "Вирівняти за нижнім краєм" + +# AI Translated +msgid "Align top-bottom center" +msgstr "Вирівняти центри за висотою" + +# AI Translated +msgid "Align top" +msgstr "Вирівняти за верхнім краєм" + +# AI Translated +msgid "Align/Distribute" +msgstr "Вирівняти/Розподілити" + +# AI Translated +msgid "Align and distribute objects" +msgstr "Вирівняти та розподілити обʼєкти" + msgid "Drop" msgstr "Кинути" @@ -6685,6 +6802,10 @@ msgstr "Майстер налаштувань" msgid "Show Configuration Folder" msgstr "Показати папку конфігурації" +# AI Translated +msgid "Bring back filament presets that a profile update removed from printers they were made for" +msgstr "Повернути пресети філаменту, які оновлення профілів прибрало з принтерів, для яких вони були створені" + msgid "Troubleshoot Center" msgstr "Центр вирішення проблем" @@ -9075,6 +9196,7 @@ msgid "Enabling traditional timelapse photography may cause surface imperfection msgstr "Включення традиційної фотографії таймлапсу може призвести до дефектів на поверхні. Рекомендується перейти в режим згладжування." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "підготовча вежа"; align it once the term is settled. msgid "Smooth mode for timelapse is enabled, but the prime tower is off, which may cause print defects. Please enable the prime tower, re-slice and print again." msgstr "Увімкнено плавний режим таймлапсу, але підготовчу вежу вимкнено, що може спричинити дефекти друку. Увімкніть підготовчу вежу, повторно наріжте та надрукуйте ще раз." @@ -10134,8 +10256,9 @@ msgstr "Поведінка завантаження" msgid "Should printer/filament/process settings be loaded when opening a 3MF file?" msgstr "Чи повинні бути завантажені налаштування принтера/філаменту/процесу при відкритті файлу .3mf?" +# AI Translated msgid "Auto backup" -msgstr "Автобекап" +msgstr "Автоматичне резервне копіювання" msgid "Backup your project periodically to help with restoring from an occasional crash." msgstr "Періодично робіть резервну копію вашого проекту для відновлення після випадкового збою." @@ -12166,6 +12289,7 @@ msgid "Click to reset all settings to the last saved preset." msgstr "Натисніть, щоб скинути всі налаштування до останнього збереженого пресету." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "підготовча вежа"; align it once the term is settled. msgid "Prime tower is required for nozzle changing. There may be flaws on the model without prime tower. Are you sure you want to disable prime tower?" msgstr "Для зміни сопла потрібна підготовча вежа. Без підготовчої вежі на моделі можуть зʼявитися дефекти. Ви впевнені, що хочете вимкнути підготовчу вежу?" @@ -12173,30 +12297,37 @@ msgid "A prime tower is required for smooth timelapse mode. There may be flaws o msgstr "Для плавного таймлапсу потребується Підготовча вежа. Без Підготовчої вежі на моделі можуть виникати дефекти. Ви впевнені, що хочете вимкнути Підготовчу вежу?" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "підготовча вежа"; align it once the term is settled. msgid "A prime tower is required for clumping detection. There may be flaws on the model without prime tower. Are you sure you want to disable prime tower?" msgstr "Для виявлення налипання потрібна підготовча вежа. Без підготовчої вежі на моделі можуть зʼявитися дефекти. Ви впевнені, що хочете вимкнути підготовчу вежу?" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "підготовча вежа"; align it once the term is settled. msgid "Enabling both precise Z height and the prime tower may cause slicing errors. Do you still want to enable?" msgstr "Одночасне увімкнення точної висоти Z та підготовчої вежі може спричинити помилки нарізки. Ви все одно хочете увімкнути?" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "підготовча вежа"; align it once the term is settled. msgid "A prime tower is required for clumping detection. There may be flaws on the model without prime tower. Do you still want to enable clumping detection?" msgstr "Для виявлення налипання потрібна підготовча вежа. Без підготовчої вежі на моделі можуть зʼявитися дефекти. Ви все одно хочете увімкнути виявлення налипання?" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "підготовча вежа"; align it once the term is settled. msgid "Enabling both precise Z height and the prime tower may cause slicing errors. Do you still want to enable precise Z height?" msgstr "Одночасне увімкнення точної висоти Z та підготовчої вежі може спричинити помилки нарізки. Ви все одно хочете увімкнути точну висоту Z?" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "підготовча вежа"; align it once the term is settled. msgid "Smooth timelapse needs a prime tower on every layer, which is not compatible with \"No sparse layers\". \"No sparse layers\" has been turned off." msgstr "Плавний таймлапс потребує підготовчої вежі на кожному шарі, що несумісно з параметром «Без розріджених шарів». Параметр «Без розріджених шарів» вимкнено." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "підготовча вежа"; align it once the term is settled. msgid "A prime tower is required for smooth timelapse mode. There may be flaws on the model without prime tower. Do you want to enable the prime tower?" msgstr "Для плавного таймлапсу потрібна підготовча вежа. Без підготовчої вежі на моделі можуть виникати дефекти. Ви хочете увімкнути підготовчу вежу?" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "підготовча вежа"; align it once the term is settled. msgid "\"No sparse layers\" is not compatible with smooth timelapse, which needs a prime tower on every layer. Timelapse has been switched to traditional mode." msgstr "Параметр «Без розріджених шарів» несумісний із плавним таймлапсом, який потребує підготовчої вежі на кожному шарі. Таймлапс перемкнено в традиційний режим." @@ -14063,6 +14194,7 @@ msgid "Open G-code file:" msgstr "Відкрити файл G-code:" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "вежа протирання"; align it once the term is settled. msgid "Wipe tower generation failed, possibly due to empty first layer." msgstr "Не вдалося створити вежу протирання, можливо, через порожній перший шар." @@ -14211,6 +14343,18 @@ msgstr "кілька перетинів із периметром, викори msgid "a perimeter is fully inside a modifier, the modifier was not applied to it (%1%)" msgstr "периметр повністю всередині модифікатора, модифікатор до нього не застосовано (%1%)" +# AI Translated +#. TRN: %1% is the modifier type "Seam Blocked" as in the menu, %2% the modifier name, %3% the object name. +#, boost-format +msgid "%1% modifier \"%2%\" of \"%3%\" covers an entire perimeter" +msgstr "Модифікатор «%2%» (%1%) обʼєкта «%3%» охоплює весь периметр" + +# AI Translated +#. TRN: %1% is the modifier type "Seam Blocked" as in the menu, %2% the modifier name, %3% the object name, %4% the number of modifiers. +#, boost-format +msgid "%1% modifier \"%2%\" of \"%3%\" (%4% in total) covers an entire perimeter" +msgstr "Модифікатор «%2%» (%1%) обʼєкта «%3%» (усього %4%) охоплює весь периметр" + # AI Translated #, boost-format msgid "modifier \"%1%\" of \"%2%\" had no effect on the seam (it might not reach the centerline of the printed perimeter)" @@ -14419,6 +14563,7 @@ msgid "%1% is too tall, and collisions will be caused." msgstr "%1% занадто високий, і можуть виникнути зіткнення." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "підготовча вежа"; align it once the term is settled. msgid "The relative position of the model and the prime tower does not meet the requirements of the \"No sparse layers\" feature. Please adjust their relative positions, lower the model height, or turn off \"No sparse layers\"." msgstr "Взаємне розташування моделі та підготовчої вежі не відповідає вимогам функції «Без розріджених шарів». Змініть їхнє взаємне розташування, зменште висоту моделі або вимкніть параметр «Без розріджених шарів»." @@ -14428,26 +14573,32 @@ msgid "%1% is too close to the clumping detection area. There may be collisions msgstr "%1% розташовано занадто близько до зони виявлення налипання, під час друку можливі зіткнення." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "підготовча вежа"; align it once the term is settled. msgid "Prime tower is too close to others, and collisions may be caused.\n" msgstr "Підготовча вежа розташована надто близько до інших обʼєктів, що може призвести до зіткнень.\n" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "підготовча вежа"; align it once the term is settled. msgid "Prime tower is too close to an exclusion area, and collisions will be caused.\n" msgstr "Підготовча вежа розташована надто близько до забороненої зони, що призведе до зіткнень.\n" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "підготовча вежа"; align it once the term is settled. msgid "Prime tower is too close to the clumping detection area, and collisions will be caused.\n" msgstr "Підготовча вежа розташована надто близько до зони виявлення налипання, що призведе до зіткнень.\n" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "підготовча вежа"; align it once the term is settled. msgid "Prime tower is too close to an exclusion area. There may be collisions when printing." msgstr "Підготовча вежа розташована надто близько до забороненої зони, під час друку можливі зіткнення." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "підготовча вежа"; align it once the term is settled. msgid "Prime tower is too close to the clumping detection area. There may be collisions when printing." msgstr "Підготовча вежа розташована надто близько до зони виявлення налипання, під час друку можливі зіткнення." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "підготовча вежа"; align it once the term is settled. msgid "Prime tower is partially outside the printable area, and it cannot be printed.\n" msgstr "Підготовча вежа частково виходить за межі області друку, тому її неможливо надрукувати.\n" @@ -14542,10 +14693,12 @@ msgid "The project contains multiple managed belt purge towers. Reload the plate msgstr "Проєкт містить кілька керованих веж очищення на стрічці. Перезавантажте пластину або вимкніть і знову увімкніть вежу очищення на стрічці, щоб створити її заново." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "підготовча вежа"; align it once the term is settled. msgid "Enabling both precise Z height and the prime tower may cause slicing errors." msgstr "Одночасне увімкнення точної висоти Z та підготовчої вежі може спричинити помилки нарізки." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "підготовча вежа"; align it once the term is settled. msgid "A prime tower is required for clumping detection; otherwise, there may be flaws on the model." msgstr "Для виявлення налипання потрібна підготовча вежа; інакше на моделі можуть зʼявитися дефекти." @@ -14575,6 +14728,7 @@ msgid "Variable layer height is not supported with Organic supports." msgstr "Змінна висота шару не підтримується з Органічними підтримками." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "вежа протирання"; align it once the term is settled. msgid "The wipe tower filament cannot be a mixed filament." msgstr "Філамент вежі протирання не може бути змішаним філаментом." @@ -14597,8 +14751,9 @@ msgid "A prime tower is not supported when adaptive layer height is on. It requi msgstr "Підготовча вежа не підтримується при включеній адаптивній висоті шару. Для цього потрібно, щоб усі обʼєкти мали однакову висоту шару." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "підготовча вежа"; align it once the term is settled. msgid "A prime tower requires any “support gap” to be a multiple of layer height." -msgstr "Підготовча вежа вимагає, щоб «опорний зазор» був кратним висоті шару" +msgstr "Підготовча вежа вимагає, щоб «опорний зазор» був кратним висоті шару." msgid "A prime tower requires that all objects have the same layer height." msgstr "Підготовча вежа вимагає, щоб усі обʼєкти мали однакову висоту шару" @@ -14607,10 +14762,12 @@ msgid "A prime tower requires that all objects are printed over the same number msgstr "Підготовча вежа вимагає, щоб усі обʼєкти друкувалися на однаковій кількості шарів підкладки" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "підготовча вежа"; align it once the term is settled. msgid "The prime tower is only supported for multiple objects if they are printed with the same support_top_z_distance." msgstr "Підготовча вежа підтримується для кількох обʼєктів, лише якщо вони друкуються з однаковим support_top_z_distance." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "підготовча вежа"; align it once the term is settled. msgid "A prime tower requires that all objects are sliced with the same layer height." msgstr "Підготовча вежа вимагає, щоб усі обʼєкти були нарізані з однаковою висотою шару." @@ -15253,13 +15410,13 @@ msgid "" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" -"If set to 0, the line width will match the Internal solid infill width." +"If set to 0, the line width will match the Internal solid infill width, or the nozzle diameter for thick bridges." msgstr "" "Ширина лінії моста. Якщо задано у %, вона обчислюється відносно діаметра сопла.\n" -"Рекомендується використовувати з вищою щільністю моста або вищим коефіцієнтом потоку моста.\n" +"Рекомендується використовувати з вищими значеннями «Щільність зовнішніх мостів» або «Коефіцієнт потоку мостів».\n" "\n" "Максимальне значення — 100% або діаметр сопла.\n" -"Якщо встановлено 0, ширина лінії відповідатиме ширині внутрішнього суцільного заповнення." +"Якщо встановлено 0, ширина лінії відповідатиме ширині внутрішнього суцільного заповнення, а для товстих мостів — діаметру сопла." msgid "Internal bridge flow ratio" msgstr "Коефіцієнт потоку внутрішніх мостів" @@ -15565,7 +15722,7 @@ msgid "" "3. If artifacts still appear, enable Extrusion Rate Smoothing (ERS) to further smooth the flow transitions.\n" "\n" "Note: When this option is enabled, overhang perimeters are treated like overhangs, meaning the overhang speed is applied even if the overhanging perimeter is part of a bridge.\n" -"For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 100% overhang speed will be applied." +"For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 75% overhang speed will be applied, limited by the bridge speed." msgstr "" "Увімкніть цю опцію, щоб уповільнювати друк у зонах, де периметри могли загнутися вгору.\n" "Наприклад, додаткове уповільнення застосовуватиметься під час друку нависань на гострих кутах, як-от ніс корпусу Benchy, зменшуючи загинання, що накопичується протягом кількох шарів.\n" @@ -15577,22 +15734,23 @@ msgstr "" "Рекомендації при увімкненні цієї опції:\n" "1. Зменште час згладжування Pressure Advance до 0.015 - 0.02, щоб екструдер швидко реагував на зміни швидкості.\n" "2. Збільште мінімальні швидкості друку, щоб обмежити величину уповільнення та зменшити різницю між швидкими й повільними ділянками.\n" -"3. Якщо артефакти все ще зʼявляються, увімкніть згладжування швидкості екструзії (ERS), щоб додатково згладити переходи потоку.\n" +"3. Якщо артефакти все ще зʼявляються, увімкніть «Вирівнювання швидкості екструзії» (ERS), щоб додатково згладити переходи потоку.\n" "\n" "Примітка: коли цю опцію увімкнено, периметри нависань обробляються як нависання, тобто швидкість нависання застосовується навіть тоді, коли нависаючий периметр є частиною моста.\n" -"Наприклад, коли периметри нависають на 100% і під ними немає стінки-опори, буде застосовано швидкість для 100% нависання." +"Наприклад, коли периметри нависають на 100% і під ними немає стінки-опори, буде застосовано швидкість нависання 75%, обмежену швидкістю моста." msgid "mm/s or %" msgstr "мм/с або %" +# AI Translated msgid "" "Speed of the externally visible bridge extrusions.\n" "\n" -"In addition, if Slow down for curled perimeters is disabled or Classic overhang mode is enabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." +"In addition, if Slow down for curled perimeters is disabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." msgstr "" "Швидкість екструзії мостів, які видно ззовні.\n" "\n" -"Крім того, якщо параметр 'Уповільнення для закручених периметрів' вимкнено або увімкнено 'Класичний режим нависань', ця швидкість буде використовуватися для друку стінок з нависанням, які підтримуються менш ніж на 13%, незалежно від того, чи є вони частиною мосту або звичайного нависання." +"Крім того, якщо параметр «Уповільнення для нависаючих периметрів» вимкнено, ця швидкість буде використовуватися для друку стінок з нависанням, які підтримуються менш ніж на 13%, незалежно від того, чи є вони частиною мосту або звичайного нависання." msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%." msgstr "Швидкість внутрішніх мостів. Якщо значення вказано у відсотках, воно буде розраховане на основі bridge_speed. Значення за замовчуванням: 150%." @@ -16160,8 +16318,9 @@ msgstr "Швидкість друку зовнішніх стінок детал msgid "Small perimeters" msgstr "Маленькі периметри" -msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above. Set to zero for auto." -msgstr "Це окреме налаштування впливає на швидкість периметрів, що мають радіус < = small_perimeter_threshold (зазвичай отворів). Якщо він виражений у відсотках(наприклад, 80%), то він розраховуватиметься на зазначеній вище швидкостіЗовнішній периметр. Встановіть нульове значення для автоматичного налаштування." +# AI Translated +msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above." +msgstr "Це окреме налаштування впливає на швидкість периметрів, що мають радіус <= small_perimeter_threshold (зазвичай отворів). Якщо задано у відсотках (наприклад, 80%), воно обчислюється відносно наведеного вище налаштування швидкості зовнішньої стінки." msgid "Small perimeters threshold" msgstr "Поріг малих периметрів" @@ -16174,8 +16333,8 @@ msgid "Small support perimeters" msgstr "Малі периметри підтримок" # AI Translated -msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above. Set to zero for auto." -msgstr "Те саме, що й «Малі периметри», але для підтримок. Це окреме налаштування впливає на швидкість підтримок для областей <= `small_support_perimeter_threshold`. Якщо задано у відсотках (наприклад, 80%), воно обчислюється відносно наведеного вище налаштування швидкості підтримок або інтерфейсу підтримок. Встановіть нуль для автоматичного значення." +msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above." +msgstr "Те саме, що й «Маленькі периметри», але для підтримок. Це окреме налаштування впливає на швидкість підтримок для областей <= `small_support_perimeter_threshold`. Якщо задано у відсотках (наприклад, 80%), воно обчислюється відносно наведеного вище налаштування швидкості підтримок або інтерфейсу підтримок." # AI Translated msgid "Small support perimeters threshold" @@ -16188,22 +16347,23 @@ msgstr "Задає поріг довжини малого периметра п msgid "Walls printing order" msgstr "Послідовність друку стінок" +# AI Translated msgid "" "Print sequence of the internal (inner) and external (outer) walls.\n" "\n" "Use Inner/Outer for best overhangs. This is because the overhanging walls can adhere to a neighbouring perimeter while printing. However, this option results in slightly reduced surface quality as the external perimeter is deformed by being squashed to the internal perimeter.\n" "\n" -"Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended against the Outer/Inner option in most cases.\n" +"Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended over the Outer/Inner option in most cases.\n" "\n" "Use Outer/Inner for the same external wall quality and dimensional accuracy benefits of Inner/Outer/Inner option. However, the Z seams will appear less consistent as the first extrusion of a new layer starts on a visible surface." msgstr "" -"Послідовність друку внутрішніх (inner) та зовнішніх (outer) стін.\n" +"Послідовність друку внутрішніх і зовнішніх стінок.\n" "\n" -"Використовуйте внутрішню/зовнішню для найкращих виступів. Це повʼязано з тим, що стіни, які виступають, можуть прилипати до сусіднього периметра під час друку. Однак цей параметр призводить до деякого зниження якості поверхні, оскільки зовнішній периметр деформується, притискаючись до внутрішнього.\n" +"Використовуйте «Внутрішня/Зовнішня» для найкращих нависань. Це тому, що нависаючі стінки під час друку можуть зчіплюватися із сусіднім периметром. Однак цей варіант трохи погіршує якість поверхні, оскільки зовнішній периметр деформується, будучи притиснутим до внутрішнього.\n" "\n" -"Використовуйте Внутрішній/Зовнішній/Внутрішній для найкращої якості зовнішньої поверхні та точності розмірів, оскільки зовнішня стіна друкується без порушень від внутрішнього периметра. Однак, продуктивність на виході зменшиться, оскільки немає внутрішнього периметра, до якого можна було б притискати зовнішню стіну. Для ефективної роботи цієї опції потрібно щонайменше 3 стіни, оскільки спочатку друкуються внутрішні стіни, починаючи з 3-го периметра, потім зовнішній периметр і, нарешті, перший внутрішній периметр. У більшості випадків цей параметр рекомендується використовувати замість параметра Зовнішній/Внутрішній.\n" +"Використовуйте «Внутрішня/Зовнішня/Внутрішня» для найкращої обробки зовнішньої поверхні та точності розмірів, оскільки зовнішня стінка друкується без впливу внутрішнього периметра. Однак якість нависань погіршиться, бо немає внутрішнього периметра, до якого можна друкувати зовнішню стінку. Для ефективності цей варіант потребує щонайменше 3 стінок: спочатку друкуються внутрішні стінки, починаючи з 3-го периметра, потім зовнішній периметр і, нарешті, перший внутрішній периметр. У більшості випадків цей варіант рекомендується замість «Зовнішня/Внутрішня».\n" "\n" -"Використовуйте опцію Зовнішня/Внутрішня для отримання такої ж якості зовнішньої стіни і точності розмірів, як і в опції Внутрішня/Зовнішня/Внутрішня. Однак шви по Z будуть виглядати менш рівномірними, оскільки перша екструзія нового шару починається на видимій поверхні " +"Використовуйте «Зовнішня/Внутрішня», щоб отримати таку саму якість зовнішньої стінки та точність розмірів, як і у варіанта «Внутрішня/Зовнішня/Внутрішня». Однак Z-шви виглядатимуть менш однорідно, оскільки перше видавлювання нового шару починається на видимій поверхні." msgid "Inner/Outer" msgstr "Внутрішня/Зовнішня" @@ -16676,6 +16836,7 @@ msgid "After a tool change, the exact position of the newly loaded filament insi msgstr "Після заміни інструменту точне положення новонавантаженої нитки напруженнявсередині сопла може бути невідомо, і тиск нитки розжарення, ймовірно, ще неє стабільним. Перед продуванням друкувальної головки в наповнювач або обʼєкт Orca Slicer, що витрачається, завжди буде дозувати цю кількість матеріалу в вежу для протирання, щоб забезпечити надійне послідовне заповненняабо видавлювання обʼєкта, що витрачається." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "вежа протирання"; align it once the term is settled. msgid "Wipe tower cooling" msgstr "Охолодження вежі протирання" @@ -16688,6 +16849,7 @@ msgid "Interface layer pre-extrusion distance" msgstr "Відстань попередньої екструзії інтерфейсного шару" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "підготовча вежа"; align it once the term is settled. msgid "Pre-extrusion distance for prime tower interface layer (where different materials meet)." msgstr "Відстань попередньої екструзії для інтерфейсного шару підготовчої вежі (де зустрічаються різні матеріали)." @@ -16696,6 +16858,7 @@ msgid "Interface layer pre-extrusion length" msgstr "Довжина попередньої екструзії інтерфейсного шару" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "підготовча вежа"; align it once the term is settled. msgid "Pre-extrusion length for prime tower interface layer (where different materials meet)." msgstr "Довжина попередньої екструзії для інтерфейсного шару підготовчої вежі (де зустрічаються різні матеріали)." @@ -16704,6 +16867,7 @@ msgid "Tower ironing area" msgstr "Область розгладжування вежі" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "підготовча вежа"; align it once the term is settled. msgid "Ironing area for prime tower interface layer (where different materials meet)." msgstr "Область розгладжування для інтерфейсного шару підготовчої вежі (де зустрічаються різні матеріали)." @@ -16715,6 +16879,7 @@ msgid "Interface layer purge length" msgstr "Довжина очищення інтерфейсного шару" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "підготовча вежа"; align it once the term is settled. msgid "Purge length for prime tower interface layer (where different materials meet)." msgstr "Довжина очищення для інтерфейсного шару підготовчої вежі (де зустрічаються різні матеріали)." @@ -16723,6 +16888,7 @@ msgid "Interface layer print temperature" msgstr "Температура друку інтерфейсного шару" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "підготовча вежа"; align it once the term is settled. msgid "Print temperature for prime tower interface layer (where different materials meet). If set to -1, use max recommended nozzle temperature." msgstr "Температура друку для інтерфейсного шару підготовчої вежі (де зустрічаються різні матеріали). Якщо встановлено -1, використовується максимальна рекомендована температура сопла." @@ -17192,14 +17358,16 @@ msgstr "Висота першого шару" msgid "Height of the first layer. Making the first layer height thicker can improve build plate adhesion." msgstr "Висота першого шару. Невелике збільшення висоти першого шару може покращити прилипання до робочої пластини" -msgid "This is the speed for the first layer except for solid infill sections." -msgstr "Швидкість першого шару, за винятком зони суцільного заповнення" +# AI Translated +msgid "This is the speed for the walls and brim of the first layer." +msgstr "Швидкість периметрів і кайми першого шару." msgid "First layer infill" msgstr "Заповнення першого шару" -msgid "This is the speed for solid infill parts of the first layer." -msgstr "Швидкість зони суцільного заповнення першого шару" +# AI Translated +msgid "This is the speed for the first layer except for walls and brim, such as infill, gap fill and support." +msgstr "Швидкість першого шару, за винятком периметрів і кайми, як-от заповнення, заповнення прогалин і підтримки." msgid "First layer travel speed" msgstr "Швидкість переміщення першого шару" @@ -17952,16 +18120,18 @@ msgstr "Ширина лінії внутрішнього розрідженог msgid "Infill/wall overlap" msgstr "Накладання заповнення/стінки" +# AI Translated #, no-c-format, no-boost-format -msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to line width of sparse infill. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." -msgstr "Область заповнення дещо збільшена, щоб перекривати стіну для кращого зчеплення. Значення у відсотках відносно ширини лінії розрідженого заповнення. Встановіть це значення на рівні ~10-15%, щоб мінімізувати можливість надмірного видавлювання та накопичення матеріалу, що призводить до шорсткості верхньої поверхні." +msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to the inner wall line width. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." +msgstr "Область заповнення дещо збільшена, щоб перекривати стіну для кращого зчеплення. Значення у відсотках відносно ширини лінії внутрішньої стінки. Встановіть це значення на рівні ~10-15%, щоб мінімізувати можливість надмірного видавлювання та накопичення матеріалу, що призводить до шорсткості верхньої поверхні." msgid "Top/Bottom solid infill/wall overlap" msgstr "Накладання суцільного заповнення на стінки зверху та знизу" +# AI Translated #, no-c-format, no-boost-format -msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to line width of sparse infill." -msgstr "Площа верхнього суцільного заповнення злегка збільшується, щоб накладатися на стінку для кращого зчеплення та зменшення прогалин у місцях прилягання верхнього заповнення до стінок. Значення 25-30% є хорошим початком для мінімізації таких прогалин. Значення у відсотках відносно ширини лінії часткового заповнення" +msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to the inner wall line width." +msgstr "Площа верхнього суцільного заповнення злегка збільшується, щоб накладатися на стінку для кращого зчеплення та зменшення прогалин у місцях прилягання верхнього заповнення до стінок. Значення 25-30% є хорошим початком для мінімізації таких прогалин. Значення у відсотках відносно ширини лінії внутрішньої стінки." msgid "This is the speed for internal sparse infill." msgstr "Швидкість внутрішнього часткового заповнення" @@ -17987,11 +18157,9 @@ msgstr "Максимальна ширина сегментованої обла msgid "Interlocking depth of a segmented region" msgstr "Глибина взаємного взаємодії сегментованої області" -msgid "Interlocking depth of a segmented region. It will be ignored if \"mmu_segmented_region_max_width\" is zero or if \"mmu_segmented_region_interlocking_depth\" is bigger than \"mmu_segmented_region_max_width\". Zero disables this feature." -msgstr "" -"Глибина зчеплення сегментованої області. Буде ігноруватися, якщо \"mmu_segmented_region_max_width\" дорівнює нулю або якщо \"mmu_segmented_region_interlocking_depth\" більший за \"mmu_segmented_region_max_width\".\n" -"\n" -"Нульове значення вимикає цю функцію." +# AI Translated +msgid "Interlocking depth of a segmented region. On every other layer, the segmented region is limited to this depth. It will be ignored if \"interlocking_beam\" is enabled. Zero disables this feature." +msgstr "Глибина зчеплення сегментованої області. На кожному другому шарі сегментована область обмежується цією глибиною. Ігнорується, якщо ввімкнено \"interlocking_beam\". Нульове значення вимикає цю функцію." msgid "Use beam interlocking" msgstr "Використовувати зчеплення балками" @@ -18112,11 +18280,11 @@ msgstr "Кут мінімізації висоти стінки" # AI Translated msgid "" "Reduce the height of top-surface perimeters to match the model edge height.\n" -"Affects perimeters with a slope less than this angle (degrees).\n" +"Affects perimeters with a slope greater than this angle (degrees).\n" "A reasonable value is 35. Set to 0 to disable." msgstr "" "Зменшує висоту периметрів верхньої поверхні відповідно до висоти краю моделі.\n" -"Впливає на периметри з нахилом, меншим за цей кут (у градусах).\n" +"Впливає на периметри з нахилом, більшим за цей кут (у градусах).\n" "Розумне значення — 35. Встановіть 0, щоб вимкнути." # AI Translated @@ -19122,7 +19290,8 @@ msgstr "З’єднання з шарфом для внутрішніх стін msgid "Use scarf joint for inner walls as well." msgstr "Використовувати з’єднання з шарфом також для внутрішніх стін." -msgid "Role base wipe speed" +# AI Translated +msgid "Role based wipe speed" msgstr "Швидкість протирання залежно від типу" msgid "The wipe speed is determined by the speed of the current extrusion role. e.g. if a wipe action is executed immediately following an outer wall extrusion, the speed of the outer wall extrusion will be utilized for the wipe action." @@ -19214,16 +19383,15 @@ msgstr "Обмежує петлі спідниці/захисного екран msgid "Draft shield" msgstr "Захисний екран" +# AI Translated msgid "" "A draft shield is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft. It is usually needed only with open frame printers, i.e. without an enclosure.\n" "\n" -"Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used.\n" -"Note: With the draft shield active, the skirt will be printed at skirt distance from the object. Therefore, if brims are active it may intersect with them. To avoid this, increase the skirt distance value.\n" +"Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used." msgstr "" -"Захисний екран буде корисним для захисту друку ABS або ASA від викривлення та відлипання від столу в наслідок протягу повітря. Зазвичай він потрібен для відкритих принтерів, які не мають закритої камери.\n" +"Захисний екран буде корисним для захисту друку ABS або ASA від викривлення та відлипання від столу внаслідок протягу повітря. Зазвичай він потрібен для відкритих принтерів, які не мають закритої камери.\n" "\n" -"Увімкнено = Спідниця буде тої ж висоти що і найвищий обʼєкт друку. Інакше буде застосовано параметр \"Висота спідниці\"\n" -"До уваги: При увімкненому захисному екрані, спідниця буде надрукована на відстані від обʼєкту. Тому, якщо увімкнена кайма, вони можуть перетинатися. Щоб запобігти цьому, збільшіть значення відстані спідниці.\n" +"Увімкнено = спідниця буде такої ж висоти, як і найвищий обʼєкт друку. Інакше буде застосовано параметр «Висота спідниці»." msgid "Enabled" msgstr "Увімкнуто" @@ -19336,6 +19504,7 @@ msgid "Sets the finishing flow ratio while ending the spiral. Normally the spira msgstr "Задає кінцевий коефіцієнт потоку при завершенні спіралі. Зазвичай спіральний перехід плавно знижує коефіцієнт потоку від 100% до 0% під час проходу останнього контуру, що може призвести до недостатньої подачі філаменту у кінці спіралі." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "підготовча вежа"; align it once the term is settled. msgid "If smooth or traditional mode is selected, a timelapse video will be generated for each print. After each layer is printed, a snapshot is taken with the chamber camera. All of these snapshots are composed into a timelapse video when printing completes. If smooth mode is selected, the toolhead will move to the excess chute after each layer is printed and then take a snapshot. Since the melt filament may leak from the nozzle during the process of taking a snapshot, a prime tower is required for smooth mode to wipe the nozzle." msgstr "Якщо вибрано плавний або традиційний режим, для кожного друку буде згенеровано таймлапс-відео. Після друку кожного шару камерою термокамери робиться знімок. Усі ці знімки поєднуються в таймлапс-відео після завершення друку. Якщо вибрано плавний режим, після друку кожного шару головка переміщається до лотка для відходів і лише потім робиться знімок. Оскільки під час зйомки з сопла може витікати розплавлений філамент, для плавного режиму потрібна підготовча вежа для очищення сопла." @@ -19527,10 +19696,12 @@ msgid "Enable this option to omit the custom Change filament G-code only at the msgstr "Увімкніть цей параметр, щоб пропустити користувацький G-code зміни нитки лише на початку друку. Команда зміни інструмента (наприклад, T0) буде пропущена протягом усього друку. Це корисно для ручного друку на декількох матеріалах, де ми використовуємо M600/PAUSE для запуску ручної заміни нитки." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "вежа протирання"; align it once the term is settled. msgid "Wipe tower type" msgstr "Тип вежі протирання" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "вежа протирання"; align it once the term is settled. msgid "Choose the wipe tower implementation for multi-material prints. Type 1 is recommended for Bambu and Qidi printers with a filament cutter. Type 2 offers better compatibility with multi-tool and MMU printers and provide overall better compatibility." msgstr "Виберіть реалізацію вежі протирання для багатоматеріального друку. Тип 1 рекомендовано для принтерів Bambu та Qidi з відрізним механізмом філаменту. Тип 2 забезпечує кращу сумісність з багатоінструментальними та MMU-принтерами і загалом кращу сумісність." @@ -19550,18 +19721,22 @@ msgid "Enable filament ramming" msgstr "Увімкнути накат нитки" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "вежа протирання"; align it once the term is settled. msgid "Tool change on wipe tower" msgstr "Зміна інструмента на вежі протирання" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "вежа протирання"; align it once the term is settled. msgid "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead." msgstr "Примусово переміщати головку до вежі протирання перед видачею команди зміни інструмента (Tx). Стосується лише багатоекструдерних (багатоінструментальних) принтерів з вежею протирання типу 2. Типово Orca пропускає це переміщення на багатоінструментальних машинах, оскільки заміну головки виконує прошивка, через що команда Tx може бути видана над надрукованою деталлю. Увімкніть цю опцію, якщо хочете, щоб зміна інструмента завжди відбувалася над вежею протирання." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "вежа протирання"; align it once the term is settled. msgid "Wait for temperature on wipe tower" msgstr "Очікувати температуру на вежі протирання" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "вежа протирання"; align it once the term is settled. msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command." msgstr "Бере новий інструмент, не чекаючи, доки він досягне температури друку, переміщується до вежі протирання й чекає на температуру там, безпосередньо перед промивкою. Матеріал, що витікає під час нагрівання, потрапляє на вежу, а не на модель, а переміщення збігається з нагріванням. Актуально лише для принтерів із кількома екструдерами (кількома головками), які використовують вежу протирання типу 2. Прошивка або макрос зміни інструменту не повинні самі чекати на температуру. Коли вимкнено, команда очікування температури видається одразу після команди зміни інструменту." @@ -19569,6 +19744,7 @@ msgid "No sparse layers (beta)" msgstr "Без розріджених шарів (бета)" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "вежа протирання"; align it once the term is settled. msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower, so the tower ends up below the model and the toolhead has to reach down to it. Layouts where that would collide with an already printed object are rejected. Has no effect with smooth timelapse or clumping detection, which need a tower on every layer." msgstr "Якщо увімкнено, вежу протирання не буде надруковано на шарах без змін інструменту. На шарах зі зміною інструменту екструдер опуститься вниз, щоб надрукувати вежу протирання, тож вежа опиняється нижче моделі, і головці доводиться тягнутися до неї вниз. Компонування, за яких це призвело б до зіткнення з уже надрукованим обʼєктом, відхиляються. Не діє за плавного таймлапсу чи виявлення налипань на соплі, яким потрібна вежа на кожному шарі." @@ -19577,6 +19753,7 @@ msgid "Combine sparse layers" msgstr "Обʼєднувати розріджені шари" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "підготовча вежа"; align it once the term is settled. msgid "" "If enabled, consecutive layers on which the prime tower has no filament change are printed as a single thicker tower layer instead of one thin layer each, the same way infill combination merges sparse infill. The merged layer is printed at the top of the run, at the height of everything it covers.\n" "\n" @@ -20334,6 +20511,7 @@ msgid "Enable mixed color sublayer splitting. When enabled, layers containing mi msgstr "Вмикає розбиття на підшари змішаного кольору. Коли увімкнено, шари, що містять філаменти змішаного кольору, розбиваються на підшари для отримання ефекту змішування кольорів." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "вежа протирання"; align it once the term is settled. msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects." msgstr "Вежа протирання може використовуватися для очищення залишків на соплі та стабілізації тиску в камері всередині сопла, щоб уникнути дефектів зовнішнього вигляду під час друку обʼєктів." @@ -20386,6 +20564,7 @@ msgid "Wipe tower rotation angle with respect to X axis." msgstr "Кут повороту вежі протирання за віссю Х." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "підготовча вежа"; align it once the term is settled. msgid "Brim width of prime tower, negative number means auto calculated width based on the height of prime tower." msgstr "Ширина кайми підготовчої вежі; відʼємне число означає автоматично обчислену ширину на основі висоти підготовчої вежі." @@ -20398,41 +20577,44 @@ msgstr "Кут на вершині конуса, який використову msgid "Maximum wipe tower print speed" msgstr "Максимальна швидкість друку вежі протирання" +# AI Translated +# Needs human review: Glossary cell for Prime tower / Wipe tower is unsettled (two renderings); used 'вежа протирання' as in the existing labels (Wipe tower, Wipe tower parameters). Check it against the final term. msgid "" "The maximum print speed when purging in the wipe tower and printing the wipe tower sparse layers. When purging, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" "\n" -"When printing the sparse layers, if the internal perimeter speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +"When printing the sparse layers, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" "\n" "Increasing this speed may affect the tower's stability as well as increase the force with which the nozzle collides with any blobs that may have formed on the wipe tower.\n" "\n" "Before increasing this parameter beyond the default of 90 mm/s, make sure your printer can reliably bridge at the increased speeds and that ooze when tool changing is well controlled.\n" "\n" -"For the wipe tower external perimeters the internal perimeter speed is used regardless of this setting." +"For the wipe tower external perimeters the internal perimeter speed is used, also limited by this setting." msgstr "" -"Максимальна швидкість друку під час продування у башті витирання та друку розріджених шарів у башті витирання. Якщо під час продування швидкість розрідженого заповнення або розрахована швидкість на основі максимальної обʼємної швидкості нитки нижча, замість неї використовуватиметься найнижча швидкість.\n" +"Максимальна швидкість друку під час очищення на вежі протирання та друку розріджених шарів вежі протирання. Якщо під час очищення швидкість часткового заповнення або розрахована швидкість на основі максимальної обʼємної швидкості філаменту нижча, замість неї використовуватиметься найнижча швидкість.\n" "\n" -"Під час друку розріджених шарів, якщо швидкість по внутрішньому периметру або розрахована швидкість на основі максимальної обʼємної швидкості нитки нижча, буде використовуватися найнижча швидкість.\n" +"Під час друку розріджених шарів, якщо швидкість часткового заповнення або розрахована швидкість на основі максимальної обʼємної швидкості філаменту нижча, буде використовуватися найнижча швидкість.\n" "\n" -"Збільшення цієї швидкості може вплинути на стабільність башти, а також збільшити силу, з якою сопло стикається з будь-якими згустками, що можуть утворитися на башті витирання.\n" +"Збільшення цієї швидкості може вплинути на стабільність вежі, а також збільшити силу, з якою сопло стикається з будь-якими згустками, що могли утворитися на вежі протирання.\n" "\n" -"Перш ніж збільшувати цей параметр понад значення за замовчуванням 90 мм/с, переконайтеся, що принтер може надійно працювати на підвищених швидкостях і що витікання під час заміни інструменту добре контролюється.\n" +"Перш ніж збільшувати цей параметр понад значення за замовчуванням 90 мм/с, переконайтеся, що принтер може надійно друкувати мости на підвищених швидкостях і що просочування під час заміни інструмента добре контролюється.\n" "\n" -"Для зовнішніх периметрів вежі витирання використовується швидкість внутрішнього периметра незалежно від цього параметра." +"Для зовнішніх периметрів вежі протирання використовується швидкість внутрішнього периметра, яка також обмежується цим параметром." msgid "Wall type" msgstr "Тип стіни" # AI Translated +# Needs human review: Glossary cell for Prime tower / Wipe tower is unsettled (two renderings); used 'вежа протирання' as in the existing labels (Wipe tower, Wipe tower parameters). Check it against the final term. msgid "" "Wipe tower outer wall type.\n" -"1. Rectangle: The default wall type, a rectangle with fixed width and height.\n" +"1. Rectangle: A rectangle with fixed width and height.\n" "2. Cone: A cone with a fillet at the bottom to help stabilize the wipe tower.\n" -"3. Rib: Adds four ribs to the tower wall for enhanced stability." +"3. Rib: The default wall type, which adds four ribs to the tower wall for enhanced stability." msgstr "" "Тип зовнішньої стінки вежі протирання.\n" -"1. Прямокутник: типовий тип стінки, прямокутник з фіксованою шириною та висотою.\n" +"1. Прямокутник: прямокутник з фіксованою шириною та висотою.\n" "2. Конус: конус із заокругленням унизу, що допомагає стабілізувати вежу протирання.\n" -"3. Ребро: додає до стінки вежі чотири ребра для більшої стійкості." +"3. Ребро: типовий тип стінки, що додає до стінки вежі чотири ребра для більшої стійкості." msgid "Rectangle" msgstr "Прямокутник" @@ -20451,6 +20633,7 @@ msgid "Rib width" msgstr "Ширина ребра" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "підготовча вежа"; align it once the term is settled. msgid "Rib width is always less than half the prime tower side length." msgstr "Ширина ребра завжди менша за половину довжини сторони підготовчої вежі." @@ -20459,6 +20642,7 @@ msgid "Fillet wall" msgstr "Заокруглена стінка" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "підготовча вежа"; align it once the term is settled. msgid "The wall of prime tower will fillet." msgstr "Стінка підготовчої вежі матиме заокруглення." @@ -20475,6 +20659,7 @@ msgid "Skip points" msgstr "Пропустити точки" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "підготовча вежа"; align it once the term is settled. msgid "The wall of prime tower will skip the start points of wipe path." msgstr "Стінка підготовчої вежі пропускатиме початкові точки шляху протирання." @@ -20482,14 +20667,17 @@ msgid "Enable tower interface features" msgstr "Дозволити можливості інтерфейсу вежі" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "підготовча вежа"; align it once the term is settled. msgid "Enable optimized prime tower interface behavior when different materials meet." msgstr "Увімкнути оптимізовану поведінку інтерфейсу підготовчої вежі, коли зустрічаються різні матеріали." # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "підготовча вежа"; align it once the term is settled. msgid "Cool down from interface boost during prime tower" msgstr "Охолодження після підвищення для інтерфейсу під час підготовчої вежі" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "підготовча вежа"; align it once the term is settled. msgid "When interface-layer temperature boost is active, set the nozzle back to print temperature at the start of the prime tower so it cools down during the tower." msgstr "Коли активне підвищення температури для інтерфейсного шару, повернути соплу температуру друку на початку підготовчої вежі, щоб воно охолоджувалося під час друку вежі." @@ -20533,8 +20721,10 @@ msgstr "Відстань між лініями очищення на вежі п msgid "Extra flow for purging" msgstr "Додатковий потік для очищення" -msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker or narrower than they normally would be. The spacing is adjusted automatically." -msgstr "Додатковий потік для ліній очистки на вежі протирання. Це робить лінії очистки товщими або вужчими, ніж зазвичай. Відстань між лініями налаштовується автоматично." +# AI Translated +# Needs human review: Glossary cell for Prime tower / Wipe tower is unsettled (two renderings); used 'вежа протирання' as in the existing labels (Wipe tower, Wipe tower parameters). Check it against the final term. +msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker than they normally would be. The spacing is adjusted automatically." +msgstr "Додатковий потік для ліній очищення на вежі протирання. Це робить лінії очищення товщими, ніж зазвичай. Відстань між лініями налаштовується автоматично." msgid "Idle temperature" msgstr "Температура очікування" @@ -20656,11 +20846,15 @@ msgstr "Мінімальна товщина тонких елементів. Е msgid "Minimum wall length" msgstr "Мінімальна довжина стінок" +# AI Translated msgid "" -"Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. Higher values remove more and longer walls.\n" +"Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. The value is a multiple of the wall width. Higher values remove more and longer walls.\n" "\n" -"NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the Advanced settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." -msgstr "Налаштуйте це значення, щоб запобігти друкуванню коротких незакритих стін, що може збільшити час друку. Вищі значення видаляють більше і довші стіни." +"NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the 'Walls and surfaces' settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." +msgstr "" +"Налаштуйте це значення, щоб запобігти друкуванню коротких незакритих стін, що може збільшити час друку. Значення задається як множник ширини стінки. Вищі значення видаляють більше і довші стіни.\n" +"\n" +"ПРИМІТКА: нижні та верхні поверхні не зазнають впливу цього значення, щоб уникнути видимих прогалин зовні моделі. Налаштуйте «Поріг в одну стіну» в налаштуваннях «Стінки та поверхні» нижче, щоб змінити чутливість визначення верхньої поверхні. «Поріг в одну стіну» видимий лише тоді, коли це налаштування вище за типове значення 0.5 або коли ввімкнено «Тільки одна стінка на верхніх поверхнях»." # AI Translated msgid "Maximum wall resolution" @@ -21334,6 +21528,7 @@ msgid "Total wipe tower cost" msgstr "Загальна вартість 'Вежі Очищення'" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "вежа протирання"; align it once the term is settled. msgid "Total cost of the material wasted on the wipe tower. Calculated from filament_cost value in Filament Settings." msgstr "Загальна вартість матеріалу, витраченого на вежу протирання. Обчислюється зі значення filament_cost у налаштуваннях філаменту." @@ -21467,6 +21662,7 @@ msgid "Size of the print bed bounding box" msgstr "Розмір обмежувальної рамки для друку" # AI Translated +# Needs human review: Unsettled glossary term (⚠) "Prime tower / Wipe tower": this entry uses "вежа протирання"; align it once the term is settled. msgid "First layer center without wipe tower" msgstr "Центр першого шару без вежі протирання" @@ -24671,9 +24867,6 @@ msgstr "Дозволити розумне призначення філамен msgid "File Saving" msgstr "Збереження файлу" -msgid "Don't remind me again" -msgstr "Не нагадувати мені більше" - # AI Translated msgid "No further pop-up will appear. You can reopen it in 'Preferences'" msgstr "Більше не зʼявлятиметься спливне вікно. Ви можете знову відкрити його в «Параметрах»" @@ -35343,6 +35536,172 @@ msgstr "" "Уникнення деформації\n" "Чи знаєте ви, що при друку матеріалами, схильними до деформації, такими як ABS, відповідне підвищення температури столу може зменшити ймовірність деформації?" +# AI Translated +#~ msgid "" +#~ "Line width of the Bridge. If expressed as a %, it will be computed over the nozzle diameter.\n" +#~ "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" +#~ "\n" +#~ "The maximum value is 100% or the nozzle diameter.\n" +#~ "If set to 0, the line width will match the Internal solid infill width." +#~ msgstr "" +#~ "Ширина лінії моста. Якщо задано у %, вона обчислюється відносно діаметра сопла.\n" +#~ "Рекомендується використовувати з вищою щільністю моста або вищим коефіцієнтом потоку моста.\n" +#~ "\n" +#~ "Максимальне значення — 100% або діаметр сопла.\n" +#~ "Якщо встановлено 0, ширина лінії відповідатиме ширині внутрішнього суцільного заповнення." + +# AI Translated +#, no-c-format, no-boost-format +#~ msgid "" +#~ "Enable this option to slow down printing in areas where perimeters may have curled upwards.\n" +#~ "For example, additional slowdown will be applied when printing overhangs on sharp corners like the front of the Benchy hull, reducing curling which compounds over multiple layers.\n" +#~ "\n" +#~ "It is generally recommended to have this option switched on unless your printer cooling is powerful enough or the print speed is slow enough that perimeter curling does not happen. \n" +#~ "If printing with a high external perimeter speed, this parameter may introduce wall artifacts when slowing down, due to the potentially large variance in print speeds causing the extruder to be unable to keep up with the requested flow change.\n" +#~ "Root cause of these artifacts is most likely PA tuning being slightly off, especially when combined with a high PA smooth time.\n" +#~ "\n" +#~ "Recommendations when enabling this option:\n" +#~ "1. Reduce Pressure Advance smooth time to 0.015 - 0.02 so the extruder reacts quickly to the speed changes.\n" +#~ "2. Increase the minimum print speeds to limit the magnitude of the slowdown and reduce the variance between fast and slow segments.\n" +#~ "3. If artifacts still appear, enable Extrusion Rate Smoothing (ERS) to further smooth the flow transitions.\n" +#~ "\n" +#~ "Note: When this option is enabled, overhang perimeters are treated like overhangs, meaning the overhang speed is applied even if the overhanging perimeter is part of a bridge.\n" +#~ "For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 100% overhang speed will be applied." +#~ msgstr "" +#~ "Увімкніть цю опцію, щоб уповільнювати друк у зонах, де периметри могли загнутися вгору.\n" +#~ "Наприклад, додаткове уповільнення застосовуватиметься під час друку нависань на гострих кутах, як-от ніс корпусу Benchy, зменшуючи загинання, що накопичується протягом кількох шарів.\n" +#~ "\n" +#~ "Загалом рекомендується тримати цю опцію увімкненою, якщо тільки охолодження вашого принтера не є достатньо потужним або швидкість друку достатньо низькою, щоб загинання периметрів не виникало. \n" +#~ "Під час друку з високою швидкістю зовнішнього периметра цей параметр може спричинити артефакти на стінках під час уповільнення через потенційно велику різницю швидкостей друку, коли екструдер не встигає за потрібною зміною потоку.\n" +#~ "Корінна причина цих артефактів — найімовірніше, дещо неточне налаштування PA, особливо в поєднанні з великим часом згладжування PA.\n" +#~ "\n" +#~ "Рекомендації при увімкненні цієї опції:\n" +#~ "1. Зменште час згладжування Pressure Advance до 0.015 - 0.02, щоб екструдер швидко реагував на зміни швидкості.\n" +#~ "2. Збільште мінімальні швидкості друку, щоб обмежити величину уповільнення та зменшити різницю між швидкими й повільними ділянками.\n" +#~ "3. Якщо артефакти все ще зʼявляються, увімкніть згладжування швидкості екструзії (ERS), щоб додатково згладити переходи потоку.\n" +#~ "\n" +#~ "Примітка: коли цю опцію увімкнено, периметри нависань обробляються як нависання, тобто швидкість нависання застосовується навіть тоді, коли нависаючий периметр є частиною моста.\n" +#~ "Наприклад, коли периметри нависають на 100% і під ними немає стінки-опори, буде застосовано швидкість для 100% нависання." + +#~ msgid "" +#~ "Speed of the externally visible bridge extrusions.\n" +#~ "\n" +#~ "In addition, if Slow down for curled perimeters is disabled or Classic overhang mode is enabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." +#~ msgstr "" +#~ "Швидкість екструзії мостів, які видно ззовні.\n" +#~ "\n" +#~ "Крім того, якщо параметр 'Уповільнення для закручених периметрів' вимкнено або увімкнено 'Класичний режим нависань', ця швидкість буде використовуватися для друку стінок з нависанням, які підтримуються менш ніж на 13%, незалежно від того, чи є вони частиною мосту або звичайного нависання." + +#~ msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above. Set to zero for auto." +#~ msgstr "Це окреме налаштування впливає на швидкість периметрів, що мають радіус < = small_perimeter_threshold (зазвичай отворів). Якщо він виражений у відсотках(наприклад, 80%), то він розраховуватиметься на зазначеній вище швидкостіЗовнішній периметр. Встановіть нульове значення для автоматичного налаштування." + +# AI Translated +#~ msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above. Set to zero for auto." +#~ msgstr "Те саме, що й «Малі периметри», але для підтримок. Це окреме налаштування впливає на швидкість підтримок для областей <= `small_support_perimeter_threshold`. Якщо задано у відсотках (наприклад, 80%), воно обчислюється відносно наведеного вище налаштування швидкості підтримок або інтерфейсу підтримок. Встановіть нуль для автоматичного значення." + +#~ msgid "" +#~ "Print sequence of the internal (inner) and external (outer) walls.\n" +#~ "\n" +#~ "Use Inner/Outer for best overhangs. This is because the overhanging walls can adhere to a neighbouring perimeter while printing. However, this option results in slightly reduced surface quality as the external perimeter is deformed by being squashed to the internal perimeter.\n" +#~ "\n" +#~ "Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended against the Outer/Inner option in most cases.\n" +#~ "\n" +#~ "Use Outer/Inner for the same external wall quality and dimensional accuracy benefits of Inner/Outer/Inner option. However, the Z seams will appear less consistent as the first extrusion of a new layer starts on a visible surface." +#~ msgstr "" +#~ "Послідовність друку внутрішніх (inner) та зовнішніх (outer) стін.\n" +#~ "\n" +#~ "Використовуйте внутрішню/зовнішню для найкращих виступів. Це повʼязано з тим, що стіни, які виступають, можуть прилипати до сусіднього периметра під час друку. Однак цей параметр призводить до деякого зниження якості поверхні, оскільки зовнішній периметр деформується, притискаючись до внутрішнього.\n" +#~ "\n" +#~ "Використовуйте Внутрішній/Зовнішній/Внутрішній для найкращої якості зовнішньої поверхні та точності розмірів, оскільки зовнішня стіна друкується без порушень від внутрішнього периметра. Однак, продуктивність на виході зменшиться, оскільки немає внутрішнього периметра, до якого можна було б притискати зовнішню стіну. Для ефективної роботи цієї опції потрібно щонайменше 3 стіни, оскільки спочатку друкуються внутрішні стіни, починаючи з 3-го периметра, потім зовнішній периметр і, нарешті, перший внутрішній периметр. У більшості випадків цей параметр рекомендується використовувати замість параметра Зовнішній/Внутрішній.\n" +#~ "\n" +#~ "Використовуйте опцію Зовнішня/Внутрішня для отримання такої ж якості зовнішньої стіни і точності розмірів, як і в опції Внутрішня/Зовнішня/Внутрішня. Однак шви по Z будуть виглядати менш рівномірними, оскільки перша екструзія нового шару починається на видимій поверхні " + +#~ msgid "This is the speed for the first layer except for solid infill sections." +#~ msgstr "Швидкість першого шару, за винятком зони суцільного заповнення" + +#~ msgid "This is the speed for solid infill parts of the first layer." +#~ msgstr "Швидкість зони суцільного заповнення першого шару" + +#, no-c-format, no-boost-format +#~ msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to line width of sparse infill. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." +#~ msgstr "Область заповнення дещо збільшена, щоб перекривати стіну для кращого зчеплення. Значення у відсотках відносно ширини лінії розрідженого заповнення. Встановіть це значення на рівні ~10-15%, щоб мінімізувати можливість надмірного видавлювання та накопичення матеріалу, що призводить до шорсткості верхньої поверхні." + +#, no-c-format, no-boost-format +#~ msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to line width of sparse infill." +#~ msgstr "Площа верхнього суцільного заповнення злегка збільшується, щоб накладатися на стінку для кращого зчеплення та зменшення прогалин у місцях прилягання верхнього заповнення до стінок. Значення 25-30% є хорошим початком для мінімізації таких прогалин. Значення у відсотках відносно ширини лінії часткового заповнення" + +#~ msgid "Interlocking depth of a segmented region. It will be ignored if \"mmu_segmented_region_max_width\" is zero or if \"mmu_segmented_region_interlocking_depth\" is bigger than \"mmu_segmented_region_max_width\". Zero disables this feature." +#~ msgstr "" +#~ "Глибина зчеплення сегментованої області. Буде ігноруватися, якщо \"mmu_segmented_region_max_width\" дорівнює нулю або якщо \"mmu_segmented_region_interlocking_depth\" більший за \"mmu_segmented_region_max_width\".\n" +#~ "\n" +#~ "Нульове значення вимикає цю функцію." + +# AI Translated +#~ msgid "" +#~ "Reduce the height of top-surface perimeters to match the model edge height.\n" +#~ "Affects perimeters with a slope less than this angle (degrees).\n" +#~ "A reasonable value is 35. Set to 0 to disable." +#~ msgstr "" +#~ "Зменшує висоту периметрів верхньої поверхні відповідно до висоти краю моделі.\n" +#~ "Впливає на периметри з нахилом, меншим за цей кут (у градусах).\n" +#~ "Розумне значення — 35. Встановіть 0, щоб вимкнути." + +#~ msgid "Role base wipe speed" +#~ msgstr "Швидкість протирання залежно від типу" + +#~ msgid "" +#~ "A draft shield is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft. It is usually needed only with open frame printers, i.e. without an enclosure.\n" +#~ "\n" +#~ "Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used.\n" +#~ "Note: With the draft shield active, the skirt will be printed at skirt distance from the object. Therefore, if brims are active it may intersect with them. To avoid this, increase the skirt distance value.\n" +#~ msgstr "" +#~ "Захисний екран буде корисним для захисту друку ABS або ASA від викривлення та відлипання від столу в наслідок протягу повітря. Зазвичай він потрібен для відкритих принтерів, які не мають закритої камери.\n" +#~ "\n" +#~ "Увімкнено = Спідниця буде тої ж висоти що і найвищий обʼєкт друку. Інакше буде застосовано параметр \"Висота спідниці\"\n" +#~ "До уваги: При увімкненому захисному екрані, спідниця буде надрукована на відстані від обʼєкту. Тому, якщо увімкнена кайма, вони можуть перетинатися. Щоб запобігти цьому, збільшіть значення відстані спідниці.\n" + +#~ msgid "" +#~ "The maximum print speed when purging in the wipe tower and printing the wipe tower sparse layers. When purging, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +#~ "\n" +#~ "When printing the sparse layers, if the internal perimeter speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +#~ "\n" +#~ "Increasing this speed may affect the tower's stability as well as increase the force with which the nozzle collides with any blobs that may have formed on the wipe tower.\n" +#~ "\n" +#~ "Before increasing this parameter beyond the default of 90 mm/s, make sure your printer can reliably bridge at the increased speeds and that ooze when tool changing is well controlled.\n" +#~ "\n" +#~ "For the wipe tower external perimeters the internal perimeter speed is used regardless of this setting." +#~ msgstr "" +#~ "Максимальна швидкість друку під час продування у башті витирання та друку розріджених шарів у башті витирання. Якщо під час продування швидкість розрідженого заповнення або розрахована швидкість на основі максимальної обʼємної швидкості нитки нижча, замість неї використовуватиметься найнижча швидкість.\n" +#~ "\n" +#~ "Під час друку розріджених шарів, якщо швидкість по внутрішньому периметру або розрахована швидкість на основі максимальної обʼємної швидкості нитки нижча, буде використовуватися найнижча швидкість.\n" +#~ "\n" +#~ "Збільшення цієї швидкості може вплинути на стабільність башти, а також збільшити силу, з якою сопло стикається з будь-якими згустками, що можуть утворитися на башті витирання.\n" +#~ "\n" +#~ "Перш ніж збільшувати цей параметр понад значення за замовчуванням 90 мм/с, переконайтеся, що принтер може надійно працювати на підвищених швидкостях і що витікання під час заміни інструменту добре контролюється.\n" +#~ "\n" +#~ "Для зовнішніх периметрів вежі витирання використовується швидкість внутрішнього периметра незалежно від цього параметра." + +# AI Translated +#~ msgid "" +#~ "Wipe tower outer wall type.\n" +#~ "1. Rectangle: The default wall type, a rectangle with fixed width and height.\n" +#~ "2. Cone: A cone with a fillet at the bottom to help stabilize the wipe tower.\n" +#~ "3. Rib: Adds four ribs to the tower wall for enhanced stability." +#~ msgstr "" +#~ "Тип зовнішньої стінки вежі протирання.\n" +#~ "1. Прямокутник: типовий тип стінки, прямокутник з фіксованою шириною та висотою.\n" +#~ "2. Конус: конус із заокругленням унизу, що допомагає стабілізувати вежу протирання.\n" +#~ "3. Ребро: додає до стінки вежі чотири ребра для більшої стійкості." + +#~ msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker or narrower than they normally would be. The spacing is adjusted automatically." +#~ msgstr "Додатковий потік для ліній очистки на вежі протирання. Це робить лінії очистки товщими або вужчими, ніж зазвичай. Відстань між лініями налаштовується автоматично." + +#~ msgid "" +#~ "Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. Higher values remove more and longer walls.\n" +#~ "\n" +#~ "NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the Advanced settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." +#~ msgstr "Налаштуйте це значення, щоб запобігти друкуванню коротких незакритих стін, що може збільшити час друку. Вищі значення видаляють більше і довші стіни." + # AI Translated #, boost-format #~ msgid "Split into %1% part" diff --git a/localization/i18n/vi/OrcaSlicer_vi.po b/localization/i18n/vi/OrcaSlicer_vi.po index 484900ba9d..e90dcf7dce 100644 --- a/localization/i18n/vi/OrcaSlicer_vi.po +++ b/localization/i18n/vi/OrcaSlicer_vi.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-10-13 09:55-0300\n" +"POT-Creation-Date: 2026-10-14 10:04-0300\n" "PO-Revision-Date: 2025-10-02 17:43+0700\n" "Last-Translator: \n" "Language-Team: hainguyen.ts13@gmail.com\n" @@ -2526,6 +2526,67 @@ msgstr "Hạn chế Plug-in mạng" msgid "Privacy Policy Update" msgstr "Cập nhật chính sách bảo mật" +# AI Translated +msgid "All your filament presets are available on the printers they were made for." +msgstr "Tất cả cài đặt sẵn filament của bạn đều có thể dùng trên các máy in mà chúng được tạo ra." + +# AI Translated +msgid "Migrate Filament Presets" +msgstr "Di chuyển cài đặt sẵn filament" + +# AI Translated +msgid "" +"OrcaSlicer 2.5.0 restructured many system filament presets to fix incorrect profiles and prepare for future features. As a result, the presets below no longer show on some printers they were made for. Sorry for the trouble; this is a one-time fix.\n" +"\n" +"Add those printers back to your presets now? Your presets are backed up first. You can also do this later from Help > Migrate Filament Presets." +msgstr "" +"OrcaSlicer 2.5.0 đã tái cấu trúc nhiều cài đặt sẵn filament hệ thống để sửa các hồ sơ không chính xác và chuẩn bị cho các tính năng trong tương lai. Do đó, các cài đặt sẵn bên dưới không còn hiển thị trên một số máy in mà chúng được tạo ra. Rất tiếc vì sự bất tiện này; đây là bản sửa lỗi một lần duy nhất.\n" +"\n" +"Thêm lại các máy in đó vào cài đặt sẵn của bạn ngay bây giờ? Cài đặt sẵn của bạn sẽ được sao lưu trước. Bạn cũng có thể thực hiện việc này sau từ Trợ giúp > Di chuyển cài đặt sẵn filament." + +# AI Translated +#, boost-format +msgid "%1% (based on %2%)" +msgstr "%1% (dựa trên %2%)" + +# AI Translated +msgid "Don't remind me again" +msgstr "Đừng nhắc tôi nữa" + +# AI Translated +msgid "Your presets could not be backed up, so they were not migrated." +msgstr "Không thể sao lưu cài đặt sẵn của bạn nên chúng chưa được di chuyển." + +# AI Translated +msgid "The user presets folder could not be locked, so nothing was migrated. Another OrcaSlicer instance may be saving presets; try again later from Help > Migrate Filament Presets." +msgstr "Không thể khóa thư mục cài đặt sẵn người dùng nên chưa có gì được di chuyển. Có thể một phiên bản OrcaSlicer khác đang lưu cài đặt sẵn; hãy thử lại sau từ Trợ giúp > Di chuyển cài đặt sẵn filament." + +# AI Translated +#, boost-format +msgid "" +"Your filament presets could not be migrated. A backup of your presets was saved to:\n" +"%1%" +msgstr "" +"Không thể di chuyển cài đặt sẵn filament của bạn. Bản sao lưu cài đặt sẵn của bạn đã được lưu tại:\n" +"%1%" + +# AI Translated +#, boost-format +msgid "" +"Your filament presets were migrated. Select them again in the filament list where you used them.\n" +"\n" +"A backup of your presets was saved to:\n" +"%1%" +msgstr "" +"Cài đặt sẵn filament của bạn đã được di chuyển. Hãy chọn lại chúng trong danh sách filament nơi bạn đã dùng chúng.\n" +"\n" +"Bản sao lưu cài đặt sẵn của bạn đã được lưu tại:\n" +"%1%" + +# AI Translated +msgid "These presets could not be migrated:" +msgstr "Không thể di chuyển các cài đặt sẵn này:" + # AI Translated #, c-format, boost-format msgid "your Orca Cloud profile (user ID: \"%s\")" @@ -3291,6 +3352,63 @@ msgstr "(Mất màu)" msgid "Center" msgstr "Căn giữa" +# AI Translated +msgid "Distribute left-right" +msgstr "Phân bố trái-phải" + +# AI Translated +msgid "Distribute front-back" +msgstr "Phân bố trước-sau" + +# AI Translated +msgid "Distribute top-bottom" +msgstr "Phân bố trên-dưới" + +# AI Translated +msgid "Align left" +msgstr "Căn trái" + +# AI Translated +msgid "Align left-right center" +msgstr "Căn giữa trái-phải" + +# AI Translated +msgid "Align right" +msgstr "Căn phải" + +# AI Translated +msgid "Align front" +msgstr "Căn trước" + +# AI Translated +msgid "Align front-back center" +msgstr "Căn giữa trước-sau" + +# AI Translated +# Needs human review: Align/Distribute menu (object right-click), Y axis: check 'Căn trước'/'Căn sau' read as aligning the front/back edges, not 'align first/later'. +msgid "Align back" +msgstr "Căn sau" + +# AI Translated +msgid "Align bottom" +msgstr "Căn dưới" + +# AI Translated +msgid "Align top-bottom center" +msgstr "Căn giữa trên-dưới" + +# AI Translated +msgid "Align top" +msgstr "Căn trên" + +# AI Translated +msgid "Align/Distribute" +msgstr "Căn chỉnh/Phân bố" + +# AI Translated +msgid "Align and distribute objects" +msgstr "Căn chỉnh và phân bố vật thể" + msgid "Drop" msgstr "Thả xuống" @@ -6993,6 +7111,10 @@ msgstr "Trình hướng dẫn thiết lập" msgid "Show Configuration Folder" msgstr "Hiện thư mục cấu hình" +# AI Translated +msgid "Bring back filament presets that a profile update removed from printers they were made for" +msgstr "Khôi phục các cài đặt sẵn filament đã bị bản cập nhật hồ sơ gỡ khỏi các máy in mà chúng được tạo ra" + # AI Translated msgid "Troubleshoot Center" msgstr "Trung tâm khắc phục sự cố" @@ -14702,6 +14824,18 @@ msgstr "nhiều giao điểm với một chu vi, chỉ một giao điểm đư msgid "a perimeter is fully inside a modifier, the modifier was not applied to it (%1%)" msgstr "một chu vi nằm hoàn toàn bên trong modifier, modifier không được áp dụng cho nó (%1%)" +# AI Translated +#. TRN: %1% is the modifier type "Seam Blocked" as in the menu, %2% the modifier name, %3% the object name. +#, boost-format +msgid "%1% modifier \"%2%\" of \"%3%\" covers an entire perimeter" +msgstr "Modifier %1% \"%2%\" của \"%3%\" bao phủ toàn bộ một chu vi" + +# AI Translated +#. TRN: %1% is the modifier type "Seam Blocked" as in the menu, %2% the modifier name, %3% the object name, %4% the number of modifiers. +#, boost-format +msgid "%1% modifier \"%2%\" of \"%3%\" (%4% in total) covers an entire perimeter" +msgstr "Modifier %1% \"%2%\" của \"%3%\" (tổng cộng %4%) bao phủ toàn bộ một chu vi" + # AI Translated #, boost-format msgid "modifier \"%1%\" of \"%2%\" had no effect on the seam (it might not reach the centerline of the printed perimeter)" @@ -15735,13 +15869,13 @@ msgid "" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" -"If set to 0, the line width will match the Internal solid infill width." +"If set to 0, the line width will match the Internal solid infill width, or the nozzle diameter for thick bridges." msgstr "" -"Độ rộng đường của Cầu. Nếu biểu diễn dưới dạng %, nó sẽ được tính theo đường kính đầu phun.\n" -"Nên dùng kèm với mật độ Cầu hoặc tỷ lệ lưu lượng Cầu cao hơn.\n" +"Độ rộng đường của cầu. Nếu biểu diễn dưới dạng %, nó sẽ được tính theo đường kính đầu phun.\n" +"Nên dùng kèm với mật độ cầu hoặc tỷ lệ lưu lượng cầu cao hơn.\n" "\n" -"Giá trị tối đa là 100% hoặc đường kính đầu phun.\n" -"Nếu đặt là 0, độ rộng đường sẽ bằng độ rộng Infill đặc bên trong." +"Giá trị tối đa là 100%, hoặc đường kính đầu phun.\n" +"Nếu đặt là 0, độ rộng đường sẽ bằng độ rộng Infill đặc bên trong, hoặc bằng đường kính đầu phun đối với cầu dày." msgid "Internal bridge flow ratio" msgstr "Tỷ lệ lưu lượng cầu bên trong" @@ -16046,7 +16180,7 @@ msgid "" "3. If artifacts still appear, enable Extrusion Rate Smoothing (ERS) to further smooth the flow transitions.\n" "\n" "Note: When this option is enabled, overhang perimeters are treated like overhangs, meaning the overhang speed is applied even if the overhanging perimeter is part of a bridge.\n" -"For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 100% overhang speed will be applied." +"For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 75% overhang speed will be applied, limited by the bridge speed." msgstr "" "Bật tùy chọn này để giảm tốc độ in ở những vùng mà chu vi có thể đã bị cong vênh lên trên.\n" "Ví dụ, sẽ áp dụng thêm mức giảm tốc khi in phần nhô ở các góc nhọn như mũi thân tàu Benchy, giúp giảm hiện tượng cong vênh vốn tích tụ qua nhiều lớp.\n" @@ -16058,22 +16192,23 @@ msgstr "" "Khuyến nghị khi bật tùy chọn này:\n" "1. Giảm thời gian làm mượt Pressure Advance xuống 0.015 - 0.02 để extruder phản ứng nhanh với thay đổi tốc độ.\n" "2. Tăng tốc độ in tối thiểu để hạn chế mức độ giảm tốc và giảm chênh lệch giữa các đoạn nhanh và chậm.\n" -"3. Nếu vẫn xuất hiện khuyết điểm, hãy bật Extrusion Rate Smoothing (ERS) để làm mượt thêm các chuyển tiếp lưu lượng.\n" +"3. Nếu vẫn xuất hiện khuyết điểm, hãy bật Làm mịn tốc độ đùn (ERS) để làm mịn thêm các chuyển tiếp lưu lượng.\n" "\n" "Lưu ý: Khi tùy chọn này được bật, chu vi phần nhô được xử lý như phần nhô, nghĩa là tốc độ phần nhô sẽ được áp dụng ngay cả khi chu vi nhô đó là một phần của cầu.\n" -"Ví dụ, khi các chu vi nhô 100%, không có thành nào đỡ bên dưới, tốc độ phần nhô 100% sẽ được áp dụng." +"Ví dụ, khi các chu vi nhô 100%, không có thành nào đỡ bên dưới, tốc độ phần nhô 75% sẽ được áp dụng, bị giới hạn bởi tốc độ cầu." msgid "mm/s or %" msgstr "mm/s hoặc %" +# AI Translated msgid "" "Speed of the externally visible bridge extrusions.\n" "\n" -"In addition, if Slow down for curled perimeters is disabled or Classic overhang mode is enabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." +"In addition, if Slow down for curled perimeters is disabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." msgstr "" "Tốc độ của các đùn cầu nhìn thấy từ bên ngoài.\n" "\n" -"Ngoài ra, nếu Giảm tốc cho chu vi cong bị tắt hoặc chế độ phần nhô cổ điển được bật, nó sẽ là tốc độ in của thành nhô được hỗ trợ dưới 13%, cho dù chúng là một phần của cầu hay phần nhô." +"Ngoài ra, nếu Giảm tốc cho chu vi cong bị tắt, nó sẽ là tốc độ in của thành nhô được hỗ trợ dưới 13%, cho dù chúng là một phần của cầu hay phần nhô." msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%." msgstr "Tốc độ của cầu bên trong. Nếu giá trị được biểu thị dưới dạng phần trăm, nó sẽ được tính dựa trên bridge_speed. Giá trị mặc định là 150%." @@ -16642,8 +16777,9 @@ msgstr "Tốc độ của thành ngoài là ngoài cùng và nhìn thấy đư msgid "Small perimeters" msgstr "Chu vi nhỏ" -msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above. Set to zero for auto." -msgstr "Cài đặt riêng biệt này sẽ ảnh hưởng đến tốc độ của chu vi có bán kính <= small_perimeter_threshold (thường là lỗ). Nếu được biểu thị dưới dạng phần trăm (ví dụ: 80%) nó sẽ được tính trên cài đặt tốc độ thành ngoài ở trên. Đặt thành không để tự động." +# AI Translated +msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above." +msgstr "Cài đặt riêng biệt này sẽ ảnh hưởng đến tốc độ của chu vi có bán kính <= small_perimeter_threshold (thường là lỗ). Nếu được biểu thị dưới dạng phần trăm (ví dụ: 80%) nó sẽ được tính trên cài đặt tốc độ thành ngoài ở trên." msgid "Small perimeters threshold" msgstr "Ngưỡng chu vi nhỏ" @@ -16656,8 +16792,8 @@ msgid "Small support perimeters" msgstr "Chu vi support nhỏ" # AI Translated -msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above. Set to zero for auto." -msgstr "Giống như \"Chu vi nhỏ\", nhưng dành cho support. Cài đặt riêng này sẽ ảnh hưởng đến tốc độ support cho các vùng <= `small_support_perimeter_threshold`. Nếu biểu diễn dưới dạng phần trăm (ví dụ: 80%), nó sẽ được tính theo cài đặt tốc độ support hoặc giao diện support ở trên. Đặt bằng không để tự động." +msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above." +msgstr "Giống như \"Chu vi nhỏ\", nhưng dành cho support. Cài đặt riêng này sẽ ảnh hưởng đến tốc độ support cho các vùng <= `small_support_perimeter_threshold`. Nếu biểu diễn dưới dạng phần trăm (ví dụ: 80%), nó sẽ được tính theo cài đặt tốc độ support hoặc giao diện support ở trên." # AI Translated msgid "Small support perimeters threshold" @@ -16670,12 +16806,13 @@ msgstr "Đặt ngưỡng cho độ dài chu vi support nhỏ. Ngưỡng mặc đ msgid "Walls printing order" msgstr "Thứ tự in thành" +# AI Translated msgid "" "Print sequence of the internal (inner) and external (outer) walls.\n" "\n" "Use Inner/Outer for best overhangs. This is because the overhanging walls can adhere to a neighbouring perimeter while printing. However, this option results in slightly reduced surface quality as the external perimeter is deformed by being squashed to the internal perimeter.\n" "\n" -"Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended against the Outer/Inner option in most cases.\n" +"Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended over the Outer/Inner option in most cases.\n" "\n" "Use Outer/Inner for the same external wall quality and dimensional accuracy benefits of Inner/Outer/Inner option. However, the Z seams will appear less consistent as the first extrusion of a new layer starts on a visible surface." msgstr "" @@ -17674,14 +17811,16 @@ msgstr "Chiều cao lớp đầu tiên" msgid "Height of the first layer. Making the first layer height thicker can improve build plate adhesion." msgstr "Chiều cao của lớp đầu tiên. Làm cho chiều cao lớp đầu tiên dày một chút có thể cải thiện độ bám dính bàn in." -msgid "This is the speed for the first layer except for solid infill sections." -msgstr "Tốc độ của lớp đầu tiên ngoại trừ phần infill đặc." +# AI Translated +msgid "This is the speed for the walls and brim of the first layer." +msgstr "Tốc độ của thành và brim của lớp đầu tiên." msgid "First layer infill" msgstr "Infill lớp đầu tiên" -msgid "This is the speed for solid infill parts of the first layer." -msgstr "Tốc độ của phần infill đặc của lớp đầu tiên." +# AI Translated +msgid "This is the speed for the first layer except for walls and brim, such as infill, gap fill and support." +msgstr "Tốc độ của lớp đầu tiên ngoại trừ thành và brim, chẳng hạn như infill, lấp khe và support." msgid "First layer travel speed" msgstr "Tốc độ di chuyển lớp đầu tiên" @@ -18410,16 +18549,18 @@ msgstr "Độ rộng đường của infill thưa bên trong. Nếu được bi msgid "Infill/wall overlap" msgstr "Chồng lấp infill/Thành" +# AI Translated #, no-c-format, no-boost-format -msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to line width of sparse infill. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." -msgstr "Vùng infill được mở rộng một chút để chồng lấp với thành để liên kết tốt hơn. Giá trị phần trăm tương đối với độ rộng đường của infill thưa. Đặt giá trị này thành ~10-15% để giảm thiểu đùn dư tiềm ẩn và tích tụ vật liệu dẫn đến bề mặt trên thô." +msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to the inner wall line width. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." +msgstr "Vùng infill được mở rộng một chút để chồng lấp với thành để liên kết tốt hơn. Giá trị phần trăm tương đối với độ rộng đường của thành trong. Đặt giá trị này thành ~10-15% để giảm thiểu đùn dư tiềm ẩn và tích tụ vật liệu dẫn đến bề mặt trên thô." msgid "Top/Bottom solid infill/wall overlap" msgstr "Chồng lấp infill đặc/thành trên/dưới" +# AI Translated #, no-c-format, no-boost-format -msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to line width of sparse infill." -msgstr "Vùng infill đặc trên được mở rộng một chút để chồng lấp với thành để liên kết tốt hơn và giảm thiểu sự xuất hiện của lỗ kim nơi infill trên gặp thành. Giá trị 25-30% là điểm khởi đầu tốt, giảm thiểu sự xuất hiện của lỗ kim. Giá trị phần trăm tương đối với độ rộng đường của infill thưa." +msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to the inner wall line width." +msgstr "Vùng infill đặc trên được mở rộng một chút để chồng lấp với thành để liên kết tốt hơn và giảm thiểu sự xuất hiện của lỗ kim nơi infill trên gặp thành. Giá trị 25-30% là điểm khởi đầu tốt, giảm thiểu sự xuất hiện của lỗ kim. Giá trị phần trăm tương đối với độ rộng đường của thành trong." msgid "This is the speed for internal sparse infill." msgstr "Tốc độ của infill thưa bên trong." @@ -18446,8 +18587,9 @@ msgstr "Độ rộng tối đa của vùng phân đoạn. Giá trị 0 vô hiệ msgid "Interlocking depth of a segmented region" msgstr "Độ sâu lồng ghép của vùng phân đoạn" -msgid "Interlocking depth of a segmented region. It will be ignored if \"mmu_segmented_region_max_width\" is zero or if \"mmu_segmented_region_interlocking_depth\" is bigger than \"mmu_segmented_region_max_width\". Zero disables this feature." -msgstr "Độ sâu lồng ghép của vùng phân đoạn. Nó sẽ bị bỏ qua nếu \"mmu_segmented_region_max_width\" là không hoặc nếu \"mmu_segmented_region_interlocking_depth\" lớn hơn \"mmu_segmented_region_max_width\". Không vô hiệu hóa tính năng này." +# AI Translated +msgid "Interlocking depth of a segmented region. On every other layer, the segmented region is limited to this depth. It will be ignored if \"interlocking_beam\" is enabled. Zero disables this feature." +msgstr "Độ sâu lồng ghép của vùng phân đoạn. Ở mỗi lớp xen kẽ, vùng phân đoạn bị giới hạn trong độ sâu này. Nó sẽ bị bỏ qua nếu \"interlocking_beam\" được bật. Giá trị bằng không sẽ vô hiệu hóa tính năng này." msgid "Use beam interlocking" msgstr "Sử dụng lồng ghép dầm" @@ -18560,11 +18702,11 @@ msgstr "Góc giảm thiểu chiều cao thành" # AI Translated msgid "" "Reduce the height of top-surface perimeters to match the model edge height.\n" -"Affects perimeters with a slope less than this angle (degrees).\n" +"Affects perimeters with a slope greater than this angle (degrees).\n" "A reasonable value is 35. Set to 0 to disable." msgstr "" "Giảm chiều cao của chu vi bề mặt trên cho khớp với chiều cao mép của mô hình.\n" -"Ảnh hưởng đến các chu vi có độ dốc nhỏ hơn góc này (độ).\n" +"Ảnh hưởng đến các chu vi có độ dốc lớn hơn góc này (độ).\n" "Giá trị hợp lý là 35. Đặt 0 để tắt." # AI Translated @@ -19567,7 +19709,8 @@ msgstr "Khớp vát cho thành trong" msgid "Use scarf joint for inner walls as well." msgstr "Sử dụng khớp vát cho thành trong cũng vậy." -msgid "Role base wipe speed" +# AI Translated +msgid "Role based wipe speed" msgstr "Tốc độ lau dựa trên vai trò" msgid "The wipe speed is determined by the speed of the current extrusion role. e.g. if a wipe action is executed immediately following an outer wall extrusion, the speed of the outer wall extrusion will be utilized for the wipe action." @@ -19657,16 +19800,15 @@ msgstr "Giới hạn các vòng viền/tấm chắn gió thành một thành sau msgid "Draft shield" msgstr "Tấm chắn gió" +# AI Translated msgid "" "A draft shield is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft. It is usually needed only with open frame printers, i.e. without an enclosure.\n" "\n" -"Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used.\n" -"Note: With the draft shield active, the skirt will be printed at skirt distance from the object. Therefore, if brims are active it may intersect with them. To avoid this, increase the skirt distance value.\n" +"Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used." msgstr "" "Tấm chắn gió hữu ích để bảo vệ bản in ABS hoặc ASA khỏi cong vênh và tách khỏi bàn in do gió lùa. Nó thường chỉ cần với máy in khung mở, tức là không có vỏ bọc.\n" "\n" -"Đã bật = viền cao bằng đối tượng được in cao nhất. Ngược lại 'Chiều cao viền' được sử dụng.\n" -"Lưu ý: Với tấm chắn gió hoạt động, viền sẽ được in ở khoảng cách viền từ đối tượng. Do đó, nếu vành đang hoạt động nó có thể giao với chúng. Để tránh điều này, hãy tăng giá trị khoảng cách viền.\n" +"Đã bật = viền cao bằng đối tượng được in cao nhất. Ngược lại 'Chiều cao viền' được sử dụng." msgid "Enabled" msgstr "Đã bật" @@ -20827,40 +20969,42 @@ msgstr "Góc ở đỉnh của nón được sử dụng để ổn định wipe msgid "Maximum wipe tower print speed" msgstr "Tốc độ in wipe tower tối đa" +# AI Translated msgid "" "The maximum print speed when purging in the wipe tower and printing the wipe tower sparse layers. When purging, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" "\n" -"When printing the sparse layers, if the internal perimeter speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +"When printing the sparse layers, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" "\n" "Increasing this speed may affect the tower's stability as well as increase the force with which the nozzle collides with any blobs that may have formed on the wipe tower.\n" "\n" "Before increasing this parameter beyond the default of 90 mm/s, make sure your printer can reliably bridge at the increased speeds and that ooze when tool changing is well controlled.\n" "\n" -"For the wipe tower external perimeters the internal perimeter speed is used regardless of this setting." +"For the wipe tower external perimeters the internal perimeter speed is used, also limited by this setting." msgstr "" "Tốc độ in tối đa khi xả trong wipe tower và in các lớp thưa của wipe tower. Khi xả, nếu tốc độ infill thưa hoặc tốc độ được tính từ tốc độ thể tích tối đa của filament thấp hơn, tốc độ thấp nhất sẽ được sử dụng thay thế.\n" "\n" -"Khi in các lớp thưa, nếu tốc độ chu vi bên trong hoặc tốc độ được tính từ tốc độ thể tích tối đa của filament thấp hơn, tốc độ thấp nhất sẽ được sử dụng thay thế.\n" +"Khi in các lớp thưa, nếu tốc độ infill thưa hoặc tốc độ được tính từ tốc độ thể tích tối đa của filament thấp hơn, tốc độ thấp nhất sẽ được sử dụng thay thế.\n" "\n" "Tăng tốc độ này có thể ảnh hưởng đến độ ổn định của tower cũng như tăng lực mà đầu phun va chạm với bất kỳ cục nhỏ nào có thể đã hình thành trên wipe tower.\n" "\n" -"Trước khi tăng tham số này vượt quá mặc định 90 mm/s, hãy đảm bảo máy in của bạn có thể nối cầu đáng tin cậy ở tốc độ tăng và chảy nhựa khi thay công cụ được kiểm soát tốt.\n" +"Trước khi tăng tham số này vượt quá mặc định 90 mm/s, hãy đảm bảo máy in của bạn có thể bắc cầu đáng tin cậy ở tốc độ tăng và việc ngăn chảy nhựa khi thay công cụ được kiểm soát tốt.\n" "\n" -"Đối với chu vi bên ngoài wipe tower, tốc độ chu vi bên trong được sử dụng bất kể cài đặt này." +"Đối với chu vi bên ngoài wipe tower, tốc độ chu vi bên trong được sử dụng, đồng thời cũng bị giới hạn bởi cài đặt này." msgid "Wall type" msgstr "Loại thành" +# AI Translated msgid "" "Wipe tower outer wall type.\n" -"1. Rectangle: The default wall type, a rectangle with fixed width and height.\n" +"1. Rectangle: A rectangle with fixed width and height.\n" "2. Cone: A cone with a fillet at the bottom to help stabilize the wipe tower.\n" -"3. Rib: Adds four ribs to the tower wall for enhanced stability." +"3. Rib: The default wall type, which adds four ribs to the tower wall for enhanced stability." msgstr "" "Loại thành ngoài wipe tower.\n" -"1. Hình chữ nhật: Loại thành mặc định, hình chữ nhật có độ rộng và chiều cao cố định.\n" -"2. Nón: Một nón có bo tròn ở dưới để giúp ổn định wipe tower.\n" -"3. Gân: Thêm bốn gân vào thành tower để tăng cường độ ổn định." +"1. Hình chữ nhật: Hình chữ nhật có độ rộng và chiều cao cố định.\n" +"2. Hình nón: Một hình nón có bo tròn ở dưới để giúp ổn định wipe tower.\n" +"3. Gân: Loại thành mặc định, thêm bốn gân vào thành tower để tăng cường độ ổn định." msgid "Rectangle" msgstr "Hình chữ nhật" @@ -20961,8 +21105,9 @@ msgstr "Khoảng cách của các đường xả trên wipe tower." msgid "Extra flow for purging" msgstr "Lưu lượng bổ sung để xả" -msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker or narrower than they normally would be. The spacing is adjusted automatically." -msgstr "Lưu lượng bổ sung được sử dụng cho các đường xả trên wipe tower. Điều này làm cho các đường xả dày hơn hoặc hẹp hơn so với bình thường. Khoảng cách được điều chỉnh tự động." +# AI Translated +msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker than they normally would be. The spacing is adjusted automatically." +msgstr "Lưu lượng bổ sung được sử dụng cho các đường xả trên wipe tower. Điều này làm cho các đường xả dày hơn so với bình thường. Khoảng cách được điều chỉnh tự động." msgid "Idle temperature" msgstr "Nhiệt độ chờ" @@ -21080,14 +21225,15 @@ msgstr "Độ dày tối thiểu của tính năng mỏng. Tính năng model m msgid "Minimum wall length" msgstr "Độ dài thành tối thiểu" +# AI Translated msgid "" -"Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. Higher values remove more and longer walls.\n" +"Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. The value is a multiple of the wall width. Higher values remove more and longer walls.\n" "\n" -"NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the Advanced settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." +"NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the 'Walls and surfaces' settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." msgstr "" -"Điều chỉnh giá trị này để ngăn thành ngắn, không đóng được in, có thể tăng thời gian in. Giá trị cao hơn loại bỏ nhiều thành và dài hơn.\n" +"Điều chỉnh giá trị này để ngăn in các thành ngắn, không khép kín, vì chúng có thể làm tăng thời gian in. Giá trị này là bội số của độ rộng thành. Giá trị cao hơn loại bỏ nhiều thành hơn và dài hơn.\n" "\n" -"LƯU Ý: Bề mặt dưới và trên sẽ không bị ảnh hưởng bởi giá trị này để ngăn khe nhìn thấy ở bên ngoài model. Điều chỉnh 'Ngưỡng một thành' trong cài đặt Nâng cao bên dưới để điều chỉnh độ nhạy của những gì được coi là bề mặt trên. 'Ngưỡng một thành' chỉ hiển thị nếu cài đặt này được đặt trên giá trị mặc định 0.5, hoặc nếu bề mặt trên thành đơn được bật." +"LƯU Ý: Bề mặt dưới và trên sẽ không bị ảnh hưởng bởi giá trị này để ngăn khe hở nhìn thấy ở bên ngoài mô hình. Điều chỉnh 'Ngưỡng một thành' trong cài đặt 'Thành và bề mặt' bên dưới để điều chỉnh độ nhạy của những gì được coi là bề mặt trên. 'Ngưỡng một thành' chỉ hiển thị nếu cài đặt này được đặt trên giá trị mặc định 0.5, hoặc nếu bề mặt trên thành đơn được bật." # AI Translated msgid "Maximum wall resolution" @@ -25159,10 +25305,6 @@ msgstr "Bật gán filament thông minh: Gán một filament cho nhiều đầu msgid "File Saving" msgstr "Lưu tệp" -# AI Translated -msgid "Don't remind me again" -msgstr "Đừng nhắc tôi nữa" - # AI Translated msgid "No further pop-up will appear. You can reopen it in 'Preferences'" msgstr "Sẽ không có cửa sổ bật lên nào nữa. Bạn có thể mở lại trong 'Tùy chọn'" @@ -35748,6 +35890,171 @@ msgstr "" "Tránh cong vênh\n" "Bạn có biết rằng khi in vật liệu dễ cong vênh như ABS, tăng nhiệt độ bàn nóng một cách thích hợp có thể giảm xác suất cong vênh không?" +# AI Translated +#~ msgid "" +#~ "Line width of the Bridge. If expressed as a %, it will be computed over the nozzle diameter.\n" +#~ "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" +#~ "\n" +#~ "The maximum value is 100% or the nozzle diameter.\n" +#~ "If set to 0, the line width will match the Internal solid infill width." +#~ msgstr "" +#~ "Độ rộng đường của Cầu. Nếu biểu diễn dưới dạng %, nó sẽ được tính theo đường kính đầu phun.\n" +#~ "Nên dùng kèm với mật độ Cầu hoặc tỷ lệ lưu lượng Cầu cao hơn.\n" +#~ "\n" +#~ "Giá trị tối đa là 100% hoặc đường kính đầu phun.\n" +#~ "Nếu đặt là 0, độ rộng đường sẽ bằng độ rộng Infill đặc bên trong." + +# AI Translated +#, no-c-format, no-boost-format +#~ msgid "" +#~ "Enable this option to slow down printing in areas where perimeters may have curled upwards.\n" +#~ "For example, additional slowdown will be applied when printing overhangs on sharp corners like the front of the Benchy hull, reducing curling which compounds over multiple layers.\n" +#~ "\n" +#~ "It is generally recommended to have this option switched on unless your printer cooling is powerful enough or the print speed is slow enough that perimeter curling does not happen. \n" +#~ "If printing with a high external perimeter speed, this parameter may introduce wall artifacts when slowing down, due to the potentially large variance in print speeds causing the extruder to be unable to keep up with the requested flow change.\n" +#~ "Root cause of these artifacts is most likely PA tuning being slightly off, especially when combined with a high PA smooth time.\n" +#~ "\n" +#~ "Recommendations when enabling this option:\n" +#~ "1. Reduce Pressure Advance smooth time to 0.015 - 0.02 so the extruder reacts quickly to the speed changes.\n" +#~ "2. Increase the minimum print speeds to limit the magnitude of the slowdown and reduce the variance between fast and slow segments.\n" +#~ "3. If artifacts still appear, enable Extrusion Rate Smoothing (ERS) to further smooth the flow transitions.\n" +#~ "\n" +#~ "Note: When this option is enabled, overhang perimeters are treated like overhangs, meaning the overhang speed is applied even if the overhanging perimeter is part of a bridge.\n" +#~ "For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 100% overhang speed will be applied." +#~ msgstr "" +#~ "Bật tùy chọn này để giảm tốc độ in ở những vùng mà chu vi có thể đã bị cong vênh lên trên.\n" +#~ "Ví dụ, sẽ áp dụng thêm mức giảm tốc khi in phần nhô ở các góc nhọn như mũi thân tàu Benchy, giúp giảm hiện tượng cong vênh vốn tích tụ qua nhiều lớp.\n" +#~ "\n" +#~ "Thông thường nên bật tùy chọn này, trừ khi hệ thống làm mát của máy in đủ mạnh hoặc tốc độ in đủ chậm để chu vi không bị cong vênh. \n" +#~ "Nếu in với tốc độ chu vi ngoài cao, tham số này có thể tạo ra khuyết điểm trên thành khi giảm tốc, do biên độ dao động tốc độ in lớn khiến extruder không theo kịp thay đổi lưu lượng được yêu cầu.\n" +#~ "Nguyên nhân gốc của những khuyết điểm này nhiều khả năng là do PA chưa được tinh chỉnh chuẩn, đặc biệt khi kết hợp với thời gian làm mượt PA lớn.\n" +#~ "\n" +#~ "Khuyến nghị khi bật tùy chọn này:\n" +#~ "1. Giảm thời gian làm mượt Pressure Advance xuống 0.015 - 0.02 để extruder phản ứng nhanh với thay đổi tốc độ.\n" +#~ "2. Tăng tốc độ in tối thiểu để hạn chế mức độ giảm tốc và giảm chênh lệch giữa các đoạn nhanh và chậm.\n" +#~ "3. Nếu vẫn xuất hiện khuyết điểm, hãy bật Extrusion Rate Smoothing (ERS) để làm mượt thêm các chuyển tiếp lưu lượng.\n" +#~ "\n" +#~ "Lưu ý: Khi tùy chọn này được bật, chu vi phần nhô được xử lý như phần nhô, nghĩa là tốc độ phần nhô sẽ được áp dụng ngay cả khi chu vi nhô đó là một phần của cầu.\n" +#~ "Ví dụ, khi các chu vi nhô 100%, không có thành nào đỡ bên dưới, tốc độ phần nhô 100% sẽ được áp dụng." + +#~ msgid "" +#~ "Speed of the externally visible bridge extrusions.\n" +#~ "\n" +#~ "In addition, if Slow down for curled perimeters is disabled or Classic overhang mode is enabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." +#~ msgstr "" +#~ "Tốc độ của các đùn cầu nhìn thấy từ bên ngoài.\n" +#~ "\n" +#~ "Ngoài ra, nếu Giảm tốc cho chu vi cong bị tắt hoặc chế độ phần nhô cổ điển được bật, nó sẽ là tốc độ in của thành nhô được hỗ trợ dưới 13%, cho dù chúng là một phần của cầu hay phần nhô." + +#~ msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above. Set to zero for auto." +#~ msgstr "Cài đặt riêng biệt này sẽ ảnh hưởng đến tốc độ của chu vi có bán kính <= small_perimeter_threshold (thường là lỗ). Nếu được biểu thị dưới dạng phần trăm (ví dụ: 80%) nó sẽ được tính trên cài đặt tốc độ thành ngoài ở trên. Đặt thành không để tự động." + +# AI Translated +#~ msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above. Set to zero for auto." +#~ msgstr "Giống như \"Chu vi nhỏ\", nhưng dành cho support. Cài đặt riêng này sẽ ảnh hưởng đến tốc độ support cho các vùng <= `small_support_perimeter_threshold`. Nếu biểu diễn dưới dạng phần trăm (ví dụ: 80%), nó sẽ được tính theo cài đặt tốc độ support hoặc giao diện support ở trên. Đặt bằng không để tự động." + +#~ msgid "" +#~ "Print sequence of the internal (inner) and external (outer) walls.\n" +#~ "\n" +#~ "Use Inner/Outer for best overhangs. This is because the overhanging walls can adhere to a neighbouring perimeter while printing. However, this option results in slightly reduced surface quality as the external perimeter is deformed by being squashed to the internal perimeter.\n" +#~ "\n" +#~ "Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended against the Outer/Inner option in most cases.\n" +#~ "\n" +#~ "Use Outer/Inner for the same external wall quality and dimensional accuracy benefits of Inner/Outer/Inner option. However, the Z seams will appear less consistent as the first extrusion of a new layer starts on a visible surface." +#~ msgstr "" +#~ "Trình tự in của thành bên trong (trong) và bên ngoài (ngoài).\n" +#~ "\n" +#~ "Sử dụng Trong/Ngoài cho phần nhô tốt nhất. Điều này là do thành nhô có thể bám dính vào chu vi lân cận trong khi in. Tuy nhiên, tùy chọn này dẫn đến chất lượng bề mặt giảm một chút vì chu vi bên ngoài bị biến dạng do bị ép vào chu vi bên trong.\n" +#~ "\n" +#~ "Sử dụng Trong/Ngoài/Trong để có bề mặt ngoài hoàn thiện tốt nhất và độ chính xác kích thước vì thành ngoài được in không bị xáo trộn từ chu vi bên trong. Tuy nhiên, hiệu suất phần nhô sẽ giảm vì không có chu vi bên trong để in thành ngoài tựa vào. Tùy chọn này yêu cầu tối thiểu 3 thành để có hiệu quả vì nó in các thành bên trong từ chu vi thứ 3 trở đi trước, sau đó là chu vi bên ngoài và cuối cùng là chu vi bên trong đầu tiên. Tùy chọn này được khuyến nghị thay cho tùy chọn Ngoài/Trong trong hầu hết các trường hợp.\n" +#~ "\n" +#~ "Sử dụng Ngoài/Trong để có cùng chất lượng thành ngoài và độ chính xác kích thước như tùy chọn Trong/Ngoài/Trong. Tuy nhiên, các đường nối Z sẽ xuất hiện kém nhất quán hơn vì đùn đầu tiên của lớp mới bắt đầu trên bề mặt nhìn thấy." + +#~ msgid "This is the speed for the first layer except for solid infill sections." +#~ msgstr "Tốc độ của lớp đầu tiên ngoại trừ phần infill đặc." + +#~ msgid "This is the speed for solid infill parts of the first layer." +#~ msgstr "Tốc độ của phần infill đặc của lớp đầu tiên." + +#, no-c-format, no-boost-format +#~ msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to line width of sparse infill. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." +#~ msgstr "Vùng infill được mở rộng một chút để chồng lấp với thành để liên kết tốt hơn. Giá trị phần trăm tương đối với độ rộng đường của infill thưa. Đặt giá trị này thành ~10-15% để giảm thiểu đùn dư tiềm ẩn và tích tụ vật liệu dẫn đến bề mặt trên thô." + +#, no-c-format, no-boost-format +#~ msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to line width of sparse infill." +#~ msgstr "Vùng infill đặc trên được mở rộng một chút để chồng lấp với thành để liên kết tốt hơn và giảm thiểu sự xuất hiện của lỗ kim nơi infill trên gặp thành. Giá trị 25-30% là điểm khởi đầu tốt, giảm thiểu sự xuất hiện của lỗ kim. Giá trị phần trăm tương đối với độ rộng đường của infill thưa." + +#~ msgid "Interlocking depth of a segmented region. It will be ignored if \"mmu_segmented_region_max_width\" is zero or if \"mmu_segmented_region_interlocking_depth\" is bigger than \"mmu_segmented_region_max_width\". Zero disables this feature." +#~ msgstr "Độ sâu lồng ghép của vùng phân đoạn. Nó sẽ bị bỏ qua nếu \"mmu_segmented_region_max_width\" là không hoặc nếu \"mmu_segmented_region_interlocking_depth\" lớn hơn \"mmu_segmented_region_max_width\". Không vô hiệu hóa tính năng này." + +# AI Translated +#~ msgid "" +#~ "Reduce the height of top-surface perimeters to match the model edge height.\n" +#~ "Affects perimeters with a slope less than this angle (degrees).\n" +#~ "A reasonable value is 35. Set to 0 to disable." +#~ msgstr "" +#~ "Giảm chiều cao của chu vi bề mặt trên cho khớp với chiều cao mép của mô hình.\n" +#~ "Ảnh hưởng đến các chu vi có độ dốc nhỏ hơn góc này (độ).\n" +#~ "Giá trị hợp lý là 35. Đặt 0 để tắt." + +#~ msgid "Role base wipe speed" +#~ msgstr "Tốc độ lau dựa trên vai trò" + +#~ msgid "" +#~ "A draft shield is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft. It is usually needed only with open frame printers, i.e. without an enclosure.\n" +#~ "\n" +#~ "Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used.\n" +#~ "Note: With the draft shield active, the skirt will be printed at skirt distance from the object. Therefore, if brims are active it may intersect with them. To avoid this, increase the skirt distance value.\n" +#~ msgstr "" +#~ "Tấm chắn gió hữu ích để bảo vệ bản in ABS hoặc ASA khỏi cong vênh và tách khỏi bàn in do gió lùa. Nó thường chỉ cần với máy in khung mở, tức là không có vỏ bọc.\n" +#~ "\n" +#~ "Đã bật = viền cao bằng đối tượng được in cao nhất. Ngược lại 'Chiều cao viền' được sử dụng.\n" +#~ "Lưu ý: Với tấm chắn gió hoạt động, viền sẽ được in ở khoảng cách viền từ đối tượng. Do đó, nếu vành đang hoạt động nó có thể giao với chúng. Để tránh điều này, hãy tăng giá trị khoảng cách viền.\n" + +#~ msgid "" +#~ "The maximum print speed when purging in the wipe tower and printing the wipe tower sparse layers. When purging, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +#~ "\n" +#~ "When printing the sparse layers, if the internal perimeter speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +#~ "\n" +#~ "Increasing this speed may affect the tower's stability as well as increase the force with which the nozzle collides with any blobs that may have formed on the wipe tower.\n" +#~ "\n" +#~ "Before increasing this parameter beyond the default of 90 mm/s, make sure your printer can reliably bridge at the increased speeds and that ooze when tool changing is well controlled.\n" +#~ "\n" +#~ "For the wipe tower external perimeters the internal perimeter speed is used regardless of this setting." +#~ msgstr "" +#~ "Tốc độ in tối đa khi xả trong wipe tower và in các lớp thưa của wipe tower. Khi xả, nếu tốc độ infill thưa hoặc tốc độ được tính từ tốc độ thể tích tối đa của filament thấp hơn, tốc độ thấp nhất sẽ được sử dụng thay thế.\n" +#~ "\n" +#~ "Khi in các lớp thưa, nếu tốc độ chu vi bên trong hoặc tốc độ được tính từ tốc độ thể tích tối đa của filament thấp hơn, tốc độ thấp nhất sẽ được sử dụng thay thế.\n" +#~ "\n" +#~ "Tăng tốc độ này có thể ảnh hưởng đến độ ổn định của tower cũng như tăng lực mà đầu phun va chạm với bất kỳ cục nhỏ nào có thể đã hình thành trên wipe tower.\n" +#~ "\n" +#~ "Trước khi tăng tham số này vượt quá mặc định 90 mm/s, hãy đảm bảo máy in của bạn có thể nối cầu đáng tin cậy ở tốc độ tăng và chảy nhựa khi thay công cụ được kiểm soát tốt.\n" +#~ "\n" +#~ "Đối với chu vi bên ngoài wipe tower, tốc độ chu vi bên trong được sử dụng bất kể cài đặt này." + +#~ msgid "" +#~ "Wipe tower outer wall type.\n" +#~ "1. Rectangle: The default wall type, a rectangle with fixed width and height.\n" +#~ "2. Cone: A cone with a fillet at the bottom to help stabilize the wipe tower.\n" +#~ "3. Rib: Adds four ribs to the tower wall for enhanced stability." +#~ msgstr "" +#~ "Loại thành ngoài wipe tower.\n" +#~ "1. Hình chữ nhật: Loại thành mặc định, hình chữ nhật có độ rộng và chiều cao cố định.\n" +#~ "2. Nón: Một nón có bo tròn ở dưới để giúp ổn định wipe tower.\n" +#~ "3. Gân: Thêm bốn gân vào thành tower để tăng cường độ ổn định." + +#~ msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker or narrower than they normally would be. The spacing is adjusted automatically." +#~ msgstr "Lưu lượng bổ sung được sử dụng cho các đường xả trên wipe tower. Điều này làm cho các đường xả dày hơn hoặc hẹp hơn so với bình thường. Khoảng cách được điều chỉnh tự động." + +#~ msgid "" +#~ "Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. Higher values remove more and longer walls.\n" +#~ "\n" +#~ "NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the Advanced settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." +#~ msgstr "" +#~ "Điều chỉnh giá trị này để ngăn thành ngắn, không đóng được in, có thể tăng thời gian in. Giá trị cao hơn loại bỏ nhiều thành và dài hơn.\n" +#~ "\n" +#~ "LƯU Ý: Bề mặt dưới và trên sẽ không bị ảnh hưởng bởi giá trị này để ngăn khe nhìn thấy ở bên ngoài model. Điều chỉnh 'Ngưỡng một thành' trong cài đặt Nâng cao bên dưới để điều chỉnh độ nhạy của những gì được coi là bề mặt trên. 'Ngưỡng một thành' chỉ hiển thị nếu cài đặt này được đặt trên giá trị mặc định 0.5, hoặc nếu bề mặt trên thành đơn được bật." + # AI Translated #, boost-format #~ msgid "Split into %1% part" diff --git a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po index 9a6dbd8be5..36f69e8339 100644 --- a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po +++ b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Slic3rPE\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-10-13 09:55-0300\n" +"POT-Creation-Date: 2026-10-14 10:04-0300\n" "PO-Revision-Date: 2026-06-11 12:37-0300\n" "Last-Translator: Handle \n" "Language-Team: \n" @@ -2352,6 +2352,66 @@ msgstr "网络插件限制" msgid "Privacy Policy Update" msgstr "隐私协议更新" +# AI Translated +msgid "All your filament presets are available on the printers they were made for." +msgstr "您所有的耗材丝预设都可在其对应的打印机上使用。" + +# AI Translated +msgid "Migrate Filament Presets" +msgstr "迁移耗材丝预设" + +# AI Translated +msgid "" +"OrcaSlicer 2.5.0 restructured many system filament presets to fix incorrect profiles and prepare for future features. As a result, the presets below no longer show on some printers they were made for. Sorry for the trouble; this is a one-time fix.\n" +"\n" +"Add those printers back to your presets now? Your presets are backed up first. You can also do this later from Help > Migrate Filament Presets." +msgstr "" +"OrcaSlicer 2.5.0 重构了许多系统耗材丝预设,以修复不正确的配置文件并为未来功能做准备。因此,下列预设不再显示在部分其原本适用的打印机上。给您带来不便,我们深表歉意;这是一次性修复。\n" +"\n" +"现在将这些打印机重新添加到您的预设中吗?操作前会先备份您的预设。您也可以稍后通过 帮助 > 迁移耗材丝预设 执行此操作。" + +# AI Translated +#, boost-format +msgid "%1% (based on %2%)" +msgstr "%1% (基于 %2%)" + +msgid "Don't remind me again" +msgstr "不再提醒" + +# AI Translated +msgid "Your presets could not be backed up, so they were not migrated." +msgstr "无法备份您的预设,因此未进行迁移。" + +# AI Translated +msgid "The user presets folder could not be locked, so nothing was migrated. Another OrcaSlicer instance may be saving presets; try again later from Help > Migrate Filament Presets." +msgstr "无法锁定用户预设文件夹,因此未迁移任何内容。可能有另一个 OrcaSlicer 实例正在保存预设;请稍后通过 帮助 > 迁移耗材丝预设 重试。" + +# AI Translated +#, boost-format +msgid "" +"Your filament presets could not be migrated. A backup of your presets was saved to:\n" +"%1%" +msgstr "" +"无法迁移您的耗材丝预设。预设的备份已保存到:\n" +"%1%" + +# AI Translated +#, boost-format +msgid "" +"Your filament presets were migrated. Select them again in the filament list where you used them.\n" +"\n" +"A backup of your presets was saved to:\n" +"%1%" +msgstr "" +"您的耗材丝预设已迁移。请在原来使用它们的耗材丝列表中重新选择。\n" +"\n" +"预设的备份已保存到:\n" +"%1%" + +# AI Translated +msgid "These presets could not be migrated:" +msgstr "无法迁移这些预设:" + #, c-format, boost-format msgid "your Orca Cloud profile (user ID: \"%s\")" msgstr "您的 Orca Cloud 配置文件(用户 ID:“%s”)" @@ -3064,6 +3124,62 @@ msgstr "(丢失的颜色)" msgid "Center" msgstr "居中" +# AI Translated +msgid "Distribute left-right" +msgstr "左右均匀分布" + +# AI Translated +msgid "Distribute front-back" +msgstr "前后均匀分布" + +# AI Translated +msgid "Distribute top-bottom" +msgstr "上下均匀分布" + +# AI Translated +msgid "Align left" +msgstr "左对齐" + +# AI Translated +msgid "Align left-right center" +msgstr "左右居中对齐" + +# AI Translated +msgid "Align right" +msgstr "右对齐" + +# AI Translated +msgid "Align front" +msgstr "前对齐" + +# AI Translated +msgid "Align front-back center" +msgstr "前后居中对齐" + +# AI Translated +msgid "Align back" +msgstr "后对齐" + +# AI Translated +msgid "Align bottom" +msgstr "底对齐" + +# AI Translated +msgid "Align top-bottom center" +msgstr "上下居中对齐" + +# AI Translated +msgid "Align top" +msgstr "顶对齐" + +# AI Translated +msgid "Align/Distribute" +msgstr "对齐/分布" + +# AI Translated +msgid "Align and distribute objects" +msgstr "对齐和分布对象" + msgid "Drop" msgstr "下降" @@ -6496,6 +6612,10 @@ msgstr "配置向导" msgid "Show Configuration Folder" msgstr "打开配置文件夹" +# AI Translated +msgid "Bring back filament presets that a profile update removed from printers they were made for" +msgstr "恢复因配置文件更新而从其原本适用的打印机上移除的耗材丝预设" + msgid "Troubleshoot Center" msgstr "故障排查中心" @@ -13725,6 +13845,18 @@ msgstr "与墙存在多个交点,仅使用了其中一个 (%1%)" msgid "a perimeter is fully inside a modifier, the modifier was not applied to it (%1%)" msgstr "某条墙完全位于修改器内部,修改器未应用于它 (%1%)" +# AI Translated +#. TRN: %1% is the modifier type "Seam Blocked" as in the menu, %2% the modifier name, %3% the object name. +#, boost-format +msgid "%1% modifier \"%2%\" of \"%3%\" covers an entire perimeter" +msgstr "“%3%”的%1%修改器“%2%”覆盖了整条墙" + +# AI Translated +#. TRN: %1% is the modifier type "Seam Blocked" as in the menu, %2% the modifier name, %3% the object name, %4% the number of modifiers. +#, boost-format +msgid "%1% modifier \"%2%\" of \"%3%\" (%4% in total) covers an entire perimeter" +msgstr "“%3%”的%1%修改器“%2%”(共 %4% 个)覆盖了整条墙" + # AI Translated #, boost-format msgid "modifier \"%1%\" of \"%2%\" had no effect on the seam (it might not reach the centerline of the printed perimeter)" @@ -14691,8 +14823,9 @@ msgstr "" "\n" "此选项与“在填充上方增加第二层内部桥接”选项结合使用时效果尤佳,可在挤出实心填充之前进一步改善桥接。" +# AI Translated msgid "Bridge flow ratio" -msgstr "桥接流量" +msgstr "桥接流量比例" msgid "" "This value governs the thickness of the external (visible) bridge layer.\n" @@ -14707,21 +14840,23 @@ msgstr "" "\n" "实际使用的桥接流量是将此值乘以耗材流量比,以及(如已设置)对象的流量比计算得出的。" +# AI Translated msgid "" "Line width of the Bridge. If expressed as a %, it will be computed over the nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" -"If set to 0, the line width will match the Internal solid infill width." +"If set to 0, the line width will match the Internal solid infill width, or the nozzle diameter for thick bridges." msgstr "" "桥接线的线宽。如果以百分比表示,将根据喷嘴直径计算。\n" -"建议与较高的桥接密度或桥接流量比配合使用。\n" +"建议与较高的桥接密度或桥接流量比例配合使用。\n" "\n" "最大值为 100% 或喷嘴直径。\n" -"如果设置为 0,线宽将与内部实心填充宽度一致。" +"如果设置为 0,线宽将与内部实心填充宽度一致,厚桥则与喷嘴直径一致。" +# AI Translated msgid "Internal bridge flow ratio" -msgstr "内部搭桥流量比例" +msgstr "内部桥接流量比例" msgid "" "This value governs the thickness of the internal bridge layer. This is the first layer over sparse infill so increasing it may increase strength and upper layer quality.\n" @@ -14952,6 +15087,7 @@ msgstr "启用此选项将降低不同悬垂程度的走线的打印速度" msgid "Slow down for curled perimeters" msgstr "翘边降速" +# AI Translated #, no-c-format, no-boost-format msgid "" "Enable this option to slow down printing in areas where perimeters may have curled upwards.\n" @@ -14967,34 +15103,35 @@ msgid "" "3. If artifacts still appear, enable Extrusion Rate Smoothing (ERS) to further smooth the flow transitions.\n" "\n" "Note: When this option is enabled, overhang perimeters are treated like overhangs, meaning the overhang speed is applied even if the overhanging perimeter is part of a bridge.\n" -"For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 100% overhang speed will be applied." +"For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 75% overhang speed will be applied, limited by the bridge speed." msgstr "" "启用此选项可在墙壁可能向上翘曲的区域降低打印速度。\n" "例如,在打印诸如 Benchy 船头这类尖角处的悬垂时,会施加额外的减速,从而减少在多层中逐渐累积的翘曲。\n" "\n" -"通常建议开启此选项,除非您的打印机冷却足够强劲,或打印速度足够慢,以至于不会发生墙壁翘曲。\n" +"通常建议开启此选项,除非您的打印机冷却足够强劲,或打印速度足够慢,以至于不会发生墙壁翘曲。 \n" "如果以较高的外墙速度打印,此参数在减速时可能会引入墙面瑕疵,因为打印速度的差异可能过大,导致挤出机无法跟上所需的流量变化。\n" "这些瑕疵的根本原因很可能是 Pressure Advance (PA) 调校略有偏差,尤其是在搭配较长的 PA 平滑时间时。\n" "\n" "启用此选项时的建议:\n" "1. 将 Pressure Advance 的平滑时间降低到 0.015 - 0.02,使挤出机能够快速响应速度变化。\n" "2. 提高最低打印速度,以限制减速的幅度并减小快慢段之间的差异。\n" -"3. 如果仍出现瑕疵,启用挤出速率平滑 (ERS) 以进一步平滑流量过渡。\n" +"3. 如果仍出现瑕疵,启用平滑挤出率 (ERS) 以进一步平滑流量过渡。\n" "\n" "注意:启用此选项后,悬垂墙壁会被当作悬垂处理,这意味着即使悬垂墙壁是桥接的一部分,也会应用悬垂速度。\n" -"例如,当墙壁 100% 悬垂、下方没有墙壁支撑时,将应用 100% 悬垂速度。" +"例如,当墙壁 100% 悬垂、下方没有墙壁支撑时,将应用 75% 的悬垂速度,并受桥接速度限制。" msgid "mm/s or %" msgstr "mm/s 或 %" +# AI Translated msgid "" "Speed of the externally visible bridge extrusions.\n" "\n" -"In addition, if Slow down for curled perimeters is disabled or Classic overhang mode is enabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." +"In addition, if Slow down for curled perimeters is disabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." msgstr "" "外部可见桥接挤出的速度。\n" "\n" -"此外,如果禁用翘曲周长减速或启用经典悬垂模式,它将是支撑少于13%的悬垂墙的打印速度,无论它们是桥接还是悬垂的一部分。" +"此外,如果禁用翘边降速,它将是支撑少于13%的悬垂墙的打印速度,无论它们是桥接还是悬垂的一部分。" msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%." msgstr "内部桥接的速度。如果该值以百分比表示,将基于桥接速度计算。默认值为150%。" @@ -15556,8 +15693,9 @@ msgstr "外墙的打印速度。它通常使用比内壁速度慢的速度,以 msgid "Small perimeters" msgstr "微小部位" -msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above. Set to zero for auto." -msgstr "此设置将影响半径小于等于small_perimeter_threshold(通常是孔洞)的围墙的速度。如果以百分比表示(例如:80%),则将根据上面的外壁速度设置进行计算。设置为零时为自动。" +# AI Translated +msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above." +msgstr "此设置将影响半径小于等于 small_perimeter_threshold 的墙(通常是孔洞)的速度。如果以百分比表示(例如:80%),则将根据上面的外墙速度设置进行计算。" msgid "Small perimeters threshold" msgstr "微小部位周长阈值" @@ -15570,8 +15708,8 @@ msgid "Small support perimeters" msgstr "支撑微小部位" # AI Translated -msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above. Set to zero for auto." -msgstr "与“微小部位”相同,但用于支撑。此单独设置将影响面积 <= `small_support_perimeter_threshold` 的支撑速度。如果以百分比表示(例如:80%),将基于上方的支撑或支撑接触面速度设置进行计算。设为零表示自动。" +msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above." +msgstr "与“微小部位”相同,但用于支撑。此单独设置将影响面积 <= `small_support_perimeter_threshold` 的支撑速度。如果以百分比表示(例如:80%),将基于上方的支撑或支撑面速度设置进行计算。" # AI Translated msgid "Small support perimeters threshold" @@ -15584,22 +15722,23 @@ msgstr "此项设置支撑微小部位周长的阈值。默认阈值为 0mm。" msgid "Walls printing order" msgstr "墙顺序" +# AI Translated msgid "" "Print sequence of the internal (inner) and external (outer) walls.\n" "\n" "Use Inner/Outer for best overhangs. This is because the overhanging walls can adhere to a neighbouring perimeter while printing. However, this option results in slightly reduced surface quality as the external perimeter is deformed by being squashed to the internal perimeter.\n" "\n" -"Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended against the Outer/Inner option in most cases.\n" +"Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended over the Outer/Inner option in most cases.\n" "\n" "Use Outer/Inner for the same external wall quality and dimensional accuracy benefits of Inner/Outer/Inner option. However, the Z seams will appear less consistent as the first extrusion of a new layer starts on a visible surface." msgstr "" "内墙和外墙的打印顺序。\n" "\n" -"使用内墙/外墙以获得最佳悬垂效果。这是因为在打印时,悬垂的墙可以粘附到相邻的围墙上。但是,这个选项会导致外墙的表面质量稍微降低,因为外墙被内墙挤压。\n" +"使用内墙/外墙以获得最佳悬垂效果。这是因为在打印时,悬垂的墙可以粘附到相邻的墙上。但是,这个选项会导致外墙的表面质量稍微降低,因为外墙被内墙挤压。\n" "\n" -"使用内墙/外墙/内墙以获得最佳的外部表面质量和尺寸精度,因为外墙不会受内墙的影响但是,悬垂性能会降低,因为没有内墙来支撑打印外墙。此选项要求至少3层墙壁才能生效,因为它首先从第3个墙壁开始打印内墙,然后是外墙,最后是第一个内墙。在大多数情况下,此选项建议使用而不是外/内选项。\n" +"使用内墙/外墙/内墙以获得最佳的外部表面质量和尺寸精度,因为外墙不会受内墙的影响。但是,悬垂性能会降低,因为没有内墙来支撑打印外墙。此选项要求至少3层墙壁才能生效,因为它首先从第3个墙壁开始打印内墙,然后是外墙,最后是第一个内墙。在大多数情况下,建议使用此选项而不是外墙/内墙选项。\n" "\n" -"使用外/内以获得与内/外/内选项相同的外部墙质量和尺寸精度优势。但是,由于新层的第一次挤出是在可见表面上开始的,因此z缝隙看起来不那么一致。" +"使用外墙/内墙以获得与内墙/外墙/内墙选项相同的外墙质量和尺寸精度优势。但是,由于新层的第一次挤出是在可见表面上开始的,因此 Z 接缝看起来不那么一致。" msgid "Inner/Outer" msgstr "内墙/外墙" @@ -16546,14 +16685,16 @@ msgstr "首层层高" msgid "Height of the first layer. Making the first layer height thicker can improve build plate adhesion." msgstr "首层层高。适当加厚首层层高,将有助于增加与热床之间的粘接力。" -msgid "This is the speed for the first layer except for solid infill sections." -msgstr "首层除实心填充之外的其他部分的打印速度" +# AI Translated +msgid "This is the speed for the walls and brim of the first layer." +msgstr "首层的墙和 Brim 的打印速度。" msgid "First layer infill" msgstr "首层填充" -msgid "This is the speed for solid infill parts of the first layer." -msgstr "首层实心填充的打印速度" +# AI Translated +msgid "This is the speed for the first layer except for walls and brim, such as infill, gap fill and support." +msgstr "首层中除墙和 Brim 以外部分的打印速度,例如填充、缝隙填充和支撑。" msgid "First layer travel speed" msgstr "首层空驶速度" @@ -17243,16 +17384,18 @@ msgstr "内部稀疏填充的线宽。如果以%表示,它将基于喷嘴直 msgid "Infill/wall overlap" msgstr "填充/墙 重叠" +# AI Translated #, no-c-format, no-boost-format -msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to line width of sparse infill. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." -msgstr "填充区域略微扩大以与墙壁重叠,以获得更好的粘合。百分比值相对于稀疏填充的线宽。将此值设置为约10-15%,以最小化潜在的过挤出和材料积累,从而导致顶部表面粗糙。" +msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to the inner wall line width. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." +msgstr "填充区域略微扩大以与墙壁重叠,以获得更好的粘合。百分比值相对于内墙线宽。将此值设置为约10-15%,以最小化潜在的过挤出和材料积累,从而导致顶部表面粗糙。" msgid "Top/Bottom solid infill/wall overlap" msgstr "顶/底部实心填充/墙重叠率" +# AI Translated #, no-c-format, no-boost-format -msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to line width of sparse infill." -msgstr "顶部实心填充区域略微扩大,以便与墙壁重叠,以获得更好的粘合,并减少顶部填充与墙壁相接处的小孔出现。25-30%的值是一个很好的起点,可以减少小孔的出现。百分比值相对于稀疏填充的线宽" +msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to the inner wall line width." +msgstr "顶部实心填充区域略微扩大,以便与墙壁重叠,以获得更好的粘合,并减少顶部填充与墙壁相接处的小孔出现。25-30%的值是一个很好的起点,可以减少小孔的出现。百分比值相对于内墙线宽。" msgid "This is the speed for internal sparse infill." msgstr "内部稀疏填充的打印速度" @@ -17278,8 +17421,9 @@ msgstr "分段区域的最大宽度。将其设置为零会禁用此功能。" msgid "Interlocking depth of a segmented region" msgstr "分割区域的交错深度" -msgid "Interlocking depth of a segmented region. It will be ignored if \"mmu_segmented_region_max_width\" is zero or if \"mmu_segmented_region_interlocking_depth\" is bigger than \"mmu_segmented_region_max_width\". Zero disables this feature." -msgstr "分割区域的交错深度。如果\"mmu_segmented_region_max_width\"为零或\"mmu_segmented_region_interlocking_depth\"大于\"mmu_segmented_region_max_width\",则将被忽略。零将禁用此功能。" +# AI Translated +msgid "Interlocking depth of a segmented region. On every other layer, the segmented region is limited to this depth. It will be ignored if \"interlocking_beam\" is enabled. Zero disables this feature." +msgstr "分割区域的交错深度。每隔一层,分割区域将被限制在此深度内。如果启用了 \"interlocking_beam\",则将被忽略。零将禁用此功能。" msgid "Use beam interlocking" msgstr "启用互锁梁" @@ -17381,13 +17525,14 @@ msgstr "启用 Z 层轮廓(也称 Z 层抗锯齿)。" msgid "Minimize wall height angle" msgstr "最小化墙高角度" +# AI Translated msgid "" "Reduce the height of top-surface perimeters to match the model edge height.\n" -"Affects perimeters with a slope less than this angle (degrees).\n" +"Affects perimeters with a slope greater than this angle (degrees).\n" "A reasonable value is 35. Set to 0 to disable." msgstr "" "降低顶面墙壁的高度,使其与模型边缘高度相匹配。\n" -"影响坡度小于此角度(度)的墙壁。\n" +"影响坡度大于此角度(度)的墙壁。\n" "合理的取值为 35。设置为 0 以禁用。" msgid "Don't alternate fill direction" @@ -18356,8 +18501,9 @@ msgstr "应用斜拼于内墙" msgid "Use scarf joint for inner walls as well." msgstr "同时应用斜拼接缝于内墙" -msgid "Role base wipe speed" -msgstr "自动擦拭速度" +# AI Translated +msgid "Role based wipe speed" +msgstr "基于挤出类型的擦拭速度" msgid "The wipe speed is determined by the speed of the current extrusion role. e.g. if a wipe action is executed immediately following an outer wall extrusion, the speed of the outer wall extrusion will be utilized for the wipe action." msgstr "擦拭速度由当前挤出类型的速度决定。例如,如果擦拭动作紧随外墙,擦拭速度将使用外墙的速度。" @@ -18446,16 +18592,15 @@ msgstr "在首层之后,将环形裙边或隔风罩限制为单层墙。这在 msgid "Draft shield" msgstr "风挡" +# AI Translated msgid "" "A draft shield is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft. It is usually needed only with open frame printers, i.e. without an enclosure.\n" "\n" -"Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used.\n" -"Note: With the draft shield active, the skirt will be printed at skirt distance from the object. Therefore, if brims are active it may intersect with them. To avoid this, increase the skirt distance value.\n" +"Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used." msgstr "" -"风挡对于保护ABS或ASA打印件免受风力的影响,防止翘曲和从打印床上脱落是非常有用的。通常只有在没有封箱的开放式打印机上才需要。\n" +"风挡对于保护ABS或ASA打印件免受风力的影响,防止翘曲和从热床上脱落是非常有用的。通常只有在没有封箱的开放式打印机上才需要。\n" "\n" -"启用 = 裙边的高度与最高的打印对象一样高。否则的话会使用'裙边高度'。\n" -"注意:启用风挡后,裙边将会在距离模型'裙边距离'的地方打印。因此,如果brim启用,可能会与其相交。为了避免这种情况,增加裙边距离值。\n" +"启用 = 裙边的高度与最高的打印对象一样高。否则的话会使用'裙边高度'。" msgid "Enabled" msgstr "启用" @@ -19589,40 +19734,42 @@ msgstr "塔锥体顶角的角度,用于稳定擦拭塔。角度越大,底座 msgid "Maximum wipe tower print speed" msgstr "擦拭塔最大打印速度" +# AI Translated msgid "" "The maximum print speed when purging in the wipe tower and printing the wipe tower sparse layers. When purging, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" "\n" -"When printing the sparse layers, if the internal perimeter speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +"When printing the sparse layers, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" "\n" "Increasing this speed may affect the tower's stability as well as increase the force with which the nozzle collides with any blobs that may have formed on the wipe tower.\n" "\n" "Before increasing this parameter beyond the default of 90 mm/s, make sure your printer can reliably bridge at the increased speeds and that ooze when tool changing is well controlled.\n" "\n" -"For the wipe tower external perimeters the internal perimeter speed is used regardless of this setting." +"For the wipe tower external perimeters the internal perimeter speed is used, also limited by this setting." msgstr "" -"擦拭塔冲刷和稀疏层的最大打印速度。当冲刷时,如果稀疏填充速度或从耗材最大体积速度计算出的速度较低,则使用最低速度。\n" +"擦拭塔冲刷和稀疏层的最大打印速度。当冲刷时,如果稀疏填充速度或从耗材最大体积流量计算出的速度较低,则使用最低速度。\n" "\n" -"当打印稀疏层时,如果内墙速度或从耗材最大体积流量计算出的速度较低,则使用最低速度。\n" +"当打印稀疏层时,如果稀疏填充速度或从耗材最大体积流量计算出的速度较低,则使用最低速度。\n" "\n" "增加此速度可能会影响塔的稳定性,同时增加喷嘴与擦拭塔上可能形成的任何斑点碰撞的力。\n" "\n" -"在将此参数增加到默认值90mm/sec之外之前,请确保您的打印机可以可靠地在增加的速度下桥接,并且换料时的滴漏得到了很好的控制。\n" +"在将此参数增加到默认值 90 mm/s 之外之前,请确保您的打印机可以可靠地在增加的速度下桥接,并且换料时的 Ooze 预防做得很好。\n" "\n" -"对于擦拭塔外墙,无论此设置如何,都使用内墙速度。" +"对于擦拭塔外墙,使用内墙速度,同时也受此设置限制。" msgid "Wall type" msgstr "墙类型" +# AI Translated msgid "" "Wipe tower outer wall type.\n" -"1. Rectangle: The default wall type, a rectangle with fixed width and height.\n" +"1. Rectangle: A rectangle with fixed width and height.\n" "2. Cone: A cone with a fillet at the bottom to help stabilize the wipe tower.\n" -"3. Rib: Adds four ribs to the tower wall for enhanced stability." +"3. Rib: The default wall type, which adds four ribs to the tower wall for enhanced stability." msgstr "" "擦拭塔外墙类型。\n" -"1. 矩形:默认墙类型,具有固定宽度和高度的矩形。\n" -"2. 圆锥:底部有圆角的圆锥,有助于稳定擦拭塔。\n" -"3. 加强筋:在塔壁上增加四个加强筋以提高稳定性。" +"1. 矩形:具有固定宽度和高度的矩形。\n" +"2. 圆锥体:底部有圆角的圆锥,有助于稳定擦拭塔。\n" +"3. 肋条:默认墙类型,在塔壁上增加四条肋条以提高稳定性。" msgid "Rectangle" msgstr "矩形" @@ -19714,8 +19861,9 @@ msgstr "擦拭塔上冲刷线的间距" msgid "Extra flow for purging" msgstr "额外冲刷量" -msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker or narrower than they normally would be. The spacing is adjusted automatically." -msgstr "用于擦拭塔冲刷线的额外流量。这使冲刷线比正常情况下更厚或更窄。间距会自动调整。" +# AI Translated +msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker than they normally would be. The spacing is adjusted automatically." +msgstr "用于擦拭塔冲刷线的额外流量。这使冲刷线比正常情况下更厚。间距会自动调整。" msgid "Idle temperature" msgstr "待机温度" @@ -19837,14 +19985,15 @@ msgstr "" msgid "Minimum wall length" msgstr "最短墙长度" +# AI Translated msgid "" -"Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. Higher values remove more and longer walls.\n" +"Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. The value is a multiple of the wall width. Higher values remove more and longer walls.\n" "\n" -"NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the Advanced settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." +"NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the 'Walls and surfaces' settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." msgstr "" -"调整这个值以略过短的、未闭合的墙,因为这些墙可能会增加打印耗时。设置较高的值将移除更多和更长的墙。\n" +"调整这个值以略过短的、未闭合的墙,因为这些墙可能会增加打印耗时。该值是墙宽的倍数。设置较高的值将移除更多和更长的墙。\n" "\n" -"请注意:底面和顶面将不受此值的影响,原因是防止模型外部出现可见缝隙。调整下方高级设置中的 “单层墙阈值” 来调整判断顶面的灵敏度。只有当此设置高于默认值的0.5、或启用了单层顶面时,“单层墙阈值”才会显示。" +"请注意:底面和顶面将不受此值的影响,原因是防止模型外部出现可见缝隙。调整下方“墙壁和表面”设置中的“单层墙阈值”来调整判断顶面的灵敏度。只有当此设置高于默认值的0.5、或启用了单层顶面时,“单层墙阈值”才会显示。" msgid "Maximum wall resolution" msgstr "最大墙体分辨率" @@ -23787,9 +23936,6 @@ msgstr "启用智能耗材分配:将一种耗材分配给多个喷嘴以最大 msgid "File Saving" msgstr "文件保存" -msgid "Don't remind me again" -msgstr "不再提醒" - msgid "No further pop-up will appear. You can reopen it in 'Preferences'" msgstr "将不再弹出任何窗口。您可以在 “首选项” 中重新打开它" @@ -34244,6 +34390,168 @@ msgstr "" "避免翘曲\n" "您知道吗?打印ABS这类易翘曲材料时,适当提高热床温度可以降低翘曲的概率。" +#~ msgid "" +#~ "Line width of the Bridge. If expressed as a %, it will be computed over the nozzle diameter.\n" +#~ "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" +#~ "\n" +#~ "The maximum value is 100% or the nozzle diameter.\n" +#~ "If set to 0, the line width will match the Internal solid infill width." +#~ msgstr "" +#~ "桥接线的线宽。如果以百分比表示,将根据喷嘴直径计算。\n" +#~ "建议与较高的桥接密度或桥接流量比配合使用。\n" +#~ "\n" +#~ "最大值为 100% 或喷嘴直径。\n" +#~ "如果设置为 0,线宽将与内部实心填充宽度一致。" + +#, no-c-format, no-boost-format +#~ msgid "" +#~ "Enable this option to slow down printing in areas where perimeters may have curled upwards.\n" +#~ "For example, additional slowdown will be applied when printing overhangs on sharp corners like the front of the Benchy hull, reducing curling which compounds over multiple layers.\n" +#~ "\n" +#~ "It is generally recommended to have this option switched on unless your printer cooling is powerful enough or the print speed is slow enough that perimeter curling does not happen. \n" +#~ "If printing with a high external perimeter speed, this parameter may introduce wall artifacts when slowing down, due to the potentially large variance in print speeds causing the extruder to be unable to keep up with the requested flow change.\n" +#~ "Root cause of these artifacts is most likely PA tuning being slightly off, especially when combined with a high PA smooth time.\n" +#~ "\n" +#~ "Recommendations when enabling this option:\n" +#~ "1. Reduce Pressure Advance smooth time to 0.015 - 0.02 so the extruder reacts quickly to the speed changes.\n" +#~ "2. Increase the minimum print speeds to limit the magnitude of the slowdown and reduce the variance between fast and slow segments.\n" +#~ "3. If artifacts still appear, enable Extrusion Rate Smoothing (ERS) to further smooth the flow transitions.\n" +#~ "\n" +#~ "Note: When this option is enabled, overhang perimeters are treated like overhangs, meaning the overhang speed is applied even if the overhanging perimeter is part of a bridge.\n" +#~ "For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 100% overhang speed will be applied." +#~ msgstr "" +#~ "启用此选项可在墙壁可能向上翘曲的区域降低打印速度。\n" +#~ "例如,在打印诸如 Benchy 船头这类尖角处的悬垂时,会施加额外的减速,从而减少在多层中逐渐累积的翘曲。\n" +#~ "\n" +#~ "通常建议开启此选项,除非您的打印机冷却足够强劲,或打印速度足够慢,以至于不会发生墙壁翘曲。\n" +#~ "如果以较高的外墙速度打印,此参数在减速时可能会引入墙面瑕疵,因为打印速度的差异可能过大,导致挤出机无法跟上所需的流量变化。\n" +#~ "这些瑕疵的根本原因很可能是 Pressure Advance (PA) 调校略有偏差,尤其是在搭配较长的 PA 平滑时间时。\n" +#~ "\n" +#~ "启用此选项时的建议:\n" +#~ "1. 将 Pressure Advance 的平滑时间降低到 0.015 - 0.02,使挤出机能够快速响应速度变化。\n" +#~ "2. 提高最低打印速度,以限制减速的幅度并减小快慢段之间的差异。\n" +#~ "3. 如果仍出现瑕疵,启用挤出速率平滑 (ERS) 以进一步平滑流量过渡。\n" +#~ "\n" +#~ "注意:启用此选项后,悬垂墙壁会被当作悬垂处理,这意味着即使悬垂墙壁是桥接的一部分,也会应用悬垂速度。\n" +#~ "例如,当墙壁 100% 悬垂、下方没有墙壁支撑时,将应用 100% 悬垂速度。" + +#~ msgid "" +#~ "Speed of the externally visible bridge extrusions.\n" +#~ "\n" +#~ "In addition, if Slow down for curled perimeters is disabled or Classic overhang mode is enabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." +#~ msgstr "" +#~ "外部可见桥接挤出的速度。\n" +#~ "\n" +#~ "此外,如果禁用翘曲周长减速或启用经典悬垂模式,它将是支撑少于13%的悬垂墙的打印速度,无论它们是桥接还是悬垂的一部分。" + +#~ msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above. Set to zero for auto." +#~ msgstr "此设置将影响半径小于等于small_perimeter_threshold(通常是孔洞)的围墙的速度。如果以百分比表示(例如:80%),则将根据上面的外壁速度设置进行计算。设置为零时为自动。" + +# AI Translated +#~ msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above. Set to zero for auto." +#~ msgstr "与“微小部位”相同,但用于支撑。此单独设置将影响面积 <= `small_support_perimeter_threshold` 的支撑速度。如果以百分比表示(例如:80%),将基于上方的支撑或支撑接触面速度设置进行计算。设为零表示自动。" + +#~ msgid "" +#~ "Print sequence of the internal (inner) and external (outer) walls.\n" +#~ "\n" +#~ "Use Inner/Outer for best overhangs. This is because the overhanging walls can adhere to a neighbouring perimeter while printing. However, this option results in slightly reduced surface quality as the external perimeter is deformed by being squashed to the internal perimeter.\n" +#~ "\n" +#~ "Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended against the Outer/Inner option in most cases.\n" +#~ "\n" +#~ "Use Outer/Inner for the same external wall quality and dimensional accuracy benefits of Inner/Outer/Inner option. However, the Z seams will appear less consistent as the first extrusion of a new layer starts on a visible surface." +#~ msgstr "" +#~ "内墙和外墙的打印顺序。\n" +#~ "\n" +#~ "使用内墙/外墙以获得最佳悬垂效果。这是因为在打印时,悬垂的墙可以粘附到相邻的围墙上。但是,这个选项会导致外墙的表面质量稍微降低,因为外墙被内墙挤压。\n" +#~ "\n" +#~ "使用内墙/外墙/内墙以获得最佳的外部表面质量和尺寸精度,因为外墙不会受内墙的影响但是,悬垂性能会降低,因为没有内墙来支撑打印外墙。此选项要求至少3层墙壁才能生效,因为它首先从第3个墙壁开始打印内墙,然后是外墙,最后是第一个内墙。在大多数情况下,此选项建议使用而不是外/内选项。\n" +#~ "\n" +#~ "使用外/内以获得与内/外/内选项相同的外部墙质量和尺寸精度优势。但是,由于新层的第一次挤出是在可见表面上开始的,因此z缝隙看起来不那么一致。" + +#~ msgid "This is the speed for the first layer except for solid infill sections." +#~ msgstr "首层除实心填充之外的其他部分的打印速度" + +#~ msgid "This is the speed for solid infill parts of the first layer." +#~ msgstr "首层实心填充的打印速度" + +#, no-c-format, no-boost-format +#~ msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to line width of sparse infill. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." +#~ msgstr "填充区域略微扩大以与墙壁重叠,以获得更好的粘合。百分比值相对于稀疏填充的线宽。将此值设置为约10-15%,以最小化潜在的过挤出和材料积累,从而导致顶部表面粗糙。" + +#, no-c-format, no-boost-format +#~ msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to line width of sparse infill." +#~ msgstr "顶部实心填充区域略微扩大,以便与墙壁重叠,以获得更好的粘合,并减少顶部填充与墙壁相接处的小孔出现。25-30%的值是一个很好的起点,可以减少小孔的出现。百分比值相对于稀疏填充的线宽" + +#~ msgid "Interlocking depth of a segmented region. It will be ignored if \"mmu_segmented_region_max_width\" is zero or if \"mmu_segmented_region_interlocking_depth\" is bigger than \"mmu_segmented_region_max_width\". Zero disables this feature." +#~ msgstr "分割区域的交错深度。如果\"mmu_segmented_region_max_width\"为零或\"mmu_segmented_region_interlocking_depth\"大于\"mmu_segmented_region_max_width\",则将被忽略。零将禁用此功能。" + +#~ msgid "" +#~ "Reduce the height of top-surface perimeters to match the model edge height.\n" +#~ "Affects perimeters with a slope less than this angle (degrees).\n" +#~ "A reasonable value is 35. Set to 0 to disable." +#~ msgstr "" +#~ "降低顶面墙壁的高度,使其与模型边缘高度相匹配。\n" +#~ "影响坡度小于此角度(度)的墙壁。\n" +#~ "合理的取值为 35。设置为 0 以禁用。" + +#~ msgid "Role base wipe speed" +#~ msgstr "自动擦拭速度" + +#~ msgid "" +#~ "A draft shield is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft. It is usually needed only with open frame printers, i.e. without an enclosure.\n" +#~ "\n" +#~ "Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used.\n" +#~ "Note: With the draft shield active, the skirt will be printed at skirt distance from the object. Therefore, if brims are active it may intersect with them. To avoid this, increase the skirt distance value.\n" +#~ msgstr "" +#~ "风挡对于保护ABS或ASA打印件免受风力的影响,防止翘曲和从打印床上脱落是非常有用的。通常只有在没有封箱的开放式打印机上才需要。\n" +#~ "\n" +#~ "启用 = 裙边的高度与最高的打印对象一样高。否则的话会使用'裙边高度'。\n" +#~ "注意:启用风挡后,裙边将会在距离模型'裙边距离'的地方打印。因此,如果brim启用,可能会与其相交。为了避免这种情况,增加裙边距离值。\n" + +#~ msgid "" +#~ "The maximum print speed when purging in the wipe tower and printing the wipe tower sparse layers. When purging, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +#~ "\n" +#~ "When printing the sparse layers, if the internal perimeter speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +#~ "\n" +#~ "Increasing this speed may affect the tower's stability as well as increase the force with which the nozzle collides with any blobs that may have formed on the wipe tower.\n" +#~ "\n" +#~ "Before increasing this parameter beyond the default of 90 mm/s, make sure your printer can reliably bridge at the increased speeds and that ooze when tool changing is well controlled.\n" +#~ "\n" +#~ "For the wipe tower external perimeters the internal perimeter speed is used regardless of this setting." +#~ msgstr "" +#~ "擦拭塔冲刷和稀疏层的最大打印速度。当冲刷时,如果稀疏填充速度或从耗材最大体积速度计算出的速度较低,则使用最低速度。\n" +#~ "\n" +#~ "当打印稀疏层时,如果内墙速度或从耗材最大体积流量计算出的速度较低,则使用最低速度。\n" +#~ "\n" +#~ "增加此速度可能会影响塔的稳定性,同时增加喷嘴与擦拭塔上可能形成的任何斑点碰撞的力。\n" +#~ "\n" +#~ "在将此参数增加到默认值90mm/sec之外之前,请确保您的打印机可以可靠地在增加的速度下桥接,并且换料时的滴漏得到了很好的控制。\n" +#~ "\n" +#~ "对于擦拭塔外墙,无论此设置如何,都使用内墙速度。" + +#~ msgid "" +#~ "Wipe tower outer wall type.\n" +#~ "1. Rectangle: The default wall type, a rectangle with fixed width and height.\n" +#~ "2. Cone: A cone with a fillet at the bottom to help stabilize the wipe tower.\n" +#~ "3. Rib: Adds four ribs to the tower wall for enhanced stability." +#~ msgstr "" +#~ "擦拭塔外墙类型。\n" +#~ "1. 矩形:默认墙类型,具有固定宽度和高度的矩形。\n" +#~ "2. 圆锥:底部有圆角的圆锥,有助于稳定擦拭塔。\n" +#~ "3. 加强筋:在塔壁上增加四个加强筋以提高稳定性。" + +#~ msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker or narrower than they normally would be. The spacing is adjusted automatically." +#~ msgstr "用于擦拭塔冲刷线的额外流量。这使冲刷线比正常情况下更厚或更窄。间距会自动调整。" + +#~ msgid "" +#~ "Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. Higher values remove more and longer walls.\n" +#~ "\n" +#~ "NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the Advanced settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." +#~ msgstr "" +#~ "调整这个值以略过短的、未闭合的墙,因为这些墙可能会增加打印耗时。设置较高的值将移除更多和更长的墙。\n" +#~ "\n" +#~ "请注意:底面和顶面将不受此值的影响,原因是防止模型外部出现可见缝隙。调整下方高级设置中的 “单层墙阈值” 来调整判断顶面的灵敏度。只有当此设置高于默认值的0.5、或启用了单层顶面时,“单层墙阈值”才会显示。" + # AI Translated #, boost-format #~ msgid "Split into %1% part" diff --git a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po index 1333a738d3..a01e0ca3b1 100644 --- a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po +++ b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-10-13 09:55-0300\n" +"POT-Creation-Date: 2026-10-14 10:04-0300\n" "PO-Revision-Date: 2025-11-28 13:48-0600\n" "Last-Translator: tntchn <15895303+tntchn@users.noreply.github.com>\n" "Language-Team: \n" @@ -2395,6 +2395,66 @@ msgstr "網路外掛程式限制" msgid "Privacy Policy Update" msgstr "隱私協定更新" +# AI Translated +msgid "All your filament presets are available on the printers they were made for." +msgstr "您所有的線材預設都可在其對應的列印裝置上使用。" + +# AI Translated +msgid "Migrate Filament Presets" +msgstr "遷移線材預設" + +# AI Translated +msgid "" +"OrcaSlicer 2.5.0 restructured many system filament presets to fix incorrect profiles and prepare for future features. As a result, the presets below no longer show on some printers they were made for. Sorry for the trouble; this is a one-time fix.\n" +"\n" +"Add those printers back to your presets now? Your presets are backed up first. You can also do this later from Help > Migrate Filament Presets." +msgstr "" +"OrcaSlicer 2.5.0 重構了許多系統線材預設,以修正不正確的設定檔,並為未來功能做準備。因此,下列預設不再顯示於部分原本適用的列印裝置上。造成不便,敬請見諒;這是一次性修正。\n" +"\n" +"現在要將這些列印裝置加回您的預設嗎?操作前會先備份您的預設。您也可以稍後從 幫助 > 遷移線材預設 執行此操作。" + +# AI Translated +#, boost-format +msgid "%1% (based on %2%)" +msgstr "%1%(基於 %2%)" + +msgid "Don't remind me again" +msgstr "不要再提醒我" + +# AI Translated +msgid "Your presets could not be backed up, so they were not migrated." +msgstr "無法備份您的預設,因此未進行遷移。" + +# AI Translated +msgid "The user presets folder could not be locked, so nothing was migrated. Another OrcaSlicer instance may be saving presets; try again later from Help > Migrate Filament Presets." +msgstr "無法鎖定使用者預設資料夾,因此未遷移任何內容。可能有另一個 OrcaSlicer 實例正在儲存預設;請稍後從 幫助 > 遷移線材預設 再試一次。" + +# AI Translated +#, boost-format +msgid "" +"Your filament presets could not be migrated. A backup of your presets was saved to:\n" +"%1%" +msgstr "" +"無法遷移您的線材預設。預設的備份已儲存到:\n" +"%1%" + +# AI Translated +#, boost-format +msgid "" +"Your filament presets were migrated. Select them again in the filament list where you used them.\n" +"\n" +"A backup of your presets was saved to:\n" +"%1%" +msgstr "" +"您的線材預設已遷移。請在原本使用它們的線材清單中重新選擇。\n" +"\n" +"預設的備份已儲存到:\n" +"%1%" + +# AI Translated +msgid "These presets could not be migrated:" +msgstr "無法遷移這些預設:" + #, c-format, boost-format msgid "your Orca Cloud profile (user ID: \"%s\")" msgstr "您的 Orca Cloud 設定檔(使用者 ID:\"%s\")" @@ -3112,6 +3172,62 @@ msgstr "(失去顏色)" msgid "Center" msgstr "居中" +# AI Translated +msgid "Distribute left-right" +msgstr "左右平均分布" + +# AI Translated +msgid "Distribute front-back" +msgstr "前後平均分布" + +# AI Translated +msgid "Distribute top-bottom" +msgstr "上下平均分布" + +# AI Translated +msgid "Align left" +msgstr "靠左對齊" + +# AI Translated +msgid "Align left-right center" +msgstr "左右置中對齊" + +# AI Translated +msgid "Align right" +msgstr "靠右對齊" + +# AI Translated +msgid "Align front" +msgstr "靠前對齊" + +# AI Translated +msgid "Align front-back center" +msgstr "前後置中對齊" + +# AI Translated +msgid "Align back" +msgstr "靠後對齊" + +# AI Translated +msgid "Align bottom" +msgstr "靠下對齊" + +# AI Translated +msgid "Align top-bottom center" +msgstr "上下置中對齊" + +# AI Translated +msgid "Align top" +msgstr "靠上對齊" + +# AI Translated +msgid "Align/Distribute" +msgstr "對齊/分布" + +# AI Translated +msgid "Align and distribute objects" +msgstr "對齊及分布物件" + msgid "Drop" msgstr "下降" @@ -6597,6 +6713,10 @@ msgstr "設定精靈" msgid "Show Configuration Folder" msgstr "開啟設定檔的資料夾" +# AI Translated +msgid "Bring back filament presets that a profile update removed from printers they were made for" +msgstr "找回因設定檔更新而從原本適用的列印裝置上移除的線材預設" + msgid "Troubleshoot Center" msgstr "疑難排解中心" @@ -13889,6 +14009,18 @@ msgstr "與外牆有多個交點,僅使用了其中一個(%1%)" msgid "a perimeter is fully inside a modifier, the modifier was not applied to it (%1%)" msgstr "某道外牆完全位於修改器內部,修改器未套用於其上(%1%)" +# AI Translated +#. TRN: %1% is the modifier type "Seam Blocked" as in the menu, %2% the modifier name, %3% the object name. +#, boost-format +msgid "%1% modifier \"%2%\" of \"%3%\" covers an entire perimeter" +msgstr "「%3%」的%1%修改器「%2%」覆蓋整道外牆" + +# AI Translated +#. TRN: %1% is the modifier type "Seam Blocked" as in the menu, %2% the modifier name, %3% the object name, %4% the number of modifiers. +#, boost-format +msgid "%1% modifier \"%2%\" of \"%3%\" (%4% in total) covers an entire perimeter" +msgstr "「%3%」的%1%修改器「%2%」(共 %4% 個)覆蓋整道外牆" + # AI Translated #, boost-format msgid "modifier \"%1%\" of \"%2%\" had no effect on the seam (it might not reach the centerline of the printed perimeter)" @@ -14859,8 +14991,9 @@ msgstr "" "\n" "此選項與「在填充上方增加第二層內部橋接」選項搭配使用時效果尤佳,可在擠出實心填充前進一步改善橋接。" +# AI Translated msgid "Bridge flow ratio" -msgstr "橋接流量" +msgstr "橋接流量比例" msgid "" "This value governs the thickness of the external (visible) bridge layer.\n" @@ -14875,21 +15008,23 @@ msgstr "" "\n" "實際使用的橋接流量是將此數值乘以線材流量比例計算得出,若有設定,還會乘以物件的流量比例。" +# AI Translated msgid "" "Line width of the Bridge. If expressed as a %, it will be computed over the nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" -"If set to 0, the line width will match the Internal solid infill width." +"If set to 0, the line width will match the Internal solid infill width, or the nozzle diameter for thick bridges." msgstr "" "橋接的線寬。如果以 % 表示,將以噴嘴直徑為基準計算。\n" "建議搭配較高的橋接密度或橋接流量比例使用。\n" "\n" "最大值為 100% 或噴嘴直徑。\n" -"如果設為 0,線寬將與內部實心填充寬度相同。" +"如果設為 0,線寬將與內部實心填充寬度相同;增厚橋接則與噴嘴直徑相同。" +# AI Translated msgid "Internal bridge flow ratio" -msgstr "內部橋接流量" +msgstr "內部橋接流量比例" msgid "" "This value governs the thickness of the internal bridge layer. This is the first layer over sparse infill so increasing it may increase strength and upper layer quality.\n" @@ -15130,6 +15265,7 @@ msgstr "開啟這個選項將降低不同懸空程度的走線的列印速度" msgid "Slow down for curled perimeters" msgstr "翹邊處降速" +# AI Translated #, no-c-format, no-boost-format msgid "" "Enable this option to slow down printing in areas where perimeters may have curled upwards.\n" @@ -15145,34 +15281,35 @@ msgid "" "3. If artifacts still appear, enable Extrusion Rate Smoothing (ERS) to further smooth the flow transitions.\n" "\n" "Note: When this option is enabled, overhang perimeters are treated like overhangs, meaning the overhang speed is applied even if the overhanging perimeter is part of a bridge.\n" -"For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 100% overhang speed will be applied." +"For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 75% overhang speed will be applied, limited by the bridge speed." msgstr "" "啟用此選項可在牆可能向上捲曲的區域降低列印速度。\n" "例如,在列印像 Benchy 船體前端這類尖角上的懸空時,會套用額外的減速,以減少在多個層上不斷累積的捲曲。\n" "\n" "一般建議開啟此選項,除非您的列印裝置冷卻能力夠強,或列印速度夠慢,使得牆不會發生捲曲。 \n" -"若以較高的外牆速度列印,此參數在減速時可能會產生牆面瑕疵,這是因為列印速度的差異可能過大,導致擠出機無法跟上所要求的流量變化。\n" -"這些瑕疵的根本原因很可能是 PA 調校略有偏差,尤其是搭配較高的 PA 平滑時間時。\n" +"若以較高的外牆速度列印,此參數在減速時可能會產生牆面缺陷,這是因為列印速度的差異可能過大,導致擠出機無法跟上所要求的流量變化。\n" +"這些缺陷的根本原因很可能是 PA 調校略有偏差,尤其是搭配較高的 PA 平滑時間時。\n" "\n" "啟用此選項時的建議:\n" "1. 將 Pressure Advance 平滑時間降低至 0.015 - 0.02,讓擠出機能快速回應速度變化。\n" "2. 提高最小列印速度,以限制減速的幅度,並減少快慢區段之間的差異。\n" -"3. 若仍出現瑕疵,請啟用平滑擠出率 (ERS) 以進一步平滑流量轉換。\n" +"3. 若仍出現缺陷,請啟用平滑擠出率 (ERS) 以進一步平滑流量轉換。\n" "\n" "注意:啟用此選項時,懸空牆會被視為懸空,這表示即使懸空牆屬於橋接的一部分,仍會套用懸空列印速度。\n" -"例如,當牆 100% 懸空、下方沒有牆支撐時,將會套用 100% 懸空列印速度。" +"例如,當牆 100% 懸空、下方沒有牆支撐時,將會套用 75% 的懸空列印速度,並受橋接速度限制。" msgid "mm/s or %" msgstr "mm/s 或 %" +# AI Translated msgid "" "Speed of the externally visible bridge extrusions.\n" "\n" -"In addition, if Slow down for curled perimeters is disabled or Classic overhang mode is enabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." +"In addition, if Slow down for curled perimeters is disabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." msgstr "" -"外部可見橋接擠出的列印速度\n" +"外部可見橋接擠出的列印速度。\n" "\n" -"如果停用了『翹邊處降速』或啟用了『經典懸空模式』,則對支撐率低於 13% 的懸空牆(無論是橋接的一部分還是懸空結構)將使用該列印速度。" +"此外,如果停用了「翹邊處降速」,則對支撐率低於 13% 的懸空牆(無論是橋接的一部分還是懸空結構)將使用該列印速度。" msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%." msgstr "內部橋接速度。如果該值以百分比表示,將基於 bridge_speed 進行計算。預設值為 150%。" @@ -15737,8 +15874,9 @@ msgstr "外牆的列印速度。它通常比內壁速度慢,以獲得更好的 msgid "Small perimeters" msgstr "微小部位" -msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above. Set to zero for auto." -msgstr "此獨立設定將影響半徑小於或等於 small_perimeter_threshold 的外牆列印速度(通常指孔洞)。若設定為百分比(如 80%),將基於上述外牆速度進行計算。設定為 0 表示自動調整。" +# AI Translated +msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above." +msgstr "此獨立設定將影響半徑小於或等於 small_perimeter_threshold 的外牆列印速度(通常指孔洞)。若設定為百分比(如 80%),將基於上述外牆速度進行計算。" msgid "Small perimeters threshold" msgstr "微小部位周長臨界值" @@ -15751,8 +15889,8 @@ msgid "Small support perimeters" msgstr "小型支撐周長" # AI Translated -msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above. Set to zero for auto." -msgstr "與「Small perimeters」相同,但用於支撐。此獨立設定會影響面積 <= `small_support_perimeter_threshold` 的支撐速度。若以百分比表示(例如:80%),則會依上方的支撐或支撐介面速度設定計算。設為零表示自動。" +msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above." +msgstr "與「微小部位」相同,但用於支撐。此獨立設定會影響面積 <= `small_support_perimeter_threshold` 的支撐速度。若以百分比表示(例如:80%),則會依上方的支撐或支撐面速度設定計算。" # AI Translated msgid "Small support perimeters threshold" @@ -15765,19 +15903,23 @@ msgstr "這會設定小型支撐周長長度的門檻。預設門檻為 0mm。" msgid "Walls printing order" msgstr "牆列印順序" +# AI Translated msgid "" "Print sequence of the internal (inner) and external (outer) walls.\n" "\n" "Use Inner/Outer for best overhangs. This is because the overhanging walls can adhere to a neighbouring perimeter while printing. However, this option results in slightly reduced surface quality as the external perimeter is deformed by being squashed to the internal perimeter.\n" "\n" -"Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended against the Outer/Inner option in most cases.\n" +"Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended over the Outer/Inner option in most cases.\n" "\n" "Use Outer/Inner for the same external wall quality and dimensional accuracy benefits of Inner/Outer/Inner option. However, the Z seams will appear less consistent as the first extrusion of a new layer starts on a visible surface." msgstr "" -"『內牆』與『外牆』牆體的列印順序。\n" -"使用『內牆/外牆』順序可獲得最佳的懸空效果。這是因為懸空牆體在列印時可以附著到相鄰的牆。然而,此選項會略微降低表面品質,因為外牆被壓到內牆上而變形。\n" -"使用『內牆/外牆/內牆』順序可獲得最佳的外表面光潔度和尺寸精度,因為外牆的列印不會受到內牆影響。然而,因為外牆缺少內牆的支撐,懸空性能會有所降低。此選項需要至少 3 層牆才能生效,它會先從第 3 層牆開始列印內牆,接著列印外部周邊,最後列印最內層的內牆。在大多數情況下,建議選擇此選項,而不是外牆/內牆的順序設定。\n" -"採用『外牆/內牆』順序可以達到與『內牆/外牆/內牆』設定相同的外牆表面品質與尺寸精度。然而,Z 軸接縫的均勻性會稍差,因為新層的首次擠出會在可見的表面開始。" +"內牆與外牆的列印順序。\n" +"\n" +"使用「內牆/外牆」可獲得最佳的懸空效果。這是因為懸空牆體在列印時可以附著到相鄰的牆。然而,此選項會略微降低表面品質,因為外牆被壓到內牆上而變形。\n" +"\n" +"使用「內牆/外牆/內牆」可獲得最佳的外表面光潔度和尺寸精度,因為外牆的列印不會受到內牆影響。然而,因為外牆缺少內牆的支撐,懸空性能會有所降低。此選項需要至少 3 層牆才能生效,它會先從第 3 層牆開始列印內牆,接著列印外牆,最後列印最內層的內牆。在大多數情況下,建議選擇此選項,而不是「外牆/內牆」。\n" +"\n" +"使用「外牆/內牆」可以達到與「內牆/外牆/內牆」相同的外牆表面品質與尺寸精度。然而,Z 軸接縫的均勻性會稍差,因為新層的首次擠出會在可見的表面開始。" msgid "Inner/Outer" msgstr "內牆/外牆" @@ -16716,14 +16858,16 @@ msgstr "首層層高" msgid "Height of the first layer. Making the first layer height thicker can improve build plate adhesion." msgstr "首層層高。加厚首層層高有助於提高列印板附著力。" -msgid "This is the speed for the first layer except for solid infill sections." -msgstr "首層除實心填充之外的其他部分的列印速度" +# AI Translated +msgid "This is the speed for the walls and brim of the first layer." +msgstr "首層的牆和 Brim 的列印速度。" msgid "First layer infill" msgstr "首層填充" -msgid "This is the speed for solid infill parts of the first layer." -msgstr "首層實心填充的列印速度" +# AI Translated +msgid "This is the speed for the first layer except for walls and brim, such as infill, gap fill and support." +msgstr "首層中除牆和 Brim 以外部分的列印速度,例如填充、縫隙填充和支撐。" msgid "First layer travel speed" msgstr "首層空駛速度" @@ -17415,16 +17559,18 @@ msgstr "內部稀疏填充的線寬。如果以%表示,它將以噴嘴直徑 msgid "Infill/wall overlap" msgstr "填充/牆 重疊" +# AI Translated #, no-c-format, no-boost-format -msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to line width of sparse infill. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." -msgstr "為了增強填充與周邊的結合,填充區域會略微擴大,與周邊產生重疊。此百分比值是基於稀疏填充的線寬來計算的。建議將該值設定在 10-15% 左右,以減少過擠出或材料堆積的可能性從而避免列印出粗糙的頂部表面。" +msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to the inner wall line width. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." +msgstr "為了增強填充與周邊的結合,填充區域會略微擴大,與周邊產生重疊。此百分比值是基於內牆線寬來計算的。建議將該值設定在 10-15% 左右,以減少過擠出或材料堆積的可能性從而避免列印出粗糙的頂部表面。" msgid "Top/Bottom solid infill/wall overlap" msgstr "頂部/底部實心填充部分和周邊重疊區域設定" +# AI Translated #, no-c-format, no-boost-format -msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to line width of sparse infill." -msgstr "頂部實心填充的區域會略微擴大,與周邊部分重疊,以增強結合效果並減少填充與周邊接合處出現針孔的可能性。建議從 25-30% 的設定值開始,這通常能有效減少針孔現象。此百分比值是基於稀疏填充的線寬來計算的" +msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to the inner wall line width." +msgstr "頂部實心填充的區域會略微擴大,與周邊部分重疊,以增強結合效果並減少填充與周邊接合處出現針孔的可能性。建議從 25-30% 的設定值開始,這通常能有效減少針孔現象。此百分比值是基於內牆線寬來計算的。" msgid "This is the speed for internal sparse infill." msgstr "內部稀疏填充的列印速度" @@ -17450,8 +17596,9 @@ msgstr "分隔區域的最大寬度。零表示停用此功能。" msgid "Interlocking depth of a segmented region" msgstr "分隔區域的互鎖深度" -msgid "Interlocking depth of a segmented region. It will be ignored if \"mmu_segmented_region_max_width\" is zero or if \"mmu_segmented_region_interlocking_depth\" is bigger than \"mmu_segmented_region_max_width\". Zero disables this feature." -msgstr "設定分隔區域的互鎖深度。如果「mmu_segmented_region_max_width」設定為 0,或者「mmu_segmented_region_interlocking_depth」的值大於「mmu_segmented_region_max_width」,此功能將被忽略。將此值設為 0 可完全關閉該功能。" +# AI Translated +msgid "Interlocking depth of a segmented region. On every other layer, the segmented region is limited to this depth. It will be ignored if \"interlocking_beam\" is enabled. Zero disables this feature." +msgstr "分隔區域的互鎖深度。每隔一層,分隔區域會被限制在此深度內。若啟用「interlocking_beam」,此設定將被忽略。設為 0 可停用此功能。" msgid "Use beam interlocking" msgstr "使用梁式互鎖" @@ -17557,13 +17704,14 @@ msgstr "啟用 Z 層輪廓處理(又稱 Z 層抗鋸齒)。" msgid "Minimize wall height angle" msgstr "最小化牆高角度" +# AI Translated msgid "" "Reduce the height of top-surface perimeters to match the model edge height.\n" -"Affects perimeters with a slope less than this angle (degrees).\n" +"Affects perimeters with a slope greater than this angle (degrees).\n" "A reasonable value is 35. Set to 0 to disable." msgstr "" "降低頂面牆的高度,使其與模型邊緣高度相符。\n" -"影響坡度小於此角度(度)的牆。\n" +"影響坡度大於此角度(度)的牆。\n" "合理值為 35。設為 0 可停用。" msgid "Don't alternate fill direction" @@ -18532,11 +18680,13 @@ msgstr "內牆的斜接縫" msgid "Use scarf joint for inner walls as well." msgstr "內牆同樣使用斜接縫。" -msgid "Role base wipe speed" -msgstr "自動擦拭速度" +# AI Translated +msgid "Role based wipe speed" +msgstr "依據擠出機任務的擦拭速度" +# AI Translated msgid "The wipe speed is determined by the speed of the current extrusion role. e.g. if a wipe action is executed immediately following an outer wall extrusion, the speed of the outer wall extrusion will be utilized for the wipe action." -msgstr "拭的速度由目前擠出任務的速度決定。例如,若擦拭操作緊接著外牆的擠出執行,則將使用外牆擠出的速度進行擦拭。" +msgstr "擦拭的速度由目前擠出機任務的速度決定。例如,若擦拭操作緊接著外牆的擠出執行,則將使用外牆擠出的速度進行擦拭。" msgid "Wipe on loops" msgstr "閉環擦拭" @@ -18619,16 +18769,15 @@ msgstr "在首層之後,將環形裙邊或隔風罩限制為單層牆。這在 msgid "Draft shield" msgstr "防風罩" +# AI Translated msgid "" "A draft shield is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft. It is usually needed only with open frame printers, i.e. without an enclosure.\n" "\n" -"Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used.\n" -"Note: With the draft shield active, the skirt will be printed at skirt distance from the object. Therefore, if brims are active it may intersect with them. To avoid this, increase the skirt distance value.\n" +"Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used." msgstr "" -"防風罩可有效保護 ABS 或 ASA 列印物免受氣流影響,避免翹曲或脫離列印床。通常僅在開放式框架的列印裝置(即無外殼)中需要使用。\n" +"防風罩可有效保護 ABS 或 ASA 列印物免受氣流影響,避免翹曲或脫離列印板。通常僅在開放式框架的列印裝置(即無外殼)中需要使用。\n" "\n" -"啟用後,Skirt 的高度將與列印物的最高點相同。若未啟用,則使用『Skirt 高度』的設定值。\n" -"注意:啟用擋風護盾時,Skirt 會按照設定的 Skirt 距離列印於物體周圍。如果同時啟用了耳狀 Brim,Skirt 可能會與其重疊。為避免此問題,請增加 Skirt 距離的設定值。\n" +"啟用後,Skirt 的高度將與列印物的最高點相同。若未啟用,則使用「Skirt 高度」的設定值。" msgid "Enabled" msgstr "啟用" @@ -19762,40 +19911,42 @@ msgstr "圓錐體頂點處的角度,用於穩定換料塔。 更大的角度 msgid "Maximum wipe tower print speed" msgstr "換料塔最快列印速度" +# AI Translated msgid "" "The maximum print speed when purging in the wipe tower and printing the wipe tower sparse layers. When purging, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" "\n" -"When printing the sparse layers, if the internal perimeter speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +"When printing the sparse layers, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" "\n" "Increasing this speed may affect the tower's stability as well as increase the force with which the nozzle collides with any blobs that may have formed on the wipe tower.\n" "\n" "Before increasing this parameter beyond the default of 90 mm/s, make sure your printer can reliably bridge at the increased speeds and that ooze when tool changing is well controlled.\n" "\n" -"For the wipe tower external perimeters the internal perimeter speed is used regardless of this setting." +"For the wipe tower external perimeters the internal perimeter speed is used, also limited by this setting." msgstr "" -"在換料塔中沖刷和列印換料塔稀疏層時的最大列印速度。沖刷時,如果稀疏填充速度或根據線材最大體積速度計算出的速度較低,則將使用較低的速度。\n" +"在換料塔中沖刷和列印換料塔稀疏層時的最大列印速度。沖刷時,如果稀疏填充速度或根據線材最大體積流量計算出的速度較低,則將使用較低的速度。\n" "\n" -"列印稀疏層時,如果內牆速度或根據線材最大體積速度計算出的速度較低,則將使用較低的速度。\n" +"列印稀疏層時,如果稀疏填充速度或根據線材最大體積流量計算出的速度較低,則將使用較低的速度。\n" "\n" "提高此速度可能會影響換料塔的穩定性,並增加噴嘴與換料塔上凸起物的碰撞力。\n" "\n" -"在將此參數提高到預設值 90 mm/s 以上之前,請確保您的列印裝置能夠在更高的速度下可靠地進行橋接,且工具更換時的溢出能被良好控制。\n" +"在將此參數提高到預設值 90 mm/s 以上之前,請確保您的列印裝置能夠在更高的速度下可靠地進行橋接,且換料時的防止漏料已受到良好控制。\n" "\n" -"換料塔外牆始終使用內牆速度,不受此設定影響。" +"換料塔外牆使用內牆速度,同時也受此設定限制。" msgid "Wall type" msgstr "牆體類型" +# AI Translated msgid "" "Wipe tower outer wall type.\n" -"1. Rectangle: The default wall type, a rectangle with fixed width and height.\n" +"1. Rectangle: A rectangle with fixed width and height.\n" "2. Cone: A cone with a fillet at the bottom to help stabilize the wipe tower.\n" -"3. Rib: Adds four ribs to the tower wall for enhanced stability." +"3. Rib: The default wall type, which adds four ribs to the tower wall for enhanced stability." msgstr "" "換料塔外牆類型。\n" -"1. 矩形:預設牆體類型,具有固定寬度和高度的矩形。\n" -"2. 圓錐:底部帶圓角的圓錐形,有助於穩定換料塔。\n" -"3. 肋條:為換料塔牆體添加四條肋條以增強穩定性" +"1. 矩形:具有固定寬度和高度的矩形。\n" +"2. 錐體:底部帶圓角的圓錐形,有助於穩定換料塔。\n" +"3. 肋條:預設牆體類型,為換料塔牆體添加四條肋條以增強穩定性。" msgid "Rectangle" msgstr "矩形" @@ -19886,8 +20037,9 @@ msgstr "換料塔上的線距。" msgid "Extra flow for purging" msgstr "額外換料流量" -msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker or narrower than they normally would be. The spacing is adjusted automatically." -msgstr "讓換料塔在清理時輸出額外流量。這會使列印線比正常情況更粗或更細。間距會自動調整。" +# AI Translated +msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker than they normally would be. The spacing is adjusted automatically." +msgstr "讓換料塔在清理時輸出額外流量。這會使列印線比正常情況更粗。間距會自動調整。" msgid "Idle temperature" msgstr "閒置溫度" @@ -20008,11 +20160,15 @@ msgstr "" msgid "Minimum wall length" msgstr "最短牆長" +# AI Translated msgid "" -"Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. Higher values remove more and longer walls.\n" +"Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. The value is a multiple of the wall width. Higher values remove more and longer walls.\n" "\n" -"NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the Advanced settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." -msgstr "調整此參數以避免列印短小且未封閉的牆體,這可能會延長列印時間。參數值越高,移除的牆體會越多且越長。注意:為避免模型外表面出現視覺裂縫,此設定不會影響頂面和底面。若需調整頂面判定的靈敏度,可修改進階設定中的『單層牆門檻值』。『單層牆門檻值』僅在此設定超過預設值 0.5 或啟用了單層牆頂面功能時可用。" +"NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the 'Walls and surfaces' settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." +msgstr "" +"調整此參數以避免列印短小且未封閉的牆體,這可能會延長列印時間。此值為牆寬的倍數。參數值越高,移除的牆體會越多且越長。\n" +"\n" +"注意:為避免模型外表面出現視覺裂縫,此設定不會影響頂面和底面。若需調整頂面判定的靈敏度,可修改下方「牆與表面」設定中的「單層牆門檻值」。「單層牆門檻值」僅在此設定超過預設值 0.5 或啟用了單層牆頂面功能時可用。" msgid "Maximum wall resolution" msgstr "最大牆解析度" @@ -23966,9 +24122,6 @@ msgstr "啟用智慧線材指派:將一種線材指派給多個噴嘴以最大 msgid "File Saving" msgstr "檔案儲存" -msgid "Don't remind me again" -msgstr "不要再提醒我" - msgid "No further pop-up will appear. You can reopen it in 'Preferences'" msgstr "不會再出現任何彈出視窗。您可以在“偏好設定”中重新開啟它" @@ -34446,6 +34599,162 @@ msgstr "" "避免翹曲\n" "您知道嗎?當列印容易翹曲的材料(如 ABS)時,適當提高熱床溫度可以降低翹曲的機率。" +#~ msgid "" +#~ "Line width of the Bridge. If expressed as a %, it will be computed over the nozzle diameter.\n" +#~ "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" +#~ "\n" +#~ "The maximum value is 100% or the nozzle diameter.\n" +#~ "If set to 0, the line width will match the Internal solid infill width." +#~ msgstr "" +#~ "橋接的線寬。如果以 % 表示,將以噴嘴直徑為基準計算。\n" +#~ "建議搭配較高的橋接密度或橋接流量比例使用。\n" +#~ "\n" +#~ "最大值為 100% 或噴嘴直徑。\n" +#~ "如果設為 0,線寬將與內部實心填充寬度相同。" + +#, no-c-format, no-boost-format +#~ msgid "" +#~ "Enable this option to slow down printing in areas where perimeters may have curled upwards.\n" +#~ "For example, additional slowdown will be applied when printing overhangs on sharp corners like the front of the Benchy hull, reducing curling which compounds over multiple layers.\n" +#~ "\n" +#~ "It is generally recommended to have this option switched on unless your printer cooling is powerful enough or the print speed is slow enough that perimeter curling does not happen. \n" +#~ "If printing with a high external perimeter speed, this parameter may introduce wall artifacts when slowing down, due to the potentially large variance in print speeds causing the extruder to be unable to keep up with the requested flow change.\n" +#~ "Root cause of these artifacts is most likely PA tuning being slightly off, especially when combined with a high PA smooth time.\n" +#~ "\n" +#~ "Recommendations when enabling this option:\n" +#~ "1. Reduce Pressure Advance smooth time to 0.015 - 0.02 so the extruder reacts quickly to the speed changes.\n" +#~ "2. Increase the minimum print speeds to limit the magnitude of the slowdown and reduce the variance between fast and slow segments.\n" +#~ "3. If artifacts still appear, enable Extrusion Rate Smoothing (ERS) to further smooth the flow transitions.\n" +#~ "\n" +#~ "Note: When this option is enabled, overhang perimeters are treated like overhangs, meaning the overhang speed is applied even if the overhanging perimeter is part of a bridge.\n" +#~ "For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 100% overhang speed will be applied." +#~ msgstr "" +#~ "啟用此選項可在牆可能向上捲曲的區域降低列印速度。\n" +#~ "例如,在列印像 Benchy 船體前端這類尖角上的懸空時,會套用額外的減速,以減少在多個層上不斷累積的捲曲。\n" +#~ "\n" +#~ "一般建議開啟此選項,除非您的列印裝置冷卻能力夠強,或列印速度夠慢,使得牆不會發生捲曲。 \n" +#~ "若以較高的外牆速度列印,此參數在減速時可能會產生牆面瑕疵,這是因為列印速度的差異可能過大,導致擠出機無法跟上所要求的流量變化。\n" +#~ "這些瑕疵的根本原因很可能是 PA 調校略有偏差,尤其是搭配較高的 PA 平滑時間時。\n" +#~ "\n" +#~ "啟用此選項時的建議:\n" +#~ "1. 將 Pressure Advance 平滑時間降低至 0.015 - 0.02,讓擠出機能快速回應速度變化。\n" +#~ "2. 提高最小列印速度,以限制減速的幅度,並減少快慢區段之間的差異。\n" +#~ "3. 若仍出現瑕疵,請啟用平滑擠出率 (ERS) 以進一步平滑流量轉換。\n" +#~ "\n" +#~ "注意:啟用此選項時,懸空牆會被視為懸空,這表示即使懸空牆屬於橋接的一部分,仍會套用懸空列印速度。\n" +#~ "例如,當牆 100% 懸空、下方沒有牆支撐時,將會套用 100% 懸空列印速度。" + +#~ msgid "" +#~ "Speed of the externally visible bridge extrusions.\n" +#~ "\n" +#~ "In addition, if Slow down for curled perimeters is disabled or Classic overhang mode is enabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." +#~ msgstr "" +#~ "外部可見橋接擠出的列印速度\n" +#~ "\n" +#~ "如果停用了『翹邊處降速』或啟用了『經典懸空模式』,則對支撐率低於 13% 的懸空牆(無論是橋接的一部分還是懸空結構)將使用該列印速度。" + +#~ msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above. Set to zero for auto." +#~ msgstr "此獨立設定將影響半徑小於或等於 small_perimeter_threshold 的外牆列印速度(通常指孔洞)。若設定為百分比(如 80%),將基於上述外牆速度進行計算。設定為 0 表示自動調整。" + +# AI Translated +#~ msgid "Same as \"Small perimeters\", but for supports. This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above. Set to zero for auto." +#~ msgstr "與「Small perimeters」相同,但用於支撐。此獨立設定會影響面積 <= `small_support_perimeter_threshold` 的支撐速度。若以百分比表示(例如:80%),則會依上方的支撐或支撐介面速度設定計算。設為零表示自動。" + +#~ msgid "" +#~ "Print sequence of the internal (inner) and external (outer) walls.\n" +#~ "\n" +#~ "Use Inner/Outer for best overhangs. This is because the overhanging walls can adhere to a neighbouring perimeter while printing. However, this option results in slightly reduced surface quality as the external perimeter is deformed by being squashed to the internal perimeter.\n" +#~ "\n" +#~ "Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended against the Outer/Inner option in most cases.\n" +#~ "\n" +#~ "Use Outer/Inner for the same external wall quality and dimensional accuracy benefits of Inner/Outer/Inner option. However, the Z seams will appear less consistent as the first extrusion of a new layer starts on a visible surface." +#~ msgstr "" +#~ "『內牆』與『外牆』牆體的列印順序。\n" +#~ "使用『內牆/外牆』順序可獲得最佳的懸空效果。這是因為懸空牆體在列印時可以附著到相鄰的牆。然而,此選項會略微降低表面品質,因為外牆被壓到內牆上而變形。\n" +#~ "使用『內牆/外牆/內牆』順序可獲得最佳的外表面光潔度和尺寸精度,因為外牆的列印不會受到內牆影響。然而,因為外牆缺少內牆的支撐,懸空性能會有所降低。此選項需要至少 3 層牆才能生效,它會先從第 3 層牆開始列印內牆,接著列印外部周邊,最後列印最內層的內牆。在大多數情況下,建議選擇此選項,而不是外牆/內牆的順序設定。\n" +#~ "採用『外牆/內牆』順序可以達到與『內牆/外牆/內牆』設定相同的外牆表面品質與尺寸精度。然而,Z 軸接縫的均勻性會稍差,因為新層的首次擠出會在可見的表面開始。" + +#~ msgid "This is the speed for the first layer except for solid infill sections." +#~ msgstr "首層除實心填充之外的其他部分的列印速度" + +#~ msgid "This is the speed for solid infill parts of the first layer." +#~ msgstr "首層實心填充的列印速度" + +#, no-c-format, no-boost-format +#~ msgid "This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to line width of sparse infill. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." +#~ msgstr "為了增強填充與周邊的結合,填充區域會略微擴大,與周邊產生重疊。此百分比值是基於稀疏填充的線寬來計算的。建議將該值設定在 10-15% 左右,以減少過擠出或材料堆積的可能性從而避免列印出粗糙的頂部表面。" + +#, no-c-format, no-boost-format +#~ msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to line width of sparse infill." +#~ msgstr "頂部實心填充的區域會略微擴大,與周邊部分重疊,以增強結合效果並減少填充與周邊接合處出現針孔的可能性。建議從 25-30% 的設定值開始,這通常能有效減少針孔現象。此百分比值是基於稀疏填充的線寬來計算的" + +#~ msgid "Interlocking depth of a segmented region. It will be ignored if \"mmu_segmented_region_max_width\" is zero or if \"mmu_segmented_region_interlocking_depth\" is bigger than \"mmu_segmented_region_max_width\". Zero disables this feature." +#~ msgstr "設定分隔區域的互鎖深度。如果「mmu_segmented_region_max_width」設定為 0,或者「mmu_segmented_region_interlocking_depth」的值大於「mmu_segmented_region_max_width」,此功能將被忽略。將此值設為 0 可完全關閉該功能。" + +#~ msgid "" +#~ "Reduce the height of top-surface perimeters to match the model edge height.\n" +#~ "Affects perimeters with a slope less than this angle (degrees).\n" +#~ "A reasonable value is 35. Set to 0 to disable." +#~ msgstr "" +#~ "降低頂面牆的高度,使其與模型邊緣高度相符。\n" +#~ "影響坡度小於此角度(度)的牆。\n" +#~ "合理值為 35。設為 0 可停用。" + +#~ msgid "Role base wipe speed" +#~ msgstr "自動擦拭速度" + +#~ msgid "" +#~ "A draft shield is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft. It is usually needed only with open frame printers, i.e. without an enclosure.\n" +#~ "\n" +#~ "Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used.\n" +#~ "Note: With the draft shield active, the skirt will be printed at skirt distance from the object. Therefore, if brims are active it may intersect with them. To avoid this, increase the skirt distance value.\n" +#~ msgstr "" +#~ "防風罩可有效保護 ABS 或 ASA 列印物免受氣流影響,避免翹曲或脫離列印床。通常僅在開放式框架的列印裝置(即無外殼)中需要使用。\n" +#~ "\n" +#~ "啟用後,Skirt 的高度將與列印物的最高點相同。若未啟用,則使用『Skirt 高度』的設定值。\n" +#~ "注意:啟用擋風護盾時,Skirt 會按照設定的 Skirt 距離列印於物體周圍。如果同時啟用了耳狀 Brim,Skirt 可能會與其重疊。為避免此問題,請增加 Skirt 距離的設定值。\n" + +#~ msgid "" +#~ "The maximum print speed when purging in the wipe tower and printing the wipe tower sparse layers. When purging, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +#~ "\n" +#~ "When printing the sparse layers, if the internal perimeter speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" +#~ "\n" +#~ "Increasing this speed may affect the tower's stability as well as increase the force with which the nozzle collides with any blobs that may have formed on the wipe tower.\n" +#~ "\n" +#~ "Before increasing this parameter beyond the default of 90 mm/s, make sure your printer can reliably bridge at the increased speeds and that ooze when tool changing is well controlled.\n" +#~ "\n" +#~ "For the wipe tower external perimeters the internal perimeter speed is used regardless of this setting." +#~ msgstr "" +#~ "在換料塔中沖刷和列印換料塔稀疏層時的最大列印速度。沖刷時,如果稀疏填充速度或根據線材最大體積速度計算出的速度較低,則將使用較低的速度。\n" +#~ "\n" +#~ "列印稀疏層時,如果內牆速度或根據線材最大體積速度計算出的速度較低,則將使用較低的速度。\n" +#~ "\n" +#~ "提高此速度可能會影響換料塔的穩定性,並增加噴嘴與換料塔上凸起物的碰撞力。\n" +#~ "\n" +#~ "在將此參數提高到預設值 90 mm/s 以上之前,請確保您的列印裝置能夠在更高的速度下可靠地進行橋接,且工具更換時的溢出能被良好控制。\n" +#~ "\n" +#~ "換料塔外牆始終使用內牆速度,不受此設定影響。" + +#~ msgid "" +#~ "Wipe tower outer wall type.\n" +#~ "1. Rectangle: The default wall type, a rectangle with fixed width and height.\n" +#~ "2. Cone: A cone with a fillet at the bottom to help stabilize the wipe tower.\n" +#~ "3. Rib: Adds four ribs to the tower wall for enhanced stability." +#~ msgstr "" +#~ "換料塔外牆類型。\n" +#~ "1. 矩形:預設牆體類型,具有固定寬度和高度的矩形。\n" +#~ "2. 圓錐:底部帶圓角的圓錐形,有助於穩定換料塔。\n" +#~ "3. 肋條:為換料塔牆體添加四條肋條以增強穩定性" + +#~ msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker or narrower than they normally would be. The spacing is adjusted automatically." +#~ msgstr "讓換料塔在清理時輸出額外流量。這會使列印線比正常情況更粗或更細。間距會自動調整。" + +#~ msgid "" +#~ "Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. Higher values remove more and longer walls.\n" +#~ "\n" +#~ "NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the Advanced settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." +#~ msgstr "調整此參數以避免列印短小且未封閉的牆體,這可能會延長列印時間。參數值越高,移除的牆體會越多且越長。注意:為避免模型外表面出現視覺裂縫,此設定不會影響頂面和底面。若需調整頂面判定的靈敏度,可修改進階設定中的『單層牆門檻值』。『單層牆門檻值』僅在此設定超過預設值 0.5 或啟用了單層牆頂面功能時可用。" + # AI Translated #, boost-format #~ msgid "Split into %1% part" diff --git a/resources/images/align_x_center.svg b/resources/images/align_x_center.svg new file mode 100644 index 0000000000..32012712a9 --- /dev/null +++ b/resources/images/align_x_center.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/images/align_x_center_dark.svg b/resources/images/align_x_center_dark.svg new file mode 100644 index 0000000000..2ed90436b1 --- /dev/null +++ b/resources/images/align_x_center_dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/images/align_x_max.svg b/resources/images/align_x_max.svg new file mode 100644 index 0000000000..3668d32792 --- /dev/null +++ b/resources/images/align_x_max.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/images/align_x_max_dark.svg b/resources/images/align_x_max_dark.svg new file mode 100644 index 0000000000..81e2e236b5 --- /dev/null +++ b/resources/images/align_x_max_dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/images/align_x_min.svg b/resources/images/align_x_min.svg new file mode 100644 index 0000000000..b35da87f31 --- /dev/null +++ b/resources/images/align_x_min.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/images/align_x_min_dark.svg b/resources/images/align_x_min_dark.svg new file mode 100644 index 0000000000..9e32867fad --- /dev/null +++ b/resources/images/align_x_min_dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/images/align_y_center.svg b/resources/images/align_y_center.svg new file mode 100644 index 0000000000..5bc5e0a2e4 --- /dev/null +++ b/resources/images/align_y_center.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/images/align_y_center_dark.svg b/resources/images/align_y_center_dark.svg new file mode 100644 index 0000000000..cea517a3a3 --- /dev/null +++ b/resources/images/align_y_center_dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/images/align_y_max.svg b/resources/images/align_y_max.svg new file mode 100644 index 0000000000..9a4bf46b0a --- /dev/null +++ b/resources/images/align_y_max.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/images/align_y_max_dark.svg b/resources/images/align_y_max_dark.svg new file mode 100644 index 0000000000..cf91f9dc26 --- /dev/null +++ b/resources/images/align_y_max_dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/images/align_y_min.svg b/resources/images/align_y_min.svg new file mode 100644 index 0000000000..3e6bea962e --- /dev/null +++ b/resources/images/align_y_min.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/images/align_y_min_dark.svg b/resources/images/align_y_min_dark.svg new file mode 100644 index 0000000000..800a202aef --- /dev/null +++ b/resources/images/align_y_min_dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/images/align_z_center.svg b/resources/images/align_z_center.svg new file mode 100644 index 0000000000..5436259956 --- /dev/null +++ b/resources/images/align_z_center.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/images/align_z_center_dark.svg b/resources/images/align_z_center_dark.svg new file mode 100644 index 0000000000..9bcb13d5e0 --- /dev/null +++ b/resources/images/align_z_center_dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/images/align_z_max.svg b/resources/images/align_z_max.svg new file mode 100644 index 0000000000..8446d3a8ac --- /dev/null +++ b/resources/images/align_z_max.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/images/align_z_max_dark.svg b/resources/images/align_z_max_dark.svg new file mode 100644 index 0000000000..518c48f648 --- /dev/null +++ b/resources/images/align_z_max_dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/images/align_z_min.svg b/resources/images/align_z_min.svg new file mode 100644 index 0000000000..1988fb1c27 --- /dev/null +++ b/resources/images/align_z_min.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/images/align_z_min_dark.svg b/resources/images/align_z_min_dark.svg new file mode 100644 index 0000000000..8bfdcc0027 --- /dev/null +++ b/resources/images/align_z_min_dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/images/distribute_x.svg b/resources/images/distribute_x.svg new file mode 100644 index 0000000000..20f505f61f --- /dev/null +++ b/resources/images/distribute_x.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/images/distribute_x_dark.svg b/resources/images/distribute_x_dark.svg new file mode 100644 index 0000000000..a87cf75a05 --- /dev/null +++ b/resources/images/distribute_x_dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/images/distribute_y.svg b/resources/images/distribute_y.svg new file mode 100644 index 0000000000..5ddd1742d0 --- /dev/null +++ b/resources/images/distribute_y.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/images/distribute_y_dark.svg b/resources/images/distribute_y_dark.svg new file mode 100644 index 0000000000..ac72dda332 --- /dev/null +++ b/resources/images/distribute_y_dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/images/distribute_z.svg b/resources/images/distribute_z.svg new file mode 100644 index 0000000000..ee29156e21 --- /dev/null +++ b/resources/images/distribute_z.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/images/distribute_z_dark.svg b/resources/images/distribute_z_dark.svg new file mode 100644 index 0000000000..6ba375f364 --- /dev/null +++ b/resources/images/distribute_z_dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/images/texture_displacement/adaptive_off.png b/resources/images/texture_displacement/adaptive_off.png new file mode 100644 index 0000000000..c509ee5871 Binary files /dev/null and b/resources/images/texture_displacement/adaptive_off.png differ diff --git a/resources/images/texture_displacement/adaptive_on.png b/resources/images/texture_displacement/adaptive_on.png new file mode 100644 index 0000000000..43f2667457 Binary files /dev/null and b/resources/images/texture_displacement/adaptive_on.png differ diff --git a/resources/images/texture_displacement/blend_add.png b/resources/images/texture_displacement/blend_add.png new file mode 100644 index 0000000000..e1d836167e Binary files /dev/null and b/resources/images/texture_displacement/blend_add.png differ diff --git a/resources/images/texture_displacement/blend_multiply.png b/resources/images/texture_displacement/blend_multiply.png new file mode 100644 index 0000000000..eea49dd12b Binary files /dev/null and b/resources/images/texture_displacement/blend_multiply.png differ diff --git a/resources/images/texture_displacement/collapse_slivers_off.png b/resources/images/texture_displacement/collapse_slivers_off.png new file mode 100644 index 0000000000..f76898339a Binary files /dev/null and b/resources/images/texture_displacement/collapse_slivers_off.png differ diff --git a/resources/images/texture_displacement/collapse_slivers_on.png b/resources/images/texture_displacement/collapse_slivers_on.png new file mode 100644 index 0000000000..3b1823c59c Binary files /dev/null and b/resources/images/texture_displacement/collapse_slivers_on.png differ diff --git a/resources/images/texture_displacement/cursor_size.gif b/resources/images/texture_displacement/cursor_size.gif new file mode 100644 index 0000000000..3c6e5a7d92 Binary files /dev/null and b/resources/images/texture_displacement/cursor_size.gif differ diff --git a/resources/images/texture_displacement/denoise_off.png b/resources/images/texture_displacement/denoise_off.png new file mode 100644 index 0000000000..4450932491 Binary files /dev/null and b/resources/images/texture_displacement/denoise_off.png differ diff --git a/resources/images/texture_displacement/denoise_on.png b/resources/images/texture_displacement/denoise_on.png new file mode 100644 index 0000000000..ff679e058a Binary files /dev/null and b/resources/images/texture_displacement/denoise_on.png differ diff --git a/resources/images/texture_displacement/depth.gif b/resources/images/texture_displacement/depth.gif new file mode 100644 index 0000000000..d7e9dd615e Binary files /dev/null and b/resources/images/texture_displacement/depth.gif differ diff --git a/resources/images/texture_displacement/edge_fade_off.png b/resources/images/texture_displacement/edge_fade_off.png new file mode 100644 index 0000000000..4652e38ba7 Binary files /dev/null and b/resources/images/texture_displacement/edge_fade_off.png differ diff --git a/resources/images/texture_displacement/edge_fade_on.png b/resources/images/texture_displacement/edge_fade_on.png new file mode 100644 index 0000000000..2abb2029aa Binary files /dev/null and b/resources/images/texture_displacement/edge_fade_on.png differ diff --git a/resources/images/texture_displacement/erase.gif b/resources/images/texture_displacement/erase.gif new file mode 100644 index 0000000000..ef4a82e7b1 Binary files /dev/null and b/resources/images/texture_displacement/erase.gif differ diff --git a/resources/images/texture_displacement/erase_all.png b/resources/images/texture_displacement/erase_all.png new file mode 100644 index 0000000000..5633bdfa0a Binary files /dev/null and b/resources/images/texture_displacement/erase_all.png differ diff --git a/resources/images/texture_displacement/geometry_smoothing.gif b/resources/images/texture_displacement/geometry_smoothing.gif new file mode 100644 index 0000000000..ad55fbc09b Binary files /dev/null and b/resources/images/texture_displacement/geometry_smoothing.gif differ diff --git a/resources/images/texture_displacement/invert_off.png b/resources/images/texture_displacement/invert_off.png new file mode 100644 index 0000000000..65248727de Binary files /dev/null and b/resources/images/texture_displacement/invert_off.png differ diff --git a/resources/images/texture_displacement/invert_on.png b/resources/images/texture_displacement/invert_on.png new file mode 100644 index 0000000000..0944c0e120 Binary files /dev/null and b/resources/images/texture_displacement/invert_on.png differ diff --git a/resources/images/texture_displacement/map_cube.png b/resources/images/texture_displacement/map_cube.png new file mode 100644 index 0000000000..cf50adfd7e Binary files /dev/null and b/resources/images/texture_displacement/map_cube.png differ diff --git a/resources/images/texture_displacement/map_cylinder.png b/resources/images/texture_displacement/map_cylinder.png new file mode 100644 index 0000000000..f9c2986fb2 Binary files /dev/null and b/resources/images/texture_displacement/map_cylinder.png differ diff --git a/resources/images/texture_displacement/map_sphere.png b/resources/images/texture_displacement/map_sphere.png new file mode 100644 index 0000000000..0a8dcbbc05 Binary files /dev/null and b/resources/images/texture_displacement/map_sphere.png differ diff --git a/resources/images/texture_displacement/map_unwrap.png b/resources/images/texture_displacement/map_unwrap.png new file mode 100644 index 0000000000..4caaf6bb83 Binary files /dev/null and b/resources/images/texture_displacement/map_unwrap.png differ diff --git a/resources/images/texture_displacement/map_view.png b/resources/images/texture_displacement/map_view.png new file mode 100644 index 0000000000..1f4714689d Binary files /dev/null and b/resources/images/texture_displacement/map_view.png differ diff --git a/resources/images/texture_displacement/midlevel.gif b/resources/images/texture_displacement/midlevel.gif new file mode 100644 index 0000000000..32914d7c9d Binary files /dev/null and b/resources/images/texture_displacement/midlevel.gif differ diff --git a/resources/images/texture_displacement/mix_off.png b/resources/images/texture_displacement/mix_off.png new file mode 100644 index 0000000000..d6445d6314 Binary files /dev/null and b/resources/images/texture_displacement/mix_off.png differ diff --git a/resources/images/texture_displacement/mix_on.png b/resources/images/texture_displacement/mix_on.png new file mode 100644 index 0000000000..716f63e0b9 Binary files /dev/null and b/resources/images/texture_displacement/mix_on.png differ diff --git a/resources/images/texture_displacement/mixed_colors_few.png b/resources/images/texture_displacement/mixed_colors_few.png new file mode 100644 index 0000000000..389e22f429 Binary files /dev/null and b/resources/images/texture_displacement/mixed_colors_few.png differ diff --git a/resources/images/texture_displacement/mixed_colors_many.png b/resources/images/texture_displacement/mixed_colors_many.png new file mode 100644 index 0000000000..90754062ce Binary files /dev/null and b/resources/images/texture_displacement/mixed_colors_many.png differ diff --git a/resources/images/texture_displacement/paint.gif b/resources/images/texture_displacement/paint.gif new file mode 100644 index 0000000000..c7fedc1a3b Binary files /dev/null and b/resources/images/texture_displacement/paint.gif differ diff --git a/resources/images/texture_displacement/painted_only_off.png b/resources/images/texture_displacement/painted_only_off.png new file mode 100644 index 0000000000..ac30fea631 Binary files /dev/null and b/resources/images/texture_displacement/painted_only_off.png differ diff --git a/resources/images/texture_displacement/painted_only_on.png b/resources/images/texture_displacement/painted_only_on.png new file mode 100644 index 0000000000..b8c01e1b13 Binary files /dev/null and b/resources/images/texture_displacement/painted_only_on.png differ diff --git a/resources/images/texture_displacement/preserve_edges_off.png b/resources/images/texture_displacement/preserve_edges_off.png new file mode 100644 index 0000000000..8eb41e7d8c Binary files /dev/null and b/resources/images/texture_displacement/preserve_edges_off.png differ diff --git a/resources/images/texture_displacement/preserve_edges_on.png b/resources/images/texture_displacement/preserve_edges_on.png new file mode 100644 index 0000000000..a8a8f5b7d6 Binary files /dev/null and b/resources/images/texture_displacement/preserve_edges_on.png differ diff --git a/resources/images/texture_displacement/remesh_after.png b/resources/images/texture_displacement/remesh_after.png new file mode 100644 index 0000000000..7b46db61ed Binary files /dev/null and b/resources/images/texture_displacement/remesh_after.png differ diff --git a/resources/images/texture_displacement/remesh_before.png b/resources/images/texture_displacement/remesh_before.png new file mode 100644 index 0000000000..8c6f56c3d9 Binary files /dev/null and b/resources/images/texture_displacement/remesh_before.png differ diff --git a/resources/images/texture_displacement/rotation.gif b/resources/images/texture_displacement/rotation.gif new file mode 100644 index 0000000000..c255e5c167 Binary files /dev/null and b/resources/images/texture_displacement/rotation.gif differ diff --git a/resources/images/texture_displacement/select_all.png b/resources/images/texture_displacement/select_all.png new file mode 100644 index 0000000000..c727daf7fa Binary files /dev/null and b/resources/images/texture_displacement/select_all.png differ diff --git a/resources/images/texture_displacement/smart_fill_angle_high.png b/resources/images/texture_displacement/smart_fill_angle_high.png new file mode 100644 index 0000000000..584a8468ec Binary files /dev/null and b/resources/images/texture_displacement/smart_fill_angle_high.png differ diff --git a/resources/images/texture_displacement/smart_fill_angle_low.png b/resources/images/texture_displacement/smart_fill_angle_low.png new file mode 100644 index 0000000000..88a6c9612f Binary files /dev/null and b/resources/images/texture_displacement/smart_fill_angle_low.png differ diff --git a/resources/images/texture_displacement/smoothing_off.png b/resources/images/texture_displacement/smoothing_off.png new file mode 100644 index 0000000000..b7f66fd330 Binary files /dev/null and b/resources/images/texture_displacement/smoothing_off.png differ diff --git a/resources/images/texture_displacement/smoothing_on.png b/resources/images/texture_displacement/smoothing_on.png new file mode 100644 index 0000000000..18ed9e00fd Binary files /dev/null and b/resources/images/texture_displacement/smoothing_on.png differ diff --git a/resources/images/texture_displacement/subdivide.gif b/resources/images/texture_displacement/subdivide.gif new file mode 100644 index 0000000000..70d8abf47a Binary files /dev/null and b/resources/images/texture_displacement/subdivide.gif differ diff --git a/resources/images/texture_displacement/tile_mirror.png b/resources/images/texture_displacement/tile_mirror.png new file mode 100644 index 0000000000..0da432ff9d Binary files /dev/null and b/resources/images/texture_displacement/tile_mirror.png differ diff --git a/resources/images/texture_displacement/tile_off.png b/resources/images/texture_displacement/tile_off.png new file mode 100644 index 0000000000..399e56dca2 Binary files /dev/null and b/resources/images/texture_displacement/tile_off.png differ diff --git a/resources/images/texture_displacement/tile_on.png b/resources/images/texture_displacement/tile_on.png new file mode 100644 index 0000000000..910fa5aa8f Binary files /dev/null and b/resources/images/texture_displacement/tile_on.png differ diff --git a/resources/images/texture_displacement/tile_repeat.png b/resources/images/texture_displacement/tile_repeat.png new file mode 100644 index 0000000000..ca9793897b Binary files /dev/null and b/resources/images/texture_displacement/tile_repeat.png differ diff --git a/resources/images/texture_displacement/tile_size_large.png b/resources/images/texture_displacement/tile_size_large.png new file mode 100644 index 0000000000..4bc2659244 Binary files /dev/null and b/resources/images/texture_displacement/tile_size_large.png differ diff --git a/resources/images/texture_displacement/tile_size_small.png b/resources/images/texture_displacement/tile_size_small.png new file mode 100644 index 0000000000..11b5bc84e7 Binary files /dev/null and b/resources/images/texture_displacement/tile_size_small.png differ diff --git a/resources/images/texture_displacement/tool_face.gif b/resources/images/texture_displacement/tool_face.gif new file mode 100644 index 0000000000..be616fdd52 Binary files /dev/null and b/resources/images/texture_displacement/tool_face.gif differ diff --git a/resources/images/texture_displacement/tool_smart_fill.gif b/resources/images/texture_displacement/tool_smart_fill.gif new file mode 100644 index 0000000000..1dc23ef8c6 Binary files /dev/null and b/resources/images/texture_displacement/tool_smart_fill.gif differ diff --git a/resources/images/texture_displacement/view_checker.png b/resources/images/texture_displacement/view_checker.png new file mode 100644 index 0000000000..0198b8581c Binary files /dev/null and b/resources/images/texture_displacement/view_checker.png differ diff --git a/resources/images/texture_displacement/view_distortion.png b/resources/images/texture_displacement/view_distortion.png new file mode 100644 index 0000000000..d8be4b187c Binary files /dev/null and b/resources/images/texture_displacement/view_distortion.png differ diff --git a/resources/images/texture_displacement/view_fast.png b/resources/images/texture_displacement/view_fast.png new file mode 100644 index 0000000000..71ed3d1953 Binary files /dev/null and b/resources/images/texture_displacement/view_fast.png differ diff --git a/resources/images/texture_displacement/view_wireframe.png b/resources/images/texture_displacement/view_wireframe.png new file mode 100644 index 0000000000..6585274de9 Binary files /dev/null and b/resources/images/texture_displacement/view_wireframe.png differ diff --git a/resources/web/homepage/css/home.css b/resources/web/homepage/css/home.css index 950e330b86..a90a8520b4 100644 --- a/resources/web/homepage/css/home.css +++ b/resources/web/homepage/css/home.css @@ -506,11 +506,6 @@ body height: 20px; } -.BtnShortcut -{ - padding-right: 18px; -} - .ShortcutBrandIcon { width: 20px; @@ -519,25 +514,6 @@ body display: block; } -.ShortcutTextRow -{ - display: flex; - align-items: center; - gap: 8px; - width: 100%; - min-width: 0; -} - -.ShortcutMark -{ - width: 14px; - height: 14px; - margin-left: auto; - color: currentColor; - opacity: 0.72; - flex: 0 0 auto; -} - /*--------------------*/ #RightBoard @@ -548,6 +524,20 @@ body overflow-y:auto; } +/*---- Cloud mode: OrcaCloud is a native pane to the right of the app panel, so this page + is reduced to its left nav column (the class is toggled by SetCloudMode in js/home.js). ----*/ +body.cloud-mode #RightBoard +{ + display: none; +} + +body.cloud-mode #LeftBoard +{ + /*---- 262px of column plus its 1px separator is the width the app gives the nav. ----*/ + height: 100%; + overflow-y: auto; +} + #ContentBoard { overflow-y:auto; diff --git a/resources/web/homepage/index.html b/resources/web/homepage/index.html index e75e8302f7..34682d3601 100644 --- a/resources/web/homepage/index.html +++ b/resources/web/homepage/index.html @@ -90,16 +90,9 @@
Recent
-
+
-
-
OrcaCloud
- -
+
OrcaCloud
diff --git a/resources/web/homepage/js/home.js b/resources/web/homepage/js/home.js index 3077dd5beb..188a9dded2 100644 --- a/resources/web/homepage/js/home.js +++ b/resources/web/homepage/js/home.js @@ -145,8 +145,36 @@ function HandleStudio( pVal ) } } +/*---- OrcaCloud opens as a native pane beside this page, so the shell only switches its + own cloud-mode state and asks the app to show or hide that pane (WebViewPanel::set_cloud_mode). ----*/ +var m_CloudMode=false; + +function SetCloudMode( bOn ) +{ + if( m_CloudMode==bOn ) + return; + + m_CloudMode=bOn; + $("body").toggleClass("cloud-mode", bOn); +} + +function GotoCloud() +{ + $(".BtnItem").removeClass("BtnItemSelected"); + $(".BtnShortcut").addClass("BtnItemSelected"); + SetCloudMode(true); + SendSimpleCommand("homepage_open_cloud"); +} + function GotoMenu( strMenu ) { + /*---- Any board in the right region means leaving the cloud pane. ----*/ + if( m_CloudMode ) + { + SetCloudMode(false); + SendSimpleCommand("homepage_close_cloud"); + } + let MenuList=$(".BtnItem"); let nAll=MenuList.length; diff --git a/scripts/gen_texture_displacement_tips.py b/scripts/gen_texture_displacement_tips.py new file mode 100644 index 0000000000..6bf7e3bdf6 --- /dev/null +++ b/scripts/gen_texture_displacement_tips.py @@ -0,0 +1,793 @@ +#!/usr/bin/env python3 +"""Draws the illustrations the texture-displacement tooltips show. + +The panel's tooltips can carry a picture under their text (see GLGizmoTextureDisplacement's +panel_tooltip()). A good many of those settings - the ones that are a shape rather than a photograph - +are better drawn from the same arithmetic the feature uses than captured from the screen, which is +what this script does: it shades a height field exactly as a relief would catch the light, so +"what Rotation turns" and "what Tile repeats" are visible rather than described. + +Settings that involve the model, the mesh or colour are not here: those want a capture of the real +tool. See docs/HLSD/tooltip-illustrations.md. + +Output goes to resources/images/texture_displacement/. Run it after changing one of the patterns +below; nothing in the build depends on it. + + python3 scripts/gen_texture_displacement_tips.py + +Needs numpy and pillow. +""" + +import os + +import numpy as np +from PIL import Image, ImageDraw + +SIZE = 256 # px, square - the panel draws these at whatever width the tooltip has +GIF_SIZE = 192 # animations are the same picture, smaller: every frame of one ships in resources/ +RELIEF = 30.0 # how hard the shading reacts to a slope; purely cosmetic + +OUT_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "resources", "images", "texture_displacement") + +# Neutral enough to sit in a tooltip in either theme: a dark ground, a mid grey for the flat surface +# and a cool near-white for the lit slopes. +SHADOW = np.array([0.13, 0.14, 0.15]) +MIDTONE = np.array([0.40, 0.42, 0.43]) +HIGHLIGHT = np.array([0.78, 0.84, 0.83]) +LIGHT = np.array([-0.45, -0.62, 0.65]) +LIGHT /= np.linalg.norm(LIGHT) + + +def grid(size=SIZE): + """Unit coordinates, -0.5 .. 0.5, y down as in an image.""" + a = (np.arange(size) + 0.5) / size - 0.5 + return np.meshgrid(a, a) + + +def shade(height): + """A height field in 0..1, lit as a relief: the picture the tooltip shows.""" + # The slope has to mean the same thing at either size, so the gradient is taken per unit of the + # picture rather than per pixel - otherwise the smaller animations would come out twice as flat. + gy, gx = np.gradient(height * RELIEF * (height.shape[0] / float(SIZE))) + normal = np.dstack([-gx, -gy, np.ones_like(height)]) + normal /= np.linalg.norm(normal, axis=2, keepdims=True) + lam = np.clip(normal @ LIGHT, 0.0, 1.0) + + # Two ramps rather than one: the dark half separates the slopes, the lit half picks up the + # accent, and the flat ground lands in the middle of both. + low = SHADOW + (MIDTONE - SHADOW) * (lam / 0.5)[..., None] + high = MIDTONE + (HIGHLIGHT - MIDTONE) * ((lam - 0.5) / 0.5)[..., None] + rgb = np.where((lam < 0.5)[..., None], low, high) + + # A touch of the height itself, so a tall feature still reads as tall where it is flat on top. + # + # Deliberately almost grey: these say what a shape does, and a relief catching the light is grey. + # A coloured one would read as a third thing the setting does, and the amount of colour would move + # with the slope - a pattern at 45 degrees would flash where the same pattern upright did not. + rgb = np.clip(rgb * (0.88 + 0.18 * height[..., None]), 0.0, 1.0) + return (rgb * 255.0 + 0.5).astype(np.uint8) + + +def vignette(rgb): + """Rounds the picture off at its border, so it does not end in a hard rectangle.""" + x, y = grid(rgb.shape[0]) + edge = np.clip((0.5 - np.maximum(np.abs(x), np.abs(y))) / 0.045, 0.0, 1.0) + return (rgb * edge[..., None]).astype(np.uint8) + + +def save_png(name, rgb): + path = os.path.join(OUT_DIR, name) + Image.fromarray(vignette(rgb)).save(path, optimize=True) + print("wrote", os.path.normpath(path), os.path.getsize(path) // 1024, "KB") + + +def save_gif(name, frames, delay_ms): + path = os.path.join(OUT_DIR, name) + images = [Image.fromarray(vignette(f)).convert("P", palette=Image.ADAPTIVE, colors=24) for f in frames] + images[0].save(path, save_all=True, append_images=images[1:], duration=delay_ms, loop=0, optimize=True) + print("wrote", os.path.normpath(path), os.path.getsize(path) // 1024, "KB") + + +def smoothstep(edge0, edge1, x): + t = np.clip((x - edge0) / (edge1 - edge0), 0.0, 1.0) + return t * t * (3.0 - 2.0 * t) + + +def blur(a, radius): + """Separable box blur, run twice - near enough a gaussian for a picture of a blur.""" + for _ in range(2): + for axis in (0, 1): + padded = np.pad(a, [(radius, radius) if i == axis else (0, 0) for i in range(2)], mode="edge") + cumulative = np.cumsum(padded, axis=axis) + cumulative = np.concatenate([np.zeros_like(np.take(cumulative, [0], axis=axis)), cumulative], axis=axis) + n = a.shape[axis] + hi = np.take(cumulative, np.arange(n) + 2 * radius + 1, axis=axis) + lo = np.take(cumulative, np.arange(n), axis=axis) + a = (hi - lo) / (2.0 * radius + 1.0) + return a + + +# --- the patterns ------------------------------------------------------------------------------ +# +# One motif runs through nearly all of them - a ring inside a square frame. Using the same shape for +# every setting is what lets the pictures be compared: whatever changes between two of them is the +# setting, because nothing else is different. + + +def _motif_cell(u, v): + """The motif within one cell, u and v in -0.5 .. 0.5.""" + r = np.hypot(u, v) + ring = np.clip(1.0 - np.abs(r - 0.26) / 0.085, 0.0, 1.0) + frame_d = np.maximum(np.abs(u), np.abs(v)) + frame = np.clip(1.0 - np.abs(frame_d - 0.42) / 0.055, 0.0, 1.0) + return np.clip(np.maximum(ring, frame) ** 0.7, 0.0, 1.0) + + +def motif(repeats, size=SIZE): + """The motif laid out `repeats` times across the picture.""" + x, y = grid(size) + return _motif_cell((x * repeats) % 1.0 - 0.5, (y * repeats) % 1.0 - 0.5) + + +def decal(motif_scale=0.46): + """One copy of the motif in the middle of a flat field - what Tile off leaves.""" + x, y = grid() + u, v = x / motif_scale, y / motif_scale + inside = (np.maximum(np.abs(u), np.abs(v)) <= 0.5).astype(float) + return _motif_cell(u, v) * inside + + +def ridges(angle_deg, period=0.16, size=SIZE): + """Parallel ridges at an angle: the simplest pattern whose direction is unmistakable.""" + x, y = grid(size) + a = np.radians(angle_deg) + t = (x * np.cos(a) + y * np.sin(a)) / period + return 0.2 + 0.6 * (0.5 + 0.5 * np.sin(2.0 * np.pi * t)) + + +def bosses(repeats, size=SIZE): + """Rounded domes standing on a flat field - a shape with an unmistakable right way up.""" + x, y = grid(size) + u = (x * repeats) % 1.0 - 0.5 + v = (y * repeats) % 1.0 - 0.5 + return smoothstep(0.36, 0.08, np.hypot(u, v)) + + +def chevron_tiles(mirrored, repeats=3): + """Cells of diagonal ridges, laid out repeated or mirrored. + + Repeated, every cell starts the pattern over and the seam between two of them is a step; mirrored, + each cell is the reflection of its neighbour and the ridges meet across the seam as chevrons. That + seam is the whole of what the Repeat/Mirror pair does, and a motif symmetric in itself would hide + it entirely. + """ + + def axis(t): + if not mirrored: + return (t * repeats) % 1.0 + s = (t * repeats) % 2.0 + return np.where(s < 1.0, s, 2.0 - s) + + x, y = grid() + t = (axis(x + 0.5) + axis(y + 0.5)) * 1.5 + return 0.22 + 0.56 * (0.5 + 0.5 * np.cos(2.0 * np.pi * t)) + + +def painted_area(size=SIZE, radius=0.44): + """A round painted area in the middle of bare surface, with a soft edge so it does not alias.""" + x, y = grid(size) + return smoothstep(radius, radius - 1.5 / size, np.hypot(x, y)) + + +def painted_patch(fade, size=SIZE): + """The motif inside a painted area, either stopping at its edge or fading into it.""" + x, y = grid(size) + r = np.hypot(x, y) / 0.44 + amount = smoothstep(1.0, 0.55, r) if fade else 1.0 + return motif(3, size) * painted_area(size) * amount + + +def profile_wave(size=SIZE, periods=2.5): + """A one-dimensional height profile with clear highs, lows and a flat stretch between them.""" + t = (np.arange(size) + 0.5) / size * periods * 2.0 * np.pi + h = 0.5 + 0.34 * np.cos(t) + 0.16 * np.cos(2.0 * t + 0.9) + return np.clip((h - h.min()) / (h.max() - h.min()), 0.0, 1.0) + + +def profile_view(height_1d, midlevel, amplitude=0.26, size=SIZE): + """A side view of the surface: material below, air above, and the bare surface as a dashed line. + + Shading cannot say how high something is - it reads slopes, and a height field moved up or down as + a whole has exactly the slopes it had before. Midlevel is entirely about where the texture sits + relative to the surface it is on, so it is drawn in section, where that is the one thing visible. + """ + base = 0.52 * size + surface = base - (height_1d - midlevel) * amplitude * size + rows = np.arange(size)[:, None] + + covered = np.clip(rows - surface[None, :] + 0.5, 0.0, 1.0) # 1 where there is material + air = np.array([0.11, 0.12, 0.13]) + material = np.array([0.44, 0.46, 0.47]) + rgb = air * (1.0 - covered)[..., None] + material * covered[..., None] + + # The lit top face, and the bare surface the texture is measured against. + edge = np.clip(1.0 - np.abs(rows - surface[None, :]) / 1.6, 0.0, 1.0) + rgb = rgb * (1.0 - edge[..., None]) + np.array([0.80, 0.86, 0.85]) * edge[..., None] + dash = ((np.arange(size) // 7) % 2 == 0)[None, :] + line = (np.abs(rows - base) < 0.9) & dash + rgb[line] = np.array([0.58, 0.62, 0.62]) + return (np.clip(rgb, 0.0, 1.0) * 255.0 + 0.5).astype(np.uint8) + + +def dome(size=SIZE): + """One broad swell filling the picture - the layer underneath, for the blend pictures.""" + x, y = grid(size) + return smoothstep(0.52, 0.02, np.hypot(x, y)) + + +# --- meshes, cursors and sections --------------------------------------------------------------- +# +# The second family of pictures. The settings above are about a pattern, and a shaded relief is what a +# pattern looks like; these are about a tool or about the mesh, where what matters is which triangles +# exist and which of them are painted. So they are drawn flat, the way the panel's own wireframe and +# paint overlays draw them, with one accent colour meaning "painted" and nothing else coloured. + +SS = 3 # supersampling: PIL fills polygons without antialiasing, so draw big and shrink + +INK = (0.62, 0.67, 0.67) # mesh edges +BARE = (0.28, 0.30, 0.31) # unpainted surface +PAINT = (0.20, 0.47, 0.45) # painted with the active layer, in the panel's own accent +CURSOR = (0.92, 0.95, 0.95) +MARGIN = 0.05 # keeps the mesh off the picture's border, where the vignette darkens it + + +def _px(p, size): + """Unit coordinates to pixels, inside the margin.""" + return ((MARGIN + p[0] * (1.0 - 2.0 * MARGIN)) * size, (MARGIN + p[1] * (1.0 - 2.0 * MARGIN)) * size) + + +def _rgb255(c): + return tuple(int(round(v * 255.0)) for v in c) + + +def raster(draw_fn, size=SIZE, background=BARE): + """Runs draw_fn(draw, size_in_pixels) on a supersampled canvas and hands back the shrunk result. + + `background` is a colour, or a picture already drawn by the relief half of this script - which is + how a mesh is shown sitting on the surface it refines. + """ + if isinstance(background, np.ndarray): + image = Image.fromarray(background).resize((size * SS, size * SS), Image.BILINEAR) + else: + image = Image.new("RGB", (size * SS, size * SS), _rgb255(background)) + draw_fn(ImageDraw.Draw(image), size * SS) + return np.asarray(image.resize((size, size), Image.LANCZOS)).astype(np.uint8) + + +def tri_mesh(n, jitter=0.0, seed=1): + """A square patch of triangles, optionally with its inner vertices nudged off the grid. + + Jitter is not decoration: a perfectly regular grid reads as graph paper, and the point of these + pictures is a mesh over a surface. + """ + rng = np.random.default_rng(seed) + v = np.stack(np.meshgrid(np.linspace(0.0, 1.0, n + 1), np.linspace(0.0, 1.0, n + 1)), axis=-1) + if jitter: + v[1:n, 1:n] += (rng.random((n - 1, n - 1, 2)) - 0.5) * (jitter / n) + tris = [] + for i in range(n): + for j in range(n): + tris.append((v[i, j], v[i, j + 1], v[i + 1, j + 1])) + tris.append((v[i, j], v[i + 1, j + 1], v[i + 1, j])) + return tris + + +def centroids(tris): + return np.array([np.mean(t, axis=0) for t in tris]) + + +def neighbours(tris): + """Which triangles share an edge with which, keyed on the rounded vertex positions.""" + edges = {} + for i, t in enumerate(tris): + for a, b in ((0, 1), (1, 2), (2, 0)): + key = tuple(sorted((tuple(np.round(t[a], 6)), tuple(np.round(t[b], 6))))) + edges.setdefault(key, []).append(i) + out = [[] for _ in tris] + for shared in edges.values(): + if len(shared) == 2: + out[shared[0]].append(shared[1]) + out[shared[1]].append(shared[0]) + return out + + +def draw_mesh(draw, size, tris, painted=None, edge=INK, edge_width=0.7): + fill_bare, fill_paint = _rgb255(BARE), _rgb255(PAINT) + for i, t in enumerate(tris): + draw.polygon([_px(p, size) for p in t], + fill=fill_paint if painted is not None and painted[i] else fill_bare, + outline=_rgb255(edge), width=max(1, int(edge_width * SS))) + + +def draw_brush(draw, size, centre, radius, filled=False): + """The brush cursor: a ring, which is how the gizmo draws it on the model.""" + c = _px(centre, size) + r = radius * (1.0 - 2.0 * MARGIN) * size + if filled: + draw.ellipse([c[0] - r, c[1] - r, c[0] + r, c[1] + r], fill=(255, 255, 255, 40)) + draw.ellipse([c[0] - r, c[1] - r, c[0] + r, c[1] + r], outline=_rgb255(CURSOR), width=max(1, int(1.6 * SS))) + + +def draw_pointer(draw, size, at): + """A small arrow, for the tools that are clicked rather than dragged.""" + x, y = _px(at, size) + k = 0.055 * size + draw.polygon([(x, y), (x, y + 1.45 * k), (x + 0.38 * k, y + 1.05 * k), + (x + 0.62 * k, y + 1.55 * k), (x + 0.90 * k, y + 1.40 * k), + (x + 0.66 * k, y + 0.92 * k), (x + 1.05 * k, y + 0.84 * k)], + fill=_rgb255(CURSOR), outline=(30, 32, 34), width=max(1, int(0.9 * SS))) + + +def stroke_path(t): + """The path a demonstrated brush stroke follows, t in 0..1.""" + return np.array([0.14 + 0.72 * t, 0.46 + 0.22 * np.sin(2.0 * np.pi * t * 1.1)]) + + +def brush_frames(size, erase, steps=14, radius=0.115, hold=3): + tris = tri_mesh(9, jitter=0.55) + cents = centroids(tris) + painted = np.ones(len(tris), bool) if erase else np.zeros(len(tris), bool) + frames = [] + for k in range(steps): + centre = stroke_path(k / (steps - 1.0)) + hit = np.linalg.norm(cents - centre, axis=1) < radius + painted = painted & ~hit if erase else painted | hit + state = painted.copy() + frames.append(raster(lambda d, s, st=state, c=centre: (draw_mesh(d, s, tris, st), draw_brush(d, s, c, radius)), size)) + frames += [frames[-1]] * hold + return frames + + +def face_frames(size, steps=9, hold=3): + """The Face tool: one triangle per click, under a pointer.""" + tris = tri_mesh(7, jitter=0.5, seed=4) + cents = centroids(tris) + order = np.argsort(np.linalg.norm(cents - np.array([0.5, 0.5]), axis=1))[:steps] + painted = np.zeros(len(tris), bool) + frames = [] + for i in order: + painted[i] = True + state = painted.copy() + at = cents[i] + frames.append(raster(lambda d, s, st=state, a=at: (draw_mesh(d, s, tris, st), draw_pointer(d, s, a)), size)) + frames += [frames[-1]] * hold + return frames + + +def flood_frames(size, creases, steps=12, hold=3, seed=7): + """The Connected area tool: a flood from one click, stopped by the creases it may not cross. + + `creases` is a list of x positions; a triangle pair straddling one cannot pass the fill between + them, which is what an edge sharper than the angle threshold does on the model. + """ + tris = tri_mesh(9, jitter=0.5, seed=seed) + cents = centroids(tris) + adj = neighbours(tris) + blocked = lambda i, j: any((cents[i][0] - x) * (cents[j][0] - x) < 0.0 for x in creases) + + seed_tri = int(np.argmin(np.linalg.norm(cents - np.array([0.22, 0.5]), axis=1))) + painted = np.zeros(len(tris), bool) + painted[seed_tri] = True + frontier = [seed_tri] + frames = [] + for _ in range(steps): + state = painted.copy() + frames.append(raster(lambda d, s, st=state: (draw_mesh(d, s, tris, st), + draw_creases(d, s, creases), + draw_pointer(d, s, cents[seed_tri])), size)) + nxt = [] + for i in frontier: + for j in adj[i]: + if not painted[j] and not blocked(i, j): + painted[j] = True + nxt.append(j) + frontier = nxt + frames += [frames[-1]] * hold + return frames + + +def draw_creases(draw, size, creases): + """A fold too sharp for the fill to cross: drawn dark with a bright crest, like a real one.""" + for x in creases: + a, b = _px((x, -0.02), size), _px((x, 1.02), size) + draw.line([a, b], fill=_rgb255((0.08, 0.09, 0.10)), width=max(1, int(4.0 * SS))) + draw.line([a, b], fill=_rgb255((0.97, 0.99, 0.99)), width=max(1, int(1.4 * SS))) + + + +def split4(tri): + a, b, c = tri + ab, bc, ca = (a + b) * 0.5, (b + c) * 0.5, (c + a) * 0.5 + return [(a, ab, ca), (ab, b, bc), (ca, bc, c), (ab, bc, ca)] + + +def refine(tris, density, max_depth, threshold=0.45): + """Splits a triangle into four wherever `density` at its middle asks for it, up to max_depth.""" + + def go(tri, depth): + if depth >= max_depth: + return [tri] + centre = np.mean(tri, axis=0) + if density(centre[0], centre[1]) < threshold: + return [tri] + return [out for part in split4(tri) for out in go(part, depth + 1)] + + return [out for tri in tris for out in go(tri, 0)] + + +def sampler(field): + """Looks a numpy field up at unit coordinates, for use as a density.""" + n = field.shape[0] + return lambda x, y: float(field[int(np.clip(y * n, 0, n - 1)), int(np.clip(x * n, 0, n - 1))]) + + +def feature_density(size=192): + """High where the pattern bends, which is where feature-adaptive refinement spends triangles. + + One large copy of the motif rather than a field of them: the point is that the triangles gather + somewhere and not elsewhere, and a pattern that bends everywhere has no elsewhere to show. + """ + m = motif(1, size) + gy, gx = np.gradient(m) + g = blur(np.hypot(gx, gy), 2) + return g / max(g.max(), 1e-6) + + +def irregular_mesh(seed=3): + """The uneven mesh a model arrives with: coarse here, fine there, nothing of one size.""" + rng = np.random.default_rng(seed) + tris = tri_mesh(4, jitter=0.9, seed=seed) + out = [] + for t in tris: + out.extend(split4(t) if rng.random() < 0.45 else [t]) + final = [] + for t in out: + final.extend(split4(t) if rng.random() < 0.3 else [t]) + return final + + +def snap_to_crease(tris, crease, distance=0.07): + """Pulls every vertex near the crease onto it, so mesh edges run along it instead of across.""" + (x0, y0), (x1, y1) = crease + d = np.array([x1 - x0, y1 - y0], float) + d /= np.linalg.norm(d) + + def snap(p): + t = np.dot(p - np.array([x0, y0]), d) + foot = np.array([x0, y0]) + t * d + return foot if np.linalg.norm(p - foot) < distance else p + + return [tuple(snap(np.asarray(v, float)) for v in t) for t in tris] + + +def sliver_mesh(seed=5): + """A mesh carrying the thin triangles refinement inherits from a model's own triangulation.""" + rng = np.random.default_rng(seed) + tris = tri_mesh(7, jitter=0.4, seed=seed) + out = [] + for t in tris: + if rng.random() < 0.45: + a, b, c = (np.asarray(v, float) for v in t) + mid = (b + c) * 0.5 + a = mid + (a - mid) * 0.08 # all but flattened onto the opposite edge + out.append((a, b, c)) + else: + out.append(t) + return out + + +def draw_profile(draw, size, height_1d, baseline=0.62, amplitude=0.30): + """A side view of a surface, as a filled region under its profile.""" + n = len(height_1d) + top = [(i / (n - 1.0) * size, (baseline - (height_1d[i] - 0.5) * amplitude) * size) for i in range(n)] + draw.polygon(top + [(size, size * 1.1), (0, size * 1.1)], fill=_rgb255((0.44, 0.46, 0.47))) + draw.line(top, fill=_rgb255((0.82, 0.88, 0.87)), width=max(1, int(1.8 * SS))) + + +def bayer(size, n=4): + """An ordered dither matrix tiled over the picture, for the mixing illustrations.""" + m = np.array([[0]]) + while m.shape[0] < n: + m = np.block([[4 * m, 4 * m + 2], [4 * m + 3, 4 * m + 1]]) + m = (m + 0.5) / m.size + return np.tile(m, (size // m.shape[0] + 1, size // m.shape[1] + 1))[:size, :size] + + +def levels_image(levels, dither=False, speckle=0.0, size=SIZE, seed=11): + """A smooth ramp reduced to a handful of greys - what a bake does to a photograph's colours. + + Flat rather than lit: this family of settings is about which filament a pixel ends up as, and a + relief would only add a second thing changing between two pictures that are meant to differ in + one. + """ + x, y = grid(size) + ramp = np.clip(0.5 + 0.5 * np.cos(2.0 * np.pi * (x + 0.25 * y)), 0.0, 1.0) + noise = bayer(size) - 0.5 if dither else 0.0 + q = np.round(np.clip(ramp + noise / max(levels - 1, 1), 0.0, 1.0) * (levels - 1)) / (levels - 1) + if speckle > 0.0: + rng = np.random.default_rng(seed) + hit = rng.random((size, size)) < speckle + q = np.where(hit, rng.integers(0, levels, (size, size)) / (levels - 1), q) + grey = 0.16 + 0.62 * q + return (np.dstack([grey, grey * 1.03, grey * 1.02]).clip(0.0, 1.0) * 255.0 + 0.5).astype(np.uint8) + + +def draw_mesh_lines(draw, size, tris, colour=(0.90, 0.94, 0.94), width=0.8): + """Only the edges, for drawing a mesh over a picture of the surface it sits on.""" + for t in tris: + pts = [_px(p, size) for p in t] + draw.line(pts + [pts[0]], fill=_rgb255(colour), width=max(1, int(width * SS))) + + +def draw_line(draw, size, segment, colour=(0.97, 0.99, 0.99)): + a, b = _px(segment[0], size), _px(segment[1], size) + draw.line([a, b], fill=_rgb255((0.08, 0.09, 0.10)), width=max(1, int(4.0 * SS))) + draw.line([a, b], fill=_rgb255(colour), width=max(1, int(1.4 * SS))) + + +def posterize(rgb, levels): + """The shaded picture reduced to flat bands - what the fast preview's per-fragment quantizing + does to a surface that the real preview shades smoothly.""" + v = rgb.astype(float) / 255.0 + return (np.round(v * (levels - 1)) / (levels - 1) * 255.0 + 0.5).astype(np.uint8) + + +def with_checker(rgb, squares=10, strength=0.30, warp=False): + """A checker laid over the surface, evenly or stretched. + + Even squares are what the Checker view is for - a texture laid out without stretching. The warped + version is the same squares through a mapping that does stretch, which is what the Distortion view + is there to find: cells crowded in one place and pulled apart in another. + """ + size = rgb.shape[0] + x, y = grid(size) + u, v = (np.sign(x) * np.abs(2.0 * x) ** 2.4 * 0.5, y * (1.0 + 0.9 * np.abs(x))) if warp else (x, y) + cells = (np.floor((u + 0.5) * squares) + np.floor((v + 0.5) * squares)) % 2.0 + return (rgb * (1.0 - strength * cells)[..., None]).astype(np.uint8) + + +def projected_sphere(kind, size=SIZE, squares=9): + """A ball with a checker laid on it by one of the panel's projections. + + One shape, five mappings: what differs between the pictures is only where the squares go, which is + the whole of what choosing a projection does. A sphere is the shape that shows it - every one of + these mappings is well behaved on a flat face and tells itself apart on a curved one. + """ + a = (np.arange(size) + 0.5) / size * 2.24 - 1.12 + x, y = np.meshgrid(a, a) + inside = x * x + y * y <= 1.0 + z = np.sqrt(np.clip(1.0 - x * x - y * y, 0.0, 1.0)) + + lam = np.clip(x * LIGHT[0] + y * LIGHT[1] + z * LIGHT[2], 0.0, 1.0) + rgb = SHADOW + (HIGHLIGHT - SHADOW) * (lam ** 0.85)[..., None] + + around = np.arctan2(x, z) / (2.0 * np.pi) + 0.5 + if kind == "sphere": + u, v = around, np.arccos(np.clip(-y, -1.0, 1.0)) / np.pi + elif kind == "cylinder": + u, v = around, (y + 1.0) * 0.5 + elif kind == "view": + u, v = (x + 1.0) * 0.5, (y + 1.0) * 0.5 + elif kind == "cube": + axis = np.argmax(np.abs(np.dstack([x, y, z])), axis=2) + u = np.where(axis == 0, z, x) + v = np.where(axis == 1, z, y) + u, v = (u + 1.0) * 0.5, (v + 1.0) * 0.5 + else: + raise ValueError(kind) + + cells = (np.floor(u * squares * 2.0) + np.floor(v * squares)) % 2.0 + rgb = rgb * (1.0 - 0.34 * cells)[..., None] + rgb = np.where(inside[..., None], rgb, np.array([0.13, 0.14, 0.15])) + return (np.clip(rgb, 0.0, 1.0) * 255.0 + 0.5).astype(np.uint8) + + +def uv_islands(size=SIZE, squares=9, seed=12): + """The flat layout an unwrap produces: the surface cut into islands and laid out side by side. + + Not a projection onto the model like the other four, so not drawn on one - an unwrap is the model + carrying its own coordinates, and this is what those look like. + """ + rng = np.random.default_rng(seed) + x, y = grid(size) + cells = (np.floor((x + 0.5) * squares * 2.0) + np.floor((y + 0.5) * squares)) % 2.0 + checker = (np.array([0.40, 0.43, 0.43]) + np.array([0.22, 0.24, 0.24]) * (1.0 - cells)[..., None]) + + def blob(centre, radius, lobes): + angles = np.linspace(0.0, 2.0 * np.pi, 26, endpoint=False) + wobble = 1.0 + 0.22 * np.sin(lobes * angles + rng.random() * 6.0) + return [(centre[0] + np.cos(t) * radius * w, centre[1] + np.sin(t) * radius * w) + for t, w in zip(angles, wobble)] + + islands = [blob((0.31, 0.32), 0.21, 3), blob((0.72, 0.30), 0.17, 4), + blob((0.34, 0.74), 0.17, 4), blob((0.72, 0.71), 0.20, 3)] + + mask = np.asarray(raster(lambda d, px: [d.polygon([(p[0] * px, p[1] * px) for p in island], fill=(255, 255, 255)) + for island in islands], + size, background=(0.0, 0.0, 0.0))).astype(float)[..., 0] / 255.0 + rgb = checker * mask[..., None] + np.array([0.13, 0.14, 0.15]) * (1.0 - mask)[..., None] + out = (np.clip(rgb, 0.0, 1.0) * 255.0 + 0.5).astype(np.uint8) + return raster(lambda d, px: [d.polygon([(p[0] * px, p[1] * px) for p in island], outline=_rgb255(INK), + width=max(1, int(1.1 * SS))) + for island in islands], + size, background=out) + + +def main(): + os.makedirs(OUT_DIR, exist_ok=True) + + # Tile: one copy against the pattern filling the painted area. + save_png("tile_off.png", shade(decal())) + save_png("tile_on.png", shade(motif(3))) + + # Tile size: how wide one copy is. + save_png("tile_size_large.png", shade(motif(2))) + save_png("tile_size_small.png", shade(motif(5))) + + # Repeat against Mirror, where the seam between two copies is the whole point. + save_png("tile_repeat.png", shade(chevron_tiles(mirrored=False))) + save_png("tile_mirror.png", shade(chevron_tiles(mirrored=True))) + + # Invert: the negative of the image. Domes rather than the ring motif, which is close enough to + # its own negative that inverting it would look like nothing had happened. + save_png("invert_off.png", shade(bosses(3))) + save_png("invert_on.png", shade(1.0 - bosses(3))) + + # Smoothing: a stepped image against the same one blurred before it is used. Domes again, where + # the steps show up as contour rings - what a photograph with too few grey levels does. + stepped = np.floor(bosses(3) * 5.0) / 4.0 + save_png("smoothing_off.png", shade(np.clip(stepped, 0.0, 1.0))) + save_png("smoothing_on.png", shade(np.clip(blur(stepped, max(2, SIZE // 40)), 0.0, 1.0))) + + # Edge fade: relief that stops at the edge of the painted area against relief that sinks into it. + save_png("edge_fade_off.png", shade(painted_patch(fade=False))) + save_png("edge_fade_on.png", shade(painted_patch(fade=True))) + + # Blend: piling relief on top of the layer below against using it as a mask over it. Add keeps + # both shapes, Multiply keeps the motif only where the layer under it is high. + base = dome() + save_png("blend_add.png", shade(np.clip(0.55 * base + 0.42 * motif(3), 0.0, 1.0))) + save_png("blend_multiply.png", shade(base * motif(3))) + + # Rotation: a half turn brings parallel ridges back onto themselves, so a single sweep loops with + # no jump and the file stays a fraction of the size a there-and-back one would be. + steps = 16 + save_gif("rotation.gif", [shade(ridges(180.0 * i / steps, size=GIF_SIZE)) for i in range(steps)], delay_ms=100) + + # Depth and Midlevel are both about where the relief sits relative to the surface it is on, so + # both are drawn as a painted area in the middle of bare surface, which is that reference. Without + # it neither would show: shading reads slopes, and a height field that moves up or down as a whole + # has exactly the same slopes it had before. + # + # A cosine over the frame count starts and ends at the same value with no step in between, so a + # single pass through it loops. + area = painted_area(GIF_SIZE) + pattern = motif(3, GIF_SIZE) + sweep = [0.5 - 0.5 * np.cos(2.0 * np.pi * i / steps) for i in range(steps)] + + # Depth: the relief growing out of the surface and settling back flush with it. + frames = [shade(np.clip(0.5 + 0.45 * pattern * (0.08 + 0.92 * t) * area, 0.0, 1.0)) for t in sweep] + save_gif("depth.gif", frames, delay_ms=100) + + # Midlevel: the grey that stays put, sweeping from "the whole texture pushes out" through + # "mid-grey stays where the surface is" to "the whole of it cuts in". Drawn in section - see + # profile_view() for why this one is not a relief like the rest. + wave = profile_wave(GIF_SIZE) + frames = [profile_view(wave, t, size=GIF_SIZE) for t in sweep] + save_gif("midlevel.gif", frames, delay_ms=100) + + # The paint tools, each shown doing the one thing that tells it apart from the others. + save_gif("paint.gif", brush_frames(GIF_SIZE, erase=False), delay_ms=110) + save_gif("erase.gif", brush_frames(GIF_SIZE, erase=True), delay_ms=110) + save_gif("tool_face.gif", face_frames(GIF_SIZE), delay_ms=180) + save_gif("tool_smart_fill.gif", flood_frames(GIF_SIZE, creases=[0.63]), delay_ms=110) + + # Brush size: the ring, and what it covers, over one size and back. + brush_tris = tri_mesh(9, jitter=0.55, seed=2) + brush_cents = centroids(brush_tris) + frames = [] + for i in range(steps): + r = 0.07 + 0.16 * (0.5 - 0.5 * np.cos(2.0 * np.pi * i / steps)) + under = np.linalg.norm(brush_cents - np.array([0.5, 0.5]), axis=1) < r + frames.append(raster(lambda d, sz, u=under, rr=r: (draw_mesh(d, sz, brush_tris, u), + draw_brush(d, sz, (0.5, 0.5), rr)), GIF_SIZE)) + save_gif("cursor_size.gif", frames, delay_ms=90) + + # Angle threshold: the same fill, let past one fold and then past both. + for name, creases in (("smart_fill_angle_low.png", [0.40, 0.70]), ("smart_fill_angle_high.png", [0.70])): + done = flood_frames(SIZE, creases=creases, steps=22, hold=0)[-1] + save_png(name, done) + + # Whole model: every face painted, and every face cleared. + whole = tri_mesh(9, jitter=0.55, seed=2) + save_png("select_all.png", raster(lambda d, sz: draw_mesh(d, sz, whole, np.ones(len(whole), bool)), SIZE)) + save_png("erase_all.png", raster(lambda d, sz: draw_mesh(d, sz, whole, np.zeros(len(whole), bool)), SIZE)) + + # The views the panel offers over the painted area. + relief = shade(motif(3)) + save_png("view_fast.png", posterize(relief, 3)) + # Checker and Distortion are about how the texture is laid out, not about the texture, so they go + # on a plain swell where the checker itself is what there is to look at. + plain = shade(0.25 + 0.5 * dome()) + save_png("view_checker.png", with_checker(plain, squares=7, strength=0.40)) + save_png("view_distortion.png", with_checker(plain, squares=7, strength=0.40, warp=True)) + save_png("view_wireframe.png", raster(lambda d, sz: draw_mesh_lines(d, sz, tri_mesh(9, jitter=0.55, seed=2)), + SIZE, background=relief)) + + # The projections: one ball, the checker put on it five different ways. + for kind in ("cube", "cylinder", "sphere", "view"): + save_png("map_%s.png" % kind, projected_sphere(kind)) + save_png("map_unwrap.png", uv_islands()) + + # Refinement: where the triangles go, and how many. + density_feature = sampler(feature_density()) + coarse = tri_mesh(3) + save_png("adaptive_off.png", raster(lambda d, sz: draw_mesh(d, sz, refine(coarse, lambda x, y: 1.0, 2)), SIZE)) + save_png("adaptive_on.png", raster(lambda d, sz: draw_mesh(d, sz, refine(coarse, density_feature, 3)), SIZE)) + + disc = sampler(painted_area(192, radius=0.34)) + painted_mesh = refine(coarse, disc, 3) + save_png("painted_only_on.png", + raster(lambda d, sz: draw_mesh(d, sz, painted_mesh, + np.array([disc(*np.mean(t, axis=0)) > 0.5 for t in painted_mesh])), SIZE)) + everywhere = refine(coarse, lambda x, y: 1.0, 3) + save_png("painted_only_off.png", + raster(lambda d, sz: draw_mesh(d, sz, everywhere, + np.array([disc(*np.mean(t, axis=0)) > 0.5 for t in everywhere])), SIZE)) + + # Subdivide: every triangle into four, a step at a time. + level = tri_mesh(2) + frames = [] + for _ in range(4): + frames.append(raster(lambda d, sz, m=level: draw_mesh(d, sz, m), GIF_SIZE)) + level = [out for t in level for out in split4(t)] + save_gif("subdivide.gif", frames, delay_ms=650) + + # Remesh: the model's own uneven triangulation, rebuilt at one size. + save_png("remesh_before.png", raster(lambda d, sz: draw_mesh(d, sz, irregular_mesh()), SIZE)) + save_png("remesh_after.png", raster(lambda d, sz: draw_mesh(d, sz, tri_mesh(8, jitter=0.35, seed=9)), SIZE)) + + # Hard edges: a fold the remesh runs across, against one it lays its edges along. + crease = ((0.06, 0.84), (0.94, 0.20)) + across = tri_mesh(5, jitter=0.45, seed=6) + save_png("preserve_edges_off.png", + raster(lambda d, sz: (draw_mesh(d, sz, across), draw_line(d, sz, crease)), SIZE)) + save_png("preserve_edges_on.png", + raster(lambda d, sz: (draw_mesh(d, sz, snap_to_crease(across, crease, 0.13)), + draw_line(d, sz, crease)), SIZE)) + + # Thin triangles, and the same mesh without them. + save_png("collapse_slivers_off.png", raster(lambda d, sz: draw_mesh(d, sz, sliver_mesh()), SIZE)) + save_png("collapse_slivers_on.png", raster(lambda d, sz: draw_mesh(d, sz, tri_mesh(7, jitter=0.4, seed=5)), SIZE)) + + # Smoothing the geometry after the texture is in it: the steps relax out of the surface. + stepped_profile = np.floor(profile_wave(GIF_SIZE, periods=2.0) * 5.0) / 4.0 + frames = [] + for t in sweep: + h = stepped_profile.copy() + for _ in range(int(round(t * 6))): + h = blur(h[None, :], 2)[0] + frames.append(raster(lambda d, sz, hh=h: draw_profile(d, sz, hh), GIF_SIZE, background=(0.11, 0.12, 0.13))) + save_gif("geometry_smoothing.gif", frames, delay_ms=100) + + # Mixing, how many mixes, and denoise - all about which filament a spot ends up as, so all flat. + save_png("mix_off.png", levels_image(4)) + save_png("mix_on.png", levels_image(4, dither=True)) + save_png("mixed_colors_few.png", levels_image(3, dither=True)) + save_png("mixed_colors_many.png", levels_image(8, dither=True)) + save_png("denoise_off.png", levels_image(5, dither=True, speckle=0.05)) + save_png("denoise_on.png", levels_image(5, dither=True)) + + +if __name__ == "__main__": + main() diff --git a/scripts/linux.d/suse b/scripts/linux.d/suse index ede48b692c..5348f5b8ac 100644 --- a/scripts/linux.d/suse +++ b/scripts/linux.d/suse @@ -22,12 +22,12 @@ REQUIRED_DEV_PACKAGES=( libtool m4 Mesa-libGL-devel - ninja-build + ninja openssl-devel perl-FindBin-Real texinfo wayland-protocols-devel - webkit2gtk4-devel + webkitgtk3-devel wget libcurl-devel pkgconf diff --git a/src/OrcaSlicer.cpp b/src/OrcaSlicer.cpp index 2a158f4b12..ef0e4bbe3a 100644 --- a/src/OrcaSlicer.cpp +++ b/src/OrcaSlicer.cpp @@ -144,6 +144,7 @@ #include "libslic3r/ExPolygon.hpp" #include "libslic3r/Exception.hpp" #include "libslic3r/GCode/GCodeProcessor.hpp" +#include "libslic3r/GCode/GCodeStatistics.hpp" #include "libslic3r/GCode/ToolOrdering.hpp" #include "libslic3r/ObjectID.hpp" #include "libslic3r/PresetBundle.hpp" @@ -207,6 +208,7 @@ std::map cli_errors = { {CLI_OBJECT_ORIENT_FAILED, "An error occurred when auto-orienting object(s)."}, {CLI_MODIFIED_PARAMS_TO_PRINTER, "Found modified parameter in printer preset in the 3mf file, which should not be changed."}, {CLI_FILE_VERSION_NOT_SUPPORTED, "Unsupported 3MF version. Please make sure the 3MF file was created with the official version of Bambu Studio, not a beta version."}, + {CLI_EXPORT_STATISTICS_ERROR, "Failed exporting the G-code statistics."}, {CLI_NO_SUITABLE_OBJECTS, "The plate has nothing to slice: it is empty, or no object on it is both printable and fully inside the print volume."}, {CLI_VALIDATE_ERROR, "There are some incorrect slicing parameters in the 3mf. Please verify the slicing of all plates in Orca Slicer before uploading."}, {CLI_OBJECTS_PARTLY_INSIDE, "Some objects are located over the boundary of the heated bed."}, @@ -1539,6 +1541,9 @@ int CLI::run(int argc, char **argv) if (allow_mix_temp_option) allow_mix_temp = allow_mix_temp_option->value; + const ConfigOptionBool* export_statistics_option = m_config.option("export_statistics"); + const bool export_statistics = export_statistics_option != nullptr && export_statistics_option->value; + ConfigOptionBool* avoid_extrusion_cali_region_option = m_config.option("avoid_extrusion_cali_region"); if (avoid_extrusion_cali_region_option) avoid_extrusion_cali_region = avoid_extrusion_cali_region_option->value; @@ -7081,6 +7086,16 @@ int CLI::run(int argc, char **argv) record_exit_reson(outfile_dir, CLI_GCODE_PATH_IN_UNPRINTABLE_AREA, index + 1, cli_errors[CLI_GCODE_PATH_IN_UNPRINTABLE_AREA], sliced_info); flush_and_exit(CLI_GCODE_PATH_IN_UNPRINTABLE_AREA); } + // Without an output directory the G-code is a temporary file, kept only in an exported 3MF. + if (export_statistics && !outfile_dir.empty()) { + try { + export_gcode_statistics(*gcode_result, gcode_statistics_path(outfile)); + } catch (const std::exception &ex) { + BOOST_LOG_TRIVIAL(error) << "plate " << index + 1 << ": " << ex.what(); + record_exit_reson(outfile_dir, CLI_EXPORT_STATISTICS_ERROR, index + 1, cli_errors[CLI_EXPORT_STATISTICS_ERROR], sliced_info); + flush_and_exit(CLI_EXPORT_STATISTICS_ERROR); + } + } //outfile_final = (dynamic_cast(print))->print_statistics().finalize_output_path(outfile); @@ -7209,7 +7224,7 @@ int CLI::run(int argc, char **argv) std::vector thumbnails, no_light_thumbnails, top_thumbnails, pick_thumbnails; std::vector plate_bboxes; PlateDataPtrs plate_data_list; - partplate_list.store_to_3mf_structure(plate_data_list); + partplate_list.store_to_3mf_structure(plate_data_list, true, -1, export_statistics); if (sliced_plate == -1) { for (int i = 0; i < plate_data_list.size(); i++) { diff --git a/src/libslic3r/AppConfig.cpp b/src/libslic3r/AppConfig.cpp index 0156751d60..98efc032b8 100644 --- a/src/libslic3r/AppConfig.cpp +++ b/src/libslic3r/AppConfig.cpp @@ -399,6 +399,9 @@ void AppConfig::set_defaults() if (get("show_plate_gridlines").empty()) set_bool("show_plate_gridlines", true); + if (get("focus_mode").empty()) + set_bool("focus_mode", false); + if (get("show_outline").empty()) set_bool("show_outline", false); diff --git a/src/libslic3r/CMakeLists.txt b/src/libslic3r/CMakeLists.txt index afa3b61bc1..fa9aec8531 100644 --- a/src/libslic3r/CMakeLists.txt +++ b/src/libslic3r/CMakeLists.txt @@ -265,6 +265,8 @@ set(lisbslic3r_sources GCode/FanMover.hpp GCode/GCodeProcessor.cpp GCode/GCodeProcessor.hpp + GCode/GCodeStatistics.cpp + GCode/GCodeStatistics.hpp GCode/ElegooGCodeProcessorHelper.cpp GCode.hpp GCode/PchipInterpolatorHelper.cpp diff --git a/src/libslic3r/Format/bbs_3mf.cpp b/src/libslic3r/Format/bbs_3mf.cpp index 2914693c42..aca428f171 100644 --- a/src/libslic3r/Format/bbs_3mf.cpp +++ b/src/libslic3r/Format/bbs_3mf.cpp @@ -51,6 +51,7 @@ #include #include #include +#include #include #include #include @@ -6541,7 +6542,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) } BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ":" << __LINE__ << boost::format(",add no light thumbnail %1%'s data into 3mf") % (index + 1); - thumbnail_status[index] = true; + no_light_thumbnail_status[index] = true; } } // Adds the file Metadata/top_i.png and Metadata/pick_i.png @@ -9052,6 +9053,16 @@ bool _BBS_3MF_Exporter::_add_gcode_file_to_archive(mz_zip_archive& archive, cons BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ":" <<__LINE__ << boost::format(", store %1% to 3mf %2%\n") % src_gcode_file % gcode_in_3mf; } }); + for (const PlateData *plate_data : plate_data_list2) { + if (plate_data->statistics.empty()) + continue; + const std::string statistics_in_3mf = (boost::format(STATISTICS_FILE_FORMAT) % (plate_data->plate_index + 1)).str(); + if (!mz_zip_writer_add_mem(&archive, statistics_in_3mf.c_str(), plate_data->statistics.data(), plate_data->statistics.size(), + MZ_DEFAULT_COMPRESSION)) { + add_error("Unable to add statistics file to archive"); + result = false; + } + } return result; } @@ -9776,13 +9787,13 @@ bool has_restore_data(std::string & path, std::string& origin) origin = ""; return false; } - // ORCA: non-throwing probes; ec is deliberately unread, a backup path that cannot be - // probed is treated as having no restore data rather than aborting the application. + // ORCA: the caller removes this directory unless origin is "", so every way of + // failing to establish the backup's state has to claim the lock instead. boost::system::error_code ec; if (boost::filesystem::exists(path + "/lock.txt", ec)) { std::string pid; - load_string_file(path + "/lock.txt", pid); try { + load_string_file(path + "/lock.txt", pid); if (get_process_name(boost::lexical_cast(pid)) == get_process_name(0)) { origin = ""; @@ -9790,12 +9801,20 @@ bool has_restore_data(std::string & path, std::string& origin) } } catch (...) { + origin = ""; return false; } } std::string file3mf = path + "/.3mf"; - if (!boost::filesystem::exists(file3mf, ec)) + if (!boost::filesystem::exists(file3mf, ec)) { + // ORCA: a .3mf that is simply absent is a spent backup and stays collectable. A probe + // that could not look must not be: ec reports ENOENT/ENOTDIR for "not there" as + // well, so only a different error means the answer is unknown. + if (ec && ec != boost::system::errc::no_such_file_or_directory && + ec != boost::system::errc::not_a_directory) + origin = ""; return false; + } try { if (boost::filesystem::exists(path + "/origin.txt", ec)) load_string_file(path + "/origin.txt", origin); diff --git a/src/libslic3r/Format/bbs_3mf.hpp b/src/libslic3r/Format/bbs_3mf.hpp index 489870b8fc..611cc26e03 100644 --- a/src/libslic3r/Format/bbs_3mf.hpp +++ b/src/libslic3r/Format/bbs_3mf.hpp @@ -32,6 +32,7 @@ struct ThumbnailData; #define PLATE_THUMBNAIL_SMALL_HEIGHT 128 #define GCODE_FILE_FORMAT "Metadata/plate_%1%.gcode" +#define STATISTICS_FILE_FORMAT "Metadata/plate_%1%.statistics.json" #define THUMBNAIL_FILE_FORMAT "Metadata/plate_%1%.png" #define NO_LIGHT_THUMBNAIL_FILE_FORMAT "Metadata/plate_no_light_%1%.png" #define TOP_FILE_FORMAT "Metadata/top_%1%.png" @@ -100,6 +101,8 @@ struct PlateData std::string nozzle_volume_types; std::string gcode_file; std::string gcode_file_md5; + // The G-code's statistics as JSON, stored with the G-code when not empty. + std::string statistics; std::string thumbnail_file; std::string no_light_thumbnail_file; ThumbnailData plate_thumbnail; @@ -174,6 +177,8 @@ enum class SaveStrategy // Keep this separate from SplitModel, which uses the 0x1000 bit as part of its // production-extension value. MinimalPublished = 1 << 13, + // With WithGcode, also the G-code's statistics. + WithStatistics = 1 << 14, SplitModel = 0x1000 | ProductionExt, Encrypted = SecureContentExt | SplitModel, diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index ee7f6cabc6..ce2be2db58 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -2625,8 +2625,15 @@ static void set_mass_locator(GCodeProcessor &processor, const Print &print) } Object &o = objects.emplace_back(Object{ object, int(object_masses.size()), count, bodies_total, {}, std::move(bodies), {}, {} }); object_masses.resize(object_masses.size() + object->instances().size()); - for (size_t instance = 0; instance < object->instances().size(); ++instance) - object_masses[o.first_instance + instance].assembly = assembly; + const ModelInstancePtrs &model_instances = object->model_object()->instances; + for (size_t instance = 0; instance < object->instances().size(); ++instance) { + GCodeProcessorResult::ObjectMass &mass = object_masses[o.first_instance + instance]; + mass.assembly = assembly; + mass.name = object->model_object()->name; + // Copies of another rotation or scale slice as objects of their own, so number them in the model object. + mass.instance = int(std::find(model_instances.begin(), model_instances.end(), object->instances()[instance].model_instance) - + model_instances.begin()); + } bodies_total += int(count * object->instances().size()); for (const Layer *layer : layers) { o.print_zs.emplace_back(layer->print_z); @@ -3563,6 +3570,13 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato print.throw_if_canceled(); + // Taken before the object loop, which reassigns initial_extruder_id when printing by object. + const int compat_first_layer_bed_temp = m_config.bed_temperature_formula == BedTempFormula::btfHighestTemp ? + get_highest_bed_temperature(true, print) : + get_bed_temperature(initial_extruder_id, true, print.config().curr_bed_type); + const int compat_first_layer_nozzle_temp = + print.config().nozzle_temperature_initial_layer.get_at(get_filament_config_index((int) initial_extruder_id)); + int extruder_id = get_extruder_id(initial_extruder_id); m_cooling_buffer = make_unique(*this); @@ -4153,12 +4167,8 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato file.write(full_config); // SoftFever: write compatiple image - int first_layer_bed_temperature = get_bed_temperature(0, true, print.config().curr_bed_type); - file.write_format("; first_layer_bed_temperature = %d\n", - first_layer_bed_temperature); - file.write_format( - "; first_layer_temperature = %d\n", - print.config().nozzle_temperature_initial_layer.get_at(0)); + file.write_format("; first_layer_bed_temperature = %d\n", compat_first_layer_bed_temp); + file.write_format("; first_layer_temperature = %d\n", compat_first_layer_nozzle_temp); file.write("; CONFIG_BLOCK_END\n\n"); } else if (thumbnail_cb != nullptr) { // generate the thumbnails @@ -4201,6 +4211,8 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato file.write_format("; EXECUTABLE_BLOCK_START\n"); + // Set for every printer, as the object label comments use these ids too. + assign_object_label_ids(print); // SoftFever if( m_enable_exclude_object) file.write(set_object_info(&print)); @@ -4741,10 +4753,9 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato file.write(full_config); // SoftFever: write compatiple info - int first_layer_bed_temperature = get_bed_temperature(0, true, print.config().curr_bed_type); - file.write_format("; first_layer_bed_temperature = %d\n", first_layer_bed_temperature); + file.write_format("; first_layer_bed_temperature = %d\n", compat_first_layer_bed_temp); file.write_format("; bed_shape = %s\n", print.full_print_config().opt_serialize("printable_area").c_str()); - file.write_format("; first_layer_temperature = %d\n", print.config().nozzle_temperature_initial_layer.get_at(0)); + file.write_format("; first_layer_temperature = %d\n", compat_first_layer_nozzle_temp); file.write_format("; first_layer_height = %.3f\n", print.config().initial_layer_print_height.value); //SF TODO @@ -11055,15 +11066,30 @@ inline std::string polygon_to_string(const Polygon &polygon, Print *print, bool gcode << "]"; return gcode.str(); } -// this function iterator PrintObject and assign a seqential id to each object. -// this id is used to generate unique object id for each object. +// Numbers the objects, and their instances both within each object (id) and across the print +// (unique_id). The "; printing object" comments and the exclude-object commands label objects with these ids. +void GCode::assign_object_label_ids(Print &print) +{ + m_instance_names.clear(); + size_t object_id = 0; + size_t unique_id = 0; + for (PrintObject *object : print.objects()) { + object->set_id(object_id++); + size_t inst_id = 0; + for (PrintInstance &inst : object->instances()) { + inst.id = inst_id++; + inst.unique_id = unique_id++; + } + } +} + +// Writes the exclude-object definitions for the ids assign_object_label_ids() set. std::string GCode::set_object_info(Print *print) { const auto gflavor = print->config().gcode_flavor.value; if (print->is_BBL_printer() || (gflavor != gcfKlipper && gflavor != gcfMarlinLegacy && gflavor != gcfMarlinFirmware && gflavor != gcfRepRapFirmware)) return ""; std::ostringstream gcode; - size_t object_id = 0; // Orca: check if we are in pa calib mode if (print->calib_mode() == CalibMode::Calib_PA_Pattern) { BoundingBoxf bbox_bed(print->config().printable_area.values); @@ -11079,14 +11105,8 @@ std::string GCode::set_object_info(Print *print) { } else if (print->calib_mode() == CalibMode::Calib_PA_Line) { // PA_Line has only one object, no EXCLUDE_OBJECT_DEFINE needed } else { - size_t unique_id = 0; - m_instance_names.clear(); for (PrintObject* object : print->objects()) { - object->set_id(object_id++); - size_t inst_id = 0; for (PrintInstance& inst : object->instances()) { - inst.unique_id = unique_id++; - inst.id = inst_id++; // Outlines are in plate coordinates. On a belt printer that is the frame after // the slicing rotation has been undone and before the G-code axis remap and // machine-frame shear: where the object stands on the belt, which is what an diff --git a/src/libslic3r/GCode.hpp b/src/libslic3r/GCode.hpp index c89b646ae2..08894574ed 100644 --- a/src/libslic3r/GCode.hpp +++ b/src/libslic3r/GCode.hpp @@ -319,6 +319,7 @@ public: bool is_BBL_Printer(); WipeTowerType wipe_tower_type(); + void assign_object_label_ids(Print &print); // SoftFever std::string set_object_info(Print* print); @@ -794,7 +795,7 @@ protected: bool m_enable_exclude_object; std::vector m_label_objects_ids; - // Object label names by instance, built on first use from the ids set_object_info() assigns. + // Object label names by instance, built on first use from the ids assign_object_label_ids() assigns. std::unordered_map m_instance_names; const std::string& instance_name(const PrintInstance &instance); std::string _encode_label_ids_to_base64(std::vector ids); diff --git a/src/libslic3r/GCode/GCodeProcessor.hpp b/src/libslic3r/GCode/GCodeProcessor.hpp index 4fcdf5589b..87c08617d1 100644 --- a/src/libslic3r/GCode/GCodeProcessor.hpp +++ b/src/libslic3r/GCode/GCodeProcessor.hpp @@ -298,6 +298,9 @@ inline constexpr float DEFAULT_FILAMENT_DENSITY = 1.245f; BoundingBoxf3 box; // Of an object, whether it is an assembly. bool assembly{ false }; + // Of an object instance, its model object's name and its index among that object's instances. + std::string name; + int instance{ -1 }; Sum total() const { return printed_up_to_layer.empty() ? Sum{} : printed_up_to_layer.back(); } void add(const Sum &sum, const BoundingBoxf3 &extent, size_t layer); diff --git a/src/libslic3r/GCode/GCodeStatistics.cpp b/src/libslic3r/GCode/GCodeStatistics.cpp new file mode 100644 index 0000000000..2320b8b7e5 --- /dev/null +++ b/src/libslic3r/GCode/GCodeStatistics.cpp @@ -0,0 +1,200 @@ +#include "GCodeStatistics.hpp" + +#include "GCodeProcessor.hpp" +#include "libslic3r/Exception.hpp" +#include "libslic3r/ExtrusionEntity.hpp" +#include "libslic3r/I18N.hpp" +#include "libslic3r/format.hpp" +#include "libslic3r/libslic3r.h" +#include "libslic3r_version.h" + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +namespace Slic3r { + +namespace { + +using json = nlohmann::ordered_json; + +double rounded(double value, int decimals) +{ + const double scale = std::pow(10., decimals); + return std::round(value * scale) / scale; +} + +// As the object masses weigh it, at the default density for a filament without one. +double weight_of(const GCodeProcessorResult &result, size_t filament, double volume) +{ + const bool has_density = filament < result.filament_densities.size() && result.filament_densities[filament] > 0.f; + // mm³ at g/cm³ weigh mg. + return 0.001 * volume * (has_density ? result.filament_densities[filament] : DEFAULT_FILAMENT_DENSITY); +} + +struct Usage +{ + double time{ 0. }; + double volume{ 0. }; + double weight{ 0. }; + + void add(const Usage &other) + { + time += other.time; + volume += other.volume; + weight += other.weight; + } + + json to_json() const { return json{ { "time", rounded(time, 3) }, { "volume", rounded(volume, 3) }, { "weight", rounded(weight, 4) } }; } +}; + +json features_json(const std::map &features) +{ + json out = json::object(); + for (const auto &[role, usage] : features) + out[ExtrusionEntity::role_to_string(role)] = usage.to_json(); + return out; +} + +} // namespace + +std::string gcode_statistics_json(const GCodeProcessorResult &result) +{ + constexpr size_t normal = static_cast(PrintEstimatedStatistics::ETimeMode::Normal); + + struct Layer + { + float z{ 0.f }; + double travel_time{ 0. }; + Usage total; + std::map features; + }; + std::vector layers; + std::map features; + double travel_time = 0.; + + // As the preview sums them: a layer takes the time of all its moves, a feature that of its extrusions. + for (const GCodeProcessorResult::MoveVertex &move : result.moves) { + if (layers.size() <= move.layer_id) + layers.resize(move.layer_id + 1); + Layer &layer = layers[move.layer_id]; + const double time = move.time[normal]; + layer.total.time += time; + if (move.type == EMoveType::Travel) { + layer.travel_time += time; + travel_time += time; + } + // A vertex added inside a move to show its acceleration repeats the move's extrusion. + if (move.type != EMoveType::Extrude || move.internal_only) + continue; + if (move.extrusion_role != erCustom) + layer.z = move.position.z(); + Usage usage; + usage.time = time; + usage.volume = double(move.delta_extruder) * M_PI * sqr(0.5 * double(result.filament_diameters[move.extruder_id])); + usage.weight = weight_of(result, move.extruder_id, usage.volume); + layer.total.volume += usage.volume; + layer.total.weight += usage.weight; + layer.features[move.extrusion_role].add(usage); + features[move.extrusion_role].add(usage); + } + + // As the preview's filament table, which counts the flush too. + const PrintEstimatedStatistics &stats = result.print_statistics; + double volume = 0., weight = 0., cost = 0.; + json filaments_json = json::array(); + for (const auto &entry : stats.total_volumes_per_extruder) { + const size_t filament = entry.first; + const auto use = [&result, filament](const std::map &volumes) { + const auto it = volumes.find(filament); + const double used = it == volumes.end() ? 0. : it->second; + return json{ { "volume", rounded(used, 3) }, { "weight", rounded(weight_of(result, filament, used), 4) } }; + }; + const double filament_weight = weight_of(result, filament, entry.second); + // Priced per kilogram. + const double filament_cost = filament < result.filament_costs.size() ? 0.001 * filament_weight * result.filament_costs[filament] : 0.; + volume += entry.second; + weight += filament_weight; + cost += filament_cost; + filaments_json.push_back(json{ { "id", filament + 1 }, + { "length", rounded(entry.second / (M_PI * sqr(0.5 * double(result.filament_diameters[filament]))), 2) }, + { "volume", rounded(entry.second, 3) }, + { "weight", rounded(filament_weight, 4) }, + { "cost", rounded(filament_cost, 2) }, + { "model", use(stats.model_volumes_per_extruder) }, + { "support", use(stats.support_volumes_per_extruder) }, + { "prime_tower", use(stats.wipe_tower_volumes_per_extruder) }, + { "flush", use(stats.flush_per_filament) } }); + } + + json summary = json{ { "time", rounded(stats.modes[normal].time, 3) }, + { "prepare_time", rounded(stats.modes[normal].prepare_time, 3) }, + { "travel_time", rounded(travel_time, 3) }, + { "travel_distance", rounded(stats.total_travel_distance, 2) }, + { "layer_count", layers.size() }, + { "volume", rounded(volume, 3) }, + { "weight", rounded(weight, 4) }, + { "filament_cost", rounded(cost, 2) }, + { "filament_changes", stats.total_filament_changes }, + { "filaments", filaments_json }, + { "features", features_json(features) } }; + + json layers_json = json::array(); + for (const Layer &layer : layers) + layers_json.push_back(json{ { "z", rounded(layer.z, 3) }, + { "time", rounded(layer.total.time, 3) }, + { "travel_time", rounded(layer.travel_time, 3) }, + { "volume", rounded(layer.total.volume, 3) }, + { "weight", rounded(layer.total.weight, 4) }, + { "features", features_json(layer.features) } }); + + // The supports of an instance are numbered as the instance. + json objects_json = json::array(); + for (size_t i = 0; i < result.object_masses.size(); ++i) { + const GCodeProcessorResult::ObjectMass &object = result.object_masses[i]; + const GCodeProcessorResult::ObjectMass::Sum part = object.total(); + const GCodeProcessorResult::ObjectMass::Sum support = i < result.support_masses.size() ? result.support_masses[i].total() : + GCodeProcessorResult::ObjectMass::Sum{}; + // In mg, as volumes in mm³ at g/cm³. + objects_json.push_back(json{ { "name", object.name }, + { "instance", object.instance }, + { "volume", rounded(part.volume, 3) }, + { "weight", rounded(0.001 * part.mass, 4) }, + { "support_volume", rounded(support.volume, 3) }, + { "support_weight", rounded(0.001 * support.mass, 4) } }); + } + + // The version goes up only when a key is removed, renamed or changes meaning. + const json out = json{ { "version", 1 }, + { "generator", std::string(SLIC3R_APP_NAME) + " " + SoftFever_VERSION }, + { "units", json{ { "time", "s" }, { "length", "mm" }, { "volume", "mm3" }, { "weight", "g" } } }, + { "summary", summary }, + { "layers", layers_json }, + { "objects", objects_json } }; + return out.dump(2); +} + +std::string gcode_statistics_path(const std::string &gcode_path) +{ + return boost::filesystem::path(gcode_path).replace_extension(".statistics.json").string(); +} + +void export_gcode_statistics(const GCodeProcessorResult &result, const std::string &path) +{ + // Binary, so the file reads the same on every platform and inside a 3MF. + boost::nowide::ofstream file(path, std::ios::out | std::ios::binary | std::ios::trunc); + file << gcode_statistics_json(result); + file.close(); + if (file.fail()) + throw ExportError(format(_u8L("Failed to write the G-code statistics to %1%."), path)); +} + +} // namespace Slic3r diff --git a/src/libslic3r/GCode/GCodeStatistics.hpp b/src/libslic3r/GCode/GCodeStatistics.hpp new file mode 100644 index 0000000000..f969511984 --- /dev/null +++ b/src/libslic3r/GCode/GCodeStatistics.hpp @@ -0,0 +1,16 @@ +#pragma once + +#include + +namespace Slic3r { + +struct GCodeProcessorResult; + +// The statistics of a plate's G-code as JSON, in seconds, millimeters and grams: totals, per layer and per object instance. +std::string gcode_statistics_json(const GCodeProcessorResult &result); +// Where the statistics of the G-code at gcode_path are written. +std::string gcode_statistics_path(const std::string &gcode_path); +// Throws ExportError when the file cannot be written. +void export_gcode_statistics(const GCodeProcessorResult &result, const std::string &path); + +} // namespace Slic3r diff --git a/src/libslic3r/MultiMaterialSegmentation.cpp b/src/libslic3r/MultiMaterialSegmentation.cpp index 19dbee88dc..dc3af43de4 100644 --- a/src/libslic3r/MultiMaterialSegmentation.cpp +++ b/src/libslic3r/MultiMaterialSegmentation.cpp @@ -1196,7 +1196,6 @@ static void cut_segmented_layers(const std::vector &input_exp const std::function &throw_on_cancel_callback) { BOOST_LOG_TRIVIAL(debug) << "Print object segmentation - cutting segmented layers in parallel - begin"; - const float interlocking_cut_width = interlocking_depth > 0.f ? std::max(cut_width - interlocking_depth, 0.f) : 0.f; tbb::parallel_for(tbb::blocked_range(0, segmented_regions.size()), [&segmented_regions, &input_expolygons, &cut_width, &interlocking_depth, &throw_on_cancel_callback](const tbb::blocked_range &range) { for (size_t layer_idx = range.begin(); layer_idx < range.end(); ++layer_idx) { diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index 645d8f416d..93a71dcd8d 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -149,6 +149,8 @@ void Print::clear() m_print_regions.clear(); m_model.clear_objects(); m_statistics_by_extruder_count.clear(); + m_same_shrinkage_compensations = false; + m_shrinkage_compensation = Vec3d::Ones(); } bool Print::has_tpu_filament() const @@ -584,32 +586,36 @@ std::vector Print::object_extruders() const for (const PrintRegion ®ion : object->all_regions()) region.collect_object_printing_extruders(*this, extruders); - for (const PrintObject* object : m_objects) { - const ModelObject* mo = object->model_object(); - for (const ModelVolume* mv : mo->volumes) { - std::vector volume_extruders = mv->get_extruders(); - for (int extruder : volume_extruders) { - assert(extruder > 0); - extruders.push_back(extruder - 1); - } - } - - // layer range - for (auto layer_range : mo->layer_config_ranges) { - if (layer_range.second.has("extruder")) { - //BBS: actually when user doesn't change filament by height range(value is default 0), height range should not save key "extruder". - //Don't know why height range always save key "extruder" because of no change(should only save difference)... - //Add protection here to avoid overflow - auto value = layer_range.second.option("extruder")->getInt(); - if (value > 0) - extruders.push_back(value - 1); - } - } - } + for (const PrintObject* object : m_objects) + append_model_object_extruders(*object->model_object(), extruders); sort_remove_duplicates(extruders); return extruders; } +// Appends 0-based indices of the filaments assigned to the volumes of model_object (painting included) and to its height ranges. +void Print::append_model_object_extruders(const ModelObject &mo, std::vector &extruders) +{ + for (const ModelVolume* mv : mo.volumes) { + std::vector volume_extruders = mv->get_extruders(); + for (int extruder : volume_extruders) { + assert(extruder > 0); + extruders.push_back(extruder - 1); + } + } + + // layer range + for (auto layer_range : mo.layer_config_ranges) { + if (layer_range.second.has("extruder")) { + //BBS: actually when user doesn't change filament by height range(value is default 0), height range should not save key "extruder". + //Don't know why height range always save key "extruder" because of no change(should only save difference)... + //Add protection here to avoid overflow + auto value = layer_range.second.option("extruder")->getInt(); + if (value > 0) + extruders.push_back(value - 1); + } + } +} + // returns 0-based indices of used extruders std::vector Print::support_material_extruders() const { @@ -619,22 +625,8 @@ std::vector Print::support_material_extruders() const auto num_extruders = (unsigned int)m_config.filament_diameter.size(); for (PrintObject *object : m_objects) { - if (object->has_support_material()) { - assert(object->config().support_filament >= 0); - if (object->config().support_filament == 0) - support_uses_current_extruder = true; - else { - unsigned int i = (unsigned int)object->config().support_filament - 1; - extruders.emplace_back((i >= num_extruders) ? 0 : i); - } - assert(object->config().support_interface_filament >= 0); - if (object->config().support_interface_filament == 0) - support_uses_current_extruder = true; - else { - unsigned int i = (unsigned int)object->config().support_interface_filament - 1; - extruders.emplace_back((i >= num_extruders) ? 0 : i); - } - } + if (object->has_support_material() && append_support_extruders(object->config(), num_extruders, extruders)) + support_uses_current_extruder = true; } if (support_uses_current_extruder) @@ -645,31 +637,61 @@ std::vector Print::support_material_extruders() const return extruders; } +// Appends 0-based indices of the support and support interface filaments of an object printing support material. +// Returns true if support or support interface is printed with the filament of the object. +bool Print::append_support_extruders(const PrintObjectConfig &config, unsigned int num_extruders, std::vector &extruders) +{ + bool uses_current_extruder = false; + assert(config.support_filament >= 0); + if (config.support_filament == 0) + uses_current_extruder = true; + else { + unsigned int i = (unsigned int)config.support_filament - 1; + extruders.emplace_back((i >= num_extruders) ? 0 : i); + } + assert(config.support_interface_filament >= 0); + if (config.support_interface_filament == 0) + uses_current_extruder = true; + else { + unsigned int i = (unsigned int)config.support_interface_filament - 1; + extruders.emplace_back((i >= num_extruders) ? 0 : i); + } + return uses_current_extruder; +} + // returns 0-based indices of used extruders std::vector Print::extruders(bool conside_custom_gcode) const { std::vector extruders = this->object_extruders(); append(extruders, this->support_material_extruders()); - if (conside_custom_gcode) { - //BBS - int num_extruders = m_config.filament_colour.size(); - if (m_model.plates_custom_gcodes.find(m_model.curr_plate_index) != m_model.plates_custom_gcodes.end()) { - for (auto item : m_model.plates_custom_gcodes.at(m_model.curr_plate_index).gcodes) { - if (item.type == CustomGCode::Type::ToolChange && item.extruder <= num_extruders) - extruders.push_back((unsigned int)(item.extruder - 1)); - } + if (conside_custom_gcode) + this->append_tool_change_extruders(extruders); + this->append_wipe_tower_extruder(extruders); + sort_remove_duplicates(extruders); + return extruders; +} + +// Appends 0-based indices of the filaments the tool changes of the current plate switch to. +void Print::append_tool_change_extruders(std::vector &extruders) const +{ + //BBS + int num_extruders = m_config.filament_colour.size(); + if (m_model.plates_custom_gcodes.find(m_model.curr_plate_index) != m_model.plates_custom_gcodes.end()) { + for (auto item : m_model.plates_custom_gcodes.at(m_model.curr_plate_index).gcodes) { + if (item.type == CustomGCode::Type::ToolChange && item.extruder <= num_extruders) + extruders.push_back((unsigned int)(item.extruder - 1)); } } +} +void Print::append_wipe_tower_extruder(std::vector &extruders) const +{ // If a wipe tower filament is explicitly set, ensure it participates in tool ordering. if (has_wipe_tower() && config().wipe_tower_filament != 0 && extruders.size() > 1) { assert(config().wipe_tower_filament > 0 && config().wipe_tower_filament <= int(config().filament_diameter.size())); extruders.emplace_back(config().wipe_tower_filament - 1); // config value is 1-based } - - sort_remove_duplicates(extruders); - return extruders; } unsigned int Print::num_object_instances() const @@ -5652,44 +5674,6 @@ std::string PrintStatistics::finalize_output_path(const std::string &path_in) co return final_path; } -// Orca: Implement prusa's filament shrink compensation approach -// Returns if all used filaments have same shrinkage compensations. - bool Print::has_same_shrinkage_compensations() const { - const std::vector extruders = this->extruders(); - if (extruders.empty()) - return false; - - const double filament_shrinkage_compensation_xy = m_config.filament_shrink.get_at(extruders.front()); - const double filament_shrinkage_compensation_z = m_config.filament_shrinkage_compensation_z.get_at(extruders.front()); - - for (unsigned int extruder : extruders) { - if (filament_shrinkage_compensation_xy != m_config.filament_shrink.get_at(extruder) || - filament_shrinkage_compensation_z != m_config.filament_shrinkage_compensation_z.get_at(extruder)) { - return false; - } - } - - return true; - } - -// Orca: Implement prusa's filament shrink compensation approach, but amended so 100% from the user is the equivalent to 0 in orca. - // Returns scaling for each axis representing shrinkage compensations in each axis. -Vec3d Print::shrinkage_compensation() const -{ - if (!this->has_same_shrinkage_compensations()) - return Vec3d::Ones(); - - const unsigned int first_extruder = this->extruders().front(); - - const double xy_shrinkage_percent = m_config.filament_shrink.get_at(first_extruder); - const double z_shrinkage_percent = m_config.filament_shrinkage_compensation_z.get_at(first_extruder); - - const double xy_compensation = 100.0 / xy_shrinkage_percent; - const double z_compensation = 100.0 / z_shrinkage_percent; - - return { xy_compensation, xy_compensation, z_compensation }; -} - const std::string PrintStatistics::FilamentUsedG = "filament used [g]"; const std::string PrintStatistics::FilamentUsedGMask = "; filament used [g] ="; diff --git a/src/libslic3r/Print.hpp b/src/libslic3r/Print.hpp index 735edac824..11de1d80e4 100644 --- a/src/libslic3r/Print.hpp +++ b/src/libslic3r/Print.hpp @@ -249,9 +249,9 @@ struct PrintInstance // SoftFever // // instance id - size_t id; + size_t id{0}; // Orca: unique id used by marlin/rrf cancel object feature - size_t unique_id; + size_t unique_id{0}; //BBS: instance_shift is too large because of multi-plate, apply without plate offset. Point shift_without_plate_offset() const; @@ -503,9 +503,12 @@ public: std::vector> all_regions() const; const PrintObjectRegions* shared_regions() const throw() { return m_shared_regions; } - bool has_support() const { return m_config.enable_support || m_config.enforce_support_layers > 0; } - bool has_raft() const { return m_config.raft_layers > 0; } - bool has_support_material() const { return this->has_support() || this->has_raft(); } + static bool has_support(const PrintObjectConfig &config) { return config.enable_support || config.enforce_support_layers > 0; } + static bool has_raft(const PrintObjectConfig &config) { return config.raft_layers > 0; } + static bool has_support_material(const PrintObjectConfig &config) { return has_support(config) || has_raft(config); } + bool has_support() const { return has_support(m_config); } + bool has_raft() const { return has_raft(m_config); } + bool has_support_material() const { return has_support_material(m_config); } // Checks if the model object is painted using the multi-material painting gizmo. bool is_mm_painted() const { return this->model_object()->is_mm_painted(); } // Checks if the model object is painted using the fuzzy skin painting gizmo. @@ -735,7 +738,7 @@ private: // SoftFever // // object id - size_t m_id; + size_t m_id{0}; void apply_conical_overhang(); public: @@ -1385,10 +1388,11 @@ public: size_t config_index_generation() const { return m_config_index_generation; } // Orca: Implement prusa's filament shrink compensation approach + // Both are decided by apply() from the filaments the model uses, before the PrintObject transformations are built. // Returns if all used filaments have same shrinkage compensations. - bool has_same_shrinkage_compensations() const; + bool has_same_shrinkage_compensations() const { return m_same_shrinkage_compensations; } // Returns scaling for each axis representing shrinkage compensations in each axis. - Vec3d shrinkage_compensation() const; + Vec3d shrinkage_compensation() const { return m_shrinkage_compensation; } std::tuple object_skirt_offset(double margin_height = 0) const; @@ -1484,11 +1488,19 @@ private: s_slicing_pipeline_hook_fn(*this, object, step); } + static void append_model_object_extruders(const ModelObject &mo, std::vector &extruders); + static bool append_support_extruders(const PrintObjectConfig &config, unsigned int num_extruders, std::vector &extruders); + void append_tool_change_extruders(std::vector &extruders) const; + void append_wipe_tower_extruder(std::vector &extruders) const; + void update_shrinkage_compensation(size_t num_extruders, std::vector &variant_index); + PrintConfig m_config; PrintObjectConfig m_default_object_config; PrintRegionConfig m_default_region_config; PrintObjectPtrs m_objects; PrintRegionPtrs m_print_regions; + bool m_same_shrinkage_compensations { false }; + Vec3d m_shrinkage_compensation { Vec3d::Ones() }; //SoftFever bool m_isBBLPrinter = false; diff --git a/src/libslic3r/PrintApply.cpp b/src/libslic3r/PrintApply.cpp index 5fed82211d..cb98f3550b 100644 --- a/src/libslic3r/PrintApply.cpp +++ b/src/libslic3r/PrintApply.cpp @@ -25,6 +25,7 @@ #include #include #include +#include #include #include #include @@ -1257,6 +1258,80 @@ static PrintObjectRegions* generate_print_object_regions( return out.release(); } +// Orca: The shrinkage compensation is baked into the PrintObject transformations, so it has to be known before apply() +// creates them. Derive it from the filaments the new model prints with instead of from the existing PrintObjects and +// their regions, which do not exist yet on the first apply(). Every feature filament of every part, height range and +// modifier counts, whether the feature ends up printing or not, so filaments that disagree switch the compensation +// off rather than letting a wrong compensation through. +void Print::update_shrinkage_compensation(size_t num_extruders, std::vector &variant_index) +{ + const auto set_compensation = [this](unsigned int extruder) { + // 100% from the user is the equivalent to 0 in orca. + const double xy_compensation = 100.0 / m_config.filament_shrink.get_at(extruder); + const double z_compensation = 100.0 / m_config.filament_shrinkage_compensation_z.get_at(extruder); + m_shrinkage_compensation = { xy_compensation, xy_compensation, z_compensation }; + }; + const auto same_shrinkage = [this](unsigned int a, unsigned int b) { + return m_config.filament_shrink.get_at(a) == m_config.filament_shrink.get_at(b) && + m_config.filament_shrinkage_compensation_z.get_at(a) == m_config.filament_shrinkage_compensation_z.get_at(b); + }; + // Usually all filaments share the same shrinkage, then it does not matter which of them print. + bool uniform = true; + for (unsigned int extruder = 1; extruder < num_extruders && uniform; ++ extruder) + uniform = same_shrinkage(0, extruder); + if (uniform) { + m_same_shrinkage_compensations = true; + set_compensation(0); + return; + } + + std::vector extruders; + const auto append_feature_extruders = [num_extruders, &extruders](const PrintRegionConfig &config) { + for (int id : { config.outer_wall_filament_id.value, config.inner_wall_filament_id.value, config.sparse_infill_filament_id.value, + config.internal_solid_filament_id.value, config.top_surface_filament_id.value, config.bottom_surface_filament_id.value }) { + const unsigned int i = (unsigned int)std::max(0, id - 1); + extruders.emplace_back(i >= num_extruders ? 0 : i); + } + }; + for (const ModelObject *model_object : m_model.objects) { + if (std::none_of(model_object->instances.begin(), model_object->instances.end(), [](const ModelInstance *mi) { return mi->is_printable(); })) + continue; + std::vector modifiers; + std::copy_if(model_object->volumes.begin(), model_object->volumes.end(), std::back_inserter(modifiers), [](const ModelVolume *mv) { return mv->is_modifier(); }); + for (const ModelVolume *part : model_object->volumes) { + if (! part->is_model_part()) + continue; + std::vector parents { region_config_from_model_volume(m_default_region_config, nullptr, *part, num_extruders, variant_index) }; + for (const auto &[range, range_config] : model_object->layer_config_ranges) + parents.emplace_back(region_config_from_model_volume(m_default_region_config, &range_config.get(), *part, num_extruders, variant_index)); + for (const PrintRegionConfig &parent : parents) { + append_feature_extruders(parent); + for (const ModelVolume *modifier : modifiers) + append_feature_extruders(region_config_from_model_volume(parent, nullptr, *modifier, num_extruders, variant_index)); + } + } + append_model_object_extruders(*model_object, extruders); + const PrintObjectConfig object_config = PrintObject::object_config_from_model_object(m_default_object_config, *model_object, num_extruders, variant_index); + if (PrintObject::has_support_material(object_config)) + append_support_extruders(object_config, (unsigned int)num_extruders, extruders); + } + this->append_tool_change_extruders(extruders); + // A mixed slot prints with its physical components. + const auto expand_and_sort = [this, &extruders]() { + extruders = expand_mixed_filaments(extruders, m_config.filament_is_mixed.values, m_config.filament_mixed_components.values); + }; + expand_and_sort(); + // The wipe tower filament may also be flushed into the objects. + this->append_wipe_tower_extruder(extruders); + expand_and_sort(); + + m_same_shrinkage_compensations = ! extruders.empty() && + std::all_of(extruders.begin(), extruders.end(), [&](unsigned int extruder) { return same_shrinkage(extruders.front(), extruder); }); + m_shrinkage_compensation = Vec3d::Ones(); + if (m_same_shrinkage_compensations) + set_compensation(extruders.front()); +} + Print::ApplyStatus Print::apply(const Model &model, DynamicPrintConfig new_full_config, bool extruder_applied) { #ifdef _DEBUG @@ -1864,6 +1939,7 @@ Print::ApplyStatus Print::apply(const Model &model, DynamicPrintConfig new_full_ // 4) Generate PrintObjects from ModelObjects and their instances. { + this->update_shrinkage_compensation(num_extruders, print_variant_index); PrintObjectPtrs print_objects_new; print_objects_new.reserve(std::max(m_objects.size(), m_model.objects.size())); bool new_objects = false; diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 0f13366ac8..bab1d1b586 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -1656,7 +1656,7 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("Line width of the Bridge. If expressed as a %, it will be computed over the nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n\n" "The maximum value is 100% or the nozzle diameter.\n" - "If set to 0, the line width will match the Internal solid infill width."); + "If set to 0, the line width will match the Internal solid infill width, or the nozzle diameter for thick bridges."); def->sidetext = L("mm or %"); def->ratio_over = "nozzle_diameter"; def->min = 0; @@ -1919,7 +1919,7 @@ void PrintConfigDef::init_fff_params() "3. If artifacts still appear, enable Extrusion Rate Smoothing (ERS) to further smooth the flow transitions.\n\n" "Note: When this option is enabled, overhang perimeters are treated like overhangs, meaning the overhang speed is " "applied even if the overhanging perimeter is part of a bridge.\n" - "For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 100% overhang speed will be applied."); + "For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 75% overhang speed will be applied, limited by the bridge speed."); def->mode = comAdvanced; def->nullable = true; def->set_default_value(new ConfigOptionBoolsNullable{ false }); @@ -1980,7 +1980,7 @@ void PrintConfigDef::init_fff_params() def->label = L("External"); def->category = L("Speed"); def->tooltip = L("Speed of the externally visible bridge extrusions.\n\n" - "In addition, if Slow down for curled perimeters is disabled or Classic overhang mode is enabled, " + "In addition, if Slow down for curled perimeters is disabled, " "it will be the print speed of overhang walls that are supported by less than 13%, " "whether they are part of a bridge or an overhang."); def->sidetext = L("mm/s"); // millimeters per second, CIS languages need translation @@ -2650,7 +2650,7 @@ void PrintConfigDef::init_fff_params() def->category = L("Speed"); def->tooltip = L("This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold " "(usually holes). If expressed as percentage (for example: 80%) it will be calculated " - "on the outer wall speed setting above. Set to zero for auto."); + "on the outer wall speed setting above."); def->sidetext = L("mm/s or %"); def->ratio_over = "outer_wall_speed"; def->min = 1; @@ -2673,10 +2673,9 @@ void PrintConfigDef::init_fff_params() def->category = L("Speed"); def->tooltip = L("Same as \"Small perimeters\", but for supports. " "This separate setting will affect the speed of support for areas <= `small_support_perimeter_threshold`. " - "If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above. " - "Set to zero for auto."); + "If expressed as a percentage (for example: 80%), it will be calculated on the support or support interface speed setting above."); def->sidetext = L("mm/s or %"); - def->ratio_over = "outer_wall_speed"; + def->ratio_over = "support_speed"; def->min = 1; def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloatsOrPercentsNullable{FloatOrPercent(50, true)}); @@ -2700,7 +2699,7 @@ void PrintConfigDef::init_fff_params() "However, overhang performance will reduce as there is no internal perimeter to print the external wall against. " "This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, " "then the external perimeter and, finally, the first internal perimeter. " - "This option is recommended against the Outer/Inner option in most cases.\n\n" + "This option is recommended over the Outer/Inner option in most cases.\n\n" "Use Outer/Inner for the same external wall quality and dimensional accuracy benefits of Inner/Outer/Inner option. " "However, the Z seams will appear less consistent as the first extrusion of a new layer starts on a visible surface."); def->enum_keys_map = &ConfigOptionEnum::get_enum_values(); @@ -4012,7 +4011,7 @@ void PrintConfigDef::init_fff_params() def = this->add("initial_layer_speed", coFloats); def->label = L("First layer"); - def->tooltip = L("This is the speed for the first layer except for solid infill sections."); + def->tooltip = L("This is the speed for the walls and brim of the first layer."); def->sidetext = L("mm/s"); // millimeters per second, CIS languages need translation def->min = 1; def->mode = comAdvanced; @@ -4021,7 +4020,7 @@ void PrintConfigDef::init_fff_params() def = this->add("initial_layer_infill_speed", coFloats); def->label = L("First layer infill"); - def->tooltip = L("This is the speed for solid infill parts of the first layer."); + def->tooltip = L("This is the speed for the first layer except for walls and brim, such as infill, gap fill and support."); def->sidetext = L("mm/s"); // millimeters per second, CIS languages need translation def->min = 1; def->mode = comAdvanced; @@ -4935,7 +4934,7 @@ void PrintConfigDef::init_fff_params() def->label = L("Infill/wall overlap"); def->category = L("Strength"); // xgettext:no-c-format, no-boost-format - def->tooltip = L("This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to line width of sparse infill. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces."); + def->tooltip = L("This allows the infill area to be enlarged slightly to overlap with walls for better bonding. The percentage value is relative to the inner wall line width. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces."); def->sidetext = "%"; def->ratio_over = "inner_wall_line_width"; def->mode = comAdvanced; @@ -4948,7 +4947,7 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("Top solid infill area is enlarged slightly to overlap with wall for better bonding " "and to minimize the appearance of pinholes where the top infill meets the walls. " "A value of 25-30% is a good starting point, minimizing the appearance of pinholes. " - "The percentage value is relative to line width of sparse infill."); + "The percentage value is relative to the inner wall line width."); def->sidetext = "%"; def->ratio_over = "inner_wall_line_width"; def->mode = comAdvanced; @@ -4998,9 +4997,9 @@ void PrintConfigDef::init_fff_params() def = this->add("mmu_segmented_region_interlocking_depth", coFloat); def->label = L("Interlocking depth of a segmented region"); - def->tooltip = L("Interlocking depth of a segmented region. It will be ignored if " - "\"mmu_segmented_region_max_width\" is zero or if \"mmu_segmented_region_interlocking_depth\" " - "is bigger than \"mmu_segmented_region_max_width\". Zero disables this feature."); + def->tooltip = L("Interlocking depth of a segmented region. On every other layer, the segmented region " + "is limited to this depth. It will be ignored if \"interlocking_beam\" is enabled. " + "Zero disables this feature."); def->sidetext = L("mm"); // millimeters, CIS languages need translation def->min = 0; def->category = L("Advanced"); @@ -5168,7 +5167,7 @@ void PrintConfigDef::init_fff_params() def->label = L("Minimize wall height angle"); def->category = L("Quality"); def->tooltip = L("Reduce the height of top-surface perimeters to match the model edge height.\n" - "Affects perimeters with a slope less than this angle (degrees).\n" + "Affects perimeters with a slope greater than this angle (degrees).\n" "A reasonable value is 35. Set to 0 to disable."); def->sidetext = u8"°"; // degrees, don't need translation def->min = 0; @@ -6560,7 +6559,7 @@ void PrintConfigDef::init_fff_params() def->set_default_value(new ConfigOptionBool(false)); def = this->add("role_based_wipe_speed", coBool); - def->label = L("Role base wipe speed"); + def->label = L("Role based wipe speed"); def->category = L("Speed"); def->tooltip = L("The wipe speed is determined by the speed of the current extrusion role. " "e.g. if a wipe action is executed immediately following an outer wall extrusion, the speed of the outer wall extrusion will be utilized for the wipe action."); @@ -6664,9 +6663,7 @@ void PrintConfigDef::init_fff_params() def->label = L("Draft shield"); def->tooltip = L("A draft shield is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft. " "It is usually needed only with open frame printers, i.e. without an enclosure.\n\n" - "Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used.\n" - "Note: With the draft shield active, the skirt will be printed at skirt distance from the object. " - "Therefore, if brims are active it may intersect with them. To avoid this, increase the skirt distance value.\n"); + "Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used."); def->enum_keys_map = &ConfigOptionEnum::get_enum_values(); def->enum_values.push_back("disabled"); def->enum_values.push_back("enabled"); @@ -8274,10 +8271,10 @@ void PrintConfigDef::init_fff_params() def->label = L("Maximum wipe tower print speed"); def->tooltip = L("The maximum print speed when purging in the wipe tower and printing the wipe tower sparse layers. " "When purging, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n\n" - "When printing the sparse layers, if the internal perimeter speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n\n" + "When printing the sparse layers, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n\n" "Increasing this speed may affect the tower's stability as well as increase the force with which the nozzle collides with any blobs that may have formed on the wipe tower.\n\n" "Before increasing this parameter beyond the default of 90 mm/s, make sure your printer can reliably bridge at the increased speeds and that ooze when tool changing is well controlled.\n\n" - "For the wipe tower external perimeters the internal perimeter speed is used regardless of this setting."); + "For the wipe tower external perimeters the internal perimeter speed is used, also limited by this setting."); def->sidetext = L("mm/s"); // millimeters per second, CIS languages need translation def->mode = comAdvanced; def->min = 10; @@ -8286,9 +8283,9 @@ void PrintConfigDef::init_fff_params() def = this->add("wipe_tower_wall_type", coEnum); def->label = L("Wall type"); def->tooltip = L("Wipe tower outer wall type.\n" - "1. Rectangle: The default wall type, a rectangle with fixed width and height.\n" + "1. Rectangle: A rectangle with fixed width and height.\n" "2. Cone: A cone with a fillet at the bottom to help stabilize the wipe tower.\n" - "3. Rib: Adds four ribs to the tower wall for enhanced stability."); + "3. Rib: The default wall type, which adds four ribs to the tower wall for enhanced stability."); def->enum_keys_map = &ConfigOptionEnum::get_enum_values(); def->enum_values.emplace_back("rectangle"); def->enum_values.emplace_back("cone"); @@ -8419,7 +8416,7 @@ void PrintConfigDef::init_fff_params() def = this->add("wipe_tower_extra_flow", coPercent); def->label = L("Extra flow for purging"); - def->tooltip = L("Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker or narrower " + def->tooltip = L("Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker " "than they normally would be. The spacing is adjusted automatically."); def->sidetext = "%"; def->mode = comAdvanced; @@ -8596,11 +8593,10 @@ void PrintConfigDef::init_fff_params() def->label = L("Minimum wall length"); def->category = L("Quality"); def->tooltip = L("Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. " - "Higher values remove more and longer walls.\n\n" + "The value is a multiple of the wall width. Higher values remove more and longer walls.\n\n" "NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. " - "Adjust 'One wall threshold' in the Advanced settings below to adjust the sensitivity of what is considered a top-surface. " + "Adjust 'One wall threshold' in the 'Walls and surfaces' settings below to adjust the sensitivity of what is considered a top-surface. " "'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled."); - def->sidetext = L("mm"); // millimeters, CIS languages need translation def->mode = comAdvanced; def->min = 0.0; def->max = 25.0; @@ -13044,6 +13040,13 @@ CLIMiscConfigDef::CLIMiscConfigDef() def->cli_params = "dir"; def->set_default_value(new ConfigOptionString()); + def = this->add("export_statistics", coBool); + def->label = L("Export statistics"); + def->tooltip = L("Write the statistics of each sliced plate as JSON, as plate_N.statistics.json next to its G-code in the output " + "directory and inside the 3MF of --export-3mf: print time, filament and feature totals, and the same per layer " + "and per object."); + def->set_default_value(new ConfigOptionBool(false)); + def = this->add("debug", coInt); def->label = L("Debug level"); def->tooltip = L("Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:trace\n"); diff --git a/src/libslic3r/Utils.hpp b/src/libslic3r/Utils.hpp index d9d30573fc..eb171e4ee0 100644 --- a/src/libslic3r/Utils.hpp +++ b/src/libslic3r/Utils.hpp @@ -66,6 +66,7 @@ #define CLI_OBJECT_ORIENT_FAILED -22 #define CLI_MODIFIED_PARAMS_TO_PRINTER -23 #define CLI_FILE_VERSION_NOT_SUPPORTED -24 +#define CLI_EXPORT_STATISTICS_ERROR -25 #define CLI_NO_SUITABLE_OBJECTS -50 diff --git a/src/slic3r/CMakeLists.txt b/src/slic3r/CMakeLists.txt index 0af1f2f2e1..75e5897f35 100644 --- a/src/slic3r/CMakeLists.txt +++ b/src/slic3r/CMakeLists.txt @@ -20,6 +20,8 @@ set(SLIC3R_GUI_SOURCES GUI/Widgets/FilamentLoad.hpp GUI/AboutDialog.cpp GUI/AboutDialog.hpp + GUI/AnimatedTexture.cpp + GUI/AnimatedTexture.hpp GUI/AmsMappingPopup.cpp GUI/AmsMappingPopupUpdate.cpp GUI/AmsMappingPopup.hpp diff --git a/src/slic3r/GUI/3DScene.cpp b/src/slic3r/GUI/3DScene.cpp index 5a39f9a279..acd2e4f41c 100644 --- a/src/slic3r/GUI/3DScene.cpp +++ b/src/slic3r/GUI/3DScene.cpp @@ -297,6 +297,7 @@ GLVolume::GLVolume(float r, float g, float b, float a) , printable(true) , visible(true) , is_active(true) + , on_hidden_plate(false) , zoom_to_volumes(true) , shader_outside_printer_detection_enabled(false) , is_outside(false) @@ -824,6 +825,8 @@ bool GLVolume::is_below_printbed() const void GLVolume::render_sinking_contours() { + if (!is_active) + return; m_sinking_contours.render(); } diff --git a/src/slic3r/GUI/3DScene.hpp b/src/slic3r/GUI/3DScene.hpp index 664cd109cf..7a19b20a24 100644 --- a/src/slic3r/GUI/3DScene.hpp +++ b/src/slic3r/GUI/3DScene.hpp @@ -211,6 +211,8 @@ public: bool visible : 1; // Whether or not this volume is active for rendering bool is_active : 1; + // Whether or not is_active was cleared because the other plates are hidden + bool on_hidden_plate : 1; // Whether or not to use this volume when applying zoom_to_volumes() bool zoom_to_volumes : 1; // Wheter or not this volume is enabled for outside print volume detection in shader. diff --git a/src/slic3r/GUI/AnimatedTexture.cpp b/src/slic3r/GUI/AnimatedTexture.cpp new file mode 100644 index 0000000000..fee8688ba5 --- /dev/null +++ b/src/slic3r/GUI/AnimatedTexture.cpp @@ -0,0 +1,240 @@ +#include "AnimatedTexture.hpp" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include "slic3r/GUI/GLTexture.hpp" + +namespace Slic3r::GUI { + +namespace { + +std::vector read_file_bytes(const std::string &path) +{ + std::ifstream ifs(path, std::ios::binary); + return std::vector(std::istreambuf_iterator(ifs), std::istreambuf_iterator()); +} + +bool has_gif_signature(const std::vector &bytes) +{ + return bytes.size() > 6 && bytes[0] == 'G' && bytes[1] == 'I' && bytes[2] == 'F'; +} + +// wxImage keeps colour and alpha in two separate buffers, and a file with no alpha at all has none; +// OpenGL wants the four channels interleaved. +std::vector image_to_rgba(const wxImage &image) +{ + const size_t n = size_t(image.GetWidth()) * size_t(image.GetHeight()); + const unsigned char *rgb = image.GetData(); + const unsigned char *a = image.HasAlpha() ? image.GetAlpha() : nullptr; + + std::vector out(n * 4); + for (size_t i = 0; i < n; ++i) { + out[i * 4 + 0] = rgb[i * 3 + 0]; + out[i * 4 + 1] = rgb[i * 3 + 1]; + out[i * 4 + 2] = rgb[i * 3 + 2]; + out[i * 4 + 3] = a != nullptr ? a[i] : 255; + } + return out; +} + +// One decoded frame on its way to the GPU: the whole animation's area, already composited. +struct DecodedFrame +{ + std::vector rgba; + double delay; // seconds +}; + +// Every frame of a GIF, composited onto the animation's own canvas. +// +// A GIF frame is a sub-rectangle that is drawn over what came before it, and the one before says how +// to clean up after itself (leave it, erase it, put back what it covered). Without replaying that, an +// animation that only re-sends the pixels that changed - which is most of them - draws as a flicker of +// disconnected patches. wxGIFDecoder hands over the raw palette indices, which is what makes replaying +// it here straightforward: a transparent index means "keep what is underneath", nothing else does. +bool decode_gif(const std::vector &bytes, int &width, int &height, std::vector &out) +{ + wxMemoryInputStream stream(bytes.data(), bytes.size()); + wxGIFDecoder decoder; + + // A truncated file still decodes everything up to the cut, which is worth showing. + const wxGIFErrorCode err = decoder.LoadGIF(stream); + if ((err != wxGIF_OK && err != wxGIF_TRUNCATED) || decoder.GetFrameCount() == 0) + return false; + + const wxSize size = decoder.GetAnimationSize(); + width = size.GetWidth(); + height = size.GetHeight(); + if (width <= 0 || height <= 0) + return false; + + std::vector canvas(size_t(width) * size_t(height) * 4, 0); + std::vector saved; + + for (unsigned int i = 0; i < decoder.GetFrameCount(); ++i) { + const wxSize frame_size = decoder.GetFrameSize(i); + const wxPoint frame_pos = decoder.GetFramePosition(i); + const wxAnimationDisposal disposal = decoder.GetDisposalMethod(i); + const unsigned char *indices = decoder.GetData(i); + const unsigned char *palette = decoder.GetPalette(i); + const int transparent = decoder.GetTransparentColourIndex(i); + + if (disposal == wxANIM_TOPREVIOUS) + saved = canvas; + + if (indices != nullptr && palette != nullptr) + for (int y = 0; y < frame_size.GetHeight(); ++y) { + const int cy = frame_pos.y + y; + if (cy < 0 || cy >= height) + continue; + for (int x = 0; x < frame_size.GetWidth(); ++x) { + const int cx = frame_pos.x + x; + if (cx < 0 || cx >= width) + continue; + const unsigned char index = indices[size_t(y) * size_t(frame_size.GetWidth()) + size_t(x)]; + if (int(index) == transparent) + continue; + unsigned char *dst = &canvas[(size_t(cy) * size_t(width) + size_t(cx)) * 4]; + dst[0] = palette[3 * size_t(index) + 0]; + dst[1] = palette[3 * size_t(index) + 1]; + dst[2] = palette[3 * size_t(index) + 2]; + dst[3] = 255; + } + } + + // Browsers treat 0 and 1 hundredths of a second as "as fast as the file can mean", and settle + // on 100 ms; an animation authored against that convention plays at the intended speed only if + // this does the same. + const long delay_ms = decoder.GetDelay(i); + out.push_back({ canvas, (delay_ms <= 10 ? 100.0 : double(delay_ms)) / 1000.0 }); + + if (disposal == wxANIM_TOBACKGROUND) { + for (int y = 0; y < frame_size.GetHeight(); ++y) { + const int cy = frame_pos.y + y; + if (cy < 0 || cy >= height) + continue; + const int x0 = std::max(0, frame_pos.x); + const int x1 = std::min(width, frame_pos.x + frame_size.GetWidth()); + if (x1 > x0) + std::fill_n(&canvas[(size_t(cy) * size_t(width) + size_t(x0)) * 4], size_t(x1 - x0) * 4, 0); + } + } else if (disposal == wxANIM_TOPREVIOUS) { + canvas = saved; + } + } + return !out.empty(); +} + +} // namespace + +bool AnimatedTexture::load_from_file(const std::string &path) +{ + reset(); + + boost::system::error_code ec; + if (!boost::filesystem::is_regular_file(path, ec)) + return false; + + const std::vector bytes = read_file_bytes(path); + if (bytes.empty()) + return false; + + std::vector frames; + int width = 0, height = 0; + + if (has_gif_signature(bytes)) { + if (!decode_gif(bytes, width, height, frames)) { + BOOST_LOG_TRIVIAL(error) << "AnimatedTexture: cannot decode GIF " << path; + return false; + } + } else { + wxLogNull no_log; // a format wxWidgets cannot read is handled here, not in a dialog + wxImage image; + wxMemoryInputStream stream(bytes.data(), bytes.size()); + if (!image.LoadFile(stream, wxBITMAP_TYPE_ANY) || !image.IsOk()) { + BOOST_LOG_TRIVIAL(error) << "AnimatedTexture: cannot decode image " << path; + return false; + } + width = image.GetWidth(); + height = image.GetHeight(); + frames.push_back({ image_to_rgba(image), 0.0 }); + } + + m_width = width; + m_height = height; + m_frames.reserve(frames.size()); + for (DecodedFrame &frame : frames) { + auto texture = std::make_unique(); + // Mipmapped: a hint is drawn at whatever width the panel has room for, which is usually + // smaller than the source, and an unfiltered downscale of a diagram is all aliasing. + if (!texture->load_from_raw_data(std::move(frame.rgba), (unsigned int) width, (unsigned int) height, false, + /* use_mipmaps */ true)) { + BOOST_LOG_TRIVIAL(error) << "AnimatedTexture: cannot upload " << path; + reset(); + return false; + } + m_frames.push_back({ std::move(texture), m_duration, frame.delay }); + m_duration += frame.delay; + } + return true; +} + +void AnimatedTexture::reset() +{ + m_frames.clear(); + m_width = 0; + m_height = 0; + m_duration = 0.; +} + +unsigned int AnimatedTexture::texture_id(double time) const +{ + if (m_frames.empty()) + return 0; + if (m_frames.size() == 1 || m_duration <= 0.) + return m_frames.front().texture->get_id(); + + const double t = time - m_duration * std::floor(time / m_duration); + // Frames are few; a linear walk beats keeping an index around and getting it stale. + size_t i = 0; + while (i + 1 < m_frames.size() && t >= m_frames[i].start + m_frames[i].delay) + ++i; + return m_frames[i].texture->get_id(); +} + +const AnimatedTexture *AnimatedTextureCache::get(const std::string &path) +{ + const auto it = m_items.find(path); + if (it != m_items.end()) + return it->second.get(); + + auto texture = std::make_unique(); + if (!texture->load_from_file(path)) + texture.reset(); // remembered as a failure, so the file is not re-read every frame + + const AnimatedTexture *result = texture.get(); + m_items.emplace(path, std::move(texture)); + return result; +} + +} // namespace Slic3r::GUI diff --git a/src/slic3r/GUI/AnimatedTexture.hpp b/src/slic3r/GUI/AnimatedTexture.hpp new file mode 100644 index 0000000000..be6a0c8b7f --- /dev/null +++ b/src/slic3r/GUI/AnimatedTexture.hpp @@ -0,0 +1,75 @@ +#ifndef slic3r_AnimatedTexture_hpp_ +#define slic3r_AnimatedTexture_hpp_ + +#include +#include +#include +#include + +#include "slic3r/GUI/GLTexture.hpp" + +namespace Slic3r::GUI { + +// An illustration for the UI to draw: one still image, or the frames of an animated GIF together with +// the delays the file asks for. Decoded on the CPU once and uploaded as one GL texture per frame. +// +// A texture per frame rather than an atlas: these are small hints a few hundred pixels across and a +// handful of frames long, so the extra textures cost little, while drawing a frame stays a plain +// ImGui::Image with no UV arithmetic and no dependence on the maximum texture size. +// +// load_from_file() uploads to the GPU, so it needs a current GL context - call it from rendering code. +class AnimatedTexture +{ +public: + AnimatedTexture() = default; + AnimatedTexture(AnimatedTexture &&) = default; + AnimatedTexture &operator=(AnimatedTexture &&) = default; + AnimatedTexture(const AnimatedTexture &) = delete; + AnimatedTexture &operator=(const AnimatedTexture &) = delete; + + // PNG, JPG and BMP through wxImage; GIF, animated or not, through wxGIFDecoder. False, and nothing + // loaded, if the file is missing or cannot be decoded. + bool load_from_file(const std::string &path); + void reset(); + + bool is_valid() const { return !m_frames.empty(); } + bool is_animated() const { return m_frames.size() > 1; } + int width() const { return m_width; } + int height() const { return m_height; } + // Length of one loop, in seconds; 0 for a still image. + double duration() const { return m_duration; } + + // The texture to draw `time` seconds into the loop, which wraps. 0 when nothing is loaded. + unsigned int texture_id(double time) const; + +private: + struct Frame + { + std::unique_ptr texture; + double start{0.}; // seconds into the loop this frame appears at + double delay{0.}; // seconds it stays up + }; + + std::vector m_frames; + int m_width{0}; + int m_height{0}; + double m_duration{0.}; +}; + +// The illustrations a panel has shown at least once, keyed by absolute path, decoded and uploaded on +// first use and kept until clear() - which has to run while the GL context is still current. +class AnimatedTextureCache +{ +public: + // Null when the file is missing or cannot be decoded. The failure is remembered too, so a tooltip + // whose illustration has not been drawn yet costs one lookup, not one decode attempt per frame. + const AnimatedTexture *get(const std::string &path); + void clear() { m_items.clear(); } + +private: + std::map> m_items; // null value: tried once, failed +}; + +} // namespace Slic3r::GUI + +#endif // slic3r_AnimatedTexture_hpp_ diff --git a/src/slic3r/GUI/BackgroundSlicingProcess.cpp b/src/slic3r/GUI/BackgroundSlicingProcess.cpp index c5a1737b79..5030196348 100644 --- a/src/slic3r/GUI/BackgroundSlicingProcess.cpp +++ b/src/slic3r/GUI/BackgroundSlicingProcess.cpp @@ -6,6 +6,7 @@ #include #include +#include "libslic3r/AppConfig.hpp" #include "libslic3r/Config.hpp" #include #include @@ -57,6 +58,7 @@ #include "libslic3r_version.h" #include "slic3r/GUI/Plater.hpp" #include "libslic3r/GCode/GCodeProcessor.hpp" +#include "libslic3r/GCode/GCodeStatistics.hpp" #include "libslic3r/PresetBundle.hpp" #include "slic3r/GUI/PartPlate.hpp" #include "slic3r/Utils/PrintHost.hpp" @@ -781,6 +783,7 @@ void BackgroundSlicingProcess::schedule_export(const std::string& path, bool exp this->invalidate_step(bspsGCodeFinalize); m_export_path = path; m_export_path_on_removable_media = export_path_on_removable_media; + m_export_statistics = GUI::wxGetApp().app_config->get_bool("export_statistics"); } void BackgroundSlicingProcess::schedule_upload(Slic3r::PrintHostJob upload_job) @@ -906,6 +909,8 @@ void BackgroundSlicingProcess::finalize_gcode() BOOST_LOG_TRIVIAL(error) << "Unexpected fail code(" << (int) copy_ret_val << ") durring copy_file() to " << export_path << "."; break; } + if (m_export_statistics) + export_gcode_statistics(*m_gcode_result, gcode_statistics_path(export_path)); m_print->set_status(100, GUI::format(_L("G-code file exported to %1%"), export_path)); } @@ -953,6 +958,8 @@ void BackgroundSlicingProcess::export_gcode() // throw Slic3r::ExportError(_utf8(L("Unknown error when exporting G-code."))); break; } + if (m_export_statistics) + export_gcode_statistics(*m_gcode_result, gcode_statistics_path(export_path)); // BBS auto evt = new wxCommandEvent(m_event_export_finished_id, GUI::wxGetApp().mainframe->m_plater->GetId()); diff --git a/src/slic3r/GUI/BackgroundSlicingProcess.hpp b/src/slic3r/GUI/BackgroundSlicingProcess.hpp index cebeb52e0f..231bee811e 100644 --- a/src/slic3r/GUI/BackgroundSlicingProcess.hpp +++ b/src/slic3r/GUI/BackgroundSlicingProcess.hpp @@ -258,6 +258,8 @@ private: // but once set, it cannot be re-set. std::string m_export_path; bool m_export_path_on_removable_media = false; + // Read from the preferences when the export is scheduled, as the background thread may not read them. + bool m_export_statistics = false; // Print host upload job to schedule after slicing is complete, used by schedule_upload(), // empty by default (ie. no upload to schedule) PrintHostJob m_upload_job; diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 3ac4fc2f78..bf87241fb6 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -1679,6 +1679,7 @@ GLCanvas3D::~GLCanvas3D() m_sel_plate_toolbar.del_all_item(); m_sel_plate_toolbar.del_stats_item(); + m_plate_switcher_items.clear(); } void GLCanvas3D::post_event(wxEvent &&event) @@ -2360,6 +2361,8 @@ void GLCanvas3D::zoom_to_gcode() void GLCanvas3D::zoom_to_plate(int plate_idx) { BoundingBoxf3 box; + if (plate_idx == REQUIRES_ZOOM_TO_ALL_PLATE && _hides_inactive_plates()) + plate_idx = REQUIRES_ZOOM_TO_CUR_PLATE; if (plate_idx == REQUIRES_ZOOM_TO_ALL_PLATE) { box = wxGetApp().plater()->get_partplate_list().get_bounding_box(); box.min.z() = 0.0; @@ -2416,12 +2419,22 @@ float GLCanvas3D::get_collapse_toolbar_height() const } // The bottom-left corner: the 3D navigator, then the column of round canvas buttons beside it, in -// units of the toolbar scale. Shared by _render_3d_navigator, _render_canvas_toolbar and -// get_canvas_toolbar_right, so an overlay kept clear of the corner follows its layout. +// units of the toolbar scale. Shared by _render_3d_navigator, _render_canvas_toolbar, +// get_canvas_toolbar_right and canvas_corner_height, so an overlay kept clear of the corner follows its layout. static constexpr float NAVIGATOR_SIZE = 128.f; static constexpr float CANVAS_TOOLBAR_MARGIN = 10.f; // off the canvas edge, when there is no navigator static constexpr float CANVAS_TOOLBAR_PADDING = 2.f; static constexpr float CANVAS_TOOLBAR_BUTTON = 36.f; +static constexpr float CANVAS_TOOLBAR_SPACING = 6.f; + +// What the corner takes at the left edge of the canvas: the 3D navigator, or else the canvas toolbar. +static float canvas_corner_height() +{ + if (wxGetApp().show_3d_navigator()) + return NAVIGATOR_SIZE; + const int buttons = wxGetApp().show_canvas_zoom_button() ? 3 : 2; + return CANVAS_TOOLBAR_MARGIN + 2.f * CANVAS_TOOLBAR_PADDING + buttons * CANVAS_TOOLBAR_BUTTON + (buttons - 1) * CANVAS_TOOLBAR_SPACING; +} float GLCanvas3D::get_canvas_toolbar_right() const { @@ -2546,6 +2559,9 @@ void GLCanvas3D::_render_frame(bool scene_dirty, bool only_init) wxGetApp().imgui()->new_frame(); + if (_update_inactive_plates_visibility()) + scene_dirty = true; + if (m_picking_enabled && !m_benchmarking) { if (m_rectangle_selection.is_dragging()) // picking pass using rectangle selection @@ -4978,7 +4994,7 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) // Don't deselect a volume if layer editing is enabled or any gizmo is active. We want the object to stay selected // during the scene manipulation. - if (m_picking_enabled && (!any_gizmo_active || !evt.CmdDown()) && (!m_hover_volume_idxs.empty())) { + if (m_picking_enabled && (m_gizmos.is_allow_multi_select_parts_or_objects() || !evt.CmdDown()) && (!m_hover_volume_idxs.empty())) { if (evt.LeftDown() && !m_hover_volume_idxs.empty()) { int volume_idx = get_first_hover_volume_idx(); bool already_selected = m_selection.contains_volume(volume_idx); @@ -4988,7 +5004,18 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) if (already_selected && ctrl_down) m_selection.remove(volume_idx); + else if (alt_down && m_gizmos.is_allow_multi_select_parts_or_objects() && m_selection.get_mode() == Selection::Volume && + m_selection.get_object_idx() == m_volumes.volumes[volume_idx]->object_idx() && + m_selection.get_instance_idx() == m_volumes.volumes[volume_idx]->instance_idx()) { + // Alt+click on another part of the selected parts' instance adds it, and on a selected + // part removes it, unless it is the only one. + if (!already_selected) + m_selection.add_volumes(Selection::Volume, {(unsigned int) volume_idx}, false); + else if (curr_idxs.size() > 1) + m_selection.remove_volumes(Selection::Volume, {(unsigned int) volume_idx}); + } else if (alt_down) { + // Select just the clicked part, also when an object is selected. Selection::EMode mode = Selection::Volume; if (already_selected) { std::vector volume_idxs; @@ -5588,13 +5615,14 @@ void GLCanvas3D::do_move(const std::string& snapshot_type, bool force_volume_mov // parts moved. Notifying a plate about an instance that stayed put invalidates its slice // result, and notifying instance 0 alone left a moved copy unregistered on its new plate. { + const bool parts_moved = force_volume_move || selection_mode == Selection::Volume; std::set> notified; for (unsigned int i : m_selection.get_volume_idxs()) { const GLVolume* v = m_volumes.volumes[i]; const int object_idx = v->object_idx(); if (object_idx < 0 || object_idx >= static_cast(m_model->objects.size())) continue; - const std::pair key(object_idx, selection_mode == Selection::Volume ? -1 : v->instance_idx()); + const std::pair key(object_idx, parts_moved ? -1 : v->instance_idx()); if (notified.insert(key).second) m_selection.notify_instance_update(key.first, key.second); } @@ -7657,7 +7685,6 @@ void GLCanvas3D::_update_select_plate_toolbar_stats_item(bool force_selected) { bool GLCanvas3D::_update_imgui_select_plate_toolbar() { - bool result = true; if (!m_sel_plate_toolbar.is_enabled()) { return false; } @@ -7682,19 +7709,13 @@ bool GLCanvas3D::_update_imgui_select_plate_toolbar() PartPlateList& plate_list = p_plater->get_partplate_list(); for (int i = 0; i < plate_list.get_plate_count(); i++) { IMToolbarItem* item = new IMToolbarItem(); - PartPlate* plate = plate_list.get_plate(i); - if (plate && plate->thumbnail_data.is_valid()) { - PartPlate* plate = plate_list.get_plate(i); - item->image_data = plate->thumbnail_data.pixels; - item->image_width = plate->thumbnail_data.width; - item->image_height = plate->thumbnail_data.height; - result = item->generate_texture(); - } + if (PartPlate* plate = plate_list.get_plate(i)) + item->set_thumbnail(plate->thumbnail_data); m_sel_plate_toolbar.m_items.push_back(item); } p_plater->clear_plate_toolbar_image_dirty(); m_sel_plate_toolbar.is_display_scrollbar = false; - return result; + return true; } //BBS: GUI refactor @@ -7962,8 +7983,8 @@ void GLCanvas3D::_picking_pass() if (0 <= hit.raycaster_id && hit.raycaster_id < (int)m_volumes.volumes.size()) { const GLVolume* volume = m_volumes.volumes[hit.raycaster_id]; if (volume->is_active && !volume->disabled && (volume->composite_id.volume_id >= 0 || m_render_sla_auxiliaries)) { - // do not add the volume id if any gizmo is active and CTRL is pressed - if (m_gizmos.get_current_type() == GLGizmosManager::EType::Undefined || !wxGetKeyState(WXK_CONTROL)) + // do not add the volume id if CTRL is pressed while a gizmo that does not allow Ctrl+click selection is active + if (m_gizmos.is_allow_multi_select_parts_or_objects() || !wxGetKeyState(WXK_CONTROL)) m_hover_volume_idxs.emplace_back(hit.raycaster_id); m_gizmos.set_hover_id(-1); } @@ -8889,11 +8910,75 @@ void GLCanvas3D::_render_bed(const Transform3d& view_matrix, const Transform3d& const Vec2d bc = m_bed.build_volume().bed_center(); m_bed.set_axes_origin(Vec3d(bc.x(), bc.y(), 0.0)); } else { - m_bed.set_axes_mode(m_main_toolbar.is_enabled()); + // With the other plates hidden, the axes go to the current plate as in Preview. + m_bed.set_axes_mode(m_main_toolbar.is_enabled() && !_hides_inactive_plates()); } m_bed.render(*this, view_matrix, projection_matrix, bottom, scale_factor, show_axes); } +bool GLCanvas3D::_hides_inactive_plates() const +{ + return m_canvas_type == ECanvasType::CanvasView3D && !m_design_canvas && wxGetApp().focus_mode(); +} + +bool GLCanvas3D::_update_inactive_plates_visibility() +{ + const bool hide = _hides_inactive_plates(); + if (!hide && !m_inactive_plates_hidden) + return false; + + PartPlateList& plate_list = wxGetApp().plater()->get_partplate_list(); + PartPlate* plate = hide ? plate_list.get_curr_plate() : nullptr; + + struct Instance + { + BoundingBoxf3 box; + bool selected{ false }; + }; + std::map, Instance> instances; + if (plate != nullptr) + for (const GLVolume* volume : m_volumes.volumes) { + Instance& instance = instances[{ volume->object_idx(), volume->instance_idx() }]; + instance.box.merge(volume->transformed_convex_hull_bounding_box()); + instance.selected |= volume->selected; + } + + // A gizmo that hides the other objects shows them all again when it closes. + const bool keep_hidden = m_gizmos.is_hiding_instances(); + bool changed = false; + bool any_hidden = false; + std::vector shown_again(m_volumes.volumes.size(), false); + for (size_t i = 0; i < m_volumes.volumes.size(); ++i) { + GLVolume* volume = m_volumes.volumes[i]; + const Instance* instance = plate != nullptr ? &instances[{ volume->object_idx(), volume->instance_idx() }] : nullptr; + if (instance != nullptr && !instance->selected && instance->box.defined && !plate->get_bounding_box().overlap(instance->box)) { + changed |= volume->is_active; + volume->is_active = false; + volume->on_hidden_plate = true; + } else if (volume->on_hidden_plate && !keep_hidden) { + volume->is_active = true; + volume->on_hidden_plate = false; + shown_again[i] = true; + changed = true; + } + any_hidden |= volume->on_hidden_plate; + } + + if (auto* raycasters = get_raycasters_for_picking(SceneRaycaster::EType::Volume)) + for (const std::shared_ptr& item : *raycasters) { + const int i = SceneRaycaster::decode_id(SceneRaycaster::EType::Volume, item->get_id()); + if (0 <= i && i < int(m_volumes.volumes.size()) && (m_volumes.volumes[i]->on_hidden_plate || shown_again[i])) + item->set_active(shown_again[i]); + } + if (auto* raycasters = get_raycasters_for_picking(SceneRaycaster::EType::Bed)) + for (const std::shared_ptr& item : *raycasters) + item->set_active(!hide || SceneRaycaster::decode_id(SceneRaycaster::EType::Bed, item->get_id()) / PartPlate::GRABBER_COUNT == + plate_list.get_curr_plate_index()); + + m_inactive_plates_hidden = hide || any_hidden; + return changed; +} + void GLCanvas3D::_render_platelist(const Transform3d& view_matrix, const Transform3d& projection_matrix, bool bottom, bool only_current, bool only_body, int hover_id, bool render_cali, bool show_grid) { PartPlateList& plate_list = wxGetApp().plater()->get_partplate_list(); @@ -8902,7 +8987,7 @@ void GLCanvas3D::_render_platelist(const Transform3d& view_matrix, const Transfo PartPlate* curr_plate = plate_list.get_curr_plate(); const Transform3d plate_view_matrix = m_design_canvas && curr_plate != nullptr ? Transform3d(view_matrix * Geometry::translation_transform(-curr_plate->get_origin())) : view_matrix; - plate_list.render(plate_view_matrix, projection_matrix, bottom, only_current, only_body, hover_id, render_cali, show_grid, !m_plate_chrome_enabled); + plate_list.render(plate_view_matrix, projection_matrix, bottom, only_current, only_body, hover_id, render_cali, show_grid, !m_plate_chrome_enabled, _hides_inactive_plates()); } BoundingBoxf3 GLCanvas3D::_current_plate_box() const @@ -9920,6 +10005,7 @@ void GLCanvas3D::_render_overlays() //BBS: GUI refactor: GLToolbar _render_imgui_select_plate_toolbar(); + _render_plate_switcher(); _render_return_toolbar(); // BBS //_render_view_toolbar(); @@ -10188,6 +10274,35 @@ void GLCanvas3D::_render_main_toolbar() m_main_toolbar.render_arrow(*this, m_toolbar_highlighter.m_toolbar_item); } +// The scrollbar of the plate toolbars of Preview and Prepare, in units of the toolbar scale. +static constexpr float PLATE_TOOLBAR_SCROLLBAR = 14.f; + +// Pushes 4 colors and 1 style var. +static void push_plate_toolbar_scrollbar_style(bool is_dark, float scrollbar_size) +{ + const ImVec4 grab(0.77f, 0.77f, 0.77f, is_dark ? .6f : 1.f); + // A background with opacity over the window's would make a second color. + ImGui::PushStyleColor(ImGuiCol_ScrollbarBg, ImVec4(0.f, 0.f, 0.f, 0.f)); + ImGui::PushStyleColor(ImGuiCol_ScrollbarGrab, grab); + ImGui::PushStyleColor(ImGuiCol_ScrollbarGrabHovered, grab); + ImGui::PushStyleColor(ImGuiCol_ScrollbarGrabActive, grab); + ImGui::PushStyleVar(ImGuiStyleVar_ScrollbarSize, scrollbar_size); +} + +// The border of a hovered plate in the plate toolbars, when it is not the current one. +static ImVec4 plate_toolbar_hover_color(bool is_dark) +{ + return ImVec4(0.67f, 0.67f, 0.67f, is_dark ? .6f : 1.f); +} + +// Not IsWindowHovered(), which is false while a button is held down and would drop the bar. +static bool plate_toolbar_keeps_scrollbar(bool shown, float scrollbar_size) +{ + const ImVec2 pos = ImGui::GetWindowPos(); + return ImGui::IsMouseHoveringRect(pos, pos + ImGui::GetWindowSize() + ImVec2(shown ? scrollbar_size : 0.f, 0.f), !shown) || + (ImGui::GetIO().MouseDown[0] && GImGui->ActiveId != 0 && GImGui->ActiveIdWindow == ImGui::GetCurrentWindow()); +} + //BBS: GUI refactor: GLToolbar adjust //when rendering, {0, 0} is at the center, {-0.5, 0.5} at the left-up void GLCanvas3D::_render_imgui_select_plate_toolbar() @@ -10318,16 +10433,15 @@ void GLCanvas3D::_render_imgui_select_plate_toolbar() int item_count = m_sel_plate_toolbar.m_items.size() + (m_sel_plate_toolbar.show_stats_item ? 1 : 0); float window_height_calc = (item_count * (button_height + (margin_size + button_margin) * 2.0f) + (item_count - 1) * ImGui::GetStyle().ItemSpacing.y + ImGui::GetStyle().WindowPadding.y * 2.0f); bool show_scroll = m_sel_plate_toolbar.is_display_scrollbar && (window_height_calc > window_height_max); - float scrollbar_size = 14.0f * f_scale; + float scrollbar_size = PLATE_TOOLBAR_SCROLLBAR * f_scale; float window_height = std::min(window_height_calc, window_height_max); float window_width = button_width + (margin_size + button_margin + ImGui::GetStyle().WindowPadding.x) * 2 + (show_scroll ? scrollbar_size : 0); ImVec4 window_bg = m_is_dark ? ImVec4(.13f, .13f, .15f, .5f) : ImVec4(1.f, 1.f, 1.f, .7f); ImVec4 button_active = ImGuiWrapper::COL_ORCA; // ORCA: Use orca color for selected sliced plate border - ImVec4 button_hover = ImVec4(0.67f, 0.67f, 0.67, m_is_dark ? .6f : 1.0f); + ImVec4 button_hover = plate_toolbar_hover_color(m_is_dark); ImVec4 orca_active = m_is_dark ? ImGuiWrapper::COL_ORCA_DARK : ImGuiWrapper::COL_ORCA; ImVec4 orca_hover = m_is_dark ? ImGuiWrapper::COL_ORCA_HOVER_DARK : ImGuiWrapper::COL_ORCA_HOVER; - ImVec4 scroll_col = ImVec4(0.77f, 0.77f, 0.77f, m_is_dark ? .6f : 1.0f); ImU32 plate_bg = m_is_dark ? IM_COL32(255, 255, 255, 10) : IM_COL32(0, 0, 0, 10); ImU32 plate_dim = m_is_dark ? IM_COL32(30, 30, 30, 100) : IM_COL32(0, 0, 0, 50); float button_radius = 1.0f * f_scale; @@ -10335,14 +10449,10 @@ void GLCanvas3D::_render_imgui_select_plate_toolbar() //use white text as the background switch to black ImGui::PushStyleColor(ImGuiCol_Text, m_is_dark ? ImVec4(.9f, .9f, .9f, 1) : ImVec4(.3f, .3f, .3f, 1)); // ORCA Plate number text > Add support for dark mode ImGui::PushStyleColor(ImGuiCol_WindowBg, window_bg); - ImGui::PushStyleColor(ImGuiCol_ScrollbarBg, ImVec4(0.f, 0.f, 0.f, 0.f)); // ORCA using background color with opacity creates a second color. This prevents secondary color - ImGui::PushStyleColor(ImGuiCol_ScrollbarGrabActive, scroll_col); - ImGui::PushStyleColor(ImGuiCol_ScrollbarGrabHovered, scroll_col); - ImGui::PushStyleColor(ImGuiCol_ScrollbarGrab, scroll_col); ImGui::PushStyleColor(ImGuiCol_ButtonActive, button_active); ImGui::PushStyleColor(ImGuiCol_ButtonHovered, button_hover); + push_plate_toolbar_scrollbar_style(m_is_dark, scrollbar_size); - ImGui::PushStyleVar(ImGuiStyleVar_ScrollbarSize, scrollbar_size); ImGui::PushStyleVar(ImGuiStyleVar_WindowBorderSize, 0.0f); ImGui::PushStyleVar(ImGuiStyleVar_WindowRounding, show_scroll ? (6.f * f_scale) : (button_radius + margin_size + frame_padding + ImGui::GetStyle().WindowPadding.x)); ImGui::PushStyleVar(ImGuiStyleVar_FrameRounding, button_radius + margin_size); @@ -10613,18 +10723,109 @@ void GLCanvas3D::_render_imgui_select_plate_toolbar() ImGui::PopStyleColor(8); ImGui::PopStyleVar(7); - //ORCA ImGui::IsWindowHovered() returns false when left_down events on buttons that causes scrollbar disappears for a short time - auto win_pos = ImGui::GetWindowPos(); - bool is_win_hovered = ImGui::IsMouseHoveringRect(win_pos, win_pos + ImVec2(window_width + (show_scroll ? scrollbar_size : 0), window_height), !show_scroll); - - // Also show scrollbar visible and continue to capture mouse position - const bool is_scrollbar_active_drag = GImGui != nullptr && ImGui::GetIO().MouseDown[0] && GImGui->ActiveId != 0 && GImGui->ActiveIdWindow == ImGui::GetCurrentWindow(); - - m_sel_plate_toolbar.is_display_scrollbar = is_win_hovered || is_scrollbar_active_drag; + m_sel_plate_toolbar.is_display_scrollbar = plate_toolbar_keeps_scrollbar(show_scroll, scrollbar_size); imgui.end(); } +void GLCanvas3D::_render_plate_switcher() +{ + Plater* plater = wxGetApp().plater(); + PartPlateList& plate_list = plater->get_partplate_list(); + const int plate_count = plate_list.get_plate_count(); + if (!_hides_inactive_plates() || plate_count < 2 || m_gizmos.get_current_type() != GLGizmosManager::Undefined) + return; + + // The thumbnails are the ones of the Preview plate toolbar. + const unsigned version = plater->plate_toolbar_image_version(); + if (m_plate_switcher_version != version || m_plate_switcher_items.size() != size_t(plate_count)) { + // Only the current plate is edited here; the others are redrawn when their thumbnails go invalid. + for (int i = 0; i < plate_count && !plater->is_gcode_3mf(); ++i) + plater->update_plate_thumbnails(i, i == plate_list.get_curr_plate_index()); + m_plate_switcher_items.clear(); + for (int i = 0; i < plate_count; ++i) { + m_plate_switcher_items.push_back(std::make_unique()); + m_plate_switcher_items.back()->set_thumbnail(plate_list.get_plate(i)->thumbnail_data); + } + m_plate_switcher_version = version; + } + + float sc = get_scale(); +#ifdef WIN32 + sc *= (float) get_dpi_for_window(wxGetApp().GetTopWindow()) / (float) DPI_DEFAULT; +#endif // WIN32 + + ImGuiWrapper& imgui = *wxGetApp().imgui(); + const ImVec2 btn_size = ImVec2(72.f, 72.f) * sc; + const ImVec2 padding = ImVec2(8.f, 8.f) * sc; + const float spacing = 8.f * sc; + const float rounding = 4.f * sc; + const float scrollbar = PLATE_TOOLBAR_SCROLLBAR * sc; + const float top = std::max(m_main_toolbar.get_height(), m_gizmos.get_scaled_total_height()) + CANVAS_TOOLBAR_MARGIN * sc; + const float content_h = plate_count * (btn_size.y + spacing) - spacing + 2.f * padding.y; + const float max_h = std::max(btn_size.y + 2.f * padding.y, float(get_canvas_size().get_height()) - top - (canvas_corner_height() + CANVAS_TOOLBAR_MARGIN) * sc); + // As in the Preview plate toolbar, the scrollbar shows only while the mouse is over the column. + const bool scroll = m_plate_switcher_scrollbar && content_h > max_h; + + const ImVec4 text_color = m_is_dark ? ImVec4(.9f, .9f, .9f, 1.f) : ImVec4(.3f, .3f, .3f, 1.f); + const ImVec4 empty_color = ImVec4(text_color.x, text_color.y, text_color.z, .45f); + const ImVec4 hover = plate_toolbar_hover_color(m_is_dark); + ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, padding); + ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(spacing, spacing)); + // Concentric with the thumbnails; tighter around the scrollbar, as in the Preview plate toolbar. + ImGui::PushStyleVar(ImGuiStyleVar_WindowRounding, scroll ? 6.f * sc : rounding + padding.x); + ImGui::PushStyleVar(ImGuiStyleVar_WindowBorderSize, 0.f); + ImGui::PushStyleColor(ImGuiCol_WindowBg, m_is_dark ? ImVec4(.13f, .13f, .15f, .5f) : ImVec4(1.f, 1.f, 1.f, .7f)); + push_plate_toolbar_scrollbar_style(m_is_dark, scrollbar); + + imgui.set_next_window_pos(CANVAS_TOOLBAR_MARGIN * sc, top, ImGuiCond_Always, 0.f, 0.f); + imgui.set_next_window_size(btn_size.x + 2.f * padding.x + (scroll ? scrollbar : 0.f), std::min(content_h, max_h), ImGuiCond_Always); + imgui.begin(std::string("##PlateSwitcher"), ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoTitleBar | + ImGuiWindowFlags_NoCollapse | (scroll ? 0 : ImGuiWindowFlags_NoScrollbar)); + + const int curr_plate = plate_list.get_curr_plate_index(); + ImDrawList* draw_list = ImGui::GetWindowDrawList(); + const ImU32 plate_bg = m_is_dark ? IM_COL32(255, 255, 255, 10) : IM_COL32(0, 0, 0, 10); + const ImU32 plate_dim = m_is_dark ? IM_COL32(30, 30, 30, 100) : IM_COL32(0, 0, 0, 50); + for (int i = 0; i < plate_count; ++i) { + PartPlate* plate = plate_list.get_plate(i); + const bool current = i == curr_plate; + const ImVec2 pos = ImGui::GetCursorScreenPos(); + ImGui::PushID(i); + const bool clicked = ImGui::InvisibleButton("##plate", btn_size); + ImGui::PopID(); + const bool hovered = ImGui::IsItemHovered(); + + draw_list->AddRectFilled(pos, pos + btn_size, plate_bg, rounding); + if (ImTextureID texture = m_plate_switcher_items[i]->texture_id) + draw_list->AddImageRounded(texture, pos, pos + btn_size, ImVec2(0.f, 1.f), ImVec2(1.f, 0.f), IM_COL32_WHITE, rounding); + if (plate->empty()) + draw_list->AddRectFilled(pos, pos + btn_size, plate_dim, rounding); + if (current || hovered) { + const float border = 2.f * sc; + draw_list->AddRect(pos - ImVec2(border, border) * .5f, pos + btn_size + ImVec2(border, border) * .5f, + ImGui::GetColorU32(current ? (hovered ? ImGuiWrapper::COL_ORCA_HOVER : ImGuiWrapper::COL_ORCA) : hover), + rounding + border * .5f, 0, border); + } + draw_list->AddText(pos + ImVec2(4.f, 2.f) * sc, ImGui::GetColorU32(plate->empty() ? empty_color : text_color), std::to_string(i + 1).c_str()); + + if (clicked && !current) + plater->CallAfter([i]() { + wxGetApp().plater()->select_plate(i); + wxGetApp().plater()->deselect_all(); + }); + if (hovered) { + const std::string name = plate->get_plate_name(); + imgui.tooltip(_u8L("Plate") + " " + std::to_string(i + 1) + (name.empty() ? "" : " (" + name + ")"), ImGui::GetFontSize() * 20.f); + } + } + + m_plate_switcher_scrollbar = plate_toolbar_keeps_scrollbar(scroll, scrollbar); + imgui.end(); + ImGui::PopStyleColor(5); + ImGui::PopStyleVar(5); +} + //BBS: GUI refactor: GLToolbar adjust //when rendering, {0, 0} is at the center, {-0.5, 0.5} at the left-up void GLCanvas3D::_render_assemble_view_toolbar() const @@ -10731,7 +10932,7 @@ void GLCanvas3D::_render_canvas_toolbar() ImVec2 btn_size = ImVec2(CANVAS_TOOLBAR_BUTTON, CANVAS_TOOLBAR_BUTTON) * sc; ImVec2 margin = ImVec2(m_canvas_toolbar_pos[0] > 0 ? 0.f : (CANVAS_TOOLBAR_MARGIN * sc), CANVAS_TOOLBAR_MARGIN * sc); - ImVec2 spacing = ImVec2(6.f, 6.f) * sc; + ImVec2 spacing = ImVec2(CANVAS_TOOLBAR_SPACING, CANVAS_TOOLBAR_SPACING) * sc; ImVec2 padding = ImVec2(CANVAS_TOOLBAR_PADDING, CANVAS_TOOLBAR_PADDING) * sc; Vec2i32 pos = { m_canvas_toolbar_pos[0] + margin.x, @@ -10934,6 +11135,17 @@ void GLCanvas3D::_render_canvas_toolbar() []{wxGetApp().toggle_show_plate_gridlines();} ); + create_menu_item( _utf8(L("Focus mode")), + m_canvas_type == ECanvasType::CanvasView3D && !m_design_canvas, // work only on prepare + wxGetApp().focus_mode(), + [this]{ + wxGetApp().toggle_focus_mode(); + if (wxGetApp().focus_mode()) + zoom_to_plate(REQUIRES_ZOOM_TO_CUR_PLATE); + m_dirty = true; + } + ); + ImGui::Separator(); create_menu_item( _utf8(L("Labels")), diff --git a/src/slic3r/GUI/GLCanvas3D.hpp b/src/slic3r/GUI/GLCanvas3D.hpp index df265bb080..e483859824 100644 --- a/src/slic3r/GUI/GLCanvas3D.hpp +++ b/src/slic3r/GUI/GLCanvas3D.hpp @@ -660,6 +660,10 @@ private: mutable GLToolbar m_main_toolbar; mutable GLToolbar m_separator_toolbar; mutable IMToolbar m_sel_plate_toolbar; + // Thumbnails of the plate switcher (Focus mode), refreshed when the plater's version changes. + std::vector> m_plate_switcher_items; + unsigned m_plate_switcher_version{ unsigned(-1) }; + bool m_plate_switcher_scrollbar{ false }; mutable GLToolbar m_assemble_view_toolbar; mutable IMReturnToolbar m_return_toolbar; mutable Vec2i32 m_canvas_toolbar_pos = {140, 5}; @@ -778,6 +782,8 @@ private: //BBS:add plate related logic mutable std::vector m_hover_volume_idxs; std::vector m_hover_plate_idxs; + // Some volume or plate raycaster may still be hidden with the inactive plates. + bool m_inactive_plates_hidden{ false }; // IMEX ghost hover state (plate-owned transparent ghost volumes). int m_hover_ghost_head { -1 }; // physical head index, -1 when not hovering a ghost int m_hover_ghost_plate { -1 }; // plate index for the hovered ghost, -1 when none @@ -1527,6 +1533,9 @@ private: void _render_shadows(const Transform3d& view_matrix, const Transform3d& projection_matrix); //BBS: add part plate related logic void _render_platelist(const Transform3d& view_matrix, const Transform3d& projection_matrix, bool bottom, bool only_current, bool only_body = false, int hover_id = -1, bool render_cali = false, bool show_grid = true); + bool _hides_inactive_plates() const; + // Returns whether what the scene shows changed. + bool _update_inactive_plates_visibility(); // The current plate's box (XY, at z = 0); in the Design tab, its own bed's. BoundingBoxf3 _current_plate_box() const; // Design tab: draw the CAD grid (minor 10 mm + major 50 mm) in place of the plate's @@ -1565,6 +1574,8 @@ private: void _render_gizmos_overlay(); void _render_main_toolbar(); void _render_imgui_select_plate_toolbar(); + // Prepare: picks the plate to show while the inactive ones are hidden. + void _render_plate_switcher(); void _render_assemble_view_toolbar() const; void _render_return_toolbar() const; void _render_canvas_toolbar(); diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index fa8bc811c3..5351ae4904 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -41,6 +41,7 @@ #include #include #include +#include #include #include #include @@ -325,6 +326,13 @@ namespace GUI { class MainFrame; +// The OrcaCloud agent behind the shared NetworkAgent, or null when networking/OrcaCloud is not +// available (e.g. stealth mode or the network plugin still loading). +static std::shared_ptr get_orca_cloud_agent(NetworkAgent* agent) +{ + return agent ? std::dynamic_pointer_cast(agent->get_cloud_agent()) : nullptr; +} + void start_ping_test() { return; @@ -2262,7 +2270,9 @@ void GUI_App::init_networking_callbacks() if (return_code == 5) { GUI::wxGetApp().CallAfter([this, provider = event.provider] { BOOST_LOG_TRIVIAL(info) << "logout: login expired"; - this->request_user_logout(provider); + // Involuntary: the desktop lost its session on its own. Leave the webview's + // own session alone (guide §8). + this->request_user_logout(provider, /*user_initiated=*/false); MessageDialog msg_dlg(nullptr, _L("Login information expired. Please login again."), "", wxAPPLY | wxOK); if (msg_dlg.ShowModal() == wxOK) { return; @@ -5238,7 +5248,7 @@ void GUI_App::post_logout_to_webview(const std::string& provider) } } -void GUI_App::request_user_logout(const std::string& provider/* = ORCA_CLOUD_PROVIDER*/) +void GUI_App::request_user_logout(const std::string& provider/* = ORCA_CLOUD_PROVIDER*/, bool user_initiated) { if (m_agent && m_agent->is_user_login(provider)) { m_agent->user_logout(true, provider); @@ -5251,6 +5261,21 @@ void GUI_App::request_user_logout(const std::string& provider/* = ORCA_CLOUD_PRO } if (provider == ORCA_CLOUD_PROVIDER) { + // Invalidate any handoff still in flight, so a token minted for the signed-out + // account is never loaded into the pane. + ++m_cloud_handoff_gen; + m_cloud_handoff_state.clear(); + + // An explicit user sign-out also ends the webview's own cloud session (guide §8). + // A session the desktop lost on its own must NOT do this: a 2FA user would otherwise + // loop through the code prompt on every desktop re-login. + if (user_initiated) { + if (auto orca = get_orca_cloud_agent(m_agent)) { + if (WebViewPanel* home = WebViewPanel::if_built()) + home->cloud_signed_out(from_u8(orca->build_web_session_signout_url())); + } + } + /* delete old user settings */ bool transfer_preset_changes = false; wxString header = _L("Some presets are modified.") + "\n" + @@ -5372,7 +5397,7 @@ std::string GUI_App::handle_web_request(std::string cmd) else if (command_str.compare("homepage_logout") == 0) { CallAfter([this] { BOOST_LOG_TRIVIAL(info) << "logout: homepage_logout"; - request_user_logout(); + request_user_logout(ORCA_CLOUD_PROVIDER, /*user_initiated=*/true); }); } else if (command_str.compare("get_orca_login_info") == 0) { @@ -5387,7 +5412,7 @@ std::string GUI_App::handle_web_request(std::string cmd) else if (command_str.compare("homepage_bambu_logout") == 0) { CallAfter([this] { BOOST_LOG_TRIVIAL(info) << "logout: homepage_bambu_logout"; - request_user_logout(BBL_CLOUD_PROVIDER); + request_user_logout(BBL_CLOUD_PROVIDER, /*user_initiated=*/true); }); } else if (command_str.compare("homepage_orca_login_or_register") == 0) { @@ -5396,7 +5421,7 @@ std::string GUI_App::handle_web_request(std::string cmd) else if (command_str.compare("homepage_orca_logout") == 0) { CallAfter([this] { BOOST_LOG_TRIVIAL(info) << "logout: homepage_orca_logout"; - request_user_logout(ORCA_CLOUD_PROVIDER); + request_user_logout(ORCA_CLOUD_PROVIDER, /*user_initiated=*/true); }); } else if (command_str.compare("homepage_modeldepot") == 0) { @@ -5408,6 +5433,20 @@ std::string GUI_App::handle_web_request(std::string cmd) else if (command_str.compare("homepage_openproject") == 0) { this->request_open_project({}); } + else if (command_str.compare("homepage_open_cloud") == 0) { + // Deferred: set_cloud_mode() may create a second native webview, which must + // not run inside this webview's script-message callback. + CallAfter([this]() { + if (WebViewPanel* home = WebViewPanel::if_built()) + home->set_cloud_mode(true, cloud_webview_handoff()); + }); + } + else if (command_str.compare("homepage_close_cloud") == 0) { + CallAfter([]() { + if (WebViewPanel* home = WebViewPanel::if_built()) + home->set_cloud_mode(false); + }); + } else if (command_str.compare("get_recent_projects") == 0) { if (mainframe) { if (WebViewPanel* home = WebViewPanel::if_built()) { @@ -5680,7 +5719,9 @@ void GUI_App::on_http_error(wxCommandEvent &evt) if (!provider.empty() && m_agent->is_user_login(provider)) { if (std::chrono::steady_clock::now() - m_last_401_error_time > 30s) { BOOST_LOG_TRIVIAL(warning) << "logout: http error 401."; - this->request_user_logout(provider); + // Involuntary: a 401 means the desktop session was rejected. Leave the + // webview's own session alone (guide §8). + this->request_user_logout(provider, /*user_initiated=*/false); if (!m_show_http_error_msgdlg) { MessageDialog msg_dlg(nullptr, _L("Login information expired. Please login again."), "", wxAPPLY | wxOK); @@ -5824,6 +5865,93 @@ void GUI_App::on_update_machine_list(wxCommandEvent &evt) }*/ } +wxString GUI_App::cloud_webview_handoff() +{ + // The cloud pane loads the Start URL, not a token: the page checks the webview's own session + // and asks for a handoff itself (guide §4). Signed out, user_id is omitted and the page will + // post request_web_session, which is what opens the desktop login dialog. + auto orca = get_orca_cloud_agent(m_agent); + if (!orca) + return {}; + return from_u8(orca->build_web_session_start_url()); +} + +void GUI_App::request_cloud_web_session(const std::string& state) +{ + if (state.empty()) + return; + + // Only the newest request counts: a newer state supersedes any mint or login still in flight. + m_cloud_handoff_state = state; + const uint64_t gen = ++m_cloud_handoff_gen; + + auto orca = get_orca_cloud_agent(m_agent); + if (!orca || !orca->is_user_login()) { + // Desktop signed out: open the desktop login dialog and stop here. On success + // on_user_login_handle reloads the Start URL, which makes the page request again; on + // cancel nothing happens (the guide's "on cancel, do nothing"). The newest state is + // already stored, so a repeat request while the dialog is open is dropped rather than + // stacking another dialog. + if (!login_dlg || !login_dlg->IsShown()) + request_login(true, ORCA_CLOUD_PROVIDER); + return; + } + + mint_cloud_web_session(state, gen); +} + +void GUI_App::mint_cloud_web_session(const std::string& state, uint64_t gen) +{ + auto orca = get_orca_cloud_agent(m_agent); + if (!orca) + return; + + // The endpoint call blocks on network I/O (and possibly a cross-process token refresh), so + // it must not run on the UI thread. Hand off to a worker and marshal the token back. + boost::thread([this, orca, state, gen]() { + std::string token_hash; + std::string error_code; + unsigned int http_code = 0; + orca->request_web_session_handoff(token_hash, error_code, http_code); + + if (is_closing()) + return; + + if (token_hash.empty()) { + // No token: 401 after retry, 409/429/503 or a transport error. The page owns its own + // "Sign-in link expired"/"Try again" UI; the desktop stays silent. Never log the body + // (it may echo account data), only the status/error code. + BOOST_LOG_TRIVIAL(warning) << "cloud web session handoff not minted - http_code=" << http_code + << " error_code=" << error_code; + return; + } + + GUI::wxGetApp().CallAfter([this, state, gen, token_hash]() { + on_cloud_web_session_minted(state, gen, token_hash); + }); + }).detach(); +} + +void GUI_App::on_cloud_web_session_minted(const std::string& state, uint64_t gen, const std::string& token_hash) +{ + if (is_closing()) + return; + // Drop a result for a superseded request (a newer request_web_session, login or sign-out). + if (gen != m_cloud_handoff_gen || state != m_cloud_handoff_state) + return; + if (token_hash.empty()) + return; + + auto orca = get_orca_cloud_agent(m_agent); + if (!orca) + return; + + // Load the Complete URL in the SAME webview that posted request_web_session, because the + // state lives in that webview's session storage (guide §3/§7). + if (WebViewPanel* home = WebViewPanel::if_built()) + home->load_cloud_url(from_u8(orca->build_web_session_complete_url(token_hash, state))); +} + void GUI_App::on_user_login_handle(wxCommandEvent &evt) { if (!m_agent) { return; } @@ -5879,6 +6007,16 @@ void GUI_App::on_user_login_handle(wxCommandEvent &evt) if (app_config->get("sync_user_preset") == "true") { start_sync_user_preset(); } + + // Re-seed the embedded OrcaCloud pane if it is already open, so it picks up the new session + // without waiting for the next open. On a fresh login or account switch this invalidates any + // in-flight handoff for the previous account and loads the Start URL with the new user_id, so + // the page drops the old account and re-requests (guide §8). + ++m_cloud_handoff_gen; + m_cloud_handoff_state.clear(); + if (WebViewPanel* home = WebViewPanel::if_built()) + if (home->cloud_mode_active()) + home->set_cloud_mode(true, cloud_webview_handoff()); } @@ -8012,8 +8150,11 @@ void GUI_App::on_stealth_mode_enter() { stop_sync_user_preset(); BOOST_LOG_TRIVIAL(info) << "logout: on_stealth_mode_enter"; - request_user_logout(ORCA_CLOUD_PROVIDER); - request_user_logout(BBL_CLOUD_PROVIDER); + // Stealth mode forces a desktop logout, but the user did not choose "Sign out": guide §8 ties + // ?signout=1 to the explicit desktop sign-out only. Leave the cloud webview's own session + // alone, so it is re-checked (and re-seeded with the right account) on the next open. + request_user_logout(ORCA_CLOUD_PROVIDER, /*user_initiated=*/false); + request_user_logout(BBL_CLOUD_PROVIDER, /*user_initiated=*/false); if (WebViewPanel* home = WebViewPanel::if_built()) { home->SendCloudProvidersInfo(); } diff --git a/src/slic3r/GUI/GUI_App.hpp b/src/slic3r/GUI/GUI_App.hpp index 0dcdc8e36e..475bec7e26 100644 --- a/src/slic3r/GUI/GUI_App.hpp +++ b/src/slic3r/GUI/GUI_App.hpp @@ -361,6 +361,11 @@ private: bool m_side_popup_status{false}; bool m_show_http_error_msgdlg{false}; std::chrono::steady_clock::time_point m_last_401_error_time; + // OrcaCloud webview session handoff: the newest request_web_session state from the cloud pane + // and a generation counter so a superseded mint/login result is dropped (guide §5, "only the + // newest request counts"). + std::string m_cloud_handoff_state; + uint64_t m_cloud_handoff_gen { 0 }; bool m_show_error_msgdlg{false}; wxString m_info_dialog_content; HttpServer m_http_server; @@ -431,6 +436,8 @@ public: bool show_plate_gridlines() const { return app_config->get_bool("show_plate_gridlines"); } void toggle_show_plate_gridlines() const { app_config->set_bool("show_plate_gridlines", !show_plate_gridlines()); } + bool focus_mode() const { return app_config->get_bool("focus_mode"); } + void toggle_focus_mode() const { app_config->set_bool("focus_mode", !focus_mode()); } bool show_canvas_zoom_button() const { return app_config->get_bool("show_canvas_zoom_button"); } void toggle_canvas_zoom_button() const { app_config->set_bool("show_canvas_zoom_button", !show_canvas_zoom_button()); } @@ -540,7 +547,11 @@ public: void request_user_login(int online_login = 0, const std::string& provider = ORCA_CLOUD_PROVIDER); void request_user_handle(int online_login = 0, const std::string& provider = ORCA_CLOUD_PROVIDER); - void request_user_logout(const std::string& provider = ORCA_CLOUD_PROVIDER); + // `user_initiated` distinguishes a user sign-out from the desktop losing its session on its + // own (refresh failed, 401). Only an explicit sign-out also ends the cloud webview's own + // session; an involuntary one leaves the webview alone (guide §8). Defaults to the safe + // direction: a new caller that forgets the flag will not silently sign the webview out. + void request_user_logout(const std::string& provider = ORCA_CLOUD_PROVIDER, bool user_initiated = false); void post_logout_to_webview(const std::string& provider); int request_user_unbind(std::string dev_id, const std::string& provider = ORCA_CLOUD_PROVIDER); std::string handle_web_request(std::string cmd); @@ -556,6 +567,15 @@ public: void on_update_machine_list(wxCommandEvent& evt); void on_user_login(wxCommandEvent &evt); void on_user_login_handle(wxCommandEvent& evt); + // OrcaCloud webview session handoff (guide §5/§7). cloud_webview_handoff builds the cloud + // pane's Start URL (with the desktop user_id while signed in). request_cloud_web_session is + // called from the pane when the page asks for a session; it opens the desktop login dialog if + // signed out, otherwise mints a one-time token on a worker thread and loads the Complete URL + // in the same webview. + wxString cloud_webview_handoff(); + void request_cloud_web_session(const std::string& state); + void mint_cloud_web_session(const std::string& state, uint64_t gen); + void on_cloud_web_session_minted(const std::string& state, uint64_t gen, const std::string& token_hash); void enable_user_preset_folder(bool enable); // BBS diff --git a/src/slic3r/GUI/GUI_Factories.cpp b/src/slic3r/GUI/GUI_Factories.cpp index ca487ec3a5..c838b898f6 100644 --- a/src/slic3r/GUI/GUI_Factories.cpp +++ b/src/slic3r/GUI/GUI_Factories.cpp @@ -2334,243 +2334,60 @@ void MenuFactory::append_menu_item_center(wxMenu* menu) void MenuFactory::append_menu_item_align_distribute(wxMenu *menu) { + using AlignType = GLGizmoAlignment::AlignType; + auto can = [](AlignType type) { + if (plater()->canvas3D()->get_canvas_type() != GLCanvas3D::ECanvasType::CanvasView3D) + return false; + GLGizmoAlignment alignment_helper(*plater()->get_view3D_canvas3D()); + return type >= AlignType::DISTRIBUTE_X ? alignment_helper.can_distribute(type) : alignment_helper.can_align(type); + }; + auto run = [](AlignType type) { + GLGizmoAlignment alignment_helper(*plater()->get_view3D_canvas3D()); + if (type >= AlignType::DISTRIBUTE_X) + alignment_helper.distribute_objects(type); + else + alignment_helper.align_objects(type); + }; + + struct AlignMenuItem + { + wxString label; + AlignType type; + std::string icon; + }; + const AlignMenuItem items[] = { + // icons shared with caanvas. BitmapCache converts colors dark to light. so dark variations used for proper colors + {_L("Distribute left-right") + " (X)" , AlignType::DISTRIBUTE_X, "distribute_x_dark"}, + {_L("Distribute front-back") + " (Y)" , AlignType::DISTRIBUTE_Y, "distribute_y_dark"}, + {_L("Distribute top-bottom") + " (Z)" , AlignType::DISTRIBUTE_Z, "distribute_z_dark"}, + {wxString(), AlignType::NONE, ""}, + {_L("Align left") + " (-X)", AlignType::X_MIN, "align_x_min_dark"}, + {_L("Align left-right center") + " (X)" , AlignType::CENTER_X, "align_x_center_dark"}, + {_L("Align right") + " (+X)", AlignType::X_MAX, "align_x_max_dark"}, + {wxString(), AlignType::NONE, ""}, + {_L("Align front") + " (-Y)", AlignType::Y_MIN, "align_y_min_dark"}, + {_L("Align front-back center") + " (Y)" , AlignType::CENTER_Y, "align_y_center_dark"}, + {_L("Align back") + " (+Y)", AlignType::Y_MAX, "align_y_max_dark"}, + {wxString(), AlignType::NONE, ""}, + {_L("Align bottom") + " (-Z)", AlignType::Z_MIN, "align_z_min_dark"}, + {_L("Align top-bottom center") + " (Z)" , AlignType::CENTER_Z, "align_z_center_dark"}, + {_L("Align top") + " (+Z)", AlignType::Z_MAX, "align_z_max_dark"}, + }; + wxMenu* align_distribute_menu = new wxMenu(); - if (!align_distribute_menu) - return; - - append_menu_item( - align_distribute_menu, wxID_ANY, _L("Distribute left-right") + " (X)", "", - [](wxCommandEvent &) { - auto canvas3d = plater()->get_view3D_canvas3D(); - canvas3d->get_gizmos_manager().check_object_located_outside_plate(true); - plater()->distribute_selection_x(); - }, - "", nullptr, - []() { - if (plater()->canvas3D()->get_canvas_type() != GLCanvas3D::ECanvasType::CanvasView3D) - return false; - auto canvas3d = plater()->get_view3D_canvas3D(); - GLGizmoAlignment alignment_helper(*canvas3d); - return alignment_helper.can_distribute(GLGizmoAlignment::AlignType::DISTRIBUTE_X); - }, - m_parent); - - append_menu_item( - align_distribute_menu, wxID_ANY, _L("Distribute front-back") + " (Y)", "", - [](wxCommandEvent &) { - auto canvas3d = plater()->get_view3D_canvas3D(); - canvas3d->get_gizmos_manager().check_object_located_outside_plate(true); - plater()->distribute_selection_y(); - }, - "", nullptr, - []() { - if (plater()->canvas3D()->get_canvas_type() != GLCanvas3D::ECanvasType::CanvasView3D) - return false; - auto canvas3d = plater()->get_view3D_canvas3D(); - GLGizmoAlignment alignment_helper(*canvas3d); - return alignment_helper.can_distribute(GLGizmoAlignment::AlignType::DISTRIBUTE_Y); - }, - m_parent); - - append_menu_item( - align_distribute_menu, wxID_ANY, _L("Distribute top-bottom") + " (Z)", "", - [](wxCommandEvent &) { - auto canvas3d = plater()->get_view3D_canvas3D(); - canvas3d->get_gizmos_manager().check_object_located_outside_plate(true); - plater()->distribute_selection_z(); - }, - "", nullptr, - []() { - if (plater()->canvas3D()->get_canvas_type() != GLCanvas3D::ECanvasType::CanvasView3D) - return false; - auto canvas3d = plater()->get_view3D_canvas3D(); - GLGizmoAlignment alignment_helper(*canvas3d); - return alignment_helper.can_distribute(GLGizmoAlignment::AlignType::DISTRIBUTE_Z); - }, - m_parent); - - align_distribute_menu->AppendSeparator(); - - append_menu_item( - align_distribute_menu, wxID_ANY, _L("Align left") + " (-X)", "", - [](wxCommandEvent &) { - auto canvas3d = plater()->get_view3D_canvas3D(); - canvas3d->get_gizmos_manager().check_object_located_outside_plate(true); - plater()->align_selection_x_min(); - }, - "", nullptr, - []() { - if (plater()->canvas3D()->get_canvas_type() != GLCanvas3D::ECanvasType::CanvasView3D) - return false; - auto canvas3d = plater()->get_view3D_canvas3D(); - GLGizmoAlignment alignment_helper(*canvas3d); - return alignment_helper.can_align(GLGizmoAlignment::AlignType::X_MIN); - }, - m_parent); - - append_menu_item( - align_distribute_menu, wxID_ANY, _L("Align left-right center") + " (X)", "", - [](wxCommandEvent &) { - auto canvas3d = plater()->get_view3D_canvas3D(); - canvas3d->get_gizmos_manager().check_object_located_outside_plate(true); - plater()->align_selection_x_center(); - }, - "", nullptr, - []() { - if (plater()->canvas3D()->get_canvas_type() != GLCanvas3D::ECanvasType::CanvasView3D) - return false; - auto canvas3d = plater()->get_view3D_canvas3D(); - GLGizmoAlignment alignment_helper(*canvas3d); - return alignment_helper.can_align(GLGizmoAlignment::AlignType::CENTER_X); - }, - m_parent); - - append_menu_item( - align_distribute_menu, wxID_ANY, _L("Align right") + " (+X)", "", - [](wxCommandEvent &) { - auto canvas3d = plater()->get_view3D_canvas3D(); - canvas3d->get_gizmos_manager().check_object_located_outside_plate(true); - plater()->align_selection_x_max(); - }, - "", nullptr, - []() { - if (plater()->canvas3D()->get_canvas_type() != GLCanvas3D::ECanvasType::CanvasView3D) - return false; - auto canvas3d = plater()->get_view3D_canvas3D(); - GLGizmoAlignment alignment_helper(*canvas3d); - return alignment_helper.can_align(GLGizmoAlignment::AlignType::X_MAX); - }, - m_parent); - - align_distribute_menu->AppendSeparator(); - - append_menu_item( - align_distribute_menu, wxID_ANY, _L("Align front") + " (-Y)", "", - [](wxCommandEvent &) { - auto canvas3d = plater()->get_view3D_canvas3D(); - canvas3d->get_gizmos_manager().check_object_located_outside_plate(true); - plater()->align_selection_y_min(); - }, - "", nullptr, - []() { - if (plater()->canvas3D()->get_canvas_type() != GLCanvas3D::ECanvasType::CanvasView3D) - return false; - auto canvas3d = plater()->get_view3D_canvas3D(); - GLGizmoAlignment alignment_helper(*canvas3d); - return alignment_helper.can_align(GLGizmoAlignment::AlignType::Y_MIN); - }, - m_parent); - - append_menu_item( - align_distribute_menu, wxID_ANY, _L("Align front-back center") + " (Y)", "", - [](wxCommandEvent &) { - auto canvas3d = plater()->get_view3D_canvas3D(); - canvas3d->get_gizmos_manager().check_object_located_outside_plate(true); - plater()->align_selection_y_center(); - }, - "", nullptr, - []() { - if (plater()->canvas3D()->get_canvas_type() != GLCanvas3D::ECanvasType::CanvasView3D) - return false; - auto canvas3d = plater()->get_view3D_canvas3D(); - GLGizmoAlignment alignment_helper(*canvas3d); - return alignment_helper.can_align(GLGizmoAlignment::AlignType::CENTER_Y); - }, - m_parent); - - append_menu_item( - align_distribute_menu, wxID_ANY, _L("Align back") + " (+Y)", "", - [](wxCommandEvent &) { - auto canvas3d = plater()->get_view3D_canvas3D(); - canvas3d->get_gizmos_manager().check_object_located_outside_plate(true); - plater()->align_selection_y_max(); - }, - "", nullptr, - []() { - if (plater()->canvas3D()->get_canvas_type() != GLCanvas3D::ECanvasType::CanvasView3D) - return false; - auto canvas3d = plater()->get_view3D_canvas3D(); - GLGizmoAlignment alignment_helper(*canvas3d); - return alignment_helper.can_align(GLGizmoAlignment::AlignType::Y_MAX); - }, - m_parent); - - align_distribute_menu->AppendSeparator(); - - append_menu_item( - align_distribute_menu, wxID_ANY, _L("Align bottom") + " (-Z)", "", - [](wxCommandEvent &) { - auto canvas3d = plater()->get_view3D_canvas3D(); - canvas3d->get_gizmos_manager().check_object_located_outside_plate(true); - plater()->align_selection_z_min(); - }, - "", nullptr, - []() { - if (plater()->canvas3D()->get_canvas_type() != GLCanvas3D::ECanvasType::CanvasView3D) - return false; - auto canvas3d = plater()->get_view3D_canvas3D(); - GLGizmoAlignment alignment_helper(*canvas3d); - return alignment_helper.can_align(GLGizmoAlignment::AlignType::Z_MIN); - }, - m_parent); - - append_menu_item( - align_distribute_menu, wxID_ANY, _L("Align top-bottom center") + " (Z)", "", - [](wxCommandEvent &) { - auto canvas3d = plater()->get_view3D_canvas3D(); - canvas3d->get_gizmos_manager().check_object_located_outside_plate(true); - plater()->align_selection_z_center(); - }, - "", nullptr, - []() { - if (plater()->canvas3D()->get_canvas_type() != GLCanvas3D::ECanvasType::CanvasView3D) - return false; - auto canvas3d = plater()->get_view3D_canvas3D(); - GLGizmoAlignment alignment_helper(*canvas3d); - return alignment_helper.can_align(GLGizmoAlignment::AlignType::CENTER_Z); - }, - m_parent); - - append_menu_item( - align_distribute_menu, wxID_ANY, _L("Align top") + " (+Z)", "", - [](wxCommandEvent &) { - auto canvas3d = plater()->get_view3D_canvas3D(); - canvas3d->get_gizmos_manager().check_object_located_outside_plate(true); - plater()->align_selection_z_max(); - }, - "", nullptr, - []() { - if (plater()->canvas3D()->get_canvas_type() != GLCanvas3D::ECanvasType::CanvasView3D) - return false; - auto canvas3d = plater()->get_view3D_canvas3D(); - GLGizmoAlignment alignment_helper(*canvas3d); - return alignment_helper.can_align(GLGizmoAlignment::AlignType::Z_MAX); - }, - m_parent); + for (const AlignMenuItem &item : items) { + const AlignType type = item.type; + if (type == AlignType::NONE) + align_distribute_menu->AppendSeparator(); + else + append_menu_item( + align_distribute_menu, wxID_ANY, item.label, "", [run, type](wxCommandEvent &) { run(type); }, item.icon, nullptr, + [can, type]() { return can(type); }, m_parent); + } + // Anything that can be distributed can also be aligned, and aligning in X has no extra condition. append_submenu(menu, align_distribute_menu, wxID_ANY, _L("Align/Distribute"), _L("Align and distribute objects"), "", - []() { - if (plater()->canvas3D()->get_canvas_type() != GLCanvas3D::ECanvasType::CanvasView3D) - return false; - auto canvas3d = plater()->get_view3D_canvas3D(); - GLGizmoAlignment alignment_helper(*canvas3d); - - bool has_any_align = alignment_helper.can_align(GLGizmoAlignment::AlignType::CENTER_X) || - alignment_helper.can_align(GLGizmoAlignment::AlignType::CENTER_Y) || - alignment_helper.can_align(GLGizmoAlignment::AlignType::CENTER_Z) || - alignment_helper.can_align(GLGizmoAlignment::AlignType::X_MAX) || - alignment_helper.can_align(GLGizmoAlignment::AlignType::X_MIN) || - alignment_helper.can_align(GLGizmoAlignment::AlignType::Y_MAX) || - alignment_helper.can_align(GLGizmoAlignment::AlignType::Y_MIN) || - alignment_helper.can_align(GLGizmoAlignment::AlignType::Z_MAX) || - alignment_helper.can_align(GLGizmoAlignment::AlignType::Z_MIN); - - bool has_any_distribute = alignment_helper.can_distribute(GLGizmoAlignment::AlignType::DISTRIBUTE_X) || - alignment_helper.can_distribute(GLGizmoAlignment::AlignType::DISTRIBUTE_Y) || - alignment_helper.can_distribute(GLGizmoAlignment::AlignType::DISTRIBUTE_Z); - - return has_any_align || has_any_distribute; - }, m_parent); + [can]() { return can(AlignType::X_MIN); }, m_parent); } void MenuFactory::append_menu_item_drop(wxMenu* menu) @@ -2583,7 +2400,7 @@ void MenuFactory::append_menu_item_drop(wxMenu* menu) if (plater()->canvas3D()->get_canvas_type() != GLCanvas3D::ECanvasType::CanvasView3D) return false; else { - return (std::abs(plater()->get_view3D_canvas3D()->get_selection().get_bounding_box().min.z()) > -SINKING_Z_THRESHOLD); + return plater()->get_view3D_canvas3D()->get_selection().can_drop(); } //disable if model is on the bed / not in View3D }, m_parent); } diff --git a/src/slic3r/GUI/Gizmos/GLGizmoAlignment.cpp b/src/slic3r/GUI/Gizmos/GLGizmoAlignment.cpp index 7e97d64940..96b85215a1 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoAlignment.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoAlignment.cpp @@ -1,8 +1,20 @@ #include "GLGizmoAlignment.hpp" +#include "slic3r/GUI/3DScene.hpp" #include "slic3r/GUI/GLCanvas3D.hpp" #include "slic3r/GUI/GUI_App.hpp" +#include "slic3r/GUI/I18N.hpp" +#include "slic3r/GUI/PartPlate.hpp" #include "slic3r/GUI/Plater.hpp" +#include "slic3r/GUI/Selection.hpp" +#include "libslic3r/BoundingBox.hpp" #include "libslic3r/Model.hpp" +#include "libslic3r/Point.hpp" + +#include +#include +#include +#include +#include namespace Slic3r { namespace GUI { @@ -13,7 +25,7 @@ GLGizmoAlignment::GLGizmoAlignment(GLCanvas3D& canvas) : m_canvas(canvas) bool GLGizmoAlignment::align_objects(AlignType type, bool align_parent) { - if (!validate_selection_for_align()) { + if (!can_align(type, align_parent)) { return false; } @@ -92,32 +104,29 @@ bool GLGizmoAlignment::align_to_x_min(bool align_parent) bool GLGizmoAlignment::align_to_center(AlignType type,bool align_parent) { - const Selection& selection = get_selection(); std::string type_str = type == AlignType::CENTER_X ? "X" : (type == AlignType::CENTER_Y ? "Y" : "Z"); std::string operation_name = type == AlignType::CENTER_X ? "X Center" : (type == AlignType::CENTER_Y ? "Y Center" : "Z Center"); double selection_center = 0.f; if (align_parent) { - selection_center = get_current_coord(operation_name, m_parent_box); + BoundingBoxf3 parent_box = get_parent_box(); + selection_center = get_current_coord(operation_name, parent_box); // Handle multiple volume selection - if (is_part_align_parent()) { + if (is_parts_selection(true)) { if (!take_snapshot("Align to parent center " + type_str)) { return false; } get_selection().setup_cache(); - auto selection_bbox = selection.get_bounding_box(); - double current_coord = get_current_coord(operation_name, selection_bbox); - Vec3d displacement = generate_displacement(operation_name, selection_center - current_coord); - // Move each selected volume to align to the center of their collective bounding box - for (unsigned int idx : selection.get_volume_idxs()) { - const GLVolume *volume = selection.get_volume(idx); - if (volume) { - get_selection().translate(volume->object_idx(), volume->instance_idx(), volume->volume_idx(), displacement); - } + BoundingBoxf3 selection_bbox = get_items_box(); + double current_coord = get_current_coord(operation_name, selection_bbox); + Vec3d displacement = generate_displacement(operation_name, selection_center - current_coord); + // Move the selected volumes together so that their collective bounding box is centered in the parent + for (const GLVolume *volume : get_selected_part_volumes()) { + get_selection().translate(volume->object_idx(), volume->instance_idx(), volume->volume_idx(), displacement, false); } - finish_operation("Align to parent center " + type_str); + finish_operation(true); return true; } BoundingBoxf3 big_bb; @@ -125,7 +134,6 @@ bool GLGizmoAlignment::align_to_center(AlignType type,bool align_parent) if (objects.empty()) return false; // Handle multiple objects or parts selection - BoundingBoxf3 selection_bbox = selection.get_bounding_box(); if (!take_snapshot("Align to parent center " + type_str)) { return false; } @@ -138,60 +146,52 @@ bool GLGizmoAlignment::align_to_center(AlignType type,bool align_parent) apply_transformation(obj.object_idx, obj.instance_idx, displacement); } - finish_operation("Align to parent center " + type_str); + finish_operation(); return true; } - // Handle single object selection// Handle multiple volume selection - if (selection.is_single_full_object() || - selection.is_multiple_volume() || selection.is_multiple_modifier() || selection.is_single_volume() || selection.is_single_modifier()) { + // Handle the parts of a single instance + if (is_parts_selection(false)) { if (!take_snapshot("Align Parts Center " + type_str)){ return false; } get_selection().setup_cache(); - BoundingBoxf3 selection_bbox = selection.get_bounding_box(); + BoundingBoxf3 selection_bbox = get_items_box(); selection_center = get_current_coord(operation_name, selection_bbox); - // Move each selected volume to align to the center of their collective bounding box - for (unsigned int idx : selection.get_volume_idxs()) { - const GLVolume* volume = selection.get_volume(idx); - if (volume) { - auto temp_box = volume->transformed_convex_hull_bounding_box(); - double current = get_current_coord(operation_name, temp_box); - double offset = selection_center - current; - Vec3d displacement = generate_displacement(operation_name, offset); - get_selection().translate(volume->object_idx(), volume->instance_idx(), volume->volume_idx(), displacement); - } + // Move each part to align to the center of their collective bounding box + for (const GLVolume *volume : get_selected_part_volumes()) { + auto temp_box = volume->transformed_convex_hull_bounding_box(); + double current = get_current_coord(operation_name, temp_box); + double offset = selection_center - current; + Vec3d displacement = generate_displacement(operation_name, offset); + get_selection().translate(volume->object_idx(), volume->instance_idx(), volume->volume_idx(), displacement, false); } - finish_operation("Align Parts Center" + type_str, true); + finish_operation(true); return true; } BoundingBoxf3 big_bb; auto objects = get_selected_objects_info(big_bb); if (objects.empty()) return false; - // Handle multiple objects or parts selection - if (selection.is_multiple_full_object()) { - BoundingBoxf3 selection_bbox = selection.get_bounding_box(); - double selection_center = get_current_coord(operation_name, selection_bbox); + // Handle multiple instances + selection_center = get_current_coord(operation_name, big_bb); - if (!take_snapshot("Align Objects Center" + type_str)) { - return false; - } - - get_selection().setup_cache(); - // Multiple objects: use selection bounding box for alignment - for (const auto& obj : objects) { - BoundingBoxf3 temp_bbox = obj.bbox; - double current_coord = get_current_coord(operation_name, temp_bbox); - Vec3d displacement = generate_displacement(operation_name, selection_center - current_coord); - apply_transformation(obj.object_idx, obj.instance_idx, displacement); - } - finish_operation("Align Objects Center" + type_str); - return true; + if (!take_snapshot("Align Objects Center" + type_str)) { + return false; } - return false; + + get_selection().setup_cache(); + // Multiple objects: use selection bounding box for alignment + for (const auto& obj : objects) { + BoundingBoxf3 temp_bbox = obj.bbox; + double current_coord = get_current_coord(operation_name, temp_bbox); + Vec3d displacement = generate_displacement(operation_name, selection_center - current_coord); + apply_transformation(obj.object_idx, obj.instance_idx, displacement); + } + finish_operation(); + return true; } bool GLGizmoAlignment::align_to_z_max(bool align_parent) @@ -244,37 +244,31 @@ bool GLGizmoAlignment::distribute_z() template bool GLGizmoAlignment::align_objects_generic(GetCoordFunc get_coord, SetCoordFunc set_coord, const std::string &operation_name ,bool align_parent) { - const Selection& selection = get_selection(); if (align_parent) { // Find reference coordinate - double reference_coord = get_current_coord(operation_name, m_parent_box); + BoundingBoxf3 parent_box = get_parent_box(); + double reference_coord = get_current_coord(operation_name, parent_box); // Handle parts selection differently - if (is_part_align_parent()) { + if (is_parts_selection(true)) { if (!take_snapshot("align to parent node " + operation_name)) { return false; } get_selection().setup_cache(); - // Get all selected volumes - std::vector volumes; - for (unsigned int idx : selection.get_volume_idxs()) { - const GLVolume *volume = selection.get_volume(idx); - if (volume) { volumes.push_back(volume); } - } - + const std::vector volumes = get_selected_part_volumes(); if (volumes.empty()) return false; - BoundingBoxf3 selection_bbox = selection.get_bounding_box(); + BoundingBoxf3 selection_bbox = get_items_box(); double current_coord = get_current_coord(operation_name, selection_bbox); Vec3d displacement = generate_displacement(operation_name, reference_coord - current_coord); for (const GLVolume *volume : volumes) { if (displacement.norm() > 1e-6) { - get_selection().translate(volume->object_idx(), volume->instance_idx(), volume->volume_idx(), displacement); + get_selection().translate(volume->object_idx(), volume->instance_idx(), volume->volume_idx(), displacement, false); } } - finish_operation("align to parent node " + operation_name); + finish_operation(true); return true; } @@ -296,26 +290,18 @@ bool GLGizmoAlignment::align_objects_generic(GetCoordFunc get_coord, SetCoordFun } } - finish_operation("align to parent node " + operation_name); + finish_operation(); return true; } // Handle parts selection differently - if (selection.is_single_full_object() || selection.is_multiple_volume() || selection.is_multiple_modifier()) { + if (is_parts_selection(false)) { if (!take_snapshot(operation_name)) { return false; } get_selection().setup_cache(); - // Get all selected volumes - std::vector volumes; - for (unsigned int idx : selection.get_volume_idxs()) { - const GLVolume* volume = selection.get_volume(idx); - if (volume) { - volumes.push_back(volume); - } - } - + const std::vector volumes = get_selected_part_volumes(); if (volumes.empty()) return false; // Find reference coordinate @@ -381,11 +367,11 @@ bool GLGizmoAlignment::align_objects_generic(GetCoordFunc get_coord, SetCoordFun } if (displacement.norm() > 1e-6) { - get_selection().translate(volume->object_idx(), volume->instance_idx(), volume->volume_idx(), displacement); + get_selection().translate(volume->object_idx(), volume->instance_idx(), volume->volume_idx(), displacement, false); } } - finish_operation(operation_name,true); + finish_operation(true); return true; } @@ -420,22 +406,15 @@ bool GLGizmoAlignment::align_objects_generic(GetCoordFunc get_coord, SetCoordFun } } - finish_operation(operation_name); + finish_operation(); return true; } template bool GLGizmoAlignment::distribute_objects_generic(GetCoordFunc get_coord, int axis, const std::string& operation_name) { - const Selection& selection = get_selection(); - - if (selection.is_single_full_object() || selection.is_multiple_volume() || selection.is_multiple_modifier()) { - std::vector volumes; - for (unsigned int idx : selection.get_volume_idxs()) { - const GLVolume* v = selection.get_volume(idx); - if (v) volumes.push_back(v); - } - + if (is_parts_selection(false)) { + const std::vector volumes = get_selected_part_volumes(); if (volumes.size() < 3) return false; if (!take_snapshot(operation_name)) { return false; @@ -454,7 +433,7 @@ bool GLGizmoAlignment::distribute_objects_generic(GetCoordFunc get_coord, int ax std::sort(entries.begin(), entries.end(), [](const VolEntry& a, const VolEntry& b){ return a.coord < b.coord; }); - BoundingBoxf3 selection_bbox = selection.get_bounding_box(); + BoundingBoxf3 selection_bbox = get_items_box(); BoundingBoxf3 left_bbox = entries.front().v->transformed_convex_hull_bounding_box(); BoundingBoxf3 right_bbox = entries.back().v->transformed_convex_hull_bounding_box(); auto axis_extent = [&](const BoundingBoxf3 &bb) { return (axis == 0 ? (bb.max.x() - bb.min.x()) : axis == 1 ? (bb.max.y() - bb.min.y()) : (bb.max.z() - bb.min.z())); }; @@ -475,11 +454,11 @@ bool GLGizmoAlignment::distribute_objects_generic(GetCoordFunc get_coord, int ax Vec3d displacement = Vec3d::Zero(); displacement[axis] = offset; const GLVolume *v = entries[i].v; - get_selection().translate(v->object_idx(), v->instance_idx(), v->volume_idx(), displacement); + get_selection().translate(v->object_idx(), v->instance_idx(), v->volume_idx(), displacement, false); } } - finish_operation(operation_name,true); + finish_operation(true); return true; } BoundingBoxf3 big_bb; @@ -513,52 +492,19 @@ bool GLGizmoAlignment::distribute_objects_generic(GetCoordFunc get_coord, int ax } } - finish_operation(operation_name); + finish_operation(); return true; } -bool GLGizmoAlignment::can_align(AlignType type) const +bool GLGizmoAlignment::can_align(AlignType type, bool align_parent) const { - const Selection& selection = get_selection(); - - bool is_single_object = selection.is_single_full_object(); - bool is_multiple_objects = selection.is_multiple_full_object(); - bool is_single_part = selection.is_single_volume() || selection.is_single_modifier(); - bool is_multiple_parts = selection.is_multiple_volume() || selection.is_multiple_modifier(); - - - return validate_selection_for_align(); + return get_items_count(type, align_parent) >= (align_parent ? 1 : 2); } bool GLGizmoAlignment::can_distribute(AlignType type) const { - const Selection& selection = get_selection(); - if (selection.is_single_full_object()) { - size_t count = selection.get_volume_idxs().size(); - if (count >= 3) - return true; - } - if (selection.is_single_volume() || - selection.is_single_modifier()) { - return false; - } - - if (selection.is_multiple_volume() || selection.is_multiple_modifier()) { - size_t count = selection.get_volume_idxs().size(); - if (count < 3) return false; - return (type == AlignType::DISTRIBUTE_X || - type == AlignType::DISTRIBUTE_Y || - type == AlignType::DISTRIBUTE_Z); - } - - if (selection.is_multiple_full_object()) { - BoundingBoxf3 big_bb; - auto objects = get_selected_objects_info(big_bb); - if (objects.size() < 3) return false; - return (type == AlignType::DISTRIBUTE_X || type == AlignType::DISTRIBUTE_Y || type == AlignType::DISTRIBUTE_Z); - } - - return validate_selection_for_distribute(); + return (type == AlignType::DISTRIBUTE_X || type == AlignType::DISTRIBUTE_Y || type == AlignType::DISTRIBUTE_Z) && + get_items_count(type, false) >= 3; } double GLGizmoAlignment::get_current_coord(std::string operation_name, BoundingBoxf3 &bbox) @@ -598,15 +544,6 @@ Vec3d GLGizmoAlignment::generate_displacement(std::string operation_name, double return displacement; } -bool GLGizmoAlignment::is_part_align_parent() -{ - Selection &selection = get_selection(); - if (selection.is_multiple_volume() || selection.is_multiple_modifier() || selection.is_single_volume() || selection.is_single_modifier()) { - return true; - } - return false; -} - std::vector GLGizmoAlignment::get_selected_objects_info(BoundingBoxf3 &big_bb) const { std::vector objects; @@ -633,8 +570,74 @@ std::vector GLGizmoAlignment::get_selected_objects return objects; } -void GLGizmoAlignment::set_parent_box(const BoundingBoxf3 &bb) { - m_parent_box = bb; +bool GLGizmoAlignment::is_parts_selection(bool align_parent) const +{ + const Selection &selection = get_selection(); + const auto &content = selection.get_content(); + if (content.size() != 1 || content.begin()->first >= 1000 || content.begin()->second.size() != 1) + return false; + return !align_parent || selection.get_mode() == Selection::Volume; +} + +std::vector GLGizmoAlignment::get_selected_part_volumes() const +{ + std::vector volumes; + if (!is_parts_selection(false)) + return volumes; + + const Selection &selection = get_selection(); + const ModelObject *object = selection.get_model()->objects[selection.get_object_idx()]; + if (object->is_cut()) + return volumes; + + for (unsigned int idx : selection.get_volume_idxs()) { + const GLVolume *volume = selection.get_volume(idx); + if (volume->volume_idx() < 0) + continue; + // Moving a whole instance's parts leaves its modifiers, negative volumes and support blockers in place, + // as dragging a part does. + if (selection.get_mode() == Selection::Volume || object->volumes[volume->volume_idx()]->is_model_part()) + volumes.push_back(volume); + } + return volumes; +} + +BoundingBoxf3 GLGizmoAlignment::get_items_box() const +{ + BoundingBoxf3 box; + if (is_parts_selection(false)) { + for (const GLVolume *volume : get_selected_part_volumes()) + box.merge(volume->transformed_convex_hull_bounding_box()); + } else + get_selected_objects_info(box); + return box; +} + +BoundingBoxf3 GLGizmoAlignment::get_parent_box() const +{ + const Selection &selection = get_selection(); + if (is_parts_selection(true)) + return selection.get_model()->objects[selection.get_object_idx()]->instance_convex_hull_bounding_box(selection.get_instance_idx()); + + // can_align() requires every selected instance on one plate, so the first one gives the plate. + BoundingBoxf3 box; + PartPlateList &plate_list = wxGetApp().plater()->get_partplate_list(); + for (const auto &[obj_idx, inst_idxs] : selection.get_content()) { + if (obj_idx >= 1000 || inst_idxs.empty()) + continue; + PartPlate *plate = plate_list.get_plate(plate_list.find_instance(obj_idx, *inst_idxs.begin())); + if (plate == nullptr) + break; + BoundingBoxf3 instances_box; + get_selected_objects_info(instances_box); + box = plate->get_plate_box(); + box.max.z() = instances_box.max.z(); + // Keep the aligned objects off the plate edge. + box.min += Vec3d(0.1, 0.1, 0.1); + box.max -= Vec3d(0.1, 0.1, 0.1); + break; + } + return box; } Selection& GLGizmoAlignment::get_selection() const @@ -653,41 +656,61 @@ void GLGizmoAlignment::apply_transformation(int obj_idx, int inst_idx, const Vec get_selection().translate(obj_idx, inst_idx, displacement); } -void GLGizmoAlignment::finish_operation(const std::string &operation_name, bool force_volume_move) +void GLGizmoAlignment::finish_operation(bool force_volume_move) { - get_selection().notify_instance_update(-1, -1); - m_canvas.do_move(operation_name, force_volume_move); + // A part move changes the ModelVolume shared by every copy of the object, so the other copies' volumes must show + // it too, or do_move() would write their stale transformation back to the model. + if (force_volume_move) + get_selection().synchronize_unselected_volumes(); + // The operation already took its snapshot. + m_canvas.do_move("", force_volume_move); } -bool GLGizmoAlignment::validate_selection_for_align() const +size_t GLGizmoAlignment::get_items_count(AlignType type, bool align_parent, std::string *why_not) const { - const Selection& selection = get_selection(); + auto cannot_move = [why_not](const std::string &reason) { + if (why_not != nullptr) + *why_not = reason; + return size_t(0); + }; - if (selection.is_single_full_object() || - selection.is_single_volume() || - selection.is_single_modifier()) { - return true; + if (is_parts_selection(align_parent)) { + const size_t count = get_selected_part_volumes().size(); + return count > 0 ? count : cannot_move(_u8L("Parts of a cut object cannot be moved")); } - return selection.get_volume_idxs().size() >= 2; -} + // Instances are moved through their instance offsets, which do_move() commits only from an Instance selection. + const Selection &selection = get_selection(); + if (selection.get_mode() != Selection::Instance) + return 0; -bool GLGizmoAlignment::validate_selection_for_distribute() const -{ - const Selection& selection = get_selection(); + const bool is_z = type == AlignType::Z_MIN || type == AlignType::CENTER_Z || type == AlignType::Z_MAX || + type == AlignType::DISTRIBUTE_Z; + // The plate gives no Z target, and aligning to its bottom would duplicate Drop. + if (is_z && align_parent) + return cannot_move(_u8L("Aligning to the plate is available in X and Y only")); - if (selection.is_single_full_object() || selection.is_multiple_full_object()) { - std::set object_indices; - for (int volume_idx : selection.get_volume_idxs()) { - const GLVolume* volume = selection.get_volume(volume_idx); - if (volume) { - object_indices.insert(volume->object_idx()); + PartPlateList &plate_list = wxGetApp().plater()->get_partplate_list(); + int plate_idx = -1; + size_t count = 0; + for (const auto &[obj_idx, inst_idxs] : selection.get_content()) { + if (obj_idx >= 1000) + continue; + // Auto-drop would put a raised object back on the bed and leave a lowered one sunk. + if (is_z && selection.get_model()->objects[obj_idx]->auto_drop) + return cannot_move(_u8L("Turn off Auto-Drop for the selected objects to move them in Z")); + if (align_parent) { + // The plate holding the selection is the target, so it must hold all of it. + for (int inst_idx : inst_idxs) { + const int idx = plate_list.find_instance(obj_idx, inst_idx); + if (idx == -1 || (plate_idx != -1 && idx != plate_idx)) + return cannot_move(_u8L("All selected objects must be on the same plate")); + plate_idx = idx; } } - return object_indices.size() >= 3; + count += inst_idxs.size(); } - - return selection.get_volume_idxs().size() >= 3; + return count; } } // namespace GUI diff --git a/src/slic3r/GUI/Gizmos/GLGizmoAlignment.hpp b/src/slic3r/GUI/Gizmos/GLGizmoAlignment.hpp index 5bbeceb7a6..daca519034 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoAlignment.hpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoAlignment.hpp @@ -4,8 +4,9 @@ #include "libslic3r/Point.hpp" #include "libslic3r/BoundingBox.hpp" #include "slic3r/GUI/Selection.hpp" +#include +#include #include -#include namespace Slic3r { namespace GUI { @@ -58,14 +59,26 @@ public: bool distribute_y(); bool distribute_z(); - bool can_align(AlignType type) const; + bool can_align(AlignType type, bool align_parent = false) const; bool can_distribute(AlignType type) const; std::vector get_selected_objects_info(BoundingBoxf3 &big_bb) const; double get_current_coord(std::string operation_name, BoundingBoxf3 &bbox); Vec3d generate_displacement(std::string operation_name, double offset); - bool is_part_align_parent(); - void set_parent_box(const BoundingBoxf3 &bb); + + // A parts selection (one instance of one object) aligns the parts inside it; anything else aligns whole instances. + // With align_parent, only a Volume-mode selection counts as parts: a whole instance aligns to its plate instead. + bool is_parts_selection(bool align_parent) const; + // The volumes a parts operation moves: the selected volumes, or only the model parts when a whole instance is + // selected. Empty for a cut object, whose parts must keep their place. + std::vector get_selected_part_volumes() const; + // World bounding box of the items an operation moves, the reference of every non-parent operation. + BoundingBoxf3 get_items_box() const; + // World bounding box aligned to with align_parent: the instance of a parts selection, or the plate holding the + // selected instances, up to their top. + BoundingBoxf3 get_parent_box() const; + // Number of items the operation would move, or 0 when it cannot move them; why_not then gets the reason, if any. + size_t get_items_count(AlignType type, bool align_parent, std::string *why_not = nullptr) const; private: GLCanvas3D& m_canvas; @@ -80,13 +93,7 @@ private: Selection& get_selection() const; bool take_snapshot(const std::string& name); void apply_transformation(int obj_idx, int inst_idx, const Vec3d& displacement); - void finish_operation(const std::string &operation_name, bool force_volume_move = false); - - bool validate_selection_for_align() const; - bool validate_selection_for_distribute() const; - -private: - BoundingBoxf3 m_parent_box; + void finish_operation(bool force_volume_move = false); }; } // namespace GUI diff --git a/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp b/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp index 9b390e8c64..1b83e16a24 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp @@ -644,7 +644,8 @@ void GLGizmoFdmSupports::update_from_model_object(bool first_update) const TriangleMesh* mesh = &mv->mesh(); m_triangle_selectors.emplace_back(std::make_unique(*mesh, ebt_colors)); // Reset of TriangleSelector is done inside TriangleSelectorGUI's constructor, so we don't need it to perform it again in deserialize(). - m_triangle_selectors.back()->deserialize(mv->supported_facets.get_data(), false); + // The colour table has NONE/ENFORCER/BLOCKER only: a higher state in the file is reset to NONE. + m_triangle_selectors.back()->deserialize(mv->supported_facets.get_data(), false, EnforcerBlockerType::BLOCKER); m_triangle_selectors.back()->request_update_render_data(); //BBS: add timestamp logic diff --git a/src/slic3r/GUI/Gizmos/GLGizmoFuzzySkin.cpp b/src/slic3r/GUI/Gizmos/GLGizmoFuzzySkin.cpp index d38927dd47..b5aee19f86 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoFuzzySkin.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoFuzzySkin.cpp @@ -397,7 +397,8 @@ void GLGizmoFuzzySkin::update_from_model_object(bool first_update) const TriangleMesh* mesh = &mv->mesh(); m_triangle_selectors.emplace_back(std::make_unique(*mesh, ebt_colors)); // Reset of TriangleSelector is done inside TriangleSelectorGUI's constructor, so we don't need it to perform it again in deserialize(). - m_triangle_selectors.back()->deserialize(mv->fuzzy_skin_facets.get_data(), false); + // Fuzzy skin paints a single state (FUZZY_SKIN): a higher state in the file is reset to NONE. + m_triangle_selectors.back()->deserialize(mv->fuzzy_skin_facets.get_data(), false, EnforcerBlockerType::FUZZY_SKIN); m_triangle_selectors.back()->request_update_render_data(); } } diff --git a/src/slic3r/GUI/Gizmos/GLGizmoMove.cpp b/src/slic3r/GUI/Gizmos/GLGizmoMove.cpp index 58fd0ce583..6968e81c7e 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoMove.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoMove.cpp @@ -31,6 +31,11 @@ #include "slic3r/GUI/Camera.hpp" #include "slic3r/GUI/GLModel.hpp" #include "slic3r/GUI/Gizmos/GizmoObjectManipulation.hpp" +#include "slic3r/GUI/Gizmos/GLGizmoAlignment.hpp" +#include "libslic3r/BoundingBox.hpp" +#include +#include +#include #include "slic3r/GUI/I18N.hpp" namespace Slic3r { @@ -109,6 +114,8 @@ void GLGizmoMove3D::on_set_state() { m_last_selected_volume_idx = -1; change_cs_by_selection(); } + if (m_object_manipulation) + m_object_manipulation->reset_align_state(); } void GLGizmoMove3D::on_start_dragging() @@ -157,6 +164,8 @@ void GLGizmoMove3D::on_render() glsafe(::glClear(GL_DEPTH_BUFFER_BIT)); glsafe(::glEnable(GL_DEPTH_TEST)); + render_align_preview(); + const auto &[box, box_trafo] = selection.get_bounding_box_in_current_reference_system(); m_bounding_box = box; m_center = box_trafo.translation(); @@ -340,6 +349,93 @@ double GLGizmoMove3D::calc_projection(const UpdateData& data) const return projection; } +void GLGizmoMove3D::render_align_preview() +{ + using AlignType = GLGizmoAlignment::AlignType; + if (m_object_manipulation == nullptr || m_object_manipulation->get_hovered_align_type() == AlignType::NONE) + return; + + // The box the hovered operation aligns to, in world coordinates like the operation itself. + const AlignType type = m_object_manipulation->get_hovered_align_type(); + const GLGizmoAlignment &helper = m_object_manipulation->get_alignment_helper(); + const BoundingBoxf3 box = m_object_manipulation->get_align_to_parent() ? helper.get_parent_box() : helper.get_items_box(); + if (!box.defined) + return; + m_parent.get_selection().render_bounding_box(box, {0.0f, 150.0f / 255.0f, 136.0f / 255.0f}, m_parent.get_scale()); + + GLShaderProgram* shader = wxGetApp().get_shader("flat"); + if (shader == nullptr) + return; + + if (!m_align_plane.is_initialized()) { + GLModel::Geometry init_data; + init_data.format = { GLModel::Geometry::EPrimitiveType::Triangles, GLModel::Geometry::EVertexLayout::P3 }; + init_data.reserve_vertices(4); + init_data.reserve_indices(6); + init_data.add_vertex(Vec3f(-0.5f, -0.5f, 0.0f)); + init_data.add_vertex(Vec3f(0.5f, -0.5f, 0.0f)); + init_data.add_vertex(Vec3f(0.5f, 0.5f, 0.0f)); + init_data.add_vertex(Vec3f(-0.5f, 0.5f, 0.0f)); + init_data.add_triangle(0, 1, 2); + init_data.add_triangle(0, 2, 3); + m_align_plane.init_from(std::move(init_data)); + m_align_plane.set_color({ 1.0f, 1.0f, 1.0f, 0.5f }); + } + + // A plane across the box at its min, center or max on the hovered axis. Distributing shows up to six evenly + // spaced planes. + int axis = Z; + double t = 0.5; + switch (type) { + case AlignType::X_MIN: axis = X; t = 0.0; break; + case AlignType::X_MAX: axis = X; t = 1.0; break; + case AlignType::CENTER_X: + case AlignType::DISTRIBUTE_X: axis = X; break; + case AlignType::Y_MIN: axis = Y; t = 0.0; break; + case AlignType::Y_MAX: axis = Y; t = 1.0; break; + case AlignType::CENTER_Y: + case AlignType::DISTRIBUTE_Y: axis = Y; break; + case AlignType::Z_MIN: t = 0.0; break; + case AlignType::Z_MAX: t = 1.0; break; + default: break; + } + const Vec3d size = box.size(); + std::vector positions; + if (type >= AlignType::DISTRIBUTE_X) { + const size_t count = std::min(helper.get_items_count(type, false), 6); + for (size_t i = 1; i <= count; ++i) + positions.push_back(box.min[axis] + i * size[axis] / (count + 1)); + } else + positions.push_back(box.min[axis] + t * size[axis]); + + const int u = (axis + 1) % 3; + const int v = (axis + 2) % 3; + Transform3d plane_matrix = Transform3d::Identity(); + plane_matrix.linear().col(0) = size[u] * Vec3d::Unit(u); + plane_matrix.linear().col(1) = size[v] * Vec3d::Unit(v); + plane_matrix.linear().col(2) = Vec3d::Unit(axis); + Vec3d plane_center = box.center(); + + glsafe(::glDisable(GL_CULL_FACE)); + glsafe(::glEnable(GL_BLEND)); + glsafe(::glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)); + // Translucent planes must hide neither each other nor the grabbers drawn after them. + glsafe(::glDepthMask(GL_FALSE)); + shader->start_using(); + const Camera& camera = wxGetApp().plater()->get_camera(); + shader->set_uniform("projection_matrix", camera.get_projection_matrix()); + for (double position : positions) { + plane_center[axis] = position; + plane_matrix.translation() = plane_center; + shader->set_uniform("view_model_matrix", camera.get_view_matrix() * plane_matrix); + m_align_plane.render(); + } + shader->stop_using(); + glsafe(::glDepthMask(GL_TRUE)); + glsafe(::glEnable(GL_CULL_FACE)); + glsafe(::glDisable(GL_BLEND)); +} + void GLGizmoMove3D::change_cs_by_selection() { int obejct_idx, volume_idx; ModelVolume *model_volume = m_parent.get_selection().get_selected_single_volume(obejct_idx, volume_idx); diff --git a/src/slic3r/GUI/Gizmos/GLGizmoMove.hpp b/src/slic3r/GUI/Gizmos/GLGizmoMove.hpp index 8296ba7c5e..3eb5522156 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoMove.hpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoMove.hpp @@ -34,6 +34,8 @@ class GLGizmoMove3D : public GLGizmoBase Vec3d old_center{ Vec3d::Zero() }; }; std::array m_grabber_connections; + // Unit square previewing the target plane of the hovered align or distribute icon. + GLModel m_align_plane; //BBS: add size adjust related GizmoObjectManipulation* m_object_manipulation; @@ -76,6 +78,7 @@ protected: private: double calc_projection(const UpdateData& data) const; + void render_align_preview(); void change_cs_by_selection(); //cs mean Coordinate System private: int m_last_selected_obejct_idx, m_last_selected_volume_idx; diff --git a/src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp b/src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp index 0f71ee546a..6a0019caf2 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp @@ -1,6 +1,7 @@ #include "GLGizmoSeam.hpp" #include "libslic3r/Model.hpp" +#include "libslic3r/TriangleSelector.hpp" //#include "slic3r/GUI/3DScene.hpp" #include "slic3r/GUI/GLCanvas3D.hpp" @@ -327,7 +328,8 @@ void GLGizmoSeam::update_from_model_object(bool first_update) m_triangle_selectors.emplace_back(std::make_unique(*mesh, ebt_colors)); // Reset of TriangleSelector is done inside TriangleSelectorGUI's constructor, so we don't need it to perform it again in deserialize(). - m_triangle_selectors.back()->deserialize(mv->seam_facets.get_data(), false); + // The colour table has NONE/ENFORCER/BLOCKER only: a higher state in the file is reset to NONE. + m_triangle_selectors.back()->deserialize(mv->seam_facets.get_data(), false, EnforcerBlockerType::BLOCKER); m_triangle_selectors.back()->request_update_render_data(); } } diff --git a/src/slic3r/GUI/Gizmos/GLGizmoTextureDisplacement.cpp b/src/slic3r/GUI/Gizmos/GLGizmoTextureDisplacement.cpp index 7d7d0e7434..3fbede05e6 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoTextureDisplacement.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoTextureDisplacement.cpp @@ -15,6 +15,7 @@ #include "libslic3r/Utils.hpp" #include "libslic3r/format.hpp" +#include #include "slic3r/GUI/Camera.hpp" #include "slic3r/GUI/CameraUtils.hpp" #include "slic3r/GUI/GLCanvas3D.hpp" @@ -3739,7 +3740,8 @@ void GLGizmoTextureDisplacement::update_from_model_object(bool first_update) break; } m_triangle_selectors.emplace_back(std::make_unique(*mesh, ebt_colors)); - m_triangle_selectors.back()->deserialize(data, false); + // The mask uses a single state (ENFORCER): a higher state in the file is reset to NONE. + m_triangle_selectors.back()->deserialize(data, false, EnforcerBlockerType::ENFORCER); m_triangle_selectors.back()->request_update_render_data(); } @@ -3829,6 +3831,189 @@ void GLGizmoTextureDisplacement::ensure_panel_icons() m_panel_icon_map[names[i]] = icons[i]; } +// Seconds on a real clock, for the tooltips' own timing. +// +// Not ImGui::GetTime(): nothing in OrcaSlicer ever sets io.DeltaTime, so it keeps imgui's default of +// 1/60 per frame and its clock counts frames rather than seconds. On a canvas that renders only when +// something asks it to, that is not a clock at all - an animation driven by it crawled while the canvas +// was idle and raced while a moving mouse was rendering it flat out. +static double tip_now() +{ + using clock = std::chrono::steady_clock; + static const clock::time_point base = clock::now(); + return std::chrono::duration(clock::now() - base).count(); +} + +// How long the pointer has to rest on a control before its tooltip appears. The panel is dense and the +// tooltip lands on the model beside it, so with no wait at all a sweep from the top of the panel down to +// Bake flashes a dozen large panels over the scene. Once one has just been up the wait drops to almost +// nothing, so reading several settings in a row stays quick - but not to nothing, or that same sweep +// would flash again the moment one tooltip had been seen. +static constexpr double TIP_DELAY = 0.45; +static constexpr double TIP_DELAY_AGAIN = 0.10; +static constexpr double TIP_STICKY = 0.70; + +void GLGizmoTextureDisplacement::panel_tooltip(const wxString &text, const std::vector &media) +{ + panel_tooltip(into_u8(text), media); +} + +void GLGizmoTextureDisplacement::panel_tooltip(const std::string &text, const std::vector &media) +{ + // Nothing explains a control while the control is being used: dragging a slider, typing a value + // into one, picking from a combo, dragging a layer card. The pointer sits on the very thing being + // edited, so without this the tooltip covers the model exactly while the user is watching it change. + // The full wait comes back afterwards rather than the short one - having just let go of a slider is + // not a reason to be shown a picture of it. + if (ImGui::IsAnyItemActive() || ImGui::IsAnyMouseDown()) { + m_tip_item = ImVec2(-1.f, -1.f); + m_tip_last_shown = -1e9; + return; + } + + // The item's position stands in for its identity: moving to another control restarts the wait, and + // staying on this one carries it on. + const double now = tip_now(); + const ImVec2 item = ImGui::GetItemRectMin(); + if (item.x != m_tip_item.x || item.y != m_tip_item.y) { + m_tip_item = item; + m_tip_hover_since = now; + } + if (now - m_tip_hover_since < (now - m_tip_last_shown < TIP_STICKY ? TIP_DELAY_AGAIN : TIP_DELAY)) { + // A pointer resting on a control produces no events at all, so unless the wait asks for frames + // itself nothing redraws the canvas and the wait never finishes - the tooltip then appears only + // on the next pixel of mouse movement. + // + // request_extra_frame() and not schedule_extra_frame(): the latter only arranges a timer, whose + // event an idle event is assumed to follow, and GLCanvas3D::on_idle() renders nothing unless the + // canvas was already dirty when it ran. request_extra_frame() ends on_idle with + // evt.RequestMore(), which obliges wx to deliver the next one. It is what 3DBed's fade uses. + // Costing a few hundred milliseconds of frames is the cheaper half of that trade. + m_parent.request_extra_frame(); + return; + } + m_tip_last_shown = now; + + // ImGui hides a window on the first frame it is submitted, to measure it before showing it - and + // for a tooltip it does so every time one reappears, because the windows are recycled (see the + // Popup|Tooltip branch of Begin()). So the frame on which a tooltip is decided is never the frame + // on which it is seen, and one that then asks for nothing more stays invisible until the next pixel + // of mouse movement happens to produce another frame. Keep frames coming until it has settled. + const int shown_frame = ImGui::GetFrameCount(); + m_tip_settled = (shown_frame == m_tip_shown_frame + 1) ? m_tip_settled + 1 : 0; + m_tip_shown_frame = shown_frame; + if (m_tip_settled < 2) + m_parent.request_extra_frame(); + + const ImGuiStyle &style = ImGui::GetStyle(); + const float gap = m_imgui->scaled(0.5f); + const float wrap = m_imgui->scaled(20.f); + // The width has to be known here, not left to ImGui, because the tooltip is placed by its left edge + // (below) and an illustration has to be laid out against something. One carrying illustrations takes + // the full wrap width; a plain one takes exactly what its text needs, as it did when ImGui sized it, + // so a two-word tooltip is not a wide box with two words in it. + const float text_w = ImGui::CalcTextSize(text.c_str(), nullptr, false, wrap).x; + const float width = (media.empty() ? std::min(wrap, std::ceil(text_w)) : wrap) + 2.f * style.WindowPadding.x; + + // Beside the anchor (the panel, or the texture picker when the tooltip comes from inside it), never + // over it - the same reasoning, and the same placement, as the picker popup itself. ImGui normally + // keeps a tooltip glued to the mouse; it honours a position set here instead (see the Orca branch in + // imgui's Begin()), and still clamps the result inside the canvas. + const bool left = m_tooltip_anchor_min.x - gap - width >= 0.f; + const float x = left ? m_tooltip_anchor_min.x - gap - width : m_tooltip_anchor_max.x + gap; + ImGui::SetNextWindowPos(ImVec2(x, ImGui::GetItemRectMin().y)); // level with the control it explains + ImGui::SetNextWindowSize(ImVec2(width, 0.f)); // height still follows the content + + ImGui::BeginTooltip(); + ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(1.00f, 1.00f, 1.00f, 1.00f)); + ImGui::PushTextWrapPos(0.f); // the window's own edge, which is what the fixed width above sets + ImGui::TextUnformatted(text.c_str()); + ImGui::PopTextWrapPos(); + ImGui::PopStyleColor(); + render_tip_media(media, width - 2.f * style.WindowPadding.x); + ImGui::EndTooltip(); +} + +void GLGizmoTextureDisplacement::render_tip_media(const std::vector &media, float width) +{ + // Collect what is actually there first: the layout divides the width between the illustrations, so + // one that is missing has to drop out of the count rather than leave a gap. + std::vector> shown; + std::string key; + for (const TipMedia &m : media) { + const AnimatedTexture *texture = + m_tip_media.get((boost::filesystem::path(resources_dir()) / "images" / "texture_displacement" / m.file).string()); + if (texture != nullptr && texture->is_valid() && texture->width() > 0 && texture->height() > 0) { + shown.emplace_back(texture, &m); + key += m.file + "|"; + } + } + if (shown.empty()) + return; + + // Each animation plays from its first frame when its tooltip opens: these are short loops showing + // one setting going from one value to another, and joining one halfway through shows the user the + // end of a change they never saw the start of. + // Restart on a different tooltip, and on the same one opening again - which is what a gap in the + // frames it was drawn on means, since it is drawn on every frame for as long as it is on screen. + const int this_frame = ImGui::GetFrameCount(); + if (key != m_tip_media_key || this_frame != m_tip_media_frame + 1) { + m_tip_media_key = key; + m_tip_media_start = tip_now(); + } + m_tip_media_frame = this_frame; + const double time = tip_now() - m_tip_media_start; + + const ImGuiStyle &style = ImGui::GetStyle(); + const float spacing = style.ItemSpacing.x; + const float cell_w = (width - spacing * float(shown.size() - 1)) / float(shown.size()); + const ImU32 frame = ImGui::GetColorU32(ImGuiCol_Text, 0.25f); + + // A single illustration would otherwise be drawn at the tooltip's full width, and a square one at + // full width is a picture as tall as the text beside it is long. Capped and centred in its column. + const float max_h = m_imgui->scaled(10.f); + + ImGui::Spacing(); + for (size_t i = 0; i < shown.size(); ++i) { + const AnimatedTexture *texture = shown[i].first; + const TipMedia &entry = *shown[i].second; + const float cell_x = ImGui::GetCursorPosX(); + + float w = cell_w; + float h = std::round(cell_w * float(texture->height()) / float(texture->width())); + if (h > max_h) { + w = std::round(max_h * float(texture->width()) / float(texture->height())); + h = max_h; + } + + ImGui::BeginGroup(); + const unsigned int id = texture->texture_id(time); + ImGui::SetCursorPosX(cell_x + std::round(0.5f * (cell_w - w))); + ImGui::Image((ImTextureID) (intptr_t) id, ImVec2(w, h)); + ImGui::GetWindowDrawList()->AddRect(ImGui::GetItemRectMin(), ImGui::GetItemRectMax(), frame, style.FrameRounding); + // The canvas only redraws on demand, so an animation has to ask for its own frames. It asks for + // them as fast as they come rather than pacing itself with a timer: which frame is drawn is + // decided by the clock above, so a redraw that arrives early simply draws the same frame again, + // and a guaranteed frame is worth more here than a frugal one that may never arrive. + if (texture->is_animated()) + m_parent.request_extra_frame(); + + if (!entry.caption.empty()) { + // Centred under its own illustration, and never wider than its column. + const std::string caption = into_u8(entry.caption); + const float text_w = ImGui::CalcTextSize(caption.c_str()).x; + ImGui::SetCursorPosX(cell_x + std::max(0.f, (cell_w - text_w) * 0.5f)); + ImGui::PushTextWrapPos(cell_x + cell_w); + ImGui::TextDisabled("%s", caption.c_str()); + ImGui::PopTextWrapPos(); + } + ImGui::EndGroup(); + + if (i + 1 < shown.size()) + ImGui::SameLine(0.f, spacing); + } +} + void GLGizmoTextureDisplacement::add_texture_layer() { ModelVolume *mv = texture_volume(); @@ -3978,6 +4163,14 @@ void GLGizmoTextureDisplacement::render_texture_library_popup(const ImVec2 &pane return; } + // While this popup is up its own tooltips belong beside it, not beside the panel it is already + // covering the left of. Restored before every exit below. + const ImVec2 prev_anchor_min = m_tooltip_anchor_min; + const ImVec2 prev_anchor_max = m_tooltip_anchor_max; + m_tooltip_anchor_min = ImGui::GetWindowPos(); + m_tooltip_anchor_max = ImVec2(m_tooltip_anchor_min.x + ImGui::GetWindowSize().x, + m_tooltip_anchor_min.y + ImGui::GetWindowSize().y); + m_imgui->push_bold_font(); m_imgui->text(_L("Choose a texture")); m_imgui->pop_bold_font(); @@ -4036,7 +4229,7 @@ void GLGizmoTextureDisplacement::render_texture_library_popup(const ImVec2 &pane if (entry.path == layer->path) dl->AddRect(ImVec2(a.x - 1.f, a.y - 1.f), ImVec2(b.x + 1.f, b.y + 1.f), selected_col, 0.f, 0, 2.f); if (ImGui::IsItemHovered()) - m_imgui->tooltip(entry.name, m_imgui->scaled(18.f)); + panel_tooltip(entry.name); if (user && ImGui::IsMouseHoveringRect(a, b)) { const float r = std::round(tile * 0.17f); @@ -4049,7 +4242,7 @@ void GLGizmoTextureDisplacement::render_texture_library_popup(const ImVec2 &pane dl->AddLine(ImVec2(c.x - k, c.y - k), ImVec2(c.x + k, c.y + k), IM_COL32_WHITE, 1.5f); dl->AddLine(ImVec2(c.x - k, c.y + k), ImVec2(c.x + k, c.y - k), IM_COL32_WHITE, 1.5f); if (hot) - m_imgui->tooltip(_u8L("Remove from My textures"), m_imgui->scaled(18.f)); + panel_tooltip(_u8L("Remove from My textures")); if (remove_clicked) to_remove = entry; } @@ -4076,10 +4269,9 @@ void GLGizmoTextureDisplacement::render_texture_library_popup(const ImVec2 &pane if (ImGui::Button("+##import_texture", ImVec2(tile, tile))) import_clicked = true; if (ImGui::IsItemHovered()) - m_imgui->tooltip(_u8L("Import your own image as a height map. It is converted to the format the slicer " - "bakes from and saved to your personal texture folder, kept separate from the " - "textures shipped with OrcaSlicer."), - m_imgui->scaled(20.f)); + panel_tooltip(_u8L("Import your own image as a height map. It is converted to the format the slicer " + "bakes from and saved to your personal texture folder, kept separate from the " + "textures shipped with OrcaSlicer.")); end_grid(origin, count + 1); } @@ -4089,6 +4281,8 @@ void GLGizmoTextureDisplacement::render_texture_library_popup(const ImVec2 &pane if (chosen || import_clicked) ImGui::CloseCurrentPopup(); + m_tooltip_anchor_min = prev_anchor_min; + m_tooltip_anchor_max = prev_anchor_max; ImGui::EndPopup(); // Only once the loop over the library is done: importing, picking (which reorders the recently used) @@ -6065,18 +6259,16 @@ void GLGizmoTextureDisplacement::render_debug_stage_panel(ModelVolume *mv) run_stage_debug(); m_imgui->disabled_end(); if (ImGui::IsItemHovered()) - m_imgui->tooltip(_u8L("Run the same bake the Bake button runs, keeping the mesh after every " - "stage, and step through them here. Nothing is committed to the model - " - "this is for finding which stage a bad result came from."), - m_imgui->scaled(20.f)); + panel_tooltip(_u8L("Run the same bake the Bake button runs, keeping the mesh after every " + "stage, and step through them here. Nothing is committed to the model - " + "this is for finding which stage a bad result came from.")); ImGui::SameLine(); m_imgui->bbl_checkbox(_L("Check topology"), m_debug_check_topology); if (ImGui::IsItemHovered()) - m_imgui->tooltip(_u8L("Count open and non-manifold edges after each stage, which is how a stage " - "that tore the mesh is spotted. It scans every edge, so it adds noticeably " - "to the capture on a fine bake."), - m_imgui->scaled(20.f)); + panel_tooltip(_u8L("Count open and non-manifold edges after each stage, which is how a stage " + "that tore the mesh is spotted. It scans every edge, so it adds noticeably " + "to the capture on a fine bake.")); if (m_debug_stages.empty()) return; @@ -6144,9 +6336,8 @@ void GLGizmoTextureDisplacement::render_debug_stage_panel(ModelVolume *mv) show_error(nullptr, _u8L("Could not write the stage meshes.")); } if (ImGui::IsItemHovered()) - m_imgui->tooltip(_u8L("Write every captured stage out as an OBJ file, so they can be opened " - "side by side in a mesh viewer."), - m_imgui->scaled(20.f)); + panel_tooltip(_u8L("Write every captured stage out as an OBJ file, so they can be opened " + "side by side in a mesh viewer.")); } void GLGizmoTextureDisplacement::queue_prepare(const TextureDisplacementPrepareParams ¶ms, @@ -6273,6 +6464,12 @@ void GLGizmoTextureDisplacement::on_render_input_window(float x, float y, float ImGuiWrapper::push_toolbar_style(m_parent.get_scale()); GizmoImguiBegin(get_name(), flags); + // Where this frame's tooltips place themselves (see panel_tooltip()). The size is last frame's - + // this window auto-resizes, so its height is only known once its content has been laid out - which + // is close enough for a tooltip that needs a frame of hovering to appear in the first place. + m_tooltip_anchor_min = ImGui::GetWindowPos(); + m_tooltip_anchor_max = ImVec2(m_tooltip_anchor_min.x + ImGui::GetWindowSize().x, + m_tooltip_anchor_min.y + ImGui::GetWindowSize().y); ensure_panel_icons(); process_uv_commands(); // clicks from the UV editor pane, run here where the GL context is current // After the pane's commands, which can close it or change the view, and before the View row, so the row @@ -6299,7 +6496,6 @@ void GLGizmoTextureDisplacement::on_render_input_window(float x, float y, float const float gap_s = std::round(m_imgui->scaled(0.4f)); const float label_w = m_imgui->scaled(4.8f); // label column of a label + slider row const float card_pad = std::round(m_imgui->scaled(0.55f)); - const float wrap_w = m_imgui->scaled(20.f); const ImVec4 orca = ImGuiWrapper::COL_ORCA; const ImVec4 col_link = ImGuiWrapper::COL_ORCA; const ImVec4 col_frame = ImGui::GetStyleColorVec4(ImGuiCol_Separator); @@ -6313,9 +6509,9 @@ void GLGizmoTextureDisplacement::on_render_input_window(float x, float y, float ImGuiWrapper::pop_combo_style(); return changed; }; - const auto hover_tip = [&](const auto &text) { + const auto hover_tip = [&](const auto &text, const std::vector &media = {}) { if (ImGui::IsItemHovered()) - m_imgui->tooltip(text, wrap_w); + panel_tooltip(text, media); }; // Framed icon toggle: a 1 px frame, and when on a teal frame over a teal tint with the icon in its @@ -6323,7 +6519,8 @@ void GLGizmoTextureDisplacement::on_render_input_window(float x, float y, float // `unavailable`, when not empty, draws it faded but still hoverable, so the tooltip can say why it // cannot be used - a disabled ImGui item would swallow the hover and leave the user guessing. const auto icon_toggle = [&](int uid, const std::string &iconfile, bool active, float sz, const wxString &label, - const wxString &tip_text, const wxString &unavailable = wxString()) -> bool { + const wxString &tip_text, const std::vector &media = {}, + const wxString &unavailable = wxString()) -> bool { const bool na = !unavailable.empty(); const auto it = m_panel_icon_map.find(iconfile); const float pad = std::max(1.f, std::round(sz * 0.14f)); @@ -6350,12 +6547,12 @@ void GLGizmoTextureDisplacement::on_render_input_window(float x, float y, float ImGui::PopStyleVar(2); ImGui::PopID(); if (ImGui::IsItemHovered()) - m_imgui->tooltip(na ? tip_text + "\n\n" + unavailable : tip_text, wrap_w); + panel_tooltip(na ? tip_text + "\n\n" + unavailable : tip_text, media); return clicked && !na; }; // Borderless icon button (non-toggle): always the grey monochrome variant. const auto icon_button = [&](int uid, const std::string &iconfile, float sz, const wxString &label, - const wxString &tip_text) -> bool { + const wxString &tip_text, const std::vector &media = {}) -> bool { const auto it = m_panel_icon_map.find(iconfile); const float pad = std::max(1.f, std::round(sz * 0.14f)); bool clicked = false; @@ -6373,7 +6570,7 @@ void GLGizmoTextureDisplacement::on_render_input_window(float x, float y, float ImGui::PopStyleVar(); ImGui::PopID(); if (!tip_text.empty() && ImGui::IsItemHovered()) - m_imgui->tooltip(tip_text, wrap_w); + panel_tooltip(tip_text, media); return clicked; }; // A short vertical rule between groups of buttons on one row; call it right after an item. @@ -6452,10 +6649,10 @@ void GLGizmoTextureDisplacement::on_render_input_window(float x, float y, float }; // Draws `slider` at `item_w` (SetNextItemWidth's convention: negative measures back from the right - // edge, and the caller has already left edit_icon_room in it), then the edit icon. `tip` and the - // range go on both. Returns whatever the slider returned. - const auto typed_row = [&](const char *id, float item_w, const wxString &tip, const std::string &range, - const std::function &slider) -> bool { + // edge, and the caller has already left edit_icon_room in it), then the edit icon. The range goes on + // both tooltips; `tip` and its illustrations `media` on the slider's. Returns whatever the slider returned. + const auto typed_row = [&](const char *id, float item_w, const wxString &tip, const std::vector &media, + const std::string &range, const std::function &slider) -> bool { // Deferred from the click a frame ago: SetKeyboardFocusHere() is a request for the *next* // frame, so it has to be issued before the slider it names, not from the icon beside it. if (m_slider_type_request == id) { @@ -6471,7 +6668,7 @@ void GLGizmoTextureDisplacement::on_render_input_window(float x, float y, float wxString full = tip; if (!full.IsEmpty()) full += "\n\n"; - m_imgui->tooltip(full + from_u8(range), wrap_w); + panel_tooltip(full + from_u8(range), media); } // SameLine() puts the cursor back at the slider's own top (ItemSize records the Y the item was // drawn at), so an icon of the same height lands on the track wherever the row placed it. @@ -6488,15 +6685,15 @@ void GLGizmoTextureDisplacement::on_render_input_window(float x, float y, float // already given, so no row states its bounds or its format twice and the tooltip cannot drift from // the track. `item_w` is as typed_row() takes it. const auto typed_slider = [&](const char *id, float item_w, float *v, float v_min, float v_max, const char *format, - bool log, const wxString &tip) -> bool { - return typed_row(id, item_w, tip, range_text(fmt_bound(format, v_min), fmt_bound(format, v_max)), [&] { + bool log, const wxString &tip, const std::vector &media = {}) -> bool { + return typed_row(id, item_w, tip, media, range_text(fmt_bound(format, v_min), fmt_bound(format, v_max)), [&] { return ImGui::SliderFloat(id, v, v_min, v_max, format, ImGuiSliderFlags_AlwaysClamp | (log ? ImGuiSliderFlags_Logarithmic : 0)); }); }; const auto typed_slider_int = [&](const char *id, float item_w, int *v, int v_min, int v_max, const char *format, - bool log, const wxString &tip) -> bool { - return typed_row(id, item_w, tip, range_text(fmt_bound(format, v_min), fmt_bound(format, v_max)), [&] { + bool log, const wxString &tip, const std::vector &media = {}) -> bool { + return typed_row(id, item_w, tip, media, range_text(fmt_bound(format, v_min), fmt_bound(format, v_max)), [&] { return ImGui::SliderInt(id, v, v_min, v_max, format, ImGuiSliderFlags_AlwaysClamp | (log ? ImGuiSliderFlags_Logarithmic : 0)); }); @@ -6504,14 +6701,14 @@ void GLGizmoTextureDisplacement::on_render_input_window(float x, float y, float // Label column + the slider filling the rest of the row. const auto float_row = [&](const char *id, const wxString &label, float *v, float v_min, float v_max, const char *format, - bool log, float right_inset, const wxString &tip) -> bool { + bool log, float right_inset, const wxString &tip, const std::vector &media = {}) -> bool { slider_label(label); - return typed_slider(id, -(std::max(right_inset, 1.f) + edit_icon_room), v, v_min, v_max, format, log, tip); + return typed_slider(id, -(std::max(right_inset, 1.f) + edit_icon_room), v, v_min, v_max, format, log, tip, media); }; const auto int_row = [&](const char *id, const wxString &label, int *v, int v_min, int v_max, const char *format, - float right_inset, const wxString &tip) -> bool { + float right_inset, const wxString &tip, const std::vector &media = {}) -> bool { slider_label(label); - return typed_slider_int(id, -(std::max(right_inset, 1.f) + edit_icon_room), v, v_min, v_max, format, false, tip); + return typed_slider_int(id, -(std::max(right_inset, 1.f) + edit_icon_room), v, v_min, v_max, format, false, tip, media); }; const auto layer_name = [](const TextureDisplacementLayer &l) { return l.name.empty() ? Slic3r::format(_u8L("Layer %1%"), l.slot + 1) : l.name; @@ -6667,11 +6864,13 @@ void GLGizmoTextureDisplacement::on_render_input_window(float x, float y, float ImGui::SetCursorPosX(toggles_x); if (icon_toggle(820, "texture_displacement_add.svg", !m_erase_mode, icon_sm, _L("Paint"), _L("Paint - add the active layer where you click or drag. The right button erases, and so does " - "holding Shift."))) + "holding Shift."), + { { "paint.gif" } })) m_erase_mode = false; ImGui::SameLine(0.f, gap_s); if (icon_toggle(821, "texture_displacement_add_negative.svg", m_erase_mode, icon_sm, _L("Erase"), - _L("Erase - remove the active layer where you click or drag. The right button paints."))) + _L("Erase - remove the active layer where you click or drag. The right button paints."), + { { "erase.gif" } })) m_erase_mode = true; } @@ -6685,20 +6884,22 @@ void GLGizmoTextureDisplacement::on_render_input_window(float x, float y, float const bool is_area_mode = m_tool_type == ToolType::SMART_FILL; const float row_y = ImGui::GetCursorPosY(); if (icon_toggle(801, "texture_displacement_brush.svg", is_brush_mode, icon_md, _L("Brush"), - _L("Brush - paint over the surface by dragging"))) { + _L("Brush - paint over the surface by dragging"), { { "paint.gif" } })) { m_tool_type = ToolType::BRUSH; if (m_cursor_type == TriangleSelector::CursorType::POINTER) m_cursor_type = TriangleSelector::CursorType::CIRCLE; } ImGui::SameLine(0.f, gap_s); - if (icon_toggle(802, "texture_displacement_face.svg", is_face_mode, icon_md, _L("Face"), _L("Face - click individual triangles"))) { + if (icon_toggle(802, "texture_displacement_face.svg", is_face_mode, icon_md, _L("Face"), _L("Face - click individual triangles"), + { { "tool_face.gif" } })) { m_tool_type = ToolType::BRUSH; m_cursor_type = TriangleSelector::CursorType::POINTER; } ImGui::SameLine(0.f, gap_s); if (icon_toggle(803, "texture_displacement_connected_area.svg", is_area_mode, icon_md, _L("Connected area"), _L("Connected area - flood-fill the region reachable without crossing an edge sharper than the " - "angle threshold"))) { + "angle threshold"), + { { "tool_smart_fill.gif" } })) { m_tool_type = ToolType::SMART_FILL; m_cursor_type = TriangleSelector::CursorType::POINTER; } @@ -6712,11 +6913,13 @@ void GLGizmoTextureDisplacement::on_render_input_window(float x, float y, float wxString(); ImGui::SameLine(0.f, gap_s); if (icon_toggle(806, "texture_displacement_select_all.svg", false, icon_md, _L("Select whole model"), - _L("Select whole model - paint every face of the model with the active layer"), whole_na)) + _L("Select whole model - paint every face of the model with the active layer"), + { { "select_all.png" } }, whole_na)) select_whole_model(); ImGui::SameLine(0.f, gap_s); if (icon_toggle(807, "texture_displacement_erase_all.svg", false, icon_md, _L("Erase whole model"), - _L("Erase whole model - clear the active layer's paint from every face"), erase_na)) { + _L("Erase whole model - clear the active layer's paint from every face"), + { { "erase_all.png" } }, erase_na)) { Plater::TakeSnapshot snapshot(wxGetApp().plater(), _u8L("Reset texture displacement selection"), UndoRedo::SnapshotType::GizmoAction); int idx = -1; @@ -6738,7 +6941,8 @@ void GLGizmoTextureDisplacement::on_render_input_window(float x, float y, float centre_on_row(frame_h); typed_slider("##cursor_radius", std::max(1.f, row_end - ImGui::GetCursorPosX() - (3.f * gap_s + 1.f + 2.f * icon_sm) - edit_icon_room), - &m_cursor_radius, CursorRadiusMin, CursorRadiusMax, "%.2f mm", false, m_desc.at("cursor_size")); + &m_cursor_radius, CursorRadiusMin, CursorRadiusMax, "%.2f mm", false, m_desc.at("cursor_size"), + { { "cursor_size.gif" } }); vsep(icon_sm); const bool is_circle = m_cursor_type == TriangleSelector::CursorType::CIRCLE; centre_on_row(icon_sm); @@ -6754,7 +6958,8 @@ void GLGizmoTextureDisplacement::on_render_input_window(float x, float y, float centre_on_row(frame_h); typed_slider("##smart_fill_angle", std::max(1.f, row_end - ImGui::GetCursorPosX() - edit_icon_room), &m_smart_fill_angle, SmartFillAngleMin, SmartFillAngleMax, "%.0f°", false, - _L("Angle threshold - the fill stops at edges sharper than this")); + _L("Angle threshold - the fill stops at edges sharper than this"), + { { "smart_fill_angle_low.png", _L("Low") }, { "smart_fill_angle_high.png", _L("High") } }); } else { centre_on_row(frame_h); ImGui::AlignTextToFramePadding(); @@ -6790,19 +6995,21 @@ void GLGizmoTextureDisplacement::on_render_input_window(float x, float y, float ImGui::SameLine(); ImGui::SetCursorPosX(std::max(ImGui::GetCursorPosX(), x0 + m_imgui->scaled(2.6f))); if (icon_toggle(701, "texture_displacement_real_preview.svg", cur_mode == 0, icon_md, _L("Normal"), - _L("Normal - the real geometry, exactly what Bake will produce. Slower to update"))) + _L("Normal - the real geometry, exactly what Bake will produce. Slower to update"), + { { "tile_on.png" } })) new_mode = picked = 0; ImGui::SameLine(0.f, gap_s); if (icon_toggle(702, "texture_displacement_fast_preview.svg", cur_mode == 1, icon_md, _L("Fast"), _L("Fast - the relief is only shaded on, not built, and only for the layer you are " - "editing. Updates instantly while you paint"))) + "editing. Updates instantly while you paint"), + { { "view_fast.png" } })) new_mode = picked = 1; ImGui::SameLine(0.f, gap_s); if (icon_toggle(703, "texture_displacement_checker.svg", cur_mode == 2, icon_md, _L("Checker"), _L("Checker - a test grid instead of the texture. Where the squares stay square the " "texture is undistorted; where they stretch, it will too. Opens the UV editor if " "it is closed"), - uv_view_na)) { + { { "view_checker.png" } }, uv_view_na)) { new_mode = picked = 2; open_uv_editor = true; } @@ -6810,13 +7017,14 @@ void GLGizmoTextureDisplacement::on_render_input_window(float x, float y, float if (icon_toggle(704, "texture_displacement_distortion.svg", cur_mode == 3, icon_md, _L("Distortion"), _L("Distortion - blue-to-red stretch heatmap over the unwrap. Opens the UV editor if " "it is closed"), - uv_view_na)) { + { { "view_distortion.png" } }, uv_view_na)) { new_mode = picked = 3; open_uv_editor = true; } vsep(icon_md); if (icon_toggle(705, "texture_displacement_wireframe.svg", m_wireframe_overlay, icon_md, _L("Wireframe"), - _L("Wireframe - overlay the mesh edges; independent of the view above"))) + _L("Wireframe - overlay the mesh edges; independent of the view above"), + { { "view_wireframe.png" } })) wf_toggle = true; const std::string auto_label = _u8L("Auto"); @@ -7037,7 +7245,8 @@ void GLGizmoTextureDisplacement::on_render_input_window(float x, float y, float // Depth and tile size are logarithmic, so both ends of their wide ranges stay usable. m_preview_params_dirty |= float_row("##depth", _L("Depth"), &layer.depth_mm, 0.01f, 10.f, "%.3f mm", true, card_pad, _L("Height of the relief: how far white in the texture lifts the surface, in " - "millimetres. Black does not move it at all, unless Midlevel says otherwise.")); + "millimetres. Black does not move it at all, unless Midlevel says otherwise."), + { { "depth.gif" } }); // Mapped by the model's own UV layout there is no millimetre scale to set: the layout is the // placement (see TextureProjectionMethod::ModelUV), so the slider would move nothing. The row // states why rather than hiding: float_row()'s tooltip is shown for a disabled slider too. @@ -7049,11 +7258,15 @@ void GLGizmoTextureDisplacement::on_render_input_window(float x, float y, float "copy of the texture covers it exactly, so there is no tile size to set.") : _L("How wide one copy of the texture is on the model. Smaller repeats the pattern " "more often and makes its detail finer; with Tile off, this is the size of the " - "single copy.")); + "single copy."), + tile_size_na ? std::vector{} : + std::vector{ { "tile_size_large.png", _L("Larger") }, + { "tile_size_small.png", _L("Smaller") } }); m_imgui->disabled_end(); m_preview_params_dirty |= float_row("##rotation", _L("Rotation"), &layer.rotation_deg, 0.f, 360.f, "%.0f°", false, card_pad, _L("Turns the texture on the surface, in degrees - for lining a pattern up with an " - "edge of the model.")); + "edge of the model."), + { { "rotation.gif" } }); if (m_layer_expanded[size_t(layer.slot)]) { { @@ -7073,7 +7286,8 @@ void GLGizmoTextureDisplacement::on_render_input_window(float x, float y, float "outwards; at 0.5 mid-gray stays put, so darker grays cut in and lighter ones " "still push out - one image both embosses and engraves.\n\n" "What cuts in has to fit: inside a sharp corner or through a thin wall, a deep " - "cut can pass through the other side.")); + "cut can pass through the other side."), + { { "midlevel.gif" } }); if (layer.midlevel > 0.f && layer.depth_mm > 1.f) { ImGui::PushTextWrapPos(content_rx - card_pad); m_imgui->warning_text(_L("Deep inward displacement may self-intersect.")); @@ -7083,12 +7297,14 @@ void GLGizmoTextureDisplacement::on_render_input_window(float x, float y, float m_preview_params_dirty |= float_row("##smoothing", _L("Smoothing"), &layer.smoothing, 0.f, 1.f, "%.2f", false, card_pad, _L("Blurs the image before it is used, which rounds off hard steps and removes " "speckle from a noisy photo. Raise it if the relief looks harsh or grainy; it " - "costs fine detail.")); + "costs fine detail."), + { { "smoothing_off.png", _L("Off") }, { "smoothing_on.png", _L("On") } }); // Edge fade: the relief flattens toward the boundary of the painted area. m_preview_params_dirty |= m_imgui->bbl_checkbox(_L("Edge fade") + "##edge_smoothing", layer.edge_smoothing); hover_tip(_u8L("Flattens the relief as it approaches the edge of the painted area, so it " - "blends into the bare surface instead of stopping at a step.")); + "blends into the bare surface instead of stopping at a step."), + { { "edge_fade_off.png", _L("Off") }, { "edge_fade_on.png", _L("On") } }); ImGui::SameLine(); m_imgui->disabled_begin(!layer.edge_smoothing); m_preview_params_dirty |= typed_slider("##edge_amount", -(card_pad + edit_icon_room), @@ -7102,7 +7318,8 @@ void GLGizmoTextureDisplacement::on_render_input_window(float x, float y, float const float x0 = ImGui::GetCursorPosX(); m_preview_params_dirty |= m_imgui->bbl_checkbox(_L("Invert"), layer.invert); hover_tip(_u8L("Turns the relief inside out: what stood out is cut in, and the other way " - "round. The same as using a negative of the image.")); + "round. The same as using a negative of the image."), + { { "invert_off.png", _L("Off") }, { "invert_on.png", _L("On") } }); ImGui::SameLine(); ImGui::SetCursorPosX(std::max(ImGui::GetCursorPosX(), x0 + 0.5f * (ImGui::GetWindowContentRegionMax().x - card_pad - x0))); @@ -7118,13 +7335,12 @@ void GLGizmoTextureDisplacement::on_render_input_window(float x, float y, float } m_imgui->disabled_end(); if (ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled)) - m_imgui->tooltip(has_color ? - _u8L("Prints the painted area in the texture's colors as well as its " - "relief. Each color is matched to the nearest of your loaded " - "filaments; anything you did not paint keeps the object's own.") : - _u8L("This texture is a grayscale height map, so it has no colors to " - "apply. Import a color image to use this."), - wrap_w); + panel_tooltip(has_color ? + _u8L("Prints the painted area in the texture's colors as well as its " + "relief. Each color is matched to the nearest of your loaded " + "filaments; anything you did not paint keeps the object's own.") : + _u8L("This texture is a grayscale height map, so it has no colors to " + "apply. Import a color image to use this.")); // The rest of colour belongs to the whole stack, not to this layer, so it only appears once - // under whichever layer turned colour on. @@ -7134,7 +7350,8 @@ void GLGizmoTextureDisplacement::on_render_input_window(float x, float y, float m_preview_params_dirty = true; hover_tip(_u8L("Interleaves two filaments to fake the colors in between, so a handful " "of filaments can cover a photo or a gradient. An image of flat colors " - "prints the same either way. Off uses one filament per area.")); + "prints the same either way. Off uses one filament per area."), + { { "mix_off.png", _L("Off") }, { "mix_on.png", _L("On") } }); if (opts.color_mix_enabled) { cached_palette(); // brings m_palette_filaments up to date // Every mix can become a filament slot, and there are only so many beside the @@ -7142,7 +7359,8 @@ void GLGizmoTextureDisplacement::on_render_input_window(float x, float y, float const int max_mixes = std::max(1, int(EnforcerBlockerType::ExtruderMax) - int(m_palette_filaments.size())); if (int_row("##color_mix_count", _L("Mixed colors"), &opts.color_mix_count, 1, max_mixes, "%d", card_pad, _L("The most mixed filaments a bake may add. They are picked from the " - "texture's colors, and only the ones the bake actually uses are created."))) + "texture's colors, and only the ones the bake actually uses are created."), + { { "mixed_colors_few.png", _L("Few") }, { "mixed_colors_many.png", _L("Many") } })) m_preview_params_dirty = true; // After the slider, so a change shows in the same frame. const int n_colors = int(cached_palette().size()); @@ -7156,7 +7374,8 @@ void GLGizmoTextureDisplacement::on_render_input_window(float x, float y, float if (int_row("##color_despeckle", _L("Denoise"), &opts.color_despeckle, 0, 6, "%d", card_pad, _L("Cleans up single stray triangles of the wrong color, which detail finer " "than the mesh leaves behind. Raise it if the result looks speckled, " - "lower it if small features are being swallowed."))) + "lower it if small features are being swallowed."), + { { "denoise_off.png", _L("Off") }, { "denoise_on.png", _L("On") } })) m_preview_params_dirty = true; } } @@ -7173,26 +7392,33 @@ void GLGizmoTextureDisplacement::on_render_input_window(float x, float y, float const char *file; wxString label; wxString tip; + const char *picture; // the same ball with the checker laid on it this way, or null for none }; const MappingIcon mappings[] = { { "menu_obj_cube.svg", _L("Triplanar (blended)"), _L("Triplanar - projects the texture from all three axes at once and blends between them, so a " - "patch wrapping around a sharp edge has no seam.") }, + "patch wrapping around a sharp edge has no seam."), + "map_cube.png" }, { "menu_obj_cylinder.svg", _L("Cylindrical"), - _L("Cylindrical - wraps the texture around the painted area's own center, for round shapes.") }, + _L("Cylindrical - wraps the texture around the painted area's own center, for round shapes."), + "map_cylinder.png" }, { "menu_obj_sphere.svg", _L("Spherical"), - _L("Spherical - wraps the texture around the painted area's own center in both directions.") }, + _L("Spherical - wraps the texture around the painted area's own center in both directions."), + "map_sphere.png" }, { "texture_displacement_map_unwrap.svg", _L("Unwrap (LSCM)"), _L("Unwrap - flattens the painted area and maps the texture onto it with as little stretching as " "possible. The area is cut into pieces at its sharp edges first (see Seam angle), so each " - "piece can lie flat on its own.") }, + "piece can lie flat on its own."), + "map_unwrap.png" }, { "texture_displacement_map_view.svg", _L("From view"), _L("From view - projects straight onto the painted area from where you are looking, like a slide " - "projector.") }, + "projector."), + "map_view.png" }, { "texture_displacement_map_model_uv.svg", _L("Model UV"), _L("Model UV - uses the texture coordinates the model itself came with, so a texture made for " "that model lands exactly where it was painted. Nothing is unwrapped, and Tile size does " - "not apply: the model's own layout is the placement.") }, + "not apply: the model's own layout is the placement."), + nullptr }, }; // Only a volume that actually carries a UV channel can be mapped by it. Shown // greyed out rather than hidden, so the reason is visible instead of the control @@ -7207,8 +7433,11 @@ void GLGizmoTextureDisplacement::on_render_input_window(float x, float y, float ImGui::SameLine(0.f, gap_s); const auto method = static_cast(mi); const wxString na = (method == TextureProjectionMethod::ModelUV) ? model_uv_na : wxString(); + const std::vector picture = mappings[mi].picture != nullptr ? + std::vector{ { mappings[mi].picture } } : + std::vector{}; if (icon_toggle(830 + mi, mappings[mi].file, layer.projection_method == method, icon_sm, mappings[mi].label, - mappings[mi].tip, na) && + mappings[mi].tip, picture, na) && layer.projection_method != method) { // Capture the current view the moment "From view" is chosen, so it does something // sensible immediately rather than projecting from a stale/default direction. @@ -7313,19 +7542,20 @@ void GLGizmoTextureDisplacement::on_render_input_window(float x, float y, float const float x0 = ImGui::GetCursorPosX(); m_preview_params_dirty |= m_imgui->bbl_checkbox(_L("Tile") + "##tile_enabled", layer.tile_enabled); hover_tip(_u8L("Repeats the texture across the painted area. Off places one copy, like a decal, " - "at the size set by Tile size.")); + "at the size set by Tile size."), + { { "tile_off.png", _L("Off") }, { "tile_on.png", _L("On") } }); ImGui::SameLine(); ImGui::SetCursorPosX(std::max(ImGui::GetCursorPosX(), x0 + label_w)); const wxString tile_na = layer.tile_enabled ? wxString() : _L("Turn Tile on to choose how the texture repeats."); if (icon_toggle(840, "texture_displacement_tile_repeat.svg", layer.tile_method == static_cast(0), - icon_sm, _L("Repeat"), _L("Repeat"), tile_na)) { + icon_sm, _L("Repeat"), _L("Repeat"), { { "tile_repeat.png" } }, tile_na)) { layer.tile_method = static_cast(0); m_preview_params_dirty = true; } ImGui::SameLine(0.f, gap_s); if (icon_toggle(841, "menu_mirror_x.svg", layer.tile_method == static_cast(1), icon_sm, _L("Mirrored repeat"), _L("Mirrored repeat - every other tile is flipped, so edges meet seamlessly"), - tile_na)) { + { { "tile_mirror.png" } }, tile_na)) { layer.tile_method = static_cast(1); m_preview_params_dirty = true; } @@ -7370,15 +7600,17 @@ void GLGizmoTextureDisplacement::on_render_input_window(float x, float y, float } m_imgui->disabled_end(); if (ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled)) - m_imgui->tooltip(base_layer ? - _u8L("The base layer has nothing beneath it to combine with, so it always adds.") : - _u8L("What this layer does where it overlaps the ones below. Add and " - "Subtract pile relief on or carve it away. Override replaces them, " - "so only this layer's relief is left where it is painted. Multiply " - "and Divide scale what is underneath, which turns this layer into a " - "mask over it - there, Depth acts as a strength, and 1 mm leaves " - "white areas untouched."), - wrap_w); + panel_tooltip(base_layer ? + _u8L("The base layer has nothing beneath it to combine with, so it always adds.") : + _u8L("What this layer does where it overlaps the ones below. Add and " + "Subtract pile relief on or carve it away. Override replaces them, " + "so only this layer's relief is left where it is painted. Multiply " + "and Divide scale what is underneath, which turns this layer into a " + "mask over it - there, Depth acts as a strength, and 1 mm leaves " + "white areas untouched."), + base_layer ? std::vector{} : + std::vector{ { "blend_add.png", from_u8(blend_add) }, + { "blend_multiply.png", from_u8(blend_multiply) } }); ImGui::SameLine(0.f, gap_s); if (icon_toggle(842, "texture_displacement_adjust.svg", m_adjust_texture_mode, icon_sm, _L("Adjust placement"), @@ -7561,7 +7793,8 @@ void GLGizmoTextureDisplacement::on_render_input_window(float x, float y, float } hover_tip(_u8L("Adds triangles only where you painted, instead of everywhere. On a large part with a small " "decal that is the difference between thousands of triangles and millions, and your paint " - "survives the refinement.")); + "survives the refinement."), + { { "painted_only_off.png", _L("Off") }, { "painted_only_on.png", _L("On") } }); if (m_subdivide_adaptive) { if (m_subdivide_target_mm <= 0.f && mv != nullptr) { @@ -7589,7 +7822,8 @@ void GLGizmoTextureDisplacement::on_render_input_window(float x, float y, float preview_live(); hover_tip(_u8L("Spends the triangles where the texture actually bends - packed along ridges and edges, " "sparse over flat ground - instead of spreading them evenly. The same detail for fewer " - "triangles on most textures.")); + "triangles on most textures."), + { { "adaptive_off.png", _L("Off") }, { "adaptive_on.png", _L("On") } }); // The edge-length target is a baseline in both modes. In feature mode it is what guarantees the // curvature test can actually see the texture: left too coarse, a big triangle over a fine @@ -7642,7 +7876,8 @@ void GLGizmoTextureDisplacement::on_render_input_window(float x, float y, float if (int_row("##subdiv_steps", _L("Steps"), &m_subdivide_count, 0, 5, "%d", 0.f, _L("Splits every triangle of the model into four, this many times over. Each step " "quadruples the count - 3 turns 100 k triangles into 6.4 M - so prefer refining " - "only the painted area unless you need the whole model finer."))) { + "only the painted area unless you need the whole model finer."), + { { "subdivide.gif" } })) { if (m_subdivide_editing) rebuild_subdivide_preview(); // a count of 0 clears the preview, it doesn't compute one m_parent.set_as_dirty(); @@ -7710,12 +7945,14 @@ void GLGizmoTextureDisplacement::on_render_input_window(float x, float y, float } float_row("##remesh_edge", _L("Target edge"), &m_remesh_target_edge_mm, 0.1f, 20.f, "%.2f mm", true, 0.f, _L("Triangle size the whole model is rebuilt with, in millimetres. Displacement works best on an " - "even mesh; this is what makes one out of an uneven import.")); + "even mesh; this is what makes one out of an uneven import."), + { { "remesh_before.png", _L("Before") }, { "remesh_after.png", _L("After") } }); m_imgui->bbl_checkbox(_L("Keep sharp edges") + "##remesh_sharp", m_remesh_keep_sharp_edges); hover_tip(_u8L("Holds hard edges and open borders in place while the rest is remeshed. Without it " "the remesher slides vertices along the surface and rounds every crisp edge off - " - "a cube comes back with wobbly edges.")); + "a cube comes back with wobbly edges."), + { { "preserve_edges_off.png", _L("Off") }, { "preserve_edges_on.png", _L("On") } }); ImGui::SameLine(); m_imgui->disabled_begin(!m_remesh_keep_sharp_edges); typed_slider("##remesh_sharp_angle", -(1.f + edit_icon_room), &m_remesh_sharp_angle_deg, 5.f, 90.f, "%.0f°", false, @@ -7730,7 +7967,8 @@ void GLGizmoTextureDisplacement::on_render_input_window(float x, float y, float hover_tip(_u8L("Rebuilds the whole model with triangles close to this edge length - splitting the big " "ones and merging the small ones - so displacement has an even density to work with. " "Replaces the geometry; your paint is carried onto the new triangles spatially, so it " - "survives (already-baked relief is kept too).")); + "survives (already-baked relief is kept too)."), + { { "remesh_before.png", _L("Before") }, { "remesh_after.png", _L("After") } }); // Settings for the whole stack rather than one layer. Standard mode pins them instead of showing them. if (mv != nullptr) { @@ -7746,7 +7984,8 @@ void GLGizmoTextureDisplacement::on_render_input_window(float x, float y, float m_preview_params_dirty |= m_imgui->bbl_checkbox(_L("Smooth result"), opts.smooth_enabled); hover_tip(_u8L("Smooths the geometry after the texture has been applied, to take the hard steps out of a " "low-resolution image. Only what the displacement moved is touched. The Smoothing slider " - "on a layer is a different thing: it blurs the image before it is used.")); + "on a layer is a different thing: it blurs the image before it is used."), + { { "geometry_smoothing.gif" } }); if (opts.smooth_enabled) { float percent = opts.smooth_strength * 100.f; if (float_row("##dispsmooth", _L_CONTEXT("Strength", "Texture Displacement"), &percent, 1.f, 100.f, "%.0f %%", false, 0.f, @@ -7806,7 +8045,8 @@ void GLGizmoTextureDisplacement::on_render_input_window(float x, float y, float "Relief already baked into the rest of the model is kept on top of it, so a " "second bake somewhere else gets the same budget as the first. Raise it if the " "warning below Resolution says the detail will not fit; 0 keeps every triangle " - "the refinement produced, however many that is."))) { + "the refinement produced, however many that is."), + { { "subdivide.gif" } })) { opts.v2_max_triangles_k = shown_k; m_preview_params_dirty = true; } @@ -7825,7 +8065,8 @@ void GLGizmoTextureDisplacement::on_render_input_window(float x, float y, float hover_tip(_u8L("Collapse the thin triangles refinement inherits from the model's own " "tessellation, before displacement samples them. A sliver's three corners " "land on three unrelated parts of the texture, which is what makes the " - "relief look jagged.")); + "relief look jagged."), + { { "collapse_slivers_off.png", _L("Off") }, { "collapse_slivers_on.png", _L("On") } }); } // Below both pipelines' own settings, because it replays whichever of them is selected. if (SHOW_PIPELINE_DEV_CONTROLS) @@ -7926,8 +8167,9 @@ void GLGizmoTextureDisplacement::on_render_input_window(float x, float y, float // Held in a local: the format outlives the call that reads it, and the slider and the // range in its tooltip are then formatted the same way. const std::string v2edge_format = auto_res ? _u8L("%.2f mm (auto)") : std::string("%.2f mm"); + const bool v2edge_chosen = auto_res && rec.edge_mm > 0.f; const wxString v2edge_tip = - auto_res && rec.edge_mm > 0.f ? + v2edge_chosen ? from_u8(Slic3r::format(_u8L("Chosen from the size of the model: %1$.2f mm triangles, " "budget %2% k. Untick Auto to set them yourself."), rec.edge_mm, rec.budget_k)) : @@ -7938,7 +8180,8 @@ void GLGizmoTextureDisplacement::on_render_input_window(float x, float y, float "back down and the detail goes with it."); m_imgui->disabled_begin(busy || auto_res); if (typed_slider("##v2edge", x0 + panel_w - ImGui::GetCursorPosX() - edit_icon_room, &shown, 0.02f, 2.f, - v2edge_format.c_str(), true, v2edge_tip)) { + v2edge_format.c_str(), true, v2edge_tip, + v2edge_chosen ? std::vector{} : std::vector{ { "subdivide.gif" } })) { opts.v2_refine_mm = shown; m_preview_params_dirty = true; m_parent.set_as_dirty(); @@ -7980,7 +8223,8 @@ void GLGizmoTextureDisplacement::on_render_input_window(float x, float y, float &m_subdivide_budget_k, 10, 2000, "+%d k", true, _L("How many thousand triangles the refinement may add to the model. The triangle " "that fits worst is always split first, so even a run that spends the lot has " - "spent it where it shows most. Raise it if the relief still looks coarse."))) { + "spent it where it shows most. Raise it if the relief still looks coarse."), + { { "subdivide.gif" } })) { if (m_subdivide_editing) rebuild_subdivide_preview(); m_parent.set_as_dirty(); @@ -8037,18 +8281,17 @@ void GLGizmoTextureDisplacement::on_render_input_window(float x, float y, float m_imgui->pop_bold_font(); GLGizmoUtils::pop_orca_button_style(); if (ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled)) - m_imgui->tooltip(mv != nullptr && !mv->is_texture_displacement_painted() ? - (m_seam_edit_mode ? _u8L("Nothing is painted yet. The UV editor's seam tool is on, so " - "strokes on the model mark seams instead of painting - turn " - "it off in the pane to paint.") : - _u8L("Nothing is painted yet.")) : - pro_mode() ? - _u8L("Turn the painted height maps into real geometry, by moving the vertices that are " - "already there. Use Subdivide first if the mesh is too coarse to show the detail.") : - _u8L("Turn the painted height maps into real geometry. The mesh is remeshed to an even " - "density and refined where the texture bends first, so the detail has vertices to " - "land on - all in one step."), - wrap_w); + panel_tooltip(mv != nullptr && !mv->is_texture_displacement_painted() ? + (m_seam_edit_mode ? _u8L("Nothing is painted yet. The UV editor's seam tool is on, so " + "strokes on the model mark seams instead of painting - turn " + "it off in the pane to paint.") : + _u8L("Nothing is painted yet.")) : + pro_mode() ? + _u8L("Turn the painted height maps into real geometry, by moving the vertices that are " + "already there. Use Subdivide first if the mesh is too coarse to show the detail.") : + _u8L("Turn the painted height maps into real geometry. The mesh is remeshed to an even " + "density and refined where the texture bends first, so the detail has vertices to " + "land on - all in one step.")); ImGui::SameLine(); if (busy) { diff --git a/src/slic3r/GUI/Gizmos/GLGizmoTextureDisplacement.hpp b/src/slic3r/GUI/Gizmos/GLGizmoTextureDisplacement.hpp index 232f1c1729..bd6ec6f345 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoTextureDisplacement.hpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoTextureDisplacement.hpp @@ -4,6 +4,7 @@ #include "GLGizmoPainterBase.hpp" #include "libslic3r/TextureBake/TextureBakeDebug.hpp" #include "libslic3r/TextureDisplacement.hpp" +#include "slic3r/GUI/AnimatedTexture.hpp" #include "slic3r/GUI/GLModel.hpp" #include "slic3r/GUI/GLTexture.hpp" #include "slic3r/GUI/I18N.hpp" @@ -1155,6 +1156,50 @@ private: std::map m_panel_icon_map; // file name -> [normal, colour, disabled] bool m_panel_icons_tried = false; void ensure_panel_icons(); + + // One illustration under a tooltip's text: a still image or an animation (see AnimatedTexture), + // named by file within resources/images/texture_displacement, with a caption under it. Several of + // them in one tooltip are laid out side by side, which is how a setting is shown as a comparison - + // the same model at two values of it. + struct TipMedia + { + std::string file; + wxString caption; + }; + + // Every tooltip the panel shows. Placed beside the panel rather than under the mouse: the panel is + // pinned to the right edge of the canvas, so a tooltip left to follow the mouse covers the control + // it is explaining, and one carrying an illustration covers most of the panel with it. + // + // `media` is drawn under the text, at the tooltip's full width; files that are missing or will not + // decode are skipped, so a tooltip whose illustration has not been drawn yet is exactly the text + // tooltip it was before. + void panel_tooltip(const std::string &text, const std::vector &media = {}); + void panel_tooltip(const wxString &text, const std::vector &media = {}); + void render_tip_media(const std::vector &media, float width); + + // Screen rectangle a tooltip places itself beside: the panel window, or - while the texture picker + // is up and tooltips are coming from inside it - the picker popup, which already sits beside the + // panel. Both are set from the window's own rectangle as it is drawn. + ImVec2 m_tooltip_anchor_min{0.f, 0.f}; + ImVec2 m_tooltip_anchor_max{0.f, 0.f}; + // Illustrations any tooltip has shown, decoded and uploaded once (see AnimatedTexture.hpp). + AnimatedTextureCache m_tip_media; + // Which tooltip's illustrations are on screen, and when they first appeared: an animation plays + // from its first frame each time its tooltip opens, rather than from wherever a free-running clock + // happened to be. + std::string m_tip_media_key; + double m_tip_media_start = 0.; + int m_tip_media_frame = -2; // the frame it was last drawn on, to spot the tooltip reopening + // How long the pointer has rested on the control a tooltip belongs to, and when one was last on + // screen, both on the real clock tip_now() keeps (see the .cpp for why ImGui's own will not do). + ImVec2 m_tip_item{-1.f, -1.f}; + double m_tip_hover_since = 0.; + double m_tip_last_shown = -1e9; + // The frame a tooltip was last drawn on, and how many it has been drawn on in a row: ImGui hides + // one on its first frame while it measures it, so it has to be kept on screen to be seen at all. + int m_tip_shown_frame = -2; + int m_tip_settled = 0; }; } // namespace Slic3r::GUI diff --git a/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp b/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp index a5a3122b85..3193916125 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp @@ -373,6 +373,25 @@ bool GLGizmosManager::init_icon_textures() icon_list.insert(std::make_pair((int) icon, texture_id)); } + for (const auto& [icon, name] : std::initializer_list>{ + { IC_ALIGN_X_MIN , "align_x_min" }, { IC_ALIGN_X_MIN_DARK , "align_x_min_dark" }, + { IC_ALIGN_X_CENTER, "align_x_center" }, { IC_ALIGN_X_CENTER_DARK, "align_x_center_dark" }, + { IC_ALIGN_X_MAX , "align_x_max" }, { IC_ALIGN_X_MAX_DARK , "align_x_max_dark" }, + { IC_ALIGN_Y_MIN , "align_y_min" }, { IC_ALIGN_Y_MIN_DARK , "align_y_min_dark" }, + { IC_ALIGN_Y_CENTER, "align_y_center" }, { IC_ALIGN_Y_CENTER_DARK, "align_y_center_dark" }, + { IC_ALIGN_Y_MAX , "align_y_max" }, { IC_ALIGN_Y_MAX_DARK , "align_y_max_dark" }, + { IC_ALIGN_Z_MIN , "align_z_min" }, { IC_ALIGN_Z_MIN_DARK , "align_z_min_dark" }, + { IC_ALIGN_Z_CENTER, "align_z_center" }, { IC_ALIGN_Z_CENTER_DARK, "align_z_center_dark" }, + { IC_ALIGN_Z_MAX , "align_z_max" }, { IC_ALIGN_Z_MAX_DARK , "align_z_max_dark" }, + { IC_DISTRIBUTE_X , "distribute_x" }, { IC_DISTRIBUTE_X_DARK , "distribute_x_dark" }, + { IC_DISTRIBUTE_Y , "distribute_y" }, { IC_DISTRIBUTE_Y_DARK , "distribute_y_dark" }, + { IC_DISTRIBUTE_Z , "distribute_z" }, { IC_DISTRIBUTE_Z_DARK , "distribute_z_dark" } + }) { + if (!IMTexture::load_from_svg_file(Slic3r::resources_dir() + "/images/" + name + ".svg", 16, 16, texture_id)) + return false; + icon_list.insert(std::make_pair((int) icon, texture_id)); + } + return true; } @@ -470,37 +489,6 @@ bool GLGizmosManager::check_gizmos_closed_except(EType type) const return true; } -// Switches the active plate to the one containing the first selected object, -// so that subsequent operations (align/distribute) act on a plate the user -// can actually see. -void GLGizmosManager::check_object_located_outside_plate(bool change_plate) -{ - PartPlateList& plate_list = wxGetApp().plater()->get_partplate_list(); - auto curr_plate_index = plate_list.get_curr_plate_index(); - Selection& selection = m_parent.get_selection(); - auto idxs = selection.get_volume_idxs(); - if (idxs.empty()) - return; - - const GLVolume* v = selection.get_volume(*idxs.begin()); - int object_idx = v->object_idx(); - const Model* model = m_parent.get_model(); - if (object_idx < 0 || object_idx >= (int) model->objects.size()) - return; - - ModelObject* model_object = model->objects[object_idx]; - for (size_t i = 0; i < plate_list.get_plate_count(); ++i) { - auto plate = plate_list.get_plate(i); - for (auto object : plate->get_objects_on_this_plate()) { - if (model_object == object) { - if (change_plate && curr_plate_index != (int) i) - plate_list.select_plate(i); - return; - } - } - } -} - void GLGizmosManager::set_hover_id(int id) { // Measure and assembly handles hover by itself @@ -648,6 +636,13 @@ bool GLGizmosManager::is_allow_select_all() { return false; } +// Ctrl+click and Alt+click grow the selection only where that serves the gizmo: the Move gizmo aligns and distributes +// several objects or parts, while Scale uses Ctrl for single sided scaling. +bool GLGizmosManager::is_allow_multi_select_parts_or_objects() const +{ + return m_current == Undefined || m_current == EType::Move; +} + std::optional GLGizmosManager::get_clipping_plane() const { if (! m_common_gizmos_data || ! m_common_gizmos_data->object_clipper()) diff --git a/src/slic3r/GUI/Gizmos/GLGizmosManager.hpp b/src/slic3r/GUI/Gizmos/GLGizmosManager.hpp index cba59de9f1..d08b50f61d 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmosManager.hpp +++ b/src/slic3r/GUI/Gizmos/GLGizmosManager.hpp @@ -201,6 +201,30 @@ public: IC_CANVAS_SECTION_ACTIVE_HOVER, IC_CANVAS_SECTION_ACTIVE_DARK, IC_CANVAS_SECTION_ACTIVE_DARK_HOVER, + IC_ALIGN_X_MIN, + IC_ALIGN_X_CENTER, + IC_ALIGN_X_MAX, + IC_ALIGN_Y_MIN, + IC_ALIGN_Y_CENTER, + IC_ALIGN_Y_MAX, + IC_ALIGN_Z_MIN, + IC_ALIGN_Z_CENTER, + IC_ALIGN_Z_MAX, + IC_DISTRIBUTE_X, + IC_DISTRIBUTE_Y, + IC_DISTRIBUTE_Z, + IC_ALIGN_X_MIN_DARK, + IC_ALIGN_X_CENTER_DARK, + IC_ALIGN_X_MAX_DARK, + IC_ALIGN_Y_MIN_DARK, + IC_ALIGN_Y_CENTER_DARK, + IC_ALIGN_Y_MAX_DARK, + IC_ALIGN_Z_MIN_DARK, + IC_ALIGN_Z_CENTER_DARK, + IC_ALIGN_Z_MAX_DARK, + IC_DISTRIBUTE_X_DARK, + IC_DISTRIBUTE_Y_DARK, + IC_DISTRIBUTE_Z_DARK, }; explicit GLGizmosManager(GLCanvas3D& parent); @@ -261,7 +285,6 @@ public: void reset_all_states(); bool open_gizmo(EType type); bool check_gizmos_closed_except(EType) const; - void check_object_located_outside_plate(bool change_plate = true); void set_hover_id(int id); @@ -302,6 +325,7 @@ public: bool is_paint_gizmo(); bool is_allow_select_all(); + bool is_allow_multi_select_parts_or_objects() const; // Empty when the open gizmo has no object clipper. std::optional get_clipping_plane() const; bool wants_reslice_supports_on_undo() const; diff --git a/src/slic3r/GUI/Gizmos/GizmoObjectManipulation.cpp b/src/slic3r/GUI/Gizmos/GizmoObjectManipulation.cpp index be3e961e09..85e7f8180c 100644 --- a/src/slic3r/GUI/Gizmos/GizmoObjectManipulation.cpp +++ b/src/slic3r/GUI/Gizmos/GizmoObjectManipulation.cpp @@ -11,6 +11,7 @@ #include "slic3r/GUI/GUI_ObjectList.hpp" //#include "I18N.hpp" #include "GLGizmosManager.hpp" +#include "GLGizmoAlignment.hpp" #include "slic3r/GUI/GLCanvas3D.hpp" #include "slic3r/GUI/GUI_App.hpp" #include "slic3r/Utils/UndoRedo.hpp" @@ -56,26 +57,8 @@ const double GizmoObjectManipulation::mm_to_in = 0.0393700787; const double GizmoObjectManipulation::oz_to_g = 28.34952; const double GizmoObjectManipulation::g_to_oz = 0.035274; -// Helper function to be used by drop to bed button. Returns lowest point of this -// volume in world coordinate system. -static double get_volume_min_z(const GLVolume* volume) -{ - const Transform3f& world_matrix = volume->world_matrix().cast(); - - // need to get the ModelVolume pointer - const ModelObject* mo = wxGetApp().model().objects[volume->composite_id.object_id]; - const ModelVolume* mv = mo->volumes[volume->composite_id.volume_id]; - const TriangleMesh& hull = mv->get_convex_hull(); - - float min_z = std::numeric_limits::max(); - for (const stl_vertex& vert : hull.its.vertices) { - min_z = std::min(min_z, Vec3f::UnitZ().dot(world_matrix * vert)); - } - return min_z; -} - GizmoObjectManipulation::GizmoObjectManipulation(GLCanvas3D& glcanvas) - : m_glcanvas(glcanvas) + : m_glcanvas(glcanvas), m_alignment_helper(glcanvas) { m_imperial_units = wxGetApp().app_config->get("use_inches") == "1"; m_new_unit_string = m_imperial_units ? L_CONTEXT("in", "inches") : L("mm"); @@ -86,6 +69,7 @@ GizmoObjectManipulation::GizmoObjectManipulation(GLCanvas3D& glcanvas) m_shortcuts_move = { {alt + _L("Left mouse button"), _L("Part selection")}, + {ctrl + _L("Left mouse button"), _L("Select multiple objects")}, {shift + _L("Left mouse button"), _L("Fixed step drag")}, {_L("Context Menu"), _L("Toggle Auto-Drop")} }; @@ -293,12 +277,14 @@ void GizmoObjectManipulation::update_reset_buttons_visibility() { const Selection& selection = m_glcanvas.get_selection(); + // Assembly view has its own selection and transformations, which drop_selection() doesn't update + m_enable_drop_to_bed = m_glcanvas.get_canvas_type() == GLCanvas3D::ECanvasType::CanvasView3D && selection.can_drop(); + if (selection.is_single_full_instance() || selection.is_single_volume_or_modifier()) { const GLVolume * volume = selection.get_first_volume(); Vec3d rotation; Vec3d scale; - double min_z = 0.; if (selection.is_single_full_instance()) { rotation = volume->get_instance_rotation(); @@ -307,12 +293,10 @@ void GizmoObjectManipulation::update_reset_buttons_visibility() else { rotation = volume->get_volume_rotation(); scale = volume->get_volume_scaling_factor(); - min_z = get_volume_min_z(volume); } m_show_clear_rotation = !rotation.isApprox(m_init_rotation); m_show_reset_0_rotation = !rotation.isApprox(Vec3d::Zero()); m_show_clear_scale = (m_cache.scale / 100.0f - Vec3d::Ones()).norm() > 0.001; - m_show_drop_to_bed = (std::abs(min_z) > EPSILON); } } @@ -761,8 +745,19 @@ void GizmoObjectManipulation::set_init_rotation(const Geometry::Transformation & m_init_rotation = value.get_rotation(); } +void GizmoObjectManipulation::reset_align_state() +{ + m_hovered_align_type = GLGizmoAlignment::AlignType::NONE; + m_align_to_parent = !m_alignment_helper.can_align(GLGizmoAlignment::AlignType::X_MIN); +} + void GizmoObjectManipulation::do_render_move_window(ImGuiWrapper *imgui_wrapper, std::string window_name, float x, float y, float bottom_limit) { + float scale = m_glcanvas.get_scale(); +#ifdef WIN32 + scale *= (float)get_dpi_for_window(wxGetApp().GetTopWindow()) / (float)DPI_DEFAULT; +#endif // WIN32 + // BBS: GUI refactor: move gizmo to the right if (abs(last_move_input_window_width) > 0.01f) { if (x + last_move_input_window_width > m_glcanvas.get_canvas_size().get_width()) { @@ -782,6 +777,8 @@ void GizmoObjectManipulation::do_render_move_window(ImGuiWrapper *imgui_wrapper, ImGuiWrapper::push_toolbar_style(m_glcanvas.get_scale()); ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(0.0, 6.0)); + const ImGuiStyle &style = ImGui::GetStyle(); + std::string name = this->m_new_title_string + "##" + window_name; imgui_wrapper->begin(_L(name), ImGuiWrapper::TOOLBAR_WINDOW_FLAGS); @@ -798,16 +795,26 @@ void GizmoObjectManipulation::do_render_move_window(ImGuiWrapper *imgui_wrapper, }; float space_size = imgui_wrapper->get_style_scaling() * 8; + // The align section shares the combo width, the caption column and the input columns of the position row. + const bool show_align = m_glcanvas.get_canvas_type() == GLCanvas3D::ECanvasType::CanvasView3D && + !m_glcanvas.get_selection().is_wipe_tower(); //ORCA float coord_combo_width = std::max({ imgui_wrapper->calc_text_size(_L("World")).x, imgui_wrapper->calc_text_size(_L("Object")).x, imgui_wrapper->calc_text_size(_L("Part")).x - }) + imgui_wrapper->calc_text_size("xxx"sv).x + imgui_wrapper->scaled(3.5f); + }); float label_max = std::max({ imgui_wrapper->calc_text_size(_L("Position")).x, imgui_wrapper->calc_text_size(_L("Relative")).x }); + if (show_align) { + coord_combo_width = std::max({coord_combo_width, imgui_wrapper->calc_text_size(_L("Selection")).x, + imgui_wrapper->calc_text_size(_L("Object")).x, + imgui_wrapper->calc_text_size(_L("Plate")).x}); + label_max = std::max(label_max, imgui_wrapper->calc_text_size(_L("Distribute")).x); + } + coord_combo_width += imgui_wrapper->calc_text_size("xxx"sv).x + imgui_wrapper->scaled(3.5f); float caption_max = std::max(label_max, coord_combo_width - 3 * space_size); float end_text_size = imgui_wrapper->calc_text_size(this->m_new_unit_string).x; @@ -821,6 +828,13 @@ void GizmoObjectManipulation::do_render_move_window(ImGuiWrapper *imgui_wrapper, // Rotation float unit_size = imgui_wrapper->calc_text_size(MAX_SIZE).x + space_size; + // Four align buttons sit under each axis' input, a space before the next axis, so the inputs widen to hold them. + const float align_icon_size = 16.f * scale; + const float align_button_size = align_icon_size + 2.f * style.FramePadding.x; // ORCA + if (show_align) { + unit_size = std::max(unit_size, 3.f * align_button_size); + unit_size = std::round(unit_size); // ORCA keep columns on whole pixels + } int index = 1; int index_unit = 1; @@ -909,6 +923,134 @@ void GizmoObjectManipulation::do_render_move_window(ImGuiWrapper *imgui_wrapper, } if (!focued_on_text) m_glcanvas.handle_sidebar_focus_event("", false); + // Align and distribute along the world axes, within the selection or to the object or plate holding it. + using AlignType = GLGizmoAlignment::AlignType; + const bool old_align_to_parent = m_align_to_parent; + AlignType hovered_align_type = AlignType::NONE; + if (show_align) { + ImGui::Spacing(); + ImGui::Separator(); + ImGui::Spacing(); + + // Each row is row_height tall, separated by ItemSpacing.y. Every control is centered vertically in its row. + const float row_y = ImGui::GetCursorPosY(); + const float button_height = align_icon_size + 2.f * style.FramePadding.y; + ImGuiWrapper::push_combo_style(m_glcanvas.get_scale()); + const float combo_height = ImGui::GetFrameHeight(); + ImGuiWrapper::pop_combo_style(); + const float row_height = std::max({ImGui::GetTextLineHeight(), button_height, combo_height}); + const float row_gap = style.ItemSpacing.y; + int row = 0; + auto row_top = [&](int r) { return row_y + r * (row_height + row_gap); }; + // Snap to whole pixels to avoid blurry icons + auto center_in_row = [&](int r, float item_height) { return std::floor(row_top(r) + (row_height - item_height) * 0.5f); }; + + // Row 0: align mode combo in the caption column. + ImGui::SetCursorPosY(center_in_row(row, combo_height)); + + // The last mode aligns to the parent. Aligning within the selection needs two items. + std::vector align_modes = { + _u8L("Selection"), + m_alignment_helper.is_parts_selection(true) ? _u8L("Object") : _u8L("Plate") + }; + if (!m_alignment_helper.can_align(AlignType::X_MIN)) { + align_modes.erase(align_modes.begin()); + m_align_to_parent = true; + } + size_t align_mode_idx = m_align_to_parent ? align_modes.size() - 1 : 0; + ImGuiWrapper::push_combo_style(m_glcanvas.get_scale()); + // render_combo() takes its ImGui id from the empty label, which the coordinate combo uses too. + ImGui::PushID("align_mode"); + if (render_combo(imgui_wrapper, "", align_modes, align_mode_idx, 0, coord_combo_width)) + m_align_to_parent = align_mode_idx + 1 == align_modes.size(); + ImGui::PopID(); + if (ImGui::IsItemHovered()) { + wxString tooltip_str = _L("Reference for alignment"); + imgui_wrapper->tooltip(tooltip_str, imgui_wrapper->calc_text_size(tooltip_str).x + 3 * space_size); + } + ImGuiWrapper::pop_combo_style(); + + const bool dark_mode = wxGetApp().dark_mode(); + int current_axis = -1; + auto align_icon = [&](int axis, AlignType type, GLGizmosManager::MENU_ICON_NAME icon, + GLGizmosManager::MENU_ICON_NAME dark_icon, const wxString &tip) { + const bool distribute = type >= AlignType::DISTRIBUTE_X; + const bool enabled = m_align_to_parent ? m_alignment_helper.can_align(type, true) : + distribute ? m_alignment_helper.can_distribute(type) : + m_alignment_helper.can_align(type); + if (axis != current_axis) { + ImGui::SameLine(int(caption_max + (axis + 1) * space_size + axis * unit_size)); // ORCA ensure placement snaps to pixel to fix blur + if (current_axis < 0) + ImGui::SetCursorPosY(center_in_row(row, button_height)); + current_axis = axis; + } else + ImGui::SameLine(0, 0); + + if (!enabled) { + ImGui::PushStyleVar(ImGuiStyleVar_Alpha, 0.3f); + ImGui::PushStyleColor(ImGuiCol_ButtonHovered, ImGui::GetStyle().Colors[ImGuiCol_Button]); + ImGui::PushStyleColor(ImGuiCol_ButtonActive, ImGui::GetStyle().Colors[ImGuiCol_Button]); + } + ImTextureID texture = m_glcanvas.get_gizmos_manager().get_icon_texture_id(dark_mode ? dark_icon : icon); + if (ImGui::ImageButton3(texture, texture, ImVec2(align_icon_size, align_icon_size)) && enabled) { + if (distribute) + m_alignment_helper.distribute_objects(type); + else + m_alignment_helper.align_objects(type, m_align_to_parent); + } + if (!enabled) { + ImGui::PopStyleColor(2); + ImGui::PopStyleVar(); + } + + if (ImGui::IsItemHovered()) { + wxString text = tip; + if (enabled) + hovered_align_type = type; + else { + // Too few items is the reason when there are items to move (only distribute needs three); + // otherwise the helper names it. + std::string why_not; + if (m_alignment_helper.get_items_count(type, m_align_to_parent, &why_not) > 0) + why_not = _u8L("Select at least 3 parts or objects"); + if (!why_not.empty()) + text += "\n" + from_u8(why_not); + } + imgui_wrapper->tooltip(text, imgui_wrapper->calc_text_size(text).x + 3 * space_size); + } + }; + ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 0.0f); + align_icon(0, AlignType::X_MIN, GLGizmosManager::IC_ALIGN_X_MIN, GLGizmosManager::IC_ALIGN_X_MIN_DARK, _L("Align left") + " (-X)"); + align_icon(0, AlignType::CENTER_X, GLGizmosManager::IC_ALIGN_X_CENTER, GLGizmosManager::IC_ALIGN_X_CENTER_DARK, _L("Align left-right center") + " (X)"); + align_icon(0, AlignType::X_MAX, GLGizmosManager::IC_ALIGN_X_MAX, GLGizmosManager::IC_ALIGN_X_MAX_DARK, _L("Align right") + " (+X)"); + + align_icon(1, AlignType::Y_MIN, GLGizmosManager::IC_ALIGN_Y_MIN, GLGizmosManager::IC_ALIGN_Y_MIN_DARK, _L("Align front") + " (-Y)"); + align_icon(1, AlignType::CENTER_Y, GLGizmosManager::IC_ALIGN_Y_CENTER, GLGizmosManager::IC_ALIGN_Y_CENTER_DARK, _L("Align front-back center") + " (Y)"); + align_icon(1, AlignType::Y_MAX, GLGizmosManager::IC_ALIGN_Y_MAX, GLGizmosManager::IC_ALIGN_Y_MAX_DARK, _L("Align back") + " (+Y)"); + + align_icon(2, AlignType::Z_MIN, GLGizmosManager::IC_ALIGN_Z_MIN, GLGizmosManager::IC_ALIGN_Z_MIN_DARK, _L("Align bottom") + " (-Z)"); + align_icon(2, AlignType::CENTER_Z, GLGizmosManager::IC_ALIGN_Z_CENTER, GLGizmosManager::IC_ALIGN_Z_CENTER_DARK, _L("Align top-bottom center") + " (Z)"); + align_icon(2, AlignType::Z_MAX, GLGizmosManager::IC_ALIGN_Z_MAX, GLGizmosManager::IC_ALIGN_Z_MAX_DARK, _L("Align top") + " (+Z)"); + + if (!m_align_to_parent) { + row = 1; + current_axis = -1; + ImGui::SetCursorPosY(center_in_row(row, ImGui::GetTextLineHeight())); + imgui_wrapper->text(_L("Distribute")); + align_icon(0, AlignType::DISTRIBUTE_X, GLGizmosManager::IC_DISTRIBUTE_X, GLGizmosManager::IC_DISTRIBUTE_X_DARK, _L("Distribute left-right") + " (X)"); + align_icon(1, AlignType::DISTRIBUTE_Y, GLGizmosManager::IC_DISTRIBUTE_Y, GLGizmosManager::IC_DISTRIBUTE_Y_DARK, _L("Distribute front-back") + " (Y)"); + align_icon(2, AlignType::DISTRIBUTE_Z, GLGizmosManager::IC_DISTRIBUTE_Z, GLGizmosManager::IC_DISTRIBUTE_Z_DARK, _L("Distribute top-bottom") + " (Z)"); + } + ImGui::PopStyleVar(); + ImGui::SetCursorPosY(row_top(row + 1)); + } + // The Move gizmo draws the preview with the scene, which an ImGui-only frame does not redraw. + if (hovered_align_type != m_hovered_align_type || m_align_to_parent != old_align_to_parent) { + m_hovered_align_type = hovered_align_type; + m_glcanvas.set_as_dirty(); + m_glcanvas.request_extra_frame(); + } + ImGui::Spacing(); ImGui::Separator(); ImGui::Spacing(); @@ -917,6 +1059,17 @@ void GizmoObjectManipulation::do_render_move_window(ImGuiWrapper *imgui_wrapper, GLGizmoUtils::render_tooltip_button(imgui_wrapper, m_glcanvas, m_shortcuts_move, x, y); + // ORCA use existing function for drop and show button on bottom bar to keep gizmo compact + imgui_wrapper->disabled_begin(!m_enable_drop_to_bed); + ImGui::SameLine(0, space_size * 1.5f); + if (imgui_wrapper->button(_L("Drop"))){ + wxGetApp().plater()->drop_selection(); + UpdateAndShow(true); + } + imgui_wrapper->disabled_end(); + if(ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled)) + imgui_wrapper->tooltip(_L("Move the selection along Z so that its lowest point touches the bed."), ImGui::GetFontSize() * 20.0f); + ImGui::SameLine(); GLGizmoUtils::begin_right_aligned_buttons({ _L("Done") }); if (imgui_wrapper->button(_L("Done"))) { diff --git a/src/slic3r/GUI/Gizmos/GizmoObjectManipulation.hpp b/src/slic3r/GUI/Gizmos/GizmoObjectManipulation.hpp index e43a129734..7452884146 100644 --- a/src/slic3r/GUI/Gizmos/GizmoObjectManipulation.hpp +++ b/src/slic3r/GUI/Gizmos/GizmoObjectManipulation.hpp @@ -13,6 +13,7 @@ #include #include "slic3r/GUI/GUI_Geometry.hpp" +#include "GLGizmoAlignment.hpp" //#include "slic3r/GUI/GLCanvas3D.hpp" @@ -102,7 +103,7 @@ public: bool m_show_reset_0_rotation{false}; bool m_show_clear_rotation { false }; bool m_show_clear_scale { false }; - bool m_show_drop_to_bed { false }; + bool m_enable_drop_to_bed { false }; enum class RotateType { None, Relative, Absolute }; RotateType m_last_rotate_type{RotateType::None}; // 0:no input 1:relative 2:absolute @@ -151,6 +152,13 @@ public: void set_init_rotation(const Geometry::Transformation &value); + // Align/distribute state of the Move panel, which the Move gizmo previews. + const GLGizmoAlignment &get_alignment_helper() const { return m_alignment_helper; } + GLGizmoAlignment::AlignType get_hovered_align_type() const { return m_hovered_align_type; } + bool get_align_to_parent() const { return m_align_to_parent; } + // When the Move gizmo opens or closes: no preview, and "Align selected" whenever the selection allows it. + void reset_align_state(); + private: void reset_settings_value(); void update_settings_value(const Selection& selection); @@ -175,6 +183,12 @@ private: GLCanvas3D& m_glcanvas; unsigned int m_last_active_item { 0 }; + GLGizmoAlignment m_alignment_helper; + // Operation of the enabled align icon under the mouse. + GLGizmoAlignment::AlignType m_hovered_align_type{GLGizmoAlignment::AlignType::NONE}; + // Align to the object or plate holding the selection rather than within the selection. + bool m_align_to_parent{false}; + // Contains all shortcuts in the format of {shortcut, description}, e.g. {alt + _L("Left mouse button"), _L("Part_selection")} std::vector> m_shortcuts_move; // Contains all shortcuts in the format of {shortcut, description}, e.g. {alt + _L("Left mouse button"), _L("Part_selection")} diff --git a/src/slic3r/GUI/IMToolbar.cpp b/src/slic3r/GUI/IMToolbar.cpp index 1629644df9..6a885f473f 100644 --- a/src/slic3r/GUI/IMToolbar.cpp +++ b/src/slic3r/GUI/IMToolbar.cpp @@ -23,27 +23,23 @@ IMToolbarItem::~IMToolbarItem() } -bool IMToolbarItem::generate_texture() +void IMToolbarItem::set_thumbnail(const ThumbnailData& thumbnail) { - GLint last_texture; - unsigned m_image_texture{ 0 }; - unsigned char* pixels = (unsigned char*)(&image_data[0]); + if (!thumbnail.is_valid()) + return; + GLint last_texture; + GLuint id = (GLuint)(intptr_t)texture_id; glsafe(::glGetIntegerv(GL_TEXTURE_BINDING_2D, &last_texture)); - glsafe(::glGenTextures(1, &m_image_texture)); - glsafe(::glBindTexture(GL_TEXTURE_2D, m_image_texture)); + if (id == 0) + glsafe(::glGenTextures(1, &id)); + glsafe(::glBindTexture(GL_TEXTURE_2D, id)); glsafe(::glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)); glsafe(::glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)); glsafe(::glPixelStorei(GL_UNPACK_ROW_LENGTH, 0)); - glsafe(::glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, image_width, image_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, pixels)); - - // Store our identifier - texture_id = (ImTextureID)(intptr_t)m_image_texture; - - // Restore state + glsafe(::glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, thumbnail.width, thumbnail.height, 0, GL_RGBA, GL_UNSIGNED_BYTE, thumbnail.pixels.data())); + texture_id = (ImTextureID)(intptr_t)id; glsafe(::glBindTexture(GL_TEXTURE_2D, last_texture)); - - return true; } void IMToolbar::del_all_item() diff --git a/src/slic3r/GUI/IMToolbar.hpp b/src/slic3r/GUI/IMToolbar.hpp index ce8770d27f..54d7fabf61 100644 --- a/src/slic3r/GUI/IMToolbar.hpp +++ b/src/slic3r/GUI/IMToolbar.hpp @@ -12,6 +12,8 @@ #define DEFAULT_TOOLBAR_BUTTON_HEIGHT 80.0f namespace Slic3r { +struct ThumbnailData; + namespace GUI { class IMToolbarItem @@ -33,11 +35,9 @@ public: SliceState slice_state; ImTextureID texture_id { 0 }; - std::vector image_data; - unsigned int image_width; - unsigned int image_height; - bool generate_texture(); + // Uploads a valid thumbnail as the texture; the item keeps no copy of its pixels. + void set_thumbnail(const ThumbnailData& thumbnail); ~IMToolbarItem(); }; diff --git a/src/slic3r/GUI/NativeCommands.cpp b/src/slic3r/GUI/NativeCommands.cpp index 4da288d1ea..6f9918dee2 100644 --- a/src/slic3r/GUI/NativeCommands.cpp +++ b/src/slic3r/GUI/NativeCommands.cpp @@ -365,7 +365,7 @@ std::vector build_command_catalog() return object_op(wxGetApp().plater(), [](Plater* p) { return !p->is_selection_empty(); }, [](Plater* p) { p->center_selection(); }); }); add_with_icon("obj_drop", L("Drop to Bed"), L("Object"), "toolbar_flatten", [](const std::string&) { - return object_op(wxGetApp().plater(), [](Plater* p) { return !p->is_selection_empty(); }, [](Plater* p) { p->drop_selection(); }); + return object_op(wxGetApp().plater(), [](Plater* p) { return p->get_selection().can_drop(); }, [](Plater* p) { p->drop_selection(); }); }); add("obj_fit_volume", L("Scale to Fit Print Volume"), L("Object"), [](const std::string&) { return object_op( diff --git a/src/slic3r/GUI/PartPlate.cpp b/src/slic3r/GUI/PartPlate.cpp index 882ede309c..ae0c0c46db 100644 --- a/src/slic3r/GUI/PartPlate.cpp +++ b/src/slic3r/GUI/PartPlate.cpp @@ -19,6 +19,7 @@ #include "libslic3r/GCode/WipeTower.hpp" #include "libslic3r/CustomGCode.hpp" #include "libslic3r/GCode/GCodeProcessor.hpp" +#include "libslic3r/GCode/GCodeStatistics.hpp" #include #include #include "libslic3r/Arrange.hpp" @@ -6154,6 +6155,14 @@ int PartPlateList::select_plate(int index) //wxQueueEvent(m_plater, new SimpleEvent(EVT_GLCANVAS_PLATE_SELECT)); } + // With the other plates hidden, the view follows the selected plate. + if (previous_index != index && m_intialized && m_plater != nullptr && m_plater->is_view3D_shown() && wxGetApp().focus_mode()) { + Camera& camera = m_plater->get_camera(); + Vec3d target = camera.get_target(); + target.head<2>() = m_plate_list[index]->get_bounding_box().center().head<2>(); + camera.set_target(target); + } + if (previous_index != index && m_intialized && m_plater != nullptr && !m_plater->is_loading_project()) { LifecycleEventContext ctx; ctx.name = m_plate_list[index]->get_plate_name(); @@ -7063,7 +7072,7 @@ void PartPlateList::postprocess_arrange_polygon(arrangement::ArrangePolygon& arr /*rendering related functions*/ //render -void PartPlateList::render(const Transform3d& view_matrix, const Transform3d& projection_matrix, bool bottom, bool only_current, bool only_body, int hover_id, bool render_cali, bool show_grid, bool hide_chrome) +void PartPlateList::render(const Transform3d& view_matrix, const Transform3d& projection_matrix, bool bottom, bool only_current, bool only_body, int hover_id, bool render_cali, bool show_grid, bool hide_chrome, bool hide_inactive) { const std::lock_guard local_lock(m_plates_mutex); std::vector::iterator it = m_plate_list.begin(); @@ -7078,7 +7087,7 @@ void PartPlateList::render(const Transform3d& view_matrix, const Transform3d& pr load_icon_textures(); for (it = m_plate_list.begin(); it != m_plate_list.end(); it++) { int current_index = (*it)->get_index(); - if (only_current && (current_index != m_current_plate)) + if ((only_current || hide_inactive) && (current_index != m_current_plate)) continue; if (current_index == m_current_plate) { PartPlate::HeightLimitMode height_mode = (only_current)?PartPlate::HEIGHT_LIMIT_NONE:m_height_limit_mode; @@ -7539,7 +7548,7 @@ int PartPlateList::rebuild_plates_after_arrangement(bool recycle_plates, bool ex return ret; } -int PartPlateList::store_to_3mf_structure(PlateDataPtrs& plate_data_list, bool with_slice_info, int plate_idx) +int PartPlateList::store_to_3mf_structure(PlateDataPtrs& plate_data_list, bool with_slice_info, int plate_idx, bool with_statistics) { int ret = 0; @@ -7613,6 +7622,8 @@ int PartPlateList::store_to_3mf_structure(PlateDataPtrs& plate_data_list, bool w } //parse filament info plate_data_item->parse_filament_info(m_plate_list[i]->get_slice_result()); + if (with_statistics) + plate_data_item->statistics = gcode_statistics_json(*m_plate_list[i]->get_slice_result()); // Record mixed (virtual) filaments actually used on this plate. // Source is ToolOrdering::used_mixed_filaments (slots that appeared in diff --git a/src/slic3r/GUI/PartPlate.hpp b/src/slic3r/GUI/PartPlate.hpp index 92fc8377c7..ac7a9db0b6 100644 --- a/src/slic3r/GUI/PartPlate.hpp +++ b/src/slic3r/GUI/PartPlate.hpp @@ -1008,7 +1008,7 @@ public: /*rendering related functions*/ void on_change_color_mode(bool is_dark) { m_is_dark = is_dark; } - void render(const Transform3d& view_matrix, const Transform3d& projection_matrix, bool bottom, bool only_current = false, bool only_body = false, int hover_id = -1, bool render_cali = false, bool show_grid = true, bool hide_chrome = false); + void render(const Transform3d& view_matrix, const Transform3d& projection_matrix, bool bottom, bool only_current = false, bool only_body = false, int hover_id = -1, bool render_cali = false, bool show_grid = true, bool hide_chrome = false, bool hide_inactive = false); void set_render_option(bool bedtype_texture, bool plate_settings); void set_render_cali(bool value = true) { render_cali_logo = value; } void render_hover_tooltip() const; @@ -1070,7 +1070,7 @@ public: /* load/store releted functions, with_gcode = true and plate_idx = -1, export all gcode * if with_gcode = true and specify plate_idx, export plate_idx gcode only */ - int store_to_3mf_structure(PlateDataPtrs& plate_data_list, bool with_slice_info = true, int plate_idx = -1); + int store_to_3mf_structure(PlateDataPtrs& plate_data_list, bool with_slice_info = true, int plate_idx = -1, bool with_statistics = false); int load_from_3mf_structure(PlateDataPtrs& plate_data_list, int filament_count = 1); //load gcode files int load_gcode_files(); diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index da828527f2..6e4d3e34e0 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -245,7 +245,6 @@ #include "Widgets/MultiNozzleSync.hpp" // NozzleOption, tryPopUpMultiNozzleDialog, setExtruderNozzleCount #include "DeviceCore/DevNozzleSystem.h" // DevNozzle, GetExtNozzles / GetRackNozzles #include "ProjectDirtyStateManager.hpp" -#include "Gizmos/GLGizmoAlignment.hpp" #include "Gizmos/GLGizmoSimplify.hpp" // create suggestion notification #include "Gizmos/GLGizmoSVG.hpp" // Drop SVG file #include "Gizmos/GizmoObjectManipulation.hpp" @@ -437,6 +436,7 @@ void Plater::show_illegal_characters_warning(wxWindow* parent) void Plater::mark_plate_toolbar_image_dirty() { m_b_plate_toolbar_image_dirty = true; + ++m_plate_toolbar_image_version; } bool Plater::is_plate_toolbar_image_dirty() const @@ -7485,18 +7485,6 @@ struct Plater::priv void delete_all_objects_from_model(); void reset(bool apply_presets_change = false, bool reload_presets = true); void center_selection(); - void distribute_selection_x(); - void distribute_selection_y(); - void distribute_selection_z(); - void align_selection_x_min(); - void align_selection_x_center(); - void align_selection_x_max(); - void align_selection_y_min(); - void align_selection_y_center(); - void align_selection_y_max(); - void align_selection_z_min(); - void align_selection_z_center(); - void align_selection_z_max(); void drop_selection(); void mirror(Axis axis); void split_object(bool auto_drop = true); @@ -10926,78 +10914,6 @@ void Plater::priv::center_selection() view3D->center_selected(); } -void Plater::priv::distribute_selection_x() -{ - GLGizmoAlignment alignment_helper(*view3D->get_canvas3d()); - alignment_helper.distribute_objects(GLGizmoAlignment::AlignType::DISTRIBUTE_X); -} - -void Plater::priv::distribute_selection_y() -{ - GLGizmoAlignment alignment_helper(*view3D->get_canvas3d()); - alignment_helper.distribute_objects(GLGizmoAlignment::AlignType::DISTRIBUTE_Y); -} - -void Plater::priv::distribute_selection_z() -{ - GLGizmoAlignment alignment_helper(*view3D->get_canvas3d()); - alignment_helper.distribute_objects(GLGizmoAlignment::AlignType::DISTRIBUTE_Z); -} - -void Plater::priv::align_selection_x_min() -{ - GLGizmoAlignment alignment_helper(*view3D->get_canvas3d()); - alignment_helper.align_objects(GLGizmoAlignment::AlignType::X_MIN); -} - -void Plater::priv::align_selection_x_center() -{ - GLGizmoAlignment alignment_helper(*view3D->get_canvas3d()); - alignment_helper.align_objects(GLGizmoAlignment::AlignType::CENTER_X); -} - -void Plater::priv::align_selection_x_max() -{ - GLGizmoAlignment alignment_helper(*view3D->get_canvas3d()); - alignment_helper.align_objects(GLGizmoAlignment::AlignType::X_MAX); -} - -void Plater::priv::align_selection_y_min() -{ - GLGizmoAlignment alignment_helper(*view3D->get_canvas3d()); - alignment_helper.align_objects(GLGizmoAlignment::AlignType::Y_MIN); -} - -void Plater::priv::align_selection_y_center() -{ - GLGizmoAlignment alignment_helper(*view3D->get_canvas3d()); - alignment_helper.align_objects(GLGizmoAlignment::AlignType::CENTER_Y); -} - -void Plater::priv::align_selection_y_max() -{ - GLGizmoAlignment alignment_helper(*view3D->get_canvas3d()); - alignment_helper.align_objects(GLGizmoAlignment::AlignType::Y_MAX); -} - -void Plater::priv::align_selection_z_min() -{ - GLGizmoAlignment alignment_helper(*view3D->get_canvas3d()); - alignment_helper.align_objects(GLGizmoAlignment::AlignType::Z_MIN); -} - -void Plater::priv::align_selection_z_center() -{ - GLGizmoAlignment alignment_helper(*view3D->get_canvas3d()); - alignment_helper.align_objects(GLGizmoAlignment::AlignType::CENTER_Z); -} - -void Plater::priv::align_selection_z_max() -{ - GLGizmoAlignment alignment_helper(*view3D->get_canvas3d()); - alignment_helper.align_objects(GLGizmoAlignment::AlignType::Z_MAX); -} - void Plater::priv::drop_selection() { view3D->drop_selected(); @@ -18353,16 +18269,20 @@ wxString Plater::get_project_name() void Plater::update_all_plate_thumbnails(bool force_update) { - for (int i = 0; i < get_partplate_list().get_plate_count(); i++) { - PartPlate* plate = get_partplate_list().get_plate(i); - ThumbnailsParams thumbnail_params = { {}, false, true, true, true, i}; - if (force_update || !plate->thumbnail_data.is_valid()) { - get_view3D_canvas3D()->render_thumbnail(plate->thumbnail_data, plate->plate_thumbnail_width, plate->plate_thumbnail_height, thumbnail_params, Camera::EType::Ortho); - } - if (force_update || !plate->no_light_thumbnail_data.is_valid()) { - get_view3D_canvas3D()->render_thumbnail(plate->no_light_thumbnail_data, plate->plate_thumbnail_width, plate->plate_thumbnail_height, thumbnail_params, - Camera::EType::Ortho, Camera::ViewAngleType::Iso, false, true); - } + for (int i = 0; i < get_partplate_list().get_plate_count(); i++) + update_plate_thumbnails(i, force_update); +} + +void Plater::update_plate_thumbnails(int plate_idx, bool force_update) +{ + PartPlate* plate = get_partplate_list().get_plate(plate_idx); + ThumbnailsParams thumbnail_params = { {}, false, true, true, true, plate_idx}; + if (force_update || !plate->thumbnail_data.is_valid()) { + get_view3D_canvas3D()->render_thumbnail(plate->thumbnail_data, plate->plate_thumbnail_width, plate->plate_thumbnail_height, thumbnail_params, Camera::EType::Ortho); + } + if (force_update || !plate->no_light_thumbnail_data.is_valid()) { + get_view3D_canvas3D()->render_thumbnail(plate->no_light_thumbnail_data, plate->plate_thumbnail_width, plate->plate_thumbnail_height, thumbnail_params, + Camera::EType::Ortho, Camera::ViewAngleType::Iso, false, true); } } @@ -19649,7 +19569,10 @@ void Plater::export_gcode_3mf(bool export_all) int plate_idx = get_partplate_list().get_curr_plate_index(); if (export_all) plate_idx = PLATE_ALL_IDX; - export_3mf(output_path, SaveStrategy::Silence | SaveStrategy::SplitModel | SaveStrategy::WithGcode | SaveStrategy::SkipModel, plate_idx); // BBS: silence + SaveStrategy strategy = SaveStrategy::Silence | SaveStrategy::SplitModel | SaveStrategy::WithGcode | SaveStrategy::SkipModel; // BBS: silence + if (wxGetApp().app_config->get_bool("export_statistics")) + strategy = strategy | SaveStrategy::WithStatistics; + export_3mf(output_path, strategy, plate_idx); RemovableDriveManager& removable_drive_manager = *wxGetApp().removable_drive_manager(); @@ -20503,7 +20426,8 @@ int Plater::export_3mf(const boost::filesystem::path& output_path, SaveStrategy //BBS: add bbs 3mf logic PlateDataPtrs plate_data_list; - p->partplate_list.store_to_3mf_structure(plate_data_list, (strategy & SaveStrategy::WithGcode || strategy & SaveStrategy::WithSliceInfo), export_plate_idx); + p->partplate_list.store_to_3mf_structure(plate_data_list, (strategy & SaveStrategy::WithGcode || strategy & SaveStrategy::WithSliceInfo), export_plate_idx, + strategy & SaveStrategy::WithStatistics); // BBS: backup PresetBundle& preset_bundle = *wxGetApp().preset_bundle; @@ -22311,18 +22235,6 @@ void Plater::suppress_background_process(const bool stop_background_process) BackgroundSlicingProcess& Plater::background_process() { return p->background_process; } void Plater::center_selection() { p->center_selection(); } -void Plater::distribute_selection_x() { p->distribute_selection_x(); } -void Plater::distribute_selection_y() { p->distribute_selection_y(); } -void Plater::distribute_selection_z() { p->distribute_selection_z(); } -void Plater::align_selection_x_min() { p->align_selection_x_min(); } -void Plater::align_selection_x_center() { p->align_selection_x_center(); } -void Plater::align_selection_x_max() { p->align_selection_x_max(); } -void Plater::align_selection_y_min() { p->align_selection_y_min(); } -void Plater::align_selection_y_center() { p->align_selection_y_center(); } -void Plater::align_selection_y_max() { p->align_selection_y_max(); } -void Plater::align_selection_z_min() { p->align_selection_z_min(); } -void Plater::align_selection_z_center() { p->align_selection_z_center(); } -void Plater::align_selection_z_max() { p->align_selection_z_max(); } void Plater::drop_selection() { p->drop_selection(); } void Plater::mirror(Axis axis) { p->mirror(axis); } void Plater::split_object(bool auto_drop) { p->split_object(auto_drop); } diff --git a/src/slic3r/GUI/Plater.hpp b/src/slic3r/GUI/Plater.hpp index a270eea1c3..564addb0c7 100644 --- a/src/slic3r/GUI/Plater.hpp +++ b/src/slic3r/GUI/Plater.hpp @@ -434,6 +434,7 @@ public: bool is_new_project_and_check_state() { return m_new_project_and_check_state; } wxString get_project_name(); void update_all_plate_thumbnails(bool force_update = false); + void update_plate_thumbnails(int plate_idx, bool force_update); void update_obj_preview_thumbnail(ModelObject *, int obj_idx, int vol_idx, std::vector colors, int camera_view_angle_type); void invalid_all_plate_thumbnails(); void force_update_all_plate_thumbnails(); @@ -762,18 +763,6 @@ public: //BBS: add clone logic void clone_selection(); void center_selection(); - void distribute_selection_x(); - void distribute_selection_y(); - void distribute_selection_z(); - void align_selection_x_min(); - void align_selection_x_center(); - void align_selection_x_max(); - void align_selection_y_min(); - void align_selection_y_center(); - void align_selection_y_max(); - void align_selection_z_min(); - void align_selection_z_center(); - void align_selection_z_max(); void drop_selection(); void search(bool plater_is_active, Preset::Type type, wxWindow *tag, TextInput *etag, wxWindow *stag); void mirror(Axis axis); @@ -1083,6 +1072,8 @@ public: void mark_plate_toolbar_image_dirty(); bool is_plate_toolbar_image_dirty() const; void clear_plate_toolbar_image_dirty(); + // Bumped each time the plate thumbnails go stale, so each consumer can track it on its own. + unsigned plate_toolbar_image_version() const { return m_plate_toolbar_image_version; } private: struct priv; @@ -1107,6 +1098,7 @@ private: int m_valid_plates_count { 0 }; int m_check_status = 0; // 0 not check, 1 check success, 2 check failed bool m_b_plate_toolbar_image_dirty{ true }; + unsigned m_plate_toolbar_image_version{ 0 }; void suppress_snapshots(); void allow_snapshots(); diff --git a/src/slic3r/GUI/Preferences.cpp b/src/slic3r/GUI/Preferences.cpp index 27da3efce8..dc726ca6f6 100644 --- a/src/slic3r/GUI/Preferences.cpp +++ b/src/slic3r/GUI/Preferences.cpp @@ -645,7 +645,7 @@ wxBoxSizer *PreferencesDialog::create_item_region_combobox(wxString title, wxStr combobox->SetSelection(current_region); return; } else { - wxGetApp().request_user_logout(); + wxGetApp().request_user_logout(ORCA_CLOUD_PROVIDER, /*user_initiated=*/true); config->set("region", region.ToStdString()); auto area = config->get_country_code(); if (agent) { @@ -2312,6 +2312,13 @@ void PreferencesDialog::create_items() auto item_show_unsupported = create_item_checkbox(_L("Show unsupported presets"), _L("Show incompatible/unsupported presets in the printer and filament dropdown lists. These presets cannot be selected."), "show_unsupported_presets"); g_sizer->Add(item_show_unsupported); + auto item_export_statistics = create_item_checkbox(_L("Export statistics with G-code"), + _L("If enabled, exporting a G-code file also writes its statistics as JSON next to it, as .statistics.json, " + "and an exported sliced 3MF file holds them inside: print time, filament and feature totals, " + "and the same per layer and per object."), + "export_statistics"); + g_sizer->Add(item_export_statistics); + //// DEVELOPER > Experimental Features g_sizer->Add(create_item_title(_L("Experimental Features")), 1, wxEXPAND); @@ -2481,7 +2488,7 @@ wxBoxSizer* PreferencesDialog::create_debug_page() AppConfig* config = GUI::wxGetApp().app_config; std::string country_code = config->get_country_code(); if (agent) { - wxGetApp().request_user_logout(); + wxGetApp().request_user_logout(ORCA_CLOUD_PROVIDER, /*user_initiated=*/true); agent->set_country_code(country_code); } ConfirmBeforeSendDialog confirm_dlg(this, wxID_ANY, _L("Warning"), ConfirmBeforeSendDialog::VisibleButtons::ONLY_CONFIRM); // ORCA VisibleButtons instead ButtonStyle diff --git a/src/slic3r/GUI/Selection.cpp b/src/slic3r/GUI/Selection.cpp index db27a05ac6..58d5e15fe3 100644 --- a/src/slic3r/GUI/Selection.cpp +++ b/src/slic3r/GUI/Selection.cpp @@ -558,15 +558,37 @@ void Selection::center() return; } +double Selection::get_drop_min_z() const +{ + if (!m_valid) + return 0.; + if (m_mode == Volume) + return get_bounding_box().min.z(); + + double min_z = DBL_MAX; + for (const auto& [obj_idx, inst_idxs] : m_cache.content) { + if (obj_idx >= (int)m_model->objects.size()) + continue; // wipe tower + for (int inst_idx : inst_idxs) + min_z = std::min(min_z, m_model->objects[obj_idx]->get_instance_min_z(inst_idx)); + } + return min_z == DBL_MAX ? 0. : min_z; +} + +bool Selection::can_drop() const +{ + return std::abs(get_drop_min_z()) > -SINKING_Z_THRESHOLD; +} + void Selection::drop() { - if (std::abs(this->get_bounding_box().min.z()) < -SINKING_Z_THRESHOLD) { - return; // shouldnt happen, but better check anyways, already checked in append_menu_item_drop() - } + const double min_z = get_drop_min_z(); + if (std::abs(min_z) < -SINKING_Z_THRESHOLD) + return; // already checked in can_drop() wxGetApp().plater()->take_snapshot(L("Move object")); - this->move_to_center(Vec3d(0, 0, -this->get_bounding_box().min.z())); + this->move_to_center(Vec3d(0, 0, -min_z)); for (unsigned int i : m_list) { GLVolume& volume = *(*m_volumes)[i]; @@ -1757,50 +1779,27 @@ void Selection::translate(unsigned int object_idx, unsigned int instance_idx, co //BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(": obj %1%, instance %2%") % object_idx % instance_idx; //BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(": %1%, displacement {%2%, %3%, %4%}") % __LINE__ % displacement(X) % displacement(Y) % displacement(Z); - for (unsigned int i : m_list) { - GLVolume& v = *(*m_volumes)[i]; - if (v.object_idx() == (int)object_idx && v.instance_idx() == (int)instance_idx) - v.set_instance_offset(v.get_instance_offset() + displacement); - } - - std::set done; // prevent processing volumes twice - done.insert(m_list.begin(), m_list.end()); - - for (unsigned int i : m_list) { - if (done.size() == m_volumes->size()) - break; - - int object_idx = (*m_volumes)[i]->object_idx(); - if (object_idx >= 1000) - continue; - - // Process unselected volumes of the object. - for (unsigned int j = 0; j < (unsigned int)m_volumes->size(); ++j) { - if (done.size() == m_volumes->size()) - break; - - if (done.find(j) != done.end()) - continue; - - GLVolume& v = *(*m_volumes)[j]; - if (v.object_idx() != object_idx || v.instance_idx() != (int)instance_idx) - continue; - - v.set_instance_offset(v.get_instance_offset() + displacement); - done.insert(j); - } + // Every volume of the instance, selected or not, so that the instance moves as a whole. + for (GLVolume* v : *m_volumes) { + if (v->object_idx() == (int)object_idx && v->instance_idx() == (int)instance_idx) + v->set_instance_offset(v->get_instance_offset() + displacement); } this->set_bounding_boxes_dirty(); } -void Selection::translate(unsigned int object_idx, unsigned int instance_idx, unsigned int volume_idx, const Vec3d &displacement) { +void Selection::translate(unsigned int object_idx, unsigned int instance_idx, unsigned int volume_idx, const Vec3d &displacement, bool local) +{ if (!m_valid) return; for (unsigned int i : m_list) { GLVolume &v = *(*m_volumes)[i]; - if (v.object_idx() == (int) object_idx && v.instance_idx() == (int) instance_idx && v.volume_idx() == (int) volume_idx) - v.set_volume_offset(v.get_volume_offset() + displacement); + if (v.object_idx() == (int) object_idx && v.instance_idx() == (int) instance_idx && v.volume_idx() == (int) volume_idx) { + Vec3d local_displacement = displacement; + if (!local) + local_displacement = v.get_instance_transformation().get_matrix_no_offset().inverse() * displacement; + v.set_volume_offset(v.get_volume_offset() + local_displacement); + } } this->set_bounding_boxes_dirty(); diff --git a/src/slic3r/GUI/Selection.hpp b/src/slic3r/GUI/Selection.hpp index 35ba184d08..dcee38a813 100644 --- a/src/slic3r/GUI/Selection.hpp +++ b/src/slic3r/GUI/Selection.hpp @@ -248,6 +248,9 @@ public: void clone(int numbers = 1); void center(); void drop(); + bool can_drop() const; + // Lowest world Z that drop() moves to the bed; whole objects count model parts only, as auto drop does. + double get_drop_min_z() const; void center_plate(const int plate_idx); void set_printable(bool printable); bool get_auto_drop() const; @@ -360,7 +363,8 @@ public: void translate(unsigned int object_idx, const Vec3d& displacement); void translate(unsigned int object_idx, unsigned int instance_idx, const Vec3d& displacement); - void translate(unsigned int object_idx, unsigned int instance_idx, unsigned int volume_idx, const Vec3d &displacement); + // local: true (default) if displacement is already in instance-local space; false treats it as world-space delta (L^-1 applied). + void translate(unsigned int object_idx, unsigned int instance_idx, unsigned int volume_idx, const Vec3d &displacement, bool local = true); void rotate(unsigned int object_idx, unsigned int instance_idx, const Transform3d &overwrite_tran); void rotate(unsigned int object_idx, unsigned int instance_idx, unsigned int volume_idx, const Transform3d &overwrite_tran); diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 617ed4e941..9d67e7c0fb 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -2052,17 +2052,19 @@ void Tab::on_value_change(const std::string& opt_key, const boost::any& value) } } } - if (!boost::any_cast(value) && timelapse_enabled) { + bool enable_wrapping = m_config->option("enable_wrapping_detection")->value; + if (!boost::any_cast(value) && (timelapse_enabled || enable_wrapping)) { bool set_enable_prime_tower = false; - MessageDialog dlg(wxGetApp().plater(), _L("A prime tower is required for smooth timelapse mode. There may be flaws on the model without a prime tower. Are you sure you want to disable the prime tower\?"), - _L("Warning"), wxICON_WARNING | wxYES | wxNO); - if (dlg.ShowModal() == wxID_NO) { - DynamicPrintConfig new_conf = *m_config; - new_conf.set_key_value("enable_prime_tower", new ConfigOptionBool(true)); - m_config_manipulation.apply(m_config, &new_conf); - set_enable_prime_tower = true; + if (timelapse_enabled) { + MessageDialog dlg(wxGetApp().plater(), _L("A prime tower is required for smooth timelapse mode. There may be flaws on the model without a prime tower. Are you sure you want to disable the prime tower\?"), + _L("Warning"), wxICON_WARNING | wxYES | wxNO); + if (dlg.ShowModal() == wxID_NO) { + DynamicPrintConfig new_conf = *m_config; + new_conf.set_key_value("enable_prime_tower", new ConfigOptionBool(true)); + m_config_manipulation.apply(m_config, &new_conf); + set_enable_prime_tower = true; + } } - bool enable_wrapping = m_config->option("enable_wrapping_detection")->value; if (enable_wrapping && !set_enable_prime_tower) { MessageDialog dlg(wxGetApp().plater(), _L("A prime tower is required for clumping detection. There may be flaws on the model without prime tower. Are you sure you want to disable prime tower?"), @@ -2850,9 +2852,9 @@ void TabPrint::build() optgroup->append_single_option_line("precise_outer_wall", "quality_settings_precision#precise-wall"); optgroup->append_single_option_line("precise_z_height", "quality_settings_precision#precise-z-height"); optgroup->append_single_option_line("hole_to_polyhole", "quality_settings_precision#polyholes"); - optgroup->append_single_option_line("hole_to_polyhole_threshold", "quality_settings_precision#polyholes"); - optgroup->append_single_option_line("hole_to_polyhole_twisted", "quality_settings_precision#polyholes"); - optgroup->append_single_option_line("hole_to_polyhole_max_edges", "quality_settings_precision#polyholes"); + optgroup->append_single_option_line("hole_to_polyhole_threshold", "quality_settings_precision#polyhole-detection-margin"); + optgroup->append_single_option_line("hole_to_polyhole_twisted", "quality_settings_precision#polyhole-twist"); + optgroup->append_single_option_line("hole_to_polyhole_max_edges", "quality_settings_precision#maximum-polyhole-edge-count"); optgroup = page->new_optgroup(L("Ironing"), L"param_ironing"); optgroup->append_single_option_line("ironing_type", "quality_settings_ironing#type"); @@ -2873,7 +2875,7 @@ void TabPrint::build() optgroup = page->new_optgroup(L("Wall generator"), L"param_wall_generator"); optgroup->append_single_option_line("wall_generator", "quality_settings_wall_generator"); - optgroup->append_single_option_line("wall_transition_angle", "quality_settings_wall_generator#wall-transitioning-threshhold-angle"); + optgroup->append_single_option_line("wall_transition_angle", "quality_settings_wall_generator#wall-transitioning-threshold-angle"); optgroup->append_single_option_line("wall_transition_filter_deviation", "quality_settings_wall_generator#wall-transitioning-filter-margin"); optgroup->append_single_option_line("wall_transition_length", "quality_settings_wall_generator#wall-transitioning-length"); optgroup->append_single_option_line("wall_distribution_count", "quality_settings_wall_generator#wall-distribution-count"); @@ -3061,8 +3063,8 @@ void TabPrint::build() optgroup->append_single_option_line("initial_layer_travel_acceleration", "speed_settings_acceleration#initial-layer-travel", 0); optgroup->append_single_option_line("top_surface_acceleration", "speed_settings_acceleration#top-surface", 0); optgroup->append_single_option_line("travel_acceleration", "speed_settings_acceleration#travel", 0); - optgroup->append_single_option_line("accel_to_decel_enable", "speed_settings_acceleration"); - optgroup->append_single_option_line("accel_to_decel_factor", "speed_settings_acceleration"); + optgroup->append_single_option_line("accel_to_decel_enable", "speed_settings_acceleration#enable-accel-to-decel"); + optgroup->append_single_option_line("accel_to_decel_factor", "speed_settings_acceleration#accel-to-decel"); optgroup = page->new_optgroup(L("Junction Deviation"), L"param_junction_deviation", 15); optgroup->append_single_option_line("default_junction_deviation", "speed_settings_jerk_xy#junction-deviation", 0); @@ -3080,7 +3082,7 @@ void TabPrint::build() optgroup = page->new_optgroup(L("Advanced"), L"param_advanced", 15); optgroup->append_single_option_line("max_volumetric_extrusion_rate_slope", "speed_settings_advanced"); optgroup->append_single_option_line("max_volumetric_extrusion_rate_slope_segment_length", "speed_settings_advanced"); - optgroup->append_single_option_line("extrusion_rate_smoothing_external_perimeter_only", "speed_settings_advanced"); + optgroup->append_single_option_line("extrusion_rate_smoothing_external_perimeter_only", "speed_settings_advanced#apply-only-on-external-features"); page = add_options_page(L("Support"), "custom-gcode_support"); // ORCA: icon only visible on placeholders optgroup = page->new_optgroup(L("Support"), L"param_support"); @@ -3133,7 +3135,7 @@ void TabPrint::build() optgroup->append_single_option_line("support_object_xy_distance", "support_settings_advanced#supportobject-xy-distance"); optgroup->append_single_option_line("support_object_first_layer_gap", "support_settings_advanced#supportobject-first-layer-gap"); optgroup->append_single_option_line("bridge_no_support", "support_settings_advanced#dont-support-bridges"); - optgroup->append_single_option_line("max_bridge_length", "support_settings_advanced"); + optgroup->append_single_option_line("max_bridge_length", "support_settings_advanced#max-bridge-length"); optgroup->append_single_option_line("independent_support_layer_height", "support_settings_advanced#independent-support-layer-height"); optgroup = page->new_optgroup(L("Tree supports"), L"param_support_tree"); @@ -3147,21 +3149,21 @@ void TabPrint::build() optgroup->append_single_option_line("tree_support_branch_angle", "support_settings_tree#branch-angle"); optgroup->append_single_option_line("tree_support_branch_angle_organic", "support_settings_tree#branch-angle"); optgroup->append_single_option_line("tree_support_angle_slow", "support_settings_tree#preferred-branch-angle"); - optgroup->append_single_option_line("tree_support_auto_brim", "support_settings_tree"); - optgroup->append_single_option_line("tree_support_brim_width", "support_settings_tree"); + optgroup->append_single_option_line("tree_support_auto_brim", "support_settings_tree#auto-brim-width"); + optgroup->append_single_option_line("tree_support_brim_width", "support_settings_tree#tree-support-brim-width"); page = add_options_page(L("Multimaterial"), "custom-gcode_multi_material"); // ORCA: icon only visible on placeholders optgroup = page->new_optgroup(L("Prime tower"), L"param_tower"); optgroup->append_single_option_line("enable_prime_tower", "multimaterial_settings_prime_tower"); - optgroup->append_single_option_line("prime_tower_skip_points", "multimaterial_settings_prime_tower"); - optgroup->append_single_option_line("enable_tower_interface_features", "multimaterial_settings_prime_tower"); - optgroup->append_single_option_line("enable_tower_interface_cooldown_during_tower", "multimaterial_settings_prime_tower"); - optgroup->append_single_option_line("prime_tower_enable_framework", "multimaterial_settings_prime_tower"); + optgroup->append_single_option_line("prime_tower_skip_points", "multimaterial_settings_prime_tower#skip-points"); + optgroup->append_single_option_line("enable_tower_interface_features", "multimaterial_settings_prime_tower#enable-tower-interface-features"); + optgroup->append_single_option_line("enable_tower_interface_cooldown_during_tower", "multimaterial_settings_prime_tower#cool-down-from-interface-boost-during-prime-tower"); + optgroup->append_single_option_line("prime_tower_enable_framework", "multimaterial_settings_prime_tower#internal-ribs"); optgroup->append_single_option_line("prime_tower_width", "multimaterial_settings_prime_tower#width"); optgroup->append_single_option_line("belt_purge_tower_width", "multimaterial_settings_prime_tower#belt-purge-tower-width"); - optgroup->append_single_option_line("prime_volume", "multimaterial_settings_prime_tower"); + optgroup->append_single_option_line("prime_volume", "multimaterial_settings_prime_tower#prime-volume"); optgroup->append_single_option_line("prime_tower_brim_width", "multimaterial_settings_prime_tower#brim-width"); - optgroup->append_single_option_line("prime_tower_infill_gap", "multimaterial_settings_prime_tower"); + optgroup->append_single_option_line("prime_tower_infill_gap", "multimaterial_settings_prime_tower#infill-gap"); optgroup->append_single_option_line("wipe_tower_rotation_angle", "multimaterial_settings_prime_tower#wipe-tower-rotation-angle"); optgroup->append_single_option_line("wipe_tower_bridging", "multimaterial_settings_prime_tower#maximal-bridging-distance"); optgroup->append_single_option_line("wipe_tower_extra_spacing", "multimaterial_settings_prime_tower#wipe-tower-purge-lines-spacing"); @@ -3174,7 +3176,7 @@ void TabPrint::build() optgroup->append_single_option_line("wipe_tower_fillet_wall", "multimaterial_settings_prime_tower#fillet-wall"); optgroup->append_single_option_line("wipe_tower_no_sparse_layers", "multimaterial_settings_prime_tower#no-sparse-layers"); optgroup->append_single_option_line("wipe_tower_sparse_layers_combination", "multimaterial_settings_prime_tower#combine-sparse-layers"); - optgroup->append_single_option_line("single_extruder_multi_material_priming", "multimaterial_settings_prime_tower"); + optgroup->append_single_option_line("single_extruder_multi_material_priming", "multimaterial_settings_prime_tower#prime-all-printing-extruders"); optgroup = page->new_optgroup(L("Filament for Features"), L"param_filament_for_features"); optgroup->append_single_option_line("outer_wall_filament_id", "multimaterial_settings_filament_for_features#outer-walls"); @@ -3193,7 +3195,7 @@ void TabPrint::build() optgroup = page->new_optgroup(L("Flush options"), L"param_flush"); optgroup->append_single_option_line("flush_into_infill", "multimaterial_settings_flush_options#flush-into-objects-infill"); - optgroup->append_single_option_line("flush_into_objects", "multimaterial_settings_flush_options"); + optgroup->append_single_option_line("flush_into_objects", "multimaterial_settings_flush_options#flush-into-this-object"); optgroup->append_single_option_line("flush_into_support", "multimaterial_settings_flush_options#flush-into-objects-support"); optgroup = page->new_optgroup(L("Advanced"), L"advanced"); optgroup->append_single_option_line("interlocking_beam", "multimaterial_settings_advanced#interlocking-beam"); @@ -3245,7 +3247,7 @@ void TabPrint::build() optgroup->append_single_option_line("spiral_finishing_flow_ratio", "others_settings_special_mode#spiral-finishing-flow-ratio"); optgroup->append_single_option_line("timelapse_type", "others_settings_special_mode#timelapse"); - optgroup->append_single_option_line("enable_wrapping_detection"); + optgroup->append_single_option_line("enable_wrapping_detection", "others_settings_special_mode#enable-clumping-detection"); optgroup = page->new_optgroup(L("Fuzzy skin"), L"fuzzy_skin"); optgroup->append_single_option_line("fuzzy_skin", "others_settings_fuzzy_skin#fuzzy-skin-mode"); @@ -4861,7 +4863,7 @@ void TabFilament::build() option = optgroup->get_option("compatible_printers_condition"); option.opt.full_width = true; - optgroup->append_single_option_line(option, "material_dependencies#compatible-printers"); + optgroup->append_single_option_line(option, "material_dependencies#printer-condition"); optgroup = page->new_optgroup(L("Compatible process profiles"), "param_dependencies_presets"); create_line_with_widget(optgroup.get(), "compatible_prints", "", [this](wxWindow* parent) { @@ -4870,7 +4872,7 @@ void TabFilament::build() option = optgroup->get_option("compatible_prints_condition"); option.opt.full_width = true; - optgroup->append_single_option_line(option, "material_dependencies#compatible-process-profiles"); + optgroup->append_single_option_line(option, "material_dependencies#process-condition"); page = add_options_page(L("Notes"), "custom-gcode_note"); // ORCA: icon only visible on placeholders optgroup = page->new_optgroup(L("Notes"),"note", 0); @@ -6063,7 +6065,7 @@ if (is_marlin_flavor) optgroup->append_single_option_line("extruder_printable_height", "printer_extruder_basic_information#extruder-layer-height-limits", extruder_idx); Option option = optgroup->get_option("extruder_printable_area", extruder_idx); option.opt.full_width = true; - optgroup->append_single_option_line(option, "printer_extruder_basic_information#extruder-offset-position"); + optgroup->append_single_option_line(option, "printer_extruder_basic_information#extruder-printable-area"); optgroup->m_on_change = [this](const t_config_option_key& opt_key, boost::any value) { diff --git a/src/slic3r/GUI/WebGuideDialog.cpp b/src/slic3r/GUI/WebGuideDialog.cpp index 088d4d6c21..033292c28d 100644 --- a/src/slic3r/GUI/WebGuideDialog.cpp +++ b/src/slic3r/GUI/WebGuideDialog.cpp @@ -1,4 +1,5 @@ #include "WebGuideDialog.hpp" +#include "CloudProvider.hpp" #include "ConfigWizard.hpp" #include @@ -769,7 +770,7 @@ void GuideFrame::OnScriptMessage(wxWebViewEvent &evt) if (wxGetApp().is_user_login()) { BOOST_LOG_TRIVIAL(info) << "logout: user_logout on user_guide_finish"; // agent->user_logout(); - wxGetApp().request_user_logout(); + wxGetApp().request_user_logout(ORCA_CLOUD_PROVIDER, /*user_initiated=*/true); } } } diff --git a/src/slic3r/GUI/WebViewDialog.cpp b/src/slic3r/GUI/WebViewDialog.cpp index 104c42520c..fe7bd0fdfb 100644 --- a/src/slic3r/GUI/WebViewDialog.cpp +++ b/src/slic3r/GUI/WebViewDialog.cpp @@ -36,12 +36,17 @@ #include #include #include +#include #include #include #include #include #include + +#ifdef __linux__ +#include +#endif #include namespace pt = boost::property_tree; @@ -55,6 +60,13 @@ namespace GUI { #define LOGIN_INFO_UPDATE_TIMER_ID 10002 +// OrcaCloud is a native pane of its own: the site refuses to be framed +// (x-frame-options: DENY / CSP frame-ancestors 'none'). +static const char *const kCloudUrl = "https://cloud.orcaslicer.com"; +// #LeftBoard in resources/web/homepage/css/home.css is a 262px column plus a 1px right +// border; the homepage keeps that width as the nav column while the cloud pane is open. +static const int kLeftNavWidth = 263; + // The home page's strings (resources/web/homepage), keyed by their data-i18n and T() ids. static json home_page_strings() { @@ -136,7 +148,11 @@ WebViewPanel::WebViewPanel(wxWindow *parent) m_reset_on_show = WebView::NeedsRecreateOnShow(); SetSizer(topsizer); - topsizer->Add(m_browser, wxSizerFlags().Expand().Proportion(1)); + // The homepage shell is the left nav column; when OrcaCloud opens, its page lives in a + // second native pane beside it (the site refuses to be framed). + m_content_sizer = new wxBoxSizer(wxHORIZONTAL); + m_content_sizer->Add(m_browser, wxSizerFlags().Expand().Proportion(1)); + topsizer->Add(m_content_sizer, wxSizerFlags().Expand().Proportion(1)); // Log backend information /* m_browser->GetUserAgent() may lead crash @@ -292,12 +308,282 @@ void WebViewPanel::create_browser() m_browser->Hide(); } +// The cloud page gets its own native view, created on first use and kept alive afterwards +// so its session and scroll position survive hiding. +void WebViewPanel::create_cloud_browser() +{ + m_cloud_browser = WebView::CreateWebView(this, wxEmptyString); + +#ifdef __linux__ + // The pane's web session is a cookie (guide §3), and WebKitGTK keeps cookies only in memory + // unless a persistent store is set up, so without this the sign-in is lost on every restart + // (and on every reset_browser). Each wxWebView has its own context, so give the cloud pane its + // own store instead of sharing PrinterWebView's. Mirrors PrinterWebView::create_browser. + if (auto* wv = static_cast(m_cloud_browser->GetNativeBackend())) { + const auto cookies_path = boost::filesystem::path(data_dir() + "/cache/cloud_cookies.db"); + auto* cookie_manager = webkit_web_context_get_cookie_manager(webkit_web_view_get_context(wv)); + webkit_cookie_manager_set_persistent_storage(cookie_manager, cookies_path.c_str(), + WEBKIT_COOKIE_PERSISTENT_STORAGE_SQLITE); + } +#endif + + // Webview events are command events, so they would otherwise propagate up to the + // panel's handlers, which drive the homepage view. Keep the cloud pane's events here. + m_cloud_browser->Bind(wxEVT_WEBVIEW_NAVIGATING, &WebViewPanel::OnCloudWebViewEvent, this); + m_cloud_browser->Bind(wxEVT_WEBVIEW_NAVIGATED, &WebViewPanel::OnCloudWebViewEvent, this); + m_cloud_browser->Bind(wxEVT_WEBVIEW_LOADED, &WebViewPanel::OnCloudWebViewEvent, this); + m_cloud_browser->Bind(wxEVT_WEBVIEW_TITLE_CHANGED, &WebViewPanel::OnCloudWebViewEvent, this); + m_cloud_browser->Bind(wxEVT_WEBVIEW_ERROR, &WebViewPanel::OnCloudWebViewEvent, this); + m_cloud_browser->Bind(wxEVT_WEBVIEW_NEWWINDOW, &WebViewPanel::OnCloudWebViewEvent, this); + m_cloud_browser->Bind(wxEVT_WEBVIEW_SCRIPT_MESSAGE_RECEIVED, &WebViewPanel::OnCloudWebViewEvent, this); + + m_cloud_browser->Hide(); + if (m_content_sizer) + m_content_sizer->Add(m_cloud_browser, wxSizerFlags().Expand().Proportion(1)); +} + +// The scheme://host[:port] origin of an http(s) URL, lower-cased and with the default port +// dropped, or empty for any other scheme or a malformed URL. Comparing origins (not a string +// prefix) is what keeps a lookalike host such as "https://cloud.orcaslicer.com.evil.com" out. +static wxString http_origin_of(const wxString& url) +{ + const wxURI uri(url); + if (!uri.HasScheme() || !uri.HasServer()) + return {}; + const wxString scheme = uri.GetScheme().Lower(); + if (scheme != "http" && scheme != "https") + return {}; + wxString origin = scheme + "://" + uri.GetServer().Lower(); + const wxString port = uri.GetPort(); + if (!port.IsEmpty() && port != (scheme == "https" ? "443" : "80")) + origin += ":" + port; + return origin; +} + +// Whether a NAVIGATING event will replace the pane's top-level document rather than load a +// subframe. Edge and macOS report the target frame; WebKitGTK does not (IsTargetMainFrame() is +// always false there), so a user-gesture navigation stands in: a page's own embedded frames load +// without a gesture and stay put, while a user following a link to another site does not. +static bool cloud_navigation_is_top_level(const wxWebViewEvent& evt) +{ +#ifdef __WXGTK__ + return evt.GetNavigationAction() == wxWEBVIEW_NAV_ACTION_USER; +#else + return evt.IsTargetMainFrame(); +#endif +} + +// Sends an off-site navigation to the system browser instead of embedding it. Deferred: this runs +// inside a native webview navigation callback, so launching must not re-enter it. +static void open_cloud_url_externally(const wxString& url) +{ + if (url.empty()) + return; + BOOST_LOG_TRIVIAL(info) << "cloud pane: opening externally " << WebView::RedactUrl(url).ToUTF8().data(); + wxGetApp().CallAfter([url] { wxLaunchDefaultBrowser(url); }); +} + +// Consumed on the cloud view so it never reaches the homepage handlers. {web} pages stay in the +// pane; every other site (OAuth providers included) opens in the system browser (guide §3). +void WebViewPanel::OnCloudWebViewEvent(wxWebViewEvent& evt) +{ + const wxEventType event_type = evt.GetEventType(); + if (event_type == wxEVT_WEBVIEW_NAVIGATING) { + const wxString url = evt.GetURL(); + // Guide §3: keep every {web} page in the pane and open other sites (OAuth providers + // included) in the system browser. Only top-level navigations are diverted, and + // should_divert_cloud_url() excludes same-origin URLs and internal schemes. + if (should_divert_cloud_url(url) && cloud_navigation_is_top_level(evt)) { + evt.Veto(); + open_cloud_url_externally(url); + } + } else if (event_type == wxEVT_WEBVIEW_NEWWINDOW) { + const wxString url = evt.GetURL(); + if (!url.empty()) { + if (is_cloud_origin(url)) + load_cloud_url(url); + else + open_cloud_url_externally(url); + } + evt.Veto(); + } else if (event_type == wxEVT_WEBVIEW_SCRIPT_MESSAGE_RECEIVED) { + on_cloud_script_message(evt.GetString().utf8_string()); + } else if (event_type == wxEVT_WEBVIEW_LOADED || event_type == wxEVT_WEBVIEW_ERROR) { + // A Start URL deferred behind a sign-out (see load_cloud_after_signout). + if (!m_cloud_after_signout_url.IsEmpty()) { + const wxString next = std::exchange(m_cloud_after_signout_url, wxString()); + load_cloud_url(next); + } + } +} + +// The page asks for a web session by posting JSON through window.wx; only the newest request +// counts (tracked in GUI_App). Nothing here touches the UI directly: the desktop login dialog and +// the network mint must not run on the webview's message-dispatch stack. +void WebViewPanel::on_cloud_script_message(const std::string& body) +{ + const json msg = json::parse(body, nullptr, false); + if (msg.is_discarded() || !msg.is_object() || msg.value("command", std::string()) != "request_web_session") + return; + + std::string state; + if (msg.contains("data") && msg["data"].is_object()) + state = msg["data"].value("state", std::string()); + if (state.empty()) + return; + + wxGetApp().CallAfter([state = std::move(state)] { wxGetApp().request_cloud_web_session(state); }); +} + +void WebViewPanel::apply_cloud_layout(bool cloud_on) +{ + if (!m_content_sizer) + return; + + // Cloud mode pins the homepage to the nav column width; otherwise it fills the panel. + if (m_browser) { + if (wxSizerItem* item = m_content_sizer->GetItem(m_browser)) + item->SetProportion(cloud_on ? 0 : 1); + // kLeftNavWidth is in DIP: the web view's CSS px are DIP, so scale to physical pixels. + m_browser->SetMinSize(cloud_on ? m_browser->FromDIP(wxSize(kLeftNavWidth, -1)) : wxDefaultSize); + } + Layout(); +} + +void WebViewPanel::load_cloud_url(const wxString& url) +{ + if (url.empty()) + return; + // Track the origin of whatever the pane is told to load (Start URL, Complete URL, sign-out or + // the plain cloud fallback), so navigation policy has the right origin from the first load on. + const wxString origin = http_origin_of(url); + if (!origin.IsEmpty()) + m_cloud_base_url = origin; + if (!m_cloud_browser) + return; + // Raw LoadURL: WebView::LoadUrl re-serialises through wxURI, which must not alter the + // fragment that carries the one-time handoff token. Log only the redacted URL. + BOOST_LOG_TRIVIAL(trace) << __FUNCTION__ << ": " << WebView::RedactUrl(url).ToUTF8().data(); + m_cloud_browser->LoadURL(url); +} + +bool WebViewPanel::is_cloud_origin(const wxString& url) const +{ + const wxString origin = http_origin_of(url); + return !origin.IsEmpty() && !m_cloud_base_url.IsEmpty() && origin == m_cloud_base_url; +} + +bool WebViewPanel::should_divert_cloud_url(const wxString& url) const +{ + const wxString origin = http_origin_of(url); + // Unknown cloud origin or a non-web scheme: never divert (the pane must keep working). + if (origin.IsEmpty() || m_cloud_base_url.IsEmpty()) + return false; + return origin != m_cloud_base_url; +} + +// Explicit sign-out ends the pane's own web session. That session is a cookie JS cannot clear +// (HttpOnly, guide §3/§8) and ClearHistory() is a no-op on WebKitGTK, so drop the pane's stored +// data natively. wx 3.3.2 ignores the type mask on every backend (any non-zero mask clears +// everything) and needs an invalid `since` to delete cookies, so the default "all" call is used. +void WebViewPanel::clear_cloud_storage() +{ + if (m_cloud_browser) + m_cloud_browser->ClearBrowsingData(wxWEBVIEW_BROWSING_DATA_ALL); +} + +void WebViewPanel::load_cloud_after_signout(const wxString& url) +{ + if (m_cloud_pending_signout && !m_cloud_signout_url.IsEmpty()) { + // The pane did not exist when the user signed out, so its persisted session must be + // cleared before the sign-out page runs and `url` loads once that navigation finishes + // (see OnCloudWebViewEvent). + m_cloud_pending_signout = false; + m_cloud_after_signout_url = url; + clear_cloud_storage(); + load_cloud_url(m_cloud_signout_url); + return; + } + load_cloud_url(url); +} + +void WebViewPanel::schedule_cloud_load(const wxString& url) +{ + if (!m_cloud_browser) { + load_cloud_after_signout(url); + return; + } + // CreateWebView queues the "wx" handler add on the view (macOS/Linux); queue the load behind + // it so the page's first scripts already see the bridge (guide §3). + m_cloud_browser->CallAfter([this, url]() { load_cloud_after_signout(url); }); +} + +void WebViewPanel::cloud_signed_out(const wxString& signout_url) +{ + if (signout_url.empty()) + return; + m_cloud_signout_url = signout_url; + // The next Start URL must re-seed the pane (it now reflects the signed-out state), so forget + // the previous seed regardless of which branch below runs. + m_cloud_seed_url.clear(); + if (m_cloud_browser) { + m_cloud_pending_signout = false; + // Run the sign-out page (ends the server-side session), then clear the pane's stored data. + load_cloud_url(signout_url); + clear_cloud_storage(); + } else { + // Pane never opened this run: clear the persisted session on its first open. + m_cloud_pending_signout = true; + } +} + +void WebViewPanel::set_cloud_mode(bool on, const wxString& url) +{ + if (on) { + // load_cloud_url records the origin from whatever it loads, including the plain cloud + // fallback used when `url` is empty. + if (!m_cloud_browser) { + create_cloud_browser(); + m_cloud_seed_url = url; + schedule_cloud_load(url.empty() ? wxString(kCloudUrl) : url); + } else if (!url.empty() && url != m_cloud_seed_url) { + // Re-seed only when the Start URL actually changed — a login, an account switch or a + // sign-out changes it; an ordinary re-open does not (guide §8). Reloading an unchanged + // Start URL re-runs the page's auth check on every open, which flashes "Signing you + // in…" and re-requests a session (guide §10: mint when the page asks, not per open). + // The pane is kept alive, so an unchanged open just shows the page it already holds. + m_cloud_seed_url = url; + load_cloud_after_signout(url); + } + m_cloud_browser->Show(); + } else if (m_cloud_browser) { + // Closing keeps the pane alive with its session, so re-opening does not have to sign in + // again (guide §10). Nothing is cleared here. + m_cloud_browser->Hide(); + } + apply_cloud_layout(on && m_cloud_browser != nullptr); +} + void WebViewPanel::reset_browser() { + // Rebuild both views the same way, keeping the cloud pane's open/closed state. + const bool cloud_on = m_cloud_browser && m_cloud_browser->IsShown(); + m_browser->Destroy(); // also removes it from the sizer create_browser(); - GetSizer()->Add(m_browser, wxSizerFlags().Expand().Proportion(1)); - Layout(); + m_content_sizer->Insert(size_t(0), m_browser, wxSizerFlags().Expand().Proportion(1)); + + if (m_cloud_browser) { + m_cloud_browser->Destroy(); + m_cloud_browser = nullptr; + create_cloud_browser(); + schedule_cloud_load(wxString(kCloudUrl)); + m_cloud_browser->Show(cloud_on); + // The rebuilt pane holds no seed, so the next open loads the Start URL again. + m_cloud_seed_url.clear(); + } + + apply_cloud_layout(cloud_on); } bool WebViewPanel::Show(bool show) @@ -647,7 +933,7 @@ void WebViewPanel::update_mode() */ void WebViewPanel::OnNavigationRequest(wxWebViewEvent& evt) { - BOOST_LOG_TRIVIAL(trace) << __FUNCTION__ << ": " << evt.GetURL().ToUTF8().data(); + BOOST_LOG_TRIVIAL(trace) << __FUNCTION__ << ": " << WebView::RedactUrl(evt.GetURL()).ToUTF8().data(); const wxString &url = evt.GetURL(); if (url.StartsWith("File://") || url.StartsWith("file://")) { if (!url.Contains("/web/homepage/index.html")) { @@ -693,7 +979,7 @@ void WebViewPanel::OnNavigationComplete(wxWebViewEvent& evt) { m_browser->Show(); Layout(); - BOOST_LOG_TRIVIAL(trace) << __FUNCTION__ << ": " << evt.GetURL().ToUTF8().data(); + BOOST_LOG_TRIVIAL(trace) << __FUNCTION__ << ": " << WebView::RedactUrl(evt.GetURL()).ToUTF8().data(); if (wxGetApp().get_mode() == comDevelop) wxLogMessage("%s", "Navigation complete; url='" + evt.GetURL() + "'"); UpdateState(); @@ -712,6 +998,9 @@ void WebViewPanel::OnDocumentLoaded(wxWebViewEvent& evt) if (wxGetApp().get_mode() == comDevelop) wxLogMessage("%s", "Document loaded; url='" + evt.GetURL() + "'"); } + // A reloaded homepage loses its cloud-mode class; restore it if the pane is open. + if (m_cloud_browser && m_cloud_browser->IsShown()) + RunScript("SetCloudMode(true)"); UpdateState(); SendCloudProvidersInfo(); } @@ -727,7 +1016,7 @@ void WebViewPanel::OnTitleChanged(wxWebViewEvent &evt) */ void WebViewPanel::OnNewWindow(wxWebViewEvent& evt) { - BOOST_LOG_TRIVIAL(trace) << __FUNCTION__ << ": " << evt.GetURL().ToUTF8().data(); + BOOST_LOG_TRIVIAL(trace) << __FUNCTION__ << ": " << WebView::RedactUrl(evt.GetURL()).ToUTF8().data(); wxString flag = " (other)"; if (evt.GetNavigationAction() == wxWEBVIEW_NAV_ACTION_USER) diff --git a/src/slic3r/GUI/WebViewDialog.hpp b/src/slic3r/GUI/WebViewDialog.hpp index 8a4ecbf35d..07f719331a 100644 --- a/src/slic3r/GUI/WebViewDialog.hpp +++ b/src/slic3r/GUI/WebViewDialog.hpp @@ -28,6 +28,7 @@ #include "wx/fs_mem.h" #include "wx/stdpaths.h" #include +#include #include #include "wx/textctrl.h" #include @@ -114,14 +115,62 @@ public: void update_mode(); + // Shows/hides the native OrcaCloud pane beside this homepage nav column. `url` is the + // cloud Start URL ({web}/auth/handoff?next=…&user_id=…), which the page uses to decide + // whether it already has a session; empty falls back to the plain cloud page. + void set_cloud_mode(bool on, const wxString& url = wxString()); + + // True while the OrcaCloud pane exists and is visible. + bool cloud_mode_active() const { return m_cloud_browser && m_cloud_browser->IsShown(); } + + // Loads `url` in the cloud pane — the webview that owns the session handoff. Raw LoadURL (no + // wxURI re-serialisation) so the Complete URL's #fragment stays intact; never logged. + void load_cloud_url(const wxString& url); + + // Clears the cloud pane's own session on an explicit desktop sign-out. If the pane has not + // been created yet, the sign-out is remembered and applied when it is first opened. + void cloud_signed_out(const wxString& signout_url); + bool Show(bool show = true) override; private: void create_browser(); + void create_cloud_browser(); void reset_browser(); + // Consumes the cloud pane's webview events so they stay off the homepage handlers. + void OnCloudWebViewEvent(wxWebViewEvent& evt); + // True when `url` has the same scheme/host/port as the cloud origin ({web}). + bool is_cloud_origin(const wxString& url) const; + // True when a navigation to `url` must leave the pane: an http(s) URL on another origin than + // the (known) cloud origin. False for non-web schemes and while the origin is unknown. + bool should_divert_cloud_url(const wxString& url) const; + // Parses a request_web_session message and defers it to GUI_App. + void on_cloud_script_message(const std::string& body); + // Loads `url`, first clearing a lazily-required sign-out (see cloud_signed_out). + void load_cloud_after_signout(const wxString& url); + // First load of a freshly created pane: deferred so CreateWebView's queued "wx" handler add + // runs first and the page sees window.wx at load time (guide §3). + void schedule_cloud_load(const wxString& url); + // Clears the pane's stored web data (its cookie-backed session) on an explicit sign-out. + void clear_cloud_storage(); + // Re-applies the content sizer's proportions and min sizes for the cloud state. + void apply_cloud_layout(bool cloud_on); wxWebView* m_browser; + wxWebView* m_cloud_browser{nullptr}; + wxBoxSizer* m_content_sizer{nullptr}; wxString m_home_url; bool m_reset_on_show{false}; + // {web} origin (scheme://host[:port]) of the loaded pane. Set from every load, including the + // plain cloud fallback, so navigation policy can keep {web} pages in the pane and send other + // sites to the system browser. + wxString m_cloud_base_url; + // Start URL the pane was last seeded with. An open whose URL matches this is an ordinary + // re-open (nothing changed), so it only shows the pane instead of reloading it (guide §10). + wxString m_cloud_seed_url; + // Sign-out clear the pane must apply once it exists / next loads. + wxString m_cloud_signout_url; + wxString m_cloud_after_signout_url; + bool m_cloud_pending_signout{false}; wxButton * m_button_stop; wxTextCtrl *m_url; #if !BBL_RELEASE_TO_PUBLIC diff --git a/src/slic3r/GUI/Widgets/WebView.cpp b/src/slic3r/GUI/Widgets/WebView.cpp index b8c54aace1..7af3ba4f1d 100644 --- a/src/slic3r/GUI/Widgets/WebView.cpp +++ b/src/slic3r/GUI/Widgets/WebView.cpp @@ -444,6 +444,12 @@ bool WebView::DownloadAndInstallWebViewRuntime() return DownloadAndInstallWV2RT() == 0; } #endif +wxString WebView::RedactUrl(const wxString& url) +{ + const size_t cut = url.find_first_of(wxString("?#")); + return cut == wxString::npos ? url : url.Left(cut); +} + void WebView::LoadUrl(wxWebView * webView, wxString const &url) { auto url2 = url; @@ -451,7 +457,7 @@ void WebView::LoadUrl(wxWebView * webView, wxString const &url) url2.Replace("\\", "/"); #endif if (!url2.empty()) { url2 = wxURI(url2).BuildURI(); } - BOOST_LOG_TRIVIAL(trace) << __FUNCTION__ << url2.ToUTF8(); + BOOST_LOG_TRIVIAL(trace) << __FUNCTION__ << RedactUrl(url2).ToUTF8(); webView->LoadURL(url2); } diff --git a/src/slic3r/GUI/Widgets/WebView.hpp b/src/slic3r/GUI/Widgets/WebView.hpp index cdd885f9bd..bef8a4a101 100644 --- a/src/slic3r/GUI/Widgets/WebView.hpp +++ b/src/slic3r/GUI/Widgets/WebView.hpp @@ -21,6 +21,10 @@ public: #endif static void LoadUrl(wxWebView * webView, wxString const &url); + // Returns the URL truncated at the first '?' or '#', so a query/fragment carrying secrets + // (e.g. a session-handoff token) is never written to a log. + static wxString RedactUrl(const wxString& url); + static bool RunScript(wxWebView * webView, wxString const & msg); // Marks "wx" as registered so CreateWebView's deferred add skips the duplicate. diff --git a/src/slic3r/Utils/Http.cpp b/src/slic3r/Utils/Http.cpp index 1db14c6686..c09c22fe3f 100644 --- a/src/slic3r/Utils/Http.cpp +++ b/src/slic3r/Utils/Http.cpp @@ -485,6 +485,14 @@ void Http::priv::http_perform() if (!postfields.empty()) { ::curl_easy_setopt(curl, CURLOPT_POSTFIELDS, postfields.c_str()); ::curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE_LARGE, postfields.size()); + } else if (method == "POST" && form == nullptr && mime == nullptr) { + // A POST with no body. Without CURLOPT_POSTFIELDS, curl takes the request body from + // the read callback, but form_file_read_cb only has a usable user pointer for a PUT + // (set_put_body) or a streamed multipart part (form_add_file); for an empty POST it + // dereferences libcurl's default READDATA as a form_file and crashes. Point curl at a + // zero-length body so the read callback is never used. + ::curl_easy_setopt(curl, CURLOPT_POSTFIELDS, postfields.c_str()); + ::curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE_LARGE, static_cast(0)); } CURLcode res = ::curl_easy_perform(curl); diff --git a/src/slic3r/Utils/OrcaCloudServiceAgent.cpp b/src/slic3r/Utils/OrcaCloudServiceAgent.cpp index e299a2f16d..f5f7e30d1d 100644 --- a/src/slic3r/Utils/OrcaCloudServiceAgent.cpp +++ b/src/slic3r/Utils/OrcaCloudServiceAgent.cpp @@ -109,6 +109,10 @@ constexpr const char* ORCA_CLOUD_PRINTER = "/api/v1/printers"; constexpr const char* ORCA_CLOUD_LOGIN_PATH = "/orcaslicer-login"; +// Gateway endpoint that mints a one-time web-session handoff token for the signed-in desktop +// user. The cloud pane reloads the returned token into the webview (see build_web_session_*). +constexpr const char* ORCA_WEB_SESSION_HANDOFF_PATH = "/api/v1/account/web-session-handoff"; + constexpr const char* CONFIG_ORCA_API_URL = "orca_api_url"; constexpr const char* CONFIG_ORCA_AUTH_URL = "orca_auth_url"; constexpr const char* CONFIG_ORCA_CLOUD_URL = "orca_cloud_url"; @@ -3019,6 +3023,148 @@ std::string OrcaCloudServiceAgent::get_cloud_login_url(const std::string& langua return url; } +// Percent-encodes every byte outside the RFC 3986 unreserved set (A-Za-z0-9-._~), so token values +// survive fragment parsing intact. Deliberately tiny: no URL-encoder dependency. +static std::string percent_encode_unreserved(const std::string& s) +{ + static const char* const hex = "0123456789ABCDEF"; + std::string out; + out.reserve(s.size()); + for (unsigned char c : s) { + if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || (c >= '0' && c <= '9') || + c == '-' || c == '.' || c == '_' || c == '~') { + out.push_back(static_cast(c)); + } else { + out.push_back('%'); + out.push_back(hex[c >> 4]); + out.push_back(hex[c & 0x0F]); + } + } + return out; +} + +std::string OrcaCloudServiceAgent::build_web_session_start_url(const std::string& next) const +{ + if (cloud_base_url.empty()) + return ""; + + // The page replaces a `next` that is not a same-site path with /app/profiles, so pass a + // same-site path (the guide's default) and let it validate. + std::string url = cloud_base_url + "/auth/handoff?next=" + + percent_encode_unreserved(next.empty() ? "/app/profiles" : next); + + std::lock_guard lock(session_mutex); + if (session.logged_in && !session.user_id.empty()) + url += "&user_id=" + percent_encode_unreserved(session.user_id); + return url; +} + +std::string OrcaCloudServiceAgent::build_web_session_complete_url(const std::string& token_hash, + const std::string& state) const +{ + if (cloud_base_url.empty() || token_hash.empty() || state.empty()) + return ""; + + // Fragment (not query) so the one-time token never reaches a server or a log. + return cloud_base_url + "/auth/handoff#token_hash=" + percent_encode_unreserved(token_hash) + + "&state=" + percent_encode_unreserved(state); +} + +std::string OrcaCloudServiceAgent::build_web_session_signout_url() const +{ + if (cloud_base_url.empty()) + return ""; + return cloud_base_url + "/auth/handoff?signout=1"; +} + +// Extracts the machine-readable code from a handoff error body. 401 uses {"error":""}; +// the other statuses use {"error":{"code":"","message":"..."}}. +static std::string handoff_error_code(const std::string& body) +{ + const json j = json::parse(body, nullptr, false); + if (j.is_discarded() || !j.is_object() || !j.contains("error")) + return ""; + const auto& err = j["error"]; + if (err.is_string()) + return err.get(); + if (err.is_object() && err.contains("code") && err["code"].is_string()) + return err["code"].get(); + return ""; +} + +int OrcaCloudServiceAgent::request_web_session_handoff(std::string& token_hash, std::string& error_code, + unsigned int& http_code) +{ + token_hash.clear(); + error_code.clear(); + http_code = 0; + + const std::string url = api_base_url + ORCA_WEB_SESSION_HANDOFF_PATH; + BOOST_LOG_TRIVIAL(trace) << "OrcaCloudServiceAgent: POST " << ORCA_WEB_SESSION_HANDOFF_PATH; + + // Refresh the desktop token the usual way before minting (newest access token). + ensure_token_fresh("web_session_handoff"); + + auto perform = [&]() { + HttpResult result; + try { + auto http = Http::post(url); + http.tls_verify(true); + + const std::string token = get_access_token(); + + auto headers = data_headers(); + for (const auto& pair : headers) { + http.header(pair.first, pair.second); + } + if (!token.empty()) { + http.header("Authorization", "Bearer " + token); + } + + // No request body: the endpoint identifies the user by the bearer token alone. + http.on_complete([&](std::string resp_body, unsigned resp_status) { + result.success = true; + result.status = resp_status; + result.body = resp_body; + }) + .on_error([&](std::string resp_body, std::string error, unsigned resp_status) { + result.success = false; + result.status = resp_status == 0 ? 404 : resp_status; + result.body = resp_body; + BOOST_LOG_TRIVIAL(error) << "OrcaCloudServiceAgent: web-session-handoff HTTP error - " << error; + }) + .timeout_max(30) + .perform_sync(); + + } catch (const std::exception& e) { + BOOST_LOG_TRIVIAL(error) << "OrcaCloudServiceAgent: web-session-handoff exception - " << e.what(); + } + return result; + }; + + HttpResult res = perform(); + // Reuse the shared 401 policy (refresh once, then retry), exactly like http_get/http_post: + // `suppress` is true for a transient refresh failure (keep the session and token, no logout) + // and false when the refresh token was rejected — so a 401 that remains after the refresh + // surfaces through the generic HTTP-error callback and drives the normal desktop logout. + // Every other handoff status (409/429/503/transport) stays silent here, so the page can + // offer "Try again" instead of the desktop showing a generic cloud error. + const bool suppress = resolve_unauthorized(res, perform, "web_session_handoff"); + if (!suppress && res.status == 401) + invoke_http_error_callback(res.status, res.body); + + http_code = res.status; + if (res.status == 200) { + const json j = json::parse(res.body, nullptr, false); + if (!j.is_discarded() && j.is_object() && j.contains("token_hash") && j["token_hash"].is_string()) + token_hash = j["token_hash"].get(); + } else { + error_code = handoff_error_code(res.body); + } + + return (res.success && res.status == 200) ? BAMBU_NETWORK_SUCCESS : BAMBU_NETWORK_ERR_CONNECT_FAILED; +} + int OrcaCloudServiceAgent::get_mw_user_preference(std::function callback) { BOOST_LOG_TRIVIAL(debug) << "OrcaCloudServiceAgent: get_mw_user_preference (stub)"; diff --git a/src/slic3r/Utils/OrcaCloudServiceAgent.hpp b/src/slic3r/Utils/OrcaCloudServiceAgent.hpp index ae9e1f3213..524f24ced7 100644 --- a/src/slic3r/Utils/OrcaCloudServiceAgent.hpp +++ b/src/slic3r/Utils/OrcaCloudServiceAgent.hpp @@ -203,6 +203,28 @@ public: // ======================================================================== std::string get_cloud_service_host() override; std::string get_cloud_login_url(const std::string& language = "") override; + + // ======================================================================== + // OrcaCloud webview session handoff (OrcaCloud "Webview Session Handoff" guide) + // ======================================================================== + // The cloud pane never receives the desktop's access/refresh tokens. Instead the page posts + // request_web_session, the desktop mints a single-use token through the gateway and loads the + // Complete URL; the site then signs itself in. These builders return "" when no cloud URL is + // configured. + // + // Start URL: {web}/auth/handoff?next=[&user_id=]. `next` defaults to + // /app/profiles; user_id is included only while signed in. + std::string build_web_session_start_url(const std::string& next = std::string()) const; + // Complete URL: {web}/auth/handoff#token_hash=&state=. Both values URL-encoded. + std::string build_web_session_complete_url(const std::string& token_hash, const std::string& state) const; + // Clears only the webview's own session; loaded on an explicit desktop sign-out. + std::string build_web_session_signout_url() const; + // POST {api}/api/v1/account/web-session-handoff with the desktop access token (no body), + // refreshing once on 401 through the shared policy. On 200 writes the single-use `token_hash`; + // otherwise writes the server's error code (e.g. WEB_SESSION_HANDOFF_UNAVAILABLE) into + // `error_code`. Blocking: call from a worker thread. Never logs the token. + int request_web_session_handoff(std::string& token_hash, std::string& error_code, unsigned int& http_code); + int connect_server() override; bool is_server_connected() override; int refresh_connection() override; diff --git a/tests/fff_print/CMakeLists.txt b/tests/fff_print/CMakeLists.txt index da15226ff4..a8e0f1575d 100644 --- a/tests/fff_print/CMakeLists.txt +++ b/tests/fff_print/CMakeLists.txt @@ -9,6 +9,7 @@ add_executable(${_TEST_NAME}_tests test_fill.cpp test_flow.cpp test_gcode_processor.cpp + test_gcode_statistics.cpp test_gcode_timing.cpp test_gcode.cpp test_gcodeprocessor.cpp diff --git a/tests/fff_print/test_gcode.cpp b/tests/fff_print/test_gcode.cpp index f63e30a07f..07091eddef 100644 --- a/tests/fff_print/test_gcode.cpp +++ b/tests/fff_print/test_gcode.cpp @@ -16,6 +16,7 @@ #include "libslic3r/TriangleMesh.hpp" #include "libslic3r/Point.hpp" +#include #include #include #include @@ -50,6 +51,130 @@ TEST_CASE("Klipper object labels name each copy without the characters Klipper c } } +// Firmwares read the compatibility header lines (Anycubic's GoKlipper heats the bed with +// first_layer_bed_temperature), so they must describe the filament the plate prints, not filament 1. +TEST_CASE("The G-code header names the first layer temperatures of the filament the plate prints", "[GCode]") +{ + const std::string formula = GENERATE("by_first_filament", "by_highest_temp"); + DYNAMIC_SECTION("bed_temperature_formula " << formula) { + // Filament 1: bed 60, nozzle 200. Filament 2: bed 100, nozzle 250. Everything prints with filament 2. + DynamicPrintConfig config = Test::multifilament_config(2, { + {"bed_temperature_formula", formula}, + // Authored 1..n as PresetBundle writes it; the all-1s default collapses every per-filament value + // to filament 1. + {"filament_self_index", "1,2"}, + {"filament_extruder_variant", "Direct Drive Standard;Direct Drive Standard"}, + {"enable_prime_tower", 0}, + {"nozzle_temperature_initial_layer", "200,250"}, + {"nozzle_temperature", "200,250"}, + {"supertack_plate_temp_initial_layer", "60,100"}, + {"cool_plate_temp_initial_layer", "60,100"}, + {"textured_cool_plate_temp_initial_layer", "60,100"}, + {"eng_plate_temp_initial_layer", "60,100"}, + {"hot_plate_temp_initial_layer", "60,100"}, + {"textured_plate_temp_initial_layer", "60,100"}, + {"sparse_infill_filament_id", 2}, + {"internal_solid_filament_id", 2}, + {"top_surface_filament_id", 2}, + {"bottom_surface_filament_id", 2}, + {"outer_wall_filament_id", 2}, + {"inner_wall_filament_id", 2}, + {"skirt_loops", 0}, + {"brim_type", "no_brim"}, + }); + const std::string gcode = Test::slice({Test::cube(20)}, config); + + const auto header_value = [&gcode](const std::string& key) { + const std::string token = "; " + key + " = "; + const size_t pos = gcode.find(token); + REQUIRE(pos != std::string::npos); + return std::stoi(gcode.substr(pos + token.size())); + }; + CHECK(header_value("first_layer_bed_temperature") == 100); + CHECK(header_value("first_layer_temperature") == 250); + } +} + +// Printing by object reassigns the initial filament to each object's first filament while it emits the objects, so +// the header must still name the filament the print starts with: the firmware heats the bed for the first object. +TEST_CASE("The G-code header names the first object's filament when printing by object", "[GCode]") +{ + // Filament 1: bed 60, nozzle 200. Filament 2: bed 100, nozzle 250. Object 1 prints with filament 2, object 2 + // with filament 1. + DynamicPrintConfig config = Test::multifilament_config(2, { + {"print_sequence", "by object"}, + {"bed_temperature_formula", "by_first_filament"}, + {"filament_self_index", "1,2"}, + {"filament_extruder_variant", "Direct Drive Standard;Direct Drive Standard"}, + {"enable_prime_tower", 0}, + {"nozzle_temperature_initial_layer", "200,250"}, + {"nozzle_temperature", "200,250"}, + {"supertack_plate_temp_initial_layer", "60,100"}, + {"cool_plate_temp_initial_layer", "60,100"}, + {"textured_cool_plate_temp_initial_layer", "60,100"}, + {"eng_plate_temp_initial_layer", "60,100"}, + {"hot_plate_temp_initial_layer", "60,100"}, + {"textured_plate_temp_initial_layer", "60,100"}, + {"skirt_loops", 0}, + {"brim_type", "no_brim"}, + }); + const std::string gcode = Test::slice_with_object_overrides({Test::cube(20), Test::cube(20)}, config, + {{{"extruder", "2"}}, {{"extruder", "1"}}}); + + // Filament 2 starts and filament 1 follows, so the last object's filament differs from the first one's. + const size_t first_t1 = gcode.find("\nT1"); + const size_t first_t0 = gcode.find("\nT0"); + REQUIRE(first_t1 != std::string::npos); + REQUIRE(first_t0 != std::string::npos); + REQUIRE(first_t1 < first_t0); + + const auto header_value = [&gcode](const std::string& key) { + const std::string token = "; " + key + " = "; + const size_t pos = gcode.find(token); + REQUIRE(pos != std::string::npos); + return std::stoi(gcode.substr(pos + token.size())); + }; + CHECK(header_value("first_layer_bed_temperature") == 100); + CHECK(header_value("first_layer_temperature") == 250); +} + +TEST_CASE("Object label comments number each object and copy with or without exclude object", "[GCode]") +{ + // repetier has no exclude-object commands, so set_object_info() writes nothing for it. + // BBL printers write M624/M625 skip blocks whatever exclude_object is set to. + const auto [flavor, exclude_object, bbl] = GENERATE(table({ + {"marlin2", "0", false}, + {"klipper", "0", false}, + {"klipper", "1", false}, + {"repetier", "1", false}, + {"marlin2", "0", true}, + })); + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.set_deserialize_strict({{"gcode_flavor", flavor}, {"exclude_object", exclude_object}, {"gcode_label_objects", "1"}}); + Print print; + print.is_BBL_printer() = bbl; + Model model; + Test::init_print(std::vector{Test::cube(20.), Test::cube(20.)}, print, model, config, nullptr, false, 2); + arrange_objects(model, BoundingBox{Point::new_scale(0., 0.), Point::new_scale(500., 500.)}, + ArrangeParams{scaled(min_object_distance(config))}); + print.apply(model, config); + + const std::string gcode = Test::gcode(print); + INFO(flavor << ", exclude_object " << exclude_object << ", BBL " << bbl); + for (const char *label : {"id:0 copy 0", "id:0 copy 1", "id:1 copy 0", "id:1 copy 1"}) { + INFO(label); + CHECK(gcode.find("; printing object object.stl " + std::string(label) + "\n") != std::string::npos); + } + if (bbl) + for (const PrintObject *object : print.objects()) + for (const PrintInstance &instance : object->instances()) { + const std::string label_id = std::to_string(instance.model_instance->get_labeled_id()); + INFO("label id " << label_id); + CHECK(gcode.find("; start printing object, unique label id: " + label_id + "\nM624 ") != std::string::npos); + CHECK(gcode.find("; stop printing object, unique label id: " + label_id + "\nM625\n") != std::string::npos); + } +} + TEST_CASE("An exported G-code's settings load back as the settings it was sliced with", "[GCode]") { // Two filaments, so the config block carries the flush matrix already multiplied by flush_multiplier. diff --git a/tests/fff_print/test_gcode_statistics.cpp b/tests/fff_print/test_gcode_statistics.cpp new file mode 100644 index 0000000000..20682aa463 --- /dev/null +++ b/tests/fff_print/test_gcode_statistics.cpp @@ -0,0 +1,124 @@ +#include +#include +#include + +#include "libslic3r/Config.hpp" +#include "libslic3r/GCode/GCodeProcessor.hpp" +#include "libslic3r/GCode/GCodeStatistics.hpp" +#include "libslic3r/Model.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/Print.hpp" +#include "libslic3r/PrintConfig.hpp" +#include "libslic3r/Utils.hpp" + +#include "test_helpers.hpp" +#include "test_utils.hpp" + +#include + +#include +#include +#include +#include +#include + +using namespace Slic3r; + +TEST_CASE("The statistics of a sliced plate add up per layer, feature and object instance", "[GCodeStatistics]") +{ + // A 20 mm cube at 0.2 mm layers prints 100 of them; without skirt or brim all its filament goes to its instances. + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.set_deserialize_strict({ { "layer_height", 0.2 }, + { "initial_layer_print_height", 0.2 }, + { "skirt_loops", 0 }, + { "brim_type", "no_brim" }, + { "filament_density", 1.25 } }); + Print print; + Model model; + Test::init_print({ Test::cube(20) }, print, model, config, nullptr, true, 2); + GCodeProcessorResult result; + Test::gcode(print, &result); + + ScopedTemporaryFile file(".json"); + export_gcode_statistics(result, file.string()); + std::string text; + load_string_file(file.path(), text); + const nlohmann::json statistics = nlohmann::json::parse(text); + + const nlohmann::json &summary = statistics["summary"]; + const nlohmann::json &layers = statistics["layers"]; + REQUIRE(layers.size() == 100); + CHECK(summary["layer_count"] == 100); + CHECK_THAT(layers.front()["z"].get(), Catch::Matchers::WithinAbs(0.2, 1e-3)); + CHECK_THAT(layers.back()["z"].get(), Catch::Matchers::WithinAbs(20., 1e-3)); + + double time = 0., volume = 0.; + for (const nlohmann::json &layer : layers) { + time += layer["time"].get(); + volume += layer["volume"].get(); + double features_time = 0.; + for (const auto &[name, feature] : layer["features"].items()) + features_time += feature["time"].get(); + CHECK(features_time <= layer["time"].get() + 1e-3); + } + // Each value is rounded to the millisecond and the cubic millimeter. + CHECK_THAT(time, Catch::Matchers::WithinAbs(summary["time"].get(), 0.1)); + CHECK_THAT(volume, Catch::Matchers::WithinAbs(summary["volume"].get(), 0.1)); + CHECK_THAT(summary["weight"].get(), Catch::Matchers::WithinRel(summary["volume"].get() * 1.25 / 1000., 1e-4)); + CHECK(summary.contains("filament_cost")); + + // The filament splits by use as the preview's table does. + REQUIRE(summary["filaments"].size() == 1); + const nlohmann::json &filament = summary["filaments"].front(); + double used = 0.; + for (const char *use : { "model", "support", "prime_tower", "flush" }) + used += filament[use]["volume"].get(); + CHECK_THAT(used, Catch::Matchers::WithinAbs(filament["volume"].get(), 0.01)); + + const nlohmann::json &features = summary["features"]; + CHECK(features.contains("Outer wall")); + CHECK(features.contains("Sparse infill")); + double model_volume = 0.; + for (const auto &[name, feature] : features.items()) + if (name != "Custom") + model_volume += feature["volume"].get(); + + const nlohmann::json &objects = statistics["objects"]; + REQUIRE(objects.size() == 2); + double objects_volume = 0.; + for (size_t i = 0; i < objects.size(); ++i) { + CHECK(objects[i]["name"] == model.objects.front()->name); + CHECK(objects[i]["instance"] == int(i)); + CHECK(objects[i]["support_volume"].get() == 0.); + objects_volume += objects[i]["volume"].get(); + } + CHECK_THAT(objects_volume, Catch::Matchers::WithinAbs(model_volume, 0.1)); +} + +TEST_CASE("Copies sliced as objects of their own keep their number in the model object", "[GCodeStatistics]") +{ + // A copy of another scale slices as a print object of its own. + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.set_deserialize_strict({ { "skirt_loops", 0 }, { "brim_type", "no_brim" } }); + Print print; + Model model; + Test::init_print({ Test::cube(20) }, print, model, config, nullptr, true, 2); + model.objects.front()->instances.back()->set_scaling_factor(Vec3d(0.5, 0.5, 0.5)); + model.objects.front()->ensure_on_bed(); + print.apply(model, config); + REQUIRE(print.objects().size() == 2); + GCodeProcessorResult result; + Test::gcode(print, &result); + + const nlohmann::json objects = nlohmann::json::parse(gcode_statistics_json(result))["objects"]; + std::set instances; + for (const nlohmann::json &object : objects) + instances.insert(object["instance"].get()); + CHECK(instances == std::set{ 0, 1 }); +} + +TEST_CASE("The statistics file takes the G-code's name with the statistics extension", "[GCodeStatistics]") +{ + CHECK(gcode_statistics_path("plate_1.gcode") == "plate_1.statistics.json"); + CHECK(gcode_statistics_path("out/Cube_PLA_1h.gcode") == "out/Cube_PLA_1h.statistics.json"); +} diff --git a/tests/fff_print/test_mixed_filament.cpp b/tests/fff_print/test_mixed_filament.cpp index bfa8985fd4..3322020360 100644 --- a/tests/fff_print/test_mixed_filament.cpp +++ b/tests/fff_print/test_mixed_filament.cpp @@ -11,9 +11,15 @@ #include #include +#include +#include #include "libslic3r/GCode/ToolOrdering.hpp" #include "libslic3r/MultiNozzleUtils.hpp" #include "libslic3r/Print.hpp" +#include "libslic3r/BoundingBox.hpp" +#include "libslic3r/ExPolygon.hpp" +#include "libslic3r/Layer.hpp" +#include "libslic3r/libslic3r.h" #include "test_helpers.hpp" @@ -333,3 +339,72 @@ TEST_CASE("Print::validate warns when a gradient mixed filament is used without CHECK(count_opt(print, "enable_mixed_color_sublayer") == 0); } } + +TEST_CASE("Filament shrinkage compensation compares the physical filaments of a mixed slot", "[MixedFilament][Print][Regression]") +{ + // The mixed slot 3 blends filament 1 (90 %) and filament 2 (100 %); its own 90 % does not count. + DynamicPrintConfig config = mixed_config(false); + config.set_deserialize_strict({ + { "filament_shrink", "90%,100%,90%" }, + { "xy_contour_compensation", 0. }, + { "layer_change_gcode", "G92 E0\n" }, // validate() relative-E reset + }); + + Print print; + init_and_process_print({ cube(20.) }, print, config); + + const PrintObject &object = *print.objects().front(); + const BoundingBox extents = get_extents(object.get_layer(int(object.layer_count() / 2))->lslices); + CHECK_THAT(unscale(extents.size().x()), Catch::Matchers::WithinAbs(20., 0.01)); + std::vector warnings; + CHECK(print.validate(&warnings).string.empty()); + CHECK(std::any_of(warnings.begin(), warnings.end(), [](const StringObjectException &w) { + return w.string.find("Filament shrinkage will not be used") != std::string::npos; + })); +} + +TEST_CASE("Filament shrinkage compensation counts the wipe tower filament next to a mixed slot", "[MixedFilament][Print][Regression]") +{ + // The object prints only with the mixed slot 4 of filaments 1 and 2 (both 90 %). The wipe tower filament 3 (100 %) + // may be flushed into the object, so the compensation is off. + DynamicPrintConfig config = multifilament_config(4); + config.set_deserialize_strict({ + {"filament_is_mixed", "0,0,0,1"}, + {"filament_mixed_components", ";;;1,2"}, + {"filament_mixed_sublayer_ratios", ";;;0.5,0.5"}, + {"filament_mixed_gradient", "0,0,0,0"}, + {"filament_mixed_gradient_range", ";;;"}, + {"filament_mixed_gradient_curve", ";;;"}, + {"filament_mixed_gradient_per_part","0,0,0,0"}, + {"outer_wall_filament_id", "4"}, + {"inner_wall_filament_id", "4"}, + {"sparse_infill_filament_id", "4"}, + {"internal_solid_filament_id", "4"}, + {"top_surface_filament_id", "4"}, + {"bottom_surface_filament_id", "4"}, + {"enable_prime_tower", "1"}, + {"wipe_tower_filament", "3"}, + {"prime_tower_width", "35"}, + {"wipe_tower_x", "50"}, // inside the 200x200 test bed + {"wipe_tower_y", "50"}, + {"filament_shrink", "90%,90%,100%,90%"}, + {"xy_contour_compensation", "0"}, + {"layer_change_gcode", "G92 E0\n"}, // validate() relative-E reset + }); + + // The object itself is on the mixed slot too, so no other filament is assigned. + const std::vector> object_overrides { { { "extruder", 4 } } }; + Print print; + Model model; + init_print({ cube(20.) }, print, model, config, &object_overrides); + print.process(); + + const PrintObject &object = *print.objects().front(); + const BoundingBox extents = get_extents(object.get_layer(int(object.layer_count() / 2))->lslices); + CHECK_THAT(unscale(extents.size().x()), Catch::Matchers::WithinAbs(20., 0.01)); + std::vector warnings; + CHECK(print.validate(&warnings).string.empty()); + CHECK(std::any_of(warnings.begin(), warnings.end(), [](const StringObjectException &w) { + return w.string.find("Filament shrinkage will not be used") != std::string::npos; + })); +} diff --git a/tests/fff_print/test_print.cpp b/tests/fff_print/test_print.cpp index 1b81eea0ea..dd78ef5f5f 100644 --- a/tests/fff_print/test_print.cpp +++ b/tests/fff_print/test_print.cpp @@ -63,6 +63,8 @@ #include "libslic3r/ObjectID.hpp" #include "libslic3r/Point.hpp" #include "libslic3r/SurfaceCollection.hpp" +#include "libslic3r/BoundingBox.hpp" +#include "libslic3r/ExPolygon.hpp" using namespace Slic3r; using namespace Slic3r::Test; @@ -1652,3 +1654,130 @@ TEST_CASE("The build height check counts the raft", "[Print][validate][Regressio else CHECK(error.find("maximum build volume height") != std::string::npos); } + +TEST_CASE("Filament shrinkage compensation scales the sliced object", "[Print][Regression]") +{ + // A 20 mm cube printed with a filament that shrinks to xy % / z % is sliced 20 * 100 / xy wide and, + // up to one layer, 20 * 100 / z tall. + const auto [xy, z] = GENERATE(table({ { 100., 100. }, { 90., 100. }, { 100., 95. } })); + const double layer_height = 0.2; + + Print print; + init_and_process_print({ cube(20.) }, print, { + { "filament_shrink", xy }, + { "filament_shrinkage_compensation_z", z }, + { "layer_height", layer_height }, + { "initial_layer_print_height", layer_height }, + { "precise_z_height", false }, + { "raft_layers", 0 }, + { "xy_contour_compensation", 0. }, + }); + + const PrintObject &object = *print.objects().front(); + const Layer &middle = *object.get_layer(int(object.layer_count() / 2)); + const BoundingBox extents = get_extents(middle.lslices); + CHECK_THAT(unscale(extents.size().x()), Catch::Matchers::WithinAbs(20. * 100. / xy, 0.01)); + CHECK_THAT(unscale(extents.size().y()), Catch::Matchers::WithinAbs(20. * 100. / xy, 0.01)); + CHECK_THAT(object.layers().back()->print_z, Catch::Matchers::WithinAbs(20. * 100. / z, layer_height)); +} + +TEST_CASE("Filament shrinkage compensation follows the filaments the object prints with", "[Print][Regression]") +{ + // Filament 1 shrinks to 90 %, filament 2 not at all. An unused filament does not matter; two used filaments + // that disagree switch the compensation off and validate() warns about it. + const auto [wall_filament, expected_width] = GENERATE(table({ { 1, 20. * 100. / 90. }, { 2, 20. } })); + + Print print; + init_and_process_print({ cube(20.) }, print, multifilament_config(2, { + { "filament_shrink", "90%,100%" }, + { "outer_wall_filament_id", wall_filament }, + { "inner_wall_filament_id", wall_filament }, + { "xy_contour_compensation", 0. }, + { "layer_change_gcode", "G92 E0\n" }, // validate() relative-E reset + })); + + const PrintObject &object = *print.objects().front(); + const BoundingBox extents = get_extents(object.get_layer(int(object.layer_count() / 2))->lslices); + CHECK_THAT(unscale(extents.size().x()), Catch::Matchers::WithinAbs(expected_width, 0.01)); + + std::vector warnings; + CHECK(print.validate(&warnings).string.empty()); + const bool mismatch_warning = std::any_of(warnings.begin(), warnings.end(), [](const StringObjectException &w) { + return w.string.find("Filament shrinkage will not be used") != std::string::npos; + }); + CHECK(mismatch_warning == (wall_filament == 2)); +} + +TEST_CASE("Applying the same model again keeps the filament shrinkage compensation", "[Print][Regression]") +{ + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.set_deserialize_strict({ { "filament_shrink", "90%" }, { "xy_contour_compensation", 0. } }); + + Print print; + Model model; + init_print({ cube(20.) }, print, model, config); + const auto width = [&print]() { + print.process(); + const PrintObject &object = *print.objects().front(); + return unscale(get_extents(object.get_layer(int(object.layer_count() / 2))->lslices).size().x()); + }; + CHECK_THAT(width(), Catch::Matchers::WithinAbs(20. * 100. / 90., 0.01)); + print.apply(model, config); + CHECK_THAT(width(), Catch::Matchers::WithinAbs(20. * 100. / 90., 0.01)); +} + +TEST_CASE("Height ranges and modifiers count for the filament shrinkage compensation", "[Print][Regression]") +{ + // The model is complete before the first apply(), so no PrintRegion tells yet which filaments print. + enum class Setup { RangeWall, ModifierInfill, ModifierInheritingObjectFilament }; + const Setup setup = GENERATE(Setup::RangeWall, Setup::ModifierInfill, Setup::ModifierInheritingObjectFilament); + // The object prints with the filament that shrinks to 90 %, the other one does not shrink. + const bool object_on_filament_2 = setup == Setup::ModifierInheritingObjectFilament; + DynamicPrintConfig config = multifilament_config(2, { + { "filament_shrink", object_on_filament_2 ? "100%,90%" : "90%,100%" }, + { "xy_contour_compensation", 0. }, + { "layer_change_gcode", "G92 E0\n" }, // validate() relative-E reset + }); + + Model model; + ModelObject *object = model.add_object(); + object->add_volume(cube(20.)); + DynamicPrintConfig override; + switch (setup) { + case Setup::RangeWall: + // The walls of a height range print with the other filament. + override.set_key_value("outer_wall_filament_id", new ConfigOptionInt(2)); + // Every layer range must carry a layer_height (see layer_height_profile_from_ranges). + override.set_key_value("layer_height", new ConfigOptionFloat(0.2)); + object->layer_config_ranges[{ 5., 10. }].assign_config(std::move(override)); + break; + case Setup::ModifierInfill: + // The infill inside a modifier prints with the other filament. + override.set_key_value("sparse_infill_filament_id", new ConfigOptionInt(2)); + object->add_volume(cube(10.), ModelVolumeType::PARAMETER_MODIFIER, false)->config.apply(override); + break; + case Setup::ModifierInheritingObjectFilament: + // The modifier only changes the infill density and keeps printing with the filament of the object. + object->config.set_key_value("extruder", new ConfigOptionInt(2)); + override.set_key_value("sparse_infill_density", new ConfigOptionPercent(30)); + object->add_volume(cube(10.), ModelVolumeType::PARAMETER_MODIFIER, false)->config.apply(override); + break; + } + object->add_instance()->set_offset(Vec3d(90., 90., 0.)); + object->ensure_on_bed(); + + Print print; + print.apply(model, config); + print.process(); + + const PrintObject &print_object = *print.objects().front(); + const BoundingBox extents = get_extents(print_object.get_layer(int(print_object.layer_count() / 2))->lslices); + const double expected_width = object_on_filament_2 ? 20. * 100. / 90. : 20.; + CHECK_THAT(unscale(extents.size().x()), Catch::Matchers::WithinAbs(expected_width, 0.01)); + std::vector warnings; + CHECK(print.validate(&warnings).string.empty()); + const bool mismatch_warning = std::any_of(warnings.begin(), warnings.end(), [](const StringObjectException &w) { + return w.string.find("Filament shrinkage will not be used") != std::string::npos; + }); + CHECK(mismatch_warning == ! object_on_filament_2); +} diff --git a/tests/fff_print/test_slicing_pipeline_hook.cpp b/tests/fff_print/test_slicing_pipeline_hook.cpp index 128f05d81e..500cace206 100644 --- a/tests/fff_print/test_slicing_pipeline_hook.cpp +++ b/tests/fff_print/test_slicing_pipeline_hook.cpp @@ -87,8 +87,8 @@ static std::string strip_nondeterministic_gcode_lines(const std::string& gcode) while (std::getline(in, line)) { if (line.compare(0, 15, "; generated by ") == 0) continue; // wall-clock timestamp if (line.compare(0, 18, "; model label id: ") == 0) continue; // ObjectID-derived - // "; [stop] printing object id:N copy M" / "... unique label id: N" (ObjectID-derived): - if (line.find("printing object") != std::string::npos && line.find(" id:") != std::string::npos) continue; + // "; start/stop printing object, unique label id: N" (ObjectID-derived): + if (line.find("printing object, unique label id: ") != std::string::npos) continue; if (line.find("slicing_pipeline_plugin") != std::string::npos) continue; // config-dump plugin name out += line; out += '\n'; } diff --git a/tests/libslic3r/test_3mf.cpp b/tests/libslic3r/test_3mf.cpp index e3cf4b92c5..f7b5049ebe 100644 --- a/tests/libslic3r/test_3mf.cpp +++ b/tests/libslic3r/test_3mf.cpp @@ -410,6 +410,44 @@ static bool load_project(const std::string& path, Model& model, const ScopedTemp return loaded; } +TEST_CASE("A plate's G-code statistics are stored next to its G-code", "[3mf]") +{ + const bool with_statistics = GENERATE(false, true); + ScopedTemporaryFile gcode(".gcode"); + save_string_file(gcode.path(), "G1 X10 Y10 E1\n"); + + Model model; + ModelObject* object = model.add_object(); + object->add_volume(make_cube(10., 10., 10.)); + object->add_instance(); + ScopedTemporaryDir backup_dir("orca_statistics_src"); + model.set_backup_path(backup_dir.string()); + + // A sliced plate's info reads the printer settings. + DynamicPrintConfig cfg = DynamicPrintConfig::full_print_config(); + PlateData plate; + plate.plate_index = 0; + plate.gcode_file = gcode.string(); + plate.is_sliced_valid = true; + if (with_statistics) + plate.statistics = R"({ "version": 1 })"; + ScopedTemporaryFile file(".3mf"); + const std::string path = file.string(); + StoreParams sp; + sp.path = path.c_str(); + sp.model = &model; + sp.config = &cfg; + sp.strategy = SaveStrategy::Zip64 | SaveStrategy::Silence | SaveStrategy::WithGcode; + sp.plate_data_list.push_back(&plate); + REQUIRE(store_bbs_3mf(sp)); + + std::string stored; + REQUIRE(read_cad_recipe_entry(path, stored, "Metadata/plate_1.gcode")); + CHECK(read_cad_recipe_entry(path, stored, "Metadata/plate_1.statistics.json") == with_statistics); + if (with_statistics) + CHECK(stored == plate.statistics); +} + TEST_CASE("A project with a plate id below 1 fails to load", "[3mf][Regression]") { const int plate_id = GENERATE(0, -1); @@ -2361,5 +2399,160 @@ TEST_CASE("has_restore_data reports no restore data for a path it cannot probe", REQUIRE_NOTHROW(has = has_restore_data(unprobeable, origin2)); CHECK_FALSE(has); CHECK(unprobeable == backup.string()); // not rewritten to the .3mf it could not confirm + CHECK(origin2 == ""); // and the caller is told not to remove it } #endif // _WIN32 + +// Every "return false" that leaves origin empty is an instruction to the caller to +// remove_all() the backup directory (Plater.cpp's EVT_RESTORE_PROJECT handler), so the +// distinction these cases draw is between a backup that is spent and one whose state could +// not be established. Only the first may be collected. +TEST_CASE("has_restore_data claims the lock when lock.txt cannot be interpreted", "[3mf]") { + ScopedTemporaryDir outer("orca_lock"); + boost::filesystem::path backup = outer.path() / "backup"; + REQUIRE(boost::filesystem::create_directory(backup)); + std::ofstream((backup / ".3mf").string()) << "stand-in for the backed-up project"; + + SECTION("an empty lock.txt holds no pid") { + std::ofstream lock((backup / "lock.txt").string()); + lock.close(); // created, left zero length + REQUIRE(boost::filesystem::file_size(backup / "lock.txt") == 0); + + std::string path = backup.string(), origin; + bool has = true; + REQUIRE_NOTHROW(has = has_restore_data(path, origin)); + CHECK_FALSE(has); + CHECK(origin == ""); + } + + SECTION("lock.txt holds something that is not a pid") { + std::ofstream((backup / "lock.txt").string()) << "not-a-pid"; + + std::string path = backup.string(), origin; + bool has = true; + REQUIRE_NOTHROW(has = has_restore_data(path, origin)); + CHECK_FALSE(has); + CHECK(origin == ""); + } +} + +#ifndef _WIN32 +TEST_CASE("has_restore_data claims the lock when lock.txt cannot be read", "[3mf]") { + if (::geteuid() == 0) + SKIP("root ignores the file permissions this test depends on"); + + ScopedTemporaryDir outer("orca_lock"); + boost::filesystem::path backup = outer.path() / "backup"; + REQUIRE(boost::filesystem::create_directory(backup)); + std::ofstream((backup / ".3mf").string()) << "stand-in for the backed-up project"; + std::ofstream((backup / "lock.txt").string()) << "1"; + boost::system::error_code mode_ec; // a filesystem that refuses the mode change must skip below + boost::filesystem::permissions(backup / "lock.txt", boost::filesystem::no_perms, mode_ec); + + boost::nowide::ifstream probe((backup / "lock.txt").string()); + if (probe.good()) + SKIP("this filesystem does not enforce file read permissions"); + + // load_string_file() throws here. + std::string path = backup.string(), origin; + bool has = true; + REQUIRE_NOTHROW(has = has_restore_data(path, origin)); + CHECK_FALSE(has); + CHECK(origin == ""); +} +#endif // _WIN32 + +// The negative control for the three cases above: claiming the lock whenever anything is +// amiss would strand every spent backup on disk forever, so a readable directory that +// simply has nothing to restore must still come back collectable. +TEST_CASE("has_restore_data leaves a spent backup collectable", "[3mf]") { + ScopedTemporaryDir outer("orca_spent"); + boost::filesystem::path backup = outer.path() / "backup"; + REQUIRE(boost::filesystem::create_directory(backup)); + + SECTION("no lock and no project") { + std::string path = backup.string(), origin; + CHECK_FALSE(has_restore_data(path, origin)); + CHECK(origin.empty()); + } + + SECTION("a lock from a process that is not us, and no project") { + // get_process_name() compares executable names and answers empty for a pid it cannot + // read, so pid 1 never matches this process and the lock must not be claimed. + std::ofstream((backup / "lock.txt").string()) << "1"; + + std::string path = backup.string(), origin; + CHECK_FALSE(has_restore_data(path, origin)); + CHECK(origin.empty()); + } + + SECTION("the directory does not exist at all") { + std::string path = (outer.path() / "gone").string(), origin; + CHECK_FALSE(has_restore_data(path, origin)); + CHECK(origin.empty()); + } +} + +// The no-light pass must not mark the plate thumbnail as written. +SCENARIO("a rendered no-light thumbnail does not suppress the plate thumbnail", "[3mf]") +{ + GIVEN("a plate whose no-light thumbnail is rendered and whose plate thumbnail is only on disk") { + Model model; + const std::string src_file = std::string(TEST_DATA_DIR) + "/test_3mf/Prusa.stl"; + REQUIRE(load_stl(src_file.c_str(), &model)); + model.add_default_instances(); + + ScopedTemporaryDir backup_dir("orca_no_light"); + model.set_backup_path(backup_dir.string()); + + // Only the bytes matter: the exporter copies this file into the archive verbatim. + ScopedTemporaryFile png(".png"); + const std::string png_path = png.string(); + const std::string png_body = "\x89PNG\r\n\x1a\n" "plate-1-thumbnail-from-disk"; + { + boost::nowide::ofstream out(png_path.c_str(), std::ios::binary); + out << png_body; + } + REQUIRE(boost::filesystem::exists(png_path)); + + PlateData plate; + plate.plate_index = 0; + plate.thumbnail_file = png_path; + PlateDataPtrs plates{ &plate }; + + ThumbnailData plate_thumbnail; // nothing was rendered for the plate itself + ThumbnailData no_light_thumbnail; + no_light_thumbnail.set(16, 16); + no_light_thumbnail.pixels.assign(16 * 16 * 4, static_cast(0xff)); + REQUIRE_FALSE(plate_thumbnail.is_valid()); + REQUIRE(no_light_thumbnail.is_valid()); + + WHEN("the project is written") { + ScopedTemporaryFile temp(".3mf"); + const std::string test_file = temp.string(); + + DynamicPrintConfig cfg; + StoreParams sp; + sp.path = test_file.c_str(); + sp.model = &model; + sp.config = &cfg; + sp.plate_data_list = plates; + sp.thumbnail_data = { &plate_thumbnail }; + sp.no_light_thumbnail_data = { &no_light_thumbnail }; + sp.strategy = SaveStrategy::Zip64 | SaveStrategy::Silence; + REQUIRE(store_bbs_3mf(sp)); + + THEN("the plate thumbnail is still copied in from disk") { + std::string got; + REQUIRE(read_cad_recipe_entry(test_file, got, "Metadata/plate_1.png")); + REQUIRE(got == png_body); + } + + THEN("the rendered no-light thumbnail is written as well") { + std::string got; + REQUIRE(read_cad_recipe_entry(test_file, got, "Metadata/plate_no_light_1.png")); + REQUIRE_FALSE(got.empty()); + } + } + } +}